(57)【特許請求の範囲】
【請求項１】
ホストとメモリとの間のデータ転送をモニタリングすることと、
前記データ転送を評価して、その評価結果を提供することであって、前記評価することは、少なくとも、前記データ転送に関連する書き込み帯域幅及び書き込み増幅を評価することを含む、ことと、
少なくとも前記評価結果に基づき、別のデータ転送の書き込み帯域幅、書き込み増幅および記憶ユニットの数のうちの少なくとも一つを調整することと、
を含み、
前記調整することは、
前記書き込み帯域幅が最低許容書き込み帯域幅よりも小さく、かつ、前記書き込み増幅が、許容できる範囲内にある場合に、前記別のデータ転送を処理するために割り当てられる前記記憶ユニットの数を増加させることと、
前記書き込み帯域幅が前記最低許容書き込み帯域幅よりも大きく、かつ、前記書き込み増幅が前記許容できる範囲外にある場合に、前記別のデータ転送を処理するために割り当てられる前記記憶ユニットの数を減少させることと、
を含む、方法。
【請求項２】
前記データ転送が、前記メモリへの書き込み又は前記メモリからの読み取りのうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項３】
前記ホストがメモリアクセス装置を含み、前記メモリが、フラッシュメモリを含む不揮発性メモリを含む、請求項１に記載の方法。
【請求項４】
前記ホストが、データ転送帯域幅、および／または、許容できる書き込み増幅の範囲を指定する、請求項１に記載の方法。
【請求項５】
前記データ転送を評価することが、前記データ転送の特性を評価することを更に含み、
前記特性が、前記書き込み増幅と、前記書き込み帯域幅と、前記データ転送のサイズ、再利用帯域幅、または読み取り帯域幅のうちの少なくとも１つと、を含む、請求項１に記載の方法。
【請求項６】
一定の期間に渡って、前記評価された特性に関連する値を格納することをさらに含み、前記期間が、前記データ転送に関連するトラフィック量に依存する、請求項１に記載の方法。
【請求項７】
少なくとも前記特性に関連する前記値に基づいて統計値を決定することをさらに含む、請求項６に記載の方法。
【請求項８】
前記統計値が平均値を含む、請求項７に記載の方法。
【請求項９】
前記評価することが、前記特性の値および／または前記統計値のうちの少なくとも１つを、ターゲット値と比較することを含む、請求項８に記載の方法。
【請求項１０】
前記提供された評価結果が、前記特性の値および／または前記統計値のうちの少なくとも１つが前記ターゲット値を満足するか否かを示す、請求項９に記載の方法。
【請求項１１】
前記提供された評価結果が、前記特性が改善を示しているか否かを示す、請求項５に記載の方法。
【請求項１２】
前記調整することが、前記別のデータ転送の特性を調整することを含む、請求項１に記載の方法。
【請求項１３】
前記別のデータ転送の特性を調整することが、前記別のデータ転送を処理するために割り当てられる前記記憶ユニットの数を調整することを含む、請求項１２に記載の方法。
【請求項１４】
前記別のデータ転送を処理するために割り当てられる前記記憶ユニットの数を調整することが、前記評価結果に基づき、前記数を変更しないことを含む、請求項１３に記載の方法。
【請求項１５】
ホストとメモリとの間のデータ転送をモニタリングするためのモニタリングモジュールと、
前記データ転送に関連する少なくとも書き込み帯域幅及び書き込み増幅を評価して、その評価結果を提供する評価モジュールと、
少なくとも前記評価結果に基づき、別のデータ転送の書き込み帯域幅、書き込み増幅および記憶ユニットの数のうちの少なくとも一つを調整するための調整モジュールと、
を備え、
前記調整モジュールは、
前記書き込み帯域幅が最低許容書き込み帯域幅よりも小さく、かつ、前記書き込み増幅が、許容できる範囲内にある場合に、前記別のデータ転送を処理するために割り当てられる前記記憶ユニットの数を増加させ、また、
前記書き込み帯域幅が前記最低許容書き込み帯域幅よりも大きく、かつ、前記書き込み増幅が前記許容できる範囲外にある場合に、前記別のデータ転送を処理するために割り当てられる前記記憶ユニットの数を減少させる、記憶装置コントローラ。
【請求項１６】
前記モニタリングモジュールが、前記データ転送の特性をモニタリングするためのモジュールであり、前記特性が、前記書き込み増幅と、前記書き込み帯域幅と、前記データ転送のサイズ、再利用帯域幅、および／または読み取り帯域幅のうちの少なくとも１つと、を含む、請求項１５に記載のコントローラ。
【請求項１７】
一定の期間に渡って前記特性の値を格納するためのメモリをさらに備え、前記期間が、前記データ転送に関連するトラフィック量に依存する、請求項１６に記載のコントローラ。
【請求項１８】
前記評価モジュールが、前記期間に渡って格納された前記特性の値を取り出すためのモジュールである、請求項１７に記載のコントローラ。
【請求項１９】
前記評価モジュールが、１つまたはそれ以上のプロセッサを備える、請求項１５に記載のコントローラ。
【請求項２０】
前記評価モジュールが、前記特性の値に関連した統計値を決定するためのモジュールであり、前記統計値が平均値を含む、請求項１７に記載のコントローラ。
【請求項２１】
前記評価モジュールが、前記特性の値および／または前記統計値のうちの少なくとも１つをターゲット値と比較するためのモジュールである、請求項２０に記載のコントローラ。
【請求項２２】
前記評価モジュールが、前記特性の値および／または前記統計値のうちの少なくとも１つが前記ターゲット値を満足するか否かを判断するためのモジュールである、請求項２１に記載のコントローラ。
【請求項２３】
前記評価モジュールが、前記特性の値のうちの少なくとも１つが改善を示しているか否かを判断するためのモジュールである、請求項１７に記載のコントローラ。
【請求項２４】
前記調整モジュールが、前記特性の値および／または前記統計値に対するターゲット値を達成するよう、いくつかの遷移において前記記憶ユニットの数を調整するためのモジュールであって、遷移情報が、メモリに格納され、かつ、調整効率を改善するために使用される、請求項１５に記載のコントローラ。
【請求項２５】
前記記憶ユニットがメモリブロックを含む、請求項１５に記載のコントローラ。
【請求項２６】
メモリアクセス装置と、
前記メモリアクセス装置に結合された記憶装置と、
を備えるシステムであって、
前記記憶装置は、
メモリと、
前記メモリアクセス装置と前記メモリとの間のデータ転送をモニタリングするためのモニタリングモジュールと、
前記データ転送に関連する少なくとも書き込み帯域幅及び書き込み増幅を評価して、その評価結果を提供する評価モジュールと、
少なくとも前記評価結果に基づき、別のデータ転送の書き込み帯域幅、書き込み増幅および記憶ユニットの数のうちの少なくとも一つを調整するための調整モジュールと、
を備え、
前記調整モジュールは、
前記書き込み帯域幅が最低許容書き込み帯域幅よりも小さく、かつ、前記書き込み増幅が許容できる範囲内にある場合に、前記別のデータ転送を処理するために割り当てられる前記記憶ユニットの数を増加させ、また、
前記書き込み帯域幅が前記最低許容書き込み帯域幅よりも大きく、かつ、前記書き込み増幅が前記許容できる範囲外にある場合に、前記別のデータ転送を処理するために割り当てられる前記記憶ユニットの数を減少させる、システム。
【請求項２７】
前記メモリが、フラッシュメモリを含む不揮発性メモリを含む、請求項２６に記載のシステム。
【請求項２８】
命令を格納する機械可読媒体であって、
前記命令が１つまたはそれ以上のプロセッサによって実行される場合に、
前記命令は、
ホストとメモリとの間でのデータ転送をモニタリングすることと、
前記データ転送に関連する少なくとも書き込み帯域幅及び書き込み増幅を評価して、その評価結果を提供することと、
少なくとも前記評価結果に基づき、別のデータ転送の書き込み帯域幅、書き込み増幅および記憶ユニットの数のうちの少なくとも一つを調整することと、
を実行し、
前記調整することは、
前記書き込み帯域幅が最低許容書き込み帯域幅よりも小さく、かつ、前記書き込み増幅が許容できる範囲内にある場合に、前記別のデータ転送を処理するために割り当てられる前記記憶ユニットの数を増加させることと、
前記書き込み帯域幅が前記最低許容書き込み帯域幅よりも大きく、かつ、前記書き込み増幅が前記許容できる範囲外にある場合に、前記別のデータ転送を処理するために割り当てられる前記記憶ユニットの数を減少させることと、
を含む、機械可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
〔関連出願〕
本特許出願は、２００９年７月６日に出願された米国特許出願第１２／４９８，１５１号からの利益の優先権を主張し、その内容が参照により本明細書に組み込まれる。
【背景技術】
【０００２】
電子機器は、通常、大容量記憶装置など、それらが利用可能な一種のメモリシステムを有する。一般的な例は、ハードディスクドライブ（ＨＤＤ）である。ＨＤＤは、比較的低コストで大容量記憶を可能にし、現在のコンシューマ向けＨＤＤでは、１テラバイト以上の容量が利用可能である。ＨＤＤは、一般に、回転磁気媒体またはディスク（ｐｌａｔｔｅｒ）上にデータを格納する。実際には、結果として生じるデータ信号はアナログ信号であって、その山と谷がデータパターンの磁束反転の結果である。
【０００３】
ＨＤＤは、その機械的な本質に起因して、ある欠点を有する。ＨＤＤは、衝撃、振動または強磁場が原因で、ダメージを受けやすいか、または過度の読み取り書き込みエラーを起こしやすい。さらに、それらは、携帯用電子機器で、比較的大量の電力を消費する。大容量記憶装置のもう１つの例は、ソリッドステートドライブ（ＳＳＤ）である。回転媒体上にデータを格納する代わりに、ＳＳＤは、それらのデータを格納するために、半導体メモリ装置を利用するが、多くの場合、それらのホストシステムに対して、それらがあたかも典型的なＨＤＤであるかのように見えるようにするインタフェースおよびフォームファクタを含む。SSDの記憶装置は非揮発性のフラッシュ記憶装置を含み得る。
【発明の概要】
【０００４】
本開示の技術のいくつかの実施形態は、例として示されており、添付の図に限定されるものではない。
【図面の簡単な説明】
【０００５】
【図１】本発明の様々な実施形態に従い、ソリッドステートドライブ（ＳＳＤ）へのデータ書き込みを管理するためのシステムを示す概略図である。
【図２】本発明の様々な実施形態に従い、データ書き込みを管理するように構成されたＳＳＤを示す概略図である。
【図３】本発明の様々な実施形態に従い、データ書き込みを管理するように構成されたＳＳＤコントローラのモジュールを示す概略図である。
【図４】本発明の様々な実施形態に従い、ＳＳＤへのデータ書き込みの管理に関与するいくつかの変数のリストを示す表である。
【図５】本発明の様々な実施形態に従い、図４に示す表の変数における変化を示すグラフである。
【図６】本発明の様々な実施形態に従い、ＳＳＤのデータ書き込み管理のためのアルゴリズムの実装を示す状態図である。
【図７】本発明の様々な実施形態に従い、ＳＳＤのデータ書き込み管理の方法を示す流れ図である。
【図８】本発明の様々な実施形態に従い、ＳＳＤのデータ書き込み管理のためのシステム例を示す概略図である。
【発明を実施するための形態】
【０００６】
データ転送管理のための方法およびシステムの例が説明される。説明のための次の記述では、実施形態例に対する理解を与えるために、例固有の詳細を有する多数の例が示される。しかし、当業者には、本例が、これら例固有の詳細がなくても、かつ／または本明細書で提供されるものとは異なる組み合わせの詳細でも、実施され得ることが明白であろう。
【０００７】
本明細書で説明されるいくつかの実施形態例は、ホストとメモリ間のデータ転送（例えば、データ書き込み）のモニタリングを含み得る。データ転送プロファイルが評価され得、評価結果が提供され得る。将来のデータ転送が、その評価結果に基づき調整され得る。本文書では、データ転送プロファイルは、以下でより詳細に説明される通り、例えば、データ転送サイズ（例えば、転送されるバイト数）、書き込み増幅（ｗｒｉｔｅ  ａｍｐｌｉｆｉｃａｔｉｏｎ）値、および書き込み帯域幅（ｗｒｉｔｅ  ｂａｎｄｗｉｄｔｈ）に関連する１つまたは複数の値などを含む。
【０００８】
図１は、本発明の様々な実施形態に従った、ソリッドステートドライブ（ＳＳＤ）１１０へのデータ書き込み管理のためのシステム１００を示す概略図である。システム１００は、プロセッサ１２０などのメモリアクセス装置と通信するＳＳＤ １１０を含み得る。システム１００は、例えば、プロセッサ１２０を経由して、ＳＳＤ １１０の操作を制御する、ＳＳＤ １１０のホストシステムと見なされ得る。システム１００は、ＳＳＤ １１０にアクセスするために、１つまたは複数のアプリケーション（ホストアプリケーション）を使用し得る。システム１００のいくつかの例は、パーソナルコンピュータ、ラップトップコンピュータ、携帯情報端末（ＰＤＡ）、デジタルカメラ、コンピュータゲーム、デジタルメディアプレーヤ／レコーダ、および同種類のものを含み得る。
【０００９】
プロセッサ１２０は、ディスクドライブコントローラまたは他の外部プロセッサを含み得る。プロセッサ１２０は、通信バス１３０を経由してＳＳＤ  １１０と通信し得る。通信バス１３０は、プロセッサ１２０をＳＳＤ  １１０と接続するために、周知のプロトコルを使用し得る。通信バス１３０のタイプは、システム１００で利用されているドライブインタフェースのタイプによって決まり得る。従来型のディスクドライブインタフェースバスプロトコルのいくつかの例は、Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）、Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ（ＡＴＡ）、シリアルＡＴＡ（ＳＡＴＡ）、パラレルＡＴＡ（ＰＡＴＡ）、ファイバチャネルおよび小型コンピュータシステムインタフェース（ＳＣＳＩ）である。他のドライブインタフェースも存在し、当技術分野で周知である。ＳＳＤ  １１０のメモリ装置は、不揮発性フラッシュメモリ装置を含み得る。ＳＳＤ  １１０の特徴が、データ書き込み管理に関連して、以下でより詳細に説明される。
【００１０】
図２は、本発明の様々な実施形態に従い、データ書き込みを管理するように構成されたＳＳＤ  １１０を示す概略図である。ＳＳＤ  １１０は、通信バス１３０（図１）を経由してホスト（例えば、図１のプロセッサ１２０、またはホストアプリケーション）との通信を可能にするインタフェース２３０に結合されているコントローラ２１０を含み得る。インタフェース２３０は、当業者には周知の多数のコネクタの１つであり得る。これらインタフェース２３０コネクタのいくつかの例は、ＩＤＥ、拡張ＩＤＥ、ＡＴＡ、ＳＡＴＡ、およびＰｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ（ＰＣＭＣＩＡ）コネクタを含み得る。
【００１１】
ＳＳＤ  １１０内のメモリは、複数の記憶装置に構成され得、各々が、フラッシュメモリ装置など、１つまたは複数のメモリ装置を含む。メモリ装置内の記憶域は、ブロックにグループ分けされ得る。フラッシュメモリ装置では、１２８キロバイト（ＫＢ）、２５６ＫＢおよび５１２ＫＢの記憶容量を持つブロックが一般的である。ホストは、データ読み取り／書き込み操作のために、どのフラッシュメモリ装置が現在アドレス指定されているかを意識していない可能性がある。つまり、ホストは、実際のデータ転送（例えば、読み取りまたは書き込み）でアクセスされている、どの物理ブロックアドレス（ＰＢＡ）も知らない。ホストは単に、論理ブロックアドレス（ＬＢＡ）を処理するだけで、これがＰＢＡに変換される。ＬＢＡからＰＢＡへのこの変換は、ＳＳＤ  １１０が、論理アドレスを指定したデータ転送要求を受信した後、ＳＳＤ  １１０内で起こり得る。
【００１２】
フラッシュメモリ装置では、新規のデータを書き込む前に、その新規データ用に場所を空けるために、１ブロックのメモリが消去される。例えば、ホストが４ＫＢだけのデータ書き込みを要求すると、４ＫＢのデータを収容するために、１ブロックのメモリ（例えば、１２８ＫＢ）が消去される。その要求を処理するために２つの記憶装置（各々が、１２８ＫＢの記憶容量を持つブロックからそれぞれ構成される）が割り当てられる場合には、４ＫＢのデータを収容するために、２ブロック（２つの割り当てられた記憶装置の各々から１つ）が消去される。
【００１３】
消去時間が、フラッシュメモリ装置のアクセス時間を遅くする主要な要因を構成し得る。従来型のメモリ装置では、データは、フラッシュメモリ内の記憶域に有限数回、書き込むことができる。書き込み可能な回数が大規模（通常、１０，１００〜１００，０００）であっても、同じ位置に繰り返し書き込むと、その位置が摩耗（ｗｅａｒ）し得る。従って、摩耗量を均一にするため、データ書き込みを利用可能な記憶域全体に均一に分散するのが賢明である。ウェアレベリングは、コントローラ２１０（ＳＳＤコントローラとも呼ばれる）が管理に対して責任を持つタスクの１つと考えられる。
【００１４】
データをＳＳＤ １１０の複数の位置に格納し、ホスト１２０から隠して、ＳＳＤ １１０に対してデータの書き込みおよび取り出しを行うための大量の操作が実行され得る。データが次第にフラグメンテーションを生じるに従い、データを適切に書き込むための十分なサイズのメモリブロックが不足し得る。この時点で、ＳＳＤ １１０への追加の書き込みを可能にするために、メモリブロックを再利用するため、データ再利用（当業者によりガーベッジコレクションとも呼ばれる）プロシージャが使用される。データがＳＳＤ １１０内で物理的に頻繁に移動されるほど、プログラムの消去サイクルが原因でドライブがより速く摩耗し得る。
【００１５】
一実施形態例では、ホストのデータ転送要求を処理する際に、ホストは、コントローラ２１０によって考慮される、データ転送帯域幅（例えば、最低許容書き込み帯域幅などの書き込み帯域幅、または読み取り帯域幅など）を指定し得る。「データ転送帯域幅（ｄａｔａ  ｔｒａｎｓｆｅｒ  ｂａｎｄｗｉｄｔｈ）」という用語は、単位時間当たりに転送されるデータ量を含むと解釈されるべきであり、通常、キロビット／秒（Ｋｂ／ｓ）またはメガビット／秒（Ｍｂ／ｓ）で表される。データ転送要求を処理するために、より多くの記憶装置２２０を割り当てる（例えば、データ転送要求の処理に使用されるブロックを持ち得る記憶装置の数を確立する）ことにより、より大規模のデータ転送帯域幅が得られる。
【００１６】
コントローラ２１０にとって関係のある別の変数は、書き込み増幅（ＷＡ：ｗｒｉｔｅ ａｍｐｌｉｆｉｃａｔｉｏｎ）である。「書き込み増幅」という用語は、例えば、データ書き込み処理に使用するために割り当てられたメモリサイズの、その要求を処理するために割り当てられたメモリへ書き込まれた実際のデータサイズに対する比を指す。例えば、４ＫＢのデータのＳＳＤ １１０への書き込みは、コントローラ２１０が、使用可能な最少数の記憶装置（記憶ユニット）で、つまり、メモリの１つの記憶装置（記憶ユニット）で書き込み操作を処理するという結果になり、それは、例えば、１２８ＫＢを格納できる１ブロックを含み得る。この場合、書き込み要求を構成する４ＫＢの実際のデータだけがそのブロックに書き込まれるとしても、１つの割り当てられた記憶装置（記憶ユニット）２２０の１２８ＫＢデータブロック内の記憶域が消去される。これは、ＷＡが１２８／４、すなわち３２、という結果になり、それは、望ましくないかもしれない。
【００１７】
より低いＷＡ値でのＳＳＤ １１０による操作は、ＳＳＤ １１０内のメモリ装置のより効率的な使用に繋がり得る。より低いＷＡ値で操作すると、より均等に分散されたウェアレベリングにもなり得るが、同時に書き込み帯域幅も低くなり得る。それ故、ＳＳＤ １１０は、ホストによって指定される書き込み帯域幅と、そのデータ書き込みから生じるＷＡとの間のトレードオフに直面し得る。
【００１８】
ＳＳＤ  １１０は、このトレードオフに対処するように構成できる。例えば、ＳＳＤ  １１０は、以下に説明する実施形態に基づき、コントローラ２１０を使用して、記憶装置２２０の割り当てを調整することにより、このトレードオフを解決し得る。
【００１９】
図３は、本発明の様々な実施形態に従い、データ書き込みを管理するためのＳＳＤコントローラ２１０のモジュールを示す概略図である。図３に示すＳＳＤコントローラ２１０は、例えば、１つまたは複数のマイクロプロセッサを備え得る。ＳＳＤコントローラ２１０は、メモリ３１０、モニタリングモジュール３２０、評価モジュール３３０、および調整モジュール３４０を含み得る。モニタリングモジュール３２０、評価モジュール３３０、および調整モジュール３４０は、メモリ３１０、または図２の記憶装置２２０に格納されたソフトウェアモジュールを包含し得る。一実施形態例では、これらのモジュールは、ＳＳＤコントローラ２１０内の組み込みハードウェアとして実装され得る。
【００２０】
モニタリングモジュール３２０は、ホスト（例えば、図１のプロセッサ１２０、またはホストアプリケーション）と、図２の記憶装置２２０に構成されたメモリなどのメモリとの間のデータ転送をモニタリングする働きをし得る。例えば、モニタリングモジュール３２０は、データ転送サイズ（例えば、転送されるバイト数）、書き込み増幅（データ転送に関連するＷＡ）、およびそのデータ転送に関連する書き込み帯域幅（ＢＷ）など、１つまたは複数のデータ転送の特性をモニタリングする能力を有し得る。実施形態例では、再利用帯域幅（例えば、ガーベッジコレクション用に確保されたプロセッサ帯域幅）および読み取り帯域幅などの他の特性もモニタリングされ得る。
【００２１】
モニタリングモジュール３２０は、モニタリングした特性に関連する１つまたは複数の値をメモリ３１０に格納し得る。メモリ３１０は、１つまたは複数の構成レジスタの形式で使用されるスタティックランダムアクセスメモリ（ＳＲＡＭ）を含み得る。一実施形態例では、モニタリングモジュール３２０は、特性値を、図２の記憶装置２２０に構成されたフラッシュメモリ装置に格納し得る。格納された特性値は、ホストに関連付けられ得る。
【００２２】
一実施形態例では、評価モジュール３３０は、プロセッサ（例えば、マイクロプロセッサ）を備え得る。いくつかの実施形態では、モニタリングモジュール３２０および／または調整モジュール３４０も同じプロセッサを備え得る。評価モジュール３３０は、一定の期間に渡って記憶された特性値（特性の値）をメモリ３１０から取り出す働きをし得る。評価モジュール３３０は、少なくとも特性値に基づき、統計値を決定し得る。例えば、評価モジュール３３０は、一定の期間に渡って記憶されたＷＡまたは書き込み帯域幅の平均値を決定し得る。評価モジュール３３０は、一定の期間に渡るメモリ要求サイズの平均値も決定し得る。
【００２３】
評価モジュール３３０は、１つまたは複数の特性値および／または統計値（本明細書では、総称しておよび／または個別に、「データ転送プロファイル」と呼ぶ）を１つまたは複数のターゲット値と比較し得る。評価モジュール３３０は、例えば、平均ＷＡをターゲットＷＡと比較して、結果を調整モジュール３４０に報告し得る。一実施形態例では、評価モジュール３３０は、特性値（例えば、ＷＡ）が、以前の値に比べて改善を示していることを示し得る。
【００２４】
調整モジュール３４０は、図５に関連して、以下でより詳細に説明する通り、２つ以上の特性値および／または統計値の間の関係を評価して、将来のデータ転送を処理するために割り当てられる記憶装置（記憶ユニット）の数を調整するようなアルゴリズムを実施し得る。
【００２５】
当技術分野で周知のように、本開示の範囲から逸脱することなく、追加または異なるモジュールをＳＳＤ ２１０内で実施できる。しかし、本開示は、かかる追加のモジュールなしで理解され得る。
【００２６】
図４は、本発明の様々な実施形態に従った、図１のＳＳＤ １１０へのデータ書き込みの管理に関わるいくつかの変数の表４００である。表４００の変数は、メモリ要求サイズ（ＫＢ）、ＷＡ、およびデータ転送要求を処理するために割り当てられた記憶装置（記憶ユニット）の数（すなわち、ＬＵ）である。列４２０は、ホスト（例えば、図１のプロセッサ１２０またはホストアプリケーション）によって行われたいくつかの書き込み要求サイズをリストする。図２のコントローラ２１０は、データ書き込み用に、いくつかの記憶装置を割り当てることにより、各要求に応答し得る。列４３０、４４０、４５０、および４６０は、それぞれ、データ書き込み要求に対する２、４、６、および１０個の記憶装置（すなわち、２、４、６、および１０ ＬＵの各々から１ブロック）の割り当てから生じた対応するＷＡ値を表す。表４００では、記憶装置の各ブロックは、１２８ＫＢの記憶容量を持つと仮定される。他の容量も使用され得る。表４００のデータは、図５に示すグラフにも示されている。
【００２７】
図５は、本発明の様々な実施形態に従った、図４に示す表４００の変数における変化を示すグラフ５００である。グラフ５００は、データ書き込み要求を処理するために割り当てられた異なる数の記憶装置（記憶ユニット）に対するデータ書き込み要求サイズの関数として、ＷＡの変化を示す。曲線５１０、５２０、５３０、および５４０の各々毎に、割り当てられた記憶装置の対応する数が、ＬＵ＝２、４、６、および１０として、グラフの凡例に示されている。グラフ５００を見て分かるように、一般的な傾向は、要求されたデータ書き込みサイズの増加に伴って、ＷＡが減少する。小規模なデータ書き込み要求サイズ（例えば、１２８ＫＢ未満）に対して、コントローラ２１０は、単一の記憶装置（要求を処理するために、単一の記憶装置からの単一ブロックが使用される）を割り当てる以外に選択肢がない可能性がある。しかし、要求されたデータ書き込みのサイズが増加するに従って、コントローラ２１０は、より多くの選択肢を持ち得る。
【００２８】
例えば、要求されたデータ書き込みのサイズが５１２ＫＢに等しい場合、図２のコントローラ２１０は、４つの記憶装置を割り当て得、この場合、書き込み増幅は値１になる。そのデータ書き込み要求に対して８つの記憶装置を割り当てることを選択する場合、コントローラは、２の書き込み増幅を達成し得る。各記憶装置に対して１２８ＫＢの記憶容量を仮定すると、１〜２の好ましいＷＡは、１２８ＫＢより大きいデータ書き込み要求サイズで起こることが示されている。
【００２９】
図６は、本発明の様々な実施形態に従い、ＳＳＤデータ書き込み管理のためのアルゴリズムの実装を示す状態図６００である。図３の調整モジュール３４０は、状態図６００に示すアルゴリズムを実装し得る。状態図６００は、いくつかの状態およびその状態間の遷移を示す。その状態は、図２のコントローラ２１０による、図１のＳＳＤ  １１０へのデータ書き込みに関連する、書き込みＢＷおよびＷＡなどの、変数によって定義され得る。望ましい状態６１０では、書き込み帯域幅は、ＢＷ０より大きいと考えられ、好ましい書き込み増幅は、ＷＡ１より小さいと考えられる。書き込み増幅ＢＷ０に対する下限またはＷＡに対する許容範囲（例えば、ＷＡ１とＷＡ２の間）も、ホストによって指定され得る。例えば、ホストのユーザーは、７０％読み取り、書き込みの３０％および５００Ｍｂ／ｓの最小書き込みＢＷなど、望ましい書き込みスループットのターゲットを指定し得る。ユーザーは、そのターゲット値をＳＳＤコントローラ２１０（例えば、図３のメモリ３１０に）に格納し得る。
【００３０】
許容できる状態６２０では、書き込み帯域幅がＢＷ０より大きく、ＷＡが許容範囲内（例えば、ＷＡ２より小さく、かつ、ＷＡ１より大きい）である。アルゴリズムの目的は、他の全ての状態から、望ましい状態６１０または許容できる状態６２０に移行させることである。例えば、図３の調整モジュール３４０によって考えられている最初の状態は、状態６３０であると考えられ得る。この状態に入る前に、図２のコントローラ２１０は、図１のＳＳＤ １１０上のＮ０個の記憶装置を割り当てることにより、データ書き込み要求を処理している。かかる割り当ての結果は、図３のモニタリングモジュール３２０によってモニタリングされる通り、ＢＷ０より小さい書き込み帯域幅、およびＷＡ１より小さいＷＡである。この状況に基づき、調整モジュール３４０はその状態を調整し得る。
【００３１】
調整モジュール３４０は、データ書き込み要求に対してより多くの記憶装置を割り当てることにより、状況を調整しようとし得る。これにより、望ましい状態６１０、許容できる状態６２０、または、状態６４０など、別の状態への遷移を引き起こし得る。状態６４０で、ＷＡは許容範囲（許容できる範囲）内であるが、書き込み帯域幅はＢＷ０より小さい。書き込み帯域幅を増加するため、調整モジュール３４０は、さらに多くの記憶装置を割り当てることにより、状況を改善しようとし得る。より多くの記憶装置の割り当てると、望ましい状態６１０、許容できる状態６２０、または状態６５０に入るという結果になり得る。
【００３２】
状態６５０は、帯域幅は許容値（許容できる値）まで増加しているが、ＷＡは許容範囲外であるため、十分な数の記憶装置よりも多くを割り当てた結果と思われる。その状況は、図３の調整モジュール３４０に、割り当てられた記憶装置の数を減らさせ、その結果、望ましい状態６１０または許容できる状態６２０のいずれかに入ることになり得る。それは状態６６０に入ることにもなり得、これは、書き込み帯域幅および書き込み増幅のいずれも、状態６２０で指定された許容範囲内にないため、許容できない。従って、状態６６０からの次の遷移は、状態６５０に戻り、割り当てる記憶装置数に対して別の値（例えば、以前に試した値よりも大きな値）を試すことであろう。
【００３３】
実施形態例では、調整モジュール３４０は、記憶装置数に対して行われた調整や、各遷移の後のモニタリング結果（例えば、書き込みＢＷ、およびＷＡ）などの遷移情報を、図３のメモリ３１０に格納し得る。調整モジュール３４０は、その遷移情報を使用して、中間状態を回避することを試み、かつ、図６のそれぞれ望ましいまたは許容できる状態６１０および６２０に直接移行することにより、その効率を高め得る。それぞれ、望ましいまたは許容できる状態６１０および６２０への直接移行がいずれも可能でない状況では、調整モジュール３４０は、ＷＡ値を更に大幅に引き下げようとし得る。
【００３４】
図７は、本発明の様々な実施形態に従い、ＳＳＤデータ書き込み管理の方法７００を示す流れ図である。操作７１０で、図３のモニタリングモジュール３２０は、ホストと、図１のＳＳＤ  １１０の記憶装置２２０に構成されたメモリなどのメモリとの間のデータ転送をモニタリングし得る。モニタリングモジュール３２０は、一定の期間に渡ってデータ転送をモニタリングし得る。その期間は、データ転送に関連するトラフィック量によって決まり得る。図３の評価モジュール３３０は、操作７２０で、データ転送を評価して、評価結果を提供し得る。
【００３５】
評価結果は、ＷＡ，データ転送ＢＷ，および／または記憶装置数を含む、特性値を含み得る。いくつかの実施形態例では、特性値は追加または代替として、再利用帯域幅および読み取り帯域幅を含み得る。評価モジュール３３０は、少なくとも、特性値の平均値（例えば、一定の期間に渡る平均書き込み増幅）などのモニタリングした特性値に基づいて、統計値を決定し得る。
【００３６】
評価モジュール３３０は、特性値および／または統計値の少なくとも１つが、ホストによって指定された通り、１つまたは複数のターゲット値を満足するか否かを示す評価結果を提供し得る。分岐記号７３０で、評価結果が満足できる場合、制御は操作７１０に移る。そうでない場合は、操作７４０で、図３の調整モジュール３４０が、例えば、その評価結果に基づき、データ転送の特性の調整に使用され得る。アルゴリズムは、前述の通り、図３の調整モジュール３４０によって実装され得る。例えば、調整モジュール３４０は、書き込み帯域幅、書き込み増幅、および記憶装置数などの特性を調整する働きをする。
【００３７】
図３の調整モジュール３４０は、この操作を実行し得る。調整モジュール３４０は、前述の通り、評価結果に基づき、１つまたは複数のデータ転送の特性を変更するか、または特性を変更しないように機能し得る。例えば、データ書き込み要求を処理するために割り当てられた記憶装置（記憶ユニット）数が適切である場合（これは、入った状態が、それぞれ望ましいまたは許容できる状態６１０または６２０の場合に、適切であると判断される）、調整モジュール３４０は、割り当てられた記憶装置数を変更しない可能性がある。データ書き込み要求に対して割り当てられた記憶装置数が、（例えば、書き込みＢＷがＢＷ０より小さいことによって示されるように）適切でない場合、調整モジュール３４０は、書き込みＢＷを改善するために、より多くの記憶装置を割り当てることにより、その状況を改善し得る。
【００３８】
図８は、本発明の様々な実施形態に従い、ＳＳＤデータ書き込みを管理するためのシステム例８００を示す概略図である。システム８００は、プロセッサ８１０、メモリ８２０、メモリコントローラ８３０、グラフィックコントローラ８４０、および入出力（Ｉ／Ｏ）コントローラ８５０、ディスプレイ８５２、キーボード８５４、ポインティングデバイス８５６、および周辺機器８５８を含み得る。バス８６０がこれらの装置全てを連結する。クロック発生器８７０は、バス８６０を経由して、システム８００の少なくとも１つの装置にクロック信号を提供する。クロック発生器８７０の一例は、マザーボードなどの回路基板内の発振器を含み得る。システム８００に示す２つ以上の装置が単一チップ内に構成され得る。
【００３９】
メモリ８２０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックＲＡＭ、またはフラッシュメモリを含む不揮発性メモリを含み得る。バス８６０は、回路基板上の相互接続配線（ｉｎｔｅｒｃｏｎｎｅｃｔ  ｔｒａｃｅ）であり得るか、または１つまたは複数のケーブルであり得る。バス８６０はまた、システム８００の各装置を、例えば、電波などの電磁波放射によるなどの無線手段により、結合し得る。周辺機器８５８は、プリンタ、ディスクドライブ装置（例えば、ＣＤ−ＲＯＭおよびＤＶＤ読み取り装置および書き込み装置などの光デバイス、フロッピィディスクドライバなどの磁気デバイス読み取り装置および書き込み装置など）、またはマイクロホンなどのオーディオ装置を含み得る。
【００４０】
図８によって表されるシステム８００は、コンピュータ（例えば、デスクトップ、ラップトップ、ハンドヘルド、サーバー、Ｗｅｂアプライアンス、ルーター、など）、無線通信装置（例えば、携帯電話、コードレス電話、ポケットベル、携帯情報端末、など）、コンピュータ関連周辺機器（例えば、プリンタ、スキャナ、モニター、など）、娯楽機器（例えば、テレビ、ラジオ、ステレオ、テープおよびコンパクトディスクプレーヤ、ビデオカセットレコーダ／プレーヤ、ビデオカメラ、デジタルカメラ、ＭＰ３（Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ、Ａｕｄｉｏ  Ｌａｙｅｒ  ３）プレーヤ／レコーダ、テレビゲーム、時計、など）、および同種類のものを含み得る。
【００４１】
実施形態例では、周辺機器８５８は、本明細書で説明した１つまたは複数の方法または機能を具体化する１つまたは複数の命令セット（例えば、ソフトウェア）が格納されている機械可読媒体を含み得る。メモリ８２０およびプロセッサ８１０も機械可読媒体を備え、その命令は、コンピュータシステム８００によるその実行中にはメモリ８２０内および／またはプロセッサ８１０内にも、完全にまたは少なくともその一部が常駐し得る。
【００４２】
機械可読媒体は、実施形態例では単一媒体として示されているが、「機械可読媒体」という用語は、１つまたは複数の命令セットを格納する単一媒体または複数媒体（例えば、集中または分散データベース、および／または関連するキャッシュおよびサーバー）を含むと解釈されるべきである。「機械可読媒体」という用語はまた、機械で実行するための命令セットの格納、コード化、または持ち運びが可能であって、機械に本発明の任意の１つまたは複数の方法を実行させる任意の媒体を含むとも解釈されるべきである。「機械可読媒体」という用語は、従って、ソリッドステートメモリならびに光および磁気媒体を含むが、それらに限定されない、と解釈されるべきである。
【００４３】
ＳＳＤデータ書き込み操作を管理するための特定の方法およびシステムを説明してきたが、これらの実施形態に対して様々な修正および変更がなされ得ることは明らかであろう。それ故、明細書および図は、限定的意味ではなく、例示として考えられる。
【００４４】
発明の概要は、技術開示の本質を読者が素早く確認できるようにする要約を必要とする、米国特許規則３７  Ｃ．Ｆ．Ｒ．§１．７２（ｂ）に従うために提供されている。それは、特許請求の範囲の解釈または限定に使用されないという了解の下で提示されている。さらに、前述した発明の詳細な説明では、本開示を簡素化する目的で、様々な特徴が単一の実施形態にまとめられているのが見られるであろう。開示のこの方法は、特許請求の範囲を制限するものと解釈されてはならない。従って、次の特許請求の範囲は、各請求項がそのまま別個の実施形態として、本明細書により発明の詳細な説明に組み込まれる。
【図５】
0005758386.tif 000002
【図１】
0005758386.tif 000003
【図２】
0005758386.tif 000004
【図３】
0005758386.tif 000005
【図４】
0005758386.tif 000006
【図６】
0005758386.tif 000007
【図７】
0005758386.tif 000008
【図８】
0005758386.tif 000009