(57)【要約】【課題】コンパクション処理の対象候補となるブロックの検索動作がメインメモリへのアクセス速度に影響しない不揮発性メモリのコントローラを提供する。【解決手段】不揮発性メモリのコントローラ（１）であって、不揮発性メモリへのデータ書き込み時にデータ書き込みに伴い無効にすべきページが属するブロックの有効ページ数をカウントする手段（５）と、前記カウント手段によりカウントされた有効ページ数が所定数以下の場合、前記ブロックをコンパクション処理の対象とする追加手段（６１）とを具備するコントローラ。【選択図】図１
2011159044.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリのコントローラであって、
不揮発性メモリへのデータ書き込み時にデータ書き込みに伴い無効にすべきページが属するブロックの有効ページ数をカウントするカウント手段と、
前記カウント手段によりカウントされた有効ページ数が所定数以下の場合、前記ブロックをコンパクション処理の対象とする追加手段と、
を具備するコントローラ。
【請求項２】
ページ毎に不揮発性メモリのデータの有効、無効を管理する有効ページ管理テーブルをさらに具備し、
前記カウント手段はデータ書き込み時に、ライト対象の論理ブロックアドレスに対応して今回書き込みが行われたページを有効とし、該ライト対象の論理ブロックアドレスに対応して以前に書き込みが行われたページを無効とし、前記有効ページ管理テーブルを更新する請求項１記載のコントローラ。
【請求項３】
前記追加手段は、前記所定数を記憶するレジスタを具備する請求項１記載のコントローラ。
【請求項４】
前記追加手段によりコンパクション処理の対象とされるブロックを記憶するコンパクション候補管理テーブルをさらに具備し、前記コンパクション候補管理テーブルはハードウェアおよびファームウェアの双方からアクセス可能である請求項１記載のコントローラ。
【請求項５】
不揮発性メモリのコントローラであって、
一定バイトからなるページ毎に不揮発性メモリのデータの有効、無効を管理する有効ページ管理テーブルと、
所定ページからなるブロック毎にコンパクション処理の候補を管理するコンパクション候補管理テーブルと、
ライト対象の論理ブロックアドレスを物理ブロックアドレスに変換して不揮発性メモリへデータを書き込む手段と、
前記不揮発性メモリへのデータ書き込みが終了すると、前記有効ページ管理テーブルを更新する更新手段と、
前記更新された有効ページ管理テーブルに基づいて、前記ライト対象の論理ブロックアドレスに対応し以前にデータが書き込まれた旧物理ブロックの有効ページ数をカウントする手段と、
カウントした前記有効ページ数が所定数以下の場合、前記旧物理ブロックのアドレスをコンパクション候補管理テーブルに追加する手段と、
を具備するコントローラ。
【請求項６】
前記更新手段は前記ライト対象の論理ブロックアドレスから変換され今回書き込みが行われた物理ブロックを有効とし、前記ライト対象の論理ブロックアドレスから変換され以前に書き込みが行われた物理ブロックを無効とする請求項５に記載のコントローラ。
【請求項７】
カウントした前記有効ページ数と比較する前記所定数を記憶するレジスタをさらに具備する請求項５記載のコントローラ。
【請求項８】
前記コンパクション候補管理テーブルはハードウェアおよびファームウェアの双方からアクセス可能である請求項５記載のコントローラ。
【請求項９】
不揮発性メモリの制御方法であって、
ライト対象の論理ブロックアドレスを物理ブロックアドレスに変換して不揮発性メモリへデータを書き込むことと、
前記不揮発性メモリへのデータ書き込みが終了すると、一定バイトからなるページ毎に不揮発性メモリのデータの有効、無効を管理する有効ページ管理テーブルを更新することと、
前記更新された有効ページ管理テーブルに基づいて、前記ライト対象の論理ブロックアドレスに対応し以前にデータが書き込まれた旧物理ブロックの有効ページ数をカウントすることと、
カウントした前記有効ページ数が所定数以下の場合、前記旧物理ブロックのアドレスを、所定ページからなるブロック毎にコンパクション処理の候補を管理するコンパクション候補管理テーブルに追加することと、
を具備する制御方法。
【請求項１０】
前記更新することは前記ライト対象の論理ブロックアドレスから変換され今回書き込みが行われた物理ブロックを有効とし、前記ライト対象の論理ブロックアドレスから変換され以前に書き込みが行われた物理ブロックを無効とする請求項９に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はフラッシュメモリ等の不揮発性メモリのコントローラ及び不揮発性メモリの制御方法に関する。
【背景技術】
【０００２】
一般に不揮発性メモリ、例えばフラッシュメモリはデータの書き込みおよび削除の際に既存データを残したまま別の物理領域へ書き込みを行うため、データの書き込みや削除を繰り返すと、分断された不要な領域が削除されずに残り、使用している領域も非連続的に保持されている。この不要な領域を消去し、使用している領域を連続した領域に纏める処理はコンパクション、あるいはガーベジコレクションと呼ばれる。従来の半導体記憶装置のガーベジコレクション処理は例えば、特許文献１に記載されている。
【０００３】
データ書き込み処理あるいは無効化処理の後、管理データの更新を行い、フラッシュメモリ内の領域使用率を計算する。領域使用率の計算の結果に応じてガーベジコレクションの必要があるか否かを判断し、必要があればガーベジコレクションを行う。ガーベジコレクション処理は比較的時間が長いため、ガーベジコレクション処理と同時にユーザデータクセスを実行すると、ユーザデータクセス時間が通常状態時よりも遅くなってしまう欠点がある。この問題はフラッシュメモリのユーザデータクセス処理とガーベジコレクション処理を異なるタイミングで実行させることにより解決できる。そのため、特許文献１記載の装置は、ガーベジコレクションのような不要なデータを消去するタイミングを外部に通知可能なフラッシュメモリを提供する手段を具備する。比率計算部はフラグ領域の状態を判定して、ユーザ領域の状態を判定してユーザ領域が無効である比率を算出し、算出した比率を制御部に送る。制御部は比率を受信し、データの書き込み動作または無効化処理の直後に外部に出力する。フラッシュメモリの制御部は書き込み命令を受け取ると、指定されたユーザ領域にデータを書き込む。さらに、対応するフラグ領域に、データが有効であることを示す値を書き込む。その後、比率計算部で、フラグ領域の状態を判定して、ユーザ領域が無効である比率を算出させる。比率計算部で算出された比率を受け取り、これをデータバスに出力して外部に通知する。
【０００４】
上記した問題以外にもガーベジコレクション処理による動作速度の低下の要因がある。ガーベジコレクション処理の準備のために、ファームウェアはハードウェアに対して、ガーベジコレクションの対象候補となるブロックの検索動作の要求を定期的もしくは一意に実施する必要がある。
【０００５】
従来、該検索のために一時的にメインメモリへのアクセスが増加し、メインメモリの転送帯域を消費してしまうことがあり、フラッシュメモリとメインメモリとの間のユーザデータ転送に係るメインメモリアクセスが阻害され、結果としてユーザから見た速度性能が劣化する場合があった。
【０００６】
特許文献１記載の半導体記憶装置では、チップ内部の有効ブロック数を判断するために使用する「フラグ領域」と呼ばれるテーブル情報を、フラッシュメモリチップメモリセル部に記憶している。ガーベジコレクション候補を検索する際に必ず該テーブルをアクセス（フラッシュメモリへのアクセス）しなければならない。フラッシュメモリチップ単体でガーベジコレクション候補ブロックを判定する方式のため、チップ毎にガーベジコレクションを実施できる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２００４−０７７４４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来の不揮発性メモリのコントローラは、コンパクションの対象候補となるブロックの検索動作によりメインメモリへのアクセス速度が低下するという課題がある。
【０００９】
本発明はコンパクション処理の対象候補となるブロックの検索動作がメインメモリへのアクセス速度に影響しない不揮発性メモリのコントローラ及び不揮発性メモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一態様による不揮発性メモリのコントローラは、不揮発性メモリへのデータ書き込み時にデータ書き込みに伴い無効にすべきページが属するブロックの有効ページ数をカウントするカウント手段と、カウント手段によりカウントされた有効ページ数が所定数以下の場合、前記ブロックをコンパクション処理の対象とする追加手段とを具備する。
【００１１】
本発明の他の態様による不揮発性メモリの制御方法は、ライト対象の論理ブロックアドレスを物理ブロックアドレスに変換して不揮発性メモリへデータを書き込むことと、前記不揮発性メモリへのデータ書き込みが終了すると、一定バイトからなるページ毎に不揮発性メモリのデータの有効、無効を管理する有効ページ管理テーブルを更新することと、前記更新された有効ページ管理テーブルに基づいて、前記ライト対象の論理ブロックアドレスに対応し以前にデータが書き込まれた旧物理ブロックの有効ページ数をカウントすることと、カウントした前記有効ページ数が所定数以下の場合、前記旧物理ブロックのアドレスを、所定ページからなるブロック毎にコンパクション処理の候補を管理するコンパクション候補管理テーブルに追加することとを具備する。
【発明の効果】
【００１２】
本発明の一態様によれば、通常のデータ書き込み動作に付随してコンパクション候補検索の一部とコンパクション候補設定が自動的に実行される。このため、従来のファームウェアが必要としていた定期的なコンパクションの対象候補となるブロックの検索動作の要求を不要とすることができる。このようにファームウェアによって起動される検索動作の回数を低減させることによって、一時的に増加するメインメモリの帯域消費の比率が低下し、ＮＡＮＤ型フラッシュメモリとのユーザデータ転送に係るメインメモリへのアクセスが阻害されにくくなるため、その分速度性能劣化を防止できる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態に係る半導体記憶装置を示す図。
【図２】ブロック内有効ページ管理ビットマップテーブルを示す図。
【図３】コンパクション候補管理テーブルとＮＡＮＤ型フラッシュメモリ内の該当ブロックとの関係を示す図。
【図４】ＮＡＮＤフラッシュメモリＩ／Ｆの詳細な構成を示すブロック図。
【図５】ＮＡＮＤフラッシュメモリＩ／Ｆの動作を示すフローチャート。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施の形態について詳細に説明する。
【００１５】
図１は一実施形態の構成を示すブロック図である。本実施形態は複数の不揮発性メモリ、例えばＮＡＮＤ型フラッシュメモリ８１、８２、…８ｎを含む。ＮＡＮＤ型フラッシュメモリ８１、８２、…８ｎは例えば半導体ドライブ(Solid State Drive: ＳＳＤ)の記憶部を構成する。ＮＡＮＤ型フラッシュメモリ８１、８２…８ｎの各々は例えば２〜１６個のメモリチップからなる。ＮＡＮＤ型フラッシュメモリ８１、８２、…８ｎはＮＡＮＤフラッシュメモリコントローラ１に接続される。ＮＡＮＤフラッシュメモリコントローラ１はメモリアクセスバス２ｂで互いに接続されたＣＰＵ２と、メインメモリ３と、ＮＡＮＤフラッシュメモリインターフェース（Ｉ／Ｆ）６とを具備する。ＮＡＮＤフラッシュメモリインターフェース（Ｉ／Ｆ）６はＮＡＮＤ型フラッシュメモリ８１、８２、…８ｎに接続され、ＮＡＮＤ型フラッシュメモリ８１、８２、…８ｎへのアクセスを制御する。メインメモリ３は例えばｄＲＡＭからなり、ブロック内有効ページ管理ビットマップテーブル５とコンパクション候補管理テーブル４を含む。
【００１６】
ＮＡＮＤフラッシュメモリコントローラ１のメモリアクセスバス２ｂには外付けのＲＯＭ９も接続される。ＲＯＭ９はファームウェア７を含む。ファームウェア７はＣＰＵ２を使用し、ＮＡＮＤフラッシュメモリＩ／Ｆ６内部へのＩ／ＯコマンドアクセスによりＮＡＮＤ型フラッシュメモリ８１、８２、…８ｎへのリードコマンド、ライトコマンドの発行を行う。
【００１７】
ＮＡＮＤフラッシュメモリＩ／Ｆ６はＣＰＵ２からの命令を受理し、ＮＡＮＤ型フラッシュメモリ８１、８２、…８ｎとメインメモリ３間のデータ転送を実施する。
【００１８】
ファームウェア７はＲＯＭ９にプログラムされた内容が、システム電源起動時に、ＣＰＵ２内部の一時記憶部もしくはメインメモリ３に転送されて動作するものとする。ファームウェア７からのＮＡＮＤ型フラッシュメモリ８１、８２、…８ｎアクセス操作は論理ブロックアドレス（ＬＢＡ: Logical Block Address）を用いて実施される。
【００１９】
ブロック内有効ページ管理ビットマップテーブル５は、図２に示すように構成されている。ＮＡＮＤ型フラッシュメモリ８１、８２、…８ｎの各ページが有効（Valid）か無効（Invalid）かを示すためのビットマップ構成をとる。所定のバイト、例えば２１１２バイト毎に１ページを構成し、所定のページ、例えば６４ページが１ブロックを構成する。有効とは、当該ページ内に書き込まれたデータが存在し、そのデータは有効であることを示している。無効とは、当該ページ内に何も書き込まれていないか、もしくは当該ページ内に以前書き込まれていたデータが無効になった場合（同一ＬＢＡの最新データが書き込まれた場合）を示している。
【００２０】
ブロック内有効ページ管理ビットマップテーブル５はＮＡＮＤ型フラッシュメモリ８１、８２、…８ｎへの書き込みが発生すると、有効／無効状態が更新される。ファームウェア７からの書き込み操作はＬＢＡを用いて実施される。従って、ＮＡＮＤ型フラッシュメモリ８１、８２、…８ｎに対して実際に書き込む場合は、ＬＢＡを物理アドレス（ブロックアドレス、ページアドレス）に変換して、データが書き込まれる。
【００２１】
ＮＡＮＤ型フラッシュメモリ８１、８２、…８ｎは同一セルへの書き込みを実施すると特性上、内部セルの寿命が極端に低下する。それを防ぐため、ファームウェア７とＮＡＮＤフラッシュメモリＩ／Ｆ６は同じＬＢＡでデータを複数回書き込む場合でも、以前書き込んだ物理アドレスとは異なる物理アドレスのページにデータを新規に書き込み、以前書き込んだ物理アドレスのページに格納されているデータを無効とする処理を行う。この有効／無効管理を実施するためにブロック内有効ページ管理ビットマップテーブル５が存在している。従って、このような書き込み操作を実施しながらシステムが動作しているうちに、いずれは有効ページ数の少ないブロック（すなわち、コンパクション処理の対象となるブロック）が発生してくるのは必須である。
【００２２】
従来、ファームウェア７はブロック内有効ページ数を一意にカウントし、有効数がある一定数以下であれば、そのブロックをコンパクション対象の一つとしてエントリし、コンパクション処理に適用していた。コンパクション処理とは、複数のブロック内の有効ページデータをかき集めて、別のブロックに移動させ、移動元のページを無効化し、何も書かれていない空きブロックを作り出す操作のことであり、コンパクション候補管理テーブル４はそのために存在する。
【００２３】
コンパクションの候補となるブロックは複数種類あり、有効ページ比率が低くなったブロック、エラーが頻発するブロック、リードのみを規定回数実施したブロックなどが挙げられる。本実施形態はこの中で有効ページ比率が低下した時のコンパクション処理に関し、その候補の検索を効率化するためのものである。
【００２４】
従来、ブロック内有効ページ管理ビットマップテーブル５のブロック内有効ページ数のカウントには専用のハードウェアが用いられ、ファームウェア７は定期的、もしくは一意に該ハードウェアを動作させてコンパクション候補を検索特定し、コンパクション候補管理テーブル４に追加していた。そのため、検索動作に必要なメインメモリ３へのアクセスが一時的に集中することがあり、ＮＡＮＤ型フラッシュメモリ８１、８２、…８ｎとのデータ転送に必要なメモリアクセスを阻害し、ユーザに対するデータ提供速度性能を劣化させる事があった。
【００２５】
本実施形態ではデータ書き込み動作終了時にブロック内有効ページ管理ビットマップテーブル５の更新を行うと同時に、無効化する側（同じＬＢＡで以前に書き込んだ物理ブロック）のブロック内有効ページ数カウントを実施し、設定数以下であった場合、以前に書き込んだ物理ブロックをコンパクション候補としてコンパクション候補管理テーブル４に追加する。ファームウェア７が起動するコンパクション候補検索は、コンパクション候補管理テーブル４が保持している候補がある一定量を切った場合に発生する可能性がある。しかし、本実施形態では、データ書き込み動作終了時にハードウェアによってある程度自動的にコンパクション候補管理テーブル４に候補を追加することが可能になるので、ファームウェア７が起動するコンパクション候補の検索動作要求の回数を低減させることができる。そのため、コンパクション候補検索のためのメインメモリ３へのアクセスの集中が緩和され、ＮＡＮＤ型フラッシュメモリ８とメインメモリ３との間のユーザデータ転送のためのメインメモリ３へのアクセスが阻害されにくくなり、速度性能劣化を低減することができる。
【００２６】
図３はコンパクション候補管理テーブル４とＮＡＮＤ型フラッシュメモリ８１、８２、…８ｎ内の該当ブロックとの関係を示す図である。コンパクション候補管理テーブル４は主にファームウェア７が管理しており、図の例ではキュー（ＦＩＦＯ）構造を想定している。従って、ＮＡＮＤ型フラッシュメモリ８１、８２、…８ｎ内の物理ブロックアドレス（physical block address）の先頭値をキューのデータとし、リードポインタ（ＲＰ）とライトポインタ（ＷＰ）をそれぞれ具備している。キューへの書き込みはライトポインタが示すアドレスに対して実施し、コンパクションを実行する場合の対象ブロックアドレスはリードポインタをアドレスとしたキューに保持された物理ブロックアドレスが使用される。各々ポインタ操作については一般的なキュー操作方法と同等である。
【００２７】
図４はＮＡＮＤフラッシュメモリＩ／Ｆ６の詳細なブロック図である。メモリアクセスバス２ｂはＣＰＵ２からＮＡＮＤフラッシュメモリＩ／Ｆ６をアクセスしたり、ＮＡＮＤフラッシュメモリＩ／Ｆ６からメインメモリ３をアクセスするために使用する内部バスである。
【００２８】
ＮＡＮＤ型フラッシュメモリ８へのアクセスはＩ／Ｏバッファ５７を経由して行われる。メモリアクセスバス２ｂからのライトデータはデータバッファ５２、データプロセッサ５３を介してＩ／Ｏバッファ５７に供給され、Ｉ／Ｏバッファ５７からのリードデータはデータプロセッサ５３、データバッファ５２を介してメモリアクセスバス２ｂに供給される。Ｉ／Ｏバッファ５７とＮＡＮＤ型フラッシュメモリ８とはデータ／ステータスと、コマンドにより接続される。
【００２９】
ＣＰＵ２からのリードコマンド、ライトコマンドはメモリアクセスバス２ｂを介してコマンドキュー５４に書き込まれる（ファームウェアによりプッシュされる）。ここでのコマンドフォーマットはＮＡＮＤフラッシュメモリＩ／Ｆ６が処理しやすいビットフォーマットであればよく、ハードウェア実装に依存している。コマンドキュー５４にコマンドが書き込まれると、コマンドプロセッサ５５はエントリされたコマンドをコマンドキュー５４から取り出し、コマンドシーケンサ５６にコマンドを発行して起動をかける。
【００３０】
コマンドシーケンサ５６はＮＡＮＤ型フラッシュメモリ８のアクセスを実施する。コマンドシーケンサ５６はＮＡＮＤ型フラッシュメモリ８のアクセスの際、データプロセッサ５３に対してデータ転送要求を実施し、データプロセッサ５３はデータ転送が完了するとコマンドシーケンサ５６に終了レスポンスを返す。コマンドシーケンサ５６は終了コマンドをコマンドプロセッサ５５に通知すると、コマンドプロセッサ５５はテーブル更新エンジン６１に対して終了コマンドを送付する。
【００３１】
テーブル更新エンジン６１は終了したコマンドに係るメインメモリ３上のテーブル更新を実施するモジュールであり、コンパクション候補ブロックの有効ページ数サーチ機能やライト終了時の有効ページ管理ビットマップテーブル５の更新処理及び、その他の管理テーブルの更新処理を実施する。本実施形態では本質に関係しないので、有効ページ管理ビットマップテーブル５の更新処理以外の更新処理の説明は省略する。テーブル更新エンジン６１はすべての処理を終了後、リプライキュー６２に終了コマンド情報をプッシュしてハードウェアとしてのコマンド処理が完了する。
【００３２】
ファームウェア７はリプライキュー６２をリードすることによってコマンド実行結果を確認する。
【００３３】
レジスタモジュール５９はＮＡＮＤフラッシュメモリＩ／Ｆ６の各種設定レジスタモジュールであり、ＣＰＵ２から種々のデータが設定される。レジスタモジュール５９はページ有効サーチレジスタ６０、コンパクションテーブルエントリライトポインタアドレスレジスタ６４を含む。ページ有効サーチレジスタ６０はテーブル更新エンジン６１に対してライト終了時にページ有効カウントを実施するかどうかを決めるイネーブル（EN）およびコンパクション候補にする場合の有効数閾値（Threshold）を渡す。
【００３４】
図５は一実施形態のライトに関する動作を示すフローチャートである。
【００３５】
ブロック＃１２でライトコマンドを発行し、ブロック＃１４でライトコマンドの対象であるＬＢＡを物理アドレス（ブロック／ページ）に変換する。物理アドレスに基づいてブロック＃１６でＮＡＮＤ型フラッシュメモリ８１、８２、…８ｎにデータを書き込む。データ書き込み動作が終了すると、ブロック＃１８でテーブル更新エンジン６１はメインメモリ３に配置したブロック内有効ページ管理ビットマップテーブル５をリードする。ブロック＃２０でビットマップテーブル５を次のように更新する。すなわち、今回の書き込み対象である物理ブロック内の該当ページ部を有効にし、今回の書き込み対象である論理ブロックに対応する以前の書き込み対象の物理ブロックの該当ページ部を無効にする。
【００３６】
ブロック＃２２でページ有効サーチレジスタ６０のイネーブルがオンか否かを判定し、オンの場合、更新後のブロック内有効ページ管理ビットマップテーブル５に基づいて、ブロック＃２４で以前の書き込み対象の物理ブロックのページフィールド部の有効ページ数をカウントする。ブロック＃２６で、カウント値を有効数閾値（Threshold）と比較する。
【００３７】
カウント値が有効数閾値（Threshold）以下であった場合、すなわち旧書き込み対象の物理ブロックの有効ページ数が少ない場合、ブロック＃２８でコンパクション候補管理テーブル４に対して該ブロックをコンパクション候補として追加する。
【００３８】
なお、上述したように、コンパクション候補管理テーブル４はキュー構造を採用しているので、テーブル４にエントリ（コンパクション候補として追加）するためにはテーブル４のライトポインタ情報をハードウェアが知らなければならない。そのため、そのアドレスを示すコンパクションテーブルエントリライトポインタアドレスレジスタ６４をレジスタモジュール５９に実装している。ライトポインタアドレスレジスタ６４に設定されたアドレスを使用してライトポインタが格納されているメインメモリ３を直接アクセスしてライトポインタ情報を得ることができる。
【００３９】
以上説明したように、第１の実施の形態によれば、フラッシュメモリ８１、８１２、…８１ｎへのデータ書き込み修了時に、ブロック内有効ページ管理ビットマップテーブル５を更新し、更新後のブロック内有効ページ管理ビットマップテーブル５に基づいて、今回のライト対象の論理ブロックアドレスに対応し以前にデータが書き込まれた旧物理ブロックの有効ページ数をカウントする。カウントした有効ページ数が所定数以下の場合、旧物理ブロックをコンパクション候補としてコンパクション候補管理テーブル４に追加する。
【００４０】
このため、通常のデータ書き込み動作に付随してコンパクション候補検索の一部とコンパクション候補設定が自動的に実行される。従って、従来のファームウェアが必要としていた定期的なコンパクションの対象候補となるブロックの検索動作の要求を不要とすることができる。このようにファームウェアによって起動される検索動作の回数を低減させることによって、一時的に増加するメインメモリの帯域消費の比率が低下し、ＮＡＮＤ型フラッシュメモリとのユーザデータ転送に係るメインメモリへのアクセスが阻害されにくくなるため、その分速度性能劣化を防止できる。
【００４１】
なお、この発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。例えば、コンパクション候補管理テーブル４はキュー構造で限定されない。例えば、データチェーン構造をとっていた場合は、チェーンの最終データが保持しているポインタのアドレスに対して、コンパクション候補データのエントリ追加をすればよい。
【００４２】
本発明はＮＡＮＤフラッシュメモリコントローラ１を使用するシステムであれば、どのようなシステムにも適用可能である。例えば、半導体ドライブ(Solid State Drive: ＳＳＤ)と呼ばれる機器や、シリコンオーディオ機器、メモリメディアカードなどに適用することができるが、その際には実施例で示した構成の他に、システム特有のホストバスを追加する必要がある。ＳＳＤであれば、ＳＡＳ／ＳＡＴＡのホストバスインターフェース等を追加する必要がある。
【００４３】
また、本発明は、コンピュータに所定の手段を実行させるため、コンピュータを所定の手段として機能させるため、コンピュータに所定の機能を実現させるため、あるいはプログラムを記録したコンピュータ読取り可能な記録媒体としても実施することもできる。
【００４４】
また、上述の説明は個々の実施例それぞれについて行ったが、複数の実施例を適宜組み合わせてもよい。
【符号の説明】
【００４５】
１…ＮＡＮＤフラッシュメモリコントローラ、２…ＣＰＵ、３…メインメモリ、４…コンパクション候補管理テーブル、５…ブロック内有効ページ管理ビットマップテーブル、６…ＮＡＮＤフラッシュメモリＩ／Ｆ、８…ＮＡＮＤ型フラッシュメモリ、９…ＲＯＭ。
【図１】
2011159044.tif 000003
【図２】
2011159044.tif 000004
【図３】
2011159044.tif 000005
【図４】
2011159044.tif 000006
【図５】
2011159044.tif 000007
【手続補正書】
【提出日】平成23年3月7日(2011.3.7)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
【特許文献１】再公表特許ＷＯ２００４／０７７４４７