(57)【要約】【課題】コンパクションサーチの実行がある時間内に集中して、ＣＰＵあるいはフラッシュメモリによるメインメモリのアクセスが妨害されることを防止することを目的とする。【解決手段】半導体記憶装置は、不揮発性メモリのコンパクション候補を決定するための候補情報を格納するメインメモリ（２４）と、前記メインメモリの候補情報のアクセス要求を発行する要求発行手段（３６）と、前記要求発行手段により発行されたアクセス要求を所定時間遅延する遅延手段（３２）と、前記遅延手段により遅延されたアクセス要求に基づいて前記メインメモリの候補情報をアクセスするアクセス手段（２８）を具備する。【選択図】図１
2011227930.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
前記不揮発性メモリに接続されるコントローラと、
を具備する半導体記憶装置であって、
前記コントローラは、
前記不揮発性メモリのコンパクション候補を決定するための候補情報を格納するメインメモリと、
前記候補情報を検索するための前記メインメモリの第１アクセス要求を発行する要求発行手段と、
前記要求発行手段により発行された前記第１アクセス要求を前記メインメモリのアクセス頻度に応じて第１時間遅延する遅延手段と、
アクセス要求のアービトレーションを行う調停回路と、
前記調停回路により前記第１アクセス要求に権利が与えられると、前記遅延手段により前記第１時間遅延された前記第１アクセス要求に基づいて前記メインメモリの候補情報をアクセスするアクセス手段と、
を具備する半導体記憶装置。
【請求項２】
前記コントローラは前記アクセス手段によるアクセスの終了確認を発行する確認発行手段をさらに具備し、
前記確認発行手段により発行された終了確認は前記遅延手段を介して前記メインメモリのアクセス頻度に応じて第２時間遅延され前記要求発行手段に返送される請求項１記載の半導体記憶装置。
【請求項３】
前記コントローラはメインメモリのアクセス頻度を検出する検出手段をさらに具備し、
前記検出手段により検出されたアクセス頻度が所定頻度より混んでいる場合、前記遅延手段の前記第１、第２時間は長くされ、前記検出手段により検出されたアクセス頻度が所定頻度より混んでいない場合、前記遅延手段の前記第１、第２時間は短くされる請求項１記載の半導体記憶装置。
【請求項４】
前記第１時間と前記第２時間とは異なる時間である請求項２記載の半導体記憶装置。
【請求項５】
前記第１時間と前記第２時間とは同じ時間であるである請求項２記載の半導体記憶装置。
【請求項６】
前記不揮発性メモリは複数のフラッシュメモリを具備し、
前記コントローラは前記複数のフラッシュメモリに並列にアクセス可能な複数のインターフェースを具備する請求項１記載の半導体記憶装置。
【請求項７】
不揮発性メモリと、前記不揮発性メモリのコンパクション候補を決定するための候補情報を格納するメインメモリを具備する半導体記憶装置の制御方法であって、
前記候補情報を検索するための前記メインメモリの第１アクセス要求を発行することと、
発行された前記第１アクセス要求を前記メインメモリのアクセス頻度に応じて第１時間遅延することと、
アクセス要求のアービトレーションを行うことと、
前記アービトレーションにより前記第１アクセス要求に権利が与えられると、前記第１時間遅延された前記第１アクセス要求に基づいて前記メインメモリの候補情報をアクセスすることと、
を具備する制御方法。
【請求項８】
前記第１アクセスの終了確認を発行することと、
発行された前記終了確認を前記メインメモリのアクセス頻度に応じて第２時間遅延して前記第１アクセス要求の発行元に返送することをさらに具備する請求項７記載の制御方法。
【請求項９】
メインメモリのアクセス頻度を検出することをさらに具備し、
検出されたアクセス頻度が所定頻度より混んでいる場合、前記第１、第２時間は長くされ、検出されたアクセス頻度が所定頻度より混んでいない場合、前記第１、第２時間は短くされる請求項７記載の制御方法。
【請求項１０】
前記第１時間と、前記第２時間とは異なる時間である請求項８記載の制御方法。
【請求項１１】
前記第１時間と、前記第２時間とは同じである請求項８記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はフラッシュメモリを用いた半導体記憶装置及びその制御方法に関し、特にコンパクションサーチの制御に関する。
【背景技術】
【０００２】
一般に不揮発性メモリ、例えばフラッシュメモリはデータの書き込みの際に上書きができないので、一旦消去してからデータ書き込みを行う必要がある。このようなデータの書き込みや消去を繰り返すと、分断された不要な領域が消去されずに残る。この不要な領域を消去し、使用している領域を連続した領域に纏める処理はコンパクション、あるいはガーベジコレクションと呼ばれる。従来の半導体記憶装置のガーベジコレクション処理は例えば、特許文献１に記載されている。
【０００３】
メモリ部のアドレス（Ａ，ａ）にホストからのライト要求に基づき、データＤが書き込まれる。その後、再度ホストからアドレス（Ａ，ａ）のフレームにライト要求があり、データが書き込まれていないフレーム、例えばアドレス（Ｂ，ｍ）のデータ部にデータの新しいバージョンであるＤ−１が書き込まれる。アドレス（Ａ，ａ）のポインタ部には、リンク先のアドレスとして“Ｂ，ｍ”が書き込まれる。その後、さらにホストからアドレス（Ａ，ａ）にライト要求があると、上記と同様にデータが書き込まれていないフレーム、例えばアドレス（Ｃ，ｎ）のデータ部にデータＤ−２が書き込まれる。アドレス（Ｂ，ｍ）のポインタ部には、リンク先のアドレスとして“Ｃ，ｎ”が書き込まれる。
【０００４】
このような状態でガーベジコレクションを行う場合、アドレス（Ｂ，ｍ）のフレームは単にリンク関係を示しているだけであって、データとしては意味を持たないものである。従って、ガーベジコレクションはこの“Ｂ，ｍ”のフレームを消去する。
【０００５】
この処理としては、先ずアドレス（Ａ，ａ）のフレームデータをバッファ部に退避させ、バッファ上でそのポインタをＣ，ｎに書き換える。とともに、アドレス（Ｂ，ｍ）、（Ａ，ａ）のデータを消去する。その後、ポインタを書き換えたアドレス（Ａ，ａ）のデータをメモリ部の同じアドレスに書き込む。これによって、アドレス（Ａ，ａ）のリンク先は直接（Ｃ，ｎ）となり、アドレス（Ｂ，ｍ）のフレームはデータが書き込み可能なフレームとなる。
【０００６】
しかし、このようにポインタ部に従って書き換え制御をすると、ホストからのライト要求に対してそのリンク先をたどっていく必要があり、時間がかかる問題があり、特許文献１では、指示アドレス部、バリッドビット部、論理アドレス部からなるテーブル部を設けている。指示アドレス部はホストから不揮発性メモリに対してデータをアクセスする際に、ホストから指示されるアドレスを示す部分である。バリッドビット部は該当するメモリ部のメモリブロックにデータが格納されているか否かを示す部分である。論理アドレス部はホストから指示されたアドレスを論理的に変換し、メモリ部のメモリブロックのアドレスを決定する部分である。
【０００７】
ガーベジコレクション制御手段は予め設定した閾値を有し、ホストからライト要求があった場合、上記テーブル部を参照してデータ書き込み済みブロック数とライト要求を実行するためのメモリブロック数の加算値が閾値を超えているか否かを判定し、加算値が閾値を超えている場合はメモリ部のガーベジコレクションを実行する。閾値はメモリ部の代替領域の９０％を示す値等、適宜の値が設定される。このように閾値を基にガーベジコレクションを行うので、ホストからのライト要求を実行している最中にガーベジコレクション処理を実行しなければならないといったことを防止することができる。
【０００８】
さらに、特許文献１では、ガーベジコレクション制御手段はタイマ機能を備えている。メモリ部１６におけるメモリブロックの使用状況をテーブル部１９を参照して監視し、当該メモリブロックの状況が閾値を超えていない場合はメモリブロックに書き込みを行うと共に、タイマをセットし、メモリブロックの状況が閾値を超えている場合はメモリ部のガーベジコレクションを行うとともに、タイマをリセットする。そして、タイマがセット状態でかつ、その所定時間経過後はガーベジコレクションを実行するといった機能を有する。このようにガーベジコレクションを定期的に行うことによっても、ホストからのライト要求を実行している最中にガーベジコレクション処理を実行しなければならないといったことを防止することができる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平６−２２２９８５号公報（段落００１１−００１５、００２８、００３９、００５０）
【発明の概要】
【発明が解決しようとする課題】
【００１０】
特許文献１記載の装置はガーベジコレクションを定期的に実施している。ガーベジコレクションを実施するためには、ガーベジコレクション制御手段がテーブル部を参照してデータが書き込まれていないフレームのアドレスを探す必要があり、ガーベジコレクション処理の全体に対するこのサーチ処理の時間の占める割合が大きいことが問題であった。
【００１１】
本発明はコンパクション候補の検索を効率良く行うことができる半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の一態様による半導体記憶装置は、不揮発性メモリと、前記不揮発性メモリに接続されるコントローラと、を具備する半導体記憶装置であって、前記コントローラは、前記不揮発性メモリのコンパクション候補を決定するための候補情報を格納するメインメモリと、前記メインメモリの候補情報のアクセス要求を発行する要求発行手段と、前記要求発行手段により発行されたアクセス要求を所定時間遅延する遅延手段と、前記遅延手段により遅延されたアクセス要求に基づいて前記メインメモリの候補情報をアクセスするアクセス手段を具備する。
【発明の効果】
【００１３】
本発明の一態様によれば、メインメモリのコンパクション候補情報のアクセス要求が遅延されて実行されるので、コンパクション候補情報のためのメインメモリのアクセスが単位時間内に集中することが防止され、ユーザデータ転送に係るメインメモリの本来のアクセスがコンパクション対象候補情報のためのアクセスにより妨害されず、半導体記憶装置の性能劣化を防止できる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態に係る半導体記憶装置の図である。
【図２】コンパクションサーチのための有効ページ管理ビットマップテーブルを示す図である。
【図３】本発明の実施の形態に係るコンパクションサーチを示すフローチャートである。
【図４】アクセス要求とその確認を遅延する遅延回路の様子を示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施の形態について詳細に説明する。
【００１６】
図１は第１実施形態の半導体記憶装置の全体構成を示す図である。実施形態は複数の半導体不揮発性メモリ、例えばＮＡＮＤ型フラッシュメモリ１００、１０１…１０ｎとフラッシュメモリコントローラ１２を具備する。各フラッシュメモリ１００、１０１…１０ｎは例えば２〜１６個のメモリチップからなる。フラッシュメモリコントローラ１２はフラッシュメモリ１００、１０１…１０ｎに接続されるフラッシュメモリＩ／Ｆ３０を具備する。フラッシュメモリ１００、１０１…１０ｎが並列にアクセス可能な場合は、図示していないがフラッシュメモリＩ／Ｆ３０もｎ個設けられ、それぞれがフラッシュメモリ１００、１０１…１０ｎに接続される。フラッシュメモリＩ／Ｆ３０はプログラム、リード、イレース等の動作モードに関してフラッシュメモリ１００、１０１…１０ｎを個別に制御する。
【００１７】
フラッシュメモリコントローラ１２はＣＰＵ２２と、メインメモリ２４と、コマンドプロセッサ４０と、データプロセッサ４２と、調停回路２８と、コンパクションサーチエンジン３６とを具備する。これらの構成要素はＣＰＵバス２０に接続される。メインメモリ２４はＤＲＡＭからなり、フラッシュメモリ１００、１０１…１０ｎのコンパクション処理のためのブロック内有効ページ管理ビットマップテーブル２６とコンパクション候補管理テーブル２５とを含む。
【００１８】
フラッシュメモリコントローラ１２のＣＰＵバス２０には外付けのＲＯＭ１４も接続される。ＲＯＭ１４はファームウェア１６を含む。ファームウェア１６はＣＰＵ２２を使用し、フラッシュメモリＩ／Ｆ３０内部へのＩ／Ｏコマンドアクセスによりフラッシュメモリ１０１、１０２、…１０ｎへのリードコマンド、ライトコマンドの発行を行う。
【００１９】
フラッシュメモリＩ／Ｆ３０はＣＰＵ２２からの命令を受理し、ＮＡＮＤ型フラッシュメモリ１０１、１０２、…１０ｎとメインメモリ２４間のデータ転送を実施する。
【００２０】
ファームウェア１６はＲＯＭ１４にプログラムされた内容が、システム電源起動時に、ＣＰＵ２２内部の一時記憶部もしくはメインメモリ２４に転送されて動作するものとする。
【００２１】
ブロック内有効ページ管理ビットマップテーブル２６は、図２に示すように構成されている。ＮＡＮＤ型フラッシュメモリ１０１、１０２、…１０ｎの各ページが有効（Valid）か無効（Invalid）かを示すためのビットマップ構成をとる。ＮＡＮＤ型フラッシュメモリ１０１、１０２、…１０ｎの全体を所定のバイト、例えば２１１２バイトに分け、それ毎に１ページを構成し、所定のページ、例えば６４ページが１ブロックを構成する。有効とは、当該ページ内に書き込まれたデータが存在し、そのデータは有効であることを示している。無効とは、当該ページ内に何も書き込まれていないか、もしくは当該ページ内に以前書き込まれていたデータが無効になった場合（データが上書きされた場合）を示している。
【００２２】
ブロック内有効ページ管理ビットマップテーブル２６はＮＡＮＤ型フラッシュメモリ１０１、１０２、…１０ｎへの書き込みが発生すると、有効／無効状態が更新される。ここで、ファームウェア１６からの書き込み操作は論理ブロックアドレス（ＬＢＡ: Logical Block Address）を用いて実施される。従って、ＮＡＮＤ型フラッシュメモリ１０１、１０２、…１０ｎに対して実際に書き込む場合は、論理アドレスを物理アドレス（ブロックアドレス、ページアドレス）に変換して、データが書き込まれる。
【００２３】
ＮＡＮＤ型フラッシュメモリ１０１、１０２、…１０ｎは同一セルへの書き込みを実施することによる寿命の極端な低下を防ぐため、同じＬＢＡでデータを複数回書き込む場合でも、以前書き込んだ物理アドレスとは異なる物理アドレスのページにデータを新規に書き込み、以前書き込んだ物理アドレスのページに格納されているデータを無効とするコンパクション処理を行う。この有効／無効管理を実施するためにブロック内有効ページ管理ビットマップテーブル２６が存在している。
【００２４】
従って、このような書き込み操作を実施しながらシステムが動作しているうちに、いずれは有効ページ数の少ないブロック（すなわち、コンパクション処理の候補対象となるブロック）が発生してくるのは必須である。
【００２５】
ファームウェア１６はブロック内有効ページ数を一意にカウントし、有効数がある一定数以下であれば、そのブロックをコンパクション対象の一つとしてコンパクション候補管理テーブル２５にエントリし、その中のいずれかのブロックをコンパクション処理に適用する。コンパクション処理とは、コンパクション対象の複数のブロック内の有効ページデータをかき集めて、別のブロックに移動させ、移動元のページを無効化し、何も書かれていない空きブロックを作り出す操作のことである。
【００２６】
ブロック内有効ページ管理ビットマップテーブル２６が示すブロック内有効ページ数のカウント用の専用のハードウェアとしてコンパクションサーチエンジン３６が設けられている。ファームウェア１６は定期的、もしくは一意に該エンジン３６を動作させてメインメモリ２４内のブロック内有効ページ管理ビットマップテーブル２６にアクセスしてブロック内有効ページ数をカウントして、コンパクション対象を検索特定し、コンパクション候補管理テーブル２５に追加する。そのため、検索動作中はメインメモリ２４へのアクセスが一時的に集中することがあり、ＮＡＮＤ型フラッシュメモリ１０１、１０２、…１０ｎあるいはＣＰＵ２２とのデータ転送に必要なメモリアクセスを阻害し、ユーザに対するデータ提供速度性能を劣化させることがあった。
【００２７】
本実施形態ではコンパクションサーチエンジン３６がブロック内有効ページ管理ビットマップテーブル２６を検索するために発行するメインメモリ２４へのアクセス要求ＲＥＱ１を遅延回路３２を介して遅延し要求ＲＥＱＣとしてから調停回路２８に供給している。調停回路２８には、要求ＲＥＱＣに加えて、フラッシュメモリＩ／Ｆ３０から発行されたメインメモリ２４へのアクセス要求ＲＥＱＡと、ＣＰＵ２２から発行されたメインメモリ２４へのアクセス要求ＲＥＱＢが入力され、これらの３つの要求間でバスの使用権を与える要求を決める調停（アービトレーション）が行われる。調停の結果、バスの使用権が与えられたアクセス要求が順番に実施される。バス使用権が与えられメインメモリ２４へのアクセスが終了すると、確認ＡＣＫＣ、ＡＣＫＡ、ＡＣＫＢが遅延回路３２、フラッシュメモリＩ／Ｆ３０、ＣＰＵ２２に返送される。
【００２８】
遅延回路３２は要求ＰＲＱ１と同様に確認ＡＣＫＣも遅延（遅延時間は要求に対する遅延時間と同じでもよいし、異なっていてもよい）して確認ＡＫＣ１としてコンパクションサーチエンジン３６に送信する。遅延回路３２の遅延時間はＣＰＵ２２により調整値が設定される遅延時間調整回路３４により調整される。ＣＰＵ２２はファームウェア１６が管理するコマンドによりメインメモリ２４のアクセス頻度を検出することができるようになっている。このため、遅延時間はメインメモリ２４のアクセス頻度に応じて調整される。あるいは、ファームウェア１６が管理するコマンドを利用しないで、図示しないハードウェアによりバスライン２０を直接モニタすることにより、メインメモリのアクセス頻度を検出してもよい。
【００２９】
フラッシュメモリコントローラ１２はコマンドプロセッサ４０とデータプロセッサ４２も含む。コマンドプロセッサ４０はＣＰＵ２２からのリードコマンド、ライトコマンドをＮＡＮＤ型フラッシュメモリ１０１、１０２、…１０ｎに与える。データプロセッサ４２はＮＡＮＤ型フラッシュメモリ１０１、１０２、…１０ｎのリードデータやライトデータを処理する。
【００３０】
図３はコンパクションサーチの処理を示すフローチャートである。ブロック＃１２でＣＰＵ２２はコンパクションサーチを行うためのコンパクションサーチエンジン３６を起動する。起動時には、コンパクションサーチエンジン３６に検索開始アドレスと検索データサイズを与える。コンパクションサーチエンジン３６はこれらで指定されたメインメモリ２４の領域のデータをリードする。すなわち、ここでは検索開始アドレスの初期値はメインメモリ２４の有効ページ管理ビットマップテーブル２６の最初のアドレスであり、検索データサイズは有効ページ管理ビットマップテーブル２６のサイズである。ＣＰＵ２２はユーザデータの転送とＮＡＮＤフラッシュに関わるデータの転送が実施中でも、コンパクションサーチを開始できる。
【００３１】
ブロック＃１４でＣＰＵ２２はファームウェア１６が管理するコマンドによりメインメモリ２４のアクセス頻度を検出し、アクセス頻度情報を遅延時間調整回路３４に設定する。アクセス頻度が基準の頻度より混雑しているか否かブロック＃１６で判定する。基準の頻度よりアクセスが混雑している場合は、ブロック＃１８で遅延時間を長くし、逆に基準の頻度よりアクセスが空いている場合は、ブロック＃２０で遅延時間を短くする。このため、アクセスが混雑している場合は遅延回路３２の遅延時間は長くなり、アクセスが空いている場合は遅延時間は短くなる。遅延時間は要求ＲＥＱ１に対する遅延時間と、確認ＡＣＫＣに対する遅延時間が異なっても良いし、同じでも良い。
【００３２】
ブロック＃２２でコンパクションサーチエンジン３６はメインメモリ２４へのアクセス要求ＲＥＱ１をアサートする。アクセス要求ＲＥＱ１がアサートされてから遅延時間Ｔ０後にブロック＃２４で調停回路２８へのアクセス要求ＲＥＱＣがアサートされる。このため、遅延時間Ｔ０が長くなれば、コンパクションサーチエンジン３６からのメインメモリ２４へのアクセス要求ＲＥＱ１の実行頻度が低下する。
【００３３】
調停回路２８はブロック＃２６でフラッシュメモリＩ／Ｆ３０から発行されたメインメモリ２４へのアクセス要求ＲＥＱＡと、ＣＰＵ２２から発行されたメインメモリ２４へのアクセス要求ＲＥＱＢと、遅延回路３２から発行されたアクセス要求ＲＥＱＣ（コンパクションサーチエンジン３６から発行されたアクセス要求ＲＥＱ１が時間Ｔ０だけ遅延された要求）との間で一般的なアービトレーション（バス使用権の調停）を行う。アクセス要求ＲＥＱＣがバス使用権を持つと、ブロック＃２８で有効ページ管理ビットマップテーブル２６のデータがアクセスされ、コンパクション候補を決定するための候補情報（ブロック内有効ページ数が一定数以下であるブロックを見つけるための各ページの有効／無効の情報）が読み出される。なお、ブロック＃２８での１回のアクセスによるデータのサイズは例えば１６バイトであり、１回のコンパクションサーチでは有効ページ管理ビットマップテーブル２６のデータを１６バイトずつアクセスする。
【００３４】
有効ページ管理ビットマップテーブル２６のデータ（コンパクション候補情報）の読み出しが終了すると、ブロック＃３０で調停回路２８は確認ＡＣＫＣをアサートする。遅延回路３２は確認ＡＣＫＣがアサートされてから遅延時間Ｔ１後にブロック＃３２でコンパクションサーチエンジン３６への確認ＡＣＫ１をアサートする。読み出されたコンパクション候補情報は確認ＡＣＫ１とともにコンパクションサーチエンジン３６に送られる。コンパクション候補情報はコンパクションサーチエンジン３６によりコンパクション候補管理テーブル２５にエントリされる。
【００３５】
ブロック＃３４で検索データサイズ分のサーチが行われたか否か判定され、否の場合は、ブロック＃１４に戻り、有効ページ管理ビットマップテーブル２６の次の１６バイトのサーチが行われ、起動時に指定された検索データサイズ分のサーチが行われるまで上記の処理が繰り返される。これにより、コンパクション候補情報（例えば、ブロック内有効ページ数がある一定数以下のブロック）がコンパクション候補管理テーブル２５に格納される。
【００３６】
コンパクション処理そのもの、すなわちコンパクション候補管理テーブル２５からコンパクション候補情報を読み出して、コンパクション候補ブロック内の有効ページデータをかき集めて、別のブロックに移動させ、移動元のページを無効化し、コンパクション候補ブロックを空きブロックとする処理は、サーチ後に適宜な別のタイミングで行うことが出来る。サーチを事前に行っておくことにより、コンパクション処理を効率よく実施することが出来る。
【００３７】
図４は遅延回路３２の遅延動作を説明する図である。遅延回路３２はコンパクションサーチエンジン３６からコンパクションサーチのためのアクセス要求ＲＥＱ１がアサートされても、すぐには要求ＲＥＱＣをアサートせずに、所定の遅延時間Ｔ０だけ遅延して要求ＲＥＱＣをアサートする。同様に、調停回路２８でアサートされた確認ＡＣＫＣも所定の遅延時間Ｔ１だけ遅延されて、確認ＡＣＫ１としてコンパクションサーチエンジン３６に戻される。コンパクションサーチエンジン３６はアクセス要求ＲＥＱ１を発行した後、その確認ＡＣＫ１を受信しないと、次のコンパクションサーチのためのアクセス要求ＲＥＱ１を発行できない。
【００３８】
このため、コンパクションサーチのためのアクセス要求ＲＥＱ１の発行頻度は遅延時間Ｔ０，Ｔ１に応じて決まってしまう。本実施形態によれば、遅延時間Ｔ０，Ｔ１はメインメモリのアクセス頻度に応じているので、結局、コンパクションサーチのためのアクセス要求ＲＥＱ１の発行頻度はメインメモリのアクセス頻度に応じて制御される。従って、コンパクションサーチの実行がある時間内に集中して、ＣＰＵあるいはフラッシュメモリによるメインメモリのアクセスがコンパクションサーチにより妨害されることが無い。さらに、コンパクションサーチの実行頻度はメインメモリのアクセス頻度に応じて調整されているので、メインメモリのアクセスの空いている期間にコンパクションサーチを実施することができ、メインメモリのアクセス性能を低下することなく、コンパクション処理を効率よく実施することが出来る。
【００３９】
なお、この発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。例えば、メインメモリ２４に格納されコンパクション候補を決定するための候補情報としては有効ページ管理ビットマップテーブル２６のデータの例を説明したが、これに限らず、各ブロック毎の有効ページ数を示す情報そのものを用いても良い。また、遅延回路３２はコンパクションサーチエンジン３６からコンパクションサーチのためのアクセス要求ＲＥＱ１とともに調停回路２８でアサートされた確認ＡＣＫＣも遅延させているが、アクセス要求ＲＥＱ１のみを遅延してもコンパクションサーチのためのアクセス要求ＲＥＱ１の発行の集中を防ぐことが出来るので、確認ＡＣＫＣは遅延しないでそのままコンパクションサーチエンジン３６に渡してもよい。さらに、遅延時間はメインメモリのアクセス頻度に応じてアクセス要求ＲＥＱ１の発行毎に可変しているが、必ずしも発行毎に可変する必要は無く、一定時間毎に可変としてもよい。
【符号の説明】
【００４０】
１２…フラッシュメモリコントローラ、２０…ＣＰＵバス、２２…ＣＰＵ、２４…メインメモリ、２５…コンパクション候補管理テーブル、２６…ブロック内有効ページ管理ビットマップテーブル、２８…調停回路、３０…フラッシュメモリＩ／Ｆ、３２…遅延回路、３４…遅延時間調整回路、３６…コンパクションサーチエンジン。
【図１】
2011227930.tif 000003
【図２】
2011227930.tif 000004
【図３】
2011227930.tif 000005
【図４】
2011227930.tif 000006