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

メモリシステム Download PDF

Info

Publication number
JP2019057806A
JP2019057806A JP2017180631A JP2017180631A JP2019057806A JP 2019057806 A JP2019057806 A JP 2019057806A JP 2017180631 A JP2017180631 A JP 2017180631A JP 2017180631 A JP2017180631 A JP 2017180631A JP 2019057806 A JP2019057806 A JP 2019057806A
Authority
JP
Japan
Prior art keywords
submatrix
matrix
graph
code
parity
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
Application number
JP2017180631A
Other languages
English (en)
Inventor
裕太 熊野
Yuta Kumano
裕太 熊野
慶行 坂巻
Yoshiyuki Sakamaki
慶行 坂巻
浩典 内川
Hironori Uchikawa
浩典 内川
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
Toshiba Memory 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 Toshiba Memory Corp filed Critical Toshiba Memory Corp
Priority to JP2017180631A priority Critical patent/JP2019057806A/ja
Priority to US15/919,788 priority patent/US10560122B2/en
Publication of JP2019057806A publication Critical patent/JP2019057806A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
    • H03M13/1182Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the structure of the parity-check matrix is obtained by reordering of a random parity-check matrix
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1171Parity-check or generator matrices with non-binary elements, e.g. for non-binary LDPC codes
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1174Parity-check or generator matrices built from sub-matrices representing known block codes such as, e.g. Hamming codes, e.g. generalized LDPC 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] 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/25Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
    • H03M13/255Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with Low Density Parity Check [LDPC] 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

【課題】符号化時に要求されるメモリのサイズを低減する。【解決手段】実施形態に係るメモリシステムは、グラフ符号により符号化する符号化器と、符号化する際に使用するデータを保持するデータ保持部とを備え、グラフ符号の検査行列は、第1〜第6部分行列を含み、符号化器は、情報語と第1部分行列とが乗算された第7部分行列を取得し、情報語と第3部分行列とが乗算された第8部分行列を取得し、第7部分行列と正負が反転された第5部分行列とが乗算された第9部分行列を取得し、第9部分行列と第8部分行列とが加算された第10部分行列を取得し、第10部分行列とデータとが乗算された第1パリティを取得し、第1パリティと正負が反転された第2部分行列とが乗算された第11部分行列を取得し、第11部分行列と第7部分行列とが加算された第2パリティを取得する。【選択図】図17

Description

