国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種輕量級的處理器核性能分析框架*

2021-03-01 03:33雷國慶馬馳遠王永文
計算機工程與科學 2021年2期
關鍵詞:測試程序指令處理器

雷國慶,馬馳遠,王永文,鄭 重

(國防科技大學計算機學院,湖南 長沙 410073)

1 引言

通用微處理器作為信息系統(tǒng)的基石,其重要性不言而喻。近二十年來,國家大力支持國產中央處理器CPU(Central Processing Unit)研發(fā),打造出了以飛騰、龍芯和申威等為代表的國產 CPU 品牌,開發(fā)了涵蓋高性能計算、服務器、桌面終端和嵌入式等各個領域的 CPU 產品,并且在黨政軍地多個國產安全替代項目中批量應用,增強了國產化替代的信心。然而,現(xiàn)有的國產通用微處理器 CPU 也存在明顯的不足,技術指標與國際先進水平差距仍然較大。以體現(xiàn)了 CPU 核心性能的 SPEC2006 基準測試為例,當前 Intel 主流CPU 的 SPEC2006 得分超過40分[1],而國產CPU的SPEC2006得分只有 15~20 分,這說明國產CPU的核心性能與 Intel 主流水平相比還有 3~5 倍的差距。為了提升國產CPU 的可用性,必須進一步提升 CPU 性能,縮短與國際主流 CPU 的差距。

為了提升處理器特別是處理器核的性能,需要從架構設計、性能建模、邏輯實現(xiàn)和性能分析等多個方面進行大量的工作。隨著摩爾定律和 Dennard 縮放定律逐漸失效,單純依靠先進工藝帶來的性能提升越來越有限,架構設計在處理器中的作用越來越重要[2]。處理器架構特別是處理器微架構一般包含各種關鍵設計參數(shù),如取指寬度、譯碼寬度、分派寬度、緩存大小(包括一級緩存、二級緩存、三級緩存等)、發(fā)射隊列端口數(shù)、發(fā)射隊列項數(shù),執(zhí)行部件數(shù)目和執(zhí)行部件延遲等。為了獲得優(yōu)化的設計參數(shù),工業(yè)界和學術界都十分重視使用模擬器來進行處理器性能建模和微架構設計空間探索[3]。然而,性能失準是模擬器建模存在的問題,為了更好地發(fā)揮模擬器的作用,需要在處理器的開發(fā)過程中不斷地對模擬器進行性能校準和性能驗證[4]。

模擬器主要用于架構探索和處理器的 RTL 設計完成之前的性能分析和軟件開發(fā)。與模擬器相比,處理器的RTL模型準確度高,直接決定了最終芯片的實際性能,因此基于RTL模型進行性能分析是實際處理器設計中性能分析的重點。從處理器設計和實現(xiàn)的流程來看,處理器的設計和實現(xiàn)一般包括概要設計、詳細設計、前端RTL 設計編碼、功能驗證、性能測試、RTL signoff、物理設計、流片、硅前和硅后測試等過程。在實際流程中,處理器的RTL性能驗證在上述開發(fā)流程中處于中后期,并且在實際中一般以系統(tǒng)級的性能驗證為主。如果在系統(tǒng)級驗證中發(fā)現(xiàn)影響比較大的性能缺陷,則需要返回到前端修改RTL設計,設計修改較大時可能會導致重啟所有的功能驗證和性能驗證流程,使得研制進度嚴重滯后。因此,在系統(tǒng)級性能驗證之前,如何提前發(fā)現(xiàn)和快速定位 RTL 設計中引入的性能缺陷就顯得十分重要。

為了及時發(fā)現(xiàn)RTL設計中引入的和預期不符的性能缺陷,本文提出了一種輕量級的基于RTL 仿真的處理器核性能分析框架,在處理器核的RTL 代碼基本功能穩(wěn)定以后,通過輸入輕量級的裸機測試激勵,即可基于該框架對新一代處理器核(New Core)的RTL設計實現(xiàn)的性能預期進行驗證,從而在核級驗證的早期及時發(fā)現(xiàn)性能設計缺陷。

