JP2013201503A - Chien search circuit, decoder, storage device and chien search method - Google Patents
Chien search circuit, decoder, storage device and chien search method Download PDFInfo
- Publication number
- JP2013201503A JP2013201503A JP2012067276A JP2012067276A JP2013201503A JP 2013201503 A JP2013201503 A JP 2013201503A JP 2012067276 A JP2012067276 A JP 2012067276A JP 2012067276 A JP2012067276 A JP 2012067276A JP 2013201503 A JP2013201503 A JP 2013201503A
- Authority
- JP
- Japan
- Prior art keywords
- error
- register
- unit
- calculation
- result
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
Description
本発明の実施形態は、チェンサーチ回路、復号器、記憶装置およびチェンサーチ方法に関する。 Embodiments described herein relate generally to a chain search circuit, a decoder, a storage device, and a chain search method.
半導体メモリの微細化に伴い高い誤り訂正能力がメモリシステムに対して求められている。従来、BCH符号等の誤り訂正符号を復号する復号器を実装する場合には、システムで規定した最大の誤り訂正ビット数に対応する回路を実装している。 With the miniaturization of semiconductor memories, high error correction capability is required for memory systems. Conventionally, when a decoder for decoding an error correction code such as a BCH code is mounted, a circuit corresponding to the maximum number of error correction bits defined by the system is mounted.
しかし、符号語内に存在する誤りビット数は平均的にはシステムで規定した誤りビット数よりも非常に少ない。このため、復号器の大部分の回路が有効に活用されていない。一方で、符号語中に存在する誤りビットの数は訂正処理の実行中に判明するため、復号器の演算器を共有することで回路規模を削減する場合には復号処理が全体的に遅くなってしまう。 However, the number of error bits existing in the codeword is on average very much smaller than the number of error bits defined by the system. For this reason, most of the circuits of the decoder are not effectively utilized. On the other hand, since the number of error bits existing in the codeword is known during the execution of the correction process, the decoding process is generally slowed down when the circuit scale is reduced by sharing the arithmetic unit of the decoder. End up.
本実施形態は、復号処理速度の低下を防いで回路規模を削減することができるチェンサーチ回路、復号器、記憶装置およびチェンサーチ方法を提供する。 The present embodiment provides a chain search circuit, a decoder, a storage device, and a chain search method that can reduce the circuit scale by preventing a decrease in decoding processing speed.
本願発明の一態様によれば、1つ以上の演算器と、演算器による演算結果を加算する加算器と、加算器の加算結果を保持する第1のレジスタと、を備え、i番目の演算器は、入力されたデータに対してαi倍の乗算を行った結果を加算器へ入力する第1の乗算器と、入力されたデータに対してαK(Kは1以上の整数)倍の乗算を行う第2の乗算器と、第2の乗算器による演算結果を保持する第3のレジスタと、誤り位置多項式の係数と第2の乗算器による演算結果とのいずれかを選択して第1の乗算器へ入力する第1のセレクタと、係数と第3のレジスタの演算結果とのいずれかを選択して第2の乗算器へ入力する第2のセレクタと、を備え、加算器は、第1のレジスタに加算結果が保持されている場合は、この加算結果と演算器による演算結果とを加算する。 According to one aspect of the present invention, the ith operation is provided with one or more arithmetic units, an adder that adds the operation results of the arithmetic units, and a first register that holds the addition result of the adder. The multiplier has a first multiplier for inputting the result obtained by multiplying the input data by α i times to the adder, and α K (K is an integer of 1 or more) times for the input data. Selecting one of a second multiplier that performs multiplication, a third register that holds an operation result by the second multiplier, a coefficient of an error locator polynomial, and an operation result by the second multiplier A first selector that inputs to the first multiplier, and a second selector that selects either the coefficient or the operation result of the third register and inputs to the second multiplier, and an adder If the addition result is held in the first register, the addition result and the calculation by the calculator It adds the results.
以下に添付図面を参照して、実施形態にかかるチェンサーチ回路、復号器、記憶装置およびチェンサーチ方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。 Exemplary embodiments of a chain search circuit, a decoder, a storage device, and a chain search method will be explained below in detail with reference to the accompanying drawings. Note that the present invention is not limited to these embodiments.
(第1の実施の形態)
図1は、第1の実施の形態にかかる半導体記憶装置(記憶装置)1の構成例を示すブロック図である。本実施の形態の半導体記憶装置1は、メモリコントローラ(メモリ制御装置)2と、NAND型記憶セルを備える半導体メモリ部(メモリ部)3と、で構成される。半導体記憶装置1は、通信インタフェースを介してホスト4に接続され、ホスト4に対する外部記憶媒体として機能する。ホスト4の例としては、パーソナルコンピュータやCPU(Central Processing Unit)コア等があげられる。
(First embodiment)
FIG. 1 is a block diagram illustrating a configuration example of a semiconductor memory device (memory device) 1 according to the first embodiment. The
メモリ部3は、例えばNAND型フラッシュメモリ等の不揮発性半導体メモリにより構成される。メモリ部3が備えるメモリチップは単数であってよいし、複数であってもよい。
The
メモリコントローラ2は、内部バス20と、HostI/F(インタフェース)21と、NANDI/F(メモリ制御部)22と、制御部23と、符号化/復号化処理部24と、で構成される。符号化/復号化処理部24は、符号化部25と、復号化部(復号器)26と、で構成される。
The
HostI/F21は、ホスト4から受信した命令、データなどを内部バス20に出力する。また、HostI/F21は、内部バス20経由で入力されたデータ、制御部23からの応答通知(命令の実行完了を示す通知など)などをホスト4へ送信する。HostI/F21は、例えば、SATA(Serial Advanced Technology Attachment)、SAS(Serial Attached SCSI)、PCI(Peripheral Component Interconnect) Express等の通信インタフェース規格に準拠している。 The Host I / F 21 outputs the command, data, etc. received from the host 4 to the internal bus 20. In addition, the Host I / F 21 transmits data input via the internal bus 20, a response notification from the control unit 23 (such as a notification indicating the completion of instruction execution), and the like to the host 4. The Host I / F 21 complies with communication interface standards such as SATA (Serial Advanced Technology Attachment), SAS (Serial Attached SCSI), and PCI (Peripheral Component Interconnect) Express.
制御部23は、半導体記憶装置1の各構成要素を統括的に制御する制御部であり、CPUコア、RAM(Random Access Memory)、ROM(Read Only Memory)、DMA(Direct Memory Access)コントローラなどで構成される。制御部23は、ホスト4からHostI/F21および内部バス20経由で命令を受けた場合に、その命令に従った制御を行う。例えば、制御部23は、ホスト4からの命令に従って、半導体メモリ部3へのデータの書き込み、半導体メモリ部3からのデータの読み出しなどをNANDI/F22へ指示する。また、制御部23は、符号化/復号化処理部24へ誤り訂正符号化処理または復号化処理の実施を指示する。
The control unit 23 is a control unit that comprehensively controls each component of the
符号化/復号化処理部24は、制御部23の指示に基づいて、ホスト4から受信したデータに対して誤り訂正符号化処理を行い、NANDI/F22へ出力し、NANDI/F22から入力されるデータに対して復号化処理を行う。NANDI/F22は、制御部23の指示に基づいて半導体メモリ部3の読み書き等を行なう。
The encoding / decoding processing unit 24 performs error correction encoding processing on the data received from the host 4 based on an instruction from the control unit 23, outputs the data to the NAND I /
なお、図1に示した半導体記憶装置1の構成は一例であり、半導体メモリとその半導体メモリの読み書きを制御するコントローラを備え、ホスト4と通信が可能な構成であれば、図1に示した構成に限らずどのような構成でもよい。また、半導体メモリ部3の代わりに半導体メモリ以外の記憶手段を用いてもよい。
The configuration of the
次に、本実施の形態の半導体メモリ部3への書き込み動作について説明する。まず、制御部23は、ホスト4からデータの書き込みを指示されると、符号化/復号化処理部24に符号化の実施を指示するとともに、NANDI/F22へ半導体メモリ部3への書き込みを指示する。ホスト4から送信される書き込み対象のデータは、半導体記憶装置1内の図示しないバッファメモリに書き込まれる。符号化/復号化処理部24の符号化部25は、バッファメモリから入力されるデータに対して誤り検出符号および誤り訂正符号を生成し、生成した符号をNANDI/F22へ出力する。NANDI/F22は、バッファメモリから入力されるデータと、符号化部25が生成した冗長符号と、を半導体メモリ部3へ書き込む。
Next, a write operation to the
本実施の形態では、符号化部25は、符号化処理として、誤り検出符号および誤り訂正符号を生成する。図2は、本実施の形態の符号化部25の構成例を示す図である。なお、ここでは、符号化部25が、誤り検出符号としてCRCを生成する例を説明するが、誤り検出符号はCRCに限定されない。図2に示すように、符号化部25は、所定のサイズの書き込みデータに基づいてCRC(Cyclic Redundancy Check)を生成する誤り検出符号エンコーダ(誤り検出符号化部)251と、所定のサイズの書き込みデータと当該データに対応するCRCとに基づいて誤り訂正符号化処理を実施する誤り訂正符号エンコーダ252と、を備える。また、誤り訂正符号としてはどのような符号を用いてもよいが、例えばBCH符号やRS(Reed−Solomon)符号等を用いることができる。以下BCH符号を例にとって説明する。
In the present embodiment, the
本実施の形態では、所定のサイズの書き込みデータに基づいてCRCが生成され、所定のサイズの書き込みデータと対応するCRCとを誤り訂正符号化対象として誤り訂正符号化処理が実施される。そして、書き込みデータと誤り訂正符号化処理による生成された冗長符号とを半導体メモリ部3へ書き込む。
In the present embodiment, a CRC is generated based on write data of a predetermined size, and error correction encoding processing is performed using the write data of the predetermined size and the corresponding CRC as an error correction encoding target. Then, the write data and the redundant code generated by the error correction encoding process are written into the
次に、本実施の形態の半導体メモリ部3からの読出し動作について説明する。制御部23は、ホスト4からデータの読み出しを指示されると、符号化/復号化処理部24に復号化の実施を指示するとともに、NANDI/F22へ半導体メモリ部3からの読み出しを指示する。NANDI/F22は、制御部23からの指示に基づいて半導体メモリ部3からデータと対応する誤り検出符号および冗長符号(誤り訂正符号化における冗長符号)とを読み出し、読み出したデータと対応する誤り検出符号および冗長符号を符号化/復号化処理部24へ出力する。符号化/復号化処理部24の復号化部26は、読み出したデータと誤り検出符号および冗長符号とに基づいて復号処理を行い、読み出したデータに誤りが有ると判断した場合には、誤り訂正を実施する。HostI/F21は、誤り訂正後のデータ(誤りの無い場合には、半導体メモリ部3から読み出したデータ)をホスト4に送信する。
Next, a read operation from the
以下、本実施の形態の復号処理について説明する。図3は、本実施の形態の復号化部26の構成例を示す図である。復号化部(復号装置)26は、図3に示すように、シンドローム計算部261と、誤り位置多項式演算部262と、チェンサーチ部(誤り位置計算部)263と、誤り検出符号デコーダ(誤り検出部)264と、復号制御部265と、を備える。シンドローム計算部261、誤り位置多項式演算部262およびチェンサーチ部263は、誤り訂正処理を行う誤り訂正処理部(誤り訂正処理デコーダ)を構成する。
Hereinafter, the decoding process according to the present embodiment will be described. FIG. 3 is a diagram illustrating a configuration example of the
なお、図2、図3の構成例では、誤り検出符号エンコーダ251、誤り検出符号デコーダ264を備えているが、本実施の形態では、誤り検出符号を付加しなくてもよく、誤り検出符号を付加しない場合には、図2の誤り検出符号エンコーダ251、図3の誤り検出符号デコーダ264を備えなくてもよい。
2 and 3, the error
図4は、本実施の形態の復号処理手順の一例を示すフローチャートである。なお、復号処理中の誤り位置多項式の計算は、BM(Berlekamp−Massey)法、ユークリッド互除法、ピーターソン法等どのような方法を用いてもよいが、以下の説明では、BM法を用いることを想定して説明する。なお、符号化部25は最大訂正ビット数であるTビットの誤り訂正符号を生成しているとする。
FIG. 4 is a flowchart illustrating an example of a decoding processing procedure according to the present embodiment. Note that any method such as the BM (Berlekamp-Massey) method, the Euclidean mutual division method, and the Peterson method may be used for calculation of the error position polynomial during the decoding process. In the following description, the BM method is used. An explanation will be given assuming this. It is assumed that the
制御部23は、HostI/F21経由でホスト4からデータの読み出し要求を受け取ると、読み出し対象のデータを読み出すようNANDI/F22へ指示し、NAND I/F22は読み出し対象のデータを対応するCRCおよび誤り訂正符号とともに読み出し、復号化部26へ渡す。復号化部26では、NANDI/F22から読み出し対象のデータを受け取ると復号処理を開始する。
When receiving a data read request from the host 4 via the Host I / F 21, the control unit 23 instructs the NAND I /
復号処理を開始すると、シンドローム計算部261に対してシンドローム計算の実施を指示し、シンドローム計算部261がシンドローム計算を実施する(ステップS1)。その後、復号制御部265は、誤り位置多項式演算部262に対して、計算済みのシンドローム計算結果を用いて誤り多項式演算を行うよう指示し、誤り位置多項式演算部262が誤り位置多項式演算を実施する(ステップS2)。
When the decoding process is started, the
誤り位置多項式演算は、誤り位置多項式をσ(z)とするとき、σ(z)=1+σ1z1+σ2z2+…の係数σ1,σ2,…をシンドロームの値から計算する処理である。具体的な方法としては、Berlekamp−Massey(BM)法、ユークリッド互除法、ピーターソン法等がある。ピーターソン法は、行列計算で係数σとシンドロームの間に成り立つ連立方程式を解く方法であり、BM法およびユークリッド互助法は多項式を使って係数σとシンドロームの連立方程式を逐次的に計算する方法である。なお、復号処理中の誤り位置多項式の計算は、どのような方法を用いてもよい。 The error locator polynomial calculation is a process of calculating coefficients σ 1 , σ 2 ,... Of σ (z) = 1 + σ 1 z 1 + σ 2 z 2 +... From the syndrome value, where σ (z) is the error locator polynomial. It is. Specific methods include the Berlekamp-Massey (BM) method, the Euclidean mutual division method, the Peterson method, and the like. The Peterson method is a method of solving simultaneous equations between the coefficient σ and the syndrome by matrix calculation, and the BM method and the Euclidean mutual assistant method are methods of sequentially calculating the simultaneous equations of the coefficient σ and the syndrome using a polynomial. is there. Note that any method may be used to calculate the error position polynomial during the decoding process.
次に、復号制御部265は、チェンサーチ部263に対して、誤り位置多項式演算の結果を用いてチェンサーチを行うよう指示し、チェンサーチ部263は係数σ1,σ2,…を用いてチェンサーチを実施し(ステップS3)、誤り位置を特定し、処理を終了する。チェンサーチは、誤り位置多項式σ(z)に順次値を代入しσ(z)=0となる値である誤りロケータ(誤り位置)を探索する手法である。復号制御部265は、チェンサーチにより、σ(z)=0となった場合、対応するビットに誤りがあると判定し、当該ビットを反転させることにより誤り訂正を実施する。
Next, the
以上の復号処理の後、誤り検出符号デコーダ264は、誤り訂正後のデータおよび対応するCRCを用いて誤り訂正後のデータに誤りがあるか否かを判定する。制御部23は、誤り検出符号デコーダ264により誤りが無いと判定されたデータをHostI/F21経由でホスト4へ送信し、誤りが有ると判定された場合はホスト4との間で定められた所定の処理を実施する(例えば、誤りがあることをホスト4に通知する等)。
After the above decoding process, the error
次に、本実施の形態のチェンサーチ部263について説明する。図5は、一般的なチェンサーチ回路の構成例を示す図である。図5に示すように、一般的なチェンサーチ回路は、システムで規定した最大の誤り訂正ビット数をTとするとき、演算器101−1〜101−Tと全ての演算器の出力の加算をする加算器を備え、加算結果が?1になるビットの位置が誤り位置だと判定する。演算器101−i(i=1,2,…,T)は、誤り位置多項式演算により算出された係数σiを保持するレジスタ102と、αi倍の乗算を行う乗算器103−iを備える。レジスタ102の内容は、初期値として係数σiを記憶し、符号語の各ビット位置のエラー判定を行うためのαi倍の乗算を実行する度に、計算した乗算結果で上書き更新する。
Next, the
このように、一般的なチェンサーチ回路では、システムで規定した最大の誤り訂正ビット数であるT個の演算器を備える。しかし、符号語内に存在する誤りビット数は平均的にはシステムで規定した誤りビット数よりも非常に少ない。このため、チェンサーチ回路の大部分の回路が有効に活用されていない。この状況を鑑みて、本実施の形態ではシステムで規定した最大の訂正ビット数よりも少ない演算器を時分割で使用することでチェンサーチ回路の回路規模を削減する方法を提供する。 As described above, a general chain search circuit includes T arithmetic units that are the maximum number of error correction bits defined by the system. However, the number of error bits existing in the codeword is on average very much smaller than the number of error bits defined by the system. For this reason, most of the Chien search circuits are not effectively utilized. In view of this situation, the present embodiment provides a method for reducing the circuit scale of the Chien search circuit by using, in time division, an arithmetic unit smaller than the maximum number of correction bits defined by the system.
図6は、本実施の形態のチェンサーチ部263(チェンサーチ回路)の構成例を示す図である。本実施の形態のチェンサーチ回路は、演算器71−1〜71−L(L<T)と、加算器72と、レジスタ73(第1のレジスタ)と、を備える。演算器71−i(i=1,2,…,L)は、セレクタ711(第1のセレクタ)と、セレクタ712(第3のセレクタ)と、αi倍の乗算を行う乗算器713−i(第1の乗算器)と、レジスタ714(第3のレジスタ)と、レジスタ715(第2のレジスタ)と、αL倍の乗算を行う乗算器716(第2の乗算器)と、を備える。本実施の形態では、図6に示したようなTより少ない個数の演算器71−1〜71−Lを用いることにより、復号処理速度の低下を抑えて回路規模を削減する。
FIG. 6 is a diagram illustrating a configuration example of a chain search unit 263 (chain search circuit) according to the present embodiment. The chain search circuit according to the present embodiment includes computing units 71-1 to 71-L (L <T), an
以下、本実施の形態のチェンサーチの計算手順について説明する。復号制御部265は、誤り位置多項式演算の後、誤り位置多項式の項の数Yに応じてチェンサーチ部263を制御する。誤り位置多項式の項の数YをY=aL+bとすると、復号制御部265は、誤り位置多項式のn番目の項の係数σnを、演算器71−p(p=n mod L(nをLで割った余り))のレジスタ715の(int(n/L)+1)番目に格納するよう制御する。
Hereinafter, the calculation procedure of the chain search according to the present embodiment will be described. After the error position polynomial calculation, the
まず、誤り位置多項式の項の数Yが、L以下の場合のチェンサーチ部263の動作を説明する。演算器71−1〜71−Yが次の動作を並行して実施する。レジスタ715は、誤り位置多項式のそれぞれ対応する項の係数を格納する。セレクタ712が、レジスタ715を入力として選択し、レジスタ715に格納されたデータ(誤り位置多項式の項の係数)を第1の乗算器(演算器71−i(i=1,2,…,Y)の乗算器713−i)へ入力し、第1の乗算器による演算が実施される。加算器72は、演算器71−1〜71−Yの第1の乗算器から出力される演算結果をExOR演算する。復号制御部265は、ExOR演算結果が−1となるか否か(0となるか否か)により各ビット(誤り位置多項式の次数)に誤りがあるか否かを判定する。YがL以下の場合、それぞれの演算器71−1〜71−Lでは、1個あるいは0個の項を計算することになる。
First, the operation of the
次に、誤り位置多項式の項の数Yが、Lより大きく2L未満である場合(L<Y≦2L)のチェンサーチ部263の動作を説明する。図7は、L<Y≦2Lの場合のチェンサーチの処理手順の一例を示す図である。この場合、それぞれの演算器71−1〜71−Lでは、1個あるいは2個の項の計算をすることになる。そこで、復号制御部265は、全ての演算器71−1〜71−Lを用いてそれぞれ1個目の項の計算(ステップS110)を実施した後に、演算器71−1〜71−Y´(Y´=Y−L)を用いてそれぞれ2個目の項の計算(ステップS120)を実施するよう制御する。
Next, the operation of the
まず、レジスタ715は、誤り位置多項式のそれぞれ対応する項の係数を格納する(ステップS11)。そして、全ての演算器71−1〜71−Lを用いて1個目の項の計算を開始し、セレクタ712が、レジスタ715を入力として選択し、レジスタ715の1番目のデータを第1の乗算器へ入力し、第1の乗算器による演算が実施される(ステップS12)。また、レジスタ715の値は第1の乗算器による演算結果で更新される。第1の乗算器の出力はレジスタ715の1番目に格納される。加算器72は、演算器71−1〜71−Yの第1の乗算器から出力される演算結果のExOR演算を実行し、ExOR演算結果をレジスタ73に格納する(ステップS13)。このとき、復号制御部265は、ExOR演算結果(加算結果)が−1となるか否かにより各ビット(誤り位置多項式の次数)に誤りがあるか否かは判定しない。ステップS11〜ステップS13は、YがL以下の場合と同様である。
First, the
復号制御部265は、加算器72により加算された結果(演算器71−1〜71−Lの演算結果の加算結果)を中間結果としてレジスタ73に格納する(ステップS14)。
The
その後、復号制御部265は、演算器71−1〜71−Y´を用いた2個目の項の計算を開始し、演算器71−1〜71−Y´のセレクタ711が、レジスタ715を入力として選択し、レジスタ715に格納されている2番目のデータが第2の乗算器(乗算器716)に入力され、第2の乗算器によりαL倍とする演算が行われる(ステップS15)。次に、セレクタ712が、第2の乗算器の演算結果を第1の乗算器へ入力し、第1の乗算器による演算が行われる(ステップS16)。第1の乗算器の出力はレジスタ715の2番目に格納される。加算器72は、レジスタ73に格納されている中間結果と第1の乗算器の演算結果とを加算し、復号制御部265は、加算結果が−1となるか否かにより各ビットに誤りがあるか否かを判定し(ステップS17)、処理を終了する。
Thereafter, the
以上の動作により、j(L<j≦Y)番目の項について、第2の乗算器によるαL倍の演算と第1の乗算器によるαj-L倍の演算との両方が実施されることにより、αL×αj-L=αj倍の演算を実施することができる。また、L+1〜j(L<j≦Y)番目の項の演算結果とレジスタ73に格納されている中間結果とを加算することで、1〜j番目の項をそれぞれ計算した後に全て加算する処理と同等の処理を実現することができる。
As a result of the above operation, both the α L- fold operation by the second multiplier and the α jL- fold operation by the first multiplier are performed for the j (L <j ≦ Y) -th term. , Α L × α jL = α j times. In addition, the calculation result of the L + 1 to j (L <j ≦ Y) -th term and the intermediate result stored in the
次に、誤り位置多項式の項の数Yが、2Lより大きい場合(2L<Y)のチェンサーチ部263の動作を説明する。図8は、2L<Yの場合のチェンサーチの処理手順の一例を示す図である。この場合、それぞれの演算器71−1〜71−Lでは、imax−1個あるいはimax個の項の計算をすることになる。なお、imaxはY/Lの小数点以下を切り上げた整数であり、imax≧3である。Y´´=Y−(imax−1)×Lとするとき、全ての演算器71−1〜71−Lがそれぞれ(imax−1)個の項の計算を行った後、演算器71−1〜71−Y´´がさらに1つの項の計算を行う。
Next, the operation of the
復号制御部265は、誤り位置多項式の項の数Yに基づいてimaxおよびY´´を求め、全ての演算器71−1〜71−Lを用いてそれぞれ1個目および2個目の項の計算(ステップS110、ステップS120)を実施した後に、3個目以上imax個目までの項の計算を実施する。
The
まず、L<Y≦2Lの場合と同様に、1個目および2個目の項の計算(ステップS110、ステップS120)を実施する。ステップS120の後、復号制御部265は、加算器72により加算された結果(中間結果と2回目の演算器71−1〜71−Lの演算結果との加算結果)を中間結果としてレジスタ73に格納する(ステップS18)。
First, as in the case of L <
復号制御部265は、計算回数を示す変数iをi=3とする(ステップS19)。復号制御部265は、i個目の項の計算を開始し、演算器71−1〜71−L(i=imaxの場合は演算器71−1〜71−Y´´)のセレクタ711が、レジスタ715を入力として選択し、レジスタ715に格納されているi番目のデータが第2の乗算器(乗算器716)に入力され、第2の乗算器によりαL倍とする演算が行われる(ステップS20)。次に、復号制御部265は、αL倍の繰り返し演算回数を示すカウンタj=1とし(ステップS21)、第2の乗算器の演算結果をレジスタ714へ格納する(ステップS22)。
The
セレクタ711が、レジスタ714を入力として選択し、レジスタ714に格納されているデータ(ステップS22で格納されたデータ)が第2の乗算器に入力され、第2の乗算器によりαL倍とする演算が行われる(ステップS23)。復号制御部265は、j=i−2であるか否かを判断し(ステップS24)、j=i−2の場合(ステップS24 Yes)、セレクタ712が、第2の乗算器の演算結果を第1の乗算器へ入力し、第1の乗算器による演算が行われる(ステップS25)。レジスタ715の値は第1の乗算器による演算結果で更新される。そして、加算器72は、レジスタ73に格納されている中間結果と第1の乗算器の演算結果との加算(ExOR演算)を実行する(ステップS26)。その後、復号制御部265は、i=imaxであるか否かを判断し(ステップS27)、i=imaxである場合(ステップS27 Yes)、復号制御部265は、加算結果が−1となるか否かにより各ビットに誤りがあるか否かを判定し(ステップS28)、処理を終了する。
The
ステップS27で、i=imaxでない場合(ステップS27 No)、加算結果をレジスタ73へ中間結果として格納し、i=i+1とし(ステップS29)、ステップS20へ戻る。ステップS24で、j=i−2でない場合(ステップS24 No)、j=j+1とし(ステップS30)、ステップS22へ戻る。
If i = imax is not satisfied in step S27 (No in step S27), the addition result is stored as an intermediate result in the
以上の動作により、例えば、imax=3の場合、演算器71−i(i=1,2,…,Y´´)では、2個目までの項の計算の後、ステップS20によるαL倍の演算とステップS23によるαL倍の演算とステップS25によるαi倍の演算がそれぞれ1回ずつ実施されることにより、α2L+i倍の演算が実施されることになる。imaxが4の場合は、3個目までの項の計算の後、さらにステップS20によるαL倍の演算とステップS23による2回のαL倍の演算とステップS25によるαi倍の演算が実施されることにより、α3L+i倍の演算が実施されることになる。 With the above operation, for example, when imax = 3, the computing unit 71-i (i = 1, 2,..., Y ″) calculates α L times in step S20 after calculating up to the second term. And the calculation of α L times in step S23 and the calculation of α i times in step S25 are each performed once, so that the calculation of α 2L + i times is performed. When imax is 4, after the calculation of up to the third term, the calculation of α L times by step S20, the two times of α L times calculation by step S23, and the calculation of α i times by step S25 are performed. As a result, the calculation of α 3L + i is performed.
なお、ここでは、αL倍の演算を行う乗算器713を備える例を説明したが、αL倍以外の定数倍の演算を行う乗算器を備えるようにしてもよい。また、定数倍の演算を行う乗算器を複数備え、組み合わせて乗算を行うようにしてもよい。例えば、αL倍の乗算を行う乗算器とα2L倍の乗算を行う乗算器を備え、αL+i(i=1,2,…,L)倍の演算を行う場合はαL倍の乗算器を用い、α2L+i(i=1,2,…,L)倍の演算を行う場合はα2L倍の乗算器を用いる等、異なる定数倍の乗算器の組み合わせで乗算を実施するようにしてもよい。
Here, an example is described in which the
以上のように、本実施の形態では、誤り位置多項式の項の数に応じてαL倍を反復して実行することで任意の定数倍を実現することが可能になる。また、誤り位置多項式の項の数に応じて乗算器が乗ずる数を変更する必要もない。このため、演算速度の低下を抑えつつ、少ない演算器で任意の数の項のチェンサーチの計算が可能になる。 As described above, in the present embodiment, it is possible to realize an arbitrary constant multiple by repeatedly executing α L times in accordance with the number of terms of the error locator polynomial. Further, it is not necessary to change the number multiplied by the multiplier according to the number of terms of the error position polynomial. Therefore, it is possible to calculate a chain search of an arbitrary number of terms with a small number of arithmetic units while suppressing a decrease in the calculation speed.
(第2の実施の形態)
図9は、第2の実施の形態にかかる復号処理手順の一例を示すフローチャートである。本実施の形態の半導体記憶装置1の構成は第1の実施の形態と同様である。第1の実施の形態と同様の機能を有する構成要素は、第1の実施の形態と同一の符号を付して重複する説明を省略する。
(Second Embodiment)
FIG. 9 is a flowchart illustrating an example of a decoding processing procedure according to the second embodiment. The configuration of the
第1の実施の形態では、チェンサーチ部263の演算回路を削減する例を説明したが、本実施の形態では、チェンサーチ部263以外の回路規模についても削減可能な復号方法を適用する例を説明する。
In the first embodiment, the example in which the arithmetic circuit of the
本実施の形態では、符号語の訂正可能な最大の誤り訂正ビット数(以下、最大訂正ビット数という)に比べ、実際の復号(誤り訂正復号)対象の符号語に含まれる誤りビット数が平均的には低いことに着目し、最大訂正ビット数より少ないビットを誤り数期待値として設定して復号処理を行い、正しく復号できたかどうかを誤り検出符号デコーダ264でチェックし、この復号処理で正しく訂正されなかった場合に、誤り数期待値を増やして再度計算する。さらにこの復号処理で正しく訂正されなかった場合に、誤り数期待値を増やしてシンドローム計算から誤り検出符号デコードまでを再度計算する。このように誤り数期待値の設定と復号処理と復号結果のチェックをデータが正しく訂正されるまで繰り返し、誤り数期待値を最大訂正ビット数に設定しても正しく訂正されなかった場合には訂正不可と判定する。
In the present embodiment, the average number of error bits included in a codeword to be actually decoded (error correction decoding) is larger than the maximum number of error correction bits that can be corrected in a codeword (hereinafter referred to as the maximum number of correction bits). Focusing on the fact that it is low, the decoding is performed by setting bits smaller than the maximum number of correction bits as the expected number of errors, and the error
このような処理を行うことにより、本実施の形態では、1回の誤り数期待値の増加量と復号処理で使用する演算器量を平均的な誤りビット数に合わせて備えることで、最大訂正ビット数に対応した演算器を備える場合とくらべて回路規模を削減しつつ訂正処理にかかる平均的な時間を同程度に抑えることができる。 By performing such processing, in this embodiment, the maximum correction bit can be obtained by providing the amount of increase in the expected number of errors for one time and the amount of arithmetic units used in the decoding processing in accordance with the average number of error bits. Compared to the case where the arithmetic unit corresponding to the number is provided, the average time required for the correction process can be suppressed to the same level while reducing the circuit scale.
本実施の形態では、符号語の誤り訂正能力として誤り数期待値Xを設定してデータが正しく訂正されたと誤り検出符号デコーダが判断した場合に処理を打ち切るため、最大訂正ビット数を設定してシンドローム計算から誤り検出符号デコーダまでの処理を繰り返し実行した時間よりも早く処理を打ち切ることが可能になる。特に符号語中に含まれる誤りビット数が復号化部内に備える演算器の数以下である場合にはシンドローム計算から誤り検出符号デコーダまでの処理を1回の処理で完了できるため、最大訂正ビット数に応じた演算器を備える場合と同じ計算時間になる。一般に平均誤り数は最大訂正ビット数より低いため、誤り数期待値Xの更新方法等を適切に実施すれば平均的には処理速度は向上する。 In this embodiment, since the error detection code decoder determines that the data has been correctly corrected by setting the expected number of errors X as the error correction capability of the codeword, the maximum number of correction bits is set. It becomes possible to abort the processing earlier than the time when the processing from the syndrome calculation to the error detection code decoder is repeatedly executed. In particular, when the number of error bits included in the code word is less than or equal to the number of arithmetic units provided in the decoding unit, the process from the syndrome calculation to the error detection code decoder can be completed in one process, so the maximum number of correction bits The calculation time is the same as when a computing unit corresponding to is provided. In general, since the average number of errors is lower than the maximum number of correction bits, if the error number expected value X update method or the like is appropriately implemented, the processing speed is improved on average.
復号処理中の誤り位置多項式の計算は、BM(Berlekamp−Massey)法、ユークリッド互除法、ピーターソン法等どのような方法を用いてもよいが、以下の説明では、BM法を用いることを想定して説明する。なお、符号化部25は最大訂正ビット数であるTビットの誤り訂正符号を生成しているとする。
Any method such as the BM (Berlekamp-Massey) method, the Euclidean mutual division method, and the Peterson method may be used for calculation of the error position polynomial during the decoding process. In the following description, it is assumed that the BM method is used. To explain. It is assumed that the
図9を用いて本実施の形態の復号方法について説明する。なお、半導体メモリ部3への書き込み動作、復号処理以外の半導体メモリ部3からの読み出し時の動作は、第1の実施の形態と同様である。ただし、第1の実施の形態では、誤り検出符号の付加は実施しなくてもよいとしたが、本実施の形態では、誤り検出符号は付加されることを前提とする。復号化部26では、NANDI/F22から読み出し対象のデータを受け取ると復号処理を開始する。
The decoding method of this Embodiment is demonstrated using FIG. Note that operations other than the writing operation to the
復号処理を開始すると、復号制御部265は、誤り数期待値XをA(A<T)ビット単位で更新する(ステップS31)。具体的には、処理の開始後、最初(1サイクル目)のステップS1ではX=Aと設定し、2回目(2サイクル目)のステップS1ではXにAを加算する。なお、後述のように、本実施の形態では、設定した誤り数期待値Xで誤り訂正が正しく行えなかった場合には、ステップS31に戻って誤り数期待値Xを更新して再度演算を行うが、これらの1回の誤り数期待値Xの設定を1サイクルと表記する。なお、誤り数期待値Xを増加させる変数であるAは平均誤り数以上の値を設定することが望ましい。平均誤り数と同じ値を用いた場合、平均的なサイクル数を1に押さえることができる。
When the decoding process is started, the
次に、復号制御部265は、シンドローム計算を実施するようシンドローム計算部261を制御する(ステップS32,S33)。本実施の形態のシンドローム計算部261は、2×A組の加算器、乗算器およびレジスタを用いて、それぞれシンドロームS(α1),S(α2),S(α3),…,S(α2X)を求める。
Next, the
ステップS33では、シンドローム計算部261は、上記の2×A組の加算器、乗算器およびレジスタを用いて、それぞれシンドロームS(α1),S(α2),S(α3),…,S(α2X)を求める。具体的には、例えばA=4とし2サイクル目の誤り数期待値X=8でシンドロームの計算をするとした場合、8×2=16個のシンドロームをN=2×A=8個の演算器で計算をする。
In step S33, the
図10は、本実施の形態のシンドローム計算手順の一例を示すフローチャートである。まず、シンドローム計算を開始すると、復号制御部265は、誤り数期待値Xと計算済みのシンドローム数とに基づいて2×A個の乗算器の係数を設定する(ステップS51)。そして、2×A個の乗算器によりシンドローム計算を実施して計算結果をシンドローム記憶部へ格納し(ステップS52)、当該サイクル内で計算済みのシンドローム数を更新する(ステップS53)。当該サイクル内で計算済みのシンドローム数とは、ステップS31で誤り数期待値が設定され、次のステップS31を実施するまでの1サイクルのなかで、計算済みのシンドローム数であり、誤り数期待値が更新されて次のサイクルのシンドローム計算が開始される際には初期化(計算済みのシンドローム数は0)されるとする。
FIG. 10 is a flowchart illustrating an example of a syndrome calculation procedure according to the present embodiment. First, when syndrome calculation is started, the
そして、復号制御部265は、計算済みのシンドローム数がX個となったか否かを判断し(ステップS54)、X個となった場合(ステップS54 Yes)には処理を終了し、X個未満の場合(ステップS54 No)、ステップS51へ戻る。
Then, the
例えば、A=4とし、2サイクル(図9のステップS31で更新されるサイクル)目に相当する誤り数期待値X=8でシンドロームの計算をするとした場合、シンドローム計算部261は8個(2×A個)の乗算器を有し、1サイクル目のシンドローム計算では、はじめ(1周目)のステップS51では、S(α1),S(α2),S(α3),…,S(α8)を求めるよう係数が設定される。このS(α1),S(α2),S(α3),…,S(α8)は、シンドローム計算部261のシンドローム記憶部へ格納され、2周目のステップS51では、S(α9),S(α10),S(α11),…,S(α16)を求めるよう係数が設定され、2周目のステップS54でX個のシンドロームを計算したと判定されてそのサイクルのシンドローム計算を終了する。なお、ここでは、シンドローム計算部261は、2×A個の乗算器を有することとしたが、2×B個(A≠B)の乗算器を有するように構成してもよい。この場合、ステップS51では2×B個の係数を計算してステップS22では2×B個のシンドロームを求めることになる。
For example, when A = 4 and syndrome calculation is performed with the expected number of errors X = 8 corresponding to the second cycle (the cycle updated in step S31 in FIG. 9), the
シンドローム計算部261は、以上の処理により2×X個のシンドロームの計算が終了すると、シンドローム記憶部に格納されている2×X個のシンドロームを誤り位置多項式演算部262へ渡す。
When the calculation of 2 × X syndromes is completed by the above processing, the
図9の説明に戻り、ステップS33を実施した後、復号制御部265は、誤り位置多項式演算部262に計算済みのシンドローム計算結果を用いて誤り数期待値Xに対応する処理を行うよう指示し、誤り位置多項式演算部262が誤り位置多項式演算を実施する(ステップS34)。
Returning to the description of FIG. 9, after performing step S <b> 33, the
本実施の形態では、誤り位置多項式演算部262は、平均的な誤り数に合わせたM個のガロア体計算回路と、ガロア体演算回路と、を備える。なお、ここでは、Mを誤り数期待値を増加させる数に合わせ、M=Aとする。 In the present embodiment, the error locator polynomial calculation unit 262 includes M Galois field calculation circuits that match the average number of errors, and a Galois field calculation circuit. Here, M is set to M = A in accordance with the number that increases the expected number of errors.
誤り位置多項式演算部262では、シンドローム記憶部へ格納されたシンドロームを用いて、例えば、ガロア体計算回路が、多項式x0z0,x1z1,…に定数を乗算するようなガロア体の乗算等の演算を各項ごとに各々行い、演算結果をメモリ上に保持し、多項式の全ての項の計算が終わっていない場合には、残りの項の演算をガロア体計算回路の個数単位で計算をする。 The error position polynomial arithmetic unit 262 uses, for example, a Galois field calculation circuit in which a Galois field calculation circuit multiplies a polynomial x 0 z 0 , x 1 z 1 ,... By a constant using the syndrome stored in the syndrome storage unit. Operations such as multiplication are performed for each term, and the result of the operation is stored in the memory. If all the terms of the polynomial have not been calculated, the remaining terms are calculated in units of the number of Galois field calculation circuits. Calculate.
なお、誤り位置多項式は、ユークリッド互除法やBM法等の計算アルゴリズムによって計算方法が異なるため具体的な計算方法については省略するが、いずれの場合もM個のガロア体計算回路を用いて、誤り数期待値Xビットに対応する多項式の計算を時分割で実行し、係数σを導出する。 Note that the calculation method of the error locator polynomial is different depending on the calculation algorithm such as the Euclidean algorithm or the BM method, and therefore a specific calculation method is omitted. In any case, the error position polynomial is calculated by using M Galois field calculation circuits. The calculation of the polynomial corresponding to the number expected value X bits is executed in a time-sharing manner to derive the coefficient σ.
図11は、誤り位置多項式演算の一例を示すフローチャートである。誤り位置多項式演算部262は、シンドローム計算部261からシンドロームの計算結果を取得すると、誤り多項式の項数iを1に設定する(ステップS61)。そして、σ(z)や評価式等の計算を行う(ステップS62)。ステップS62の演算内容は、ユークリッド互除法やBM法等の計算アルゴリズムに依存するが、一般にはガロア体計算回路を、誤り位置多項式の項の数であるi個備えて演算を行う。そして、ガロア体計算回路の結果に基づいてガロア体演算回路により、評価式の計算等を実施する。本実施の形態では、ガロア体計算回路の個数をM(=A)としているため、iがMより大きい場合には、時分割で計算を行う。
FIG. 11 is a flowchart illustrating an example of the error position polynomial calculation. When the error position polynomial calculation unit 262 acquires the calculation result of the syndrome from the
図12は、ステップS62の計算手順の一例を示すフローチャートである。まず、復号制御部265は、A個のガロア体計算回路の係数を指定し(ステップS65)、演算を実行する(ステップS66)。そして、演算により求めた計算結果を復号制御部265へ出力する(ステップS67)。復号制御部265は、i個の多項式の全ての項を計算したか否かを判断し(ステップS68)、計算した場合(ステップS68 Yes)処理を終了して、図11のステップS63へ進む。i個の多項式のうち計算していない項がある場合(ステップS68 No)、ステップS65へ戻り残りの項を計算する。
FIG. 12 is a flowchart illustrating an example of the calculation procedure of step S62. First, the
図11の説明に戻り、ステップS62の演算の後、復号制御部265は、i=Xであるか否かを判断する(ステップS63)。i=Xの場合(ステップS63 Yes)は、処理を終了して、図9のステップS35へ進む。i=Xでない場合(ステップS63 No)は、i=i+1とし(ステップS64)、ステップS62へ戻る。なお、上述の例では、M=AとしてA個ずつの演算を行っているが、M=Aでない場合には、M個ずつの演算を行えばよい。また、実際の誤り数iがXよりも少ないことがステップS62の評価式の結果により判明した場合などにはi=Xになっていなくても終了する動作を行ってよい。
Returning to the description of FIG. 11, after the calculation of step S62, the
次に、誤り位置多項式演算部262は、演算結果に基づいて、誤り位置多項式演算におけるエラーを検出したか否かを判断し、エラーを検出した場合は復号制御部265へ通知する(ステップS35)。例えば、評価関数を用いて導出した係数σが正しいかどうかを判断する計算アルゴリズムでは、評価関数を計算した結果が正しいかどうかで判断する。なお、評価関数が定義されない誤り位置多項式の計算アルゴリズムを用いる場合等には、ステップS35を行わなくてもよい。
Next, the error locator polynomial calculation unit 262 determines whether an error in the error locator polynomial calculation is detected based on the calculation result, and notifies the
エラーを検出しなかった場合(ステップS35 No)、復号制御部265は、チェンサーチ部263の乗算器71−1〜71−Lに誤り位置多項式の計算で導出した係数σを設定し、チェンサーチ部263は係数σから誤り位置の特定を実施する(ステップS36)。本実施の形態のチェンサーチ部263は、第1の実施の形態のチェンサーチ部263と同様の構成であり、演算器71−1〜71−Lと、加算器72と、レジスタ73と、を備える。なお、Lは1以上の整数であれば良いが、シンドロームや誤り位置多項式の演算器の決定方法と同じ理由で、ここではL=Aとする。
When no error is detected (No in step S35), the
本実施の形態のチェンサーチの計算手順は、第1の実施の形態と同様であるが、L=Aとした場合、1サイクル目の計算では、誤り位置多項式の項の数はL個以下となるため、第1の実施の形態のY≦Lの場合の動作が実行される。2サイクル目の計算では、L≦Y≦2Lの動作(図7)が実行され、3サイクル目以上では2L<Yの動作(図8)が実行される。 The calculation procedure of the chain search of this embodiment is the same as that of the first embodiment. However, when L = A, the number of terms of the error locator polynomial is L or less in the calculation of the first cycle. Therefore, the operation in the case of Y ≦ L in the first embodiment is executed. In the calculation in the second cycle, the operation of L ≦ Y ≦ 2L (FIG. 7) is executed, and in the third cycle or more, the operation of 2L <Y (FIG. 8) is executed.
図9の説明に戻り、チェンサーチの終了後、誤り位置多項式の計算で導出した多項式の項の数とチェンサーチにより導出した誤りロケータの数とが不一致であるか否かを判断する(ステップS37)。解の個数が一致した場合(ステップS37 No)、復号制御部265は、誤り位置が誤り訂正対象として設定されている範囲外であるか否かを判断する(ステップS38)。誤り位置が誤り訂正対象として設定されている範囲外でないと判断した場合(ステップS38 No)、復号制御部265は、誤りロケータが指す誤り位置のビットを実際に反転し、誤り検出符号デコーダ264へ誤り検出処理の開始を指示し、誤り検出符号デコーダ264は誤り検出処理(CRC計算)を実施する(ステップS39)。具体的には、誤り検出符号デコーダ264は、誤り訂正後のデータおよび対応するCRCを用いて誤り訂正後のデータに誤りがあるか否かを判定する。
Returning to the explanation of FIG. 9, after the end of the chain search, it is determined whether or not the number of polynomial terms derived by calculation of the error position polynomial and the number of error locators derived by the chain search are inconsistent (step S37). ). When the number of solutions matches (No in step S37), the
誤り検出処理の実施後、復号制御部265は、誤り検出符号デコーダ264が実施した誤り検出処理の結果に誤りが無いか否かに基づいて、正しく誤り訂正ができたか否かを判断する(ステップS40)。正しく誤り訂正ができたと判断した場合(ステップS40 Yes)、処理を終了する。
After performing the error detection process, the
一方、ステップS35でエラーを検出した場合(ステップS35 Yes)、ステップS37で解の個数が不一致であると判断した場合(ステップS37 Yes)、ステップS38で誤り位置が誤り訂正対象として設定されている範囲外であると判断した場合(ステップS38 Yes)には、復号制御部265は、誤り数期待値が最大値(すなわちX=T)であるか否かを判断する(ステップS41)。誤り数期待値が最大値である場合(ステップS41 Yes)は、復号制御部265は、誤り訂正不可と判定して処理を終了する。誤り数期待値が最大値でない場合(ステップS41 No)は、ステップS31へ戻る。ステップS41を経由してステップS31へ戻ると、次のサイクルの処理が開始される。
On the other hand, if an error is detected in step S35 (step S35 Yes), or if it is determined in step S37 that the number of solutions does not match (step S37 Yes), the error position is set as an error correction target in step S38. If it is determined that the value is out of the range (Yes in step S38), the
以上の処理により、最大訂正ビット数に対応した演算回路や演算器を備えなくても、復号処理を行うことができる。また、例えば、最大訂正ビット数を20ビットとし、A=4とした場合に、実際の誤りの発生数が4ビット以下であれば、1サイクル目で計算が終了することになり、処理速度が向上する。 With the above process, the decoding process can be performed without an arithmetic circuit or arithmetic unit corresponding to the maximum number of correction bits. Also, for example, when the maximum number of correction bits is 20 bits and A = 4, if the actual number of error occurrences is 4 bits or less, the calculation ends in the first cycle, and the processing speed is improves.
以上述べた誤り数期待値の更新方法は一例であり、例えば、処理の開始後、最初のステップS1ではX=A´(A´<A)と設定して、以降はXにAを加算していく方法等、サイクルごとに誤り数期待値を増やしていく方法であればどのような方法でもよい。 The method for updating the expected number of errors described above is an example. For example, after the start of processing, X = A ′ (A ′ <A) is set in the first step S1, and thereafter A is added to X. Any method may be used as long as it is a method for increasing the expected number of errors for each cycle, such as a method for performing the same.
また、シンドローム計算部261、誤り位置多項式演算部262およびチェンサーチ部263が備える各演算器の個数N,M,Lはそれぞれ異なる値であってもよく、N/2(すなわちシンドローム計算部261が対応可能な訂正ビット数),M,Lのうち少なくとも1つがT未満の数であればよい。すなわちN/2,M,Lのうちの最小値をJとするとき、JがT未満であればよい。
In addition, the numbers N, M, and L of the arithmetic units included in the
以上のように、本実施の形態では、チェンサーチ部263だけでなく、シンドローム計算部261、誤り位置多項式演算部262についても最大訂正ビット数より小さいビット数に対応する演算回路を用いて、Aビット単位で想定誤り数を更新しつつ復号処理を実施するようにした。そして、正しく誤り訂正ができたか、または誤り数期待値を最大訂正ビット数として設定するまで、誤り数期待値を更新して復号処理を繰り返すようにした。このため、復号化部の回路を最大訂正ビット数分の演算回路を備える場合に比べて大幅に削減することができる。また、平均的な復号処理の速度を向上させることができる。
As described above, according to the present embodiment, not only the
(第3の実施の形態)
図13は、第3の実施の形態にかかるチェンサーチ部263aの構成例を示すブロック図である。本実施の形態の半導体記憶装置は、第1の実施の形態のチェンサーチ部263をチェンサーチ部263aに替える以外は第1の実施の形態の半導体記憶装置1の構成と同様である。第1の実施の形態と同様の機能を有する構成要素は、第1の実施の形態と同一の符号を付して重複する説明を省略する。
(Third embodiment)
FIG. 13 is a block diagram illustrating a configuration example of a
本実施の形態のチェンサーチ部263aは、第1演算部400と、第2演算部410と、加算器(加算部)401と、を備える。本実施の形態の半導体メモリ部3への書き込み動作、チェンサーチ以外の復号処理を含む半導体メモリ部3からの読み出し時の動作は、第1の実施の形態または第2の実施の形態と同様である。
The
図13に示すように、第1演算部400は、演算器401−1〜401−Lと加算器404を備える。演算器401−i(i=1,2,…,L)は、レジスタ402と、αi倍の乗算を行う乗算器403−iと、を備える。第2演算部410は、演算器411−1〜411−Lと加算器418を備える。演算器411−i(i=1,2,…,L)は、初期値算出回路(init)412と、セレクタ413と、レジスタ414と、セレクタ415と、αi倍の乗算を行う乗算器416−iと、αL倍の乗算を行う乗算器417と、を備える。
As illustrated in FIG. 13, the first calculation unit 400 includes calculation units 401-1 to 401 -L and an
本実施の形態では、誤り位置多項式演算により求めた項の数(誤りビット数)YがL以下である場合には、第1演算部400と、第2演算部410と、が解の検索対象範囲をそれぞれ異なる範囲として設定して演算(以下、並列演算という)を行う。一方、YがLより大きい場合には、第1演算部400と第2演算部410との両方を用いて解の全検索対象範囲について演算(以下、直列演算という)を行う。復号制御部265は、誤り位置多項式演算により求めた項の数に応じて並列演算と直列演算のどちらの動作を行うかを決定し、決定結果に基づいて第1演算部400および第2演算部410のセレクタ等を制御する。
In the present embodiment, when the number of terms (number of error bits) Y obtained by the error position polynomial calculation is L or less, the first calculation unit 400 and the
図14は、本実施の形態の並列演算の概念を示す図である。解の検索する全範囲301に対して、上段に示すように、誤りビット数がLより大きい場合には、第1演算部400と第2演算部410は、全範囲301を検索対象範囲302としてチェンサーチを実施する。これに対し下段に示すように、誤りビット数がL以下の場合には、全範囲301を分割範囲303,304の2つに分割する。そして、第1演算部400の解の検索対象を分割範囲303とし、第2演算部410の解の検索対象を分割範囲304とする。この際、第2演算部410の計算開始(初期値)は、全範囲301の開始位置ではなく、分割範囲304の開始位置となる。このため、第2演算部410は、初期値を算出するための初期値算出回路412を備える。符号語WのW/2の位置から検索を開始するとした場合、演算器411−1の初期値算出回路412はσ1*(α^1)^(W/2)を計算する。同様に演算器411−Lの初期値算出回路412はσL*(α^L)^(W/2)を計算する。
FIG. 14 is a diagram illustrating the concept of parallel computation according to the present embodiment. When the number of error bits is larger than L with respect to the
第1演算部400の動作は、誤りビット数がL以下の場合もLより大きい場合も同じである。誤りビット数がL以上の場合は400−1〜400−Lを用いて演算を実施し、誤りビット数YがLより小さい場合には400−1〜400−Yを用いて演算を実施する。具体的には、復号制御部265によりレジスタ402に誤り位置多項式演算により求められた係数が格納され、乗算器403−1〜403−Lによる演算が実施され、加算器404がこの演算結果を加算する。誤りビット数がL以下の場合、加算器404の加算結果A1と後述の加算結果A2を用いて復号制御部265が、各ビットに誤りがあるか否かを判定する。誤りビット数がLより大きい場合、加算器404の加算結果は加算器401に入力され、加算器401が加算器404からの入力と加算器418からの入力とを加算した結果A3を出力する。この場合、復号制御部265は、A3を用いて各ビットに誤りがあるか否かを判定する。
The operation of the first arithmetic unit 400 is the same when the number of error bits is less than or equal to L and greater than L. When the number of error bits is L or more, the calculation is performed using 400-1 to 400-L, and when the number of error bits Y is smaller than L, the calculation is performed using 400-1 to 400-Y. Specifically, the coefficient obtained by the error position polynomial calculation is stored in the
第2演算部410の動作は、誤りビット数がL以下の場合とLより大きい場合とで異なる。まず、誤りビット数YがLより大きい場合について説明する。400−i(i=1,2,…,Y−L)のセレクタ413は、復号制御部265の制御により、入力元として誤り位置多項式の係数(σL+1,…,σY)を選択し、入力された係数をレジスタ414に格納する。レジスタ414に格納された係数は乗算器417に入力され、乗算器417がαL倍の演算を実施する。セレクタ415は、入力元として乗算器417を選択し、乗算器417の演算結果が416−i(i=1,2,…,Y−L)に入力される。そして、416−i(i=1,2,…,Y−L)がαi倍の演算を行う。加算器418は、416−1〜416−(Y−L)の演算結果を加算し、加算結果A2を加算器401へ入力する。加算器401は、上述のとおり、加算器401が加算器404からの入力と加算器418からの入力とを加算した結果A3を出力する。復号制御部265は、A3を用いて各ビットに誤りがあるか否かを判定する。
The operation of the second
誤りビット数がL以下の場合、復号制御部265は、初期値算出回路412に対応する誤り位置多項式の係数(σ1,…,σY)をそれぞれ入力する。また、復号制御部265の制御により、セレクタ413は、入力元として初期値算出回路412を選択し、初期値算出回路412により算出された初期値がレジスタ414に格納される。セレクタ415は、入力元としてレジスタ414を選択し、レジスタ414に格納されたデータが416−i(i=1,2,…,Y−L)に入力される。そして、416−i(i=1,2,…,Y−L)がαi倍の演算を行う。加算器418は、416−1〜416−(Y−L)の演算結果を加算し、加算結果A2を求める。復号制御部265は、加算結果A1と加算結果A2を用いて各ビットに誤りがあるか否かを判定する。
When the number of error bits is less than or equal to L, the
なお、本実施の形態では、解の検索範囲を2分割する例を説明したが、演算部を3つ以上備え、解の検索範囲を3つ以上に分割するようにしてもよい。 In this embodiment, the example in which the solution search range is divided into two parts has been described. However, three or more calculation units may be provided, and the solution search range may be divided into three or more.
このように、本実施の形態では、第1演算部400と第2演算部410を備え、誤りビット数が、第1演算部400が備える演算器の個数より多い場合は、αL倍の演算を実施する乗算器417を備える第2演算部410によりL+1番目以降の項を計算する。一方、誤りビット数が、第1演算部400が備える演算器の個数以下の場合は、解の検索範囲を分割して、第1演算部400と第2演算部410により異なる範囲を検索するようにした。このため、第1演算部400と第2演算部410が備える合計の演算器の個数までの誤りビット数に対応できるとともに、誤りビット数が少ない場合には並列演算を実施することができ、演算速度を向上させることができる。
As described above, in the present embodiment, the first arithmetic unit 400 and the second
(第4の実施の形態)
図15は、第4の実施の形態にかかるチェンサーチ部263bの構成例を示すブロック図である。本実施の形態の半導体記憶装置は、第1の実施の形態のチェンサーチ部263をチェンサーチ部263bに替える以外は第1の実施の形態の半導体記憶装置1の構成と同様である。第1の実施の形態と同様の機能を有する構成要素は、第1の実施の形態と同一の符号を付して重複する説明を省略する。
(Fourth embodiment)
FIG. 15 is a block diagram illustrating a configuration example of a
本実施の形態のチェンサーチ部263bは、第1演算部400aと、第2演算部410aと、加算器401と、を備える。本実施の形態の半導体メモリ部3への書き込み動作、チェンサーチ以外の復号処理を含む半導体メモリ部3からの読み出し時の動作は、第1の実施の形態または第2の実施の形態と同様である。
The
本実施の形態では、第3の実施の形態と同様に、誤り位置多項式演算により求めた項の数Yに応じて第1演算部400aと第2演算部410aを用いて直列または並列に用いることにより、誤りビット数の多い場合に対応しつつ誤りビット数の少ない場合には高速な処理を実現する。
In the present embodiment, as in the third embodiment, the first
第1演算部400aは、第1の実施の形態と同様の演算器71−1〜71−Lと、加算器72と、レジスタ73と、を備える。第2演算部410aは、演算器500−1〜500−Lと、加算器72と、レジスタ73と、を備える。演算器500−i(i=1,2,…,L)は、α2L倍の乗算を行う乗算器717と、乗算器716の出力と乗算器717の出力といずれか一方を選択してセレクタ712に出力するセレクタ718と、第3の実施の形態と同様の初期値算出回路412およびセレクタ413と、を追加する以外は、演算器71−iと同様である。
The
本実施の形態では、誤り位置多項式演算により求めた項の数が2L以下である場合には、第1演算部400aと、第2演算部410aと、が解の検索対象範囲をそれぞれ異なる範囲として設定して演算を行う。一方、Yが2Lより大きい場合には、第1演算部400aと第2演算部410aとの両方を用いてチェンサーチを行う。
In the present embodiment, when the number of terms obtained by the error locator polynomial calculation is 2L or less, the
第1演算部400aの演算器71−1〜71−L、第2演算部410aの演算器500−1〜500−Lは、誤り位置多項式演算により求めた項の数YがL以下である場合、第1の実施の形態のYがL以下である場合と同様の動作を並列して行う。また、誤り位置多項式演算により求めた項の数YがLより大きい場合、第1の実施の形態のL<Y≦2Lである場合と同様の動作を行う。この際、第2演算部410aの演算器500−1〜500−Lでは、セレクタ718は、乗算器716の出力を選択してセレクタ712へ出力する。
When the arithmetic units 71-1 to 71-L of the first
2L<Yの場合、第1演算部400aの演算器71−1〜71−Lの動作はY=2Lの場合と同様である。2L<Yの場合、第2演算部410aの演算器500−1〜500−Lは、乗算器716の替わりに乗算器717を用いて(セレクタ718が乗算器717を選択して)、第1の実施の形態のL<Y≦2Lである場合と同様の動作を行うことにより、α2L+1〜α3L倍の乗算をそれぞれ行うことができる。また、乗算器717を用いた乗算の次のサイクルで乗算器716を用いた乗算を行うことでα3L+1〜α4L倍の乗算を行うことができる。復号制御部265は、第1演算部400aから出力される加算結果A1と第2演算部410aから出力される加算結果A2の加算結果A3を用いて各ビットに誤りがあるか否かを判定する。
When 2L <Y, the operations of the computing units 71-1 to 71-L of the
なお、Y>4Lの場合も、第2演算部410aの演算器500−1〜500−Lにおいて、乗算器716または乗算器717を用いて、繰り返し乗算を行う演算を行うことにより対応することができる。
It should be noted that the case where Y> 4L can be dealt with by performing an operation that repeatedly performs multiplication using the
誤り位置多項式演算により求めた項の数が2L以下の場合、第1演算部400aと第2演算部410aを用いて第3の実施の形態と同様に並列演算を実施する。この場合、演算器500−i(i=1,2,…,L)は、セレクタ413が、入力元として初期値算出回路412を選択し、レジスタ715に初期値算出回路412から出力される初期値を格納する。そして、セレクタ712が、レジスタ715から読み出した値を選択して乗算器713−iに入力する。復号制御部265は、加算結果A1と加算結果A2を用いて各ビットに誤りがあるか否かを判定する。
When the number of terms obtained by error position polynomial computation is 2L or less, parallel computation is performed using the
また、演算部を3つ以上備えて、並列演算時に検索範囲を3つ以上に分割するようにしてもよい。この場合、例えば、3つめの演算部は、乗算器716とα3L倍の乗算を行う乗算器とを備え、並列演算時には、乗算器716を用い、直列演算時にはα3L倍の乗算を行う乗算器を用いる。
Further, three or more calculation units may be provided, and the search range may be divided into three or more during parallel calculation. In this case, for example, the third arithmetic unit includes a
なお、以上の例では、第2演算器410aでは、α2L倍の乗算を行う乗算器717を用いてα2L倍の乗算を行っているが、乗算器717を備えずに、第1の実施の形態で述べたようにαL倍の乗算を行う乗算器716とレジスタ714を用いてα2L倍の乗算を行うようにしてもよい。
In the above example, the
このように、本実施の形態では、第1の実施の形態と同様の演算器を用いて、誤り位置多項式演算により求めた項の数に応じて直列演算または並列演算を行うようにした。このため、誤りビット数が多い場合に対応できるとともに、誤りビット数が少ない場合には並列演算を実施することができ、演算速度を向上させることができる。 As described above, in this embodiment, the same arithmetic unit as that in the first embodiment is used to perform serial calculation or parallel calculation according to the number of terms obtained by error position polynomial calculation. For this reason, it is possible to cope with a case where the number of error bits is large, and when the number of error bits is small, a parallel operation can be performed, and an operation speed can be improved.
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。 Although several embodiments of the present invention have been described, these embodiments are presented by way of example and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other forms, and various omissions, replacements, and changes can be made without departing from the scope of the invention. These embodiments and modifications thereof are included in the scope and gist of the invention, and are included in the invention described in the claims and the equivalents thereof.
1 半導体記憶装置、2 メモリコントローラ、3 半導体メモリ部、24 符号化/復号化処理部、25 符号化部、26 復号化部、251 誤り検出符号エンコーダ、252 誤り訂正符号エンコーダ、261 シンドローム計算部 、262 誤り位置多項式演算部、263 チェンサーチ部、264 誤り検出符号デコーダ、265 復号制御部、71−1〜71−L,401−1〜401−L,411−1〜411−L,500−1〜500−L 演算器、73,402,414,714,715 レジスタ、400,400a 第1演算部、72,401,404 加算器、410,410a 第2演算部、413,711,712 セレクタ、417,403−1〜403−L,416−1〜416−L,713−1〜713−L,716,717 乗算器。
DESCRIPTION OF
Claims (13)
L(Lは1以上の整数)個の演算器と、
前記演算器による演算結果を加算する加算器と、
前記加算器による加算結果を保持する第1のレジスタと、
を備え、
前記L個の演算器のうちのi番目の演算器は、
前記係数が格納される第2のレジスタと、
入力されたデータに対してαi倍の乗算を行った結果を演算結果として前記加算器へ入力し、前記演算結果で前記第2のレジスタの内容を更新する第1の乗算器と、
入力されたデータに対してαK(Kは1以上の整数)倍の乗算を行う第2の乗算器と、
前記第2の乗算器による演算結果を保持する第3のレジスタと、
前記第2のレジスタの内容と前記第2の乗算器による演算結果とのいずれかを選択して前記第1の乗算器へ入力する第1のセレクタと、
前記第2のレジスタの内容と前記第3のレジスタに保持されている演算結果とのいずれかを選択して前記第2の乗算器へ入力する第2のセレクタと、
を備え、
前記加算器は、前記第1のレジスタに加算結果が保持されている場合は、保持されている加算結果と前記演算器による演算結果とを加算する、
ことを特徴とするチェンサーチ回路。 A chain search circuit that performs a chain search based on a coefficient of an error locator polynomial term calculated by an error locator polynomial operation,
L (L is an integer of 1 or more) number of computing units;
An adder for adding the calculation results by the calculator;
A first register holding an addition result by the adder;
With
The i th computing unit among the L computing units is:
A second register in which the coefficient is stored;
A first multiplier that inputs a result obtained by multiplying the input data by α i times to the adder as an operation result, and updates the contents of the second register with the operation result;
A second multiplier that multiplies the input data by α K (K is an integer of 1 or more);
A third register for holding a calculation result by the second multiplier;
A first selector that selects and inputs either the contents of the second register or the operation result of the second multiplier to the first multiplier;
A second selector that selects one of the contents of the second register and the operation result held in the third register and inputs the selected result to the second multiplier;
With
When the addition result is held in the first register, the adder adds the held addition result and the calculation result by the calculator.
A chain search circuit characterized by that.
L個の前記演算器と前記加算器と前記第1のレジスタとを備える第2演算部と、
第1演算部の前記加算器から出力される第1の加算結果と第2演算部の前記加算器から出力される第2の加算結果とを加算する加算部と、
を備え、
前記第2演算部の前記演算器は、
前記第1演算部と異なる検索領域を検索対象とした演算をするための初期値を算出する初期値算出回路と、
前記係数と前記初期値とのいずれか一方を選択して前記第2のレジスタへ入力する第3のセレクタと、
をさらに備え、
前記第3のセレクタは、前記誤り位置多項式演算により得られた誤りビット数に応じて前記係数または前記初期値を選択することを特徴とする請求項1乃至5のいずれか一項に記載のチェンサーチ回路。 A first computing unit comprising L computing units, the adder, and the first register;
A second computing unit comprising L computing units, the adder, and the first register;
An addition unit for adding the first addition result output from the adder of the first calculation unit and the second addition result output from the adder of the second calculation unit;
With
The computing unit of the second computing unit is:
An initial value calculation circuit for calculating an initial value for performing an operation on a search area different from the first calculation unit;
A third selector that selects and inputs either the coefficient or the initial value to the second register;
Further comprising
6. The chain according to claim 1, wherein the third selector selects the coefficient or the initial value in accordance with the number of error bits obtained by the error locator polynomial operation. Search circuit.
前記誤り位置多項式演算により得られた誤りビット数がLより大きい場合に、前記第3のセレクタは前記初期値を選択し、前記加算部は第1演算部の前記加算器から出力される第1の加算結果と第2演算部の前記加算器から出力される第2の加算結果とを加算することを特徴とする請求項6または7に記載のチェンサーチ回路。 The third selector selects the coefficient when the number of error bits obtained by the error locator polynomial calculation is L or less;
When the number of error bits obtained by the error locator polynomial calculation is greater than L, the third selector selects the initial value, and the adder outputs the first output from the adder of the first calculator. The chain search circuit according to claim 6, wherein the addition result is added to the second addition result output from the adder of the second arithmetic unit.
前記シンドロームに基づいて誤り位置多項式演算を行う誤り位置多項式演算部と、
前記誤り位置多項式演算により算出された誤り位置多項式の項の係数に基づいてチェンサーチを行うチェンサーチ部と、
前記シンドローム計算部、前記誤り位置多項式演算および前記チェンサーチ部を制御し、前記チェンサーチの結果に基づいて誤り訂正処理を行う復号制御部と、
を備え、
前記チェンサーチ部は、
L(Lは1以上の整数)個の演算器と、
前記演算器による演算結果を加算する加算器と、
前記加算器による加算結果を保持する第1のレジスタと、
を備え、
前記L個の演算器のうちのi番目の演算器は、
前記係数が格納される第2のレジスタと、
入力されたデータに対してαi倍の乗算を行った結果を演算結果として前記加算器へ入力し、前記演算結果で前記第2のレジスタの内容を更新する第1の乗算器と、
入力されたデータに対してαK(Kは1以上の整数)倍の乗算を行う第2の乗算器と、
前記第2の乗算器による演算結果を保持する第3のレジスタと、
前記第2のレジスタの内容と前記第2の乗算器による演算結果とのいずれかを選択して前記第1の乗算器へ入力する第1のセレクタと、
前記第2のレジスタの内容と前記第3のレジスタに保持されている演算結果とのいずれかを選択して前記第2の乗算器へ入力する第2のセレクタと、
を備え、
前記加算器は、前記第1のレジスタに加算結果が保持されている場合は、保持されている加算結果と前記演算器による演算結果とを加算する、
ことを特徴とする復号器。 A syndrome calculation unit for calculating a syndrome based on the error correction encoded codeword;
An error locator polynomial calculation unit for performing an error locator polynomial calculation based on the syndrome;
A chain search unit that performs a chain search based on the coefficient of the term of the error locator polynomial calculated by the error locator polynomial calculation;
A control unit for controlling the syndrome calculation unit, the error position polynomial calculation and the chain search unit, and performing an error correction process based on the result of the chain search;
With
The chain search unit
L (L is an integer of 1 or more) number of computing units;
An adder for adding the calculation results by the calculator;
A first register holding an addition result by the adder;
With
The i th computing unit among the L computing units is:
A second register in which the coefficient is stored;
A first multiplier that inputs a result obtained by multiplying the input data by α i times to the adder as an operation result, and updates the contents of the second register with the operation result;
A second multiplier that multiplies the input data by α K (K is an integer of 1 or more);
A third register for holding a calculation result by the second multiplier;
A first selector that selects and inputs either the contents of the second register or the operation result of the second multiplier to the first multiplier;
A second selector that selects one of the contents of the second register and the operation result held in the third register and inputs the selected result to the second multiplier;
With
When the addition result is held in the first register, the adder adds the held addition result and the calculation result by the calculator.
A decoder characterized by that.
をさらに備え、
前記復号制御部は、
Tビット以下である誤り数期待値Xに1以上T未満の整数であるIを代入する第1の処理と、前記誤り数期待値Xまでの前記符号語の誤り訂正処理を実行するよう制御する第2の処理と、前記誤り検出部に対して、前記訂正処理後の前記データおよび前記誤り検出符号の誤りを検出するよう制御する第3の処理と、前記誤り検出部により誤り訂正後の前記データおよび誤り検出符号に誤りが検出されなかった場合は誤り訂正処理を終了し、誤りが検出された場合は前記誤り数期待値Xに1以上T未満の整数であるAを加える第4の処理と、を実行し、前記第2、3および4の処理を1サイクルとし、前記第4の処理の後に次のサイクルの前記第2、3および4の処理を実行することを、前記誤り検出部により誤りが検出されなくなるまでまたは誤り数期待値がTビットとなるまで繰り返すことを特徴とする復号器。 The codeword is error-correction encoded with a maximum correction capability of T bits based on data and an error detection code corresponding to the data, and the data corrected by the error correction process and the error detection code are An error detection unit for detecting an error in the data after error correction based on
Further comprising
The decoding control unit
Control is performed so as to execute a first process of substituting I, which is an integer less than or equal to 1 and less than T, for an error number expectation value X of T bits or less and an error correction process for the codeword up to the error number expectation value X A second process, a third process for controlling the error detection unit to detect the error of the data after the correction process and the error detection code, and the error correction unit by the error detection unit When no error is detected in the data and the error detection code, the error correction process is terminated, and when an error is detected, a fourth process of adding A which is an integer less than or equal to 1 and less than T to the expected number of errors X And the second, third and fourth processes are defined as one cycle, and the second, third and fourth processes of the next cycle are executed after the fourth process. Until no errors are detected by Decoder and repeating until the error number expected value is T bits.
前記符号語を記憶するメモリ部と、
前記メモリ部から読み出された符号語に基づいてシンドロームを計算するシンドローム計算部と、
前記シンドロームに基づいて誤り位置多項式演算を行う誤り位置多項式演算部と、
前記誤り位置多項式演算により算出された誤り位置多項式の項の係数に基づいてチェンサーチを行うチェンサーチ部と、
前記チェンサーチの結果に基づいて誤り訂正を行う復号制御部と、
を備え、
前記チェンサーチ部は、
L(Lは1以上の整数)個の演算器と、
前記演算器による演算結果を加算する加算器と、
前記加算器による加算結果を保持する第1のレジスタと、
を備え、
前記L個の演算器のうちのi番目の演算器は、
前記係数が格納される第2のレジスタと、
入力されたデータに対してαi倍の乗算を行った結果を演算結果として前記加算器へ入力し、前記演算結果で前記第2のレジスタの内容を更新する第1の乗算器と、
入力されたデータに対してαK(Kは1以上の整数)倍の乗算を行う第2の乗算器と、
前記第2の乗算器による演算結果を保持する第3のレジスタと、
前記第2のレジスタの内容と前記第2の乗算器による演算結果とのいずれかを選択して前記第1の乗算器へ入力する第1のセレクタと、
前記第2のレジスタの内容と前記第3のレジスタに保持されている演算結果とのいずれかを選択して前記第2の乗算器へ入力する第2のセレクタと、
を備え、
前記加算器は、前記第1のレジスタに加算結果が保持されている場合は、保持されている加算結果と前記演算器による演算結果とを加算する、
ことを特徴とする記憶装置。 An encoding unit that performs error correction encoding processing to generate a codeword;
A memory unit for storing the codeword;
A syndrome calculation unit that calculates a syndrome based on a codeword read from the memory unit;
An error locator polynomial calculation unit for performing an error locator polynomial calculation based on the syndrome;
A chain search unit that performs a chain search based on the coefficient of the term of the error locator polynomial calculated by the error locator polynomial calculation;
A decoding control unit that performs error correction based on the result of the chain search;
With
The chain search unit
L (L is an integer of 1 or more) number of computing units;
An adder for adding the calculation results by the calculator;
A first register holding an addition result by the adder;
With
The i th computing unit among the L computing units is:
A second register in which the coefficient is stored;
A first multiplier that inputs a result obtained by multiplying the input data by α i times to the adder as an operation result, and updates the contents of the second register with the operation result;
A second multiplier that multiplies the input data by α K (K is an integer of 1 or more);
A third register for holding a calculation result by the second multiplier;
A first selector that selects and inputs either the contents of the second register or the operation result of the second multiplier to the first multiplier;
A second selector that selects one of the contents of the second register and the operation result held in the third register and inputs the selected result to the second multiplier;
With
When the addition result is held in the first register, the adder adds the held addition result and the calculation result by the calculator.
A storage device.
前記チェンサーチ回路は、
L(Lは1以上の整数)個の演算器と、
前記演算器による演算結果を加算する加算器と、
前記加算器による加算結果を保持する第1のレジスタと、
を備え、
前記L個の演算器のうちのi番目の演算器が、前記係数を第2のレジスタに格納するステップと、
前記L個の演算器のうちのi番目の演算器が、入力データに対してαi倍の乗算を行った結果を演算結果として前記加算器へ入力し、前記演算結果で前記第2のレジスタの内容を更新するステップと、
前記L個の演算器のうちのi番目の演算器が、入力データに対してαK(Kは1以上の整数)倍の乗算を行うステップと、
前記L個の演算器のうちのi番目の演算器が、前記αK倍の乗算の演算結果を第3のレジスタに保持するステップと、
前記L個の演算器のうちのi番目の演算器が、前記第2のレジスタの内容と前記第2の乗算器による演算結果とのいずれかを選択して前記αi倍の乗算への入力データとするステップと、
前記L個の演算器のうちのi番目の演算器が、前記第2のレジスタの内容と前記第3のレジスタに保持されている演算結果とのいずれかを選択して前記αK倍の乗算への入力データとするステップと、
前記加算器が、前記第1のレジスタに加算結果が保持されている場合は、保持されている加算結果と前記演算器による演算結果とを加算するステップと、
を含むことを特徴とするチェンサーチ方法。 A chain search method in a chain search circuit that performs a chain search based on a coefficient of an error position polynomial term calculated by an error position polynomial operation,
The chain search circuit
L (L is an integer of 1 or more) number of computing units;
An adder for adding the calculation results by the calculator;
A first register holding an addition result by the adder;
With
An i-th computing unit among the L computing units stores the coefficient in a second register;
The i-th arithmetic unit among the L arithmetic units inputs the result obtained by multiplying the input data by α i times to the adder as the operation result, and the second register Updating the content of
An i-th computing unit among the L computing units performs multiplication of α K (K is an integer of 1 or more) times on input data;
An i-th arithmetic unit among the L arithmetic units holds a calculation result of the multiplication by α K in a third register;
The i th computing unit among the L computing units selects either the content of the second register or the computation result by the second multiplier and inputs it to the multiplication of α i times. Data step,
The i-th computing unit among the L computing units selects either the content of the second register or the computation result held in the third register and multiplies the α K times. A step for input data to
The adder, when the addition result is held in the first register, adding the held addition result and the operation result by the calculator;
A chain search method comprising:
をさらに含むことを特徴とする請求項12に記載のチェンサーチ方法。 When the number of error bits by the error locator polynomial calculation is greater than 2 × L, the i th computing unit performs the α L times multiplication, and then performs α L times multiplication for a predetermined number of times and further α i times. Inputting the result of multiplication to the adder as an operation result;
The chain search method according to claim 12, further comprising:
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012067276A JP2013201503A (en) | 2012-03-23 | 2012-03-23 | Chien search circuit, decoder, storage device and chien search method |
US13/601,707 US8640013B2 (en) | 2011-09-22 | 2012-08-31 | Storage device |
US14/141,246 US9075739B2 (en) | 2011-09-22 | 2013-12-26 | Storage device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012067276A JP2013201503A (en) | 2012-03-23 | 2012-03-23 | Chien search circuit, decoder, storage device and chien search method |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013201503A true JP2013201503A (en) | 2013-10-03 |
Family
ID=49521410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012067276A Pending JP2013201503A (en) | 2011-09-22 | 2012-03-23 | Chien search circuit, decoder, storage device and chien search method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2013201503A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9413391B2 (en) | 2014-04-18 | 2016-08-09 | Kabushiki Kaisha Toshiba | Chien search device, storage device, and chien search method |
-
2012
- 2012-03-23 JP JP2012067276A patent/JP2013201503A/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9413391B2 (en) | 2014-04-18 | 2016-08-09 | Kabushiki Kaisha Toshiba | Chien search device, storage device, and chien search method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5043562B2 (en) | Error correction circuit, method thereof, and semiconductor memory device including the circuit | |
US9075739B2 (en) | Storage device | |
US9998148B2 (en) | Techniques for low complexity turbo product code decoding | |
JP5768022B2 (en) | Memory controller, storage device, error correction device, and error correction method | |
KR101264061B1 (en) | Error correction mechanisms for flash memories | |
US10187085B2 (en) | Decoding method, decoding apparatus and decoder | |
US20150363263A1 (en) | ECC Encoder Using Partial-Parity Feedback | |
JP2008165808A (en) | Error correction circuit and method for reducing miscorrection probability and semiconductor memory device including the circuit | |
CN110768751B (en) | Decoding method and circuit, memory controller, storage device and controller | |
KR102064508B1 (en) | Ecc circuit and memory device including the same | |
US10291258B2 (en) | Error correcting code for correcting single symbol errors and detecting double bit errors | |
CN110941505A (en) | Method for generating error correction circuit | |
KR101157516B1 (en) | BCH codec with improved data processing efficiency | |
KR101569637B1 (en) | Method and Apparatus for Non-Iterative Soft-Decision BCH Decoding using Test Syndrome | |
JP2013201503A (en) | Chien search circuit, decoder, storage device and chien search method | |
JP2023045450A (en) | Syndrome calculation circuit, error correction circuit, and memory system | |
TW201926354A (en) | Encoder and associated encoding method and flash memory controller | |
JP2013201482A (en) | Chien search circuit, decoder, storage device and chien search method | |
US9608668B2 (en) | Error correcting apparatus, error correcting method, and program | |
JP2013069377A (en) | Decoding method, decoding device and storage device | |
CN111030709A (en) | Decoding method based on BCH decoder, BCH decoder and circuit applying BCH decoder | |
TWI514778B (en) | Method and circuit for shortening latency of chien's search algorithm for bch codewords | |
US11115055B2 (en) | Method and apparatus for encoding and decoding data in memory system | |
KR101791637B1 (en) | Decoder and memory controller including the same | |
US9413391B2 (en) | Chien search device, storage device, and chien search method |