紅聯Linux門戶
Linux幫助
當前位置: 紅聯Linux門戶 > 龍芯

國產龍芯、飛騰和Intel芯片的差距究竟在哪里?

發布時間:2016-01-07 14:58:38來源:紅聯作者:teisac
來源:雷鋒網

近年來,國內IC設計廠商層出不窮。有龍芯、飛騰、申威等老牌設計單位,也有兆芯、宏芯這些新秀,還有在商業上非常成功的海思、展訊等ARM陣營廠商。但在性能上Intel對各路國產始終保持著巨大的優勢,那么國產芯片和Intel的芯片差距在哪里呢?

如何評價各家的CPU性能?

作為消費者來說,自然是希望CPU能盡可能的便宜,而性能經可能高。那么,什么樣的CPU性能高呢?從體系結構的角度來看,有個指標叫MIPS,即每分鐘執行多少條指令,執行指令數量越多,性能就越好,但這存在一個問題,當CPU指令集不同的時候,比較MIPS就意義不大了----比如A一條指令只算一個加法,B一條指令能做一個1024點的FFT。特別是在不同指令集的情況下,如何評價各家的CPU性能呢?

評價CPU性能必須考慮應用的多樣性,比如科學運算重視雙精浮點性能,但是如果數據供不上,運算能力再強也沒用;比如PC日常使用更偏重于整數性能;再比如計算中心多任務環境關注的是吞吐率......因此單純用某一個指標來衡量CPU性能是不科學的,必須綜合考量。

業界也推出了很多基準測試程序,比如針對CPU的SPEC,針對嵌入式應用的EEMBC等。SPEC測試是比較權威的測試程序,和一些黑箱測試程序不同,SPEC測試的各項程序跑分和計分方式全部公開透明,而且覆蓋范圍廣----SPEC2000有12個定點程序,14個浮點程序,而且有比較強的代表性,比如gzip、vpr、gcc、mef、eon等。

什么是SPEC測試?

SPEC在計分上采用歸一化的幾何平均方法來進行綜合性能評估----將不同CPU的執行時間與參照對象相比較后得到一個相對值。

SEPC2000的參照對象是Ultra SPARC 2工作站的主頻為300Mhz的CPU。如果運行測試程序1的時間是參照對象的十分之一的話,測試就是1000分,測試程序2的耗時是參照對象的八分之一的話,則為800分.....最后再算幾何平均----比如SEPC2000有12個定點測試,就將12個測試成績相乘再開12次方,這樣以來,測試更加重視性能均衡,因為如果某一項測試存在短板的話,將會大幅拉低測試最后得分,最極端的情況是某項測試為0分,哪怕其他測試分數再高,總分也是0分。

不過SPEC也非盡善盡美,存在不考察I/O帶寬和跑分容易受編譯器影響等問題。

例來說,龍芯上一代微結構曾因存在訪存問題而導致其在SPEC2000下跑分尚可,但在SPEC2006的跑較低,而GS464E解決訪存問題后,則不存在這個問題,原因就在于SPEC2000對I/O帶寬的要求較低。編譯器方面,SUN曾經通過編譯器優化提升SPEC跑分50%,龍芯上一代產品用LCC編譯器,比使用GCC整數跑分提升了60%。即使同樣使用GCC編譯器,也會因為不同版本,或優化程度差異導致很難有最準確的評價(GCC部分代碼由Intel提供,對X86優化最好,ARM市場份額大,優化也不錯,MIPS、ALPHA的優化就比較一般了)。

SPEC測試非常類似于高考,雖然有各種瑕疵,但卻有覆蓋程序廣,公開透明的特點,相對來說比較公平,是可以給CPU做一個相對合理評價的測試程序。

筆者將X86、ARM、MIPS、ALPHA指令集的CPU做了一個表格如下。

編譯器除龍芯確定是GCC4.8外,其余都是未知數----VIA的白皮書并沒有標明測試中的GCC版本,其余編譯器筆者做一個推測:申威可能是SWCC;I3 550、I5 4460可能是GCC5.1。因為僅僅是筆者猜測,嚴謹起見,編譯器選擇空白。(ICC是Intel的編譯器,X86芯片都可以用;LCC是龍芯的編譯器;SWCC是申威的編譯器。Intel和AMD的芯片是作參照)

