(57)【要約】      （修正有）【課題】固定サイズのキャッシュにおける書き込み要求の数を調整するための装置、システム、及び方法の提供。【解決手段】割り当てられたペーシング値に基づいて書き込み要求の処理を差別化し、キャッシュの書き込み要求数を調整する装置、システム、方法。優先順位モジュールは、オペレーティング・システムが定めた入力／出力優先順位値に基づいて、書き込み要求の優先順位を決定する。評価モジュールは、固定サイズのキャッシュ内に書き込み要求を格納するための格納要求レベルを評価する。割り当てモジュールは、優先順位に基づき、格納要求レベルに応答して、ペーシング値を書き込み要求に割り当てる。許可モジュールは、書き込み要求のペーシング値が満たされた時点でアプリケーションが次の書き込み要求を出すことを許可する。ペーシング値によって指定された時間が満了するまで待つことによって、ペーシング値が満たされる。【選択図】図１２
2007183926.tif 000002
【特許請求の範囲】
【請求項１】
固定サイズのキャッシュにおける書き込み要求の数を調整するための操作を行うように、デジタル処理装置によって実行可能な機械可読命令のプログラムであって、前記操作が、
前記書き込み要求の特性に基づいて、アプリケーションによって生成された書き込み要求についての優先順位を決定するための操作と、
固定サイズのキャッシュ内に書き込み要求を格納するための格納要求レベルを評価するための操作と、
前記格納要求レベルに応答して、前記優先順位に基づいてペーシング値を前記書き込み要求に割り当てるための操作と、
前記書き込み要求のペーシング値を満たすことに応答して、次の書き込み要求を許可するための操作と、
を含むプログラム。
【請求項２】
前記ペーシング値は、実質的にゼロミリ秒から実質的に５秒までの間の時間を含み、ペーシング値を満たすことは、前記時間が満了するまで待つことを含む、請求項１に記載のプログラム。
【請求項３】
前記ペーシング値は、所定の固定サイズのキャッシュの占有率を含み、現在の固定サイズのキャッシュの占有率が、前記所定の固定サイズのキャッシュの占有率より低いとき、該ペーシング値が満たされる、請求項１に記載のプログラム。
【請求項４】
格納要求レベルを評価するための前記操作は、受け取った書き込み要求の速度をしきい値と比較することをさらに含む、請求項１に記載のプログラム。
【請求項５】
格納要求レベルを評価するための前記操作は、前記固定サイズのキャッシュ内に格納された１組のストレージ・ボリュームと関連付けられた書き込み要求のカウントをしきい値と比較することをさらに含む、請求項１に記載のプログラム。
【請求項６】
割り当てるための前記操作は、第１の優先順位を有する書き込み要求に第１のペーシング値を割り当てること、及び前記第１の優先順位とは異なる優先順位を有する書き込み要求に第２のペーシング値を割り当てることをさらに含む、請求項１に記載のプログラム。
【請求項７】
割り当てるための前記操作は、１組の優先順位と１組のペーシング値との間の一対一対応に基づいて、ペーシング値を前記書き込み要求に割り当てることをさらに含む、請求項１に記載のプログラム。
【請求項８】
前記特性は、オペレーティング・システムによって定められた入力／出力優先順位値である、請求項１に記載のプログラム。
【請求項９】
固定サイズのキャッシュにおける書き込み要求の数を調整するためのシステムであって、
固定サイズのキャッシュと、
アプリケーションと、
少なくとも１つのストレージ・ボリュームと、
前記アプリケーションによって生成された書き込み要求を調査するように構成された調査モジュールと、
前記書き込み要求の特性に基づいて、該書き込み要求についての優先順位を決定するように構成された優先順位モジュールと、
前記固定サイズのキャッシュ内に書き込み要求を格納するために格納要求レベルを評価するように構成された評価モジュールと、
前記格納要求レベルに応答して、前記優先順位に基づいて前記書き込み要求にペーシング値を割り当てるように構成された割り当てモジュールと、
前記書き込み要求の前記ペーシング値を満たすことに応答して、次の書き込み要求を許可するように構成された許可モジュールと
を含むストレージ・コントローラと、
前記固定サイズのキャッシュと前記ストレージ・ボリュームとの間の通信を容易にするように構成された第１の通信バスと、
前記アプリケーション、ストレージ・コントローラ、及び固定サイズのキャッシュ間の通信を容易にするように構成された第２の通信バスと
を備えるシステム。
【請求項１０】
前記ペーシング値は、実質的にゼロミリ秒から実質的に５秒までの間の時間を含み、ペーシング値を満たすことは、前記時間が満了するまで待つことを含む、請求項９に記載のシステム。
【請求項１１】
前記アプリケーションは、前記ストレージ・コントローラが元の書き込み要求を確認するまで付加的な書き込み要求を保留するようにさらに構成される、請求項９に記載のシステム。
【請求項１２】
前記評価モジュールは、受け取った書き込み要求の速度をしきい値と比較するようにさらに構成される、請求項９に記載のシステム。
【請求項１３】
前記割り当てモジュールは、第１の優先順位を有する書き込み要求に第１のペーシング値を割り当て、前記第１の優先順位とは異なる優先順位を有する書き込み要求に第２のペーシング値を割り当てるようにさらに構成される、請求項９に記載のシステム。
【請求項１４】
ペーシング値を書き込み要求に割り当てるための装置であって、
アプリケーションによって生成された書き込み要求と関連付けられた、オペレーティング・システムが定めた入力／出力優先順位値を読み取るように構成された調査モジュールと、
前記書き込み要求の前記入力／出力優先順位値に基づいて、該書き込み要求についての優先順位を決定するように構成された優先順位モジュールと、
固定サイズのキャッシュ内に格納された、１組のストレージ・ボリュームと関連付けられた書き込み要求のカウントをしきい値と比較することによって、書き込み要求を固定サイズのキャッシュ内に格納するための格納要求レベルを評価するように構成された評価モジュールと、
前記格納要求レベルに応答して、前記優先順位に基づいてペーシング値を前記書き込み要求に割り当てるように構成された割り当てモジュールであって、前記ペーシング値は実質的にゼロミリ秒から実質的に５秒までの間の時間を含み、該ペーシング値を満たすことは、前記時間が満了するまで待つことを含む、割り当てモジュールと、
前記書き込み要求の前記ペーシング値を満たすことに応答して、次の書き込み要求を許可するように構成された許可モジュールと
を備える装置。
【請求項１５】
前記割り当てモジュールは、第１の優先順位を有する書き込み要求に第１のペーシング値を割り当て、前記第１の優先順位とは異なる優先順位を有する書き込み要求に第２のペーシング値を割り当てるようにさらに構成される、請求項１４に記載の装置。
【請求項１６】
前記割り当てモジュールは、１組の優先順位と１組のペーシング値との間の一対一対応に基づいて、前記書き込み要求にペーシング値を割り当てるようにさらに構成される、請求項１４に記載の装置。
【請求項１７】
コンピュータ可読コードをコンピュータ・システム内に統合するステップを含むコンピューティング・インフラストラクチャを配置する方法であって、前記コンピュータ・システムと協働する前記コードは、固定サイズのキャッシュにおける書き込み要求の数を調整することができる、前記方法が、
アプリケーションによって生成された書き込み要求を調査するステップと、
前記書き込み要求の特性に基づいて、該書き込み要求についての優先順位を決定するステップと、
固定サイズのキャッシュ内に書き込み要求を格納するための格納要求レベルを評価するステップと、
前記格納要求レベルに応答して、前記優先順位に基づいて、ペーシング値を前記書き込み要求に割り当てるステップと、
前記書き込み要求の前記ペーシング値を満たすことに応答して、次の書き込み要求を許可するステップと
を含む方法。
【請求項１８】
前記ペーシング値は時間を含み、該ペーシング値を満たすことは、前記時間が満了するまで待つステップを含む、請求項１７に記載の方法。
【請求項１９】
格納要求レベルを評価する前記ステップは、固定サイズのキャッシュ内に格納された１組のストレージ・ボリュームと関連付けられた書き込み要求のカウントをしきい値と比較するステップをさらに含む、請求項１７に記載の方法。
【請求項２０】
前記割り当てるステップは、１組の優先順位と１組のペーシング値との間の一対一対応に基づいて、ペーシング値を前記書き込み要求に割り当てるステップをさらに含む、請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書き込み要求をキャッシングに関し、より具体的には、固定サイズのキャッシュにおける書き込み要求の数を調整することに関する。
【背景技術】
【０００２】
殆ど全てのコンピュータ・ソフトウェア・アプリケーションが、情報を格納する。ソフトウェア・アプリケーションは、ハードディスク、テープ・ドライブ、ソリッド・ステート・メモリ・デバイス、又は他の記憶装置のような揮発性又は不揮発性のストレージ・ボリューム上に情報を格納する。幾つかのコンピュータ・システムにおいては、ストレージ・ボリュームは、ソフトウェア・アプリケーションが実行されているマシンと同じマシンの一部である。他のコンピュータ・システムにおいて、ストレージ・ボリュームは、アプリケーションから物理的に分離されている。これらのシステムにおいては、バス又はネットワークが、ソフトウェア・アプリケーション及びストレージ・ボリュームを接続し、ソフトウェア・アプリケーションとストレージ・ボリュームとの間の通信を可能にする。
【０００３】
多くの場合、ストレージ・ボリュームがアプリケーションから物理的に分離されているとき、多数のアプリケーションが単一のストレージ・ボリュームにアクセスでき、同時に情報をストレージ・ボリュームに書き込もうと試みることが可能である。その結果、アプリケーションは、ストレージ・ボリュームが別のアプリケーションからの書き込み要求に対応するのに忙しい際に、情報をストレージ・ボリュームに書き込もうと試みることがある。したがって、ストレージ・ボリュームが、必ずしも、書き込み要求を受信した直後に該書き込み要求を実行できるとは限らない。
【０００４】
この問題に対する従来の手法は、ストレージ・ボリュームが書き込み要求を実行することができるまで、書き込み要求をキャッシュ内に格納するというものである。一般的に、キャッシュは、書き込み要求を受け取った順番に格納する。ストレージ・ボリュームが利用可能になると、書き込み要求は、通常、それらを受け取った順番にキャッシュから取り出され、実行される。従来より、キャッシュは、アプリケーションと同じマシン上に物理的に配置される。
【０００５】
書き込み要求のキャッシングは、書き込み要求のためのスペースがキャッシュ内にある限り有効である。しかしながら、従来のキャッシュは、一般に、固定サイズのものであり、これらの固定サイズのキャッシュは、特定の稼動期間中に書き込み要求でいっぱいになることがある。書き込み要求のキャッシュがいっぱいになると、アプリケーションから付加的な書き込み要求を受け入れることができない。その結果、アプリケーションは、キャッシュが空き領域を有するまで待ち、その後に書き込み要求を再実行依頼する必要がある。
【０００６】
図１は、例示的なキャッシュ１００のコンテンツを示すチャートである。例示的なキャッシュ１００は、１０個の書き込み要求スロット１０２を有する。各々のスロット１０２は、１つの書き込み要求を格納することができる。勿論、実際のキャッシュは、一般に、何百、何千、又はそれ以上のエントリを格納する。簡単にするために、示された例示的なキャッシュ１００は、１０個の書き込み要求スロット１０２を有する。
【０００７】
各々の書き込み要求は、該要求を作成するアプリケーションの名前、情報が格納されることになるストレージ・ボリューム、書き込まれることになるデータへのポインタ、又はデータ自体等のような情報を含むことができる。例示的なキャッシュ１００は、書き込み要求を作成するアプリケーションの名前１０４、及び、情報が書き込まれることになるストレージ・ボリューム１０６を示す。
【０００８】
例示的なキャッシュ１００は、３つの書き込み要求１０８、１１０、１１２を含む。「アプリケーションＡ」は、３つの書き込み要求１０８、１１０、１１２全てを実行依頼した。この例において、「アプリケーションＡ」は、１００ミリ秒毎に臨界温度データを記録するアプリケーションである。この例においては、ストレージ・ボリュームのオペレータは、「アプリケーションＡ」のオペレータとのサービス内容合意書を有し、一般にブロッキングと呼ばれる「アプリケーションＡ」の待機を必要とせずに、「アプリケーションＡ」によって出された全ての書き込み要求が、ストレージ・ボリューム上に書き込まれることを、ストレージ・ボリュームのオペレータが保証することを明記する。
【０００９】
例示的なキャッシュ１００は、書き込み要求を到着順に格納し、最も古い書き込み要求がキャッシュの下になり、最新の書き込み要求がキャッシュの上になる。「アプリケーションＡ」によって作成された第１の書き込み要求１０８は、次に実行されることになる書き込み要求である。「アプリケーションＡ」によって作成された第２の書き込み要求１１０は、第１の書き込み要求１０８の後に実行される。同様に、第３の書き込み要求１１２は、第２の書き込み要求１１０が実行された後に実行される。
【００１０】
図２は、２つのアプリケーションからの書き込み要求に対応する例示的な書き込み要求キャッシュ１３０のコンテンツを示すチャートである。「アプリケーションＡ」は、１００ミリ秒毎に温度データを記録するために、定期的な書き込み要求を送る。対照的に、「アプリケーションＢ」は、不規則な間隔で書き込み要求のバーストを送る。この例において、キャッシュ１３０は、「アプリケーションＡ」の書き込み要求１３２及び「アプリケーションＢ」の書き込み要求１３４の小さいバーストの両方のためのスペースを有する。
【００１１】
図３は、例示的な書き込み要求キャッシュ１６０のコンテンツを示すチャートである。この例示的なキャッシュ１６０において、全ての利用可能な書き込み要求スロット１０２は、定期的な「アプリケーションＡ」の書き込み要求１３２、及び「アプリケーションＢ」の書き込み要求の２つのバースト１６２、１６４でいっぱいになった。したがって、キャッシュは満杯であり、次の重要な「アプリケーションＡ」の書き込み要求のためのスペースはない。その結果、次の「アプリケーションＡ」の書き込み要求は、ドロップされるか又は遅延され、「アプリケーションＡ」のオペレータとサービス・ボリュームのオペレータとの間のサービス内容合意書に違反することになる。
【００１２】
幾つかの従来技術のシステムは、書き込み要求のペーシングを実施することによって、このオーバーフロー問題の可能性を減少させる。書き込み要求のペーシングは、アプリケーションに書き込み要求の遅延を強いることによって、キャッシュに入る書き込み要求の速度を落とすというものである。しかしながら、粒度が不足しているため、従来のペーシング方法は非常に限定的なものである。従来のペーシングの方法は、全ての書き込み要求に同じペーシング値を割り当てる。従来のペーシング方法は、キャッシュ内にある全ての書き込み要求の速度を落とし、高い優先順位の書き込み要求と低い優先順位の書き込み要求を区別することができない。さらに、従来のペーシングの方法は、宛先ストレージ・ボリュームによって、キャッシュ内の書き込み要求を区別することができない。代わりに、ペーシングが可能になったとき、キャッシュ内の書き込み要求が同じように処理される。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
上記の説明から、固定サイズのキャッシュにおける書き込み要求の数を調整するための装置、システム、及び方法に対する必要性が存在することは明らかである。この装置、システム、及び方法は、重要でない書き込み要求を遅延させることによって、重要な書き込み要求のためのスペースがキャッシュ内にあることを保証する。付加的に、この装置、システム、及び方法は、優先順位及び宛先ストレージ・ボリュームに基づいて、書き込み要求をペーシングする方法を提供するべきである。
【課題を解決するための手段】
【００１４】
本発明は、当該技術分野の現在の状態に応答して、特に、現在利用可能なキャッシュ調整方法によってまだ完全に解決されていない当該技術分野の問題及び必要性に応答して開発された。したがって、本発明は、当該技術分野における上述した欠点の多く又は全てを克服する、固定サイズのキャッシュにおける書き込み要求の数を調整するための装置、システム、及び方法を提供するものである。
【００１５】
固定サイズのキャッシュにおける書き込み要求の数を調整するための装置には、固定サイズのキャッシュにおける書き込み要求の数を調整するステップを機能的に実行するように構成された複数のモジュールを含む論理ユニットが与えられる。説明された実施形態におけるこれらのモジュールは、調査モジュール、優先順位モジュール、評価モジュール、及び、割り当てモジュールを含む。
【００１６】
調査モジュールは、アプリケーションによって出された保留中の書き込み要求を調査する。優先順位モジュールは、オペレーティング・システムによって定めることができる関連した入力／出力優先順位値に基づいて、書き込み要求についての優先順位を決定する。評価モジュールは、特定の組のストレージ・ボリュームと関連付けられた、固定サイズのキャッシュ内に格納されている書き込み要求の数をカウントすることによって、書き込み要求を固定サイズのキャッシュ内に格納するための格納要求レベルを評価する。次に、評価モジュールは、カウントをしきい値と比較する。
【００１７】
カウントがしきい値より上である場合、割り当てモジュールは、優先順位モジュールによって決定された優先順位に基づいて、ペーシング値を書き込み要求に割り当てる。ペーシング値は、実質的にゼロミリ秒から実質的に５秒までの間の時間である。１つの実施形態において、割り当てモジュールは、第１の優先順位を持つ書き込み要求に第１のペーシング値を割り当て、第１の優先順位とは異なる優先順位を持つ書き込み要求に第２のペーシング値を割り当てる。別の実施形態においては、割り当てモジュールは、１組の優先順位と１組のペーシング値との間の一対一のマッピングに基づいて、ペーシング値を書き込み要求に割り当てる。
【００１８】
許可モジュールは、元の要求と関連付けられたペーシング値が満たされた時点で、アプリケーションが、次の書き込み要求を出すことを許可する。ペーシング値は、ペーシング値によって指定された時間が満了するまで待つことによって満たされる。
【００１９】
固定サイズのキャッシュにおける書き込み要求の数を調整するための本発明によるシステムも提示される。１つの実施形態において、このシステムは、固定サイズのキャッシュ、アプリケーション、少なくとも１つのストレージ・ボリューム、第１の通信バス、第２の通信バス、及び、ストレージ・コントローラを含む。固定サイズのキャッシュは、書き込み要求を格納する。アプリケーションは、書き込み要求を出す。１つの実施形態においては、アプリケーションは、ストレージ・コントローラが元の書き込み要求を確認するまで、次の書き込み要求を保留する。
【００２０】
ストレージ・ボリュームは、書き込み要求によって指定されたデータを格納する。第１の通信バスは、固定サイズのキャッシュとストレージ・ボリュームとの間の通信を容易にする。第２の通信バスは、アプリケーションと、ストレージ・コントローラと、固定サイズのキャッシュとの間の通信を容易にする。ストレージ・コントローラは、調査モジュール、優先順位モジュール、評価モジュール、割り当てモジュール、及び許可モジュールを含む。
【００２１】
調査モジュールは、アプリケーションによって生成された書き込み要求を調査する。優先順位モジュールは、該書き込み要求の特性に基づいて、該書き込み要求の優先順位を決定する。１つの実施形態において、特性は、オペレーティング・システムによって定められた入力／出力の優先順位である。
【００２２】
評価モジュールは、固定サイズのキャッシュ内に書き込み要求を格納するための格納要求レベルを評価する。１つの実施形態において、評価モジュールは、固定サイズのキャッシュが受け取った書き込み要求の速度をしきい値と比較することによって、格納要求レベルを評価する。別の実施形態においては、評価モジュールは、固定サイズのキャッシュ内に格納されている特定の組のストレージ・ボリュームと関連付けられた書き込み要求のカウントをしきい値と比較することによって、格納要求レベルを決定する。
【００２３】
格納要求レベルがしきい値より上である場合、割り当てモジュールは、優先順位に基づいて、ペーシング値を書き込み要求に割り当てる。１つの実施形態において、ペーシング値は、実質的にゼロミリ秒から実質的に５秒までの間の時間である。この実施形態において、ペーシング値によって指定された時間が満了するまで待つことによって、ペーシング値が満たされる。別の実施形態において、ペーシング値は、所定の固定サイズのキャッシュの占有率を含む。この実施形態においては、現在の固定サイズのキャッシュの占有率が、所定の固定サイズのキャッシュの占有率より低いとき、ペーシング値が満たされる。
【００２４】
１つの実施形態において、割り当てモジュールは、第１の優先順位を持つ書き込み要求に第１のペーシング値を割り当て、第１の優先順位とは異なる優先順位を持つ書き込み要求に第２のペーシング値を割り当てる。別の実施形態においては、割り当てモジュールは、１組の優先順位と１組のペーシング値との間の一対一対応に基づいて、ペーシング値を書き込み要求に割り当てる。許可モジュールは、元の書き込み要求のペーシング値が満たされた時点で、アプリケーションが、次の書き込み要求を出すことを許可する。
【００２５】
固定サイズのキャッシュにおける書き込み要求の数を調整する方法も提供される。開示された実施形態における方法は、説明された装置及びシステムの操作に関して上に与えられた機能を実行するのに必要なステップを実質的に含む。
【００２６】
書き込み要求の特性に基づいて、アプリケーションによって生成された書き込み要求についての優先順位が決定される。固定サイズのキャッシュ内に書き込み要求を格納するための格納要求レベルが評価される。優先順位に基づいて、かつ、格納要求レベルに応答して、ペーシング値が書き込み要求に割り当てられる。元の書き込み要求のペーシング値が満たされた時点で、アプリケーションは、次の書き込み要求を出すことが可能になる。
【００２７】
装置、システム、及び方法が、書き込み要求の優先順位に従って、固定サイズのキャッシュにおける書き込み要求の数を調整する。この装置、システム、及び方法は、各々の書き込み要求に割り当てられたペーシング値に従って書き込み要求の確認を遅延させることによって、固定サイズのキャッシュがいっぱいになる可能性を減少させる。これらの特徴及び利点は、以下の説明及び添付の特許請求の範囲からより完全に明らかになるであろう、或いは、以下に述べられる本発明の実施によって学ぶことができる。
【発明を実施するための最良の形態】
【００２８】
本発明の利点を容易に理解するために、添付図面に示される特定の実施形態を参照することによって、上記に簡単に述べられた本発明のより具体的な説明が与えられる。これらの図面は、本発明の典型的な実施形態を示すものにすぎず、よって本発明の範囲の制限と考えるべきではないことを理解すると共に、本発明が、添付図面を用いて、さらに具体的かつ詳細に述べられ、説明される。
【００２９】
図４は、固定サイズのキャッシュ２０４における書き込み要求の数を調整するためのシステム２００の１つの実施形態を示す。このシステム２００は、少なくとも１つのストレージ・ボリューム２０２、固定サイズのキャッシュ２０４、アプリケーション２０６、ストレージ・コントローラ２０８、第１の通信バス２１０、及び第２の通信バス２１２を含む。当業者であれば、システム２００は、ここに記載されたものに対応するモジュール又はサブシステムを含む限り、示されるものより簡単なものであっても、複雑なものにもであってもよいことを理解するであろう。
【００３０】
固定サイズのキャッシュ２０４は、アプリケーション２０６によって出された書き込み要求を格納する。固定サイズのキャッシュ２０４は、ソリッド・ステート・メモリ、ディスク・ドライブ等のような揮発性又は不揮発メモリを含むことができる。固定サイズのキャッシュ２０４は、一定数の書き込み要求を格納することができる。固定サイズのキャッシュ２０４は、複数のストレージ・ボリューム２０２に対して、複数のアプリケーション２０６によって出された書き込み要求を格納することができる。
【００３１】
アプリケーション２０６は、ストレージ・ボリューム２０２にデータを書き込む要求を出す。この書き込み要求は、実行される（ストレージ・ボリューム２０２に書き込まれる）前に、固定サイズのキャッシュ２０４内に格納される。システム２００は、各々が書き込み要求を固定サイズのキャッシュ２０４に送る、複数のアプリケーション２０６を含むことができる。アプリケーション２０６は、書き込み要求を定期的に出すことができ、又はアプリケーション２０６は、書き込み要求を不規則に出すことができる。アプリケーション２０６は、一度に１つの書き込み要求を出すことができ、又は短期間に書き込み要求のバーストを出すことができる。アプリケーション２０６は、実質的に、データをストレージ・ボリューム２０２上に保存する如何なるソフトウェア・プログラムとしてもよい。１つの実施形態において、アプリケーション２０６は、ストレージ・コントローラ２０８が元の書き込み要求を確認するまで、次の書き込み要求を保留する。
【００３２】
ストレージ・ボリューム２０２は、データを格納する。特定的には、ストレージ・ボリューム２０２は、アプリケーション２０６が出した書き込み要求によって指定されたデータを格納する。ストレージ・ボリューム２０２は、Ｄｉｒｅｃｔ  Ａｃｃｅｓｓ  Ｓｔｏｒａｇｅ  Ｄｅｖｉｃｅ（ＤＡＳＤ）、ディスク・ドライブ、テープ・ドライブ、ソリッド・ステート・メモリ、又は揮発性であろうと不揮発性であろうと他のメモリとすることができる。１つの実施形態において、システム２００は、複数のストレージ・ボリューム２０２を含む。管理者は、複数のストレージ・ボリューム２０２を組織化し、関連したストレージ・ボリュームのサブセットにすることができる。
【００３３】
第１の通信バス２１０は、ストレージ・ボリューム２０２及び固定サイズのキャッシュ２０４を作動的に結合させ、固定サイズのキャッシュ２０４とストレージ・ボリューム２０２との間の通信を容易にする。第２の通信バス２１２は、固定サイズのキャッシュ２０４、アプリケーション２０６、及びストレージ・コントローラ２０８を作動的に結合させ、固定サイズのキャッシュ２０４、アプリケーション２０６、及びストレージ・コントローラ２０８との間の通信を容易にする。
【００３４】
第１の通信バス２１０及び第２の通信バス２１２は、バス、有線ネットワーク、無線ネットワーク、又は他の接続通信技術とすることができる。第１の通信バス２１０及び第２の通信バス２１２は、イーサネット、インターネット・プロトコル（ＩＰ）、非同期転送モード（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ、ＡＴＭ）、時分割多重（Ｔｉｍｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅｘｉｎｇ、ＴＤＭ）、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｉｎｔｅｒｆａｃｅ（ＰＣＩ）、Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）、Ｉｎｔｅｒｎｅｔ  Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ｉＳＣＳＩ）等を含む、階層化された多数の通信プロトコルを使用することができる。
【００３５】
１つの実施形態において、ストレージ・コントローラ２０８は、Ｅｘｔｅｎｄｅｄ  Ｒｅｍｏｔｅ  Ｃｏｐｙ（ＸＲＣ）プロトコルを用いて、書き込み要求を、固定サイズのキャッシュ２０４からストレージ・ボリューム２０２に中継する。固定サイズのキャッシュ２０４及びストレージ・ボリューム２０２が同じキャビネット内に配置されるとき、一般に、第１の通信バス２１０はバスである。代替的に、固定サイズのキャッシュ２０４及びストレージ・ボリューム２０２が、最低数フィート又は最高で何千マイルだけ物理的に分離されるとき、一般に、第１の通信バス２１０はネットワークである。別の実施形態においては、第１の通信バス２１０及び第２の通信バス２１２が接続され、ストレージ・ボリューム２０２、固定サイズのキャッシュ２０４、アプリケーション２０６、及びストレージ・コントローラ２０８の間の通信を容易にする。
【００３６】
ストレージ・コントローラ２０８は、アプリケーション２０６によって生成された書き込み要求を調査する。ストレージ・コントローラ２０８は、固定サイズのキャッシュ２０４から書き込み要求を読み取ることによって、書き込み要求を調査することができる。固定サイズのキャッシュ２０４内に格納された書き込み要求は、その要求を出したアプリケーション２０６を識別する識別子を含むことができる。書き込み要求は、ストレージ・ボリューム２０２についての識別子と、書き込みが行われることになるストレージ・ボリューム２０２上の位置とを含むこともできる。書き込み要求は、ストレージ・ボリューム２０２上に書き込まれることになるデータへのポインタを含むこともできる。代替的に、書き込み要求は、ストレージ・ボリューム２０２上に書き込まれることになるデータを含むことができる。
【００３７】
ストレージ・コントローラ２０８は、書き込み要求の特性に基づいて、該書き込み要求についての優先順位を決定する。１つの実施形態において、特性は、アプリケーション２０６が用いるオペレーティング・システムによって指定された入力／出力の優先順位値である。アプリケーション又はオペレーティング・システムのサービス内容合意書モジュールによって、入力／出力の優先順位値を指定することもできる。代替的に、アプリケーション２０６が、入力／出力優先順位値を設定する。
【００３８】
ストレージ・コントローラ２０８は、固定サイズのキャッシュ２０４内に書き込み要求を格納するための格納要求レベルを評価する。格納要求レベルは、固定サイズのキャッシュ２０４内のスペースに対する、現在の要求レベルを示す。格納要求レベルがしきい値より下である場合には、固定サイズのキャッシュ２０４内に、付加的な書き込み要求のためのスペースがあり、ペーシングを必要としない。格納要求レベルが高い場合には、固定サイズのキャッシュ２０４内に限られたスペースしかない。したがって、付加的な書き込み要求をキャッシュ内に配置するアプリケーション２０６の能力を調整するためにペーシングを必要とし、これによりキャッシュ２０４内にスペースが保存される。
【００３９】
格納要求レベルが、固定サイズのキャッシュ２０４における書き込み要求の数を調整するのにペーシングが必要であることを示す場合には、ストレージ・コントローラ２０８は、以前決定された書き込み要求と関連付けられた優先順位に基づいて、ペーシング値を書き込み要求に割り当てる。１つの実施形態において、ペーシング値は、実質的にゼロミリ秒から実質的に５秒までの間の時間を含む。ペーシング値によって指定された時間が満了するまで待つことによって、ペーシング値が満たされる。ストレージ・コントローラ２０８がペーシング値を書き込み要求に割り当てると、ストレージ・コントローラ２０８により、元の書き込み要求と関連付けられたペーシング値が満たされた後で、アプリケーション２０６が次の書き込み要求を出すことが可能になる。
【００４０】
図５は、ストレージ・コントローラ３００の１つの実施形態を示す。ストレージ・コントローラ３００は、図４に関連して上述されたストレージ・コントローラ２０８として働くように構成されることが好ましい。ストレージ・コントローラ３００は、調査モジュール３０２、優先順位モジュール３０４、評価モジュール３０６、割り当てモジュール３０８、及び許可モジュール３１０を含む。調査モジュール３０２は、アプリケーション２０６によって生成された書き込み要求を調査する。調査モジュール３０２は、固定サイズのキャッシュ２０４から書き込み要求を読み取り、該書き込み要求を種々のフィールドに構文解析することによって、該書き込み要求を調査することができる。代替的に、調査モジュール３０２は、アプリケーション２０６から書き込み要求を取得することができる。
【００４１】
優先順位モジュール３０４は、書き込み要求の特性に基づいて、該書き込み要求についての優先順位を決定する。優先順位は、数値、１６進法、２進法、英数字、又は他の指定子とすることができる。１つの実施形態において、特性は、オペレーティング・システムによって定められた入力／出力の優先順位値である。例えば、特性は、ＩＢＭ（ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標）  ｚシリーズ・オペレーティング・システム（ｚ／ＯＳ：ＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎの商標）の定義エクステント・チャネル・コマンド語（ＣＣＷ）のパラメータに用いられる入力／出力優先順位値とすることができる。
【００４２】
オペレーティング・システムは、入力／出力優先順位値の１つを該オペレーティング・システム内で実行する各アプリケーション２０６を割り当てることができる。したがって、オペレーティング・システムは、アプリケーション２０６によって出された全ての書き込み要求に、同じ入力／出力優先順位値を割り当てる。このように、オペレーティング・システムは、入力／出力操作について、他のアプリケーションに優る優先順位を特定のアプリケーションに与える。システム管理者は、オペレーティング・システムが各アプリケーション２０６に与える入力／出力優先順位値を構成することができる。代替的に、アプリケーション２０６は、自分自身に、入力／出力優先順位値を割り当てることができ、又は、オペレーティング・システムから入力／出力優先順位値を要求することもできる。
【００４３】
入力／出力優先順位値は、書き込み要求の一部とすることができ、又は、オペレーティング・システムが、書き込み要求とは別個のデータ構造体内に入力／出力優先順位値を格納することもできる。入力／出力優先順位値が別個のデータ構造体内に格納された場合、優先順位モジュール３０４は、オペレーティング・システムから、特定の書き込み要求についての入力／出力優先順位値を獲得する。入力／出力優先順位値が書き込み要求の一部である場合には、優先順位モジュール３０４は、該書き込み要求を構文解析し、入力／出力優先順位を獲得する。
【００４４】
特性を、書き込み要求のパラメータとすることもできる。１つの実施形態において、アプリケーション２０６は、書き込み要求の優先順位を示すパラメータを、該書き込み要求内に含む。アプリケーション２０６は、値が各々の書き込み要求の相対的な優先順位を示す１組の所定の優先順位値からの１つの値に、パラメータを割り当てることができる。パラメータを用いることにより、アプリケーション２０６が、種々の優先順位を有する書き込み要求を出すことが可能になり、そこで、各々の書き込み要求の優先順位は、アプリケーション２０６によって決定される。優先順位モジュール３０４は、書き込み要求を種々のパラメータに構文解析し、次に、書き込み要求の相対的な優先順位を示すパラメータを検査することによって、該書き込み要求から特性を抽出する。
【００４５】
優先順位に基づいた特性は、サービス内容合意書識別子、アプリケーションの名前、割り込み優先順位値等とすることもできる。優先順位モジュール３０４が、書き込み要求についての優先順位を決定するために該書き込み要求の特性を用いた時点で、優先順位モジュール３０４は、優先順位と書き込み要求との間の関連性をデータ構造体内に格納することができるので、割り当てモジュール３０８は、続いて、ペーシング値の割り当ての際に、その関連性を用いることができる。
【００４６】
評価モジュール３０６は、書き込み要求を固定サイズのキャッシュ２０４内に格納するために、格納要求レベルを評価する。評価モジュール３０６は、格納要求レベルが、しきい値より上であるか、下であるか、又はしきい値と等しいかを判断することによって、格納要求レベルを評価する。評価モジュール３０６は、格納要求レベルの状態（しきい値をより上であるか、下であるか、又はこれと等しいか）を割り当てモジュール３０８に提供する。格納要求レベルがしきい値より上である場合、割り当てモジュール３０８は、ペーシング値を書き込み要求に割り当てることができる。代替的に、格納要求レベルがしきい値より上であるか又はしきい値と等しい場合、割り当てモジュール３０８は、ペーシング値を書き込み要求に割り当てることができる。
【００４７】
評価モジュール３０６は、幾つかの異なる手法で、書き込み要求を固定サイズのキャッシュ２０４内に格納するための要求を評価し、又は測定することができる。１つの実施形態において、評価モジュール３０６は、現在固定サイズのキャッシュ２０４内に格納されている書き込み要求の総数をカウントする。次に、評価モジュール３０６は、そのカウントをしきい値と比較することができる。
【００４８】
図６は、例示的な固定サイズのキャッシュ４００のコンテンツを示す。例示的な固定サイズのキャッシュ４００は、１０個の書き込み要求スロット１０２を有する。勿論、典型的な固定サイズのキャッシュは、何百、何千、又はそれ以上の書き込み要求を格納することができる。図６は、優先順位モジュール３０４によって決定されるような書き込み要求の各々についての優先順位４０８も示す。図６に破線で示唆されるように、優先順位４０８は、固定サイズのキャッシュ２０４内に格納することができ、又は固定サイズのキャッシュ２０４の外にあるデータ構造体内に格納することができる。
【００４９】
例示的な固定サイズのキャッシュ４００において、書き込み要求が、合計６個の書き込み要求スロット１０２を占める。「アプリケーションＡ」４０２からの書き込み要求は１つのスロットを占め、「アプリケーションＢ」４０４からの書き込み要求は４つのスロットを占め、「アプリケーションＣ」４０６からの書き込み要求は１つのスロットを占める。１つの実施形態において、評価モジュール３０６は、どのアプリケーション２０６が書き込み要求を出したかを考慮せずに、固定サイズのキャッシュ２０４における書き込み要求の総数をカウントすることによって、格納要求レベルを評価する。
【００５０】
この例において、カウントは６である。次に、評価モジュール３０６は、このカウントをしきい値と比較し、割り当てモジュール３０８に格納要求レベルの状態を提供する。状態は、カウントがしきい値より下であるか、しきい値と等しいか、又はしきい値より上であるかを示す。
【００５１】
別の実施形態において、評価モジュール３０６は、特定のアプリケーション２０６によって出された固定サイズのキャッシュ２０４における書き込み要求の数をカウントすることによって、格納要求レベルを評価する。次に、評価モジュール３０６は、カウントをしきい値と比較し、割り当てモジュール３０８に格納要求レベルの状態を提供する。図６の例示的な固定サイズのキャッシュ４００において、評価モジュール３０６は、「アプリケーションＡ」４０２からの書き込み要求の数をカウントし、そのカウントをしきい値と比較し、該カウントの状態を割り当てモジュール３０８に提供することができる。同様に、評価モジュール３０６は、「アプリケーションＢ」４０４によって出された書き込み要求及び「アプリケーションＣ」４０６によって出された書き込み要求の状態を判断することができる。
【００５２】
図７は、別の例示的な固定サイズのキャッシュ４３０のコンテンツを示す。１つの実施形態において、評価モジュール３０６は、特定のストレージ・ボリューム２０２と関連付けられた固定サイズのキャッシュ２０４における書き込み要求の数をカウントすることによって、格納要求レベルを評価する。次に、評価モジュール３０６は、そのカウントをしきい値と比較し、割り当てモジュール３０８に格納要求レベルの状態を提供する。図７の例示的な固定サイズのキャッシュ４３０において、評価モジュール３０６は、「ボリューム１」４３２についての書き込み要求の数をカウントし、そのカウントをしきい値と比較し、該カウントの状態を割り当てモジュール３０８に提供することができる。同様に、評価モジュール３０６は、「ボリューム３」４３４についての書き込み要求の状態を判断することができる。
【００５３】
別の実施形態において、評価モジュール３０６は、１組のストレージ・ボリューム２０２と関連付けられた固定サイズのキャッシュ２０４における書き込み要求の数をカウントすることによって、格納要求レベルを評価することができる。例えば、図６において、評価モジュール３０６は、「ボリューム１」及び「ボリューム３」を含む１組のボリュームと関連付けられた全ての書き込み要求をカウントし、そのカウントを第１のしきい値と比較することができる。評価モジュール３０６は、「ボリューム６」を含む第２の組のボリュームと関連付けられた全ての書き込み要求をカウントし、そのカウントを第２のしきい値と比較することもできる。
【００５４】
図８は、別の例示的な固定サイズのキャッシュ４６０のコンテンツを示す。別の実施形態において、評価モジュール３０６は、特定の優先順位値４０８を有する、固定サイズのキャッシュ２０４における書き込み要求の数をカウントすることによって、格納要求レベルを評価する。次に、評価モジュール３０６は、そのカウントをしきい値と比較し、割り当てモジュール３０８に格納要求レベルの状態を提供する。図８の例示的な固定サイズのキャッシュ４６０において、評価モジュール３０６は、「優先順位１」４６２を有する書き込み要求の数をカウントし、そのカウントをしきい値と比較し、該カウントの状態を割り当てモジュール３０８に提供することができる。同様に、評価モジュール３０６は、「優先順位４」４６４を有する書き込み要求４６４の状態を判断することができる。
【００５５】
さらに別の実施形態において、評価モジュール３０６は、アプリケーション２０６が書き込み要求を固定サイズのキャッシュ２０４に送る速度を決定することによって、格納要求レベルを評価する。評価モジュール３０６は、所定の時間中にアプリケーション２０６によって出された書き込み要求の数をカウントすることによって、速度を判断することができる。
【００５６】
次に、評価モジュール３０６は、カウントをしきい値と比較し、割り当てモジュール３０８に格納要求レベルの状態を提供する。評価モジュール３０６はまた、所定の時間でカウントを除算して速度を獲得し、次にその速度をしきい値と比較し、割り当てモジュール３０８に格納要求レベルの状態を提供することもできる。
【００５７】
上述した評価モジュール３０６の実施形態の各々において、評価モジュール３０６に、しきい値が与えられる。評価モジュール３０６の実施形態の各々は、格納要求レベルを評価するために評価モジュール３０６が用いる方法に基づいて、異なるしきい値を必要とすることがある。ユーザ、構成ファイル、アプリケーション・プログラミング・インターフェース（ＡＰＩ）、変数、データ構造、又は当業者に公知の他の方法によって、評価モジュール３０６にしきい値を与えることができる。代替的に、しきい値は、評価モジュール３０６の一部としてハードコード化することができる。割り当てモジュール３０８及び許可モジュール３１０がペーシングを可能にし、これにより固定サイズのキャッシュ２０４が完全にいっぱいになる前に、書き込み要求の速度が落ちるように、しきい値が選択される。
【００５８】
ここで図５に戻ると、格納要求レベルがしきい値より上である（又は、幾つかの実施形態においては、しきい値より上であるか、しきい値と等しい）場合には、割り当てモジュール３０８は、ペーシング値を書き込み要求に割り当てる。ペーシング値は、優先順位モジュール３０４によって与えられた優先順位に基づいている。ペーシング値により、遅延機構が提供される。割り当てモジュール３０８が書き込み要求をペーシング値に割り当てると、許可モジュール３１０は、ペーシング値が満たされた後まで、アプリケーション２０６からの次の書き込み要求を許可しない。
【００５９】
１つの実施形態において、ペーシング値は、時間を含む。ペーシング値によって指定された時間が満了すると、このタイプのペーシング値が満たされる。ペーシング値によって指定された時間は、実質的にゼロミリ秒から実質的に５秒までの間とすることができる。
【００６０】
別の実施形態において、ペーシング値は、所定の固定サイズのキャッシュの占有率を含む。現在の固定サイズ・キャッシュの占有率が、ペーシング値によって指定された所定の固定サイズのキャッシュの占有率より低いとき、このタイプのペーシング値が満たされる。例えば、ペーシング値が５０パーセントであり、現在の固定サイズのキャッシュの占有率が６０パーセントである場合、ペーシング値は満たされない。いつペーシング値が満たされるかを判断するために、許可モジュール３１０は、固定サイズのキャッシュの占有率を定期的にサンプリングすることができる。この例においては、サンプリングされた占有率が５０パーセントより低いとき、ペーシング値が満たされる。
【００６１】
ペーシング値のこの実施形態によって導入される遅延量は、可変のものであり、一定ではない。この遅延量は、許可モジュール３１０が固定サイズのキャッシュの占有率をサンプリングする頻度、ペーシング値が割り当てられたときの固定サイズのキャッシュ２０４内にあるエントリの数、固定サイズのキャッシュ２０４内の書き込み要求が実行される速度といった要因、及び当業者に公知の他の要因によって決まる。
【００６２】
所定数の中央処理装置（ＣＰＵ）クロック・サイクル又は所定の固定サイズのキャッシュの占有率の低下といった、他のペーシング値を用いることができる。さらに他のペーシング値は、特定の組のストレージ・ボリューム２０２に対する書き込み要求の所定の固定サイズのキャッシュの占有率、特定の優先順位を有する書き込み要求の所定の固定サイズのキャッシュの占有率、特定の組のアプリケーション２０６からの書き込み要求の所定の固定サイズのキャッシュの占有率などを含む。
【００６３】
割り当てモジュール３０８は、１組のペーシング値と１組の優先順位との間のマッピングに基づいて、ペーシング値を書き込み要求に割り当てることができる。割り当てモジュール３０８は、ファイル、オブジェクト、変数、リスト等のようなデータ構造におけるマッピングを保持することができ、又は割り当てモジュール３０８は、ＡＰＩ、変数、関数呼出し等を通してマッピングを受け取ることもできる。マッピングは、ハードコード化することができ、又はユーザ構成可能なものにしてもよい。
【００６４】
図９は、１組の優先順位５０２と１組のペーシング値５０４との間のマッピング５００の１つの実施形態を示すチャートである。この実施形態において、ペーシング値は、時間である。しかしながら、他の実施形態においては、ペーシング値は、キャッシュの占有率、ＣＰＵのサイクル数、又は上述した他のタイプのペーシング値の１つとすることができる。この実施形態においては、割り当てモジュール３０８は、各々の優先順位に固有のペーシング値を割り当てるので、優先順位５０２の組とペーシング値５０４の組と間に一対一対応が存在する。
【００６５】
例えば、優先順位「ＦＦ」５０８は、「０ｍｓ」のペーシング値５０６にマッピングされる。この例のペーシング値は、ミリ秒の指定された時間であるので、「０ｍｓ」のペーシング値５０６は、遅延をもたらさず、優先順位「ＦＦ」５０８を有する書き込み要求についてのペーシングを事実上使用不能にする。低い優先順位の書き込み要求を遅延させながら、高い優先順位の書き込み要求を遅延なく処理することを可能にし、高い優先順位の書き込み要求を妨げないので、特定の書き込み要求についてペーシングを使用不能にすることは望ましい。
【００６６】
図１０は、１組の優先順位５０２と１組のペーシング値５０４との間のマッピング５３０の別の実施形態を示すチャートである。この実施形態において、割り当てモジュール３０８は、第１の優先順位５３４を有する書き込み要求に第１のペーシング値５３２を割り当て、第１の優先順位５３４以外の優先順位５３８を有する書き込み要求に第２のペーシング値５３６を割り当てる。上記の図９におけるように、図１０に図示された実施形態は、ペーシング値として時間を示す。しかしながら、ペーシング値は、上述された他のタイプの１つとすることができる。
【００６７】
図１１は、１組の優先順位５０２と１組のペーシング値５０４との間のマッピング５６０のさらに別の実施形態を示すチャートである。この実施形態においては、割り当てモジュール３０８は、第１の複数の優先順位５６４のうちの１つを有する書き込み要求に第１のペーシング値５６２を割り当て、第２の複数の優先順位５６８を有する書き込み要求に第２のペーシング値５６６を割り当て、結果として多対一のマッピングをもたらす。図１１は、２つの複数の優先順位５６４、５６８を示しているが、付加的な複数の優先順位をペーシング値にマッピングすることも可能である。上記の図９におけるように、図１１に示される実施形態は、ペーシング値として時間を示す。しかしながら、ペーシング値は、上述された他のタイプの１つとすることができる。
【００６８】
ここで図５に戻ると、許可モジュール３１０により、元の要求と関連付けられたペーシング値が満たされた時点で、アプリケーション２０６が次の書き込み要求を出すことが許可される。許可モジュール３１０は、いつペーシング値が満たされたかを判断する。許可モジュール３１０は、ペーシング値が満たされたかどうかを定期的に確認することによってこの判断を行うことができる。代替的に、許可モジュール３１０は、ペーシング値が満たされた時点で許可モジュール３１０に通知を与える機構を用いることができる。許可モジュール３１０は、当業者に公知の他の方法を用いて、いつペーシング値が満たされたかを判断することもできる。
【００６９】
１つの実施形態において、許可モジュール３１０及びアプリケーション２０６は、許可モジュール３１０が元の書き込み要求を確認するまで、アプリケーション２０６が次の書き込み要求を出さないような方法で通信する。この実施形態においては、許可モジュール３１０は、ペーシング値が満たされた後まで元の書き込み要求の確認を送るのを待つ。アプリケーション２０６が確認を受信するまで、次の書き込み要求を出さないので、許可モジュール３１０により、ペーシング値が満たされるまで確認を保留することによって、アプリケーション２０６が固定サイズのキャッシュ２０４に書き込み要求を付加する速度が事実上低下される。この速度の低下により、固定サイズのキャッシュ２０４における書き込み要求の数が調整される。
【００７０】
格納要求レベルがしきい値より下である（又は、幾つかの実施形態においては、しきい値と等しいか、或いはしきい値より下である）場合には、割り当てモジュール３０８は、ペーシング値を割り当てることができず、よって許可モジュール３１０により、書き込み要求の確認が遅延されない。固定サイズのキャッシュ２０４内のスロットに対する要求が増大するにつれて、最終的に格納要求レベルがしきい値より上がり、許可モジュール３１０が確認の遅延を始め、よってキャッシュに入る書き込み要求の数が低下する。同時に、キャッシュ内の書き込み要求が実行され、固定サイズのキャッシュから除去され、新しい書き込み要求のためのスペースを作る。最終的に、書き込み要求が、キャッシュに付加する速度を上回る速度で実行された場合、格納要求レベルは、格納要求レベルのしきい値を下回り、もはや許可モジュールは確認を遅延させない。
【００７１】
勿論、他の方法を用いて、元の書き込み要求のペーシング値が満たされた時点で次の書き込み要求を可能にすることができる。例えば、アプリケーション２０６がトークンを所有する場合に、アプリケーション２０６が書き込み要求を出すことができるように、トークン手法を用いることができる。許可モジュール３１０は、アプリケーション２０６が書き込み要求を出す時点でトークンを所有することになり、該書き込み要求と関連付けられたペーシング値が満たされるまでトークンを放棄しない。許可モジュール３１０は、当業者に公知の次の書き込み要求を可能にするために、他の同様の技術を用いることもできる。
【００７２】
図１２は、固定サイズのキャッシュ２０４における書き込み要求の数を調整する方法６００の１つの実施形態を示すフローチャート図である。この方法６００は、コンピュータ可読コードを修正し、上述のストレージ・コントローラ２０８を実装することによって、従来のシステムに実装できることが好ましい。この方法６００は、調査モジュール３０２が、アプリケーション２０６によって出された書き込み要求を調査する（６０４）ときに開始する（６０２）。
【００７３】
次に、優先順位モジュール３０４が、書き込み要求についての優先順位を決定する６０６。上述のように、優先順位モジュール３０４は、オペレーティング・システムによって定められた入力／出力優先順位値のような書き込み要求の特性に基づいて、優先順位を決定する。次に、評価モジュール３０６が、固定サイズのキャッシュ２０４についての格納要求レベルを評価する６０８。評価モジュール３０６は、上述の技術を用いて、固定サイズのキャッシュ２０４内のスロットに対する要求が、しきい値より上であるか、下であるか、又はしきい値と等しいかを判断することができる。要求がしきい値より上である（又は、幾つかの実施形態においては、しきい値と等しい）場合には、割り当てモジュール３０８は、ペーシング値を書き込み要求に割り当てる（６１０）。ペーシング値は、時間、又は上述された他のタイプのペーシング値の１つとすることができる。
【００７４】
次に、許可モジュール３１０は、ペーシング値が満たされたかどうかを判断する（６１２）。ペーシング値が満たされた場合には、許可モジュール３１０は、アプリケーション２０６が、次の書き込み要求を出すことを可能にし（６１４）、方法が終了する（６１６）。次に、ペーシング値が満たされない場合には、許可モジュール３１０は、ペーシング値が満たされるまで、アプリケーション２０６から次の書き込み要求を出す許可を保留する。
【００７５】
コンピュータ可読コードをコンピューティング・システムに組み入れる、コンピューティング・インフラストラクチャを配置する方法が、固定サイズのキャッシュ２０４における書き込み要求の数を調整するための装置３００を用いる。
【００７６】
本発明は、固定サイズのキャッシュ２０４内のスロットを消費する速度を落とすことによって、アプリケーション２０６が、固定サイズのキャッシュ２０４における書き込み要求の数を調整するというものである。本発明は、固定サイズのキャッシュ２０４における書き込み要求の数を調整することによって、高い優先順位の書き込み操作における固定サイズのキャッシュ２０４のオーバーフロー及び遅延を減少させる。さらに、本発明は、書き込み要求当たりのベースに基づいてペーシング値を割り当て、細かい粒度を提供する。本発明はまた、書き込み要求の宛先ストレージ・ボリュームに基づいてペーシング値を割り当てることも可能にする。
【００７７】
本発明は、その精神及び本質的な特性から逸脱することなく、他の特定の形態で実施することができる。説明された実施形態は、あらゆる点で、例証としてのみ考えるべきであり、限定的なものであると考えるべきではない。したがって、本発明の範囲は、上記の説明ではなく、添付の特許請求の範囲によって示される。特許請求の範囲の等価物の意味及び範囲内にある全ての変更が、その範囲内に含まれるべきである。
【００７８】
本明細書の全体にわたる、特徴、利点、又は類似した語への参照は、本発明を用いて実現することができる特徴及び利点の全てが、本発明のいずれかの単一の実施形態内に存在すべきであるか、又は存在することを意味するものではない。寧ろ、特徴及び利点に関する語は、１つの実施形態に関して説明された特定の特徴、利点、又は特性が、本発明の少なくとも１つの実施形態内に含まれることを意味するように理解される。したがって、本明細書の全体にわたって、特徴及び利点、及び類似した語の記載は、必ずしもではないが、同じ実施を指すことがある。
【００７９】
さらに、１つ又は複数のの実施形態において、本発明の説明された特徴、利点、及び特性が、何らかの適切な方法で組み合わせることができる。当業者であれば、本発明は、特定の実施形態の特定の特徴又は利点の１つ又は複数を用いずに実施できることを認識するであろう。他の例においては、特定の実施形態において、本発明の全ての実施形態内に存在しない付加的な特徴及び利点を認識することができる。
【００８０】
本明細書に説明された多くの機能単位は、その実装上の独立性を特に強調するために、モジュールと表記された。例えば、モジュールは、カスタムＶＬＳＩ回路又はゲートアレイ、論理チップのような市販の半導体、トランジスタ、又は他の別個のコンポーネントを含むハードウェア回路として実装することができる。モジュールはまた、データ値プログラム可能ゲートアレイ、プログラム可能アレイ論理、プログラム可能論理デバイス等のようなプログラム可能なハードウェア・デバイス内に実装することができる。
【００８１】
種々のタイプのプロセッサによる実行のために、モジュールをソフトウェア内にプログラム等として実装することもできる。例えば、実行可能コードの識別されたモジュールは、例えば、オブジェクト、手続き、又は関数として組織化することができる、コンピュータ命令の１つ又は複数の物理的ブロック又は論理ブロックを含むことができる。それにもかかわらず、識別されたモジュールの実行ファイルは、物理的に一緒に配置する必要はなく、論理的に一緒に接続されたとき、モジュールを含み、モジュールについて述べられた目的を達成する、異なる位置に格納された異なる命令を含むことができる。
【００８２】
実際に、実行可能コードのモジュールは、単一の命令又は多数の命令とすることができ、幾つかの異なるコード・セグメントにわたって、異なるプログラムの間に、幾つかのメモリ・デバイスにわって分散させることさえできる。同様に、操作データは、モジュール内でここに識別し、示すことができ、いずれかの適切な形態で具体化することができ、いずれかの適切なタイプのデータ構造内で組織化することができる。操作データは、単一のデータ・セットとして収集することができ、又は異なるストレージ・デバイス上を含む、異なる位置にわたって分散させることができ、単にシステム又はネットワーク上の電気信号として少なくとも部分的に存在することも可能である。
【００８３】
本明細書の全体にわたる、「１つの実施形態」、「実施形態」、又は類似の語への参照は、その実施形態に関して説明された特定の特徴、構造、又は特性が、本発明の少なくとも１つの実施形態に含まれていることを意味する。したがって、本明細書の全体にわたる、「１つの実施形態において」、「実施形態において」と言う句及び同様の語の出現は、必ずしもというわけではないが、全てが同じ実施形態を指している。
【００８４】
上記の説明において、本発明の実施形態の完全な理解を与えるために、プログラミング、ソフトウェア・モジュール、ユーザ選択、ネットワーク・トランザクション、データベース照会、データベース構造、ハードウェア・モジュール、ハードウェア回路、ハードウェア・チップ等のような多数の特定の詳細が与えられている。しかしながら、当業者であれば、本発明は、そのような特定の詳細の１つ又は複数を用いずに、或いは、他の方法、コンポーネント、材料等を用いて実施できることを認識するであろう。他の例においては、本発明の態様を不明瞭にしないように、周知の構造、材料、又は操作は、詳細に示されず、又は説明されない。
【図面の簡単な説明】
【００８５】
【図１】例示的な書き込み要求キャッシュのコンテンツを示すチャートである。
【図２】例示的な書き込み要求キャッシュのコンテンツを示すチャートである。
【図３】例示的な書き込み要求キャッシュのコンテンツを示すチャートである。
【図４】本発明による、固定サイズのキャッシュにおける書き込み要求の数を調整するためのシステムの１つの実施形態を示すブロック図である。
【図５】本発明による、固定サイズのキャッシュにおける書き込み要求の数を調整するための装置の１つの実施形態を示すブロック図である。
【図６】例示的な書き込み要求キャッシュのコンテンツを示すチャートである。
【図７】例示的な書き込み要求キャッシュのコンテンツを示すチャートである。
【図８】例示的な書き込み要求キャッシュのコンテンツを示すチャートである。
【図９】本発明による、１組の優先順位と１組のペーシング値との間の例示的なマッピングを示すチャートである。
【図１０】本発明による、１組の優先順位と１組のペーシング値との間の例示的なマッピングを示すチャートである。
【図１１】本発明による、１組の優先順位と１組のペーシング値との間の例示的なマッピングを示すチャートである。
【図１２】本発明による、固定サイズのキャッシュにおける書き込み要求の数を調整する方法の１つの実施形態を示すフローチャート図である。
【符号の説明】
【００８６】
１００、２０４、４００、４３０、４６０  キャッシュ
１０２  スロット
２００  システム
２０２  ストレージ・ボリューム
２０６  アプリケーション
２０８、３００  ストレージ・コントローラ
２１０  第１の通信バス
２１２  第２の通信バス
３００  装置
３０２  調査モジュール
３０４  優先順位モジュール
３０６  評価モジュール
３０８  割り当てモジュール
３１０  許可モジュール
４０８、５０２  優先順位
５０４  ペーシング値
【図１】
2007183926.tif 000003
【図２】
2007183926.tif 000004
【図３】
2007183926.tif 000005
【図４】
2007183926.tif 000006
【図５】
2007183926.tif 000007
【図６】
2007183926.tif 000008
【図７】
2007183926.tif 000009
【図８】
2007183926.tif 000010
【図９】
2007183926.tif 000011
【図１０】
2007183926.tif 000012
【図１１】
2007183926.tif 000013
【図１２】
2007183926.tif 000014