特許第6145193号(P6145193)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ トゥクセラ インコーポレイテッドの特許一覧

<>
  • 特許6145193-メモリへの読取り又は書込み 図000002
  • 特許6145193-メモリへの読取り又は書込み 図000003
  • 特許6145193-メモリへの読取り又は書込み 図000004
  • 特許6145193-メモリへの読取り又は書込み 図000005
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6145193
(24)【登録日】2017年5月19日
(45)【発行日】2017年6月7日
(54)【発明の名称】メモリへの読取り又は書込み
(51)【国際特許分類】
   G06F 12/08 20160101AFI20170529BHJP
   G06F 3/06 20060101ALI20170529BHJP
【FI】
   G06F12/08 517B
   G06F12/08 557
   G06F3/06 302A
【請求項の数】15
【外国語出願】
【全頁数】11
(21)【出願番号】特願2016-83229(P2016-83229)
(22)【出願日】2016年4月18日
(62)【分割の表示】特願2013-517421(P2013-517421)の分割
【原出願日】2011年6月21日
(65)【公開番号】特開2016-149155(P2016-149155A)
(43)【公開日】2016年8月18日
【審査請求日】2016年5月18日
(31)【優先権主張番号】20105743
(32)【優先日】2010年6月29日
(33)【優先権主張国】FI
(73)【特許権者】
【識別番号】513002304
【氏名又は名称】トゥクセラ インコーポレイテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】特許業務法人浅村特許事務所
(72)【発明者】
【氏名】スザカクシツ、スザボルクス
【審査官】 酒井 恭信
(56)【参考文献】
【文献】 米国特許出願公開第2008/0184003(US,A1)
【文献】 特開平10−269143(JP,A)
【文献】 特開平04−060730(JP,A)
【文献】 米国特許出願公開第2009/0070527(US,A1)
【文献】 米国特許出願公開第2009/0172249(US,A1)
【文献】 特開平07−225714(JP,A)
【文献】 国際公開第2009/158183(WO,A1)
【文献】 特開2005−148961(JP,A)
【文献】 米国特許出願公開第2005/0108473(US,A1)
【文献】 米国特許出願公開第2007/0005889(US,A1)
【文献】 特開平11−353230(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/08 − 12/12
G06F 3/06
(57)【特許請求の範囲】
【請求項1】
コンピューティング環境に関する方法であって、
ある複数のブロック・サイズに関し、当該ブロック・サイズのブロックをキャッシュから読み取るためにかかる時間、前記ブロックを前記キャッシュに書き込むためにかかる時間、前記ブロックを前記キャッシュから読み取りかつ前記キャッシュに書き込むためにかかる時間、前記ブロックを前記キャッシュから読み取るためのプロセッサ・リソースの使用量、前記ブロックを前記キャッシュに書き込むためのプロセッサ・リソースの使用量、及び前記ブロックを前記キャッシュから読み取りかつ前記キャッシュに書き込むためのプロセッサ・リソースの使用量を含む一群のファクタのうちの少なくとも1つのファクタの決定と、前記キャッシュの代わりにストレージを直接的に使用した場合の前記少なくとも1つのファクタの決定と、を含む決定を行うステップと
前記決定によって得られた結果に基づき、キャッシュを使用すること及びストレージを直接的に使用することのいずれがより効率的な方法であるかを前記複数のブロック・サイズの各々に対して選択し
前記複数のブロック・サイズの各々と前記選択された方法を関連付けするステップと、
前記複数のブロック・サイズの一つのブロック・サイズであるデータ・ストリームのブロック・サイズに応答して、当該データ・ストリームに対して、前記複数のブロック・サイズの一つに関連付けされたより前記選択されたより効率的な方法を使用するステップと、を含む方法。
【請求項2】
前記決定を行うステップが一つ以上のファクタを測定することによって行われる、請求項1に記載の方法。
【請求項3】
前記決定を行うステップが、
前記コンピューティング環境のメモリ使用の前記効率に影響を及ぼすシステム・パラメータを取得するステップと
前記取得されたシステム・パラメータを使用することによって、前記複数のブロック・サイズに対して前記少なくとも1つのファクタを計算するステップと、
を更に含む、請求項1に記載の方法。
【請求項4】
前記コンピューティング環境のメモリ使用の前記効率性に影響を与えるシステム・パラメータを取得するステップと
前記取得されたシステム・パラメータを使用することによって、前記複数のブロック・サイズに関して、キャッシュを使用すること及びストレージを直接的に使用することの効率性を計算するステップと、
前記コンピューティング環境内のハードウェアを確認するために、対応する測定結果を計算結果と比較するステップと
を更に含む、請求項2に記載の方法。
【請求項5】
データ・ストリームのブロック・サイズに関する情報を受信するステップと、
前記データ・ストリームの前記ブロック・サイズが前記複数のブロック・サイズのどの一つに対応するかを決定するステップと、
前記データ・ストリームに関して、前記関連付けられた方法を使用するステップと
を更に含む、請求項2に記載の方法。
【請求項6】
前記選択が実行された前記測定結果に基づいて、最適ブロック・サイズを決定するステップと、
前記最適ブロック・サイズをアプリケーションに通知するステップと、
を更に含む、請求項2に記載の方法。
【請求項7】
前記選択が実行された前記計算結果に基づき、最適なブロック・サイズを決定するステップと、
前記最適なブロック・サイズをアプリケーションに適用するステップと、
を更に含む、請求項3に記載の方法。
【請求項8】
前記読み取るためのステップと前記書き込むためのステップとを別個に実行するステップを更に含む、請求項3に記載の方法。
【請求項9】
ある複数のブロック・サイズに関して、当該ブロック・サイズのブロックをキャッシュから読み取るためにかかる時間、前記ブロックを前記キャッシュに書き込むためにかかる時間、前記ブロックを前記キャッシュから読み取りかつ前記キャッシュに書き込むためにかかる時間、前記ブロックを前記キャッシュから読み取るためのプロセッサ・リソースの使用量、前記ブロックを前記キャッシュに書き込むためのプロセッサ・リソースの使用量、及び前記ブロックを前記キャッシュから読み取りかつ前記キャッシュに書き込むためのプロセッサ・リソースの使用量、を含む一群のファクタのうちの少なくとも1つのファクタの決定と、前記キャッシュの代わりにストレージを直接的に使用した場合の前記少なくとも1つのファクタの決定と、を含む決定を行なうこと、
前記決定によって得られた結果に基づき、キャッシュを使用すること及びストレージを直接的に使用することのいずれがより効率的な方法であるかを前記複数のブロック・サイズの各々に対して選択すること、及び
前記複数のブロック・サイズの各々と前記選択された方法を関連付けすること、
前記複数のブロック・サイズの一つのブロック・サイズであるデータ・ストリームのブロック・サイズに応答して、データ・ストリームに対して、前記複数のブロック・サイズの一つに関連付けされた前記選択されたより効率的な方法を使用すること、
を装置上で実行させるように構成されたコンピュータ・プログラム・コードを備えたコンピュータ・プログラム。
【請求項10】
前記決定が一つ以上のファクタを測定することによって行うこと、を装置上で実行させるように構成された、請求項9に記載のコンピュータ・プログラム。
【請求項11】
前記コンピュータ・プログラム・コードが更に、
メモリ使用の前記効率に影響を及ぼす、コンピューティング環境のシステム・パラメータを取得すること、
前記取得されたシステム・パラメータを使用することによって、前記複数のブロック・サイズに関して、キャッシュを使用すること及びストレージを直接的に使用することのいずれがより効率的な方法であるかを計算すること、によって一つ以上のファクタの決定を行うこと
を装置上で実行させるように構成された、請求項9に記載のコンピュータ・プログラム。
【請求項12】
ある複数のブロック・サイズに関して、当該ブロック・サイズのブロックをキャッシュから読み取るためにかかる時間、前記ブロックを前記キャッシュに書き込むためにかかる時間、前記ブロックを前記キャッシュから読み取りかつ前記キャッシュに書き込むためにかかる時間、前記ブロックを前記キャッシュから読み取るためのプロセッサ・リソースの使用量、前記ブロックを前記キャッシュに書き込むためのプロセッサ・リソースの使用量及び前記ブロックを前記キャッシュから読み取りかつ前記キャッシュに書き込むためのプロセッサ・リソースの使用量を含む一群のファクタのうちの少なくとも1つのファクタの測定と、前記キャッシュの代わりにストレージを直接的に使用した場合の前記少なくとも1つのファクタの測定と、を含む測定を行なう手段と、
前記測定から得られた結果に基づき、キャッシュを使用すること及びストレージを直接的に使用することのいずれがより効率的な方法であるかを前記複数のブロック・サイズの各々に対して選択する手段と、
前記複数のブロック・サイズの各々と前記選択された方法を関連付けする手段と、
データ・ストリームのブロック・サイズに対応する前記複数のブロック・サイズの一つのブロック・サイズに関連付けされたより効率的な方法を使用する手段と、
を備えた装置。
【請求項13】
前記装置が更に、前記キャッシュと、前記ストレージと、データ・ストリームが通過する構成要素とを備え、前記構成要素が、少なくとも、データ・ストリームに対して、前記対応するブロック・サイズに関係付けされた前記選択されたより効率的な方法に基づいて前記キャッシュ又は前記ストレージを使用する手段を備えた、請求項12に記載の装置。
【請求項14】
ある複数のブロック・サイズに関して、当該ブロック・サイズのブロックを読み取るためにかかる時間、前記ブロックを書き込むためにかかる時間、前記ブロックを読み取りかつ書き込むためにかかる時間、前記ブロックを読み取るためのプロセッサ・リソースの使用量、前記ブロックを書き込むためのプロセッサ・リソースの使用量、及び前記ブロックを読み取りかつ書き込むためのプロセッサ・リソースの使用量を含む一群のファクタのうちの少なくとも1つのファクタを測定することによってキャッシュを使用すること及びストレージを直接的に使用することのいずれがより効率的な方法であるかを測定し、
得られた測定結果に基づき、キャッシュを使用すること及びストレージを直接的に使用することに対して各測定されたブロック・サイズに対してより効率的な方法を選択し、
前記各測定されたブロック・サイズを前記選択された方法と関連付け、
前記各測定されたブロック・サイズの一つに対応するブロック・サイズを有するデータ・ストリームに応答して、当該データ・ストリームに対して、前記対応するブロック・サイズに関連付けされた前記選択されたより効率的な方法を使用する、
ように構成されたコンピュータ構成要素。
【請求項15】
前記コンピュータ構成要素が、コントローラ、制御ユニット、マイクロコントローラ、シングル・チップ・コンピュータ要素、チップセット又はボードである、請求項14に記載のコンピュータ構成要素。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データの記憶又は取出しに関し、詳細には、アプリケーションに関するデータ・ストリームの読取り及び/又は書込みに関する。
【背景技術】
【0002】
1つ又は複数のプロセッサによって実行される、コンピュータ上で実行されているアプリケーションの速度は、主に、処理されることになる情報に対するアクセス速度によって、且つさらなる処理のため又は入力のためのいずれかに必要とされるまで、処理された情報を記憶することができる速度によって決定される。
【0003】
異なる性質、特に、異なる速度を備え、それによって、異なる価格を有する異なるメモリ・タイプがコンピュータ・システム内で使用される。更に、メモリとアプリケーションを実行するプロセッサとの間で使用される異なるバス、並びにバスに接続された構成要素は読取り速度及び/又は書込み速度に影響を及ぼす。更に、メモリの特性は進化しており、コンピュータ内で使用されるメモリ又はコンピュータによって使用されるメモリは、より高速なメモリに更新され得る。メモリ間の基本的な分割は、メモリは、頻繁にアクセスされる命令及びデータに関する高速ストレージとして使用されるバッファ・メモリであるキャッシュであるか、又はメモリは、いわゆる、メイン・メモリ若しくはストレージのいずれかである。基本的に、2つのタイプのメモリI/O(即ち、書込み/読取り)動作が存在する。即ち、ストレージに直接的にアクセスする動作、又はそれを通じてすべてのデータ・ストリームがメイン・メモリに且つ/又はメイン・メモリから渡されるキャッシュを使用する動作である。現在、キャッシュを使用することは既定のソリューションである。しかし、時として、ストレージに直接的にアクセスすることは、より効率的な可能性があり、オーバヘッドがより少なくなる可能性がある。
【0004】
WO2008/004149は、フラッシュ・メモリの時間オーバヘッドと摩耗とを最小限に抑えるために、ストレージとして使用されるフラッシュ・メモリの一部がフラッシュ・メモリの残りの部分用のバッファとして使用されるように割り振られる解決策を開示する。この解決策では、すべての書込み要求及び読取り要求はメモリ・コントローラを通過する。メモリ・コントローラがメモリに書き込まれることになるデータ・ストリームを受信するとき、メモリ・コントローラは受信されたデータ・ストリームのサイズを所定数のデータ・パケットと比較して、データ・ストリームが所定数のデータ・パケットよりも大きい場合、そのデータ・ストリームはその目標宛先に直接的に記憶され、そうでない場合、そのデータ・ストリームはその目標宛先に対して後で記憶されて、そのデータ・ストリームがそこに存在する限り、バッファ部分から読み取られるように、バッファ部分用に記憶される。バッファ部分からのデータが記憶されて、同じ目標宛先を有する1個を超えるデータが存在する場合、最新のデータだけが記憶される。
【0005】
フラッシュ・メモリに直接アクセスすることはより効率的である可能性があるとはいえ、WO2008/004149の解決策はストレージ内で依然として発生し、メモリ・コントローラへのデータ・ストリーム及びメモリ・コントローラからのデータ・ストリームはキャッシュを通過する。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】WO2008/004149
【発明の概要】
【発明が解決しようとする課題】
【0007】
以下の説明は、本発明のいくつかの態様の基本的な理解をもたらすために、本発明の簡素化された要約を提示する。この要約は本発明の広範囲な概要ではない。本発明の主な要素/重要な要素を識別すること、又は本発明の範囲を描くことは意図されない。その唯一の目的は、後に提示されるより詳細な説明の前置きとして、本発明のいくつかの概念を簡素化された形態で提示することである。
【0008】
いくつかの実施例の態様は、データ・ストリームのブロック・サイズに関する情報と、キャッシュを使用しようと、又はストレージを直接的に使用しようと、そのブロック・サイズに関して決定されたキャッシュ及びストレージ性能とに基づいて決定するステップと、それに応じて動作するステップとを含む。
【0009】
本発明の様々な態様は、独立クレームに定義されるような方法、装置、及びコンピュータ・プログラム製品を含む。本発明のさらなる実施例は独立クレームで開示される。
【0010】
以下の説明では、添付の図面を参照して、異なる実施例がより詳細に説明される。
【図面の簡単な説明】
【0011】
図1】ある実施例による簡素化されたブロック図である。
図2】実施例を示す流れ図である。
図3】実施例を示す流れ図である。
図4】実施例を示す流れ図である。
【発明を実施するための形態】
【0012】
次に、本発明のすべての実施例ではなく、そのいくつかが示される添付の図面を参照して、本発明の例示的な実施例が以下でより十分に説明される。実際に、本発明は、多くの異なる形態で実施可能であり、本明細書に記載される実施例に限定されると解釈されるべきではない。むしろ、これらの実施例は、本開示が適用可能な法的要件を満たすように提供される。本明細書はいくつかの場所で「ある」、「一」、又は「いくつかの」(1つ若しくは複数の)実施例を参照する場合があるが、これは必ずしもそれぞれのそのような参照が(1つ若しくは複数の)同じ実施例を指すとは限らず、又はその特徴が単一の実施例だけに適用されるとも限らない。異なる実施例の単一の特徴は、組み合わされて他の実施例を提供することも可能である。
【0013】
本発明の実施例は、コンピューティング装置、コンピュータ、対応する構成要素に、且つ/又はキャッシュの使用をサポートする任意のコンピューティング・システム又はコンピューティング・ネットワークに適用可能である。コンピューティング装置は、任意の種類のプロセッサ、オペレーティング・システム、及び1つのメモリ/複数のメモリを含むことが可能である。したがって、すべての用語及び表現は、広く解釈されるべきであり、実施例を限定するのではなく、実施例を例示することが意図される。
【0014】
ある実施例によるコンピューティング装置の一般的な構成が図1に例示される。図1は、コンピューティング装置のいくつかの構成要素だけを示す簡素化されたブロック図であり、これらの構成要素はある実施例を示すために使用されている。このコンピューティング装置は、ここで詳細に説明される必要がない他の構成要素、モジュール、接続、結合などを含むことが可能である点を理解されたい。
【0015】
コンピューティング環境を示すコンピューティング装置100は、アプリケーション120を実行する、バス101を経由して決定構成要素130に結合されたプロセッサ110を備える。決定構成要素130、それによって、プロセッサ及びアプリケーションは、更に、バス102を経由してキャッシュ140に結合されて、バス103を経由してストレージ150に結合される。ある実施例を用いて下で説明される決定構成要素130の機能性を実施するコンピューティング装置100は、先行技術手段だけでなく、例えば、キャッシュを使用するか、又はストレージを直接的に使用するかを決定するための手段も備える。より詳細には、コンピューティング装置は、ある実施例を用いて説明される機能性を実施するための手段を備え、コンピューティング装置は、それぞれの別個の機能に関して別個の手段を備えることが可能であるか、又は手段は2つ以上の機能を実行して、異なる実施例の機能を組み合わせるようにすら構成されることも可能である。
【0016】
一般に、プロセッサ110は中央処理装置(CPU)であるが、プロセッサは追加の演算プロセッサであってもよい。コンピューティング装置はその他の構成要素及び/又はキャッシュを備えることが可能であり、ストレージはインターネットを経由してアクセス可能な別のコンピューティング装置内に位置することも可能である点を理解されたい。
【0017】
決定構成要素130はある実施例を用いて下で説明される機能性を実行するように構成され、決定構成要素130は、異なる実施例からの機能性を実行するように構成されることも可能である。このために、決定構成要素は、決定表131を記憶するための少量のメモリを備えることが可能であり、実装形態に応じてプロセッサ110に接続され、又はそれ自体がそれらの機能性を実行するためのプロセッサ(図1に示されず)を備える。更に、この決定構成要素は、その他のユニットを備えることが可能であり、この決定構成要素は、例えば、制御情報、データ、及び書込み要求又は読取り要求を受信並びに転送するための異なるインターフェースを備える。
【0018】
ある実施例による決定構成要素は、一般に、内部メモリと装置の様々なインターフェースとに接続されたコントローラ、制御ユニット、マイクロコントローラなどであってよい。決定構成要素は、シングル・チップ・コンピュータ要素、若しくはチップセットなど、マイクロプロセッサとして、又は算術演算のために使用されるストレージ領域を提供するための少なくとも1つのメモリと算術演算を実行するための演算プロセッサとを含むボードとして構成可能である。決定構成要素は、1つ若しくは複数の実施例の1つ若しくは複数の機能を実行するような形でプログラムされている、1つ若しくは複数のコンピュータ・プロセッサ、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理デバイス(DSPD)、プログラマブル論理デバイス(PLD)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、及び/又はその他のハードウェア構成要素を備えることが可能である。ある実施例は、装置内にロードされるとき、決定ユニットを構成するプログラム命令を備えた、任意のコンピューティング装置配布媒体上/データ・ストレージ媒体上で実施されるコンピュータ・プログラムとしてこの決定構成要素を提供する。ソフトウェア・ルーチン、「プログラム・ライブラリ」を構成するプログラム・スニペット、並びにアプレット及びマクロを含む、プログラム製品とも呼ばれるプログラムは、任意の媒体内に記憶可能であり、コンピューティング装置内にダウンロード可能である。
【0019】
キャッシュ140及びストレージ150は、揮発性メモリ及び/又は不揮発性メモリであってよく、キャッシュ140及びストレージ150は異なるタイプのものであってよい。例えば、キャッシュ及び/又はストレージは、アプリケーション120の動作に関連するステップを実行するために、ソフトウェア・アプリケーション又はオペレーティング・システムなどのコンピュータ・プログラム・コード、中央処理装置又は対応するプロセッサに関する情報、データ、コンテンツなどを記憶することが可能である。キャッシュ及び/又はストレージは、例えば、ランダム・アクセス・メモリ、ハード・ディスク、フラッシュ・メモリ、固体メモリ(SSD)、又はその他の固定データ・メモリ・デバイス若しくは固体データ・ストレージ・デバイスであってよい。更に、キャッシュ及び/若しくはストレージ、又はその(それらの)一部は、装置に取外し可能に接続された取外し可能メモリであってよい。
【0020】
バス102及びバス103は、構成要素同士の間で任意の種類のデータを転送する任意のタイプのバスであってよく、バス102及びバス103は異なるタイプのものであってよい。バスは、複数のワイヤ上でデータを並列に搬送する並列バスであってよく、若しくはビット・シリアル形態でデータを搬送する直列バスであってよく、又は並列接続とビット・シリアル接続の両方を使用するバスであってもよい。したがって、バス102及びバス103は、データの転送を実現する異なる接続及び構成要素を含む任意の物理的な構成であってよい。
【0021】
コンピューティング装置は1つのエンティティとして図1に示されているが、メモリは1つ若しくは複数の物理的又は論理的なエンティティの形で実施可能である。例えば、キャッシュ及び/又はストレージは、複数のコンピューティング装置にわたる分散型(共有)ストレージ・デバイスとして実施可能であり、バスはコンピューティング装置内で、又はコンピューティング装置間でデータを転送することができる。これらのユニット及び機能は、ソフトウェア構成要素及び/又はソフトウェア・ハードウェア構成要素並びに/或いは(読出し専用メモリなどの媒体上に永久に記録されるか、若しくは配線されたコンピュータ回路の形で実施される)ファームウェア構成要素であってよい。
【0022】
図2は、ある実施例による決定構成要素の機能性を例示する。この実施例では、決定構成要素は、ある幾つかのブロック・サイズに関して測定することによって、キャッシュを使用するのがより効率的であるか、又はストレージに直接的に記憶することがより効率的であるか、即ち、これらのメモリ・タイプのうちのどのメモリ・タイプがより効率的なメモリ・タイプであるかを決定する。その幾つかのブロック・サイズは、例えば、512kB、1kB、2kB、4kB、...1024kBであってよい。(ブロックは書込み及び/又は読取りの単位である。)
【0023】
この実施例では、決定構成要素は、読取り(入力)及び書込み(出力)に関して、下で説明されるステップを別個に実行する。これらは、ほとんど同時に実行されること、及び/又は下で説明される順序とは別の順序で実行されることが可能である点を理解されたい。別の実施例では、決定構成要素は、読取り又は書込みにだけに関して下で説明されるステップを実行し、次いで、読取りと書込みの両方に関する結果を使用する。しかし、読取り及び書込みは別個のタスクであるため、読取りと書込みの両方に関するステップを実行することは、コンピューティング装置内でI/Oの全体的な性能が最も効率的に利用可能にされるという利点を有する。
【0024】
示される実例では、分かり易いように、読取り(又は、書込み)のための時間は、どちらがより効率的であるかを決定するための決定ファクタとして使用されると仮定される。しかし、決定ファクタとして何が使用されるかについて制限は存在せず、決定ファクタは異なるファクタの組合せであってよい。例えば、決定ファクタは、CPUリソースなど、プロセッサ・リソースの使用に関する場合があり(より効率的な方法は、同じ量の作業に関してより少ないCPUリソースを使用するか、若しくは同じ量のCUリソースがより多い作業を実行する)、又は決定ファクタは、時間とプロセッサ・リソース使用の両方を考慮に入れる場合もある。更に、コンピューティング装置の読取り動作及び/又は書込み動作を使用するアプリケーションは、決定ファクタに影響を与える要件を有する場合がある。ある実施例では、例えば、選択リストをユーザに提供することによって、ユーザに決定ファクタを選択する機会が与えられる場合があり、その場合、ユーザの選択が使用される。
【0025】
決定構成要素は、第1のブロック・サイズを測り(ステップ201)、ステップ202で、キャッシュから量を読み取ると同時に、それにかかる時間を測定する。次いで、ステップ203において、ストレージから直接的に同じ量が読み取れられ、それにかかる時間が測定される。次に、ステップ204において、決定ユニットは、より効率的であったメモリ・タイプ、即ち、示される実例では、最も高速のメモリ・タイプを選択して、ステップ205において、そのメモリ・タイプを読取り用のブロック・サイズと関連付ける。次いで、ステップ206において、すべてのブロック・サイズがメモリ・タイプと関連付けられているかどうかが検査される。そうでない場合、決定構成要素は、次のブロックに関して上記のステップを実行し、即ち、ステップ201にとどまる。すべてのブロック・サイズがメモリ・タイプと関連付けられた場合、それらのブロック・サイズは読取り(入力)のために使用できる状態にある(ステップ207)。
【0026】
この実施例では、上記のステップは、次いで、書込みに関して繰り返される。即ち、読取りの代わりに、ステップ202及びステップ203において書込みが実行される。その場合、その結果は、図1に例示されるように、読取り及び書込みに関して別個のブロック・サイズ固有のメモリ・タイプの選択を有する決定表であってよく、読取り用のメモリ・タイプは書込み用と同じであるか、又は異なる。
【0027】
この実施例のある利点は、使用すべきメモリ・タイプを決定するとき、それらの現実の機能性に従って、すべての構成要素、異なるバスなどが考慮に入れられることである。これは、プロセッサの負荷が最小限に抑えられ、それによって、生成される熱が少なくなり、必要とされるエネルギーが少なくなるというさらなる利点を有する。
【0028】
本発明のさらなる実施例では、時間を測定することなど、測定を実行する代わりに、決定構成要素は、メモリ(即ち、キャッシュ及びストレージ)のサイズ、当面どの程度の空きメモリが存在するか、バス速度など、システム・パラメータを取得して、その情報を使用して、それぞれのブロック・サイズに関してより効率的なメモリ・タイプ(キャッシュを経由して記憶するか、又はストレージに直接的に記憶するか)を計算する。
【0029】
さらなる実施例では、決定構成要素は、測定と計算の両方を行い、ハードウェアを確認するために、それらの測定結果を計算された結果と比較するように構成される。ハードウェアの確認によって実現される利点は、考えられる障害を検出するのを助け、それによって、何らかのより大きな障害が発生する前に障害の修正を促すことである。
【0030】
測定/計算を例示する上記の説明は、ある間隔で、電源がオンにされるとき、及び/又はオペレーティング・システム・オンライン更新、ドライバ更新、キャッシュ管理ソフトウェア更新、新しいメモリ・ボードが設置されているなど、コンピューティング装置内にハードウェア変更若しくはソフトウェア変更が存在するときに実行可能である。
【0031】
別の実施例では、測定/計算は、データ・ストリームが開始するたびに、そのデータ・ストリームによって使用されるブロック・サイズに対して実行される。
【0032】
図3は、決定構成要素が、ステップ301において、データ・ストリームのブロック・サイズの表示と、データ・ストリームが読み取られることになるか、又は書き込まれることになるかに関する情報とを受信する状況を例示する。その場合、決定構成要素は、受信された表示を使用して、ステップ302において、図2を用いて上で例示されたように、例えば、作成された表から値を取得し、その値は、「キャッシュ」又は「ストレージ」のいずれかである。受信されたブロック・サイズが試験された幾つかのブロック・サイズのうちの1つでない場合、即ち、それがそのブロック・サイズに関連するメモリ・タイプを有さない場合、実装形態に応じて、そのブロック・サイズは次のブロック・サイズに切り上げられるか、若しくは切り捨てられるか、又は最も近いブロック・サイズが使用される。次いで、ステップ303において、そのデータ・ストリームに関して、取得されたメモリ・タイプが使用される。例えば、データ・ストリームが書き込まれることになる場合、ステップ302でどちらが取得されたかに応じて、データ・ストリームは決定構成要素からキャッシュ又はストレージのいずれかに転送される。
【0033】
上記の内容は、データ・ストリームのブロック・サイズの表示と、データ・ストリームが読み取られることになるか又は書き込まれることになるかに関する情報とが決定構成要素を通過するが、実際のデータ・ストリームが決定構成要素を通らない実装形態にも適用される。
【0034】
決定構成要素は、アプリケーションに対して透過的であり得る。しかし、図4は、幾つかのブロック・サイズが読取り/書込みに関して対応するメモリ・タイプと関連付けられた後で、決定構成要素が、ステップ401において、最適ブロック・サイズを決定して、ステップ402において、その最適ブロック・サイズをアプリケーションに通知する、ある実施例を示す。最適ブロック・サイズは、好ましくは、図2を用いて説明された手順の間に取得された測定結果及び/又は計算結果を使用して決定され、最適条件は、最善の総合結果(例えば、最善の速度又は最善の性能)を提示するものである。したがって、この実施例は、動的な最適値が通知されることを実現し、この値はコンピューティング環境と、そのコンピューティング環境に行われた変更とを考慮に入れる測定及び/又は計算によって取得されている。そのような値を通知することは効率性を改善するが、開発者によって行われた推定に基づく、即ち、それがハード・コーディングされた時点での開発者の最善の推定である、先行技術のハード・コーディングされた通知値の場合、これは稀である。
【0035】
図2から図4において上で説明されたステップ及び関連する機能は、絶対的な発生順序ではなく、これらのステップのうちのいくつかは、同時に又は提示された順序とは別の順序で実行されることが可能である。例えば、読取り測定及び書込み測定は、別のブロック・サイズを測る(ステップ201及び206)前に、1つのブロック・サイズに関して実行可能である(ステップ202〜205)。それらのステップ間で、又はそれらのステップ内でその他の機能を実行することも可能である。それらのステップのうちのいくつか又はそれらのステップの一部を省略することも可能である。例えば、データを読み取る/書き込むアプリケーションは読取り及び/又は書込みに関してその独自の制御を要求することができ、その場合、データ・ストリームは決定構成要素を通過するが、決定構成要素は、その要求に応答して、使用されることになるメモリ・タイプを取得せず、即ち、ステップ302及び303は、その場合、省略される。更に、それらのステップのうちのいくつか若しくはそれらのステップの一部を一緒に統合すること、又は対応するステップ若しくはステップの一部で置換することも可能である。例えば、ステップ202及びステップ203で時間を測定する代わりに、又はそれに加えて、CPU使用を測定することが可能である。
【0036】
技術が進展するにつれて、この発明性のある概念を様々な方法で実施することが可能である点は当業者に明らかになるであろう。本発明及びその実施例は上で説明された実例に限定されず、特許請求の範囲内で変形し得る。
図1
図2
図3
図4