(57)【特許請求の範囲】
【請求項１】
ホスト装置から書き込み要求されたデータを記憶する不揮発性メモリと、
前記不揮発性メモリにかかるリソースの使用量が所定量に達したとき前記不揮発性メモリにかかるリソースを整理してリソースを増加させるリソース管理部と、
前記ホスト装置からの書き込みデータの受信にかかる転送速度の設定値を算出する転送速度設定部と、
前記ホスト装置から書き込みデータを受信して、当該受信した書き込みデータを前記不揮発性メモリに転送する転送制御部と、
を備え、
前記転送速度設定部は、前記不揮発性メモリにかかるリソースの使用量が増加するほど低い設定値を算出し、
前記転送制御部は、前記リソース管理部がリソースを整理している間、前記ホスト装置からの書き込みデータの受信を前記転送速度設定部が算出した設定値の転送速度で実行する、
ことを特徴とするメモリシステム。
【請求項２】
前記転送速度設定部は、前記不揮発性メモリの使用リソース量とヒステリシス特性を有する予め定められたしきい値とを比較することによって転送速度の設定値を算出する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記転送制御部は、前記ホスト装置から書き込み要求を受信した際、当該書き込み要求により書き込み要求されたデータのサイズと前記転送速度の設定値とに基づいて待ち時間を算出し、当該書き込み要求されたデータのデータ転送中に前記算出した待ち時間を挿入する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項４】
前記ホスト装置から書き込み要求されたデータをキャッシュするライトキャッシュ領域をさらに備え、
前記転送制御部は、前記ホスト装置から前記ライトキャッシュ領域にキャッシュされているデータを前記不揮発性メモリに退避させるフラッシュ要求を受信したとき、前記ライトキャッシュ領域にキャッシュされている退避対象のデータを前記不揮発性メモリに退避させるとともに、当該退避対象のサイズと前記転送速度の設定値とに基づいて待ち時間を算出し、フラッシュ要求を受信してから当該算出した待ち時間が経過した後に前記受信したフラッシュ要求に対する実行完了通知を前記ホスト装置に送信し、
前記リソース管理部は、前記不揮発性メモリにかかるリソースの使用量が前記所定量に達している場合において、前記転送制御部がフラッシュ要求を受信した際、前記転送制御部が前記フラッシュ要求を受信してから前記実行完了通知を送信するまでの間における前記転送制御部が前記退避対象のデータの退避を実行していない間にリソースの整理を実行する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項５】
前記転送制御部は、前記受信したフラッシュ要求にかかる前記算出した待ち時間が最悪応答時間よりも小さいとき、当該最悪応答時間を待ち時間とする、
ことを特徴とする請求項４に記載のメモリシステム。
【請求項６】
前記転送速度設定部は、前記ホスト装置からのアクセス頻度が少ないとき、前記しきい値を小さくし、前記ホスト装置からのアクセス頻度が多いとき、前記しきい値を大きくする、
ことを特徴とする請求項２に記載のメモリシステム。
【請求項７】
前記転送速度設定部は、前記ホスト装置からのアクセス頻度が少ないとき、転送速度の設定値を小さくし、前記ホスト装置からのアクセス頻度が多いとき、前記転送速度の設定値を大きくする、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項８】
前記不揮発性メモリは、ブロック毎に前記データの消去が行われ、書き込みが前記ブロックよりも小さいページ毎に行われ、
前記リソースは、データが書き込まれていないブロックである、
ことを特徴とする請求項１〜７に記載のメモリシステム。
【請求項９】
前記転送制御部は、前記ホスト装置から指定されるアドレスと前記不揮発性メモリ上の物理アドレスとの対応関係を記述したアドレス変換テーブルを更新管理し、
前記不揮発性メモリは、前記アドレス変換テーブルのバックアップであるスナップショットおよび前記アドレス変換テーブルの差分情報であるログを記憶するシステム領域を備え、
前記リソースは、前記システム領域の使用可能サイズであって、前記リソースの整理は、前記ログを前記スナップショットに反映させて当該ログを削除することである、
ことを特徴とする請求項１〜７に記載のメモリシステム。
【請求項１０】
前記不揮発性メモリは、前記ホスト装置から指定されるアドレスと前記不揮発性メモリ上の物理アドレスとの対応関係を記述したアドレス変換テーブルを記憶するテーブル記憶領域を備え、
前記リソースは、前記テーブル記憶領域のうちの前記アドレス変換テーブルが書き込まれていない領域である、
ことを特徴とする請求項１〜７に記載のメモリシステム。
【請求項１１】
前記不揮発性メモリは、ブロック毎に前記データの消去が行われ、書き込みが前記ブロックよりも小さいページ毎に行われ、前記アドレス変換テーブルが更新される際、更新部分にかかる新しいエントリが前記テーブル記憶領域のうちの消去済みのページに追記されるとともに前記更新部分にかかる古いエントリが無効化される、
ことを特徴とする請求項１０に記載のメモリシステム。
【請求項１２】
ホスト装置から書き込み要求されたデータを記憶する不揮発性メモリと、
前記ホスト装置から書き込み要求されたデータをキャッシュするライトキャッシュ領域を備える揮発性メモリと、
前記揮発性メモリにかかるリソースの使用量が所定量に達したとき前記不揮発性メモリにかかるリソースを整理してリソースを増加させるリソース管理部と、
前記ホスト装置からの書き込みデータの受信にかかる転送速度の設定値を算出する転送速度設定部と、
前記ホスト装置から書き込みデータを受信して、当該受信した書き込みデータを前記不揮発性メモリに転送する転送制御部と、
を備え、
前記転送速度設定部は、前記揮発性メモリにかかるリソースの使用量が増加するほど低い設定値を算出し、
前記転送制御部は、前記リソース管理部がリソースを整理している間、前記ホスト装置からの書き込みデータの受信を前記転送速度設定部が算出した設定値の転送速度で実行する、
ことを特徴とするメモリシステム。
【請求項１３】
前記転送速度設定部は、前記揮発性メモリの使用リソース量とヒステリシス特性を有する予め定められたしきい値とを比較することによって転送速度の設定値を算出する、
ことを特徴とする請求項１２に記載のメモリシステム。
【請求項１４】
前記転送制御部は、前記ホスト装置から書き込み要求を受信した際、当該書き込み要求により書き込み要求されたデータのサイズと前記転送速度の設定値とに基づいて待ち時間を算出し、当該書き込み要求されたデータのデータ転送中に前記算出した待ち時間を挿入する、
ことを特徴とする請求項１２に記載のメモリシステム。
【請求項１５】
前記転送速度設定部は、前記ホスト装置からのアクセス頻度が少ないとき、前記しきい値を小さくし、前記ホスト装置からのアクセス頻度が多いとき、前記しきい値を大きくする、
ことを特徴とする請求項１３に記載のメモリシステム。
【請求項１６】
前記転送速度設定部は、前記ホスト装置からのアクセス頻度が少ないとき、転送速度の設定値を小さくし、前記ホスト装置からのアクセス頻度が多いとき、前記転送速度の設定値を大きくする、
ことを特徴とする請求項１２に記載のメモリシステム。
【請求項１７】
前記リソースは、前記ライトキャッシュ領域であって、
前記リソースの整理は、前記ライトキャッシュ領域に格納されているデータを前記不揮発性メモリに退避させることである、
ことを特徴とする請求項１２〜１６に記載のメモリシステム。
【請求項１８】
前記不揮発性メモリは、前記ホスト装置から書き込み要求されたデータを第１の単位サイズ毎に記憶する第１領域と、前記データを前記第１の単位サイズよりも大きい第２の単位サイズ毎に記憶する第２領域とを備え、
前記揮発性メモリは、前記ホスト装置から指定されるアドレスと前記不揮発性メモリ上の物理アドレスとの対応関係を前記第１領域に格納されている前記第１の単位サイズのデータ毎に記述した第１アドレス変換テーブルおよび前記第２領域に格納されている前記第２の単位サイズのデータ毎に記述した第２アドレス変換テーブルを夫々記憶する記憶領域を備え、
前記リソースは、前記第１アドレス変換テーブルを記憶する記憶領域であって、
前記リソースの整理は、前記第１領域および前記第２領域に格納されているデータを整理することによって、前記第１領域の空き領域を増加させるとともに前記第１アドレス変換テーブルのサイズを縮小することである、
ことを特徴とする請求項１２〜１６に記載のメモリシステム。
【請求項１９】
前記揮発性メモリは、必要でかつ未実行のシステム処理の実行内容が記録されるシステム処理記憶領域を備え、
前記リソースは、前記システム処理記憶領域であって、
前記リソースの整理は、前記システム処理記憶領域に記録されているシステム処理を実行することである、
ことを特徴とする請求項１２〜１６に記載のメモリシステム。
【請求項２０】
前記システム処理は、前記ホスト装置から読み出し要求されたデータの復元処理、前記不揮発性メモリのリフレッシュ処理、または前記不揮発性メモリのウェアレベリングのうちの少なくとも1つを含む、
ことを特徴とする請求項１９に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
従来、コンピュータシステムに用いられる外部記憶装置として、ＮＡＮＤ型の不揮発性素子からなるメモリセルアレイを搭載したＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）が注目されている。フラッシュメモリは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
【０００３】
またＳＳＤは、更新データをメモリセルアレイのブロックへページ単位で記録し、利用可能なブロックが枯渇したとき、データの整理を行って利用可能なブロックを生成するガベージコレクションと呼ばれる処理を実行する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２１１２３１号公報
【特許文献２】特開２０１０−１５７１３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、リソースの整理時における応答時間の増大を低減したメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一つの実施形態によれば、メモリシステムは、ホスト装置から書き込み要求されたデータを記憶する不揮発性メモリと、前記不揮発性メモリにかかるリソースの使用量が所定量に達したとき前記不揮発性メモリにかかるリソースを整理してリソースを増加させるリソース管理部と、前記ホスト装置から書き込みデータを受信する転送速度の設定値を算出する転送速度設定部と、前記ホスト装置から書き込みデータを受信して、当該受信した書き込みデータを前記不揮発性メモリに転送する転送制御部と、を備える。前記転送速度設定部は、前記不揮発性メモリにかかるリソースの使用量が増加するほど低い設定値を算出し、前記転送制御部は、前記リソース管理部がリソースを整理している間、前記ホスト装置からの書き込みデータの受信を前記転送速度設定部が算出した設定値の転送速度で実行する。
【図面の簡単な説明】
【０００７】
【図１】図１は、本発明の実施形態のＳＳＤの構成を示すブロック図である。
【図２】図２は、ガベージコレクションを説明するための概念図である。
【図３】図３は、本発明の実施形態における使用ブロック数と転送速度との関係を説明する図である。
【図４】図４は、ＳＳＤの転送速度の推移を説明する図である。
【図５】図５は、転送速度設定部の動作を説明するフローチャートである。
【図６】図６は、リソース管理部がガベージコレクションを実行／停止する動作を説明するフローチャートである。
【図７】図７は、転送制御部の動作を説明するフローチャートである。
【図８】図８は、コマンドの受信間隔時間に応じて転送速度およびしきい値を変化させる場合の転送速度およびしきい値を説明する図である。
【図９】図９は、転送速度設定部が各モードと転送速度との関係およびしきい値を決定する動作を説明するフローチャートである。
【図１０】図１０は、第２の実施形態のＳＳＤの構成を示すブロック図である。
【図１１】図１１は、アドレス変換テーブル６７のデータ構成例を説明する図である。
【図１２−１】図１２−１は、テーブル記憶領域におけるガベッジコレクションの概念を説明する図である。
【図１２−２】図１２−２は、テーブル記憶領域におけるガベッジコレクションの概念を説明する図である。
【図１３】図１３は、第２の実施形態におけるテーブル記憶領域の使用ブロック数と転送速度との関係を説明する図である。
【図１４】図１４は、転送速度設定部の動作を説明するフローチャートである。
【図１５】図１５は、リソース管理部がガベージコレクションを実行／停止する動作を説明するフローチャートである。
【図１６】図１６は、本発明の第３の実施形態のＳＳＤの構成を示すブロック図である。
【図１７】図１７は、ライトキャッシュ領域の使用率と転送速度との関係を説明する図である。
【図１８】図１８は、転送速度設定部の動作を説明するフローチャートである。
【図１９】図１９は、リソース管理部が書き込みデータをＮＡＮＤメモリへ退避させる動作を説明するフローチャートである。
【図２０】図２０は、転送制御部がデータ転送を行う動作を説明するフローチャートである。
【図２１】図２１は、第４の実施形態のＳＳＤの構成を示すブロック図である。
【図２２−１】図２２−１は、ＮＡＮＤ整理の処理を説明する図である。
【図２２−２】図２２−２は、ＮＡＮＤ整理の処理を説明する図である。
【図２３】図２３は、ページ管理テーブルのサイズと転送速度との関係を説明する図である。
【図２４】図２４は、転送速度設定部の動作を説明するフローチャートである。
【図２５】図２５は、リソース管理部がＮＡＮＤ整理の処理を開始／停止する動作を説明するフローチャートである。
【図２６】図２６は、第５の実施形態のＳＳＤの構成を示すブロック図である。
【図２７】図２７は、システムキュー内のデータ量と転送速度との関係を説明する図である。
【図２８】図２８は、転送速度設定部の動作を説明するフローチャートである。
【図２９】図２９は、システム管理部がシステム処理の処理を開始／停止する動作を説明するフローチャートである。
【図３０】図３０は、ホスト装置からの書き込みデータがライトキャッシュ領域３１に格納されるまでの動作を説明するシーケンス図である。
【図３１】図３１は、パーソナルコンピュータの外観を示す斜視図である。
【図３２】図３２は、パーソナルコンピュータの機能構成例を示す図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。なお、以下の実施形態では、本発明の実施形態にかかるメモリシステムをＳＳＤに適用した例について説明するが、当該メモリシステムの適用対象はＳＳＤに限定されない。
【０００９】
（第１の実施形態）
図１は、本発明の第１の実施形態のＳＳＤの構成を示すブロック図である。図示するように、ＳＳＤ１は、パーソナルコンピュータなどのホスト装置２とＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）規格などの通信インタフェースで接続され、ホスト装置２の外部記憶装置として機能する。ＳＳＤ１がホスト装置２から受信する読み出し／書き込み要求は、ホストアドレス（例えばＬＢＡ：Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ）と読み出し／書き込み要求するデータのサイズ（例えばセクタ数、１セクタは例えば５１２バイト）とが含まれている。
【００１０】
ＳＳＤ１は、制御部１０、ホストインタフェース（Ｉ／Ｆ）２０、バッファ３０、ＮＡＮＤＩ／Ｆ４０、およびＮＡＮＤメモリ５０を備えている。
【００１１】
ホストＩ／Ｆ２０は、制御部１０の制御の下、ホスト装置２との通信を制御する。制御部１０は、ホストＩ／Ｆ２０を介してホスト装置２から送信されたコマンドを解釈し、当該コマンドに応じて、ＮＡＮＤメモリ５０へのデータの書き込みやＮＡＮＤメモリ５０からのデータの読み出しを制御する。
【００１２】
ＮＡＮＤＩ／Ｆ４０は、ＮＡＮＤメモリ５０の制御を行うものであり、誤り訂正回路などを含む。
【００１３】
バッファ３０は、例えばＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などにより構成され、ホスト装置２とＮＡＮＤメモリ５０との間のデータ転送のためのバッファとして用いられる。特に、バッファ３０は、ホスト装置２からホストＩ／Ｆ２０を介して受信した書き込みデータをキャッシュするライトキャッシュ領域３１を備えている。ライトキャッシュ領域３１にキャッシュされている書き込みデータは、ホスト装置２からフラッシュコマンド、スリープコマンド、もしくはスタンバイコマンドなど、ライトキャッシュ領域３１内のデータの不揮発化を促すコマンド（以下、フラッシュコマンドと総称する）を受信したとき、またはホスト装置２からの指示とは別にライトキャッシュ領域３１がデータ溢れするなどの予め定められたタイミングで、ＮＡＮＤＩ／Ｆ４０を介してＮＡＮＤメモリ５０に退避される。
【００１４】
ＮＡＮＤメモリ５０は、ＮＡＮＤ型の不揮発性記憶素子からなるメモリセルアレイ５１を備えている。ＮＡＮＤメモリ５０は、ページと呼ばれる単位で読み書きが可能となっている。そして、複数のページがまとまってブロックと呼ばれる消去単位の記憶領域が構成される。１ページのサイズは例えば４ＫＢであり、６４ページで１ブロックを構成する。メモリセルアレイ５１はこのブロックが複数集まって構成される。
【００１５】
ここで、ＮＡＮＤメモリ５０への書き込み方式について説明する。ＮＡＮＤ型のメモリセルアレイ５１では、例えば以下に述べる方式が採用されている。まず、書き込みの前に、ブロックを消去する必要がある。すなわち、ＮＡＮＤメモリ５０においては、消去済みのブロックのうち書き込みがまだ行われていないページに対して順次書き込みが可能であり、既に書き込みが行なわれたページに対する上書きが不可能である。また、ホスト装置２からの要求に応じたデータの書き込みは、ホスト装置２で用いられる論理アドレス（ＬＢＡ）で指定される。一方、ＮＡＮＤメモリ５０へのデータ書き込みは、ＮＡＮＤメモリ５０の物理的な記憶位置（物理アドレス）により、論理アドレスとは無関係に、ページの昇順に書き込みが行なわれる。この論理アドレスと物理アドレスとの対応関係は、後述するアドレス変換テーブル１４としてＳＳＤ１内に保持される。そして、データの書き込み要求において指定された論理アドレスが再度指定されて新たなデータの書き込みがホストから要求されると、ＳＳＤ１は、消去済みのブロックのうちの書き込みがまだ行なわれていないページに対して新たなデータの書き込みを行う。このとき、当該論理アドレスに対応して前回書き込みが行われたページを無効にして、新たなデータの書き込みが行われたページを有効にする。
【００１６】
この追記方式において、書き込みを続けることにより、書き込み処理に利用可能なブロック（空きブロック）が少なくなるとともに無効にされたページが増えてくると、ＮＡＮＤメモリ５０において書き込み可能な容量が少なくなってくる。そのため、ＳＳＤ１は、適当なタイミングでガベージコレクションを行なう。図２は、ガベージコレクションを説明するための概念図である。ＳＳＤ１は、無効にされたページを含むブロックのうち、無効にされていない物理アドレスに書き込まれたデータ（有効データという）を集めて新たに空きブロックに書き直すことにより、有効データを移動させる。その後、ＳＳＤ１は、当該ブロックに対して消去を行うことにより、新たな空きブロックを生成する。ＳＳＤ１は、このようなガベージコレクションを行なうことにより、書き込みが不能になったブロックが新たに書き込み可能になって、空きブロックを確保することが可能になる。また、移動により有効データが書き込まれたブロックにおいても、書き込みがまだ行なわれていないページがあればそのページに新たに書き込みが可能である。
【００１７】
ここで、ガベージコレクションを実行するためには１回以上のコピーが発生する。また、ブロック内の有効データが配置されている状況によってはコピー回数がさらに増加し、ホスト装置２からのアクセスに局所性が存在しない場合には非常に膨大なコピー回数になってしまう。また、ブロックの使用量は、有効データが少ないブロックが多い場合には一度のガベージコレクションで多くの使用ブロック数が減り、有効データ量が多いブロックが多い場合には一度のガベージコレクションでは使用ブロック数が減らない場合が存在する。つまり、有効データの少ないブロックが多いかどうかでコピー回数が変化する。このように、有効データの少ないブロックの量が少ない場合には、ガベージコレクションによる空きブロックの生成に非常に長い時間がかってしまい、結果としてホスト装置２からのコマンドを待たせてしまう状況が発生する。
【００１８】
そこで、本発明の実施形態においては、使用ブロック（有効データが記録されているブロック）の数に応じて段階的にホスト装置２との間の転送速度を制限する。転送速度の制限は、データ転送に待ち時間を挿入することによって行われる。例えば、ホスト装置２からのデータ転送コマンドの実行時に待ち時間が挿入される。
【００１９】
図３は、本発明の実施形態における使用ブロック数と転送速度との関係を説明する図である。本図において、紙面右方向ほど使用ブロック数が多く、空きブロック数が少ない。図示するように、転送速度は、ｒｍａｘ、ｒ１、ｒ２、およびｒｍｉｎを取りうる。ｒｍａｘは全く制限されていない状態における転送速度、ｒｍｉｎは最悪応答時間に基づいて決まる転送速度であり、夫々の転送速度の間には、ｒｍａｘ＞ｒ１＞ｒ２＞ｒｍｉｎの関係がある。ｒｍａｘ、ｒ１、ｒ２、ｒｍｉｎのうちどの転送速度でデータ転送を実行するかは、使用ブロック数と所定のしきい値との比較に基づいて決定される。ｒｍａｘ、ｒ１、ｒ２、ｒｍｉｎの転送速度が定められたモードを夫々モード０、モード１、モード２、モード３ということにすると、モード０からモード１への遷移、モード１からモード２への遷移、モード２からモード３への遷移は、使用ブロック数としきい値Ｔ１、Ｔ２、Ｔｌｉｍｉｔとの比較に基づいて決められる。また、モード３からモード２への遷移、モード２からモード１への遷移、モード１からモード０への遷移は、使用ブロック数としきい値Ｔｌｉｍｉｔ、Ｔ３、Ｔ４との比較に基づいて決められる。なお、Ｔ４＜Ｔ１＜Ｔ３＜Ｔ２＜Ｔｌｉｍｉｔとする。このようにモードの遷移の判断のためのしきい値にヒステリシス特性を持たせたのは、しきい値の付近で使用ブロック数が推移することによりモードの切り替えが頻発することを防止するためである。なお、しきい値にヒステリシス特性を持たせなくても構わない。
【００２０】
図４は、図３に示した関係を用いて転送速度が決定される場合のＳＳＤ１の転送速度の推移を説明する図である。図示するように、ＳＳＤ１によれば、ガベージコレクションが開始されることにより最初からｒｍｉｎまで転送速度が低下するのではなく、使用ブロック数が増加するにつれて転送速度がｒ１、ｒ２と段階的に低下して、使用ブロック数が減少するにつれて転送速度がｒ１、ｒｍａｘに段階的に回復してゆく。
【００２１】
このように、本発明の実施形態によれば、ガベージコレクションによる空きブロックの生成速度とデータ書き込みによる空きブロックの消費速度とのバランスに基づいて転送速度の設定値が決定されるので、ガベージコレクションが完了するまでホスト装置２との間の転送にかかる処理を停止する場合に比べてホスト装置２からのコマンドが端的に待たされる状況を防ぐことができる。
【００２２】
図１に戻り、メモリセルアレイ５１には、ＳＳＤ１の制御にかかる各種情報が格納されるシステム領域５２およびホスト装置２からの書き込みデータが格納されるユーザ領域５３が確保されている。
【００２３】
制御部１０は、ＳＳＤ１全体の動作の制御を実行する。具体的には、制御部１０は、リソース管理部１１、転送速度設定部１２、転送制御部１３、アドレス変換テーブル１４およびモード記憶部１５を備えている。
【００２４】
アドレス変換テーブル１４は、前述のように、論理アドレスと物理アドレスとの対応関係を記述したテーブルであって、例えばＤＲＡＭやＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの記憶装置により保持される。
【００２５】
転送速度設定部１２は、ユーザ領域５３内の使用ブロック数と図３に示したしきい値とを用いて転送速度の設定値を算出する。ここでは、図３に示すように、しきい値の特性にヒステリシスを持たせているので、転送速度設定部１２は、モード記憶部１５にモードを記憶させておき、当該モード記憶部が記憶しているモードとしきい値とに基づいて現在のモードを求め、前記モード記憶部１５の記憶内容を当該求めた現在のモードで更新するとともに当該求めた現在のモードに対応する転送速度の設定値を算出する。なお、モード記憶部１５は、小規模なメモリやレジスタなどに保持されるようにしてもよいし、アドレス変換テーブル１４が保持される記憶装置内に保持されるようにしてもよい。
【００２６】
転送制御部１３は、ホストＩ／Ｆ２０およびＮＡＮＤＩ／Ｆ４０を制御して、ホスト装置２とＮＡＮＤメモリ５０との間のデータ転送を制御する。ホスト装置２から書き込みデータの受信を行う際、転送制御部１３は、転送速度設定部１２が算出した転送速度の設定値と書き込みデータのサイズとに基づいて待ち時間を算出し、ホストＩ／Ｆ２０とホスト装置２との間のデータ転送に当該算出した待ち時間を挿入することによってホスト装置２からの書き込みデータの転送速度を前記転送速度の設定値に制限する。書き込みデータのサイズによらず当該データの転送速度を一定にするためである。
【００２７】
また、転送制御部１３は、ホスト装置２からフラッシュコマンドを受信したとき、またはライトキャッシュ領域３１が溢れるなどのタイミングで、ライトキャッシュ領域３１にキャッシュされている書き込みデータをＮＡＮＤメモリ５０へ退避させる。当該退避対象の書き込みデータはメモリセルアレイ５１に確保されたユーザ領域５３に書き込まれる。そして、転送制御部１３は、受信したフラッシュコマンドの実行を完了した旨の通知をホストＩ／Ｆ２０を介してホスト装置２へ送信する。ここで、転送制御部１３は、転送速度設定部１２が算出した転送速度の設定値と退避対象のデータのサイズとに基づいて待ち時間を算出し、フラッシュコマンドを受信してから当該算出した待ち時間が経過した後、前記フラッシュコマンドの実行を完了した旨の通知（実行完了通知）をホスト装置２へ送信する。すなわち、転送速度設定部１２は、フラッシュコマンドの実行が完了した後、しばらくしてからフラッシュコマンドの実行完了通知をホスト装置２へ送信する。
【００２８】
なお、転送制御部１３は、算出した待ち時間がフラッシュコマンドの実行にかかる時間よりも小さい場合、実際にフラッシュコマンドを実行完了した後に実行完了通知を送信してもよく、算出した待ち時間が経過した後に実行完了通知をホスト装置２へ送信してもよい。また、フラッシュコマンドを実行時に空きブロックが枯渇してガベージコレクションが完了するまでフラッシュコマンドの実行が待たされることを防止するために、メモリセルアレイ５１内に、ライトキャッシュ領域３１と等しいサイズの特別な領域（緊急退避用領域）を確保するようにしてもよい。
【００２９】
例えば、算出した待ち時間が最悪応答時間を越えたとき、転送制御部１３は、ライトキャッシュ領域３１内のデータを当該緊急退避用領域内にそのままコピーし、最悪応答時間が経過したときに実行完了通知を送信する。緊急退避用領域を一度使ってしまうと次の緊急時に対応できなくなるため、一時的にモード３へ移行し、緊急退避用領域を確保できてから元のモードへ戻るなどの処理を行うことが望ましい。これにより、ライトキャッシュ内にデータが存在しないため、緊急退避用領域を使用する状況を抑制できる。なお、緊急退避用領域を特別に設けることをせず、全ブロック数からＴｌｉｍｉｔを減算して得られる数の領域を緊急退避用領域として使用するようにしてもよい。
【００３０】
転送制御部１３は、ライトキャッシュ領域３１からＮＡＮＤメモリ５０へのデータ転送を実行する際、退避対象の書き込みデータのＬＢＡとメモリセルアレイ５１の物理アドレスとの対応関係をアドレス変換テーブル１４に登録する。
【００３１】
リソース管理部１１は、ホスト装置２からの書き込みデータがライトキャッシュ領域３１に転送されている最中に、またはフラッシュコマンドを受信してから実行完了通知が送信されるまでの間においてフラッシュコマンドが実行されていない間に、ガベージコレクションを実行することができる。
【００３２】
また、リソース管理部１１は、アドレス変換テーブル１４を不揮発性のＮＡＮＤメモリ５０に保存するために、スナップショットをとる機能を有している。スナップショット５４は、ＮＡＮＤメモリ５０に格納されたアドレス変換テーブル１４のコピーであり、制御部１０が備えるアドレス変換テーブル１４をＮＡＮＤメモリ５０内のシステム領域５２に保存することを、スナップショットをとると表現している。
【００３３】
ログ５５は、アドレス変換テーブル１４の差分情報である。アドレス変換テーブル１４の更新の度にスナップショットをとっていたのでは、ＮＡＮＤメモリ５０への書き込み回数が増えるために、通常は差分情報としてのログ５５だけをシステム領域５２に記録していく。ログ５５を保持できるサイズは有限であるため、リソース管理部１１は、所定量のログ５５が蓄積されたとき、ログ５５をアドレス変換テーブル１４に反映させるとともにスナップショットをとって、蓄積されたログ５５を削除する処理を実行する。生成されたスナップショット５４は、蓄積されたログ５５が反映されたものとなる。なお、ログ５５はＮＡＮＤメモリ５０ではなくアドレス変換テーブル１４を保持する記憶装置などに置かれるようにしてもよい。
【００３４】
次に、本発明の実施形態のＳＳＤの動作を説明する。図５は、転送速度設定部１２の動作を説明するフローチャートである。
【００３５】
図５に示すように、まず、転送速度設定部１２は、ユーザ領域５３内の使用ブロック数を取得する（ステップＳ１）。ユーザ領域５３内の使用ブロック数は、例えばアドレス変換テーブル１４に基づいて求めることができる。
【００３６】
そして、転送速度設定部１２は、モード記憶部１５が記憶しているモードがモード０であるか否か（ステップＳ２）、モード１であるか否か（ステップＳ３）、またはモード２であるか否か（ステップＳ４）を判定する。
【００３７】
モード記憶部１５にモード０を記憶していた場合（ステップＳ２、Ｙｅｓ）、転送速度設定部１２は、取得した使用ブロック数がしきい値Ｔ１以上の値であるか否かを判定する（ステップＳ５）。使用ブロック数がＴ１以上であった場合（ステップＳ５、Ｙｅｓ）、転送速度設定部１２は、モード記憶部１５が記憶している値をモード１で上書きする（ステップＳ６）。そして、転送速度設定部１２は、モード記憶部１５が記憶しているモードに応じた転送速度を設定値とする（ステップＳ１７）。転送速度の設定値は、転送制御部１３に通知される。ステップＳ１７の処理が完了すると、ステップＳ１へ移行する。取得した使用ブロック数がしきい値Ｔ１以上の値ではなかった場合（ステップＳ５、Ｎｏ）、ステップＳ６がスキップされてステップＳ１７に移行する。
【００３８】
モード記憶部１５にモード１を記憶していた場合（ステップＳ３、Ｙｅｓ）、転送速度設定部１２は、取得した使用ブロック数がしきい値Ｔ２以上の値であるか否かを判定する（ステップＳ７）。使用ブロック数がＴ２以上であった場合（ステップＳ７、Ｙｅｓ）、転送速度設定部１２は、モード記憶部１５が記憶している値をモード２で上書きし（ステップＳ８）、ステップＳ１７に移行する。取得した使用ブロック数がしきい値Ｔ２以上の値ではなかった場合（ステップＳ７、Ｎｏ）、転送速度設定部１２は、取得した使用ブロック数がしきい値Ｔ４以下の値であるか否かを判定する（ステップＳ９）。使用ブロック数がしきい値Ｔ４以下の値であった場合（ステップＳ９、Ｙｅｓ）、転送速度設定部１２は、モード記憶部１５が記憶している値をモード０で上書きし（ステップＳ１０）、ステップＳ１７に移行する。使用ブロック数がしきい値Ｔ４以下の値ではなかった場合（ステップＳ９、Ｎｏ）、ステップＳ１０がスキップされてステップＳ１７に移行する。
【００３９】
モード記憶部１５にモード２を記憶していた場合（ステップＳ４、Ｙｅｓ）、転送速度設定部１２は、取得した使用ブロック数がしきい値Ｔｌｉｍｉｔ以上の値であるか否かを判定する（ステップＳ１１）。使用ブロック数がＴｌｉｍｉｔ以上であった場合（ステップＳ１１、Ｙｅｓ）、転送速度設定部１２は、モード記憶部１５が記憶している値をモード３で上書きし（ステップＳ１２）、ステップＳ１７に移行する。取得した使用ブロック数がしきい値Ｔｌｉｍｉｔ以上の値ではなかった場合（ステップＳ１１、Ｎｏ）、転送速度設定部１２は、取得した使用ブロック数がしきい値Ｔ３以下の値であるか否かを判定する（ステップＳ１３）。使用ブロック数がしきい値Ｔ３以下の値であった場合（ステップＳ１３、Ｙｅｓ）、転送速度設定部１２は、モード記憶部１５が記憶している値をモード１で上書きし（ステップＳ１４）、ステップＳ１７に移行する。使用ブロック数がしきい値Ｔ３以下の値ではなかった場合（ステップＳ１３、Ｎｏ）、ステップＳ１４がスキップされてステップＳ１７に移行する。
【００４０】
モード記憶部１５に記憶されていたモードがモード０〜２のいずれでもない場合（ステップＳ２、Ｎｏ、ステップＳ３、Ｎｏ、ステップＳ４、Ｎｏ）は、モード記憶部１５にはモード３が記憶されている。その場合、転送速度設定部１２は、取得した使用ブロック数がしきい値Ｔｌｉｍｉｔ以下の値であるか否かを判定する（ステップＳ１５）。使用ブロック数がＴｌｉｍｉｔ以下であった場合（ステップＳ１５、Ｙｅｓ）、転送速度設定部１２は、モード記憶部１５が記憶している値をモード２で上書きし（ステップＳ１６）、ステップＳ１７に移行する。使用ブロック数がしきい値Ｔｌｉｍｉｔ以下の値ではなかった場合（ステップＳ１５、Ｎｏ）、ステップＳ１６がスキップされてステップＳ１７に移行する。
【００４１】
図６は、リソース管理部１１がガベージコレクションを実行／停止する動作を説明するフローチャートである。図示するように、まず、リソース管理部１１は、モード記憶部１５がモード０を記憶しているか否かを判定する（ステップＳ２１）。モード記憶部１５がモード０を記憶していない場合（ステップＳ２１、Ｎｏ）、リソース管理部１１はガベージコレクションを開始する（ステップＳ２２）。モード記憶部１５がモード０を記憶している場合（ステップＳ２１、Ｙｅｓ）、リソース管理部１１は、モード記憶部１５の記憶内容がモード０でなくなるまでステップＳ２１の判定処理を継続する。
【００４２】
リソース管理部１１は、ガベージコレクションを開始後、再びモード記憶部１５がモード０を記憶しているか否かを判定する（ステップＳ２３）。モード記憶部１５がモード０を記憶している場合（ステップＳ２３、Ｙｅｓ）、リソース管理部１１はガベージコレクションを停止して（ステップＳ２４）、ステップＳ２１の判定処理を実行する。ステップＳ２３においてモード記憶部１５がモード０を記憶していない場合（ステップＳ２３、Ｎｏ）、リソース管理部１１は、モード記憶部１５の記憶内容がモード０となるまでステップＳ２３の判定処理を継続する。
【００４３】
図７は、転送制御部１３の動作を説明するフローチャートである。図示するように、まず、転送制御部１３は、書き込みコマンドを受信したか否かを判定する（ステップＳ３１）。書き込みコマンドを受信していない場合（ステップＳ３１、Ｎｏ）、転送制御部１３は、フラッシュコマンドを受信したか否かを判定する（ステップＳ３２）。フラッシュコマンドを受信していない場合（ステップＳ３２、Ｎｏ）、転送制御部１３は、ステップＳ３１の判定処理を実行する。
【００４４】
ステップＳ３１において、書き込みコマンドを受信したと判定した場合（ステップＳ３１、Ｙｅｓ）、転送制御部１３は、書き込みコマンドにより書き込み要求されたデータのサイズと転送速度設定部１２が算出した転送速度の設定値とに基づいて待ち時間を算出する（ステップＳ３３）。具体的には、転送制御部１３は下記の式１に基づいて待ち時間を算出する。
サイズ／（実行時間＋待ち時間）＝転送速度の設定値      （１）
ここで、式（１）における実行時間とは、転送速度ｒｍａｘで当該書き込み要求されたデータを転送したときの実行時間を指す。なお、実行時間をゼロ値として待ち時間を算出するようにしてもよい。この場合、必要以上に待ち時間をデータ転送に挿入するとなり、ガベージコレクションをできる量が変わるが、ガベージコレクション対象の量は変わらないので概ね同じ時間でモード０に戻すことができる。
【００４５】
ステップＳ３３の後、転送制御部１３は、前記書き込み要求されたデータのデータ転送中にステップＳ３３にて算出した待ち時間を挿入することによって、前記書き込み要求されたデータのデータ転送を転送速度の設定値で実行する（ステップＳ３４）。転送制御部１３は、ステップＳ３４のデータ転送が完了すると、ステップＳ３１の判定処理を実行する。
【００４６】
ステップＳ３２において、フラッシュコマンドを受信したと判定した場合（ステップＳ３２、Ｙｅｓ）、転送制御部１３は、ライトキャッシュ領域３１にキャッシュされている退避対象のデータのサイズと転送速度設定部１２が算出した転送速度の設定値とに基づいて待ち時間を算出する（ステップＳ３５）。具体的には、転送制御部１３は下記の式２に基づいて待ち時間を算出する。
サイズ／待ち時間＝転送速度の設定値      （２）
【００４７】
ステップＳ３５の後、転送制御部１３は、フラッシュコマンドを実行し、当該フラッシュコマンドを受信してからステップＳ３５にて算出した待ち時間が経過した後にフラッシュコマンドを実行完了した旨の通知をホスト装置２へ送信する（ステップＳ３６）。そして、転送制御部１３は、ステップＳ３１の判定処理を実行する。
【００４８】
なお、以上の説明においては、使用ブロック数と所定のしきい値との比較に基づいて転送速度の設定値を算出するとして説明したが、空きブロック数としきい値とを比較することによっても同様の動作および効果を実現することができることはいうまでもない。また、転送速度の設定値の算出のために使用ブロック数以外のリソース量を用いることができる。使用可能な他のリソース量としては、例えばシステム領域５２の使用可能サイズが挙げられる。システム領域５２のうちの使用可能なサイズは、ログ５５の量が多くなった場合に少なくなってくる。リソース管理部１１は、システム領域５２の使用サイズが所定量に達したとき、ログ５５をスナップショット５４に反映させて、反映済みのログ５５を消去し、システム領域５２の使用可能サイズを整理するようにするとよい。
【００４９】
このように、本発明の実施形態によれば、ＮＡＮＤメモリ５０にかかるリソースの使用量が所定量に達したときＮＡＮＤメモリ５０にかかるリソースを整理してリソースを増加させるリソース管理部１１と、ホスト装置２からの書き込みデータの受信にかかる転送速度の設定値を算出する転送速度設定部１２と、ホスト装置２から書き込みデータを受信して、受信した書き込みデータをＮＡＮＤメモリ５０に転送する転送制御部１３と、を備え、転送速度設定部１２は、ＮＡＮＤメモリ５０のリソースの使用量が増加するほど低い設定値を算出し、転送制御部１３は、リソース管理部１１がリソースを整理している間、前記ホスト装置２からの書き込みデータの受信を転送速度設定部１２が算出した設定値の転送速度で実行する、ように構成したので、リソースの整理が終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができるようになる。
【００５０】
また、転送制御部１３は、フラッシュコマンドを受信したとき、ライトキャッシュ領域３１にキャッシュされている退避対象のデータのサイズと転送速度の設定値とに基づいて待ち時間を算出し、フラッシュコマンドを受信してから当該算出した待ち時間が経過した後に前記受信したフラッシュ要求に対する実行完了通知をホスト装置２に送信する、ように構成したので、フラッシュコマンドを受信した際においてもガベージコレクションを実行することができるので、当該フラッシュコマンドの実行完了後に書き込みコマンドを受信したとき、空きブロックの枯渇を抑制し、結果として当該書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができる。
【００５１】
なお、転送速度設定部１２は、転送速度の設定値を算出するために使用するしきい値および／または転送速度の値をコマンドの受信間隔に応じて変化させるようにしてもよい。図８は、コマンドの受信間隔時間に応じて転送速度およびしきい値を変化させる場合の転送速度およびしきい値を説明する図である。図示するように、コマンドの受信間隔時間がｔｔｈよりも大きいとき、ｒ１としてｒ１ａ、ｒ２としてｒ２ａ、Ｔ１としてＴ１ａ、Ｔ２としてＴ２ａ、Ｔ３としてＴ３ａ、ＴｌｉｍｉｔとしてＴｌｉｍｉｔａが使用される。
【００５２】
また、コマンドの受信間隔時間がｔｔｈよりも小さいとき、ｒ１としてｒ１ｂ、ｒ２としてｒ２ｂ、Ｔ１としてＴ１ｂ、Ｔ２としてＴ２ｂ、Ｔ３としてＴ３ｂ、ＴｌｉｍｉｔとしてＴｌｉｍｉｔｂが使用される。ただし、ｒｍａｘ＞ｒ１ａ＞ｒ２ａ＞ｒｍｉｎ、Ｔ４ａ＜Ｔ１ａ＜Ｔ３ａ＜Ｔ２ａ＜Ｔｌｉｍｉｔａ、ｒｍａｘ＞ｒ１ｂ＞ｒ２ｂ＞ｒｍｉｎ、Ｔ４ｂ＜Ｔ１ｂ＜Ｔ３ｂ＜Ｔ２ｂ＜Ｔｌｉｍｉｔｂ、ｒ１ｂ＜ｒ１ａ、ｒ２ｂ＜ｒ２ａ、Ｔ１ｂ＜Ｔ１ａ、Ｔ２ｂ＜Ｔ２ｂ、Ｔ３ｂ＜Ｔ３ａ、Ｔ４ｂ＜Ｔ４ａ、Ｔｌｉｍｉｔｂ＜Ｔｌｉｍｉｔａの関係は保たれる。
【００５３】
そして、転送速度設定部１２は、図９のフローチャートに示す動作により各モードと転送速度との関係およびしきい値を決定する。すなわち、ステップＳ４１において、転送速度設定部１２は、コマンドの受信間隔時間がｔｔｈより大きいか否かを判定する（ステップＳ４１）。
【００５４】
コマンドの受信間隔時間がｔｔｈより小さい場合（ステップＳ４１、Ｎｏ）、モードを決定するためのしきい値としてＴ１ａ、Ｔ２ａ、Ｔ３ａおよびＴｌｉｍｉｔａを用い、モード０、１、２、３時の転送速度を夫々ｒｍａｘ、ｒ１ａ、ｒ２ａ、ｒｍｉｎとする（ステップＳ４２）。
【００５５】
コマンドの受信間隔時間がｔｔｈより大きい場合（ステップＳ４１、Ｙｅｓ）、モードを決定するためのしきい値としてＴ１ｂ、Ｔ２ｂ、Ｔ３ｂおよびＴｌｉｍｉｔｂを用い、モード０、１、２、３時の転送速度を夫々ｒｍａｘ、ｒ１ｂ、ｒ２ｂ、ｒｍｉｎとする（ステップＳ４３）。
【００５６】
ステップＳ４２またはステップＳ４３の後、ステップＳ４１に移行する。なお、コマンドの受信間隔時間とは、コマンド受信時における前回受信したコマンドからの経過時間であってもよいし、コマンドの受信間隔を複数回記録しておき、当該記録しておいた受信間隔の平均値であってもよい。
【００５７】
このように、コマンドの受信間隔が大きい場合には、ホスト装置２にとって応答時間が大きくなっても次のコマンドの実行を待たせる可能性が少ないので、ＳＳＤ１は転送速度を遅くしてガベージコレクションに割く時間を多くすることができ、結果として速くガベージコレクションを完了することができる。また、コマンドの受信間隔が小さい場合には、ホスト装置２にとって高速な応答時間が求められるので、ＳＳＤ１はガベージコレクションに割く時間を減らして転送速度を速くすることができる。
【００５８】
また、コマンドの受信間隔が大きい場合にしきい値（特にＴ４）を小さくすることによって、受信間隔が小さくなる場合に備えて多めに空きブロックの量を確保しておくことができる。これによって、受信間隔が小さくなったときにおける転送速度を制限する機会を低減することができるようになる。
【００５９】
（第２の実施形態）
第１の実施形態においては、ＮＡＮＤメモリ内に確保されたユーザ領域を転送速度を決定するためのリソースとみなすようにしたが、第２の実施形態においては、システム領域をリソースとしてみなすようにする。
【００６０】
図１０は、本発明の第２の実施形態のＳＳＤの構成を示すブロック図である。ここでは、第１の実施形態と同じ構成要素には同一の符号を付し、重複する説明を省略する。
【００６１】
図示するように、ＳＳＤ６は、制御部６０、ホストインタフェース（Ｉ／Ｆ）２０、バッファ３０、ＮＡＮＤＩ／Ｆ４０、およびＮＡＮＤメモリ５０を備えている。
【００６２】
ＮＡＮＤメモリ５０は、ＮＡＮＤ型の不揮発性記憶素子からなるメモリセルアレイ５１を備えている。メモリセルアレイ５１には、システム領域５２およびユーザ領域５３が確保されている。そして、第２の実施形態によれば、システム領域５２には、アドレス変換テーブル６７が格納されるテーブル記憶領域６６が確保されている。アドレス変換テーブル６７は、ユーザ領域５３に格納されているデータにかかる論理アドレスと物理アドレスとの対応関係を記述したテーブルである。なお、テーブル記憶領域６６は、複数のブロックを備えて構成される。
【００６３】
図１１は、アドレス変換テーブル６７のデータ構成例を説明する図である。図示するように、当該テーブル６７によれば、論理アドレスと物理アドレスとが対となったエントリが複数登録されて構成される。なお、アドレス変換テーブル６７は、論理アドレスが連続するように夫々のエントリが登録されているものとする。
【００６４】
本発明の第２の実施形態によれば、アドレス変換テーブル６７はＮＡＮＤメモリ５０上に置かれるようにしているため、アドレス変換テーブル６７は、追記により内容の更新が実行される。即ち、アドレス変換テーブル６７が更新される際、更新部分の新しい方の内容が空きブロックの書き込みがまだ行われていないページに対して追記される。アドレス変換テーブル６７は、更新単位となるサイズ毎に複数のテーブル（更新単位テーブルａ、更新単位テーブルｂ、等）に分割されている。更新単位のサイズには、例えばページサイズやページサイズの自然数倍が採用される。また、更新単位のサイズを、更新単位テーブル毎のエントリ数が所定の数（例えば２のべき乗個）となるように定めるようにしてもよい。
【００６５】
ここで、アドレス変換テーブル６７の更新が行われるにつれて、追記により無効となった更新単位テーブルが増加し、利用可能な領域が減少する。そこで、テーブル記憶領域６６についてもガベッジコレクションが行われる。図１２−１および図１２−２は、テーブル記憶領域６６におけるガベッジコレクションの概念を説明する図である。
【００６６】
図１２−１は、ガベッジコレクション前のテーブル記憶領域６６の状態を示している。ここでは、一例として、テーブル記憶領域６６は３つのブロック６６ａ〜６６ｃを備えており、アドレス変換テーブル６７は４つの更新単位テーブルａ〜ｄに分割されているものとしている。図示するように、ブロック６６ａ〜６６ｃのうちのブロック６６ａおよびブロック６６ｂを使用して更新単位テーブルａ〜ｄの内容が保持されている。テーブル記憶領域６６の記憶内容のうち、８個の更新単位テーブルの内容が無効となっている。また、有効な更新単位テーブルｂおよび有効な更新単位テーブルｃがブロック６６ａに格納されており、有効な更新単位テーブルａおよび有効な更新単位テーブルｄがブロック６６ｂに格納されている。
【００６７】
更新単位テーブルａ〜ｄの夫々にかかる有効な内容の格納位置は、テーブルポインタテーブル６４に含まれるポインタにより特定できるようになっている。本図の例においては、テーブルポインタテーブル６４に含まれる夫々のポインタは、ポインタの検索のためのインデックスとして用いられる論理アドレスが対応付けられている。当該インデックスとしての論理アドレスは、例えば、対応する更新単位テーブルに含まれているエントリのうちの、先頭のエントリに含まれる論理アドレスと等しい。または、更新単位テーブルを構成するエントリに含まれる夫々の論理アドレスに共通する上位のビット列をインデックスとしてテーブルポインタテーブル６４に登録しておくようにしてもよい。
【００６８】
図１２−２は、ガベッジコレクション後のテーブル記憶領域６６の状態を示している。図示するように、ガベッジコレクション後には、ブロック６６ａに格納されていた有効な更新単位テーブルｂおよび有効な更新単位テーブルｃと、ブロック６６ｂに格納されていた有効な更新単位テーブルａおよび有効な更新単位テーブルｄとが夫々ブロック６６ｃにコピーされ、ブロック６６ａおよびブロック６６ｂの記憶内容が消去されている。また、有効な更新単位テーブルのコピーに伴って、テーブルポインタテーブル６４に含まれているポインタの内容が更新されている。ガベッジコレクションが行われることにより、無効な更新単位テーブルにかかる内容が消去されて、利用可能な記憶容量がガベッジコレクション前よりも増加している。
【００６９】
図１０に戻り、制御部６０は、リソース管理部６１、転送速度設定部６２、転送制御部６３、テーブルポインタテーブル６４、およびモード記憶部６５を備えている。
【００７０】
テーブルポインタテーブル６４は、前述のように、更新単位テーブル毎の記憶位置を示すポインタの一覧により構成されるテーブルであって、例えばＤＲＡＭやＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの揮発性の記憶装置により保持される。
【００７１】
転送速度設定部６２は、テーブル記憶領域６６の使用ブロック数に基づいてホスト装置２との間の転送速度の設定値を算出する。
【００７２】
図１３は、第２の実施形態におけるテーブル記憶領域６６の使用ブロック数と転送速度との関係を説明する図である。本図において、紙面右方向ほど使用ブロック数が多く、空きブロック数が少ない。図示するように、転送速度は、ｒｍａｘ、ｒ１、ｒ２、およびｒｍｉｎを取りうる。ｒｍａｘは全く制限されていない状態における転送速度、ｒｍｉｎは最悪応答時間に基づいて決まる転送速度であり、夫々の転送速度の間には、ｒｍａｘ＞ｒ１＞ｒ２＞ｒｍｉｎの関係がある。転送速度設定部６２は、ｒｍａｘ、ｒ１、ｒ２、ｒｍｉｎのうちどの転送速度でデータ転送を実行するかを、使用ブロック数と所定のしきい値との比較に基づいて決定する。ｒｍａｘ、ｒ１、ｒ２、ｒｍｉｎの転送速度が定められたモードを夫々モード０、モード１、モード２、モード３ということにすると、モード０からモード１への遷移、モード１からモード２への遷移、モード２からモード３への遷移は、テーブル記憶領域６６の使用ブロック数としきい値Ｔｔ１、Ｔｔ２、Ｔｔｌｉｍｉｔとの比較に基づいて決められる。また、モード３からモード２への遷移、モード２からモード１への遷移、モード１からモード０への遷移は、使用ブロック数としきい値Ｔｔｌｉｍｉｔ、Ｔｔ３、Ｔｔ４との比較に基づいて決められる。なお、Ｔｔ４＜Ｔｔ１＜Ｔｔ３＜Ｔｔ２＜Ｔｔｌｉｍｉｔとする。このようにモードの遷移の判断のためのしきい値にヒステリシス特性を持たせたのは、しきい値の付近で使用ブロック数が推移することによりモードの切り替えが頻発することを防止するためである。なお、しきい値にヒステリシス特性を持たせなくても構わない。
【００７３】
モード記憶部６５は、転送速度設定部６２が転送速度を算出する際に使用するモードの値を記憶する。モード記憶部６５は、小規模なメモリやレジスタなどに保持されるようにしてよい。
【００７４】
リソース管理部６１は、テーブル記憶領域６６のガベージコレクションを実行する。
【００７５】
次に、本発明の第２の実施形態のＳＳＤの動作を説明する。図１４は、転送速度設定部６２の動作を説明するフローチャートである。
【００７６】
図１４に示すように、まず、転送速度設定部６２は、テーブル記憶領域６６内の使用ブロック数を取得する（ステップＳ５１）。ユーザ領域５３内の使用ブロック数は、例えばアドレス変換テーブル６７に基づいて求めることができる。
【００７７】
そして、転送速度設定部６２は、モード記憶部６５が記憶しているモードがモード０であるか否か（ステップＳ５２）、モード１であるか否か（ステップＳ５３）、またはモード２であるか否か（ステップＳ５４）を判定する。
【００７８】
モード記憶部６５にモード０を記憶していた場合（ステップＳ５２、Ｙｅｓ）、転送速度設定部６２は、取得した使用ブロック数がしきい値Ｔｔ１以上の値であるか否かを判定する（ステップＳ５５）。使用ブロック数がＴｔ１以上であった場合（ステップＳ５５、Ｙｅｓ）、転送速度設定部６２は、モード記憶部６５が記憶している値をモード１で上書きする（ステップＳ５６）。そして、転送速度設定部６２は、モード記憶部６５が記憶しているモードに応じた転送速度を設定値とする（ステップＳ６７）。転送速度の設定値は、転送制御部６３に通知される。ステップＳ６７の処理が完了すると、ステップＳ５１へ移行する。取得した使用ブロック数がしきい値Ｔｔ１以上の値ではなかった場合（ステップＳ５５、Ｎｏ）、ステップＳ５６がスキップされてステップＳ６７に移行する。
【００７９】
モード記憶部６５にモード１を記憶していた場合（ステップＳ５３、Ｙｅｓ）、転送速度設定部６２は、取得した使用ブロック数がしきい値Ｔｔ２以上の値であるか否かを判定する（ステップＳ５７）。使用ブロック数がＴｔ２以上であった場合（ステップＳ５７、Ｙｅｓ）、転送速度設定部６２は、モード記憶部６５が記憶している値をモード２で上書きし（ステップＳ５８）、ステップＳ６７に移行する。取得した使用ブロック数がしきい値Ｔｔ２以上の値ではなかった場合（ステップＳ５７、Ｎｏ）、転送速度設定部６２は、取得した使用ブロック数がしきい値Ｔｔ４以下の値であるか否かを判定する（ステップＳ５９）。使用ブロック数がしきい値Ｔｔ４以下の値であった場合（ステップＳ５９、Ｙｅｓ）、転送速度設定部６２は、モード記憶部６５が記憶している値をモード０で上書きし（ステップＳ６０）、ステップＳ６７に移行する。使用ブロック数がしきい値Ｔｔ４以下の値ではなかった場合（ステップＳ５９、Ｎｏ）、ステップＳ６０がスキップされてステップＳ６７に移行する。
【００８０】
モード記憶部６５にモード２を記憶していた場合（ステップＳ５４、Ｙｅｓ）、転送速度設定部６２は、取得した使用ブロック数がしきい値Ｔｔｌｉｍｉｔ以上の値であるか否かを判定する（ステップＳ６１）。使用ブロック数がＴｔｌｉｍｉｔ以上であった場合（ステップＳ６１、Ｙｅｓ）、転送速度設定部６２は、モード記憶部６５が記憶している値をモード３で上書きし（ステップＳ６２）、ステップＳ６７に移行する。取得した使用ブロック数がしきい値Ｔｔｌｉｍｉｔ以上の値ではなかった場合（ステップＳ６１、Ｎｏ）、転送速度設定部６２は、取得した使用ブロック数がしきい値Ｔｔ３以下の値であるか否かを判定する（ステップＳ６３）。使用ブロック数がしきい値Ｔｔ３以下の値であった場合（ステップＳ６３、Ｙｅｓ）、転送速度設定部６２は、モード記憶部６５が記憶している値をモード１で上書きし（ステップＳ６４）、ステップＳ６７に移行する。使用ブロック数がしきい値Ｔｔ３以下の値ではなかった場合（ステップＳ６３、Ｎｏ）、ステップＳ６４がスキップされてステップＳ６７に移行する。
【００８１】
モード記憶部６５に記憶されていたモードがモード０〜２のいずれでもない場合（ステップＳ５２、Ｎｏ、ステップＳ５３、Ｎｏ、ステップＳ５４、Ｎｏ）は、モード記憶部６５にはモード３が記憶されている。その場合、転送速度設定部６２は、取得した使用ブロック数がしきい値Ｔｔｌｉｍｉｔ以下の値であるか否かを判定する（ステップＳ６５）。使用ブロック数がＴｔｌｉｍｉｔ以下であった場合（ステップＳ６５、Ｙｅｓ）、転送速度設定部６２は、モード記憶部６５が記憶している値をモード２で上書きし（ステップＳ６６）、ステップＳ６７に移行する。使用ブロック数がしきい値Ｔｔｌｉｍｉｔ以下の値ではなかった場合（ステップＳ６５、Ｎｏ）、ステップＳ６６がスキップされてステップＳ６７に移行する。
【００８２】
図１５は、リソース管理部６１がガベージコレクションを実行／停止する動作を説明するフローチャートである。図示するように、まず、リソース管理部６１は、モード記憶部６５がモード０を記憶しているか否かを判定する（ステップＳ７１）。モード記憶部６５がモード０を記憶していない場合（ステップＳ７１、Ｎｏ）、リソース管理部６１はテーブル記憶領域６６のガベージコレクションを開始する（ステップＳ７２）。モード記憶部６５がモード０を記憶している場合（ステップＳ７１、Ｙｅｓ）、リソース管理部６１は、モード記憶部６５の記憶内容がモード０でなくなるまでステップＳ７１の判定処理を継続する。
【００８３】
リソース管理部６１は、ガベージコレクションを開始後、再びモード記憶部６５がモード０を記憶しているか否かを判定する（ステップＳ７３）。モード記憶部６５がモード０を記憶している場合（ステップＳ７３、Ｙｅｓ）、リソース管理部６１はテーブル記憶領域６６のガベージコレクションを停止して（ステップＳ７４）、ステップＳ７１の判定処理を実行する。ステップＳ７３においてモード記憶部６５がモード０を記憶していない場合（ステップＳ７３、Ｎｏ）、リソース管理部６１は、モード記憶部６５の記憶内容がモード０となるまでステップＳ７３の判定処理を継続する。
【００８４】
転送制御部６３の動作は第１の実施形態と同じであるので、説明を省略する。
【００８５】
このように、本発明の第２の実施形態によれば、テーブル記憶領域６６のうちのアドレス変換テーブルが書き込まれていない領域を転送速度を決定するためのリソースとするようにしたので、テーブル記憶領域６６のガベージコレクションが終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができるようになる。
【００８６】
なお、第２の実施形態においても、転送速度の設定値を算出するために使用するしきい値および／または転送速度の値をコマンドの受信間隔に応じて変化させるようにしてもよい。
【００８７】
（第３の実施形態）
第１および第２の実施形態においては、不揮発性メモリとしてのＮＡＮＤメモリ内の記憶領域をリソースとして見なすようにしたが、第３の実施形態以降においては、揮発性メモリ領域をリソースと見なす。第３の実施形態においては、ライトキャッシュ領域の空き領域を転送速度を決定するためのリソースとする。
【００８８】
図１６は、本発明の第３の実施形態のＳＳＤの構成を示すブロック図である。ここでは、第１の実施形態と同じ構成要素には同一の符号を付し、重複する説明を省略する。
【００８９】
図示するように、ＳＳＤ７は、制御部７０、ホストインタフェース（Ｉ／Ｆ）２０、バッファ３０、ＮＡＮＤＩ／Ｆ４０、およびＮＡＮＤメモリ５０を備えている。
【００９０】
バッファ３０は、ホスト装置２からホストＩ／Ｆ２０を介して受信した書き込みデータをキャッシュするライトキャッシュ領域３１を備えている。
【００９１】
ＮＡＮＤメモリ５０は、ＮＡＮＤ型の不揮発性記憶素子からなるメモリセルアレイ５１を備えている。そして、メモリセルアレイ５１には、アドレス変換テーブル１４のスナップショット５４およびログ５５が格納されるシステム領域５２と、ホスト装置２からの書き込みデータがライトキャッシュ領域３１を経由して格納されるユーザ領域５３とが確保されている。
【００９２】
制御部７０は、ＮＡＮＤ管理部７１、転送速度設定部７２、転送制御部７３、アドレス変換テーブル１４およびモード記憶部７５を備えている。
【００９３】
転送速度設定部７２は、ライトキャッシュ領域３１の使用量と所定のしきい値とを用いて転送速度の設定値を算出する。
図１７は、ライトキャッシュ領域３１の使用量と転送速度との関係を説明する図である。本図において、紙面右方向ほどライトキャッシュ領域３１の使用量が多く、ライトキャッシュ領域３１の空き領域が少ない。図示するように、転送速度は、ｒｍａｘ、ｒ１、ｒ２、およびｒｍｉｎを取りうる。ｒｍａｘは全く制限されていない状態における転送速度、ｒｍｉｎは最悪応答時間に基づいて決まる転送速度であり、夫々の転送速度の間には、ｒｍａｘ＞ｒ１＞ｒ２＞ｒｍｉｎの関係がある。ｒｍａｘ、ｒ１、ｒ２、ｒｍｉｎのうちどの転送速度でデータ転送を実行するかは、ライトキャッシュ領域３１の使用量と所定のしきい値との比較に基づいて決定される。ｒｍａｘ、ｒ１、ｒ２、ｒｍｉｎの転送速度が定められたモードを夫々モード０、モード１、モード２、モード３ということにすると、モード０からモード１への遷移、モード１からモード２への遷移、モード２からモード３への遷移は、ライトキャッシュ領域３１の使用量としきい値Ｔｃ１、Ｔｃ２、Ｔｃｌｉｍｉｔとの比較に基づいて決められる。また、モード３からモード２への遷移、モード２からモード１への遷移、モード１からモード０への遷移は、ライトキャッシュ領域３１の使用量としきい値Ｔｃｌｉｍｉｔ、Ｔｃ３、Ｔｃ４との比較に基づいて決められる。なお、Ｔｃ４＜Ｔｃ１＜Ｔｃ３＜Ｔｃ２＜Ｔｃｌｉｍｉｔとする。このようにモードの遷移の判断のためのしきい値にヒステリシス特性を持たせたのは、しきい値の付近でライトキャッシュ領域３１の使用量が推移することによりモードの切り替えが頻発することを防止するためである。なお、しきい値にヒステリシス特性を持たせなくても構わない。
【００９４】
なお、ここでは、ライトキャッシュ領域３１の使用量を転送速度の設定値の算出に使用されるものとして説明しているが、ライトキャッシュ領域３１の使用量の替わりに使用中のライン数や使用率を用いることができる。
【００９５】
モード記憶部７５は、転送速度設定部７２が転送速度を算出する際に使用するモードの値を記憶する。モード記憶部７５は、小規模なメモリやレジスタなどに保持されるようにしてよい。
【００９６】
転送制御部７３は、ホストＩ／Ｆ２０およびＮＡＮＤＩ／Ｆ４０を制御して、ホスト装置２とライトキャッシュ領域３１との間のデータ転送を制御する。その際、転送速度設定部７２が設定した転送速度でデータ転送を実行するようにする。また、転送制御部７３は、ライトキャッシュ領域３１にキャッシュされている書き込みデータをＮＡＮＤメモリ５０へ退避させるリソース管理部７６を備えている。当該退避対象の書き込みデータはメモリセルアレイ５１に確保されたユーザ領域５３に書き込まれる。
【００９７】
ＮＡＮＤ管理部７１は、ユーザ領域５３のガベージコレクション、アドレス変換テーブル１４のスナップショット５４、およびアドレス変換テーブル１４のログ５５を取る動作を実行する。
【００９８】
次に、本発明の第３の実施形態のＳＳＤの動作を説明する。図１８は、転送速度設定部７２の動作を説明するフローチャートである。
【００９９】
図１８に示すように、まず、転送速度設定部７２は、ライトキャッシュ領域３１の使用量を取得する（ステップＳ８１）。そして、転送速度設定部７２は、モード記憶部７５が記憶しているモードがモード０であるか否か（ステップＳ８２）、モード１であるか否か（ステップＳ８３）、またはモード２であるか否か（ステップＳ８４）を判定する。
【０１００】
モード記憶部７５にモード０を記憶していた場合（ステップＳ８２、Ｙｅｓ）、転送速度設定部７２は、取得したライトキャッシュ領域３１の使用量がしきい値Ｔｃ１以上の値であるか否かを判定する（ステップＳ８５）。ライトキャッシュ領域３１の使用量がＴｃ１以上であった場合（ステップＳ８５、Ｙｅｓ）、転送速度設定部７２は、モード記憶部７５が記憶している値をモード１で上書きする（ステップＳ８６）。そして、転送速度設定部７２は、モード記憶部７５が記憶しているモードに応じた転送速度を設定値とする（ステップＳ９７）。転送速度の設定値は、転送制御部７３に通知される。ステップＳ９７の処理が完了すると、ステップＳ８１へ移行する。取得したライトキャッシュ領域３１の使用量がしきい値Ｔｃ１以上の値ではなかった場合（ステップＳ８５、Ｎｏ）、ステップＳ８６がスキップされてステップＳ９７に移行する。
【０１０１】
モード記憶部７５にモード１を記憶していた場合（ステップＳ８３、Ｙｅｓ）、転送速度設定部７２は、取得したライトキャッシュ領域３１の使用量がしきい値Ｔｃ２以上の値であるか否かを判定する（ステップＳ８７）。ライトキャッシュ領域３１の使用量がＴｃ２以上であった場合（ステップＳ８７、Ｙｅｓ）、転送速度設定部７２は、モード記憶部７５が記憶している値をモード２で上書きし（ステップＳ８８）、ステップＳ９７に移行する。取得したライトキャッシュ領域３１の使用量がしきい値Ｔｃ２以上の値ではなかった場合（ステップＳ８７、Ｎｏ）、転送速度設定部７２は、取得したライトキャッシュ領域３１の使用量がしきい値Ｔｃ４以下の値であるか否かを判定する（ステップＳ８９）。ライトキャッシュ領域３１の使用量がしきい値Ｔｃ４以下の値であった場合（ステップＳ８９、Ｙｅｓ）、転送速度設定部７２は、モード記憶部７５が記憶している値をモード０で上書きし（ステップＳ９０）、ステップＳ９７に移行する。ライトキャッシュ領域３１の使用量がしきい値Ｔｃ４以下の値ではなかった場合（ステップＳ８９、Ｎｏ）、ステップＳ９０がスキップされてステップＳ９７に移行する。
【０１０２】
モード記憶部７５にモード２を記憶していた場合（ステップＳ８４、Ｙｅｓ）、転送速度設定部７２は、取得したライトキャッシュ領域３１の使用量がしきい値Ｔｃｌｉｍｉｔ以上の値であるか否かを判定する（ステップＳ９１）。ライトキャッシュ領域３１の使用量がＴｃｌｉｍｉｔ以上であった場合（ステップＳ９１、Ｙｅｓ）、転送速度設定部７２は、モード記憶部７５が記憶している値をモード３で上書きし（ステップＳ９２）、ステップＳ９７に移行する。取得したライトキャッシュ領域３１の使用量がしきい値Ｔｃｌｉｍｉｔ以上の値ではなかった場合（ステップＳ９１、Ｎｏ）、転送速度設定部７２は、取得したライトキャッシュ領域３１の使用量がしきい値Ｔｃ３以下の値であるか否かを判定する（ステップＳ９３）。ライトキャッシュ領域３１の使用量がしきい値Ｔｃ３以下の値であった場合（ステップＳ９３、Ｙｅｓ）、転送速度設定部７２は、モード記憶部７５が記憶している値をモード１で上書きし（ステップＳ９４）、ステップＳ９７に移行する。ライトキャッシュ領域３１の使用量がしきい値Ｔｃ３以下の値ではなかった場合（ステップＳ９３、Ｎｏ）、ステップＳ９４がスキップされてステップＳ９７に移行する。
【０１０３】
モード記憶部７５に記憶されていたモードがモード０〜２のいずれでもない場合（ステップＳ８２、Ｎｏ、ステップＳ８３、Ｎｏ、ステップＳ８４、Ｎｏ）は、モード記憶部７５にはモード３が記憶されている。その場合、転送速度設定部７２は、取得したライトキャッシュ領域３１の使用量がしきい値Ｔｃｌｉｍｉｔ以下の値であるか否かを判定する（ステップＳ９５）。ライトキャッシュ領域３１の使用量がＴｃｌｉｍｉｔ以下であった場合（ステップＳ９５、Ｙｅｓ）、転送速度設定部７２は、モード記憶部７５が記憶している値をモード２で上書きし（ステップＳ９６）、ステップＳ９７に移行する。ライトキャッシュ領域３１の使用量がしきい値Ｔｃｌｉｍｉｔ以下の値ではなかった場合（ステップＳ９５、Ｎｏ）、ステップＳ９６がスキップされてステップＳ９７に移行する。
【０１０４】
図１９は、リソース管理部７６がライトキャッシュ領域３１にキャッシュされている書き込みデータをＮＡＮＤメモリ５０へ退避させる動作を説明するフローチャートである。図示するように、まず、リソース管理部７６は、モード記憶部７５がモード０を記憶しているか否かを判定する（ステップＳ１０１）。モード記憶部７５がモード０を記憶していない場合（ステップＳ１０１、Ｎｏ）、リソース管理部７６はライトキャッシュ領域３１内のデータの退避を開始する（ステップＳ１０２）。モード記憶部７５がモード０を記憶している場合（ステップＳ１０１、Ｙｅｓ）、リソース管理部７６は、モード記憶部７５の記憶内容がモード０でなくなるまでステップＳ１０１の判定処理を継続する。
【０１０５】
リソース管理部７６は、データの退避を開始後、再びモード記憶部７５がモード０を記憶しているか否かを判定する（ステップＳ１０３）。モード記憶部７５がモード０を記憶している場合（ステップＳ１０３、Ｙｅｓ）、リソース管理部７６はデータの退避を停止して（ステップＳ１０４）、ステップＳ１０１の判定処理を実行する。ステップＳ１０３においてモード記憶部７５がモード０を記憶していない場合（ステップＳ１０３、Ｎｏ）、リソース管理部７６は、モード記憶部７５の記憶内容がモード０となるまでステップＳ１０３の判定処理を継続する。
【０１０６】
図２０は、転送制御部７３がデータ転送を行う動作を説明するフローチャートである。図示するように、まず、転送制御部７３は、書き込みコマンドを受信したか否かを判定する（ステップＳ１１１）。書き込みコマンドを受信していない場合（ステップＳ１１１、Ｎｏ）、転送制御部７３は、書き込みコマンドを受信するまでステップＳ１１１の判定処理を実行する。
【０１０７】
ステップＳ１１１において、書き込みコマンドを受信したと判定した場合（ステップＳ１１１、Ｙｅｓ）、転送制御部７３は、書き込みコマンドにより書き込み要求されたデータのサイズと転送速度設定部７２が算出した転送速度の設定値とを式（１）の関係式に適用して待ち時間を算出する（ステップＳ１１２）。なお、第１の実施形態と同様に、式（１）において、実行時間をゼロ値として待ち時間を算出するようにしてもよい。
【０１０８】
ステップＳ１１２の後、転送制御部７３は、前記書き込み要求されたデータのデータ転送中にステップＳ１１２にて算出した待ち時間を挿入することによって、前記書き込み要求されたデータのデータ転送を転送速度の設定値で実行する（ステップＳ１１３）。転送制御部７３は、ステップＳ１１３のデータ転送が完了すると、ステップＳ１１１の判定処理を実行する。
【０１０９】
このように、本発明の第３の実施形態によれば、ライトキャッシュ領域３１の使用量に基づいて転送速度の設定値を算出するようにしたので、ライトキャッシュ領域３１内のデータをＮＡＮＤメモリ５０に退避させる処理が終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができるようになる。
【０１１０】
なお、第３の実施形態においても、転送速度の設定値を算出するために使用するしきい値および／または転送速度の値をコマンドの受信間隔に応じて変化させるようにしてもよい。
【０１１１】
（第４の実施形態）
図２１は、本発明の第４の実施形態のＳＳＤの構成を示すブロック図である。ここでは、第１の実施形態と同じ構成要素には同一の符号を付し、重複する説明を省略する。
【０１１２】
図示するように、ＳＳＤ８は、制御部８０、ホストインタフェース（Ｉ／Ｆ）２０、バッファ３０、ＮＡＮＤＩ／Ｆ４０、およびＮＡＮＤメモリ５０を備えている。
【０１１３】
バッファ３０は、ホスト装置２からホストＩ／Ｆ２０を介して受信した書き込みデータをキャッシュするライトキャッシュ領域３１を備えている。
【０１１４】
ＮＡＮＤメモリ５０は、ＮＡＮＤ型の不揮発性記憶素子からなるメモリセルアレイ５１を備えている。そして、メモリセルアレイ５１には、システム領域５２と、ホスト装置２からの書き込みデータが格納されるユーザ領域５３とが確保されている。そして、ユーザ領域５３には、ページサイズのデータがキャッシュされるキャッシュ領域８６と、ブロックサイズのデータが格納されるストレージ領域８７とがさらに確保されている。ストレージ領域８７内のデータに関する論理アドレスと物理アドレスとの対応付けは、ブロック管理テーブル８４−１により管理される。また、キャッシュ領域８６内のデータに関する論理アドレスと物理アドレスとの対応付けは、ページ管理テーブル８４−２により管理される。ライトキャッシュ領域３１内のページ単位のデータは、まずキャッシュ領域８６内に退避させられる。そして、キャッシュ領域８６内のデータが増加すると、当該データは、論理アドレスが連続する他のデータとマージされて、ストレージ領域８７を構成する空きブロックに書き込まれる。以降、この処理をＮＡＮＤ整理ということとする。
【０１１５】
図２２−１および図２２−２は、ＮＡＮＤ整理の処理を説明する図である。図２２−１は、ＮＡＮＤ整理が行われる前の状態を示している。本図においては、キャッシュ領域８６は３つのブロック（ブロック８６ａ〜ｃ）を備えており、ストレージ領域８７は複数のブロック（ブロック８７ａ〜ｆ、・・・）を備えている。そして、制御部８０には、ブロック管理テーブル８４−１およびページ管理テーブル８４−２が備えられている。キャッシュ領域８６には、ブロック８６ａに4ページ分のデータが格納されており、ページ管理テーブル８４−２は、ブロック８６ａに格納されている４ページ分のデータについて夫々論理アドレスと物理アドレスとの対応関係を示す４つのエントリが登録されている。ストレージ領域８７には、ブロック８７ａ〜ｄが書き込み済みとなっており、そのうちのブロック８７ａは、1ページ分のデータが追記により無効化された状態となっている。追記された1ページ分のデータは、ブロック８６ａの4ページ目に格納されている。
【０１１６】
図２２−２は、上記したブロック８６ａの4ページ目に格納されているデータを対象としたＮＡＮＤ整理が実行された後の状態を示している。図２２−１においては、ブロック８６ａの4ページ目に格納されているデータに論理アドレスが連続するデータは、ブロック８７ａに格納されていた。図２２−２においては、ブロック８６ａの4ページ目に格納されているデータとブロック８７ａに格納されているデータとが読み出されてマージされ、空きブロックであったブロック８７ｅにブロックサイズのデータとして書き込まれている。そして、ブロック８７ａの内容は消去されて空きブロックとなっている。また、上記したブロック８６ａの4ページ目に格納されていたデータは無効化され、ページ管理テーブル８４−２内の当該無効化されたデータに対応するエントリは削除される。なお、ブロック８６ａ内の無効なデータは、同一ブロック内の全てのデータが無効化されてから消去するようにしてもよいし、有効なデータを他の空きブロック（例えばブロック８６ｂ）に退避させてから消去するようにしてもよい。
【０１１７】
このように、ページ管理テーブル８４−２のサイズは、キャッシュ領域８６内に格納されているデータ量に応じて増減する。第４の実施形態においては、ページ管理テーブル８４−２が格納される記憶領域をリソースとみなし、ページ管理テーブル８４−２のサイズに応じて転送速度の制限値が算出される。なお、ここでは、ページ管理テーブル８４−２のサイズを使用リソース量としてとらえて転送速度を算出するものとするが、サイズ以外に当該テーブルが格納される領域の使用率やエントリ数で代用することもできる。
【０１１８】
制御部８０は、リソース管理部８１、転送速度設定部８２、転送制御部８３、ブロック管理テーブル８４−１、ページ管理テーブル８４−２、およびモード記憶部８５を備えている。
【０１１９】
ブロック管理テーブル８４−１およびページ管理テーブル８４−２は、前述のように、論理アドレスと物理アドレスとの対応付けを記録したテーブルであって、例えばＤＲＡＭやＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）など、揮発性メモリとしての記憶装置により保持される。
【０１２０】
転送速度設定部８２は、ページ管理テーブル８４−２のサイズと所定のしきい値とを用いて転送速度の設定値を算出する。
図２３は、ページ管理テーブル８４−２のサイズと転送速度との関係を説明する図である。本図において、紙面右方向ほどページ管理テーブル８４−２のサイズが多く、ライトキャッシュ領域３１の空き領域が少ない。図示するように、転送速度は、ｒｍａｘ、ｒ１、ｒ２、およびｒｍｉｎを取りうる。ｒｍａｘは全く制限されていない状態における転送速度、ｒｍｉｎは最悪応答時間に基づいて決まる転送速度であり、夫々の転送速度の間には、ｒｍａｘ＞ｒ１＞ｒ２＞ｒｍｉｎの関係がある。ｒｍａｘ、ｒ１、ｒ２、ｒｍｉｎのうちどの転送速度でデータ転送を実行するかは、ページ管理テーブル８４−２のサイズと所定のしきい値との比較に基づいて決定される。ｒｍａｘ、ｒ１、ｒ２、ｒｍｉｎの転送速度が定められたモードを夫々モード０、モード１、モード２、モード３ということにすると、モード０からモード１への遷移、モード１からモード２への遷移、モード２からモード３への遷移は、ページ管理テーブル８４−２のサイズとしきい値Ｔｐ１、Ｔｐ２、Ｔｐｌｉｍｉｔとの比較に基づいて決められる。また、モード３からモード２への遷移、モード２からモード１への遷移、モード１からモード０への遷移は、ページ管理テーブル８４−２のサイズとしきい値Ｔｐｌｉｍｉｔ、Ｔｐ３、Ｔｐ４との比較に基づいて決められる。なお、Ｔｐ４＜Ｔｐ１＜Ｔｐ３＜Ｔｐ２＜Ｔｐｌｉｍｉｔとする。このようにモードの遷移の判断のためのしきい値にヒステリシス特性を持たせたのは、しきい値の付近でページ管理テーブル８４−２のサイズが推移することによりモードの切り替えが頻発することを防止するためである。なお、しきい値にヒステリシス特性を持たせなくても構わない。
【０１２１】
モード記憶部８５は、転送速度設定部８２が転送速度を算出する際に使用するモードの値を記憶する。モード記憶部８５は、小規模なメモリやレジスタなどに保持されるようにしてよい。
【０１２２】
転送制御部８３は、ホストＩ／Ｆ２０およびＮＡＮＤＩ／Ｆ４０を制御して、ホスト装置２とＮＡＮＤメモリ５０との間のデータ転送を制御する。その際、転送速度設定部８２が設定した転送速度でデータ転送を実行するようにする。また、転送制御部８３は、ライトキャッシュ領域３１が溢れたり、ホスト装置２からフラッシュコマンドが発行されたなどのタイミングで、ライトキャッシュ領域３１にキャッシュされている書き込みデータをＮＡＮＤメモリ５０へ退避させる。当該退避対象の書き込みデータのうち、論理アドレスが連続するブロックサイズの書き込みデータはストレージ領域８７に書き込まれ、論理アドレスが連続するブロックサイズを構成しないページサイズの書き込みデータはキャッシュ領域８６に書き込まれる。
【０１２３】
リソース管理部８１は、前述のＮＡＮＤ整理の処理を実行する。
【０１２４】
次に、本発明の第４の実施形態のＳＳＤの動作を説明する。図２４は、転送速度設定部８２の動作を説明するフローチャートである。
【０１２５】
図２４に示すように、まず、転送速度設定部８２は、ページ管理テーブル８４−２のサイズを取得する（ステップＳ１２１）。そして、転送速度設定部８２は、モード記憶部８５が記憶しているモードがモード０であるか否か（ステップＳ１２２）、モード１であるか否か（ステップＳ１２３）、またはモード２であるか否か（ステップＳ１２４）を判定する。
【０１２６】
モード記憶部８５にモード０を記憶していた場合（ステップＳ１２２、Ｙｅｓ）、転送速度設定部８２は、取得したページ管理テーブル８４−２のサイズがしきい値Ｔｐ１以上の値であるか否かを判定する（ステップＳ１２５）。ページ管理テーブル８４−２のサイズがＴｐ１以上であった場合（ステップＳ１２５、Ｙｅｓ）、転送速度設定部８２は、モード記憶部８５が記憶している値をモード１で上書きする（ステップＳ１２６）。そして、転送速度設定部８２は、モード記憶部８５が記憶しているモードに応じた転送速度を設定値とする（ステップＳ１３７）。転送速度の設定値は、転送制御部８３に通知される。ステップＳ１３７の処理が完了すると、ステップＳ１２１へ移行する。取得したページ管理テーブル８４−２のサイズがしきい値Ｔｐ１以上の値ではなかった場合（ステップＳ１２５、Ｎｏ）、ステップＳ１２６がスキップされてステップＳ１３７に移行する。
【０１２７】
モード記憶部８５にモード１を記憶していた場合（ステップＳ１２３、Ｙｅｓ）、転送速度設定部８２は、取得したページ管理テーブル８４−２のサイズがしきい値Ｔｐ２以上の値であるか否かを判定する（ステップＳ１２７）。ページ管理テーブル８４−２のサイズがＴｐ２以上であった場合（ステップＳ１２７、Ｙｅｓ）、転送速度設定部８２は、モード記憶部８５が記憶している値をモード２で上書きし（ステップＳ１２８）、ステップＳ１３７に移行する。取得したページ管理テーブル８４−２のサイズがしきい値Ｔｐ２以上の値ではなかった場合（ステップＳ１２７、Ｎｏ）、転送速度設定部８２は、取得したページ管理テーブル８４−２のサイズがしきい値Ｔｐ４以下の値であるか否かを判定する（ステップＳ１２９）。ページ管理テーブル８４−２のサイズがしきい値Ｔｐ４以下の値であった場合（ステップＳ１２９、Ｙｅｓ）、転送速度設定部８２は、モード記憶部８５が記憶している値をモード０で上書きし（ステップＳ１３０）、ステップＳ１３７に移行する。ページ管理テーブル８４−２のサイズがしきい値Ｔｐ４以下の値ではなかった場合（ステップＳ１２９、Ｎｏ）、ステップＳ１３０がスキップされてステップＳ１３７に移行する。
【０１２８】
モード記憶部８５にモード２を記憶していた場合（ステップＳ１２４、Ｙｅｓ）、転送速度設定部８２は、取得したページ管理テーブル８４−２のサイズがしきい値Ｔｐｌｉｍｉｔ以上の値であるか否かを判定する（ステップＳ１３１）。ページ管理テーブル８４−２のサイズがＴｐｌｉｍｉｔ以上であった場合（ステップＳ１３１、Ｙｅｓ）、転送速度設定部８２は、モード記憶部８５が記憶している値をモード３で上書きし（ステップＳ１３２）、ステップＳ１３７に移行する。取得したページ管理テーブル８４−２のサイズがしきい値Ｔｐｌｉｍｉｔ以上の値ではなかった場合（ステップＳ１３１、Ｎｏ）、転送速度設定部８２は、取得したページ管理テーブル８４−２のサイズがしきい値Ｔｐ３以下の値であるか否かを判定する（ステップＳ１３３）。ページ管理テーブル８４−２のサイズがしきい値Ｔｐ３以下の値であった場合（ステップＳ１３３、Ｙｅｓ）、転送速度設定部８２は、モード記憶部８５が記憶している値をモード１で上書きし（ステップＳ１３４）、ステップＳ１３７に移行する。ページ管理テーブル８４−２のサイズがしきい値Ｔｐ３以下の値ではなかった場合（ステップＳ１３３、Ｎｏ）、ステップＳ１３４がスキップされてステップＳ１３７に移行する。
【０１２９】
モード記憶部８５に記憶されていたモードがモード０〜２のいずれでもない場合（ステップＳ１２２、Ｎｏ、ステップＳ１２３、Ｎｏ、ステップＳ１２４、Ｎｏ）は、モード記憶部８５にはモード３が記憶されている。その場合、転送速度設定部８２は、取得したページ管理テーブル８４−２のサイズがしきい値Ｔｐｌｉｍｉｔ以下の値であるか否かを判定する（ステップＳ１３５）。ページ管理テーブル８４−２のサイズがＴｐｌｉｍｉｔ以下であった場合（ステップＳ１３５、Ｙｅｓ）、転送速度設定部８２は、モード記憶部８５が記憶している値をモード２で上書きし（ステップＳ１３６）、ステップＳ１３７に移行する。ページ管理テーブル８４−２のサイズがしきい値Ｔｐｌｉｍｉｔ以下の値ではなかった場合（ステップＳ１３５、Ｎｏ）、ステップＳ１３６がスキップされてステップＳ１３７に移行する。
【０１３０】
図２５は、リソース管理部８１がＮＡＮＤ整理の処理を開始／停止する動作を説明するフローチャートである。図示するように、まず、リソース管理部８１は、モード記憶部８５がモード０を記憶しているか否かを判定する（ステップＳ１４１）。モード記憶部８５がモード０を記憶していない場合（ステップＳ１４１、Ｎｏ）、リソース管理部８１はＮＡＮＤ整理を開始する（ステップＳ１４２）。モード記憶部８５がモード０を記憶している場合（ステップＳ１４１、Ｙｅｓ）、リソース管理部８１は、モード記憶部８５の記憶内容がモード０でなくなるまでステップＳ１４１の判定処理を継続する。
【０１３１】
リソース管理部８１は、ＮＡＮＤ整理を開始後、再びモード記憶部８５がモード０を記憶しているか否かを判定する（ステップＳ１４３）。モード記憶部８５がモード０を記憶している場合（ステップＳ１４３、Ｙｅｓ）、リソース管理部８１はＮＡＮＤ整理を停止して（ステップＳ１４４）、ステップＳ１４１の判定処理を実行する。ステップＳ１４３においてモード記憶部８５がモード０を記憶していない場合（ステップＳ１４３、Ｎｏ）、リソース管理部８１は、モード記憶部８５の記憶内容がモード０となるまでステップＳ１４３の判定処理を継続する。
【０１３２】
転送制御部８３の動作は、第１の実施形態と同じであるので、ここでは説明を省略する。
【０１３３】
このように、本発明の第４の実施形態によれば、ＮＡＮＤメモリ５０は、ホスト装置２から書き込み要求されたデータをページ毎に記憶するキャッシュ領域８６と、ブロック毎に記憶するストレージ領域８７とを備え、制御部８０内の揮発性メモリは、キャッシュ領域８６内のアドレス管理を行うページ管理テーブル８４−２とストレージ領域８７内のアドレス管理を行うブロック管理テーブル８４−１とを夫々記憶する記憶領域を備え、ページ管理テーブル８４−２を記憶する記憶領域をリソースとするように構成したので、リソース管理部８１がＮＡＮＤ整理が終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができるようになる。
【０１３４】
なお、第４の実施形態においても、転送速度の設定値を算出するために使用するしきい値および／または転送速度の値をコマンドの受信間隔に応じて変化させるようにしてもよい。また、第４の実施形態では、キャッシュ領域８６がページ単位で管理され、ストレージ領域８７がブロック単位で管理されるとして説明したが、これに限定されない。ストレージ領域８７のデータ管理単位がキャッシュ領域８６のデータ管理単位よりも大きければ、本実施形態と同様にＮＡＮＤ整理を実行することが可能である。例えばキャッシュ領域８６はページサイズの２以上の自然数分の１倍の単位で管理されていてもよいし、ページサイズの２以上の自然数倍の単位で管理されていてもよい。またストレージ領域８７はブロックサイズの２以上の自然数分の１倍の単位で管理されていてもよいし、ブロックサイズの２以上の自然数倍の単位で管理されていてもよい。また、キャッシュ領域８６は１つのメモリセルに１ビットの記憶を行う二値記憶方式（SLC:  Single Level  Cell）で管理し、ストレージ領域８７は１つのメモリセルに２ビット以上の記憶を行う多値記憶方式（MLC:  Multi Level  Cell）で管理してもよい。
【０１３５】
（第５の実施形態）
図２６は、本発明の第５の実施形態のＳＳＤの構成を示すブロック図である。ここでは、第１の実施形態と同じ構成要素には同一の符号を付し、重複する説明を省略する。
【０１３６】
図示するように、ＳＳＤ９は、制御部９０、ホストインタフェース（Ｉ／Ｆ）２０、バッファ３０、ＮＡＮＤＩ／Ｆ４０、およびＮＡＮＤメモリ５０を備えている。
【０１３７】
バッファ３０は、ホスト装置２からホストＩ／Ｆ２０を介して受信した書き込みデータをキャッシュするライトキャッシュ領域３１を備えている。ＮＡＮＤメモリ５０は、ＮＡＮＤ型の不揮発性記憶素子からなるメモリセルアレイ５１を備えており、メモリセルアレイ５１には、システム領域５２とユーザ領域５３とが確保されている。
【０１３８】
制御部９０は、システム管理部９１、転送速度設定部９２、転送制御部１３、アドレス変換テーブル１４、モード記憶部９５およびシステムキュー９６を備えている。
【０１３９】
システム管理部９１は、破損したデータの復元処理や、メモリセルアレイ５１のリフレッシュ処理や、メモリセルアレイ５１内のデータのウェアレベリング処理など、信頼性を担保するために必要となる処理（以下、システム処理という）を実行する。リフレッシュ処理とは、例えば、誤り訂正処理における訂正ビット数が増加するなどデータの劣化が検出された場合に、当該ブロック内のデータを別のブロックに書き直す処理を意味する。ウェアレベリング処理とは、例えば、書き換え回数（消去回数）が多いブロックに記憶されているデータと、書き換え回数（消去回数）の少ないブロックに記憶されているデータとを入れ替えることで、ＮＡＮＤメモリ全体の書き換え回数を平準化する処理を意味する。
【０１４０】
システムキュー９６は、必要でかつ未実行のシステム処理が記録されるキュー構造の記憶領域である。すなわち、システム処理を行う必要が生じたとき、実行すべきシステム処理を記録したデータがエンキューされ、当該データは、システム管理部９１によって所定のタイミングでデキューされる。システム管理部９１は、デキューしたデータに記録されているシステム処理を実行する。システムキュー９６は、例えばＤＲＡＭやＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）など、揮発性メモリとしての記憶装置により保持される。
【０１４１】
転送速度設定部９２は、システムキュー９６内のデータ量と所定のしきい値とを用いて転送速度の設定値を算出する。
図２７は、システムキュー９６内のデータ量と転送速度との関係を説明する図である。本図において、紙面右方向ほどシステムキュー９６内のデータ量が多く、システムキュー９６の空き領域が少ない。図示するように、転送速度は、ｒｍａｘ、ｒ１、ｒ２、およびｒｍｉｎを取りうる。ｒｍａｘは全く制限されていない状態における転送速度、ｒｍｉｎは最悪応答時間に基づいて決まる転送速度であり、夫々の転送速度の間には、ｒｍａｘ＞ｒ１＞ｒ２＞ｒｍｉｎの関係がある。ｒｍａｘ、ｒ１、ｒ２、ｒｍｉｎのうちどの転送速度でデータ転送を実行するかは、システムキュー９６内のデータ量と所定のしきい値との比較に基づいて決定される。ｒｍａｘ、ｒ１、ｒ２、ｒｍｉｎの転送速度が定められたモードを夫々モード０、モード１、モード２、モード３ということにすると、モード０からモード１への遷移、モード１からモード２への遷移、モード２からモード３への遷移は、システムキュー９６内のデータ量としきい値Ｔｑ１、Ｔｑ２、Ｔｑｌｉｍｉｔとの比較に基づいて決められる。また、モード３からモード２への遷移、モード２からモード１への遷移、モード１からモード０への遷移は、システムキュー９６内のデータ量としきい値Ｔｑｌｉｍｉｔ、Ｔｑ３、Ｔｑ４との比較に基づいて決められる。なお、Ｔｑ４＜Ｔｑ１＜Ｔｑ３＜Ｔｑ２＜Ｔｑｌｉｍｉｔとする。このようにモードの遷移の判断のためのしきい値にヒステリシス特性を持たせたのは、しきい値の付近でシステムキュー９６内のデータ量が推移することによりモードの切り替えが頻発することを防止するためである。なお、しきい値にヒステリシス特性を持たせなくても構わない。
【０１４２】
なお、ここでは、転送速度を算出するための使用リソース量としてシステムキュー９６内のデータ量を用いることとしているが、データ量のほかに、システムキュー９６の使用率を用いることもできる。
【０１４３】
モード記憶部９５は、転送速度設定部９２が転送速度を算出する際に使用するモードの値を記憶する。モード記憶部９５は、小規模なメモリやレジスタなどに保持されるようにしてよい。
【０１４４】
次に、本発明の第５の実施形態のＳＳＤの動作を説明する。図２８は、転送速度設定部９２の動作を説明するフローチャートである。
【０１４５】
図２８に示すように、まず、転送速度設定部９２は、システムキュー９６内のデータ量を取得する（ステップＳ１５１）。そして、転送速度設定部９２は、モード記憶部９５が記憶しているモードがモード０であるか否か（ステップＳ１５２）、モード１であるか否か（ステップＳ１５３）、またはモード２であるか否か（ステップＳ１５４）を判定する。
【０１４６】
モード記憶部９５にモード０を記憶していた場合（ステップＳ１５２、Ｙｅｓ）、転送速度設定部９２は、取得したシステムキュー９６内のデータ量がしきい値Ｔｑ１以上の値であるか否かを判定する（ステップＳ１５５）。システムキュー９６内のデータ量がＴｑ１以上であった場合（ステップＳ１５５、Ｙｅｓ）、転送速度設定部９２は、モード記憶部９５が記憶している値をモード１で上書きする（ステップＳ１５６）。そして、転送速度設定部９２は、モード記憶部９５が記憶しているモードに応じた転送速度を設定値とする（ステップＳ１６７）。転送速度の設定値は、転送制御部１３に通知される。ステップＳ１６７の処理が完了すると、ステップＳ１５１へ移行する。取得したシステムキュー９６内のデータ量がしきい値Ｔｑ１以上の値ではなかった場合（ステップＳ１５５、Ｎｏ）、ステップＳ１５６がスキップされてステップＳ１６７に移行する。
【０１４７】
モード記憶部９５にモード１を記憶していた場合（ステップＳ１５３、Ｙｅｓ）、転送速度設定部９２は、取得したシステムキュー９６内のデータ量がしきい値Ｔｑ２以上の値であるか否かを判定する（ステップＳ１５７）。システムキュー９６内のデータ量がＴｑ２以上であった場合（ステップＳ１５７、Ｙｅｓ）、転送速度設定部９２は、モード記憶部９５が記憶している値をモード２で上書きし（ステップＳ１５８）、ステップＳ１６７に移行する。取得したシステムキュー９６内のデータ量がしきい値Ｔｑ２以上の値ではなかった場合（ステップＳ１５７、Ｎｏ）、転送速度設定部９２は、取得したシステムキュー９６内のデータ量がしきい値Ｔｑ４以下の値であるか否かを判定する（ステップＳ１５９）。システムキュー９６内のデータ量がしきい値Ｔｑ４以下の値であった場合（ステップＳ１５９、Ｙｅｓ）、転送速度設定部９２は、モード記憶部９５が記憶している値をモード０で上書きし（ステップＳ１６０）、ステップＳ１６７に移行する。システムキュー９６内のデータ量がしきい値Ｔｑ４以下の値ではなかった場合（ステップＳ１５９、Ｎｏ）、ステップＳ１６０がスキップされてステップＳ１６７に移行する。
【０１４８】
モード記憶部９５にモード２を記憶していた場合（ステップＳ１５４、Ｙｅｓ）、転送速度設定部９２は、取得したシステムキュー９６内のデータ量がしきい値Ｔｑｌｉｍｉｔ以上の値であるか否かを判定する（ステップＳ１６１）。システムキュー９６内のデータ量がＴｑｌｉｍｉｔ以上であった場合（ステップＳ１６１、Ｙｅｓ）、転送速度設定部９２は、モード記憶部９５が記憶している値をモード３で上書きし（ステップＳ１６２）、ステップＳ１６７に移行する。取得したシステムキュー９６内のデータ量がしきい値Ｔｑｌｉｍｉｔ以上の値ではなかった場合（ステップＳ１６１、Ｎｏ）、転送速度設定部９２は、取得したシステムキュー９６内のデータ量がしきい値Ｔｑ３以下の値であるか否かを判定する（ステップＳ１６３）。システムキュー９６内のデータ量がしきい値Ｔｑ３以下の値であった場合（ステップＳ１６３、Ｙｅｓ）、転送速度設定部９２は、モード記憶部９５が記憶している値をモード１で上書きし（ステップＳ１６４）、ステップＳ１６７に移行する。システムキュー９６内のデータ量がしきい値Ｔｑ３以下の値ではなかった場合（ステップＳ１６３、Ｎｏ）、ステップＳ１６４がスキップされてステップＳ１６７に移行する。
【０１４９】
モード記憶部９５に記憶されていたモードがモード０〜２のいずれでもない場合（ステップＳ１５２、Ｎｏ、ステップＳ１５３、Ｎｏ、ステップＳ１５４、Ｎｏ）は、モード記憶部９５にはモード３が記憶されている。その場合、転送速度設定部９２は、取得したシステムキュー９６内のデータ量がしきい値Ｔｑｌｉｍｉｔ以下の値であるか否かを判定する（ステップＳ１６５）。システムキュー９６内のデータ量がＴｑｌｉｍｉｔ以下であった場合（ステップＳ１６５、Ｙｅｓ）、転送速度設定部９２は、モード記憶部９５が記憶している値をモード２で上書きし（ステップＳ１６６）、ステップＳ１６７に移行する。システムキュー９６内のデータ量がしきい値Ｔｑｌｉｍｉｔ以下の値ではなかった場合（ステップＳ１６５、Ｎｏ）、ステップＳ１６６がスキップされてステップＳ１６７に移行する。
【０１５０】
図２９は、システム管理部９１がシステム処理の処理を開始／停止する動作を説明するフローチャートである。図示するように、まず、システム管理部９１は、モード記憶部９５がモード０を記憶しているか否かを判定する（ステップＳ１７１）。モード記憶部９５がモード０を記憶していない場合（ステップＳ１７１、Ｎｏ）、システム管理部９１はシステム処理を開始する（ステップＳ１７２）。モード記憶部９５がモード０を記憶している場合（ステップＳ１７１、Ｙｅｓ）、システム管理部９１は、モード記憶部９５の記憶内容がモード０でなくなるまでステップＳ１７１の判定処理を継続する。
【０１５１】
システム管理部９１は、システム処理を開始後、再びモード記憶部９５がモード０を記憶しているか否かを判定する（ステップＳ１７３）。モード記憶部９５がモード０を記憶している場合（ステップＳ１７３、Ｙｅｓ）、システム管理部９１はシステム処理を停止して（ステップＳ１７４）、ステップＳ１７１の判定処理を実行する。ステップＳ１７３においてモード記憶部９５がモード０を記憶していない場合（ステップＳ１７３、Ｎｏ）、システム管理部９１は、モード記憶部９５の記憶内容がモード０となるまでステップＳ１７３の判定処理を継続する。
【０１５２】
転送制御部１３の動作は、第１の実施形態と同じであるので、ここでは説明を省略する。
【０１５３】
このように、本発明の第５の実施形態によれば、不揮発性メモリ内に必要でかつ未実行のシステム処理の実行内容が記録されるシステムキュー９６を備え、システムキュー９６のデータ量を使用リソース量とするようにしたので、システム処理が終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができるようになる。
【０１５４】
なお、第５の実施形態においても、転送速度の設定値を算出するために使用するしきい値および／または転送速度の値をコマンドの受信間隔に応じて変化させるようにしてもよい。
【０１５５】
（第６の実施形態）
図３０は、ホスト装置からの書き込みデータがライトキャッシュ領域３１に格納されるまでの動作を説明するシーケンス図である。
【０１５６】
まず、ホスト装置２からホストＩ／Ｆ２０に書き込みコマンドが送信されると（ステップＳ１８１）、ホストＩ／Ｆ２０は、書き込みコマンドを受け付けた旨の受け付け応答をホスト装置２に返信する（ステップＳ１８２）。そして、ＳＳＤ１がデータ受け入れの準備が整うと、ホストＩ／Ｆ２０から転送開始通知がホスト装置２に送信される（ステップＳ１８３）。ホスト装置２は、転送開始通知を受信すると、書き込みデータをホストＩ／Ｆ２０が内部に具備するバッファのサイズ（ここでは８Ｋバイト）毎に分割して送信する。なお、ホストＩ／Ｆ２０が備えるバッファのサイズは、例えば初期化時に予めホスト装置２に通知される。
【０１５７】
具体的には、まず、ホスト装置２は、書き込みデータを８Ｋバイト毎に分割して、得られた最初のデータをデータ転送する（ステップＳ１８４）。ホストＩ／Ｆ２０にデータ転送されてきた８Ｋバイトのデータは、内部に具備するバッファに一時的に格納される。その後、ホストＩ／Ｆ２０内のバッファに格納されたデータは、ライトキャッシュ領域３１に転送される（ステップＳ１８５、ステップＳ１８６）。なお、ホストＩ／Ｆ２０からライトキャッシュ領域３１へのデータ転送の単位サイズは、ホスト装置２からホストＩ／Ｆ２０へのデータ転送の単位サイズと同じでもよいし、異なっていてもよい。ここでは、４Ｋバイト毎にホストＩ／Ｆ２０からライトキャッシュ領域３１に転送されることとしている。ホストＩ／Ｆ２０からライトキャッシュ領域３１へのデータ転送が完了し、ホストＩ／Ｆ２０内のバッファが空になると、次の転送データを受け入れることができる旨の準備完了通知がホストＩ／Ｆ２０からホスト装置２に送信される（ステップＳ１８７）。ステップＳ１８４乃至ステップＳ１８７の処理は、ステップＳ１８１により書き込み要求されたデータのサイズに応じた回数だけリピートされる。
【０１５８】
ホスト装置２が、書き込み要求したデータにかかる最後のデータ転送を実行し（ステップＳ１８８）、ホストＩ／Ｆ２０に送られてきたデータをホストＩ／Ｆ２０からライトキャッシュ領域３１に送信完了すると（ステップＳ１８９、ステップＳ１９０）、書き込みコマンドＳ１８１にかかるデータ転送が完了した旨の転送終了通知がホストＩ／Ｆ２０からホスト装置２に送信される（ステップＳ１９１）。
【０１５９】
第１の実施形態の説明においては、ホスト装置２からの書き込みデータの転送速度を前記転送速度の設定値に制限するために、転送制御部１３は、ホストＩ／Ｆ２０とホスト装置２との間のデータ転送に待ち時間を挿入する、と説明した。ここで、待ち時間の挿入方法には以下の手法を採用することができる。
【０１６０】
即ち、ホスト装置２からホストＩ／Ｆ２０への最初のデータ転送（ステップＳ１８４）が開始されてからホスト装置２からホストＩ／Ｆ２０への最後のデータ転送（ステップＳ１８８）が完了するまでの時間を式（１）にかかる実行時間とし、最後のデータ転送（ステップＳ１８８）が完了してから転送終了通知（ステップＳ１９１）を送信するまでの時間を式（１）における待ち時間とする。このようにすることによって、最初のデータ転送（ステップＳ１８４）が開始されてから転送終了通知（ステップＳ１９１）が送受信されるまで平均の転送速度を転送速度設定部１２が算出した転送速度に等しくすることができる。
【０１６１】
また、転送速度設定部１２は、ホスト装置２からの書き込みデータの転送速度を次の手法で設定値に制限するようにしてもよい。即ち、ホストＩ／Ｆ２０からライトキャッシュ領域３１へのデータ転送（ステップＳ１８５、ステップＳ１８６、ステップＳ１８９、ステップＳ１９０）の夫々が転送速度設定部１２が算出した転送速度に等しくなるように、当該夫々のデータ転送の実行タイミングを制御する方法である。具体的には、転送制御部１３は、下記の式３に基づいて、ホストＩ／Ｆ２０からライトキャッシュ領域３１へのデータ転送の夫々にかける時間の設定値（転送時間設定値）を算出する。
４Ｋバイト／転送時間設定値＝転送速度の設定値      （３）
そして、ホストＩ／Ｆ２０とライトキャッシュ領域３１との間のデータ転送を開始するときに、前記算出した転送時間設定値までの経過時間をカウントするタイマを起動する。データ転送部１３は、４Ｋバイトのデータ転送が終わった後も前記タイマがエクスパイアするまで次の４Ｋバイトのデータ転送の開始を待つ。ホストＩ／Ｆ２０からライトキャッシュ領域３１へのデータ転送の転送速度が転送速度設定部１２が算出した転送速度に抑えられるので、ホストＩ／Ｆ２０とホスト装置２との間の８Ｋバイトごとのデータ転送の間隔が開き、結果としてホストＩ／Ｆ２０とホスト装置２との間の転送速度が転送速度設定部１２が算出した転送速度に抑えることができる。
【０１６２】
なお、第６の実施形態で説明したホスト装置２との間の転送速度の制限手法は、第２乃至第５の実施形態で説明した何れの転送制御部にも適用することができる。
【０１６３】
（第７の実施形態）
図３１は、第１の実施形態のＳＳＤ１を搭載したパーソナルコンピュータ１２００の一例を示す斜視図である。パーソナルコンピュータ１２００は、本体１２０１、及び表示ユニット１２０２を備えている。表示ユニット１２０２は、ディスプレイハウジング１２０３と、このディスプレイハウジング１２０３に収容された表示装置１２０４とを備えている。
【０１６４】
本体１２０１は、筐体１２０５と、キーボード１２０６と、ポインティングデバイスであるタッチパッド１２０７とを備えている。筐体１２０５内部には、メイン回路基板、ＯＤＤ（Optical  Disk  Device）ユニット、カードスロット、及びＳＳＤ１等が収容されている。
【０１６５】
カードスロットは、筐体１２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部１２０８が設けられている。ユーザは、この開口部１２０８を通じて筐体１２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【０１６６】
ＳＳＤ１は、従来のＨＤＤの置き換えとして、パーソナルコンピュータ１２００内部に実装された状態として使用してもよいし、パーソナルコンピュータ１２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【０１６７】
図３２は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ１２００は、ＣＰＵ１３０１、ノースブリッジ１３０２、主メモリ１３０３、ビデオコントローラ１３０４、オーディオコントローラ１３０５、サウスブリッジ１３０９、ＢＩＯＳ−ＲＯＭ１３１０、ＳＳＤ１、ＯＤＤユニット１３１１、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１３１２、及びネットワークコントローラ１３１３等を備えている。
【０１６８】
ＣＰＵ１３０１は、パーソナルコンピュータ１２００の動作を制御するために設けられたプロセッサであり、ＳＳＤ１から主メモリ１３０３にロードされるオペレーティングシステム（ＯＳ）を実行する。更に、ＯＤＤユニット１３１１が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ１３０１は、それらの処理の実行をする。
【０１６９】
また、ＣＰＵ１３０１は、ＢＩＯＳ−ＲＯＭ１３１０に格納されたシステムＢＩＯＳ（Basic  Input  Output  System）も実行する。尚、システムＢＩＯＳは、パーソナルコンピュータ１２００内のハードウェア制御のためのプログラムである。
【０１７０】
ノースブリッジ１３０２は、ＣＰＵ１３０１のローカルバスとサウスブリッジ１３０９との間を接続するブリッジデバイスである。ノースブリッジ１３０２には、主メモリ１３０３をアクセス制御するメモリコントローラも内蔵されている。
【０１７１】
また、ノースブリッジ１３０２は、ＡＧＰ（Accelerated  Graphics  Port）バス等を介してビデオコントローラ１３０４との通信、及びオーディオコントローラ１３０５との通信を実行する機能も有している。
【０１７２】
主メモリ１３０３は、プログラムやデータを一時的に記憶し、ＣＰＵ１３０１のワークエリアとして機能する。主メモリ１３０３は、例えばＲＡＭから構成される。
【０１７３】
ビデオコントローラ１３０４は、パーソナルコンピュータ１２００のディスプレイモニタとして使用される表示ユニット１２０２を制御するビデオ再生コントローラである。
【０１７４】
オーディオコントローラ１３０５は、パーソナルコンピュータ１２００のスピーカ１３０６を制御するオーディオ再生コントローラである。
【０１７５】
サウスブリッジ１３０９は、ＬＰＣ（Low  Pin  Count）バス１３１４上の各デバイス、及びＰＣＩ（Peripheral  Component  Interconnect）バス１３１５上の各デバイスを制御する。また、サウスブリッジ１３０９は、各種ソフトウェア及びデータを格納する記憶装置であるＳＳＤ１を、ＡＴＡインタフェースを介して制御する。
【０１７６】
パーソナルコンピュータ１２００は、セクタ単位でＳＳＤ１へのアクセスを行う。ＡＴＡインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がＳＳＤ１に入力される。
【０１７７】
また、サウスブリッジ１３０９は、ＢＩＯＳ−ＲＯＭ１３１０、及びＯＤＤユニット１３１１をアクセス制御するための機能も有している。
【０１７８】
ＥＣ／ＫＢＣ１３１２は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１２０６及びタッチパッド１２０７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。
【０１７９】
このＥＣ／ＫＢＣ１３１２は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ１２００の電源をＯＮ／ＯＦＦする機能を有している。ネットワークコントローラ１３１３は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【０１８０】
パーソナルコンピュータ１２００が搭載するＳＳＤ１は、上述した通り、リソースの整理が終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができる構成であるため、コマンドの実行時間の差が少なくなる、すなわちコマンドの応答時間に偏りができることを抑制できる。従って、パーソナルコンピュータ１２００を使用するユーザの利便性を向上させることが可能となる。
【０１８１】
なお、パーソナルコンピュータ１２００には、第２乃至第６の実施形態にて説明した何れのＳＳＤをも搭載することができ、ＳＳＤ１を搭載した場合と同等の効果を得ることができる。
【０１８２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１８３】
１、６、７、８、９  ＳＳＤ、２  ホスト装置、１０、６０、７０、８０、９０  制御部、１１、６１、７６、８１  リソース管理部、１２、６２、７２、８２、９２  転送速度設定部、１３、６３、７３、８３  転送制御部、１４、６７  アドレス変換テーブル、１５、６５、７５、８５、９５  モード記憶部、２０  ホストＩ／Ｆ、３０  バッファ、３１  ライトキャッシュ領域、５０  ＮＡＮＤメモリ、５１  メモリセルアレイ、５２  システム領域、５３  ユーザ領域、５４  スナップショット、５５  ログ、６４  テーブルポインタテーブル、６６  テーブル記憶領域、７１  ＮＡＮＤ管理部、８４−１  ブロック管理テーブル、８４−２  ページ管理テーブル、８６  キャッシュ領域、８７  ストレージ領域、９１  システム管理部、９６  システムキュー。
【図１】
0005535128.tif 000002
【図２】
0005535128.tif 000003
【図３】
0005535128.tif 000004
【図４】
0005535128.tif 000005
【図５】
0005535128.tif 000006
【図６】
0005535128.tif 000007
【図７】
0005535128.tif 000008
【図８】
0005535128.tif 000009
【図９】
0005535128.tif 000010
【図１０】
0005535128.tif 000011
【図１１】
0005535128.tif 000012
【図１２−１】
0005535128.tif 000013
【図１２−２】
0005535128.tif 000014
【図１３】
0005535128.tif 000015
【図１４】
0005535128.tif 000016
【図１５】
0005535128.tif 000017
【図１６】
0005535128.tif 000018
【図１７】
0005535128.tif 000019
【図１８】
0005535128.tif 000020
【図１９】
0005535128.tif 000021
【図２０】
0005535128.tif 000022
【図２１】
0005535128.tif 000023
【図２２−１】
0005535128.tif 000024
【図２２−２】
0005535128.tif 000025
【図２３】
0005535128.tif 000026
【図２４】
0005535128.tif 000027
【図２５】
0005535128.tif 000028
【図２６】
0005535128.tif 000029
【図２７】
0005535128.tif 000030
【図２８】
0005535128.tif 000031
【図２９】
0005535128.tif 000032
【図３０】
0005535128.tif 000033
【図３１】
0005535128.tif 000034
【図３２】
0005535128.tif 000035