JP2013131095A - メモリコントローラ、記憶装置およびメモリ制御方法 - Google Patents

メモリコントローラ、記憶装置およびメモリ制御方法 Download PDF

Info

Publication number
JP2013131095A
JP2013131095A JP2011280859A JP2011280859A JP2013131095A JP 2013131095 A JP2013131095 A JP 2013131095A JP 2011280859 A JP2011280859 A JP 2011280859A JP 2011280859 A JP2011280859 A JP 2011280859A JP 2013131095 A JP2013131095 A JP 2013131095A
Authority
JP
Japan
Prior art keywords
data
read
write
memory
error
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2011280859A
Other languages
English (en)
Inventor
Hiroshi Yao
浩 矢尾
Shigehiro Asano
滋博 浅野
Shinichi Sugano
伸一 菅野
Akira Yamaya
陽 山家
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2011280859A priority Critical patent/JP2013131095A/ja
Publication of JP2013131095A publication Critical patent/JP2013131095A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】書込み速度を向上させることができるメモリコントローラを提供する。
【解決手段】データバッファと、不揮発性メモリの読み書きを行うメモリインタフェースと、書込みデータに基づいて誤り訂正符号化処理を実施し冗長データを生成する符号エンコード部と、書込みデータをデータバッファから読出してメモリインタフェースへ転送し、冗長データと対応する書込みデータとを不揮発性メモリに書込むよう制御し、メモリインタフェースへ転送した書込みデータのデータバッファ上の領域を解放し、書込みエラーが生じても再書込みを実施しない書込み制御部と、不揮発性メモリからの読出しエラーを検出するリードエラー検出部と、読出しを要求された読出し対象データを不揮発性メモリから読出すよう制御し、読出し対象データの読み出しエラーが検出された場合に、冗長データと対応するデータとを不揮発性メモリから読出すよう制御する読出し制御部と、を備える。
【選択図】図1

Description

