"不揮発性メモリと、前記不揮発性メモリに接続されるコントローラと、を具備する半導体記憶装置であって、前記コントローラは、前記不揮発性メモリのコンパクション候補を決定するための候補情報を格納するメインメモリと、前記候補情報を検索するための前記メインメモリの第1アクセス要求を発行する要求発行手段と、前記要求発行手段により発行された前記第1アクセス要求を前記メインメモリのアクセス頻度に応じて第1時間遅延する遅延手段と、アクセス要求のアービトレーションを行う調停回路と、前記調停回路により前記第1アクセス要求に権利が与えられると、前記遅延手段により前記第1時間遅延された前記第1アクセス要求に基づいて前記メインメモリの候補情報をアクセスするアクセス手段と、を具備する半導体記憶装置。前記コントローラは前記アクセス手段によるアクセスの終了確認を発行する確認発行手段をさらに具備し、前記確認発行手段により発行された終了確認は前記遅延手段を介して前記メインメモリのアクセス頻度に応じて第2時間遅延され前記要求発行手段に返送される請求項1記載の半導体記憶装置。前記コントローラはメインメモリのアクセス頻度を検出する検出手段をさらに具備し、前記検出手段により検出されたアクセス頻度が所定頻度より混んでいる場合、前記遅延手段の前記第1、第2時間は長くされ、前記検出手段により検出されたアクセス頻度が所定頻度より混んでいない場合、前記遅延手段の前記第1、第2時間は短くされる請求項1記載の半導体記憶装置。前記第1時間と前記第2時間とは異なる時間である請求項2記載の半導体記憶装置。前記第1時間と前記第2時間とは同じ時間であるである請求項2記載の半導体記憶装置。前記不揮発性メモリは複数のフラッシュメモリを具備し、前記コントローラは前記複数のフラッシュメモリに並列にアクセス可能な複数のインターフェースを具備する請求項1記載の半導体記憶装置。不揮発性メモリと、前記不揮発性メモリのコンパクション候補を決定するための候補情報を格納するメインメモリを具備する半導体記憶装置の制御方法であって、前記候補情報を検索するための前記メインメモリの第1アクセス要求を発行することと、発行された前記第1アクセス要求を前記メインメモリのアクセス頻度に応じて第1時間遅延することと、アクセス要求のアービトレーションを行うことと、前記アービトレーションにより前記第1アクセス要求に権利が与えられると、前記第1時間遅延された前記第1アクセス要求に基づいて前記メインメモリの候補情報をアクセスすることと、を具備する制御方法。前記第1アクセスの終了確認を発行することと、発行された前記終了確認を前記メインメモリのアクセス頻度に応じて第2時間遅延して前記第1アクセス要求の発行元に返送することをさらに具備する請求項7記載の制御方法。メインメモリのアクセス頻度を検出することをさらに具備し、検出されたアクセス頻度が所定頻度より混んでいる場合、前記第1、第2時間は長くされ、検出されたアクセス頻度が所定頻度より混んでいない場合、前記第1、第2時間は短くされる請求項7記載の制御方法。前記第1時間と、前記第2時間とは異なる時間である請求項8記載の制御方法。前記第1時間と、前記第2時間とは同じである請求項8記載の制御方法。特許文献1記載の装置はガーベジコレクションを定期的に実施している。ガーベジコレクションを実施するためには、ガーベジコレクション制御手段がテーブル部を参照してデータが書き込まれていないフレームのアドレスを探す必要があり、ガーベジコレクション処理の全体に対するこのサーチ処理の時間の占める割合が大きいことが問題であった。本発明はコンパクション候補の検索を効率良く行うことができる半導体記憶装置を提供することを目的とする。本発明の一態様による半導体記憶装置は、不揮発性メモリと、前記不揮発性メモリに接続されるコントローラと、を具備する半導体記憶装置であって、前記コントローラは、前記不揮発性メモリのコンパクション候補を決定するための候補情報を格納するメインメモリと、前記メインメモリの候補情報のアクセス要求を発行する要求発行手段と、前記要求発行手段により発行されたアクセス要求を所定時間遅延する遅延手段と、前記遅延手段により遅延されたアクセス要求に基づいて前記メインメモリの候補情報をアクセスするアクセス手段を具備する。本発明の一態様によれば、メインメモリのコンパクション候補情報のアクセス要求が遅延されて実行されるので、コンパクション候補情報のためのメインメモリのアクセスが単位時間内に集中することが防止され、ユーザデータ転送に係るメインメモリの本来のアクセスがコンパクション対象候補情報のためのアクセスにより妨害されず、半導体記憶装置の性能劣化を防止できる。以下、図面を参照して本発明の実施の形態について詳細に説明する。図1は第1実施形態の半導体記憶装置の全体構成を示す図である。実施形態は複数の半導体不揮発性メモリ、例えばNAND型フラッシュメモリ100、101...10nとフラッシュメモリコントローラ12を具備する。各フラッシュメモリ100、101...10nは例えば2~16個のメモリチップからなる。フラッシュメモリコントローラ12はフラッシュメモリ100、101...10nに接続されるフラッシュメモリI/F30を具備する。フラッシュメモリ100、101...10nが並列にアクセス可能な場合は、図示していないがフラッシュメモリI/F30もn個設けられ、それぞれがフラッシュメモリ100、101...10nに接続される。フラッシュメモリI/F30はプログラム、リード、イレース等の動作モードに関してフラッシュメモリ100、101...10nを個別に制御する。フラッシュメモリコントローラ12はCPU22と、メインメモリ24と、コマンドプロセッサ40と、データプロセッサ42と、調停回路28と、コンパクションサーチエンジン36とを具備する。これらの構成要素はCPUバス20に接続される。メインメモリ24はDRAMからなり、フラッシュメモリ100、101...10nのコンパクション処理のためのブロック内有効ページ管理ビットマップテーブル26とコンパクション候補管理テーブル25とを含む。フラッシュメモリコントローラ12のCPUバス20には外付けのROM14も接続される。ROM14はファームウェア16を含む。ファームウェア16はCPU22を使用し、フラッシュメモリI/F30内部へのI/Oコマンドアクセスによりフラッシュメモリ101、102、...10nへのリードコマンド、ライトコマンドの発行を行う。フラッシュメモリI/F30はCPU22からの命令を受理し、NAND型フラッシュメモリ101、102、...10nとメインメモリ24間のデータ転送を実施する。ファームウェア16はROM14にプログラムされた内容が、システム電源起動時に、CPU22内部の一時記憶部もしくはメインメモリ24に転送されて動作するものとする。ブロック内有効ページ管理ビットマップテーブル26は、図2に示すように構成されている。NAND型フラッシュメモリ101、102、...10nの各ページが有効Validか無効Invalidかを示すためのビットマップ構成をとる。NAND型フラッシュメモリ101、102、...10nの全体を所定のバイト、例えば2112バイトに分け、それ毎に1ページを構成し、所定のページ、例えば64ページが1ブロックを構成する。有効とは、当該ページ内に書き込まれたデータが存在し、そのデータは有効であることを示している。無効とは、当該ページ内に何も書き込まれていないか、もしくは当該ページ内に以前書き込まれていたデータが無効になった場合データが上書きされた場合を示している。ブロック内有効ページ管理ビットマップテーブル26はNAND型フラッシュメモリ101、102、...10nへの書き込みが発生すると、有効/無効状態が更新される。ここで、ファームウェア16からの書き込み操作は論理ブロックアドレスLBALogicalBlockAddressを用いて実施される。従って、NAND型フラッシュメモリ101、102、...10nに対して実際に書き込む場合は、論理アドレスを物理アドレスブロックアドレス、ページアドレスに変換して、データが書き込まれる。NAND型フラッシュメモリ101、102、...10nは同一セルへの書き込みを実施することによる寿命の極端な低下を防ぐため、同じLBAでデータを複数回書き込む場合でも、以前書き込んだ物理アドレスとは異なる物理アドレスのページにデータを新規に書き込み、以前書き込んだ物理アドレスのページに格納されているデータを無効とするコンパクション処理を行う。この有効/無効管理を実施するためにブロック内有効ページ管理ビットマップテーブル26が存在している。従って、このような書き込み操作を実施しながらシステムが動作しているうちに、いずれは有効ページ数の少ないブロックすなわち、コンパクション処理の候補対象となるブロックが発生してくるのは必須である。ファームウェア16はブロック内有効ページ数を一意にカウントし、有効数がある一定数以下であれば、そのブロックをコンパクション対象の一つとしてコンパクション候補管理テーブル25にエントリし、その中のいずれかのブロックをコンパクション処理に適用する。コンパクション処理とは、コンパクション対象の複数のブロック内の有効ページデータをかき集めて、別のブロックに移動させ、移動元のページを無効化し、何も書かれていない空きブロックを作り出す操作のことである。ブロック内有効ページ管理ビットマップテーブル26が示すブロック内有効ページ数のカウント用の専用のハードウェアとしてコンパクションサーチエンジン36が設けられている。ファームウェア16は定期的、もしくは一意に該エンジン36を動作させてメインメモリ24内のブロック内有効ページ管理ビットマップテーブル26にアクセスしてブロック内有効ページ数をカウントして、コンパクション対象を検索特定し、コンパクション候補管理テーブル25に追加する。そのため、検索動作中はメインメモリ24へのアクセスが一時的に集中することがあり、NAND型フラッシュメモリ101、102、...10nあるいはCPU22とのデータ転送に必要なメモリアクセスを阻害し、ユーザに対するデータ提供速度性能を劣化させることがあった。本実施形態ではコンパクションサーチエンジン36がブロック内有効ページ管理ビットマップテーブル26を検索するために発行するメインメモリ24へのアクセス要求REQ1を遅延回路32を介して遅延し要求REQCとしてから調停回路28に供給している。調停回路28には、要求REQCに加えて、フラッシュメモリI/F30から発行されたメインメモリ24へのアクセス要求REQAと、CPU22から発行されたメインメモリ24へのアクセス要求REQBが入力され、これらの3つの要求間でバスの使用権を与える要求を決める調停アービトレーションが行われる。調停の結果、バスの使用権が与えられたアクセス要求が順番に実施される。バス使用権が与えられメインメモリ24へのアクセスが終了すると、確認ACKC、ACKA、ACKBが遅延回路32、フラッシュメモリI/F30、CPU22に返送される。遅延回路32は要求PRQ1と同様に確認ACKCも遅延遅延時間は要求に対する遅延時間と同じでもよいし、異なっていてもよいして確認AKC1としてコンパクションサーチエンジン36に送信する。遅延回路32の遅延時間はCPU22により調整値が設定される遅延時間調整回路34により調整される。CPU22はファームウェア16が管理するコマンドによりメインメモリ24のアクセス頻度を検出することができるようになっている。このため、遅延時間はメインメモリ24のアクセス頻度に応じて調整される。あるいは、ファームウェア16が管理するコマンドを利用しないで、図示しないハードウェアによりバスライン20を直接モニタすることにより、メインメモリのアクセス頻度を検出してもよい。フラッシュメモリコントローラ12はコマンドプロセッサ40とデータプロセッサ42も含む。コマンドプロセッサ40はCPU22からのリードコマンド、ライトコマンドをNAND型フラッシュメモリ101、102、...10nに与える。データプロセッサ42はNAND型フラッシュメモリ101、102、...10nのリードデータやライトデータを処理する。図3はコンパクションサーチの処理を示すフローチャートである。ブロック12でCPU22はコンパクションサーチを行うためのコンパクションサーチエンジン36を起動する。起動時には、コンパクションサーチエンジン36に検索開始アドレスと検索データサイズを与える。コンパクションサーチエンジン36はこれらで指定されたメインメモリ24の領域のデータをリードする。すなわち、ここでは検索開始アドレスの初期値はメインメモリ24の有効ページ管理ビットマップテーブル26の最初のアドレスであり、検索データサイズは有効ページ管理ビットマップテーブル26のサイズである。CPU22はユーザデータの転送とNANDフラッシュに関わるデータの転送が実施中でも、コンパクションサーチを開始できる。ブロック14でCPU22はファームウェア16が管理するコマンドによりメインメモリ24のアクセス頻度を検出し、アクセス頻度情報を遅延時間調整回路34に設定する。アクセス頻度が基準の頻度より混雑しているか否かブロック16で判定する。基準の頻度よりアクセスが混雑している場合は、ブロック18で遅延時間を長くし、逆に基準の頻度よりアクセスが空いている場合は、ブロック20で遅延時間を短くする。このため、アクセスが混雑している場合は遅延回路32の遅延時間は長くなり、アクセスが空いている場合は遅延時間は短くなる。遅延時間は要求REQ1に対する遅延時間と、確認ACKCに対する遅延時間が異なっても良いし、同じでも良い。ブロック22でコンパクションサーチエンジン36はメインメモリ24へのアクセス要求REQ1をアサートする。アクセス要求REQ1がアサートされてから遅延時間T0後にブロック24で調停回路28へのアクセス要求REQCがアサートされる。このため、遅延時間T0が長くなれば、コンパクションサーチエンジン36からのメインメモリ24へのアクセス要求REQ1の実行頻度が低下する。調停回路28はブロック26でフラッシュメモリI/F30から発行されたメインメモリ24へのアクセス要求REQAと、CPU22から発行されたメインメモリ24へのアクセス要求REQBと、遅延回路32から発行されたアクセス要求REQCコンパクションサーチエンジン36から発行されたアクセス要求REQ1が時間T0だけ遅延された要求との間で一般的なアービトレーションバス使用権の調停を行う。アクセス要求REQCがバス使用権を持つと、ブロック28で有効ページ管理ビットマップテーブル26のデータがアクセスされ、コンパクション候補を決定するための候補情報ブロック内有効ページ数が一定数以下であるブロックを見つけるための各ページの有効/無効の情報が読み出される。なお、ブロック28での1回のアクセスによるデータのサイズは例えば16バイトであり、1回のコンパクションサーチでは有効ページ管理ビットマップテーブル26のデータを16バイトずつアクセスする。有効ページ管理ビットマップテーブル26のデータコンパクション候補情報の読み出しが終了すると、ブロック30で調停回路28は確認ACKCをアサートする。遅延回路32は確認ACKCがアサートされてから遅延時間T1後にブロック32でコンパクションサーチエンジン36への確認ACK1をアサートする。読み出されたコンパクション候補情報は確認ACK1とともにコンパクションサーチエンジン36に送られる。コンパクション候補情報はコンパクションサーチエンジン36によりコンパクション候補管理テーブル25にエントリされる。ブロック34で検索データサイズ分のサーチが行われたか否か判定され、否の場合は、ブロック14に戻り、有効ページ管理ビットマップテーブル26の次の16バイトのサーチが行われ、起動時に指定された検索データサイズ分のサーチが行われるまで上記の処理が繰り返される。これにより、コンパクション候補情報例えば、ブロック内有効ページ数がある一定数以下のブロックがコンパクション候補管理テーブル25に格納される。コンパクション処理そのもの、すなわちコンパクション候補管理テーブル25からコンパクション候補情報を読み出して、コンパクション候補ブロック内の有効ページデータをかき集めて、別のブロックに移動させ、移動元のページを無効化し、コンパクション候補ブロックを空きブロックとする処理は、サーチ後に適宜な別のタイミングで行うことが出来る。サーチを事前に行っておくことにより、コンパクション処理を効率よく実施することが出来る。図4は遅延回路32の遅延動作を説明する図である。遅延回路32はコンパクションサーチエンジン36からコンパクションサーチのためのアクセス要求REQ1がアサートされても、すぐには要求REQCをアサートせずに、所定の遅延時間T0だけ遅延して要求REQCをアサートする。同様に、調停回路28でアサートされた確認ACKCも所定の遅延時間T1だけ遅延されて、確認ACK1としてコンパクションサーチエンジン36に戻される。コンパクションサーチエンジン36はアクセス要求REQ1を発行した後、その確認ACK1を受信しないと、次のコンパクションサーチのためのアクセス要求REQ1を発行できない。このため、コンパクションサーチのためのアクセス要求REQ1の発行頻度は遅延時間T0,T1に応じて決まってしまう。本実施形態によれば、遅延時間T0,T1はメインメモリのアクセス頻度に応じているので、結局、コンパクションサーチのためのアクセス要求REQ1の発行頻度はメインメモリのアクセス頻度に応じて制御される。従って、コンパクションサーチの実行がある時間内に集中して、CPUあるいはフラッシュメモリによるメインメモリのアクセスがコンパクションサーチにより妨害されることが無い。さらに、コンパクションサーチの実行頻度はメインメモリのアクセス頻度に応じて調整されているので、メインメモリのアクセスの空いている期間にコンパクションサーチを実施することができ、メインメモリのアクセス性能を低下することなく、コンパクション処理を効率よく実施することが出来る。なお、この発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。例えば、メインメモリ24に格納されコンパクション候補を決定するための候補情報としては有効ページ管理ビットマップテーブル26のデータの例を説明したが、これに限らず、各ブロック毎の有効ページ数を示す情報そのものを用いても良い。また、遅延回路32はコンパクションサーチエンジン36からコンパクションサーチのためのアクセス要求REQ1とともに調停回路28でアサートされた確認ACKCも遅延させているが、アクセス要求REQ1のみを遅延してもコンパクションサーチのためのアクセス要求REQ1の発行の集中を防ぐことが出来るので、確認ACKCは遅延しないでそのままコンパクションサーチエンジン36に渡してもよい。さらに、遅延時間はメインメモリのアクセス頻度に応じてアクセス要求REQ1の発行毎に可変しているが、必ずしも発行毎に可変する必要は無く、一定時間毎に可変としてもよい。"