TW201432702A - 經由冗餘陣列之非揮發性記憶體程式錯誤修復 - Google Patents
經由冗餘陣列之非揮發性記憶體程式錯誤修復 Download PDFInfo
- Publication number
- TW201432702A TW201432702A TW102145669A TW102145669A TW201432702A TW 201432702 A TW201432702 A TW 201432702A TW 102145669 A TW102145669 A TW 102145669A TW 102145669 A TW102145669 A TW 102145669A TW 201432702 A TW201432702 A TW 201432702A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- portions
- redundant information
- flash
- volatile memory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
- Hardware Redundancy (AREA)
Abstract
經由冗餘陣列之非揮發性記憶體程式錯誤修復在一些儲存子系統實施方案(例如一固態磁碟)中實現更高程式化頻寬及/或減少延時。在一非揮發性記憶體控制器處接收待將複數個非揮發性記憶體之N個部分程式化之資料。該資料包含待將該N個部分之一特定者程式化之特定資料。該特定資料儲存於與該非揮發性記憶體控制器相關聯之一分配緩衝區中。開始將該特定資料程式化至該等非揮發性記憶體之一特定者。更新足以修復該N個部分之M者之錯誤之冗餘資訊。釋放該分配緩衝區。該儲存、該開始程式化、該更新及該釋放之至少一者係回應於該特定資料之該接收。該釋放發生在該特定非揮發性記憶體完成該程式化之前。
Description
本申請案主張隨附申請案資料表、請求或傳送文件(適時,若存在)之優先權權利。在由本申請案之類型允許之範圍內,本申請案出於全部目的以引用方式併入在創作本發明時與本申請案共同擁有之全部下列申請案:2010年12月01日申請、名為Jeremy Isaac Nathaniel WERNER之發明人及名稱為「DYNAMIC HIGHER-LEVEL REDUNDANCY MODE MANAGEMENT WITH INDEPENDENT SILICON ELEMENTS」之美國臨時申請案(檔案號SF-10-10及專利申請號61/418,846);2011年01月18日申請、名為Jeremy Isaac Nathaniel WERNER之發明人及名稱為「HIGHER-LEVEL REDUNDANCY INFORMATION COMPUTATION」之美國臨時申請案(檔案號SF-10-14及專利申請號61/433,918);2011年11月30日申請、名為Jeremy Isaac Nathaniel WERNER之發明人及名稱為「DYNAMIC HIGHER-LEVEL REDUNDANCY MODE MANAGEMENT WITH INDEPENDENT SILICON ELEMENTS」之PCT申請案(檔案號SF-10-10PCT及專利申請號PCT/US11/062726);及2012年01月18日申請、名為Jeremy Isaac Nathaniel WERNER之發明人及名稱為「HIGHER-LEVEL REDUNDANCY INFORMATION COMPUTATION」之PCT申請案(檔案號SF-10-14PCT及專利申請號
PCT/US12/21682)。
領域:需要改進非揮發性儲存技術及製造以改良成本、利潤率、效能、效率及使用效用。
相關技術:若未明確識別為公開或熟知,則本文所提及之技術及概念(其包含出於背景、定義或比較目的)不應被解譯為承認此等技術及概念為先前公開已知或否則為先前技術之部分。本文所引用之全部參考(若存在)(其包含專利、專利申請案及公開案)之全部內容出於全部目的以引用方式併入本文中,無論是否特別併入。
本發明可以諸多方式實施為(例如)一程序、一製品、一器具、一系統、一物質組合物及一電腦可讀媒體,諸如一電腦可讀儲存媒體(例如一光學及/或磁性大容量儲存裝置(諸如一磁碟)中之媒體、具有非揮發性儲存器(諸如快閃儲存器)之一積體電路)或一電腦網路(其中通過光學或電子通信鏈路而發送程式指令)。【實施方式】提供實現上文所識別之領域中之成本、利潤率、效能、效率及使用效用之改良的本發明之一或多項實施例之一說明。【實施方式】包含一[序論]以促進【實施方式】之剩餘部分之理解。[序論]包含根據本文所描述之概念之系統、方法、製品及電腦可讀媒體之一或多者之[實例性實施例]。如[結論]中更詳細所討論,本發明涵蓋所發佈之技術方案之範疇內之全部可能修改及變動。
100‧‧‧固態磁碟(SSD)控制器
101‧‧‧固態磁碟(SSD)
102‧‧‧主機
103‧‧‧(選用)交換器/網狀架構/中間控制器
104‧‧‧中間介面
105‧‧‧作業系統(OS)
106‧‧‧韌體(FW)
107‧‧‧驅動程式
107D‧‧‧虛線箭頭(主機軟體與輸入/輸出(I/O)裝置之通信)
109‧‧‧應用程式
109D‧‧‧虛線箭頭(經由驅動程式之應用程式與輸入/輸出(I/O)裝置之通信)
109V‧‧‧虛線箭頭(經由虛擬函式(VF)之應用程式與輸入/輸出(I/O)裝置之通信)
110‧‧‧外部介面
111‧‧‧主機介面
112C‧‧‧(選用)卡記憶體
113‧‧‧標籤追蹤
114‧‧‧多裝置管理軟體
115‧‧‧主機軟體
116‧‧‧輸入/輸出(I/O)卡
117‧‧‧輸入/輸出(I/O)及儲存裝置/資源
118‧‧‧伺服器
119‧‧‧區域網路(LAN)/廣域網路(WAN)
121‧‧‧資料處理
123‧‧‧引擎
131‧‧‧緩衝區
133‧‧‧直接記憶體存取(DMA)
135‧‧‧錯誤校正碼(ECC)-X
137‧‧‧記憶體
138‧‧‧分配緩衝區
141‧‧‧映射
143‧‧‧表
151‧‧‧回收器
161‧‧‧錯誤校正碼(ECC)
171‧‧‧中央處理單元(CPU)
172‧‧‧中央處理單元(CPU)核心
173‧‧‧命令管理
175‧‧‧緩衝管理
177‧‧‧變換管理
179‧‧‧連貫性管理
180‧‧‧記憶體介面
181‧‧‧裝置管理
182‧‧‧識別碼管理
190‧‧‧裝置介面
191‧‧‧裝置介面邏輯
192‧‧‧快閃裝置
193‧‧‧排程
194‧‧‧快閃晶粒
199‧‧‧非揮發性記憶體(NVM)
211‧‧‧邏輯區塊位址(LBA)
213‧‧‧邏輯頁碼(LPN)
215‧‧‧邏輯位移
221‧‧‧邏輯頁碼(LPN)之映射資訊
223‧‧‧讀取單元位址
225‧‧‧讀取單元之長度
311‧‧‧讀取資料
313‧‧‧第一讀取單元
315‧‧‧最後讀取單元
401A‧‧‧讀取單元
401B‧‧‧讀取單元
410B‧‧‧標頭標記(HM)
411A‧‧‧標頭1
411B‧‧‧標頭1
412B‧‧‧標頭2
419A‧‧‧標頭N
419B‧‧‧標頭N
421A‧‧‧資料位元組
421B‧‧‧資料位元組
422B‧‧‧資料位元組
429B‧‧‧資料位元組
431A‧‧‧選用之填充位元組
431B‧‧‧選用之填充位元組
501‧‧‧標頭
511‧‧‧類型
513‧‧‧最後指示符
515‧‧‧旗標
517‧‧‧邏輯頁碼(LPN)
519‧‧‧長度
521‧‧‧位移
600‧‧‧分割方向
610.0‧‧‧快閃晶粒
610.1‧‧‧快閃晶粒
610.61‧‧‧快閃晶粒
610.62‧‧‧快閃晶粒
610.63‧‧‧快閃晶粒
610.64‧‧‧快閃晶粒
610.65‧‧‧快閃晶粒
610.0B0‧‧‧區塊
610.0B1‧‧‧區塊
610.0B2‧‧‧區塊
610.0BB‧‧‧區塊
610.1B0‧‧‧區塊
610.1B1‧‧‧區塊
610.1B2‧‧‧區塊
610.1BB‧‧‧區塊
610.63B0‧‧‧區塊
610.63B1‧‧‧區塊
610.63B2‧‧‧區塊
610.63BB‧‧‧區塊
610.64B0‧‧‧區塊
610.64B1‧‧‧區塊
610.64B2‧‧‧區塊
610.64BB‧‧‧區塊
610.65B0‧‧‧區塊
610.65B1‧‧‧區塊
610.65B2‧‧‧區塊
610.65BB‧‧‧區塊
610.0P0‧‧‧頁面
610.0P1‧‧‧頁面
610.0P2‧‧‧頁面
610.0PP‧‧‧頁面
610.63P0‧‧‧頁面
610.63P1‧‧‧頁面
610.63P2‧‧‧頁面
610.63PP‧‧‧頁面
610.64P0‧‧‧頁面
610.64P1‧‧‧頁面
610.64P2‧‧‧頁面
610.64PP‧‧‧頁面
610.65P0‧‧‧頁面
610.65P1‧‧‧頁面
610.65P2‧‧‧頁面
610.65PP‧‧‧頁面
610.0R0‧‧‧讀取單元(RU)
610.0R1‧‧‧讀取單元(RU)
610.0RR‧‧‧讀取單元(RU)
610.1R0‧‧‧讀取單元(RU)
610.1R1‧‧‧讀取單元(RU)
610.1RR‧‧‧讀取單元(RU)
610.65R0‧‧‧讀取單元(RU)
610.65R1‧‧‧讀取單元(RU)
610.65RR‧‧‧讀取單元(RU)
660.0‧‧‧R區塊
660.1‧‧‧R區塊
660.2‧‧‧R區塊
660.R‧‧‧R區塊
720‧‧‧快閃裝置
730‧‧‧介面通道
740‧‧‧額外快閃裝置
750‧‧‧額外介面通道
801‧‧‧開始
802‧‧‧在第一較高層級冗餘模式中操作
803‧‧‧是否偵測到錯誤?
804‧‧‧減少自由空間
805‧‧‧重新配置資料儲存
806‧‧‧修復/儲存錯誤使用者資料
807‧‧‧判定/儲存經修正之較高層級冗餘資訊
808‧‧‧在第二較高層級冗餘模式中操作
809‧‧‧動態轉變操作模式
899‧‧‧結束
911‧‧‧讀取單元
911.E‧‧‧較低層級錯誤校正碼(ECC)
911.U‧‧‧使用者資料
931‧‧‧讀取單元
931.E‧‧‧較低層級錯誤校正碼(ECC)
931.U‧‧‧使用者資料
951‧‧‧讀取單元
951.E‧‧‧較低層級錯誤校正碼(ECC)
951.U‧‧‧使用者資料
971‧‧‧讀取單元
971.E‧‧‧較低層級錯誤校正碼(ECC)
971.U‧‧‧使用者資料
1001‧‧‧結果
1002‧‧‧結果
1003‧‧‧結果
1010‧‧‧R0
1011‧‧‧R1
1019‧‧‧資料
1401A‧‧‧開始
1401B‧‧‧開始
1402A‧‧‧發佈讀取操作
1402B‧‧‧頁面是否準備就緒?
1403A‧‧‧是否已發佈全部命令?
1403B‧‧‧執行基於頁面之計算
1404B‧‧‧頁面處理是否完成?
1499A‧‧‧結束
1499B‧‧‧結束
1501A‧‧‧開始
1501B‧‧‧開始
1502A‧‧‧發佈寫入操作
1502B‧‧‧寫入是否完成?
1503A‧‧‧全部命令是否已發佈?
1503B‧‧‧自冗餘撤銷寫入
1504B‧‧‧寫入是否完成?
1599A‧‧‧結束
1599B‧‧‧結束
1610‧‧‧控制器
1611‧‧‧接收資料
1612‧‧‧將資料儲存至緩衝區中
1613‧‧‧(開始)將資料程式化至非揮發性記憶體(NVM)
1614‧‧‧更新冗餘資訊
1615‧‧‧釋放緩衝區
1616‧‧‧延遲
1617‧‧‧(開始)將冗餘資訊程式化至非揮發性記憶體(NVM)
1618‧‧‧(重新開始)將資料程式化至非揮發性記憶體(NVM)
1619‧‧‧更新新的冗餘資訊
1620‧‧‧非揮發性記憶體(NVM)
1621‧‧‧開始:將資訊程式化
1622‧‧‧偵測到錯誤
1623‧‧‧完成:將資料程式化
1624‧‧‧開始:將冗餘資訊程式化
1625‧‧‧重新開始:將資料程式化
1626‧‧‧完成:將資料程式化
圖1A繪示包含經由一或多個冗餘陣列(視情況而定,內部冗餘陣列)而提供非揮發性記憶體(NVM)之程式錯誤修復之一固態磁碟(SSD)控制器之一SSD之一實施例之選定細節。
圖1B繪示包含圖1A之SSD之一或多個例項之系統之各種實施例
之選定細節。
圖2繪示映射一邏輯區塊位址(LBA)之一邏輯頁碼(LPN)部分之一實施例之選定細節。
圖3繪示在一讀取單元位址處存取一非揮發性記憶體(NVM)以產生組織為各種讀取單元之讀取資料(共同具有以讀取單元之量子量測之一長度)之一實施例之選定細節。
圖4A繪示一讀取單元之一實施例之選定細節。
圖4B繪示一讀取單元之另一實施例之選定細節。
圖5繪示具有某數目個欄位之一標頭之一實施例之選定細節。
圖6繪示邏輯分層及/或區段中所管理之多個NVM裝置(例如一或多個快閃晶粒及/或快閃晶片)之區塊、頁面及讀取單元之一實施例之選定細節。
圖7繪示較高層級冗餘技術之各種實施例之選定細節。
圖8繪示使用一獨立矽元素冗餘陣列(RASIE)之動態較高層級冗餘模式管理之一實施例之選定細節。
圖9繪示具有由儲存於讀取單元之一或多者中之較高層級冗餘資訊保護之自適應碼率之較低層級冗餘資訊之讀取單元之一實施例。
圖10繪示較高層級冗餘資訊結果及資料源對應項之一實施例之選定細節。
圖11繪示較高層級冗餘資訊計算之一實施例之選定細節。
圖12繪示修復一(較低層級)錯誤(在一單一操作期間)之一實施例之選定細節。
圖13A至圖13D繪示修復兩個(較低層級)錯誤(在一單一操作期間)之一實施例之選定細節。
圖14A及圖14B繪示相對於自NVM接收之頁面而計算較高層級冗餘資訊之一實施例之選定細節。
圖15A至圖15C繪示相對於提供至NVM之一寫入而撤銷較高層級冗餘資訊之一計算之一實施例之選定細節。
圖16繪示經由冗餘陣列之NVM錯誤修復之一實施例之選定細節。
下文中提供本發明之一或多項實施例之一詳細描述以及繪示本發明之選定細節之附圖。結合該等實施例而描述本發明。本文之該等實施例應被理解為僅具例示性,本發明決不受限於本文之該等實施例之任何者或全部,且本發明涵蓋諸多替代例、修改方案及等效物。為避免說明千篇一律,可將各種標示用語(諸如:第一、最後、某些、各種、進一步、其他、特定、選定、一些及顯著)應用於單獨實施例組;如本文所使用,此等標示決不意謂傳達品質或任何形式之偏好或偏見,而是僅意謂使該等單獨組便於區別。可在本發明之範疇內變更所揭示程序之一些操作之順序。儘管多項實施例用以描述程序、系統及/或程式指令特徵之變動,但可考量根據一預定準則或一動態判定準則而執行分別對應於複數個該多項實施例之複數個操作模式之一者之靜態及/或動態選擇之其他實施例。下列描述中闡釋諸多特定細節以提供本發明之一透徹理解。出於實例目的提供該等細節,且可在不具有該等細節之部分或全部之情況下根據申請專利範圍而實踐本發明。出於清楚之目的,未詳細描述本發明之相關技術領域中已知之技術材料,使得本發明不會徒然不清楚。
[序論]
包含此[序論]以僅促進【實施方式】之更快理解;本發明不受限於[序論]中所呈現之概念(其包含詳述實例,若存在),此係因為任何序論之段落必然為整個主題之一精簡觀點且並非意謂一詳盡或限制描述。例如,下列序論僅對某些實施例提供受限於空間及組織之概述資
訊。存在諸多其他實施例,其包含將在本說明書之全部剩餘部分中最終討論、繪製之主張實施例。
[縮寫詞]
此處所定義之各種速記縮寫(例如縮寫詞)之至少部分意指本文所使用之某些元件。
反及快閃記憶體使用一陣列之浮動閘極電晶體來儲存資訊。在SLC技術中,使各位元胞(例如浮動閘極電晶體)能夠儲存一個位元之資訊。在MLC技術中,使各位元胞能夠儲存多個位元之資訊。隨著製造技術(例如CMOS技術)按比例減小,各浮動閘極儲存更少電子。此外,隨著儲存容量及密度增大,各位元胞儲存更多位元。因此,由更小電壓範圍表示儲存於位元胞中之值。感測之不確定性及/或所儲存之電子量隨時間之變化增加資料被錯誤儲存或讀取之可能性。一或多項冗餘及/或ECC技術(例如處於一較低層級)之使用實現自反及快閃記
憶體正確地擷取否則受損之資料以在一些使用案例中克服前面所提及困難之部分。
一些類型之SSD使用快閃記憶體來提供非揮發性儲存(例如,快閃記憶體在未施加電力之情況下保存資訊)。一或多項ECC及/或冗餘技術(例如處於一較高層級)之使用實現自快閃記憶體正確地擷取否則受損之資料,及/或即使一或多個快閃記憶體元件間歇性或永久性發生錯誤,亦實現一SSD之適當系統級操作。
例如,一SSD控制器使使用獨立矽元素之動態較高層級冗餘模式管理能夠以在一或多個NVM(例如快閃)元件於由該控制器部分實施之一SSD之操作期間發生錯誤時提供從容退化。讀取該NVM之一部分。若發生無法使用較低層級冗餘及/或錯誤校正(諸如根據一或多項ECC技術)來校正之一錯誤,則較高層級冗餘及/或錯誤校正(諸如根據一或多項RASIE技術及/或動態較高層級冗餘模式管理技術)用於試圖校正該錯誤。若藉由較低階及/或較高層級冗餘及/或錯誤校正及/或藉由其他技術而偵測到該等NVM元件之一者之一錯誤(諸如由該等NVM元件之一或多者報告之一錯誤狀態),則使較高層級冗餘及/或錯誤校正自一當前模式中之操作動態轉變至一新模式中之操作。該轉變包含下列之一或多者:減少該SSD上之可用自由空間、重新配置該SSD之資料儲存、修復/儲存錯誤使用者資料(若可能)及判定/儲存經修正之較高層級冗餘及/或錯誤校正資訊。接著,操作在該新模式中繼續。若藉由此時在該新模式中操作之較高層級冗餘及/或錯誤校正而偵測到該等NVM元件之另一者之另一錯誤,則進行至另一較高層級冗餘及/或錯誤校正模式之另一轉變。寫入NVM係根據一較高層級冗餘及/或錯誤校正操作模式,其包含根據該較高層級冗餘及/或錯誤校正操作模式及寫入資料而判定/儲存較高層級冗餘及/或錯誤校正資訊。
若在記憶體之一區域內發生大於一臨限數目及/或速率之較低層
級錯誤校正及/或一或多個錯誤,則視情況使記憶體之該區域動態轉變至一新的較高層級冗餘及/或錯誤校正操作模式中之操作,其能夠修復比一當前較高層級冗餘及/或錯誤校正操作模式多之錯誤。例如,若該當前較高層級冗餘及/或錯誤校正操作模式不存在(例如,無較高層級冗餘資訊被計算及/或用於修復較低層級冗餘之一錯誤以校正一錯誤),則該新的較高層級冗餘及/或錯誤校正操作模式為能夠修復無法藉由該較低層級冗餘校正之一單一錯誤之模式。對於另一例項,若該當前較高層級冗餘及/或錯誤校正操作模式為能夠修復無法藉由該較低層級冗餘校正之一單一錯誤之模式,則該新的較高層級冗餘及/或錯誤校正操作模式為能夠修復無法藉由該較低層級冗餘校正之兩個錯誤之模式。
在一些實施例及/或使用案例中,判定/儲存較高層級冗餘及/或錯誤校正資訊係根據較高層級冗餘資訊之計算。較高層級冗餘資訊計算使一SSD控制器能夠提供較高層級冗餘能力以在非揮發性(例如快閃)記憶體元件在由該控制器部分實施之一SSD之操作期間發生錯誤時維持可靠操作。經由待由較高層級冗餘資訊保護之資料之一部分(例如一等量磁碟區(stripe))中之全部頁面之一「互斥或」而使用同位編碼來計算該較高層級冗餘資訊之一第一部分。使用一加權和技術來計算該較高層級冗餘資訊之一第二部分,該部分中之各頁面被指派一唯一非零「索引(index)」作為計算加權和時之一加權。在一有限域(諸如一伽羅瓦(Galois)域或諸如整數模p,其中p為一質數)內執行算術。
可依任何順序(諸如取決於對NVM元件執行之一或多個讀取操作之一完成順序之一順序,或諸如基於自NVM元件返還或取得之資料之順序之一順序)計算較高層級冗餘資訊之部分以能夠在各種實施例中減少或消除緩衝。在各種實施例中,任何順序可計算性能夠使用相對較少之暫時及/或中間緩衝及/或狀態來計算修復資料值及/或撤銷一
寫入。可藉由(諸如)取決於可用專用硬體元件之任何平行度而計算較高層級冗餘資訊之部分以能夠在各種實施例中減少延時處理及/或減少記憶體(例如NVM)頻寬使用。
在各種實施例及/或使用案例中,較高層級冗餘資訊能夠修復錯誤以寫入/程式化NVM元件,同時提供比一些其他技術高之程式化頻寬及/或比一些其他技術少之延時。當將較高層級冗餘資訊(例如根據一或多項RASIE技術)寫入至該等NVM元件時,該較高層級冗餘資訊(諸如)藉由計算且接著儲存於一晶片上記憶體中而被維持。該維持足以涵蓋與針對該等NVM元件之進行中之寫入/程式化操作相關聯之全部資料。例如,資料自將該資料發送至NVM元件以用於寫入/程式化之時間進行至直至該等NVM元件指示成功地寫入/程式化該資料。一旦資料已被發送至該等NVM元件以用於寫入/程式化且已被累積於經維持以修復寫入/程式化錯誤之較高層級冗餘資訊中,則釋放與該資料相關聯之緩衝。保持與該較高層級冗餘資訊相關聯之緩衝,直至寫入/程式化完成(或發生錯誤)。
若NVM元件之一者存在一寫入/程式化錯誤,則作為回應,較高層級冗餘資訊用於修復該錯誤。基於較高層級冗餘資訊及先前(成功)寫入/程式化資料之全部或任何部分而判定否則歸因於該錯誤而丟失之任何資料。視情況而定,將經維持以修復NVM元件之寫入/程式化錯誤之較高層級冗餘資訊之全部或任何部分寫入/程式化至NVM元件(例如以能夠在NVM元件之隨後讀取期間修復較低層級錯誤)。
[實例性實施例]
在結束【實施方式】之[序論]之後,下列內容為實例性實施例之一集合,其包含明確列舉為「EC(實例組合)」之至少一些實施例,根據本文所描述之概念而提供各種實施例類型之額外描述;此等實例並不意謂相互排斥、詳盡性或限制性;及本發明不受限於此等實例性實
施例,而是涵蓋所發佈之申請專利範圍及其等效物之範疇內之全部可能修改及變動。
EC1)一種方法,其包括:在一非揮發性記憶體控制器處接收待將複數個非揮發性記憶體之N個部分程式化之資料,該資料包括待將該N個部分之一特定者程式化之特定資料;將該特定資料儲存於與該非揮發性記憶體控制器相關聯之一分配緩衝區中;開始將該特定資料程式化至該等非揮發性記憶體之一特定者;更新足以修復該N個部分之M者之錯誤之冗餘資訊;釋放該分配緩衝區;其中該儲存、該開始將該特定資料程式化、該更新冗餘資訊及該釋放之至少一者係回應於該接收;及其中該釋放發生在該特定非揮發性記憶體完成該程式化之前。
EC2)如EC1之方法,其中該冗餘資訊為第一冗餘資訊,已接收用於該N個部分之一子集之資料,尚未開始對該N個部分之該子集進行程式化,且該方法進一步包括:延遲該N個部分之該子集之至少部分之程式化;開始將該第一冗餘資訊程式化至該等非揮發性記憶體之一者;開始該N個部分之該子集之該至少部分之程式化;更新不同於該第一冗餘資訊且足以修復該N個部分之該子集之M者之錯誤之第二冗餘資訊;及其中該延遲程式化、該開始將該第一冗餘資訊程式化、該開始該N個部分之該子集之該至少部分之程式化及該更新該第二冗餘資訊之至少一者係回應於偵測到該特定資料之該程式化之一錯誤。
EC3)如EC2之方法,其中當偵測到該錯誤時,僅儲存編碼於該
第一冗餘資訊中之該特定資料。
EC4)如EC1之方法,其中該資料進一步包括待將該N個部分之一第一者程式化之初始資料,且該方法進一步包括:至少部分地基於該初始資料而初始化該冗餘資訊。
EC5)如EC1之方法,其中該非揮發性記憶體控制器包括該分配緩衝區。
EC6)如EC1之方法,其中該分配緩衝區被包括在與包括該非揮發性記憶體控制器之一第二晶片分離之一第一晶片中。
EC7)如EC1之方法,其中該非揮發性記憶體控制器可操作為能夠至少部分地經由與一儲存介面標準相容之一計算主機介面而與一計算主機通信之一固態磁碟控制器。
EC8)如EC1之方法,其中該非揮發性記憶體控制器包括能夠與該等非揮發性記憶體通信之一快閃記憶體介面。
EC9)一種方法,其包括:接收待將複數個非揮發性記憶體之N個部分程式化之資料;根據該所接收之資料而請求該N個部分之初始程式化,在該初始程式化開始於該N個部分之一第二部分上之前在該N個部分之一第一部分上完成該初始程式化;回應於該請求初始程式化,更新足以修復請求該初始程式化之該N個部分之該等部分之M者之錯誤之冗餘資訊;及回應於識別已無法進行該初始程式化之該N個部分之該第一部分之1至M者,根據至少部分地基於該冗餘資訊而計算之資料而請求該等非揮發性記憶體之高達M個替代部分之替代程式化。
EC10)如EC9之方法,其中該冗餘資訊為第一冗餘資訊,且該方法進一步包括:回應於該識別且回應於該請求該N個部分之該第二部分之各者之
初始程式化,更新不同於該第一冗餘資訊之第二冗餘資訊。
EC11)如EC9之方法,其中至少部分地經由一非揮發性記憶體控制器而執行該方法之該等行為,該非揮發性記憶體控制器可操作為能夠至少部分地經由與一儲存介面標準相容之一計算主機介面而與一計算主機通信之一固態磁碟控制器。
EC12)如EC11之方法,其中該非揮發性記憶體控制器包括能夠與該等非揮發性記憶體通信之一快閃記憶體介面。
EC13)一種方法,其包括:接收待將複數個非揮發性記憶體之N個部分程式化之資料;至少部分地基於該所接收之資料而計算足以修復該N個部分之M者之錯誤之冗餘資訊;根據該所接收之資料而請求該N個部分之初始程式化;及回應於識別已無法進行該初始程式化之該N個部分之1至M者,根據至少部分地基於該冗餘資訊而計算之資料而請求該等非揮發性記憶體之高達M個替代部分之替代程式化。
EC14)如EC13之方法,其中該所計算之資料係進一步至少部分地基於自完成該初始程式化之該N個部分之若干者讀取之資料,且該所讀取之資料對應於該所接收資料之部分。
EC15)如EC13之方法,其進一步包括:根據該冗餘資訊之全部或任何部分而請求該等非揮發性記憶體之(M-P)個部分之額外程式化。
EC16)如EC15之方法,其中P為0。
EC17)如EC15之方法,其中P為1。
EC18)如EC13之方法,其中M為2且該方法進一步包括:根據足以修復該N個部分之一者之一錯誤之該冗餘資訊之一子集而請求該等非揮發性記憶體之一額外部分之額外程式化。
EC19)如EC13之方法,其中該初始程式化係至少部分地經由一第一介面,且該方法進一步包括:至少部分地經由與該第一介面分離之一第二介面而儲存該冗餘資訊。
EC20)如EC19之方法,其中該第一介面為一晶片間介面且該第二介面為一晶片內介面。
EC21)如EC20之方法,其中使該晶片間介面能夠在一控制器晶片與包括該等非揮發性記憶體之一或多個晶片之間操作。
EC22)如EC21之方法,其中使該晶片內介面能夠在該控制器晶片之控制硬體與該控制器晶片之記憶體之間操作。
EC23)如EC13之方法,其進一步包括:儲存該冗餘資訊,至少直至該識別已完成。
EC24)如EC23之方法,其進一步包括:在計算該所計算之資料之後釋放由該儲存使用之儲存器。
EC25)如EC13之方法,其中至少部分地經由一非揮發性記憶體控制器而執行該方法之該等行為,該非揮發性記憶體控制器可操作為能夠至少部分地經由與一儲存介面標準相容之一計算主機介面而與一計算主機通信之一固態磁碟控制器。
EC26)如EC25之方法,其中該非揮發性記憶體控制器包括能夠與該等非揮發性記憶體通信之一快閃記憶體介面。
EC27)如EC1、EC9或EC13之方法,其中該N個部分之各者包括該等非揮發性記憶體之各自一或多個頁面。
EC28)如EC1、EC9或EC13之方法,其中該N個部分之各者包括該等非揮發性記憶體之各自一或多個區塊。
EC29)如EC1、EC9或EC13之方法,其中該等非揮發性記憶體包括一或多個快閃記憶體。
EC30)一種系統,其包括:
一分配緩衝區;用於在一非揮發性記憶體控制器處接收待將複數個非揮發性記憶體之N個部分程式化之資料之構件,該資料包括待將該N個部分之一特定者程式化之特定資料;用於將該特定資料儲存於與該非揮發性記憶體控制器相關聯之該分配緩衝區中之構件;用於開始將該特定資料程式化至該等非揮發性記憶體之一特定者之構件;用於更新足以修復該N個部分之M者之錯誤之冗餘資訊之構件;用於釋放該分配緩衝區之構件;其中用於儲存之該構件、用於開始將該特定資料程式化之該構件、用於更新冗餘資訊之該構件及用於釋放之該構件之至少一者係回應於用於接收之該構件;及其中用於釋放之該構件可操作以在該特定非揮發性記憶體完成該程式化之前釋放該分配緩衝區。
EC31)如EC30之系統,其中該冗餘資訊為第一冗餘資訊,已接收該N個部分之一子集之資料,尚未開始對該N個部分之該子集進行程式化,且該系統進一步包括:用於延遲該N個部分之該子集之至少部分之程式化之構件;用於開始將該第一冗餘資訊程式化至該等非揮發性記憶體之若干者之構件;用於開始該N個部分之該子集之該至少部分之程式化之構件;用於更新不同於該第一冗餘資訊且足以修復該N個部分之該子集之M者之錯誤之第二冗餘資訊之構件;及其中用於延遲程式化之該構件、用於開始將該第一冗餘資訊程式化之該構件、用於開始該N個部分之該子集之該至少部分之程式化
之該構件及用於更新第二冗餘資訊之該構件之至少一者係回應於用於偵測該特定資料之該程式化之一錯誤之構件。
EC32)如EC31之系統,其中當偵測到該錯誤時,僅儲存編碼於該第一冗餘資訊中之該特定資料。
EC33)如EC30之系統,其中該資料進一步包括待將該N個部分之一第一者程式化之初始資料,且該系統進一步包括:用於至少部分地基於該初始資料而初始化該冗餘資訊之構件。
EC34)如EC30之系統,其中該非揮發性記憶體控制器包括該分配緩衝區。
EC35)如EC30之系統,其中該分配緩衝區被包括在與包括該非揮發性記憶體控制器之一第二晶片分離之一第一晶片中。
EC36)如EC30之系統,其中該非揮發性記憶體控制器可操作為能夠至少部分地經由與一儲存介面標準相容之一計算主機介面而與一計算主機通信之一固態磁碟控制器。
EC37)如EC30之系統,其中該非揮發性記憶體控制器包括能夠與該等非揮發性記憶體通信之一快閃記憶體介面。
EC38)一種系統,其包括:用於接收待將複數個非揮發性記憶體之N個部分程式化之資料之構件;用於根據該所接收之資料而請求該N個部分之初始程式化之構件,在該初始程式化開始於該N個部分之一第二部分上之前在該N個部分之一第一部分上完成該初始程式化;用於回應於該請求初始程式化而更新足以修復請求該初始程式化之該N個部分之該等部分之M者之錯誤之冗餘資訊之構件;及用於回應於識別已無法進行該初始程式化之該N個部分之該第一部分之1至M者而根據至少部分地基於該冗餘資訊而計算之資料而請
求該等非揮發性記憶體之高達M個替代部分之替代程式化之構件。
EC39)如EC38之系統,其中該冗餘資訊為第一冗餘資訊,且該系統進一步包括:用於回應於該識別且回應於用於請求該N個部分之該第二部分之各者之初始程式化之該構件而更新不同於該第一冗餘資訊之第二冗餘資訊之構件。
EC40)如EC38之系統,其中該系統之該等構件被至少部分地包括在一非揮發性記憶體控制器中,該非揮發性記憶體控制器可操作為能夠至少部分地經由與一儲存介面標準相容之一計算主機介面而與一計算主機通信之一固態磁碟控制器。
EC41)如EC40之系統,其中該非揮發性記憶體控制器包括能夠與該等非揮發性記憶體通信之一快閃記憶體介面。
EC42)一種系統,其包括:用於接收待將複數個非揮發性記憶體之N個部分程式化之資料之構件;用於至少部分地基於該所接收之資料而計算足以修復該N個部分之M者之錯誤之冗餘資訊之構件;用於根據該所接收之資料而請求該N個部分之初始程式化之構件;及用於回應於識別已無法進行該初始程式化之該N個部分之1至M者而根據至少部分地基於該冗餘資訊而計算之資料而請求該等非揮發性記憶體之高達M個替代部分之替代程式化之構件。
EC43)如EC42之系統,其中該所計算之資料係進一步至少部分地基於自完成該初始程式化之該N個部分之若干者讀取之資料,且該所讀取之資料對應於該所接收資料之部分。
EC44)如EC42之系統,其進一步包括用於根據該冗餘資訊之全
部或任何部分而請求該等非揮發性記憶體之(M-P)個部分之額外程式化之構件。
EC45)如EC44之系統,其中P為0。
EC46)如EC44之系統,其中P為1。
EC47)如EC42之系統,其中M為2且該系統進一步包括用於根據足以修復該N個部分之一者之一錯誤之該冗餘資訊之一子集而請求該等非揮發性記憶體之一額外部分之額外程式化之構件。
EC48)如EC42之系統,其中用於該初始程式化之該構件可至少部分地經由一第一介面而操作,且該系統進一步包括用於儲存可至少部分地經由與該第一介面分離之一第二介面而操作之該冗餘資訊之構件。
EC49)如EC48之系統,其中該第一介面為一晶片間介面且該第二介面為一晶片內介面。
EC50)如EC49之系統,其中使該晶片間介面能夠在一控制器晶片與包括該等非揮發性記憶體之一或多個晶片之間操作。
EC51)如EC50之系統,其中使該晶片內介面能夠在該控制器晶片之控制硬體與該控制器晶片之記憶體之間操作。
EC52)如EC42之系統,其進一步包括用於儲存該冗餘資訊至少直至該識別已完成之構件。
EC53)如EC52之系統,其進一步包括用於在計算該所計算之資料之後釋放由用於儲存之該構件使用之儲存器之構件。
EC54)如EC42之系統,其中該系統之該等構件被至少部分地包括在一非揮發性記憶體控制器中,該非揮發性記憶體控制器可操作為能夠至少部分地經由與一儲存介面標準相容之一計算主機介面而與一計算主機通信之一固態磁碟控制器。
EC55)如EC54之系統,其中該非揮發性記憶體控制器包括能夠
與該等非揮發性記憶體通信之一快閃記憶體介面。
EC56)如EC30、EC38或EC42之系統,其中該N個部分之各者包括該等非揮發性記憶體之各自一或多個頁面。
EC57)如EC30、EC38或EC42之系統,其中該N個部分之各者包括該等非揮發性記憶體之各自一或多個區塊。
EC58)如EC30、EC38或EC42之系統,其中該等非揮發性記憶體包括一或多個快閃記憶體。
EC59)一種有形電腦可讀媒體,其具有儲存於其內之一組指令,該組指令在由一處理元件執行時引起該處理元件執行及/或控制包括下列各者之操作:在一非揮發性記憶體控制器處接收待將複數個非揮發性記憶體之N個部分程式化之資料,該資料包括待將該N個部分之一特定者程式化之特定資料;將該特定資料儲存於與該非揮發性記憶體控制器相關聯之一分配緩衝區中;開始將該特定資料程式化至該等非揮發性記憶體之一特定者;更新足以修復該N個部分之M者之錯誤之冗餘資訊;釋放該分配緩衝區;其中該儲存、該開始將該特定資料程式化、該更新冗餘資訊及該釋放之至少一者係回應於該特定資料之該接收;及其中該釋放發生在該特定非揮發性記憶體完成該程式化之前。
EC60)如EC59之有形電腦可讀媒體,其中該冗餘資訊為第一冗餘資訊,已接收用於該N個部分之一子集之資料,尚未開始對該N個部分之該子集進行程式化,且該等操作進一步包括:延遲該N個部分之該子集之至少部分之程式化;開始將該第一冗餘資訊程式化至該等非揮發性記憶體之若干
者;開始該N個部分之該子集之該至少部分之程式化;更新不同於該第一冗餘資訊且足以修復該N個部分之該子集之M者之錯誤之第二冗餘資訊;及其中該延遲程式化、該開始將該第一冗餘資訊程式化、該開始該N個部分之該子集之該至少部分之程式化及該更新第二冗餘資訊之至少一者係回應於偵測到該特定資料之該程式化之一錯誤。
EC61)如EC60之有形電腦可讀媒體,其中當偵測到該錯誤時,僅儲存編碼於該第一冗餘資訊中之該特定資料。
EC62)如EC59之有形電腦可讀媒體,其中該資料進一步包括待將該N個部分之一第一者程式化之初始資料,且該等操作進一步包括:至少部分地基於該初始資料而初始化該冗餘資訊。
EC63)如EC59之有形電腦可讀媒體,其中該非揮發性記憶體控制器包括該分配緩衝區。
EC64)如EC59之有形電腦可讀媒體,其中該分配緩衝區被包括在與包括該非揮發性記憶體控制器之一第二晶片分離之一第一晶片中。
EC65)如EC59之有形電腦可讀媒體,其中該非揮發性記憶體控制器可操作為能夠至少部分地經由與一儲存介面標準相容之一計算主機介面而與一計算主機通信之一固態磁碟控制器。
EC66)如EC59之有形電腦可讀媒體,其中該非揮發性記憶體控制器包括能夠與該等非揮發性記憶體通信之一快閃記憶體介面。
EC67)如EC59之有形電腦可讀媒體,其中該非揮發性記憶體控制器包括該處理元件。
EC68)一種有形電腦可讀媒體,其具有儲存於其內之一組指
令,該組指令在由一處理元件執行時引起該處理元件執行及/或控制包括下列各者之操作:接收待將複數個非揮發性記憶體之N個部分程式化之資料;根據該所接收之資料而請求該N個部分之初始程式化,在該初始程式化開始於該N個部分之一第二部分上之前在該N個部分之一第一部分上完成該初始程式化;回應於該請求初始程式化,更新足以修復請求該初始程式化之該N個部分之該等部分之M者之錯誤之冗餘資訊;及回應於識別已無法進行該初始程式化之該N個部分之該第一部分之1至M者,根據至少部分地基於該冗餘資訊而計算之資料而請求該等非揮發性記憶體之高達M個替代部分之替代程式化。
EC69)如EC68之有形電腦可讀媒體,其中該冗餘資訊為第一冗餘資訊,且該等操作進一步包括:回應於該識別且回應於該請求該N個部分之該第二部分之各者之初始程式化,更新不同於該第一冗餘資訊之第二冗餘資訊。
EC70)如EC68之有形電腦可讀媒體,其中該處理元件被包括在一非揮發性記憶體控制器中,該非揮發性記憶體控制器可操作為能夠至少部分地經由與一儲存介面標準相容之一計算主機介面而與一計算主機通信之一固態磁碟控制器。
EC71)如EC70之有形電腦可讀媒體,其中該非揮發性記憶體控制器包括能夠與該等非揮發性記憶體通信之一快閃記憶體介面。
EC72)一種有形電腦可讀媒體,其具有儲存於其內之一組指令,該組指令在由一處理元件執行時引起該處理元件執行及/或控制包括下列各者之操作:接收待將複數個非揮發性記憶體之N個部分程式化之資料;至少部分地基於該所接收之資料而計算足以修復該N個部分之M
者之錯誤之冗餘資訊;根據該所接收之資料而請求該N個部分之初始程式化;及回應於識別已無法進行該初始程式化之該N個部分之1至M者,根據至少部分地基於該冗餘資訊而計算之資料而請求該等非揮發性記憶體之高達M個替代部分之替代程式化。
EC73)如EC72之有形電腦可讀媒體,其中該所計算之資料係進一步至少部分地基於自完成該初始程式化之該N個部分之若干者讀取之資料,且該所讀取之資料對應於該所接收資料之部分。
EC74)如EC72之有形電腦可讀媒體,其中該等操作進一步包括:根據該冗餘資訊之全部或任何部分而請求該等非揮發性記憶體之(M-P)個部分之額外程式化。
EC75)如EC74之有形電腦可讀媒體,其中P為0。
EC76)如EC74之有形電腦可讀媒體,其中P為1。
EC77)如EC72之有形電腦可讀媒體,其中M為2且該等操作進一步包括:根據足以修復該N個部分之一者之一錯誤之該冗餘資訊之一子集而請求該等非揮發性記憶體之一額外部分之額外程式化。
EC78)如EC72之有形電腦可讀媒體,其中該初始程式化係至少部分地經由一第一介面,且該等操作進一步包括:至少部分地經由與該第一介面分離之一第二介面而儲存該冗餘資訊。
EC79)如EC78之有形電腦可讀媒體,其中該第一介面為一晶片間介面且該第二介面為一晶片內介面。
EC80)如EC79之有形電腦可讀媒體,其中使該晶片間介面能夠在一控制器晶片與包括該等非揮發性記憶體之一或多個晶片之間操作。
EC81)如EC80之有形電腦可讀媒體,其中使該晶片內介面能夠在該控制器晶片之控制硬體與該控制器晶片之記憶體之間操作。
EC82)如EC72之有形電腦可讀媒體,其中該等操作進一步包括:儲存該冗餘資訊,至少直至該識別已完成。
EC83)如EC82之有形電腦可讀媒體,其中該等操作進一步包括:在計算該所計算之資料之後釋放由該儲存使用之儲存器。
EC84)如EC72之有形電腦可讀媒體,其中該處理元件被包括在一非揮發性記憶體控制器中,該非揮發性記憶體控制器可操作為能夠至少部分地經由與一儲存介面標準相容之一計算主機介面而與一計算主機通信之一固態磁碟控制器。
EC85)如EC84之有形電腦可讀媒體,其中該非揮發性記憶體控制器包括能夠與該等非揮發性記憶體通信之一快閃記憶體介面。
EC86)如EC59、EC68或EC72之有形電腦可讀媒體,其中該N個部分之各者包括該等非揮發性記憶體之各自一或多個頁面。
EC87)如EC59、EC68或EC72之有形電腦可讀媒體,其中該N個部分之各者包括該等非揮發性記憶體之各自一或多個區塊。
EC88)如EC59、EC68或EC72之有形電腦可讀媒體,其中該等非揮發性記憶體包括一或多個快閃記憶體。
EC89)如前述EC之任何項,其具有或涉及一儲存介面標準,其中該儲存介面標準包括下列之一或多者:一通用串列匯流排(USB)介面標準;一小型快閃(CF)介面標準;一多媒體卡(MMC)介面標準;一嵌入式MMC(eMMC)介面標準;一霹靂(Thunderbolt)介面標準;一UFS介面標準;一安全數位(SD)介面標準;一記憶棒介面標準;
一xD-圖像卡介面標準;一整合電子驅動介面(IDE)介面標準;一串列先進附接技術(SATA)介面標準;一外部SATA(eSATA)介面標準;一小型電腦系統介面(SCSI)介面標準;一串列附接小型電腦系統介面(SAS)介面標準;一光纖通道介面標準;一乙太網路介面標準;及一快速周邊組件互連(PCIe)介面標準。
EC90)如前述EC之任何項,其具有或涉及一快閃記憶體介面,其中該快閃記憶體介面與下列之一或多者相容:一開放式反及快閃介面(ONFI);一觸發模式介面;一雙倍資料速率(DDR)同步介面;一DDR2同步介面;一同步介面;及一非同步介面。
EC91)如前述EC之任何項,其具有或涉及一計算主機,其中該計算主機包括下列之一或多者:一電腦;一工作站電腦;一伺服器電腦;一儲存伺服器;一儲存附加網路(SAN);一網路附加儲存(NAS)裝置;一直接附加儲存(DAS)裝置;
一儲存設備;一個人電腦(PC);一膝上型電腦;一筆記型電腦;一迷你筆記型電腦;一平板裝置或電腦;一輕量級筆記型電腦;一電子閱讀裝置(一電子閱讀器);一個人數位助理(PDA);一導航系統;一(手持式)全球定位系統(GPS)裝置;一自動控制系統;一自動媒體控制系統或電腦;一印表機、影印機或傳真機或單體全備裝置;一銷售點(POS)裝置;一收銀機;一媒體播放器;一電視機;一媒體記錄器;一數位視訊記錄器(DVR);一數位相機;一蜂巢式手機;一無線電話手機;及一電子遊戲機。
EC92)如前述EC之任何項,其具有或涉及至少一快閃記憶體,其中該至少一快閃記憶體之至少一部分包括下列之一或多者:
反及快閃技術儲存胞;及互斥或快閃技術儲存胞。
EC93)如前述EC之任何項,其具有或涉及至少一快閃記憶體,其中該至少一快閃記憶體之至少一部分包括下列之一或多者:單位階胞(SLC)快閃技術儲存胞;及多位階胞(MLC)快閃技術儲存胞。
EC94)如前述EC之任何項,其具有或涉及至少一快閃記憶體,其中該至少一快閃記憶體之至少一部分包括下列之一或多者:基於多晶矽技術之電荷儲存胞;及基於氮化矽技術之電荷儲存胞。
EC95)如前述EC之任何項,其具有或涉及至少一快閃記憶體,其中該至少一快閃記憶體之至少一部分包括下列之一或多者:基於二維技術之快閃記憶體技術;及基於三維技術之快閃記憶體技術。
[系統]
在一些實施例中,一I/O裝置(諸如一SSD)包含一SSD控制器。該SSD控制器充當該SSD之主機介面與NVM之間之一橋接器,且執行經由該SSD之一主機介面而發送自一計算主機之一主機協定之命令。該等命令之至少部分引導該SSD寫入及讀取分別具有發送自及發送至該計算主機之資料之NVM。在進一步實施例中,使該SSD控制器能夠使用一映射來在該主機協定之LBA與NVM中之實體儲存位址之間變換。在進一步實施例中,該映射之至少一部分用於該I/O裝置之私密儲存(不會被該計算主機看見)。例如,由該I/O裝置使用無法由該計算主機存取之該等LBA之一部分來管理至記錄、統計或其他私密資料之存取。
在一些實施例中,將變動大小量子之壓縮資料存取於NVM中提
供一些使用案例中之改良儲存效率。例如,一SSD控制器自一計算主機接收(解壓縮)資料(例如相關於一磁碟寫入命令),壓縮該資料,且將該壓縮資料儲存至快閃記憶體中。回應於來自該計算主機之一隨後請求(例如相關於一磁碟讀取命令),該SSD控制器自該快閃記憶體讀取該壓縮資料,解壓縮該壓縮資料,且將該解壓縮資料提供至該計算主機。根據變動大小量子而將該壓縮資料儲存於該快閃記憶體中,該量子大小變動歸因於(例如)對各種資料之壓縮演算法、操作模式及壓縮效力。該SSD控制器藉由查閱一內含映射表以判定該快閃記憶體中之何處儲存(若干)標頭而部分地解壓縮該資料。該SSD控制器剖析自該快閃記憶體獲得之該(等)標頭以判定該快閃記憶體中之何處儲存適當(壓縮)資料。該SSD控制器解壓縮來自該快閃記憶體之該適當資料以產生待提供至該計算主機之解壓縮資料。在本申請案中,解壓縮(及其之變體)與減壓縮(及其變體)同義。
在各種實施例中,一SSD控制器包含:一主機介面,其用於與一計算主機介接;一介面,其用於與NVM(諸如快閃記憶體)介接;及電路,其用於控制該等介面且執行(及/或控制該執行之各種態樣)壓縮及解壓縮以及較低層級冗餘及/或錯誤校正、較高層級冗餘及/或錯誤校正及使用獨立矽元素之動態較高層級冗餘模式管理。
根據各種實施例,一些主機介面與一USB介面標準、一CF介面標準、一MMC介面標準、一eMMC介面標準、一霹靂介面標準、一UFS介面標準、一SD介面標準、一記憶棒介面標準、一xD-圖像卡介面標準、一IDE介面標準、一SATA介面標準、一SCSI介面標準、一SAS介面標準及一PCIe介面標準之一或多者相容。根據各種實施例,計算主機為一電腦、一工作站電腦、一伺服器電腦、一儲存伺服器、一SAN、一NAS裝置、一DAS裝置、一儲存設備、一PC、一膝上型電腦、一筆記型電腦、一迷你筆記型電腦、一平板裝置或電腦、一輕量
級筆記型電腦、一電子閱讀裝置(諸如一電子閱讀器)、一PDA、一導航系統、一(手持式)GPS裝置、一自動控制系統、一自動媒體控制系統或電腦、一印表機、影印機或傳真機或單體全備裝置、一POS裝置、一收銀機、一媒體播放器、一電視機、一媒體記錄器、一DVR、一數位相機、一蜂巢式手機、一無線電話手機及一電子遊戲機之全部或任何部分。在一些實施例中,一介接主機(諸如一SAS/SATA橋接器)操作為一計算主機及/或操作為至一計算主機之一橋接器。
在各種實施例中,SSD控制器包含一或多個處理器。該等處理器執行韌體以控制及/或執行SSD控制器之操作。SSD控制器與計算主機通信以發送及接收命令及/或狀態以及資料。計算主機執行一作業系統、一驅動程式及一應用程式之一或多者。計算主機與SSD控制器之通信係視情況及/或選擇性經由該驅動程式及/或經由該應用程式。在一第一實例中,至SSD控制器之全部通信係經由該驅動程式,且該應用程式將較高層級命令提供至該驅動程式,該驅動程式將該等命令轉譯成SSD控制器之特定命令。在一第二實例中,該驅動程式實施一旁路模式且使該應用程式能夠經由該驅動程式而將特定命令發送至SSD控制器。在一第三實例中,一PCIe SSD控制器支援一或多個虛擬函式(VF)以使經組態之一應用程式能夠與SSD控制器直接通信(繞過該驅動程式)。
根據各種實施例,一些SSD與由磁性及/或光學非揮發性儲存器(諸如HDD、CD機及DVD機)使用之形狀因數、電介面及/或協定相容。在各種實施例中,SSD使用零或多個同位碼、零或多個RS碼、零或多個BCH碼、零或多個維特比(Viterbi)或其他格子碼及零或多個LDPC碼之各種組合。
圖1A繪示包含經由一或多個冗餘陣列(視情況而定,內部冗餘陣列)而提供非揮發性記憶體(NVM)之程式錯誤修復之一固態磁碟(SSD)
控制器之一SSD之一實施例之選定細節。該SSD控制器用於管理(諸如)經由NVM元件(例如快閃記憶體)而實施之非揮發性儲存。SSD控制器100經由一或多個外部介面110而通信地耦合至一主機(圖中未繪示)。根據各種實施例,外部介面110為下列之一或多者:一SATA介面;一SAS介面;一PCIe介面;一光纖通道介面;一乙太網路介面(諸如100憶位元乙太網路);前述介面之任何者之一非標準版本;一自訂介面;用於使儲存及/或通信及/或計算裝置互連之任何其他類型之介面。例如,在一些實施例中,SSD控制器100包含一SATA介面及一PCIe介面。
SSD控制器100經由一或多個裝置介面190而進一步通信地耦合至包含一或多個儲存裝置(諸如快閃裝置192之一或多個例項)之NVM 199。根據各種實施例,裝置介面190為下列之一或多者:一非同步介面;一同步介面;一單倍資料速率(SDR)介面;一雙倍資料速率(DDR)介面;一DRAM相容DDR或DDR2同步介面;一ONFI相容介面,諸如一ONFI 2.2或ONFI 3.0相容介面;一觸發模式相容快閃介面;前述介面之任何者之一非標準版本;一自訂介面;或用於連接至儲存裝置之任何其他類型之介面。
在一些實施例中,快閃裝置192之各者具有一或多個個別快閃晶粒194。根據快閃裝置192之一特定者之類型,該特定快閃裝置192中之複數個快閃晶粒194視情況及/或選擇性並行存取。快閃裝置192僅表示能夠通信地耦合至SSD控制器100之一類型之儲存裝置。在各種實施例中,可使用任何類型之儲存裝置,諸如SLC反及快閃記憶體、MLC反及快閃記憶體、互斥或快閃記憶體、使用基於多晶矽或氮化矽技術之電荷儲存胞之快閃記憶體、基於二維或三維技術之快閃記憶體、唯讀記憶體、靜態隨機存取記憶體、動態隨機存取記憶體、鐵磁記憶體、相變記憶體、賽道記憶體、ReRAM或任何其他類型之記憶
體裝置或儲存媒體。
根據各種實施例,裝置介面190被組織為:每匯流排具有快閃裝置192之一或多個例項之一或多個匯流排;每匯流排具有快閃裝置192之一或多個例項之一或多個匯流排群組,該等群組具有在一群組中大體上並行存取之匯流排;或快閃裝置192之一或多個例項至裝置介面190上之任何其他組織。
繼續參考圖1A,SSD控制器100具有一或多個模組,諸如主機介面111、資料處理121、緩衝區131、映射141、回收器151、ECC 161、裝置介面邏輯191及CPU 171。圖1A中所繪示之特定模組及互連僅表示一實施例,且可設想該等模組之部分或全部之諸多配置及互連以及圖中未繪示之額外模組。在一些實施例之一第一實例中,存在用於提供雙埠之兩個或兩個以上主機介面111。在一些實施例之一第二實例中,資料處理121及/或ECC 161與緩衝區131組合。在一些實施例之一第三實例中,主機介面111直接耦合至緩衝區131,且資料處理121視情況及/或選擇性作用於儲存於緩衝區131中之資料。在一些實施例之一第四實例中,裝置介面邏輯191直接耦合至緩衝區131,且ECC 161視情況及/或選擇性作用於儲存於緩衝區131中之資料。
主機介面111經由外部介面110而發送及接收命令及/或資料,且在一些實施例中經由標籤追蹤113而追蹤個別命令之進展。例如,該等命令包含指定待讀取之資料之一位址(諸如一LBA)及數量(諸如LBA量子(例如磁區)之數目)之一讀取命令;作為回應,SSD提供讀取狀態及/或讀取資料。對於另一實例,該等命令包含指定待寫入之資料之一位址(諸如一LBA)及數量(諸如LBA量子(例如磁區)之數目)之一寫入命令;作為回應,SSD提供寫入狀態及/或請求寫入資料且視情況隨後提供寫入狀態。對於又一實例,該等命令包含指定不再需要被分配之一或多個位址(諸如一或多個LBA)之一解除分配命令(例如一修正命
令);作為回應,SSD相應地修改映射且視情況提供解除分配狀態。在一些背景中,一ATA相容TRIM命令為一例示性解除分配命令。對於又一實例,該等命令包含一超級電容器測試命令或一資料強化成功查詢;作為回應,SSD提供適當狀態。在一些實施例中,主機介面111與一SATA協定相容,且使用NCQ命令來使主機介面111能夠具有高達32個擱置命令,該等擱置命令各具有表示為自0至31之一數字之一唯一標籤。在一些實施例中,使標籤追蹤113能夠在藉由SSD控制器100之處理期間使經由外部介面110接收之一命令之一外部標籤與用於追蹤該命令之一內部標籤相關聯。
根據各種實施例,描述下列之一或多者:資料處理121視情況及/或選擇性處理在緩衝區131與外部介面110之間發送之部分或全部資料;及資料處理121視情況及/或選擇性處理儲存於緩衝區131中之資料。在一些實施例中,資料處理121使用一或多個引擎123來執行下列之一或多者:格式化;重新格式化;轉碼;及任何其他資料處理及/或操縱任務。
緩衝區131儲存自裝置介面190發送至外部介面110/自外部介面110發送至裝置介面190之資料。在一些實施例中,緩衝區131另外儲存由SSD控制器100用於管理快閃裝置192之一或多個例項之系統資料(諸如部分或全部映射表)。在各種實施例中,緩衝區131具有下列之一或多者:記憶體137,其用於資料之暫時儲存;分配緩衝區138,其用於與NVM寫入/程式化(本文別處所描述)相關之儲存;DMA 133,其用於控制至及/或來自緩衝區131之資料之移動;及ECC-X 135,其用於提供較高層級錯誤校正及/或冗餘功能;及其他資料移動及/或操縱功能。一較高層級冗餘功能之一實例為一似RAID能力(例如RASIE,諸如本文別處進一步詳細所描述);其中冗餘位於一快閃裝置層級(例如快閃裝置192之多者)及/或一快閃晶粒層級(例如快閃晶粒
194)處以取代位於一磁碟層級處。
根據各種實施例,描述下列之一或多者:ECC 161視情況及/或選擇性處理在緩衝區131與裝置介面190之間發送之部分或全部資料;及ECC 161視情況及/或選擇性處理儲存於緩衝區131中之資料。在一些實施例中,ECC 161用於(諸如)根據一或多項ECC技術而提供較低層級錯誤校正及/或冗餘功能。在一些實施例中,ECC 161實施下列之一或多者:一CRC碼;一漢明(Hamming)碼;一RS碼;一BCH碼;一LDPC碼;一維特比碼;一格子碼;一硬決策碼;一軟決策碼;一基於擦除之碼;任何錯誤偵測及/或校正碼;及前述各者之任何組合。在一些實施例中,ECC 161包含一或多個解碼器(諸如LDPC解碼器)。
裝置介面邏輯191經由裝置介面190而控制快閃裝置192之例項。使裝置介面邏輯191能夠根據快閃裝置192之一協定而發送至/來自快閃裝置192之例項之資料。裝置介面邏輯191包含排程193以經由裝置介面190而選擇性排序快閃裝置192之例項之控制。例如,在一些實施例中,使排程193能夠對快閃裝置192之例項進行佇列操作,且在快閃裝置192(或快閃晶粒194)之例項之個別者可用時使排程193能夠將該等操作選擇性發送至快閃裝置192(或快閃晶粒194)之例項之個別者。
映射141在用於外部介面110上之資料定址與用於裝置介面190上之資料定址之間轉換以使用表143來將外部資料位址映射至NVM 199中之位置。例如,在一些實施例中,映射141經由由表143提供之映射而將用於外部介面110上之LBA轉換成以一或多個快閃晶粒194為目標之區塊及/或頁面位址。對於因碟機製造或解除分配而從未被寫入之LBA,映射指向一預設值以在讀取該等LBA時返回。例如,當處理一解除分配命令時,該映射經修改使得對應於該等經解除分配之LBA之項指向預設值之一者。在各種實施例中,存在各具有一對應指標之各種預設值。該複數個預設值能夠讀取一些經解除分配之LBA(諸如在
一第一範圍內)作為一預設值,同時讀取其他經解除分配之LBA(諸如在一第二範圍內)作為另一預設值。在各種實施例中,由快閃記憶體、硬體、韌體、命令及/或基本引數及/或參數、可程式化暫存器或其等之各種組合界定該等預設值。
在一些實施例中,映射141使用表143來執行及/或查找用於外部介面110上之位址與用於裝置介面190上之資料定址之間之變換。根據各種實施例,表143為下列之一或多者:單層級映射;兩層級映射;多層級映射;映射快取;壓縮映射;自一位址空間至另一位址空間之任何類型之映射;及前述各者之任何組合。根據各種實施例,表143包含下列之一或多者:靜態隨機存取記憶體;動態隨機存取記憶體;NVM(諸如快閃記憶體);快取記憶體;晶片上記憶體;晶片外記憶體;及前述各者之任何組合。
在一些實施例中,回收器151執行記憶體回收(garbage collection)。例如,在一些實施例中,快閃裝置192之例項包含必須在區塊被重新寫入之前被擦除之該等區塊。使回收器151能夠(諸如)藉由掃描由映射141維持之一映射而判定快閃裝置192之例項之何種部分主動處於使用中(例如分配而非解除分配),且藉由擦除快閃裝置192之例項之未使用(例如解除分配)部分而使該等未使用部分可用於寫入。在進一步實施例中,使回收器151能夠移動儲存於快閃裝置192之例項內之資料以使快閃裝置192之例項之更大連續部分可用於寫入。
在一些實施例中,快閃裝置192之例項經選擇性及/或動態組態、管理及/或使用以具有用於儲存不同類型及/或性質之資料之一或多個頻帶。該等頻帶之數目、配置、大小及類型動態可變。例如,將來自一計算主機之資料寫入至一熱(作用中)頻帶中,同時將來自回收器151之資料寫入至一冷(較少作用中)頻帶中。在一些使用案例中,若該計算主機寫入一長序列流,則該熱頻帶之一大小生長;然而,若該
計算主機進行隨機寫入或較少寫入,則該冷頻帶之一大小生長。
CPU 171控制SSD控制器100之各種部分。CPU 171包含CPU核心172。根據各種實施例,CPU核心172為一或多個單核或多核處理器。在一些實施例中,CPU核心172中之個別處理器核心為多線的。CPU核心172包含指令及/或資料快取及/或記憶體。例如,指令記憶體含有使CPU核心172能夠執行程式(例如軟體,有時稱為韌體)以控制SSD控制器100之指令。在一些實施例中,將由CPU核心172執行之韌體之部分或全部儲存於快閃裝置192之例項上(如圖所繪示,例如作為圖1B中之NVM 199之韌體106)。
在各種實施例中,CPU 171進一步包含:命令管理173,其用於在經由外部介面110所接收之命令在進行中時追蹤及控制該等命令;緩衝管理175,其用於控制緩衝區131之分配及使用;變換管理177,其用於控制映射141;連貫性管理179,其用於控制資料定址之一致性且避免(諸如)外部資料存取與回收資料存取之間之衝突;裝置管理181,其用於控制裝置介面邏輯191;識別碼管理182,其用於控制識別碼資訊之修改及通信;及視情況其他管理單元。根據各種實施例,由硬體、軟體(諸如CPU核心172上或經由外部介面110連接之一主機上執行之韌體)或其等之任何組合控制及/或管理由CPU 171執行之管理功能之非任何者、任何者或全部。
在一些實施例中,使CPU 171能夠執行其他管理任務,諸如下列之一或多者:收集及/或報告效能統計;實施SMART;控制電力排序;控制及/或監測及/或調整電力消耗;對電力錯誤作出回應;控制及/或監測及/或調整時脈速率;及其他管理任務。
各種實施例包含類似於SSD控制器100且與各種計算主機之操作相容(諸如經由調適主機介面111及/或外部介面110)之一計算主機快閃記憶體控制器。該等各種計算主機包含一電腦、一工作站電腦、一伺
服器電腦、一儲存伺服器、一SAN、一NAS裝置、一DAS裝飾、一儲存設備、一PC、一膝上型電腦、一筆記型電腦、一迷你筆記型電腦、一平板裝置或電腦、一輕量級筆記型電腦、一電子閱讀裝置(諸如一電子閱讀器)、一PDA、一導航系統、一(手持式)GPS裝置、一自動控制系統、一自動媒體控制系統或電腦、一印表機、影印機或傳真機或單體全備裝置、一POS裝置、一收銀機、一媒體播放器、一電視機、一媒體記錄器、一DVR、一數位相機、一蜂巢式手機、一無線電話手機及一電子遊戲機之一者或任何組合。
在各種實施例中,一SSD控制器(或一計算主機快閃記憶體控制器)之全部或任何部分被實施於一單一IC、一多晶粒IC之一單一晶粒、一多晶粒IC之複數個晶粒或複數個IC上。例如,緩衝區131被實施於相同於SSD控制器100之其他元件之一晶粒上。對於另一實例,緩衝區131被實施於不同於SSD控制器100之其他元件之一晶粒上。
圖1B繪示包含圖1A之SSD之一或多個例項之系統之各種實施例之選定細節。SSD 101包含經由裝置介面190而耦合至NVM 199之SSD控制器100。該圖繪示各種種類之實施例:直接耦合至一主機之一單一SSD;經由各自外部介面而各分別直接耦合至一主機之複數個SSD;及經由各種互連元件而間接耦合至一主機之一或多個SSD。
作為直接耦合至一主機之一單一SSD之一實例性實施例,SSD101之一例項經由外部介面110而直接耦合至主機102(例如,省略、繞過或通過交換器/網狀架構/中間控制器103)。作為經由各自外部介面而各直接耦合至一主機之複數個SSD之一實例性實施例,SSD 101之複數個例項之各者經由外部介面110之一各自例項而分別直接耦合至主機102(例如,省略、繞過或通過交換器/網狀架構/中間控制器103)。作為經由各種互連元件而間接耦合至一主機之一或多個SSD之一實例性實施例,SSD 101之一或多個例項之各者分別間接耦合至主
機102。各間接耦合係經由耦合至交換器/網狀架構/中間控制器103之外部介面110之一各自例項及經由耦合至主機102之中間介面104。
包含交換器/網狀架構/中間控制器103之實施例之部分亦包含經由記憶體介面180而耦合且可由SSD存取之卡記憶體112C。在各種實施例中,SSD、交換器/網狀架構/中間控制器及/或卡記憶體之一或多者被包含在一實體可識別模組、卡或可插入元件(例如I/O卡116)上。在一些實施例中,SSD 101(或其變體)對應於耦合至操作為主機102之一起始器之一SAS碟機或一SATA碟機。
使主機102能夠執行主機軟體115之各種元件,諸如OS 105、驅動程式107、應用程式109及多裝置管理軟體114之各種組合。虛線箭頭107D表示主機軟體與I/O裝置之通信,例如,將資料發送至SSD 101之例項之一或多者/自SSD 101之例項之一或多者接收資料,及自OS 105(經由驅動程式107)、驅動程式107及應用程式109(經由驅動程式107或直接作為一VF)之任何一或多者接收資料/將資料發送至OS 105(經由驅動程式107)、驅動程式107及應用程式109(經由驅動程式107或直接作為一VF)之任何一或多者。
OS 105包含用於與SSD介接之驅動程式(由驅動程式107概念性繪示)及/或使OS 105能夠與用於與SSD介接之驅動程式(由驅動程式107概念性繪示)一起操作。各種版本之視窗作業系統(例如95、98、ME、NT、XP、2000、Server、Vista及7)、各種版本之Linux作業系統(例如Red Hat、Debian及Ubuntu)及各種版本之MacOS(例如8、9及X)為OS 105之實例。在各種實施例中,該等驅動程式為可與一標準介面及/或協定(諸如SATA、AHCI或NVM Express)一起操作之標準及/或通用驅動程式(有時稱為「現成套裝軟體(shrink-wrapped)」或「預安裝軟體」),或視情況經客製化及/或供應商定製以能夠使用專用於SSD 101之命令。一些碟機及/或驅動程式具有通過模式以使應用層程式
(諸如經由最佳化反及存取(有時稱為ONA)或直接反及存取(有時稱為DNA)技術之應用程式109)能夠將命令直接傳送至SSD 101以使一客製化程式應用能夠使用專用於SSD 101之命令,甚至使用一通用驅動程式。ONA技術包含下列之一或多者:使用非標準修改符(提示);使用供應商特定命令;傳送非標準統計,諸如根據可壓縮性之實際NVM使用率;及其他技術。DNA技術包含下列之一或多者:使用提供至NVM之未映射讀取、寫入及/或擦除存取之非標準或供應商特定命令;(諸如)藉由繞過I/O裝置否則將進行之資料之格式化而使用提供至NVM之更直接存取之非標準或供應商特定命令;及其他技術。該驅動程式之實例為不具有ONA或DNA支援之一驅動程式、一ONA啟用驅動程式、一DNA啟用驅動程式及一ONA/DNA啟用驅動程式。該驅動程式之進一步實例為一供應商提供、供應商開發及/或供應商增強之驅動程式及一客戶提供、客戶開發及/或客戶增強之驅動程式。
應用層程式之實例為不具有ONA或DNA支援之一應用程式、一ONA啟用應用程式、一DNA啟用應用程式及一ONA/DNA啟用應用程式。虛線箭頭109D表示應用程式與I/O裝置之通信(例如一應用程式之經由一驅動程式之旁路或經由一VF之旁路),例如,一ONA啟用應用程式及一ONA啟用驅動程式與一SSD通信,且(諸如)該應用程式無需使用OS作為一中介機構。虛線箭頭109V表示應用程式與I/O裝置之通信(例如一應用程式之經由一VF之旁路),例如,一DNA啟用應用程式及一DNA啟用驅動程式與一SSD通信,且(諸如)該應用程式無需使用OS或驅動程式作為中介機構。
在一些實施例中,NVM 199之一或多個部分用於韌體儲存(例如韌體106)。該韌體儲存包含一或多個韌體影像(或其部分)。例如,一韌體影像具有(例如)由SSD控制器100之CPU核心172執行之韌體之一或多個影像。對於另一實例,一韌體影像具有(例如)由CPU核心在韌
體執行期間引用之常數、參數值及NVM裝置資訊之一或多個影像。韌體之該等影像對應於(例如)一當前韌體影像及零或多個先前(相對於韌體更新)韌體影像。在各種實施例中,韌體提供通用操作模式、標準操作模式、ONA操作模式及/或DNA操作模式。在一些實施例中,經由密鑰或各種軟體技術(視情況由一驅動程式通信及/或提供)而啟用該等韌體操作模式之一或多者(例如,「解鎖」一或多個API)。
在缺少交換器/網狀架構/中間控制器之一些實施例中,SSD經由外部介面110而直接耦合至主機。在各種實施例中,SSD控制器100經由一或多個中間層之其他控制器(諸如一RAID控制器)而耦合至主機。在一些實施例中,SSD 101(或其變體)對應於一SAS碟機或一SATA碟機,且交換器/網狀架構/中間控制器103對應於繼而耦合至一起始器之一擴展器,或替代地,交換器/網狀架構/中間控制器103對應於經由一擴展器而間接耦合至一起始器之一橋接器。在一些實施例中,交換器/網狀架構/中間控制器103包含一或多個PCIe交換器及/或網狀架構。
在各種實施例(諸如具有作為一計算主機之主機102(例如一電腦、一工作站電腦、一伺服器電腦、一儲存伺服器、一SAN、一NAS裝置、一DAS裝置、一儲存設備、一PC、一膝上型電腦、一筆記型電腦及/或一迷你筆記型電腦)之實施例之若干者)中,視情況使該計算主機能夠(例如經由選用之I/O及儲存裝置/資源117及選用之LAN/WAN 119)與一或多個本端及/或遠端伺服器(例如選用之伺服器118)通信。該通信實現(例如)SSD 101元件之任何一或多者之本端及/或遠端存取、管理及/或使用。在一些實施例中,該通信完全或部分經由乙太網路。在一些實施例中,該通信完全或部分經由光纖通道。在各種實施例中,LAN/WAN 119表示一或多個區域網路及/或廣域網路,諸如一伺服器群中之一網路、耦合伺服器群之一網路、一都會區域網路及網際網路之任何一或多者。
在各種實施例中,與一或多個NVM組合之一SSD控制器及/或一計算主機快閃記憶體控制器被實施為一非揮發性儲存組件,諸如一USB儲存組件、一CF儲存組件、一MMC儲存組件、一eMMC儲存組件、一霹靂儲存組件、一UFS儲存組件、一SD儲存組件、一記憶棒儲存組件及一xD-圖像卡儲存組件。
在各種實施例中,一SSD控制器(或一計算主機快閃記憶體控制器)之全部或任何部分或其功能被實施於將與該控制器耦合之一主機(例如圖1B之主機102)中。在各種實施例中,經由硬體(例如邏輯電路)、軟體及/或韌體(例如驅動程式軟體及/或SSD控制器韌體)或其等之任何組合而實施一SSD控制器(或一計算主機快閃記憶體控制器)之全部或任何部分或其功能。例如,部分地經由一主機上之軟體且部分地經由一SSD控制器中之韌體與硬體之一組合而實施一EEC單元(諸如類似於圖1A之ECC 161及/或ECC-X 135)之功能性或與該ECC單元相關聯之功能性。對於另一實例,部分地經由一主機上之軟體且部分地經由一計算主機快閃記憶體控制器中之硬體而實施一回收器單元(諸如類似於圖1A之回收器151)之功能性或與該回收器單元相關聯之功能性。
[映射操作]
圖2繪示映射一LBA之一LPN部分之一實施例之選定細節。在一些實施例中,一讀取單元為可獨立讀取之一NVM之一最精細粒度,諸如該NVM之一頁面之一部分。在進一步實施例中,該讀取單元對應於一(較低層級)錯誤校正碼之檢查位元(有時稱為冗餘)以及由該等檢查位元保護之全部資料。例如,圖1A之ECC 161經由檢查位元(諸如經由一LDPC碼)而實施錯誤校正,且一讀取單元對應於實施該LDPC碼之編碼位元以及由該等LDPC碼位元保護之資料位元。
在一些實施例中,映射141(諸如)經由表143(如圖1A中所繪示)而
將LBA 211之LPN 213部分映射至LPN之映射資訊221。有時將一LPN之映射資訊(諸如LPN之映射資訊221)稱為一映射項。即,映射141使一LPN與一對應映射項相關聯。在各種實施例中,映射係經由一或多個相關聯查找表,經由一或多個非相關聯查找表,及/或經由一或多項其他技術。
在一些實施例中,SSD控制器100維持用於可能及/或主動在使用中之各LPN之一個映射項。
在一些實施例中,LPN之映射資訊221包含各自讀取單元位址223及讀取單元225之長度。在一些實施例中,儲存一長度及/或一跨度,其等(諸如)藉由將該長度儲存為與該跨度之一位移而編碼(例如在讀取單元之長度225之全部或任何部分中)。在進一步實施例中,使一第一LPN與一第一映射項相關聯,使一第二LPN(不同於該第一LPN,而是涉及具有與該第一LPN所涉及之一邏輯頁面相同之一大小之一邏輯頁面)與一第二映射項相關聯,且該第一映射項之讀取單元之各自長度不同於該第二映射項之讀取單元之各自長度。
在各種實施例中,在相同時間點處,使一第一LPN與一第一映射項相關聯,使一第二LPN(不同於該第一LPN)與一第二映射項相關聯,且該第一映射項之各自讀取單元位址相同於該第二映射項之各自讀取單元位址。在進一步實施例中,將與該第一LPN相關聯之資料及與該第二LPN相關聯之資料兩者儲存於NVM 199中之一相同裝置之一相同實體頁面中。
根據各種實施例,使讀取單元位址223與下列之一或多者相關聯:NVM中之一起始位址;NVM中之一結束位址;前述各者之任何者之一位移;及用於識別與LPN 213相關聯之NVM之一部分之任何其他技術。
圖3繪示在一讀取單元位址處存取一NVM以產生組織為各種讀取
單元之讀取資料(共同具有以讀取單元之量子量測之一長度)之一實施例之選定細節。根據各種實施例,第一讀取單元313為下列之一或多者:在該NVM之一位址空間中具有一最低位址之讀取資料311中之讀取單元之一者;該等讀取單元之一固定者;該等讀取單元之一任意者;該等讀取單元之一可變者;及由任何其他技術選擇之該等讀取單元之一者。在各種實施例中,使SSD控制器100能夠存取NVM 199且藉由讀取不超過由讀取單元之長度225指定之數目之讀取單元而產生讀取資料311。
圖4A繪示作為讀取單元401A之一讀取單元(諸如圖3之讀取單元313或315)之一實施例之選定細節。在各種實施例及/或使用案例中,標頭1 411A至標頭N 419A係連續的,且由該等標頭之各者識別(諸如經由各自位移)之各自資料區域接續於該等標頭之一最後者。該等資料區域共同形成資料位元組421A。依與儲存該等標頭所依之位置順序匹配之一位置順序儲存該等資料區域。例如,將一第一標頭視為處於一讀取單元之開始處,且一第二標頭及一第三標頭接續於該第一標頭。一第一資料區域(由該第一標頭中之一第一位移識別)接續於該第三標頭。一第二資料區域(由該第二標頭中之一第二位移識別)接續於該第一資料區域。類似地,一第三資料區域(由該第三標頭識別)接續於該第二資料區域。
圖4B繪示作為讀取單元401B之一讀取單元(諸如圖3之讀取單元313或315)之另一實施例之選定細節。在各種實施例及/或使用案例中,標頭標記(HM)410B為指示下列連續標頭(標頭1 411B、標頭2 412B...標頭N 419B)之數目之一選用之初始欄位(諸如一單位元組欄位)。資料區域(資料位元組421B、資料位元組422B...資料位元組429B)分別由該等標頭(標頭1 411B、標頭2 412B...標頭N 419B)識別且依與儲存該等標頭所依之位置順序相反之一位置順序儲存。標頭起始
於一讀取單元之開始處,而對應資料區域起始於一讀取單元之結束處。在一些實施例中,依一正向順序(與位置順序匹配之位元組順序)配置一資料區域內之資料位元組(例如資料位元組421B、資料位元組422B...資料位元組429B),而在其他實施例中,依一逆向順序(與位置順序反向之位元組順序)配置該等資料位元組。在一些實施例中,當依一相同位置順序(例如圖4A中所繪示)儲存標頭及資料位元組時,將一標頭標記用於讀取單元中。
在一些實施例中,選用之填充位元組431A(或431B)係根據與一特定LPN相關聯之資料之粒度。例如,在一些實施例中,若在儲存與除一最後標頭之外之標頭1 411A至標頭N 419A(或標頭1 411B、標頭2 412B...標頭N 419B)之全部標頭相關聯之資料之後,資料位元組421A(或全部位元組421B、資料位元組422B...資料位元組429B)具有小於固定量(諸如8個位元組)之剩餘空間,則與該最後標頭相關聯之一LPN之資料起始於後一讀取單元中。在進一步實施例中,該最後標頭中之一特定位移值(例如全部為1)指示:與該最後標頭相關聯之該LPN之該資料起始於該後一讀取單元中。
圖5繪示具有某數目個欄位之一標頭(諸如圖4A之標頭1 411A至標頭N 419A或圖4B之標頭1 411B至標頭N 419B之任何者)之一實施例之選定細節。在一些實施例中,標頭具有固定長度(例如,各標頭之長度具有相同數目個位元組)。標頭501包含欄位類型511、最後指示符513、旗標515、LPN 517、長度519及位移521。欄位類型識別資料位元組之一類別。例如,欄位類型指示:該類別之資料位元組為主機資料(例如邏輯頁面資料)或系統資料(例如映射資訊或檢查點資訊)之一者。最後欄位指示:標頭為資料位元組之前之最後標頭。在具有一標頭標記之一些實施例中,視情況省略最後欄位。LPN欄位為與標頭相關聯之LPN。LPN欄位能夠剖析標頭以藉由(例如)搜尋具有與一特定
LPN匹配之一LPN欄位之一標頭而判定與該特定LPN相關聯之標頭之一特定者。長度欄位為資料位元組之長度(以位元組為單位)(例如與標頭501相關聯之資料位元組421A中具有之資料之位元組數)。在一些實施例中,根據一特定粒度(例如8位元組粒度)而使位移欄位中之一位移取整。
在各種實施例中,將與一特定LPN相關聯之部分或全部資訊儲存於與該特定LPN相關聯之一映射項、與該特定LPN相關聯之一標頭、或兩者中。例如,在一些實施例中,將長度519之部分或全部儲存於一映射項中而非一標頭中。
圖6繪示邏輯分層及/或區段中所管理之多個NVM裝置(例如一或多個快閃晶粒及/或快閃晶片)之區塊、頁面及讀取單元之一實施例之選定細節。管理功能包含讀取、回收、擦除、程式化/寫入及其他管理功能之任何一或多者。有時將該等邏輯分層及/或區段稱為R區塊。該圖繪示具有66個快閃晶粒之一實施例。圖中明確繪示該等快閃晶粒之三者(快閃晶粒610.65、610.1及610.0)且隱含繪示該等快閃晶粒之63者(610.64...610.2)。
快閃晶粒之各者(諸如快閃晶粒610.65...610.1及610.0之任何者)提供組織為區塊之儲存器(諸如快閃晶粒610.65之區塊610.65BB...610.65B1及610.65B0、快閃晶粒610.0之區塊610.0BB...610.0B1及610.0B0,等等)。該等區塊繼而包含頁面(諸如區塊610.65B0之頁面610.65PP...610.65P1及610.65P0、區塊610.0B0之頁面610.0PP...610.0P1及610.0P0,等等)。該等頁面繼而包含讀取單元(諸如頁面610.65P0之讀取單元610.65RR...610.65R1及610.65R0、頁面610.0P0之讀取單元610.0RR...610.0R1及610.0R0,等等)。
在一些實施例中,各快閃晶粒包含整數個區塊(例如N個區塊),且一區塊為擦除之一最小量子。在一些實施例中,各區塊包含整數個
頁面,且一頁面為寫入之一最小量子。根據各種實施例,描述下列之一或多者:一讀取單元為讀取及錯誤校正之一最小量子;各頁面包含整數個讀取單元;兩個或兩個以上頁面之一相關聯群組包含整數個讀取單元;及讀取單元視情況及/或選擇性跨越頁面邊界。
在各種實施例中,在R區塊之單元中執行各種NVM管理功能(例如讀取、回收、擦除及/或程式化/寫入)。將一R區塊例示為橫跨(例如)一快閃記憶體之各種晶粒(例如全部晶粒、除完全或部分發生錯誤之晶粒之外之全部晶粒、及/或晶粒之一或多個選定子集)之一邏輯分層或區段。例如,在具有R個快閃晶粒(各快閃晶粒具有N個區塊)之一快閃記憶體中,對於總共N個R區塊,各R區塊為來自匯總在一起之該等快閃晶粒之各者之第i個區塊。繼續該實例,若該R個快閃晶粒之一者發生錯誤,則對於總共N個R區塊,各R區塊為來自除該錯誤快閃晶粒之外之該等快閃晶粒之各者之第i個區塊,各R區塊具有比發生錯誤之前少一個之區塊。對於另一實例,在具有R個快閃晶粒之一快閃記憶體中,對於總共N/2個R區塊,各R區塊為來自該等快閃晶粒之各者之第i個區塊及第(i+1)個區塊。對於又一實例,在具有複數個雙平面裝置之一快閃記憶體中,各R區塊為來自該等雙平面裝置之各者之第i個偶數區塊及第i個奇數區塊。對於又一實例,在具有複數個多平面裝置之一快閃記憶體中,各R區塊包含經選擇以使由該等多平面裝置提供之平行度最大化(例如在程式化期間)之區塊。應注意,在雙平面裝置之R區塊之前面所提及實例中,該等雙平面裝置為多平面裝置之實例,且該等R區塊(其等為來自該等雙平面裝置之各者之第i個偶數區塊及第i個奇數區塊)為包含經選擇以使平行度最大化之區塊之R區塊之一實例。對於一最後實例,在具有R個快閃晶粒之一快閃記憶體中,一R區塊為k個非連續區塊,諸如來自該R個快閃晶粒之各者之區塊i1、i2...ik。
在具有在區塊對或其他相關聯群組中被視為形成一R區塊之部分之區塊之各種實施例中,亦將來自該等區塊之一相關聯群組之各區塊之各自頁面視為至少用於寫入以形成一更大多區塊頁面之一單元。例如,繼續前述雙平面實例,將偶數區塊之一特定者之一第一頁面及奇數區塊之一相關聯者之一第一頁面視為用於寫入之一單元且視情況及/或選擇性視為用於讀取之一單元。類似地,將該特定偶數區塊之一第二頁面及該相關聯奇數區塊之一第二頁面視為一單元。根據各種實施例,如本文所使用,NVM之一頁面意指下列之一或多者:NVM之一單一頁面;NVM之一多區塊頁面;用於寫入之NVM之一多區塊頁面,其視情況及/或選擇性被視為用於讀取之一或多個個別頁面;及NVM之任何其他分組或相關聯頁面。
該圖繪示複數個繪示性R區塊,圖中明確繪示該等R區塊之三者(660.0、660.1及660.R)。各繪示性R區塊為來自匯總在一起之快閃晶粒之各者之第i個區塊。例如,R區塊660.0為來自快閃晶粒610.65之區塊610.65B0、來自快閃晶粒610.64之區塊0(圖中隱含繪示)...來自快閃晶粒610.1之區塊610.1B0及來自快閃晶粒610.0之區塊610.0B0。由於每快閃晶粒具有N個區塊,因此總共有N個R區塊(R區塊660.R...R區塊660.1及R區塊660.0)。
一R區塊之另一實例為來自匯總在一起之快閃晶粒之各者之第i個區塊及第(i+1)個區塊(例如來自快閃晶粒610.65之區塊610.65B0及610.65B1、來自快閃晶粒610.64(圖中隱含繪示)之區塊0及1...來自快閃晶粒610.1之區塊610.1B0及610.1B1及來自快閃晶粒610.0之區塊610.0B0及610.0B1)。若各快閃晶粒中具有N個區塊,則因此具有N/2個R區塊。一R區塊之又一實例為來自複數個雙平面裝置之各者之第i個偶數區塊及第i個奇數區塊。可考量用於管理之快閃晶粒區塊(作為R區塊)之其他配置,其包含虛擬區塊位址與實體區塊位址之間之映射
以確保:R區塊具有來自各晶粒之一區塊,即使一些區塊無法實行。在各種實施例中,各快閃晶粒中之N個區塊之部分用作為備用件,使得虛擬區塊位址與實體區塊位址之間之映射具有備用(否則閒置)區塊以替換R區塊中之區塊之缺陷者。
在各種實施例中,根據一順序(諸如一「讀取單元優先」順序或一「頁面優先」順序)而執行快閃晶粒中之資訊之讀取及/或寫入。圖中所繪示之讀取單元之一讀取單元優先順序之一實例開始於讀取單元610.0R0,接著為610.1R0...610.65R0、610.0R1、610.1R1...610.65R1等等,結束於610.65RR。圖中所繪示之讀取單元之一頁面優先順序之一實例開始於讀取單元610.0R0,接著為610.0R1...610.0RR、610.1R0、610.1R1...610.1RR...610.65R0、610.65R1等等,結束於610.65RR。
在各種實施例中,一R區塊內之資料之一寫入順序及/或一分割順序為頁面(例如最低至最高)優先,橫跨全部裝置(例如最低編碼裝置至最高編碼裝置,如由分割方向600概念性所提出),接著為下一最高頁面(橫跨全部裝置)等等,繼續至R區塊之最後頁面。具體言之,相對於R區塊660.0,一實例順序開始於頁面610.0P0(快閃晶粒610.0之第一區塊中之第一頁面),接著為頁面610.1P0(快閃晶粒610.1之第一區塊中之第一頁面)等等,繼續至頁面610.65P0(快閃晶粒610.65之第一區塊中之第一頁面,及R區塊660.0之最後區塊中之第一頁面)。該實例順序在頁面610.0P1(快閃晶粒610.0之第一區塊中之第二頁面)中繼續,接著為頁面610.1P1(快閃晶粒610.1之第一區塊中之第二頁面)等等,繼續至頁面610.65P1(快閃晶粒610.65之第一區塊中之第二頁面)。該實例依一相同順序繼續。該實例順序包括頁面610.0PP(快閃晶粒610.0之第一區塊中之最後頁面),接著為頁面610.1PP(快閃晶粒610.1之第一區塊中之最後頁面)等等,結束於頁面610.65PP(快閃晶粒
610.65之第一區塊中之最後頁面,及R區塊660.0之最後區塊中之最後頁面)。
在各種實施例中,快閃晶粒610.65...610.1及610.0對應於圖1A之一或多個個別快閃晶粒194之各自者。在一些實施例中,快閃晶粒610.65...610.1及610.0為小於NVM 199之全部之一部分。例如,在各種實施例中,橫跨快閃晶粒之多個群組而獨立地分割資料,及快閃晶粒之該等群組之各者可獨立存取。
[較高層級冗餘技術]
圖7繪示較高層級冗餘技術之各種實施例之選定細節。(若干)快閃裝置720包含64個快閃晶粒(快閃晶粒610.63、610.62、610.61...610.0,如圖6中明確及隱含所繪示)且經由(若干)介面通道730而通信。(若干)額外快閃裝置740包含高達兩個快閃晶粒(快閃晶粒610.65及610.64,如圖6中明確及隱含所繪示)且經由(若干)額外介面通道750而通信。快閃晶粒提供較高層級冗餘資訊之儲存及一儲存子系統(諸如一SSD中之NVM)中之資料儲存(例如使用者資料及/或使用者自由空間)。(在冗餘資訊及資料儲存之背景中,「使用者資料」之實例包含除儲存於快閃記憶體上以用於稍後擷取之冗餘資訊之外之全部資料,諸如作業系統資料、應用程式資料、SSD管理資料等等。)較高層級冗餘能夠(例如)修復一或多個快閃晶粒之一或多個部分之間歇性或永久性錯誤,諸如修復一錯誤以給一讀取操作提供錯誤校正資料(例如經由較低層級EEC功能)或修復錯誤以適當完成一寫入操作。
例如,在一獨立矽元素冗餘陣列(RASIE)之一背景中操作各快閃晶粒(或替代地,各區塊或各區塊內之各頁面)。若在一特定快閃晶粒中偵測到一錯誤(例如,歸因於該特定晶粒之一區塊之一部分之一ECC不可校正讀取錯誤),則作為回應,儲存於快閃晶粒之其他者中之冗餘資訊用於判定已由該特定晶粒提供之資訊。在一些實施例及/
或使用案例中,儲存足夠冗餘資訊以能夠修復一快閃晶粒內之一錯誤(在一單一操作期間)。在一些實施例中,能夠修復一單一錯誤之一模式中之操作包含分配及管理等效於用於較高層級冗餘資訊之一快閃晶粒之空間,且被稱為「RASIE-1」。在一些實施例中,能夠修復兩個錯誤之一模式中之操作包含分配及管理等效於用於較高層級冗餘資訊之兩個快閃晶粒之空間,且被稱為「RASIE-2」。在一些實施例中,能夠修復三個錯誤之一模式中之操作包含分配及管理等效於用於較高層級冗餘資訊之三個快閃晶粒之空間,且被稱為「RASIE-3」。RASIE模式(諸如RASIE-1、RASIE-2及RASIE-3)為RASIE模式之各自實例,此係因為等效於一或多個整體快閃晶粒之整數倍(例如分別為一個、兩個及三個整體快閃晶粒)之儲存容量專用於較高層級冗餘資訊。
在一些實施例及/或使用案例中,管理晶粒級錯誤為一目的,且執行在晶粒中散佈資訊。例如,將較高層級冗餘資訊儲存於僅特定分配給較高層級冗餘資訊之一或多個晶粒中。在一些實施例及/或使用案例中,管理區塊級錯誤為一目的,且執行在一晶粒內之區塊中散佈資訊。例如,將較高層級冗餘資訊儲存於分配給較高層級冗餘資訊之一或多個區塊中,該分配無關於該等區塊為何種特定區塊之部分。在一些實施例及/或使用案例中,管理特定實體級錯誤包含:散佈資訊,使得不超過N個元件(例如RASIE-1之一個元件及RASIE-2之兩個元件)位於特定實體之任何者中。實體之實例包含一(封裝)裝置、一晶粒、一R區塊、一區塊、一R頁面(本文別處所描述)、一頁面、與一字線相關聯之胞及前述之一或多者。
較高層級冗餘資訊根據寫入至快閃晶粒之(使用者)資料而計算及寫入,且因此可用於在偵測到一錯誤時提供資訊。在各種實施例中,在寫入與較高層級冗餘資訊相關聯之(使用者)資料之前,在寫入與較高層級冗餘資訊相關聯之(使用者)資料之後,或依相對於與較高層級
冗餘資訊相關聯之(使用者)資料之寫入之非特定時序,將較高層級冗餘資訊寫入至快閃晶粒。
該圖繪示RASIE操作模式之各種實施例,如下表中所概述。
更具體言之,在RASIE-1模式中,將等效於一個晶粒之空間分配給較高層級冗餘資訊。在RASIE-1之模式1-0中,未使用(若干)額外快閃裝置740,此係因為較高層級冗餘資訊儲存於(若干)快閃裝置720之一個晶粒(例如快閃晶粒610.63)中以留下63個晶粒(快閃晶粒610.62...610.0)可用於資料儲存(例如使用者資料及/或使用者自由空間)。在RASIE-1之模式1-1中,使用(若干)額外快閃裝置740之一個晶粒(例如快閃晶粒610.64)以留下全部(若干)快閃裝置720(64個晶粒)可用於資料儲存。
在RASIE-2模式中,將等效於兩個晶粒之空間分配給較高層級冗餘資訊。在RASIE-2之模式2-0中,未使用(若干)額外快閃裝置740,此係因為較高層級冗餘資訊儲存於(若干)快閃裝置720之兩個晶粒(例如快閃晶粒610.63及快閃晶粒610.62)中以留下62個晶粒(快閃晶粒
610.61...610.0)可用於資料儲存。在RASIE-2之模式2-1中,使用(若干)額外快閃裝置740之一個晶粒(例如快閃晶粒610.64),此係因為較高層級冗餘資訊部分儲存於(若干)快閃裝置720之一個晶粒(例如快閃晶粒610.63)中以留下63個晶粒(快閃晶粒610.62...610.0)可用於資料儲存。在RASIE-2之模式2-2中,使用(若干)額外快閃裝置740之兩個晶粒(例如快閃晶粒610.65及快閃晶粒610.64)以留下全部(若干)快閃裝置720(64個晶粒)可用於資料儲存。
在一些實施例中,未用於全部使用案例中之晶粒係空缺的。例如,在僅可在RASIE 2-0模式及RASIE 1-0模式中操作(且不可在其他RASIE模式中操作)之一系統中,(若干)額外快閃裝置740係空缺的。
在一些實施例中,將較高層級冗餘資訊全部儲存於「專用」晶粒(例如RASIE-1之模式1-0中之快閃晶粒610.63及RASIE-2之模式2-2中之快閃晶粒610.64)中。在其他實施例中,將較高層級冗餘資訊儲存於晶粒之任何者中,因此,例如在RASIE-1之模式1-0中,快閃晶粒610.62用於較高層級冗餘資訊,而快閃晶粒610.63及快閃晶粒610.61...610.0用於資料儲存。在一些實施例及/或使用案例中,將較高層級冗餘資訊儲存於隨時間流逝而不同之晶粒(及/或其部分)中,因此,例如在一第一時間段內,一第一快閃晶粒保存較高層級冗餘資訊,而在一第二時間段內,一第二快閃晶粒保存較高層級冗餘資訊。
在各種實施例中,存在複數個RASIE 1-0模式(及複數個RASIE 2-0模式),其取決於有多少快閃晶粒可用。例如,在一第一RASIE 1-0模式(如上表中所繪示)中,快閃晶粒610.63儲存較高層級冗餘資訊,且快閃晶粒610.62...610.0可用於資料儲存。在一第二RASIE 1-0模式中,快閃晶粒610.63不再可用,快閃晶粒610.62儲存較高層級冗餘資訊,且快閃晶粒610.61...610.0可用於資料儲存以減少一個晶粒之資料儲存之可用量。有時將其中先前可用於資料儲存之一晶粒(或其任何
部分)歸因於該晶粒(或該等部分)用於較高層級冗餘資訊而無法再用於資料儲存之RASIE模式稱為減少容量之RASIE模式。
在一些實施例中,使用相同於及/或類似於由較高層級冗餘資訊保護之使用者資料之一較低層級冗餘及/或錯誤校正編碼方案來儲存該較高層級冗餘資訊。使用一較低層級冗餘及/或錯誤校正方法來保護較高層級冗餘資訊能夠以相同於及/或類似於使用者資料中之一不可校正之較低層級錯誤之判定方式之一方式判定較高層級冗餘資訊中是否存在一不可校正錯誤。
在一些實施例中,將較高層級冗餘資訊儲存於用於資料之不同部分之不同晶粒中。例如,在其中管理R區塊中之快閃晶粒之一些實施例中,將較高層級冗餘資訊儲存於用於不同R區塊之不同快閃晶粒中。例如,將包含快閃晶粒610.0之區塊0之一R區塊之較高層級冗餘資訊儲存於快閃晶粒610.0中,同時將包含快閃晶粒610.0之區塊1之一R區塊之較高層級冗餘資訊儲存於快閃晶粒610.1中,等等。在一些實施例(諸如其中管理R區塊中之快閃晶粒之一些實施例)中,在已知及/或寫入較高層級冗餘資訊所取決之資料之後寫入該較高層級冗餘資訊。
在一些使用案例中,一NVM元件之一或多個部分(例如一裝置之一區塊,諸如圖6之快閃晶粒610.0之區塊610.0BB)不可操作或在操作期間變為不可操作。在一些實施例中,經由虛擬區塊位址及實體區塊位址(例如經由圖1A之映射141及/或表143所執行之處理)而標出該等不可操作部分。替代地,跳過該等不可操作部分(而非明確標出)。在基於R區塊之一些實施例中,該跳過導致該等R區塊之部分具有不同數目個區塊。例如,若區塊610.0B0有缺陷且不可用,則R區塊660.0比R區塊660.1少一個區塊。將較高層級冗餘資訊寫入至(例如)為各R區塊之最後區塊之一(每R區塊)可變位置中。
在各種實施例中,圖7之一或多個元件對應於圖1A之一或多個元件。例如,(若干)快閃裝置720及(若干)額外快閃裝置740共同對應於NVM 199,且(若干)介面通道730及(若干)額外介面通道750共同對應於裝置介面190。對於另一實例,快閃晶粒610.65...610.0共同對應於快閃晶粒194之例項。對於又一實例,(若干)快閃裝置720及/或(若干)額外快閃裝置740之快閃裝置之一或多者對應於快閃裝置192之例項之一或多者。在各種實施例中,圖1A之一或多個元件根據本文所描述之RASIE操作模式而管理較高層級冗餘資訊及/或修復至少部分地基於該較高層級冗餘資訊之使用者資料。例如,CPU 171之軟體執行能力之一部分用於根據各種RASIE操作模式而管理較高層級冗餘資訊之計算。對於另一實例,資料處理121及/或ECC-X 135包含專用於及/或指定用於根據各種RASIE操作模式而計算較高層級冗餘資訊及/或修復使用者資料之硬體元件。對於又一實例,ECC 161偵測一快閃晶粒之一部分之一ECC不可校正之(較低層級)讀取錯誤,且ECC-X 135偵測一RASIE(較高層級)讀取錯誤及/或實現其之校正。
在各種實施例中,(若干)介面通道730分別具有1個、4個、8個或16個通道,且(若干)額外介面通道750分別具有1個或2個通道。在各種實施例中,(若干)快閃裝置720被實施為1個、2個、4個、8個或16個裝置,其等各分別具有64個、32個、16個、8個及4個快閃晶粒。在各種實施例中,(若干)額外快閃裝置740被實施為具有一或兩個晶粒之一個裝置或各具有一個晶粒之兩個裝置。在一些實施例中,(若干)額外快閃裝置740之快閃晶粒被實施於亦實施(若干)快閃裝置720之快閃晶粒之裝置中。例如,一個快閃裝置實施66個快閃晶粒(快閃晶粒610.65...610.0)。對於另一實例,兩個快閃裝置各實施(例如)一第一快閃裝置中之33個快閃晶粒(快閃晶粒610.65...610.33)及一第二快閃裝置中之33個快閃晶粒(快閃晶粒610.32...610.0)。可考量快閃晶粒及快
閃裝置之其他配置。在具有實施於亦實施(若干)快閃裝置720之快閃晶粒之裝置中之(若干)額外快閃裝置740之一些實施例中,快閃晶粒經由共用介面通道或替代地經由專用於快閃晶粒之特定者(或特定組)之介面通道而通信。儘管已繪示具有特定數目個快閃晶粒(分別為2個及64個)之(若干)快閃裝置720及(若干)額外快閃裝置740,但可考量其他實施,諸如具有2個、4個、8個、16個、32個或128個快閃晶粒之(若干)快閃裝置720及/或具有0個、1個或4個快閃晶粒之(若干)額外快閃裝置740。
圖8繪示使用RAISE之動態較高層級冗餘模式管理(諸如在由圖6及/或圖7所繪示之各種實施例實現之RASIE模式之間動態切換)之一實施例之選定細節。在一些實施例及/或使用案例中,提供一從容退化形式,其中一儲存子系統(例如一SSD)自第一較高層級冗餘模式中之操作動態轉變至一第二較高層級冗餘模式中之操作。該轉變係回應於偵測到一錯誤(諸如一整體快閃晶粒或其之一或多個部分之一永久性或間歇性失效)或相對於該錯誤之一操作(諸如一讀取或寫入操作)。根據各種實施例,涉及下列之一或多者:使該SSD之全域發生該轉變;對該SSD之一或多個子集執行該轉變;及對該SSD之一或多個R區塊、區塊及/或頁面執行該轉變。例如,若儲存RASIE-2資訊之NVM裝置之一者之一特定區塊在程式化期間發生錯誤,則含有該特定(錯誤)區塊之R區塊之隨後操作轉變至一不同較高層級冗餘模式(例如一RASIE-1模式),然而,該SSD中之其他R區塊未受影響且繼續在RASIE-2模式中操作。
參考圖8,處理開始於根據一第一較高層級冗餘模式而將較高層級冗餘資訊及資料儲存(例如使用者資料及/或使用者自由空間)配置於快閃晶粒中(在第一較高層級冗餘模式中操作802)。接著,流程前進至判定是否已偵測到一錯誤(是否偵測到錯誤?803),諸如一較低層
級之不可校正讀取錯誤或一寫入/程式化錯誤。若未偵測到錯誤,則流程返回至繼續在第一較高層級冗餘模式中操作。若已偵測到一錯誤,則流程前進至自第一較高層級冗餘模式中之操作切換至一第二較高層級冗餘模式中之操作(動態轉變操作模式809)。
該切換係藉由(視情況)減少資料儲存之可用空間(減少自由空間804)以考量錯誤而開始。若第二較高層級冗餘模式使用比第一較高層級冗餘模式少很多之較高層級冗餘資訊,則省略減少可用空間。該切換藉由根據第二較高層級冗餘模式重新組織資料儲存(重新配置資料儲存805)而繼續。該重新組織包含:視情況移動來自快閃晶粒之全部使用者資料及/或使用者自由空間,其中錯誤發生於快閃晶粒之另一者上(在一些實施例中,藉由操縱指標及/或其他資料結構元素而完成使用者自由空間移動)。該切換係藉由下列操作而進一步繼續(修復/儲存錯誤使用者資料806):經由第一較高層級冗餘模式之較高層級冗餘資訊而選擇性恢復(若可能)儲存於其中發生錯誤之快閃晶粒中之任何使用者資料;及根據第二較高層級冗餘模式而將該恢復使用者資料寫入至快閃晶粒之另一者。若該錯誤為一寫入/程式化錯誤,則省略該恢復。該切換係藉由視情況計算較高層級冗餘資訊且根據第二較高層級冗餘模式將較高層級冗餘資訊寫入至快閃晶粒而進一步繼續(判定/儲存經修正之較高層級冗餘資訊807)。若第二較高層級冗餘模式可與先前歸因於在第一較高層級冗餘模式中操作而處於適當位置之較高層級冗餘資訊一起操作,則省略該計算及該寫入。接著,開始在第二較高層級冗餘模式中操作(在第二較高層級冗餘模式中操作808)。
錯誤偵測(是否偵測到錯誤?803)係經由下列之一或多者:較低層級冗餘及/或錯誤校正(例如根據一或多項ECC技術);較高層級冗餘及/或錯誤校正(例如根據一或多項RASIE技術);及由快閃晶粒之一或多者或快閃晶粒之部分報告之錯誤狀態。例如,一特定快閃晶粒之一
特定部分(例如R區塊、區塊、R頁面、頁面、讀取單元或與一字線相關聯之胞)內之讀取之大於臨限數目個較低層級錯誤校正視情況及/或有條件地導致該特定快閃晶粒(或該特定部分)被視為發生錯誤且執行一較高層級冗餘模式切換,使得該錯誤快閃晶粒(或部分)不再被使用。對於另一實例,若一較高層級錯誤校正發生錯誤,則該快閃晶粒(或其部分)之一適當者被視為發生錯誤且執行一較高層級冗餘模式切換,使得該錯誤快閃晶粒(或部分)不再被使用。對於又一實例,若一快閃晶粒返回至一程式錯誤狀態(指示一寫入操作不成功),則該快閃晶粒之一適當者之一適當區塊被視為發生錯誤,且視情況及/或有條件地執行一較高層級冗餘模式切換,使得該錯誤快閃晶粒(或替代地其之一部分)不再被使用。
在一些實施例中,藉由經由虛擬區塊位址及實體區塊位址(例如經由圖1A之映射141及/或表143所執行之處理)重新映射而替換一錯誤區塊。映射來自一組備用區塊之一備用區塊以代替該錯誤區塊。將寫入於該錯誤區塊中之任何內容複製至該替換區塊,且自該錯誤區塊中發生錯誤之位置起在該備用區塊中繼續進行寫入。
在一些實施例中,跳過(而非明確地重新映射)一錯誤區塊以導致一「孔」,當接著擦除該孔所處之R區塊(準備重新寫入)時,該孔視情況及/或有條件地導致一較高層級冗餘模式切換。若該孔位於用於資料儲存之一位置中,則不進行切換且該孔繼續存在。若該孔位於用於較高層級冗餘資訊之一位置中,則將該較高層級冗餘資訊儲存於另一位置中且視情況切換較高層級冗餘模式。
在一些實施例及/或使用案例中,儲存於其中發生錯誤之快閃晶粒中之使用者資料之恢復係不可能的。例如,若錯誤係歸因於經由較高層級冗餘及/或錯誤校正所偵測之一些類型之錯誤及/或由快閃晶粒之一或多者或快閃晶粒之部分報告之一些類型之錯誤狀態,則丟失一
些使用者資料。
在一些實施例中,在(例如一SSD控制器)回應於複數個錯誤而在較高層級冗餘模式之間動態轉變之一背景中執行圖8之處理。具體言之,該SSD控制器開始在一第一較高層級冗餘模式中操作,且回應於一第一錯誤而動態轉變至一第二較高層級冗餘模式,且隨後回應於一第二錯誤而自該第二較高層級冗餘模式動態轉變至一第三較高層級冗餘模式,等等。例如,一SSD控制器根據一RASIE-2之模式2-2而操作各種快閃晶粒,且回應於一第一錯誤而動態轉變待根據一RASIE-2之模式2-1之操作。隨後,該SSD控制器回應於一第二錯誤而動態轉變待根據一RASIE-2之模式2-0之操作。隨後,該SSD控制器進一步回應於一第三錯誤而動態轉變待根據一RASIE-1之減小容量模式1-0之操作(該減小容量模式1-0類似於RASIE-1之模式1-0,除用於較高層級冗餘資訊之1個快閃晶粒及用於資料儲存之62個快閃晶粒之外)。
作為一特定實例,考量耦合至圖7之元件之一SSD控制器(諸如圖1A之SSD控制器100),其最初在RASIE-2之模式2-2中操作(例如快閃晶粒610.65及快閃晶粒610.64中之較高層級冗餘資訊,及快閃晶粒610.63...610.0中之資料儲存)以對應於在第一較高層級冗餘模式中操作。接著,執行快閃晶粒之一或多者之一讀取或替代地一寫入。在快閃晶粒之一特定者之一部分(例如用於使用者資料及/或使用者自由空間之快閃晶粒610.62之一頁面)中,該讀取導致一不可校正之(較低層級)ECC錯誤,或替代地,該寫入不成功。作為回應,該SSD控制器自RASIE-2之模式2-2中之操作動態切換至RASIE-2之模式2-1中之操作以不再使用快閃晶粒610.62之任何者。當RASIE-2之模式2-1中之操作提供用於資料儲存之63個晶粒(對RASIE-2之模式2-2中之64個晶粒)時,將可用於資料儲存之空間自64個晶粒減少至63個晶粒,且相應地移動使用者資料及/或使用者自由空間。例如,根據使用者自由空間,將
來自快閃晶粒610.62之全部使用者資料移動至快閃晶粒610.63及快閃晶粒610.61...610.0之部分。基於快閃晶粒610.65及/或快閃晶粒610.64中之較高層級冗餘資訊而修復具有不可校正ECC錯誤之頁面中之任何使用者資料。計算基於快閃晶粒610.63及快閃晶粒610.61...610.0中之資料儲存且根據RASIE-2之模式2-1之較高層級冗餘資訊且將其儲存於快閃晶粒610.65及/或快閃晶粒610.64中。接著,該SSD控制器在RASIE-2之模式2-1中操作(快閃晶粒610.65及快閃晶粒610.64中之較高層級冗餘資訊,及快閃晶粒610.63及快閃晶粒610.61...610.0中之資料儲存)。
在各種實施例中,由圖1A之一或多個元件(或其部分)完全或部分地執行圖8之一或多個元件之處理或執行使圖1A之一或多個元件(或其部分)與圖8之一或多個元件相關。例如,CPU 171之軟體執行能力之一部分用於(諸如)藉由引導減少可用於資料儲存之空間或引導重新組織資料儲存而管理較高層級冗餘模式之間之動態轉變。對於另一實例,資料處理121及/或ECC-X 135包含專用於及/或特定用於根據一「目標」冗餘模式而計算較高層級冗餘資訊之硬體元件。對於又一實例,ECC 161實施較低層級(例如ECC)錯誤校正及不可校正錯誤之偵測,同時ECC-X 135實施較高層級(例如RASIE)錯誤校正及不可校正錯誤及/或記憶體元件錯誤之偵測。對於另一實例,由ECC-X 135之一或多個部分執行與(較高層級)冗餘模式之間之動態轉變相關之功能性之全部或任何部分。
[較高層級冗餘及自適應較低層級碼率]
在一些實施例及/或使用案例中,較低層級冗餘及/或錯誤校正使用一自適應碼率(例如使用一可變碼率之一自適應ECC技術)。例如,依一第一碼率管理一第一讀取單元,該第一碼率提供比依一第二碼率管理之一第二讀取單元相對更多之可用資料位元。在具有使用一可變
碼率之較低層級冗餘及/或錯誤校正之一些實施例及/或使用案例中,將較高層級冗餘資訊儲存於使用較低層級冗餘及/或錯誤校正來管理之獨立矽元素之部分(諸如快閃晶粒之部分)中,該較低層級冗餘及/或錯誤校正相對於由較高層級冗餘資訊保護之資料儲存而提供相對更多之可用資料位元或最多可用資料位元。在各種實施例及/或使用案例中,其中儲存較高層級冗餘資訊之部分基於一每R區塊、基於一每晶粒、隨時間流逝動態地或其等之任何組合而變動。在各種實施例中,選擇一或多個晶粒、R區塊、區塊及/或頁面以基於具有相對於較低層級錯誤校正碼率之最多可用資料而儲存較高層級冗餘資料。
例如,將較高層級冗餘資訊儲存於基於一每R區塊之變動位置(諸如區塊位置)處,該等位置為具有基於較低層級錯誤校正碼率之最多可用資料之位置。在一任意實例中,考量圖7之背景中之一RASIE-2操作模式案例,其中將66個快閃晶粒之集合視為各具有單區塊高度之高達M個R區塊之一邏輯「堆疊」,其中M為每快閃晶粒之區塊數。(在概念最簡單之情況中,該堆疊中之各R區塊由來自各晶粒之相同實體區塊數目組成,但在至少一些實施例中,解除此約束以容納錯誤區塊。在其他實施例中,維持該約束,但容納對應於該等錯誤區塊之「孔」。)因此,各R區塊具有對應於來自快閃晶粒610.0至快閃晶粒610.65之各者之一區塊的高達66個區塊。(在圖7中,儘管僅明確列舉610.0至610.65範圍內之一些快閃晶粒,但藉由使用省略號而理解隱含繪示此範圍內之全部快閃晶粒。)將較高層級冗餘資訊寫入至具有基於較低層級錯誤校正碼率之最多可用資料之各R區塊之任何一個區塊中。若(例如)在一第一R區塊中,對應於快閃晶粒610.15及610.49之區塊出現具有基於較低層級錯誤校正碼率之最多可用資料,則將較高層級冗餘資訊寫入至該等區塊(對應於快閃晶粒610.15及610.49)中。然而,若在一第二R區塊中,對應於快閃晶粒610.9及610.35之區塊出現
具有基於較低層級錯誤校正碼率之最多可用資料,則將較高層級冗餘資訊寫入至該等區塊(對應於快閃晶粒610.9及610.35)中。在一些實施例中,在已知一R區塊中之全部其他資料之後寫入較高層級冗餘資料。
圖9繪示讀取單元(911、931...951、971)之一實施例,該等讀取單元具有由儲存於該等讀取單元之一或多者中之較高層級冗餘資訊保護之自適應(例如隨時間流逝及/或因位置而不同及/或變動)碼率之較低層級冗餘資訊。該等讀取單元之各者具有經啟用及/或經分配以含有使用者資料(911.U、931.U...951.U、971.U)之一部分、及經啟用及/或經分配以含有較低層級冗餘資訊之一剩餘部分,諸如作為較低層級ECC(911.E、931.E...951.E、971.E)之一ECC碼之檢查位元。
在圖中,垂直尺寸按相對比例繪製且指示相對大小。因此,讀取單元911及951具有一相同第一大小(在一些實施例中,全部讀取單元具有用於全部NVM裝置之全部區塊之一相同大小),較低層級ECC部分931.E及951.E具有一相同第二大小,且較低層級ECC部分911.E及971.E具有一相同第三大小。讀取單元931大於讀取單元911及951,讀取單元911及951繼而大於讀取單元971。使用者資料部分931.U大於使用者資料部分951.U。使用者資料部分951.U大於使用者資料部分911.U。較低層級ECC部分951.U小於較低層級ECC部分911.E。
如圖中所繪示,各自讀取單元具有各自大小(例如依據NVM之各自區塊)以實現如各自區塊中所使用之變動較低層級碼率。更具體言之,讀取單元931及951具有相同數量之較低層級冗餘資訊(931.E及951.E具有一相同大小),但讀取單元931之一較低層級碼率高於讀取單元951之一較低層級碼率,此係因為讀取單元931含有比讀取單元951(其含有使用者資料951.U)多之使用者資料(931.U)。
如圖中所繪示,各自讀取單元具有使用者資料之各自大小以在
具有一相同大小之兩個或兩個以上讀取單元之各者中實現使用者資料之各種大小。例如,使用者資料之一大小經變動以改變一特定讀取單元中所使用之一較低層級碼率。更具體言之,讀取單元951及911具有一相同大小,但具有各自不同數量之使用者資料(951.U及911.U),且因此具有各自不同數量之較低層級冗餘資訊(951.E及911.E)以使讀取單元951具有比讀取單元911高之一較低層級碼率。
在一些實施例及/或使用案例中,變動及/或改變一較低層級碼率能夠有利地提供足夠數量之較低層級ECC資訊以達成較低層級錯誤校正要求,同時使使用者資料之數量最小化。
在其中讀取單元中具有變動數量之使用者資料之一些實施例中,將較高層級冗餘資訊儲存於具有最大數量之使用者資料之讀取單元之一或多者中。例如,在圖9中,使用一RASIE-1模式,將較高層級冗餘資訊儲存於使用者資料931.U中,及使用一RASIE-2模式,將較高層級冗餘資訊儲存於使用者資料931.U及使用者資料951.U中。將較高層級冗餘資訊儲存於具有最大數量之使用者資料之讀取單元(由較高層級冗餘資訊保護之讀取單元中之一)中確保:存在足夠之較高層級冗餘資訊以保護全部其他讀取單元中之使用者資料。
根據各種實施例,一或多項技術用於判定由較高層級冗餘資訊保護之某數目個讀取單元中之一或多個讀取單元之何者用於儲存較高層級冗餘資訊。在一第一實例中,使用具有最大數量之使用者資料之最遲寫入之一個(針對RASIE-1)或兩個(針對RASIE-2)讀取單元。在一第二實例中,使用具有最大數量之使用者資料之最早寫入之一個(針對RASIE-1)或兩個(針對RASIE-2)讀取單元。類似地,用於判定性選擇具有最大數量之使用者資料之一或多個讀取單元以便保護其他讀取單元中之全部剩餘使用者資料之任何技術係在本文所考量之技術之範疇內。
[較高層級冗餘資訊計算技術]
在各種實施例及/或使用案例中,使用多種技術(諸如經由同位技術、RS技術及/或加權和技術)來計算較高層級冗餘資訊。例如,在能夠修復一個(較低層級)錯誤)之一些較高層級冗餘模式(例如RASIE-1中,經由同位技術而計算較高層級冗餘資訊。對於另一實例,在能夠修復兩個(較低層級)錯誤之一些較高層級冗餘模式(例如RASIE-2)中,經由同位技術與RS技術之一組合而計算較高層級冗餘資訊。使用同位編碼來計算較高層級冗餘資訊之一第一部分,且使用RS編碼來計算一第二部分。對於又一實例,在能夠修復兩個錯誤之一些較高層級冗餘模式(例如RASIE-2)中,經由同位技術與加權和技術之一組合而計算較高層級冗餘資訊。使用同位編碼來計算較高層級冗餘資訊之一第一部分,且使用加權和編碼來計算一第二部分。使用相同於或類似於用於NVM之頁面(其可用於儲存由較高層級冗餘資訊保護之資料)之較低層級錯誤偵測技術之較低層級錯誤偵測技術(諸如ECC)來管理較高層級冗餘資訊(例如經由NVM之頁面之讀取及寫入)。
作為RASIE-2之一特定實例,經由橫跨一R區塊之一等量磁碟區中之全部第一頁面之一互斥或,使用同位編碼來計算較高層級冗餘資訊之一第一頁面。更具體言之,對橫跨該R區塊之該等量磁碟區中之全部第一頁面之全部第一位元組執行一互斥或以導致較高層級位準冗餘資訊之第一頁面之一第一位元組。類似地,藉由對橫跨該R區塊之該等量磁碟區中之全部第一頁面之全部第二位元組...該等量磁碟區中之全部第一頁面之全部位元組進行互斥或運算而形成較高層級冗餘資訊之一第二位元組。使用如下之一加權和技術來計算較高層級冗餘資訊之一第二頁面。
在一有限域(諸如一伽羅瓦域(用作為一實例))內執行算術。實例假定:所操作之資料具有位元組寬度,且因此使用諸如GF(256)之一
域。在各種實施例中,以任何單位操作資料。
給一等量磁碟區中之各頁面指派一唯一非零「索引」。該等索引之值經選擇以簡化實施方案之複雜性,且無關於任何形式之生成多項式。例如,由自0至N-1之一等量磁碟區中之晶粒位置(例如藉由軟體)標記頁面,且該等索引之一適合值為晶粒編號之1之補數(確保提供非零N<255)。索引值之另一選擇為最低加權(最少數目個設定位元或最少數目個清除位元)非零整數(例如)以減少及/或最小化硬體成本。在一些實施例及/或使用案例中,當處理頁面時,選擇該等索引之格雷編碼值使轉變最小化及/或減少功率。
未根據有限域算術而選擇索引值,而是根據其他原理而選擇索引值。儘管如此,各索引值對應於有限域內之一非零元素。假定:頁面i具有索引值Ki(且頁面j具有索引值Kj)。加權和冗餘為Ki*Pi之(GF域)和(來自各頁面i之對應位元組Pi),各位元組乘以其索引值(GF域內)。
因此,各位元組之加權和冗餘資訊計算如下:R0=全部對應位元組Pi之和;R1=全部對應位元組Ki*Pi之和;R0為全部對應位元組之互斥或;及R1為位元組之一加權和,其中該等加權被選擇為索引值。針對一頁面中之對應位元組之各者而反覆前述計算以產生R0及R1之各者之位元組之對應頁面。在下列討論中,為說明清楚,R0及R1在一些背景中分別被描述為單一元素(例如,各為一單一位元組),但如同前述計算,各表示元素之一各自頁面(例如,各為一頁面之位元組)。
Pi表示頁面i中之一位元組,且Pj表示頁面j中之一位元組。相對於來自各頁面之一等量磁碟區之對應位元組而描述處理,且對全部對應位元組執行反覆。若一些頁面「短於」其他頁面(歸因於(例如)具有
一不同(較低層級)冗餘碼率),則較短頁面經零填充(或由以相同方式使用於編碼及解碼上之任何已知值填充)使得經有效處理之全部頁面具有相同大小。
根據各種實施例,經由各種串行及/或並行計算,可依任何順序執行R0及R1之求和計算。頁面未必依任何特定順序處理,此係因為是否在Kj*Pj之前或之後添加Ki*Pi不影響R1之結果。根據各種實施例,對應於一頁面之冗餘資訊之各種位元組之R0及R1值之計算彼此無關且可經由各種串行及/或並行計算而依任何順序計算。此外,自R1減去Ki*Pi(及自R0減去Pi)能夠「撤銷」對頁面之計算效應。由於在一GF域內,加法及減法兩者為互斥或(因此減法僅等效於二次加法),所以在一些實施例及/或使用案例中,GF域實施方案無需特殊硬體(例如,一邏輯互斥或能力已足夠)來「撤銷」一頁面。
若存在一不可校正之較低層級錯誤,則在一些實施例中,較高層級錯誤校正藉由重新計算R0及R1且藉由省略具有不可校正較低層級錯誤之(若干)頁面(有時稱為(若干)行)而開始。校正藉由自原始R0減去經重新計算之R0以產生△R0且自原始R1減去經重新計算之R1以產生△R1而繼續進行。
若不存在不可校正之較低層級錯誤,則經重新計算之R0及R1兩者為零。若存在不可校正之較低層級錯誤,則經重新計算之R0及R1(在減法之後)反映「遺失」資料(其未經二次加法,而是存在於原始值中)。
若存在一個不可校正之較低層級錯誤,則經重新計算之R0用於校正該錯誤(且無需經重新計算之R1)。
若存在兩個不可校正之較低層級錯誤,則經重新計算之R0及R1用於校正該等錯誤。若R0值及R1值之兩個頁面為具有不可校正之較低層級錯誤之頁面,則無需校正資料儲存頁面。若R1值之頁面為具
有不可校正之較低層級錯誤之頁面之一者,則校正係經由R0(經重新計算之R0值為具有不可校正之較低層級錯誤之資料儲存頁面之值)。
若資料儲存頁面中存在兩個不可校正之較低層級錯誤,或若R0頁面為具有不可校正之較低層級錯誤之頁面之一者,則校正藉由計算如上之△R0及△R1而開始。若R0頁面為具有不可校正之較低層級錯誤之頁面之一者,則視情況省略△R0頁面之計算。若頁面i及頁面j為具有不可校正之較低層級錯誤之頁面,則經重新計算之△R0=Pi+Pj且經重新計算之△R1=Ki*Pi+Kj*Pj。方程式解算產生:Pi=(△R1-Kj*△R0)/(Ki-Kj)
Pj=△R0-Pi若R0為具有不可校正之較低層級錯誤之頁面之一者,則(因為R0不被包含在R1中)△R1=Ki*Pi或Pi=△R1/Ki;藉由在上述公式中設定Kj=0(忽略△R0)而獲得相同結果。
在一替代實施例中,使用由整數模p定義之一有限域(其中p為一質數)來取代一伽羅瓦域。該等計算相同於上文所描述之計算,其中加法為整數模p加法,且乘法為整數模p乘法。例如,若頁面為位元組之頁面,則使用整數模257之一有限域。全部使用者資料位元組係在0至255之一範圍內且各儲存於一個位元組中。然而,R1結果具有在0至256範圍內之值以需要一個以上位元組來表示。存在諸多方式以編碼自0至256之值以使儲存空間最小化且能夠使用減少之附加項來儲存R1頁面。例如,將值0及256分別儲存為9位元序列000000000及000000001,且將全部其他值儲存於8個位元中。鑒於R1值之一隨機分佈,儲存附加項為<0.1%。如相對於圖9所描述,選擇具有最大數量之使用者資料之R1頁面以能夠在一些使用案例中隱藏儲存附加項。
圖10繪示較高層級冗餘資訊結果及資料源對應項之一實施例之
選定細節,例如由(諸如)圖7之背景中之RASIE-2之模式2-2所使用及如圖6中所進一步繪示。圖10明確繪示快閃晶粒610.0、610.63、610.64及610.65,且藉由省略號(...)而隱含繪示快閃晶粒610.1...610.62。圖中繪示快閃晶粒之頁面內之區塊、頁面及位元組之選定細節。較高層級冗餘資訊之一第一部分被繪示為R0 1010(儲存於快閃晶粒610.64)且使用同位編碼來加以計算。較高層級冗餘資訊之一第二部分被繪示為R1 1011(儲存於快閃晶粒610.65中)且使用加權和編碼來加以計算。資料資訊之儲存被繪示為資料1019(儲存於快閃晶粒610.0...610.63中)。
虛線箭頭1001概念性指示基於資料1019之全部第一頁面(橫跨全部快閃晶粒)之對應第一位元組之一2位元組冗餘計算結果(一個位元組用於R0 1010及R1 1011之各者)。如圖所繪示,該2位元組結果為第一R0及R1頁面之各者上之第一位元組。虛線箭頭1002概念性指示基於資料1019之全部第一頁面之對應最後位元組之一2位元組冗餘計算結果(一個位元組用於R0 1010及R1 1011之各者)。如圖所繪示,該2位元組結果為第一R0及R1頁面之各者上之最後位元組。虛線箭頭1003概念性指示基於資料1019之第一區塊(橫跨全部快閃晶粒)之對應最後頁面之一2頁面冗餘計算結果(一個頁面用於R0 1010及R1 1011之各者)。
應注意,如本文別處所描述,在一些實施例中,將較高層級冗餘資訊儲存於用於資料之不同部分之不同晶粒中。因此,在一些實施例中,橫跨各種晶粒而非兩個「專用」晶粒而儲存R0及R1,如圖10中所繪示。
圖11繪示較高層級冗餘資訊計算之一實施例之選定細節,例如由(諸如)圖7之一背景中之RASIE-2之模式2-2所使用且如圖6及圖10中所進一步繪示,其中各種操作條件根據各種實施例。更具體言之,根據
(例如)由圖10之虛線箭頭1001概念性繪示之2位元組冗餘計算結果,圖11繪示一個位元組之R0之同位編碼計算及一個位元組之R1之加權和編碼計算。該等操作條件包含下列之一或多者:在一有限域(諸如一伽羅瓦域)內執行算術;索引(對應於圖11中之虛設總和變數「i」)為快閃晶粒編號之1之補數(或任何其他唯一非零編號);及索引對應於有限域內之非零元素。基於對應資料位元組,使R0及R1之全部位元組重複如圖11中所繪示之計算。應注意,非零索引使R1值能夠包含來自Pi之每一元素之一比重。
因此,對基於彼此或R1之位元組之任何者之間而計算R0之位元組之任何者無依賴性。因此,可考量各種實施例,其中R0值及R1值全部經(大規模)並行計算,部分經並行計算,或全部經串行計算。例如,並行計算一頁面之全部R0位元組及/或R1位元組。對於另一實例,並行計算一頁面之全部R0位元組,接著並行計算一頁面之全部R1位元組(或在並行計算一頁面之全部R1位元組之前並行計算一頁面之全部R0位元組)。
此外,對相對於彼此或相對於計算R1之位元組之任何者而計算R0之位元組之任何者無排序要求。因此,可考量各種實施例,其中R0值及R1值全部依相對於彼此之順序計算,依相對於彼此之順序單獨計算(例如,R0計算係依相對於彼此之順序,但未相對於R1而排序,且反之亦然),或未進行特定排序(例如完全無序、未經排序或經隨機排序)。例如,依一特定順序(例如,自最低位元組至最高位元組)計算一頁面之全部R0位元組,接著依該特定順序計算該頁面之全部R1位元組。對於另一實例,依特定順序計算一頁面之全部R0位元組,且依特定順序獨立計算該頁面之全部R1位元組。對於又一實例,未依相對於彼此之特定順序計算一頁面之全部R0位元組以及一頁面之全部R1位元組(例如,當資料運算元變為可用時)。
對於又一實例,依由對一或多個NVM(例如,其等各具有一或多個快閃晶粒)所執行之一或多個讀取操作之一完成順序判定之一順序計算一或多個頁面之全部R0位元組及R1位元組,該等讀取操作用於讀取由圖11中所繪示之求和及加權和計算(Pi)引用之資料位元組。在一些實施例及/或使用案例中,依由該等讀取操作之完成判定之該順序執行該等計算能夠減少或消除該等NVM與能夠執行該等計算之元件之間之緩衝。在一些實施例及/或使用案例中,依由該等讀取操作之完成判定之該順序執行該等計算能夠減小用於執行該等計算之記憶體頻寬,諸如該等NVM之記憶體頻寬。
對於又一實例,依由返回資料及/或可用資料(其等回應於對一或多個NVM(例如,其等各具有一或多個快閃晶粒)所執行之讀取操作)之一順序判定之一順序計算一或多個頁面之全部R0位元組及R1位元組,該返回資料及/或該可用資料對應於由圖11中所繪示之求和及加權和計算(Pi)引用之資料位元組。在一些實施例及/或使用案例中,依由該返回資料及/或該可用資料判定之該順序執行該等計算減少或消除該等NVM與能夠執行該等計算之元件之間之緩衝。在一些實施例及/或使用案例中,依由該返回資料及/或該可用資料判定之該順序執行該等計算減小用於執行該等計算之記憶體頻寬,諸如該等NVM之記憶體頻寬。在一些實施例中,依一特定順序(例如自Pi之最低位元組至最高位元組)執行該等讀取操作,同時在其他實施例中,未依特定順序執行該等讀取操作。
圖12繪示(例如)在諸如與圖11相關聯之一背景中(在一單一操作期間)修復一(較低層級)錯誤之一實施例之選定細節,且其中頁面j上已發生該較低層級錯誤。應注意,若一R0頁面或一R1頁面上發生該較低層級錯誤,則重新判定R0(或R1),如由圖11所描述。圖12繪示頁面j之一個位元組之一修復值之一計算(應注意,求和省略其中發生錯
誤之頁面j)。重複如圖12中所繪示之計算以基於R0之對應位元組及來自除頁面j之外之全部資料頁面之對應位元組而判定頁面j之全部位元組之修復值。
因此,對基於彼此而計算頁面j之修復值之全部位元組無依賴性。因此,可考量各種實施例,其中在自高度並行至高度串行之範圍內計算Pj修復值,類似於R0值及R1值之前面所提及之計算。此外,對相對於彼此而計算頁面j之修復值之任何值無排序要求。因此,可考量各種實施例,其中依相對於彼此之變動排序計算Pj修復值,類似於R0值及R1值之前面所提及之計算。
一些例示性實施例執行與依由對一或多個NVM(例如,其等各具有一或多個快閃晶粒)所執行之一或多個讀取操作之一完成順序至少部分判定之排序判定修復值相關之計算,該等讀取操作用於讀取該等NVM以獲得R0值及/或Pi值,如由圖12所繪示。在一些實施例及/或使用案例中,依該等讀取操作之該完成順序執行該等計算能夠減少或消除該等NVM與能夠執行該等計算之元件之間之緩衝。在一些實施例及/或使用案例中,依該等讀取操作之該完成順序執行該等計算能夠減小用於執行該等計算之記憶體頻寬,諸如該等NVM之記憶體頻寬。
一些例示性實施例執行與依由來自一或多個NVM(例如,其等各具有一或多個快閃晶粒)之返回資料及/或可用資料之一排序至少部分判定之排序判定修復值相關之計算,該返回資料及/或該可用資料係回應於對該等NVM所執行之讀取操作以獲得R0值及/或Pi值,如由圖12所繪示。在一些實施例及/或使用案例中,依來自該等讀取操作之該返回資料及/或該可用資料之順序執行該等計算減少或消除該等NVM與能夠執行該等計算之元件之間之緩衝。在一些實施例及/或使用案例中,依來自該等讀取操作之該返回資料及/或該可用資料之順
序執行該等計算減小用於執行該等計算之記憶體頻寬,諸如該等NVM之記憶體頻寬。在一些實施例中,依一特定順序(例如自Pi之最低位元組至最高位元組)執行該等讀取操作,同時在其他實施例中,未依特定順序執行該等讀取操作。
圖13A至圖13D繪示(例如)在諸如與圖11相關聯之一背景中(在一單一操作期間)修復兩個(較低層級)錯誤之一實施例之選定細節,且其中頁面m及n上已發生該等較低層級錯誤。應注意,若R0頁面及R1頁面上發生該等較低層級錯誤,則R0及R1無需資料修復且不存在用於修復資料之處理。否則,應注意,若R1頁面上發生該等較低層級錯誤之一者,則如由圖12中所描述般進行資料修復。若R0頁面或R1頁面上未發生該兩個較低層級錯誤,則Pm值及Pn值之修復進行如下。圖13A繪示一個位元組之一經修正R0(作為R0')及一個位元組之一經修正R1(作為R1')之計算(應注意,求和省略其中發生錯誤之頁面m及n)。圖13B繪示使一個位元組之原始冗餘資訊(R0,R1)與經修正之冗餘資訊(R0',R1')相關之等式,及自用於形成經修正之R0及R1之求和省略之項(Pm+Pn及Km*Pm+Kn*Pn)。圖13C繪示圖13B之一代數重新配置,其具有引入項差量R0(△R0)及差量R1(△R1)。圖13D繪示圖13C之Pn及Pm之一解算,且因此表示頁面n之一個位元組之一修復值及頁面m之一個位元組之一修復值之計算,其基於R1、R0之對應位元組及來自除頁面m及n之外之全部資料頁面之對應位元組。應注意,唯一索引提供一非零分母,此係因為Kn不同於Km。
在各種實施例中,執行如由圖13A至圖13D所表示之計算以判定頁面m之一個位元組之一修復值及頁面n之一個位元組之一修復值。重複該等計算以基於R0、R1之對應位元組及來自除頁面m及n之外之全部資料頁面之對應位元組而判定頁面m及n之全部位元組之修復值。
因此,對基於彼此而計算頁面m或n之修復值之位元組之任何者無依賴性。因此,可考量各種實施例,其中在自高度並行至高度串行之範圍內計算Pm修復值及/或Pn修復值,類似於Pj修復值之前面所提及之計算。此外,對相對於彼此而計算頁面m及/或頁面n之修復值之任何者無順序要求。因此,可考量各種實施例,其中依相對於彼此之變動排序計算Pm修復值及/或Pn修復值,類似於Pj修復值之前面所提及之計算。
一些例示性實施例執行與依由對一或多個NVM(例如,其等各具有一或多個快閃晶粒)所執行之一或多個讀取操作之一完成排序至少部分判定之排序判定修復值相關之計算(諸如R0'及R1'之計算),該等讀取操作用於獲得繪示為圖13A至圖13D之任何者中之計算原始資料的值之任何一或多者。在一些實施例及/或使用案例中,依該等讀取操作之該完成順序執行該等計算能夠減少或消除該等NVM與能夠執行該等計算之元件之間之緩衝。在一些實施例及/或使用案例中,依該等讀取操作之該完成順序執行該等計算能夠減小用於執行該等計算之記憶體頻寬,諸如該等NVM之記憶體頻寬。
一些其他例示性實施例執行與依由來自一或多個NVM(例如,其等各具有一或多個快閃晶粒)之返回資料及/或可用資料之一排序至少部分判定之排序判定修復值相關之計算(諸如R0'及R1'之計算),該返回資料及/或該可用資料係回應於對該等NVM所執行之讀取操作以獲得繪示為圖13A至圖13D之任何者中之計算原始資料的值之任何一或多者。在一些實施例及/或使用案例中,依來自該等讀取操作之該返回資料及/或該可用資料之該順序執行該等計算減少或消除該等NVM與能夠執行該等計算之元件之間之緩衝。在一些實施例及/或使用案例中,依來自該等讀取操作之該返回資料及/或該可用資料之該順序執行該等計算減小用於執行該等計算之記憶體頻寬,諸如該等NVM
之記憶體頻寬。在一些實施例中,依一特定順序(例如自Pi之最低位元組至最高位元組)執行該等讀取操作,同時在其他實施例中,未依特定順序執行該等讀取操作。
圖14A及圖14B繪示相對於自NVM接收之頁面而計算較高層級冗餘資訊之一實施例之選定細節。圖14A繪示下列各者之一實施例之選定細節:經由發佈而將複數個讀取命令發送至一或多個NVM(發佈讀取操作1402A);檢查是否已發送全部命令(是否已發佈全部命令?1403A);及若尚未發佈全部命令,則循環返回至發送該等命令之另一者。應注意,可考量其他實施例,其中一次發佈複數個命令,而非一次一個地發佈複數個命令。
圖14B繪示回應於如圖14A中所繪示般發送之讀取命令而處理自NVM接收之頁面之一實施例之選定細節。進行一檢查以判定一頁面是否可用(頁面是否準備就緒?1402B)。若一頁面尚不可用,則處理循環返回至再次執行檢查。若一頁面已可用,則實施與該頁面相關之較高層級冗餘資訊處理(執行基於頁面之計算1403B)。接著,進行一檢查以判定是否已處理全部頁面(頁面處理是否完成?1404B)。若已處理全部頁面,則處理完成(結束1499B),否則流程循環返回至判定另一頁面是否可用。
除回應於如圖14A中所繪示般發送之命令而接收頁面之外,圖14B中所繪示之處理無關於圖14A中所繪示之處理。在各種案例中,頁面之到達順序根據NVM類型、狀態、操作環境及其他因數而變動,且在一些情況中不同於對應於到達頁面之讀取命令之發送順序或到達順序。由於圖14A之處理無關於圖14B之處理(除頁面資料到達取決於被發送之一對應讀取命令之外),所以在一些實施例及/或使用案例中,在接收/處理讀取資料(圖14B)時發送讀取命令(圖14A)。在一些實施例及/或使用案例中,例如,若在將發送用於一特定頁面之一讀
取命令之前該特定頁面存在於一特定緩衝區中,則自一或多個緩衝區提供之頁面之部分,而非經由引導至NVM之讀取命令而請求頁面之部分。在一些實施例及/或使用案例中,由與回應於所發送之命令而提供之頁面(例如回應於針對其他作業所發送之讀取命令而提供之頁面)互混之NVM提供除回應於所發送之命令而提供之頁面之外之頁面。
在各種實施例中,如由圖14A及圖14B所繪示般至少部分地執行R0及R1之計算,如由圖11所繪示。對於一第一實例,將計算對應R0頁面及R1頁面所需之用於全部資料頁面之讀取命令發送至一或多個NVM,如由圖14A所繪示。當該等頁面經接收以計算該R0頁面及該R1頁面時,處理回應於該等讀取命令而接收之資料之頁面,如由圖11所繪示。對於一第二實例,將用於一對R0頁面及R1頁面(例如,對應於一雙平面NVM之兩個平面)之讀取命令發送至一或多個NVM,如由圖14A所繪示。當該等頁面經接收以計算該R0頁面及該R1頁面時,處理回應於該等讀取命令而接收之資料之頁面,如由圖11所繪示。
在各種實施例中,如由圖14A及圖14B所繪示般至少部分地執行Pj之計算,如由圖12所繪示。對於一第一實例,將計算一特定Pj頁面所需之用於全部資料頁面之讀取命令發送至一或多個NVM,如由圖14A所繪示。當該等頁面經接收以計算該Pj頁面時,處理回應於該等讀取命令而接收之資料之頁面,如由圖12所繪示。對於一第二實例,將用於一對Pj頁面(例如,對應於一雙平面NVM之兩個平面)之讀取命令發送至一或多個NVM,如由圖14A所繪示,且將所接收之資料之頁面處理為已接收以計算該對Pj頁面,如由圖14B所繪示。
在各種實施例中,如由圖14A及圖14B所繪示般至少部分地執行與判定修復值相關之計算(諸如R0'及R1'之計算),如由圖13A至圖13D之任何者所繪示。對於一第一實例,將計算一特定R0'頁面及一特定
R1'頁面所需之用於全部資料頁面之讀取命令發送至一或多個NVM,如由圖14A所繪示。當該等頁面經接收以計算該R0'頁面及該R1'頁面時,處理回應於該等讀取命令而接收之資料之頁面,如由圖13A所繪示。對於一第二實例,將用於一對R0'頁面及R1'頁面(例如,對應於一雙平面NVM之兩個平面)之讀取命令發送至一或多個NVM,如由圖14A所繪示,且將所接收之資料之頁面處理為已接收以計算該對R0'頁面及R1'頁面,如由圖14B所繪示。
圖15A至圖15C繪示(例如)在諸如與圖11相關聯之一背景中相對於提供至NVM之一寫入而撤銷較高層級冗餘資訊之一計算之一實施例之選定細節。圖15A繪示下列各者之一實施例之選定細節:經由發佈而將複數個寫入命令發送至一或多個NVM(發佈寫入操作1502A);檢查是否已發送全部命令(全部命令是否已發佈?1503A);及若尚未發送全部命令,則循環返回至發送該等命令之另一者。應注意,可考量其他實施例,其中一次發佈複數個命令,而非一次一個地發佈複數個命令。
圖15B繪示回應於如圖15A中所繪示般發送之寫入命令而處理自NVM接收之寫入完成及狀態資訊之一實施例之選定細節。進行一檢查以判定是否已無誤地完成一寫入(寫入是否完成?1502B)。若已無誤地完成一寫入,則進行一檢查以判定是否已完成全部寫入(寫入是否完成?1504B)。若已完成全部寫入,則處理完成(結束1599B)。若已完成一寫入但存在一(較低層級)錯誤(諸如一程式錯誤),則流程前進至「取消」該寫入相對於較高層級冗餘資訊計算之效應(自冗餘撤銷寫入1503B)。更具體言之,自任何對應較高層級冗餘資訊計算解除用於具有較低層級錯誤之寫入之資料之計算(假定:用於寫入之該資料已被包含在該對應較高層級冗餘計算(假定:該寫入將成功)中)。例如,在一特定頁面j上偵測到一較低層級寫入錯誤。作為回應,計算
經修正之R0頁面及R1頁面,使得頁面j之資料(Pj)被設定為零。圖15C繪示一單一位元組之一經修正R0(nR0)及一單一位元組之一經修正R1(nR1)之一計算之一實施例之選定細節,其中j為具有較低層級寫入錯誤之頁面。應注意,在(諸如)與圖11相關聯之圖12之背景中,若有限域為一伽羅瓦域,則圖15C中所繪示之減法運算(「-」)等效於一邏輯互斥或運算。在各種實施例中,執行其他處理(圖中未繪示)以儲存具有較低層級寫入錯誤之頁面(Pj)以及經修正之較高層級冗餘頁面(nR0及nR1)。
除回應於如圖15A中所繪示般發送之命令而接收寫入完成及狀態資訊之外,圖15B中所繪示之處理無關於圖15A中所繪示之處理。在各種案例中,寫入完成及狀態資訊之到達順序根據NVM類型、狀態、操作環境及其他因數而變動,且在一些情況中不同於對應於該到達寫入完成及狀態資訊之寫入命令之發送順序或到達順序。由於圖15A之處理無關於圖15B之處理(除寫入完成及狀態資訊到達取決於被發送之一對應寫入命令之外),所以在一些實施例及/或使用案例中,在接收/處理寫入完成及狀態資訊(圖15B)時發送寫入命令(圖15A)。
在一些實施例及/或使用案例中,一明顯延時發生在發送至NVM之寫入命令之間,且發生回應於該等寫入命令而自NVM接收寫入完成及狀態資訊。在一些實施例及/或使用案例中,由與回應於如圖15A中所繪示般發送之命令而提供之寫入完成及狀態資訊互混之NVM提供除回應於如圖15A中所繪示般發送之命令而提供之寫入完成及狀態資訊之外之寫入完成及狀態資訊,例如回應於針對其他作業所發送之寫入命令而提供之寫入完成及狀態資訊。
在各種實施例及/或使用案例中,未使用否則將用於資料資訊之一或多個頁面。在各種案例中,一未使用頁面為區塊、R區塊、等量磁碟區或任何種類之頁面序列之第一頁面、中間頁面或最後頁面。在
一些情況中,未先驗地使用(「忽略」)未使用頁面,且在一些情況中,未在某些使用之後使用未使用頁面(「自服務移除」)。被忽略之一未使用頁面之一實例為被不正確製造之一頁面。自服務移除之一未使用頁面之一實例為無法適當寫入之一頁面(例如相對於圖15B之一較低層級寫入錯誤所描述)。諸如,藉由自計算省略全部未使用頁面或藉由宛如未使用頁面上之全部資料為零般執行計算而使(例如)與圖10至圖12、圖13A至圖13D、圖14A至圖14B及圖15A至圖15B相關之處理跳過任何未使用頁面(無論是否被忽略或自服務移除)。
[經由冗餘陣列之程式錯誤修復]
在一些情況中,無法成功地將資料寫入/程式化至NVM,例如,一或多個寫入/程式化操作發生錯誤,如由該NVM所指示。在各種實施例中,將發送至該NVM以用於寫入/程式化之資料保存於一緩衝區中,至少直至該NVN指示:已將全部資料成功地寫入/程式化至該NVM(或替代地,指示與該資料相關聯之一或多個寫入/程式化操作之錯誤)。將資料保存於該緩衝區中能夠將與該等錯誤相關聯之資料寫入/程式化至該NVM中之替代位置(諸如具有該錯誤之晶粒中之另一位置、與該資料相關聯之一串流中之後方或該NVM之任何其他適合區域)。
一些NVM阻止已無法適當完成一或多個寫入/程式化操作之一區塊之進一步寫入/程式化。一些NVM供應商建議儘快自該錯誤區塊移出寫入/程式化至一區塊之資料(在寫入/程式化錯誤之前)。在一些NVM中,無法自NVM獲得先前提供至NVM以用於寫入/程式化之資料。甚至在無法自NVM獲得資料之背景中,將資料保存於緩衝區中能夠修復錯誤。
在一些實施例中,緩衝區被實施為一NVM控制器(諸如一SSD控制器,例如圖1A中所繪示及本文別處所描述)之部分。例如,緩衝區
被實施為圖1A之緩衝區131之全部或任何部分。在將緩衝區實施為該NVM控制器之部分(諸如位於與該NVM控制器之其他部分相同之一晶片上)之一些實施例中,至NVM之寫入/程式化頻寬歸因於(晶片上)緩衝區之有限大小而受限。例如,寫入頻寬受限於緩衝區之大小除以完成NVM之寫入/程式化所需之一平均時間。在一些案例中,寫入頻寬歸因於完成NVM之寫入/程式化所需之時間之變動而進一步受限。
在其他實施例中,(諸如)經由一或多個分離記憶體組件(諸如一或多個DRAM晶片)而與NVM控制器分離地實施緩衝區。例如,緩衝區被實施為圖1B之(選用)卡記憶體112C之全部或任何部分。在將緩衝區實施為分離記憶體組件(諸如經由DRAM)之一些實施例中,至NVM之寫入/程式化頻寬歸因於至DRAM之寫入頻寬而受限。例如,至NVM之寫入頻寬受限於不大於至DRAM之寫入頻寬。
在各種實施例中,一目的為依NVM能夠提供之最大頻寬寫入/程式化NVM,其無關於一(晶片上)緩衝區之一大小或至(晶片外)記憶體組件之頻寬。各種較高層級冗餘資訊之計算及暫時儲存(例如RASIE-1、RASIE-2或任何跨頁ECC方案)能夠依NVM能夠提供之最大頻寬寫入/程式化NVM。並非儲存寫入/程式化至NVM之進行中之全部資料之一複本,而是代以儲存較高層級冗餘資訊。有利地,所儲存之該較高層級冗餘資訊之大小與能夠修復之錯誤之數量相關,而非與由該較高層級冗餘資訊覆蓋之資料之數量相關。
在概念上,在將較高層級冗餘資訊(例如某一形式之RASIE)寫入至一串流之NVM晶粒(例如一R區塊)中時,使該較高層級冗餘資訊內部地維持用於該串流。使該較高層級冗餘資訊維持處於NVM之一合宜粒度(例如一或多個頁面或一或多個區塊)上,該粒度經選擇以足以用經內部維持之該較高層級冗餘資訊覆蓋全部進行中之寫入/程式化操作。視情況而定,將該較高層級冗餘資訊之全部或任何部分寫入/
程式化至NVM(諸如由圖7或圖8之任何一或多者(例如圖8之807)所描述及相對於圖7或圖8之任何一或多者(例如圖8之807)所描述)。經內部維持之較高層級冗餘資訊用於修復寫入/程式化錯誤(若存在)。在包含實施為一或多個晶片之一非揮發性記憶體控制器之各種實施例中,該較高層級冗餘資訊之內部維持係至少部分地經由包含在該記憶體控制器之該等晶片之一或多者中之一或多個(晶片上)記憶體元件(例如圖1A之SSD控制器100之緩衝區131之全部或任何部分)中之儲存。在一些實施例中,即使不存在寫入/程式操作之錯誤,亦將經內部維持之較高層級冗餘資訊寫入/程式化至NVM,因此保護儲存於NVM中之資料免受(例如相對較長期間)錯誤,諸如歸因於讀取干擾或保存現象之累積錯誤。
在一些使用案例中,程式錯誤相對較罕見,且使用RASIE-1。在一些使用案例中,程式錯誤較頻繁及/或期望較高可靠性,且使用RASIE-2。作為使用RASIE-2之一實例,並非執行32個NVM晶粒之資料緩衝,而是執行2個NVM晶粒之RASIE-2資料緩衝以節省保存16倍之緩衝空間。一旦已將寫入/程式化資料發送至一NVM晶粒且已在一後續RAISE-2計算中考量該所發送之資料,則釋放與該所發送之資料相關聯之緩衝區。在一些使用案例及/或實施例中,在完成與保存於釋放之前之緩衝區中之資料相關聯之寫入/程式化之前,完全釋放緩衝區。因此,縮短及消除緩衝區保有期(其為NVM寫入/程式化頻寬之一瓶頸)。
使用RASIE-2,只要在一「等量磁碟區」(例如在一RASIE累積群組中)存在小於兩個之同時寫入/程式化錯誤,則RASIE-2技術能夠藉由回讀該等量磁碟區中之先前寫入/程式化頁面而完全校正寫入/程式化錯誤。無論是否已完成一整個R區塊列,均實現完全校正,此係因為僅使用用於累積達錯誤程度之RASIE之資料(以及累積達錯誤程度
之RASIE資訊)。
可考量其他實施例。例如,在其中未將累積RASIE資訊寫入至NVM之一些實施例中,使用一「滾壓(rolling)」RASIE,其中在開始將頁面寫入/程式化至NVM之後將該等頁面累積至(「添加」至)RASIE資訊,且在成功地完成該等頁面之寫入/程式化之後,自RASIE資訊消除(「減去」)該等頁面。因此,僅一單一RASIE累積緩衝區用於全部進行中之寫入/程式化操作。
在一些實施例中,內部地維持RASIE資訊,宛如其將被寫入至基於一R區塊列之NVM(無論其是否被寫入)。因此,RASIE累積儲存緩衝區用於各進行中之列。若將RASIE資訊寫入至NVM,則RASIE累積儲存緩衝區具有兩個目的:(1)用於修復寫入/程式化錯誤之內部RAISE累積;及(2)用於寫入/程式化至NVM之RASIE資訊。根據各種實施例,經內部維持之RASIE資訊足以校正下列之一或多者:(a)特定數目個寫入/程式化操作錯誤;(b)一等量磁碟區中之特定數目個不可校正之ECC錯誤;及(c)(a)及/或(b)之和或最大值。
在各種實施例中,用於修復寫入/程式化錯誤之經內部維持之RASIE資訊不同於用於寫入/程式化至NVM(例如用於在NVM之讀取期間修復較低層級冗餘之錯誤)之RASIE資訊。例如,經內部維持之RAISE資訊為RASIE-2資訊(能夠修復高達兩個之同時寫入/程式化錯誤),且用於寫入/程式化至NVM之RASIE資訊為RASIE-1資訊(能夠修復一單一較低層級冗餘讀取錯誤)。在進一步實施例中,用於寫入/程式化至NVM之RASIE資訊為經內部維持之RASIE資訊之一子集。
在寫入/程式化錯誤之情況中,已知錯誤位置,且因此能夠使用擦除-校正方案,且在一些實施例中使用擦除-校正方案。在其他實施例中,使用非擦除-校正方案(例如一般ECC方案)。
圖16繪示經由冗餘陣列之NVM錯誤修復之一實施例之選定細
節。該圖繪示由一NVM控制器(控制器1610)執行之操作及由NVM(NVM 1620)執行之操作。該控制器之一實例為一SSD控制器(諸如由圖1A之SSD控制器100所繪示)。該NVM之一實例為複數個快閃晶粒(諸如由圖1A之NVM 199所繪示)。
在下文中,術語「程式化」(及其各自變體)在用於至一NVM之一寫入之一背景中時與「寫入/程式化」(及其各自變體)以及「寫入」(及其各自變體)同義。
將資料程式化至NVM開始於給控制器提供待程式化至NVM中之資料及/或產生待程式化至NVM中之資料(接收資料1611)。接著,將資料儲存至一緩衝區中(資料=>緩衝區1612)。隨後(或替代地同時,在一些實施例中),控制器發送一請求以將資料程式化至NVM((開始)將資料程式化至NVM 1613)。作為回應,NVM開始將資料程式化至NVM中(開始:將資料程式化1621)。同時,控制器繼續根據資料而累積較高層級冗餘資訊(更新冗餘資訊1614)。在藉由累積較高層級冗餘資訊而消耗資料之後,控制器釋放緩衝區(釋放緩衝區1615)(諸如)以重新用於儲存待程式化至NVM之隨後接收資料。緩衝區之釋放無關於NVM之所請求之程式化已進展到何種程度。
同時,且無關於緩衝區之釋放,NVM繼續資料之所請求之程式化,其包含判定是否存在程式化之任何錯誤(偵測到(若干)錯誤1622)。若不存在錯誤,則NVM最終完成所請求之程式化(完成:將資料程式化1623),且相對於資料之程式化之處理結束。接著,(例如)藉由重複1611等等(圖中未繪示)而釋放控制器及NVM以將額外資料程式化至NVM。
若偵測到任何錯誤,則作為回應,控制器視情況及/或選擇性延遲進一步資料之所請求之程式化(延遲1616)。接著,控制器發送一請求以將累積較高層級冗餘資訊程式化至NVM((開始)將冗餘資訊程式
化至NVM 1617)。作為回應,NVM開始將累積較高層級冗餘資訊程式化至NVM(開始:冗餘資訊程式化1624)。
接著,控制器繼續請求先前被延遲之進一步資料之程式化之(概念性)重新開始((重新開始)將資料程式化至NVM 1618)。該重新開始具概念性,此係因為:嚴格而言,在各種實施例中,先前所請求之程式化處於暫停、中斷及/或停止狀態,因此,該重新開始分別為不同之一繼續、中斷操作之一恢復及/或一全新程式化操作。請求係針對不同於先前發生錯誤之位置之一位置(例如NVM之一不同區塊)。具有及/或相關聯於重新開始請求之資料包含至少部分地基於累積冗餘資訊而判定之資料及在發生錯誤之前成功地程式化至NVM中之資料之任何部分。在各種實施例中,判定否則歸因於程式化錯誤而丟失之資料係經由諸如由圖13A至圖13D之任何一或多者所描述或相對於圖13A至圖13D之任何一或多者所描述之技術。回應於重新開始請求,NVM開始將剩餘資料程式化至NVM中(重新開始:將資料程式化1625)。
同時,控制器繼續根據與所請求之重新開始程式化而累積新的較高層級冗餘資訊(更新新的冗餘資訊1619)。最後,NVM完成所請求之重新開始程式化(完成:將資料程式化1626)。儘管圖中未具體繪示,但在各種實施例中,NVM操作以偵測較高層級冗餘資訊之程式化以及資料之重新開始程式化之錯誤。
在各種實施例及/或使用案例中,在完成較高層級冗餘資訊之累積之後及/或回應於完成較高層級冗餘資訊之累積(更新冗餘資訊1614)而即時釋放緩衝區(釋放緩衝區1615)。在各種實施例及/或使用案例中,無論儲存於緩衝區中之資料之程式化已進展到何種程度(開始:將資料程式化1621)、(偵測到(若干)錯誤1622)及(完成:將資料程式化1623),釋放緩衝區(釋放緩衝區1615)。在各種實施例/使用案例中,保存累積較高層級冗餘資訊(圖中未特定繪示),直至完成由累積
較高層級冗餘資訊覆蓋之資料之程式化(完成:將資料程式化1623)。在進一步實施例中,保存累積較高層級冗餘資訊(圖中未特定繪示),直至完成累積較高層級冗餘資訊之程式化。
在一些實施例中,相對於除程式化錯誤(例如一電力錯誤)之外之錯誤之脆弱性而減小及/或最小化一窗口(諸如基於資料及/或時間)。例如,回應於偵測到一程式化錯誤且一旦偵測到一程式化錯誤,則儘可能快速地將全部累積較高層級冗餘資訊程式化至NVM。接著,可在發生一電力錯誤之後使用程式化至NVM之累積較高層級冗餘資訊以能夠計算否則歸因於程式化錯誤而丟失之任何資料。在其他實施例中,回應於一程式化錯誤,累積較高層級冗餘資訊與資料之任何適當程式化部分一起用於判定否則歸因於程式化錯誤而丟失之資料。在一些實施例中,回應於延緩一程式化錯誤,直至完成與一當前較高層級冗餘資訊量(例如一RASIE等量磁碟區)相關聯之資料之一當前程式化。在完成該當前程式化之後,將累積較高層級冗餘資訊程式化至NVM或判定否則歸因於程式化錯誤而丟失之資料。
在一些實施例中,將資料程式化至NVM係經由一或多個NVM介面,諸如快閃記憶體介面(例如圖1A之裝置介面190及裝置介面邏輯191之全部或任何部分)。在一些實施例中,將較高層級冗餘資訊(例如用於修復NVM程式化錯誤)儲存於具有一或多個專用介面之一或多個晶片上記憶體元件(例如圖1A之SSD控制器100之緩衝區131之全部或任何部分)。
在各種實施例中,由圖1A之一或多個元件(或其部分)完全或部分地執行圖10至圖12、圖13A至圖13D、圖14A至圖14B、圖15A至圖15B及圖16之一或多個元件之處理或執行使圖1A之一或多個元件(或其部分)與圖10至圖12、圖13A至圖13D、圖14A至圖14B、圖15A至圖15B及圖16之一或多個元件相關。例如,CPU 171之軟體執行能力之一部
分用於(諸如)藉由引導資料修復操作(如由圖12及圖13A至圖13D所繪示)而管理較高層級冗餘處理。對於另一實例,資料處理121包含專用於及/或指定用於根據(諸如)由圖11繪示及/或與圖16之更新較高層級冗餘資訊(更新冗餘資訊1614)及/或(更新新的冗餘資訊1619)相關聯之計算而計算較高層級冗餘資訊之硬體元件。對於又一實例,圖1A之分配緩衝區138之全部或任何部分對應於其中儲存資料(資料=>緩衝區1612)且被釋放(釋放緩衝區1615)(如相對於圖16所描述)之緩衝區。
[實例性實施方案技術]
在一些實施例中,由與一電腦系統之處理相容之一規格指定由下列各者執行之操作之全部或任何部分之各種組合:實施NVM(例如快閃記憶體,諸如反及快閃記憶體)之程式錯誤修復之一系統;一計算主機快閃記憶體控制器;及/或一SSD控制器(諸如圖1A之SSD控制器100);及處理器、微處理器、單晶片系統、特殊應用積體電路、硬體加速器或其他電路(其提供前面所提及操作之全部或部分)之部分。該規格係根據各種描述,諸如硬體描述語言、電路描述、接線對照表描述、遮罩描述或佈局描述。實例性描述包含Verilog、VHDL、SPICE、SPICE變體(諸如PSpice)、IBIS、LEF、DEF、GDS-II、OASIS或其他描述。在各種實施例中,處理包含解譯、編譯、模擬及合成之任何組合以產生、驗證或指定適合於包含在一或多個積體電路上之邏輯及/或電路。根據各種實施例,可根據各種技術而設計及/或製造各積體電路。該等技術包含一可程式化技術(諸如一場或遮罩可程式化閘極陣列積體電路)、一半訂製技術(諸如一基於完全或部分胞之積體電路)及一全訂製技術(諸如實質上特定之一積體電路)、其等之任何組合、或與積體電路之設計及/或製造相容之任何其他技術。
在一些實施例中,藉由下列各者而執行操作之全部或部分之各種組合(如由具有儲存於其內之一組指令之一電腦可讀媒體所描述):
執行及/或解譯一或多個程式指令;解譯及/或編譯一或多個原始資料及/或描述性語言陳述式;或執行藉由編譯、轉譯及/或解譯以程式化及/或描述性語言陳述式表達之資訊而產生之二進位指令。該等陳述式與任何標準程式設計或描述性語言(諸如C、C++、Fortran、Pascal、Ada、Java、VBscript及Shell)相容。將程式指令、語言陳述式或二進位指令之一或多者視情況儲存於一或多個電腦可讀儲存媒體元件上。在各種實施例中,將程式指令之部分、全部或各種部分實現為一或多個函式、常式、副常式、內嵌(in-line)常式、程序、巨集指令或其等之部分。
[結論]
僅為了便於準備正文及圖式,已在描述中作出某些選擇,且若無相反指示,則該等選擇本身不應被解譯為傳達與所描述之實施例之結構或操作相關之額外資訊。該等選擇之實例包含:用於圖式編號之代號之特定組織或指派;及用於識別及引用實施例之特徵及元件之元件識別符(例如圖說文字或數字指示符)之特定組織或指派。
具體言之,用語「包含」意欲被解譯為描述開放式範疇之邏輯組之抽象概念且不意謂傳達實體容量,除非明確地後續用語「在...之內」。
儘管已為使描述及理解清楚而描述前述實施例之一些細節,但本發明不受限於所提供之細節。存在本發明之諸多實施例。所揭示之實施例具例示性且不具限制性。
應瞭解,建構、配置及使用之諸多變動可與描述一致,且落於所發佈專利之申請專利範圍之範疇內。例如,互連及功能單元位元寬度、時脈速度及所使用之技術之類型可根據各組件區塊之各種實施例而變動。互連及邏輯所被給予之名稱僅具例示性,而不應解譯為限制所描述之概念。流程圖及流程圖程序、動作及功能元件之順序及配置
可根據各種實施例而變動。此外,若無特別相反說明,則所指定之值範圍、所使用之最大值及最小值或其他特定規格(諸如快閃記憶體技術類型;及暫存器及緩衝區中之項及階段之數目)僅為所描述之實施例之所指定之值範圍、所使用之最大值及最小值或其他特定規格,預期追蹤實施方案技術之改良及變化,且不應被解譯為限制。
此項技術中已知之功能等效技術可用於取代經描述以實施各種組件、子系統、操作、函式、常式、副常式、內嵌常式、程序、巨集指令或其等之部分之技術。亦應瞭解,可在硬體(例如一般專用電路)或軟體(例如經由程式化控制器或處理器之一些方式)中選擇性實現實施例之諸多功能態樣,作為實施例相依設計約束及更快速處理(促進先前硬體中之功能遷移至軟體中)與更高整合密度(促進先前軟體中之功能遷移至硬體中)之技術趨向之一函式。各種實施例之特定變動包含(但不限於):分割差異;不同形狀因數及組態;不同作業系統及其他系統軟體之使用;不同介面標準、網路協定或通信鏈路之使用;及根據一特定應用之獨特工程及商業約束而實施本文所描述之概念時所預期之其他變動。
已描述具有完全超出所描述之實施例之諸多態樣之一最簡單實施方案所需之細節及環境背景之細節及環境背景之實施例。一般技術者將認知,一些實施例在不改動剩餘元件之間之基本協作之情況下省略所揭示之組件或特徵。因此,應瞭解,無需所揭示細節之大多數來實施所描述之實施例之各種態樣。就剩餘元件可與先前技術區分而言,被省略之組件及特徵對本文所描述之概念無限制。
設計之全部此等變動未實質改變由所描述之實施例傳達之教示。亦應瞭解,本文所描述之實施例對其他計算及網路應用具有廣泛適用性,且不受限於所描述之實施例之特定應用或工業。因此,本發明應被解譯為包含所發佈專利之申請專利範圍之範疇內所涵蓋之全部
可能修改及變動。
1610‧‧‧控制器
1611‧‧‧接收資料
1612‧‧‧將資料儲存至緩衝區中
1613‧‧‧(開始)將資料程式化至非揮發性記憶體(NVM)
1614‧‧‧更新冗餘資訊
1615‧‧‧釋放緩衝區
1616‧‧‧延遲
1617‧‧‧(開始)將冗餘資訊程式化至非揮發性記憶體(NVM)
1618‧‧‧(重新開始)將資料程式化至非揮發性記憶體(NVM)
1619‧‧‧更新新的冗餘資料
1620‧‧‧非揮發性記憶體(NVM)
1621‧‧‧開始:將資料程式化
1622‧‧‧偵測到錯誤
1623‧‧‧完成:將資料程式化
1624‧‧‧開始:將冗餘資訊程式化
1625‧‧‧重新開始:將資料程式化
1626‧‧‧完成:將資料程式化
Claims (20)
- 一種方法,其包括:在一非揮發性記憶體控制器處接收待將複數個非揮發性記憶體之N個部分程式化之資料,該資料包括待將該N個部分之一特定者程式化之特定資料;將該特定資料儲存於與該非揮發性記憶體控制器相關聯之一分配緩衝區中;開始將該特定資料程式化至該等非揮發性記憶體之一特定者;更新足以修復該N個部分之M者之錯誤之冗餘資訊;釋放該分配緩衝區;其中該儲存、該開始將該特定資料程式化、該更新冗餘資訊及該釋放之至少一者係回應於該接收;及其中該釋放發生在該特定非揮發性記憶體完成該程式化之前。
- 如請求項1之方法,其中該冗餘資訊為第一冗餘資訊,已接收用於該N個部分之一子集之資料,尚未開始對該N個部分之該子集進行程式化,且該方法進一步包括:延遲該N個部分之該子集之至少部分之程式化;開始將該第一冗餘資訊程式化至該等非揮發性記憶體之一者;開始該N個部分之該子集之該至少部分之程式化;更新不同於該第一冗餘資訊且足以修復該N個部分之該子集之M者之錯誤之第二冗餘資訊;及其中該延遲程式化、該開始將該第一冗餘資訊程式化、該開 始該N個部分之該子集之該至少部分之程式化及該更新第二冗餘資訊之至少一者係回應於偵測到該特定資料之該程式化之一錯誤。
- 如請求項2之方法,其中當偵測到該錯誤時,僅儲存編碼於該第一冗餘資訊中之該特定資料。
- 如請求項1之方法,其中該資料進一步包括待將該N個部分之一第一者程式化之初始資料,且該方法進一步包括:至少部分地基於該初始資料而初始化該冗餘資訊。
- 如請求項1之方法,其中該非揮發性記憶體控制器包括該分配緩衝區。
- 如請求項1之方法,其中該分配緩衝區被包括在與包括該非揮發性記憶體控制器之一第二晶片分離之一第一晶片中。
- 如請求項1之方法,其中該非揮發性記憶體控制器可操作為能夠至少部分地經由與一儲存介面標準相容之一計算主機介面而與一計算主機通信之一固態磁碟控制器。
- 一種有形電腦可讀媒體,其具有儲存於其內之一組指令,該組指令在由一處理元件執行時引起該處理元件執行及/或控制包括下列各者之操作:在一非揮發性記憶體控制器處接收待將複數個非揮發性記憶體之N個部分程式化之資料,該資料包括待將該N個部分之一特定者程式化之特定資料;將該特定資料儲存於與該非揮發性記憶體控制器相關聯之一分配緩衝區中;開始將該特定資料程式化至該等非揮發性記憶體之一特定者;更新足以修復該N個部分之M者之錯誤之冗餘資訊; 釋放該分配緩衝區;其中該儲存、該開始將該特定資料程式化、該更新冗餘資訊及該釋放之至少一者係回應於該特定資料之該接收;及其中該釋放發生在該特定非揮發性記憶體完成該程式化之前。
- 如請求項8之有形電腦可讀媒體,其中該冗餘資訊為第一冗餘資訊,已接收用於該N個部分之一子集之資料,尚未開始對該N個部分之該子集進行程式化,且該等操作進一步包括:延遲該N個部分之該子集之至少部分之程式化;開始將該第一冗餘資訊程式化至該等非揮發性記憶體之若干者;開始該N個部分之該子集之該至少部分之程式化;更新不同於該第一冗餘資訊且足以修復該N個部分之該子集之M者之錯誤之第二冗餘資訊;及其中該延遲程式化、該開始將該第一冗餘資訊程式化、該開始該N個部分之該子集之該至少部分之程式化及該更新第二冗餘資訊之至少一者係回應於偵測到該特定資料之該程式化之一錯誤。
- 如請求項9之有形電腦可讀媒體,其中當偵測到該錯誤時,僅儲存編碼於該第一冗餘資訊中之該特定資料。
- 如請求項8之有形電腦可讀媒體,其中該資料進一步包括待將該N個部分之一第一者程式化之初始資料,且該等操作進一步包括:至少部分地基於該初始資料而初始化該冗餘資訊。
- 如請求項8之有形電腦可讀媒體,其中該非揮發性記憶體控制器包括該分配緩衝區。
- 如請求項8之有形電腦可讀媒體,其中該分配緩衝區被包括在與包括該非揮發性記憶體控制器之一第二晶片分離之一第一晶片中。
- 如請求項8之有形電腦可讀媒體,其中該非揮發性記憶體控制器可操作為能夠至少部分地經由與一儲存介面標準相容之一計算主機介面而與一計算主機通信之一固態磁碟控制器。
- 如請求項8之有形電腦可讀媒體,其中該非揮發性記憶體控制器包括該處理元件。
- 一種系統,其包括:一分配緩衝區;用於在一非揮發性記憶體控制器處接收待將複數個非揮發性記憶體之N個部分程式化之資料之構件,該資料包括待將該N個部分之一特定者程式化之特定資料;用於將該特定資料儲存於與該非揮發性記憶體控制器相關聯之該分配緩衝區中之構件;用於開始將該特定資料程式化至該等非揮發性記憶體之一特定者之構件;用於更新足以修復該N個部分之M者之錯誤之冗餘資訊之構件;用於釋放該分配緩衝區之構件;其中用於儲存之該構件、用於開始將該特定資料程式化之該構件、用於更新冗餘資訊之該構件及用於釋放之該構件之至少一者係回應於用於接收之該構件;及其中用於釋放之該構件可操作以在該特定非揮發性記憶體完成該程式化之前釋放該分配緩衝區。
- 如請求項16之系統,其中該冗餘資訊為第一冗餘資訊,已接收 用於該N個部分之一子集之資料,尚未開始對該N個部分之該子集進行程式化,且該系統進一步包括:用於延遲該N個部分之該子集之至少部分之程式化之構件;用於開始將該第一冗餘資訊程式化至該等非揮發性記憶體之若干者之構件;用於開始該N個部分之該子集之該至少部分之程式化之構件;用於更新不同於該第一冗餘資訊且足以修復該N個部分之該子集之M者之錯誤之第二冗餘資訊之構件;及其中用於延遲程式化之該構件、用於開始將該第一冗餘資訊程式化之該構件、用於開始該N個部分之該子集之該至少部分之程式化之該構件及用於更新第二冗餘資訊之該構件之至少一者係回應於用於偵測該特定資料之該程式化之一錯誤之構件。
- 如請求項17之系統,其中當偵測到該錯誤時,僅儲存編碼於該第一冗餘資訊中之該特定資料。
- 如請求項16之系統,其中該資料進一步包括待將該N個部分之一第一者程式化之初始資料,且該系統進一步包括:用於至少部分地基於該初始資料而初始化該冗餘資訊之構件。
- 如請求項16之系統,其中該非揮發性記憶體控制器包括該分配緩衝區。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/728,573 US9569320B2 (en) | 2010-12-01 | 2012-12-27 | Non-volatile memory program failure recovery via redundant arrays |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201432702A true TW201432702A (zh) | 2014-08-16 |
TWI529734B TWI529734B (zh) | 2016-04-11 |
Family
ID=49726607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102145669A TWI529734B (zh) | 2012-12-27 | 2013-12-11 | 用於操作非揮發性儲存器之方法、有形電腦可讀媒體及非揮發性儲存系統 |
Country Status (6)
Country | Link |
---|---|
US (3) | US9569320B2 (zh) |
EP (1) | EP2750018A3 (zh) |
JP (1) | JP6285709B2 (zh) |
KR (1) | KR101912596B1 (zh) |
CN (1) | CN103902403B (zh) |
TW (1) | TWI529734B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI567544B (zh) * | 2015-07-14 | 2017-01-21 | 上海寶存信息科技有限公司 | 於控制邏輯錯誤時重新配置存儲控制器的方法以及使用該方法的裝置 |
TWI582782B (zh) * | 2015-11-17 | 2017-05-11 | 旺宏電子股份有限公司 | 動態冗餘修復 |
TWI601008B (zh) * | 2014-12-10 | 2017-10-01 | 英特爾公司 | 跨多重儲存裝置進行基元寫入操作之技術 |
TWI636366B (zh) * | 2017-11-22 | 2018-09-21 | 緯穎科技服務股份有限公司 | 資料冗餘的處理方法及其相關電腦系統 |
US10089196B2 (en) | 2015-07-14 | 2018-10-02 | Shannon Systems Ltd. | Methods for reconfiguring a storage controller when control logic fails and apparatuses using the same |
TWI661307B (zh) * | 2017-12-06 | 2019-06-01 | 慧榮科技股份有限公司 | 資料儲存裝置、主機裝置、以及資料寫入方法 |
TWI687805B (zh) * | 2015-08-26 | 2020-03-11 | 韓商愛思開海力士有限公司 | 記憶體系統及其操作方法 |
TWI779209B (zh) * | 2019-06-28 | 2022-10-01 | 華邦電子股份有限公司 | 具有動態資料修復機制的記憶體存放裝置及其動態資料修復的方法 |
Families Citing this family (107)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103348330B (zh) | 2010-12-01 | 2017-05-24 | 希捷科技有限公司 | 采用独立硅元件的动态较高级冗余模式管理 |
US9569320B2 (en) * | 2010-12-01 | 2017-02-14 | Seagate Technology Llc | Non-volatile memory program failure recovery via redundant arrays |
JP2014507717A (ja) | 2011-01-18 | 2014-03-27 | エルエスアイ コーポレーション | より高いレベルの冗長な情報の計算 |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US10642505B1 (en) | 2013-01-28 | 2020-05-05 | Radian Memory Systems, Inc. | Techniques for data migration based on per-data metrics and memory degradation |
US9444889B1 (en) * | 2013-02-08 | 2016-09-13 | Quantcast Corporation | Managing distributed system performance using accelerated data retrieval operations |
US9519577B2 (en) * | 2013-09-03 | 2016-12-13 | Sandisk Technologies Llc | Method and system for migrating data between flash memory devices |
US9442670B2 (en) * | 2013-09-03 | 2016-09-13 | Sandisk Technologies Llc | Method and system for rebalancing data stored in flash memory devices |
US10067829B2 (en) * | 2013-12-13 | 2018-09-04 | Intel Corporation | Managing redundancy information in a non-volatile memory |
US9262268B2 (en) * | 2013-12-20 | 2016-02-16 | Seagate Technology Llc | Method to distribute user data and error correction data over different page types by leveraging error rate variations |
US8874835B1 (en) | 2014-01-16 | 2014-10-28 | Pure Storage, Inc. | Data placement based on data properties in a tiered storage device system |
US9645749B2 (en) | 2014-05-30 | 2017-05-09 | Sandisk Technologies Llc | Method and system for recharacterizing the storage density of a memory device or a portion thereof |
US8891303B1 (en) | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
US9348518B2 (en) | 2014-07-02 | 2016-05-24 | International Business Machines Corporation | Buffered automated flash controller connected directly to processor memory bus |
US9542284B2 (en) * | 2014-08-06 | 2017-01-10 | International Business Machines Corporation | Buffered automated flash controller connected directly to processor memory bus |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
US9766972B2 (en) * | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
US9691452B2 (en) * | 2014-08-15 | 2017-06-27 | Micron Technology, Inc. | Apparatuses and methods for concurrently accessing different memory planes of a memory |
US9563370B2 (en) | 2014-09-02 | 2017-02-07 | Sandisk Technologies Llc | Triggering a process to reduce declared capacity of a storage device |
US9582203B2 (en) | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses |
US9582202B2 (en) | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by moving data |
US9519427B2 (en) | 2014-09-02 | 2016-12-13 | Sandisk Technologies Llc | Triggering, at a host system, a process to reduce declared capacity of a storage device |
US9563362B2 (en) | 2014-09-02 | 2017-02-07 | Sandisk Technologies Llc | Host system and process to reduce declared capacity of a storage device by trimming |
US9582193B2 (en) | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Triggering a process to reduce declared capacity of a storage device in a multi-storage-device storage system |
US9552166B2 (en) | 2014-09-02 | 2017-01-24 | Sandisk Technologies Llc. | Process and apparatus to reduce declared capacity of a storage device by deleting data |
US9582212B2 (en) | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Notification of trigger condition to reduce declared capacity of a storage device |
US9524112B2 (en) | 2014-09-02 | 2016-12-20 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by trimming |
US9665311B2 (en) | 2014-09-02 | 2017-05-30 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by making specific logical addresses unavailable |
US9524105B2 (en) | 2014-09-02 | 2016-12-20 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by altering an encoding format |
US9582220B2 (en) | 2014-09-02 | 2017-02-28 | Sandisk Technologies Llc | Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system |
US9652153B2 (en) | 2014-09-02 | 2017-05-16 | Sandisk Technologies Llc | Process and apparatus to reduce declared capacity of a storage device by reducing a count of logical addresses |
US10552085B1 (en) | 2014-09-09 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for directed data migration |
US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US9678665B2 (en) * | 2015-03-06 | 2017-06-13 | Western Digital Technologies, Inc. | Methods and systems for memory page allocation |
KR20160127524A (ko) | 2015-04-27 | 2016-11-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN106155812A (zh) | 2015-04-28 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 一种对虚拟主机的资源管理的方法、装置、系统及电子设备 |
US9606737B2 (en) | 2015-05-20 | 2017-03-28 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning |
US9639282B2 (en) | 2015-05-20 | 2017-05-02 | Sandisk Technologies Llc | Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices |
US10108509B2 (en) * | 2015-07-16 | 2018-10-23 | Texas Instruments Incorporated | Dynamic enabling of redundant memory cells during operating life |
US10552058B1 (en) | 2015-07-17 | 2020-02-04 | Radian Memory Systems, Inc. | Techniques for delegating data processing to a cooperative memory controller |
KR102385138B1 (ko) * | 2015-10-08 | 2022-04-12 | 삼성전자주식회사 | 정정 불가능한 ecc 오류를 갖는 데이터를 복구하도록 구성되는 raid 컨트롤러 장치 및 스토리지 장치 |
US10061644B2 (en) * | 2015-11-02 | 2018-08-28 | Qualcomm Incorporated | Systems and methods for implementing error correcting code in a memory |
US9910594B2 (en) | 2015-11-05 | 2018-03-06 | Micron Technology, Inc. | Apparatuses and methods for concurrently accessing multiple memory planes of a memory during a memory access operation |
US10719236B2 (en) * | 2015-11-20 | 2020-07-21 | Arm Ltd. | Memory controller with non-volatile buffer for persistent memory operations |
US9946483B2 (en) | 2015-12-03 | 2018-04-17 | Sandisk Technologies Llc | Efficiently managing unmapped blocks to extend life of solid state drive with low over-provisioning |
US9946473B2 (en) | 2015-12-03 | 2018-04-17 | Sandisk Technologies Llc | Efficiently managing unmapped blocks to extend life of solid state drive |
CN105512007B (zh) * | 2015-12-17 | 2018-12-04 | 英业达科技有限公司 | 一种pcie硬盘状态灯的控制方法及系统 |
US9529663B1 (en) | 2015-12-20 | 2016-12-27 | Apple Inc. | Detection and localization of failures in 3D NAND flash memory |
KR102407437B1 (ko) * | 2015-12-30 | 2022-06-10 | 삼성전자주식회사 | 불휘발성 메모리 모듈을 포함하는 메모리 시스템 및 전자 장치 |
US10318378B2 (en) * | 2016-02-25 | 2019-06-11 | Micron Technology, Inc | Redundant array of independent NAND for a three-dimensional memory array |
US9983820B2 (en) * | 2016-03-29 | 2018-05-29 | Nxp B.V. | Method for performing data updates |
KR102615593B1 (ko) * | 2016-05-04 | 2023-12-21 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US10282111B2 (en) * | 2016-07-29 | 2019-05-07 | Western Digital Technologies, Inc. | Adaptive wear levelling |
US10452477B2 (en) * | 2016-08-26 | 2019-10-22 | Netapp, Inc. | Multiple node repair using high rate minimum storage regeneration erasure code |
KR102706994B1 (ko) * | 2016-09-07 | 2024-09-19 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 |
KR102611638B1 (ko) | 2016-09-27 | 2023-12-08 | 삼성전자주식회사 | 스토리지 장치의 동작 방법 및 스토리지 장치를 포함하는 데이터 저장 시스템 |
KR102487553B1 (ko) * | 2016-12-07 | 2023-01-11 | 삼성전자주식회사 | 리페어 가능한 휘발성 메모리를 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법 |
US9747158B1 (en) | 2017-01-13 | 2017-08-29 | Pure Storage, Inc. | Intelligent refresh of 3D NAND |
US10248515B2 (en) | 2017-01-19 | 2019-04-02 | Apple Inc. | Identifying a failing group of memory cells in a multi-plane storage operation |
US10168948B2 (en) * | 2017-02-20 | 2019-01-01 | International Business Machines Corporation | Replicating data in a data storage system |
US10885991B2 (en) * | 2017-04-04 | 2021-01-05 | Sandisk Technologies Llc | Data rewrite during refresh window |
US10372522B2 (en) * | 2017-04-28 | 2019-08-06 | Advanced Micro Devices, Inc. | Memory protection in highly parallel computing hardware |
US10915405B2 (en) * | 2017-05-26 | 2021-02-09 | Netapp, Inc. | Methods for handling storage element failures to reduce storage device failure rates and devices thereof |
US10248330B2 (en) * | 2017-05-30 | 2019-04-02 | Seagate Technology Llc | Data storage device with buffer tenure management |
US11074009B2 (en) | 2017-06-19 | 2021-07-27 | Micron Technology, Inc. | Managed NAND cold data storage |
US10585749B2 (en) | 2017-08-10 | 2020-03-10 | Samsung Electronics Co., Ltd. | System and method for distributed erasure coding |
US10901868B1 (en) * | 2017-10-02 | 2021-01-26 | Marvell Asia Pte, Ltd. | Systems and methods for error recovery in NAND memory operations |
WO2019118356A1 (en) * | 2017-12-11 | 2019-06-20 | Fungible, Inc. | Durable block storage in data center access nodes with inline erasure coding |
US10642602B2 (en) * | 2017-12-12 | 2020-05-05 | Nxp Usa, Inc. | NVM architecture with OTA support |
CN110058791B (zh) * | 2018-01-18 | 2022-05-10 | 伊姆西Ip控股有限责任公司 | 存储系统以及相应的方法和计算机可读介质 |
TWI651650B (zh) * | 2018-02-05 | 2019-02-21 | 大陸商深圳大心電子科技有限公司 | 記憶體管理方法及使用所述方法的儲存控制器 |
US11099831B2 (en) * | 2018-02-08 | 2021-08-24 | Micron Technology, Inc. | Firmware update in a storage backed memory system |
JP6960877B2 (ja) | 2018-03-22 | 2021-11-05 | キオクシア株式会社 | メモリシステム |
CN110413218B (zh) * | 2018-04-28 | 2023-06-23 | 伊姆西Ip控股有限责任公司 | 用于存储系统中的故障恢复的方法、装置和计算机程序产品 |
US11048597B2 (en) * | 2018-05-14 | 2021-06-29 | Micron Technology, Inc. | Memory die remapping |
CN108762975B (zh) * | 2018-05-24 | 2021-06-08 | 深圳市德明利技术股份有限公司 | 一种ecc数据存储方法、系统及存储介质 |
US10755787B2 (en) | 2018-06-28 | 2020-08-25 | Apple Inc. | Efficient post programming verification in a nonvolatile memory |
US10762967B2 (en) | 2018-06-28 | 2020-09-01 | Apple Inc. | Recovering from failure in programming a nonvolatile memory |
US10990478B2 (en) | 2019-02-01 | 2021-04-27 | Fungible, Inc. | Flexible reliability coding for storage on a network |
US10761931B2 (en) | 2018-10-24 | 2020-09-01 | Fungible, Inc. | Inline reliability coding for storage on a network |
US10922178B2 (en) * | 2018-10-31 | 2021-02-16 | Hewlett Packard Enterprise Development Lp | Masterless raid for byte-addressable non-volatile memory |
US10872039B2 (en) | 2018-12-03 | 2020-12-22 | Micron Technology, Inc. | Managing redundancy contexts in storage devices using eviction and restoration |
CN109799959B (zh) * | 2019-01-22 | 2020-07-10 | 华中科技大学 | 一种提高开放通道固态盘写并行性的方法 |
US10936455B2 (en) | 2019-02-11 | 2021-03-02 | Apple Inc. | Recovery of data failing due to impairment whose severity depends on bit-significance value |
CN113424262B (zh) * | 2019-03-21 | 2024-01-02 | 华为技术有限公司 | 一种存储校验方法及装置 |
US11269552B2 (en) | 2019-06-14 | 2022-03-08 | Micron Technology, Inc. | Multi-pass data programming in a memory sub-system having multiple dies and planes |
KR102650809B1 (ko) | 2019-08-02 | 2024-03-26 | 삼성전자주식회사 | 스토리지 장치 및 그것의 동작 방법 |
US10915394B1 (en) | 2019-09-22 | 2021-02-09 | Apple Inc. | Schemes for protecting data in NVM device using small storage footprint |
CN111186139B (zh) * | 2019-12-25 | 2022-03-15 | 西北工业大学 | 一种3d打印模型的多层次并行切片方法 |
US11321173B2 (en) * | 2019-12-31 | 2022-05-03 | Micron Technology, Inc. | Managing storage of multiple plane parity data in a memory sub-system |
US11221949B2 (en) * | 2020-02-10 | 2022-01-11 | Micron Technology, Inc. | Multi state purgatory for media management for a memory subsystem |
US11630729B2 (en) | 2020-04-27 | 2023-04-18 | Fungible, Inc. | Reliability coding with reduced network traffic |
CN111639008B (zh) * | 2020-05-29 | 2023-08-25 | 杭州海康威视系统技术有限公司 | 基于双端口ssd的文件系统状态监测方法、装置及电子设备 |
KR20220120967A (ko) | 2021-02-24 | 2022-08-31 | 삼성전자주식회사 | 스토리지 컨트롤러, 그 동작방법 |
US11650881B2 (en) * | 2021-03-19 | 2023-05-16 | Micron Technology, Inc. | Managing storage reduction and reuse in the presence of storage device failures |
US20230015697A1 (en) * | 2021-07-13 | 2023-01-19 | Citrix Systems, Inc. | Application programming interface (api) authorization |
KR20230022060A (ko) | 2021-08-06 | 2023-02-14 | 삼성전자주식회사 | 설정 데이터를 저장하는 메모리 장치 및 그 동작방법 |
CN113687976B (zh) * | 2021-08-27 | 2022-04-12 | 中国人民解放军军事科学院军事医学研究院 | 面向dna信息存储的编码和解码方法与装置 |
US11550657B1 (en) | 2021-09-01 | 2023-01-10 | Apple Inc. | Efficient programming schemes in a nonvolatile memory |
CN114281265B (zh) * | 2021-12-28 | 2023-08-15 | 深圳大普微电子科技有限公司 | 一种存储介质失效的处理方法、装置和固态硬盘 |
US11934270B2 (en) * | 2022-06-02 | 2024-03-19 | Micron Technology, Inc. | Write command execution for data protection and recovery schemes |
CN114911631B (zh) * | 2022-07-18 | 2022-10-21 | 深圳市泛联信息科技有限公司 | 基于持久内存技术的全局资源管理方法及系统 |
CN117608500B (zh) * | 2024-01-23 | 2024-03-29 | 四川省华存智谷科技有限责任公司 | 一种存储系统在数据冗余不足时抢救有效数据的方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19544571A1 (de) * | 1995-11-30 | 1997-06-05 | Sel Alcatel Ag | Verfahren und Vorrichtung zum Programmieren eines Flash-EEProms |
JP4499193B2 (ja) * | 1997-04-07 | 2010-07-07 | ソニー株式会社 | 記録再生装置及び記録再生方法 |
US6910155B2 (en) * | 2001-06-25 | 2005-06-21 | Hewlett-Packard Development Company, L.P. | System and method for chip testing |
TW200302966A (en) | 2002-01-29 | 2003-08-16 | Matsushita Electric Ind Co Ltd | Memory device, data processing method and data processing program |
JP2005293427A (ja) * | 2004-04-02 | 2005-10-20 | Matsushita Electric Ind Co Ltd | データ転送処理装置及びデータ転送処理方法 |
US8291295B2 (en) | 2005-09-26 | 2012-10-16 | Sandisk Il Ltd. | NAND flash memory controller exporting a NAND interface |
WO2008084488A2 (en) * | 2007-01-11 | 2008-07-17 | Red Bend Ltd. | Method and system for in-place updating content stored in a storage device |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
KR101246833B1 (ko) | 2007-12-20 | 2013-03-28 | 삼성전자주식회사 | 저항체를 이용한 비휘발성 메모리 장치, 이를 포함하는메모리 시스템, 및 이의 구동 방법 |
US9152496B2 (en) * | 2007-12-21 | 2015-10-06 | Cypress Semiconductor Corporation | High performance flash channel interface |
US20110099556A1 (en) * | 2009-10-22 | 2011-04-28 | International Business Machines Corporation | Updating system for a microcontroller and associated methods |
US9569320B2 (en) | 2010-12-01 | 2017-02-14 | Seagate Technology Llc | Non-volatile memory program failure recovery via redundant arrays |
JP2014507717A (ja) * | 2011-01-18 | 2014-03-27 | エルエスアイ コーポレーション | より高いレベルの冗長な情報の計算 |
US8924627B2 (en) | 2011-03-28 | 2014-12-30 | Western Digital Technologies, Inc. | Flash memory device comprising host interface for processing a multi-command descriptor block in order to exploit concurrency |
KR20130040486A (ko) * | 2011-10-14 | 2013-04-24 | 삼성전자주식회사 | 저장 장치 및 그것을 이용하는 사용자 장치 |
JP2013131095A (ja) * | 2011-12-22 | 2013-07-04 | Toshiba Corp | メモリコントローラ、記憶装置およびメモリ制御方法 |
-
2012
- 2012-12-27 US US13/728,573 patent/US9569320B2/en active Active
-
2013
- 2013-12-09 EP EP20130196184 patent/EP2750018A3/en not_active Withdrawn
- 2013-12-11 TW TW102145669A patent/TWI529734B/zh active
- 2013-12-24 JP JP2013264768A patent/JP6285709B2/ja not_active Expired - Fee Related
- 2013-12-24 KR KR1020130162679A patent/KR101912596B1/ko active IP Right Grant
- 2013-12-26 CN CN201310739979.XA patent/CN103902403B/zh not_active Expired - Fee Related
-
2017
- 2017-01-10 US US15/402,773 patent/US10467093B2/en active Active
-
2019
- 2019-09-24 US US16/580,361 patent/US11144389B2/en active Active
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI601008B (zh) * | 2014-12-10 | 2017-10-01 | 英特爾公司 | 跨多重儲存裝置進行基元寫入操作之技術 |
TWI567544B (zh) * | 2015-07-14 | 2017-01-21 | 上海寶存信息科技有限公司 | 於控制邏輯錯誤時重新配置存儲控制器的方法以及使用該方法的裝置 |
US10089196B2 (en) | 2015-07-14 | 2018-10-02 | Shannon Systems Ltd. | Methods for reconfiguring a storage controller when control logic fails and apparatuses using the same |
TWI687805B (zh) * | 2015-08-26 | 2020-03-11 | 韓商愛思開海力士有限公司 | 記憶體系統及其操作方法 |
TWI582782B (zh) * | 2015-11-17 | 2017-05-11 | 旺宏電子股份有限公司 | 動態冗餘修復 |
TWI636366B (zh) * | 2017-11-22 | 2018-09-21 | 緯穎科技服務股份有限公司 | 資料冗餘的處理方法及其相關電腦系統 |
US10838895B2 (en) | 2017-11-22 | 2020-11-17 | Wiwynn Corporation | Processing method of data redundancy and computer system thereof |
TWI661307B (zh) * | 2017-12-06 | 2019-06-01 | 慧榮科技股份有限公司 | 資料儲存裝置、主機裝置、以及資料寫入方法 |
US10783037B2 (en) | 2017-12-06 | 2020-09-22 | Silicon Motion, Inc. | Data storage device, host device for data storage device operations, and data writing method |
TWI779209B (zh) * | 2019-06-28 | 2022-10-01 | 華邦電子股份有限公司 | 具有動態資料修復機制的記憶體存放裝置及其動態資料修復的方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2750018A3 (en) | 2015-05-20 |
US9569320B2 (en) | 2017-02-14 |
KR101912596B1 (ko) | 2018-10-29 |
EP2750018A2 (en) | 2014-07-02 |
JP2014130587A (ja) | 2014-07-10 |
TWI529734B (zh) | 2016-04-11 |
US20170147435A1 (en) | 2017-05-25 |
CN103902403B (zh) | 2017-05-03 |
JP6285709B2 (ja) | 2018-02-28 |
KR20140092750A (ko) | 2014-07-24 |
US10467093B2 (en) | 2019-11-05 |
CN103902403A (zh) | 2014-07-02 |
US11144389B2 (en) | 2021-10-12 |
US20200019463A1 (en) | 2020-01-16 |
US20140189421A1 (en) | 2014-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI529734B (zh) | 用於操作非揮發性儲存器之方法、有形電腦可讀媒體及非揮發性儲存系統 | |
US11379301B2 (en) | Fractional redundant array of silicon independent elements | |
TWI566254B (zh) | 用於操作一記憶體之方法、記憶體系統、記憶體設備及非暫態機器可讀媒體 | |
US9183140B2 (en) | Higher-level redundancy information computation | |
US9105305B2 (en) | Dynamic higher-level redundancy mode management with independent silicon elements | |
TWI531902B (zh) | 矽獨立元件之部分冗餘陣列 |