靜默錯誤出在搬運環節
一筆寫入從主機DMA出發,經PCIe進入主控SRAM,可能落到DRAM寫緩衝,再經LDPC編碼寫進NAND。每一段介質內部各有防護——SRAM有ECC、DRAM有ECC、NAND有LDPC——但段與段之間的搬運、地址計算與時鐘域跨越並不在這些防護的覆蓋範圍內。真正難查的正是這類錯誤:資料本身沒壞,只是去錯了地方。
八個位元組裡的分工
T10保護資訊在每個資料塊後追加8位元組,三個欄位各司其職:Guard Tag是覆蓋資料內容的CRC16,負責抓位元翻轉;Application Tag留給上層用途;Reference Tag與LBA繫結,負責抓錯位寫入。第三項是端到端保護中最有價值的部分,因為寫到錯誤LBA的資料在任何純內容校驗下都是“正確”的,只有把地址納入校驗才能識別。
每跨一次邊界就重算一次
可行的佈置是:主機DMA落入SRAM後立即校驗;進出DRAM寫緩衝各一次;LDPC編碼前一次;NAND讀回解碼後再一次。原則是每跨越一次介質或時鐘域邊界就重新驗證,讓每一段都能獨立定責。這樣做的額外好處是錯誤可以在寫入NAND之前被攔下——一旦落盤,可選項就只剩下上報和隔離。
與主機側的介面
DIF/DIX允許主機生成保護資訊並隨命令下發,盤內校驗後透傳儲存,讀回時再交還主機比對,形成貫穿應用到介質的完整鏈路。這要求命名空間使用帶後設資料的LBA格式,例如4K資料加64位元組後設資料。Type 1/2/3的差別集中在Reference Tag的檢查規則上,與主機棧的配置必須一致,否則會出現大量誤報。
它覆蓋不到的那一塊
保護資訊保護的是使用者資料,不是映射表本身。若韌體把某個LBA錯誤地映射到另一段實體地址,讀回時Reference Tag能報出不匹配,卻無法恢復正確資料。因此映射表需要另一套機制——原子提交、獨立校驗和、上電一致性檢查。多層防護疊加之後,J750/J770的UBER目標定在不高於每讀取10^18位一個扇區,T10 DIF/DIX與端到端保護也列入軍航科工的企業級功能基線。
