使用GCC編譯器實測兆芯KX-U6780A的SPEC CPU2006成績

兆芯KX-U6780A是一款8核2.7GHz的使用x86/AMD64指令集(架構(gòu))的國產(chǎn)CPU,于2019年發(fā)布。兆芯于2013年成立,不久之后就使用VIA的CPU成品成功申請了“核高基”重大專項,獲得“核高基”和上海國資委共70億人民幣投資。它的CPU初始技術(shù)是從VIA(臺灣威盛)購買,而VIA的CPU都由位于美國的子公司Centaur(半人馬)設(shè)計。VIA去年(2021)11月把Centaur的CPU設(shè)計團隊賣給了Intel,但在此之前,2020年10月時就已經(jīng)再次向兆芯轉(zhuǎn)移設(shè)計資料,以2.57億美元的價格把“部分芯片產(chǎn)品相關(guān)技術(shù)、數(shù)據(jù)等知識產(chǎn)權(quán)(不含專利權(quán))”賣給了兆芯。
在VIA淡出CPU市場后,Centaur就處于半死不活的狀態(tài),可以說是兆芯幫VIA養(yǎng)活了Centaur??墒且换仡^VIA就一女二嫁,先把花兆芯的錢完成的最新設(shè)計高價賣給兆芯,再把設(shè)計團隊賣給了Intel。除了為了讓兆芯有資格設(shè)計x86/AMD64的CPU而必須保留的合資者身份之外,在CPU研發(fā)層面已經(jīng)從國產(chǎn)x86的偉大事業(yè)中徹底脫身,實在不當(dāng)人子。

因合作關(guān)系發(fā)生重大變化,兆芯使用全新核心的CPU從2020年開始就一直推遲,可能要到2024年才能發(fā)布產(chǎn)品。在使用新核心的產(chǎn)品問世之前,兆芯只有KX-U6780A是能拿得出手的桌面處理器。
官網(wǎng)介紹KX-U6780A在3.0GHz時,使用ICC(Intel C/C++/Fortrant)編譯器在Linux測試SPEC CPU2006的“單任務(wù)”int(整數(shù)通用性能)成績是29.2,浮點成績是38,但未說明是base測試還是peak測試,但據(jù)推測兆芯官網(wǎng)上公布的成績都是peak成績。
ICC編譯器對SPEC CPU2006的部分測試項目和類似的科學(xué)計算類程序有專門的優(yōu)化,特別是對編號為462的測試子項優(yōu)化水平令其它編譯器望塵莫及,但對其它測試子項和普通應(yīng)用程序的優(yōu)化水平則達(dá)不到相同的程度。又因為ICC對常規(guī)應(yīng)用程序的編譯不是很友好,也僅支持x86/AMD64架構(gòu),所以各種操作系統(tǒng)和應(yīng)用軟件甚少使用ICC編譯器編譯。在Windows下C/C++編寫的應(yīng)用軟件以使用MSVC和GCC編譯器為主,在Linux系統(tǒng)下,各種Linux發(fā)行版和應(yīng)用軟件,普遍使用的是GCC編譯器。也就是說使用GCC編譯器測試的SPEC CPU2006時,最能反映CPU在實際系統(tǒng)和軟件環(huán)境中的性能水平,而不僅僅是跑分的水平。特別是在跨架構(gòu)對比CPU性能時,比如ARM與x86/AMD64進(jìn)行對比時,盡量使用相同的編譯器是很重要的條件。因此我打算使用GCC編譯器實測KX-U6780A在Linux系統(tǒng)下的通用性能表現(xiàn),也就是測試整數(shù)性能。因精力有限,浮點性能暫不測試,只把測出的整數(shù)性能與其它的一些CPU進(jìn)行橫向?qū)Ρ取?/strong>
在開始測試之前,我先在SPEC官網(wǎng)找了一些同樣使用ICC編譯器的CPU測試成績作為參考,看看KX-U6780A的水平如何。事實上在任何的整機宣傳資料中都沒有見過3.0GHz的KX-U6780A,最高只見到2.7GHz的,我買到的也是2.7GHz的產(chǎn)品。當(dāng)然3.0GHz的KX-U6780A肯定存在,因為有它的測試成績,那么此處也使用3.0GHz時的成績進(jìn)行對比:

