焦 童,陳玲玲,安 鑫,李建華
(合肥工業(yè)大學(xué)計(jì)算機(jī)與信息學(xué)院,合肥 230009)
近年來,片上多核處理器集成核心的數(shù)量日益增多,對最后一級緩存(Last-Level Cache,LLC)的容量需求逐漸增加。受存儲(chǔ)密度限制,傳統(tǒng)靜態(tài)隨機(jī)存取存儲(chǔ)器(Static Random Access Memory,SRAM)的LLC 在整個(gè)芯片上面積占比逐漸增大。此外,已發(fā)展到深亞微米級的半導(dǎo)體技術(shù)以及急劇增加的SRAM 靜態(tài)能耗對片上LLC 性能提出更高要求。
當(dāng)前電子自旋轉(zhuǎn)移矩隨機(jī)存取存儲(chǔ)器(Spin-Torque Transfer Random Access Memory,STT-RAM)、相變存儲(chǔ)器等非易失性存儲(chǔ)器(Non-Volatile Memory,NVM)具有良好的可擴(kuò)展性、極低的靜態(tài)能耗以及較大的存儲(chǔ)密度,此類新興存儲(chǔ)器可提高片上緩存系統(tǒng)的性能并降低其能耗[1-3]。然而新型非易失性存儲(chǔ)器的讀寫操作具有不同的訪問延遲和能耗,目前大部分基于NVM技術(shù)的緩存寫操作延遲和能耗是讀操作的幾倍甚至幾十倍[4-5]。
針對NVM 等非對稱訪問緩存中寫操作的高延遲和高能耗問題,在進(jìn)行旁路決策時(shí)應(yīng)考慮緩存塊分配是否合理。本文通過分析LLC 中緩存塊的重用信息,提出一種基于緩存塊重用的ReBP動(dòng)態(tài)旁路策略,從LLC缺失填充和上級緩存寫回兩方面進(jìn)行旁路分析,以提升非易失性緩存系統(tǒng)的能效。
近年來,國內(nèi)外研究人員采用多種方法減少STTRAM 緩存的能耗,并通過預(yù)測數(shù)據(jù)塊寫入頻率來判斷能否將數(shù)據(jù)寫入STT-RAM 緩存。文獻(xiàn)[6-7]提出一種寫預(yù)測輔助STT-RAM 緩存的DASCA 系統(tǒng)來預(yù)測每個(gè)寫入請求是否為無效寫入,由于無效寫入數(shù)據(jù)在下一個(gè)寫入請求之前不會(huì)重用,因此DASCA 可避免無效數(shù)據(jù)寫入STT-RAM 緩存。文獻(xiàn)[8-10]提出一種基于統(tǒng)計(jì)的非對稱緩存旁路方式SBAC,其從能耗判斷是否將數(shù)據(jù)塊插入STT-RAM 緩存中,如果讀取和寫入操作次數(shù)已知,則可計(jì)算有無旁路能耗,并估算每個(gè)模塊的旁路能耗和不旁路能耗。此外,主流的NVM 緩存性能優(yōu)化方法還包括基于混合緩存架構(gòu)(Hybrid Cache Architecture,HCA)的方法。混合緩存由具有不同存儲(chǔ)單元的多個(gè)陣列組成,其中包括一個(gè)容量較小的SRAM陣列和一個(gè)容量較大的STT-RAM 陣列,如果將寫密集型數(shù)據(jù)存儲(chǔ)在SRAM 陣列中,則可節(jié)省STT-RAM 陣列進(jìn)行寫操作所需的大量能源成本。
文獻(xiàn)[11]提出基于讀寫感知的混合LLC 體系RWHCA,其根據(jù)導(dǎo)致LLC 未命中的指令來決定將數(shù)據(jù)塊存儲(chǔ)在STT-RAM 陣列中還是SRAM 陣列中。如果引起未命中的指令是load指令,則該指令提供給LLC的數(shù)據(jù)塊有可能再次被讀取,將該數(shù)據(jù)塊存儲(chǔ)在STTRAM 陣列中;如果該數(shù)據(jù)塊不是由load 指令提供,則其被判斷為寫密集型模塊而被存儲(chǔ)在SRAM 陣列中。文獻(xiàn)[12]提出一種HCA 管理策略,也稱為適應(yīng)性放置與遷移策略,其將LLC 的寫操作分為預(yù)取寫操作、存儲(chǔ)指令寫操作和寫回操作3 種類型。在該策略中,先分析每個(gè)緩存塊類型的寫密集程度,再根據(jù)分析結(jié)果決定哪些類型的緩存塊存儲(chǔ)于SRAM 陣列和STT-RAM陣列中。文獻(xiàn)[13-15]提出一種HCA 準(zhǔn)確預(yù)測機(jī)制,使用預(yù)測表存儲(chǔ)每個(gè)緩存塊的訪問模式并預(yù)測其寫強(qiáng)度,在LLC 中存儲(chǔ)緩存塊時(shí),可參照預(yù)測表將緩存塊放入合適的陣列中。
綜上所述,傳統(tǒng)旁路策略可集中減少對STT-RAM陣列的寫操作次數(shù)并預(yù)測緩存塊類型。如果是重用率不高的緩存塊則會(huì)繞過STT-RAM 陣列,如果是重用率較高的緩存塊則不能采用旁路策略,從而導(dǎo)致STT-RAM 陣列產(chǎn)生較多高能耗寫操作。本文對旁路策略進(jìn)行優(yōu)化,使重用率較高的緩存塊繞過STTRAM 陣列,并動(dòng)態(tài)地將緩存塊寫入其他核心的同級緩存,以進(jìn)一步減少STT-RAM 的寫操作。
本節(jié)介紹緩存塊重用信息及其利用方法與采用非對稱LLC 存在的問題,闡述LLC 發(fā)生缺失時(shí)進(jìn)行填充以及對來自上一級緩存寫回操作的旁路策略。
圖1 為緩存塊A 從填充到緩存再到被緩存管理算法逐出緩存的整個(gè)生命周期。緩存塊A 通過讀取訪問或者預(yù)取操作填充至緩存,其在緩存中的生命周期由生存時(shí)間(從開始分配到最后一次命中的時(shí)間)和死亡時(shí)間(從最后一次命中到被逐出的時(shí)間)組成。分配后緩存塊的訪問命中總次數(shù)稱為數(shù)據(jù)重用次數(shù),圖1 中緩存塊A 的重用次數(shù)為5。第一次分配稱為初始放置,為記錄每個(gè)緩存塊的重用次數(shù),在每個(gè)緩存塊中增加額外的兩位計(jì)數(shù)器。

