龍芯/飛騰/申威國(guó)產(chǎn)CPU性能如何,與Intel差距?
一直一來(lái),缺芯少魂一直是中國(guó)信息產(chǎn)業(yè)的心病,中國(guó)的CPU市場(chǎng)也一直被Intel、ARM等國(guó)外廠商壟斷,龍芯、申威、飛騰等國(guó)產(chǎn)CPU在社會(huì)上也往往遭到別有用心之徒諸如“打磨芯片”、“騙經(jīng)費(fèi)”、“政績(jī)工程”等輿論抨擊。不久前,采用申威26010的神威太湖之光在TOP500刷榜,飛騰也公布了采用ARM指令集的飛騰1500A和飛騰2000,龍芯的3A3000也順利完成流片,那么這些國(guó)產(chǎn)CPU的性能到底如何呢?
如何評(píng)價(jià)CPU
如何評(píng)價(jià)CPU的性能呢?從體系結(jié)構(gòu)的角度來(lái)看,有個(gè)指標(biāo)叫MIPS,即每分鐘執(zhí)行多少條指令,執(zhí)行指令數(shù)量越多,性能就越好,但這存在一個(gè)問(wèn)題,當(dāng)CPU指令集不同的時(shí)候,比較MIPS就意義不大了——比如A一條指令只算一個(gè)加法,B一條指令能做一個(gè)1024點(diǎn)的FFT。特別是在不同指令集的情況下,如何評(píng)價(jià)CPU的性能呢?
評(píng)價(jià)CPU性能必須考慮應(yīng)用的多樣性,比如科學(xué)運(yùn)算重視雙精浮點(diǎn)性能,但是如果數(shù)據(jù)供不上,運(yùn)算能力再?gòu)?qiáng)也沒(méi)用;比如PC日常使用更偏重于定點(diǎn)性能;再比如計(jì)算中心多任務(wù)環(huán)境關(guān)注的是吞吐率。因此單純用某一個(gè)指標(biāo)來(lái)衡量CPU性能是不科學(xué)的,必須綜合考量。
業(yè)界也推出了很多基準(zhǔn)測(cè)試程序,比如針對(duì)CPU的SPEC,針對(duì)嵌入式應(yīng)用的EEMBC等。SPEC測(cè)試是比較權(quán)威的測(cè)試程序。和一些黑箱測(cè)試程序調(diào)整計(jì)分方式和計(jì)分權(quán)重后測(cè)試結(jié)果就發(fā)生變化不同,SPEC測(cè)試到底跑了什么程序,以及各項(xiàng)程序跑分和計(jì)分方式全部公開(kāi)透明,而且覆蓋范圍廣——SPEC2000有12個(gè)定點(diǎn)程序,14個(gè)浮點(diǎn)程序,而且有比較強(qiáng)的代表性,比如gzip、vpr、gcc、mef、eon等。而SPEC2006則把定點(diǎn)程序擴(kuò)展到14個(gè)定點(diǎn)程序和16個(gè)浮點(diǎn)程序。
在計(jì)分方法上,SPEC在計(jì)分上采用歸一化的幾何平均方法來(lái)進(jìn)行綜合性能評(píng)估——將不同CPU的執(zhí)行時(shí)間與參照對(duì)象相比較后得到一個(gè)相對(duì)值。SEPC2000的參照對(duì)象是Ultra SPARC 2工作站的主頻為300Mhz的CPU。如果運(yùn)行測(cè)試程序1的時(shí)間是參照對(duì)象的十分之一的話,測(cè)試就是1000分,測(cè)試程序2的耗時(shí)是參照對(duì)象的八分之一的話,則為800分。..。.最后再算幾何平均——比如SEPC2000有12個(gè)定點(diǎn)測(cè)試,就將12個(gè)測(cè)試成績(jī)相乘再開(kāi)12次方,SPEC2006相對(duì)于SPEC2000而言僅僅是擴(kuò)展了幾項(xiàng)測(cè)試程序,使測(cè)試更加科學(xué)合理。這里,我們以三星獵戶座7420和華為麒麟950為例計(jì)算SPEC測(cè)試成績(jī)。
以上為兩款芯片的跑分成績(jī),由于兩款SOC均是購(gòu)買ARM的IP授權(quán)做集成的產(chǎn)物,獵戶座7420的成績(jī)其實(shí)是ARM Crotex A57的成績(jī),華為麒麟950則是ARM Crotex A72的成績(jī),將12個(gè)子項(xiàng)相乘再開(kāi)12次方后,得到ARM Crotex A57在2.1G主頻時(shí)定點(diǎn)測(cè)試成績(jī)?yōu)?376分,換算一下就是655/G,ARM Crotex A72的定點(diǎn)成績(jī)則為749/G。
不過(guò)SPEC也非盡善盡美,測(cè)試存在容易受編譯器影響的問(wèn)題。舉例來(lái)說(shuō),SUN曾經(jīng)通過(guò)編譯器優(yōu)化提升SPEC跑分50%,龍芯的某一代產(chǎn)品也曾用自主研發(fā)的LCC編譯器,比使用GCC定點(diǎn)跑分提升了60%。另外,即便同樣是GCC編譯器,不同版本的GCC編譯器下,測(cè)試成績(jī)也會(huì)有很大差異。筆者認(rèn)為,出現(xiàn)這種現(xiàn)象的根源并非SPEC測(cè)試的缺陷,反而用事實(shí)說(shuō)明了,最后的用戶體驗(yàn)是軟件+硬件的結(jié)果,充分說(shuō)明了軟硬件磨合的重要性。
可能有的讀者對(duì)不明白什么是編譯器,在此說(shuō)明一下,程序員在編程的時(shí)候?qū)懙氖蔷幊陶Z(yǔ)言,但是計(jì)算機(jī)運(yùn)行的時(shí)候是機(jī)器語(yǔ)言,編譯器就是將程序員的編程語(yǔ)言翻譯成機(jī)器語(yǔ)言的工具。
龍芯、飛騰、申威和Intel的比較
現(xiàn)在,我們先就龍芯和飛騰的桌面芯片與Intel的CPU做比較。由于桌面芯片更加注重單線程性能——單核性能是基礎(chǔ),很多程序都依賴單進(jìn)程的處理速度,如果單核性能上不去,核心數(shù)再多也沒(méi)用,這也是AMD 六核、八核芯片打不贏Intel 四核芯片的原因。另外,對(duì)于桌面芯片來(lái)說(shuō),日常使用中更加倚重定點(diǎn)性能。因此,在這里我們以單線程實(shí)際測(cè)試的定點(diǎn)成績(jī)做比較。
在編譯器為GCC5.2的情況下,Intel I5 4460在3.2G主頻下SPEC2006的定點(diǎn)成績(jī)?yōu)?2分;在編譯器為GCC4.4.7的情況下,龍芯3A3000在1.5G主頻下的定點(diǎn)成績(jī)?yōu)?1分;在編譯器為GCC4.8的情況下,飛騰1500A在1.8G主頻的定點(diǎn)成績(jī)?yōu)?0分。誠(chéng)然Intel在編譯器上占有一定優(yōu)勢(shì),這里為了方便比較就忽略編譯器帶來(lái)的差異了,就定點(diǎn)性能而已,龍芯3A3000和飛騰1500A的單線程性能大約為Intel I5 4460的三分之一。
差距在哪里呢?主要是在主頻上,其次在微結(jié)構(gòu)。龍芯3A3000的主頻只有1.5G,飛騰1500A的主頻只有1.8G,而Intel I5 4460的主頻達(dá)3.2G,而且如果需要的話,還能睿頻到3.4G,很顯然,在主頻上龍芯3A3000只有Intel I5 4460的一半不到,而飛騰1500A也只有Intel I5 4460的一半多一點(diǎn)。
微結(jié)構(gòu)也就是常說(shuō)的CPU核,在主頻相同的情況下,兩款CPU的性能差異取決于微結(jié)構(gòu)的差異,像龍芯GS464E、Intel的Haswell、ARM的Crotex A72都是微結(jié)構(gòu)。龍芯3A3000在1G主頻時(shí),SPEC2006測(cè)試定點(diǎn)成績(jī)?yōu)?.3,飛騰1500A主頻為1G時(shí),SPEC2006測(cè)試定點(diǎn)成績(jī)?yōu)?.5,而I5 4460在1G主頻時(shí)的定點(diǎn)成績(jī)?yōu)?0。可以說(shuō),龍芯的GS464E大約有Intel的Haswell性能的73%,而飛騰的FTC660大約是Intel的Haswell性能的55%。
那么如何提升主頻和微結(jié)構(gòu)呢?提升微結(jié)構(gòu)需要在指令分支預(yù)測(cè),寄存器重命名,多指令通路,亂序發(fā)射,功能部件,訪存性能等方面做文章,目的是使整個(gè)的指令流水的效率盡可能高,因?yàn)槿绻幸粋€(gè)環(huán)節(jié)設(shè)計(jì)不好或不匹配的話,整個(gè)系統(tǒng)效率就發(fā)揮不出來(lái),這是CPU的核心技術(shù)。提升主頻很大程度上要依賴后端設(shè)計(jì)能力,也就是要指物理層電路的具體優(yōu)化,包括單元布局、時(shí)序優(yōu)化等放方面下苦功。
接下來(lái)就國(guó)產(chǎn)服務(wù)器CPU與Intel的服務(wù)器CPU做比較,以國(guó)產(chǎn)服務(wù)器CPU中多線程性能最強(qiáng)的飛騰2000為例。在編譯器為GCC4.8的情況下,飛騰2000在2G主頻的單線程SPEC2006測(cè)試成績(jī)?yōu)槎c(diǎn)12.4,浮點(diǎn)11.3,換算一下飛騰2000的CPU核FTC661的定點(diǎn)成績(jī)?yōu)?.2/G,和Intel Haswell 10/G的成績(jī)依舊有不小的差距,由于飛騰2000為64核芯片,在單線程性能相對(duì)有限的情況下,依靠核心數(shù)量的優(yōu)勢(shì),F(xiàn)T2000的多線程SPEC2006測(cè)試成績(jī)?yōu)槎c(diǎn)570,浮點(diǎn)482,全芯片性能與Intel Xeon E5-2695v3相當(dāng),這是非常了不起的成績(jī)。
由于科學(xué)計(jì)算倚重雙精浮點(diǎn)性能,超算芯片的比較中就以雙精浮點(diǎn)性能為指標(biāo)進(jìn)行,申威26010的雙精浮點(diǎn)性能為3T,和Intel目前最好的超算芯片KNL相當(dāng),更難人可貴的是這是在制造工藝與Intel相差2代的情況下取得的成績(jī),這充分體現(xiàn)出申威26010在設(shè)計(jì)思想上的先進(jìn)性。
結(jié)語(yǔ)
在桌面芯片上,龍芯和飛騰目前最好的桌面四核芯片的單線程定點(diǎn)測(cè)試成績(jī)大約為Intel I5 4460的三分之一,雖然和Intel的差距依舊比較大,但目前龍芯和飛騰還沒(méi)有大型游戲等對(duì)CPU性能要求較高的軟件應(yīng)用,現(xiàn)在的性能對(duì)于絕大多數(shù)應(yīng)用來(lái)說(shuō)都是夠用的,特別是對(duì)黨政軍辦公電腦和一體機(jī),龍芯3A3000和飛騰1500A的性能已經(jīng)屬于性能過(guò)剩了,只要軟件跟得上,在黨政軍領(lǐng)域能替換Intel的CPU。
在服務(wù)器CPU上,飛騰2000雖然在單線程性能上和Intel有一定差距,但其全芯片性能頗為不俗,能與Intel Xeon E5-2695v3相當(dāng),已經(jīng)是全球全芯片性能最強(qiáng)的ARM服務(wù)器CPU,如果ARM等國(guó)外廠商能完善其服務(wù)器CPU的軟件生態(tài),飛騰則有可能借著ARM的生態(tài)一飛沖天。
在超算芯片上,申威26010完全可以和Intel最好的加速器KNL硬碰硬的較量。