龙芯和飞腾新品即将面世 新一代“中国芯”如何?

半导体新闻

66人已加入

描述

  据公开消息,龙芯和飞腾最新的产品都与去年年底开始流片,也就是说,新产品即将与国人见面。那么,在飞腾的ARM芯片和龙芯3A3000即将完成流片之时,笔者将从自主知识产权、裸CPU性能和软件方面对飞腾和龙芯上一代产品——飞腾1500A和龙芯3A2000做一个对比,特别是之前有媒体对比龙芯3A2000和飞腾1500A总体上比较客观,但在局部也有一些纰漏,笔者趁机在此做一下修正。

  

  |先从自主知识产权谈起

  检验自主可控的标准——信息安全不受制于人,产业发展不受制于人。因此,这就必须做到具有指令集的发展权、微结构是自主设计、利润不受制于人等要素。

  指令集的发展权

  龙芯的指令集是loongISA,共有共1907条指令。

  源自MIPS:

  216条MIPS基础指令,获得永久授权。

  311条DSP指令,获得永久授权。

  自主指令:

  MIPS基础指令扩展——148条loongEXT,

  虚拟机扩展——5条loongVM指令,

  二进制翻译扩展——213条loongBT,

  向量指令扩展——1014条loongSIMD

  显而易见,龙芯获得的是永久授权,并拥有自行扩展指令集的权力。另外龙芯还就此申请了100+专利。而在MIPS公司破产后,被Imagination收购,虽然在嵌入式芯片方面有P5600这样的产品,但至今却未曾开发高性能CPU,有步惠普收购康柏进而获得Alhpa的后尘之趋势。

  这直接导致龙芯是MIPS阵营里唯一的高性能CPU,加上龙芯不失时机的向开源组织捐献了一批机器,致使一些开源软件以龙芯作为MIPS的代表做适配。

  因此,在Imagination发展力度小+龙芯获得MIPS永久授权+自行扩展指令且申请专利+开源软件针对龙芯做适配,共同导致龙芯在指令集上受MIPS的钳制已然微乎其微,基本可以为认为走上了单飞的道路。

  而国内ARM阵营IC设计公司仅仅能购买ARM64指令集,而无法买到ARM32位指令集授权,而且ARM64指令集授权期限为5年,没有自主扩展的权力,也仅仅能用于设计服务器芯片。

  微结构是否自主设计

  龙芯3A2000的微结构是GS464E,芯片代码均自主设计,除标准单元和Memory Compiler生产的RAM之外,不存在第三方IP。

  而飞腾1500A的微结构是ARM Cortex A57。由于芯片的安全性、性能、功耗很大程度上取决于微结构,因此很难说飞腾1500A符合安全可控和自主知识产权的要求。当然,也有网络消息称飞腾1500A用的是飞腾自主设计的“小米”,与“火星”、“地球”是同一个微结构,但笔者认为此消息为谣传,具体原因在下文分析。

  利润不受制于人

  购买ARM指令集授权的价格非常昂贵,据笔者了解仅仅ARM64指令集每5年的授权费就高达上千万美元乃至近亿美元。而恰恰是如此高昂的授权费致使由U.C. Berkeley等几个大学推出RISC-V指令集,Google、惠普、Oracle、西部数据等公司成立RISC-V基金会的原因——

  RISC-V指令集是一个没有专利问题和没有历史包袱的全新指令集,并且以BSD许可证发布。任何公司都可以在自己的产品中免费使用,而修改也无需再开源。

  购买ARM IP核授权,比如ARM的A53或A57,集成自己的SOC,这种做法虽然能依附于AA体系,有利于市场化运营,能赚快钱,但在利润方面也被外商控制。因为在购买IP要支付授权费,每生产一片芯片还要支付专利费。而且每个环节做什么,有多少利润,在AA体系中已经形成潜规则,国内IC设计公司依附于AA体系基本上沦为外商的马仔。这也是国内ARM阵营IC设计公司虽然营业收入不低,但利润普遍不高的原因之一。相比之下,龙芯不仅不需要向MIPS公司购买IP,反而可以对外出售IP,海信、海尔就向龙芯购买了200万套IP用于智能家电和机顶盒。

  下图为懒人包,简要概括了龙芯3A2000和飞腾1500A在知识产权方面的差别。

  龙芯

  飞腾1500A的微结构是A57

  有网络消息称飞腾1500A用的是飞腾自主设计的“小米”,与“火星”、“地球”是同一个微结构,不过笔者认为此消息为谣传,主要有以下几点:

  1、时间上来不及

  众所周知,如果一款CPU从头开始设计,研发周期一般要3年,而如果像海思、展讯那样购买ARM的IP授权做集成,研发周期也要1年至2年,而飞腾在购买ARM 64位指令集授权后,不到2年的时间里就拿出了飞腾1500A,就开发周期来看,飞腾1500A这款芯片很有可能是直接采用ARM Cortex A57。

  2、飞腾1500A与“火星”的SPEC2006测试成绩差距过大

  根据第三方测试,飞腾1500 spec06测试的整数为10(@1.8G),换算一下就是5.5/G,而根据飞腾在2015年的发布后上公布的消息,“小米”的测试结果是9.6/G,虽然不谈测试环境的SPEC测试跑分都是耍流氓——因为不同的测试环境的原因,SPEC测试分数会有一定浮动,但74.5%的跑分差距实在过于骇人——即便是技术实力强如Intel,在拥有ICC的神优化,以及向量指令优化等因素的情况下,也只能是自己CPU的spec06测试整数跑分增加40%。因此,笔者认为飞腾1500A的微结构并非“小米”。

  3、时间对不上

  据公开消息,飞腾1500A在2014年流片,2015年与体制内单位签订的合同标为1000万元,而“小米”和“火星”目前还依旧在流片。在发布会上,火星的SPEC06测试也只有模拟器成绩,而非实物。

  4、ARM在指令集授权中会配套一个内核

  虽然飞腾和ARM的合同上没有购买IP内核授权的内容,但由于ARM在做指令集授权的时候都会给出配套的一个内核参考。因此,有人以合同没写明购买IP核,所以飞腾1500A的微结构为自主设计的辩解无法成立。

  当然以上都是笔者的猜测。鉴于飞腾1500A已经商用,希望飞腾能公开飞腾1500A的用户手,提供内部寄存器等定义资料。效法龙芯将CPU的用户手册和技术资料放在网上供国人自由下载,以打消国人的疑惑。

  | 裸CPU性能指标对比

  裸CPU性能将用单线程性能、多线程性能以及访存性能等主要指标进行对比。

  单线程性能

  龙芯3a2000的微结构为GS464E,根据中电集团的报告显示:

  龙芯GS464E在使用GCC4.8编译器跑分为:整数768/G、浮点1153/G;

  龙芯GS464E使用LCC编译器跑分为:整数828/G、浮点1578/G。

  而龙芯的主频恰恰为1G,因此,GCC4.8编译器跑分为:整数768、浮点1153;LCC编译器跑分为:整数828、浮点1578。

  龙芯

  而因为测试环境不同,ARM Cortex A57的测试分数则比较多,华为在麒麟950发布会上就给出A57 Spec2000整数跑分780/G的测试成绩。

  龙芯

  而根据国外网站对三星7420的实测,笔者将12项测试成绩累乘,再开12次方后得到分值为1376.8分,再除以7240中A57 2.1G的主频,得到跑分为655/G。而根据另一个测试,A57的测试跑分甚至不足600/G,浮点跑分为700+/G。

