(57)【要約】【課題】同期入出を介して生成されたキャッシュ・ヒットに応答してメタデータ・トラックの非同期更新をする方法を提供。【解決手段】キャッシュ・ヒットが、バス・インターフェースにより入出力（Ｉ／Ｏ）コマンドを受け取ることに応答して、生成される。メタデータ・トラックの更新が、キャッシュ・ヒットを生成することに応答して、Ｉ／Ｏコマンドを処理する中央処理装置（ＣＰＵ）に関連付けられたバッファに記憶される。メタデータ・トラックは、バッファ内のメタデータ・トラックの記憶された更新を用いてバッファから非同期的に更新される。【選択図】図２
2020532803.tif 000002
【特許請求の範囲】
【請求項１】
バス・インターフェースにより入出力（Ｉ／Ｏ）コマンドを受け取ることに応答して、キャッシュ・ヒットを生成することと、
前記キャッシュ・ヒットを生成することに応答して、前記Ｉ／Ｏコマンドを処理する中央処理装置（ＣＰＵ）に関連付けられたバッファにメタデータ・トラックの更新を記憶することと、
前記バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記バッファから前記メタデータ・トラックを非同期的に更新することと
を含む、方法。
【請求項２】
前記ＣＰＵによる前記Ｉ／Ｏコマンドの処理が、前記バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記バッファから前記メタデータ・トラックを非同期的に更新する前に完了する、請求項１に記載の方法。
【請求項３】
前記バッファが、バッファ・プールからの前記ＣＰＵに確保された解放バッファであり、前記方法が、
前記バッファが前記ＣＰＵによってメタデータ・トラックの更新で満たされることに応答して、前記バッファを前記バッファ・プールに戻すことと、
前記バッファ・プールに戻された前記バッファが使用バッファであることを示すことと
をさらに含む、請求項２に記載の方法。
【請求項４】
複数のバックグラウンド・タスクのうちのバックグラウンド・タスクが、前記メタデータ・トラックを非同期的に更新する動作を実施する、請求項３に記載の方法。
【請求項５】
前記使用バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記使用バッファから前記メタデータ・トラックを非同期的に更新することに応答して、前記使用バッファが解放バッファであることを示すことをさらに含む、請求項４に記載の方法。
【請求項６】
複数のＣＰＵが、複数のバス・インターフェースによる複数のＩ／Ｏコマンドを処理し、前記方法が、
前記バッファ・プール内に十分な数の解放バッファを維持するために前記複数のバックグラウンド・タスクの数を調整することであって、前記バッファ・プール内の解放バッファの前記十分な数が、第１の閾値数よりも多く、第２の閾値数よりも少ない、前記調整することをさらに含む、請求項５に記載の方法。
【請求項７】
複数の調整可能な数のバックグラウンド・タスクが、複数のメタデータ・トラックの記憶された更新を用いて複数のバッファから前記複数のメタデータ・トラックを非同期的に更新し、前記複数のバッファ内の前記前記複数のメタデータ・トラックの前記記憶された更新が、複数のＣＰＵによって生成される、請求項１に記載の方法。
【請求項８】
システムであって、１つまたは複数の中央処理装置（ＣＰＵ）と、
プログラム命令を具現化させたコンピュータ可読記憶媒体と
を備え、前記プログラム命令が、前記１つまたは複数のＣＰＵに動作を実施させるように前記１つまたは複数のＣＰＵによって実行可能であり、前記動作が、
バス・インターフェースにより入出力（Ｉ／Ｏ）コマンドを受け取ることに応答して、キャッシュ・ヒットを生成することと、
前記キャッシュ・ヒットを生成することに応答して、前記Ｉ／Ｏコマンドを処理する中央処理装置（ＣＰＵ）に関連付けられたバッファ内のメタデータ・トラックの更新を記憶することと、
前記バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記バッファから前記メタデータ・トラックを非同期的に更新することと
を含む、システム。
【請求項９】
前記ＣＰＵによる前記Ｉ／Ｏコマンドの処理が、前記バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記バッファから前記メタデータ・トラックを非同期的に更新する前に完了する、請求項８に記載のシステム。
【請求項１０】
前記バッファが、バッファ・プールからの前記ＣＰＵに確保された解放バッファであり、前記動作が、
前記バッファが前記ＣＰＵによってメタデータ・トラックの更新で満たされることに応答して、前記バッファを前記バッファ・プールに戻すことと、
前記バッファ・プールに戻された前記バッファが使用バッファであることを示すことと
をさらに含む、請求項９に記載のシステム。
【請求項１１】
複数のバックグラウンド・タスクのうちのバックグラウンド・タスクが、前記メタデータ・トラックを非同期的に更新する動作を実施する、請求項１０に記載のシステム。
【請求項１２】
前記動作が、
前記使用バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記使用バッファから前記メタデータ・トラックを非同期的に更新することに応答して、前記使用バッファが解放バッファであることを示すことをさらに含む、請求項１１に記載のシステム。
【請求項１３】
複数のＣＰＵが、複数のバス・インターフェースによる複数のＩ／Ｏコマンドを処理し、前記動作が、
前記バッファ・プール内に十分な数の解放バッファを維持するために前記複数のバックグラウンド・タスクの数を調整することであって、前記バッファ・プール内の解放バッファの前記十分な数が、第１の閾値数よりも多く、第２の閾値数よりも少ない、前記調整することをさらに含む、請求項１２に記載のシステム。
【請求項１４】
複数の調整可能な数のバックグラウンド・タスクが、前記複数のメタデータ・トラックの記憶された更新を用いて複数のバッファから複数のメタデータ・トラックを非同期的に更新し、前記複数のバッファ内の前記複数のメタデータ・トラックの前記記憶された更新が、複数のＣＰＵによって生成される、請求項８に記載のシステム。
【請求項１５】
コンピュータ・プログラム製品であって、コンピュータ可読プログラム・コードを具現化させたコンピュータ可読記憶媒体を備え、前記コンピュータ可読プログラム・コードが、動作を実施するように構成され、前記動作が、
バス・インターフェースにより入出力（Ｉ／Ｏ）コマンドを受け取ることに応答して、キャッシュ・ヒットを生成することと、
前記キャッシュ・ヒットを生成することに応答して、前記Ｉ／Ｏコマンドを処理する中央処理装置（ＣＰＵ）に関連付けられたバッファにメタデータ・トラックの更新を記憶することと、
前記バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記バッファから前記メタデータ・トラックを非同期的に更新することと
を含む、コンピュータ・プログラム製品。
【請求項１６】
前記ＣＰＵによる前記Ｉ／Ｏコマンドの処理が、前記バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記バッファから前記メタデータ・トラックを非同期的に更新する前に完了する、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１７】
前記バッファが、バッファ・プールからの前記ＣＰＵに確保された解放バッファであり、前記動作が、
前記バッファが前記ＣＰＵによってメタデータ・トラックの更新で満たされることに応答して、前記バッファを前記バッファ・プールに戻すことと、
前記バッファ・プールに戻された前記バッファが使用バッファであることを示すことと
をさらに含む、請求項１６に記載のコンピュータ・プログラム製品。
【請求項１８】
複数のバックグラウンド・タスクのうちのバックグラウンド・タスクが、前記メタデータ・トラックを非同期的に更新する動作を実施する、請求項１７に記載のコンピュータ・プログラム製品。
【請求項１９】
前記動作が、
前記使用バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記使用バッファから前記メタデータ・トラックを非同期的に更新することに応答して、前記使用バッファが解放バッファであることを示すことをさらに含む、請求項１８に記載のコンピュータ・プログラム製品。
【請求項２０】
複数のＣＰＵが、複数のバス・インターフェースによる複数のＩ／Ｏコマンドを処理し、前記動作が、
前記バッファ・プール内に十分な数の解放バッファを維持するために前記複数のバックグラウンド・タスクの数を調整することであって、前記バッファ・プール内の解放バッファの前記十分な数が、第１の閾値数よりも多く、第２の閾値数よりも少ない、前記調整することをさらに含む、請求項１９に記載のコンピュータ・プログラム製品。
【請求項２１】
複数の調整可能な数のバックグラウンド・タスクが、前記複数のメタデータ・トラックの記憶された更新を用いて複数のバッファから複数のメタデータ・トラックを非同期的に更新し、前記複数のバッファ内の前記複数のメタデータ・トラックの前記記憶された更新が、複数のＣＰＵによって生成される、請求項１５に記載のコンピュータ・プログラム製品。
【請求項２２】
バス・インターフェースを介してホスト計算デバイスに通信可能に結合された記憶制御装置であって、
キャッシュと、
複数のバッファと
を備え、前記記憶制御装置が、動作を実施し、前記動作が、
前記ホスト計算デバイスから前記バス・インターフェースを介して入出力（Ｉ／Ｏ）コマンドを受け取ることに応答して、前記キャッシュ上にキャッシュ・ヒットを生成することと、
前記キャッシュ・ヒットを生成することに応答して、前記Ｉ／Ｏコマンドを処理する中央処理装置（ＣＰＵ）に関連付けられたバッファにメタデータ・トラックの更新を記憶することと、
前記バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記バッファから前記メタデータ・トラックを非同期的に更新することと
を含む、記憶制御装置。
【請求項２３】
前記ＣＰＵによる前記Ｉ／Ｏコマンドの処理が、前記バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記バッファから前記メタデータ・トラックを非同期的に更新する前に完了する、請求項２２に記載の記憶制御装置。
【請求項２４】
前記バッファが、前記複数のバッファから生成された、バッファ・プールからの前記ＣＰＵに確保された解放バッファであり、前記動作が、
前記バッファが前記ＣＰＵによってメタデータ・トラックの更新で満たされることに応答して、前記バッファを前記バッファ・プールに戻すことと、
前記バッファ・プールに戻された前記バッファが使用バッファであることを示すことと
をさらに含む、請求項２３に記載の記憶制御装置。
【請求項２５】
複数のバックグラウンド・タスクのうちのバックグラウンド・タスクが、前記メタデータ・トラックを非同期的に更新する動作を実施する、請求項２４に記載の記憶制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、バス・インターフェースによるＩ／Ｏ動作を介して生成されたキャッシュ・ヒットに応答するメタデータ・トラックの非同期更新に関する。
【背景技術】
【０００２】
或る記憶システム環境において、記憶制御装置（または記憶制御装置複合体）は、互いに結合された複数の記憶サーバを備えることができる。記憶制御装置により、ホスト・コンピューティング・システムは、記憶制御装置によって制御される記憶デバイスを用いて入出力（Ｉ／Ｏ）動作を実施することが可能になり、その場合、ホスト・コンピューティング・システムは、ホストと称することができる。或る状況において、記憶制御装置の記憶サーバは、それぞれ、複数のタスクの並列実行を実施するのに使用することができる複数の中央処理装置（ＣＰＵ）を含むことができる。
【０００３】
記憶制御装置は、キャッシュを含むことができる。ホストから書き込まれたデータは、キャッシュに記憶することができ、都合の良い時間に、キャッシュに記憶されたデータは、記憶デバイスにデステージする（すなわち、移動させるまたは複写する）ことができる。データは、記憶デバイスから記憶制御装置のキャッシュにステージする（すなわち、移動させるまたは複写する）こともできる。記憶制御装置は、Ｉ／Ｏ読取り要求のデータがキャッシュにおいて利用可能である場合、ホストからのキャッシュへのＩ／Ｏ読取り要求に応答することができ、それ以外の場合、データは、Ｉ／Ｏ読取り要求に応答するために記憶デバイスからキャッシュにステージすることができる。ホストからのＩ／Ｏ書込み要求により、書込みに対応するデータがキャッシュに書き込まれ、次いで、都合の良い時間に、書き込まれたデータをキャッシュから記憶デバイスにデステージすることができる。キャッシュの記憶容量が記憶デバイスの記憶容量に比較して相対的に小さいので、データは、空いた記憶空間をキャッシュ内に作成するためにキャッシュから周期的にデステージすることができる。データは、記憶デバイスからデータを読み取りおよび書き込むことに比較してずっと高速にキャッシュから書き込むおよび読み取ることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、バス・インターフェースによるＩ／Ｏ動作を介して生成されたキャッシュ・ヒットに応答してメタデータ・トラックの非同期更新をする方法、システム、記憶制御装置、およびコンピュータ・プログラムを提供する。
【課題を解決するための手段】
【０００５】
メタデータ・トラックの更新が、キャッシュ・ヒットを生成することに応答して、Ｉ／Ｏコマンドを処理する中央処理装置（ＣＰＵ）に関連付けられたバッファに記憶される。メタデータ・トラックは、バッファ内のメタデータ・トラックの記憶された更新を用いてバッファから非同期的に更新される。結果として、Ｉ／Ｏコマンドは、好ましくは、メタデータ・トラックへの更新を待つことなく適時に完了することができる。
【０００６】
追加の実施形態において、ＣＰＵによるＩ／Ｏコマンドの処理は、バッファ内のメタデータ・トラックの記憶された更新を用いてバッファからメタデータ・トラックを非同期的に更新する前に完了する。結果として、Ｉ／Ｏコマンドは、メタデータ・トラックへの対応する更新が行われる前に適時に完了することができる。
【０００７】
他の実施形態において、バッファは、バッファ・プールからのＣＰＵに確保された解放バッファである。バッファがＣＰＵによってメタデータ・トラックの更新で満たされることに応答して、バッファは、バッファ・プールに戻される。バッファ・プールに戻されたバッファが使用バッファであることを示す指示が行われる。結果として、使用バッファは、一時的にメタデータ・トラックの更新を記憶することができる。
【０００８】
或る実施形態において、複数のバックグラウンド・タスクのうちのバックグラウンド・タスクが、メタデータ・トラックを非同期的に更新する動作を実施する。結果として、メタデータ・トラックへの更新が、バックグラウンドで実行されるタスクによって行われ、同期入出力（syncio）動作の処理を妨害しない。
【０００９】
他の実施形態において、使用バッファ内のメタデータ・トラックの記憶された更新を用いて使用バッファからメタデータ・トラックを非同期的に更新することに応答して、使用バッファが解放バッファであることを示す指示が行われる。結果として、使用バッファは、バッファ・プールにおいて解放され、再使用することができ、そのとき、メタデータ更新は、使用バッファから完了されている。
【００１０】
或る実施形態において、複数のＣＰＵが、複数のバス・インターフェースによる複数のＩ／Ｏコマンドを処理する。バッファ・プール内に十分な数の解放バッファを維持するために複数のバックグラウンド・タスクの数の調整が行われ、その場合、バッファ・プール内の解放バッファの十分な数は、第１の閾値数よりも多く、第２の閾値数よりも少ない。結果として、解放バッファの数と使用バッファの数とは、バッファ・プール内で均衡に保たれる。
【００１１】
他の実施形態において、複数の調整可能な数のバックグラウンド・タスクが、複数のメタデータ・トラックの記憶された更新を用いて複数のバッファから複数のメタデータ・トラックを非同期的に更新し、その場合、複数のバッファ内の複数のメタデータ・トラックの記憶された更新は、複数のＣＰＵによって生成される。数の調節が可能であるバックグラウンド・タスクの結果として、解放バッファの数と使用バッファの数とは、バッファ・プール内で均衡に保たれる。
【００１２】
次に、本発明の好ましい実施形態を以下の図面（同じ参照番号は全体にわたって対応する部分を表す）を参照して例により説明する。
【図面の簡単な説明】
【００１３】
【図１】或る実施形態による、同期入出力処理をキャッシュおよびメタデータ管理に統合するために１つまたは複数のホストおよび１つまたは複数の記憶デバイスに結合された記憶制御装置を備えるコンピューティング環境のブロック図である。
【図２】或る実施形態による、同期入出力におけるメタデータ・トラックの非同期更新を示すブロック図である。
【図３】或る実施形態による、ＣＰＵによるバッファ・プールからの解放バッファの確保を示すブロック図である。
【図４】或る実施形態による、バッファ・プールを管理する動作を示すフローチャートである。
【図５】或る実施形態による、バックグラウンド・タスクがメタデータ・トラックを非同期的に更新するやり方を示すフローチャートである。
【図６】或る実施形態による、バックグラウンド・タスクがメタデータ・トラックを非同期的に更新するやり方を示す別のフローチャートである。
【図７】或る実施形態による、バッファ・プール内に十分な数の解放バッファを維持するようにバックグラウンド・タスクの数が調整されるやり方を示すフローチャートである。
【図８】或る実施形態による、同期入出力動作のため生成されたキャッシュ・ヒットに応答してメタデータ・トラックの非同期更新が行われるやり方を示すフローチャートである。
【図９】或る実施形態による、クラウド・コンピューティング環境のブロック図である。
【図１０】或る実施形態による、図９のクラウド・コンピューティング環境のさらなる詳細のブロック図である。
【図１１】或る実施形態による、図１〜１０において説明する、記憶制御装置またはホストに含めることができる或る要素を示す計算システムのブロック図である。
【発明を実施するための形態】
【００１４】
以下の説明において、本明細書の一部を形成し、いくつかの実施形態を示す添付の図面を参照する。他の実施形態を利用することができ、構造上および動作上の変更を加えることができることが理解される。
【００１５】
同期入出力（同期Ｉ／Ｏ（sync I/O）とも称される）は、計算デバイス用のアタッチメント・ハードウェアおよびプロトコルを備える。同期入出力は、超低遅延ランダム読取りおよび小ブロック・シーケンシャル書込み用に設計される。計算デバイス間の同期入出力接続は、ポイント・ツー・ポイント光ペリフェラル・コンポーネント・インターコネクト・エクスプレス（ＰＣＩｅ：Peripheral Component Interconnect Express）インターフェースによることができる。同期入出力動作は、同期入出力では、ホスト計算デバイスがＩ／Ｏ動作が完了するのを待ちながらアプリケーション・スレッドをスピン・ループで保持できる点において従来のＩ／Ｏとは異なった挙動をする。これにより、従来のＩ／Ｏの２つのコンテキスト・スワップを実施するプロセッサ・サイクルの必要、Ｉ／Ｏスレッドをスリープさせ次いでＩ／Ｏスレッドをリディスパッチする動作を実施する必要、およびＩ／Ｏ割込みの必要が回避される。
【００１６】
同期入出力のコード・パスは、同期入出力動作の完了の時間要件を満足するために極めて最適化する必要がある。同期入出力動作の完了を遅延させることができる任意の状態により、記憶制御装置は、同期入出力動作が完了できないことをホストに示す場合があり、同期入出力動作は、ホストから再試行しなければならない場合がある。
【００１７】
同期入出力動作は、キャッシュ・ヒットを生じさせることができ、キャッシュ・ヒットは、１つまたは複数のメタデータ・トラックに必要とされる更新を生じさせることができ、その場合、メタデータ・トラックは、キャッシュに記憶された複数のトラックに関する情報を記憶することができる。例えば、メタデータ・トラックは、キャッシュに記憶された１，０００のトラックに関する情報（メタデータ）を記憶することができる。１つまたは複数のメタデータ・トラックの直接更新は、同期入出力動作が完了しなければならない時間周期内では可能でない可能性がある。何故なら、同期入出力動作を実施している可能性がある複数のＣＰＵが、同じメタデータ・トラックに書き込むことを必要とする場合があり、交代で同じメタデータ・トラックに書き込まなければならないからである。さらに、メタデータ・トラックのうちのいくつかは、ディスク記憶デバイス上にある場合があり、同期入出力動作が完了しなければならない時間周期内でそのようなメタデータ・トラックを更新することは可能でない場合がある。
【００１８】
或る実施形態は、キャッシュ・ヒットが、複数のＣＰＵによって実施された同期入出力動作の間に起きるとき、複数のＣＰＵに関連付けられた複数のバッファを、メタデータ・トラックに書き込まれる情報（メタデータ）を用いて更新する。ＣＰＵに関連付けられたバッファへの更新は、同期入出力動作が完了する必要がある時間周期内に完了することができる。バックグラウンド・タスクは、バッファに書き込まれたメタデータを用いてメタデータ・トラックを更新することができる。したがって、メタデータ・トラックの更新は、同期入出力動作とは非同期的に実施され、すなわち、トラックに対応するメタデータ・トラックへの更新は実施しなくてもよく、その一方で、同期入出力動作はトラック上にＩ／Ｏ動作を実施する。
【００１９】
例示的な実施形態
図１は、或る実施形態による、１つまたは複数のホスト１０４、１０６および１つまたは複数の記憶デバイス１０８、１１０に結合された記憶制御装置１０２を備えるコンピューティング環境１００のブロック図を示す。記憶制御装置１０２により、複数のホスト１０４、１０６は、記憶制御装置１０２によって維持される論理記憶装置を用いて入出力（Ｉ／Ｏ）動作を実施することが可能になる。論理記憶装置に対応する物理記憶装置は、記憶デバイス１０８、１１０の１つまたは複数または記憶制御装置１０２のキャッシュ１１２（例えば、メモリ）あるいはその両方に見出すことができる。
【００２０】
記憶制御装置１０２およびホスト１０４、１０６は、パーソナル・コンピュータ、ワークステーション、サーバ、メインフレーム、ハンド・ヘルド・コンピュータ、パーム・トップ・コンピュータ、電話デバイス、ネットワーク・アプライアンス、ブレード・コンピュータ、処理デバイスなど、現在当技術分野で周知のものを含む任意の適切な計算デバイスを備えることができる。記憶制御装置１０２、ホスト１０４、１０６、および記憶デバイス１０８、１１０は、ストレージ・エリア・ネットワーク、ワイド・エリア・ネットワーク、インターネット、イントラネットなど、任意の適切なネットワーク１１４における要素でもよい。或る実施形態において、記憶制御装置１０２、ホスト１０４、１０６、および記憶デバイス１０８、１１０は、コンピューティング環境１００を備えるクラウド・コンピューティング環境における要素でもよい。記憶デバイス１０８、１１０は、記憶ディスク、テープ・ドライブ、ソリッド・ステート記憶装置などから構成することができ、記憶制御装置１０２によって制御することができる。
【００２１】
或る実施形態において、ホスト１０４、１０６は、バス・インターフェース（例えば、ポイント・ツー・ポイント光ＰＣＩｅインターフェース）１１６、１１８およびネットワーク・インターフェース１２０、１２２を介して記憶制御装置１０２に結合することができる。ホスト１０４、１０６からの同期入出力動作は、バス・インターフェース１１６、１１８にわたって実施することができる。ホスト１０４、１０６からの従来のＩ／Ｏ動作は、ネットワーク・インターフェース１２０、１２２にわたって実施することができる。バス・インターフェース１１６、１１８は、ネットワーク・インターフェース１２０、１２２よりも高速のＩ／Ｏ用アクセス・チャネルを備えることができる。ＥｘｐＥｔｈｅｒ技術を用いるなどの、イーサネット（Ｒ）にわたるＰＣＩｅを可能にするために、分散ＰＣＩｅスイッチなどのＰＣＩｅ延長ケーブルまたは構成要素を含む、バス・インターフェース１１６、１１８を拡張する追加のバス・インターフェース技術を利用することができる。
【００２２】
キャッシュ１１２は、顧客データ・トラック、メタデータ・トラック、および他のトラックを含む複数のトラック１２４を記憶することができる。メタデータ・トラックは、記憶デバイス１０８、１１０に記憶することもできる。メタデータ・トラックのそれぞれは、情報を１つまたは複数の顧客データ・トラック上に記憶することもできる。したがって、複数の顧客データ・トラックのメタデータ１２６は、複数のメタデータ・トラック１２８、１３０に記憶され、その場合、各メタデータ・トラックは、情報を１つまたは複数の顧客の顧客データ・トラック上に記憶し、メタデータ・トラック１２８、１３０の一部または全部は、キャッシュ１１２に存在してもよく、メタデータ・トラック１２８、１３０の一部または全部は、記憶デバイス１０８、１１０の１つまたは複数に存在してもよい。
【００２３】
記憶制御装置１０２は、１つまたは複数の同期入出力プロセス１３２、１つまたは複数のバックグラウンド・タスク１３４、およびバックグラウンド・タスク調整プロセス１３６を実行する。同期入出力プロセス１３２は、記憶制御装置の複数のＣＰＵ１３８、１４０上に実行することができる。１つまたは複数の解放バッファ１４４および１つまたは複数の使用バッファ１４６を備えるバッファ・プール１４２が、記憶制御装置１０２において維持され、その場合、バッファ・プール１４２内のバッファ１４４、１４６のそれぞれは、複数のＣＰＵ１３８、１４０のうちのＣＰＵに関連付けることができるメモリを備える。
【００２４】
或る実施形態において、ＣＰＵ１３８は、同期入出力動作を実施することができ、キャッシュ１１２のトラックへのキャッシュ・ヒットのため、ＣＰＵ１３８は、キャッシュ１１２のトラックに対応するメタデータ・トラック１２８に書き込まれる必要がある情報を用いて、解放バッファ１４４から選択された、前に確保されたバッファを更新する。バックグラウンド・タスク１３４は、同期入出力動作の間に複数のＣＰＵ１３８、１４０によって複数のバッファに書き込まれた情報をメタデータ・トラックに複写することによって、同期入出力動作の実施と非同期的にメタデータ・トラック１２８、１３０を更新することができる（すなわち、同期入出力動作は、メタデータ・トラックが更新されるまでに完了することができる）。バックグラウンド・タスク調整プロセス１３６は、最終的にメタデータ・トラック１２８、１３０に書き込まれる情報を一時的に書き込むためにＣＰＵ１３８、１４０によって確保することができる十分な数の解放バッファ１４４があることを確実にするために、バックグラウンド・タスクの数を調整する。
【００２５】
図２は、或る実施形態による、同期入出力におけるメタデータ・トラックの非同期更新を示すブロック図２００を示す。或る実施形態において、図２に示す動作は、記憶制御装置１０２によって実施することができる。
【００２６】
制御がブロック２０２から開始され、その場合、同期入出力動作がＣＰＵ１３８によって実施されている間にキャッシュ１１２上へのキャッシュ・ヒットが起き、結果として、メタデータ・トラック１２８への更新が必要とされる。メタデータ・トラック１２８の直接更新は、以下の理由のいずれかのため、同期入出力動作が完了しなければならない時間周期内に可能ではない。すなわち、（１）複数のＣＰＵ１３８、１４０が、同じメタデータ・トラック１２８上に書き込む必要がある可能性があり、メタデータ・トラック１２８は、ＣＰＵ１３８以外の別のＣＰＵによる書込みのためにすでにロックされている可能性があり、（２）メタデータ・トラック１２８は、ディスク記憶デバイス上にある可能性があり、メタデータ・トラック１２８に直接書き込む、またはメタデータ・トラック１２８のステージされた複写に書き込む時間は、同期入出力動作が完了するのに必要とされる時間を超える（ブロック２０４に示すように）。
【００２７】
ブロック２０２から、制御はブロック２０６に進み、その場合、ＣＰＵ１３８は、ＣＰＵ１３８に関連付けられたバッファ内のメタデータ・トラックに行われる更新を一時的に記憶する。さらに、同期入出力動作を実施する複数のＣＰＵ１３８、１４０に対して（参照符号２０８を介して示すように）、調整可能な数のバックグラウンド・タスク１３４が、バッファからメタデータ・トラック１２８、１３０を非同期的に更新し（ブロック２１０）、その場合、ＣＰＵ１３８、１４０は、メタデータ・トラック１２８、１３０に行われる更新を書き込んでいる。
【００２８】
図３は、或る実施形態による、ＣＰＵ１３８、１４０によるバッファ・プール１４２からの解放バッファの確保を示すブロック図３００を示す。
【００２９】
バッファ・プール１４２は、複数の解放バッファ３０２、３０４および複数の使用バッファ３０６、３０８を含むことができる。解放バッファとは、空いているバッファであり、すなわち、このバッファを備えるメモリにはデータ損失なしで書き込むことができる。使用バッファとは、一杯であるバッファであり、すなわち、このバッファを備えるメモリは、記憶制御装置１０２によって必要とされる、すでに存在するデータを上書きすることなしに、それ以上データを書き込むことはできない。
【００３０】
或る実施形態において、ＣＰＵがメタデータ・トラックを更新する必要があり、ＣＰＵがＣＰＵによる独占的書込みのための任意の割り当てられたバッファを有さないとき、ＣＰＵは、バッファ・プール１４２の解放バッファを確保し、確保された解放バッファをＣＰＵによる独占的書込みのために割り当てる。例えば、図３において、ＣＰＵ１３８は、それ自体に解放バッファ３１０を割り当てており、ＣＰＵ１４０は、それ自体に解放バッファ３１２を割り当てている。バッファは記憶制御装置１０２に含まれるメモリであるので、ＣＰＵは、ＣＰＵに確保されたバッファに、メタデータ・トラックに対するよりもずっと高速に更新を書き込むことができる。何故なら、メタデータ・トラックは、別のＣＰＵによってロックされているか、または記憶デバイスに常駐している可能性があるからである。
【００３１】
図４は、或る実施形態による、バッファ・プール１４２を管理する動作を示すフローチャート４００を示す。或る実施形態において、図４に示す動作は、記憶制御装置１０２によって実施することができる。
【００３２】
制御はブロック４０２から開始し、その場合、記憶制御装置１０２は、解放バッファ１４４および使用バッファ１４６を備えるバッファ・プール１４２を維持する。ＣＰＵ１３８が同期入出力動作を実施し、ＣＰＵ１３８が、確保されたバッファを有さない場合、ＣＰＵ１３８は、ＣＰＵ１３８による使用のために解放バッファをバッファ・プール１４２から確保する（ブロック４０４）。ブロック４０４において、ＣＰＵ１３８が、一杯でない、既存の確保されたバッファをすでに有する場合、ＣＰＵ１３８は、一杯でない、既存の確保されたバッファを使用し続ける。
【００３３】
ブロック４０４から、制御はブロック４０６に進み、その場合、ＣＰＵ１３８がメタデータ・トラックを更新する必要があるかどうかに関して判定が行われる。例えば、メタデータ・トラックが、同期入出力動作を実施しながら、キャッシュ１１２に読み取られたヒットがある場合、更新される必要がある可能性があり、その場合、メタデータ・トラックが、トラックをキャッシュ１１２からデステージするのにどのデステージ・メカニズムを使用するのかを判定するための統計を記憶するために更新される必要がある可能性がある。
【００３４】
ブロック４０６において、ＣＰＵ１３８がメタデータ・トラックを更新する必要があると判定された場合（「はい」分岐４０８）、制御はブロック４１０に進み、その場合、ＣＰＵ１３８が、確保されたバッファのエントリにおいて、メタデータ・トラックに必要な更新を示す（ブロック４１０）。制御はブロック４１２に進み、その場合、ＣＰＵ１３８が、確保されたバッファが一杯であるかどうかを判定する。そうである場合（「はい」分岐４１４）、ＣＰＵ１３８は、確保されたバッファをバッファ・プール１４２内の使用バッファのリストに加え（ブロック４１６）、制御はブロック４０２に戻る。そうでない場合（「いいえ」分岐４１８）、制御はブロック４０４に戻り、その場合、ＣＰＵ１３８は、一杯でない、既存の確保されたバッファを使用し続ける。
【００３５】
ブロック４０６において、ＣＰＵ１３８がメタデータ・トラックを更新する必要がないと判定された場合（「いいえ」分岐４２０）、制御はブロック４０２に戻る。
【００３６】
したがって、図４は、解放バッファを提供するためにバッファ・プール１４２が管理されるやり方、およびバッファ・プール１４２で使用バッファが生成され配置されるやり方を示す。
【００３７】
図５は、或る実施形態による、バックグラウンド・タスクが、メタデータ・トラックを非同期的に更新するやり方を示すフローチャート５００を示す。或る実施形態において、図５に示す動作は、記憶制御装置１０２において実行される１つまたは複数のバックグラウンド・タスク１３４によって記憶制御装置１０２内で実施することができる。
【００３８】
制御がブロック５０２から開始し、その場合、バックグラウンド・タスク１３４が、動作を実行することを開始し、または動作を実行し続ける。バックグラウンド・タスク１３４が、バッファ・プール１４２内に使用バッファがあるかどうかを判定する（ブロック５０４）。そうである場合（「はい」分岐５０６）、バックグラウンド・タスク１３４は、バッファ・プール１４２からの使用バッファの処理を始動する（ブロック５０８）。バックグラウンド・タスク１３４が使用バッファのエントリを処理し、１つまたは複数のメタデータ・トラック１２８、１３０を更新する（ブロック５１０）。したがって、メタデータ・トラック１２８、１３０の非同期更新が行われる。使用バッファのすべてのエントリが処理されると、バックグラウンド・タスク１３４は、使用バッファが解放バッファであることを示し（ブロック５１２）、制御はブロック５０２に戻る。
【００３９】
ブロック５０４において、バックグラウンド・タスク１３４が、バッファ・プール１４２内に使用バッファがない（「いいえ」分岐５１４）と判定した場合（ブロック５０４）、制御はブロック５０２に戻る。
【００４０】
したがって、図５に示す動作は、メタデータ・トラックを非同期的に更新するメカニズムを示し、すなわち、メタデータ・トラックの更新は、同期入出力動作に対して非同期である。
【００４１】
図６は、或る実施形態による、バックグラウンド・タスク１３４がメタデータ・トラック１２８、１３０を非同期的に更新するやり方を示す別のフローチャート６００を示す。或る実施形態において、図６に示す動作は、記憶制御装置１０２において実行される１つまたは複数のバックグラウンド・タスクによって記憶制御装置１０２内で実施することができる。
【００４２】
制御がブロック６０２から開始し、その場合、バックグラウンド・タスク１３４が、動作を実行することを開始し、または動作を実行し続ける。バックグラウンド・タスク１３４は、所定の数（例えば、１０）の使用バッファをバッファ・プール１４２から選択する（ブロック６０４）。制御はブロック６０６に進み、その場合、バックグラウンド・タスク１３４が、１つまたは複数の群を生成し、群が、同じメタデータ・トラックの更新情報を記憶する選択されたバッファにおけるすべてのエントリを記憶する。群における各エントリに対して、バックグラウンド・タスク１３４は、更新情報がエントリに記憶されたメタデータ・トラックにアクセスし、その更新情報を用いてメタデータ・トラックを更新し（ブロック６０８）、すなわち、群の各エントリが、同じメタデータ・トラックを更新するのに使用される。ブロック６０６において生成された１つまたは複数の群は、ブロック６０８において処理される。
【００４３】
ブロック６０８から、制御はブロック６１０に進み、その場合、すべての群が処理されると、ブロック６０４においてバックグラウンド・タスクによって選択された使用バッファが、バッファ・プール１４２内の解放バッファであると示される。
【００４４】
したがって、図６は、バッファ・プール１４２における複数の使用バッファを解放バッファに変換するメカニズムを示す。
【００４５】
図７は、或る実施形態による、バッファ・プール１４２内に十分な数の解放バッファを維持するようにバックグラウンド・タスクの数が調整されるやり方を示すフローチャート７００を示す。図７に示す動作は、記憶制御装置１０２において実行されるバックグラウンド・タスク調整プロセス１３６によって実施することができる。
【００４６】
制御がブロック７０２から開始し、その場合、バックグラウンド・タスク調整プロセス１３６が始動される。ブロック７０２から、制御はブロック７０４およびブロック７０６と並行して進む。
【００４７】
ブロック７０２において、バックグラウンド・タスク調整プロセス１３６が、バッファ・プール１４２内の解放バッファの数が最小閾値（例えば、２０）よりも多いかどうかを判定する。そうである場合（「はい」分岐７０８）、制御はブロック７１０に進み、その場合、バックグラウンド・タスク調整プロセス１３６が、現在の数のバックグラウンド・タスクを維持し続ける。そうでない場合（「いいえ」分岐７１２）、バックグラウンド・タスク調整プロセス１３６は、バックグラウンド・タスクの数を「Ｎ」だけインクリメントする（ブロック７１４）（例えば、「Ｎ」が数５を表す場合、バックグラウンド・タスクの数が５だけ増加される）。したがって、解放バッファの数が最小閾値に達するか、またはそれを下回る場合、より多くのバックグラウンド・タスクが、使用バッファが解放バッファに変換される速度を増加させるのに使用される。
【００４８】
ブロック７０６において、バックグラウンド・タスク調整プロセス１３６が、バッファ・プール１４２内の解放バッファの数が最大閾値（例えば、３０）よりも少ないかどうかを判定する。そうである場合（「はい」分岐７１６）、制御はブロック７１８に進み、その場合、バックグラウンド・タスク調整プロセス１３６が現在の数のバックグラウンド・タスクを維持し続ける。そうでない場合（「いいえ」分岐７２０）、バックグラウンド・タスク調整プロセス１３６が、バックグラウンド・タスクの数を「Ｍ」だけデクリメントする（ブロック７２２）（例えば、「Ｍ」が数２を表す場合、バックグラウンド・タスクの数は２だけ減少される）。したがって、解放バッファの数が最大閾値に達するか、またはそれを上回る場合、より少ないバックグラウンド・タスクが、使用バッファが解放バッファに変換される速度を減少させるのに使用される。
【００４９】
したがって、図７は、使用バッファを解放バッファに変換するのに使用されるバックグラウンド・タスクの数を調整することによって、最小閾値数から最大閾値数の間の適切な数の解放バッファを維持する、或る実施形態を示す。
【００５０】
図８は、或る実施形態による、同期入出力動作のため生成されたキャッシュ・ヒットに応答してメタデータ・トラックの非同期更新が行われるやり方を示すフローチャート８００を示す。或る実施形態において、図８に示す動作は、記憶制御装置１０２によって実施することができる。
【００５１】
制御がブロック８０２から開始し、その場合、バス・インターフェース１１６、１１８にわたる入出力（Ｉ／Ｏ）コマンドを受け取ることに応答して、キャッシュ・ヒットが生成される。バス・インターフェース１１６、１１８にわたるＩ／Ｏコマンドは、同期入出力コマンドである。メタデータ・トラックの更新が、キャッシュ・ヒットを生成することに応答して、Ｉ／Ｏコマンドを処理する中央処理装置（ＣＰＵ）１３８に関連付けられたバッファに記憶される（ブロック８０４）。
【００５２】
ブロック８０４から、制御がブロック８０６に進み、その場合、メタデータ・トラックが、バッファ内のメタデータ・トラックの記憶された更新を用いてバッファから非同期的に更新される（すなわち、同期入出力動作が、メタデータ・トラックが更新された時間においてすでに完了している可能性がある）。
【００５３】
したがって、図１〜８は、ＣＰＵによる同期入出力コマンドの処理により、キャッシュ・ヒットのためメタデータ・トラックの更新の必要が生成される或る実施形態を示す。しかし、同期入出力コマンドは、メタデータ・トラックへの更新を待つことなく完了することが可能である。ＣＰＵは、同期入出力コマンドの処理の完了の前に、ＣＰＵに独占的に確保されたバッファにメタデータ・トラックへの更新を記憶する。バックグラウンド・タスクが、都合の良い時間にバッファからメタデータ・トラックに更新を複写する。結果として、同期入出力動作は、メタデータ・トラックへの更新を待つことなく適時に完了することができる。
【００５４】
クラウド・コンピューティング環境
クラウド・コンピューティングとは、管理努力またはサービス・プロバイダの相互作用を最小限に抑えて、迅速にプロビジョニングし、リリースすることができる構成可能なコンピューティング資源の共有プール（例えば、ネットワーク、サーバ、記憶装置、アプリケーション、およびサービス）への便利なオンデマンド・ネットワーク・アクセスを可能にするモデルのことである。
【００５５】
次に図９を参照して、或る実施形態のクラウド・コンピューティング環境５０を示す。図示するように、クラウド・コンピューティング環境５０は、１つまたは複数のクラウド・コンピューティング・ノード１０を備え、それと、例えば、パーソナル・デジタル・アシスタント（ＰＤＡ）または携帯電話５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃ、または自動車コンピュータ・システム５４Ｎあるいはその組合せなど、クラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスとが、通信することができる。クラウド・コンピューティング・ノード１０は、相互に通信することができる。それらは、プライベート、コミュニティ、パブリック、または上記に説明したハイブリッド・クラウド、またはその組合せなど、物理的にまたは仮想的に１つまたは複数のネットワークにおいて群を成す（図示せず）ことができる。これにより、クラウド・コンピューティング環境５０は、インフラストラクチャ、プラットフォームまたはソフトウェアあるいはその組合せを、クラウド・コンシューマがそのためにローカル・コンピューティング・デバイス上に資源を維持する必要がないサービスとして提供することが可能になる。図９に示すコンピューティング・デバイス５４Ａ〜Ｎの種類が、例示的だけであることが意図されていること、およびクラウド・コンピューティング・ノード１０およびクラウド・コンピューティング環境５０が、任意の種類のネットワークまたはネットワーク・アドレス可能接続あるいはその両方にわたって任意の種類のコンピュータ化されたデバイスと通信することができる（例えば、ウェブ・ブラウザを使用して）ことが理解される。
【００５６】
次に図１０を参照して、クラウド・コンピューティング環境５０（図９）によって提供される機能抽象化層の組を示す。図１０に示す構成要素、層、および機能が例示的だけであることが意図されていること、および本発明の実施形態がそれに限定されないことをあらかじめ理解されたい。
【００５７】
ハードウェアおよびソフトウェア層６０が、ハードウェアおよびソフトウェア構成要素を含む。ハードウェア構成要素の例には、メインフレーム、一例においてＩＢＭ  ｚＳｅｒｉｅｓシステムと、ＲＩＳＣ（縮小命令セット・コンピュータ）アーキテクチャ・ベースのサーバ、一例においてＩＢＭ  ｐＳｅｒｉｅｓシステム、ＩＢＭ  ｘＳｅｒｉｅｓシステム、ＩＢＭ  ＢｌａｄｅＣｅｎｔｅｒシステムと、記憶デバイスと、ネットワークおよびネットワーキング構成要素とが含まれる。ソフトウェア構成要素の例には、ネットワーク・アプリケーション・サーバ・ソフトウェア、一例においてＩＢＭ  ＷｅｂＳｐｈｅｒｅアプリケーション・サーバ・ソフトウェアと、データベース・ソフトウェア、一例においてＩＢＭ  ＤＢ２データベース・ソフトウェアとが含まれる（ＩＢＭ、ｚＳｅｒｉｅｓ、ｐＳｅｒｉｅｓ、ｘＳｅｒｉｅｓ、ＢｌａｄｅＣｅｎｔｅｒ、ＷｅｂＳｐｈｅｒｅ、およびＤＢ２は、世界各地の多くの法域において登録されたＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの商標である）。
【００５８】
仮想化層６２は、抽象化層を提供し、抽象化層から、仮想サーバと、仮想記憶域と、仮想プライベート・ネットワークを含む仮想ネットワークと、仮想アプリケーションおよびオペレーティング・システムと、仮想クライアントとの仮想エンティティの例を提供することができる。
【００５９】
一例において、管理層６４は、以下に説明する機能を提供することができる。資源プロビジョニングは、クラウド・コンピューティング環境内のタスクを実施するのに利用されるコンピューティング資源および他の資源の動的調達を提供する。計量および価格設定は、資源がクラウド・コンピューティング環境内で利用されるときの原価管理、およびこれらの資源の消費に対する課金または請求書発行を提供する。一例において、これらの資源は、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマおよびタスクの同一性検証ならびにデータおよび他の資源の保護を提供する。ユーザ・ポータルは、コンシューマおよびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング資源配分および管理を提供する。サービス品質保証契約（ＳＬＡ：Service Level Agreement）の計画および履行は、将来の要件がＳＬＡに従って予測されるクラウド・コンピューティング資源の事前手配および調達を提供する。
【００６０】
作業負荷層６６は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができる作業負荷および機能の例には、マッピングおよびナビゲーションと、ソフトウェア開発およびライフサイクル管理と、仮想教室教育配信と、データ分析処理と、トランザクション処理と、図１〜９に示した同期入出力６８におけるメタデータ・トラックの非同期書込みとが含まれる。
【００６１】
追加の実施形態の詳細
説明した動作は、ソフトウェア、ファームウェア、ハードウェア、または任意のその組合せを作り出す標準プログラミングまたはエンジニアリング技法あるいはその両方を使用して、方法、装置またはコンピュータ・プログラム製品として実装することができる。したがって、実施形態の態様は、全体にハードウェアの実施形態、全体にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）またはすべて全体的に本明細書において「回路」、「モジュール」または「システム」と称することができる、ソフトウェア的態様とハードウェア的態様とを組み合わせた実施形態の形をとることができる。さらに、実施形態の態様は、コンピュータ・プログラム製品の形をとることができる。コンピュータ・プログラム製品は、プロセッサに本実施形態の態様を実行させるためのコンピュータ可読プログラム命令を有する１つ（または複数）のコンピュータ可読記憶媒体を含むことができる。
【００６２】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し、記憶することができる有形デバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または前述の任意の適切な組合せでもよいが、それに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピ・ディスク、パンチカードまたは命令を記録させた溝における隆起構造などの機械的にエンコードされたデバイス、および前述の任意の適切な組合せが含まれる。コンピュータ可読記憶媒体は、本明細書では、電波または他の自由に伝搬する電磁波、導波管または他の伝送媒体中を伝搬する電磁波（例えば、光ファイバ・ケーブル中を通過する光パルス）、または電線中を伝送される電気信号などの、それ自体一過性信号であると解釈してはならない。
【００６３】
本明細書に説明したコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスに、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークまたはワイヤレス・ネットワークあるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを備えることができる。各コンピューティング／処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、コンピュータ可読プログラム命令をそれぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体における記憶のために転送する。
【００６４】
本実施形態の動作を実行するコンピュータ可読プログラム命令は、Ｓｍａｌｌｔａｌｋ（Ｒ）またはＣ＋＋などのオブジェクト指向プログラミング言語および「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または１つまたは複数のプログラミング言語の任意の組合せに書き込まれたソース・コードまたはオブジェクト・コードのいずれかでもよい。コンピュータ可読プログラム命令は、全体にユーザのコンピュータで、部分的にユーザのコンピュータで、独立型ソフトウェア・パッケージとして、部分的にユーザのコンピュータおよび部分的に遠隔コンピュータで、または全体に遠隔コンピュータもしくはサーバで実行することができる。後者のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む、任意の種類のネットワークを通してユーザのコンピュータに接続することができ、または外部コンピュータと接続を行うことができる（例えば、インターネット・サービス・プロバイダを使用してインターネットを通して）。いくつかの実施形態において、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル論理アレイ（ＰＬＡ）を含む電子回路は、本実施形態の態様を実施するために、電子回路を個人向けにするコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行することができる。
【００６５】
本実施形態の態様は、本発明の実施形態による、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書に説明する。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
【００６６】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実装する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて、機械を作り出すものであってもよい。これらのコンピュータ可読プログラム命令は、命令を記憶させたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実装する命令を含んだ製品を備えるように、コンピュータ可読記憶媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに特定の方式で機能するように指示できるものであってもよい。
【００６７】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイスで実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実装するように、コンピュータによって実装されるプロセスを作出するべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル装置または他のデバイス上で一連の動作ステップを実施させるものであってもよい。
【００６８】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点において、フローチャートまたはブロック図における各ブロックは、命令のモジュール、セグメント、または部分を表すことができ、それは指定された論理機能（複数可）を実装する１つまたは複数の実行可能な命令を備える。いくつかの代替実装形態において、ブロックに注記された機能は、図に注記された順序以外で起きる場合がある。例えば、連続して示す２つのブロックは、実際には、実質的に同時に実行することができ、またはブロックは、時には、関与する機能により、逆順序で実行することができる。ブロック図またはフローチャート図またはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能または動作を実施し、または専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェア・ベースのシステムによって実装することができることにも留意されよう。
【００６９】
図１１は、或る実施形態による、記憶制御装置１０２、ホスト１０４、１０６、または他の計算デバイスに含めることができる或る要素を示すブロック図を示す。システム１１００は、或る実施形態において、少なくともプロセッサ１１０４を含むことができる回路１１０２を含むことができる。システム１１００は、メモリ１１０６（例えば、揮発性メモリ・デバイス）および記憶装置１１０８を含むこともできる。記憶装置１１０８は、不揮発性メモリ・デバイス（例えば、ＥＥＰＲＯＭ、ＲＯＭ、ＰＲＯＭ、フラッシュ、ファームウェア、プログラマブル論理など）、磁気ディスク・ドライブ、光ディスク・ドライブ、テープ・ドライブなどを含むことができる。記憶装置１１０８は、内部記憶デバイス、付属記憶デバイスまたはネットワーク・アクセス可能記憶デバイスあるいはその組合せを備えることができる。システム１１００は、メモリ１１０６にロードし、プロセッサ１１０４または回路１１０２によって実行することができるコード１１１２を含んだプログラム論理１１１０を含むことができる。或る実施形態において、コード１１１２を含んだプログラム論理１１１０は、記憶装置１１０８に記憶することができる。或る他の実施形態において、プログラム論理１１１０は、回路１１０２に実装することができる。システム１１００における構成要素の１つまたは複数は、バスを介して、または他の結合または接続１１１４を介して通信することができる。したがって、図１１はプログラム論理１１１０を他の要素と別個に示すが、プログラム論理１１１０は、メモリ１１０６または回路１１０２あるいはその両方に実装することができる。
【００７０】
或る実施形態は、人またはコンピュータ可読コードをコンピューティング・システムに統合した自動処理によってコンピューティング命令を展開する方法を対象とすることができ、コンピューティング・システムと組み合わせたコードは、説明した実施形態の動作を実施するように有効にされる。
【００７１】
「１つの実施形態（an embodiment）」、「実施形態（embodiment）」、「複数の実施形態（embodiments）」、「その実施形態（the embodiment）」、「それらの実施形態（the embodiments）」、「１つまたは複数の実施形態（one or more embodiments）」、「いくつかの実施形態（some embodiments）」、および「一実施形態（one embodiment）」という用語は、特に明示的に他の指定をしていない限り、「１つまたは複数の（ただし、すべてのではない）本発明の実施形態（複数可）（one or more(but not all)embodiments of the present invention(s)）」を意味する。
【００７２】
「含む（including）」、「備える（comprising）」、「有する（having）」という用語およびその変形は、特に明示的に他の指定をしていない限り、「含むが限定されない（including but not limited to）」を意味する。
【００７３】
列挙された品目のリストは、特に明示的に他の指定をしていない限り、品目のいずれかまたはすべてが相互排他的であることを暗示しない。
【００７４】
「或る（a）」、「１つの（an）」および「その（the）」という用語は、特に明示的に他の指定をしていない限り、「１つまたは複数の（one or more）」を意味する。
【００７５】
互いに通信するデバイスは、特に明示的に他の指定をしていない限り、互いに連続して通信する必要はない。さらに、互いに通信するデバイスは、１つまたは複数の媒介を通して直接または間接的に通信することができる。
【００７６】
互いに通信するいくつかの構成要素を有する実施形態の説明は、すべてのそのような構成要素が必要とされることを暗示しない。それどころか、様々な任意選択の構成要素が、非常に様々な、本発明の可能な実施形態を示すために説明されている。
【００７７】
さらに、プロセス・ステップ、方法ステップ、またはアルゴリズムなどが、順番に説明されている可能性があるが、そのようなプロセス、方法およびアルゴリズムは、代替順序で作業するように構成することができる。言い換えれば、説明している可能性のあるステップの任意の順番または順序は、必ずしもステップをその順序で実施するという要件を示していない。本明細書に説明したプロセスのステップは、実際的な任意の順序で実施することができる。さらに、いくつかのステップは、同時に実施することができる。
【００７８】
単一のデバイスまたは物品が本明細書に説明されているとき、１つよりも多くのデバイス／物品（それらが協働するかどうかにかかわらず）が単一のデバイス／物品の代わりに使用できることは容易に明らかであろう。同様に、１つよりも多くのデバイスまたは物品が本明細書に説明されている場合（それらが協働するかどうかにかかわらず）、単一のデバイス／物品を１つよりも多くのデバイスまたは物品の代わりに使用できること、または異なる数のデバイス／物品を示された数のデバイスまたはプログラムの代わりに使用できることが容易に明らかであろう。デバイスの機能または特徴あるいはその両方は、そのような機能／特徴を有するものとして明示的に説明されていない１つまたは複数の他のデバイスによって代案として具現化することができる。したがって、本発明の他の実施形態は、デバイス自体を含む必要がない。
【００７９】
図に示されていた可能性がある少なくとも或る動作は、或る順序で起きる或る事象を示す。代替実施形態において、或る動作は、異なる順序で実施し、変更し、または除去することができる。さらに、ステップは、上記に説明した論理に追加し、説明した実施形態に依然として従うことができる。さらに、本明細書に説明した動作は、順番に起きることができ、または或る動作は、並行して処理することができる。さらに、動作は、単一の処理ユニットによって、または分散処理ユニットによって実施することができる。
【００８０】
本発明の様々な実施形態の前述の説明は、図示および説明のために提示されてきた。網羅的であること、または本発明を開示された正確な形に限定することは意図されていない。多くの変更および変形が、上記の教示に照らして可能である。本発明の範囲がこの詳細な説明によって限定されず、むしろ、本明細書に添付された特許請求の範囲によって限定されることが意図されている。上記の明細、例およびデータは、本発明の製造および構成の使用の完全な説明を提供する。本発明の多くの実施形態は、本発明の思想および範囲から逸脱することなく製作することができるので、本発明は、添付される特許請求の範囲に存在する。
【図１】
2020532803.tif 000003
【図２】
2020532803.tif 000004
【図３】
2020532803.tif 000005
【図４】
2020532803.tif 000006
【図５】
2020532803.tif 000007
【図６】
2020532803.tif 000008
【図７】
2020532803.tif 000009
【図８】
2020532803.tif 000010
【図９】
2020532803.tif 000011
【図１０】
2020532803.tif 000012
【図１１】
2020532803.tif 000013
【手続補正書】
【提出日】令和2年9月4日(2020.9.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
同期入出においてメタデータ・トラックの非同期更新をする方法であって、
バス・インターフェースにより入出力（Ｉ／Ｏ）コマンドを受け取ることに応答して、キャッシュ・ヒットを生成することと、
前記キャッシュ・ヒットを生成することに応答して、前記Ｉ／Ｏコマンドを処理する中央処理装置（ＣＰＵ）に関連付けられたバッファにメタデータ・トラックの更新を記憶することと、
前記バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記バッファから前記メタデータ・トラックを非同期的に更新することと
を含む、方法。
【請求項２】
前記ＣＰＵによる前記Ｉ／Ｏコマンドの処理が、前記バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記バッファから前記メタデータ・トラックを非同期的に更新する前に完了する、請求項１に記載の方法。
【請求項３】
前記バッファが、バッファ・プールからの前記ＣＰＵに確保された解放バッファであり、前記方法が、
前記バッファが前記ＣＰＵによってメタデータ・トラックの更新で満たされることに応答して、前記バッファを前記バッファ・プールに戻すことと、
前記バッファ・プールに戻された前記バッファが使用バッファであることを示すことと
をさらに含む、請求項２に記載の方法。
【請求項４】
複数のバックグラウンド・タスクのうちのバックグラウンド・タスクが、前記メタデータ・トラックを非同期的に更新する動作を実施する、請求項３に記載の方法。
【請求項５】
前記使用バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記使用バッファから前記メタデータ・トラックを非同期的に更新することに応答して、前記使用バッファが解放バッファであることを示すことをさらに含む、請求項４に記載の方法。
【請求項６】
複数のＣＰＵが、複数のバス・インターフェースによる複数のＩ／Ｏコマンドを処理し、前記方法が、
前記バッファ・プール内に十分な数の解放バッファを維持するために前記複数のバックグラウンド・タスクの数を調整することであって、前記バッファ・プール内の解放バッファの前記十分な数が、第１の閾値数よりも多く、第２の閾値数よりも少ない、前記調整することをさらに含む、請求項５に記載の方法。
【請求項７】
複数の調整可能な数のバックグラウンド・タスクが、複数のメタデータ・トラックの記憶された更新を用いて複数のバッファから前記複数のメタデータ・トラックを非同期的に更新し、前記複数のバッファ内の前記前記複数のメタデータ・トラックの前記記憶された更新が、複数のＣＰＵによって生成される、請求項１に記載の方法。
【請求項８】
同期入出においてメタデータ・トラックの非同期更新をするシステムであって、
１つまたは複数の中央処理装置（ＣＰＵ）を備え、
バス・インターフェースにより入出力（Ｉ／Ｏ）コマンドを受け取ることに応答して、キャッシュ・ヒットを生成することと、
前記キャッシュ・ヒットを生成することに応答して、前記Ｉ／Ｏコマンドを処理する中央処理装置（ＣＰＵ）に関連付けられたバッファ内のメタデータ・トラックの更新を記憶することと、
前記バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記バッファから前記メタデータ・トラックを非同期的に更新することと
を前記ＣＰＵに実行させる、システム。
【請求項９】
同期入出においてメタデータ・トラックの非同期更新をするコンピュータ・プログラムであって、
バス・インターフェースにより入出力（Ｉ／Ｏ）コマンドを受け取ることに応答して、キャッシュ・ヒットを生成することと、
前記キャッシュ・ヒットを生成することに応答して、前記Ｉ／Ｏコマンドを処理する中央処理装置（ＣＰＵ）に関連付けられたバッファにメタデータ・トラックの更新を記憶することと、
前記バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記バッファから前記メタデータ・トラックを非同期的に更新することと
を前記ＣＰＵに実行させる、コンピュータ・プログラム製品。
【請求項１０】
バス・インターフェースを介してホスト計算デバイスに通信可能に結合された記憶制御装置であって、
キャッシュと、
複数のバッファと
を備え、前記記憶制御装置が動作を実施し、前記動作が、
前記ホスト計算デバイスから前記バス・インターフェースを介して入出力（Ｉ／Ｏ）コマンドを受け取ることに応答して、前記キャッシュ上にキャッシュ・ヒットを生成することと、
前記キャッシュ・ヒットを生成することに応答して、前記Ｉ／Ｏコマンドを処理する中央処理装置（ＣＰＵ）に関連付けられたバッファにメタデータ・トラックの更新を記憶することと、
前記バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記バッファから前記メタデータ・トラックを非同期的に更新することと
を含む、記憶制御装置。
【請求項１１】
前記ＣＰＵによる前記Ｉ／Ｏコマンドの処理が、前記バッファ内の前記メタデータ・トラックの前記記憶された更新を用いて前記バッファから前記メタデータ・トラックを非同期的に更新する前に完了する、請求項１０に記載の記憶制御装置。
【請求項１２】
前記バッファが、前記複数のバッファから生成された、バッファ・プールからの前記ＣＰＵに確保された解放バッファであり、前記動作が、
前記バッファが前記ＣＰＵによってメタデータ・トラックの更新で満たされることに応答して、前記バッファを前記バッファ・プールに戻すことと、
前記バッファ・プールに戻された前記バッファが使用バッファであることを示すことと
をさらに含む、請求項１１に記載の記憶制御装置。
【請求項１３】
複数のバックグラウンド・タスクのうちのバックグラウンド・タスクが、前記メタデータ・トラックを非同期的に更新する動作を実施する、請求項１２に記載の記憶制御装置。
【国際調査報告】
2020532803.tif 000014
2020532803.tif 000015