龍芯3A5000是龍芯中科自主設計的最新型號桌面CPU,比上一代3A4000提升了50%的性能。本人通過真機實測,印證了3A5000無論是單核性能還是多核性能,確實都有50%的提升。上一代3A4000較更早的3A3000性能翻倍時,仿佛都不如現在這50%的提升更令人激動,因為3A5000不但性能終于貼近了主流桌面CPU的性能區間,還使用了完全自主設計的LoongArch指令集,代表著一個全新時代的開端。
龍芯3A5000是一塊里程碑
龍芯3A5000的主頻為2.5GHz,使用SPEC CPU2006 測試的 int_base(整數計算基本性能)單核成績為26分以上,int_peak(整數計算峰值性能)單核成績為30分以上。這樣的性能如果與Intel/AMD的產品相比,僅僅是在主流的邊緣,但卻不應妄自菲薄,因為現在還能制約龍芯CPU性能的,幾乎只剩下了CPU運行頻率。
不同CPU在相同頻率下的性能,代表著CPU的核心設計水平,通常用IPC這個單位來衡量CPU核心的潛力。IPC的本意是指CPU每個時鐘周期執行的指令數量,但現在大家把它引申為每GHz的性能,也很合適。通過專業的CPU測試軟件對性能加以量化,把測試成績換算到1GHz,這樣CPU單核性能也就約等于 IPC * (頻率/Ghz),可以比較準確地估算出相同核心的CPU在不同頻率下的性能。
我把Intel i5-4460、i9-10850K都固定于2.5GHz的頻率,使用相近的GCC版本和編譯優化參數進行SPEC CPU2006 int_base測試,把成績與3A5000的實測結果作比較,在相同的頻率下,它們的單核性能已經非常接近。
龍芯官宣的int_base單核成績為26分以上,int_peak單核成績為30分以上。我的int_base測試成績為26.6,已經超過官宣成績。我的編譯優化配置非常簡單,一是所知有限,二是因為我懶。因此我覺得如果細致調整編譯參數,int_base的測試成績還能有一些提升空間。但是測試SPEC CPU2006太耗精力和時間,因此我只求達標,不求最高。int_peak我就覺得不用測試了,就以官方說的30分為準,畢竟為每一個測試子項單獨調配優化參數實在太費時間。
Intel的測試成績就比較奇妙了,從酷睿4代到10代,IPC提升微小,甚至內存從DDR3 1600變成了DDR4 3200也沒有讓IPC大幅上升。Intel恃著壟斷地位不思進取,每代新品幾乎只是依靠工藝改進,小幅度提高頻率和降低功耗,CPU核心設計進步乏善可陳。擠牙膏收智商稅,確信!在Intel擠牙膏這段時間,龍芯已經逐漸把IPC追近,CPU頻率也在不斷向著主流水平前進,十年前因單核性能低而暫停的眾核計劃,現在也終于可以繼續實行。
然而,由于現在的主流桌面CPU大多有4GHz以上的睿頻,一般能夠長時間穩定運行的頻率也超過3Ghz,3A5000與主流CPU差距仍然很大。其實現在所有的國產CPU運行頻率都還不高,即使是使用7nm工藝的鯤鵬CPU離3GHz的運行頻率也還有距離,這是國產CPU共有的問題。一般來說,CPU核心設計越復雜,IPC就越高,但也越是難以達到較高的運行頻率。要想以較小的代價提高CPU運行頻率,那就得使用更先進的工藝,否則就需要大量的投入反復流片,尋找工藝和物理設計的短板,加以改進和規避。當CPU核心設計有較大改變,又需要重復這一燒錢的過程,雖然經驗可以積累,但論經驗又有誰能與Intel和AMD相比呢?
國產CPU當前最欠缺的是單核性能,提高單核性能既要重視頻率提升,更要重視IPC提升,必須雙管齊下。提高頻率需要與生產工藝大量磨合,需要很高的成本。而且最新的生產工藝目前處于被卡脖子的狀態,我們還無法完全掌控。而增強CPU核心設計的能力,提高CPU同等頻率下的性能,則不需要依賴太多外部條件,是我們能夠自主掌握的最核心的本領。只有鉆研,再鉆研,積累,再積累,才能三年不鳴而一飛沖天!只有單核性能高了,多核才能有競爭力,否則一百只螳螂也擋不住頑童腳尖的嬉戲。
為何如此強調單核性能呢?經常見到一些游戲用戶抱怨,Intel幾十個核心的服務器CPU玩有的游戲時還不如4個核心的i5順暢。這是因為桌面應用的特性決定了“一核有難,多核圍觀”是常態。Web服務器可以把數千并發訪問平均分配給所有核心,但瀏覽器對網頁版面重排卻只能從頭到尾順序進行。正因為桌面應用的特性,Intel在酷睿8代之前,就沒有超過4核的桌面CPU產品。即使是服務器,也有許多任務無法多核并行處理,如資源爭用、等待前置條件、算法無法拆解等等都會使程序被迫串行運行。因此如果一款32核CPU的單核性能是另一款64核CPU的兩倍,那么32個核心能發揮的實際效率也就高于64個核心。
龍芯3A4000與飛騰FT-2000/4的生存之爭
龍芯3A5000的單核性能和多核性能都要比3A4000高50%,而整機價格相當,那么3A4000似乎就成了明日黃花,很快就會無人問津了。3A4000的命運果真注定了嗎?可能并不如此!
當前所有的國產桌面、服務器CPU都還不能與消費市場的主流產品抗衡,無論是性價比,還是單純的性能,都有很大差距。維持它們生存并加速它們進步的,主要是特別注重安全的信創市場。在這個限定的市場,各家國產CPU企業既要展現產品的先進性,也要體現路線的正確性。只有優秀的產品才能獲得顧客的青睞,只有正確的路線才有無窮的潛力,錯誤的路線終究是涸澤而漁。信創市場的容量有限,國產CPU必須抓緊時機,快速進步,才能在一兩年之后徹底進入普通消費市場時,仍有生存和競爭的能力。
也就是說,3A4000其實不需要與3A5000競爭,它只要與其它國產CPU相比有些許優勢,就仍然有生存的空間。正好最近我買了一套飛騰D2000的主板,飛騰D2000與上一款FT-2000/4相比,核心數量從4個擴展到了8個,但頻率從2.6GHz降到了2.3GHz。它們使用的CPU核心完全相同,其它規格也基本一致。若論CPU的整體性能,D2000的8個核心肯定超過上一款FT-2000/4的4個核心,但論實際體驗,有時可能會覺得更慢。D2000與3A4000比較的話,8核對4核,多核性能3A4000沒有勝算,3A5000尚能一戰。因此我是想把D2000的單核性能換算到2.6GHz,讓它代替FT-2000/4來與3A4000比較一番。
以前我調試Linux for ARM的程序,用的是樹莓派4B,性能低得實在難以忍受,咬咬牙就買了飛騰的最新桌面CPU產品。實際使用感受確實比樹莓派4B快多了,但對于CPU性能的量化,只能使用專業的測試工具軟件來測試性能。測試CPU性能首選工具SPEC CPU,我暫時使用2006版,新版SPEC CPU2017我還沒有很多問題沒弄明白,以后有時間再測。
SPEC CPU2006是一種行業標準化的性能測試工具,測試重點是CPU、內存、編譯器。通常CPU本身和編譯器及編譯優化參數對測試結果的影響較大,而內存性能的影響相對較小,因此當內存性能和編譯器版本差異不大時,就可以認為SEPC CPU2006的測試成績代表了CPU性能。實際上由于軟件的運行離不開操作系統環境,Linux核心和各種基礎庫的優化程度對CPU的性能發揮也有很大的影響,也會影響SPEC CPU2006的測試成績。
龍芯官宣3A4000在2.0GHz時的int_base單核成績為19.1,實際大量出貨的是1.8GHz的版本,把2.0GHz時的19.1換算到1.8GHz,得分應該是17.2。飛騰從來沒有在網上的報道中公開過其CPU的單核測試成績,但一直流傳著來源未明的的“官方”說法,稱FT-2000/4在2.6GHz時單核int_base成績17.2,與1.8GHz的3A4000相同。但是這兩個成績都有疑問,曾有一些網友聲稱實測龍芯3A4000單核int_base僅13.x,也有一些網友聲稱用FT-2000/4實測出了超過21分的int_base成績,都與宣方成績沖突,又都沒有能令人信服的證明。真實情況到底如何,我們也來測測看。
Stream內存訪問性能測試
在測試SPEC CPU2006之前,先測試一下它們各自的內存訪問性能,這也和CPU的性能表現,以及各種軟件的運行效率相關。使用Stream開源程序來測試,比較簡單,就讓3A5000也參與一下吧!
Stream是測試的內存訪問性能的一個開源程序,可以在“863高性能計算機評測中心”的網頁上找到簡要介紹和源碼下載地址。內存訪問對CPU的計算能力要求不高,主要是考驗CPU的內存控制器以及內存本身的性能。測試分為單線程內存訪問和多線程內存訪問,下圖是單線程測試結果:
單線程的內存訪問3A4000不敵3A5000可以理解,因為內存頻率有差距,且3A5000在訪存方面也有改進。但D2000被3A4000完敗,速度甚至不到3A5000的一半,就有點匪夷所思,飛騰CPU的訪存性能這么弱嗎?這么弱的訪存性能還做64核心的服務器CPU,不是趕鴨子上架嗎?不過這只是單核測試的結果,下面再看看多線程內存訪問的情況,D2000有8核,多線程測試是否可以翻盤呢?
從測試結果來看,D2000的內存訪問性能比較令人失望,多線程測試仍然墊底。本來是想用D2000代替FT-2000/4來與3A4000進行對比,結果它自己都如此萎靡!如果飛騰的CPU能把內存訪問性能增強,相信測試CPU性能成績能提高一點。但也不能寄予太大希望,看看本文開始處幾款CPU在相同頻率下的性能對比,i5-4460的內存是DDR3 1600,i9-10850k的內存是DDR4 3200,內存性能差距一倍,但測試成績并沒有提高多少。
內存性能更影響的是實際應用程序的運行效率,而不像SPEC CPU測試這樣,主要是測試各種計算能力,并沒有很大的數據樣本。
龍芯3A4000的 int_base測試(單核和多核)
龍芯3A4000的測試很簡單,我前幾天嘗試在3A5000上測試SPEC CPU2006時,把幾個常用的編譯優化參數簡單拼湊了一下,就得到了26.6的int_base單核成績,與龍芯官宣的26分(以上)相比,還富裕了不少。那么就繼續使用這幾個簡單的參數來測試3A4000就好了,只是由于3A4000與3A5000架構不同,編譯參數有一些適應性的改動。
龍芯3A4000(1.8GHz) SPEC CPU2006 int_base單核實測結果為17.5分,如果折算到2.0GHz就是19.44分,與龍芯官宣的19.1相比仍然超出了不少。因原始測試報告比較冗長,為避免影響閱讀,這里只截圖其中最重要的部分。
----------------------------------------
3A4000 (1.8GHz)int_base編譯參數:
----------------------------------------
3A4000 (1.8GHz)int_base單核測試成績:17.5。
----------------------------------------
3A4000 (1.8GHz)int_base多核(4線程)測試成績:55.1。
飛騰D2000的int_base和int_peak測試
測試飛騰D2000更加麻煩一些,我開始時使用與我測試3A5000/4000相似的編譯器優化配置參數,但成績不太理想,在2.3GHz的飛騰D2000上int_base單核得分僅15分。D2000的頻率是2.3GHz,如果把成績折算到FT-2000+/4的2.6GHz才16.96,離網傳的17.2分還有差距,和某些網友說的21以上差得更遠。然后我單獨使用-O2和-Ofast參數進行測試,測試成績僅分別為13.6和14.4,證明我使用的編譯優化參數確實有效,但效果又不明顯。
然后我請求聲稱實測超過21分的幾位網友給予幫助,希望他們提供優化參數,但他們要么緘口不言,要么答非所問,要么把我拉黑,于是此事擱淺!后來有網友給我提供了一份疑是“飛騰官方泄露”的測試SPEC CPU2006用的CFG配置文件。我看到這個配置文件的第一眼,就幾乎立即相信了這是官方的CFG文件。從下面的局部截圖可以看到,這個文件用于64核的FT-2000+,因為FT-2000+和4核的桌面版本FT-2000+/4以及8核的D2000都是相同的CPU核心,因些這個配置肯定是對D2000有效的。
同時我也發現這個配置文件中,對FP(浮點性能測試)可能啟用了一些特殊優化的庫文件。在base/peak編譯配置的共用部分,一些測試浮點性能的子項單獨配置了庫文件的搜索路徑,這些配置也加入了編譯參數中。我不知道這些文件夾下有些什么庫文件,也沒有渠道得到它們,因此如果測試浮點性能,那么我的測試結果可能會比較差。不過本次我只打算測試整數性能,那么無論這些定向優化的庫文件是否存在,都不會影響測試。
上面就是存放某些定向優化的庫文件的路徑(部分),好在從配置文件來看,這此庫文件與整數性能測試無關。
這個CFG文件中對peak(峰值)測試的優化配置參數十分復雜,我只能感嘆編寫者對GCC的熟悉,以及對測試出高分的執著,而不敢對那些參數設置改動半分。不過幸好base(基本)測試的編譯配置還在我能理解的范圍內,不至于太傷我的自尊。
使用這個CFG文件測試出的飛騰D2000的int_base單核成績是15.2,比我自己拼湊的優化參數稍高一些。把成績折算到2.6GHz就是17.2分,也就與傳言中的FT-2000/4官方成績相同,也與知乎上“原來如此”對FT-2000/4的實測成績相同,只是他測出的龍芯3A4000的成績和我實測的差距非常大。3A4000僅13.x的單核成績絕對是負優化的成果,不可能如他文中所說和測試FT-2000/4時使用的優化配置一樣。
本文發出之前,有網友在與我測試D2000時相同的環境下,用FT-2000/4實測SPEC CPU2006,分別使用“-O2 -static”和“-O3”參數測試int_base,測試成績都為16.x,與我測得的D2000成績換算到2.6GHz后的得分相當。
雖然我測試D2000的單核成績已經達標,但我并不滿意。因為龍芯3A5000/4000官宣成績都留下了一些冗余,并且是用很簡單的優化參數就超過了官宣成績,那么飛騰D2000的官方優化配置是否也有冗余呢?
經過我的反復嘗試,只要對原有參數刪、改,測試成績就一定會降低,哪怕把-O3改成-Ofast也會影響原有參數的平衡性,使總成績降低。增加參數有的不影響,有的會使成績降低!對于這種渾然一體、無懈可擊的優化配置,我只能感嘆自己能力不足,無法測試得到更好的成績。最后只好聊勝于無地把“-march=arm8……”改成了“-march-arm8.1……”,再換了兩根時序更好的內存條,以此表達我最后的倔強!測試結果大概……也許……可能對小數點兩位之后的成績有影響,四舍五入后到十分位還是一樣,仍然只有15.2,折算到2.6GHz還是只有17.2。
飛騰D2000 (2.3GHz) int_base編譯參數:
----------------------------------------
飛騰D2000 (2.3GHz) int_peak編譯參數:
----------------------------------------
飛騰D2000 (2.3GHz) int_base和int_peak單核測試成績:15.2和15.7。
----------------------------------------
飛騰D2000 (2.3GHz) int_base和int_peak多核(8線程)測試成績:
雖然飛騰D2000的頻率和龍芯3A5000差距很小,但實測單核性能比1.8GHz的3A4000還要低,而FT-2000/4雖然頻率比3A5000更高一些,但用D2000測試結果換算得到的FT-2000/4的成績也仍然低于1.8GHz的3A4000。D2000測得的15.2的測試成績換算到2.6GHz之后為17.2,與網傳的飛騰官方成績以及知乎網友“原來如此”的測試成績完全一樣。D2000的bese和peak測試成績非常接近,從編譯參數的復雜度就能看得出,已經盡力了,就是這個樣子!為了便于比較,下面把它們的成績放到一起看一看。其中FT-2000/4的多核成績,如果用D2000的8核int_base成績除2后再折算就只有48,可能比實際成績低,因此這里直接用官方公布的55分的成績。不知道這個55分是base還是peak,我就把它當成base來用吧。另外3A5000的多核成績也直接使用官方公布的80分成績,因為我自己測試的int_base多核成績才79.x,還有一點點差距。按照3A4000的單核與多核性能比例來算,3A5000多核int_base應該有83以上才對,可能龍芯LoongArch的系統優化還沒有完全放出來吧!
FT-2000/4與3A4000同樣是4個核心,無論單核性能還是多核性能,3A4000都完勝。FT-2000/4的主頻是2.6GHz,3A4000的主頻僅1.8GHz。飛騰最新的D2000頻率不升反降,單核性能更是完敗于3A4000。3A5000主頻率僅比D2000高了0.2Ghz,單核性能卻高了75%。多核性能方面,3A5000的4個核心與D2000的8個核心僅有6%的性能差距。由于單核性能遠勝,3A5000在桌面應用中實際表現也會超過D2000。這是龍芯多年致力于提高CPU核心設計水平,增強單核同頻性能帶來的勝利。
最有意思的還是每GHz的測試成績,飛騰2015年發布的首款ARM架構的CPU是FT-1500A,這款CPU實測的每GHz的測試成績也是6.x。現在已經6年了,飛騰的CPU除了工藝和頻率不斷變化之外,CPU核心幾乎沒有長進。而龍芯呢,這6年把每GHz的性能翻了一倍,3A5000的CPU核心雖然只是在3A4000的基礎上小幅改進,但也有10%的IPC提升。下一代3A6000將會啟用新的CPU核心,IPC將會更高,且龍芯的CPU頻率也在穩定提升,將會進一步縮小與主流CPU產品的差距。
總之,同樣4核的飛騰FT-2000/4和龍芯3A4000相比,2.6GHz的FT-2000/4性能完敗于1.8GHz的3A4000。這還不算FT-2000/4是16nm工藝,而3A4000是28nm工藝,工藝水平差了整整十年。而飛騰D2000因為單核性能不升反降,以至于8個核心的整體性能差一點點被4個核心的龍芯3A5000逼平!
龍芯3A4000生存無憂矣!!!
后記
如果說龍芯3A5000的單核性能只有桌面高端CPU產品的50%,那么飛騰D2000就只有30%的樣子,龍芯只要能把CPU頻率繼續提高,就能與主流產品匹敵。而飛騰要是再不努力提高IPC,CPU頻率也不升反降,用64核的CPU戰平Intel 2014年的14核產品標榜,搞飛騰“電競主機”這類宣傳噱頭,不知道將來拿什么去面對消費市場挑剔的顧客!
真心希望飛騰不要繼續在同一款核心上反復折騰,從核心代號來看都已經更新幾代了,但IPC還依然如故。2015年在Hot Chips大會上向全世界同行宣傳的9.6/Ghz的IPC至今沒有實現。應該正視與國際主流的差距,安安心心提升自己的設計水平,僅依靠先進工藝和多核心現在就已經進入了性能瓶頸。
對于國產CPU的CPU性能,無論是浮夸宣傳,還是惡意貶低,只能瞞一時,無法瞞一世,造謠者也不要以為國產CPU只有信創用戶,在一個封閉的圈子里就可以肆無忌憚,只要普通用戶有了實測的條件,立馬就能戳穿這些謊言!
相關文章
「 支持烏有之鄉!」
您的打賞將用于網站日常運行與維護。
幫助我們辦好網站,宣傳紅色文化!