(57)【要約】【課題】  データの優先順位付けを用いるマルチレベルのメモリ・アーキテクチャを提供すること。【解決手段】  複数のメモリ場所を含むコンピュータ可読メモリを制御するための方法において、第１メモリ場所に格納されたデータ単位の使用頻度が判断される。データ単位は、第１メモリ場所とは異なる、第２メモリ場所の既知の待ち時間とデータ単位の使用頻度との間の相関に基づいて選択された、データ単位のための主データ格納場所である第２のメモリ場所に移動される。【選択図】      図１
2008021314.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリ場所を含むコンピュータ可読メモリを制御するための方法であって、
第１メモリ場所に格納されたデータ単位の使用頻度を判断するステップと、
前記データ単位を、前記第１メモリ場所とは異なる、第２メモリ場所の既知の待ち時間と前記データ単位の使用頻度との間の相関に基づいて選択された、前記データ単位の１次データ格納場所である前記第２メモリ場所に移動させるステップと、
を含む、方法。
【請求項２】
前記判断するステップが、所定のメモリ・サイクル数の間に前記データ単位がアクセスされた回数を数えるステップを含む、請求項１に記載の方法。
【請求項３】
前記第１メモリ場所が前記第２メモリ場所と同じ物理メモリ・クラスのもの又は異なる物理メモリ・クラスのもののいずれか一方である、請求項１に記載の方法。
【請求項４】
メモリ場所を各々が異なる待ち時間の範囲に対応する複数の待ち時間クラスに群分けするメモリ・マップを生成するステップをさらに含む、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記メモリ場所の既知の待ち時間に基づいて、前記複数のメモリ場所の各々を一組の待ち時間クラスの１つに特徴付けるステップをさらに含む、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
データ単位の使用頻度を判断する前記ステップが、
カウンタを前記第１メモリ場所と関連付けるステップと、
前記データ単位がアクセスされるたびに前記カウンタを増分させるステップと、
を含む、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
計算回路内で、各々が対応するデータ単位を格納する複数のメモリ場所を管理するための方法であって、
各メモリ場所に関して待ち時間を判断するステップと、
各データ単位に関して使用頻度を判断するステップと、
使用頻度が高い少なくとも１つのデータ単位を待ち時間が少ない１次メモリ場所に格納し、使用頻度が低い少なくとも１つのデータ単位を待ち時間が多い１次メモリ場所に格納するステップと、
を含む方法。
【請求項８】
各々が複数の持ち時間クラスの１つに分類された既知の待ち時間を有する複数のメモリ場所と、
前記メモリ場所の各々と関連付けられた使用頻度インジケータと、
所定のサイクル数にわたり、対応するメモリ場所に格納されたデータ単位がアクセスされるたびに各々の前記使用頻度インジケータを増分させるインクリメンタと、
各データ単位を前記データ単位の使用頻度に対応する待ち時間クラスの構成要素である１次メモリ場所に格納するメモリ・コントローラと、
を含む、データ単位を管理する装置。
【請求項９】
前記使用頻度インジケータがページ・テーブル上の各メモリ場所と関連付けられた複数のビットを含む、請求項８に記載の装置。
【請求項１０】
少なくとも１つの待ち時間クラスが異なる物理メモリ・ユニットからのメモリ場所を含む、請求項８又は９に記載の装置。
【請求項１１】
前記装置からアクセス可能な少なくとも１つの物理メモリ・ユニットが、異なる待ち時間クラスに分類されたメモリ場所を含む、請求項８〜１０のいずれか１項に記載の装置。
【請求項１２】
前記複数のメモリ場所が異なる物理メモリ・ユニットに常駐するメモリ場所を含む、請求項８〜１１のいずれか１項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのメモリ管理に関し、より具体的には、既知のメモリ場所の待ち時間に基づいてデータ単位を格納するコンピュータ・アーキテクチャに関する。
【背景技術】
【０００２】
事実上、全てのコンピュータ回路は、データを格納するためにある種のデジタル・メモリを使用する。こうしたメモリは、オン・チップ・メモリ（レジスタのアレイ等）、オン・ボード・メモリ(キャッシュ・メモリ等)、主メモリ（プロセッサとは異なる回路基板上のＤＲＡＭメモリ・チップ等）、フラッシュ・メモリ（特殊な読取り装置又はＵＳＢポートに差し込むことができるメモリ・デバイス等）、及びディスク・メモリ（ハード・ドライブ等）のうちの１つ又は複数を含む、異なる種類メモリ・デバイスの組み合わせを含むことができる。
【０００３】
メモリ空間に常駐するいくつかのデータ単位（データを群分けするためのいずれかの方法を含むことができる）は、同じメモリ空間に格納される他のデータ単位より使用されない。しかし、コンピュータのメモリ空間の異なる部分は、異なるメモリの待ち時間（データをメモリ場所からそれを必要とするエンティティへ転送するのにかかる時間）を示す。例えば、メモリ・バッファに最も近いメモリ・チップは、メモリ・バッファから離れたメモリ・チップよりもたいてい待ち時間が少ない。
【０００４】
ほとんどのメモリ・デバイスは、相対速度により分類することができる。例えば、オン・チップ・メモリは、通常、オン・ボード・メモリよりも高速であり、これら両方は、通常、ディスク・メモリよりもはるかに高速である。しかし、相対的に低速のメモリ・デバイスの特定部分が、相対的に高速のメモリ・デバイスの部分よりも実際には待ち時間が少ない場合がある。従って、頻繁に用いられるデータ単位を、低速メモリ・デバイスの高速部分ではなく高速メモリ・デバイスの低速部分に置くことは、結果としてメモリ空間の非効率的な使用になる。
【０００５】
多くのメモリの適用例においては、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）チップがアレイにおいて同様のランク位置に置かれて、データの書込み及び読取りのために、メモリの全てがメモリ・コントローラから等しくアクセス可能であるフラット・メモリ構造を生成する。しかし、完全バッファ付きデュアル・インライン・メモリ・モジュール（ＦＢＤＩＭＭ）のような現行の業界基準スキームにおいては、メモリ・チップ上のバッファを通したメモリ各層へのアクセス時間は不均一である。現行のＦＢＤＩＭＭ基準は、近いＤＩＭＭチップの少ない待ち時間を利用するが、メモリ・コントローラに近い頻繁に使用されるデータ、又は、コントローラから離れている余り頻繁に使用されないデータを意図的にマッピングしない。
【０００６】
現行のメモリ・デバイスは、典型的には、データをソート済みレベル（Ｌ１／Ｌ２／Ｌ３）に置く（プロセッサのための）キャッシュを含むが、これは、そのデータのコピーが主メモリ内であるか又はハード・ドライブのような直接アクセス・ストレージ・デバイス（ＤＡＳＤ）内に維持されるための空間を必要とする。これは、メモリ用途が加えられる点、及び、データのコピーを作成するため並びにそのデータが現在のものであることを保証するためのオーバーヘッドが加えられる点の両方において、メモリの非効率的な使用である。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従って、データ単位の相対的な使用頻度及び格納場所の待ち時間に基づいて、データ単位が格納される場所を判断するメモリ管理システムの必要性がある。
【０００８】
さらに、データ単位を待ち時間によって分けられた階層的メモリ空間に格納し、データ単位の追加的なコピーを必ずしも維持する必要がないメモリ管理システムの必要性がある。
【課題を解決するための手段】
【０００９】
従来技術の不利点は、１つの態様においては、第１メモリ場所に格納されたデータ単位の使用頻度が判断される、複数のメモリ場所を含むコンピュータ可読メモリを制御するための方法である本発明により克服される。データ単位は、第１メモリ場所とは異なる、第２メモリ場所の既知の待ち時間とデータ単位の使用頻度との間の相関に基づいて選択された、データ単位の１次データ格納場所である第２メモリ場所に移動される。
【００１０】
別の態様においては、本発明は、各々が計算回路で用いられる対応するデータ単位を格納する複数のメモリ場所を管理するための方法である。待ち時間が各々のメモリ場所に関して判断され、使用頻度が各々のデータ単位に関して判断される。使用頻度が高い少なくとも１つのデータ単位が待ち時間が少ない１次メモリ場所に格納され、使用頻度が低い少なくとも１つのデータ単位が待ち時間が多い１次メモリ場所に格納される。
【００１１】
さらに別の態様においては、本発明は、複数のメモリ場所に格納されたデータ単位を管理するための装置である。各メモリ場所は、複数の待ち時間クラスの１つに分類される既知の待ち時間を有する。使用頻度インジケータは、メモリ場所の各々と関連付けられる。インクリメンタは、所定のサイクル数にわたり、対応するメモリ場所に格納されたデータ単位がアクセスされるたびに各々の使用頻度インジケータを増分させる。メモリ・コントローラは、各々のデータ単位を、データ単位の使用頻度に対応する待ち時間クラスの構成要素である１次メモリ場所に格納する。
【００１２】
本発明のこれら及び他の態様は、以下の図面と併せて取られる以下の好ましい実施形態の説明から明らかになるであろう。当業者には明らかであるように、本開示の新規な概念の精神及び範囲から逸脱することなく、本発明の多数の変形及び修正を行うことができる。
【発明を実施するための最良の形態】
【００１３】
本発明の好ましい実施形態をここで詳細に説明する。図を参照すると、同様の番号は、図全体にわたって同様の部分を示す。ここでの説明及び特許請求の範囲全体にわたって用いられるように、以下の用語は、内容が明らかに他のことを示す場合を除いて、明確にここに関連する意味をもち、「ある（ａ、ａｎ）」及び「その（ｔｈｅ）」は複数形の説明を含み、「内に（ｉｎ）」の意味は「内に（ｉｎ）」及び「上に（ｏｎ）」を含む。さらに、ここで用いられるように、「１次メモリ場所」及び「１次場所」はデータ単位の一次コピーが格納されるメモリ場所を意味し、「２次メモリ場所」又は「２次場所」は、既に１次場所に格納されたデータ単位のコピーが格納されるメモリ場所を意味する。例えば、１次場所は典型的には主メモリを含み、２次場所は典型的にはキャッシュ・メモリを含む。
【００１４】
特定の適用例においては、全てのメモリ・アクセスの９６％乃至９９％がメモリ・アドレスの同じ２５％から行われることが知られている。あまり使用されないデータを相対的に待ち時間が多いメモリ場所（即ち、メモリ・コントローラから離れているＤＲＡＭチップ等）に常駐させ、頻繁に使用されるデータ単位を待ち時間の少ないメモリ場所（即ち、メモリ・コントローラに近いＤＲＡＭチップ内等）に格納させるメモリ・ストレージ・アーキテクチャを用いることにより、性能強化を実現することができる。こうしたアーキテクチャは、ＤＲＡＭ、静的ランダム・アクセス・メモリ（ＳＲＡＭ）、ＦＢＤＩＭＭメモリ、バッファリング及び再駆動ＤＲＡＭ、フラッシュ・メモリ、又は直列に配列されたＤＡＳＤストレージ・デバイスを含む多数のメモリ基準に適用することができる。
【００１５】
頻繁に使用されるデータ単位を高速の２次メモリ場所（オン・ボード・キャッシュ・チップ等）に格納し、２次場所に格納された各々のデータ単位のコピーを１次メモリ場所（主メモリ等）に維持する現行のキャッシュ・メモリ・スキームとは異なり、本発明の１つの実施形態は、１次場所の待ち時間を区別する。つまり、本発明は、メモリ空間全体（又はそのサブセット）を１次メモリ場所の群として扱い、頻繁にアクセスされるデータ単位を待ち時間の少ない１次メモリ場所に移動させ、頻繁にアクセスされないデータ単位を待ち時間の多い１次メモリ場所に移動させる。
【００１６】
図１に示されるように、メモリ管理システム１００の１つの例は、メモリ空間１２０に格納されたデータを制御し、かつ、プロセッサ１１２又は他の論理回路にデータを提供するメモリ・コントローラ１１０を含む。１つの実施形態においては、メモリ空間１２０は、主メモリ・チップのアレイを含むことができる。別の実施形態においては、メモリ空間１２０は、オン・チップ・メモリ、オン・ボード・メモリ、主メモリ等の組み合わせを含むいくつかの異なるメモリ・デバイスを含むことができる。メモリ空間１２０は、異なる物理メモリ・ユニットにより群分けすることができる。（示される物理ユニットはＭ１１乃至Ｍ４４と表わされ、物理ユニットを視覚化する１つの方法において、最初の番号は横列を表わし、二番目の番号は縦列を表わす。）物理ユニットは、例えば、異なるメモリ・チップ又はストレージ・デバイス内の異なるメモリ場所に対応することができる。図１に示される図は理解を容易にするために非常に簡略化されており、多くの市販の実施形態ははるかに複雑である可能性があることに注意すべきである。各メモリ場所の待ち時間は、直接測定又はシミュレーションにより判断され、個々の物理メモリ場所の各々は、その待ち時間によって複数の待ち時間クラスの１つに群分けされる。例えば、メモリ・ユニットＭ１２、Ｍ１３、Ｍ２２及びＭ２３は、高速待ち時間群１２２に群分けされる。このことは、例えば、それらがメモリ・コントローラ１１０に物理的に近いためであるか、或いは、他のメモリ場所よりも高速の技術を使用するためであるか、又はその２つの組み合わせによるとすることができる。中速待ち時間群１２４は、メモリ場所Ｍ１１、Ｍ２１、Ｍ３２、Ｍ３３、Ｍ２４及びＭ１４を含む。低速待ち時間群１２６は、メモリ場所Ｍ３１、Ｍ４１、Ｍ４２、Ｍ４３、Ｍ４４及びＭ３４を含む。
【００１７】
メモリ・コントローラ１１０は、データ単位（データの個々のバイトからページ又は他の群分けまで何でも示すことができる）を、各データ単位の使用レベルに基づいて、１次メモリ場所に割り当てる。従って、相対的に使用頻度が高いデータ単位は高速待ち時間群１２２内のメモリ場所に格納され、相対的に使用頻度が中程度のデータ単位は中速待ち時間群１２４内のメモリ場所に格納され、相対的に使用頻度の低いデータ単位は低速待ち時間群１２６内のメモリ場所に格納される。
【００１８】
１つの実施形態においては、本発明は、主メモリのようなただ１つの種類のメモリの性能を向上するように適用され得るが、他の実施形態においては、本発明を、いくつかの異なるメモリ・デバイスにわたるメモリ空間に適用することができる。図２に示されるように、マルチデバイス・メモリ空間２００は、とりわけ、オン・チップ・メモリ２１０、オン・ボード・メモリ２１２、主メモリ２１４、フラッシュ・メモリ２１６及びディスク・メモリ２１８といったメモリ・デバイスを含むことができる。適用例に応じて、望まれるだけの数の異なる待ち時間クラスにメモリ場所を群分けすることができる。示される例は、最高速群２２０（オン・チップ・メモリ２１０のみを含む）、次に高速の群２２２（オン・チップ・メモリ２１０の低速部分、オン・ボード・メモリ２１２の全て及び主メモリ２１４の待ち時間の少ない部分を含む）、中速待ち時間群２２４（主メモリ２１４からのメモリ場所の大部分、及びフラッシュ・メモリ２１６の高速部分を含む）、中低速待ち時間群２２８（主メモリ２１４の低速部分及びフラッシュ・メモリ２１６の大部分を含む）、低速待ち時間群２２６（主メモリ２１４の最低速部分、フラッシュ・メモリ２１６の最低速部分、及びディスク・メモリ２１８の最高速部分を含む）、及び、最低速待ち時間群２３０（ディスク・メモリ２１８の大部分を含む）を含む。このシナリオでは、データ単位は、６つの異なる使用頻度によって分類することができ、対応する待ち時間群に格納することができる。
【００１９】
使用頻度及びメモリ場所の待ち時間によりデータを管理するためのメモリ・マップ３００の生成を含む１つのスキームが、図３（ａ）〜（ｄ）に示される。このスキームにおいては、全てのメモリ・アドレスが、「Ｓ（低速）」、「Ｍ（中速）」又は「高速（Ｆ）」の３つの待ち時間クラスの１つに割り当てられる。１つの実施形態においては、メモリ・マップ３００はページ・テーブルの一部とすることができる。この割り当ては、ほとんどのアプリケーションで静的なものとすることができる。最初に、図３（ａ）に示される通り、データ単位の各々は、使用頻度「０００」を割り当てられる。各データ単位は、どのメモリ場所にも格納されることができる。いくつかの実施形態においては、データ単位のいくつか又は全てに、使用頻度の予測に基づいてメモリ場所を予め割り当てることができる。メモリ動作が始まると、各メモリ場所と関連付けられた使用頻度が、そこに格納されたデータ単位がアクセスされるたびに増分される。所定のサイクル数の後で、図３（ｂ）に示されるように、各メモリ場所と関連付けられた使用頻度フィールドが、所定のサイクル数の間に各データ単位がアクセスされた回数を反映する。図３（ｃ）に示されるように、最もアクセスが少なかったのデータ単位は「Ｓ」と表わされるメモリ場所に移動され（例えば、期間中にアクセスされなかったデータ単位「ＥＸＸＸＸＸＸ」は、図３（ｂ）でのアドレス「０Ｆ３８４」から図３（ｃ）でのアドレス「０Ｆ３８０」に移動される）、中程度にアクセスされたデータ単位は「Ｍ」と表わされるメモリ場所に移動され（例えば、期間中に４回アクセスされたデータ単位「ＡＸＸＸＸＸＸ」は、図３（ｂ）でのアドレス「０Ｆ３８０」から図３（ｃ）でのアドレス「０Ｆ３８５」に移動される）、頻繁にアクセスされたデータ単位は「Ｆ」と表わされるメモリ場所に移動される（例えば、期間中に７回アクセスされたデータ単位「ＣＸＸＸＸＸＸ」は、図３（ｂ）でのアドレス「０Ｆ３８２」から図３（ｃ）でのアドレス「０Ｆ３８６」に移動される）。データ単位が適当なメモリ場所に割り当てられると、図３（ｄ）に示されるように、使用頻度カウンタは「０００」にリセットされ、プロセスが再び始まる。
【００２０】
メモリを管理するための１つの方法のフロー図が図４に示される。最初に、各々の使用頻度がゼロに設定され４００、メモリ・サイクル・カウンタがゼロに設定される４０２。テスト４０４が、所定の時間が終了したかどうかを判断する。終了していない場合には、メモリ・サイクル・カウンタが増分され４０６、システムは、各メモリ・アドレスについて、現在のサイクル中にそのアドレスがアクセスされたかどうかを判断する４０８。メモリがアクセスされた場合には、そのアドレスに対応する使用頻度が増分され４１０、システムはステップ４０４に戻る。メモリがアクセスされなかった場合には、システムは直接ステップ４０４に戻る。所定の時間が終了すると、システムは、各アドレスについて、使用頻度が「上方移動」閾値よりも大きいかどうかを判断する４２０。大きい場合には、対応するデータ単位がより高速の待ち時間クラス内のアドレスに移動される。大きくない場合には、システムは、使用頻度が「下方移動」閾値よりも少ないかどうかを判断する４２４。下方移動閾値よりも少ない場合には、対応するデータ単位がより低速の待ち時間クラス内のアドレスに移動される。或いは別の場合には、データ単位はその場所に残されたままになり、システムはステップ４００に戻る。「上方移動」閾値及び「下方移動」閾値は、各々の使用頻度群内のデータ単位の予測数に基づいて静的なものとすることもできるし、或いは、使用頻度群が一定のエントリ数を維持することを可能にするがその構成基準は変化する可能性がある動的なものとすることもできる。
【００２１】
本発明は、修正をほとんどせずに又は全くせずに、既存のメモリ管理スキームに適用することができ、かつ、既存のハードウェアに適用することができる。例えば、キャッシュ・メモリ、主メモリ及びディスク・メモリを使用する既存のスキームを修正して、メモリ場所のマッピングが、既存のメモリ・ユニットを、それらが常駐するメモリ・デバイスではなく、それぞれの待ち時間によって群分けするようにすることができる。キャッシュ・メモリ・スキームのような他のメモリ・スキームと比較した場合の本発明の１つの利点は、１次メモリ場所及び２次メモリ場所の両方において、データの複製コピーの維持管理を必要としないということである。
【００２２】
１つの実施形態においては、メモリ用途を判断するための方法は、ディスクと主メモリ（ＤＲＡＭ等）との間のメモリをページングするのに現在用いられているものと同じであるか又は類似している。添付の特許請求の範囲は、ディスク・メモリ及び他のメモリの種類のメモリを内外にページングするための全ての既存のスキームをカバーすることが意図される。１つの実施形態においては、本発明は、メモリの待ち時間マップのソフトウェア管理の発展形態として具体化することができる。
【００２３】
いくつかの実施形態においては、データ単位のアクセス・カウンタ・スキームは、結果として、オーバーヘッドを増加させることがある。さらに、こうしたスキームにおいては、データ単位が短期間に複数回アクセスされ、その後一度もアクセスされなかった場合には、そのアクセス・カウンタは、それを非常に長い間にわたり待ち時間の少ないメモリ内に残す。データ単位の割り当てを達成するための別の機構は、現行のキャッシュ・ライン置換に類似したスキームを使用することができる。頻繁にアクセスされるデータ単位は、メモリ管理システム設計の技術分野では一般的に知られている最長時間未使用（ＬＲＵ：ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ）スキームの使用により待ち時間の少ないメモリ内に保持することができる。ＬＲＵスキームでは、データ単位は、最後にアクセスされた順番でランク付けされる。データ単位をより低速のメモリ待ち時間クラスに移動させることになったときには、最近最も使用されなかったデータ単位が最初に移動される。
【００２４】
メモリ待ち時間の階層的な構造は、ページがメモリ待ち時間の階層に格納される場所を管理するメモリ管理制御ソフトウェアに通信されることができる。ソフトウェアが、常に非常によく使用されるメモリ・ページを追跡する場合があり得る。このような場合、こうしたメモリ・ページ（又は他のデータ単位）を、特定のデータ単位に対してロック（例えばタスク・ディスパッチ・ロック）を用いるトランザクション処理のためのログ・ファイルなどにより、最も待ち時間の少ないメモリ位置に固定して、そのデータ単位が常に所定の待ち時間クラス内のメモリに割り当てられることを保証するべきである。
【００２５】
本発明は、コンピュータのメモリ空間全体に適用することもできるし、又はそのサブセットだけに適用することもできることに注目すべきである。特許請求の範囲はこうしたシナリオの全てに適用されることが意図される。
【００２６】
上述の実施形態は、出願時に発明者が知っている本発明の好ましい実施形態及び最良の形態を含むが、これは例示的な実施例として与えられるに過ぎない。本発明の精神及び範囲から逸脱することなく、本明細書に開示された特定の実施形態から多くの変更を行うことができることが容易に認識されるであろう。従って、本発明の範囲は、具体的に説明された上述の実施形態に限定されるのではなく、添付の特許請求の範囲により定められる。
【図面の簡単な説明】
【００２７】
【図１】一般的なメモリ分類スキームを示すブロック図である。
【図２】異なる種類のメモリ・デバイスを使用するメモリ分類スキームを示すブロック図である。
【図３】待ち時間に基づくメモリ管理の代表的な例を示す表（ａ）〜（ｄ）である。
【図４】メモリ管理方法を示すフロー・チャートである。
【符号の説明】
【００２８】
１００：メモリ管理システム
１１０：メモリ・コントローラ
１１２：プロセッサ論理
１２０：メモリ空間
１２２：高速待ち時間群
１２４：中速待ち時間群
１２６：低速待ち時間群
２００：マルチ・デバイス・メモリ空間
２１０：オン・チップ・メモリ
２１２：オン・ボード・メモリ
２１４：主メモリ
２１６：フラッシュ・メモリ
２１８：ディスク・メモリ
３００：メモリ・マップ
【図１】
2008021314.tif 000003
【図２】
2008021314.tif 000004
【図３】
2008021314.tif 000005
【図４】
2008021314.tif 000006