李文青 吳 畏 章隆兵 肖俊華 王 劍
(*計算機體系結(jié)構(gòu)國家重點實驗室(中國科學(xué)院計算技術(shù)研究所) 北京 100190) (**中國科學(xué)院大學(xué) 北京 100049) (***龍芯中科技術(shù)有限公司 北京 100190)
隨著片上晶體管數(shù)量的增加,處理器計算能力迅猛提升,出現(xiàn)“存儲墻”問題,訪存成為處理器性能的一個重要瓶頸[1,2]。工業(yè)界和學(xué)術(shù)界使用許多技術(shù)來解決和緩解“存儲墻”問題,如使用Cache、多發(fā)射亂序執(zhí)行、向量指令等,從提高訪存速度、挖掘指令間的并行性掩蓋訪存時間或減少訪存次數(shù)等方面解決“存儲墻”問題。
超標量處理器支持訪存的推測執(zhí)行,增加訪存指令執(zhí)行時間上的重疊,加快了程序的執(zhí)行。處理器推測訪存過程中,訪存流水線中的幾個關(guān)鍵隊列有著重要的作用,這些隊列保存指令狀態(tài)、實現(xiàn)多條指令同時訪存、確保存取的數(shù)據(jù)不因發(fā)出順序改變而帶來錯誤、并且維護訪存指令的提交順序。
中央處理器(central processing unit,CPU)計算能力的提高,加大了對訪存速度的需求,訪存子系統(tǒng)的設(shè)計越來越復(fù)雜,訪存流水線中隊列壓力變大,CPU訪存相關(guān)隊列也越做越大。隊列的增大對CPU直接的影響就是面積和功耗的增加,快速尋找隊列大小的最佳組合和性能的折中點十分重要。
隊列大小組合方面并沒有很多研究可以參考,其中大多數(shù)是按照經(jīng)驗來做,同時也可以使用模擬、建模的方式找到一個性能較好的大小組合[3,4]。模擬處理器執(zhí)行情況可以使用硬件仿真或者軟件模擬。軟件模擬是處理器設(shè)計空間探索常用的方式,但軟件模擬硬件的執(zhí)行通常要比真實處理器慢很多,時間上的開銷使得巨大的設(shè)計空間無法得到足夠的探索。硬件仿真雖然較軟件模擬更快更準確,但靈活性差,資源需求大,也不適合做設(shè)計空間的探索。
本文采用了模擬器和回歸模型相結(jié)合的建模方法,從模擬到預(yù)測,逐步擴大設(shè)計空間探索的范圍,求解隊列大小組合和性能的最佳平衡點。本文設(shè)計并實現(xiàn)了周期精確的訪存子系統(tǒng)模擬器,對訪存子系統(tǒng)的功能和行為進行了詳細的模擬,并使用目標處理器的現(xiàn)場可編程門陣列(field programmable gate array,F(xiàn)PGA)原型驗證平臺進行了校準。通過實驗和分析,提出了一種面向訪存子系統(tǒng)關(guān)鍵隊列大小的回歸模型,該模型測試誤差較低且結(jié)果穩(wěn)定,模型可用于預(yù)測整個訪存子系統(tǒng)設(shè)計空間中隊列大小組合的性能。
本文剩余部分組織如下:第1節(jié)回顧了與本研究相關(guān)的前人的工作,第2節(jié)介紹模擬器和回歸模型的設(shè)計,第3節(jié)描述了模擬器的實現(xiàn),模型的構(gòu)建以及誤差分析,第4節(jié)使用模型預(yù)測不同條件下隊列大小的最佳組合,第5節(jié)是整個文章的總結(jié)。
在訪存子系統(tǒng)的設(shè)計發(fā)展中,有很多工作對其中的隊列進行了研究。文獻[5-8]介紹了通過改變load/store隊列的組織方式、相互關(guān)聯(lián)性、數(shù)據(jù)依賴的解決方法等方面減少功耗、面積和延遲,提高處理器性能。本文側(cè)重于在確定的隊列組織方式和策略下,探索適合本架構(gòu)的隊列大小平衡,從而在特定架構(gòu)下使硬件資源達到最高的利用率。
處理器設(shè)計空間探索通常基于模擬器展開,通過測試大量不同的處理器參數(shù),得到對應(yīng)響應(yīng),進而指導(dǎo)硬件設(shè)計。有許多模擬器在研究中得到廣泛的應(yīng)用,如SimpleScalar、GEM5、SimICS、PTLsim、McSimA+等,它們可在功能模擬、時序模擬、全系統(tǒng)模擬或應(yīng)用級模擬等不同抽象層次對處理器進行仿真模擬。軟件模擬硬件的速度較慢,這是影響對設(shè)計空間探索的一大因素。本實驗中的模擬器對多種訪存子系統(tǒng)中隊列的進出時機、解決數(shù)據(jù)沖突策略進行了周期精確的詳細模擬,忽略了其余部件不必要的細節(jié),在提高模擬速度的同時,有針對性地模擬架構(gòu)設(shè)計,得到了更準確的結(jié)果。
通過模擬器可以得到設(shè)定配置的對應(yīng)響應(yīng)(如性能、功耗、某事件發(fā)生次數(shù)等信息),理論上可以通過遍歷整個設(shè)計空間找到全局最優(yōu)解,然而因為資源、時間的限制和可配置參數(shù)的巨大組合數(shù),使用軟件模擬或者硬件仿真得到整個設(shè)計空間的結(jié)果是不可能的。對于搜索空間非常大的問題,一般采用啟發(fā)式搜索[9](如A*、模擬退火等)或預(yù)測模型[10-12](如線性回歸、支持向量機等統(tǒng)計學(xué)或機器學(xué)習(xí)方法)方法。文獻[13]通過少數(shù)模擬點得到26個處理器參數(shù)的模型,通過擬合出的模型系數(shù)得到對性能影響較大的處理器部件,指導(dǎo)處理器優(yōu)化方向。自文獻[13]之后,預(yù)測模型的方法被廣泛運用到處理器設(shè)計空間探索中。本文使用預(yù)測模型的方法,通過分析和實驗,得出訪存流水線關(guān)鍵隊列大小之間的回歸模型。得到模型后無需再使用模擬器,便可以對整個設(shè)計空間中隊列不同大小組合的性能進行預(yù)測評估,擴大了可行的設(shè)計空間探索范圍,減少了設(shè)計空間探索的時間。
在超標量處理器中,將已經(jīng)準備好的訪存指令發(fā)射、執(zhí)行,很大程度上加快了處理器的執(zhí)行速度,但是訪存指令的推測執(zhí)行同時也會帶來數(shù)據(jù)沖突的問題。訪存子系統(tǒng)中,亂序執(zhí)行需要依靠LDQ(load queue)、STQ(store queue)和MMQ(memory issue queue)這幾個關(guān)鍵的隊列來實現(xiàn)并維護正確的數(shù)據(jù)關(guān)系[5]。
LDQ和STQ是訪存指令的重定序隊列,LDQ/STQ按照程序順序存放load/store指令。這2個隊列在程序運行過程中記錄已經(jīng)在訪存流水線中且尚未提交的訪存指令的狀態(tài),并保證已經(jīng)寫回的訪存指令按序提交。同時,2個隊列中一些進入退出機制(如回滾、例外、正常提交等情況)保證了寫回寄存器和內(nèi)存的數(shù)據(jù)的正確性。
MMQ是訪存流水線的第1級,按照一定的規(guī)則將其中未發(fā)射的訪存指令發(fā)射到訪存流水線中。MMQ中指令的退出由LDQ和STQ中指令的狀態(tài)進行決定。
從以上描述可以看出,這3個隊列的大小影響著能同時在訪存流水線中的訪存指令的數(shù)量,不同的查找和退出機制也會產(chǎn)生不同程度的回滾和例外的發(fā)生。
同時在流水線中的訪存指令越多,指令之間的時間重疊就會增多,從而增加了整體的執(zhí)行速度。但是回滾和例外也會因為流水線中指令數(shù)量的增加而增加,從而在一定程度上回滾導(dǎo)致更多發(fā)射出的指令無效。重新發(fā)射訪存指令浪費了時間和資源,例外更是會打斷指令的執(zhí)行,造成更大的損失。
模擬器假定ROQ(reorder queue,重排序隊列)、MMQ、STQ都無限大,其余配置都和目標機器相同,圖1(a)展示了不同LDQ的大小對運行時鐘周期數(shù)的影響。假定模擬器ROQ、MMQ、STQ以及其余配置都和目標機器相同,圖1(b)展示了改變LDQ的大小對運行時鐘周期數(shù)的影響。
(b) ROQ、MMQ、STQ和目標機器相同
(a) ROQ、MMQ、STQ無限大
從圖1可以看出,隨著LDQ的增大,總的時鐘周期數(shù)呈下降趨勢,在LDQ較大時,下降趨勢逐漸變緩直至幾乎不變。曲線所趨近的水平線是LDQ不出現(xiàn)滿阻塞情況下的時鐘周期數(shù),也就是CPU不受訪存流水線隊列滿阻塞情況下的性能。這時候,程序執(zhí)行的周期數(shù)受到MissQ(miss queue)大小、Cache、程序本身數(shù)據(jù)相關(guān)的影響,以及定浮點隊列大小、流水線深度、流水線條數(shù)等CPU其他參數(shù)的影響。
在STQ、MMQ上做同樣的實驗,測得的結(jié)果和圖1類似,其原因也大致相同。
總的來說,隊列的增大在達到拐點之前對CPU性能有著正向的影響,且有著決定性的作用。
回滾和例外等因為亂序造成的因素雖然會帶來負影響,但影響程度不如增大隊列獲得的收益大。對于一些程序,可以從圖中看到,曲線下降趨勢中會有一些波動。通過模擬器統(tǒng)計的數(shù)據(jù)也能看出,在那些點受例外回滾的影響較大。
對比觀察圖1中(a)和(b)可發(fā)現(xiàn),將其余3個隊列由無限大變?yōu)楹湍繕藱C器相同,曲線的拐點都向左移動。這說明,訪存流水線中隊列不阻塞的點受到其他隊列大小的影響。
表1、表2和表3分別是使用SPEC CPU 2000[14]中mcf程序load-store流,模擬器中的ROQ設(shè)為無限大,每次MMQ、LDQ、STQ中1個無限大、剩余2個隊列不斷改變大小得到這2個隊列大小的各種組合。按照其中一個隊列大小固定分類畫圖,觀察在一個隊列逐漸變化時,性能變?yōu)榉€(wěn)定的另一個隊列大小的變化。如表1所示,ROQ和MMQ無限大,當(dāng)STQ為4時測得的LDQ大小變化對應(yīng)的時鐘周期逐漸穩(wěn)定時LDQ大小是36。
表3 ROQ、LDQ無限大,MMQ大小不同時,對應(yīng)的性能穩(wěn)定時STQ最小大小
表2 ROQ、STQ無限大,MMQ大小不同時,對應(yīng)的性能穩(wěn)定時LDQ最小大小
表1 ROQ、MMQ無限大,STQ大小不同時,對應(yīng)的性能穩(wěn)定時LDQ最小大小
任何一個隊列滿阻塞都會造成指令發(fā)射的停止,從而減少訪存流水線中的指令數(shù)。所以,隊列最佳大小會受到其他隊列大小的影響。通過單純改變一個隊列大小找到的該隊列最佳大小這一搜索方法是不妥當(dāng)?shù)?。為了找到性能最佳折中點,需要將所有隊列的大小變化一起考慮。
不同的處理器會有不同的處理數(shù)據(jù)相關(guān)的策略。在訪存流水線關(guān)鍵隊列中,隊列之間相互訪問的方式、流水線中的指令回退的條件、檢測到數(shù)據(jù)錯誤后的處理方式、指令退出各個隊列的時機等策略都會有所不同[15,16]。這使得不同處理器即使隊列大小相同,隊列大小組合對性能的影響也是不一樣的。也就是說,策略不同的處理器的最佳隊列大小組合是不一樣的。亂序訪存的不同實現(xiàn)策略使得對每款處理器隊列大小有不同的要求,使用模擬器有針對性地探索隊列大小組合是一個很好的方法。
本文模擬器基于新一代的國產(chǎn)主流通用CPU訪存子系統(tǒng)設(shè)計[17,18],是一款基于trace的周期精確的模擬器,其結(jié)構(gòu)如圖2所示。
圖2 模擬器整體設(shè)計
模擬器的輸入是程序訪存流trace。訪存流是一個程序完整執(zhí)行過程中訪存指令的動態(tài)執(zhí)行信息,包括PC值、訪存地址、訪存指令類型和數(shù)據(jù)位寬。模擬器在RegMap部件進行trace的讀取并依據(jù)PC的差值進行其他指令的插入,進而模擬出完整的程序執(zhí)行流,發(fā)送往其余部件。程序可以根據(jù)要設(shè)計的處理器面向的領(lǐng)域和需求由設(shè)計人員自行選取,得到該程序的訪存流trace即可使用。
模擬器對訪存子系統(tǒng)相關(guān)部件等進行了詳細的描述,優(yōu)化掉處理器其他部分的無關(guān)細節(jié)避免影響模擬器速度。訪存子系統(tǒng)主要由訪存流水線和存儲器層次訪問部分組成。訪存發(fā)射隊列MMQ、訪存數(shù)據(jù)存取堆MemRegfile、訪存地址生成MemAddr、數(shù)據(jù)快表DTLB、數(shù)據(jù)Cache DCache和LDQ/STQ構(gòu)成了訪存流水線各流水級。模擬器詳細模擬了這些部件的內(nèi)部構(gòu)成和它們之間的傳遞訪問關(guān)系,并實現(xiàn)了多種可選擇的處理沖突策略。模擬器中還實現(xiàn)了STLB和3級Cache層次以及預(yù)取、storefill等存儲器層次訪問過程中的相關(guān)機制。重排序隊列對訪存子系統(tǒng)影響較大,所以也對此進行了詳細的模擬。圖2中實線部分的方框均為模擬器重點模擬部件,箭頭連線表示數(shù)據(jù)或控制傳輸,虛線框為簡單模擬的處理器其他部件。
軟件模擬器除了實現(xiàn)便捷、靈活配置外,還可以在各個階段加入計數(shù)變量,在程序模擬過程中統(tǒng)計到多種需要觀察的值,從而掌握程序行為和處理器結(jié)構(gòu)更全面的信息。
回歸模型是在定義域范圍內(nèi)自變量和因變量之間關(guān)系的數(shù)學(xué)表示。線性回歸模型被廣泛用于參數(shù)重要性估計和定義域范圍內(nèi)任意點的對應(yīng)輸出變量預(yù)測[13]。
多元線性模型基本形式可以表示如下:
(1)
其中,y是因變量,β0是常數(shù)項,該公式有n個自變量Xi,每個自變量對應(yīng)有系數(shù)βi,是誤差項。
對于復(fù)雜的情況,線性的關(guān)系往往是不夠的,對于每個Xi可以構(gòu)建其非線性的映射,將變量先做Xi的非線性函數(shù),然后進行線性的回歸擬合。
從前面關(guān)于訪存隊列大小對整體性能的影響分析來看,隊列本身的大小在一定范圍內(nèi)對整體性能有著決定性的作用。這個范圍的大小除了取決于處理器其他部件的參數(shù)外,還取決于訪存子系統(tǒng)中其他隊列的大小。
為了體現(xiàn)出這種關(guān)系,首先構(gòu)造Xi關(guān)于隊列大小的函數(shù),再使用線性回歸方程構(gòu)建成為處理器性能關(guān)于隊列大小的方程式。因為ROQ雖然不屬于訪存子系統(tǒng)中獨有,但該隊列對訪存過程和訪存隊列的提交有著很大的影響,所以模型中考慮將其作為特征變量。
考慮到相互之間的大小影響,Xi關(guān)于隊列大小的子函數(shù)采用比值的形式更合適。第1類函數(shù)使用2個隊列的比值體現(xiàn)隊列間直接的影響;第2類函數(shù)使用2個隊列的乘積與一個隊列的比體現(xiàn)這2個隊列和另一個隊列的相互影響;第3類函數(shù)使用3個隊列的乘積與一個隊列的比體現(xiàn)這4個隊列之間的關(guān)系。模型如式(2)所示。
(2)
在使用軟件模擬器的基礎(chǔ)上,回歸模型將進一步節(jié)省模擬時間,擴大設(shè)計空間探索范圍,以找到符合條件較優(yōu)的解。[19]
模擬器使用C++語言實現(xiàn),所有隊列共有特性繼承自父類,每個隊列不同的退出機制實現(xiàn)在隊列子類的退出函數(shù)中,相互訪問、例外、回滾等也實現(xiàn)在各自的函數(shù)中,具有良好的模塊性??赡艽嬖诘囊恍┙鉀Q數(shù)據(jù)沖突問題的策略使用宏定義在對應(yīng)函數(shù)中實現(xiàn),方便配置不同硬件參數(shù)。
模擬器中的RegMap對應(yīng)于硬件指令分配,開啟一個線程讀取訪存指令trace并產(chǎn)生虛擬非訪存指令,另一個線程按照處理器前端指令供應(yīng)速率向ROQ、MMQ、LDQ和STQ分配指令。這部分可能會發(fā)生例外,導(dǎo)致流水線清空,所以使用2個指針記錄已分配出去的位置和尚未提交的位置。
如圖2所示,訪存流水線的第1級訪存發(fā)射隊列MMQ將源寄存器已就緒的指令按照一定順序發(fā)射到訪存流水線中。指令經(jīng)過MemRegfile、MemAddr、TLB和Cache,最后進入LDQ或STQ中,如果有數(shù)據(jù)沖突,則觸發(fā)沖突的解決方法;否則,指令等待訪存或者提交。模擬器實現(xiàn)時,將訪問DTLB作為一級,下一級訪問DCache,模擬器時序和結(jié)果上等同于硬件中同時訪問DTLB和DCache,下一個時鐘周期進行Tag比較。
模擬器實現(xiàn)了可擴展、多層次的Cache結(jié)構(gòu),其大小、延遲、替換策略等均可配置。DCache失效請求由missq進行訪問管理和Cache重填。同時,還實現(xiàn)了數(shù)據(jù)預(yù)取和store fill機制。
串行執(zhí)行程序的軟件模擬器為了模擬硬件的并行運行情況,每個部件的輸入部分都必須是上一個時鐘周期的值,模擬的同一個時鐘周期內(nèi)的結(jié)果不能被使用。軟件對于流水級的逆序描述滿足上述要求。模擬器整體功能部件運行偽代碼如表4所示。
表4 模擬器整體功能部件運行偽代碼
模擬器所模擬目標處理器為本課題組所設(shè)計的新一代國產(chǎn)處理器,模擬器校準使用該處理器RTL設(shè)計代碼的FPGA原型驗證平臺產(chǎn)生的數(shù)據(jù),該平臺與目標處理器有著極高的相似度。
實驗中使用程序測試集為SPEC CPU 2000,是由標準性能評價機構(gòu)(standard performance ealuation corporation,SPEC)開發(fā)的用于評測CPU性能的基準程序測試組,是常用的通用處理器平臺測試集。
FPGA平臺運行的處理器雖然主頻與真實機器有著很大的差異,總體絕對時間上會不同,但是處理器的時鐘周期在FPGA上運行和ASIC芯片上是一樣的,所以校準和預(yù)測的數(shù)據(jù)統(tǒng)計都使用硬件計數(shù)器的時鐘周期數(shù)來表示處理器性能。在訪存周期方面,將模擬器訪存周期數(shù)設(shè)置成和FPGA訪存周期相同,圖3是這種情況下SPEC CPU 2000訪存流在模擬器和在FPGA平臺上運行硬件性能計數(shù)器得出的DCache失效率對比。圖4是二者的MMQ和STQ阻塞率對比,LDQ阻塞在FPGA和模擬器中都幾乎為0。由于亂序執(zhí)行的原因,模擬器運行的程序流和SPEC CPU 2000程序流不完全一樣,且模擬器僅有訪存子系統(tǒng)的詳細模擬,添加的指令的執(zhí)行時間情況也不相同,因此圖4中數(shù)據(jù)有些差異,但是差異并不算很大且趨勢相同。
圖4 SPEC CPU 2000 load-store流在模擬器和FPGA原型驗證平臺上的隊列滿阻塞率
圖3 SPEC CPU 2000 load-store流在模擬器和FPGA原型驗證平臺上的DCache失效率
實驗中模擬器分別改變MMQ、ROQ、LDQ、STQ大小組成不同的大小組合運行程序,得到相應(yīng)的總時鐘周期。隊列大小的選取應(yīng)在設(shè)計空間大小范圍內(nèi),并且分布較為均勻且組合隨機,以便對整個設(shè)計空間不同組合附近都有模擬,從而得到更符合模擬情況的模型參數(shù)。
將得到的數(shù)據(jù)順序隨機,然后分成5份,使用其中的4份數(shù)據(jù)依據(jù)2.3節(jié)提出的模型式(2)進行線性回歸擬合,得到各個參數(shù),此時便得到了該處理器設(shè)計在測試程序下的性能模型,通過輸入隊列大小可以預(yù)測處理器在該程序集下的運行時鐘周期數(shù)。然后將未參與擬合的一份數(shù)據(jù)的隊列大小和擬合出來的參數(shù)帶入式(2),計算得到預(yù)測時鐘周期數(shù),與對應(yīng)模擬器得到數(shù)據(jù)進行對比,得到測試集結(jié)果。將4份參與擬合的訓(xùn)練數(shù)據(jù)的隊列大小輸入公式,得到的時鐘周期數(shù)和模擬器得到的周期數(shù)進行對比,得到訓(xùn)練集結(jié)果。實驗使用交叉驗證,將這5份數(shù)據(jù)都作為一次測試數(shù)據(jù),分別進行5次上述實驗,得到5組實驗結(jié)果。
表5為fma3d程序load-store流的數(shù)據(jù)5次交叉驗證的線性回歸擬合參數(shù)、平均誤差和標準差。表6是mcf、applu、twolf、gap和swim程序load-store流的數(shù)據(jù)5次交叉驗證平均誤差和標準差,限于篇幅沒有列出5次擬合的參數(shù),每個程序5次的擬合參數(shù)結(jié)果相似。
表5 fma3d程序load-store流的數(shù)據(jù)5次交叉驗證結(jié)果
表5續(xù)
表6 mcf,applu,twolf,gap和swim程序load-store流的數(shù)據(jù)5次交叉驗證結(jié)果
實驗中,測試數(shù)據(jù)沒有參與訓(xùn)練,其結(jié)果可以反映模型的準確程度。將訓(xùn)練數(shù)據(jù)使用模型計算得到的結(jié)果和測試數(shù)據(jù)得到的結(jié)果相比較,保證參數(shù)的訓(xùn)練沒有過擬合。使用交叉驗證,檢查結(jié)果是否穩(wěn)定,排除數(shù)據(jù)的偶然性。對SPECCPU測試集中不同類型的應(yīng)用程序進行測試,模型結(jié)果表現(xiàn)都穩(wěn)定且誤差較小,表明該模型對于不同類型應(yīng)用程序都有效。表5和表6實驗結(jié)果證明式(2)在這些程序所測得數(shù)據(jù)集上表現(xiàn)良好,誤差在10%以內(nèi),無過擬合現(xiàn)象,結(jié)果穩(wěn)定。
對于面向不同領(lǐng)域的處理器將會有著不同的設(shè)計需求,處理器在性能要求方面有著不同的評價標準。在使用本文所采用的方法時,可以根據(jù)設(shè)計修改模擬器的構(gòu)成,使用面向該領(lǐng)域通用的程序測試集(如SPECCPU、EEMBC、COREMARK、LINPACK等)或者設(shè)計者根據(jù)需求構(gòu)建的程序集,得到隊列大小配置相應(yīng)的性能數(shù)據(jù)。采用本文提出的回歸模型,得到目標類應(yīng)用相應(yīng)的模型系數(shù),即可使用該模型預(yù)測隊列大小和性能的關(guān)系,從而根據(jù)設(shè)計的需求得到合理的隊列大小組合。
已經(jīng)擬合好的回歸模型可以預(yù)測整個設(shè)計空間范圍內(nèi)不同隊列大小搭配的性能結(jié)果,使得對這部分的設(shè)計空間探索更準確和容易。
本實驗中,為了可視化數(shù)據(jù),圖5展示了在ROQ128、MMQ32情況下LDQ和STQ不同大小的性能情況,ROQ128、LDQ64情況下MMQ和STQ不同大小的性能情況以及在ROQ128、STQ48情況下MMQ和LDQ不同大小的性能情況。
圖5 不同程序MMQ,ROQ,LDQ,STQ固定其中2個隊列大小,另外2個隊列大小對性能的影響
對于回歸模型,可以使用梯度下降等求最優(yōu)解的方法找到合適的隊列大小組合,從而達到資源面積利用和性能折中的最佳點。本實驗的設(shè)計空間中隊列大小參數(shù)都是整數(shù),設(shè)計空間雖然大,但是有限個數(shù)的點以及回歸模型O(1)的計算復(fù)雜度,使得即使遍歷整個設(shè)計空間也十分快??焖俚玫秸麄€設(shè)計空間中不同隊列大小的性能預(yù)測結(jié)果后,便可以很快找到符合面積功耗和性能要求的隊列大小配置。例如,設(shè)置條件為隊列大小每增10、 總時間減少1%以上則選擇改變隊列大小,根據(jù)這個條件找到最佳隊列大小組合如表7所示。表7中,有給定3個隊列,預(yù)測某程序達到滿足閾值條件的最小隊列值,或者給定1個、2個固定隊列大小,預(yù)測某程序達到滿足閾值條件的最佳隊列組合值。閾值的設(shè)定和隊列大小固定的數(shù)目可以根據(jù)實際需求改變,通過得到的模型快速評估性能,進而得到不同條件下最佳隊列大小的組合方案。
表7 使用線性回歸模型得到滿足閾值條件的最佳隊列大小組合
處理器訪存在程序運行時占有很大的時間消耗,超標量處理器設(shè)計過程中,為了實現(xiàn)訪存的推測執(zhí)行,通常使用一些隊列來保存各個訪存行為的信息。本文討論了訪存流水線中各隊列大小對性能的影響原因和方式,采用了軟件模擬器和分析模型結(jié)合的建模方法,對隊列大小組合進行探索,找到隊列大小組合平衡點使得硬件資源利用率達到最優(yōu)。本文提出了一種面向訪存子系統(tǒng)的回歸模型,并設(shè)計了相應(yīng)的軟件模擬器,經(jīng)實驗驗證,軟件模擬器能較準確地模擬訪存行為,回歸模型適合于訪存子系統(tǒng)的建模使用,對數(shù)據(jù)的擬合誤差較小且結(jié)果穩(wěn)定,可用于下一代處理器訪存子系統(tǒng)設(shè)計空間探索和對性能的預(yù)測。