メモリシステム
【課題】ランダマイズ解除処理による性能低下を改善する。
【解決手段】メモリシステムは、ランダマイズされたランダマイズデータが書き込まれる半導体メモリと、ランダマイズデータの読み出し時、ランダマイズデータのランダマイズを解除しながらバッファにランダマイズ解除後データを格納する第1のモードとランダマイズデータをバッファに格納する第2のモードとを読み出しの用途に応じて切り替えるMPUとを具備する。
【解決手段】メモリシステムは、ランダマイズされたランダマイズデータが書き込まれる半導体メモリと、ランダマイズデータの読み出し時、ランダマイズデータのランダマイズを解除しながらバッファにランダマイズ解除後データを格納する第1のモードとランダマイズデータをバッファに格納する第2のモードとを読み出しの用途に応じて切り替えるMPUとを具備する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データランダマイズ処理機能を有するメモリシステムに関する。
【背景技術】
【0002】
近年、デジタルカメラや携帯型オーディオプレーヤの急速な普及により、大容量の不揮発性半導体メモリの需要が拡大している。そして、不揮発性半導体メモリとしてNAND型フラッシュメモリが広く使用されている。NAND型フラッシュメモリは、複数のメモリセルが直列接続されたNANDストリング構造を備えている。このNANDストリングに含まれるメモリセル数は大容量化に伴い増加し、これに従ってその動作信頼性が低下するという問題があった。
【0003】
そこで、特許文献1等で開示されているように、書き込みデータをランダマイズする方法が採用されている。これにより、NAND型フラッシュメモリのブロック内に書き込むデータを分散し、データパターンの集中を防止している。このような従来のデータランダマイズ制御では、NAND型フラッシュメモリからデータ読み出す場合、ランダマイズ状態のデータのままバッファにデータを格納し、バッファからデータを出力する際にランダマイズの解除処理を行っていた。
【0004】
しかしながら、ランダマイズ処理を比較的単純なデータの正転/反転切り替え等で行っていた場合には出力時の復号にオーバーヘッドが発生することはほとんどないが、M系列(Maximum length code)乱数を用いた場合等、データ位置に応じてランダマイズ処理が変化するケースでは、対応する復号鍵を生成するための処理時間がその都度発生し、性能低下につながる。
【特許文献1】特開2001−237715号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明は、ランダマイズ解除処理による性能低下を改善するメモリシステムを提供する。
【課題を解決するための手段】
【0006】
本発明の一態様によるメモリシステムは、ランダマイズされたランダマイズデータが書き込まれる半導体メモリと、前記ランダマイズデータの読み出し時、前記ランダマイズデータのランダマイズを解除しながらバッファにランダマイズ解除後データを格納する第1のモードと前記ランダマイズデータを前記バッファに格納する第2のモードとを読み出しの用途に応じて切り替えるMPUとを具備する。
【発明の効果】
【0007】
本発明によれば、ランダマイズ解除処理による性能低下を改善するメモリシステムを提供できる。
【発明を実施するための最良の形態】
【0008】
本発明の実施の形態を以下に図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【0009】
[1]メモリシステムの構成
図1を用いて、本発明の一実施形態に係るメモリシステムについて説明する。図1は、本実施形態に係るメモリシステムのブロック図である。
【0010】
図示するように、メモリシステムは、メモリカード1及びホスト機器2を備えている。ホスト機器2は、バスインタフェース14を介して接続されるメモリカード1に対しアクセスを行うためのハードウェア及びソフトウェアを備えている。メモリカード1は、ホスト機器2に接続された時に電源供給を受けて動作し、ホスト機器2からのアクセスに応じた処理を行う。
【0011】
メモリカード1は、ホスト機器2とバスインタフェース14を介して情報の授受を行う。メモリカード1は、NAND型フラッシュメモリチップ(単にNAND型フラッシュメモリ、又はフラッシュメモリと呼ぶことがある)11、フラッシュメモリチップ11を制御するカードコントローラ12、及び複数の信号ピン(第1ピン乃至第9ピン)13を備えている。
【0012】
複数の信号ピン13は、カードコントローラ12と電気的に接続されている。複数の信号ピン13における第1ピン乃至第9ピンに対する信号の割り当ては、例えば図2に示すようになっている。図2は、第1ピン乃至第9ピンと、それらに割り当てられた信号とを示す表である。図2に示すように、データ0乃至データ3は、第7ピン、第8ピン、第9ピン、及び第1ピンにそれぞれ割り当てられている。第1ピンは、カード検出信号に対しても割り当てられている。さらに、第2ピンはコマンドに割り当てられ、第3ピン及び第6ピンは接地電位Vssに、第4ピンは電源電位Vddに、第5ピンはクロック信号に割り当てられている。
【0013】
また、メモリカード1は、ホスト機器2に設けられたスロットに対して挿抜可能なように形成されている。ホスト機器2に設けられたホストコントローラ(図示せず)は、これら第1ピン乃至第9ピンを介してメモリカード1内のカードコントローラ12と各種信号及びデータを通信する。例えば、メモリカード1にデータが書き込まれる際には、ホストコントローラは、書き込みコマンドを、第2ピンを介してカードコントローラ12にシリアルな信号として送出する。このとき、カードコントローラ12は、第5ピンに供給されているクロック信号に応答して、第2ピンに与えられる書き込みコマンドを取り込む。
【0014】
ここで、前述したように、書き込みコマンドは、第2ピンのみを利用してカードコントローラ12にシリアルに入力される。コマンドの入力に割り当てられている第2ピンは、図2に示すように、データ3用の第1ピンと接地電位Vss用の第3ピンとの間に配置されている。複数の信号ピン13とそれに対するバスインタフェース14は、ホスト機器2内のホストコントローラとメモリカード1とが通信するのに使用される。
【0015】
これに対し、フラッシュメモリ11とカードコントローラ12との間の通信は、NAND型フラッシュメモリ用のインタフェースによって行われる。従って、ここでは図示しないが、フラッシュメモリ11とカードコントローラ12とは例えば8ビットの入出力(I/O)線により接続されている。
【0016】
例えば、カードコントローラ12がフラッシュメモリ11にデータを書き込む際には、カードコントローラ12は、これらI/O線を介してデータ入力コマンド80H、カラムアドレス、ページアドレス、データ、及びプログラムコマンド10Hをフラッシュメモリ11に順次入力する。ここで、コマンド80Hの“H”は16進数を示すものであり、実際には“10000000”という8ビットの信号が、8ビットのI/O線にパラレルに与えられる。つまり、このNAND型フラッシュメモリ用のインタフェースでは、複数ビットのコマンドがパラレルに与えられる。
【0017】
また、NAND型フラッシュメモリ用のインタフェースでは、フラッシュメモリ11に対するコマンドとデータが同じI/O線を共用して通信されている。このように、ホスト機器2内のホストコントローラとメモリカード1とが通信するインタフェースと、フラッシュメモリ11とカードコントローラ12とが通信するインタフェースとは異なる。
【0018】
尚、本実施形態では、NAND型フラッシュメモリ11及びカードコントローラ12はメモリカード1に搭載されているが、メモリカード1に搭載されることに限定されない。例えば、PC等の電子機器内に組み込み搭載される態様でもよい。また、本実施形態では、半導体メモリとしてNAND型フラッシュメモリ11を例に挙げているが、例えば、NOR型フラッシュメモリ、磁気ランダムアクセスメモリ(MRAM:Magnetic Random Access Memory)等に置き換えることも可能である。
【0019】
[2]カードコントローラの構成
図3を用いて、図1に示すカードコントローラ12の内部構成について説明する。図3は、本実施形態に係るカードコントローラ12のブロック図である。
【0020】
カードコントローラ12は、フラッシュメモリ11内部の物理状態(例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか)を管理する。そして、NAND型フラッシュメモリ11へのデータの書き込みや読み出しを制御する。
【0021】
図示するように、カードコントローラ12は、ホストインタフェースモジュール21、MPU(Micro Processing Unit)22、フラッシュコントローラ23、ROM(Read Only Memory)24、RAM(Random Access Memory)25、及びスクランブル回路26を有する。
【0022】
ホストインタフェースモジュール21は、カードコントローラ12とホスト機器2との間のインタフェース処理を行う。
【0023】
MPU22は、メモリカード1全体の動作を制御する。MPU22は、例えばメモリカード1が電源供給を受けたときに、ROM24に格納されているファームウェア(制御プログラム)をRAM25上に読み出して所定の処理を実行することにより、各種のテーブルをRAM25上に作成する。また、MPU22は、ホスト機器2から書き込みコマンド、読み出しコマンド、消去コマンドを受け取り、フラッシュメモリ11に対して所定の処理を実行する。さらに、MPU22は、スクランブル回路26を制御して、書き込みデータのスクランブル及びスクランブル解除を行う。書き込みデータのスクランブル及びスクランブル解除については、後に詳述する。
【0024】
ROM24は、MPU22により制御される制御プログラム等を格納する。RAM25は、MPU22の作業エリアとして使用され、制御プログラムや各種のテーブル(表)を記憶する。さらに、RAM25は、予め作成されたスクランブルテーブル27を保持する。スクランブルテーブル27については、後に詳述する。フラッシュコントローラ23は、カードコントローラ12とフラッシュメモリ11との間のインタフェース処理を行う。
【0025】
[3]NAND型フラッシュメモリの構成
図4を用いて、NAND型フラッシュメモリ11の内部構成について簡単に説明する。図4は、本実施形態に係るNAND型フラッシュメモリ11のブロック図である。図示するようにNAND型フラッシュメモリ11は、メモリセルアレイ30、ページバッファ28、及びロウデコーダ29を備えている。
【0026】
メモリセルアレイ30は、複数のメモリブロックBLK0、BLK1、…を含んでいる。データの消去は、メモリブロックBLKn単位で行われる。すなわち、同一メモリブロックBLKn内のデータは一括して消去される。メモリブロックBLKnの各々は、複数のメモリセルトランジスタを備えている。また、メモリブロックBLKn内には、複数のワード線WL0、WL1、…と、ワード線WL0、WL1、…に直交するビット線BL0、BL1、…とが設けられている。以下、ワード線WL0、WL1、…を特に区別しない場合には単にワード線WLと呼び、ビット線BL0、BL1、…を特に区別しない場合には単にビット線BLと呼ぶ。同一行にあるメモリセルトランジスタは、同一のワード線WLに共通接続されている。また、同一列にあるメモリセルトランジスタは、複数のメモリセルトランジスタ単位でビット線BLに共通接続されている。尚、データの書き込み及び読み出しは、一本のワード線WLに接続される複数のメモリセルトランジスタの集合毎に行われ、このメモリセルトランジスタの集合を「1ページ」と呼ぶ。読み出し時及び書き込み時において、ロウアドレスによっていずれかのワード線WLが選択され、カラムアドレスによっていずれかのビット線BLが選択される。図4の例であると、フラッシュメモリ11の各メモリブロックBLKnは、例えば128ページを含んでいる。
【0027】
ページバッファ28は、フラッシュメモリ11へのデータ入出力を行い、データを一時的に保持する。ページバッファ28が保持可能なデータサイズは、各メモリブロックBLKnのページサイズと同じである。データ書き込み等の際、ページバッファ28は、フラッシュメモリ11に対するデータ入出力処理を、自身の記憶容量に相当する1ページ分の単位で実行する。また、読み出しの際は、1ページ分のメモリセルのデータをページバッファ28に転送し、I/O線を介してページバッファ28からシリアルに読み出される。
【0028】
ロウデコーダ29は、データの書き込み時及び読み出し時において、いずれかのワード線WLを選択する。
【0029】
本実施形態では、図5に示すように、例えば、1メモリブロックBLKnは、8kカラム×128ページ×8I/O(1024kバイト)で構成される。そして、1024バイトに対して誤り訂正符号αを含む冗長部を付加し、1セグメントを構成する。従って、1ページに8個のセグメントが存在するので、1ブロックあたり1024個(8×128)のセグメントが存在する。尚、図5は一例であり、これに限定されない。
【0030】
[4]メモリブロックの構成
図6を用いて、メモリブロックBLKnの詳細な構成について説明する。図6は、メモリブロックBLKnの等価回路図である。
【0031】
図示するように、メモリブロックBLKnは、ワード線WL方向に沿って配置された(m+1)個のNANDストリングを備えている(mは1以上の自然数)。各々のNANDストリングは、選択トランジスタST1、ST2、及び64個のメモリセルトランジスタMTを備えている。NANDストリング内に含まれるメモリセルトランジスタMTの数は一例に過ぎず、例えば8個、16個、32個、128個等であってもよい。各々のNANDストリングに含まれる選択トランジスタST1は、ドレインがビット線BL0〜BLmのいずれかに接続され、ゲートがセレクトゲート線SGDに共通接続されている。また、選択トランジスタST2は、ソースがソース線SLに共通接続され、ゲートがセレクトゲート線SGSに共通接続されている。
【0032】
メモリセルトランジスタMTの各々は、半導体基板上にゲート絶縁膜を介在して形成された積層ゲートを備えたMOSトランジスタである。積層ゲートは、ゲート絶縁膜上に形成された電荷蓄積層(フローティングゲート)と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを含んでいる。各々のNANDストリングにおいて、64個のメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、各々の電流経路が直列接続されるように配置されている。そして、最もソース側に位置するメモリセルトランジスタMTから順に、制御ゲートがワード線WL0〜WL63にそれぞれ接続されている。従って、ワード線WL63に接続されたメモリセルトランジスタMTのドレインは選択トランジスタST1のソースに接続され、ワード線WL0に接続されたメモリセルトランジスタMTのソースは選択トランジスタST2のドレインに接続されている。
【0033】
ワード線WL0〜WL63は、メモリブロックBLKn内のNANDストリング間で、メモリセルトランジスタMTの制御ゲートを共通に接続している。つまり、メモリブロックBLKn内において同一行にあるメモリセルトランジスタMTの制御ゲートは、同一のワード線WLに接続される。また、ビット線BL0〜BLmは、メモリブロックBLKn間で、選択トランジスタST1のドレインを共通に接続している。つまり、複数のメモリブロックBLKn内において同一列にあるNANDストリングは、同一のビット線BLに接続される。
【0034】
尚、以下では、メモリセルトランジスタMTを単にメモリセルMCと呼ぶことがある。
【0035】
上記メモリセルMCの各々は、4値(“00”データ、“01”データ、“10”データ、又は“11”データ)のデータ、つまり2ビットデータを保持可能である。そしてこの2ビットには、2つの異なるページアドレスが割り当てられる。具体的には、2ビットデータのうち下位ビットに下位ページアドレスが割り当てられ、上位ビットに上位ページアドレスが割り当てられる。従って、本実施形態に係る構成であると、メモリブロックBLKnは128ページを含むから、上位ページが64ページであり、下位ページが64ページ存在する。
【0036】
図7を用いて、上記メモリセルMCの閾値について説明する。図7は、メモリセルMCの閾値分布を示すグラフであり、横軸が閾値電圧Vthを示し、縦軸がメモリセルの存在確率を示す。
【0037】
図示するように、メモリセルMCは、閾値電圧Vthの低い順に“11”、“01”、“10”、“00”の4つのデータを保持出来る。“11”データを保持するメモリセルの閾値電圧Vthは、Vth<0Vである。“01”データを保持するメモリセルの閾値電圧Vthは、0V<Vth<Vth1である。“00”データを保持するメモリセルの閾値電圧Vthは、Vth1<Vth<Vth2である。“10”データを保持するメモリセルの閾値電圧Vthは、Vth2<Vth<Vth3である。
【0038】
図8を用いて、上記4値のデータのメモリセルMCへの書き込み方法について簡単に説明する。図8は、メモリセルの閾値分布を示すグラフであり、書き込み時おけるメモリセルの閾値電圧Vthの変化の様子を示している。データは1ページに対して一括して書き込まれる。また、データの書き込みは、まず下位ページから行い、次に上位ページについて行う。
【0039】
書き込みにあたって、メモリセルは消去状態にある。すなわち、メモリセルの閾値電圧Vthは負の値であり、“11”データを保持した状態である。その状態で、まず下位ページについてデータの書き込みを行う。下位ページが“1”の場合には、フローティングゲートに電子は注入されず、閾値電圧Vthは不変である。下位ページが“0”の場合には、フローティングゲートに電子が注入され、閾値電圧Vthは正の方向へ変化し、約Vth1<Vth<Vth2となる。
【0040】
次に、上位ページの書き込みを行う。まず、下位ページが“1”であった場合について説明する。下位ページが“1”で、尚かつ上位ページも“1”である場合、上位ページの書き込み時においてもフローティングゲートに電子は注入されず、閾値電圧Vthは負の値を維持する。その結果、メモリセルには“11”が保持される。上位ページが“0”の場合、フローティングゲートに電子が注入される。その結果、閾値電圧Vthは負から正の方向へ変化し、0V<Vth<Vth1となる。すなわち、メモリセルには“01”が書き込まれる。
【0041】
次に、下位ページが“0”であった場合について説明する。下位ページが“0”で、上位ページが“0”である場合、上位ページの書き込み時にはフローティングゲートに電子が注入されない。よって、下位ページの書き込みの結果の値を維持する。すなわち、Vth1<Vth<Vth2であり、その結果、メモリセルには“00”が書き込まれる。上位ページが“1”の場合、さらにフローティングゲートに電子が注入される。その結果、閾値電圧Vthはさらに正の方向へ変化し、Vth2<Vth<Vth3となる。すなわち、メモリセルには“10”が書き込まれる。
【0042】
[5]データ書き込み
本実施形態におけるデータ書き込みでは、書き込みデータをランダマイズしてNAND型フラッシュメモリ11に書き込まれる。このランダマイズ方法について以下に説明する。
【0043】
[5−1]ランダマイズの基本方針
図9を用いて、ランダマイズの基本方針について説明する。本実施形態の書き込み動作では、カラム方向及びページ方向の少なくとも一方において、データランダマイズを行う。尚、本実施形態において、カラム方向とはワード線の延在方向であり、ページ方向とはビット線及びNANDストリングの延在方向である(図6参照)。
【0044】
ランダマイズの手法としては、オリジナルのデータ列に乱数値を加えた値をランダマイズデータとして処理する。この際、例えばECCフレームを基本単位とし、このECCフレーム内で同じ乱数列が再度現れることのないM系列乱数を選択する。また、同一カラム内(1カラム=8ビット)でも同じ乱数値が現れないようにする。例えば、ECCフレーム=1KBとした場合、8KB以上の周期を持つ乱数回路を使用する。具体的には、14ビット/16383周期である。
【0045】
図9に示すように、カラム方向のランダマイズは、M系列乱数に基づくスクランブル処理によって実現する。ページ方向のランダマイズは、先頭ページの乱数値に基づいてページアドレス分のM系列乱数シフトを加えて実現する場合、ワード線アドレスに基づいて正転/反転の制御により実現する場合等がある。このページ方向のランダマイズにおいて、シフト量は、ブロック内の論理ページアドレスで判別する。尚、物理ページアドレスと論理ページアドレスが異なる可能性があるため、予めブロック先頭ページの基準シフト量を把握しておくことが望ましい。
【0046】
図10を用いて、上述したランダマイズを実現するためのM系列の擬似乱数列発生回路39の一例について説明する。フィボナッチ型のM系列の擬似乱数列発生回路39は、1kカラムアドレス周期でランダムデータを発生し、NAND型フラッシュメモリ11へ書き込むデータと排他的論理和をとる。具体的には、図10に示すように、擬似乱数列発生回路39は、シフトレジスタR1〜R14、排他的論理和(エクスクルーシブORゲート)XOR1〜XOR5で構成される。
【0047】
シフトレジスタR1〜R14のそれぞれは、直列に接続されている。シフトレジスタR2、R3、R4、R5、R6、R7、R10、R12の各入力端子は、前段のシフトレジスタR3、R4、R5、R6、R7、R8、R11、R13の各出力端子に接続されている。シフトレジスタR1の出力端子は排他的論理和XOR1に接続され、この排他的論理和XOR1はシフトレジスタR1の入力端子に接続されている。排他的論理和XOR1の出力端子は排他的論理和XOR2の入力端子に接続され、排他的論理和XOR2はシフトレジスタR8の入力端子に接続されている。排他的論理和XOR2の出力端子は排他的論理和XOR3の入力端子に接続され、排他的論理和XOR3はシフトレジスタR9の入力端子に接続されている。排他的論理和XOR3の出力端子は排他的論理和XOR4の入力端子に接続され、排他的論理和XOR4はシフトレジスタR11の入力端子に接続されている。排他的論理和XOR4の出力端子は排他的論理和XOR5の入力端子に接続され、排他的論理和XOR5はシフトレジスタR13の入力端子に接続されている。排他的論理和XOR5の出力端子はシフトレジスタR14の入力端子に接続されている。
【0048】
[5−2]ランダマイズ方法1
本実施形態に係るランダマイズ方法1では、上述した図10のM系列の擬似乱数列発生回路39を用いて、カラム方向にM系列乱数を発生させ、データスクランブルを行う。
【0049】
図11を用いて、ランダマイズ方法1について説明する。図11に示すように、スクランブル回路26は、ビット線毎にM系列の擬似乱数列発生回路39と排他的論理和からなる乱数加算回路33を備えている。擬似乱数列発生回路39はビット線毎にM系列の乱数列を発生させ、この乱数列と入力データを乱数加算回路33で加算し、スクランブルされたデータを出力している。
【0050】
擬似乱数列発生回路39のそれぞれは、図10に示す同じ回路構成となり、生成多項式も同一のものを採用するが、擬似乱数列発生回路39の初期値はビット線毎に異なる。周期は、原則、ECCデータ処理単位よりも大きい値(例えば1024バイト以上)を採用する。擬似乱数列発生回路39のシード値は、ビット線毎にそれぞれ与えられる。このシード値は、パラメータとして予め準備されており、例えばDMA(Direct Memory Access)転送の開始時又はオフセットの切り替え時に擬似乱数列発生回路39へロードされる。
【0051】
このようなスクランブル回路26を用いたランダマイズ方法1によるデータ書き込みは、次のように行われる。
【0052】
まず、ホスト機器2からデータの書き込み命令及び書き込みデータがメモリカード1に与えられ、カードコントローラ12のホストインタフェースモジュール21が書き込み命令及び書き込みデータを受信する。
【0053】
すると、MPU22は、受信した書き込みデータを基に書き込むべきメモリセルMCのアドレスを算出する。そして、このアドレスに基づいて、ある特定のシード値を持った擬似乱数列発生回路39により、ビット線毎の初期値を用いてカラム方向にランダム化した擬似乱数列を生成する。一方、ホストインタフェースモジュール21で受信された書き込みデータがスクランブル回路26に入力され、乱数加算回路33により書き込みデータと上述した擬似乱数列とが加算され、乱数化されたデータがページ毎にNAND型フラッシュメモリ11に書き込まれる。
【0054】
尚、読み出し時は、乱数加算回路33で使用した擬似乱数列と同じ乱数列を用いて、乱数減算回路(図示せず)で減算処理を行い、ページ毎にデータを読み出す。
【0055】
[5−3]ランダマイズ方法2
本実施形態に係るランダマイズ方法2は、上述したランダマイズ方法1におけるM系列乱数のシード値を固定値ではなく、ページアドレス毎に切り替えて使用する例である。物理ページアドレスがページコピーによって変化する可能性がない場合は物理ページアドレスに基づいたインデックスを決定する。物理ページアドレスがページコピーによって変化する可能性がある場合は予め物理ページと論理ページの関係性、又はインデックスそのものをデータの冗長部領域に記録しておき、ブロックに対する転送開始前に予め取得し、以降の転送についてはハードウェア(HW)が自動的にシード値を更新しながら転送する。
【0056】
具体的には、ランダマイズ方法2は、ページ方向ではページアドレス毎にNビットシフトさせた擬似乱数回路の初期値を生成し、この初期値を使用してカラム方向ではM系列乱数を用いてセグメント単位で擬似乱数列を生成することで、ページ方向及びカラム方向の両方において、データスクランブルを行う。
【0057】
図12を用いて、カラム方向のM系列乱数を用いたデータスクランブルについて説明する。各セグメント内において、M系列の乱数発生周期をI/Oの数で割った回数だけシフトさせた値を初期値(スタートビット)として与える。例えば、M14−1のM系列(16383通り)の乱数発生回路を使用した場合、NAND型フラッシュメモリの8個のI/Oに対しては、2048回シフトした値を各セグメントに対して初期値として与える。
【0058】
尚、上記の例では、各I/Oに対して均等にシフト回数を規定した場合であるが、これに限定されず、各I/O間でシフトさせる回数は異なっていてもよい。
【0059】
図13を用いて、ページ方向のデータスクランブルについて説明する。例えば、各I/Oの初期値を、ページ方向において各々N回シフトさせる。図13に示す1ビットシフトさせた例の場合、Page−0が「A1」からスタートするのに対し、Page−1はPage−0の初期値A1から1ビットシフトさせた「B1」からスタートし、Page−2はPage−1の初期値B1から1ビットシフトさせた「C1」からスタートする。
【0060】
次に、図14を用いて、上述したランダマイズ方法2を実現するためのスクランブル回路26の概略的な構成について説明する。
【0061】
図14に示すように、ランダマイズ方法2のスクランブル回路26は、データ入力部31、データ出力部32、乱数加算回路33、乱数減算回路34、セグメントアドレス発生回路35、初期値発生回路36、ページアドレス発生回路37、初期値Nビットシフト回路38、擬似乱数列発生回路39を備えている。
【0062】
このようなスクランブル回路26を用いたデータ書き込みは次のように行われる。
【0063】
まず、ホスト機器2からデータの書き込み命令及び書き込みデータがメモリカード1に与えられ、カードコントローラ12のホストインタフェースモジュール21が書き込み命令及び書き込みデータを受信する。
【0064】
すると、MPU22は、受信した書き込みデータを書き込むべきメモリセルMCのセグメントアドレス及びページアドレスを算出する。これに基づいて、スクランブル回路26内のセグメントアドレス発生回路35がセグメントアドレスを発生し、ページアドレス発生回路37がページアドレスを発生する。
【0065】
一方、ホストインタフェースモジュール21で受信された書き込みデータはデータ入力部31に入力され、乱数加算回路33により書き込みデータと擬似乱数列とが加算され、乱数化されたデータがページ毎にNAND型フラッシュメモリ11に書き込まれる。
【0066】
ここで、擬似乱数列は、擬似乱数列発生回路39で、次のように生成される。セグメント毎の初期値(スタートビット)が初期値発生回路36により発生される。セグメントの初期値は、図12のランダマイズ方法2のカラム方向の擬似乱数化により決定される。そして、初期値Nビットシフト回路38により、図13で説明したようにページアドレス毎に初期値をNビットだけシフトさせる。以上のような方法でカラム方向及びページ方向の両方において擬似乱数化した擬似乱数列を、擬似乱数列発生回路39で生成する。
【0067】
尚、読み出し時は、乱数加算回路33で使用した擬似乱数列と同じ乱数列を用いて、乱数減算回路34で減算処理を行い、データ出力部32を介してページ毎にデータを読み出す。
【0068】
図15を用いて、図14の擬似乱数列発生回路39の一例について説明する。フィボナッチ型の擬似乱数列発生回路39は、1k+αカラムアドレス周期で擬似乱数データを発生し、NAND型フラッシュメモリ11へ書き込むデータと排他的論理和をとる。具体的には、図15に示すように、擬似乱数列発生回路39は、第1のシフトレジスタR1〜R14、第2のシフトレジスタ50、排他的論理和(エクスクルーシブORゲート)XOR1〜XOR5で構成される。従って、図10の擬似乱数列発生回路39に、第2のシフトレジスタ50が付加された構成となる。第2のシフトレジスタ50の出力端子は、第1のシフトレジスタR1〜R14のそれぞれに接続されている。尚、第1のシフトレジスタR1〜R14はカラム方向のデータスクランブルに使用され、第2のシフトレジスタ50はページ方向のデータスクランブルに使用され、各ページの初期値を発生させる。そして、擬似乱数列発生回路39により生成されたM系列擬似乱数の出力は、乱数加算回路33又は乱数減算回路34に入力される。
【0069】
[5−4]ランダマイズ方法3
ランダマイズ方法3は、上記ランダマイズ方法2の変形例であり、ページ方向にNビットシフトするだけでなく、さらに、ワード線WLのアドレス(以下、ワード線アドレス又はページアドレスと呼ぶ)に応じて反転・正転する。以下、ここでは、図3のRAM25が保持するスクランブルテーブル27と共に、ランダマイズ方法3の上記ランダマイズ方法2と異なる点について主に説明する。
【0070】
図16は、ランダマイズ方法3において用いるスクランブルテーブル27の概念図である。このスクランブルテーブル27は、外部から入力された1ページの書き込みデータを一定の規則に従って変えるためのスクランブル方式を保持している。
【0071】
図示するように、スクランブルテーブル27は、ワード線アドレスを例えば“4”で割った余りA毎に、当該ワード線アドレスに対応したデータの上位ページと下位ページの変え方を保持している。より具体的には、ワード線アドレスを“4”で割った余りAが“0”である場合には、上位ページ及び下位ページに書き込むべきデータを正転させて書き込む。つまり、入力されたデータを変えずにそのままメモリセルMCへ書き込む。余りAが“1”である場合には、上位ページ及び下位ページに書き込むデータを、それぞれ反転及び正転させて書き込む。余りAが“2”である場合には、上位ページ及び下位ページに書き込むデータを、それぞれ正転及び反転させて書き込む。余りAが“3”である場合には、上位ページ及び下位ページに書き込むデータを、共に反転させて書き込む。
【0072】
上記のようにワード線アドレスを“4”で割った余りA毎にスクランブル方式を有するということは、換言すれば、ワード線WLを4つのグループに分類し、グループ毎にスクランブル方式を変えていることに相当する。
【0073】
図17は、上記の方法でワード線WLを4つのグループに分類した結果を示す。図示するように、例えばワード線WL0〜WL63のワード線アドレスを、それぞれ“0”〜“63”とすると、ワード線WL0、WL4、WL8、…、WL60についての余りAが“0”となり、これらのワード線WLが第1グループに分類される。また、ワード線WL1、WL5、WL9、…、WL61についての余りAが“1”となり、これらのワード線WLが第2グループに分類される。さらに、ワード線WL2、WL6、WL10、…、WL62についての余りAが“2”となり、これらのワード線WLが第3グループに分類される。そして、ワード線WL3、WL7、WL11、…、WL63についての余りAが“3”となり、これらのワード線WLが第4グループに分類される。その上で、第1〜第4グループ毎に、それぞれ異なるスクランブル方式が採用される。スクランブル回路26は、上記スクランブル方式に従って、外部から入力されたデータのスクランブルを行う。
【0074】
上記スクランブルテーブル27を用いた場合の具体例について、図18を用いて説明する。本図は、全メモリセルMCに対して“00”を書き込む場合において、実際の各メモリセルMCに対して書き込まれたデータを示す。
【0075】
図示するように、第1グループに属するワード線WL0、WL4、WL8、…、WL60に接続されたメモリセルMCには、入力データ“00”がそのまま書き込まれる。第2グループに属するワード線WL1、WL5、WL9、…、WL61に接続されたメモリセルMCには、上位ページが反転されたデータ“10”が書き込まれる。第3グループに属するワード線WL2、WL6、WL10、…、WL62に接続されたメモリセルMCには、下位ページが反転されたデータ“01”が書き込まれる。そして第4グループに属するワード線WL3、WL7、WL11、…、WL63に接続されたメモリセルMCには、上位ページ及び下位ページが共に反転されたデータ“11”が書き込まれる。
【0076】
次に、図19を用いて、上述したランダマイズ方法3を実現するためのスクランブル回路26の概略的な構成について説明する。図19に示すように、ランダマイズ方法3のスクランブル回路26は、図14のランダマイズ方法2のスクランブル回路26に、ページ方向スクランブル回路40、データ反転回路41、42をさらに備えている。
【0077】
このようなスクランブル回路26を用いたデータ書き込みは次のように行われる。まず、上述したランダマイズ方法2と同様の方法で、カラム方向及びページ方向の両方において擬似乱数化した擬似乱数列を、擬似乱数列発生回路39で生成する。そして、乱数加算回路33により書き込みデータと擬似乱数列とが加算され、乱数化されたデータが生成される。さらに、ランダマイズ方法3では、ページ方向スクランブル回路40において、図13に示すスクランブルテーブル27を用いてページ方向のデータスクランブルを実施し、データ反転回路41により乱数化されたデータに対してデータ反転を行う。
【0078】
具体的には、MPU22は、ページアドレス発生回路37で発生されたページアドレス(以下、ワード線アドレスと呼ぶ)を用いて、このワード線アドレスに対応するワード線WLが第1〜第4グループのいずれに相当するかを判断する。すなわち、ワード線アドレスをM、グループ数を“N”(本実施形態ではN=“4”)とすると、A=M mod Nなる計算を行う。余りAがそれぞれ“0”〜“3”の場合、当該ワード線アドレスに対応するワード線は第1〜第4グループのそれぞれに属することが分かる。
【0079】
次に、MPU22は、RAM25に保持される図16のスクランブルテーブル27を参照する。そして、判断されたグループに応じて、スクランブル方式を選択する。例えば、A=“3”であり、当該ワード線アドレスに対応するワード線が第4グループに属すると判断された場合には、MPU22は書き込みデータの上位ページ及び下位ページの両方を反転させるスクランブル方式を選択し、その旨をスクランブル回路26に命令する。
【0080】
すると、スクランブル回路26内のページ方向スクランブル回路40及びデータ反転回路41は、MPU22によって選択されたスクランブル方式に従って、書き込みデータをスクランブルする。例えば、第4グループに属するワード線WLの上位ページデータを書き込む場合には、当該ページデータの全てを反転させる。
【0081】
尚、データの読み出しの際には、外部から与えられたアドレスに従ってメモリセルからデータが読み出されると共に、MPU22は当該アドレスに対応したスクランブル方式をスクランブルテーブル27から読み出す。そして、読み出したスクランブル方式に応じて、読み出しデータを解読する。例えば、第3グループに属するワード線の下位ページデータを読み出す場合には、スクランブル方式は図13の通り「反転」であるから、MPU22の命令によりデータ反転回路42は読み出しデータを反転させて外部へ出力する。このような読み出し方法を行うため、データのページ毎のコピーは、同一のグループに属するワード線間に制限される。
【0082】
[6]データ読み出し
[6−1]データ読み出しの概要
図20を用いて、本発明の一実施形態におけるデータ読み出しの概要について説明する。本発明の一実施形態における読み出し動作では、MPU22の制御により、上述した方法でランダマイズされたデータが、読み出しの用途に応じて第1のモード又は第2のモードに切り替えられて読み出される。
【0083】
ここで、第1のモードは、ランダマイズされたデータのランダマイズを解除しながらバッファにランダマイズ解除後のデータを格納する。さらに、第1のモードは、これと並行してランダマイズデータに対してECC処理を実施し、誤り検出したデータ位置情報を用いてバッファに格納されたランダマイズ解除後のデータに対して訂正処理を行う。すなわち、第1のモードでは、バッファ内には最終的にランダマイズ解除された状態でECC訂正を終えたデータが残り、そのままの状態でデータ出力を行える。
【0084】
一方、第2のモードは、ランダマイズされたデータをそのままバッファに格納する。さらに、第2のモードは、これと並行してランダマイズされたデータにECC処理を実施し、誤り検出したデータ位置情報を用いてバッファに格納されたランダマイズ状態のデータに対して訂正処理を行う。すなわち、第2のモードでは、バッファ内にはランダマイズ状態のままでECC訂正を終えたデータが残る。
【0085】
このような本実施形態の読み出し動作では、NAND型フラッシュメモリ11内のデータの冗長部領域にランダマイズ対象の有無の属性ビットを付与しておき、予めランダマイズの自動解除(第1のモード)又は非解除(第2のモード)の指定を行った上で、データのバッファ格納処理を行う。ランダマイズ対象の有無が読み出し前に不明である場合又は基準シフト量が不明である場合等は、データの冗長部領域から属性情報を取得するための処理も必要となる。尚、この属性情報は、ランダマイズの対象外になっている。
【0086】
ここで、図21を用いて、NAND型フラッシュメモリ11に格納されるデータフォーマットの一例について説明する。このデータフォーマットは、ページサイズが8Kバイトの例である。図示するように、データフォーマットは、Data0〜15、ECCフレーム冗長部を有する。ECCフレーム冗長部は、データ部とパリティ部とで構成される。データ部は、ランダマイズフラグ、データ反転フラグ、ページ内ランダマイズフラグ、reserved、データ有効フラグ0、データ有効フラグ1、ランダマイズシフト量を有している。パリティ部は、ECCパリティを有している。また、各ページには、ECCフレーム冗長部内にページ冗長部が付与されている。このようなデータフォーマットでは、ランダマイズ対象の有無の属性ビットは、ページ内ランダマイズフラグとランダマイズシフト量とを合わせた領域(データの冗長部領域)により判断される。本図のデータフォーマットにおいて、ランダマイズシフト量は、ページ内ランダマイズ対象外である。ランダマイズシフト量以外のデータ部において、ハードウェア管理情報の先頭の1バイトはランダマイズ対象外となる。
【0087】
尚、上述した図20のデータフローでは、ECCパリティは、NAND型フラッシュメモリ11内に最終的に書き込まれるデータに対して演算を行い生成する。つまり、ランダマイズ対象データであれば、ランダマイズ状態のデータに対してECC処理を実行する。よって、ECCデコード処理は、NAND型フラッシュメモリ11上からの読み出しデータそのものに対して実施している。
【0088】
しかし、本実施形態におけるECC処理は、ランダマイズ対象データであっても、ランダマイズされたデータに対して行うことに限定されず、ECC処理をオリジナルデータに基づいて演算し、その後、ECCパリティも含めてランダマイズを実施してもよい。
【0089】
例えば、図22に示すように、第1のモードは、ランダマイズされたデータのランダマイズを解除しながらバッファにランダマイズ解除後のデータを格納しつつ、ランダマイズ解除後データに対してECC処理及び誤り位置に対する訂正処理を行う。一方、第2のモードでは、ランダマイズされたデータをそのままバッファに格納しつつ、ECC処理はランダマイズ解除後データに対して行い、ランダマイズデータに対して誤り位置に対する訂正処理を行う。
【0090】
尚、ランダマイズ処理そのものは乱数値とデータの排他的論理輪を取った結果であるため、ECC演算のために使用したデータとバッファに格納されたデータとの状態(ランダマイズの有無)が異なっていても正しく訂正を行うことは可能である。
【0091】
[6−2]モード切り替え
本実施形態では、MPU22の制御により、データ読み出し前にランダマイズの解除(第1のモード)又は非解除(第2のモード)のモード切り替えが行われる。
【0092】
まず、上述した第1のモードであるランダマイズ解除モードを使用するケースは、例えば、以下の場合が挙げられる。
【0093】
(1a)ホスト機器2に対してデータを出力する場合。
【0094】
(1b)ファームウェアが参照する管理データを取得する場合。
【0095】
(1c)データマージが必要になる場合。
【0096】
上記(1a)は、NAND型フラッシュメモリ11内のデータをホスト機器2に対して読み出す場合である。この場合、ランダマイズされたデータのランダマイズを解除しながらページバッファ28にランダマイズ解除後のデータを格納し、ランダマイズ解除後のデータが読み出される。
【0097】
上記(1b)は、ユーザではなく、コントローラ12が管理している管理データを、ファームウェアの処理でNAND型フラッシュメモリ11のバッファから取得する場合である。この場合、ランダマイズされたデータのランダマイズを解除しながらページバッファ28にランダマイズ解除後のデータを格納し、ランダマイズ解除後のデータが読み出される。
【0098】
上記(1c)は、NAND型フラッシュメモリ11上のデータとホスト機器2からの書き込みデータとをマージして新たにECCパリティを生成し、NAND型フラッシュメモリ11に対して書き込みを行う場合である。つまり、ECCフレームが例えば1KBであり、ホスト機器2の基本データ単位が512Bである場合、NAND型フラッシュメモリ11上の1KB中の512Bと組み合わせて1KBのフレームを新たに構成する必要がある。
【0099】
具体的には、図23に示すように、ある論理セクタXへの上書きが発生し、ECCフレームのアラインに合わない位置からの書き込みであった場合(例えば図21のData0から始まるページに対してData1から書き込まれた場合)は、ランダマイズを解除しながらデータを読み出し、このランダマイズ解除後のデータとホスト機器2からのライトデータとをマージ処理した後、新たにランダマイズを掛けてNAND型フラッシュメモリ11に書き込む。このような場合は、第1のモードにより、ランダマイズされたデータのランダマイズを解除しながらページバッファ28にランダマイズ解除後のデータを格納し、ランダマイズ解除後のデータが読み出されることになる。
【0100】
次に、上述した第2のモードであるランダマイズ非解除モードを使用するケースは、例えば、以下の場合が挙げられる。
【0101】
(2a)NAND型フラッシュメモリ11上のデータの属性が不明の場合。
【0102】
(2b)消去済みブロックかどうかの判定処理を行う場合。
【0103】
(2c)誤り位置に対してカラム単位の訂正を実施する場合。
【0104】
上記(2a)は、NAND型フラッシュメモリ11上のデータがランダマイズ状態か否かが不明である場合である。
【0105】
上記(2b)は、NAND型フラッシュメモリ11のブロックが、all“0”となっている消去済みブロックかどうかの判定を行うために、生データ(ランダマイズ状態のデータ)を参照する必要がある場合である。
【0106】
上記(2c)は、NAND型フラッシュメモリ11上でいわゆる引っ越し処理を行う際に、誤りが発生した位置のカラムに対して訂正を行う場合である。例えば、図24に示すように、ある論理セクタXへの上書きが発生した後で、少し間を空けた位置から書き込みが継続した場合、その間の空間を埋めるための前引っ越し処理が発生する。
【0107】
具体的には、NAND型フラッシュメモリ11の持つページコピー機能を使って、NAND型フラッシュメモリ11のページバッファ28に残っている引っ越し元のデータに対して誤り位置のみコントローラ12から訂正処理を行って書き戻しを行う。ここで、NAND型フラッシュメモリ11内の引っ越し元のデータは以前にランダマイズ状態で書き込んだデータであり、訂正後のデータもランダマイズ状態で書き戻す必要がある。このため、カラム単位の訂正前に実施するデータ読み出し結果は、ランダマイズ状態のままページバッファ28に格納する必要がある。
【0108】
尚、第1及び第2のモードとなるケースは、上述した例に限定されない。また、第1のモードの一例として挙げた上記ケースであっても第2のモードで使用することは可能であり、第2のモードの一例として挙げた上記ケースであっても第1のモードで使用することも可能である。
【0109】
[7]本実施形態の効果
ページ方向及びカラム方向の少なくとも一方で同一データが連続しないように書き込みデータをスクランブルしてあるNAND型フラッシュメモリ11において、スクランブルデータを読み出す場合、読み出しの用途に応じて2つの読み出しモードの切り替えを行うことにより、ランダマイズ解除処理による性能低下を最小限に留めることが可能となる。
【0110】
具体的には、ランダマイズされたデータの読み出し動作において、ランダマイズ解除を行いながらデータ格納する第1のモードとランダマイズ状態のままデータを格納する第2のモードとを用途に応じて切り替える。
【0111】
つまり、例えばホスト機器2からのデータ読み出し等の場合は、バッファのどの位置から読み出しを開始するのかが分からないため、上記第2のモードに切り替え、ランダマイズ状態のままバッファにデータ格納し、ホスト機器2に対するデータ出力時解除が必要な場合は出力要求時にシード値を算出し、ランダマイズ解除を行う。これにより、M系列乱数によるランダマイズを実施した時、基準点(先頭データ)以外の位置からのリードを行う場合にその位置までの乱数値を得るための演算オーバーヘッドの発生(ランダマイズ解除のための前処理時間が発生)を抑制できる。
【0112】
一方、例えばNAND型フラッシュメモリ11からのデータ読み出し等の場合は、必ずECC処理単位の先頭位置からの読み出しが保証されるため、上記第1のモードに切り替え、ランダマイズ解除を行いながらデータ格納する。
【0113】
以上のように、本実施形態では、NAND型フラッシュメモリ11に記録するデータをランダマイズすることによって信頼性の向上を図りながら、読み出しの用途に応じてモード切り替えを行うことで、ランダマイズ解除のためのシード値算出によるオーバーヘッド時間を削減し、ランダマイズ解除処理による性能低下を改善できる。
【0114】
その他、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【図面の簡単な説明】
【0115】
【図1】本発明の一実施形態に係るメモリシステムのブロック図。
【図2】本発明の一実施形態に係るメモリカードにおける信号ピンに対する信号割り当てを示す図。
【図3】本発明の一実施形態に係るメモリカードの備えるカードコントローラのブロック図。
【図4】本発明の一実施形態に係るフラッシュメモリのブロック図。
【図5】本発明の一実施形態に係るフラッシュメモリの具体的なブロック図。
【図6】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの回路図。
【図7】本発明の一実施形態に係るフラッシュメモリの閾値分布を示すグラフ。
【図8】本発明の一実施形態に係るフラッシュメモリの閾値分布を示すグラフであり、データの書き込み方法を示す図。
【図9】本発明の一実施形態に係るランダマイズ基本方針を説明するための図。
【図10】本発明の一実施形態に係るM系列の擬似乱数列発生回路の回路図。
【図11】本発明の一実施形態に係るランダマイズ方法1を説明するための図。
【図12】本発明の一実施形態に係るランダマイズ方法2(カラム方向)を説明するための図。
【図13】本発明の一実施形態に係るランダマイズ方法2(ページ方向)を説明するための図。
【図14】本発明の一実施形態に係るランダマイズ方法2のスクランブル回路のブロック図。
【図15】本発明の一実施形態に係るランダマイズ方法2の擬似乱数列発生回路の回路図。
【図16】本発明の一実施形態に係るランダマイズ方法3(ページ方向)で用いるスクランブルテーブルの概念図。
【図17】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの回路図。
【図18】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの概念図であり、各メモリセルにスクランブルされたデータが書き込まれた様子を示す図。
【図19】本発明の一実施形態に係るランダマイズ方法3のスクランブル回路のブロック図。
【図20】本発明の一実施形態に係るモード切り替え機能を有するデータ読み出しの概要を説明するための図。
【図21】本発明の一実施形態に係るデータフォーマットの一例を示す図。
【図22】本発明の一実施形態に係るモード切り替え機能を有するデータ読み出しの他の例を説明するための図。
【図23】本発明の一実施形態に係るデータマージが必要な場合(第1のモード)を説明するための図。
【図24】本発明の一実施形態に係る誤り位置に対してカラム単位で訂正を行う場合(第2のモード)を説明するための図。
【符号の説明】
【0116】
1…メモリカード、2…ホスト機器、11、…NAND型フラッシュメモリ、12…カードコントローラ、13…信号ピン、21…ホストインタフェースモジュール、22…MPU、23…フラッシュコントローラ、24…ROM、25…RAM、26…スクランブル回路、27…スクランブルテーブル、28…ページバッファ、29…ロウデコーダ、30…メモリセルアレイ、31…データ入力部、32…データ出力部、33…乱数加算回路、34…乱数減算回路、35…セグメントアドレス発生回路、36…初期値発生回路、37…ページアドレス発生回路、38…初期値Nビットシフト回路、39…擬似乱数列発生回路、40…ページ方向スクランブル回路、41、42…データ反転回路、50…シフトレジスタ。
【技術分野】
【0001】
本発明は、データランダマイズ処理機能を有するメモリシステムに関する。
【背景技術】
【0002】
近年、デジタルカメラや携帯型オーディオプレーヤの急速な普及により、大容量の不揮発性半導体メモリの需要が拡大している。そして、不揮発性半導体メモリとしてNAND型フラッシュメモリが広く使用されている。NAND型フラッシュメモリは、複数のメモリセルが直列接続されたNANDストリング構造を備えている。このNANDストリングに含まれるメモリセル数は大容量化に伴い増加し、これに従ってその動作信頼性が低下するという問題があった。
【0003】
そこで、特許文献1等で開示されているように、書き込みデータをランダマイズする方法が採用されている。これにより、NAND型フラッシュメモリのブロック内に書き込むデータを分散し、データパターンの集中を防止している。このような従来のデータランダマイズ制御では、NAND型フラッシュメモリからデータ読み出す場合、ランダマイズ状態のデータのままバッファにデータを格納し、バッファからデータを出力する際にランダマイズの解除処理を行っていた。
【0004】
しかしながら、ランダマイズ処理を比較的単純なデータの正転/反転切り替え等で行っていた場合には出力時の復号にオーバーヘッドが発生することはほとんどないが、M系列(Maximum length code)乱数を用いた場合等、データ位置に応じてランダマイズ処理が変化するケースでは、対応する復号鍵を生成するための処理時間がその都度発生し、性能低下につながる。
【特許文献1】特開2001−237715号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明は、ランダマイズ解除処理による性能低下を改善するメモリシステムを提供する。
【課題を解決するための手段】
【0006】
本発明の一態様によるメモリシステムは、ランダマイズされたランダマイズデータが書き込まれる半導体メモリと、前記ランダマイズデータの読み出し時、前記ランダマイズデータのランダマイズを解除しながらバッファにランダマイズ解除後データを格納する第1のモードと前記ランダマイズデータを前記バッファに格納する第2のモードとを読み出しの用途に応じて切り替えるMPUとを具備する。
【発明の効果】
【0007】
本発明によれば、ランダマイズ解除処理による性能低下を改善するメモリシステムを提供できる。
【発明を実施するための最良の形態】
【0008】
本発明の実施の形態を以下に図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【0009】
[1]メモリシステムの構成
図1を用いて、本発明の一実施形態に係るメモリシステムについて説明する。図1は、本実施形態に係るメモリシステムのブロック図である。
【0010】
図示するように、メモリシステムは、メモリカード1及びホスト機器2を備えている。ホスト機器2は、バスインタフェース14を介して接続されるメモリカード1に対しアクセスを行うためのハードウェア及びソフトウェアを備えている。メモリカード1は、ホスト機器2に接続された時に電源供給を受けて動作し、ホスト機器2からのアクセスに応じた処理を行う。
【0011】
メモリカード1は、ホスト機器2とバスインタフェース14を介して情報の授受を行う。メモリカード1は、NAND型フラッシュメモリチップ(単にNAND型フラッシュメモリ、又はフラッシュメモリと呼ぶことがある)11、フラッシュメモリチップ11を制御するカードコントローラ12、及び複数の信号ピン(第1ピン乃至第9ピン)13を備えている。
【0012】
複数の信号ピン13は、カードコントローラ12と電気的に接続されている。複数の信号ピン13における第1ピン乃至第9ピンに対する信号の割り当ては、例えば図2に示すようになっている。図2は、第1ピン乃至第9ピンと、それらに割り当てられた信号とを示す表である。図2に示すように、データ0乃至データ3は、第7ピン、第8ピン、第9ピン、及び第1ピンにそれぞれ割り当てられている。第1ピンは、カード検出信号に対しても割り当てられている。さらに、第2ピンはコマンドに割り当てられ、第3ピン及び第6ピンは接地電位Vssに、第4ピンは電源電位Vddに、第5ピンはクロック信号に割り当てられている。
【0013】
また、メモリカード1は、ホスト機器2に設けられたスロットに対して挿抜可能なように形成されている。ホスト機器2に設けられたホストコントローラ(図示せず)は、これら第1ピン乃至第9ピンを介してメモリカード1内のカードコントローラ12と各種信号及びデータを通信する。例えば、メモリカード1にデータが書き込まれる際には、ホストコントローラは、書き込みコマンドを、第2ピンを介してカードコントローラ12にシリアルな信号として送出する。このとき、カードコントローラ12は、第5ピンに供給されているクロック信号に応答して、第2ピンに与えられる書き込みコマンドを取り込む。
【0014】
ここで、前述したように、書き込みコマンドは、第2ピンのみを利用してカードコントローラ12にシリアルに入力される。コマンドの入力に割り当てられている第2ピンは、図2に示すように、データ3用の第1ピンと接地電位Vss用の第3ピンとの間に配置されている。複数の信号ピン13とそれに対するバスインタフェース14は、ホスト機器2内のホストコントローラとメモリカード1とが通信するのに使用される。
【0015】
これに対し、フラッシュメモリ11とカードコントローラ12との間の通信は、NAND型フラッシュメモリ用のインタフェースによって行われる。従って、ここでは図示しないが、フラッシュメモリ11とカードコントローラ12とは例えば8ビットの入出力(I/O)線により接続されている。
【0016】
例えば、カードコントローラ12がフラッシュメモリ11にデータを書き込む際には、カードコントローラ12は、これらI/O線を介してデータ入力コマンド80H、カラムアドレス、ページアドレス、データ、及びプログラムコマンド10Hをフラッシュメモリ11に順次入力する。ここで、コマンド80Hの“H”は16進数を示すものであり、実際には“10000000”という8ビットの信号が、8ビットのI/O線にパラレルに与えられる。つまり、このNAND型フラッシュメモリ用のインタフェースでは、複数ビットのコマンドがパラレルに与えられる。
【0017】
また、NAND型フラッシュメモリ用のインタフェースでは、フラッシュメモリ11に対するコマンドとデータが同じI/O線を共用して通信されている。このように、ホスト機器2内のホストコントローラとメモリカード1とが通信するインタフェースと、フラッシュメモリ11とカードコントローラ12とが通信するインタフェースとは異なる。
【0018】
尚、本実施形態では、NAND型フラッシュメモリ11及びカードコントローラ12はメモリカード1に搭載されているが、メモリカード1に搭載されることに限定されない。例えば、PC等の電子機器内に組み込み搭載される態様でもよい。また、本実施形態では、半導体メモリとしてNAND型フラッシュメモリ11を例に挙げているが、例えば、NOR型フラッシュメモリ、磁気ランダムアクセスメモリ(MRAM:Magnetic Random Access Memory)等に置き換えることも可能である。
【0019】
[2]カードコントローラの構成
図3を用いて、図1に示すカードコントローラ12の内部構成について説明する。図3は、本実施形態に係るカードコントローラ12のブロック図である。
【0020】
カードコントローラ12は、フラッシュメモリ11内部の物理状態(例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか)を管理する。そして、NAND型フラッシュメモリ11へのデータの書き込みや読み出しを制御する。
【0021】
図示するように、カードコントローラ12は、ホストインタフェースモジュール21、MPU(Micro Processing Unit)22、フラッシュコントローラ23、ROM(Read Only Memory)24、RAM(Random Access Memory)25、及びスクランブル回路26を有する。
【0022】
ホストインタフェースモジュール21は、カードコントローラ12とホスト機器2との間のインタフェース処理を行う。
【0023】
MPU22は、メモリカード1全体の動作を制御する。MPU22は、例えばメモリカード1が電源供給を受けたときに、ROM24に格納されているファームウェア(制御プログラム)をRAM25上に読み出して所定の処理を実行することにより、各種のテーブルをRAM25上に作成する。また、MPU22は、ホスト機器2から書き込みコマンド、読み出しコマンド、消去コマンドを受け取り、フラッシュメモリ11に対して所定の処理を実行する。さらに、MPU22は、スクランブル回路26を制御して、書き込みデータのスクランブル及びスクランブル解除を行う。書き込みデータのスクランブル及びスクランブル解除については、後に詳述する。
【0024】
ROM24は、MPU22により制御される制御プログラム等を格納する。RAM25は、MPU22の作業エリアとして使用され、制御プログラムや各種のテーブル(表)を記憶する。さらに、RAM25は、予め作成されたスクランブルテーブル27を保持する。スクランブルテーブル27については、後に詳述する。フラッシュコントローラ23は、カードコントローラ12とフラッシュメモリ11との間のインタフェース処理を行う。
【0025】
[3]NAND型フラッシュメモリの構成
図4を用いて、NAND型フラッシュメモリ11の内部構成について簡単に説明する。図4は、本実施形態に係るNAND型フラッシュメモリ11のブロック図である。図示するようにNAND型フラッシュメモリ11は、メモリセルアレイ30、ページバッファ28、及びロウデコーダ29を備えている。
【0026】
メモリセルアレイ30は、複数のメモリブロックBLK0、BLK1、…を含んでいる。データの消去は、メモリブロックBLKn単位で行われる。すなわち、同一メモリブロックBLKn内のデータは一括して消去される。メモリブロックBLKnの各々は、複数のメモリセルトランジスタを備えている。また、メモリブロックBLKn内には、複数のワード線WL0、WL1、…と、ワード線WL0、WL1、…に直交するビット線BL0、BL1、…とが設けられている。以下、ワード線WL0、WL1、…を特に区別しない場合には単にワード線WLと呼び、ビット線BL0、BL1、…を特に区別しない場合には単にビット線BLと呼ぶ。同一行にあるメモリセルトランジスタは、同一のワード線WLに共通接続されている。また、同一列にあるメモリセルトランジスタは、複数のメモリセルトランジスタ単位でビット線BLに共通接続されている。尚、データの書き込み及び読み出しは、一本のワード線WLに接続される複数のメモリセルトランジスタの集合毎に行われ、このメモリセルトランジスタの集合を「1ページ」と呼ぶ。読み出し時及び書き込み時において、ロウアドレスによっていずれかのワード線WLが選択され、カラムアドレスによっていずれかのビット線BLが選択される。図4の例であると、フラッシュメモリ11の各メモリブロックBLKnは、例えば128ページを含んでいる。
【0027】
ページバッファ28は、フラッシュメモリ11へのデータ入出力を行い、データを一時的に保持する。ページバッファ28が保持可能なデータサイズは、各メモリブロックBLKnのページサイズと同じである。データ書き込み等の際、ページバッファ28は、フラッシュメモリ11に対するデータ入出力処理を、自身の記憶容量に相当する1ページ分の単位で実行する。また、読み出しの際は、1ページ分のメモリセルのデータをページバッファ28に転送し、I/O線を介してページバッファ28からシリアルに読み出される。
【0028】
ロウデコーダ29は、データの書き込み時及び読み出し時において、いずれかのワード線WLを選択する。
【0029】
本実施形態では、図5に示すように、例えば、1メモリブロックBLKnは、8kカラム×128ページ×8I/O(1024kバイト)で構成される。そして、1024バイトに対して誤り訂正符号αを含む冗長部を付加し、1セグメントを構成する。従って、1ページに8個のセグメントが存在するので、1ブロックあたり1024個(8×128)のセグメントが存在する。尚、図5は一例であり、これに限定されない。
【0030】
[4]メモリブロックの構成
図6を用いて、メモリブロックBLKnの詳細な構成について説明する。図6は、メモリブロックBLKnの等価回路図である。
【0031】
図示するように、メモリブロックBLKnは、ワード線WL方向に沿って配置された(m+1)個のNANDストリングを備えている(mは1以上の自然数)。各々のNANDストリングは、選択トランジスタST1、ST2、及び64個のメモリセルトランジスタMTを備えている。NANDストリング内に含まれるメモリセルトランジスタMTの数は一例に過ぎず、例えば8個、16個、32個、128個等であってもよい。各々のNANDストリングに含まれる選択トランジスタST1は、ドレインがビット線BL0〜BLmのいずれかに接続され、ゲートがセレクトゲート線SGDに共通接続されている。また、選択トランジスタST2は、ソースがソース線SLに共通接続され、ゲートがセレクトゲート線SGSに共通接続されている。
【0032】
メモリセルトランジスタMTの各々は、半導体基板上にゲート絶縁膜を介在して形成された積層ゲートを備えたMOSトランジスタである。積層ゲートは、ゲート絶縁膜上に形成された電荷蓄積層(フローティングゲート)と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを含んでいる。各々のNANDストリングにおいて、64個のメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、各々の電流経路が直列接続されるように配置されている。そして、最もソース側に位置するメモリセルトランジスタMTから順に、制御ゲートがワード線WL0〜WL63にそれぞれ接続されている。従って、ワード線WL63に接続されたメモリセルトランジスタMTのドレインは選択トランジスタST1のソースに接続され、ワード線WL0に接続されたメモリセルトランジスタMTのソースは選択トランジスタST2のドレインに接続されている。
【0033】
ワード線WL0〜WL63は、メモリブロックBLKn内のNANDストリング間で、メモリセルトランジスタMTの制御ゲートを共通に接続している。つまり、メモリブロックBLKn内において同一行にあるメモリセルトランジスタMTの制御ゲートは、同一のワード線WLに接続される。また、ビット線BL0〜BLmは、メモリブロックBLKn間で、選択トランジスタST1のドレインを共通に接続している。つまり、複数のメモリブロックBLKn内において同一列にあるNANDストリングは、同一のビット線BLに接続される。
【0034】
尚、以下では、メモリセルトランジスタMTを単にメモリセルMCと呼ぶことがある。
【0035】
上記メモリセルMCの各々は、4値(“00”データ、“01”データ、“10”データ、又は“11”データ)のデータ、つまり2ビットデータを保持可能である。そしてこの2ビットには、2つの異なるページアドレスが割り当てられる。具体的には、2ビットデータのうち下位ビットに下位ページアドレスが割り当てられ、上位ビットに上位ページアドレスが割り当てられる。従って、本実施形態に係る構成であると、メモリブロックBLKnは128ページを含むから、上位ページが64ページであり、下位ページが64ページ存在する。
【0036】
図7を用いて、上記メモリセルMCの閾値について説明する。図7は、メモリセルMCの閾値分布を示すグラフであり、横軸が閾値電圧Vthを示し、縦軸がメモリセルの存在確率を示す。
【0037】
図示するように、メモリセルMCは、閾値電圧Vthの低い順に“11”、“01”、“10”、“00”の4つのデータを保持出来る。“11”データを保持するメモリセルの閾値電圧Vthは、Vth<0Vである。“01”データを保持するメモリセルの閾値電圧Vthは、0V<Vth<Vth1である。“00”データを保持するメモリセルの閾値電圧Vthは、Vth1<Vth<Vth2である。“10”データを保持するメモリセルの閾値電圧Vthは、Vth2<Vth<Vth3である。
【0038】
図8を用いて、上記4値のデータのメモリセルMCへの書き込み方法について簡単に説明する。図8は、メモリセルの閾値分布を示すグラフであり、書き込み時おけるメモリセルの閾値電圧Vthの変化の様子を示している。データは1ページに対して一括して書き込まれる。また、データの書き込みは、まず下位ページから行い、次に上位ページについて行う。
【0039】
書き込みにあたって、メモリセルは消去状態にある。すなわち、メモリセルの閾値電圧Vthは負の値であり、“11”データを保持した状態である。その状態で、まず下位ページについてデータの書き込みを行う。下位ページが“1”の場合には、フローティングゲートに電子は注入されず、閾値電圧Vthは不変である。下位ページが“0”の場合には、フローティングゲートに電子が注入され、閾値電圧Vthは正の方向へ変化し、約Vth1<Vth<Vth2となる。
【0040】
次に、上位ページの書き込みを行う。まず、下位ページが“1”であった場合について説明する。下位ページが“1”で、尚かつ上位ページも“1”である場合、上位ページの書き込み時においてもフローティングゲートに電子は注入されず、閾値電圧Vthは負の値を維持する。その結果、メモリセルには“11”が保持される。上位ページが“0”の場合、フローティングゲートに電子が注入される。その結果、閾値電圧Vthは負から正の方向へ変化し、0V<Vth<Vth1となる。すなわち、メモリセルには“01”が書き込まれる。
【0041】
次に、下位ページが“0”であった場合について説明する。下位ページが“0”で、上位ページが“0”である場合、上位ページの書き込み時にはフローティングゲートに電子が注入されない。よって、下位ページの書き込みの結果の値を維持する。すなわち、Vth1<Vth<Vth2であり、その結果、メモリセルには“00”が書き込まれる。上位ページが“1”の場合、さらにフローティングゲートに電子が注入される。その結果、閾値電圧Vthはさらに正の方向へ変化し、Vth2<Vth<Vth3となる。すなわち、メモリセルには“10”が書き込まれる。
【0042】
[5]データ書き込み
本実施形態におけるデータ書き込みでは、書き込みデータをランダマイズしてNAND型フラッシュメモリ11に書き込まれる。このランダマイズ方法について以下に説明する。
【0043】
[5−1]ランダマイズの基本方針
図9を用いて、ランダマイズの基本方針について説明する。本実施形態の書き込み動作では、カラム方向及びページ方向の少なくとも一方において、データランダマイズを行う。尚、本実施形態において、カラム方向とはワード線の延在方向であり、ページ方向とはビット線及びNANDストリングの延在方向である(図6参照)。
【0044】
ランダマイズの手法としては、オリジナルのデータ列に乱数値を加えた値をランダマイズデータとして処理する。この際、例えばECCフレームを基本単位とし、このECCフレーム内で同じ乱数列が再度現れることのないM系列乱数を選択する。また、同一カラム内(1カラム=8ビット)でも同じ乱数値が現れないようにする。例えば、ECCフレーム=1KBとした場合、8KB以上の周期を持つ乱数回路を使用する。具体的には、14ビット/16383周期である。
【0045】
図9に示すように、カラム方向のランダマイズは、M系列乱数に基づくスクランブル処理によって実現する。ページ方向のランダマイズは、先頭ページの乱数値に基づいてページアドレス分のM系列乱数シフトを加えて実現する場合、ワード線アドレスに基づいて正転/反転の制御により実現する場合等がある。このページ方向のランダマイズにおいて、シフト量は、ブロック内の論理ページアドレスで判別する。尚、物理ページアドレスと論理ページアドレスが異なる可能性があるため、予めブロック先頭ページの基準シフト量を把握しておくことが望ましい。
【0046】
図10を用いて、上述したランダマイズを実現するためのM系列の擬似乱数列発生回路39の一例について説明する。フィボナッチ型のM系列の擬似乱数列発生回路39は、1kカラムアドレス周期でランダムデータを発生し、NAND型フラッシュメモリ11へ書き込むデータと排他的論理和をとる。具体的には、図10に示すように、擬似乱数列発生回路39は、シフトレジスタR1〜R14、排他的論理和(エクスクルーシブORゲート)XOR1〜XOR5で構成される。
【0047】
シフトレジスタR1〜R14のそれぞれは、直列に接続されている。シフトレジスタR2、R3、R4、R5、R6、R7、R10、R12の各入力端子は、前段のシフトレジスタR3、R4、R5、R6、R7、R8、R11、R13の各出力端子に接続されている。シフトレジスタR1の出力端子は排他的論理和XOR1に接続され、この排他的論理和XOR1はシフトレジスタR1の入力端子に接続されている。排他的論理和XOR1の出力端子は排他的論理和XOR2の入力端子に接続され、排他的論理和XOR2はシフトレジスタR8の入力端子に接続されている。排他的論理和XOR2の出力端子は排他的論理和XOR3の入力端子に接続され、排他的論理和XOR3はシフトレジスタR9の入力端子に接続されている。排他的論理和XOR3の出力端子は排他的論理和XOR4の入力端子に接続され、排他的論理和XOR4はシフトレジスタR11の入力端子に接続されている。排他的論理和XOR4の出力端子は排他的論理和XOR5の入力端子に接続され、排他的論理和XOR5はシフトレジスタR13の入力端子に接続されている。排他的論理和XOR5の出力端子はシフトレジスタR14の入力端子に接続されている。
【0048】
[5−2]ランダマイズ方法1
本実施形態に係るランダマイズ方法1では、上述した図10のM系列の擬似乱数列発生回路39を用いて、カラム方向にM系列乱数を発生させ、データスクランブルを行う。
【0049】
図11を用いて、ランダマイズ方法1について説明する。図11に示すように、スクランブル回路26は、ビット線毎にM系列の擬似乱数列発生回路39と排他的論理和からなる乱数加算回路33を備えている。擬似乱数列発生回路39はビット線毎にM系列の乱数列を発生させ、この乱数列と入力データを乱数加算回路33で加算し、スクランブルされたデータを出力している。
【0050】
擬似乱数列発生回路39のそれぞれは、図10に示す同じ回路構成となり、生成多項式も同一のものを採用するが、擬似乱数列発生回路39の初期値はビット線毎に異なる。周期は、原則、ECCデータ処理単位よりも大きい値(例えば1024バイト以上)を採用する。擬似乱数列発生回路39のシード値は、ビット線毎にそれぞれ与えられる。このシード値は、パラメータとして予め準備されており、例えばDMA(Direct Memory Access)転送の開始時又はオフセットの切り替え時に擬似乱数列発生回路39へロードされる。
【0051】
このようなスクランブル回路26を用いたランダマイズ方法1によるデータ書き込みは、次のように行われる。
【0052】
まず、ホスト機器2からデータの書き込み命令及び書き込みデータがメモリカード1に与えられ、カードコントローラ12のホストインタフェースモジュール21が書き込み命令及び書き込みデータを受信する。
【0053】
すると、MPU22は、受信した書き込みデータを基に書き込むべきメモリセルMCのアドレスを算出する。そして、このアドレスに基づいて、ある特定のシード値を持った擬似乱数列発生回路39により、ビット線毎の初期値を用いてカラム方向にランダム化した擬似乱数列を生成する。一方、ホストインタフェースモジュール21で受信された書き込みデータがスクランブル回路26に入力され、乱数加算回路33により書き込みデータと上述した擬似乱数列とが加算され、乱数化されたデータがページ毎にNAND型フラッシュメモリ11に書き込まれる。
【0054】
尚、読み出し時は、乱数加算回路33で使用した擬似乱数列と同じ乱数列を用いて、乱数減算回路(図示せず)で減算処理を行い、ページ毎にデータを読み出す。
【0055】
[5−3]ランダマイズ方法2
本実施形態に係るランダマイズ方法2は、上述したランダマイズ方法1におけるM系列乱数のシード値を固定値ではなく、ページアドレス毎に切り替えて使用する例である。物理ページアドレスがページコピーによって変化する可能性がない場合は物理ページアドレスに基づいたインデックスを決定する。物理ページアドレスがページコピーによって変化する可能性がある場合は予め物理ページと論理ページの関係性、又はインデックスそのものをデータの冗長部領域に記録しておき、ブロックに対する転送開始前に予め取得し、以降の転送についてはハードウェア(HW)が自動的にシード値を更新しながら転送する。
【0056】
具体的には、ランダマイズ方法2は、ページ方向ではページアドレス毎にNビットシフトさせた擬似乱数回路の初期値を生成し、この初期値を使用してカラム方向ではM系列乱数を用いてセグメント単位で擬似乱数列を生成することで、ページ方向及びカラム方向の両方において、データスクランブルを行う。
【0057】
図12を用いて、カラム方向のM系列乱数を用いたデータスクランブルについて説明する。各セグメント内において、M系列の乱数発生周期をI/Oの数で割った回数だけシフトさせた値を初期値(スタートビット)として与える。例えば、M14−1のM系列(16383通り)の乱数発生回路を使用した場合、NAND型フラッシュメモリの8個のI/Oに対しては、2048回シフトした値を各セグメントに対して初期値として与える。
【0058】
尚、上記の例では、各I/Oに対して均等にシフト回数を規定した場合であるが、これに限定されず、各I/O間でシフトさせる回数は異なっていてもよい。
【0059】
図13を用いて、ページ方向のデータスクランブルについて説明する。例えば、各I/Oの初期値を、ページ方向において各々N回シフトさせる。図13に示す1ビットシフトさせた例の場合、Page−0が「A1」からスタートするのに対し、Page−1はPage−0の初期値A1から1ビットシフトさせた「B1」からスタートし、Page−2はPage−1の初期値B1から1ビットシフトさせた「C1」からスタートする。
【0060】
次に、図14を用いて、上述したランダマイズ方法2を実現するためのスクランブル回路26の概略的な構成について説明する。
【0061】
図14に示すように、ランダマイズ方法2のスクランブル回路26は、データ入力部31、データ出力部32、乱数加算回路33、乱数減算回路34、セグメントアドレス発生回路35、初期値発生回路36、ページアドレス発生回路37、初期値Nビットシフト回路38、擬似乱数列発生回路39を備えている。
【0062】
このようなスクランブル回路26を用いたデータ書き込みは次のように行われる。
【0063】
まず、ホスト機器2からデータの書き込み命令及び書き込みデータがメモリカード1に与えられ、カードコントローラ12のホストインタフェースモジュール21が書き込み命令及び書き込みデータを受信する。
【0064】
すると、MPU22は、受信した書き込みデータを書き込むべきメモリセルMCのセグメントアドレス及びページアドレスを算出する。これに基づいて、スクランブル回路26内のセグメントアドレス発生回路35がセグメントアドレスを発生し、ページアドレス発生回路37がページアドレスを発生する。
【0065】
一方、ホストインタフェースモジュール21で受信された書き込みデータはデータ入力部31に入力され、乱数加算回路33により書き込みデータと擬似乱数列とが加算され、乱数化されたデータがページ毎にNAND型フラッシュメモリ11に書き込まれる。
【0066】
ここで、擬似乱数列は、擬似乱数列発生回路39で、次のように生成される。セグメント毎の初期値(スタートビット)が初期値発生回路36により発生される。セグメントの初期値は、図12のランダマイズ方法2のカラム方向の擬似乱数化により決定される。そして、初期値Nビットシフト回路38により、図13で説明したようにページアドレス毎に初期値をNビットだけシフトさせる。以上のような方法でカラム方向及びページ方向の両方において擬似乱数化した擬似乱数列を、擬似乱数列発生回路39で生成する。
【0067】
尚、読み出し時は、乱数加算回路33で使用した擬似乱数列と同じ乱数列を用いて、乱数減算回路34で減算処理を行い、データ出力部32を介してページ毎にデータを読み出す。
【0068】
図15を用いて、図14の擬似乱数列発生回路39の一例について説明する。フィボナッチ型の擬似乱数列発生回路39は、1k+αカラムアドレス周期で擬似乱数データを発生し、NAND型フラッシュメモリ11へ書き込むデータと排他的論理和をとる。具体的には、図15に示すように、擬似乱数列発生回路39は、第1のシフトレジスタR1〜R14、第2のシフトレジスタ50、排他的論理和(エクスクルーシブORゲート)XOR1〜XOR5で構成される。従って、図10の擬似乱数列発生回路39に、第2のシフトレジスタ50が付加された構成となる。第2のシフトレジスタ50の出力端子は、第1のシフトレジスタR1〜R14のそれぞれに接続されている。尚、第1のシフトレジスタR1〜R14はカラム方向のデータスクランブルに使用され、第2のシフトレジスタ50はページ方向のデータスクランブルに使用され、各ページの初期値を発生させる。そして、擬似乱数列発生回路39により生成されたM系列擬似乱数の出力は、乱数加算回路33又は乱数減算回路34に入力される。
【0069】
[5−4]ランダマイズ方法3
ランダマイズ方法3は、上記ランダマイズ方法2の変形例であり、ページ方向にNビットシフトするだけでなく、さらに、ワード線WLのアドレス(以下、ワード線アドレス又はページアドレスと呼ぶ)に応じて反転・正転する。以下、ここでは、図3のRAM25が保持するスクランブルテーブル27と共に、ランダマイズ方法3の上記ランダマイズ方法2と異なる点について主に説明する。
【0070】
図16は、ランダマイズ方法3において用いるスクランブルテーブル27の概念図である。このスクランブルテーブル27は、外部から入力された1ページの書き込みデータを一定の規則に従って変えるためのスクランブル方式を保持している。
【0071】
図示するように、スクランブルテーブル27は、ワード線アドレスを例えば“4”で割った余りA毎に、当該ワード線アドレスに対応したデータの上位ページと下位ページの変え方を保持している。より具体的には、ワード線アドレスを“4”で割った余りAが“0”である場合には、上位ページ及び下位ページに書き込むべきデータを正転させて書き込む。つまり、入力されたデータを変えずにそのままメモリセルMCへ書き込む。余りAが“1”である場合には、上位ページ及び下位ページに書き込むデータを、それぞれ反転及び正転させて書き込む。余りAが“2”である場合には、上位ページ及び下位ページに書き込むデータを、それぞれ正転及び反転させて書き込む。余りAが“3”である場合には、上位ページ及び下位ページに書き込むデータを、共に反転させて書き込む。
【0072】
上記のようにワード線アドレスを“4”で割った余りA毎にスクランブル方式を有するということは、換言すれば、ワード線WLを4つのグループに分類し、グループ毎にスクランブル方式を変えていることに相当する。
【0073】
図17は、上記の方法でワード線WLを4つのグループに分類した結果を示す。図示するように、例えばワード線WL0〜WL63のワード線アドレスを、それぞれ“0”〜“63”とすると、ワード線WL0、WL4、WL8、…、WL60についての余りAが“0”となり、これらのワード線WLが第1グループに分類される。また、ワード線WL1、WL5、WL9、…、WL61についての余りAが“1”となり、これらのワード線WLが第2グループに分類される。さらに、ワード線WL2、WL6、WL10、…、WL62についての余りAが“2”となり、これらのワード線WLが第3グループに分類される。そして、ワード線WL3、WL7、WL11、…、WL63についての余りAが“3”となり、これらのワード線WLが第4グループに分類される。その上で、第1〜第4グループ毎に、それぞれ異なるスクランブル方式が採用される。スクランブル回路26は、上記スクランブル方式に従って、外部から入力されたデータのスクランブルを行う。
【0074】
上記スクランブルテーブル27を用いた場合の具体例について、図18を用いて説明する。本図は、全メモリセルMCに対して“00”を書き込む場合において、実際の各メモリセルMCに対して書き込まれたデータを示す。
【0075】
図示するように、第1グループに属するワード線WL0、WL4、WL8、…、WL60に接続されたメモリセルMCには、入力データ“00”がそのまま書き込まれる。第2グループに属するワード線WL1、WL5、WL9、…、WL61に接続されたメモリセルMCには、上位ページが反転されたデータ“10”が書き込まれる。第3グループに属するワード線WL2、WL6、WL10、…、WL62に接続されたメモリセルMCには、下位ページが反転されたデータ“01”が書き込まれる。そして第4グループに属するワード線WL3、WL7、WL11、…、WL63に接続されたメモリセルMCには、上位ページ及び下位ページが共に反転されたデータ“11”が書き込まれる。
【0076】
次に、図19を用いて、上述したランダマイズ方法3を実現するためのスクランブル回路26の概略的な構成について説明する。図19に示すように、ランダマイズ方法3のスクランブル回路26は、図14のランダマイズ方法2のスクランブル回路26に、ページ方向スクランブル回路40、データ反転回路41、42をさらに備えている。
【0077】
このようなスクランブル回路26を用いたデータ書き込みは次のように行われる。まず、上述したランダマイズ方法2と同様の方法で、カラム方向及びページ方向の両方において擬似乱数化した擬似乱数列を、擬似乱数列発生回路39で生成する。そして、乱数加算回路33により書き込みデータと擬似乱数列とが加算され、乱数化されたデータが生成される。さらに、ランダマイズ方法3では、ページ方向スクランブル回路40において、図13に示すスクランブルテーブル27を用いてページ方向のデータスクランブルを実施し、データ反転回路41により乱数化されたデータに対してデータ反転を行う。
【0078】
具体的には、MPU22は、ページアドレス発生回路37で発生されたページアドレス(以下、ワード線アドレスと呼ぶ)を用いて、このワード線アドレスに対応するワード線WLが第1〜第4グループのいずれに相当するかを判断する。すなわち、ワード線アドレスをM、グループ数を“N”(本実施形態ではN=“4”)とすると、A=M mod Nなる計算を行う。余りAがそれぞれ“0”〜“3”の場合、当該ワード線アドレスに対応するワード線は第1〜第4グループのそれぞれに属することが分かる。
【0079】
次に、MPU22は、RAM25に保持される図16のスクランブルテーブル27を参照する。そして、判断されたグループに応じて、スクランブル方式を選択する。例えば、A=“3”であり、当該ワード線アドレスに対応するワード線が第4グループに属すると判断された場合には、MPU22は書き込みデータの上位ページ及び下位ページの両方を反転させるスクランブル方式を選択し、その旨をスクランブル回路26に命令する。
【0080】
すると、スクランブル回路26内のページ方向スクランブル回路40及びデータ反転回路41は、MPU22によって選択されたスクランブル方式に従って、書き込みデータをスクランブルする。例えば、第4グループに属するワード線WLの上位ページデータを書き込む場合には、当該ページデータの全てを反転させる。
【0081】
尚、データの読み出しの際には、外部から与えられたアドレスに従ってメモリセルからデータが読み出されると共に、MPU22は当該アドレスに対応したスクランブル方式をスクランブルテーブル27から読み出す。そして、読み出したスクランブル方式に応じて、読み出しデータを解読する。例えば、第3グループに属するワード線の下位ページデータを読み出す場合には、スクランブル方式は図13の通り「反転」であるから、MPU22の命令によりデータ反転回路42は読み出しデータを反転させて外部へ出力する。このような読み出し方法を行うため、データのページ毎のコピーは、同一のグループに属するワード線間に制限される。
【0082】
[6]データ読み出し
[6−1]データ読み出しの概要
図20を用いて、本発明の一実施形態におけるデータ読み出しの概要について説明する。本発明の一実施形態における読み出し動作では、MPU22の制御により、上述した方法でランダマイズされたデータが、読み出しの用途に応じて第1のモード又は第2のモードに切り替えられて読み出される。
【0083】
ここで、第1のモードは、ランダマイズされたデータのランダマイズを解除しながらバッファにランダマイズ解除後のデータを格納する。さらに、第1のモードは、これと並行してランダマイズデータに対してECC処理を実施し、誤り検出したデータ位置情報を用いてバッファに格納されたランダマイズ解除後のデータに対して訂正処理を行う。すなわち、第1のモードでは、バッファ内には最終的にランダマイズ解除された状態でECC訂正を終えたデータが残り、そのままの状態でデータ出力を行える。
【0084】
一方、第2のモードは、ランダマイズされたデータをそのままバッファに格納する。さらに、第2のモードは、これと並行してランダマイズされたデータにECC処理を実施し、誤り検出したデータ位置情報を用いてバッファに格納されたランダマイズ状態のデータに対して訂正処理を行う。すなわち、第2のモードでは、バッファ内にはランダマイズ状態のままでECC訂正を終えたデータが残る。
【0085】
このような本実施形態の読み出し動作では、NAND型フラッシュメモリ11内のデータの冗長部領域にランダマイズ対象の有無の属性ビットを付与しておき、予めランダマイズの自動解除(第1のモード)又は非解除(第2のモード)の指定を行った上で、データのバッファ格納処理を行う。ランダマイズ対象の有無が読み出し前に不明である場合又は基準シフト量が不明である場合等は、データの冗長部領域から属性情報を取得するための処理も必要となる。尚、この属性情報は、ランダマイズの対象外になっている。
【0086】
ここで、図21を用いて、NAND型フラッシュメモリ11に格納されるデータフォーマットの一例について説明する。このデータフォーマットは、ページサイズが8Kバイトの例である。図示するように、データフォーマットは、Data0〜15、ECCフレーム冗長部を有する。ECCフレーム冗長部は、データ部とパリティ部とで構成される。データ部は、ランダマイズフラグ、データ反転フラグ、ページ内ランダマイズフラグ、reserved、データ有効フラグ0、データ有効フラグ1、ランダマイズシフト量を有している。パリティ部は、ECCパリティを有している。また、各ページには、ECCフレーム冗長部内にページ冗長部が付与されている。このようなデータフォーマットでは、ランダマイズ対象の有無の属性ビットは、ページ内ランダマイズフラグとランダマイズシフト量とを合わせた領域(データの冗長部領域)により判断される。本図のデータフォーマットにおいて、ランダマイズシフト量は、ページ内ランダマイズ対象外である。ランダマイズシフト量以外のデータ部において、ハードウェア管理情報の先頭の1バイトはランダマイズ対象外となる。
【0087】
尚、上述した図20のデータフローでは、ECCパリティは、NAND型フラッシュメモリ11内に最終的に書き込まれるデータに対して演算を行い生成する。つまり、ランダマイズ対象データであれば、ランダマイズ状態のデータに対してECC処理を実行する。よって、ECCデコード処理は、NAND型フラッシュメモリ11上からの読み出しデータそのものに対して実施している。
【0088】
しかし、本実施形態におけるECC処理は、ランダマイズ対象データであっても、ランダマイズされたデータに対して行うことに限定されず、ECC処理をオリジナルデータに基づいて演算し、その後、ECCパリティも含めてランダマイズを実施してもよい。
【0089】
例えば、図22に示すように、第1のモードは、ランダマイズされたデータのランダマイズを解除しながらバッファにランダマイズ解除後のデータを格納しつつ、ランダマイズ解除後データに対してECC処理及び誤り位置に対する訂正処理を行う。一方、第2のモードでは、ランダマイズされたデータをそのままバッファに格納しつつ、ECC処理はランダマイズ解除後データに対して行い、ランダマイズデータに対して誤り位置に対する訂正処理を行う。
【0090】
尚、ランダマイズ処理そのものは乱数値とデータの排他的論理輪を取った結果であるため、ECC演算のために使用したデータとバッファに格納されたデータとの状態(ランダマイズの有無)が異なっていても正しく訂正を行うことは可能である。
【0091】
[6−2]モード切り替え
本実施形態では、MPU22の制御により、データ読み出し前にランダマイズの解除(第1のモード)又は非解除(第2のモード)のモード切り替えが行われる。
【0092】
まず、上述した第1のモードであるランダマイズ解除モードを使用するケースは、例えば、以下の場合が挙げられる。
【0093】
(1a)ホスト機器2に対してデータを出力する場合。
【0094】
(1b)ファームウェアが参照する管理データを取得する場合。
【0095】
(1c)データマージが必要になる場合。
【0096】
上記(1a)は、NAND型フラッシュメモリ11内のデータをホスト機器2に対して読み出す場合である。この場合、ランダマイズされたデータのランダマイズを解除しながらページバッファ28にランダマイズ解除後のデータを格納し、ランダマイズ解除後のデータが読み出される。
【0097】
上記(1b)は、ユーザではなく、コントローラ12が管理している管理データを、ファームウェアの処理でNAND型フラッシュメモリ11のバッファから取得する場合である。この場合、ランダマイズされたデータのランダマイズを解除しながらページバッファ28にランダマイズ解除後のデータを格納し、ランダマイズ解除後のデータが読み出される。
【0098】
上記(1c)は、NAND型フラッシュメモリ11上のデータとホスト機器2からの書き込みデータとをマージして新たにECCパリティを生成し、NAND型フラッシュメモリ11に対して書き込みを行う場合である。つまり、ECCフレームが例えば1KBであり、ホスト機器2の基本データ単位が512Bである場合、NAND型フラッシュメモリ11上の1KB中の512Bと組み合わせて1KBのフレームを新たに構成する必要がある。
【0099】
具体的には、図23に示すように、ある論理セクタXへの上書きが発生し、ECCフレームのアラインに合わない位置からの書き込みであった場合(例えば図21のData0から始まるページに対してData1から書き込まれた場合)は、ランダマイズを解除しながらデータを読み出し、このランダマイズ解除後のデータとホスト機器2からのライトデータとをマージ処理した後、新たにランダマイズを掛けてNAND型フラッシュメモリ11に書き込む。このような場合は、第1のモードにより、ランダマイズされたデータのランダマイズを解除しながらページバッファ28にランダマイズ解除後のデータを格納し、ランダマイズ解除後のデータが読み出されることになる。
【0100】
次に、上述した第2のモードであるランダマイズ非解除モードを使用するケースは、例えば、以下の場合が挙げられる。
【0101】
(2a)NAND型フラッシュメモリ11上のデータの属性が不明の場合。
【0102】
(2b)消去済みブロックかどうかの判定処理を行う場合。
【0103】
(2c)誤り位置に対してカラム単位の訂正を実施する場合。
【0104】
上記(2a)は、NAND型フラッシュメモリ11上のデータがランダマイズ状態か否かが不明である場合である。
【0105】
上記(2b)は、NAND型フラッシュメモリ11のブロックが、all“0”となっている消去済みブロックかどうかの判定を行うために、生データ(ランダマイズ状態のデータ)を参照する必要がある場合である。
【0106】
上記(2c)は、NAND型フラッシュメモリ11上でいわゆる引っ越し処理を行う際に、誤りが発生した位置のカラムに対して訂正を行う場合である。例えば、図24に示すように、ある論理セクタXへの上書きが発生した後で、少し間を空けた位置から書き込みが継続した場合、その間の空間を埋めるための前引っ越し処理が発生する。
【0107】
具体的には、NAND型フラッシュメモリ11の持つページコピー機能を使って、NAND型フラッシュメモリ11のページバッファ28に残っている引っ越し元のデータに対して誤り位置のみコントローラ12から訂正処理を行って書き戻しを行う。ここで、NAND型フラッシュメモリ11内の引っ越し元のデータは以前にランダマイズ状態で書き込んだデータであり、訂正後のデータもランダマイズ状態で書き戻す必要がある。このため、カラム単位の訂正前に実施するデータ読み出し結果は、ランダマイズ状態のままページバッファ28に格納する必要がある。
【0108】
尚、第1及び第2のモードとなるケースは、上述した例に限定されない。また、第1のモードの一例として挙げた上記ケースであっても第2のモードで使用することは可能であり、第2のモードの一例として挙げた上記ケースであっても第1のモードで使用することも可能である。
【0109】
[7]本実施形態の効果
ページ方向及びカラム方向の少なくとも一方で同一データが連続しないように書き込みデータをスクランブルしてあるNAND型フラッシュメモリ11において、スクランブルデータを読み出す場合、読み出しの用途に応じて2つの読み出しモードの切り替えを行うことにより、ランダマイズ解除処理による性能低下を最小限に留めることが可能となる。
【0110】
具体的には、ランダマイズされたデータの読み出し動作において、ランダマイズ解除を行いながらデータ格納する第1のモードとランダマイズ状態のままデータを格納する第2のモードとを用途に応じて切り替える。
【0111】
つまり、例えばホスト機器2からのデータ読み出し等の場合は、バッファのどの位置から読み出しを開始するのかが分からないため、上記第2のモードに切り替え、ランダマイズ状態のままバッファにデータ格納し、ホスト機器2に対するデータ出力時解除が必要な場合は出力要求時にシード値を算出し、ランダマイズ解除を行う。これにより、M系列乱数によるランダマイズを実施した時、基準点(先頭データ)以外の位置からのリードを行う場合にその位置までの乱数値を得るための演算オーバーヘッドの発生(ランダマイズ解除のための前処理時間が発生)を抑制できる。
【0112】
一方、例えばNAND型フラッシュメモリ11からのデータ読み出し等の場合は、必ずECC処理単位の先頭位置からの読み出しが保証されるため、上記第1のモードに切り替え、ランダマイズ解除を行いながらデータ格納する。
【0113】
以上のように、本実施形態では、NAND型フラッシュメモリ11に記録するデータをランダマイズすることによって信頼性の向上を図りながら、読み出しの用途に応じてモード切り替えを行うことで、ランダマイズ解除のためのシード値算出によるオーバーヘッド時間を削減し、ランダマイズ解除処理による性能低下を改善できる。
【0114】
その他、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【図面の簡単な説明】
【0115】
【図1】本発明の一実施形態に係るメモリシステムのブロック図。
【図2】本発明の一実施形態に係るメモリカードにおける信号ピンに対する信号割り当てを示す図。
【図3】本発明の一実施形態に係るメモリカードの備えるカードコントローラのブロック図。
【図4】本発明の一実施形態に係るフラッシュメモリのブロック図。
【図5】本発明の一実施形態に係るフラッシュメモリの具体的なブロック図。
【図6】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの回路図。
【図7】本発明の一実施形態に係るフラッシュメモリの閾値分布を示すグラフ。
【図8】本発明の一実施形態に係るフラッシュメモリの閾値分布を示すグラフであり、データの書き込み方法を示す図。
【図9】本発明の一実施形態に係るランダマイズ基本方針を説明するための図。
【図10】本発明の一実施形態に係るM系列の擬似乱数列発生回路の回路図。
【図11】本発明の一実施形態に係るランダマイズ方法1を説明するための図。
【図12】本発明の一実施形態に係るランダマイズ方法2(カラム方向)を説明するための図。
【図13】本発明の一実施形態に係るランダマイズ方法2(ページ方向)を説明するための図。
【図14】本発明の一実施形態に係るランダマイズ方法2のスクランブル回路のブロック図。
【図15】本発明の一実施形態に係るランダマイズ方法2の擬似乱数列発生回路の回路図。
【図16】本発明の一実施形態に係るランダマイズ方法3(ページ方向)で用いるスクランブルテーブルの概念図。
【図17】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの回路図。
【図18】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの概念図であり、各メモリセルにスクランブルされたデータが書き込まれた様子を示す図。
【図19】本発明の一実施形態に係るランダマイズ方法3のスクランブル回路のブロック図。
【図20】本発明の一実施形態に係るモード切り替え機能を有するデータ読み出しの概要を説明するための図。
【図21】本発明の一実施形態に係るデータフォーマットの一例を示す図。
【図22】本発明の一実施形態に係るモード切り替え機能を有するデータ読み出しの他の例を説明するための図。
【図23】本発明の一実施形態に係るデータマージが必要な場合(第1のモード)を説明するための図。
【図24】本発明の一実施形態に係る誤り位置に対してカラム単位で訂正を行う場合(第2のモード)を説明するための図。
【符号の説明】
【0116】
1…メモリカード、2…ホスト機器、11、…NAND型フラッシュメモリ、12…カードコントローラ、13…信号ピン、21…ホストインタフェースモジュール、22…MPU、23…フラッシュコントローラ、24…ROM、25…RAM、26…スクランブル回路、27…スクランブルテーブル、28…ページバッファ、29…ロウデコーダ、30…メモリセルアレイ、31…データ入力部、32…データ出力部、33…乱数加算回路、34…乱数減算回路、35…セグメントアドレス発生回路、36…初期値発生回路、37…ページアドレス発生回路、38…初期値Nビットシフト回路、39…擬似乱数列発生回路、40…ページ方向スクランブル回路、41、42…データ反転回路、50…シフトレジスタ。
【特許請求の範囲】
【請求項1】
ランダマイズされたランダマイズデータが書き込まれる半導体メモリと、
前記ランダマイズデータの読み出し時、前記ランダマイズデータのランダマイズを解除しながらバッファにランダマイズ解除後データを格納する第1のモードと前記ランダマイズデータを前記バッファに格納する第2のモードとを読み出しの用途に応じて切り替えるMPUと
を具備することを特徴とするメモリシステム。
【請求項2】
前記第1のモードでは、前記ランダマイズデータに対してECC処理を行い、前記ランダマイズ解除後データに対して誤り位置に対する訂正処理を行い、
前記第2のモードでは、前記ランダマイズデータに対して前記ECC処理及び前記訂正処理を行うことを特徴とする請求項1に記載のメモリシステム。
【請求項3】
前記第1のモードでは、前記ランダマイズ解除後データに対してECC処理及び誤り位置に対する訂正処理を行い、
前記第2のモードでは、前記ランダマイズ解除後データに対して前記ECC処理を行い、前記ランダマイズデータに対して前記訂正処理を行うことを特徴とする請求項1に記載のメモリシステム。
【請求項4】
前記第1のモードに切り替えられる場合は、ホスト機器に対してデータを出力する場合、ファームウェアが参照する管理データを取得する場合、データマージが必要になる場合のいずれかを含み、
前記第2のモードに切り替えられる場合は、前記半導体メモリに記憶されたデータの属性が不明の場合、前記半導体メモリの消去済みブロックかどうかの判定処理を行う場合、ECC処理による誤り位置に対してカラム単位の訂正を実施する場合のいずれかを含むことを特徴とする請求項1に記載のメモリシステム。
【請求項5】
前記半導体メモリは、NAND型フラッシュメモリであることを特徴とする請求項1に記載のメモリシステム。
【請求項1】
ランダマイズされたランダマイズデータが書き込まれる半導体メモリと、
前記ランダマイズデータの読み出し時、前記ランダマイズデータのランダマイズを解除しながらバッファにランダマイズ解除後データを格納する第1のモードと前記ランダマイズデータを前記バッファに格納する第2のモードとを読み出しの用途に応じて切り替えるMPUと
を具備することを特徴とするメモリシステム。
【請求項2】
前記第1のモードでは、前記ランダマイズデータに対してECC処理を行い、前記ランダマイズ解除後データに対して誤り位置に対する訂正処理を行い、
前記第2のモードでは、前記ランダマイズデータに対して前記ECC処理及び前記訂正処理を行うことを特徴とする請求項1に記載のメモリシステム。
【請求項3】
前記第1のモードでは、前記ランダマイズ解除後データに対してECC処理及び誤り位置に対する訂正処理を行い、
前記第2のモードでは、前記ランダマイズ解除後データに対して前記ECC処理を行い、前記ランダマイズデータに対して前記訂正処理を行うことを特徴とする請求項1に記載のメモリシステム。
【請求項4】
前記第1のモードに切り替えられる場合は、ホスト機器に対してデータを出力する場合、ファームウェアが参照する管理データを取得する場合、データマージが必要になる場合のいずれかを含み、
前記第2のモードに切り替えられる場合は、前記半導体メモリに記憶されたデータの属性が不明の場合、前記半導体メモリの消去済みブロックかどうかの判定処理を行う場合、ECC処理による誤り位置に対してカラム単位の訂正を実施する場合のいずれかを含むことを特徴とする請求項1に記載のメモリシステム。
【請求項5】
前記半導体メモリは、NAND型フラッシュメモリであることを特徴とする請求項1に記載のメモリシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【公開番号】特開2009−157836(P2009−157836A)
【公開日】平成21年7月16日(2009.7.16)
【国際特許分類】
【出願番号】特願2007−338219(P2007−338219)
【出願日】平成19年12月27日(2007.12.27)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成21年7月16日(2009.7.16)
【国際特許分類】
【出願日】平成19年12月27日(2007.12.27)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]