TWI768511B - 使用藉助於具有局部順序資訊之奇偶校驗矩陣之資料保護的資料存取方法以及設備 - Google Patents
使用藉助於具有局部順序資訊之奇偶校驗矩陣之資料保護的資料存取方法以及設備 Download PDFInfo
- Publication number
- TWI768511B TWI768511B TW109136091A TW109136091A TWI768511B TW I768511 B TWI768511 B TW I768511B TW 109136091 A TW109136091 A TW 109136091A TW 109136091 A TW109136091 A TW 109136091A TW I768511 B TWI768511 B TW I768511B
- Authority
- TW
- Taiwan
- Prior art keywords
- matrix
- sequential
- row
- bits
- parity check
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1575—Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Abstract
一種使用藉助於具有局部順序資訊之奇偶校驗矩陣之資料保護的資料存取方法以及設備,諸如記憶裝置、記憶體控制器、及其解碼電路。該資料存取方法可包含:因應讀取請求,開始自預定儲存空間接收對應於該讀取請求的受保護資料;產生該奇偶校驗矩陣;依據碼字進行基於該奇偶校驗矩陣的癥狀計算以產生並輸出用於該碼字的癥狀;依據該癥狀進行錯誤偵測以產生並輸出解碼結果訊號,並且依據該癥狀進行錯誤位置解碼以產生並輸出錯誤位置;進行該碼字的錯誤更正以更正該碼字之於該錯誤位置的錯誤;以及依據自該受保護資料取得的碼字進行另外的處理。
Description
本發明是關於記憶體控制,尤指一種使用藉助於具有局部順序資訊(partial sequential information)之一奇偶校驗(parity check)矩陣之資料保護的資料存取方法、以及相關設備(apparatus)諸如一記憶裝置、該記憶裝置之一記憶體體控制器、以及該記憶體控制器之一解碼電路。
近年來由於記憶體的技術不斷地發展,各種可攜式以及非可攜式記憶裝置(例如:符合SD/MMC、CF、MS、XD或UFS標準的記憶卡;又例如:固態硬碟(solid state drive,SSD);又例如:符合UFS或EMMC標準之嵌入式(embedded)儲存裝置)被廣泛地實施於諸多應用中。因此,在這些記憶裝置中的記憶體存取控制遂成為相當熱門的議題。
以常用的NAND型快閃記憶體而言,其主要可包含單階細胞(single level cell,SLC)與多階細胞(multiple level cell,MLC)兩大類之快閃記憶體。單階細胞快閃記憶體中之每個被當作記憶細胞(memory cell)的電晶體只有兩種電荷值,分別用來表示邏輯值0與邏輯值1。相較之下,多階細胞快閃記憶體中之每個被當作記憶細胞的電晶體的儲存能力則被充分利用,其採用較高的電壓來驅動,以透過不同位準的電壓在一個電晶體中記錄至少兩位元的資訊(諸如00、01、11、10)。理論上,多階細胞快閃記憶體的記錄密度可以達到單階細胞
快閃記憶體的記錄密度之至少兩倍,這對於曾經在發展過程中遇到瓶頸的NAND型快閃記憶體之相關產業而言,是非常好的消息。
相較於單階細胞快閃記憶體,由於多階細胞快閃記憶體之價格較便宜,並且在有限的空間裡可提供較大的容量,故多階細胞快閃記憶體很快地成為市面上的記憶裝置競相採用的主流。然而,多階細胞快閃記憶體的不穩定性所導致的問題也一一浮現。為了確保在記憶裝置中對快閃記憶體的存取控制能符合相關規範,快閃記憶體的控制器通常備有某些管理機制以妥善地管理資料存取。
然而,具備上列管理機制的記憶裝置仍有不足之處。例如,在錯誤更正碼(error correction code,ECC)處理中之某種類型的編碼/解碼的期間,相關的矩陣乘法的計算需依靠預先計算的資訊來避免編碼/解碼延遲,而該預先計算的資訊會需要控制器積體電路的硬體架構中之某個容量的儲存空間,其中該容量的儲存空間可能非常龐大(例如針對具有龐大的碼字長度的漢明碼(Hamming code),該預先計算的資訊諸如一個龐大的查找表在解碼的期間可能是需要的)。然而,可能因此帶來某些副作用。例如,由於控制器積體電路需要如不同記憶裝置製造商所要求來支援各種錯誤更正碼處理標準,控制器積體電路的內部儲存空間可能被迫增加,造成相關成本的增加。因此,需要一種新穎的方法以及相關架構,以在沒有副作用或較不會帶來副作用的情況下改善記憶裝置的效能。
本發明之一目的在於提供一種使用藉助於具有局部順序資訊之一奇偶校驗(parity check)矩陣之資料保護的資料存取方法、以及相關設備(apparatus)諸如一記憶裝置、該記憶裝置之一記憶體體控制器、以及該記憶體控制器之一
解碼電路,以解決上述問題。
本發明之另一目的在於提供一種使用藉助於具有局部順序資訊之一奇偶校驗矩陣之資料保護的資料存取方法、以及相關設備諸如一記憶裝置、該記憶裝置之一記憶體體控制器、以及該記憶體控制器之一解碼電路,以最佳化該記憶裝置的效能。
本發明至少一實施例提供一種使用藉助於具有局部順序資訊之一奇偶校驗矩陣之資料保護的資料存取方法,其中該資料存取方法是可應用於(applicable to)一記憶裝置的一記憶體控制器。該記憶裝置可包含該記憶體控制器以及一非揮發性記憶體(non-volatile memory,NV memory),而該非揮發性記憶體可包含至少一非揮發性記憶體元件(例如一或多個非揮發性記憶體元件)。該資料存取方法可包含:因應一讀取請求,利用該記憶體控制器開始自預定儲存空間接收對應於該讀取請求的受保護資料;利用該記憶體控制器中之一解碼電路產生該奇偶校驗矩陣,其中該奇偶校驗矩陣之一第一部分矩陣(part-one matrix)包含一第一特殊行(column)、一第二特殊行、以及具有分別和多個順序數值(sequential numbers)相對應的多個順序行的矩陣元素(sequential columns of matrix elements)的多個子矩陣,該第一特殊行用該第一特殊行中之一第一部分的矩陣元素(first portion of matrix elements)來載有(carry)一第一預定值,以及該第二特殊行用該第二特殊行中之一第二部分的矩陣元素(second portion of matrix elements)來載有一第二預定值,其中該第一部分矩陣的最後兩列(row)為分別載有兩組預定位元的多個固定列,以及該第一部分的矩陣元素以及該第二部分的矩陣元素是在該奇偶校驗矩陣之該第一部分矩陣的剩餘的列;利用該解碼電路依據一碼字(codeword)進行基於該奇偶校驗矩陣的癥狀(syndrome)計算以產生並輸出用於該碼字的一癥狀,其中該受保護資料包含一或多個碼字的一讀出版本,且該一或多個碼字包含該碼字;利用該解碼電路依據該癥狀進
行錯誤偵測以產生並輸出一解碼結果訊號,並且依據該癥狀進行錯誤位置解碼以產生並輸出一錯誤位置;利用該解碼電路進行該碼字的錯誤更正,以更正該碼字之於該錯誤位置的一錯誤,以修復該碼字;以及利用該記憶體控制器依據自該受保護資料取得的該一或多個碼字進行另外的處理。
除了上列方法外,本發明亦提供一種記憶裝置,且該記憶裝置包含一非揮發性記憶體以及一記憶體控制器。該非揮發性記憶體是用來儲存資訊,其中該非揮發性記憶體可包含至少一非揮發性記憶體元件(例如一或多個非揮發性記憶體元件)。該記憶體控制器是耦接至該非揮發性記憶體,且該記憶體控制器是用來控制該記憶裝置的運作。另外,該記憶體控制器包含一處理電路,且該處理電路是用來依據來自一主裝置(host device)的複數個主裝置指令(host command)控制該記憶體控制器,以容許該主裝置透過該記憶體控制器存取該非揮發性記憶體。該記憶體控制器另包含耦接至該處理電路的一錯誤更正碼(error correction code,ECC)電路,且該錯誤更正碼電路是用來進行錯誤更正碼處理。該錯誤更正碼電路包含一解碼電路,且該解碼電路是用來藉助於具有局部順序資訊之一奇偶校驗矩陣進行解碼,以供在資料存取期間的資料保護。例如,因應一讀取請求,該記憶體控制器開始自預定儲存空間接收對應於該讀取請求的受保護資料;該記憶體控制器利用該解碼電路產生該奇偶校驗矩陣,其中該奇偶校驗矩陣之一第一部分矩陣包含一第一特殊行、一第二特殊行、以及具有分別和多個順序數值相對應的多個順序行的矩陣元素的多個子矩陣,該第一特殊行用該第一特殊行中之一第一部分的矩陣元素來載有一第一預定值,以及該第二特殊行用該第二特殊行中之一第二部分的矩陣元素來載有一第二預定值,其中該第一部分矩陣的最後兩列為分別載有兩組預定位元的多個固定列,以及該第一部分的矩陣元素以及該第二部分的矩陣元素是在該奇偶校驗矩陣之該第一部分矩陣的剩餘的列;該記憶體控制器利用該解碼電路依據一碼字進行
基於該奇偶校驗矩陣的癥狀計算以產生並輸出用於該碼字的一癥狀,其中該受保護資料包含一或多個碼字的一讀出版本,且該一或多個碼字包含該碼字;該記憶體控制器利用該解碼電路依據該癥狀進行錯誤偵測以產生並輸出一解碼結果訊號,並且依據該癥狀進行錯誤位置解碼以產生並輸出一錯誤位置;以及該記憶體控制器利用該解碼電路進行該碼字的錯誤更正,以更正該碼字之於該錯誤位置的一錯誤,以修復該碼字,以供依據自該受保護資料取得的該一或多個碼字進行另外的處理。
除了上列方法外,本發明亦提供一種記憶裝置的記憶體控制器,其中該記憶裝置包含該記憶體控制器以及一非揮發性記憶體。該非揮發性記憶體可包含至少一非揮發性記憶體元件(例如一或多個非揮發性記憶體元件)。另外,該記憶體控制器包含一處理電路,且該處理電路是用來依據來自一主裝置的複數個主裝置指令控制該記憶體控制器,以容許該主裝置透過該記憶體控制器存取該非揮發性記憶體。該記憶體控制器另包含耦接至該處理電路的一錯誤更正碼電路,且該錯誤更正碼電路是用來進行錯誤更正碼處理。該錯誤更正碼電路包含一解碼電路,且該解碼電路是用來藉助於具有局部順序資訊之一奇偶校驗矩陣進行解碼,以供在資料存取期間的資料保護。例如,因應一讀取請求,該記憶體控制器開始自預定儲存空間接收對應於該讀取請求的受保護資料;該記憶體控制器利用該解碼電路產生該奇偶校驗矩陣,其中該奇偶校驗矩陣之一第一部分矩陣包含一第一特殊行、一第二特殊行、以及具有分別和多個順序數值相對應的多個順序行的矩陣元素的多個子矩陣,該第一特殊行用該第一特殊行中之一第一部分的矩陣元素來載有一第一預定值,以及該第二特殊行用該第二特殊行中之一第二部分的矩陣元素來載有一第二預定值,其中該第一部分矩陣的最後兩列為分別載有兩組預定位元的多個固定列,以及該第一部分的矩陣元素以及該第二部分的矩陣元素是在該奇偶校驗矩陣之該第一部分矩陣的剩餘
的列;該記憶體控制器利用該解碼電路依據一碼字進行基於該奇偶校驗矩陣的癥狀計算以產生並輸出用於該碼字的一癥狀,其中該受保護資料包含一或多個碼字的一讀出版本,且該一或多個碼字包含該碼字;該記憶體控制器利用該解碼電路依據該癥狀進行錯誤偵測以產生並輸出一解碼結果訊號,並且依據該癥狀進行錯誤位置解碼以產生並輸出一錯誤位置;以及該記憶體控制器利用該解碼電路進行該碼字的錯誤更正,以更正該碼字之於該錯誤位置的一錯誤,以修復該碼字,以供依據自該受保護資料取得的該一或多個碼字進行另外的處理。
除了上列方法外,本發明亦提供一種記憶裝置之記憶體控制器的解碼電路,該記憶裝置包含該記憶體控制器以及一非揮發性記憶體,該記憶體控制器包含該解碼電路,該非揮發性記憶體包含至少一非揮發性記憶體元件,該解碼電路包含一癥狀計算器、耦接至該癥狀計算器的一奇偶校驗矩陣產生器、耦接至該癥狀計算器的一錯誤位置解碼器。例如,該癥狀計算器是用來依據一碼字進行基於一奇偶校驗矩陣的癥狀計算以產生並輸出用於該碼字的一癥狀,其中因應一讀取請求,該記憶體控制器開始自預定儲存空間接收對應於該讀取請求的受保護資料,其中該受保護資料包含一或多個碼字的一讀出版本,且該一或多個碼字包含該碼字。另外,該奇偶校驗矩陣產生器是用來產生該奇偶校驗矩陣,其中該奇偶校驗矩陣之一第一部分矩陣包含一第一特殊行、一第二特殊行、以及具有分別和多個順序數值相對應的多個順序行的矩陣元素的多個子矩陣,該第一特殊行用該第一特殊行中之一第一部分的矩陣元素來載有一第一預定值,以及該第二特殊行用該第二特殊行中之一第二部分的矩陣元素來載有一第二預定值,其中該第一部分矩陣的最後兩列為分別載有兩組預定位元的多個固定列,以及該第一部分的矩陣元素以及該第二部分的矩陣元素是在該奇偶校驗矩陣之該第一部分矩陣的剩餘的列。此外,該錯誤位置解碼器,用來依據該癥狀進行錯誤偵測以產生並輸出一解碼結果訊號,並且依據該癥狀進行錯誤
位置解碼以產生並輸出一錯誤位置。另外,該解碼電路進行該碼字的錯誤更正,以更正該碼字之於該錯誤位置的一錯誤,以修復該碼字,以容許該記憶體控制器依據自該受保護資料取得的該一或多個碼字進行另外的處理。
本發明的方法以及相關設備能確保該記憶裝置能在各種狀況下均能妥善地運作,而不會遭遇到相關技術的問題。例如,該資料存取方法提供用於存取控制的多個控制方案。藉助於本發明的方法以及相關設備,該記憶裝置不會遭受相關技術中現有的問題,諸如內部儲存空間的問題、成本增加的問題等。另外,由於該奇偶校驗矩陣能以一局部規律(regular)結構來設計,因此查找表能被簡化在某些方針(policy)中。類似地,用於編碼的產生器矩陣能被實施於某些計數器中,而不是在一內建的大矩陣。
10:電子系統
50:主裝置
52:處理器
54:電源供應電路
100:記憶裝置
110:記憶體控制器
112:微處理器
112M:唯讀記憶體
112C:程式碼
114:控制邏輯電路
115:HPCS型ECC電路
116:隨機存取記憶體
118:傳輸介面電路
120:非揮發性記憶體
122-1,122-2~122-N,122-n0:非揮發性記憶體元件
200:編碼電路
m:訊息
p(m):校驗碼
pp(m):局部校驗碼
y:碼字
H:奇偶校驗矩陣
M:第一部分矩陣
MT:轉置矩陣
K:第二部分矩陣
K-1:反矩陣
(K-1)T:轉置矩陣
a0,a1,a2,b0,b1,b2:矩陣元素
600:解碼電路
610:癥狀計算器
620:H產生器
630:錯誤位置解碼器
yi:位元
in_cwd:輸入碼字訊號
in_en:輸入致能訊號
syndrome:癥狀
h_column:行
dec_result:解碼結果訊號
err_loc:錯誤位置
712:及閘
714:互斥或閘
716:多工器
718:正反器電路
in_0,in_1,D:輸入端子
Q:輸出端子
CLK:時脈端子
812:p位元加1計數器
814:及閘
816:2位元加1計數器
818:判斷電路
820:行映射電路
plus_1,plus_1’:加1致能訊號
Clear:清除訊號
clk:時脈訊號
sub_col_idx:子行索引
bank_idx:庫索引
912,914,916,918,920:判斷電路
1010,1022,1024,1026,1028,1030:判斷電路
1020:子電路
1210:加法器模組
1220:逐位元互斥或模組
1230:或閘模組
1240:反向器
130:工作流程
S10,S20,S21,S22,S23,S24,S25,S26,S27,S30:步驟
第1圖為依據本發明一實施例之電子系統的示意圖。
第2圖依據本發明一實施例繪示針對第1圖所示之記憶裝置的錯誤更正碼處理的某些運作以及該記憶裝置中之某些相關元件。
第3圖依據本發明一實施例繪示一種資料存取方法的編碼控制方案。
第4圖依據本發明一實施例繪示該資料存取方法的局部順序控制方案。
第5圖依據本發明另一實施例繪示該資料存取方法的局部順序控制方案。
第6圖為依據本發明一實施例之對應於該資料存取方法的解碼電路的示意圖。
第7圖依據本發明一實施例繪示在第6圖所示之解碼電路中之癥狀計算器的某些實施細節。
第8圖依據本發明一實施例繪示在第6圖所示之解碼電路中之H產生器的某些實施細節。
第9圖依據本發明一實施例繪示在第8圖所示之H產生器中之行映射電路的某些實施細節。
第10圖依據本發明一實施例繪示在第6圖所示之解碼電路中之錯誤位置解碼器的某些實施細節。
第11圖繪示在第9圖所示之行映射電路中之判斷電路的例子。
第12圖繪示在第10圖所示之錯誤位置解碼器中之判斷電路的例子。
第13圖依據本發明一實施例繪示該資料存取方法的工作流程。
第1圖為依據本發明一實施例之電子系統10的示意圖,其中電子系統10可包含一主裝置50以及一記憶裝置100。主裝置50可包含至少一處理器(例如一或多個處理器),其可統稱為處理器52,且可另包含耦接至處理器52的一電源供應電路54。處理器52是用來控制主裝置50的運作,而電源供應電路54是用來提供電源給處理器52以及記憶裝置100,並且輸出一或多個驅動電壓給記憶裝置100。記憶裝置100可用來提供儲存空間給主裝置50,並且自主裝置50取得該一或多個驅動電壓以作為記憶裝置100的電源。主裝置50的例子可包含(但不限於):多功能行動電話(multifunctional mobile phone)、可穿戴式裝置、平板電腦(tablet)以及個人電腦(personal computer)諸如桌上型電腦與膝上型電腦。記憶裝置100的例子可包含(但不限於):固態硬碟(solid state drive,SSD)以及嵌入式(embedded)儲存裝置諸如符合通用快閃儲存(Universal Flash Storage,以下簡稱「UFS」)或嵌入式多媒體卡(embedded Multimedia Card,eMMC)標準的嵌入式儲存裝置。依據本實施例,記憶裝置100可包含一記憶體控制器110以及一非揮發性記憶體(non-volatile memory,NV memory)120,其中記憶體控制器110是用來控制記憶裝置100的運作以及存取非揮發性記憶體120,而非揮發性
記憶體120是用來儲存資訊。非揮發性記憶體120可包含至少一非揮發性記憶體元件(例如一或多個非揮發性記憶體元件),諸如複數個非揮發性記憶體元件122-1、122-2、...及122-N,其中「N」可代表大於一的正整數。例如,非揮發性記憶體120可為一快閃記憶體,而非揮發性記憶體元件122-1、122-2、...及122-N可為複數個快閃記憶體晶片或複數個快閃記憶體裸晶,但本發明不限於此。
如第1圖所示,記憶體控制器110可包含一處理電路諸如一微處理器112、一儲存單元諸如一唯讀記憶體(Read Only Memory,ROM)112M、一控制邏輯電路114、一資料保護電路諸如一高效能精巧尺寸(high performance compact size,HPCS)型錯誤更正碼(error correction code,ECC)電路(以下簡稱「HPCS型ECC電路」)115、一隨機存取記憶體(random access memory,RAM)116、以及一傳輸介面電路118,其中上列元件可透過一匯流排彼此互相耦接。隨機存取記憶體116是以一靜態隨機存取記憶體(Static RAM,SRAM)來實施,但本發明不限於此。隨機存取記憶體116可用來提供內部儲存空間給記憶體控制器110,例如,隨機存取記憶體116可用來作為一緩衝記憶體以緩衝資料。另外,本實施例的唯讀記憶體112M是用來儲存一程式碼112C,而微處理器112是用來執行程式碼112C以控制對非揮發性記憶體120的存取。請注意,在某些例子中,程式碼112C可被儲存在隨機存取記憶體116或任何形式之記憶體內。此外,該資料保護電路諸如HPCS型ECC電路115可保護資料及/或進行錯誤更正。傳輸介面電路118可符合一特定通訊標準(例如UFS標準),並且可依據該特定通訊標準進行通訊,例如,為記憶裝置100來與主裝置50進行通訊。
在本實施例中,主裝置50可傳送主裝置指令(host command)與對應的邏輯位址至記憶體控制器110來存取記憶裝置100。記憶體控制器110接收主裝置指令與邏輯位址,並將主裝置指令轉譯成記憶體操作指令(可簡稱為操作指令),再以操作指令控制非揮發性記憶體120讀取、寫入/編程非揮發性記憶
體120中於某些實體位址的記憶單位(例如資料頁面),其中實體位址可對應於邏輯位址。當記憶體控制器110對非揮發性記憶體元件122-1、122-2、...及122-N中之任一非揮發性記憶體元件122-n0(其中「n0」可表示區間[1,N]中之任一整數)進行一抹除(erase)運作時,非揮發性記憶體元件122-n0的多個區塊(block)中之至少一個區塊可被抹除,其中該多個區塊的每一區塊可包含多個頁面(例如資料頁面),且一存取運作(例如讀取或寫入)可對一或多個頁面進行,但本發明不限於此。
依據某些實施例,記憶裝置100可實施為符合SD/MMC、CF、MS、XD或UFS標準的記憶卡,其中記憶裝置100可透過一中介裝置諸如一讀卡機耦接至主裝置50,但本發明不限於此。
第2圖依據本發明一實施例繪示針對第1圖所示之記憶裝置100的錯誤更正碼處理的某些運作以及記憶裝置100中之某些相關元件。HPCS型ECC電路115可包含至少一編碼電路(例如一或多個編碼電路)諸如第2圖所示之編碼電路200,且編碼電路200可包含至少一編碼器(例如一或多個編碼器)諸如一漢明碼(Hamming code)編碼器,但本發明不限於此。HPCS型ECC電路115可對複數個訊息進行錯誤更正碼處理以產生複數個校驗碼(parity code),例如在一寫入運作或一讀取運作的期間,其中該複數個訊息的每一訊息包含一組訊息位元,且該複數個校驗碼的每一校驗碼包含一組校驗位元(parity bit)。以寫入運作為例,當該複數個訊息中之任一訊息被發送至編碼電路200中,編碼電路200的訊息輸入以及訊息輸出可代表這個訊息,以及編碼電路200的校驗輸出(parity output)可代表對應於這個訊息的校驗碼。HPCS型ECC電路115可產生包含有該複數個訊息以及該複數個校驗碼(在第2圖中分別標示為「m」及「p(m)」以求簡明)的一錯誤校驗碼組塊(chunk)以作為一保護單元。例如,該錯誤更正碼組塊可另包含一或多個其他校驗位元諸如一或多列(row)的校驗位元,以保護
該複數個訊息以及該複數個校驗碼,其中該一或多列的校驗位元可被附於(attached to)第2圖所示之該錯誤更正碼組塊中之多列的訊息-校驗碼組合,但本發明不限於此。如第2圖所示,記憶體控制器110可將一或多個組塊寫入或編程至於非揮發性記憶體元件122-n0中之某個區塊中的某個頁面。由於非揮發性記憶體120的架構可取決於非揮發性記憶體製造商(例如快閃記憶體製造商)的各種設計規則予以變化,因此在每個頁面中之錯誤更正碼組塊的數量可對應地變化。
基於第1圖所示之架構,記憶裝置100可為主裝置50儲存資料,而記憶裝置100可因應一主裝置指令諸如來自主裝置50的寫入指令將該資料寫入非揮發性記憶體120中。在將該資料寫入非揮發性記憶體120的期間,HPCS型ECC電路115(例如編碼電路200)可進行編碼以產生一校驗碼的多個校驗位元以保護一訊息(例如該複數個訊息中之任一者)的多個訊息位元,其中該訊息可對應於將被寫入非揮發性記憶體120的資料中之一組資料。另外,記憶裝置100可因應另一主裝置指令諸如來自主裝置50的讀取指令來讀取儲存的資料,並且將自非揮發性記憶體120讀取的資料提供給主裝置50。在自非揮發性記憶體120讀取儲存的資料的期間,HPCS型ECC電路115(例如編碼電路200)可取得該多個訊息位元的讀出版本以及該多個校驗位元的讀出版本。例如,HPCS型ECC電路115(例如編碼電路200)可對該多個訊息位元的讀出版本進行編碼以產生該多個校驗位元的非讀出版本,並且可判斷該多個校驗位元的非讀出版本與該多個校驗位元的讀出版本是否相同,以偵測該多個訊息位元的讀出版本是否正確,但本發明不限於此。當該多個校驗位元的非讀出版本與該多個校驗位元的讀出版本相同,HPCS型ECC電路115(例如編碼電路200)可判斷該多個訊息的讀出版本是正確的。因此,記憶體控制器110可利用該多個訊息位元的讀出版本作為來自非揮發性記憶體120的儲存的資料中之該組資料,以供被傳送或回傳至主裝
置50。當該多個校驗位元的非讀出版本與該多個校驗位元的讀出版本之間有任何差異,HPCS型ECC電路115(例如編碼電路200)可判斷該多個訊息位元的讀出版本是不正確的,並且依據該多個校驗位元的讀出版本對該多個訊息位元的讀出版本進行錯誤更正,以產生該多個訊息位元的更正版本。因此,記憶體控制器110可利用該多個訊息位元的更正版本作為來自非揮發性記憶體120的儲存的資料中之該組資料,以供被傳送或回傳至主裝置50。基於第1圖所示之架構,尤其,第2圖所示之關於錯誤更正碼處理的運作,儲存於非揮發性記憶體120的資料的各種錯誤能被避免。
第3圖依據本發明一實施例繪示一種使用藉助於具有局部順序資訊之一奇偶校驗(parity check)矩陣之資料保護的資料存取方法的一編碼控制方案,其中該資料存取方法是可應用於(applicable to)第1圖所示之架構,尤其,記憶裝置100、記憶體控制器110以及HPCS型ECC電路115(例如編碼電路200)。為便於理解,記憶體控制器110如上所述可接收一寫入指令,並且可自主裝置50接收對應於該寫入指令的資料(例如上述將被寫入非揮發性記憶體120的資料)。編碼電路200可取得對應於該寫入指令的資料中之至少一部分資料(例如複數組資料,諸如上述之該組資料)以作為該錯誤更正碼組塊的複數個訊息{m},以透過編碼電路200的HPCS型編碼依據複數個訊息{m}產生該錯誤更正碼組塊的複數個校驗碼{p(m)},其中複數個校驗碼{p(m)}分別對應於複數個訊息{m}以供分別保護複數個訊息{m}。例如,複數個訊息{m}之各自的內容可取決於自主裝置50接收的資料的內容予以變化。另外,記憶體控制器110可將包含有複數個訊息{m}以及複數個校驗碼{p(m)}的該錯誤更正碼組塊寫入非揮發性記憶體120。例如,關於複數個訊息{m}中之任一訊息m,該HPCS型編碼的運作可包含:於訊息m的至少一部分(例如一部分或全部)被發送至編碼電路200之後,編碼電路200開始依據訊息m以及一奇偶校驗矩陣H中之一第一部分矩陣
(part-one matrix)M的轉置矩陣(transpose matrix)MT來編碼訊息m以計算一局部校驗碼pp(m),其中第一部分矩陣是奇偶校驗矩陣H的一第一子矩陣;於局部校驗碼pp(m)之至少一部分(例如一部分或全部)被產生之後,編碼電路200可分別產生及/或載入奇偶校驗矩陣H中之一第二部分矩陣(part-two matrix)K的反矩陣(inverse matrix)K-1的多個局部矩陣{PM(K-1)},其中第二部分矩陣K是奇偶校驗矩陣H的一第二子矩陣,且第二部分矩陣K的反矩陣K-1的至少一部分(例如一部分或全部),諸如反矩陣K-1的任一局部矩陣PM(K-1)(例如反矩陣K-1的局部矩陣PM(K-1)1、PM(K-1)2、PM(K-1)3等),可被預先準備以作為預先計算的資訊;以及編碼電路200將第二部分矩陣K的反矩陣K-1的局部矩陣{PM(K-1)}施加於局部校驗碼pp(m)以分別產生對應於訊息m的校驗碼p(m)的多個子校驗碼(sub-parity code)(例如一第一子校驗碼p(m)1、以及後續的子校驗碼p(m)2、p(m)3等),並且分別輸出校驗碼p(m)的該多個子校驗碼(例如子校驗碼p(m)1、p(m)2、p(m)3等),其中第一子校驗碼p(m)1可被輸出為校驗碼p(m)的一起始部分。例如,該預先計算的資訊可被產生並立刻使用,但本發明不限於此。在某些例子中,該預先計算的資訊可被暫存於編碼電路200中之一儲存電路並於之後再使用。
為便於理解,包含有訊息m以及校驗碼p(m)的碼字y、包含有第一部分矩陣M以及第二部分矩陣K的奇偶校驗矩陣H、以及奇偶校驗矩陣H中之第二部分矩陣K的反矩陣K-1可如第3圖所示。碼字y可用具有一單一列以及n行的1×n矩陣來表示,其中m可代表一正整數。在碼字y中,訊息m可用具有一單一列以及k行的1×k矩陣來表示,以及校驗碼p(m)可用具有一單一列以及r行(例如r=n-k)的1×r矩陣來表示,其中k以及r可分別代表正整數。另外,奇偶校驗矩陣H可用具有r列以及n行的r×n矩陣來表示。在奇偶校驗矩陣H中,第一部分矩陣M可用具有r列及k行的r×k矩陣來表示,以及第二部分矩陣K可用具有r列及r行的r×r矩陣來表示。請注意,奇偶校驗矩陣H可被妥善地設計,例如設計使其包含載有局部
順序資訊的矩陣元素,以供提升編碼效能,但本發明不限於此。
奇偶校驗矩陣H中之第一部分矩陣M以及第二部分矩陣K的內容可依據記憶體控制器100的製造商的某些預定規則來決定。例如,奇偶校驗矩陣H的每一行應包含至少一(例如一或多個)非零(non-zero)矩陣元素諸如1,以及在奇偶校驗矩陣H中之任兩行應互相不同。尤其,第一部分矩陣M可被配置成具有一組對應於局部規律結構的行(例如一或多組的局部順序行),以及第二部分矩陣K可被配置成具有一組對應於規律結構的行,但本發明不限於此。第一部分矩陣M以及反矩陣K-1可被預先準備好,以供對訊息m編碼時使用以產生對應於訊息m的校驗碼p(m)。
依據本實施例,pp(m)=mMT且p(m)=pp(m)(K-1)T。由於反矩陣K-1的轉置矩陣(K-1)T可透過轉置反矩陣K-1來取得,尤其,藉由以反矩陣K-1的對角線為基準對反矩陣K-1作翻轉,所以轉置矩陣(K-1)T可具有和反矩陣K-1相同的矩陣元素,除了這個差異:因為在轉置反矩陣K-1的期間以對角線為基準對反矩陣K-1作翻轉的翻轉後配置。因此,編碼電路200可用翻轉後配置的方式直接地使用反矩陣K-1的任一局部矩陣PM(K-1)(例如在局部矩陣PM(K-1)中之複數個列,諸如其內的列向量)以作為轉置矩陣(K-1)T內之對應的局部矩陣(例如在該對應的局部矩陣中之複數個行,諸如其內的行向量),例如,透過依據該翻轉後配置將在局部矩陣PM(K-1)中之任一矩陣元素選擇為在該對應的局部矩陣中之一對應的矩陣元素。
關於訊息m、局部校驗碼pp(m)、及校驗碼p(m)之間的關係的某些實施細節可說明如下:令yH=0;
,其中他們在二進制的情況下是相同的;
令pp(m)為該局部校驗碼,其中pp(m)=mMT;
其中第一部分矩陣M以及反矩陣K-1可被預先準備好,以供在編碼期間被使用,以及第一部分矩陣M的至少一部分(例如一部分或全部)以及反矩陣K-1的至少一部分(例如一部分或全部)可被預先儲存在編碼電路200內,例如,在記憶體控制器100的生產階段被儲存為HPCS型ECC電路115中之硬體碼(例如唯讀記憶體碼),但本發明不限於此。
依據某些實施例,記憶裝置100(例如記憶體控制器110)可利用主裝置50的一部分記憶體空間,諸如主裝置50中之一記憶體(例如隨機存取記憶體)的空間,作為記憶裝置100的外部儲存空間,以供記憶裝置100的管理之用。尤其,記憶裝置100(例如記憶體控制器100)可發送記憶裝置100的內部資訊給主裝置50以被儲存至該外部儲存空間(例如主裝置50的該記憶體中)中,並且可在需要時自該外部儲存空間取得或取回該內部資訊的至少一部分(例如一部分或全部)。另外,第2圖及第3圖中所示之實施例的任一者所描述的ECC處理可被施加於針對該外部儲存空間的資料存取。以訊息{m}為該內部資訊的例子,記憶裝置100(例如記憶體控制器110)可將複數個訊息{m}以及分別對應於複數個訊息{m}的複數個校驗碼{p(m)}寫入該外部儲存空間,以作為主裝置擁有資訊(host-owned information)諸如碼字{y},其可分別包含複數個訊息{m}以及複數個校驗碼{p(m)}。當需要時,記憶裝置100(例如記憶體控制器110)可自該外部儲存空間讀取碼字{y}並且對碼字{y}的讀出版本進行ECC編碼,以判斷它們是否正確,尤其,若一或多個錯誤發生則進行錯誤更正。例如,記憶裝置100(例如記憶體控制器110)可在它們正確的情況下自碼字{y}的讀出版本取得複數個訊息{m},或者在進行錯誤更正的情況下自碼字{y}的讀出版本恢復複數個碼字
{m}。
第4圖依據本發明一實施例繪示該資料存取方法的一局部順序控制方案。上述之奇偶校驗矩陣H可被設計成第4圖所示之奇偶校驗矩陣H(14 x 8222),其中在奇偶校驗矩陣H(14 x 8222)中有對應於8222個位元的8222個行,而奇偶校驗矩陣H(14 x 8222)中的對應於8202個位元(例如((1+4095)* 2+16)位元=8202位元)的前8208個行以及對應於14個位元的後續14個行可分別作為上述奇偶校驗矩陣H中之第一部分矩陣M以及第二部分矩陣K的例子。針對包含有(8192+16)個位元的資料及14個位元的校驗碼的碼字格式,該資料諸如訊息m可具有8208個位元(例如(8192+16=8202),而該校驗碼諸如對應於訊息m的校驗碼p(m)可具有14個位元。記憶裝置100(例如記憶體控制器110)可利用奇偶校驗矩陣H(14 x 8222)進行ECC處理(例如ECC編碼以及ECC解碼)。為便於理解,假設符號「bin(DN)BIT_COUNT」可代表數字DN以BIT_COUNT位元寬度來表示的二進制形式。例如,bin(16)12=12’b000000010000。又例如,bin(17)12=12’b000000010001。
如第4圖所示,第二部分矩陣K可包含一14 x 14單位矩陣(identity matrix)諸如單位矩陣I(14 x 14)。另外,第一部分矩陣M可包含具有分別和多個順序數值(sequential numbers)相對應的多個順序行的矩陣元素(sequential columns of matrix elements)的多個子矩陣,諸如帶有{1,2,3,...,4095}的一第一12 x 4095矩陣(例如其行向量可分別指出{1,2,3,...,4095}的二進制形式(或二進制表示法))、帶有{1,2,3,...,4095}的一第二12 x 4095矩陣(例如其行向量可分別指出{1,2,3,...,4095}的二進制形式)、以及帶有{0,1,...,15}的一12 x 16矩陣(例如其行向量可分別指出{0,1,...,15}的二進制形式),且可另包含一或多個特殊行的矩陣元素及/或一或多個固定列的矩陣元素,其中以上矩陣元素的組合可作為該局部順序資訊的例子,但本發明不限於此。依據本實施例,該一或多個特殊行的矩陣元素可包含一第一特殊行{2’b11,bin(16)12}諸如{1,1,{0,0,0,0,0,0,
0,1,0,0,0,0}}以及一第二特殊行{2’b11,bin(17)12}諸如{1,1,{0,0,0,0,0,0,0,1,0,0,0,1}},且該一或多個固定列的矩陣元素可包含一第一固定列{1,{1,1,1,...,1},1,{0,0,0,...,0},{1,1,1,...,1}}以及一第二固定列{1,{0,0,0,...,0},1,{1,1,1,...,1},{1,1,1,...,1}}。針對在第4圖所示之奇偶校驗矩陣H(14 x 8222)的第一部分矩陣M(14 x 8208)中之矩陣元素的配置,對應於上方12列的12個位元中之最上面的位元與最下面的位元可分別代表一最低有效位元(least significant bit,LSB)以及一最高有效位元(most significant bit,MSB)。例如,在第一特殊行{2’b11,bin(16)12}中的最上面的位元應為bin(16)12的最低有效位元,諸如0;在第二特殊行{2’b11,bin(17)12}中的最上面位元應為bin(17)12的最低有效位元,諸如1;其餘可依此類推。
帶有{1,2,3,...,4095}的第一12 x 4095矩陣可包含位於第一特殊行{2’b11,bin(16)12}的14個位元中的上方12個位元(例如bin(16)12)旁邊緊接位置的(next to)第一組順序行{bin(1)12,bin(2)12,bin(3)12,...,bin(4095)12}諸如{{0,0,0,0,0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,0,0,1,0},{0,0,0,0,0,0,0,0,0,0,1,1},...,{1,1,1,1,1,1,1,1,1,1,1,1}},帶有{1,2,3,...,4095}的第二12 x 4095矩陣可包含位於第二特殊行{2’b11,bin(17)12}的14個位元中的上方12個位元(例如bin(17)12)旁邊緊接位置的第二組順序行{bin(1)12,bin(2)12,bin(3)12,...,bin(4095)12}諸如{{0,0,0,0,0,0,0,0,0,0,0,1},{0,0,0,0,0,0,0,0,0,0,1,0},{0,0,0,0,0,0,0,0,0,0,1,1},...,{1,1,1,1,1,1,1,1,1,1,1,1}},以及帶有{0,1,...,15}的12 x 16矩陣可包含第三組順序行{bin(0)12,bin(1)12,...,bin(15)12}諸如{{0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,1},...,{0,0,0,0,0,0,0,0,1,1,1,1}}。
在ECC解碼的期間,記憶裝置100(例如記憶體控制器110)可依據以下方程式偵測癥狀s:
s=HyT;其中癥狀s通常為錯誤位元所在位置的行索引。尤其,解碼不需要很大的查找表。由於奇偶校驗矩陣H(14 x 8222)中之某些子矩陣分別包含載有順序值(例如{1,2,3,...,4095}、{0,1,...,15}等)的順序行,用來儲存關於ECC處理的預先計算資訊的該內部儲存空間可被大幅地減少。例如,該查找表能被簡化為某些方針。類似地,用於ECC編碼的一產生器矩陣能被實施在某些計數器中而非內建在大型矩陣中。基於第4圖所示之局部順序控制方案,HPCS型ECC電路115的內部儲存空間能以緻密/緊湊(compact)的方式來實施。
第5圖依據本發明另一實施例繪示該資料存取方法的該局部順序控制方案。上述奇偶校驗矩陣H可如第5圖所示用更普遍的方式被設計成一奇偶校驗矩陣H(r x n),其中在奇偶校驗矩陣H(r x n)中有對應於n個位元的n個行,而奇偶校驗矩陣H(r x n)中之對應於k個位元(例如((1+(2p-1))* 2+q)位元=k位元)的前k個行以及對應於r個位元(例如(p+2)位元=r位元)的後續r個行可分別作為上述奇偶校驗矩陣H中之第一部分矩陣M以及第二部分矩陣K的例子。關於包含有(2p * 2+q)位元的資料及(p+2)位元的校驗碼的一碼字格式,該資料諸如訊息m可具有(2p * 2+q)位元,而該校驗碼諸如對應於訊息m的校驗碼p(m)可具有(p+2)位元。資料長度k、校驗碼長度r、以及碼字長度n可如下列表示:k=(2p * 2+q);r=(p+2);以及n=(k+r);其中p及q可分別為正整數,而q2p-2。記憶裝置100(例如記憶體控制器110)可利用奇偶校驗矩陣H(r x n)進行ECC處理(例如ECC編碼以及ECC解碼)。
如第5圖所示,奇偶校驗矩陣H(r x n)的第二部分矩陣K(r x r)可包含一(p+2)x(p+2)單位矩陣諸如一單位矩陣I(r x r)。另外,奇偶校驗矩陣H(r x n)的第一部分
矩陣M(r x k)可包含具有分別和多個順序數值相對應的多個順序行的矩陣元素的多個子矩陣,諸如帶有{1,2,3,...,(2p-1)}的一第一p x(2p-1)矩陣(例如其行向量可分別指出{1,2,3,...,(2p-1)}的二進制形式)、帶有{1,2,3,...,(2p-1)}的一第二p x(2p-1)矩陣(例如其行向量可分別指出{1,2,3,...,(2p-1)}的二進制形式)、以及帶有{0,1,...,(q-1)}的一p x q矩陣(例如其行向量可分別指出{0,1,...,(q-1)}的二進制形式),且可另包含一或多個特殊行的矩陣元素及/或一或多個固定列的矩陣元素,其中以上矩陣元素的組合可作為該局部順序資訊的例子,但本發明不限於此。依據本實施例,該一或多個特殊行的矩陣元素可包含一第一特殊行{b2,a2,bin(q)p}以及一第二特殊行{b2,a2,bin(q+1)p},且該一或多個固定列的矩陣元素可包含一第一固定列{a2,{a0,a0,a0,...,a0},a2,{a1,a1,a1,...,a1},{a2,a2,a2,...,a2}}以及一第二固定列{b2,{b0,b0,b0,...,b0},b2,{b1,b1,b1,...,b1},{b2,b2,b2,...,b2}}。在這些固定列中,(ai0,bi0)不能為(0,0)(例如i0=0、1、或2),因此,在這些固定列中於同一行的一組矩陣元素ai0及bi0不能同時為0。另外,(ai0,bi0)≠(aj0,bj0)(例如i0=0、1、或2而j0=0、1、或2,且i0≠j0),因此在一行中的一組矩陣元素(a2,b2)中之任兩組、在另一行中的一組矩陣元素(a1,b1)、以及在又另一行中的一組矩陣元素(a0,b0)在這些固定列中不能為相同的。關於在第5圖所示之奇偶校驗矩陣H(r x n)的第一部分矩陣M(r x k)中之矩陣元素的配置,對應於前p列的p個位元中之最上面的位元與最下面的位元可分別代表一最低有效位元以及一最高有效位元。例如,在第一特殊行{b2,a2,bin(q)p}中的最上面的位元應為bin(q)p的最低有效位元,其中若q為偶數,這個最低有效位元為0,否則,這個最低有效位元為1;在第二特殊行{b2,a2,bin(q+1)p}中的最上面位元應為bin(q+1)p的最低有效位元,其中若q為偶數,這個最低有效位元為1,否則,這個最低有效位元為0;其餘可依此類推。
帶有{1,2,3,...,(2p-1)}的該第一p x(2p-1)矩陣可包含位於第一特
殊行{b2,a2,bin(q)p}的(p+2)個位元中的上方p個位元(例如bin(q)p)旁邊緊接位置的第一組順序行{bin(1)p,bin(2)p,bin(3)p,...,bin(2p-1)p}諸如{{0,...,0,0,0,1},{0,...,0,0,1,0},{0,...,0,0,1,1},...,{1,...,1,1,1,1}},帶有{1,2,3,...,(2p-1)}的該第二p x(2p-1)矩陣可包含位於第二特殊行{b2,a2,bin(q+1)p}的(p+2)個位元中的上方p個位元(例如bin(q+1)p)旁邊緊接位置的第二組順序行{bin(1)p,bin(2)p,bin(3)p,...,bin(2p-1)p}諸如{{0,...,0,0,0,1},{0,...,0,0,1,0},{0,...,0,0,1,1},...,{1,...,1,1,1,1}},以及帶有{0,1,...,(q-1)}的p x q矩陣可包含第三組順序行{bin(0)p,bin(1)p,...,bin(q-1)p}諸如{{0,...,0,0,1},{0,...,0,1,0},...,{0,...,0,1,...,1}}。
由於奇偶校驗矩陣H(r x n)中之某些子矩陣分別包含載有順序值(例如{1,2,3,...,(2p-1)}、{0,1,...,(q-1)}等)的順序行,用於儲存預先計算資訊的內部儲存空間能被大幅減少。例如,該查找表能被簡化為某些方針。類似地,用於ECC編碼的產生器矩陣能被實施在某些計數器中而非內建於大型矩陣。基於第5圖所示之局部順序控制方案,HPCS型ECC電路115的內部儲存空間能以緻密/緊湊的方式來實施。
第6圖為依據本發明一實施例之對應於該資料存取方法的解碼電路600的示意圖。HPCS型ECC電路115可包含至少一解碼電路(例如一或多個解碼電路)諸如第6圖所示之解碼電路600,且解碼電路600可包含至少一解碼器(例如一或多個解碼器)諸如一漢明碼(Hamming code)解碼器,但本發明不限於此。
如第6圖所示,解碼電路600(例如上述至少一解碼器諸如該漢明碼解碼器)可包含一癥狀計算器610、一奇偶校驗矩陣產生器諸如H產生器620、以及一錯誤位置解碼器630。例如,接收到的碼字y可被表示如下:y=[y0,y1,...,yn-1];
其中解碼電路600可接收藉由一輸入碼字訊號in_cwd所載的碼字y的位元{yi|i=0,1,...,(n-1)},且輸入碼字訊號in_cwd的輸入寬度可等於1(位元)。記憶體控制器110(例如HPCS型ECC電路115)可利用一輸入致能(enable)訊號in_en來致能解碼電路600的輸入功能,以開始接收並處理碼字y的位元{yi,i=0,1,...,(n-1)}。例如,該奇偶校驗矩陣產生器諸如H產生器620可產生並輸出奇偶校驗矩陣H(r x n)的一行[r-1:0]h_column,諸如奇偶校驗矩陣H(r x n)的行[r-1:0]h_column之r位元{h_column[r-1],...,h_column[1],h_column[0]},而癥狀計算器610可接收奇偶校驗矩陣H(r x n)的行[r-1:0]h_column。於是,該奇偶校驗矩陣產生器諸如H產生器620可產生奇偶校驗矩陣H(r x n)的全部的行(例如行[r-1:0]h_column),並且癥狀計算器610可接收奇偶校驗矩陣H(r x n)的全部的行(例如行[r-1:0]h_column),並且可依據碼字y進行癥狀計算以產生並輸出一癥狀[r-1:0]syndrome,諸如癥狀[r-1:0]syndrome的r位元{syndrome[r-1],...,syndrome[1],syndrome[0]}。錯誤位置解碼器630可接收癥狀[r-1:0]syndrome,並且可依據癥狀[r-1:0]syndrome進行錯誤偵測以產生並輸出一解碼結果訊號dec_result,尤其可依據癥狀[r-1:0]syndrome進行錯誤位置解碼以產生並輸出一錯誤位置[r-1:0]err_loc。例如,解碼結果訊號dec_result可載有指出是否有任何錯誤發生的一解碼結果。
為便於理解,以「[r-1:0]」起始的某個符號(symbol)的表示法(例如[r-1:0]h_column,[r-1:0]syndrome,[r-1:0]err_loc等)可依據硬體觀點被用來宣告一匯流排寬度(例如r位元),但本發明不限於此。例如,假設r1及r2為非負整數並且r1>r2,以「[r1:r2]」結束的某個符號的表示法(例如syndrome[r1:r2]等)可被用來指稱一組位元[r1:r2](例如{syndrome[r1],...,syndrome[r2]}等)。
第7圖依據本發明一實施例繪示在第6圖所示之解碼電路600中之癥狀計算器610的某些實施細節。癥狀計算器610可包含多個癥狀位元計算器,且
這些癥狀位元計算器可具有相同的架構。針對和第5圖所示之奇偶校驗矩陣H(r x n)的行[r-1:0]h_column的某個位元(例如位元h_column[0])相對應的一癥狀位元計算器,這個癥狀位元計算器可包含一及(AND)閘712(在第7圖中標示為「AND」以求簡明)、一互斥或(XOR)閘714(在第7圖中標示為「XOR」以求簡明)、一多工器(multiplexer;在第7圖中標示為「MUX」以求簡明)、以及一正反器(flip-flop)電路718(例如D型正反器(D flip-flop))。多工器716的兩個輸入端子in_0及in_1可分別耦接至正反器電路718輸出端子Q以及互斥或閘714的輸出端子,而正反器718的輸入端子D以及時脈端子CLK可分別耦接至多工器716的輸出端子以及解碼電路600的時脈訊號clk。例如,及閘712可對碼字y的位元yi以及行[r-1:0]h_column的上述某個位元(例如位元h_columu[0])進行一及運作以產生一及運作結果,而互斥或閘714可對該及運作結果以及在正反器電路718的輸出端子Q的一輸出進行一互斥或運作以在其輸出端子產生一互斥或運作結果。另外,多工器716可依據輸入致能訊號in_en進行多工或選擇多工器716的兩個輸入端子in_0及in_1之各自的輸入中之一者。例如,若輸入致能訊號in_en載有邏輯值0以供指出一除能(disable)狀態(例如輸入致能訊號in_en是在一低電壓位準),多工器716可選擇輸入端子in_0的輸入作為其輸出;否則,在輸入致能訊號in_en載有邏輯值1以供指出一致能狀態(例如輸入致能訊號in_en是在一高電壓位準)的情況下,多工器716可選擇輸入端子in_1的輸入作為其輸出;但本發明不限於此。
第8圖依據本發明一實施例繪示在第6圖所示之解碼電路600中之H產生器620的某些實施細節。H產生器620可包含一p位元加1(p bits plus 1)計數器812、一及閘814(在第8圖中標示為「AND」以求簡明)、一2位元加1(2 bits plus 1)計數器816、一判斷電路818(在第8圖中標示為「(bank_idx==2’d2 && sub_col_idx==q-1)∥(sub_col_idx==2p-1)」以便於理解)、以及一行映射電路
820。在下列描述中,於奇偶校驗矩陣H(r x n)中之一組連續行可被稱為一矩陣元素庫(bank),或簡稱「庫」。例如,庫索引bank_idx的多個可能值0、1、2及3(例如分別為2’d0、2’d1、2’d2及2’d3)可分別指出第5圖所示之奇偶校驗矩陣H(r x n)中之多個庫#0、#1、#2及#3,其中該多個庫#0、#1、#2及#3可代表奇偶校驗矩陣H(r x n)中的自第一特殊行{b2,a2,bin(q)p}起始的一組2p個行、奇偶校驗矩陣H(r x n)中的自第二特殊行{b2,a2,bin(q+1)p}起始的另一組2p個行、奇偶校驗矩陣H(r x n)中的包含帶有{0,1,...,(q-1)}的p x q矩陣的一組q個行、以及奇偶校驗矩陣H(r x n)中的包含(p+2)x(p+2)單位矩陣的一組(p+2)個行;以及子行(sub-column)索引sub_col_idx的多個可能值0、1、2等(例如針對p=12的情況分別為12’d0、12’d1、12’d2等)可分別指出在第5圖所示之奇偶校驗矩陣H(r x n)中之於多個庫#0、#1、#2及#3的一個庫中之一系列的行,其中sub_col_idx=0可指出在這個庫中之最左邊的行,並且sub_col_idx=1、2等可分別指出在這個庫中之後續的行;但本發明不限於此。另外,p位元加1計數器812可產生子行索引sub_col_idx的p位元{sub_col_idx[p-1],...sub_col_idx[0]},因此子行索引sub_col_idx可被寫為子行索引[p-1:0]sub_col_idx。類似地,2位元加1計數器816可產生庫索引bank_idx的2位元{bank_idx[1],bank_idx[0]},因此庫索引bank_idx可被寫為庫索引[1:0]bank_idx。
基於第8圖所示之架構,p位元加1計數器812以及2位元加1計數器816可分別產生子行索引[p-1:0]sub_col_idx以及庫索引[1:0]bank_idx,並且行映射電路820可依據子行索引[p-1:0]sub_col_idx以及庫索引[1:0]bank_idx進行行映射,以將它們轉換為第5圖所示之奇偶校驗矩陣H(r x n)的行[r-1:0]h_column。p位元加1計數器812以及2位元加1計數器816的每一者可進行一加1運作,尤其可藉由以一增量諸如1增加一計數值來依據時脈訊號clk進行計數,其中p位元加1計數器812以及2位元加1計數器816之各自的輸出之各自的位元寬度可分別等於p位元
以及2位元。例如,在H產生器620開始運作的瞬間,p位元加1計數器812以及2位元加1計數器816之各自的初始值可分別為零。p位元加1計數器812可接收輸入致能訊號in_en以作為其加1致能訊號plus_1,並且在加1致能訊號plus_1諸如輸入致能訊號in_en是在該致能狀態(例如加1致能訊號plus_1是在高電壓位準)的情況下可依據時脈訊號clk計數以產生子行索引[p-1:0]sub_col_idx(例如其p位元{sub_col_idx[p-1],...sub_col_idx[0]})。另外,及閘814可對輸入致能訊號in_en以及判斷電路818的輸出進行一及運作,以產生並輸出一及運作結果,而2位元加1計數器816可接收及閘814的輸出以作為其加1致能訊號plus_1’,並且在載有該及運作結果之加1致能訊號plus_1’是在一致能狀態(例如加1致能訊號plus_1’是在高電壓位準)的情況下可依據時脈訊號clk計數以產生庫索引[1:0]bank_idx(例如其2位元{bank_idx[1],bank_idx[0]})。依據本實施例,若清除(clear)訊號Clear諸如判斷電路818的輸出載有邏輯值1以供指出一清除狀態(例如清除訊號Clear是在高電壓位準),p位元加1計數器812可將子行索引[p-1:0]sub_col_idx重設為該初始值諸如零,其中由於加1致能訊號plus_1’可暫時被設為其致能狀態,因此2位元加1計數器816可開始計數,尤其可計數一次以將庫索引[1:0]bank_idx增加1;否則,在清除訊號Clear諸如判斷電路818的輸出載有一邏輯值0以供指出一非清除狀態(例如清除訊號Clear是在低電壓位準)的情況下,p位元加1計數器812可正常地運作(例如繼續計數),其中由於加1致能訊號plus_1’可被設為其除能狀態,因此2位元加1計數器816可暫停計數而不增加庫索引[1:0]bank_idx。
針對多個庫#0、#1、#2及#3之間的切換控制,判斷電路818可判斷((bank_idx==2’d2 && sub_col_idx==q-1)∥(sub_col_idx==2p-1))為真(True)或假(False),尤其可進行((bank_idx==2’d2 && sub_col_idx==q-1)∥(sub_col_idx==2p-1))的計算以產生並輸出一對應的邏輯值,諸如邏輯值1或0,
以供分別指出((bank_idx==2’d2 && sub_col_idx==q-1)∥(sub_col_idx==2p-1))為真或假。由於這個邏輯值是用來當作清除訊號Clear的邏輯值,當H產生器620已完成產生在一目前庫(例如多個庫#0、#1、#2及#3中之任一者)中的全部的行時,p位元加1計數器812可將子行索引[p-1:0]sub_col_idx重設為該初始值諸如零,並且H產生器620可自該目前庫切換至下一個庫(例如多個庫#0、#1、#2及#3中之該目前庫的下一個)。例如,在完成產生於庫#0中之全部的行的一第一時間點時,(sub_col_idx==2p-1)為真,而判斷電路818的輸出所載有的邏輯值自0改變為1,其可觸發自庫#0切換至庫#1,其中這個邏輯值在之後變回到0;在完成產生於庫#1中之全部的行的一第二時間點時,(sub_col_idx==2p-1)為真,而判斷電路818的輸出所載有的邏輯值變為1,其可觸發自庫#1切換至庫#2,其中這個邏輯值在之後變回到0;以及在完成產生於庫#2中之全部的行的一第三時間點時,(bank_idx==2’d2 && sub_col_idx==q-1)為真,而判斷電路818的輸出所載有的邏輯值變為1,其可觸發自庫#2切換至庫#3,其中這個邏輯值在之後變回到0;但本發明不限於此。如此一來,在產生該目前庫的行的期間,子行索引[p-1:0]sub_col_idx可自0變化至對應於該目前庫的一預定值(例如對應於庫#0及#1中之任一者的(2p-1)、或者對應於庫#2的(q-1))。
由於產生第5圖所示之奇偶校驗矩陣H(r x n)的全部的行所需要的時間可對應於接收碼字y的時間長度(例如時脈訊號clk的n個週期)或對應於碼字長度n,因此記憶體控制器110(例如HPCS型ECC電路115)可依據時脈訊號clk進行計數以判斷完成產生第5圖所示之奇偶校驗矩陣H(r x n)的最後一行的時間點,並且可控制輸入致能訊號in_en在這個時間點自該致能狀態切換至該除能狀態,以使H產生器620正確地產生並輸出第5圖所示之奇偶校驗矩陣H(r x n)的最後一行。
第9圖依據本發明一實施例繪示在第8圖所示之H產生器620中之行映射電路820的某些實施細節。行映射電路820可包含多個判斷電路912、914、916、
918及920(在第9圖中分別標示「bank_idx==2’d3」、「(bank_idx==2’d0)&&(sub_col_idx==0)」、「(bank_idx==2’d1)&&(sub_col_idx==0)」、「(bank_idx==2’d0)」以及「(bank_idx==2’d1)」以便於理解),並且這些判斷電路912、914、916、918及920可分別用邏輯電路來實施,但本發明不限於此。基於第9圖所示之架構,行映射電路820可對庫索引[1:0]bank_idx及子行索引[p-1:0]sub_col_idx中之一或多個索引進行行映射以將該一或多個索引轉換為第5圖所示之奇偶校驗矩陣H(r x n)的行[r-1:0]h_column。
例如,判斷電路912可判斷(bank_idx==2’d3)是真或假,尤其可進行(bank_idx==2’d3)的計算以產生並輸出一對應的邏輯值,諸如邏輯值1或0,以供分別指出(bank_idx==2’d3)為真或假,其中若這個邏輯值為邏輯值1(例如對應於邏輯值1的「是」的情況),判斷電路912可觸發行映射電路820輸出(1’b1<<sub_col_idx)以作為行[r-1:0]h_column(在第9圖中標示為「h_column=(1’b1<<sub_col_idx)」以求簡明),否則(例如對應於邏輯值0的「否」的情況),判斷電路912可觸發判斷電路914的判斷運作;判斷電路914可判斷((bank_idx==2’d0)&&(sub_col_idx==0))是真或假,尤其可進行((bank_idx==2’d0)&&(sub_col_idx==0))的計算以產生並輸出一對應的邏輯值,諸如邏輯值1或0,以供分別指出((bank_idx==2’d0)&&(sub_col_idx==0))為真或假,其中若這個邏輯值為邏輯值1(例如對應於邏輯值1的「是」的情況),判斷電路914可觸發行映射電路820輸出第一特殊行{b2,a2,bin(q)p}以作為行[r-1:0]h_column(在第9圖中標示為「h_column={b2,a2,bin(q)p}」以求簡明),否則(例如對應於邏輯值0的「否」的情況),判斷電路914可觸發判斷電路916的判斷運作;判斷電路916可判斷((bank_idx==2’d1)&&(sub_col_idx==0))是真或假,尤其可進行((bank_idx==2’d1)&&(sub_col_idx==0))的計算以產生並輸出一對應的邏輯值,諸如邏輯值1或0,以供分別指出((bank_idx==2’d1)&&(sub_col_idx==0))為真或假,其中若
這個邏輯值為邏輯值1(例如對應於邏輯值1的「是」的情況),判斷電路916可觸發行映射電路820輸出第二特殊行{b2,a2,bin(q+1)p}以作為行[r-1:0]h_column(在第9圖中標示為「h_column={b2,a2,bin(q+1)p}」以求簡明),否則(例如對應於邏輯值0的「否」的情況),判斷電路916可觸發判斷電路918的判斷運作;判斷電路918可判斷(bank_idx==2’d0)是真或假,尤其可進行(bank_idx==2’d0)的計算以產生並輸出一對應的邏輯值,諸如邏輯值1或0,以供分別指出(bank_idx==2’d0)為真或假,其中若這個邏輯值為邏輯值1(例如對應於邏輯值1的「是」的情況),判斷電路918可觸發行映射電路820輸出局部順序行{b0,a0,sub_col_idx}以作為行[r-1:0]h_column(在第9圖中標示為「h_column={b0,a0,sub_col_idx}」以求簡明),否則(例如對應於邏輯值0的「否」的情況),判斷電路918可觸發判斷電路920的判斷運作;以及判斷電路920可判斷(bank_idx==2’d1)是真或假,尤其可進行(bank_idx==2’d1)的計算以產生並輸出一對應的邏輯值,諸如邏輯值1或0,以供分別指出(bank_idx==2’d1)為真或假,其中若這個邏輯值為邏輯值1(例如對應於邏輯值1的「是」的情況),判斷電路920可觸發行映射電路820輸出局部順序行{b1,a1,sub_col_idx}以作為行[r-1:0]h_column(在第9圖中標示為「h_column={b1,a1,sub_col_idx}」以求簡明),否則(例如對應於邏輯值0的「否」的情況),判斷電路920可觸發行映射電路820輸出局部順序行{b2,a2,sub_col_idx}作為行[r-1:0]h_column(在第9圖中標示為「h_column={b2,a2,sub_col_idx}」以求簡明)。
依據某些實施例,行映射電路820可包含一移位器(shifter),並且可使用該移位器來移位數值1’b1(例如對數值1’b1進行左移位)sub_col_idx次以產生(1’b1<<sub_col_idx)。另外,行映射電路820可將第一特殊行{b2,a2,bin(q)p}以及第二特殊行{b2,a2,bin(q+1)p}儲存在於行映射電路820中的儲存單元內,以供行映射電路820在需要時取回。
第10圖依據本發明一實施例繪示在第6圖所示之解碼電路600中之錯誤位置解碼器630的某些實施細節。錯誤位置解碼器630可包含多個判斷電路1010、1022、1024、1026、1028及1030(在第10圖中分別標示為「syndrome==0」、「1s_count_of_syndrome==1」、「syndrome=={b2,a2,bin(q)p}」、「syndrome=={b2,a2,bin(q+1)p}」、「syndrome[r-1:r-2]=={b0,a0}」以及「syndrome[r-1:r-2]=={b1,a1}」以便於理解),並且這些判斷電路1010、1022、1024、1026、1028及1030可分別用邏輯電路來實施,其中子電路1020可被視為一錯誤定位器(locator),但本發明不限於此。基於第10圖所示之架構,錯誤位置解碼器630可解碼癥狀[r-1:0]syndrome以產生載有該解碼結果的解碼結果訊號dec_result,尤其可對癥狀[r-1:0]syndrome進行錯誤位置解碼,以判斷錯誤諸如一單一位元錯誤的錯誤位置[r-1:0]err_loc。
例如,判斷電路1010可判斷(syndrome==0)為真或假,尤其可進行(syndrome==0)的計算以產生並輸出一對應的邏輯值,諸如邏輯值1或0,以供分別指出(syndrome==0)為真或假,其中若這個邏輯值為邏輯值1(例如對應於邏輯值1的「是」的情況),判斷電路1010可觸發錯誤位置解碼器630以輸出載有指出無錯誤的解碼結果的解碼結果訊號dec_result(在第10圖中標示為「dec_result=0」以求簡明),否則(例如對應於邏輯值0的「否」的情況),判斷電路1010可觸發錯誤位置解碼器630以輸出載有指出有錯誤(例如單一位元錯誤)的解碼結果的解碼結果訊號dec_result(在第10圖中標示為「dec_result=1」以求簡明),並且可觸發判斷電路1022的判斷運作;假設符號1s_count_of_syndrome代表癥狀[r-1:0]syndrome的1的計數(例如在r位元{syndrome[r-1],...,syndrome[1],syndrome[0]}中之所有的具有數值1的位元的數量),判斷電路1022可判斷(1s_count_of_syndrome==1)為真或假,尤其可進行(1s_count_of_syndrome==1)的計算以產生並輸出一對應的邏輯值,諸如邏輯值1或0,以供分別指出
(1s_count_of_syndrome==1)為真或假,其中若這個邏輯值為邏輯值1(例如對應於邏輯值1的「是」的情況),判斷電路1022可觸發錯誤位置解碼器630以輸出k加上在癥狀[r-1:0]syndrome中之1的索引,諸如資料長度k與在癥狀[r-1:0]syndrome的r位元{syndrome[r-1],...,syndrome[1],syndrome[0]}中之具有數值1的位元syndrome[r0]的索引r0(例如r0可為區間[0,r-1]內的整數)的總和,以作為錯誤位置[r-1:0]err_loc(在第10圖中標示為「err_loc=k+在癥狀中之1的索引」以求簡明),否則(例如對應於邏輯值0的「否」的情況),判斷電路1022可觸發判斷電路1024的判斷運作;判斷電路1024可判斷(syndrome=={b2,a2,bin(q)p})為真或假,尤其可進行(syndrome=={b2,a2,bin(q)p})的計算以產生並輸出一對應的邏輯值,諸如邏輯值1或0,以供分別指出(syndrome=={b2,a2,bin(q)p})為真或假,其中若這個邏輯值為邏輯值1(例如對應於邏輯值1的「是」的情況),判斷電路1024可觸發錯誤位置解碼器630以輸出0作為錯誤位置[r-1:0]err_loc(在第10圖中標示為「err_loc=0」以求簡明),否則(例如對應於邏輯值0的「否」的情況),判斷電路1024可觸發判斷電路1026的判斷運作;判斷電路1026可判斷(syndrome=={b2,a2,bin(q+1)p})為真或假,尤其可進行(syndrome=={b2,a2,bin(q+1)p})的計算以產生並輸出一對應的邏輯值,諸如邏輯值1或0,以供分別指出(syndrome=={b2,a2,bin(q+1)p})為真或假,其中若這個邏輯值為邏輯值1(例如對應於邏輯值1的「是」的情況),判斷電路1026可觸發錯誤位置解碼器630以輸出2p作為錯誤位置[r-1:0]err_loc(在第10圖中標示為「err_loc=2p」以求簡明),否則(例如對應於邏輯值0的「否」的情況),判斷電路1026可觸發判斷電路1028的判斷運作;判斷電路1028可判斷(syndrome[r-1:r-2]=={b0,a0})為真或假,尤其可進行(syndrome[r-1:r-2]=={b0,a0})的計算以產生並輸出一對應的邏輯值,諸如邏輯值1或0,以供分別指出(syndrome[r-1:r-2]=={b0,a0})為真或假,其中若這個邏輯值為邏輯值1(例如對應於邏輯值1的
「是」的情況),判斷電路1028可觸發錯誤位置解碼器630以輸出(0+syndrome[p-1:0])(例如syndrome[p-1:0])作為錯誤位置[r-1:0]err_loc(在第10圖中標示為「err_loc=0+syndrome[p-1:0]」以求簡明),否則(例如對應於邏輯值0的「否」的情況),判斷電路1028可觸發判斷電路1030的判斷運作;以及判斷電路1030可判斷(syndrome[r-1:r-2]=={b1,a1})為真或假,尤其可進行(syndrome[r-1:r-2]=={b1,a1})的計算以產生並輸出一對應的邏輯值,諸如邏輯值1或0,以供分別指出(syndrome[r-1:r-2]=={b1,a1})為真或假,其中若這個邏輯值為邏輯值1(例如對應於邏輯值1的「是」的情況),判斷電路1030可觸發錯誤位置解碼器630以輸出(2P+syndrome[p-1:0])作為錯誤位置[r-1:0]err_loc(在第10圖中標示為「err_loc=2P+syndrome[p-1:0]」以求簡明),否則(例如對應於邏輯值0的「否」的情況),判斷電路1030可觸發錯誤位置解碼器630輸出((2P * 2)+syndrome[p-1:0])作為錯誤位置[r-1:0]err_loc(在第10圖中標示為「err_loc=(2P * 2)+syndrome[p-1:0]」以求簡明)。
依據某些實施例,由於錯誤位置[r-1:0]err_loc可指出該單一位元錯誤的位置,解碼電路600可依據碼字y中之剩餘位元對在這個位置的該單一位元錯誤進行錯誤更正,但本發明不限於此。
第11圖繪示在第9圖所示之行映射電路820中之判斷電路912的例子。判斷電路912可包含一及閘(在第11圖中標示為「AND」以求簡明),且該及閘可對庫索引bank_idx的兩個位元{bank_idx[1],bank_idx[0]}進行一及運作,以產生並輸出一及運作結果,例如一對應的邏輯值,諸如邏輯值1或0,以供分別指出(bank_idx[1]==bank_idx[0])為真或假,其中若這個邏輯值為邏輯值1(例如對應於邏輯值1的「是」的情況),判斷電路912可觸發行映射電路820輸出(1’b1<<sub_col_idx)作為行[r-1:0]h_column,否則(例如對應於邏輯值0的「否」的情況),判斷電路912可觸發判斷電路914的判斷運作。為簡明起見,本實施例中
與前述實施例類似之細節在此不重覆贅述。
第12圖繪示在第10圖所示之錯誤位置解碼器630中之判斷電路1022的例子。假設2w-1 r<2w,判斷電路1022可包含具有多個加法器(w位元加法器)的加法器模組1210、具有w個互斥或閘的逐位元(bitwise)互斥或模組1220(在第12圖中標示為「XOR」以求簡明)、具有多個或閘(OR gate)的或閘模組1230(在第12圖中標示為「OR」以求簡明)、以及一反向器1240。加法器模組1210的這些加法器,諸如這些w位元加法器,可被實施成第2圖所示之多個行的加法器,以用來對癥狀[r-1:0]syndrome的全部位元進行相加以產生加法器模組1210的一w位元輸出(例如加法器模組1210的全部的w位元輸入的總和),其中癥狀[r-1:0]syndrome的r位元{syndrome[0],syndrome[0]},{syndrome[2],syndrome[3]}、...、{syndrome[r-4],syndrome[r-3]}及{syndrome[r-2],syndrome[r-1]}的每一者可被接收為於該多個加法器中之一者(例如在第12圖的左手邊所示之第一行的加法器中之任一者)的某一輸入的w個位元中之一最低有效位元,而該w個位元的剩餘位元為零,但本發明不限於此。只要能將癥狀[r-1:0]syndrome的全部位元作相加,加法器模組1210的該多個加法器的配置可予以變化。另外,逐位元互斥或模組1220的該w個互斥或閘可被實施成一行互斥或閘,以供接收加法器模組1210的該w位元輸出並且對加法器模組1210的該w位元輸出以及1(例如w’d1,諸如帶有十進位數值1的一組w位元,使得最低有效位元為1且其餘位元為0)進行一逐位元互斥或運作,以產生逐位元互斥或模組1220的w位元輸出。此外,或閘模組1230的該多個或閘可被實施成具有與加法器模組1210的該多個加法器類似的排列/配置的多個行的或閘,以供對逐位元互斥或模組1220的該w位元輸出的全部位元進行多個或運作以產生一或運作結果,其中這個w位元輸出的該w個位元的每一者可被接收來當作該多個或閘的其中一者的輸入,但本發明不限於此。只要能對逐位元互斥或模組1220的該w位元輸出的全
部位元進行該多個或運作,或閘模組1230的該多個或閘的排列/配置可予以變化。如第12圖所示,反向器1240可反置(invert)該或運作結果以產生判斷電路1022的該對應的邏輯值。為簡明起見,本實施例中與前述實施例類似之細節在此不重複贅述。
第13圖依據本發明一實施例繪示該資料存取方法的工作流程1300。記憶體控制器110可依據自預定儲存空間讀取受保護資料(例如ECC受保護資料,諸如碼字{y})的一讀取請求來觸發工作流程1300的運作,其中該預定儲存空間通常可被記憶體控制器110存取。例如,該讀取請求可代表記憶裝置100的一外部請求,諸如來自主裝置50的一主裝置指令(例如讀取指令),以及該預定儲存空間可代表記憶裝置100的內部儲存空間,諸如非揮發性記憶體120的儲存空間。又例如,該讀取請求可代表記憶裝置100的一內部請求,以及該預定儲存空間可代表記憶裝置100的外部儲存空間,諸如在以上的某些實施例中提及之主裝置50的該部分記憶體空間。
在步驟S10中,因應該讀取請求,記憶體控制器110可開始自該預定儲存空間接收對應於該讀取請求的該受保護資料,其中該受保護資料可包含一或多個碼字(例如碼字{y})的讀出版本,諸如碼字{y}的讀出版本,而該一或多個碼字包含碼字y。依據本實施例,若沒有錯誤發生,該一或多個碼字諸如碼字{y}的讀出版本理應會等於沒有錯誤的情況下的碼字{y};否則,碼字{y}的讀出版本可為碼字{y}的變更版本,其中碼字{y}可以是依據碼字{y}的讀出版本而可被修復的。
在步驟S20中,記憶體控制器110可利用HPCS型ECC電路115(例如解碼電路600)對碼字{y}的讀出版本進行ECC處理(例如ECC解碼)以修復碼字{y}。
在步驟S21中,針對碼字y(例如步驟S20中所述碼字{y}中之任一
者),HPCS型ECC電路115(例如解碼電路600)可產生奇偶校驗矩陣H(r x n),例如一行一行進行,並且依據碼字y進行基於奇偶校驗矩陣H(r x n)的癥狀計算以針對碼字y產生並輸出癥狀[r-1:0]syndrome。尤其,該奇偶校驗矩陣產生器諸如H產生器620可產生奇偶校驗矩陣H(r x n),且癥狀計算器610可依據碼字y進行基於奇偶校驗矩陣H(r x n)的該癥狀計算以針對碼字y產生並輸出癥狀[r-1:0]syndrome。如第5圖所示,奇偶校驗矩陣H(r x n)的第一部分矩陣M(r x k)可包含第一特殊行{b2,a2,bin(q)p}、第二特殊行{b2,a2,bin(q+1)p}、以及具有分別和多個順序數值相對應的多個順序行的矩陣元素的多個子矩陣,而該多個子矩陣例如:具有{1,2,3,...,(2p-1)}的該第一p x(2p-1)矩陣、具有{1,2,3,...,(2p-1)}的該第二p x(2p-1)矩陣、以及具有{0,1,...,(q-1)}的p x q矩陣。尤其,第一特殊行{b2,a2,bin(q)p}用第一特殊行{b2,a2,bin(q)p}中之一第一部分的矩陣元素(例如在上方p列中的上方p個矩陣元素,諸如在上方p列中的該p個位元)來載有一第一預定值bin(q)p,而第二特殊行{b2,a2,bin(q+1)p}用第二特殊行{b2,a2,bin(q+1)p}中之一第二部分的矩陣元素(例如在上方p列中的上方p個矩陣元素,諸如在上方p列中的該p個位元)來載有一第二預定值bin(q+1)p,其中第一部分矩陣M(r x k)的最後兩列為分別載有兩組預定位元的固定列(例如第一固定列{a2,{a0,a0,a0,...,a0},a2,{a1,a1,a1,...,a1},{a2,a2,a2,...,a2}}以及第二固定列{b2,{b0,b0,b0,...,b0},b2,{b1,b1,b1,...,b1},{b2,b2,b2,...,b2}}),而該第一部分的矩陣元素以及該第二部分的矩陣元素是在奇偶校驗矩陣H(r x n)的第一部分矩陣M(r x k)的剩餘的列。此外,奇偶校驗矩陣H(r x n)的第二部分矩陣K(r x r)可包含(p+2)x(p+2)單位矩陣諸如單位矩陣I(r x r)。
在步驟S22中,針對這個碼字y,HPCS型ECC電路115(例如解碼電路600)可判斷步驟S21的運作是否完成。若是(例如奇偶校驗矩陣H(r x n)之全部的行已被產生,而因此癥狀[r-1:0]syndrome已被產生),進入步驟S23;若否(例
如奇偶校驗矩陣H(r x n)的一或多個行尚未被產生),進入步驟S21以繼續這些運作。
在步驟S23中,針對這個碼字y,HPCS型ECC電路115(例如解碼電路600,尤其,錯誤位置解碼器630)可依據癥狀[r-1:0]syndrome進行錯誤偵測以產生並輸出解碼結果訊號dec_result。
在步驟S24中,針對這個碼字y,HPCS型ECC電路115(例如解碼電路600,尤其,錯誤位置解碼器630)可判斷是否有任何錯誤發生,如解碼結果訊號dec_result所指出。若是(例如錯誤位置解碼器630輸出載有指出有錯誤的解碼結果的解碼結果訊號dec_result),進入步驟S25;若否(例如錯誤位置解碼器630輸出載有指出無錯誤的解碼結果的解碼結果訊號dec_result),進入步驟S27。
在步驟S25,針對這個碼字y,HPCS型ECC電路115(例如解碼電路600,尤其,錯誤位置解碼器630)可依據癥狀[r-1:0]syndrome進行錯誤位置解碼以產生並輸出錯誤位置[r-1:0]err_loc。
在步驟S26中,針對這個碼字y,HPCS型ECC電路115(例如解碼電路600)可進行碼字y的錯誤更正,以更正碼字y之位於錯誤位置[r-1:0]err_loc的錯誤,例如依據碼字y之位於某些其他位置之各自的位元;並且因此修復碼字y。
在步驟S27中,HPCS型ECC電路115(例如解碼電路600)可判斷是否需要處理下一個碼字。若需要處理下一個碼字,進入步驟S21;否則,進入步驟S30。
在步驟S30中,記憶裝置100(例如記憶體控制器110)可依據自該受保護資料取得之該一或多個碼字(例如碼字{y})進行進一步處理。例如,在該讀取請求代表記憶裝置100的外部請求(諸如來自主裝置50的主裝置指令(例如讀取指令))的情況下,記憶體控制器110可回傳該一或多個碼字諸如碼字{y}給主裝置50。又例如,在該讀取請求代表記憶裝置100的內部請求的情況下,記憶體控制器可利用該一或多個碼字諸如碼字{y}進行記憶裝置100的一或多個其他
運作,諸如判斷自主裝置50發送的快速參考資訊是否已被有意或無意地變更(例如篡改)之運作,其中該快速參考資訊可被記憶體控制器110使用於記憶裝置100中之存取運作以作為快速參考,以提升整體效能,但本發明不限於此。
依據本實施例,第一部分矩陣M(r x k)的多個子矩陣的其中一者,諸如帶有{1,2,3,...,(2p-1)}的該第一p x(2p-1)矩陣,可包含位於該第一部分的矩陣元素(例如在上方p列中之上方p個矩陣元素)旁邊緊接位置的第一組順序行{bin(1)p,bin(2)p,bin(3)p,...,bin(2p-1)p},而第一部分矩陣M(r x k)的多個子矩陣的另一者,諸如帶有{1,2,3,...,(2p-1)}的該第二p x(2p-1)矩陣,可包含位於該第二部分的矩陣元素(例如在上方p列中之上方p個矩陣元素)旁邊緊接位置的第二組順序行{bin(1)p,bin(2)p,bin(3)p,...,bin(2p-1)p}。此外,第一部分矩陣M(r x k)的多個子矩陣的又另一者,諸如帶有{0,1,...,(q-1)}的p x q矩陣,可包含第三組順序行{bin(0)p,bin(1)p,...,bin(q-1)p}。為簡明起見,本實施例中之與前述實施例類似之細節在此不重複贅述。
為便於理解,該資料存取方法可由第13圖所示之工作流程1300來說明,但本發明不限於此。依據某些實施例,一或多個步驟可在第13圖所示之工作流程1300中新增、刪除或修改。
依據某些實施例,奇偶校驗矩陣H(r x n)的每一矩陣元素指出一位元的資訊,且針對奇偶校驗矩陣H(r x n)的每一行,下方的兩個矩陣元素對應於兩個位元,且剩餘的矩陣元素諸如上方p個矩陣元素對應於p個位元。尤其,第一部分矩陣M(r x k)的該多個子矩陣的一者,諸如帶有{1,2,3,...,(2p-1)}的該第一p x(2p-1)矩陣,可包含位於在第一特殊行{bin(q)p,a2,b2}的(p+2)個位元中之上方p個位元(例如bin(q)p)旁邊緊接位置的第一組順序行{bin(1)p,bin(2)p,bin(3)p,...,bin(2p-1)p}。另外,第一部分矩陣M(r x k)的該多個子矩陣的其他者,諸如帶有{1,2,3,...,(2p-1)}的該第二p x(2p-1)矩陣,可包含位於在第二特殊行{bin(q+1)p,a2,b2}的
(p+2)個位元中之上方p個位元(例如bin(q+1)p)旁邊緊接位置的第二組順序行{bin(1)p,bin(2)p,bin(3)p,...,bin(2p-1)p}。為簡明起見,這些實施例中之與前述實施例類似之細節在此不重複贅述。
依據某些實施例,在第一部分矩陣M(r x k)的該多個子矩陣中之任一者中,載有順序值的一組順序行是藉由解碼電路600(例如該奇偶校驗矩陣產生器諸如H產生器620)在ECC處理(例如ECC解碼)的期間依據上述方針被依序地產生,而不是在ECC處理前被預先儲存在解碼電路600中,其中用來儲存針對記憶體控制器110中之ECC處理的預先計算資訊的內部儲存空間能被節省。為簡明起見,這些實施例中之與前述實施例類似之細節在此不重複贅述。
依據某些實施例,第一特殊行{b2,a2,bin(q)p}、第二特殊行{b2,a2,bin(q+1)p}、以及該些固定列是被安排成使奇偶校驗矩陣H(r x n)的任兩列彼此相異並且使奇偶校驗矩陣H(r x n)的每一列為非零,從而能避免記憶體控制器110的故障。為簡明起見,這些實施例中之與前述實施例類似之細節在此不重複贅述。
依據某些實施例,因應一寫入請求,記憶體控制器110可利用編碼電路200依據奇偶校驗矩陣H(r x n)產生該受保護資料(例如藉由依據奇偶校驗矩陣H(r x n)對複數個訊息{m}編碼以產生對應於複數個訊息{m}的複數個校驗碼{p(m)}並且將它們組合至碼字{y}中),並且將該受保護資料寫入該預定儲存空間,其中該寫入請求是該讀取請求之前的請求。為簡明起見,這些實施例中之與前述實施例類似之細節在此不重複贅述。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
10:電子系統
50:主裝置
52:處理器
54:電源供應電路
100:記憶裝置
110:記憶體控制器
112:微處理器
112M:唯讀記憶體
112C:程式碼
114:控制邏輯電路
115:HPCS型ECC電路
116:隨機存取記憶體
118:傳輸介面電路
120:非揮發性記憶體
122-1,122-2~122-N:非揮發性記憶體元件
Claims (20)
- 一種使用藉助於具有局部順序資訊之一奇偶校驗(parity check)矩陣之資料保護的資料存取方法,該資料存取方法是可應用於(applicable to)一記憶裝置的一記憶體控制器,該記憶裝置包含該記憶體控制器以及一非揮發性記憶體(non-volatile memory,NV memory),該非揮發性記憶體包含至少一非揮發性記憶體元件,該資料存取方法包含:因應一讀取請求,利用該記憶體控制器開始自預定儲存空間接收對應於該讀取請求的受保護資料;利用該記憶體控制器中之一解碼電路產生該奇偶校驗矩陣,其中該奇偶校驗矩陣之一第一部分矩陣(part-one matrix)包含一第一特殊行(column)、一第二特殊行、以及具有分別和多個順序數值(sequential numbers)相對應的多個順序行的矩陣元素(sequential columns of matrix elements)的多個子矩陣,該第一特殊行用該第一特殊行中之一第一部分的矩陣元素(first portion of matrix elements)來載有(carry)一第一預定值,以及該第二特殊行用該第二特殊行中之一第二部分的矩陣元素(second portion of matrix elements)來載有一第二預定值,其中該第一部分矩陣的最後兩列(row)為分別載有兩組預定位元的多個固定列,以及該第一部分的矩陣元素以及該第二部分的矩陣元素是在該奇偶校驗矩陣之該第一部分矩陣的剩餘的列;利用該解碼電路依據一碼字(codeword)進行基於該奇偶校驗矩陣的癥狀(syndrome)計算以產生並輸出用於該碼字的一癥狀,其中該受保護資料包含一或多個碼字的一讀出版本,且該一或多個碼字包含該碼字;利用該解碼電路依據該癥狀進行錯誤偵測以產生並輸出一解碼結果訊號,並且依據該癥狀進行錯誤位置解碼以產生並輸出一錯誤位置; 利用該解碼電路進行該碼字的錯誤更正,以更正該碼字之於該錯誤位置的一錯誤,以修復該碼字;以及利用該記憶體控制器依據自該受保護資料取得的該一或多個碼字進行另外的處理;其中:該奇偶校驗矩陣中之每一矩陣元素指出一位元的資訊,以及針對一正整數p,該第一部分矩陣的該多個子矩陣中之一者包含於該第一特殊行的(p+2)個位元中之上方p個位元旁邊的緊接位置的(next to)一第一組順序行;以及該第一部分矩陣的該多個子矩陣中之所述一者是一第一p x(2p-1)矩陣,而該第一組順序行分別載有多個順序值{1,2,3,...,(2p-1)},其中該第一組順序行的一第一順序行的p個矩陣元素分別載有1的二進制(binary)形式的p個位元,該第一組順序行的一第二順序行的p個矩陣元素分別載有2的二進制形式的p個位元,該第一組順序行的一第三順序行的p個矩陣元素分別載有3的二進制形式的p個位元,以及該第一組順序行的一第(2p-1)順序行的p個矩陣元素分別載有(2p-1)的二進制形式的p個位元。
- 如申請專利範圍第1項所述之資料存取方法,其中該第一部分矩陣的該多個子矩陣中之另一者包含於該第一特殊行中之該第二部分的矩陣元素旁邊的緊接位置的一第二組順序行。
- 如申請專利範圍第2項所述之資料存取方法,其中該第一部分矩陣的該多個子矩陣中之又一者包含一第三組順序行。
- 如申請專利範圍第1項所述之資料存取方法,其中該第一部分矩陣的該多個子矩陣中之另一者包含於該第二特殊行的(p+2)個位元中之上方p個位元旁邊的緊接位置的一第二組順序行。
- 如申請專利範圍第4項所述之資料存取方法,其中該第一部分矩陣的該多個子矩陣中之所述另一者是一第二p x(2p-1)矩陣,而該第二組順序行分別載有多個順序值{1,2,3,...,(2p-1)}。
- 如申請專利範圍第1項所述之資料存取方法,其中該第一部分矩陣的該多個子矩陣中之每一者包含分別載有多個順序值的一組順序行;以及在該組順序行中之每一行中,一最上方矩陣元素以及一最下方矩陣元素分別代表該組順序行載有的該多個順序值中之一者的二進制(binary)形式的一最低有效位元(least significant bit,LSB)以及一最高有效位元(most significant bit,MSB)。
- 如申請專利範圍第7項所述之資料存取方法,其中該奇偶校驗矩陣之一第二部分矩陣(part-two matrix)包含於所述後續q個行旁邊的緊接位置的(p+2)個行。
- 如申請專利範圍第8項所述之資料存取方法,其中該第二部分矩陣是一單位矩陣(identity matrix)。
- 如申請專利範圍第1項所述之資料存取方法,其中該奇偶校驗矩陣之一第二部分矩陣(part-two matrix)是一單位矩陣(identity matrix)。
- 如申請專利範圍第1項所述之資料存取方法,其中於該第一部分矩陣的該多個子矩陣中之任一者,載有多個順序值的一組順序行是在錯誤更正碼(error correction code,ECC)處理的期間被依序地產生,而不是在該錯誤更正碼處理之前被預先儲存在該解碼電路中,從而節省該記憶體控制器中之用來儲存針對該錯誤更正碼處理之預先計算的資訊的內部儲存空間。
- 如申請專利範圍第1項所述之資料存取方法,其中該第一特殊行、該第二特殊行、及該多個固定列是被安排成使該奇偶校驗矩陣中之任兩行彼此相異,並且使該奇偶校驗矩陣中之每一行為非零,從而避免該記憶體控制器的故障。
- 如申請專利範圍第1項所述之資料存取方法,另包含:因應一寫入請求,利用該記憶體控制器中之一編碼電路依據該奇偶校驗矩陣 產生該受保護資料並且將該受保護資料寫入該預定儲存空間,其中該寫入請求是該讀取請求之前的請求。
- 一種記憶裝置,包含:一非揮發性記憶體(non-volatile memory,NV memory),用來儲存資訊,其中該非揮發性記憶體包含至少一非揮發性記憶體元件;以及一記憶體控制器,耦接至該非揮發性記憶體,用來控制該記憶裝置的運作,其中該記憶體控制器包含:一處理電路,用來依據來自一主裝置(host device)的複數個主裝置指令(host command)控制該記憶體控制器,以容許該主裝置透過該記憶體控制器存取該非揮發性記憶體;以及一錯誤更正碼(error correction code,ECC)電路,耦接至該處理電路,用來進行錯誤更正碼處理,其中該錯誤更正碼電路包含:一解碼電路,用來藉助於具有局部順序資訊之一奇偶校驗(parity check)矩陣進行解碼,以供在資料存取期間的資料保護;其中:因應一讀取請求,該記憶體控制器開始自預定儲存空間接收對應於該讀取請求的受保護資料;該記憶體控制器利用該解碼電路產生該奇偶校驗矩陣,其中該奇偶校驗矩陣之一第一部分矩陣(part-one matrix)包含一第一特殊行(column)、一第二特殊行、以及具有分別和多個順序數值(sequential numbers)相對應的多個順序行的矩陣元素(sequential columns of matrix elements)的多個子矩陣,該第一特殊行用該第一特殊行中之一第一部分的矩陣元素(first portion of matrix elements)來載有(carry)一第一預定值,以及該第二特殊行用該第二特殊行中之一第二部分的矩陣元素(second portion of matrix elements)來載有一第二預定值,其中該第一部分矩陣的最後兩列(row)為分別載有兩組預定位元的多個固定列,以及該第一部分的矩陣元素以及該第二部分的矩陣元素是在該奇偶校驗矩陣之該第一部分矩陣的剩餘的列;該記憶體控制器利用該解碼電路依據一碼字(codeword)進行基於該奇偶校驗矩陣的癥狀(syndrome)計算以產生並輸出用於該碼字的一癥狀,其中該受保護資料包含一或多個碼字的一讀出版本,且該一或多個碼字包含該碼字;該記憶體控制器利用該解碼電路依據該癥狀進行錯誤偵測以產生並輸出一解碼結果訊號,並且依據該癥狀進行錯誤位置解碼以產生並輸出一錯誤位置;以及該記憶體控制器利用該解碼電路進行該碼字的錯誤更正,以更正該碼字之於該錯誤位置的一錯誤,以修復該碼字,以供依據自該受保護資料取得的該一或多個碼字進行另外的處理;其中:該奇偶校驗矩陣中之每一矩陣元素指出一位元的資訊,以及針對一正整數p,該第一部分矩陣的該多個子矩陣中之一者包含於該第一特殊行的(p+2)個位元中之上方p個位元旁邊的緊接位置的(next to)一第一組順序行;以及該第一部分矩陣的該多個子矩陣中之所述一者是一第一p x(2p-1)矩陣,而該第一組順序行分別載有多個順序值{1,2,3,...,(2p-1)},其中該第一組順序行的一第一順序行的p個矩陣元 素分別載有1的二進制(binary)形式的p個位元,該第一組順序行的一第二順序行的p個矩陣元素分別載有2的二進制形式的p個位元,該第一組順序行的一第三順序行的p個矩陣元素分別載有3的二進制形式的p個位元,以及該第一組順序行的一第(2p-1)順序行的p個矩陣元素分別載有(2p-1)的二進制形式的p個位元。
- 如申請專利範圍第14項所述之記憶裝置,其中該第一部分矩陣的該多個子矩陣中之另一者包含於該第一特殊行中之該第二部分的矩陣元素旁邊的緊接位置的一第二組順序行。
- 如申請專利範圍第15項所述之記憶裝置,其中該第一部分矩陣的該多個子矩陣中之又一者包含一第三組順序行。
- 一種記憶裝置的記憶體控制器,該記憶裝置包含該記憶體控制器以及一非揮發性記憶體(non-volatile memory,NV memory),該非揮發性記憶體包含至少一非揮發性記憶體元件,該記憶體控制器包含:一處理電路,用來依據來自一主裝置(host device)的複數個主裝置指令(host command)控制該記憶體控制器,以容許該主裝置透過該記憶體控制器存取該非揮發性記憶體;以及一錯誤更正碼(error correction code,ECC)電路,耦接至該處理電路,用來進行錯誤更正碼處理,其中該錯誤更正碼電路包含:一解碼電路,用來藉助於具有局部順序資訊之一奇偶校驗(parity check)矩陣進行解碼,以供在資料存取期間的資料保護; 其中:因應一讀取請求,該記憶體控制器開始自預定儲存空間接收對應於該讀取請求的受保護資料;該記憶體控制器利用該解碼電路產生該奇偶校驗矩陣,其中該奇偶校驗矩陣之一第一部分矩陣(part-one matrix)包含一第一特殊行(column)、一第二特殊行、以及具有分別和多個順序數值(sequential numbers)相對應的多個順序行的矩陣元素(sequential columns of matrix elements)的多個子矩陣,該第一特殊行用該第一特殊行中之一第一部分的矩陣元素(first portion of matrix elements)來載有(carry)一第一預定值,以及該第二特殊行用該第二特殊行中之一第二部分的矩陣元素(second portion of matrix elements)來載有一第二預定值,其中該第一部分矩陣的最後兩列(row)為分別載有兩組預定位元的多個固定列,以及該第一部分的矩陣元素以及該第二部分的矩陣元素是在該奇偶校驗矩陣之該第一部分矩陣的剩餘的列;該記憶體控制器利用該解碼電路依據一碼字(codeword)進行基於該奇偶校驗矩陣的癥狀(syndrome)計算以產生並輸出用於該碼字的一癥狀,其中該受保護資料包含一或多個碼字的一讀出版本,且該一或多個碼字包含該碼字;該記憶體控制器利用該解碼電路依據該癥狀進行錯誤偵測以產生並輸出一解碼結果訊號,並且依據該癥狀進行錯誤位置解碼以產生並輸出一錯誤位置;以及該記憶體控制器利用該解碼電路進行該碼字的錯誤更正,以更正該碼字之於該錯誤位置的一錯誤,以修復該碼字,以供依據自該受保護資料取得的該一或多個碼字進行另外的處理; 其中:該奇偶校驗矩陣中之每一矩陣元素指出一位元的資訊,以及針對一正整數p,該第一部分矩陣的該多個子矩陣中之一者包含於該第一特殊行的(p+2)個位元中之上方p個位元旁邊的緊接位置的(next to)一第一組順序行;以及該第一部分矩陣的該多個子矩陣中之所述一者是一第一p x(2p-1)矩陣,而該第一組順序行分別載有多個順序值{1,2,3,...,(2p-1)},其中該第一組順序行的一第一順序行的p個矩陣元素分別載有1的二進制(binary)形式的p個位元,該第一組順序行的一第二順序行的p個矩陣元素分別載有2的二進制形式的p個位元,該第一組順序行的一第三順序行的p個矩陣元素分別載有3的二進制形式的p個位元,以及該第一組順序行的一第(2p-1)順序行的p個矩陣元素分別載有(2p-1)的二進制形式的p個位元。
- 如申請專利範圍第17項所述之記憶體控制器,其中該第一部分矩陣的該多個子矩陣中之另一者包含於該第一特殊行中之該第二部分的矩陣元素旁邊的緊接位置的一第二組順序行。
- 如申請專利範圍第18項所述之記憶體控制器,其中該第一部分矩陣的該多個子矩陣中之又一者包含一第三組順序行。
- 一種記憶裝置之記憶體控制器的解碼電路,該記憶裝置包含該記憶體控制器以及一非揮發性記憶體(non-volatile memory,NV memory),該記憶體控制器包含該解碼電路,該非揮發性記憶體包含至少一非揮發性記憶 體元件,該解碼電路包含:一癥狀(syndrome)計算器,用來依據一碼字(codeword)進行基於一奇偶校驗(parity check)矩陣的癥狀(syndrome)計算以產生並輸出用於該碼字的一癥狀,其中因應一讀取請求,該記憶體控制器開始自預定儲存空間接收對應於該讀取請求的受保護資料,其中該受保護資料包含一或多個碼字的一讀出版本,且該一或多個碼字包含該碼字;一奇偶校驗矩陣產生器,耦接至該癥狀計算器,用來產生該奇偶校驗矩陣,其中該奇偶校驗矩陣之一第一部分矩陣(part-one matrix)包含一第一特殊行(column)、一第二特殊行、以及具有分別和多個順序數值(sequential numbers)相對應的多個順序行的矩陣元素(sequential columns of matrix elements)的多個子矩陣,該第一特殊行用該第一特殊行中之一第一部分的矩陣元素(first portion of matrix elements)來載有(carry)一第一預定值,以及該第二特殊行用該第二特殊行中之一第二部分的矩陣元素(second portion of matrix elements)來載有一第二預定值,其中該第一部分矩陣的最後兩列(row)為分別載有兩組預定位元的多個固定列,以及該第一部分的矩陣元素以及該第二部分的矩陣元素是在該奇偶校驗矩陣之該第一部分矩陣的剩餘的列;以及一錯誤位置解碼器,耦接至該癥狀計算器,用來依據該癥狀進行錯誤偵測以產生並輸出一解碼結果訊號,並且依據該癥狀進行錯誤位置解碼以產生並輸出一錯誤位置;其中該解碼電路進行該碼字的錯誤更正,以更正該碼字之於該錯誤位置的一錯誤,以修復該碼字,以容許該記憶體控制器依據自該受保護資料取得的該一或多個碼字進行另外的處理;其中: 該奇偶校驗矩陣中之每一矩陣元素指出一位元的資訊,以及針對一正整數p,該第一部分矩陣的該多個子矩陣中之一者包含於該第一特殊行的(p+2)個位元中之上方p個位元旁邊的緊接位置的(next to)一第一組順序行;以及該第一部分矩陣的該多個子矩陣中之所述一者是一第一p x(2p-1)矩陣,而該第一組順序行分別載有多個順序值{1,2,3,...,(2p-1)},其中該第一組順序行的一第一順序行的p個矩陣元素分別載有1的二進制(binary)形式的p個位元,該第一組順序行的一第二順序行的p個矩陣元素分別載有2的二進制形式的p個位元,該第一組順序行的一第三順序行的p個矩陣元素分別載有3的二進制形式的p個位元,以及該第一組順序行的一第(2p-1)順序行的p個矩陣元素分別載有(2p-1)的二進制形式的p個位元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/732,354 | 2020-01-02 | ||
US16/732,354 US10944429B1 (en) | 2020-01-02 | 2020-01-02 | Data accessing method using data protection with aid of parity check matrix having partial sequential information, and associated apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202127462A TW202127462A (zh) | 2021-07-16 |
TWI768511B true TWI768511B (zh) | 2022-06-21 |
Family
ID=74851556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109136091A TWI768511B (zh) | 2020-01-02 | 2020-10-19 | 使用藉助於具有局部順序資訊之奇偶校驗矩陣之資料保護的資料存取方法以及設備 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10944429B1 (zh) |
CN (1) | CN113064547B (zh) |
TW (1) | TWI768511B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111090540B (zh) * | 2019-06-24 | 2022-06-14 | 华为技术有限公司 | 基于纠删码的数据处理方法与装置 |
US11569844B2 (en) * | 2020-06-24 | 2023-01-31 | Western Digital Technologies, Inc. | Optimizations for variable sector size in storage device namespaces |
CN114297110B (zh) * | 2021-12-28 | 2024-05-14 | 上海集成电路装备材料产业创新中心有限公司 | Mipi信号解码方法、装置及其芯片 |
US11934263B2 (en) * | 2022-03-29 | 2024-03-19 | Ampere Computing Llc | Parity protected memory blocks merged with error correction code (ECC) protected blocks in a codeword for increased memory utilization |
US20240120947A1 (en) * | 2022-10-07 | 2024-04-11 | Micron Technology, Inc. | Error detection and classification at a host device |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130031440A1 (en) * | 2011-07-29 | 2013-01-31 | Sandisk Technologies Inc. | Checksum using sums of permutation sub-matrices |
US20140164875A1 (en) * | 2012-12-11 | 2014-06-12 | Samsung Electronics Co., Ltd. | Memory controller and method of operating the same |
US20170250714A1 (en) * | 2016-02-26 | 2017-08-31 | SK Hynix Inc. | Error correction circuit and error correction method |
US10193574B1 (en) * | 2016-05-19 | 2019-01-29 | Apple Inc. | Efficient syndrome calculation in processing a GLDPC code |
US20190341935A1 (en) * | 2018-05-04 | 2019-11-07 | SK Hynix Inc. | Circuit for transforming parity-check matrix of qc-ldpc code, error correction circuit having the same, and method of operating the same |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5757823A (en) * | 1995-10-03 | 1998-05-26 | International Business Machines Corporation | Error detection and correction for four-bit-per-chip memory system |
US7028248B2 (en) * | 2001-02-28 | 2006-04-11 | International Business Machines Corporation | Multi-cycle symbol level error correction and memory system |
US7093183B2 (en) * | 2001-02-28 | 2006-08-15 | International Business Machines Corporation | Symbol level error correction codes which protect against memory chip and bus line failures |
CN100448170C (zh) * | 2002-07-02 | 2008-12-31 | 三菱电机株式会社 | 检查矩阵生成方法及检查矩阵生成装置 |
KR101073907B1 (ko) * | 2004-07-27 | 2011-10-17 | 엘지전자 주식회사 | Ldpc 코드를 이용한 부호화 방법 및 부호화를 위한컴퓨터로 읽을 수 있는 기록 매체 |
DE102005022107B9 (de) * | 2005-05-12 | 2016-04-07 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge |
CN100546205C (zh) * | 2006-04-29 | 2009-09-30 | 北京泰美世纪科技有限公司 | 构造低密度奇偶校验码的方法、译码方法及其传输系统 |
US9450613B2 (en) * | 2010-11-10 | 2016-09-20 | Infineon Technologies Ag | Apparatus and method for error correction and error detection |
CN105703783B (zh) * | 2016-03-30 | 2019-10-18 | 成都凯腾四方数字广播电视设备有限公司 | 一种准并行结构的ldpc编码器 |
TWI602188B (zh) * | 2017-01-03 | 2017-10-11 | 慧榮科技股份有限公司 | 用來於記憶裝置中進行資料管理之方法以及記憶裝置及其控制器 |
CN108400832B (zh) * | 2017-02-06 | 2022-09-09 | 华为技术有限公司 | 数据处理方法和通信设备 |
US10853163B2 (en) * | 2017-04-28 | 2020-12-01 | Qualcomm Incorporated | Optimized error-correcting code (ECC) for data protection |
KR102579014B1 (ko) * | 2018-11-06 | 2023-09-15 | 삼성전자주식회사 | 에러 정정 코드 디코더, 반도체 메모리 장치 및 메모리 시스템 |
KR102643457B1 (ko) * | 2018-11-19 | 2024-03-06 | 에스케이하이닉스 주식회사 | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 |
KR20200074467A (ko) * | 2018-12-17 | 2020-06-25 | 삼성전자주식회사 | 에러 정정 코드 회로, 반도체 메모리 장치 및 메모리 시스템 |
KR20200114151A (ko) * | 2019-03-27 | 2020-10-07 | 에스케이하이닉스 주식회사 | 오류 정정 디코더 |
KR20200122064A (ko) * | 2019-04-17 | 2020-10-27 | 에스케이하이닉스 주식회사 | 오류 정정 회로 및 이를 포함하는 메모리 컨트롤러 |
-
2020
- 2020-01-02 US US16/732,354 patent/US10944429B1/en active Active
- 2020-10-19 TW TW109136091A patent/TWI768511B/zh active
- 2020-11-30 CN CN202011375928.XA patent/CN113064547B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130031440A1 (en) * | 2011-07-29 | 2013-01-31 | Sandisk Technologies Inc. | Checksum using sums of permutation sub-matrices |
US20140164875A1 (en) * | 2012-12-11 | 2014-06-12 | Samsung Electronics Co., Ltd. | Memory controller and method of operating the same |
US20170250714A1 (en) * | 2016-02-26 | 2017-08-31 | SK Hynix Inc. | Error correction circuit and error correction method |
US10193574B1 (en) * | 2016-05-19 | 2019-01-29 | Apple Inc. | Efficient syndrome calculation in processing a GLDPC code |
US20190341935A1 (en) * | 2018-05-04 | 2019-11-07 | SK Hynix Inc. | Circuit for transforming parity-check matrix of qc-ldpc code, error correction circuit having the same, and method of operating the same |
Also Published As
Publication number | Publication date |
---|---|
TW202127462A (zh) | 2021-07-16 |
US10944429B1 (en) | 2021-03-09 |
CN113064547A (zh) | 2021-07-02 |
CN113064547B (zh) | 2024-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI768511B (zh) | 使用藉助於具有局部順序資訊之奇偶校驗矩陣之資料保護的資料存取方法以及設備 | |
US10901837B2 (en) | Error correction code (ECC) operations in memory | |
KR102179228B1 (ko) | 메모리에서의 티어드 오류 정정 코드(ecc) 동작 | |
KR100845529B1 (ko) | 플래시 메모리 장치의 이씨씨 제어기 및 그것을 포함한메모리 시스템 | |
CN116266473A (zh) | 存储器装置交叉矩阵奇偶校验 | |
US11714558B2 (en) | Predictive memory management | |
TWI751096B (zh) | 使用藉助於先算資訊輪換的資料保護的非揮發性記憶體寫入方法和設備 | |
CN109426582B (zh) | 用于存储装置为错误处置进行数据处理的方法及控制器 | |
TWI682399B (zh) | 操作記憶體之方法及用於錯誤率降低之設備 | |
CN111869111A (zh) | 生成和使用可逆的缩短博斯-查德胡里-霍昆格姆码字 | |
TW201926043A (zh) | 用來於一記憶裝置中進行存取控制之方法以及記憶裝置及其控制器 | |
US10084487B2 (en) | Apparatuses and methods for erasure-assisted ECC decoding | |
US20190294497A1 (en) | Method of implementing error correction code used by memory storage apparatus and memory storage apparatus using the same | |
US11169878B2 (en) | Non-volatile memory accessing method using data protection with aid of look-ahead processing, and associated apparatus |