以下の実施形態は、一般的に、メモリシステムに関する。
誤り訂正符号は、データを符号化し冗長にすることで、データに発生した誤りの訂正を可能にする。このような誤り訂正符号としては、積符号が存在する。近年では、より訂正能力の高い符号方式であるグラフ符号も提案されている。
グラフ符号は、成分符号をグラフ理論に基づく組み合わせにより構成される符号である。グラフ符号の符号化方式として生成行列を用いることで情報語の符号化を行う場合、生成行列のサイズが大きくなる。そのため、符号化に必要なデータを格納するためのデータ保存用の回路規模や符号化のためのメモリサイズが大きくなる場合がある。
米国特許出願公開第2013/0024745号明細書 米国特許出願公開第2007/0162815号明細書 米国特許出願公開第2012/0173947号明細書 米国特許出願公開第2017/0077958号明細書
本発明の一つの実施形態は、符号化時に要求されるメモリのサイズを低減することが可能なメモリシステムを提供することを目的とする。
実施形態によれば、メモリシステムは、ホストと接続可能であって、不揮発性メモリと、前記ホストから受信したユーザデータの少なくとも一部を情報語としてグラフ符号により符号化する符号化器と、前記符号化器が前記情報語を符号化する際に使用する符号化用データを保持する符号化データ保持部と、前記符号化された符号語を前記不揮発性メモリへ書き込むメモリインタフェースとを備え、前記グラフ符号の検査行列は、第1〜第6部分行列を含み、前記符号化器は、前記情報語と前記第1部分行列とが乗算された第7部分行列を取得し、前記情報語と前記第3部分行列とが乗算された第8部分行列を取得し、前記第7部分行列と正負が反転された前記第5部分行列とが乗算された第9部分行列を取得し、前記第9部分行列と前記第8部分行列とが加算された第10部分行列を取得し、前記第10部分行列と前記符号化用データとが乗算された第1パリティを取得し、前記第1パリティと正負が反転された前記第2部分行列とが乗算された第11部分行列を取得し、前記第11部分行列と前記第7部分行列とが加算された第2パリティを取得し、前記メモリインタフェースは、前記情報語と前記第1パリティと前記第2パリティとを前記符号語として前記不揮発性メモリに書き込む。
図1は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。 図2は、第1の実施形態に係る符号化用データ生成装置の概略構成例を示すブロック図である。 図3は、第1の実施形態に係るグラフ接続行列生成部の概略動作例を示すフローチャートである。 図4は、第1の実施形態において例示するグラフのグラフ構造を示す図である。 図5は、図4に示すグラフの隣接行列の例を示す図である。 図6は、第1の実施形態に係る辺のクラス分けを説明するための例を示す図である。 図7は、第1の実施形態に係る辺のクラス分けを説明するための他の例を示す図である。 図8は、第1の実施形態に係る辺がクラス分けされた隣接行列の例を示す図である。 図9は、第1の実施形態に係る辺番号付けを説明するための例を示す図である。 図10は、第1の実施形態に係る辺番号付けを説明するための他の例を示す図である。 図11は、第1の実施形態において生成される隣接行列の一例を示す図である。 図12は、第1の実施形態に係るグラフの接続行列の一例を示す図である。 図13は、第1の実施形態に係るグラフの頂点1〜6に対する成分符号の検査行列の一例を示す図である。 図14は、第1の実施形態に係るグラフの頂点7〜10に対する成分符号の検査行列の一例を示す図である。 図15は、第1の実施形態に係るグラフ符号の検査行列の一例を示す図である。 図16は、第1の実施形態に係る符号化器の概略構成例を示すブロック図である。 図17は、第1の実施形態に係る符号化器が実行する符号化動作の一例を示すフローチャートである。 図18は、第2の実施形態に係るLFSRを用いた符号化アルゴリズムを実現するための符号化回路の構成例を示す図である(その1)。 図19は、第2の実施形態に係るLFSRを用いた符号化アルゴリズムを実現するための符号化回路の構成例を示す図である(その2)。 図20は、第2の実施形態に係るLFSRを用いた符号化アルゴリズムを実現するための符号化回路の構成例を示す図である(その3)。 図21は、第2の実施形態に係るLFSRを用いた符号化アルゴリズムを実現するための符号化回路の構成例を示す図である(その4)。 図22は、第2の実施形態に係るグラフ符号の検査行列の一例を示す図である。 図23は、第3の実施形態において例示するグラフのグラフ構造を示す図である。 図24は、図23に示すグラフの隣接行列の例を示す図である。 図25は、第3の実施形態に係る辺番号付けを説明するための例を示す図である。 図26は、第3の実施形態に係る辺番号付けを説明するための他の例を示す図である。 図27は、第3の実施形態において生成される隣接行列の一例を示す図である。 図28は、第3の実施形態に係るグラフの接続行列の一例を示す図である。 図29は、第3の実施形態に係るグラフの頂点1〜4に対する成分符号の検査行列の一例を示す図である。 図30は、第3の実施形態に係るグラフの頂点5〜7に対する成分符号の検査行列の一例を示す図である。 図31は、第3の実施形態に係るグラフ符号の検査行列の一例を示す図である。 図32は、第4の実施形態において例示するグラフのグラフ構造を示す図である。 図33は、図32に示すグラフの隣接行列の例を示す図である。 図34は、第4の実施形態に係る辺番号付けを説明するための例を示す図である。 図35は、第4の実施形態に係る辺番号付けを説明するための他の例を示す図である。 図36は、第4の実施形態において生成される隣接行列の一例を示す図である。 図37は、第4の実施形態に係るグラフの接続行列の一例を示す図である。 図38は、第4の実施形態に係るグラフ符号の検査行列の一例を示す図である。
以下に添付図面を参照して、実施形態に係るメモリシステムを詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。
(第1の実施形態)
まず、第1の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。図1は、第1の実施形態に係るメモリシステムの概略構成例を示すブロック図である。図1に示すように、メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とを備える。メモリシステム1は、ホスト30と接続可能であり、図1ではホスト30と接続された状態が示されている。ホスト30は、例えば、パーソナルコンピュータ、携帯端末などの電子機器であってよい。
不揮発性メモリ20は、データを不揮発に記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリ(以下、単にNANDメモリという)である。以下の説明では、不揮発性メモリ20としてNANDメモリが用いられた場合を例示するが、不揮発性メモリ20として3次元構造フラッシュメモリ、ReRAM(Resistance Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)等のNANDメモリ以外の記憶装置を用いることも可能である。また、不揮発性メモリ20が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
メモリシステム1は、いわゆるSSD(Solid State Drive)や、メモリコントローラ10と不揮発性メモリ20とが1つのパッケージとして構成されるメモリカード等、不揮発性メモリ20を備える種々のメモリシステムであってよい。
メモリコントローラ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からの読み出し処理を行う。
データバッファ12は、メモリコントローラ10がホスト30から受信したユーザデータを不揮発性メモリ20へ記憶するまでに一時格納する。また、データバッファ12は、不揮発性メモリ20から読み出されて復元されたユーザデータをホスト30へ送信するまでに一時格納する。データバッファ12には、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリを用いることができる。
符号化/復号部14は、データバッファ12に一旦格納されたユーザデータを符号化して、不揮発性メモリ20へ書き込まれる符号語を生成する。また、符号化/復号部14は、不揮発性メモリ20から読み出された受信語を復号してユーザデータを復元する。そこで符号化/復号部14は、符号化器(Encoder)17と復号器(Decoder)18を備える。なお、符号化/復号部14により符号化されるデータには、ユーザデータ以外にも、メモリコントローラ10内部で用いる制御データ等が含まれてもよい。
制御部11は、メモリシステム1の各構成要素を統括的に制御する。制御部11は、ホスト30からホストI/F15経由で命令を受けた場合に、その命令に従った制御を行う。例えば、制御部11は、ホスト30からの書き込み要求に従って、当該書込み要求と共にホスト30から受信してデータバッファ12内に蓄積されたユーザデータの不揮発性メモリ20への書き込みをメモリI/F13へ指示する。また、制御部11は、ホスト30からの読出し要求に従って、不揮発性メモリ20からのユーザデータの読み出しをメモリI/F13へ指示する。
また、制御部11は、ホスト30から書込み要求を受信した場合、当該書込み要求と共にホスト30から受信してデータバッファ12に蓄積されたユーザデータに対して、不揮発性メモリ20上の格納領域(メモリ領域)を決定する。すなわち、制御部11は、ユーザデータの書込み先を管理する。ホスト30から受信したユーザデータの論理アドレスと該ユーザデータが格納された不揮発性メモリ20上の格納領域を示す物理アドレスとの対応はアドレス変換テーブルとして格納される。
また、制御部11は、ホスト30から読出し要求を受信した場合、読出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読み出しをメモリI/F13へ指示する。
NANDメモリでは、一般に、ページと呼ばれるデータ単位で、書き込み及び読み出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。本実施形態では、この同一のワード線に接続される複数のメモリセルをメモリセルグループと呼ぶ。メモリセルがシングルレベルセル(SLC)である場合は、1つのメモリセルグループが1ページに対応する。メモリセルがマルチレベルセル(MLC)である場合は、1つのメモリセルグループが複数ページに対応する。また、各メモリセルはワード線に接続するとともにビット線にも接続される。したがって、各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
次に、本実施形態の書込み処理について説明する。制御部11は、不揮発性メモリ20への書込み時に、ユーザデータの符号化を符号化器17に指示する。その際、制御部11は、不揮発性メモリ20における符号語の格納場所(格納アドレス)を決定し、決定した格納場所もメモリI/F13へ指示する。
符号化器17は、制御部11からの指示に基づいて、データバッファ12上のユーザデータを符号化して符号語を生成する。符号化方式としては、後述するように、例えば、BCH(Bose-Chandhuri-Hocquenghem)符号のような代数的符号を用いた符号化方式や、LDPC(Low-Density Parity-Check)符号のような疎グラフに基づく符号を用いた符号化方式とを採用することができる。メモリI/F13は、制御部11から指示された不揮発性メモリ20上の格納場所へ符号語を格納する制御を行う。
次に、本実施形態の不揮発性メモリ20からの読出し時の処理について説明する。制御部11は、不揮発性メモリ20からの読出し時に、不揮発性メモリ20上のアドレスを指定してメモリI/F13へ読み出しを指示する。また、制御部11は、復号器18へ復号の開始を指示する。メモリI/F13は、制御部11の指示に従って、不揮発性メモリ20の指定されたアドレスから受信語を読み出し、読み出した受信語を復号器18に入力する。復号器18は、この不揮発性メモリ20から読み出された受信語を復号する。
つづいて、本実施形態において、符号化器17が符号化の際に使用する符号化用データを生成する構成及びその動作について、以下に図面を参照して詳細に説明する。
図2は、本実施形態に係る符号化用データ生成装置の概略構成例を示すブロック図である。なお、以下の説明では、頂点数V(Vは1以上の整数)の無向グラフ(以下、単にグラフという)Gが与えられるものとする。その場合、グラフ符号の成分符号数はVとなる。また、本説明では、グラフの2頂点間に複数の辺があってもよいものとする。
図2に示すように、符号化用データ生成装置100は、第1〜第V成分符号検査行列生成部1021〜102Vと、第1〜第V成分符号検査行列記憶部1031〜103Vと、グラフ構造定義データ記憶部104と、グラフ接続行列生成部105と、グラフ接続行列記憶部106と、グラフ符号検査行列計算部121と、グラフ符号冗長部計算用データ計算部123とを備える。なお、以下の説明において、第1〜第V成分符号検査行列生成部1021〜102Vを区別しない場合、成分符号検査行列生成部102という。同様に、第1〜第V成分符号検査行列記憶部1031〜103Vを区別しない場合、成分符号検査行列記憶部103という。
図2に示す構成において、第1〜第V成分符号検査行列生成部1021〜102V及び第1〜第V成分符号検査行列記憶部1031〜103Vは、それぞれグラフGの各頂点に対して設けられる。各成分符号検査行列生成部102は、各成分符号の符号長及び情報長等を定義する成分符号基本データ101を入力し、入力された成分符号基本データ101に基づいて各頂点における成分符号の検査行列(以下、成分符号検査行列という)を生成して出力する。また、各成分符号検査行列記憶部103は、それぞれが対応する成分符号検査行列生成部102から出力された成分符号検査行列を記憶する。
なお、本実施形態において、各成分符号検査行列は、組織符号型H=(P I)であり(Iは単位行列)、情報部に対応する部分行列P(図2における第1〜第V成分符号検査行列情報部1111〜111Vに対応)と、冗長部に対応する部分行列I(図2における第1〜第V成分符号検査行列冗長部1121〜112Vに対応)とに分けることができるものである。以下の説明において、第1〜第V成分符号検査行列情報部1111〜111Vを区別しない場合、成分符号検査行列情報部111という。同様に、第1〜第V成分符号検査行列冗長部1121〜112Vを区別しない場合、成分符号検査行列冗長部112という。
グラフ構造定義データ記憶部104は、グラフGの隣接行列など、グラフGの構造を定義するためのデータ(グラフ構造定義データ)を記憶する。グラフ接続行列生成部105は、各成分符号の検査行列、又は、各成分符号の情報部の長さ及び冗長部の長さを入力とし、これらの入力された情報に対してグラフ構造定義データ記憶部104から入力されたグラフ構造定義データを用いることで、グラフ符号における冗長部の長さを最小化するようなグラフGの接続行列(以下、グラフ接続行列という)を生成して出力する。また、グラフ接続行列記憶部106は、グラフ接続行列生成部105から出力されたグラフ接続行列を記憶する。
なお、本実施形態において、グラフ接続行列は、後述するように、情報部に対応する部分行列(図2におけるグラフ接続行列情報部113に対応)と、冗長部に対応する部分行列(図2におけるグラフ接続行列冗長部114に対応)とに分けることができるものである。
グラフ符号検査行列計算部121は、それぞれの頂点における成分符号検査行列及びグラフ接続行列を入力として、グラフ符号の検査行列(以下、グラフ符号検査行列という)122を計算して出力する。グラフ符号検査行列計算部121における計算では、各成分符号検査行列に関し、成分符号検査行列情報部111がグラフ接続行列情報部113と作用し、成分符号検査行列冗長部112がグラフ接続行列冗長部114と作用する。それにより、グラフ符号検査行列122が計算されて出力される。
グラフ符号冗長部計算用データ計算部123は、グラフ符号検査行列122を入力として、グラフ符号冗長部計算用データ(符号化用データ)124を出力する。その際、グラフ接続行列生成部105においてグラフGの各頂点間を結ぶ辺の番号付け(以下、単に辺番号付けという)を工夫することで、グラフ符号検査行列122をRichardson-Urbanke(RU)法による符号化に適用可能な形とすることが可能となる。その結果、後述するように、グラフ符号冗長部計算用データ(符号化用データ)124を最小化することが可能となる。
つづいて、図2におけるグラフ接続行列生成部105の動作について、図面を参照して詳細に説明する。図3は、本実施形態に係るグラフ接続行列生成部の概略動作例を示すフローチャートである。図3に示すように、本動作では、グラフ接続行列生成部105は、まずグラフGの隣接行列(以下、グラフ隣接行列という)を作成する(ステップS101)。つづいて、グラフ接続行列生成部105は、情報部と冗長部とに分けたグラフGの頂点間を結ぶ辺を番号付けする(ステップS102)。そして、グラフ接続行列生成部105は、作成したグラフ隣接行列及び各辺の番号に基づいてグラフ接続行列を作成し(ステップS103)、本動作を終了する。
つづいて、図3に示すフローチャートにおける各ステップの詳細について、図面を参照して詳細に説明する。
まず、図3のステップS101に示す動作(グラフ隣接行列の作成動作)について説明する。ここで、頂点数VのグラフGを表現する隣接行列をAとすると、隣接行列AはV×V行列となる。隣接行列Aの各行及び各列は、それぞれグラフGの頂点に対応している。また、隣接行列Aの各行及び各列には、2頂点の間に辺がある場合はその辺の数が格納され、辺がない場合は0が格納される。なお、本実施形態において、隣接行列Aは、対角成分が0の対称行列である。
例えば、図4で表されるグラフGが与えられたとき、その隣接行列Aは、図5に示す行列で表すことができる。ここで、図4における白丸内の数字は、それぞれの頂点番号を表している。また、図5における隣接行列Aの外側に割り振られている数字は、それぞれの行または列が対応している頂点の番号を表している。なお、図4で表されるグラフGは、完全3部グラフである。ここで、完全M部グラフとは、グラフの頂点をM(Mは2以上の整数)個の部分集合に分割したとき、各部分集合の頂点同士の間には辺がなく、かつ異なる部分集合内の頂点同士の間には必ず辺が存在するグラフのことである。
次に、図3のステップS102に示す動作(グラフの辺番号付けを行う動作)について説明する。図3のステップS102に示す動作は、グラフ符号冗長部計算用データ(符号化用データ)124を最小化する上で重要な動作である。グラフの辺番号付けでは、ある頂点につながる全ての辺に対して番号をつけるという動作が全ての頂点に対して実行される。これは、隣接行列Aの非零要素を辺番号で置き換えることに対応する。ただし、隣接行列Aは対称行列であるため、上三角部分について番号付けを行えば十分である。本発明においては、各頂点につながる辺々を、情報部に対応する辺集合と、冗長部に対応する辺集合とにクラス分けし、それぞれの集合に対して別々に辺番号付けを行うことにより、最終的に得られる検査行列を所望の形にすることで、グラフ符号冗長部計算用データ(符号化用データ)124の削減を図っている。具体的なアルゴリズム(隣接行列を用いた辺番号付けアルゴリズム)については、つぎに説明する。
隣接行列を用いた辺番号付けアルゴリズムの実行にあたっては、次の3つの条件が仮定される。第1に、隣接行列の上三角部分のみ考える。第2に、各頂点jにおける非零要素の値の合計値をn(j)とし、成分符号の冗長部長さをp(j)とする。第3に、情報部に対応する辺集合をE(i)と表し、冗長部に対応する辺集合をE(r)と表す。
隣接行列を用いた辺番号付けアルゴリズムの実行では、第1に、辺のクラス分けが行なわれ、第2に、辺番号付けが行なわれる。
辺のクラス分けでは、第j(jは1以上の整数)行の非零要素について、列番号の若い方から順に値を加算していき、その合計値が(n(j)−p(j))より大きくなる前後でクラス分けをする。すなわち、合計値が(n(j)−p(j))以下になるまでの非零要素をE(i)に含め、それ以外の非零要素をE(r)に含めるようにクラス分けが実行される。この動作は、j=1,2,…,Vに対して実行される。その際、合計値が(n(j)−p(j))より大きくならない行がある場合には、その行については、全ての非零要素がE(i)に含められる。
辺番号付けでは、前述の動作を行った結果として得られた、辺集合E(i)に含まれる要素数をN(E(i))とし、要素の合計値をS(E(i))とし、辺集合E(r)に含まれる要素数をN(E(r))とし、要素の合計値をS(E(r))とする。辺集合E(i)に含まれる辺の番号付けでは、1からS(E(i))までの番号が、漏れなく且つ重複なく、全ての要素に対して割り振られる。このとき、ある要素の値をkとすると、その要素にはk個の連続した番号を割り振ることとする(すなわち、1つの辺に対しては1つの番号が割り振られる)。辺集合E(r)に含まれる辺の番号付けは、E(r)に含まれるのが早い順に、S(E(i))+1,S(E(i))+2,…,S(E(i))+S(E(r))の順で番号を割り振る。ここでも、ある要素の値がkのときは、その要素にはk個の連続した番号を割り振ることとする。
以上のようなアルゴリズムを、図4で表されるグラフGに対する辺番号付けを例に挙げて説明する。なお、本例では、各頂点における成分符号の冗長部長さは3とする。1番目の頂点につながる辺のクラス分けは、グラフGで見ると図6のように表される。ここで、点線の辺は情報部辺集合に含まれ、一点破線の辺は冗長部辺集合に含まれることとする。同様に、2番目の頂点につながる辺のクラス分けは図7のように表される。同様の手続きを残り全ての頂点について繰り返すことで、図8に示すように、隣接行列Aの上三角部分に含まれる全ての辺のクラス分けを行うことができる。ここで、点線枠で囲まれた部分801は情報部辺集合を表し、一点破線枠で囲まれた部分802は冗長部辺集合を表している。
次に、クラス分けを利用して辺番号付けを行う。情報部辺集合に含まれる辺の番号付けは、この集合に含まれたのが早い順に若い番号付けを行うものとする。ここで、情報部辺集合に含まれる辺の数が15であることに注意すると、1番目の頂点につながる辺の番号付けは、図9のように表される。同様に、2番目の頂点につながる辺の番号付けは、図10のように表される。同様の手続きを残り全ての頂点について繰り返すことで、全ての辺に番号付けを行うことができる。これを隣接行列Aの要素を置き換えることで実行すると、最終的に得られる行列は図11のように表される。図11に示すように、部分1102の冗長部辺集合に含まれる辺の番号は、部分1101の情報部辺集合に含まれるどの辺よりも番号が大きくなっている。
次に、図3のステップS103に示す動作(グラフ接続行列の作成動作)について説明する。ここで、頂点数V、辺数EのグラフGを表現する接続行列をBとすると、BはV×E行列となる。接続行列Bの各行は頂点に、各列は辺に、それぞれ対応している。また、接続行列Bの各行及び各列には、頂点と辺が接続している場合には1が格納され、接続していない場合には0が格納される。
例えば、図11で表されるような辺番号行列が得られているとき、辺番号行列の各行の非零要素の値に対応する接続行列Bの列に1が格納され、その他の列については0が格納されることで、最終的に接続行列Bが得られる。したがって、図4で表されるグラフGの接続行列は、図12のように表される。ここで、点線枠で囲まれた部分1201は情報部辺集合に対応する部分を表し、一点破線枠で囲まれた部分1202は冗長部辺集合に対応する部分を表している。なお、行列の外側に割り振られている数字は、行についてはその行が対応する頂点の番号、列についてはその列が対応する辺の番号を表す。
次に、図2に示す符号化用データ生成装置100におけるグラフ符号検査行列計算部121が行うグラフ符号の検査行列を得る動作について説明する。グラフ符号の検査行列は、グラフGの各頂点において定義される成分符号の検査行列と、グラフGの接続行列とから構成される。グラフ符号の検査行列を作成する具体的なアルゴリズム(グラフ符号の検査行列作成アルゴリズム)は以下の通りである。なお、当該アルゴリズムの実行においては、次の3つの条件が仮定される。第1に、上述した動作によりグラフGの接続行列が得られているとする。第2に、接続行列の第j行における1の個数をn(j)とし、先頭部分からk=1,2,…,n(j)とラベル付けされているとする。第3に、グラフGの各頂点における成分符号の検査行列は組織符号型(後方部分が単位行列)であるとする。
グラフ符号の検査行列作成アルゴリズムでは、接続行列の第j行において、第k番目の1要素が、成分符号の検査行列の第k列ベクトルで置き換えられる。0要素については、零列ベクトルで置き換えられる。以上の動作がj=1,2,…,Vで実行される。
例として、図4で表されるグラフGにより定まるグラフ符号の検査行列を構成する場合について説明する。グラフGの接続行列は、上述したように、図12のように表される。グラフGの各頂点における成分符号の検査行列は、頂点1から6については図13に示す式により与えられ、頂点7から10については図14に示す式により与えられるとする。ここで、図13及び図14における点線枠で囲まれた部分1301及び1401は情報部を表しており、一点破線枠で囲まれた部分1302及び1402は冗長部を表している。その場合、グラフ符号の検査行列Hは、図15のように与えられる。図15に示すように、接続行列の点線枠で囲まれた情報部に対応する部分1501は、成分符号検査行列の情報部1511で置き換えられる。また、一点破線枠で囲まれた冗長部に対応する部分1502は、成分符号検査行列の冗長部1512で置き換えられる。これは、図2に示す符号化用データ生成装置100では、成分符号検査行列の情報部がグラフ接続行列の情報部と作用し、成分符号検査行列の冗長部がグラフ接続行列の冗長部と作用していることに対応している。なお、ここでは符号のシンボルが2元の場合を例に説明したが、多元であってもよい。
以上の説明に基づき、グラフ符号の検査行列作成アルゴリズムを実行すると、グラフ符号の検査行列Hは、以下の式(1)で表される。
Figure 2019057806
式(1)において、Iは単位行列である。また、部分行列A,B,C,D,E及びIを、第1〜第6部分行列ともいう。ここで、成分符号の冗長部長さがグラフGの辺本数と非整合である場合、適切に列置換を施すことによって検査行列Hを式(1)の形にすることができる。また、Hがフルランクでない場合、Hの下側部分行列、すなわち(C,D,E)からなる行列中の線形従属な行を除いたものを、グラフ符号の検査行列Hとして再定義する。グラフ符号の符号長をN、情報長をKと表すと、Aは(N−K−g)×K行列、Bは(N−K−g)×g行列、Cはg×K行列、Dはg×g行列、Eはg×(N−K−g)行列となる。なお、g<N−Kであり、gは単位行列部分が大きくなればなるほど小さくなる。
図3のステップS103に示したグラフ接続行列を得るための動作は、単位行列部分を最大化してgを最小化するためのアルゴリズムである。したがって、式(1)に示す検査行列Hから定義される符号の符号語は、以下に説明するRU法により求めることができる。符号語をc=(i,p,p)と表すと、Hc=0より、符号語cは次の検査方程式(2)及び(3)を満たす。
Figure 2019057806

