(57)【要約】  物理アドレスによって参照される物理メモリロケーションにプロセッサでアクセスするための方法及び装置が本明細書で説明される。プロセッサは、仮想メモリアドレスの参照子及び／又は物理アドレスの参照子で命令をフェッチする／受け取る。変換ロジックが、仮想メモリアドレスを物理アドレスに変換し、物理アドレスを共通インターフェースに提供する。物理アドレシングロジックが、物理アドレスの参照子をデコードし、物理アドレシングロジックにより記憶されたメモリタイプに基づいて、物理アドレスを共通インターフェースに提供する。【選択図】なし
2008522321.tif 000002
【特許請求の範囲】
【請求項１】
第１の命令及び第２の命令をデコードするデコードロジックであって、該第１の命令は線形アドレスの参照子を有し、該第２の命令は第１の物理アドレスの参照子を有する、デコードロジックと、
前記線形アドレスを第２の物理アドレスに変換して、該第２の物理アドレスの表示をインターフェースロジックに提供する線形アドレス／物理アドレス変換器と、
第１のメモリタイプを記憶し、前記第１の物理アドレスの表示を前記インターフェースロジックに提供する物理アドレシングロジックと
を備える、マイクロプロセッサ。
【請求項２】
前記第１の命令は第１の仮想マシンによって生成され、前記第２の命令は第２の仮想マシンによって生成される、請求項１に記載のマイクロプロセッサ。
【請求項３】
前記第１の命令及び前記第２の命令の両方は、複数のマイクロオペレーションを含み、該第１の命令内の該複数のマイクロオペレーションのうちの１つは、前記線形アドレスの参照子を有し、該第２の命令内の該複数のマイクロオペレーションのうちの１つは、前記第１の物理アドレスの参照子を有する、請求項１に記載のマイクロプロセッサ。
【請求項４】
前記インターフェースロジックは、前記線形アドレス／物理アドレス変換器及び前記物理アドレシングロジックの両方に接続されるキャッシュインターフェースロジックである、請求項３に記載のマイクロプロセッサ。
【請求項５】
前記インターフェースロジックは、前記線形アドレス／物理アドレス変換器及び前記物理アドレシングロジックの両方に接続されるデータフェッチングロジックである、請求項３に記載のマイクロプロセッサ。
【請求項６】
前記第１のメモリタイプはキャッシュ可能である、請求項４に記載のマイクロプロセッサ。
【請求項７】
前記第１のメモリタイプはキャッシュ不能である、請求項５に記載のマイクロプロセッサ。
【請求項８】
前記線形アドレス／物理アドレス変換器に関連付けられて第２のメモリタイプを記憶するメモリタイプレジスタをさらに備える、請求項４に記載のマイクロプロセッサ。
【請求項９】
前記第１のメモリタイプは前記第２のメモリタイプと同じである、請求項８に記載のマイクロプロセッサ。
【請求項１０】
前記線形アドレスは仮想メモリ内のロケーションを参照し、前記第１の物理アドレスはシステムメモリ内のロケーションを参照する、請求項１に記載のマイクロプロセッサ。
【請求項１１】
マクロ命令をフェッチするフェッチユニットと、
前記フェッチユニットに接続されて前記マクロ命令をデコードするデコードユニットであって、該マクロ命令は、第１の線形アドレスを参照する第１のマイクロオペレーションと、第１の物理アドレスを参照する第２のマイクロオペレーションとを含む、デコードユニットと、
前記デコードユニットに接続されて、前記第１の線形アドレスを第２の物理アドレスに変換し、該第２の物理アドレスの表示を共通インターフェースに提供する変換バッファと、
前記デコードユニットに接続されて前記第１の物理アドレスの表示を前記共通インターフェースに提供する物理アドレシングロジックであって、該共通インターフェースは、前記第１の物理アドレス及び前記第２の物理アドレスからエレメント(element)を要求するように動作可能である、物理アドレシングロジックと
を備える、集積回路。
【請求項１２】
前記物理アドレシングロジックは、第１のメモリタイプを記憶する制御レジスタを備える、請求項１１に記載の集積回路。
【請求項１３】
前記第１のメモリタイプはキャッシュ可能なメモリタイプであり、前記共通インターフェースはキャッシュインターフェースである、請求項１２に記載の集積回路。
【請求項１４】
前記第１のメモリタイプはキャッシュ不能（ＵＣ）なメモリタイプであり、前記共通インターフェースは外部データインターフェースである、請求項１２に記載の集積回路。
【請求項１５】
前記キャッシュインターフェースによって要求される前記エレメントはデータオペランドであり、前記集積回路は、前記キャッシュインターフェースに接続されて前記データオペランドを記憶するレジスタファイルと、該データオペランドに対して処理を行う少なくとも１つの実行ユニットとをさらに備える、請求項１３に記載の集積回路。
【請求項１６】
前記マクロ命令は可変長の命令である、請求項１５に記載の集積回路。
【請求項１７】
第２のメモリタイプを記憶する、前記変換バッファに関連付けられるメモリタイプレジスタをさらに備える、請求項１２に記載の集積回路。
【請求項１８】
前記物理アドレシングロジックは、前記第２のメモリタイプを読み出し、前記制御レジスタに該第２のメモリタイプを前記第１のメモリタイプとして記憶するように動作可能である、請求項１７に記載の集積回路。
【請求項１９】
前記第１のメモリタイプ及び前記第２のメモリタイプは、異なるメモリタイプである、請求項１７に記載の集積回路。
【請求項２０】
複数のメモリセルを有するシステムメモリであって、第１の物理アドレスを有する第１のメモリセルは第１の命令を記憶することができ、第２の物理アドレスを有する第２のメモリセルは第１のデータオペランドを記憶することができ、第３の物理アドレスを有する第３のメモリセルは第２のデータオペランドを記憶することができる、システムメモリと、
前記システムメモリに接続されるマイクロプロセッサであって、前記第１のメモリセルから前記第１の命令をフェッチするように動作可能なフェッチユニットと、第１の線形アドレスを参照する少なくとも第１のマイクロオペレーション及び前記第２の物理アドレスを参照する少なくとも第２のマイクロオペレーションに前記第１の命令をデコードするように動作可能なデコードユニットと、前記第１の線形アドレスを前記第３の物理アドレスに変換し、該第３の物理アドレスの表示を共通インターフェースに提供する線形アドレス変換ユニットと、前記第２の物理アドレスの表示を前記共通インターフェースに提供する物理アドレスアクセスユニットとを備え、前記共通インターフェースは、前記第２のメモリセルから前記第１のデータオペランドをフェッチし、前記第３のメモリセルから前記第２のデータオペランドをフェッチするように動作可能である、マイクロプロセッサと
を備える、システム。
【請求項２１】
前記フェッチユニット及び前記デコードユニットは、可変長の命令をフェッチしてデコードするように動作可能である、請求項２０に記載のシステム。
【請求項２２】
前記共通インターフェースはキャッシュインターフェースであり、前記マイクロプロセッサは、前記第１のデータオペランド及び前記第２のデータオペランドがフェッチされた後、それらのデータオペランドを記憶するように動作可能なキャッシュをさらに備える、請求項２１に記載のシステム。
【請求項２３】
レジスタファイル及び実行ユニットをさらに備え、該レジスタファイルは、前記第１のデータオペランド及び前記第２のデータオペランドを前記キャッシュからロードし、前記第１のデータオペランド及び前記第２のデータオペランドを実行ユニットに提供するように動作可能である、請求項２２に記載のシステム。
【請求項２４】
前記物理アドレスアクセスユニットは、前記第２の物理アドレスをデコードするデコーダと、第１のメモリタイプを記憶する制御レジスタとを備える、請求項２０に記載のシステム。
【請求項２５】
前記マイクロプロセッサは、前記線形アドレス変換ユニットに関連付けられて第２のメモリタイプを記憶するメモリタイプレジスタをさらに備える、請求項２４に記載のシステム。
【請求項２６】
前記第１のメモリタイプは、キャッシュ可能及びキャッシュ不能から成る群から選択される、請求項２５に記載のシステム。
【請求項２７】
前記第１のメモリタイプ及び前記第２のメモリタイプは、異なるメモリタイプである、請求項２６に記載のシステム。
【請求項２８】
第１の仮想メモリアドレスから第１のエレメントを読み出す第１の命令をマイクロプロセッサで受け取ることであって、該第１の命令は第１の仮想マシンによって生成される、第１の命令をマイクロプロセッサで受け取ること、
前記第１の仮想メモリアドレスを第１の物理アドレスに変換すること、
前記第１の物理アドレスによって参照される第１のロケーションから前記第１のエレメントをフェッチすること、
第２の物理アドレスに第２のエレメントを記憶する第２の命令を前記マイクロプロセッサで受け取ることであって、前記第１の命令は第２の仮想マシンによって生成される、第２の命令を前記マイクロプロセッサで受け取ること、及び
前記第２の物理アドレスによって参照される第２のロケーションに前記第２のエレメントを記憶すること
を含む、方法。
【請求項２９】
前記第１のエレメントはデータオペランドである、請求項２８に記載の方法。
【請求項３０】
前記第２のエレメントは前記第１のエレメントである、請求項２８に記載の方法。
【請求項３１】
前記マイクロプロセッサで前記第１のエレメントに対して処理を行うことであって、それによって、第１の結果を得る、処理を行うことをさらに含み、前記第２のエレメントは前記第１の結果に基づいている、請求項２９に記載の方法。
【請求項３２】
前記第１の仮想メモリアドレスを前記第１の物理アドレスに変換することは、変換索引バッファ（ＴＬＢ）で行われる、請求項２９に記載の方法。
【請求項３３】
前記第１のロケーション及び前記第２のロケーションは、システムメモリ内にある、請求項３２に記載の方法。
【請求項３４】
前記第１の仮想マシン及び前記第２の仮想マシンは、同じ仮想マシンである、請求項２８に記載の方法。
【請求項３５】
前記第１の物理アドレスによって参照される前記第１のロケーションから前記データオペランドを読み出すことは、
前記データオペランドの有効なコピーが、前記マイクロプロセッサに関連付けられているキャッシュ内に存在するか否かをチェックすること、
前記有効なコピーが存在する場合に、前記データオペランドの該有効なコピーを前記キャッシュから読み出すこと、及び
前記有効なコピーが存在しない場合に、前記システムメモリ内の前記第１のロケーションから前記データオペランドを読み出すこと
を含む、請求項３３に記載の方法。
【請求項３６】
前記第２の物理アドレスによって参照される前記第２のロケーションに前記第２のエレメントを書き込むことは、
前記マイクロプロセッサの制御レジスタからメモリタイプを決定すること、
前記メモリタイプがキャッシュ可能である場合に、前記マイクロプロセッサに関連付けられているキャッシュに前記第２の要素を書き込むこと、及び
前記メモリタイプがキャッシュ不能である場合に、前記システムメモリの前記第２のロケーションに前記データオペランドを書き込むこと
を含む、請求項３３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[分野]
本発明は、プロセッサの分野に関し、詳細には、処理エレメントでメモリにアクセスすることに関する。
【背景技術】
【０００２】
［背景］
処理資源が増加してきたことから、複数のソフトウェアプログラム及びオペレーティングシステムを単一のマイクロプロセッサ上で実行する要求も増加してきた。仮想マシン拡張（ＶＭＸ）アーキテクチャと呼ばれる環境は、通常、単一のプロセッサの資源をさまざまなソフトウェアアプリケーション及びオペレーティングシステムに割り当てる。したがって、単一のマイクロプロセッサの資源又は複数の処理エレメントの資源は、複数のオペレーティングシステム及び複数のアプリケーションの間で分割される場合があり、これによって、ユーザは、コンピューティングプラットフォーム上でのそれらの使用量を潜在的に増加させることが可能になる。
【０００３】
通常、ＶＭＸ環境では、仮想マシンモニタ（ＶＭＭ）プログラムが、仮想マシン（ＶＭ）プログラム等の１つ又は複数のソフトウェアプログラム、及び、単一又は複数のマイクロプロセッサとインターフェースする。仮想マシン（ＶＭ）は、オペレーティングシステム（ＯＳ）又は他のソフトウェアアプリケーション等のゲストソフトウェアを含む場合がある。通例、複数のＶＭを単一のプロセッサ上で実行することを可能にするために、ＶＭＭプログラム及び各ＶＭプログラムの状態情報及び制御情報がメモリに記憶される。
【０００４】
このような状態情報及び制御情報を記憶するのに一般に使用される１つの構造体は、仮想マシン制御構造体（ＶＭＣＳ）である。ＶＭＣＳをマイクロプロセッサに記憶することによって、潜在的に、アドレシング（addressing：アドレス指定）をＶＭＣＳアーキテクチャに特有のものとすることができ、したがって、ＶＭＣＳは、通常、メインシステムメモリの一部に配置される。
【０００５】
しかしながら、ＶＭＣＳをシステムメモリに配置することによって、通例、仮想メモリアドレシングを使用するマイクロプロセッサには、アドレシング制限が生み出される。通常、仮想メモリを利用するマイクロプロセッサは、フェッチ又は書き込みが行われるメモリロケーションについて線形アドレスを生成する。その線形アドレスは、マイクロプロセッサの変換ユニットによってシステムメモリのメモリロケーションの物理アドレスに変換される。システムメモリのＶＭＣＳ部分は、このようにしてアドレシングすることができるが、ページフォルト等の変換プロセスのエラーは、ＶＭＸ環境でハンドリングすることが困難である。したがって、ＶＭＷＲＩＴＥ、ＶＭＲＥＡＤ、及び他のＶＭＸ命令等の多くの命令は、変換される線形アドレスを提供するのではなく、システムメモリのメモリロケーションを物理的にアドレシングする。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
仮想メモリページングを利用するマイクロプロセッサでは、ＶＭＸ命令は、線形／物理アドレス変換なしに物理メモリに直接アクセスすることが必要な場合がある。しかしながら、現在のシステムは、通例、メモリへの直接的な物理アドレスのアクセスが行えるようになる前に、仮想メモリのページングを無効にして線形／物理アドレス変換バッファをフラッシュすることを要する。ページングを無効にして変換バッファをフラッシュするのに必要とされる時間は、通常、大きな実行時間ペナルティを招く。
【０００７】
限定することを目的とするのではなく例として、本発明を添付図面の図により示す。
【発明を実施するための最良の形態】
【０００８】
以下の説明では、本発明の十分な理解を提供するために、特定の仮想マシン環境、特定のコンポーネント、特定の機能ブロック等の多数の特定の詳細が述べられる。しかしながら、本発明を実施するのに、これらの特定の詳細を使用する必要がないことが、当業者には明らかであろう。それ以外の場合には、マイクロプロセッサの既知の機能ブロック等の既知のコンポーネント又は方法は、本発明を不必要に分かりにくくすることを回避するために、詳細に説明されていない。
【０００９】
図１は、仮想マシン又は仮想マシンプログラムとしても知られているゲストソフトウェアをプロセッサ１２０とインターフェースするための仮想マシン環境を示している。具体的には、図１は、第１の仮想マシン１０５及び第２の仮想マシン１１０を示している。仮想マシン１０５及び１１０は、以下のもの、すなわち、オペレーティングシステム、特定オペレーティングシステム向けアプリケーション、一般的なアプリケーション、ソフトウェアルーチン、又は、プロセッサ１２０上で実行してもよい他の任意のプログラムのいずれか１つ又は任意の組み合わせであってもよい。一実施形態では、プロセッサ１２０は、複数の論理プロセッサを有する。別の実施形態では、プロセッサ１２０は、システムの複数の物理プロセッサの１つである。
【００１０】
また、図１は、仮想マシン１０５及び仮想マシン１１０をプロセッサ１２０とインターフェースする仮想マシンマネージャ（ＶＭＭ）１１５も示している。一実施形態では、ＶＭ１０５、ＶＭ１１０、及びＶＭＭ１１５の状態情報及び制御情報がシステムメモリ１２５に記憶されている。一例として、図１は、システムメモリ１２５内に存在して、ＶＭ１０５、ＶＭ１１０、及びＶＭＭ１１５の状態情報及び制御情報を記憶する仮想マシン制御構造体（ＶＭＣＳ）１３０を示している。図１は、ＶＭＣＳ１３０を、システムメモリ１２５内に存在するものとして示しているが、ＶＭＣＳは、プロセッサ１２０内に存在するメモリ、又は、システムメモリ１２５等のプロセッサ１２０に単に接続されるだけのメモリを含めて、システムに配置される任意のメモリ構造体内に存在することができる。１つの利点として、ＶＭＣＳがメインシステムメモリ内に存在する場合、命令は、ＶＭＣＳ部分についてすでに確立されたベースアドレスに加算されるオフセットを供給するだけで特定の物理アドレスを参照することができる。このタイプのオフセットアドレシングは、通常、物理的にアドレシングされるメモリをマイクロプロセッサに置くことに関連するアーキテクチャ特有の実施の問題を削減する。しかしながら、ＶＭＣＳ部分１３０は、上述したように、システムメモリ１２５内に存在することに限定されるものではない。
【００１１】
一実施形態では、ＶＭ１０５及び１１０並びにＶＭＭ１１５は、システムメモリ１２５を線形にアドレシングする命令を発行する。プロセッサ１２０は、次に、その線形アドレスをシステムメモリ１２５の物理アドレスに変換する。別の実施形態では、ＶＭ１０５、ＶＭ１１０、又はＶＭ１１５は、システムメモリ１２５を物理的にアドレシングする命令を発行する。プロセッサ１２０は、次に、アドレス変換なしに、システムメモリ１２５の物理アドレスに直接アクセスする。プロセッサ１２０及びアドレス変換を、図２を参照してより詳細に解説する。
【００１２】
システムメモリ１２５は、システムで使用される任意のタイプのアクセスメモリであってもよい。一実施形態では、システムメモリ１２５は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、シングルデータレート（ＳＤＲ）ＲＡＭ、ダブルデータレート（ＤＤＲ）ＲＡＭ、他の任意のマルチデータレートＲＡＭ、又は他の任意のタイプのアクセスメモリ等のランダムアクセスメモリ（ＲＡＭ）デバイスである。別の実施形態では、システムメモリ１２５は、ハードドライブ、遠隔に配置されるストレージデバイス、又は他の任意の短期ストレージデバイス若しくは長期ストレージデバイスを含む、プロセッサ１２０に関連付けられる他の任意のストレージデバイスである。
【００１３】
図２に移って、プロセッサ１２０の１つの例示的な実施形態が示されている。一実施形態では、プロセッサ１２０は、別のプロセッサから独立して動作できるマイクロプロセッサである。別の実施形態では、プロセッサ１２０は、他の処理エレメントと共に動作する共処理（coprocessing）エレメントである。
【００１４】
一実施形態では、プロセッサ１２０は、命令フェッチ２１０等のフェッチユニットを含む。命令フェッチ２１０は、命令をフェッチし且つ／又は受け取るためのロジックを備える。一例として、１つの命令は、単一又は複数のデータオペランドに対して実行する単一のオペレーションを含む。別の例として、１つの命令は、単一又は複数のデータオペランドに対して実行される、マイクロオペレーションとも呼ばれる複数の命令を含む。複数のオペレーションを含む命令は一般にマクロ命令と呼ばれる一方、個々のオペレーションは一般にマイクロオペレーションと呼ばれる。一例として、２つのデータオペランドに対して処理を行うマクロ命令は複数のマイクロオペレーションを含んでもよく、この場合、第１のマイクロオペレーションは、第１のデータオペランドをロードするようにプロセッサ１２０に命令し、第２のマイクロオペレーションは、第２のデータオペランドをロードするようにプロセッサ１２０に命令し、第３のマイクロオペレーションは、第１のデータオペランド及び第２のデータオペランドに対して処理を行うようにプロセッサ１２０に命令する。一実施形態では、命令フェッチユニット２１０は、固定長の命令をフェッチする。別の実施形態では、命令フェッチユニット２１０は、可変長の命令をフェッチする。さらに別の実施形態では、命令フェッチユニット２１０は、ｘ８６命令をフェッチする。
【００１５】
また、プロセッサ１２０は、命令デコード２１５も含むことができる。一実施形態では、命令デコード２１５は、固定長の命令、可変長の命令、及びｘ８６命令を含む、命令フェッチ２１０によってフェッチされた命令をデコードするためのデコードユニット又はデコードロジックである。一例として、デコードロジックは、命令ユニット２１０によってフェッチされた命令を、それらの命令の個々のマイクロオペレーションにデコードする。一実施形態では、命令デコード２１５は、複合命令をデコードするためのマイクロコード読み出し専用メモリを含む。別の実施形態では、命令デコード２１５は、最近フェッチされた命令又は最近デコードされた命令を記憶するための低レベルキャッシュを含む。さらに別の実施形態では、命令デコード２１５は、投機命令のデコード及び実行を援助する分岐予測ロジック又は分岐投機ロジック（branch speculation logic）を含む。
【００１６】
また、プロセッサ１２０は、命令デコード２１５及び命令フェッチ２１０に接続されるマイクロシーケンサ２２０も示している。一実施形態では、プロセッサ１２０は、インオーダ実行プロセッサである。インオーダ実行プロセッサは、命令及びマイクロオペレーションがフェッチされてデコードされた順序でそれらの命令及びマイクロオペレーションを実行する。インオーダプロセッサの一実施形態では、フェッチされた命令は、デコードされて、デコードロジックから直接実行されるか、又は、デコードされた命令を記憶するキャッシュから直接実行される。代替的な一実施形態では、マイクロシーケンサ２２０は、インオーダ実行プロセッサ内に存在して、命令デコード２１５及び命令キャッシュ（図示せず）からのデコードされたマイクロオペレーションを受け取り、伝え、そして追跡する。
【００１７】
別の実施形態では、プロセッサ１２０は、アウトオブオーダ実行プロセッサである。アウトオブオーダ実行プロセッサでは、命令及びマイクロオペレーションは、非投機的且つ／又は投機的に再配列されて実行される。したがって、マイクロシーケンサ２２０は、マイクロオペレーションをアウトオブオーダで実行して、マイクロオペレーションの実行ステータスを追跡するアウトオブオーダ実行ロジックと、投機的分岐実行を追跡して各マイクロオペレーションの実行ステータスのステータスを更新する分岐予測／更新ロジックと、投機的分岐実行の成功を確認するリタイヤロジック（retirement logic）と、命令をアウトオブオーダで実行する他のロジックとを含んでもよい。インオーダ実行プロセッサ及びアウトオブオーダ実行プロセッサの設計は共に既知である。
【００１８】
一実施形態では、フェッチされてデコードされた命令が、仮想メモリ／線形アドレスを参照するマイクロオペレーションを参照するか又は含む。別の実施形態では、フェッチされてデコードされた命令が、物理アドレスを参照するマイクロオペレーションを参照するか又は含む。さらに別の実施形態では、複数のマイクロオペレーションを有するマクロ命令が、線形アドレスを参照するマイクロオペレーション及び物理アドレスを参照するマイクロオペレーションを含む。
【００１９】
一実施形態では、線形アドレスは、変換バッファ２３５に渡される。変換バッファ２３５は、通常、線形／物理アドレス変換器、線形アドレス変換ユニット、及び変換索引バッファ（ＴＬＢ）とも呼ばれる。一実施形態では、変換バッファ２３５は、線形アドレスの参照子を受け取って、共通インターフェース２９０等の共通インターフェースに物理アドレスの表示を提供する。共通インターフェース２９０を以下でより詳細に解説する。
【００２０】
多くの場合、線形アドレスは、仮想メモリページングが有効にされているプロセッサでは仮想メモリアドレスと呼ばれる。変換バッファ２３５に渡される線形アドレスの参照子は、一実施形態では、線形アドレス自体を含む。別の実施形態では、変換バッファ２３５に渡されるアドレスは、線形アドレスのコード化された表示、又は、物理アドレスの表示を得るためにデコード又は操作された線形アドレスの他の或る参照子を含む。仮想メモリアドレスは線形アドレスに限定されるものではなく、逆に、物理アドレスに変換できる任意の形態の仮想メモリアドレスであることは明らかである。
【００２１】
一実施形態では、変換バッファ２３５は、仮想メモリアドレスを物理アドレスに変換するためのルックアップテーブルを含む。別の実施形態では、変換バッファ２３５は、入力された仮想メモリアドレスを物理アドレスにデコードする変換ロジックも含む。さらに別の実施形態では、変換バッファ２３５は、メモリタイプレジスタ２４０を含むか、又は、メモリタイプレジスタ２４０に関連付けられている。一実施形態では、メモリタイプレジスタ（ＭＴＲ）２４０は、共通インターフェース２９０のメモリタイプを読み出し且つ／又は記憶する。メモリタイプレジスタ（ＭＴＲ）２４０は、メモリタイプ読み出しレジスタ（ＭＴＲＲ）とも呼ばれる。１つの説明例として、ＭＴＲ２４０により読み出し可能又は記憶可能なメモリタイプはキャッシュ可能である。一実施形態では、ＭＴＲ２４０がキャッシュ可能なメモリタイプを記憶している場合、変換バッファ２３５は、物理アドレスの表示を共通インターフェース２９０に提供し、共通インターフェース２９０は、キャッシュインターフェース２６０等のキャッシュインターフェースである。一実施形態では、物理アドレスの表示は、実際の物理アドレスを含む。別の実施形態では、物理アドレスの表示は、物理アドレスをキャッシュ２６５に／へ記憶する／書き込むためのタグを含む。
【００２２】
ＭＴＲ２４０に記憶されるメモリタイプの別の説明例は、キャッシュ不能なメモリタイプである。一実施形態では、変換バッファ２３５は、物理アドレスの変換された表示を共通インターフェース２９０に提供する。一実施形態では、共通インターフェース２９０は、外部データインターフェース２７０等のデータインターフェース又はデータフェッチロジックである。
【００２３】
１つの説明例として、共通インターフェース２９０は、プロセッサ１２０の物理アドレスに関連付けられたデータオペランドをロードするか、プロセッサ１２０の物理アドレス若しくはシステムプロセッサ１２０が存在する物理アドレスからエレメントを要求／フェッチするか、又は、キャッシュ２６５等のキャッシュの物理アドレスによって参照されるエレメントをスヌープ／フェッチするように動作可能な任意のインターフェースロジックであってもよい。一実施形態では、エレメントには、データオペランドが含まれる。別の実施形態では、エレメントには命令が含まれる。さらに別の実施形態では、エレメントには、状態情報又は制御情報の一部が含まれる。しかしながら、エレメントは、命令、データオペランド、状態情報、又は制御情報に限定されるものではない。
【００２４】
プロセッサ１２０は、物理アドレスロジック２４５も含んでもよい。物理アドレスロジック２４５は、物理アドレシングロジック又は物理アドレスユニットとも呼ばれる。一実施形態では、物理アドレスロジック２４５は、物理アドレスを参照して、物理アドレスの表示を共通インターフェース２９０に提供する。第１の例として、物理アドレスの参照子は、物理アドレス自体を含む。第２の例として、物理アドレスの参照子は、物理メモリのベースアドレスからのオフセットを含む。第３の例として、物理アドレスの参照子は、物理アドレス又はオフセットのコード化された表示を含む。
【００２５】
一実施形態では、物理アドレスロジックは、図３に示すように、デコードロジック３０５も含む。一例として、デコードロジック３０５は、コード化された物理アドレスをデコードし、且つ／又は、命令又はマイクロオペレーションで供給されたオフセットから物理アドレスを生成するように動作可能である。具体的な一例として、先行のマイクロオペレーションが、その後のマイクロオペレーションに使用する物理アドレスロジック２４５のベースアドレスを供給する。後のマイクロオペレーションは表示を含む。この表示は、オフセットのコード化された表示を含む。物理アドレスロジック２４５は、オフセットをデコードし、ベースアドレス及びオフセットを加算することによって物理アドレスを生成する。別の実施形態では、物理アドレスの参照子は、物理アドレスロジック２４５によってデコードされて、マイクロシーケンサ２２０が供給する次のマイクロオペレーションも指し示す。「Virtual Machine Control Structure Identification Decoder serial」と題する同時係属中の米国特許出願第１０／８７６，５０９号は、物理アドレスロジック２４５に使用されて、物理アドレスを参照し、且つ、物理アドレスの表示を提供することができるＩＤデコードエンジンの一例をより詳細に解説している。
【００２６】
さらに別の実施形態では、物理アドレスロジック２４５は、図３に示すように、メモリタイプを記憶する制御レジスタ３１０を含むか又は制御レジスタ３１０に関連付けられている。第１の例として、記憶されたメモリタイプはキャッシュ可能であり、ライトバック（ＷＢ）とも呼ばれる。第２の例として、記憶されたメモリタイプはキャッシュ不能（ＵＣ）である。一実施形態では、メモリタイプレジスタ２４０及び制御レジスタ３１０は、同じメモリタイプを記憶する。代替的な一実施形態では、メモリタイプレジスタ２４０及び制御レジスタ３１０は、異なるメモリタイプを記憶する。
【００２７】
第１の説明例として、プロセッサ１２０は、少なくとも、制御レジスタ３１０を有する物理アドレスロジック２４５と、キャッシュ可能なメモリタイプを記憶するＭＴＲ２４０に関連付けられる変換バッファ２３５と、キャッシュインターフェース２６０と、キャッシュ２６５と、外部データインターフェース２７０とを含む。したがって、仮想メモリアドレスが変換バッファ２３５によって変換されると、変換バッファ２３５は、ＭＴＲ２４０に記憶されているメモリタイプをチェックし、物理アドレスの変換された表示をキャッシュインターフェース２６０に提供する。キャッシュインターフェース２６０は、キャッシュ２６５をチェックして、変換された物理アドレスが参照するエレメントの有効なコピーが存在するか否かを調べる。キャッシュ２６５がエレメントの有効なコピーを有する場合、そのエレメントは、キャッシュ２６５から、レジスタファイル２７５等のプロセッサ１２０内のロジックに読み込まれる。加えて、有効なコピーがキャッシュ２６５内に存在しない場合、外部データインターフェース２７０又は他の或るデータフェッチングロジックが、物理アドレスによって参照されるエレメントをメモリのロケーションから読み出す。
【００２８】
上記からの例を続けて、一実施形態では、制御レジスタ３１０は、キャッシュ不能なメモリタイプを記憶する。メモリタイプレジスタ２４０がキャッシュ可能なメモリタイプを記憶していても、制御レジスタ３１０は、ＭＴＲ２４０によって記憶されているメモリタイプと同じものに制限されない。制御レジスタ３１０がキャッシュ可能なメモリタイプを記憶していた場合、物理アドレスロジック２４５は、物理アドレスをキャッシュインターフェース２６０に提供し、上述したのと同じルックアッププロセスが行われる。一方、物理アドレスロジック２４５が制御レジスタ３１０をチェックし、制御レジスタ３１０がキャッシュ不能なメモリタイプを記憶している場合、物理アドレスロジック２４５は、物理アドレスの表示を、外部データインターフェース２７０等のデータフェッチングロジックに直接提供する。外部データインターフェース２７０は、次に、物理アドレスによって参照されるメモリロケーションからエレメントをフェッチする。
【００２９】
上記の例における制御レジスタ３１０は、ＭＴＲ２４０と異なるメモリタイプを記憶していたが、別の実施形態では、物理アドレスロジック２４５が、ＭＲＴ２４０を読み出し、次に、その同じメモリタイプを制御レジスタ３１０に記憶する。しかしながら、物理アドレスロジックは、制御レジスタ３１０を含むことにも制御レジスタ３１０に関連付けられることにも限定されるものではない。さらに別の実施形態では、物理アドレスロジック２４５は、ＭＴＲ２４０からメモリタイプを読み出す。
【００３０】
上記の例では、一例として書き込み（write）／ストア（stores）を使用した。しかしながら、別の実施形態では、同じ装置及び方法は、書き込み、及び、仮想メモリアドレス又は物理アドレスのいずれかの参照を含む他の命令に適用可能である。上記からの説明例を変更して、書き込みが行われる場合、メモリに書き込まれるエレメントの物理アドレスは、キャッシュインターフェース２６０及び／又は外部データインターフェース２７０に提供される。メモリタイプがキャッシュ可能である場合、エレメントは、キャッシュ２６５に書き込まれ、その後、キャッシュ２６５又は外部データインターフェース２７０により或るメモリロケーションに書き込まれる。メモリタイプがキャッシュ不能である場合、エレメントは、外部データインターフェース２７０によりメモリロケーションに直接書き込まれる。
【００３１】
また、プロセッサ１２０は、レジスタファイル２７５及び実行ユニット（複数可）２８０も含むことができる。一実施形態では、レジスタファイル２７５は、データオペランドをロードして記憶するように動作可能であり、また、それらのデータオペランドを、実行ユニット（複数可）２８０等の実行資源に提供する。一実施形態では、実行ユニット（複数可）２８０は、単一のデータオペランドに対する処理又は複数のデータオペランドに対する直列及び／若しくは並列の処理を行うことができる。
【００３２】
具体的に図示していないが、プロセッサ１２０の他の実施形態では、以下のものの任意の１つ、任意の複数、又は任意の組み合わせもプロセッサ１２０に含めることができる。以下のものとは、データパス、命令パス、算術論理演算ユニット（ＡＬＵ）、単一の命令又は複数の命令を実行して単一のデータオペランドに対する処理又は複数のデータオペランドに対する直列若しくは並列の処理を行うことができる浮動小数点計算ユニット、アーキテクチャ状態レジスタ（複数可）、バスコントローラ、割り込みコントローラ、及びアドバンストプログラマブル割り込みコントローラ（ＡＰＩＣ）、プリフェッチユニットである。
【００３３】
図４に移って、物理アドレスロジック２４５及びＶＭＣＳ４３０を含むシステムの一実施形態が示されている。相互接続４１０によってメモリコントローラ４１５に接続されるマイクロプロセッサ４０５が示されている。メモリコントローラ４１５は、相互接続４３５によってグラフィックスデバイス４４０に接続されている。代替的な一実施形態では、グラフィックスデバイス４４０は、メモリコントローラ４１５内に統合されている。メモリコントローラ４１５は、相互接続４２０によってメモリ４２５に接続されている。一実施形態では、メモリ４２５はシステムメモリである。別の実施形態では、メモリ４２５は、システム内に配置される任意のメモリデバイスである。メモリ４２５は、システムで実行されるＶＭＭ及び／又はゲストソフトウェアの状態情報及び／又は制御情報を記憶するＶＭＣＳ部分４３０を含むものとして示されている。
【００３４】
メモリコントローラ４１５は、相互接続４４５によって入出力（Ｉ／Ｏ）コントローラ４５０に接続されるものとしても示されている。Ｉ／Ｏコントローラ４５０は、相互接続４５５によって、ストレージ４６０、ネットワークインターフェース４６５、及び入出力デバイス４７０に接続されている。一実施形態では、ストレージ４６０はハードドライブである。別の実施形態では、ストレージ４６０はディスクドライブである。さらに別の実施形態では、ストレージ４６０は、システムの任意の静的ストレージデバイスである。一実施形態では、ネットワークインターフェース４６５は、ローカルエリアネットワーク（ＬＡＮ）とインターフェースする。別の実施形態では、ネットワークインターフェース４６５は、インターネット等のより大きなネットワークとインターフェースする。入出力デバイス４７０は、キーボード、マウス、モニタ、又はプリンタ等、任意のユーザ入力デバイス又はシステムに関係する出力デバイスを含んでもよい。
【００３５】
図５を参照して、メモリからエレメントをロードしてメモリにエレメントを記憶する一例が示されている。ＶＭＭ５１０からのロード５７５等の第１の命令は、第１の仮想／線形メモリアドレスから第１のエレメントをロードするオペレーションを含む。一実施形態では、第１のエレメントは命令である。別の実施形態では、第２のエレメントはデータオペランドである。第３の実施形態では、第１のエレメントは、一般にメモリに記憶される他の任意のエレメントである。ロード５７５は、ＶＭ５０５によって生成されるものとして示されている。一方、別の実施形態では、ロード５７５は、プロセッサ５２０上で実行される別のゲストソフトウェアプログラムによって生成される。変換バッファ５２５は、第１の仮想／線形メモリアドレスを第１の物理メモリアドレスに変換する。第１の物理メモリアドレスは、メモリ５６０内の第１のメモリロケーション５６５等の第１のメモリロケーションを参照する。一実施形態では、メモリ５６０は、複数のメモリセルを有し、第１のメモリロケーション５６５は、それらの複数のメモリセル内の少なくとも１つのメモリセルである。
【００３６】
また、変換バッファ５２５は、第１の物理アドレスをキャッシュインターフェース５３５に提供するか、又は、外部データインターフェース５４５に直接提供する。キャッシュインターフェース５３５が、第１の物理アドレスを有する要求を受け取る場合、キャッシュインターフェース５３５は、キャッシュ５４０をチェックして、第１のメモリロケーション５６５に記憶されている第１のエレメントの有効なコピーが存在するか否かを調べる。有効なコピーが存在する場合、第１のエレメントは、レジスタファイル５５０内にロードされるか又は他のプロセッサロジック５２０内にロードされる。一方、変換バッファが第１の物理アドレスを外部データインターフェース５４５に直接提供した場合、又は、第１のメモリロケーション５６５内の第１のエレメントの有効なコピーがキャッシュ５４０内に存在しない場合、外部データインターフェース５４５は、第１のメモリロケーション５６５から第１のエレメントをフェッチする。第１のエレメントがフェッチされると、第１のエレメントは、キャッシュ５４０に記憶され、且つ／又は、レジスタファイル５５０にロードされる。レジスタファイル５５０は、オペレーションのために、第１のエレメントを実行ユニット（複数可）５５５内にさらにロードする。
【００３７】
加えて、プロセッサ５２０は、ストア５８０等の第２の命令をフェッチするか又は受け取る。ストア５８０は、第２のエレメントを第２の物理アドレスに記憶するようにプロセッサ５２０に要求する。第２の物理アドレスは、第２のメモリロケーション５７０を参照する。一実施形態では、第２のエレメントは、ロード命令５７５によって先にロードされた第１のエレメントである。別の実施形態では、第２のエレメントは、第１のエレメント５７５に対するオペレーションが実行ユニット（複数可）５５５によって実行されてレジスタファイル５５０及び／又はキャッシュ５４０において更新された結果である。さらに別の実施形態では、第２のエレメントは、プロセッサ５２０に記憶されている無関係なエレメントである。上述したように、ストア命令５８０は、ベースアドレスに加算されるオフセットを含めて、第２の物理アドレスの任意の表示を含んでもよい。物理アドレスロジック５３０は、記憶されたメモリタイプに基づいて、キャッシュインターフェース５３５及び／又は外部データインターフェース５４５に第２の物理アドレスを提供する。そして、外部データインターフェース５４５は、エレメントを第２のメモリロケーション５７０に書き込む／記憶する。
【００３８】
上記から分かるように、ＶＭＣＳ部分がシステムメモリ内に保持されている場合、マイクロプロセッサの物理アドレスロジックによって、マイクロプロセッサは、線形／仮想メモリアドレス及び物理アドレスの両方の参照を有する複数の命令又は単一のマクロ命令のいずれかを受け取ることが可能になる。加えて、マイクロプロセッサは、ページングを無効にすること、変換バッファをフラッシュすること、及びページングを再び有効にすることを行うことなく、アドレスをデコードし、インターフェースロジックに物理アドレスを提供して、物理アドレスにより参照されるメモリロケーションからエレメントを取り出す／ロードすることができる。ページングを無効にすること、変換バッファをフラッシュすること、及びページングを再び有効にすることは通常、大きな実行ペナルティを招く。
【００３９】
上記の明細書では、本発明を、その特定の例示的な実施形態について説明してきた。しかしながら、添付の特許請求の範囲で述べられるような本発明のより広い精神及び範囲から逸脱することなく、それらの実施形態にさまざまな修正及び変更を行えることは明らかである。本明細書及び図面は、したがって、限定的な意味ではなく例示の意味で考慮されるべきである。
【図面の簡単な説明】
【００４０】
【図１】２つの仮想マシン、仮想マシンモニタ、プロセッサ、及びシステムメモリを有するシステムの一実施形態を示す図である。
【図２】図１に示すプロセッサの部分的な機能ブロック図である。
【図３】図２に示す物理アドレスロジックの一実施形態を示す図である。
【図４】マイクロプロセッサと、仮想マシン制御構造体を有するメモリとを有するシステムの一実施形態を示す図である。
【図５】メモリロケーションを線形にアドレシングする命令及びメモリロケーションを物理的にアドレシングする命令の一実施形態を示す図である。
【図１】
2008522321.tif 000003
【図２】
2008522321.tif 000004
【図３】
2008522321.tif 000005
【図４】
2008522321.tif 000006
【図５】
2008522321.tif 000007
【国際調査報告】
2008522321.tif 000008
2008522321.tif 000009
2008522321.tif 000010