上表中的int表示整數(shù),fp表示浮點,speed是單任務(wù),rate是多任務(wù)??梢钥闯?,KX-U6780A在核心數(shù)量、內(nèi)存性能、操作系統(tǒng)性能、編譯器版本都明顯占優(yōu)的情況下,“單任務(wù)”整數(shù)(通用性能)略超Q9650,浮點性能也更勝一籌,但與2015年發(fā)布的i5-6400(4核無超線程)相比,KX-U6780A的單任務(wù)性能不到i5-6400的一半,即使用8核對比4核,多任務(wù)性能也有明顯差距。單任務(wù)浮點性能僅約i5-6400的44%,多任務(wù)浮點性能也遠(yuǎn)弱于4核的i5-6400。KX-U6780A的浮點性能本次不實測,以后有空再說。
之所以強調(diào)“單任務(wù)”而非“單核”,是因為SPEC CPU2006的部分測試項目可以通過開啟編譯器“自動并行化”支持,使單個測試任務(wù)在多個CPU核心上并行運行,從而提高總成績。上面的測試都是開啟了“自動并行化”之后的測試成績,KX-U6780A是8個核心,與4個核的CPU進(jìn)行對比時天然具有優(yōu)勢條件。
絕大多數(shù)桌面應(yīng)用軟件僅在處理少部分任務(wù)時會使用多線程,對常規(guī)的應(yīng)用軟件通過編譯器開啟“自動并行化”也是沒有效果的,大多數(shù)時間的運行狀況由CPU單核性能決定。因此下面進(jìn)行int_base測試時我不會開啟“自動并行化”,但進(jìn)行int_peak測試時我會對編號462的單項開啟“自動并行化”,通?!白詣硬⑿谢币仓粫幪?62的單項有效。我測試用的KX-U6780A主頻是2.7GHz,因為買不到官方測試使用的3.0GHz版本。具體測試環(huán)境如下:

首先看看使用GCC的各種編譯優(yōu)化參數(shù)來編譯SPEC CPU 2006的整數(shù)(通用性能)測試集時,KX-U6780A的單任務(wù)int_base性能如何。這里的單任務(wù)是沒有開啟“自動并行化”的,也就是純粹的單核心成績。下表中沒有列出我測試過的所有參數(shù)組合,僅僅是一小部分有代表性的測試結(jié)果。

可以看出在使用單一的優(yōu)化參數(shù)時,成績最好的是-O2,一些在印象中大概率對性能有益的參數(shù),在加上后反而會使總成績降低。經(jīng)過反復(fù)調(diào)整參數(shù),最后還是以-O2為基礎(chǔ)配置參數(shù)組合,測試得到的成績最好。
-fno-strict-aliasing這個參數(shù)也比較有意思,它本身不屬于性能優(yōu)化參數(shù),主是要用于解決某些c/c++代碼與編譯器的兼容性問題的,但是加上它之后測試成績明顯降低。仔細(xì)對比發(fā)現(xiàn)當(dāng)使用-fno-strict-aliasing參數(shù)后,大部分測試項目成績明顯降低,而有幾個項目的成績反而提升了一些。base測試時要求所有測試項目配置的編譯“優(yōu)化參數(shù)”必須一致,但因為這個參數(shù)不屬于“性能優(yōu)化”參數(shù),所以我就給有提升的項目單獨用上了。
反復(fù)調(diào)優(yōu)之后得到的int_base成績也僅僅15.6分,int_peak成績有17.5分,也比較低。這樣的成績與ICC測試得到的成績差距很大,但卻是合理的,因為這是模擬的普通用戶環(huán)境的性能表現(xiàn),而不單單為了跑分??梢园褞卓頒PU的ICC和GCC測試成績進(jìn)行對比,看看KX-U6780A的ICC和GCC成績比例是否與它們差不多:

把KX-U6780A的測試成績與我實測過的其它CPU對比,則有下面的圖表:

