본문으로 건너뛰기Skip to content 1:1 문의 — [email protected]로 이메일 작성 Contact us — email [email protected]

TLB 預取:未命中減少了,記憶體卻可能更忙

預先讀取位址轉換的設計,其損益取決於準確度、到達時點與追加流量。本文以自行計算的範例,整理 MMU 與平台團隊的判斷標準。

TLB 預取:未命中減少了,記憶體卻可能更忙
Historical Baikal-T1 CPU die, published by ZeptoBars on 2017-02-28. MIPS P5600 reference hardware, not a Trail implementation or test platform. Photo © ZeptoBars, CC BY 3.0; unmodified. Original photo · License
🆓 免費文章 · 任何人都可以免費閱讀

TLB 預取會預先準備接下來需要的位址轉換,以減少等待。但未命中減少了,並不代表記憶體的工作就減少了。因為未被使用的預測、太早到達而被逐出的轉換、更新預測歷史的寫入,都在消耗資源。設計的目標不是把未命中率降到最低,而是減少實際阻擋執行位址轉換等待的量,要比整體成本減少得更多。

VLSI Korea view: 提前開始轉換這件事,與消除轉換成本這件事並不相同。預取器除了準確度,還必須設計到達時點、記憶體流量,以及過時轉換的丟棄。
A translation lookup can hit in the TLB or walk page tables through caches before accessing DRAM.
Translation precedes a physical access; a page-table walk can hit in caches. Conceptual diagram by VLSI Korea.

一次未命中不等於一次 DRAM 往返

位址轉換快取 TLB 快速供應虛擬頁面與實體頁面的對應。在這裡找不到時,位址轉換程序會沿著分頁表取得所需的項目。這個過程中的讀取也可以利用快取階層。因此,最後一級 TLB 未命中數、分頁表遍歷數與實際 DRAM 讀取數,是彼此不同的計數。把三者當作同一個來處理,很容易誤會預取是消除了工作,而不是把工作搬了位置。 Agile TLB Prefetching 的背景與設計展示了選擇性利用已取回快取行中相鄰 PTE 的方法。

以實際晶片案例來看代表照片的 Baikal-T1。ZeptoBars 於 2017-02-28 公開的拆解照片展示了這顆使用 MIPS P5600 核心的晶片的晶粒。Linux v6.17 的 CPU 偵測程式碼中,有為 P5600 啟用 FTLB 的設定路徑。這顯示位址轉換結構是矽晶與系統軟體之間的具體接點。單憑照片無法得知 TLB 容量或有無預取器,也不代表下方研究技法實作在這顆歷史晶片上。

Event What it establishes What it does not establish
Last-level TLB miss Cached translation was unavailable DRAM was accessed
Page-walk cache hit Part of the traversal was reused The final translation was cached
Prefetch used Demand consumed a prediction It arrived early enough to remove all waiting

MMU 設計者首先必須區分哪種等待較長。是轉換太慢讓核心停住,還是轉換已結束、只是在等資料回應,同樣的未命中減少價值也不同。在多個請求重疊處理的系統中,個別遍歷延遲的總和也不等於整體執行時間。若消除的遍歷大多藏在其他工作之後,未命中計數變好,程式也可能幾乎沒有變快。

平台工程師的第一個決定也從這裡分岔。在決定改配置政策、改快取大小,還是加預取器之前,應先把同一個工作的位址轉換等待與資料等待分開。若在開啟預取的執行中,連工作量或頁面配置都改變了,改善的原因就會混在一起。把「相同工作、相同配置」的實驗與「實際配置變化」的實驗當作不同的問題來處理,更容易判斷。

Mechanism State to retain Cost to inspect
Spatial prediction Nearby-page relationship Unused neighboring translations
Per-instruction history Previous region per instruction Aliasing and phase changes
Page-associated history Successor hints near translation state Metadata writes and compatibility

預測歷史放哪裡,會改變設計