圖1 緩存塊A 的生命周期Fig.1 Life cycle of cache block A
由于讀寫具有不對稱性,因此NVM 緩存需要特定的管理策略。然而LRU 等傳統(tǒng)緩存管理策略僅考慮了緩存塊的局部特征,卻無法感知NVM 緩存的讀寫非對稱性。針對該問題,本文在多核處理器中基于不同緩存參數(shù)配置進(jìn)行實(shí)驗(yàn)(見3.1 節(jié)),得到不同寫延遲配置下運(yùn)行SPLASH-2[16]基準(zhǔn)測試程序的LLC 平均訪問時(shí)間,實(shí)驗(yàn)結(jié)果如圖2 所示。

圖2 不同寫延遲配置下的LLC 平均訪問時(shí)間Fig.2 LLC average access time under different write delay configurations
在圖2 中,第1 組未配置3 級緩存LLC(Without LLC),得到數(shù)據(jù)直接從主存中填充到L2 緩存時(shí)的總數(shù)據(jù)訪問時(shí)間。第2 組(寫延遲為讀延遲的1 倍,記為1×)配置了具有相同讀寫訪問延遲的緩存。第3 組寫延遲分別增加到讀延遲的2 倍(2×)、3 倍(3×)、4 倍(4×)和5 倍(5×)。可以看出,當(dāng)緩存讀寫訪問趨于不對稱時(shí)總數(shù)據(jù)訪問時(shí)間會(huì)增加,當(dāng)LLC 緩存的寫延遲足夠大時(shí)刪除LLC 緩存有助于減少總數(shù)據(jù)訪問時(shí)間。對于radiosity 和radix 等基準(zhǔn)測試程序,刪除LLC 緩存可減少訪問時(shí)間,說明將緩存塊從主存填充到LLC 意義不大。
當(dāng)LLC 缺失時(shí),目標(biāo)緩存塊會(huì)從主存調(diào)出填充到LLC 中,采用旁路策略可減少LLC 中寫操作次數(shù)并避免性能下降。由于緩存具有非包含性,因此緩存塊即使通過旁路繞過LLC 也可保持?jǐn)?shù)據(jù)一致性。下文將針緩存系統(tǒng)配置介紹LLC 的讀操作(寫操作與此類似)。
當(dāng)LLC 缺失時(shí),緩存塊從主存調(diào)出后的填充操作如圖3所示(虛線表示模塊之間可以數(shù)據(jù)互通,以下同)。如果主存加載的緩存塊繞過LLC,則其將被直接填充到L2 緩存,如路徑2 所示;否則緩存塊正常加載到LLC中,如路徑1 所示。結(jié)合圖2 的分析結(jié)果可知,將部分重用緩存塊填充到LLC 并不能帶來性能上的提升,其原因是此類緩存塊常由于后續(xù)請求被修改或被更新,導(dǎo)致LLC 中大部分為無效緩存塊,僅當(dāng)來自上級緩存的數(shù)據(jù)逐級寫回,才能使得LLC 中緩存塊重新有效。

