JP2019056955A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2019056955A JP2019056955A JP2017179359A JP2017179359A JP2019056955A JP 2019056955 A JP2019056955 A JP 2019056955A JP 2017179359 A JP2017179359 A JP 2017179359A JP 2017179359 A JP2017179359 A JP 2017179359A JP 2019056955 A JP2019056955 A JP 2019056955A
- Authority
- JP
- Japan
- Prior art keywords
- llr
- data
- value
- decoding
- circuit
- 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
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1108—Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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 arrangements adapted for a specific error detection or correction feature
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
- H03M13/3715—Adaptation to the number of estimated errors or to the channel state
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
- H03M13/6505—Memory efficient implementations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
【課題】 より高い性能を有するメモリシステムを提供する。
【解決手段】 一実施形態によるメモリシステムは、メモリセルを含む記憶装置と、メモリコントローラとを含む。メモリコントローラは、メモリセルからの第1データ読み出しに基づく第1データを受け取り、メモリセルからの第1データ読み出しと異なる第2データ読み出しに基づく第2データを受け取り、第1データおよび第2データに基づく第1値を第1関係に従って第2値に変換し、第1値を第1関係と異なる第2関係に従って第3値に変換する、ように構成されている。
【選択図】 図1
【解決手段】 一実施形態によるメモリシステムは、メモリセルを含む記憶装置と、メモリコントローラとを含む。メモリコントローラは、メモリセルからの第1データ読み出しに基づく第1データを受け取り、メモリセルからの第1データ読み出しと異なる第2データ読み出しに基づく第2データを受け取り、第1データおよび第2データに基づく第1値を第1関係に従って第2値に変換し、第1値を第1関係と異なる第2関係に従って第3値に変換する、ように構成されている。
【選択図】 図1
Description
実施形態は、概してメモリシステムに関する。
記憶装置および記憶装置を制御するメモリコントローラを含んだメモリシステムが知られている。
より高い性能を有するメモリシステムを提供する。
一実施形態によるメモリシステムは、メモリセルを含む記憶装置と、メモリコントローラとを含む。メモリコントローラは、メモリセルからの第1データ読み出しに基づく第1データを受け取り、メモリセルからの第1データ読み出しと異なる第2データ読み出しに基づく第2データを受け取り、第1データおよび第2データに基づく第1値を第1関係に従って第2値に変換し、第1値を第1関係と異なる第2関係に従って第3値に変換する、ように構成されている。
以下に実施形態が図面を参照して記述される。以下の記述において、略同一の機能および構成を有する構成要素は同一符号を付され、繰り返しの説明は省略される場合がある。また、ある実施形態についての記述は全て、明示的にまたは自明的に排除されない限り、別の実施形態の記述としても当てはまる。
各機能ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組合せたものとして実現することができる。このため、各機能ブロックがこれらのいずれでもあることが明確となるように、概してそれらの機能の観点から記述される。各機能ブロックが、以下の例のように区別されていることは必須ではない。例えば、一部の機能が例示の機能ブロックとは別の機能ブロックによって実行されてもよい。
また、実施形態の方法のフローにおけるいずれのステップも、例示の順序に限定されず、そうでないと示されない限り、例示の順序とは異なる順序でおよび(または)別のステップと並行して起こることが可能である。
本明細書および特許請求の範囲において、ある第1要素が別の第2要素に「接続されている」とは、第1要素が直接的または常時あるいは選択的に導電性となる要素を介して第2要素に接続されていることを含む。
(第1実施形態)
(1.構造(構成))
図1は、第1実施形態のメモリシステム中の要素および接続、ならびに関連する要素を示す。図1に示されるように、メモリシステム5は、ホスト装置3により制御され、(半導体)記憶装置1およびメモリコントローラ2を含む。記憶装置1は、メモリコントローラ2により制御される。メモリコントローラ2は、ホスト装置3から命令を受け取り、受け取られた命令に基づいて記憶装置1を制御する。
(1.構造(構成))
図1は、第1実施形態のメモリシステム中の要素および接続、ならびに関連する要素を示す。図1に示されるように、メモリシステム5は、ホスト装置3により制御され、(半導体)記憶装置1およびメモリコントローラ2を含む。記憶装置1は、メモリコントローラ2により制御される。メモリコントローラ2は、ホスト装置3から命令を受け取り、受け取られた命令に基づいて記憶装置1を制御する。
<1.1.メモリコントローラ>
メモリコントローラ2は、ホストインターフェイス21、CPU(central processing unit)22、RAM(random access memory)23、ROM(read only memory)24、メモリインターフェイス25、ECC(error correction code)回路26を含む。ROM24に保持されかつRAM23上にロードされたファームウェア(プログラム)がCPU22によって実行されることによって、メモリコントローラ2は種々の動作、およびホストインターフェイス21ならびにメモリインターフェイス25の機能の一部を実行する。RAM23は、さらに、データを一時的に保持し、バッファおよびキャッシュとして機能する。
メモリコントローラ2は、ホストインターフェイス21、CPU(central processing unit)22、RAM(random access memory)23、ROM(read only memory)24、メモリインターフェイス25、ECC(error correction code)回路26を含む。ROM24に保持されかつRAM23上にロードされたファームウェア(プログラム)がCPU22によって実行されることによって、メモリコントローラ2は種々の動作、およびホストインターフェイス21ならびにメモリインターフェイス25の機能の一部を実行する。RAM23は、さらに、データを一時的に保持し、バッファおよびキャッシュとして機能する。
ホストインターフェイス21は、バスを介してホスト装置3と接続され、メモリコントローラ2とホスト装置3との通信を司る。メモリインターフェイス25は、記憶装置1と接続され、メモリコントローラ2と記憶装置1との通信を司る。
ECC回路26は、記憶装置1に書き込まれるデータおよび記憶装置1から読み出されたデータに対して、誤りの検出および訂正に必要な処理を行う。具体的には、ECC回路26は、記憶装置1に書き込まれるデータ(実書き込みデータ)の誤り訂正のための冗長データ(パリティ)を生成する。生成された冗長データと実書き込みデータが記憶装置1に書き込まれる。したがって、記憶装置1から読み出されたデータは、実書き込みデータと、対応するパリティを含む。
また、ECC回路26は、記憶装置1から読み出されたデータの中の誤りを検出し、誤りがある場合に誤りの訂正を試みる。ECC回路26は、例えば、BCH符号およびリードソロモン符号等の硬判定に基づく誤り訂正、およびLDPC(low-density parity check)等の軟判定に基づく誤り訂正を行うことができる。ECC回路26については、後に詳述される。
<1.2.記憶装置>
記憶装置1は、(メモリ)セルアレイ11、入出力回路12、シーケンサ(制御回路)13、ドライバ15、センスアンプ16、およびロウデコーダ19等の要素を含む。
記憶装置1は、(メモリ)セルアレイ11、入出力回路12、シーケンサ(制御回路)13、ドライバ15、センスアンプ16、およびロウデコーダ19等の要素を含む。
セルアレイ11は複数のメモリブロック(ブロック)BLK(BLK0、BLK1、…)を含む。ブロックBLKは、例えばデータの消去単位であり、各ブロックBLK中のデータは一括して消去される。1つのブロックBLKより小さい単位(例えばブロックBLKの半分)でデータが消去されてもよい。
各ブロックBLKは複数のストリングユニットSU(SU0、SU1、…)の集合である。各ストリングユニットSUは複数のNANDストリング(ストリング)STR(STR0、STR1、…)(図示せず)の集合である。ストリングSTRは、複数のメモリセルトランジスタ(セルトランジスタ)MTを含む。
入出力回路12は、NANDバスを介して、メモリコントローラ2と接続されている。NANDバスは、信号 ̄CE、CLE、ALE、 ̄WE、 ̄RE、 ̄WP、8ビットの幅の信号DQ、およびデータストローブ信号DQSならびに ̄DQSを伝送する。本明細書において、信号の名称の前の記号「 ̄」は、記号「 ̄」を伴わない名称の信号の反転論理を示し、記号「 ̄」を伴う信号がローレベルの場合にアサートされていることを意味する。
入出力回路12は、信号DQを受け取り、信号DQを送信する。入出力回路12は、また、データストローブ信号DQSならびに ̄DQSを受け取り、データストローブ信号DQSならびに ̄DQSを送信する。入出力回路12は、メモリコントローラ2から種々の制御信号を受け取り、制御信号に基づいて、信号DQを取り込み、また出力する。制御信号は、信号 ̄CE、CLE、ALE、 ̄WE、 ̄RE、 ̄WP、およびデータストローブ信号DQSならびに ̄DQSを含む。
信号DQは、コマンド(CMD)、書き込みデータまたは読み出しデータ(DAT)、アドレス信号(ADD)、ステータスデータ(STA)等を含む。
アサートされている信号 ̄CEは、記憶装置1をイネーブルにする。アサートされている信号CLEは、この信号CLEと並行して記憶装置1に入力される信号DQがコマンドCMDであることを記憶装置1に通知する。アサートされている信号ALEは、この信号ALEと並行して記憶装置1に入力される信号DQがアドレス信号ADDであることを記憶装置1に通知する。アサートされている信号 ̄WEは、この信号 ̄WEと並行して記憶装置1に入力される信号DQを記憶装置1に取り込ませることを指示する。アサートされている信号 ̄REは、記憶装置1に信号DQを出力することを指示する。アサートされている信号 ̄WPは、データ書き込みおよび消去の禁止を記憶装置1に指示する。信号RY/ ̄BYは、記憶装置1がレディー状態であるか、ビジー状態であるかを示し、ローレベルによってビジー状態を示す。記憶装置1は、レディー状態においてメモリコントローラ2からの命令を受け付け、ビジー状態においてメモリコントローラ2からの命令を受け付けない。
メモリコントローラ2から記憶装置1に向かう信号DQSおよび ̄DQSは、信号DQを出力するタイミングを記憶装置1に指示する。記憶装置1からメモリコントローラ2に向かう信号DQSおよび ̄DQSは、信号DQを出力するタイミングをメモリコントローラ2に通知する。
シーケンサ13は、入出力回路12からコマンドCMDおよびアドレス信号ADDを受け取り、コマンドCMDおよびアドレス信号ADDに基づいて、ドライバ15、センスアンプ16、およびロウデコーダ19を制御する。
ドライバ15は、複数の電位のうちの選択されたものをロウデコーダ19に供給する。ロウデコーダ19は、ドライバ15から種々の電位を受け取り、入出力回路12からアドレス信号ADDを受け取り、受け取られたアドレス信号ADDに基づいて1つのブロックBLKを選択し、選択されたブロックBLKにドライバ15からの電位を転送する。
センスアンプ16は、セルトランジスタMTの状態をセンスし、センスされた状態に基づいて読み出しデータを生成し、また、書き込みデータをセルトランジスタMTに転送する。
<1.3.セルアレイ>
図2は、第1実施形態のセルアレイ11のいくつかの要素および接続の例を示し、1つのブロックBLK0の要素および接続、ならびに関連する要素を示す。複数の(例えば全ての)ブロックBLKは、みな図2に示される要素および接続を含む。
図2は、第1実施形態のセルアレイ11のいくつかの要素および接続の例を示し、1つのブロックBLK0の要素および接続、ならびに関連する要素を示す。複数の(例えば全ての)ブロックBLKは、みな図2に示される要素および接続を含む。
1つのブロックBLKは、複数(例えば4つ)のストリングユニットSU0〜SU3を含む。1つのブロックBLKが1つのストリングユニットSUのみを含んでいてもよい。
p(pは自然数)本のビット線BL0〜BLp−1の各々は、各ブロックBLKにおいて、ストリングユニットSU0〜SU3の各々からの1つのストリングSTRと接続されている。
各ストリングSTRは、1つの選択ゲートトランジスタST、複数(例えば8つ)のメモリセルトランジスタMT(MT0〜MT7)、および1つの選択ゲートトランジスタDT(DT0、DT1、DT2、またはDT3)を含む。トランジスタST、MT、およびDTは、この順で、ソース線CELSRCと1つのビット線BLとの間に直列に接続されている。セルトランジスタMTは、制御ゲート電極(ワード線WL)、および周囲から絶縁された電荷蓄積層を含み、電荷蓄積層中の電荷の量に基づいてデータを不揮発に保持することができる。
相違する複数のビット線BLとそれぞれ接続された複数のストリングSTRは1つのストリングユニットSUを構成する。各ストリングユニットSUにおいて、セルトランジスタMT0〜MT7の制御ゲート電極(ゲート)は、ワード線WL0〜WL7とそれぞれ接続されている。さらに、各ブロックBLKにおいて、相違するストリングユニットSU中の同じアドレスのワード線WLも相互に接続されている。1つのストリングユニットSU中でワード線WLを共有するセルトランジスタMTの組は、セルユニットCUと称される。
トランジスタDT0〜DT3はストリングユニットSU0〜SU3にそれぞれ属する。α=0〜3の各々の場合について、ストリングユニットSUαの複数のストリングSTRの各々のトランジスタDTαのゲートは選択ゲート線SGDLαに接続されている。トランジスタSTのゲートは、選択ゲート線SGSLに接続されている。
<1.4.セルトランジスタ>
図3を参照して、セルトランジスタMTについて記述される。記憶装置1は、1つのセルトランジスタMTにおいて2ビット以上のデータを保持することができる。図3は、書き込みの結果、1つのセルトランジスタMT当たり3ビットのデータを保持するセルトランジスタMTの閾値電圧の分布を示す。各セルトランジスタMTの閾値電圧は、保持されるデータに応じた値を有する。セルトランジスタMT当たり3ビットの記憶の場合、各セルトランジスタMTは、8つの閾値電圧のうちのいずれかを有し得る。8つの閾値電圧は、“111” データ、“110”データ、“100”データ、“000”データ、“010”データ、“011”データ、“001”データ、および“101”データをそれぞれ保持している状態である。“111” データ、“110”データ、“100”データ、“000”データ、“010”データ、“011”データ、“001”データ、および“101”データをそれぞれ保持している状態のセルトランジスタMTは、Er、A、B、C、D、E、F、およびG状態にあると称される。
図3を参照して、セルトランジスタMTについて記述される。記憶装置1は、1つのセルトランジスタMTにおいて2ビット以上のデータを保持することができる。図3は、書き込みの結果、1つのセルトランジスタMT当たり3ビットのデータを保持するセルトランジスタMTの閾値電圧の分布を示す。各セルトランジスタMTの閾値電圧は、保持されるデータに応じた値を有する。セルトランジスタMT当たり3ビットの記憶の場合、各セルトランジスタMTは、8つの閾値電圧のうちのいずれかを有し得る。8つの閾値電圧は、“111” データ、“110”データ、“100”データ、“000”データ、“010”データ、“011”データ、“001”データ、および“101”データをそれぞれ保持している状態である。“111” データ、“110”データ、“100”データ、“000”データ、“010”データ、“011”データ、“001”データ、および“101”データをそれぞれ保持している状態のセルトランジスタMTは、Er、A、B、C、D、E、F、およびG状態にあると称される。
ある同じ3ビットデータを保持する複数のセルトランジスタMTであっても、セルトランジスタMTの特性のばらつき等に起因して、互いに相違する閾値電圧を有し得る。このため、ある同じ3ビットデータを保持する複数のセルトランジスタMTの閾値電圧は1つの分布を形成する。
読み出し対象のセルトランジスタMTによって保持されているデータの判別のために、当該セルトランジスタMTの状態が判断される。状態の判断のために、読み出し電圧VA、VB、VC、VD、VE、VF、およびVGが用いられる。以下、読み出し電圧VA、VB、VC、VD、VE、VF、およびVGを含め、レベルの判断ために読み出し対象のセルトランジスタMTに印加されるある大きさの電圧は、読み出し電圧VCGRと称される場合がある。
読み出し対象のセルトランジスタMTの閾値電圧がある読み出し電圧VCGRを超えているか否かが、このセルトランジスタMTの閾値電圧の状態の判定に用いられる。読み出し電圧VCGR以上の閾値電圧を有するセルトランジスタMTは、制御ゲート電極において読み出し電圧VCGRを受け取ってもオフを維持する。一方、読み出し電圧VCGR未満の閾値電圧を有するセルトランジスタMTは、制御ゲート電極において読み出し電圧VCGRを受け取っていると、オンしている。電圧VREADは、非読み出し対象のセルユニットCUのセルトランジスタMTのワード線WLに印加され、いずれの状態にあるセルトランジスタMTの閾値電圧より高い。
1つのセルユニットCUのセルトランジスタMTのある同じ位置(桁)のビットのデータの組は、1つのページを構成する。
あるページ、例えばアッパーページのデータは、読み出し電圧VAを用いた読み出し(以下、読み出し電圧Vβ(βは、A、B、C、D、E、F、またはG)を用いた読み出しはβ読み出しと称される)およびE読み出しにより割り出される。すなわち、A読み出しにより、読み出し対象のセルトランジスタMTが、Er状態にあるか、またはA、B、C、D、E、F、あるいはG状態にあるかが、特定される。次いで、E読み出しにより、A、B、C、D、E、F、またはG状態にある読出し対象セルトランジスタMTが、A、B、C、またはD状態にあるか、あるいはE、F、またはG状態にあるかが判断される。読み出し対象セルトランジスタMTは、Er、E、F、またはG状態にあると、ロワーページにおいて“1”データを保持し、A、B、C、またはD状態にあると、ロワーページにおいて“0”データを保持すると判断される。
ミドルページおよびアッパーページの読み出しについても同じである。ミドルページ読み出しでは、B読み出し、D読み出し、およびF読み出しにより、各読み出し対象セルトランジスタMTがミドルページにおいて保持するデータが判断される。アッパーページ読み出しでは、C読み出しおよびG読み出しにより、各読み出し対象セルトランジスタMTがアッパーページにおいて保持するデータが判断される。
<1.5.センスアンプ>
図4は、センスアンプ16中の要素および接続を示す。センスアンプ16は、p個のセンスアンプ回路SAC、複数のデータラッチDL(DL0、DL1、DL2、…DLq(qは自然数))、p個の演算回路LC、データラッチXDLを含む。データラッチDLγ(γは0またはq以下の自然数)は、p個のデータラッチ回路DLCγを含む。データラッチXDLは、p個のデータラッチ回路XDLCを含む。データラッチ回路DLCおよびXDLCは、データを一時的に保持する。
図4は、センスアンプ16中の要素および接続を示す。センスアンプ16は、p個のセンスアンプ回路SAC、複数のデータラッチDL(DL0、DL1、DL2、…DLq(qは自然数))、p個の演算回路LC、データラッチXDLを含む。データラッチDLγ(γは0またはq以下の自然数)は、p個のデータラッチ回路DLCγを含む。データラッチXDLは、p個のデータラッチ回路XDLCを含む。データラッチ回路DLCおよびXDLCは、データを一時的に保持する。
各ビット線BLは、1つのセンスアンプ回路SAC、q+1個のデータラッチ回路DLC0、DLC1、DLC2、…DLCq、1つの演算回路LC、1つのデータラッチ回路XDLCと接続されている。
各センスアンプ回路SACは、データの読み出しの間、当該センスアンプ回路SACと接続された1つのビット線BLを介して読み出し対象の1つのセルトランジスタMTと電気的に接続される。そして、各センスアンプ回路SACは、読み出し対象のセルトランジスタMTの閾値電圧に基づいて定まる大きさの電圧を、当該センスアンプ回路SAC中のノード上でセンスし、センスの結果に基づいて、当該センスアンプ回路SAと電気的に接続されたセルトランジスタMTが2つの状態のいずれに属するかを判断する。セルトランジスタMTの2つの状態は、“0”データまたは“1”データとして表現され、各センスアンプ回路SACは、読み出しデータが“0”データであるかまたは“1”データであるかを、当該センスアンプ回路SACと接続されたいずれかのデータラッチ回路DLCにおいて保持する。
演算回路LCは、当該演算回路LCと接続されたデータラッチ回路DLCおよびXDLC中のデータに対して論理演算を行うことができる。論理演算は、否定(NOT)演算、論理和(OR)演算、論理積(AND)演算、排他的論理和(XOR)演算、否定排他的論理和(XNOR)演算を含む。
<1.6.ECC回路および関連する要素>
図5は、ECC回路26中の要素および接続、ならびにメモリコントローラ2中のECC回路26に関連する機能ブロックを示す。メモリコントローラ2は、全体制御部27を有する。全体制御部27は、CPU22、RAM23、およびROM24のそれぞれの機能の一部の組合せにより実現される。
図5は、ECC回路26中の要素および接続、ならびにメモリコントローラ2中のECC回路26に関連する機能ブロックを示す。メモリコントローラ2は、全体制御部27を有する。全体制御部27は、CPU22、RAM23、およびROM24のそれぞれの機能の一部の組合せにより実現される。
全体制御部27は、メモリコントローラ2の全体の動作を制御する。そのような制御は、ECC回路26の動作に関する処理を含む。全体制御部27は、記憶装置1からの読み出しデータの誤りの訂正を試みる際、メモリインターフェイス25を介して、誤り訂正に必要なデータを読み出すことを記憶装置1に指示する。誤り訂正に必要なデータは、ハードビット(HB)データおよびソフトビット(SB)データを含む。データ保持部271は、例えばRAM23の機能により実現され、ハードビットデータおよびソフトビットデータを保持する。また、全体制御部27は、ハードビットデータおよびソフトビットデータから、LLR(log likelihood ratio)値を割り出す。全体制御部27は、データ保持部271およびLLR変換部272を含む。
ハードビットデータは、ある読み出し対象のセルユニット(選択セルユニット)CU中の読み出し対象のページ(選択ページ)から、ロワーページ読み出し、ミドルページ読み出し、またはアッパーページ読み出しによって読み出されたデータである。ハードビットデータは、例えば1ページの大きさを有し、選択セルユニットCU中の各セルトランジスタ(選択セルトランジスタ)MTからのデータ読み出し結果に基づくビット(ハードビット)の列を含む。ソフトビットデータもソフトビットの列を含み、各ソフトビットは、1つの選択セルトランジスタMTに関する情報を示す。ソフトビットデータは、各ビットにおいて、当該ビットに対応する選択セルトランジスタMTから相違する条件で読み出された複数のビット列に対する論理演算の結果を示す。ソフトビットデータは、演算の詳細に基づいて、種々のタイプを含む。ハードビットデータおよびソフトビットデータについては、後にさらに記述される。
LLR変換部272は、ハードビットデータおよびソフトビットデータ中の互いに関連する複数ビットの組合せを、当該組合せに対応する1つのLLR値に変換することができる。複数ビットの各組合せは、以下、LLRラベルと称される。各LLR値は、当該LLR値に関連するハードビットの値(“0”または“1”)の確からしさを示す。
LLR変換部272は、値の相違する複数のLLRラベルと、対応する複数のLLR値との関係を認識している。変換は、例えば、LLRテーブルにより行われることができる。LLR変換部272は、複数のLLRテーブルを保持することができる。LLRテーブルは、例えば、メモリシステム5に予め、例えば、メモリシステム5の出荷の時点で、格納されている。LLR変換部272は、LLRテーブル中のLLRラベルとLLR値との関係に補正を施して、補正された関係を用いて変換を行うこともできる。
ECC回路26は、誤り訂正回路261および誤り検出回路262を含む。誤り訂正回路261は、全体制御部27からLLR値を受け取り、LLR値に対して、BCH符号およびリードソロモン符号等を使用するハードビット(HB)復号、およびLDPC等のソフトビット(SB)復号を行うことができる。誤り訂正回路261は、例えばフレームと呼ばれる大きさのデータごとに復号を行うことができる。誤り訂正が成功すると、誤り訂正されたLLRの組(LLR値セット)が得られる。誤り訂正回路261は、誤り訂正に成功すると、パス判定の旨の信号および誤り訂正されたLLR値セットを出力する。誤り訂正回路261は、誤り訂正に失敗すると、フェイル判定の旨を全体制御部27に通知する。
誤り検出回路262は、パス判定の旨の信号および誤り訂正されたLLR値セットを入力される。誤り検出回路262は、例えばパリティを使用して、入力されたLLR値セットが誤りを含んでいるかを検査する。上記のように、記憶装置1から読み出されたデータは、実書き込みデータと対応するパリティとを含む。したがって、LLR値セットは、実書き込みデータに由来するLLR値と、パリティに由来するLLR値とを含む。誤り検出回路262は、LLR値セットのうちのパリティに対応するLLR値を使用して、LLR値セットのうちの実書き込みデータおよびパリティの誤りを検出できる。
誤りが含まれていれば、フェイル判定の旨の信号を全体制御部27に供給する。誤りが含まれていなければ、誤り検出回路262は、誤り訂正回路261によってなされた誤り訂正が確からしいと判断し、パス判定の旨の信号を全体制御部27に供給するとともに、入力された(すなわち、誤り訂正された)LLR値セットを全体制御部27(特に、RAM23)に供給する。全体制御部27は、誤り訂正されたLLR値セットから、ホスト装置3またはメモリコントローラ2が記憶装置1からの読み出しを望んだデータを抽出できる。
図6は、ハードビットデータ、ソフトビットデータ、LLRラベル、およびLLR値の例を示し、2つのソフトビットデータ1およびソフトビットデータ2についての例を示す。図6中の各桝は、ハードビットデータ(HB)、ソフトビットデータ1(SB1)、ソフトビットデータ2(SB2)中の1つのビットを示す。図6の上下に並ぶ桝は、ある1つの選択セルトランジスタMTについてのビットである。1ページの大きさのハードビットデータは、1セルユニットCU中のセルトランジスタMTの数pと等しいp個のビットを含む。同様に、ソフトビットデータ1、ソフトビットデータ2の各々は、p個のビットを含む。
ソフトビットデータは、選択ページの各セルトランジスタMTから相違する条件で読み出されたデータに基づいたビット(ソフトビット)の列を含む。各ソフトビットは、1つの選択セルトランジスタMTについての情報を担い、当該選択セルトランジスタMTのハードビットについてのLLR値の割り出しに使用される。
1つの選択セルトランジスタMTについての、ハードビット、ソフトビットデータ1中のソフトビット、ソフトビットデータ2中のソフトビットは1つの組を構成する。1つの組は、3ビットのデータを含み、1つのLLRラベルの値に相当する。3ビットの相違する組合せは、相違するLLRラベルに帰結する。
上記のように、各LLRラベルは、LLR変換部272によりLLR値に変換されることができる。各LLR値は、プラスまたはマイナスの値を有する。理解の促進のために、LLR値は、図および以下の記述では、10進数により表される。
<2.動作>
図7は、メモリシステム5の動作の一部のフローを示し、ある1ページからの読み出しのためのメモリシステム5の動作の一部のフローを示す。より具体的には、あるページからの読み出しデータのうちの1フレームサイズの部分の取得の完了までを示す。いくつかのステップの詳細は、後に記述される。
図7は、メモリシステム5の動作の一部のフローを示し、ある1ページからの読み出しのためのメモリシステム5の動作の一部のフローを示す。より具体的には、あるページからの読み出しデータのうちの1フレームサイズの部分の取得の完了までを示す。いくつかのステップの詳細は、後に記述される。
ステップS1において、メモリコントローラ2は、選択ページからページサイズのデータを読み出す。データ読み出しは、例えばデフォルト等の最初に使用すべき読み出し電圧VCGRを使用する。読み出されたデータ、すなわちハードビットデータは、RAM23中で保持される。ハードビットデータは、実書き込みデータのためのビットと対応するパリティのためのビットを含む。
ステップS2において、メモリコントローラ2は、ハードビットデータ中の実書き込みデータおよびパリティを使用したハードビット中の誤りの訂正(HB復号)を試みる。復号が成功すると(ステップS3のYes分岐)、フローは終了する。復号が失敗すると(ステップS3のNo分岐)、メモリコントローラ2は、ステップS5において、例えばLLR値を使用する復号(SB復号)を含む、ソフトビットデータを使用する復号(SB使用復号)を開始すべきかを判断する。SB使用復号は、予め定められた条件が満たされると開始され、後続のステップS6での読み出し条件を変えた数回のデータ読み出しおよびHB復号が全て失敗した場合に開始されることができる。
SB使用復号が開始すべきでない場合(ステップS5のNo分岐)、メモリコントローラ2は、ステップS6において、読み出し条件を変更する。図3では、閾値電圧分布は互いに独立しているため、デフォルトの読み出し電圧VA、VB、VC、VD、VE、VF、および(または)VGの使用により、HB復号を経て、または経なくても、正しいページデータが読み出される可能性が高い。すなわち、図8の書き込み直後のEr状態およびA状態の閾値電圧分布を示す上側の部分に示されるように、デフォルトの読み出し電圧VAは、書き込み直後のEr状態およびA状態の閾値電圧分布の間に位置する。しかしながら、ディスターブまたは電荷の移動等の種々の要因により、閾値電圧分布は変動し得、結果、図8の下側の部分に示されるように、閾値電圧分布が広がったり、移動したりして、互いに重なることがある。このような場合、デフォルトの読み出し電圧VAの使用では、正しいページデータ(書き込まれたデータ)を取得できない場合がある。このことに対処するために、読み出し条件の変更は、例えば、デフォルトの読み出し電圧VCGRの大きさを、予め定められた大きさだけ大きくまたは小さくすることを含む。読み出し電圧VCGRの大きさの変更は、例えば、予め定められた最小単位ごとに指定されることができ、最小単位は、例えば、ある3DACまたは−3DACである。読み出し条件の変更は、より良い読み出し電圧VCGRの大きさの推定、および読み出し電圧VCGRの大きさをより良いと推定された大きさに変更することを含み得る。
より良い読み出し電圧VCGRの推定は、いわゆるVthトラッキングを含むことができる。図8の下側の部分に示されるように、閾値電圧分布曲線の極小位置に対応する読み出し電圧VAoptの使用の方が、より良い読み出し(より高い誤り訂正成功率)に繋がり得る。このことに基づいて、メモリコントローラ2は、閾値電圧分布曲線の極小位置を割り出すために、Vthトラッキングを行うことができる。Vthトラッキングの結果、メモリコントローラ2は、閾値電圧分布曲線の複数の極小位置の電圧(極小電圧)を知る。Vthトラッキングは、読み出し電圧VCGRの大きさを変更しながら繰り返しのデータ読み出し、および最適と思われる、読み出し電圧VA、VB、VC、VD、VE、VF、および(または)VGの推定を含む。
Vthトラッキングは、選択ページからの読み出しに必要な極小電圧だけの推定のためのみに行われてもよいし、選択セルユニットCUの全ページに必要な極小電圧の推定のために行われてもよい。Vthトラッキングの結果は、例えばRAM23により保持され、例えば、デフォルトの読み出し電圧VCGRからのシフトとして保持されることができる。そして、選択ページまたは選択セルユニットCUからの次のデータの読み出しの際に、使用されることができる。Vthトラッキングの結果は、例えばセルユニットCUごとに保持される。または、ある1つのセルユニットCUについてのVthトラッキングの結果が、当該セルユニットCUと並ぶ複数のセルユニットCUに対して使用されてもよい。
図7に戻る。ステップS6は、ステップS1に継続する。
ステップS5においてSB使用復号が開始すべきと判断されると、メモリコントローラ2は、Vthトラッキングを行う(ステップS7)。ステップS6で、Vthトラッキングが行われている場合、フローはステップS7をスキップしてステップS11に移行し、ステップS6で取得された極小電圧を使用することができる。
ステップS11において、メモリコントローラ2は、誤り訂正回路261によって採用されているSB復号の形式に基づいて、選択ページのハードビットデータに対するSB復号に必要な全てのソフトビットデータを取得する。すなわち、メモリコントローラ2は、例えば、変数i=1として、ソフトビットデータ1を記憶装置1から読み出す。そして、メモリコントローラ2は、iを1ずつ増分しながら、ソフトビットデータ1、ソフトビットデータ2、ソフトビットデータ3、…を取得する。ソフトビットデータは、任意の順番で取得されることができる。相違するiについての相違するソフトビットデータ1、ソフトビットデータ2、ソフトビットデータ3、…は相異し、どのようなソフトビットデータが必要かは、誤り訂正回路261によって採用されているSB復号の形式に基づく。ソフトビットデータの例については、後述される。必要な全てのソフトビットデータの取得の結果、メモリコントローラ2は、p個の選択セルトランジスタMTのそれぞれについてのp個のLLRラベルを取得したことになる。
ステップS12において、LLR変換部272は、LLRラベルとLLR値との予め定められた関係、例えばあるLLRテーブルを使用して、p個のLLRラベルをp個のLLR値にそれぞれ変換して、p個のLLR値を取得する。
ステップS13において、ECC回路26は、ステップS12において取得されたLLR値を使用する復号を行って、誤り訂正されたハードビットの取得を試みる。そのために、例えば、ECC回路26は、LLR値を使用してSB復号を行う。上記のように、ECC回路26は、フレーム単位で処理を行い、よって、全体制御部27は、読み出し対象ページ中の全ビットのそれぞれについての全LLR値のうちm個のLLR値(被処理LLR値セット)を誤り訂正回路261に供給する。上記のように、誤り検出回路262において誤りが検出されないと、処理中のフレームに対する復号が成功したと判断される。復号が成功すると(ステップS14のYes分岐)、その旨の通知(誤り検出回路262からのパス判定)がECC回路26によって全体制御部27に送信される。通知の受信によって、全体制御部27は被処理LLRセットの復号が成功したことを知る。全体制御部27は、また、誤り訂正された被処理LLR値セットを受け取り、誤り訂正された被処理LLR値セットから、誤り訂正されたハードビットを取得し、フローは終了する。
または、ECC回路26は、ステップS13において、HB復号を行うことができる。すなわち、ECC回路26は、LLR値から硬判定値を導出して硬判定値に基づく復号を行ってもよい。硬判定値は、LLR値の符号を表し、例えば、マイナスおよびプラスのLLR値のそれぞれの硬判定値は1および0である。LLR値セットの各LLR値の硬判定値の組は、選択ページから読み出されたハードビットデータと同じく複数のビットからなる。そして、このような硬判定値の組、すなわちハードビットデータに対して復号が行われる。ステップS13で得られるハードビットデータは、ソフトビットデータの情報が反映されており、ステップS1で得られたハードビットデータと相違する。よって、ステップS13でのHB復号が成功する可能性がある。
一方、誤り訂正回路261による誤り訂正が失敗である場合または誤り検出回路262によって誤りが検出される場合(ステップS14のNo分岐)、その旨が全体制御部27に通知される。通知によって、全体制御部27は、被処理LLR値セットに対する復号が失敗したと知り、ステップS15の動作を行う。ステップS15において、全体制御部27は、読み出し対象ページについてのLLRラベルを別のやり方でLLR値へ変換し直す。全体制御部27の制御によって、LLR変換部272は、例えば、フローの中で最初のLLRラベルからLLRへの変換で、すなわち、ステップS12で使用されたLLRテーブル(「元のLLRテーブルと称される)」と別のLLRテーブルを使用して、または、元のLLRテーブルから補正されたLLRテーブルを使用して、LLRラベルをLLR値に変換する。例えば、ステップS13での復号に失敗した対象のLLR値の変換前のLLRラベルが、再変換の対象とされることができる。全p個のLLRラベルが再変換されてもよい。
ステップS15は、ステップS13に継続する。ステップS13において、全体制御部27は、再変換によって得られたLLR値をECC回路26に供給する。供給されるLLR値は、例えば、前回のステップS14における復号で入力されたLLR値に対応する選択セルトランジスタMTと同じ選択セルトランジスタMTについてのものである。
<2.1.ステップS13(ソフトビットデータ読み出し)>
図9を参照して、図7のステップS13の例が記述される。図7は、ロワーページが読み出しの対象である場合のハードビットデータ、ソフトビットデータ1、ソフトビットデータ2、ソフトビットデータ3、ソフトビットデータ4、およびLLRラベルの例を示す。読み出し電圧VA、VB、VC、VD、VE、VF、およびVGは、例えば図7のステップS6またはS7のVthトラッキングにより推定された極小位置での電圧に対応する。
図9を参照して、図7のステップS13の例が記述される。図7は、ロワーページが読み出しの対象である場合のハードビットデータ、ソフトビットデータ1、ソフトビットデータ2、ソフトビットデータ3、ソフトビットデータ4、およびLLRラベルの例を示す。読み出し電圧VA、VB、VC、VD、VE、VF、およびVGは、例えば図7のステップS6またはS7のVthトラッキングにより推定された極小位置での電圧に対応する。
ロワーページのハードビットデータは、第1行に示されるように、電圧VA未満または電圧VE以上の閾値電圧のセルトランジスタMTに対応するビットにおいてデータ“1”を有し、電圧VA以上電圧VE未満の閾値電圧のセルトランジスタMTに対応するビットにおいてデータ“0”を有する。
ソフトビットデータ1の取得のために、メモリコントローラ2は、まず、電圧VAよりもある大きさだけ小さい電圧および電圧VEよりもある大きさだけ小さい電圧で読み出されるデータを取得する。使用される電圧の電圧VAおよびVEとの差は、例えば、−2Δである。すなわち、メモリコントローラ2は、電圧VAおよびVEにそれぞれ代えて電圧VA−2Δおよび電圧VE−2Δを読み出し電圧として使用してロワーページ読み出しの結果をいずれかのデータラッチDLに保持することを記憶装置1に指示する。Δは任意の大きさを有することができ、例えば、記憶装置1に対して指示可能な予め定められた読み出し電圧VCGRの上昇または下降の幅の整数倍に等しい。記憶装置1は、指示を受け取ると、指示されたデータ読み出しを行う。電圧VA−2Δおよび電圧VE−2Δを使用したロワーページ読み出しの結果は、第2行に示されており、電圧VA−2Δ未満または電圧VE−2Δ以上の閾値電圧のセルトランジスタMTに対応するビットにおいてデータ“1”を有し、電圧VA−2Δ以上かつ電圧VE−2Δ未満の閾値電圧のセルトランジスタMTに対応するビットにおいてデータ“0”を有する。差M(例えば、−2Δ)が使用されたロワーページ読み出しによってデータラッチに読み出されたデータは、以下、Mロワーページデータと称される。−2Δロワーページデータは、記憶装置1のあるデータラッチ(例えば、データラッチDL0)において保持される。
同様にして、メモリコントローラ2は、電圧VAおよびVEにそれぞれ代えて電圧VA+2Δおよび電圧VE+2Δを読み出し電圧として使用したロワーページ読み出しを記憶装置1に指示する。読み出しの結果は、記憶装置1の別のデータラッチの組(例えば、データラッチXDL)において保持される。
次いで、メモリコントローラ2は、記憶装置1に、データラッチDL0中のデータとデータラッチXDL中のデータに対する否定排他的論理和(XNOR)演算を指示する。指示を受け取ると、記憶装置1は、データラッチDL0中のデータとデータラッチXDL中のデータに対するXNOR演算を行う。具体的には、シーケンサ13は、データラッチDL0中のデータとデータラッチXDL中のデータの同じ位置のビットのそれぞれの計2つのビットを入力として用い、演算回路LCを用いて2つの入力のXNORを演算し、このような演算をデータラッチDL0およびデータラッチXDL中のデータの全ビットに対して行う。演算の結果は、データラッチ(例えば、データラッチXDL)に保持される。より具体的には、シーケンサ13は、あるデータラッチ回路DLC0中のデータと、当該データラッチ回路DLC0と接続されたデータラッチ回路XDLC中のデータのXNORを、これらのデータラッチ回路DLC0およびXDLCと接続された演算回路LCを使用して演算する。演算の結果は、論理演算の入力のデータを保持するデータラッチ回路DLC0およびXDLCと接続されたデータラッチ回路XDLCに保持される。こうして、データラッチXDLに保持されるに至ったデータがソフトビットデータ1である。ソフトビットデータ1は、次いで、メモリコントローラ2に送信され、データ保持部271において保持される。
同様にして、ソフトビットデータ2が何回かの選択ページからデータラッチDLへのデータ読み出しおよび何回かの論理演算により取得される。まず、−3Δロワーページデータと3ΔロワーページデータのXNORの演算の結果(XNOR1データ)が取得され、次いで、XNOR1データと−ΔロワーページデータとのXNOR演算の結果(XNOR2データ)が取得される。XNOR2データとΔロワーページデータとのXNOR演算の結果(XNOR3データ)が取得される。XNOR3データは、ソフトビットデータ2であり、メモリコントローラ2に送信され、データ保持部271において保持される。
メモリコントローラ2は、さらに、選択セルユニットCUに対するミドルページ読み出しおよびアッパーページ読み出しを記憶装置1に指示し、ミドルページデータおよびアッパーページデータを取得する。ミドルページデータおよびアッパーページデータは、それぞれ、ソフトビットデータ3およびソフトビットデータ4として扱われる。
ハードビットおよび種々のソフトビットデータのうちのある1つの同じ選択トランジスタMTからのデータ読み出し結果に由来する複数ビットの組が1つのLLRラベルを構成する。いくつのビットの組が1つのLLRラベルを構成するかは、ECC回路26による誤り訂正の方法に依存し、いくつのビットの組が使用されるかによって、実施形態は限定されない。図6の例では、3ビットの組が1つのLLRラベルを構成する。一方、図9の例では、ハードビットデータおよびソフトビットデータ1乃至ソフトビットデータ4の各々のうちのある1つの同じ選択セルトランジスタMTからのデータ読み出し結果に由来する5ビットの組が1つのLLRラベルを構成する。各LLRラベルは、5ビットの各値の各組合せに対して固有の値を有する。上記のように、LLRラベルは、図では、10進数で記載されている。
ソフトビットデータ(ソフトビットデータ1乃至4)は、メモリコントローラ2、特に全体制御部27で生成されてもよい。そのためには、メモリコントローラ2は、上記のソフトビットデータ1〜4の算出のためのMの種々の値についてのMロワーページデータを記憶装置1から受け取る。そして、メモリコントローラ2は、受け取られたMロワーページデータに対する論理演算を行って、ソフトビットデータ1〜4を生成する。
<2.2.ステップS15(LLRラベルの変換方法の変更)>
図10および図11は、LLRラベルのLLR値への変換方法の変更の例を示す。例として、ステップS12での変換が、図10の上から2番目の(中央の)LLRテーブルを使用して行われたとする。その後のステップS15において、全体制御部27は、図10の最上部または最下部のLLRテーブルを使用することができる。最上部のLLRテーブルは、各LLRラベルを中央のLLRテーブルでの各LLR値より1大きいLLR値に変換する。最下部のLLRテーブルは、各LLRラベルを中央のLLRテーブルでの各LLR値より1小さいLLR値に変換する。1より大きい絶対値の増分が使用されてもよい。
図10および図11は、LLRラベルのLLR値への変換方法の変更の例を示す。例として、ステップS12での変換が、図10の上から2番目の(中央の)LLRテーブルを使用して行われたとする。その後のステップS15において、全体制御部27は、図10の最上部または最下部のLLRテーブルを使用することができる。最上部のLLRテーブルは、各LLRラベルを中央のLLRテーブルでの各LLR値より1大きいLLR値に変換する。最下部のLLRテーブルは、各LLRラベルを中央のLLRテーブルでの各LLR値より1小さいLLR値に変換する。1より大きい絶対値の増分が使用されてもよい。
または、ステップS15において、全体制御部27は、図11の最上部または最下部のLLRテーブルを使用することができる。最上部のLLRテーブルでは、LLR値は右に1つシフトしている。すなわち、最上部のLLRテーブルでのLLRラベル1〜19は、中央のLLRテーブルでのLLRラベル0〜18のためのそれぞれのLLR値に変換される。LLRラベル0は、例えば、−9のLLR値に変換される。最下部のLLRテーブルでは、LLR値は左に1つシフトしている。すなわち、最下部のLLRテーブルでのLLRラベル0〜18は、中央のLLRテーブルでのLLRラベル1〜19のためのそれぞれのLLR値に変換される。LLRラベル19は、例えば、−9のLLR値に変換される。
ステップS15が、ステップS14を経て再び行われる場合は、図10〜図11のLLRテーブルの変更のうちの任意のものが使用されることができる。すなわち、ステップS15が繰り返し行われる場合、複数のステップS15にわたって、図10の最上部、図10の最下部、図11の最上部、図11の最下部のLLRテーブルが、任意の順番の任意の組合せで使用されることができる。
または、ステップS15において、最初に使用されたLLRテーブル(図10または図11の真ん中のLLRテーブル)と全く別のLLRテーブルが使用されてもよい。
ここまでの記述は、ロワーページからのデータ読み出しの例に関する。しかしながら、第1実施形態は、この例に限られず、ミドルページおよび(または)アッパーページからのデータ読み出しに適用されてもよい。
<1.3.利点>
第1実施形態によれば、メモリコントローラ2は、以下に記述されるように、より効率良く、SB使用復号を行うことができる。
第1実施形態によれば、メモリコントローラ2は、以下に記述されるように、より効率良く、SB使用復号を行うことができる。
SB使用復号が失敗した場合、ソフトビットデータを再び取得すること、すなわち、図7の例でステップS14での復号が失敗した場合に、ステップS13での復号に使用されたソフトビットデータを破棄して、フローがステップS11に戻ることが考えられる。しかしながら、ソフトビットデータの再取得は、繰り返しのデータ読み出しを含んでおり、よって、時間を要する。
一方で、SB使用復号の失敗は、閾値電圧分布曲線の極小位置が最適な(すなわち、選択ページのハードビットデータにおいて最小の数のFBC(fail bit count)を得られる)読み出し電圧と乖離していることが原因である可能性がある。すなわち、LLRテーブルは、最小のFBCに繋がる読み出し電圧(最小FBC電圧)を使用して得られたLLRラベルのためのLLR値を示すように形成されている。最小FBC電圧そのものの推定は困難なため、実際は、Vthトラッキングによって極小電圧が推定され、推定された極小電圧が最小FBCを得られるとの仮定に基づいて、極小電圧が最小FBC電圧として使用される。このため、SB使用復号の成功率はVthトラッキングの精度に依存する。
しかしながら、特定の閾値分布境界では最小FBC電圧は極小電圧と乖離しがちである。より具体的には、図12の部分(a)にF状態のG状態の分布の境界が代表として示されるように、いくつかの分布の対の境界は、最小FBC電圧と極小電圧との乖離が小さい。一方、図12の部分(b)に示されるように、Er状態の分布とA状態の分布の境界では、最小FBC電圧と極小電圧との乖離が大きい。最小FBC電圧と極小電圧との乖離が大きい部分の閾値電圧を有するセルトランジスタMTは誤って状態を判断され易い。このことが図13に示されている。
図13は、いくつかのケースでの誤り訂正能力を示し、縦軸において誤り訂正後のデータ中の誤りビットの数を示す。図13は、部分(a)において、極小電圧と最小FBC電圧の差が小さいケースを示し、部分(b)において、極小電圧と最小FBC電圧の差が大きいケースを示す。部分(a)は、例として、状態Erと状態Aとの判別を含まないページの読み出し、例えばミドルページ読み出しのケースを示す。部分(b)は、状態Erと状態Aとの判別を含むロワーページ読み出しのケースを示す。また、ケースAは、デフォルトのLLRテーブルを使用した場合を示し、メモリシステム5の実際の使用において一般的に起こるケースである。ケースBは、検討のために作成された、読み出し対象のページの現状にとって最適なLLRテーブルを使用したケースであり、メモリシステム5の使用中に起こり得ないケースである。
部分(a)では、極小電圧が最小FBC電圧と大きく違わないので、極小電圧とデフォルトのLLRテーブルを使用した訂正能力(ケースA)は、極小電圧と最適なLLRテーブルを使用した場合の訂正能力(ケースB)は、大きく違わない。一方、部分(b)では、極小電圧が最小FBC電圧と大きく違うので、極小電圧とデフォルトのLLRテーブルを使用した場合の訂正能力(ケースA)は、極小電圧と最適なLLRテーブルを使用した場合の訂正能力(ケースB)と大きく異なる。しかし、部分(b)は、見方を変えると、極小電圧が最小FBC電圧と大きく異なっている場合、最適なLLRテーブルの使用は現実的に無理であっても、より良いLLRテーブル使用すれば、訂正能力が向上されることができることを示唆する。
第1実施形態のメモリコントローラ2は、SB使用復号に失敗すると、失敗したSB使用復号で使用されたLLR値への変換に使用されたLLRテーブルと異なるLLRテーブルでLLRラベルをLLR値に再変換する。相違するLLRテーブルで変換されたLLR値は、SB使用復号の成功に繋がる可能性がある。しかも、LLRテーブルの変更は、新たなLLRラベルの取得を必要としない。このため、あるSB使用復号の失敗後の別のSB使用復号は、ソフトビットデータを再度取得することを必要としない。よって、第1実施形態のメモリコントローラ2は、ソフトビットデータの再取得を含んだSB使用復号の再実行の場合よりも短い時間で、SB使用復号に成功でき得る。
(第2実施形態)
第2実施形態は、第1実施形態の詳細に関する。
第2実施形態は、第1実施形態の詳細に関する。
第2実施形態のメモリシステム5は、第1実施形態のメモリシステム5と同じ要素および接続を有する。一方、第2実施形態のメモリコントローラ2は、以下に記述される動作を行えるように構成されており、具体的には、ROM24中のファームウェアがメモリコントローラ2に以下に記述される動作を行わせるように構成されている。
図14および図15は、第2実施形態のメモリシステム5の動作の一部のフローを示し、あるロワーページからの読み出しのためのメモリシステム5の動作の一部のフローを示す。より具体的には、あるページからの読み出しのうちの1フレームサイズのデータの取得の完了までを示す。
図14に示されるように、メモリコントローラ2は、第1実施形態と同じく、図7を参照して記述されたステップS1、S2、S3、S5、S6、S7、S11、S12、S13、およびS14を行う。SB使用復号が失敗すると(ステップS14のNo分岐)、フローはステップS21に移行する。ステップS21において、全体制御部27は、あるLLRラベルのためのLLR値を、元のLLRテーブルにおける対応するLLR値から負の方向に補正する。補正されたLLR値に変換されるLLRラベルは、Er状態の分布およびA状態の分布の境界近傍の閾値電圧に対応するものである。図10のLLRテーブルの例に基づくと、図16に示されるように、LLRラベル1、2、3、4、5、および6のためのLLR値が補正される。補正の大きさは、例えば1である。
図14に戻る。メモリコントローラ2は、ステップS22およびS23を行う。ステップS22およびS23は、それぞれ、ステップS13およびS14と同じである。SB使用復号が成功すると(ステップS23のYes分岐)、フローは終了し、SB使用復号が失敗すると(ステップS23のNo分岐)、フローは、ステップS25に移行する。ステップS25において、全体制御部27は、ステップS21と同様にして、あるLLRラベルのためのLLR値を、元のLLRテーブルにおける対応するLLR値から負の方向に補正する。補正されたLLR値に変換されるLLRラベルは、D状態の分布およびE状態の分布の境界近傍の閾値電圧に対応するものである。図10のLLRテーブルの例に基づくと、図17に示されるように、LLRラベル13、14、15、16、17、および18のためのLLR値が補正される。補正の大きさは、例えば1である。
図14に戻る。メモリコントローラ2は、ステップS27およびS28を行う。ステップS27およびS28は、それぞれ、ステップS13およびS14と同じである。SB使用復号が成功すると(ステップS28のYes分岐)、フローは終了し、SB使用復号が失敗すると(ステップS28のNo分岐)、フローは、ステップS31に移行する。ステップS31において、全体制御部27は、ステップS21と同様にして、あるLLRラベルのためのLLR値を、元のLLRテーブルにおける対応するLLR値から負の方向に補正する。補正されたLLR値に変換されるLLRラベルは、ステップS21と同じくEr状態の分布およびA状態の分布の境界近傍の閾値電圧に対応するものと、ステップS25と同じくD状態の分布およびE状態の分布の境界近傍の閾値電圧に対応するものである。図10のLLRテーブルの例に基づくと、図18に示されるように、LLRラベル1、2、3、4、5、6、13、14、15、16、17、および18のためのLLR値が補正される。補正の大きさは、例えば1である。
図14に戻る。メモリコントローラ2は、ステップS32およびS33を行う。ステップS32およびS33は、それぞれ、ステップS13およびS14と同じである。SB使用復号が成功すると(ステップS33のYes分岐)、フローは終了し、SB使用復号が失敗すると(ステップS33のNo分岐)、フローは、ステップS35に移行する。ステップS35において、全体制御部27は、ステップS21と同様にして、あるLLRラベルのためのLLR値を、元のLLRテーブルにおける対応するLLR値から正の方向に補正する。補正されたLLR値に変換されるLLRラベルは、Er状態の分布およびA状態の分布の境界近傍の閾値電圧に対応するものである。図10のLLRテーブルの例に基づくと、図19に示されるように、LLRラベル1、2、3、4、5、および6のためのLLR値が補正される。補正の大きさは、例えば1である。
図14に戻る。メモリコントローラ2は、ステップS37およびS38を行う。ステップS37およびS38は、それぞれ、ステップS13およびS14と同じである。SB使用復号が成功すると(ステップS38のYes分岐)、フローは終了し、SB使用復号が失敗すると(ステップS38のNo分岐)、フローは、ステップS41に移行する。ステップS41において、全体制御部27は、ステップS21と同様にして、あるLLRラベルのためのLLR値を、元のLLRテーブルにおける対応するLLR値から正の方向に補正する。補正されたLLR値に変換されるLLRラベルは、D状態の分布およびE状態の分布の境界近傍の閾値電圧に対応するものである。図10のLLRテーブルの例に基づくと、図20に示されるように、LLRラベル13、14、15、16、17、および18のためのLLR値が補正される。補正の大きさは、例えば1である。
図14に戻る。メモリコントローラ2は、ステップS43を行う。ステップS43は、それぞれ、ステップS13と同じである。SB使用復号が成功すると(ステップS43のYes分岐)、フローは終了し、SB使用復号が失敗すると(ステップS43のNo分岐)、フローは、ステップS45に移行する。ステップS45において、メモリコントローラ2は、読み出しフェイルであると決定し、図14および図15のフローは終了する。例えば、その後、メモリコントローラ2は、読み出しフェイルをホスト装置3に通知し、および(または)別の誤り訂正でのデータ復号を試みることができる。
図14および図15の例でのLLRテーブルの補正の順序は、SB使用復号成功に比較的より成功しやすいと考えられる順序に基づく。しかしながら、LLRテーブルの補正が、図14および図15の順序と異なる順序で行われてもよい。また、ステップS43のNo分岐は、ステップS35とS41とが組み合わされたステップに継続してもよい。
ここまでの記述は、ロワーページからのデータ読み出しの例に関する。しかしながら、第2実施形態は、この例に限られず、ミドルページおよび(または)アッパーページからのデータ読み出しに適用されてもよい。
第2実施形態によれば、メモリコントローラ2は、第1実施形態と同じく、SB使用復号に失敗すると、失敗したSB使用復号で使用されたLLR値への変換に使用されたLLRテーブルと異なるLLRテーブルでLLRラベルをLLR値に再変換する。このため、第1実施形態と同じ利点を得られる。
また、第2実施形態によれば、LLRテーブルの補正は、復号成功に比較的より成功しやすいと考えられる順序に基づく。このため、復号の成功しやすさを考慮せずに決定された順序で変換方法の変更が行われる例よりも短い時間で復号に成功する可能性が高い。
(第3実施形態)
第3実施形態は、第1または第2実施形態に基づき、第3実施形態では第1または第2実施形態での復号の結果が利用される。
第3実施形態は、第1または第2実施形態に基づき、第3実施形態では第1または第2実施形態での復号の結果が利用される。
第3実施形態のメモリシステム5は、第1実施形態のメモリシステム5と同じ要素および接続を有する。一方、第3実施形態のメモリコントローラ2は、以下に記述される動作を行えるように構成されており、具体的には、ROM24中のファームウェアがメモリコントローラ2に以下に記述される動作を行わせるように構成されている。さらに、第3実施形態では、図21に示されるように、全体制御部27は、シフトテーブル保持部273をさらに含む。シフトテーブル保持部273は、例えばRAM23の機能の一部により実現され、シフトテーブルを保持する。シフトテーブルは、Vthトラッキングにより推定された極小電圧についてのシフトの大きさ(シフト値)を保持する。シフトテーブルは、シフト値を、例えばワード線WLごとに、またはアドレスが連続する複数のワード線ごとに保持する。シフトテーブルの詳細は後述される。
図22は、第3実施形態のメモリシステム5の動作の一部のフローを示し、あるページからの2回の読み出しのためのメモリシステム5の動作の一部のフローを示す。図22のフローは、記述が必要以上に複雑になることを避けるために、部分的に簡略化されている。図22は、第3実施形態が第1実施形態と組合せられた例についてのフローを示す。第3実施形態は、第2実施形態と組合せられることが可能である。
図22に示されるように、メモリコントローラ2は、第1実施形態と同じく、図7を参照して記述されたステップS1、S2、S3、S5、S6、S7、S11、S12、S13、およびS14を行う。SB使用復号が成功すると(ステップS14のYes分岐)、フローはステップS51に移行する。ステップS51において、全体制御部27は、成功したSB使用復号の結果に基づいて、シフトテーブル中の選択ページの記憶空間を提供するワード線WLについてのシフト値を更新する。ステップS51の詳細は後述される。
ステップS52において、メモリコントローラ2は、ステップS1でのデータ対象の選択ページと同じ選択ページからのデータ読み出しを決定する。ステップS53において、メモリコントローラ2は、シフトテーブルを参照して、選択ページについてのシフト値を取得する。より具体的には、メモリコントローラ2は、あるページからのハードビットデータの読み出しを決定すると、当該ページの記憶空間を提供するセルユニットCUのワード線WLについてのシフト値がシフトテーブル中に保持されているかを判断し、保持されている場合は保持されているシフト値を使用することを決定する。
ステップS53において、メモリコントローラ2は、取得されたシフト値を使用した選択ページからのハードビットデータ読み出しを記憶装置1に指示し、指示されたハードビットデータを受け取る。
ステップS54において、メモリコントローラ2は、受け取られたハードビットデータに対するHB復号を試みる。ステップS54は、ステップS2と同じである。図21により示される現行の例ではHB復号は成功するものとし、ステップS54が完了すると、フローは終了する。ステップS54での復号が失敗した場合は、フローは、例えばステップS3に継続することができる。
図23が参照されて、シフトテーブルおよびステップS51について記述される。図23は、2つのLLRテーブルの各々の一部を示す。実線は、図10の中央のLLRテーブルの一部であり、すなわち、予め用意されたデフォルトのLLRテーブルの一部である。破線は、図10の最下部のLLRテーブルの一部である。以下の記述では、破線のような図6の最下部のLLRテーブルによって変換されたLLR値の使用により、ステップS14のSB使用復号が成功したものとする。図23から、LLR値がゼロのときのLLRラベルに着目すると、デフォルトのLLRテーブルでは、LLR値がゼロとなるLLRラベルは、3と4の間、3.6程度に位置することが分かる。一方、SB使用復号の成功を導いたLLRテーブルは、LLRラベル4をLLR値0に変換している。これらのことから、Vthトラッキングにより推定された極小電圧を使用した読み出しによってLLRラベル4と判断された選択セルトランジスタMTがLLRラベル3.6程度として判断されれば、デフォルトのLLRテーブルの使用により、SB使用復号が成功することを示す。極小電圧を使用した読み出しによってLLRラベル4と判断された選択トランジスタMTがLLRラベル4に繋がるデータを読み出したのは、最適でない極小電圧が用いられたからである。すなわち、推定された極小電圧が最適な(最小の誤り数の)読み出し電圧VAoptではなかったことが分かる。
このことに基づいて、全体制御部27は、ステップ51において、SB使用復号の結果に基づいて、関連する極小電圧に対するシフト値を、シフトテーブル中で更新する。図24に示されるように、極小電圧Vrmに代えて、電圧Vrm+ΔVを使用する読み出しが、より少ない誤りを含んだハードビットデータの取得に繋がる。LLRラベルN(Nは0または自然数)とLLRラベルN+1との差は既知であり、上記のように、記憶装置1に対して指示可能な予め定められた読み出し電圧VCGRの上昇または下降の幅の整数倍に等しい。このことから、全体制御部27は、ΔVの値を算出可能であり、例として、ΔVが約3DACの大きさを有するとする。上記のように、全体制御部27は、あるワード線WLの選択セルユニットCUからのデータ読み出しの間に推定された極小電圧Vrmの値を保持しておいて、当該ワード線WLの選択セルユニットCUからの次のデータ読み出しの際に保持された極小電圧Vrmの値を読み出し電圧VCGRとして使用する。そこで、全体制御部27は、ステップS51において、選択セルユニットCUのワード線(選択ワード線)WLについての極小電圧Vrmを、Vrm+ΔVへと更新する。
全体制御部27は、ステップS53での選択ページからの読み出しのときに、極小電圧Vrm+ΔVを読み出し電圧として使用する。この結果、極小電圧Vrmを使用した読み出しではデータ“0”を保持すると判断されるセルトランジスタMTの一部は、データ“1”を保持すると判断される。なお、極小電圧Vrmの使用の場合と、電圧Vrm+ΔVの使用の場合とでは、ハードビットデータは異なり、LLRラベルの境界も異なる。この電圧Vrm+ΔVを使用して得られたハードビットデータは、極小電圧Vrmを使用して得られたハードビットデータより、少ない誤りを含む可能性が高い。よって、HB復号のみで誤り訂正が成功する可能性が高い。
図25は、第3実施形態のシフトテーブルの例を示す。全体制御部27は、例えばワード線WLごと、または、アドレスの連続する複数のワード線WLごとに、7つの極小電圧Vrm1〜Vrm7を保持する。あるワード線WLについての極小電圧Vrm1〜Vrm7は、当該ワード線WLのセルユニットCUからの読み出しの際に読み出し電圧VA〜VGとして使用される。そして、シフトテーブルは、ワード線WLごと、または極小電圧Vrm1〜Vrm7の共通の組を割り当てられた複数のワード線WLごとにシフト量ΔVを保持する。極小電圧Vrm1〜Vrm7ごとに専用のシフト量が使用されてもよい。
第3実施形態は、第2実施形態と組わせられてもよい。この場合、ステップS23、S28、S33、S38、およびS43の各々のYes分岐がステップS51に継続する。
第3実施形態によれば、メモリコントローラ2は、以下のように、より短期間で正しいデータを取得できる。上記のように、あるセルユニットCUからのデータ読み出しの間に推定された極小電圧は、メモリコントローラ2において保持され、次に、当該セルユニットCUからの読み出しの際に使用される。または、ある同じセルユニットCUからのデータ読み出しであっても、データ読み出しの度に極小電圧が推定される。いずれの場合でも、極小電圧が最小FBC電圧と乖離していると、HB復号は成功せず、SB使用復号が行われ得る。すると、あるセルユニットCUからのデータ読み出しの度に、SB使用復号が行われる。このことは、データ読み出しに長い時間を要する。
第3実施形態のメモリコントローラ2は、元のLLRテーブルと別のLLRテーブルを使用して再取得されたLLR値を使用したSB使用復号が成功すると、SB使用復号成功に繋がったLLRテーブルに基づいて、推定された極小電圧に対してなされるべきシフトの量を算出し、これを保持する。メモリコントローラ2は、次のデータ読み出しの際に、保持されたシフト量と、対応する極小電圧との和を使用する。極小電圧とシフト量との和は、より適切な読み出し電圧である。このため、極小電圧とシフト量との和を使用して取得されたハードビットデータは、元の極小電圧を読み出し電圧として使用して取得されたハードビットよりも少ない誤りを含み得る。このため、シフト量を付加された極小電圧を読み出し電圧として使用することは、HB復号のみでの正しいデータの取得の可能性を高め、SB使用復号の必要性を減じる。このことは、より短期間での正しいデータの取得を可能にする。
(第4実施形態)
第4実施形態は、複数のLLRテーブルからのより良い方の選択の方法に関する。
第4実施形態は、複数のLLRテーブルからのより良い方の選択の方法に関する。
第4実施形態のメモリシステム5は、第1実施形態のメモリシステム5と同じ要素および接続を有する。一方、第4実施形態のメモリコントローラ2は、以下に記述される動作を行えるように構成されており、具体的には、ROM24中のファームウェアがメモリコントローラ2に以下に記述される動作を行わせるように構成されている。
図26は、第4実施形態のECC回路26中の要素および接続、ならびにメモリコントローラ2中のECC回路26に関連する機能ブロックを示す。図26に示されるように、全体制御部27は、加算部275およびLLRテーブル選択部276をさらに含む。加算部275は、複数のシンドローム値を受け取り、受け取られたシンドローム値の和を算出し、算出された和をLLRテーブル選択部276に供給する。LLRテーブル選択部276は、受け取られた和に基づいて、複数のLLRテーブルから1つを選択する。また、全体制御部27は、ECC回路26をLLRテーブル選択モードおよび復号モードの選択された方の一方で動作させることができる。復号モードは、ECC回路26によってデータ中の誤り訂正が行われるモードである。LLRテーブル選択モードは、復号モードに先行して実行され、後続の復号モードで使用されるLLRテーブルが複数のLLRテーブルから選択されるモードである。
誤り訂正回路261は、例えば、シンドロームを使用するLDPC復号を行う。誤り訂正回路261は、シンドロームチェック回路2611、復号回路2612、シンドロームチェック回路2613を含む。
シンドロームチェック回路2611は、n×mの検査行列(nおよびmは自然数)を有しており、複数のLLR値を入力として受け取り、複数のLLR値からそれぞれの複数の硬判定値を導出し、複数の硬判定値と検査行列からシンドローム値を計算できる。
より具体的には、シンドロームチェック回路2611は、n個のLLR値LLR1〜LLRn(1×nの行列状のLLR値)と、m×nの検査行列の積を算出して、m個のシンドローム値S1〜Smを取得できる。シンドロームチェック回路2611は、LLR値LLR1〜LLRnに対する並行な処理により、シンドローム値S1〜Smを算出できる。シンドローム値S1〜Smは、各々、1ビットのデータであり、加算部275に供給される。
また、シンドロームチェック回路2611は、復号モードの間、算出されたシンドローム値に基づいて、シンドロームチェック回路2611に入力されたLLR値セットがパスかフェイルかを判断する。パス判定の場合、入力されたLLR値は誤りを含んでいないと考えられる。シンドロームチェック回路2611は、パス判定の旨の信号および入力LLR値セットを誤り検出回路262に供給する。一方、フェイル判定の場合、シンドロームチェック回路2611は、フェイル判定の旨の信号および入力されたLLR値セットを復号回路2612に供給する。
復号回路2612は、フェイル判定の旨の信号およびLLR値セットを入力されると、入力されたLLR値セットを使用してSB使用復号を行い、誤り訂正されたLLR値セットをシンドロームチェック回路2613に供給する。
シンドロームチェック回路2613は、シンドロームチェック回路2611と同様に、n×mの検査行列を有しており、複数のLLR値を入力として受け取り、複数のLLR値からそれぞれの複数の硬判定値を導出し、複数の硬判定値と検査行列からシンドローム値を計算できる。シンドロームチェック回路2613は、誤り訂正されたLLR値セットを受け取ると、シンドロームチェック回路2611と同様にして、m個のシンドローム値を算出する。シンドロームチェック回路2613は、算出されたシンドローム値に基づいて、誤り訂正されたLLR値セットがパスかフェイルかを判断する。シンドロームチェック回路2613は、パス判定の場合、パス判定の旨の信号および誤り訂正されたLLR値セットを誤り検出回路262に供給し、フェイル判定の場合、フェイル判定の旨の信号およびシンドロームチェック回路2613から受け取られたLLR値セットを誤り検出回路262に供給する。
誤り検出回路262は、パス判定の旨の信号およびLLR値セット(すなわち、誤り訂正されたLLR値セット)を入力されると、入力されたLLR値セットが誤りを含んでいるかを検査する。誤りが含まれていれば、フェイル判定の旨の信号を全体制御部27に供給する。誤りが含まれていなければ、誤り検出回路262は、誤り訂正回路261によってなされた誤り訂正が確からしいと判断し、パス判定の旨の信号を全体制御部27に供給するとともに、入力された(すなわち、誤り訂正された)LLR値セットを全体制御部27(特に、例えば、RAM23)に供給する。
シンドロームチェック回路2613は、シンドロームチェック回路2611に統合されていてもよい。すなわち、シンドロームチェック回路2611は、上記のシンドロームチェック回路2613によって行われる処理を行う。
図27は、第4実施形態の全体制御部27の一部およびシンドロームチェック回路2611のより詳細なブロック図であり、全体制御部27の一部およびシンドロームチェック回路2611のうちのLLRテーブル選択モードで動作する部分を示す。
図27に示されるように、LLR変換部272は、第1部分272aと第2部分272bを含む。第1部分272aおよび第2部分272bは、以下、それぞれ、LLR変換部272aおよびLLR変換部272bと称される。LLR変換部272aおよび272bは、例えば、並行して動作することができる。すなわち、LLR変換部272aおよび272bの各々は、LLR変換部272の機能の一部により実現され、LLR変換部272の動作によって、LLR変換部272aおよび272bが並行して動作することになる。LLR変換部272aおよび272bはともに、n個のLLRラベルLLRl1〜LLRlnを受け取る。LLR変換部272aはLLRテーブル2721aを使用してLLRラベルLLRl1〜LLRlnをn個のLLR値LLRva1〜LLRvanにそれぞれ変換する。LLR変換部272bはLLRテーブル2721bを使用してLLRラベルLLRl1〜LLRlnをn個のLLR値LLRvb1〜LLRvbnにそれぞれ変換する。LLRテーブル2721aおよび2721bは、互いに異なり、ある同じLLRラベルを相違するLLR値に変換し得る。
シンドロームチェック回路2611は、第1部分2611aと第2部分2611bを含む。第1部分2611aと第2部分2611bは、以下、それぞれ、シンドロームチェック回路2611aおよびシンドロームチェック回路2611bと称される。シンドロームチェック回路2611aおよび2611bは、並行して動作することができる。すなわち、シンドロームチェック回路2611aおよび2611bの各々は、シンドロームチェック回路2611の機能の一部により実現され、シンドロームチェック回路2611の動作によって、シンドロームチェック回路2611aおよび2611bが並行して動作することになる。
シンドロームチェック回路2611aは、LLR値LLRva1〜LLRvanを受け取り、LLR値LLRva1〜LLRvanのそれぞれのn個の硬判定値からなる1×n行列とk×nの検査行列の積を算出し、k個のシンドローム値Sa1〜Sakを取得する。
シンドロームチェック回路2611bは、LLR値LLRvb1〜LLRvbnを受け取り、LLR値LLRvb1〜LLRvbnのそれぞれのn個の硬判定値からなる1×n行列と(m−k)×nの検査行列の積を算出し、m−k個のシンドローム値Sb1〜Sb(m−k)を算出する。
加算部275は、加算部275aおよび加算部275bを含む。加算部275aは、シンドローム値Sa1〜Sakを受け取り、シンドローム値Sa1〜Sakを加算して、総和Taを算出する。総和Taは、複数ビットのデータである。加算部275bは、シンドローム値Sb1〜Sb(m−k)を受け取り、シンドローム値Sb1〜Sb(m−k)を加算して、総和Tbを算出する。総和Tbは、複数ビットのデータである。
総和TaおよびTbは、LLRテーブル選択部276に供給される。LLRテーブル選択部276は、総和TaおよびTbを比較し、どちらが大きいかを判断する。LLRテーブル選択部276は、総和Taおよび(または)Tbに重みを乗じて、重みを乗じられた総和TaおよびTbを比較することもできる。LLRテーブル選択部276は、大きさの判断に基づいて、LLRテーブル2721aまたは2721bを選択する。LLRテーブル選択部276は、総和Taの方が小さければ、LLRテーブル2721aを選択し、総和Tbの方が小さければ、LLRテーブル2721bを選択する。
全体制御部27は、復号モードにおいて、当該復号モードに先行するLLRテーブル選択モードにおいて選択されたLLRテーブル2721aまたは2721bを使用したSB使用復号を行うようにECC回路26を制御する。
図28は、第4実施形態のメモリコントローラ2の一部の動作のフローを示す。第4実施形態は、第1乃至第3実施形態に組合せられることが可能である。図28および以下の記述は、第4実施形態が第1実施形態と組合せられた例に関する。図28に示されるように、ステップS11とステップS12の間にステップS61が行われる。SB使用復号が開始すると、ステップS7およびS11が行われ、次いで、ステップS61が行われる。ステップS61は、任意の基準で選択された2つの相違するLLRテーブル2721aおよび2721bのうち、どちらがより適切か、すなわちより良いSB使用復号をもたらすかを実際にSB使用復号を行う前に推定するために行われる。ステップS61は、ステップS12に継続する。また、ステップS14のNo分岐は、ステップS61に継続する。
ステップS61が繰り返されて、3つ以上の候補となるLLRテーブルのうち、最小と思われる1つが選択され、その後、ステップS12が行われてもよい。そのためには、ステップS61の繰り返しによって2つのLLRテーブルからの1つの選択が繰り返される。
図29は、ステップS61のサブフローを示す。図29に示されるように、ステップSS11は、サブステップSS611およびSS616に継続する。サブステップSS611、SS612、およびSS6113の組、ならびにサブステップSS616、SS617、およびSS618の組は、並行して行われる。
サブステップSS611において、LLR変換部272aは、LLRテーブル2721aを用いて、n個のLLRラベルの各々を1つのLLR値に変換して、n個のLLR値を得る。サブステップSS612において、シンドロームチェック回路2611aは、サブステップSS611で得られた1×nのLLR値の行列とk×nの検査行列とから、k個のシンドローム値を算出する。サブステップSS6113において、加算部275aは、算出されたシンドローム値を加算して、総和Taを算出する。サブステップS613は、サブステップSS619に継続する。
サブステップSS616において、LLR変換部272bは、LLRテーブル2721bを用いて、n個のLLRラベルの各々を1つのLLR値に変換して、n個のLLR値を得る。サブステップSS617において、シンドロームチェック回路2611bは、ステップS616で得られた1×nのLLR値の行列とLLR値と(m−k)×nの検査行列とから、m−k個のシンドローム値を算出する。サブステップSS618において、加算部275bは、算出されたシンドローム値を加算して、総和Tbを算出する。サブステップS618は、サブステップSS619に継続する。
サブステップSS619において、全体制御部27は、総和TaおよびTbの比較に基づいて、LLRテーブル2721aまたは2721bを選択する。サブステップSS619は、ステップS12に継続する。ステップS12での復号には、ステップS619で選択されたLLRテーブルが使用される。
図30は、第4実施形態に係る種々の検査行列の例を示す。図30は、第1段目において、復号モードの間に復号回路2612によって使用されるm×nの検査行列を示す。一方、LLRテーブル選択モードでは、図30の第2段目および第3段目に示される検査行列が使用される。第2段目は、シンドロームチェック回路2611aによって使用される検査行列の例を示し、第3段目は、シンドロームチェック回路2611bによって使用される検査行列の例を示す。
第2段目の検査行列は、復号回路2612によって使用されるm×nの検査行列(以下、復号用検査行列と称される)の部分行列であり、復号用検査行列のうちのk行からなり、k×nの要素からなる。k行の部分は、復号用検査行列のうちの任意の行であることが可能である。図30は、復号用検査行列の第1〜第k行の部分である例を示す。
第3段目の検査行列は、復号用検査行列の部分行列であり、復号用検査行列のうちのm−k行からなり、(m−k)×nの要素からなる。m−k行の部分は、任意の行であることが可能である。例えば、m−k行の部分は、ECC回路26の回路の複雑化の抑制およびECC回路26中のRAMの使用効率の向上の点から、信号用検査行列のうちの第2段目の検査行列と重複しない行からなることが可能である。図30は、そのような例を示しており、第3段目の検査行列が、復号用検査行列の第k+1〜第m行の部分であるケースを示す。
上記のように、復号用検査行列から任意のk行の部分と(m−k)行の部分の部分行列が形成されることが可能である。ただし、k行の部分に含まれる1の数と、(m−k)行の部分に含まれる1の数とが不一致の場合、サブステップSS613において、総和TaおよびTbに重みが乗じられる。すなわち、k行の部分に含まれる1の数がN個で、(m−k)行の部分に含まれる1の数がM個である場合、総和TbはM/Nを乗じられて、総和Tbと、総和Tb×(N/M)が比較される。
第4実施形態によれば、以下に記述されるように、2つのLLRテーブルのうちのより良い方が短い時間で選択されることができる。
2つのLLRテーブルのより良い方の選択のために、m×nの復号用検査行列を使用することが考えられる。すなわち、n個のLLRラベルが、一方のLLRテーブルを使用してLLR値の第1セットに変換され、LLR値の第1セットと復号用検査行列とが使用されて総和が算出される。同様に、n個のLLRラベルが、他方のLLRテーブルを使用してLLR値の第2セットに変換され、LLR値の第2セットと復号用検査行列とが使用されて総和が算出される。そして、2つの総和が比較される。しかしながら、この方法では、m×nの復号用検査行列を使用したシンドローム値の計算が2回行われ、計2m個のシンドローム値が計算される。算出される必要のあるシンドローム値の数が多いほど、シンドローム値の計算はより長い時間を要する。
第4実施形態のメモリコントローラ2は、m×nの復号用検査行列がk×nの部分行列と(m−k)×nの部分行列を形成し、部分行列を使用してシンドローム値を算出し、こうして計算されたシンドローム値を使用して複数のLLRテーブルのうち最良と推定されるLLRテーブルを選択する。このため、算出される必要のあるシンドローム値は、k+(m−k)=m個である。よって、復号用検査行列が使用されて2m個のシンドローム値が算出される場合より少ない計算量でシンドローム値が算出されることが可能であり、短い時間で必要なシンドローム値が算出されることができる。よって、2つのシンドロームのうち、より良いLLRテーブルが、元の復号用行列を使用した場合よりも短い時間で選択されることが可能である。
また、シンドローム値の使用を通じてLLRテーブルが評価される。このため、あるLLRテーブルを使用して得られたLLRに対する復号の結果を得る前に、使用されたLLRテーブルが評価、すなわち、他のLLRテーブルと比較されることができる。このため、LLRテーブルの再選択が、復号の結果に基づいたLLRテーブルの再選択よりも短い時間で完了されることができる。よって、復号の成功までに要する時間が、復号の結果に基づいたLLRテーブルの再選択を含んだ復号の成功までに要する時間よりも短い。
(第5実施形態)
第5実施形態は、第4実施形態に基づき、3つ以上のLLRテーブルからの選択および選択用途の検査行列の形成の例に関する。
第5実施形態は、第4実施形態に基づき、3つ以上のLLRテーブルからの選択および選択用途の検査行列の形成の例に関する。
第5実施形態のメモリシステム5は、第1実施形態のメモリシステム5と同じ要素および接続を有する。一方、第5実施形態のメモリコントローラ2は、第4実施形態のメモリコントローラ2と同じ要素および接続を有し、かつ、以下に記述される動作を行えるように構成されている。具体的には、ROM24中のファームウェアがメモリコントローラ2に以下に記述される動作を行わせるように構成されている。
図31は、第5実施形態の全体制御部27の一部およびシンドロームチェック回路2611のより詳細なブロック図であり、全体制御部27の一部およびシンドロームチェック回路2611のうちのLLRテーブル選択モードで動作する部分を示す。
図31に示されるように、LLR変換部272は、LLR変換部272a、272b、および272cを含む。LLR変換部272a、272b、および272cは、例えば、並行して動作することができ、LLR変換部272の機能の一部により実現される。LLR変換部272a、272b、および272cは、第4実施形態のLLR変換部272a(または272b)と同様に、それぞれLLRテーブル2721a、2721b、および2721cを使用して、LLRラベルLLRl1〜LLRlnをn個のLLR値のそれぞれの組に変換する。
シンドロームチェック回路2611は、シンドロームチェック回路2611a、2611b、および2611cを含む。シンドロームチェック回路2611a、2611b、2および611cは、並行して動作することができ、シンドロームチェック回路2611の機能の一部により実現される。シンドロームチェック回路2611a、2611b、および2611cは、それぞれ、i×nの検査行列、j×nの検査行列、(m−i−j)×nの検査行列を保持する。ここで、iおよびjは、m以下の自然数である。シンドロームチェック回路2611aは、第4実施形態のシンドロームチェック回路2611a(または2611b)と同様に、n個のLLR値のそれぞれのn個の硬判定値からなる1×n行列とi×nの検査行列の積を算出し、i個のシンドローム値Sa1〜Saiを取得する。シンドロームチェック回路2611bは、第4実施形態のシンドロームチェック回路2611a(または2611b)と同様に、n個のLLR値のそれぞれのn個の硬判定値からなる1×n行列とj×nの検査行列の積を算出し、j個のシンドローム値Sb1〜Sbjを取得する。シンドロームチェック回路2611cは、第4実施形態のシンドロームチェック回路2611a(または2611b)と同様に、n個のLLR値のそれぞれのn個の硬判定値からなる1×n行列と(m−i−j)×nの検査行列の積を算出し、(m−i−j)個のシンドローム値Sc1〜Sc(m−i−j)を取得する。
加算部275は、加算部275a、275b、および275cを含む。加算部275aは、シンドローム値Sa1〜Saiを加算して、総和Taを算出する。加算部275bは、シンドローム値Sb1〜Sbjを加算して、総和Tbを算出する。加算部275cは、シンドローム値Sc1〜Sc(m−i−j)を加算して、総和Tcを算出する。
LLRテーブル選択部276は、総和Ta、Tb、およびTcのうちの最小のものを選択する。LLRテーブル選択部276は、総和Ta、Tb、およびTcのうちの最小のものに対応するLLRテーブル2721a、2121b、または2721cを選択する。
図32は、第5実施形態に係る種々の検査行列の例を示す。図30は、上から第1段目、第2段目、第3段目、第4段目において、それぞれ、m×nの復号用検査行列、i×nの検査行列、j×nの検査行列、(m−i−j)×nの検査行列を示す。i×nの検査行列、j×nの検査行列、(m−i−j)×nの検査行列は、復号用検査行列の部分行列であり、それぞれ、シンドロームチェック回路2611a、2611b、および2611cによって使用される。i×nの検査行列中の行、j×nの検査行列中の行、(m−i−j)×nの検査行列中の行は、復号用検査行列のうちの任意の行を含むことができる。各部分行列は、第4実施形態と同様に、ECC回路26の回路の複雑化の抑制およびECC回路26中のRAMの使用効率の向上の点から、互いに重複しない行からなることができる。図32は、そのような例を示しており、第1段目の検査行列が、復号用検査行列の第1〜第i行の部分、第2段目の検査行列が第i+1〜第(i+j)行の部分、第3段目の検査行列が第(i+j+1)〜第m行の部分であるケースを示す。
ここまで記述された原理の拡張により、4以上のLLRテーブルから最良のLLRテーブルが選択されることができる。
次に、図33および図34を参照して、部分行列の形成の例が記述される。図33および図34はともに、復号用検査行列とその複数の部分行列の組を示す。図33の部分行列は、第5実施形態において使用されることができ、図34の部分行列は第4および第5実施形態において使用されることができる。
図33は、第1段目の復号用検査行列の第1〜第5行の組、第6〜第10行の組、第11〜第15行の組が、相違するシンドロームチェック回路で使用される例を示す。列に沿った太線は、シンドロームチェック回路の処理単位を示す。すなわち、シンドロームチェック回路は、ある最大の処理単位以下の処理単位でシンドロームを計算することができ、図33の例では、最大の処理単位以下の5列ごとにシンドロームが算出されることを示す。図33の例は、行の各組において、ちょうど太線により分けられた5×5の部分行列が互いに巡回行列の関係を有するように、部分行列が形成されている。この例では、単に連続する行が各部分行列を構成するので、シンドロームの算出の制御が容易になされることができる。
図34は、いずれの部分行列においても全ての処理単位が同じ数の非ゼロ要素(=1)を有するように部分行列が形成されている。このような部分行列の形成のために、例えば、第1段目の復号用検査行列は、第1〜第3および第7〜第9行からなる部分行列と、第4〜第6および第10〜第12行からなる部分行列とに分割される。2つの部分行列が、それぞれ別のシンドロームチェック回路によって使用される。図34の例では、上記のように、いずれの部分行列においても全ての処理単位が同じ数の非ゼロ要素(=1)を有するように部分行列が形成されている。この結果、全ての列での列重み(列中の非ゼロ要素の数)が互いに一致する。このため、シンドローム値の総和の比較の際に、列重みの違いが考慮される必要がない。
第5実施形態によれば、第4実施形態と同じく、復号用検査行列から複数の部分行列が形成され、部分行列が使用されてシンドローム値が計算され、こうして計算されたシンドローム値が使用されて複数のLLRテーブルのうち最良と推定されるLLRテーブルが選択される。このため、第4実施形態と同じ利点を得られる。また、第5実施形態によれば、復号用検査行列から3以上の部分行列が形成されて、3以上の部分行列が並行して使用されて並行してシンドローム値が算出されることができる。このため、多くのLLRテーブルの中から最良と推定されるLLRテーブル値が選択されることができる。
(第6実施形態)
第6実施形態は、第4実施形態に基づき、LLRテーブルの選択の別の方法に関する。
第6実施形態は、第4実施形態に基づき、LLRテーブルの選択の別の方法に関する。
第6実施形態のメモリシステム5は、第1実施形態のメモリシステム5と同じ要素および接続を有する。一方、第6実施形態のメモリコントローラ2は、第4実施形態メモリコントローラ2と同じ要素および接続を有し、かつ、以下に記述される動作を行えるように構成されている。具体的には、ROM24中のファームウェアがメモリコントローラ2に以下に記述される動作を行わせるように構成されている。
また、第6実施形態のECC回路26は、図35に示される要素および接続を含む。図35は、第6実施形態のECC回路26のうち、符号化に関する要素を示す。図35に示されるように、ECC回路26は、内符号化回路264および外符号化回路265を含む。
内符号化回路264は、入力されたデータ、例えば、実書き込みデータのうちの全体制御部27によって分割された部分(実書き込みデータ部分)の誤り訂正のためのパリティを生成して、内符号化データを生成する。内符号化データは、内符号化回路264への入力データとパリティを含む。内符号化回路264は、内符号化回路264によって採用されている誤り訂正の方式に基づいて内符号パリティを生成し、例えばBCH符号化に基づいて、内符号パリティを生成する。
外符号化回路265は、内符号化回路264から内符号化データの組を受け取り、内符号化データの組の誤り検出のためのパリティを生成して、外符号化データを生成する。外符号化データは、内符号化データの組とパリティを含む。外符号化回路265は、外符号化回路265によって採用されている誤り訂正の方式に基づいて符号化を行い、例えばLDPC符号化に基づいて外符号パリティを生成する。
図36は、第6実施形態の実書き込みデータ、内符号化データ、および外符号化データの例を示す。図36に示されるように、実書き込みデータは、複数の部分(実書き込みデータ部分1、2、…、s(sは自然数))に分割される。内符号化回路264は、実書き込みデータ部分1、2、…、sのそれぞれのための内符号パリティ1、2、…、sを生成する。実書き込みデータ部分1、2、…、sには、それぞれ、内符号パリティ1、2、…、sが後続して、内符号化データ1、2…、sを構成する。
連接された内符号化データ1、2、…、sに対して、外符号パリティが生成される。外符号化データは、書き込みデータとして、記憶装置1に書き込まれる。
図37は、第6実施形態のECC回路中の要素および接続、ならびにメモリコントローラ中のECC回路に関連する機能ブロックを示す。図37に示されるように、誤り訂正回路261は、内符号復号回路2615を含む。内符号復号回路2615は、データと当該データのためのパリティの組を受け取り、データとパリティを使用して、データ中の誤りを検出する。内符号復号回路2615は、内符号化回路264と同じ符号化方式に基づいて、入力されたデータを復号し、すなわち、内符号パリティを使用して、当該内符号パリティと対を構成するデータの誤りを検出する。具体的には、内符号復号回路2615は、図36に示される1つの実書き込みデータ部分(例えば実書き込みデータ部分1)と、対応する内符号パリティ(例えば内符号パリティ1)と、を受け取ると、当該実書き込みデータ部分中の誤りの数を検出する。検出されることが可能な誤り数は、内符号化回路264と内符号復号回路2615によって採用されている符号化方式に依存する。
内符号復号回路2615は、検出された誤りの数をLLRテーブル選択部276に供給する。または、内符号復号回路2615は、入力された書き込みデータ部分とパリティ中に内符号復号回路2615による誤り検出能力を超える数の誤りが含まれている場合、フェイル判定の旨の信号をLLRテーブル選択部276に供給する。
次に、図38および図39を参照して、第6実施形態のフローが記述される。第6実施形態のフローの全体は、第4実施形態(図28)と同じであり、第6実施形態は、ステップS61のサブフローの点で第4実施形態と相違する。
第6実施形態では、図36に示される外符号化データが予め選択ページに書き込まれているものとする。したがって、ステップS1およびS11(図7)で読み出されたハードビットデータおよびソフトビットデータは、図38に示されるように、外符号化データに基づく。すなわち、ハードビットデータは、実書き込みデータ部分のビット、内符号パリティビットのビット、外符号パリティのビットを含み、ソフトビットデータも、実書き込みデータ部分に基づくビット、内符号パリティビットに基づくビット、外符号パリティに基づくビットを含む。よって、LLRラベルも、実書き込みデータ部分のビットに基づくもの、内符号パリティのビットに基づくもの、外符号パリティのビットに基づくものを含む。
図39は、第6実施形態のステップS61のサブフローを示す。図39に示されるように、ステップS11は、サブステップSS621に継続する。サブステップSS621において、全体制御部27は、任意の1つの実書き込みデータ部分(例えば、実書き込みデータ部分1)と、対応する内符号パリティ(例えば内符号パリティ1)との組(検査用内符号化データ)に対応するLLRラベルを、ある第1LLRテーブル(例えば、LLRテーブル2721a)を使用して、LLR値セットに変換する。全体制御部27は、得られたLLR値セットを内符号復号回路2615に供給する。
サブステップSS622において、内符号復号回路2615は、受け取られたLLR値セットの誤りを検出し、誤り数C1をLLRテーブル選択部276に供給する。
サブステップSS623において、LLRテーブル選択部276は、誤り数C1を保持する。
サブステップSS625において、全体制御部27は、検査用内符号化データに対応するLLRラベルを、別の第2LLRテーブル(例えば、LLRテーブル2721b)を使用して、LLR値セットに変換する。全体制御部27は、得られたLLR値セットを内符号復号回路2615に供給する。
サブステップSS626において、内符号復号回路2615は、受け取られたLLR値セットの誤りを検出し、誤り数C2をLLRテーブル選択部276に供給する。
サブステップSS627において、LLRテーブル選択部276は、誤り数C2を保持する。
サブステップSS628において、LLRテーブル選択部276は、誤り数C1とC2を比較する。誤り数C1が誤り数C2より小さければ(サブステップSS628のYes分岐)、LLRテーブル選択部276は、第1LLRテーブルを選択する(サブステップSS632)。誤り数C1が誤り数C2以上であれば(サブステップSS628のNo分岐)、LLRテーブル選択部276は、第2LLRテーブルを選択する(サブステップSS633)。サブステップSS632およびSS633は、ステップS12に継続する。
ステップS12での復号には、サブステップSS632で選択されたLLRテーブルまたはサブステップSS633で選択されたLLRテーブルが使用される。
3つ以上のLLRテーブルが比較されて、比較の結果に基づいて1つのLLRテーブルが選択されることができる。そのために、LLR値セットの取得、誤り数の割り出し、誤り数の保持(例えば、ステップSS621、SS622、およびSS623)が各選択候補のLLRテーブルについて繰り返される。次いで、得られた複数の誤り数のうち、最小のものが選択され、最小の誤り数に繋がったLLRテーブルが選択される。
第6実施形態のメモリコントローラ2は、内符号パリティを使用した誤り検出の結果に基づいて、使用されたLLRテーブルを評価する。このため、あるLLRテーブルを使用して得られたLLRに対する復号の結果を得る前に、使用されたLLRテーブルが評価、すなわち、他のLLRテーブルと比較されることができる。このため、LLRテーブルの再選択が、復号の結果に基づいたLLRテーブルの再選択よりも短い時間で完了されることができる。よって、復号の成功までに要する時間が、復号の結果に基づいたLLRテーブルの再選択を含んだ復号の成功までに要する時間よりも短い。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
1…記憶装置、2…メモリコントローラ、3…ホスト装置、5…メモリシステム、11…セルアレイ、12…入出力回路、13…シーケンサ、15…ドライバ、16…センスアンプ、19…ロウデコーダ、21…ホストインターフェイス、22…CPU、23…RAM、24…ROM、25…メモリインターフェイス、26…ECC回路、261…誤り訂正回路、262…誤り検出回路、2611…シンドロームチェック回路、2612…復号回路、2613…シンドロームチェック回路、2615…内符号復号回路、264…内符号化回路、265…外符号化回路、27…全体制御部、271…データ保持部、272…LLR変換部、273…シフトテーブル保持部、275…加算部、276…LLRテーブル選択部。
Claims (6)
- メモリセルを含む記憶装置と、
前記メモリセルからの第1データ読み出しに基づく第1データを受け取り、
前記メモリセルからの前記第1データ読み出しと異なる第2データ読み出しに基づく第2データを受け取り、
前記第1データおよび前記第2データに基づく第1値を第1関係に従って第2値に変換し、
前記第1値を前記第1関係と異なる第2関係に従って第3値に変換する、
ように構成されているコントローラと、
を備えるメモリシステム。 - 前記コントローラは、前記第2値の誤りの訂正に失敗すると、前記第1値を前記第3値に変換し、前記第3値の誤りの訂正を試みる、ようにさらに構成されている、
請求項1に記載のメモリシステム。 - 前記コントローラは、前記第1データの復号に失敗した場合に前記第2データを読み出すようにさらに構成されている、
請求項1に記載のメモリシステム。 - 前記コントローラは、前記第2値、前記第3値、および1つの第1行列を使用して、前記第2値に基づく第1シンドローム値および前記第3値に基づく第2シンドローム値を算出する、ようにさらに構成されている、
請求項1に記載のメモリシステム。 - 前記コントローラは、
前記第1および第2シンドローム値に基づいて、前記第2値と前記第3値のいずれかを選択し、
前記選択された値および前記第1行列を使用して、前記第1値の誤りの訂正を試みる、
ようにさらに構成されている、
請求項4に記載のメモリシステム。 - 第1メモリセルおよび第2メモリセルを含む記憶装置と、
前記第1および第2メモリセルからの第1データ読み出しにそれぞれ基づく第1データおよび第2データを受け取り、
前記第1および第2メモリセルからの前記第1データ読み出しと異なる第2データ読み出しにそれぞれ基づく第3データおよび第4データを受け取り、
前記第1乃至第4データ、および第1関係を使用して、第1値および第2値を取得し、
前記第1値および前記第2値の誤りを検出して、第1検出結果を取得し、
前記第1乃至第4データ、および前記第1関係と異なる第2関係を使用して、第3値および第4値を取得し、
前記第3値および前記第4値の誤りを検出して、第2検出結果を取得し、
前記第1検出結果および前記第2検出結果の比較の結果に基づいて、前記第1値および前記2値の誤りを訂正する、
ように構成されたコントローラと、
を備えるメモリシステム。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017179359A JP2019056955A (ja) | 2017-09-19 | 2017-09-19 | メモリシステム |
US15/916,516 US10430275B2 (en) | 2017-09-19 | 2018-03-09 | Memory system |
US16/546,488 US10956264B2 (en) | 2017-09-19 | 2019-08-21 | Memory system |
US17/174,399 US11537465B2 (en) | 2017-09-19 | 2021-02-12 | Memory system |
US17/984,309 US11892907B2 (en) | 2017-09-19 | 2022-11-10 | Memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017179359A JP2019056955A (ja) | 2017-09-19 | 2017-09-19 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019056955A true JP2019056955A (ja) | 2019-04-11 |
Family
ID=65721425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017179359A Pending JP2019056955A (ja) | 2017-09-19 | 2017-09-19 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (4) | US10430275B2 (ja) |
JP (1) | JP2019056955A (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102371893B1 (ko) * | 2017-05-18 | 2022-03-08 | 삼성전자주식회사 | 반도체 메모리 칩, 반도체 메모리 패키지, 및 이를 이용한 전자 시스템 |
US10700706B2 (en) * | 2017-09-22 | 2020-06-30 | SK Hynix Inc. | Memory system with decoders and method of operating such memory system and decoders |
KR102535110B1 (ko) * | 2018-10-01 | 2023-05-23 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
DE112020004469T5 (de) * | 2019-09-20 | 2022-08-04 | Semiconductor Energy Laboratory Co., Ltd. | Halbleitervorrichtung |
US10902925B1 (en) * | 2019-11-19 | 2021-01-26 | SanDiskTechnologies LLC | Peak and average current reduction for open block condition |
US11798647B2 (en) * | 2022-02-28 | 2023-10-24 | Micron Technology, Inc. | Apparatus and methods for determining memory cell data states |
JP2023137685A (ja) * | 2022-03-18 | 2023-09-29 | キオクシア株式会社 | メモリシステム |
TWI805509B (zh) * | 2022-10-13 | 2023-06-11 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010165426A (ja) | 2009-01-16 | 2010-07-29 | Toshiba Corp | メモリコントローラおよび半導体メモリ装置 |
KR101792868B1 (ko) * | 2010-11-25 | 2017-11-02 | 삼성전자주식회사 | 플래시 메모리 장치 및 그것의 읽기 방법 |
JP2012244305A (ja) | 2011-05-17 | 2012-12-10 | Toshiba Corp | メモリコントローラ、半導体メモリ装置、および復号方法 |
JP2013080450A (ja) | 2011-09-22 | 2013-05-02 | Toshiba Corp | メモリ装置 |
US9021332B2 (en) * | 2012-12-11 | 2015-04-28 | Seagate Technology Llc | Flash memory read error recovery with soft-decision decode |
US9235469B2 (en) * | 2013-05-22 | 2016-01-12 | Seagate Technology Llc | Systems and methods for inter-cell interference mitigation in a flash memory |
US9209835B2 (en) | 2013-11-27 | 2015-12-08 | Seagate Technology Llc | Read retry for non-volatile memories |
US9563502B1 (en) * | 2013-12-20 | 2017-02-07 | Seagate Technology Llc | Read retry operations with read reference voltages ranked for different page populations of a memory |
US9252817B2 (en) | 2014-01-10 | 2016-02-02 | SanDisk Technologies, Inc. | Dynamic log-likelihood ratio mapping for error correcting code decoding |
US10320429B2 (en) | 2015-03-04 | 2019-06-11 | Toshiba Memory Corporation | Memory controller, memory system and memory control method |
US10043582B2 (en) * | 2016-02-11 | 2018-08-07 | Seagate Technology Llc | Establishing parameters of subsequent read retry operations based on syndrome weights of prior failed decodings |
US10067827B2 (en) * | 2016-06-29 | 2018-09-04 | Micron Technology, Inc. | Error correction code event detection |
US10180794B2 (en) * | 2017-02-07 | 2019-01-15 | Western Digital Technologies, Inc. | Soft decoding scheduling |
US10396821B2 (en) * | 2017-06-30 | 2019-08-27 | Seagate Technologies Llc | Generating Hamming weights for data |
TWI634556B (zh) * | 2017-10-12 | 2018-09-01 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
KR20220103227A (ko) * | 2021-01-14 | 2022-07-22 | 삼성전자주식회사 | 비휘발성 메모리 장치, 그것을 제어하는 제어기, 그것을 갖는 저장 장치, 및 그것의 리드 방법 |
-
2017
- 2017-09-19 JP JP2017179359A patent/JP2019056955A/ja active Pending
-
2018
- 2018-03-09 US US15/916,516 patent/US10430275B2/en active Active
-
2019
- 2019-08-21 US US16/546,488 patent/US10956264B2/en active Active
-
2021
- 2021-02-12 US US17/174,399 patent/US11537465B2/en active Active
-
2022
- 2022-11-10 US US17/984,309 patent/US11892907B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10956264B2 (en) | 2021-03-23 |
US10430275B2 (en) | 2019-10-01 |
US20190377636A1 (en) | 2019-12-12 |
US20190087264A1 (en) | 2019-03-21 |
US11892907B2 (en) | 2024-02-06 |
US11537465B2 (en) | 2022-12-27 |
US20230065159A1 (en) | 2023-03-02 |
US20210165713A1 (en) | 2021-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11892907B2 (en) | Memory system | |
US20110231738A1 (en) | Error correction decoding apparatus and error correction decoding method | |
KR101750662B1 (ko) | 데이터 에러 교정용 회로, 장치, 및 방법 | |
KR100842680B1 (ko) | 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템 | |
US9092350B1 (en) | Detection and handling of unbalanced errors in interleaved codewords | |
US11211950B2 (en) | Decoding device and decoding method | |
US9312885B2 (en) | Nonvolatile semiconductor memory system error correction capability of which is improved | |
US9836351B2 (en) | Method for decoding bits in a solid state drive, and related solid state drive | |
US9761326B2 (en) | Memory system and memory control method | |
US10574272B2 (en) | Memory system | |
US20090150751A1 (en) | Memory system that uses an interleaving scheme and a method thereof | |
US20180074894A1 (en) | Memory system | |
US20150317203A1 (en) | Code-Based Read Control for Data Storage Devices | |
US10075191B2 (en) | Method for decoding bits-by varying LLR values in a solid-state drive, and solid-state drive implementing the method | |
CN111538621B (zh) | 针对位线故障的软芯片猎杀恢复 | |
JP2017022651A (ja) | 誤り訂正装置、半導体記憶装置、および誤り訂正方法 | |
TW202211037A (zh) | 記憶體系統、半導體記憶裝置及資料讀出方法 | |
US10803930B2 (en) | Memory system including a memory controller and error correction circuit for reading multi-bit data and for detecting and correcting read data errors | |
US10700707B2 (en) | Circuit for transforming parity-check matrix of QC-LDPC code, error correction circuit having the same, and method of operating the same | |
US9349490B2 (en) | Error correction in differential memory devices with reading in single-ended mode in addition to reading in differential mode | |
US10163500B1 (en) | Sense matching for hard and soft memory reads | |
US11250909B2 (en) | Nonvolatile memory and memory system | |
US11581046B2 (en) | Storage device and reading method | |
KR20090048142A (ko) | 불휘발성 메모리 장치의 ecc 처리부 | |
TW202338842A (zh) | 非揮發性記憶體 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20180831 |