上圖中除了龍芯3A5000的int_peak成績之外,其它都是本人實測的結(jié)果。把不同CPU的單核成績折算到相同頻率后的結(jié)果,可以代表CPU的核心設(shè)計水平。從上圖可見兆芯與飛騰的CPU核心設(shè)計水平是一個梯隊,龍芯CPU的核心設(shè)計水平則與Intel數(shù)年前的產(chǎn)品相當(dāng)。實際上Intel直到11代酷睿,每GHz的性能也提升不大,但是它的CPU最高頻率已經(jīng)突破了5GHz。國產(chǎn)CPU因為設(shè)計團隊與代工廠的生產(chǎn)工藝缺乏磨合,后端設(shè)計技術(shù)和經(jīng)驗積累不足,尚沒有任何的量產(chǎn)產(chǎn)品突破3GHz的頻率。
假設(shè)當(dāng)前國產(chǎn)CPU的運行頻率也都能達(dá)到5GHz,那么龍芯的CPU單核性能會與Intel/AMD的產(chǎn)品接近,而兆芯和飛騰的CPU單核性能則只有Intel/AMD的一半。在當(dāng)前國產(chǎn)CPU的運行頻率都只有Intel/AMD最高端產(chǎn)品的一半,龍芯的CPU單核性能也就接近Intel/AMD最高單核性能的一半,而兆芯和飛騰則只有1/4。因此兆芯和飛騰不約而同地通過增加核心數(shù)量來彌補單核性能的不足,畢竟增加核心數(shù)量要比提高單核性能容易許多。
CPU的多核性能不是單核性能的簡單累加,受cache同步、內(nèi)存訪問等影響,核心數(shù)量越多,在多核并行時的平均單核性能就越低。我再測試了8個核心的KX-U6780A多核(多任務(wù))整數(shù)性能,在測完單核后測多核就簡單了,只需要運行測試工具時指定并行運行的實例數(shù)量,實例數(shù)量通常與CPU核心數(shù)量相同。測試得到的int_rate_base成績?yōu)?3.2,int_rate_peak成績?yōu)?6.7。這個成績比飛騰的8核D2000略低,但高于4核的龍芯3A5000。

兆芯KX-U6780A的單核測試成績比飛騰D2000略好,多核并行時成績又比D2000低一些,說明它的多核互聯(lián)效率可能要比D2000差一些。以int_base的單核和多核成績計算多核并行效率如下:

雖然看起來龍芯3A5000的多核并行效率最高,但這并不絕對,因為3A5000只有4個核,另兩款CPU都是8核。在測試KX-U6780A多任務(wù)成績時,8核滿負(fù)載時整機功耗在100W左右,整機中無獨顯,除主板/CPU/風(fēng)扇之外,僅兩根內(nèi)存和一個nvme硬盤。在進(jìn)行相同的測試時,飛騰D2000和龍芯3A5000的整機功耗都是60W左右,而這3款CPU的制程、頻率、和全CPU性能都是相差無幾的。

再回頭看看兆芯KX-U6780A在int_base測試中的各子項成績,可以看出兆芯KX-U6780A與另外兩款國產(chǎn)CPU細(xì)致的性能區(qū)別:

可以看到在大部分測試項目中,KX-U6780A都和D2000差距微小,只有429.mcf和462.libquantum這兩項有較大差距,才使總成績高于D2000。
我的測試成績肯定沒有達(dá)到最優(yōu),但自信在相同的測試環(huán)境下,無論如何調(diào)整編譯優(yōu)化參數(shù),成績提升的幅度也不會超過10%,大概率連5%都超不過。如果有人認(rèn)為我的測試環(huán)境和編譯參數(shù)等存在問題,歡迎指正,但拒絕沒有依憑、信口開河的指責(zé)。除了有權(quán)威機構(gòu)作保的官方或半官方的公開成績之外,我認(rèn)為所有的“個人測試”都應(yīng)試公開相關(guān)的軟硬件環(huán)境、配置參數(shù)、以及完整的測試報告。無論測試成績是高還是低,如果連公開編譯參數(shù)讓其他人復(fù)現(xiàn)都不敢,那么這樣的“個人測試”就經(jīng)不起推敲。經(jīng)不起推敲的“個人測試”成績我見過不少,有關(guān)于龍芯的,也有關(guān)于飛騰的,還有關(guān)于兆芯的,區(qū)別只是測某種CPU的成績都極差,測其它CPU的成績都極好罷了。那些測試的共同點是都不提供測試用的編譯參數(shù),也不貼出測試報告的截圖,甚至有人在測試FT-2000/4時,寧可拿著手機拍攝“測試過程”,也要“保密”配置信息和測試報告。掩耳盜鈴、自欺欺人,只會令消費者對所有的國產(chǎn)CPU都失去信心!
對于以個人身份進(jìn)行的測試,我認(rèn)為只有公開透明,可以讓他人復(fù)現(xiàn)測試過程和結(jié)果,才能避免爭議,經(jīng)得起推敲。下面貼上我的測試報告:
KX-U6780A使用GCC/Linux測試SPEC CPU2006整數(shù)單任務(wù)(int_speed_base&peak)性能的測試報告(點擊或用新標(biāo)簽頁打開圖片放大):

KX-U6780A使用GCC/Linux測試SPEC CPU2006整數(shù)多任務(wù)(int_rate_base&peak)性能的測試報告(點擊或用新標(biāo)簽頁打開圖片放大):

如果上面的測試報告截圖看不清,那么可以留言或私信寫上電子郵箱,我給你發(fā)測試報告的原文件。