一種基于人工神經(jīng)網(wǎng)絡(luò)的亂序處理器Cache訪存性能評估方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種基于人工神經(jīng)網(wǎng)絡(luò)的亂序處理器Cache訪存性能評估方法,屬于 軟硬件協(xié)同設(shè)計(jì)領(lǐng)域。
【背景技術(shù)】
[0002] 基于硬件行為建模的硅前架構(gòu)評估及設(shè)計(jì)空間探索可提供芯片設(shè)計(jì)指導(dǎo)意見,降 低芯片設(shè)計(jì)迭代周期。Cache作為片上高速緩存對處理器訪存性能影響較大,訪問缺失會使 處理器流水線產(chǎn)生氣泡或引起流水線阻塞,降低處理器計(jì)算性能。另外,Cache占據(jù)大量芯 片面積,消耗大量功耗,所以處理器設(shè)計(jì)需要更合理地設(shè)計(jì)Cache的組織結(jié)構(gòu)。
[0003] 近幾年關(guān)于Cache訪存性能的研究可以分成兩個方向維度,一是減少目標(biāo)應(yīng)用程 序在當(dāng)前Cache結(jié)構(gòu)中的訪存缺失次數(shù),二是減少訪問命中時SRAM體響應(yīng)時間以及訪問缺 失后的數(shù)據(jù)取回時間。統(tǒng)計(jì)Cache訪存缺失次數(shù)的方法主要包含兩種,一是基于重用距離分 布的概率推算,二是基于堆棧距離分布的統(tǒng)計(jì)計(jì)數(shù)。重用距離指,針對同一 Cacheline的兩 次連續(xù)訪存請求之間存在的訪存請求個數(shù)。堆棧距離指,針對同一 Cacheline的兩次連續(xù)訪 存請求之間的訪存地址種類個數(shù)。重用距離與堆棧距離均需要從訪存Trace流中提取。獲取 Trace流多以在二進(jìn)制執(zhí)行工具中軟件插粧的方式來統(tǒng)計(jì)訪存順序流,或者也可以將重用 距離、堆棧距離提取算法直接嵌入到二進(jìn)制執(zhí)行工具中。采用二進(jìn)制執(zhí)行工具的好處是可 較為快速地提取出重用距離與堆棧距離分布,但缺點(diǎn)是獲取的重用距離、堆棧距離分布均 是按照訪存指令順序執(zhí)行的結(jié)果統(tǒng)計(jì)。該方法不能直接應(yīng)用于亂序處理器的Cache訪存行 為建模。
[0004] 訪存行為在亂序處理器中的亂序調(diào)度受四個因素影響。首先,訪存地址運(yùn)算會亂 序執(zhí)行。訪存指令在轉(zhuǎn)換成訪存操作前需要計(jì)算訪存地址。若計(jì)算所依賴的源操作數(shù)(寄存 器)處于就緒狀態(tài),在無讀寫一致性問題且無 Memory Barrier指令嵌入時,地址計(jì)算操作可 被調(diào)度。亂序調(diào)度的原因是由于優(yōu)先進(jìn)入流水線的指令,其計(jì)算資源未就緒。為了提升處理 器指令吞吐率,故將計(jì)算資源已經(jīng)就緒的指令優(yōu)先調(diào)度。其次,TLB訪問缺失引起會訪存亂 序發(fā)射。在地址計(jì)算完成后,訪存地址會傳輸至TLB進(jìn)行地址翻譯,將虛擬地址轉(zhuǎn)換成物理 地址。因?yàn)門LB采取CAM或類Cache的訪問結(jié)構(gòu),容量相對較小,無法將頁表中所有的表項(xiàng)緩 存在TLB中,所以地址轉(zhuǎn)換過程中會產(chǎn)生TLB訪問缺失現(xiàn)象。假如存在地址計(jì)算完成且TLB訪 問命中的訪存請求,則亂序至前排發(fā)射。第三,地址轉(zhuǎn)換過后,訪存請求會通過Cache端口進(jìn) 入到Cache存儲體中。由于端口數(shù)量有限,非阻塞發(fā)射訪存請求會使Cache端口存在被填充 滿的情況。此時,所有就緒訪存停止發(fā)射,待Cache端口處于非堵塞狀態(tài)時重新恢復(fù)發(fā)射。在 等待過程中,由于計(jì)算資源未就緒或TLB訪問缺失等原因,被亂序至后排發(fā)射的訪存請求此 時已處于發(fā)射就緒狀態(tài)。基于亂序調(diào)度機(jī)制遵循最老指令優(yōu)先調(diào)度的原則,原本被打亂的 訪存序列存在恢復(fù)順序執(zhí)行邏輯的可能。
[0005] 最后值得注意的是,即使得到訪存亂序執(zhí)行流,也不能將其直接應(yīng)用于亂序處理 器的Cache訪存行為建模。這是因?yàn)樘幚砥鞣亲枞l(fā)射訪存請求,使得后續(xù)訪問在前次訪存 還未完成的情況下被扔出。而順序處理器必須等待前次訪問完成后才能發(fā)出后續(xù)訪問請 求。
[0006] 上述四種亂序影響,使得基于二進(jìn)制執(zhí)行工具提取的堆棧距離分布同亂序執(zhí)行后 的結(jié)果相比差異巨大,導(dǎo)致Cache訪存行為預(yù)測精度不高?,F(xiàn)有預(yù)測亂序處理器Cache訪問 缺失次數(shù)的方法采用全功能仿真模型,由于全仿真時間開銷過大,該方法不利于快速評估 Cache訪存行為。所以本發(fā)明針對上述問題提出了一種基于神經(jīng)網(wǎng)絡(luò)的Cache性能評估方 法,用于快速預(yù)測亂序處理器中Cache訪存行為。
【發(fā)明內(nèi)容】
[0007] 發(fā)明目的:為了克服現(xiàn)有技術(shù)中存在的不足,本發(fā)明提供一種基于人工神經(jīng)網(wǎng)絡(luò) 的亂序處理器Cache訪存性能評估方法,該方法解決了利用二進(jìn)制執(zhí)行工具提取的堆棧距 離分布在預(yù)測Cache訪存行為上精度不高的問題。
[0008] 技術(shù)方案:為實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案為:
[0009] -種基于人工神經(jīng)網(wǎng)絡(luò)的亂序處理器Cache訪存性能評估方法,包括以下步驟:
[0010] 步驟1,仿真獲取目標(biāo)程序執(zhí)行時間前30%的訪存亂序執(zhí)行流;依據(jù)Gem5指令取指 序號對亂序執(zhí)行流進(jìn)行重排序,獲取訪存順序執(zhí)行流;設(shè)計(jì)堆棧距離算法,分別對順序執(zhí)行 流與亂序執(zhí)行流提取堆棧距離分布,并作數(shù)據(jù)歸一化;
[0011] 步驟2,根據(jù)步驟1得到的亂序訪存堆棧距離分布在Gem5中加入Cache訪問缺失事 件的判定邏輯,統(tǒng)計(jì)各項(xiàng)缺失事件次數(shù);
[0012] 步驟3,選取BP人工神經(jīng)網(wǎng)絡(luò),依照經(jīng)驗(yàn)公式調(diào)試獲取合適的訓(xùn)練方法、網(wǎng)絡(luò)層級 數(shù)目以及各層級內(nèi)的神經(jīng)元個數(shù);通過選定的BP人工神經(jīng)網(wǎng)絡(luò)對步驟1得到的歸一化后的 順序訪存堆棧距離分布與步驟2判斷得到的不同的訪問缺失事件間的映射關(guān)系進(jìn)行擬合;
[0013] 步驟4,利用Qemu運(yùn)行目標(biāo)程序得到目標(biāo)程序順序執(zhí)行流,將目標(biāo)程序順序執(zhí)行流 導(dǎo)入步驟1設(shè)計(jì)的堆棧距離算法提取目標(biāo)程序堆棧距離分布;
[0014] 步驟5,將第4步獲取的目標(biāo)程序堆棧距離分布?xì)w一化后導(dǎo)入步驟3選取的BP人工 神經(jīng)網(wǎng)絡(luò),同時根據(jù)堆棧距離分布與不同的訪問缺失事件間的映射關(guān)系預(yù)測目標(biāo)程序在亂 序處理器中的Cache訪問缺失次數(shù)。
[0015] 所述步驟1中堆棧距離算法的設(shè)計(jì)方法如下:堆棧距離指針對同一 Cacheline的兩 次連續(xù)訪存請求間的訪存地址個數(shù),通過紅黑樹與哈希表的組合計(jì)算堆棧距離;訪存Trace 包括2個模塊,一是當(dāng)前訪存請求地址,二是當(dāng)前訪存請求序號SN;哈希表的個數(shù)為兩個,分 別為第一哈希表、第二哈希表,第一哈希表采用地址中Tag與Set位域作為索引,獲取內(nèi)容無 效化標(biāo)志以及前次同地址訪存的序號;第二哈希表通過地址Set位域索引,獲取指向紅黑樹 的指針;紅黑樹中存儲訪存序號SN,并按照升序排列;通過在第一哈希表中索引到的SN號, 在紅黑樹中找到存儲位置,計(jì)算該位置與紅黑樹尾端的距離即為當(dāng)前訪存請求在Cache Set內(nèi)的堆棧距離;通過在第一哈希表中索引到的SN號,在紅黑樹中找到存儲位置,計(jì)算該 位置與紅黑樹尾端的距離即為當(dāng)前訪存請求在Cache Set內(nèi)的堆棧距離;完成堆棧距離計(jì) 算后,將當(dāng)前訪存序號更新到在哈希表和紅黑樹中索引的SN處;當(dāng)檢測到寫操作時,依據(jù)寫 地址找到第一個哈希表中對應(yīng)的內(nèi)容失效位置1。
[0016]優(yōu)選的:對訪存堆棧距離分布采取歸一化的數(shù)據(jù)處理的方法;將堆棧距離超過100 的所有分布合成一維。
[00?7]所述步驟2中Gem5中Cache訪問缺失事件的判定的方法:
[0018]訪存缺失計(jì)數(shù)可通過在gem5中嵌入訪存堆棧距離計(jì)算來判定。
[0019] 冷缺失:若在第一哈希表中找不到當(dāng)前訪存請求地址,則判定為冷缺失。
[0020] 競爭缺失:若在第一哈希表中找到當(dāng)前訪存請求地址且堆棧距離大于等于Cache 組關(guān)聯(lián)數(shù)目,則判定為競爭缺失。
[0021] -致性缺失:若在第一哈希表中找到當(dāng)前訪存請求地址且堆棧距離小于Cache組 關(guān)聯(lián)數(shù),同時內(nèi)容無效化標(biāo)志為