近期的出發點是 Trail 預印本。提交時間為 2026-10-06 15:00:44 UTC,本次調查在隔天的公開清單中確認。研究團隊學習同一指令接續的區域間移動,並在前一區域的分頁表項目中儲存指向下一區域的差值(delta)。再次讀到該項目時,也一併得到預測線索。可用位元以硬體與軟體的共識為前提,若不足,則提出使用外部 delta 表的變體。已確認正文的設計說明,此處不把模擬數字轉移到產品效能上。

為什麼每指令歷史可能有幫助?做一個說明用的順序:指令 A 讀區域 10,B 讀 40,再 A 讀 14。只看整體順序,移動是 +30 與 −26。只看 A 的歷史,是 +4。這表示預測值不是記憶體的物理移動距離,而是依如何把事物綁成同一個流程而改變的學習表示。

An illustrative interleaved trace compares global and per-instruction region transitions.
Illustrative region IDs, not memory addresses or measurements. Separating instruction histories changes the learned transition. VLSI Korea.

在這個範例中,並不保證 +4 下一次也正確。當 A 開始處理其他資料結構,即使是同一指令,模式也會改變。把區域綁得大,需要記住的種類可能減少,但該區域的轉換實際被用多少,必須另外計算。反之,使用小區域可以減少不必要的預先讀取,卻可能需要更多歷史。這個選擇是位址空間的壓縮與有用預測的保存之間的交換。

改變歷史儲存位置的想法,也可以從同一觀點評估。只看把專用表做小的效果很有吸引力,但還必須追蹤學到的內容在哪裡讀、何時修改。搭既有讀取便車的詮釋資料存取,與為執行新預測而引發的存取,是不同的成本。詮釋資料就在附近,不代表目的地轉換也能免費取得。在設計審查中,最好把儲存位元組、更新頻率與預測發行率列為不同項目。

Cost path Question
Hint read Already fetched?
History update Dirty line written back?
Predicted walk Extra hierarchy requests?

用同一個工作,重寫記憶體帳本

以下是 VLSI Korea 的說明用計算,不是論文重現。假設在關閉預取器的同一個工作中,100 件需求轉換全部引發遍歷,每次遍歷經過快取後平均產生 2 次 DRAM 讀取。基準成本是 200 次。若預取器及時供應 U 件有用的轉換,剩下的需求讀取為 (100−U)×2。再加上預取本身引發的 DRAM 讀取與詮釋資料的寫回。

選擇性設定假設 20 件預測中及時供應 16 件。把每件預測的平均 DRAM 讀取設為 0.5 次,預測讀取為 10 次。加上詮釋資料寫回 10 次,總計 188 次。激進設定預測 60 件、及時供應 36 件,但若每件預測的 DRAM 讀取為 2 次,總計增加到 258 次。兩種設定都減少了需求未命中,但整體記憶體交易的方向相反。

The toy transaction model yields 200 baseline, 188 selective and 258 aggressive DRAM reads plus metadata writebacks.
Illustrative accounting over the same 100 demand translations. Stacked costs include residual demand walks, prefetch reads and metadata writebacks. VLSI Korea.

這裡的交易數是把讀取與寫回各算一件的簡單帳本。即使交易大小相同,依讀寫切換、佇列、bank 平行度與優先順序,時間也會不同,所以不能把這個總計直接換成延遲或功耗。計算固定既有資料流量,只比較與轉換相關的追加部分,也排除了預取把資料快取有用行擠出去的效果。在實際系統中必須再把那個效果納入。

📩 在持續關注這個主題嗎?

財報·報告·HBM供需的後續分析,每天10:30(KST)寄到您的信箱。 免費訂閱 →

特別重要的是,「有用」在何時判定。即使預測後來被用了一次,若它比需求請求更晚完成,就沒有消除已經發生的全部等待。太早到達的預測,可能在使用前被逐出。因此必須區分準確度、及時擋下需求未命中的比例、遲到的預測與使用前被逐出。若請求間隔與佇列壅塞程度不同,即使準確度相同,體感效能也可能不同。

