图像处理技术!
返回

兆芯枯木育新枝,前尘入魂续今世

2023-02-12 2860 0

本文比较长,有万字左右,因此在前面先把小标题集中亮个相。

即使大家一晃而过,我也要让精心拟定的各个小标题有个露脸机会。


兆芯承运应时生,抢得先机石成金,

架海擎天担重任,同德一心报国恩。


多核增效非万能,单核性能是根本,

乌合之众难逞强,真机实测见原形。


十年提速靠工艺,同频性能涨一成,

春蚕到死丝方尽,四十二年续传承。


假子本是半人马,虽着华服不改姓,

祖宗敝帚难续命,不敌自主莫怨人。


兆芯承运应时生,抢得先机石成金

  2013年,广东云浮主动承担了一项试点任务:在政府部门使用国产计算机设备办公,为将来在全国范围内应用国产计算机设备积累经验。此举释放了一个信号:即将诞生一个政策保护性市场,帮助国内硬件和软件企业积累资金加速技术迭代。

  兆芯前身是台湾VIA(威盛)在上海的子公司。2013时,VIA(威盛)怀着报效祖国的热忱,即使正在严重亏损,也要以饱满的热情与上海国资委合作,把上海子公司升级成合资企业。此举解决国内以往有钱也买不到CPU技术的难题,也使VIA摇摇欲坠的财务状况得以改善。

  当时许多专家认为自主CPU发展多年,但性能和Intel/AMD仍然有巨大差距,将来也追不上世界主流。自主信息化建设“迫切”需要能满足桌面/服务器应用需求的CPU产品,因此,从兆芯开始,国产CPU发展政策全面倾向于引进技术此后,中晟宏芯、华芯通、海光等相继成立,飞腾放弃以SPARC开源IP为基础自主迭代,改用ARM架构。国内最大整机企业联想一向支持主动融入国际,对兆芯、海光、飞腾均有投资。

  VIA的CPU技术远远落后于Intel,产品全面溃败,但国产化替代的专属市场阻断了进口CPU,VIA的产品就重新拥有了地位。掌握在VIA美国子公司Centaur手中的CPU技术,在面对Intel时毫无价值,却明显超过当时国内自主CPU的水平。只要每次交易的成果只比当时的自主CPU高出一线,有限的技术储备就能长期维持兆芯的优势——直到国内自主CPU超过美国Centaur的水平。


  自主CPU虽主频比较低,但每GHz的通用性能在2015年就已经超过了Centaur的设计,Centaur的价值迅速降低。2019年自主CPU主频仍然不高,但每GHz的性能达到兆芯的2倍,单核性能小胜引进技术的产品。Centaur没有老本可吃了,几乎完全失去了存在的意义。剩余的x86技术资料(不含专利权)被VIA在2020年10月出售给了兆芯,2021年11月VIA打包卖掉了Centaur的技术团队,然后又甩卖Centaur的厂房和设备。但VIA仍保留着x86架构授权。因为Intel不允许x86授权扩散和转移,所以就算没有了Centaur,VIA也仍然必须一如继往地支持兆芯。

