(57)【要約】【課題】ランダマイズ解除処理による性能低下を改善する。【解決手段】メモリシステムは、ランダマイズされたランダマイズデータが書き込まれる半導体メモリと、ランダマイズデータの読み出し時、ランダマイズデータのランダマイズを解除しながらバッファにランダマイズ解除後データを格納する第１のモードとランダマイズデータをバッファに格納する第２のモードとを読み出しの用途に応じて切り替えるＭＰＵとを具備する。【選択図】      図２０
2009157836.tif 000002
【特許請求の範囲】
【請求項１】
ランダマイズされたランダマイズデータが書き込まれる半導体メモリと、
前記ランダマイズデータの読み出し時、前記ランダマイズデータのランダマイズを解除しながらバッファにランダマイズ解除後データを格納する第１のモードと前記ランダマイズデータを前記バッファに格納する第２のモードとを読み出しの用途に応じて切り替えるＭＰＵと
を具備することを特徴とするメモリシステム。
【請求項２】
前記第１のモードでは、前記ランダマイズデータに対してＥＣＣ処理を行い、前記ランダマイズ解除後データに対して誤り位置に対する訂正処理を行い、
前記第２のモードでは、前記ランダマイズデータに対して前記ＥＣＣ処理及び前記訂正処理を行うことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記第１のモードでは、前記ランダマイズ解除後データに対してＥＣＣ処理及び誤り位置に対する訂正処理を行い、
前記第２のモードでは、前記ランダマイズ解除後データに対して前記ＥＣＣ処理を行い、前記ランダマイズデータに対して前記訂正処理を行うことを特徴とする請求項１に記載のメモリシステム。
【請求項４】
前記第１のモードに切り替えられる場合は、ホスト機器に対してデータを出力する場合、ファームウェアが参照する管理データを取得する場合、データマージが必要になる場合のいずれかを含み、
前記第２のモードに切り替えられる場合は、前記半導体メモリに記憶されたデータの属性が不明の場合、前記半導体メモリの消去済みブロックかどうかの判定処理を行う場合、ＥＣＣ処理による誤り位置に対してカラム単位の訂正を実施する場合のいずれかを含むことを特徴とする請求項１に記載のメモリシステム。
【請求項５】
前記半導体メモリは、ＮＡＮＤ型フラッシュメモリであることを特徴とする請求項１に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データランダマイズ処理機能を有するメモリシステムに関する。
【背景技術】
【０００２】
近年、デジタルカメラや携帯型オーディオプレーヤの急速な普及により、大容量の不揮発性半導体メモリの需要が拡大している。そして、不揮発性半導体メモリとしてＮＡＮＤ型フラッシュメモリが広く使用されている。ＮＡＮＤ型フラッシュメモリは、複数のメモリセルが直列接続されたＮＡＮＤストリング構造を備えている。このＮＡＮＤストリングに含まれるメモリセル数は大容量化に伴い増加し、これに従ってその動作信頼性が低下するという問題があった。
【０００３】
そこで、特許文献１等で開示されているように、書き込みデータをランダマイズする方法が採用されている。これにより、ＮＡＮＤ型フラッシュメモリのブロック内に書き込むデータを分散し、データパターンの集中を防止している。このような従来のデータランダマイズ制御では、ＮＡＮＤ型フラッシュメモリからデータ読み出す場合、ランダマイズ状態のデータのままバッファにデータを格納し、バッファからデータを出力する際にランダマイズの解除処理を行っていた。
【０００４】
しかしながら、ランダマイズ処理を比較的単純なデータの正転／反転切り替え等で行っていた場合には出力時の復号にオーバーヘッドが発生することはほとんどないが、Ｍ系列（Maximum length code）乱数を用いた場合等、データ位置に応じてランダマイズ処理が変化するケースでは、対応する復号鍵を生成するための処理時間がその都度発生し、性能低下につながる。
【特許文献１】特開２００１−２３７７１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、ランダマイズ解除処理による性能低下を改善するメモリシステムを提供する。
【課題を解決するための手段】
【０００６】
本発明の一態様によるメモリシステムは、ランダマイズされたランダマイズデータが書き込まれる半導体メモリと、前記ランダマイズデータの読み出し時、前記ランダマイズデータのランダマイズを解除しながらバッファにランダマイズ解除後データを格納する第１のモードと前記ランダマイズデータを前記バッファに格納する第２のモードとを読み出しの用途に応じて切り替えるＭＰＵとを具備する。
【発明の効果】
【０００７】
本発明によれば、ランダマイズ解除処理による性能低下を改善するメモリシステムを提供できる。
【発明を実施するための最良の形態】
【０００８】
本発明の実施の形態を以下に図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【０００９】
［１］メモリシステムの構成
図１を用いて、本発明の一実施形態に係るメモリシステムについて説明する。図１は、本実施形態に係るメモリシステムのブロック図である。
【００１０】
図示するように、メモリシステムは、メモリカード１及びホスト機器２を備えている。ホスト機器２は、バスインタフェース１４を介して接続されるメモリカード１に対しアクセスを行うためのハードウェア及びソフトウェアを備えている。メモリカード１は、ホスト機器２に接続された時に電源供給を受けて動作し、ホスト機器２からのアクセスに応じた処理を行う。
【００１１】
メモリカード１は、ホスト機器２とバスインタフェース１４を介して情報の授受を行う。メモリカード１は、ＮＡＮＤ型フラッシュメモリチップ（単にＮＡＮＤ型フラッシュメモリ、又はフラッシュメモリと呼ぶことがある）１１、フラッシュメモリチップ１１を制御するカードコントローラ１２、及び複数の信号ピン（第１ピン乃至第９ピン）１３を備えている。
【００１２】
複数の信号ピン１３は、カードコントローラ１２と電気的に接続されている。複数の信号ピン１３における第１ピン乃至第９ピンに対する信号の割り当ては、例えば図２に示すようになっている。図２は、第１ピン乃至第９ピンと、それらに割り当てられた信号とを示す表である。図２に示すように、データ０乃至データ３は、第７ピン、第８ピン、第９ピン、及び第１ピンにそれぞれ割り当てられている。第１ピンは、カード検出信号に対しても割り当てられている。さらに、第２ピンはコマンドに割り当てられ、第３ピン及び第６ピンは接地電位Ｖｓｓに、第４ピンは電源電位Ｖｄｄに、第５ピンはクロック信号に割り当てられている。
【００１３】
また、メモリカード１は、ホスト機器２に設けられたスロットに対して挿抜可能なように形成されている。ホスト機器２に設けられたホストコントローラ（図示せず）は、これら第１ピン乃至第９ピンを介してメモリカード１内のカードコントローラ１２と各種信号及びデータを通信する。例えば、メモリカード１にデータが書き込まれる際には、ホストコントローラは、書き込みコマンドを、第２ピンを介してカードコントローラ１２にシリアルな信号として送出する。このとき、カードコントローラ１２は、第５ピンに供給されているクロック信号に応答して、第２ピンに与えられる書き込みコマンドを取り込む。
【００１４】
ここで、前述したように、書き込みコマンドは、第２ピンのみを利用してカードコントローラ１２にシリアルに入力される。コマンドの入力に割り当てられている第２ピンは、図２に示すように、データ３用の第１ピンと接地電位Ｖｓｓ用の第３ピンとの間に配置されている。複数の信号ピン１３とそれに対するバスインタフェース１４は、ホスト機器２内のホストコントローラとメモリカード１とが通信するのに使用される。
【００１５】
これに対し、フラッシュメモリ１１とカードコントローラ１２との間の通信は、ＮＡＮＤ型フラッシュメモリ用のインタフェースによって行われる。従って、ここでは図示しないが、フラッシュメモリ１１とカードコントローラ１２とは例えば８ビットの入出力（Ｉ／Ｏ）線により接続されている。
【００１６】
例えば、カードコントローラ１２がフラッシュメモリ１１にデータを書き込む際には、カードコントローラ１２は、これらＩ／Ｏ線を介してデータ入力コマンド８０Ｈ、カラムアドレス、ページアドレス、データ、及びプログラムコマンド１０Ｈをフラッシュメモリ１１に順次入力する。ここで、コマンド８０Ｈの“Ｈ”は１６進数を示すものであり、実際には“１０００００００”という８ビットの信号が、８ビットのＩ／Ｏ線にパラレルに与えられる。つまり、このＮＡＮＤ型フラッシュメモリ用のインタフェースでは、複数ビットのコマンドがパラレルに与えられる。
【００１７】
また、ＮＡＮＤ型フラッシュメモリ用のインタフェースでは、フラッシュメモリ１１に対するコマンドとデータが同じＩ／Ｏ線を共用して通信されている。このように、ホスト機器２内のホストコントローラとメモリカード１とが通信するインタフェースと、フラッシュメモリ１１とカードコントローラ１２とが通信するインタフェースとは異なる。
【００１８】
尚、本実施形態では、ＮＡＮＤ型フラッシュメモリ１１及びカードコントローラ１２はメモリカード１に搭載されているが、メモリカード１に搭載されることに限定されない。例えば、ＰＣ等の電子機器内に組み込み搭載される態様でもよい。また、本実施形態では、半導体メモリとしてＮＡＮＤ型フラッシュメモリ１１を例に挙げているが、例えば、ＮＯＲ型フラッシュメモリ、磁気ランダムアクセスメモリ（ＭＲＡＭ：Magnetic Random Access Memory）等に置き換えることも可能である。
【００１９】
［２］カードコントローラの構成
図３を用いて、図１に示すカードコントローラ１２の内部構成について説明する。図３は、本実施形態に係るカードコントローラ１２のブロック図である。
【００２０】
カードコントローラ１２は、フラッシュメモリ１１内部の物理状態（例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか）を管理する。そして、ＮＡＮＤ型フラッシュメモリ１１へのデータの書き込みや読み出しを制御する。
【００２１】
図示するように、カードコントローラ１２は、ホストインタフェースモジュール２１、ＭＰＵ（Micro Processing Unit）２２、フラッシュコントローラ２３、ＲＯＭ（Read Only Memory）２４、ＲＡＭ（Random Access Memory）２５、及びスクランブル回路２６を有する。
【００２２】
ホストインタフェースモジュール２１は、カードコントローラ１２とホスト機器２との間のインタフェース処理を行う。
【００２３】
ＭＰＵ２２は、メモリカード１全体の動作を制御する。ＭＰＵ２２は、例えばメモリカード１が電源供給を受けたときに、ＲＯＭ２４に格納されているファームウェア（制御プログラム）をＲＡＭ２５上に読み出して所定の処理を実行することにより、各種のテーブルをＲＡＭ２５上に作成する。また、ＭＰＵ２２は、ホスト機器２から書き込みコマンド、読み出しコマンド、消去コマンドを受け取り、フラッシュメモリ１１に対して所定の処理を実行する。さらに、ＭＰＵ２２は、スクランブル回路２６を制御して、書き込みデータのスクランブル及びスクランブル解除を行う。書き込みデータのスクランブル及びスクランブル解除については、後に詳述する。
【００２４】
ＲＯＭ２４は、ＭＰＵ２２により制御される制御プログラム等を格納する。ＲＡＭ２５は、ＭＰＵ２２の作業エリアとして使用され、制御プログラムや各種のテーブル（表）を記憶する。さらに、ＲＡＭ２５は、予め作成されたスクランブルテーブル２７を保持する。スクランブルテーブル２７については、後に詳述する。フラッシュコントローラ２３は、カードコントローラ１２とフラッシュメモリ１１との間のインタフェース処理を行う。
【００２５】
［３］ＮＡＮＤ型フラッシュメモリの構成
図４を用いて、ＮＡＮＤ型フラッシュメモリ１１の内部構成について簡単に説明する。図４は、本実施形態に係るＮＡＮＤ型フラッシュメモリ１１のブロック図である。図示するようにＮＡＮＤ型フラッシュメモリ１１は、メモリセルアレイ３０、ページバッファ２８、及びロウデコーダ２９を備えている。
【００２６】
メモリセルアレイ３０は、複数のメモリブロックＢＬＫ０、ＢＬＫ１、…を含んでいる。データの消去は、メモリブロックＢＬＫｎ単位で行われる。すなわち、同一メモリブロックＢＬＫｎ内のデータは一括して消去される。メモリブロックＢＬＫｎの各々は、複数のメモリセルトランジスタを備えている。また、メモリブロックＢＬＫｎ内には、複数のワード線ＷＬ０、ＷＬ１、…と、ワード線ＷＬ０、ＷＬ１、…に直交するビット線ＢＬ０、ＢＬ１、…とが設けられている。以下、ワード線ＷＬ０、ＷＬ１、…を特に区別しない場合には単にワード線ＷＬと呼び、ビット線ＢＬ０、ＢＬ１、…を特に区別しない場合には単にビット線ＢＬと呼ぶ。同一行にあるメモリセルトランジスタは、同一のワード線ＷＬに共通接続されている。また、同一列にあるメモリセルトランジスタは、複数のメモリセルトランジスタ単位でビット線ＢＬに共通接続されている。尚、データの書き込み及び読み出しは、一本のワード線ＷＬに接続される複数のメモリセルトランジスタの集合毎に行われ、このメモリセルトランジスタの集合を「１ページ」と呼ぶ。読み出し時及び書き込み時において、ロウアドレスによっていずれかのワード線ＷＬが選択され、カラムアドレスによっていずれかのビット線ＢＬが選択される。図４の例であると、フラッシュメモリ１１の各メモリブロックＢＬＫｎは、例えば１２８ページを含んでいる。
【００２７】
ページバッファ２８は、フラッシュメモリ１１へのデータ入出力を行い、データを一時的に保持する。ページバッファ２８が保持可能なデータサイズは、各メモリブロックＢＬＫｎのページサイズと同じである。データ書き込み等の際、ページバッファ２８は、フラッシュメモリ１１に対するデータ入出力処理を、自身の記憶容量に相当する１ページ分の単位で実行する。また、読み出しの際は、１ページ分のメモリセルのデータをページバッファ２８に転送し、Ｉ／Ｏ線を介してページバッファ２８からシリアルに読み出される。
【００２８】
ロウデコーダ２９は、データの書き込み時及び読み出し時において、いずれかのワード線ＷＬを選択する。
【００２９】
本実施形態では、図５に示すように、例えば、１メモリブロックＢＬＫｎは、８ｋカラム×１２８ページ×８Ｉ／Ｏ（１０２４ｋバイト）で構成される。そして、１０２４バイトに対して誤り訂正符号αを含む冗長部を付加し、１セグメントを構成する。従って、１ページに８個のセグメントが存在するので、１ブロックあたり１０２４個（８×１２８）のセグメントが存在する。尚、図５は一例であり、これに限定されない。
【００３０】
［４］メモリブロックの構成
図６を用いて、メモリブロックＢＬＫｎの詳細な構成について説明する。図６は、メモリブロックＢＬＫｎの等価回路図である。
【００３１】
図示するように、メモリブロックＢＬＫｎは、ワード線ＷＬ方向に沿って配置された（ｍ＋１）個のＮＡＮＤストリングを備えている（ｍは１以上の自然数）。各々のＮＡＮＤストリングは、選択トランジスタＳＴ１、ＳＴ２、及び６４個のメモリセルトランジスタＭＴを備えている。ＮＡＮＤストリング内に含まれるメモリセルトランジスタＭＴの数は一例に過ぎず、例えば８個、１６個、３２個、１２８個等であってもよい。各々のＮＡＮＤストリングに含まれる選択トランジスタＳＴ１は、ドレインがビット線ＢＬ０〜ＢＬｍのいずれかに接続され、ゲートがセレクトゲート線ＳＧＤに共通接続されている。また、選択トランジスタＳＴ２は、ソースがソース線ＳＬに共通接続され、ゲートがセレクトゲート線ＳＧＳに共通接続されている。
【００３２】
メモリセルトランジスタＭＴの各々は、半導体基板上にゲート絶縁膜を介在して形成された積層ゲートを備えたＭＯＳトランジスタである。積層ゲートは、ゲート絶縁膜上に形成された電荷蓄積層（フローティングゲート）と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを含んでいる。各々のＮＡＮＤストリングにおいて、６４個のメモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に、各々の電流経路が直列接続されるように配置されている。そして、最もソース側に位置するメモリセルトランジスタＭＴから順に、制御ゲートがワード線ＷＬ０〜ＷＬ６３にそれぞれ接続されている。従って、ワード線ＷＬ６３に接続されたメモリセルトランジスタＭＴのドレインは選択トランジスタＳＴ１のソースに接続され、ワード線ＷＬ０に接続されたメモリセルトランジスタＭＴのソースは選択トランジスタＳＴ２のドレインに接続されている。
【００３３】
ワード線ＷＬ０〜ＷＬ６３は、メモリブロックＢＬＫｎ内のＮＡＮＤストリング間で、メモリセルトランジスタＭＴの制御ゲートを共通に接続している。つまり、メモリブロックＢＬＫｎ内において同一行にあるメモリセルトランジスタＭＴの制御ゲートは、同一のワード線ＷＬに接続される。また、ビット線ＢＬ０〜ＢＬｍは、メモリブロックＢＬＫｎ間で、選択トランジスタＳＴ１のドレインを共通に接続している。つまり、複数のメモリブロックＢＬＫｎ内において同一列にあるＮＡＮＤストリングは、同一のビット線ＢＬに接続される。
【００３４】
尚、以下では、メモリセルトランジスタＭＴを単にメモリセルＭＣと呼ぶことがある。
【００３５】
上記メモリセルＭＣの各々は、４値（“００”データ、“０１”データ、“１０”データ、又は“１１”データ）のデータ、つまり２ビットデータを保持可能である。そしてこの２ビットには、２つの異なるページアドレスが割り当てられる。具体的には、２ビットデータのうち下位ビットに下位ページアドレスが割り当てられ、上位ビットに上位ページアドレスが割り当てられる。従って、本実施形態に係る構成であると、メモリブロックＢＬＫｎは１２８ページを含むから、上位ページが６４ページであり、下位ページが６４ページ存在する。
【００３６】
図７を用いて、上記メモリセルＭＣの閾値について説明する。図７は、メモリセルＭＣの閾値分布を示すグラフであり、横軸が閾値電圧Ｖｔｈを示し、縦軸がメモリセルの存在確率を示す。
【００３７】
図示するように、メモリセルＭＣは、閾値電圧Ｖｔｈの低い順に“１１”、“０１”、“１０”、“００”の４つのデータを保持出来る。“１１”データを保持するメモリセルの閾値電圧Ｖｔｈは、Ｖｔｈ＜０Ｖである。“０１”データを保持するメモリセルの閾値電圧Ｖｔｈは、０Ｖ＜Ｖｔｈ＜Ｖｔｈ１である。“００”データを保持するメモリセルの閾値電圧Ｖｔｈは、Ｖｔｈ１＜Ｖｔｈ＜Ｖｔｈ２である。“１０”データを保持するメモリセルの閾値電圧Ｖｔｈは、Ｖｔｈ２＜Ｖｔｈ＜Ｖｔｈ３である。
【００３８】
図８を用いて、上記４値のデータのメモリセルＭＣへの書き込み方法について簡単に説明する。図８は、メモリセルの閾値分布を示すグラフであり、書き込み時おけるメモリセルの閾値電圧Ｖｔｈの変化の様子を示している。データは１ページに対して一括して書き込まれる。また、データの書き込みは、まず下位ページから行い、次に上位ページについて行う。
【００３９】
書き込みにあたって、メモリセルは消去状態にある。すなわち、メモリセルの閾値電圧Ｖｔｈは負の値であり、“１１”データを保持した状態である。その状態で、まず下位ページについてデータの書き込みを行う。下位ページが“１”の場合には、フローティングゲートに電子は注入されず、閾値電圧Ｖｔｈは不変である。下位ページが“０”の場合には、フローティングゲートに電子が注入され、閾値電圧Ｖｔｈは正の方向へ変化し、約Ｖｔｈ１＜Ｖｔｈ＜Ｖｔｈ２となる。
【００４０】
次に、上位ページの書き込みを行う。まず、下位ページが“１”であった場合について説明する。下位ページが“１”で、尚かつ上位ページも“１”である場合、上位ページの書き込み時においてもフローティングゲートに電子は注入されず、閾値電圧Ｖｔｈは負の値を維持する。その結果、メモリセルには“１１”が保持される。上位ページが“０”の場合、フローティングゲートに電子が注入される。その結果、閾値電圧Ｖｔｈは負から正の方向へ変化し、０Ｖ＜Ｖｔｈ＜Ｖｔｈ１となる。すなわち、メモリセルには“０１”が書き込まれる。
【００４１】
次に、下位ページが“０”であった場合について説明する。下位ページが“０”で、上位ページが“０”である場合、上位ページの書き込み時にはフローティングゲートに電子が注入されない。よって、下位ページの書き込みの結果の値を維持する。すなわち、Ｖｔｈ１＜Ｖｔｈ＜Ｖｔｈ２であり、その結果、メモリセルには“００”が書き込まれる。上位ページが“１”の場合、さらにフローティングゲートに電子が注入される。その結果、閾値電圧Ｖｔｈはさらに正の方向へ変化し、Ｖｔｈ２＜Ｖｔｈ＜Ｖｔｈ３となる。すなわち、メモリセルには“１０”が書き込まれる。
【００４２】
［５］データ書き込み
本実施形態におけるデータ書き込みでは、書き込みデータをランダマイズしてＮＡＮＤ型フラッシュメモリ１１に書き込まれる。このランダマイズ方法について以下に説明する。
【００４３】
［５−１］ランダマイズの基本方針
図９を用いて、ランダマイズの基本方針について説明する。本実施形態の書き込み動作では、カラム方向及びページ方向の少なくとも一方において、データランダマイズを行う。尚、本実施形態において、カラム方向とはワード線の延在方向であり、ページ方向とはビット線及びＮＡＮＤストリングの延在方向である（図６参照）。
【００４４】
ランダマイズの手法としては、オリジナルのデータ列に乱数値を加えた値をランダマイズデータとして処理する。この際、例えばＥＣＣフレームを基本単位とし、このＥＣＣフレーム内で同じ乱数列が再度現れることのないＭ系列乱数を選択する。また、同一カラム内（１カラム＝８ビット）でも同じ乱数値が現れないようにする。例えば、ＥＣＣフレーム＝１ＫＢとした場合、８ＫＢ以上の周期を持つ乱数回路を使用する。具体的には、１４ビット／１６３８３周期である。
【００４５】
図９に示すように、カラム方向のランダマイズは、Ｍ系列乱数に基づくスクランブル処理によって実現する。ページ方向のランダマイズは、先頭ページの乱数値に基づいてページアドレス分のＭ系列乱数シフトを加えて実現する場合、ワード線アドレスに基づいて正転／反転の制御により実現する場合等がある。このページ方向のランダマイズにおいて、シフト量は、ブロック内の論理ページアドレスで判別する。尚、物理ページアドレスと論理ページアドレスが異なる可能性があるため、予めブロック先頭ページの基準シフト量を把握しておくことが望ましい。
【００４６】
図１０を用いて、上述したランダマイズを実現するためのＭ系列の擬似乱数列発生回路３９の一例について説明する。フィボナッチ型のＭ系列の擬似乱数列発生回路３９は、１ｋカラムアドレス周期でランダムデータを発生し、ＮＡＮＤ型フラッシュメモリ１１へ書き込むデータと排他的論理和をとる。具体的には、図１０に示すように、擬似乱数列発生回路３９は、シフトレジスタＲ１〜Ｒ１４、排他的論理和（エクスクルーシブＯＲゲート）ＸＯＲ１〜ＸＯＲ５で構成される。
【００４７】
シフトレジスタＲ１〜Ｒ１４のそれぞれは、直列に接続されている。シフトレジスタＲ２、Ｒ３、Ｒ４、Ｒ５、Ｒ６、Ｒ７、Ｒ１０、Ｒ１２の各入力端子は、前段のシフトレジスタＲ３、Ｒ４、Ｒ５、Ｒ６、Ｒ７、Ｒ８、Ｒ１１、Ｒ１３の各出力端子に接続されている。シフトレジスタＲ１の出力端子は排他的論理和ＸＯＲ１に接続され、この排他的論理和ＸＯＲ１はシフトレジスタＲ１の入力端子に接続されている。排他的論理和ＸＯＲ１の出力端子は排他的論理和ＸＯＲ２の入力端子に接続され、排他的論理和ＸＯＲ２はシフトレジスタＲ８の入力端子に接続されている。排他的論理和ＸＯＲ２の出力端子は排他的論理和ＸＯＲ３の入力端子に接続され、排他的論理和ＸＯＲ３はシフトレジスタＲ９の入力端子に接続されている。排他的論理和ＸＯＲ３の出力端子は排他的論理和ＸＯＲ４の入力端子に接続され、排他的論理和ＸＯＲ４はシフトレジスタＲ１１の入力端子に接続されている。排他的論理和ＸＯＲ４の出力端子は排他的論理和ＸＯＲ５の入力端子に接続され、排他的論理和ＸＯＲ５はシフトレジスタＲ１３の入力端子に接続されている。排他的論理和ＸＯＲ５の出力端子はシフトレジスタＲ１４の入力端子に接続されている。
【００４８】
［５−２］ランダマイズ方法１
本実施形態に係るランダマイズ方法１では、上述した図１０のＭ系列の擬似乱数列発生回路３９を用いて、カラム方向にＭ系列乱数を発生させ、データスクランブルを行う。
【００４９】
図１１を用いて、ランダマイズ方法１について説明する。図１１に示すように、スクランブル回路２６は、ビット線毎にＭ系列の擬似乱数列発生回路３９と排他的論理和からなる乱数加算回路３３を備えている。擬似乱数列発生回路３９はビット線毎にＭ系列の乱数列を発生させ、この乱数列と入力データを乱数加算回路３３で加算し、スクランブルされたデータを出力している。
【００５０】
擬似乱数列発生回路３９のそれぞれは、図１０に示す同じ回路構成となり、生成多項式も同一のものを採用するが、擬似乱数列発生回路３９の初期値はビット線毎に異なる。周期は、原則、ＥＣＣデータ処理単位よりも大きい値（例えば１０２４バイト以上）を採用する。擬似乱数列発生回路３９のシード値は、ビット線毎にそれぞれ与えられる。このシード値は、パラメータとして予め準備されており、例えばＤＭＡ（Direct Memory Access）転送の開始時又はオフセットの切り替え時に擬似乱数列発生回路３９へロードされる。
【００５１】
このようなスクランブル回路２６を用いたランダマイズ方法１によるデータ書き込みは、次のように行われる。
【００５２】
まず、ホスト機器２からデータの書き込み命令及び書き込みデータがメモリカード１に与えられ、カードコントローラ１２のホストインタフェースモジュール２１が書き込み命令及び書き込みデータを受信する。
【００５３】
すると、ＭＰＵ２２は、受信した書き込みデータを基に書き込むべきメモリセルＭＣのアドレスを算出する。そして、このアドレスに基づいて、ある特定のシード値を持った擬似乱数列発生回路３９により、ビット線毎の初期値を用いてカラム方向にランダム化した擬似乱数列を生成する。一方、ホストインタフェースモジュール２１で受信された書き込みデータがスクランブル回路２６に入力され、乱数加算回路３３により書き込みデータと上述した擬似乱数列とが加算され、乱数化されたデータがページ毎にＮＡＮＤ型フラッシュメモリ１１に書き込まれる。
【００５４】
尚、読み出し時は、乱数加算回路３３で使用した擬似乱数列と同じ乱数列を用いて、乱数減算回路（図示せず）で減算処理を行い、ページ毎にデータを読み出す。
【００５５】
［５−３］ランダマイズ方法２
本実施形態に係るランダマイズ方法２は、上述したランダマイズ方法１におけるＭ系列乱数のシード値を固定値ではなく、ページアドレス毎に切り替えて使用する例である。物理ページアドレスがページコピーによって変化する可能性がない場合は物理ページアドレスに基づいたインデックスを決定する。物理ページアドレスがページコピーによって変化する可能性がある場合は予め物理ページと論理ページの関係性、又はインデックスそのものをデータの冗長部領域に記録しておき、ブロックに対する転送開始前に予め取得し、以降の転送についてはハードウェア（ＨＷ）が自動的にシード値を更新しながら転送する。
【００５６】
具体的には、ランダマイズ方法２は、ページ方向ではページアドレス毎にＮビットシフトさせた擬似乱数回路の初期値を生成し、この初期値を使用してカラム方向ではＭ系列乱数を用いてセグメント単位で擬似乱数列を生成することで、ページ方向及びカラム方向の両方において、データスクランブルを行う。
【００５７】
図１２を用いて、カラム方向のＭ系列乱数を用いたデータスクランブルについて説明する。各セグメント内において、Ｍ系列の乱数発生周期をＩ／Ｏの数で割った回数だけシフトさせた値を初期値（スタートビット）として与える。例えば、Ｍ１４−１のＭ系列（１６３８３通り）の乱数発生回路を使用した場合、ＮＡＮＤ型フラッシュメモリの８個のＩ／Ｏに対しては、２０４８回シフトした値を各セグメントに対して初期値として与える。
【００５８】
尚、上記の例では、各Ｉ／Ｏに対して均等にシフト回数を規定した場合であるが、これに限定されず、各Ｉ／Ｏ間でシフトさせる回数は異なっていてもよい。
【００５９】
図１３を用いて、ページ方向のデータスクランブルについて説明する。例えば、各Ｉ／Ｏの初期値を、ページ方向において各々Ｎ回シフトさせる。図１３に示す１ビットシフトさせた例の場合、Ｐａｇｅ−０が「Ａ１」からスタートするのに対し、Ｐａｇｅ−１はＰａｇｅ−０の初期値Ａ１から１ビットシフトさせた「Ｂ１」からスタートし、Ｐａｇｅ−２はＰａｇｅ−１の初期値Ｂ１から１ビットシフトさせた「Ｃ１」からスタートする。
【００６０】
次に、図１４を用いて、上述したランダマイズ方法２を実現するためのスクランブル回路２６の概略的な構成について説明する。
【００６１】
図１４に示すように、ランダマイズ方法２のスクランブル回路２６は、データ入力部３１、データ出力部３２、乱数加算回路３３、乱数減算回路３４、セグメントアドレス発生回路３５、初期値発生回路３６、ページアドレス発生回路３７、初期値Ｎビットシフト回路３８、擬似乱数列発生回路３９を備えている。
【００６２】
このようなスクランブル回路２６を用いたデータ書き込みは次のように行われる。
【００６３】
まず、ホスト機器２からデータの書き込み命令及び書き込みデータがメモリカード１に与えられ、カードコントローラ１２のホストインタフェースモジュール２１が書き込み命令及び書き込みデータを受信する。
【００６４】
すると、ＭＰＵ２２は、受信した書き込みデータを書き込むべきメモリセルＭＣのセグメントアドレス及びページアドレスを算出する。これに基づいて、スクランブル回路２６内のセグメントアドレス発生回路３５がセグメントアドレスを発生し、ページアドレス発生回路３７がページアドレスを発生する。
【００６５】
一方、ホストインタフェースモジュール２１で受信された書き込みデータはデータ入力部３１に入力され、乱数加算回路３３により書き込みデータと擬似乱数列とが加算され、乱数化されたデータがページ毎にＮＡＮＤ型フラッシュメモリ１１に書き込まれる。
【００６６】
ここで、擬似乱数列は、擬似乱数列発生回路３９で、次のように生成される。セグメント毎の初期値（スタートビット）が初期値発生回路３６により発生される。セグメントの初期値は、図１２のランダマイズ方法２のカラム方向の擬似乱数化により決定される。そして、初期値Ｎビットシフト回路３８により、図１３で説明したようにページアドレス毎に初期値をＮビットだけシフトさせる。以上のような方法でカラム方向及びページ方向の両方において擬似乱数化した擬似乱数列を、擬似乱数列発生回路３９で生成する。
【００６７】
尚、読み出し時は、乱数加算回路３３で使用した擬似乱数列と同じ乱数列を用いて、乱数減算回路３４で減算処理を行い、データ出力部３２を介してページ毎にデータを読み出す。
【００６８】
図１５を用いて、図１４の擬似乱数列発生回路３９の一例について説明する。フィボナッチ型の擬似乱数列発生回路３９は、１ｋ＋αカラムアドレス周期で擬似乱数データを発生し、ＮＡＮＤ型フラッシュメモリ１１へ書き込むデータと排他的論理和をとる。具体的には、図１５に示すように、擬似乱数列発生回路３９は、第１のシフトレジスタＲ１〜Ｒ１４、第２のシフトレジスタ５０、排他的論理和（エクスクルーシブＯＲゲート）ＸＯＲ１〜ＸＯＲ５で構成される。従って、図１０の擬似乱数列発生回路３９に、第２のシフトレジスタ５０が付加された構成となる。第２のシフトレジスタ５０の出力端子は、第１のシフトレジスタＲ１〜Ｒ１４のそれぞれに接続されている。尚、第１のシフトレジスタＲ１〜Ｒ１４はカラム方向のデータスクランブルに使用され、第２のシフトレジスタ５０はページ方向のデータスクランブルに使用され、各ページの初期値を発生させる。そして、擬似乱数列発生回路３９により生成されたＭ系列擬似乱数の出力は、乱数加算回路３３又は乱数減算回路３４に入力される。
【００６９】
［５−４］ランダマイズ方法３
ランダマイズ方法３は、上記ランダマイズ方法２の変形例であり、ページ方向にＮビットシフトするだけでなく、さらに、ワード線ＷＬのアドレス（以下、ワード線アドレス又はページアドレスと呼ぶ）に応じて反転・正転する。以下、ここでは、図３のＲＡＭ２５が保持するスクランブルテーブル２７と共に、ランダマイズ方法３の上記ランダマイズ方法２と異なる点について主に説明する。
【００７０】
図１６は、ランダマイズ方法３において用いるスクランブルテーブル２７の概念図である。このスクランブルテーブル２７は、外部から入力された１ページの書き込みデータを一定の規則に従って変えるためのスクランブル方式を保持している。
【００７１】
図示するように、スクランブルテーブル２７は、ワード線アドレスを例えば“４”で割った余りＡ毎に、当該ワード線アドレスに対応したデータの上位ページと下位ページの変え方を保持している。より具体的には、ワード線アドレスを“４”で割った余りＡが“０”である場合には、上位ページ及び下位ページに書き込むべきデータを正転させて書き込む。つまり、入力されたデータを変えずにそのままメモリセルＭＣへ書き込む。余りＡが“１”である場合には、上位ページ及び下位ページに書き込むデータを、それぞれ反転及び正転させて書き込む。余りＡが“２”である場合には、上位ページ及び下位ページに書き込むデータを、それぞれ正転及び反転させて書き込む。余りＡが“３”である場合には、上位ページ及び下位ページに書き込むデータを、共に反転させて書き込む。
【００７２】
上記のようにワード線アドレスを“４”で割った余りＡ毎にスクランブル方式を有するということは、換言すれば、ワード線ＷＬを４つのグループに分類し、グループ毎にスクランブル方式を変えていることに相当する。
【００７３】
図１７は、上記の方法でワード線ＷＬを４つのグループに分類した結果を示す。図示するように、例えばワード線ＷＬ０〜ＷＬ６３のワード線アドレスを、それぞれ“０”〜“６３”とすると、ワード線ＷＬ０、ＷＬ４、ＷＬ８、…、ＷＬ６０についての余りＡが“０”となり、これらのワード線ＷＬが第１グループに分類される。また、ワード線ＷＬ１、ＷＬ５、ＷＬ９、…、ＷＬ６１についての余りＡが“１”となり、これらのワード線ＷＬが第２グループに分類される。さらに、ワード線ＷＬ２、ＷＬ６、ＷＬ１０、…、ＷＬ６２についての余りＡが“２”となり、これらのワード線ＷＬが第３グループに分類される。そして、ワード線ＷＬ３、ＷＬ７、ＷＬ１１、…、ＷＬ６３についての余りＡが“３”となり、これらのワード線ＷＬが第４グループに分類される。その上で、第１〜第４グループ毎に、それぞれ異なるスクランブル方式が採用される。スクランブル回路２６は、上記スクランブル方式に従って、外部から入力されたデータのスクランブルを行う。
【００７４】
上記スクランブルテーブル２７を用いた場合の具体例について、図１８を用いて説明する。本図は、全メモリセルＭＣに対して“００”を書き込む場合において、実際の各メモリセルＭＣに対して書き込まれたデータを示す。
【００７５】
図示するように、第１グループに属するワード線ＷＬ０、ＷＬ４、ＷＬ８、…、ＷＬ６０に接続されたメモリセルＭＣには、入力データ“００”がそのまま書き込まれる。第２グループに属するワード線ＷＬ１、ＷＬ５、ＷＬ９、…、ＷＬ６１に接続されたメモリセルＭＣには、上位ページが反転されたデータ“１０”が書き込まれる。第３グループに属するワード線ＷＬ２、ＷＬ６、ＷＬ１０、…、ＷＬ６２に接続されたメモリセルＭＣには、下位ページが反転されたデータ“０１”が書き込まれる。そして第４グループに属するワード線ＷＬ３、ＷＬ７、ＷＬ１１、…、ＷＬ６３に接続されたメモリセルＭＣには、上位ページ及び下位ページが共に反転されたデータ“１１”が書き込まれる。
【００７６】
次に、図１９を用いて、上述したランダマイズ方法３を実現するためのスクランブル回路２６の概略的な構成について説明する。図１９に示すように、ランダマイズ方法３のスクランブル回路２６は、図１４のランダマイズ方法２のスクランブル回路２６に、ページ方向スクランブル回路４０、データ反転回路４１、４２をさらに備えている。
【００７７】
このようなスクランブル回路２６を用いたデータ書き込みは次のように行われる。まず、上述したランダマイズ方法２と同様の方法で、カラム方向及びページ方向の両方において擬似乱数化した擬似乱数列を、擬似乱数列発生回路３９で生成する。そして、乱数加算回路３３により書き込みデータと擬似乱数列とが加算され、乱数化されたデータが生成される。さらに、ランダマイズ方法３では、ページ方向スクランブル回路４０において、図１３に示すスクランブルテーブル２７を用いてページ方向のデータスクランブルを実施し、データ反転回路４１により乱数化されたデータに対してデータ反転を行う。
【００７８】
具体的には、ＭＰＵ２２は、ページアドレス発生回路３７で発生されたページアドレス（以下、ワード線アドレスと呼ぶ）を用いて、このワード線アドレスに対応するワード線ＷＬが第１〜第４グループのいずれに相当するかを判断する。すなわち、ワード線アドレスをＭ、グループ数を“Ｎ”（本実施形態ではＮ＝“４”）とすると、Ａ＝Ｍ mod Ｎなる計算を行う。余りＡがそれぞれ“０”〜“３”の場合、当該ワード線アドレスに対応するワード線は第１〜第４グループのそれぞれに属することが分かる。
【００７９】
次に、ＭＰＵ２２は、ＲＡＭ２５に保持される図１６のスクランブルテーブル２７を参照する。そして、判断されたグループに応じて、スクランブル方式を選択する。例えば、Ａ＝“３”であり、当該ワード線アドレスに対応するワード線が第４グループに属すると判断された場合には、ＭＰＵ２２は書き込みデータの上位ページ及び下位ページの両方を反転させるスクランブル方式を選択し、その旨をスクランブル回路２６に命令する。
【００８０】
すると、スクランブル回路２６内のページ方向スクランブル回路４０及びデータ反転回路４１は、ＭＰＵ２２によって選択されたスクランブル方式に従って、書き込みデータをスクランブルする。例えば、第４グループに属するワード線ＷＬの上位ページデータを書き込む場合には、当該ページデータの全てを反転させる。
【００８１】
尚、データの読み出しの際には、外部から与えられたアドレスに従ってメモリセルからデータが読み出されると共に、ＭＰＵ２２は当該アドレスに対応したスクランブル方式をスクランブルテーブル２７から読み出す。そして、読み出したスクランブル方式に応じて、読み出しデータを解読する。例えば、第３グループに属するワード線の下位ページデータを読み出す場合には、スクランブル方式は図１３の通り「反転」であるから、ＭＰＵ２２の命令によりデータ反転回路４２は読み出しデータを反転させて外部へ出力する。このような読み出し方法を行うため、データのページ毎のコピーは、同一のグループに属するワード線間に制限される。
【００８２】
［６］データ読み出し
［６−１］データ読み出しの概要
図２０を用いて、本発明の一実施形態におけるデータ読み出しの概要について説明する。本発明の一実施形態における読み出し動作では、ＭＰＵ２２の制御により、上述した方法でランダマイズされたデータが、読み出しの用途に応じて第１のモード又は第２のモードに切り替えられて読み出される。
【００８３】
ここで、第１のモードは、ランダマイズされたデータのランダマイズを解除しながらバッファにランダマイズ解除後のデータを格納する。さらに、第１のモードは、これと並行してランダマイズデータに対してＥＣＣ処理を実施し、誤り検出したデータ位置情報を用いてバッファに格納されたランダマイズ解除後のデータに対して訂正処理を行う。すなわち、第１のモードでは、バッファ内には最終的にランダマイズ解除された状態でＥＣＣ訂正を終えたデータが残り、そのままの状態でデータ出力を行える。
【００８４】
一方、第２のモードは、ランダマイズされたデータをそのままバッファに格納する。さらに、第２のモードは、これと並行してランダマイズされたデータにＥＣＣ処理を実施し、誤り検出したデータ位置情報を用いてバッファに格納されたランダマイズ状態のデータに対して訂正処理を行う。すなわち、第２のモードでは、バッファ内にはランダマイズ状態のままでＥＣＣ訂正を終えたデータが残る。
【００８５】
このような本実施形態の読み出し動作では、ＮＡＮＤ型フラッシュメモリ１１内のデータの冗長部領域にランダマイズ対象の有無の属性ビットを付与しておき、予めランダマイズの自動解除（第１のモード）又は非解除（第２のモード）の指定を行った上で、データのバッファ格納処理を行う。ランダマイズ対象の有無が読み出し前に不明である場合又は基準シフト量が不明である場合等は、データの冗長部領域から属性情報を取得するための処理も必要となる。尚、この属性情報は、ランダマイズの対象外になっている。
【００８６】
ここで、図２１を用いて、ＮＡＮＤ型フラッシュメモリ１１に格納されるデータフォーマットの一例について説明する。このデータフォーマットは、ページサイズが８Ｋバイトの例である。図示するように、データフォーマットは、Ｄａｔａ０〜１５、ＥＣＣフレーム冗長部を有する。ＥＣＣフレーム冗長部は、データ部とパリティ部とで構成される。データ部は、ランダマイズフラグ、データ反転フラグ、ページ内ランダマイズフラグ、ｒｅｓｅｒｖｅｄ、データ有効フラグ０、データ有効フラグ１、ランダマイズシフト量を有している。パリティ部は、ＥＣＣパリティを有している。また、各ページには、ＥＣＣフレーム冗長部内にページ冗長部が付与されている。このようなデータフォーマットでは、ランダマイズ対象の有無の属性ビットは、ページ内ランダマイズフラグとランダマイズシフト量とを合わせた領域（データの冗長部領域）により判断される。本図のデータフォーマットにおいて、ランダマイズシフト量は、ページ内ランダマイズ対象外である。ランダマイズシフト量以外のデータ部において、ハードウェア管理情報の先頭の１バイトはランダマイズ対象外となる。
【００８７】
尚、上述した図２０のデータフローでは、ＥＣＣパリティは、ＮＡＮＤ型フラッシュメモリ１１内に最終的に書き込まれるデータに対して演算を行い生成する。つまり、ランダマイズ対象データであれば、ランダマイズ状態のデータに対してＥＣＣ処理を実行する。よって、ＥＣＣデコード処理は、ＮＡＮＤ型フラッシュメモリ１１上からの読み出しデータそのものに対して実施している。
【００８８】
しかし、本実施形態におけるＥＣＣ処理は、ランダマイズ対象データであっても、ランダマイズされたデータに対して行うことに限定されず、ＥＣＣ処理をオリジナルデータに基づいて演算し、その後、ＥＣＣパリティも含めてランダマイズを実施してもよい。
【００８９】
例えば、図２２に示すように、第１のモードは、ランダマイズされたデータのランダマイズを解除しながらバッファにランダマイズ解除後のデータを格納しつつ、ランダマイズ解除後データに対してＥＣＣ処理及び誤り位置に対する訂正処理を行う。一方、第２のモードでは、ランダマイズされたデータをそのままバッファに格納しつつ、ＥＣＣ処理はランダマイズ解除後データに対して行い、ランダマイズデータに対して誤り位置に対する訂正処理を行う。
【００９０】
尚、ランダマイズ処理そのものは乱数値とデータの排他的論理輪を取った結果であるため、ＥＣＣ演算のために使用したデータとバッファに格納されたデータとの状態（ランダマイズの有無）が異なっていても正しく訂正を行うことは可能である。
【００９１】
［６−２］モード切り替え
本実施形態では、ＭＰＵ２２の制御により、データ読み出し前にランダマイズの解除（第１のモード）又は非解除（第２のモード）のモード切り替えが行われる。
【００９２】
まず、上述した第１のモードであるランダマイズ解除モードを使用するケースは、例えば、以下の場合が挙げられる。
【００９３】
（１ａ）ホスト機器２に対してデータを出力する場合。
【００９４】
（１ｂ）ファームウェアが参照する管理データを取得する場合。
【００９５】
（１ｃ）データマージが必要になる場合。
【００９６】
上記（１ａ）は、ＮＡＮＤ型フラッシュメモリ１１内のデータをホスト機器２に対して読み出す場合である。この場合、ランダマイズされたデータのランダマイズを解除しながらページバッファ２８にランダマイズ解除後のデータを格納し、ランダマイズ解除後のデータが読み出される。
【００９７】
上記（１ｂ）は、ユーザではなく、コントローラ１２が管理している管理データを、ファームウェアの処理でＮＡＮＤ型フラッシュメモリ１１のバッファから取得する場合である。この場合、ランダマイズされたデータのランダマイズを解除しながらページバッファ２８にランダマイズ解除後のデータを格納し、ランダマイズ解除後のデータが読み出される。
【００９８】
上記（１ｃ）は、ＮＡＮＤ型フラッシュメモリ１１上のデータとホスト機器２からの書き込みデータとをマージして新たにＥＣＣパリティを生成し、ＮＡＮＤ型フラッシュメモリ１１に対して書き込みを行う場合である。つまり、ＥＣＣフレームが例えば１ＫＢであり、ホスト機器２の基本データ単位が５１２Ｂである場合、ＮＡＮＤ型フラッシュメモリ１１上の１ＫＢ中の５１２Ｂと組み合わせて１ＫＢのフレームを新たに構成する必要がある。
【００９９】
具体的には、図２３に示すように、ある論理セクタＸへの上書きが発生し、ＥＣＣフレームのアラインに合わない位置からの書き込みであった場合（例えば図２１のＤａｔａ０から始まるページに対してＤａｔａ１から書き込まれた場合）は、ランダマイズを解除しながらデータを読み出し、このランダマイズ解除後のデータとホスト機器２からのライトデータとをマージ処理した後、新たにランダマイズを掛けてＮＡＮＤ型フラッシュメモリ１１に書き込む。このような場合は、第１のモードにより、ランダマイズされたデータのランダマイズを解除しながらページバッファ２８にランダマイズ解除後のデータを格納し、ランダマイズ解除後のデータが読み出されることになる。
【０１００】
次に、上述した第２のモードであるランダマイズ非解除モードを使用するケースは、例えば、以下の場合が挙げられる。
【０１０１】
（２ａ）ＮＡＮＤ型フラッシュメモリ１１上のデータの属性が不明の場合。
【０１０２】
（２ｂ）消去済みブロックかどうかの判定処理を行う場合。
【０１０３】
（２ｃ）誤り位置に対してカラム単位の訂正を実施する場合。
【０１０４】
上記（２ａ）は、ＮＡＮＤ型フラッシュメモリ１１上のデータがランダマイズ状態か否かが不明である場合である。
【０１０５】
上記（２ｂ）は、ＮＡＮＤ型フラッシュメモリ１１のブロックが、ａｌｌ“０”となっている消去済みブロックかどうかの判定を行うために、生データ（ランダマイズ状態のデータ）を参照する必要がある場合である。
【０１０６】
上記（２ｃ）は、ＮＡＮＤ型フラッシュメモリ１１上でいわゆる引っ越し処理を行う際に、誤りが発生した位置のカラムに対して訂正を行う場合である。例えば、図２４に示すように、ある論理セクタＸへの上書きが発生した後で、少し間を空けた位置から書き込みが継続した場合、その間の空間を埋めるための前引っ越し処理が発生する。
【０１０７】
具体的には、ＮＡＮＤ型フラッシュメモリ１１の持つページコピー機能を使って、ＮＡＮＤ型フラッシュメモリ１１のページバッファ２８に残っている引っ越し元のデータに対して誤り位置のみコントローラ１２から訂正処理を行って書き戻しを行う。ここで、ＮＡＮＤ型フラッシュメモリ１１内の引っ越し元のデータは以前にランダマイズ状態で書き込んだデータであり、訂正後のデータもランダマイズ状態で書き戻す必要がある。このため、カラム単位の訂正前に実施するデータ読み出し結果は、ランダマイズ状態のままページバッファ２８に格納する必要がある。
【０１０８】
尚、第１及び第２のモードとなるケースは、上述した例に限定されない。また、第１のモードの一例として挙げた上記ケースであっても第２のモードで使用することは可能であり、第２のモードの一例として挙げた上記ケースであっても第１のモードで使用することも可能である。
【０１０９】
［７］本実施形態の効果
ページ方向及びカラム方向の少なくとも一方で同一データが連続しないように書き込みデータをスクランブルしてあるＮＡＮＤ型フラッシュメモリ１１において、スクランブルデータを読み出す場合、読み出しの用途に応じて２つの読み出しモードの切り替えを行うことにより、ランダマイズ解除処理による性能低下を最小限に留めることが可能となる。
【０１１０】
具体的には、ランダマイズされたデータの読み出し動作において、ランダマイズ解除を行いながらデータ格納する第１のモードとランダマイズ状態のままデータを格納する第２のモードとを用途に応じて切り替える。
【０１１１】
つまり、例えばホスト機器２からのデータ読み出し等の場合は、バッファのどの位置から読み出しを開始するのかが分からないため、上記第２のモードに切り替え、ランダマイズ状態のままバッファにデータ格納し、ホスト機器２に対するデータ出力時解除が必要な場合は出力要求時にシード値を算出し、ランダマイズ解除を行う。これにより、Ｍ系列乱数によるランダマイズを実施した時、基準点（先頭データ）以外の位置からのリードを行う場合にその位置までの乱数値を得るための演算オーバーヘッドの発生（ランダマイズ解除のための前処理時間が発生）を抑制できる。
【０１１２】
一方、例えばＮＡＮＤ型フラッシュメモリ１１からのデータ読み出し等の場合は、必ずＥＣＣ処理単位の先頭位置からの読み出しが保証されるため、上記第１のモードに切り替え、ランダマイズ解除を行いながらデータ格納する。
【０１１３】
以上のように、本実施形態では、ＮＡＮＤ型フラッシュメモリ１１に記録するデータをランダマイズすることによって信頼性の向上を図りながら、読み出しの用途に応じてモード切り替えを行うことで、ランダマイズ解除のためのシード値算出によるオーバーヘッド時間を削減し、ランダマイズ解除処理による性能低下を改善できる。
【０１１４】
その他、本発明は、上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【図面の簡単な説明】
【０１１５】
【図１】本発明の一実施形態に係るメモリシステムのブロック図。
【図２】本発明の一実施形態に係るメモリカードにおける信号ピンに対する信号割り当てを示す図。
【図３】本発明の一実施形態に係るメモリカードの備えるカードコントローラのブロック図。
【図４】本発明の一実施形態に係るフラッシュメモリのブロック図。
【図５】本発明の一実施形態に係るフラッシュメモリの具体的なブロック図。
【図６】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの回路図。
【図７】本発明の一実施形態に係るフラッシュメモリの閾値分布を示すグラフ。
【図８】本発明の一実施形態に係るフラッシュメモリの閾値分布を示すグラフであり、データの書き込み方法を示す図。
【図９】本発明の一実施形態に係るランダマイズ基本方針を説明するための図。
【図１０】本発明の一実施形態に係るＭ系列の擬似乱数列発生回路の回路図。
【図１１】本発明の一実施形態に係るランダマイズ方法１を説明するための図。
【図１２】本発明の一実施形態に係るランダマイズ方法２（カラム方向）を説明するための図。
【図１３】本発明の一実施形態に係るランダマイズ方法２（ページ方向）を説明するための図。
【図１４】本発明の一実施形態に係るランダマイズ方法２のスクランブル回路のブロック図。
【図１５】本発明の一実施形態に係るランダマイズ方法２の擬似乱数列発生回路の回路図。
【図１６】本発明の一実施形態に係るランダマイズ方法３（ページ方向）で用いるスクランブルテーブルの概念図。
【図１７】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの回路図。
【図１８】本発明の一実施形態に係るフラッシュメモリの備えるメモリブロックの概念図であり、各メモリセルにスクランブルされたデータが書き込まれた様子を示す図。
【図１９】本発明の一実施形態に係るランダマイズ方法３のスクランブル回路のブロック図。
【図２０】本発明の一実施形態に係るモード切り替え機能を有するデータ読み出しの概要を説明するための図。
【図２１】本発明の一実施形態に係るデータフォーマットの一例を示す図。
【図２２】本発明の一実施形態に係るモード切り替え機能を有するデータ読み出しの他の例を説明するための図。
【図２３】本発明の一実施形態に係るデータマージが必要な場合（第１のモード）を説明するための図。
【図２４】本発明の一実施形態に係る誤り位置に対してカラム単位で訂正を行う場合（第２のモード）を説明するための図。
【符号の説明】
【０１１６】
１…メモリカード、２…ホスト機器、１１、…ＮＡＮＤ型フラッシュメモリ、１２…カードコントローラ、１３…信号ピン、２１…ホストインタフェースモジュール、２２…ＭＰＵ、２３…フラッシュコントローラ、２４…ＲＯＭ、２５…ＲＡＭ、２６…スクランブル回路、２７…スクランブルテーブル、２８…ページバッファ、２９…ロウデコーダ、３０…メモリセルアレイ、３１…データ入力部、３２…データ出力部、３３…乱数加算回路、３４…乱数減算回路、３５…セグメントアドレス発生回路、３６…初期値発生回路、３７…ページアドレス発生回路、３８…初期値Ｎビットシフト回路、３９…擬似乱数列発生回路、４０…ページ方向スクランブル回路、４１、４２…データ反転回路、５０…シフトレジスタ。
【図１】
2009157836.tif 000003
【図２】
2009157836.tif 000004
【図３】
2009157836.tif 000005
【図４】
2009157836.tif 000006
【図５】
2009157836.tif 000007
【図６】
2009157836.tif 000008
【図７】
2009157836.tif 000009
【図８】
2009157836.tif 000010
【図９】
2009157836.tif 000011
【図１０】
2009157836.tif 000012
【図１１】
2009157836.tif 000013
【図１２】
2009157836.tif 000014
【図１３】
2009157836.tif 000015
【図１４】
2009157836.tif 000016
【図１５】
2009157836.tif 000017
【図１６】
2009157836.tif 000018
【図１７】
2009157836.tif 000019
【図１８】
2009157836.tif 000020
【図１９】
2009157836.tif 000021
【図２０】
2009157836.tif 000022
【図２１】
2009157836.tif 000023
【図２２】
2009157836.tif 000024
【図２３】
2009157836.tif 000025
【図２４】
2009157836.tif 000026