真心不给力吗?国产龙芯跟Intel差距到底在哪儿?


近年来,国内集成电路设计制造商层出不穷。 有龙芯、腾飞、神威等老牌设计单位,还有赵信、洪欣等新来者,海斯、展讯等ARM阵营制造商,在商业上非常成功。 但是英特尔在性能上一直保持着超越各种国产芯片的巨大优势,那么国产芯片和英特尔芯片之间的差距在哪里呢?

如何评估每个家庭的CPU性能?

作为消费者,自然希望CPU尽可能便宜,性能尽可能高 那么,什么样的中央处理器具有高性能呢?从架构的角度来看,有一个名为MIPS的指标,即每分钟执行多少条指令,执行的指令越多,性能越好。然而,有一个问题。当中央处理器指令集不同时,比较微处理器是没有意义的。例如,一条指令只是加法,一条指令可以做1024点快速傅立叶变换 特别是在不同指令集的情况下,如何评估每个指令集的CPU性能?

评估CPU性能必须考虑应用程序的多样性。例如,科学运算重视双精度浮点性能。然而,如果数据不可用,拥有强大的计算能力是没有用的。例如,个人电脑的日常使用更注重整体性能。另一个例子是计算中心的多任务环境关注吞吐率.因此,只用一个指标来衡量中央处理器的性能是不科学的,必须综合考虑。

该行业还推出了许多基准程序,如处理器专用规范(SPEC)和嵌入式应用专用以太网多媒体广播(EEMBC)等。 规格测试是一个权威的测试程序。与一些黑盒测试程序不同,SPEC测试程序在运行和评分方法上都是开放和透明的,覆盖面很广,达到SPEC2000。有12个定点程序和14个浮点程序,它们很有代表性,如gzip、vpr、gcc、mef、eon等。

什么是规格测试?

SPEC使用归一化几何平均法对分的综合性能进行评估,并将不同CPU的执行时间与参考对象进行比较,得到相对值

SEPC2000的参考对象是超SPARC 2工作站中主频为300兆赫的中央处理器。 如果测试程序1的运行时间是参考对象的十分之一,则测试为1000点,测试程序2消耗的时间是参考对象的八分之一,则为800点.最后,如果几何平均值(如SEPC2000)有12个定点测试,则12个测试结果将再乘以12次方。因此,测试更加注重性能平衡,因为如果某个测试有一个短板,测试的最终分数会大大降低,最极端的情况是某个测试有0分,即使其他测试分数更高,总分数也会是0分。

然而,规范也不是完美的,存在一些问题,例如没有检查输入/输出带宽和运行点容易受到编译器的影响。

例如,龙芯的上一代微结构由于内存访问问题能够在SPEC2000上运行。但是,当SPEC2006运行较低时,GS464E解决了内存访问问题,该问题并不存在,因为SPEC2000对输入/输出带宽的要求较低 在编译器方面,SUN曾经通过编译器优化将SPEC分数提高了50%,龙芯上一代产品使用了LCC编译器,与GCC整数分数相比提高了60% 即使也使用GCC编译器,由于版本不同或优化级别不同,也很难进行最准确的评估(GCC代码由英特尔提供,这是X86优化的最佳选择,ARM市场份额大,优化效果好,而MIPS和ALPHA优化相对一般)

SPEC测试与高考非常相似。虽然它有各种缺陷,但它具有覆盖面广、公开透明的特点。它相对公平,可以作为一个相对合理的评价测试程序。

不同指令集的中央处理器比较

作者为X86、ARM、MIPS和ALPHA指令集的中央处理器制作了如下表格

编译器除龙芯确认GCC4.8,未知编号VIA的白皮书未指明测试中的GCC版本,其他编译器作者推测:神威可能是SWCC;I3 550和I5 4460可以是GCC5.1 因为这只是作者的猜测,为了精确起见,编译器选择了空白色。 (ICC是英特尔的编译器,可以使用X86芯片;LCC是龙芯的编译器;SWCC是神威的编译器 英特尔和AMD芯片用作参考)

(由于编译器不一致,该表仅供参考)

从表中可以看出,当使用GCC编译器时,megacore、shenwei、fetten SEPC2000 test和英特尔仍然有相当大的差距。spec2000测试分数最高的GS464E只有在使用LCC编译器时,整数和Nehalem之差为50分,浮点和haswell之差为70分 就主频而言,国内集成电路设计公司的最高主频只有2G,与英特尔和amd以上的主频相差甚远

因此,家用中央处理器和英特尔的区别不仅仅在于主频 即使超级内核ZX-C可以达到3G以上的主频,微结构的差异仍然只有I5 4660性能的40%左右。因此,微观结构非常重要。可以说,中央处理器的安全性、性能和功耗在很大程度上取决于微观结构。AMD在相同主频下的CPU性能不如英特尔,这在很大程度上也是由于微结构的差异。

消费者购买中央处理器时,通常只关注主频、芯数、制造工艺等参数,忽略微观结构。此外,英特尔多年来已经开始从SNB挤出牙膏,这使得微结构更新很少以提高性能,导致微结构的重要性更加被忽视。

微结构差距的原因

因为宏、兆芯、海斯和展讯目前没有自行设计的微结构,让我们将龙芯和腾飞的最新两款产品与英特尔进行比较。 根据GS464E和IVY之间的差距,可以通过比较下表中的参数找到原因。

如果将GS464E和IVY进行比较,可以发现限制GS464E性能的最大短板在定点传输队列和浮点传输队列中。与IVY的54个定点和浮点传输队列相比,GS464E只有16个定点传输队列和24个浮点传输队列

龙芯也知道这一点。将3A3000目前的流芯片提升到GS464E的瓶颈,将定点传输队列从16项增加到32项,将浮点传输队列从24项增加到32项,并增加缓存和主频 显然,尽管龙芯声称TICK-TOCK,3A3000并不仅仅是比3A2000提高了主频。定点和浮点传输队列的升级必然会带来IPC的升级

根据fit发布的Spec 2006模拟器测试,整数为9.6/克

9.6/克是多少?以英特尔为参考,在关闭自动并行时,使用GCC5.1在2006年规格中获得了32分(

3.2G主频)。 换句话说,“小米”能接近哈斯韦尔吗?

开启自动并行将导致SEPC2006整数分数增益,因为它将最初由单个线程执行的程序并行化到多个处理器,增益效果取决于编译器、CPU内核数量等因素。 然而,相当多的常用代码不支持自动并行。 因此,目前自动并行对SPEC评分更有意义。 “小米”SPEC2006的总数高达9.6个/克,这可能是测试中自动并行的结果。证据呢?

(数据网络收集,仅供娱乐)

从上表中“小米”和IVY的比较来看,“小米”和IVY仍然有很大的差距,目前的情况是定点传输队列和浮点传输队列相对少于像GS464E这样的IVY,所以在资源有限的情况下达到haswell级别的概率很小。

与“小米”和GS464E相比,假设两者的流水线效率相当,作者认为“小米”可能是GS464E的一个等级微结构,比ARM Cortex A57更强。 当然,如果管道效率低下,“小米”也可能不如GS464E。 然而,“小米”32M L2缓存可能是特定于服务器甚至高性能计算的结果。

目前,腾飞的《地球》和龙芯3A3000都是流媒体电影,期待《地球》和3A3000流媒体电影回归后的表现。