Figure 2019057806
ここで、φ=−EB+Dであり、φ−1はφの逆行列である。行列φが正則でない場合、グラフ符号の検査行列を適切に列置換することにより、グラフ符号冗長部計算用データ(符号化用データ)124であるφ−1を求めることができる。具体的には、次に述べる方法で行列φを正則にすることができる。まず、式(1)で表される行列Hの下部の行列(C D E)を行基本変形により(C’ D’ O)の形に変換する。なお、この行列の行ベクトルらは線形独立である。次に、(C’ D’ O)に行基本変形と列置換を行うことで、(C’ D’ O)を(C” I O)の形に変換する。これらの行基本変形と列置換を行列H上に拡張した操作を行うことで、その操作により得られる行列から得られる行列φが正則となる。
以上のように生成されたグラフ符号冗長部計算用データ(符号化用データ)124であるφ−1は、メモリシステム1におけるデータバッファ12や符号化/復号部14内のメモリ等(符号化データ保持部ともいう)に保持され、符号化/復号部14における符号化器17が符号化を実行する際に使用される。以下、本実施形態に係る符号化器17による符号化について、図面を参照して詳細に説明する。
図16は、本実施形態に係る符号化器の概略構成例を示すブロック図である。図16に示すように、符号化器17は、行列C乗算部202、行列A乗算部204、行列−E乗算部206、行列−φ−1乗算部210、及び、行列−B乗算部212と、ベクトル加算部208及び214とを備える。
つづいて、図16に示す符号化器17の符号化動作を、図17に示すフローチャートを用いて説明する。図17は、本実施形態に係る符号化器が実行する符号化動作の一例を示すフローチャートである。
図17に示すように、符号化器17は、まず、情報語(i)201を読み込む(ステップS201)。ここで、情報語(i)は、例えば、ホスト30からの書込み要求で指定されたユーザデータの一部又は全部である。読み込んだ情報語(i)201は、行列C乗算部202と行列A乗算部204とにそれぞれ入力される。これに対し、行列C乗算部202は、入力された情報語(i)201に対して部分行列Cを乗算することで部分行列(Ci)203を計算し、行列A乗算部204は、入力された情報語(i)201に対して部分行列Aを乗算することで部分行列(Ai)205を計算する(ステップS202)。行列A乗算部204により計算された部分行列(Ai)205は、行列−E乗算部206に入力される。行列−E乗算部206は、入力された部分行列(Ai)205に対して部分行列−Eを乗算することで部分行列(−EAi)207を計算する(ステップS203)。
以上のようにして、行列C乗算部202により計算された部分行列(Ci)203及び行列−E乗算部206により計算された部分行列(−EAi)207は、ベクトル加算部208に入力される。ベクトル加算部208は、部分行列(Ci)203と部分行列(−EAi)207とを加算することで、部分行列((−EA+C)i)209を計算する(ステップS204)。ベクトル加算部208で計算された部分行列((−EA+C)i)209は、行列−φ−1乗算部210に入力される。行列−φ−1乗算部210は、入力された部分行列((−EA+C)i)209に対して上述の式(2)に相当する動作を行うことにより、冗長部(p)211を計算する(ステップS205)。
行列−φ−1乗算部210で計算された冗長部(p)211は、行列−B乗算部212に入力される。行列−B乗算部212は、入力された冗長部(p)211に対して部分行列−Bを乗算することで部分行列(−Bp)213を計算する(ステップS206)。行列−B乗算部212で計算された部分行列(−Bp)213は、ベクトル加算部214に入力される。ベクトル加算部214には、ステップS202において行列A乗算部204により計算された部分行列(Ai)205も入力される。ベクトル加算部214は、入力された部分行列(−Bp)213及び部分行列(Ai)205を用いて式(3)に相当する動作を行うことにより、冗長部(p)215を計算する(ステップS207)。
このようにして、冗長部(p)211及び(p)215を算出すると、符号化器17は、ステップS201で入力された情報語(i)201と冗長部(p)211及び(p)215とを連接することで、符号語(c)216を作成し、作成した符号語(c)216を出力して(ステップS208)、本動作を終了する。
なお、図17に示す動作において、部分行列A、B、C、D及びEは、グラフGの接続行列及び各頂点における成分符号の検査行列から構成される。そのため、符号化器17は、これらの部分行列を符号化用データとして保持しておかなくてもよい。すなわち、符号化器17は、グラフ符号冗長部計算用データ(符号化用データ)124としてφ−1を保持していればよい。なお、必要なグラフ符号冗長部計算用データ(符号化用データ)124のサイズは、φ−1のサイズg×gに相当する。上述において図3を用いて説明したグラフ接続行列生成動作においてステップS102に示すような動作(グラフの辺番号付けを行う動作)を行うのは、このgを最小化するためである。gを最小化することで、グラフ符号冗長部計算用データ計算部123で生成されるグラフ符号冗長部計算用データ(符号化用データ)124を最小化することが可能となる。
以上のように、本実施形態によれば、グラフ接続行列が情報部と冗長部とに分割され、それぞれ独立に辺番号付けが実行される。それにより、グラフ符号の検査行列が右上階段行列型となり、符号の符号化に必要なデータサイズが大幅に削減されるため、符号化時に要求されるメモリのサイズを低減することが可能となる。その結果、効果的な符号化を行うことが可能となる。
また、本実施形態によれば、グラフ符号の構造をM部グラフとすることで、符号化器17の実装を容易にすることが可能となる。その際に、グラフ符号の構造を完全M部グラフとすることで、符号化器17の実装をさらに容易にすることが可能となる。
(第2の実施形態)
つぎに、第2の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。本実施形態では、上述した第1の実施形態において、グラフ符号の成分符号にBCH符号を用いた場合を例示する。なお、本実施形態に係る符号化器を含むメモリシステムの構造は、第1の実施形態において例示したメモリシステム1と同様であってよいため、ここでは重複する説明を省略する。また、本実施形態に係るグラフ符号冗長部計算用データ(符号化用データ)を算出するための構成及び動作も、第1の実施形態で例示した構成及び動作と同様であってよいため、ここでは重複する説明を省略する。
本実施形態の説明にあたり、頂点数V、辺数Eの無向グラフGが与えられ、それぞれの頂点において検査行列HBCHにより定義されるBCH符号が与えられているとする。ここで、HBCHは組織符号型であるとする。第1の実施形態で例示した動作により、グラフGの各辺に辺番号付けを行い、RU法による符号化が可能な形の接続行列Bを得たとする。このとき、Bの各非零要素をHBCHの列ベクトルで適切に置き換える操作により、以下の式(4)で表される、RU法により符号化可能なグラフ符号の検査行列Hを得ることができる。なお、式(4)において、Iは単位行列である。
Figure 2019057806
グラフ符号の符号長をN、情報長をKと表すと、Aは(N−K−g)×K行列、Bは(N−K−g)×g行列、Cはg×K行列、Dはg×g行列、Eはg×(N−K−g)行列となる。なお、g<N−Kである。
ここで、Hの部分行列X(X=A,B,C,D,E,I)に変換されるBの部分行列をB(X)と定義すると、Bは式(4)に基づいて以下の式(5)により表される。
Figure 2019057806
(X)のv行e列成分をbv,e(X)と表す。また、B(A)に対応する頂点集合をV、B(C)に対応する頂点集合をVと表すことにする。その場合、上述した式(4)に示す検査行列Hから定義されるグラフ符号の符号語c=(i,p,p)は、Hc=0より、次の式(6)及び(7)に示す関係式を満たす。
Figure 2019057806

