不揮発性メモリに対するキャッシングポリシーを実施する方法および装置
本開示は、ホストデバイスに動作可能に接続される周辺不揮発性記憶デバイスでキャッシングポリシーおよび/またはキャッシュフラッシングポリシーを実施する方法、デバイスおよびコンピュータ可読媒体に関する。一部の実施形態では、ホストデバイスから周辺記憶デバイスによって他のデータが受信された過去の速度、および/または受信された連続するホスト書き込み要求間の過去の平均時間間隔、および/またはデータが不揮発性メモリに書き込まれるべき評価された速度、および/またはホストが記憶レディ/ビジーフラグを読み出したことが周辺不揮発性メモリデバイスによって検出されることに従って周辺不揮発性記憶デバイス内の不揮発性メモリのキャッシュ領域にデータが記憶される。一部の実施形態では、過去の速度および/または過去の平均時間間隔に従って不揮発性メモリのキャッシュ記憶領域から主記憶領域にデータがコピーされる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、フラッシュメモリなどの不揮発性メモリに対するキャッシングポリシーを実施する技法および装置に関する。
【背景技術】
【0002】
マルチレベルセル(MLC)フラッシュメモリは、各メモリセルに2ビット以上のデータを記憶するのに役立つ。MLCフラッシュメモリへのデータの書き込みは、一般に、1セル当たり1ビットのみのデータを記憶するシングルレベルセル(SLC)フラッシュメモリへのデータの書き込みよりも遅い。したがって、MLCフラッシュメモリに基づくフラッシュデバイスは、MLCフラッシュメモリに関連する書き込み速度を超える速度で送信される一連の入来データを記録することができない場合もある。
【0003】
一般に、そのままでは記憶できないほど高速でデータが生成される場合には、キャッシュメモリ機構が提供され、その入来データストリームを処理するのに充分な速度で動作するように設計される。第2の(かつ高速)メモリを使用するキャッシュメモリは、入力データ源とフラッシュメモリデバイスのメイン(かつ低速)メモリとの間に実施される。入力データストリームはまず高速なキャッシュメモリに書き込まれ、後の段階でこの高速なキャッシュメモリからメインメモリへとコピーされる。キャッシュメモリとメインメモリとの間のコピー動作は、一般にバックグラウンドで実施されるので、この動作は入力データストリームの速度によって課せられる厳しい性能条件を満足する必要がなく、したがってメインメモリの遅い書き込み性能はもはや障害とはならない。
【0004】
フラッシュメモリデバイスの1つの種類は、「周辺フラッシュ記憶デバイス」であり、これについて図1に関連してここで説明する。
「周辺フラッシュ記憶デバイス」260は、USBフラッシュドライブ(UFD)、PCカード、ならびにデジタルカメラ、音楽プレーヤ、ハンドヘルドコンピュータおよびパームトップコンピュータ、携帯電話と共に使用される小型記憶カードなどのフォームファクタまたは任意の他のフォームファクタのコンピューティング技術分野においてよく知られている。
周辺フラッシュ記憶デバイス260は、ホストデバイス310(例えば、ラップトップコンピュータもしくはデスクトップコンピュータまたは携帯電話)に接続される場合、それぞれのホスト側インターフェイス350およびデバイス側インターフェイス250(例えば、USBインターフェイスもしくはSDインターフェイスもしくはMMCインターフェイスまたは任意の他の種類の有線インターフェイスもしくは無線インターフェイス)を介してユーザデータを受信することもできる。受信されたデータは、フラッシュコントローラ280によってフラッシュメモリ記憶デバイスのフラッシュメモリ270に書き込まれてもよい。
【0005】
ホストデバイス310およびフラッシュデバイス260は別個のデバイスとして図1に示されているが、当然ながら一部の実施形態では、フラッシュデバイス260はホストデバイスのハウジング内に配置されてもよい。あるいは、フラッシュデバイス260は、ホストデバイスのハウジングの外側に配置されてもよい。
図1に示されるように、ホストデバイス310は、(例えば、書き込みコマンドに関連して)フラッシュメモリ記憶デバイス260にデータを送信する。ホストから受信されたデータは、例えばフラッシュコントローラ280によって、揮発性メモリ282に書き込まれる。図1では揮発性メモリ282はフラッシュコントローラ280とは別個に描かれているが、当然ながら一部の実施形態では、揮発性メモリ282(例えば、RAM)はフラッシュコントローラ280内にあってもよく、かつ/またはその一部であってもよい。
【0006】
データは揮発性メモリ282に書き込まれた後にフラッシュメモリ270にコピーされる。
ホストデバイス310がフラッシュデバイス260に書き込みコマンドを送信すると、フラッシュデバイス260はそのデータをできるだけ素早くフラッシュメモリ270に書き込む必要がある場合もあることに留意するべきである。一方、前述したように、場合によっては他の設計検討(例えば、より大きなデバイス容量および/または高い信頼性が必要)では、可能な限り最も速い書き込みモードよりも遅い「低速」書き込みモードを使用することが必要となる場合もある。
【0007】
このような目的のため、図2Aに示されるように、フラッシュメモリ270はキャッシュ記憶領域272と「長期的な」記憶用の主記憶領域274との両方を含むのがフラッシュデバイスでは一般的である。入来データは、少なくともあるときはキャッシュ記憶領域272に書き込まれ、後でキャッシュ記憶領域272から主記憶領域274にコピーされてもよい。
異なる実施形態では、キャッシュ記憶領域272は、主記憶領域274に使用される書き込みモードよりも高速な「高速書き込みモード」を使用して書き込まれ、かつ/または主記憶領域274はキャッシュ記憶領域272よりも大きい(すなわち、より大きい容量を有する)。
1つの特定の例では、キャッシュ記憶領域272は、各フラッシュセルにKビットのデータが記憶されるフラッシュブロックを含み、ここでKは正の整数である。主記憶領域274は、各フラッシュセルにLビットのデータが記憶されるフラッシュブロックを含み、ここでLはKより大きい正の整数である。
【0008】
図2Bは、第1の使用事例に関する。この使用事例によれば、データはキャッシュ記憶領域のみに書き込まれる。
第2の使用事例に関する図2Cの例では、(i)データはまずキャッシュ記憶領域272に書き込まれ、(ii)後でデータはキャッシュ記憶領域272から主記憶領域274にコピーされる。
第3の使用事例に関する図2Dの例は「キャッシュバイパス」について説明している。この第3の使用事例では、データは、キャッシュ記憶領域272に最初に書き込まれないで主記憶領域274に直接書き込まれる。
【0009】
図3は、データをフラッシュメモリ270に記憶する技法を説明する流れ図である。ステップS211において、周辺記憶デバイス260はホストデバイス310からデータを受信する。ステップS215において、このデータは(例えば、フラッシュコントローラ280内または不揮発性メモリデバイス260内の他のいずれかの場所の)揮発性メモリに記憶される。
図2B〜図2Dを参照して説明される使用事例に示されるように、データは、(i)(書き込まれる場合であっても)主記憶領域274に書き込まれる前にキャッシュ記憶領域272に書き込まれる(使用事例1および2)、すなわちデータの「最初のフラッシュ書き込み」がキャッシュ272に対しての実施、または(ii)キャッシュ記憶領域272に書き込まれないで主記憶領域274に書き込まれる(使用事例3)、すなわちデータの「最初のフラッシュ書き込み」が主記憶領域274に対しての実施のいずれかである。
【0010】
前者の場合(使用事例1および2)、ステップS219から出る「YES」分岐が選択され、データは(ステップS223において)キャッシュ記憶領域272に書き込まれる。任意選択的に(使用事例2を参照)また一般に、「高周波」または「超高周波」で、一般に小さいキャッシュ記憶領域から長期記憶用の大きい主記憶領域にデータがコピーされる(ステップS223のボックスから出る選択肢の線を参照)。データをコピーすることによって、データが記憶されたキャッシュ272内の領域を新しいデータを記憶するために使用することができるようになる。
キャッシュの「バイパス」に関する後者の事例(使用事例3)の場合、キャッシュ記憶領域に最初にデータを書き込まないで(ステップS219から出る「NO」分岐に従って)主記憶領域274にデータが直接書き込まれてもよい。
【0011】
図1に戻って参照すると、フラッシュコントローラ280は、ハードウェア(例えば、マイクロプロセッサおよび任意選択的にRAMまたはレジスタなどの揮発性メモリを含む)、ファームウェア、および/またはコードモジュール(例えば、揮発性および/または不揮発性メモリに記憶されマイクロプロセッサによって実行可能な)の任意の組み合わせを使用して実施されてもよいことに留意するべきである。フラッシュコントローラ280は、任意のソフトウェア(すなわち、揮発性および/または不揮発性メモリに実体的に記憶される)、および/またはファームウェア、および/またはこれらに限定されないがフィールドプログラマブルロジックアレイ(FPLA)素子(単数または複数)、フィールドプログラマブルゲートアレイ(FPGA)素子(単数または複数)、および特定用途向け集積回路(ASIC)素子(単数または複数)を含むハードウェア素子(単数または複数)を含んでもよい。フラッシュコントローラ280には、これらに限定されないが、縮小命令セットコンピュータ(RISC:reduced instruction set computer)素子(単数または複数)、および/または複雑命令セットコンピュータ(CISC:complex instruction set computer)素子(単数または複数)を含む任意の命令セットアーキテクチャが使用されてもよい。
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリにデータを記憶する方法および装置が現在必要になっている。
【発明の概要】
【0012】
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリを有する不揮発性記憶デバイスに対するキャッシングポリシーを実施する方法であって、(a)不揮発性記憶デバイスに接続されるホストデバイスから不揮発性記憶デバイスによってデータを受信するステップと、(b)(i)ステップ(a)のデータを受信するステップに先行する期間の間にホストデバイスから不揮発性記憶デバイスによって他のデータが受信された過去の速度と、(ii)先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔と、からなるグループから選択される少なくとも1つのパラメータに従って、受信データを不揮発性メモリの主記憶領域に書き込む前に不揮発性メモリのキャッシュ記憶領域に受信データを書き込むかどうかを不揮発性記憶デバイスによって決定するステップと、(c)決定するステップが肯定である場合に、ステップ(a)において受信されたデータを決定どおりにキャッシュ記憶領域に書き込むステップと、を含む方法がここで初めて開示される。
【0013】
一部の実施形態では、少なくとも1つのパラメータが、他のデータが受信された過去の速度を含む。
一部の実施形態では、前記決定するステップが、過去の速度がしきい値レベルを上回ることを条件とする。
一部の実施形態では、少なくとも1つのパラメータが、連続するホスト書き込み要求間の平均時間間隔を含む。
一部の実施形態では、データを受信するステップが、決定するステップの前に実行される。
一部の実施形態では、決定するステップが、データを受信するステップの前に実行される。
【0014】
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリを有する不揮発性記憶デバイスに対するキャッシングポリシーを実施する方法であって、(a)不揮発性メモリにデータを記憶するために、不揮発性記憶デバイスに接続されるホストデバイスから不揮発性記憶デバイスによって少なくとも1つの要求を受信するステップと、(b)少なくとも1つのデータ記憶要求を満足するために、データが不揮発性メモリに書き込まれるべき速度を評価するステップと、(c)評価されたデータ書き込み速度に従って、受信データを不揮発性メモリの主記憶領域に書き込む前に不揮発性メモリのキャッシュ記憶領域に受信データを書き込むかどうかを決定するステップと、(d)決定するステップが肯定である場合に、受信データを決定どおりにキャッシュ記憶領域に書き込むステップと、を含む方法がここで初めて開示される。
【0015】
一部の実施形態では、少なくとも1つの要求を受信するステップが、(i)第1の要求と第2の要求とを受信するステップを含み、(ii)速度を評価するステップが、(A)第1および第2の要求のそれぞれのデータ量と、(B)第1の要求を受信する時間と第2の要求を受信する時間との間の時間差とに従って実行される。
一部の実施形態では、(i)少なくとも1つの要求を受信するステップが、第1の要求と第2の要求とを受信するステップを含み、(ii)速度を評価するステップが、(A)第1の要求および第2の要求の合計データ量と、(B)第1の要求を受信する時間と第2の要求を受信する時間との間の時間差との間の割合に従って実行される。
【0016】
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリを有する不揮発性記憶デバイスに対するキャッシュフラッシングポリシーを実施する方法であって、(a)不揮発性メモリにデータを記憶するために、不揮発性記憶デバイスに接続されるホストデバイスから不揮発性記憶デバイスによって要求を受信するステップと、(b)要求が受信された時点で不揮発性記憶デバイスがキャッシュ記憶優先モードである場合、受信データを不揮発性メモリの主記憶領域に書き込む前に不揮発性メモリのキャッシュ記憶領域に受信データを書き込むステップと、(c)要求が受信された時点で不揮発性記憶デバイスがキャッシュバイパスモードである場合、受信データを不揮発性メモリのキャッシュ記憶領域に書き込まないで不揮発性メモリの主記憶領域に受信データを書き込むステップと、(d)ビジー状態を返した記憶レディ/ビジーフラグの読み出しをホストによって検出したのに応答して、キャッシュバイパスモードからキャッシュ記憶優先モードへのモード遷移を記憶デバイスによって実行するステップと、を含む方法がここで初めて開示される。
【0017】
一部の実施形態では、(e)キャッシュ記憶領域の満杯度合いに応じて、キャッシュ記憶優先モードからキャッシュバイパスモードへ遷移するかどうかを決定するステップと、(f)決定どおりにキャッシュ記憶優先モードからキャッシュバイパスモードへの遷移を実行するステップと、をさらに含む。
【0018】
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリを有する不揮発性記憶デバイスに対するキャッシングポリシーを実施する方法であって、(a)不揮発性記憶デバイスに接続されるホストデバイスから不揮発性記憶デバイスによってデータを受信するステップと、(b)キャッシュ記憶領域に受信データを記憶するステップと、(c)少なくとも1つの時点について、(i)(A)ステップ(a)のデータを受信するステップに先行する期間の間にホストデバイスから不揮発性記憶デバイスによって他のデータが受信された過去の速度と、(B)先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔と、からなるグループから選択される少なくとも1つのパラメータに従って、ステップ(a)において受信されたデータを不揮発性メモリのキャッシュ記憶領域から不揮発性メモリの主記憶領域にコピーするかどうかを不揮発性記憶デバイスによって決定するステップと、(d)前記決定するステップが肯定である場合、ステップ(a)おいて受信されたデータを決定どおりにキャッシュ記憶領域からコピーするステップと、を含む方法がここで初めて開示される。
【0019】
一部の実施形態では、少なくとも1つのパラメータが、他のデータが受信された過去の速度を含む。
一部の実施形態では、少なくとも1つのパラメータが、連続するホスト書き込み要求間の平均時間間隔を含む。
【0020】
(a)ホストデバイスと接続するデバイスインターフェイスと、(b)キャッシュ記憶領域および主記憶領域を含む不揮発性メモリと、(c)(i)デバイスインターフェイスを介してホストデバイスからデータを受信し、(ii)(A)ステップ(c)(i)のデータを受信するステップに先行する期間の間にホストデバイスから他のデータが不揮発性記憶デバイスによって受信された過去の速度と、(B)先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔と、からなるグループから選択される少なくとも1つのパラメータに従って、受信データを主記憶領域に書き込む前に受信データをキャッシュ記憶領域に書き込むかどうかを決定し、(iii)決定が肯定である場合、ステップ(c)(i)で受信されたデータを決定どおりにキャッシュ記憶領域に書き込むように動作するコントローラと、を備える不揮発性記憶デバイスがここで初めて開示される。
【0021】
(a)ホストデバイスと接続するデバイスインターフェイスと、(b)キャッシュ記憶領域および主記憶領域を含む不揮発性メモリと、(c)(i)不揮発性メモリにデータを記憶するために、デバイスインターフェイスを介してホストデバイスから少なくとも1つの要求を受信し、(ii)少なくとも1つのデータ記憶要求を満足するために、データが不揮発性メモリに書き込まれるべき速度を評価し、(iii)評価されたデータ書き込み速度に従って、受信データを主記憶領域に書き込む前にキャッシュ記憶領域に受信データを書き込むかどうかを決定し、(iv)決定が肯定である場合に、受信データを決定どおりにキャッシュ記憶領域に書き込むように動作するコントローラと、を備える不揮発性記憶デバイスがここで初めて開示される。
【0022】
(a)ホストデバイスと接続するデバイスインターフェイスと、(b)キャッシュ記憶領域および主記憶領域を含む不揮発性メモリと、(c)(i)不揮発性メモリにデータを記憶するために、デバイスインターフェイスを介してホストデバイスから要求を受信し、(ii)要求が受信された時点で不揮発性記憶デバイスがキャッシュ記憶優先モードである場合、受信データを主記憶領域に書き込む前にキャッシュ記憶領域に受信データを書き込み、(iii)要求が受信された時点で不揮発性記憶デバイスがキャッシュバイパスモードである場合、受信データを不揮発性メモリのキャッシュ記憶領域に書き込まないで主記憶領域に受信データを書き込み、(iv)ビジー状態を返した記憶レディ/ビジーフラグの読み出しをホストによって検出したのに応答して、キャッシュバイパスモードからキャッシュ記憶優先モードへのモード遷移を記憶デバイスによって実行するように動作するコントローラと、を備える不揮発性記憶デバイスがここで初めて開示される。
【0023】
(a)ホストデバイスと接続するデバイスインターフェイスと、(b)キャッシュ記憶領域および主記憶領域を含む不揮発性メモリと、(c)(i)デバイスインターフェイスを介してホストデバイスからデータを受信し、(ii)受信データをキャッシュ記憶領域に記憶し、(iii)少なくとも1つの時点について、(A)(I)ステップ(a)のデータを受信するステップに先行する期間の間にホストデバイスから他のデータが不揮発性記憶デバイスによって受信された過去の速度と、(II)先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔と、からなるグループから選択される少なくとも1つのパラメータに従って、ステップ(c)(i)で受信されたデータをキャッシュ記憶領域から主記憶領域にコピーするかどうかを決定し、(B)決定が肯定である場合、ステップ(c)(i)で受信されたデータを決定どおりにキャッシュ記憶領域からコピーするように動作するコントローラと、を備える不揮発性記憶デバイスがここで初めて開示される。
【0024】
特定の実施形態に関連する前述した特徴は、本願明細書でそうでない旨が以下に示されない限り、他の実施形態にも含まれ得ることに留意するべきである。
【図面の簡単な説明】
【0025】
【図1】ホストデバイスに接続される従来技術の周辺記憶デバイスを示すブロック図である。
【図2A】周辺記憶デバイスの不揮発性メモリにデータを記憶する従来技術のルーチンを説明する図である。
【図2B】周辺記憶デバイスの不揮発性メモリにデータを記憶する従来技術のルーチンを説明する図である。
【図2C】周辺記憶デバイスの不揮発性メモリにデータを記憶する従来技術のルーチンを説明する図である。
【図2D】周辺記憶デバイスの不揮発性メモリにデータを記憶する従来技術のルーチンを説明する図である。
【図3】周辺記憶デバイスの不揮発性メモリにデータを記憶する従来技術のルーチンを説明する図である。
【図4】1つまたは複数のキャッシュ関連ポリシー(単数または複数)を実行するのに使用されてもよい情報を説明する時系列である。
【図5】キャッシュ記憶領域および主記憶領域を含む不揮発性メモリにデータを記憶するルーチンを示す流れ図である。
【図6】キャッシュ記憶領域および主記憶領域を含む不揮発性メモリにデータを記憶するルーチンを示す流れ図である。
【図7】キャッシュ記憶領域および主記憶領域を含む不揮発性メモリにデータを記憶するルーチンを示す流れ図である。
【図8A】キャッシュ記憶領域および主記憶領域を含む不揮発性メモリにデータを記憶するルーチンを示す流れ図である。
【図8B】キャッシュバイパスモードとキャッシュ記憶優先モードとの間を遷移するルーチンを示す流れ図である。
【図9】キャッシュフラッシングポリシーを実行するルーチンを示す流れ図である。
【図10】キャッシュフラッシングポリシーを実行するルーチンを示す流れ図である。
【発明を実施するための形態】
【0026】
図面を参照しながら例示的な実施形態の本願の詳細な説明を参照することによって添付の特許請求の範囲がさらによく理解できる。この説明、実施形態および図面は、特許請求の範囲を限定するものとして解釈されるべきではない。当然ながら、本開示の方法および装置のすべての特徴がすべての実施例で必要なわけではない。さらに、当然ながら、プロセスまたは方法が示されまたは説明される本開示全体を通じて、方法のステップは、あるステップが最初に実施される別のステップに依存することが文脈から明らかでない限り、いかなる順序で実施されてもよく、または同時に実施されてもよい。本願を通じて使用される場合、用語「〜してもよい」は、強制の意味(すなわち「しなければならない」を意味する)ではなく許容の意味(すなわち「可能性を有すること」を意味する)で使用される。
【0027】
本発明の一部の実施形態は、(i)不揮発性メモリの主記憶領域にデータを記憶する前にキャッシュ記憶領域にデータを記憶するか、または(ii)主記憶領域にデータを「直接」記憶することによってキャッシュ記憶領域を「バイパスする」かどうかを決定する場合に、特定の過去のおよび/または予測される「性能データ」を利用することに関する。特定の実施形態では、キャッシュ記憶領域に「入来データ」を書き込むかどうかの決定は、(i)データがホストデバイスから周辺記憶デバイスによって受信された過去の速度(「パラメータA」)(図5を参照)、(ii)先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔(「パラメータB」)(図6を参照)、(iii)少なくとも1つのデータ記憶要求を満足するために、データが不揮発性メモリに書き込まれるべき評価されたデータ書き込み速度(「パラメータC」)(図7を参照)、および/または(iv)以下に説明される1つまたは複数の追加パラメータのうちの1つまたは複数に従って実行されてもよい。決定が「肯定」(すなわち、不揮発性メモリのキャッシュ記憶領域にデータを記憶する決定)である場合、データは決定どおりにキャッシュ記憶領域に記憶される。
【0028】
さらに、一部の実施形態では、「キャッシュ存在データ」(すなわち、キャッシュ記憶領域に既に書き込まれたデータ)をキャッシュ記憶領域から主記憶領域にコピーするかどうかまたはいつコピーするかを決定することは、前述したパラメータ(単数または複数)および/または本願明細書に記載される他のパラメータのうちの1つまたは複数に従って実行されてもよい。これらの実施形態は、「不揮発性キャッシュフラッシング」ポリシーを決定および実行するのに役立つ場合もある。
【0029】
周辺不揮発性メモリ記憶デバイスのキャッシュ記憶領域および/または主記憶領域にデータを書き込む技法の導入的な説明
「パラメータA」および図5に関連する1つの限定されない例では、現状周辺記憶デバイスがホストデバイスからの「大」量のデータ(すなわち、周辺記憶デバイス内の不揮発性記憶に記憶する必要がある、ホストデバイスから送信されたデータ)で「短い」期間に「あふれた」ことが最近ある場合、データが受信されることになる速度が相対的に「速い」状態が今後しばらく続くという可能性が「高い」と推測され得る。この場合、入来データは、「遅い」主記憶領域に直接書き込むのではなくて「速い書き込み速度」に関連するキャッシュに最初に記憶される。ホストデバイスから受信される1つまたは複数の書き込みコマンドの実行を完了するには遅い応答時間となるリスクを最小限に抑えるように(すなわち、ホストによって検出可能に)するにはこの方法が役立つこともある。
【0030】
逆に、データがホストデバイスから書き込まれる速度が過去に「遅かった」場合、ホストデバイスからデータを受信する場合にキャッシュ記憶領域をバイパスして主記憶領域に「直接」受信データを書き込むのが好ましいこともある。この場合、例えば、不揮発性(例えば、フラッシュ)メモリのキャッシュ記憶領域によって維持される書き込み動作の回数を最小限に抑えてキャッシュ領域および/または周辺不揮発性記憶デバイスの寿命を延ばすために、キャッシュ記憶領域にデータを記憶しないようにするのが役立つ場合もある。
したがって、この特定の例では、データが過去に受信された速度は、今後ホストデバイスからデータが受信されることになる推定速度を示し得る。
【0031】
「パラメータB」および図6に関連する1つの限定されない例では、先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔(「パラメータB」)は、先行する期間の間にホストデバイスによって周辺記憶デバイスに課された作業負荷の大きさを示し得る。連続するホスト書き込み要求間の平均時間間隔が相対的に「小さ」かった場合、このことは、(i)ホストが相対的に短い期間に多くの書き込み要求を提供したことによって周辺記憶デバイスに相対的に「大きな」作業負荷が課された状況、および(ii)周辺記憶デバイスが今後大きな作業負荷を処理する必要がある可能性が高いことを示し得る。この場合において、平均時間間隔が相対的に低い(例えば、あるしきい値を下回る、予め決められている、またはそれ以外)場合、ホストデバイスによって受信される1つまたは複数の書き込みコマンドの実行を完了させるには遅い応答時間となるリスクを最小限に抑えるため(すなわち、ホストによって検出可能なように)、ホストデバイスから受信された入来データを最初にキャッシュ記憶領域に書き込むことが好ましい場合もある。
【0032】
逆に、過去に連続する書き込み要求間の平均時間間隔が相対的に「大きい」場合、このことは、(i)過去に相対的に「動作していない」状態であったホスト、および(ii)今後動作していない可能性が高い(または動作している可能性が低い)ホストを示し得る。この場合、ホストデバイスからデータを受信した場合に遅い書き込み速度であってもキャッシュ記憶領域をバイパスして「直接」主記憶領域に受信データを書き込むことが好ましいこともある。この場合において、例えば、不揮発性(例えば、フラッシュ)メモリのキャッシュ記憶領域によって維持される書き込み動作の回数を最小限に抑えてキャッシュ領域および/または周辺不揮発性記憶デバイスの寿命を延ばすために、キャッシュ記憶領域にデータを記憶しないようにするのが役立つ場合もある。
【0033】
「パラメータC」および図7に関連する1つの限定されない例では、1つまたは複数のコマンド(単数または複数)でホストから受信されたデータが周辺不揮発性メモリデバイスの不揮発性メモリに書き込まれるべき速度が評価される。1つの限定されない例では、この速度を表す情報は、ホストから明示的に受信されてもよい。デバイスがデータを「非常に高速に」書き込むべき場合、評価された書き込み速度要求を満足するために、ホストデバイスから受信された入来データを(相対的に「速い」書き込みに関連する)キャッシュ記憶領域に最初に書き込むのに要求される性能を提供するために有利である場合もある。
【0034】
逆に、不揮発性メモリへの相対的に「低速度」のデータ記憶のみが要求される場合、ホストデバイスからデータを受信する際に、遅い書き込み速度であってもキャッシュ記憶領域をバイパスして主記憶領域に受信データを「直接」書き込むことが好ましいこともある。この場合、例えば、不揮発性(例えば、フラッシュ)メモリのキャッシュ記憶領域によって維持される書き込み動作の回数を最小限に抑えてキャッシュ領域および/または周辺不揮発性記憶デバイスの寿命を延ばすために、キャッシュ記憶領域にデータを記憶しないようにするのが役立つ場合もある。
【0035】
異なる実施形態では、主記憶に書き込む前にキャッシュに書き込むかどうかの決定は、ホストデバイスからキャッシング命令を一切受信しないで周辺不揮発性記憶デバイスによって「自立的に」実行されてもよいことに留意するべきである。
【0036】
周辺不揮発性メモリ記憶デバイスの不揮発性メモリのキャッシュ記憶領域から主記憶領域にデータをコピーする技法の導入的な説明
記憶領域
前述したように、本発明の一部の実施形態は、「キャッシュ存在データ」(すなわち、キャッシュ記憶領域に既に書き込まれたデータ)をキャッシュ記憶領域から主記憶領域にコピーするかどうかまたはいつコピーするかを決定する技法に関する。データは、この決定を条件として、かつ/またはこの決定に従ってキャッシュ記憶領域から主記憶領域にコピーされる。
【0037】
一部の実施形態では、「キャッシュ存在データ」をキャッシュ記憶領域から主記憶領域にコピーするかどうかまたはいつコピーするかを決定することは、(i)データがホストデバイスから周辺記憶デバイスによって受信された過去の速度(「パラメータA」)(図5参照)、(ii)先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔(「パラメータB」)(図6参照)、および/または(iii)以下に説明される1つまたは複数の追加のパラメータのうちの1つまたは複数に従って実行されてもよい。
【0038】
「パラメータA」および図9に関連する1つの限定されない例では、現在周辺記憶デバイスがホストデバイスからの「大」量のデータ(すなわち、周辺記憶デバイス内の不揮発性記憶デバイスに記憶される必要がある、ホストデバイスから送信されたデータ)で「短い」期間にあふれたことが最近ある場合、データが受信されることになる速度が相対的に「速い」状態が今後しばらく続くという可能性が「高い」と推測され得る。この場合、キャッシュをフラッシュするのを遅らせ(キャッシュ記憶領域から主記憶領域にデータをコピーするのを遅らせる)かつ/またはキャッシュを相対的に「低速」でフラッシュするのが有利であることもある。特に、キャッシュ記憶領域から主記憶領域にデータがコピーされるキャッシュコピー動作は、周辺不揮発性記憶デバイスのデバイスリソースを消費する場合があり、「入来データ」の処理に使用可能であるデバイスリソースの量を制限する場合がある。したがって、記憶デバイスが新しい入来データで相対的に「あふれる」ことになると予測される場合、デバイスリソースをキャッシュフラッシングに回すことで周辺記憶デバイスが入来データを要求される速度で(すなわち、ホストデバイスによって検出可能なように)「処理する」ことができなくなるリスクが増加する場合もある。
【0039】
逆に、データがホストデバイスから書き込まれる速度が過去に「遅かった」場合、デバイスリソースを、ホストデバイスからデータを受信した場合にキャッシュ記憶領域から主記憶領域にデータをコピーするタスク専用にすることによってこの状況をうまく利用するのが好ましいこともある。ホストデバイスによって周辺記憶デバイスに課される要求が今後相対的に「低い」ことが予測されるため、デバイスリソースを、キャッシュからのデータのコピー専用にしてキャッシュを「新しい」入来データ用に「クリアする」機会を提供している期間にデバイスがこれらの要求を一切満足することができないリスクは相対的に低くなると推定され得る。
【0040】
「パラメータB」および図10に関連する1つの限定されない例では、先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔(「パラメータB」)は、ホストデバイスが周辺記憶デバイスにコマンドまたは特定のタスクを送信する際に「アクティブ」であった度合いを示す。連続するホスト書き込み要求間の平均時間間隔が相対的に「小さ」かった場合、このことは、(i)ホストが相対的に短い期間に多くの書き込み要求を提供したことによって周辺記憶デバイスに相対的に「大きな」作業負荷が課された状況、および(ii)周辺記憶デバイスが今後大きな作業負荷を処理する必要がある可能性が高いことを示し得る。この場合において、平均時間間隔が相対的に低い(例えば、あるしきい値を下回る、予め決められている、またはそれ以外の)場合、キャッシュをフラッシュするのを遅らせ(キャッシュ記憶領域から主記憶領域にデータをコピーするのを遅らせる)かつ/または相対的に「低速」でキャッシュをフラッシュするのが有利なこともある。特に、キャッシュ記憶領域から主記憶領域にデータがコピーされるキャッシュコピー動作は、周辺不揮発性記憶デバイスのデバイスリソースを消費する場合があり、「入来データ」の処理に使用可能であるデバイスリソースの量を制限する場合がある。したがって、記憶デバイスが相対的に「大きな」作業負荷を処理する必要があると予測される(すなわち、先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔によって)場合、デバイスリソースをキャッシュフラッシングに回すことで周辺記憶デバイスが入来データを要求される速度で(すなわち、ホストデバイスによって検出可能なように)「処理する」ことができなくなるリスクが増加する場合もある。
【0041】
逆に、過去において連続する書き込み要求間の平均時間が相対的に「大きかった」場合、このことは、(i)過去に相対的に「非アクティブ」状態であったホスト、および(ii)今後非アクティブである可能性が高い(または非アクティブである可能性が低い)ホストを示し得る。この場合、キャッシュ記憶領域から主記憶領域にデータをコピーするタスクにデバイスリソースを専念させることによってこの状況をうまく利用するのが好ましいこともある。ホストデバイスによって周辺記憶デバイスに課される要求が今後相対的に「低い」ことが予測されるため、デバイスリソースを、キャッシュからのデータのコピー専用にしてキャッシュを「新しい」入来データ用に「クリアする」機会を提供している期間にデバイスがこれらの要求を一切満足することができないリスクは相対的に低くなると推定され得る。
【0042】
異なる実施形態では、キャッシュ記憶領域から主記憶領域に「キャッシュ存在データ」をコピーするかどうか(またはいつコピーするか)の決定は、ホストデバイスからキャッシング命令を一切受信しないで周辺フラッシュデバイスによって「自立的に」実行されてもよいことに留意するべきである。
【0043】
図4の説明
図4は、1つまたは複数のキャッシュ関連ポリシー(単数または複数)を実行するのに利用されてもよい情報を説明する時系列である。
時間t1 で、データD1 を含む第1の「書き込み要求」が、ホストデバイス310からそれぞれのインターフェイス350、250を介して周辺記憶デバイス260で受信される。時間t2 で、データD2 を含む第2の「書き込み要求」が、ホストデバイス310からそれぞれのインターフェイス350、250を介して周辺記憶デバイス260で受信される。時間t3 で、データD3 を含む第3の「書き込み要求」が、ホストデバイス310からそれぞれのインターフェイス350、250を介して周辺記憶デバイス260で受信される。時間t4 で、データD4 を含む第4の「書き込み要求」が、ホストデバイス310からそれぞれのインターフェイス350、250を介して周辺記憶デバイス260で受信される。時間t5 で、データD5 を含む第5の「書き込み要求」が、ホストデバイス310からそれぞれのインターフェイス350、250を介して周辺記憶デバイス260で受信される。
【0044】
(i)データD2 の受信/第2の書き込み要求の受信と(ii)D1 のデータの受信/第1の書き込み要求の受信との間の「時間間隔」はΔt12である。(i)データD3 の受信/第3の書き込み要求の受信と(ii)D2 のデータの受信/第2の書き込み要求の受信との間の「時間間隔」はΔt23である。(i)データD4 の受信/第4の書き込み要求の受信と(ii)D3 のデータの受信/第3の書き込み要求の受信との間の「時間間隔」はΔt34である。(i)データD5 の受信/第5の書き込み要求の受信と(ii)D4 のデータの受信/第4の書き込み要求の受信との間の「時間間隔」はΔt45である。
【0045】
図5の説明
図5は、フラッシュメモリ270にデータを記憶する方法を説明する流れ図である。ステップS211において、周辺記憶デバイス260は、ホストデバイス310からデータを受信する。ステップS215において、このデータは(例えば、フラッシュコントローラ280内または不揮発性メモリデバイス260内の他のいずれかの場所の)揮発性メモリに記憶される。
ステップS251において、S211におけるデータの受信に先行する期間の間に他のデータが受信された過去の速度が評価または決定される。
【0046】
図4および図5の両方を参照する。1つ例では、時間t4 でコマンド4を受信する部分としてステップS211が実行される。この例では、受信される「データ」はD4 である。この例では、先行する期間が時間t2 −Δt12で始まり、時間t3 +Δt34で終了する。したがって、先行する期間の合計の「長さ」は(t3 +Δt34)−(t2 −Δt12)であり、「前の時間間隔」(すなわち、時間t4 以前)の間に受信された「他のデータ」の合計量は(D2 +D3 )である。したがって、この例では、「過去の期間」の間に「他のデータ」が受信される「過去の速度」Rは、(D2 +D3 )/{(t3 +Δt34)−(t2 −Δt12)}である。
【0047】
ステップS255において、データがキャッシュされるかどうかは過去のデータ受信速度Rに従って決定される。1つの限定されない例では、Rは、ある種のしきい値(例えば、所定のしきい値および/または時間の関数として変化するしきい値および/または任意の他のしきい値)と比較される。(i)Rがしきい値を超えた場合、S219から出る「YES」分岐が選ばれ、(ii)そうでない場合にはS219から出る「NO」分岐が選ばれる。
【0048】
前者の場合、データは(書き込まれる場合であっても)主記憶領域274に書き込まれる前に不揮発性メモリのキャッシュ記憶領域272に書き込まれる。後者の「キャッシュバイパス」の場合、データはキャッシュ記憶領域272に書き込まれないで不揮発性メモリの主記憶領域274に書き込まれる。
【0049】
図6の説明
図6は、フラッシュメモリ270にデータを記憶する技法を説明する流れ図である。ステップS211において、周辺記憶デバイス260はホストデバイス310からデータを受信する。ステップS215において、このデータは(例えば、フラッシュコントローラ280内または不揮発性メモリデバイス260内の他のいずれかの場所の)揮発性メモリに記憶される。
ステップ261において、S211におけるデータの受信に先行する期間の間の連続するホスト書き込み要求間の平均時間間隔が評価または決定される。
【0050】
図4および図6の両方を参照する。1つ例では、時間t5 でコマンド5を受信する部分としてステップS211が実行される。この例では、先行する期間が時間t2 −Δt12で始まり、時間t4 +Δt45で終了する。この先行する期間の間に、3つのホスト書き込み要求が受信される。すなわち、時間t2 における第2の書き込み要求、時間t3 における第3の書き込み要求、および時間t4 における第4の書き込み要求である。この時間間隔の間に、2つの「連続するホスト書き込み要求間の時間間隔」Δt23およびΔt34がある。したがって、この限定されない例では、連続するホスト書き込み要求間の平均時間間隔TAVG は(Δt23+Δt34)/2である。
【0051】
ステップS265において、データがキャッシュされるかどうかは連続するホスト書き込み要求間の平均時間間隔TAVG に従って決定される。1つの限定されない例では、TAVG はある種のしきい値(例えば、所定のしきい値および/または時間の関数として変化するしきい値および/または任意の他のしきい値)と比較される。(i)TAVG がしきい値よりも低い場合、S219から出る「YES」分岐が選ばれ、(ii)そうでない場合にはS219から出る「NO」分岐が選ばれる。
【0052】
前者の場合、データは(書き込まれる場合であっても)主記憶領域274に書き込まれる前に不揮発性メモリのキャッシュ記憶領域272に書き込まれる。後者の「キャッシュバイパス」の場合、データはキャッシュ記憶領域272に書き込まれないで不揮発性メモリの主記憶領域274に書き込まれる。
【0053】
図7の説明
図7は、フラッシュメモリ270にデータを記憶する技法を説明する流れ図である。ステップS311において、周辺記憶デバイス260はホストデバイス310からデータを受信する。ステップS315において、このデータは(例えば、フラッシュコントローラ280内または不揮発性メモリデバイス260内の他のいずれかの場所の)揮発性メモリに記憶される。
【0054】
ステップS315において、少なくとも1つのデータ記憶要求を満たすためにS311で受信されたデータが不揮発性メモリに書き込まれるべき速度が評価されてもよい。1つの限定されない例では、この情報は明示的に受信されてもよい。例えば、周辺記憶デバイスのコマンドセットは、ホストデバイスが一定量のデータを一定の時間内に記憶するように要求するシンタックスを有する書き込みコマンドを含んでもよい。したがって、データが書き込まれるべき速度は、(i)特定のコマンドでホストデバイスから受信されたデータ量および(ii)ホストデバイスからの要求に従ってデータが書き込まれることになる時間量の関数と見なされてもよい。
さらに別の例では、データが不揮発性メモリに書き込まれるべき速度を推定するのに過去のパターンが用いられてもよい。
【0055】
ステップS319において、データがキャッシュされるかどうかはデータが書き込まれるべき評価された速度ARに従って決定される。1つの限定されない例では、ARはある種のしきい値(例えば、所定のしきい値および/または時間の関数として変化するしきい値および/または任意の他のしきい値)と比較される。(i)ARがしきい値(すなわち、データを相対的に高速で書き込むように要求する)を超えた場合、S219から出る「YES」分岐が選ばれ、(ii)そうでない場合にはS219から出る「NO」分岐が選ばれる。
【0056】
前者の場合、データは(書き込まれる場合であっても)主記憶領域274に書き込まれる前に不揮発性メモリのキャッシュ記憶領域272に書き込まれる。後者の「キャッシュバイパス」の場合、データはキャッシュ記憶領域272に書き込まれないで不揮発性メモリの主記憶領域274に書き込まれる。
【0057】
図8A〜図8Bの説明
図8A〜図8Bを参照する。図8A〜図8Bの例によれば、ビジー状態を返した記憶レディ/ビジーフラグ(すなわち、周辺記憶デバイス260の)をホストが読み出す場合、このことは周辺記憶デバイスがホストデバイスによって「望まれる」速度で不揮発性記憶にデータを首尾よく書き込めないことを示し得る。この場合、ホストデバイスにとって「より優れた性能」を提供するために、キャッシュ記憶領域によって提供される「高速書き込み」特性を利用して最初にキャッシュ記憶領域に入来データを書き込むのが望ましい場合もある。
【0058】
図8Aは、フラッシュメモリ270にデータを記憶する技法を説明する流れ図である。図8Aの実施形態によれば、周辺記憶デバイス260は、少なくとも2つのデバイス「モード」を提供する。すなわち、データが主記憶領域274に書き込まれる前にキャッシュ記憶領域272に記憶される「キャッシュ記憶優先」デバイスモードと称される第1のモードと、データがキャッシュ記憶領域272に書き込まれないで主記憶領域274に記憶される「キャッシュバイパスモード」と称される第2のモードである。「現在のモード」に関する情報は、これらに限定されないがフラッシュコントローラ280、揮発性メモリ282およびフラッシュメモリ270を含むいずれの場所に記憶されてもよい。
図8AのステップS211において、周辺記憶デバイス260は、ホストデバイス310からデータを受信する。ステップS215において、このデータは(例えば、フラッシュコントローラ280内または不揮発性メモリデバイス260内の他の何れかの場所の)揮発性メモリに記憶される。
【0059】
図8Bは、2つの前述したデバイスモード間を遷移するルーチンを示す流れ図である。したがって、ステップS411において、ホストデバイスによって記憶レディ/ビジーフラグを読み出したのに応答して(すなわち、ホストが周辺記憶デバイスにその状態を問い合わせ、周辺記憶デバイスはホストに記憶レディ/ビジーフラグを返してこれがホストデバイスによって読み出される)、デバイスは「キャッシュバイパスモード」からキャッシュ記憶優先モードに遷移することができる。このことは、ホストデバイスは周辺記憶デバイスが「ビジー」であるという情報を受信したこと、およびホストデバイスに提供される性能を最大限にするために「高速書き込みモード」を使用するのが有利である場合もあることの両方を示す。
【0060】
ステップS415において、周辺記憶デバイス260は、1つまたは複数のイベントに従ってキャッシュバイパスモードに戻る遷移を実行する。1つの限定されない例では、この遷移はキャッシュ記憶領域の満杯度合い(すなわち、キャッシュ領域272が以前に書き込まれたデータでどの程度満たされているか)に応じて実行される。例えば、キャッシュが「満杯」に近い場合、フラッシュに入来データを書き込むのに充分な空間がキャッシュ内に存在しないため、キャッシュ記憶優先モードからキャッシュバイパスモードへの遷移を実行するのが望ましい場合もある。
【0061】
ここで図8AのステップS271を参照すると、(i)周辺デバイス260が「キャッシュ記憶優先」モードの場合、ステップS271から出る「左側」分岐が選択され、(ii)そうでない場合にはステップS271から出る「右側」分岐が選択されることに留意するべきである。
前者の場合、データは(書き込まれる場合であっても)主記憶領域274に書き込まれる前に不揮発性メモリのキャッシュ記憶領域272に書き込まれる。後者の「キャッシュバイパス」の場合、データはキャッシュ記憶領域272に書き込まれないで不揮発性メモリの主記憶領域274に書き込まれる。
【0062】
図9〜図10の説明
図5〜図8は、周辺記憶デバイス260の不揮発性メモリ270に入来データを記憶するポリシーを実施するルーチンを説明している。
図9〜図10は、不揮発性メモリのキャッシュ記憶領域272から主記憶領域274にデータをコピーするルーチンを説明している(「周辺不揮発性記憶デバイスの不揮発性メモリのキャッシュ記憶領域から主記憶領域にデータをコピーする技法の導入的な説明」と題される前のセクションを参照)。
【0063】
したがって、ステップS511において、周辺記憶デバイス260はホストデバイス310からデータを受信する。ステップS515において、このデータは不揮発性メモリ270のキャッシュ記憶領域272に記憶される。ステップS519において、ステップS511におけるデータの受信に先行する期間の間に他のデータが受信された過去の速度が決定される(図5のステップS251を参照)。
【0064】
ステップS523において、キャッシュ記憶領域272から主記憶領域274にデータがコピーされる(すなわち、特定の時間または特定の時間枠または任意の時間に)かどうかは、過去のデータ受信速度に従って決定される。1つの例では、(i)ホスト310からデータが受信される過去の速度が相対的に「遅い」場合、このことは今後デバイスが「相対的に遅い」速度でデータを受信することを示し、デバイスリソースがキャッシュ記憶領域272から主記憶領域274へデータをコピーすることに割り当てられ得ることが推定され、(ii)逆に、ホスト310からデータが受信される過去の速度が相対的に「速い」場合、このことは今後デバイスが「相対的に速い」速度でデータを受信することを示し、キャッシュ記憶領域272から主記憶領域274へデータをコピーするのを遅らせるのが好ましいことが推定され得る。
ステップS523では、ステップS523で「決定が肯定」(すなわち、キャッシュ記憶領域272から主記憶領域274にデータがコピーされるという決定)である場合、決定どおりにデータはキャッシュ記憶領域272から主記憶領域274にコピーされる。
【0065】
図9のステップ(単数または複数)のいずれも任意の回数繰り返されてもよいことに留意するべきである。したがって、1つの限定されない例では、データが受信された過去の速度は、(例えば、複数の時点で)モニタされてもよく、(それ自体が時間とともに変動することもある)過去の速度の増加(または減少)に応答して、データがキャッシュ記憶領域272から主記憶領域274にコピーされても、またはデータがキャッシュ記憶領域272から主記憶領域274にコピーされるプロセスは停止してもよい。
【0066】
ここで図10を参照する。ステップS511において、周辺記憶デバイス260はホストデバイス310からデータを受信する。ステップS515において、このデータは不揮発性メモリ270のキャッシュ記憶領域272に記憶される。ステップS519において、ステップS511におけるデータの受信に先行する過去の期間にホスト310から周辺記憶デバイス260に送信された連続するホスト書き込み要求間の平均時間間隔の大きさが決定される(図6のステップS261を参照)。
【0067】
ステップS531において、キャッシュ記憶領域272から主記憶領域274にデータがコピーされる(すなわち、特定の時間または特定の時間枠または任意の時間に)かどうかは、平均時間間隔の大きさに従って決定される。1つの例では、(i)連続する書き込み要求間の平均時間間隔が相対的に「大きい」場合、今後ホスト310から周辺デバイス260によって書き込みコマンドが相対的に「まれに」受信されることになり、デバイスリソースがキャッシュ記憶領域272から主記憶領域274へデータをコピーすることに割り当てられ得ることが推定され、(ii)逆に、連続する書き込み要求間の平均時間間隔が相対的に「小さい」場合、今後ホスト310から周辺デバイス260によって書き込みコマンドが相対的に「頻繁に」受信されることになり、今後周辺デバイス260は相対的に「ビジー」になり、キャッシュ記憶領域272から主記憶領域へデータをコピーするのを遅らせるのが好ましいことが推定され得る。
ステップS535では、ステップS523で「決定が肯定」(すなわち、キャッシュ記憶領域272から主記憶領域274にデータがコピーされるという決定)である場合、決定どおりにデータはキャッシュ記憶領域272から主記憶領域274にコピーされる。
【0068】
図10のステップ(単数または複数)のいずれも任意の回数繰り返されてもよいことに留意するべきである。したがって、1つの限定されない例では、連続するホスト書き込み要求間の平均時間間隔は、(例えば、複数の時点で)モニタされてもよく、(それ自体が時間とともに変動することもある)平均時間間隔の増加(または減少)に応答して、データがキャッシュ記憶領域272から主記憶領域274にコピーされても、またはデータがキャッシュ記憶領域272から主記憶領域274にコピーされているプロセスが停止してもよい。
【0069】
定義
便宜のため、本願明細書の記載の文脈における様々な用語がここで提示される。本願のこの箇所または他の箇所で明示的または非明示的に定義が提供される限りにおいて、このような定義は関連技術(単数または複数)の当業者によって定義される用語の使用と一致していると理解される。さらに、このような定義は、このような使用と一致する可能な限り広い意味で解釈されるべきである。
「不揮発性メモリ」とは、フラッシュメモリおよび磁気メモリを含む任意の種類の不揮発性メモリを示す。
「入来データ」とは、フラッシュメモリデバイスの不揮発性メモリ(例えば、フラッシュメモリ)にまだ記憶されていない、ホストからフラッシュメモリデバイスによって受信されるデータを示す。「入来データ」は、フラッシュメモリデバイス内の揮発性メモリ270に(例えば、フラッシュコントローラ280によって)一時的に記憶されてもよい。
【0070】
一部の実施形態(例えば、図8BのステップS415に関連する一部の実施形態)では、「キャッシュ記憶領域272が以前に記憶されたデータで満たされている度合い」が決定される。「以前に記憶されたデータ」とは、「フラッシュメモリ記憶デバイスが以前に記憶されたデータで満たされている度合い」が決定される時点より前に不揮発性メモリ270のキャッシュ記憶領域272に記憶されていたデータを示す。
【0071】
追加の注意点
前述した実施形態のいずれも、図面とともに前述した動作をコンピュータ可読媒体上で実施する命令および/またはデータを受信し、送信しまたは記憶することをさらに含んでもよいことにさらに留意するべきである。一般的に言って、コンピュータ可読媒体は、磁気またはフラッシュまたは光学媒体などの記憶媒体またはメモリ媒体、例えば、ディスクまたはCD−ROM、RAM、ROMなどの揮発性または不揮発性媒体など、ならびにネットワークおよび/または無線リンクなどの通信媒体を介して伝達される電気信号、電磁気信号またはデジタル信号などの伝送媒体または信号を含んでもよい。
【0072】
このように前述した例示的な実施形態を説明してきたが、それらの様々な等価物、代替物、変更形態および改善形態が添付の特許請求の範囲および趣旨から逸脱することなしに可能であることは当業者には明らかである。特に、異なる実施形態は、本願明細書で説明される特徴以外の特徴の組み合わせを含んでもよい。したがって、特許請求の範囲は、前述した説明に限定されない。
【技術分野】
【0001】
本発明は、フラッシュメモリなどの不揮発性メモリに対するキャッシングポリシーを実施する技法および装置に関する。
【背景技術】
【0002】
マルチレベルセル(MLC)フラッシュメモリは、各メモリセルに2ビット以上のデータを記憶するのに役立つ。MLCフラッシュメモリへのデータの書き込みは、一般に、1セル当たり1ビットのみのデータを記憶するシングルレベルセル(SLC)フラッシュメモリへのデータの書き込みよりも遅い。したがって、MLCフラッシュメモリに基づくフラッシュデバイスは、MLCフラッシュメモリに関連する書き込み速度を超える速度で送信される一連の入来データを記録することができない場合もある。
【0003】
一般に、そのままでは記憶できないほど高速でデータが生成される場合には、キャッシュメモリ機構が提供され、その入来データストリームを処理するのに充分な速度で動作するように設計される。第2の(かつ高速)メモリを使用するキャッシュメモリは、入力データ源とフラッシュメモリデバイスのメイン(かつ低速)メモリとの間に実施される。入力データストリームはまず高速なキャッシュメモリに書き込まれ、後の段階でこの高速なキャッシュメモリからメインメモリへとコピーされる。キャッシュメモリとメインメモリとの間のコピー動作は、一般にバックグラウンドで実施されるので、この動作は入力データストリームの速度によって課せられる厳しい性能条件を満足する必要がなく、したがってメインメモリの遅い書き込み性能はもはや障害とはならない。
【0004】
フラッシュメモリデバイスの1つの種類は、「周辺フラッシュ記憶デバイス」であり、これについて図1に関連してここで説明する。
「周辺フラッシュ記憶デバイス」260は、USBフラッシュドライブ(UFD)、PCカード、ならびにデジタルカメラ、音楽プレーヤ、ハンドヘルドコンピュータおよびパームトップコンピュータ、携帯電話と共に使用される小型記憶カードなどのフォームファクタまたは任意の他のフォームファクタのコンピューティング技術分野においてよく知られている。
周辺フラッシュ記憶デバイス260は、ホストデバイス310(例えば、ラップトップコンピュータもしくはデスクトップコンピュータまたは携帯電話)に接続される場合、それぞれのホスト側インターフェイス350およびデバイス側インターフェイス250(例えば、USBインターフェイスもしくはSDインターフェイスもしくはMMCインターフェイスまたは任意の他の種類の有線インターフェイスもしくは無線インターフェイス)を介してユーザデータを受信することもできる。受信されたデータは、フラッシュコントローラ280によってフラッシュメモリ記憶デバイスのフラッシュメモリ270に書き込まれてもよい。
【0005】
ホストデバイス310およびフラッシュデバイス260は別個のデバイスとして図1に示されているが、当然ながら一部の実施形態では、フラッシュデバイス260はホストデバイスのハウジング内に配置されてもよい。あるいは、フラッシュデバイス260は、ホストデバイスのハウジングの外側に配置されてもよい。
図1に示されるように、ホストデバイス310は、(例えば、書き込みコマンドに関連して)フラッシュメモリ記憶デバイス260にデータを送信する。ホストから受信されたデータは、例えばフラッシュコントローラ280によって、揮発性メモリ282に書き込まれる。図1では揮発性メモリ282はフラッシュコントローラ280とは別個に描かれているが、当然ながら一部の実施形態では、揮発性メモリ282(例えば、RAM)はフラッシュコントローラ280内にあってもよく、かつ/またはその一部であってもよい。
【0006】
データは揮発性メモリ282に書き込まれた後にフラッシュメモリ270にコピーされる。
ホストデバイス310がフラッシュデバイス260に書き込みコマンドを送信すると、フラッシュデバイス260はそのデータをできるだけ素早くフラッシュメモリ270に書き込む必要がある場合もあることに留意するべきである。一方、前述したように、場合によっては他の設計検討(例えば、より大きなデバイス容量および/または高い信頼性が必要)では、可能な限り最も速い書き込みモードよりも遅い「低速」書き込みモードを使用することが必要となる場合もある。
【0007】
このような目的のため、図2Aに示されるように、フラッシュメモリ270はキャッシュ記憶領域272と「長期的な」記憶用の主記憶領域274との両方を含むのがフラッシュデバイスでは一般的である。入来データは、少なくともあるときはキャッシュ記憶領域272に書き込まれ、後でキャッシュ記憶領域272から主記憶領域274にコピーされてもよい。
異なる実施形態では、キャッシュ記憶領域272は、主記憶領域274に使用される書き込みモードよりも高速な「高速書き込みモード」を使用して書き込まれ、かつ/または主記憶領域274はキャッシュ記憶領域272よりも大きい(すなわち、より大きい容量を有する)。
1つの特定の例では、キャッシュ記憶領域272は、各フラッシュセルにKビットのデータが記憶されるフラッシュブロックを含み、ここでKは正の整数である。主記憶領域274は、各フラッシュセルにLビットのデータが記憶されるフラッシュブロックを含み、ここでLはKより大きい正の整数である。
【0008】
図2Bは、第1の使用事例に関する。この使用事例によれば、データはキャッシュ記憶領域のみに書き込まれる。
第2の使用事例に関する図2Cの例では、(i)データはまずキャッシュ記憶領域272に書き込まれ、(ii)後でデータはキャッシュ記憶領域272から主記憶領域274にコピーされる。
第3の使用事例に関する図2Dの例は「キャッシュバイパス」について説明している。この第3の使用事例では、データは、キャッシュ記憶領域272に最初に書き込まれないで主記憶領域274に直接書き込まれる。
【0009】
図3は、データをフラッシュメモリ270に記憶する技法を説明する流れ図である。ステップS211において、周辺記憶デバイス260はホストデバイス310からデータを受信する。ステップS215において、このデータは(例えば、フラッシュコントローラ280内または不揮発性メモリデバイス260内の他のいずれかの場所の)揮発性メモリに記憶される。
図2B〜図2Dを参照して説明される使用事例に示されるように、データは、(i)(書き込まれる場合であっても)主記憶領域274に書き込まれる前にキャッシュ記憶領域272に書き込まれる(使用事例1および2)、すなわちデータの「最初のフラッシュ書き込み」がキャッシュ272に対しての実施、または(ii)キャッシュ記憶領域272に書き込まれないで主記憶領域274に書き込まれる(使用事例3)、すなわちデータの「最初のフラッシュ書き込み」が主記憶領域274に対しての実施のいずれかである。
【0010】
前者の場合(使用事例1および2)、ステップS219から出る「YES」分岐が選択され、データは(ステップS223において)キャッシュ記憶領域272に書き込まれる。任意選択的に(使用事例2を参照)また一般に、「高周波」または「超高周波」で、一般に小さいキャッシュ記憶領域から長期記憶用の大きい主記憶領域にデータがコピーされる(ステップS223のボックスから出る選択肢の線を参照)。データをコピーすることによって、データが記憶されたキャッシュ272内の領域を新しいデータを記憶するために使用することができるようになる。
キャッシュの「バイパス」に関する後者の事例(使用事例3)の場合、キャッシュ記憶領域に最初にデータを書き込まないで(ステップS219から出る「NO」分岐に従って)主記憶領域274にデータが直接書き込まれてもよい。
【0011】
図1に戻って参照すると、フラッシュコントローラ280は、ハードウェア(例えば、マイクロプロセッサおよび任意選択的にRAMまたはレジスタなどの揮発性メモリを含む)、ファームウェア、および/またはコードモジュール(例えば、揮発性および/または不揮発性メモリに記憶されマイクロプロセッサによって実行可能な)の任意の組み合わせを使用して実施されてもよいことに留意するべきである。フラッシュコントローラ280は、任意のソフトウェア(すなわち、揮発性および/または不揮発性メモリに実体的に記憶される)、および/またはファームウェア、および/またはこれらに限定されないがフィールドプログラマブルロジックアレイ(FPLA)素子(単数または複数)、フィールドプログラマブルゲートアレイ(FPGA)素子(単数または複数)、および特定用途向け集積回路(ASIC)素子(単数または複数)を含むハードウェア素子(単数または複数)を含んでもよい。フラッシュコントローラ280には、これらに限定されないが、縮小命令セットコンピュータ(RISC:reduced instruction set computer)素子(単数または複数)、および/または複雑命令セットコンピュータ(CISC:complex instruction set computer)素子(単数または複数)を含む任意の命令セットアーキテクチャが使用されてもよい。
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリにデータを記憶する方法および装置が現在必要になっている。
【発明の概要】
【0012】
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリを有する不揮発性記憶デバイスに対するキャッシングポリシーを実施する方法であって、(a)不揮発性記憶デバイスに接続されるホストデバイスから不揮発性記憶デバイスによってデータを受信するステップと、(b)(i)ステップ(a)のデータを受信するステップに先行する期間の間にホストデバイスから不揮発性記憶デバイスによって他のデータが受信された過去の速度と、(ii)先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔と、からなるグループから選択される少なくとも1つのパラメータに従って、受信データを不揮発性メモリの主記憶領域に書き込む前に不揮発性メモリのキャッシュ記憶領域に受信データを書き込むかどうかを不揮発性記憶デバイスによって決定するステップと、(c)決定するステップが肯定である場合に、ステップ(a)において受信されたデータを決定どおりにキャッシュ記憶領域に書き込むステップと、を含む方法がここで初めて開示される。
【0013】
一部の実施形態では、少なくとも1つのパラメータが、他のデータが受信された過去の速度を含む。
一部の実施形態では、前記決定するステップが、過去の速度がしきい値レベルを上回ることを条件とする。
一部の実施形態では、少なくとも1つのパラメータが、連続するホスト書き込み要求間の平均時間間隔を含む。
一部の実施形態では、データを受信するステップが、決定するステップの前に実行される。
一部の実施形態では、決定するステップが、データを受信するステップの前に実行される。
【0014】
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリを有する不揮発性記憶デバイスに対するキャッシングポリシーを実施する方法であって、(a)不揮発性メモリにデータを記憶するために、不揮発性記憶デバイスに接続されるホストデバイスから不揮発性記憶デバイスによって少なくとも1つの要求を受信するステップと、(b)少なくとも1つのデータ記憶要求を満足するために、データが不揮発性メモリに書き込まれるべき速度を評価するステップと、(c)評価されたデータ書き込み速度に従って、受信データを不揮発性メモリの主記憶領域に書き込む前に不揮発性メモリのキャッシュ記憶領域に受信データを書き込むかどうかを決定するステップと、(d)決定するステップが肯定である場合に、受信データを決定どおりにキャッシュ記憶領域に書き込むステップと、を含む方法がここで初めて開示される。
【0015】
一部の実施形態では、少なくとも1つの要求を受信するステップが、(i)第1の要求と第2の要求とを受信するステップを含み、(ii)速度を評価するステップが、(A)第1および第2の要求のそれぞれのデータ量と、(B)第1の要求を受信する時間と第2の要求を受信する時間との間の時間差とに従って実行される。
一部の実施形態では、(i)少なくとも1つの要求を受信するステップが、第1の要求と第2の要求とを受信するステップを含み、(ii)速度を評価するステップが、(A)第1の要求および第2の要求の合計データ量と、(B)第1の要求を受信する時間と第2の要求を受信する時間との間の時間差との間の割合に従って実行される。
【0016】
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリを有する不揮発性記憶デバイスに対するキャッシュフラッシングポリシーを実施する方法であって、(a)不揮発性メモリにデータを記憶するために、不揮発性記憶デバイスに接続されるホストデバイスから不揮発性記憶デバイスによって要求を受信するステップと、(b)要求が受信された時点で不揮発性記憶デバイスがキャッシュ記憶優先モードである場合、受信データを不揮発性メモリの主記憶領域に書き込む前に不揮発性メモリのキャッシュ記憶領域に受信データを書き込むステップと、(c)要求が受信された時点で不揮発性記憶デバイスがキャッシュバイパスモードである場合、受信データを不揮発性メモリのキャッシュ記憶領域に書き込まないで不揮発性メモリの主記憶領域に受信データを書き込むステップと、(d)ビジー状態を返した記憶レディ/ビジーフラグの読み出しをホストによって検出したのに応答して、キャッシュバイパスモードからキャッシュ記憶優先モードへのモード遷移を記憶デバイスによって実行するステップと、を含む方法がここで初めて開示される。
【0017】
一部の実施形態では、(e)キャッシュ記憶領域の満杯度合いに応じて、キャッシュ記憶優先モードからキャッシュバイパスモードへ遷移するかどうかを決定するステップと、(f)決定どおりにキャッシュ記憶優先モードからキャッシュバイパスモードへの遷移を実行するステップと、をさらに含む。
【0018】
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリを有する不揮発性記憶デバイスに対するキャッシングポリシーを実施する方法であって、(a)不揮発性記憶デバイスに接続されるホストデバイスから不揮発性記憶デバイスによってデータを受信するステップと、(b)キャッシュ記憶領域に受信データを記憶するステップと、(c)少なくとも1つの時点について、(i)(A)ステップ(a)のデータを受信するステップに先行する期間の間にホストデバイスから不揮発性記憶デバイスによって他のデータが受信された過去の速度と、(B)先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔と、からなるグループから選択される少なくとも1つのパラメータに従って、ステップ(a)において受信されたデータを不揮発性メモリのキャッシュ記憶領域から不揮発性メモリの主記憶領域にコピーするかどうかを不揮発性記憶デバイスによって決定するステップと、(d)前記決定するステップが肯定である場合、ステップ(a)おいて受信されたデータを決定どおりにキャッシュ記憶領域からコピーするステップと、を含む方法がここで初めて開示される。
【0019】
一部の実施形態では、少なくとも1つのパラメータが、他のデータが受信された過去の速度を含む。
一部の実施形態では、少なくとも1つのパラメータが、連続するホスト書き込み要求間の平均時間間隔を含む。
【0020】
(a)ホストデバイスと接続するデバイスインターフェイスと、(b)キャッシュ記憶領域および主記憶領域を含む不揮発性メモリと、(c)(i)デバイスインターフェイスを介してホストデバイスからデータを受信し、(ii)(A)ステップ(c)(i)のデータを受信するステップに先行する期間の間にホストデバイスから他のデータが不揮発性記憶デバイスによって受信された過去の速度と、(B)先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔と、からなるグループから選択される少なくとも1つのパラメータに従って、受信データを主記憶領域に書き込む前に受信データをキャッシュ記憶領域に書き込むかどうかを決定し、(iii)決定が肯定である場合、ステップ(c)(i)で受信されたデータを決定どおりにキャッシュ記憶領域に書き込むように動作するコントローラと、を備える不揮発性記憶デバイスがここで初めて開示される。
【0021】
(a)ホストデバイスと接続するデバイスインターフェイスと、(b)キャッシュ記憶領域および主記憶領域を含む不揮発性メモリと、(c)(i)不揮発性メモリにデータを記憶するために、デバイスインターフェイスを介してホストデバイスから少なくとも1つの要求を受信し、(ii)少なくとも1つのデータ記憶要求を満足するために、データが不揮発性メモリに書き込まれるべき速度を評価し、(iii)評価されたデータ書き込み速度に従って、受信データを主記憶領域に書き込む前にキャッシュ記憶領域に受信データを書き込むかどうかを決定し、(iv)決定が肯定である場合に、受信データを決定どおりにキャッシュ記憶領域に書き込むように動作するコントローラと、を備える不揮発性記憶デバイスがここで初めて開示される。
【0022】
(a)ホストデバイスと接続するデバイスインターフェイスと、(b)キャッシュ記憶領域および主記憶領域を含む不揮発性メモリと、(c)(i)不揮発性メモリにデータを記憶するために、デバイスインターフェイスを介してホストデバイスから要求を受信し、(ii)要求が受信された時点で不揮発性記憶デバイスがキャッシュ記憶優先モードである場合、受信データを主記憶領域に書き込む前にキャッシュ記憶領域に受信データを書き込み、(iii)要求が受信された時点で不揮発性記憶デバイスがキャッシュバイパスモードである場合、受信データを不揮発性メモリのキャッシュ記憶領域に書き込まないで主記憶領域に受信データを書き込み、(iv)ビジー状態を返した記憶レディ/ビジーフラグの読み出しをホストによって検出したのに応答して、キャッシュバイパスモードからキャッシュ記憶優先モードへのモード遷移を記憶デバイスによって実行するように動作するコントローラと、を備える不揮発性記憶デバイスがここで初めて開示される。
【0023】
(a)ホストデバイスと接続するデバイスインターフェイスと、(b)キャッシュ記憶領域および主記憶領域を含む不揮発性メモリと、(c)(i)デバイスインターフェイスを介してホストデバイスからデータを受信し、(ii)受信データをキャッシュ記憶領域に記憶し、(iii)少なくとも1つの時点について、(A)(I)ステップ(a)のデータを受信するステップに先行する期間の間にホストデバイスから他のデータが不揮発性記憶デバイスによって受信された過去の速度と、(II)先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔と、からなるグループから選択される少なくとも1つのパラメータに従って、ステップ(c)(i)で受信されたデータをキャッシュ記憶領域から主記憶領域にコピーするかどうかを決定し、(B)決定が肯定である場合、ステップ(c)(i)で受信されたデータを決定どおりにキャッシュ記憶領域からコピーするように動作するコントローラと、を備える不揮発性記憶デバイスがここで初めて開示される。
【0024】
特定の実施形態に関連する前述した特徴は、本願明細書でそうでない旨が以下に示されない限り、他の実施形態にも含まれ得ることに留意するべきである。
【図面の簡単な説明】
【0025】
【図1】ホストデバイスに接続される従来技術の周辺記憶デバイスを示すブロック図である。
【図2A】周辺記憶デバイスの不揮発性メモリにデータを記憶する従来技術のルーチンを説明する図である。
【図2B】周辺記憶デバイスの不揮発性メモリにデータを記憶する従来技術のルーチンを説明する図である。
【図2C】周辺記憶デバイスの不揮発性メモリにデータを記憶する従来技術のルーチンを説明する図である。
【図2D】周辺記憶デバイスの不揮発性メモリにデータを記憶する従来技術のルーチンを説明する図である。
【図3】周辺記憶デバイスの不揮発性メモリにデータを記憶する従来技術のルーチンを説明する図である。
【図4】1つまたは複数のキャッシュ関連ポリシー(単数または複数)を実行するのに使用されてもよい情報を説明する時系列である。
【図5】キャッシュ記憶領域および主記憶領域を含む不揮発性メモリにデータを記憶するルーチンを示す流れ図である。
【図6】キャッシュ記憶領域および主記憶領域を含む不揮発性メモリにデータを記憶するルーチンを示す流れ図である。
【図7】キャッシュ記憶領域および主記憶領域を含む不揮発性メモリにデータを記憶するルーチンを示す流れ図である。
【図8A】キャッシュ記憶領域および主記憶領域を含む不揮発性メモリにデータを記憶するルーチンを示す流れ図である。
【図8B】キャッシュバイパスモードとキャッシュ記憶優先モードとの間を遷移するルーチンを示す流れ図である。
【図9】キャッシュフラッシングポリシーを実行するルーチンを示す流れ図である。
【図10】キャッシュフラッシングポリシーを実行するルーチンを示す流れ図である。
【発明を実施するための形態】
【0026】
図面を参照しながら例示的な実施形態の本願の詳細な説明を参照することによって添付の特許請求の範囲がさらによく理解できる。この説明、実施形態および図面は、特許請求の範囲を限定するものとして解釈されるべきではない。当然ながら、本開示の方法および装置のすべての特徴がすべての実施例で必要なわけではない。さらに、当然ながら、プロセスまたは方法が示されまたは説明される本開示全体を通じて、方法のステップは、あるステップが最初に実施される別のステップに依存することが文脈から明らかでない限り、いかなる順序で実施されてもよく、または同時に実施されてもよい。本願を通じて使用される場合、用語「〜してもよい」は、強制の意味(すなわち「しなければならない」を意味する)ではなく許容の意味(すなわち「可能性を有すること」を意味する)で使用される。
【0027】
本発明の一部の実施形態は、(i)不揮発性メモリの主記憶領域にデータを記憶する前にキャッシュ記憶領域にデータを記憶するか、または(ii)主記憶領域にデータを「直接」記憶することによってキャッシュ記憶領域を「バイパスする」かどうかを決定する場合に、特定の過去のおよび/または予測される「性能データ」を利用することに関する。特定の実施形態では、キャッシュ記憶領域に「入来データ」を書き込むかどうかの決定は、(i)データがホストデバイスから周辺記憶デバイスによって受信された過去の速度(「パラメータA」)(図5を参照)、(ii)先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔(「パラメータB」)(図6を参照)、(iii)少なくとも1つのデータ記憶要求を満足するために、データが不揮発性メモリに書き込まれるべき評価されたデータ書き込み速度(「パラメータC」)(図7を参照)、および/または(iv)以下に説明される1つまたは複数の追加パラメータのうちの1つまたは複数に従って実行されてもよい。決定が「肯定」(すなわち、不揮発性メモリのキャッシュ記憶領域にデータを記憶する決定)である場合、データは決定どおりにキャッシュ記憶領域に記憶される。
【0028】
さらに、一部の実施形態では、「キャッシュ存在データ」(すなわち、キャッシュ記憶領域に既に書き込まれたデータ)をキャッシュ記憶領域から主記憶領域にコピーするかどうかまたはいつコピーするかを決定することは、前述したパラメータ(単数または複数)および/または本願明細書に記載される他のパラメータのうちの1つまたは複数に従って実行されてもよい。これらの実施形態は、「不揮発性キャッシュフラッシング」ポリシーを決定および実行するのに役立つ場合もある。
【0029】
周辺不揮発性メモリ記憶デバイスのキャッシュ記憶領域および/または主記憶領域にデータを書き込む技法の導入的な説明
「パラメータA」および図5に関連する1つの限定されない例では、現状周辺記憶デバイスがホストデバイスからの「大」量のデータ(すなわち、周辺記憶デバイス内の不揮発性記憶に記憶する必要がある、ホストデバイスから送信されたデータ)で「短い」期間に「あふれた」ことが最近ある場合、データが受信されることになる速度が相対的に「速い」状態が今後しばらく続くという可能性が「高い」と推測され得る。この場合、入来データは、「遅い」主記憶領域に直接書き込むのではなくて「速い書き込み速度」に関連するキャッシュに最初に記憶される。ホストデバイスから受信される1つまたは複数の書き込みコマンドの実行を完了するには遅い応答時間となるリスクを最小限に抑えるように(すなわち、ホストによって検出可能に)するにはこの方法が役立つこともある。
【0030】
逆に、データがホストデバイスから書き込まれる速度が過去に「遅かった」場合、ホストデバイスからデータを受信する場合にキャッシュ記憶領域をバイパスして主記憶領域に「直接」受信データを書き込むのが好ましいこともある。この場合、例えば、不揮発性(例えば、フラッシュ)メモリのキャッシュ記憶領域によって維持される書き込み動作の回数を最小限に抑えてキャッシュ領域および/または周辺不揮発性記憶デバイスの寿命を延ばすために、キャッシュ記憶領域にデータを記憶しないようにするのが役立つ場合もある。
したがって、この特定の例では、データが過去に受信された速度は、今後ホストデバイスからデータが受信されることになる推定速度を示し得る。
【0031】
「パラメータB」および図6に関連する1つの限定されない例では、先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔(「パラメータB」)は、先行する期間の間にホストデバイスによって周辺記憶デバイスに課された作業負荷の大きさを示し得る。連続するホスト書き込み要求間の平均時間間隔が相対的に「小さ」かった場合、このことは、(i)ホストが相対的に短い期間に多くの書き込み要求を提供したことによって周辺記憶デバイスに相対的に「大きな」作業負荷が課された状況、および(ii)周辺記憶デバイスが今後大きな作業負荷を処理する必要がある可能性が高いことを示し得る。この場合において、平均時間間隔が相対的に低い(例えば、あるしきい値を下回る、予め決められている、またはそれ以外)場合、ホストデバイスによって受信される1つまたは複数の書き込みコマンドの実行を完了させるには遅い応答時間となるリスクを最小限に抑えるため(すなわち、ホストによって検出可能なように)、ホストデバイスから受信された入来データを最初にキャッシュ記憶領域に書き込むことが好ましい場合もある。
【0032】
逆に、過去に連続する書き込み要求間の平均時間間隔が相対的に「大きい」場合、このことは、(i)過去に相対的に「動作していない」状態であったホスト、および(ii)今後動作していない可能性が高い(または動作している可能性が低い)ホストを示し得る。この場合、ホストデバイスからデータを受信した場合に遅い書き込み速度であってもキャッシュ記憶領域をバイパスして「直接」主記憶領域に受信データを書き込むことが好ましいこともある。この場合において、例えば、不揮発性(例えば、フラッシュ)メモリのキャッシュ記憶領域によって維持される書き込み動作の回数を最小限に抑えてキャッシュ領域および/または周辺不揮発性記憶デバイスの寿命を延ばすために、キャッシュ記憶領域にデータを記憶しないようにするのが役立つ場合もある。
【0033】
「パラメータC」および図7に関連する1つの限定されない例では、1つまたは複数のコマンド(単数または複数)でホストから受信されたデータが周辺不揮発性メモリデバイスの不揮発性メモリに書き込まれるべき速度が評価される。1つの限定されない例では、この速度を表す情報は、ホストから明示的に受信されてもよい。デバイスがデータを「非常に高速に」書き込むべき場合、評価された書き込み速度要求を満足するために、ホストデバイスから受信された入来データを(相対的に「速い」書き込みに関連する)キャッシュ記憶領域に最初に書き込むのに要求される性能を提供するために有利である場合もある。
【0034】
逆に、不揮発性メモリへの相対的に「低速度」のデータ記憶のみが要求される場合、ホストデバイスからデータを受信する際に、遅い書き込み速度であってもキャッシュ記憶領域をバイパスして主記憶領域に受信データを「直接」書き込むことが好ましいこともある。この場合、例えば、不揮発性(例えば、フラッシュ)メモリのキャッシュ記憶領域によって維持される書き込み動作の回数を最小限に抑えてキャッシュ領域および/または周辺不揮発性記憶デバイスの寿命を延ばすために、キャッシュ記憶領域にデータを記憶しないようにするのが役立つ場合もある。
【0035】
異なる実施形態では、主記憶に書き込む前にキャッシュに書き込むかどうかの決定は、ホストデバイスからキャッシング命令を一切受信しないで周辺不揮発性記憶デバイスによって「自立的に」実行されてもよいことに留意するべきである。
【0036】
周辺不揮発性メモリ記憶デバイスの不揮発性メモリのキャッシュ記憶領域から主記憶領域にデータをコピーする技法の導入的な説明
記憶領域
前述したように、本発明の一部の実施形態は、「キャッシュ存在データ」(すなわち、キャッシュ記憶領域に既に書き込まれたデータ)をキャッシュ記憶領域から主記憶領域にコピーするかどうかまたはいつコピーするかを決定する技法に関する。データは、この決定を条件として、かつ/またはこの決定に従ってキャッシュ記憶領域から主記憶領域にコピーされる。
【0037】
一部の実施形態では、「キャッシュ存在データ」をキャッシュ記憶領域から主記憶領域にコピーするかどうかまたはいつコピーするかを決定することは、(i)データがホストデバイスから周辺記憶デバイスによって受信された過去の速度(「パラメータA」)(図5参照)、(ii)先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔(「パラメータB」)(図6参照)、および/または(iii)以下に説明される1つまたは複数の追加のパラメータのうちの1つまたは複数に従って実行されてもよい。
【0038】
「パラメータA」および図9に関連する1つの限定されない例では、現在周辺記憶デバイスがホストデバイスからの「大」量のデータ(すなわち、周辺記憶デバイス内の不揮発性記憶デバイスに記憶される必要がある、ホストデバイスから送信されたデータ)で「短い」期間にあふれたことが最近ある場合、データが受信されることになる速度が相対的に「速い」状態が今後しばらく続くという可能性が「高い」と推測され得る。この場合、キャッシュをフラッシュするのを遅らせ(キャッシュ記憶領域から主記憶領域にデータをコピーするのを遅らせる)かつ/またはキャッシュを相対的に「低速」でフラッシュするのが有利であることもある。特に、キャッシュ記憶領域から主記憶領域にデータがコピーされるキャッシュコピー動作は、周辺不揮発性記憶デバイスのデバイスリソースを消費する場合があり、「入来データ」の処理に使用可能であるデバイスリソースの量を制限する場合がある。したがって、記憶デバイスが新しい入来データで相対的に「あふれる」ことになると予測される場合、デバイスリソースをキャッシュフラッシングに回すことで周辺記憶デバイスが入来データを要求される速度で(すなわち、ホストデバイスによって検出可能なように)「処理する」ことができなくなるリスクが増加する場合もある。
【0039】
逆に、データがホストデバイスから書き込まれる速度が過去に「遅かった」場合、デバイスリソースを、ホストデバイスからデータを受信した場合にキャッシュ記憶領域から主記憶領域にデータをコピーするタスク専用にすることによってこの状況をうまく利用するのが好ましいこともある。ホストデバイスによって周辺記憶デバイスに課される要求が今後相対的に「低い」ことが予測されるため、デバイスリソースを、キャッシュからのデータのコピー専用にしてキャッシュを「新しい」入来データ用に「クリアする」機会を提供している期間にデバイスがこれらの要求を一切満足することができないリスクは相対的に低くなると推定され得る。
【0040】
「パラメータB」および図10に関連する1つの限定されない例では、先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔(「パラメータB」)は、ホストデバイスが周辺記憶デバイスにコマンドまたは特定のタスクを送信する際に「アクティブ」であった度合いを示す。連続するホスト書き込み要求間の平均時間間隔が相対的に「小さ」かった場合、このことは、(i)ホストが相対的に短い期間に多くの書き込み要求を提供したことによって周辺記憶デバイスに相対的に「大きな」作業負荷が課された状況、および(ii)周辺記憶デバイスが今後大きな作業負荷を処理する必要がある可能性が高いことを示し得る。この場合において、平均時間間隔が相対的に低い(例えば、あるしきい値を下回る、予め決められている、またはそれ以外の)場合、キャッシュをフラッシュするのを遅らせ(キャッシュ記憶領域から主記憶領域にデータをコピーするのを遅らせる)かつ/または相対的に「低速」でキャッシュをフラッシュするのが有利なこともある。特に、キャッシュ記憶領域から主記憶領域にデータがコピーされるキャッシュコピー動作は、周辺不揮発性記憶デバイスのデバイスリソースを消費する場合があり、「入来データ」の処理に使用可能であるデバイスリソースの量を制限する場合がある。したがって、記憶デバイスが相対的に「大きな」作業負荷を処理する必要があると予測される(すなわち、先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔によって)場合、デバイスリソースをキャッシュフラッシングに回すことで周辺記憶デバイスが入来データを要求される速度で(すなわち、ホストデバイスによって検出可能なように)「処理する」ことができなくなるリスクが増加する場合もある。
【0041】
逆に、過去において連続する書き込み要求間の平均時間が相対的に「大きかった」場合、このことは、(i)過去に相対的に「非アクティブ」状態であったホスト、および(ii)今後非アクティブである可能性が高い(または非アクティブである可能性が低い)ホストを示し得る。この場合、キャッシュ記憶領域から主記憶領域にデータをコピーするタスクにデバイスリソースを専念させることによってこの状況をうまく利用するのが好ましいこともある。ホストデバイスによって周辺記憶デバイスに課される要求が今後相対的に「低い」ことが予測されるため、デバイスリソースを、キャッシュからのデータのコピー専用にしてキャッシュを「新しい」入来データ用に「クリアする」機会を提供している期間にデバイスがこれらの要求を一切満足することができないリスクは相対的に低くなると推定され得る。
【0042】
異なる実施形態では、キャッシュ記憶領域から主記憶領域に「キャッシュ存在データ」をコピーするかどうか(またはいつコピーするか)の決定は、ホストデバイスからキャッシング命令を一切受信しないで周辺フラッシュデバイスによって「自立的に」実行されてもよいことに留意するべきである。
【0043】
図4の説明
図4は、1つまたは複数のキャッシュ関連ポリシー(単数または複数)を実行するのに利用されてもよい情報を説明する時系列である。
時間t1 で、データD1 を含む第1の「書き込み要求」が、ホストデバイス310からそれぞれのインターフェイス350、250を介して周辺記憶デバイス260で受信される。時間t2 で、データD2 を含む第2の「書き込み要求」が、ホストデバイス310からそれぞれのインターフェイス350、250を介して周辺記憶デバイス260で受信される。時間t3 で、データD3 を含む第3の「書き込み要求」が、ホストデバイス310からそれぞれのインターフェイス350、250を介して周辺記憶デバイス260で受信される。時間t4 で、データD4 を含む第4の「書き込み要求」が、ホストデバイス310からそれぞれのインターフェイス350、250を介して周辺記憶デバイス260で受信される。時間t5 で、データD5 を含む第5の「書き込み要求」が、ホストデバイス310からそれぞれのインターフェイス350、250を介して周辺記憶デバイス260で受信される。
【0044】
(i)データD2 の受信/第2の書き込み要求の受信と(ii)D1 のデータの受信/第1の書き込み要求の受信との間の「時間間隔」はΔt12である。(i)データD3 の受信/第3の書き込み要求の受信と(ii)D2 のデータの受信/第2の書き込み要求の受信との間の「時間間隔」はΔt23である。(i)データD4 の受信/第4の書き込み要求の受信と(ii)D3 のデータの受信/第3の書き込み要求の受信との間の「時間間隔」はΔt34である。(i)データD5 の受信/第5の書き込み要求の受信と(ii)D4 のデータの受信/第4の書き込み要求の受信との間の「時間間隔」はΔt45である。
【0045】
図5の説明
図5は、フラッシュメモリ270にデータを記憶する方法を説明する流れ図である。ステップS211において、周辺記憶デバイス260は、ホストデバイス310からデータを受信する。ステップS215において、このデータは(例えば、フラッシュコントローラ280内または不揮発性メモリデバイス260内の他のいずれかの場所の)揮発性メモリに記憶される。
ステップS251において、S211におけるデータの受信に先行する期間の間に他のデータが受信された過去の速度が評価または決定される。
【0046】
図4および図5の両方を参照する。1つ例では、時間t4 でコマンド4を受信する部分としてステップS211が実行される。この例では、受信される「データ」はD4 である。この例では、先行する期間が時間t2 −Δt12で始まり、時間t3 +Δt34で終了する。したがって、先行する期間の合計の「長さ」は(t3 +Δt34)−(t2 −Δt12)であり、「前の時間間隔」(すなわち、時間t4 以前)の間に受信された「他のデータ」の合計量は(D2 +D3 )である。したがって、この例では、「過去の期間」の間に「他のデータ」が受信される「過去の速度」Rは、(D2 +D3 )/{(t3 +Δt34)−(t2 −Δt12)}である。
【0047】
ステップS255において、データがキャッシュされるかどうかは過去のデータ受信速度Rに従って決定される。1つの限定されない例では、Rは、ある種のしきい値(例えば、所定のしきい値および/または時間の関数として変化するしきい値および/または任意の他のしきい値)と比較される。(i)Rがしきい値を超えた場合、S219から出る「YES」分岐が選ばれ、(ii)そうでない場合にはS219から出る「NO」分岐が選ばれる。
【0048】
前者の場合、データは(書き込まれる場合であっても)主記憶領域274に書き込まれる前に不揮発性メモリのキャッシュ記憶領域272に書き込まれる。後者の「キャッシュバイパス」の場合、データはキャッシュ記憶領域272に書き込まれないで不揮発性メモリの主記憶領域274に書き込まれる。
【0049】
図6の説明
図6は、フラッシュメモリ270にデータを記憶する技法を説明する流れ図である。ステップS211において、周辺記憶デバイス260はホストデバイス310からデータを受信する。ステップS215において、このデータは(例えば、フラッシュコントローラ280内または不揮発性メモリデバイス260内の他のいずれかの場所の)揮発性メモリに記憶される。
ステップ261において、S211におけるデータの受信に先行する期間の間の連続するホスト書き込み要求間の平均時間間隔が評価または決定される。
【0050】
図4および図6の両方を参照する。1つ例では、時間t5 でコマンド5を受信する部分としてステップS211が実行される。この例では、先行する期間が時間t2 −Δt12で始まり、時間t4 +Δt45で終了する。この先行する期間の間に、3つのホスト書き込み要求が受信される。すなわち、時間t2 における第2の書き込み要求、時間t3 における第3の書き込み要求、および時間t4 における第4の書き込み要求である。この時間間隔の間に、2つの「連続するホスト書き込み要求間の時間間隔」Δt23およびΔt34がある。したがって、この限定されない例では、連続するホスト書き込み要求間の平均時間間隔TAVG は(Δt23+Δt34)/2である。
【0051】
ステップS265において、データがキャッシュされるかどうかは連続するホスト書き込み要求間の平均時間間隔TAVG に従って決定される。1つの限定されない例では、TAVG はある種のしきい値(例えば、所定のしきい値および/または時間の関数として変化するしきい値および/または任意の他のしきい値)と比較される。(i)TAVG がしきい値よりも低い場合、S219から出る「YES」分岐が選ばれ、(ii)そうでない場合にはS219から出る「NO」分岐が選ばれる。
【0052】
前者の場合、データは(書き込まれる場合であっても)主記憶領域274に書き込まれる前に不揮発性メモリのキャッシュ記憶領域272に書き込まれる。後者の「キャッシュバイパス」の場合、データはキャッシュ記憶領域272に書き込まれないで不揮発性メモリの主記憶領域274に書き込まれる。
【0053】
図7の説明
図7は、フラッシュメモリ270にデータを記憶する技法を説明する流れ図である。ステップS311において、周辺記憶デバイス260はホストデバイス310からデータを受信する。ステップS315において、このデータは(例えば、フラッシュコントローラ280内または不揮発性メモリデバイス260内の他のいずれかの場所の)揮発性メモリに記憶される。
【0054】
ステップS315において、少なくとも1つのデータ記憶要求を満たすためにS311で受信されたデータが不揮発性メモリに書き込まれるべき速度が評価されてもよい。1つの限定されない例では、この情報は明示的に受信されてもよい。例えば、周辺記憶デバイスのコマンドセットは、ホストデバイスが一定量のデータを一定の時間内に記憶するように要求するシンタックスを有する書き込みコマンドを含んでもよい。したがって、データが書き込まれるべき速度は、(i)特定のコマンドでホストデバイスから受信されたデータ量および(ii)ホストデバイスからの要求に従ってデータが書き込まれることになる時間量の関数と見なされてもよい。
さらに別の例では、データが不揮発性メモリに書き込まれるべき速度を推定するのに過去のパターンが用いられてもよい。
【0055】
ステップS319において、データがキャッシュされるかどうかはデータが書き込まれるべき評価された速度ARに従って決定される。1つの限定されない例では、ARはある種のしきい値(例えば、所定のしきい値および/または時間の関数として変化するしきい値および/または任意の他のしきい値)と比較される。(i)ARがしきい値(すなわち、データを相対的に高速で書き込むように要求する)を超えた場合、S219から出る「YES」分岐が選ばれ、(ii)そうでない場合にはS219から出る「NO」分岐が選ばれる。
【0056】
前者の場合、データは(書き込まれる場合であっても)主記憶領域274に書き込まれる前に不揮発性メモリのキャッシュ記憶領域272に書き込まれる。後者の「キャッシュバイパス」の場合、データはキャッシュ記憶領域272に書き込まれないで不揮発性メモリの主記憶領域274に書き込まれる。
【0057】
図8A〜図8Bの説明
図8A〜図8Bを参照する。図8A〜図8Bの例によれば、ビジー状態を返した記憶レディ/ビジーフラグ(すなわち、周辺記憶デバイス260の)をホストが読み出す場合、このことは周辺記憶デバイスがホストデバイスによって「望まれる」速度で不揮発性記憶にデータを首尾よく書き込めないことを示し得る。この場合、ホストデバイスにとって「より優れた性能」を提供するために、キャッシュ記憶領域によって提供される「高速書き込み」特性を利用して最初にキャッシュ記憶領域に入来データを書き込むのが望ましい場合もある。
【0058】
図8Aは、フラッシュメモリ270にデータを記憶する技法を説明する流れ図である。図8Aの実施形態によれば、周辺記憶デバイス260は、少なくとも2つのデバイス「モード」を提供する。すなわち、データが主記憶領域274に書き込まれる前にキャッシュ記憶領域272に記憶される「キャッシュ記憶優先」デバイスモードと称される第1のモードと、データがキャッシュ記憶領域272に書き込まれないで主記憶領域274に記憶される「キャッシュバイパスモード」と称される第2のモードである。「現在のモード」に関する情報は、これらに限定されないがフラッシュコントローラ280、揮発性メモリ282およびフラッシュメモリ270を含むいずれの場所に記憶されてもよい。
図8AのステップS211において、周辺記憶デバイス260は、ホストデバイス310からデータを受信する。ステップS215において、このデータは(例えば、フラッシュコントローラ280内または不揮発性メモリデバイス260内の他の何れかの場所の)揮発性メモリに記憶される。
【0059】
図8Bは、2つの前述したデバイスモード間を遷移するルーチンを示す流れ図である。したがって、ステップS411において、ホストデバイスによって記憶レディ/ビジーフラグを読み出したのに応答して(すなわち、ホストが周辺記憶デバイスにその状態を問い合わせ、周辺記憶デバイスはホストに記憶レディ/ビジーフラグを返してこれがホストデバイスによって読み出される)、デバイスは「キャッシュバイパスモード」からキャッシュ記憶優先モードに遷移することができる。このことは、ホストデバイスは周辺記憶デバイスが「ビジー」であるという情報を受信したこと、およびホストデバイスに提供される性能を最大限にするために「高速書き込みモード」を使用するのが有利である場合もあることの両方を示す。
【0060】
ステップS415において、周辺記憶デバイス260は、1つまたは複数のイベントに従ってキャッシュバイパスモードに戻る遷移を実行する。1つの限定されない例では、この遷移はキャッシュ記憶領域の満杯度合い(すなわち、キャッシュ領域272が以前に書き込まれたデータでどの程度満たされているか)に応じて実行される。例えば、キャッシュが「満杯」に近い場合、フラッシュに入来データを書き込むのに充分な空間がキャッシュ内に存在しないため、キャッシュ記憶優先モードからキャッシュバイパスモードへの遷移を実行するのが望ましい場合もある。
【0061】
ここで図8AのステップS271を参照すると、(i)周辺デバイス260が「キャッシュ記憶優先」モードの場合、ステップS271から出る「左側」分岐が選択され、(ii)そうでない場合にはステップS271から出る「右側」分岐が選択されることに留意するべきである。
前者の場合、データは(書き込まれる場合であっても)主記憶領域274に書き込まれる前に不揮発性メモリのキャッシュ記憶領域272に書き込まれる。後者の「キャッシュバイパス」の場合、データはキャッシュ記憶領域272に書き込まれないで不揮発性メモリの主記憶領域274に書き込まれる。
【0062】
図9〜図10の説明
図5〜図8は、周辺記憶デバイス260の不揮発性メモリ270に入来データを記憶するポリシーを実施するルーチンを説明している。
図9〜図10は、不揮発性メモリのキャッシュ記憶領域272から主記憶領域274にデータをコピーするルーチンを説明している(「周辺不揮発性記憶デバイスの不揮発性メモリのキャッシュ記憶領域から主記憶領域にデータをコピーする技法の導入的な説明」と題される前のセクションを参照)。
【0063】
したがって、ステップS511において、周辺記憶デバイス260はホストデバイス310からデータを受信する。ステップS515において、このデータは不揮発性メモリ270のキャッシュ記憶領域272に記憶される。ステップS519において、ステップS511におけるデータの受信に先行する期間の間に他のデータが受信された過去の速度が決定される(図5のステップS251を参照)。
【0064】
ステップS523において、キャッシュ記憶領域272から主記憶領域274にデータがコピーされる(すなわち、特定の時間または特定の時間枠または任意の時間に)かどうかは、過去のデータ受信速度に従って決定される。1つの例では、(i)ホスト310からデータが受信される過去の速度が相対的に「遅い」場合、このことは今後デバイスが「相対的に遅い」速度でデータを受信することを示し、デバイスリソースがキャッシュ記憶領域272から主記憶領域274へデータをコピーすることに割り当てられ得ることが推定され、(ii)逆に、ホスト310からデータが受信される過去の速度が相対的に「速い」場合、このことは今後デバイスが「相対的に速い」速度でデータを受信することを示し、キャッシュ記憶領域272から主記憶領域274へデータをコピーするのを遅らせるのが好ましいことが推定され得る。
ステップS523では、ステップS523で「決定が肯定」(すなわち、キャッシュ記憶領域272から主記憶領域274にデータがコピーされるという決定)である場合、決定どおりにデータはキャッシュ記憶領域272から主記憶領域274にコピーされる。
【0065】
図9のステップ(単数または複数)のいずれも任意の回数繰り返されてもよいことに留意するべきである。したがって、1つの限定されない例では、データが受信された過去の速度は、(例えば、複数の時点で)モニタされてもよく、(それ自体が時間とともに変動することもある)過去の速度の増加(または減少)に応答して、データがキャッシュ記憶領域272から主記憶領域274にコピーされても、またはデータがキャッシュ記憶領域272から主記憶領域274にコピーされるプロセスは停止してもよい。
【0066】
ここで図10を参照する。ステップS511において、周辺記憶デバイス260はホストデバイス310からデータを受信する。ステップS515において、このデータは不揮発性メモリ270のキャッシュ記憶領域272に記憶される。ステップS519において、ステップS511におけるデータの受信に先行する過去の期間にホスト310から周辺記憶デバイス260に送信された連続するホスト書き込み要求間の平均時間間隔の大きさが決定される(図6のステップS261を参照)。
【0067】
ステップS531において、キャッシュ記憶領域272から主記憶領域274にデータがコピーされる(すなわち、特定の時間または特定の時間枠または任意の時間に)かどうかは、平均時間間隔の大きさに従って決定される。1つの例では、(i)連続する書き込み要求間の平均時間間隔が相対的に「大きい」場合、今後ホスト310から周辺デバイス260によって書き込みコマンドが相対的に「まれに」受信されることになり、デバイスリソースがキャッシュ記憶領域272から主記憶領域274へデータをコピーすることに割り当てられ得ることが推定され、(ii)逆に、連続する書き込み要求間の平均時間間隔が相対的に「小さい」場合、今後ホスト310から周辺デバイス260によって書き込みコマンドが相対的に「頻繁に」受信されることになり、今後周辺デバイス260は相対的に「ビジー」になり、キャッシュ記憶領域272から主記憶領域へデータをコピーするのを遅らせるのが好ましいことが推定され得る。
ステップS535では、ステップS523で「決定が肯定」(すなわち、キャッシュ記憶領域272から主記憶領域274にデータがコピーされるという決定)である場合、決定どおりにデータはキャッシュ記憶領域272から主記憶領域274にコピーされる。
【0068】
図10のステップ(単数または複数)のいずれも任意の回数繰り返されてもよいことに留意するべきである。したがって、1つの限定されない例では、連続するホスト書き込み要求間の平均時間間隔は、(例えば、複数の時点で)モニタされてもよく、(それ自体が時間とともに変動することもある)平均時間間隔の増加(または減少)に応答して、データがキャッシュ記憶領域272から主記憶領域274にコピーされても、またはデータがキャッシュ記憶領域272から主記憶領域274にコピーされているプロセスが停止してもよい。
【0069】
定義
便宜のため、本願明細書の記載の文脈における様々な用語がここで提示される。本願のこの箇所または他の箇所で明示的または非明示的に定義が提供される限りにおいて、このような定義は関連技術(単数または複数)の当業者によって定義される用語の使用と一致していると理解される。さらに、このような定義は、このような使用と一致する可能な限り広い意味で解釈されるべきである。
「不揮発性メモリ」とは、フラッシュメモリおよび磁気メモリを含む任意の種類の不揮発性メモリを示す。
「入来データ」とは、フラッシュメモリデバイスの不揮発性メモリ(例えば、フラッシュメモリ)にまだ記憶されていない、ホストからフラッシュメモリデバイスによって受信されるデータを示す。「入来データ」は、フラッシュメモリデバイス内の揮発性メモリ270に(例えば、フラッシュコントローラ280によって)一時的に記憶されてもよい。
【0070】
一部の実施形態(例えば、図8BのステップS415に関連する一部の実施形態)では、「キャッシュ記憶領域272が以前に記憶されたデータで満たされている度合い」が決定される。「以前に記憶されたデータ」とは、「フラッシュメモリ記憶デバイスが以前に記憶されたデータで満たされている度合い」が決定される時点より前に不揮発性メモリ270のキャッシュ記憶領域272に記憶されていたデータを示す。
【0071】
追加の注意点
前述した実施形態のいずれも、図面とともに前述した動作をコンピュータ可読媒体上で実施する命令および/またはデータを受信し、送信しまたは記憶することをさらに含んでもよいことにさらに留意するべきである。一般的に言って、コンピュータ可読媒体は、磁気またはフラッシュまたは光学媒体などの記憶媒体またはメモリ媒体、例えば、ディスクまたはCD−ROM、RAM、ROMなどの揮発性または不揮発性媒体など、ならびにネットワークおよび/または無線リンクなどの通信媒体を介して伝達される電気信号、電磁気信号またはデジタル信号などの伝送媒体または信号を含んでもよい。
【0072】
このように前述した例示的な実施形態を説明してきたが、それらの様々な等価物、代替物、変更形態および改善形態が添付の特許請求の範囲および趣旨から逸脱することなしに可能であることは当業者には明らかである。特に、異なる実施形態は、本願明細書で説明される特徴以外の特徴の組み合わせを含んでもよい。したがって、特許請求の範囲は、前述した説明に限定されない。
【特許請求の範囲】
【請求項1】
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリを有する不揮発性記憶デバイスに対するキャッシングポリシーを実施する方法であって、
(a)前記不揮発性記憶デバイスに接続されるホストデバイスから前記不揮発性記憶デバイスによってデータを受信するステップと、
(b)
(i)ステップ(a)のデータを受信するステップに先行する期間の間に前記ホストデバイスから前記不揮発性記憶デバイスによって他のデータが受信された過去の速度と、
(ii)先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔と、からなるグループから選択される少なくとも1つのパラメータに従って、前記受信データを前記不揮発性メモリの主記憶領域に書き込む前に前記不揮発性メモリのキャッシュ記憶領域に受信データを書き込むかどうかを前記不揮発性記憶デバイスによって決定するステップと、
(c)前記決定するステップが肯定である場合に、ステップ(a)において受信されたデータを決定どおりに前記キャッシュ記憶領域に書き込むステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
前記少なくとも1つのパラメータが、他のデータが受信された過去の速度を含む方法。
【請求項3】
請求項2記載の方法において、
前記決定するステップが、過去の速度がしきい値レベルを上回ることを条件とする方法。
【請求項4】
請求項1記載の方法において、
前記少なくとも1つのパラメータが、連続するホスト書き込み要求間の平均時間間隔を含む方法。
【請求項5】
請求項1記載の方法において、
前記データを受信するステップが、前記決定するステップの前に実行される方法。
【請求項6】
請求項1記載の方法において、
前記決定するステップが、前記データを受信するステップの前に実行される方法。
【請求項7】
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリを有する不揮発性記憶デバイスに対するキャッシングポリシーを実施する方法であって、
(a)前記不揮発性メモリにデータを記憶するために、前記不揮発性記憶デバイスに接続されるホストデバイスから前記不揮発性記憶デバイスによって少なくとも1つの要求を受信するステップと、
(b)前記少なくとも1つのデータ記憶要求を満足するために、データが前記不揮発性メモリに書き込まれるべき速度を評価するステップと、
(c)前記評価されたデータ書き込み速度に従って、前記受信データを前記不揮発性メモリの主記憶領域に書き込む前に前記不揮発性メモリのキャッシュ記憶領域に前記受信データを書き込むかどうかを決定するステップと、
(d)前記決定するステップが肯定である場合に、前記受信データを決定どおりに前記キャッシュ記憶領域に書き込むステップと、
を含む方法。
【請求項8】
請求項7記載の方法において、
(i)前記少なくとも1つの要求を受信するステップが、第1の要求と第2の要求とを受信することを含み、
(ii)前記速度を評価するステップが、
(A)前記第1の要求および前記第2の要求のそれぞれのデータ量と、
(B)前記第1の要求を受信する時間と前記第2の要求を受信する時間との間の時間差とに従って実行される方法。
【請求項9】
請求項8記載の方法において、
(i)前記少なくとも1つの要求を受信するステップが、第1の要求と第2の要求とを受信することを含み、
(ii)前記速度を評価するステップが、
(A)前記第1の要求および前記第2の要求の合計データ量と、
(B)前記第1の要求を受信する時間と前記第2の要求を受信する時間との間の時間差との間の割合に従って実行される方法。
【請求項10】
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリを有する不揮発性記憶デバイスに対するキャッシングポリシーを実施する方法であって、
(a)前記不揮発性メモリにデータを記憶するために、前記不揮発性記憶デバイスに接続されるホストデバイスから前記不揮発性記憶デバイスによって要求を受信するステップと、
(b)前記要求が受信された時点で前記不揮発性記憶デバイスがキャッシュ記憶優先モードである場合、前記受信データを前記不揮発性メモリの主記憶領域に書き込む前に前記不揮発性メモリのキャッシュ記憶領域に受信データを書き込むステップと、
(c)前記要求が受信された時点で前記不揮発性記憶デバイスがキャッシュバイパスモードである場合、前記受信データを前記不揮発性メモリのキャッシュ記憶領域に書き込まないで前記不揮発性メモリの主記憶領域に受信データを書き込むステップと、
(d)ビジー状態を返した記憶レディ/ビジーフラグの読み出しを前記ホストによって検出したのに応答して、前記キャッシュバイパスモードから前記キャッシュ記憶優先モードへのモード遷移を前記不揮発性記憶デバイスによって実行するステップと、
を含む方法。
【請求項11】
請求項10記載の方法において、
(e)前記キャッシュ記憶領域の満杯度合いに応じて、前記キャッシュ記憶優先モードから前記キャッシュバイパスモードへ遷移するかどうかを決定するステップと、
(f)決定どおりに前記キャッシュ記憶優先モードから前記キャッシュバイパスモードへの遷移を実行するステップと、
をさらに含む方法。
【請求項12】
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリを有する不揮発性記憶デバイスに対するキャッシュフラッシングポリシーを実施する方法であって、
(a)前記不揮発性記憶デバイスに接続されるホストデバイスから前記不揮発性記憶デバイスによってデータを受信するステップと、
(b)前記キャッシュ記憶領域に前記受信データを記憶するステップと、
(c)少なくとも1つの時点について、
(i)
(A)ステップ(a)のデータを受信するステップに先行する期間の間に前記ホストデバイスから前記不揮発性記憶デバイスによって他のデータが受信された過去の速度と、
(B)先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔と、からなるグループから選択される少なくとも1つのパラメータに従って、ステップ(a)において受信されたデータを前記不揮発性メモリのキャッシュ記憶領域から前記不揮発性メモリの主記憶領域にコピーするかどうかを前記不揮発性記憶デバイスによって決定するステップと、
(d)前記決定するステップが肯定である場合、ステップ(a)において受信されたデータを決定どおりに前記キャッシュ記憶領域からコピーするステップと、
を含む方法。
【請求項13】
請求項12記載の方法において、
前記少なくとも1つのパラメータが、他のデータが受信された過去の速度を含む方法。
【請求項14】
請求項12記載の方法において、
前記少なくとも1つのパラメータが、連続するホスト書き込み要求間の平均時間間隔を含む方法。
【請求項1】
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリを有する不揮発性記憶デバイスに対するキャッシングポリシーを実施する方法であって、
(a)前記不揮発性記憶デバイスに接続されるホストデバイスから前記不揮発性記憶デバイスによってデータを受信するステップと、
(b)
(i)ステップ(a)のデータを受信するステップに先行する期間の間に前記ホストデバイスから前記不揮発性記憶デバイスによって他のデータが受信された過去の速度と、
(ii)先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔と、からなるグループから選択される少なくとも1つのパラメータに従って、前記受信データを前記不揮発性メモリの主記憶領域に書き込む前に前記不揮発性メモリのキャッシュ記憶領域に受信データを書き込むかどうかを前記不揮発性記憶デバイスによって決定するステップと、
(c)前記決定するステップが肯定である場合に、ステップ(a)において受信されたデータを決定どおりに前記キャッシュ記憶領域に書き込むステップと、
を含む方法。
【請求項2】
請求項1記載の方法において、
前記少なくとも1つのパラメータが、他のデータが受信された過去の速度を含む方法。
【請求項3】
請求項2記載の方法において、
前記決定するステップが、過去の速度がしきい値レベルを上回ることを条件とする方法。
【請求項4】
請求項1記載の方法において、
前記少なくとも1つのパラメータが、連続するホスト書き込み要求間の平均時間間隔を含む方法。
【請求項5】
請求項1記載の方法において、
前記データを受信するステップが、前記決定するステップの前に実行される方法。
【請求項6】
請求項1記載の方法において、
前記決定するステップが、前記データを受信するステップの前に実行される方法。
【請求項7】
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリを有する不揮発性記憶デバイスに対するキャッシングポリシーを実施する方法であって、
(a)前記不揮発性メモリにデータを記憶するために、前記不揮発性記憶デバイスに接続されるホストデバイスから前記不揮発性記憶デバイスによって少なくとも1つの要求を受信するステップと、
(b)前記少なくとも1つのデータ記憶要求を満足するために、データが前記不揮発性メモリに書き込まれるべき速度を評価するステップと、
(c)前記評価されたデータ書き込み速度に従って、前記受信データを前記不揮発性メモリの主記憶領域に書き込む前に前記不揮発性メモリのキャッシュ記憶領域に前記受信データを書き込むかどうかを決定するステップと、
(d)前記決定するステップが肯定である場合に、前記受信データを決定どおりに前記キャッシュ記憶領域に書き込むステップと、
を含む方法。
【請求項8】
請求項7記載の方法において、
(i)前記少なくとも1つの要求を受信するステップが、第1の要求と第2の要求とを受信することを含み、
(ii)前記速度を評価するステップが、
(A)前記第1の要求および前記第2の要求のそれぞれのデータ量と、
(B)前記第1の要求を受信する時間と前記第2の要求を受信する時間との間の時間差とに従って実行される方法。
【請求項9】
請求項8記載の方法において、
(i)前記少なくとも1つの要求を受信するステップが、第1の要求と第2の要求とを受信することを含み、
(ii)前記速度を評価するステップが、
(A)前記第1の要求および前記第2の要求の合計データ量と、
(B)前記第1の要求を受信する時間と前記第2の要求を受信する時間との間の時間差との間の割合に従って実行される方法。
【請求項10】
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリを有する不揮発性記憶デバイスに対するキャッシングポリシーを実施する方法であって、
(a)前記不揮発性メモリにデータを記憶するために、前記不揮発性記憶デバイスに接続されるホストデバイスから前記不揮発性記憶デバイスによって要求を受信するステップと、
(b)前記要求が受信された時点で前記不揮発性記憶デバイスがキャッシュ記憶優先モードである場合、前記受信データを前記不揮発性メモリの主記憶領域に書き込む前に前記不揮発性メモリのキャッシュ記憶領域に受信データを書き込むステップと、
(c)前記要求が受信された時点で前記不揮発性記憶デバイスがキャッシュバイパスモードである場合、前記受信データを前記不揮発性メモリのキャッシュ記憶領域に書き込まないで前記不揮発性メモリの主記憶領域に受信データを書き込むステップと、
(d)ビジー状態を返した記憶レディ/ビジーフラグの読み出しを前記ホストによって検出したのに応答して、前記キャッシュバイパスモードから前記キャッシュ記憶優先モードへのモード遷移を前記不揮発性記憶デバイスによって実行するステップと、
を含む方法。
【請求項11】
請求項10記載の方法において、
(e)前記キャッシュ記憶領域の満杯度合いに応じて、前記キャッシュ記憶優先モードから前記キャッシュバイパスモードへ遷移するかどうかを決定するステップと、
(f)決定どおりに前記キャッシュ記憶優先モードから前記キャッシュバイパスモードへの遷移を実行するステップと、
をさらに含む方法。
【請求項12】
キャッシュ記憶領域および主記憶領域を含む不揮発性メモリを有する不揮発性記憶デバイスに対するキャッシュフラッシングポリシーを実施する方法であって、
(a)前記不揮発性記憶デバイスに接続されるホストデバイスから前記不揮発性記憶デバイスによってデータを受信するステップと、
(b)前記キャッシュ記憶領域に前記受信データを記憶するステップと、
(c)少なくとも1つの時点について、
(i)
(A)ステップ(a)のデータを受信するステップに先行する期間の間に前記ホストデバイスから前記不揮発性記憶デバイスによって他のデータが受信された過去の速度と、
(B)先行する期間の間に受信された連続するホスト書き込み要求間の平均時間間隔と、からなるグループから選択される少なくとも1つのパラメータに従って、ステップ(a)において受信されたデータを前記不揮発性メモリのキャッシュ記憶領域から前記不揮発性メモリの主記憶領域にコピーするかどうかを前記不揮発性記憶デバイスによって決定するステップと、
(d)前記決定するステップが肯定である場合、ステップ(a)において受信されたデータを決定どおりに前記キャッシュ記憶領域からコピーするステップと、
を含む方法。
【請求項13】
請求項12記載の方法において、
前記少なくとも1つのパラメータが、他のデータが受信された過去の速度を含む方法。
【請求項14】
請求項12記載の方法において、
前記少なくとも1つのパラメータが、連続するホスト書き込み要求間の平均時間間隔を含む方法。
【図1】
【図2A】
【図2B】
【図2C】
【図2D】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9】
【図10】
【図2A】
【図2B】
【図2C】
【図2D】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9】
【図10】
【公表番号】特表2012−524952(P2012−524952A)
【公表日】平成24年10月18日(2012.10.18)
【国際特許分類】
【出願番号】特願2012−507833(P2012−507833)
【出願日】平成22年4月17日(2010.4.17)
【国際出願番号】PCT/IB2010/000858
【国際公開番号】WO2010/125436
【国際公開日】平成22年11月4日(2010.11.4)
【出願人】(508159260)サンディスク アイエル リミテッド (33)
【Fターム(参考)】
【公表日】平成24年10月18日(2012.10.18)
【国際特許分類】
【出願日】平成22年4月17日(2010.4.17)
【国際出願番号】PCT/IB2010/000858
【国際公開番号】WO2010/125436
【国際公開日】平成22年11月4日(2010.11.4)
【出願人】(508159260)サンディスク アイエル リミテッド (33)
【Fターム(参考)】
[ Back to top ]