架海擎天担重任,同德一心报国恩

  兆芯2013年4月27日成立,工信部网站2013年5月3日发布了《核高基重大专项实施管理办公室关于2014年课题申报的通知》。兆芯成立得恰逢其时,赶上了“核高基国家科技重大专项《面向事务处理型桌面计算机关键软硬件研发与规模应用》课题任务”发布。课题描述中对CPU没有了“自主创新”和“自主可控”等要求,取而代之的是“无知识产权纠纷”,“具备良好生态环境”,等新说法。单单“具有良好生态环境”这一条,就把龙芯、飞腾、申威这三家排除在了核高基之外,而引进的VIA 产品因为是x86架构,则具有得天独厚的优势。

  为了解决国产计算机生态、产业化问题,刚刚成立的兆芯勇挑重担,作为牵头企业,带领联想、华力共同承担了这项总计投入57亿的重大任务。57亿多不多?其实不足Intel研发费用的零头!只是在兆芯横空出世之前,龙芯、飞腾、申威这三家十多年间零零星星总共只获得国家20亿资金扶持。但以往的实践证明了“创新的必要条件之一,就是高强度投入”,因此此次需要集中力量支持兆芯。

  兆芯把VIA(威盛)的产品“VIA Nano X2”送去通过了有关专家的鉴定,证明了自己的资格和实力。VIA Nano X2的CPU核心名称是“Isaiah(以赛亚)”,VIA从2005就开始以这款核心为基础不断改进,推出多代多款产品。这次鉴定之后,兆芯把“Nano X2 C4350AL”更名为“开先ZX-A C4350AL”,VIA美国子公司Centaur设计的CPU就名正言顺地成为了国产CPU,Isaiah核心也成了国产自主的CPU核心,技术引进的成功范例。


  我认为只要完成两项基本工作,课题任务就算是攻克了重点难点。

  1. VIA Nano X2 C4350AL/ZX-A C4350AL是40nm工艺,兆芯与华力合作,改用国内的40nm工艺流片。国内工艺重新流片的CPU型号是ZX-B KX-2620。

  2. 联想VX11P-LM主板原本使用VIA Nano X2 C4350AL,可以原位替换成KX-2620。然后再生产整机,安装上国产化的Linux系统,达到一定的销量

  下图中左侧是VIA的CPU和对应的联想主板,右侧是兆芯在国内流片的CPU,以及对应的联想主板。两块主块在外观上的最大区别,是兆芯版的主板左上方印了“ZX”两个字母,便于人们识别和区分。


  这两项重点工作,兆芯、华力、联想可能在2014年或2015年就已经完成。这项耗资57亿的课题,是由兆芯,联想、华力共同申报,华力要到2020年才有28nm量产能力,因此2015年兆芯28nm的ZX-C系列就与华力无关。只有40nm工艺的ZX-B才是兆芯、联想、华力三家共同完成的产品。

  但是因为ZX-B让兆芯成功的落地生根,所以兆芯后来的产品也都被视为对核高基课题的延续,共同享受完成重大课题的荣誉。任何报道中都没有说明兆芯是用哪一款产品交付了核高基课题任务,但与兆芯有关的文字总乐意提到核高基01专项。给人的印象是兆芯每一款产品都是核高基课题支持下的产物,而忽略了对于任何具体的CPU课题任务,都只能用一款具体的CPU产品通过成果鉴定。除非兆芯持续地得到核高基支持,每一系列产品都有专项课题与之对应。

  兆芯为了报答有关部门千金市骨的知遇之恩,接连不断地推出了多个系列的CPU产品,主动争取在国产信息化建设中承担更重大的责任。也只有不断推陈出新,才能驱逐一直紧紧追赶的自主CPU产品。


  上表中是兆芯当前所有的产品系列,可以看出一个规律:

    只要工艺没有提升,CPU的频率就没有提升;

    通过增加核心数量,提高CPU整体性能。

  因为国内CPU企业对7nm这样的新工艺心有余悸,8个核心也几乎是桌面CPU能保证有效性能的极限,所以兆芯2019年之后至今没有新的CPU产品问世。