2 相關工作

由于處理器的研制周期長,在處理器實際芯片生產完成之前,采用性能建模是處理器性能分析的一種重要方式。文獻[5]針對超標量微處理器的結構特點,提出了適用于大數(shù)據(jù)集基準程序的性能分析模型 MAMO(Mircroprocessor Analytical MOdel),采用指令窗口模型、功能部件受限模型、分支誤預測事件模型、指令和數(shù)據(jù) Cache 失效模型等計算微處理器各個部件對程序CPI(Clock cycles Per Instruction,執(zhí)行一條指令所需的平均時鐘周期數(shù))的貢獻,從而估算處理器的實際性能。文獻[6]提出了一種使用高級語言對硬件建模的方法,并進一步建立了一種更高層的性能模型 Sim-godson。除了建立了高級語言性能模型,還建立了相關的性能分析環(huán)境,包括 RTL 和 FPGA 仿真環(huán)境以及一些輔助的軟件工具,主要用來驗證高級語言模型。性能建模存在的問題是模型準確度和實際測試之間存在偏差。文獻[5]對MAMO 模型和基準模擬器進行了對比校驗,指出對于 SPEC CPU2000 定點程序使用該模型進行 CPI 估算的平均誤差約為 8.53%。文獻[3]對體系結構模擬器在處理器設計中的重要作用進行了論述,并且對性能模擬器的校準方法進行了總結。

文獻[4]提出了一種單元級、核級和系統(tǒng)級整合的層次化的性能驗證方法學,從多種層次識別和解決性能缺陷。在單元級建立了參數(shù)敏感的性能模型和覆蓋率驅動的激勵,在核級給出了面向實現(xiàn)的性能校準和基于 RTL 模擬的基準測試,系統(tǒng)級則建立了原型和基于計數(shù)器的性能分析。文獻[7]給出了一種工具來對 Intel x86 指令的延遲、吞吐率和端口使用進行可信建模,從而為預測、解釋和優(yōu)化軟件的性能提供依據(jù)。

性能測試和分析離不開測試程序,典型的來自真實應用的綜合性能的基準測試程序包括 SPEC CPU2006、SPEC CPU2017和PARSEC等[8]。這些測試程序通常規(guī)模較大,運行時間較長,但是使用廣泛。還有基于常用程序統(tǒng)計分析而設計的合成測試程序,如測試整數(shù)性能的 Dhrystone和CoreMark,測試浮點計算能力的 Whetstone 等。有的測試程序則是從科學計算中提取的核心循環(huán)代碼,如用于測試矩陣操作的Linpack、測試浮點運算能力的 Livermoore 等[9]。除了基準測試程序以外,研究人員也會針對自己的需求開發(fā)特定的性能測試程序。比如 IBM 公司面向 PowerPC 處理器開發(fā)了 alpha、beta和gamma 等一系列測試程序,龍芯團隊針對龍芯處理器性能分析開發(fā)了 Godson-Microbench 測試集,支持分支預測、部件資源利用率和計算延遲等分析[5]。

處理器性能建模需要從多種實現(xiàn)層次中對性能建模進行性能校準與分析,提升性能模型精度,從而為設計更高性能的處理器提供指導。與采用模擬建模并進行性能校準的方法不同,本文對處理器核性能提升研制中的基準處理器核(Base Core)和新一代處理器核2種處理器核 RTL 模型的性能進行對比分析,從而發(fā)現(xiàn) New Core RTL設計實現(xiàn)中引入的性能缺陷。

3 性能分析總體框架

圖 1 給出了基于 RTL 仿真的輕量級性能分析框架,該框架主要包括激勵生成環(huán)境、模擬仿真環(huán)境和性能分析環(huán)境3個部分。其中激勵生成環(huán)境負責生成用于性能測試分析的測試激勵,包括生成測試程序源碼和編譯生成可執(zhí)行二進制程序;模擬仿真環(huán)境用于對2種不同的處理器核執(zhí)行模擬仿真,性能分析環(huán)境用于對仿真結果進行對比分析。

