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