7月10日报道,美媒称,中国正试图摆脱对美国公司的依赖并开发自己的芯片。据报道,中国制造商天津海光先进技术投资有限公司开始生产中国自主设计的“禅定”x86中央处理器(CPU)。
据美国技术站点网7月8日援引科技资讯网站Tom's Hardware报道,这种处理器以超威半导体公司(AMD)的Zen微体系结构为基础,源于AMD与其中国合作伙伴之间达成的一项x86知识产权授权协议。尽管这家美国巨头否认向这些中国公司出售决定性的芯片设计,但它允许这些公司自行设计专供中国服务器市场的处理器。
报道称,这些“禅定”芯片据说与AMD的EPYC中央处理器几乎一模一样,仅有厂商标识和序列号有所区别。
报道称,美国为阻止中国开发自己的芯片,出台了与公司合并和收购有关的规则。然而,尽管存在这些规定,AMD还是在2016年宣布在中国成立了合资公司,这意味着中国将开发基于AMD产品的中央处理器。这笔协议让这家美国公司获得了2.93亿美元的收入,而且AMD还将根据未来的销售额收取专利使用费。
这项协议还声明,最终产品必须“专门针对中国服务器市场的需求来定制”,只能在中国境内销售。
中国两大x86 CPU:海光、兆芯谁更强?
目前国内做X86 CPU的厂商中,海光和兆芯无疑是最受国家器重的企业。那么,面对如此庞大的市场,海光和兆芯谁能拔得头筹呢?
兆芯简介:兆芯全名为上海兆芯集成电路有限公司,是国内少数具有x86 CPU设计能力的公司。其最早技术来源于台湾威盛。威盛是世界上除了英特尔,AMD之外的第三家具有x86正式授权的设计公司,有台湾英特尔之称。2013年威盛与上海市国资委合资成立兆芯,仅两三年后采用威盛的技术的兆芯x86处理器就已小批量应用在了联想等台式PC上,可以完全兼容windows操作系统。如今兆芯已经国有化,虽然CPU性能还不如一线的英特尔AMD,比如运行大型游戏吃力,但已经可以驾驭office等普通软件,以后党政军系统的办公PC很可能被兆芯CPU垄断。
对于海光来说,兆芯获得的国家资源要丰富的多——海光以天津投资和曙光自有资金为主,兆芯拿核高基的钱拿到手软。
兆芯技术来源在于是VIA公司,其ZXA就是VIA Nano马甲,ZXC QuadCore C4600和VIA QuadCore C4650十有八九就是同一个东西。
虽然兆芯在各种场合一直宣传自己符合自主可控,但其实ZXC的内核其实就是美国Centaur公司设计的以赛亚。ZXC极有可能就是把人家的设计或版图买过来,重新在台积电流片的产物。
兆芯最新公布的ZXD,根据目前的信息看,其实是基于ZX-C的改版,在微结构不动情况下,做的SoC设计,集成了内存控制器,pcie控制器等,二级cache变大。
兆芯的最大优势有两个:一是能跑Windows,二是可以得到国家巨额资金扶持。
兆芯的不足也很明显:一是存在知识产权瑕疵;二是CPU性能比较一般;三是安全上存在瑕疵。
首先,在知识产权上,兆芯是存在瑕疵的,比如X86授权——毕竟AMD来华寻求合资时强调,必须控股,合资公司才能使用X86授权。但VIA只持有兆芯的2成股份,如果VIA持有兆芯2成股份,兆芯就能合法使用X86授权。那么,这就意味着VIA和AMD至少有一方在说谎。
不过,由于上海市国资委下属的单位持有兆芯80%的股份,这种政府背景的公司,在对Intel没有任何威胁的时候,Intel未必会起诉——毕竟在中国起诉政府背景的公司很难获得实际利益。
但如果兆芯敢卖到美国去,很可能会被Intel弄得死去活来——毕竟当年VIA的桥片一度挺火的,但在Intel专利大棒下灰飞烟灭了,VIA都顶不住专利大棒,技术源自VIA的兆芯根本不可能有AMD那种和Intel交叉授权的地位。
其次,兆芯CPU性能比较一般,就以已经量产的芯片中性能最强的ZXC为例,即便是ZXC中主频最高的C4600,和AMD/海光相比差距非常大,根据AMD公布的数据:Zen在3.4Ghz频率下,使用 GCC4.6编译器,优化参数 -O2,定点成绩为31.5,是C4600的3倍左右。
即便是与龙芯、申威、飞腾相比较,C4600也处于劣势,在局部一些指标上还处于明显劣势——单线程STREAM的测试,C4600的STREAM带宽基本为4-5GB/s,而龙芯3A3000为8+GB/s。
多线程STREAM的测试,C4600的STREAM带宽基本为3+GB/s,而龙芯3A3000为12-13GB/s。在多线程上,C4600定点成绩是龙芯3A3000的74%,C4600浮点成绩是龙芯3A3000的70%。而申威421的成绩比龙芯3A3000还要强一些,兆芯和申威421的差距还要更大一些。
虽然兆芯官方宣传,ZXD的SPEC2006定点和浮点都在20分以上,但其实是ICC的成绩,而且从兆芯“单任务”这样的用词来看,很有可能是开并行化的结果。这是什么意思呢?
在开启并行化后,会将原本单线程执行的程序并行化给多个处理器执行,进而获得性能增益,但这种并行化仅仅只能用来跑分,实际日常使用中,很多常用代码并不支持,因而并行化是没有什么实际使用意义的。因此,兆芯官方宣传所谓的“ZXD的SPEC2006定点和浮点都在20分以上”水分非常大。
最后,就是存在安全瑕疵。从C4600的情况看,其内核就是美国Centaur公司设计的以赛亚。兆芯相关的英文资料也表明:Based on Centaur Technologie’s microarchitecture designs 。
兆芯和VIA、美国Centaur公司之间的关系,兆芯国内技术团队、VIA、美国Centaur公司在设计兆芯的CPU中各扮演了什么角色,这也是非常令人玩味的。
正是因此在安全市场上,由于兆芯是VIA马甲的现实,导致兆芯在一些项目上无法参与,比如XX工程中,上海市上报提议使用兆芯,结果被北京否决,换成了真正自主设计的CPU,再比如军队根本不认可兆芯,也是禁止使用的。
对兆芯来说,由于性能太弱,无法在民用市场无力与Intel、AMD竞争,即便要打国产 X86 CPU的旗号,就性能上来说,也无法与海光相比。
在安全市场因为VIA马甲的现状,导致大多局限于上海本地党政市场推广,加上安全市场不能用Windows,这使得兆芯能跑Windows的优势被废。虽然有上海政府的鼎立支持,但相对于全国党政军市场来说,还是过于渺小。这是兆芯当前面临的窘境。
在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的标志。
海光简介:海光全名为海光集成电路设计有限公司,中方股东为天津海光(控股),而天津海光则由A股上市公司中科曙光参股,因此也有强烈的国资意味。公司外方股东为AMD,也理所当然的具有x86架构的技术授权。公司成立于2016年3月,是一家新兴处理设计公司,目前还没有可应用的产品。和兆芯略有不同,海光虽然也是x86处理器,但未来的业务定位更高端,为国内的服务器领域。
海光与AMD合资的事情非常低调。据业内人士披露,海光与AMD合资是一些人抱着重复高铁技术引进、消化吸收、再创新的想法,因而开展的项目。
虽然中国方面鲜有相关消息,但据外媒报道,AMD与国内公司签订的协议预计可为AMD带来2.93亿美元许可费和版税收入。目前,海光资金以天津投资和曙光自有资金为主。
其实,AMD最初的是打算和国内某驰名PC厂商合资的,还拿出了在2013年市场主流产品的源代码,并允许合资公司在此基础上进行修改形成自主的CPU核。
为了规避Intel对X86专利授权的限制,据小道消息称:AMD在当初寻求合资时表示,如果AMD是合资公司的小股东,则合资公司就不能获得X86授权,只有AMD保持控股状态时,合资公司才能获得X86授权,因此最初合资的一项条件就是AMD控股合资公司。
但如果由AMD控股了合资公司,那势必影响合资公司获得国家扶持的力度,而且一旦外资控股,很多项目就无法参与了。将来若要给外资控股合资CPU公司打上“自主、可控、安全”的旗号也很容易遭受质疑。
于是形成了比较绕的一个方案:AMD与国内公司A成立合资公司B,合资公司B由AMD控股,负责开发CPU核(其实就是拿AMD现成的内核),然后公司A购买合资公司B开发的CPU核,以此为基础开发CPU,最终实现ARM卖IP核的翻版。
这样一来既规避了Intel的X86授权限制,又使这款X86 CPU成为内资公司开发的产品,迎合关于“自主、可控”等要求的界定。
只不过为了绕过Intel的X86授权限制,以及为了使开发的国产X86 CPU能够获得更多的政策、资金扶持,才把合资模式搞的这么复杂。
如果当时某PC大厂真的与AMD合资,通过垂直整合,未来的市场表现是可以期待一下的,只不过当时某PC大厂因为资金链不是很充裕,加上大公司在决策上受各种因素钳制,在犹豫不决下没能成。
然后AMD又去寻找了曙光等一些公司,最终才有海光与AMD合资这个事情。
虽然不清楚最后海光与AMD具体合资方式,但如果依旧是AMD变相卖IP授权,那很有可能还是之前的那个方式。
海光的最大优势是性能。由于有AMD技术做后盾,CPU的性能是不用过于担忧的——相对于VIA给兆芯的以赛亚性能非常有限,AMD给海光的是性能强劲的Zen——AMD给予海光的是Zen的结构和代码!AMD给予海光的是Zen的结构和代码!AMD给予海光的是Zen的结构和代码!重要的事情说三遍。
虽然AMD在少数模块上有技术保留,但AMD能把Zen给海光,而不是已经落后的推土机或者挖掘机,这个已经展示出AMD的诚意了。
在AMD的帮助下,海光如果能把主频做到3G以上,在国内就足以傲视群雄。
海光主要面向商用服务器市场,也就是曙光原有市场,这样海光的CPU就可以直接替换曙光原本需要进口的国外X86 CPU。由于Zen的底子在,海光的CPU性能应该不会太差,这种海光依托AMD的技术设计芯片,曙光做整机销售的商业化模式,是有一定市场潜力的。
海光最大的不足是安全上存在瑕疵,以及尚不具备消化吸收Zen的技术实力。
CPU是否安全,微结构是关键,而Zen毕竟是AMD设计的,而不是国内团队完成的。
考虑到美国科技公司向来有配合美国政府情报部门的惯例(斯诺登已经证实),以及相关单位已经证实,国外X86 CPU存在“冗余”模块,从怀疑论的角度去看,AMD是否会留下后门,这个还是未知数。
而且即便拿到源码,要消化吸收也是非常困难的。在自身技术实力有限的情况下,面对Zen这样复杂的东西,国内团队在短时间内很基本上是改不动的。
海光主要问题在于海光能不能消化吸收和再创新,因为AMD给的Zen相对于国内团队来说还是非常复杂的,而且海光目前的技术团队是全新的,还缺乏大项目的磨砺,在技术上和经验上还有所不足,未必能消化掉AMD给的技术。
就第一款产品来说,海光做的事情是互联和cache一致性等工作,以及SoC要海光自己做,但内核却是由AMD提供的Zen,而且生产方面可能有需要仰仗AMD,很可能由AMD找晶圆厂(比如GF)代工。
对于海光来说,磨砺自己的技术团队,最终实现消化吸收AMD给的技术才是当务之急。
对比总结
海光和兆芯颇具相似之处,都属于国家重点扶持企业,压根不差钱。而且都属于X86 CPU,能跑Windows,就现阶段来说,从安全性、自主可控方面来说,两者都是有瑕疵——海光的国产X86芯片,内核是源自AMD的Zen;兆芯的国产X86芯片,其实是VIA的马甲。
差异就在于AMD的技术实力远远胜过VIA——AMD给的Zen也比VIA给的以赛亚强的多,因而在CPU性能上,海光远远强于兆芯。
在商业市场上,海光的CPU有一定市场竞争力,但兆芯的CPU完全不具备市场竞争力。而且曙光和海光之间的股权关系,使得曙光有比较大的动机去鼎立支持海光。而兆芯的整机合作伙伴很多也是龙芯、申威、飞腾的合作伙伴,属于几家整机产品都做,对于整机厂来说,客户青睐哪家的CPU,就多生产该CPU的整机产品。这样一来,很难形成曙光对海光那种强度的支持。
至于两者企业能否在国有天量资金的扶持下,实现高铁模式的消化吸收再创新,就只有交给时间了。
其他国产CPU
龙芯
龙芯CPU由中国科学院计算技术所龙芯课题组研制,由中国科学院计算技术所授权的北京神州龙芯集成电路设计公司研发。龙芯中科技术有限公司正式成立于2010年。
龙芯系列CPU包括面向行业应用的专用小CPU,面向工控和终端类应用的中CPU,以及面向桌面与服务器类应用的大CPU。
龙芯成功包揽了我国三项CPU界的“首款”称号,我国首款通用CPU(龙芯1号)、我国首款64位通用CPU(龙芯2B)、我国首款四核CPU(龙芯3A)。
君正
君正和龙芯同属于MIPS阵营,与龙芯着力于桌面PC处理器不同,北京君正是国内较早专注于可穿戴、物联网领域的本土IC设计公司之一。由于嵌入式芯片的软件一般按需求定制。这导致在智能可穿戴市场,相当一部分可穿戴产品和应用软件具有专用性,软件生态链相对较短,加上应用需求的多样化,因此不能用一套通用方案来满足所有人的要求,所以在这个领域没有某个厂商可以实现垄断。因此,在智能穿戴市场不容易出现PC和移动手机市场那样被x86与ARM架构垄断的情况。
智能穿戴芯片和物联网芯片对性能要求不高,大部分应用场景更关注低功耗、廉价和尺寸等因素,君正的产品完全满足性能要求,x86处理器不可能应用于该领域,ARM阵营IC设计公司受制于相对较高的授权费,在芯片产量较小的情况下,并不具备价格上的竞争力。君正拥有十多年的芯片设计经验和技术积累,其最大的特点就是具有较高的性能功耗比。国内第一批上市的智能手表包括果壳的第一代智能手表、土曼一代、土曼二代智能手表等都采用了君正的方案。
中晟宏芯
蓝色巨人IBM的Power架构一直是高性能的代言。IBM于2013年联合NVIDIA等公司成立OpenPower开放联盟,其他公司也可以获得Power架构授权。此后还推动成立了中国POWER技术产业生态联盟,与多家中国公司签署了授权协议,中晟宏芯就是其中的一家。中晟宏芯成立于2013年,相信宏芯能用若干年的时间实现技术的消化吸收和推陈出新。
中天微
中天微系统有限公司位于杭州,主要团队来源于浙大。公司产品为面向嵌入式低功耗领域的32位CPU,应用领域有工业测控,IC卡,安防监控等。虽然定位看上去不如其他国产CPU公司那么高大上,却着实是成功的公司。其CPU虽然只有32位,偏低端,但却是自主指令集。和其他尚无产品的公司相比,中天已经有大规模的量产应用。并且,中天采用了类似ARM授权的模式,向其他公司直接授权设计生产其SOC架构。
在4月20日,阿里巴巴集团宣布,全资收购中天微,收购金额暂未透露。
背后资本的中天微,能否起势,还得靠时间去检验。
申威
申威处理器简称“SW 处理器”,源自于 DEC 的 Alpha 21164,采用基于 RISC 的自主指令集,Alpha 架构,具有完全自主知识产权,其研制得到国家“核高基”专项资金支持,其产品有单核 SW-1、双核 SW-2、四核主频 SW-410、十六核 SW-1600、SW-1610 等, SW1600 运用到我国公开面世的首台采用自主研发生产处理器的“神威蓝光”超级计算机上,达到每秒千万亿次浮点运算能力;SW-1600、SW-1610 突破了我国自主设计 CPU频率 1.5GHz 的界限。 申威处理器多应用在高性能桌面及国产服务器上。
拓展阅读:
美国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对低功耗的以赛亚架构处理器的一些解释。
图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的设计或版图买过来,或者直接拿过来,重新在台积电流片,然后改头换面变成了国家“十二五”核高基重大科技专项创新成果。
根据资料显示:兆芯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带宽的提升反而弥补不了延迟的略微增加,以至于浮点性能下降。
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)
(图23)
本文整合自 超能网、雷锋网(铁流)、参考消息网等