(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
1つ又は複数のプロセッサによって実行される、コンピュータ上で実行されているアプリケーションの速度は、主に、処理されることになる情報に対するアクセス速度によって、且つさらなる処理のため又は入力のためのいずれかに必要とされるまで、処理された情報を記憶することができる速度によって判断される。
【0003】
異なる性質、特に、異なる速度を備え、それによって、異なる価格を有する異なるメモリ・タイプがコンピュータ・システム内で使用される。更に、メモリとアプリケーションを実行するプロセッサとの間で使用される異なるバス、並びにバスに接続された構成要素は読取り速度及び/又は書込み速度に影響を及ぼす。更に、メモリの特性は進化しており、コンピュータ内で使用されるメモリ又はコンピュータによって使用されるメモリは、より高速なメモリに更新され得る。メモリ間の基本的な分割は、メモリは、頻繁にアクセスされる命令及びデータに関する高速ストレージとして使用されるバッファ・メモリであるキャッシュであるか、又はメモリは、いわゆる、メイン・メモリ若しくはストレージのいずれかである。基本的に、2つのタイプのメモリI/O(即ち、書込み/読取り)動作が存在する。即ち、ストレージに直接的にアクセスする動作、又はそれを通じてすべてのデータ・ストリームがメイン・メモリに且つ/又はメイン・メモリから渡されるキャッシュを使用する動作である。現在、キャッシュを使用することは既定のソリューションである。しかし、時として、ストレージに直接的にアクセスすることは、より効率的な可能性があり、オーバヘッドがより少なくなる可能性がある。
【0004】
WO2008/004149は、フラッシュ・メモリの時間オーバヘッドと摩耗とを最小限に抑えるために、ストレージとして使用されるフラッシュ・メモリの一部がフラッシュ・メモリの残りの部分用のバッファとして使用されるように割り振られる解決策を開示する。この解決策では、すべての書込み要求及び読取り要求はメモリ・コントローラを通過する。メモリ・コントローラがメモリに書き込まれることになるデータ・ストリームを受信するとき、メモリ・コントローラは受信されたデータ・ストリームのサイズを所定数のデータ・パケットと比較して、データ・ストリームが所定数のデータ・パケットよりも大きい場合、そのデータ・ストリームはその目標宛先に直接的に記憶され、そうでない場合、そのデータ・ストリームはその目標宛先に対して後で記憶されて、そのデータ・ストリームがそこに存在する限り、バッファ部分から読み取られるように、バッファ部分用に記憶される。バッファ部分からのデータが記憶されて、同じ目標宛先を有する1個を超えるデータが存在する場合、最新のデータだけが記憶される。
【0005】
フラッシュ・メモリに直接アクセスすることはより効率的である可能性があるとはいえ、WO2008/004149の解決策はストレージ内で依然として発生し、メモリ・コントローラへのデータ・ストリーム及びメモリ・コントローラからのデータ・ストリームはキャッシュを通過する。
【発明を実施するための形態】
【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】
技術が進展するにつれて、この発明性のある概念を様々な方法で実施することが可能である点は当業者に明らかになるであろう。本発明及びその実施例は上で説明された実例に限定されず、特許請求の範囲内で変形し得る。