Figure 2019057806
ここで、φ=EB+Dであり、φ−1はφの逆行列である。なお、本説明では2元符号を想定しているため、正負の符号の区別はつけていない。
式(4)で表されるグラフ符号の検査行列HはBCH符号の検査行列HBCHから構成されていること、および行列A、B、C及びEはHの部分行列であることを考えると、式(6)及び(7)中の行列とベクトルとの積の計算は、HBCHの部分行列とベクトルとの積の計算に分解することができる。
ここで、組織符号型のBCH符号検査行列HBCH=[h … h]およびそのBCH符号の生成多項式に対応する線形フィードバックシフトレジスタ(以降LFSRと呼ぶ)が与えられているとする。BCH符号の冗長部長さがrのとき、このLFSRは、r個の記憶素子がmod2の加算回路で結線されたフィードバック接続で構成されるシフトレジスタ回路である。
LFSRには、クロック毎にデータが入力される。LFSRの記憶素子内にすでに格納されていたデータは、クロック毎に隣接する記憶素子へ移される。したがって、情報語や受信語をLFSRに入力することで、BCH符号の符号化や復号を行うことができる。また、LFSRを用いて組織符号型検査行列とベクトルとの積を計算することもできる。
具体的には、HBCHとベクトルw=(w,w,…,w)との積は、LFSRにwの各要素を順次入力し、全て入力し終わったときに、LFSRに格納されているビット系列と一致する。ここで、HBCHから(d,d,…,d)番目のs本の列ベクトルを取り除き、HBCHの部分行列H’BCH=[h’h’ … h’n−s]をつくることを考える。また、長さ(n−s)のベクトルv=(v,v,…,vn−s)が与えられたとして、(d,d,…,d)番目の要素を0とし、それ以外の要素をvとし、それらの要素を若い順に先頭から格納することで、長さnのベクトルw=(w,w,…,w)を作成する。このとき、H’BCHとベクトルvとの積は、HBCHとベクトルwの積と一致することが容易に確認できる。したがって、HBCHの部分行列H’BCHとベクトルvとの積は、vから定義したwの各要素をHBCHに対応するLFSRに順次入力し、全て入力し終わったときに、LFSRに格納されているビット系列と一致することが分かる。
以上の説明から、式(6)及び(7)中の行列とベクトルとの積の計算は、HBCHの部分行列とベクトルとの積の計算に分解することができ、その計算はLFSRにより実行することができることが分かる。以下に、成分符号がBCH符号の場合のLFSRを用いた符号化アルゴリズム及び回路における動作について説明する。なお、符号化アルゴリズムの実行においては、次の7つの条件を想定する。第1に、長さKの情報語i=(i,i,…,i)が与えられているとする。第2に、各頂点vにおいて、符号長n、パリティ長rのBCH符号を定める。第3に、各頂点vにおいて、定められているBCH符号に対応するシフトレジスタLFSR(v)を用意する。また、カウンタCNT(v)も用意する。これらは当初、0に初期化されているとする。第4に、頂点集合Vに対応するLFSRを上部LFSR群、頂点集合Vに対応するLFSRを下部LFSR群と呼ぶ。第5に、長さNの符号語を格納するためのメモリである符号語メモリを用意する。このメモリは、長さKの情報語iを格納する部分である情報部226a、長さgのpを格納する部分である第1パリティ部226b、長さ(N−K−g)のpを格納する部分である第2パリティ部226cに分けられている。第6に、符号語メモリに格納されている各ビットは、セレクタを通して各LFSRに入力される。このとき、セレクタはグラフGの接続行列Bに従って入力ビットが振り分けられる。第7に、φ−1乗算回路は、入力されたベクトルとφ−1との積の演算結果を出力する。
図18〜図21は、本実施形態に係るLFSRを用いた符号化アルゴリズムを実現するための符号化回路の構成例を示す図である。図18〜図21に示すように、符号化回路220は、セレクタ221と、上部LFSR群222と、下部LFSR群223と、φ−1乗算回路224と、ベクトル加算器225と、符号語メモリ226とを備える。
図18〜図21に示す符号化回路220において実現されるLFSRを用いた符号化アルゴリズムでは、まず、部分行列Ai及びCiが計算される。この計算では、図18に示すように、まず、符号語メモリ226内の情報部226aに格納されている情報語i=(i,i,…,i)が若い要素順に順次、セレクタ221に入力される。セレクタ221では、iが入力のときは、bv,j(A)=1またはbv,j(C)=1となるLFSR(v)を選択してiを入力する。このとき、不図示のカウンタCNT(v)が1インクリメントされる。
つづいて、全ての情報語iのセレクタ221への入力が終了した場合、上部LFSR群222に対し、(n−CNT(v))回、0が入力される。これにより、上部LFSR群222には、Ai=(a,a,…,aN−K−gの演算結果が格納されていることになる。一方、下部LFSR群223には、Ciの途中演算結果が格納されている。
つづいて、上部LFSR群222に格納されているAiが符号語メモリ226の第2パリティ部226cに格納される。
つぎに、LFSRを用いた符号化アルゴリズムでは、E(Ai)+Ciが計算される。この計算では、図19に示すように、まず、符号語メモリ226内の第2パリティ部226cに格納されているAi=(a,a,…,aN−K−gが若い要素順に順次、セレクタ221に入力される。セレクタ221では、iが入力のときは、bv,j(E)=1となる下部LFSR群223のLFSR(v)を選択してiを入力する。このとき、不図示のカウンタCNT(v)が1インクリメントされる。ここで、カウンタCNT(v)は、Ciの計算の際にインクリメントされている値からさらにインクリメントされることに注意する。
つづいて、全てのAiのセレクタ221への入力が終了した場合、下部LFSR群223に対し、(nv−CNT(v))回、0が入力される。これにより、下部LFSR群223には、E(Ai)+Ciの演算結果が格納されていることになる。なお、ここでは、LFSRの線形性を利用して、CiとE(Ai)との和が計算されていることに注意する。
つぎに、LFSRを用いた符号化アルゴリズムでは、p =φ−1(EA+C)iが計算される。この計算では、図20に示すように、まず、下部LFSR群223に格納されている(EA+C)iがφ−1乗算回路224に入力され、φ−1(EA+C)iが計算される。計算されたp =φ−1(EA+C)iは、符号語メモリ226の第1パリティ部226bに格納される。
つぎに、LFSRを用いた符号化アルゴリズムでは、p =Ai+Bp が計算される。この計算では、図21に示すように、符号語メモリ226内の第1パリティ部226bに格納されているp=(q,q,…,q)が若い要素順に順次、セレクタ221に入力される。セレクタ221では、qが入力のときは、bv,j(B)=1となる上部LFSR群222のLFSR(v)を選択してqを入力する。
つづいて、全てのpの入力が終了した場合、上部LFSR群222に対し、p回、0を入力する。これにより、上部LFSR群222には、Bp の演算結果が格納されていることになる。
つづいて、上部LFSR群222に格納されているBp と、符号語メモリ226内の第2パリティ部226cに格納されているAiとがベクトル加算器225に入力されてBp とAiとの排他的論理和が演算され、その結果が符号語メモリ226内の第2パリティ部226cに格納される。これにより、符号語メモリ226内の第2パリティ部226cには、p =Ai+Bp の演算結果が格納されていることになる。
以上で説明した動作が、本実施形態に係るLFSRを用いたグラフ符号の符号化アルゴリズムである。なお、グラフ符号の検査行列Hがランク落ちする場合、上述の動作に加えて、以下の動作が実行される。
第1に、検査行列Hの従属な行数をLとする。検査行列Hの従属な行に対応する頂点番号リストs=(s1,s2,…,sL)およびHBCHの行番号r=(r1,r2,…,rL)を記憶する。第2に、上述の符号化アルゴリズムの計算の中でLFSR(s)(j=1,2,…,L)の演算結果を出力する場合、r番目の記憶素子内の値は出力しない。
以上のような追加の動作を実行することにより、検査行列Hから従属な行を除いた行列とベクトルの計算結果を得ることができる。
つづいて、第1の実施形態において図4を用いて例示した、頂点数10の3部グラフに対して定められるグラフ符号を例として、LFSRを用いた符号化方法について説明する。本説明において、接続行列には図12で例示した接続行列を用い、頂点1〜6では図13で例示した検査行列から定義されるBCH符号が定められ、頂点7〜10では図14で例示した検査行列から定義されるBCH符号が定められているものとする。このとき、グラフ符号の検査行列Hは、図22のように表される。この場合、頂点1〜6では符号長7のBCH符号が、頂点7〜10では符号長6のBCH符号が、それぞれ定められる。また、グラフ符号の情報長KはK=3、符号長NはN=33、ギャップgはg=12となる。
上述したアルゴリズムに従う場合、以下の動作によりLFSRを用いた符号化を行うことができる。
・Ai,Ciの計算
まず、部分行列Ai及びCiの計算(図18参照)では、符号語メモリ226内の情報部226aに格納されている情報語i=(i,i,i)が若い要素順に順次、セレクタ221に入力され、上部LFSR群222に格納される。具体的には、iがLFSR(1)とLFSR(4)とに入力され、iがLFSR(1)とLFSR(5)とに入力され、iがLFSR(1)とLFSR(6)とに入力される。
つづいて、全ての情報語iを入力し終わると、LFSR(1)に4回、0が入力され、LFSR(4)、LFSR(5)及びLFSR(6)には6回、0が入力される。
以上により、Ai=(a,a,…,a18の計算結果が、上部LFSR群222を構成するLFSR(1)〜LFSR(6)に格納される。なお、Ciについては、Cが零行列であるため、演算結果0が格納される。このようにして得られた結果は、符号語メモリ226の第2パリティ部226cに格納される。
・(EA+C)iの計算
つぎに、E(Ai)+Ciの計算(図19参照)では、符号語メモリ226内の第2パリティ部226cに格納されているAi=(a,a,…,a18が若い要素順に順次、セレクタ221に入力され、下部LFSR群223に格納される。具体的には、aがLFSR(8)に入力され、aがLFSR(9)に入力され、aがLFSR(10)に入力され、同様の動作がa〜a18に対して実行される。
以上により、(EA+C)iの演算結果が、下部LFSR群223を構成するLFSR(7)〜LFSR(10)に格納される。なお、この場合は、シフトレジスタに0を入れる必要はない。
・p =φ−1(EA+C)iの計算
つぎに、p =φ−1(EA+C)iの計算(図20参照)では、LFSR(7)〜LFSR(10)に格納されている(EA+C)iがφ−1に掛けられる。これにより、p が得られる。得られた計算結果は、符号語メモリ226内の第1パリティ部226bに格納される。
・p =Ai+Bp の計算
つぎに、p =Ai+Bp の計算(図21参照)では、符号語メモリ226内の第1パリティ部226bに格納されているp=(q,q,…,q12)が若い要素順に順次、セレクタ221に入力され、上部LFSR群222に格納される。具体的には、qがLFSR(1)に入力され、qがLFSR(2)とLFSR(4)とに入力され、同様の動作がq〜q12に対して実行される。その後、全てのpを入力し終わると、LFSR(1)〜LFSR(6)にそれぞれ3回、0が入力される。
以上により、p =Ai+Bp の演算結果がLFSR(1)〜LFSR(6)に格納される。この結果と符号語メモリ226内の第2パリティ部226cに格納されているAiとの排他的論理和が演算され、その演算結果が符号語メモリ226内の第2パリティ部226cに格納される。これにより、符号語メモリ226内の第2パリティ部226cには、p =Ai+Bp の演算結果が格納されることになる。
以上のように、本実施形態によれば、成分符号としてBCH符号を用いる場合にも、第1の実施形態と同様に、符号化の演算を効率的に実行することが可能となる。なお、その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第3の実施形態)
つぎに、第3の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。上述した実施形態では、グラフの2頂点間が1つの辺で接続されている場合を例示した。これに対し、第3の実施形態では、グラフの2頂点間が複数の辺で接続されている場合を例に挙げて説明する。なお、本実施形態に係る符号化器を含むメモリシステムの構造は、第1の実施形態において例示したメモリシステム1と同様であってよいため、ここでは重複する説明を省略する。また、本実施形態に係る符号化器17の構成及び動作も、基本的には第1の実施形態で例示した構成及び動作と同様であってよいため、ここでは重複する説明を省略する。さらに、本実施形態は、第1の実施形態で例示したアルゴリズムと同様のアルゴリズムに従うものとして重複する説明を省略し、以下の説明では、グラフ符号の検査行列を得るための具体的な動作について着目するものとする。
まず、本実施形態におけるグラフの隣接行列を得る動作について説明する。本実施形態において、例えば図23で表されるグラフが与えられたとすると、その隣接行列は図24のように表される。図23に示すように、各頂点間が2つの辺で結ばれているため、図24に示すように、隣接行列Aには2が格納される。なお、図23における白丸内の数字はそれぞれの頂点番号を表し、図24における行列の外側に割り振られている数字は、それぞれの行または列が対応している頂点の番号を表している。また、図23で表されるグラフは2頂点間に2本の辺が存在する完全3部グラフであるとする。
次に、グラフの辺番号付けを行う動作について説明する。本説明では、辺のクラス分けと、辺の番号付けとが同時に実行されるものとする。また、情報部辺集合に含まれる辺の番号付けは、この集合に含まれたのが早い順に若い番号付けを行うものとする。各頂点における成分符号の冗長部長さが4という条件のもと、図23で表されるグラフに対する辺番号付けの動作を、図面を用いて説明する。
まず、1番目の頂点につながる辺の番号付けは、図25のように表される。ここで、冗長部長さが4であるため、頂点1とつながる辺の後方部分から4つの辺が冗長部辺集合に含まれている。同様に、2番目の頂点につながる辺の番号付けは、図26のように表される。同様の動作を残り全ての頂点3〜7について繰り返すことで、全ての辺に番号付けを行うことができる。これを隣接行列の要素を置き換えることで実行すると、最終的に得られる行列は、図27のように表される。ここで、点線枠で囲まれた部分2701は成分符号の情報部に対応する辺を表し、一点破線枠で囲まれた部分2702は成分符号の冗長部に対応する辺を表している。
次に、グラフの接続行列を得る動作について説明する。図23で表されるグラフの接続行列Bは図28のように表される。なお、行列の外側に割り振られている数字は、行についてはその行が対応する頂点の番号、列についてはその列が対応する辺の番号を表している。
次に、グラフ符号の検査行列を得る動作について説明する。グラフの接続行列は図28のように表され、グラフの各頂点における成分符号の検査行列は、頂点1〜4については図29に示すように与えられ、頂点5〜7については図30に示すように与えられるとする。ここで、図28において、点線枠で囲まれた部分2801は情報部辺集合に対応する部分を表し、一点破線枠で囲まれた部分2802は冗長部辺集合に対応する部分を表している。なお、図29及び図30において、点線枠で囲まれた部分2901及び3001は情報部を表し、一点破線枠で囲まれた部分2902及び3002は冗長部を表している。このとき、グラフ符号の検査行列Hは図31に示すように与えられる。
図31に示すように、接続行列の点線枠で囲まれた情報部に対応する部分3101は成分符号検査行列の情報部3111で置き換えられ、一点破線枠で囲まれた冗長部に対応する部分3102は成分符号検査行列の冗長部3112で置き換えられていることがわかる。これは、図2に示す符号化用データ生成装置100では、成分符号検査行列の情報部がグラフ接続行列の情報部と作用し、成分符号検査行列の冗長部がグラフ接続行列の冗長部と作用していることに対応している。
したがって、本実施形態におけるグラフ符号の検査行列Hは、以下の式(8)のように表される。ここで、Iは単位行列である。
Figure 2019057806
以上のように、本実施形態によれば、2頂点間に複数の辺が伸びているグラフ符号の場合にも、第1の実施形態と同様に、グラフ符号の符号化に必要なデータを最小化することが可能となる。なお、その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。
(第4の実施形態)
つぎに、第4の実施形態に係るメモリシステムについて、図面を参照して詳細に説明する。第4の実施形態では、上述した実施形態において、より一般的なグラフについてのグラフ符号の検査行列を得る場合を例示する。なお、本実施形態に係る符号化器を含むメモリシステムの構造は、第1の実施形態において例示したメモリシステム1と同様であってよいため、ここでは重複する説明を省略する。また、本実施形態に係る符号化器17の構成及び動作も、基本的には第1の実施形態で例示した構成及び動作と同様であってよいため、ここでは重複する説明を省略する。さらに、本実施形態では、第1の実施形態で例示したアルゴリズムと同様のアルゴリズムに従うものとして重複する説明を省略し、以下の説明では、より一般的なグラフについてのグラフ符号の検査行列を得る際の具体的な動作について言及する。
まず、本実施形態におけるグラフの隣接行列を得る動作について説明する。本実施形態において、例えば図32で表されるグラフが与えられたとき、その隣接行列は図33のように表される。図33に示すように、上述した第1及び第2の実施形態と異なり、本実施形態に係る隣接行列Aでは、対角ブロック部以外にも零要素が存在している。ここで、図32における白丸内の数字はそれぞれの頂点番号を表し、図33における行列の外側に割り振られている数字は、それぞれの行または列が対応している頂点の番号を表している。また、図32で表されるグラフは完全ではない3部グラフであるとする。
次に、グラフの辺番号付けを行う動作について説明する。本説明では、辺のクラス分けと、辺の番号付けとが同時に実行されるものとする。また、情報部辺集合に含まれる辺の番号付けは、この集合に含まれたのが早い順に若い番号付けを行うものとする。各頂点における成分符号の冗長部長さが4という条件のもと、図32で表されるグラフの辺番号付けの動作を、図面を用いて説明する。
まず、1番目の頂点につながる辺の番号付けは、図34のように表される。2番目の頂点につながる辺の番号付けは、図35のように表される。同様の手続きを残り全ての頂点について繰り返すことで、最終的に得られる行列は、図36のように表される。ここで、点線枠で囲まれた部分3601は成分符号の情報部に対応する辺を表し、一点破線枠で囲まれた部分3602は成分符号の冗長部に対応する辺を表している。
次に、グラフの接続行列を得る動作について説明する。図32で表されるグラフの接続行列Bは図37のように表される。ここで、点線枠で囲まれた部分3701は情報部辺集合に対応する部分を表し、一点破線枠で囲まれた部分3702は冗長部辺集合に対応する部分を表している。なお、行列の外側に割り振られている数字は、行についてはその行が対応する頂点の番号、列についてはその列が対応する辺の番号を表している。
次に、グラフ符号の検査行列を得る動作について説明する。グラフの接続行列は図37のように表され、グラフの各頂点における成分符号の検査行列は、頂点4、5、8及び9においては図13に例示したように与えられ、それ以外の頂点においては図14に例示したように与えられるとする。その場合、グラフ符号の検査行列Hは図38のように与えられる。
図38に示すように、接続行列の点線枠で囲まれた情報部に対応する部分3801は成分符号検査行列の情報部3811で置き換えられ、一点破線枠で囲まれた冗長部に対応する部分3802は成分符号検査行列の冗長部3812で置き換えられていることがわかる。これは、図2に示す符号化用データ生成装置100では、成分符号検査行列の情報部がグラフ接続行列の情報部と作用し、成分符号検査行列の冗長部がグラフ接続行列の冗長部と作用していることに対応している。
したがって、本実施形態におけるグラフ符号の検査行列Hは、以下の式(9)のように表される。ここで、Iは単位行列である。
Figure 2019057806
以上のように、本実施形態によれば、一般のグラフ符号の場合にも、第1の実施形態と同様に、符号化の演算を効率的に実行することが可能となる。なお、その他の構成、動作及び効果は、上述した実施形態と同様であるため、ここでは詳細な説明を省略する。なお、本実施形態ではグラフの1辺が2つの頂点と連結している例のみ説明したが、上述した実施形態において、グラフの1辺が2つ以上の頂点と連結していてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…メモリシステム、10…メモリコントローラ、11…制御部、12…データバッファ、13…メモリI/F、14…符号化/復号部、15…ホストI/F、16…内部バス、17…符号化器、18…復号器、20…不揮発性メモリ、30…ホスト、100…符号化用データ生成装置、101…成分符号基本データ、1021〜102V…第1〜第V成分符号検査行列生成部、1031〜103V…第1〜第V成分符号検査行列記憶部、104…グラフ構造定義データ記憶部、105…グラフ接続行列生成部、106…グラフ接続行列記憶部、1111〜111V…第1〜第V成分符号検査行列情報部、1121〜112V…第1〜第V成分符号検査行列冗長部、113…グラフ接続行列情報部、114…グラフ接続行列冗長部、121…グラフ符号検査行列計算部、122…グラフ符号検査行列、123…グラフ符号冗長部計算用データ計算部、124…グラフ符号冗長部計算用データ、201…情報語、202…行列C乗算部、203…部分行列Ci、204…行列A乗算部、205…部分行列Ai、206…行列−E乗算部、207…部分行列−EAi、208…ベクトル加算部、209…部分行列(−EA+C)i、210…行列−φ−1乗算部、211…冗長部p、212…行列−B乗算部、213…部分行列−Bp、214…ベクトル加算部、215…冗長部p、216…符号語c、220…符号化回路、221…セレクタ、222…上部LFSR群、223…下部LFSR群、224…φ−1乗算回路、225…ベクトル加算器、226…符号語メモリ、226a…情報部、226b…第1パリティ部、226c…第2パリティ部。

Claims (10)

  1. ホストと接続可能であって、
    不揮発性メモリと、
    前記ホストから受信したユーザデータの少なくとも一部を情報語としてグラフ符号により符号化する符号化器と、
    前記符号化器が前記情報語を符号化する際に使用する符号化用データを保持する符号化データ保持部と、
    前記符号化された符号語を前記不揮発性メモリへ書き込むメモリインタフェースと、
    を備え、
    前記グラフ符号の検査行列は、第1〜第6部分行列を含み、
    前記符号化器は、
    前記情報語と前記第1部分行列とが乗算された第7部分行列を取得し、
    前記情報語と前記第3部分行列とが乗算された第8部分行列を取得し、
    前記第7部分行列と正負が反転された前記第5部分行列とが乗算された第9部分行列を取得し、
    前記第9部分行列と前記第8部分行列とが加算された第10部分行列を取得し、
    前記第10部分行列と前記符号化用データとが乗算された第1パリティを取得し、
    前記第1パリティと正負が反転された前記第2部分行列とが乗算された第11部分行列を取得し、
    前記第11部分行列と前記第7部分行列とが加算された第2パリティを取得し、
    前記メモリインタフェースは、前記情報語と前記第1パリティと前記第2パリティとを前記符号語として前記不揮発性メモリに書き込む
    メモリシステム。
  2. 前記検査行列は、組織符号型であり、
    前記第1〜第6部分行列のうち前記第6部分行列は、単位行列である
    請求項1に記載のメモリシステム。
  3. 前記検査行列は、上段が前記第1、第2及び第6部分行列で構成され、下段が前記第3〜第5部分行列で構成された行列である請求項2に記載のメモリシステム。
  4. 前記符号化器は、
    前記情報語と前記第1部分行列とを乗算して前記第7部分行列を算出する第1乗算部と、
    前記情報語と前記第3部分行列とを乗算して前記第8部分行列を算出する第2乗算部と、
    前記第7部分行列と前記第5部分行列とを乗算して前記第9部分行列を算出する第3乗算部と、
    前記第9部分行列と前記第8部分行列とを加算して前記第10部分行列を算出する第1加算部と、
    前記第10部分行列と前記符号化用データとを乗算して前記第1パリティを算出する第4乗算部と、
    前記第1パリティと前記第2部分行列とを乗算して前記第11部分行列を算出する第5乗算部と、
    前記第11部分行列と前記第7部分行列とを加算して前記第2パリティを算出する第2加算部と、
    を備える請求項1に記載のメモリシステム。
  5. 前記グラフ符号は、BCH符号であり、
    前記符号化器は、
    少なくとも前記BCH符号の生成多項式に対応する数のシフトレジスタ群と、
    前記シフトレジスタへ前記情報語を分配するセレクタと、
    乗算器と、
    加算器と、
    前記情報語と前記第1パリティと前記第2パリティとを格納する符号語メモリと、
    を備え、
    前記シフトレジスタは、複数のシフトレジスタで構成された第1シフトレジスタ群と、複数の他のシフトレジスタで構成された第2シフトレジスタ群とを含み、
    前記セレクタは、前記符号語メモリに格納されている前記情報語を前記第1シフトレジスタ群に入力し、
    前記第1シフトレジスタ群は、前記セレクタによる前記情報語の入力に対して前記第7部分行列を計算し、
    前記符号語メモリは、前記第1シフトレジスタ群で計算された前記第7部分行列を格納し、
    前記セレクタは、前記符号語メモリに格納されている前記第7部分行列を前記第2シフトレジスタ群に入力し、
    前記第2シフトレジスタ群は、前記セレクタによる前記第7部分行列の入力に対して前記第8及び第9部分行列並びに前記第10部分行列を計算し、
    前記乗算器は、前記第2シフトレジスタ群で計算された前記第10部分行列に前記符号化用データを乗算することで前記第1パリティを計算し、
    前記符号語メモリは、前記乗算器で算出された前記第1パリティを格納し、
    前記セレクタは、前記符号語メモリに格納されている前記第1パリティを前記第1シフトレジスタ群に入力し、
    前記第1シフトレジスタ群は、前記セレクタによる前記第1パリティの入力に対して前記第11部分行列を計算し、
    前記加算器は、前記第1シフトレジスタ群で算出された前記第11部分行列と前記符号語メモリに格納されている前記第7部分行列とを加算することで前記第2パリティを計算し、
    前記符号語メモリは、前記加算器で算出された前記第2パリティを格納する
    請求項1に記載のメモリシステム。
  6. 前記符号化用データは、前記第5部分行列と前記第2部分行列とを乗算することで得られた部分行列の正負を反転した第12部分行列に前記第4部分行列を加算することで得られた部分行列の逆行列である請求項1に記載のメモリシステム。
  7. 前記符号化用データは、
    前記グラフ符号のグラフ構造を隣接行列により定めるデータを用いて前記符号化用データを最小化する接続行列を生成し、
    前記グラフ構造における各頂点の成分符号の検査行列および前記接続行列から前記グラフ符号の検査行列を計算し、
    前記グラフ符号の検査行列を用いて前記符号化用データを計算する
    ことで得られたデータである請求項1に記載のメモリシステム。
  8. 前記グラフ構造は、各頂点間が複数の辺で接続された構造を備える請求項7に記載のメモリシステム。
  9. 前記グラフ構造は、M部グラフ符号である請求項7に記載のメモリシステム。
  10. 前記グラフ構造は、完全M部グラフ符号である請求項7に記載のメモリシステム。
JP2017180631A 2017-09-20 2017-09-20 メモリシステム Pending JP2019057806A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017180631A JP2019057806A (ja) 2017-09-20 2017-09-20 メモリシステム
US15/919,788 US10560122B2 (en) 2017-09-20 2018-03-13 Memory system and method of controlling nonvolatile memory

Applications Claiming Priority (1)

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

Publications (1)

Publication Number Publication Date
JP2019057806A true JP2019057806A (ja) 2019-04-11

Family

ID=65719444

Family Applications (1)

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

Country Status (2)

Country Link
US (1) US10560122B2 (ja)
JP (1) JP2019057806A (ja)

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5430744A (en) * 1993-09-30 1995-07-04 International Business Machines Corporation Method and means for detecting partial response waveforms using a modified dynamic programming heuristic
US20030014379A1 (en) * 1999-07-01 2003-01-16 Isaac Saias Adaptive and reliable system and method for operations management
US7370264B2 (en) * 2003-12-19 2008-05-06 Stmicroelectronics, Inc. H-matrix for error correcting circuitry
US20060242647A1 (en) * 2005-04-21 2006-10-26 Kimbrel Tracy J Dynamic application placement under service and memory constraints
EP1717959A1 (en) * 2005-04-29 2006-11-02 STMicroelectronics N.V. Method and device for controlling the decoding of a LDPC encoded codeword, in particular for DVB-S2 LDPC encoded codewords
US8132072B2 (en) 2006-01-06 2012-03-06 Qualcomm Incorporated System and method for providing H-ARQ rate compatible codes for high throughput applications
US7831895B2 (en) * 2006-07-25 2010-11-09 Communications Coding Corporation Universal error control coding system for digital communication and data storage systems
KR101492595B1 (ko) 2007-05-21 2015-02-11 라모트 앳 텔-아비브 유니버시티 리미티드 메모리 효율적인 ldpc 디코딩
US20090034661A1 (en) * 2007-07-31 2009-02-05 Pascal Olivier Vontobel Coordinate-ascent method for linear programming decoding
FR2920929B1 (fr) 2007-09-10 2009-11-13 St Microelectronics Sa Procede et dispositif d'encodage de symboles avec un code du type a controle de parite et procede et dispositif correspondants de decodage
US9876511B2 (en) 2015-09-11 2018-01-23 Toshiba Memory Corporation Memory system and memory control method
US10469104B2 (en) * 2016-06-14 2019-11-05 Qualcomm Incorporated Methods and apparatus for compactly describing lifted low-density parity-check (LDPC) codes
US10447303B2 (en) * 2017-12-20 2019-10-15 Qualcomm Incorporated Low-density parity check (LDPC) incremental parity-check matrix rotation

Also Published As

Publication number Publication date
US10560122B2 (en) 2020-02-11
US20190089377A1 (en) 2019-03-21

Similar Documents

Publication Publication Date Title
KR101438072B1 (ko) 소거 없는 플래시 메모리의 다중 프로그래밍
US20150370633A1 (en) Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems
US20140068379A1 (en) Memory system
US10090860B2 (en) Memory system using integrated parallel interleaved concatenation
KR101926608B1 (ko) 경 판정 디코딩 방법 및 이를 이용한 저밀도 패리티 체크 디코더
JP6847796B2 (ja) メモリシステム
US10157097B2 (en) Redundant bytes utilization in error correction code
JP6730215B2 (ja) メモリコントローラ、メモリシステムおよび制御方法
US9236886B1 (en) Universal and reconfigurable QC-LDPC encoder
JP2022124682A (ja) メモリシステム
US9876511B2 (en) Memory system and memory control method
JP2019160014A (ja) メモリシステム
US20160285478A1 (en) Memory controller, semiconductor memory device, and control method for semiconductor memory device
KR20180010447A (ko) 컨트롤러, 반도체 메모리 시스템 및 그의 동작 방법
CN107710170A (zh) 减少对象存储中的写入放大
CN105164646A (zh) 具有早期解码终止检测的解码器
CN112397127B (zh) 先算信息轮换数据保护的非挥发性存储器写入方法和设备
US10970166B2 (en) Memory system and method of controlling non-volatile memory
US11886738B2 (en) Memory system and memory control method
US10884858B2 (en) LDPC decoding device, memory system including the same and method thereof
KR20210001927A (ko) 국부성을 사용한 일반화된 연접 에러 정정 코딩 방법
US11003528B2 (en) Memory system including an error correction function
US11309918B2 (en) Memory system
JP2019057806A (ja) メモリシステム
US10951238B1 (en) Memory system and method for controlling non-volatile memory

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180905