Figure 1 Overview of performance analysis framework

3.1 激勵生成環(huán)境

測試激勵類型包括定向測試激勵和隨機測試激勵2種類型。定向測試激勵是指針對特定的微架構性能敏感參數(shù)編寫的特定測試程序。定向測試程序的標準以針對性能參數(shù)敏感為有效,具體可以采用手工編寫匯編程序或者高級語言程序如C程序,也可以參考來自標準基準測試程序或者一些微基準測試程序來進行編制。隨機測試激勵主要是指根據(jù)指令模板采用隨機數(shù)生成的方式對指令模板進行實例化,從而生成一系列隨機匯編指令流。為了加速模擬速度,使用裸機編譯環(huán)境對測試激勵程序進行編譯和鏈接,并生成可執(zhí)行二進制文件。相比依賴于操作系統(tǒng)環(huán)境生成的可執(zhí)行文件,裸機測試激勵具有小巧、輕量的特點。裸機編譯環(huán)境包括交叉編譯環(huán)境、裸機環(huán)境下需要的基本函數(shù)庫等。

圖2給出了一種典型的測試激勵程序框架,圖2a中給出了該框架程序入口Main函數(shù),Main函數(shù)首先對測試激勵需要的地址和數(shù)據(jù)空間進行初始化;然后調用Test_kernel函數(shù)實現(xiàn)測試。圖2b給出了Test_kernel函數(shù)的2種實現(xiàn)方式:一種是采用手工編寫匯編代碼的方式實現(xiàn)定向測試;另一種則為隨機生成的匯編指令流。通過使用計時器Timer,實現(xiàn)對Test_kernel的執(zhí)行時鐘周期或者執(zhí)行時間進行統(tǒng)計,用于對測試性能進行比較和分析。

Figure 2 Programming framework of test stimulus

3.2 模擬仿真環(huán)境

模擬仿真環(huán)境包括 RTL 仿真軟件、Base Core 和 New Core 的 RTL 設計源代碼、協(xié)同模擬驗證環(huán)境、若干編譯和運行腳本等。模擬仿真環(huán)境的輸入是源代碼文件和測試激勵二進制文件,輸出包括仿真波形文件、運行過程中產生的蹤跡文件等。波形文件的作用是發(fā)現(xiàn)功能和性能缺陷時方便設計師進行調試和分析。蹤跡文件則記錄了處理器核執(zhí)行的所有指令流信息。對于每條指令,蹤跡文件需要記錄該指令的 PC 地址、指令編碼和匯編形式、指令分派和提交的時刻,以及指令讀寫寄存器操作數(shù)的結果。為了支持蹤跡信息的打印,模擬仿真環(huán)境需要支持對處理器核關鍵模塊信息的抓取。為了實時對計算結果進行驗證,模擬仿真環(huán)境需要支持協(xié)同功能驗證,能夠將每條指令的計算結果和參考模型計算結果進行比較,如果結果計算錯誤,則退出仿真,打印相關錯誤信息,以便設計師調試和分析。

圖3給出了處理器核仿真框架,該框架的頂層Testbench由Core和Memory實例化、設計協(xié)同仿真(Cosim env)、蹤跡打印(Trace print env)和波形dump等幾個模塊構成,仿真環(huán)境還依賴于仿真工具(Simulation tools)和協(xié)同仿真庫(Cosim lib)等。當仿真正常結束或者發(fā)現(xiàn)指令錯誤異常終止,設計協(xié)同仿真環(huán)境都會輸出一個驗證結果。為了加速仿真速度,實際過程中可以關閉協(xié)同仿真驗證環(huán)境和采用并行仿真加速。如果開啟了蹤跡打印或者波形輸出選項,仿真框架會生成模擬的蹤跡文件或者波形文件,以供分析和調試。

Figure 3 Simulation framework of processor core

3.3 性能分析環(huán)境

