TW201415225A - 矽獨立元件之部分冗餘陣列 - Google Patents
矽獨立元件之部分冗餘陣列 Download PDFInfo
- Publication number
- TW201415225A TW201415225A TW102127999A TW102127999A TW201415225A TW 201415225 A TW201415225 A TW 201415225A TW 102127999 A TW102127999 A TW 102127999A TW 102127999 A TW102127999 A TW 102127999A TW 201415225 A TW201415225 A TW 201415225A
- Authority
- TW
- Taiwan
- Prior art keywords
- pages
- flash memory
- data
- information
- higher order
- Prior art date
Links
Classifications
-
- 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/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/76—Masking faults in memories by using spares or by reconfiguring using address translation or modifications
- G11C29/765—Masking faults in memories by using spares or by reconfiguring using address translation or modifications in solid state disks
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/80—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
- G11C29/81—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout using a hierarchical redundancy scheme
-
- 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/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/80—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
- G11C29/816—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
- G11C29/82—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for EEPROMs
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
較高階冗餘資訊計算使得固態磁碟(SSD)控制器能夠提供較高階冗餘能力以在非揮發性記憶體(例如,快閃記憶體)元件在部分地由控制器實施之SSD的操作期間失敗的內容脈絡中維持可靠操作。舉例而言,一第一計算為一XOR(互斥或),且一第二計算為一加權和。各種量個儲存器專用於儲存較高階冗餘資訊,諸如等效於快閃記憶體晶粒之整數倍(例如,一個、兩個或三個完整快閃記憶體晶粒)的量,及諸如等效於單一快閃記憶體晶粒之一分率(例如,單一快閃記憶體晶粒之二分之一或四分之一)的量。
Description
在隨附應用程式資料工作表、請求或傳送件(若存在,在適用時)中進行本申請案之優先權權利主張。在本申請案之類型允許之範圍內,出於所有目的,本申請案以引用之方式併入以下申請案,在進行本發明時,以下所有申請案與本申請案共同擁有:
在2010年12月1日申請、第一發明人為Jeremy Isaac Nathaniel WERNER且題為「DYNAMIC HIGHER-LEVEL REDUNDANCY MODE MANAGEMENT WITH INDEPENDENT SILICON ELEMENTS」之美國臨時申請案(檔案號碼SF-10-10及第61/418,846號);在2011年1月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年1月18日申請、第一發明人為Jeremy Isaac Nathaniel WERNER且題為「HIGHER-LEVEL REDUNDANCY INFORMATION COMPUTATION」之PCT申請案(檔案號碼SF-10-14PCT及第PCT/US12/21682號);在2012年8月13日申請、第一發明人為Earl T.COHEN且題為「FRACTIONAL REDUNDANT ARRAY OF SILICON INDEPENDENT ELEMENTS」之美國臨時申請案(檔案號碼L12-1959US1及第61/682,561號);及在2012年11月13日申請、第一發明人為Earl T.COHEN且題為「矽獨立元件之部分冗餘陣列(FRACTIONAL REDUNDANT ARRAY OF SILICON INDEPENDENT ELEMENTS)」之美國非臨時申請案(檔案號碼L12-1959US2及第13/675,874號)。
需要儲存技術及製造的進步以提供在成本、收益性、效能、效率及使用之效用方面的改良。
除非明確地識別為公開已知或熟知,否則技術及概念在本文中之提及(包括出於內容脈絡(context)、定義或比較之目的)不應理解為承認此等技術及概念先前公開已知或以其他方式為先前技術之部分。出於所有目的,本文中引證之所有參考文獻(若存在)(包括專利、專利申請案及公開案)的全文以引用之方式併入本文中(無論是特定地併入抑或未特定地併入)。
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‧‧‧記憶體
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.1P0‧‧‧頁面
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)/較低階錯誤校正碼(ECC)部分
911.U‧‧‧使用者資料/使用者資料部分
931‧‧‧讀取單元
931.E‧‧‧較低階冗餘資訊/較低階錯誤校正碼(ECC)/較低階錯誤校正碼(ECC)部分
931.U‧‧‧使用者資料/使用者資料部分
951‧‧‧讀取單元
951.E‧‧‧較低階冗餘資訊/較低階錯誤校正碼(ECC)/較低階錯誤校正碼(ECC)部分
951.U‧‧‧使用者資料/使用者資料部分
971‧‧‧讀取單元
971.E‧‧‧較低階冗餘資訊/較低階錯誤校正碼(ECC)/較低階錯誤校正碼(ECC)部分
971.U‧‧‧使用者資料/使用者資料部分
1001‧‧‧結果/虛線箭頭
1002‧‧‧結果/虛線箭頭
1003‧‧‧結果/虛線箭頭
1010‧‧‧R0
1011‧‧‧R1
1019‧‧‧資料
1401A‧‧‧開始
1401B‧‧‧開始
1402A‧‧‧發出讀取操作
1402B‧‧‧頁面就緒?
1403A‧‧‧所有經發出?
1403B‧‧‧執行基於頁面之計算
1404B‧‧‧頁面完結?
1499A‧‧‧結束
1499B‧‧‧結束
1501A‧‧‧開始
1501B‧‧‧開始
1502A‧‧‧發出寫入操作
1502B‧‧‧寫入正確(OK)?
1503A‧‧‧所有經發出?
1503B‧‧‧自冗餘退出寫入
1504B‧‧‧寫入完結?
1599A‧‧‧結束
1599B‧‧‧結束
1600‧‧‧R頁面
1600.D‧‧‧資料資訊
1600.R‧‧‧冗餘資訊
1601‧‧‧R頁面
1601.D‧‧‧資料資訊
1601.R‧‧‧冗餘資訊
1602‧‧‧R頁面
1602.D‧‧‧資料資訊
1602.R‧‧‧冗餘資訊
1609‧‧‧R頁面
1609.D‧‧‧資料資訊
1609.R‧‧‧冗餘資訊
1610.D‧‧‧資料資訊
1610.R‧‧‧冗餘資訊
1620.D‧‧‧資料資訊
1620.R‧‧‧冗餘資訊
1690.D‧‧‧資料資訊
1690.R‧‧‧冗餘資訊
1700‧‧‧在第一及第二細微度較高階冗餘模式中同時操作
1701‧‧‧開始
1702‧‧‧在第一細微度較高階冗餘模式中操作
1703‧‧‧根據第一細微度較高階冗餘模式讀取/寫入
1704‧‧‧在第二細微度較高階冗餘模式中操作
1705‧‧‧根據第二細微度較高階冗餘模式讀取/寫入
1706‧‧‧細微度?
1706.1‧‧‧第一
1706.2‧‧‧第二
1707‧‧‧讀取/寫入請求
圖1A說明固態磁碟(SSD)之實施例的選定細節,該固態磁碟(SSD)包括為非揮發性記憶體(NVM)提供部分較高階冗餘之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之寫入的較高階冗餘資訊之計算退出之實施例的選定細節。
圖16A至圖16C說明部分較高階冗餘之實施例的選定細節。
本發明可以眾多方式實施為(例如)程序、製品、裝置、系統、物質組成及諸如電腦可讀儲存媒體(例如,光學及/或磁性大容量儲存器件(諸如,磁碟)、具有非揮發性儲存器(諸如,快閃記憶體儲存器)之積體電路中的媒體)之電腦可讀媒體,或經由光學或電子通信鏈路發送程式指令的電腦網路。[實施方式]提供對實現在上文[發明所屬之技術領域]中識別的在成本、有利性、效能、效率及使用效用方面之改良的本發明之一或多個實施例的闡述。[實施方式]包括促進對[實施方式]之剩餘部分之理解的引言。引言包括根據本文中描述之概念的系統、方法、製品及電腦可讀媒體中之一或多者的實例實施例。如結論中較詳細地論述,本發明涵蓋在所發佈申請專利範圍之範疇內的所有可能修改及變化。
下文連同說明本發明之選定細節的附圖一起提供本發明之一或多個實施例的[實施方式]。結合實施例描述本發明。將本文中之實施例理解為僅例示性的,本發明明確地不限於本文中之實施例中的任一者或全部或受其所限,且本發明涵蓋眾多替代、修改及等效物。為避免闡述單調,多種詞語標記(諸如:第一、最後、某些、各種、另外、其他、特定、選擇、一些,及值得注意的)可應用於實施例之單獨集合;如本文中所使用,此等標記明確地不意謂傳達品質或任何形式之偏好或偏見,而僅用以方便地區別該等單獨集合。所揭示程序之
一些操作的次序可在本發明之範疇內更改。無論在何處多個實施例用以描述程序、系統及/或程式指令特徵之變化,均預期根據預定或動態判定之準則執行分別對應於複數個該多個實施例之複數個操作模式中之一者的靜態及/或動態選擇的其他實施例。在以下描述中陳述眾多特定細節以提供對本發明之透徹理解。出於舉例之目的而提供該等細節且本發明可在無該等細節中之一些或全部的情況下根據申請專利範圍來實踐。出於清楚之目的,未詳細描述在與本發明有關之技術領域中已知的技術資料,使得不會不必要地使本發明難以理解。
包括此引言僅用以促進對[實施方式]之更快速理解;本發明不限於引言(包括明確實例,若存在)中所呈現之概念,此係因為任何引言段落必定為整個主題之簡略見解且不意謂為詳盡或限制性描述。舉例而言,以下引言提供關於僅某些實施例之由空間及組織限制的概述資訊。存在許多其他實施例,包括申請專利範圍最終將描繪、在整個說明書之剩餘部分中論述的彼等實施例。
此處定義之各種速記縮寫(例如,縮略字)中之至少一些指代本文中所使用之某些元件。
NAND快閃記憶體使用浮動閘極電晶體之陣列來儲存資訊。在SLC技術中,啟用每一位元記憶體胞(例如,浮動閘極電晶體)以儲存一個資訊位元。在MLC技術中,啟用每一位元記憶體胞以儲存多個資訊位元。隨著製造技術(例如,CMOS技術)按比例縮小,每一浮動閘極儲存更少電子。此外,隨著儲存容量及密度增加,每一位元記憶體胞儲存更多位元。因此,藉由較小電壓範圍來表示儲存於位元記憶體胞中之值。感測之不確定性及/或所儲存電子之量隨時間的改變增加資料被錯誤儲存或讀取之機率。一或多種冗餘及/或ECC技術之使用(例如,在較低階層處)使得能夠自NAND快閃記憶體正確擷取否則會損毀之資料,從而在一些使用情況下克服前述困難中之一些。
一些類型之SSD使用快閃記憶體來提供非揮發性儲存(例如,快閃記憶體在不施加電力之情況下留存資訊)。一或多種ECC及/或冗餘技術之使用(例如,在較高階層處)使得能夠自快閃記憶體正確擷取否則會損毀之資料,及/或甚至在一或多個快閃記憶體元件間歇地或永久地失敗時實現SSD之正確系統階層操作。
舉例而言,SSD控制器實現具有獨立矽元件之動態較高階冗餘模式管理以在一或多個NVM(例如,快閃記憶體)元件在部分地由控制器實施之SSD之操作期間失敗時提供柔性(graceful)降級。讀取NVM之一部分。若使用較低階冗餘及/或錯誤校正(諸如,根據一或多種ECC技術)不可校正之錯誤發生,則較高階冗餘及/或錯誤校正(諸如,根據
一或多種RASIE技術及/或動態較高階冗餘模式管理技術)用以嘗試校正該錯誤。若NVM元件中之一者的失敗係藉由較低階及/或較高階冗餘及/或錯誤校正及/或藉由其他技術(諸如,由NVM元件中之一或多者報告的失敗狀態)而偵測到,則較高階冗餘及/或錯誤校正自在當前模式中操作動態地轉變至在新模式中操作。該轉變包括減少SSD上可得之可用空間、重新配置SSD之資料儲存、恢復/儲存失敗之使用者資料(若可能),及判定/儲存修訂之較高階冗餘及/或錯誤校正資訊中之一或多者。操作接著在新模式中繼續。若藉由現於新模式中操作之較高階冗餘及/或錯誤校正而偵測到NVM元件中之另一者的另一失敗,則進行至另一較高階冗餘及/或錯誤校正模式之另一轉變。寫入NVM係根據較高階冗餘及/或錯誤校正操作模式,包括根據較高階冗餘及/或錯誤校正操作模式及寫入資料判定/儲存較高階冗餘及/或錯誤校正資訊。
若大於臨限數目及/或速率之較低階錯誤校正及/或一或多個失敗發生在記憶體之區域,則視情況將記憶體之區域動態地轉變至在新的較高階冗餘及/或錯誤校正操作模式中操作,與當前較高階冗餘及/或錯誤校正操作模式相比,啟用該新的較高階冗餘及/或錯誤校正操作模式以自更多錯誤恢復。舉例而言,若無當前較高階冗餘及/或錯誤校正操作模式(例如,無較高階冗餘資訊經計算及/或用以自較低階冗餘之失敗恢復以校正錯誤),則新的較高階冗餘及/或錯誤校正操作模式為使得能夠自不可由較低階冗餘校正之單一失敗恢復的操作模式。對於另一實例,若當前較高階冗餘及/或錯誤校正操作模式為使得能夠自不可由較低階冗餘校正之單一失敗恢復的操作模式,則新的較高階冗餘及/或錯誤校正操作模式為使得能夠自不可由較低階冗餘校正之兩個失敗恢復的操作模式。
在一些實施例及/或使用情況下,判定/儲存較高階冗餘及/或錯誤
校正資訊係根據較高階冗餘資訊之計算。較高階冗餘資訊計算使得SSD控制器能夠提供較高階冗餘能力以在非揮發性記憶體(例如,快閃記憶體)元件在部分地由控制器實施之SSD的操作期間失敗的內容脈絡中維持可靠操作。經由待由較高階冗餘資訊保護之資料(例如,等量區(stripe))之部分中的所有頁面之互斥或(XOR)使用同位編碼來計算較高階冗餘資訊之第一部分。使用加權和技術計算較高階冗餘資訊之第二部分,當計算加權和時該部分中之每一頁面經指派唯一非零「索引」作為權重。在有限域(諸如Galois域,或諸如整數模p,其中p為質數)上執行算術計算。
較高階冗餘資訊之部分可以任何次序(諸如由對NVM元件執行之一或多個讀取操作之完成次序所判定的次序,或諸如基於自NVM元件傳回及/或可得到資料之次序的次序)計算,從而在各種實施例中使得能夠減少或消除緩衝。在各種實施例中,任何次序之可計算性使得能夠使用相對很少臨時及/或中間緩衝及/或狀態計算恢復資料值及/或自寫入退出。可藉由(諸如)由可用專用硬體元件判定之任何並列度計算較高階冗餘資訊之部分,從而在各種實施例中使得能夠減少延時處理及/或減少記憶體(例如,NVM)頻寬使用。
在一些實施例中,一或多個完整NVM元件(例如,快閃記憶體晶粒)專用於(諸如)針對各種所謂之「非部分」RASIE技術的較高階冗餘資訊。在一些情形中,儲存系統之客戶偏好在各種所謂「二進位容量」點(例如,256GB及128GB)處之儲存能力,且將整個NVM元件或複數個完整NVM元件專用於錯誤恢復導致難於負擔之增加的成本。在一些實施例及/或使用情況下,所謂之「部分」RASIE技術將較高階冗餘資訊過度耗用減少至小於一整個NVM元件。部分較高階冗餘技術實現較低容量點之RASIE益處同時保留二進位容量。在一些實施例中,部分較高階冗餘技術包括跨越NVM元件之多個區塊使資
料等量化。
在結束[實施方式]之引言時,以下內容為實例實施例之集合,包括經明確列舉為「EC」(實例組合)之至少一些實例實施例,提供根據本文中描述之概念的多種實施例類型之額外描述;此等實例不意謂相互排斥、詳盡或限制性的;且本發明不限於此等實例實施例,而是涵蓋在所發佈申請專利範圍及其等效物之範疇內的所有可能修改及變化。
EC1)一種方法,其包含:將一各別頁面寫入至複數個非揮發性記憶體器件之一各別第一區塊中之每一者;將一各別頁面寫入至該複數個非揮發性記憶體器件之一各別第二區塊中之每一者,該各別第二區塊不同於該各別第一區塊;且其中該等各別頁面中之一或多者含有保護所有該等各別頁面之一抹除校正碼的冗餘。
EC2)如EC1之方法,其中含有該抹除校正碼之該冗餘的該等各別頁面之一分率為該複數個非揮發性記憶體器件之一數目分之1。
EC3)如EC2之方法,其中該分率為該複數個非揮發性記憶體器件之該數目的一整數倍分之1。
EC4)如EC3之方法,其中該整數倍為二的一冪。
EC5)如EC1之方法,其中該抹除校正碼為一錯誤校正碼。
EC6)如EC1之方法,其中該等各別第一區塊為雙平面區塊。
EC7)一種系統,其包含:複數個非揮發性記憶體器件,該等非揮發性記憶體器件中之每一者包含複數個區塊,該等區塊中之每一者包含複數個頁面;一抹除校正碼產生器,其可操作以產生冗餘資料之一或多個頁
面以保護使用者資料之各別複數個頁面,冗餘資料之該一或多個頁面及使用者資料之該各別複數個頁面形成一抹除校正碼之一碼字;其中冗餘資料之該一或多個頁面及使用者資料之該各別複數個頁面各自經啟用以儲存至該等區塊中之至少一些的頁面中之一單獨各別者中,使得該等非揮發性記憶體器件中之一個以上者含有冗餘資料之該一或多個頁面及使用者資料之該各別複數個頁面中之一個以上者,且使得該等區塊中之該至少一些中無一者含有冗餘資料之該一或多個頁面及使用者資料之該各別複數個頁面中的一個以上者;且藉以該等區塊中之該至少一些中之至少一者的一失敗可藉由該抹除校正碼來校正。
EC8)如EC7)之系統,其中冗餘資料之該一或多個頁面之一數目等於該等區塊中之該至少一些中的可校正的該至少一者之一數目。
EC9)如EC7)之系統,其進一步包含一抹除校正碼校正器,該抹除校正碼校正器經啟用以處理自該等區塊中之該至少一些的該等頁面中的該等單獨各別者中之至少一些讀取之資訊以校正該等區塊中之該至少一些的該等頁面中的該等單獨各別者中之其他者。
EC10)如EC7)之系統,其進一步包含一錯誤校正碼校正器,該錯誤校正碼校正器經啟用以編碼冗餘資料之該一或多個頁面及使用者資料之該各別複數個頁面中之每一者以產生各別錯誤校正資訊,該各別錯誤校正資訊經啟用以連同冗餘資料之該對應一或多個頁面及使用者資料之該各別複數個頁面一起儲存至該等區塊中之該至少一些的該等頁面中之該等單獨各別者中。
EC11)一種系統,其包含:一用於至少部分地基於資料儲存資訊之複數個單元來計算較高階冗餘資訊之一或多個單元的構件;且其中用於計算之該構件包含用於累加資料儲存資訊之該等單元
中之每一者的一各別非零唯一恆定值乘以資料儲存資訊之該等單元之內容的一加權和作為較高階冗餘資訊之該等單元之至少一部分的構件。
EC12)如EC11之系統,其進一步包含用於將較高階冗餘資訊之該等單元及資料儲存資訊之該等單元儲存於一或多個非揮發性記憶體器件之部分中的構件。
EC13)如EC12之系統,其中該等部分包含該等非揮發性記憶體器件之一或多個整數數目個頁面,且該等非揮發性記憶體器件包含一或多個快閃記憶體。
EC14)如EC11之系統,其中該等單元對應於一或多個快閃記憶體之一或多個整數數目個頁面。
EC15)如EC11之系統,其中較高階冗餘資訊之該等單元不可計算為由資料儲存資訊之該等單元的相應位元組之一產生多項式進行之一多項式除法之一餘項。
EC16)如EC11之系統,其中用於累加之該構件經啟用以以增量方式來累加該加權和之至少一部分。
EC17)如EC16之系統,其中用於累加之該構件經進一步啟用以並列地處理資料儲存資訊之該等單元中的一個以上者。
EC18)如EC17之系統,其中該等單元中之該一個以上者對應於一或多個快閃記憶體之一或多個整數數目個頁面。
EC19)如EC11之系統,其中用於累加之該構件經啟用以按對應於由一或多個快閃記憶體完成讀取操作之一次序的一次序來累加該加權和之至少一部分。
EC20)如EC11之系統,其中用於累加之該構件經啟用以按對應於自一或多個快閃記憶體傳回資料之一次序的一次序來累加該加權和之至少一部分。
EC21)如EC20之系統,其中所傳回之資料之該次序係至少部分地基於可自該一或多個快閃記憶體得到資料之一次序。
EC22)如EC11之系統,其中用於累加之該構件經啟用以並列地累加該加權和之至少一部分。
EC23)如EC11之系統,其中用於累加之該構件經啟用以並列地累加該加權和之至少一部分,該部分對應於可自一或多個快閃記憶體之相應頁面擷取的資料儲存資訊之該等單元的元素。
EC24)如EC23之系統,其中該等元素係至少部分地藉由該等相應頁面之讀取操作之一完成次序來判定。
EC25)如EC12之系統,其進一步包含用於判定該等部分中之一或多者在被讀取時是否具有一較低階錯誤校正失敗的構件。
EC26)如EC12之系統,其進一步包含用於讀取該等部分中之一或多者的構件。
EC27)如EC11之系統,其中用於累加一加權和之該構件經啟用以將資料儲存資訊之該等單元中之至多兩者選擇性地排除在該加權和之外。
EC28)如EC27之系統,其進一步包含用於處理用於累加之該構件的結果以還原該資料儲存資訊之該等經排除之單元的構件。
EC29)如EC27之系統,其中用於累加之該構件經啟用以以增量方式及按對應於由一或多個非揮發性記憶體器件完成讀取操作之一次序的一次序來累加該加權和之至少一部分。
EC30)如EC27之系統,其中用於累加之該構件經啟用以以增量方式及按對應於自一或多個非揮發性記憶體器件傳回資料之一次序的一次序來累加該加權和之至少一部分。
EC31)如EC30之系統,其中所傳回之資料之該次序係至少部分地基於可自該一或多個非揮發性記憶體器件得到資料之一次序。
EC32)如EC11之系統,其中較高階冗餘資訊之該等單元及資料儲存資訊之該等單元對應於一或多個記憶體之各別頁面。
EC33)如EC32之系統,其中該等快閃記憶體係由複數個晶粒組成,且該等各別頁面中之每一者係在該等晶粒中之一唯一者上。
EC34)如EC11之系統,其進一步包含用於至少部分地回應於來自一計算主機之請求而將較高階冗餘資訊之該等單元及資料儲存資訊之該等單元儲存於一或多個快閃記憶體之部分中的構件。
EC35)如EC34之系統,其進一步包含用於使該等請求與該計算主機介接之構件。
EC36)如EC35之系統,其中用於使該等請求與該計算主機介接之該構件與一儲存介面標準相容。
EC37)如EC34之系統,其中用於儲存之該構件包含用於與該等快閃記憶體介接之構件。
EC38)如EC37之系統,其中用於與該等快閃記憶體介接之該構件包含一快閃記憶體介面。
EC39)如EC34之系統,其進一步包含:用於使該等請求與該計算主機介接之構件;且其中用於儲存之該構件包含用於與該等快閃記憶體介接之構件。
EC40)如EC39之系統,其中該等構件係共同地實施於一單一積體電路(IC)中。
EC41)如EC39之系統,其中該等構件係包含於一固態磁碟(SSD)中。
EC42)如EC34之系統,其進一步包含該計算主機之所有或任何部分。
EC43)如EC13之系統,其進一步包含該等快閃記憶體中之至少一
者。
EC44)一種方法,其包含:至少部分地基於資料儲存資訊之複數個單元來計算較高階冗餘資訊之一或多個單元;且其中該計算包含累加資料儲存資訊之該等單元中之每一者的一各別非零唯一恆定值乘以資料儲存資訊之該等單元之內容的一加權和作為較高階冗餘資訊之該等單元之至少一部分。
EC45)如EC44之方法,其進一步包含將較高階冗餘資訊之該等單元及資料儲存資訊之該等單元儲存於一或多個非揮發性記憶體器件之部分中。
EC46)如EC45之方法,其中該等部分包含該等非揮發性記憶體器件之一或多個整數數目個頁面,且該等非揮發性記憶體器件包含一或多個快閃記憶體。
EC47)如EC44之方法,其中該等單元對應於一或多個快閃記憶體之一或多個整數數目個頁面。
EC48)如EC44之方法,其中較高階冗餘資訊之該等單元不可計算為由資料儲存資訊之該等單元的相應位元組之一產生多項式進行之一多項式除法之一餘項。
EC49)如EC44之方法,其中該累加包含以增量方式來累加該加權和之至少一部分。
EC50)如EC49之方法,其中該累加進一步包含並列地處理資料儲存資訊之該等單元中的一個以上者。
EC51)如EC50之方法,其中該等單元中之該一個以上者對應於一或多個快閃記憶體之一或多個整數數目個頁面。
EC52)如EC44之方法,其中該累加包含以對應於由一或多個快閃記憶體完成讀取操作之一次序的一次序來累加該加權和之至少一部
分。
EC53)如EC44之方法,其中該累加包含以對應於自一或多個快閃記憶體傳回資料之一次序的一次序來累加該加權和之至少一部分。
EC54)如EC53之方法,其中所傳回之資料之該次序係至少部分地基於可自該一或多個快閃記憶體得到資料之一次序。
EC55)如EC44之方法,其中該累加包含並列地累加該加權和之至少一部分。
EC56)如EC44之方法,其中該累加包含並列地累加該加權和之至少一部分,該部分對應於可自一或多個快閃記憶體之相應頁面擷取的資料儲存資訊之該等單元的元素。
EC57)如EC56之方法,其中該等元素係至少部分地藉由該等相應頁面之讀取操作之一完成次序來判定。
EC58)如EC45之方法,其進一步包含判定該等部分中之一或多者在被讀取時是否具有一較低階錯誤校正失敗。
EC59)如EC45之方法,其進一步包含讀取該等部分中之一或多者。
EC60)如EC44之方法,其中該累加一加權和係將資料儲存資訊之該等單元中之至多兩者選擇性地排除在該加權和之外。
EC61)如EC60之方法,其進一步包含處理該累加之結果以還原該資料儲存資訊之該等經排除之單元。
EC62)如EC60之方法,其中該累加包含以增量方式及以對應於由一或多個非揮發性記憶體器件完成讀取操作之一次序的一次序來累加該加權和之至少一部分。
EC63)如EC60之方法,其中該累加包含以增量方式及以對應於自一或多個非揮發性記憶體器件傳回資料之一次序的一次序來累加該加權和之至少一部分。
EC64)如EC63之方法,其中所傳回之資料之該次序係至少部分地基於可自該一或多個非揮發性記憶體器件得到資料之一次序。
EC65)如EC44之方法,其中較高階冗餘資訊之該等單元及資料儲存資訊之該等單元對應於一或多個快閃記憶體之各別頁面。
EC66)如EC65之方法,其中該等快閃記憶體係由複數個晶粒組成,且該等各別頁面中之每一者係在該等晶粒中之一唯一者上。
EC67)如EC44之方法,其進一步包含至少部分地回應於來自一計算主機之請求而將較高階冗餘資訊之該等單元及資料儲存資訊之該等單元儲存於一或多個快閃記憶體之部分中。
EC68)如EC67之方法,其進一步包含使該等請求與該計算主機介接。
EC69)如EC68之方法,其中該使該等請求與該計算主機介接與一儲存介面標準相容。
EC70)如EC67之方法,其中該儲存包含與該等快閃記憶體介接。
EC71)如EC70之方法,其中該與該等快閃記憶體介接包含一快閃記憶體介面。
EC72)如EC67之方法,其進一步包含:至少部分地經由計算主機介面邏輯電路來使該等請求與該計算主機介接;且其中該儲存係至少部分地經由經啟用以與該等快閃記憶體介接之快閃記憶體介面邏輯電路。
EC73)如EC72之方法,其中該計算主機介面邏輯電路及該快閃記憶體介面邏輯電路係共同地實施於一單一積體電路(IC)中。
EC74)如EC72之方法,其中該計算主機介面邏輯電路及該快閃記憶體介面邏輯電路係包含於一固態磁碟(SSD)中。
EC75)如EC67之方法,其進一步包含操作該計算主機之所有或任
何部分。
EC76)如EC46之方法,其進一步包含操作該等快閃記憶體中之至少一者。
EC77)一種系統,其包含:計算邏輯電路,其經啟用以至少部分地基於資料儲存資訊之複數個單元來計算較高階冗餘資訊之一或多個單元;且其中該計算邏輯電路包含累加邏輯電路,該累加邏輯電路經啟用以累加資料儲存資訊之該等單元中之每一者的一各別非零唯一恆定值乘以資料儲存資訊之該等單元之內容的一加權和作為較高階冗餘資訊之該等單元之至少一部分。
EC78)如EC77之系統,其進一步包含經啟用以將較高階冗餘資訊之該等單元及資料儲存資訊之該等單元儲存於一或多個非揮發性記憶體器件之部分中的邏輯電路。
EC79)如EC78之系統,其中該等部分包含該等非揮發性記憶體器件之一或多個整數數目個頁面,且該等非揮發性記憶體器件包含一或多個快閃記憶體。
EC80)如EC77之系統,其中該等單元對應於一或多個快閃記憶體之一或多個整數數目個頁面。
EC81)如EC77之系統,其中較高階冗餘資訊之該等單元不可計算為由資料儲存資訊之該等單元的相應位元組之一產生多項式進行之一多項式除法之一餘項。
EC82)如EC77之系統,其中該累加邏輯電路經進一步啟用以以增量方式來累加該加權和之至少一部分。
EC83)如EC82之系統,其中該累加邏輯電路經進一步啟用以並列地處理資料儲存資訊之該等單元中之一個以上者。
EC84)如EC83之系統,其中該等單元中之該一個以上者對應於一
或多個快閃記憶體之一或多個整數數目個頁面。
EC85)如EC77之系統,其中該累加邏輯電路經進一步啟用以按對應於由一或多個快閃記憶體完成讀取操作之一次序的一次序來累加該加權和之至少一部分。
EC86)如EC77之系統,其中該累加邏輯電路經進一步啟用以按對應於自一或多個快閃記憶體傳回資料之一次序的一次序累加該加權和之至少一部分。
EC87)如EC86之系統,其中所傳回之資料之該次序係至少部分地基於可自該一或多個快閃記憶體得到資料之一次序。
EC88)如EC77之系統,其中該累加邏輯電路經進一步啟用以並列地累加該加權和之至少一部分。
EC89)如EC77之系統,其中該累加邏輯電路經進一步啟用以並列地累加該加權和之至少一部分,該部分對應於可自一或多個快閃記憶體之相應頁面擷取的資料儲存資訊之該等單元的元素。
EC90)如EC89之系統,其中該等元素係至少部分地藉由該等相應頁面之讀取操作之一完成次序來判定。
EC91)如EC78之系統,其進一步包含經啟用以判定該等部分中之一或多者在被讀取時是否具有一較低階錯誤校正失敗的邏輯電路。
EC92)如EC78之系統,其進一步包含經啟用以讀取該等部分中之一或多者的邏輯電路。
EC93)如EC77之系統,其中該累加邏輯電路經進一步啟用以將資料儲存資訊之該等單元中的至多兩者選擇性地排除在該加權和之外。
EC94)如EC93之系統,其進一步包含經啟用以處理該累加邏輯電路之結果以還原該資料儲存資訊之該等經排除之單元的邏輯電路。
EC95)如EC93之系統,其中該累加邏輯電路經進一步啟用以以增量方式及按對應於由一或多個快閃記憶體器件完成讀取操作之一次序
的一次序來累加該加權和之至少一部分。
EC96)如EC93之系統,其中該累加邏輯電路經進一步啟用以以增量方式及按對應於自一或多個快閃記憶體器件傳回資料之一次序的一次序來累加該加權和之至少一部分。
EC97)如EC96之系統,其中所傳回之資料之該次序係至少部分地基於可自該一或多個非揮發性記憶體器件得到資料之一次序。
EC98)如EC77之系統,其中較高階冗餘資訊之該等單元及資料儲存資訊之該等單元對應於一或多個快閃記憶體之各別頁面。
EC99)如EC98之系統,其中該等快閃記憶體係由複數個晶粒組成,且該等各別頁面中之每一者係在該等晶粒中之一唯一者上。
EC100)如EC77之系統,其進一步包含快閃儲存器邏輯電路,該快閃儲存器邏輯電路經啟用以至少部分地回應於來自一計算主機之請求而將較高階冗餘資訊之該等單元及資料儲存資訊之該等單元儲存於一或多個快閃記憶體之部分中。
EC101)如EC100之系統,其進一步包含計算主機介面邏輯電路,該計算主機介面邏輯電路經啟用以使該等請求與該計算主機介接。
EC102)如EC101之系統,其中該計算主機介面邏輯電路與一儲存介面標準相容。
EC103)如EC100之系統,其中該快閃儲存器邏輯電路包含經啟用以與該等快閃記憶體介接的快閃記憶體介面邏輯電路。
EC104)如EC103之系統,其中該快閃記憶體介面邏輯電路包含一快閃記憶體介面。
EC105)如EC100之系統,其進一步包含:計算主機介面邏輯電路,其經啟用以使該等請求與該計算主機介接;且其中該快閃儲存器邏輯電路包含經啟用以與該等快閃記憶體介
接的快閃記憶體介面邏輯電路。
EC106)如EC105之系統,其中該計算主機介面邏輯電路及該快閃記憶體介面邏輯電路係共同地實施於一單一積體電路(IC)中。
EC107)如EC105之系統,其中該計算主機介面邏輯電路及該快閃記憶體介面邏輯電路係包含於一固態磁碟(SSD)中。
EC108)如EC100之系統,其進一步包含該計算主機之所有或任何部分。
EC109)如EC79之系統,其進一步包含該等快閃記憶體中之至少一者。
EC110)一種儲存有一指令集之有形電腦可讀媒體,該等指令在由一處理元件執行時使該處理元件執行包含以下各者之操作:管理至少部分地基於資料儲存資訊之複數個單元來計算較高階冗餘資訊之一或多個單元;且其中該計算包含累加資料儲存資訊之該等單元中之每一者的一各別非零唯一恆定值乘以資料儲存資訊之該等單元之內容的一加權和作為較高階冗餘資訊之該等單元之至少一部分。
EC111)如EC110之有形電腦可讀媒體,其中該等操作進一步包含管理將較高階冗餘資訊之該等單元及資料儲存資訊之該等單元儲存於一或多個非揮發性記憶體器件之部分中。
EC112)如EC111之有形電腦可讀媒體,其中該等部分包含該等非揮發性記憶體器件之一或多個整數數目個頁面,且該等非揮發性記憶體器件包含一或多個快閃記憶體。
EC113)如EC110之有形電腦可讀媒體,其中該等單元對應於一或多個快閃記憶體之一或多個整數數目個頁面。
EC114)如EC110之有形電腦可讀媒體,其中較高階冗餘資訊之該等單元不可計算為由資料儲存資訊之該等單元的相應位元組之一產生
多項式進行之一多項式除法之一餘項。
EC115)如EC110之有形電腦可讀媒體,其中該累加包含以增量方式來累加該加權和之至少一部分。
EC116)如EC115之有形電腦可讀媒體,其中該累加進一步包含並列地處理資料儲存資訊之該等單元中之一個以上者。
EC117)如EC116之有形電腦可讀媒體,其中該等單元中之該一個以上者對應於一或多個快閃記憶體之一或多個整數數目個頁面。
EC118)如EC110之有形電腦可讀媒體,其中該累加包含以對應於由一或多個快閃記憶體完成讀取操作之一次序的一次序來累加該加權和之至少一部分。
EC119)如EC110之有形電腦可讀媒體,其中該累加包含以對應於自一或多個快閃記憶體傳回資料之一次序的一次序來累加該加權和之至少一部分。
EC120)如EC119之有形電腦可讀媒體,其中所傳回之資料之該次序係至少部分地基於可自該一或多個快閃記憶體得到資料之一次序。
EC121)如EC110之有形電腦可讀媒體,其中該累加包含並列地累加該加權和之至少一部分。
EC122)如EC110之有形電腦可讀媒體,其中該累加包含並列地累加該加權和之至少一部分,該部分對應於可自一或多個快閃記憶體之相應頁面擷取的資料儲存資訊之該等單元的元素。
EC123)如EC122之有形電腦可讀媒體,其中該等元素係至少部分地藉由該等相應頁面之讀取操作之一完成次序來判定。
EC124)如EC111之有形電腦可讀媒體,其中該等操作進一步包含管理判定該等部分中之一或多者在被讀取時是否具有一較低階錯誤校正失敗。
EC125)如EC111之有形電腦可讀媒體,其中該等操作進一步包含
管理讀取該等部分中之一或多者。
EC126)如EC110之有形電腦可讀媒體,其中該累加一加權和係將資料儲存資訊之該等單元中的至多兩者選擇性地排除在該加權和之外。
EC127)如EC126之有形電腦可讀媒體,其中該等操作進一步包含管理處理該累加之結果以還原該資料儲存資訊之該等經排除之單元。
EC128)如EC126之有形電腦可讀媒體,其中該累加包含以增量方式及以對應於由一或多個非揮發性記憶體器件完成讀取操作之一次序的一次序來累加該加權和之至少一部分。
EC129)如EC126之有形電腦可讀媒體,其中該累加包含以增量方式及以對應於自一或多個非揮發性記憶體器件傳回資料之一次序的一次序來累加該加權和之至少一部分。
EC130)如EC129之有形電腦可讀媒體,其中所傳回之資料之該次序係至少部分地基於可自該一或多個非揮發性記憶體器件得到資料之一次序。
EC131)如EC110之有形電腦可讀媒體,其中較高階冗餘資訊之該等單元及資料儲存資訊之該等單元對應於一或多個快閃記憶體之各別頁面。
EC132)如EC131之有形電腦可讀媒體,其中該等快閃記憶體係由複數個晶粒組成,且該等各別頁面中之每一者係在該等晶粒中之一唯一者上。
EC133)如EC110之有形電腦可讀媒體,其中該等操作進一步包含管理至少部分地回應於來自一計算主機之請求而將較高階冗餘資訊之該等單元及資料儲存資訊之該等單元儲存於一或多個快閃記憶體之部分中。
EC134)如EC133之有形電腦可讀媒體,其中該等操作進一步包含
管理使該等請求與該計算主機介接。
EC135)如EC134之有形電腦可讀媒體,其中該使該等請求與該計算主機介接與一儲存介面標準相容。
EC136)如EC133之有形電腦可讀媒體,其中該儲存包含與該等快閃記憶體介接。
EC137)如EC136之有形電腦可讀媒體,其中該與該等快閃記憶體介接包含一快閃記憶體介面。
EC138)如EC133之有形電腦可讀媒體,其中該等操作進一步包含:至少部分地經由管理計算主機介面邏輯電路來管理使該等請求與該計算主機介接;且其中該儲存至少部分地經由經啟用以與該等快閃記憶體介接的快閃記憶體介面邏輯電路。
EC139)如EC138之有形電腦可讀媒體,其中該計算主機介面邏輯電路及該快閃記憶體介面邏輯電路係共同地實施於一單一積體電路(IC)中。
EC140)如EC138之有形電腦可讀媒體,其中該計算主機介面邏輯電路及該快閃記憶體介面邏輯電路係包含於一固態磁碟(SSD)中。
EC141)如EC133之有形電腦可讀媒體,其中該等操作進一步包含管理操作該計算主機之所有或任何部分。
EC142)如EC112之有形電腦可讀媒體,其中該等操作進一步包含管理操作該等快閃記憶體中之至少一者。
EC143)一種方法,其包含:至少部分地基於資料儲存資訊之複數個頁面來計算較高階冗餘資訊之一或多個頁面;將較高階冗餘資訊之該等頁面及資料儲存資訊之該等頁面儲存
於一或多個快閃記憶體之頁面中;且其中該計算包含累加資料儲存資訊之該等頁面中之每一者的一各別非零唯一恆定值乘以資料儲存資訊之該等頁面之內容的一加權和作為較高階冗餘資訊之該等頁面之至少一部分。
EC144)如EC143之方法,其中較高階冗餘資訊之該等頁面不可計算為由資料儲存資訊之該等頁面的相應位元組之一產生多項式進行之一多項式除法之一餘項。
EC145)如EC143之方法,其中該累加包含以增量方式來累加。
EC146)如EC145之方法,其中該累加進一步包含至少部分地並列處理資料儲存資訊之該等頁面中之一個以上者。
EC147)如EC143之方法,其進一步包含讀取儲存於該等快閃記憶體中之至少一些頁面;及判定所讀取之該等頁面中之任一者是否不可經由較低階冗餘資訊來校正。
EC148)如EC143之方法,其進一步包含計算該較高階冗餘資訊之一校正版本,其中該計算該較高階冗餘資訊之一校正版本將資料儲存資訊之該等頁面中之至多兩個頁面選擇性地排除。
EC149)如EC148之方法,其進一步包含處理該計算該較高階冗餘資訊之一校正版本的結果以還原該資料儲存資訊之該等經排除之頁面。
EC150)如EC148之方法,其中該累加包含以至少部分地由該等快閃記憶體完成讀取操作之一次序所判定的一次序來至少部分地以增量方式累加。
EC151)如EC143之方法,其中該等快閃記憶體係由複數個晶粒組成,且該較高階冗餘資訊或該資料儲存資訊之該等頁面中之僅一者儲存於該等晶粒之任一者中。
EC152)如EC151之方法,其中該較高階冗餘資訊之該等頁面係自
該等晶粒中之至少一者中排除。
EC153)如EC151之方法,其中該資料儲存資訊之該等頁面係自該等晶粒中之至少一者中排除。
EC154)如具有或參考一儲存介面標準之前述EC中之任一者,其中該儲存介面標準包含以下各者中之一或多者:一通用串列匯流排(USB)介面標準,一緊密快閃記憶體(CF)介面標準,一多媒體卡(MMC)介面標準,一嵌入式MMC(eMMC)介面標準,一Thunderbolt介面標準,一UFS介面標準,一安全數位(SD)介面標準,一記憶棒介面標準,一xD圖像卡介面標準,一整合驅動電子裝置(IDE)介面標準,一串列進階附接技術(SATA)介面標準,一外部SATA(eSATA)介面標準,一小型電腦系統介面(SCSI)介面標準,一串列附接小型電腦系統介面(SAS)介面標準,一光纖通道介面標準,一乙太網路介面標準,及一快速周邊組件互連(PCIe)介面標準。
EC155)如具有或參考一快閃記憶體介面之前述EC中之任一者,其中該快閃記憶體介面與以下各者中之一或多者相容:一開放式NAND快閃記憶體介面(ONFI),一雙態觸變模式介面,
一雙資料速率(DDR)同步介面,一DDR2同步介面,一同步介面,及一非同步介面。
EC156)如具有或參考一計算主機之前述EC中之任一者,其中該計算主機包含以下各者中之一或多者:一電腦,一工作站電腦,一伺服器電腦,一儲存伺服器,一儲存附接網路(SAN),一網路附接儲存(NAS)器件,一直接附接儲存(DAS)器件,一儲存設備,一個人電腦(PC),一膝上型電腦,一筆記型電腦,一迷你筆記型電腦,一平板型器件或電腦,一超輕薄筆記型電腦,一電子閱讀器件(一電子閱讀器),一個人數位助理(PDA),一導航系統,一(手持型)全球定位系統(GPS)器件,一汽車控制系統,一汽車媒體控制系統或電腦,
一印表機、影印機或傳真機或一體式器件,一銷售點POS器件,一收銀機,一媒體播放器,一電視,一媒體記錄器,一數位視訊記錄器(DVR),一數位相機,一蜂巢式手機,一無線電話手機,及一電子遊戲機。
EC157)如具有或參考至少一快閃記憶體之前述EC中之任一者,其中該至少一快閃記憶體之至少一部分包含以下各者中之一或多者:NAND快閃記憶體技術儲存記憶體胞,及NOR快閃記憶體技術儲存記憶體胞。
EC158)如具有或參考至少一快閃記憶體之前述EC中之任一者,其中該至少一快閃記憶體之至少一部分包含以下各者中之一或多者:單位階記憶體胞(SLC)快閃記憶體技術儲存記憶體胞,及多位階記憶體胞(MLC)快閃記憶體技術儲存記憶體胞。
EC159)如具有或參考至少一快閃記憶體之前述EC中之任一者,其中該至少一快閃記憶體之至少一部分包含以下各者中之一或多者:基於多晶矽技術之電荷儲存記憶體胞,及基於氮化矽技術之電荷儲存記憶體胞。
EC160)如具有或參考至少一快閃記憶體之前述EC中之任一者,其中該至少一快閃記憶體之至少一部分包含以下各者中之一或多者:基於二維技術之快閃記憶體技術,及
基於三維技術之快閃記憶體技術。
在一些實施例中,I/O器件(諸如,SSD)包括SSD控制器。SSD控制器充當SSD之主機介面與NVM之間的橋接器,且執行經由SSD之主機介面自計算主機發送之主機協定之命令。該等命令中之至少一些指導SSD寫入及讀取具有分別自計算主機發送及發送至計算主機之資料的NVM。在其他實施例中,啟用SSD控制器以使用映射來在主機協定之LBA與NVM中之實體儲存位址之間進行轉譯。在其他實施例中,該映射之至少一部分用於I/O器件之私用儲存(計算主機不可見)。舉例而言,不可由計算主機存取之LBA之部分由I/O器件使用以管理對日誌、統計資料或其他私用資料的存取。
在一些實施例中,存取NVM中之變化大小之配量的壓縮資料在一些使用情況下提供改良之儲存效率。舉例而言,SSD控制器接收來自計算主機之(未壓縮)資料(例如,與磁碟寫入命令有關),壓縮該資料,且將經壓縮之資料儲存至快閃記憶體中。回應於來自計算主機之後續請求(例如,與磁碟讀取命令有關),SSD控制器自快閃記憶體讀取經壓縮之資料,對經壓縮之資料進行解壓縮,且將經解壓縮之資料提供至計算主機。根據變化大小之配量將經壓縮之資料儲存於快閃記憶體中,該配量大小歸因於(例如)關於各種資料之壓縮演算法、操作模式及壓縮效率而變化。SSD控制器部分地藉由查閱(consult)所包括之映射表對資料進行解壓縮以判定標頭儲存於快閃記憶體中之何處。SSD控制器剖析自快閃記憶體獲得之標頭以判定適當(經壓縮之)資料儲存於快閃記憶體中之何處。SSD控制器解壓縮來自快閃記憶體之適當資料來產生經解壓縮之資料以提供至計算主機。在本申請案中,解壓縮(uncompress)(及其變體)與解壓(decompress)(及其變體)同義。
在各種實施例中,SSD控制器包括用於與計算主機介接之主機介
面、用於與NVM(諸如,快閃記憶體)介接之介面,及用於控制該等介面且執行(及/或控制執行之各種態樣)壓縮及解壓縮以及較低階冗餘及/或錯誤校正、較高階冗餘及/或錯誤校正及具有獨立矽元件之動態較高階冗餘模式管理的電路。
根據各種實施例,一些主機介面與以下各者中之一或多者相容:USB介面標準、CF介面標準、MMC介面標準、eMMC介面標準、(Thunderbolt)介面標準、UFS介面標準、SD介面標準、記憶棒介面標準、xD圖像卡介面標準、IDE介面標準、SATA介面標準、SCSI介面標準、SAS介面標準,及PCIe介面標準。根據各種實施例,計算主機為以下各者中之所有或任何部分:電腦、工作站電腦、伺服器電腦、儲存伺服器、SAN、NAS器件、DAS器件、儲存設備、PC、膝上型電腦、筆記型電腦、迷你筆記型電腦、平板型器件或電腦、超輕薄筆記型(ultrabook)電腦、電子閱讀器件(諸如,電子閱讀器)、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)碼或其他格形碼(trellis code)及零或多個LDPC碼之各種組合。
圖1A說明SSD之實施例的選定細節,該SSD包括為NVM(例如,快閃記憶體,諸如NAND快閃記憶體)提供部分較高階冗餘之SSD控制器。SSD控制器係用於管理(諸如)經由NVM元件(例如,快閃記憶體)實施之非揮發性儲存器。SSD控制器100經由一或多個外部介面110以通信方式耦接至一主機(未說明)。根據各種實施例,外部介面110為以下各者中之一或多者:SATA介面;SAS介面;PCIe介面;光纖通道介面;乙太網路介面(諸如,10吉位元(Gigabit)乙太網路);前述介面中之任一者的非標準版本;定製介面;或用以將儲存及/或通信及/或計算器件互連的任何其他類型之介面。舉例而言,在一些實施例中,SSD控制器100包括SATA介面及PCIe介面。
SSD控制器100經由一或多個器件介面190以通信方式耦接至包括一或多個儲存器件(諸如,快閃記憶體器件192之一或多個例項)之NVM 199。根據各種實施例,器件介面190為以下各者中之一或多者:非同步介面;同步介面;單資料速率(SDR)介面;雙資料速率(DDR)介面;DRAM相容之DDR或DDR2同步介面;ONFI相容介面,諸如ONFI 2.2或ONFI 3.0相容介面;雙態觸變模式(Toggle-mode)相容之快閃記憶體介面;前述介面中之任一者的非標準版本;定製介面;
或用以連接至儲存器件的任何其他類型之介面。
在一些實施例中,快閃記憶體器件192中之每一者具有一或多個個別快閃記憶體晶粒194。根據快閃記憶體器件192中之特定者的類型,特定快閃記憶體器件192中之複數個快閃記憶體晶粒194可視情況及/或選擇性地並列存取。快閃記憶體器件192僅表示經啟用以按通信方式耦接至SSD控制器100之一種類型之儲存器件。在各種實施例中,可使用任何類型之儲存器件,諸如SLC NAND快閃記憶體、MLC NAND快閃記憶體、NOR快閃記憶體、使用基於多晶矽或氮化矽技術之電荷儲存記憶體胞的快閃記憶體、基於二維或三維技術之快閃記憶體、唯讀記憶體、靜態隨機存取記憶體、動態隨機存取記憶體、鐵磁性記憶體、相變記憶體、賽道記憶體、ReRAM或任何其他類型之記憶體器件或儲存媒體。
根據各種實施例,器件介面190經組織為:每一匯流排具有快閃記憶體器件192之一或多個例項的一或多個匯流排;每一匯流排具有快閃記憶體器件192中之一或多個例項的一或多個匯流排之群組,從而使一群組中之匯流排大體上經並列地存取;或快閃記憶體器件192之一或多個例項至器件介面190上的任何其他組織。
在圖1A中繼續,SSD控制器100具有一或多個模組,諸如主機介面111、資料處理121、緩衝器131、映射141、回收器(Recycler)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以使用於經由外部介面110接收之命令的外部標籤與用以在由SSD控制器100處理期間追蹤命令之內部標籤相關聯。
根據各種實施例,滿足以下情形中之一或多者:資料處理121視情況及/或選擇性地處理在緩衝器131與外部介面110之間發送的一些或所有資料;及資料處理121視情況及/或選擇性地處理儲存於緩衝器131中之資料。在一些實施例中,資料處理121使用一或多個引擎123來執行以下各者中之一或多者:格式化;重新格式化;轉碼;及任何
其他資料處理及/或操縱任務。
緩衝器131儲存自器件介面190發送至外部介面110/自外部介面110發送至器件介面190的資料。在一些實施例中,緩衝器131額外地儲存由SSD控制器100使用以管理快閃記憶體器件192之一或多個例項的系統資料,諸如一些或所有映射表。在各種實施例中,緩衝器131具有以下各者中之一或多者:用於臨時儲存資料之記憶體137;用以控制資料移動至緩衝器131及/或自緩衝器131移動資料之DMA 133;及用以提供較高階錯誤校正及/或冗餘功能之ECC-X 135;及其他資料移動及/或操縱功能。較高階冗餘功能之實例為類似RAID之能力(例如,RASIE,諸如部分RASIE及/或非部分RASIE,本文在別處更詳細地描述);其中冗餘處於快閃記憶體器件階層(例如,快閃記憶體器件192中之多者)及/或快閃記憶體晶粒階層(例如,快閃記憶體晶粒194)而非處於磁碟階層。
根據各種實施例,滿足以下情形中之一或多者:ECC 161視情況及/或選擇性地處理在緩衝器131與器件介面190之間發送的一些或所有資料;及ECC 161視情況及/或選擇性地處理儲存於緩衝器131中之資料。在一些實施例中,ECC 161用以(諸如)根據一或多種ECC技術來提供較低階錯誤校正及/或冗餘功能。在一些實施例中,ECC 161實施以下各者中之一或多者:CRC碼;漢明碼;RS碼;BCH碼;LDPC碼;維特比碼;格形碼;硬式決策碼;軟式決策碼;基於抹除之碼;任何錯誤偵測及/或校正碼;及前述各者之任何組合。在一些實施例中,ECC 161包括一或多個解碼器(諸如,LDPC解碼器)。
器件介面邏輯191經由器件介面190控制快閃記憶體器件192之例項。啟用器件介面邏輯191以根據快閃記憶體器件192之協定將資料發送至快閃記憶體器件192之例項/自快閃記憶體器件192之例項發送資料。器件介面邏輯191包括用以經由器件介面190選擇性地順序控制快
閃記憶體器件192之例項的排程193。舉例而言,在一些實施例中,啟用排程193以將至快閃記憶體器件192之例項的操作排入佇列,且在快閃記憶體器件192(或快閃記憶體晶粒194)之例項的個別者可用時選擇性地將該等操作發送至快閃記憶體器件192(或快閃記憶體晶粒194)之例項的個別者。
映射141使用將外部資料位址映射至NVM 199中之位置的表143而在用於外部介面110上之資料定址與用於器件介面190上之資料定址之間轉換。舉例而言,在一些實施例中,映射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之例項以具有用於儲存不同類型及/或屬性之資料的一或多個帶(band)。帶之數目、配置、大小及類型可動態地改變。舉例而言,將來自計算主機之資料寫入至熱(作用)帶中,而將來自回收器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 171執行之管理功能中無一者、任一者或全部係藉由硬體、藉由軟體(諸如,在CPU核心172上或在經由外部介面110連接之主機上執行的韌體)或其任何組合來控制及/或管理。
在一些實施例中,啟用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的實例實施例,SSD 101之一例項經由外部介面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之例項中的一或多者接收資料及自經由
驅動程式107之OS 105、驅動程式107及應用程式109(經由驅動程式107或直接作為VF)中之任何一或多者接收資料/將資料發送至經由驅動程式107之OS 105、驅動程式107及應用程式109(經由驅動程式107或直接作為VF)中之任何一或多者。
OS 105包括驅動程式(由驅動程式107概念性地說明)及/或經啟用以與該驅動程式一起操作以用於與SSD介接。Windows之各種版本(例如,95、98、ME、NT、XP、2000、Server、Vista,及7)、Linux之各種版本(例如,Red Hat、Debian,及Ubuntu)及MacOS之各種版本(例如,8、9及X)為OS 105之實例。在各種實施例中,驅動程式為可與標準介面及/或協定(諸如,SATA、AHCI或快速NVM)一起操作之標準及/或通用驅動程式(有時稱為「收縮包裝」或「預先安裝」),或視情況經定製及/或供應商特定以使得能夠使用對SSD 101特定之命令。一些磁碟機及/或驅動程式具有透通模式以經由最佳化NAND存取(有時稱為ONA)或直接NAND存取(有時稱為DNA)技術啟用應用階層程式(諸如,應用程式109)來將命令直接傳達至SSD 101,從而使得定製應用程式能夠甚至與通用驅動程式一起使用對SSD 101特定之命令。ONA技術包括以下各者中之一或多者:非標準修改程式(提示)之使用;供應商特定命令之使用;非標準統計資料(諸如,根據壓縮率之實際NVM使用)之傳達;及其他技術。DNA技術包括以下各者中之一或多者:提供對NVM之未經映射的讀取、寫入及/或抹除存取的非標準命令或供應商特定命令之使用;提供對NVM之更直接存取(諸如,藉由繞過I/O器件否則將執行之資料之格式化)之非標準或供應商特定命令的使用;及其他技術。驅動程式之實例為無ONA或DNA支援之驅動程式、具備ONA能力之驅動程式、具備DNA能力之驅動程式,及具備ONA/DNA能力之驅動程式。驅動程式之其他實例為供應商提供、供應商開發及/或供應商增強之驅動程式,以及用戶端提供、用戶端
開發及/或用戶端增強之驅動程式。
應用階層程式之實例為無ONA或DNA支援之應用程式、具備ONA能力之應用程式、具備DNA能力之應用程式,及具備ONA/DNA能力之應用程式。點線箭頭109D表示應用程式←→I/O器件通信(例如,經由驅動程式而繞過或經由用於應用程式之VF而繞過),例如,具備ONA能力之應用程式及具備ONA能力之驅動程式(諸如)在無使用OS作為中間物之應用程式的情況下與SSD通信。點線箭頭109V表示應用程式←→I/O器件通信(例如,經由用於應用程式之VF而繞過),例如,具備DNA能力之應用程式及具備DNA能力之驅動程式(諸如)在無使用OS或驅動程式作為中間物之應用程式的情況下與SSD通信。
在一些實施例中,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、膝上型電腦、筆記型電腦及/或迷你筆記型電腦)的實施例中之一些)中,視情況啟用計算主機以與一或多個本端及/或遠端伺服器(例如,選用之伺服器118)通信(例如,經由選用之I/O及儲存器件/資源117及選用之LAN/WAN 119)。該通信實現(例如)對SSD 101元件中之任何一或多者的本端及/或遠端存取、管理及/或使用。在一些實施例中,該通信係完全或部分地經由乙太網路。在一些實施例中,該通信係完全或部分地經由光纖通道。在各種實施例中,LAN/WAN 119表示一或多個區域及/或廣域網路,諸如伺服器群中之網路、耦接伺服器群之網路、都會網路及網際網路中之任何一或多者。
在各種實施例中,與一或多個NVM結合之SSD控制器及/或計算主機快閃記憶體控制器實施為非揮發性儲存組件,諸如USB儲存組件、CF儲存組件、MMC儲存組件、eMMC儲存組件、Thunderbolt儲存組件、UFS儲存組件、SD儲存組件、記憶棒儲存組件,及xD圖像卡儲存組件。
在各種實施例中,SSD控制器(或計算主機快閃記憶體控制器)之所有或任何部分或其功能實施於控制器待耦接之主機(例如,圖1B之主機102)中。在各種實施例中,SSD控制器(或計算主機快閃記憶體控制器)之所有或任何部分或其功能經由硬體(例如,邏輯電路)、軟體及/或韌體(例如,驅動程式軟體及/或SSD控制韌體)或其任何組合而實施。舉例而言,ECC單元(諸如,類似於圖1A之ECC 161及/或ECC-X 135)之功能性或與其相關聯之功能性部分地經由主機上之軟體且部分地經由SSD控制器中之韌體與硬體之組合而實施。對於另一實例,回
收器單元(諸如,類似於圖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為以下各者中之一或多者:讀取資料311中之讀取單元中的具有NVM之位址空間中之最低位址的一者;讀取單元中之固定者;讀取單元中之任意者;讀取單元中之可變者;及由任何其他技術選擇之讀取單元中之一者。在各種實施例中,啟用SSD控制器100以藉由僅讀取由讀取單元中之長度225指定之數目個讀取單元而存取NVM 199且產生讀取資料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相關聯之資料的細微度。舉例而言,在一些實施例中,若資料位元組421A(或共同地資料位元組421B、資料位元組422B…資料位元組429B)在儲存與標頭1 411A至標頭N 419A(或標頭1 411B、標頭2 412B…標頭N 419B)中除最後一者外之所有者相關聯的資料之後具有小於固定量(諸如,8位元組)之剩餘空間,則與最後標頭相關聯之LPN的資料在後續讀取單元中開始。在其他實施例中,在最後標頭中之特定位移值(例如,全一)指示與最後標頭相關聯之LPN的資料在後續讀取單元中起始。
圖5說明具有數個欄位之標頭(諸如,圖4A之標頭1 411A至標頭N
419A或圖4B之標頭1 411B至標頭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個區塊)且一區塊為最小抹除配量。在一些實施例中,每一區塊包括整數數目個頁面且一頁面為最小寫入配量。根據各種實施例,滿足以下情形中之一或多者:讀取單元為最小讀取及錯誤校正配量;每一頁面包括整數數目個讀取單元;兩個或兩個以上頁面之相關聯群組包括整數數目個讀取單元;且讀取單元視情況及/或選擇性地橫跨頁面邊界。
在各種實施例中,各種NVM管理功能(例如,讀取,回收、抹除及/或程式化/寫入)係在R區塊之單元中執行。R區塊經例證為跨越(例如)快閃記憶體之各種晶粒(例如,所有晶粒、除完全地或部分地失敗之晶粒外的所有晶粒,及/或晶粒之一或多個選定子集)的邏輯片段或區段。舉例而言,在具有R個快閃記憶體晶粒(每一快閃記憶體晶粒具有N個區塊)之快閃記憶體中,總的看來,每一R區塊為來自快閃記憶體晶粒中之每一者的第i個區塊,總計N個R區塊。繼續實例,若R個快閃記憶體晶粒中之一者失敗,則每一R區塊為來自快閃記憶體晶粒中之除失敗快閃記憶體晶粒外的每一者的第i個區塊,總計N個R區塊,每一R區塊比失敗之前少一個區塊。對於另一實例,在具有R個
快閃記憶體晶粒(每一者具有N個區塊)之快閃記憶體中,每一R區塊為來自快閃記憶體晶粒中之每一者的第i及第(i+1)個區塊,總計N/2個R區塊。對於又一實例,在具有複數個雙平面器件之快閃記憶體中,每一R區塊為來自該等雙平面器件中之每一者的第i個偶數區塊及第i個奇數區塊。對於又一實例,在具有複數個多平面器件之快閃記憶體中,每一R區塊包括經選擇以最大化由多平面器件提供之並列度(例如,在程式化期間)的區塊。注意到在雙平面器件中之R區塊的前述實例中,雙平面器件為多平面器件之實例,且為來自雙平面器件中之每一者的第i個偶數區塊及第i個奇數區塊之R區塊係包括經選擇以最大化並列度之R區塊的實例。對於又一實例,在具有R個快閃記憶體晶粒之快閃記憶體中,R區塊為k個非連續區塊,諸如來自R個快閃記憶體晶粒中之每一者的區塊i1、i2…ik。對於最後實例,在具有R個快閃記憶體晶粒(每一快閃記憶體晶粒具有N個區塊)之快閃記憶體中,每一R區塊為來自快閃記憶體晶粒中之每一者的第i至第(i+k-1)個區塊,總計N/k個R區塊。
在成對或以其他相關聯群組將區塊視為形成R區塊之部分的各種實施例中,亦將來自區塊之相關聯群組的每一區塊之各別頁面視為至少用於寫入之單元,從而形成更大之多區塊頁面。舉例而言,繼續上述雙平面實例,將偶數區塊之特定者的第一頁面及奇數區塊之相關聯者的第一頁面視為用於寫入之單元,且視情況及/或選擇性地視為用於讀取之單元。類似地,將特定偶數區塊之第二頁面及相關聯奇數區塊之第二頁面視為一單元。根據各種實施例,如本文中使用之NVM之頁面指代以下各者中之一或多者:NVM之單一頁面;NVM之多區塊頁面;視情況及/或選擇性地視為用於讀取之一或多個個別頁面的用於寫入之NVM的多區塊頁面;及NVM之頁面的任何其他群組或關聯。
該圖說明複數個說明性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個偶數及奇數區塊。預期作為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個快閃記憶體晶粒(如圖6中明確地及隱含地說明,快閃記憶體晶粒610.63、610.62、610.61…610.0)且經由介面通道730通信。額外快閃記憶體器件740包括至多兩個快閃記憶體晶粒(如圖6中明確地及隱含地說明,快閃記憶體晶粒610.65及610.64)且經由額外介面通道750通信。快閃記憶體晶粒在儲存子系統(諸如,SSD中之NVM)中提供對較高階冗餘資訊之儲存及資料儲存(例如,使用者資料及/或使用者可用空間)。(在冗餘資訊及資料儲存之內容脈絡中的「使用者資料」之實例包括除儲存於快閃記憶體上用於稍後擷取之冗餘資訊外的所有資料,諸如作業系統資料、應用程式資料、SSD管理資料等)。較高階冗餘使得能夠(例如)自一或多個快閃記憶體晶粒之一或多個部分的間歇或永久失敗(諸如,提供錯誤校正資料(例如,經由較低階ECC功能)用於讀取操作的失敗或正確地完成寫入操作的失敗)恢復。
舉例而言,每一快閃記憶體晶粒(或者每一區塊或每一區塊內之每一頁面)在矽獨立元件冗餘陣列(RASIE)內容脈絡中操作。若在特定快閃記憶體晶粒中偵測到失敗(例如,歸因於特定晶粒之區塊之部分的ECC不可校正之讀取錯誤),則作為回應,儲存於快閃記憶體晶粒之其他者中的冗餘資訊用以判定本應由特定晶粒提供之資訊。在一些實施例及/或使用情況中,儲存足夠冗餘資訊以使得能夠自一快閃記憶體晶粒內之一失敗恢復(在單一操作期間)。在一些實施例中,在使得能夠自單一失敗恢復之模式中之操作包括分配及管理等效於一快閃記憶體晶粒之空間以用於較高階冗餘資訊,且稱為「RASIE-1」。在一些實施例中,在使得能夠自兩個失敗恢復之模式中之操作包括分配及管理等效於兩個快閃記憶體晶粒之空間以用於較高階冗餘資訊,且稱為「RASIE-2」。在一些實施例中,在使得能夠自三個失敗恢復的
模式中之操作包括分配及管理等效於三個快閃記憶體晶粒之空間以用於較高階冗餘資訊,且稱為「RASIE-3」。諸如RASIE-1、RASIE-2及RASIE-3之RASIE模式為非部分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.65及快閃記憶體晶粒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變化地具有一個、四個、八個或16個通道,且額外介面通道750變化地具有一或兩個通道。在各種實施例中,快閃記憶體器件720實施為一個、兩個、四個、八個或16個器件,每一者分別具有64、32、16、八及四個快閃記憶體晶粒。在各種實施例中,額外快閃記憶體器件740實施為具有一或兩個晶粒之一器件或實施為各自具有一個晶粒之兩個器件。在一些實施例中,額外快閃記憶體器件740之快閃記憶體晶粒實施於亦實施快閃記憶體器件720之快閃記憶體晶粒的器件中。舉例而言,一個快閃記憶體器件實施66個快閃記憶體晶粒(快閃記憶體晶粒610.65…610.0)。對於另一實例,兩個快閃記憶體器件各自實施33個快閃記憶體晶粒,例如,在第一快閃記憶體器件中實施33個快閃記憶體晶粒(快閃記憶體晶粒610.65…610.33)及在第二快閃記憶體器件中實施33個快閃記憶體晶粒(快閃記憶體晶粒610.32…610.0)。預期快閃記憶體晶粒及快閃記憶體器件之其他配置。在具有實施於亦實施快閃記憶體器件720之快閃記憶體晶粒的器件中的額外快閃記憶體器件740之一些實施例中,快閃記憶體晶粒經由共用介面通道或者經由專用於快閃記憶體晶粒中之特定者(或集合)的介面通道來通信。雖然將快閃記憶體器件720及額外快閃記憶體器件740說明為具有特定數目個快閃記憶體晶粒(分別為2及64),但預期其他實施例,諸如具有2、4、8、16、32或128個快閃
記憶體晶粒之快閃記憶體器件720及/或具有0、1或4個快閃記憶體晶粒之額外快閃記憶體器件740。
圖8說明具有RASIE之動態較高階冗餘模式管理之實施例的選定細節,諸如在由圖6及/或圖7所說明之各種實施例啟用之RASIE模式之間的動態切換。在一些實施例及/或使用情況中,提供一種形式之柔性降級,其中儲存子系統(例如,SSD)自在第一較高階冗餘模式中操作動態地轉變至在第二較高階冗餘模式中操作。該轉變係回應於失敗之偵測,諸如整個快閃記憶體晶粒或其一或多個部分或對其之操作(諸如,讀取或寫入操作)的永久或間歇失靈(malfunction)。根據各種實施例,該轉變為以下各者中之一或多者: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執行的處理)之重新映射來替代失敗之區塊。替代失敗之區塊而映射來自備用區塊之集區的備用區塊。將在失敗之區塊中寫入之任何內容複製至替代區塊,且寫入自在失敗之區塊中發生失敗之處在備用區塊中進行。
在一些實施例中,跳過(而非明確地重新映射)失敗之區塊,從而產生「空洞(hole)」,在該空洞所在之R區塊接下來被抹除(為重新寫入作準備)時該空洞視情況及/或有條件地導致較高階冗餘模式切換。若空洞在用於資料儲存之位置中,則不進行切換,且保留空洞。若空洞在用於較高階冗餘資訊之位置中,則將較高階冗餘資訊儲存於另一位置中,且視情況切換較高階冗餘模式。
在一些實施例及/或使用情況中,儲存於發生失敗之快閃記憶體晶粒中之使用者資料的還原係不可能的。舉例而言,若失敗係歸因於經由較高階冗餘及/或錯誤校正所偵測的一些類型之失敗及/或由快閃記憶體晶粒中之一或多者或其部分報告的一些類型之失敗狀態,則遺失一些使用者資料。
在一些實施例中,圖8之處理係在回應於複數個失敗(例如,SSD控制器)而在較高階冗餘模式之間動態地轉變之內容脈絡中執行。具體言之,SSD控制器開始在第一較高階冗餘模式中操作且回應於第一失敗而動態地轉變至第二較高階冗餘模式,且隨後回應於第二失敗而自第二較高階冗餘模式動態地轉變至第三較高階冗餘模式,等等。舉例而言,SSD控制器根據RASIE-2模式2-2操作各種快閃記憶體晶粒且
回應於第一失敗而將該操作動態地轉變為根據RASIE-2模式2-1。隨後,SSD控制器回應於第二失敗而將操作動態地轉變為根據RASIE-2模式2-0。進一步隨後,SSD控制器回應於第三失敗而將操作動態地轉變為根據RASIE-1容量減少模式1-0(除一個快閃記憶體晶粒用於較高階冗餘資訊且62個快閃記憶體晶粒用於資料儲存外,容量減少模式1-0類似於RASIE-1模式1-0)。
作為一特定實例,考慮耦接至圖7之元件的SSD控制器(諸如,圖1A之SSD控制器100),最初在RASIE-2模式2-2中操作(例如,較高階冗餘資訊在快閃記憶體晶粒610.65及快閃記憶體晶粒610.64中,且資料儲存在快閃記憶體晶粒610.63…610.0中),其對應於在第一較高階冗餘模式中操作。接著執行對快閃記憶體晶粒中之一或多者的讀取或者寫入。該讀取導致不可校正(較低階)之ECC失敗,或者在快閃記憶體晶粒中之特定者之部分(例如,快閃記憶體晶粒610.62之用於使用者資料及/或使用者可用空間之頁面)中,寫入為不成功的。作為回應,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中)中。
雖然前文描述具有整個快閃記憶體晶粒之配量的獨立矽元件之動態較高階冗餘模式管理的若干實施例,但其他實施例實施具有為晶粒之部分(諸如,整個快閃記憶體晶粒之一分率(例如,快閃記憶體晶粒之二分之一或四分之一)、一或多個讀取單元、與記憶體胞相關聯之字線、頁面、R頁面、區塊或R區塊)的獨立矽元件之動態較高階冗餘模式管理。
在各種實施例中,圖8之一或多個元素的處理或關於圖8之一或多個元素的處理全部或部分地藉由圖1A之一或多個元件(或其部分)來執行。舉例而言,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區塊具有至多66個區塊,其對應於來自快閃記憶體晶粒610.0至快閃記憶體晶粒610.65中之每一者的一區塊。(在圖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.E小於較低階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)恢復的一些較高階冗餘模式中,經由同位檢查與加權和技術之組合來計算較高階冗餘資訊。使用同位編碼來計算較高階冗餘資訊之第一部分且使用加權和編碼來計算第二部分。較高階冗餘資訊係(例如)使用較低階失敗偵測技術(諸如,ECC)經由NVM之頁面的讀取及寫入來管理,該等較低階失敗偵測技術(諸如,ECC)與用於可用於儲存受較高階冗餘資訊保護之資料的NVM之頁面之較低階失敗偵測技術相同或類似。
作為RASIE-2之特定實例,經由跨越R區塊之等量區中的所有第一頁面之XOR使用同位編碼來計算較高階冗餘資訊之第一頁面。更具體言之,對跨越R區塊之等量中的所有第一頁面之所有第一位元組執行XOR,產生較高階冗餘資訊之第一頁面的第一位元組。類似地,藉由對跨越R區塊之等量區中的所有第一頁面之所有第二位元組進行XOR而形成較高階冗餘資訊之第二位元組,且對等量區中之所有第一頁面之所有位元組執行XOR而形成較高階冗餘資訊之所有位元組。如下使用加權和技術來計算較高階冗餘資訊之第二頁面。
在有限域(諸如,Galois域(用作一實例))上執行算術計算。實例假定正被操作之資料為位元組寬,且因此使用諸如GF(256)之域。在各種實施例中,在任何單元中對資料進行操作。
向等量區中之每一頁面指派唯一非零「索引」。挑選索引之值以簡化實施複雜性,且該等值不與產生多項式之任何形式相關。舉例而言,頁面係由等量區中之自0至N-1的晶粒位置來標記(例如,藉由軟體),且索引之合適值為晶粒號(若N<255,則確保為非零)之1補數。索引值之另一選擇為最低權重(設定位元之最少數目或清除位元之最少數目)非零整數,(例如)以減少及/或最小化硬體成本。在一些實施例及/或使用情況中,在處理頁面時,選擇格雷編碼值以用於索引最小化轉變及/或減少功率。
不根據有限域算術計算而是根據其他原理來選擇索引值。儘管如此,但每一索引值對應於有限域中之非零元素。假定頁面i具有索引值Ki(且頁面j具有索引值Kj)。加權和冗餘為Ki*Pi(每一位元組(在GF域上)乘以其索引值)之(GF域)總和(在來自每一頁面i之相應位元組Pi範圍內)。
因此,對於每一位元組,將加權和冗餘資訊計算為:R0=在所有相應位元組Pi範圍內的總和;R1=在所有相應位元組Ki*Pi範圍內的總和;R0為所有相應位元組之XOR;且R1為位元組之加權和,其中權重經選擇為索引值。
前述計算針對頁面中的相應位元組中之每一者而反覆,從而產生R0及R1中之每一者的位元組之相應頁面。在以下論述中,為闡述清楚起見,在一些內容脈絡中分別將R0及R1描述為單一元素(例如,每一者為單一位元組),但如在前述計算中,每一者表示元素之各別頁面(例如,每一者為位元組之頁面)。
Pi表示頁面i中之位元組,且Pj表示頁面j中之位元組。描述關於來自每一頁之相應位元組的一等量區的處理,且在所有相應位元組上執行反覆。若一些頁面歸因於(例如)具有不同(較低階)冗餘碼速率而
「短於」其他頁面,則較短頁面以零填補(或藉由同樣用於編碼及解碼之任何已知值填補),使得經有效處理之所有頁面具有相同大小。
根據各種實施例,計算R0及R1之求和可經由各種串列及/或並列計算以任何次序執行。頁面不必以任何特定次序處理,此係因為Ki*Pi在Kj*Pj之前抑或之後相加對R1之結果沒有影響。根據各種實施例,對應於冗餘資訊之頁面的各種位元組之R0及R1值的計算彼此獨立且可經由各種串列及/或並列計算以任何次序計算。此外,自R1減去Ki*Pi(及自R0減去Pi)實現自關於頁面之計算效應「退出」。因為係在GF域上進行,所以加法及減法皆為XOR(因此相減簡單地等效於第二次相加),在一些實施例及/或使用情況中,無需任何特定硬體用於GF域實施(例如,邏輯XOR能力係足夠的)以「退出」頁面。
在不可校正之較低階錯誤的情況下,在一些實施例中,較高階錯誤校正以重新計算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)而獲得相同結果。
在替代實施例中,替代Galois域而使用由整數模p界定之有限域(其中p為質數)。計算與上文描述之彼等計算相同,其中加法為整數加法模p,且乘法為整數乘法模p。舉例而言,若頁面為位元組之頁面,則使用整數模257之有限域。所有使用者資料位元組均在範圍0至255中且以每次一個位元組來儲存。然而,R1結果具有在0至256之範圍內的值,從而需要一個以上位元組用於表示。存在編碼自0至256之值的許多方式以最小化儲存空間且使得能夠在具有減少之過度耗用的情況下儲存R1頁面。舉例而言,值0及256分別儲存為九位元序列000000000及000000001,且所有其他值以八位元儲存。假定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之所有第一頁面(跨越所有快閃記憶體晶粒)之相應第一位元組的兩位元組冗餘計算結果(R0 1010及R1 1011中之每一者一個位元組)。如所說明,兩位元組結果為第一R0及R1頁面中之每一者上的第一位元組。虛線箭頭1002概念性地指示基於資料1019之所有第一頁面之相應最後位元組的兩位元組冗餘計算結果(R0 1010及R1 1011中之每一者一個位元組)。如所說明,兩位元組結果為第一R0及R1頁面中之每一者上的最後位元組。虛線箭頭1003概念性地指示基於資料1019之第一區塊(跨越所有快閃記憶體晶粒)之相應最後頁面的兩頁面冗餘計算結果(R0 1010及R1 1011中之每一者一個頁面)。
注意到,如本文中別處所描述,在一些實施例中,較高階冗餘資訊儲存於用於資料之不同部分的不同晶粒中。因此,在一些實施例中,跨越各種晶粒(而非兩個「專用」晶粒,如圖10中所說明)而儲存R0及R1。
圖11說明根據各種實施例之在各種操作條件下的(例如)如由在諸如圖7之內容脈絡中的RASIE-2模式2-2所使用及如圖6及圖10中進一步說明的較高階冗餘資訊計算之實施例的選定細節。更具體言之,圖11說明根據(例如)由圖10之虛線箭頭1001概念性地說明之兩位元組冗餘計算結果的用於R0之位元組的同位編碼計算及用於R1之位元組的加
權和編碼計算。操作條件包括以下各者中之一或多者:在有限域(諸如,Galois域)上執行算術計算,索引(對應於圖11中之虛設求和變數「i」值)為快閃記憶體晶粒號之1補數(或任何其他唯一及非零編號),及索引對應於有限域中之非零元素。針對R0及R1之所有位元組而基於相應資料位元組重複如圖11中所說明之計算。注意到,非零索引使得R1值能夠包括來自Pi之每一元素的貢獻值(contribution)。
因此,計算R0之位元組中之任一者彼此或在R1之位元組中之任一者之間不存在相依性。因此,預期各種實施例,其中完全(整體地)並列地、部分並列地或完全串列地計算R0及R1值。舉例而言,並列地計算頁面之所有R0及/或R1位元組。對於另一實例,並列地計算頁面之所有R0位元組,其後接著為(或其之前為)並列地計算頁面之所有R1位元組。
此外,不存在關於計算R0之位元組中之任一者相對於彼此或相對於計算R1之位元組中之任一者的排序要求。因此,預期各種實施例,其中相對於彼此完全按次序、相對於彼此分離地按次序(例如,R0計算相對於彼此按次序但相對於R1不按次序,且R1計算相對於彼此按次序但相對於R0不按次序)或無特定排序(例如,完全無次序、非按次序或隨機排序)來計算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頁面上,則如由圖11所描述而重新判定R0(或R1)。圖12說明針對頁面j之恢復值之一位元組的計算(注意到,求和省略發生失敗之頁面j)。重複如圖12中所說明之計算以基於R0之相應位元組及來自除頁面j外之所有資料頁面的相應位元組來判定頁面j之所有位元組的恢復值。
因此,計算頁面j之恢復值的位元組中之任一者彼此之間不存在
相依性。因此,預期各種實施例,其中以類似於針對R0及R1值之前述計算的方式而在高度並列至高度串列之範圍內計算Pj恢復值。此外,不存在關於計算頁面j之恢復值中之任一者相對於彼此的次序要求。因此,預期各種實施例,其中以相對於彼此變化之次序、以類似於針對R0及R1值之前述計算的方式來計算Pj恢復值。
一些例示性實施例以至少部分地由對一或多個NVM(每一者具有(例如)一或多個快閃記憶體晶粒)執行的一或多個讀取操作之完成次序判定的次序來執行關於判定恢復值之計算,該等讀取操作用於讀取NVM以獲得如由圖12所說明之R0及/或Pi值。在一些實施例及/或使用情況中,以讀取操作之完成次序執行計算使得能夠減少或消除在NVM與經啟用以執行計算之元件之間的緩衝。在一些實施例及/或使用情況中,以讀取操作之完成次序執行計算使得能夠減少用以執行計算之記憶體頻寬(諸如,NVM之記憶體頻寬)。
一些例示性實施例以至少部分地由自一或多個NVM(每一者具有(例如)一或多個快閃記憶體晶粒)傳回之資料及/或可得到之資料之次序判定的次序來執行關於判定恢復值之計算,傳回之資料及/或可得到之資料係回應於對NVM執行以獲得如由圖12所說明之R0及/或Pi值的讀取操作。在一些實施例及/或使用情況中,以自讀取操作傳回之資料及/或可得到之資料的次序執行計算減少或消除在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說明對於Pn及Pm之圖13C之解,且因此表示基於R1、R0之相應位元組及來自除頁面m及n外之所有資料頁面的相應位元組的頁面n之恢復值之一位元組的計算及頁面m之恢復值之一位元組的計算。注意到,唯一索引實現非零分母,此係因為Kn相對於Km為唯一的。
在各種實施例中,執行如由圖13A至圖13D所表示之計算以判定頁面m之恢復值的一位元組及頁面n之恢復值的一位元組。重複該等計算以基於R1、R0之相應位元組及來自除頁面m及n外之所有資料頁面的相應位元組判定頁面m及n之所有位元組的恢復值。
因此,計算頁面m或n之恢復值的位元組中之任一者彼此之間不存在相依性。因此,預期各種實施例,其中以類似於針對Pj恢復值之前述計算的方式而在高度並列至高度串列之範圍內計算Pm及/或Pn恢復值。此外,不存在關於計算頁面Pm及/或頁面Pn之恢復值中之任一者相對於彼此的次序要求。因此,預期各種實施例,其中以相對於彼此變化之次序、以類似於針對Pj恢復值之前述計算的方式計算Pm及/或Pn恢復值。
一些例示性實施例以至少部分地由對一或多個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),否則程序迴圈返回以判定另一頁面是否可用。
圖14B中所說明之處理獨立於圖14A中所說明之處理,而非回應於如圖14A中說明發送之命令而接收頁面。在各種情況中,頁面之到達次序根據NVM類型、狀態、操作環境及其他因素而變化,且在一些情境中不同於對應於到達頁面之讀取命令的發送次序或到達次序。在一些實施例及/或使用情況中,因為圖14A之處理獨立於圖14B(而非頁面資料到達取決於正發送之相應讀取命令),所以在接收/處理讀取資料(圖14B)的同時發送讀取命令(圖14A)。在一些實施例及/或使用情況中,(例如)若在將發送針對特定頁面之讀取命令之前該特定頁面存在於特定緩衝器中,則自一或多個緩衝器提供一些頁面而非經由指向NVM之讀取命令而請求。在一些實施例及/或使用情況中,由NVM而非回應於發送之命令所提供的頁面與回應於發送之命令而提供之頁面(例如,回應於針對其他活動發送之讀取命令而提供的頁面)混合。
在各種實施例中,如由圖14A及圖14B所說明,至少部分地執行如由圖11所說明的R0及R1之計算。對於第一實例,如圖14A所說明,將計算相應R0及R1頁面所必要之所有資料頁面的讀取命令發送至一或多個NVM。如圖11所說明,在接收回應於讀取命令而接收之資料頁面時處理該等頁面以計算R0及R1頁面。對於第二實例,如圖14A所說明,將針對一對(例如,對應於雙平面NVM之兩個平面)R0及R1頁面之讀取命令發送至一或多個NVM。如圖11所說明,在接收回應於
讀取命令而接收之資料頁面時處理該等頁面以計算R0及R1頁面。
在各種實施例中,如由圖14A及圖14B所說明,至少部分地執行如由圖12所說明的Pj之計算。對於第一實例,如圖14A所說明,將計算特定Pj頁面所必要之所有資料頁面的讀取命令發送至一或多個NVM。如圖12所說明,在接收回應於讀取命令而接收之資料頁面時處理該等頁面以計算Pj頁面。對於第二實例,如圖14A所說明,將針對一對Pj頁面(例如,對應於雙平面NVM之兩個平面)之讀取命令發送至一或多個NVM,且如圖14B所說明,在接收所接收之資料頁面時處理該等頁面以計算該對Pj頁面。
在各種實施例中,如圖14A及圖14B所說明,至少部分地執行如由圖13A至圖13D中之任一者說明的關於判定恢復值之計算(諸如,針對R0'及R1'之計算)。對於第一實例,如圖14A所說明,將計算特定R0'頁面及特定R1'頁面所必要之所有資料頁面的讀取命令發送至一或多個NVM。如圖13A所說明,在接收回應於讀取命令而接收之資料頁面時處理該等頁面以計算R0'及R1'頁面。對於第二實例,如圖14A所說明,將針對一對R0'及R1'頁面(例如,對應於雙平面NVM之兩個平面)之讀取命令發送至一或多個NVM,且如圖14B所說明,在接收所接收之資料頁面時處理該等頁面以計算該對R0'及R1'頁面。
圖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之內容脈絡中,若有限域為Galois域,則圖15C中所說明之減法計算(「-」)等效於邏輯XOR計算。在各種實施例中,執行其他處理(未說明)以儲存具有較低階寫入失敗之頁面(Pj)以及修訂之較高階冗餘頁面(nR0及nR1)。
圖15B中所說明之處理獨立於圖15A中所說明之處理,而非回應於如圖15A中說明發送之命令而接收寫入完成及狀態資訊。在各種情況中,寫入完成及狀態資訊之到達次序根據NVM類型、狀態、操作環境及其他因素而變化,且在一些情況中不同於對應於到達寫入完成及狀態資訊之寫入命令的發送次序或到達次序。在一些實施例及/或使用情況中,因為圖15A之處理獨立於圖15B(而非寫入完成及狀態資訊到達取決於正發送之相應寫入命令),所以在接收/處理寫入完成及狀態資訊(圖15B)的同時發送寫入命令(圖15A)。
在一些實施例及/或使用情況中,在正將寫入命令發送至NVM與回應於該等寫入命令而接收來自NVM之寫入完成及狀態資訊之間發
生顯著延時。在一些實施例及/或使用情況中,由NVM而非回應於如圖15A中所說明發送之命令所提供的寫入完成及狀態資訊與回應於如圖15A中所說明發送之命令而提供的寫入完成及狀態資訊(例如,回應於針對其他活動發送之寫入命令而提供的寫入完成及狀態資訊)混合。
在各種實施例及/或使用情況中,未使用否則將用於資料資訊之一或多個頁面。在各種情況中,未使用之頁面為區塊、R區塊、等量區或任何種類頁面之序列的第一、中間或最後頁面。在一些情境中,先驗地不使用未使用之頁面(「省去」),且在一些情境中,在某一使用後不使用未使用之頁面(「自服務移除」)。被省去之未使用頁面之實例為不正確地製造之頁面。自服務移除之未使用頁面之實例為未能正確寫入之頁面(例如,如參看圖15B描述為較低階寫入錯誤)。(例如)關於圖10至12、圖13A至圖13D、圖14A至圖14B及圖15A至圖15B的處理(諸如)藉由自計算完全地省略未使用之頁面或藉由如同未使用之頁面上之所有資料為零一樣執行計算而跳過任何未使用之頁面(不論是被省去抑或自服務移除)。
在前述非部分RASIE技術中,等效於(總計N個晶粒中之)整數數目個快閃記憶體晶粒之儲存容量專用於較高階冗餘,從而使得能夠自各種類型之錯誤恢復。舉例而言,在32個快閃記憶體(例如,NAND)晶粒中,該等晶粒中之一者用於(非部分)RASIE-1(例如,類似RAID-5)冗餘,從而將容量減少1/32,但提供保護以防各種類型之錯誤。
然而,在一些實施例及/或使用情況下,儲存系統之客戶偏好在各種二進位容量點(例如,256GB及128GB)處之儲存能力,且將整個快閃記憶體晶粒(或複數個完整快閃記憶體晶粒)專用於錯誤恢復會導致成本增加。有時,基於額外快閃記憶體晶粒,成本增加超出線性增
加。舉例而言,可使用總計32個8GB NAND晶粒來實施256GB儲存容量SSD之提供。然而,若NAND晶粒中之一者用於(非部分)RASIE-1,則僅保留NAND晶粒中之31個以用於所有其他儲存(由SSD使用的使用者資料加上任何系統資料,諸如映射資料)。在一些實施中,使用33個NAND晶粒使成本非線性地增加(例如,在印刷電路板上之額外置放),且另外若NAND晶粒在多晶粒封裝(例如,每一封裝兩個、四個或八個晶粒)中,則使用一個以上晶粒。
在256GB之二進位容量下,提供256*10^9個使用者可存取位元組,而由32個8GB NAND晶粒提供256*2^30個實體儲存位元組,所以約7.37%之實體儲存位元組可用於非使用者可存取資料(諸如,系統資料)。將(總計32個中之)一整個NAND晶粒專用於較高階冗餘消耗1/32之實體儲存位元組(或約3.13%),從而留下大約7.37%-3.13%=4.24%用於系統資料。若4.24%足以用於系統資料,則32個8GB NAND晶粒足以實施256GB之二進位容量同時將晶粒中之一者專用於較高階冗餘。
在以16個8GB NAND晶粒實施並將該等晶粒中之一者專用於較高階冗餘的128GB之二進位容量下,大約7.37%-6.25%=1.12%之實體儲存位元組可用於系統資料。若1.12%不足以用於系統資料,則使用額外NAND晶粒(付出額外成本)以實施128GB之二進位容量同時將晶粒中之一者專用於較高階冗餘。
在一些實施例及/或使用情況中,部分較高階冗餘技術將RASIE過度耗用減少至小於一整個快閃記憶體晶粒(例如,快閃記憶體晶粒之一「分率」)同時涵蓋各種類型之錯誤,諸如如關於前述(非部分)RASIE-1、RASIE-2及RASIE-3技術所描述之錯誤。部分較高階冗餘技術實現較低容量點之RASIE益處同時保留二進位容量。在一些實施例中,部分較高階冗餘技術包括跨越快閃記憶體器件(例如,晶粒)
之多個區塊而使資料等量化。
舉例而言,在以16個8GB NAND晶粒實施的128GB之二進位容量下,將該等晶粒中之一者的二分之一專用於較高階冗餘消耗1/32之實體儲存位元組(或約3.13%)。因此,大約7.37%-3.13%=4.24%保持可用於系統資料。若4.24%足以用於系統資料,則16個8GB NAND晶粒足以實施128GB之二進位容量同時將晶粒中之一者的二分之一專用於較高階冗餘。
回想本文中在別處描述之(非部分)RASIE-1模式藉由使用等效於專用於較高階冗餘資訊之一快閃記憶體晶粒的儲存容量而使得能夠自一錯誤恢復。在各種實施例中,分別稱為(部分)「RASIE-1/2」及(部分)「RASIE-1/4」之模式使用等效於專用於較高階冗餘資訊之一快閃記憶體晶粒之二分之一及四分之一的各別儲存容量而使得能夠自一錯誤恢復。舉例而言,RASIE-1/2用於256GB SSD及/或128GB SSD實施。對於另一實例,RASIE-1/4用於64GB SSD實施。在各種使用情況中,RASIE-1/2及/或RASIE-1/4等效於RASIE-1為隨機失敗(例如,讀取單元、頁面或區塊之隨機失敗)提供錯誤保護。舉例而言,在一些情況中,用於256GB及128GB之RASIE-1/2以及用於64GB SSD之RASIE-1/4提供等效於由用於512GB SSD(以(例如)64個NAND快閃記憶體晶粒實施)之RASIE-1提供之保護的對隨機失敗之錯誤保護。注意到專用於較高階冗餘之儲存容量不限於兩個分率之冪(例如,分別如RASIE-1/2及RASIE-1/4中之1/2及1/4),如(例如)(部分)「RASIE-1/3」將大約等於快閃記憶體晶粒之1/3的儲存容量專用於較高階冗餘。
圖16A至圖16C說明部分較高階冗餘之實施例的選定細節。圖16A充當圖16B及圖16C之關鍵部分。如由圖16A之關鍵資訊所說明,圖16B及圖16C中之每一正方形表示特定晶粒(例如,Dn-1、Dn-2…D1及D0,總計n個晶粒)之特定(雙平面)區塊(例如,Bk-1、Bk-2…B1及
B0,每一晶粒k個區塊)。圖16A亦說明具有來自晶粒中之每一者的一個區塊(第j個區塊)之特定R區塊。在圖16B及圖16C中,用於較高階冗餘之區塊具有粗體下劃線字型。圖16B說明實例非部分RASIE實施例(RASIE-1)。圖16C說明實例部分RASIE實施例(RASIE-1/2)。
如本文中在別處所描述,(部分)RASIE-1藉由使用等效於專用於較高階冗餘資訊之一快閃記憶體晶粒的儲存容量而使得能夠自一錯誤恢復。在圖16B中,等效於一個快閃記憶體晶粒之儲存容量係藉由具有粗體下劃線字型文字(Dn-1 Bk-1、Dn-1 Bk-2…Dn-1 B1及Dn-1 B0)之區塊來說明。因此,較高階冗餘資訊整個地儲存於單一專用晶粒(晶粒Dn-1)中。在其他實施例(未說明)中,用於RASIE-1之較高階冗餘資訊儲存於不同晶粒(例如,晶粒Dn-2、區塊Dn-2 Bk-1…Dn-2 B0)中。在另外其他實施例(未說明)中,用於RASIE-1之較高階冗餘資訊儲存於各種晶粒之區塊(例如,區塊Dn-1 Bk-1、Dn-2 Bk-2…D0 B0)中。在另外其他實施例(未說明)中,較高階冗餘資訊儲存於區塊中,使得每一R區塊「貢獻」一個區塊,其中該一貢獻之區塊為R區塊中之區塊中的任一者。對於所有前述RASIE-1實施例,跨越每一R區塊而共用較高階冗餘資訊,如由圖中將每一R區塊括在一起的帶文字括號「RASIE共用」所說明。
如本文中在別處所描述,(部分)RASIE-1/2藉由使用等效於專用於較高階冗餘資訊之一快閃記憶體晶粒之二分之一的儲存容量而使得能夠自一錯誤恢復。在圖16C中,等效於一快閃記憶體晶粒之二分之一的儲存容量係藉由具有粗體下劃線字型文字(Dn-1 Bk-1…Dn-1 B3及Dn-1 B1)之區塊來說明。因此,較高階冗餘資訊整個地儲存於單一專用晶粒之二分之一(晶粒Dn-1之每隔一個區塊)中。在其他實施例(未說明)中,用於RASIE-1/2之較高階冗餘資訊儲存於晶粒Dn-2之每隔一個區塊(例如,區塊Dn-2 Bk-1…Dn-2 B3及Dn-2 B1)中。在另外其他實
施例(未說明)中,較高階冗餘資訊儲存於區塊中,使得每一對R區塊貢獻一個區塊,其中該一個貢獻之區塊為R區塊對中之區塊中的任一者。對於所有前述RASIE-1/2實施例,跨越每一對R區塊而共用較高階冗餘資訊,如由圖中將每一R區塊對括在一起的帶文字括號「RASIE共用」所說明。
在各種實施例及/或使用情況中,RASIE較高階冗餘(例如,RASIE-1及RASIE-2)用於較高階錯誤校正。當寫入每一快閃記憶體(例如,NAND)晶粒中之頁面時,較低階錯誤校正碼(諸如,BCH或LDPC程式碼)用以保護快閃記憶體晶粒之個別頁面內的資料。RASIE冗餘為跨越數個頁面(諸如,來自各別不同快閃記憶體晶粒中之每一者的指定數目個頁面)而應用以使得能夠自各種錯誤條件恢復的正交較高階冗餘。各種錯誤條件之第一實例為使用較低階冗餘不可校正的快閃記憶體頁面,此係因為該快閃記憶體頁面已累積太多錯誤而使較低階冗餘不能校正。第二實例為導致具有失敗字線之快閃記憶體晶粒之一部分(例如,頁面)不可存取的快閃記憶體晶粒中之一者的該失敗字線。第三實例為導致失敗區塊之資料不可存取的快閃記憶體晶粒中之一者的該失敗區塊。第四實例為導致失敗快閃記憶體晶粒之所有資料不可存取的整個失敗之快閃記憶體晶粒。在各種情形中,第二、第三及第四實例係為例示性硬(例如,持續性)錯誤之實體失敗機制。
在一些實施例中,RASIE(例如,諸如RASIE-1之非部分RASIE或諸如RASIE-1/2之部分RASIE)使用錯誤校正碼。在其他實施例中,因為錯誤之位置已知(例如,未能由較低階冗餘校正之頁面或其部分),所以RASIE冗餘使用抹除校正碼。舉例而言,同位(XOR)碼使用N個中之一冗餘位置來實現對一抹除之校正。RS碼實現抹除校正,且使用N個中之J個冗餘位置之RS程式碼實現對J個抹除之校正。可使用其他抹除校正技術,諸如本文中在別處描述之彼等抹除校正技術。
在一些實施例中,RASIE冗餘資訊係藉由以「等量化」方式(例如,如由圖6之等量化方向600所說明)寫入資料而儲存。來自每一快閃記憶體(NAND)晶粒之一頁面係以判定之次序而寫入,迴繞以寫入每一晶粒中之下一頁面,直至晶粒中之每一者的一區塊已被寫入為止。例如,RASIE冗餘資訊係以「晶粒優先,頁面第二,區塊第三」之次序儲存,該次序在將資料儲存於每一晶粒中之第二區塊之前填充來自每一晶粒之一區塊。
因為前述等量化次序在寫入至每一晶粒中之第二區塊之前寫入每一晶粒中之整個區塊,所以在一些實施例中以冗餘之完整晶粒來管理區塊失敗-N個中之一晶粒專用於儲存RASIE過度耗用。(或等效地,在晶粒中間分配容量之1/N)。
然而,在各種實施例及/或使用情況中,實體失敗之常見形式並非為晶粒失敗-全部晶粒失敗也許很可能為其他實體失敗(諸如,區塊或字線失敗)之1/10或更小。
關於使用N個中之一晶粒(或在晶粒中間分配之容量的等效物)來儲存RASIE資訊以用於恢復區塊失敗的問題為用於RASIE資訊之過度耗用為1/N。在小容量SSD中,其中N為小的,過度耗用變為容量之較高百分比,且過度耗用加上系統資料大於為快閃記憶體儲存容量與二進位容量之間的差之2^30/10^9因子。
發明者已認識到較小容量磁碟機比較大容量磁碟機對晶粒失敗更不敏感,此係因為較小容量磁碟機具有比較大容量磁碟機更少之快閃記憶體晶粒。發明者進一步認識到,經修訂之等量化次序在不使用過量過度耗用情況下可用於保護以防非晶粒實體失敗。RASIE-1/2(如(例如)圖16C所說明)為前述之實例。
用於部分RASIE(例如,RASIE-1/2及RASIE-1/4)之一些實施的經修訂等量化次序在區塊群組中之數個區塊間交錯寫入頁面,使得一些
實施例中之等量化次序為「晶粒優先,區塊群組中之區塊、頁面、在區塊之群組中間」。舉例而言,給定N個晶粒中之每一者K個區塊之群組,來自K個區塊中之每一者的一頁面係跨越所有晶粒(總計K*N個頁面)而寫入,且頁面中之一(或多者)含有保護K*N個頁面(其形成一抹除校正碼字)之整個群組的RASIE較高階冗餘資訊。因為每一區塊不多於一個頁面用於由RASIE較高階冗餘資訊(抹除校正碼字中之一者)涵蓋之頁面,所以任何單一區塊失敗仍係可校正的。(或,在多於單一抹除校正碼之情況下,多於單一區塊失敗仍係可校正的。)
在各種實施例中,形成一抹除校正碼字的K*N個頁面內之頁面係以其他次序而寫入,或多個抹除校正碼字係以交錯方式而寫入。在一些使用情況中,晶粒優先之寫入次序實現較高效能。
在一些實施例中,K之值為每快閃記憶體平面之區塊(或每快閃記憶體晶粒之區塊)之數目的整數除數,使得以同一方式使用晶粒中之每一者內的所有區塊。在每平面之區塊(或每晶粒之區塊)的數目為二之冪或可被二之冪除的其他實施例中,K之值為二之冪。
在各種實施例中,基於容量或其他因素來調整K之值。舉例而言,當晶粒之數目改變時,積K*N保持恆定以維持相同百分比過度耗用。對於另一實例,K*N之值經調整以達成所要程度之保護(由抹除校正碼保護之資料量)。
在各種實施例中,正被共用之RASIE冗餘為單一抹除校正碼(N個中之一部分),或替代地為J抹除校正碼(N個中之J個部分)。部分RASIE增加N之值以降低用於任何J值之過度耗用。舉例而言,藉由將K之值加倍,可在不增加百分比過度耗用之情況下將J值加倍。此情形有時係較佳的,因為(例如)得到2*N個頁面中之兩個以上隨機錯誤(或抹除)之機會低於得到僅N個頁面中之兩個以上隨機錯誤(或抹除)之機會。
在各種實施例中,除特定晶粒內之多個資料區塊由較高階冗餘資訊之每一區塊涵蓋外,類似於非部分RASIE(例如,RASIE-1)較高階冗餘計算而執行部分RASIE(例如,RASIE-1/2及RASIE-1/4)較高階冗餘資訊計算。舉例而言,參見圖10至圖12,及本文在別處之相關聯描述。在各種實施例中,除更多資料區塊由較高階冗餘計算之每一區塊涵蓋外,類似於非部分RASIE較高階冗餘錯誤恢復而執行部分RASIE較高階冗餘錯誤恢復。舉例而言,參見圖13A至圖13D、圖14A至圖14B及圖15A至圖15C,以及本文在別處之相關聯描述。
在一些實施例中,藉由與由電腦系統進行之處理相容的規格來指定由一實施用於NVM(例如,快閃記憶體,諸如NAND快閃記憶體)的部分較高階冗餘之系統、計算主機快閃記憶體控制器及/或SSD控制器(諸如,圖1A之SSD控制器100),及處理器、微處理器、系統單晶片、特殊應用積體電路、硬體加速器或提供前述操作之所有或部分之其他電路的部分執行的操作中之所有或任何部分的各種組合。該規格係根據各種描述,諸如硬體描述語言、電路描述、接線對照表描述、遮罩描述或佈局描述。實例描述包括:Verilog、VHDL、SPICE、諸如PSpice之SPICE變體、IBIS、LEF、DEF、GDS-II、OASIS或其他描述。在各種實施例中,處理包括解譯、編譯、模擬及合成之任何組合以產生、驗證或指定適於包括在一或多個積體電路上之邏輯及/或電路。根據各種實施例,每一積體電路可根據多種技術來設計及/或製造。該等技術包括可程式化技術(諸如,場或遮罩可程式化閘陣列積體電路)、半定製技術(諸如,完全或部分地基於記憶體胞之積體電路)及全定製技術(諸如,實質上特定化之積體電路)、其任何組合,或與積體電路之設計及製造相容的任何其他技術。
在各種實施例中,藉由一或多個程式指令之執行及/或解譯,藉
由一或多個原始程式碼及/或指令碼語言陳述式的解譯及/或編譯,或藉由通過編譯、轉譯及/或解譯以程式設計及/或指令碼語言陳述式表達之資訊而產生之二進位指令之執行來執行如由儲存有指令集之電腦可讀媒體描述之操作的所有或部分之各種組合。陳述式與任何標準程式設計或指令碼語言(諸如,C、C++、Fortran、Pascal、Ada、Java、VBscript及Shell)相容。程式指令、語言陳述式或二進位指令中之一或多者視情況儲存於一或多個電腦可讀儲存媒體元件上。在各種實施例中,程式指令中之一些、所有或各種部分實現為一或多個函式、常式、副常式、內嵌常式、程序、巨集或其部分。
僅出於準備文字及圖式方便而在描述中進行某些挑選,且除非存在相反指示,否則該等挑選本質上不應理解為傳達關於所描述之實施例的結構或操作之額外資訊。挑選之實例包括:用於圖編號之指定符的特定組織或指派及用以識別及參考實施例之特徵及元件之元件識別符(例如,標註或數字指定符)的特定組織或指派。
意欲特定地將詞語「包括」理解為描述開放性範疇之邏輯集合的抽象詞且詞語「包括」並不意謂傳達實體內含項目,除非其後明確地接著詞語「在…內」。
雖然出於描述及理解清楚起見已相當詳細地描述了前述實施例,但本發明不限於所提供之細節。存在本發明之許多實施例。所揭示之實施例為例示性且非限制性的。
應理解,在結構、配置及使用方面之許多變化與描述可能一致,且在本發明之申請專利範圍的範疇內。舉例而言,互連及功能單元位元寬度、時脈速度及所使用技術之類型可根據每一組件區塊中之各種實施例而變化。給予互連及邏輯之名稱僅為例示性的,且不應理解為限制所描述之概念。流程圖及流程圖程序、動作及功能元件之次
序及配置可根據各種實施例而變化。又,除非特定地規定為相反,否則所指定之值範圍、所使用之最大及最小值或其他特定規格(諸如,快閃記憶體技術類型;及暫存器及緩衝器中之項目或級的數目)僅為所描述實施例之彼等規格,預期追蹤實施技術之改良及變化且不應將其理解為限制。
可替代經描述以實施各種組件、子系統、操作、函式、常式、副常式、內嵌常式、程序、巨集或其部分的彼等技術而使用此項技術中已知的功能上等效之技術。亦應理解,依據更快處理(促進先前在硬體中之功能遷移至軟體中)及更高整合密度(促進先前在軟體中之功能遷移至硬體中)的實施例相依設計約束及技術趨勢,實施例之許多功能性態樣可選擇性地實現於硬體(例如,通用電路)或軟體(例如,經由程式化控制器或處理器之一些方式)中。各種實施例之特定變化包括(但不限於):分割之不同;不同外形尺寸及組態;不同作業系統及其他系統軟體之使用;不同介面標準、網路協定或通信鏈路之使用;及在根據特定應用之唯一工程及商業約束實施本文中描述之概念時預期的其他變化。
已藉由遠超過所描述實施例之許多態樣之最小實施所需範圍的細節及環境內容脈絡描述了實施例。一般熟習此項技術者將認識到,一些實施例在不更改剩餘元件間的基本協作之情況下省略所揭示之組件或特徵。因此,應理解,無需許多所揭示細節來實施所描述實施例之各種態樣。就剩餘元件可與先前技術區分而言,被省略之組件及特徵並非對本文中描述之概念的限制。
所有此等設計變化為由所描述實施例傳達之教示上的非實質變化。亦應理解,本文中描述之實施例廣泛地適用於其他計算及網路連接應用,且不限於所描述實施例之特定應用或產業。因此,本發明應理解為包括涵蓋於所發佈專利之申請專利範圍之範疇內的所有可能修
改及變化。
Claims (21)
- 一種方法,其包含:至少部分地基於資料儲存資訊之複數個部分來計算較高階冗餘資訊之一或多個部分;將較高階冗餘資訊之該等部分及資料儲存資訊之該等部分儲存於一或多個非揮發性記憶體器件之部分中;其中該計算包含累加資料儲存資訊之該等部分中之每一者的一各別非零唯一恆定值乘以資料儲存資訊之該等部分之內容的一加權和作為較高階冗餘資訊之該等部分之至少一部分;其中該儲存包含將一各別第一頁面寫入至該複數個非揮發性記憶體器件中之每一者的一第一區塊中之每一者;其中該儲存進一步包含將一各別第二頁面寫入至該複數個非揮發性記憶體器件中之每一者的一第二區塊中之每一者;其中該等第一區塊不同於該等第二區塊;其中該等各別第一頁面及該等各別第二頁面合在一起為頁面之一群組,且該群組之該等頁面中的一或多者含有保護該群組之所有該等頁面的一抹除校正碼之冗餘;且其中較高階冗餘資訊之該等部分包含保護該群組之所有該等頁面的一抹除校正碼之該冗餘。
- 如請求項1之方法,其中較高階冗餘資訊之該等部分不可計算為由資料儲存資訊之該等部分的相應位元組之一產生多項式進行之一多項式除法之一餘項。
- 如請求項1之方法,其中該累加包含:以增量方式累加。
- 如請求項3之方法,其中該累加進一步包含:至少部分地並列處理資料儲存資訊之該等部分中的一個以上者。
- 如請求項1之方法,其進一步包含讀取儲存於該等非揮發性記憶體器件中之至少一些部分;及判定所讀取之該等部分中之任一者是否不可經由較低階冗餘資訊來校正。
- 如請求項1之方法,其進一步包含計算該較高階冗餘資訊之一校正版本,其中該計算該較高階冗餘資訊之一校正版本選擇性地排除資料儲存資訊之該等部分中的至多兩個部分。
- 如請求項6之方法,其進一步包含處理該計算該較高階冗餘資訊之一校正版本的結果以還原該資料儲存資訊之該等經排除之部分。
- 如請求項6之方法,其中該累加包含:以至少部分地由藉由該等非揮發性記憶體器件完成讀取操作之一次序所判定的一次序至少部分地以增量方式累加。
- 如請求項1之方法,其中該等部分中之每一者為一頁面,該等非揮發性記憶體器件係由複數個快閃記憶體晶粒組成,且該較高階冗餘資訊或該資料儲存資訊之該等頁面中之僅一者儲存於該等快閃記憶體晶粒中之任一者中。
- 如請求項9之方法,其中自該等快閃記憶體晶粒中之至少一者中排除該較高階冗餘資訊之該等頁面。
- 如請求項9之方法,其中自該等快閃記憶體晶粒中之至少一者中排除該資料儲存資訊之該等頁面。
- 一種方法,其包含:將一各別第一頁面寫入至複數個非揮發性記憶體器件中之每一者的一第一區塊中之每一者;將一各別第二頁面寫入至該複數個非揮發性記憶體器件中之每一者的一第二區塊中之每一者;其中該等第一區塊不同於該等第二區塊;且 其中該等各別第一頁面及該等各別第二頁面合在一起為頁面之一群組,且該群組之該等頁面中的一或多者含有保護該群組之所有該等頁面的一抹除校正碼之冗餘。
- 如請求項12之方法,其中含有該抹除校正碼之該冗餘的該群組之該等頁面的一分率小於該複數個非揮發性記憶體器件之一數目分之一。
- 如請求項13之方法,其中該分率為該複數個非揮發性記憶體器件之該數目的一整數倍分之一。
- 如請求項14之方法,其中該整數倍為二之一冪。
- 如請求項12之方法,其中該抹除校正碼為一錯誤校正碼。
- 如請求項12之方法,其中該等各別第一區塊為雙平面區塊。
- 一種系統,其包含:複數個非揮發性記憶體器件,該等非揮發性記憶體器件中之每一者包含複數個區塊,該等區塊中之每一者包含複數個頁面;一抹除校正碼產生器,其可操作以產生保護使用者資料之各別複數個頁面的冗餘資料之一或多個頁面,冗餘資料之該一或多個頁面及使用者資料之該各別複數個頁面形成一抹除校正碼之一碼字;其中冗餘資料之該一或多個頁面及使用者資料之該各別複數個頁面各自適合儲存至該等區塊中之至少一些的該等頁面中之一單獨各別者中,使得該等非揮發性記憶體器件中之一個以上者含有冗餘資料之該一或多個頁面及使用者資料之該各別複數個頁面中的一個以上者,且使得該等區塊中之該至少一些中無一者含有冗餘資料之該一或多個頁面及使用者資料之該各別複數個頁面中的一個以上者;且 其中該等區塊中之該至少一些中的至少一者之一失敗可藉由該抹除校正碼來校正。
- 如請求項18之系統,其中冗餘資料之該一或多個頁面之一數目等於該等區塊中之該至少一些中的可校正之該至少一者的一數目。
- 如請求項18之系統,其進一步包含一抹除校正碼校正器,該抹除校正碼校正器經啟用以處理自該等區塊中之該至少一些的該等頁面中之該等單獨各別者中之至少一些讀取的資訊,以校正該等區塊中之該至少一些的該等頁面中之該等單獨各別者中之其他者。
- 如請求項18之系統,其進一步包含一錯誤校正碼產生器,該錯誤校正碼產生器經啟用以編碼冗餘資料之該一或多個頁面及使用者資料之該各別複數個頁面中之每一者以產生各別錯誤校正資訊,該各別錯誤校正資訊適合連同冗餘資料之該相應一或多個頁面及使用者資料之該各別複數個頁面一起儲存至該等區塊中之該至少一些之該等頁面中的該等單獨各別者中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261682561P | 2012-08-13 | 2012-08-13 | |
US13/675,874 US9727414B2 (en) | 2010-12-01 | 2012-11-13 | Fractional redundant array of silicon independent elements |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201415225A true TW201415225A (zh) | 2014-04-16 |
TWI531902B TWI531902B (zh) | 2016-05-01 |
Family
ID=50101395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102127999A TWI531902B (zh) | 2012-08-13 | 2013-08-05 | 矽獨立元件之部分冗餘陣列 |
Country Status (2)
Country | Link |
---|---|
TW (1) | TWI531902B (zh) |
WO (1) | WO2014028183A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI502348B (zh) * | 2014-05-02 | 2015-10-01 | Via Tech Inc | 延伸唯讀記憶體管理系統、方法及其管理主機 |
TWI594121B (zh) * | 2014-09-26 | 2017-08-01 | 英特爾公司 | 使用資料壓縮的快取技術 |
TWI667612B (zh) * | 2016-12-31 | 2019-08-01 | 大陸商上海兆芯集成電路有限公司 | 裝置與運作裝置之方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI687811B (zh) * | 2018-05-14 | 2020-03-11 | 慧榮科技股份有限公司 | 資料儲存裝置及系統資訊的編程方法 |
CN112562775A (zh) * | 2020-12-17 | 2021-03-26 | 普冉半导体(上海)股份有限公司 | 一种修复闪存的方法 |
US12099410B2 (en) * | 2022-12-01 | 2024-09-24 | Solid State Storage Technology Corporation | Statistics table of solid state storage device and using method thereof |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5862158A (en) * | 1995-11-08 | 1999-01-19 | International Business Machines Corporation | Efficient method for providing fault tolerance against double device failures in multiple device systems |
US7505319B2 (en) * | 2007-01-31 | 2009-03-17 | Taiwan Semiconductor Manufacturing Company, Ltd. | Method and apparatus for high efficiency redundancy scheme for multi-segment SRAM |
US20080276124A1 (en) * | 2007-05-04 | 2008-11-06 | Hetzler Steven R | Incomplete write protection for disk array |
US8443260B2 (en) * | 2007-12-27 | 2013-05-14 | Sandisk Il Ltd. | Error correction in copy back memory operations |
CN103348330B (zh) * | 2010-12-01 | 2017-05-24 | 希捷科技有限公司 | 采用独立硅元件的动态较高级冗余模式管理 |
-
2013
- 2013-07-23 WO PCT/US2013/051726 patent/WO2014028183A1/en active Application Filing
- 2013-08-05 TW TW102127999A patent/TWI531902B/zh not_active IP Right Cessation
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI502348B (zh) * | 2014-05-02 | 2015-10-01 | Via Tech Inc | 延伸唯讀記憶體管理系統、方法及其管理主機 |
TWI594121B (zh) * | 2014-09-26 | 2017-08-01 | 英特爾公司 | 使用資料壓縮的快取技術 |
TWI667612B (zh) * | 2016-12-31 | 2019-08-01 | 大陸商上海兆芯集成電路有限公司 | 裝置與運作裝置之方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2014028183A1 (en) | 2014-02-20 |
TWI531902B (zh) | 2016-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11379301B2 (en) | Fractional redundant array of silicon independent elements | |
US11144389B2 (en) | Non-volatile memory program failure recovery via redundant arrays | |
JP6185993B2 (ja) | 不揮発性メモリのための混合粒度の上位レベルの冗長 | |
JP5980798B2 (ja) | 独立したシリコン素子の動的な上位レベルの冗長モード管理 | |
KR101564569B1 (ko) | 상위-레벨 리던던시 정보 계산 | |
TWI531902B (zh) | 矽獨立元件之部分冗餘陣列 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |