映射表規模是容量的線性函數
FTL 的核心是邏輯頁到物理頁的映射表。以 4KB 為間接單元、每條表項 4 位元組計算,映射表大小約為盤容量的千分之一。J750 的 15.36TB 檔位對應的完整 L2P 表接近 15GB,而盤上 DRAM 通常也按容量的千分之一配置,看似剛好夠用,但這塊 DRAM 還要承擔寫快取、日誌、壞塊表、讀電壓校準表等結構,真正能留給映射的空間總是不足。容量繼續向上走時這條約束更緊,全產品線規劃的單盤最大容量已到 122.88TB,全表常駐在任何合理的 DRAM 配置下都不成立。
分級快取的邊界怎麼劃
可行的做法是把映射表按固定大小切成映射頁,完整表常駐 NAND,DRAM 只快取活躍的映射頁,控制器內的 SRAM 再快取最熱的一小部分表項與目錄結構。三級之間的差別不只是容量,更是訪問代價:SRAM 命中在數十納秒量級,DRAM 命中在數百納秒量級,而從 NAND 取一頁映射意味著一次完整的介質讀,代價與一次使用者資料讀相當。
未命中直接落在尾延遲上
映射未命中的後果是把一次讀變成兩次介質訪問。J750 與 J770 規劃的 QD1 讀延遲目標是 65µs,未命中路徑幾乎等於翻倍,而這類事件在平均值裡幾乎看不出來,只會在 p99.9 與 p99.99 上抬頭。更麻煩的是它與工作集大小強相關:隨機讀的地址範圍一旦超出 DRAM 所能快取的映射覆蓋範圍,命中率會在很窄的區間內快速塌陷,表現為負載稍微放大就出現延遲臺階。因此評估映射快取不能只看一個平均命中率,要掃描工作集大小畫出命中率與尾延遲的曲線,確認塌陷點落在哪個容量位置。
間接單元粒度的取捨
把間接單元從 4KB 放大到 8KB 或 16KB,可以成比例地壓縮表規模,代價是任何小於間接單元的寫入都要先讀出整個單元、合併後重寫,直接抬高寫放大與寫延遲。這條取捨在產品線內部呈現為清晰的分工:Q7 與 Q9 系列物件導向儲存、備份歸檔與 AI 檢查點這類以大塊順序寫為主的場景,容量優先,粗粒度帶來的代價可以接受;X7 與 X9 系列面向後設資料、日誌、快取層與 KV Cache,負載本身以小塊隨機為主,粒度必須保持細,命中率的優先順序高於表佔用。
除了調粒度還能做什麼
工程上還有幾條常用手段:對順序流採用範圍映射,用一條表項覆蓋連續的大段地址,順序負載下表佔用可以下降一個量級;對映射頁做預取,利用訪問的空間局部性提前載入相鄰映射頁;把映射更新的落盤做成日誌加檢查點,避免每次更新都重寫整頁。這些機制的收益高度依賴負載形態,需要用真實訪問軌跡回放來標定,而不是靠合成隨機負載給出結論。上述數值均為設計目標值。