VLSI Korea view: 這個計算的反證條件很明確。若增加的讀取、寫入與競爭的成本大於減少的需求等待,就沒有理由採用擋下更多未命中的設定。
Toy case Issued prefetches Timely useful prefetches Residual demand reads Prefetch reads Metadata writebacks Total
Baseline 0 0 200 0 0 200
Selective 20 16 168 10 10 188
Aggressive 60 36 128 120 10 258

大頁面改變的是與預測不同的成本

大頁面擴大一個轉換項目涵蓋的位址範圍。預取則提前取得所需轉換的時點。即使把兩種方法綁成同一個「TLB 改善」,實際改變的東西也不同。Linux 6.17 的 Transparent Hugepage 文件說明了大頁面的 TLB 好處,以及在只用一部分的區域可能產生記憶體浪費、配置與壓縮過程可能造成延遲。文件中的頁面大小是可能依架構而不同的範例。

為了只把容量效果拆出來看,把虛擬 TLB 固定為 64 個項目。若每個項目代表不同的 4 KiB 頁面,理想涵蓋範圍是 256 KiB。若為 2 MiB 頁面,則是 128 MiB,比例為 512 倍。這是計算可存取虛擬位址範圍,不是預測處理量會以該比例增加。此簡單計算也排除了重複、衝突、置換政策與多種頁面大小的混雜。

With 64 assumed entries, 4 KiB pages cover 256 KiB and 2 MiB pages cover 128 MiB.
Ideal translation reach with the same hypothetical entry count. This is address coverage, not measured bandwidth or a processor specification. VLSI Korea.

因此比較基準應寫目前部署實際得到的頁面大小。在大頁面增加的環境中,剩餘轉換未命中的性質本身也可能改變。若只剩下在全部請求中佔比很小、卻非常不規則的位址,就難以原樣套用過去的預測準確度。反之,若有許多難以取得大頁面的短生命週期配置,可能得到不同結果。必須一併看依大小的請求分佈與配置生命週期。

實務上要改的決定不是「永遠開啟大頁面」。是決定把延遲敏感請求的配置成本也納入後,要套用到哪個記憶體區域。預取器的評估也應在同一頁面政策下開始。之後再另外量測與大頁面一起使用時的追加收益,就能避免把已由兩個功能降低的同一個瓶頸的效益重複計算。

Choice Potential benefit Counter-cost to include
Larger pages More bytes covered per translation Allocation, compaction, unused space
More TLB entries More simultaneously retained translations Lookup structure and replacement behavior
Prefetch Translation work starts earlier Extra walks, contention, early eviction

比 PTE 的空位元更先看位址的生命週期

即使 PTE 中有看似沒用的位元,也不代表實作者可以任意使用。RISC-V Supervisor ISA 1.13 文件區分軟體用的 RSW 與保留給未來標準的位元。有些情況若設定了指定的保留位元會產生 page fault,SFENCE.VMA 的同步範圍也只限定於本地 hart。因此,「看起來現在沒在用」這個觀察,不能取代可移植的詮釋資料儲存契約。

更本質的問題是預測如何承受位址的再使用。想像一個預先遍歷:當虛擬位址 V 指向實體頁面 P 時已開始。作業系統把 V 改成 Q、使既有轉換失效後,若舊的遍歷結果到達,會怎樣?不能把那個結果重新安裝成有效的轉換。Linux 的快取與 TLB 失效文件所定義的更新後可見性,是即使加上預取器也必須保存的基準。

A prefetched old mapping can arrive after invalidation unless the implementation rejects or cancels stale work.
Conceptual remap race. Generation validation is one possible design, not an ISA-prescribed implementation. VLSI Korea.

