每GHz的性能不等于CPU產(chǎn)品的性能,但能體現(xiàn)CPU核心的設(shè)計水平。有了高超的CPU設(shè)計能力,即便使用較為落后的工藝來生產(chǎn),也能保證CPU產(chǎn)品具有較高的性能水平。而每GHz性能低下的CPU核心,則必須依靠先進工藝全力提高CPU頻率,不符合國內(nèi)現(xiàn)在的實際情況。如果一款CPU每GHz的性能只有龍芯3A6000的三分之一,那么就需要三倍的頻率才能與龍芯3A6000抗衡,不但超出了當前的工藝極限,功耗和發(fā)熱量也會提高到3倍以上。
龍芯3A6000依托境內(nèi)的可控工藝,主要通過設(shè)計能力實現(xiàn)了性能大幅度提升,CPU核心的設(shè)計一舉達到了世界先進水平。我國在上世紀80年代初由于經(jīng)濟和工業(yè)水平無法支撐高端半導體技術(shù)發(fā)展,被迫放棄了自主設(shè)計微處理器。我國與美國在CPU設(shè)計能力方面的差距實際已經(jīng)累積了五十年,龍芯經(jīng)過二十多年的不懈努力,彌合了這長達半個世紀的差距。
這次我用來與龍芯3A6000進行性能對比的CPU共有八款,其中五款是國產(chǎn)CPU,兩款是Intel的產(chǎn)品,一款是AMD的產(chǎn)品。
國產(chǎn)CPU中,龍芯3A5000是龍芯上一代的桌面產(chǎn)品,海光C86-3250是8核16線程,核心數(shù)量是3A6000的兩倍。兆芯KX-U6780A和飛騰D2000也是8個核心但沒有超線程,鯤鵬920是國內(nèi)目前唯一使用7nm工藝的桌面和服務器CPU產(chǎn)品。兆芯、飛騰、華為自2019年之后就沒有推出性能更強的桌面CPU,所以只能用它們4年前的產(chǎn)品參與對比。
兩款I(lǐng)ntel的CPU分別是10代酷睿i3-10100F和13代酷睿i3-13100F,它們和3A6000一樣是4核8線程,但它們的主頻比3A6000高得不是一星半點。i3聽起來好像很低端,但10代i3的規(guī)格其實和7代酷睿i7一樣,更高端的型號主要是集成了更多的核心。10代酷睿CPU因為IPC有小幅度提升,再加上工藝進步,所以它的實際性能比7代i7還高一些。最后一款是AMD R5-5600G,核心是Zen 3代,6核12線程。
兩款I(lǐng)ntel的CPU我都沒有裝進機箱,AMD的CPU用的開放式機箱。因為所有CPU都是使用的普通風冷散熱器,Intel和AMD的CPU發(fā)熱量又比較高,裝進普通機箱會因為積熱而影響性能發(fā)揮。
幾款CPU支持的內(nèi)存頻率也不一樣,凡是使用2666內(nèi)存的,都是因為CPU或主板只能支持到2666,上不到3200。內(nèi)存都是雙通道,在測試單核性能時內(nèi)存不是瓶頸,2666和3200的差異幾乎不影響測試成績,不過在測試多核性能的時候,3200的內(nèi)存要比2666多一些優(yōu)勢。但這一點優(yōu)勢又很容易因為CPU高溫降頻而損失殆盡,不過龍芯3A6000是固定頻率2.5GHz,倒是沒有散熱器壓不住溫度的焦慮。
對于尚未正式發(fā)布的龍芯3A6000,目前只有龍芯自己的Loongnix系統(tǒng)才能較好地發(fā)揮它的性能,因此這次測試3A6000是使用Loongnix系統(tǒng),其它CPU使用UOS系統(tǒng),編譯器都是系統(tǒng)自帶的GCC8.3版本。
UOS系統(tǒng)的龍芯版本實際上是使用的Loongnix的內(nèi)核和基礎(chǔ)組件,只不過UOS的優(yōu)化更新會落后于Loongnix一段時間,所以3A6000當前在Loongnix上的性能表現(xiàn),在幾個月之后就能在UOS龍芯版系統(tǒng)上重現(xiàn)。
為了能準確地定位龍芯3A6000核心設(shè)計的水平,我對i3-10100F、i3-13100F和R5-5600G除了進行通常狀態(tài)下的測試之外,還把它們鎖定到了與3A6000相同的頻率再次進行了測試,以便于對比它們在2.5GHz時與3A6000的性能差異。
龍芯中科提供的測試機是有歸還時限的,因此開始時我本來不打算測試SPEC CPU 2006,而是想測試國內(nèi)CPU廠商很少提及的SPEC CPU 2017。不過一些網(wǎng)友知道我拿到了龍芯3A6000測試機之后,強烈要求我測試SPEC CPU 2006。因此我中斷了對SPEC CPU 2017的測試,先把SPEC CPU 2006跑了一遍。在與其它的國產(chǎn)CPU對比時,SPEC CPU 2006的測試成績也更有意義。
SPEC CPU 2006是一款比較專業(yè)的CPU性能評估工具,它的代碼沒有針對特定平臺優(yōu)化,由測試者自行編譯運行,因此適合用于跨平臺對比CPU性能。但ICC和AOCC等編譯器為了在SPEC CPU測試中跑出高分,會犧牲計算精度換取運行速度,因此大家一般更加認可使用GCC、LLVM、MSVC等編譯器測試得到的成績。
SPEC CPU 2006測試的是CPU運行常規(guī)應用軟件時的通用性能,包含了12個整數(shù)性能測試項目,和17個浮點性能測試項目,每個子項目都單獨評分,然后把各個子項的測試成績進行幾何平均得出總分。
SPEC CPU 2006分為單任務測試和多任務測試,但是單任務測試的時候,有部分測試項目可以通過編譯器的自動并行化支持把計算任務自動分配到多個核心上并行執(zhí)行。因此凡是開啟了自動并行化的測試結(jié)果,都不能代表CPU的單核性能。對于桌面電腦的CPU,最為重要的是整數(shù)通用性能,特別是單核的整數(shù)通用性能。因為單核整數(shù)性能最能體現(xiàn)桌面應用程序的運行效率。
在3A6000流片之后,龍芯中科公開過兩次SPEC CPU 2006測試成績。第一次單核整數(shù)和浮點得分分別是40和55,第二次是在加強了GCC編譯器對自主指令集Loongarch的優(yōu)化之后,由工信部旗下賽西實驗室測試的成績,單核整數(shù)和浮點成績分別是43.1和54.6。
上圖中提到了“編譯器‘補課’”,學霸從來不會承認自己補課,把補課掛在嘴邊的都是差生。龍芯自主設(shè)計的LoongArch指令集才誕生兩三年,龍芯的工程師雖然已經(jīng)給GCC等常用編譯器添加了對LoongArch指令集的支持,但優(yōu)化的程度還與x86和ARM相差甚遠。因此龍芯要通過“補課”,使GCC編譯器對LoongArch指令集的優(yōu)化追上x86和ARM的水平。
龍芯提供的測試機硬盤中有已經(jīng)編譯好的SPEC CPU 2006測試環(huán)境,直接運行就能得到測試成績。但因為龍芯補課完成的最新版本的GCC編譯器還沒有到發(fā)布階段,沒有提供最新版本的編譯器,所以我如果要自己配置編譯參數(shù)來測試SPEC CPU 2006,就只能使用系統(tǒng)中現(xiàn)有的老版本編譯器。因此我暫時只嘗試復現(xiàn)龍芯第一次公布的實測成績,等3A6000正式上市銷售了,操作系統(tǒng)和編譯器應該也完成了升級更新,那時我再去嘗試復現(xiàn)更高的43.1的單核整數(shù)成績。
我用自己的硬盤重新安裝了Loongnix系統(tǒng),并自行配置參數(shù)測試了SPEC CPU 2006,單核整數(shù)性能測試的結(jié)果還不錯,達到了40.1分,與龍芯公布的編譯器“補課”完成前的40分相符。直接運行測試機中提供的SPEC CPU 2006,得分42.9,與公布的43.1相符。
與編譯器“補課”完成后的測試成績相比,新編譯器對12個測試項目的9個項目有提升。這說明龍芯絕不是像ICC和AOCC編譯器那樣為了跑分而優(yōu)化,因為編譯器如果是針對跑分優(yōu)化,往往只能把某一個子項目的成績提到極限,而其它項目的成績基本不變。
就像下面這款至強CPU的測試成績,使用了ICC編譯器和收費的跑分專用優(yōu)化庫,在測試報告的條形圖上,只有一個項目一支獨秀,其它項目都被擠壓成了薄薄的一片兒。幸好總分是通過幾何平均來計算,如果是算術(shù)平均的算法,Intel的測試成績將無人能敵。除了Intel和AMD之外,國產(chǎn)x86廠商也有這樣跑分的,在宣傳的時候又刻意回避測試環(huán)境和子項成績,讓人看不出貓膩。我也是在吃了虧上了當之后,才有了自己測試國產(chǎn)CPU并把結(jié)果公之于眾的想法,能少幾個人上當總是好的。
ICC和AOCC的超強優(yōu)化原理其實很簡單,就是犧牲計算精度提高計算速度。但是這種優(yōu)化會使編譯器出現(xiàn)預料之外的行為,會把不該優(yōu)化的也優(yōu)化了,等于是犧牲了全局的計算精度和兼容性。沒有任何商業(yè)版的操作系統(tǒng)和應用軟件使用ICC和AOCC,就是因為很難保證程序運行時的正確性。在必須保持計算精度的時候,ICC和AOCC卻又表現(xiàn)不出明顯的優(yōu)勢。而龍芯的編譯器不可能像ICC和AOCC那樣顧頭不顧腚,因為龍芯電腦上所有操作系統(tǒng)和應用軟件,都是直接或間接地使用龍芯的編譯器,所以龍芯的編譯器絕對要保證正確性。
龍芯新版編譯器測出的成績中,編號462的子項目看起來很像是使用GCC自動并行化參數(shù)結(jié)果,但我在測試時觀察了CPU的占用情況,確定整個測試過程中只有一個核心滿負載,其它核心的占用率都低于1%。說明成績提升是來自于編譯器“補課”,也說明龍芯3A6000的向量指令運行效率很高,只是當前版本的編譯器還不能釋放它的性能。何況就算把462這一項成績換成我的測試結(jié)果,幾何平均后總分也仍然接近42分,完全不影響關(guān)于性能水平的結(jié)論。后面的Linpack測試也能證明龍芯3A6000的向量計算能力很強,并且當編譯器能夠完整地支持“龍架構(gòu)”的向量指令之后,3A6000會更強。
我對龍芯的GCC編譯器仍然使用“補課”這個詞,是因為在x86版的GCC面前不敢說“優(yōu)化”。在GCC編譯器和Linux中,積累了Intel和AMD以及眾多其它開發(fā)者對x86指令集幾十年的優(yōu)化成果,龍芯的龍架構(gòu)在基礎(chǔ)軟件優(yōu)化方面,能夠在兩三年內(nèi)補上差距就已經(jīng)很厲害了。等龍芯發(fā)布新版操作系統(tǒng)和編譯器之后,無論測試成績還是應用軟件的實際體驗,都一定會有相應的提升。
為了探索龍芯3A6000的性能水平,我在申請到測試機之前,就已經(jīng)開始了漫長的測試過程。下面這張圖中,三款進口CPU從1.0GHz到4.0GHz的測試成績不是通過換算得到的,而是我把它們鎖定頻率后一點一點實測出來的。從1.0GHz到4.0GHz,每隔500MHz就運行一次SPEC CPU 2006,然后得到了它們的單核整數(shù)和浮點成績與CPU頻率的對應關(guān)系。通過下方的圖表可以確定兩點規(guī)律:
一、當CPU的頻率相同的時候,三款CPU的性能各不相同。早先AMD被Intel打壓得瀕臨崩潰,然后又反過來壓了Intel一頭,之后Intel掏出壓箱底的技術(shù)儲備又保住了市場地位。導致這一切變化的主要因素,就是它們每GHz的性能交替性地出現(xiàn)了重大提升。總有各種原因使CPU不能運行在較高的頻率,但只要每GHz的性能足夠強, 那么在低頻率下也仍然能保障不錯的性能,并且只要滿足了達到高頻率的條件,就能獲得更高的性能,這就是高性能CPU核心設(shè)計中強調(diào)每GHz性能的原因。
二、當內(nèi)存性能固定的時候,CPU的性能與頻率不是等比例地提升,每GHz的性能總是隨著頻率升高而降低。CPU頻率翻倍時功率也一定翻倍,但性能卻不能翻倍。因此在低頻率下實現(xiàn)的高性能更有價值,而實現(xiàn)低頻高能的唯一途徑就是提高每GHz的性能。
我在測試這三款CPU性能的過程中,就發(fā)現(xiàn)10代i3在設(shè)置了固定4.0GHz的頻率后,測試過程中會因為溫度過高而降頻。我為了避免頻率波動而臨時換成了比CPU還貴的水冷散熱器,但除此之外的其它測試都仍然使用原來的散熱器。因為我認為在極度優(yōu)化的條件下測出的成績,對于占了絕大多數(shù)的普通家庭和辦公電腦用戶沒有意義。DIY和超頻玩家有另外的性能評價標準,我在常規(guī)環(huán)境下的測試也不會干擾他們的判斷。
所有CPU都是使用SPEC CPU 2006的base模式進行測試,編譯器都是系統(tǒng)自帶的GCC8.3版本。不使用第三方使用優(yōu)化庫,也沒有開啟自動并行化,測出的成績能真實反映CPU在用戶的系統(tǒng)和軟件環(huán)境中能達到的性能水平。
3A5000和3A6000的頻率都是固定的2.5GHz,只要把它們的測試成績標注在2.5GHz的坐標軸上,就既能看到三款進口CPU與它們在相同頻率時的性能對比,也能看到它們與這三款進口CPU的性能差距。
13代酷睿i3-13100F在2.5GHz時的成績剛好40分,我測得3A6000的40.1分比它更高一點,但13代酷睿工藝比10代酷睿先進,單核最高頻率可以比較容易地長時間穩(wěn)定在4.4GHz,因此3A6000與i3-13100F實際的性能差距還比較大。
下圖是各款CPU的單核整數(shù)成績對比,3A6000是使用的官方成績,其它的CPU都是我自己測試的結(jié)果。其中Intel和AMD的CPU包括了自動控制頻率和固定2.5GHz時的成績,便于與2.5GHz的龍芯3A6000對比相同頻率時的性能。
3A6000使用與3A5000相同的生產(chǎn)工藝,在頻率不變的條件下把單核性能提高了60%,這完全是來自于CPU核心設(shè)計的提升。提高每GHz的性能和提高CPU頻率都能達到提高性能的目的,兩種方式各有各的困難。提高頻率必須把CPU電路的布局布線與生產(chǎn)工藝緊密結(jié)合,需要反復多次流片尋找短板加以改進,一點一點地推高頻率,資金消耗非常大。如果更換了工藝或者對CPU核心設(shè)計有重大修改,又必須重復提高頻率的過程。
提高每GHz的性能更加困難,考驗的是核心技術(shù)積累和創(chuàng)新的能力,Intel把每GHz的性能提高到現(xiàn)在的程度用了四十多年,AMD曾經(jīng)因為設(shè)計能力進入瓶頸,每GHz性能多年沒有提升而幾乎倒閉。提高每GHz的性能和提高頻率不是二選一,但龍芯目前的路線是優(yōu)先提高每GHz的性能,暫時不苛求高頻率。大概是因為以國內(nèi)當前的工藝水平很難達到與Intel一樣的頻率,在每GHz的性能超越Intel之前盲目提高頻率就只是浪費資源,把有限的資金用于研發(fā)更多的核心技術(shù)才更有意義。
龍芯自主研發(fā)的核心技術(shù)涵蓋了CPU和主板必需的各種功能模塊,還包括了自主研發(fā)的GPU。龍芯GPU LG100已經(jīng)集成在了龍芯的橋片7A2000中,LG200將會集成到下一款桌面CPU 3B6000中。單看對現(xiàn)代桌面計算機所需的核心功能模塊的積累,能在先進性和完備性兩個方面同時超過龍芯的可能只有Intel和AMD。
龍芯3A6000無論是43.1還是40.1的得分,都超過了i3-13100F和R5-5600G在2.5GHz時的成績。假如國內(nèi)的芯片生產(chǎn)工藝跟得上,并且龍芯也有足夠的資金與代工廠反復磨合提高主頻,那么3A6000的對手就不止是10代酷睿i3了,至少能再提高一個段位。
10代酷睿i3-10100F在2.5Ghz時的測試成績僅30.8,比龍芯3A6000低了不少。自動控制頻率時成績是42.5,與龍芯3A6000持平。i3-10100F測試過程中頻率有波動,平均頻率大約3.6GHz,與它的基礎(chǔ)頻率一樣。10代酷睿i3的最高型號是i3-10105(F),基礎(chǔ)頻率和睿頻都只比i3-10100F高0.1GHz,性能基本沒有區(qū)別。
測試3A6000整數(shù)通用性能的目標已經(jīng)達成,不過我測試浮點通用性能的成績暫時沒有達到55分,目前只有51.7分。我覺得我現(xiàn)在使用的GCC編譯器,版本可能比龍芯第一次公布3A6000實測成績時用的編譯器更老,要不然不會出現(xiàn)這樣的差距。因為還要留下時間測試SPEC CPU 2017和其它項目,所以我不會花太多時間來嘗試調(diào)整編譯參數(shù),還是等龍芯更新編譯器吧!
無論是51.7還是54.6,都與13代酷睿在2.5GHz時的成績差距不大,而且要比AMD R5-5600G的Zen 3代核心好一些。因為3A6000的整數(shù)通用性能也比相同頻率下的R5-5600G更高,所以可以確定3A6000的LA664核心在同頻率下的性能超過了AMD的Zen 3代核心,也應該超過了Zen 4代核心。龍芯3A6000的性能雖然只與10代酷睿i3相當,但CPU核心的邏輯設(shè)計水平已經(jīng)是世界一流的水準。
10代酷睿i3-10100F在4.0GHz時,單核浮點通用成績也才56.1分,而通常情況下i3-10100F保持不了4.0GHz的頻率,實測只有51.3分,我測得3A6000的51.7分要比它高一些。因此龍芯3A6000在浮點通用性能方面也已經(jīng)追平了10代酷睿i3。13代酷睿相對10代酷睿同頻率的浮點通用性能提升幅度高達60%,但3A6000相對于3A5000則實現(xiàn)了幾乎翻倍的提升,說明龍芯雖然絕對性能與Intel相比還有差距,但進步的速度比Intel更快。
與國內(nèi)的其它CPU對比的話,3A6000就令所有的國產(chǎn)CPU都望塵莫及了。最差的兆芯和飛騰單核浮點通用性能甚至只有3A6000的四分之一。
通過單核性能測試已經(jīng)再次證明龍芯官方公布的成績是靠譜的,因此對于多核并行性能,就直接用官方的測試成績來與我測試的其它CPU作個對比。
通過下方的條形圖,可以明顯地看到3A6000的多核并行性能也與i3-10100F是相同水平。測試i3-10100F多核并行性能時與測試單核時的散熱條件一致,如果把它裝進機箱,測試成績就會大幅度下降。當然,如果加強散熱也可以帶來5%左右的性能提升,不過不影響3A6000與i3-10100F性能基本相等的結(jié)論。由于Intel和AMD的CPU性能發(fā)揮極度依賴于散熱,因此對于蓋得嚴嚴實實的家用和辦公電腦,3A6000的多核并行性能甚至能與10代i5拼一拼。
Intel和AMD的CPU非常有趣,因為性能是不確定的,主頻和睿頻只能決定CPU性能的上限,而管不了CPU性能的下限,所以極大地增強了用戶探索CPU性能極限的趣味性。有網(wǎng)友提供了10代i5筆記本的測試成績,也是4核8線程,但多核并行成績只有桌面i3的一半,也就是也只有3A6000的一半,甚至低于3A5000的水平。當然如果是游戲筆記本,性能就不會降這么多,但商務筆記本就很難說了。
在多核并行的對比中,國產(chǎn)CPU中只有海光C86 3250的成績超過了龍芯3A6000,因為海光C86 3250是8核16線程,而龍芯3A6000是4核8線程。等龍芯8核的3B6000推出,那么能接得住就只有Intel和AMD。與海光3250同樣有8個物理核心的兆芯KX-U6780A和飛騰D2000,多核性能則只有龍芯3A6000的一半。
因為多核并行時的損耗會隨著核心數(shù)量增加而增加,所以部分國產(chǎn)CPU廠商在單核性能還很低的時候,不想著提高單核性能,反而毫無節(jié)制地碓砌核心數(shù)量,就令人難以理解。
比如飛騰64核的S2500,多核并行的測試成績只有龍芯3A6000的3倍多一點,是64核的性能只有4核的3倍多。還有基于阿里平頭哥C910核心的RISC-V架構(gòu)的某款64核CPU,單核性能比飛騰的CPU更低,64核并行的成績只有300分,也就是不到3A6000的兩倍,這比“i3默秒全”還要夸張啊朋友們。
在實際應用中,一個40分的核心,無論是單任務還是多任務并行,運行效率都遠遠高于四個10分的核心。連軟件工程師都明白的事兒,難道CPU工程師們不明白嗎?這些低性能的多核CPU,核心堆得越多就越是耐人尋味。
前面說過龍芯3A6000的向量指令運行效率很高,那么現(xiàn)在就來測一下比較考驗向量計算性能的Linpack。
Linpack也是一種常用的性能測試程序,它通過計算雙精度線性方程組的求解來測試計算機的運算能力,Linpack的測試成績代表的是計算機最基本的計算性能?;A(chǔ)的Linpack版本只能測試CPU的性能,超級計算機使用Linpack來測試時,會針對異構(gòu)運算部件修改測試程序,超算500強的排名依據(jù)就是Linpack的測試成績。
現(xiàn)代編譯器都會自動使用CPU的向量指令來優(yōu)化計算速度,因此Linpack對于普通的CPU就特別考驗編譯器的能力。
想讓測試結(jié)果接近CPU的理論峰值非常困難,因此我偷個懶,直接使用openbenchmarking網(wǎng)站上的Phoronix Test Suite測試套件來測試,這樣所有的CPU都是使用相同的源代碼,由測試套件自動配置編譯和測試參數(shù),每一款CPU的測試成績都無法達到最高,也就相對公平了。
Phoronix Test Suite測試套件中的HPL-Linpack是多線程測試,CPU所有核心都會全速運行。因為是使用通用的編譯配置,所以就比較考驗編譯器自動向量優(yōu)化的能力,在這方面當前版本的龍芯編譯器是比較吃虧的。不過龍芯3A6000的測試成績看起來還是相當不錯,遠超10代i3,低于13代i3。測試時沒有鎖定頻率,也都是所有核心并行,各款CPU能跑多高就跑多高。
必須再次強調(diào)這個成績是使用的Phoronix Test Suite測試套件自動編譯并自動配置測試參數(shù),測試成績與CPU能達到的最高水平差距很大。i3-13100F在浮點通用性能測試中比i3-10100F只高了60%,但在Linpack測試中提高了80%。龍芯3A6000則與之相反,在浮點通用性能測試中比3A5000高一倍,但在Linpack測試中只高了28%。出現(xiàn)這樣的情況,幾乎可以肯定是編譯器過于陳舊導致的。因為3A5000的測試成績已經(jīng)比10代i3更高,那么3A6000就應該比13代i3更高才對,我非常期待龍芯對編譯器的后續(xù)更新能帶來驚喜!
SPEC CPU 2017是比SPEC CPU 2006更新的版本,測試的項目經(jīng)過調(diào)整,既刪除了被ICC、AOCC等編譯器通過降低計算精度提高測試成績的項目,又增加了更多的針對現(xiàn)代CPU向量指令的性能考察。在SPEC CPU 2017上,編譯器自動使用向量指令優(yōu)化程序性能的能力會對測試成績造成更大的影響,而我當前使用的GCC版本對龍芯向量指令的支持還不夠完善,龍芯在測試中是會比較吃虧的,不過沒關(guān)系,反正也不會有很大的差距。
SPEC CPU 2017也分為單任務和多任務測試,單任務測試也仍然支持自動并行化,不過2017版的測試報告中會明確標注自動并行化時的線程數(shù)量。只有不開啟自動并行化的單任務測試成績才能代表CPU的單核性能。大家在通過SPEC CPU的測試成績來對比CPU性能的時候,一定要注意測試報告中注明的編譯器類型、是否開啟了自動并行化、是否使用了第三方優(yōu)化庫等重要信息。
SPEC CPU 2017的測試項目不但和2006版有區(qū)別,而且多任務和單任務的測試項目也有區(qū)別,它們的成績不存在比例關(guān)系,能確定的只是綜合性能越強的CPU測試成績就一定越好。
我測試了單任務單線程和多任務的全CPU性能,先來看單任務單線程的整數(shù)和浮點測試成績。在當前的系統(tǒng)和編譯器環(huán)境下,我測試SPEC CPU 2006時得到的單核整數(shù)成績比10代i3稍低一些,但浮點成績又稍高一些。SPEC CPU 2017的測試結(jié)果也差不多,3A6000整數(shù)得分5.02,比10代酷睿i3-10100F低了一點,但差距不到10%。浮點成績是5.87,非常巧合地與i3-10100F成績一樣。
通過3A6000與i3-10100F以及2.5GHz時的i3-13100F的子項成績對比,可以發(fā)現(xiàn)3A6000有小部分的測試項目與它們有較大的差距,大部分的測試項目水平相當,綜合評分比較接近。3A6000單核性能與10代酷睿i3基本一樣的結(jié)論仍然成立,隨著系統(tǒng)和編譯器的逐漸完善,3A6000無論測試成績還是實際性能表現(xiàn)也都會再上一個臺階。
與13代i3-13100F在2.5GHz時的成績相比,3A6000的整數(shù)成績要低3%,但整數(shù)和浮點成績都超過了R5-5600G在2.5GHz時的得分。這與SPEC CPU 2006的測試情況一樣,再次證明3A6000的核心設(shè)計水平比AMD Zen 3代還強一些,可能和Zen 4代基本一致。只是可惜因為CPU頻率的差距,3A6000的單核性能只是與10代i3是相同水平,跟13代i3相比還有較大的差距。
在多任務測試中,3A6000與3-10100F的成績差距超過了10%,還在可接受的范圍內(nèi)。因為我使用的是還沒有完成“補課”的編譯器,所以不能很好地發(fā)揮3A6000的向量指令性能。盡管3A6000相對于3A5000的成績提升幅度也仍然超過60~70%,但我認為它的表現(xiàn)應該能夠更好一些,對SPEC CPU 2017的測試結(jié)果不是很令人滿意。
國產(chǎn)CPU的測試情況和SPEC CPU 2006相同,沒有任何一款能接近3A6000的單核性能,龍芯自己的3A5000也不行。海光C86 3250依靠多一倍的核心數(shù)量,多核成績比龍芯3A6000高50%,而兆芯和飛騰的8核CPU,多核成績?nèi)匀贿h遠低于4個核心的龍芯3A6000。
龍芯3A6000確實開啟了國產(chǎn)CPU的新時代,使用境內(nèi)的相對落后的工藝,主要依靠設(shè)計能力達到了市場主流CPU的性能水平。龍芯6000系列的下一款桌面CPU是3B6000,預計單核性能再提高20%,并改用8核的設(shè)計方案。我估計3B6000無論是單核性能還是多核性能都應該能接近或者追平Intel酷睿11代i7的水平。
UnixBench不是CPU測試工具,它測試的是最小整機系統(tǒng)的綜合性能。最小整機系統(tǒng)就是由CPU、主板、內(nèi)存、硬盤、操作系統(tǒng)構(gòu)成的可以啟動的完整系統(tǒng)。
UnixBench主要是測試一臺電腦處理日常事務的效率,包括文本處理、浮點函數(shù)、文件讀寫、進程創(chuàng)建、管道通信、腳本執(zhí)行等等,這些都是應用軟件和操作系統(tǒng)常用的功能。雖然這些功能都是由操作系統(tǒng)提供,但因為所有功能的執(zhí)行都與CPU有關(guān),所以它的測試成績也與CPU性能有直接關(guān)系。
不過操作系統(tǒng)如果對創(chuàng)建進程、管道通信等等功能進行優(yōu)化,也能提高測試成績,因此UnixBench是既測試CPU也測試操作系統(tǒng),內(nèi)存和硬盤性能也占了一定的比重。在不同的系統(tǒng)中,UnixBench測試成績的差異會比SPEC CPU的測試差異大一些。
因為UnixBench不是單純測試CPU的計算能力,而是體現(xiàn)電腦的綜合性能,所以多核并行的效率比較低,單核性能越高的就越有優(yōu)勢,更符合各種應用軟件的實際情況??傮w上看,UnixBench的測試成績代表的是電腦執(zhí)行日常任務的性能表現(xiàn)。
3A6000的UnixBench測試成績也相當不錯,單任務成績比10代i3-10100F高一些,多任務成績要低一些。3A6000多任務成績比i3-10100F低不是CPU的原因,應該是受到了操作系統(tǒng)的影響,x86版本的UOS系統(tǒng)對多任務并行的優(yōu)化可能要比Loongnix更好一些。但隨著龍芯對操作系統(tǒng)的優(yōu)化和升級,以后UnixBench的測試成績也自然地會隨之提高。
把13代i3-13100F和AMD R5-5600G鎖定在2.5GHz后,R5-5600G因為有6個物理核心,所以多任務成績略高于3A6000,其它的成績都比龍芯3A6000低。UnixBench的測試成績又一次說明了龍芯3A6000電腦的綜合性能與10代酷睿i3是相同水平,也略微超過了2.5Ghz時的13代酷睿i3和AMD Zen 3代。
國產(chǎn)CPU中只有海光C86-3250憑借8核16線程,以兩倍的核心數(shù)量規(guī)格在多任務測試中勝過了龍芯3A6000。兆芯和飛騰的兩款8核CPU單任務成績很低,3A6000是它們的2.5倍以上,它們8任務并行的成績只是與4核的龍芯3A5000及鯤鵬920接近,大約是3A6000的一半。
內(nèi)存頻率和通道數(shù)量并不等價于內(nèi)存訪問速度,訪存速度也取決于內(nèi)存控制器的性能,內(nèi)存控制器和內(nèi)存總是快的等慢的,誰慢聽誰的。內(nèi)存控制器是CPU中一個重要的組成部分,對于CPU的各種功能部件龍芯都一直堅持自主設(shè)計。
目前似乎還沒有哪款CPU的內(nèi)存訪問速率能達到理論帶寬,比如DDR4-3200雙通道的理論帶寬上限超過50GB每秒,但即使13代酷睿的實際訪存速率也只能達到43GB每秒左右。
Linux下測試內(nèi)存訪問速率通常是使用Stream測試軟件,它也是以源碼方式提供,根據(jù)編譯參數(shù)不同而得到支持單線程和多線程測試的兩種版本。通過設(shè)置運行時的參數(shù),還可以讓Stream支持各種線程數(shù)量,比如在8個核心的CPU上測試4個線程的內(nèi)存訪問速率。
內(nèi)存訪問速率除了受限于內(nèi)存控制器和內(nèi)存的性能之外,還與應用程序有密切關(guān)系。沒有任何正常的軟件會只讀寫內(nèi)存而不干點別的事情,像Stream這種內(nèi)存的帶寬測試軟件也是如此,Stream是在模擬普通應用軟件訪問內(nèi)存的方式——在循環(huán)中讀寫數(shù)組。因此Stream測試得到的內(nèi)存訪問速率,就能代表普通應用軟件訪問內(nèi)存的速率。
龍芯3A6000重新設(shè)計了內(nèi)存控制器,內(nèi)存訪問效率相對于3A5000有飛躍式的進步。下面的圖表展示了在使用Steram軟件默認的編譯參數(shù)時,對3A6000和兩款I(lǐng)ntel CPU的測試結(jié)果。因為10代i3搭配H系列主板時最高只能支持到DDR4-2666內(nèi)存,所以我借了一塊Z490主板測試了它使用DDR4-3200內(nèi)存時的訪問速率。
我分別進行了單線程、4線程、全核心的內(nèi)存訪問速率測試。測試成績的單位是兆字節(jié)每秒,每一個子項的測試細節(jié)不必深究,反正是越快越好。從測試結(jié)果來看,3A6000的內(nèi)存控制器水平比10代酷睿高,比13代酷睿差,峰值接近42GB每秒,說明龍芯自主設(shè)計的內(nèi)存控制器也達到了主流水平。
3A6000的內(nèi)存控制器相對13代酷睿來說還需要繼續(xù)完善,除了訪存速度不如13代酷睿之外,最明顯的問題是4線程的訪存速度居然比8線程更快。不過因為龍芯是第一次實現(xiàn)超線程的設(shè)計,出現(xiàn)這樣的現(xiàn)象我覺得可以理解。要是與其它的國產(chǎn)CPU對比,即使龍芯3A6000較差的那一組成績也是最優(yōu)秀的,是遙遙領(lǐng)先、一騎絕塵的存在。
通過對各款CPU訪存性能的測試,可以發(fā)現(xiàn)因為內(nèi)存控制器的效率不同,即使內(nèi)存的規(guī)格相同,訪存速度也會有幾倍的差距。當前國產(chǎn)CPU中只有龍芯3A6000能比較完美地發(fā)揮DDR4內(nèi)存的性能,包括3A5000在內(nèi)的其它國產(chǎn)CPU的內(nèi)存訪問效率都難以令人滿意。
能買到的內(nèi)存控制器IP性能都不高,就像高性能的CPU核心一樣屬于非賣品。目前國產(chǎn)CPU中只有龍芯通過不斷的自主迭代升級,使DDR4內(nèi)存控制器的效率能與Intel和AMD相提并論。在DDR4的賽道上,龍芯3A6000已經(jīng)終結(jié)了國產(chǎn)CPU之間的比賽。
一些國產(chǎn)CPU廠商已經(jīng)在準備升級到DDR5內(nèi)存了,但龍芯要到下一代7000系列才支持DDR5內(nèi)存。一是因為國內(nèi)短期內(nèi)不會有自主的DDR5內(nèi)存,二是因為龍芯還沒有把DDR4內(nèi)存的性能發(fā)揮到極限。如果僅僅為了利于宣傳而兼容DDR5的內(nèi)存規(guī)范,但卻體現(xiàn)不出DDR5的內(nèi)存性能,那么除了徒增成本,就沒有任何的實際意義。
龍芯3A6000在基礎(chǔ)性能測試中,部分超過了10代酷睿i3,也有部分還有10%左右的差距。主要是因為最新版本的操作系統(tǒng)和編譯器還沒有發(fā)布,目前版本的優(yōu)化水平相對于x86還有一些距離。以后隨著操作系統(tǒng)和編譯器的優(yōu)化逐漸到位,這一點差距也一定能被補上。
盡管在相同頻率的時候,龍芯3A6000的單核性能追平了Intel 酷睿13代,但由于工藝落后,以及資金投入不足,龍芯3A6000的主頻較低,實際性能僅相當于酷睿10代i3。
工藝和主頻在短期內(nèi)不會有明顯的改善,龍芯的下一代CPU產(chǎn)品仍然以提高每GHz的性能為主,將與Intel長期保持低頻打高頻的局面。美國對我國的自主CPU不會放松工藝限制,但對我國的引進技術(shù)CPU倒有可能網(wǎng)開一面。因此自主CPU只能依靠境內(nèi)相對落后的工藝制程與進口產(chǎn)品展開競爭,也就必須繼續(xù)強化CPU設(shè)計能力,通過提升每GHz的性能抹平工藝差距引起的性能差距。
完全自主的龍芯3A6000每GHz的性能追平了13代酷睿,也使通過引進技術(shù)發(fā)展國產(chǎn)CPU的路線遭遇了最嚴重的危機。因為依賴引進技術(shù)的CPU企業(yè)普遍缺少改進CPU核心設(shè)計的能力和動力,長期以來都是依靠更先進的工藝提升主頻以及堆砌更多的核心來提高CPU性能?,F(xiàn)在它們即使能獲得使用先進工藝的特別許可,但買不到能與13代酷睿匹敵的CPU核心設(shè)計也是瞎子點燈。
美國一方面禁止向中國出售高性能的計算產(chǎn)品,禁止中國企業(yè)使用先進的芯片生產(chǎn)工藝,另一方面又有限度地向中國企業(yè)出售CPU架構(gòu)授權(quán)、IP核授權(quán)、專利授權(quán),幫助中國CPU企業(yè)在美國可控的程度下成長,事實證明美國的策略沒有實現(xiàn)它希望的結(jié)果。
因為在技術(shù)方面依賴美國的中國CPU企業(yè),成長速度受到了美國限制,所以給國內(nèi)自主CPU留下了生存空間,無法完美地遏制自主CPU崛起。美國如果想要補救,那么就需要向中國企業(yè)出售IPC高于13代酷睿的CPU核心,但這樣就與限制中國發(fā)展高性能CPU的政策產(chǎn)生了矛盾,實際上美國幾年前就已經(jīng)不再向中國企業(yè)提供更先進的CPU核心及架構(gòu)授權(quán),轉(zhuǎn)而一心一意地以更直接的手段打擊和限制中國自主CPU的發(fā)展。
但是龍芯未雨綢繆早當先,居安思危謀長遠,主動拋棄了與美國有牽連的MIPS指令集,所有CPU產(chǎn)品都已經(jīng)基于自主指令集龍架構(gòu)(LoongArch)重新設(shè)計。龍芯的CPU生產(chǎn)也使用境內(nèi)可控的工藝,甚至建立了全面使用國產(chǎn)設(shè)備的芯片封裝測試廠。龍芯也一直在追求EDA工具的國產(chǎn)化,與國內(nèi)的EDA軟件企業(yè)進行了深入合作。
龍芯已經(jīng)把防御能力點滿,美國之前對龍芯實施的制裁,甚至都沒有激起一丁點波瀾。龍芯仍然按照既定的時間表穩(wěn)健地發(fā)展,3A6000也如期地展現(xiàn)在大家眼前,然后年底量產(chǎn)、發(fā)布、銷售,節(jié)奏一點兒都沒亂。
龍芯規(guī)劃的后續(xù)產(chǎn)品中,不止有單核性能更高的且集成了8個核心的3B6000,還有分別集成了16個和32個核心的3C6000和3D6000,這些產(chǎn)品都計劃在明年發(fā)布。3C6000和3D6000的CPU核心與3A6000相同,并針對服務器CPU核心數(shù)量多的特點,改進了多核及多路互聯(lián)的效率,使CPU并行效率進一步提升。
在新的核心設(shè)計通過3B6000得到驗證之后,就會推出32個和64個核心的3D7000和3E7000。6000和7000系列的服務器CPU完全具有與Intel高端的同類產(chǎn)品競爭的實力。無論是對比單核性能還是對比多核性能,都是相同的性能水平。
龍芯3A6000的誕生,標志著龍芯已經(jīng)從被動防御轉(zhuǎn)為了防守反擊的階段。龍芯二十年如一日堅持自主設(shè)計,才能有現(xiàn)今的成就。只有腳踏實地、實事求是、自強自立才能真正與國際接軌,成為支撐世界信息技術(shù)發(fā)展的擎天巨柱。