SSD韌體技術

讀延遲 65 µs 的逐段拆解:從 SQ 取指到 CQ 回寫

作者:軍航科工半導體讀延遲拆解 / QD1 / L2P映射命中

CORE 7 規格定義 4KB 隨機讀 QD1 平均 65 µs。拆開這段時間可以看到 NAND tR 佔絕對大頭,鏈路幾乎不構成約束,而尾延遲的形狀主要由 L2P 命中率與後臺任務爭用決定。

一次 4KB 讀請求的時間去向

CORE 7 系列 J750/J770 的 4KB 隨機讀延遲定義為 QD1 平均 65 µs。把這 65 µs 拆開,NAND 陣列本身的 tR(把頁讀出到頁暫存器)佔絕對大頭,通常是數十微秒量級;剩下的部分分散在門鈴寫入與 SQ 取指、命令解析與 LBA 到實體地址的轉換、通道命令下發與資料搬運、LDPC 解碼,以及 DMA 回寫主機記憶體並投遞 CQ 與中斷。在 PCIe 4.0 x4 鏈路上,一筆 4KB 傳輸的線上時間不足 1 µs,低佇列深度下鏈路頻寬幾乎不構成約束——這也解釋了為什麼 QD1 延遲和 1,500 KIOPS 的峰值隨機讀要用兩套完全不同的手段去最佳化。

映射命中率決定尾部形狀

平均值好看不代表分佈好看。讀路徑上唯一可能憑空多出一次 NAND 訪問的環節是 L2P 未命中:條目不在盤內 DRAM 中時,控制器必須先取一次映射頁,再取一次資料頁,這筆請求的延遲直接翻倍。按容量比例配置映射表駐留空間、讓熱區常駐,本質上就是把這個尾部事件的機率壓到接近零。J750 的 15.36TB 檔位是這條約束最緊的點,因此在當前的產品定義/EVT 階段被列為重點取樣 P99.9 的容量檔。

被後臺任務偷走的時間

讀請求本身不改寫介質,但它排在共享資源的佇列裡。同一個 Die 上若正在執行擦除(毫秒量級)或編程(數百微秒量級),讀命令要麼等待,要麼依賴控制器的編程/擦除掛起能力搶佔。垃圾回收強度、後臺資料刷新、讀電壓重試都以同樣方式擠佔通道時間。所以讀延遲不是讀路徑的獨立屬性,而是整機排程策略的結果——只有在穩態、盤接近寫滿、且疊加寫流量的條件下測出來的數才有參考價值。

口徑先固定,數字才有意義

在 JH-E4U-C 工程平臺上對讀路徑的取樣固定幾個前提:先跑到 SNIA 定義的穩態,再按 QD1、QD32、QD128 分別取平均值與 P99、P99.9,同時記錄溫度與後臺任務佔空比。65 µs 是規格定義的目標值,每一版韌體都要拿同一套口徑迴歸比對,觀察分佈是否發生位移。口徑一旦鬆動,前後兩次的數字就不再可比,而這比數字本身低幾微秒要嚴重得多。

關鍵詞
讀延遲拆解QD1L2P映射命中P99.9尾延遲NAND tR測試口徑CORE 7