真不給力?國產龍芯跟Intel差距到底在哪

文章推薦指數: 80 %
投票人數:10人

近年來,國內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做一個相對合理評價的測試程序。

不同指令集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流片歸來後的表現。

文章出處:雷鋒網


請為這篇文章評分?


相關文章 

「神威·太湖之光」背後的功臣

6月20日,德國法蘭克福國際超算大會(ISC)公布了新一期全球超級計算機TOP500榜單,由國家並行計算機工程技術研究中心研製的「神威·太湖之光」以超第二名近三倍的運算速度奪得第一。這兩天,神威...

國產CPU大戰:龍芯憑什麼第一!

龍芯中科近日宣布,龍芯3A3000四核處理器晶片成功完成流片,並通過了系統測試。龍芯3A3000基於龍芯3A2000設計,進行了結構上的少量改進,比如增加處理器核關鍵隊列項數、擴充片上私有/共享...

龍芯、飛騰大比拼

據公開消息,龍芯和飛騰最新的產品都與去年年底開始流片,也就是說,新產品即將與國人見面。那麼,在飛騰的ARM晶片和龍芯3A3000即將完成流片之時,筆者將從自主智慧財產權、裸CPU性能和軟體方面...