本実施形態は、メモリコントローラ、記憶装置およびメモリ制御方法に関する。
NANDメモリのセルへのデータ書込み(プログラム)は、通常、セルを複数集めたページ単位で実施される。この時、何らかの理由で書込みエラー(プログラムエラー)が発生することがある。
書込みエラー(プログラムエラー)は、プログラムを実施しても、閾値電圧が正しいレベルに達しないセルが所定の数以上存在する状態を示している。プログラムエラーには、例えばセル単位で閾値電圧が所定のレベルから外れるビット単位のランダム誤りや、WL(Word Line)単位で周辺回路が故障することによるページ単位でのバースト誤り等がある。プログラムエラーが生じた場合、NANDメモリへ書込むデータから誤り訂正符号を生成してデータとともにNANDメモリのページ内に書き込んだとしても、ビット単位のランダム誤りが誤り訂正能力を超えた場合や、ページ単位のバースト誤りが発生した場合、さらにはブロック単位やチップ単位で故障した場合には当該データが失われることになる。
そのため、従来は、プログラムエラーを検出した場合、再書込みする必要があり、再書込みに要する時間分、書込み速度が低下するという問題があった。
また、メモリコントローラが、プログラム後に、書き込んだデータを読出して、書き込まれたデータに誤りがあるか否かを確認するリードベリファイを実施することもある。リードベリファイにより誤りがあると判定された場合にも、再書込みする必要があり、リードベリファイにより生じる再書込みに要する時間分、書込み速度が低下するという問題があった。
特開2011−203878号公報 特開平8−263229号公報 特開2011−165063号公報 特開2009−211209号公報
本実施形態は、書込み速度を向上させることができるメモリコントローラ、記憶装置およびメモリ制御方法を提供することを目的とする。
本実施形態によれば、メモリコントローラは、データバッファと、不揮発性メモリの読み書きを行うメモリインタフェースと、書込みデータに基づいて誤り訂正符号化処理を実施し冗長データを生成する符号エンコード部と、書込みデータをデータバッファから読出してメモリインタフェースへ転送し、冗長データと対応する書込みデータとを不揮発性メモリに書込むよう制御し、メモリインタフェースへ転送した書込みデータのデータバッファ上の領域を解放し、書込みエラーが生じても再書込みを実施しない書込み制御部と、不揮発性メモリからの読出しエラーを検出するリードエラー検出部と、読出しを要求された読出し対象データを不揮発性メモリから読出すよう制御し、読出し対象データの読み出しエラーが検出された場合に、冗長データと対応するデータとを不揮発性メモリから読出すよう制御する読出し制御部と、を備える。
図1は、第1の実施の形態にかかる記憶装置1の構成例を示すブロック図である。 図2は、従来の記憶装置におけるNANDメモリへの書込み処理手順の一例を示すフローチャートである。 図3は、従来の記憶装置におけるNANDメモリからの読出し処理手順の一例を示すフローチャートである。 図4は、第1の実施の形態の記憶装置におけるNANDメモリへの書込み処理手順の一例を示すフローチャートである。 図5は、第1の実施の形態の記憶装置におけるNANDメモリからの読出し処理手順の一例を示すフローチャートである。 図6は、第1の実施の形態の誤り訂正符号(RS符号)の構成例を示す図である。 図7は、第1の実施の形態の誤り訂正符号(XORパリティ符号)の構成例を示す図である。 図8は、インターフェース部の書込み処理手順の一例を示すフローチャートである。 図9は、書込み制御部における書込み処理手順の一例を示すフローチャートである。 図10は、書込み制御部における書込み処理手順の一例を示すフローチャートである(1シンボルごとにバッファ解放)。 図11は、第1の実施の形態のデータバッファの使用例を示す図である。 図12は、同一ブロックの異なるページに1つの誤り訂正符号に対応するシンボル群を格納する例を示す図である。 図13は、異なるブロックに1つの誤り訂正符号に対応するシンボル群を格納する例を示す図である。 図14は、異なるチップの異なるプレーンに1つの誤り訂正符号に対応するシンボル群を格納する例を示す図である。 図15は、第2の実施の形態にかかる記憶装置の構成例を示すブロック図である。 図16は、第2の実施の形態の誤り訂正符号の構成例を示す図である。
以下に添付図面を参照して、実施形態にかかるメモリコントローラ、記憶装置およびメモリ制御方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施の形態)
図1は、第1の実施の形態にかかる記憶装置1の構成例を示すブロック図である。記憶装置1は、メモリコントローラ2とNANDメモリ(不揮発性メモリ)3を備える。記憶装置1は、ホスト4と接続可能であり、図1ではホスト4と接続された状態を示している。ホスト4は、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。
NANDメモリ3は、データを不揮発に記憶する不揮発性メモリであり、n(nは0以上の整数)+1個のメモリチップ(メモリ)31−0〜31−nで構成されている。メモリ31−kは、k番目のメモリチップを表す。なお、ここでは、不揮発性メモリとしてNANDメモリ3を用いる例を説明するが、NANDメモリ以外の記憶手段を用いてもよい。NANDメモリでは、一般にページと言われる書込み単位(最小書込み)が存在し、ページ単位で書込みが行われる。
メモリコントローラ2は、ホスト4からの書込みコマンド(要求)に従ってNANDメモリ3への書込みを制御し、またホスト4からの読出しコマンド(要求)に従ってNANDメモリ3からの読出しを制御する。メモリコントローラ2は、インターフェース部21、データバッファ22、符号エンコード部23、書込み制御部24、読出し制御部25、符号デコード部26、メモリインタフェース(I/F)27およびリードエラー検出部28を備える。
インターフェース部21は、ホスト4のインターフェース部41と通信線により接続し、通信線の種別や規格に応じて、ホスト4と記憶装置1の間の転送処理等を実施する。通信線としては、例えば、SATA(Serial Advanced Technology Attachment)のようなシリアルバスの場合や、アドレスバスとデータバスの場合などがある。インターフェース部21は、ホスト4からの読出しコマンドや書込みコマンド等を受信するとともに当該コマンドにより転送するデータのアドレスやサイズを受信する。その後、必要なバッファ領域をデータバッファ22上に確保して、各コマンドの処理を書込み制御部24や読出し制御部25に通知する。また、インターフェース部21は、ホスト4からNANDメモリ3への書込みデータを受信してデータバッファ22へ格納し、NANDメモリ3から読出されてデータバッファ22へ格納された読出しデータをホスト4へ転送する。
データバッファ22は、メモリコントローラ2がホスト4から受信したデータをNANDメモリ3へ記憶するまでに一時格納したり、NANDメモリ3から読出したデータをホスト4へ送信するまでに一時格納したりするために使用されるメモリであり、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリで構成される。
書込み制御部24は、データバッファ22に格納された書込みデータをNANDメモリ3へ書込む処理を制御する。具体的には、書込み制御部24は、データバッファ22上のデータ(書き込みデータ)を書込むNANDメモリ3上の領域を決定し、データをデータバッファ22から読出して符号エンコード部23に転送し、また符号エンコード部23により生成された符号の各シンボルを書込むNANDメモリ3上の領域を決定し、データおよび符号をメモリI/F27に転送する。また、書込み制御部24は、メモリI/F27への書込みデータの転送が終了すると、転送が終了した書込みデータが格納されていたデータバッファ22の領域を解放する。本実施の形態では、書込み制御部24はメモリI/F27経由でNANDメモリ3から書込みエラー(プログラムエラー)を受け取っても、再書込み等の処理を行わない。なお、メモリコントローラ2は、書込みエラーを受信してエラーの有無を検出する処理は実施し、エラーを検出しても再書込みを行わないようにしてもよいし、エラーの有無を検出する処理自体を実施しなくてもよい。また、リードベリファイの結果エラーとなっても再書込みは実施しない、またはリードベリファイ自体実施しないようにしてもよい。
符号エンコード部23は、書込み制御部24から転送されたデータに基づいて、誤り訂正符号化処理を実施し冗長シンボルを生成する(誤り訂正符号を生成する)。誤り訂正符号としてはどのような符号を用いてもよいが、例えば、RS(Reed−Solomon)符号やXORパリティ符号等を用いることができる。誤り訂正符号の種類は限定するものではないが、符号化後に情報シンボルと冗長シンボルとに明確に分離できる組織符号に属する符号が好ましい。すなわち、1個の誤り訂正符号は情報シンボルと冗長シンボルから構成され、情報シンボルは誤り訂正符号の元となったデータであり、冗長シンボルは誤り訂正符号化で生成付加された部分である。本実施の形態では、1つの誤り訂正符号を構成する各シンボルは、NANDメモリ3において異なる書込み単位に記録されるように配置される。一般に誤り訂正符号の1シンボル辺りのビット数よりメモリの書込み単位サイズの方がはるかに大きいため、書込み単位サイズのデータは複数のシンボルを含むシンボル群になる。
メモリI/F27は、NANDメモリ3への書込みや読出しを直接制御するコントローラである。メモリI/F27は、書込み制御部24から転送された書込みデータをNANDメモリ3へ転送して、当該書込みデータを書込み制御部24が決定した書込み領域に書き込むよう指示する。また、メモリI/F27は、読出し制御部25から読出しを指示されたデータをNANDメモリ3から読出し、読出し制御部25へ転送する。また、NANDメモリ3からのステータス信号等を受信する。なお、NANDメモリ3では、一般にステータス信号としてメモリセルへの書込みエラー(プログラムエラー)を通知するが、本実施の形態では、メモリI/F27はプログラムエラーが通知されても、当該プログラムエラーを書込み制御部24へ通知しなくてもよい。
リードエラー検出部28は、メモリI/F27がNANDメモリ3からデータを読出した際に、読出しに失敗したか成功したか、すなわち読出しエラー(リードエラー)の有無を検出し、その検出結果をメモリI/F27へ通知する。読出しに失敗したか成功したかの判断はどのような方法で行ってもよいが、例えば、NANDメモリ3から出力されるステータス信号等により判断してもよいし、書込み時に誤り検出符号を付加してNANDメモリ3へ格納し、誤り検出符号を用いた誤り検出処理で誤りが検出された場合に読出に失敗したと判断してもよい。
読出し制御部25は、インターフェース部21経由で通知されたホスト4からの読出しコマンドに従って、読出しを要求されたデータ(読み出し対象データ)をNANDメモリ3からデータを読出す処理を制御する。具体的には、読出し制御部25は、読出しを要求されたデータをNANDメモリ3からデータを読出すようメモリI/F27へ指示するとともに、データバッファ22上の領域に読出したデータを格納する領域を割当てる。読出し制御部25は、リードエラー検出部28によりエラーが検出されなかった場合は、読出しデータをデータバッファ22上の割当てた領域に格納する。また、読出し制御部25は、リードエラー検出部28がエラーを検出した場合、エラーの検出されたデータに対応する誤り訂正符号を構成するシンボル全てについて、NANDメモリ3への記憶位置を特定して読出すようメモリI/F27へ指示する。そして、読出し制御部25は、読出したそれらのシンボルを符号デコード部26に転送して誤り訂正処理を実施するよう指示する。その後、当該読出しデータに割当てられていたデータバッファ22上の領域に誤り訂正処理後のデータを転送する。
符号デコード部26は、読出し制御部25から転送されたデータ(シンボル)に基づいて復号処理を実施し、誤り訂正後の(修復された)読出しデータを読出し制御部25へ転送する。
ここで、従来の記憶装置の書込みおよび読出し処理について説明する。図2は、従来の記憶装置におけるNANDメモリへの書込み処理手順の一例を示すフローチャートであり、図3は、従来の記憶装置におけるNANDメモリからの読出し処理手順の一例を示すフローチャートである。
従来、メモリコントローラは、図2に示すように、書込みコマンドをホストから受信する(ステップ101)と、データバッファ上にデータdを格納する領域を割当てる(ステップS102)。そして、データdをホストから受信し(ステップS103)、データバッファ上の(NANDメモリ3への)未書込みデータ量が所定の閾値A以上であるか否かを判断する(ステップS104)。なお、閾値Aは、NANDメモリ3への書込み処理を開始するデータ量の単位であり、NANDメモリ3の書込み単位である1ページ以上の値である。一般には、転送や処理の効率化のため、データバッファにある程度のデータが蓄積してから書込み処理を実施する。例えば、NANDメモリが16メモリチップ、2プレーンで構成される場合、32ページを閾値Aとすることができる。
データバッファ上の未書込みデータ量が所定の閾値A以上である場合(ステップS104 Yes)、NANDメモリ上の書込み領域の決定を行い(ステップS105)、データバッファに格納されている書込みデータをNANDメモリの書込み領域へ転送する(ステップS106)。そして、NANDメモリにおいてセルへの書込み(プログラム)が実施され(ステップS107)、セルへのプログラム完了を待機する(ステップS108)。そして、NANDメモリの書込みエラー(プログラムエラー、リードベリファイによるエラーの少なくとも一方)の有無を検出し(ステップS109)、書込みエラーがあった場合(ステップS110 Yes)、ステップS105へ戻り、再書込みを実施する。
書込みエラーがなかった場合(ステップS110 No)、書込んだデータに対応するデータバッファの領域を解放し(ステップS111)、書込み処理を完了する(ステップS112)。また、ステップS104で、未書込みデータ量が所定の閾値A未満の場合(ステップS104 No)、書込み処理を完了する(ステップS112)。
従来のNANDメモリの読出し処理では、図3に示すように、メモリコントローラは、読出しコマンドをホストから受信する(ステップ201)と、読出すデータdのNANDメモリ上の記録位置を特定する(ステップS202)。そして、NANDメモリからデータdを読出し(ステップS203)、読出しエラーの検出を行い(ステップS204)、エラーが検出された場合(ステップS204 Yes)、ステップS203へ戻り再読出しを実施する。読出しエラーが検出されなかった場合(ステップS204 No)、読出したデータdをホストに送信し(ステップS205)、読出し処理を完了する(ステップS206)。
このように、従来のNANDメモリへ書込み処理では、プログラムエラー、リードベリファイによるエラーなどの書込みエラーが検出された場合に、再書込みを実施していた。このため、書込み時の転送速度が低下するという問題があった。また、NANDメモリのセルに正常に書き込んだことを確認してからデータバッファを解放しているため、書込み中にホストから受信したデータを格納するために、データバッファを余分に必要とするという問題があった。
これに対し、本実施の形態の記憶装置1では、書込み時に誤り訂正符号化処理を行って冗長シンボルを生成しかつ書込み時に再書込みを実施しないことにより、書込み時の転送速度の低下を防ぎ、またデータバッファの利用効率を向上させる。以下、本実施の形態の記憶装置1における書込みおよび読出し処理について説明する。図4は、本実施の形態の記憶装置1におけるNANDメモリ3への書込み処理手順の一例を示すフローチャートであり、図5は、本実施の形態の記憶装置1におけるNANDメモリ3からの読出し処理手順の一例を示すフローチャートである。
図4に示すように、本実施の形態のメモリコントローラ2は、従来のステップS101〜ステップS104と同様に、書込みコマンド受信からデータバッファ上の未書込みデータが閾値A以上であるか否かの判断までを実施する(ステップS1〜ステップS4)。
データバッファ上の未書込みデータ量が所定の閾値A以上である場合(ステップS4 Yes)、メモリコントローラ2は、書込みデータであるシンボル群(情報シンボル群)についてNANDメモリ3上の書込み領域の決定を行う(ステップS5)。そして、データバッファに格納されている書込みデータを、符号エンコード部23へ転送し、符号エンコード部23が情報シンボル群に基づいて誤り訂正符号Eを生成する(ステップS6)。
メモリコントローラ2は、符号エンコード部23により生成された冗長シンボル群に対するNANDメモリ3の書込み領域を決定し、情報シンボル群および冗長シンボル群を、NANDメモリ3の対応する書込み領域へ転送する(ステップS7)。そして、転送が完了したシンボル群に対応するデータバッファ22上の領域を解放し(ステップS8)、書込み処理を完了する(ステップS10)。また、ステップS8のNANDメモリ3の対応する書込み領域へ転送後、データバッファ22の解放と並行して、転送されたシンボル群のNANDメモリ3のセルへの書込み(プログラム)が実施される(ステップS9)。すなわち、メモリコントローラ2(より詳細には、メモリコントローラ2の書込み制御部24)は、データバッファ22から情報シンボル群をNANDメモリ3へ転送後、この情報シンボル群のNANDメモリ3のセルへの書込み完了を待たずに、データバッファ22のこの情報シンボル群が格納されていた領域を解放する。また、ステップS4で、未書込みデータ量が所定の閾値A未満の場合(ステップS4 No)、書込み処理を完了する(ステップS10)。
図5に示すように、本実施の形態のメモリコントローラ2は、従来のステップS201〜ステップS204と同様に、読出しコマンド受信から読出しエラーの検出までを実施する(ステップS21〜ステップS24)。
読出しエラーが検出された場合(ステップS24 Yes)、読出し対象のデータdに対応する誤り訂正符号を構成する全シンボル群についてNANDメモリ3上の記録位置を特定する(ステップS27)。そして、誤り訂正符号を構成する全シンボル群をNANDメモリ3から読出し(ステップS28)、符号デコード部26がこれらのシンボル群を用いて復号処理を行い、データdを修復する(ステップS29)。そして、データdをホストに送信し(ステップS25)、読出し処理を終了する(ステップS26)。
読出しエラーが検出されなかった場合(ステップS24 No)、読出したデータdをホストに送信し(ステップS25)、読出し処理を完了する(ステップS26)。
なお、図5では、読出しエラーを検出した場合(ステップS24 Yes)に、再読出しを行わない例を示しているが、再読出しを行うようにしてもよい。そして、再読出しを行った後に読出しエラーを検出した場合に、ステップS27以降の処理を実施するようにしてもよい。
このように、本実施の形態では、データの書込み時に冗長シンボル(冗長データ)を生成して情報シンボル(書込みデータ)とともに冗長シンボルをNANDメモリ3へ格納しておくことで、書込みエラーの有無に関わらず、再書込みを実施しない。そして、書込みエラーがあった場合には、誤り訂正符号を用いた復号を行うことにより、エラーによりデータが失われることを防ぐ。従って、本実施の形態の誤り訂正符号は、できるだけ多くの書込みエラーを修復可能なように生成することが望ましい。
書込みエラーとしては、ビット単位のランダム誤りもあるが、WL(Word Line)単位で周辺回路が故障することによるページ単位でのバースト誤りもある。ページ単位での誤りが発生した場合、1つの誤り訂正符号を同一ページ内の情報シンボル群に基づいて生成すると、NANDメモリ3から冗長シンボルが読出せたとしても、当該符号の元になった情報シンボル群を1つも読出せないことになり、復号ができなくなる。このため、1つの誤り訂正符号を生成するシンボル群は、NANDメモリ3の異なるページに分散させて格納することが望ましい。特に、符号エンコード部23で生成する誤り訂正符号の訂正能力がtシンボルの場合に、1つの誤り訂正符号に含まれる各シンボルのうち同一ページ上に記録するシンボルの数はtシンボル以下とすると、ページ単位のエラーを修復することができる。なお、シンボル群は、NANDメモリ3の異なるページに分散させることが望ましいが、各シンボル群のNANDメモリ3への格納位置に特に限定はない。
図6、7は、本実施の形態の誤り訂正符号の構成例を示す図である。図6は、RS符号(N=32、K=30)を用いる例を示し、図7は、XORパリティ(N=32、K=31)を用いる例を示している。ここでは、1シンボルは8ビットとする。各シンボル群は1ページ分のデータサイズ(8Kバイト)である。なお、ここでは1シンボルを8ビットとし、1ページを8Kバイトとしているが、1シンボルのビット数、1ページのデータサイズは、これらに限定されない。
図6の例では、シンボル群#0〜シンボル群#29の30個のシンボル群を情報シンボル群#0〜#29とし、シンボル群#30、シンボル群#31を冗長シンボル群#0〜#1としている。
図6のRS符号101として示した、シンボル群#0〜シンボル群#31の32シンボルは、1つのRS符号に対応するシンボルである。RS符号101内の情報シンボル群#0〜#29のそれぞれ1シンボルずつ(合計30シンボル)に基づいて、RS符号101内の冗長シンボル群#30、31の1シンボルずつ(計2シンボル)の冗長シンボルが生成される。そして、各シンボル群#0〜#31をそれぞれ異なるページに書き込むことにより、1つのRS符号に対応する32個のシンボルは異なるページに格納されることになる。
図7の例では、シンボル群#0〜シンボル群#30の31個のシンボル群を情報シンボル群#0〜#30とし、シンボル群#31を冗長シンボル群#0としている。情報シンボル群#0〜#30のそれぞれ1シンボルずつ(合計31シンボル)に基づいて冗長シンボル群#0の1つの冗長シンボルを生成する。そして、各シンボル群#0〜#31をそれぞれ異なるページに書き込むことにより、1つのパリティ符号に対応するシンボル群#0〜シンボル群#31は異なるページに格納されることになる。
なお、以上述べた誤り訂正符号の構成は例であり、誤り訂正符号の種類、情報シンボルと冗長シンボルの比率等は、図6、7の例に限定されない。
以降では、1つの誤り訂正符号を構成する情報シンボルと冗長シンボルの合計の数をn、情報シンボルの数をkとする。n個のシンボル群(情報シンボル群と対応する冗長シンボル群)を符号データ単位と呼ぶこととする。図6の例ではn=32、k=30であり、32シンボル群(32ページ)で1つの符号データ単位を構成し、そのうち30シンボル群が情報シンボル群である。また、図7の例ではn=32、k=31である。
次に、本実施の形態のNANDメモリ3への書込み処理について詳細に説明する。図8は、インターフェース部21の書込み処理手順の一例を示すフローチャートである。インターフェース部21は、ホスト4からL個のデータ(データd(i),i=0〜L−1)の書込みを要求する書込みコマンドを受信する(ステップS31)と、まず、データバッファ22上に空き領域が有るか否かを判断する(ステップS32)。
データバッファ22上に空き領域が有る場合(ステップS32 Yes)、データバッファ22上にデータd(i)を格納する領域を割当てる(ステップS33)。なお、iの初期値は0とする。データd(i)をホストから受信する(ステップS34)と、データバッファ22上の未書込みデータ量が閾値A以上であるか否かを判断する(ステップS35)。
データバッファ22上の未書込みデータ量が閾値A未満の場合(ステップS35 No)、L個のデータを受信したか否かを判断し(ステップS36)、L個のデータを受信していない場合(ステップS36 No)、iを1インクリメントしてステップS32へ戻る。L個のデータを受信した場合(ステップS36 Yes)、書込み処理を完了する(ステップS37)。
データバッファ22上に空き領域が無い場合(ステップS32 No)、書込み制御部24によりデータバッファ22が解放されるまで待ち(ステップS38)、ステップS33へ進む。また、ステップS35でデータバッファ22上の未書込みデータ量が閾値A以上であると判断した場合(ステップS35 Yes)、書込み制御部24にNANDメモリ3への書込み処理の開始を指示し(ステップS39)、ステップS36へ進む。
図9は、書込み制御部24における書込み処理手順の一例を示すフローチャートである。書込み制御部24は、インターフェース部21からNANDメモリ3への書込み処理の開始指示を受けると、データバッファ22上のデータをk個のシンボル群(情報シンボル群)S(j)(j=p〜p+k−1)に振り分け、シンボル群S(j)(j=p〜p+k−1)についての書込み処理を開始する(ステップS41)。なお、ここでは、図8の閾値Aを1符号データ単位内のk個の情報シンボル群に対応するデータ量とする。データバッファ22のバッファサイズをkページ分以上のサイズとし、シンボル群S(p−1)までは、前回の処理までにNANDメモリ3への書込み処理済みであるとする。
書込み制御部24は、シンボル群S(j)のNANDメモリ3上の書込み領域を決定し(ステップS42)、シンボル群S(j)の書込み先のチップ(メモリチップ)が動作中であるか否かを判断する(ステップS43)。シンボル群S(j)の書込み先のチップが動作中の場合(ステップS43 Yes)、当該チップの動作完了が終わるのを待ってから(ステップS44)、シンボル群S(j)をデータバッファ22から読出して符号エンコード部23へ転送し(ステップS45)、符号エンコード部23に対し、誤り訂正符号生成処理の中間結果に転送したシンボル群S(j)を反映するよう指示する(ステップS46)。符号エンコード部23は、指示に基づいてシンボル群S(j)に基づいて誤り訂正符号生成処理の中間結果を更新する。
なお、ここでは、誤り訂正符号の生成処理(符号エンコード処理)では、演算の入力となるシンボルが増えるごとに、シンボルが増える前までの演算結果を用いて誤り訂正符号を更新することが可能であるとする。すなわち、x(0),x(1),…,x(q−1)を用いて求めた誤り訂正符号をEqとするとき、x(0),x(1),…,x(q)のシンボルを用いた誤り訂正符号は、Eqとx(q)を用いて生成することができるとする。ここでは、nd個のシンボルを用いて生成した誤り訂正符号をNANDメモリ3へ格納する最終的な誤り訂正符号として生成する場合に、符号エンコード部23がnd個未満のシンボルを用いて生成した誤り訂正符号(例えば、前述のEq)を中間結果と呼ぶこととする。
また、書込み制御部24は、シンボル群S(j)をメモリI/F27へ転送し(ステップS47)、ステップS42で決定したNANDメモリ3上の書込み領域へシンボル群S(j)を書込むよう指示する。書込み制御部24は、シンボル群S(j)のメモリI/F27への転送が完了するまで待ち(ステップS48)、転送完了後にシンボル群S(j)に対応するデータバッファ22上の領域を解放する(ステップS49)。
その後、書込み制御部24は、符号を構成するk個の情報シンボル群をメモリI/F27へ転送したか否かを判断し(ステップS50)、k個のシンボル群をメモリI/F27へ転送していない場合(ステップS50 No)、jをj+1に更新して(ステップS51)ステップS42へ戻る。
k個の情報シンボル群をメモリI/F27へ転送した場合(ステップS50 Yes)、書込み制御部24は、冗長シンボル群の書込み領域を決定する(ステップS52)。そして、書込み先のチップが動作中であるか否かを判断し(ステップS53)、動作中でない場合(ステップS53 No)、冗長シンボル群を符号エンコード部23からメモリI/F27へ転送し(ステップS55)、当該冗長シンボル群の転送完了を待つ(ステップS56)。転送完了後、書込み制御部24は、符号データ単位を構成するn個のシンボルをメモリI/F27へ転送したか否かを判断する(ステップS57)。
ステップS52で、書込み先のチップが動作中であった場合(ステップS53 Yes)、当該チップの動作が完了するまで待ち(ステップS54)、ステップS55へ進む。
符号データ単位を構成するn個のシンボル群をメモリI/F27へ転送した場合(ステップS57 Yes)、符号化エンコード部を初期化し(ステップS58)、書込み処理を終了する。また、符号データ単位を構成するn個のシンボル群をメモリI/F27へ転送していない場合(ステップS57 No)、ステップS52へ戻り転送していない冗長シンボル群についてステップS52以降の処理を実施する。
ステップS48およびステップS56の後、並行して、NANDメモリ3において、メモリI/F27から転送されたシンボル群のセルへの書込み(プログラム)が実施される(ステップS59)。
なお、中間結果を用いた演算のできないアルゴリズムにより誤り訂正符号を生成する場合には、情報シンボル群ごとに符号エンコード部23およびメモリI/F27へ順次入力するのではなく、最終的な誤り訂正符号が生成されるまで情報シンボルをメモリI/F27へ転送せずに、最終的な誤り訂正符号が生成された後に全情報シンボル群および冗長シンボル群をメモリI/F27へ転送して、転送後にデータバッファ22を解放するようにすればよい。
図10は、1符号データ単位内のk個の情報シンボル群に相当するデータ量がデータバッファに溜まる前に書込み処理を開始する場合の書込み制御部24における書込み処理手順の一例を示すフローチャートである。ステップS61〜ステップS69は、処理対象のシンボル群を1つのS(j)のみとする以外は、図9のステップS61〜ステップS49と同様である。ステップS69の後、書込み制御部24は、符号を構成するk個のシンボル群をメモリI/F27へ転送したか否かを判断し(ステップS70)、k個のシンボル群をメモリI/F27へ転送していない場合(ステップS70 No)、処理を終了する(その後、次のシンボル群の処理へ移行する)。
符号を構成するk個のシンボル群をメモリI/F27へ転送した場合(ステップS70 Yes)、図9のステップS52〜S58と同様にステップS71〜ステップS77を実施する。
図10のフローチャートによれば、データバッファ22に情報シンボル群1個分に相当するデータが溜まればメモリI/Fへの転送が可能なので、図8における閾値Aおよびデータバッファ22のサイズを情報シンボル群k個分より小さくすることが可能である。また、ここでは、シンボル群単位でメモリI/F27へ転送してデータバッファ22をシンボル群単位で解放するようにしたが、複数シンボル単位でメモリI/F27へ転送してデータバッファ22を複数シンボル群単位で解放するようにしてもよい。
図11は、本実施の形態のデータバッファ22の使用例を示す図である。図11の上の2段は、従来の記憶装置におけるデータバッファの使用例を示しており、1段目がダブルバッファ(バッファWB#0、WB#1の2つのバッファ)を用いる例を示し、2段目がシングルバッファ(バッファWB)を示している。3段目は、本実施の形態のデータバッファ22の使用例を示しており、データバッファ22がシングルバッファ(バッファWB)の例を示している。
図11は、横軸は模式的に示した時間を示しており、横線のハッチングはホスト受信の操作を示し、斜め線のハッチングはData−in(データバッファ22からNANDメモリ3への転送)を示し、格子状のハッチングはプログラム(tProg;セルへの書込み)を示している。また、各バッファ(WB#0、WB#1、WB)の矩形中にData#i(iはデータの番号、i=0,1,…)と記載されている部分は、当該バッファがData#iにより使用されていることを示している。また、図11の斜め上向きの黒矢印は、従来(上2段)ではプログラム完了、本実施形態(下段)では転送完了を示しており、各例においてはこのタイミングでデータバッファを解放する。
なお、図11では、データバッファ22がmページ(mシンボル群)格納可能である場合に、1シンボル群ずつデータバッファ22上の領域を開放するのではなく、mページ分まとめて解放する例を示している。Data#i(i=0,1,…)は、それぞれmページ分のデータであるとする。
2段目に示すように、従来のシングルバッファの場合は、プログラムが終了してから、バッファを解放するため、Data#0のプログラムが終了(再書込みも含む)するまで次のデータであるData#1をバッファに格納することができない。このため、Data#0のプログラム終了より前にホストからデータが送信されても書込み準備ができないため、ホストからの送信を待機させる必要があった。
一方、1段目に示すように、従来のダブルバッファを用いる場合は、Data#0のプログラム終了より前にホストからデータを受信すると、WB#0は使用することができないが、WB#1を使用することができる。このため、書込みの速度は、2段目のシングルバッファの場合に比べ向上する。しかし、シングルバッファに比べ倍のバッファが必要となる。
これに対し、3段目に示す本実施の形態では、Data−in後にすぐにデータバッファ22を解放する。このため、従来のシングルバッファの場合に比べ書込み速度を向上させることができ、また従来のダブルバッファの場合に比べバッファの量を削減することができる。
なお、ここでは、mページ分のデータをまとめて転送してデータバファ22を解放する例を示したが、mページ未満の1つ以上のシンボル群(ページ)単位で転送を実施してデータバファ22を解放する場合も、転送および解放がデータバッファ22の一部を単位として転送および解放が実施される以外は、上述の例と同様である。ホスト4からの送信されたデータは、データバッファ22の空いている領域に格納することができる。
次に、本実施の形態のシンボル群のNANDメモリ3上の書込み位置について説明する。上述したように、本実施の形態では、1つの誤り訂正符号を構成するシンボル群をそれぞれ異なるページに格納することが望ましい。図12は、NANDメモリ3内の同一ブロックの異なるページに1つの誤り訂正符号を構成するシンボル群を格納する例を示す図である。図12に示すように、同一ブロックの異なるページに分散させて格納するようにしてもよい。
図13は、NANDメモリ3内の異なるブロックに1つの誤り訂正符号を構成するシンボル群を格納する例を示す図である。図13に示すように、異なるブロックに分散させて格納すると、ページ単位のエラーだけでなくブロック単位のエラーにも対応できる。特に、符号エンコード部23で生成する誤り訂正符号の訂正能力がtシンボルの場合に、1つの誤り訂正符号に含まれる各シンボルのうち同一ブロック上に記録するシンボルの数はtシンボル以下とすると、ブロック単位の故障を修復することができる。
図14は、NANDメモリ3内の異なるチップ(メモリチップ)の異なるプレーンに1つの誤り訂正符号を構成するシンボル群を格納する例を示す図である。図14に示すように、異なるチップおよびプレーンに分散させて格納すると、ページ単位のエラーだけでなくチップ単位のエラーにも対応できる。なお、図14では、プレーンを分散させているがプレーンは同一で異なるチップに分散させるようにしてもよい。特に、符号エンコード部23で生成する誤り訂正符号の訂正能力がtシンボルの場合に、1つの誤り訂正符号に含まれる各シンボルのうち同一チップ上に記録するシンボルの数はtシンボル以下とすると、チップ単位の故障を修復することができる。
以上のように、本実施の形態では、データの書込み時に誤り訂正符号化処理により冗長データを生成して情報データとともに冗長データをNANDメモリ3へ格納しておき、書込みエラーの有無に関わらず、再書込みを実施しないようにした。そして、書込みエラーがあった場合には、読出し時に誤り訂正符号を用いた復号を行うようにした。このため、書込み速度の低下を防ぐことができる。さらに、メモリI/F27へのデータ転送が完了したデータに対応するデータバッファ22の領域を解放するようにした。このため、従来に比べ、バッファの容量を削減することができ、また同一のバッファ容量の場合は従来に比べ書込み速度を向上させることができる。
(第2の実施の形態)
図15は、第2の実施の形態にかかる記憶装置1aの構成例を示すブロック図である。記憶装置1aは、メモリコントローラ2aとNANDメモリ(不揮発性メモリ)3を備える。第1の実施の形態と同様の機能を有する構成要素は、第1の実施の形態と同一の符号を付して重複する説明を省略する。
なお、本実施の形態の第1符号エンコード部23は、第1の実施の形態の符号エンコード部23と同様であり、本実施の形態の第1符号デコード部26は、第1の実施の形態の符号デコード部26と同様である。
本実施の形態では、第1の実施の形態で述べた書込みエラーに対する誤りを訂正するための誤り訂正処理(第1誤り訂正処理)に加え、同一ページ内にデータと当該データに対応する冗長シンボル(冗長データ)とを含む誤り訂正処理(第2誤り訂正処理)を実施する。第1の実施の形態で述べたように、ページ間にまたがって1つの誤り訂正符号(第1誤り訂正符号)に対応するデータを格納する場合、誤り訂正を行う際には、対応するデータを含むページを全て読出すことになる。これに対し、同一ページ内にデータと当該データに対応する冗長データとを含む場合、ページ単位の読出しを行えば誤り訂正処理が実施することができる。
本実施の形態では、リードエラー検出部28aは、NANDメモリ3からの読出し時に第2誤り訂正処理を行って、第2誤り訂正処理で訂正能力を超えて訂正不可と判定された場合に、リードエラーが検出されたと判断する。そして、読出し制御部25は、リードエラーが検出された場合、エラーが検出されたデータに対応する第1誤り訂正符号(第1符号エンコード部23により生成された誤り訂正符号)を構成するデータを全て読出し、第2符号デコード部42へ入力する。第2符号デコード部42は、ページごとにページ内の第2誤り訂正符号を用いた誤り訂正処理を行う。読出し制御部25は、第2符号デコード部42による誤り訂正処理後のデータおよび第1誤り訂正符号の冗長シンボル群を第1符号デコード部26へ入力する。第1符号デコード部26は、入力されたデータおよび冗長シンボル群に基づいて誤り訂正処理を実施する。
図16は、本実施の形態の誤り訂正符号の構成例を示す図である。図16では、図6の例と同様に、RS符号(N=32、K=30)を第1誤り訂正符号として用いた例を示している。本実施の形態の書込み処理では、第1の実施の形態と同様に第1誤り訂正符号を生成した後、書込み制御部24は第2符号エンコード部41へ各シンボル群を入力し、第2符号エンコード部41は、シンボル群ごとにシンボル群内のデータ(情報データ)に基づいて冗長データを生成する。書込み制御部24は、情報データと対応する冗長データとをNANDメモリ3の同一ページに格納するよう制御する。図16の例では、512byteごとに第2誤り訂正符号を生成しているが、第2誤り訂正符号を構成する情報データのサイズは、これに限定されない。また、図16では、情報データごとに、情報データの後に当該情報データに対応する冗長データを配置しているが、第2誤り訂正符号のページ内の配置位置はこれに限定されない。
以上のように、本実施の形態では、書込み時に、再書込みを実施せず第1の実施の形態と同様の誤り訂正符号である第1誤り訂正符号を生成するとともに、同一ページ内のデータに基づいて第2誤り訂正符号を生成するようにした。そして、NANDメモリ3からの読出し時に、第2誤り訂正符号を用いた誤り訂正処理により訂正不可であった場合に、第1誤り訂正符号を用いた誤り訂正処理を実施するようにした。このため、ランダム誤り等については第2誤り訂正符号を用いて訂正することが可能となり、読出し対象のページ以外のページを読出して第1誤り訂正符号を用いた誤り訂正処理を行う頻度が低下する。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1,1a 記憶装置、2,2a メモリコントローラ、3 NANDメモリ、4 ホスト、21,41インターフェース部、23 符号エンコード部、24 書込み制御部、25 読出し制御部、26 符号デコード部、27 メモリI/F、28,28a リードエラー検出部、41 第2符号エンコード部、42 第2符号デコード部。

Claims (11)

  1. 不揮発性メモリを制御するメモリコントローラであって、
    前記不揮発性メモリへの書き込み、前記不揮発性メモリからの読み出しを行うメモリインタフェースと、
    受信した書込みデータ及び前記不揮発性メモリから読み出した読出しデータを格納するデータバッファと、
    前記書込みデータに基づいて、第1誤り訂正符号化処理を実施し第1冗長データを生成する第1符号エンコード部と、
    前記書込みデータを前記データバッファから読出して前記メモリインタフェースへ転送し、書き込みデータと該書き込みデータを基に生成された冗長データとを前記不揮発性メモリに書込むよう制御し、前記書き込みデータを前記メモリインタフェースへの転送後、前記書き込みデータの前記不揮発性メモリへの書込みが完了する前に前記データバッファの前記書き込みデータが格納された領域を解放する書込み制御部と、
    前記不揮発性メモリから読出したデータに対してエラーを検出するエラー検出部と、
    読出しを要求された読出し対象データを前記不揮発性メモリから読出すよう制御し、前記リードエラー検出部により前記読出し対象データのエラーが検出された場合に、当該読出し対象データに対応する前記第1冗長データと該第1冗長データに対応するデータとを前記不揮発性メモリから読出すよう制御する読出し制御部と、
    前記不揮発性半導体メモリから読み出された第1冗長データと該第1冗長データに対応する読み出しデータとに基づいて第1誤り訂正処理を行う第1符号デコード部と、
    を備える
    ことを特徴とするメモリコントローラ。
  2. 前記書込み制御部は、前記冗長データと該冗長データに対応する前記書込みデータとを前記不揮発性メモリの複数の書込み単位領域に分散させて書込むよう制御することを特徴とする請求項1に記載のメモリコントローラ。
  3. 前記書込みデータに基づいて、第2誤り訂正符号化処理により第2冗長データを生成する第2符号エンコード部と、
    前記不揮発性メモリから読出された第2冗長データと該第2冗長データに対応する読出しデータとに基づいて第2誤り訂正処理を行う第2符号デコード部と、
    をさらに備え、
    前記書込み制御部は、
    前記第2冗長データと該第2冗長データに対応するデータとを前記不揮発性メモリの同一書込み単位領域に書き込むよう制御し、
    前記リードエラー検出部は、前記第2符号デコード部による誤り訂正処理で訂正不可であったデータを読出しエラーが検出されたデータと判定することを特徴とする請求項2に記載のメモリコントローラ。
  4. 同一の書込み単位領域に書き込まれる前記冗長データと該冗長データに対応する前記書込みデータのシンボル数を、前記冗長データにより訂正可能なシンボル数以下とすることを特徴とする請求項2に記載のメモリコントローラ。
  5. 前記書込み制御部は、前記冗長データと該冗長データに対応する前記書込みデータとを前記不揮発性メモリに含まれる複数のブロックに分散させて書込むよう制御することを特徴とする請求項1ないし4のいずれか一項に記載のメモリコントローラ。
  6. 同一のブロックに書き込まれる前記冗長データと該冗長データに対応する前記書込みデータのシンボル数を、前記冗長データにより訂正可能なシンボル数以下とすることを特徴とする請求項5に記載のメモリコントローラ。
  7. 前記書込み制御部は、前記冗長データと該冗長データに対応する前記書込みデータとを前記不揮発性メモリに含まれる複数のメモリチップに分散させて書込むよう制御することを特徴とする請求項1ないし6のいずれか一項に記載のメモリコントローラ。
  8. 同一のメモリチップに書き込まれる前記書込みデータのシンボル数を、前記冗長データにより訂正可能なシンボル数以下とすることを特徴とする請求項7に記載のメモリコントローラ。
  9. 前記書き込み制御部は、前記書き込みデータが前記不揮発性半導体メモリへの書き込み時に書き込みエラーが生じても再書き込みを実施しないことを特徴とする請求項1に記載のメモリコントローラ。
  10. 不揮発性メモリと、
    前記不揮発性メモリへの書き込み、前記不揮発性メモリからの読み出しを行うメモリインタフェースと、
    受信した書込みデータ及び前記不揮発性メモリから読み出した読出しデータを格納するデータバッファと、
    前記書込みデータに基づいて、第1誤り訂正符号化処理を実施し第1冗長データを生成する第1符号エンコード部と、
    前記書込みデータを前記データバッファから読出して前記メモリインタフェースへ転送し、書き込みデータと該書き込みデータを基に生成された冗長データとを前記不揮発性メモリに書込むよう制御し、前記書き込みデータを前記メモリインタフェースへの転送後、前記書き込みデータの前記不揮発性メモリへの書込みが完了する前に前記データバッファの前記書き込みデータが格納された領域を解放する書込み制御部と、
    前記不揮発性メモリから読出したデータに対してエラーを検出するエラー検出部と、
    読出しを要求された読出し対象データを前記不揮発性メモリから読出すよう制御し、前記リードエラー検出部により前記読出し対象データのエラーが検出された場合に、当該読出し対象データに対応する前記第1冗長データと該第1冗長データに対応するデータとを前記不揮発性メモリから読出すよう制御する読出し制御部と、
    前記不揮発性半導体メモリから読み出された第1冗長データと該第1冗長データに対応する読み出しデータとに基づいて第1誤り訂正処理を行う第1符号デコード部と、
    を備える
    ことを特徴とする記憶装置。
  11. 不揮発性メモリを制御するメモリ制御方法であって、
    受信した書込みデータに基づいて、誤り訂正符号化処理を実施し冗長データを生成する第1のステップと、
    前記書込みデータをデータバッファから読出し、読み出した前記書込みデータを、前記不揮発性への書込みを行うメモリインタフェースへ転送する第2のステップと、
    書き込みデータと該書き込みデータを基に生成された冗長データとを前記不揮発性メモリに書込むよう制御し、前記書き込みデータを転送後、前記書き込みデータの前記不揮発性メモリへの書込みが完了する前に前記データバッファの前記書き込みデータが格納された領域を解放する第3のステップと、
    前記不揮発性メモリから読出したデータに対してエラーを検出する第4のステップと、
    読出しを要求された読出し対象データを前記不揮発性メモリから読出す第5のステップと、
    前記不揮発性メモリから読出したデータに対してエラーを検出する第6のステップと、
    前記第5のステップで前記読出し対象データのエラーが検出された場合に、エラーの検出された前記読出し対象データに対応する前記冗長データと該冗長データに対応するデータとを前記不揮発性メモリから読出す第7のステップと、
    前記不揮発性メモリから読出された前記冗長データと該冗長データに対応するデータとに基づいて誤り訂正処理を行う第8のステップと、
    を含むことを特徴とするメモリ制御方法。
JP2011280859A 2011-12-22 2011-12-22 メモリコントローラ、記憶装置およびメモリ制御方法 Pending JP2013131095A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011280859A JP2013131095A (ja) 2011-12-22 2011-12-22 メモリコントローラ、記憶装置およびメモリ制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011280859A JP2013131095A (ja) 2011-12-22 2011-12-22 メモリコントローラ、記憶装置およびメモリ制御方法

Publications (1)

Publication Number Publication Date
JP2013131095A true JP2013131095A (ja) 2013-07-04

Family

ID=48908580

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011280859A Pending JP2013131095A (ja) 2011-12-22 2011-12-22 メモリコントローラ、記憶装置およびメモリ制御方法

Country Status (1)

Country Link
JP (1) JP2013131095A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014130587A (ja) * 2012-12-27 2014-07-10 Lsi Corp 冗長アレイによる不揮発性メモリのプログラム障害回復
US9104596B2 (en) 2013-01-08 2015-08-11 Kabushiki Kaisha Toshiba Memory system
US9230684B2 (en) 2012-12-19 2016-01-05 Kabushiki Kaisha Toshiba Memory controller, storage device, and memory control method
JP7471883B2 (ja) 2020-03-19 2024-04-22 キオクシア株式会社 メモリシステム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9230684B2 (en) 2012-12-19 2016-01-05 Kabushiki Kaisha Toshiba Memory controller, storage device, and memory control method
JP2014130587A (ja) * 2012-12-27 2014-07-10 Lsi Corp 冗長アレイによる不揮発性メモリのプログラム障害回復
US10467093B2 (en) 2012-12-27 2019-11-05 Seagate Technology Llc Non-volatile memory program failure recovery via redundant arrays
US11144389B2 (en) 2012-12-27 2021-10-12 Seagate Technology Llc Non-volatile memory program failure recovery via redundant arrays
US9104596B2 (en) 2013-01-08 2015-08-11 Kabushiki Kaisha Toshiba Memory system
JP7471883B2 (ja) 2020-03-19 2024-04-22 キオクシア株式会社 メモリシステム

Similar Documents

Publication Publication Date Title
US20190252035A1 (en) Decoding method, memory storage device and memory control circuit unit
US9424126B2 (en) Memory controller
JP2012137994A (ja) メモリシステムおよびその制御方法
JP2015018451A (ja) メモリコントローラ、記憶装置およびメモリ制御方法
TWI612527B (zh) 解碼方法、記憶體儲存裝置及記憶體控制電路單元
US9507658B2 (en) Data reading method, memory storage device and memory controlling circuit unit
CN106297883B (zh) 解码方法、存储器存储装置及存储器控制电路单元
US20180006669A1 (en) Decoding method, memory controlling circuit unit and memory storage device
JP2009301194A (ja) 半導体記憶装置の制御システム
US10447314B2 (en) Decoding method, memory storage device and memory control circuit unit
US10324787B2 (en) Decoding method, memory storage device and memory control circuit unit
JP2010079856A (ja) 記憶装置およびメモリ制御方法
JP2013131095A (ja) メモリコントローラ、記憶装置およびメモリ制御方法
KR101053948B1 (ko) 메모리 시스템 및 컴퓨터 시스템
US9996415B2 (en) Data correcting method, memory control circuit unit, and memory storage device
JP4357305B2 (ja) 外部記憶装置
JP5363460B2 (ja) 誤り訂正機能付きコントローラ、誤り訂正機能付き記憶装置、及び誤り訂正機能付きシステム
CN112799874B (zh) 存储器控制方法、存储器存储装置及存储器控制电路单元
JP6479638B2 (ja) ビデオサーバ装置およびデータ書き込み/読み出し方法
JP2014134843A (ja) メモリシステム
CN107301873B (zh) 译码方法、存储器储存装置及存储器控制电路单元
JPH11213692A (ja) メモリ装置
CN112837728B (zh) 存储器控制方法、存储器存储装置及存储器控制电路单元
US11145372B2 (en) Decoding method, memory controlling circuit unit, and memory storage device
CN111435604B (zh) 解码方法、存储器控制电路单元以及存储器存储装置