近年來,國內的ic設計制造商相繼出現(xiàn)。 有龍芯、飛騰、申威等老字號設計公司,有兆芯、宏芯等新秀,也有商業(yè)上非常成功的海思、展信等arm陣營制造商。 但是,在性能方面,英特爾相對于各國產(chǎn)始終保持著較大的特點,國產(chǎn)芯片與英特爾的芯片差距在哪里呢?
如何評價各家的cpu性能?
作為客戶,想盡量使cpu便宜是理所當然的,性能可能會很高。 那么,什么樣的cpu性能高呢? 從架構的角度來看,有每分鐘執(zhí)行幾條指令的mips這一指標,執(zhí)行指令的數(shù)量越多性能越好,但這其中在cpu指令集不同的情況下,比較mips沒有什么意義。 例如,a1指令可以是一個加法,b1指令可以制作1024點的FT。 特別是指令集不同的情況下,如何評價各家的cpu性能?
評價cpu性能需要考慮應用的多樣化。 例如,科學運算重視雙精浮點性能,但如果不能提供數(shù)據(jù),則運算能力再高也沒用; 例如,pc的日常采用偏向整數(shù)性能; 例如,計算中心的多任務環(huán)境關注吞吐量。 ……這是單純用某個指標測量cpu的性能不科學,需要綜合考慮。
業(yè)界也推出了許多基準測試計劃,包括比較cpu的spec、比較嵌入式APP的eembc等。 spec測試是一個比較權威的測試程序,與有點黑匣子的測試程序不同,spec測試各程序的得分和得分方法都是公開透明的,而且覆蓋全網(wǎng)絡的spec2000有12個指點程序
什么是spec測試?
spec利用計分中歸一化的幾何平均方法進行綜合性能判斷,將不同cpu的執(zhí)行時間與參考對象進行比較,得到相對值。
sepc2000的參照對象是ultrasparc2事務所的主頻率為300mhz的cpu。 如果執(zhí)行測試程序1的時間是參照對象的十分之一,則測試為1000分,如果執(zhí)行測試程序2的時間是參照對象的八分之一,則為800分……之后計算幾何平均。 例如,如果sepc2000有12個定點測試,則將12個測試的成績相乘,得出12次方。 今后,測試將重視性能平衡。 因為一個測試如果有短板的話,會被大幅拉伸
但是,spec也不完美,存在i/o帶寬和運行時間容易受到編譯器的影響等問題。
例如,龍芯上一代的微結構在spec2000上還存在問題,但在spec2006上問題較少,在gs464e上處理訪問問題后,由于spec2000對i/o帶寬的要求較低,所以沒有這個問題。 關于編譯器,sun通過編譯器優(yōu)化將spec運行時間提高了50%。 龍芯上一代產(chǎn)品用lcc編譯器比采用gcc整數(shù)運行時提高了60%。 即使采用相同的gcc編譯器,由于版本不同,或者優(yōu)化程度不同,所以評價也不太準確。 ( gcc代碼的一部分由intel提供,對x86進行了優(yōu)化,arm市場份額大,優(yōu)化也很好,mips、Alpha的優(yōu)化很一般。 )。
spec測試和高考非常相似。 雖然存在很多缺陷,但具有廣泛覆蓋程序、公開透明性的優(yōu)點,是一個比較公平、能夠對cpu進行比較合理評價的測試程序。
不同指令集的cpu比較
筆者將x86、arm、mips、alpha指令集的cpu列于下表。
除了明確了編譯器是gcc4.8以外,未知數(shù)via的白皮書中沒有注明測試中的gcc版本,剩下的編譯器筆者推測可能是swcc的i3550,i54460可能是gcc5.1。 只是筆者的推測,所以嚴格來說編譯器選擇空白色。 ( icc是英特爾的編譯器,可以使用x86芯片; lcc是龍芯的編譯器; swcc是申威的編譯器。 英特爾和amd的芯片為參考)
(因為編譯器不統(tǒng)一,所以表僅供參考)
從表中可以看出,在采用gcc編譯器的情況下,兆核、申威、飛行sepc2000測試和intelhaswell仍然有很大差距,spec2000測試得分較高的gs464e也將自己的lcc編譯器 另一方面,在主頻方面,國內ic設計企業(yè)的高主頻僅為2g,與intel、amd3g以上的主頻差距明顯。
因此,國產(chǎn)cpu和intel的差別不僅僅在于主頻。 即使兆芯的zx-c達到3g以上的主頻率,微結構上的差異也僅為i54660性能的40%左右。 因為這個微結構很重要,所以cpu的安全性、性能、功耗很大程度上取決于微結構,可以說amd的cpu在同主頻上毫不遜色于intel,很大程度上取決于微結構上的差異。
客戶購買cpu時,往往只關注主頻率、核心數(shù)量、工藝等參數(shù),而忽略細微結構。 另外,由于intel這幾年從snb開始攪拌牙膏,微細結構更新帶來的性能提升非常小,微細結構的重要性更被忽視了。
微細結構差異的原因
由于宏芯、兆芯、高品位、展會目前沒有自主設計的精細結構,因此用龍芯、飛騰新兩種產(chǎn)品與英特爾進行了比較。 用gs464e和ivy的差距來說,可以針對下表的參數(shù),找出原因。
(僅限數(shù)據(jù)互聯(lián)網(wǎng)收集、娛樂)
以gs464e和ivy為對象,可以看到制約gs464e性能的大短板是定點發(fā)射隊列和浮點發(fā)射隊列,對于ivy的54個定點和浮點發(fā)射隊列,gs464e只有16個定點發(fā)射隊列、24個浮點發(fā)射隊列。
龍芯也知道這一點,現(xiàn)在流媒體中的3a3000相比gs464e的瓶頸有所改善,定點發(fā)射隊列從16個項目提高到32個項目,浮點發(fā)射隊列從24個項目提高到32個項目,提高了緩存和主頻。 很明顯,龍芯宣布了tick-tock,但3a3000并不是簡單地相對于3a2000提高主頻,定點發(fā)射隊列和浮點發(fā)射隊列的提高必然會帶來ipc的提高。
根據(jù)飛騰公布的spec2006模擬器測試,整數(shù)為9.6/g。
9.6/g是什么水平呢? 筆者參考intel,關閉自動并行時,haswell采用gcc5.1的spec 2006的成績?yōu)?2分( @3.2g主頻)。 也就是說,小米能接近haswell嗎?
這真是太可怕了。 如果真的能做到的話,那就是科學技術的大躍進。 spec2006整數(shù)9.6/g的理由是什么? 根源在于autoparallel的打開/關閉。
打開autoparallel時,由于原本運行在單線程上的程序并行運行在多個解決方案上,因此會產(chǎn)生sepc2006整數(shù)分鐘的增益。 增益效果取決于編譯器、cpu的核心數(shù)等因素。 典型代碼中有相當一部分不支持自動并行。 因此,目前,autoparallel對spec的得分更有意義。 小米spec2006的整數(shù)高達9.6/g,很可能是測試中配方autoparallel的結果,有證據(jù)嗎?
(僅限數(shù)據(jù)互聯(lián)網(wǎng)收集、娛樂)
從上表中小米和ivy的對應來看,小米和ivy還有不小的差距,另外和gs464e一樣,存在定點發(fā)射隊列和浮點發(fā)射隊列相對于ivy較少的現(xiàn)狀。 這是因為在資源有限的情況下,達到哈斯韋爾水平的概率非常低。
關于小米和gs464e,在假設兩者的流水線效率相等的情況下,小米有可能是與gs464e水平相同的精細結構,并且比armcortexa57更好。 當然,如果流水線效率不好,小米可能也不會遜色于gs464e。 小米32m的l2緩存很可能是對服務器和高性能計算進行比較的結果。
現(xiàn)在飛行的地球和龍芯3a3000正在放電影,期待著地球和3a3000的電影回來后的表現(xiàn)。
標題:“國產(chǎn)龍芯、飛騰和 Intel 芯片的差距究竟在哪里?”
地址:http://www.paulsmart.net/lyzx/32911.html