31
本文作者: 鐵流 | 2016-01-07 14:25 |
近年來(lái),國(guó)內(nèi)IC設(shè)計(jì)廠商層出不窮。有龍芯、飛騰、申威等老牌設(shè)計(jì)單位,也有兆芯、宏芯這些新秀,還有在商業(yè)上非常成功的海思、展訊等ARM陣營(yíng)廠商。但在性能上Intel對(duì)各路國(guó)產(chǎn)始終保持著巨大的優(yōu)勢(shì),那么國(guó)產(chǎn)芯片和Intel的芯片差距在哪里呢?
作為消費(fèi)者來(lái)說(shuō),自然是希望CPU能盡可能的便宜,而性能經(jīng)可能高。那么,什么樣的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日常使用更偏重于整數(shù)性能;再比如計(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è)試程序不同,SPEC測(cè)試的各項(xiàng)程序跑分和計(jì)分方式全部公開(kāi)透明,而且覆蓋范圍廣——SPEC2000有12個(gè)定點(diǎn)程序,14個(gè)浮點(diǎn)程序,而且有比較強(qiáng)的代表性,比如gzip、vpr、gcc、mef、eon等。
什么是SPEC測(cè)試?
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次方,這樣以來(lái),測(cè)試更加重視性能均衡,因?yàn)槿绻骋豁?xiàng)測(cè)試存在短板的話,將會(huì)大幅拉低測(cè)試最后得分,最極端的情況是某項(xiàng)測(cè)試為0分,哪怕其他測(cè)試分?jǐn)?shù)再高,總分也是0分。
不過(guò)SPEC也非盡善盡美,存在不考察I/O帶寬和跑分容易受編譯器影響等問(wèn)題。
例來(lái)說(shuō),龍芯上一代微結(jié)構(gòu)曾因存在訪存問(wèn)題而導(dǎo)致其在SPEC2000下跑分尚可,但在SPEC2006的跑較低,而GS464E解決訪存問(wèn)題后,則不存在這個(gè)問(wèn)題,原因就在于SPEC2000對(duì)I/O帶寬的要求較低。編譯器方面,SUN曾經(jīng)通過(guò)編譯器優(yōu)化提升SPEC跑分50%,龍芯上一代產(chǎn)品用LCC編譯器,比使用GCC整數(shù)跑分提升了60%。即使同樣使用GCC編譯器,也會(huì)因?yàn)椴煌姹?,或?yōu)化程度差異導(dǎo)致很難有最準(zhǔn)確的評(píng)價(jià)(GCC部分代碼由Intel提供,對(duì)X86優(yōu)化最好,ARM市場(chǎng)份額大,優(yōu)化也不錯(cuò),MIPS、ALPHA的優(yōu)化就比較一般了)。
SPEC測(cè)試非常類似于高考,雖然有各種瑕疵,但卻有覆蓋程序廣,公開(kāi)透明的特點(diǎn),相對(duì)來(lái)說(shuō)比較公平,是可以給CPU做一個(gè)相對(duì)合理評(píng)價(jià)的測(cè)試程序。
筆者將X86、ARM、MIPS、ALPHA指令集的CPU做了一個(gè)表格如下。
編譯器除龍芯確定是GCC4.8外,其余都是未知數(shù)——VIA的白皮書(shū)并沒(méi)有標(biāo)明測(cè)試中的GCC版本,其余編譯器筆者做一個(gè)推測(cè):申威可能是SWCC;I3 550、I5 4460可能是GCC5.1。因?yàn)閮H僅是筆者猜測(cè),嚴(yán)謹(jǐn)起見(jiàn),編譯器選擇空白。(ICC是Intel的編譯器,X86芯片都可以用;LCC是龍芯的編譯器;SWCC是申威的編譯器。Intel和AMD的芯片是作參照)
(因編譯器不統(tǒng)一,表格僅供參考)
從表中可以看出,使用GCC編譯器的情況下,兆芯、申威、飛騰SEPC2000測(cè)試和Intel haswell依舊有相當(dāng)差距,spec2000測(cè)試分值最高的GS464E也僅僅是使用自家的LCC編譯器的情況下,整數(shù)和Nehalem差50分,浮點(diǎn)和haswell差70分。而在主頻方面,國(guó)內(nèi)IC設(shè)計(jì)公司最高主頻僅為2G,和Intel、AMD 3G以上主頻差距明顯。
因此,國(guó)產(chǎn)CPU和Intel的差距,不僅僅是主頻上的。哪怕兆芯的ZX-C能到達(dá)3G以上主頻,但因?yàn)槲⒔Y(jié)構(gòu)上的差距,依舊只有I5 4660性能的40%左右,因此微結(jié)構(gòu)非常重要,可以說(shuō)CPU的安全性、性能、功耗很大程度上取決于微結(jié)構(gòu),AMD的CPU在同主頻下性能遜色于Intel,很大程度上也是因?yàn)槲⒔Y(jié)構(gòu)上的差距。
而在消費(fèi)者購(gòu)買CPU時(shí),往往只關(guān)注主頻、核心數(shù)、制程等參數(shù),對(duì)微結(jié)構(gòu)往往會(huì)忽略,加上Intel這些年從SNB開(kāi)始擠牙膏,使得微結(jié)構(gòu)更新對(duì)性能的提升非常小,導(dǎo)致微結(jié)構(gòu)的重要性更加被忽視。
因?yàn)楹晷?、兆芯、海思、展訊目前并沒(méi)有自主設(shè)計(jì)的微結(jié)構(gòu),就以龍芯、飛騰最新的兩款產(chǎn)品和Intel做比較。以GS464E和IVY的差距而言,通過(guò)對(duì)比下表參數(shù),就能發(fā)現(xiàn)原因。
(數(shù)據(jù)網(wǎng)絡(luò)收集,僅供娛樂(lè))
如果將GS464E和IVY做對(duì)比就能發(fā)現(xiàn),制約GS464E性能的最大的短板在定點(diǎn)發(fā)射隊(duì)列和浮點(diǎn)發(fā)射隊(duì)列上,相對(duì)于IVY的54項(xiàng)定點(diǎn)和浮點(diǎn)發(fā)射隊(duì)列,GS464E只有16項(xiàng)定點(diǎn)發(fā)射隊(duì)列,24項(xiàng)浮點(diǎn)發(fā)射隊(duì)列。
龍芯對(duì)此也是心知肚明,將正在流片的3A3000,針對(duì)GS464E的瓶頸做了改進(jìn),將定點(diǎn)發(fā)射隊(duì)列從16項(xiàng)提升到32項(xiàng),將浮點(diǎn)發(fā)射隊(duì)列從24項(xiàng)提升到32項(xiàng),并提升了緩存和主頻。很顯然,雖然龍芯宣稱TICK-TOCK,但3A3000相對(duì)于3A2000并非單純的提升主頻,定點(diǎn)發(fā)射隊(duì)列和浮點(diǎn)發(fā)射隊(duì)列的提升必然帶來(lái)IPC的提升。
根據(jù)飛騰公布的Spec 2006的模擬器測(cè)試,整數(shù)為9.6/G。
9.6/G到底是什么水平呢?筆者以Intel作參照,關(guān)auto parallel的情況下,haswell 使用GCC5.1 的SPEC 2006的成績(jī)?yōu)?2分(@3.2G主頻)。也就是說(shuō),“小米”能接近haswell?
這實(shí)在是太“驚悚”了,如果真能做到,就是科技大躍進(jìn)了。那SPEC2006整數(shù)9.6/G的原因何在?根源在于開(kāi)/關(guān)auto parallel。
開(kāi)auto parallel會(huì)導(dǎo)致SEPC2006整數(shù)分?jǐn)?shù)增益,因?yàn)槠鋵⒃締尉€程執(zhí)行的程序并行化給多個(gè)處理器執(zhí)行,增益效果取決于編譯器、CPU的核心數(shù)量等因素。而相當(dāng)部分常用的代碼并不支持auto parallel。因此,目前auto parallel對(duì)SPEC跑分更有意義。而“小米”SPEC2006整數(shù)高達(dá)9.6/G,很有可能就是因?yàn)樵跍y(cè)試中開(kāi)auto parallel的結(jié)果,那么證據(jù)呢?
(數(shù)據(jù)網(wǎng)絡(luò)收集,僅供娛樂(lè))
從上表中“小米”和IVY的對(duì)比中看,“小米”和IVY還是有不小的差距的,并且和GS464E一樣存在定點(diǎn)發(fā)射隊(duì)列和浮點(diǎn)發(fā)射隊(duì)列相對(duì)IVY偏少的現(xiàn)狀,因此在資源有限的情況下,做出達(dá)到haswell水平的概率非常小。
對(duì)比“小米”和GS464E,假定兩者流水線效率相當(dāng)?shù)那闆r下,筆者認(rèn)為“小米”可能是和GS464E一個(gè)等級(jí)的微結(jié)構(gòu),并強(qiáng)于ARM Cortex A57。當(dāng)然,如果流水線效率不佳,“小米”也可能會(huì)遜色于GS464E。而“小米”32M的L2緩存,很有可能是因?yàn)獒槍?duì)服務(wù)器,甚至高性能計(jì)算的產(chǎn)物。
目前,飛騰的“地球”和龍芯3A3000正在流片,期待“地球”和3A3000流片歸來(lái)后的表現(xiàn)。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。