amd x86 服务器(英特尔与AMD的x86服务器战争编年史)
不久前,英特尔正式发布了其第三代至强可扩展处理器(Xeon-SP)平台Ice Lake-SP(ICX)处理器,同时对外宣布,自从2017年推出第一款Xeon-SP 以来,英特尔向全球客户交货了超过5000万颗Xeon-SP处理器。从2013年开始,云端服务业者总计部署超过10 亿个Xeon 核心,超过800 家云端服务供应商导入了Xeon 处理器。
诞生于1998 年6 月29 日的Xeon,是英特尔第一个货真价实的服务器产品品牌,历经超过20年的光阴,更早已成为x86 指令集相容处理器,站稳服务器市场的龙头地位。
不过,作为英特尔的老对手,AMD在2003年到2017年间,也有针对服务器市场的产品Opteron,更曾在2003~2007 年这段期间,在服务器市场斩获颇丰,象征AMD在服务器市场最辉煌的黄金岁月。
如同在GPU 战场,对英特尔和AMD最重要的议题,在于能否重返高效能运算和人工智能应用,并摆脱软件生态系统远不如nVidia CUDA的困境。
在CPU领域,英特尔和AMD真正的决战焦点,绝非PC市场,而是可带来更高获利的服务器及数据中心市场,而英特尔这市场曾经拥有超过90%的占有率。
但很不幸的,英特尔却在今年第一季财报,上演英特尔财报出现“服务器毛利率低于个人电脑”的奇观(这应该是1998年Xeon品牌诞生以来首次)。对比之下,AMD则靠在服务器市场出色的战果,交出了年营收同比增长93%的漂亮财报。背后代表的意义,不言可喻。
接下来,我们就从服务器市场,重新审视英特尔和AMD那将近30年的服务器市场开拓史,并留给各位认真思考“”x86双雄的未来”。
经过超过25年的努力,英特尔和AMD携手建立x86指令集兼容的处理器,在今日数据中心与服务器器的主宰地位。昔日难登大雅之堂、只能屈居个人电脑的“吴下阿蒙”,突破众多“RISC诸神”(MIPS、SPARC、PA-RISC、Power、Alpha)建立的马奇诺防线,并让“RISC诸神的黄昏”成为众多“计算机组机结构正统教义派”和“RISC十字军”不愿面对的现实。
踏入时间轴之前,笔者先分别以“技术”、“商业”和“政治”的角度,剖析为何x86 走到这一步,然后未来又将面对哪些挑战。
第一个大议题:从“技术”的角度来看,x86 是怎么一步一步取得服务器市场的主导地位的?x86 处理器在伺服器市场最重要的一天?
1995 年11 月1 日,英特尔发表P6 微架构的Pentium Pro,这是英特尔公司史上最重要的芯片,没有之一。
1990 年开始萌芽的当代高效能处理器微架构,有所谓的“4S指标”:超纯量(Superscalar)、超管线(SuperpIPeline)、多处理器延展性(Scalability)、系统管理能力(System Management) 。
Pentium Pro 是当时x86 处理器唯一兼顾4S 者,同期Cyrix 与AMD 均难以望其项背,且Pentium Pro 的整数运算效能,足以跟同期高阶RISC处理器分庭抗礼。至于浮点运算全面超车RISC阵营,是SSE2指令集诞生后的事了。
Pentium Pro 到底厉害在哪?
结合高效率的系统总线、改良后的内建式可程式化中断控制器(APIC)、丝毫不会浪费系统总线频宽的独立二级高速缓存,与处理器核心具备非顺序的存取能力,Pentium Pro 替x86 敲开服务器天堂的大门,让英特尔过了快7 年的好日子,直到被宿敌AMD 用名为K8 的大榔头(Hammer)狠狠敲醒为止。
哪一天x86 处理器奠定在服务器市场的坚实地位?
1998 年6 月29 日英特尔推出的Xeon 品牌,从此成为x86 服务器的象征,以及英特尔最重要的现金母牛(Cash Cow)。
依据英特尔的既定战略,服务器的大旗应由Itanium 一肩扛起,那为何失败?
因为英特尔一连串策略失误,加上缺乏对高端服务器市场的正确预判,让“64 位元真命天子”IA-64 指令集和Itanium 处理器,不得不消失在历史的洪流,也结束了英特尔企图消灭80x86 的野心。现在看来这伟大的“历史使命”,似乎落在ARM 阵营的肩上?
AMD 又是如何踏入服务器市场?
2002 年4 月24 日,AMD针对服务器市场发布了Opteron 品牌,刚刚好,微软也在同一天宣布即将推出x86-64 版Windows 操作系统。
骨灰级电脑玩家一定记得2001 年6 月5 日的Athlon MP,但源自Alpha 的EV6 系统总线,大幅提高做多处理器平台的门槛,基本上可谓无疾而终,很快就被Opteron 取代。
AMD的Opteron有何过人之处?
AMD K8 微架构从内到外的每个环节,几乎比照高阶RISC处理器设计,如果把K7 看成“x86世界的Alpha 21264”,那K8就是“穷人版的Alpha 21364”。
AMD K8 微架构的Hyper-Transport 系统总线、处理器整合内存控制器、更先进的MOSEI 快取资料一致性协定、强大的RAS(可靠性、可用性、可服务性)、与诸多节能特色等优势,为x86服务器带来前所未有的多处理器及多核心延展能力,毋须价高量少的特殊服务器芯片组,任何一家服务器厂商都可轻松打造“”四颗甚至八颗处理器的x86服务器”。
AMD K8 带领x86 进入64 位元的世界,彻底摧毁了中低阶RISC / Unix 服务器仅存的脆弱保护伞。K8成功大幅提升了AMD的市场影响力,让AMD在高效能x86 处理器技术领域,拥有足以和英特尔平起平坐的地位。Xeon 与Opteron 两大品牌双日争辉、兄弟登山各自努力,扩大x86 在服务器市场的版图。
那为何“RISC诸神”很快又一蹶不振,只剩下IBM Power 硕果仅存?
因为它叫“IBM”。
第二个大议题:就商业和政治角度,“x86 Everywhere”是怎么产生的?天底下任何产品演进和市场发展,都是“技术”、“商业”与“政治”彼此交错影响的结果。x86 指令集相容处理器能够“淘汰”RISC 诸神,相较冷冰冰的技术,商业和政治因素更举足轻重。
1990 年代末期,x86 处理器逐步支配服务器市场的关键性因素:
- Windows NT。
- Linux(笔者私心想加上FreeBSD)。
- 出货量持续激增的个人电脑市场。
个人电脑市场跟服务器又有什么关系?
1998年全球出货量突破“1亿”大关的个人电脑市场,成为英特尔和AMD长期维系半导体业界最先进制程与最庞大研发团队的基本盘,不仅对“RISC诸神”拥有压倒性成本优势,利用更多的晶体管数量,充分弥补 x86指令集的众多先天缺陷(Pentium比PowerPC 601多30%晶体管,只为了维持x86指令集相容性),更分摊天文数字般的产品研发开销。
RISC 指令集应该更容易打造能效更高的处理器,但到头来在服务器市场并不是这么回事?
这跟x86处理器在1990年代末期延伸到笔记本电脑,有根深蒂固的关联,尤其当英特尔为了Centrino量身订做Pentium M处理器,奠定“追求高能耗比”的长期发展方向后,服务器产品线也雨露均沾。2006年Merom微架构一统服务器、桌面PC和笔记本,更让Xeon产品线“强迫中奖”,让IBM Power和Oracle / Sun的SPARC相较之下,根本毫无优势。
这些年来,假如各位也有关心那票前仆后继、有一阵没一阵的“ARM服务器”,也势必会注意到,那些规格看起来很暴力的ARM处理器,怎么好像也没省电到那去?其实当处理器微架构的复杂度抵达“某条看不见的临界点”,“相对复杂又毫无道理可寻的”x86指令集带来的额外“赋税”也就不会那么明显了。
IBM 不是一直想推动Power Everywhere,为何难以成功?
因为IBM 自己也在做服务器,会有“既当裁判又当球员”的疑虑,这就是非常显而易见的政治因素。
谁能动摇x86 处理器在近代数据中心的主导地位?
唯有这票大型云端服务业者通通采用自研的自家专用的“非x86”(不见得是ARM,如Google 的TPU)处理器,否则将难以动摇x86 的地位。况且先进制程晶圆代工厂的产能,也是处于供不应求的紧绷状态,贸然放弃拥有大量自有产能的英特尔处理器,风险不能说不小。看看AMD 的缺货窘境就知道了,产品再好,出不了货也只是白费力气。
至于一般商用服务器市场,也是要等到ARM 在企业服务器应用的生态系统,成熟到连一般的MIS 都愿意采用,这之前讲再多都多余。
无论英特尔还是AMD,近代主流x86微架构都是“服务器、桌面PC、笔记本电脑”共用,那眼前的Xeon-SP 和EPYC,难道真是“100%服务器最佳化”设计吗?
这就是x86 指令集的原罪:超级长的产品开发及验证周期,强迫拥有巨大研发能量的英特尔和AMD,也只能将资源聚焦在极为少数的专案,也难以迅速应对新兴的应用需求,这就是ARM 等IP 授权商、EDA 工具软体和专业晶圆代工,会主导消费性产品芯片的主因。
这才是ARM 阵营在服务器领域的最佳切入点,但偏偏也只有“实际的使用者”才知道需要的产品规格究竟是什么,而他们却都有自己开发芯片的本钱。
最后,ARM 能在服务器市场引发迅速的“典范转移”吗?
坦白讲,怎么想都非常的困难,除非革命性的应用,像软件定义网路、网络功能虚拟化和25G+以太网络,让从1G迈向10G花了整整十年以太网络,只花不到3年就跑出一众Smart NIC,让整体数据中心应用架构出现颠覆性演化,要不然都是难如登天。也许大家可以多多关切 Nvidia企图发动的革命,以及云端巨头又有哪些风吹草动。
更何况英特尔和AMD 又不会躺着等死,一切都还还有得瞧。当然,AMD 自己带头做ARM 版EPYC 的话,那又是另一条截然不同的世界线了。
现在就让我们想像搭上时光机,回到世人对x86 的刻板印象,难以与“服务器”划上等号的古老年代。
1995~1998 年:英特尔发动的酝酿期个人电脑普及化,带来更惨烈的价格竞争,1990 年代后期的英特尔和AMD 为了维持获利,投入服务器市场,实乃不得不为之 。在1994 年第一季,主频100MHz 的Pentium 可卖到“995 美元”(今天都足以组出一台顶配的台式机),只过个半年就要打7折了。
个人电脑出货量抵达1亿台历史新高的1998年,“600美元个人电脑”蔚为风潮,引爆低阶处理器的价格战争,导致英特尔的Celeron和 AMD的K6-2 大打出手,还“顺便”打垮一票x86处理器小厂(Cyrix、Centaur、Rise),入门级CPU的平均售价(ASP),更是下探到100美元。
Xeon 并非英特尔首次进军伺服器市场,第二代Pentium(P54C)内建支援双处理器组态的先进可程式化中断控制器(APIC),和Pentium Pro(P6)带来革命性处理器微架构与崭新系统平台,都是以功败垂成黯然收场的尝试。
好吧,200MHz Pentium Pro“胆敢”开价1,989 美元,也算很了不起的丰功伟业了。
反观那票从1980 年代末期开始,已经盘据伺服器市场已久的“RISC 诸神”,早就享受丰厚利润,以Sun 的UltraSPARC 为例,1998 年第二季,也是个人电脑市场的削价战杀声震天之际,360MHz 的UltraSPARC II模组,要价高达3,961 美元。
我们也知道,今天即使同样晶粒,封装印着不同品牌,价格就天差地远。AMD 还曾为了解释单处理器的Opteron 100 系列和桌面PC的Athlon 64 究竟有何不同,特别制作说明用简报,大意就是Opteron 用的晶粒品质比较好、验证项目比较多、微码(Microcode)修补bug 重点不同之类的。
这也是为何这些年来,连发迹于消费性电子产品的RISC指令集,像目前最普及的ARM,阵营也积极开拓服务器市场。x86处理器世界快没存在感的VIA也沉潜多年,推出目标5G边缘伺服器(MEC)的 CHA系统单晶片。充满神秘俄系血统的俄罗斯Elbrus,更在多处理器服务器领域耕耘已久,只为了让CPU不受制于“邪恶的美国帝国主义者”。
对技术有深度认知的读者,或多或少也了解,服务器用的CPU 不仅需要更好效能、出色的多处理器扩充性与效能延展性、更完备的高可靠性、滴水不漏的可用性,并搭配强大的系统晶片组和更高容量的系统内存。
但商业因素却远比技术门槛更严峻:英特尔和AMD 要如何说服企业客户,一家长期研制100 美元桌面型PC芯片等便宜货的厂商,有能力卖3,500 美元等级的服务器芯片,所以就像另外成立「豪华车专属品牌」的汽车厂商,英特尔必须创造Xeon 以区隔市场。英特尔的老对手AMD,于相容Alpha EV6 总线的Athlon MP 企图抢滩服务器市场失败之后,2002 年4 月24 日也借Opteron 之名,踏上一条殊途同归的荆棘之路。
1998~2001 年:Xeon 诞生的开创期英特尔首要之务莫过于推出“一看就知道是服务器专用”的产品,巨大Slot-2“弹夹”就为此而生。
但英特尔并非只为了让Xeon看起来比较专业,才搞出这样的巨大塑胶盒,更为了应对更高容量的同核心频率的高速二级缓存,原先242只针脚的Slot-1无法满足供电需求,Slot-2扩展为330只,趁机塞入系统管理总线(SMBus),并将原生的多处理器支援性,恢复到Pentium Pro的4颗(Pentium II仅2颗)。此外,为确保四处理器时,系统总线可跑到100MHz,在英特尔拥有专利的GTL 之外,进一步引进AGTL 信号,在Pentium III世代再提升到133MHz。
“扩大内存容量”和“高速缓存的定址范围”也是另一场重头戏。为了突破32位元的4GB限制,除了Pentium Pro问世的PAE-36模式,Pentium II世代Xeon 追加“效能较低,但比较不需要修改软件系统”的PSE-36。Pentium II世代Xeon的L2缓存可涵盖到整个64GB可定址内存范围,不像早期的Pentium II有512MB或4GB限制。提高数据可靠度的ECC纠错,更是必备的制式武装。
如同低价电脑Celeron,Pentiun III时代后期的Xeon,随着制程技术的进步,逐步将外高速缓存塞回CPU本体。2001年3月21日登场的Xeon 900A,内建多达2MB的L2高速缓存,开启英特尔高容量高速缓存之先例。也难怪日后英特尔常被取笑:这家公司最大的业务不是CPU,而是制造高速缓存。
2001~2004年:Xeon的扩张期与AMD Opteron即将带来的风暴
英特尔2001年之后的Xeon产品线命名,完全拿掉Pentium字样,借此彻底摆脱个人电脑形象,也在这段32位元NetBurst微架构期间,确立了Xeon DP(双处理器)和Xeon MP(四处理器)分立的局面,也结束了Pentium II / Pentium III时期,桌面处理器可以同时插两颗的美好年代。要支援多处理器,请乖乖掏钱购买更贵的Xeon。
因服务器产品追求更高的可靠性和稳定性,导致验证时期较长,Xeon MP通常推出时程较晚,且主频也较低,也有更大容量的高速缓存。相较之下,Xeon DP比较像桌面处理器换成另一种封装产物。从NetBurst开始出现的xAPIC,将APIC的3位元专属总线,直接融入系统总线的通讯协定,避免APIC运作时影响记忆体存取效能,并将处理器核心上限激增到255个。
如同初代180nm制程Pentium 4被批评空有高主频,但部分效能不如前代Pentium III甚至AMD Athlon MP,初期的Xeon DP也被指责整体效能不及拥有2MB L2高速缓存的末代Pentium III Xeon,这问题到了130nm制程世代,主频大幅提升后,才渐渐消失。
此外,一般资深电脑玩家对英特尔的HyperThreading的初次登场,印象多半是2002年11月之后的130nm制程Pentium 4,但其实早在当年2月的130nm制程Xeon DP就问世了。对于多人多工作业的服务器来说,可改善整体输出率的同时多执行绪(SMT)技术,确实是天作之合。
更重要的是,英特尔以实际行动证实180nm制程的NetBurst核心,已经内建HyperThreading的谣传,2003年3月的Xeon MP就支持这“一颗当两颗用”的神秘功能。至今英特尔尚未透露为何初代Pentium 4要这样留一手,主因可能是个人电脑操作系统的多处理器支持性。
面对来势汹汹的AMD K8,英特尔在2003年9月,抢在Athlon 64和Athlon 64 FX前一周,发布将Xeon专用核心“下放”到桌面PC的Pentium 4 Extreme Edition,但仍然难以挽回颓势,也让2004年2月的90nm制程Pentium 4 Prescott产品定位,显得更尴尬。
Xeon MP一次连接四颗CPU的SMP系统总线,以及共用的内存控制器,成为明显的效能瓶颈,也突显AMD K8内建内存控制器与HyperTransport总线的绝大优势。在2003年4月22日,AMD Opteron的降临,让英特尔做了好几年恶梦,也让英特尔的处理器产品Roadmap,陷入了前所未见的极大混乱。
2003年:开启AMD全盛期的Opteron
英特尔跟HP合作的IA-64指令集与Itanium处理器,策略失当与出师不利,送给了AMD伺机杀入服务器市场的大好机会。相较于英特尔,AMD Opteron不仅享有压倒性的技术优势,其产品编号也极度的清晰易懂,可以想见“有备而来”的程度。
- 1开头:单处理器
- 2开头:双处理器
- 8开头:多处理器(四颗或八颗)
- 迈进DDR2内存后,编码变成x200,以此类推,2即代表“第二世代”。
加上当时正是x86服务器也需要直接定址超过4GB主内存的心理关键时刻,让AMD发布于1999年的x86-64指令集,因具备x86回溯相容性兼具倍增的缓存,变成很具吸引力的64位元方案。
2002年4月24日,AMD公布Opteron品牌,同一天微软也“很巧合”宣布将发行x86-64版Windows,让英特尔钦定的“64位元真命天子”Itanium处理器的未来,蒙上不祥的阴霾。
同时AMD其他K8产品线品牌的发表日期,这也代表着64位元x86指令集,逐步推广到其他应用领域的里程碑。
- Athlon 64(桌面PC):2002年11月19日。
- Sempron(低价产品):2004年6月7日。BBS连线硬体版戏称为“散步龙”,和英特尔的“洗地龙”(Celeron)相互辉映,唯一的共同点就是“散步”和“洗地”都象征“跑不快”。
- Turion 64(笔记本电脑):2005年1月10日,笔者还依稀记得HP还是带头冲第一的笔记本电脑厂商。
AMD当时之所以能在短短两年就席卷伺服器市场,从英特尔手上硬抢下超过30%市场占有率,除了64位元,还有很多重要因素。
服务器等级的侦错容错机制:从ECC单位元纠错的L1缓存与L2缓存、预防内存多位元错误的Chipkill技术、Parity位元侦错的L1指令快取、巨大的转译后备缓冲区(TLB)、到回报系统错误的MCA(Machine Check Architecture)机能,都充分展现了AMD抢攻服务器市场的决心。
HyperTransport总线:Opteron直接提供点对点连接处理器的方式,不像英特尔的传统北桥架构,每个处理器都要共用有限的FSB频宽外,打造大型系统也需要昂贵复杂的芯片组、如桥接芯片,这让实作Opteron多处理器环境远比Xeon轻松。
也因此,大型Opteron多处理器平台享有比Xeon MP更短的研发时间,不仅成本比较低廉,效能和可靠度上更是毫无妥协,一度让AMD在四处理器以上x86服务器,曾有40%以上市占率。英特尔是到2008年的Nehalem有了QPI,才追上AMD。
高效率的高速缓存一致性协定(Cache Coherence Protocol):这对多处理器环境效能有着举足轻重的影响,而AMD的MOESI协定有极为出色的表现。
和处理器核心同频率的整合型内存控制器:多处理器环境变成CC-NUMA(Cache Coherence-Non Unified Memory Architecture)分散式内存架构,让Opteron整体内存效能,远胜过英特尔的系统前端总线(FSB)连接北桥(North Bridge)的架构。
整合式内存控制器让处理器数量越多,可扩增的内存容量也会更大。2005年,企业需要128GB主内存容量的服务器,采用Itanium的HP SuperDome要价4千万台币,但八颗Opteron的系统,如Sun X4600和Iwill H8501,每颗安装16GB内存,价格却仅十分之一,巨大优势不言可喻。
直冲原生双核心:当北桥内存控制器都位于在处理器晶粒之中,自然也不必担忧双核心至多核心的内部频宽与延迟问题。AMD打从2001年,就宣布让K8直奔原生双核心(请注意下图的CPU 0和CPU 1),更在2004年8月31日(2004年秋季IDF)就公开双核心样品,2005年4月准时登场,这是AMD x86处理器发展史上最重大的战略胜利。
K7演进而来的成熟微架构:K8是以K7为基础进行改良的产物,相较于同时期的英特尔NetBurst体系,也享有压倒性的低功耗。AMD在2002年2月26日(2002年春季IDF)首次展示单核心K8,隔年4月正式上市,屡次用较低的运行频率「屠杀」英特尔NetBurst体系的产品线。
强大动态分支预测和记忆体转译后备缓冲区:足以应付“分支密集且狂吃内存频宽”的服务器端应用软体的行为模式。
值得一提的是,因为K8的L1 / L2缓存“互斥”(Exclusive),AMD还利用“L1指令缓存的数据,被挤回L2时,L2的ECC形同浪费”(L1指令缓存只有Parity)特色,将分支选择器“偷放”在这个栏位,以增强分支预测器的容量,并兼顾效能与成本,堪称非常厉害的巧思,毕竟L1缓存被侦测到数据受损,顶多从内存重新撷取一次就好了。
2003年底上市的Opteron 848,售价高达3,199美元,这对过去只能在个人电脑市场跟英特尔打价格战的AMD来说,简直是连想都不敢想的梦。
2004年6月14日,AMD发新闻稿,昭告天下“我们已经设计完毕原生双核产品”,并大方摊开产品Roadmap给大家看。
2004年7月17日:Cray宣布将建造由10880颗Opteron构建出来的Red Storm超级电脑。
2004年8月23日:AMD与Newisys在IEEE HotChips 16发表Horus芯片组,这是AMD史上首款32处理器的大型系统架构(即使后来胎死腹中)。
2005年4月21日,AMD发布双核心的Opteron 800系列,领先英特尔的Core 2家族整整超过一年,堪称AMD公司当时最意气风发的时刻。
只不过,再多好运也有用完的一天。当时无人预料到,AMD不仅将面对英特尔即将发动的帝国大反击(还是由Pat Gelsinger领军),更将在迈向原生四核心处理器之路,重重跌了一跤,还再不能爬起来。
2004~2006年:陷入空前混乱的英特尔AMD在服务器市场趁势崛起的期间,英特尔的64位元布局,被AMD搞得阵脚大乱,陷入内外交逼困境,结果就是一连串赶鸭子上架的64位元x86指令集、东拼西凑的效能改进方案、以及换汤不换药的“双馅水饺”双核心。
这时期的Xeon,除了具备大型化L3缓存的Xeon MP,和看起来有点像勉强赶工出来的双核Xeon DP,清一色都是桌面PC体系的衍生品,只差在芯片封装是包一颗还是包两颗,然后顺便“解放”被封印的64位元。
此外,值得一提的是,后来在这NetBurst混乱期的末期,英特尔确立了Xeon MP 7000和Xeon DP 5000命名体系。你现在看到Xeon的四码数字型号,就是以这时候为起点。
但AMD在服务器市场带来的空前威胁,逼出英特尔全部潜力,也让Xeon逐渐具备了更强大的多处理器竞争力。以Xeon MP平台Truland为例,E8500系列晶片组不仅藉由两条系统前端总线稍微弥补跟AMD Opteron的频宽差距,更“外挂”内存缓冲控制器(XMB,External Memory Buffer),实现更高的内存容量与频宽。
芯片组的管脚数量有限,就算不惜血本,在北桥芯片组内“硬干”八通道内存,届时单一内存通道能够“推的动”几条模组,也将会是个大难题。不如分而治之,把部份内存控制器的机能分割出来,反正高单价的多处理器服务器,也足以吸收这些额外的成本。有点年纪的读者也应当知晓,这早已是众多高阶服务器(像IBM的Power和Z系列大型主机)行之有年的特色。
日后一系列的Xeon MP也依循同样方式,像八核的Nehalem-EX、十核的Westmere-EX、十五核的Ivy Bridge-EX、十八核的Haswell-EX和二十四核的Broadwell- EX,直到英特尔从14nm制程“牙膏期”的Xeon-SP之后,将内存控制器机能全数收回到CPU内部。
为了提升服务器的网络存取效能,微软2006年3月发布Scalable Networking Pack(SNP)与NDIS 5.2 Miniport驱动程式架构,技术核心的NetDMA规范,企图打通一条从网卡直奔应用程内存的「烟囱」,而英特尔的Xeon DP Bensley平台就成为首款对应I/OAT的产品。英特尔的I/OAT也陆续演进了好几个世代,唯一不变的就是“从CPU到芯片组到网卡,都要用英特尔的东西”。
总之,以2005年为起点,以Xeon MP和Opteron x800系列为主的x86处理器,在四处理器以上高阶服务器芯片的出货量急速攀升,蚕食鲸吞传统高阶RISC服务器的地盘,到了2014年,英特尔的Xeon足足吃下94%市场,即使产品单价较低,也吞食超过80%营收,RISC伺服器的出货量更从一年32,000台掉到9,000台。
顺便一提,在这块市场,2014年IBM是12%~15%,并购Sun的Oracle更只剩下5%。既然连四处理器都如此,单处理器和双处理器平台就更连想都不用想了。这些年来,昔日曾呼风唤雨的众多“RISC诸神”,沦落至此,令人不胜唏嘘。
2006~2008年:英特尔开始转型并准备反攻AMD
英特尔原先预定的「三轨共构」(服务器Itanium、桌面NetBurst、笔记本电脑Pentium M)产品发展计划,2005年完全推翻,确立回归x86为中心,集中资源发展同时满足笔记本电脑、桌面PC和服务器的x86处理器微架构,为对AMD发动帝国大反击的开路先锋。英特尔的钟摆巨轮(Tick-Tock)开始缓缓转动,彻底辗碎AMD的服务器战线。
英特尔看到Google这些云端服务业者,为了降低成本,数据中心大量采用单处理器平台(Google第一代自制服务器使用单颗Pentium III),英特尔也将Xeon产品线延伸到单处理器、和桌面PC处理器相同脚位、相同产品代号的3000系列,落后AMD Opteron 100系列好几年。挂上Xeon品牌的价格当然比较昂贵,至于产品有没有比较可靠,就只有这些客户才会知道了。
根据不同脚位,Xeon产品线分成3块:
- 单处理器Xeon UP:LGA775的3000
- 双处理器Xeon DP:LGA771的5000
- 四处理器Xeon MP:Socket 604的7000,这个看似老旧的脚位,生命周期长到让人讶异。
相对应的系统芯片组,也采取同样的命名方式,让客户更容易理解哪些CPU应该搭配哪些芯片组。在数字编号之外,以65nm制程的四核心为起点,型号另外加注E(高能耗)、L(低功耗)和X(高效能),突显产品属性。
这时的Xeon,排除英特尔在印度班加罗尔的研发团队所负责操刀的原生六核Dunnington,其余的四核心,也都还是包两颗芯片的“双馅水饺”,整合式内存控制器和分散式主内存仍付之阙如,相较AMD在2007年底就发表原生四核K8(K10),英特尔Xeon仍看似落后AMD一大截。
眼尖的读者势必察觉到某颗Xeon DP很不一样,特别标示超低电压(ULV)的特色。Xeon LV的存在理由不外乎当时流行的“刀锋”服务器,带动超低功耗服务器CPU的需求,虽然以事后诸葛亮的角度回顾这段历史,刀锋服务器的风潮真的差不多是“昙花一现”。
其实这颗双核心的Xeon LV,源自于Core微架构(Merom)的前身Yonah,也同样出自于以色列海法研发团队之手,可视为从NetBurst转型到Core的“过渡时期实验性产品”。除了没有64位元,众多Merom的特点,像双核心共用大型化L2快取记忆体,Yonah都看得到。英特尔研发资源之充沛,由此可见一斑。
当CPU核心倍增,更需要大幅度提升内存容量与频宽,也因此,英特尔在Xeon DP与Xeon MP的系统芯片组,导入FB-DIMM(Fully-Buffered DIMM),透过近似PCI Express的序列式(Serial)总线与通讯协定,连接内存控制器与内存模组上的AMB(Advanced Memory Buffer)。
如果读者还记得前面提到的英特尔E8500芯片组的IMI与XMB,就可以把FB-DIMM想像成“把IMI / XMB概念,转移到内存模组的JEDEC标准”。不过,FB-DIMM存活在市场上的时间并不长,主因在于高昂的成本与过长的内存存取延迟,导致普及度不高,搞到连AMD都不想用,也仅有Sun UltraSPARC T2共襄盛举,最终默默的消失在所有厂商的产品Roadmap。
那时入门级服务器导向的5100芯片组(San Clemente)因维持「传统」的DDR2记忆体,加上性能表现也没比那票FB-DIMM的产品来得差,被视为「一股清流」 。比较高阶的芯片组,如5000X(Greencreek)、5400(Seaburg)和7300(Clarksboro),均内建高速缓存一致性协定窥探过滤器(Snoop Filter),一个记录内存区块位址共享状态的高速缓存,减少窥探广播的次数,以减轻系统总线的负担。
Core 2时代的英特尔Xeon并未一举击倒在系统平台架构仍享有技术优势的AMD Opteron,到了Nehalem / Westmere才开花结果,让AMD从此一蹶不振到2017年。
2008~2011年:英特尔倾尽全力打垮AMD
上面这张图片是原生八核、24MB L3缓存、晶粒面积高达648平方厘米的Nehalem-EX(Beckton),这颗“巨兽”也是英特尔彻底终结AMD优势(以及摧毁自家的Itanium)的终极象征。虽然源自于笔记本电脑需求的Core微架构,已经明显优于AMD K8与K10,但系统架构层面仍落后于AMD。英特尔在Nehalem世代一次“补好补满”,彻底瓦解AMD的服务器产品战线。
虽然说自从Merom之后,英特尔所有x86处理器微架构,都须兼顾服务器、桌面PC和笔记本电脑,但Nehalem最重要的任务,只有“尽快将AMD逐出服务器市场”,所以一切以服务器和高效能桌面PC为最高优先权,到了32nm制程的Westmere才抢滩笔记本电脑市场。
这段期间,除了单处理器3000、双处理器5000和四处理器7000,Xeon产品命名规则,新增以下项目:
- 双处理器的核心代号多了EP(Efficient Performance),多处理器则是EX(Expandable)。
- 6000系列:将最高阶7000系列的处理器,“下放”成双处理器版本。
- 因QPI大幅提升多处理器延展性,7000 / 8000系列可直接对应8处理器平台,不再是AMD Opteron x800系列的特权。
- 英特尔主流桌面PC处理器脚座的Socket H系列,以H1(LGA1156)为起点,直到今天的H5(LGA1200)。
- Jasper Forest是内建PCI Express NTB(Non-Transperent Bridge)技术的特规版Nehalem,直白一点,就是方便厂商研制双控制器(Dual Controller)相互备援的高可靠度硬件平台,如双控制器的企业级储存设备等。
相较于Merom,Nehalem最重大的突破,由内到外,可简述为以下几点:
- HyperThreading复活,CPU再度一颗当两颗用。
- 所有核心独享L2缓存,共用内建的L3缓存。
- CPU整合内存控制器,MCH就此消失。
- 引进源自于Alpha EV7的QPI总线,并一并翻修高速缓存一致性协定(Cache Coherence Protocol)成MESIF。
- Nehalem的x2APIC处理器核心数目上限是4294967295,可视为无限大。
八核心的Nehalem-EX,也导入处理器内的环状(Ring)总线,奠定未来数年英特尔多核心x86处理器的技术基础,到了Xeon-Phi和Xeon-SP才更替换成网状结构(Mesh)。
微架构层面,今日成为英特尔、AMD处理器共同制式武装的“微指令缓存”(uOp Cache),只要命中就不须启动复杂又耗电的指令解码器,可同时改善功耗和效能,从NetBurst那失败的Trace Cache为起点,一路演进到Nehalem,才算出现真正雏型。
这也让Nehalem微架构的Xeon平台,呈现和过去截然不同的风貌,也长得更像过去几年的AMD Opteron,即使多一颗有点碍眼、到Sandy Bridge才消失的IOH。不再受制于系统前端总线和MCH的Nehalem世代,拥有更巨大的系统总线与内存频宽,整体效能表现更是脱胎换骨,让AMD难以翻身。
四处理器和八处理器Xeon平台为了支持高容量内存与更多的内存体通道,NetBurst时代Xeon MP的IMI(Internal Memory Interface)界面XMB(External Memory Buffer),替换成更先进SMI(Scalable Memory Interface)界面的SMB(Scalable Memory Buffer)。
此外,为了强化服务器的RAS(可靠性、可用性、可服务性),英特尔在Nehalem-EX(Xeon 7500系列)将Itanium那一整套RAS架构原封不动的移植到x86平台,“MCA(Machine Check Architecture )Recovery”可在内存区块标示硬件无法修复的错误,通知操作系统或虚拟机器管理员(Hypervisor),不能再使用这些单元,关闭标示错误的数据,并重新启动程序。
当然,这也需要操作系统的配合,例如从2008年Windows Vista和Windows Server 2008开始引进的WHEA(Windows Hardware Error Architecture)。持续不断的补强,让x86处理器正式站稳高阶服务器的舞台。
从Merom到Nehalem的“帝国大反击”,让AMD在x86服务器的市占率急速下滑,更一举跌破10%到个位数水准,让一度响亮的Opteron品牌黯淡无光。AMD从Zen世代开始企图“重返农药”,也将服务器品牌重新更名为EPYC,不再使用这曾代表AMD最辉煌岁月的名称。
这段期间AMD发生了什么事?
上面这张照片是原生四核心的K10 Barcelona,也是AMD Opteron极盛而衰的转折点。
AMD从2003~2007年,压着英特尔猛打了好几年。但英特尔从2006年吹起反攻号角,AMD在2006年的夏天,耗资54亿美元并购ATi,也严重影响AMD内部产品研发时程,并造成一连串骨牌效应。
当2006年的圣诞节,AMD宣布原生四核心的K10完成设计,并由CEO Hector Ruiz亲自主持庆功的圣诞晚会时,全世界都感受的到AMD早已力不从心。结果2007年11月,爆发会造成系统宕机的“TLB臭虫”事件,但通过更新BIOS关闭TLB,将会降低10%~30%的效能。AMD在服务器市场的气势,就如同自由落体直线下坠,难以挽回。
AMD在2009年6月准时推出原生六核K10 Istanbul,并在产品行销简报内大肆宣扬“使命必达的执行力”,但这也是AMD成功的极限,融合CPU与GPU的Fusion大战略,让AMD从此备多力分,产品时程也渐渐脱轨,接着得来不易的服务器市占率,就被英特尔的钟摆巨轮狠狠辗碎,让AMD陷入长达十年的黑暗期。
AMD从Socket G34“包双晶粒水饺”时,也将Opteron产品线精简成4000(单处理器或双处理器,Socket C32)与6000(双处理器或多处理器,Socket G34)系列,但x86服务器市占率依旧跌至个位数。姗姗来迟的“救世主”推土机(Bulldozer)家族能否救驾成功?但事后证明,根本只是提油救火。
2011~2017年:英特尔的钟摆巨轮辗碎AMD
英特尔不动声色在22nm制程,默默导入3D立体结构的Tri-Gate(三闸极)电晶体,并在2011年5月才正式昭告天下,领先其他厂商的FinFET起码超过三年,堪称这间以摩尔定律奉为登山宝训的公司,在先进半导体制程领域最意气风发的时刻。
当英特尔在2014年2月10日的旧金山IEEE ISSCC(国际固态电路研讨会),正式公布代号Ivytown的Ivy Bridge-EX的技术细节,核心数量相较前代Sandy Bridge-EP几乎倍增的原生十五核,象征AMD Opteron被英特尔Xeon彻底压垮,连想利用“双馅水饺”的倍增核心数量,勉强抗衡英特尔的机会都没有。
以2011年Sandy Bridge(Tock)为起点,英特尔的钟摆(Tick-Tock)巨轮开始全速转动,接连的Ivy Bridge(Tick)、Haswell(Tock)和Broadwell(Tick),制程从32nm、22nm演进到14nm,稳定推陈出新,让英特尔Xeon在伺服器市场的优势更难以撼动。
英特尔在精准执行钟摆节奏的几年内,为了因应不同产品线需求,同一世代微架构的处理器组态,逐渐成形成LCC(Low Core Count,低数量核心)、HCC(High Core Count,高数量核心)与XCC(Extreme Core Count,超级多核心)等三种等级。Xeon的推出时程,因较长的产品开发与验证时间,和桌面PC、笔记本电脑处理器的“时差”也越拉越长,最高阶产品甚至可晚两年以上。
眼光转向英特尔的钟摆节奏,就不难理解为何这些年是AMD最难过、最不堪回首的日子。知名技术评论家、Real World Tech站长David Kanter曾这样形容英特尔的钟摆“Damn Excellent At Execution”,的确是最贴切的写照。
2011年(Tock):Sandy Bridge,系统架构扬弃又热又烫的IOH,引进AVX指令集,具备货真价实的微指令快取(uOp cache),换装NetBurst体系的乱序指令执行引擎,指令重新排序缓冲区与实体数据缓存分而治之,以减少CPU内部的数据流动量,利于省电。这时AMD推土机家族的Opteron,仍可用两倍的核心数勉强抗衡。
2012年(Tick):Ivy Bridge,最主要的改进还是跑出十五核Ivy Bridge-EX这个妖怪,不给AMD的“双馅十六核”任何反击的机会。
分配、协调各I/O周边装置存取处理器需求,发出中断(Interrupt)时,知道该由哪个处理器负责,是近代多处理器环境的必要条件,而起源于1993年Pentium的先进可程式化中断控制器(APIC, Advanced Programmable Interrupt Controller)则是技术核心。但和内存虚拟化的状况如出一辙,让VMM建立软件模拟的Shadow APIC不仅耗费处理器效能,更会造成虚拟机频繁的进出执行环境。英特尔则是在2013年发布APICv(APIC Virtualization)实用于Ivy Bridge微架构的Xeon E5-2600 v2。
应对激增的核心数,为了确保充裕的内存频宽与容量,继Boxboro-EX(Nehalem-EX / Westmere-EX)平台的SMI之后,Brickland平台(Ivy Bridge-EX / Haswell-EX / Broadwell-EX )升级成SMI2,数据传输界面从序列(Serial)转为64位元并列(Parallel),走线从70根爆增到110根,电气特性也截然不同,总之就是砍掉重练。
2013年(Tock):Haswell,新增AVX2指令集,并带来英特尔x86处理器微架构史上,最大规模的执行单元扩张行动,并大幅强化虚拟化机能,进一步追求控制不同虚拟机器占用L3高速缓存与内存频宽的精细调控机制,实现“L3高速缓存层级的QoS(Quality-Of-Service)”,避免系统资源被少数虚拟机吃光,或让VMM集中资源在最需要的虚拟机。Haswell-EP/EX最大核心组态再度略增到十八核,让AMD连核心数都占不了便宜。
2014年(Tick):Broadwell,虚拟化机能更精进,如更彻底的硬体化APICv(APIC Virtualization)和正名为Resouce Director Technology的L3高速缓存QoS,Broadwell-EX更将核心数推进到二十四核。
为了阻止ARM或其他RISC阵营,藉由低功耗和网络储存等应用“渗透”伺服器市场,英特尔推出整合网络控制器和一堆I/O界面的Xeon-D系统单芯片Broadwell-DE ,在入门级企业储存与网通产品大受欢迎,后续还升级成Skylake-DE。
这时AMD Opteron已走到生命尽头。
AMD当初挖角IBM Power4首席工程师Chuck Moore,开发号称“可以只增加50%晶粒面积,即可提升80%性能”的丛集多执行绪(CMT,Cluster-based Multi-Threading),却被一再延宕的产品研发时程拖累。
AMD也仿照英特尔,同时开发大核与小核,后者虽然在游戏机领域得到重大战果,却也挽回不了在服务器市场的颓势。
AMD错估英特尔钟摆节奏的进步幅度,规格四处偷工减料的推土机(Bulldozer),也注定对抗不了融合P6与NetBurst技术大成的Sandy Bridge,AMD服务器战线就此彻底崩盘,直到2017年EPYC才重返战场。
各位读者可先复习一下AMD近代x86处理器的家族简史,你会对2010年之后AMD产品线乱象更有感。
原本AMD打算靠着连续四个世代的丛集多执行绪微架构:推土机(Bulldozer)、打桩机(Piledriver)、压路机(Steamroller)、挖土机(Excavator),用两个比较简单的整数运算核心打英特尔一个大核,双核心共用的浮点运算器则“依据Fusion大战略,假以时日替换成GPU”,重夺Opteron的技术优势。
结果到头来AMD Opteron连核心数都输人,这场“走音工地秀”也无法走到尽头,丛集多执行绪的Opteron实际只进展到第二代(挖土机的X3000是沿用桌面PC的低阶产品),还乱入毫无竞争优势的ARM Cortex-A57核心的A1100系列。“正统”Opteron处理器的发展只撑到了2012年,就黯然划下句点,接着就是等到Lisa Su走马上任,将满天飞舞的简报通通束之高阁,倾尽全力研发Zen。
物极必反,否极泰来,就轮到AMD吹起反攻的号角了,虽然在2017年6月初代EPYC准备跟姗姗来迟的Skylake-SP Purley平台对垒时,声音还是相当微弱,几乎没有人听见。
2017~2020年:乱挤牙膏的英特尔再次被AMD反打一枪可能领先优势已经拉太开,IBM也迟迟难以有效将Power“下放”到一般平民百姓家,看在毫无竞争对手的份上,英特尔2015年(Tock)“集技术之大成的最终英特尔x86处理器微架构”Skylake问世后,钟摆巨轮慢慢停下,转型成“14nm制程Skylake牙膏厂。
英特尔金鸡母的Xeon亦不可免俗,意图“一次到位”、满足所有市场需求的Skylake-SP Purley平台,历经多次延宕,到2017年7月才姗姗来迟,接着就被AMD一口咬住,启动“重返农药”大反击。
既然Skylake微架构是“奋钟摆六世之余烈”的技术集大成,那以它为心脏的Xeon当然也不能丢脸,不让世人感到“耳目一新”实在说不过去。Skylake-SP之所以多出那个SP(Scalable Platform,可扩展性平台),充分彰显了英特尔的企图:统合过去Xeon MP和Xeon DP及EN / EP / EX的系统架构,不再分而治之,并企图降低整体成本。
所以Skylake-SP呈现了和过去的Xeon平台截然不同的崭新面貌,笔者仅列出几个比较显眼的重点:
- Skylake-SP核心比一般桌面PC、笔记本电脑处理器,多了AVX-512指令集,为此新增两个专用执行单元(部份低阶型号Xeon仅启动一个),L2 / L3高速缓存也针对服务器,调整容量与区块置换策略,这也让单一核心面积肥大化,也在日后“吸引”了不少事后诸葛亮的批判,像Linus Torvalds就希望“AVX-512应该痛苦的死去”。
- UPI(Ultra Path Interconnect)总线取代QPI。
- 省略掉XMB、SMB、SMB2记忆体缓冲器,内存模组通通直连CPU,从双处理器、四处理器、八处理器,统一成六通道DDR4内存。
- 系统芯片组整合对应iWARP的10GbE以太网路控制器,与提升数据压缩和加解密运算的QuickAssist辅助处理器。
- 部分型号内建英特尔自订的OmniPath总线控制器,超低延迟的特性利于高效能运算(HPC)等应用。不过英特尔在2019年宣布放弃OmniPath了。
- 3D XPoint内存模组Optane Apache Pass,但却延后到2年后的微幅改进版Cascade Lake-SP。
- 产品命名系统除了数字,更加上白金、金牌、银牌、铜牌等名称,看似80 PLUS电源供应器的效率等级认证。
至于2019年4月登场的Cascade Lake-SP,则在AVX-512追加以Deep Learning Boost为名的VNNI指令(重点在于支持人工智能推理需要的INT8 / INT16短整数)与“幽灵(Spectre)、熔断(Meltdown)”攻击的防御措施,2020年6月的Cooper Lake-P则再补上对于深度学习必备的BFloat16格式的支持,补强重点都集中在人工智能,制程也依旧“死守”14nm。
面对AMD EPYC来势汹汹的压倒性核心数量优势,英特尔也得重演“双馅水饺”的旧戏码,创造了400W功耗、最多56核的Cascade Lake-AP。
这张表格应可帮助读者迅速理解英特尔Xeon-SP「牙膏期」的更迭史。
挺过Cooper Lake-SP被腰斩的风波,随着英特尔终于在2020年的夏天,在HotChips 32公开Ice Lake-SP技术细节,看似漫长的“14nm Skylake牙膏期”即将划下句点,但Ice Lake-SP推迟到2021年第二季。
值得注意的是,英特尔在第三代Xeon-SP短暂重现Xeon MP和Xeon DP分立的样貌,在第四代的Eagle Stream平台和Sapphire Rapids处理器之前,如果需要BF16浮点格式做人工智能深度学习,就请乖乖掏钱购买比较贵的Cedar Island平台和Cooper Lake-P处理器。
时过境迁,AMD总算挺过了最黑暗的10年。随着2017年AMD发布第一代EPYC服务器芯片,重新向数据中心处理器市场发起冲击之后,得益于出色的Zen架构以及台积电的先进制程的加持,仅过了两年的的时间,根据官方公布的数据显示,2019年AMD在服务器市场的份额就迅速增长到了接近8%。而去年底AMD还推出基于Zen 3架构的第三代EPYC服务器芯片(代号Milan),这将是一款基于台积电7nm工艺制程,最高64核心的产品。外界认为,新一代性能更强的EPYC服务器芯片有望助推AMD市场份额的进一步提升。但是也同样将面对英特尔最新推出的10nm工艺的第三代Xeon-SP带来的巨大压力。
另外,目前AMD在服务器市场的市占率,却仍看不到当年Opteron全盛时期的车尾灯。身为Opteron继承者,EPYC跟英特尔的Xeon-SP之间的激战,依旧是未来数年内,处理器技术领域最值得关注的焦点(假若ARM没有在数据中心领域出现爆发性成长)。
2021年之后:英特尔再度重启钟摆巨轮Pat Gelsinger做为英特尔的CEO回归后,宣布重启“钟摆巨轮”,但这次面临的局势,远比15年前更严峻。
综观已知的英特尔未来数年Xeon产品Roadmap,重点都不在于规格细节和有没有看起来出色的尖端技术,而是英特尔能否重现“钟摆期”(2011~2017)使命必达的优异执行力。
除此之外,英特尔还得面对两个问题:“利润下滑”和“来自ARM的潜在威胁”。
现今以云端服务业者的数据中心为大宗的服务器市场,处理器采购案可谓杀价杀到刀刀见骨的程度,动辄砍到牌价三四成的惨案,亦随处可闻。这也是为何AMD宁愿付出效能代价、宁可让多芯片封装衍生出较长的数据存取延迟、选择Chiplet“多馅水饺”路线的主因,并且利于应对供货需求、灵活调配服务器和桌面PC的出货比例。
当然,握有绝大多数市场的英特尔可透过大量的“商业手段”和“生态系统”维持市占率的稳定,不过因为产品逐渐失去竞争力而导致获利下滑,对英特尔才是最致命的一击。请别忘了Xeon一直是英特尔最重要的现金母牛,很不幸的,这件事似乎已经成为现在进行式了。
x86双雄将如何面对伺服器市场巨变此外,对业界动态敏感的读者,应该有留意到一件看似微不足道、但绝对影响深远的小事:VMware在2020年10月6日(那时Pat Gelsinger还是VMware执行长),发表Arm版ESXi Hypervisor。这代表VMware可能认定Arm在服务器应用的爆发性成长,即将抵达微妙的临界点与心理关键时刻。
回过头来,ARM要切入个人电脑市场的成功率,最终仍取决于微软的态度,是否愿意再大费周章建立全新的生态系统。但假若UEFI和ACPI等规范,在ARM处理器平台发展成熟度,可和现有x86平起平坐,让自行更替操作系统更方便,那服务器市场将会呈现截然不同的局面。
各位可以想像一个画面:假以时日,ARM在伺服器市场的确占有一席之地,并持续攻城掠地,然后AMD顺势推出脚位与x86版本相容的K12核心EPYC,并可无痛转换。这恐怕将是英特尔不想看到的。
但对x86双雄来说,最可怕的长期危机还是“云端业者越来越多的开始自己开发服务器芯片”,他们拥有足够的本钱与条件,如果有人跟你讲「Google搞不好已经正在秘密开发可取代英特尔、AMD的RISC-V指令集处理器」,你大概也不会感到惊讶。
总之,Xeon、Opteron和EPYC,不只是x86站稳服务器市场的象征,更是见证英特尔与AMD兴衰的图腾,也许在过去难以想像、甚至连想都不敢想的巨变,将以出乎意料的速度,出现在我们眼前。
作者:痴漢水球 来源:technews
编辑:芯智讯-浪客剑
注:相对于原文,本文略有修改,且有补充部分内容
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com