張平
《微型計算機》的讀者應該對各種各樣的評測很熟悉了。在對新產品進行評測時,一般分為兩個角度,主觀與客觀。主觀角度的測試自然不用多說,這類測試主要包括外觀、設計、易用性、顏色和流行趨勢等這些難以量化的內容??陀^角度的測試則要復雜一些,它指的是使用一種方法或者一種模式對測試目標進行操作,從而得出一個可以在相同的環境和條件下可復制的結果的過程。換句話來說,客觀測試主要是指利用各種測試軟件或者測試工具、測試環境運行統一的測試,得到測試目標的運行結果的過程。僅僅看測試軟件的話,S P E C旗下的測試軟件雖然出鏡較少,但是其較高的專業性和比較均衡、公平的設置,一直是很多專業媒體的最愛。那么,SPEC是什么,包含哪些測試,又應該如何解讀SPEC的測試結果,尤其是CPU測試結果呢?
標準性能評估公司:五大評測架構
S P E C 的全稱是S t a n d a r dPerformance Evaluation Corporation,也就是標準性能評估公司,這個公司成立于1988年,其主要目的是為市場提供現實且標準化的測試數據。在30多年后,SPEC已經發展成擁有60多家成員公司、業內影響力巨大的性能標準化機構之一。
SPEC的發展理念是確保市場上擁有一套公平、有效的指標來區分不同的候選系統,并且試圖在候選產品的獨特優勢和嚴格遵守標準之間取得平衡。S P E C宣稱一個能夠被合理利用得好的測試將促進市場的發展。鑒于此,SPEC提供了一整套基于現有測試程序的標準化源代碼,這使得基準測試人員可以使用S PEC的源代碼調整系統的性能,以獲得最佳測試結果,也減少了市場上存在的完全不可類比的問題。
在組織架構方面,SPEC被定義為一個非營利性機構,它的成員資格對任何愿意支持其目標的公司或者組織開放,由于SPEC的運營也需要經費,因此成為SPEC的成員也就意味著需要交納一定的入會費用。目前,根據測試目的的不同,SPEC擁有5個下屬機構,分別是:
1.開放系統組織(T h e O p e nSystems Group,簡稱OSG)
該組織來自最早的S P E C委員會。OSG所針對的是運行開放系統環境的桌面系統、高端服務器或者高端工作站的基準測試,這個部分的測試也是我們目前接觸最多的。OSG在應用中還細分為下列幾個部分:
云計算測試:包括云計算基礎設施、應用情況和新興技術相關領域的工業標準基礎測試等。
CPU測試:包括傳統的SPECmarks以及其他的相關CPU測試。
JAVA測試:包括Java客戶端和服務器基準測試JVM98、JVM2008、JBB2000和JBB2005,SPECjAppServer和SPECjEnterprise Java企業應用服務器基準,以及SPECjms2007測試等。
功耗測試:主要用于針對服務器級的計算設備的功率和性能的測試,SPEC在2007年就推出SPECpower_ssj2008,對CPU、緩存、內存層次結構以及共享內存的處理器在多個負載級別上的可擴展性進行了測試。新的SERT套件的工作大約從2009年開始,首先是Chauffeur框架的突破性設計,然后是工作負載的設計和實施、硬件和軟件的自動發現,以及GUI。在進行這些工作的同時,SPECpower委員會與更注重學術的SPEC Power研究工作組合作,進行了大規模的實驗,以確定SERT套件2.0的服務器效率指標,并最終在2017年發布。
存儲測試:包括NFS基準SFS93(L A D D I S)、S F S97、S F S 97_ R1和SFS2008、SPEC SFS2014和SPECstorageSolution 2020等測試,主要也是不同場合的存儲應用的性能。
虛擬化測試:這是第一代用于比較數據中心服務器虛擬化性能的S P ECv ir t_s c2010,以及其后續的SPECvirt_sc2013。
2.國際標準小組( T h eInternational Standards Group,簡稱ISG),其工作是負責監督標準化基準的研究并將其應用在政府法規和計劃中,同時促使國際標準化的發展。
3.高性能小組(T h e H i g h -Performance Group 、簡稱HPG),主要面向高性能計算領域的標準化的、跨平臺的性能評估。
4.圖形和工作站性能小組(TheGraphics and Workstation PerformanceG roup,簡稱為GW PG),這個小組主要是針對圖形和工作站的性能基準和報告程序進行研發。它于1994年就推出標準化基準測試,目前包括應用性能測試、圖形性能測試和工作站性能表征三個模塊,不過GWPG的測試比較老舊,目前不多見。
5.研究小組(SPEC Research Group,簡稱RG),這個小主要是促進對基準測試方法和工具的創新研究等。
基于上述5個下屬機構,SPEC推出了16款測試軟件或工具,涵蓋了CPU、GPU、HPC、Java、功率、開發和結果分析等不同的用途。今天,我們重點來看一下目前CPU方面最新的測試軟件SPEC CPU 2017。
SPEC CPU 2017:面向專業領域的計算密集型測試
SPEC CPU包含多個版本,比如SPEC CPU 2017以及較早的SPEC CPU2000、SPEC CPU 89、SPEC CPU 92等等。目前依舊在使用的是SPEC CPU 2017,其發布于2017年,雖然看起來比較早,但是在CPU架構和應用場景沒有發生巨大變化之前,一個設計出色、運行穩定且能很好地表現出絕大部分硬件性能的測試軟件依舊是值得信賴的。鑒于此,本文就重點來看看這個版本的測試內容。
綜述:SPEC CPU 2017的基本內容
SPEC CPU 2017是一個工業標準化、C PU密集型的測試軟件,用于測量和比較計算密集型應用的性能,尤其強調處理器、內存子系統和編譯器的性能等。其中,內存子系統指的是緩存、主內存等。編譯器性能則指的是C、C++、Fortran等編譯器的性能,包括優化器等。至于網絡、圖形、Java、IO系統等,SPEC CPU 2017并不關注,但是這部分設置也有可能對SPECCPU 2017最終性能產生影響。
SPEC CPU 2017測試的目的是希望能夠在廣泛的實際硬件范圍內提供計算密集型設備的性能比較,因此其工作負載全部來自用戶的實際應用。測試是以源代碼方式提供的,因此在執行層面需要使用編譯器命令,通過shell或者命令提示窗口才能夠運行。此外,SPEC CPU 2017還包含了一個可以用于測量能耗的可選指標。
SPEC CPU 2017包含了4個板塊和總計43個基準測試。具體來看,包含SPECspeed 2017整數、SPECspeed 2017浮點以及SPECrate 2017整數、SPECrate2017浮點4個部分。其中SPECspeed是用于比較計算機完成單一任務的時間,因此使用了“speed”也就是“速度”作為副標題,后兩者SPECrate是用于比較計算機在單位時間內的吞吐量,因此采用的是“rate”也就是“速率”。一般來說,速度型測試對CPU內部的流程和執行部分更為敏感,但是可能無法很好地表現CPU在面臨較大的計算負荷或者內存子系統相關的性能。相反,速率型測試能夠很好地將壓力傳遞給內存子系統以及CPU吞吐能力,這對很多高性能計算是至關重要的。
準備:運行SPEC CPU2017的前置條件
如果你購買了SPEC CPU 2017,那么就會獲得一個I SO文件,其中包含基準測試的源代碼、數據集,一些對基準測試進行編譯、運行、驗證和報告的工具,用于各種操作系統的預編譯工具以及SPEC CPU 2017工具的源代碼,可以編譯未覆蓋的操作系統,另外還包括SPEC CPU 2017的相關運行說明、報告規則等。
如果要運行SPEC CPU 2017,在硬件方面首先需要一臺可以運行Linux、Mac OS X、Unix或者Windows的計算機。在硬件配置方面,SPEC CPU 2017需要1GB~2GB的主內存或者16GB的運行空間,磁盤方面建議保留250GB,最低需要10GB。另外還包括支持C、C++或者Fortran的編譯器或者預編譯的文件等。
對操作人員而言,和3D M a r k、PCMark這類面向玩家的測試軟件不同的是,由于SPEC CPU 2017不提供可執行文件,因此要求用戶具備基本的代碼基礎,比如一些基本的C M D指令,打開磁盤、定位文件、運行文件等。另外,用戶還需要會使用命令行對部分運行參數進行調整和控制。在初期的測試文件配置完成后,用戶可以通過一些測試命令來測試自己的配置是否正確等。
由于SPEC CPU 2017的設置和測試比較復雜,因此SPEC組織提供了非常詳盡的測試前準備文檔,有興趣的讀者可以在SPEC的官網查找閱讀,本文就不再贅述了。
測試:SPEC CPU 2017包含的測試內容
前文我們曾提到,SPEC CPU 2017包含了4個板塊的測試內容,在這里我們進一步解讀這些測試分別指代哪些性能。
從上述測試內容表可以看出,SPEC CPU 2017的測試內容是包羅萬象、非常豐富的。在SPEC的官網上,我們可以查到每一個測試內容的源代碼、編寫人員和聯系方式、計算思路、可以執行、輸入和輸出的說明等。舉例來說,508.namd_r這個測試的源代碼來自伊利諾伊大學香檳分校的吉姆·菲利普斯,這個測試基準來自NAM D的數據布局和內循環,而NAMD是用于大型生物分子系統模擬的并行程序。因此這是使用在實際應用中的軟件代碼,利用其來測試CPU能夠很好地反映CPU在實際應用中的情況。此外還有來自一些國外政府機構比如美國大氣研究中心、美國海軍研究實驗室等提供的算法和代碼,比如用于天氣預報和大氣模擬的計算代碼以及模擬爆炸、模擬海洋、3D渲染和動畫的代碼等,都相當實用。
SPEC CPU 2017的測試內容除了來自實際工作,很接地氣之外,還在一定程度上反映出C P U在內部架構方面的改進情況。比如整數測試部分的500.p erlbenc h_r和502.gcc_r測試涉及指令解釋,因此可以考察CPU架構的IPC以及OP-Cache的性能。520.omnetpp_r測試內容是離散事件模擬,可以用來考查C P U的I P C提升尤其是內存方面的性能提升。523.xalancbmk_r則可能和帶寬、延遲等內容相關。525.x264_r則是IPC、內存帶寬和整體執行能力。幾個人工智能相關的測試和處理器的IPC、分支預測存在相關性等。557.xz_r這類通用數據壓縮測試則和處理器的IPC、內存設計以及吞吐能力相關。在浮點部分,所有的測試都和CPU的浮點計算能力相關,并且503.bwaves_r可能也涉及到處理器存儲相關的性能。508.namd_r和538.imagick_r涉及有關IPC性能的提升。519.lbm_r、549.fotonik3d_r和554.roms_r則和內存帶寬有一定關系,部分測試內容要求CPU能夠對緩存實現充分的高效率的應用,因此其結果也能夠在一定程度上反映處理器的緩存性能。
對普通用戶來說,SPEC CPU 2017的測試內容雖然看起來沒有PCMark和3DMark這類合成類測試通俗易懂,但是C P U并不是針對某一個用戶設計的CPU,我們日常所有的動作在CPU內部最終都會被分解成各類基本操作,比如數據移動、乘加計算或者解碼、回寫等,因此最終運行SPEC CPU2017更快的處理器,在各類我們常常接觸到的合成類測試中依舊會有更好的表現。SPEC CPU 2017還可以去考察到底是哪一個測試帶來了更好的性能表現,CPU的那一部分需要加強,是否可以通過編譯器帶來更好的性能等。對專業人員來說,這有著相當重要的意義。
結果:SPEC CPU 2017的結果解讀
SPEC CPU 2017的測試結果包含基準和峰值兩種類型。前者是使用SPEC CPU 2017所給定的語言并且以相同的編譯方式所得出的結果,所有測試結果都需要包含基準結果,這相當于是一個標準化的普遍適應的結果。另外SPEC CPU 2017還允許廠商通過優化得到峰值數據,廠商可以通過編譯器、軟件方面的操作,來獲得相比基準測試更高的性能,并展示給用戶以體現自己產品的潛力。
SPEC CPU 2017的所有測試結果都公布在https://www.spec.org/cpu2017/results上。截至2021年5月底,一共有624個系統上傳了SPEC CPU 2017的測試成績,包括戴爾、華碩、富士通、惠普、聯想等企業。測試成績包含了所有系統的總成績分數以及以額外鏈接形式提供的系統配置、測試分數細節等內容。對用戶來說,如果要了解某款處理器的性能,也可以在SPEC官網查詢相關測試結果。除了SPEC外,一些IT媒體也會使用SPECCPU2017進行測試并將所有的測試數據存檔列表在網站上,比如anandtech等網站,用戶也可以自行搜索對比。
值得一提的是,由于英特爾、AMD、高通等廠商偶爾會在新品發布前對產品進行SPEC CPU 2017測試,因此之前曾發生過未發布的新品數據和信息被上傳至SPEC網站的情況,因此SPEC CPU 2017的結果網站偶爾會成為新聞爆料的來源。
SPEC CPU 2017:專業而可靠
不難看出,SPEC CPU 2017測試相當可靠,尤其它的測試內容來自實際工作中使用的代碼,最終表現出來的性能也和處理器架構設計存在一定的相關性,這也反映了SPEC CPU 2017在設計上的優勢。和其他測試軟件相比,SPEC CPU 2017的弱勢在于使用麻煩、價格較貴,并且成績解讀和分析需要較多知識儲備。當然,作為一個面向專業用戶的測試軟件,SPEC CPU2017自然也不會像3DMark、PCMark那樣太多考慮用戶的感受。不過,我們還是希望SPEC CPU 2017能夠在未來的版本中增加易用性,尤其是加快版本更新速度,畢竟目前的處理器和半導體產業發展還是相當迅速的,在AI計算、浮點計算方面不斷有新的指令集和技術提出,SPEC也需要進一步緊跟時代。在今后,MC也會不定期地對各種評測中所使用到的,有意思的測試軟件進行類似介紹,幫助讀者更好地了解數據背后的故事與意義。