JP6818667B2 - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP6818667B2
JP6818667B2 JP2017180689A JP2017180689A JP6818667B2 JP 6818667 B2 JP6818667 B2 JP 6818667B2 JP 2017180689 A JP2017180689 A JP 2017180689A JP 2017180689 A JP2017180689 A JP 2017180689A JP 6818667 B2 JP6818667 B2 JP 6818667B2
Authority
JP
Japan
Prior art keywords
dimension
chunks
input
encoders
memory
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.)
Active
Application number
JP2017180689A
Other languages
English (en)
Other versions
JP2019057096A (ja
Inventor
大毅 渡邉
大毅 渡邉
與ジェ 林
與ジェ 林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2017180689A priority Critical patent/JP6818667B2/ja
Priority to US15/919,809 priority patent/US11003528B2/en
Publication of JP2019057096A publication Critical patent/JP2019057096A/ja
Application granted granted Critical
Publication of JP6818667B2 publication Critical patent/JP6818667B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6516Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Description

以下の実施形態は、一般的に、メモリシステムに関する。
メモリシステムでは、一般に、記憶するデータを保護するために、誤り訂正符号化されたデータが記憶される。このため、メモリシステムに記憶されたデータを読み出す際には、誤り訂正符号化されたデータに対する復号が行われる。
特開2008−65969号公報 米国特許出願公開第2007/0195894号明細書 特開2004−288283号公報
本発明の一つの実施形態は、スループットを低下させることなく異なる符号率の誤り訂正符号を生成することが可能なメモリシステムを提供することを目的とする。
実施形態によれば、メモリシステムは、不揮発性メモリと、前記不揮発性メモリへの書き込み対象であるユーザデータに含まれる複数のシンボルのうち少なくとも1つのシンボルを情報シンボルとして、第1の成分符号と前記第1の成分符号と異なる第2の成分符号とを含む複数の成分符号を生成する符号化器と、前記複数の成分符号を前記不揮発性メモリへ書き込むメモリインタフェースと、を備えるメモリシステムであって、前記符号化器は、前記複数の成分符号それぞれに対応するパリティを生成する複数の符号化器と、前記ユーザデータの第1シンボル列を前記第1シンボル列よりも短い第1シンボル長の複数のチャンクに分割し、分割された前記複数のチャンクの各々を前記複数の符号化器のうちの少なくとも異なる2つに入力する第1分配部とを備え、前記メモリインタフェースは、前記第1シンボル列及び前記第1シンボルに対応するパリティを前記不揮発性メモリに書き込む。
図1は、データを誤り訂正符号で保護する動作の一般的な流れを説明するための図である。 図2は、2次元の成分符号で構成された積符号の一例を示す図である。 図3は、図2に例示した積符号を生成するように構成された符号化部の一例を示すブロック図である。 図4は、2次元の積符号の他の一例を示す図である。 図5は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。 図6は、第1の実施形態に係る符号化部の概略構成例を示すブロック図である。 図7は、第1の実施形態によって生成される多次元の誤り訂正符号の例であって、次元1の成分符号の数が5で且つ次元2の成分符号の数が2の積符号の例を示す図である。 図8は、第1の実施形態によって生成される多次元の誤り訂正符号の例であって、次元1の成分符号の数が5で且つ次元2の成分符号の数が1の積符号の例を示す図である。 図9は、第1の実施形態によって生成される多次元の誤り訂正符号の例であって、次元1の成分符号の数が5で且つ次元2の成分符号の数が2の積符号の他の例を示す図である。 図10は、第2の実施形態に係る符号化部の概略構成例を示すブロック図である。 図11は、第2の実施形態によって生成される多次元の誤り訂正符号の一例を示す図である。 図12は、第3の実施形態に係る復号部の概略構成例を示すブロック図である。
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
近年、NAND型フラッシュメモリなどの不揮発性メモリを利用したメモリシステムは、その高速性という特長を生かし、様々な場所で用いられている。しかしながら、不揮発性メモリから読み出したデータには、不揮発性メモリに記録されてからの時間経過や読み出し・書き込みの際に生じるノイズ等に起因するエラーが含まれる可能性がある。そのため、一般には、不揮発性メモリに記録するデータに対して誤り訂正符号を用いた符号化処理が実行され、読出し時にはその誤り訂正符号を用いた復号処理が実行されることで、読み出したデータに含まれているエラーが除去される。
図1は、データを誤り訂正符号で保護する動作の一般的な流れを説明するための図である。なお、本説明におけるユーザとは、例えばパーソナルコンピュータ、サーバ装置、ポータブルな情報機器、デジタルスチルカメラ等の情報処理装置(ホストともいう)であってよい。
ユーザ931は、書込み対象のデータ(以下、書込みデータという)をメモリシステム900に対して送信する。メモリシステム900は、ユーザ931から受け取った書込みデータを符号化部941を用いて符号化し、これにより生成された符号化データ(符号語)を不揮発性メモリ920に書き込む。したがって、不揮発性メモリ920に書き込まれる符号化データには、基本的にはエラーが含まれていない。
不揮発性メモリ920に格納されている符号化データは、例えばユーザ932からの読出し要求に応じて読み出される。ここで、読み出された符号化データにはエラーが含まれている可能性がある。そこで、読み出された符号化データに含まれるエラーを復号部942を用いて除去しつつ復号を実行することで、オリジナルの符号化データが復元される。その後、オリジナルの符号化データもしくは復元された符号化前の書き込みデータがユーザ932へ送信される。なお、読出し要求を発行したユーザ932は、書込み要求を発行したユーザ931と同一のユーザであってもよいし、別のユーザであってもよい。
このようなメモリシステムに実装される誤り訂正機能には、積符号などの多次元の誤り訂正符号を適用することができる。ここで、多次元の誤り訂正符号とは、誤り訂正符号の少なくとも一つ以上の構成単位であるシンボルが、複数のより小規模な成分符号によって多重に保護されているものを指す。また、1シンボルは、例えば1ビット(二元体(binary field)の元(element))、又は、二元体以外の有限体(finite field)などのアルファベットの元で構成される。
図2は、2次元の成分符号で構成された積符号の一例を示す図である。図2に示す積符号100では、全てのシンボルが行方向(次元1と称される)および列方向(次元2と称される)の成分符号によって二重に保護されている。なお、多次元の誤り訂正符号としてはこれに限らず、例えば一般化LDPC符号(Generalized Low Density Parity Check Code)などであってもよい。一般化LDPC符号を含む一般の多次元の誤り訂正符号では、シンボルごとに保護の多重度が異なっていてもよく、また、成分符号を次元1と次元2のようにグループ分けすることができないが、このような符号構成に対しても本技術は適用することが可能である。
図2に例示する積符号100は、d00〜d19の20個の情報ビットと、r00〜r41及びc00〜c11の14個のパリティとから構成されている。以下、任意の情報ビットをdと記し、次元1のi番目の成分符号におけるj番目のパリティをrijと記し、次元2のi番目の成分符号におけるj番目のパリティをcijと記す。また、図2に示す積符号100は、5つの次元1の成分符号101〜105と、2つの次元2の成分符号111及び112とを備える。次元1の各成分符号101〜105それぞれは、4つの情報ビットと、2つのパリティを含んでいる。次元2の各成分符号111及び112それぞれは、10個の情報ビットと、2つのパリティとを含んでいる。
図3は、図2に例示した積符号を生成するように構成された符号化部の一例を示すブロック図である。図3に示すように、符号化部941は、積符号100を効率的に符号化するために、1サイクルにユーザデータにおける4つの情報ビットを入力し、入力された4つの情報ビットに対して、次元1方向の符号化及び次元2方向の符号化を同時に実行するように構成されている。1サイクルごとにユーザ931から入力された4つの情報ビットは、入力ビット毎に用意された4つのバッファ901〜904に一時保持された後、次元1符号化器911と2つの次元2符号化器921及び922とにそれぞれ入力される。その際、4つの情報ビットのうち前半の2つは次元2符号化器921に入力され、後半の2つは次元2符号化器922に入力される。
次元1符号化器911は、c番目のサイクルでは、c番目の次元1の成分符号のパリティを生成して出力する。2つの次元2符号化器921及び922は、全ての情報ビットが入力された後に、次元2の成分符号に対するパリティをそれぞれ生成する。次元1符号化器911で生成された次元1のパリティと、次元2符号化器921及び922で生成されたパリティとは、ユーザ931から入力されたユーザデータと連接される。これにより、符号語(符号化データ)が生成される。生成された符号語は、不揮発性メモリ920に書き込まれる。
このような構成において、バッファと次元2符号化器とを結ぶ配線の数は、各次元の成分符号の数に依存する。したがって、成分符号の数を変更して多次元の誤り訂正符号の符号化率を変更するには、バッファと次元2符号化器とを結ぶ配線を変更する必要がある。これは、符号化率を変更するには、異なる符号化部を用いなければならないことを意味しており、符号化部の汎用性を妨げる要因となっていた。
また、図3に示す符号化部941を異なる構造の誤り訂正符号に適用した場合、スループットが低下してしまう場合がある。図4は、2次元の積符号の他の一例を示す図である。図4に示す積符号200は、d00〜d09の10個の情報ビットと、r00〜r41及びc00〜c01の12個のパリティと、10個のダミービット(0ビット)から構成されている。また、積符号200は、5つの次元1の成分符号201〜205と、1つの次元2の成分符号211とを備える。次元1の各成分符号201〜205それぞれは、2つの情報ビットと、2つのダミービットと、2つのパリティを含んでいる。次元2の各成分符号211は、10個の情報ビットと、2つのパリティを含んでいる。
図4に例示するように、2列に並んだ情報ビットの右側に2列のダミービットを埋め込むことで、図2に例示した積符号100と同様に、図3に示す符号化部941を用いて積符号200を符号化することが可能である。しかしながら、この場合、1サイクルに符号化部941に入力される情報ビットの数が、図2に例示する積符号100の場合の半分(2ビット)となるため、符号化部941のスループットが半分に低下してしまう。このように、同一の符号化部を用いて異なる符号化率の符号化を実行するとスループットが低下してしまう場合がある。
そこで、以下の実施形態では、スループットを低下させることなく異なる符号化率の符号化が可能なメモリシステムについて、例を挙げて説明する。なお、以下の実施形態では、誤り訂正符号として、2次元の積符号を例示するが、これに限定されず、上述したような誤り訂正符号の少なくとも一つ以上の構成単位であるシンボルが複数のより小規模な成分符号によって多重に保護される多次元の誤り訂正符号を用いることが可能である。
(第1の実施形態)
まず、第1の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。図5は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。図5に示すように、メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とを備える。メモリシステム1は、ホスト30と接続可能であり、図5ではホスト30と接続された状態が示されている。ホスト30は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
不揮発性メモリ20は、データを不揮発に記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリ(以下、単にNANDメモリという)である。以下の説明では、不揮発性メモリ20としてNANDメモリが用いられた場合を例示するが、不揮発性メモリ20として3次元構造フラッシュメモリ、ReRAM(Resistance Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)等のNANDメモリ以外の記憶装置を用いることも可能である。また、不揮発性メモリ20が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とが1つのパッケージとして構成されるメモリカード等であってもよいし、SSD(Solid State Drive)等であってもよい。
メモリコントローラ10は、ホスト30からの書込み要求に従って不揮発性メモリ20への書込みを制御する。また、ホスト30からの読出し要求に従って不揮発性メモリ20からの読み出しを制御する。メモリコントローラ10は、ホストI/F(ホストインタフェース)15、メモリI/F(メモリインタフェース)13、制御部11、符号化/復号部(コーデック)14およびデータバッファ12を備える。ホストI/F15、メモリI/F13、制御部11、符号化/復号部14およびデータバッファ12は、内部バス16で相互に接続されている。
ホストI/F15は、ホスト30との間のインタフェース規格に従った処理を実施し、ホスト30から受信した命令、書込み対象のユーザデータなどを内部バス16に出力する。また、ホストI/F15は、不揮発性メモリ20から読み出されて復元されたユーザデータ、制御部11からの応答などをホスト30へ送信する。
メモリI/F13は、制御部11の指示に基づいて、不揮発性メモリ20への書込み処理を行う。また、メモリI/F13は、制御部11の指示に基づいて、不揮発性メモリ20からの読み出し処理を行う。
制御部11は、メモリシステム1の各構成要素を統括的に制御する。制御部11は、ホスト30からホストI/F15経由で命令を受けた場合に、その命令に従った制御を行う。例えば、制御部11は、ホスト30からの命令に従って、不揮発性メモリ20へのユーザデータおよびパリティの書き込みをメモリI/F13へ指示する。また、制御部11は、ホスト30からの命令に従って、不揮発性メモリ20からのユーザデータおよびパリティの読み出しをメモリI/F13へ指示する。
また、制御部11は、ホスト30から書込み要求を受信した場合、データバッファ12に蓄積されるユーザデータに対して、不揮発性メモリ20上の格納領域(メモリ領域)を決定する。すなわち、制御部11は、ユーザデータの書込み先を管理する。ホスト30から受信したユーザデータの論理アドレスと該ユーザデータが格納された不揮発性メモリ20上の格納領域を示す物理アドレスとの対応はアドレス変換テーブルとして格納される。
また、制御部11は、ホスト30から読出し要求を受信した場合、読出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読み出しをメモリI/F13へ指示する。
NANDメモリでは、一般に、ページと呼ばれるデータ単位で、書き込みおよび読み出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。本実施形態では、この同一のワード線に接続される複数のメモリセルをメモリセルグループと呼ぶ。メモリセルがシングルレベルセル(SLC)である場合は、1つのメモリセルグループが1ページに対応する。メモリセルがマルチレベルセル(MLC)である場合は、1つのメモリセルグループが複数ページに対応する。また、各メモリセルはワード線に接続するとともにビット線にも接続される。したがって、各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
データバッファ12は、メモリコントローラ10がホスト30から受信したユーザデータを不揮発性メモリ20へ記憶するまでに一時格納する。また、データバッファ12は、不揮発性メモリ20から読み出したユーザデータをホスト30へ送信するまでに一時格納する。データバッファ12には、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリを用いることができる。
ホスト30から送信されるユーザデータは、内部バス16に転送されてデータバッファ12に一旦格納される。符号化/復号部14は、不揮発性メモリ20に格納されるユーザデータを符号化して符号語を生成する。また、符号化/復号部14は、不揮発性メモリ20から読み出された受信語を復号してユーザデータを復元する。そこで符号化/復号部14は、符号化部(Encoder)17と復号部(Decoder)18を備える。なお、符号化/復号部14により符号化されるデータには、ユーザデータ以外にも、メモリコントローラ10内部で用いる制御データ等が含まれてもよい。
次に、本実施形態の書込み処理について説明する。制御部11は、不揮発性メモリ20への書込み時に、ユーザデータの符号化を符号化部17に指示する。その際、制御部11は、不揮発性メモリ20における符号語の格納場所(格納アドレス)を決定し、決定した格納場所もメモリI/F13へ指示する。
符号化部17は、制御部11からの指示に基づいて、データバッファ12上のユーザデータを符号化して符号語を生成する。符号化方式としては、例えば、BCH(Bose-Chaudhuri-Hocquenghem)符号やRS(リード・ソロモン)符号を用いた符号化方式を採用することができる。符号化部17により生成される符号語は、後述において図7〜図9を用いて例示するような多次元の誤り訂正符号である。メモリI/F13は、制御部11から指示された不揮発性メモリ20上の格納場所へ符号語を格納する制御を行う。
次に、本実施形態の不揮発性メモリ20からの読出し時の処理について説明する。制御部11は、不揮発性メモリ20からの読出し時に、不揮発性メモリ20上のアドレスを指定してメモリI/F13へ読み出しを指示する。また、制御部11は、復号部18へ復号の開始を指示する。メモリI/F13は、制御部11の指示に従って、不揮発性メモリ20の指定されたアドレスから受信語を読み出し、読み出した受信語を復号部18に入力する。復号部18は、この不揮発性メモリ20から読み出された受信語を復号する。
つづいて、図5に示す符号化部17のより詳細な構成について、図面を参照して詳細に説明する。図6は、本実施形態に係る符号化部の概略構成例を示すブロック図である。なお、図6では、説明の明確化のため、メモリコントローラ10における他の構成が省略されている。
図6に示すように、符号化部17は、データバッファ12から1サイクルごとに入力された情報ビットを分配する分配部170と、次元1の成分符号の数(5つ)と同数の次元1符号化器173a〜173eと、次元2の成分符号の数(2つ)と同数の次元2符号化器174a及び174bと、それぞれの次元に設けられたセレクタ175及び176とを備える。また、分配部170は、それぞれの次元に設けられた巡回セレクタ171及び172を備える。
ホスト30から書込み対象として書込み要求とともに入力されたユーザデータは、上述したように、データバッファ12に一時格納される。符号化部17へは、データバッファ12に格納されているユーザデータが、1サイクルにつき4つの情報ビットずつ入力される。
符号化部17に入力された4つの情報ビットは、メモリI/F13を介して不揮発性メモリ20に書き込まれるとともに、分配部170に入力される。分配部170は、4つの情報ビットを1又は数ビット(本例では2ビット)ずつの複数(本例では2つ)のグループ(以下、チャンクという)に分割し、これにより生成された複数のチャンクを各次元の巡回セレクタ171及び172にそれぞれ順次入力する。
次元1の巡回セレクタ171は、順次入力された複数のチャンクを、この順番通りで且つ設定された周期に従って、次元1符号化器173a〜173eのいずれかに入力する。例えば次元1の成分符号の数が5であり、5つの次元1符号化器173a〜173eを使用する場合、巡回セレクタ171の周期は5サイクルに設定される。なお、巡回セレクタ171及び172に対する周期の設定は、分配部170が行なってもよい。
次元1符号化器173a〜173eは、データバッファ12に格納されているユーザデータの全ての情報ビットが分配部170を介して次元1符号化器173a〜173eに分配されると、それぞれに入力された複数のチャンクを符号化することで次元1のパリティを生成し、生成した次元1のパリティを次元1のセレクタ175へ出力する。例えばd00及びd01の情報ビットよりなるチャンクとd10及びd11の情報ビットよりなるチャンクとの2つのチャンクが次元1符号化器173aに順次入力された場合、次元1符号化器173aは、d00、d01、d10及びd11の情報ビットからパリティr00及びr01とを生成し、生成したパリティr00及びr01をセレクタ175へ出力する。次元1符号化器173b〜173eについても同様に、順次入力された2つのチャンクからパリティr10〜r41を生成してセレクタ175へ出力する。
一方、巡回セレクタ172は、順次入力された複数のチャンクを、この順番通りに所定の周期に従って、次元2符号化器174a及び174bのいずれかに入力する。例えば次元2の成分符号の数が2であり、2つの次元2符号化器174a及び174bを使用する場合、巡回セレクタ172の周期は2サイクルに設定される。その場合、分配部170に1サイクルで入力された情報ビットは2つのチャンクに分割され、1番目のチャンクが1番目の次元2符号化器174aに入力されるとともに、2番目のチャンクが2番目の次元2符号化器174bに入力される。
次元2符号化器174a及び174bは、データバッファ12に格納されているユーザデータの全ての情報ビットが分配部170を介して次元2符号化器174a又は174bに分配されると、それぞれに入力された情報ビットに対する符号化を実行して次元2のパリティを生成し、生成したパリティを次元2のセレクタ176へ出力する。例えば次元2符号化器174aは、ユーザデータの全ての情報ビットd00〜d19の分配部170による分配が完了すると、入力された情報ビットd00、d01、d04、d05、d08、d09、d12、d13、d16及びd17を符号化してパリティc00及びc01を生成し、生成したパリティc00及びc01をセレクタ176へ出力する。同様に、次元2符号化器174bは、ユーザデータの全ての情報ビットd00〜d19の分配部170による分配が完了すると、入力された情報ビットd02、d03、d06、d07、d10、d11、d14、d15、d18及びd19を符号化してパリティc10及びパリティc11を生成し、生成したパリティc10及びc11をセレクタ176へ出力する。
次元1のセレクタ175は、次元1符号化器173a〜173eそれぞれから次元1のパリティr00〜r41が入力されると、この入力されたパリティr00〜r41をメモリI/F13に入力する。これに対し、メモリI/F13は、入力された次元1のパリティr00〜r41を不揮発性メモリ20に書き込む。次元2のセレクタ176も同様に、次元2符号化器174a及び174bそれぞれから次元2のパリティc00〜c11が入力されると、この入力されたパリティc00〜c11をメモリI/F13に入力する。メモリI/F13は、入力された次元2のパリティc00〜c11を不揮発性メモリ20に書き込む。これにより、不揮発性メモリ20内には、例えば後述において図7を用いて説明する積符号300が書き込まれる。
図7は、符号化部17によって生成される多次元の誤り訂正符号の例であって、次元1の成分符号の数が5で且つ次元2の成分符号の数が2の積符号の例を示す図である。図7に示す積符号300は、図2に示す積符号100と同様に、d00〜d19の合計20個の情報ビットと、r00〜r41及びC00〜C11の合計14個のパリティとから構成されている。ただし、積符号300では、情報ビットの並びが、ユーザデータにおける情報ビットの並びと一致していない。
このような積符号300を生成する場合、符号化部17における次元1の巡回セレクタ171の周期が5サイクルに設定され、次元2の巡回セレクタ172の周期が2サイクルに設定される。分配部170は、1サイクルごとに入力される4つの情報ビットを、それぞれ2つの情報ビットよりなる2つのチャンクに分割し、これにより生成された2つのチャンクを巡回セレクタ171及び172それぞれに順次入力する。
積符号300の生成動作をより詳細に説明すると、符号化部17には、d00〜d19の合計20個の情報ビットが1サイクルにつき4つの情報ビットずつ入力される。入力された情報ビットは、メモリI/F13を介して不揮発性メモリ20に順次書き込まれるとともに、符号化部17内の分配部170に入力される。
分配部170は、まず、4つの情報ビットd00〜d03が入力されると、この情報ビットd00〜d03を分割して2つのチャンク(d00,d01)及び(d02,d03)を生成し、これらを巡回セレクタ171及び172それぞれに入力する。以降、同様に動作することで、チャンク(d04,d05)及び(d06,d07)、(d08,d09)及び(d10,d11)、(d12,d13)及び(d14,d15)、(d16,d17)及び(d18,d19)を順次生成する。
次元1の巡回セレクタ171は、順番に入力されたチャンク(d00,d01)〜(d18,d19)のうち、1番目のチャンク(d00,d01)を1番目の次元1符号化器173aに入力し、2番目のチャンク(d02,d03)を2番目の次元1符号化器173bに入力し、3番目のチャンク(d04,d05)を3番目の次元1符号化器173cに入力し、4番目のチャンク(d06,d07)を4番目の次元1符号化器173dに入力し、5番目のチャンク(d08,d09)を5番目の次元1符号化器173eに入力する。また、巡回セレクタ171に設定された周期は5サイクルである。したがって、巡回セレクタ171は、6番目以降のチャンクについては、6番目のチャンク(d10,d11)を1番目の次元1符号化器173aに入力し、7番目のチャンク(d12,d13)を2番目の次元1符号化器173bに入力し、8番目のチャンク(d14,d15)を3番目の次元1符号化器173cに入力し、9番目のチャンク(d16,d17)を4番目の次元1符号化器173dに入力し、10番目のチャンク(d18,d19)を5番目の次元1符号化器173eに入力する。
一方、次元2の巡回セレクタ172は、順番に入力されたチャンク(d00,d01)〜(d18,d19)を次元2符号化器174a及び174bに交互に入力する。したがって、次元2符号化器174aには、チャンク(d00,d01)、(d04,d05)、(d08,d09)、(d12,d13)及び(d16,d17)が入力され、次元2符号化器174bには、チャンク(d02,d03)、(d06,d07)、(d10,d11)、(d14,d15)及び(d18,d19)が入力される。
ここで、各チャンクが入力される次元1符号化器173a〜173eと次元2符号化器174a及び174bとの組合せを整理すると、チャンク(d00,d01)は次元1符号化器173aと次元2符号化器174aとの組合せに入力され、チャンク(d02,d03)は次元1符号化器173bと次元2符号化器174bとの組合せに入力され、チャンク(d04,d05)は次元1符号化器173cと次元2符号化器174aとの組合せに入力され、チャンク(d06,d07)は次元1符号化器173dと次元2符号化器174bとの組合せに入力され、チャンク(d08,d09)は次元1符号化器173eと次元2符号化器174aとの組合せに入力され、チャンク(d10,d11)は次元1符号化器173aと次元2符号化器174bとの組合せに入力され、チャンク(d12,d13)は次元1符号化器173bと次元2符号化器174aとの組合せに入力され、チャンク(d14,d15)は次元1符号化器173cと次元2符号化器174bとの組合せに入力され、チャンク(d16,d17)は次元1符号化器173dと次元2符号化器174aとの組合せに入力され、チャンク(d18,d19)は次元1符号化器173eと次元2符号化器174bとの組合せに入力されている。
このように本実施形態では、ユーザデータから生成されるチャンクの数(10)が次元1符号化器173a〜173eの数(5)と次元2符号化器174a及び174bの数(2)とを掛け合わせた数(10=5×2)以下である場合、分配部170は、あるチャンクを入力する次元1符号化器と次元2符号化器との組合せが、他のチャンクを入力する次元1符号化器と次元2符号化器との組合せと重複しないように、各チャンクの入力先となる次元1符号化器と次元2符号化器との組合せを決定する。言い換えれば、分配部170は、あるチャンクを入力する各次元の符号化器の組合せが、他のチャンクを入力する各次元の符号化器の組合せと重複しないように、次元1の巡回セレクタ171に設定する周期のサイクル数と次元2の巡回セレクタ172に設定する周期のサイクル数とを決定する。
次元1符号化器173a〜173eは、データバッファ12に格納されているユーザデータの全ての情報ビットが分配部170を介して次元1符号化器173a〜173eに分配されると、それぞれ入力されたチャンクに対して符号化を実行することで次元1のパリティを生成する。例えば次元1符号化器173aは、入力されたチャンク(d00,d01)及び(d10,d11)に対して符号化を実行することでパリティr00及びパリティr01を生成する。その後、次元1符号化器173a〜173eは、生成したパリティr00〜r41をセレクタ175へ出力する。
次元2符号化器174a及び174bも同様に、データバッファ12に格納されているユーザデータの全ての情報ビットが分配部170を介して次元2符号化器174a及び174bに分配されると、それぞれ入力されたチャンクに対して符号化を実行することで次元2のパリティを生成する。例えば次元2符号化器174aは、入力されたチャンク(d00、d01)、(d04、d05)、(d08、d09)、(d12、d13)及び(d16及びd17)を符号化することで次元2のパリティc00及びパリティc01を生成する。その後、次元2符号化器174a及び174bは、生成したパリティc00〜c11をセレクタ176へ出力する。
セレクタ175及び176に入力された次元1のパリティr00〜r41及び次元2のパリティc00〜c11は、順次、メモリI/F13を介して不揮発性メモリ20に書き込まれる。これにより、不揮発性メモリ20内には、図7に示す積符号300が格納される。
図8は、次元1の成分符号の数が4で且つ次元2の成分符号の数が1の積符号の例を示す図である。図8に示す積符号400は、d00〜d07の合計8つの情報ビットと、r00〜r31及びC00〜C01の合計10個のパリティとから構成されている。
このような積符号400を生成する場合、符号化部17における次元1の巡回セレクタ171の周期が4サイクルに設定され、次元2の巡回セレクタ172の周期が1サイクルに設定される。また、符号化部17には1サイクルに4つの情報ビットが入力される。分配部170は、入力された4つの情報ビットを分割して2つのチャンクを生成し、生成した2つのチャンクを巡回セレクタ171及び172にそれぞれ入力する。次元1の巡回セレクタ171は、1サイクルごとに入力された2つのチャンクを順番に次元1符号化器173a〜173eに入力する。一方、次元2の巡回セレクタ172は、1サイクルごとに入力された2つのチャンクの両方を1サイクルで1列目の次元2符号化器174aに入力し、2列目の次元2符号化器174bには入力しない。
このように、本実施形態に係る符号化部17は、巡回セレクタ171及び/又は172の周期を変更することで、異なる符号化率で異なる符号構造の多次元の誤り訂正符号に対しても、その構成を変更せず且つスループットを落とさずに適用することが可能である。
図9は、次元1の成分符号の数が5で且つ次元2の成分符号の数が2の積符号の他の例を示す図である。図9に示す積符号500は、d00〜d39の合計40個の情報ビットと、r00〜r41及びC00〜C11の合計14個のパリティとから構成されている。また、積符号500では、情報ビットの並びが、ユーザデータにおける情報ビットの並びと一致していない。
このような積符号500を生成する場合も、図7に例示した積符号300を生成する場合と同様に、符号化部17における次元1の巡回セレクタ171の周期が5サイクルに設定され、次元2の巡回セレクタ172の周期が2サイクルに設定される。また、符号化部17には、1サイクルに4つの情報ビットが入力される。分配部170は、1サイクルで入力された4つの情報ビットを、それぞれ2つの情報ビットよりなる2つのチャンクに分割し、これにより生成された2つのチャンクを巡回セレクタ171及び172それぞれに順次入力する。
ここで、次元1の巡回セレクタ171の周期(5サイクル)と次元2の巡回セレクタ172の周期(2サイクル)とを掛け合わせた値は10である。したがって、分配部170においてi番目に生成されたチャンク及びi+10番目に生成されたチャンクは、次元1符号化器173a〜173e及び次元2符号化器174a及び174bの組合せのうち、同じ組合せの次元1符号化器及び次元2符号化器に入力される。例えば、1番目のチャンク(d00,d01)と11番目のチャンク(d20,d21)とはともに、同じ組合せである次元1符号化器173a及び次元2符号化器174aにそれぞれ入力される。
このように、本実施形態に係る符号化部17は、複数のチャンクに対して次元1符号化器及び次元2符号化器の同じ組合せを割り当てることを許容している。言い換えれば、多次元の誤り訂正符号を構成する複数の成分符号における少なくとも2つの組合せには、保護対象であるユーザデータにおける少なくとも1つのシンボルを多重に保護する有効な組合せと、前記第1シンボル列におけるシンボルを多重には保護しない無効な組合せとが存在する。そこで分配部170は、ユーザデータから生成されるチャンクの数が多次元の誤り訂正符号を構成する複数の成分符号の有効な組合せの数よりも大きい場合には、有効な組合せの全通りに対して複数のチャンクのうちの一部のチャンクの入力先を割り当てた後、残りのチャンクに対しては既に入力先として割り当てられた組合せと重複する組合せを入力先として決定する。このように構成することで、次元1符号化器と次元2符号化器との組合せの数よりも大きな数のチャンクが生成される場合でも、その構成を変更せず且つスループットを落とさずに、異なる符号化率で異なる符号構造の多次元の誤り訂正符号を生成することが可能となる。
ただし、複数のチャンクに対して次元1符号化器及び次元2符号化器の同じ組合せを割り当てることを許容する場合でも、分配部170は、チャンクの数が次元1符号化器173a〜173eの数より大きければ、次元1符号化器173a〜173eそれぞれに入力されるチャンクの数が均等又はその差が予め設定しておいた所定の閾値(例えば1又は2)以下となるように、各チャンクの入力先となる次元1符号化器を決定する。同様に、分配部170は、チャンクの数が次元2符号化器174a及び174bの数より大きければ、次元1符号化器174a及び174bそれぞれに入力されるチャンクの数が均等又はその差が予め設定しておいた所定の閾値(例えば1又は2)以下となるように、各チャンクの入力先となる次元2符号化器を決定する。
以上のように、本実施形態では、長いシンボル長のユーザデータが比較的短いシンボル長の断片(チャンク)に断片化される。個々のチャンクは、1又は数個のシンボルで構成される。比較的小さなチャンクを複数の成分符号に分散し、且つ、適切に設計された巡回ルールに従うことにより、様々な符号構造の多次元の誤り訂正符号を、その構成を変更せず且つスループットを落とさずに符号化することが可能なメモリシステムを実現することができる。
また、例えば図7に例示した積符号300や図9に例示した積符号500のように、生成される多次元の誤り訂正符号における情報ビットの並びが元のユーザデータにおける情報ビットの並びとは異なる並びとなるように符号化が実行されるため、インターリーバなどのビット配列を組み換える機能を別途搭載することなく、バーストエラーに対しても高い訂正能力を発揮することが可能なメモリシステムを実現することが可能である。
(第2の実施形態)
つぎに、第2の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。本実施形態に係るメモリシステムの概略構成は、第1の実施形態において図5を用いて説明したメモリシステム1と同様であってよいため、ここでは重複する説明を省略する。ただし、第2の実施形態では、符号化/復号部14における符号化部17が、以下で説明する符号化部に置き換えられる。
図10は、第2の実施形態に係る符号化部の概略構成例を示すブロック図である。なお、図10では、説明の明確化のため、メモリコントローラ10における他の構成が省略されている。
図10に示すように、符号化部27は、第1の実施形態において図6を用いて説明した符号化部17と同様の構成において、分配部170がセレクタ271をさらに備える。また、都合上、3列目の次元2符号化器174cが追加されている。
セレクタ271には、分配部170が入力された情報ビットから生成したチャンクが入力されるとともに、次元1のセレクタ175から出力された次元1のパリティがチャンクとして入力される。また、セレクタ271の出力は、巡回セレクタ172に入力される。
セレクタ271は、データバッファ12から情報ビットが入力されている期間は、分配部170で生成された情報ビットのチャンクを巡回セレクタ172に入力する。したがって、この期間の符号化部27の動作は、第1の実施形態において例示した符号化部17の動作と同様である。
一方、次元1のセレクタ175から次元1符号化器173a〜173eのいずれかで生成されたパリティが出力された場合、セレクタ271は、次元1のセレクタ175から入力されたパリティをチャンクとして次元2の巡回セレクタ172に入力する。
次元2の巡回セレクタ172は、セレクタ271から入力されたパリティのチャンクに対しても、情報ビットのチャンクと同様に振る舞う。したがって、巡回セレクタ172は、順次入力された複数のチャンクを、この順番通りに所定の周期に従って、次元2符号化器174a〜174cのいずれかに入力する。
次元2符号化器174a〜174cは、データバッファ12に格納されているユーザデータの全ての情報ビット及び次元1符号化器173a〜173eで生成された全てのパリティが分配部170を介して次元2符号化器174a〜174cに分配されると、それぞれに入力された情報ビット及びパリティに対する符号化を実行して次元2のパリティを生成し、生成したパリティを次元2のセレクタ176へ出力する。その後の動作は、第1の実施形態と同様であるため、ここでは詳細な説明を省略する。
図11は、図10に示す符号化部27により生成された積符号の一例を示す図である。図11に示すように、積符号600は、d00〜d19の合計20個の情報ビットと、r00〜r41及びC00〜C21の合計16個のパリティとから構成されている。
このような積符号600を生成する場合、符号化部27における次元1の巡回セレクタ171の周期が5サイクルに設定され、次元2の巡回セレクタ172の周期が3サイクルに設定される。分配部170は、1サイクルで入力された4つの情報ビットを、それぞれ2つの情報ビットよりなる2つのチャンクに分割し、これにより生成された2つのチャンクを巡回セレクタ171及び172それぞれに順次入力する。
分配部170は、入力された情報ビットd00〜d19から生成した全てのチャンク(d00、d01)、(d02、d03)、(d04、d05)、…、(d18、d19)を次元1符号化器173a〜173e及び次元2符号化器174a〜174cに分配すると、つづいて、次元1のセレクタ175からセレクタ271に入力された次元1のパリティのチャンク(r00、r01)、…、(r40、r41)を、順番に次元2の巡回セレクタ172に入力する。次元2の巡回セレクタ172は、入力された次元1のパリティのチャンクを、入力された順番且つ設定された周期に従って、次元2符号化器174a〜174cのいずれかに入力する。
図10及び図11に示す例では、次元1符号化器173aで生成された1行目のパリティよりなるチャンク(r00、r01)及び次元1符号化器173dで生成された4行目のパリティよりなるチャンク(r30、r31)が2列目の次元2符号化器174bに入力され、次元1符号化器173bで生成された2行目のパリティよりなるチャンク(r10、r11)及び次元1符号化器173eで生成された5行目のパリティよりなるチャンク(r40、r41)が3列目の次元2符号化器174cに入力され、次元1符号化器173cで生成された3行目のパリティよりなるチャンク(r20、r21)が1列目の次元2符号化器174aに入力される。
次元2符号化器174a〜174cは、それぞれに入力された情報ビット及びパリティに対する符号化を実行して次元2のパリティC00〜C21を生成し、生成したパリティC00〜C21を次元2のセレクタ176へ出力する。
このように、本実施形態に係る符号化部27は、一方の次元に対して生成されたパリティを他方の次元の符号化器に入力する構成を備えることで、一方の次元に対して生成されたパリティを保護の対象として、他方の次元のパリティを生成することが可能となる。その結果、より強力にユーザデータを保護することが可能となる。
その他の構成、動作及び効果は、上述した第1の実施形態と同様であるため、ここでは詳細な説明を省略する。
(第3の実施形態)
つぎに、第3の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。本実施形態では、上述した実施形態における復号部18のより詳細な構成例について、図面を参照して詳細に説明する。なお、本実施形態に係るメモリシステムの概略構成は、第1の実施形態において図5を用いて説明したメモリシステム1と同様であってよいため、ここでは重複する説明を省略する。
図12は、本実施形態に係る復号部18の概略構成例を示すブロック図である。なお、図12では、説明の明確化のため、メモリコントローラ10における他の構成が省略されている。
図12に示すように、復号部18は、入力された情報ビットを分配する分配部180と、次元1の成分符号の数(5つ)と同数の次元1シンドローム計算器183a〜183eと、次元2の成分符号の数(2つ)と同数の次元2シンドローム計算器184a及び184bと、それぞれの次元に設けられたセレクタ185及び186と、シンドロームメモリ187と、シンドローム復号器188と、データメモリ189とを備える。また、分配部180は、符号化部17/27の分配部170と同様に、それぞれの次元に設けられた巡回セレクタ181及び182を備える。
不揮発性メモリ20からメモリI/F13によって読み出された受信語は、直接又は符号化/復号部14内の内部メモリに一時バッファされた後、1サイクルに4ビットずつ、復号部18に入力される。読み出された受信語には、読出し対象のユーザデータに対応する情報ビットdと、次元1のパリティrijと、次元2のパリティcijとが含まれる。
復号部18に入力された4ビットのデータは、データメモリ189に蓄積されるとともに、分配部180に入力される。分配部180は、4ビットのデータを1又は数ビット(本例では2ビット)ずつの複数(本例では2つ)のチャンクに分割し、これにより生成された複数のチャンクを各次元の巡回セレクタ181及び182にそれぞれ順次入力する。その際、分配部180は、情報ビットで構成されたチャンクを次元1の巡回セレクタ181と次元2の巡回セレクタ182との両方に入力し。次元1のパリティで構成されたチャンクを次元1の巡回セレクタ181に入力し、次元2のパリティで構成されたチャンクを次元2の巡回セレクタ182に入力する。
次元1の巡回セレクタ181は、順次入力された情報ビットのチャンク及び次元1のパリティのチャンクを、この順番通りで且つ設定された周期に従って、次元1シンドローム計算器183a〜183eのいずれかに入力する。例えば次元1の成分符号の数が5であり、5つの次元1シンドローム計算器183a〜183eを使用する場合、巡回セレクタ181の周期は5サイクルに設定される。それにより、1行目の成分符号が1行目の次元1シンドローム計算器183aに入力され、2行目の成分符号が2行目の次元1シンドローム計算器183bに入力され、3行目の成分符号が3行目の次元1シンドローム計算器183cに入力され、4行目の成分符号が4行目の次元1シンドローム計算器183dに入力され、5行目の成分符号が5行目の次元1シンドローム計算器183eに入力される。なお、巡回セレクタ181及び182に対する周期の設定は、分配部180が行なってもよい。
それぞれ対応する成分符号が入力された次元1シンドローム計算器183a〜183eは、入力された成分符号のシンドロームをそれぞれ計算し、計算された各成分符号のシンドロームを次元1のセレクタ185へ出力する。次元1のセレクタ185は、入力された各成分符号のシンドロームをシンドロームメモリ187へ入力する。これにより、シンドロームメモリ187に次元1の各成分符号に関するシンドロームが記録される。
一方、次元2の巡回セレクタ182は、順次入力された情報ビットのチャンク及び次元2のパリティのチャンクを、この順番通りで且つ設定された周期に従って、次元2シンドローム計算器184a又は184bに入力する。例えば次元2の成分符号の数が2であり、2つの次元2シンドローム計算器184a及び184bを使用する場合、巡回セレクタ182の周期は2サイクルに設定される。それにより、1列目の成分符号が1列目の次元2シンドローム計算器184aに入力され、2列目の成分符号が2列目の次元2シンドローム計算器184bに入力される。
それぞれ対応する成分符号が入力された次元2シンドローム計算器184a及び184bは、入力された成分符号のシンドロームをそれぞれ計算し、計算された各成分符号のシンドロームを次元2のセレクタ186へ出力する。次元2のセレクタ186は、入力された各成分符号のシンドロームをシンドロームメモリ187へ入力する。これにより、シンドロームメモリ187に次元2の各成分符号に関するシンドロームが記録される。
なお、巡回セレクタ181及び182には、第1又は第2の実施形態において例示した符号化部17/27における分配部170の巡回セレクタ171及び172に対して読出し対象のユーザデータを符号化する際に設定した周期と同じ周期が設定されればよい。
以上のようにして、不揮発性メモリ20から受信語の全てのビットが読み出されて復号部18に入力されることで、データメモリ189内に受信語全体が蓄積されるとともに、シンドロームメモリ187内に次元1及び次元2の全ての成分符号についてのシンドロームが格納されると、シンドローム復号器188は、データメモリ189内の受信語(符号語)における1つ以上のエラービットを見つけ出し、見つけ出されたデータメモリ189内のエラービットに対する誤り訂正を実行する。また、シンドローム復号器188は、誤り訂正したビットに対するシンドロームメモリ187内のシンドロームを、誤り訂正後のビットに基づいて修正する。
その後、シンドローム復号器188によってデータメモリ189内の符号語における全てのエラービットが訂正されると、データメモリ189内には、ホスト30から書込み対象として送られてきたユーザデータが復元される。復元されたユーザデータは、例えばデータメモリ189から読み出されてデータバッファ12に一旦格納された後、読出し要求下であるホスト30へホストI/F15を介して送信される。
以上のように、本実施形態に係る復号部18によれば、第1及び第2の実施形態に係る符号化部17及び27で符号化された種々の多次元の誤り訂正符号(例えば図2、図4、図7〜図9、図11参照)を復号することが可能である。すなわち、本実施形態によれば、異なる符号化率で異なる符号構造の多次元の誤り訂正符号を、その構成を変更せず且つスループットを落とさずに復号することが可能な復号部18を実現することができる。また、本実施形態によれば、バーストエラーに対しても高い訂正能力を発揮することが可能なメモリシステムを実現することが可能である。
その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…メモリシステム、10…メモリコントローラ、11…制御部、12…データバッファ、13…メモリI/F、14…符号化/復号部、15…ホストI/F、16…内部バス、17,27…符号化部、18…復号部、20…不揮発性メモリ、30…ホスト、170,180…分配部、171,172,181,182…巡回セレクタ、173a〜173e…次元1符号化器、174a〜174c…次元2符号化器、175,176,185,186,271…セレクタ、183a〜183e…次元1シンドローム計算器、184a,184b…次元2シンドローム計算器、187…シンドロームメモリ、188…シンドローム復号器、189…データメモリ。

Claims (9)

  1. 不揮発性メモリと、
    前記不揮発性メモリへの書き込み対象であるユーザデータに含まれる複数のシンボルのうち少なくとも1つのシンボルを情報シンボルとして、第1の成分符号と前記第1の成分符号と異なる第2の成分符号とを含む複数の成分符号を生成する符号化器と、
    前記複数の成分符号を前記不揮発性メモリへ書き込むメモリインタフェースと、
    を備えるメモリシステムであって、
    前記符号化器は、
    前記複数の成分符号それぞれに含まれるパリティを生成する複数の符号化器と、
    前記ユーザデータの第1シンボル列を前記第1シンボル列よりも短い第1シンボル長の複数のチャンクに分割し、分割された前記複数のチャンクの各々を前記複数の符号化器のうちの少なくとも異なる2つに入力する第1分配部と、
    を備え、
    前記メモリインタフェースは、前記第1シンボル列及び前記第1シンボルに対応するパリティを前記不揮発性メモリに書き込み、
    前記複数の成分符号における少なくとも2つの組合せには、前記第1シンボル列における少なくとも1つのシンボルを多重に保護する有効な組合せと、前記第1シンボル列におけるシンボルを多重には保護しない無効な組合せとが存在し、
    前記第1分配部は、前記チャンクの数が前記複数の成分符号の前記有効な組合せの数以下である場合、前記複数のチャンクのうち1のチャンクを入力する前記成分符号の符号化器の組合せが、他のチャンクを入力する前記成分符号の符号化器の組合せと重複しないように、前記複数のチャンクそれぞれの入力先となる符号化器の組合せを決定し、
    前記第1分配部は、前記チャンクの数が前記複数の成分符号の前記有効な組合せの数よりも大きい場合、前記有効な組合せそれぞれに入力されるチャンクの数の差が所定の閾値以下となるように、前記複数のチャンクそれぞれの入力先となる符号化器の組合せを決定する
    メモリシステム。
  2. 前記第1の成分符号は、第1の次元の成分符号であり、
    前記第2の成分符号は、前記第1の次元とは異なる第2の次元の成分符号であり、
    前記複数の符号化器は、前記第1の次元の成分符号のパリティを生成する1つ以上の第1符号化器と、前記第2の次元の成分符号のパリティを生成する1つ以上の第2符号化器とを含み、
    前記第1分配部は、前記チャンクを、前記1つ以上の第1符号化器のいずれかと、前記1つ以上の第2符号化器のいずれかとにそれぞれ入力する
    請求項1に記載のメモリシステム。
  3. 前記複数の成分符号における少なくとも2つの組合せには、前記第1シンボル列における少なくとも1つのシンボルを多重に保護する有効な組合せと、前記第1シンボル列におけるシンボルを多重には保護しない無効な組合せとが存在し、
    前記第1分配部は、前記チャンクの数が前記複数の成分符号の前記有効な組合せの数よりも大きい場合、前記有効な組合せの全通りに対して前記複数のチャンクのうちの一部のチャンクの入力先を割り当てた後、残りのチャンクに対しては既に前記入力先として割り当てられた組合せと重複する組合せを入力先として決定する請求項1に記載のメモリシステム。
  4. 前記第1分配部は、前記チャンクの数が前記第1の次元の成分符号の符号化器の数より大きい場合、前記複数の第1の次元の成分符号の符号化器それぞれに入力されるチャンクの数の差が所定の閾値以下となるように、前記複数のチャンクそれぞれの入力先となる第1の次元の成分符号の符号化器を決定する請求項2に記載のメモリシステム。
  5. 前記第1分配部は、前記チャンクの数が前記第2の次元の成分符号の符号化器の数より大きい場合、前記複数の第2の次元の成分符号の符号化器それぞれに入力されるチャンクの数の差が所定の閾値以下となるように、前記複数のチャンクそれぞれの入力先となる第2の次元の成分符号の符号化器を決定する請求項2に記載のメモリシステム。
  6. 前記第1分配部は、
    前記複数のチャンクを前記第1シンボル列の配列に従って順番に前記複数の第1の次元の成分符号の符号化器のいずれかに入力する第1巡回セレクタと、
    前記複数のチャンクを前記第1シンボル列の配列に従って順番に前記複数の第2の次元の成分符号の符号化器のいずれかに入力する第2巡回セレクタと、
    を備え、
    前記第1分配部は、前記第1の次元の成分符号の数と同数のサイクル数の第1周期を前記第1巡回セレクタに設定するとともに、前記第2の次元の成分符号の数と同数のサイクル数の第2周期を前記第2巡回セレクタに設定し、
    前記第1巡回セレクタは、前記第1周期の前記サイクル数と同数の前記第1符号化器に前記複数のチャンクを分散して入力し、
    前記第2巡回セレクタは、前記第2周期の前記サイクル数と同数の前記第2符号化器に前記複数のチャンクを分散して入力する
    請求項2に記載のメモリシステム。
  7. 前記第1分配部は、前記複数のチャンクと前記複数の成分符号それぞれのパリティとが入力されるセレクタをさらに備え、
    前記セレクタは、前記複数の成分符号における第3の成分符号のパリティを計算した後、前記第3の成分符号の前記パリティを、パリティの計算が未だ済んでいない第4の成分符号の符号化器に入力する
    請求項2に記載のメモリシステム。
  8. 前記第1分配部は、前記第1シンボル長以上であって前記第1シンボル列よりも短い第2シンボル長の第2シンボル列を単位として前記ユーザデータを入力し、前記第2シンボル列を前記1つ以上のチャンクに分割する請求項1に記載のメモリシステム。
  9. 前記第1の成分符号の第1シンドロームを計算する第1シンドローム計算器と、
    前記第2の成分符号の第2シンドロームを計算する第2シンドローム計算器と、
    前記メモリインタフェースが前記不揮発性メモリから読み出した第3シンボル列を前記第1分配部と同じ前記第1シンボル長の複数のチャンクに分割し、当該分割により生成された前記複数のチャンクのうち前記ユーザデータに対応するチャンク及び前記第1の成分符号のパリティに対応するチャンクを前記第1シンドローム計算器に入力し、前記読出し対象のユーザデータに対応する前記チャンク及び前記第2の成分符号のパリティに対応するチャンクを前記第2シンドローム計算器に入力する第2分配部と、
    前記第1シンドローム計算器で計算された前記第1シンドローム及び前記第2シンドローム計算器で計算された前記第2シンドロームを保持するシンドロームメモリと、
    前記シンドロームメモリに保持された前記第1シンドローム及び前記第2シンドロームを復号することで、前記シンボル列におけるエラーシンボルを検出し、検出した前記エラーシンボルを訂正するシンドローム復号器と、
    を備える請求項1に記載のメモリシステム。
JP2017180689A 2017-09-20 2017-09-20 メモリシステム Active JP6818667B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017180689A JP6818667B2 (ja) 2017-09-20 2017-09-20 メモリシステム
US15/919,809 US11003528B2 (en) 2017-09-20 2018-03-13 Memory system including an error correction function

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017180689A JP6818667B2 (ja) 2017-09-20 2017-09-20 メモリシステム

Publications (2)

Publication Number Publication Date
JP2019057096A JP2019057096A (ja) 2019-04-11
JP6818667B2 true JP6818667B2 (ja) 2021-01-20

Family

ID=65720347

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017180689A Active JP6818667B2 (ja) 2017-09-20 2017-09-20 メモリシステム

Country Status (2)

Country Link
US (1) US11003528B2 (ja)
JP (1) JP6818667B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200078830A (ko) * 2018-12-24 2020-07-02 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 모듈
US11218165B2 (en) * 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004288283A (ja) 2003-03-20 2004-10-14 Hitachi Ltd 情報記録フォーマット、情報記録再生符号化方法・回路およびこれを用いた磁気ディスク記録再生装置、情報記録再生装置、並びに情報通信装置
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
JP2008065969A (ja) 2006-08-09 2008-03-21 Fujitsu Ltd 符号化装置、復号化装置、符号化方法、復号化方法および記憶装置
US8700970B2 (en) * 2010-02-28 2014-04-15 Densbits Technologies Ltd. System and method for multi-dimensional decoding
TWI456579B (zh) * 2010-03-26 2014-10-11 Silicon Motion Inc 提昇錯誤更正能力之方法以及相關之記憶裝置及其控制器
US8621321B2 (en) * 2010-07-01 2013-12-31 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
JP2012123880A (ja) * 2010-12-10 2012-06-28 Toshiba Corp 半導体記憶装置
US9300329B2 (en) 2012-11-08 2016-03-29 Sk Hynix Memory Solutions Inc. Turbo-product codes (TPC) with interleaving
US9397706B1 (en) * 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
US9553611B2 (en) * 2014-11-27 2017-01-24 Apple Inc. Error correction coding with high-degree overlap among component codes
JP6479638B2 (ja) * 2015-12-09 2019-03-06 株式会社東芝 ビデオサーバ装置およびデータ書き込み/読み出し方法
US10417088B2 (en) * 2017-11-09 2019-09-17 International Business Machines Corporation Data protection techniques for a non-volatile memory array
JP2019168897A (ja) * 2018-03-23 2019-10-03 東芝メモリ株式会社 メモリシステム

Also Published As

Publication number Publication date
US20190087266A1 (en) 2019-03-21
US11003528B2 (en) 2021-05-11
JP2019057096A (ja) 2019-04-11

Similar Documents

Publication Publication Date Title
US10331514B2 (en) Tiered error correction code (ECC) operations in memory
US8239725B2 (en) Data storage with an outer block code and a stream-based inner code
CN111326199B (zh) 用于存储器设备的多态编程
US7900118B2 (en) Flash memory system and method for controlling the same
TWI627634B (zh) 記憶體中錯誤校正碼操作
KR101686980B1 (ko) 비휘발성 메모리 내의 데이터 저장 방법
US9495243B2 (en) Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems
KR102275717B1 (ko) 플래시 메모리 시스템 및 그의 동작 방법
US10283216B2 (en) Data storage device and data maintenance method thereof
KR101550762B1 (ko) 연접 오류 정정 장치
CN113748414B (zh) 错误校正码结构
US9230684B2 (en) Memory controller, storage device, and memory control method
CN110349616B (zh) 针对nand闪存中的位线故障的动态交织器变化
JP6818667B2 (ja) メモリシステム
CN112134573B (zh) 用于将数据存储在存储器装置内的方法和检索数据的方法
KR20150085800A (ko) 다수의 플래시 평면들에 걸친 코드워드들의 인터리빙
US10951238B1 (en) Memory system and method for controlling non-volatile memory
US11150813B2 (en) Memory system
US10404282B2 (en) Apparatuses and methods for integrated interleaved Reed-Solomon encoding and decoding
US11204834B1 (en) Implementation of keeping data integrity in multiple dimensions
US10855316B2 (en) Error correction code (ECC) operations in memory
US20160269046A1 (en) Memory controller, memory system, and decoding method
US9927990B2 (en) Memory system, memory controller and memory control method
CN108170554B (zh) 一种nand的数据编码方法和装置
US9160371B2 (en) Memory controller, storage device and memory control method

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180905

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200824

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200915

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201106

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201228

R150 Certificate of patent or registration of utility model

Ref document number: 6818667

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150