(57)【要約】【課題】実行アプリケーションの効率性を高めるための新たな手法を提供する。【解決手段】キャッシュ１４０を使用することがより効率的なブロック・サイズであるか、又は直接的にストレージ１５０を使用することがより効率的なブロック・サイズであるかが決定され、対応するブロック・サイズを有するデータ・ストリームに関して、決定されたメモリ・タイプが使用される。【選択図】図１
2016149155.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング環境に関する方法であって、
ブロック・サイズに関して、キャッシュを使用することがより効率的であるか、又はストレージを直接的に使用することがより効率的であるかを決定するステップと、
前記ブロック・サイズを有するデータ・ストリームに応答して、前記ブロック・サイズに関して、前記決定されたより効率的な方法を使用するステップとを含む方法。
【請求項２】
前記決定するステップが、
一定のブロック・サイズに関して、キャッシュを使用することがより効率的であるか、又はストレージを直接的に使用することがより効率的であるかを測定するステップと、
それぞれの測定されたブロック・サイズに関して、前記のより効率的な方法を選択するステップと、
前記ブロック・サイズを前記選択された方法と関連付けるステップと
を更に含む、請求項１に記載の方法。
【請求項３】
前記決定するステップが、
前記コンピューティング環境のシステム・パラメータを取得するステップであって、前記取得されたシステム・パラメータがメモリ使用の前記効率に影響を及ぼす、取得するステップと、
前記取得されたシステム・パラメータを使用することによって、一定のブロック・サイズに関して、キャッシュを使用することがより効率的であるか、又はストレージを直接的に使用することがより効率的であるかを計算するステップと、
それぞれの計算されたブロック・サイズに関して、前記のより効率的な方法を選択するステップと、
前記ブロック・サイズを前記選択された方法と関連付けるステップと
を更に含む、請求項１に記載の方法。
【請求項４】
前記コンピューティング環境のシステム・パラメータを取得するステップであって、前記取得されたシステム・パラメータがメモリ使用の前記効率性に影響を与える、取得するステップと、
前記取得されたシステム・パラメータを使用することによって、前記一定のブロック・サイズに関して、キャッシュを使用すること及びストレージを直接的に使用することの効率性を計算するステップと、
前記コンピューティング環境内のハードウェアを確認するために、対応する測定結果を計算結果と比較するステップと
を更に含む、請求項２に記載の方法。
【請求項５】
データ・ストリームのブロック・サイズに関する情報を受信するステップと、
前記データ・ストリームの前記ブロック・サイズがどの測定されたブロック・サイズに対応するかを決定するステップと、
前記データ・ストリームに関して、前記関連付けられた方法を使用するステップと
を更に含む、請求項２、３、又は４に記載の方法。
【請求項６】
それによって前記選択が実行された前記測定結果又は前記計算結果に基づいて、最適ブロック・サイズを決定するステップと、
前記最適ブロック・サイズをアプリケーションに通知するステップと
を更に含む、請求項２、３、４、又は５に記載の方法。
【請求項７】
前記読み取るためのステップと前記書き込むためのステップとを別個に実行するステップを更に含む、請求項１から６までのいずれか一項に記載の方法。
【請求項８】
前記ブロックを読み取るためにかかる時間及び／若しくは前記ブロックを書き込むためにかかる時間、並びに／又は前記ブロックを読み取るためのプロセッサ・リソースの使用量及び／若しくは前記ブロックを書き込むためのプロセッサ・リソースの使用量、並びに／又はプロセッサ・リソースの特定に使用によって読み取られる前記データ量及び／若しくはプロセッサ・リソースの特定に使用によって書き込まれる前記データ量に基づいて、前記決定するステップを実行するステップを更に含む、請求項１から７までのいずれか一項に記載の方法。
【請求項９】
装置上で実行されるとき、請求項１から８までのいずれか一項に記載の方法を実行するように構成されたコンピュータ・プログラム・コードを備えたコンピュータ・プログラム製品。
【請求項１０】
請求項１から８までのいずれか一項に記載の方法を実施するための手段を備えた装置。
【請求項１１】
前記装置が、前記キャッシュと、前記ストレージと、データ・ストリームが通過する構成要素とを備え、前記構成要素が、少なくとも、ブロック・サイズに関して、前記ブロック・サイズに関して前記のより効率的な方法に基づいて前記キャッシュ又は前記ストレージを使用するための手段である、請求項１０に記載の装置。
【請求項１２】
一定のブロック・サイズに関して、キャッシュを使用することがより効率的であるか、又はストレージを直接的に使用することがより効率的であるかを測定し、
それぞれの測定されたブロック・サイズに関して、前記のより効率的な方法を選択し、
前記ブロック・サイズを前記選択された方法と関連付け、
前記ブロック・サイズを有するデータ・ストリームに応答して、前記ブロック・サイズに関して、前記決定されたより効率的な方法を使用する
ように構成されたコンピュータ構成要素。
【請求項１３】
前記ブロックを読み取るためにかかる時間及び／若しくは前記ブロックを書き込むためにかかる時間、並びに／又は前記ブロックを読み取るためのプロセッサ・リソースの使用量及び／若しくは前記ブロックを書き込むためのプロセッサ・リソースの使用量、並びに／又はプロセッサ・リソースの特定の使用によって読み取られる前記データ量及び／若しくはプロセッサ・リソースの特定の使用によって書き込まれる前記データを測定し、前記キャッシュに関して、及び前記ストレージの前記直接的な使用に関して取得された測定結果に基づいて前記のより効率的な方法を選択するように更に構成された、請求項１２に記載のコンピュータ構成要素。
【請求項１４】
前記コンピュータ構成要素が、コントローラ、制御ユニット、マイクロコントローラ、シングル・チップ・コンピュータ要素、チップセット又はボードである、請求項１２又は１３に記載のコンピュータ構成要素。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの記憶又は取出しに関し、詳細には、アプリケーションに関するデータ・ストリームの読取り及び／又は書込みに関する。
【背景技術】
【０００２】
１つ又は複数のプロセッサによって実行される、コンピュータ上で実行されているアプリケーションの速度は、主に、処理されることになる情報に対するアクセス速度によって、且つさらなる処理のため又は入力のためのいずれかに必要とされるまで、処理された情報を記憶することができる速度によって決定される。
【０００３】
異なる性質、特に、異なる速度を備え、それによって、異なる価格を有する異なるメモリ・タイプがコンピュータ・システム内で使用される。更に、メモリとアプリケーションを実行するプロセッサとの間で使用される異なるバス、並びにバスに接続された構成要素は読取り速度及び／又は書込み速度に影響を及ぼす。更に、メモリの特性は進化しており、コンピュータ内で使用されるメモリ又はコンピュータによって使用されるメモリは、より高速なメモリに更新され得る。メモリ間の基本的な分割は、メモリは、頻繁にアクセスされる命令及びデータに関する高速ストレージとして使用されるバッファ・メモリであるキャッシュであるか、又はメモリは、いわゆる、メイン・メモリ若しくはストレージのいずれかである。基本的に、２つのタイプのメモリＩ／Ｏ（即ち、書込み／読取り）動作が存在する。即ち、ストレージに直接的にアクセスする動作、又はそれを通じてすべてのデータ・ストリームがメイン・メモリに且つ／又はメイン・メモリから渡されるキャッシュを使用する動作である。現在、キャッシュを使用することは既定のソリューションである。しかし、時として、ストレージに直接的にアクセスすることは、より効率的な可能性があり、オーバヘッドがより少なくなる可能性がある。
【０００４】
ＷＯ２００８／００４１４９は、フラッシュ・メモリの時間オーバヘッドと摩耗とを最小限に抑えるために、ストレージとして使用されるフラッシュ・メモリの一部がフラッシュ・メモリの残りの部分用のバッファとして使用されるように割り振られる解決策を開示する。この解決策では、すべての書込み要求及び読取り要求はメモリ・コントローラを通過する。メモリ・コントローラがメモリに書き込まれることになるデータ・ストリームを受信するとき、メモリ・コントローラは受信されたデータ・ストリームのサイズを所定数のデータ・パケットと比較して、データ・ストリームが所定数のデータ・パケットよりも大きい場合、そのデータ・ストリームはその目標宛先に直接的に記憶され、そうでない場合、そのデータ・ストリームはその目標宛先に対して後で記憶されて、そのデータ・ストリームがそこに存在する限り、バッファ部分から読み取られるように、バッファ部分用に記憶される。バッファ部分からのデータが記憶されて、同じ目標宛先を有する１個を超えるデータが存在する場合、最新のデータだけが記憶される。
【０００５】
フラッシュ・メモリに直接アクセスすることはより効率的である可能性があるとはいえ、ＷＯ２００８／００４１４９の解決策はストレージ内で依然として発生し、メモリ・コントローラへのデータ・ストリーム及びメモリ・コントローラからのデータ・ストリームはキャッシュを通過する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】ＷＯ２００８／００４１４９
【発明の概要】
【発明が解決しようとする課題】
【０００７】
以下の説明は、本発明のいくつかの態様の基本的な理解をもたらすために、本発明の簡素化された要約を提示する。この要約は本発明の広範囲な概要ではない。本発明の主な要素／重要な要素を識別すること、又は本発明の範囲を描くことは意図されない。その唯一の目的は、後に提示されるより詳細な説明の前置きとして、本発明のいくつかの概念を簡素化された形態で提示することである。
【０００８】
いくつかの実施例の態様は、データ・ストリームのブロック・サイズに関する情報と、キャッシュを使用しようと、又はストレージを直接的に使用しようと、そのブロック・サイズに関して決定されたキャッシュ及びストレージ性能とに基づいて決定するステップと、それに応じて動作するステップとを含む。
【０００９】
本発明の様々な態様は、独立クレームに定義されるような方法、装置、及びコンピュータ・プログラム製品を含む。本発明のさらなる実施例は独立クレームで開示される。
【００１０】
以下の説明では、添付の図面を参照して、異なる実施例がより詳細に説明される。
【図面の簡単な説明】
【００１１】
【図１】ある実施例による簡素化されたブロック図である。
【図２】実施例を示す流れ図である。
【図３】実施例を示す流れ図である。
【図４】実施例を示す流れ図である。
【発明を実施するための形態】
【００１２】
次に、本発明のすべての実施例ではなく、そのいくつかが示される添付の図面を参照して、本発明の例示的な実施例が以下でより十分に説明される。実際に、本発明は、多くの異なる形態で実施可能であり、本明細書に記載される実施例に限定されると解釈されるべきではない。むしろ、これらの実施例は、本開示が適用可能な法的要件を満たすように提供される。本明細書はいくつかの場所で「ある」、「一」、又は「いくつかの」（１つ若しくは複数の）実施例を参照する場合があるが、これは必ずしもそれぞれのそのような参照が（１つ若しくは複数の）同じ実施例を指すとは限らず、又はその特徴が単一の実施例だけに適用されるとも限らない。異なる実施例の単一の特徴は、組み合わされて他の実施例を提供することも可能である。
【００１３】
本発明の実施例は、コンピューティング装置、コンピュータ、対応する構成要素に、且つ／又はキャッシュの使用をサポートする任意のコンピューティング・システム又はコンピューティング・ネットワークに適用可能である。コンピューティング装置は、任意の種類のプロセッサ、オペレーティング・システム、及び１つのメモリ／複数のメモリを含むことが可能である。したがって、すべての用語及び表現は、広く解釈されるべきであり、実施例を限定するのではなく、実施例を例示することが意図される。
【００１４】
ある実施例によるコンピューティング装置の一般的な構成が図１に例示される。図１は、コンピューティング装置のいくつかの構成要素だけを示す簡素化されたブロック図であり、これらの構成要素はある実施例を示すために使用されている。このコンピューティング装置は、ここで詳細に説明される必要がない他の構成要素、モジュール、接続、結合などを含むことが可能である点を理解されたい。
【００１５】
コンピューティング環境を示すコンピューティング装置１００は、アプリケーション１２０を実行する、バス１０１を経由して決定構成要素１３０に結合されたプロセッサ１１０を備える。決定構成要素１３０、それによって、プロセッサ及びアプリケーションは、更に、バス１０２を経由してキャッシュ１４０に結合されて、バス１０３を経由してストレージ１５０に結合される。ある実施例を用いて下で説明される決定構成要素１３０の機能性を実施するコンピューティング装置１００は、先行技術手段だけでなく、例えば、キャッシュを使用するか、又はストレージを直接的に使用するかを決定するための手段も備える。より詳細には、コンピューティング装置は、ある実施例を用いて説明される機能性を実施するための手段を備え、コンピューティング装置は、それぞれの別個の機能に関して別個の手段を備えることが可能であるか、又は手段は２つ以上の機能を実行して、異なる実施例の機能を組み合わせるようにすら構成されることも可能である。
【００１６】
一般に、プロセッサ１１０は中央処理装置（ＣＰＵ）であるが、プロセッサは追加の演算プロセッサであってもよい。コンピューティング装置はその他の構成要素及び／又はキャッシュを備えることが可能であり、ストレージはインターネットを経由してアクセス可能な別のコンピューティング装置内に位置することも可能である点を理解されたい。
【００１７】
決定構成要素１３０はある実施例を用いて下で説明される機能性を実行するように構成され、決定構成要素１３０は、異なる実施例からの機能性を実行するように構成されることも可能である。このために、決定構成要素は、決定表１３１を記憶するための少量のメモリを備えることが可能であり、実装形態に応じてプロセッサ１１０に接続され、又はそれ自体がそれらの機能性を実行するためのプロセッサ（図１に示されず）を備える。更に、この決定構成要素は、その他のユニットを備えることが可能であり、この決定構成要素は、例えば、制御情報、データ、及び書込み要求又は読取り要求を受信並びに転送するための異なるインターフェースを備える。
【００１８】
ある実施例による決定構成要素は、一般に、内部メモリと装置の様々なインターフェースとに接続されたコントローラ、制御ユニット、マイクロコントローラなどであってよい。決定構成要素は、シングル・チップ・コンピュータ要素、若しくはチップセットなど、マイクロプロセッサとして、又は算術演算のために使用されるストレージ領域を提供するための少なくとも１つのメモリと算術演算を実行するための演算プロセッサとを含むボードとして構成可能である。決定構成要素は、１つ若しくは複数の実施例の１つ若しくは複数の機能を実行するような形でプログラムされている、１つ若しくは複数のコンピュータ・プロセッサ、特定用途向け集積回路（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）、デジタル信号処理デバイス（ＤＳＰＤ）、プログラマブル論理デバイス（ＰＬＤ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、及び／又はその他のハードウェア構成要素を備えることが可能である。ある実施例は、装置内にロードされるとき、決定ユニットを構成するプログラム命令を備えた、任意のコンピューティング装置配布媒体上／データ・ストレージ媒体上で実施されるコンピュータ・プログラムとしてこの決定構成要素を提供する。ソフトウェア・ルーチン、「プログラム・ライブラリ」を構成するプログラム・スニペット、並びにアプレット及びマクロを含む、プログラム製品とも呼ばれるプログラムは、任意の媒体内に記憶可能であり、コンピューティング装置内にダウンロード可能である。
【００１９】
キャッシュ１４０及びストレージ１５０は、揮発性メモリ及び／又は不揮発性メモリであってよく、キャッシュ１４０及びストレージ１５０は異なるタイプのものであってよい。例えば、キャッシュ及び／又はストレージは、アプリケーション１２０の動作に関連するステップを実行するために、ソフトウェア・アプリケーション又はオペレーティング・システムなどのコンピュータ・プログラム・コード、中央処理装置又は対応するプロセッサに関する情報、データ、コンテンツなどを記憶することが可能である。キャッシュ及び／又はストレージは、例えば、ランダム・アクセス・メモリ、ハード・ディスク、フラッシュ・メモリ、固体メモリ（ＳＳＤ）、又はその他の固定データ・メモリ・デバイス若しくは固体データ・ストレージ・デバイスであってよい。更に、キャッシュ及び／若しくはストレージ、又はその（それらの）一部は、装置に取外し可能に接続された取外し可能メモリであってよい。
【００２０】
バス１０２及びバス１０３は、構成要素同士の間で任意の種類のデータを転送する任意のタイプのバスであってよく、バス１０２及びバス１０３は異なるタイプのものであってよい。バスは、複数のワイヤ上でデータを並列に搬送する並列バスであってよく、若しくはビット・シリアル形態でデータを搬送する直列バスであってよく、又は並列接続とビット・シリアル接続の両方を使用するバスであってもよい。したがって、バス１０２及びバス１０３は、データの転送を実現する異なる接続及び構成要素を含む任意の物理的な構成であってよい。
【００２１】
コンピューティング装置は１つのエンティティとして図１に示されているが、メモリは１つ若しくは複数の物理的又は論理的なエンティティの形で実施可能である。例えば、キャッシュ及び／又はストレージは、複数のコンピューティング装置にわたる分散型（共有）ストレージ・デバイスとして実施可能であり、バスはコンピューティング装置内で、又はコンピューティング装置間でデータを転送することができる。これらのユニット及び機能は、ソフトウェア構成要素及び／又はソフトウェア・ハードウェア構成要素並びに／或いは（読出し専用メモリなどの媒体上に永久に記録されるか、若しくは配線されたコンピュータ回路の形で実施される）ファームウェア構成要素であってよい。
【００２２】
図２は、ある実施例による決定構成要素の機能性を例示する。この実施例では、決定構成要素は、ある幾つかのブロック・サイズに関して測定することによって、キャッシュを使用するのがより効率的であるか、又はストレージに直接的に記憶することがより効率的であるか、即ち、これらのメモリ・タイプのうちのどのメモリ・タイプがより効率的なメモリ・タイプであるかを決定する。その幾つかのブロック・サイズは、例えば、５１２ｋＢ、１ｋＢ、２ｋＢ、４ｋＢ、．．．１０２４ｋＢであってよい。（ブロックは書込み及び／又は読取りの単位である。）
【００２３】
この実施例では、決定構成要素は、読取り（入力）及び書込み（出力）に関して、下で説明されるステップを別個に実行する。これらは、ほとんど同時に実行されること、及び／又は下で説明される順序とは別の順序で実行されることが可能である点を理解されたい。別の実施例では、決定構成要素は、読取り又は書込みにだけに関して下で説明されるステップを実行し、次いで、読取りと書込みの両方に関する結果を使用する。しかし、読取り及び書込みは別個のタスクであるため、読取りと書込みの両方に関するステップを実行することは、コンピューティング装置内でＩ／Ｏの全体的な性能が最も効率的に利用可能にされるという利点を有する。
【００２４】
示される実例では、分かり易いように、読取り（又は、書込み）のための時間は、どちらがより効率的であるかを決定するための決定ファクタとして使用されると仮定される。しかし、決定ファクタとして何が使用されるかについて制限は存在せず、決定ファクタは異なるファクタの組合せであってよい。例えば、決定ファクタは、ＣＰＵリソースなど、プロセッサ・リソースの使用に関する場合があり（より効率的な方法は、同じ量の作業に関してより少ないＣＰＵリソースを使用するか、若しくは同じ量のＣＵリソースがより多い作業を実行する）、又は決定ファクタは、時間とプロセッサ・リソース使用の両方を考慮に入れる場合もある。更に、コンピューティング装置の読取り動作及び／又は書込み動作を使用するアプリケーションは、決定ファクタに影響を与える要件を有する場合がある。ある実施例では、例えば、選択リストをユーザに提供することによって、ユーザに決定ファクタを選択する機会が与えられる場合があり、その場合、ユーザの選択が使用される。
【００２５】
決定構成要素は、第１のブロック・サイズを測り（ステップ２０１）、ステップ２０２で、キャッシュから量を読み取ると同時に、それにかかる時間を測定する。次いで、ステップ２０３において、ストレージから直接的に同じ量が読み取れられ、それにかかる時間が測定される。次に、ステップ２０４において、決定ユニットは、より効率的であったメモリ・タイプ、即ち、示される実例では、最も高速のメモリ・タイプを選択して、ステップ２０５において、そのメモリ・タイプを読取り用のブロック・サイズと関連付ける。次いで、ステップ２０６において、すべてのブロック・サイズがメモリ・タイプと関連付けられているかどうかが検査される。そうでない場合、決定構成要素は、次のブロックに関して上記のステップを実行し、即ち、ステップ２０１にとどまる。すべてのブロック・サイズがメモリ・タイプと関連付けられた場合、それらのブロック・サイズは読取り（入力）のために使用できる状態にある（ステップ２０７）。
【００２６】
この実施例では、上記のステップは、次いで、書込みに関して繰り返される。即ち、読取りの代わりに、ステップ２０２及びステップ２０３において書込みが実行される。その場合、その結果は、図１に例示されるように、読取り及び書込みに関して別個のブロック・サイズ固有のメモリ・タイプの選択を有する決定表であってよく、読取り用のメモリ・タイプは書込み用と同じであるか、又は異なる。
【００２７】
この実施例のある利点は、使用すべきメモリ・タイプを決定するとき、それらの現実の機能性に従って、すべての構成要素、異なるバスなどが考慮に入れられることである。これは、プロセッサの負荷が最小限に抑えられ、それによって、生成される熱が少なくなり、必要とされるエネルギーが少なくなるというさらなる利点を有する。
【００２８】
本発明のさらなる実施例では、時間を測定することなど、測定を実行する代わりに、決定構成要素は、メモリ（即ち、キャッシュ及びストレージ）のサイズ、当面どの程度の空きメモリが存在するか、バス速度など、システム・パラメータを取得して、その情報を使用して、それぞれのブロック・サイズに関してより効率的なメモリ・タイプ（キャッシュを経由して記憶するか、又はストレージに直接的に記憶するか）を計算する。
【００２９】
さらなる実施例では、決定構成要素は、測定と計算の両方を行い、ハードウェアを確認するために、それらの測定結果を計算された結果と比較するように構成される。ハードウェアの確認によって実現される利点は、考えられる障害を検出するのを助け、それによって、何らかのより大きな障害が発生する前に障害の修正を促すことである。
【００３０】
測定／計算を例示する上記の説明は、ある間隔で、電源がオンにされるとき、及び／又はオペレーティング・システム・オンライン更新、ドライバ更新、キャッシュ管理ソフトウェア更新、新しいメモリ・ボードが設置されているなど、コンピューティング装置内にハードウェア変更若しくはソフトウェア変更が存在するときに実行可能である。
【００３１】
別の実施例では、測定／計算は、データ・ストリームが開始するたびに、そのデータ・ストリームによって使用されるブロック・サイズに対して実行される。
【００３２】
図３は、決定構成要素が、ステップ３０１において、データ・ストリームのブロック・サイズの表示と、データ・ストリームが読み取られることになるか、又は書き込まれることになるかに関する情報とを受信する状況を例示する。その場合、決定構成要素は、受信された表示を使用して、ステップ３０２において、図２を用いて上で例示されたように、例えば、作成された表から値を取得し、その値は、「キャッシュ」又は「ストレージ」のいずれかである。受信されたブロック・サイズが試験された幾つかのブロック・サイズのうちの１つでない場合、即ち、それがそのブロック・サイズに関連するメモリ・タイプを有さない場合、実装形態に応じて、そのブロック・サイズは次のブロック・サイズに切り上げられるか、若しくは切り捨てられるか、又は最も近いブロック・サイズが使用される。次いで、ステップ３０３において、そのデータ・ストリームに関して、取得されたメモリ・タイプが使用される。例えば、データ・ストリームが書き込まれることになる場合、ステップ３０２でどちらが取得されたかに応じて、データ・ストリームは決定構成要素からキャッシュ又はストレージのいずれかに転送される。
【００３３】
上記の内容は、データ・ストリームのブロック・サイズの表示と、データ・ストリームが読み取られることになるか又は書き込まれることになるかに関する情報とが決定構成要素を通過するが、実際のデータ・ストリームが決定構成要素を通らない実装形態にも適用される。
【００３４】
決定構成要素は、アプリケーションに対して透過的であり得る。しかし、図４は、幾つかのブロック・サイズが読取り／書込みに関して対応するメモリ・タイプと関連付けられた後で、決定構成要素が、ステップ４０１において、最適ブロック・サイズを決定して、ステップ４０２において、その最適ブロック・サイズをアプリケーションに通知する、ある実施例を示す。最適ブロック・サイズは、好ましくは、図２を用いて説明された手順の間に取得された測定結果及び／又は計算結果を使用して決定され、最適条件は、最善の総合結果（例えば、最善の速度又は最善の性能）を提示するものである。したがって、この実施例は、動的な最適値が通知されることを実現し、この値はコンピューティング環境と、そのコンピューティング環境に行われた変更とを考慮に入れる測定及び／又は計算によって取得されている。そのような値を通知することは効率性を改善するが、開発者によって行われた推定に基づく、即ち、それがハード・コーディングされた時点での開発者の最善の推定である、先行技術のハード・コーディングされた通知値の場合、これは稀である。
【００３５】
図２から図４において上で説明されたステップ及び関連する機能は、絶対的な発生順序ではなく、これらのステップのうちのいくつかは、同時に又は提示された順序とは別の順序で実行されることが可能である。例えば、読取り測定及び書込み測定は、別のブロック・サイズを測る（ステップ２０１及び２０６）前に、１つのブロック・サイズに関して実行可能である（ステップ２０２〜２０５）。それらのステップ間で、又はそれらのステップ内でその他の機能を実行することも可能である。それらのステップのうちのいくつか又はそれらのステップの一部を省略することも可能である。例えば、データを読み取る／書き込むアプリケーションは読取り及び／又は書込みに関してその独自の制御を要求することができ、その場合、データ・ストリームは決定構成要素を通過するが、決定構成要素は、その要求に応答して、使用されることになるメモリ・タイプを取得せず、即ち、ステップ３０２及び３０３は、その場合、省略される。更に、それらのステップのうちのいくつか若しくはそれらのステップの一部を一緒に統合すること、又は対応するステップ若しくはステップの一部で置換することも可能である。例えば、ステップ２０２及びステップ２０３で時間を測定する代わりに、又はそれに加えて、ＣＰＵ使用を測定することが可能である。
【００３６】
技術が進展するにつれて、この発明性のある概念を様々な方法で実施することが可能である点は当業者に明らかになるであろう。本発明及びその実施例は上で説明された実例に限定されず、特許請求の範囲内で変形し得る。
【図１】
2016149155.tif 000003
【図２】
2016149155.tif 000004
【図３】
2016149155.tif 000005
【図４】
2016149155.tif 000006
【手続補正書】
【提出日】平成28年5月18日(2016.5.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティング環境に関する方法であって、
ある複数のブロック・サイズに関し、当該ブロック・サイズのブロックをキャッシュから読み取るためにかかる時間、前記ブロックを前記キャッシュに書き込むためにかかる時間、前記ブロックを前記キャッシュから読み取りかつ前記キャッシュに書き込むためにかかる時間、前記ブロックを前記キャッシュから読み取るためのプロセッサ・リソースの使用量、前記ブロックを前記キャッシュに書き込むためのプロセッサ・リソースの使用量、及び前記ブロックを前記キャッシュから読み取りかつ前記キャッシュに書き込むためのプロセッサ・リソースの使用量を含む一群のファクタのうちの少なくとも１つのファクタの決定と、前記キャッシュの代わりにストレージを直接的に使用した場合の前記少なくとも１つのファクタの決定と、を含む決定を行うステップと、
前記決定によって得られた結果に基づき、キャッシュを使用すること及びストレージを直接的に使用することのいずれがより効率的な方法であるかを前記複数のブロック・サイズの各々に対して選択し、
前記複数のブロック・サイズの各々と前記選択された方法を関連付けするステップと、
前記複数のブロック・サイズの一つのブロック・サイズであるデータ・ストリームのブロック・サイズに応答して、当該データ・ストリームに対して、前記複数のブロック・サイズの一つに関連付けされたより前記選択されたより効率的な方法を使用するステップと、を含む方法。
【請求項２】
前記決定を行うステップが一つ以上のファクタを測定することによって行われる、請求項１に記載の方法。
【請求項３】
前記決定を行うステップが、
前記コンピューティング環境のメモリ使用の前記効率に影響を及ぼすシステム・パラメータを取得するステップと、
前記取得されたシステム・パラメータを使用することによって、前記複数のブロック・サイズに対して前記少なくとも１つのファクタを計算するステップと、
を更に含む、請求項１に記載の方法。
【請求項４】
前記コンピューティング環境のメモリ使用の前記効率性に影響を与えるシステム・パラメータを取得するステップと、
前記取得されたシステム・パラメータを使用することによって、前記複数のブロック・サイズに関して、キャッシュを使用すること及びストレージを直接的に使用することの効率性を計算するステップと、
前記コンピューティング環境内のハードウェアを確認するために、対応する測定結果を計算結果と比較するステップと
を更に含む、請求項２に記載の方法。
【請求項５】
データ・ストリームのブロック・サイズに関する情報を受信するステップと、
前記データ・ストリームの前記ブロック・サイズが前記複数のブロック・サイズのどの一つに対応するかを決定するステップと、
前記データ・ストリームに関して、前記関連付けられた方法を使用するステップと
を更に含む、請求項２に記載の方法。
【請求項６】
前記選択が実行された前記測定結果に基づいて、最適ブロック・サイズを決定するステップと、
前記最適ブロック・サイズをアプリケーションに通知するステップと、
を更に含む、請求項２に記載の方法。
【請求項７】
前記選択が実行された前記計算結果に基づき、最適なブロック・サイズを決定するステップと、
前記最適なブロック・サイズをアプリケーションに適用するステップと、
を更に含む、請求項３に記載の方法。
【請求項８】
前記読み取るためのステップと前記書き込むためのステップとを別個に実行するステップを更に含む、請求項３に記載の方法。
【請求項９】
ある複数のブロック・サイズに関して、当該ブロック・サイズのブロックをキャッシュから読み取るためにかかる時間、前記ブロックを前記キャッシュに書き込むためにかかる時間、前記ブロックを前記キャッシュから読み取りかつ前記キャッシュに書き込むためにかかる時間、前記ブロックを前記キャッシュから読み取るためのプロセッサ・リソースの使用量、前記ブロックを前記キャッシュに書き込むためのプロセッサ・リソースの使用量、及び前記ブロックを前記キャッシュから読み取りかつ前記キャッシュに書き込むためのプロセッサ・リソースの使用量、を含む一群のファクタのうちの少なくとも１つのファクタの決定と、前記キャッシュの代わりにストレージを直接的に使用した場合の前記少なくとも１つのファクタの決定と、を含む決定を行なうこと、
前記決定によって得られた結果に基づき、キャッシュを使用すること及びストレージを直接的に使用することのいずれがより効率的な方法であるかを前記複数のブロック・サイズの各々に対して選択すること、及び
前記複数のブロック・サイズの各々と前記選択された方法を関連付けすること、
前記複数のブロック・サイズの一つのブロック・サイズであるデータ・ストリームのブロック・サイズに応答して、データ・ストリームに対して、前記複数のブロック・サイズの一つに関連付けされた前記選択されたより効率的な方法を使用すること、
を装置上で実行させるように構成されたコンピュータ・プログラム・コードを備えたコンピュータ・プログラム。
【請求項１０】
前記決定が一つ以上のファクタを測定することによって行うこと、を装置上で実行させるように構成された、請求項９に記載のコンピュータ・プログラム。
【請求項１１】
前記コンピュータ・プログラム・コードが更に、
メモリ使用の前記効率に影響を及ぼす、コンピューティング環境のシステム・パラメータを取得すること、
前記取得されたシステム・パラメータを使用することによって、前記複数のブロック・サイズに関して、キャッシュを使用すること及びストレージを直接的に使用することのいずれがより効率的な方法であるかを計算すること、によって一つ以上のファクタの決定を行うこと
を装置上で実行させるように構成された、請求項９に記載のコンピュータ・プログラム。
【請求項１２】
ある複数のブロック・サイズに関して、当該ブロック・サイズのブロックをキャッシュから読み取るためにかかる時間、前記ブロックを前記キャッシュに書き込むためにかかる時間、前記ブロックを前記キャッシュから読み取りかつ前記キャッシュに書き込むためにかかる時間、前記ブロックを前記キャッシュから読み取るためのプロセッサ・リソースの使用量、前記ブロックを前記キャッシュに書き込むためのプロセッサ・リソースの使用量及び前記ブロックを前記キャッシュから読み取りかつ前記キャッシュに書き込むためのプロセッサ・リソースの使用量を含む一群のファクタのうちの少なくとも１つのファクタの測定と、前記キャッシュの代わりにストレージを直接的に使用した場合の前記少なくとも１つのファクタの測定と、を含む測定を行なう手段と、
前記測定から得られた結果に基づき、キャッシュを使用すること及びストレージを直接的に使用することのいずれがより効率的な方法であるかを前記複数のブロック・サイズの各々に対して選択する手段と、
前記複数のブロック・サイズの各々と前記選択された方法を関連付けする手段と、
データ・ストリームのブロック・サイズに対応する前記複数のブロック・サイズの一つのブロック・サイズに関連付けされたより効率的な方法を使用する手段と、
を備えた装置。
【請求項１３】
前記装置が更に、前記キャッシュと、前記ストレージと、データ・ストリームが通過する構成要素とを備え、前記構成要素が、少なくとも、データ・ストリームに対して、前記対応するブロック・サイズに関係付けされた前記選択されたより効率的な方法に基づいて前記キャッシュ又は前記ストレージを使用する手段を備えた、請求項１２に記載の装置。
【請求項１４】
ある複数のブロック・サイズに関して、当該ブロック・サイズのブロックを読み取るためにかかる時間、前記ブロックを書き込むためにかかる時間、前記ブロックを読み取りかつ書き込むためにかかる時間、前記ブロックを読み取るためのプロセッサ・リソースの使用量、前記ブロックを書き込むためのプロセッサ・リソースの使用量、及び前記ブロックを読み取りかつ書き込むためのプロセッサ・リソースの使用量を含む一群のファクタのうちの少なくとも１つのファクタを測定することによってキャッシュを使用すること及びストレージを直接的に使用することのいずれがより効率的な方法であるかを測定し、
得られた測定結果に基づき、キャッシュを使用すること及びストレージを直接的に使用することに対して各測定されたブロック・サイズに対してより効率的な方法を選択し、
前記各測定されたブロック・サイズを前記選択された方法と関連付け、
前記各測定されたブロック・サイズの一つに対応するブロック・サイズを有するデータ・ストリームに応答して、当該データ・ストリームに対して、前記対応するブロック・サイズに関連付けされた前記選択されたより効率的な方法を使用する、
ように構成されたコンピュータ構成要素。
【請求項１５】
前記コンピュータ構成要素が、コントローラ、制御ユニット、マイクロコントローラ、シングル・チップ・コンピュータ要素、チップセット又はボードである、請求項１４に記載のコンピュータ構成要素。
【外国語明細書】
2016149155000001.pdf