NAND介質工程

Program Failure 的分類處置:重試邊界、資料來源與壞塊增長率

作者:軍航科工半導體Program Failure / NAND編程失敗 / 壞塊管理

NAND 報出編程失敗時韌體只知道“沒寫成功”。區分電壓不足、編程干擾與單元老化三類原因,決定了是換頁重寫還是直接退役整個 Block。

失敗狀態位背後不止一種原因

NAND 返回編程失敗時,韌體拿到的只是“沒寫成功”這一個事實。原因可能是編程脈衝不足以把閾值電壓推進目標窗口,可能是相鄰字線的編程干擾把已完成的分佈擠出邊界,也可能是單元經過大量擦寫後隧穿氧化層退化到寫不進去。三者的處置代價差別很大:前兩類通常換一個物理位置重寫就能通過,第三類換到同一 Block 的其它頁大機率還是失敗。一刀切判壞塊會吃掉預留空間,一刀切重試則把資料留在已經不可信的區域裡。

重試的兩個邊界

重試被限制在次數與位置兩個維度上。同一目標位置的重試次數設得很低——重複施加編程脈衝本身會加劇對鄰近單元的干擾;超過閾值立即改為換頁重寫,換頁仍失敗則把整個 Block 從可用池摘出,由預留的備用 Block 頂替,上層不感知。判定時會一併讀取該 Block 的擦寫計數與近期錯誤歷史:擦寫次數還很低的 Block 突然連續失敗,更像溫度或供電瞬態一類的外部因素,值得記錄而不是直接丟棄;已接近壽命末期的 Block 則應儘早退役。

失敗時源資料還在不在

編程失敗可恢復的前提,是源資料尚未釋放。寫緩衝在編程校驗通過之前不釋放對應條目,這條規則與掉電保護屬於同一套邏輯:PLP 保證異常掉電時緩衝內容能落盤,緩衝保留策略保證編程失敗時還有源可搬。補寫過程本身也在端到端保護覆蓋之下,T10 DIF/DIX 的保護資訊隨資料一同遷移,避免修復動作反而引入新的靜默錯誤。

增長率而不是單次事件

單次編程失敗說明不了什麼,趨勢才說明問題。韌體按時間窗口統計新增壞塊數並寫入 SMART 與 Telemetry,運維側可以在盤仍能正常服務時把它排進更換計劃,而不是等預留空間耗盡後被動響應。J750/J770 目前處於產品定義/EVT 階段,這部分處理邏輯與各級閾值正在工程平臺上按不同溫度區間與擦寫深度逐點標定。

關鍵詞
Program FailureNAND編程失敗壞塊管理備用Block寫緩衝SMART軍航科工