性能分析環(huán)境主要用于對Base Core 和 New Core 運行相同測試激勵生成的蹤跡文件進行信息提取和分析。對關注的指令執(zhí)行時間區(qū)間進行分析,可以獲得關注指令區(qū)間所有指令執(zhí)行的總的時鐘周期數(shù),根據(jù)指令的條數(shù),可以獲得相關指令的延遲、指令的吞吐率和CPI 信息等指標。除了蹤跡分析以外,性能分析環(huán)境還包括性能分析模塊,用于設置性能事件并對性能進行輔助分析。根據(jù) New Core 和Base Core 的一些指令延遲、吞吐率等對比數(shù)據(jù),如果發(fā)現(xiàn)與性能預期不符的情況,則需要進行性能調試和缺陷定位,必要時要對RTL設計進行修改?;诒拘阅芊治隹蚣埽瑥男薷腞TL設計完成到編譯、運行、完成模擬仿真并獲得分析結果的時間一般在 15 min以內,輕量級的性能分析框架使得進行快速的性能分析和設計迭代成為可能。

圖4給出了指令吞吐率的計算方法,首先根據(jù)關注的時鐘周期區(qū)間計算得到區(qū)間內時鐘周期數(shù),然后統(tǒng)計該區(qū)間內指令的條數(shù),最后將指令條數(shù)除以時鐘周期數(shù)可以近似得到該時鐘周期區(qū)間內該指令的吞吐率。為了提升測試的準確度,關注的時鐘周期內應盡量執(zhí)行多條同類型的指令,并減少其它類型指令的執(zhí)行。

Figure 4 Computing method of instruction throughput

4 典型性能分析應用場景

基于表 1 給出的Base Core 和 New Core 的主要體系結構參數(shù)對比,結合本文所提出的性能分析框架,從Cache容量、指令延遲和吞吐率等方面對處理器核的性能進行分析。

Table 1 Comparison of architecture parameters for Base Core and New Core

4.1 Cache容量擴展性能測試

根據(jù)表 1 給出的參數(shù),和Base Core相比,New Core在L1指令Cache和數(shù)據(jù)Cache 容量方面均是Base Core的2倍。一般地,大容量的L1 Cache 在Cache 失效率方面將比小容量 Cache 要低,因此可以預期具有大容量 Cache 的New Core 在執(zhí)行相同程序時的執(zhí)行時間將比Base Core 要短。為此,本文提出了基于順序指令執(zhí)行和連續(xù)數(shù)據(jù)讀取的測試方法來分別對 L1 指令Cache和數(shù)據(jù) Cache 進行性能測試,測試方法分別如圖 5a和圖5b所示。當指令 Cache 和數(shù)據(jù)Cache 載入容量超過 32 KB 時,Base Core 將會出現(xiàn)Cache 失效,導致性能下降,New Core 的性能應高于 Base Core的。如果實際過程中發(fā)現(xiàn),相比 Base Core 性能,New Core 性能相當或者下降,那么就有可能存在與 L1 Cache 相關的性能缺陷。

Figure 5 Performance test of L1 Cache volume extension

對于 L1 指令 Cache 和數(shù)據(jù) Cache 容量測試,Base Core 和 New Core 分別同時循環(huán)多次執(zhí)行 64 KB 容量大小的指令(每條指令大小為 4 B)和執(zhí)行 64 KB 容量大小的數(shù)據(jù)載入操作,統(tǒng)計每次循環(huán)的執(zhí)行周期數(shù),并取平均進行比較。如圖6所示為L1 Cache擴容性能測試加速比。當 L1 指令 Cache 容量從 32 KB 擴展到64 KB 時,執(zhí)行圖5a所示的指令測試流,New Core 的性能提升可以達到 7% 左右;而數(shù)據(jù) Cache 容量從 32 KB 增加到64 KB時,執(zhí)行圖5b所示的數(shù)據(jù)load操作,New Core 的性能提升可達 50%左右(New Core有2條load流水線)。由此可見L1 Cache容量擴展帶來的性能提升與預期總體上相符。

Figure 6 Performance test result of L1 Cache volume extension

4.2 指令延遲和吞吐率測試