多核增效非万能,单核性能是根本

  十年前,龙芯、飞腾、申威不约而同把峰值浮点性能众核作为研究重点。因为在当时,用于超算的计算卡、高性能GPU、甚至浮点性能强的服务器CPU,有的已经断供,有的有断供风险。需要自主CPU的浮点性能够强,才能造高性能计算节点、集群、超算。当时自主CPU的浮点性能是世界先进水平,可惜投入有限就只能侧重一面,在通用处理性能方面甚至比不VIA Nano。


  上面的任何一款自主CPU,浮点峰值性能指标都超过i7-980XE,何况CPU的频率还那么低。当然,这些自主CPU的成熟度还不是很高,需要继续迭代。“神威·蓝光”全部使用申威的SW1600、龙芯的3B1500用于“曙光6000”的部分计算节点、飞腾的FT1500用于“天河2号”的前端节点。

  2013年之后,自主CPU科研经费大幅度减少,后来只有申威深耕超算,用SW26010造出了登顶TOP500的“神威·太湖之光”。飞腾转投ARM架构,新产品的浮点性能与其它ARM产品没有区别,放弃了自己的骄傲。飞腾64核的服务器CPU也无法承担超算计算节点的重任,只能用在网络、前端等节点中。但是飞腾的服务器CPU毕竟有64个核心,整体性能在国产CPU中保持了多年领先龙芯专注于提高CPU通用性能,是彻底放弃了超算。

  龙芯2015年发布的3A2000的单核通用性能是3A1000的2.5倍,每GHz的性能比VIA Nano X2高30%以上,缺点是主频只有兆芯同期产品的一半。两年后1.5GHz的3A3000单核性能和兆芯同年的KX-5000系列相当了,但兆芯把核心数量翻了一番。直到龙芯4个核心的3A5000与8核的兆芯KX-U6780A打成平手,因单核性能高,在实际应用方面又能提供更佳体验,龙芯才算扬眉吐气。此时龙芯3A5000单核通用性能已经是3A1000的10倍。

  在桌面计算机中,核心数量远没有单核性能重要。超算无数并行任务中任何一个,对桌面计算机都是灾难。庞大又复杂的工程可以分解出大量可以并行的小任务,就像做满汉全席时,无论10个人还是100人,都能找到事做,各司其职。可要是只炒一盘土豆丝,“洗净”、“削皮”、“切丝”、“入锅”、“翻炒”、“装盘”,这些步骤就只能按顺序进行了。也就“切丝”这一步,可以两三个人并行,能提高一点速度,要是二三十个人来切同一个土豆,反而会消耗更多时间。


  桌面计算机上运行的程序,任务规模小,许多任务都像“炒土豆丝一样”无法拆分成并行处理,只能单核单线程运行。有的任务虽然可以并行,或者同时运行多个程序,可是计算机的软件和硬件,总会有各种因素降低并行性能。无论多少个核心、多少个线程,有的时候甚至只能顺序运行。就像几个厨师都要切土豆,但只有一把菜刀,无论怎么分配,都只有单个厨师的速度越快,总速度才能越快。

