メモリシステム
【課題】NAND型フラッシュメモリに対する誤書き込みの発生を抑制する。
【解決手段】メモリシステムは、複数のページからなるメモリブロックを有するNAND型フラッシュメモリ11と、フラッシュメモリへのデータの書き込みを制御し、データを疑似乱数化するスクランブル回路26を有するコントローラと、を具備し、スクランブル回路は、セグメント単位で初期値を発生させる初期値発生回路36と、ページアドレス単位で初期値をNビットシフトさせる初期値シフト回路38と、Nビットシフトされた初期値を使用してM系列による擬似乱数列を発生させる疑似乱数発生回路39と、疑似乱数列をデータに加算する乱数加算回路33と、を有する。
【解決手段】メモリシステムは、複数のページからなるメモリブロックを有するNAND型フラッシュメモリ11と、フラッシュメモリへのデータの書き込みを制御し、データを疑似乱数化するスクランブル回路26を有するコントローラと、を具備し、スクランブル回路は、セグメント単位で初期値を発生させる初期値発生回路36と、ページアドレス単位で初期値をNビットシフトさせる初期値シフト回路38と、Nビットシフトされた初期値を使用してM系列による擬似乱数列を発生させる疑似乱数発生回路39と、疑似乱数列をデータに加算する乱数加算回路33と、を有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリシステムに関し、例えば、NAND型フラッシュメモリに入力される書き込みデータの疑似乱数化を行うメモリシステムに関する。
【背景技術】
【0002】
近年、デジタルカメラや携帯型オーディオプレーヤの急速な普及により、大容量の不揮発性半導体メモリの需要が拡大している。そして、不揮発性半導体メモリとしてNAND型フラッシュメモリが広く使用されている。NAND型フラッシュメモリは、近年、微細加工による大容量化が進展しており、動作信頼性が悪化するという問題があった。
【0003】
そこで、特許文献1等で開示されているように、M系列(Maximum length code)等によるランダムデータ発生回路を用いて、書き込みデータを疑似乱数化する方法が採用されている。これにより、NAND型フラッシュメモリのブロック内に書き込むデータを分散し、データパターンの集中を防止している。
【0004】
しかしなから、NAND型フラッシュメモリでは、非書き込みセルに対してワード線とチャネルとのカップリング(ブースト)を利用して書き込み非選択としているため、ある特定パターンの配置が連続する場合、ブロック内に書き込まれるセルの閾値レベルに偏りがあると、ブースト不足による誤書き込みが発生する場合がある。このような場合、誤り訂正(ECC)回路では完全に訂正できない場合もあるため、データの信頼性を十分に確保することが困難であった。
【特許文献1】特開平11−339495号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明は、NAND型フラッシュメモリに対する誤書き込みの発生を抑制することが可能なメモリシステムを提供する。
【課題を解決するための手段】
【0006】
本発明の一態様によるメモリシステムは、複数のページからなるメモリブロックを有するNAND型フラッシュメモリと、前記フラッシュメモリへのデータの書き込みを制御し、前記データを疑似乱数化するスクランブル回路を有するコントローラと、を具備し、前記スクランブル回路は、セグメント単位で初期値を発生させる初期値発生回路と、ページアドレス単位で前記初期値をNビットシフトさせる初期値シフト回路と、Nビットシフトされた前記初期値を使用してM系列による擬似乱数列を発生させる疑似乱数発生回路と、前記疑似乱数列を前記データに加算する乱数加算回路と、を有する。
【発明の効果】
【0007】
本発明によれば、NAND型フラッシュメモリに対する誤書き込みの発生を抑制することが可能なメモリシステムを提供できる。
【発明を実施するための最良の形態】
【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】
[2]カードコントローラの構成
図3を用いて、図1に示すカードコントローラ12の内部構成について説明する。図3は、本実施形態に係るカードコントローラ12のブロック図である。
【0019】
カードコントローラ12は、フラッシュメモリ11内部の物理状態(例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか)を管理する。そして、NAND型フラッシュメモリ11へのデータの書き込みや読み出しを制御する。
【0020】
図示するように、カードコントローラ12は、ホストインタフェースモジュール21、MPU(Micro Processing Unit)22、フラッシュコントローラ23、ROM(Read Only Memory)24、RAM(Random Access Memory)25、及びスクランブル回路26を有する。
【0021】
ホストインタフェースモジュール21は、カードコントローラ12とホスト機器2との間のインタフェース処理を行う。
【0022】
MPU22は、メモリカード1全体の動作を制御する。MPU22は、例えばメモリカード1が電源供給を受けたときに、ROM24に格納されているファームウェア(制御プログラム)をRAM25上に読み出して所定の処理を実行することにより、各種のテーブルをRAM25上に作成する。また、MPU22は、ホスト機器2から書き込みコマンド、読み出しコマンド、消去コマンドを受け取り、フラッシュメモリ11に対して所定の処理を実行する。さらに、MPU22は、スクランブル回路26を制御して、書き込みデータのスクランブルを行う。書き込みデータのスクランブルについては、後に詳述する。
【0023】
ROM24は、MPU22により制御される制御プログラム等を格納する。RAM25は、MPU22の作業エリアとして使用され、制御プログラムや各種のテーブル(表)を記憶する。さらに、RAM25は、予め作成されたスクランブルテーブル27を保持する。スクランブルテーブル27については、後に詳述する。フラッシュコントローラ23は、カードコントローラ12とフラッシュメモリ11との間のインタフェース処理を行う。
【0024】
[3]NAND型フラッシュメモリの構成
図4を用いて、NAND型フラッシュメモリ11の内部構成について簡単に説明する。図4は、本実施形態に係るNAND型フラッシュメモリ11のブロック図である。図示するようにNAND型フラッシュメモリ11は、メモリセルアレイ30、ページバッファ28、及びロウデコーダ29を備えている。
【0025】
メモリセルアレイ30は、複数のメモリブロックBLK0、BLK1、…を含んでいる。データの消去は、メモリブロックBLKn単位で行われる。すなわち、同一メモリブロックBLKn内のデータは一括して消去される。メモリブロックBLKnの各々は、複数のメモリセルトランジスタを備えている。また、メモリブロックBLKn内には、複数のワード線WL0、WL1、…と、ワード線WL0、WL1、…に直交するビット線BL0、BL1、…とが設けられている。以下、ワード線WL0、WL1、…を特に区別しない場合には単にワード線WLと呼び、ビット線BL0、BL1、…を特に区別しない場合には単にビット線BLと呼ぶ。同一行にあるメモリセルトランジスタは、同一のワード線に共通接続されている。また、同一列にあるメモリセルトランジスタは、複数のメモリセルトランジスタ単位でビット線BLに共通接続されている。尚、データの書き込み及び読み出しは、一本のワード線WLに接続される複数のメモリセルトランジスタの集合毎に行われ、このメモリセルトランジスタの集合を「1ページ」と呼ぶ。読み出し時及び書き込み時において、ロウアドレスによっていずれかのワード線WLが選択され、カラムアドレスによっていずれかのビット線BLが選択される。図4の例であると、フラッシュメモリ11の各メモリブロックBLKnは、例えば128ページを含んでいる。
【0026】
ページバッファ28は、フラッシュメモリ11へのデータ入出力を行い、データを一時的に保持する。ページバッファ28が保持可能なデータサイズは、各メモリブロックBLKnのページサイズと同じである。データ書き込み等の際、ページバッファ28は、フラッシュメモリ11に対するデータ入出力処理を、自身の記憶容量に相当する1ページ分の単位で実行する。また、読み出しの際は、1ページ分のメモリセルのデータをページバッファ28に転送し、I/O線を介してページバッファ28からシリアルに読み出される。
【0027】
ロウデコーダ29は、データの書き込み時及び読み出し時において、いずれかのワード線WLを選択する。
【0028】
本実施形態では、図5に示すように、例えば、1メモリブロックBLKnは、8kカラム×128ページ×8I/O(1024kバイト)で構成される。そして、1024バイトに対して誤り訂正符号αを含む冗長部を付加し、1セグメントを構成する。このセグメントは、データ部と冗長部とで構成されたコントローラ12のメモリ管理単位である。従って、1ページに8個のセグメントが存在するので、1ブロックあたり1024個(8×128)のセグメントが存在する。尚、図5は一例であり、これに限定されない。
【0029】
[4]メモリブロックの構成
図6を用いて、メモリブロックBLKnの詳細な構成について説明する。図6は、メモリブロックBLKnの等価回路図である。
【0030】
図示するように、メモリブロック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に共通接続されている。
【0031】
メモリセルトランジスタMTの各々は、半導体基板上にゲート絶縁膜を介在して形成された積層ゲートを備えたMOSトランジスタである。積層ゲートは、ゲート絶縁膜上に形成された電荷蓄積層(フローティングゲート)と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを含んでいる。各々のNANDストリングにおいて、64個のメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、各々の電流経路が直列接続されるように配置されている。そして、最もソース側に位置するメモリセルトランジスタMTから順に、制御ゲートがワード線WL0〜WL63にそれぞれ接続されている。従って、ワード線WL63に接続されたメモリセルトランジスタMTのドレインは選択トランジスタST1のソースに接続され、ワード線WL0に接続されたメモリセルトランジスタMTのソースは選択トランジスタST2のドレインに接続されている。
【0032】
ワード線WL0〜WL63は、メモリブロックBLKn内のNANDストリング間で、メモリセルトランジスタMTの制御ゲートを共通に接続している。つまり、メモリブロックBLKn内において同一行にあるメモリセルトランジスタMTの制御ゲートは、同一のワード線WLに接続される。また、ビット線BL0〜BLmは、メモリブロックBLKn間で、選択トランジスタST1のドレインを共通に接続している。つまり、複数のメモリブロックBLKn内において同一列にあるNANDストリングは、同一のビット線BLに接続される。
【0033】
尚、以下では、メモリセルトランジスタMTを単にメモリセルMCと呼ぶことがある。
【0034】
上記メモリセルMCの各々は、4値(“00”データ、“01”データ、“00”データ、又は“10”データ)のデータ、つまり2ビットデータを保持可能である。そしてこの2ビットには、2つの異なるページアドレスが割り当てられる。具体的には、2ビットデータのうち下位ビットに下位ページアドレスが割り当てられ、上位ビットに上位ページアドレスが割り当てられる。従って、本実施形態に係る構成であると、メモリブロックBLKnは128ページを含むから、上位ページが64ページであり、下位ページが64ページ存在する。
【0035】
図7を用いて、上記メモリセルMCの閾値について説明する。図7は、メモリセルMCの閾値分布を示すグラフであり、横軸が閾値電圧Vthを示し、縦軸がメモリセルの存在確率を示す。
【0036】
図示するように、メモリセルMCは、閾値電圧Vthの低い順に“11”、“01”、“00”、“10”の4つのデータを保持出来る。“11”データを保持するメモリセルの閾値電圧Vthは、Vth<0Vである。“01”データを保持するメモリセルの閾値電圧Vthは、0V<Vth<Vth1である。“00”データを保持するメモリセルの閾値電圧Vthは、Vth1<Vth<Vth2である。“10”データを保持するメモリセルの閾値電圧Vthは、Vth2<Vth<Vth3である。
【0037】
図8を用いて、上記4値のデータのメモリセルMCへの書き込み方法について簡単に説明する。図8は、メモリセルの閾値分布を示すグラフであり、書き込み時おけるメモリセルの閾値電圧Vthの変化の様子を示している。データは1ページに対して一括して書き込まれる。また、データの書き込みは、まず下位ページから行い、次に上位ページについて行う。
【0038】
書き込みにあたって、メモリセルは消去状態にある。すなわち、メモリセルの閾値電圧Vthは負の値であり、“11”データを保持した状態である。その状態で、まず下位ページについてデータの書き込みを行う。下位ページが“1”の場合には、フローティングゲートに電子は注入されず、閾値電圧Vthは不変である。下位ページが“0”の場合には、フローティングゲートに電子が注入され、閾値電圧Vthは正の方向へ変化し、約Vth1<Vth<Vth2となる。
【0039】
次に、上位ページの書き込みを行う。まず、下位ページが“1”であった場合について説明する。下位ページが“1”で、尚かつ上位ページも“1”である場合、上位ページの書き込み時においてもフローティングゲートに電子は注入されず、閾値電圧Vthは負の値を維持する。その結果、メモリセルには“11”が保持される。上位ページが“0”の場合、フローティングゲートに電子が注入される。その結果、閾値電圧Vthは負から正の方向へ変化し、0V<Vth<Vth1となる。すなわち、メモリセルには“01”が書き込まれる。
【0040】
次に、下位ページが“0”であった場合について説明する。下位ページが“0”で、上位ページが“0”である場合、上位ページの書き込み時にはフローティングゲートに電子が注入されない。よって、下位ページの書き込みの結果の値を維持する。すなわち、Vth1<Vth<Vth2であり、その結果、メモリセルには“00”が保持される。上位ページが“1”の場合、さらにフローティングゲートに電子が注入される。その結果、閾値電圧Vthはさらに正の方向へ変化し、Vth2<Vth<Vth3となる。すなわち、メモリセルには“10”が書き込まれる。
【0041】
[5]データスクランブル
本実施形態の書き込み動作では、カラム方向及びページ方向の両方において、データスクランブル(疑似乱数化)を行う。尚、本実施形態において、カラム方向とはワード線の延在方向であり、ページ方向とはビット線及びNANDストリングの延在方向である(図6参照)。
【0042】
[5−1]スクランブル方法1
本実施形態に係るスクランブル方法1は、ページ方向ではページアドレス毎にNビットシフトさせた疑似乱数回路の初期値を生成し、この初期値データを使用してカラム方向ではM系列乱数を用いてセグメント単位で擬似乱数列を生成することで、ページ方向及びカラム方向の両方において、データスクランブルを行う。
【0043】
図9を用いて、カラム方向のM系列乱数を用いたデータスクランブルについて説明する。各セグメント内において、M系列の乱数発生周期をI/Oの数で割った回数だけシフトさせた値を初期値(スタートビット)として与える。例えば、M14−1のM系列(16383通り)の乱数発生回路を使用した場合、NAND型フラッシュメモリの8個のI/Oに対しては、2048回シフトした値を各セグメントに対して初期値として与える。
【0044】
尚、上記の例では、各I/Oに対して均等にシフト回数を規定した場合であるが、これに限定されず、各I/O間でシフトさせる回数は異なっていてもよい。
【0045】
図10を用いて、ページ方向のデータスクランブルについて説明する。例えば、各I/Oの初期値を、ページ方向において各々N回シフトさせる。図10に示す1ビットシフトさせた例の場合、Page−0が「A1」からスタートするのに対し、Page−1はPage−0の初期値A1から1ビットシフトさせた「B1」からスタートし、Page−2はPage−1の初期値B1から1ビットシフトさせた「C1」からスタートする。
【0046】
次に、図11を用いて、上述したスクランブル方法1を実現するためのスクランブル回路26の概略的な構成について説明する。
【0047】
図11に示すように、スクランブル方法1のスクランブル回路26は、データ入力部31、データ出力部32、乱数加算回路33、乱数減算回路34、セグメントアドレス発生回路35、初期値発生回路36、ページアドレス発生回路37、初期値Nビットシフト回路38、擬似乱数列発生回路39を備えている。
【0048】
このようなスクランブル回路26を用いたデータ書き込みは次のように行われる。
【0049】
まず、ホスト機器2からデータの書き込み命令及び書き込みデータがメモリカード1に与えられ、カードコントローラ12のホストインタフェースモジュール21が書き込み命令及び書き込みデータを受信する。
【0050】
すると、MPU22は、受信した書き込みデータを書き込むべきメモリセルMCのセグメントアドレス及びページアドレスを算出する。これに基づいて、スクランブル回路26内のセグメントアドレス発生回路35がセグメントアドレスを発生し、ページアドレス発生回路37がページアドレスを発生する。
【0051】
一方、ホストインタフェースモジュール21で受信された書き込みデータはデータ入力部31に入力され、乱数加算回路33により書き込みデータと擬似乱数列とが加算され、乱数化されたデータがページ毎にNAND型フラッシュメモリ11に書き込まれる。
【0052】
ここで、擬似乱数列は、擬似乱数列発生回路39で、次のように生成される。セグメント毎の初期値(スタートビット)が初期値発生回路36により発生される。セグメントの初期値は、図9のスクランブル方法1のカラム方向のランダム化により決定される。そして、初期値Nビットシフト回路38により、図10で説明したようにページアドレス毎に初期値をNビットだけシフトさせる。以上のような方法でカラム方向及びページ方向の両方においてランダム化した擬似乱数列を、擬似乱数列発生回路39で生成する。
【0053】
尚、読み出し時は、乱数加算回路33で使用した擬似乱数列と同じ乱数列を用いて、乱数減算回路34で減算処理を行い、データ出力部32を介してページ毎にデータを読み出す。
【0054】
図12を用いて、図11の擬似乱数列発生回路39の一例について説明する。フィボナッチ型の擬似乱数列発生回路39は、1k+αカラムアドレス周期で疑似乱数データを発生し、NAND型フラッシュメモリ11へ書き込むデータと排他的論理和をとる。具体的には、図12に示すように、擬似乱数列発生回路39は、第1のシフトレジスタR1〜R14、第2のシフトレジスタ50、排他的論理和(エクスクルーシブORゲート)XOR1〜XOR5で構成される。
【0055】
第1のシフトレジスタR1〜R14のそれぞれは、直列に接続されている。第1のシフトレジスタR2、R3、R4、R5、R6、R7、R10、R12の各入力端子は、前段の第1のシフトレジスタR3、R4、R5、R6、R7、R8、R11、R13の各出力端子に接続されている。第1のシフトレジスタR1の出力端子は排他的論理和XOR1に接続され、この排他的論理和XOR1は第1のシフトレジスタR1の入力端子に接続されている。排他的論理和XOR1の出力端子は排他的論理和XOR2の入力端子に接続され、排他的論理和XOR2は第1のシフトレジスタR8の入力端子に接続されている。排他的論理和XOR2の出力端子は排他的論理和XOR3の入力端子に接続され、排他的論理和XOR3は第1のシフトレジスタR9の入力端子に接続されている。排他的論理和XOR3の出力端子は排他的論理和XOR4の入力端子に接続され、排他的論理和XOR4は第1のシフトレジスタR11の入力端子に接続されている。排他的論理和XOR4の出力端子は排他的論理和XOR5の入力端子に接続され、排他的論理和XOR5は第1のシフトレジスタR13の入力端子に接続されている。排他的論理和XOR5の出力端子は第1のシフトレジスタR14の入力端子に接続されている。
【0056】
このような第1のシフトレジスタR1〜R14のそれぞれには、シフトレジスタ50の出力端子が接続されている。
【0057】
尚、第1のシフトレジスタR1〜R14はカラム方向のデータスクランブルに使用され、シフトレジスタ50はページ方向のデータスクランブルに使用され、各ページの初期値を発生する。そして、擬似乱数列発生回路39により生成されたM系列擬似乱数の出力は、乱数加算回路33又は乱数減算回路34に入力される。
【0058】
[5−2]スクランブル方法2
スクランブル方法2は、上記スクランブル方法1の変形例であり、ページ方向にNビットシフトするだけでなく、さらに、ワード線WLのアドレス(以下、ワード線アドレス又はページアドレスと呼ぶ)に応じて反転・正転する。以下、ここでは、図3のRAM25が保持するスクランブルテーブル27と共に、スクランブル方法2の上記スクランブル方法1と異なる点について主に説明する。
【0059】
図13は、スクランブル方法2において用いるスクランブルテーブル27の概念図である。このスクランブルテーブル27は、外部から入力された1ページの書き込みデータを一定の規則に従って変えるためのスクランブル方式を保持している。
【0060】
図示するように、スクランブルテーブル27は、ワード線アドレスを例えば“4”で割った余りA毎に、当該ワード線アドレスに対応したデータの上位ページと下位ページの変え方を保持している。より具体的には、ワード線アドレスを“4”で割った余りAが“0”である場合には、上位ページ及び下位ページに書き込むべきデータを正転させて書き込む。つまり、入力されたデータを変えずにそのままメモリセルMCへ書き込む。余りAが“1”である場合には、上位ページ及び下位ページに書き込むデータを、それぞれ反転及び正転させて書き込む。余りAが“2”である場合には、上位ページ及び下位ページに書き込むデータを、それぞれ正転及び反転させて書き込む。余りAが“3”である場合には、上位ページ及び下位ページに書き込むデータを、共に反転させて書き込む。
【0061】
上記のようにワード線アドレスを“4”で割った余りA毎にスクランブル方式を有するということは、換言すれば、ワード線WLを4つのグループに分類し、グループ毎にスクランブル方式を変えていることに相当する。
【0062】
図14は、上記の方法でワード線WLを4つのグループに分類した結果を示す。図示するように、例えばワード線WL0〜WL63のワード線アドレスを、それぞれ“0”〜“63”とすると、ワード線WL0、WL4、WL8、・・・WL60についての余りAが“0”となり、これらのワード線WLが第1グループに分類される。また、ワード線WL1、WL5、WL9、・・・WLに61ついての余りAが“1”となり、これらのワード線WLが第2グループに分類される。さらに、ワード線WL2、WL6、WL10、・・・WL62についての余りAが“2”となり、これらのワード線WLが第3グループに分類される。そして、ワード線WL3、WL7、WL11、・・・WL63についての余りAが“3”となり、これらのワード線WLが第4グループに分類される。その上で、第1〜第4グループ毎に、それぞれ異なるスクランブル方式が採用される。スクランブル回路26は、上記スクランブル方式に従って、外部から入力されたデータのスクランブルを行う。
【0063】
上記スクランブルテーブル27を用いた場合の具体例について、図15を用いて説明する。本図は、全メモリセルMCに対して“00”を書き込む場合において、実際の各メモリセルMCに対して書き込まれたデータを示す。
【0064】
図示するように、第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”が書き込まれる。
【0065】
次に、図16を用いて、上述したスクランブル方法2を実現するためのスクランブル回路26の概略的な構成について説明する。図16に示すように、スクランブル方法2のスクランブル回路26は、図11のスクランブル方法1のスクランブル回路26に、ページ方向スクランブル回路40、データ反転回路41、42をさらに備えている。
【0066】
このようなスクランブル回路26を用いたデータ書き込みは次のように行われる。まず、上述したスクランブル方法1と同様の方法で、カラム方向及びページ方向の両方において疑似乱数化した擬似乱数列を、擬似乱数列発生回路39で生成する。そして、乱数加算回路33により書き込みデータと擬似乱数列とが加算され、乱数化されたデータが生成される。さらに、スクランブル方法2では、ページ方向スクランブル回路40において、図13に示すスクランブルテーブル27を用いてページ方向のデータスクランブルを実施し、データ反転回路41により乱数化されたデータに対してデータ反転を行う。
【0067】
具体的には、MPU22は、ページアドレス発生回路37で発生されたページアドレス(以下、ワード線アドレスと呼ぶ)を用いて、このワード線アドレスに対応するワード線WLが第1〜第4グループのいずれに相当するかを判断する。すなわち、ワード線アドレスをM、グループ数を“N”(本実施形態ではN=“4”)とすると、A=M mod Nなる計算を行う。余りAがそれぞれ“0”〜“3”の場合、当該ワード線アドレスに対応するワード線は第1〜第4グループのそれぞれに属することが分かる。
【0068】
次に、MPU22は、RAM25に保持される図13のスクランブルテーブル27を参照する。そして、判断されたグループに応じて、スクランブル方式を選択する。例えば、A=“3”であり、当該ワード線アドレスに対応するワード線が第4グループに属すると判断された場合には、MPU22は書き込みデータの上位ページ及び下位ページの両方を反転させるスクランブル方式を選択し、その旨をスクランブル回路26に命令する。
【0069】
すると、スクランブル回路26内のページ方向スクランブル回路40及びデータ反転回路41は、MPU22によって選択されたスクランブル方式に従って、書き込みデータをスクランブルする。例えば、第4グループに属するワード線WLの上位ページデータを書き込む場合には、当該ページデータの全てを反転させる。
【0070】
尚、データの読み出しの際には、外部から与えられたアドレスに従ってメモリセルからデータが読み出されると共に、MPU22は当該アドレスに対応したスクランブル方式をスクランブルテーブル27から読み出す。そして、読み出したスクランブル方式に応じて、読み出しデータを解読する。例えば、第3グループに属するワード線の下位ページデータを読み出す場合には、スクランブル方式は図13の通り「反転」であるから、MPU22の命令によりデータ反転回路42は読み出しデータを反転させて外部へ出力する。このような読み出し方法を行うため、データのページ毎のコピーは、同一のグループに属するワード線間に制限される。
【0071】
[5−3]スクランブル方法3
スクランブル方法3では、スクランブルを行うブロックを判定し、特定のブロックの場合はデータスクランブルを行わずに読み書きを行う。このようなスクランブル方法3が用いられる場合について、以下に説明する。
【0072】
高信頼性を要求するデータ(例えば、FAT:ファイル・アロケーション・テーブル)等の場合、システムは多値NAND品に対して2値で読み書きを行う。これは、一つのセルに一つ(“1”か“0”)のデータしか書き込みを行わないことにより、書き込み/読み出しマージンを確保するものである。つまり、4値品の場合でも、敢えて特定のデータを2値として扱い、特定の領域(例えば、先頭のブロック)に書いたり読んだりする。この領域を乱数化すると、上位ページをスキップすれば別であるが、必然的に4値化されて本来の目的が達成できない。そこで、これを防止するために、その特定のブロックについては乱数化を制限する。裏を返せば、2値で取り扱うブロックをシステムが特定のブロックとして認識しているため、そのフラグを用いて制御する。つまり、2値で取り扱う特定のブロックに対しては、乱数加算も乱数減算も行わず、ストレートに読み書きを行う。
【0073】
このような読み書きを実現するスクランブル回路26の概略的な構成について、図17を用いて説明する。
【0074】
図17に示すように、スクランブル回路26は、データ入力部31、データ出力部32、乱数加算回路33、乱数減算回路34、擬似乱数列発生回路39、アドレス発生回路43、2値書き込みブロック判定回路44、乱数加算回路バイパス回路45、乱数減算回路バイパス回路46を備えている。
【0075】
アドレス発生回路43は、書き込みデータのアドレスを発生させる。このアドレス発生回路43は、例えば、上述した図11及び図16に示すセグメントアドレス発生回路35、初期値発生回路36、ページアドレス発生回路37、初期値Nビットシフト回路38を備えていてもよい。
【0076】
2値書き込みブロック判定回路44は、フラグを用いて、アドレス発生回路43で指定された書き込みデータのアドレスが、2値で取り扱う特定のブロック(以下、特定ブロックと呼ぶ)に含まれるか否かを判断する。その結果、特定ブロックに含まれる場合は、乱数加算回路33を介さず、乱数加算回路バイパス回路45により書き込みデータがそのままNAND型フラッシュメモリ11に書き込まれる。同様に、読み出し時も、特定ブロックに含まれる場合は、乱数減算回路34を介さず、乱数減算回路バイパス回路46により書き込みデータがそのまま読み出される。
【0077】
尚、スクランブル方法3では、上述したスクランブル方法1及び2のいずれかを組み合わせることも可能である。
【0078】
また、本実施形態のスクランブル方法では、ひとつのセグメントのバイト数を種々変更することが可能である。また、複数のセグメント単位やページ単位でも擬似乱数化してもよい。
【0079】
[6]効果
本発明の一実施形態では、M系列符号生成回路とシフトレジスタを併用した擬似乱数列発生回路39を用いることにより、NAND型フラッシュメモリ11のブロックを構成するカラムとページの両方向において、ブロック内に書き込むデータが分散され、特定のデータパターンの集中を防止することができる。これにより、多値NAND型フラッシュメモリ11のブロック内に書き込まれるセルの閾値レベルの分布を均一に分散させることができる。従って、カップリング等の影響によるブースト不足等による誤書き込みを防止することが可能となる。
【0080】
具体的に、図18(a)乃至(c)、図19(a)及び(b)を用いて、8GbのNAND型フラッシュメモリ11にアプリケーションで実際に書き込んだデータを解析し、ブロック内のセルの閾値レベルの分布を調査したシミュレーション結果(正規プロット)について説明する。各図において、横軸は、1つのブロックに書き込まれるセルの各閾値レベルの数を示し、縦軸は、シグマ(解析した全てのブロックにつき各セルの閾値レベルの数を大きい順に並べ替えた)を示している。また、各図のEレベル、Aレベル、Bレベル、Cレベルは、図7の“11”、“01”、“10”、“00”の閾値レベルに対応している。
【0081】
まず、図18(a)の比較例1は、乱数化する前の元データを用いた場合である。図18(b)の比較例2は、カラム方向のみM系列で乱数化した場合である。図18(c)の比較例3は、カラム方向にM系列で乱数化し、ページ方向は4ページ単位でデータを反転させた場合である。一方、図19(a)は、上述したスクランブル方法1の場合である。つまり、図19(a)では、ページアドレス毎に1ビットシフトした疑似乱数回路の初期値データを使用して、カラム方向にM系列でランダム化した場合を示す。図19(b)は、上述したスクランブル方法2の場合である。つまり、図19(b)では、ページアドレス毎に1ビットシフトした疑似乱数回路の初期値を使用して、カラム方向にM系列で疑似乱数化し、さらに、ページアドレス方向にページアドレスに応じてデータを反転させた場合を示す。このような図19(a)及び(b)の場合、図18(a)乃至(c)の比較例1〜3と比べて、各セルの閾値レベルの分布の均一性が大幅に改善されていることが分かる。
【0082】
その他、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【図面の簡単な説明】
【0083】
【図1】本発明の一実施形態に係るメモリシステムのブロック図。
【図2】本発明の一実施形態に係るメモリカードにおける信号ピンに対する信号割り当てを示す図。
【図3】本発明の一実施形態に係るメモリカードの備えるカードコントローラのブロック図。
【図4】本発明の一実施形態に係るフラッシュメモリのブロック図。
【図5】本発明の一実施形態に係るフラッシュメモリの具体的なブロック図。
【図6】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの回路図。
【図7】本発明の一実施形態に係るフラッシュメモリの閾値分布を示すグラフ。
【図8】本発明の一実施形態に係るフラッシュメモリの閾値分布を示すグラフであり、データの書き込み方法を示す図。
【図9】本発明の一実施形態に係るスクランブル方法1(カラム方向)を説明するための図。
【図10】本発明の一実施形態に係るスクランブル方法1(ページ方向)を説明するための図。
【図11】本発明の一実施形態に係るスクランブル方法1のスクランブル回路のブロック図。
【図12】本発明の一実施形態に係るスクランブル方法1の擬似乱数列発生回路の回路図。
【図13】本発明の一実施形態に係るスクランブル方法2(ページ方向)で用いるスクランブルテーブルの概念図。
【図14】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの回路図。
【図15】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの概念図であり、各メモリセルにスクランブルされたデータが書き込まれた様子を示す図。
【図16】本発明の一実施形態に係るスクランブル方法2のスクランブル回路のブロック図。
【図17】本発明の一実施形態に係るスクランブル方法3のスクランブル回路のブロック図。
【図18】本発明の参考例のNAND型フラッシュメモリのセル閾値レベルの分布のシミュレーション結果の図。
【図19】本発明の一実施形態に係るスクランブル方法1及び2のNAND型フラッシュメモリのセル閾値レベルの分布のシミュレーション結果の図。
【符号の説明】
【0084】
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…データ反転回路、43…アドレス発生回路、44…2値書き込みブロック判定回路、45…乱数加算回路バイパス回路、46…乱数減算回路バイパス回路、50…シフトレジスタ。
【技術分野】
【0001】
本発明は、メモリシステムに関し、例えば、NAND型フラッシュメモリに入力される書き込みデータの疑似乱数化を行うメモリシステムに関する。
【背景技術】
【0002】
近年、デジタルカメラや携帯型オーディオプレーヤの急速な普及により、大容量の不揮発性半導体メモリの需要が拡大している。そして、不揮発性半導体メモリとしてNAND型フラッシュメモリが広く使用されている。NAND型フラッシュメモリは、近年、微細加工による大容量化が進展しており、動作信頼性が悪化するという問題があった。
【0003】
そこで、特許文献1等で開示されているように、M系列(Maximum length code)等によるランダムデータ発生回路を用いて、書き込みデータを疑似乱数化する方法が採用されている。これにより、NAND型フラッシュメモリのブロック内に書き込むデータを分散し、データパターンの集中を防止している。
【0004】
しかしなから、NAND型フラッシュメモリでは、非書き込みセルに対してワード線とチャネルとのカップリング(ブースト)を利用して書き込み非選択としているため、ある特定パターンの配置が連続する場合、ブロック内に書き込まれるセルの閾値レベルに偏りがあると、ブースト不足による誤書き込みが発生する場合がある。このような場合、誤り訂正(ECC)回路では完全に訂正できない場合もあるため、データの信頼性を十分に確保することが困難であった。
【特許文献1】特開平11−339495号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明は、NAND型フラッシュメモリに対する誤書き込みの発生を抑制することが可能なメモリシステムを提供する。
【課題を解決するための手段】
【0006】
本発明の一態様によるメモリシステムは、複数のページからなるメモリブロックを有するNAND型フラッシュメモリと、前記フラッシュメモリへのデータの書き込みを制御し、前記データを疑似乱数化するスクランブル回路を有するコントローラと、を具備し、前記スクランブル回路は、セグメント単位で初期値を発生させる初期値発生回路と、ページアドレス単位で前記初期値をNビットシフトさせる初期値シフト回路と、Nビットシフトされた前記初期値を使用してM系列による擬似乱数列を発生させる疑似乱数発生回路と、前記疑似乱数列を前記データに加算する乱数加算回路と、を有する。
【発明の効果】
【0007】
本発明によれば、NAND型フラッシュメモリに対する誤書き込みの発生を抑制することが可能なメモリシステムを提供できる。
【発明を実施するための最良の形態】
【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】
[2]カードコントローラの構成
図3を用いて、図1に示すカードコントローラ12の内部構成について説明する。図3は、本実施形態に係るカードコントローラ12のブロック図である。
【0019】
カードコントローラ12は、フラッシュメモリ11内部の物理状態(例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか)を管理する。そして、NAND型フラッシュメモリ11へのデータの書き込みや読み出しを制御する。
【0020】
図示するように、カードコントローラ12は、ホストインタフェースモジュール21、MPU(Micro Processing Unit)22、フラッシュコントローラ23、ROM(Read Only Memory)24、RAM(Random Access Memory)25、及びスクランブル回路26を有する。
【0021】
ホストインタフェースモジュール21は、カードコントローラ12とホスト機器2との間のインタフェース処理を行う。
【0022】
MPU22は、メモリカード1全体の動作を制御する。MPU22は、例えばメモリカード1が電源供給を受けたときに、ROM24に格納されているファームウェア(制御プログラム)をRAM25上に読み出して所定の処理を実行することにより、各種のテーブルをRAM25上に作成する。また、MPU22は、ホスト機器2から書き込みコマンド、読み出しコマンド、消去コマンドを受け取り、フラッシュメモリ11に対して所定の処理を実行する。さらに、MPU22は、スクランブル回路26を制御して、書き込みデータのスクランブルを行う。書き込みデータのスクランブルについては、後に詳述する。
【0023】
ROM24は、MPU22により制御される制御プログラム等を格納する。RAM25は、MPU22の作業エリアとして使用され、制御プログラムや各種のテーブル(表)を記憶する。さらに、RAM25は、予め作成されたスクランブルテーブル27を保持する。スクランブルテーブル27については、後に詳述する。フラッシュコントローラ23は、カードコントローラ12とフラッシュメモリ11との間のインタフェース処理を行う。
【0024】
[3]NAND型フラッシュメモリの構成
図4を用いて、NAND型フラッシュメモリ11の内部構成について簡単に説明する。図4は、本実施形態に係るNAND型フラッシュメモリ11のブロック図である。図示するようにNAND型フラッシュメモリ11は、メモリセルアレイ30、ページバッファ28、及びロウデコーダ29を備えている。
【0025】
メモリセルアレイ30は、複数のメモリブロックBLK0、BLK1、…を含んでいる。データの消去は、メモリブロックBLKn単位で行われる。すなわち、同一メモリブロックBLKn内のデータは一括して消去される。メモリブロックBLKnの各々は、複数のメモリセルトランジスタを備えている。また、メモリブロックBLKn内には、複数のワード線WL0、WL1、…と、ワード線WL0、WL1、…に直交するビット線BL0、BL1、…とが設けられている。以下、ワード線WL0、WL1、…を特に区別しない場合には単にワード線WLと呼び、ビット線BL0、BL1、…を特に区別しない場合には単にビット線BLと呼ぶ。同一行にあるメモリセルトランジスタは、同一のワード線に共通接続されている。また、同一列にあるメモリセルトランジスタは、複数のメモリセルトランジスタ単位でビット線BLに共通接続されている。尚、データの書き込み及び読み出しは、一本のワード線WLに接続される複数のメモリセルトランジスタの集合毎に行われ、このメモリセルトランジスタの集合を「1ページ」と呼ぶ。読み出し時及び書き込み時において、ロウアドレスによっていずれかのワード線WLが選択され、カラムアドレスによっていずれかのビット線BLが選択される。図4の例であると、フラッシュメモリ11の各メモリブロックBLKnは、例えば128ページを含んでいる。
【0026】
ページバッファ28は、フラッシュメモリ11へのデータ入出力を行い、データを一時的に保持する。ページバッファ28が保持可能なデータサイズは、各メモリブロックBLKnのページサイズと同じである。データ書き込み等の際、ページバッファ28は、フラッシュメモリ11に対するデータ入出力処理を、自身の記憶容量に相当する1ページ分の単位で実行する。また、読み出しの際は、1ページ分のメモリセルのデータをページバッファ28に転送し、I/O線を介してページバッファ28からシリアルに読み出される。
【0027】
ロウデコーダ29は、データの書き込み時及び読み出し時において、いずれかのワード線WLを選択する。
【0028】
本実施形態では、図5に示すように、例えば、1メモリブロックBLKnは、8kカラム×128ページ×8I/O(1024kバイト)で構成される。そして、1024バイトに対して誤り訂正符号αを含む冗長部を付加し、1セグメントを構成する。このセグメントは、データ部と冗長部とで構成されたコントローラ12のメモリ管理単位である。従って、1ページに8個のセグメントが存在するので、1ブロックあたり1024個(8×128)のセグメントが存在する。尚、図5は一例であり、これに限定されない。
【0029】
[4]メモリブロックの構成
図6を用いて、メモリブロックBLKnの詳細な構成について説明する。図6は、メモリブロックBLKnの等価回路図である。
【0030】
図示するように、メモリブロック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に共通接続されている。
【0031】
メモリセルトランジスタMTの各々は、半導体基板上にゲート絶縁膜を介在して形成された積層ゲートを備えたMOSトランジスタである。積層ゲートは、ゲート絶縁膜上に形成された電荷蓄積層(フローティングゲート)と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを含んでいる。各々のNANDストリングにおいて、64個のメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、各々の電流経路が直列接続されるように配置されている。そして、最もソース側に位置するメモリセルトランジスタMTから順に、制御ゲートがワード線WL0〜WL63にそれぞれ接続されている。従って、ワード線WL63に接続されたメモリセルトランジスタMTのドレインは選択トランジスタST1のソースに接続され、ワード線WL0に接続されたメモリセルトランジスタMTのソースは選択トランジスタST2のドレインに接続されている。
【0032】
ワード線WL0〜WL63は、メモリブロックBLKn内のNANDストリング間で、メモリセルトランジスタMTの制御ゲートを共通に接続している。つまり、メモリブロックBLKn内において同一行にあるメモリセルトランジスタMTの制御ゲートは、同一のワード線WLに接続される。また、ビット線BL0〜BLmは、メモリブロックBLKn間で、選択トランジスタST1のドレインを共通に接続している。つまり、複数のメモリブロックBLKn内において同一列にあるNANDストリングは、同一のビット線BLに接続される。
【0033】
尚、以下では、メモリセルトランジスタMTを単にメモリセルMCと呼ぶことがある。
【0034】
上記メモリセルMCの各々は、4値(“00”データ、“01”データ、“00”データ、又は“10”データ)のデータ、つまり2ビットデータを保持可能である。そしてこの2ビットには、2つの異なるページアドレスが割り当てられる。具体的には、2ビットデータのうち下位ビットに下位ページアドレスが割り当てられ、上位ビットに上位ページアドレスが割り当てられる。従って、本実施形態に係る構成であると、メモリブロックBLKnは128ページを含むから、上位ページが64ページであり、下位ページが64ページ存在する。
【0035】
図7を用いて、上記メモリセルMCの閾値について説明する。図7は、メモリセルMCの閾値分布を示すグラフであり、横軸が閾値電圧Vthを示し、縦軸がメモリセルの存在確率を示す。
【0036】
図示するように、メモリセルMCは、閾値電圧Vthの低い順に“11”、“01”、“00”、“10”の4つのデータを保持出来る。“11”データを保持するメモリセルの閾値電圧Vthは、Vth<0Vである。“01”データを保持するメモリセルの閾値電圧Vthは、0V<Vth<Vth1である。“00”データを保持するメモリセルの閾値電圧Vthは、Vth1<Vth<Vth2である。“10”データを保持するメモリセルの閾値電圧Vthは、Vth2<Vth<Vth3である。
【0037】
図8を用いて、上記4値のデータのメモリセルMCへの書き込み方法について簡単に説明する。図8は、メモリセルの閾値分布を示すグラフであり、書き込み時おけるメモリセルの閾値電圧Vthの変化の様子を示している。データは1ページに対して一括して書き込まれる。また、データの書き込みは、まず下位ページから行い、次に上位ページについて行う。
【0038】
書き込みにあたって、メモリセルは消去状態にある。すなわち、メモリセルの閾値電圧Vthは負の値であり、“11”データを保持した状態である。その状態で、まず下位ページについてデータの書き込みを行う。下位ページが“1”の場合には、フローティングゲートに電子は注入されず、閾値電圧Vthは不変である。下位ページが“0”の場合には、フローティングゲートに電子が注入され、閾値電圧Vthは正の方向へ変化し、約Vth1<Vth<Vth2となる。
【0039】
次に、上位ページの書き込みを行う。まず、下位ページが“1”であった場合について説明する。下位ページが“1”で、尚かつ上位ページも“1”である場合、上位ページの書き込み時においてもフローティングゲートに電子は注入されず、閾値電圧Vthは負の値を維持する。その結果、メモリセルには“11”が保持される。上位ページが“0”の場合、フローティングゲートに電子が注入される。その結果、閾値電圧Vthは負から正の方向へ変化し、0V<Vth<Vth1となる。すなわち、メモリセルには“01”が書き込まれる。
【0040】
次に、下位ページが“0”であった場合について説明する。下位ページが“0”で、上位ページが“0”である場合、上位ページの書き込み時にはフローティングゲートに電子が注入されない。よって、下位ページの書き込みの結果の値を維持する。すなわち、Vth1<Vth<Vth2であり、その結果、メモリセルには“00”が保持される。上位ページが“1”の場合、さらにフローティングゲートに電子が注入される。その結果、閾値電圧Vthはさらに正の方向へ変化し、Vth2<Vth<Vth3となる。すなわち、メモリセルには“10”が書き込まれる。
【0041】
[5]データスクランブル
本実施形態の書き込み動作では、カラム方向及びページ方向の両方において、データスクランブル(疑似乱数化)を行う。尚、本実施形態において、カラム方向とはワード線の延在方向であり、ページ方向とはビット線及びNANDストリングの延在方向である(図6参照)。
【0042】
[5−1]スクランブル方法1
本実施形態に係るスクランブル方法1は、ページ方向ではページアドレス毎にNビットシフトさせた疑似乱数回路の初期値を生成し、この初期値データを使用してカラム方向ではM系列乱数を用いてセグメント単位で擬似乱数列を生成することで、ページ方向及びカラム方向の両方において、データスクランブルを行う。
【0043】
図9を用いて、カラム方向のM系列乱数を用いたデータスクランブルについて説明する。各セグメント内において、M系列の乱数発生周期をI/Oの数で割った回数だけシフトさせた値を初期値(スタートビット)として与える。例えば、M14−1のM系列(16383通り)の乱数発生回路を使用した場合、NAND型フラッシュメモリの8個のI/Oに対しては、2048回シフトした値を各セグメントに対して初期値として与える。
【0044】
尚、上記の例では、各I/Oに対して均等にシフト回数を規定した場合であるが、これに限定されず、各I/O間でシフトさせる回数は異なっていてもよい。
【0045】
図10を用いて、ページ方向のデータスクランブルについて説明する。例えば、各I/Oの初期値を、ページ方向において各々N回シフトさせる。図10に示す1ビットシフトさせた例の場合、Page−0が「A1」からスタートするのに対し、Page−1はPage−0の初期値A1から1ビットシフトさせた「B1」からスタートし、Page−2はPage−1の初期値B1から1ビットシフトさせた「C1」からスタートする。
【0046】
次に、図11を用いて、上述したスクランブル方法1を実現するためのスクランブル回路26の概略的な構成について説明する。
【0047】
図11に示すように、スクランブル方法1のスクランブル回路26は、データ入力部31、データ出力部32、乱数加算回路33、乱数減算回路34、セグメントアドレス発生回路35、初期値発生回路36、ページアドレス発生回路37、初期値Nビットシフト回路38、擬似乱数列発生回路39を備えている。
【0048】
このようなスクランブル回路26を用いたデータ書き込みは次のように行われる。
【0049】
まず、ホスト機器2からデータの書き込み命令及び書き込みデータがメモリカード1に与えられ、カードコントローラ12のホストインタフェースモジュール21が書き込み命令及び書き込みデータを受信する。
【0050】
すると、MPU22は、受信した書き込みデータを書き込むべきメモリセルMCのセグメントアドレス及びページアドレスを算出する。これに基づいて、スクランブル回路26内のセグメントアドレス発生回路35がセグメントアドレスを発生し、ページアドレス発生回路37がページアドレスを発生する。
【0051】
一方、ホストインタフェースモジュール21で受信された書き込みデータはデータ入力部31に入力され、乱数加算回路33により書き込みデータと擬似乱数列とが加算され、乱数化されたデータがページ毎にNAND型フラッシュメモリ11に書き込まれる。
【0052】
ここで、擬似乱数列は、擬似乱数列発生回路39で、次のように生成される。セグメント毎の初期値(スタートビット)が初期値発生回路36により発生される。セグメントの初期値は、図9のスクランブル方法1のカラム方向のランダム化により決定される。そして、初期値Nビットシフト回路38により、図10で説明したようにページアドレス毎に初期値をNビットだけシフトさせる。以上のような方法でカラム方向及びページ方向の両方においてランダム化した擬似乱数列を、擬似乱数列発生回路39で生成する。
【0053】
尚、読み出し時は、乱数加算回路33で使用した擬似乱数列と同じ乱数列を用いて、乱数減算回路34で減算処理を行い、データ出力部32を介してページ毎にデータを読み出す。
【0054】
図12を用いて、図11の擬似乱数列発生回路39の一例について説明する。フィボナッチ型の擬似乱数列発生回路39は、1k+αカラムアドレス周期で疑似乱数データを発生し、NAND型フラッシュメモリ11へ書き込むデータと排他的論理和をとる。具体的には、図12に示すように、擬似乱数列発生回路39は、第1のシフトレジスタR1〜R14、第2のシフトレジスタ50、排他的論理和(エクスクルーシブORゲート)XOR1〜XOR5で構成される。
【0055】
第1のシフトレジスタR1〜R14のそれぞれは、直列に接続されている。第1のシフトレジスタR2、R3、R4、R5、R6、R7、R10、R12の各入力端子は、前段の第1のシフトレジスタR3、R4、R5、R6、R7、R8、R11、R13の各出力端子に接続されている。第1のシフトレジスタR1の出力端子は排他的論理和XOR1に接続され、この排他的論理和XOR1は第1のシフトレジスタR1の入力端子に接続されている。排他的論理和XOR1の出力端子は排他的論理和XOR2の入力端子に接続され、排他的論理和XOR2は第1のシフトレジスタR8の入力端子に接続されている。排他的論理和XOR2の出力端子は排他的論理和XOR3の入力端子に接続され、排他的論理和XOR3は第1のシフトレジスタR9の入力端子に接続されている。排他的論理和XOR3の出力端子は排他的論理和XOR4の入力端子に接続され、排他的論理和XOR4は第1のシフトレジスタR11の入力端子に接続されている。排他的論理和XOR4の出力端子は排他的論理和XOR5の入力端子に接続され、排他的論理和XOR5は第1のシフトレジスタR13の入力端子に接続されている。排他的論理和XOR5の出力端子は第1のシフトレジスタR14の入力端子に接続されている。
【0056】
このような第1のシフトレジスタR1〜R14のそれぞれには、シフトレジスタ50の出力端子が接続されている。
【0057】
尚、第1のシフトレジスタR1〜R14はカラム方向のデータスクランブルに使用され、シフトレジスタ50はページ方向のデータスクランブルに使用され、各ページの初期値を発生する。そして、擬似乱数列発生回路39により生成されたM系列擬似乱数の出力は、乱数加算回路33又は乱数減算回路34に入力される。
【0058】
[5−2]スクランブル方法2
スクランブル方法2は、上記スクランブル方法1の変形例であり、ページ方向にNビットシフトするだけでなく、さらに、ワード線WLのアドレス(以下、ワード線アドレス又はページアドレスと呼ぶ)に応じて反転・正転する。以下、ここでは、図3のRAM25が保持するスクランブルテーブル27と共に、スクランブル方法2の上記スクランブル方法1と異なる点について主に説明する。
【0059】
図13は、スクランブル方法2において用いるスクランブルテーブル27の概念図である。このスクランブルテーブル27は、外部から入力された1ページの書き込みデータを一定の規則に従って変えるためのスクランブル方式を保持している。
【0060】
図示するように、スクランブルテーブル27は、ワード線アドレスを例えば“4”で割った余りA毎に、当該ワード線アドレスに対応したデータの上位ページと下位ページの変え方を保持している。より具体的には、ワード線アドレスを“4”で割った余りAが“0”である場合には、上位ページ及び下位ページに書き込むべきデータを正転させて書き込む。つまり、入力されたデータを変えずにそのままメモリセルMCへ書き込む。余りAが“1”である場合には、上位ページ及び下位ページに書き込むデータを、それぞれ反転及び正転させて書き込む。余りAが“2”である場合には、上位ページ及び下位ページに書き込むデータを、それぞれ正転及び反転させて書き込む。余りAが“3”である場合には、上位ページ及び下位ページに書き込むデータを、共に反転させて書き込む。
【0061】
上記のようにワード線アドレスを“4”で割った余りA毎にスクランブル方式を有するということは、換言すれば、ワード線WLを4つのグループに分類し、グループ毎にスクランブル方式を変えていることに相当する。
【0062】
図14は、上記の方法でワード線WLを4つのグループに分類した結果を示す。図示するように、例えばワード線WL0〜WL63のワード線アドレスを、それぞれ“0”〜“63”とすると、ワード線WL0、WL4、WL8、・・・WL60についての余りAが“0”となり、これらのワード線WLが第1グループに分類される。また、ワード線WL1、WL5、WL9、・・・WLに61ついての余りAが“1”となり、これらのワード線WLが第2グループに分類される。さらに、ワード線WL2、WL6、WL10、・・・WL62についての余りAが“2”となり、これらのワード線WLが第3グループに分類される。そして、ワード線WL3、WL7、WL11、・・・WL63についての余りAが“3”となり、これらのワード線WLが第4グループに分類される。その上で、第1〜第4グループ毎に、それぞれ異なるスクランブル方式が採用される。スクランブル回路26は、上記スクランブル方式に従って、外部から入力されたデータのスクランブルを行う。
【0063】
上記スクランブルテーブル27を用いた場合の具体例について、図15を用いて説明する。本図は、全メモリセルMCに対して“00”を書き込む場合において、実際の各メモリセルMCに対して書き込まれたデータを示す。
【0064】
図示するように、第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”が書き込まれる。
【0065】
次に、図16を用いて、上述したスクランブル方法2を実現するためのスクランブル回路26の概略的な構成について説明する。図16に示すように、スクランブル方法2のスクランブル回路26は、図11のスクランブル方法1のスクランブル回路26に、ページ方向スクランブル回路40、データ反転回路41、42をさらに備えている。
【0066】
このようなスクランブル回路26を用いたデータ書き込みは次のように行われる。まず、上述したスクランブル方法1と同様の方法で、カラム方向及びページ方向の両方において疑似乱数化した擬似乱数列を、擬似乱数列発生回路39で生成する。そして、乱数加算回路33により書き込みデータと擬似乱数列とが加算され、乱数化されたデータが生成される。さらに、スクランブル方法2では、ページ方向スクランブル回路40において、図13に示すスクランブルテーブル27を用いてページ方向のデータスクランブルを実施し、データ反転回路41により乱数化されたデータに対してデータ反転を行う。
【0067】
具体的には、MPU22は、ページアドレス発生回路37で発生されたページアドレス(以下、ワード線アドレスと呼ぶ)を用いて、このワード線アドレスに対応するワード線WLが第1〜第4グループのいずれに相当するかを判断する。すなわち、ワード線アドレスをM、グループ数を“N”(本実施形態ではN=“4”)とすると、A=M mod Nなる計算を行う。余りAがそれぞれ“0”〜“3”の場合、当該ワード線アドレスに対応するワード線は第1〜第4グループのそれぞれに属することが分かる。
【0068】
次に、MPU22は、RAM25に保持される図13のスクランブルテーブル27を参照する。そして、判断されたグループに応じて、スクランブル方式を選択する。例えば、A=“3”であり、当該ワード線アドレスに対応するワード線が第4グループに属すると判断された場合には、MPU22は書き込みデータの上位ページ及び下位ページの両方を反転させるスクランブル方式を選択し、その旨をスクランブル回路26に命令する。
【0069】
すると、スクランブル回路26内のページ方向スクランブル回路40及びデータ反転回路41は、MPU22によって選択されたスクランブル方式に従って、書き込みデータをスクランブルする。例えば、第4グループに属するワード線WLの上位ページデータを書き込む場合には、当該ページデータの全てを反転させる。
【0070】
尚、データの読み出しの際には、外部から与えられたアドレスに従ってメモリセルからデータが読み出されると共に、MPU22は当該アドレスに対応したスクランブル方式をスクランブルテーブル27から読み出す。そして、読み出したスクランブル方式に応じて、読み出しデータを解読する。例えば、第3グループに属するワード線の下位ページデータを読み出す場合には、スクランブル方式は図13の通り「反転」であるから、MPU22の命令によりデータ反転回路42は読み出しデータを反転させて外部へ出力する。このような読み出し方法を行うため、データのページ毎のコピーは、同一のグループに属するワード線間に制限される。
【0071】
[5−3]スクランブル方法3
スクランブル方法3では、スクランブルを行うブロックを判定し、特定のブロックの場合はデータスクランブルを行わずに読み書きを行う。このようなスクランブル方法3が用いられる場合について、以下に説明する。
【0072】
高信頼性を要求するデータ(例えば、FAT:ファイル・アロケーション・テーブル)等の場合、システムは多値NAND品に対して2値で読み書きを行う。これは、一つのセルに一つ(“1”か“0”)のデータしか書き込みを行わないことにより、書き込み/読み出しマージンを確保するものである。つまり、4値品の場合でも、敢えて特定のデータを2値として扱い、特定の領域(例えば、先頭のブロック)に書いたり読んだりする。この領域を乱数化すると、上位ページをスキップすれば別であるが、必然的に4値化されて本来の目的が達成できない。そこで、これを防止するために、その特定のブロックについては乱数化を制限する。裏を返せば、2値で取り扱うブロックをシステムが特定のブロックとして認識しているため、そのフラグを用いて制御する。つまり、2値で取り扱う特定のブロックに対しては、乱数加算も乱数減算も行わず、ストレートに読み書きを行う。
【0073】
このような読み書きを実現するスクランブル回路26の概略的な構成について、図17を用いて説明する。
【0074】
図17に示すように、スクランブル回路26は、データ入力部31、データ出力部32、乱数加算回路33、乱数減算回路34、擬似乱数列発生回路39、アドレス発生回路43、2値書き込みブロック判定回路44、乱数加算回路バイパス回路45、乱数減算回路バイパス回路46を備えている。
【0075】
アドレス発生回路43は、書き込みデータのアドレスを発生させる。このアドレス発生回路43は、例えば、上述した図11及び図16に示すセグメントアドレス発生回路35、初期値発生回路36、ページアドレス発生回路37、初期値Nビットシフト回路38を備えていてもよい。
【0076】
2値書き込みブロック判定回路44は、フラグを用いて、アドレス発生回路43で指定された書き込みデータのアドレスが、2値で取り扱う特定のブロック(以下、特定ブロックと呼ぶ)に含まれるか否かを判断する。その結果、特定ブロックに含まれる場合は、乱数加算回路33を介さず、乱数加算回路バイパス回路45により書き込みデータがそのままNAND型フラッシュメモリ11に書き込まれる。同様に、読み出し時も、特定ブロックに含まれる場合は、乱数減算回路34を介さず、乱数減算回路バイパス回路46により書き込みデータがそのまま読み出される。
【0077】
尚、スクランブル方法3では、上述したスクランブル方法1及び2のいずれかを組み合わせることも可能である。
【0078】
また、本実施形態のスクランブル方法では、ひとつのセグメントのバイト数を種々変更することが可能である。また、複数のセグメント単位やページ単位でも擬似乱数化してもよい。
【0079】
[6]効果
本発明の一実施形態では、M系列符号生成回路とシフトレジスタを併用した擬似乱数列発生回路39を用いることにより、NAND型フラッシュメモリ11のブロックを構成するカラムとページの両方向において、ブロック内に書き込むデータが分散され、特定のデータパターンの集中を防止することができる。これにより、多値NAND型フラッシュメモリ11のブロック内に書き込まれるセルの閾値レベルの分布を均一に分散させることができる。従って、カップリング等の影響によるブースト不足等による誤書き込みを防止することが可能となる。
【0080】
具体的に、図18(a)乃至(c)、図19(a)及び(b)を用いて、8GbのNAND型フラッシュメモリ11にアプリケーションで実際に書き込んだデータを解析し、ブロック内のセルの閾値レベルの分布を調査したシミュレーション結果(正規プロット)について説明する。各図において、横軸は、1つのブロックに書き込まれるセルの各閾値レベルの数を示し、縦軸は、シグマ(解析した全てのブロックにつき各セルの閾値レベルの数を大きい順に並べ替えた)を示している。また、各図のEレベル、Aレベル、Bレベル、Cレベルは、図7の“11”、“01”、“10”、“00”の閾値レベルに対応している。
【0081】
まず、図18(a)の比較例1は、乱数化する前の元データを用いた場合である。図18(b)の比較例2は、カラム方向のみM系列で乱数化した場合である。図18(c)の比較例3は、カラム方向にM系列で乱数化し、ページ方向は4ページ単位でデータを反転させた場合である。一方、図19(a)は、上述したスクランブル方法1の場合である。つまり、図19(a)では、ページアドレス毎に1ビットシフトした疑似乱数回路の初期値データを使用して、カラム方向にM系列でランダム化した場合を示す。図19(b)は、上述したスクランブル方法2の場合である。つまり、図19(b)では、ページアドレス毎に1ビットシフトした疑似乱数回路の初期値を使用して、カラム方向にM系列で疑似乱数化し、さらに、ページアドレス方向にページアドレスに応じてデータを反転させた場合を示す。このような図19(a)及び(b)の場合、図18(a)乃至(c)の比較例1〜3と比べて、各セルの閾値レベルの分布の均一性が大幅に改善されていることが分かる。
【0082】
その他、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【図面の簡単な説明】
【0083】
【図1】本発明の一実施形態に係るメモリシステムのブロック図。
【図2】本発明の一実施形態に係るメモリカードにおける信号ピンに対する信号割り当てを示す図。
【図3】本発明の一実施形態に係るメモリカードの備えるカードコントローラのブロック図。
【図4】本発明の一実施形態に係るフラッシュメモリのブロック図。
【図5】本発明の一実施形態に係るフラッシュメモリの具体的なブロック図。
【図6】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの回路図。
【図7】本発明の一実施形態に係るフラッシュメモリの閾値分布を示すグラフ。
【図8】本発明の一実施形態に係るフラッシュメモリの閾値分布を示すグラフであり、データの書き込み方法を示す図。
【図9】本発明の一実施形態に係るスクランブル方法1(カラム方向)を説明するための図。
【図10】本発明の一実施形態に係るスクランブル方法1(ページ方向)を説明するための図。
【図11】本発明の一実施形態に係るスクランブル方法1のスクランブル回路のブロック図。
【図12】本発明の一実施形態に係るスクランブル方法1の擬似乱数列発生回路の回路図。
【図13】本発明の一実施形態に係るスクランブル方法2(ページ方向)で用いるスクランブルテーブルの概念図。
【図14】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの回路図。
【図15】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの概念図であり、各メモリセルにスクランブルされたデータが書き込まれた様子を示す図。
【図16】本発明の一実施形態に係るスクランブル方法2のスクランブル回路のブロック図。
【図17】本発明の一実施形態に係るスクランブル方法3のスクランブル回路のブロック図。
【図18】本発明の参考例のNAND型フラッシュメモリのセル閾値レベルの分布のシミュレーション結果の図。
【図19】本発明の一実施形態に係るスクランブル方法1及び2のNAND型フラッシュメモリのセル閾値レベルの分布のシミュレーション結果の図。
【符号の説明】
【0084】
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…データ反転回路、43…アドレス発生回路、44…2値書き込みブロック判定回路、45…乱数加算回路バイパス回路、46…乱数減算回路バイパス回路、50…シフトレジスタ。
【特許請求の範囲】
【請求項1】
複数のページからなるメモリブロックを有するNAND型フラッシュメモリと、
前記フラッシュメモリへのデータの書き込みを制御し、前記データを疑似乱数化するスクランブル回路を有するコントローラと、
を具備し、
前記スクランブル回路は、
セグメント単位で初期値を発生させる初期値発生回路と、
ページアドレス単位で前記初期値をNビットシフトさせる初期値シフト回路と、
Nビットシフトされた前記初期値を使用してM系列による擬似乱数列を発生させる疑似乱数発生回路と、
前記疑似乱数列を前記データに加算する乱数加算回路と、
を有することを特徴とするメモリシステム。
【請求項2】
前記スクランブル回路は、前記擬似乱数列のデータを、前記ページアドレスを元に規則的に反転・正転するデータ反転回路を有することを特徴とする請求項1に記載のメモリシステム。
【請求項3】
前記スクランブル回路は、前記データの書き込みにおいて指定されたアドレスが、疑似乱数化を行うブロックか否かを判定する判定回路を有することを特徴とする請求項1又は2に記載のメモリシステム。
【請求項4】
前記スクランブル回路は、前記ページアドレスに応じて1ビットシフトさせた前記初期値を発生させることを特徴とする請求項1乃至3のいずれか1項に記載のメモリシステム。
【請求項5】
前記セグメントは、データ部と冗長部とで構成される前記コントローラのメモリ管理単位であることを特徴とする請求項1乃至4のいずれか1項に記載のメモリシステム。
【請求項1】
複数のページからなるメモリブロックを有するNAND型フラッシュメモリと、
前記フラッシュメモリへのデータの書き込みを制御し、前記データを疑似乱数化するスクランブル回路を有するコントローラと、
を具備し、
前記スクランブル回路は、
セグメント単位で初期値を発生させる初期値発生回路と、
ページアドレス単位で前記初期値をNビットシフトさせる初期値シフト回路と、
Nビットシフトされた前記初期値を使用してM系列による擬似乱数列を発生させる疑似乱数発生回路と、
前記疑似乱数列を前記データに加算する乱数加算回路と、
を有することを特徴とするメモリシステム。
【請求項2】
前記スクランブル回路は、前記擬似乱数列のデータを、前記ページアドレスを元に規則的に反転・正転するデータ反転回路を有することを特徴とする請求項1に記載のメモリシステム。
【請求項3】
前記スクランブル回路は、前記データの書き込みにおいて指定されたアドレスが、疑似乱数化を行うブロックか否かを判定する判定回路を有することを特徴とする請求項1又は2に記載のメモリシステム。
【請求項4】
前記スクランブル回路は、前記ページアドレスに応じて1ビットシフトさせた前記初期値を発生させることを特徴とする請求項1乃至3のいずれか1項に記載のメモリシステム。
【請求項5】
前記セグメントは、データ部と冗長部とで構成される前記コントローラのメモリ管理単位であることを特徴とする請求項1乃至4のいずれか1項に記載のメモリシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【公開番号】特開2009−157841(P2009−157841A)
【公開日】平成21年7月16日(2009.7.16)
【国際特許分類】
【出願番号】特願2007−338247(P2007−338247)
【出願日】平成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 ]