可以解釋的設計選擇,是取消進行中的工作,或在結果到達時確認位址空間與失效世代是否仍然有效。這不是主張特定指令集要求世代計數器,而是區分舊回應的實作選擇範例。是否只清空佇列就夠了,必須追蹤已送出佇列外的記憶體請求與返回路徑才知道。

預測線索與存取權限也必須分離。設計上應讓錯誤的線索原則上只造成效能損失,不能讓它代替實際轉換的位址與權限確認。處理程序切換、位址空間識別碼再使用、頁面大小變更,是這個分離容易被動搖的情境。在功能驗證中,不要只看發出請求的瞬間,還要改變失效與回應到達的順序,製造同一個位址具有不同意義的場景。

State Who owns its meaning? Required separation
Architectural PTE fields ISA and operating system Address, permission and status
Prediction hint Agreed hardware/software extension Advisory value, never access authority
Cached translation Translation subsystem Address-space and invalidation scope

韓國的設計與平台團隊應分擔的決定

對韓國的 CPU、SoC 與加速器開發團隊而言,這個問題要求一併看核心內部最佳化與記憶體系統的邊界。MMU 負責人與其只提出小型預測表的面積,不如說明包含發行佇列、去重複與失效路徑的設計成本。平台負責人必須提供實際程式的配置生命週期與頁面配置。不能只憑一方的理想位址流程,保證另一方的產品效益。

對評估記憶體系統的團隊而言,也有另一層意義。即使裝上更快的記憶體後效能變好,也必須區分應用程式資料與位址轉換流量。若與轉換相關的讀取正在擴大競爭,優先抑制預取器可能更好。反之,若頻寬有餘裕且轉換等待暴露出來,就有允許追加交易的依據。是哪一種情況,必須一併看同一個工作的完成時間與流量才能判定。

Evaluate translation stall reduction and total traffic jointly; neither metric alone selects a winning design.
A qualitative decision map for design reviews. No workload measurements or performance thresholds are implied. VLSI Korea.
Reader job Immediate decision Evidence that can reverse it
MMU architect Budget queue, state and issue rate Timely coverage falls under contention
Platform engineer Tune page policy or prefetch first Allocation tail cost exceeds saved stalls
Memory-system engineer Attribute bandwidth pressure Page-walk traffic, not application bytes, rises

未來 6–12 個月的觀察點不是最高未命中減少率單一數字。看公開實作是否給出包含位址空間切換與映射變更的結果,在相同的頁面政策與記憶體限制下效益是否留存,以及資料與預測流量是否分開報告。檢視研究原型的團隊,最好先從自身資料結構、生命週期與競爭條件會讓結果翻轉的邊界找起。

TLB 預取看起來像預測未來的小裝置,實際上是重新配置記憶體工作在何時、何地執行的設計。好的預測及時供應有用的轉換,在過程中不妨礙更重要的請求,並在位址改變後丟棄過去的答案。應改變採用判斷的數字,不是減少的未命中數單一項,而是同一個工作的等待時間、整體交易與正確轉換的生命週期。

Sources

Disclosure

本文的交易數、虛擬 TLB 容量計算與圖表是 VLSI Korea 的說明用構成。不是實際晶片量測或論文重現結果。Trail 是在閱讀公開預印本設計的範圍內處理,未確認商業採用。代表照片是過去 Baikal-T1 的實際晶粒照片,未修改原圖,也不標示為該研究的實驗裝置。AI 用於文稿與翻譯、說明圖表的準備。

📩 今天錯過的分析,明天早上寄到您的信箱

每天10:30(KST)Daily Silicon與財報·機構報告核心解讀搶先送達。訂閱後可選擇韓語/英語/日語新聞通訊,中文深度分析每日在網站更新。

免費訂閱 →

免費 · 無垃圾郵件 · 隨時退訂

Discussion

VLSI KOREA BRIEFING

반도체를 읽는 안목, 메일함으로.

엔지니어의 시각과 산업의 흐름을 함께. 무료로 구독하세요.

이미 구독 중인가요? 로그인