圖3 LLC 缺失時(shí)緩存塊的填充操作Fig.3 Filling operation of cache block when LLC is missing
基于上述規(guī)則,如果某個(gè)核心所執(zhí)行的指令請求逐級向下級緩存索引緩存塊,則當(dāng)LLC 未命中時(shí),整個(gè)緩存會(huì)產(chǎn)生一次缺失,此時(shí)需要從主存中查找緩存塊進(jìn)行填充。如果此后緩存塊在其生命周期中有較高的重用率,可無需填充至LLC。當(dāng)該緩存塊被替換算法逐出LLC 時(shí),在某個(gè)時(shí)刻核心有一條相同的指令請求并再次出現(xiàn)緩存缺失,利用以往記錄可將緩存塊填充至對應(yīng)核心的L2 緩存中,無需填充到LLC。
為支持旁路策略,需要額外的預(yù)測表來保存相應(yīng)指令的部分地址位,且LLC 的每個(gè)緩存塊添加額外的數(shù)據(jù)比特來保存相應(yīng)的部分地址位,LLC 緩存塊和預(yù)測表的結(jié)構(gòu)如圖4 所示。當(dāng)緩存塊從主存填充至LLC 時(shí),需將請求指令的部分地址保存至緩存塊。如果該緩存塊被替換算法選擇為犧牲塊,則需檢查該緩存塊的重用信息,每個(gè)緩存塊均添加重用計(jì)數(shù)位(V),當(dāng)重用計(jì)數(shù)位超過給定閾值(本文中閾值為2)時(shí),該緩存塊中部分指令地址(Addr)位被保存到預(yù)測表中。如果此后有一條相同的請求指令出現(xiàn)LLC缺失,則表明查詢預(yù)測表匹配成功,且緩存塊會(huì)從主存旁路至L2 緩存。

圖4 LLC 緩存塊和預(yù)測表的結(jié)構(gòu)Fig.4 Structure of LLC cache block and prediction table
下文列舉多核處理器實(shí)例(見圖5)來介紹基于預(yù)測表和重用信息的LLC 旁路策略(初始冷啟動(dòng)下,預(yù)測表為空且無任何信息)。
1)在圖5(a)中,當(dāng)核心0 的一條指令請求A 訪問LLC 出現(xiàn)缺失時(shí),預(yù)測表為空,通過查詢主存獲得對應(yīng)的緩存塊1 并將其填充至LLC,如圖5(b)所示。導(dǎo)入緩存塊后,更新狀態(tài)信息為:重用計(jì)數(shù)設(shè)置為0,Addr 域保存指令地址A 的高位部分。此后每次訪問和命中緩存塊1 均需更新重用計(jì)數(shù)器的值,以便后續(xù)旁路策略執(zhí)行決策。
2)在圖5(c)中,在某一個(gè)時(shí)刻緩存塊1 和緩存塊2 被替換算法先后從LLC 中逐出,此時(shí)需檢查緩存塊的重用信息,并根據(jù)重用計(jì)數(shù)器的值來動(dòng)態(tài)決定對應(yīng)緩存塊的地址信息是否需保存到預(yù)測表。由于緩存塊1 的重用計(jì)數(shù)器值為3,超出給定閾值,因此緩存塊1 的Addr 位被寫入預(yù)測表。因?yàn)榫彺鎵K2的重用計(jì)數(shù)器值為1,未超出給定閾值,所以緩存塊2的Addr 位無需寫入預(yù)測表。此后若再訪問緩沖塊1,則通過檢查預(yù)測表可判定是否進(jìn)行旁路操作。
3)在圖5(d)中,當(dāng)核心0 的一條指令請求A 訪問LLC 出現(xiàn)缺失時(shí),如果通過查詢預(yù)測表發(fā)現(xiàn)以前的記錄中保存有指令A(yù) 的地址,則請求匹配成功。來自主存的緩存塊將通過旁路策略被直接填充至核心0 的L2 緩存中。此時(shí)若所需訪問的地址在預(yù)測表中,則說明對應(yīng)的緩存塊重用性很高,使其繞過LLC 緩存可減少寫次數(shù),不影響對該緩存塊的再次訪問。