乌合之众难逞强,真机实测见原形

  “单核强、核心少”与“单核弱、核心多”的CPU在实际使用中的区别,许多资深电脑用户都有深刻感受。使用专业的性能评估软件,则可以量化它们的差距。

  比如SPEC CPU主要测试“CPU、内存”子系统性能。常说的CPU“通用性能”,指标就是SPEC CPU的int(整数)性能测试成绩。可以只测试单任务,不启用“自动并行化”时就只有一个核心会满负载,只有不启用“自动并行化”的单任务测试,才能代表CPU的单核性能。也可以测试多任务并行,评估CPU的整体性能,此时通常把任务数量设置为核心数量,测试成绩是所有任务成绩的累加。多核并行多任务的总成绩肯定比单任务更高,但平均成绩总是更低。核心、任务越多,平均效率就越低。


  SPEC CPU测试允许测试者优化使用任何编译器、优化编译参数、使用第三方优化库……但是极端优化的测试成绩只能代表CPU能达到的最高性能,却不能代表普通用户能享受到极限性能。上表中的测试都是在用户能获得的系统环境中,使用GCC编译器测试得到的int_base成绩。

  前面说过在2015年时,龙芯3A2000每GHz的性能已经超兆芯同期的产品,但由于未知原因,3A2000使用的工艺比前代产品更加落后,导致频率降低,错失了超过兆芯的机会。但现在龙芯每Ghz的性能差不多是兆芯的2倍,频率也相差不多。兆芯尽管在KX-U6780A中塞了8个核心,整体性能也只是和4核的龙芯3A5000基本相同。

  FT-2000+是64个核心的服务器CPU,因为内存通道更多,所以不用担心在SPEC CPU测试中多任务平均性能低到令人发指。主要原因是SPEC CPU的测试只考验“CPU、内存”子系统,和超算上并行计算的情况类似。

  另一款测试整机性能的工具UnixBench,就更能体现出在实际的桌面、服务器系统中,单核强的CPU所具有的巨大优势。它的测试项目是模拟服务器的日常工作任务,有一些项目的多核提升比例比较低,总的来说单核越强,处理这些工作的速度越快。增加并行任务、核心,给总成绩带来的增加要比单纯的 CPU测试小得多。核心、任务越多,平均效率下降得越厉害。在UnixBench测试中,多核心的平均效率令人抓狂。因为它不是专测CPU的工具,而是测试系统整体性能表现,所以使用的测试用例会放大弱多核的缺点


  上表中FT-2000+和3C5000的成绩来自官方的公开资料,其中因龙芯只公布了3C5000的多任务成绩,故单任务成绩我直接使用了3A5000的实测结果。可以看到,因为3C5000的单核性能是飞腾64核FT-2000+的两倍,就导致了多任务测试中16核的3C5000要比64核的FT-2000+成绩更高。虽然单纯的CPU性能16核比不上64核,但是处理实际事务时,单核强的CPU确实有明显的优势。4核的龙芯3A5000因为整体性能与8核的KX-U6780A差不多,更强的单核在运行各种应用软件时的就会表现得更好。

  前面提到浮点性能,现在桌面电脑上,视频、音频、图像、AI、3D等应用场景越来越多,对浮点性能的需求也越来越高。过去了这么多年,自主CPU的浮点性能有变化吗?飞腾转向ARM之后,原本引以为傲的浮点性能不见了,与其它的ARM CPU没有什么区别。龙芯着重提高通用性能,单核每GHz的浮点峰值还和10年前的3B1500完全一样。申威深耕超算,继续增强浮点,桌面CPU也没有落下,我因没有申威CPU的实物而无法实测,但它现在的桌面产品的峰值浮点和龙芯是相同水平。

  不过峰值浮点是理论值,下面用High Performance Linpack(HPL)实测一下兆芯、飞腾、龙芯当前CPU的浮点性能,并用AMD R5-5600G作为对比。HPL的测试内容是用高斯消元法求解线性方程组,因此测试结果不是理论上的峰值浮点性能。但只要软件环境正常,就可以认为单核的测试成绩与峰值浮点存在比例关系。多核环境下的实测,仍然遵循平均效率随核心增加而降低的规律。


  可以看到与AMD R5-5600G最接近的是龙芯3A5000,单核的平均成绩还更高一些。AMD R5-5600G在测试过程中频率在4.2Ghz上下轻微波动,龙芯3A5000频率只有2.5Ghz。龙芯10年前的浮点性能水平,现在也不算落伍。飞腾D2000和兆芯KX-U6780A都有8个核心,可浮点性能还不到龙芯3A5000的一半,与主流产品的差距不是一星半点。KX-U6780A的单核平均性能比ZX-A C4350AL只高一点,也是因为8核的平均效率总是比2核更低。

  无论是实际的程序运行,还是各种性能测试,都证明了单核性能的重要性。CPU的单核性能等于“IPC × 频率”,IPC就是每个时钟周期(1Hz)执行指令的数量,但对于现代CPU,IPC这个参数已经不适用。因此现在是把使用测试程序得到的CPU单核成绩换算到1GHz,把每GHz的成绩称为IPC或PPC。奔腾4的频率与现代CPU差不多,但因PPC/IPC不到Intel 11代酷睿的1/5,所以在频率相同的时候,奔腾4的单核性能就不到11代酷睿的1/5。

  CPU的IPC比频率更加重要,因为IPC代表了CPU核心的设计水平,频率则只要使用更新的工艺,就几乎一定能得到提升。国产CPU暂时不能使用更加先进的工艺,也没有海量资金反复流片刷经验改进后端设计。何况CPU核心设计一旦有变化,上一代产品的后端优化成果不一定可以沿用,因此Intel每代产品都要花费数十亿美元。现在国产CPU的IPC和Intel还有很大距离,最需要的是迭代核心提高IPC,而不应该过余关注每款产品的频率。如果CPU核心长期没有重大改进,而只寄希望于更好的工艺,那就是本末倒置了。

  CPU的核心设计会影响提高频率的难度,通常IPC越高,频率就越难提高,但也不是决定性的因素。因为Intel的CPU不但IPC比国产CPU都高,频率还能超过5.0GHz。国产CPU远没到与Intel/AMD比拼频率的时候,先把PPC/IPC提起来,再花费巨资提高频率才不是资源浪费。后端(物理)设计的优化水平、生产工艺的先进程度,未来很长时间我们都和Intel/AMD比不了,但是提高PPC/IPC主要靠单纯的设计能力,是比谁的脑浆子更耐烧,烧脑浆子咱们怕过谁?

