TWI500038B - 記憶體系統之全套平行編碼方法與全套平行解碼方法 - Google Patents
記憶體系統之全套平行編碼方法與全套平行解碼方法 Download PDFInfo
- Publication number
- TWI500038B TWI500038B TW101135990A TW101135990A TWI500038B TW I500038 B TWI500038 B TW I500038B TW 101135990 A TW101135990 A TW 101135990A TW 101135990 A TW101135990 A TW 101135990A TW I500038 B TWI500038 B TW I500038B
- Authority
- TW
- Taiwan
- Prior art keywords
- matrix
- memory system
- polynomial
- encoder
- error
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- 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/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- 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/1525—Determination and particular use of error location polynomials
-
- 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/1545—Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
-
- 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/611—Specific encoding aspects, e.g. encoding by means of decoding
-
- 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/617—Polynomial operations, e.g. operations related to generator polynomials or parity-check polynomials
-
- 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/65—Purpose and implementation aspects
- H03M13/6561—Parallelized implementations
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Error Detection And Correction (AREA)
Description
本發明是有關於一種記憶體,且特別是有關於一種記憶體之編解碼器。
由於近年消費性電子等應用對於反或閘型(NOR)快閃記憶體性能之需求逐漸提昇與製程微縮對NOR快閃記憶體可靠度造成的嚴苛挑戰,傳統可更正單一位元之錯誤更正碼逐漸不敷使用。NOR快閃記憶體之主要功能在於儲存系統的控制程式,其應用的涵蓋領域除PC產品外,在廣大的消費性電子產品市場中更是處處充斥著它的身影,例如:數位相機、DVD錄放影機,MP3音樂播放機、印表機、機上盒(DVB-S,-T)及車用電子等,不勝枚舉。
NOR快閃記憶體的特點在於晶片內執行(eXecute In Place;XIP),這使應用程序可以直接在快閃記憶體內運行而不必把代碼讀到系統隨機存取記憶體(Random Access Memory;RAM)中,因此NOR快閃記憶體的傳輸效率很高,不需要冗長的開機等待時間。
早期NOR快閃記憶體儲存量較小、寫入速度慢,但因隨機存取速度快,主要鎖定在手機及數位相機(Digital Still Camera;DSC)、手持式錄放影機(DV)等消費性電子產品的嵌入式記憶體應用。近年來車用電子、消費性電子、家用遊戲主機(如:任天堂Wii、XBOX、Play Station 3等)、智慧電錶等需求當道,NOR快閃記憶體在科技產業中所扮
演的角色越來越重要,特別是應用於車用市場如數位儀表板、衛星導航系統、車載娛樂系統、數位電視、機上盒等。
記憶體元件的位元錯誤率(Bit Error Rate;BER)預估在45奈米製程下將大於10-6
,但如果要將NOR快閃記憶體應用在產品上,其位元錯誤率則必須要小於10-12
才能提供足夠的可靠度。所以必須要應用錯誤更正碼(Error Correcting Codes;ECC)使快閃記憶體元件符合產品所需的可靠度水準。以往單位元錯誤更正碼(Single-Error-Correcting Code;SEC),例如漢明碼(Hamming code),可以偵測並更正一位元錯誤。
然而,隨著奈米製程的進步發展,漢明碼的錯誤更正能力已經不敷使用,漢明碼的編解碼速度、電路複雜度都已經無法符合現代的需要;即便捨棄漢明碼改採可更正兩位元錯誤的Bose-Chaudhuri-Hochquenghem(BCH)碼,其電路結構仍然過於複雜,解碼速度也依然趕不上現今電子裝置的需求。
因此需要一種新的全套平行編解碼方法,能夠加快編解碼速度,同時降低電路的複雜度。
因此,本發明一方面提供一種記憶體系統之全套平行編碼方法,能夠加快編解碼速度,同時減少所需要的硬體電路,降低電路複雜度。
依據本發明一實施例,記憶體系統之全套平行編碼方法先將全套平行編碼方法採用之生成多項式分解為複數個
最小多項式,求取最小多項式之複數個根;然後依據最小多項式之根,取得複數個方程式,並依據方程式,產生一第一編碼矩陣;接著則對第一編碼矩陣進行分解,以取得一第二編碼矩陣,其中第二編碼矩陣為一解碼器之一校驗矩陣之一部分矩陣;之後再依據第二編碼矩陣進行編碼運算。
本發明之另一方面提供一種記憶體系統之全套平行解碼方法,相較於傳統方法,能夠以使用較小面積之電路達到相同的錯誤更正能力。
依據本發明另一實施例,記憶體系統之全套平行解碼方法先依據一校驗矩陣,計算得出複數個徵兆值,其中此校驗矩陣與一編碼器之一第二編碼矩陣具有部分共同元素;再依據這些徵兆值,解出一錯誤位置多項式,並將複數個基本元素帶入此錯誤位置多項式,當一碼字(Codeword)發生錯誤,則取得此錯誤位置多項式之根,進而得到相對應的錯誤位置。
本發明之又一態樣提供一種記憶體系統,能夠在維持相同的更正能力之下,加快編解碼速度,同時降低電路的面積。
根據本發明之又一實施例,記憶體系統含有一編碼器、一記憶體元件、一寫入電路、一讀取電路,以及一解碼器。編碼器利用一第二編碼矩陣對一輸入資料進行編碼,以產生至少一組碼字,此碼字(Codeword)內含校驗碼(Parity bits);記憶體元件依據碼字以及校驗碼,進行存儲運作;寫入電路電性連接編碼器,以將碼字以及校驗碼傳
送至記憶體元件;讀取電路自記憶體元件讀出資料;解碼器利用一校驗矩陣解碼自記憶體讀出資料,其中,第二編碼矩陣為校驗矩陣之一部分矩陣。
以上實施例的記憶體系統以及其全套平行(Fully-Parallel)編解碼方法,採用了全套平行式的設計以提升編碼速度,降低解碼延遲,因此具備高速編解碼能力,能夠加速記憶體的讀寫速度;另一方面,利用改良的演算法,將編碼和解碼的硬體做有效率的共用,省去編碼部分的硬體,減少解碼的最長延遲路徑,降低記憶體系統整體面積,有效減少硬體花費。
隨著記憶體技術的進步以及普羅大眾對於視聽娛樂的需求,電視機上盒(Set Top Box;STB)中的電子節目指南(Electronic Programming Guides;EPG)對於NOR快閃記憶體之要求也逐漸攀升。因為EPG的功能越來越多元化與複雜化,如果EPG內容存於動態隨機存取記憶體(Dynamic Random Access Memory;DRAM)等揮發性記憶體中,當發生電力中斷時,需花費數小時才能完全恢復,若存在NOR快閃記憶體則不同,其非揮發性之特性可使內容完整保存不受電力存在與否影響,因此EPG的內容需要藉由高密度NOR快閃記憶體來儲存。
目前許多汽車製造商在新一代電子儀表板和資訊娛樂系統也將採用高效能記憶體來減少開機時間,NOR快閃記憶體晶片正符合此需求。它能夠提供快速的開機時間和及
時回饋並具備高度可靠性,這些都是汽車製造商為保護駕駛人而打造安全駕駛環境所需要之不可或缺要素,並且內建於汽車和消費性電子產品內的語音辨識系統等都需要大量相關技術的記憶體作為後盾,其目標都在於必須快速且準確地處理相關指令以縮短搜尋及反應時間和使語音搜尋的準確度提升。而這些高達256Mb、512Mb甚至1Gb的高容量NOR快閃記憶體晶片在這些領域上顯得格外重要。
在引進雙位元錯誤更正碼(Double-Error-Correcting code;DEC),例如Bose-Chaudhuri-Hocquenghem(BCH)碼後,位元錯誤率降低至大約10-13
。由此可見,引進DEC BCH碼的NOR快閃記憶體能達到應用於產品上的可靠度要求。
在碼字長度及更正能力皆相同的條件之下,本發明的一實施例針對全套平行架構的BCH編解碼器,化簡硬體複雜度。此外,本發明的一實施例採用新定義的錯誤位置多項式(Error Locator Polynomial),相對於Peterson’s algorithm推導出來的錯誤位置多項式有更短的解碼時間。相較於傳統的解碼器,本發明一實施例當中的編解碼器在面積及成本上有非常大的優勢。
在有限場GF
(2 m
)下,每個元素都可以表示成λ
=λ 0
+λ 1 α
+…+λ m
-1 α m
-1
,其中,α
是GF
(2 m
)下的基本元素(Primitive Element),而λ i
是二位元座標,{α 0
,α 1
,…,α m
-1
}可視為m個座標軸。因此,當λ
與一個已知常數相乘時可以表示成
其中,α p
的第l
個座標以二位元的元素來表示,而矩陣 C j
則被稱為是一個被乘數是α j
的常數乘法器。
在有限場GF
(2 m
)下,每個元素λ
都可以使用多項式來表示。此多項式的係數是二位元,所以計算任意一個元素的平方可以表示成
其中,平方器就是依據矩陣Q來實現。由平方器的性質,可以延伸討論出在有限場GF
(2 m
)下,任意一個多項式f
(x
),只要其係數皆為二位元,便有f
(x 2
)=f 2
(x
)的性質。
傳統上,立方器101是由一個平方器103和一個乘法器105組成,如第1圖所示。這種架構的最長延遲路徑(critical path)是(log2 m
+log2
(2m
-2)+1).τ XOR
+τ AND
。而τ XOR
及τ AND
分別是
XOR閘和AND閘的延遲時間。為了加速立方器101的處理時間,將任意一個GF
(2 m
)的元素的三次方,λ 3
,以下面的方式展開:
依據上面的矩陣來實現立方器,可以使得最長延遲路徑降至(log2
(3m
-3)+1).τ XOR
+τ AND
。以m
=9為例,本發明一實施例的立方器101可以減少三個XOR閘的延遲時間,本發明一實施例的有限場的立方器示意圖則繪示於第1圖當中。
本發明一實施例之編碼器與解碼器係應用於Bose-Chaudhuri-Hocquenghem(BCH)碼,編碼器係採用全套平行架構,編碼器與解碼器的徵兆值計算器可以共享一套硬體資源,此編碼器使用系統化編碼的方式(Systematic Encoding),u
(x
)x n-k
=q
(x
)g
(x
)+p
(x
),其中,u
(x
)是訊息多項式(Message Polynomial),p
(x
)是校驗多項式(Parity Check Polynomial),而生成多項式(Generator polynomial),g
(x
),可以表示成g
(x
)=LCM
{M 1
(x
),M 2
(x
),…,M 2t
(x
)}=M 1
(x
)×M 3
(x
)×…×M 2t
-1
(x
)=g n-k x n-k
+…+g 2 x 2
+g 1 x
+g 0
其中,M i
(x
)是第i最小多項式(i-th minimal polynomial),從定義上,可以得知α i
及其共軛根是第i最小多項式的根。所以將生成多項式的n-k
個根代入系統化的編碼等式,可以得到n-k
個方程式,P
(x
)=u
(x
)x n-k
|x
=α i 及其共軛根
,其中,i
=1,3,...2t-1
。將這n-k
個方程式用矩陣的方式表示,
其中,l i
定義為α i
共軛根的個數。為了撰寫上的方便,將上面矩陣的方程式改寫成BP=AH EN U
。
因為目的是要讓編碼器可以和徵兆值計算器共享一套硬體,也就是必須找出一種編碼方法,可以讓編碼矩陣與校驗矩陣有共通性。根據定義,g
(x
)=M 1
(x
)×M 3
(x
)×…×M 2t
-1
(x
),可以先根據最小多項式將生成多項式的根分成t個部分,接著利用本章節的第一部分所提到的平方器觀念,
將矩陣H EN
作分解,,其中,Q EN
和分別是
從上面的式子,可以很輕易地發現矩陣是校驗矩陣的部分矩陣(Sub-Matrix),所以在用硬體實現編碼器時,這部分就不需要額外的硬體資源,只需要借用解碼器中的徵兆值計算器即可。
因此,BP=AH EN U
可以改寫成,又因為矩陣B是非奇異性(Non-Singular)的矩陣,會存在有反矩陣,所以校驗位元便可以從得到。其中,矩陣E定義為B -1 AQ EN
的矩陣相乘。值得一提的是當決定訊息長度(Message Length)和錯誤更正能力(Error Correcting Capability)後,矩陣E與矩陣便可以從C/C++或是Matlab等電腦程式事先計算求得,不需要為此再付出額外的硬體資源去做運算。
矩陣的運算就是一連串的相乘與相加。從本章節的第一部分所提到的常數乘法器觀念,當乘上矩陣E每一個元素時,相當於是乘上一個m
×m
的常數乘法矩陣後得到一個GF
(2 m
)下m-bit的元素。接著在與相對應的相乘結果相加後得到校驗位元。但校驗位元是一個位元的,所以可以把矩陣E的常數乘法矩陣簡化為
其中,是一個存在於矩陣E中,被乘數是α j
的常數乘法器。
原來的編碼矩陣拆解成兩個矩陣。其中一個是可以與徵兆值計算器共用硬體資源的。固有的徵兆值計算器,只需要在額外多一點點硬體便可以完成編碼。下面的表一呈現的是估計的XOR gate數目,並與傳統架構作比較,其中n代表碼字(Codeword)長度,k代表訊息(Message)長度,t代表錯誤更正能力,mt則為編碼矩陣當中的參數。表二是使用UMC 90nm 1P9M CMOS製程,編碼器與徵兆值計算器共用硬體資源後與傳統架構的實驗數據與比較結果。由表上數據可以發現,本發明一實施例提出之硬體架構應用在訊息位元為256位元或512位元;更錯能力為2位元或3位元的情況下,皆可以比傳統作法省下至少40%之硬體複雜度。這代表本發明一實施例提出的硬體架構,除了能夠滿足目前世代之NOR快閃記憶體對於可靠度與硬體複雜度的需求之外,在未來即使可更正2位元之錯誤更正碼逐漸不敷使用,而需要可更正3位元或3位元以上之錯誤更正碼的時候,本發明一實施例的方法依然是一個具有優勢的低複雜度硬體架構。
表一
上表一係以矩陣大小去估計硬體所需要的XOR閘數,ρ avg
是矩陣內"1"的密度,其中ρ Savg
是與徵兆值計算相關的矩陣平均密度,ρ Eavg
則是與編碼相關的矩陣平均密度,上表二則顯示編碼器與徵兆值計算器邏輯閘數(Gate count)比較表。以矩陣化簡的低複雜度BCH解碼器,計算
徵兆值S 1
,S 2
,…,S 2t
是BCH解碼器的第一個步驟。因為偶數項徵兆值是奇數項徵兆值的線性組合,所以只需計算t個徵兆值S 1
,S 3
,…,S 2t
-1
。以更正能力為2(Double Error Correcting)的BCH解碼器為例,其徵兆值計算如下:
一旦得當徵兆值S 1
,S 3
,採用Reversed Error Locator Polynomial來進行後續處理。因為它相對於Peterson's algorithm推導出的錯誤位置多項式有較短的解碼時間。可以得到經過簡化、更正能力為2的BCH錯誤位置多項式為:σ(x)=S1
X2
+S1 2
x+(S1 3
+S3
)=σ(1)
(x)+(S1 3
+S3
)
當錯誤位置多項式決定後,利用Chien search的方法,將α 0
,α 1
,…,α n
-1
代入錯誤位置多項式去判斷是否為其根。如果α i
是錯誤位置多項的根表示第i個位置是有錯的。從上面的式子可以看出,當在計算Chien search時,S 1 x 2
+S 1 2 x
是造成硬體複雜度高的主因。因此針對S 1 x 2
+S 1 2 x
的計算提出了兩個方法去減少複雜度。
因為S 1
是一個GF
(2 m
)下的元素,如果假設S 1
是α j
,S 1 x 2
+S 1 2 x
可以改寫成α j x 2
+α 2j x
。接著,利用常數乘法器及平方器的概念將α j x 2
+α 2j x
作以下的推導:
錯誤位置多項式可以表示成σ
(x
)=σ (1)
(x
)+S 1 3
+S 3
。當m被決定後,可以透過軟體事先運算,例如C/C++或是Matlab,來找到矩陣T 0
,T 1
,…T m
-1
,此外因為矩陣T 0
,T 1
,…T m
-1
的維度與常數乘法器一樣。因此在做硬體估計時,將它們視為一個常數
乘法器。所以傳統計算σ (1)
(x
)時,需要2n個常數乘法器降到n+m個,其中,n是碼字的長度,有n個位元,m是GF參數GF(2m
),一般來說m≧log2
n。
第2圖則繪示本發明此一實施例採用常數乘法器以及平方器的解碼器硬體架構示意圖。在此第2圖當中,徵兆值計算器201依據解碼器所接收到的碼字r0
、r1...
rn-1
,計算出徵兆值S1
、S3
,立方器203與加法器207對徵兆值S1
、S3
進行運算,以得到S3
+S1 3
。接著,電路205、乘法器209以及加法器207對徵兆值S1
以及矩陣T0、
T1...
Tm-1
進行運算,得到輸出Output[0]、Output[1]...Output[n-1],再據以得到錯誤位置多項式σ
(x)。
這個方法的主要概念是產生n個m×m矩陣來取代本來作Chien search所需要的2n個常數乘法器。當矩陣的輸入都相同時,可以在對錯誤位置多項式在做更進一步的最佳化。一樣先假設S 1
是α j
,當Chien search時,α i
被代入σ
(x
),可以寫成σ
(α i
)=σ (1)
(α i
)+S 1 3
+S 3
。首先先考慮σ (1)
(α i
):
其中,L i
可以透過軟體事前運算求得,例如C/C++或是Matlab得到。
第3圖係繪示本發明一實施例採用n個m×m矩陣解碼器的硬體架構示意圖。徵兆值計算器301依據解碼器所接收到的碼字r0
、r1...
rn-1
,計算出徵兆值S1
、S3
,立方器303與加法器307對徵兆值S1
、S3
進行運算,以得到S3
+S1 3
。接著,乘法器309以及加法器307對徵兆值S1
以及矩陣L0
、L1
...Ln-1
進行運算,得到錯誤位置多項式σ
(x)。
表三
表三則是整個(274,256;2)BCH編解碼器與先前技術的比較結果,其中先前技術指的是X.Wang,D.Wu,C.Hu,L.Pan,and R.Zhou,“Embedded high-speed BCH decoder for new-generation NOR flash memories,”in IEEE Custom Integrated Circuits Conference,pp.195-198,Sep.2009。
由表列數據可見,本發明一實施例除了具有解碼時間較短的優點之外,其所需的硬體複雜度亦明顯低於先前技術。由此可見本發明一實施例提出之方法與國際研討會上之相關研究成果相比亦毫不遜色,也顯示本發明一實施例提出之方法是具備雄厚競爭力且非常適合用於實際產品的架構。
以下的實施例依序介紹編碼器、解碼器,以及記憶體
系統,編碼器以及解碼器採用全套平行(Fully-Parallel)架構,以提升編碼速度,降低解碼延遲,達到應用上的需求。
請參照第4圖,其係繪示本發明一實施例記憶體系統之全套平行編碼方法流程圖。此一實施例當中的編碼方式是利用根,建立編碼矩陣後再拆解。
記憶體系統之全套平行編碼方法,首先將編碼方法採用之生成多項式分解為數個最小多項式(步驟401),也就是g(x)=LCM{M 1 (x),M 2 (x),...,M 2t (x)}
,其中,g((x)為生成多項式,M 1 (x)、M 2 (x)...M 2t (x)
則為最小多項式;然後求取這些最小多項式之數個根(步驟403),也就是α i
與其共軛根,並依據這些最小多項式的根,取得數個方程式(步驟405),也就是p(x)=u(x)xn-k
|x=α i
與其共軛根。
接著,依據這些方程式,產生第一編碼矩陣H EN
(步驟407),也就是將這些方程式用矩陣的方式表示,BP=AH EN U
,第一編碼矩陣HEN
為:
然後再對第一編碼矩陣HEN
進行分解(步驟409),也就是使,以取得第二編碼矩陣,其中第二編碼矩陣,第二編碼矩陣係由電腦系統執行電腦軟體求得,例如C/C++,或是Matlab。
如前所述,第二編碼矩陣為一解碼器之校驗矩陣之部分矩陣,這個校驗矩陣等於:
最後再根據第二編碼矩陣進行編碼運算(步驟411),記憶體所需要的校驗位元P可依據第二編碼矩陣以及非奇異矩陣B求得,也就是
請參照第5圖,其係繪示本發明一實施例記憶體系統之全套平行解碼方法流程圖。在此一實施例的解碼方法當中,定義了一個新的錯誤位置方程式,並利用平方器整理方程式。
記憶體系統之全套平行解碼方法先依據校驗矩陣,計算得出數個徵兆值(步驟501),其中校驗矩陣與編碼器之第二編碼矩陣具有部分共同元素,校驗矩陣與第二編碼矩陣如第4圖的實施例所記載。
接著依據徵兆值,解出一錯誤位置多項式(步驟503),此錯誤位置多項式σ(x)=S1
x2
+S1 2
x+S1 3
+S3
,其中,σ(x)為錯誤位置多項式,T0
、T1
、Tm-1
為矩陣,S1
、S3
為徵兆值;矩陣T0
、T1
可由一電腦系統執行一電腦軟體求得,例如C/C++或是Matlab。
然後將數個基本元素α 0
、α 1
...α n-1
帶入錯誤位置多項式(步驟505),當碼字(Codeword)發生錯誤,則取得此錯誤位置多項式之根,(步驟507),再根據錯誤位置多項式之根,找出錯誤位置(步驟509),其中,如果α i
是錯誤位置多項式的根,表示第i個位置是有錯的。
請參見第6圖,其係繪示本發明一實施例記憶體系統之方塊圖。記憶體系統600主要含有編碼器601、寫入電路603、記憶體元件605、讀取電路607,以及解碼器609。編碼器601利用前述第二編碼矩陣對輸入資料進行編碼,以產生至少一組碼字(Codeword)c(x),此碼字內含校驗碼(Parity Bits)。寫入電路603電性連接編碼器601,以將碼字傳送至記憶體元件605。記憶體元件605依據碼字進行存儲運作,此記憶體元件605為反或閘型快閃記憶體。
讀取電路607自記憶體元件605讀出資料。解碼器609則利用校驗矩陣解碼自記憶體元件605所讀出之資料,此解碼器609含有徵兆值計算器(Syndrome Calculator)609a、方程式解出器(Key Equation Solver)609b,以及錯誤位置搜尋器(Chien Search)609c。徵兆值計算器609a用來計算數個徵兆值。方程式解出器609b電性連接徵兆值計算器609a,以解出錯誤位置多項式。錯誤位置搜尋器609c電性連接方程式解出器609b,以根據錯誤位置多項式找出出錯的位置,在此一實施例當中,徵兆值計算器與編碼器為全套平行架構。
在記憶體系統600當中,解碼器609與編碼器601為組合電路,兩者分別佔用一個時脈週期的運算時間。編碼
器601所利用的第二編碼矩陣為解碼器609採用的校驗矩陣之一部分矩陣,由於兩者用來運算的矩陣具有共同元素,再加上解碼器609與編碼器601不會同時被驅動,而是在不同的時段獨自運作,因而編碼器601與解碼器609可以共用相應於此共同矩陣的電路,不會產生衝突,這樣一來,就減少了所需要的硬體電路。
以上實施例的記憶體系統及其全套平行編解碼方法,採用全平行化的架構,能在極短的時間內完成編碼或解碼之運算;由於編碼器、解碼器兩者所採用的矩陣具有共同元素,編解碼器的硬體資源得以高度共用,再加上新定義的錯誤位置多項式之應用,能夠使得運算之矩陣維度減少,降低所需之硬體複雜度,加快運算速度。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何在本發明所屬技術領域當中具有通常知識者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
101‧‧‧有限場立方器
103‧‧‧有限場平方器
105‧‧‧有限場乘法器
201‧‧‧徵兆值計算器
203‧‧‧立方器
205‧‧‧候選者產生器
207‧‧‧加法器
209‧‧‧乘法器
301‧‧‧徵兆值計算器
303‧‧‧立方器
307‧‧‧加法器
309‧‧‧乘法器
401~411‧‧‧步驟
501~509‧‧‧步驟
600‧‧‧記憶體系統
601‧‧‧編碼器
603‧‧‧寫入電路
605‧‧‧記憶體元件
607‧‧‧讀取電路
609‧‧‧解碼器
609a‧‧‧徵兆值計算器
609b‧‧‧方程式解出器
609c‧‧‧錯誤位置搜尋器
為讓本發明之上述和其他目的、特徵、優點與實施例能更明顯易懂,所附圖式之說明如下:
第1圖係繪示本發明一實施例的有限場的立方器示意圖。
第2圖係繪示本發明一實施例採用常數乘法器以及平方器的解碼器硬體架構示意圖。
第3圖係繪示本發明一實施例採用n個m×m矩陣解碼器的硬體架構示意圖。
第4圖係繪示本發明一實施例記憶體系統之全套平行編碼方法流程圖。
第5圖係繪示本發明一實施例記憶體系統之全套平行解碼方法流程圖。
第6圖係繪示本發明一實施例記憶體系統之方塊圖。
401~411‧‧‧步驟
Claims (15)
- 一種記憶體系統之全套平行編碼方法,該記憶體系統包含一記憶體元件、一寫入電路、具有一全套平行架構之一編碼器以及一解碼器,該全套平行編碼方法包含:在具有該全套平行架構之該編碼器中,將編碼方法採用之一生成多項式分解為複數個最小多項式;求取該些最小多項式之複數個根;以及依據該些根產生一編碼矩陣;分解該編碼矩陣為複數個分解矩陣,其中該等分解矩陣其中之一為一校驗矩陣之一部分矩陣,該校驗矩陣對應於該解碼器之一徵兆值計算器之一硬體電路,該等分解矩陣其中之一對應於該硬體電路之一部分;由具有該全套平行架構之該編碼器該利用該硬體電路之該部分,對一組碼字(codeword)進行編碼;以及透過該寫入電路傳送該組碼字至該記憶體元件。
- 如請求項1所述之記憶體系統之全套平行編碼方 法,其中該編碼矩陣HEN 為, 該編碼矩陣HEN 第二欄(Column)中,各個元素為該最小多項式的根,t、k為正整數,且k代表訊息長度,t 代表錯誤更正能力。
- 如請求項1所述之記憶體系統之全套平行編碼方法,其中該些分解矩陣可為該解碼器之該校驗矩陣之該部分矩陣。
- 如請求項3所述之記憶體系統之全套平行編碼方法,其中該校驗矩陣之該部分矩陣H EN 為。
- 一種記憶體系統之全套平行解碼方法,該記憶體系統包含一記憶體元件、一讀取電路、一編碼器以及具有一全套平行架構之一解碼器,該全套平行解碼方法包含:(a)透過該讀取電路自該記憶體元件讀取一資料;(b)依據一校驗矩陣以及該資料,計算得出複數個徵兆值,其中該編碼器所用之一分解矩陣為該校驗矩陣之一部分矩陣,該校驗矩陣對應於該解碼器之一徵兆值計算器之一硬體電路,該分解矩陣對應於該硬體電路之一部分,其中該資料由該編碼器利用該硬體電路之該部分進行編碼;(c)依據該些徵兆值,解出一錯誤位置多項式;(d)將複數個基本元素代入該錯誤位置多項式,以取得該錯誤位置多項式之根;以及(e)根據該錯誤位置多項式之該些根找出錯誤位置。
- 如請求項5所述之記憶體系統之全套平行解碼方法,其中在步驟(d)當中,減少該錯誤位置多項式需要運算的冪次。
- 如請求項6所述之記憶體系統之全套平行解碼方法,其中減少該錯誤位置多項式需要運算的冪次步驟包含:利用一平方器之矩陣運算,將該錯誤位置多項式之奇數冪次和偶數冪次合併運算。
- 一種記憶體系統,包含:一編碼器,以利用一編碼矩陣對一輸入資料進行編碼,產生一組碼字;一記憶體元件,以依據該碼字進行存儲運作;一寫入電路,電性連接該編碼器,以將該碼字傳送至該記憶體元件;一讀取電路,以自該記憶體元件讀出資料:以及一解碼器,以利用一校驗矩陣,解碼自該記憶體元件所讀出資料;其中該編碼矩陣為複數分解矩陣之乘積,且該等分解矩陣其中之一為該校驗矩陣之一部分矩陣。
- 如請求項8所述之記憶體系統,其中該編碼器將一 生成多項式分解為複數個最小多項式,求取該些最小多項式之複數個根,並依據該些根產生一編碼矩陣,或依據該些根分解為複數個分解矩陣。
- 如請求項9所述之記憶體系統,其中該編碼器所產生之該些分解矩陣為該解碼器之該校驗矩陣之該部分矩陣。
- 如請求項10所述之記憶體系統,其中該校驗矩陣之該部分矩陣為。
- 如請求項8所述之記憶體系統,其中該編碼器所使用之該編碼矩陣HEN 為。
- 如請求項8所述之記憶體系統,其中該解碼器包含:一徵兆值計算器,以依據該校驗矩陣,計算得出複數個徵兆值,其中該校驗矩陣與該編碼器之一分解矩陣具有部分共同元素;一錯誤方程式解出器,電性連接該徵兆值計算器,以 解出一錯誤位置多項式;以及一錯誤位置搜尋器,電性連接該錯誤方程式解出器,以根據該錯誤位置多項式,取得該錯誤位置多項式之一根,並根據該錯誤位置多項式之該根找出錯誤位置。
- 如請求項13所述之記憶體系統,其中該解碼器將複數個基本元素帶入該錯誤位置多項式,以取得該錯誤位置多項式之該根,藉以減少該錯誤位置多項式需要運算的冪次。
- 如請求項14所述之記憶體系統,其中該解碼器係利用一平方器之矩陣運算,將該錯誤位置多項式之奇數冪次和偶數冪次合併運算,藉以減少該錯誤位置多項式需要運算的冪次方。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW101135990A TWI500038B (zh) | 2012-09-28 | 2012-09-28 | 記憶體系統之全套平行編碼方法與全套平行解碼方法 |
US13/853,079 US9069692B2 (en) | 2012-09-28 | 2013-03-29 | Fully parallel encoding method and fully parallel decoding method of memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW101135990A TWI500038B (zh) | 2012-09-28 | 2012-09-28 | 記憶體系統之全套平行編碼方法與全套平行解碼方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201413727A TW201413727A (zh) | 2014-04-01 |
TWI500038B true TWI500038B (zh) | 2015-09-11 |
Family
ID=50386463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101135990A TWI500038B (zh) | 2012-09-28 | 2012-09-28 | 記憶體系統之全套平行編碼方法與全套平行解碼方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9069692B2 (zh) |
TW (1) | TWI500038B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9362953B2 (en) * | 2013-08-02 | 2016-06-07 | Infineon Technologies Ag | Efficient error correction of multi-bit errors |
US9467173B2 (en) * | 2014-07-29 | 2016-10-11 | Storart Technology Co. Ltd. | Multi-code Chien's search circuit for BCH codes with various values of m in GF(2m) |
US10388400B2 (en) | 2015-05-18 | 2019-08-20 | SK Hynix Inc. | Generalized product codes for flash storage |
US10498366B2 (en) * | 2016-06-23 | 2019-12-03 | SK Hynix Inc. | Data dependency mitigation in parallel decoders for flash storage |
US10439649B2 (en) | 2016-02-03 | 2019-10-08 | SK Hynix Inc. | Data dependency mitigation in decoder architecture for generalized product codes for flash storage |
US10484020B2 (en) * | 2016-02-03 | 2019-11-19 | SK Hynix Inc. | System and method for parallel decoding of codewords sharing common data |
US10523245B2 (en) | 2016-03-23 | 2019-12-31 | SK Hynix Inc. | Soft decoder for generalized product codes |
KR101805073B1 (ko) * | 2016-04-01 | 2017-12-05 | 고려대학교 산학협력단 | 폴딩된 곱셈기가 적용된 bch 디코더 |
US10459783B2 (en) * | 2016-08-30 | 2019-10-29 | Marvell World Trade Ltd. | Low-latency decoder for Reed Solomon codes |
TWI643201B (zh) * | 2017-11-27 | 2018-12-01 | 慧榮科技股份有限公司 | 編碼器及相關的編碼方法與快閃記憶體控制器 |
TWI665678B (zh) * | 2017-11-27 | 2019-07-11 | 慧榮科技股份有限公司 | 編碼器及相關的編碼方法與快閃記憶體控制器 |
CN111757168B (zh) * | 2019-03-29 | 2022-08-19 | 腾讯科技(深圳)有限公司 | 音频解码方法、装置、存储介质及设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5444719A (en) * | 1993-01-26 | 1995-08-22 | International Business Machines Corporation | Adjustable error-correction composite Reed-Solomon encoder/syndrome generator |
US5642367A (en) * | 1994-02-07 | 1997-06-24 | Mitsubishi Semiconductor America, Inc. | Finite field polynomial processing module for error control coding |
US6920600B2 (en) * | 2002-01-23 | 2005-07-19 | Thomson Licensing S.A. | Dual chien search blocks in an error-correcting decoder |
US6990624B2 (en) * | 2001-10-12 | 2006-01-24 | Agere Systems Inc. | High speed syndrome-based FEC encoder and decoder and system using same |
US7020826B2 (en) * | 2002-01-23 | 2006-03-28 | Thomson Licensing | Intra-decoder component block messaging |
US7694207B1 (en) * | 2006-09-25 | 2010-04-06 | The United States Of America As Represented By The Director, National Security Agency | Method of decoding signals having binary BCH codes |
US20120233521A1 (en) * | 2011-03-08 | 2012-09-13 | Kwok Zion S | Apparatus, system, and method for decoding linear block codes in a memory controller |
US20120246526A1 (en) * | 2011-03-24 | 2012-09-27 | Itai Dror | Parallelization of Error Analysis Circuitry for Reduced Power Consumption |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6994476B1 (en) * | 2004-08-09 | 2006-02-07 | Johnson Yang | Dual-use coaxial optical fiber connector |
KR101800445B1 (ko) * | 2011-05-09 | 2017-12-21 | 삼성전자주식회사 | 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법 |
US8640013B2 (en) * | 2011-09-22 | 2014-01-28 | Kabushiki Kaisha Toshiba | Storage device |
US8499219B2 (en) * | 2011-12-13 | 2013-07-30 | Broadcom Corporation | Encoding methods and systems for binary product codes |
-
2012
- 2012-09-28 TW TW101135990A patent/TWI500038B/zh active
-
2013
- 2013-03-29 US US13/853,079 patent/US9069692B2/en active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5444719A (en) * | 1993-01-26 | 1995-08-22 | International Business Machines Corporation | Adjustable error-correction composite Reed-Solomon encoder/syndrome generator |
US5642367A (en) * | 1994-02-07 | 1997-06-24 | Mitsubishi Semiconductor America, Inc. | Finite field polynomial processing module for error control coding |
US6990624B2 (en) * | 2001-10-12 | 2006-01-24 | Agere Systems Inc. | High speed syndrome-based FEC encoder and decoder and system using same |
US6920600B2 (en) * | 2002-01-23 | 2005-07-19 | Thomson Licensing S.A. | Dual chien search blocks in an error-correcting decoder |
US7020826B2 (en) * | 2002-01-23 | 2006-03-28 | Thomson Licensing | Intra-decoder component block messaging |
US7694207B1 (en) * | 2006-09-25 | 2010-04-06 | The United States Of America As Represented By The Director, National Security Agency | Method of decoding signals having binary BCH codes |
US20120233521A1 (en) * | 2011-03-08 | 2012-09-13 | Kwok Zion S | Apparatus, system, and method for decoding linear block codes in a memory controller |
US20120246526A1 (en) * | 2011-03-24 | 2012-09-27 | Itai Dror | Parallelization of Error Analysis Circuitry for Reduced Power Consumption |
Also Published As
Publication number | Publication date |
---|---|
TW201413727A (zh) | 2014-04-01 |
US9069692B2 (en) | 2015-06-30 |
US20140095960A1 (en) | 2014-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI500038B (zh) | 記憶體系統之全套平行編碼方法與全套平行解碼方法 | |
US10243589B2 (en) | Multi-bit error correction method and apparatus based on a BCH code and memory system | |
KR101892319B1 (ko) | 저-밀도 패리티 체크 코드를 사용하는 인코딩 및 디코딩 기술 | |
KR101892251B1 (ko) | 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법 | |
KR20120125891A (ko) | 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법 | |
US20150311920A1 (en) | Decoder for a memory device, memory device and method of decoding a memory device | |
US10498364B2 (en) | Error correction circuits and memory controllers including the same | |
TWI702801B (zh) | 用於不規則代碼的高效能ldpc編碼器 | |
US8683304B2 (en) | Error-correcting code and process for fast read-error correction | |
US20150280745A1 (en) | Data processing block and data storage device including the same | |
US9906240B2 (en) | One-shot decoder for two-error-correcting BCH codes | |
Spinner et al. | Soft input decoder for high‐rate generalised concatenated codes | |
Chu et al. | A fully parallel BCH codec with double error correcting capability for NOR flash applications | |
US20200042385A1 (en) | Error correcting circuit performing error correction on user data and error correcting method using the error correcting circuit | |
TW201216624A (en) | Systems and methods for error correction | |
An et al. | A inversion-less Peterson algorithm based shared KES architecture for concatenated BCH decoder | |
KR101619049B1 (ko) | 병렬 bch 디코더 | |
US20180006664A1 (en) | Methods and apparatus for performing reed-solomon encoding by lagrangian polynomial fitting | |
US9384087B2 (en) | Method and apparatus for encoding and decoding data in memory system | |
KR101636406B1 (ko) | 저지연 신드롬 계산을 위한 bch 디코더의 전처리 장치 및 방법 | |
Gherman et al. | Sequential Decoders for Binary Linear Block ECCs | |
CN117850880A (zh) | 一种面向高误码率存储器的三级流水线bch译码方法 |