圖5 LLC 旁路策略實(shí)例Fig.5 Example of LLC bypass strategy
4)圖6為緩存塊填入LLC 的過程。核心1有一條指令請求緩存塊2,由于該緩存塊已被逐出LLC,因此會(huì)出現(xiàn)LLC 缺失,需訪問主存來獲取緩存塊2,此時(shí)查詢預(yù)測表未能匹配成功,將緩存塊填充至LLC中。因?yàn)榫彺鎵K2 被重用的次數(shù)小于旁路策略ReBP中設(shè)定的閾值,所以其被逐出LLC 時(shí)相關(guān)地址信息未存儲(chǔ)于預(yù)測表中,當(dāng)其被再次訪問時(shí),ReBP 在預(yù)測表中無法找到對應(yīng)的信息,因此,對緩存塊2 不采取旁路操作。

圖6 緩存塊填入LLC 的過程Fig.6 Process of filling cache block into LLC
上述工作均圍繞讀操作進(jìn)行,本文所提旁路策略ReBP 對寫操作的處理方式與此類似,同樣根據(jù)相應(yīng)緩存塊的重用信息,利用預(yù)測表動(dòng)態(tài)地進(jìn)行旁路操作。
上級緩存(假設(shè)為L2緩存)的寫回操作旁路策略如圖7所示。當(dāng)L2緩存中的緩存塊被寫回時(shí),如果采用旁路策略,則該緩存塊將寫回其他核心的L2緩存中,如路徑4所示;否則,該緩存塊正常寫回LLC緩存中,如路徑3所示。

圖7 上級緩存寫回操作旁路策略Fig.7 Bypass strategy for write-back operation of superior cache
對寫回的緩存塊進(jìn)行旁路操作目前存在如下問題:1)需確定對哪些寫回的緩存塊使用旁路操作;2)將采取旁路操作的緩存塊保存到何處。針對第1 個(gè)問題,根據(jù)上文分析結(jié)果,具有較高重用計(jì)數(shù)的緩存塊從當(dāng)前緩存被逐出后,仍有較高的概率被再次重用填充。因此,該緩存塊填充到存儲(chǔ)壓力較小的核心的L2 緩存,不僅能減少基于NVM 的LLC寫操作次數(shù),還能以較小的代價(jià)再次重用該緩存塊。針對第2 個(gè)問題,為獲取各個(gè)核心L2 緩存的存儲(chǔ)壓力等狀態(tài)信息,本文所提旁路策略在多核芯片中增加緩存監(jiān)控模塊CM(見圖8),以監(jiān)測各個(gè)L2 緩存當(dāng)前的存儲(chǔ)壓力,為旁路的緩存塊選擇合適目標(biāo),從而使得各個(gè)L2 緩存的負(fù)載更均衡。在下文的對比實(shí)驗(yàn)中,將CM 模塊設(shè)置為實(shí)時(shí)查詢模式,并分析實(shí)時(shí)查詢和間隔查詢對緩存性能的影響。

