JP2021047527A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2021047527A JP2021047527A JP2019168588A JP2019168588A JP2021047527A JP 2021047527 A JP2021047527 A JP 2021047527A JP 2019168588 A JP2019168588 A JP 2019168588A JP 2019168588 A JP2019168588 A JP 2019168588A JP 2021047527 A JP2021047527 A JP 2021047527A
- Authority
- JP
- Japan
- Prior art keywords
- parity
- data
- memory
- volatile memory
- storage area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
【課題】一つの実施形態は、不揮発性メモリに格納されるデータの信頼性を効率的に向上できるメモリシステムを提供することを目的とする。【解決手段】一つの実施形態によれば、不揮発性メモリとバッファとコントローラとを有するメモリシステムが提供される。バッファは、不揮発性メモリへ書き込まれるデータを一時的に格納する。コントローラは、パリティを用いて、不揮発性メモリから読み出されるデータに対する誤り訂正処理を行う。コントローラは、不揮発性メモリへ書き込まれる複数のデータと、複数のデータそれぞれの誤り訂正処理に用いられる複数の中間パリティとを、バッファに書き込む。コントローラは、バッファから読み出した複数のデータを不揮発性メモリに書き込む。コントローラは、複数の中間パリティを不揮発性メモリに書き込まない。コントローラは、複数の中間パリティから合成された重ね合わせパリティを不揮発性メモリに書き込む。【選択図】図1
Description
本実施形態は、メモリシステムに関する。
不揮発性メモリを有するメモリシステムでは、パリティを用いて、不揮発性メモリに格納されるデータに対する誤り訂正処理を行う。このとき、不揮発性メモリに格納されるデータの信頼性を効率的に向上することが望まれる。
一つの実施形態は、不揮発性メモリに格納されるデータの信頼性を効率的に向上できるメモリシステムを提供することを目的とする。
一つの実施形態によれば、不揮発性メモリとバッファとコントローラとを有するメモリシステムが提供される。バッファは、不揮発性メモリへ書き込まれるデータを一時的に格納する。コントローラは、パリティを用いて、不揮発性メモリから読み出されるデータに対する誤り訂正処理を行う。コントローラは、不揮発性メモリへ書き込まれる複数のデータと、複数のデータそれぞれの誤り訂正処理に用いられる複数の中間パリティとを、バッファに書き込む。コントローラは、バッファから読み出した複数のデータを不揮発性メモリに書き込む。コントローラは、複数の中間パリティを不揮発性メモリに書き込まない。コントローラは、複数の中間パリティから合成された重ね合わせパリティを不揮発性メモリに書き込む。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
(実施形態)
実施形態にかかるメモリシステムは、不揮発性メモリを有する。不揮発性メモリは、複数のメモリチップで構成され得る。各メモリチップは、並列アクセス可能な単位として複数のプレーンを含む。各プレーンは、1以上の物理ブロックを含む。各物理ブロックは、複数のワードラインと複数のビットラインとの交差位置にメモリセルを含む。複数のメモリセルは、複数のワードラインに対応して、複数のページとしてグループ化されている。不揮発性メモリでは、書き込み処理及び読み出し処理がページの単位で行われ、消去処理が物理ブロックの単位で行われる。
実施形態にかかるメモリシステムは、不揮発性メモリを有する。不揮発性メモリは、複数のメモリチップで構成され得る。各メモリチップは、並列アクセス可能な単位として複数のプレーンを含む。各プレーンは、1以上の物理ブロックを含む。各物理ブロックは、複数のワードラインと複数のビットラインとの交差位置にメモリセルを含む。複数のメモリセルは、複数のワードラインに対応して、複数のページとしてグループ化されている。不揮発性メモリでは、書き込み処理及び読み出し処理がページの単位で行われ、消去処理が物理ブロックの単位で行われる。
メモリシステムは、不揮発性メモリに格納されるデータに対して、パリティを用いて誤り訂正処理を行う。メモリシステムでは、様々な規模の消失エラーが発生し得る。例えば、チップ消失エラーでは、メモリチップ内の全データが消失する。物理ブロック消失エラーでは、物理ブロック内の全データが消失する。ワードライン消失エラーでは、ワードライン内の全データが消失する。様々な規模の消失エラーに対応するために、メモリシステムでは、RAID(Redundant Arrays of Inexpensive Disks)の考え方を適用して、複数のチップに跨ったパリティを生成し、誤り訂正の信頼性を向上させることがある。このRAIDによる消失エラー対策では、大規模な消失エラーに対応しようとすればするほど、パリティの情報量が顕著に増大する可能性がある。
メモリシステムにおけるユーザデータ領域に対する余裕領域は、OP(Over Provision)領域と呼ばれる。パリティの情報量が増大することは、パリティによりOP領域が消費されて、その他の用途に利用可能なOP領域の容量が少なくなることを意味する。すなわち、パリティの情報量が増大することは、パリティによる、数式1に示すOP消費率が増大することを意味し、数式2に示すOP率が低減することを意味する。
OP消費率=(パリティの情報量)/(ストレージ全体の記憶容量)・・・数式1
OP率=(OP領域の容量)/(ユーザデータ領域の容量)・・・数式2
OP消費率=(パリティの情報量)/(ストレージ全体の記憶容量)・・・数式1
OP率=(OP領域の容量)/(ユーザデータ領域の容量)・・・数式2
OP率が低減すると、次の数式3に示すWAF(Write Amplification Factor)が増大する。
WAF=(不揮発性メモリへ書き込まれるデータの総量)/(ホストから受信した書き込みデータの総量)・・・数式3
WAF=(不揮発性メモリへ書き込まれるデータの総量)/(ホストから受信した書き込みデータの総量)・・・数式3
WAFが増大すると、書き込み回数の増加等により不揮発性メモリが劣化し得る。また、OP消費率が増大すると、所定のOP率を確保するために必要なブロック数(ミニマムブロック数)が増加する可能性がある。ミニマムブロック数が増加すると、メモリシステム全体として、データの単位記憶容量当たりのコストが増加し得る。このため、消失エラーに対する対応力を効率的に向上することが望まれる。
一方、書き込み処理では、書き込み途中のデータの誤り訂正処理に用いられるパリティ(中間パリティ)は、書き込み完了後のデータの誤り訂正処理に用いられるパリティ(データ読み出し時のパリティ)より誤り訂正能力が高いことが多い。例えば、書き込み時にワードライン消失によるデータ消失が、不揮発性メモリ内の所定の記憶領域で起きた場合、当該所定の記憶領域に対応する中間パリティを用いて、消失部分のデータを訂正する。データ読み出し時のパリティは、データの書き込み時にデータとともに不揮発性メモリに格納される(不揮発化される)。中間パリティは、データの書き込み時に揮発性メモリに一時的に保持されるが不揮発化されず、データの書き込みが成功した後に破棄される。この中間パリティをうまく活用できれば、消失エラーの対応力を効率的に向上できることが期待される。
そこで、本実施形態では、メモリシステムにおいて、複数の中間パリティから重ね合わせパリティを合成して不揮発化することで、OP消費率を抑制しながら消失エラーへの対応力の向上を図る。
具体的には、メモリシステムは、複数の記憶領域へ書き込むデータに対して誤り訂正の符号化演算を行って複数の中間パリティを生成する。生成された複数の中間パリティに対して所定の演算(例えば、排他的論理和)を行って重ね合わせパリティを生成する。重ね合わせパリティのビット長は、複数の中間パリティのビット長の合計より小さい。メモリシステムは、複数の記憶領域へのデータの書き込み時に、不揮発性メモリに(例えば、複数の記憶領域における末尾の部分に)重ね合わせパリティを格納する。重ね合わせパリティに対応した複数の記憶領域のうち、一部の記憶領域のデータは適正であるが、他の記憶領域で消失エラーが発生している場合、メモリシステムは、当該他の記憶領域で消失エラーが発生していることを検出する。メモリシステムは、複数の記憶領域からデータを読み出す場合、その複数の記憶領域のうちの一部の記憶領域から読み出されるデータに対して誤り訂正処理の符号化演算を行って、書き込み時に生成した複数の中間パリティのうちの一部の中間パリティを再び生成する。メモリシステムは、重ね合わせパリティを読み出し、当該一部の中間パリティと重ね合わせパリティとに応じて、複数の中間パリティのうちの他の中間パリティを復元する。メモリシステムは、復元された当該他の中間パリティを用いて、複数の記憶領域における他の記憶領域のデータを訂正する。これにより、複数の記憶領域のうち他の記憶領域での消失エラーに対応することができる。すなわち、複数の中間パリティのビット長の合計より小さいビット長を有する重ね合わせパリティを不揮発性メモリに格納することで、大規模な消失エラーに対応できる。これにより、OP消費率を抑制しながら消失エラーの対応力を容易に向上できる。
メモリシステム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)等の種々の半導体メモリを用いることも可能である。また、不揮発性メモリ20が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対しても本実施形態を適用することが可能である。
メモリシステム1は、メモリコントローラ10と不揮発性メモリ20とが1つのパッケージとして構成されるメモリカード等であってもよいし、SSD(Solid State Drive)等であってもよい。
メモリコントローラ10は、例えばSoC(System−On−a−Chip)として構成される半導体集積回路である。以下で説明するメモリコントローラ10の各構成要素の動作の一部又は全部は、CPU(Central Processing Unit)がファームウエアを実行することによって実現されてもよいし、ハードウエアで実現されてもよい。
メモリコントローラ10は、例えばホスト30からの書き込み要求に従って不揮発性メモリ20への書き込みを制御する。また、メモリコントローラ10は、例えばホスト30からの読み出し要求に従って不揮発性メモリ20からの読み出しを制御する。メモリコントローラ10は、ホストI/F(ホストインタフェース)15、メモリI/F(メモリインタフェース)13、制御部11、符号化/復号部14およびRAM12を備える。ホストI/F15、メモリI/F13、制御部11、符号化/復号部14およびRAM12は、内部バス16で相互に接続されている。
ホストI/F15は、ホスト30との間のインタフェース規格に従った処理を実施し、ホスト30から受信した要求、書き込み対象のユーザデータなどを内部バス16に出力する。また、ホストI/F15は、不揮発性メモリ20から読み出されて復元されたユーザデータ、制御部11からの応答などをホスト30へ送信する。
メモリI/F13は、制御部11の指示に基づいて、不揮発性メモリ20への書き込み処理を行う。また、メモリI/F13は、制御部11の指示に基づいて、不揮発性メモリ20からの読み出し処理を行う。
制御部11は、メモリシステム1の各構成要素を統括的に制御する。制御部11は、例えばプロセッサである。制御部11は、ホスト30からホストI/F15経由で要求を受けた場合に、その要求に従った制御を行う。例えば、制御部11は、ホスト30からの要求に従って、不揮発性メモリ20への書き込みをメモリI/F13へ指示する。また、制御部11は、ホスト30からの命令に従って、不揮発性メモリ20からの読み出しをメモリI/F13へ指示する。
また、制御部11は、ホスト30から書き込み要求を受信した場合、RAM12内のデータバッファ12bに蓄積されるユーザデータに対して、不揮発性メモリ20内の格納領域を決定する。すなわち、制御部11は、ユーザデータの書き込み先を管理する。ホスト30から受信したユーザデータの論理アドレスと該ユーザデータが格納された不揮発性メモリ20内の格納領域を示す物理アドレスとの対応は、アドレス変換テーブルとして不揮発性メモリ20内の図示しない管理情報格納領域に格納される。
また、制御部11は、ホスト30から読み出し要求を受信した場合、読み出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読み出しをメモリI/F13へ指示する。
不揮発性メモリ20は、図2に示すように、複数個のチャネル並列動作要素2−0〜2−3によって構成されており、これら複数のチャネル並列動作要素2−0〜2−3とメモリI/F13とを複数のチャネルCh0〜Ch3によって接続している。各チャネルCh0〜Ch3に、コントロールI/Oとチップイネーブル信号CE[0:1]とを有している。各チャネル並列動作要素2−0〜2−3は、複数のバンク(図2では2バンク、Bank#0〜Bank#1)を構成しており、各々のバンクは、複数のメモリチップによって構成されている。図2では、バンク#0が4個のメモリチップChip0〜Chip3によって構成され、バンク#1が4個のメモリチップChip4〜Chip7によって構成される構成が例示されている。
メモリコントローラ10は、コントロールI/O信号(CtrlI/O)を共有する複数のバンク(バンク#0〜バンク#1)を2本のチップイネーブル信号CE[0:1]でバンク毎に個別に制御する。CE[0]がバンク#0用のチップイネーブル信号であり、CE[1]がバンク#1用のチップイネーブル信号である。ここでは、CE[0]がバンク#0(Chip0〜Chip3)の選択状態を示し、CE[1]がバンク#1(Chip4〜Chip7)の選択状態を示す。不揮発性メモリ20の各バンクからは、自身がビジー状態であるかレディ状態であるかを示すRy/By信号(Ry/By[0:1])がメモリコントローラ10へ出力されている。Ry/By[0]がバンク#0用のレディー・ビジー信号であり、Ry/By[1]がバンク#1用のレディー・ビジー信号である。ここでは、Ry/By=Lowがビジー状態を示し、Ry/By=Highがレディ状態を示すこととする。夫々のバンクが複数のメモリチップを有する場合、各メモリチップのRy/By信号線、CE信号線は共通接続されている。
各メモリチップは、ページと呼ばれる単位で書き込み処理及び読み出し処理が行われ、複数のページを含む物理ブロックと呼ばれる単位で消去処理が行われる。メモリコントローラ10は、物理ブロックを複数含む論理ブロックの単位で一括して消去処理が行い得る。各メモリチップは、並列アクセス可能な単位として複数のプレーン(図2では、Plane0、Plane1)を含む。各プレーンは、1以上の物理ブロックを含む。各物理ブロックは、図3に示すように、複数のワードラインと複数のビットラインとの交差位置にメモリセルを含む。図3は、物理ブロックの構成を示す図である。
各物理ブロックBLKは、複数のストリングユニットSU0〜SU3を有する。複数のストリングユニットSU0〜SU3は、複数の選択ゲートラインSGD0〜SGD3に対応しているとともに選択ゲートラインSGSを共有している。各ストリングユニットSU0〜SU3は、物理ブロックBLKにおける駆動単位として機能する。各ストリングユニットSU0〜SU3は、複数の選択ゲートラインSGD0〜SGD3のうちその対応する選択ゲートラインと選択ゲートラインSGSとで駆動される。また、各ストリングユニットSU0〜SU3は、複数のメモリストリングMSTを含む。
各メモリストリングMSTは、例えば4個のメモリセルトランジスタMT(MT0〜MT3)および選択トランジスタSDT,SSTを含んでいる。メモリセルトランジスタMTは、コントロールゲートと電荷蓄積膜とを有し、データを不揮発に保持する。そして4個のメモリセルトランジスタMT(MT0〜MT3)は、選択トランジスタSDTのソースと選択トランジスタSSTのドレインとの間に直列接続されている。なお、メモリストリングMST内のメモリセルトランジスタMTの個数は4個に限定されない。
ビットラインBL0〜BL(p−1)(各ビットラインを区別しない場合には、BLで示すことにする)は、メモリストリングMSTに接続されている。選択トランジスタSDTがオンされた際に、メモリストリングMST内の各メモリセルトランジスタMTのチャネル領域がビットラインBLに導通される。
ワードラインWL0〜WL3(各ワードラインを区別しない場合には、WLで示すことにする)は、物理ブロックBLK内の各ストリングユニットSU内の各メモリストリングMST間で、メモリセルトランジスタMTのコントロールゲートを共通に接続している。つまり、物理ブロックBLK内の各ストリングユニットSU内において同一行にあるメモリセルトランジスタMTのコントロールゲートは、同一のワードラインWLに接続される。すなわち、物理ブロックBLKのストリングユニットSUは複数のワードラインWLに対応した複数のセルユニットCUを含み、各セルユニットCUは同一のワードラインWLに接続されるp個のメモリセルトランジスタMTを含む。各メモリセルトランジスタMTに1ビットの値を保持可能に構成される場合(シングルレベルセル(SLC)モードで動作する場合)には、同一のワードラインWLに接続されるp個のメモリセルトランジスタMT(すなわち、セルユニットCU)は1つの物理ページとして取り扱われ、この物理ページごとにデータの書き込み処理及びデータの読み出し処理が行われる。なお、図3では、4本のワードラインWL(WL0〜WL3)を例示しているが、ワードラインWLの本数は4本に限定されない。
各メモリセルトランジスタMTに複数ビットの値を保持可能に構成される場合がある。例えば、各メモリセルトランジスタMTがn(n≧2)ビットの値を記憶可能な場合、セルユニットCU当たりの記憶容量はn個の物理ページ分のサイズに等しくなる。各メモリセルトランジスタMTが2ビットの値の記憶を行うマルチレベルセル(MLC)モードでは、各セルユニットCUに2個の物理ページ分のデータが保持される。各メモリセルトランジスタMTが3ビットの値の記憶を行うトリプルレベルセル(TLC)モードでは、各セルユニットCUに3個の物理ページ分のデータが保持される。
図1に戻って、RAM12は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。RAM12には、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリを用いることができる。
RAM12は、パリティ記憶領域12a及びデータバッファ12bを含む。パリティ記憶領域12aは、誤り訂正処理に用いられるパリティを一時的に格納する。パリティ記憶領域12aは、書き込み途中のデータの誤り訂正処理に用いられるパリティ(すなわち、中間パリティ)や、複数の中間パリティから合成される重ね合わせパリティを格納する。データバッファ12bは、メモリコントローラ10がホスト30から受信したユーザデータを不揮発性メモリ20へ記憶するまでに一時格納する。また、データバッファ12bは、不揮発性メモリ20から読み出して復元されたユーザデータをホスト30へ送信するまでに一時格納する。
ホスト30から送信されるユーザデータは、内部バス16に転送されてデータバッファ12bに一旦格納される。符号化/復号部14は、不揮発性メモリ20に格納されるユーザデータを符号化し、ユーザデータとパリティとを含む符号語を生成する。また、符号化/復号部14は、不揮発性メモリ20から読み出された符号語を復号してユーザデータを復元する。なお、符号化/復号部14により符号化されるデータには、ユーザデータ以外にも、メモリコントローラ10内部で用いられる制御データ等が含まれてもよい。
不揮発性メモリ20へデータが書き込まれる場合、符号化/復号部14内の符号化器17は、制御部11からの指示に基づいて、データに対して符号化演算を行う。
例えば、不揮発性メモリ20の1番目〜(N−1)番目(Nは2以上の整数)の記憶領域に格納されるべきデータがデータバッファ12b上に格納されている場合、符号化器17は、制御部11からの指示に基づいて、1番目〜(N−1)番目の記憶領域に格納されるべきデータに対して、それぞれ、符号化演算を行い、中間パリティを生成してパリティ記憶領域12aに格納する。不揮発性メモリ20が複数のメモリチップで構成される場合、N個の記憶領域のそれぞれは、メモリコントローラ10からアクセスが可能な記憶領域であって複数のメモリチップに跨った記憶領域であってもよい。メモリI/F13は、データバッファ12b上のデータを不揮発性メモリ20の1番目〜(N−1)番目の記憶領域に格納させる。不揮発性メモリ20のN番目の記憶領域に格納されるべきデータがデータバッファ12b上に格納されている場合、符号化器17は、制御部11からの指示に基づいて、N番目の記憶領域に格納されるべきデータに対して符号化演算を行い、中間パリティを生成する。符号化器17は、1番目〜N番目の中間パリティを合成して重ね合わせパリティを生成する。すなわち、符号化器17は、1番目〜N番目の中間パリティに対して所定の演算を行って重ね合わせパリティを生成する。符号化器17は、データバッファ12b上のデータと重ね合わせパリティとをメモリI/F13へ供給する。メモリI/F13は、不揮発性メモリ20のN番目の記憶領域にデータと重ね合わせパリティとを格納させる。
例えば、N=4である場合、図4に示すように、重ね合わせパリティの生成が行われ得る。図4は、重ね合わせパリティの生成を示す図である。
不揮発性メモリ20の4個の記憶領域M0〜M3における1〜3番目の記憶領域M0〜M2に格納されるべきデータがデータバッファ12b上に格納されている場合、符号化器17は、制御部11からの指示に基づいて、1番目〜3番目の記憶領域M0〜M2に格納されるべきデータに対して、それぞれ、符号化演算を行い、中間パリティP0〜P2を生成する。
なお、各中間パリティP0〜P3を生成するための符号化演算は、例えば、リードソロモン(Reed−Solomon)方式の符号化演算であってもよい。
メモリI/F13は、データバッファ12b上のデータを不揮発性メモリ20における1番目〜3番目の記憶領域M0〜M2に格納させる。不揮発性メモリ20の4番目の記憶領域M3に格納されるべきデータがデータバッファ12b上に格納されている場合、符号化器17は、制御部11からの指示に基づいて、4番目の記憶領域M3に格納されるべきデータに対して符号化演算を行い、中間パリティP3を生成する。符号化器17は、1番目〜4番目の中間パリティP0〜P3を合成して重ね合わせパリティを生成する。すなわち、符号化器17は、1番目〜4番目の中間パリティP0〜P3に対して所定の演算を行って重ね合わせパリティPZを生成する。
重ね合わせパリティPZを生成するための所定の演算は、例えば、排他的論理和であってもよい。所定の演算が排他的論理和である場合、重ね合わせパリティPZのビット長は、各中間パリティP0〜P3のビット長と同一である。重ね合わせパリティPZを生成するための所定の演算は、例えば、BCH(Bose−Chaudhuri−Hocquenghem)方式の符号化演算であってもよい。所定の演算がBCH方式の符号化演算である場合、重ね合わせパリティPZのビット長は、各中間パリティP0〜P3のビット長に比べると大きくなる。どの程度大きくなるかは、BCH方式の符号化演算で生成される符号(BCH符号)の符号化率に依存する。重ね合わせパリティPZを生成するための所定の演算は、リードソロモン方式の符号化演算であってもよい。所定の演算がリードソロモン方式の符号化演算である場合、重ね合わせパリティPZのビット長は、各中間パリティP0〜P3のビット長に比べると大きくなる。どの程度大きくなるかは、リードソロモン方式の符号化演算で生成される符号(RS符号)の消失訂正能力に依存する。
符号化器17は、データバッファ12b上のデータと重ね合わせパリティPZとをメモリI/F13へ供給する。メモリI/F13は、不揮発性メモリ20の4番目の記憶領域M3にデータと重ね合わせパリティPZとを格納させる。なお、例えば、重ね合わせパリティPZを不揮発性メモリ20に書き込む前にワードライン消失によるデータ消失が記憶領域M1に対して起きた場合、復号器18は、記憶領域M1に対応する中間パリティP1を用いて、記憶領域M1内の消失部分のデータを訂正する。
不揮発性メモリ20からデータが読み出される場合、符号化/復号部14内の復号器18は、制御部11からの指示に基づいて、データ及び重ね合わせパリティを読み出し、データの誤りを検出し、重ね合わせパリティを用いてデータの誤りを訂正する。
例えば、重ね合わせパリティに対応したN個の記憶領域のうち、K番目(Kは1≦K≦Nを満たす整数)の記憶領域で消失エラーが発生しているが他の記憶領域で消失エラーが発生していない場合、復号器18は、制御部11からの指示に基づいて、K番目の記憶領域で消失エラーが発生していることを検出する。復号器18は、N個の記憶領域におけるK番目以外の記憶領域から読み出されるデータに対して誤り訂正処理の符号化演算を行う。復号器18は、書き込み時に生成されたが不揮発性メモリ20に格納されなかったN個の中間パリティのうちのK番目以外の中間パリティを再び生成する。復号器18は、不揮発性メモリ20から重ね合わせパリティを読み出し、K番目以外の中間パリティと重ね合わせパリティとに応じて、N個の中間パリティのうちのK番目の中間パリティを復元する。復号器18は、復元されたK番目の中間パリティを用いて、N個の記憶領域におけるK番目の記憶領域のデータを訂正する。これにより、N個の記憶領域のうちK番目の記憶領域での消失エラーに対応することができる。すなわち、N個の中間パリティのビット長の合計より短いビット長を有する重ね合わせパリティを不揮発性メモリ20に格納することで、大規模な消失エラーに対応できるので、OP消費率を抑制しながら消失エラーの対応力を向上できる。
例えば、N=4である場合、図5に示すように、重ね合わせパリティを用いたデータの復元が行われ得る。図5は、重ね合わせパリティを用いたデータの復元を示す図である。
重ね合わせパリティPZに対応する4個の記憶領域M0〜M3に格納されているデータのうち、記憶領域M0,M2,M3のデータは適正であるが、記憶領域M1における斜線ハッチング部分で消失エラーが発生している場合を考える。復号器18は、制御部11からの指示に基づいて、記憶領域M1における斜線ハッチング部分で消失エラーが発生していることを検出する。復号器18は、記憶領域M0,M2,M3から読み出されるデータに対して誤り訂正処理の符号化演算を行う。復号器18は、書き込み時に生成されたが不揮発性メモリ20に格納されなかった中間パリティP0,P2,P3を再び生成する。復号器18は、不揮発性メモリ20から重ね合わせパリティPZを読み出し、中間パリティP0,P2,P3と重ね合わせパリティPZとに応じて、中間パリティP1を復元する。復号器18は、重ね合わせパリティPZの生成時に行った所定の演算に対する逆演算を行うことで、中間パリティP1を復元してもよい。復号器18は、復元された中間パリティP1を用いて、記憶領域M1のデータを訂正する。これにより、4個の記憶領域のうちの記憶領域M1での消失エラーに対応することができる。すなわち、4個の中間パリティP0〜P3のビット長の合計より短いビット長を有する重ね合わせパリティPZを不揮発性メモリ20に格納することで、大規模な消失エラーに対応できるので、OP消費率を抑制しながら消失エラーの対応力を向上できる。
メモリシステム1では、発生し得る消失エラーの規模がある程度予想できることがある。そのため、発生し得る消失エラーの規模に応じて、重ね合わせパリティに対応した複数の記憶領域が決められ、重ね合わせパリティが実装されてもよい。
例えば、発生し得る消失エラーの規模が1ワードラインである場合、図6〜図8に示すように、重ね合わせパリティが実装されてもよい。図6は、実施形態の第1の実装例(1ワードライン消失訂正対応)における不揮発性メモリ20の構成を示す図である。図7は、実施形態の第1の実装例における重ね合わせパリティの生成を示す図である。図8は、実施形態の第1の実装例における重ね合わせパリティを用いたデータの復元を示す図である。
図6は、不揮発性メモリ20のストレージ領域全体を示す。図6では、不揮発性メモリ20が、メモリコントローラ10と4個のチャネルCh0〜Ch3でそれぞれ接続された2個のバンクBank#0〜Bank#1を有する構成が例示されている。バンクBank#0は、複数のチャネルCh(例えば、4個のチャネルCh0〜Ch3)に対応した複数のチップChip(例えば4個のチップChip0〜Chip3)を有し、各チップChipが2個のプレーンPlane#0、Plane#1を有する。各プレーンPlaneは、2個のブロック(2個の物理ブロック)Block#0〜Block#1を有する。図6では、プレーンPlane#0内がBlock#0とBlock#1とに分離して示され、プレーンPlane#1内がBlock#0とBlock#1とに分離して示されている。
例えば、チップChip0は、チャネルCh0に対応し、チャネルCh0を介してメモリコントローラ10に接続されている(図2参照)。チップChip0は、プレーンPlane#0のブロック#0、プレーンPlane#1のブロック#0、プレーンPlane#0のブロック#1、Plane#1のブロック#1を有する。図6では、プレーンPlane#0のブロック#0及びプレーンPlane#1のブロック#0の第1の組が隣接して示され、プレーンPlane#0のブロック#1及びPlane#1のブロック#1の第2の組が隣接して示され、第1の組及び第2の組が互いに分離して示されている。同様に、チップChip3は、チャネルCh3に対応し、チャネルCh3を介してメモリコントローラ10に接続されている(図2参照)。チップChip3は、プレーンPlane#0のブロック#0、プレーンPlane#1のブロック#0、プレーンPlane#0のブロック#1、Plane#1のブロック#1を有する。図6では、プレーンPlane#0のブロック#0及びプレーンPlane#1のブロック#0の第1の組が隣接して示され、プレーンPlane#0のブロック#1及びPlane#1のブロック#1の第2の組が隣接して示され、第1の組及び第2の組が互いに分離して示されている。
また、図6では、各プレーンが、2個の物理ブロックを有し、各物理ブロックが、4本のワードラインWLに対応したメモリセル群を有し、各ワードラインWLに対応したメモリセル群が、4個のストリングユニットSU0〜SU3を有する場合について例示されている。ストリングユニットSU0に含まれるワードラインWL0に接続されたメモリセル群、ストリングユニットSU1に含まれるワードラインWL0に接続されたメモリセル群、・・・、ストリングユニットSU3に含まれるワードラインWL3に接続されたメモリセル群の、それぞれのメモリセル群が、図3に示すセルユニットCUに対応する。また、図6では、1つのプレーンと1つのセルユニットとの組み合わせで決まる記憶容量の単位をフレームFRと呼ぶことにし、中間パリティの誤り訂正能力が2フレームまでである場合を例示する。
図6では、不揮発性メモリ20のストレージ領域全体について、2個の重ね合わせパリティに対応して記憶領域が決められる場合が例示されている。不揮発性メモリ20のストレージ領域全体は、1個目の重ね合わせパリティに対応する複数の記憶領域M11,M13,M15,M17と、2個目の重ね合わせパリティに対応する複数の記憶領域M12,M14,M16,M18とを含む。複数の記憶領域M11,M13,M15,M17を含む記憶領域群をGR1とする。記憶領域M11は、ワードラインWL0に対応した、物理ブロックあたり2個のセルユニットCU0,CU1のメモリセル群を、2個のバンク(Bank#0〜Bank#1)、2個の物理ブロック(Block#0〜Block#1)、及び4個のチャネル(チャネルCh0〜Ch3)の分だけ含んでいる。ここで、ストリングユニットSU0に含まれるワードラインWL0に接続されたメモリセル群がセルユニットCU0に対応する。また、ストリングユニットSU1に含まれるワードラインWL0に接続されたメモリセル群がセルユニットCU1に対応する。記憶領域M11は、64フレームを含む。他の記憶領域M13,M15,M17についても同様である。複数の記憶領域M12,M14,M16,M18を含む記憶領域群をGR2とする。記憶領域M12は、ワードラインWL0に対応した、物理ブロックあたり2個のセルユニットCU2,CU3のメモリセル群を、2個のバンク(Bank#0〜Bank#1)、2個の物理ブロック(Block#0〜Block#1)、及び4個のチャネル(チャネルCh0〜Ch3)の分だけ含んでいる。ここで、ストリングユニットSU2に含まれるワードラインWL0に接続されたメモリセル群がセルユニットCU2に対応する。また、ストリングユニットSU3に含まれるワードラインWL0に接続されたメモリセル群がセルユニットCU3に対応する。記憶領域M12は、64フレームを含む。他の記憶領域M14,M16,M18についても同様である。記憶領域群GR1が1個目の重ね合わせパリティに対応し、記憶領域群GR2が2個目の重ね合わせパリティに対応する。
記憶領域群GR1の複数の記憶領域M11,M13,M15,M17と、記憶領域群GR2の複数の記憶領域M12,M14,M16,M18とは、不揮発性メモリ20内で互いに分散して配されている。記憶領域M13,M15,M17は、記憶領域M12,M14,M16,M18の間に分散して配されている。記憶領域M12,M14,M16は、記憶領域M11,M13,M15,M17の間に分散して配されている。
これにより、隣接する複数のフレームで消失エラーが発生した場合に、記憶領域群ごとに消失エラーの影響を受ける記憶領域の数を少なくすることができる。
図6に示す構成では、図7に示すように、重ね合わせパリティの生成が行われ得る。図7は、第1の実装例における重ね合わせパリティの生成を示す図である。
例えば、記憶領域群GR1について、図7(a)に示すように、記憶領域M11,M13,M15,M17に格納されるべきデータがデータバッファ12b上に格納されている場合、符号化器17は、制御部11からの指示に基づいて、記憶領域M11,M13,M15,M17に格納されるべきデータに対して、それぞれ、符号化演算を行い、中間パリティP’P’を生成する。符号化演算は、例えばリードソロモン方式の符号化演算であり、中間パリティについてP’を2個並べた表記は、中間パリティが2フレーム分のビット長を有することを示している。符号化器17は、生成された中間パリティP’P’をパリティ記憶領域12aに格納する。また、メモリI/F13は、データバッファ12b上のデータを記憶領域M11,M13,M15に格納させる。
次に、図7(b)に示すように、符号化器17は、記憶領域M11,M13,M15,M17の中間パリティP’P’を合成して重ね合わせパリティPPを生成する。符号化器17は、記憶領域M11,M13,M15,M17の中間パリティP’P’に対して所定の演算を行って重ね合わせパリティPPを生成する。所定の演算は、例えば排他的論理和であり、中間パリティについてPを2個並べた表記は、重ね合わせパリティPPが2フレーム分のビット長を有することを示している。符号化器17は、生成された重ね合わせパリティPPをパリティ記憶領域12aに格納する。符号化器17は、データバッファ12b上のデータとパリティ記憶領域12a上の重ね合わせパリティPPとをメモリI/F13へ供給する。メモリI/F13は、不揮発性メモリ20における記憶領域M17にデータと重ね合わせパリティPPとを格納させる。重ね合わせパリティPPは、記憶領域M17における末尾の部分(例えば、末尾の2フレーム)に格納され得る。
その後、制御部11は、パリティ記憶領域12aに格納された記憶領域M11,M13,M15,M17それぞれの中間パリティP’P’と重ね合わせパリティPPとのそれぞれを破棄する。
なお、記憶領域群GR2についての重ね合わせパリティの生成は、図7(a)、図7(b)に示すものと同様に行われ得る。
図6に示す構成では、図8に示すように、重ね合わせパリティを用いたデータの復元が行われ得る。図8は、第1の実装例における重ね合わせパリティを用いたデータの復元を示す図である。
例えば、図8(a)に斜線ハッチングで示す1ワードラインで消失エラーが発生した場合を考える。
このとき、記憶領域群GR1について、重ね合わせパリティPPに対応した記憶領域M11,M13,M15,M17のうち、記憶領域M13,M15,M17のデータは適正であるが、記憶領域M11における斜線ハッチング部分で消失エラーが発生している。復号器18は、制御部11からの指示に基づいて、記憶領域M11における斜線ハッチング部分で消失エラーが発生していることを検出する。
図8(a)に示すように、復号器18は、消失エラーの影響を受けていない記憶領域M13,M15,M17から読み出されるデータに対して誤り訂正処理の符号化演算を行って、記憶領域M13,M15,M17それぞれの中間パリティP’P’を再び生成する。復号器18は、重ね合わせパリティPPを記憶領域M17から読み出す。
図8(b)に示すように、記憶領域M13,M15,M17の中間パリティP’P’と重ね合わせパリティPPとに応じて、記憶領域M11の中間パリティP’P’を復元する。復号器18は、重ね合わせパリティPPの生成時に行った所定の演算に対する逆演算を行うことで、記憶領域M11の中間パリティP’P’を復元する。復号器18は、復元された中間パリティP’P’を用いて、記憶領域M11の斜線ハッチング部分のデータを訂正する。これにより、複数の記憶領域M11,M13,M15,M17のうちの記憶領域M11での消失エラーに対応することができる。
なお、記憶領域群GR2についての重ね合わせパリティを用いたデータの訂正は、図8(a)、図8(b)に示すものと同様に行われ得る。
すなわち、複数の記憶領域の中間パリティP’P’のビット長の合計より小さいビット長を有する重ね合わせパリティPPを不揮発性メモリ20に格納することで、大規模な消失エラーに対応できるので、OP消費率を抑制しながら消失エラーの対応力を向上できる。
図7、図8では、重ね合わせパリティのビット長が、2フレームであり、記憶領域群GR1,GR2の記憶容量が、それぞれ、32×2×4=256フレームである。このため、記憶領域群GR1,GR2のOP消費率は、それぞれ、次の数式4で示すようになる。
OP消費率=2/256=0.78125(%)・・・数式4
OP消費率=2/256=0.78125(%)・・・数式4
このように、第1の実装例では、重ね合わせパリティを用いることで、1ワードラインの消失訂正に対応でき、不揮発性メモリ20のストレージ領域全体についてOP消費率を数式4に示す程度の値に抑制できる。
例えば、発生し得る消失エラーの規模が2ワードラインである場合、図9〜図11に示すように、重ね合わせパリティが実装されてもよい。図9は、実施形態の第2の実装例(2ワードライン消失訂正対応)における不揮発性メモリ20の構成を示す図である。図10は、実施形態の第2の実装例における重ね合わせパリティの生成を示す図である。図11は、実施形態の第2の実装例における重ね合わせパリティを用いたデータの復元を示す図である。
図9では、不揮発性メモリ20のストレージ領域全体について、4個の重ね合わせパリティに対応して記憶領域が決められる場合が例示されている。不揮発性メモリ20のストレージ領域全体は、1個目の重ね合わせパリティに対応する複数の記憶領域M11,M15と、2個目の重ね合わせパリティに対応する複数の記憶領域M12,M16と、3個目の重ね合わせパリティに対応する複数の記憶領域M13,M17と、4個目の重ね合わせパリティに対応する複数の記憶領域M14,M18とを含む。記憶領域M11,M15を含む記憶領域群をGR11とし、記憶領域M12,M16を含む記憶領域群をGR12とし、記憶領域M13,M17を含む記憶領域群をGR13とし、記憶領域M14,M18を含む記憶領域群をGR14とすると、記憶領域群GR11が1個目の重ね合わせパリティに対応し、記憶領域群GR12が2個目の重ね合わせパリティに対応し、記憶領域群GR13が3個目の重ね合わせパリティに対応し、記憶領域群GR14が4個目の重ね合わせパリティに対応する。
記憶領域群GR11の複数の記憶領域M11,M15と、記憶領域群GR2の複数の記憶領域M12,M16と、記憶領域群GR13の複数の記憶領域M13,M17と、記憶領域群GR14の複数の記憶領域M14,M18とは、互いに分散して配されている。記憶領域M15は、記憶領域M12〜M14と記憶領域M16〜M18との間に配されている。記憶領域M12,M16は、記憶領域M11と記憶領域M13〜M15と記憶領域M17〜M18との間に分散して配されている。各記憶領域M13,M17は、記憶領域M11〜M12と記憶領域M14〜M16と記憶領域M18との間に分散して配されている。記憶領域M14は、記憶領域M11〜M13と記憶領域M15〜M18との間に配されている。
これにより、隣接する複数のフレームで消失エラーが発生した場合に、記憶領域群ごとに消失エラーの影響を受ける記憶領域の数を少なくすることができる。
図9に示す構成では、図10に示すように、重ね合わせパリティの生成が行われ得る。図10は、第2の実装例における重ね合わせパリティの生成を示す図である。
例えば、記憶領域群GR11について、図10(a)に示すように、記憶領域M11,M15に格納されるべきデータがデータバッファ12b上に格納されている場合、符号化器17は、制御部11からの指示に基づいて、記憶領域M11,M15に格納されるべきデータに対して、それぞれ、符号化演算を行い、中間パリティP’P’を生成する。符号化器17は、生成された中間パリティP’P’をパリティ記憶領域12aに格納する。また、メモリI/F13は、データバッファ12b上のデータを記憶領域M11に格納させる。
次に、図10(b)に示すように、符号化器17は、記憶領域M11,M15の中間パリティP’P’を合成して重ね合わせパリティPPを生成する。符号化器17は、記憶領域M11,M15の中間パリティP’P’に対して所定の演算を行って重ね合わせパリティPPを生成する。所定の演算は、例えば排他的論理和である。符号化器17は、生成された重ね合わせパリティPPをパリティ記憶領域12aに格納する。符号化器17は、データバッファ12b上のデータとパリティ記憶領域12a上の重ね合わせパリティPPとをメモリI/F13へ供給する。メモリI/F13は、不揮発性メモリ20における記憶領域M15にデータと重ね合わせパリティPPとを格納させる。重ね合わせパリティPPは、記憶領域M15における末尾の部分(例えば、末尾の2フレーム)に格納され得る。
その後、制御部11は、パリティ記憶領域12aに格納された記憶領域M11,M15それぞれの中間パリティP’P’と重ね合わせパリティPPとのそれぞれを破棄する。
なお、記憶領域群GR12,GR13,GR14についての重ね合わせパリティの生成は、図10(a)、図10(b)に示すものと同様に行われ得る。
図9に示す構成では、図11に示すように、重ね合わせパリティを用いたデータの復元が行われ得る。図11は、第2の実装例における重ね合わせパリティを用いたデータの復元を示す図である。
例えば、図11(a)に斜線ハッチングで示す2ワードラインで消失エラーが発生した場合を考える。
このとき、記憶領域群GR11について、重ね合わせパリティPPに対応した記憶領域M11,M15のうち、記憶領域M15のデータは適正であるが、記憶領域M11における斜線ハッチング部分で消失エラーが発生している。復号器18は、制御部11からの指示に基づいて、記憶領域M11における斜線ハッチング部分で消失エラーが発生していることを検出する。
図11(a)に示すように、復号器18は、消失エラーの影響を受けていない記憶領域M15から読み出されるデータに対して誤り訂正処理の符号化演算を行って、記憶領域M15の中間パリティP’P’を再び生成する。復号器18は、重ね合わせパリティPPを記憶領域M15から読み出す。
図11(b)に示すように、記憶領域M15の中間パリティP’P’と重ね合わせパリティPPとに応じて、記憶領域M11の中間パリティP’P’を復元する。復号器18は、重ね合わせパリティPPの生成時に行った所定の演算に対する逆演算を行うことで、記憶領域M11の中間パリティP’P’を復元する。復号器18は、復元された中間パリティP’P’を用いて、記憶領域M11の斜線ハッチング部分のデータを訂正する。これにより、複数の記憶領域M11,M15のうちの記憶領域M11での消失エラーに対応することができる。
なお、記憶領域群GR12〜GR14についての重ね合わせパリティを用いたデータの復元は、図11(a)、図11(b)に示すものと同様に行われ得る。
すなわち、複数の記憶領域の中間パリティP’P’のビット長の合計より小さいビット長を有する重ね合わせパリティPPを不揮発性メモリ20に格納することで、大規模な消失エラーに対応できるので、OP消費率を抑制しながら消失エラーの対応力を向上できる。
図10、図11では、重ね合わせパリティのビット長が、2フレームであり、記憶領域群GR11〜GR14の記憶容量が、それぞれ、32×2×2=128フレームである。このため、記憶領域群GR11〜GR14のOP消費率は、それぞれ、次の数式5で示すようになる。
OP消費率=2/128=1.5625(%)・・・数式5
OP消費率=2/128=1.5625(%)・・・数式5
このように、第2の実装例では、重ね合わせパリティを用いることで、2ワードラインの消失訂正に対応でき、不揮発性メモリ20のストレージ領域全体についてOP消費率を数式5に示す程度の値に抑制できる。
次に、OP消費率の抑制について、図12、図13を用いて説明する。図12は、ミニマムブロック数が一定の場合における重ね合わせパリティによるOP(Over Provisioning)率の増加を示す図である。図13は、OP率が一定の場合における重ね合わせパリティによるミニマムブロック数の低減を示す図である。
通常のパリティを使用して大規模な消失訂正に対応しようとした場合、パリティによる消費容量は、図12(a)に点線で囲って示すようになり、不揮発性メモリ20のストレージ全体における記憶容量の構成は、図12(a)に棒グラフで示すようになるとする。棒グラフは、横軸が記憶容量の大きさを示す。不揮発性メモリ20のストレージ全体におけるユーザデータ領域の容量をLuserとし、システム領域(管理情報格納領域)の容量をLsystemとし、OP領域(余裕領域)の容量をLopとすると、これらの合計がストレージ全体の記憶容量をLallとなる。OP領域の容量Lopは、システム設計時のOP領域の容量Lop_iniからパリティによる消費容量Lprを減算して得られる。
一方、ミニマムブロック数が一定に維持された状態で重ね合わせパリティを使用して大規模な消失訂正に対応しようとした場合、パリティによる消費容量
Lovprは、図12(b)に点線で囲って示すようになり、図12(a)に示す場合に比較して小さくなる。すなわち、重ね合わせパリティを使用することにより、次の数式6で示すように、OP消費率が抑制される。
Lovpr<Lpr・・・数式6
Lovprは、図12(b)に点線で囲って示すようになり、図12(a)に示す場合に比較して小さくなる。すなわち、重ね合わせパリティを使用することにより、次の数式6で示すように、OP消費率が抑制される。
Lovpr<Lpr・・・数式6
数式6により、システム設計時のOP領域の容量Lop_iniからパリティによる消費容量Lovprを減算して得られるOP領域の容量Lop’は、図12(a)に示す場合に比較して大きく確保される。すなわち、次の数式7で示す関係が成り立つ。
Lop’(=Lop_ini−Lovpr)>Lop(=Lop_ini−Lpr)・・・数式7
Lop’(=Lop_ini−Lovpr)>Lop(=Lop_ini−Lpr)・・・数式7
数式7により、OP率Lop’/Lallは、図12(a)に示す場合に比較して増加する。すなわち、次の数式8で示す関係が成り立つ。
Lop’/Lall>Lop/Lall・・・数式8
Lop’/Lall>Lop/Lall・・・数式8
数式8に示されるように、ミニマムブロック数が一定(すなわち、Lallが一定)の場合に、重ね合わせパリティを使用した消失訂正対応を行うことにより、OP率を増加させることができる。
あるいは、通常のパリティを使用して大規模な消失訂正に対応しようとした場合、パリティによる消費容量は、図13(a)に点線で囲って示すようになり、不揮発性メモリ20のストレージ全体における記憶容量の構成は、図13(a)に棒グラフで示すようになるとする。棒グラフは、横軸が記憶容量の大きさを示す。不揮発性メモリ20のストレージ全体におけるユーザデータ領域の容量Luserとし、システム領域(管理情報格納領域)の容量Lsystemとし、OP領域(余裕領域)の容量をLopとすると、これらの合計がストレージ全体の記憶容量をLallとなる。OP領域の容量Lopは、システム設計時のOP領域の容量Lop_iniからパリティによる消費容量Lprを減算して得られる。
一方、OP率が一定に維持された状態で重ね合わせパリティを使用して大規模な消失訂正に対応しようとした場合、パリティによる消費容量Lovprは、図13(b)に点線で囲って示すようになり、図13(a)に示す場合に比較して小さくなる。すなわち、重ね合わせパリティを使用することにより、次の数式9で示すように、OP消費率が抑制される。
Lovpr<Lpr・・・数式9
Lovpr<Lpr・・・数式9
数式9により、システム設計時のOP領域の容量Lop_ini’(=Lovpr+Lop)は、図13(a)に示す場合に比べて小さくなる。また、パリティによる消費容量Lovprを含むシステム領域の容量Lsystem’は、図13(a)に示す場合に比べて小さくなる。すなわち、次の数式10で示す関係が成り立つ。
Lsystem’<Lsystemr・・・数式10
Lsystem’<Lsystemr・・・数式10
数式10により、ストレージ全体の記憶容量Lall’は、図13(a)に示す場合に比べて小さくなる。すなわち、次の数式11で示す関係が成り立つ。
Lall’(=Luser+Lsystem’+Lop)<Lall(=Luser+Lsystem+Lop)・・・数式11
Lall’(=Luser+Lsystem’+Lop)<Lall(=Luser+Lsystem+Lop)・・・数式11
数式11に示すように、OP率(=Lop/Luser)が一定の場合に、重ね合わせパリティを使用した消失訂正対応を行うことにより、ストレージ全体の記憶容量を低減でき、ミニマムブロック数を低減することができる。
以上のように、実施形態では、メモリシステム1において、複数の中間パリティから重ね合わせパリティを合成して不揮発性メモリ20に格納する。これにより、OP消費率を抑制しながら消失エラーの対応力を向上できる。したがって、不揮発性メモリ20に格納されるデータの信頼性を効率的に向上できる。
なお、不揮発性メモリ20における重ね合わせパリティの格納場所は、重ね合わせパリティに対応した複数の記憶領域のいずれかに限定されず、不揮発性メモリ20における任意の領域に格納可能である。例えば、不揮発性メモリ20に専用の記憶領域が設けられ、メモリコントローラ10が重ね合わせパリティを専用の記憶領域に格納させてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、10 メモリコントローラ、20 不揮発性メモリ。
Claims (7)
- 不揮発性メモリと、
前記不揮発性メモリへ書き込まれるデータを一時的に格納するバッファと、
パリティを用いて、前記不揮発性メモリから読み出されるデータに対する誤り訂正処理を行うコントローラと、
を備え、
前記コントローラは、
前記不揮発性メモリへ書き込まれる複数のデータと、前記複数のデータそれぞれの誤り訂正処理に用いられる複数の中間パリティとを、前記バッファに書き込み、
前記バッファから読み出した前記複数のデータを前記不揮発性メモリに書き込み、
前記複数の中間パリティを前記不揮発性メモリに書き込まず、
前記複数の中間パリティから合成された重ね合わせパリティを前記不揮発性メモリに書き込む
メモリシステム。 - 前記コントローラは、前記複数のデータの前記不揮発性メモリへの書き込みが成功したことに応じて、前記複数の中間パリティを破棄する
請求項1に記載のメモリシステム。 - 前記コントローラは、前記不揮発性メモリへ書き込むデータそれぞれに対して誤り訂正処理の符号化演算を行って前記複数の中間パリティを生成し、生成された前記複数の中間パリティに対して所定の演算を行って前記重ね合わせパリティを生成する
請求項2に記載のメモリシステム。 - 前記複数のデータは、複数の第1のデータと第2のデータとを含み、
前記複数の中間パリティは、
前記複数の第1のデータに対応した複数の第1の中間パリティと、
前記第2のデータに対応した第2の中間パリティと、
を含み、
前記コントローラは、
前記不揮発性メモリから前記重ね合わせパリティを読み出し、
前記不揮発性メモリから前記複数の第1のデータを読み出し、
前記読み出された複数の第1のデータに対して誤り訂正処理の符号化演算を行って、前記複数の第1の中間パリティを生成し、
前記不揮発性メモリから前記第2のデータを読み出し、
前記生成された複数の第1の中間パリティと、前記読み出された重ね合わせパリティとに基づいて、前記第2の中間パリティを生成し、前記第2の中間パリティを用いて前記第2のデータを訂正する
請求項3に記載のメモリシステム。 - 前記所定の演算は、排他的論理和、又は誤り訂正処理の符号化演算である
請求項3又は4に記載のメモリシステム。 - 前記重ね合わせパリティのビット長は、前記複数の中間パリティのビット長の合計より小さい
請求項1から5のいずれか1項に記載のメモリシステム。 - 前記複数のデータは、前記不揮発性メモリ内で互いに分散して格納されている
請求項1から6のいずれか1項に記載のメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019168588A JP2021047527A (ja) | 2019-09-17 | 2019-09-17 | メモリシステム |
US16/806,131 US11086718B2 (en) | 2019-09-17 | 2020-03-02 | Memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019168588A JP2021047527A (ja) | 2019-09-17 | 2019-09-17 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021047527A true JP2021047527A (ja) | 2021-03-25 |
Family
ID=74869485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019168588A Pending JP2021047527A (ja) | 2019-09-17 | 2019-09-17 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US11086718B2 (ja) |
JP (1) | JP2021047527A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11698750B2 (en) * | 2021-10-04 | 2023-07-11 | Sandisk Technologies Llc | Smart re-use of parity buffer |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8438455B2 (en) | 2008-12-31 | 2013-05-07 | Intel Corporation | Error correction in a solid state disk |
JP5426711B2 (ja) | 2011-06-08 | 2014-02-26 | パナソニック株式会社 | メモリコントローラ及び不揮発性記憶装置 |
JP2015018451A (ja) | 2013-07-11 | 2015-01-29 | 株式会社東芝 | メモリコントローラ、記憶装置およびメモリ制御方法 |
KR20170075065A (ko) * | 2015-12-22 | 2017-07-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 동작 방법 |
KR20180061870A (ko) * | 2016-11-30 | 2018-06-08 | 삼성전자주식회사 | 메모리 모듈, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR102384706B1 (ko) * | 2017-06-09 | 2022-04-08 | 삼성전자주식회사 | 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법 |
US10599517B2 (en) * | 2017-11-29 | 2020-03-24 | Taiwan Semiconductor Manufacturing Co., Ltd. | Memory device |
KR20200046245A (ko) * | 2018-10-24 | 2020-05-07 | 삼성전자주식회사 | 메모리 모듈 및 메모리 시스템의 동작 방법 |
-
2019
- 2019-09-17 JP JP2019168588A patent/JP2021047527A/ja active Pending
-
2020
- 2020-03-02 US US16/806,131 patent/US11086718B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20210081276A1 (en) | 2021-03-18 |
US11086718B2 (en) | 2021-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10061643B2 (en) | Estimating an error rate associated with memory | |
US8458564B2 (en) | Programming management data for a memory | |
US9983928B2 (en) | Apparatuses and methods including error correction code organization | |
US11088710B2 (en) | Memory controllers and memory systems including the same | |
JP2015018451A (ja) | メモリコントローラ、記憶装置およびメモリ制御方法 | |
JP5657079B1 (ja) | 半導体記憶装置 | |
JP6131207B2 (ja) | 半導体記憶装置 | |
US9454429B2 (en) | Protection against word line failure in memory devices | |
JP2020155167A (ja) | 不揮発性メモリ | |
US20230195566A1 (en) | Memory device crossed matrix parity | |
EP3417457B1 (en) | Error rate reduction | |
JP2022047393A (ja) | メモリシステム、半導体記憶装置及びデータ読み出し方法 | |
JP2021047527A (ja) | メモリシステム | |
US10084487B2 (en) | Apparatuses and methods for erasure-assisted ECC decoding | |
JP2014134843A (ja) | メモリシステム | |
TWI722730B (zh) | 記憶體系統 | |
JP5710815B1 (ja) | 半導体記憶装置 | |
JP2012212233A (ja) | 半導体記憶装置 |