十年提速靠工艺,同频性能涨一成(从ZX-A到ZX-E)

  Nano X2 C4350AL是VIA于2011年发布的产品,兆芯的型号叫ZX-A C4350AL。同年Intel发布了酷睿i系列的第二代产品,2011年发布了第11代,10年时间,Intel的IPC提升约50%,同档产品主频提升约35%,单核性能大约是10前的2倍。龙芯2011年发布了3A1000,10年后的3A5000主频是3A1000的2.5倍,IPC是4倍左右,单核性能是10年前的10倍,提升幅度能这么大,既说明龙芯确实努力,也说明起点确实很低。飞腾和申威早期CPU实物和资料都不好找,不好评估性能增长。

  连高处不胜寒的Intel都在10年间把单核性能翻了一番,IPC提高了50%。 那么,从ZX-A C4350AL到现在兆芯最高性能的KX-U6780A,兆芯CPU的单核性能和IPC提升幅度又有多少呢?

  ZX-A C4350AL使用40nm工艺,双核,标称主频1.6Ghz,睿频1.73GHz。KX-U6780A是16nm工艺,8核,主频2.7GHz。在它们之间还有几代产品,下表中整理了每一代产品的典型型号相关信息:


  随着生产工艺越来越先进,兆芯的CPU频率和核心数量也水涨船高。虽然看起来兆芯CPU的频率只受工艺影响,但也提高了56%。提高幅度比Intel高,也是因为起点低。兆芯IPC的起点是龙芯3A1000的2倍,但和Intel还差得很远。以挤牙膏闻名的Intel都把IPC提高了50%,兆芯从ZX-A C4350A到KX-U6780A又提高了多少?

  上面已有这两款CPU的部分测试成绩,下而会对它们进行更多项目的测试,所有的测试都只记录单核单线程的成绩。为了展示IPC的提升,下表中还会把它们的测试成绩归一化到1GHz进行对比。两款CPU的频和它们所使用的内存频率相近,因此可以视为内存性能和CPU频率同步提升。



  从上表中的测试成绩来看,相对于C4350AL,KX-U6780A在Windows10下要比UOS(Linux)下的提升大一些,其实本质的原因是Windows10系统本身的消耗比UOS高,C4350AL又比KX-U6780A弱,性能中被Windows系统消耗掉的比例就更高。在UOS下CPU被测试程序使用的比例更高,测试成绩能更加准确地体现出两款CPU的实际性能差距。

  从测试情况来看,性能差距最大的测试项目是GeekBench,在Window下和UOS下增幅都超过了80%,每GHz的性能提升分别为20%和16%,两者都是在UOS下的测试成绩更好。对GeekBench的每个测试子项单独对比,发现是因为KX-U6780A增加了用于AES加密的x86扩展指令,使AES加密的速度提高到了25倍,每GHz的速度是原本的16倍。但是其它测试子项的提升幅度这么高,成绩浮动范围和另外那些测试程序差不多。下面是测试后在GeekBench网上进行成绩对比时截的图,为了避免图片占太多篇幅,只截取了一小部分:


  从其它的测试项目来看,每GHz的成绩提高幅度都在10%左右,特别是SPEC CPU的测试成绩,最为准确地验证了KX-U6780A相比于C4350AL,IPC提高了10%

  从VIA Nano X2 C4350AL(兆芯 ZX-A C4350AL)到KX-U6780A,IPC不是一成不变,而是变了一成。因为KX-U6780A的缓存增大很多,所以核心似乎有改进,又似乎没改进,VIA和Centaur的技术支持似乎不以核心技术为主。