圖8 CM 模塊結(jié)構(gòu)Fig.8 Structure of CM module
圖9 為核心之間的旁路策略。由于緩存塊A 將被替換算法逐出,查找該緩存塊的重用計(jì)數(shù)信息后,若發(fā)現(xiàn)其超過設(shè)定的閾值,則可采取旁路操作。檢查CM 模塊中各個(gè)核心的L2 緩存負(fù)載信息,若當(dāng)前核心2 的L2 緩存缺失率較其他核心更低,則可選擇從核心0 中的L2 緩存寫回核心2 的L2 緩存中。如果來自核心0的寫回緩存塊重用計(jì)數(shù)信息超過設(shè)定的閾值,則不采用旁路策略,直接正常寫回LLC 中。該旁路策略通過將來自L2緩存的寫回緩存塊旁路至其他核心,減少了LLC的寫次數(shù),使該緩存塊具有更高的重用率,后續(xù)訪問再次重用這些緩存塊的概率較高。由于L2 緩存更接近處理器,因此可縮短緩存塊的訪問延遲,提高整體系統(tǒng)性能,并減少LLC 的寫入次數(shù)。

圖9 核心之間的旁路策略Fig.9 Bypassing strategy in cores
本文通過實(shí)驗(yàn)對提出的ReBP 策略進(jìn)行驗(yàn)證,分別評估其在單個(gè)和多個(gè)應(yīng)用程序場景下的性能,并與其他相關(guān)策略進(jìn)行對比分析。
本文采用Sniper 模擬器[17]進(jìn)行片上多核處理器系統(tǒng)仿真實(shí)驗(yàn)。該系統(tǒng)有4 個(gè)核心,每個(gè)核心的主頻為2 GHz。片上緩存系統(tǒng)設(shè)置為3 級緩存,L1I/L1D 和L2是基于SRAM 的緩存,LLC 是基于STT-RAM 的非對稱訪問緩存,相關(guān)組件配置如表1 所示。

表1 相關(guān)組件配置Table 1 Configuration of related components
為評估基于STT-RAM 的LLC 性能,本文將其與基于SRAM 的LLC 進(jìn)行比較。通過采用CACTI 6.5[18]和NVSim[19]建模仿真4 MB STT-RAM 和4 MB SRAM 緩存對應(yīng)的特性,參數(shù)設(shè)置如表2 所示。由于STT-RAM具有非易失性,因此其靜態(tài)能耗比SRAM 緩存少一個(gè)數(shù)量級。在相同的存儲(chǔ)容量下,若STT-RAM 所占面積越小,則STT-RAM的LLC在同等面積上存儲(chǔ)信息越多。

表2 SRAM 和STT-RAM 的仿真參數(shù)設(shè)置Table 2 Simulation parameter setting of SRAM and STT-RAM
為進(jìn)行全面評估,分別在單一和隨機(jī)混合的多程序基準(zhǔn)中進(jìn)行分析。所有的基準(zhǔn)測試均來自SPLASH-2。從SPLASH-2中隨機(jī)選擇4個(gè)程序構(gòu)成多程序工作負(fù)載,如表3所示,并對所有負(fù)載運(yùn)行過程中整個(gè)緩存層次的靜態(tài)能耗和動(dòng)態(tài)能耗進(jìn)行統(tǒng)計(jì)。本文仿真實(shí)驗(yàn)實(shí)現(xiàn)了3種緩存策略:1)無旁路的高速緩存策略Baseline;2)基于統(tǒng)計(jì)的緩存旁路策略SBAC-Private[20],其利用數(shù)據(jù)重用計(jì)數(shù)概率進(jìn)行旁路決策;3)本文提出的基于重用的旁路策略ReBP。以系統(tǒng)運(yùn)行應(yīng)用負(fù)載的總執(zhí)行時(shí)間作為性能指標(biāo),將高速緩存的總能耗作為能耗指標(biāo)。所有仿真結(jié)果均以Baseline策略為基準(zhǔn)進(jìn)行對比。

表3 多程序工作負(fù)載Table 3 Multiprogramming workload
圖10 為上述3 種策略運(yùn)行SPLASH-2 程序單應(yīng)用基準(zhǔn)測試下的能耗結(jié)果。可以看出,ReBP 策略使緩存系統(tǒng)的能耗較Baseline 策略平均減少22.5%,而SBAC-Private 策略使緩存系統(tǒng)的能耗較Baseline 策略平均減少15.2%。對基于非易失性存儲(chǔ)器的緩存而言,旁路策略的能耗減少量與預(yù)測精度有關(guān)。由于基于重用的預(yù)測能獲得較高預(yù)測精度,因此ReBP策略可將高重用的緩存塊保留在上級緩存中的L2緩存,將低重用計(jì)數(shù)緩存塊繞過LLC。錯(cuò)誤預(yù)測會(huì)導(dǎo)致ReBP 策略將有用的緩存塊也進(jìn)行旁路,從而抵消其被正確實(shí)現(xiàn)帶來的優(yōu)勢。

