在第18届中国国际工业博览会上,上海兆芯公司的ZX-C处理器获得了金奖。在2017年3月,更是接连荣获“2017年度大中华IC设计成就奖”(见图22)、“第十一届(2016年度)中国半导体创新产品和技术奖”。
(原标题:深度揭秘:中国 X86 CPU 技术源自何方 )
(本文原作者:铁流)
在国家十二五科技创新成就展中兆芯的宣传材料显示,“兆芯国产X86通用处理器的成功自主研发和量产,令国产处理器在性能方面完成了一次跨越式的提升,从十二五初期的不足国际整体水准的10%提升到了目前的80%”。
众所周知,Intel对X86的授权有着极为严格的限制,那么上海兆芯的X86芯片技术到底从何而来?ZX-C目前的短板在哪里?在性能上和Intel相差多远呢?
兆芯C4600 cpuinfo的信息显示:设计厂商为美国Centaur,微结构是VIA的以赛亚
在Linux系统中命令cat /proc/cpuinfo可以读出芯片的一些信息和特性。其命令和Windows系统中cpu-z软件获得的信息类似。芯片cpuinfo的信息是通过CPUID指令读出来的。例如eax=1时,读出的是处理器的信息以及特征位(CPUID指令的使用,见en.wikipedia.org/wiki/CPUID)。
从图1兆芯C4600芯片cpuinfo的信息可以看出,这个芯片的厂商(vendor_id)为CentaurHauls,即Centaur公司。其中cpu family表示那一代芯片,其中的family 6表示VIA的Nano系列。其中的model表示型号,也就是采用哪种微结构,15表示以赛亚。model name为处理器的型号,图中为C-QuadCore C4600@2.0GHz。表示4核芯片C4600,主频为2GHz。
图1兆芯C4600芯片cpuinfo的信息
图2威盛Nano U3500芯片cpuinfo的信息
图2给出了威盛公司的Nano U3500芯片cpuinfo的信息,其model name为VIA Nano U3500@1000MHz。对比vendor_id的信息可以看出都是VIA的Centaur公司,对比cpu family和model的信息,也可以看出都是family 6和model 15,即都是 “以赛亚”架构。
图3 威盛Nano U3500芯片的信息
从图3可以看出U3500芯片属于VIA Nano系列。其中的微架构为Isaiah(以赛亚)。支持的指令集到SSE4.1为止,并且支持x86-64指令集。
从C4600芯片cpuinfo的信息可以看出,C4600的设计厂商(vendor_id)还是VIA的Centaur公司,而没有改为ZX的标志。
美国Centaur公司和Glenn Henry
根据维基的资料显示:Centaur(半马人)科技公司,创立于1995年,创建者为Glenn Henry, Terry Parks, Darius Gaskins和Al Sato,其获得的投资来自于IDT公司。其公司的目标是开发兼容的x86处理器,目标定位为开发比Intel公司的x86芯片价格更低,功耗更小的芯片。早期的产品称为WinChip,1999年9月,Centaur被IDT公司出售给VIA公司,其后续的产品为VIA C3和VIA C7,以及VIA Nano。Centaur公司的芯片主要面向嵌入式市场,包括移动市场,也就是面积更小、价格更便宜,功耗更低的x86芯片市场。Centaur的设计理念是对于面向特定市场需求“够用就好”。VIA Nano Isaiah(以赛亚),是Centaur第一款超标量、乱序执行的CPU,第一款64位的CPU,Nano芯片这时更为强调性能,而不再是追随性能功耗比的等式,但是其维持和C7相同的功耗(TDP)。
根据Centaur(半马人)公司的网站的介绍,Centaur(半马人)科技公司,位于德克萨斯-奥斯丁。主要设计高性能、低功耗的x86兼容的微处理器,号称具有最快的设计流程,设计周期是竞争对手厂商的三分之一。该公司没有管理者,所有的工程师直接向Centaur公司的创建者和总裁Glenn Henry汇报,Glenn Henry是前DELL公司的CTO和IBM的工程系列的Fellow(20年的Fellow)。1999年8月,Centaur公司被VIA公司收购。但是这次收购没有改变Centaur的文化,也就是Centaur作为VIA公司的子公司独立地运营,而不会受到VIA的影响。在Cyrix解散后,VIA公司的x86芯片的设计都是来自于Centaur公司,而VIA QuadCore C4650芯片也是出自Centaur公司的Glenn Henry之手。
图4 Glenn Henry
这里介绍以下Glenn Henry。Glenn Henry于1967年加入IBM,在IBM干了21年,担任首席架构师,是RISC工作站、AIX操作系统和AS/400等创新产品的主要研发管理者,于1985年获得IBM fellow的称号,1988年离开IBM加入DELL公司,为DELL公司负责研发的副总和CTO,1994年离开DELL公司,担任MIPS公司的咨询顾问,试图把x86和MIPS架构结合在一起,1995年Henry获得了来自IDT公司的投资,创建了Centaur公司,设计低功耗、低成本的x86处理器。
揭开以赛亚神秘的面纱
正如Intel在研发出酷睿2后一举翻身,AMD在开发出Zen之后终于做出能与Intel相比较的产品,一款CPU最关键的就在于其微结构,那么QuadCore C4650芯片的微结构究竟怎么样呢?
图5 The VIA Isaiah Architecture
Centaur公司的灵魂人物和总裁和Glenn Henry撰写的一篇文章“The VIA Isaiah Architecture”(图5),文章中分析了为什么采用3发射、乱序执行结构,和Intel的Core比较起来有什么优势,为了降低功耗,采用了什么样的权衡。文章介绍的非常详细,有兴趣的网友可以找原文品读。
从图6中可以看出,以赛亚采用类似于Core架构的设计,7个部件,2个定点I1和I2,2个浮点MA和MB,1个取数LD,1个存数ST和1个SA地址计算。也就是2个定点、2个浮点、2个访存。属于中规中矩的设计。
图6 以赛亚微结构框图
Cache的设计为64KB+64KB L1 cache,16路组相联,2MB的uninclusive的L2 cache。保留站的项数为76项(micro-ops,其micro-ops类似Intel处理器的uops,每条X86指令对应1-3条uops),规模和Intel的Core以及AMD的K10基本相当。其也采用了大量的低功耗技术,例如为了降低功耗,分支预测器的表项只有4K项,取指令时只取16字节大小等。
从文章中介绍和测试数据来看,该处理器结构在2008年而言是非常棒的微架构,兼顾了低功耗和适度性能。从性能上可以打赢当时的按序发射的Intel Atom,但是由于技术团队人数有限,在功耗控制实现上不是那么完美,所以导致其市场定位高不成低不就。在高性能上没法和Intel的Core和AMD的K10抗衡,在低功耗上又不能做到无风扇设计,没法和Atom以及近年来崛起的ARM相比。导致Nano的芯片主要用于上网本等市场,但是由于出货量较少,每片的成本相对较高,随着上网本市场的消亡,Nano芯片基本也退出了主流市场。
Glenn Henry曾在2008年接受记者Dave Altavilla的采访,在采访中Glenn Henry对低功耗的以赛亚架构处理器的一些解释(“VIA's Glenn Henry Speaks On New Low Power Isaiah Processor,by Dave Altavilla, January, 2008”)。以下为采访链接:
图7 Glenn Henry介绍“以赛亚”架构
图8 “以赛亚”架构Nano处理器版图
ZX-C QuadCore C4600和VIA QuadCore C4650关系密切
根据媒体报道:
《真正走向市场化,揭秘中国兆芯X86处理器》
《国货新贵 兆芯X86处理器来了!--开先ZX-C C4600处理器体验》
《兆芯傅城:国产X86通用处理器已接近国际水平》
这三篇报道算是比较全面的介绍兆芯的X86处理器。文章中介绍了是兆芯公司打造了中国X86 CPU,也介绍了兆芯ZX-C四核心处理器,ZX-C处理器是国家“十二五”核高基重大科技专项创新成果,采用28nm工艺等内容。
不过,这些报道中的一些内容经不起对敲,比如文章中称:兆芯ZX-C四核处理器的推出,让国产处理器的性能完成了从“十二五”初期不足国际主流水准10%到目前80%的跨越性提升。
其实,这段话并非媒体妄言,而是出自兆芯(VIA Alliance Semiconductor)在“十二五”科技成果展上的宣传资料。不过,兆芯官方宣传资料中达到国际主流水准的80%是不客观的。
但经过实际测试,即便是兆芯ZX-C四核处理器中主频达到2.0G的C4600,与Intel G1840和I5 4460相比较。从图10可以看出,就定点而言,I5 4460是ZX-C的3.3倍,G1840是ZX-C的2.4倍。就浮点而言,I5 4460是ZX-C的4.4倍,G1840是ZX-C的2.8倍。在这种情况下,宣称ZX-C达到国际主流80%,存在虚假宣传行为。
(图10)
言归正传,一起先来探究以下ZX-C处理器和VIA QuadCore C4650的关系。
根据2014年的报道“Report: VIA’s quad-core, 64-bit Isaiah II chip coming this summer -- 07/07/2014 by Brad Linder”。2014年的VIA的2GHz的Isaiah II QuadCore处理器的性能基本和AMD Kabini的Athlon 5350和Intel Atom的Z3770相当,详细参数见图11。
(图11)
以下为链接:
根据2015年的一篇文章,“VIA’s New 28nm C4650 QuadCore x86 Processor Spotted – Gaming and General Purpose Benchmarks Surface, Impressive Low-End Performance”。从中可以推测在至少在2015年,VIA已经有了VIA QuadCore C4650。以下为链接:
在2016年,兆芯宣布开始将量产100万套ZX-C四核X86处理器。这里先介绍下C4600和ZX-C的关系。根据兆芯官网资料,ZX-C可分为C4200/4210、C4400/4410、C4600/C4610三个类别,之间的差别在于主频,C4600是ZX-C系列处理器的2.0G主频版本,兆芯官方截图见图12和图13。
(图12)
(图13)
而且之前已经介绍了,从C4600芯片cpuinfo的信息可以看出,C4600的设计厂商(vendor_id)还是VIA的Centaur公司,而没有改为ZX的标志。
兆芯的C4600与VIA公司的QuadCore C4650有非常紧密的联系。这种联系存在两种可能:
第一种可能是,Centaur公司已经由威盛公司完全出售给了兆芯公司了,所以直接使用Centaur公司的标志,Centaur公司的技术成果也就顺理成章的成为国家“十二五”核高基重大科技专项创新成果。
第二种可能是,通过VIA的关系,兆芯直接把QuadCore C4650的设计或版图买过来,或者直接拿过来,重新在台积电流片,然后改头换面变成了国家“十二五”核高基重大科技专项创新成果。
以赛亚和以赛亚2到底有多少差异
根据资料显示:兆芯ZX-A处理器,如C4350AL的微结构是“以赛亚”,而ZX-C系列处理器,比如C4600的微结构是“以赛亚2”。那么,以赛亚和以赛亚2到底有多少差异呢?
下面对VIA Nano X2 C4350AL和兆芯C4600在进行测试。实验中为了尽可能较少不同的因素,将C4600和C4350al的频率都降到1.33GHz。不过,受条件有限的原因,还是有一些区别的——C4600使用内存为DDR3-1600,C4350al使用的内存为DDR3-1333,C4600编译选项最高采用SSE4.2,而C4350al编译选项最高支持到SSE4.1,另外,两个平台的前端总线(FSB)频率也不同,C4600为1333MHz,C4350al为1066MHz。
(图14)
从图14的对比可以看出,在相同主频下,C4600和C4350al的SEPC2006的分值基本相当,也就是两者在相同频率下的性能基本相同。抛开主频的影响和编译器的影响,处理器性能的差别在于微结构的差别。
由于即便是同一款处理器跑两次SEPC2006的分值也有有少许上下浮动。因而可以推断出兆芯的C款处理器C4600和兆芯的A款处理器VIA Nano C4350AL采用了相同的微架构,或者说以赛亚和以赛亚2的差异微乎其微,以至于在性能上处于原地踏步状态。
除了前端总线的频率和工艺的差别,各种微结构的参数都没有任何变化,也就是说“以赛亚2”和“以赛亚”其实是同一个东西,或者说修改的地方微乎其微,以至于在性能上处于原地踏步状态,修改可以忽略不计。
必须说明是是实验中,C4600的定点性能比C4350al略高一些,主要原因是C4600的前端总线的频率提高了,C4600浮点性能反而略有下降,主要原因是由于其采用的SSE4.2指令集没有硬件的逻辑实现,并且DDR3-1600带宽的提升反而弥补不了延迟的略微增加,以至于浮点性能下降。
兆芯C4600和VIA以赛亚的短板
Centaur公司设计的以赛亚在当时是立足差异化竞争的产物,以赛亚也是一个轻量级的架子,虽然在2009年的时候这个设计还是挺不错的。但随着技术的进步,以赛亚在今天就有点不够看了,面对ARM Cortex A57/A72/A73就难以招架了。下面简单介绍一下兆芯C4600和VIA以赛亚的短板:
短板一:没有对最新的指令系统在微结构和硬件上进行改动
根据VIA官方资料,VIA Nano只支持到SSE4.1指令集系统,至于原因只要回溯Intel指令集系统的发展历史就明了了:MMX(1996), SSE(1999), SSE2(2001), SSE3(2004),SSSE3(2006), SSE4.1(2006)SSE4.2(2007), AES, AVX(2011), F16C(2009), ACE, PCLMUL(2010), VMX, BMI1, BMI2, AVX2(2013)。
正是因为历史原因以及Intel对外的X86授权因素,当时的VIA公司没有拿到Intel最新指令集系统的授权,所以2009年的Nano处理器最高支持到SSE4.1。
相比之下,VIA QuadCore C4650和兆芯C4600处理器支持后续的SSE4.2和最新的AVX和AVX2等指令集系统。
对于VIA QuadCore C4650和兆芯C4600支持最新的AVX和AVX2等指令集系统,可能的原因是VIA已经买到了Intel公司最新指令集系统的授权。不过VIA如何将指令集授权转让给兆芯,这个问题无论是Intel,还是VIA、兆芯都没有任何公开声明。
诚然,这个不是本文关注的重点。本文关注的是缘何增加了AVX和AVX2等指令集系统C4600的性能反而下降了。
Intel和AMD的CPU在使用了最新的256位的AVX/AVX2向量指令集后,性能有所提高——Intel和AMD处理器采用向量指令(128位和256位),INT2006的性能平均可以提高5%,FP2006的性能平均可以提高16-18%。而从128位的SSE,增加到256位的AVX/AVX2指令,INT2006的性能可以提高2-3%,FP2006的性能可以提高6-8%。
必须说明的是,采用向量指令提高性能的前提是处理器的访存通路能供应上足够宽的数据,如Haswell为了支持256位的AVX/AVX,采用了3个访存的端口,同时支持2个256位的load操作和1个256位的store操作。
与Intel和AMD的CPU相反,C4600处理器兼容了Intel最新的256位向量指令AVX/AVX2等(不支持乘加FMA指令)。在编译时打开了AVX2, AVX, bmi等最新指令集编译选项,但编译出来的程序实测性能反而下降。具体成绩为图15。
(图15)
从图15中可以看出,采用最新的指令集系统,对于大部分CPU2006的程序,其性能反而下降了。对于INT2006,几何平均的性能下降了1.76%,如401.bzip2下降了5.01%,456.hmmer下降了3.74%,462.libquantum下降了13.04%;对于FP2006,几何平均的性能下降了4.82%。416.games下降了7.52%,433.milc下降了8.93%,435.gromacs下降了8.12%,454.calculix下降了11.18%,454.calculix下降了14.06%,459.GemsFDTD下降了6.98%,482.sphinx3下降了16.41%。而这些程序正好是易于被向量化的程序,其采用了256位的AVX指令。例如459.GemsFDTD中256位的Packed Double动态指令数占到16.53%。
为什么采用新型的指令集系统,SPEC CPU2006程序性能反而有所下降呢?很可能是兆芯C4600处理器保留了Centaur公司的原始设计,没有对最新的指令系统在微结构和硬件上进行改动,也就是在微结构上除了指令译码部分,在数据通路和访存通路上没有变化。而这也作证了之前提到的:以赛亚2和以赛亚其实是同一个东西,或者说修改的地方微乎其微。
首先来看处理器在指令译码部分怎么支持最新的指令集系统,在当前的CISC指令集系统的实现都是将外部CISC指令翻译为内部的类RISC,即uops,通常一条CISC指令可以在内部被翻译为1-3条内部的uops指令。uops指令在“以赛亚”被称为micro-ops,见VIA Isaiah Architectural文章中“microcode subsystem”,“以赛亚”架构中的微码子系统(microcode subsystem)包括24K微指令加上一个强大的打补丁(patch)的功能,使得微码能被更新,每个ROM中的微码指令被翻译为最多3条融合的微操作(fused micro-ops)。可以看出“以赛亚”架构仍然在沿用X86处理器早期的部分复杂X86指令微码实现的方式,如果要支持新的如AVX的指令,就可以通过更新微码的方式来实现,再通过微码指令转换为内部的微操作指令实现。
第二,256位寄存器的实现,既然要支持AVX指令,需要实现256位的体系结构可见的寄存器和256位的重命名物理寄存器,我们猜测其内部实现为仅实现了体系结构可见的寄存器,而没有实现256位的重命名物理寄存器,这不会增加太多的开销。在数据通路和访存通路的实现上,在内部很可能是将256位的向量指令拆分为多条128位的类SSE指令实现的,这种方法在第一代AMD的推土机实现256位的AVX指令和第一代的K8实现128位的SSE指令也是这么做的,通过内部拆分在数据通路上支持新的指令集系统,但是这样做的结果是,新的指令系统对性能不但没有好处,反而会有性能的下降,因为数据通路和访存通路根本就没有实现更宽的设计,就好比本身很窄的马路,可以通过2个车道,这时候同时来4辆车,这4辆车就得排成两排,顺序通过。另外,更宽的向量操作导致其架构的访存和供数能力跟不上,这也造成了新指令集有时性能下降的原因。
短板二:前端总线设计和带宽
限制兆芯C4600芯片的一大瓶颈是Centaur公司延续了其前端总线(VIA V4 bus)的设计,而且没有将内存控制器集成到处理器上。
前端总线(front-side bus,FSB)是早期Intel芯片的计算机通信的接口,和AMD公司的EV6类似,其连接CPU和北桥芯片,内存控制器通常集成在北桥中。PCI,AGP等各种设备以及内存都是通过北桥和CPU进行通讯。
前端总线出现在1995-2006,用于Intel的Atom,Celeron,Pentium,Core2芯片以及早期的Xeon芯片,其很快被现代处理器中AMD的HT(HyperTransport)和Intel的QPI(QuickPath Interconnect)以及DMI(Direct Media Interface)所取代。
前端总线为64位,8个字节,每拍能传输4次。前端总线的速度是当时计算机系统一个重要的衡量指标,当前,前端总线最高的频率为333~400MHz,每个周期能进行4次传输。由于设计的缺陷,前端总线的频率没法得到进一步提升。假设前端总线的实际频率为333MHz,也就是通常厂家说的1333MHz,其峰值理论带宽为10.65GB/s,即8 bytes/transfer × 333 MHz × 4 transfers/cycle = 10656MB/s。
前端总线的设计,使得CPU需要等待来自内存中的数据,对于每个元素需要的大量复杂计算的应用,这样的应用访存不是那么的密集,前端总线能跟上CPU的速度。而对于图像、音频、视频、游戏、FPGA综合以及科学应用等应用,通常是对于大工作集的少部分数据进行操作,这样前端总线就成为一个主要的性能瓶颈。
图16比较了2.0GHz的兆芯C4600、1.5GHz的龙芯3A3000、1.5GHz的AMD K10三款处理器访存带宽测试程序STREAM的带宽分值,从中可以看出,单线程STREAM的测试,C4600的STREAM带宽基本为4-5GB/s,而3A3000为8+GB/s,K10为6-7GB/s。多线程STREAM的测试,C4600的STREAM带宽基本为3+GB/s,而3A3000为12-13GB/s,K10位6+GB/s。
(图16)
国际主流CPU都在十年前把内存控制器集成在CPU芯片中,而兆芯C4600继续把内存控制器集成在桥片上,访存带宽受限于前端总线。VIA 以赛亚系列处理器从2009年开始一直采用VIA V4 BUS的前端总线设计,而没有将内存控制器集成到芯片上,即使是2014年对Nano X2的改版也不愿意去动其结构和设计。只是从40nm工艺提高到28nm TSMC的工艺,同时把V4总线的频率从800MHZ提高到1333MHz,也就是其前端总线的理论带宽为10.6GB/s。所以其内存带宽不高原因也就可以解释。
另外,多线程的情况下,多个CPU核以及I/O等会竞争前端总线,前端总线和内存控制器的预期机制截然不同,造成访存序的紊乱。所以在多个线程尤其是访存压力很大的情况下,其性能会急剧下降。这也是C4600多线程带宽反而不如单线程带宽的原因。
对于C4600,1-2个核基本上就吃满了访存带宽,对于龙芯3A3000而言,访存带宽具备显著的优势,其能满足4-8个处理器核的需求。所以,在单线程性能差距不大的情形下,龙芯3A3000的SPEC CPU2006多线程rate的性能,明显超过了C4600的rate性能。具体参数见图17
(图17)
结语
虽然在一系列兆芯官方宣传和中文宣传资料上,兆芯一直宣传自主安全可控(见图18),在其官方网站上也标明自主可控(见图19)。但与兆芯相关的英文材料却标明:Based on Centaur Technologie’s microarchitecture designs (见图20)。
(图18)
(图19)
(图20)
在微结构源自Centaur公司,指令集授权也模糊不清的情况下,就宣布兆芯自主安全可控,未免有点超之过急——即便是走技术引进道路,也要在凭借自己的能力完成消化吸收再创新之后,才能称得上自主可控安全。比如在充分消化Centaur公司设计的以赛亚之后,凭借境内设计团队设计出可以匹敌Intel SNB或者AMD Zen的产品,这才真的称得上再创新。拿Centaur公司设计的以赛亚,改制程堆核心数提升总线频率做出一款CPU就宣传自主可控,无非是自欺欺人而已。
至于拿Centaur公司早年的设计,改头换面就成为国家“十二五”核高基重大科技专项创新成果,并能够荣获“第18届中国国际工业博览会金奖”(见图21)、“2017年度大中华IC设计成就奖”(见图22)、“第十一届(2016年度)中国半导体创新产品和技术奖”(见图23),也难怪国外资深IC设计工程师会对中国的IC设计水平嗤之以鼻了。
(图21)
(图22)
支付宝扫一扫
微信扫一扫
赏