(57)【特許請求の範囲】
【請求項１】
タイプの異なる複数のメモリ装置に接続されたメモリ管理システムであって、
第１の仮想メモリアドレスに対して、第１の物理メモリアドレス、前記第１の物理メモリアドレスがアクセスされた頻度に関する第１のデータおよび前記複数のメモリ装置のうち前記第１の物理メモリアドレスが対応するメモリ装置のタイプを特定する第２のデータを関連付けて保存するように構成された第１のメモリ変換テーブルと、
第２の仮想メモリアドレスに対して、第２の物理メモリアドレス、前記第２の物理メモリアドレスがアクセスされた頻度に関する第３のデータおよび前記複数のメモリ装置のうち前記第２の物理メモリアドレスが対応するメモリ装置のタイプを特定する第４のデータを関連付けて保存するように構成された第２のメモリ変換テーブルと、
少なくとも部分的に前記第１のメモリ変換テーブル及び第２のメモリ変換テーブルに基づいて前記複数のメモリ装置の動作を制御するように構成された制御ユニットと、
を含む、メモリ管理システム。
【請求項２】
前記第１のメモリ変換テーブルが変換装置に保存され、前記第２のメモリ変換テーブルが変換索引バッファに保存されている、請求項１に記載のメモリ管理システム。
【請求項３】
前記第１のメモリ変換テーブルは、前記第１の仮想メモリアドレスがアクセスされた頻度に関する第５のデータに対応するように構成され、
前記第２のメモリ変換テーブルは、前記第２の仮想メモリアドレスがアクセスされた頻度に関する第６のデータに対応するように構成された、請求項１に記載のメモリ管理システム。
【請求項４】
前記メモリ管理システムが、前記第１及び第３のデータの少なくとも一部に基づいて、
前記第１の仮想メモリアドレスと前記第１の物理メモリアドレス、前記第１のデータ及び前記第２のデータとの関係を示す第１のテーブルエントリを、前記第１のメモリ変換テーブルから前記第２のメモリ変換テーブルに移動し、
前記第２の仮想メモリアドレスと前記第２の物理メモリアドレス、前記第３のデータ及び前記第４のデータとの関係を示す第２のテーブルエントリを、前記第２のメモリ変換テーブルから前記第１のメモリ変換テーブルに移動するように構成されている、請求項１に記載のメモリ管理システム。
【請求項５】
タイプの異なる複数のメモリ装置に接続されたメモリ管理システムであって、
第１のメモリ変換テーブルを保存するように構成された変換装置を含み、
前記第１のメモリ変換テーブルは、第１の複数の仮想メモリアドレスと第１の複数の物理メモリアドレスをマッピングし、且つ、前記第１の複数の仮想メモリアドレスに対して、前記第１の複数の物理メモリアドレスの夫々がアクセスされた頻度に関する第１のデータおよび前記複数のメモリ装置のうち前記第１の複数の物理メモリアドレスのそれぞれが対応するメモリ装置のタイプを特定する第２のデータをマッピングするように構成され、
第２のメモリ変換テーブルを保持するように構成された変換索引バッファを含み、
前記第２のメモリ変換テーブルは、第２の複数の仮想メモリアドレスと第２の複数の物理メモリアドレスをマッピングし、且つ、前記第２の複数の仮想メモリアドレスに対して、前記第２の複数の物理メモリアドレスの夫々がアクセスされた頻度に関する第３のデータおよび前記複数のメモリ装置のうち前記第２の複数の物理メモリアドレスのそれぞれが対応するメモリ装置のタイプを特定する第４のデータをマッピングするように構成され、
前記第１及び第２のメモリ変換テーブルは、互いにオーバーラップするものではなく、
少なくとも部分的に前記第１のメモリ変換テーブルおよび前記第２のメモリ変換テーブルに基づいて、前記複数のメモリ装置のうち前記第１の複数の物理メモリアドレスまたは前記第２の複数の物理メモリアドレス中の少なくとも一つの物理メモリアドレスに対応するメモリ装置の動作を制御するように構成された制御ユニットを含む、メモリ管理システム。
【請求項６】
前記制御ユニットは、第１の仮想メモリアドレスを特定するために前記第１のメモリ変換テーブルを検索するように構成された、請求項５に記載のメモリ管理システム。
【請求項７】
前記制御ユニットは、前記メモリ管理システム外部の処理装置とは独立して、前記第１のメモリ変換テーブルを検索するように構成された、請求項６に記載のメモリ管理システム。
【請求項８】
前記変換装置が高性能メモリアレイを含む、請求項５に記載のメモリ管理システム。
【請求項９】
前記高性能メモリアレイがハイブリッドメモリキューブを含む、請求項８に記載のメモリ管理システム。
【請求項１０】
前記ハイブリッドメモリキューブが前記第１のメモリ変換テーブルのテーブルウォークを実行するように構成された、請求項９に記載のメモリ管理システム。
【請求項１１】
データバスを介して前記複数のメモリ装置に接続された、請求項５に記載のメモリ管理システム。
【請求項１２】
前記変換装置が補助検索メモリ装置を含む、請求項５に記載のメモリ管理システム。
【請求項１３】
前記変換索引バッファがコンテントアドレッサブルメモリを含む、請求項５に記載のメモリ管理システム。
【請求項１４】
前記変換索引バッファがｎウェイ連想メモリ装置を含む、請求項５に記載のメモリ管理システム。
【請求項１５】
前記変換索引バッファおよび前記変換装置が単一装置内に組み込まれた、請求項５に記載のメモリ管理システム。
【請求項１６】
前記変換索引バッファが第一の装置内に組み込まれ、前記変換装置が第二の装置内に組み込まれた、請求項５に記載のメモリ管理システム。
【請求項１７】
前記制御ユニットは、第１の仮想メモリアドレスと第１の物理メモリアドレスの関係を示すテーブルエントリを、前記第１の仮想メモリアドレスが前記第１のメモリ変換テーブル内の仮想メモリアドレスとヒットしたとき、前記第１のメモリ変換テーブルから前記第２のメモリ変換テーブルに移動するように構成された、請求項５に記載のメモリ管理システム。
【請求項１８】
前記制御ユニットは、前記第１及び第２のメモリ変換テーブルを同時に検索されるように構成された、請求項５に記載のメモリ管理システム。
【請求項１９】
前記制御ユニットは、前記第１のメモリ変換テーブルを検索する前に、前記第２のメモリ変換テーブルを検索するように構成された、請求項５に記載のメモリ管理システム。
【請求項２０】
前記制御ユニットは、仮想メモリアドレスを含むテーブルエントリが前記第１又は第２のメモリ変換テーブルにて発見された後に前記第１又は第２のメモリ変換テーブルへの検索を停止するように構成された、請求項５に記載のメモリ管理システム。
【請求項２１】
前記第１及び第３のデータは、夫々ＬＲＵデータを含む、請求項５に記載のメモリ管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、概してメモリ管理に関する。より具体的には、本発明の実施形態は、階層メモリシステムにおけるメモリ管理のための１つまたは複数の技術を提供できる。
【背景技術】
【０００２】
コンピュータシステムは、一般的に、多数の構成において利用され、様々な演算機能を提供する。処理速度、システムの自在性、消費電力およびサイズ制限が、通常、コンピュータシステムおよびシステムコンポーネントを開発する任務を負う設計技師によって考慮される。コンピュータシステムは、一般的に、複数個のメモリ装置を含み（例えば、デュアルインラインメモリモジュール（ＤＩＭＭ）は、８、１６、またはそれ以上のメモリ装置を含むことができ、積重されたＮＡＮＤフラッシュパッケージは、２、４または８のＮＡＮＤダイを含むことができる）、そして複数個のメモリタイプ（すなわち、種々の性能および／または電力特性を有することができるメモリ装置）を含む。これらを使用して、データ（例えば、プログラムおよびユーザデータ）を保存し、プロセッサまたは周辺装置などの他のシステムコンポーネントにアクセスできる。そのようなメモリ装置は、揮発性および不揮発性メモリ装置を含むことができる。
【０００３】
通常、コンピューティングシステムのメモリアドレス空間は、メモリ管理システムによって管理される。特定のコンピューティングシステムでは、メモリ管理システムは、メモリアドレス空間の一部を、プロセッサによって実行されているプログラムに動的に割り当て、そしてメモリアドレス空間の別個の部分を、そのようなプログラムによって使用されるデータに割り当てることができる。反対に、メモリ管理システムは、プログラムがもはやプロセッサによって実行されていないときに、メモリアドレス空間の一部の割り当てをプログラムから解除できる。メモリ管理システムは、プロセッサによって使用される仮想メモリアドレスを物理メモリアドレス空間にマッピングするのに使用されるテーブルを含むことができる。これらのテーブルは、メインメモリ変換テーブル（ＭＭＸＴ）および変換索引バッファ（ＴＬＢ）を含むことができる。多くの場合に、ＴＬＢは、ＭＭＸＴにおけるメモリアドレスよりも頻繁に使用されるメモリアドレスのためのメモリマッピングを含む。メモリマッピングのためのＭＭＸＴおよび／またはＴＬＢを通じた検索は、時間がかかり、その結果としてデータ検索が遅延することがある。
【０００４】
メモリシステムは、多くの場合、メモリ階層に配列される。例えば、特定のメモリは、レジスタ、キャッシュメモリ（例えば、レベル１、レベル２、レベル３）、メインメモリ（例えば、ＲＡＭ）、ディスクストレージなどに見ることができる。認識できるように、一部のメモリシステムは、種々の動作特性を有する（例えば、異なる速度で動作する）メモリタイプを含む。しかしながら、メモリ管理システムは、通常、メモリシステムにおけるメモリのタイプ（例えば、メインメモリ）の違いを識別しない。従って、そのようなメモリ管理システムは、全てのタイプのメモリを同じ様に処理することがある。さらに、メモリシステムにおける一部のメモリ装置は、メモリシステムにおける他のメモリ装置よりも遥かに多い回数アクセス（例えば、それからの読み出し、かつ／またはそれへの書き込み）されることがある。そのようなものとして、メモリ管理システムでは、メモリシステム内でどのメモリ装置が特定の速度で動作するかを特定する（例えば、決定する）ことが困難であり得る。同様に、メモリ管理システムでは、どのメモリ装置が他のものよりも多くアクセスされたかを特定することが困難であり得る。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従って、本発明の実施形態は、先に説明した１つまたは複数の問題に関し得る。
【図面の簡単な説明】
【０００６】
【図１】本発明の実施形態による、プロセッサベースのシステムのブロック図を図示する。
【図２】本発明の実施形態による、メモリ管理システムのブロック図を図示する。
【図３】本発明の実施形態による、変換索引バッファのブロック図を図示する。
【図４】本発明の実施形態による、変換装置のブロック図を図示する。
【図５】本発明の実施形態による、メモリ管理システムが仮想メモリアドレスを受信する場合の、物理メモリアドレスにアクセスするための方法のフローチャートを図示する。
【図６】本発明の実施形態による、コンピューティングシステムの物理メモリアドレス空間を管理するための方法のフローチャートを図示する。
【発明を実施するための形態】
【０００７】
以下に論じた実施形態の一部は、複数の異なるタイプのメモリ装置を使用するメモリシステム、および異なるタイプのメモリ装置に保存されたデータを動的に再配列するメモリシステムなどのメモリシステムのより一層の多用途性を促進できる。以下に詳細に記述するように、メモリ管理システムは、物理メモリアドレスとメモリ装置のタイプとを相互に関連付けるテーブルを含むことができる。例えば、メモリ管理システムは、複数の仮想メモリアドレスを有するテーブルを含むことができる。各仮想メモリアドレスは、物理メモリアドレス、および対応するメモリ装置のタイプを特定するデータに対応し得る。物理メモリアドレスを使用して、テーブルヒットが発生したときにメモリ装置にアクセスできる。そのようなものとして、以下の論述は、現在の技術の実施形態による装置および方法を記述する。
【０００８】
ここで図面に注意を向け、最初に図１を参照する。この図は、全体を参照番号１０で指定したプロセッサベースのシステムを描写するブロック図を図示する。システム１０は、コンピュータ、ポケベル、携帯電話、電子手帳、制御回路などの様々なタイプのいずれかのものでもよい。標準的なプロセッサベースの装置では、マイクロプロセッサなどの１つまたは複数のプロセッサ１２が、システム１０内のシステム機能およびリクエストの処理を制御する。認識されるように、プロセッサ１２は、コンポーネントをそこに連結するための、埋め込まれたノースまたはサウスブリッジ（図示せず）を含むことができる。あるいは、システム１０は、プロセッサ１２とシステム１０の様々なコンポーネントとの間を連結する個々のブリッジを含むことができる。図示するように、プロセッサ１２は、プロセッサ１２がメモリにアクセスするのにかかる平均時間を短縮するためのキャッシュメモリ１３（例えば、ＣＰＵキャッシュ）を含むことができる。
【０００９】
様々な装置を、システム１０が実行する機能に応じてプロセッサ１２に連結できる。例えば、ユーザインターフェースをプロセッサ１２に連結できる。ユーザインターフェースは、例えば、ボタン、スイッチ、キーボード、ライトペン、マウス、ディスプレイおよび／または音声認識システムを含むことができる。ディスプレイは、例えば、タッチスクリーンディスプレイ、ＬＣＤディスプレイ、ＣＲＴ、ＬＥＤおよび／または聴覚ディスプレイを含むことができる。１つまたは複数の通信ポートもプロセッサ１２に連結できる。通信ポートは、モデム、プリンタ、コンピュータなどの１つまたは複数の周辺装置、または例えば、ローカルエリアネットワーク、リモートエリアネットワーク、イントラネットもしくはインターネットなどのネットワークに連結するように適応できる。
【００１０】
一般的に、ソフトウェアプログラムを実装することによってプロセッサ１２がシステム１０の機能を制御するため、メモリが、プロセッサ１２に動作可能に連結され、様々なプログラムを保存し、その実行を促進する。従って、階層メモリシステム１４は、システムバス１６を介してプロセッサ１２に動作可能に連結される。階層メモリシステム１４は、メモリ管理システム１８および任意の数のメモリ装置を含む。例えば、階層メモリシステム１４は、（例えば、第一のタイプの）メモリ＿０  ２０、（例えば、第二のタイプの）メモリ＿１  ２２、および（例えば、ｎ番目のタイプの）メモリ＿Ｎ  ２４によって表される任意の追加のメモリ装置を含むことができる。
【００１１】
メモリ管理システム１８は、様々なメモリ管理機能を実行できる。例えば、メモリ管理システム１８は、仮想メモリアドレスの物理メモリアドレスへの変換、メモリの再割り当て、メモリ構成、メモリ使用量などを管理できる。図示するように、メモリ管理システム１８は、データバスＰＡ＿０  ２６、ＰＡ＿１  ２８およびＰＡ＿Ｎ  ３０によって、それぞれ、メモリ装置２０、２２および２４に動作可能に連結される。認識されるように、ＰＡ＿Ｎ  ３０は、メモリ装置であるメモリ＿Ｎ  ２４に対応するデータバスの番号を表すことができる。
【００１２】
メモリ装置２０、２２および２４の１つまたは複数は、揮発性メモリでもよく、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）および／またはスタティックランダムアクセスメモリ（ＳＲＡＭ）を含むことができる。揮発性メモリは、シングルインラインメモリモジュール（ＳＩＭＭ）、デュアルインラインメモリモジュール（ＤＩＭＭ）、および／またはハイブリッドメモリキューブ（ＨＭＣ）などの多くのメモリモジュールを含むことができる。認識されるように、揮発性メモリは、簡単に「システムメモリ」と呼ぶことができる。揮発性メモリは、通常、動的にロードされたアプリケーションおよびデータを保存できる程度にかなり大きい。
【００１３】
さらに、メモリ装置２０、２２および２４の１つまたは複数は、不揮発性メモリでもよく、ＥＰＲＯＭ、フラッシュメモリ（例えば、ＮＯＲおよび／またはＮＡＮＤ）などのリードオンリーメモリ（ＲＯＭ）、および／または揮発性メモリと連結して使用される相変化メモリ（ＰＣＭ）を含むことができる。ＲＯＭのサイズは、通常、任意の必須のオペレーティングシステム、アプリケーションプログラムおよび固定データを保存するのに十分に大きいように選択される。また、不揮発性メモリは、テープまたはディスクドライブメモリなどの大容量メモリを含むことができる。従って、メモリ装置２０、２２および２４は、ブロックストレージデバイスとなる必要がない。
【００１４】
そのようなものとして、階層メモリシステム１４は多用途であり、プロセッサ１２に動作可能に連結された多くのタイプのメモリ装置２０、２２および２４を可能にする。従って、メモリ管理システム１４は、メモリ装置２０、２２および２４の性能を最適化するように階層メモリシステム１４に適応できる。階層メモリシステム１４において使用されるように適応したメモリ管理システム１８の一部の例を、図２〜図４に図示する。具体的には、図２は、変換（ＸＬＡＴ）変換装置および変換索引バッファを含むメモリ管理システム１８を図示し、図３および図４は、それぞれ、変換索引バッファおよびＸＬＡＴ変換装置をさらに図示する。図５および図６は、メモリ管理システム１８を使用してメモリ装置２０、２２および２４を管理できる方法を図示する。
【００１５】
ここで図２を参照し、メモリ管理システム１８のブロック図を図示する。動作中、メモリ管理システム１８は、（例えば、プロセッサ１２から）仮想メモリアドレス３２を受信する。メモリ管理システム１８は、仮想メモリアドレス３２にマッピングされ、メモリ装置２０、２２および２４の１つへのアクセスに使用される物理メモリアドレス３４を特定する。どの物理メモリアドレス３４が仮想メモリアドレス３２にマッピングされたかをメモリ管理システム１８が特定できない場合には、次にメモリ管理システム１８は、ページフォールト３６を作り出し（例えば、生成し）、これをプロセッサ１２に伝送できる。
【００１６】
仮想メモリアドレス３２にマッピングされた物理メモリアドレス３４を特定するために、メモリ管理システム１８は、ＸＬＡＴ変換装置３８および変換索引バッファ（ＴＬＢ）４０を使用する。ＸＬＡＴ変換装置３８およびＴＬＢ４０は、各々、仮想メモリアドレスを物理メモリアドレスにマッピングするそれぞれのテーブルを保存できる。ＸＬＡＴ変換装置３８およびＴＬＢ４０は別々に図示したが、特定の実施形態では、ＸＬＡＴ変換装置３８およびＴＬＢ４０は単一装置内に組み込むことができる。認識されるように、ＸＬＡＴ変換装置３８とＴＬＢ４０とは、非重複データを含むことができる。例えば、ＸＬＡＴ変換装置３８は、仮想メモリアドレスの第一の部分に関するテーブル項目を含み、ＴＬＢ４０は、仮想メモリアドレスの第二の部分に関するテーブル項目を含むことができる。
【００１７】
通常、ＴＬＢ４０は、ＸＬＡＴ変換装置３８内に保存された仮想メモリアドレスよりも頻繁にアクセスされる仮想メモリアドレスに関するテーブル項目を含む。特定の実施形態では、仮想メモリアドレス３２に関する検索は、ＸＬＡＴ変換装置３８およびＴＬＢ４０において同時に発生できる。他の実施形態では、ＴＬＢ４０における仮想メモリアドレス３２に関する検索が、ＸＬＡＴ変換装置３８において発生する検索よりも前に発生できる。しかしながら、仮想メモリアドレス３２を含むテーブル項目が特定された（例えば、検出された）後は、ＸＬＡＴ変換装置３８およびＴＬＢ４０の両方が、仮想メモリアドレス３２に関する検索を停止する。
【００１８】
本実施形態では、ＸＬＡＴ変換装置３８およびＴＬＢ４０は、各々、特定の仮想メモリアドレスおよび／または物理メモリアドレスがアクセスされた頻度に関するデータを保存できる。さらに、ＸＬＡＴ変換装置３８およびＴＬＢ４０は、各々、物理メモリアドレスに対応するメモリ装置のタイプを特定するデータを保存できる。以下に詳細に説明するように、この追加のデータを使用して、メモリ管理システム１８は、メモリ使用量ならびに／またはＸＬＡＴ変換装置３８およびＴＬＢ４０に保存されたデータをマッピングするテーブルを最適化できる。
【００１９】
従って、図３は、特定の仮想メモリアドレスおよび／または物理メモリアドレスがアクセスされた頻度に関するデータ、ならびに特定の物理メモリアドレスに対応するメモリ装置のタイプを特定するデータを保存できるＴＬＢ４０のブロック図を図示する。特定の実施形態では、ＴＬＢ４０は、コンテントアドレッサブルメモリ（ＣＡＭ）装置またはｎウェイ連想メモリ装置でもよい。具体的には、ＴＬＢ４０は、行４４および列（４６〜５２）を有するテーブル４２を保存する。実施形態では、各行４４は、個々のテーブル項目に関する。そのようなものとして、各行４４は、仮想メモリアドレス列４６、物理メモリアドレス列４８、最長時間未使用（ＬＲＵ）列５０、および装置特定（ＴＹＰＥ）列５２を含む。
【００２０】
仮想メモリアドレス列４６は、ＴＬＢ４０内に含まれた全ての仮想メモリアドレスのリストを含む。さらに、物理メモリアドレス列４８は、それぞれの行４２の仮想メモリアドレス列４６における仮想メモリアドレスに対応する各行４２における物理メモリアドレスを含む。ＬＲＵ列５０は、それぞれの物理メモリアドレスがアクセスされた頻度に関するデータ（例えば、アクセスまたは使用データ）を含む。例えば、ＬＲＵ列５０は、その対応する仮想メモリアドレスおよび／または物理メモリアドレスがアクセスされた全回数を表す値を含むことができる。そのようなものとして、ＬＲＵ列５０を使用して、テーブル項目をテーブル４２から削除すべきか否かを特定できる。例えば、アクセスされた回数が最も少ない（例えば、ＬＲＵ列５０に保存された値が最低の）行４４を、テーブル４２から削除できる。
【００２１】
ＴＹＰＥ列５２は、各行４２に装置特定データを含み、このデータは、それぞれの行４２の物理メモリアドレス列４８における物理メモリアドレスに対応する装置のタイプを特定する。装置は、（例えば、テーブルヒットが発生したときに）物理メモリアドレスを使用してアクセスされる。例えば、装置特定データは、装置のタイプに対応する値でもよい。認識されるように、メモリ管理システム１８は、各装置に対応するデータを含むことができる。例えば、メモリ管理システム１８は、各装置の名称、各装置の動作速度、各装置に割り当てられたバス、他の物理装置に対する各装置の相対速度の表示、各装置の耐久性などのデータを含むことができる。動作中、物理アドレスを使用してメモリ装置２０、２２および２４に直接にアクセスすることによって、メモリ装置２０、２２および２４に保存されたデータに迅速にアクセスできる。
【００２２】
図４に注意を向け、ＸＬＡＴ変換装置３８のブロック図を図示する。ＸＬＡＴ変換装置３８は、変換テーブル（ＸＴ）５４を含む。これは、特定の仮想メモリアドレスおよび／または物理メモリアドレスがアクセスされた頻度に関するデータ、ならびに各物理メモリアドレスに対応するメモリ装置のタイプを特定するデータを保存できる。さらに、ＸＬＡＴ変換装置３８は、ＸＬＡＴ変換装置３８の様々な動作を制御するための制御ユニット５６（例えば、ハイブリッドメモリキューブの論理ダイ）を含む。具体的には、ＸＴ５４は、行５８および列（６０〜６６）を有するテーブルを保存する。本実施形態では、各行５８は、個々のテーブル項目に関する。そのようなものとして、各行５８は、仮想メモリアドレス列６０、物理メモリアドレス列６２、ＬＲＵ列６４、およびＴＹＰＥ列６６を含む。
【００２３】
仮想メモリアドレス列６０は、ＸＴ５４内に含まれた全ての仮想メモリアドレスのリストを含む。さらに、物理メモリアドレス列６２は、それぞれの行５８の仮想メモリアドレス列６０における仮想メモリアドレスに対応する各行５８における物理メモリアドレスを含む。ＬＲＵ列６４は、それぞれの物理メモリアドレスがアクセスされた頻度に関するデータ（例えば、アクセスまたは使用データ）を含む。例えば、ＬＲＵ列６４は、そのそれぞれの仮想メモリアドレスおよび／または物理メモリアドレスがアクセスされた全回数を表す値を含むことができる。そのようなものとして、ＬＲＵ列６４を使用して、テーブル項目を（例えば、変換装置３８の制御ユニット５６によって）ＸＴ５４からＴＬＢ４０に移動すべきか否かを特定できる。例えば、アクセスされた回数が最も多い（例えば、ＬＲＵ列６４に保存された値が最高の）行５８を、少なくともいくつかの状況では、ＸＴ５４からＴＬＢ４０に移動できる。
【００２４】
ＴＹＰＥ列６６は、各行５８に装置特定データを含み、このデータは、それぞれの行５８の物理メモリアドレス列６２における物理メモリアドレスに対応する装置のタイプを特定する。装置は、（例えば、テーブルヒットが発生したときに）物理メモリアドレスを使用してアクセスされる。例えば、装置特定データは、装置のタイプに対応する値でもよい。動作中、物理メモリアドレスを使用してメモリ装置２０、２２および２４に直接にアクセスすることによって、メモリ装置２０、２２および２４に保存されたデータに迅速にアクセスできる。
【００２５】
ＸＬＡＴ変換装置３８は、例えば米国公開番号第２０１０／０１３８５７５号に開示されているハイブリッドメモリキューブ（ＨＭＣ）またはパターン認識装置などの様々な異なる装置のいずれかでもよい。さらに、ハードウェア（例えば、プロセッサ）および／またはソフトウェアを使用して、ＸＴ５４の検索を実行できる。認識されるように、ＸＴ５４への長時間のアクセスは、特にメインメモリに保存されている場合に、（例えば、ＨＭＣ装置に統合された状況にあり得るように、変換装置３８それ自体がメインメモリとしての機能を果たすときには、）顕著な性能の不利益を生じることがある。従って、特定の変換装置３８は、メモリセルに加えてハードウェアおよび／またはソフトウェア論理を含むことができる。例えば、ＸＴ５４は、高性能メモリアレイ（ＨＰＭＡ）（例えば、ＨＭＣ）、または前に言及したパターン認識装置などの補助検索メモリ装置に保存できる。そのような装置は、ＸＴ５４内の仮想メモリアドレスを検索する（例えば、テーブルウォークを実行する）ように構成できる。ＴＬＢ４０がＨＰＭＡまたは補助検索メモリ装置にも保存できることに留意すべきである。特定の実施形態では、ＴＬＢ４０とＸＴ５４とは同じ装置に保存できる。ＨＰＭＡまたは補助検索メモリ装置を使用することによって、性能の改善を達成できる。特定の実施形態では、制御ユニット５６を使用して様々な機能を実行できる。例えば、制御ユニット５６は、ページテーブルウォーク、ＴＬＢ更新、ＬＲＵ演算、ＬＲＵ更新、ページ移動のためのダイレクトメモリアクセスを制御し、装置に割り当てられたデータを動的に再配列し、仮想メモリアドレスの物理メモリアドレスへのマッピングを動的に変化させることなどができる。
【００２６】
制御ユニット５６は、メモリ管理システム１８の機能を援助するためのソフトウェアおよび／またはハードウェアを含むことができる。そのようなものとして、図５は、メモリ管理システム１８が仮想メモリアドレスを受信する場合の、物理メモリアドレスにアクセスするための方法６８のフローチャートを図示する。ブロック７０において、メモリ管理システム１８が仮想メモリアドレスを受信する。次に、ブロック７２において、メモリ管理システム１８は、ＴＬＢ４０内の仮想メモリアドレスを検索する（例えば、ルックアップを実行する）。次に、ブロック７４において、メモリ管理システム１８がＴＬＢ４０内の仮想メモリアドレスを特定した（例えば、発見した）か否かについての決定が為される。ＴＬＢが「ミス」した場合には、ブロック７６において、メモリ管理システム１８は、ＸＴ５４内の仮想メモリアドレスを検索する（例えば、ルックアップまたはテーブルウォークを実行する）。次に、ブロック７８において、メモリ管理システム１８がＸＴ５４内の仮想メモリアドレスを特定したか否かについての決定が為される。ＸＴが「ミス」した場合には、ブロック８０において、メモリ管理システム１８は、プロセッサ１２に送信されるページフォールト３６を生成する。
【００２７】
ＸＴが「ヒット」した場合には、ブロック８２において、メモリ管理システムは、ＸＴテーブル項目をＴＬＢ４０に移動させる。さらに、ブロック８２において、メモリ管理システム１８は、最も使用されていないＴＬＢ４０の項目をＸＴ５４に移動させる。次に、ブロック８４において、メモリ管理システム１８は、仮想メモリアドレスを物理メモリアドレスに変換する。このブロックは、ブロック８２の後、またはブロック７４において発生したＴＬＢの「ヒット」に応答して起こる。認識されるように、仮想メモリアドレスの物理メモリアドレスへの変換は、仮想メモリアドレスに関する、項目内の全てのデータへのアクセスを含むことができる。例えば、メモリ管理システム１８は、メモリ装置にアクセスするために、テーブル項目からＴＹＰＥ列データを検索できる。ブロック８６において、アクセスされたテーブル項目に関するＬＲＵデータを更新する（例えば、変更する）。例えば、ＬＲＵ列に保存された値は、１だけ増大できる。次に、ブロック８８において、物理メモリアドレスがアクセスされる。
【００２８】
ここで図６に注意を向け、コンピューティングシステムのメモリアドレス空間を管理するための方法のフローチャート９０を図示する。ブロック９２において、メモリ管理システム１８は、ＬＲＵデータを使用してテーブル項目をランク付けできる。例えば、テーブル項目の仮想メモリアドレスおよび／または物理メモリアドレスがアクセスされた回数に基づいてテーブル項目をランク付けする。次に、ブロック９４において、メモリ管理システム１８は、他のテーブル項目よりも使用量が多いテーブル項目を特定し、かつ／または他のテーブル項目よりも使用量が少ないテーブル項目を特定できる。次に、ブロック９６において、メモリ管理システム１８は、特定された項目に割り当てられたメモリ装置のタイプと、メモリ装置の利用可能なタイプとを比較できる。例えば、メモリ管理システム１８は、使用量が多い（例えば、アクセス速度がより高い）テーブル項目が、使用量が少ないテーブル項目よりも優れたメモリタイプ（例えば、より速いメモリ、改善された耐久性）に割り当てられたか否かを特定できる。ブロック９８において、メモリ管理システム１８は、物理メモリアドレスがアクセスされた回数と、物理メモリアドレスに対応するメモリ装置のタイプとの間にミスマッチがあるか否かを特定できる。
【００２９】
ミスマッチがない場合には、方法は、ブロック９２に戻ることができる。しかしながら、物理メモリアドレスがアクセスされた回数と、物理メモリアドレスに対応するメモリ装置のタイプとの間にミスマッチがある場合には、メモリ管理システム１８は、ブロック１００において、メモリスワップを実行できるか否かを特定できる。特定の実施形態では、メモリスワップは、第一のタイプのメモリに保存された第一の組のデータと、第二のタイプのメモリに保存された第二の組のデータとの交換を含むことができる。例えば、メモリ管理システム１８は、第一のタイプのメモリに保存された第一の組のデータを第二のタイプのメモリに移動させ、第二のタイプのメモリに保存された第二の組のデータを第一のタイプのメモリに移動させることができる。さらに、第一の組のデータおよび第二の組のデータの移動は、同時に起こることができる。例えば、特定のタイプのメモリは、ＤＲＡＭ  ＤＩＭＭとＨＭＣ、およびＤＲＡＭ  ＤＩＭＭとＰＣＭなどの両方向に同時に起こるデータ移動をサポートできる。メモリスワップを実行できない場合には、メモリ管理システム１８は、ブロック１０２において、ミスマッチしたデータを移動させるのに利用可能な任意のメモリがあるか否かを特定できる。利用可能な任意のメモリがない場合には、方法はブロック１００に戻ることができる。
【００３０】
利用可能なメモリがある場合には、ブロック１０４において、メモリ管理システム１８は、データを特定された項目のメモリから利用可能なメモリに移動させることができる。例えば、メモリ管理システム１８は、特定されたテーブル項目に対応するデータを、異なるタイプのメモリ装置に移動させて、物理メモリアドレスがアクセスされた回数と、物理メモリアドレスに対応するメモリのタイプとの間のミスマッチを除去できる。ブロック１００に戻り、メモリ管理システム１８がメモリスワップを実行できる場合には、メモリ管理システム１８は、ブロック１０６において、メモリ装置間でデータをスワップできる。ブロック１０４またはブロック１０６の後、メモリ管理システム１８は、ＴＬＢ４０および／またはＸＴ５４のテーブル項目を更新する。例えば、メモリ管理システム１８は、仮想メモリアドレスと物理メモリアドレスとの間で修正したマッピング、修正された装置データおよび／または更新されたＬＲＵデータを用いて、ＴＬＢ４０および／またはＸＴ５４のテーブル項目を更新できる。
【００３１】
ブロック９２完全な１０８をメモリ管理システム１８が実行するものとして記述したが、メモリ管理システム１８の任意の一部（例えば、ハードウェアおよび／またはソフトウェア）が、記述した事項を実行できることに留意すべきである。例えば、ブロック９２完全な１０８のいずれかは、制御ユニット５６によって実行できる。特定の実施形態では、メモリ管理システム１８および／または制御ユニット５６は、仮想メモリアドレスの物理メモリアドレスへのマッピングを、メモリタイプの耐久性または速度に基づいて動的に変化させるように構成できる。本明細書に記述する技術を使用して、メモリ管理システム１８は、システム１０の性能を最大限にし、かつ／またはソフトウェアオーバーヘッドを最小限にできる。
【００３２】
本発明は様々な変更および代替形態を受け入れることができるが、具体的な実施形態を図面に例証として示し、本明細書に詳細に記述した。しかしながら、本発明が、開示した特定の形態に限定されることを意図しないことが理解されるべきである。むしろ、本発明は、以下の請求項によって定義されるような本発明の本質および範囲内に収まる全ての変更、均等物および代替物を包含できる。
【図１】
0006367797.tif 000002
【図２】
0006367797.tif 000003
【図３】
0006367797.tif 000004
【図４】
0006367797.tif 000005
【図５】
0006367797.tif 000006
【図６】
0006367797.tif 000007