圖10 3 種策略的單應(yīng)用能耗對比Fig.10 Comparison of single application energy consumption of three strategies
如果應(yīng)用程序自身的L2 緩存缺失率非常高,則旁路策略的作用將十分有限。例如對于ocean.cont-scale程序,ReBP 策略僅降低2%的能耗。由于L2 緩存缺失率高,因此ReBP 策略將緩存塊旁路到其他L2 緩存可能會(huì)進(jìn)一步增加缺失率,從而在一定程度上抵消ReBP策略帶來的收益。
旁路策略除了通過減少STT-RAM 的寫操作降低能耗之外,對系統(tǒng)性能也有影響。圖11 為單應(yīng)用場景下3 種策略中應(yīng)用負(fù)載的運(yùn)行時(shí)間對比情況。可以看出,ReBP 策略使應(yīng)用負(fù)載的運(yùn)行時(shí)間較Baseline 策略平均減少6.6%,其原因如下:1)ReBP 策略可減少STT-RAM 中延遲較大的寫操作對讀操作的干擾,從而提升系統(tǒng)性能;2)ReBP 策略使重用率高的緩存塊繞過LLC,提升了LLC 的空間利用率,其可容納更多緩存塊來提升系統(tǒng)性能。SBAC-Private策略基于緩存塊的統(tǒng)計(jì)信息進(jìn)行,預(yù)測精度低于ReBP 策略,其使應(yīng)用負(fù)載的運(yùn)行時(shí)間較Baseline 策略平均減少5.4%。

圖11 單應(yīng)用場景下3 種策略應(yīng)用負(fù)載的運(yùn)行時(shí)間對比Fig.11 Running time comparison of application load of three strategies in single application scenario
由圖11 還可以看出,對于ocean.cont 程序,ReBP策略使應(yīng)用負(fù)載的運(yùn)行時(shí)間較Baseline 策略增加5%。因?yàn)長2 緩存缺失率普遍較高,所以ReBP 策略中旁路到其他核心的L2 緩存的緩存塊造成目標(biāo)核心后續(xù)訪問緩存出現(xiàn)較多缺失,導(dǎo)致該程序在ReBP策略下運(yùn)行時(shí)間延長。由上述分析可知,ReBP 策略的核心之間容量共享方案需考慮L2 緩存本身的壓力,若壓力達(dá)到一定程度,應(yīng)關(guān)閉ReBP 策略中核心之間的旁路,這也是下一步繼續(xù)優(yōu)化ReBP 策略的一個(gè)重要方向。
圖12 為3 種策略在多應(yīng)用(程序)基準(zhǔn)測試下的能耗結(jié)果。可以看出,ReBP 策略在大部分多應(yīng)用基準(zhǔn)測試中的能耗較SBAC-Private 策略更少。與Baseline 策略相比,ReBP 策略與SBAC-Private 策略分別將能耗平均降低15.4%和11.3%。在多應(yīng)用場景下,ReBP 策略將核心的高重用緩存塊填充至其他核心的L2 緩存可能會(huì)提升L2緩存的缺失率。因?yàn)槊總€(gè)核心均運(yùn)行多個(gè)線程,會(huì)增加各L2 緩存之間旁路的頻率,從而給L2 緩存缺失率偏高的應(yīng)用造成額外的缺失,浪費(fèi)能耗且影響性能。由圖12 還可以看出,對于mix3、mix7、mix9 和mix10 這4 個(gè)基準(zhǔn)測試多程序,ReBP 策略的能耗高于SBAC-Private 策略。

圖12 3 種策略的多應(yīng)用能耗對比Fig.12 Comparison of multi application energy consumption of three strategies
在應(yīng)用負(fù)載的運(yùn)行時(shí)間上,ReBP 策略在多應(yīng)用情況下與SBAC-Private 策略相似,均比Baseline 策略高約3%。圖13 為多應(yīng)用場景下3 種策略中應(yīng)用負(fù)載的運(yùn)行時(shí)間對比情況。可以看出,ReBP策略與SBAC-Private策略應(yīng)用負(fù)載的運(yùn)行時(shí)間比Baseline 策略更長,其原因是每個(gè)核心都運(yùn)行多個(gè)線程,各級緩存負(fù)載均很高,降低了ReBP 策略和SBAC-Private 策略進(jìn)行旁路決策的精度。ReBP策略和SBAC-Private策略可有效降低STTRAM 緩存的能耗,但若多核系統(tǒng)中運(yùn)行的應(yīng)用對延遲敏感,則需慎用旁路策略。