春蚕到死丝方尽,四十二年续传承

  兆芯CPU从ZX-A和ZX-E都一直在依靠工艺提高频率,而IPC只提高了10%左右。继续更新工艺的路线又被暂时阻断,继续提升CPU性能就会比较艰难。这种时候,就更加显出与VIA合资的前瞻性。虽然设计CPU的能力买不到,但只要能买到更多更好的技术也行。

  VIA为了让兆芯更加尊重知识、珍惜技术,即使是落后的技术,VIA也会用高昂的价格体现知识的价值。

  2020年10月,兆芯又花了17亿人民币向VIA购买技术。

    包括“部分x86芯片组相关技术、资料等IP产权(不含专利权)”。

    还包括“部分x86处理器相关技术、资料等IP产权(不含专利权)”。

  VIA已经离开主流电脑市场十几年,芯片组技术也至少落后了主流十几年。现在才把相关技术转让给兆芯,可能是为了避免拔苗助长,才敝帚自珍

  这次出售的x86处理器IP肯定会比兆芯现有产品优秀,但也不可能有多强劲。因为Centaur无论是在被VIA收购之前还收购之后,所设计的CPU都只和Intel的低端产品竞争。

  这次交易掏空了VIA所剩无几的技术储备,Centaur新设计的CPU核心也没能超过国内自主设计的水平,因此Centaur已经失去了继续存在的价值。

  VIA在2021年11月把Centaur的技术团队卖给了Intel,之后又出售厂房和设备,完全放弃了继续研发CPU的能力。自主CPU其实几年前就已经超越了兆芯,兆芯的压力令VIA感同身受——Centaur最后的心血,仍然落后国内自主的对手一筹!!!

  业务可以放弃,公司可以解散,但是传承绝对不能断绝。VIA把所有的x86技术储备都交给了兆芯,取代Centaur继续这一脉的传承。只是由于x86架构授权不能转卖,VIA就不能彻底放手离开兆芯,否则兆芯就不能合法地设计、生产、销售x86架构的CPU产品。

  兆芯的传承起至1980年,那一年美国Integrated Device Technology(IDT公司)成立。1988年美国Cyrix公司成立。这两家公司都设计x86架构CPU,以性价比与Intel产品竞争。

  威盛(VIA)在1999年6月先后买下Cyrix微处理器设计部门和Centaur(从前的IDT)后,合并为VIA在美国的处理器研发总部,仍然叫作Centaur。这是第一次传承转移,然后VIA把Centaur在x86方面的技术成果全盘出售给兆芯,完成了第二次衣钵传承。

  从1980年至今,兆芯能追溯的“商业化半导体器件设计历史和技术传承”已经42年。

