(57)【特許請求の範囲】
【請求項１】
書き込みコマンドで外部ホストから受信される受信データが、最初にキャッシュ記憶に記憶された後で主記憶に移動される、記憶装置における前記キャッシュ記憶から前記主記憶へのデータの移動を管理する方法であって、
前記記憶装置で前記ホストから書き込みコマンドを受信するステップと、
前記書き込みコマンドとともに受信されるデータを前記キャッシュ記憶に記憶するステップと、
前記書き込みコマンドを受信した後に前記記憶装置でビシー状態を生成するステップと、
前記データを前記キャッシュ記憶に記憶するステップに続いて、前記ビジー状態を維持しながらデータの少なくとも一部を前記キャッシュ記憶から前記主記憶にコピーするステップであって、前記コピーするステップが開始されるときに次の書き込みコマンドで前記ホストからデータを受信する前記キャッシュに充分な使用可能な容量が存在するようにしたコピーするステップと、
を含む方法。
【請求項２】
請求項１記載の方法において、
前記データの少なくとも一部を前記キャッシュ記憶から前記主記憶にコピーするステップが、前記キャッシュ記憶の使用可能な容量が所望のしきい値よりも小さい場合に前記キャッシュ記憶からデータの少なくとも一部をコピーするステップを含む方法。
【請求項３】
請求項２記載の方法において、
前記所望のしきい値は、前記キャッシュ記憶の５０％使用可能な容量である方法。
【請求項４】
請求項１記載の方法において、
前記データの少なくとも一部を前記キャッシュ記憶から前記主記憶にコピーするステップが、選択可能な数のキャッシュクリアリングステップを実行するステップを含み、各キャッシュクリアリングステップが、前記キャッシュ記憶の少なくとも１つのページから前記主記憶へデータをコピーする方法。
【請求項５】
請求項４記載の方法において、
少なくとも前記キャッシュ記憶の使用可能な容量に部分的に基づいて、前記選択可能な数を決定するステップをさらに含む方法。
【請求項６】
外部ホストからの受信データが、最初にキャッシュ記憶に記憶された後で主記憶に移動される、記憶装置における前記キャッシュ記憶から前記主記憶へのデータの移動を管理する方法であって、
キャッシュ記憶の使用可能な容量を検出するステップと、
前記検出された使用可能な容量に基づいてホストコマンドに対するキャッシュクリアリングステップの比率を決定するステップと、
前記決定されたホストコマンドに対するキャッシュクリアリングステップの比率を達成するために、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブするステップであって、前記キャッシュクリアリングステップの実行が、ホストコマンドを実行するのに充分な時間より長い期間、前記記憶装置で生成され前記ホストコマンドによってトリガされるビジー状態を維持するステップと、前記期間に前記キャッシュ記憶から前記主記憶にデータの少なくとも一部をコピーするステップとを含むようにしたインタリーブするステップと、
を含む方法。
【請求項７】
請求項６記載の方法において、
前記比率が、非整数の比率を含む方法。
【請求項８】
請求項６記載の方法において、
前記ホストコマンドが、ホスト書き込みコマンドを含む方法。
【請求項９】
請求項６記載の方法において、
前記ホストコマンドが、ホスト読み出しコマンドを含む方法。
【請求項１０】
請求項６記載の方法において、
前記ホストコマンドが、ホスト消去コマンドを含む方法。
【請求項１１】
請求項６記載の方法において、
前記ホストコマンドに対するキャッシュクリアリングステップの比率を決定するステップが、前記検出された使用可能な容量に加えて、少なくとも１つの追加のパラメータに基づく方法。
【請求項１２】
請求項１１記載の方法において、
前記少なくとも１つの追加のパラメータが、記憶装置負荷パラメータを含む方法。
【請求項１３】
請求項１２記載の方法において、
前記記憶装置負荷パラメータが、割り当てられるヒープメモリの現在の量を含む方法。
【請求項１４】
請求項６記載の方法において、
前記ホストコマンドに対するキャッシュクリアリングステップの比率を決定するステップと、前記検出された使用可能な容量が所望のしきい値容量よりも小さい場合に、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブするステップと、のみをさらに含む方法。
【請求項１５】
請求項６記載の方法において、
前記ホストコマンドに対するキャッシュクリアリングステップの比率を決定するステップと、前記検出された使用可能な容量がホストからデータを受信する最小容量よりも大きく所望のしきい値容量よりも小さい場合に、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブするステップと、のみをさらに含む方法。
【請求項１６】
記憶装置であって、
ホスト書き込みコマンドに関連するデータを受信するように構成されるキャッシュ記憶と、
前記キャッシュ記憶と通信し前記キャッシュ記憶から転送されるデータを受信するように構成される主記憶と、
前記キャッシュ記憶から前記主記憶へのデータの転送を管理するように配置されるコントローラであって、
ホスト書き込みコマンドを受信した後にビジー状態を生成し、前記ホスト書き込みコマンドとともに受信される前記データを前記キャッシュ記憶に書き込んだ後で、前記ビジー状態を維持しながら前記キャッシュ記憶から前記主記憶へデータの少なくとも一部をコピーし、コピーが開始されるときに次の書き込みコマンドで前記ホストからデータを受信する前記キャッシュ記憶に充分な使用可能な容量が存在するように構成されるコントローラと、
を備える記憶装置。
【請求項１７】
請求項１６記載の記憶装置において、
前記コントローラが、前記キャッシュ記憶の使用可能な容量が所望のしきい値より小さい場合に、前記ホスト書き込みコマンドとともに受信される前記データを書き込んだ後に前記ビジー状態を維持するように構成される記憶装置。
【請求項１８】
請求項１７記載の記憶装置において、
前記所望のしきい値は、前記キャッシュ記憶の５０％使用可能な容量である記憶装置。
【請求項１９】
請求項１６記載の記憶装置において、
前記キャッシュ記憶はシングルレベルセル不揮発性メモリであり、前記主記憶はマルチレベルセル不揮発性メモリである記憶装置。
【請求項２０】
記憶装置であって、
データをホストから受信するように構成されるキャッシュ記憶と、
前記キャッシュ記憶と通信し前記キャッシュ記憶から転送されるデータを受信するように構成される主記憶と、
前記キャッシュ記憶から前記主記憶へのデータの転送を管理するように配置されるコントローラであって、
前記キャッシュ記憶の使用可能な容量を検出し、
前記キャッシュ記憶の前記検出された使用可能な容量に基づいてホストコマンドに対するキャッシュクリアリングステップの比率を決定し、
前記決定されたホストコマンドに対するキャッシュクリアリングステップの比率を達成するために、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブし、前記キャッシュクリアリングステップの実行は、ホストコマンドを実行するのに充分な時間より長い期間、前記記憶装置で生成され前記ホストコマンドによってトリガされるビジー状態を維持することと、前記期間に前記キャッシュ記憶から前記主記憶にデータをコピーすることとを含むように構成されるコントローラと、
を備える記憶装置。
【請求項２１】
請求項２０記載の記憶装置において、
前記コントローラが、前記検出された使用可能な容量に加えて、少なくとも１つの追加のパラメータに基づいて前記ホストコマンドに対するキャッシュクリアリングステップの比率を決定するように構成される記憶装置。
【請求項２２】
請求項２１記載の記憶装置において、
前記少なくとも１つの追加のパラメータが、記憶装置負荷パラメータを含む記憶装置。
【請求項２３】
請求項２２記載の記憶装置において、
前記記憶装置負荷パラメータが、割り当てられるヒープメモリの現在の量を含む記憶装置。
【請求項２４】
請求項２０記載の記憶装置において、
前記ホストコマンドが、ホスト書き込みコマンドを含み、前記ホスト書き込みコマンドのうちの１つを実行するのに充分な時間が、前記ホスト書き込みコマンドに関連するデータを前記キャッシュ記憶に書き込む期間を含む記憶装置。
【請求項２５】
請求項２０記載の記憶装置において、
前記コントローラが、選択可能な数のキャッシュクリアリングステップを実行するように構成され、各キャッシュクリアリングステップが、前記キャッシュ記憶の少なくとも１つのページから前記主記憶へデータをコピーすることを含む記憶装置。
【請求項２６】
請求項２５記載の記憶装置において、
前記コントローラが、少なくとも前記キャッシュ記憶の使用可能容量に部分的に基づいて、前記選択可能な数を決定するようにさらに構成される記憶装置。
【請求項２７】
請求項２０記載の記憶装置において、
前記コントローラが、前記ホストコマンドに対するキャッシュクリアリングステップの比率を決定し、前記検出された使用可能な容量が所望のしきい値容量よりも小さい場合に、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブするようにのみさらに構成される記憶装置。
【請求項２８】
請求項２０記載の記憶装置において、
前記コントローラが、前記ホストコマンドに対するキャッシュクリアリングステップの比率を決定し、前記検出された使用可能な容量が前記ホストからデータを受信する最小容量よりも大きく所望のしきい値容量よりも小さい場合に、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブするようにのみさらに構成される記憶装置。
【請求項２９】
回路であって、
記憶装置においてキャッシュ記憶から主記憶へのデータの転送を管理するように配置されるコントローラであって、
ホスト書き込みコマンドを受信した後にビジー状態を生成し、
前記ホスト書き込みコマンドとともに受信される前記データを前記キャッシュ記憶に書き込んだ後で、前記ビジー状態を維持しながら前記キャッシュ記憶から前記主記憶へデータの少なくとも一部をコピーし、コピーが開始されるときに次の書き込みコマンドでホストからデータを受信する前記キャッシュ記憶に充分な使用可能な容量が存在するように構成されるコントローラを備える回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリなどの不揮発性メモリシステムでの、ホスト書き込み動作とキャッシュフラッシングとのバランスをとるための方法およびシステムに関する。
【背景技術】
【０００２】
フラッシュメモリなどの不揮発性メモリシステムは、消費者製品用に広く採用されてきた。フラッシュメモリは、様々な形態で、例えば、ホスト装置間で持ち運びできる携帯用メモリカードの形態で、あるいは、ホスト装置に組み込まれるソリッドステートディスク（ＳＳＤ）として見ることもできる。フラッシュメモリで見られる２つの一般的なメモリセルアーキテクチャには、ＮＯＲとＮＡＮＤとが含まれる。一般的なＮＯＲアーキテクチャでは、メモリセルは、列方向に延びる隣接するビット線のソース拡散とドレイン拡散との間に接続され、コントロールゲートは、セルの行に沿って延びるワード線に接続される。メモリセルは、ソースとドレインとの間のセルチャネル領域の少なくとも一部の上に位置する少なくとも１つの記憶素子を含む。したがって、記憶素子上のプログラムされたレベルの電荷はセルの動作特性を制御し、次いでアドレス指定されるメモリセルに適切な電圧を印加することによって読み出すことができる。
【０００３】
一般的なＮＡＮＤアーキテクチャは、セルの列を形成するように個々のビット線と基準電位との間に１つ以上の選択トランジスタとともに接続される、１６個または３２個などの３つ以上直列に接続されるメモリセルのストリングを利用する。ワード線は、これらの列の多くの中のセルを横切るように延びる。列の中の個々のセルは、ストリングを通って流れる電流がアドレス指定されるセルに蓄積される電荷のレベルに依存するように、ストリング内の残りのセルをオンさせることによって、プログラミング中に読み出されベリファイされる。
【０００４】
フラッシュメモリ管理システムの中には、自己キャッシングアーキテクチャを利用しているものがある。このアーキテクチャでは、ホストから受信されたデータをまずキャッシュとして指定されるフラッシュメモリの一部に記憶し、その後で主記憶領域として指定されるフラッシュメモリの一部にこれをコピーする。この種類のフラッシュメモリ管理システムでは、キャッシュフラッシング動作をスケジュールするタイミングが問題である。キャッシュフラッシング動作では、キャッシュ内のデータの一部、一般に、共通論理ブロックに対応するデータをキャッシュから主記憶領域にコピーした後にキャッシュから削除してキャッシュに新しい入力データのための場所を空ける。本願明細書で使用される用語のキャッシュフラッシングとキャッシュクリアリングとは同じ意味である。
【０００５】
自己キャッシングフラッシュメモリ管理システムは、キャッシュフラッシング動作のスケジューリングおよびフラッシュされる特定データの選択に関して異なるポリシーを用いてもよい。一般に、スケジューリングの決定に影響を及ぼす要因は、キャッシュの満杯度およびサービスをする必要があるホストから届くアクセス要求があるかどうかである。記憶システムがホスト要求に関してアイドル状態の場合、一般に、フラッシュメモリ管理システムは、キャッシュが可能性のある今後のホスト動作の急増に対して充分に準備されるようにキャッシュ内のすべてのデータをフラッシュする。
【０００６】
一般に、自己キャッシュ記憶装置の書き込み性能は、２つの数字によって規定される。第１の数字は、バースト書き込み性能である。バースト書き込み性能は、キャッシュ内に充分な空きがある場合に記憶装置がデータの入力ストリームを吸収することができる速度である。したがって、バースト書き込み性能は、キャッシュの書き込み性能のみに依存し、主記憶領域の書き込み性能には依存しない。第２の数字は、連続書き込み性能である。連続書き込み性能は、記憶装置がキャッシュサイズよりもずっと大きい入力データのストリームを吸収することができる速度である。連続書き込み性能は、キャッシュ書き込み性能と主記憶領域書き込み性能との両方の関数である。主記憶領域がキャッシュよりもずっと遅い場合には、連続書き込み性能は、主に主記憶領域書き込み性能によって決まる。
【０００７】
記憶装置がある所与の連続入力速度に規定されていても、ホストが記憶装置内に規定よりも速い速度でデータを送信することを止めさせるものは何もなく、記憶装置に依存して、記憶装置がその速度を保つことができない場合には入力ストリームを遅延させる「ビジー(busy)」条件を発生し、そして、より多くの入力を受信することができるようになった場合にはビジー状態を解除したりする。これはまさに実際のホストが何台稼動しているかである。ホストは、書き込まれるデータを記憶装置にできるだけ速く送信し、記憶装置がそれを止めさせて待機させるまで送信し続ける。
【０００８】
このようなパターンの動作に続いて、一般的に観測される効果は以下のようである。記憶装置のキャッシュが空で始まるとすると、ホストはまずバースト書き込み性能と等しい高い性能を認識する。キャッシュは次第に満たされるが、キャッシュが満杯になるかそれにかなり近くなる時点まで性能は依然としてバースト性能の状態である。この時点で、記憶装置は、ビジー状態を発生させ、一部のコンテンツを主記憶領域に移動させることによってキャッシュ内の空間をクリアし始める必要がある。一般に、ビジー状態は、全論理ブロックに対応するデータがキャッシュからコピーされて初めてクリアされる。その結果、ホストは、主記憶が低速でブロックが大きい場合には、十分の何秒か数秒もあり得る相対的に長いビジー期間に遭遇することもある。ホストから見た平均性能は依然として公示される連続書き込み性能速度規格の範囲内かもしれないが、一部のホストはこのように長いビジー期間に対応することができないこともある。その理由は、長いビジー期間によって、ビジー期間中に最悪の状態で生成されることもある新しいデータをすべて蓄積するための大きなバッファがホストに必要となるためである。
【０００９】
幾つかのキャッシュの実施例では、キャッシュの空きが少なくなるに従ってデータをキャッシュからクリアする実効速度が低下することがあるために、この問題はさらに深刻化することもある。ホストが連続的ではなくてランダムなアドレスにデータを書き込む場合や、キャッシュが多くのデータページを含む大きなブロックに編成されるフラッシュメモリを使用している場合にこの問題が発生することもある。このような装置では、キャッシュが満杯状態に近い状態で連続的に動作している場合に、ビジー期間が長くなるだけでなく連続書き込み性能も満足されないこともある。
【００１０】
一部の例では、記憶装置がビジー状態を示すこともできる時間上の厳しい制約も存在し、この制約を破るとホストが処理を停止することもある。例えば、フラッシュメモリのセキュアデジタル（ＳＤ）規格には、２５０ミリ秒以内にホスト書き込みコマンドに必ず応答するＳＤ準拠カードが必要である。カードがこの厳しい時間制約を満足しない場合には、ホストはカードとの通信セッションを終了してデータ記憶動作を停止することもある。したがって、「常時フルキャッシュ (always full cache)」モードの動作に入ることによって、この時間制約を破るリスクが大幅に増加する可能性がある。
【００１１】
一般に、キャッシュ付き記憶装置はデータをフラッシュするためのポリシーを使用するが、このポリシーでは、データが２つの条件のうちの１つの条件でキャッシュからフラッシュされる。第１の条件は、記憶装置がアイドル状態の場合であり、ホストからデータを受信しない、あるいは逆にホストによってアクセスされない場合に記憶装置はアイドルとして定義される。第２の条件は、キャッシュにこれ以上空きがないために新しいデータを受信する方法が他にない場合である。このようなキャッシュフラッシングポリシーは、前述した問題をもたらす可能性がある。キャッシュ付き記憶装置の中には、フラッシュ動作に対する明示的制御をホストに提供するものがあるが、ホストがキャッシュ動作に対してこのような制御を利用して前述した問題を回避するのは困難である。ホストがそうするためには、記憶装置の内部についての詳細な知識および理解が必要となり、これは一般的なホストが有しない情報である。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】米国特許第５，９３０，１６７号
【特許文献２】米国特許出願第１１／３１８，９０６号
【特許文献３】米国特許第５，９３７，４２５号
【特許文献４】米国特許第６，６７８，７８５号
【特許文献５】米国特許出願第１１／８７６，８９３号
【発明の概要】
【００１３】
前述した問題に対処するために、ホスト書き込み動作とキャッシュフラッシングとのバランスをとるための方法およびシステムが開示される。
本発明の第１の態様によれば、書き込みコマンドで外部ホストから受信される受信データが、最初にキャッシュ記憶に記憶された後で主記憶に移動される、記憶装置におけるキャッシュ記憶から主記憶へのデータの移動を管理する方法が開示される。この方法は、記憶装置でホストから書き込みコマンドを受信するステップと、書き込みコマンドとともに受信されるデータをキャッシュ記憶に記憶するステップと、書き込みコマンドを受信した後に記憶装置でビシー状態を生成するステップと、を含む。この方法は、キャッシュ記憶にデータを記憶するステップに続いて、ビジー状態を維持しながらデータの少なくとも一部をキャッシュ記憶から主記憶にコピーするステップであって、コピーするステップが開始されるときに次の書き込みコマンドでホストからデータを受信するキャッシュに充分な使用可能な容量が存在するようにしたステップと、をさらに含む。
【００１４】
別の態様によれば、書き込みコマンドで外部ホストから受信される受信データが、最初にキャッシュ記憶に記憶された後で主記憶に移動される、記憶装置におけるキャッシュ記憶から主記憶へのデータの移動を管理する方法が開示される。この方法は、キャッシュ記憶の使用可能な容量を検出するステップと、検出されたキャッシュ記憶の使用可能な容量に基づいてホスト書き込みコマンドに対するキャッシュクリアリングステップの比率を決定するステップと、を含む。決定された比率を達成するために、キャッシュクリアリングステップは、ホスト書き込みコマンドの実行とインタリーブされる。キャッシュクリアリングステップの実行は、ホスト書き込みコマンドを実行するのに充分な時間より長い期間、ホスト書き込みコマンドによってトリガされ記憶装置で生成されるビジー状態を維持するステップと、この期間にキャッシュ記憶から主記憶にデータをコピーするステップと、を含む。
【００１５】
さらに別の態様では、記憶装置でキャッシュ記憶から主記憶へのデータの移動を管理する方法は、キャッシュ記憶の使用可能な容量を検出するステップと、次いで検出された使用可能な容量に基づいてホストコマンドに対するキャッシュクリアリングステップの比率を決定するステップと、を含む。決定されたホストコマンドに対するキャッシュクリアリングステップの比率を達成するために、キャッシュクリアリングステップは、ホストコマンドの実行とインタリーブされる。キャッシュクリアリングステップの実行は、ホストコマンドを実行するのに充分な時間より長い期間、記憶装置で生成されホストコマンドによってトリガされるビジー状態を維持するステップと、この期間にキャッシュ記憶から主記憶にデータの少なくとも一部をコピーするステップと、を含む。
【００１６】
本発明の別の態様では、記憶装置は、ホスト書き込みコマンドに関連するデータを受信するように構成されるキャッシュ記憶と、キャッシュ記憶と通信しキャッシュ記憶から転送されるデータを受信するように構成される主記憶と、キャッシュ記憶から主記憶へのデータの転送を管理するように配置されるコントローラと、を備える。コントローラは、ホスト書き込みコマンドを受信した後にビジー状態を生成し、ホスト書き込みコマンドとともに受信されるデータをキャッシュ記憶に書き込んだ後で、ビジー状態を維持しながらキャッシュ記憶から主記憶へデータの少なくとも一部をコピーし、コピーが開始されるときに次の書き込みコマンドでホストからデータを受信するキャッシュ記憶に充分な使用可能な容量が存在するように構成される。
【００１７】
本発明の別の態様では、データをホストから受信するように構成されるキャッシュ記憶と、キャッシュ記憶と通信しキャッシュ記憶から転送されるデータを受信するように構成される主記憶と、キャッシュ記憶から主記憶へのデータの転送を管理するように配置されるコントローラと、を備える記憶装置が開示される。コントローラは、キャッシュ記憶の使用可能な容量が、ホストからデータを受信する最小容量よりも大きく、所望のしきい値容量よりも小さいかどうかを検出するようにさらに構成される。コントローラは、検出された使用可能な容量に基づいてホストコマンドに対するキャッシュクリアリングステップの比率を決定し、次いで決定されたホストコマンドに対するキャッシュクリアリングステップの比率を達成するために、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブするようにさらに構成される。キャッシュクリアリングステップの実行は、ホストコマンドを実行するのに充分な時間より長い期間、記憶装置で生成されホストコマンドによってトリガされるビジー状態を維持することと、この期間にキャッシュ記憶から主記憶にデータをコピーすることとを含む。
【００１８】
別の態様によれば、自己キャッシング記憶装置においてホストコマンドの実行とキャッシュクリアリングとのバランスをとるためのプロセッサ実行可能命令を含むプロセッサ読み出し可能媒体が開示される。プロセッサ実行可能命令は、キャッシュ記憶の使用可能容量を検出し、検出された使用可能容量に基づいてホストコマンドに対するキャッシュクリアリングステップの比率を決定し、決定されたホストコマンドに対するキャッシュクリアリングステップの比率を達成するために、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブする動作をプロセッサに実施させるように構成される。キャッシュクリアリングステップの実行は、ホストコマンドを実行するのに充分な時間より長い期間、記憶装置で生成されホストコマンドによってトリガされるビジー状態を維持することと、この期間にキャッシュ記憶から主記憶にデータの少なくとも一部をコピーすることとを含む。
【００１９】
別の態様では、記憶装置においてキャッシュ記憶から主記憶へのデータの転送を管理するように配置されるコントローラを備える回路が開示される。コントローラは、キャッシュ記憶の使用可能容量を検出し、検出されたキャッシュ記憶の使用可能容量に基づいてホストコマンドに対するキャッシュクリアリングステップの比率を決定し、決定されたホストコマンドに対するキャッシュクリアリングステップの比率を達成するために、キャッシュクリアリングステップの実行をホストコマンドの実行とインタリーブするように構成される。キャッシュクリアリングステップの実行は、ホストコマンドを実行するのに充分な時間より長い期間、記憶装置で生成されホストコマンドによってトリガされるビジー状態を維持することと、この期間にキャッシュ記憶から主記憶にデータをコピーすることとを含む。
【００２０】
さらに別の態様によれば、回路は、記憶装置においてキャッシュ記憶から主記憶へのデータの転送を管理するように配置されるコントローラを備える。コントローラは、ホスト書き込みコマンドを受信した後にビジー状態を生成し、ホスト書き込みコマンドとともに受信されるデータをキャッシュ記憶に書き込んだ後で、ビジー状態を維持しながらキャッシュ記憶から主記憶へデータの少なくとも一部をコピーし、コピーが開始されるときに次の書き込みコマンドでホストからデータを受信するキャッシュ記憶に充分な使用可能な容量が存在するように構成される。
【図面の簡単な説明】
【００２１】
【図１】自己キャッシングメモリシステムを示すブロック図である。
【図２】図１のシステムの例示的な物理メモリ構成を示す図である。
【図３】図２の物理メモリの一部を示す拡大図である。
【図４】好適な実施形態による書き込みとキャッシュフラッシュとのバランス機構を実施するかどうかを決定する方法を示す流れ図である。
【図５】好適な実施形態によるホスト書き込みとキャッシュフラッシュとのバランス機構の一実施形態を示す流れ図である。
【発明を実施するための形態】
【００２２】
本発明の態様を実施するのに適したフラッシュメモリシステムが、図１に示される。ホストシステム１０は、自己キャッシングフラッシュ記憶装置１２内へデータを格納し、これからデータを取り出す。記憶装置１２は、ホストに組み込まれても、あるいは、カードまたは機械的および電気的コネクタを介してホスト１０に着脱可能に接続される他の着脱可能なドライブの形態で存在してもよい。ホスト１０は、パーソナルコンピュータなどの多くのデータ生成装置のいずれかであってもよい。ホスト１０は、通信チャネル１４によって記憶装置と通信する。
【００２３】
記憶装置１２は、キャッシュ記憶１６および主記憶１８として配置される不揮発性メモリセルを含む。キャッシュ記憶１６および主記憶１８は、同じ種類のフラッシュメモリセルで異なるモードで動作するように構成されてもよく、または異なる種類のフラッシュメモリセルでもよい。例えば、キャッシュ記憶１６は、シングルレベルセル（ＳＬＣ）形のフラッシュ構成で構成されて、主記憶１８は、マルチレベルセル（ＭＬＣ）形のフラッシュメモリ構成で構成されてもよく、ＳＬＣフラッシュの速い書き込み速度とＭＬＣフラッシュの高密度とをうまく利用できるようにしてもよい。キャッシュ記憶１６および主記憶１８には、フラッシュメモリの種類の異なる組み合わせも考えられる。記憶装置１２は、プロセッサ２０と、プロセッサ２０を動作させる命令２２と、論理ブロック対物理ブロック変換テーブル２３とを含んでいてもよいコントローラ１９も含む。本願明細書に記載されるキャッシュフラッシングポリシーを実施するのに適している適切な自己キャッシングフラッシュメモリ構成の例が、ともにその全体が本願明細書において参照により援用されている、Leeらの米国特許第５，９３０，１６７号（特許文献１）およびLasserらの米国特許出願第１１／３１８，９０６号（特許文献２）に開示される。
【００２４】
前述したキャッシュ記憶１６および主記憶１８は、メモリセルのブロックに配置される不揮発性フラッシュメモリであってもよい。メモリセルのブロックは、消去の単位、すなわち、物理的に同時に消去可能なメモリセルの最小数である。しかし、並列性を向上させるために、ブロックはさらに大きいメタブロック単位で動作されてもよい。メモリセルの各プレーンから１つのブロックを論理的に結合してメタブロックを形成してもよい。キャッシュ記憶１６がＳＬＣ構成で主記憶１８がＭＬＣ構成である記憶装置では、１つの主記憶ブロックに等しいデータ量を記憶するのに複数のキャッシュブロックが必要な場合もあるためメタブロック配置は有用である。図２を参照すると、代表的なフラッシュメモリセルアレイの概念図が示される。４つのプレーン、すなわちサブアレイ３０、３２、３４および３６のメモリセルは、単一の集積メモリセルチップ上、２つのチップ（各チップ上のプレーンのうちの２つのプレーン）上、または４つの個々のチップ上に存在してもよい。具体的な配置は以下の説明に重要ではなく、他の多くのプレーンがシステムに存在してもよい。プレーンは、各プレーン３０、３２、３４および３６に配置されるブロック３８、４０、４２および４４などの長方形で図２に示されるメモリセルのブロックに個別に分割される。各プレーンには数十または数百のブロックが存在してもよい。ブロックは論理的に結合されて、１つの単位として消去することもできるメタブロックを形成してもよい。例えば、ブロック３８、４０、４２および４４は、第１のメタブロック４６を形成してもよい。メタブロックを形成するのに使用されるブロックは、ブロック５０、５２、５４および５６から成る第２のメタブロック４８で示されるように、各プレーン内の同じ相対的位置に限定される必要はない。
【００２５】
図３に示されるように、個々のブロックは、今度は動作上の目的でメモリセルのページに分割される。例えば、各ブロック３８、４０、４２および４４のメモリセルは、それぞれ８つのページＰ０〜Ｐ７に分割される。あるいは、各ブロック内で１６個、３２個またはそれ以上のページのメモリセルが存在してもよい。ページは、一度にプログラムされる（書き込まれる）または読み出される最小のデータ量を含むブロック内のデータプログラミング（書き込み）および読み出しの単位である。４つの各ブロック３８、４０、４２および４４について１つの物理ページで形成されるメタページ５８が図３に示される。メタページ５８は、４つの各ブロックにページＰ２を含むが、メタページのページは、必ずしも各ブロック内に同じ相対的位置を有する必要はない。メタページは、プログラミングの最大単位である。図２および図３に開示されるブロックは、前述した物理メモリセルのグループに関連するため、本願明細書では物理ブロックと称される。本願明細書で使用される論理ブロックは、物理ブロックと同じサイズを有するように定義されるアドレス空間の仮想単位である。各論理ブロックは、ホスト１０から受信されるデータと関連する論理ブロックアドレス（ＬＢＡ）の範囲を含む。このとき、ＬＢＡは、データが物理的に記憶される記憶装置１２の１つ以上の物理ブロックにマップされる。動作中、記憶装置１２のキャッシュ記憶１６は、ホスト書き込みコマンドに関連するデータをホスト１０から受信する。キャッシュ記憶１６で受信されたデータは、ホストによって論理ブロックのアドレスでアドレス指定され、このデータがキャッシュ記憶１６に記憶される場合、所与の論理ブロックのアドレスに関連するデータは、キャッシュ記憶１６の単一の物理ブロックに記憶されても、あるいは、キャッシュ記憶１６の複数の異なる物理ブロックにわたって分散されてもよい。プロセッサ２０は、論理アドレスの物理アドレスへのマッピングを論理対物理マッピングテーブル２３で追跡する。プロセッサ２０は、現在のキャッシュ記憶容量を確認して、命令データベース２２のプロセッサ実行可能命令に基づき本願明細書に記載されるホスト書き込みとキャッシュフラッシュとのバランス機構を開始するべきかどうかを判断する。現在のキャッシュ容量およびバランスアルゴリズムに基づいてキャッシュ記憶フラッシングが保証される場合、プロセッサは、論理ブロックのデータを確認して、特定の論理ブロックに対応するキャッシュ記憶１６の１つ以上の物理ブロックに存在するデータの一部を主記憶１８にコピーするかどうかを判断する。本願明細書に開示されるホスト書き込みとキャッシュフラッシュとのバランスアルゴリズムを組み込むように変更されてもよいフラッシュ管理システムの例を、ともにその全体が本願明細書において参照により援用されている、Banの米国特許第５，９３７，４２５号（特許文献３）およびLasserの米国特許第６，６７８，７８５号（特許文献４）で見出すこともできる。
【００２６】
ホストをサポートするために提供される記憶装置１２のリソースと、キャッシュ記憶１６が満杯になり過ぎないようにするために割り当てられるリソースとの間のバランスをとるために、記憶装置１２は、ホスト１０に実際に提供することができるよりも低い性能を意図的に提供する、ホスト書き込みとキャッシュフラッシュとのバランスアルゴリズムを実施するように構成される。記憶装置は、フラッシング動作が必要ない場合でも、キャッシュ記憶をフラッシュするために「盗まれた（stolen）」時間を利用する。本願明細書で提供される例は、ホスト書き込みコマンドをキャッシュフラッシングとバランスさせることに焦点を合わせているが、ホスト読み出しコマンドまたは消去コマンドなどの他のホストコマンドについてもキャッシュクリアリングステップとインタリーブされてキャッシュ記憶の平衡を達成することもできると考えられる。
【００２７】
図４に示されるように、キャッシュ記憶１６が相対的に空いている場合には、記憶装置１２は、ホスト１０が最大のサポートを受けるとともに最大の性能（バースト書き込み性能）を認識するように、周知のキャッシュフラッシングポリシーを使用してもよい。ホスト１０が装置にアクセスしておらず記憶装置が本来アイドル状態になる場合を除いて、データはキャッシュ記憶１６からフラッシュされない（６０、６２）。しかし、キャッシュ記憶１６が相対的に満杯な場合は、記憶装置１２は、ホスト１０へのサービスとキャッシュ記憶１６へのサービスとの間に時間を割り当てるバランス機構を起動する（６０、６４）。限定されない例として、キャッシュは、満杯の半分を下回る場合は相対的に空いていると見なされ、満杯の半分かそれを上回る場合には相対的に満杯であると見なされてもよい。他のしきい値を使用してバランス機構を起動するトリガポイントを設定することもできる。
【００２８】
ホスト書き込みとキャッシュフラッシュとのバランス機構の１つの実施例のさらに詳細な例が、図５に示される。キャッシュ記憶の使用可能な容量が所望の容量よりも小さい（すなわち、前述したようにキャッシュ記憶１６が相対的に満杯である）場合、プロセッサ２０は、それぞれ２つの連続するホスト要求の間に挿入するキャッシュフラッシングステップの数を決定する（６８、７０）。限定される環境では、キャッシュ記憶１６が満杯で、使用可能な容量が記憶装置１２がキャッシュクリアリングステップを最初に実施しないで動作できる最小しきい値を下回るほどの場合には、キャッシュフラッシングステップとホスト書き込みステップとのバランスをとることは遅らせてもよい（６６）。１つの限定されない例として、特定の記憶装置の最小しきい値が１％使用可能な容量であり、キャッシュの現在の使用可能な容量がこのしきい値を下回った場合、キャッシュクリアリングステップが実行されて使用可能容量がこの最小しきい値に少なくとも達するようになるまで、記憶装置はホスト書き込みステップとキャッシュフラッシングステップとのいかなるバランスをとることも遅らせてよい。
【００２９】
一実施形態では、キャッシュフラッシングステップの数は、プロセッサ２０がテーブルに格納されるホストコマンドに対して実行するキャッシュクリアリングステップの比率を調べることによって決定されてもよく、このテーブルは、様々な比率をキャッシュ記憶１６の使用可能な容量の様々なトリガレベルに対応させている。次いで、キャッシュ記憶１６の検出された使用可能容量に対応する比率はプロセッサ２０によって使用されて、その比率に対応する連続するホストコマンド間でインタリーブされるキャッシュフラッシングステップの数をスケジュールしてもよい。例えば、比率が２であれば、プロセッサ２０は各ホストコマンドに続いて２つのキャッシュフラッシングステップをスケジュールすることになる。キャッシュフラッシングの実行とホストコマンドの実行との間のバランスに対して高い分解能および微細な調整を可能にするために、この比率は非整数を含んでもよい。１つの例として、使用可能なキャッシュ記憶の特定のトリガレベルに対する比率は３．５であってもよい。このときプロセッサ２０は、ホストコマンドに続いて３つのキャッシュフラッシングステップと、第２のホストコマンドに続いて４つのキャッシュフラッシングステップの繰り返しパターンをスケジュールして、実効比率である３．５を達成することになる。必要なキャッシュフラッシングの量が少ない場合のみ、この比率は１より小さくなってもよく、この場合、連続するホストコマンドが実行された後でキャッシュクリアリングステップがスケジュールされてもよい。
【００３０】
代替の実施形態では、キャッシュ記憶の検出された使用可能容量に加えて他の１つ以上のパラメータを考慮して、ホスト書き込みコマンドに対するキャッシュフラッシングステップの比率を決定してもよい。記憶装置１２の割り当てられるヒープメモリの現在の量などの記憶装置負荷パラメータを使用してもよい。比率の決定にこの追加のパラメータを考慮することによって次の比率が選択されるトリガポイントを変更してもよい。使用してもよい他の記憶装置負荷パラメータは、記憶装置１２で実施される特定のフラッシュ管理アルゴリズムに固有のものであってもよい。このような他のパラメータは、フラッシュ管理アルゴリズムによって使用される特定のリストの長さ、特定のハッシュテーブルの使用スペースの量などを含んでいてもよい。
【００３１】
再び図５を参照すると、ホストコマンドに対するキャッシュフラッシングステップの数を決定してスケジュールした後、プロセッサは、ホストコマンドの受信時に、記憶装置にビジー状態を設定することによってスケジュールを実施してもよい（７２）。ホストコマンドが実施された後に、プロセッサは、ホストコマンド後に記憶装置１２によって設定されるビジー状態の期間を延長する。ビジー状態の表示は、記憶装置１２が設定してホスト１０が認識する標準状態であって、ビジー状態が解除されるまで、ホスト１０が追加のデータを送信しないようにするとともに、一般にホストがほとんどのコマンドを送信しないようにする標準状態である。一般に、記憶装置１２は、ホストコマンドを受信した後にビジー状態を設定し、記憶装置１２がコマンドを実行するのに必要なステップを完了するのにかかる期間だけビジー状態を維持する。バランス機構を実施する場合、プロセッサは、記憶装置が特定のコマンドを実行するのに必要な時間より長くビジー状態を維持し、スケジュールされた数のキャッシュフラッシングステップが実行されるまで期間を延長する（７４）。装置のビジー状態の具体的な実施例は、その装置のプロトコルに依存している。例えば、記憶装置がＮＡＮＤ装置であるか、ＮＡＮＤ装置プロトコルをエミュレートしている場合、ビジー状態は、ホスト１０に記憶装置１２がビジー状態か待機中かを知らせる、記憶装置１２によって制御される個別の信号であってもよい。ＳＤプロトコル装置では、記憶装置は、データの転送に使用される線の１つを制御することによってビジー状態であることを示す。ホスト１０は、所定の時点でその線をサンプリングして、書き込まれる次のデータのバッチを送信可能かどうかを判断する。他のプロトコルは、他の方式を使用して本願明細書で説明されるビジー状態を提供してもよく、本願明細書に開示されるシステムおよび方法では、多くの種類のビジー状態表示のいずれを使用してもよい。
【００３２】
各キャッシュフラッシングステップは、アドレスの論理ブロックを選択することと、特定の論理ブロックに関連するデータの少なくとも１つのページをキャッシュ記憶１６から主記憶１８内にコピーすることとから構成されてもよい。キャッシュフラッシングステップは、選択される論理ブロックに関連するデータの全ページ（すなわち、論理ブロック全体）をコピーすることから構成されてもよいが、選択される論理ブロックに関連する全データよりも少ないデータとなる単一のページまたはページのグループのほうが一般的なこともある。一連の別々のページコピー動作でコピーが実施されてもよいシステムの一例を、その全体が本願明細書において参照により援用されている、「Interruptible Cache Flushing in Flash Memory Systems」という２００７年１０月２３日に出願された係属中の米国特許出願第１１／８７６，８９３号（特許文献５）で見ることもできる。ビジー状態は決定された数のキャッシュフラッシングステップが完了される間維持され、その後ビジー状態が解除されてホストが別のコマンドを送信できるようになる。主記憶にコピーされる対応するデータを有する特定の論理ブロックをどれにするかの選択は、多くの基準のいずれに基づいてもよい。例えば、その選択は、どの論理ブロックがキャッシュ記憶１６の物理ブロックに最も多くデータを有するか、あるいは、どの論理ブロックがキャッシュ記憶１６の最も多くの物理ブロックにデータを有するかに基づいてもよい。
【００３３】
キャッシュ記憶１６の使用可能な容量が最小容量より大きく所望の容量より小さいとして、ホスト書き込み要求に対するスケジュールされたキャッシュクリアリングステップの決定された比率がＮ１であると仮定すると、ホストから見た平均性能はＷ１（メガバイト／秒で測定）となる。キャッシュクリアリングステップを実行する時間中、記憶装置１２はビジー状態表示を維持する。具体的には、ホストが書き込み要求を送信した後で記憶装置はビジー状態を開始するが、さらに挿入されるキャッシュクリアリングステップに必要な時間だけそれを維持する。ビジー状態を維持する追加の時間によってホスト１０は速度が低下し、記憶装置１２に送信されるデータの速度が低下してしまう。しかし、この段階では、低下した速度は依然として連続書き込み性能規格を上回ることもできることに留意するべきである。
【００３４】
バランス機構を開始した後、記憶装置１２のプロセッサ２０は、キャッシュの状態をモニタし続ける。ホストコマンドに対するキャッシュクリアリングステップの現在の比率が、キャッシュ記憶１６にこれ以上満たされるのを止めさせたことが分かる場合もあるが、キャッシュ記憶１６は満たされ続けることもある。これが発生すると、第２のトリガポイントに達する。例えば、５０％満たされたキャッシュの初期状態がバランス機構をトリガした場合には、６０％満たされたキャッシュの状態が第２のトリガポイントであってもよい。記憶装置がこの条件を検出する場合には、さらに積極的なポリシーが採用されてもよい。Ｎ２＞Ｎ１のとき、各ホスト要求毎にＮ１キャッシュクリアリングステップの比率をスケジュールする代わりに、Ｎ２ステップの比率がスケジュールされる。Ｗ２＜Ｗ１のとき、ホストから見た実効連続書き込み性能はＷ２まで低下する。このようなさらに低下した性能モードは、キャッシュが満たされるのを止めるか、あるいはまだ充分でないこともある平衡でシステムをバランスさせるのに充分なこともあり、このような場合には、対応するさらに低下したホスト性能値を有するこの追加のトリガポイントが起動される。最終的には、ホストがある平均速度でサービスされると同時にキャッシュがこれ以上満たされない平衡に達する。
【００３５】
単一のトリガポイントを使用して不充分な形態のホスト書き込みとキャッシュフラッシュとのバランスを達成しようとすることは可能であるが、記憶装置の実際の性能は、ホスト１０のアクセスパターンに依存しているため、複数のトリガポイントを使用するのが好ましい。一般に、記憶装置の公示される連続書き込み性能は、連続的なアドレスへのホスト書き込みデータに関しては正しい。ホスト１０がランダムなアドレスにデータを書き込む場合は、連続書き込み性能は一般にもっと低い。アクセスパターンがランダムなほど、実効性能は低下する。この効果は、ランダムなアドレスパターンを処理する場合にフラッシュ管理アルゴリズムの効率が相対的に悪くなるためである。このため、キャッシュを平衡にするための適切なバランス用比率は予測することができない可能性があり、一般に、平衡に達するまでホストのサービス性能を連続的に低下させるために一連のトリガ条件が必要である。さらに、ランダムなアドレスパターンにおいて、平衡ポイントは、公示される連続書き込み性能よりさらに低い（ホストから見た）平均連続書き込み性能となることもある。
【００３６】
再び図５を参照すると、ホストが新しいデータを生成する際に速度が低下し始めると、逆のプロセスが発生する。キャッシュ記憶１６が空になるときに、キャッシュの使用可能な容量が小さくなるにつれてプロセッサ２０が適用するホストコマンドに対するキャッシュクリアリングステップの比率を上げるようにしたのと同じトリガレベルを、キャッシュが空になり使用可能な容量が増加してキャッシュクリアリングプロセスに関与するリソースが少なくなるにつれて逆の順序で適用してもよい。代替の実施形態では、キャッシュが満たされている場合に徐々に増加する比率を適用するトリガは、キャッシュが空になるときに同じかまたは異なる比率を適用するトリガと異なってもよい。例えば、キャッシュが満たされている場合に第１の比率から第２の比率に変更するトリガは、キャッシュが６０％満たされた場合であってもよいが、キャッシュが空になっている場合に第２の比率から再び第１の比率に切り換えるトリガポイントは、キャッシュ記憶が５５％満たされる場合に設定されてもよい。このようにして、ヒステリシスのような効果がトリガ条件に提供され、２つのスケジュールモードの間を高頻度で切り換わることを避けることができる。最終的に、キャッシュ記憶１６は相対的に空き状態、例えば、５０％未満で満たされた状態に達し、記憶装置１２は、ホスト要求を最大限に優先する初期モード（バースト書き込み性能）に戻る。
【００３７】
データ書き込み性能をかなり犠牲にしてキャッシュの平衡を維持し、タイムアウト期間が長引くような事例を避けるホスト書き込み動作とキャッシュフラッシングとのバランス機構を実施する方法およびシステムが開示された。この方法は、自己キャッシング記憶装置のキャッシュ記憶部の使用可能な容量を決定し、使用可能な容量が所望のしきい値よりも小さい場合にホスト書き込みコマンドに対するキャッシュフラッシングステップの比率を決定し、その比率を達成するためにキャッシュフラッシングステップとホストコマンドとをインタリーブすることによって、ホストコマンドの実行のバランスをとる。キャッシュフラッシングステップは、ホスト書き込みコマンドを実行した後に記憶装置ビジー状態を維持し、この追加の時間を利用してキャッシュ記憶から主記憶へデータの一部をコピーすることによって実行されてもよい。この方法によってホストに提供される性能は低下するが、以前としてかなり高く、可能性として公示される連続速度よりもさらに高くすることもできる。
【図１】
0005443384.tif 000002
【図２】
0005443384.tif 000003
【図３】
0005443384.tif 000004
【図４】
0005443384.tif 000005
【図５】
0005443384.tif 000006