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