指令延遲和吞吐率是處理器核性能的2種直觀性能指標。通過減少執(zhí)行部件的執(zhí)行延遲和增加計算部件數(shù)量能夠顯著優(yōu)化指令延遲和提升吞吐率。例如,為了提升整數(shù)指令的吞吐率,現(xiàn)代微處理器普遍采用添加 ALU 數(shù)量的方式來增強整數(shù)計算能力。對于不同指令的延遲和吞吐率的測試,可以編寫定向或者通過隨機指令生成的方式產生相關指令的測試激勵,通過模擬結果分析得到蹤跡中指令執(zhí)行區(qū)間的時鐘周期數(shù)和指令條數(shù),進而計算得到指令的平均執(zhí)行延遲和吞吐率等相關信息,從而對性能預期進行驗證。

在表1中,相比Base Core,New Core增強了ALU和load部件的數(shù)目,ALU部件的個數(shù)從2個變?yōu)?個,load部件從1個變?yōu)?個。由此可知,ALU或者load相關指令理論上的最大吞吐率將為3或者2?;谶@個基本的性能預期,利用本文提出的性能分析框架就可以對相關指令的吞吐率進行測試。特別地,雙精度浮點乘加指令的吞吐率體現(xiàn)了單個處理器核的峰值浮點計算性能,為了測試峰值計算性能的可達性,可以構造全部由雙精度浮點乘加指令構成的定向或者隨機測試激勵,統(tǒng)計從第1條乘加指令到最后1條指令完成的時鐘周期數(shù)和乘加指令條數(shù),從而可計算出乘加指令的實際吞吐率,通過對實際吞吐率進行測試就可以對浮點計算的峰值性能可達性進行測試。

實際測試中本文選取雙精度乘加指令 FMLA 進行測試,測試結果如圖7所示。隨著 FMLA 指令執(zhí)行條數(shù)的增加,F(xiàn)MLA 的吞吐率也隨之增大,最終趨近于最大吞吐率 2。由此可知,通過測試FMLA的吞吐率,驗證了浮點計算峰值性能的可達性。

Figure 7 Throughput test result of FMLA instruction

5 結束語

本文針對處理器核性能提升研制過程中新一代處理器核RTL設計可能出現(xiàn)的性能缺陷,提出了一種基于RTL仿真的輕量級性能分析框架,并基于該框架給出了典型應用場景下的性能分析測試方法,從而在核級功能驗證的初期快速發(fā)現(xiàn)RTL設計中可能引入的與預期不符的性能缺陷,有效加速了新一代高性能處理器核的研制進程。未來我們將繼續(xù)對該框架進行完善,包括設計用于支持更多類型架構參數(shù)測試的測試激勵,對性能預期進行量化,并設計支持多種類型的性能分析和結果展示等。

猜你喜歡
測試程序指令處理器
ARINC661顯控指令快速驗證方法
基于Castle型機械手的三溫量產測試平臺實現(xiàn)
手機APP交互界面人因適合性測試程序的設計與實現(xiàn)
中心主導制訂的《VHF/UHF頻率范圍內測向系統(tǒng)測向靈敏度的測試程序》等兩項國際標準在ITU官網(wǎng)正式發(fā)布
殺毒軟件中指令虛擬機的脆弱性分析
電氣自動化控制設備可靠性測試探討
中斷與跳轉操作對指令串的影響
Imagination的ClearCallTM VoIP應用現(xiàn)可支持Cavium的OCTEON? Ⅲ多核處理器
ADI推出新一代SigmaDSP處理器
一種基于滑窗的余度指令判別算法
临漳县| 海原县| 西乌珠穆沁旗| 金乡县| 桐柏县| 高平市| 湘乡市| 密云县| 贵州省| 柳林县| 漳平市| 仁布县| 固安县| 汤原县| 钦州市| 平顺县| 北票市| 湖州市| 抚顺市| 鄂托克前旗| 绥中县| 旌德县| 北票市| 常州市| 安平县| 谢通门县| 和平县| 灌云县| 梅河口市| 峡江县| 商城县| 镇宁| 衡山县| 精河县| 万年县| 洛南县| 集安市| 鄂州市| 平果县| 钟山县| 襄樊市|