龙芯

  这些测试分数差距的原因就在于不同的测试环境——毕竟开启auto parallel会将原本单线程执行的程序并行化给多个处理器执行,导致SEPC2006整数分数增益。另外,编译器的不同,是否定制编译优化策略等都会对跑分结果造成很大影响。

  考虑到华为公布的SPEC分数一向偏高——华为公布的A72 spec2000 整数跑分为820/G,而根据国外网站实测,麒麟950的实测成绩,A72 spec2000 整数跑分为749/G。笔者猜测,华为公布的A57 spec2000 780/G, A72 spec2000 820/G,A57 spec2006 6/G,A72 spec2006 6.7/G很有可能是使用ARMCC编译器,并在最优测试环境下,得出的结果。

  

  另外,就某网文中的SPEC06测试成绩而言,A57 sepc06 整数5.5/G,GS464E sepc06 整数6.5/G都并非在最优环境下测试的分数。根据华为公布的数据,A57 sepc06整数为6/G,A72为6.7/G。据笔者了解,龙芯GS464E sepc06整数最优环境下测试成绩为7.5/G。

  因此,笔者选择一个适中的测试跑分:整数655/G,浮点分数因为华为和国外网站都没有公布跑分,笔者以上图测试中的700+/G适当上浮。飞腾1500A的主频为1.8G,那么最后的测试结果为整数1179,浮点1300+。

  很显然,虽然GS464E强于A57,但由于飞腾1500A在主频上比龙芯3A2000高80%,使得最终在整数跑分上,龙芯3A2000即便使用LCC编译器测试成绩,面对飞腾1500A依旧略逊一筹。

  多线程性能和访存性能对比

  在同使用GCC编译器下,飞腾1500A(@1.8GHz)SPEC CPU 2000 rate成绩为:整数41.5,浮点34.

  而龙芯3A2000(@1GHz)的成绩为:整数30.9,浮点43.9。

  在使用LCC编译器后龙芯3A2000(@1.0GHz)整数34,浮点60.7。

  很显然,龙芯3A2000虽然在主频上处于劣势而导致在整数上低于飞腾1500A,但在浮点性能上却异常强悍。

  至于访存性能,则如下图,优劣一目了然。

  飞腾1500A (1.8GHz,四核) VS. LS-3A2000 (1.0GHz,四核):

  龙芯

  | 软件生态情况

  龙芯和飞腾在软件生态上选择了完全不同的道路:龙芯选择尝试主导生态建设,并在软件上投入了很多精力。而飞腾选择兼容ARM生态,采取跟随ARM产业生态的策略。

  操作系统

  国内支持龙芯的操作系统有中标麒麟、普华软件、深度软件、开源社区(Fedora、CentOS、Debian、Loongnix社区版),国内支持飞腾的操作系统有中标麒麟和Ubuntu。

  办公软件

  实际测试显示,在政府机关使用最为广泛的办公软件上,使用龙芯3A2000打开一个1M的word文件,需要2秒,而使用飞腾1500A则需要3秒;打开一个10M的word文件,龙芯3A2000需要3.5秒,而飞腾1500A需要8.2秒。在PPT的使用上,龙芯也处于优势,打开同样一个PPT,龙芯3A2000所消耗的时间几乎只有飞腾1500A的一半。不过,在电子表格上飞腾具有优势,特别是在打开20M的电子表格的情况下优势异常明显。

  龙芯

  JAVA虚拟机

  JAVA虚拟机(JDK)是服务器上的重要平台软件。飞腾的JAVA虚拟机依赖于国外的开源软件代码,国内没有开发团队,一旦出现深层次问题无法维护。

  龙芯在JAVA虚拟机有核心开发队伍,并为开源社区贡献8.4万行代码,累计已解决8个在X86平台同样存在的JAVA共性问题,经过实际用户检验,能够保证企业级的稳定性。

  浏览器

  浏览器是桌面操作系统上的重要平台型软件。ARM的浏览器(Chrome、Firefox)国内没有专业开发团队,飞腾则因为跟随策略在此碰壁。

  龙芯在两大浏览器(Chrome、Firefox)平台有专门开发团队,而且做了大量工作:

  在HTML5、WebGL、WebRTC、Flash以及各类插件上有着专业支持;

  在Firefox浏览器社区,龙芯是ionMonkey开发的重要力量;

  在Chrome社区,龙芯是社区的全球14家主要成员厂商之一,是JS引擎的核心开发厂商,累计向社区贡献4万行代码,因此龙芯在JS引擎性能对比上自然可以获得更大的优势,具体性能对比如下图:

  龙芯

  从实际测试结果中可以看出,虽然在性能上龙芯3A2000和飞腾1500A差距不大,但龙芯却能在JS引擎性能对比上大幅优于飞腾,其原因就在于软硬件整合优化——用户最终的体验是软件+硬件,相对于飞腾在软件上跟谁ARM,只能是别人给你什么,你用什么,而龙芯则恰恰相反,选择了自建生态,这使得龙芯可以获得软硬件磨合优化的机会。

  正如数年前那个CPU性能相对有限的时代,苹果能依靠基于FreeBSD/Unix二次开发的IOS,基于ARM的授权修改/开发CPU,使苹果可以对自己开发的CPU和操作系统进行系统优化,并依靠软硬件优化取得优于安卓用户体验。同理,在国产CPU性能普遍不强的当下,对软件的优化和软硬件磨合相对于硬件上5%—10%的提升更为关键。因此,相对于党政军办公常用的软件和用户体验而言,龙芯相对于飞腾的优势,则如同早年苹果相对于安卓的优势。

  | 结语

  可以看出,在硬件方面,飞腾得益于主频比龙芯高80%,因而在整数上具有优势;而龙芯的浮点性能指标颇为亮眼;在访存性能上,龙芯则有很大的优势。在软件上,虽然飞腾可以跟随ARM产业生态发展,傍上了ARM这个大款,但就党政军办公而言,龙芯相对于飞腾更有优势。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分