(57)【要約】  メモリアドレス変換回路（１４）は、変換テーブル（２８、３２、３６、３８、４０、４２）の階層に格納された変換データを使用して、仮想メモリアドレスＶＡを物理メモリアドレスＰＡに変換するためのトップダウンページテーブルウォーク操作を実行する。ページサイズ変数Ｓは、異なるサイズＳの物理メモリアドレスのページ、仮想メモリアドレスのページおよび変換テーブルを用いて動作するように、メモリアドレス変換回路（１４）を制御するために使用される。これらの異なるサイズは、すべて４ｋＢまたはすべて６４ｋＢとすることができる。システムは、複数の仮想マシン実行環境をサポートすることができる。これらの仮想マシン実行環境は、自身のページサイズ変数を独立して設定することができ、関連付けられたハイパーバイザー（６２）のページサイズとなり得る。
2013522748.tif 000002
【特許請求の範囲】
【請求項１】
変換テーブルの階層に格納された変換データを使用して仮想メモリアドレスを物理メモリアドレスに変換するためのトップダウンページテーブルウォーク操作を実行するように構成されたメモリアドレス変換回路を備えるデータを処理するための装置であって、
Ｎが正の整数であり、前記変換データが、仮想メモリアドレスの２Ｎ個の連続バイトのページと、物理メモリアドレスの２Ｎ個の連続バイトの対応するページとの間の変換を特定し、
変換テーブルの前記階層は、完全な変換テーブルが前記物理メモリの１つのページ内に格納されるようなサイズの２Ｎ個の連続するバイトの変換テーブルを備え、
前記メモリアドレス変換回路が、現在の値Ｎを特定するページサイズ変数に応答して、選択されたサイズの物理メモリアドレスのページ、仮想メモリアドレスのページ、および変換テーブルを用いて動作するように前記メモリアドレス変換回路を制御する、
装置。
【請求項２】
複数の仮想マシン実行環境を提供するプログラム命令を実行するように構成されたプロセッサを備え、前記複数の仮想マシン実行環境の各々に関する前記ページサイズ変数が、独立して設定されるように構成された、請求項１に記載の装置。
【請求項３】
前記仮想マシン実行環境の各々が、仮想マシン変換テーブルの階層に格納された仮想マシン変換データを有し、アドレス変換中における前記メモリアドレス変換回路による仮想マシン変換テーブルへの各アクセスは、物理アドレスを識別するために、前記メモリアドレス変換回路によるさらなるアドレス変換を必要とし、前記さらなるアドレス変換が、前記複数の仮想マシン実行環境に関する前記ページサイズ変数から独立して設定されるように構成されたページサイズ変数を使用する、請求項２に記載の装置。
【請求項４】
前記ページサイズ変数の異なる値は、２Ｘバイトの物理ページサイズおよび２Ｙバイトの物理ページサイズを特定し、ＸおよびＹは整数であり、前記変換データが、２ＸバイトのＹ／Ｘ個の物理ページが物理アドレス空間内に連続して配置されることを特定するための連続ヒントデータを含む、請求項１から請求項３のうちのいずれか１つに記載の装置。
【請求項５】
前記仮想アドレスの最上位ビットエンドから延びる前記仮想アドレスの所定の部分は、ページテーブルウォークを必要とせずに、前記物理アドレスの対応する一部分への固定された変換を与えられる、請求項１から請求項４のうちのいずれか１つに記載された装置。
【請求項６】
前記ページサイズ変数が、値Ｎを１２および１６のうちの一方となるように特定する、請求項１から請求項５のうちのいずれか１つに記載の装置。
【請求項７】
変換テーブルの階層に格納された変換データを使用して仮想メモリアドレスを物理メモリアドレスに変換するためのトップダウンページテーブルウォーク操作を実行するように構成されたメモリアドレス変換手段を備えるデータを処理するための装置であって、
Ｎが正の整数であり、前記変換データが、仮想メモリアドレスの２Ｎ個の連続バイトのページと、物理メモリアドレスの２Ｎ個の連続バイトの対応するページとの間の変換を特定し、
変換テーブルの前記階層は、完全な変換テーブルが前記物理メモリの１つのページ内に格納されるようなサイズの２Ｎ個の連続するバイトの変換テーブルを備え、
前記メモリアドレス変換手段が、現在の値Ｎを特定するページサイズ変数に応答して、選択されたサイズの物理メモリアドレスのページ、仮想メモリアドレスのページ、および変換テーブルを用いて動作するように前記メモリアドレス変換回路を制御する、
装置。
【請求項８】
変換テーブルの階層に格納された変換データを使用して仮想メモリアドレスを物理メモリアドレスに変換するためのトップダウンページテーブルウォーク操作を実行するステップであって、
前記変換データが、仮想メモリアドレスの２Ｎ個の連続バイトのページと、物理メモリアドレスの２Ｎ個の連続バイトの対応するページとの間の変換を特定し、Ｎが正の整数であり、
変換テーブルの前記階層は、完全な変換テーブルが前記物理メモリの１つのページ内に格納されるようなサイズの２Ｎ個の連続するバイトの変換テーブルを備える、トップダウンページテーブルウォーク操作を実行するステップと、
現在の値Ｎを特定するページサイズ変数に応答して、選択されたサイズの物理メモリアドレスのページ、仮想メモリアドレスのページ、および変換テーブルを用いて動作するステップと
を含む、データを処理するための方法。
【請求項９】
複数の仮想マシン実行環境を提供するステップをさらに含み、前記ページサイズ変数が、前記複数の仮想マシン実行環境の各々に対して独立して設定される、請求項８に記載の方法。
【請求項１０】
前記仮想マシン実行環境の各々が、仮想マシン変換テーブルの階層に格納された仮想マシン変換データを有し、アドレス変換中における前記メモリアドレス変換回路による仮想マシン変換テーブルへの各アクセスは、物理アドレスを識別するために、さらなるアドレス変換を必要とし、前記さらなるアドレス変換が、前記複数の仮想マシン実行環境に対して前記ページサイズ変数から独立して設定される、請求項９に記載の方法。
【請求項１１】
前記ページサイズ変数の異なる値が、２Ｘバイトの物理ページサイズおよび２Ｙバイトの物理ページサイズを特定し、ＸおよびＹは整数であり、前記変換データは、２ＸバイトのＹ／Ｘ個の物理ページが物理アドレス空間内に連続して配置されることを特定するための連続ヒントデータを含む、請求項８から請求項１０のうちのいずれか１つに記載の方法。
【請求項１２】
前記仮想アドレスの最上位ビットエンドから延びる前記仮想アドレスの所定の部分は、ページテーブルウォークを必要とせずに、前記物理アドレスの対応する一部分への固定された変換に与えられる、請求項８から請求項１１のうちのいずれか１つに記載された装置。
【請求項１３】
前記ページサイズ変数が、値Ｎを１２および１６のうちの一方となるように特定する、請求項８から請求項１２のいずれか１つに記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より詳細には、本発明は、データ処理システム内で仮想メモリアドレスを物理メモリアドレスに変換するためのメモリアドレス変換メカニズムに関する。
【背景技術】
【０００２】
メモリシステムにアクセスするために、プロセッサによって生成された仮想アドレスを物理アドレスに変換するのに役立つ、メモリ管理ユニットのようなメモリアドレス変換回路をデータ処理システムに提供することが知られている。必要な変換を実行するための１つの方法は、変換テーブルを使用することである。これらの変換テーブルは、階層の各レベルが、さらなるレベルのテーブルに対するポインタか、またはターゲット物理アドレスを提供するディスクリプタのいずれかを発見するために、テーブルにインデックスを付けるための仮想アドレスの１つの部分をとる、変換テーブルの階層として構成することができる。トップダウンページテーブルウォーク操作が実行され、フル仮想アドレスがターゲット物理アドレスに変換されるまで、ページテーブルの様々なレベルへの一連のインデックス付きのルックアップが実行される。「トップダウン」の重要性は、第１のレベルのテーブルが、テーブルにインデックスを付けるために、仮想アドレスの最上位部分をとるということである。
【０００３】
多くのシステムでは、アドレス空間を４ｋＢのページに分割し、このページサイズの粒度を用いて、アドレス変換を実行するのが一般的である。さらに、ページテーブル（変換テーブル）は、また、それらのページテーブルを格納するために割り当てられるメモリのページ内にページテーブルが効率的に適合するように、４ｋＢのサイズとなるように構成される。
【０００４】
メモリアドレス空間が４ｋＢのページに分割されることに、明示的に、あるいは非明示的に依拠する、大量のソフトウェアが存在する。現在、そのようなソフトウェアは、ページサイズが変動する場合には、正しく動作しないことがある。
【発明の概要】
【０００５】
１つの態様から鑑みると、本発明は、
変換テーブルの階層に格納された変換データを使用して仮想メモリアドレスを物理メモリアドレスに変換するためのトップダウンページテーブルウォーク操作を実行するように構成されたメモリアドレス変換回路を備えるデータを処理するための装置であって、
前記変更データは、仮想メモリアドレスの２Ｎ個の連続バイトのページと、物理メモリアドレスの２Ｎ個の連続バイトの対応するページとの間の変換を特定し、Ｎが正の整数であり、
変換テーブルの前記階層は、完全な変換テーブルが前記物理メモリの１つのページ内に格納されるようなサイズの２Ｎ個の連続するバイトの変換テーブルを備え、
前記メモリアドレス変換回路が、現在の値Ｎを特定するページサイズ変数に応答して、選択されたサイズの物理メモリアドレスのページ、仮想メモリアドレスのページ、および変換テーブルを用いて動作するように前記メモリアドレス変換回路を制御する、
装置を提供する。
【０００６】
本出願の技法は、現在提供しているメモリ空間のサイズが大幅に増大すること（たとえば、メモリ容量がより大きくなり、３２ビットアドレスから６４ビットアドレスに変更）により、４ｋＢメモリページを利用して、実際には必要とされないことがあるメモリ全体に、一定レベルの粒度を提供することが認識される。さらに、本出願の技法は、より大きな物理アドレスをもつ４ｋＢのページを使用するために、トップダウンページテーブルウォーク操作をサポートするページテーブル階層内にページテーブルのさらに多くのレベルが必要であることが認識される。たとえば、ページテーブルの各レベルが、仮想アドレスのうちの９ビットから物理アドレスのうちの９ビットに変換することができる場合、６４ビット仮想アドレスを６４ビット物理アドレスに変換することは、ページテーブルウォークと同じくらいの６つのレベルをとることができる。これにより、望ましくない増大した遅延が導入される。本出願の技法は、これらの課題を認識すると同時に、物理メモリおよび仮想メモリのページのサイズ、ならびに変換テーブル（ページテーブル）サイズは、様々な値間で切り替えることができ、メモリアドレス変換回路が、現在選択されているサイズメモリページおよび変換テーブルを用いて、必要なトップダウンページテーブルウォーク操作を実行するように適合されていることを実現することによって、これらの課題に対処する。変換テーブルは、依然として、メモリページ内に効率的に適合することができ、変換テーブルをより大きくすることにより、ページテーブルの各レベルをもつ物理アドレスのビットに変換することができる仮想アドレスのビットの数を増加させることができる。これにより、変換においてアクセスしなければならないページテーブルのレベルの数が少なくなり、したがって、関連付けられた遅延が低減される。
【０００７】
本出願の技法は、複数の仮想マシン実行環境を提供するプログラム命令を実行するプロセッサを有するシステム内で使用することができる。これらの仮想マシン実行環境は、同じハードウェア上で動作し同じメモリアドレス変換回路を利用する異なる仮想マシン実行環境が異なるページサイズを有するように、独立して設定されたページサイズ変数を有することができる。
【０００８】
仮想マシン実行環境を提供するシステムを使用するとき、仮想マシンは、仮想マシン変換テーブルの階層に格納された、それ自身の変換データを有し、メモリアドレス変換回路による仮想マシン変換テーブルへの各アクセスは、基礎となる物理アドレスを識別するために、メモリアドレス変換回路によるさらなるアドレス変換を必要とする。したがって、仮想マシン変換テーブルを介するページテーブルウォークが、４レベルウォークである場合、仮想マシン変換テーブル階層を介するウォークの各レベルは、物理アドレスを識別するために実行すべき複数のページテーブルウォーク（たとえば、次の仮想マシン変換テーブルの物理アドレスを識別するために、ページテーブルウォークの４つのさらなるレベル）を必要とし、それにより、トップダウンページテーブルウォークが開始されるときにはいつでも必要なページテーブル変換のレベルの総数が急速に増加する。したがって、より大きなページテーブルを可能にし、したがって、より大きなメモリアドレス空間についてでさえ実行する必要があるページテーブルウォークのレベルの数を低減する本出願の技法は、仮想マシン実行環境を提供するシステムに適用するときに大幅な利点を有する。
【０００９】
仮想マシン変換テーブルへの各レベルに関連付けられたさらなるアドレス変換について使用されるページサイズ変数は、複数の仮想マシン実行環境のページサイズ変数から独立して設定されるページサイズ変数を使用することができる。
【００１０】
本発明のいくつかの実施形態では、ヒントデータをより小さなページサイズに関連付けて、仮想メモリの各々の次に連続して配置されるこれらの小さなページのうちの複数も、物理メモリ内の各々の次に連続して配置され、したがって、単一のより大きなサイズの仮想−物理アドレス変換によって、すべてを表し得ることを示す。この連続ヒントデータは、いつ、そのような連続ページが生じ、効果的なより大きなページサイズを有するものとし見なされる変換にマークを付けるかを仮想−物理アドレス変換をキャッシュするメカニズムが認識できるようにする際に有用あり、それにより、それらの変換キャッシュメカニズム（たとえば、変換ルックアサイドバッファ）の保存容量内の空間が節約される。そのような実施形態では、効果的なより大きなページサイズが、ページサイズ変数によって選択することができるより大きな異なるサイズのページに対応する場合に特に望ましい。
【００１１】
メモリアドレス空間のうちの一部が、使用するために利用可能であることが望まれる場合、固定値であることが必要な仮想アドレスの最上位ビットエンドから延びる仮想アドレスの一部分を構成することによって、必要なページテーブルウォークのレベルの数を、典型的には、すべて０またはすべて１に減らすことが可能であり、したがって、最も高いレベルの変換テーブルウォークを実行する必要がなくなることが理解されよう。したがって、メモリアドレスが、メモリアドレス空間のうちの６４ビットを提供する場合、特定の実施形態では、このアドレス空間のうちの４８ビットのみが必要とされることがあり、したがって、仮想アドレス空間のうちの上位の１６ビットがすべて０またはすべて１でなければならず、そうでない場合には、メモリ変換障害が起こることになる。
【００１２】
提供されることが実用的で望ましいページテーブルのサイズは、４ｋＢおよび６４ｋＢのサイズを含む、すなわち、２１２および２１６に対応することが分かった。
【００１３】
別の態様から鑑みると、本発明は、
変換テーブルの階層に格納された変換データを使用して仮想メモリアドレスを物理メモリアドレスに変換するためのトップダウンページテーブルウォーク操作を実行するように構成されたメモリアドレス変換手段を備えるデータを処理するための装置であって、
前記変換データが、仮想メモリアドレスの２Ｎ個の連続バイトのページと、物理メモリアドレスの２Ｎ個の連続バイトの対応するページとの間の変換を特定し、Ｎが正の整数であり、
変換テーブルの前記階層は、完全な変換テーブルが前記物理メモリの１つのページ内に格納されるようなサイズの２Ｎ個の連続するバイトの変換テーブルを備え、
前記メモリアドレス変換手段が、現在の値Ｎを特定するページサイズ変数に応答して、選択されたサイズの物理メモリアドレスのページ、仮想メモリアドレスのページ、および変換テーブルを用いて動作するように前記メモリアドレス変換回路を制御する、
装置を提供する。
【００１４】
さらなる態様から鑑みると、本発明は、
変換テーブルの階層に格納された変換データを使用して仮想メモリアドレスを物理メモリアドレスに変換するためのトップダウンページテーブルウォーク操作を実行するステップであって、
前記変換データが、仮想メモリアドレスの２Ｎ個の連続バイトのページと、物理メモリアドレスの２Ｎ個の連続バイトの対応するページとの間の変換を特定し、Ｎが正の整数であり、
変換テーブルの前記階層は、完全な変換テーブルが前記物理メモリの１つのページ内に格納されるようなサイズの２Ｎ個の連続するバイトの変換テーブルを備える、トップダウンページテーブルウォーク操作を実行するステップと、
現在の値Ｎを特定するページサイズ変数に応答して、選択されたサイズの物理メモリアドレスのページ、仮想メモリアドレスのページ、および変換テーブルを用いて動作するステップと
を含む、データを処理するための方法を提供する。
【００１５】
添付の図面を参照して、本発明の実施形態を例として以下に記載する。
【図面の簡単な説明】
【００１６】
【図１】メモリに結合されたプロセッサを含むデータ処理システムを概略的に示す図であり、このプロセッサはメモリアドレス変換回路を含む。
【図２】４ｋＢ変換テーブルおよび６４ビットアドレスを利用するトップダウンページテーブルウォーク操作を概略的に示す図である。
【図３】６４ｋＢ変換テーブルおよび６４ビットメモリアドレスを利用するトップダウンページテーブルウォーク操作を概略的に示す図である。
【図４】変換するための仮想アドレスを受信したときのメモリアドレス変換回路の動作を概略的に示すフロー図である。
【図５】異なるページサイズの複数の仮想マシン実行環境の配置を概略的に示す図である。
【発明を実施するための形態】
【００１７】
図１に、メモリ６に結合されたプロセッサ４を備えるデータ処理システム２を概略的に示す。プロセッサ４は、データ処理コア８と、キャッシュメモリ１０と、ロードストアユニット１２と、メモリ管理ユニット１４（メモリアドレス変換回路）とを含む。メモリ６は、（ページテーブルとしても知られる）変換テーブル１６と、データの物理的にアドレス指定されたページ１８とを格納する。
【００１８】
プログラム命令を実行するときに、データ処理コア８は、仮想アドレスＶＡを生成し、仮想アドレスＶＡは、メモリ管理ユニット１４によって物理アドレスＰＡに変換される。また、メモリ管理ユニット１４は、特権に応じて、あるいは現在の処理またはメモリのページに関連付けられた他の属性のレベルに応じて、メモリの（１つまたは複数の）特定のページへのアクセスを制御することなど、他の機能を有することができる。メモリ管理ユニット１４は、変換ルックアサイドバッファ２０を含み、変換ルックアサイドバッファ２０は、最近使用された仮想アドレスを物理アドレスに変換するために、変換データのキャッシュを格納する。仮想アドレスが変換を必要とし、必要な変換情報が、変換ルックアサイドバッファ２０内に格納されていないときには、メモリ管理ユニット１４は、次いで、トップダウンページテーブルウォーク操作をトリガする。このページテーブルウォーク操作の開始点は、変換テーブル中へのエントリポイントのメモリアドレスである。このエントリポイントは、メモリ管理ユニット１４内の変換テーブルベースレジスタ２２中に格納される。
【００１９】
また、メモリ管理ユニット１４は、処理コア８によって書き込み可能な変換テーブルベース制御レジスタ２４を含み、ページサイズ変数Ｓを格納するページサイズフィールド２６を含む。このページサイズ変数Ｓは、メモリ管理ユニット１４がトップダウンページテーブルウォーク操作を実行しているときに、物理メモリのページ、仮想メモリのページ、および変換テーブルのサイズを制御する。また、変換テーブルベース制御レジスタ２４を使用して、変換テーブルベースレジスタ２２内に格納された値を切り替えることができ、それにより、変換テーブルの異なる階層を、使用中また未使用に切り替える。ページテーブルのこれらの異なる階層の各々は、それ自体が関連付けられたページサイズ変数を有することができる。したがって、たとえば、複数の仮想実行環境をサポートするシステムは、４ｋＢのページサイズおよび変換テーブルサイズを特定する変換テーブルの１つのセットと、６４ｋＢのページサイズおよび変換テーブルサイズをもつ変換テーブルの別のセットとを有することができる。
【００２０】
図２に、ページサイズおよび変換テーブルサイズが４ｋＢであることをページサイズ変数が特定するとき、変換ルックアサイドバッファ２０中にないときにメモリ管理ユニット１４によって実行される６レベルトップダウンページテーブルウォークを概略的に示す。変換テーブルベースレジスタ２２は、最高位のレベル変換テーブル２８の開始位置を示すアドレスを格納する。仮想アドレスの最上位の７ビットを使用して、この変換テーブルにインデックスを提供し、第２レベルの変換テーブル３２の開始アドレスへのポインタ３０を識別する。次いで、仮想アドレスの次の９ビットを使用して、この第２レベルのテーブル３２にインデックスを付け、第３レベルのテーブル３６の開始へのポインタ３４を識別する。このプロセスは、仮想アドレスの連続する９ビット部分をとり続けて、第４レベルのテーブル３８、第５レベルの変換テーブル４０、および第６レベルの変換テーブル４２にインデックスを付ける。第６レベルのテーブル４２に最終的なインデックス操作が行われるとき、識別されたエントリ４４は、変換すべき仮想アドレスに対応する物理アドレスの最上位の５２ビットを格納し、仮想アドレスの最下位の１２ビットを使用して、生成される物理アドレスの最下位の１２ビットが形成される。仮想アドレスの最下位の１２ビットは、変換されないので、これは、実行された変換の粒度、したがって、変換が行われる仮想メモリおよび物理メモリのページサイズに対応する。この場合、物理メモリのページのページサイズ、および仮想メモリのページのページサイズは４ｋＢである。最も次数の高いページテーブルは、総メモリアドレス空間のサイズ全体に整合するマッピングを行うために、サイズがより小さくなる可能性がある。
【００２１】
図２に示されたトップダウンページテーブルウォーク操作から回復される変換データは、変換ルックアサイドバッファ２０内にキャッシュされ、したがって、変換データが変換ルックアサイドバッファ２０内に存続しながら、その同じ仮想アドレスページへの別のメモリアクセスが行われる場合、別のページテーブルウォークを実行する必要がない。
【００２２】
また、第６のレベルテーブル４２のエントリ４４内に、連続ヒントデータ４６が存在する。このヒントデータは、仮想メモリの連続ページに対応する物理メモリのページも、６４ｋＢのブロック中の物理メモリ内に連続して配置されているかどうかを示す。連続して配置されている場合、実行されたこの変換に対応する変換ルックアサイドバッファ２０にキャッシュして戻されるデータにマークを付けて、関係する変換データが１６個の連続仮想ページにあてはまることを示すことができる。これにより、変換ルックアサイドバッファ２０内の格納スペースが節約される。
【００２３】
図３に、物理メモリアドレスのページ、仮想メモリアドレスのページおよび変換テーブルのサイズがすべて、６４ｋＢであることをページサイズ変数Ｓが特定するときに実行される４レベルページテーブルトップダウンウォーク操作を概略的に示す。図３のトップダウンページテーブルウォーク操作は、変換テーブルのサイズが６４ｋＢである場合を除いて、図２に示され、上述した操作と原理的において同様である。ページテーブルのサイズをこのようにより大きくすることにより、より多くの数のポインタ４８を各変換テーブル内に格納し、したがって、各変換テーブルアクセスを用いて、仮想アドレスのうちのより多くのビットを変換することができるようになる。したがって、第２レベルのページテーブルアクセス操作、第３レベルのページテーブルアクセス操作、および第４レベルのページテーブルアクセス操作は、それぞれ、仮想アドレスのうちの１３ビットを消費することができ、したがって、フル６４ビット仮想−物理メモリアドレス変換を実行するために、必要なページテーブルウォークのレベルの数を４つのレベルまで低減させることができる。さらに、物理メモリアドレスのページおよび仮想メモリアドレスのページのサイズが増大すると、仮想アドレスの最下位の１６ビットはメモリページサイズの粒度であるので、仮想アドレスの最下位の１６ビットは変換されない結果となることが留意されよう。このように粒度が大きくなると、物理アドレスビットに変換する必要がある仮想アドレスビットの数が減少し、このことは、必要なページテーブルウォークのレベルの数を低減させるのに役立つ。
【００２４】
また、図２および図３には、短縮された開始点５０および５２が示されている。変換テーブルの特定のセット用の変換テーブルベース制御レジスタ２４は、仮想アドレスの最上位ビットエンドから始まる仮想アドレスの一部分が、すべて０、またはすべて１でなければならず、そうでない場合には、メモリ障害が起こることを示すことができる。この場合、仮想アドレスのそれらの最上位ビットは、メモリ管理ユニット１４によって、それらが固定値（すべて０、またはすべて１）であるように、チェックされるので、より上位のレベルのトップダウンページテーブルウォーク操作を実行する必要はない。これにより、６４ビットのフル仮想アドレス空間が必要とされない状況について、そのようなページテーブルウォーキング操作に関連付けられる待ち時間を低減する様式で、ページテーブルウォークのレベルの数が低減される。
【００２５】
図４は、メモリ管理ユニット１４の動作の１つのビューを概略的に示したフロー図である。ステップ５４において、メモリ管理ユニットは、変換のための仮想アドレスが受信されるのを待つ。そのような仮想アドレスが受信されると、ステップ５６は、変換テーブルベース制御レジスタ２４の制御下で変換テーブルベースレジスタ２２によって示された変換テーブルの現在アクティブな階層が、４ｋＢサイズのものであるか否かを判断する。これは、ページサイズ変数Ｓから読み取ることができる。そのように判断されたページサイズは、ステップ５８における４ｋＢ変換テーブルを介する最大６レベルページテーブルウォークか、またはステップ６０における６４ｋＢ変換テーブルを介する最大４レベルページテーブルウォークのいずれかを実行するように、メモリ管理ユニット１４を構成するのに役立つ。変換テーブルサイズおよびメモリページサイズにしたがって、必要なページテーブルにトップダウンページテーブルウォークが行われると、次いで、物理アドレスが生成される。
【００２６】
図４のフロー図は単純化されており、実際には、必要な変換情報が、変換ルックアサイドバッファ２０に既に格納されているかどうかを判断するような他の操作、ならびに仮想アドレスへのアクセス要求が、適切なレベルの許可を有しているか否かを判断するような他の操作を実行してもよいことが理解されよう。
【００２７】
図５に、複数の仮想マシン実行環境を動作させるシステムを概略的に示す。そのようなシステム内では、ハイパーバイザー６２は、第１のゲストオペレーティングシステム６４および第２のゲストオペレーティングシステム６６に仮想マシン実行環境を提供することを担当する。これらのゲストオペレーティングシステムの各々は、次いで、それぞれのアプリケーションプログラム６８、７０、７２、７４、７６を管理し、それらと協働する。ハイパーバイザー６２は、変換テーブルの１つのセットおよびそれ自体のページサイズ変数を用いて動作することができる。異なる仮想マシンは、任意の他の仮想マシンおよびハイパーバイザー６２のセットから独立して設定されたそれら自体のページサイズ変数を有することができる。したがって、図５の第２のゲストオペレーティングシステム６６は、このページサイズが、アプリケーションプログラム７２、７４、７６によって仮定されるので、４ｋＢページサイズをサポートするために必要なレガシーゲストオペレーティングシステムとすることができる。反対に、第１のゲストオペレーティングシステム６４およびハイパーバイザー６２は、６４ｋＢのメモリページサイズおよび変換テーブルサイズに対応するページサイズ変数を用いて動作することができる。これは、６４ビットアドレスによってアドレス指定可能であり得るアドレス空間のような、より大きいアドレス空間にはより好適なページサイズおよび変換テーブルサイズである。
【符号の説明】
【００２８】
２  データ処理システム
４  プロセッサ
６  メモリ
８  データ処理コア
１０  キャッシュメモリ
１２  ロードストアユニット
１４  メモリ管理ユニット
１６  変換テーブル
１８  アドレス指定されたページ
２０  変換ルックアサイドバッファ
２２  変換テーブルベースレジスタ
３０  開始アドレスへのポインタ
３２、３４、３６、３８、４０、４２  変換テーブル
４４  エントリ
４６  連続ヒントデータ
４８  ポインタ
５０、５２  開始点
６２  ハイパーバイザー
６４、６６  ゲストオペレーションシステム
６８、７０、７２、７４、７６  アプリケーションプログラム
【図１】
2013522748.tif 000003
【図２】
2013522748.tif 000004
【図３】
2013522748.tif 000005
【図４】
2013522748.tif 000006
【図５】
2013522748.tif 000007
【手続補正書】
【提出日】平成24年9月20日(2012.9.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
変換テーブルの階層に格納された変換データを使用して仮想メモリアドレスを物理メモリアドレスに変換するためのトップダウンページテーブルウォーク操作を実行するように構成されたメモリアドレス変換回路を備えるデータを処理するための装置であって、
Ｎが正の整数であり、前記変換データが、仮想メモリアドレスの２Ｎ個の連続バイトのページと、物理メモリアドレスの２Ｎ個の連続バイトの対応するページとの間の変換を特定し、
変換テーブルの前記階層は、完全な変換テーブルが前記物理メモリの１つのページ内に格納されるようなサイズの２Ｎ個の連続するバイトの変換テーブルを備え、
前記メモリアドレス変換回路が、現在の値Ｎを特定するページサイズ変数に応答して、選択されたサイズの物理メモリアドレスのページ、仮想メモリアドレスのページ、および変換テーブルを用いて動作するように前記メモリアドレス変換回路を制御し、
前記仮想アドレスの最上位ビットエンドから延びる前記仮想アドレスの所定の部分には、ページテーブルウォークを必要とせずに、前記物理アドレスの対応する一部分への固定された変換が与えられる、
装置。
【請求項２】
複数の仮想マシン実行環境を提供するプログラム命令を実行するように構成されたプロセッサを備え、前記複数の仮想マシン実行環境の各々に関する前記ページサイズ変数が、独立して設定されるように構成された、請求項１に記載の装置。
【請求項３】
前記仮想マシン実行環境の各々が、仮想マシン変換テーブルの階層に格納された仮想マシン変換データを有し、アドレス変換中における前記メモリアドレス変換回路による仮想マシン変換テーブルへの各アクセスは、物理アドレスを識別するために、前記メモリアドレス変換回路によるさらなるアドレス変換を必要とし、前記さらなるアドレス変換が、前記複数の仮想マシン実行環境に関する前記ページサイズ変数から独立して設定されるように構成されたページサイズ変数を使用する、請求項２に記載の装置。
【請求項４】
前記ページサイズ変数の異なる値は、２Ｘバイトの物理ページサイズおよび２Ｙバイトの物理ページサイズを特定し、ＸおよびＹは整数であり、前記変換データが、２ＸバイトのＹ／Ｘ個の物理ページが物理アドレス空間内に連続して配置されることを特定するための連続ヒントデータを含む、請求項１から請求項３のうちのいずれか１つに記載の装置。
【請求項５】
前記ページサイズ変数が、値Ｎを１２および１６のうちの一方となるように特定する、請求項１から請求項４のうちのいずれか１つに記載の装置。
【請求項６】
変換テーブルの階層に格納された変換データを使用して仮想メモリアドレスを物理メモリアドレスに変換するためのトップダウンページテーブルウォーク操作を実行するように構成されたメモリアドレス変換手段を備えるデータを処理するための装置であって、
前記変換データが、仮想メモリアドレスの２Ｎ個の連続バイトのページと、物理メモリアドレスの２Ｎ個の連続バイトの対応するページとの間の変換を特定し、Ｎが正の整数であり、
変換テーブルの前記階層は、完全な変換テーブルが前記物理メモリの１つのページ内に格納されるようなサイズの２Ｎ個の連続するバイトの変換テーブルを備え、
前記メモリアドレス変換手段が、現在の値Ｎを特定するページサイズ変数に応答して、選択されたサイズの物理メモリアドレスのページ、仮想メモリアドレスのページ、および変換テーブルを用いて動作するように前記メモリアドレス変換回路を制御し、
前記仮想アドレスの最上位ビットエンドから延びる前記仮想アドレスの所定の部分には、ページテーブルウォークを必要とせずに、前記物理アドレスの対応する一部分への固定された変換が与えられる、
装置。
【請求項７】
変換テーブルの階層に格納された変換データを使用して仮想メモリアドレスを物理メモリアドレスに変換するためのトップダウンページテーブルウォーク操作を実行するステップであって、
Ｎが正の整数であり、前記変換データが、仮想メモリアドレスの２Ｎ個の連続バイトのページと、物理メモリアドレスの２Ｎ個の連続バイトの対応するページとの間の変換を特定し、
変換テーブルの前記階層は、完全な変換テーブルが前記物理メモリの１つのページ内に格納されるようなサイズの２Ｎ個の連続するバイトの変換テーブルを備える、トップダウンページテーブルウォーク操作を実行するステップと、
現在の値Ｎを特定するページサイズ変数に応答して、選択されたサイズの物理メモリアドレスのページ、仮想メモリアドレスのページ、および変換テーブルを用いて動作するステップであって、
前記仮想アドレスの最上位ビットエンドから延びる前記仮想アドレスの所定の部分には、ページテーブルウォークを必要とせずに、前記物理アドレスの対応する一部分への固定された変換が与えられるステップと、
を含む、データを処理するための方法。
【請求項８】
複数の仮想マシン実行環境を提供するステップをさらに含み、前記ページサイズ変数が、前記複数の仮想マシン実行環境の各々に対して独立して設定される、請求項７に記載の方法。
【請求項９】
前記仮想マシン実行環境の各々が、仮想マシン変換テーブルの階層に格納された仮想マシン変換データを有し、アドレス変換中における前記メモリアドレス変換回路による仮想マシン変換テーブルへの各アクセスは、物理アドレスを識別するために、さらなるアドレス変換を必要とし、前記さらなるアドレス変換が、前記複数の仮想マシン実行環境に対して前記ページサイズ変数から独立して設定される、請求項８に記載の方法。
【請求項１０】
前記ページサイズ変数の異なる値が、２Ｘバイトの物理ページサイズおよび２Ｙバイトの物理ページサイズを特定し、ＸおよびＹは整数であり、前記変換データは、２ＸバイトのＹ／Ｘ個の物理ページが物理アドレス空間内に連続して配置されることを特定するための連続ヒントデータを含む、請求項７から請求項９のうちのいずれか１つに記載の方法。
【請求項１１】
前記ページサイズ変数が、値Ｎを１２および１６のうちの一方となるように特定する、請求項７から請求項１０のいずれか１つに記載の方法。
[その他]出願当初請求項５・１２を削除し、以降の請求の項数を繰り上げ、引用関係を整理した。また、出願当初請求項１・７・８（新請求項１・６・７）を補正した。
【国際調査報告】
2013522748.tif 000008
2013522748.tif 000009