圖13 多應(yīng)用場景下3 種策略應(yīng)用負(fù)載的運(yùn)行時(shí)間對比Fig.13 Running time comparison of application load of three strategies in multi application scenario
在上述實(shí)驗(yàn)中,采用ReBP 策略對L2 緩存塊進(jìn)行旁路操作時(shí),CM 模塊設(shè)置為實(shí)時(shí)查詢方式,通過不斷查詢比較4 個(gè)L2 緩存的缺失率選擇合適的旁路路徑。然而該實(shí)時(shí)查詢存在較大開銷,可將CM 模塊缺失率查詢方式設(shè)置為間隔查詢來減少開銷。在不同CM 模塊查詢間隔時(shí)間下,將ReBP 策略在3 個(gè)單應(yīng)用場景和3 組多應(yīng)用場景中應(yīng)用負(fù)載的運(yùn)行時(shí)間進(jìn)行對比分析,結(jié)果如圖14 所示。

圖14 不同應(yīng)用場景下CM 模塊查詢結(jié)果Fig.14 Query results of CM module in different application scenarios
由圖14可以看出,當(dāng)查詢間隔時(shí)間為8 ms時(shí),mix4應(yīng)用負(fù)載的運(yùn)行時(shí)間最優(yōu),其他應(yīng)用均在4 ms 的查詢間隔時(shí)間下獲得最優(yōu)性能。此外,當(dāng)查詢間隔很短時(shí)應(yīng)用的運(yùn)行時(shí)間延長,當(dāng)查詢間隔逐漸增加后應(yīng)用的運(yùn)行時(shí)間縮短,但當(dāng)查詢間隔進(jìn)一步增加后應(yīng)用的運(yùn)行時(shí)間又延長。其原因在于,非常小的時(shí)間間隔會(huì)使得CM 模塊查詢頻繁,造成查詢總開銷較大,從而影響應(yīng)用的性能。隨著查詢間隔時(shí)間增加,CM 模塊中各個(gè)L2 緩存塊的壓力信息由于長時(shí)間得不到更新,造成旁路策略長時(shí)間寫入同一個(gè)核心L2 緩存塊中,導(dǎo)致該緩存塊負(fù)載較大,進(jìn)而污染該緩存產(chǎn)生額外的LLC 訪問次數(shù),最終使得整個(gè)應(yīng)用的運(yùn)行時(shí)間增加。由上述分析可知,查詢間隔時(shí)間取4 ms 最佳。
非易失性存儲(chǔ)器可替代傳統(tǒng)基于CMOS 芯片的RAM 存儲(chǔ)器作為片上緩存,但其寫操作代價(jià)過高導(dǎo)致無法被大規(guī)模應(yīng)用,而利用緩存旁路技術(shù)可減少緩存的寫操作來提升非易失性緩存性能。本文分析測試程序訪問最后一級緩存時(shí)的特征,提出基于緩存塊重用的動(dòng)態(tài)旁路策略,通過提升旁路決策精度確保旁路的效率,同時(shí)將高重用的緩存塊動(dòng)態(tài)旁路到存儲(chǔ)壓力較小的上級緩存,以減少非易失性緩存的寫操作次數(shù)。實(shí)驗(yàn)結(jié)果表明,與未采用旁路策略的緩存相比,該策略的基準(zhǔn)測試程序運(yùn)行時(shí)間和緩存能耗更低,有效提高了整體緩存性能。由于本文采用LLC 缺失時(shí)的旁路策略,因此LLC 體系結(jié)構(gòu)設(shè)計(jì)為非包含模式,該模式下LLC 寫操作次數(shù)相對較多。后續(xù)考慮在該策略的基礎(chǔ)上,將LLC 體系結(jié)構(gòu)設(shè)計(jì)為包含模式以減少寫操作次數(shù),并采用添加額外標(biāo)簽的無數(shù)據(jù)存儲(chǔ)方式,實(shí)現(xiàn)空間容量利用率最大化。