假子本是半人马,虽着华服不改姓

  VIA美国设计中心Centaur,中文意思是“半人马”。它在被VIA抛弃前产出的最后精华,就是Centaur在2019底发布的x86 CPU核心,内部代号是CNS。Centaur把自己设计的AI模块与CNS核心集成在一块CPU上,CPU的代号是CHA。CHA在2019年就有了样品,7nm工艺,8核主频2.2GHz。兆芯不需要AI模块,假如它使用CNS核心开发自己的产品,我觉得至少会把AI模块换成GPU。

  下面的截图是来自GeekBench网站的CPU信息。左边是兆芯ZX-F,兆芯现有的CPU产品从ZX-A到ZX-E,ZX-E就是KX-6000系列。那么ZX-F就一定是KX-7000系列——兆芯的下一代产品。右边是Centaur的CHA,两者的标题上都有“CHA001”这个代号,虽然两款CPU的名称有区别,但“Processor ID”都是“CentaurHauls”,一点都不含糊。x86架构中有一个cpuid指令用来读取CPU信息,下面关于CPU的信息都是使用cpuid指令得到的。


  GeekBench网站上的“Processor ID”包含了“Vendor ID”、“Family”、“Model”、“Stepping”这几个部分。“Vendor ID”也叫“厂商ID”,是CPU核心设计厂商的标识,就是谁的孩子跟谁姓,代表着血脉传承。Intel的都是“GenuineIntel”,AMD的都是“AuthenticAMD”。VIA/Centaur/兆芯的“Vendor ID”都是“CentaurHauls”。

  用“Family”、“Model”进一步确定CPU核心的身份,就和“三姨太的二儿子”意思差不多。“Stepping”是标识核心的改进版本,与其它信息共同组成了CPU核心的唯一身份标识。每一款核心可以派生出多个型号的产品,每款产品有不同的名称/型号,就像换上校服叫“小明”,内裤外穿叫“超芯”那样,只有CPU核心的身份标识可以识别真身。

  兆芯自称自主设计,但“Vendor ID”却不是“Zhaoxin”。因此就有一些人污蔑兆芯不修改“Vendor ID”是为了占便宜,他们说有些软件会根据“Vendor ID”来判断是否启用程序中的针对性优化,那些软件可能会认“Centaur”但不会认“Zhaoxin”。

  这是无稽之谈,在VIA Nano还活跃的年代,确实出现过一款优化开关代码写法错误的软件,因为忽略了VIA,没有给予VIA与Intel/AMD相同的待遇而被VIA在媒体上控诉。可那是“忽略了VIA”,而不是优待VIA。并且是由于代码用了错误的方式判断优化开关才造成了错误的结果。

  正常的优化开关代码绝对不会把“Vendor ID”作为判断条件,就算加上其余的能确定核心身份的信息也不行。因为那需要程序员知道所有型号CPU的详细信息,已有的CPU资料还可以收集整理,未来的CPU怎么办?

  要是仅仅检查“Vendor ID”,那甚至不能区分Pentium4和12代i9,它们都是“GenuineIntel”。正常的x86程序优化开关代码,都是使用cpuid指令读取CPU提供的一系列标志位,每个bit代表一种扩展指令,0表示不支持,1表示支持。下图是Linux下用lscpu命令列出的KX-U6780A的CPU信息,“标记”栏目中列出了它支持的扩展指令。唯一正确的优化开关判断,就是检查CPU是否支持有对应优化代码的扩展指令。


  因此兆芯不改“Vendor ID”绝不可能是为了蹭优化,而是因为“Vendor ID”代表了传承,不能忘本。

