上月,龙芯发布了新一代桌面CPU 3A6000,在单核性能上打平i3-10100F,其IPC追平了13代酷睿。紧接着,麒麟9000S问世。最近,有人向龙芯首席科学家胡伟武提问,龙芯3A6000和麒麟9000S孰强孰弱,对于这个问题胡伟武回答的比较委婉,说龙芯应该和英特尔、AMD比,麒麟应该和高通、苹果比。有鉴于此,铁流从技术上分析一下,两款芯片的差异。
龙芯是CPU 麒麟9000S是SoC
其实,胡伟武的答复是充满智慧的,因为这既避免得罪人,又说明了龙芯和麒麟的差异。
龙芯3A6000是一款桌面CPU,由于电脑空间大,GPU、桥片都可以布置在主板上,集成度不高。麒麟9000S是一款手机SoC,由于手机对空间要求苛刻,因而必须有非常高的集成度,才能节省空间,手机的SoC集成了CPU、GPU、DSP、ISP、NPU、基带等诸多模块,使一款手机芯片具有非常丰富的功能,苹果的M1处理器甚至把内存都集成到SoC里。
正是因此,龙芯和英特尔、AMD的CPU是同一类,麒麟和高通、苹果的处理器属于同一类。硬要对两者进行比较的话,由于3A6000不具备麒麟9000S的很多功能,因而如果就这些方面进行对比,龙芯是非常吃亏的。
比如麒麟9000S集成了GPU,龙芯的GPU集成在桥片,3A6000没有集成GPU,比GPU性能,麒麟9000S完胜;
3A6000 没有集成DSP,麒麟9000S集成了DSP,比DSP性能,麒麟9000S完胜;
比如麒麟9000S集成了NPU,龙芯3A6000 没有集成NPU,比NPU性能,麒麟9000S完胜。
不过,在两者在某些方面是可以进行比较的。比如指令集自主水平,CPU性能和制造工艺。
在指令集上,龙芯采用自主指令集LoongArch,麒麟9000S采用的是ARM v8.2,在自主水平上龙芯完胜。
在制造工艺上,龙芯采用的是境内12nm工艺,麒麟9000S采用的是境内新锐工艺,因而可以获得更高的集成度和更低的功耗,在工艺上,麒麟9000S占优。至于CPU性能对比,稍后再介绍。
由于龙芯和麒麟是不同类型的芯片,拿来对比不太合适,其实,拿龙芯和鲲鹏进行对比才比较合适。
麒麟9000S大核定点对标A78 浮点接近X1
虽然在GPU、NPU、DSP等方面不适合拿龙芯和麒麟进行对比,但就CPU部分,还是可以从测试数据中来探个究竟的。
根据SPEC测试,编译环境为GCC12.0 -Ofast,麒麟9000S在2.6Ghz主频下,SEPC06 单核定点成绩为35.5,浮点成绩为50.6。
SEPC17测试,编译环境是GCC12.0 -03,麒麟9000S单核定点成绩为4.14,浮点成绩为6.51。由于浮点性能对超算意义大,对手机意义有限,因此我们主要看定点成绩。
作为参照,ARM的X3核心在3.1Ghz主频下,定点可以达到61.7分;X1在3Ghz下,定点可以达到50.3分;2.8Ghz的A710达到38.7分;2.4Ghz的A78达到32.33。
换算为IPC就是:
x3,61.73/3.1=19.91
x1,50.38/3=16.79
a710,38.76/2.8=13.84
a78,32.33/2.4=13.47
麒麟9000S的大核,35.55/2.61=13.62
再来看SPEC2017测试下麒麟9000S的大核和ARM公版架构的IPC对比。
x3,6.58/3.1=2.122
x1,5.71/3=1.9
a710,4.05/2.8=1.45
a78,3.62/2.4=1.51
麒麟9000S的大核,4.14/2.61=1.58
从数据可以看出,麒麟9000S的大核在定点上与a78相当。
另一家机构的测试也可以看出,麒麟9000S在SPEC2017测试下比较亮眼的是浮点性能,已经接近X1的水平。
总结一下,麒麟9000S的CPU核在定点上对标A78,在浮点上接近X1,与X3这样的公版架构尚有一定差距。
CPU的IPC 麒麟不如龙芯
从SPEC06实测数据看,麒麟9000S的IPC达到13+/G(定点),龙芯6000的IPC达到17+/G(定点)。从SPEC17实测数据看,麒麟9000S的IPC达到1.58/G(定点),龙芯6000的IPC达到2.08/G(定点)。
9000S的大核心是6发射,A78是4发射,等于说用了更多资源,最后堆出来的核定点与A78差不多,同样6发射的龙芯6000 IPC追平13代酷睿,9000S的CPU核逻辑设计只能算中规中矩,尚有较大提升空间。
必须说明的是,龙芯的编译器是GCC8.2,测试麒麟9000S用的是GCC12。GCC对ARM的支持,比对LoongArch好,LoongArch才出现3年,过于年轻,龙芯在软件上几乎都是“负优化”,在编译器方面,龙芯尚处于补课阶段,而X86和ARM经过多年优化,GCC对X86和ARM非常友好。正是因此,胡伟武说计划用2-3年完成编译器的补课,完成补课后,能够把性能提升10%—20%。
从中可以看出,龙芯3A6000的逻辑设计是非常强悍的,在制造工艺落后一代,且编译器拖后腿的情况下,实测IPC依然比麒麟9000S高25%。
也许有人会说龙芯IPC高是因为9000S只要4M缓存,而龙芯6000有16M缓存,麒麟9000S的大核心可以用于鲲鹏处理器,届时就可以弥补缓存的不足,进而大幅提升IPC。
事实上,缓存对IPC有影响,但影响不足以抹平IPC上两者的差距。
用数据说话,i3-10100F和i9-10850K,两者的核心是相同的,不过i3的三缓是6M,i9的是20M。只要把它们锁定到相同的频率来测试,就可以知道三缓从6M提高到20M后,可以把性能提高多少。
把i3-10100F和i9-10850K都锁定到1.0GHZ的频率,都使用双通道3200内存,使用相同的编译参数和系统环境测试SPEC CPU2006 int base,得到的成绩如下:
i3-10100F @ 1.0GHz int base=12.9
i9-10850K @ 1.0GHz int base=13.2
也就是说,把三缓从6M增加到20M,可以带来2%左右的性能提升。
如果新一代鲲鹏CPU把把9000s的4M三级增加到16M,性能的提升比例也应该是2%左右。简言之,基于9000s的CPU核开发鲲鹏CPU,其IPC会有提升,但提升会比较有限。
由于PC和服务器上,功耗限制不会像手机上那么严格,新一代鲲鹏CPU的主频可以往上提一提。
铁流估算,新一代鲲鹏CPU(3Ghz)的SEPC06 单核定点成绩为38-40,这个性能已经很强了。
作为参照,3Ghz主频的Intel i3-10100F SEPC06 单核定点成绩为36.5:
3.5Ghz主频的Intel i3-10100F成绩为41.6:
4Ghz主频的Intel i3-10100F成绩为46.4。
2.5G的龙芯3A6000成绩为43.1。
总的来说,瑕不掩瑜,毕竟定点IPC可以对标A78,这个性能已经很不错了,只要不运行高负载的3A游戏,足以满足绝大部分应用。
麒麟和龙芯有着截然不同的定位
麒麟和龙芯是两种截然不同定位下的芯片,麒麟的定位是商业芯片,可以从国外购买外商技术授权,可以买台积电尖端工艺流片,其商业化受益于ARM+安卓体系,可以运行AA体系软件生态。
几年前,麒麟就因为过度依赖ARM授权和台积电尖端工艺——从K3V2到麒麟9000,其CPU、GPU核全部从外商购买,一直采用台积电尖端工艺。这是这种依赖性导致其在4年时间内“绝版”,直到最近才随着境内新锐工艺的良率攀升,才实现“王者归来”。
龙芯的定位是自主CPU,要求高度自主可控,自研LoongArch指令集和全套IP,始终与境内工艺保持同步,一方面是因为龙芯穷,买不起台积电尖端工艺,另一方面也是龙芯为了保证自主可控,始终坚守底线思维。在麒麟用上台积电16nm时候,龙芯使用的是境内40nm工艺;当麒麟用上台积电5nm工艺时,龙芯使用的是境内12nm工艺。
正是依靠自主指令集LoongArch,自主研发核心IP,坚持使用境内工艺,自建软件生态,使龙芯在被美国列入实体清单后,不受丝毫影响,始终保持了正常的迭代速度。
总的来说,麒麟9000S是目前国内基于境内新锐工艺打造的最强ARM芯片,功能丰富,集成度高,在商业市场上非常具有竞争力。但在CPU核设计,以及自主可控水平上与龙芯有差距。
龙芯3A6000是基于境内12nm工艺和LoongArch指令集打造的自主桌面CPU,在IPC上已经追平了英特尔13代酷睿,在国产CPU中单核性能最强,且自主程度最高。但在工艺上与麒麟有差距,在软件上存在明显短板。
麒麟9000S和龙芯3A6000有各自的优势与不足,在各自的优势领域都会有很好的前景。