(57)【要約】【課題】判定処理の回数および検索処理の回数を低減でき、処理速度を向上できる半導体記憶装置およびその制御方法を提供する。【解決手段】半導体記憶装置は、アドレス変換テーブルと、有効ブロックアドレスのみが登録された空きテーブルと、第１バッドブロックテーブルと、予備テーブルとを格納した第１集中管理ブロックＢ１を備えた半導体メモリ１１と、前記アドレス変換テーブル中にバッドブロックアドレスが発生した場合に、前記予備テーブルから取得した代替ブロックアドレスにより前記バッドブロックアドレスを代替するように構成されたコントローラ１２とを具備する。【選択図】      図６
2008009932.tif 000002
【特許請求の範囲】
【請求項１】
アドレス変換テーブルと、有効ブロックアドレスのみが登録された空きテーブルと、第１バッドブロックテーブルと、予備テーブルとを格納した第１集中管理ブロックを備えた半導体メモリと、
前記アドレス変換テーブル中にバッドブロックアドレスが発生した場合に、前記予備テーブルから取得した代替ブロックアドレスにより前記バッドブロックアドレスを代替するように構成されたコントローラとを具備すること
を特徴とする半導体記憶装置。
【請求項２】
前記コントローラは更に、前記アドレス変換テーブル中にバッドブロックアドレスが発生した場合に、前記バッドブロックアドレスを前記第１バッドブロックテーブルに登録すること
を特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記第１バッドブロックテーブルは、後天性のバッドブロックアドレスを登録するテーブルであり、
前記半導体メモリは、先天性のバッドブロックアドレスを登録する第２バッドブロックテーブルを格納する第２集中管理ブロックを更に備えること
を特徴とする請求項１または２に記載の半導体記憶装置。
【請求項４】
アドレス変換テーブルと、有効ブロックアドレスのみが登録された空きテーブルと、バッドブロックテーブルと、予備テーブルとを格納した集中管理ブロックを備えた半導体メモリと、コントローラとを具備し、
前記コントローラは、前記アドレス変換テーブル中にバッドブロックアドレスが発生した場合に、前記バッドブロックアドレスを前記バッドブロックテーブルに登録し、
前記予備テーブルから代替ブロックアドレスを取得し、
前記代替ブロックアドレスにより前記バッドブロックアドレスを代替すること
を特徴とする半導体記憶装置の制御方法。
【請求項５】
前記コントローラは更に、前記バッドブロックアドレスを前記バッドブロックテーブルに登録した際に、前記空きテーブルのポインタを更新し、
前記代替ブロックアドレスを取得した際に、前記予備テーブルのポインタを更新すること
を特徴とする請求項４に記載の半導体記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体記憶装置およびその制御方法に関し、例えば、メモリにホスト機器が外部からアクセスする際に使用する論理ブロックアドレスと、メモリ内の物理ブロックアドレス（実ブロックアドレス）とを１対１に対応付けるアドレス変換テーブル方式のメモリカード等に適用されるものである。
【背景技術】
【０００２】
音楽データや映像データの記録メディアとしてフラッシュメモリ等の不揮発性半導体メモリを用いたメモリカードが使われている（例えば、特許文献１参照）。メモリカードに使用されるフラッシュメモリの一例として、例えば、ＮＡＮＤフラッシュＴＭメモリが挙げられる。
【０００３】
上記ＮＡＮＤフラッシュＴＭメモリにデータを書き込む際には、消去が可能な最小単位であるブロック全体を消去してから書き込みを行わなければならない。そのため、データを書き込む場合には、まず、消去済みのブロック（消去ブロック）を用意し、そこに書き換えたいページと、ブロック内で書き換えを行わないデータとをコピーする必要がある。
【０００４】
このような消去ブロックが生じるため、アドレス変換テーブル（Ｌ２Ｐ（Logical to Physical）テーブル）方式では、メモリコントローラがＲＡＭ上に展開された複数の物理テーブルを複雑に管理する必要がある。
【０００５】
そのため、上記物理テーブルの管理の際には、どうしても判定処理の回数および検索処理の回数が増大して処理速度が低下し、処理の複雑度が増大するという問題がある。また、このような判定処理や検索処理は、通常の書き込み／消去アクセスの書き換え動作の際に、頻繁に行う必要がある。そのため、メモリ全体のパフォーマンス低下に与える影響が大きい。
【０００６】
上記のように、従来の半導体記憶装置およびその制御方法は、判定処理の回数および検索処理の回数の増大に伴って、処理速度が低下し、処理の複雑度が増大するという問題があった。
【特許文献１】米国特許  ６，８４５，４３８号  明細書
【発明の開示】
【発明が解決しようとする課題】
【０００７】
この発明は、判定処理の回数および検索処理の回数を低減でき、処理速度を向上できる半導体記憶装置およびその管理方法を提供する。
【課題を解決するための手段】
【０００８】
この発明の一態様によれば、アドレス変換テーブルと、有効ブロックアドレスのみが登録された空きテーブルと、第１バッドブロックテーブルと、予備テーブルとを格納した第１集中管理ブロックを備えた半導体メモリと、前記アドレス変換テーブル中にバッドブロックアドレスが発生した場合に、前記予備テーブルから取得した代替ブロックアドレスにより前記バッドブロックアドレスを代替するように構成されたコントローラとを具備する半導体記憶装置を提供できる。
【０００９】
この発明の一態様によれば、アドレス変換テーブルと、有効ブロックアドレスのみが登録された空きテーブルと、バッドブロックテーブルと、予備テーブルとを格納した集中管理ブロックを備えた半導体メモリと、コントローラとを具備し、前記コントローラは、前記アドレス変換テーブル中にバッドブロックアドレスが発生した場合に、前記バッドブロックアドレスを前記バッドブロックテーブルに登録し、前記予備テーブルから代替ブロックアドレスを取得し、前記代替ブロックアドレスにより前記バッドブロックアドレスを代替する半導体記憶装置の制御方法を提供できる。
【発明の効果】
【００１０】
この発明によれば、判定処理の回数および検索処理の回数を低減でき、処理速度を向上できる半導体記憶装置およびその制御方法が得られる。
【発明を実施するための最良の形態】
【００１１】
以下、この発明の一実施形態について図面を参照して説明する。尚、この説明においては、全図にわたり共通の部分には共通の参照符号を付す。
【００１２】
まず、図１乃至図５を用いて、この発明の一実施形態に係る半導体記憶装置の概要を説明する。図１はこの実施形態に係る半導体記憶装置を説明するためのブロック図である。本例では、半導体記憶装置の一例としてメモリカードを例に挙げて説明する。
【００１３】
図示するように、メモリカード１は、ホスト機器２とバスインタフェース１４を介して情報の授受を行う。メモリカード１は、ＮＡＮＤフラッシュＴＭメモリ（以下、単にフラッシュメモリと記載する）チップ１１、このフラッシュメモリチップ１１を制御するカードコントローラ１２、および複数の信号ピン（第１ピン乃至第９ピン）１３を備えている。
【００１４】
複数の信号ピン１３は、カードコントローラ１２と電気的に接続されている。複数の信号ピン１３における第１ピン乃至第９ピンに対する信号の割り当ては、例えば、図２に示すようになっている。
【００１５】
データ０乃至データ３は、第７ピン、第８ピン、第９ピン、および第１ピンにそれぞれ割り当てられている。第１ピンは、また、カード検出信号に対しても割り当てられている。さらに、第２ピンはコマンドに割り当てられ、第３ピンおよび第６ピンは接地電位Ｖssに、第４ピンは電源電位Ｖddに、第５ピンはクロック信号に割り当てられている。
【００１６】
また、メモリカード１は、ホスト機器２に設けられたスロットに対して挿抜可能なように形成されている。ホスト機器２に設けられたホストコントローラ（図示せず）は、これら第１ピン乃至第９ピンを介してメモリカード１内のカードコントローラ１２と各種信号およびデータを通信する。例えば、メモリカード１にデータが書き込まれる際には、ホストコントローラは、書き込みコマンドを、第２ピンを介してカードコントローラ１２にシリアルな信号として送出する。このとき、カードコントローラ１２は、第５ピンに供給されているクロック信号に応答して、第２ピンに与えられる書き込みコマンドを取り込む。
【００１７】
ここで、前述したように、書き込みコマンドは、第２ピンのみを利用してカードコントローラ１２にシリアルに入力される。コマンドの入力に割り当てられている第２ピンは、図２に示すように、データ３用の第１ピンと接地電位Ｖss用の第３ピンとの間に配置されている。複数の信号ピン１３とそれに対するバスインタフェース１４は、ホスト機器２内のホストコントローラとメモリカード１とが通信するのに使用される。
【００１８】
これに対し、フラッシュメモリ１１とカードコントローラ１２との間の通信は、ＮＡＮＤフラッシュＴＭメモリ用のインタフェースによって行われる。したがって、ここでは図示しないが、フラッシュメモリ１１とカードコントローラ１２とは８ビットの入出力（Ｉ／Ｏ）線により接続されている。
【００１９】
例えば、カードコントローラ１２がフラッシュメモリ１１にデータを書き込む際には、カードコントローラ１２は、これらＩ／Ｏ線を介してデータ入力コマンド８０Ｈ、カラムアドレス、ページアドレス、データ、およびプログラムコマンド１０Ｈをフラッシュメモリ１１に順次入力する。ここで、コマンド８０Ｈの“Ｈ”は１６進数を示すものであり、実際には“１０００００００”という８ビットの信号が、８ビットのＩ／Ｏ線にパラレルに与えられる。つまり、このＮＡＮＤフラッシュＴＭメモリ用のインタフェースでは、複数ビットのコマンドがパラレルに与えられる。
【００２０】
また、ＮＡＮＤフラッシュＴＭメモリ用のインタフェースでは、フラッシュメモリ１１に対するコマンドとデータが同じＩ／Ｏ線を共用して通信されている。このように、ホスト機器２内のホストコントローラとメモリカード１とが通信するインタフェースと、フラッシュメモリ１１とカードコントローラ１２とが通信するインタフェースとは異なる。
【００２１】
図３は、本例に係るメモリカードのハード構成を示すブロック図である。
【００２２】
図示するように、ホスト機器２は、バスインタフェース１４を介して接続されるメモリカード１に対しアクセスを行うためのハードウェアおよびソフトウェアを備えている。メモリカード１は、ホスト機器２に接続された時に電源供給を受けて動作し、ホスト機器２からのアクセスに応じた処理を行う。
【００２３】
メモリカード１は、前述したように、フラッシュメモリ１１およびカードコントローラ１２を含む。フラッシュメモリ１１は、消去時の消去ブロックサイズ（消去単位のブロックサイズ）が所定サイズ（例えば、２５６ｋＢ）に定められている。また、このフラッシュメモリ１１に対して、ページと称する単位（例えば、２ｋＢ）でデータの書き込みおよび読み出しが行われる。
【００２４】
カードコントローラ１２は、フラッシュメモリ１１内部の物理状態（例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか）を制御する。カードコントローラ１２は、ホストインタフェースモジュール２１、ＭＰＵ（Micro processing unit）２２、フラッシュコントローラ２３、ＲＯＭ（Read-only memory）２４、ＲＡＭ（Random access memory）２５、およびバッファ２６を有する。
【００２５】
ホストインタフェースモジュール２１は、カードコントローラ１２とホスト機器２との間のインタフェース処理を行い、レジスタ部２７を含む。図４に、レジスタ部２７の詳細な構成を示す。レジスタ部２７は、カードステータスレジスタ、およびＣＩＤ、ＲＣＡ、ＤＳＲ、ＣＳＤ、ＳＣＲ、ＯＣＲの各種レジスタを有する。
【００２６】
これらレジスタは、以下のように定義されている。カードステータスレジスタは、通常動作において使用され、例えば後述するエラー情報が記憶される。ＣＩＤ、ＲＣＡ、ＤＳＲ、ＣＳＤ、ＳＣＲ、およびＯＣＲは、主にメモリカードの初期化時に使用される。
【００２７】
ＣＩＤ（Card identification number）には、メモリカード１の個体番号が記憶される。ＲＣＡ（Relative card address）には、相対カードアドレス（初期化時にホスト機器が動的に決める）が記憶される。ＤＳＲ（Driver stage register）には、メモリカード１のバス駆動力等が記憶される。
【００２８】
ＣＳＤ（Card specific data）には、メモリカード１の特性パラメータ値が記憶され、第１実施形態の、バージョン情報、性能識別コード、性能パラメータを保持する。
【００２９】
ＳＣＲ（SD configuration data register）には、メモリカード１のデータ配置が記憶される。ＯＣＲ（Operation condition resister）には、動作範囲電圧に制限のあるメモリカードの場合の動作電圧が記憶される。
【００３０】
ＭＰＵ２２は、メモリカード１全体の動作を制御する。ＭＰＵ２２、例えばメモリカード１が電源供給を受けたときに、ＲＯＭ２４に格納されているファームウェア（制御プログラム）をＲＡＭ２５上に読み出して所定の処理を実行することにより、各種のテーブルをＲＡＭ２５上に作成する。
【００３１】
ＭＰＵ２２は、また、ホスト機器２から書き込みコマンド、読み出しコマンド、消去コマンドを受け取り、フラッシュメモリ１１に対して所定の処理を実行したり、バッファ２６を通じたデータ転送処理を制御したりする。
【００３２】
ＲＯＭ２４は、ＭＰＵ２２により制御される制御プログラムなどを格納する。ＲＡＭ２５は、ＭＰＵ２２の作業エリアとして使用され、制御プログラムや各種のテーブル（表）を記憶する。フラッシュコントローラ２３は、カードコントローラ１２とフラッシュメモリ１１との間のインタフェース処理を行う。
【００３３】
バッファ２６は、ホスト機器２から送られてくるデータをフラッシュメモリ１１へ書き込む際に、一定量のデータ（例えば、１ページ分）を一時的に記憶したり、フラッシュメモリ１１から読み出されるデータをホスト機器２へ送り出す際に、一定量のデータを一時的に記憶したりする。
【００３４】
図５は、メモリカード１内のフラッシュメモリ１１におけるデータ配置を示している。図示するように、フラッシュメモリ１１の各ページは、２１１２Ｂ（５１２Ｂ分のデータ記憶部×４＋１０Ｂ分の冗長部×４＋２４Ｂ分の管理データ記憶部）を有しており、例えば１２８ページ分が１つの消去単位（２５６ｋＢ＋８ｋＢ（ここで、ｋは１０２４））である。なお、以下の説明においては、便宜上、このフラッシュメモリ１１の消去単位を２５６ｋＢとする。
【００３５】
また、フラッシュメモリ１１は、フラッシュメモリ１１へのデータ入出力を行うためのページバッファ１１Ａを備えている。ページバッファ１１Ａの記憶容量は、２１１２Ｂ（２０４８Ｂ＋６４Ｂ）である。データ書き込みなどの際、ページバッファ１１Ａは、フラッシュメモリ１１に対するデータ入出力処理を、自身の記憶容量に相当する１ページ分の単位で実行する。
【００３６】
フラッシュメモリ１１の記憶容量が、例えば、１Ｇビットである場合、２５６ｋＢブロック（消去単位）の数は、５１２個となる。
【００３７】
尚、図５においては消去単位が２５６ｋＢブロックである場合を例示しているが、消去単位が例えば１６ｋＢブロックとなるように構築することも実用上有効である。この場合、各ページは５２８Ｂ（５１２Ｂ分のデータ記憶部＋１６Ｂ分の冗長部）を有しており、３２ページ分が１つの消去単位（１６ｋＢ＋０．５ｋＢ）である。
【００３８】
また、図３に示すように、フラッシュメモリ１１のデータが書き込まれる領域（データ記憶領域）は、保存されるデータに応じて複数の領域に区分けされている。フラッシュメモリ１１は、データ記憶領域として、管理データ領域３２と、機密データ領域３２と、保護データ領域３３と、ユーザデータ領域３４と、を備えている。
【００３９】
管理データ領域３１は、主にメモリカードに関する管理情報を格納し、すなわち、メモリカード１のセキュリティ情報やメディアＩＤなどのカード情報を格納する。
【００４０】
機密データ領域３２は、暗号化に用いる鍵情報や認証時に使用する機密データを格納し、ホスト機器２からはアクセス不可能な領域である。
【００４１】
保護データ領域３３は、重要なデータを格納し、メモリカード１に接続されたホスト機器２との相互認証によりホスト機器２の正当性が証明された場合にのみアクセスが可能となる領域である。
【００４２】
ユーザデータ領域３４は、ユーザデータを格納し、メモリカード１を使用するユーザが自由にアクセスおよび使用することが可能な領域である。
【００４３】
＜メモリ空間＞
次に、この実施形態に係るＮＡＮＤフラッシュメモリ１１のメモリ空間およびデータフォーマットについて、図６乃至図１０を用いて説明する。
【００４４】
本例では、アドレス変換テーブル（Ｌ２Ｐ（Logical to Physical）テーブル）方式のＮＡＮＤフラッシュメモリ１１について説明する。ここで、アドレス変換テーブル（Ｌ２Ｐテーブル）方式とは、メモリカード１にホスト機器２が外部からアクセスする際に使用する論理ブロックアドレス（ＬＢＡ）と、ＮＡＮＤフラッシュメモリ１１内の物理ブロックアドレス（ＰＢＡ）とを１対１に対応付ける方式をいう。
【００４５】
アドレス変換テーブル（Ｌ２Ｐテーブル）には、カード１出荷の際に、どの論理ブロックアドレスが、どの物理ブロックアドレスに対応しているかがテーブル情報として対応付けられている。
【００４６】
論理ブロックアドレス（ＬＢＡ）とは、ホスト装置２が発行し、且つホスト装置２側で管理されているブロックアドレスをいう。
【００４７】
物理ブロックアドレス（ＰＢＡ）とは、ＮＡＮＤフラッシュメモリ１１側の実際のブロックアドレスをいう。
【００４８】
図６に示すように、ＮＡＮＤフラッシュメモリ１１は、最小の消去単位であるブロックBlock 0 〜 Block n+1を備えている。ブロックBlock 0 〜 Block n+1は、最小の書き込み単位であるページを、例えば、３２ページ、２５６ページ或いは５１２ページ等にまとめて構成されるものである。
【００４９】
さらに、ＮＡＮＤフラッシュメモリ１１は、上記ブロックBlock 0 〜 Block n+1のうち、集中管理ブロックＢ１（Block n）、Ｂ２（Block 0）を備えている。
【００５０】
集中管理ブロックＢ１（Block n）は、ページ１、およびページ２を備えている。
【００５１】
ページ１には、アドレス変換テーブル（以下、Ｌ２Ｐテーブルと称する）が格納されている。Ｌ２Ｐテーブルとは、上記のように、どの論理ブロックアドレスが、どの物理ブロックアドレスに対応しているかを示すテーブル情報である。
【００５２】
ページ２には、空きブロックアドレステーブル、バッドブロック（Bad Block：不良領域）アドレステーブル、予備ブロックアドレステーブルが格納されている。以下、上記テーブルをそれぞれ、空きテーブル、ＢＢテーブル、予備テーブルと称する。
【００５３】
空きテーブルには、有効なブロックアドレスのみが登録されている。ＢＢテーブルは、後天的に発生したエラーにより使用不可となったブロックアドレス（不良ブロックアドレス）を登録するテーブルである。予備テーブルは、後述する動作の際に必要となるテーブルである。
【００５４】
集中管理ブロックＢ２（Block 0）は、ページＰ０を備えている。
【００５５】
ページＰ０には、ＢＢテーブルが格納されているが、このＢＢテーブルは、先天的に発生したエラーにより使用不可となった不良ブロックアドレスを登録するテーブルである。具体的には、ＮＡＮＤフラッシュメモリ１１が封止された後の正常に機能するか否かの機能テストの際に、あらかじめ発見された不良ブロックアドレスが登録されている点で、ページ２に格納された上記ＢＢテーブルと相違している。
【００５６】
また、集中管理ブロックＢ１に格納された上記複数のテーブル（Ｌ２Ｐテーブル、空きテーブル、後天性ＢＢテーブル、予備テーブル）は、後述する書き込み動作等の際に、ＲＡＭ２５上に展開され、コントローラ１２中のＭＰＵ２２により管理される。一方、集中管理ブロックＢ２に格納された後天性ＢＢテーブルは、ＲＡＭ上には展開されない。
【００５７】
このように、ＮＡＮＤフラッシュメモリ１１が、複数のテーブルが必要な理由は、下記ように、ＮＡＮＤフラッシュメモリ１１はページＰ単位の書き換えができず、ブロックBlock 0 〜 Block n+1を消去してから書き込みを行う必要があるからである。
【００５８】
例えば、ブロックBlock 1中のあるページのデータを書き換える場合、ブロックBlock 1とは異なるブロックに新たに書き換えたいページと、Block 1内で書き換えを行わないデータとをコピーする制御が発生する。すなわち、違うブロック、例えば、ブロックBlock 2等へのデータのコピー処理が発生する。
【００５９】
このように、データを書き換える場合、書き換え後のデータは書き換え前のブロックBlockと異なるブロックBlockに書き込まれるため、論理ブロックアドレス（ＬＢＡ）と、この論理ブロックアドレスに対応する物理ブロックアドレス（ＰＢＡ）との対応関係は、データを書き換える毎に動的に変化する。従って、ブロックアドレス変換テーブル（Ｌ２Ｐテーブル）により、論理ブロックアドレス（ＬＢＡ）を物理ブロックアドレス（ＰＢＡ）に変換した後、物理ブロックアドレス（ＰＢＡ）に基づいて実際にアクセスすべきブロックBlock 0 〜 Block n+1が特定される。
【００６０】
そのため、図７に示すように、データを書き換える場合、ページＰ１に格納されていたＬ２Ｐテーブルは、その書き換えに関わった部分の対応関係が更新された後、例えば、ページＰ３に格納される。
【００６１】
同様の理由から、データを書き換える場合、ページＰ２に格納されていたＢＢテーブル、予備テーブル、および空きテーブルは、その書き換えに関わった部分の対応関係が更新され、例えば、ページＰ４に格納される。
【００６２】
このように、コントローラ１２は、Ｌ２Ｐテーブルや空きテーブル等の変更がある度に、追記式でＮＡＮＤ型フラッシュメモリ１１の集中管理ブロックＢ１（Block n）に記憶する。
【００６３】
上記に説明したように、ＮＡＮＤフラッシュメモリ１１の特性によりデータ上書きができない。そのため、同じ論理ブロックアドレスへデータを書き込む（データ上書き）場合には、別の物理ブロックアドレスを割り当てることで、見かけ上のデータ上書きが行えるようにする必要がある。
【００６４】
また、本例の場合、空きテーブルのデータフォーマットは、例えば、図８のように示される。図示するように、使用可能（書き込み／消去可能）なブロック情報が、２バイト情報の物理ブロックアドレス表現で表わされている。このテーブルには、上記先天性バッドブロックアドレスでないブロックアドレスのみが登録されている。即ち、このテーブルには、有効なブロックアドレスのみが登録されている。
【００６５】
このように物理ブロックアドレス表現でフォーマットされているため、後述する動作の際に、コントローラ１２が、ポインタを移動させることができる。そのため、次に使用するテーブル情報（アドレスデータ）を検索する必要がない。例えば、コントローラ１２は、所定の動作の後、テーブル情報0x005Fのポインタ５５を、テーブル情報0x006Dのポインタ５６に移動させる。
【００６６】
ＢＢテーブルのデータフォーマットは、例えば、図９のように示される。図示するように、バッドブロックアドレスとなったブロック情報が、２バイト情報の物理ブロックアドレス表現で表わされている。ＢＢテーブルとしては、上記のように先天性ＢＢテーブルと後天性ＢＢテーブルとが存在する。
【００６７】
予備テーブルのデータフォーマットは、例えば、図１０のように示される。図示するように、バッドブロックが発生した際に代替可能なブロックアドレスの情報が、２バイト情報の物理ブロックアドレス表現で表わされている。
【００６８】
このように物理ブロックアドレス表現でフォーマットされているため、後述する動作の際に、コントローラ１２は、ポインタを移動させることができる。そのため、次に使用するテーブル情報（アドレスデータ）を検索する必要がない。例えば、コントローラ１２は、所定の動作の後、テーブル情報0x103Fのポインタ５８を、テーブル情報0x106Dのポインタ５９に移動させる。
【００６９】
＜書き換えの際のテーブル管理動作＞
次に、この実施形態に係るＮＡＮＤフラッシュメモリ１１の書き換えの際のテーブル管理動作について、図１１乃至図１３を用いて説明する。このテーブル管理動作は、コントローラ１２中のＭＰＵ２２が上記ページＰ０〜Ｐ２に格納されたＬ２Ｐテーブル等の各種テーブルをＲＡＭ２５上で展開されたＲＡＭ空間で行うものである。以下、この説明においては、図１１のフロー図に則して説明する。
【００７０】
（ステップＳＴ１）
まず、図１２に示すように、例えば、ホスト機器２が指定する論理ブロックアドレス（ＬＢＡアドレス）ＬＢＡ1に対して書き換えが発生した場合を考える。
【００７１】
この際、ＭＰＵ２２は、論理ブロックアドレスＬＢＡ1に対応する消去ブロックである、例えば、物理ブロックアドレスＰＢＡn-1を更新するため、空きテーブル中の空きブロックアドレスを参照する。
【００７２】
（ステップＳＴ２）
続いて、図１２に示すように、ＭＰＵ２２は、参照した空きテーブル中のブロックアドレスを即座に有効ブロックとして扱い、ブロックアドレスＰＢＡnを取得する。
【００７３】
この際、ＭＰＵ２２は、空きテーブル中の空きテーブルポインタ位置を更新する（ポインタ５５→ポインタ５６）。このように、空きテーブルポインタ位置を更新しないと、後の書き換え動作によって、空きブロックアドレスＰＢＡn-1のデータに対する上書きとなり、このような上書きを防止するためである。
【００７４】
（ステップＳＴ３（割り当てられた物理ブロックアドレスがＢＢアドレスか否か？））
続いて、ＭＰＵ２２は、次に割り当てられ予約された物理ブロックアドレスＰＢＡnが正常に書き込みできるか否かの確認を行う。即ち、ＭＰＵ２２は、次に割り当てられ予約された上記物理ブロックアドレスＰＢＡnが、例えば、ＥＣＣ訂正不可能なエラー、書き込みエラー、Eraseエラー等のエラーによってバッドブロックアドレス（後天性バッドブロックアドレスまたは後天性不良領域）であるか否かの確認を行う。
【００７５】
（ステップＳＴ６）
続いて、上記物理ブロックアドレスＰＢＡnがバッドブロックアドレスでない場合には、図１２に示すように、ＭＰＵ２２は、次のブロックアドレスとして割り当てに予約されたＬ２Ｐテーブル中の物理ブロックアドレスＰＢＡnをそのまま使用し、ブロックアドレスＰＢＡn を、Ｌ２Ｐテーブルに登録する。さらに、その後、ＭＰＵ２２は、使用していたブロックアドレスＰＢＡn-1を空きテーブルに登録する。
【００７６】
（ステップＳＴ４）
一方、上記物理ブロックアドレスＰＢＡnがバッドブロックアドレスである場合には、図１３に示すように、ＭＰＵ２２は、そのブロックアドレスＰＢＡnをバッドブロックアドレスとして認識する。そして、ＭＰＵ２２は、ＢＢアドレステーブルに新規に割り当てられたブロックアドレスＰＢＡnとして隔離して登録する。
【００７７】
（ステップＳＴ５）
続いて、上記物理ブロックアドレスＰＢＡnがバッドブロックアドレスである場合には、、図１３に示すように、ＭＰＵ２２は、予備テーブルから代替ブロックアドレスＰＢＡrを取得し、代替ブロックアドレスＰＢＡrをＬ２Ｐテーブル中に登録する。即ち、ＭＰＵ２２は、予備テーブルから正常なブロックアドレスを取得する。この際、ＭＰＵ２２は、予備ブロックアドレステーブルの予備テーブルポインタ位置を更新する（ポインタ５８→ポインタ５９）
その後、ＭＰＵ２２は、上記ステップＳＴ１〜同様の動作を繰り返すことにより、ＮＡＮＤフラッシュメモリ１１の書き換えの際のテーブル管理動作を行う。
【００７８】
上記に説明したこの実施形態に係る半導体記憶装置およびその制御方法によれば、下記（１）および（２）の効果が得られる。
【００７９】
（１）判定処理の回数および検索処理の回数を低減でき、処理速度を向上できる。
【００８０】
上記のように、本例に係る半導体記憶装置は、Ｌ２Ｐテーブル、空きテーブル、後天性ＢＢテーブル、予備テーブルを格納した集中管理ブロックＢ１（第１集中管理ブロック）を備えている。ここで、上記空きテーブルには、有効なブロックアドレスのみが登録されている。
【００８１】
そのため、ＭＰＵ２２は、参照した空きテーブル中のブロックアドレスを即座に有効ブロックとして扱い、ブロックアドレスＰＢＡnを取得することができる（ステップＳＴ２）。つまり、ＭＰＵ２２は、このステップＳＴ２の際に、空きテーブル中のブロックアドレスが有効ブロックか否かを判定する必要なく、このステップＳＴ２の際の判定処理を削減することができる。その結果、半導体記憶装置の処理速度を向上することができる。
【００８２】
さらに、集中管理ブロックＢ１には、予備テーブルが格納されている。
【００８３】
そのため、上記物理ブロックアドレスＰＢＡnがバッドブロックアドレスである際（ステップＳＴ４）には、ＭＰＵ２２は、そのブロックアドレスＰＢＡnを代替する代替ブロックアドレスＰＢＡrを予備テーブルから取得することができる（ステップＳＴ５）。
【００８４】
そのため、上記物理ブロックアドレスＰＢＡnがバッドブロックアドレスである場合であっても、即座に代替ブロックアドレス取得することができる。
【００８５】
一方、従来において、バッドブロックアドレスが発生した場合には、ＢＢテーブル等のＬ２Ｐテーブル以外のその他のテーブルから代替できるブロックアドレスを取得していた。そのため、代替できるブロックアドレスを、Ｌ２Ｐテーブル以外の全てのテーブルから検索する検索処理が必要であった。
【００８６】
しかし、本例の集中管理ブロックＢ１には、バッドブロックアドレスが発生した際に、代替できる代替ブロックアドレスがあらかじめ割り当てられた予備テーブルが格納されている。
【００８７】
従って、ＭＰＵ２２は、バッドブロックアドレスが発生した際（ステップＳＴ４）であっても、全てのテーブルから代替できるブロックアドレスを検索する検索処理の必要がない。その結果、検索処理の回数を低減でき、処理速度を向上することができる。
【００８８】
このように、本例では、１度の書き換え動作の際に、判定処理の回数、検索処理の回数をそれぞれ１つ少なくすることができる。このような判定処理や検索処理があると、通常の書き込み／消去アクセスの書き換え動作の際に、これらの処理を頻繁に行う必要がある。そのため、本例によれば、メモリ全体の高速動作のパフォーマンス向上に大きく寄与し得る。
【００８９】
さらに、本例のようなテーブルの管理によれば、判定処理の回数および検索処理の回数を低減できるため、テーブルの管理を簡素化することができる。そのため、コントローラ１２の設計負担を低減できるというメリットもある。
【００９０】
（２）一部の物理ブロックBlockに書き換え動作が集中することを防止でき、書き換え回数の平準化を行うことができる。
【００９１】
上記のように、ステップＳＴ２の際、ＭＰＵ２２は、空きテーブル中の空きテーブルポインタ位置を更新する（ポインタ５５→ポインタ５６）。このように、空きテーブルポインタ位置を更新することによって、空きブロックアドレスＰＢＡn-1のデータに対する上書きを防止することができる。さらに、ステップＳＴ５の際、ＭＰＵ２２は、予備ブロックアドレステーブルの予備テーブルポインタ位置を更新する（ポインタ５８→ポインタ５９）。
【００９２】
上記ポインタを更新することができるため、一部の空きテーブルおよび予備テーブルのブロックアドレスを分散化できる。そのため、ＮＡＮＤ型フラッシュメモリ１１の一部の物理ブロックBlockに書き込み／消去の書き換え動作が集中することを防止でき、書き換え回数の平準化を行うことができる。一部の物理ブロックBlockに書き換え動作が集中すると、その物理ブロックBlock中のメモリセルが劣化してしまう。そのため、書き換え回数を平準化により、その物理ブロックBlock中のメモリセルの劣化を防止することができる。
【００９３】
このように、ポインタを更新することができるのは、図８乃至図１０に示したように空きテーブル、ＢＢテーブル、および予備テーブルが物理ブロックアドレス表現でフォーマットされているからである。
【００９４】
一方、従来のＡＴテーブル（アサインテーブル）およびＢＢテーブルは、図１４、図１５に示すように、１バイト８ブロック情報のビット表現によりフォーマットされていた。そのため、次の参照位置情報を持たず、どのブロックかを検索する演算処理が必要であった。
【００９５】
このように、空きテーブル、ＢＢテーブル、および予備テーブルが物理ブロックアドレス表現でフォーマットされているため、検索する演算処理を省くことができ、上記のようにポインタ位置を更新することができる。
【００９６】
尚、本例では、Ｌ２Ｐテーブルの一例として、物理ブロックアドレス（ＰＢＡ）のアドレスが順次示されているものを示したが、このアドレスは必ずしも順次示されている必要はない。例えば、本例では、図１２、図１３に示したように、Ｌ２Ｐテーブルには物理ブロックアドレスＰＢＡ0，…，ＰＢＡnと順次示されている。しかし、例えば、物理ブロックアドレスＰＢＡ1，ＰＢＡn+1,…，ＰＢＡ0のようにランダムに示されているＬ２Ｐテーブルであっても上記同様の効果が得られる。
【００９７】
以上、上記実施形態を用いて本発明の説明を行ったが、この発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件の適宜な組み合わせにより種々の発明が抽出され得る。例えば上記実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題の少なくとも１つが解決でき、発明の効果の欄で述べられている効果の少なくとも１つが得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【図面の簡単な説明】
【００９８】
【図１】この発明の一実施形態に係る半導体記憶装置を説明するためのブロック図。
【図２】一実施形態に係る半導体記憶装置の信号ピンに対する信号の割り当てを示す図。
【図３】一実施形態に係る半導体記憶装置のハード構成を示すブロック図。
【図４】一実施形態に係る半導体記憶装置のレジスタ部の詳細な構成を示す図。
【図５】一実施形態に係る半導体記憶装置のフラッシュメモリにおけるデータ配置を示す図。
【図６】一実施形態に係る半導体記憶装置のフラッシュメモリのメモリ空間を示す図。
【図７】一実施形態に係る半導体記憶装置の更新後のフラッシュメモリのメモリ空間を示す図。
【図８】一実施形態に係る空きテーブルのデータフォーマットを示す図。
【図９】一実施形態に係るＢＢテーブルのデータフォーマットを示す図。
【図１０】一実施形態に係る予備テーブルのデータフォーマットを示す図。
【図１１】一実施形態に係るフラッシュメモリの書き換えの際のテーブル管理動作を示すフロー図。
【図１２】一実施形態に係る半導体記憶装置の一テーブル管理動作（ＳＴ１〜ＳＴ６）を示す図。
【図１３】一実施形態に係る半導体記憶装置の一テーブル管理動作（ＳＴ３〜ＳＴ５）を示す図。
【図１４】一実施形態に係る半導体記憶装置の一テーブル管理動作（ＳＴ１〜ＳＴ６）を示す図。
【図１５】一実施形態に係る半導体記憶装置の一テーブル管理動作（ＳＴ３〜ＳＴ５）を示す図。
【符号の説明】
【００９９】
１１…ＮＡＮＤ型フラッシュメモリ、Ｂ１、Ｂ２…集中管理ブロック、Ｐ０〜Ｐ２…ページ、Block 0〜Block n+1…ブロック。
【図１】
2008009932.tif 000003
【図２】
2008009932.tif 000004
【図３】
2008009932.tif 000005
【図４】
2008009932.tif 000006
【図５】
2008009932.tif 000007
【図６】
2008009932.tif 000008
【図７】
2008009932.tif 000009
【図８】
2008009932.tif 000010
【図９】
2008009932.tif 000011
【図１０】
2008009932.tif 000012
【図１１】
2008009932.tif 000013
【図１２】
2008009932.tif 000014
【図１３】
2008009932.tif 000015
【図１４】
2008009932.tif 000016
【図１５】
2008009932.tif 000017