メモリシステム
【課題】リソースの整理時における応答時間の増大を低減する。
【解決手段】メモリシステムは、不揮発性メモリと、前記不揮発性メモリのリソースの使用量が所定量に達したとき前記不揮発性メモリのリソースを整理してリソースを増加させるリソース管理部と、ホスト装置から受信した書き込みデータの転送速度の設定値を算出する転送速度設定部と、前記ホスト装置から受信した書き込みデータを前記転送速度設定部が算出した設定値の転送速度で前記不揮発性メモリに転送する転送制御部と、を備える。前記転送速度設定部は、前記不揮発性メモリのリソースの使用量が増加するほど低い設定値を算出し、前記リソース管理部は、前記転送制御部が前記転送速度の設定値で前記書き込みデータを転送することにより生じた待ち時間を利用して前記不揮発性メモリのリソースを整理する。
【解決手段】メモリシステムは、不揮発性メモリと、前記不揮発性メモリのリソースの使用量が所定量に達したとき前記不揮発性メモリのリソースを整理してリソースを増加させるリソース管理部と、ホスト装置から受信した書き込みデータの転送速度の設定値を算出する転送速度設定部と、前記ホスト装置から受信した書き込みデータを前記転送速度設定部が算出した設定値の転送速度で前記不揮発性メモリに転送する転送制御部と、を備える。前記転送速度設定部は、前記不揮発性メモリのリソースの使用量が増加するほど低い設定値を算出し、前記リソース管理部は、前記転送制御部が前記転送速度の設定値で前記書き込みデータを転送することにより生じた待ち時間を利用して前記不揮発性メモリのリソースを整理する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【0002】
従来、コンピュータシステムに用いられる外部記憶装置として、NAND型の不揮発性素子からなるメモリセルアレイを搭載したSSD(Solid State Drive)が注目されている。フラッシュメモリは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
【0003】
またSSDは、更新データをメモリセルアレイのブロックへページ単位で記録し、利用可能なブロックが枯渇したとき、データの整理を行って利用可能なブロックを生成するガベージコレクションと呼ばれる処理を実行する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−211231号公報
【特許文献2】特開2010−157139号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の一つの実施形態は、リソースの整理時における応答時間の増大を低減したメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の一つの実施形態によれば、メモリシステムは、ホスト装置から書き込み要求されたデータを記憶する不揮発性メモリと、前記不揮発性メモリにかかるリソースの使用量が所定量に達したとき前記不揮発性メモリにかかるリソースを整理してリソースを増加させるリソース管理部と、前記ホスト装置から書き込みデータを受信する転送速度の設定値を算出する転送速度設定部と、前記ホスト装置から書き込みデータを受信して、当該受信した書き込みデータを前記不揮発性メモリに転送する転送制御部と、を備える。前記転送速度設定部は、前記不揮発性メモリにかかるリソースの使用量が増加するほど低い設定値を算出し、前記転送制御部は、前記リソース管理部がリソースを整理している間、前記ホスト装置からの書き込みデータの受信を前記転送速度設定部が算出した設定値の転送速度で実行する。
【図面の簡単な説明】
【0007】
【図1】図1は、本発明の実施形態のSSDの構成を示すブロック図である。
【図2】図2は、ガベージコレクションを説明するための概念図である。
【図3】図3は、本発明の実施形態における使用ブロック数と転送速度との関係を説明する図である。
【図4】図4は、SSDの転送速度の推移を説明する図である。
【図5】図5は、転送速度設定部の動作を説明するフローチャートである。
【図6】図6は、リソース管理部がガベージコレクションを実行/停止する動作を説明するフローチャートである。
【図7】図7は、転送制御部の動作を説明するフローチャートである。
【図8】図8は、コマンドの受信間隔時間に応じて転送速度およびしきい値を変化させる場合の転送速度およびしきい値を説明する図である。
【図9】図9は、転送速度設定部が各モードと転送速度との関係およびしきい値を決定する動作を説明するフローチャートである。
【図10】図10は、第2の実施形態のSSDの構成を示すブロック図である。
【図11】図11は、アドレス変換テーブル67のデータ構成例を説明する図である。
【図12−1】図12−1は、テーブル記憶領域におけるガベッジコレクションの概念を説明する図である。
【図12−2】図12−2は、テーブル記憶領域におけるガベッジコレクションの概念を説明する図である。
【図13】図13は、第2の実施形態におけるテーブル記憶領域の使用ブロック数と転送速度との関係を説明する図である。
【図14】図14は、転送速度設定部の動作を説明するフローチャートである。
【図15】図15は、リソース管理部がガベージコレクションを実行/停止する動作を説明するフローチャートである。
【図16】図16は、本発明の第3の実施形態のSSDの構成を示すブロック図である。
【図17】図17は、ライトキャッシュ領域の使用率と転送速度との関係を説明する図である。
【図18】図18は、転送速度設定部の動作を説明するフローチャートである。
【図19】図19は、リソース管理部が書き込みデータをNANDメモリへ退避させる動作を説明するフローチャートである。
【図20】図20は、転送制御部がデータ転送を行う動作を説明するフローチャートである。
【図21】図21は、第4の実施形態のSSDの構成を示すブロック図である。
【図22−1】図22−1は、NAND整理の処理を説明する図である。
【図22−2】図22−2は、NAND整理の処理を説明する図である。
【図23】図23は、ページ管理テーブルのサイズと転送速度との関係を説明する図である。
【図24】図24は、転送速度設定部の動作を説明するフローチャートである。
【図25】図25は、リソース管理部がNAND整理の処理を開始/停止する動作を説明するフローチャートである。
【図26】図26は、第5の実施形態のSSDの構成を示すブロック図である。
【図27】図27は、システムキュー内のデータ量と転送速度との関係を説明する図である。
【図28】図28は、転送速度設定部の動作を説明するフローチャートである。
【図29】図29は、システム管理部がシステム処理の処理を開始/停止する動作を説明するフローチャートである。
【図30】図30は、ホスト装置からの書き込みデータがライトキャッシュ領域31に格納されるまでの動作を説明するシーケンス図である。
【図31】図31は、パーソナルコンピュータの外観を示す斜視図である。
【図32】図32は、パーソナルコンピュータの機能構成例を示す図である。
【発明を実施するための形態】
【0008】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。なお、以下の実施形態では、本発明の実施形態にかかるメモリシステムをSSDに適用した例について説明するが、当該メモリシステムの適用対象はSSDに限定されない。
【0009】
(第1の実施形態)
図1は、本発明の第1の実施形態のSSDの構成を示すブロック図である。図示するように、SSD1は、パーソナルコンピュータなどのホスト装置2とATA(Advanced Technology Attachment)規格などの通信インタフェースで接続され、ホスト装置2の外部記憶装置として機能する。SSD1がホスト装置2から受信する読み出し/書き込み要求は、ホストアドレス(例えばLBA:Logical Block Addressing)と読み出し/書き込み要求するデータのサイズ(例えばセクタ数、1セクタは例えば512バイト)とが含まれている。
【0010】
SSD1は、制御部10、ホストインタフェース(I/F)20、バッファ30、NANDI/F40、およびNANDメモリ50を備えている。
【0011】
ホストI/F20は、制御部10の制御の下、ホスト装置2との通信を制御する。制御部10は、ホストI/F20を介してホスト装置2から送信されたコマンドを解釈し、当該コマンドに応じて、NANDメモリ50へのデータの書き込みやNANDメモリ50からのデータの読み出しを制御する。
【0012】
NANDI/F40は、NANDメモリ50の制御を行うものであり、誤り訂正回路などを含む。
【0013】
バッファ30は、例えばDRAM(Dynamic Random Access Memory)などにより構成され、ホスト装置2とNANDメモリ50との間のデータ転送のためのバッファとして用いられる。特に、バッファ30は、ホスト装置2からホストI/F20を介して受信した書き込みデータをキャッシュするライトキャッシュ領域31を備えている。ライトキャッシュ領域31にキャッシュされている書き込みデータは、ホスト装置2からフラッシュコマンド、スリープコマンド、もしくはスタンバイコマンドなど、ライトキャッシュ領域31内のデータの不揮発化を促すコマンド(以下、フラッシュコマンドと総称する)を受信したとき、またはホスト装置2からの指示とは別にライトキャッシュ領域31がデータ溢れするなどの予め定められたタイミングで、NANDI/F40を介してNANDメモリ50に退避される。
【0014】
NANDメモリ50は、NAND型の不揮発性記憶素子からなるメモリセルアレイ51を備えている。NANDメモリ50は、ページと呼ばれる単位で読み書きが可能となっている。そして、複数のページがまとまってブロックと呼ばれる消去単位の記憶領域が構成される。1ページのサイズは例えば4KBであり、64ページで1ブロックを構成する。メモリセルアレイ51はこのブロックが複数集まって構成される。
【0015】
ここで、NANDメモリ50への書き込み方式について説明する。NAND型のメモリセルアレイ51では、例えば以下に述べる方式が採用されている。まず、書き込みの前に、ブロックを消去する必要がある。すなわち、NANDメモリ50においては、消去済みのブロックのうち書き込みがまだ行われていないページに対して順次書き込みが可能であり、既に書き込みが行なわれたページに対する上書きが不可能である。また、ホスト装置2からの要求に応じたデータの書き込みは、ホスト装置2で用いられる論理アドレス(LBA)で指定される。一方、NANDメモリ50へのデータ書き込みは、NANDメモリ50の物理的な記憶位置(物理アドレス)により、論理アドレスとは無関係に、ページの昇順に書き込みが行なわれる。この論理アドレスと物理アドレスとの対応関係は、後述するアドレス変換テーブル14としてSSD1内に保持される。そして、データの書き込み要求において指定された論理アドレスが再度指定されて新たなデータの書き込みがホストから要求されると、SSD1は、消去済みのブロックのうちの書き込みがまだ行なわれていないページに対して新たなデータの書き込みを行う。このとき、当該論理アドレスに対応して前回書き込みが行われたページを無効にして、新たなデータの書き込みが行われたページを有効にする。
【0016】
この追記方式において、書き込みを続けることにより、書き込み処理に利用可能なブロック(空きブロック)が少なくなるとともに無効にされたページが増えてくると、NANDメモリ50において書き込み可能な容量が少なくなってくる。そのため、SSD1は、適当なタイミングでガベージコレクションを行なう。図2は、ガベージコレクションを説明するための概念図である。SSD1は、無効にされたページを含むブロックのうち、無効にされていない物理アドレスに書き込まれたデータ(有効データという)を集めて新たに空きブロックに書き直すことにより、有効データを移動させる。その後、SSD1は、当該ブロックに対して消去を行うことにより、新たな空きブロックを生成する。SSD1は、このようなガベージコレクションを行なうことにより、書き込みが不能になったブロックが新たに書き込み可能になって、空きブロックを確保することが可能になる。また、移動により有効データが書き込まれたブロックにおいても、書き込みがまだ行なわれていないページがあればそのページに新たに書き込みが可能である。
【0017】
ここで、ガベージコレクションを実行するためには1回以上のコピーが発生する。また、ブロック内の有効データが配置されている状況によってはコピー回数がさらに増加し、ホスト装置2からのアクセスに局所性が存在しない場合には非常に膨大なコピー回数になってしまう。また、ブロックの使用量は、有効データが少ないブロックが多い場合には一度のガベージコレクションで多くの使用ブロック数が減り、有効データ量が多いブロックが多い場合には一度のガベージコレクションでは使用ブロック数が減らない場合が存在する。つまり、有効データの少ないブロックが多いかどうかでコピー回数が変化する。このように、有効データの少ないブロックの量が少ない場合には、ガベージコレクションによる空きブロックの生成に非常に長い時間がかってしまい、結果としてホスト装置2からのコマンドを待たせてしまう状況が発生する。
【0018】
そこで、本発明の実施形態においては、使用ブロック(有効データが記録されているブロック)の数に応じて段階的にホスト装置2との間の転送速度を制限する。転送速度の制限は、データ転送に待ち時間を挿入することによって行われる。例えば、ホスト装置2からのデータ転送コマンドの実行時に待ち時間が挿入される。
【0019】
図3は、本発明の実施形態における使用ブロック数と転送速度との関係を説明する図である。本図において、紙面右方向ほど使用ブロック数が多く、空きブロック数が少ない。図示するように、転送速度は、rmax、r1、r2、およびrminを取りうる。rmaxは全く制限されていない状態における転送速度、rminは最悪応答時間に基づいて決まる転送速度であり、夫々の転送速度の間には、rmax>r1>r2>rminの関係がある。rmax、r1、r2、rminのうちどの転送速度でデータ転送を実行するかは、使用ブロック数と所定のしきい値との比較に基づいて決定される。rmax、r1、r2、rminの転送速度が定められたモードを夫々モード0、モード1、モード2、モード3ということにすると、モード0からモード1への遷移、モード1からモード2への遷移、モード2からモード3への遷移は、使用ブロック数としきい値T1、T2、Tlimitとの比較に基づいて決められる。また、モード3からモード2への遷移、モード2からモード1への遷移、モード1からモード0への遷移は、使用ブロック数としきい値Tlimit、T3、T4との比較に基づいて決められる。なお、T4<T1<T3<T2<Tlimitとする。このようにモードの遷移の判断のためのしきい値にヒステリシス特性を持たせたのは、しきい値の付近で使用ブロック数が推移することによりモードの切り替えが頻発することを防止するためである。なお、しきい値にヒステリシス特性を持たせなくても構わない。
【0020】
図4は、図3に示した関係を用いて転送速度が決定される場合のSSD1の転送速度の推移を説明する図である。図示するように、SSD1によれば、ガベージコレクションが開始されることにより最初からrminまで転送速度が低下するのではなく、使用ブロック数が増加するにつれて転送速度がr1、r2と段階的に低下して、使用ブロック数が減少するにつれて転送速度がr1、rmaxに段階的に回復してゆく。
【0021】
このように、本発明の実施形態によれば、ガベージコレクションによる空きブロックの生成速度とデータ書き込みによる空きブロックの消費速度とのバランスに基づいて転送速度の設定値が決定されるので、ガベージコレクションが完了するまでホスト装置2との間の転送にかかる処理を停止する場合に比べてホスト装置2からのコマンドが端的に待たされる状況を防ぐことができる。
【0022】
図1に戻り、メモリセルアレイ51には、SSD1の制御にかかる各種情報が格納されるシステム領域52およびホスト装置2からの書き込みデータが格納されるユーザ領域53が確保されている。
【0023】
制御部10は、SSD1全体の動作の制御を実行する。具体的には、制御部10は、リソース管理部11、転送速度設定部12、転送制御部13、アドレス変換テーブル14およびモード記憶部15を備えている。
【0024】
アドレス変換テーブル14は、前述のように、論理アドレスと物理アドレスとの対応関係を記述したテーブルであって、例えばDRAMやSRAM(Static Random Access Memory)などの記憶装置により保持される。
【0025】
転送速度設定部12は、ユーザ領域53内の使用ブロック数と図3に示したしきい値とを用いて転送速度の設定値を算出する。ここでは、図3に示すように、しきい値の特性にヒステリシスを持たせているので、転送速度設定部12は、モード記憶部15にモードを記憶させておき、当該モード記憶部が記憶しているモードとしきい値とに基づいて現在のモードを求め、前記モード記憶部15の記憶内容を当該求めた現在のモードで更新するとともに当該求めた現在のモードに対応する転送速度の設定値を算出する。なお、モード記憶部15は、小規模なメモリやレジスタなどに保持されるようにしてもよいし、アドレス変換テーブル14が保持される記憶装置内に保持されるようにしてもよい。
【0026】
転送制御部13は、ホストI/F20およびNANDI/F40を制御して、ホスト装置2とNANDメモリ50との間のデータ転送を制御する。ホスト装置2から書き込みデータの受信を行う際、転送制御部13は、転送速度設定部12が算出した転送速度の設定値と書き込みデータのサイズとに基づいて待ち時間を算出し、ホストI/F20とホスト装置2との間のデータ転送に当該算出した待ち時間を挿入することによってホスト装置2からの書き込みデータの転送速度を前記転送速度の設定値に制限する。書き込みデータのサイズによらず当該データの転送速度を一定にするためである。
【0027】
また、転送制御部13は、ホスト装置2からフラッシュコマンドを受信したとき、またはライトキャッシュ領域31が溢れるなどのタイミングで、ライトキャッシュ領域31にキャッシュされている書き込みデータをNANDメモリ50へ退避させる。当該退避対象の書き込みデータはメモリセルアレイ51に確保されたユーザ領域53に書き込まれる。そして、転送制御部13は、受信したフラッシュコマンドの実行を完了した旨の通知をホストI/F20を介してホスト装置2へ送信する。ここで、転送制御部13は、転送速度設定部12が算出した転送速度の設定値と退避対象のデータのサイズとに基づいて待ち時間を算出し、フラッシュコマンドを受信してから当該算出した待ち時間が経過した後、前記フラッシュコマンドの実行を完了した旨の通知(実行完了通知)をホスト装置2へ送信する。すなわち、転送速度設定部12は、フラッシュコマンドの実行が完了した後、しばらくしてからフラッシュコマンドの実行完了通知をホスト装置2へ送信する。
【0028】
なお、転送制御部13は、算出した待ち時間がフラッシュコマンドの実行にかかる時間よりも小さい場合、実際にフラッシュコマンドを実行完了した後に実行完了通知を送信してもよく、算出した待ち時間が経過した後に実行完了通知をホスト装置2へ送信してもよい。また、フラッシュコマンドを実行時に空きブロックが枯渇してガベージコレクションが完了するまでフラッシュコマンドの実行が待たされることを防止するために、メモリセルアレイ51内に、ライトキャッシュ領域31と等しいサイズの特別な領域(緊急退避用領域)を確保するようにしてもよい。
【0029】
例えば、算出した待ち時間が最悪応答時間を越えたとき、転送制御部13は、ライトキャッシュ領域31内のデータを当該緊急退避用領域内にそのままコピーし、最悪応答時間が経過したときに実行完了通知を送信する。緊急退避用領域を一度使ってしまうと次の緊急時に対応できなくなるため、一時的にモード3へ移行し、緊急退避用領域を確保できてから元のモードへ戻るなどの処理を行うことが望ましい。これにより、ライトキャッシュ内にデータが存在しないため、緊急退避用領域を使用する状況を抑制できる。なお、緊急退避用領域を特別に設けることをせず、全ブロック数からTlimitを減算して得られる数の領域を緊急退避用領域として使用するようにしてもよい。
【0030】
転送制御部13は、ライトキャッシュ領域31からNANDメモリ50へのデータ転送を実行する際、退避対象の書き込みデータのLBAとメモリセルアレイ51の物理アドレスとの対応関係をアドレス変換テーブル14に登録する。
【0031】
リソース管理部11は、ホスト装置2からの書き込みデータがライトキャッシュ領域31に転送されている最中に、またはフラッシュコマンドを受信してから実行完了通知が送信されるまでの間においてフラッシュコマンドが実行されていない間に、ガベージコレクションを実行することができる。
【0032】
また、リソース管理部11は、アドレス変換テーブル14を不揮発性のNANDメモリ50に保存するために、スナップショットをとる機能を有している。スナップショット54は、NANDメモリ50に格納されたアドレス変換テーブル14のコピーであり、制御部10が備えるアドレス変換テーブル14をNANDメモリ50内のシステム領域52に保存することを、スナップショットをとると表現している。
【0033】
ログ55は、アドレス変換テーブル14の差分情報である。アドレス変換テーブル14の更新の度にスナップショットをとっていたのでは、NANDメモリ50への書き込み回数が増えるために、通常は差分情報としてのログ55だけをシステム領域52に記録していく。ログ55を保持できるサイズは有限であるため、リソース管理部11は、所定量のログ55が蓄積されたとき、ログ55をアドレス変換テーブル14に反映させるとともにスナップショットをとって、蓄積されたログ55を削除する処理を実行する。生成されたスナップショット54は、蓄積されたログ55が反映されたものとなる。なお、ログ55はNANDメモリ50ではなくアドレス変換テーブル14を保持する記憶装置などに置かれるようにしてもよい。
【0034】
次に、本発明の実施形態のSSDの動作を説明する。図5は、転送速度設定部12の動作を説明するフローチャートである。
【0035】
図5に示すように、まず、転送速度設定部12は、ユーザ領域53内の使用ブロック数を取得する(ステップS1)。ユーザ領域53内の使用ブロック数は、例えばアドレス変換テーブル14に基づいて求めることができる。
【0036】
そして、転送速度設定部12は、モード記憶部15が記憶しているモードがモード0であるか否か(ステップS2)、モード1であるか否か(ステップS3)、またはモード2であるか否か(ステップS4)を判定する。
【0037】
モード記憶部15にモード0を記憶していた場合(ステップS2、Yes)、転送速度設定部12は、取得した使用ブロック数がしきい値T1以上の値であるか否かを判定する(ステップS5)。使用ブロック数がT1以上であった場合(ステップS5、Yes)、転送速度設定部12は、モード記憶部15が記憶している値をモード1で上書きする(ステップS6)。そして、転送速度設定部12は、モード記憶部15が記憶しているモードに応じた転送速度を設定値とする(ステップS17)。転送速度の設定値は、転送制御部13に通知される。ステップS17の処理が完了すると、ステップS1へ移行する。取得した使用ブロック数がしきい値T1以上の値ではなかった場合(ステップS5、No)、ステップS6がスキップされてステップS17に移行する。
【0038】
モード記憶部15にモード1を記憶していた場合(ステップS3、Yes)、転送速度設定部12は、取得した使用ブロック数がしきい値T2以上の値であるか否かを判定する(ステップS7)。使用ブロック数がT2以上であった場合(ステップS7、Yes)、転送速度設定部12は、モード記憶部15が記憶している値をモード2で上書きし(ステップS8)、ステップS17に移行する。取得した使用ブロック数がしきい値T2以上の値ではなかった場合(ステップS7、No)、転送速度設定部12は、取得した使用ブロック数がしきい値T4以下の値であるか否かを判定する(ステップS9)。使用ブロック数がしきい値T4以下の値であった場合(ステップS9、Yes)、転送速度設定部12は、モード記憶部15が記憶している値をモード0で上書きし(ステップS10)、ステップS17に移行する。使用ブロック数がしきい値T4以下の値ではなかった場合(ステップS9、No)、ステップS10がスキップされてステップS17に移行する。
【0039】
モード記憶部15にモード2を記憶していた場合(ステップS4、Yes)、転送速度設定部12は、取得した使用ブロック数がしきい値Tlimit以上の値であるか否かを判定する(ステップS11)。使用ブロック数がTlimit以上であった場合(ステップS11、Yes)、転送速度設定部12は、モード記憶部15が記憶している値をモード3で上書きし(ステップS12)、ステップS17に移行する。取得した使用ブロック数がしきい値Tlimit以上の値ではなかった場合(ステップS11、No)、転送速度設定部12は、取得した使用ブロック数がしきい値T3以下の値であるか否かを判定する(ステップS13)。使用ブロック数がしきい値T3以下の値であった場合(ステップS13、Yes)、転送速度設定部12は、モード記憶部15が記憶している値をモード1で上書きし(ステップS14)、ステップS17に移行する。使用ブロック数がしきい値T3以下の値ではなかった場合(ステップS13、No)、ステップS14がスキップされてステップS17に移行する。
【0040】
モード記憶部15に記憶されていたモードがモード0〜2のいずれでもない場合(ステップS2、No、ステップS3、No、ステップS4、No)は、モード記憶部15にはモード3が記憶されている。その場合、転送速度設定部12は、取得した使用ブロック数がしきい値Tlimit以下の値であるか否かを判定する(ステップS15)。使用ブロック数がTlimit以下であった場合(ステップS15、Yes)、転送速度設定部12は、モード記憶部15が記憶している値をモード2で上書きし(ステップS16)、ステップS17に移行する。使用ブロック数がしきい値Tlimit以下の値ではなかった場合(ステップS15、No)、ステップS16がスキップされてステップS17に移行する。
【0041】
図6は、リソース管理部11がガベージコレクションを実行/停止する動作を説明するフローチャートである。図示するように、まず、リソース管理部11は、モード記憶部15がモード0を記憶しているか否かを判定する(ステップS21)。モード記憶部15がモード0を記憶していない場合(ステップS21、No)、リソース管理部11はガベージコレクションを開始する(ステップS22)。モード記憶部15がモード0を記憶している場合(ステップS21、Yes)、リソース管理部11は、モード記憶部15の記憶内容がモード0でなくなるまでステップS21の判定処理を継続する。
【0042】
リソース管理部11は、ガベージコレクションを開始後、再びモード記憶部15がモード0を記憶しているか否かを判定する(ステップS23)。モード記憶部15がモード0を記憶している場合(ステップS23、Yes)、リソース管理部11はガベージコレクションを停止して(ステップS24)、ステップS21の判定処理を実行する。ステップS23においてモード記憶部15がモード0を記憶していない場合(ステップS23、No)、リソース管理部11は、モード記憶部15の記憶内容がモード0となるまでステップS23の判定処理を継続する。
【0043】
図7は、転送制御部13の動作を説明するフローチャートである。図示するように、まず、転送制御部13は、書き込みコマンドを受信したか否かを判定する(ステップS31)。書き込みコマンドを受信していない場合(ステップS31、No)、転送制御部13は、フラッシュコマンドを受信したか否かを判定する(ステップS32)。フラッシュコマンドを受信していない場合(ステップS32、No)、転送制御部13は、ステップS31の判定処理を実行する。
【0044】
ステップS31において、書き込みコマンドを受信したと判定した場合(ステップS31、Yes)、転送制御部13は、書き込みコマンドにより書き込み要求されたデータのサイズと転送速度設定部12が算出した転送速度の設定値とに基づいて待ち時間を算出する(ステップS33)。具体的には、転送制御部13は下記の式1に基づいて待ち時間を算出する。
サイズ/(実行時間+待ち時間)=転送速度の設定値 (1)
ここで、式(1)における実行時間とは、転送速度rmaxで当該書き込み要求されたデータを転送したときの実行時間を指す。なお、実行時間をゼロ値として待ち時間を算出するようにしてもよい。この場合、必要以上に待ち時間をデータ転送に挿入するとなり、ガベージコレクションをできる量が変わるが、ガベージコレクション対象の量は変わらないので概ね同じ時間でモード0に戻すことができる。
【0045】
ステップS33の後、転送制御部13は、前記書き込み要求されたデータのデータ転送中にステップS33にて算出した待ち時間を挿入することによって、前記書き込み要求されたデータのデータ転送を転送速度の設定値で実行する(ステップS34)。転送制御部13は、ステップS34のデータ転送が完了すると、ステップS31の判定処理を実行する。
【0046】
ステップS32において、フラッシュコマンドを受信したと判定した場合(ステップS32、Yes)、転送制御部13は、ライトキャッシュ領域31にキャッシュされている退避対象のデータのサイズと転送速度設定部12が算出した転送速度の設定値とに基づいて待ち時間を算出する(ステップS35)。具体的には、転送制御部13は下記の式2に基づいて待ち時間を算出する。
サイズ/待ち時間=転送速度の設定値 (2)
【0047】
ステップS35の後、転送制御部13は、フラッシュコマンドを実行し、当該フラッシュコマンドを受信してからステップS35にて算出した待ち時間が経過した後にフラッシュコマンドを実行完了した旨の通知をホスト装置2へ送信する(ステップS36)。そして、転送制御部13は、ステップS31の判定処理を実行する。
【0048】
なお、以上の説明においては、使用ブロック数と所定のしきい値との比較に基づいて転送速度の設定値を算出するとして説明したが、空きブロック数としきい値とを比較することによっても同様の動作および効果を実現することができることはいうまでもない。また、転送速度の設定値の算出のために使用ブロック数以外のリソース量を用いることができる。使用可能な他のリソース量としては、例えばシステム領域52の使用可能サイズが挙げられる。システム領域52のうちの使用可能なサイズは、ログ55の量が多くなった場合に少なくなってくる。リソース管理部11は、システム領域52の使用サイズが所定量に達したとき、ログ55をスナップショット54に反映させて、反映済みのログ55を消去し、システム領域52の使用可能サイズを整理するようにするとよい。
【0049】
このように、本発明の実施形態によれば、NANDメモリ50にかかるリソースの使用量が所定量に達したときNANDメモリ50にかかるリソースを整理してリソースを増加させるリソース管理部11と、ホスト装置2からの書き込みデータの受信にかかる転送速度の設定値を算出する転送速度設定部12と、ホスト装置2から書き込みデータを受信して、受信した書き込みデータをNANDメモリ50に転送する転送制御部13と、を備え、転送速度設定部12は、NANDメモリ50のリソースの使用量が増加するほど低い設定値を算出し、転送制御部13は、リソース管理部11がリソースを整理している間、前記ホスト装置2からの書き込みデータの受信を転送速度設定部12が算出した設定値の転送速度で実行する、ように構成したので、リソースの整理が終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができるようになる。
【0050】
また、転送制御部13は、フラッシュコマンドを受信したとき、ライトキャッシュ領域31にキャッシュされている退避対象のデータのサイズと転送速度の設定値とに基づいて待ち時間を算出し、フラッシュコマンドを受信してから当該算出した待ち時間が経過した後に前記受信したフラッシュ要求に対する実行完了通知をホスト装置2に送信する、ように構成したので、フラッシュコマンドを受信した際においてもガベージコレクションを実行することができるので、当該フラッシュコマンドの実行完了後に書き込みコマンドを受信したとき、空きブロックの枯渇を抑制し、結果として当該書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができる。
【0051】
なお、転送速度設定部12は、転送速度の設定値を算出するために使用するしきい値および/または転送速度の値をコマンドの受信間隔に応じて変化させるようにしてもよい。図8は、コマンドの受信間隔時間に応じて転送速度およびしきい値を変化させる場合の転送速度およびしきい値を説明する図である。図示するように、コマンドの受信間隔時間がtthよりも大きいとき、r1としてr1a、r2としてr2a、T1としてT1a、T2としてT2a、T3としてT3a、TlimitとしてTlimitaが使用される。
【0052】
また、コマンドの受信間隔時間がtthよりも小さいとき、r1としてr1b、r2としてr2b、T1としてT1b、T2としてT2b、T3としてT3b、TlimitとしてTlimitbが使用される。ただし、rmax>r1a>r2a>rmin、T4a<T1a<T3a<T2a<Tlimita、rmax>r1b>r2b>rmin、T4b<T1b<T3b<T2b<Tlimitb、r1b<r1a、r2b<r2a、T1b<T1a、T2b<T2b、T3b<T3a、T4b<T4a、Tlimitb<Tlimitaの関係は保たれる。
【0053】
そして、転送速度設定部12は、図9のフローチャートに示す動作により各モードと転送速度との関係およびしきい値を決定する。すなわち、ステップS41において、転送速度設定部12は、コマンドの受信間隔時間がtthより大きいか否かを判定する(ステップS41)。
【0054】
コマンドの受信間隔時間がtthより小さい場合(ステップS41、No)、モードを決定するためのしきい値としてT1a、T2a、T3aおよびTlimitaを用い、モード0、1、2、3時の転送速度を夫々rmax、r1a、r2a、rminとする(ステップS42)。
【0055】
コマンドの受信間隔時間がtthより大きい場合(ステップS41、Yes)、モードを決定するためのしきい値としてT1b、T2b、T3bおよびTlimitbを用い、モード0、1、2、3時の転送速度を夫々rmax、r1b、r2b、rminとする(ステップS43)。
【0056】
ステップS42またはステップS43の後、ステップS41に移行する。なお、コマンドの受信間隔時間とは、コマンド受信時における前回受信したコマンドからの経過時間であってもよいし、コマンドの受信間隔を複数回記録しておき、当該記録しておいた受信間隔の平均値であってもよい。
【0057】
このように、コマンドの受信間隔が大きい場合には、ホスト装置2にとって応答時間が大きくなっても次のコマンドの実行を待たせる可能性が少ないので、SSD1は転送速度を遅くしてガベージコレクションに割く時間を多くすることができ、結果として速くガベージコレクションを完了することができる。また、コマンドの受信間隔が小さい場合には、ホスト装置2にとって高速な応答時間が求められるので、SSD1はガベージコレクションに割く時間を減らして転送速度を速くすることができる。
【0058】
また、コマンドの受信間隔が大きい場合にしきい値(特にT4)を小さくすることによって、受信間隔が小さくなる場合に備えて多めに空きブロックの量を確保しておくことができる。これによって、受信間隔が小さくなったときにおける転送速度を制限する機会を低減することができるようになる。
【0059】
(第2の実施形態)
第1の実施形態においては、NANDメモリ内に確保されたユーザ領域を転送速度を決定するためのリソースとみなすようにしたが、第2の実施形態においては、システム領域をリソースとしてみなすようにする。
【0060】
図10は、本発明の第2の実施形態のSSDの構成を示すブロック図である。ここでは、第1の実施形態と同じ構成要素には同一の符号を付し、重複する説明を省略する。
【0061】
図示するように、SSD6は、制御部60、ホストインタフェース(I/F)20、バッファ30、NANDI/F40、およびNANDメモリ50を備えている。
【0062】
NANDメモリ50は、NAND型の不揮発性記憶素子からなるメモリセルアレイ51を備えている。メモリセルアレイ51には、システム領域52およびユーザ領域53が確保されている。そして、第2の実施形態によれば、システム領域52には、アドレス変換テーブル67が格納されるテーブル記憶領域66が確保されている。アドレス変換テーブル67は、ユーザ領域53に格納されているデータにかかる論理アドレスと物理アドレスとの対応関係を記述したテーブルである。なお、テーブル記憶領域66は、複数のブロックを備えて構成される。
【0063】
図11は、アドレス変換テーブル67のデータ構成例を説明する図である。図示するように、当該テーブル67によれば、論理アドレスと物理アドレスとが対となったエントリが複数登録されて構成される。なお、アドレス変換テーブル67は、論理アドレスが連続するように夫々のエントリが登録されているものとする。
【0064】
本発明の第2の実施形態によれば、アドレス変換テーブル67はNANDメモリ50上に置かれるようにしているため、アドレス変換テーブル67は、追記により内容の更新が実行される。即ち、アドレス変換テーブル67が更新される際、更新部分の新しい方の内容が空きブロックの書き込みがまだ行われていないページに対して追記される。アドレス変換テーブル67は、更新単位となるサイズ毎に複数のテーブル(更新単位テーブルa、更新単位テーブルb、等)に分割されている。更新単位のサイズには、例えばページサイズやページサイズの自然数倍が採用される。また、更新単位のサイズを、更新単位テーブル毎のエントリ数が所定の数(例えば2のべき乗個)となるように定めるようにしてもよい。
【0065】
ここで、アドレス変換テーブル67の更新が行われるにつれて、追記により無効となった更新単位テーブルが増加し、利用可能な領域が減少する。そこで、テーブル記憶領域66についてもガベッジコレクションが行われる。図12−1および図12−2は、テーブル記憶領域66におけるガベッジコレクションの概念を説明する図である。
【0066】
図12−1は、ガベッジコレクション前のテーブル記憶領域66の状態を示している。ここでは、一例として、テーブル記憶領域66は3つのブロック66a〜66cを備えており、アドレス変換テーブル67は4つの更新単位テーブルa〜dに分割されているものとしている。図示するように、ブロック66a〜66cのうちのブロック66aおよびブロック66bを使用して更新単位テーブルa〜dの内容が保持されている。テーブル記憶領域66の記憶内容のうち、8個の更新単位テーブルの内容が無効となっている。また、有効な更新単位テーブルbおよび有効な更新単位テーブルcがブロック66aに格納されており、有効な更新単位テーブルaおよび有効な更新単位テーブルdがブロック66bに格納されている。
【0067】
更新単位テーブルa〜dの夫々にかかる有効な内容の格納位置は、テーブルポインタテーブル64に含まれるポインタにより特定できるようになっている。本図の例においては、テーブルポインタテーブル64に含まれる夫々のポインタは、ポインタの検索のためのインデックスとして用いられる論理アドレスが対応付けられている。当該インデックスとしての論理アドレスは、例えば、対応する更新単位テーブルに含まれているエントリのうちの、先頭のエントリに含まれる論理アドレスと等しい。または、更新単位テーブルを構成するエントリに含まれる夫々の論理アドレスに共通する上位のビット列をインデックスとしてテーブルポインタテーブル64に登録しておくようにしてもよい。
【0068】
図12−2は、ガベッジコレクション後のテーブル記憶領域66の状態を示している。図示するように、ガベッジコレクション後には、ブロック66aに格納されていた有効な更新単位テーブルbおよび有効な更新単位テーブルcと、ブロック66bに格納されていた有効な更新単位テーブルaおよび有効な更新単位テーブルdとが夫々ブロック66cにコピーされ、ブロック66aおよびブロック66bの記憶内容が消去されている。また、有効な更新単位テーブルのコピーに伴って、テーブルポインタテーブル64に含まれているポインタの内容が更新されている。ガベッジコレクションが行われることにより、無効な更新単位テーブルにかかる内容が消去されて、利用可能な記憶容量がガベッジコレクション前よりも増加している。
【0069】
図10に戻り、制御部60は、リソース管理部61、転送速度設定部62、転送制御部63、テーブルポインタテーブル64、およびモード記憶部65を備えている。
【0070】
テーブルポインタテーブル64は、前述のように、更新単位テーブル毎の記憶位置を示すポインタの一覧により構成されるテーブルであって、例えばDRAMやSRAM(Static Random Access Memory)などの揮発性の記憶装置により保持される。
【0071】
転送速度設定部62は、テーブル記憶領域66の使用ブロック数に基づいてホスト装置2との間の転送速度の設定値を算出する。
【0072】
図13は、第2の実施形態におけるテーブル記憶領域66の使用ブロック数と転送速度との関係を説明する図である。本図において、紙面右方向ほど使用ブロック数が多く、空きブロック数が少ない。図示するように、転送速度は、rmax、r1、r2、およびrminを取りうる。rmaxは全く制限されていない状態における転送速度、rminは最悪応答時間に基づいて決まる転送速度であり、夫々の転送速度の間には、rmax>r1>r2>rminの関係がある。転送速度設定部62は、rmax、r1、r2、rminのうちどの転送速度でデータ転送を実行するかを、使用ブロック数と所定のしきい値との比較に基づいて決定する。rmax、r1、r2、rminの転送速度が定められたモードを夫々モード0、モード1、モード2、モード3ということにすると、モード0からモード1への遷移、モード1からモード2への遷移、モード2からモード3への遷移は、テーブル記憶領域66の使用ブロック数としきい値Tt1、Tt2、Ttlimitとの比較に基づいて決められる。また、モード3からモード2への遷移、モード2からモード1への遷移、モード1からモード0への遷移は、使用ブロック数としきい値Ttlimit、Tt3、Tt4との比較に基づいて決められる。なお、Tt4<Tt1<Tt3<Tt2<Ttlimitとする。このようにモードの遷移の判断のためのしきい値にヒステリシス特性を持たせたのは、しきい値の付近で使用ブロック数が推移することによりモードの切り替えが頻発することを防止するためである。なお、しきい値にヒステリシス特性を持たせなくても構わない。
【0073】
モード記憶部65は、転送速度設定部62が転送速度を算出する際に使用するモードの値を記憶する。モード記憶部65は、小規模なメモリやレジスタなどに保持されるようにしてよい。
【0074】
リソース管理部61は、テーブル記憶領域66のガベージコレクションを実行する。
【0075】
次に、本発明の第2の実施形態のSSDの動作を説明する。図14は、転送速度設定部62の動作を説明するフローチャートである。
【0076】
図14に示すように、まず、転送速度設定部62は、テーブル記憶領域66内の使用ブロック数を取得する(ステップS51)。ユーザ領域53内の使用ブロック数は、例えばアドレス変換テーブル67に基づいて求めることができる。
【0077】
そして、転送速度設定部62は、モード記憶部65が記憶しているモードがモード0であるか否か(ステップS52)、モード1であるか否か(ステップS53)、またはモード2であるか否か(ステップS54)を判定する。
【0078】
モード記憶部65にモード0を記憶していた場合(ステップS52、Yes)、転送速度設定部62は、取得した使用ブロック数がしきい値Tt1以上の値であるか否かを判定する(ステップS55)。使用ブロック数がTt1以上であった場合(ステップS55、Yes)、転送速度設定部62は、モード記憶部65が記憶している値をモード1で上書きする(ステップS56)。そして、転送速度設定部62は、モード記憶部65が記憶しているモードに応じた転送速度を設定値とする(ステップS67)。転送速度の設定値は、転送制御部63に通知される。ステップS67の処理が完了すると、ステップS51へ移行する。取得した使用ブロック数がしきい値Tt1以上の値ではなかった場合(ステップS55、No)、ステップS56がスキップされてステップS67に移行する。
【0079】
モード記憶部65にモード1を記憶していた場合(ステップS53、Yes)、転送速度設定部62は、取得した使用ブロック数がしきい値Tt2以上の値であるか否かを判定する(ステップS57)。使用ブロック数がTt2以上であった場合(ステップS57、Yes)、転送速度設定部62は、モード記憶部65が記憶している値をモード2で上書きし(ステップS58)、ステップS67に移行する。取得した使用ブロック数がしきい値Tt2以上の値ではなかった場合(ステップS57、No)、転送速度設定部62は、取得した使用ブロック数がしきい値Tt4以下の値であるか否かを判定する(ステップS59)。使用ブロック数がしきい値Tt4以下の値であった場合(ステップS59、Yes)、転送速度設定部62は、モード記憶部65が記憶している値をモード0で上書きし(ステップS60)、ステップS67に移行する。使用ブロック数がしきい値Tt4以下の値ではなかった場合(ステップS59、No)、ステップS60がスキップされてステップS67に移行する。
【0080】
モード記憶部65にモード2を記憶していた場合(ステップS54、Yes)、転送速度設定部62は、取得した使用ブロック数がしきい値Ttlimit以上の値であるか否かを判定する(ステップS61)。使用ブロック数がTtlimit以上であった場合(ステップS61、Yes)、転送速度設定部62は、モード記憶部65が記憶している値をモード3で上書きし(ステップS62)、ステップS67に移行する。取得した使用ブロック数がしきい値Ttlimit以上の値ではなかった場合(ステップS61、No)、転送速度設定部62は、取得した使用ブロック数がしきい値Tt3以下の値であるか否かを判定する(ステップS63)。使用ブロック数がしきい値Tt3以下の値であった場合(ステップS63、Yes)、転送速度設定部62は、モード記憶部65が記憶している値をモード1で上書きし(ステップS64)、ステップS67に移行する。使用ブロック数がしきい値Tt3以下の値ではなかった場合(ステップS63、No)、ステップS64がスキップされてステップS67に移行する。
【0081】
モード記憶部65に記憶されていたモードがモード0〜2のいずれでもない場合(ステップS52、No、ステップS53、No、ステップS54、No)は、モード記憶部65にはモード3が記憶されている。その場合、転送速度設定部62は、取得した使用ブロック数がしきい値Ttlimit以下の値であるか否かを判定する(ステップS65)。使用ブロック数がTtlimit以下であった場合(ステップS65、Yes)、転送速度設定部62は、モード記憶部65が記憶している値をモード2で上書きし(ステップS66)、ステップS67に移行する。使用ブロック数がしきい値Ttlimit以下の値ではなかった場合(ステップS65、No)、ステップS66がスキップされてステップS67に移行する。
【0082】
図15は、リソース管理部61がガベージコレクションを実行/停止する動作を説明するフローチャートである。図示するように、まず、リソース管理部61は、モード記憶部65がモード0を記憶しているか否かを判定する(ステップS71)。モード記憶部65がモード0を記憶していない場合(ステップS71、No)、リソース管理部61はテーブル記憶領域66のガベージコレクションを開始する(ステップS72)。モード記憶部65がモード0を記憶している場合(ステップS71、Yes)、リソース管理部61は、モード記憶部65の記憶内容がモード0でなくなるまでステップS71の判定処理を継続する。
【0083】
リソース管理部61は、ガベージコレクションを開始後、再びモード記憶部65がモード0を記憶しているか否かを判定する(ステップS73)。モード記憶部65がモード0を記憶している場合(ステップS73、Yes)、リソース管理部61はテーブル記憶領域66のガベージコレクションを停止して(ステップS74)、ステップS71の判定処理を実行する。ステップS73においてモード記憶部65がモード0を記憶していない場合(ステップS73、No)、リソース管理部61は、モード記憶部65の記憶内容がモード0となるまでステップS73の判定処理を継続する。
【0084】
転送制御部63の動作は第1の実施形態と同じであるので、説明を省略する。
【0085】
このように、本発明の第2の実施形態によれば、テーブル記憶領域66のうちのアドレス変換テーブルが書き込まれていない領域を転送速度を決定するためのリソースとするようにしたので、テーブル記憶領域66のガベージコレクションが終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができるようになる。
【0086】
なお、第2の実施形態においても、転送速度の設定値を算出するために使用するしきい値および/または転送速度の値をコマンドの受信間隔に応じて変化させるようにしてもよい。
【0087】
(第3の実施形態)
第1および第2の実施形態においては、不揮発性メモリとしてのNANDメモリ内の記憶領域をリソースとして見なすようにしたが、第3の実施形態以降においては、揮発性メモリ領域をリソースと見なす。第3の実施形態においては、ライトキャッシュ領域の空き領域を転送速度を決定するためのリソースとする。
【0088】
図16は、本発明の第3の実施形態のSSDの構成を示すブロック図である。ここでは、第1の実施形態と同じ構成要素には同一の符号を付し、重複する説明を省略する。
【0089】
図示するように、SSD7は、制御部70、ホストインタフェース(I/F)20、バッファ30、NANDI/F40、およびNANDメモリ50を備えている。
【0090】
バッファ30は、ホスト装置2からホストI/F20を介して受信した書き込みデータをキャッシュするライトキャッシュ領域31を備えている。
【0091】
NANDメモリ50は、NAND型の不揮発性記憶素子からなるメモリセルアレイ51を備えている。そして、メモリセルアレイ51には、アドレス変換テーブル14のスナップショット54およびログ55が格納されるシステム領域52と、ホスト装置2からの書き込みデータがライトキャッシュ領域31を経由して格納されるユーザ領域53とが確保されている。
【0092】
制御部70は、NAND管理部71、転送速度設定部72、転送制御部73、アドレス変換テーブル14およびモード記憶部75を備えている。
【0093】
転送速度設定部72は、ライトキャッシュ領域31の使用量と所定のしきい値とを用いて転送速度の設定値を算出する。
図17は、ライトキャッシュ領域31の使用量と転送速度との関係を説明する図である。本図において、紙面右方向ほどライトキャッシュ領域31の使用量が多く、ライトキャッシュ領域31の空き領域が少ない。図示するように、転送速度は、rmax、r1、r2、およびrminを取りうる。rmaxは全く制限されていない状態における転送速度、rminは最悪応答時間に基づいて決まる転送速度であり、夫々の転送速度の間には、rmax>r1>r2>rminの関係がある。rmax、r1、r2、rminのうちどの転送速度でデータ転送を実行するかは、ライトキャッシュ領域31の使用量と所定のしきい値との比較に基づいて決定される。rmax、r1、r2、rminの転送速度が定められたモードを夫々モード0、モード1、モード2、モード3ということにすると、モード0からモード1への遷移、モード1からモード2への遷移、モード2からモード3への遷移は、ライトキャッシュ領域31の使用量としきい値Tc1、Tc2、Tclimitとの比較に基づいて決められる。また、モード3からモード2への遷移、モード2からモード1への遷移、モード1からモード0への遷移は、ライトキャッシュ領域31の使用量としきい値Tclimit、Tc3、Tc4との比較に基づいて決められる。なお、Tc4<Tc1<Tc3<Tc2<Tclimitとする。このようにモードの遷移の判断のためのしきい値にヒステリシス特性を持たせたのは、しきい値の付近でライトキャッシュ領域31の使用量が推移することによりモードの切り替えが頻発することを防止するためである。なお、しきい値にヒステリシス特性を持たせなくても構わない。
【0094】
なお、ここでは、ライトキャッシュ領域31の使用量を転送速度の設定値の算出に使用されるものとして説明しているが、ライトキャッシュ領域31の使用量の替わりに使用中のライン数や使用率を用いることができる。
【0095】
モード記憶部75は、転送速度設定部72が転送速度を算出する際に使用するモードの値を記憶する。モード記憶部75は、小規模なメモリやレジスタなどに保持されるようにしてよい。
【0096】
転送制御部73は、ホストI/F20およびNANDI/F40を制御して、ホスト装置2とライトキャッシュ領域31との間のデータ転送を制御する。その際、転送速度設定部72が設定した転送速度でデータ転送を実行するようにする。また、転送制御部73は、ライトキャッシュ領域31にキャッシュされている書き込みデータをNANDメモリ50へ退避させるリソース管理部76を備えている。当該退避対象の書き込みデータはメモリセルアレイ51に確保されたユーザ領域53に書き込まれる。
【0097】
NAND管理部71は、ユーザ領域53のガベージコレクション、アドレス変換テーブル14のスナップショット54、およびアドレス変換テーブル14のログ55を取る動作を実行する。
【0098】
次に、本発明の第3の実施形態のSSDの動作を説明する。図18は、転送速度設定部72の動作を説明するフローチャートである。
【0099】
図18に示すように、まず、転送速度設定部72は、ライトキャッシュ領域31の使用量を取得する(ステップS81)。そして、転送速度設定部72は、モード記憶部75が記憶しているモードがモード0であるか否か(ステップS82)、モード1であるか否か(ステップS83)、またはモード2であるか否か(ステップS84)を判定する。
【0100】
モード記憶部75にモード0を記憶していた場合(ステップS82、Yes)、転送速度設定部72は、取得したライトキャッシュ領域31の使用量がしきい値Tc1以上の値であるか否かを判定する(ステップS85)。ライトキャッシュ領域31の使用量がTc1以上であった場合(ステップS85、Yes)、転送速度設定部72は、モード記憶部75が記憶している値をモード1で上書きする(ステップS86)。そして、転送速度設定部72は、モード記憶部75が記憶しているモードに応じた転送速度を設定値とする(ステップS97)。転送速度の設定値は、転送制御部73に通知される。ステップS97の処理が完了すると、ステップS81へ移行する。取得したライトキャッシュ領域31の使用量がしきい値Tc1以上の値ではなかった場合(ステップS85、No)、ステップS86がスキップされてステップS97に移行する。
【0101】
モード記憶部75にモード1を記憶していた場合(ステップS83、Yes)、転送速度設定部72は、取得したライトキャッシュ領域31の使用量がしきい値Tc2以上の値であるか否かを判定する(ステップS87)。ライトキャッシュ領域31の使用量がTc2以上であった場合(ステップS87、Yes)、転送速度設定部72は、モード記憶部75が記憶している値をモード2で上書きし(ステップS88)、ステップS97に移行する。取得したライトキャッシュ領域31の使用量がしきい値Tc2以上の値ではなかった場合(ステップS87、No)、転送速度設定部72は、取得したライトキャッシュ領域31の使用量がしきい値Tc4以下の値であるか否かを判定する(ステップS89)。ライトキャッシュ領域31の使用量がしきい値Tc4以下の値であった場合(ステップS89、Yes)、転送速度設定部72は、モード記憶部75が記憶している値をモード0で上書きし(ステップS90)、ステップS97に移行する。ライトキャッシュ領域31の使用量がしきい値Tc4以下の値ではなかった場合(ステップS89、No)、ステップS90がスキップされてステップS97に移行する。
【0102】
モード記憶部75にモード2を記憶していた場合(ステップS84、Yes)、転送速度設定部72は、取得したライトキャッシュ領域31の使用量がしきい値Tclimit以上の値であるか否かを判定する(ステップS91)。ライトキャッシュ領域31の使用量がTclimit以上であった場合(ステップS91、Yes)、転送速度設定部72は、モード記憶部75が記憶している値をモード3で上書きし(ステップS92)、ステップS97に移行する。取得したライトキャッシュ領域31の使用量がしきい値Tclimit以上の値ではなかった場合(ステップS91、No)、転送速度設定部72は、取得したライトキャッシュ領域31の使用量がしきい値Tc3以下の値であるか否かを判定する(ステップS93)。ライトキャッシュ領域31の使用量がしきい値Tc3以下の値であった場合(ステップS93、Yes)、転送速度設定部72は、モード記憶部75が記憶している値をモード1で上書きし(ステップS94)、ステップS97に移行する。ライトキャッシュ領域31の使用量がしきい値Tc3以下の値ではなかった場合(ステップS93、No)、ステップS94がスキップされてステップS97に移行する。
【0103】
モード記憶部75に記憶されていたモードがモード0〜2のいずれでもない場合(ステップS82、No、ステップS83、No、ステップS84、No)は、モード記憶部75にはモード3が記憶されている。その場合、転送速度設定部72は、取得したライトキャッシュ領域31の使用量がしきい値Tclimit以下の値であるか否かを判定する(ステップS95)。ライトキャッシュ領域31の使用量がTclimit以下であった場合(ステップS95、Yes)、転送速度設定部72は、モード記憶部75が記憶している値をモード2で上書きし(ステップS96)、ステップS97に移行する。ライトキャッシュ領域31の使用量がしきい値Tclimit以下の値ではなかった場合(ステップS95、No)、ステップS96がスキップされてステップS97に移行する。
【0104】
図19は、リソース管理部76がライトキャッシュ領域31にキャッシュされている書き込みデータをNANDメモリ50へ退避させる動作を説明するフローチャートである。図示するように、まず、リソース管理部76は、モード記憶部75がモード0を記憶しているか否かを判定する(ステップS101)。モード記憶部75がモード0を記憶していない場合(ステップS101、No)、リソース管理部76はライトキャッシュ領域31内のデータの退避を開始する(ステップS102)。モード記憶部75がモード0を記憶している場合(ステップS101、Yes)、リソース管理部76は、モード記憶部75の記憶内容がモード0でなくなるまでステップS101の判定処理を継続する。
【0105】
リソース管理部76は、データの退避を開始後、再びモード記憶部75がモード0を記憶しているか否かを判定する(ステップS103)。モード記憶部75がモード0を記憶している場合(ステップS103、Yes)、リソース管理部76はデータの退避を停止して(ステップS104)、ステップS101の判定処理を実行する。ステップS103においてモード記憶部75がモード0を記憶していない場合(ステップS103、No)、リソース管理部76は、モード記憶部75の記憶内容がモード0となるまでステップS103の判定処理を継続する。
【0106】
図20は、転送制御部73がデータ転送を行う動作を説明するフローチャートである。図示するように、まず、転送制御部73は、書き込みコマンドを受信したか否かを判定する(ステップS111)。書き込みコマンドを受信していない場合(ステップS111、No)、転送制御部73は、書き込みコマンドを受信するまでステップS111の判定処理を実行する。
【0107】
ステップS111において、書き込みコマンドを受信したと判定した場合(ステップS111、Yes)、転送制御部73は、書き込みコマンドにより書き込み要求されたデータのサイズと転送速度設定部72が算出した転送速度の設定値とを式(1)の関係式に適用して待ち時間を算出する(ステップS112)。なお、第1の実施形態と同様に、式(1)において、実行時間をゼロ値として待ち時間を算出するようにしてもよい。
【0108】
ステップS112の後、転送制御部73は、前記書き込み要求されたデータのデータ転送中にステップS112にて算出した待ち時間を挿入することによって、前記書き込み要求されたデータのデータ転送を転送速度の設定値で実行する(ステップS113)。転送制御部73は、ステップS113のデータ転送が完了すると、ステップS111の判定処理を実行する。
【0109】
このように、本発明の第3の実施形態によれば、ライトキャッシュ領域31の使用量に基づいて転送速度の設定値を算出するようにしたので、ライトキャッシュ領域31内のデータをNANDメモリ50に退避させる処理が終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができるようになる。
【0110】
なお、第3の実施形態においても、転送速度の設定値を算出するために使用するしきい値および/または転送速度の値をコマンドの受信間隔に応じて変化させるようにしてもよい。
【0111】
(第4の実施形態)
図21は、本発明の第4の実施形態のSSDの構成を示すブロック図である。ここでは、第1の実施形態と同じ構成要素には同一の符号を付し、重複する説明を省略する。
【0112】
図示するように、SSD8は、制御部80、ホストインタフェース(I/F)20、バッファ30、NANDI/F40、およびNANDメモリ50を備えている。
【0113】
バッファ30は、ホスト装置2からホストI/F20を介して受信した書き込みデータをキャッシュするライトキャッシュ領域31を備えている。
【0114】
NANDメモリ50は、NAND型の不揮発性記憶素子からなるメモリセルアレイ51を備えている。そして、メモリセルアレイ51には、システム領域52と、ホスト装置2からの書き込みデータが格納されるユーザ領域53とが確保されている。そして、ユーザ領域53には、ページサイズのデータがキャッシュされるキャッシュ領域86と、ブロックサイズのデータが格納されるストレージ領域87とがさらに確保されている。ストレージ領域87内のデータに関する論理アドレスと物理アドレスとの対応付けは、ブロック管理テーブル84−1により管理される。また、キャッシュ領域86内のデータに関する論理アドレスと物理アドレスとの対応付けは、ページ管理テーブル84−2により管理される。ライトキャッシュ領域31内のページ単位のデータは、まずキャッシュ領域86内に退避させられる。そして、キャッシュ領域86内のデータが増加すると、当該データは、論理アドレスが連続する他のデータとマージされて、ストレージ領域87を構成する空きブロックに書き込まれる。以降、この処理をNAND整理ということとする。
【0115】
図22−1および図22−2は、NAND整理の処理を説明する図である。図22−1は、NAND整理が行われる前の状態を示している。本図においては、キャッシュ領域86は3つのブロック(ブロック86a〜c)を備えており、ストレージ領域87は複数のブロック(ブロック87a〜f、・・・)を備えている。そして、制御部80には、ブロック管理テーブル84−1およびページ管理テーブル84−2が備えられている。キャッシュ領域86には、ブロック86aに4ページ分のデータが格納されており、ページ管理テーブル84−2は、ブロック86aに格納されている4ページ分のデータについて夫々論理アドレスと物理アドレスとの対応関係を示す4つのエントリが登録されている。ストレージ領域87には、ブロック87a〜dが書き込み済みとなっており、そのうちのブロック87aは、1ページ分のデータが追記により無効化された状態となっている。追記された1ページ分のデータは、ブロック86aの4ページ目に格納されている。
【0116】
図22−2は、上記したブロック86aの4ページ目に格納されているデータを対象としたNAND整理が実行された後の状態を示している。図22−1においては、ブロック86aの4ページ目に格納されているデータに論理アドレスが連続するデータは、ブロック87aに格納されていた。図22−2においては、ブロック86aの4ページ目に格納されているデータとブロック87aに格納されているデータとが読み出されてマージされ、空きブロックであったブロック87eにブロックサイズのデータとして書き込まれている。そして、ブロック87aの内容は消去されて空きブロックとなっている。また、上記したブロック86aの4ページ目に格納されていたデータは無効化され、ページ管理テーブル84−2内の当該無効化されたデータに対応するエントリは削除される。なお、ブロック86a内の無効なデータは、同一ブロック内の全てのデータが無効化されてから消去するようにしてもよいし、有効なデータを他の空きブロック(例えばブロック86b)に退避させてから消去するようにしてもよい。
【0117】
このように、ページ管理テーブル84−2のサイズは、キャッシュ領域86内に格納されているデータ量に応じて増減する。第4の実施形態においては、ページ管理テーブル84−2が格納される記憶領域をリソースとみなし、ページ管理テーブル84−2のサイズに応じて転送速度の制限値が算出される。なお、ここでは、ページ管理テーブル84−2のサイズを使用リソース量としてとらえて転送速度を算出するものとするが、サイズ以外に当該テーブルが格納される領域の使用率やエントリ数で代用することもできる。
【0118】
制御部80は、リソース管理部81、転送速度設定部82、転送制御部83、ブロック管理テーブル84−1、ページ管理テーブル84−2、およびモード記憶部85を備えている。
【0119】
ブロック管理テーブル84−1およびページ管理テーブル84−2は、前述のように、論理アドレスと物理アドレスとの対応付けを記録したテーブルであって、例えばDRAMやSRAM(Static Random Access Memory)など、揮発性メモリとしての記憶装置により保持される。
【0120】
転送速度設定部82は、ページ管理テーブル84−2のサイズと所定のしきい値とを用いて転送速度の設定値を算出する。
図23は、ページ管理テーブル84−2のサイズと転送速度との関係を説明する図である。本図において、紙面右方向ほどページ管理テーブル84−2のサイズが多く、ライトキャッシュ領域31の空き領域が少ない。図示するように、転送速度は、rmax、r1、r2、およびrminを取りうる。rmaxは全く制限されていない状態における転送速度、rminは最悪応答時間に基づいて決まる転送速度であり、夫々の転送速度の間には、rmax>r1>r2>rminの関係がある。rmax、r1、r2、rminのうちどの転送速度でデータ転送を実行するかは、ページ管理テーブル84−2のサイズと所定のしきい値との比較に基づいて決定される。rmax、r1、r2、rminの転送速度が定められたモードを夫々モード0、モード1、モード2、モード3ということにすると、モード0からモード1への遷移、モード1からモード2への遷移、モード2からモード3への遷移は、ページ管理テーブル84−2のサイズとしきい値Tp1、Tp2、Tplimitとの比較に基づいて決められる。また、モード3からモード2への遷移、モード2からモード1への遷移、モード1からモード0への遷移は、ページ管理テーブル84−2のサイズとしきい値Tplimit、Tp3、Tp4との比較に基づいて決められる。なお、Tp4<Tp1<Tp3<Tp2<Tplimitとする。このようにモードの遷移の判断のためのしきい値にヒステリシス特性を持たせたのは、しきい値の付近でページ管理テーブル84−2のサイズが推移することによりモードの切り替えが頻発することを防止するためである。なお、しきい値にヒステリシス特性を持たせなくても構わない。
【0121】
モード記憶部85は、転送速度設定部82が転送速度を算出する際に使用するモードの値を記憶する。モード記憶部85は、小規模なメモリやレジスタなどに保持されるようにしてよい。
【0122】
転送制御部83は、ホストI/F20およびNANDI/F40を制御して、ホスト装置2とNANDメモリ50との間のデータ転送を制御する。その際、転送速度設定部82が設定した転送速度でデータ転送を実行するようにする。また、転送制御部83は、ライトキャッシュ領域31が溢れたり、ホスト装置2からフラッシュコマンドが発行されたなどのタイミングで、ライトキャッシュ領域31にキャッシュされている書き込みデータをNANDメモリ50へ退避させる。当該退避対象の書き込みデータのうち、論理アドレスが連続するブロックサイズの書き込みデータはストレージ領域87に書き込まれ、論理アドレスが連続するブロックサイズを構成しないページサイズの書き込みデータはキャッシュ領域86に書き込まれる。
【0123】
リソース管理部81は、前述のNAND整理の処理を実行する。
【0124】
次に、本発明の第4の実施形態のSSDの動作を説明する。図24は、転送速度設定部82の動作を説明するフローチャートである。
【0125】
図24に示すように、まず、転送速度設定部82は、ページ管理テーブル84−2のサイズを取得する(ステップS121)。そして、転送速度設定部82は、モード記憶部85が記憶しているモードがモード0であるか否か(ステップS122)、モード1であるか否か(ステップS123)、またはモード2であるか否か(ステップS124)を判定する。
【0126】
モード記憶部85にモード0を記憶していた場合(ステップS122、Yes)、転送速度設定部82は、取得したページ管理テーブル84−2のサイズがしきい値Tp1以上の値であるか否かを判定する(ステップS125)。ページ管理テーブル84−2のサイズがTp1以上であった場合(ステップS125、Yes)、転送速度設定部82は、モード記憶部85が記憶している値をモード1で上書きする(ステップS126)。そして、転送速度設定部82は、モード記憶部85が記憶しているモードに応じた転送速度を設定値とする(ステップS137)。転送速度の設定値は、転送制御部83に通知される。ステップS137の処理が完了すると、ステップS121へ移行する。取得したページ管理テーブル84−2のサイズがしきい値Tp1以上の値ではなかった場合(ステップS125、No)、ステップS126がスキップされてステップS137に移行する。
【0127】
モード記憶部85にモード1を記憶していた場合(ステップS123、Yes)、転送速度設定部82は、取得したページ管理テーブル84−2のサイズがしきい値Tp2以上の値であるか否かを判定する(ステップS127)。ページ管理テーブル84−2のサイズがTp2以上であった場合(ステップS127、Yes)、転送速度設定部82は、モード記憶部85が記憶している値をモード2で上書きし(ステップS128)、ステップS137に移行する。取得したページ管理テーブル84−2のサイズがしきい値Tp2以上の値ではなかった場合(ステップS127、No)、転送速度設定部82は、取得したページ管理テーブル84−2のサイズがしきい値Tp4以下の値であるか否かを判定する(ステップS129)。ページ管理テーブル84−2のサイズがしきい値Tp4以下の値であった場合(ステップS129、Yes)、転送速度設定部82は、モード記憶部85が記憶している値をモード0で上書きし(ステップS130)、ステップS137に移行する。ページ管理テーブル84−2のサイズがしきい値Tp4以下の値ではなかった場合(ステップS129、No)、ステップS130がスキップされてステップS137に移行する。
【0128】
モード記憶部85にモード2を記憶していた場合(ステップS124、Yes)、転送速度設定部82は、取得したページ管理テーブル84−2のサイズがしきい値Tplimit以上の値であるか否かを判定する(ステップS131)。ページ管理テーブル84−2のサイズがTplimit以上であった場合(ステップS131、Yes)、転送速度設定部82は、モード記憶部85が記憶している値をモード3で上書きし(ステップS132)、ステップS137に移行する。取得したページ管理テーブル84−2のサイズがしきい値Tplimit以上の値ではなかった場合(ステップS131、No)、転送速度設定部82は、取得したページ管理テーブル84−2のサイズがしきい値Tp3以下の値であるか否かを判定する(ステップS133)。ページ管理テーブル84−2のサイズがしきい値Tp3以下の値であった場合(ステップS133、Yes)、転送速度設定部82は、モード記憶部85が記憶している値をモード1で上書きし(ステップS134)、ステップS137に移行する。ページ管理テーブル84−2のサイズがしきい値Tp3以下の値ではなかった場合(ステップS133、No)、ステップS134がスキップされてステップS137に移行する。
【0129】
モード記憶部85に記憶されていたモードがモード0〜2のいずれでもない場合(ステップS122、No、ステップS123、No、ステップS124、No)は、モード記憶部85にはモード3が記憶されている。その場合、転送速度設定部82は、取得したページ管理テーブル84−2のサイズがしきい値Tplimit以下の値であるか否かを判定する(ステップS135)。ページ管理テーブル84−2のサイズがTplimit以下であった場合(ステップS135、Yes)、転送速度設定部82は、モード記憶部85が記憶している値をモード2で上書きし(ステップS136)、ステップS137に移行する。ページ管理テーブル84−2のサイズがしきい値Tplimit以下の値ではなかった場合(ステップS135、No)、ステップS136がスキップされてステップS137に移行する。
【0130】
図25は、リソース管理部81がNAND整理の処理を開始/停止する動作を説明するフローチャートである。図示するように、まず、リソース管理部81は、モード記憶部85がモード0を記憶しているか否かを判定する(ステップS141)。モード記憶部85がモード0を記憶していない場合(ステップS141、No)、リソース管理部81はNAND整理を開始する(ステップS142)。モード記憶部85がモード0を記憶している場合(ステップS141、Yes)、リソース管理部81は、モード記憶部85の記憶内容がモード0でなくなるまでステップS141の判定処理を継続する。
【0131】
リソース管理部81は、NAND整理を開始後、再びモード記憶部85がモード0を記憶しているか否かを判定する(ステップS143)。モード記憶部85がモード0を記憶している場合(ステップS143、Yes)、リソース管理部81はNAND整理を停止して(ステップS144)、ステップS141の判定処理を実行する。ステップS143においてモード記憶部85がモード0を記憶していない場合(ステップS143、No)、リソース管理部81は、モード記憶部85の記憶内容がモード0となるまでステップS143の判定処理を継続する。
【0132】
転送制御部83の動作は、第1の実施形態と同じであるので、ここでは説明を省略する。
【0133】
このように、本発明の第4の実施形態によれば、NANDメモリ50は、ホスト装置2から書き込み要求されたデータをページ毎に記憶するキャッシュ領域86と、ブロック毎に記憶するストレージ領域87とを備え、制御部80内の揮発性メモリは、キャッシュ領域86内のアドレス管理を行うページ管理テーブル84−2とストレージ領域87内のアドレス管理を行うブロック管理テーブル84−1とを夫々記憶する記憶領域を備え、ページ管理テーブル84−2を記憶する記憶領域をリソースとするように構成したので、リソース管理部81がNAND整理が終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができるようになる。
【0134】
なお、第4の実施形態においても、転送速度の設定値を算出するために使用するしきい値および/または転送速度の値をコマンドの受信間隔に応じて変化させるようにしてもよい。また、第4の実施形態では、キャッシュ領域86がページ単位で管理され、ストレージ領域87がブロック単位で管理されるとして説明したが、これに限定されない。ストレージ領域87のデータ管理単位がキャッシュ領域86のデータ管理単位よりも大きければ、本実施形態と同様にNAND整理を実行することが可能である。例えばキャッシュ領域86はページサイズの2以上の自然数分の1倍の単位で管理されていてもよいし、ページサイズの2以上の自然数倍の単位で管理されていてもよい。またストレージ領域87はブロックサイズの2以上の自然数分の1倍の単位で管理されていてもよいし、ブロックサイズの2以上の自然数倍の単位で管理されていてもよい。また、キャッシュ領域86は1つのメモリセルに1ビットの記憶を行う二値記憶方式(SLC: Single Level Cell)で管理し、ストレージ領域87は1つのメモリセルに2ビット以上の記憶を行う多値記憶方式(MLC: Multi Level Cell)で管理してもよい。
【0135】
(第5の実施形態)
図26は、本発明の第5の実施形態のSSDの構成を示すブロック図である。ここでは、第1の実施形態と同じ構成要素には同一の符号を付し、重複する説明を省略する。
【0136】
図示するように、SSD9は、制御部90、ホストインタフェース(I/F)20、バッファ30、NANDI/F40、およびNANDメモリ50を備えている。
【0137】
バッファ30は、ホスト装置2からホストI/F20を介して受信した書き込みデータをキャッシュするライトキャッシュ領域31を備えている。NANDメモリ50は、NAND型の不揮発性記憶素子からなるメモリセルアレイ51を備えており、メモリセルアレイ51には、システム領域52とユーザ領域53とが確保されている。
【0138】
制御部90は、システム管理部91、転送速度設定部92、転送制御部13、アドレス変換テーブル14、モード記憶部95およびシステムキュー96を備えている。
【0139】
システム管理部91は、破損したデータの復元処理や、メモリセルアレイ51のリフレッシュ処理や、メモリセルアレイ51内のデータのウェアレベリング処理など、信頼性を担保するために必要となる処理(以下、システム処理という)を実行する。リフレッシュ処理とは、例えば、誤り訂正処理における訂正ビット数が増加するなどデータの劣化が検出された場合に、当該ブロック内のデータを別のブロックに書き直す処理を意味する。ウェアレベリング処理とは、例えば、書き換え回数(消去回数)が多いブロックに記憶されているデータと、書き換え回数(消去回数)の少ないブロックに記憶されているデータとを入れ替えることで、NANDメモリ全体の書き換え回数を平準化する処理を意味する。
【0140】
システムキュー96は、必要でかつ未実行のシステム処理が記録されるキュー構造の記憶領域である。すなわち、システム処理を行う必要が生じたとき、実行すべきシステム処理を記録したデータがエンキューされ、当該データは、システム管理部91によって所定のタイミングでデキューされる。システム管理部91は、デキューしたデータに記録されているシステム処理を実行する。システムキュー96は、例えばDRAMやSRAM(Static Random Access Memory)など、揮発性メモリとしての記憶装置により保持される。
【0141】
転送速度設定部92は、システムキュー96内のデータ量と所定のしきい値とを用いて転送速度の設定値を算出する。
図27は、システムキュー96内のデータ量と転送速度との関係を説明する図である。本図において、紙面右方向ほどシステムキュー96内のデータ量が多く、システムキュー96の空き領域が少ない。図示するように、転送速度は、rmax、r1、r2、およびrminを取りうる。rmaxは全く制限されていない状態における転送速度、rminは最悪応答時間に基づいて決まる転送速度であり、夫々の転送速度の間には、rmax>r1>r2>rminの関係がある。rmax、r1、r2、rminのうちどの転送速度でデータ転送を実行するかは、システムキュー96内のデータ量と所定のしきい値との比較に基づいて決定される。rmax、r1、r2、rminの転送速度が定められたモードを夫々モード0、モード1、モード2、モード3ということにすると、モード0からモード1への遷移、モード1からモード2への遷移、モード2からモード3への遷移は、システムキュー96内のデータ量としきい値Tq1、Tq2、Tqlimitとの比較に基づいて決められる。また、モード3からモード2への遷移、モード2からモード1への遷移、モード1からモード0への遷移は、システムキュー96内のデータ量としきい値Tqlimit、Tq3、Tq4との比較に基づいて決められる。なお、Tq4<Tq1<Tq3<Tq2<Tqlimitとする。このようにモードの遷移の判断のためのしきい値にヒステリシス特性を持たせたのは、しきい値の付近でシステムキュー96内のデータ量が推移することによりモードの切り替えが頻発することを防止するためである。なお、しきい値にヒステリシス特性を持たせなくても構わない。
【0142】
なお、ここでは、転送速度を算出するための使用リソース量としてシステムキュー96内のデータ量を用いることとしているが、データ量のほかに、システムキュー96の使用率を用いることもできる。
【0143】
モード記憶部95は、転送速度設定部92が転送速度を算出する際に使用するモードの値を記憶する。モード記憶部95は、小規模なメモリやレジスタなどに保持されるようにしてよい。
【0144】
次に、本発明の第5の実施形態のSSDの動作を説明する。図28は、転送速度設定部92の動作を説明するフローチャートである。
【0145】
図28に示すように、まず、転送速度設定部92は、システムキュー96内のデータ量を取得する(ステップS151)。そして、転送速度設定部92は、モード記憶部95が記憶しているモードがモード0であるか否か(ステップS152)、モード1であるか否か(ステップS153)、またはモード2であるか否か(ステップS154)を判定する。
【0146】
モード記憶部95にモード0を記憶していた場合(ステップS152、Yes)、転送速度設定部92は、取得したシステムキュー96内のデータ量がしきい値Tq1以上の値であるか否かを判定する(ステップS155)。システムキュー96内のデータ量がTq1以上であった場合(ステップS155、Yes)、転送速度設定部92は、モード記憶部95が記憶している値をモード1で上書きする(ステップS156)。そして、転送速度設定部92は、モード記憶部95が記憶しているモードに応じた転送速度を設定値とする(ステップS167)。転送速度の設定値は、転送制御部13に通知される。ステップS167の処理が完了すると、ステップS151へ移行する。取得したシステムキュー96内のデータ量がしきい値Tq1以上の値ではなかった場合(ステップS155、No)、ステップS156がスキップされてステップS167に移行する。
【0147】
モード記憶部95にモード1を記憶していた場合(ステップS153、Yes)、転送速度設定部92は、取得したシステムキュー96内のデータ量がしきい値Tq2以上の値であるか否かを判定する(ステップS157)。システムキュー96内のデータ量がTq2以上であった場合(ステップS157、Yes)、転送速度設定部92は、モード記憶部95が記憶している値をモード2で上書きし(ステップS158)、ステップS167に移行する。取得したシステムキュー96内のデータ量がしきい値Tq2以上の値ではなかった場合(ステップS157、No)、転送速度設定部92は、取得したシステムキュー96内のデータ量がしきい値Tq4以下の値であるか否かを判定する(ステップS159)。システムキュー96内のデータ量がしきい値Tq4以下の値であった場合(ステップS159、Yes)、転送速度設定部92は、モード記憶部95が記憶している値をモード0で上書きし(ステップS160)、ステップS167に移行する。システムキュー96内のデータ量がしきい値Tq4以下の値ではなかった場合(ステップS159、No)、ステップS160がスキップされてステップS167に移行する。
【0148】
モード記憶部95にモード2を記憶していた場合(ステップS154、Yes)、転送速度設定部92は、取得したシステムキュー96内のデータ量がしきい値Tqlimit以上の値であるか否かを判定する(ステップS161)。システムキュー96内のデータ量がTqlimit以上であった場合(ステップS161、Yes)、転送速度設定部92は、モード記憶部95が記憶している値をモード3で上書きし(ステップS162)、ステップS167に移行する。取得したシステムキュー96内のデータ量がしきい値Tqlimit以上の値ではなかった場合(ステップS161、No)、転送速度設定部92は、取得したシステムキュー96内のデータ量がしきい値Tq3以下の値であるか否かを判定する(ステップS163)。システムキュー96内のデータ量がしきい値Tq3以下の値であった場合(ステップS163、Yes)、転送速度設定部92は、モード記憶部95が記憶している値をモード1で上書きし(ステップS164)、ステップS167に移行する。システムキュー96内のデータ量がしきい値Tq3以下の値ではなかった場合(ステップS163、No)、ステップS164がスキップされてステップS167に移行する。
【0149】
モード記憶部95に記憶されていたモードがモード0〜2のいずれでもない場合(ステップS152、No、ステップS153、No、ステップS154、No)は、モード記憶部95にはモード3が記憶されている。その場合、転送速度設定部92は、取得したシステムキュー96内のデータ量がしきい値Tqlimit以下の値であるか否かを判定する(ステップS165)。システムキュー96内のデータ量がTqlimit以下であった場合(ステップS165、Yes)、転送速度設定部92は、モード記憶部95が記憶している値をモード2で上書きし(ステップS166)、ステップS167に移行する。システムキュー96内のデータ量がしきい値Tqlimit以下の値ではなかった場合(ステップS165、No)、ステップS166がスキップされてステップS167に移行する。
【0150】
図29は、システム管理部91がシステム処理の処理を開始/停止する動作を説明するフローチャートである。図示するように、まず、システム管理部91は、モード記憶部95がモード0を記憶しているか否かを判定する(ステップS171)。モード記憶部95がモード0を記憶していない場合(ステップS171、No)、システム管理部91はシステム処理を開始する(ステップS172)。モード記憶部95がモード0を記憶している場合(ステップS171、Yes)、システム管理部91は、モード記憶部95の記憶内容がモード0でなくなるまでステップS171の判定処理を継続する。
【0151】
システム管理部91は、システム処理を開始後、再びモード記憶部95がモード0を記憶しているか否かを判定する(ステップS173)。モード記憶部95がモード0を記憶している場合(ステップS173、Yes)、システム管理部91はシステム処理を停止して(ステップS174)、ステップS171の判定処理を実行する。ステップS173においてモード記憶部95がモード0を記憶していない場合(ステップS173、No)、システム管理部91は、モード記憶部95の記憶内容がモード0となるまでステップS173の判定処理を継続する。
【0152】
転送制御部13の動作は、第1の実施形態と同じであるので、ここでは説明を省略する。
【0153】
このように、本発明の第5の実施形態によれば、不揮発性メモリ内に必要でかつ未実行のシステム処理の実行内容が記録されるシステムキュー96を備え、システムキュー96のデータ量を使用リソース量とするようにしたので、システム処理が終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができるようになる。
【0154】
なお、第5の実施形態においても、転送速度の設定値を算出するために使用するしきい値および/または転送速度の値をコマンドの受信間隔に応じて変化させるようにしてもよい。
【0155】
(第6の実施形態)
図30は、ホスト装置からの書き込みデータがライトキャッシュ領域31に格納されるまでの動作を説明するシーケンス図である。
【0156】
まず、ホスト装置2からホストI/F20に書き込みコマンドが送信されると(ステップS181)、ホストI/F20は、書き込みコマンドを受け付けた旨の受け付け応答をホスト装置2に返信する(ステップS182)。そして、SSD1がデータ受け入れの準備が整うと、ホストI/F20から転送開始通知がホスト装置2に送信される(ステップS183)。ホスト装置2は、転送開始通知を受信すると、書き込みデータをホストI/F20が内部に具備するバッファのサイズ(ここでは8Kバイト)毎に分割して送信する。なお、ホストI/F20が備えるバッファのサイズは、例えば初期化時に予めホスト装置2に通知される。
【0157】
具体的には、まず、ホスト装置2は、書き込みデータを8Kバイト毎に分割して、得られた最初のデータをデータ転送する(ステップS184)。ホストI/F20にデータ転送されてきた8Kバイトのデータは、内部に具備するバッファに一時的に格納される。その後、ホストI/F20内のバッファに格納されたデータは、ライトキャッシュ領域31に転送される(ステップS185、ステップS186)。なお、ホストI/F20からライトキャッシュ領域31へのデータ転送の単位サイズは、ホスト装置2からホストI/F20へのデータ転送の単位サイズと同じでもよいし、異なっていてもよい。ここでは、4Kバイト毎にホストI/F20からライトキャッシュ領域31に転送されることとしている。ホストI/F20からライトキャッシュ領域31へのデータ転送が完了し、ホストI/F20内のバッファが空になると、次の転送データを受け入れることができる旨の準備完了通知がホストI/F20からホスト装置2に送信される(ステップS187)。ステップS184乃至ステップS187の処理は、ステップS181により書き込み要求されたデータのサイズに応じた回数だけリピートされる。
【0158】
ホスト装置2が、書き込み要求したデータにかかる最後のデータ転送を実行し(ステップS188)、ホストI/F20に送られてきたデータをホストI/F20からライトキャッシュ領域31に送信完了すると(ステップS189、ステップS190)、書き込みコマンドS181にかかるデータ転送が完了した旨の転送終了通知がホストI/F20からホスト装置2に送信される(ステップS191)。
【0159】
第1の実施形態の説明においては、ホスト装置2からの書き込みデータの転送速度を前記転送速度の設定値に制限するために、転送制御部13は、ホストI/F20とホスト装置2との間のデータ転送に待ち時間を挿入する、と説明した。ここで、待ち時間の挿入方法には以下の手法を採用することができる。
【0160】
即ち、ホスト装置2からホストI/F20への最初のデータ転送(ステップS184)が開始されてからホスト装置2からホストI/F20への最後のデータ転送(ステップS188)が完了するまでの時間を式(1)にかかる実行時間とし、最後のデータ転送(ステップS188)が完了してから転送終了通知(ステップS191)を送信するまでの時間を式(1)における待ち時間とする。このようにすることによって、最初のデータ転送(ステップS184)が開始されてから転送終了通知(ステップS191)が送受信されるまで平均の転送速度を転送速度設定部12が算出した転送速度に等しくすることができる。
【0161】
また、転送速度設定部12は、ホスト装置2からの書き込みデータの転送速度を次の手法で設定値に制限するようにしてもよい。即ち、ホストI/F20からライトキャッシュ領域31へのデータ転送(ステップS185、ステップS186、ステップS189、ステップS190)の夫々が転送速度設定部12が算出した転送速度に等しくなるように、当該夫々のデータ転送の実行タイミングを制御する方法である。具体的には、転送制御部13は、下記の式3に基づいて、ホストI/F20からライトキャッシュ領域31へのデータ転送の夫々にかける時間の設定値(転送時間設定値)を算出する。
4Kバイト/転送時間設定値=転送速度の設定値 (3)
そして、ホストI/F20とライトキャッシュ領域31との間のデータ転送を開始するときに、前記算出した転送時間設定値までの経過時間をカウントするタイマを起動する。データ転送部13は、4Kバイトのデータ転送が終わった後も前記タイマがエクスパイアするまで次の4Kバイトのデータ転送の開始を待つ。ホストI/F20からライトキャッシュ領域31へのデータ転送の転送速度が転送速度設定部12が算出した転送速度に抑えられるので、ホストI/F20とホスト装置2との間の8Kバイトごとのデータ転送の間隔が開き、結果としてホストI/F20とホスト装置2との間の転送速度が転送速度設定部12が算出した転送速度に抑えることができる。
【0162】
なお、第6の実施形態で説明したホスト装置2との間の転送速度の制限手法は、第2乃至第5の実施形態で説明した何れの転送制御部にも適用することができる。
【0163】
(第7の実施形態)
図31は、第1の実施形態のSSD1を搭載したパーソナルコンピュータ1200の一例を示す斜視図である。パーソナルコンピュータ1200は、本体1201、及び表示ユニット1202を備えている。表示ユニット1202は、ディスプレイハウジング1203と、このディスプレイハウジング1203に収容された表示装置1204とを備えている。
【0164】
本体1201は、筐体1205と、キーボード1206と、ポインティングデバイスであるタッチパッド1207とを備えている。筐体1205内部には、メイン回路基板、ODD(Optical Disk Device)ユニット、カードスロット、及びSSD1等が収容されている。
【0165】
カードスロットは、筐体1205の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部1208が設けられている。ユーザは、この開口部1208を通じて筐体1205の外部から追加デバイスをカードスロットに挿抜することが可能である。
【0166】
SSD1は、従来のHDDの置き換えとして、パーソナルコンピュータ1200内部に実装された状態として使用してもよいし、パーソナルコンピュータ1200が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【0167】
図32は、SSDを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ1200は、CPU1301、ノースブリッジ1302、主メモリ1303、ビデオコントローラ1304、オーディオコントローラ1305、サウスブリッジ1309、BIOS−ROM1310、SSD1、ODDユニット1311、エンベデッドコントローラ/キーボードコントローラIC(EC/KBC)1312、及びネットワークコントローラ1313等を備えている。
【0168】
CPU1301は、パーソナルコンピュータ1200の動作を制御するために設けられたプロセッサであり、SSD1から主メモリ1303にロードされるオペレーティングシステム(OS)を実行する。更に、ODDユニット1311が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも1つの処理の実行を可能にした場合に、CPU1301は、それらの処理の実行をする。
【0169】
また、CPU1301は、BIOS−ROM1310に格納されたシステムBIOS(Basic Input Output System)も実行する。尚、システムBIOSは、パーソナルコンピュータ1200内のハードウェア制御のためのプログラムである。
【0170】
ノースブリッジ1302は、CPU1301のローカルバスとサウスブリッジ1309との間を接続するブリッジデバイスである。ノースブリッジ1302には、主メモリ1303をアクセス制御するメモリコントローラも内蔵されている。
【0171】
また、ノースブリッジ1302は、AGP(Accelerated Graphics Port)バス等を介してビデオコントローラ1304との通信、及びオーディオコントローラ1305との通信を実行する機能も有している。
【0172】
主メモリ1303は、プログラムやデータを一時的に記憶し、CPU1301のワークエリアとして機能する。主メモリ1303は、例えばRAMから構成される。
【0173】
ビデオコントローラ1304は、パーソナルコンピュータ1200のディスプレイモニタとして使用される表示ユニット1202を制御するビデオ再生コントローラである。
【0174】
オーディオコントローラ1305は、パーソナルコンピュータ1200のスピーカ1306を制御するオーディオ再生コントローラである。
【0175】
サウスブリッジ1309は、LPC(Low Pin Count)バス1314上の各デバイス、及びPCI(Peripheral Component Interconnect)バス1315上の各デバイスを制御する。また、サウスブリッジ1309は、各種ソフトウェア及びデータを格納する記憶装置であるSSD1を、ATAインタフェースを介して制御する。
【0176】
パーソナルコンピュータ1200は、セクタ単位でSSD1へのアクセスを行う。ATAインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がSSD1に入力される。
【0177】
また、サウスブリッジ1309は、BIOS−ROM1310、及びODDユニット1311をアクセス制御するための機能も有している。
【0178】
EC/KBC1312は、電力管理のためのエンベデッドコントローラと、キーボード(KB)1206及びタッチパッド1207を制御するためのキーボードコントローラとが集積された1チップマイクロコンピュータである。
【0179】
このEC/KBC1312は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ1200の電源をON/OFFする機能を有している。ネットワークコントローラ1313は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【0180】
パーソナルコンピュータ1200が搭載するSSD1は、上述した通り、リソースの整理が終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができる構成であるため、コマンドの実行時間の差が少なくなる、すなわちコマンドの応答時間に偏りができることを抑制できる。従って、パーソナルコンピュータ1200を使用するユーザの利便性を向上させることが可能となる。
【0181】
なお、パーソナルコンピュータ1200には、第2乃至第6の実施形態にて説明した何れのSSDをも搭載することができ、SSD1を搭載した場合と同等の効果を得ることができる。
【0182】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0183】
1、6、7、8、9 SSD、2 ホスト装置、10、60、70、80、90 制御部、11、61、76、81 リソース管理部、12、62、72、82、92 転送速度設定部、13、63、73、83 転送制御部、14、67 アドレス変換テーブル、15、65、75、85、95 モード記憶部、20 ホストI/F、30 バッファ、31 ライトキャッシュ領域、50 NANDメモリ、51 メモリセルアレイ、52 システム領域、53 ユーザ領域、54 スナップショット、55 ログ、64 テーブルポインタテーブル、66 テーブル記憶領域、71 NAND管理部、84−1 ブロック管理テーブル、84−2 ページ管理テーブル、86 キャッシュ領域、87 ストレージ領域、91 システム管理部、96 システムキュー。
【技術分野】
【0001】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【0002】
従来、コンピュータシステムに用いられる外部記憶装置として、NAND型の不揮発性素子からなるメモリセルアレイを搭載したSSD(Solid State Drive)が注目されている。フラッシュメモリは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
【0003】
またSSDは、更新データをメモリセルアレイのブロックへページ単位で記録し、利用可能なブロックが枯渇したとき、データの整理を行って利用可能なブロックを生成するガベージコレクションと呼ばれる処理を実行する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−211231号公報
【特許文献2】特開2010−157139号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の一つの実施形態は、リソースの整理時における応答時間の増大を低減したメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の一つの実施形態によれば、メモリシステムは、ホスト装置から書き込み要求されたデータを記憶する不揮発性メモリと、前記不揮発性メモリにかかるリソースの使用量が所定量に達したとき前記不揮発性メモリにかかるリソースを整理してリソースを増加させるリソース管理部と、前記ホスト装置から書き込みデータを受信する転送速度の設定値を算出する転送速度設定部と、前記ホスト装置から書き込みデータを受信して、当該受信した書き込みデータを前記不揮発性メモリに転送する転送制御部と、を備える。前記転送速度設定部は、前記不揮発性メモリにかかるリソースの使用量が増加するほど低い設定値を算出し、前記転送制御部は、前記リソース管理部がリソースを整理している間、前記ホスト装置からの書き込みデータの受信を前記転送速度設定部が算出した設定値の転送速度で実行する。
【図面の簡単な説明】
【0007】
【図1】図1は、本発明の実施形態のSSDの構成を示すブロック図である。
【図2】図2は、ガベージコレクションを説明するための概念図である。
【図3】図3は、本発明の実施形態における使用ブロック数と転送速度との関係を説明する図である。
【図4】図4は、SSDの転送速度の推移を説明する図である。
【図5】図5は、転送速度設定部の動作を説明するフローチャートである。
【図6】図6は、リソース管理部がガベージコレクションを実行/停止する動作を説明するフローチャートである。
【図7】図7は、転送制御部の動作を説明するフローチャートである。
【図8】図8は、コマンドの受信間隔時間に応じて転送速度およびしきい値を変化させる場合の転送速度およびしきい値を説明する図である。
【図9】図9は、転送速度設定部が各モードと転送速度との関係およびしきい値を決定する動作を説明するフローチャートである。
【図10】図10は、第2の実施形態のSSDの構成を示すブロック図である。
【図11】図11は、アドレス変換テーブル67のデータ構成例を説明する図である。
【図12−1】図12−1は、テーブル記憶領域におけるガベッジコレクションの概念を説明する図である。
【図12−2】図12−2は、テーブル記憶領域におけるガベッジコレクションの概念を説明する図である。
【図13】図13は、第2の実施形態におけるテーブル記憶領域の使用ブロック数と転送速度との関係を説明する図である。
【図14】図14は、転送速度設定部の動作を説明するフローチャートである。
【図15】図15は、リソース管理部がガベージコレクションを実行/停止する動作を説明するフローチャートである。
【図16】図16は、本発明の第3の実施形態のSSDの構成を示すブロック図である。
【図17】図17は、ライトキャッシュ領域の使用率と転送速度との関係を説明する図である。
【図18】図18は、転送速度設定部の動作を説明するフローチャートである。
【図19】図19は、リソース管理部が書き込みデータをNANDメモリへ退避させる動作を説明するフローチャートである。
【図20】図20は、転送制御部がデータ転送を行う動作を説明するフローチャートである。
【図21】図21は、第4の実施形態のSSDの構成を示すブロック図である。
【図22−1】図22−1は、NAND整理の処理を説明する図である。
【図22−2】図22−2は、NAND整理の処理を説明する図である。
【図23】図23は、ページ管理テーブルのサイズと転送速度との関係を説明する図である。
【図24】図24は、転送速度設定部の動作を説明するフローチャートである。
【図25】図25は、リソース管理部がNAND整理の処理を開始/停止する動作を説明するフローチャートである。
【図26】図26は、第5の実施形態のSSDの構成を示すブロック図である。
【図27】図27は、システムキュー内のデータ量と転送速度との関係を説明する図である。
【図28】図28は、転送速度設定部の動作を説明するフローチャートである。
【図29】図29は、システム管理部がシステム処理の処理を開始/停止する動作を説明するフローチャートである。
【図30】図30は、ホスト装置からの書き込みデータがライトキャッシュ領域31に格納されるまでの動作を説明するシーケンス図である。
【図31】図31は、パーソナルコンピュータの外観を示す斜視図である。
【図32】図32は、パーソナルコンピュータの機能構成例を示す図である。
【発明を実施するための形態】
【0008】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。なお、以下の実施形態では、本発明の実施形態にかかるメモリシステムをSSDに適用した例について説明するが、当該メモリシステムの適用対象はSSDに限定されない。
【0009】
(第1の実施形態)
図1は、本発明の第1の実施形態のSSDの構成を示すブロック図である。図示するように、SSD1は、パーソナルコンピュータなどのホスト装置2とATA(Advanced Technology Attachment)規格などの通信インタフェースで接続され、ホスト装置2の外部記憶装置として機能する。SSD1がホスト装置2から受信する読み出し/書き込み要求は、ホストアドレス(例えばLBA:Logical Block Addressing)と読み出し/書き込み要求するデータのサイズ(例えばセクタ数、1セクタは例えば512バイト)とが含まれている。
【0010】
SSD1は、制御部10、ホストインタフェース(I/F)20、バッファ30、NANDI/F40、およびNANDメモリ50を備えている。
【0011】
ホストI/F20は、制御部10の制御の下、ホスト装置2との通信を制御する。制御部10は、ホストI/F20を介してホスト装置2から送信されたコマンドを解釈し、当該コマンドに応じて、NANDメモリ50へのデータの書き込みやNANDメモリ50からのデータの読み出しを制御する。
【0012】
NANDI/F40は、NANDメモリ50の制御を行うものであり、誤り訂正回路などを含む。
【0013】
バッファ30は、例えばDRAM(Dynamic Random Access Memory)などにより構成され、ホスト装置2とNANDメモリ50との間のデータ転送のためのバッファとして用いられる。特に、バッファ30は、ホスト装置2からホストI/F20を介して受信した書き込みデータをキャッシュするライトキャッシュ領域31を備えている。ライトキャッシュ領域31にキャッシュされている書き込みデータは、ホスト装置2からフラッシュコマンド、スリープコマンド、もしくはスタンバイコマンドなど、ライトキャッシュ領域31内のデータの不揮発化を促すコマンド(以下、フラッシュコマンドと総称する)を受信したとき、またはホスト装置2からの指示とは別にライトキャッシュ領域31がデータ溢れするなどの予め定められたタイミングで、NANDI/F40を介してNANDメモリ50に退避される。
【0014】
NANDメモリ50は、NAND型の不揮発性記憶素子からなるメモリセルアレイ51を備えている。NANDメモリ50は、ページと呼ばれる単位で読み書きが可能となっている。そして、複数のページがまとまってブロックと呼ばれる消去単位の記憶領域が構成される。1ページのサイズは例えば4KBであり、64ページで1ブロックを構成する。メモリセルアレイ51はこのブロックが複数集まって構成される。
【0015】
ここで、NANDメモリ50への書き込み方式について説明する。NAND型のメモリセルアレイ51では、例えば以下に述べる方式が採用されている。まず、書き込みの前に、ブロックを消去する必要がある。すなわち、NANDメモリ50においては、消去済みのブロックのうち書き込みがまだ行われていないページに対して順次書き込みが可能であり、既に書き込みが行なわれたページに対する上書きが不可能である。また、ホスト装置2からの要求に応じたデータの書き込みは、ホスト装置2で用いられる論理アドレス(LBA)で指定される。一方、NANDメモリ50へのデータ書き込みは、NANDメモリ50の物理的な記憶位置(物理アドレス)により、論理アドレスとは無関係に、ページの昇順に書き込みが行なわれる。この論理アドレスと物理アドレスとの対応関係は、後述するアドレス変換テーブル14としてSSD1内に保持される。そして、データの書き込み要求において指定された論理アドレスが再度指定されて新たなデータの書き込みがホストから要求されると、SSD1は、消去済みのブロックのうちの書き込みがまだ行なわれていないページに対して新たなデータの書き込みを行う。このとき、当該論理アドレスに対応して前回書き込みが行われたページを無効にして、新たなデータの書き込みが行われたページを有効にする。
【0016】
この追記方式において、書き込みを続けることにより、書き込み処理に利用可能なブロック(空きブロック)が少なくなるとともに無効にされたページが増えてくると、NANDメモリ50において書き込み可能な容量が少なくなってくる。そのため、SSD1は、適当なタイミングでガベージコレクションを行なう。図2は、ガベージコレクションを説明するための概念図である。SSD1は、無効にされたページを含むブロックのうち、無効にされていない物理アドレスに書き込まれたデータ(有効データという)を集めて新たに空きブロックに書き直すことにより、有効データを移動させる。その後、SSD1は、当該ブロックに対して消去を行うことにより、新たな空きブロックを生成する。SSD1は、このようなガベージコレクションを行なうことにより、書き込みが不能になったブロックが新たに書き込み可能になって、空きブロックを確保することが可能になる。また、移動により有効データが書き込まれたブロックにおいても、書き込みがまだ行なわれていないページがあればそのページに新たに書き込みが可能である。
【0017】
ここで、ガベージコレクションを実行するためには1回以上のコピーが発生する。また、ブロック内の有効データが配置されている状況によってはコピー回数がさらに増加し、ホスト装置2からのアクセスに局所性が存在しない場合には非常に膨大なコピー回数になってしまう。また、ブロックの使用量は、有効データが少ないブロックが多い場合には一度のガベージコレクションで多くの使用ブロック数が減り、有効データ量が多いブロックが多い場合には一度のガベージコレクションでは使用ブロック数が減らない場合が存在する。つまり、有効データの少ないブロックが多いかどうかでコピー回数が変化する。このように、有効データの少ないブロックの量が少ない場合には、ガベージコレクションによる空きブロックの生成に非常に長い時間がかってしまい、結果としてホスト装置2からのコマンドを待たせてしまう状況が発生する。
【0018】
そこで、本発明の実施形態においては、使用ブロック(有効データが記録されているブロック)の数に応じて段階的にホスト装置2との間の転送速度を制限する。転送速度の制限は、データ転送に待ち時間を挿入することによって行われる。例えば、ホスト装置2からのデータ転送コマンドの実行時に待ち時間が挿入される。
【0019】
図3は、本発明の実施形態における使用ブロック数と転送速度との関係を説明する図である。本図において、紙面右方向ほど使用ブロック数が多く、空きブロック数が少ない。図示するように、転送速度は、rmax、r1、r2、およびrminを取りうる。rmaxは全く制限されていない状態における転送速度、rminは最悪応答時間に基づいて決まる転送速度であり、夫々の転送速度の間には、rmax>r1>r2>rminの関係がある。rmax、r1、r2、rminのうちどの転送速度でデータ転送を実行するかは、使用ブロック数と所定のしきい値との比較に基づいて決定される。rmax、r1、r2、rminの転送速度が定められたモードを夫々モード0、モード1、モード2、モード3ということにすると、モード0からモード1への遷移、モード1からモード2への遷移、モード2からモード3への遷移は、使用ブロック数としきい値T1、T2、Tlimitとの比較に基づいて決められる。また、モード3からモード2への遷移、モード2からモード1への遷移、モード1からモード0への遷移は、使用ブロック数としきい値Tlimit、T3、T4との比較に基づいて決められる。なお、T4<T1<T3<T2<Tlimitとする。このようにモードの遷移の判断のためのしきい値にヒステリシス特性を持たせたのは、しきい値の付近で使用ブロック数が推移することによりモードの切り替えが頻発することを防止するためである。なお、しきい値にヒステリシス特性を持たせなくても構わない。
【0020】
図4は、図3に示した関係を用いて転送速度が決定される場合のSSD1の転送速度の推移を説明する図である。図示するように、SSD1によれば、ガベージコレクションが開始されることにより最初からrminまで転送速度が低下するのではなく、使用ブロック数が増加するにつれて転送速度がr1、r2と段階的に低下して、使用ブロック数が減少するにつれて転送速度がr1、rmaxに段階的に回復してゆく。
【0021】
このように、本発明の実施形態によれば、ガベージコレクションによる空きブロックの生成速度とデータ書き込みによる空きブロックの消費速度とのバランスに基づいて転送速度の設定値が決定されるので、ガベージコレクションが完了するまでホスト装置2との間の転送にかかる処理を停止する場合に比べてホスト装置2からのコマンドが端的に待たされる状況を防ぐことができる。
【0022】
図1に戻り、メモリセルアレイ51には、SSD1の制御にかかる各種情報が格納されるシステム領域52およびホスト装置2からの書き込みデータが格納されるユーザ領域53が確保されている。
【0023】
制御部10は、SSD1全体の動作の制御を実行する。具体的には、制御部10は、リソース管理部11、転送速度設定部12、転送制御部13、アドレス変換テーブル14およびモード記憶部15を備えている。
【0024】
アドレス変換テーブル14は、前述のように、論理アドレスと物理アドレスとの対応関係を記述したテーブルであって、例えばDRAMやSRAM(Static Random Access Memory)などの記憶装置により保持される。
【0025】
転送速度設定部12は、ユーザ領域53内の使用ブロック数と図3に示したしきい値とを用いて転送速度の設定値を算出する。ここでは、図3に示すように、しきい値の特性にヒステリシスを持たせているので、転送速度設定部12は、モード記憶部15にモードを記憶させておき、当該モード記憶部が記憶しているモードとしきい値とに基づいて現在のモードを求め、前記モード記憶部15の記憶内容を当該求めた現在のモードで更新するとともに当該求めた現在のモードに対応する転送速度の設定値を算出する。なお、モード記憶部15は、小規模なメモリやレジスタなどに保持されるようにしてもよいし、アドレス変換テーブル14が保持される記憶装置内に保持されるようにしてもよい。
【0026】
転送制御部13は、ホストI/F20およびNANDI/F40を制御して、ホスト装置2とNANDメモリ50との間のデータ転送を制御する。ホスト装置2から書き込みデータの受信を行う際、転送制御部13は、転送速度設定部12が算出した転送速度の設定値と書き込みデータのサイズとに基づいて待ち時間を算出し、ホストI/F20とホスト装置2との間のデータ転送に当該算出した待ち時間を挿入することによってホスト装置2からの書き込みデータの転送速度を前記転送速度の設定値に制限する。書き込みデータのサイズによらず当該データの転送速度を一定にするためである。
【0027】
また、転送制御部13は、ホスト装置2からフラッシュコマンドを受信したとき、またはライトキャッシュ領域31が溢れるなどのタイミングで、ライトキャッシュ領域31にキャッシュされている書き込みデータをNANDメモリ50へ退避させる。当該退避対象の書き込みデータはメモリセルアレイ51に確保されたユーザ領域53に書き込まれる。そして、転送制御部13は、受信したフラッシュコマンドの実行を完了した旨の通知をホストI/F20を介してホスト装置2へ送信する。ここで、転送制御部13は、転送速度設定部12が算出した転送速度の設定値と退避対象のデータのサイズとに基づいて待ち時間を算出し、フラッシュコマンドを受信してから当該算出した待ち時間が経過した後、前記フラッシュコマンドの実行を完了した旨の通知(実行完了通知)をホスト装置2へ送信する。すなわち、転送速度設定部12は、フラッシュコマンドの実行が完了した後、しばらくしてからフラッシュコマンドの実行完了通知をホスト装置2へ送信する。
【0028】
なお、転送制御部13は、算出した待ち時間がフラッシュコマンドの実行にかかる時間よりも小さい場合、実際にフラッシュコマンドを実行完了した後に実行完了通知を送信してもよく、算出した待ち時間が経過した後に実行完了通知をホスト装置2へ送信してもよい。また、フラッシュコマンドを実行時に空きブロックが枯渇してガベージコレクションが完了するまでフラッシュコマンドの実行が待たされることを防止するために、メモリセルアレイ51内に、ライトキャッシュ領域31と等しいサイズの特別な領域(緊急退避用領域)を確保するようにしてもよい。
【0029】
例えば、算出した待ち時間が最悪応答時間を越えたとき、転送制御部13は、ライトキャッシュ領域31内のデータを当該緊急退避用領域内にそのままコピーし、最悪応答時間が経過したときに実行完了通知を送信する。緊急退避用領域を一度使ってしまうと次の緊急時に対応できなくなるため、一時的にモード3へ移行し、緊急退避用領域を確保できてから元のモードへ戻るなどの処理を行うことが望ましい。これにより、ライトキャッシュ内にデータが存在しないため、緊急退避用領域を使用する状況を抑制できる。なお、緊急退避用領域を特別に設けることをせず、全ブロック数からTlimitを減算して得られる数の領域を緊急退避用領域として使用するようにしてもよい。
【0030】
転送制御部13は、ライトキャッシュ領域31からNANDメモリ50へのデータ転送を実行する際、退避対象の書き込みデータのLBAとメモリセルアレイ51の物理アドレスとの対応関係をアドレス変換テーブル14に登録する。
【0031】
リソース管理部11は、ホスト装置2からの書き込みデータがライトキャッシュ領域31に転送されている最中に、またはフラッシュコマンドを受信してから実行完了通知が送信されるまでの間においてフラッシュコマンドが実行されていない間に、ガベージコレクションを実行することができる。
【0032】
また、リソース管理部11は、アドレス変換テーブル14を不揮発性のNANDメモリ50に保存するために、スナップショットをとる機能を有している。スナップショット54は、NANDメモリ50に格納されたアドレス変換テーブル14のコピーであり、制御部10が備えるアドレス変換テーブル14をNANDメモリ50内のシステム領域52に保存することを、スナップショットをとると表現している。
【0033】
ログ55は、アドレス変換テーブル14の差分情報である。アドレス変換テーブル14の更新の度にスナップショットをとっていたのでは、NANDメモリ50への書き込み回数が増えるために、通常は差分情報としてのログ55だけをシステム領域52に記録していく。ログ55を保持できるサイズは有限であるため、リソース管理部11は、所定量のログ55が蓄積されたとき、ログ55をアドレス変換テーブル14に反映させるとともにスナップショットをとって、蓄積されたログ55を削除する処理を実行する。生成されたスナップショット54は、蓄積されたログ55が反映されたものとなる。なお、ログ55はNANDメモリ50ではなくアドレス変換テーブル14を保持する記憶装置などに置かれるようにしてもよい。
【0034】
次に、本発明の実施形態のSSDの動作を説明する。図5は、転送速度設定部12の動作を説明するフローチャートである。
【0035】
図5に示すように、まず、転送速度設定部12は、ユーザ領域53内の使用ブロック数を取得する(ステップS1)。ユーザ領域53内の使用ブロック数は、例えばアドレス変換テーブル14に基づいて求めることができる。
【0036】
そして、転送速度設定部12は、モード記憶部15が記憶しているモードがモード0であるか否か(ステップS2)、モード1であるか否か(ステップS3)、またはモード2であるか否か(ステップS4)を判定する。
【0037】
モード記憶部15にモード0を記憶していた場合(ステップS2、Yes)、転送速度設定部12は、取得した使用ブロック数がしきい値T1以上の値であるか否かを判定する(ステップS5)。使用ブロック数がT1以上であった場合(ステップS5、Yes)、転送速度設定部12は、モード記憶部15が記憶している値をモード1で上書きする(ステップS6)。そして、転送速度設定部12は、モード記憶部15が記憶しているモードに応じた転送速度を設定値とする(ステップS17)。転送速度の設定値は、転送制御部13に通知される。ステップS17の処理が完了すると、ステップS1へ移行する。取得した使用ブロック数がしきい値T1以上の値ではなかった場合(ステップS5、No)、ステップS6がスキップされてステップS17に移行する。
【0038】
モード記憶部15にモード1を記憶していた場合(ステップS3、Yes)、転送速度設定部12は、取得した使用ブロック数がしきい値T2以上の値であるか否かを判定する(ステップS7)。使用ブロック数がT2以上であった場合(ステップS7、Yes)、転送速度設定部12は、モード記憶部15が記憶している値をモード2で上書きし(ステップS8)、ステップS17に移行する。取得した使用ブロック数がしきい値T2以上の値ではなかった場合(ステップS7、No)、転送速度設定部12は、取得した使用ブロック数がしきい値T4以下の値であるか否かを判定する(ステップS9)。使用ブロック数がしきい値T4以下の値であった場合(ステップS9、Yes)、転送速度設定部12は、モード記憶部15が記憶している値をモード0で上書きし(ステップS10)、ステップS17に移行する。使用ブロック数がしきい値T4以下の値ではなかった場合(ステップS9、No)、ステップS10がスキップされてステップS17に移行する。
【0039】
モード記憶部15にモード2を記憶していた場合(ステップS4、Yes)、転送速度設定部12は、取得した使用ブロック数がしきい値Tlimit以上の値であるか否かを判定する(ステップS11)。使用ブロック数がTlimit以上であった場合(ステップS11、Yes)、転送速度設定部12は、モード記憶部15が記憶している値をモード3で上書きし(ステップS12)、ステップS17に移行する。取得した使用ブロック数がしきい値Tlimit以上の値ではなかった場合(ステップS11、No)、転送速度設定部12は、取得した使用ブロック数がしきい値T3以下の値であるか否かを判定する(ステップS13)。使用ブロック数がしきい値T3以下の値であった場合(ステップS13、Yes)、転送速度設定部12は、モード記憶部15が記憶している値をモード1で上書きし(ステップS14)、ステップS17に移行する。使用ブロック数がしきい値T3以下の値ではなかった場合(ステップS13、No)、ステップS14がスキップされてステップS17に移行する。
【0040】
モード記憶部15に記憶されていたモードがモード0〜2のいずれでもない場合(ステップS2、No、ステップS3、No、ステップS4、No)は、モード記憶部15にはモード3が記憶されている。その場合、転送速度設定部12は、取得した使用ブロック数がしきい値Tlimit以下の値であるか否かを判定する(ステップS15)。使用ブロック数がTlimit以下であった場合(ステップS15、Yes)、転送速度設定部12は、モード記憶部15が記憶している値をモード2で上書きし(ステップS16)、ステップS17に移行する。使用ブロック数がしきい値Tlimit以下の値ではなかった場合(ステップS15、No)、ステップS16がスキップされてステップS17に移行する。
【0041】
図6は、リソース管理部11がガベージコレクションを実行/停止する動作を説明するフローチャートである。図示するように、まず、リソース管理部11は、モード記憶部15がモード0を記憶しているか否かを判定する(ステップS21)。モード記憶部15がモード0を記憶していない場合(ステップS21、No)、リソース管理部11はガベージコレクションを開始する(ステップS22)。モード記憶部15がモード0を記憶している場合(ステップS21、Yes)、リソース管理部11は、モード記憶部15の記憶内容がモード0でなくなるまでステップS21の判定処理を継続する。
【0042】
リソース管理部11は、ガベージコレクションを開始後、再びモード記憶部15がモード0を記憶しているか否かを判定する(ステップS23)。モード記憶部15がモード0を記憶している場合(ステップS23、Yes)、リソース管理部11はガベージコレクションを停止して(ステップS24)、ステップS21の判定処理を実行する。ステップS23においてモード記憶部15がモード0を記憶していない場合(ステップS23、No)、リソース管理部11は、モード記憶部15の記憶内容がモード0となるまでステップS23の判定処理を継続する。
【0043】
図7は、転送制御部13の動作を説明するフローチャートである。図示するように、まず、転送制御部13は、書き込みコマンドを受信したか否かを判定する(ステップS31)。書き込みコマンドを受信していない場合(ステップS31、No)、転送制御部13は、フラッシュコマンドを受信したか否かを判定する(ステップS32)。フラッシュコマンドを受信していない場合(ステップS32、No)、転送制御部13は、ステップS31の判定処理を実行する。
【0044】
ステップS31において、書き込みコマンドを受信したと判定した場合(ステップS31、Yes)、転送制御部13は、書き込みコマンドにより書き込み要求されたデータのサイズと転送速度設定部12が算出した転送速度の設定値とに基づいて待ち時間を算出する(ステップS33)。具体的には、転送制御部13は下記の式1に基づいて待ち時間を算出する。
サイズ/(実行時間+待ち時間)=転送速度の設定値 (1)
ここで、式(1)における実行時間とは、転送速度rmaxで当該書き込み要求されたデータを転送したときの実行時間を指す。なお、実行時間をゼロ値として待ち時間を算出するようにしてもよい。この場合、必要以上に待ち時間をデータ転送に挿入するとなり、ガベージコレクションをできる量が変わるが、ガベージコレクション対象の量は変わらないので概ね同じ時間でモード0に戻すことができる。
【0045】
ステップS33の後、転送制御部13は、前記書き込み要求されたデータのデータ転送中にステップS33にて算出した待ち時間を挿入することによって、前記書き込み要求されたデータのデータ転送を転送速度の設定値で実行する(ステップS34)。転送制御部13は、ステップS34のデータ転送が完了すると、ステップS31の判定処理を実行する。
【0046】
ステップS32において、フラッシュコマンドを受信したと判定した場合(ステップS32、Yes)、転送制御部13は、ライトキャッシュ領域31にキャッシュされている退避対象のデータのサイズと転送速度設定部12が算出した転送速度の設定値とに基づいて待ち時間を算出する(ステップS35)。具体的には、転送制御部13は下記の式2に基づいて待ち時間を算出する。
サイズ/待ち時間=転送速度の設定値 (2)
【0047】
ステップS35の後、転送制御部13は、フラッシュコマンドを実行し、当該フラッシュコマンドを受信してからステップS35にて算出した待ち時間が経過した後にフラッシュコマンドを実行完了した旨の通知をホスト装置2へ送信する(ステップS36)。そして、転送制御部13は、ステップS31の判定処理を実行する。
【0048】
なお、以上の説明においては、使用ブロック数と所定のしきい値との比較に基づいて転送速度の設定値を算出するとして説明したが、空きブロック数としきい値とを比較することによっても同様の動作および効果を実現することができることはいうまでもない。また、転送速度の設定値の算出のために使用ブロック数以外のリソース量を用いることができる。使用可能な他のリソース量としては、例えばシステム領域52の使用可能サイズが挙げられる。システム領域52のうちの使用可能なサイズは、ログ55の量が多くなった場合に少なくなってくる。リソース管理部11は、システム領域52の使用サイズが所定量に達したとき、ログ55をスナップショット54に反映させて、反映済みのログ55を消去し、システム領域52の使用可能サイズを整理するようにするとよい。
【0049】
このように、本発明の実施形態によれば、NANDメモリ50にかかるリソースの使用量が所定量に達したときNANDメモリ50にかかるリソースを整理してリソースを増加させるリソース管理部11と、ホスト装置2からの書き込みデータの受信にかかる転送速度の設定値を算出する転送速度設定部12と、ホスト装置2から書き込みデータを受信して、受信した書き込みデータをNANDメモリ50に転送する転送制御部13と、を備え、転送速度設定部12は、NANDメモリ50のリソースの使用量が増加するほど低い設定値を算出し、転送制御部13は、リソース管理部11がリソースを整理している間、前記ホスト装置2からの書き込みデータの受信を転送速度設定部12が算出した設定値の転送速度で実行する、ように構成したので、リソースの整理が終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができるようになる。
【0050】
また、転送制御部13は、フラッシュコマンドを受信したとき、ライトキャッシュ領域31にキャッシュされている退避対象のデータのサイズと転送速度の設定値とに基づいて待ち時間を算出し、フラッシュコマンドを受信してから当該算出した待ち時間が経過した後に前記受信したフラッシュ要求に対する実行完了通知をホスト装置2に送信する、ように構成したので、フラッシュコマンドを受信した際においてもガベージコレクションを実行することができるので、当該フラッシュコマンドの実行完了後に書き込みコマンドを受信したとき、空きブロックの枯渇を抑制し、結果として当該書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができる。
【0051】
なお、転送速度設定部12は、転送速度の設定値を算出するために使用するしきい値および/または転送速度の値をコマンドの受信間隔に応じて変化させるようにしてもよい。図8は、コマンドの受信間隔時間に応じて転送速度およびしきい値を変化させる場合の転送速度およびしきい値を説明する図である。図示するように、コマンドの受信間隔時間がtthよりも大きいとき、r1としてr1a、r2としてr2a、T1としてT1a、T2としてT2a、T3としてT3a、TlimitとしてTlimitaが使用される。
【0052】
また、コマンドの受信間隔時間がtthよりも小さいとき、r1としてr1b、r2としてr2b、T1としてT1b、T2としてT2b、T3としてT3b、TlimitとしてTlimitbが使用される。ただし、rmax>r1a>r2a>rmin、T4a<T1a<T3a<T2a<Tlimita、rmax>r1b>r2b>rmin、T4b<T1b<T3b<T2b<Tlimitb、r1b<r1a、r2b<r2a、T1b<T1a、T2b<T2b、T3b<T3a、T4b<T4a、Tlimitb<Tlimitaの関係は保たれる。
【0053】
そして、転送速度設定部12は、図9のフローチャートに示す動作により各モードと転送速度との関係およびしきい値を決定する。すなわち、ステップS41において、転送速度設定部12は、コマンドの受信間隔時間がtthより大きいか否かを判定する(ステップS41)。
【0054】
コマンドの受信間隔時間がtthより小さい場合(ステップS41、No)、モードを決定するためのしきい値としてT1a、T2a、T3aおよびTlimitaを用い、モード0、1、2、3時の転送速度を夫々rmax、r1a、r2a、rminとする(ステップS42)。
【0055】
コマンドの受信間隔時間がtthより大きい場合(ステップS41、Yes)、モードを決定するためのしきい値としてT1b、T2b、T3bおよびTlimitbを用い、モード0、1、2、3時の転送速度を夫々rmax、r1b、r2b、rminとする(ステップS43)。
【0056】
ステップS42またはステップS43の後、ステップS41に移行する。なお、コマンドの受信間隔時間とは、コマンド受信時における前回受信したコマンドからの経過時間であってもよいし、コマンドの受信間隔を複数回記録しておき、当該記録しておいた受信間隔の平均値であってもよい。
【0057】
このように、コマンドの受信間隔が大きい場合には、ホスト装置2にとって応答時間が大きくなっても次のコマンドの実行を待たせる可能性が少ないので、SSD1は転送速度を遅くしてガベージコレクションに割く時間を多くすることができ、結果として速くガベージコレクションを完了することができる。また、コマンドの受信間隔が小さい場合には、ホスト装置2にとって高速な応答時間が求められるので、SSD1はガベージコレクションに割く時間を減らして転送速度を速くすることができる。
【0058】
また、コマンドの受信間隔が大きい場合にしきい値(特にT4)を小さくすることによって、受信間隔が小さくなる場合に備えて多めに空きブロックの量を確保しておくことができる。これによって、受信間隔が小さくなったときにおける転送速度を制限する機会を低減することができるようになる。
【0059】
(第2の実施形態)
第1の実施形態においては、NANDメモリ内に確保されたユーザ領域を転送速度を決定するためのリソースとみなすようにしたが、第2の実施形態においては、システム領域をリソースとしてみなすようにする。
【0060】
図10は、本発明の第2の実施形態のSSDの構成を示すブロック図である。ここでは、第1の実施形態と同じ構成要素には同一の符号を付し、重複する説明を省略する。
【0061】
図示するように、SSD6は、制御部60、ホストインタフェース(I/F)20、バッファ30、NANDI/F40、およびNANDメモリ50を備えている。
【0062】
NANDメモリ50は、NAND型の不揮発性記憶素子からなるメモリセルアレイ51を備えている。メモリセルアレイ51には、システム領域52およびユーザ領域53が確保されている。そして、第2の実施形態によれば、システム領域52には、アドレス変換テーブル67が格納されるテーブル記憶領域66が確保されている。アドレス変換テーブル67は、ユーザ領域53に格納されているデータにかかる論理アドレスと物理アドレスとの対応関係を記述したテーブルである。なお、テーブル記憶領域66は、複数のブロックを備えて構成される。
【0063】
図11は、アドレス変換テーブル67のデータ構成例を説明する図である。図示するように、当該テーブル67によれば、論理アドレスと物理アドレスとが対となったエントリが複数登録されて構成される。なお、アドレス変換テーブル67は、論理アドレスが連続するように夫々のエントリが登録されているものとする。
【0064】
本発明の第2の実施形態によれば、アドレス変換テーブル67はNANDメモリ50上に置かれるようにしているため、アドレス変換テーブル67は、追記により内容の更新が実行される。即ち、アドレス変換テーブル67が更新される際、更新部分の新しい方の内容が空きブロックの書き込みがまだ行われていないページに対して追記される。アドレス変換テーブル67は、更新単位となるサイズ毎に複数のテーブル(更新単位テーブルa、更新単位テーブルb、等)に分割されている。更新単位のサイズには、例えばページサイズやページサイズの自然数倍が採用される。また、更新単位のサイズを、更新単位テーブル毎のエントリ数が所定の数(例えば2のべき乗個)となるように定めるようにしてもよい。
【0065】
ここで、アドレス変換テーブル67の更新が行われるにつれて、追記により無効となった更新単位テーブルが増加し、利用可能な領域が減少する。そこで、テーブル記憶領域66についてもガベッジコレクションが行われる。図12−1および図12−2は、テーブル記憶領域66におけるガベッジコレクションの概念を説明する図である。
【0066】
図12−1は、ガベッジコレクション前のテーブル記憶領域66の状態を示している。ここでは、一例として、テーブル記憶領域66は3つのブロック66a〜66cを備えており、アドレス変換テーブル67は4つの更新単位テーブルa〜dに分割されているものとしている。図示するように、ブロック66a〜66cのうちのブロック66aおよびブロック66bを使用して更新単位テーブルa〜dの内容が保持されている。テーブル記憶領域66の記憶内容のうち、8個の更新単位テーブルの内容が無効となっている。また、有効な更新単位テーブルbおよび有効な更新単位テーブルcがブロック66aに格納されており、有効な更新単位テーブルaおよび有効な更新単位テーブルdがブロック66bに格納されている。
【0067】
更新単位テーブルa〜dの夫々にかかる有効な内容の格納位置は、テーブルポインタテーブル64に含まれるポインタにより特定できるようになっている。本図の例においては、テーブルポインタテーブル64に含まれる夫々のポインタは、ポインタの検索のためのインデックスとして用いられる論理アドレスが対応付けられている。当該インデックスとしての論理アドレスは、例えば、対応する更新単位テーブルに含まれているエントリのうちの、先頭のエントリに含まれる論理アドレスと等しい。または、更新単位テーブルを構成するエントリに含まれる夫々の論理アドレスに共通する上位のビット列をインデックスとしてテーブルポインタテーブル64に登録しておくようにしてもよい。
【0068】
図12−2は、ガベッジコレクション後のテーブル記憶領域66の状態を示している。図示するように、ガベッジコレクション後には、ブロック66aに格納されていた有効な更新単位テーブルbおよび有効な更新単位テーブルcと、ブロック66bに格納されていた有効な更新単位テーブルaおよび有効な更新単位テーブルdとが夫々ブロック66cにコピーされ、ブロック66aおよびブロック66bの記憶内容が消去されている。また、有効な更新単位テーブルのコピーに伴って、テーブルポインタテーブル64に含まれているポインタの内容が更新されている。ガベッジコレクションが行われることにより、無効な更新単位テーブルにかかる内容が消去されて、利用可能な記憶容量がガベッジコレクション前よりも増加している。
【0069】
図10に戻り、制御部60は、リソース管理部61、転送速度設定部62、転送制御部63、テーブルポインタテーブル64、およびモード記憶部65を備えている。
【0070】
テーブルポインタテーブル64は、前述のように、更新単位テーブル毎の記憶位置を示すポインタの一覧により構成されるテーブルであって、例えばDRAMやSRAM(Static Random Access Memory)などの揮発性の記憶装置により保持される。
【0071】
転送速度設定部62は、テーブル記憶領域66の使用ブロック数に基づいてホスト装置2との間の転送速度の設定値を算出する。
【0072】
図13は、第2の実施形態におけるテーブル記憶領域66の使用ブロック数と転送速度との関係を説明する図である。本図において、紙面右方向ほど使用ブロック数が多く、空きブロック数が少ない。図示するように、転送速度は、rmax、r1、r2、およびrminを取りうる。rmaxは全く制限されていない状態における転送速度、rminは最悪応答時間に基づいて決まる転送速度であり、夫々の転送速度の間には、rmax>r1>r2>rminの関係がある。転送速度設定部62は、rmax、r1、r2、rminのうちどの転送速度でデータ転送を実行するかを、使用ブロック数と所定のしきい値との比較に基づいて決定する。rmax、r1、r2、rminの転送速度が定められたモードを夫々モード0、モード1、モード2、モード3ということにすると、モード0からモード1への遷移、モード1からモード2への遷移、モード2からモード3への遷移は、テーブル記憶領域66の使用ブロック数としきい値Tt1、Tt2、Ttlimitとの比較に基づいて決められる。また、モード3からモード2への遷移、モード2からモード1への遷移、モード1からモード0への遷移は、使用ブロック数としきい値Ttlimit、Tt3、Tt4との比較に基づいて決められる。なお、Tt4<Tt1<Tt3<Tt2<Ttlimitとする。このようにモードの遷移の判断のためのしきい値にヒステリシス特性を持たせたのは、しきい値の付近で使用ブロック数が推移することによりモードの切り替えが頻発することを防止するためである。なお、しきい値にヒステリシス特性を持たせなくても構わない。
【0073】
モード記憶部65は、転送速度設定部62が転送速度を算出する際に使用するモードの値を記憶する。モード記憶部65は、小規模なメモリやレジスタなどに保持されるようにしてよい。
【0074】
リソース管理部61は、テーブル記憶領域66のガベージコレクションを実行する。
【0075】
次に、本発明の第2の実施形態のSSDの動作を説明する。図14は、転送速度設定部62の動作を説明するフローチャートである。
【0076】
図14に示すように、まず、転送速度設定部62は、テーブル記憶領域66内の使用ブロック数を取得する(ステップS51)。ユーザ領域53内の使用ブロック数は、例えばアドレス変換テーブル67に基づいて求めることができる。
【0077】
そして、転送速度設定部62は、モード記憶部65が記憶しているモードがモード0であるか否か(ステップS52)、モード1であるか否か(ステップS53)、またはモード2であるか否か(ステップS54)を判定する。
【0078】
モード記憶部65にモード0を記憶していた場合(ステップS52、Yes)、転送速度設定部62は、取得した使用ブロック数がしきい値Tt1以上の値であるか否かを判定する(ステップS55)。使用ブロック数がTt1以上であった場合(ステップS55、Yes)、転送速度設定部62は、モード記憶部65が記憶している値をモード1で上書きする(ステップS56)。そして、転送速度設定部62は、モード記憶部65が記憶しているモードに応じた転送速度を設定値とする(ステップS67)。転送速度の設定値は、転送制御部63に通知される。ステップS67の処理が完了すると、ステップS51へ移行する。取得した使用ブロック数がしきい値Tt1以上の値ではなかった場合(ステップS55、No)、ステップS56がスキップされてステップS67に移行する。
【0079】
モード記憶部65にモード1を記憶していた場合(ステップS53、Yes)、転送速度設定部62は、取得した使用ブロック数がしきい値Tt2以上の値であるか否かを判定する(ステップS57)。使用ブロック数がTt2以上であった場合(ステップS57、Yes)、転送速度設定部62は、モード記憶部65が記憶している値をモード2で上書きし(ステップS58)、ステップS67に移行する。取得した使用ブロック数がしきい値Tt2以上の値ではなかった場合(ステップS57、No)、転送速度設定部62は、取得した使用ブロック数がしきい値Tt4以下の値であるか否かを判定する(ステップS59)。使用ブロック数がしきい値Tt4以下の値であった場合(ステップS59、Yes)、転送速度設定部62は、モード記憶部65が記憶している値をモード0で上書きし(ステップS60)、ステップS67に移行する。使用ブロック数がしきい値Tt4以下の値ではなかった場合(ステップS59、No)、ステップS60がスキップされてステップS67に移行する。
【0080】
モード記憶部65にモード2を記憶していた場合(ステップS54、Yes)、転送速度設定部62は、取得した使用ブロック数がしきい値Ttlimit以上の値であるか否かを判定する(ステップS61)。使用ブロック数がTtlimit以上であった場合(ステップS61、Yes)、転送速度設定部62は、モード記憶部65が記憶している値をモード3で上書きし(ステップS62)、ステップS67に移行する。取得した使用ブロック数がしきい値Ttlimit以上の値ではなかった場合(ステップS61、No)、転送速度設定部62は、取得した使用ブロック数がしきい値Tt3以下の値であるか否かを判定する(ステップS63)。使用ブロック数がしきい値Tt3以下の値であった場合(ステップS63、Yes)、転送速度設定部62は、モード記憶部65が記憶している値をモード1で上書きし(ステップS64)、ステップS67に移行する。使用ブロック数がしきい値Tt3以下の値ではなかった場合(ステップS63、No)、ステップS64がスキップされてステップS67に移行する。
【0081】
モード記憶部65に記憶されていたモードがモード0〜2のいずれでもない場合(ステップS52、No、ステップS53、No、ステップS54、No)は、モード記憶部65にはモード3が記憶されている。その場合、転送速度設定部62は、取得した使用ブロック数がしきい値Ttlimit以下の値であるか否かを判定する(ステップS65)。使用ブロック数がTtlimit以下であった場合(ステップS65、Yes)、転送速度設定部62は、モード記憶部65が記憶している値をモード2で上書きし(ステップS66)、ステップS67に移行する。使用ブロック数がしきい値Ttlimit以下の値ではなかった場合(ステップS65、No)、ステップS66がスキップされてステップS67に移行する。
【0082】
図15は、リソース管理部61がガベージコレクションを実行/停止する動作を説明するフローチャートである。図示するように、まず、リソース管理部61は、モード記憶部65がモード0を記憶しているか否かを判定する(ステップS71)。モード記憶部65がモード0を記憶していない場合(ステップS71、No)、リソース管理部61はテーブル記憶領域66のガベージコレクションを開始する(ステップS72)。モード記憶部65がモード0を記憶している場合(ステップS71、Yes)、リソース管理部61は、モード記憶部65の記憶内容がモード0でなくなるまでステップS71の判定処理を継続する。
【0083】
リソース管理部61は、ガベージコレクションを開始後、再びモード記憶部65がモード0を記憶しているか否かを判定する(ステップS73)。モード記憶部65がモード0を記憶している場合(ステップS73、Yes)、リソース管理部61はテーブル記憶領域66のガベージコレクションを停止して(ステップS74)、ステップS71の判定処理を実行する。ステップS73においてモード記憶部65がモード0を記憶していない場合(ステップS73、No)、リソース管理部61は、モード記憶部65の記憶内容がモード0となるまでステップS73の判定処理を継続する。
【0084】
転送制御部63の動作は第1の実施形態と同じであるので、説明を省略する。
【0085】
このように、本発明の第2の実施形態によれば、テーブル記憶領域66のうちのアドレス変換テーブルが書き込まれていない領域を転送速度を決定するためのリソースとするようにしたので、テーブル記憶領域66のガベージコレクションが終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができるようになる。
【0086】
なお、第2の実施形態においても、転送速度の設定値を算出するために使用するしきい値および/または転送速度の値をコマンドの受信間隔に応じて変化させるようにしてもよい。
【0087】
(第3の実施形態)
第1および第2の実施形態においては、不揮発性メモリとしてのNANDメモリ内の記憶領域をリソースとして見なすようにしたが、第3の実施形態以降においては、揮発性メモリ領域をリソースと見なす。第3の実施形態においては、ライトキャッシュ領域の空き領域を転送速度を決定するためのリソースとする。
【0088】
図16は、本発明の第3の実施形態のSSDの構成を示すブロック図である。ここでは、第1の実施形態と同じ構成要素には同一の符号を付し、重複する説明を省略する。
【0089】
図示するように、SSD7は、制御部70、ホストインタフェース(I/F)20、バッファ30、NANDI/F40、およびNANDメモリ50を備えている。
【0090】
バッファ30は、ホスト装置2からホストI/F20を介して受信した書き込みデータをキャッシュするライトキャッシュ領域31を備えている。
【0091】
NANDメモリ50は、NAND型の不揮発性記憶素子からなるメモリセルアレイ51を備えている。そして、メモリセルアレイ51には、アドレス変換テーブル14のスナップショット54およびログ55が格納されるシステム領域52と、ホスト装置2からの書き込みデータがライトキャッシュ領域31を経由して格納されるユーザ領域53とが確保されている。
【0092】
制御部70は、NAND管理部71、転送速度設定部72、転送制御部73、アドレス変換テーブル14およびモード記憶部75を備えている。
【0093】
転送速度設定部72は、ライトキャッシュ領域31の使用量と所定のしきい値とを用いて転送速度の設定値を算出する。
図17は、ライトキャッシュ領域31の使用量と転送速度との関係を説明する図である。本図において、紙面右方向ほどライトキャッシュ領域31の使用量が多く、ライトキャッシュ領域31の空き領域が少ない。図示するように、転送速度は、rmax、r1、r2、およびrminを取りうる。rmaxは全く制限されていない状態における転送速度、rminは最悪応答時間に基づいて決まる転送速度であり、夫々の転送速度の間には、rmax>r1>r2>rminの関係がある。rmax、r1、r2、rminのうちどの転送速度でデータ転送を実行するかは、ライトキャッシュ領域31の使用量と所定のしきい値との比較に基づいて決定される。rmax、r1、r2、rminの転送速度が定められたモードを夫々モード0、モード1、モード2、モード3ということにすると、モード0からモード1への遷移、モード1からモード2への遷移、モード2からモード3への遷移は、ライトキャッシュ領域31の使用量としきい値Tc1、Tc2、Tclimitとの比較に基づいて決められる。また、モード3からモード2への遷移、モード2からモード1への遷移、モード1からモード0への遷移は、ライトキャッシュ領域31の使用量としきい値Tclimit、Tc3、Tc4との比較に基づいて決められる。なお、Tc4<Tc1<Tc3<Tc2<Tclimitとする。このようにモードの遷移の判断のためのしきい値にヒステリシス特性を持たせたのは、しきい値の付近でライトキャッシュ領域31の使用量が推移することによりモードの切り替えが頻発することを防止するためである。なお、しきい値にヒステリシス特性を持たせなくても構わない。
【0094】
なお、ここでは、ライトキャッシュ領域31の使用量を転送速度の設定値の算出に使用されるものとして説明しているが、ライトキャッシュ領域31の使用量の替わりに使用中のライン数や使用率を用いることができる。
【0095】
モード記憶部75は、転送速度設定部72が転送速度を算出する際に使用するモードの値を記憶する。モード記憶部75は、小規模なメモリやレジスタなどに保持されるようにしてよい。
【0096】
転送制御部73は、ホストI/F20およびNANDI/F40を制御して、ホスト装置2とライトキャッシュ領域31との間のデータ転送を制御する。その際、転送速度設定部72が設定した転送速度でデータ転送を実行するようにする。また、転送制御部73は、ライトキャッシュ領域31にキャッシュされている書き込みデータをNANDメモリ50へ退避させるリソース管理部76を備えている。当該退避対象の書き込みデータはメモリセルアレイ51に確保されたユーザ領域53に書き込まれる。
【0097】
NAND管理部71は、ユーザ領域53のガベージコレクション、アドレス変換テーブル14のスナップショット54、およびアドレス変換テーブル14のログ55を取る動作を実行する。
【0098】
次に、本発明の第3の実施形態のSSDの動作を説明する。図18は、転送速度設定部72の動作を説明するフローチャートである。
【0099】
図18に示すように、まず、転送速度設定部72は、ライトキャッシュ領域31の使用量を取得する(ステップS81)。そして、転送速度設定部72は、モード記憶部75が記憶しているモードがモード0であるか否か(ステップS82)、モード1であるか否か(ステップS83)、またはモード2であるか否か(ステップS84)を判定する。
【0100】
モード記憶部75にモード0を記憶していた場合(ステップS82、Yes)、転送速度設定部72は、取得したライトキャッシュ領域31の使用量がしきい値Tc1以上の値であるか否かを判定する(ステップS85)。ライトキャッシュ領域31の使用量がTc1以上であった場合(ステップS85、Yes)、転送速度設定部72は、モード記憶部75が記憶している値をモード1で上書きする(ステップS86)。そして、転送速度設定部72は、モード記憶部75が記憶しているモードに応じた転送速度を設定値とする(ステップS97)。転送速度の設定値は、転送制御部73に通知される。ステップS97の処理が完了すると、ステップS81へ移行する。取得したライトキャッシュ領域31の使用量がしきい値Tc1以上の値ではなかった場合(ステップS85、No)、ステップS86がスキップされてステップS97に移行する。
【0101】
モード記憶部75にモード1を記憶していた場合(ステップS83、Yes)、転送速度設定部72は、取得したライトキャッシュ領域31の使用量がしきい値Tc2以上の値であるか否かを判定する(ステップS87)。ライトキャッシュ領域31の使用量がTc2以上であった場合(ステップS87、Yes)、転送速度設定部72は、モード記憶部75が記憶している値をモード2で上書きし(ステップS88)、ステップS97に移行する。取得したライトキャッシュ領域31の使用量がしきい値Tc2以上の値ではなかった場合(ステップS87、No)、転送速度設定部72は、取得したライトキャッシュ領域31の使用量がしきい値Tc4以下の値であるか否かを判定する(ステップS89)。ライトキャッシュ領域31の使用量がしきい値Tc4以下の値であった場合(ステップS89、Yes)、転送速度設定部72は、モード記憶部75が記憶している値をモード0で上書きし(ステップS90)、ステップS97に移行する。ライトキャッシュ領域31の使用量がしきい値Tc4以下の値ではなかった場合(ステップS89、No)、ステップS90がスキップされてステップS97に移行する。
【0102】
モード記憶部75にモード2を記憶していた場合(ステップS84、Yes)、転送速度設定部72は、取得したライトキャッシュ領域31の使用量がしきい値Tclimit以上の値であるか否かを判定する(ステップS91)。ライトキャッシュ領域31の使用量がTclimit以上であった場合(ステップS91、Yes)、転送速度設定部72は、モード記憶部75が記憶している値をモード3で上書きし(ステップS92)、ステップS97に移行する。取得したライトキャッシュ領域31の使用量がしきい値Tclimit以上の値ではなかった場合(ステップS91、No)、転送速度設定部72は、取得したライトキャッシュ領域31の使用量がしきい値Tc3以下の値であるか否かを判定する(ステップS93)。ライトキャッシュ領域31の使用量がしきい値Tc3以下の値であった場合(ステップS93、Yes)、転送速度設定部72は、モード記憶部75が記憶している値をモード1で上書きし(ステップS94)、ステップS97に移行する。ライトキャッシュ領域31の使用量がしきい値Tc3以下の値ではなかった場合(ステップS93、No)、ステップS94がスキップされてステップS97に移行する。
【0103】
モード記憶部75に記憶されていたモードがモード0〜2のいずれでもない場合(ステップS82、No、ステップS83、No、ステップS84、No)は、モード記憶部75にはモード3が記憶されている。その場合、転送速度設定部72は、取得したライトキャッシュ領域31の使用量がしきい値Tclimit以下の値であるか否かを判定する(ステップS95)。ライトキャッシュ領域31の使用量がTclimit以下であった場合(ステップS95、Yes)、転送速度設定部72は、モード記憶部75が記憶している値をモード2で上書きし(ステップS96)、ステップS97に移行する。ライトキャッシュ領域31の使用量がしきい値Tclimit以下の値ではなかった場合(ステップS95、No)、ステップS96がスキップされてステップS97に移行する。
【0104】
図19は、リソース管理部76がライトキャッシュ領域31にキャッシュされている書き込みデータをNANDメモリ50へ退避させる動作を説明するフローチャートである。図示するように、まず、リソース管理部76は、モード記憶部75がモード0を記憶しているか否かを判定する(ステップS101)。モード記憶部75がモード0を記憶していない場合(ステップS101、No)、リソース管理部76はライトキャッシュ領域31内のデータの退避を開始する(ステップS102)。モード記憶部75がモード0を記憶している場合(ステップS101、Yes)、リソース管理部76は、モード記憶部75の記憶内容がモード0でなくなるまでステップS101の判定処理を継続する。
【0105】
リソース管理部76は、データの退避を開始後、再びモード記憶部75がモード0を記憶しているか否かを判定する(ステップS103)。モード記憶部75がモード0を記憶している場合(ステップS103、Yes)、リソース管理部76はデータの退避を停止して(ステップS104)、ステップS101の判定処理を実行する。ステップS103においてモード記憶部75がモード0を記憶していない場合(ステップS103、No)、リソース管理部76は、モード記憶部75の記憶内容がモード0となるまでステップS103の判定処理を継続する。
【0106】
図20は、転送制御部73がデータ転送を行う動作を説明するフローチャートである。図示するように、まず、転送制御部73は、書き込みコマンドを受信したか否かを判定する(ステップS111)。書き込みコマンドを受信していない場合(ステップS111、No)、転送制御部73は、書き込みコマンドを受信するまでステップS111の判定処理を実行する。
【0107】
ステップS111において、書き込みコマンドを受信したと判定した場合(ステップS111、Yes)、転送制御部73は、書き込みコマンドにより書き込み要求されたデータのサイズと転送速度設定部72が算出した転送速度の設定値とを式(1)の関係式に適用して待ち時間を算出する(ステップS112)。なお、第1の実施形態と同様に、式(1)において、実行時間をゼロ値として待ち時間を算出するようにしてもよい。
【0108】
ステップS112の後、転送制御部73は、前記書き込み要求されたデータのデータ転送中にステップS112にて算出した待ち時間を挿入することによって、前記書き込み要求されたデータのデータ転送を転送速度の設定値で実行する(ステップS113)。転送制御部73は、ステップS113のデータ転送が完了すると、ステップS111の判定処理を実行する。
【0109】
このように、本発明の第3の実施形態によれば、ライトキャッシュ領域31の使用量に基づいて転送速度の設定値を算出するようにしたので、ライトキャッシュ領域31内のデータをNANDメモリ50に退避させる処理が終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができるようになる。
【0110】
なお、第3の実施形態においても、転送速度の設定値を算出するために使用するしきい値および/または転送速度の値をコマンドの受信間隔に応じて変化させるようにしてもよい。
【0111】
(第4の実施形態)
図21は、本発明の第4の実施形態のSSDの構成を示すブロック図である。ここでは、第1の実施形態と同じ構成要素には同一の符号を付し、重複する説明を省略する。
【0112】
図示するように、SSD8は、制御部80、ホストインタフェース(I/F)20、バッファ30、NANDI/F40、およびNANDメモリ50を備えている。
【0113】
バッファ30は、ホスト装置2からホストI/F20を介して受信した書き込みデータをキャッシュするライトキャッシュ領域31を備えている。
【0114】
NANDメモリ50は、NAND型の不揮発性記憶素子からなるメモリセルアレイ51を備えている。そして、メモリセルアレイ51には、システム領域52と、ホスト装置2からの書き込みデータが格納されるユーザ領域53とが確保されている。そして、ユーザ領域53には、ページサイズのデータがキャッシュされるキャッシュ領域86と、ブロックサイズのデータが格納されるストレージ領域87とがさらに確保されている。ストレージ領域87内のデータに関する論理アドレスと物理アドレスとの対応付けは、ブロック管理テーブル84−1により管理される。また、キャッシュ領域86内のデータに関する論理アドレスと物理アドレスとの対応付けは、ページ管理テーブル84−2により管理される。ライトキャッシュ領域31内のページ単位のデータは、まずキャッシュ領域86内に退避させられる。そして、キャッシュ領域86内のデータが増加すると、当該データは、論理アドレスが連続する他のデータとマージされて、ストレージ領域87を構成する空きブロックに書き込まれる。以降、この処理をNAND整理ということとする。
【0115】
図22−1および図22−2は、NAND整理の処理を説明する図である。図22−1は、NAND整理が行われる前の状態を示している。本図においては、キャッシュ領域86は3つのブロック(ブロック86a〜c)を備えており、ストレージ領域87は複数のブロック(ブロック87a〜f、・・・)を備えている。そして、制御部80には、ブロック管理テーブル84−1およびページ管理テーブル84−2が備えられている。キャッシュ領域86には、ブロック86aに4ページ分のデータが格納されており、ページ管理テーブル84−2は、ブロック86aに格納されている4ページ分のデータについて夫々論理アドレスと物理アドレスとの対応関係を示す4つのエントリが登録されている。ストレージ領域87には、ブロック87a〜dが書き込み済みとなっており、そのうちのブロック87aは、1ページ分のデータが追記により無効化された状態となっている。追記された1ページ分のデータは、ブロック86aの4ページ目に格納されている。
【0116】
図22−2は、上記したブロック86aの4ページ目に格納されているデータを対象としたNAND整理が実行された後の状態を示している。図22−1においては、ブロック86aの4ページ目に格納されているデータに論理アドレスが連続するデータは、ブロック87aに格納されていた。図22−2においては、ブロック86aの4ページ目に格納されているデータとブロック87aに格納されているデータとが読み出されてマージされ、空きブロックであったブロック87eにブロックサイズのデータとして書き込まれている。そして、ブロック87aの内容は消去されて空きブロックとなっている。また、上記したブロック86aの4ページ目に格納されていたデータは無効化され、ページ管理テーブル84−2内の当該無効化されたデータに対応するエントリは削除される。なお、ブロック86a内の無効なデータは、同一ブロック内の全てのデータが無効化されてから消去するようにしてもよいし、有効なデータを他の空きブロック(例えばブロック86b)に退避させてから消去するようにしてもよい。
【0117】
このように、ページ管理テーブル84−2のサイズは、キャッシュ領域86内に格納されているデータ量に応じて増減する。第4の実施形態においては、ページ管理テーブル84−2が格納される記憶領域をリソースとみなし、ページ管理テーブル84−2のサイズに応じて転送速度の制限値が算出される。なお、ここでは、ページ管理テーブル84−2のサイズを使用リソース量としてとらえて転送速度を算出するものとするが、サイズ以外に当該テーブルが格納される領域の使用率やエントリ数で代用することもできる。
【0118】
制御部80は、リソース管理部81、転送速度設定部82、転送制御部83、ブロック管理テーブル84−1、ページ管理テーブル84−2、およびモード記憶部85を備えている。
【0119】
ブロック管理テーブル84−1およびページ管理テーブル84−2は、前述のように、論理アドレスと物理アドレスとの対応付けを記録したテーブルであって、例えばDRAMやSRAM(Static Random Access Memory)など、揮発性メモリとしての記憶装置により保持される。
【0120】
転送速度設定部82は、ページ管理テーブル84−2のサイズと所定のしきい値とを用いて転送速度の設定値を算出する。
図23は、ページ管理テーブル84−2のサイズと転送速度との関係を説明する図である。本図において、紙面右方向ほどページ管理テーブル84−2のサイズが多く、ライトキャッシュ領域31の空き領域が少ない。図示するように、転送速度は、rmax、r1、r2、およびrminを取りうる。rmaxは全く制限されていない状態における転送速度、rminは最悪応答時間に基づいて決まる転送速度であり、夫々の転送速度の間には、rmax>r1>r2>rminの関係がある。rmax、r1、r2、rminのうちどの転送速度でデータ転送を実行するかは、ページ管理テーブル84−2のサイズと所定のしきい値との比較に基づいて決定される。rmax、r1、r2、rminの転送速度が定められたモードを夫々モード0、モード1、モード2、モード3ということにすると、モード0からモード1への遷移、モード1からモード2への遷移、モード2からモード3への遷移は、ページ管理テーブル84−2のサイズとしきい値Tp1、Tp2、Tplimitとの比較に基づいて決められる。また、モード3からモード2への遷移、モード2からモード1への遷移、モード1からモード0への遷移は、ページ管理テーブル84−2のサイズとしきい値Tplimit、Tp3、Tp4との比較に基づいて決められる。なお、Tp4<Tp1<Tp3<Tp2<Tplimitとする。このようにモードの遷移の判断のためのしきい値にヒステリシス特性を持たせたのは、しきい値の付近でページ管理テーブル84−2のサイズが推移することによりモードの切り替えが頻発することを防止するためである。なお、しきい値にヒステリシス特性を持たせなくても構わない。
【0121】
モード記憶部85は、転送速度設定部82が転送速度を算出する際に使用するモードの値を記憶する。モード記憶部85は、小規模なメモリやレジスタなどに保持されるようにしてよい。
【0122】
転送制御部83は、ホストI/F20およびNANDI/F40を制御して、ホスト装置2とNANDメモリ50との間のデータ転送を制御する。その際、転送速度設定部82が設定した転送速度でデータ転送を実行するようにする。また、転送制御部83は、ライトキャッシュ領域31が溢れたり、ホスト装置2からフラッシュコマンドが発行されたなどのタイミングで、ライトキャッシュ領域31にキャッシュされている書き込みデータをNANDメモリ50へ退避させる。当該退避対象の書き込みデータのうち、論理アドレスが連続するブロックサイズの書き込みデータはストレージ領域87に書き込まれ、論理アドレスが連続するブロックサイズを構成しないページサイズの書き込みデータはキャッシュ領域86に書き込まれる。
【0123】
リソース管理部81は、前述のNAND整理の処理を実行する。
【0124】
次に、本発明の第4の実施形態のSSDの動作を説明する。図24は、転送速度設定部82の動作を説明するフローチャートである。
【0125】
図24に示すように、まず、転送速度設定部82は、ページ管理テーブル84−2のサイズを取得する(ステップS121)。そして、転送速度設定部82は、モード記憶部85が記憶しているモードがモード0であるか否か(ステップS122)、モード1であるか否か(ステップS123)、またはモード2であるか否か(ステップS124)を判定する。
【0126】
モード記憶部85にモード0を記憶していた場合(ステップS122、Yes)、転送速度設定部82は、取得したページ管理テーブル84−2のサイズがしきい値Tp1以上の値であるか否かを判定する(ステップS125)。ページ管理テーブル84−2のサイズがTp1以上であった場合(ステップS125、Yes)、転送速度設定部82は、モード記憶部85が記憶している値をモード1で上書きする(ステップS126)。そして、転送速度設定部82は、モード記憶部85が記憶しているモードに応じた転送速度を設定値とする(ステップS137)。転送速度の設定値は、転送制御部83に通知される。ステップS137の処理が完了すると、ステップS121へ移行する。取得したページ管理テーブル84−2のサイズがしきい値Tp1以上の値ではなかった場合(ステップS125、No)、ステップS126がスキップされてステップS137に移行する。
【0127】
モード記憶部85にモード1を記憶していた場合(ステップS123、Yes)、転送速度設定部82は、取得したページ管理テーブル84−2のサイズがしきい値Tp2以上の値であるか否かを判定する(ステップS127)。ページ管理テーブル84−2のサイズがTp2以上であった場合(ステップS127、Yes)、転送速度設定部82は、モード記憶部85が記憶している値をモード2で上書きし(ステップS128)、ステップS137に移行する。取得したページ管理テーブル84−2のサイズがしきい値Tp2以上の値ではなかった場合(ステップS127、No)、転送速度設定部82は、取得したページ管理テーブル84−2のサイズがしきい値Tp4以下の値であるか否かを判定する(ステップS129)。ページ管理テーブル84−2のサイズがしきい値Tp4以下の値であった場合(ステップS129、Yes)、転送速度設定部82は、モード記憶部85が記憶している値をモード0で上書きし(ステップS130)、ステップS137に移行する。ページ管理テーブル84−2のサイズがしきい値Tp4以下の値ではなかった場合(ステップS129、No)、ステップS130がスキップされてステップS137に移行する。
【0128】
モード記憶部85にモード2を記憶していた場合(ステップS124、Yes)、転送速度設定部82は、取得したページ管理テーブル84−2のサイズがしきい値Tplimit以上の値であるか否かを判定する(ステップS131)。ページ管理テーブル84−2のサイズがTplimit以上であった場合(ステップS131、Yes)、転送速度設定部82は、モード記憶部85が記憶している値をモード3で上書きし(ステップS132)、ステップS137に移行する。取得したページ管理テーブル84−2のサイズがしきい値Tplimit以上の値ではなかった場合(ステップS131、No)、転送速度設定部82は、取得したページ管理テーブル84−2のサイズがしきい値Tp3以下の値であるか否かを判定する(ステップS133)。ページ管理テーブル84−2のサイズがしきい値Tp3以下の値であった場合(ステップS133、Yes)、転送速度設定部82は、モード記憶部85が記憶している値をモード1で上書きし(ステップS134)、ステップS137に移行する。ページ管理テーブル84−2のサイズがしきい値Tp3以下の値ではなかった場合(ステップS133、No)、ステップS134がスキップされてステップS137に移行する。
【0129】
モード記憶部85に記憶されていたモードがモード0〜2のいずれでもない場合(ステップS122、No、ステップS123、No、ステップS124、No)は、モード記憶部85にはモード3が記憶されている。その場合、転送速度設定部82は、取得したページ管理テーブル84−2のサイズがしきい値Tplimit以下の値であるか否かを判定する(ステップS135)。ページ管理テーブル84−2のサイズがTplimit以下であった場合(ステップS135、Yes)、転送速度設定部82は、モード記憶部85が記憶している値をモード2で上書きし(ステップS136)、ステップS137に移行する。ページ管理テーブル84−2のサイズがしきい値Tplimit以下の値ではなかった場合(ステップS135、No)、ステップS136がスキップされてステップS137に移行する。
【0130】
図25は、リソース管理部81がNAND整理の処理を開始/停止する動作を説明するフローチャートである。図示するように、まず、リソース管理部81は、モード記憶部85がモード0を記憶しているか否かを判定する(ステップS141)。モード記憶部85がモード0を記憶していない場合(ステップS141、No)、リソース管理部81はNAND整理を開始する(ステップS142)。モード記憶部85がモード0を記憶している場合(ステップS141、Yes)、リソース管理部81は、モード記憶部85の記憶内容がモード0でなくなるまでステップS141の判定処理を継続する。
【0131】
リソース管理部81は、NAND整理を開始後、再びモード記憶部85がモード0を記憶しているか否かを判定する(ステップS143)。モード記憶部85がモード0を記憶している場合(ステップS143、Yes)、リソース管理部81はNAND整理を停止して(ステップS144)、ステップS141の判定処理を実行する。ステップS143においてモード記憶部85がモード0を記憶していない場合(ステップS143、No)、リソース管理部81は、モード記憶部85の記憶内容がモード0となるまでステップS143の判定処理を継続する。
【0132】
転送制御部83の動作は、第1の実施形態と同じであるので、ここでは説明を省略する。
【0133】
このように、本発明の第4の実施形態によれば、NANDメモリ50は、ホスト装置2から書き込み要求されたデータをページ毎に記憶するキャッシュ領域86と、ブロック毎に記憶するストレージ領域87とを備え、制御部80内の揮発性メモリは、キャッシュ領域86内のアドレス管理を行うページ管理テーブル84−2とストレージ領域87内のアドレス管理を行うブロック管理テーブル84−1とを夫々記憶する記憶領域を備え、ページ管理テーブル84−2を記憶する記憶領域をリソースとするように構成したので、リソース管理部81がNAND整理が終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができるようになる。
【0134】
なお、第4の実施形態においても、転送速度の設定値を算出するために使用するしきい値および/または転送速度の値をコマンドの受信間隔に応じて変化させるようにしてもよい。また、第4の実施形態では、キャッシュ領域86がページ単位で管理され、ストレージ領域87がブロック単位で管理されるとして説明したが、これに限定されない。ストレージ領域87のデータ管理単位がキャッシュ領域86のデータ管理単位よりも大きければ、本実施形態と同様にNAND整理を実行することが可能である。例えばキャッシュ領域86はページサイズの2以上の自然数分の1倍の単位で管理されていてもよいし、ページサイズの2以上の自然数倍の単位で管理されていてもよい。またストレージ領域87はブロックサイズの2以上の自然数分の1倍の単位で管理されていてもよいし、ブロックサイズの2以上の自然数倍の単位で管理されていてもよい。また、キャッシュ領域86は1つのメモリセルに1ビットの記憶を行う二値記憶方式(SLC: Single Level Cell)で管理し、ストレージ領域87は1つのメモリセルに2ビット以上の記憶を行う多値記憶方式(MLC: Multi Level Cell)で管理してもよい。
【0135】
(第5の実施形態)
図26は、本発明の第5の実施形態のSSDの構成を示すブロック図である。ここでは、第1の実施形態と同じ構成要素には同一の符号を付し、重複する説明を省略する。
【0136】
図示するように、SSD9は、制御部90、ホストインタフェース(I/F)20、バッファ30、NANDI/F40、およびNANDメモリ50を備えている。
【0137】
バッファ30は、ホスト装置2からホストI/F20を介して受信した書き込みデータをキャッシュするライトキャッシュ領域31を備えている。NANDメモリ50は、NAND型の不揮発性記憶素子からなるメモリセルアレイ51を備えており、メモリセルアレイ51には、システム領域52とユーザ領域53とが確保されている。
【0138】
制御部90は、システム管理部91、転送速度設定部92、転送制御部13、アドレス変換テーブル14、モード記憶部95およびシステムキュー96を備えている。
【0139】
システム管理部91は、破損したデータの復元処理や、メモリセルアレイ51のリフレッシュ処理や、メモリセルアレイ51内のデータのウェアレベリング処理など、信頼性を担保するために必要となる処理(以下、システム処理という)を実行する。リフレッシュ処理とは、例えば、誤り訂正処理における訂正ビット数が増加するなどデータの劣化が検出された場合に、当該ブロック内のデータを別のブロックに書き直す処理を意味する。ウェアレベリング処理とは、例えば、書き換え回数(消去回数)が多いブロックに記憶されているデータと、書き換え回数(消去回数)の少ないブロックに記憶されているデータとを入れ替えることで、NANDメモリ全体の書き換え回数を平準化する処理を意味する。
【0140】
システムキュー96は、必要でかつ未実行のシステム処理が記録されるキュー構造の記憶領域である。すなわち、システム処理を行う必要が生じたとき、実行すべきシステム処理を記録したデータがエンキューされ、当該データは、システム管理部91によって所定のタイミングでデキューされる。システム管理部91は、デキューしたデータに記録されているシステム処理を実行する。システムキュー96は、例えばDRAMやSRAM(Static Random Access Memory)など、揮発性メモリとしての記憶装置により保持される。
【0141】
転送速度設定部92は、システムキュー96内のデータ量と所定のしきい値とを用いて転送速度の設定値を算出する。
図27は、システムキュー96内のデータ量と転送速度との関係を説明する図である。本図において、紙面右方向ほどシステムキュー96内のデータ量が多く、システムキュー96の空き領域が少ない。図示するように、転送速度は、rmax、r1、r2、およびrminを取りうる。rmaxは全く制限されていない状態における転送速度、rminは最悪応答時間に基づいて決まる転送速度であり、夫々の転送速度の間には、rmax>r1>r2>rminの関係がある。rmax、r1、r2、rminのうちどの転送速度でデータ転送を実行するかは、システムキュー96内のデータ量と所定のしきい値との比較に基づいて決定される。rmax、r1、r2、rminの転送速度が定められたモードを夫々モード0、モード1、モード2、モード3ということにすると、モード0からモード1への遷移、モード1からモード2への遷移、モード2からモード3への遷移は、システムキュー96内のデータ量としきい値Tq1、Tq2、Tqlimitとの比較に基づいて決められる。また、モード3からモード2への遷移、モード2からモード1への遷移、モード1からモード0への遷移は、システムキュー96内のデータ量としきい値Tqlimit、Tq3、Tq4との比較に基づいて決められる。なお、Tq4<Tq1<Tq3<Tq2<Tqlimitとする。このようにモードの遷移の判断のためのしきい値にヒステリシス特性を持たせたのは、しきい値の付近でシステムキュー96内のデータ量が推移することによりモードの切り替えが頻発することを防止するためである。なお、しきい値にヒステリシス特性を持たせなくても構わない。
【0142】
なお、ここでは、転送速度を算出するための使用リソース量としてシステムキュー96内のデータ量を用いることとしているが、データ量のほかに、システムキュー96の使用率を用いることもできる。
【0143】
モード記憶部95は、転送速度設定部92が転送速度を算出する際に使用するモードの値を記憶する。モード記憶部95は、小規模なメモリやレジスタなどに保持されるようにしてよい。
【0144】
次に、本発明の第5の実施形態のSSDの動作を説明する。図28は、転送速度設定部92の動作を説明するフローチャートである。
【0145】
図28に示すように、まず、転送速度設定部92は、システムキュー96内のデータ量を取得する(ステップS151)。そして、転送速度設定部92は、モード記憶部95が記憶しているモードがモード0であるか否か(ステップS152)、モード1であるか否か(ステップS153)、またはモード2であるか否か(ステップS154)を判定する。
【0146】
モード記憶部95にモード0を記憶していた場合(ステップS152、Yes)、転送速度設定部92は、取得したシステムキュー96内のデータ量がしきい値Tq1以上の値であるか否かを判定する(ステップS155)。システムキュー96内のデータ量がTq1以上であった場合(ステップS155、Yes)、転送速度設定部92は、モード記憶部95が記憶している値をモード1で上書きする(ステップS156)。そして、転送速度設定部92は、モード記憶部95が記憶しているモードに応じた転送速度を設定値とする(ステップS167)。転送速度の設定値は、転送制御部13に通知される。ステップS167の処理が完了すると、ステップS151へ移行する。取得したシステムキュー96内のデータ量がしきい値Tq1以上の値ではなかった場合(ステップS155、No)、ステップS156がスキップされてステップS167に移行する。
【0147】
モード記憶部95にモード1を記憶していた場合(ステップS153、Yes)、転送速度設定部92は、取得したシステムキュー96内のデータ量がしきい値Tq2以上の値であるか否かを判定する(ステップS157)。システムキュー96内のデータ量がTq2以上であった場合(ステップS157、Yes)、転送速度設定部92は、モード記憶部95が記憶している値をモード2で上書きし(ステップS158)、ステップS167に移行する。取得したシステムキュー96内のデータ量がしきい値Tq2以上の値ではなかった場合(ステップS157、No)、転送速度設定部92は、取得したシステムキュー96内のデータ量がしきい値Tq4以下の値であるか否かを判定する(ステップS159)。システムキュー96内のデータ量がしきい値Tq4以下の値であった場合(ステップS159、Yes)、転送速度設定部92は、モード記憶部95が記憶している値をモード0で上書きし(ステップS160)、ステップS167に移行する。システムキュー96内のデータ量がしきい値Tq4以下の値ではなかった場合(ステップS159、No)、ステップS160がスキップされてステップS167に移行する。
【0148】
モード記憶部95にモード2を記憶していた場合(ステップS154、Yes)、転送速度設定部92は、取得したシステムキュー96内のデータ量がしきい値Tqlimit以上の値であるか否かを判定する(ステップS161)。システムキュー96内のデータ量がTqlimit以上であった場合(ステップS161、Yes)、転送速度設定部92は、モード記憶部95が記憶している値をモード3で上書きし(ステップS162)、ステップS167に移行する。取得したシステムキュー96内のデータ量がしきい値Tqlimit以上の値ではなかった場合(ステップS161、No)、転送速度設定部92は、取得したシステムキュー96内のデータ量がしきい値Tq3以下の値であるか否かを判定する(ステップS163)。システムキュー96内のデータ量がしきい値Tq3以下の値であった場合(ステップS163、Yes)、転送速度設定部92は、モード記憶部95が記憶している値をモード1で上書きし(ステップS164)、ステップS167に移行する。システムキュー96内のデータ量がしきい値Tq3以下の値ではなかった場合(ステップS163、No)、ステップS164がスキップされてステップS167に移行する。
【0149】
モード記憶部95に記憶されていたモードがモード0〜2のいずれでもない場合(ステップS152、No、ステップS153、No、ステップS154、No)は、モード記憶部95にはモード3が記憶されている。その場合、転送速度設定部92は、取得したシステムキュー96内のデータ量がしきい値Tqlimit以下の値であるか否かを判定する(ステップS165)。システムキュー96内のデータ量がTqlimit以下であった場合(ステップS165、Yes)、転送速度設定部92は、モード記憶部95が記憶している値をモード2で上書きし(ステップS166)、ステップS167に移行する。システムキュー96内のデータ量がしきい値Tqlimit以下の値ではなかった場合(ステップS165、No)、ステップS166がスキップされてステップS167に移行する。
【0150】
図29は、システム管理部91がシステム処理の処理を開始/停止する動作を説明するフローチャートである。図示するように、まず、システム管理部91は、モード記憶部95がモード0を記憶しているか否かを判定する(ステップS171)。モード記憶部95がモード0を記憶していない場合(ステップS171、No)、システム管理部91はシステム処理を開始する(ステップS172)。モード記憶部95がモード0を記憶している場合(ステップS171、Yes)、システム管理部91は、モード記憶部95の記憶内容がモード0でなくなるまでステップS171の判定処理を継続する。
【0151】
システム管理部91は、システム処理を開始後、再びモード記憶部95がモード0を記憶しているか否かを判定する(ステップS173)。モード記憶部95がモード0を記憶している場合(ステップS173、Yes)、システム管理部91はシステム処理を停止して(ステップS174)、ステップS171の判定処理を実行する。ステップS173においてモード記憶部95がモード0を記憶していない場合(ステップS173、No)、システム管理部91は、モード記憶部95の記憶内容がモード0となるまでステップS173の判定処理を継続する。
【0152】
転送制御部13の動作は、第1の実施形態と同じであるので、ここでは説明を省略する。
【0153】
このように、本発明の第5の実施形態によれば、不揮発性メモリ内に必要でかつ未実行のシステム処理の実行内容が記録されるシステムキュー96を備え、システムキュー96のデータ量を使用リソース量とするようにしたので、システム処理が終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができるようになる。
【0154】
なお、第5の実施形態においても、転送速度の設定値を算出するために使用するしきい値および/または転送速度の値をコマンドの受信間隔に応じて変化させるようにしてもよい。
【0155】
(第6の実施形態)
図30は、ホスト装置からの書き込みデータがライトキャッシュ領域31に格納されるまでの動作を説明するシーケンス図である。
【0156】
まず、ホスト装置2からホストI/F20に書き込みコマンドが送信されると(ステップS181)、ホストI/F20は、書き込みコマンドを受け付けた旨の受け付け応答をホスト装置2に返信する(ステップS182)。そして、SSD1がデータ受け入れの準備が整うと、ホストI/F20から転送開始通知がホスト装置2に送信される(ステップS183)。ホスト装置2は、転送開始通知を受信すると、書き込みデータをホストI/F20が内部に具備するバッファのサイズ(ここでは8Kバイト)毎に分割して送信する。なお、ホストI/F20が備えるバッファのサイズは、例えば初期化時に予めホスト装置2に通知される。
【0157】
具体的には、まず、ホスト装置2は、書き込みデータを8Kバイト毎に分割して、得られた最初のデータをデータ転送する(ステップS184)。ホストI/F20にデータ転送されてきた8Kバイトのデータは、内部に具備するバッファに一時的に格納される。その後、ホストI/F20内のバッファに格納されたデータは、ライトキャッシュ領域31に転送される(ステップS185、ステップS186)。なお、ホストI/F20からライトキャッシュ領域31へのデータ転送の単位サイズは、ホスト装置2からホストI/F20へのデータ転送の単位サイズと同じでもよいし、異なっていてもよい。ここでは、4Kバイト毎にホストI/F20からライトキャッシュ領域31に転送されることとしている。ホストI/F20からライトキャッシュ領域31へのデータ転送が完了し、ホストI/F20内のバッファが空になると、次の転送データを受け入れることができる旨の準備完了通知がホストI/F20からホスト装置2に送信される(ステップS187)。ステップS184乃至ステップS187の処理は、ステップS181により書き込み要求されたデータのサイズに応じた回数だけリピートされる。
【0158】
ホスト装置2が、書き込み要求したデータにかかる最後のデータ転送を実行し(ステップS188)、ホストI/F20に送られてきたデータをホストI/F20からライトキャッシュ領域31に送信完了すると(ステップS189、ステップS190)、書き込みコマンドS181にかかるデータ転送が完了した旨の転送終了通知がホストI/F20からホスト装置2に送信される(ステップS191)。
【0159】
第1の実施形態の説明においては、ホスト装置2からの書き込みデータの転送速度を前記転送速度の設定値に制限するために、転送制御部13は、ホストI/F20とホスト装置2との間のデータ転送に待ち時間を挿入する、と説明した。ここで、待ち時間の挿入方法には以下の手法を採用することができる。
【0160】
即ち、ホスト装置2からホストI/F20への最初のデータ転送(ステップS184)が開始されてからホスト装置2からホストI/F20への最後のデータ転送(ステップS188)が完了するまでの時間を式(1)にかかる実行時間とし、最後のデータ転送(ステップS188)が完了してから転送終了通知(ステップS191)を送信するまでの時間を式(1)における待ち時間とする。このようにすることによって、最初のデータ転送(ステップS184)が開始されてから転送終了通知(ステップS191)が送受信されるまで平均の転送速度を転送速度設定部12が算出した転送速度に等しくすることができる。
【0161】
また、転送速度設定部12は、ホスト装置2からの書き込みデータの転送速度を次の手法で設定値に制限するようにしてもよい。即ち、ホストI/F20からライトキャッシュ領域31へのデータ転送(ステップS185、ステップS186、ステップS189、ステップS190)の夫々が転送速度設定部12が算出した転送速度に等しくなるように、当該夫々のデータ転送の実行タイミングを制御する方法である。具体的には、転送制御部13は、下記の式3に基づいて、ホストI/F20からライトキャッシュ領域31へのデータ転送の夫々にかける時間の設定値(転送時間設定値)を算出する。
4Kバイト/転送時間設定値=転送速度の設定値 (3)
そして、ホストI/F20とライトキャッシュ領域31との間のデータ転送を開始するときに、前記算出した転送時間設定値までの経過時間をカウントするタイマを起動する。データ転送部13は、4Kバイトのデータ転送が終わった後も前記タイマがエクスパイアするまで次の4Kバイトのデータ転送の開始を待つ。ホストI/F20からライトキャッシュ領域31へのデータ転送の転送速度が転送速度設定部12が算出した転送速度に抑えられるので、ホストI/F20とホスト装置2との間の8Kバイトごとのデータ転送の間隔が開き、結果としてホストI/F20とホスト装置2との間の転送速度が転送速度設定部12が算出した転送速度に抑えることができる。
【0162】
なお、第6の実施形態で説明したホスト装置2との間の転送速度の制限手法は、第2乃至第5の実施形態で説明した何れの転送制御部にも適用することができる。
【0163】
(第7の実施形態)
図31は、第1の実施形態のSSD1を搭載したパーソナルコンピュータ1200の一例を示す斜視図である。パーソナルコンピュータ1200は、本体1201、及び表示ユニット1202を備えている。表示ユニット1202は、ディスプレイハウジング1203と、このディスプレイハウジング1203に収容された表示装置1204とを備えている。
【0164】
本体1201は、筐体1205と、キーボード1206と、ポインティングデバイスであるタッチパッド1207とを備えている。筐体1205内部には、メイン回路基板、ODD(Optical Disk Device)ユニット、カードスロット、及びSSD1等が収容されている。
【0165】
カードスロットは、筐体1205の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部1208が設けられている。ユーザは、この開口部1208を通じて筐体1205の外部から追加デバイスをカードスロットに挿抜することが可能である。
【0166】
SSD1は、従来のHDDの置き換えとして、パーソナルコンピュータ1200内部に実装された状態として使用してもよいし、パーソナルコンピュータ1200が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【0167】
図32は、SSDを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ1200は、CPU1301、ノースブリッジ1302、主メモリ1303、ビデオコントローラ1304、オーディオコントローラ1305、サウスブリッジ1309、BIOS−ROM1310、SSD1、ODDユニット1311、エンベデッドコントローラ/キーボードコントローラIC(EC/KBC)1312、及びネットワークコントローラ1313等を備えている。
【0168】
CPU1301は、パーソナルコンピュータ1200の動作を制御するために設けられたプロセッサであり、SSD1から主メモリ1303にロードされるオペレーティングシステム(OS)を実行する。更に、ODDユニット1311が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも1つの処理の実行を可能にした場合に、CPU1301は、それらの処理の実行をする。
【0169】
また、CPU1301は、BIOS−ROM1310に格納されたシステムBIOS(Basic Input Output System)も実行する。尚、システムBIOSは、パーソナルコンピュータ1200内のハードウェア制御のためのプログラムである。
【0170】
ノースブリッジ1302は、CPU1301のローカルバスとサウスブリッジ1309との間を接続するブリッジデバイスである。ノースブリッジ1302には、主メモリ1303をアクセス制御するメモリコントローラも内蔵されている。
【0171】
また、ノースブリッジ1302は、AGP(Accelerated Graphics Port)バス等を介してビデオコントローラ1304との通信、及びオーディオコントローラ1305との通信を実行する機能も有している。
【0172】
主メモリ1303は、プログラムやデータを一時的に記憶し、CPU1301のワークエリアとして機能する。主メモリ1303は、例えばRAMから構成される。
【0173】
ビデオコントローラ1304は、パーソナルコンピュータ1200のディスプレイモニタとして使用される表示ユニット1202を制御するビデオ再生コントローラである。
【0174】
オーディオコントローラ1305は、パーソナルコンピュータ1200のスピーカ1306を制御するオーディオ再生コントローラである。
【0175】
サウスブリッジ1309は、LPC(Low Pin Count)バス1314上の各デバイス、及びPCI(Peripheral Component Interconnect)バス1315上の各デバイスを制御する。また、サウスブリッジ1309は、各種ソフトウェア及びデータを格納する記憶装置であるSSD1を、ATAインタフェースを介して制御する。
【0176】
パーソナルコンピュータ1200は、セクタ単位でSSD1へのアクセスを行う。ATAインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がSSD1に入力される。
【0177】
また、サウスブリッジ1309は、BIOS−ROM1310、及びODDユニット1311をアクセス制御するための機能も有している。
【0178】
EC/KBC1312は、電力管理のためのエンベデッドコントローラと、キーボード(KB)1206及びタッチパッド1207を制御するためのキーボードコントローラとが集積された1チップマイクロコンピュータである。
【0179】
このEC/KBC1312は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ1200の電源をON/OFFする機能を有している。ネットワークコントローラ1313は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【0180】
パーソナルコンピュータ1200が搭載するSSD1は、上述した通り、リソースの整理が終わるまでコマンドの実行を待たせる場合に比べて書き込みコマンドに対する応答時間が極端に大きくなることを防ぐことができる構成であるため、コマンドの実行時間の差が少なくなる、すなわちコマンドの応答時間に偏りができることを抑制できる。従って、パーソナルコンピュータ1200を使用するユーザの利便性を向上させることが可能となる。
【0181】
なお、パーソナルコンピュータ1200には、第2乃至第6の実施形態にて説明した何れのSSDをも搭載することができ、SSD1を搭載した場合と同等の効果を得ることができる。
【0182】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0183】
1、6、7、8、9 SSD、2 ホスト装置、10、60、70、80、90 制御部、11、61、76、81 リソース管理部、12、62、72、82、92 転送速度設定部、13、63、73、83 転送制御部、14、67 アドレス変換テーブル、15、65、75、85、95 モード記憶部、20 ホストI/F、30 バッファ、31 ライトキャッシュ領域、50 NANDメモリ、51 メモリセルアレイ、52 システム領域、53 ユーザ領域、54 スナップショット、55 ログ、64 テーブルポインタテーブル、66 テーブル記憶領域、71 NAND管理部、84−1 ブロック管理テーブル、84−2 ページ管理テーブル、86 キャッシュ領域、87 ストレージ領域、91 システム管理部、96 システムキュー。
【特許請求の範囲】
【請求項1】
ホスト装置から書き込み要求されたデータを記憶する不揮発性メモリと、
前記不揮発性メモリにかかるリソースの使用量が所定量に達したとき前記不揮発性メモリにかかるリソースを整理してリソースを増加させるリソース管理部と、
前記ホスト装置からの書き込みデータの受信にかかる転送速度の設定値を算出する転送速度設定部と、
前記ホスト装置から書き込みデータを受信して、当該受信した書き込みデータを前記不揮発性メモリに転送する転送制御部と、
を備え、
前記転送速度設定部は、前記不揮発性メモリにかかるリソースの使用量が増加するほど低い設定値を算出し、
前記転送制御部は、前記リソース管理部がリソースを整理している間、前記ホスト装置からの書き込みデータの受信を前記転送速度設定部が算出した設定値の転送速度で実行する、
ことを特徴とするメモリシステム。
【請求項2】
前記転送速度設定部は、前記不揮発性メモリの使用リソース量とヒステリシス特性を有する予め定められたしきい値とを比較することによって転送速度の設定値を算出する、
ことを特徴とする請求項1に記載のメモリシステム。
【請求項3】
前記転送制御部は、前記ホスト装置から書き込み要求を受信した際、当該書き込み要求により書き込み要求されたデータのサイズと前記転送速度の設定値とに基づいて待ち時間を算出し、当該書き込み要求されたデータのデータ転送中に前記算出した待ち時間を挿入する、
ことを特徴とする請求項1に記載のメモリシステム。
【請求項4】
前記ホスト装置から書き込み要求されたデータをキャッシュするライトキャッシュ領域をさらに備え、
前記転送制御部は、前記ホスト装置から前記ライトキャッシュ領域にキャッシュされているデータを前記不揮発性メモリに退避させるフラッシュ要求を受信したとき、前記ライトキャッシュ領域にキャッシュされている退避対象のデータを前記不揮発性メモリに退避させるとともに、当該退避対象のサイズと前記転送速度の設定値とに基づいて待ち時間を算出し、フラッシュ要求を受信してから当該算出した待ち時間が経過した後に前記受信したフラッシュ要求に対する実行完了通知を前記ホスト装置に送信し、
前記リソース管理部は、前記不揮発性メモリにかかるリソースの使用量が前記所定量に達している場合において、前記転送制御部がフラッシュ要求を受信した際、前記転送制御部が前記フラッシュ要求を受信してから前記実行完了通知を送信するまでの間における前記転送制御部が前記退避対象のデータの退避を実行していない間にリソースの整理を実行する、
ことを特徴とする請求項1に記載のメモリシステム。
【請求項5】
前記転送制御部は、前記受信したフラッシュ要求にかかる前記算出した待ち時間が最悪応答時間よりも小さいとき、当該最悪応答時間を待ち時間とする、
ことを特徴とする請求項4に記載のメモリシステム。
【請求項6】
前記転送速度設定部は、前記ホスト装置からのアクセス頻度が少ないとき、前記しきい値を小さくし、前記ホスト装置からのアクセス頻度が多いとき、前記しきい値を大きくする、
ことを特徴とする請求項2に記載のメモリシステム。
【請求項7】
前記転送速度設定部は、前記ホスト装置からのアクセス頻度が少ないとき、転送速度の設定値を小さくし、前記ホスト装置からのアクセス頻度が多いとき、前記転送速度の設定値を大きくする、
ことを特徴とする請求項1に記載のメモリシステム。
【請求項8】
前記不揮発性メモリは、ブロック毎に前記データの消去が行われ、書き込みが前記ブロックよりも小さいページ毎に行われ、
前記リソースは、データが書き込まれていないブロックである、
ことを特徴とする請求項1〜7に記載のメモリシステム。
【請求項9】
前記転送制御部は、前記ホスト装置から指定されるアドレスと前記不揮発性メモリ上の物理アドレスとの対応関係を記述したアドレス変換テーブルを更新管理し、
前記不揮発性メモリは、前記アドレス変換テーブルのバックアップであるスナップショットおよび前記アドレス変換テーブルの差分情報であるログを記憶するシステム領域を備え、
前記リソースは、前記システム領域の使用可能サイズであって、前記リソースの整理は、前記ログを前記スナップショットに反映させて当該ログを削除することである、
ことを特徴とする請求項1〜7に記載のメモリシステム。
【請求項10】
前記不揮発性メモリは、前記ホスト装置から指定されるアドレスと前記不揮発性メモリ上の物理アドレスとの対応関係を記述したアドレス変換テーブルを記憶するテーブル記憶領域を備え、
前記リソースは、前記テーブル記憶領域のうちの前記アドレス変換テーブルが書き込まれていない領域である、
ことを特徴とする請求項1〜7に記載のメモリシステム。
【請求項11】
前記不揮発性メモリは、ブロック毎に前記データの消去が行われ、書き込みが前記ブロックよりも小さいページ毎に行われ、前記アドレス変換テーブルが更新される際、更新部分にかかる新しいエントリが前記テーブル記憶領域のうちの消去済みのページに追記されるとともに前記更新部分にかかる古いエントリが無効化される、
ことを特徴とする請求項10に記載のメモリシステム。
【請求項12】
ホスト装置から書き込み要求されたデータを記憶する不揮発性メモリと、
前記ホスト装置から書き込み要求されたデータをキャッシュするライトキャッシュ領域を備える揮発性メモリと、
前記揮発性メモリにかかるリソースの使用量が所定量に達したとき前記不揮発性メモリにかかるリソースを整理してリソースを増加させるリソース管理部と、
前記ホスト装置からの書き込みデータの受信にかかる転送速度の設定値を算出する転送速度設定部と、
前記ホスト装置から書き込みデータを受信して、当該受信した書き込みデータを前記不揮発性メモリに転送する転送制御部と、
を備え、
前記転送速度設定部は、前記揮発性メモリにかかるリソースの使用量が増加するほど低い設定値を算出し、
前記転送制御部は、前記リソース管理部がリソースを整理している間、前記ホスト装置からの書き込みデータの受信を前記転送速度設定部が算出した設定値の転送速度で実行する、
ことを特徴とするメモリシステム。
【請求項13】
前記転送速度設定部は、前記揮発性メモリの使用リソース量とヒステリシス特性を有する予め定められたしきい値とを比較することによって転送速度の設定値を算出する、
ことを特徴とする請求項12に記載のメモリシステム。
【請求項14】
前記転送制御部は、前記ホスト装置から書き込み要求を受信した際、当該書き込み要求により書き込み要求されたデータのサイズと前記転送速度の設定値とに基づいて待ち時間を算出し、当該書き込み要求されたデータのデータ転送中に前記算出した待ち時間を挿入する、
ことを特徴とする請求項12に記載のメモリシステム。
【請求項15】
前記転送速度設定部は、前記ホスト装置からのアクセス頻度が少ないとき、前記しきい値を小さくし、前記ホスト装置からのアクセス頻度が多いとき、前記しきい値を大きくする、
ことを特徴とする請求項13に記載のメモリシステム。
【請求項16】
前記転送速度設定部は、前記ホスト装置からのアクセス頻度が少ないとき、転送速度の設定値を小さくし、前記ホスト装置からのアクセス頻度が多いとき、前記転送速度の設定値を大きくする、
ことを特徴とする請求項12に記載のメモリシステム。
【請求項17】
前記リソースは、前記ライトキャッシュ領域であって、
前記リソースの整理は、前記ライトキャッシュ領域に格納されているデータを前記不揮発性メモリに退避させることである、
ことを特徴とする請求項12〜16に記載のメモリシステム。
【請求項18】
前記不揮発性メモリは、前記ホスト装置から書き込み要求されたデータを第1の単位サイズ毎に記憶する第1領域と、前記データを前記第1の単位サイズよりも大きい第2の単位サイズ毎に記憶する第2領域とを備え、
前記揮発性メモリは、前記ホスト装置から指定されるアドレスと前記不揮発性メモリ上の物理アドレスとの対応関係を前記第1領域に格納されている前記第1の単位サイズのデータ毎に記述した第1アドレス変換テーブルおよび前記第2領域に格納されている前記第2の単位サイズのデータ毎に記述した第2アドレス変換テーブルを夫々記憶する記憶領域を備え、
前記リソースは、前記第1アドレス変換テーブルを記憶する記憶領域であって、
前記リソースの整理は、前記第1領域および前記第2領域に格納されているデータを整理することによって、前記第1領域の空き領域を増加させるとともに前記第1アドレス変換テーブルのサイズを縮小することである、
ことを特徴とする請求項12〜16に記載のメモリシステム。
【請求項19】
前記揮発性メモリは、必要でかつ未実行のシステム処理の実行内容が記録されるシステム処理記憶領域を備え、
前記リソースは、前記システム処理記憶領域であって、
前記リソースの整理は、前記システム処理記憶領域に記録されているシステム処理を実行することである、
ことを特徴とする請求項12〜16に記載のメモリシステム。
【請求項20】
前記システム処理は、前記ホスト装置から読み出し要求されたデータの復元処理、前記不揮発性メモリのリフレッシュ処理、または前記不揮発性メモリのウェアレベリングのうちの少なくとも1つを含む、
ことを特徴とする請求項19に記載のメモリシステム。
【請求項1】
ホスト装置から書き込み要求されたデータを記憶する不揮発性メモリと、
前記不揮発性メモリにかかるリソースの使用量が所定量に達したとき前記不揮発性メモリにかかるリソースを整理してリソースを増加させるリソース管理部と、
前記ホスト装置からの書き込みデータの受信にかかる転送速度の設定値を算出する転送速度設定部と、
前記ホスト装置から書き込みデータを受信して、当該受信した書き込みデータを前記不揮発性メモリに転送する転送制御部と、
を備え、
前記転送速度設定部は、前記不揮発性メモリにかかるリソースの使用量が増加するほど低い設定値を算出し、
前記転送制御部は、前記リソース管理部がリソースを整理している間、前記ホスト装置からの書き込みデータの受信を前記転送速度設定部が算出した設定値の転送速度で実行する、
ことを特徴とするメモリシステム。
【請求項2】
前記転送速度設定部は、前記不揮発性メモリの使用リソース量とヒステリシス特性を有する予め定められたしきい値とを比較することによって転送速度の設定値を算出する、
ことを特徴とする請求項1に記載のメモリシステム。
【請求項3】
前記転送制御部は、前記ホスト装置から書き込み要求を受信した際、当該書き込み要求により書き込み要求されたデータのサイズと前記転送速度の設定値とに基づいて待ち時間を算出し、当該書き込み要求されたデータのデータ転送中に前記算出した待ち時間を挿入する、
ことを特徴とする請求項1に記載のメモリシステム。
【請求項4】
前記ホスト装置から書き込み要求されたデータをキャッシュするライトキャッシュ領域をさらに備え、
前記転送制御部は、前記ホスト装置から前記ライトキャッシュ領域にキャッシュされているデータを前記不揮発性メモリに退避させるフラッシュ要求を受信したとき、前記ライトキャッシュ領域にキャッシュされている退避対象のデータを前記不揮発性メモリに退避させるとともに、当該退避対象のサイズと前記転送速度の設定値とに基づいて待ち時間を算出し、フラッシュ要求を受信してから当該算出した待ち時間が経過した後に前記受信したフラッシュ要求に対する実行完了通知を前記ホスト装置に送信し、
前記リソース管理部は、前記不揮発性メモリにかかるリソースの使用量が前記所定量に達している場合において、前記転送制御部がフラッシュ要求を受信した際、前記転送制御部が前記フラッシュ要求を受信してから前記実行完了通知を送信するまでの間における前記転送制御部が前記退避対象のデータの退避を実行していない間にリソースの整理を実行する、
ことを特徴とする請求項1に記載のメモリシステム。
【請求項5】
前記転送制御部は、前記受信したフラッシュ要求にかかる前記算出した待ち時間が最悪応答時間よりも小さいとき、当該最悪応答時間を待ち時間とする、
ことを特徴とする請求項4に記載のメモリシステム。
【請求項6】
前記転送速度設定部は、前記ホスト装置からのアクセス頻度が少ないとき、前記しきい値を小さくし、前記ホスト装置からのアクセス頻度が多いとき、前記しきい値を大きくする、
ことを特徴とする請求項2に記載のメモリシステム。
【請求項7】
前記転送速度設定部は、前記ホスト装置からのアクセス頻度が少ないとき、転送速度の設定値を小さくし、前記ホスト装置からのアクセス頻度が多いとき、前記転送速度の設定値を大きくする、
ことを特徴とする請求項1に記載のメモリシステム。
【請求項8】
前記不揮発性メモリは、ブロック毎に前記データの消去が行われ、書き込みが前記ブロックよりも小さいページ毎に行われ、
前記リソースは、データが書き込まれていないブロックである、
ことを特徴とする請求項1〜7に記載のメモリシステム。
【請求項9】
前記転送制御部は、前記ホスト装置から指定されるアドレスと前記不揮発性メモリ上の物理アドレスとの対応関係を記述したアドレス変換テーブルを更新管理し、
前記不揮発性メモリは、前記アドレス変換テーブルのバックアップであるスナップショットおよび前記アドレス変換テーブルの差分情報であるログを記憶するシステム領域を備え、
前記リソースは、前記システム領域の使用可能サイズであって、前記リソースの整理は、前記ログを前記スナップショットに反映させて当該ログを削除することである、
ことを特徴とする請求項1〜7に記載のメモリシステム。
【請求項10】
前記不揮発性メモリは、前記ホスト装置から指定されるアドレスと前記不揮発性メモリ上の物理アドレスとの対応関係を記述したアドレス変換テーブルを記憶するテーブル記憶領域を備え、
前記リソースは、前記テーブル記憶領域のうちの前記アドレス変換テーブルが書き込まれていない領域である、
ことを特徴とする請求項1〜7に記載のメモリシステム。
【請求項11】
前記不揮発性メモリは、ブロック毎に前記データの消去が行われ、書き込みが前記ブロックよりも小さいページ毎に行われ、前記アドレス変換テーブルが更新される際、更新部分にかかる新しいエントリが前記テーブル記憶領域のうちの消去済みのページに追記されるとともに前記更新部分にかかる古いエントリが無効化される、
ことを特徴とする請求項10に記載のメモリシステム。
【請求項12】
ホスト装置から書き込み要求されたデータを記憶する不揮発性メモリと、
前記ホスト装置から書き込み要求されたデータをキャッシュするライトキャッシュ領域を備える揮発性メモリと、
前記揮発性メモリにかかるリソースの使用量が所定量に達したとき前記不揮発性メモリにかかるリソースを整理してリソースを増加させるリソース管理部と、
前記ホスト装置からの書き込みデータの受信にかかる転送速度の設定値を算出する転送速度設定部と、
前記ホスト装置から書き込みデータを受信して、当該受信した書き込みデータを前記不揮発性メモリに転送する転送制御部と、
を備え、
前記転送速度設定部は、前記揮発性メモリにかかるリソースの使用量が増加するほど低い設定値を算出し、
前記転送制御部は、前記リソース管理部がリソースを整理している間、前記ホスト装置からの書き込みデータの受信を前記転送速度設定部が算出した設定値の転送速度で実行する、
ことを特徴とするメモリシステム。
【請求項13】
前記転送速度設定部は、前記揮発性メモリの使用リソース量とヒステリシス特性を有する予め定められたしきい値とを比較することによって転送速度の設定値を算出する、
ことを特徴とする請求項12に記載のメモリシステム。
【請求項14】
前記転送制御部は、前記ホスト装置から書き込み要求を受信した際、当該書き込み要求により書き込み要求されたデータのサイズと前記転送速度の設定値とに基づいて待ち時間を算出し、当該書き込み要求されたデータのデータ転送中に前記算出した待ち時間を挿入する、
ことを特徴とする請求項12に記載のメモリシステム。
【請求項15】
前記転送速度設定部は、前記ホスト装置からのアクセス頻度が少ないとき、前記しきい値を小さくし、前記ホスト装置からのアクセス頻度が多いとき、前記しきい値を大きくする、
ことを特徴とする請求項13に記載のメモリシステム。
【請求項16】
前記転送速度設定部は、前記ホスト装置からのアクセス頻度が少ないとき、転送速度の設定値を小さくし、前記ホスト装置からのアクセス頻度が多いとき、前記転送速度の設定値を大きくする、
ことを特徴とする請求項12に記載のメモリシステム。
【請求項17】
前記リソースは、前記ライトキャッシュ領域であって、
前記リソースの整理は、前記ライトキャッシュ領域に格納されているデータを前記不揮発性メモリに退避させることである、
ことを特徴とする請求項12〜16に記載のメモリシステム。
【請求項18】
前記不揮発性メモリは、前記ホスト装置から書き込み要求されたデータを第1の単位サイズ毎に記憶する第1領域と、前記データを前記第1の単位サイズよりも大きい第2の単位サイズ毎に記憶する第2領域とを備え、
前記揮発性メモリは、前記ホスト装置から指定されるアドレスと前記不揮発性メモリ上の物理アドレスとの対応関係を前記第1領域に格納されている前記第1の単位サイズのデータ毎に記述した第1アドレス変換テーブルおよび前記第2領域に格納されている前記第2の単位サイズのデータ毎に記述した第2アドレス変換テーブルを夫々記憶する記憶領域を備え、
前記リソースは、前記第1アドレス変換テーブルを記憶する記憶領域であって、
前記リソースの整理は、前記第1領域および前記第2領域に格納されているデータを整理することによって、前記第1領域の空き領域を増加させるとともに前記第1アドレス変換テーブルのサイズを縮小することである、
ことを特徴とする請求項12〜16に記載のメモリシステム。
【請求項19】
前記揮発性メモリは、必要でかつ未実行のシステム処理の実行内容が記録されるシステム処理記憶領域を備え、
前記リソースは、前記システム処理記憶領域であって、
前記リソースの整理は、前記システム処理記憶領域に記録されているシステム処理を実行することである、
ことを特徴とする請求項12〜16に記載のメモリシステム。
【請求項20】
前記システム処理は、前記ホスト装置から読み出し要求されたデータの復元処理、前記不揮発性メモリのリフレッシュ処理、または前記不揮発性メモリのウェアレベリングのうちの少なくとも1つを含む、
ことを特徴とする請求項19に記載のメモリシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12−1】
【図12−2】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22−1】
【図22−2】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12−1】
【図12−2】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22−1】
【図22−2】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【公開番号】特開2012−141944(P2012−141944A)
【公開日】平成24年7月26日(2012.7.26)
【国際特許分類】
【出願番号】特願2011−102219(P2011−102219)
【出願日】平成23年4月28日(2011.4.28)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成24年7月26日(2012.7.26)
【国際特許分類】
【出願日】平成23年4月28日(2011.4.28)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]