(57)【要約】  不揮発性のブロック記憶装置からのフィードバックに基づいて、不揮発性のブロック記憶装置を使用する処理装置に関して、Ｉ／Ｏパターンを適応させる方法及び装置が提供される。フィードバックは不揮発性のブロック記憶装置の状態を示す情報を含んでもよい。フィードバックを受信することに応答して、処理装置上で実行するオペレーティングシステムに含まれる記憶サブシステムは、不揮発性のブロック記憶装置に対する悪影響を回避もしくは低減するため又は不揮発性のブロック記憶装置の状況を向上させるために不揮発性のブロック記憶装置に関する挙動を変更してもよい。フィードバックは、不揮発性のブロック記憶装置の性能情報及び／又は動作環境情報を含んでもよい。不揮発性のブロック記憶装置がフィードバックを提供することができない場合、処理装置はデータベースサービスから不揮発性のブロック記憶装置に関する情報を要求してもよい。
2012533132.tif 000002
【特許請求の範囲】
【請求項１】
処理装置（１００）上で実行するオペレーティングシステム（１３４）に含まれる、記憶サブシステム（１３７）を不揮発性のブロック記憶装置（１４１、１４２）に適応させる、機械により実施される方法であって、
記憶サブシステムが、不揮発性のブロック記憶装置又はリモートソースのいずれかから、前記不揮発性のブロック記憶装置（５０２、４０６−４０８）に関する情報を得るステップと、
前記記憶サブシステムが、前記不揮発性のブロック記憶装置（５１６）に関する得られた情報に基づいて、前記不揮発性のブロック記憶装置にアクセスするために入出力パターンを適応させるステップと
を含む方法。
【請求項２】
前記不揮発性のブロック記憶装置に関する情報を得るステップは、
前記不揮発性のブロック記憶装置に関する性能特性に関するデータを、ネットワークを介してデータベースサービスから要求するステップと、
前記不揮発性のブロック記憶装置の性能特性に関するデータを前記データベースサービスから受信するステップと
をさらに含み、
前記不揮発性のブロック記憶装置にアクセスするために入出力パターンを適応させるステップは、
前記不揮発性のブロック記憶装置に関する性能特性に関する受信されたデータに基づいて複数の所定のプロファイルのうちの１つを選択するステップであって、前記複数の所定のプロファイルのうちの少なくともいくつかは、前記不揮発性のブロック記憶装置にアクセスするためのそれぞれの入出力パターンを定義する、ステップをさらに含む請求項１に記載の機械により実施される方法。
【請求項３】
前記不揮発性のブロック記憶装置に関する情報を得るステップは、
性能情報及び環境情報を含む情報の一群の種類からの少なくとも１つの種類の情報を前記不揮発性のブロック記憶装置から受信するステップをさらに含み、
前記不揮発性のブロック記憶装置にアクセスするために入出力パターンを適応させるステップは、
前記少なくとも１つの種類の受信された情報に基づいて複数の所定のプロファイルのうちの１つを現在のプロファイルとして設定するステップであって、前記複数の所定のプロファイルのうちの前記１つは、前記不揮発性のブロック記憶装置の状態を前記少なくとも１つの種類の情報によって示されるように最も密接に対処する、前記複数の所定のプロファイルの中からのプロファイルである、ステップをさらに含む請求項１に記載の機械により実施される方法。
【請求項４】
前記不揮発性のブロック記憶装置に関する情報を得るステップは、
前記不揮発性のブロック記憶装置にアクセスする場合に記憶サブシステムコンポーネントが適応するための入出力パターンを示す通信を、前記不揮発性のブロック記憶装置から受信するステップをさらに含む請求項１に記載の機械により実施される方法。
【請求項５】
前記不揮発性のブロック記憶装置にアクセスするために入出力パターンを適応させるステップは、
前記不揮発性のブロック記憶装置に関する前記受信される情報に基づいて複数の所定のプロファイルのうちの１つを選択するステップであって、前記複数の所定のプロファイルのうちの少なくともいくつかは、前記不揮発性のブロック記憶装置にアクセスするためのそれぞれの入出力パターンを定義する、ステップを含み、
前記複数の所定のプロファイルがそれぞれの複数の待ち行列方法に関連付けられる請求項１に記載の機械により実施される方法。
【請求項６】
前記複数の待ち行列方法のうちの１つは、
複数の入出力動作から入出力動作を集めるステップと、
前記集められた入出力動作を、単一の入出力動作として、前記不揮発性のブロック記憶装置上で実行するステップと
をさらに含む請求項５に記載の機械により実施される方法。
【請求項７】
前記不揮発性のブロック記憶装置に関する情報を得るステップは、
前記不揮発性のブロック記憶装置をポーリングするステップと、
前記ポーリングに応答して、前記不揮発性のブロック記憶装置に関する情報を得るステップとをさらに含む請求項１に記載の機械により実施される方法。
【請求項８】
前記不揮発性のブロック記憶装置に関する情報を得るステップは、
前記不揮発性のブロック記憶装置に関する情報を非同期に得るステップをさらに含む請求項１に記載の機械により実施される方法。
【請求項９】
請求項１乃至８のいずれか１項に記載の機械により実施される方法を実行するための命令を含む有形の機械読み取り可能な媒体（１３１、１３２）。
【請求項１０】
プロセッサー（２２０）と、
前記プロセッサーに接続された、データを格納することができる不揮発性の記憶媒体（２５０）と、
前記プロセッサーに対する命令を含む、前記プロセッサーに接続された静的記憶装置（２４０）とを備え、前記命令は、
処理装置からの動作のパターンを監視する命令（６０２）と、
前記処理装置にフィードバックを提供する命令であって、前記フィードバックは、前記不揮発性のブロック記憶装置への書き込みのパターンを調節するために前記処理装置によって使用することができる情報を含む、命令（６１０、６２０）と
を含む不揮発性のブロック記憶装置。
【請求項１１】
前記静的記憶装置は、
前記フィードバックに動作環境情報を含める命令をさらに含む請求項１０に記載の不揮発性のブロック記憶装置。
【請求項１２】
前記処理装置にフィードバックを提供する命令は、
ポーリングを受信することに応答して前記処理装置に前記フィードバックを提供する命令をさらに含む請求項１０に記載の不揮発性のブロック記憶装置。
【請求項１３】
前記フィードバックは、前記不揮発性のブロック記憶装置に対する悪影響を回避もしくは低減するために又は前記不揮発性のブロック記憶装置の状況を向上させるために使用する前記処理装置の特定の挙動を定義する、所定のプロファイルを含む請求項１０に記載の不揮発性のブロック記憶装置。
【請求項１４】
前記フィードバックは、前記不揮発性の記憶装置にアクセスする場合に前記処理装置によって使用されるべきでない１つ以上の入出力パターンについて記述する情報を含む請求項１０に記載の不揮発性の記憶装置。
【請求項１５】
前記静的記憶装置は、
前記不揮発性の記憶装置に対する悪影響を低減するために前記不揮発性の記憶媒体にアクセスするパターンを変更する命令をさらに含む請求項１０に記載の不揮発性記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性ブロック記憶装置から処理装置への健全性の報告（health reporting）に関する。
【背景技術】
【０００２】
[0001]不揮発性記憶装置は入出力パターンに敏感である。例えば、フラッシュ記憶装置において、所与の記憶ブロックに対して書き込みが過度に繰り返されると、結局は、当該所与の記憶ブロックがデータを格納する能力が破壊される。いくつかの既存の不揮発性のブロック記憶装置は、不揮発性のブロック記憶装置への悪影響を回避又は低減するために、様々な論理ブロックアドレス（ＬＢＡ）にわたって消去を広げるために摩耗平滑化（wear leveling）を使用する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、既存の不揮発性のブロック記憶装置は、通常、処理装置によって使用されるフラッシュセル及び入出力パターンの進行中の健全性に関して処理装置にフィードバックを提供しない。
【０００４】
[0002]現在、処理装置の記憶制御部は、処理装置上で実行するオペレーティングシステムの記憶サブシステムコンポーネントに設計された入出力パターンに従って、入出力ストリームを提示する。記憶サブシステムコンポーネントは、例えば、バッファーサイズ、又は他のパラメーターなどの、入出力ストリームのいくつかのパラメーターを調節してもよい。しかし、記憶サブシステムコンポーネントは、不揮発性のブロック記憶装置の現在の状態に入出力パターンを完全には適応させない。
【０００５】
[0003]オペレーティングシステムのいくつかの設計された記憶サブシステムコンポーネントは、接続される不揮発性のブロック記憶装置をブラックボックスとして扱う。そのような記憶管理コンポーネントは、接続される不揮発性のブロック記憶装置の応答性を測定してもよく、例えば、バッファーのサイズを変えたり及び／又はスレッドの数を増加させたりするなど、最小の適応的な動作（adaptive actions）を行ってもよい。
【課題を解決するための手段】
【０００６】
[0004]この概要は、詳細な記載においてさらに以下に述べられる概念についての選択を単純化された形式で紹介するために提供される。この概要は、特許請求された主題の重要な特徴又は不可欠な特徴を識別するようには意図されず、特許請求された主題の範囲を限定するために使用されるようにも意図されない。
【０００７】
[0005]本開示の主題と一致する第１の実施例において、処理装置の記憶装置インターフェースと不揮発性のブロック記憶装置との間の通信のための方法が提供される。不揮発性のブロック記憶装置は、処理装置上で実行するオペレーティングシステムの記憶サブシステムコンポーネントにフィードバックを提供してもよい。当該フィードバックは、不揮発性のブロック記憶装置の状態を示す情報を含んでもよい。フィードバックを受信することに応答して、記憶サブシステムコンポーネントは、不揮発性のブロック記憶装置への悪影響を回避又は低減するために、不揮発性のブロック記憶装置に関して、挙動（behavior）を変更してもよい。
【０００８】
[0006]フィードバックは性能情報及び／又は動作環境情報を含んでもよい。記憶サブシステムコンポーネントは、受信されたフィードバックに含まれる情報を分析してもよく、異なるアクセスパターンを適応させたり、不揮発性のブロック記憶装置に関して処理装置の挙動を定義するプロファイルを変更したり、待ち行列に入れる方法を変更したり、待ち行列に入れる方法によって使用されるパラメーターを変更したり、又は不揮発性のブロック記憶装置への悪影響を低減するために別の動作を行ったり行わなかったりなど、挙動を変更してもよい。
【０００９】
[0007]第１の実施例の変形では、記憶サブシステムコンポーネントは、フィードバックを受信するために不揮発性のブロック記憶装置をポーリングしてもよい。第１の実施例の第２の変形において、不揮発性のブロック記憶装置は、記憶管理コンポーネントに対して非同期にフィードバックを提供してもよい。
【００１０】
[0008]いくつかの実施例において、記憶サブシステムコンポーネントは、不揮発性のブロック記憶装置が処理装置にフィードバックを提供することができないことを決定してもよい。不揮発性のブロック記憶装置が処理装置にフィードバックを提供することができないと記憶サブシステムコンポーネントが決定する場合、オペレーティングシステムは、リモートサーバー上で実施されるデータベースサービスからの不揮発性のブロック記憶装置に関する情報を要求してもよい。リモートサーバーは、不揮発性のブロック記憶装置の性能特性を含む情報を提供してもよい。データベースサービスが不揮発性のブロック記憶装置に関して直接的な一致を見つけることができない場合、リモートサーバーは、オペレーティングシステムからの要求に応答して、包括的なプロファイルを提供してもよく、又は不揮発性のブロック記憶装置との類似性に基づいて、プロファイルを選択してもよい。性能特性は、使用する入出力パターン、使用する待ち行列に入れる方法、回避する入出力パターン及び回避する待ち行列に入れる方法を含んでもよいが、これらに限定されない。
【００１１】
[0009]上記の並びに他の利点及び特徴を得ることができる方法について記載するために、より具体的な記載が以下に述べられ、添付の図面に示されるその特定の実施例への言及によって与えられる。これらの図面が例示的な実施例のみを示すものであって、したがってその範囲について限定していると考えるべきでないことを理解されたい。実施例は添付の図面の使用を通じてより具体的に且つ詳細に記載され、説明される。
【図面の簡単な説明】
【００１２】
【図１】[0010]本開示の主題と一致する実施例を実施するために使用されてもよい例示的な処理装置のブロック図である。
【図２】[0011]本開示の主題と一致する実施例を実施するために使用されてもよい例示的な不揮発性のブロック記憶装置のブロック図である。
【図３】[0012]本開示の主題と一致する実施例のための例示的な動作環境を示す。
【図４】[0013]様々な実施例において処理装置で実行され得る例示的な処理を示すフローチャートである。
【図５】様々な実施例において処理装置で実行され得る例示的な処理を示すフローチャートである。
【図６】[0014]様々な実施例において不揮発性のブロック記憶装置中で行われてもよい処理を示すフローチャートである。
【発明を実施するための形態】
【００１３】
[0015]実施例が詳細に以下に説明される。特定の実施例が議論されるが、これは例示の目的だけのためになされることが理解されるべきである。当業者であれば、他のコンポーネント及び構成が、本開示の主題の趣旨及び範囲から逸脱することなく使用されてもよいことを認識するであろう。
概観
[0016]本開示の主題と一致する実施例においては、不揮発性のブロック記憶装置が処理装置上で実行するオペレーティングシステムの記憶サブシステムコンポーネントに情報を提供し得るような方法及び装置が開示される。情報は、不揮発性のブロック記憶装置に対する悪影響を低減するため又は不揮発性のブロック記憶装置の態様（状況、特徴、aspect）を向上させるために、入出力（Ｉ／Ｏ）パターンに対する所望の変更を示してもよい。
【００１４】
[0017]本開示の主題と一致する第１の実施例において、処理装置上で実行するオペレーティングシステムの記憶サブシステムコンポーネントは、不揮発性のブロック記憶装置に関する情報を得るために、不揮発性のブロック記憶装置をポーリングしてもよい。第２の実施例において、不揮発性のブロック記憶装置は、記憶管理コンポーネントに情報を非同期に提供してもよい。
【００１５】
[0018]１つの実施例において、不揮発性のブロック記憶装置は、不揮発性のブロック記憶装置を使用する場合に記憶サブシステムコンポーネントが従ってもよい多くの所定のプロファイルのうちの１つを使用するという指示を記憶サブシステムコンポーネントに提供してもよい。所定のプロファイルのうちの少なくともいくつかは、例えば、不揮発性のブロック記憶装置と通信する場合に記憶管理コンポーネントが従ってもよい書き込みパターンなどの、関連付けられたＩ／Ｏパターンを有していてもよい。
【００１６】
[0019]別の実施例において、所定のプロファイルは、不揮発性のブロック記憶装置への悪影響を回避又は低減するための、例えば、記憶サブシステムコンポーネントが不揮発性のブロック記憶装置へあまりにも多くの短いデータ書き込みを送信していることを示す情報又は他の情報などの情報を含んでもよい。
【００１７】
[0020]不揮発性のブロック記憶装置は、状態情報、不揮発性のブロック記憶装置への悪影響を回避又は低減するための情報、又は不揮発性のブロック記憶装置の特徴を向上させるための情報を提供することができなくてもよい。処理装置上で実行するオペレーティングシステムは、ネットワークを介してデータベースサービスから、不揮発性のブロック記憶装置に関する情報を要求し受信してもよい。情報は、例えば、不揮発性のブロック記憶装置に書き込みをする場合に記憶サブシステムコンポーネントが使用し得る特定の書き込みパターンのほか他の情報などの、不揮発性のブロック記憶装置の性能特性を含んでもよい。
【００１８】
[0021]代替的に、記憶サブシステムコンポーネントは、記憶サブシステムコンポーネント自体内のハードコードされたテーブルから不揮発性のブロック記憶装置の性能特性を得てもよい。記憶サブシステムコンポーネントに書き込みがなされていた間、当該テーブルは実証的事実（empirical findings）から構築されてもよい。
例示的な処理装置
[0022]図１は、本開示の主題と一致する実施例を実施するために使用され得る例示的な処理装置１００のブロック図である。処理装置１００は、パーソナルコンピューター（ＰＣ）、携帯型の処理装置又は別の種類の処理装置であってもよい。処理装置１００は、中央処理装置（ＣＰＵ）１２０、システムバス１２１、システムメモリー１３０、記憶装置インターフェース１４０及びネットワークインターフェース１７０を含んでもよい。
【００１９】
[0023]記憶装置インターフェース１４０は不揮発性記憶装置１４９とインターフェースしてもよい。ネットワークインターフェース１７０は一般的なネットワーク接続１７１を介してネットワーク１８０とインターフェースしてもよい。
【００２０】
[0024]ＣＰＵ１２０は、命令を解釈し実行する１つ以上の従来のプロセッサーを含んでもよい。
[0025]システムメモリー１３０は読み取り専用メモリー（ＲＯＭ）１３１及びランダム・アクセス・メモリー（ＲＡＭ）１３２を含んでもよい。ＲＯＭ１３１又は別の種類の静的記憶装置はＣＰＵ１２０のための静的情報及び命令を格納してもよい。ＲＡＭ１３２又は別の種類の動的記憶装置は、ＣＰＵ１２０による命令の実行中に使用される、命令のほか、一時的な変数（temporary variables）又は他の中間情報を格納してもよい。
【００２１】
[0026]ＲＯＭ１３１は、例えば、基本入出力システム（ＢＩＯＳ）１３３などのファームウェアを含んでもよい。ＢＩＯＳ１３３は、処理装置のモニター及びディスクドライブなどの様々なコンポーネントの間のデータ転送をサポートするために処理装置のハードウェアによって機能する、ルーチンの組を含んでもよい。
【００２２】
[0027]ＲＡＭ１３２は、オペレーティングシステム１３４、ＣＰＵ１２０のための命令の組を含み得るプログラムモジュール１３５、及びプログラムデータ１３６を含んでもよい。したがって、ＣＰＵ１２０は、ＲＡＭ１３２、ＲＯＭ１３１、ハードディスク、コンパクトディスク（ＣＤ）、フラッシュＲＡＭ又は他の有形の機械読み取り可能な媒体などの有形の機械読み取り可能な媒体に格納された命令を実行してもよい。
【００２３】
[0028]オペレーティングシステム１３４は、システムバス１２１及び記憶装置インターフェース１４０を介して不揮発性記憶装置１４９と通信するために記憶サブシステム１３７を含んでもよい。
【００２４】
[0029]システムバス１２１は、ＣＰＵ１２０、システムメモリー１３０、記憶装置インターフェース１４０及びネットワークインターフェース１７０に接続して、それらの間の通信を可能にしてもよい。
【００２５】
[0030]不揮発性記憶装置１４９は、磁気ディスク１４１、フラッシュＲＡＭ装置１４２及び／又は他の種類の不揮発性記憶装置を含んでもよい。不揮発性記憶装置１４９は、例えば、オペレーティングシステム１４４、プログラムモジュール１４５及びプログラムデータ１４６のほか、他の情報などの情報を格納してもよい。
【００２６】
[0031]ネットワーク１８０は有線又は無線のネットワークであってもよく、有線又は無線の手段を介して接続される多くの装置を含んでもよい。ネットワーク１８０はたった１つのネットワーク又は多くの異なるネットワークを含んでもよく、それらのうちのいくつかは異なる種類のネットワークであってもよい。ネットワーク１８０は、パケット交換ネットワーク、無線ネットワーク、ＡＴＭネットワーク、フレームリレーネットワーク、光ネットワーク、公衆交換電話ネットワーク（ＰＳＴＮ）、衛星ネットワーク、インターネット、イントラネット、他の種類のネットワーク又は上記のものの任意の組み合わせを含んでもよい。
【００２７】
[0032]図２は、本開示の主題と一致する実施例において使用され得る不揮発性のブロック記憶装置１４９のうちの１つの例示的なブロック図である。不揮発性のブロック記憶装置１４９は、バス２１０、プロセッサー２２０、ＲＡＭ２３０、ＲＯＭ２４０、不揮発性の媒体２５０、通信インターフェース２６０及び１つ以上のセンサー２７０を含んでもよい。バス２１０は、プロセッサー２２０、ＲＡＭ２３０、ＲＯＭ２４０、不揮発性の媒体２５０、通信インターフェース２６０及びセンサー２７０を接続してもよい。
【００２８】
[0033]プロセッサー２２０は、命令を解釈し実行する１つ以上のプロセッサーを含んでもよい。ＲＡＭ２３０又は別の種類の動的記憶装置は、プロセッサー２２０による命令の実行中に使用される、命令のほか、一時変数又は他の中間情報を格納してもよい。ＲＯＭ２４０又は別の種類の静的記憶装置はプロセッサー２２０のために静的情報及び命令を格納してもよい。様々な実施例において、以前に記載されたように、ＲＯＭ２４０は、不揮発性の媒体２５０に関して、処理装置の動作を監視するための、及び処理装置へ情報又はフィードバックを提供するための命令又はファームウェアを含んでもよい。
【００２９】
[0034]不揮発性の媒体２５０は、例えば、フラッシュＲＡＭ、ディスク、又は他の不揮発性の媒体などの、ブロックにデータを格納することができる任意の不揮発性の媒体であってもよい。
【００３０】
[0035]通信インターフェース２６０は、コマンドプロトコルを運ぶ記憶バスを駆動し得るプログラム可能なホスト制御部インターフェースを介して、記憶装置インターフェース１４０に不揮発性のブロック記憶装置１４９のうちの１つへのアクセスを提供するためのインターフェースであってもよい。
【００３１】
[0036]センサー２７０は、例えば、温度センサー、振動センサー、加速度計又は他の種類のセンサーなどの、環境条件を監視して報告する１つ以上のセンサーを含んでもよい。センサー２７０は、接続されている処理装置に対して環境条件に関する情報をプロセッサー２２０が報告し得るように、ＲＡＭ２３０、不揮発性の媒体２５０又は他の動的記憶装置へと、環境条件に関する情報を収集してもよい。
例示的な動作環境
[0037]図３は、本開示の主題と一致する実施例の例示的な動作環境３００を示す。動作環境３００は、ネットワーク３０２、ネットワーク３０２に接続された処理装置１００、処理装置１００が接続される不揮発性のブロック記憶装置（ＢＳＤ）３０６、及びネットワーク３０２に接続されたサーバー３０４を含んでもよい。
【００３２】
[0038]ネットワーク３０２は有線又は無線のネットワークであってもよいし、有線又は無線の手段を介して接続される多くの装置を含んでもよい。ネットワーク３０２はたった１つのネットワーク又は多くの異なるネットワークを含んでもよく、それらのうちのいくつかは異なる種類のネットワークであってもよい。ネットワーク３０２は、パケット交換ネットワーク、無線ネットワーク、ＡＴＭネットワーク、フレームリレーネットワーク、光ネットワーク、公衆交換電話ネットワーク（ＰＳＴＮ）、衛星ネットワーク、インターネット、イントラネット、他の種類のネットワーク又は上記のものの任意の組み合わせを含んでもよい。
【００３３】
[0039]１つの実施例において、処理装置１００は、ＢＳＤ３０６に関する情報を要求するために、ネットワーク３０２を介して、サーバー３０４と連絡をとってもよい。サーバー３０４は、不揮発性のブロック記憶装置に関するデータベースサービスを提供し、ＢＳＤ３０６に関する情報によって、処理装置１００からの要求に応答してもよい。当該情報は、ＢＳＤ３０６の性能特性、ＢＳＤ３０６に書き込みをする場合に使用する書き込みパターン、ＢＳＤ３０６に書き込みをする場合に避ける書き込みパターン、及び／又はＢＳＤ３０６への悪影響を回避又は低減するための他の情報を含んでもよい。処理装置１００は、要求された情報を受信し、ＢＳＤ３０６をより効率的に使用し且つＢＳＤ３０６への悪影響を回避又は低減するために当該情報を使用してもよい。
【００３４】
[0040]いくつかの実施例において、処理装置１００は、サーバー３０６からの情報を要求しなくてもよいし、また、ネットワーク３０２に接続されてもよいし接続されなくてもよい。代わりに、処理装置１００はＢＳＤ３０６からフィードバックを受信してもよい。フィードバックは、ＢＳＤ３０６から非同期に送信されてもよく、処理装置１００からのポーリング（調査、poll）を受信することに応答して送信されてもよく、処理装置１００内のハードコードされたテーブルから提供されてもよい。フィードバックは、ＢＳＤ３０６の性能特性、センサー情報、ＢＳＤ３０６の使用に関する統計情報、ＢＳＤ３０６が処理装置１００に使用するよう要求している多くの所定のプロファイルのうちの１つに関する情報、及び／又は他の情報を含んでもよい。処理装置１００は、より効率的にＢＳＤ３０６を使用し及び／又はＢＳＤ３０６への悪影響を減少させるために、フィードバックを使用してもよい。
例示的な処理
[0041]図４は、本開示の主題と一致する実施例において不揮発性のブロック記憶装置（ＢＳＤ）に接続された処理装置によって実行され得る例示的な処理を示すフローチャートである。処理は、ＢＳＤを発見する、処理装置上で実行するオペレーティングシステムの記憶サブシステムコンポーネントから開始してもよい（動作４０２）。記憶サブシステムコンポーネントは、接続されたＢＳＤから検出される電気信号によって、ＢＳＤから受信されるコマンドの完了によって、又は他の方法によって、ＢＳＤを発見してもよい。
【００３５】
[0042]次いで、記憶サブシステムコンポーネントはＢＳＤがフィードバックを提供することができるかを決定してもよい（動作４０４）。記憶サブシステムコンポーネントは、ＢＳＤの種類に基づいて、ＢＳＤによって提供される識別子に基づいて、又は他の方法を介して、当該決定をしてもよい。ＢＳＤがフィードバックを提供することができないと記憶サブシステムコンポーネントが決定する場合、次いで、記憶サブシステムコンポーネントは、処理装置上で実行するオペレーティングシステムがＢＳＤの特性に関する情報を有しているかどうかを決定してもよい（動作４０５）。オペレーティングシステムがＢＳＤの特性に関する情報を有していると記憶サブシステムコンポーネントが決定する場合、処理は完了してもよい。
【００３６】
[0043]そうでなければ、記憶サブシステムコンポーネントは、ネットワークを介してデータベースサービスを提供するリモートサーバーからＢＳＤの性能特性を要求してもよい（動作４０６）。その後、記憶サブシステムコンポーネントは、リモートサーバーから、ＢＳＤ性能特性について記述する情報を受信してもよい（動作４０８）。ＢＳＤ性能特性は、使用する１つ以上の種類のＩ／Ｏパターンの指示、例えば（データがトランザクションでなく感知可能でないと仮定して）単一のデータＩ／Ｏ動作への多数のＩ／Ｏ動作の集合などの使用する１つ以上の待ち行列に入れる方法の指示のほか、他の待ち行列に入れる方法の指示、回避するＩ／Ｏパターンの指示、回避する待ち行列に入れる方法の指示、及び／又は他の情報を含んでもよい。
【００３７】
[0044]処理装置のメモリーは多くの所定のプロファイルを格納してもよい。ＢＳＤと通信する場合、所定のプロファイルの各々は、処理装置の挙動を定義してもよい。例えば、書き込みパターンは所定のプロファイルのうちの少なくともいくつかと関連付けられてもよく、待ち行列に入れる方法は所定のプロファイルのうちの少なくともいくつかのほか、他の処理装置の挙動と関連付けられてもよい。記憶サブシステムコンポーネントは、使用する現在のプロファイルとして、受信される性能特性に最も緊密に対応する所定のプロファイルのうちの１つを選択してもよい（動作４１０）。処理はここで完了してもよい。
【００３８】
[0045]動作４０４中、ＢＳＤがフィードバックを提供することを記憶サブシステムコンポーネントが決定する場合、次いで、記憶サブシステムコンポーネントはＢＳＤをポーリングするべきかどうかを決定してもよい（動作４１２）。当該決定は、ＢＳＤの種類に基づいて、ＢＳＤによって提供される識別子に基づいて、又は他の方法を介して、なされてもよい。ＢＳＤがポーリングされるべきであると記憶サブシステムコンポーネントが決定する場合、次いで、記憶サブシステムコンポーネントは、ＢＳＤをポーリングするためにポーリング処理を開始してもよい（動作４１４）。記憶サブシステムコンポーネントは、ＢＳＤを周期的にポーリングしてもよいし、又はＢＳＤによる入出力活動に基づく不規則な時間間隔でポーリングしてもよい。ポーリング処理中、ＢＳＤは、処理装置からポーリング（調査、poll）を受信することに応答してフィードバックを提供してもよい。その後、処理は完了してもよい。
【００３９】
[0046]ＢＳＤがポーリングされるべきでないと記憶サブシステムコンポーネントが決定する場合、次いで、記憶サブシステムコンポーネントはＢＳＤがフィードバックを非同期に提供すると仮定してもよい。その後、処理は完了してもよい。
【００４０】
[0047]図５は、入力がＢＳＤから受信される場合に記憶サブシステムコンポーネントによって行われ得る例示的な処理を示すフローチャートである。処理は、ＢＳＤから入力を受信する、処理装置のオペレーティングシステムの記憶サブシステムコンポーネントから開始してもよい（動作５０２）。次いで、記憶サブシステムコンポーネントは、（処理装置がＢＳＤをポーリングする場合に）受信された入力がポーリング応答であるのか、又は（処理装置がＢＳＤをポーリングしないが、ＢＳＤがフィードバックを提供する場合に）ＢＳＤからの非同期に提供されるにフィードバックであるのかを決定してもよい（動作５０４）。
【００４１】
[0048]受信された入力がポーリング応答でも非同期に提供されるフィードバックでもないことを記憶サブシステムコンポーネントが決定する場合、次いで、記憶サブシステムコンポーネントは、ＢＳＤからの入力がＢＳＤに関して入出力と関連し、処理装置が不変の入出力処理を実行し続けてもよいと仮定してもよい（動作５０６）。その後、処理は完了してもよい。
【００４２】
[0049]動作５０４中、入力がポーリング応答又は非同期に提供されるフィードバックであると記憶管理コンポーネントが決定する場合、次いで、記憶サブシステムコンポーネントは、受信された入力を分析してもよい（動作５０８）。記憶サブシステムコンポーネントは、受信された入力に基づいて何らかの動作を行うべきかどうかを決定してもよい（動作５１０）。
【００４３】
[0050]記憶サブシステムコンポーネントは、受信された入力の内容のほか、記憶管理コンポーネントの現在の状態に基づいて、動作を行うべきかどうかを決定してもよい。記憶サブシステムコンポーネントの現在の状態は、例えば、使用されている現在の所定のプロファイル、使用されている特定のＩ／Ｏパターン、使用されている待ち行列に入れる方法、ＢＳＤのＩ／Ｏコントローラーに関して直接的なメモリーアクセス（ＤＭＡ）が可能であるか無効であるか、及び／又は他の情報を含んでもよい。受信された入力の内容は、例えば、書き込み要求あたりの書き込みの数（書き込み増幅としても知られる）、特定の時間間隔にわたって行われる短いデータ書き込みの数、特定の時間間隔にわたり特定の論理ブロックアドレス（ＬＢＡ）範囲にわたって行われるデータ書き込みの数などの統計情報及び／又は性能関連の情報のほか、他の統計情報又は性能関連の情報を含んでもよい。
【００４４】
[0051]受信された入力の内容はまた、１つ以上のセンサーによって検出された動作環境データのほか、他の又は異なる環境データを含んでもよい。動作環境データは、例えば、温度データ、振動関連データ、加速度計関連データ及び他のデータを含んでもよい。１つの実施例においては、ＢＳＤが最後に使用されて、時間の概算の総計に関連するフィードバックに情報を含んでいてもよいので、ＢＳＤは、時間の概算の総計を決定してもよい。１つの実施例において、ＢＳＤは、ＢＳＤの１つ以上の特定のＬＢＡのメモリーセルに残っている電気（電荷）量を測定することにより、時間の概算の総計を決定してもよい。Ｂｏｖｅｅらに対して発行された米国特許出願２００７／０２３３６０９号は、ＢＳＤの１つ以上のＬＢＡの１つ以上のメモリーセルに残っている電気量を測定することに基づいておおよその時間の経過を決定する１つの方法を開示している。他の実施例において、ＢＳＤは、他の方法を介しておおよその期間の経過を決定してもよい。
【００４５】
[0052]いくつかの実施例において、フィードバックは、多くの所定のプロファイルのうちの１つの指示を含んでもよく、当該所定のプロファイルの各々は、ＢＳＤからの入力及び／又はＢＳＤへの出力に関する処理装置のそれぞれの挙動を定義してもよい。所望のそれぞれの挙動と直接的に一致する所定のプロファイルをＢＳＤが見つけることができない場合、ＢＳＤは、所望の挙動を最も緊密に定義する所定のプロファイルのうちの１つの指示をフィードバックに含んでもよい。
【００４６】
[0053]動作５１０中、動作が行われないことを記憶サブシステムコンポーネントが決定する場合、処理は完了してもよい。そうでなければ、記憶サブシステムコンポーネントは、異なる所定のプロファイルに一致させるべきかどうかを決定してもよい（動作５１２）。
【００４７】
[0054]所定のプロファイルが変更されるべきでないと記憶管理コンポーネントが決定する場合、次いで、記憶サブシステムコンポーネントは、記憶管理コンポーネントの現在の状態及びＢＳＤからの受信されたフィードバックに基づいて、多くの動作のうちのどれをとるかを決定してもよい（動作５１４）。
【００４８】
[0055]いくつかの実施例において、フィードバックは、重大な性能関連のしきい値が超えられたか又は到達されたこと、重大なセンサー関連のしきい値が超えられたか又は到達されたことなどの、ＢＳＤ内の重大な状況に関する情報のほか、他の情報を提供し得る、警告を含んでもよい。受信されたフィードバックが警告を含む場合、次いで、動作５１４中、記憶サブシステムコンポーネントは、受信された警告に基づいてとる動作を決定してもよい。
【００４９】
[0056]その後、記憶サブシステムコンポーネントは、決定された動作を行ってもよい（動作５１６）。決定された動作は、ＢＳＤに関して書き込みパターンを変更すること、ＢＳＤへの出力に関して待ち行列に入れる方法を変更すること、ＢＳＤからの入力又はＢＳＤへの出力に関して直接的なメモリーアクセス（ＤＭＡ）を不能にすること又は可能にすること、ＢＳＤへデータを出力するために処理装置によって使用される待ち行列方法の１つ以上のパラメーターを調節すること、ＢＳＤを使用するのをやめるようユーザーに知らせること、又は異なる動作を含んでもよい。その後、処理は完了してもよい。
【００５０】
[0057]動作５１２中、プロファイルが変更されるべきであると記憶サブシステムコンポーネントが決定する場合、次いで、記憶サブシステムコンポーネントは、多くの所定のプロファイルのうちのいずれが、提供されるフィードバックによって示されるような、ＢＳＤの状態に最も密接に一致又は対処する（合う）かを決定してもよい（動作５１８）。次いで、ＢＳＤに関して記憶サブシステムコンポーネントの挙動を変更するために、処理装置は、現在のプロファイルを見つかったプロファイルに設定してもよい（動作５２０）。その後、処理は完了してもよい。
【００５１】
[0058]図６は、本開示の主題と一致する実施例においてＢＳＤによって行われ得る例示的な処理を示すフローチャートである。フローチャートによって示された動作を行うための命令は、ＢＳＤのＲＯＭ内又は他の静的記憶装置内に格納されたファームウェアに含まれてもよい。
【００５２】
[0059]処理は、例えば、入出力動作などの、処理装置からのＢＳＤ監視動作から開始してもよい（動作６０２）。ＢＳＤは、例えば、読み取りパターン及び書き込みパターンなどの、処理装置のＩ／Ｏパターンに関する統計及びヒストグラムを保持してもよい（動作６０４）。ＢＳＤは、読み取りパターン及び書き込みパターンを所定のテンプレートへ一致させることを試みること、及び、Ｉ／Ｏ要求のランダム処理についておおまかに記述し得る統計情報を収集することによって、これを達成してもよい。例えば、正規分布又は他の分布などの所定の分布を仮定すると、統計情報の例は、ＬＢＡの領域への小さなデータ書き込みの密度、小さなデータ書き込みの頻度、及び過度に長い部分データ書き込みを含んでもよいが、これらに限定されない。いくつかの実施例において、ＢＳＤのファームウェアは、ランダム分布のハードコードされた記述を含んでもよい。他の実施例において、ファームウェアは、必要な場合にランダム分布の記述を作成するための命令を含んでもよい。
【００５３】
[0060]その後、ＢＳＤは、ある程度の正確さが達成され得るように、処理装置からの十分な量の動作が観察されたかどうかを決定してもよい（動作６０６）。処理装置から観察された動作の量が十分であるとＢＳＤが決定する場合、ＢＳＤは、しきい値を超えたりしきい値に到達したりしたかを決定してもよい（動作６０８）。例えば、第１世代民生（消費者、consumer）フラッシュディスクは、長期の連続する書き込み及びサイズがそろえられたランダムな読み出しに対して設計されている。ＢＳＤが第１世代民生フラッシュディスクを含み、処理装置がフラッシュディスクに対して過度の負荷の小さなランダムの書き込みを使用すること（これは、フラッシュディスクに書き込み動作をよりゆっくり行わせ、早く摩耗させる）をＢＳＤが観察する場合、次いで、ＢＳＤは、処理装置からの書き込みの観察された頻度及びサイズが安全なしきい値を超えていると報告してもよい。
【００５４】
[0061]しきい値が超えられたか又は到達されたとＢＳＤが決定する場合、次いで、ＢＳＤは処理装置にフィードバックを提供してもよい（動作６１０）。以前に言及されたように、フィードバックは、統計情報、所定のプロファイルの指示、書き込みパターンの指示、待ち行列方法の指示、又はＢＳＤへの悪影響を低減するためにＢＳＤに関する挙動を適応させるべく処理装置が使用し得る他の情報を含んでもよい。
【００５５】
[0062]しきい値が超えられていないと決定した後に、動作６０８中、又は処理装置にフィードバックを送信した後に、動作６１０中、ＢＳＤは、１つ以上のセンサーに関する情報を監視してもよい（動作６１２）。ＢＳＤは、１つ以上のセンサーからの監視された情報を追跡してもよい（動作６１４）。次いで、ＢＳＤは、ある程度の正確さが達成され得るように、１つ以上のセンサーから十分な情報が観察されたかどうかを決定してもよい（動作６１６）。観察された情報の量が１つ以上のセンサーに関して十分でないとＢＳＤが決定する場合、ＢＳＤは動作６０２を繰り返してもよい。そうでなければ、ＢＳＤは、センサーしきい値が超えられたかどうかを決定してもよい（動作６１８）。例えば、温度センサーは、温度が高すぎると報告してもよく、振動センサーは、感知された振動の量が高すぎ及び／又は激しすぎると報告してもよい。動作６１８中、センサーしきい値が超えられたとＢＳＤが決定する場合、次いでＢＳＤは、処理装置に、センサーしきい値が超えられたことを示す情報を含むフィードバックを送信してもよい（動作６２０）。その後、ＢＳＤは動作６０２を繰り返してもよい。
雑則
[0063]上記実施例のうちのいくつかは、ＢＳＤに対する悪影響を低減するために挙動を適応させるのに使用され得るフィードバックを処理装置の記憶サブシステムコンポーネントに提供するＢＳＤを示すが、ＢＳＤ及び／又は記憶サブシステムコンポーネントはそれらのそれぞれの挙動をさらに適応させてもよい。例えば、記憶サブシステムコンポーネントは、ＢＳＤの応答時間を監視してもよく、過度に長い応答時間を観察すると、記憶サブシステムコンポーネントは、所定のプロファイル、書き込みパターン、読み取りパターンを変化させること、ＢＳＤに関してＤＭＡの使用を不能にするか又は可能にすること、書き込みバッファーのサイズを変更すること、待ち行列の長さを変更すること、待ち行列方法を変更すること、又は他の変更を行うことによって適応（状況に合わせて変化）してもよい。
【００５６】
[0064]ＢＳＤは、ＢＳＤの性能特性について処理装置よりも密接に知っており、したがって、例えば、温度情報又は他の情報などの１つ以上のセンサーによって報告される情報に基づいて処理装置からの短いデータ書き込みを長いデータ書き込みへと統合すること又はＢＳＤの一部をオフにすることを含むがこれらに限定されない動作をとることによって、挙動を適応させてもよい。
【００５７】
[0065]さらに、ＢＳＤからのフィードバックにおいて提供される情報は、以前に取り決められた形式であってもよく、その結果、異種の処理装置が、ＢＳＤを使用することができ、ＢＳＤによって提供されるフィードバックに基づいてそれぞれの挙動を適応させることができる。
結び
[0066]主題は構造的特徴及び／又は方法論の動作に特有の言葉で記載されてきたが、添付の特許請求の範囲における主題が上述の特定の特徴又は動作に必ずしも限定されないことが理解されるべきである。より正確に言えば、上述の特定の特徴及び動作は、請求項の実施のための例示的な形式として開示されている。
【００５８】
[0067]記載された実施例の他の構成は本開示の範囲の一部である。例えば、他の実施例においては、図４−６に示された処理などの処理によって行われる動作の順序は異なってもよく、異なる順に行われてもよく、及び／又は、追加の又は他の動作を含んでもよい。
【００５９】
[0068]したがって、所与の任意の特定の例よりもむしろ、添付の特許請求の範囲及びそれらの法的な均等物が実施例を定義するものである。
【図１】
2012533132.tif 000003
【図２】
2012533132.tif 000004
【図３】
2012533132.tif 000005
【図４】
2012533132.tif 000006
【図５】
2012533132.tif 000007
【図６】
2012533132.tif 000008
【国際調査報告】
2012533132.tif 000009
2012533132.tif 000010