- 相關推薦
淺析計算機體系結構模擬技術現狀挑戰與展望論文
1 引言
計算機系統日益復雜,其研制難度不斷增加,開發風險不斷加大,研制周期越來越長,體系結構模擬技術在計算機體系結構研究和系統設計中的作用愈加顯著. 通過對計算機系統的建模、仿真及評估,科研人員可以驗證新型體系結構設計;將該技術導入產品設計則可優化系統方案、降低開發風險并提升開發效率.
作為一種系統評估手段,體系結構模擬器運行在宿主機上,通過加載測試程序來驗證新的設計方案,發現其中潛在的缺陷,從而改進設計并有效控制風險. 體系結構模擬器通常使用軟件方式對部分或全部計算機系統硬件建模,對體系結構的指令集架構、處理器、存儲系統、網絡傳輸拓撲結構等進行模擬,驗證系統的功能和性能. 體系結構模擬器已成為系統研究和設計開發中不可或缺的工具.
早期體系結構模擬采用分析驗證技術,如數據驅動驗證,即跟蹤收集性能測試程序在目標計算機上運行所產生的數據信息,通過分析該數據信息來評估體系結構的性能.這是一種后驗證方法,不利于在項目早期開展系統架構分析和風險評估. 為在項目早期論證系統設計方案,在數據驅動驗證的基礎上又提出了模型分析技術,該技術使用數學工具對計算機系統各部件間的接口進行建模,通過評估資源利用率和相應時序特性來驗證目標系統的性能. 模型分析技術可在體系結構設計初期發現影響系統性能指標的關鍵因素,從而指導方案設計和改進. 但由于模型建立及求解過程復雜,為了簡化模型,必須將部分細節特征抽象化,導致模型分析結果精度低,測試結果不能準確反應真實系統特性. 軟件模擬技術則可以較好的解決這一問題.模擬器使用軟件的方式模
擬真實硬件的功能及時序特性. 軟件模擬技術可模擬程序執行的全過程,獲得程序運行過程中系統的動態行為及特性. 然而,軟件模擬技術在表現出較高精度和靈活性的同時,也存在模擬速度過慢的問題. 為了提高模擬速度,軟件模擬與硬件加速相結合的技術即混合模擬技術應運而生. 混合模擬技術將體系結構中的部分或全部部件用FPGA 或硬件仿真器( emulator) 實現,從而提高模擬性能.
2 模擬精度
模擬器精度主要受三個方面因素影響:
1) 系統建模精確程度;
2) 輸入參數擬合程度;
3) 指令執行時序的精確程度.
模型要精確的匹配真實系統設計,需開發者準確的理解建模任務,并正確的開發出相應模型; 在此基礎上,要針對系統具體行為設計輸入參數集. 為了實現性能模型的簡潔和快速執行,開發者往往將一些細節特征抽象化,導致系統時序出現偏差,降低模擬精度. 在實際應用中,還存在其它因素影響模擬精度,如緩存控制指令的精確性、I /O 系統模擬的準確性等.
2. 1 蹤跡驅動模擬技術
早期的體系結構模擬器主要采用蹤跡驅動( trace-driven)、數學建模分析等方法. 蹤跡驅動技術收集指令在已有計算機系統中執行所產生的蹤跡數據,并將這些信息作為輸入驅動模擬器運行. 這種技術的優點在于可僅對系統的局部進行細致模擬而無需關注系統的其它部分,從而降低了開發復雜度并提升了執行速度. 缺點是蹤跡本身過濾了系統的動態信息,如分支預測錯誤等,因而無法觀察系統的動態特征,并且蹤跡一般是基于特定參數的固定序列,因此無法代表不同參數對應的多種執行情況. 典型的軌跡驅動模擬器包括磁盤系統模擬器DiskSim、Cache 模擬器Dinero等. 數學建模分析方法通過建立數學模型來描述目標系統特征,由于不能精確的獲得性能數據,因此這種方法的誤差較大.
2. 2 執行驅動模擬技術
執行驅動( execution-driven) 模擬技術建立目標系統的功能和性能模型,通過應用程序的執行獲取性能數據,從而獲得較高的模擬精度,執行驅動的模擬器使用目標程序的二進制代碼作為輸入來驅動模擬過程. 在模擬過程中,模擬器模擬指令的動態執行( 如分支預測等) 過程,從而在不需要目標系統硬件的情況下獲得更接近真實目標系統運行的結果,并能夠精確的模擬不同部件對系統性能的影響. 相對于蹤跡驅動等技術,執行驅動減小了存儲空間的開銷,模擬器的輸入數據量只與程序的靜態指令數成比例,動態指令則在模擬過程中由模擬器生成,一定程度上會影響執行速度. 采用執行驅動的模擬器可以運行完整的操作系統和應用程序,是實現全系統模擬的一種常用方法. 執行驅動技術已經成為體系結構模擬的主流技術,典型的應用有SimpleScalar、SimOS、Proteus等.
3 模擬速度
模擬速度是衡量模擬器性能的重要指標. 精確的性能模擬是非常耗時的過程,特別是隨著系統中處理器核心數的迅猛增長,模擬大規模計算機系統所需要的時間會變得難以接受. 以200KIPS 的模擬執行速度模擬單核1 秒運行需要數小時,而模擬千核系統的1 秒運行需要耗時一年以上,這顯然不能滿足現代體系結構的研究與設計需求. 模擬加速一直以來都是模擬技術研究領域重點關注的問題. 典型的加速方法包括動態二進制翻譯( DBT) 、穿線碼加速、采樣加速、同構加速、并行模擬加速、硬件加速等.
3. 1 動態二進制翻譯
動態二進制翻譯( DBT) 將某個指令集上可執行的二進制代碼翻譯到宿主機指令集執行. 二進制翻譯最初采用解釋執行,它對源處理器代碼中的每條指令實時解釋執行,系統不保存解釋后的代碼,翻譯一條便執行一條指令. 解釋器相對容易開發,但對代碼執行不做任何優化,執行效率低. 靜態翻譯技術解決了這一問題,它在源處理器代碼執行之前對其進行翻譯,有足夠的時間對翻譯后的代碼做完整細致的優化,并且一次翻譯的結果可以多次使用,避免了多次解釋操作帶來的時間開銷. 但是,靜態翻譯無法很好的解決代碼自修改、間接過程調用、間接跳轉等問題.
動態翻譯是一種實時編譯技術,即在程序運行過程中對執行到的片斷進行翻譯,解決了靜態翻譯存在的問題. 程序運行時,DBT 翻譯器在其本地地址空間開始執行指令、逐行解碼,遇到系統調用指令則采用翻譯器自身的調用函數進行替換,在調用點接替操作系統內核的職能. 當程序中有頻繁重復的指令片段時,DBT 將直接執行已經翻譯好的相應代碼,從而省去了重新編譯的過程. 高速緩存中放置翻譯后程序片斷的位置稱為翻譯緩存,當該緩存填滿時,DBT 采用兩種方式處理: 清空翻譯緩存區域、重新加載; 或者增加緩存區的大小. 如果程序的一個運行指令集合超出翻譯緩存空間,則第一種方法將會失效; 而第二種方法會降低cache 的利用率,因為大多情況下需要一次翻譯的片斷長度有限; 具體策略根據需求進行選擇. 動態二進制翻譯可以解決代碼自修改問題,利用執行時的動態信息去發掘優化機會,對用戶能做到完全透明. 將DBT 應用于體系結構模擬器,編譯器可以選擇只翻譯那些頻繁執行的程序和用戶需要詳細模擬的程序,這樣既能提高cache 利用率,也能讓編譯器更好的優化目標代碼,有效提高模擬速度.
3. 2 采樣技術
采樣技術是通過減少模擬運行的指令數來達到模擬加速的目的,具體分為隨機采樣、周期采樣和統計采樣. 隨機采樣是指隨機選擇一些程序片斷進行模擬運行,將模擬結果以某種方式合并起來,用于代表整個測試程序的運行. 隨機采樣的片斷長度一般是固定值,采樣片斷之間的距離則是隨機的,可以通過反復重新采樣后求模擬結果的平均值,使其盡可能的接近整個程序的運行結果. 周期采樣是在程序中周期性的選擇片斷進行模擬運行,用戶可以靈活的設置周期長短和間隔大小. 統計采樣是基于統計學的方法推測出測試程序的特征,通過測量變化差異使采樣片斷能夠反映出程序的變化,從而確保采樣集是代表整個程序的最小采樣集. 采用該類技術的模擬器有SimPoint、SMARTS等.
采樣技術的關鍵在于程序片段的選取. 隨機采樣不確定性較大,該方式測試結果與整個程序結果之間存在偏差,反復采樣取平均方法可以提升準確度,但驗證過程耗時. 周期采樣同樣難以選擇合適的采樣頻率和片斷長度以使取得的采樣集是最小集合. 統計采樣技術需要通過合適的方法找到最佳采樣集. SMARTS 模擬器就是采用基于統計的采樣方法,采樣片斷是周期性采樣,長度基本固定但允許有輕微的變化以對齊時鐘周期邊界. 為保證片斷執行時宿主機的cache 以及分支預測器等處于正確的狀態,SMARTS 在詳細執行片斷程序之前先粗略的模擬片斷之間的代碼以完成Cache 及分支預測器等部件的初始化. 模擬過程分為功能模擬和詳細模擬階段,功能模擬執行間隔代碼,這個階段模擬器忽略許多內部狀態的記錄,程序快速向前推進,為下一階段的詳細模擬建立正確的部件狀態; 詳細模擬階段則精確執行程序片斷. FFX + WUY + Run Z 也是一種基于統計的采樣方法,FFX( Fast-ForwardX) 是指測試程序運行開始后快速執行X 百萬條指令,粗略模擬; WU Y 指詳細模擬之后的Y 百萬條指令,以便建立起符合詳細模擬情況的運行環境,但該階段的模擬結果并不作為整個模擬結果的參照; 接下來的Z 百萬條才是模擬器真正詳細執行的程序段. 該方法可極大的減少模擬運行時間,但Z 百萬條指令往往不能代表整個程序的執行結果,從而導致模擬誤差.
4 可用性
對于體系結構模擬技術,可用性包括兩個方面: 一方面模擬器應能適應各種系統應用場景,如: 單核單任務、單核多任務與多核多任務等; 另一方面,加載到模擬器的測試程序可用度高,支持多個平臺和多種編譯器,使模擬器能夠發揮最大的驗證功效.
4. 1 用戶級虛擬化
隨著計算機系統處理器核數的迅猛增長,千核系統成為現實,給模擬器技術帶來了巨大挑戰. 由于千核系統規模龐大,能加載的測試程序類型有限,無法全面的評估千核系統特性,進而影響了千核系統的研究、開發. 為解決該問題,需要新的技術使模擬器能夠加載更廣泛的測試程序.Daniel 等人使用輕量用戶級虛擬化技術( lightweight userlevel virtualization) 構建了ZSim 模擬器,實現千核系統測試程序的靈活加載. 用戶級虛擬化技術使用動態二進制翻譯給用戶進程提供虛擬系統視圖來支持多程序并發執行,并支持運行管理及客戶-服務器類型負載. 常規的用戶級模擬器通常不能模擬此類程序.為實現千核系統的模擬,模擬器利用了宿主機上的多個處理器,突破了傳統模擬器僅能在單處理器上運行的局限. 為適應多處理器并行架構,ZSim 每個進程利用共享內存段作為一個全局堆,所有的仿真狀態都存儲在全局堆中. 通過調整共享堆和庫代碼段的映射地址,實現跨進程無縫信息傳遞. 盡管線程來自不同的處理器,ZSim 也可被視為一個簡單的多線程應用,并可使用輪換調度算法( round-robin) 來創建任意數量的線程. 為避免模擬器操作系統出現死鎖現象,ZSim 舍棄傳統模擬器使用的修改測試程序的辦法,而是識別出阻塞的系統調用的子集,通過調整內部同步點使得線程加入和退出來避免死鎖. 為擺脫程序運行依賴精確的時間,模擬器虛擬化了rdtsc( 讀時間戳計數器) 指令、只有少數內核接口、睡眠處理和超時處理調用返回時間信息,使得宿主機與模擬器的時間相互獨立. 通過引入上述技術,ZSim 實現了多種類型測試程序的加載運行、如客戶端-服務器類程序,并可模擬完整的千核系統.
4. 2 優化測試程序
優化測試程序是通過精簡基準測試程序集,使模擬測試更具有針對性,以提高模擬的效率. 對于基準測試程序集,其初衷是將一些基準測試程序集中化、規范化,以有效評測系統在各種應用場景下的性能. 該程序集可以彌補基準測試程序個體的不足. 但也存在以下幾個問題:
1) 缺少可信度,基準程序的運行往往與實際程序運行存在差異;
2) 每個程序有不同的運行條件,用戶為改善測試程序的性能常使用專用標記,但這些標記又容易引起許多程序的不合法轉換或降低其他程序的性能;
3) 完整程序集的運行時間長. 由于研究側重點不同,研究者往往采用精簡代碼的方式來獲得更好的系統性能測試結果. 以SPEC CPU2000 為例,它是SPEC 中面向處理器的基準測試程序集,為處理器研發人員廣泛使用,其包含多組性能測試程序,能測試多處理器計算機系統的整數運算性能和浮點數運算性能. 其中,整數運算基準程序以C 語言開發為主,浮點運算基準程序主要用Fortran 語言開發,用于各種CPU 的性能評價. 為了優化基準測試程序,眾多處理器研究者致力于研究如何精簡代碼使得模擬評估處理器過程更為高效,所做的工作包括減少代碼運行、減少輸入的數據等.
Timothy 等人通過分析測試程序的基礎模塊分布( Basic Block Distribution) ,試圖運行一些程序片斷去代替整個程序的運行. 他認為不同的基礎模塊能唯一標識不同的指令執行階段,基礎模塊的周期運行反映了計算機系統各個構件的周期運行,如IPC、分支命中率、緩存命中率、預測值、預測地址、重排序緩存占用等. 由于基本塊的頻度信息可以使用工具快速收集,因此該方法提供了一種尋找程序模擬點及周期性特征的實用方法. KleinOsowski 等人在SPECCPU2000 的基礎上開發了MinneSPEC 測試程序,該程序精簡了模擬輸入的參數集,但保留原數據集內部函數的運行權重分布,包括初始化、主要計算功能和復位功能等,極大的降低了模擬運行時間. 但是,MinneSPEC 測試程序所模擬出的結果與原測試指令集有較大差異,取得的優化效果有限. Erez 等人通過選擇執行部分程序來代表完整的程序執行,使用統計驅動算法生成模擬點集合,并使用檢驗算法去選定代碼執行初期的模擬點. 該方法的難點在于如何給出一個指標以選擇合適的模擬點,該指標基于程序基本塊的分布,通過研究它們的塊矢量差分布情況來決定運行的代碼.
5模擬器技術面臨的挑戰
現有的計算機體系結構模擬器在精度、速度、可用性和易用性等方面均存在不同程度的不足. 一直以來,研究人員不斷努力改進模擬技術. 如蹤跡驅動的較大誤差使得執行驅動技術得到重視和發展,基準測試程序的漫長運行時間促使人們對采樣技術進行研究,計算機系統規模的日漸龐大推進了并行模擬技術的發展. 隨著計算機系統逐步進入千核時代,模擬技術又迎來了新的重大挑戰.
體系結構模擬器面臨的首要挑戰是系統建模復雜度急劇增加. 因功耗和散熱等因素的限制已不能繼續采用提升單一處理器頻率的方式提升系統性能,計算機系統多采用多核、多處理器方式構建. 即使每個處理器、核心均在較低的頻率、功耗下運行,其系統整體性能依然大幅超越單核處理器系統.Intel 的實驗結果表明,單核處理器每提高20% 的時鐘頻率,僅能提升13%的性能,但增加73% 的功耗; 而當增加第二個核心時,可在降低20% 時鐘頻率的同時提高73% 的性能. 對于通用CPU,在上個世紀90 年代末, IBM、惠普、SUN 等服務器廠商就相繼推出了多核服務器CPU. 2006 年, Intel 推出了雙核處理器,接下來陸續推出了面向服務器、工作站和個人電腦的4 核、8 核處理器. 2014 年2 月, Intel 又發布具有15 核心的至強通用處理器,基于該處理器構建的64 路分布式共享內存系統已經接近1000 核心. 對于眾核處理器,2007 年Tilera公司發布的嵌入式處理器TILE64 包含了64 個核心,在2010年Supercomputer 會議上Intel 公布了單芯片48 核的云處理器架構,并聲稱其理論上可達到1000 個核心,而GPU 已經具有數千核心.
計算機系統已經步入千核時代,但現有的體系結構模擬器大都不能勝任千核系統模擬,如單線程運行的Gem5、Flexus、MARSS 等模擬器雖然理論上可以模擬千核系統,但其在可用資源、模擬速度等方面均不能滿足千核系統的模擬需求. Hypersim 能較好的模擬HPP 高性能計算機體系結構,但只針對集群系統,適用范圍有限; ZSim 采用多處理器并行化方法提高了千核系統模擬的速度,相比單線程模擬器取得了顯著的進步,但由于采取了較多的精簡策略,影響了其模擬精度.體系結構模擬器面臨的第二個挑戰是模擬速度與精度難以兼顧. 現有的模擬加速技術如采樣技術、動態二進制翻譯等均是以犧牲模擬精度為代價. 模擬器執行全部的基準測試程序集能夠獲得完整的系統特征數據,但耗時巨大,執行部分測試程序或者程序的部分代碼能加快模擬速度,但影響測試結果的精度,故體系結構模擬需要在精度和速度間權衡. 即使以大幅損失精度為代價,現有模擬器的模擬速度依然無法滿足千核系統的模擬需求. 硬件加速方案是一種選擇,但軟硬件混合模擬器的開發難度大、周期長,因此硬件加速還不能成為主流的模擬器技術.
模擬器技術面臨的第三個挑戰是對異構多核系統支持不足. 一些計算密集型應用如圖形處理、氣候模擬、分子動力學計算等對系統處理性能要求高,通用處理器系統無法滿足其需求,而GPU 擁有超強的浮點處理、矢量計算能力,特別適合大規模、低耦合度并行計算任務. 相比于通用處理器,GPU 在圖形處理、氣候模擬、分子動力學計算等應用處理上有百倍甚至上千倍的性能提升. 因此采用CPU + GPU 并行模式,占用系統絕大部分性能的密集型計算將由GPU 執行,而少量控制型任務( 如運行操作系統、處理數據交互等) 將由CPU 執行.根據Amdahl 定律,采用GPU 加速密集型計算任務處理措施后,系統可以獲得較好的加速比,CPU + GPU 模式在高性能計算中獲得了廣泛應用. 但是當前,面向CPU + GPU 異構系統的模擬研究極為有限.
大多數模擬器雖然集成了多種處理器模型,但在模擬時只能使用單一處理器模型,尚缺乏對異構多核系統并行模擬的支持. LIN 等人構造的異構多核架構模擬器雖然實現了在多個SimpleScalar 進程中運行不同處理器模型,但其系統結構與真實異構系統存在較大差異,不能精確的模擬異構系統.
6 研究展望
為了更好支持未來計算機系統的研究和設計,體系結構模擬技術需要從4個方面取得更多的創新和突破. 針對歸納4A 理論示意圖Fig. 1 4A theory schematic diagram的模擬器4 個特征,本文提出4A 理論( accuracy,acceleration, availabilityand adaptability ) ,即未來體系結構模擬技術需在精度、速度、可用性、易用性4 個方面均取得重大突破,理想的模擬器將會是這4 類技術發展的交集.基于4A理論,本文認為如下幾個研究方向需要重點關注:
6. 1 基準測試程序集優化
基準測試程序優化是一種提升模擬效率的重要方法. 基準測試程序應能準確、高效的測試目標系統,同時具備一定的靈活性,允許用戶對源代碼進行修改. 基準測試程序集需要面向多種類型應用,盡可能覆蓋各個應用場景.
6. 2 模型組件化
體系結構性能模擬要求建立精確的時序模型,各部件模型之間需要頻繁的通信和同步,成為并行模擬器設計的難點.若將并行模擬器中通信和同步功能分別獨立實現,各部件模塊內部進行功能模擬,通過調用統一接口模型進行交互,則可使設計者更專注于部件模塊的建模與設計,而較少考慮它們之間的通信和同步問題.
6. 3 大規模并行模擬
當前大規模計算機系統能夠提供大容量內存、IO 帶寬和強大的計算能力,現有絕大部分模擬器還基于單線程運行,無法充分利用大規模計算機系統提供的資源. 并行化模擬技術尚未成熟,仍然需要深入的研究和探索.
6. 4 異構系統模擬
異構多處理器架構在解決科學計算、圖形處理、加解密等高性能計算問題中已經發揮出巨大的作用,但異構模擬技術研究相對滯后,模擬器支持有限,異構模擬技術是未來體系結構模擬技術重要發展方向之一.
6. 5 硬件加速技術
FPGA 或者硬件仿真器( emulator,如cadence 公司的Palladium等) 加速技術已經得到普遍應用,利用上述技術可實現單個部件或者全系統的模擬,不僅大大加快了模擬器的速度,而且提高了基準測試程序的執行效率. 但是隨著計算機系統規模越來越大,單片FPGA 或單臺硬件仿真器無法容納全系統甚至主要部件邏輯,而采用多片FPGA 或多臺硬件仿真器加速方案依然存在諸多協同、交互難題,故硬件加速技術仍需要進一步發展.
7 結束語
計算機系統已步入千核時代,規模龐大、結構復雜、開發周期長、風險高,迫切需要計算機體系結構模擬技術提供強有力的支撐. 本文首先按照精度、速度、可用性和易用性4 個方面的特征對計算機體系結構模擬技術現狀進行了分析和歸納,并總結其不足之處. 隨后論述了大規模計算機系統模擬面臨的若干挑戰,并提出了未來理想模擬器應是精度、速度、可用性及易用性技術發展交集的4A 理論,據此對體系結構模擬技術未來發展進行展望.
【淺析計算機體系結構模擬技術現狀挑戰與展望論文】相關文章:
我國醫學檢驗發展的現狀及展望論文08-17
建筑施工技術現狀分析論文03-26
淺析中職教育數學教學的現狀分祈論文03-21
我國化學灌漿技術發展與展望論文03-21
新聞傳播學研究生教育現狀與挑戰論文03-21
虛擬網絡的主要技術淺析的研究分析論文03-22
淺析企業工商管理現狀及發展趨向論文07-10
大型企業經濟管理現狀和展望論文03-22