祖宗敝帚难续命,不敌自主莫怨人

  下面我们来盘点一下VIA收购Centaur之后发布的产品,兆芯占了相当大的比重。

  CPU核心信息除了“Vendor ID”之外,还有核心名字和核心代号。核心名字用于对外宣传,核心代号一般内部使用。从VIA Nano系列开始,使用名字为Isaiah的核心,同时更改了核心代号的命名规则,并沿续至今。

  新的核心代号取自Centaur中的两个字母——CN,第一代Nano的核心代号为CNA,然后是CNB,以此类推。但是在轮到CND时Centaur决定命名为CNQ,跳过了中间的字母。因为以CNQ为核心的是Centaur的第一款4核CPU,于是使用QuadCore的首字母来命名核心代号,但后面的核心代号仍然沿用字母顺序规则,例如CNR,以及2019年Centaur发布的绝唱——CNS。

  VIA的第一款产品距今太久,我既找不到实物,也难找到详细资料,“Family”、“Model”、“Stepping”这三项代表核心版本的信息缺失,但后面的产品资料都比较完整。



  从这里开始,正式使用“CN”前缀来命名CPU核心代号。依次为CNA、CNB、CNC、CNQ、CNR、CNS。其中CNS是Centaur的最后一款x86核心,极有可能成为兆芯的ZX-F。因为CNC就是兆芯ZX-A、ZX-B的核心,CNR是兆芯ZX-C、ZX-D、ZX-E的核心,那么只要不出意外,ZX-F的核心就应该是CNS。



  从这里开始,兆芯准备登场。兆芯的第一款产品,就是把VIA Nano X2 C4350AL重新命名为ZX-A C4350AL,然后以兆芯的名义销售。


  兆芯的ZX-B KX-2620和ZX-A C4350AL是相同的设计,不过是使用国内工工艺流片,市面上很少见到。


  VIA QuadCore 系列其实是两个 Nano X2组成的胶水4核,但Centaur可能觉得很有纪念意义,CPU核心的代号跳过了很多字母,直接命名为CNQ。


  下面的VIA Eden X4 和VIA QuadCore都是VIA没有正式发布的型号,它们其实是同一个系列。兆芯的ZX-C也是指的这个系列,型号规则也与VIA相同。这是核心代号CNR 的第一次亮相,也是VIA/Centaur/兆芯的第一款真4核的CPU产品。

  这一列表CPU很有意思,因为兆芯声称这是国内团队自主设计的产品,Centaur又称是他们设计的,还专门拍了一个记录片。

  兆芯对ZX-C的介绍是:“ZX-C系列处理器是兆芯自承接国家“核高基”重大专项之后的重要成果之一,其整个研发流程都由本地员工组成的研发团队在国内完成,实现了全部研发流程的透明可控,是一颗真正意义上的国产X86通用处理器。”

  Centaur在纪录片《半人马的崛起》中介绍了一款CPU的设计和流片,以及封装测试过程。视频中 Centaur 员工说“这是我们伊今为止设计得最好的CPU……它是销售到中国的关键”。视频中封装完成的CPU的外型、尺寸、颜色以及封装、甚至表面几个贴片元件的位置都和兆芯的ZX-C一模一样。

  下图那块斜着的CPU就是从《半人马的崛起》视频中截的图,摆正了的照片是兆芯的C4600。


  下面这张经销的商的展示图上,明确写着:“架构:CNR”。这里的“架构”是指“微架构”,此处属于误用。在计算机科学专用名词中,“架构”实际上是“指令集”。


  如果ZX-C/C+说不清楚到底是不是自主设计,那么后续的KX-5000/6000也就同样说不清楚是不是自主设计。自家的孩子怎么能姓“CentaurHauls”?“Centaur”中文名叫“半人马”,又不是什么好词!!!


  KX-6000系统和KX-5000是相同的CPU核心,是换了工艺提高频率的版本。


  下面就是Centaur的CHA,使用了它最后设计的CNS核心,集成了AI模块。这款CPU没有作为商业产品发布,Centaur发布的是它的核心和AI模块。下面的实物照片是Centaur的样品,如果兆芯使用CNS核心开发新产品,外观不一定相同。


  下面是CHA的版图照片,左边中间是CPU的8个核心,右边是AI模块。兆芯如果以CHA为蓝本,我觉得至少会把没什么用的AI模块抠掉,换成GPU核心。


  据已知信息推测,CNS核心的IPC大约和龙芯3A4000等同,他们都于2019年年底发布。不过龙芯发布的是产品,Centaur发布的是CPU核心设计指标和样品。Centaur的样品使用了7nm工艺,但主频仅达到2.2GHz,单核性能介于龙芯3A4000和3A5000之间,不过3A4000和3A5000仅分别为28nm和14/12nm工艺。

  兆芯很可能不会使用7nm工艺,那么原本按照7nm工艺设计的核心,如果改退到12~16nm工艺,频率必然下降,功耗必然上涨,单核性能必然降低。本来单核性能就与龙芯3A5000存在差距,再下降一些就只能和龙芯3A4000匹敌。何况龙芯研制中的下一代产品仍然使用14/12nm工艺,预计IPC会提升30%,频率提升10%,就更让前途未卜的CNS望尘莫及。兆芯ZX-F KX-7000系列产品有可能遥遥无期。

  声明:本文中对所有CPU的性能测试成绩只有两种来源:一是本人自己测试,二是官方公开资料。自测试的成绩反映表本人购买的设备的实际性能,不保证不存在个体差异,若质疑测试成绩过低或过高,可通过视频连线对质同款设备测试过程。本文其它资料来自对媒体公开报道的收集整理,不存在断章取义和臆造。


顶部