數(shù)據存儲系統(tǒng)的自適應錯誤糾正碼的制作方法
【技術領域】
[0001] 本公開設及計算機系統(tǒng)的諸如固態(tài)硬盤等的數(shù)據存儲系統(tǒng)。更具體地,本公開設 及數(shù)據存儲系統(tǒng)的自適應錯誤糾正碼。
【背景技術】
[0002] 非易失性存儲器陣列常常具有有限的耐久性。存儲器陣列的耐久性通常視使用模 式和磨損而定。另外,耐久性取決于非易失性存儲器陣列的特定類型。例如,與具有單層單 元(SLC)NAND介質的存儲器陣列相比,具有多層單元(MLC)NAND介質的存儲器陣列通常具 有較低的耐久性。為了保護存儲到存儲器陣列的用戶數(shù)據免于可能由減少的耐久性而導致 的i化誤,能夠確定奇偶校驗數(shù)據并且將奇偶校驗數(shù)據與用戶數(shù)據一起存儲W便于錯誤檢測 和/或錯誤糾正。
【附圖說明】
[0003]現(xiàn)在參考下面的附圖對實施本發(fā)明的各種特征的系統(tǒng)和方法進行描述,其中:
[0004] 圖1示出了根據本發(fā)明的一個實施例的自適應地編碼數(shù)據的存儲系統(tǒng)。
[0005] 圖2是示出了根據本發(fā)明的一個實施例的確定用于編碼數(shù)據的編碼參數(shù)的過程 的流程圖。
[0006] 圖3是示出了根據本發(fā)明的一個實施例的低密度奇偶校驗(LDPC)編碼參數(shù)與 LDPC碼字長之間關系的表。
[0007] 圖4A-4C是示出了根據本發(fā)明的一個實施例的已填充用戶數(shù)據和奇偶校驗數(shù)據 的圖。
[000引圖5是示出了根據本發(fā)明的一個實施例的自適應碼縮短的過程的流程圖。
[0009] 圖6是示出了根據本發(fā)明的一個實施例的調整碼率的過程的流程圖。
【具體實施方式】
[0010] 盡管描述了某些實施例,但是該些實施例僅W示例的方式給出,而不是要限制保 護范圍。實際上,本文所描述的新穎方法和系統(tǒng)可多種其他形式來實施。而且,可W進 行本文所描述的方法和系統(tǒng)的形式上的各種省略、替換和改變,而不會脫離保護范圍。
[0011] 在一些實施例中,本公開中所使用的"編碼"數(shù)據指的是編碼數(shù)據的過程和/或解 碼數(shù)據的過程。
[0012] 歷
[0013]諸如固態(tài)硬盤等的存儲系統(tǒng)通常包括與非易失性存儲器陣列禪合的一個或多個 控制器。通常,該些控制器由一方設計/制造而非易失性存儲器陣列由另一方設計/制造。 另外,來自不同制造商的存儲器陣列往往具有不同的內部格式,包括不同的存儲器頁格式, 其中每個存儲器頁格式對應于多個存儲器頁大小中的一個。而且,由于成本和多種其他競 爭原因,存儲系統(tǒng)制造商通常使用來自不同的制造商的存儲器陣列。例如,存儲系統(tǒng)制造商 可能在當前生產周期中使用一種品牌的存儲器陣列,而在下一個生產周期中使用另一種品 牌的存儲器陣列。此外,對于標價在不同的水平的不同的存儲系統(tǒng)型號可W使用不同的存 儲器陣列。
[0014] 因此,常見的設計方法是;令存儲系統(tǒng)包括一個或多個控制器,所述一個或多個控 制器具有多個專用的硬件、固件和/或軟件W用于對從來自不同制造商的存儲器陣列讀取 的數(shù)據或寫入到來自不同制造商的存儲器陣列的數(shù)據進行編碼/解碼,而實際使用的該些 硬件、固件和/或軟件的子集取決于在裝配時或在最終設計階段與(多個)控制器配對的 實際存儲器陣列。結果是,存儲系統(tǒng)可能包括多個控制器或額外的、不使用的硬件、固件和 /或軟件W支持未包括在最終裝配的存儲系統(tǒng)中的一個或多個存儲器陣列的多個存儲器頁 格式。
[0015] 替代地,為減少包括在存儲系統(tǒng)中的硬件、固件和/或軟件的數(shù)量,能夠將存儲系 統(tǒng)和控制器構建為僅支持一個特定的、已知的、具有已知的存儲器頁大小的存儲器頁格式, 而不支持其他存儲器頁格式。然而,該樣的方法限制了存儲系統(tǒng)和控制器對其他類型的存 儲器陣列的可用性,并且可能需要構建多個不同的存儲系統(tǒng)和控制器W支持多個存儲器陣 列類型。另外,在一些實例中,在設計/構建存儲系統(tǒng)和控制器時,可能不知道存儲器陣列 的存儲器頁格式。因此,期望有針對多個已知或未知的存儲器存儲格式自適應地編碼數(shù)據 的改善的系統(tǒng)和方法。
[0016] 在本發(fā)明的一些實施例中,存儲系統(tǒng)包括控制器和非易失性存儲器陣列,非易失 性存儲器陣列具有多個存儲器頁,多個存儲器頁具有共同的存儲器頁大小。控制器確定非 易失性存儲器陣列的共同的存儲器頁大小,并且基于該共同的存儲器頁大小從多個預定義 的碼字長中選擇碼字長,例如低密度奇偶校驗(LDPC)碼字長。通過選擇性地使用適當?shù)拇a 字長(從多個預定義的碼字長中選擇)和對應的編碼參數(shù),控制器使用至少一些共同的硬 件、固件和/或軟件來支持多個已知的或未知的存儲器頁格式。因而,控制器能夠選擇性地 調節(jié)其操作,所W控制器能夠與不同制造商所制造的不同格式的存儲器陣列配對。
[0017] 在一些實施例中,隨著部分地由于存儲器陣列的使用而引起存儲器頁、塊或非易 失性存儲器陣列的管巧老化和/或逐漸耗盡,存儲設備的控制器調整用于編碼用戶數(shù)據的 編碼參數(shù)。調整編碼參數(shù)的機制使控制器能夠支持隨著時間推移每單元數(shù)據的附加奇偶校 驗,從而隨著存儲器陣列的質量(例如,數(shù)據保持能力)降低而改善錯誤糾正或錯誤檢測能 力。此外,調整編碼參數(shù)的機制便于平衡由每單元數(shù)據的附加奇偶校驗所引起的解碼時間 與由附加奇偶校驗數(shù)據所引起的錯誤糾正或錯誤檢測益處。另外,控制器能夠存儲針對存 儲器頁、塊或存儲器陣列的管巧所調整的編碼參數(shù),W準許不同的碼率或奇偶校驗率適于 不同的存儲器頁、塊或管巧。
[001引系統(tǒng)概巧
[0019]圖1示出了根據本發(fā)明的一個實施例的自適應地編碼數(shù)據的存儲系統(tǒng)120。如所 示出的,存儲系統(tǒng)120 (例如,混合硬盤、固態(tài)硬盤等)包括控制器130和非易失性存儲器陣 列140,非易失性存儲器陣列140包括一個或多個存儲塊,標識為塊"A" 142 -直到塊"N"。 每個塊包括多個閃存頁(F頁)。例如,圖1中的塊A142包括多個F頁,標識為F頁A153、 F頁B-直到F頁N。在一些實施例中,每個叩頁"是在非易失性存儲器陣列140中能夠在 單個操作中或作為單元來編程的存儲單元的最小組。此外,每個F頁包括多個錯誤糾正碼 頁巧頁)。在所示出的實施例中,每個F頁包括被示出為四個方框的四個E頁,包括E頁 144。其他實施例可W采用W不同方式定義的F頁或E頁,或者每個F頁可W包括多于或少 于四個E頁。
[0020] 控制器130可W從主機系統(tǒng)110中的存儲接口模塊112(例如,設備驅動)接收數(shù) 據和/或存儲訪問命令。由存儲接口 112所傳送的存儲訪問命令能夠包括由主機系統(tǒng)110 所發(fā)布的寫入命令和讀取命令。命令能夠指定存儲系統(tǒng)120中的邏輯塊地址,并且控制器 130能夠在非易失性存儲器陣列140中執(zhí)行所接收的命令。在混合硬盤中,除了非易失性存 儲器陣列140外,數(shù)據還可W存儲在磁介質存儲部件(圖1中未示出)中。
[0021] 存儲系統(tǒng)120能夠存儲從主機系統(tǒng)110接收的數(shù)據,W使得存儲系統(tǒng)120能夠充 當主機系統(tǒng)110的存儲裝置。為了便于該功能,控制器130能夠實施邏輯接口。邏輯接口 能夠W其中能夠存儲數(shù)據的一組邏輯地址(例如,連續(xù)地址)的形式向主機系統(tǒng)110呈現(xiàn) 存儲系統(tǒng)存儲器。在內部,控制器130能夠將邏輯地址映射到非易失性存儲器陣列140和 /或其他(多個)存儲器模塊中的多種物理存儲器地址。
[0022] 控制器130包括編碼器模塊132。在一個實施例中,編碼器模塊132確定編碼參 數(shù)W用于對從非易失性存儲器陣列140中的存儲器頁(例如,E頁)讀取的數(shù)據(例如,用 戶數(shù)據)或寫入到存儲器頁的數(shù)據進行解碼/編碼。編碼參數(shù)能夠用于:對從非易失性存 儲器陣列140讀取的用戶數(shù)據進行解碼,對存儲到非易失性存儲器陣列140的用戶數(shù)據進 行編碼,W及諸如錯誤檢測或錯誤糾正等的其他用途。編碼參數(shù)能夠包括LDPC編碼參數(shù), 例如,G或H編碼矩陣的列權值、G或H編碼矩陣的行權值、P矩陣大小(例如,其中P