使用GCC編譯器的情況下,兆芯、申威、飛騰SEPC2000測試和Intel haswell依舊有相當差距,spec2000測試分值最高的GS464E也僅僅是使用自家的LCC編譯器的情況下,整數和Nehalem差50分,浮點和haswell差70分。而在主頻方面,國內IC設計公司最高主頻僅為2G,和Intel、AMD 3G以上主頻差距明顯。

因此,國產CPU和Intel的差距,不僅僅是主頻上的。哪怕兆芯的ZX-C能到達3G以上主頻,但因為微結構上的差距,依舊只有I5 4660性能的40%左右,因此微結構非常重要,可以說CPU的安全性、性能、功耗很大程度上取決于微結構,AMD的CPU在同主頻下性能遜色于Intel,很大程度上也是因為微結構上的差距。

而在消費者購買CPU時,往往只關注主頻、核心數、制程等參數,對微結構往往會忽略,加上Intel這些年從SNB開始擠牙膏,使得微結構更新對性能的提升非常小,導致微結構的重要性更加被忽視。

微結構差距的原因

因為宏芯、兆芯、海思、展訊目前并沒有自主設計的微結構,就以龍芯、飛騰最新的兩款產品和Intel做比較。以GS464E和IVY的差距而言,通過對比下表參數,就能發現原因。

如果將GS464E和IVY做對比就能發現,制約GS464E性能的最大的短板在定點發射隊列和浮點發射隊列上,相對于IVY的54項定點和浮點發射隊列,GS464E只有16項定點發射隊列,24項浮點發射隊列。

龍芯對此也是心知肚明,將正在流片的3A3000,針對GS464E的瓶頸做了改進,將定點發射隊列從16項提升到32項,將浮點發射隊列從24項提升到32項,并提升了緩存和主頻。很顯然,雖然龍芯宣稱TICK-TOCK,但3A3000相對于3A2000并非單純的提升主頻,定點發射隊列和浮點發射隊列的提升必然帶來IPC的提升。

根據飛騰公布的Spec 2006的模擬器測試,整數為9.6/G。

9.6/G到底是什么水平呢?筆者以Intel作參照,關auto parallel的情況下,haswell 使用GCC5.1 的SPEC 2006的成績為32分(@3.2G主頻)。也就是說,“小米”能接近haswell?

這實在是太“驚悚”了,如果真能做到,就是科技大躍進了。那SPEC2006整數9.6/G的原因何在?根源在于開/關auto parallel。

開auto parallel會導致SEPC2006整數分數增益,因為其將原本單線程執行的程序并行化給多個處理器執行,增益效果取決于編譯器、CPU的核心數量等因素。而相當部分常用的代碼并不支持auto parallel。因此,目前auto parallel對SPEC跑分更有意義。而“小米”SPEC2006整數高達9.6/G,很有可能就是因為在測試中開auto parallel的結果,那么證據呢?

“小米”和IVY的對比中看,“小米”和IVY還是有不小的差距的,并且和GS464E一樣存在定點發射隊列和浮點發射隊列相對IVY偏少的現狀,因此在資源有限的情況下,做出達到haswell水平的概率非常小。

對比“小米”和GS464E,假定兩者流水線效率相當的情況下,筆者認為“小米”可能是和GS464E一個等級的微結構,并強于ARM Cortex A57。當然,如果流水線效率不佳,“小米”也可能會遜色于GS464E。而“小米”32M的L2緩存,很有可能是因為針對服務器,甚至高性能計算的產物。

目前,飛騰的“地球”和龍芯3A3000正在流片,期待“地球”和3A3000流片歸來后的表現。
文章評論

共有 0 條評論

贵州体彩11选5查询号码 吉林新11选5手机板 云南十一选五走势 四川快乐12手机版推荐 福彩试机号今天 吉林11选5乐选2玩法 江西时时彩个位杀号 常山北明主力资金流向 中国石化股票分析报告 今日选四天天彩预测 山东体彩快乐扑克三