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