關(guān)鍵字優(yōu)先 & 提前重啟動:讓CPU少等內(nèi)存的兩種套路

緩存miss了,傳統(tǒng)做法是等整個64字節(jié)塊從內(nèi)存回來再交給CPU。但CPU可能只需要其中4字節(jié)。關(guān)鍵字優(yōu)先(Critical Word First)和提前重啟動(Early Restart)就是用來解決這個問題的——讓CPU早點(diǎn)拿到急需的數(shù)據(jù),剩下的慢慢傳。


1. 傳統(tǒng)加載的問題

假設(shè)L1緩存miss,需要從DDR4內(nèi)存加載一個64字節(jié)塊:

  • 內(nèi)存延遲:50ns
  • 內(nèi)存帶寬:20GB/s
  • 加載64字節(jié)理論上只需要3ns,但延遲是50ns

傳統(tǒng)做法:等50ns,64字節(jié)全到了,再交給CPU。CPU在這50ns里完全停頓。

實(shí)際上,DDR內(nèi)存是burst傳輸?shù)摹R粋€64字節(jié)塊需要8個burst(每個burst 8字節(jié)),按順序傳輸。如果CPU要的是第7個burst,也得等前面6個傳完。


2. 兩種優(yōu)化策略

2.1 提前重啟動(Early Restart)

核心思想:不按順序等,只要請求的那個字到了,立刻給CPU,讓它繼續(xù)執(zhí)行,剩下的字后臺慢慢傳。

工作流程

  1. 內(nèi)存按正常順序傳burst 0,1,2,3,4,5,6,7
  2. 假設(shè)CPU請求的是burst 3
  3. burst 3到達(dá)時,立即送給CPU,CPU流水線重啟
  4. burst 4,5,6,7繼續(xù)傳,填充緩存

適用場景:順序訪問。因?yàn)榭臻g局部性,CPU很可能接下來要burst 4,5,6,7,這些已經(jīng)在路上了。

局限性:如果CPU接下來要的是burst 0(回跳),還得等,因?yàn)橐呀?jīng)傳過了。

2.2 關(guān)鍵字優(yōu)先(Critical Word First)

核心思想:改變傳輸順序,先傳CPU要的那個字,再傳其他的。

工作流程

  1. CPU請求burst 3
  2. 內(nèi)存控制器調(diào)整順序:先傳burst 3
  3. burst 3到達(dá),送給CPU,CPU流水線重啟
  4. 后臺繼續(xù)傳burst 0,1,2,4,5,6,7

適用場景:隨機(jī)訪問。比如指針追逐、分支跳轉(zhuǎn)目標(biāo),不知道接下來要哪個字。

關(guān)鍵區(qū)別

  • Early Restart:不改變傳輸順序,只改變響應(yīng)時機(jī)
  • Critical Word First:改變傳輸順序,優(yōu)先傳關(guān)鍵字

3. 效果分析

3.1 理論收益

假設(shè):

  • 塊大?。?4字節(jié)(8個burst,每個8字節(jié))
  • 內(nèi)存延遲:50ns(從請求到第一個burst到達(dá))
  • burst間隔:6ns(50ns/8個burst的傳輸時間)
策略 等待時間 節(jié)省
傳統(tǒng)方式 50ns 0%
Early Restart(關(guān)鍵字在中間) ~25ns 50%
Critical Word First(關(guān)鍵字優(yōu)先) ~12ns 75%

注意:Critical Word First不是0等待,因?yàn)閮?nèi)存控制器需要時間處理請求、調(diào)整順序。

3.2 實(shí)際限制

Early Restart的問題

Hennessy & Patterson的經(jīng)典教材[1][2]指出:

"Spatial locality => tend to want next sequential word, so first access to a block is normally to 1st word, but next is to 2nd word, which may stall again and so on, so benefit from early restart alone is not clear"

翻譯:空間局部性導(dǎo)致第一次訪問通常是第0個字,但第二次訪問第1個字時,如果Early Restart已經(jīng)傳過第1個字了,CPU還是得等。所以Early Restart單獨(dú)使用的效果不明確。

Critical Word First的問題

  1. 內(nèi)存控制器復(fù)雜度:需要支持亂序burst傳輸
  2. DDR協(xié)議限制:DDR的burst傳輸有固定模式(如sequential或interleaved),完全亂序可能不支持
  3. 塊大小限制:塊越大(128B),收益越高;塊?。?2B),節(jié)省的時間可能被控制邏輯開銷抵消

4. 與非阻塞緩存的協(xié)同

Critical Word First/Early Restart和Non-blocking Cache是絕配。

Non-blocking Cache:允許miss時繼續(xù)處理其他請求
Critical Word First:讓CPU盡快拿到數(shù)據(jù),繼續(xù)執(zhí)行

兩者結(jié)合:

  1. Load A miss,請求Critical Word
  2. CPU繼續(xù)執(zhí)行,發(fā)射Load B
  3. Load B hit(如果數(shù)據(jù)在緩存)
  4. Critical Word到達(dá),CPU繼續(xù)Load A的依賴指令
  5. 同時,緩存后臺加載剩余塊

這種重疊可以顯著降低effective miss penalty。


5. 總結(jié)

策略 改變傳輸順序 適用場景 實(shí)現(xiàn)復(fù)雜度 實(shí)際收益
Early Restart 順序訪問 中等(空間局部性限制)
Critical Word First 隨機(jī)訪問 高(大塊緩存)

關(guān)鍵認(rèn)知

  1. 塊越大(≥64B),這兩種技術(shù)的收益越高
  2. Early Restart單獨(dú)使用效果有限,因?yàn)榭臻g局部性導(dǎo)致下一次訪問很可能已經(jīng)傳過了
  3. Critical Word First需要內(nèi)存控制器支持,實(shí)現(xiàn)更復(fù)雜
  4. 現(xiàn)代處理器主要依賴硬件預(yù)取Non-blocking Cache來隱藏延遲,這兩種技術(shù)作為輔助

理解這些,做緩存設(shè)計(jì)時就能在復(fù)雜度、功耗、性能間找到平衡。


參考


  1. PassLab, University of Wisconsin. Lecture 12: Memory Hierarchy -- Cache Optimizations. Summary of advanced cache optimization techniques. ?

  2. Iowa State University. Reducing Miss Penalty Summary. Early Restart and Critical Word First. ?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容