(57)【要約】  第１のモードまたは第２のモードで動作する処理回路（４）を含むデータ処理システム（２）。アクセス制御ビット（４０，４２）を含むページテーブルデータ（３０）は、メモリページに対するメモリアクセスのための許可を制御するために使用される。第１のモードでは、アクセス制御ビットは、冗長エンコーディングの少なくとも１つのインスタンスを含む。第２のモードでは、冗長エンコーディングは、アクセス制御ビットエンコーディング空間のより効率的な使用を提供するために取除かれる。
2013533567.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
データ処理オペレーションを実施するプログラム命令に応答し、複数のモードで動作するように構成された処理回路と、
前記処理回路およびメモリに結合し、ページテーブルデータに基づいて前記メモリ内に格納されたデータ値に対するアクセス許可を制御するように構成されたメモリ管理回路とを備え、
前記メモリは、複数のメモリページに分割されたメモリアドレス空間を有し、前記ページテーブルデータは、それぞれのメモリページ用のアクセス許可を規定する、前記複数のメモリページのそれぞれ用の複数のアクセス制御ビットを含み、
前記処理回路が、アクセス許可をエンコードするために所定の数のアクセス制御ビットを使用する前記複数のモードの第１のモードにあるとき、前記メモリ管理回路は、前記アクセス制御ビットの複数の異なる組合せが、アクセス許可の同じセットを提供する冗長エンコーディングの少なくとも１つのインスタンスに応答し、
前記処理回路が、アクセス許可をエンコードするために前記所定の数のアクセス制御ビットを使用する前記複数のモードの第２のモードにあるとき、前記メモリ管理回路は、非冗長エンコーディングにおいてアクセス許可の複数の異なるセットを提供するアクセス制御ビットの前記複数の異なる組合せに応答する装置。
【請求項２】
アクセス許可の前記複数の異なるセットは、前記複数のモードの前記第１のモードの動作と前記複数のモードの前記第２のモードの動作との間で互換性がある、アクセス制御ビット値のセットを提供するアクセス許可の前記同じセットを含む請求項１に記載の装置。
【請求項３】
前記モードの前記第１のモードにおいて、前記アクセス許可は、メモリページ内に格納されたデータ値が、前記メモリページ内の前記データ値が実行可能であるために読取り可能であることを指定しなければならない請求項１および２のいずれか１項に記載の装置。
【請求項４】
前記モードの前記第２のモードにおいて、前記アクセス許可は、メモリページ内に格納されたデータ値が、前記メモリページ内の前記データ値が実行可能であるために読取り可能であることを指定する必要がなく、それにより、前記データ値は、データとして読取られるのではなく、命令として実行されることができる請求項３に記載の装置。
【請求項５】
前記処理回路は、前記複数のモードのそれぞれのモード内で複数の例外レベルで動作するように構成され、前記複数の例外レベルは、ユーザレベルおよび特権レベルを含み、前記特権レベルは、装置のリソースに対してより多くのアクセスを提供する請求項１から４項のいずれか１項に記載の装置。
【請求項６】
前記アクセス制御ビットの第１のアクセス制御ビットは、前記処理回路が前記複数のモードの前記第１のモードにあるとき、前記処理回路が前記ユーザレベルと前記特権レベルの両方にあるときに、対応するメモリページからの命令の実行を防止するように前記メモリ管理回路を選択的に制御する請求項５に記載の装置。
【請求項７】
前記アクセス制御ビットの第１のアクセス制御ビットは、前記処理回路が前記複数のモードの前記第２のモードにあるとき、前記処理回路が前記特権レベルではなく前記ユーザレベルにあるときに、対応するメモリページからの命令の実行を防止するように前記メモリ管理回路を選択的に制御する請求項６に記載の装置。
【請求項８】
前記アクセス制御ビットの第２のアクセス制御ビットは、前記処理回路が前記複数のモードの前記第１のモードと前記複数のモードの前記第２のモードの両方にあるとき、前記処理回路が前記特権レベルにあるときに、対応するメモリページからの命令の実行を防止するように前記メモリ管理回路を選択的に制御する請求項６および７のいずれか１項に記載の装置。
【請求項９】
前記処理回路がユーザレベルで動作するときのメモリページについての前記アクセス制御ビットの少なくとも一部の組合せについて、前記メモリ管理回路は、前記メモリページからの命令の実行を許可するが、前記メモリページに対する読取りアクセスおよび書込みアクセスを許可しない請求項４または請求項５に記載の装置。
【請求項１０】
前記アクセス制御ビットがメモリページに対する書込みアクセスを提供するとき、前記メモリ管理回路は、前記アクセス制御ビットによって指定されるいずれの実行許可に係らず、前記メモリページから読取られる命令の実行を防止する実行制御オーバライドパラメータに応答する請求項１から９のいずれか１項に記載の装置。
【請求項１１】
前記複数のモードの前記第１のモードで動作するとき、前記処理回路は、第１の命令セットからのプログラム命令に応答し、前記複数のモードの前記第２のモードで動作するとき、前記処理回路は、第２の命令セットからのプログラム命令に応答する請求項１から１０のいずれか１項に記載の装置。
【請求項１２】
データを処理するための装置であって、
プログラム命令に応答しデータ処理オペレーションを実施するための処理手段であって、複数のモードで動作するように構成される、処理手段と、
前記処理手段およびメモリに結合し、ページテーブルデータに基づいて前記メモリ内に格納されたデータ値に対するアクセス許可を制御するためのメモリ管理手段とを備え、
前記メモリは、複数のメモリページに分割されたメモリアドレス空間を有し、前記ページテーブルデータは、それぞれのメモリページ用のアクセス許可を規定する、前記複数のメモリページのそれぞれ用の複数のアクセス制御ビットを含み、
前記処理手段が、アクセス許可をエンコードするために所定の数のアクセス制御ビットを使用する前記複数のモードの第１のモードにあるとき、前記メモリ管理手段は、前記アクセス制御ビットの複数の異なる組合せが、アクセス許可の同じセットを提供する冗長エンコーディングの少なくとも１つのインスタンスに応答し、
前記処理手段が、アクセス許可をエンコードするために前記所定の数のアクセス制御ビットを使用する前記複数のモードの第２のモードにあるとき、前記メモリ管理手段は、非冗長エンコーディングにおいてアクセス許可の複数の異なるセットを提供するためにアクセス制御ビットの前記複数の異なる組合せに応答する装置。
【請求項１３】
データを処理する方法であって、
プログラム命令に応答して、複数のモードで動作するように構成される処理回路によってデータ処理オペレーションを実施するステップと、
ページテーブルデータに基づいてメモリ内に格納されたデータ値に対するアクセス許可を制御するステップとを含み、
前記メモリは、複数のメモリページに分割されたメモリアドレス空間を有し、前記ページテーブルデータは、それぞれのメモリページ用のアクセス許可を規定する、前記複数のメモリページのそれぞれ用の複数のアクセス制御ビットを含み、
前記処理回路が、アクセス許可をエンコードするために所定の数のアクセス制御ビットを使用する前記複数のモードの第１のモードにあるとき、前記アクセス制御ビットは、前記アクセス制御ビットの複数の異なる組合せが、アクセス許可の同じセットを提供する冗長エンコーディングの少なくとも１つのインスタンスを提供し、
前記処理回路が、アクセス許可をエンコードするために前記所定の数のアクセス制御ビットを使用する前記複数のモードの第２のモードにあるとき、前記アクセス制御ビットの前記複数の異なる組合せは、非冗長エンコーディングにおいてアクセス許可の複数の異なるセットを提供する方法。
【請求項１４】
アクセス許可の前記複数の異なるセットは、前記複数のモードの前記第１のモードの動作と前記複数のモードの前記第２のモードの動作との間で互換性がある、アクセス制御ビット値のセットを提供するアクセス許可の前記同じセットを含む請求項１３に記載の方法。
【請求項１５】
前記モードの前記第１のモードにおいて、前記アクセス許可は、メモリページ内に格納されたデータ値が、前記メモリページ内の前記データ値が実行可能であるために読取り可能であることを指定しなければならない請求項１３および１４のいずれか１項に記載の方法。
【請求項１６】
前記モードの前記第２のモードにおいて、前記アクセス許可は、メモリページ内に格納されたデータ値が、前記メモリページ内の前記データ値が実行可能であるために読取り可能であることを指定する必要がなく、それにより、前記データ値は、データとして読取られるのではなく、命令として実行されることができる請求項１５に記載の方法。
【請求項１７】
前記処理回路は、前記複数のモードのそれぞれのモード内で複数の例外レベルで動作するように構成され、前記複数の例外レベルは、ユーザレベルおよび特権レベルを含み、前記特権レベルは、方法を実施する装置のリソースに対してより多くのアクセスを提供する請求項１３から１６項のいずれか１項に記載の方法。
【請求項１８】
前記アクセス制御ビットの第１のアクセス制御ビットは、前記処理回路が前記複数のモードの前記第１のモードにあるとき、前記処理回路が前記ユーザレベルと前記特権レベルの両方にあるときに、対応するメモリページからの命令の実行の選択的な防止を制御する請求項１７に記載の方法。
【請求項１９】
前記アクセス制御ビットの第１のアクセス制御ビットは、前記処理回路が前記複数のモードの前記第２のモードにあるとき、前記処理回路が前記特権レベルではなく前記ユーザレベルにあるときに、対応するメモリページからの命令の実行の選択的な防止を制御する請求項１８に記載の方法。
【請求項２０】
前記アクセス制御ビットの第２のアクセス制御ビットは、前記処理回路が前記複数のモードの前記第１のモードと前記複数のモードの前記第２のモードの両方にあるとき、前記処理回路が前記特権レベルにあるときに、対応するメモリページからの命令の実行を防止するようにメモリ管理回路を選択的に制御する請求項１８および１９のいずれか１項に記載の方法。
【請求項２１】
前記処理回路がユーザレベルで動作するときのメモリページについての前記アクセス制御ビットの少なくとも一部の組合せについて、前記メモリページからの命令の実行は許可されるが、前記メモリページに対する読取りアクセスおよび書込みアクセスは許可されない請求項１６または請求項１７に記載の方法。
【請求項２２】
前記アクセス制御ビットがメモリページに対する書込みアクセスを提供するとき、実行制御オーバライドパラメータは、前記アクセス制御ビットによって指定されるいずれの実行許可に係らず、前記メモリページから読取られる命令の実行の防止を制御するために役立つ請求項１３から２１のいずれか１項に記載の方法。
【請求項２３】
前記複数のモードの前記第１のモードで動作するとき、前記処理回路は、第１の命令セットからのプログラム命令に応答し、前記複数のモードの前記第２のモードで動作するとき、前記処理回路は、第２の命令セットからのプログラム命令に応答する請求項１３から２２のいずれか１項に記載の方法。
【請求項２４】
請求項１３から２３のいずれか１項に記載の方法を実施するようにコンピュータを制御するコンピュータプログラムを含む仮想機械。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より詳細には、本発明は、データ処理システムのメモリアドレス空間内でメモリページに対するアクセス許可の制御の分野に関する。
【背景技術】
【０００２】
メモリのページ（連続領域）に対するアクセス許可を制御するためにページテーブルデータに応答するメモリ管理ユニットを有するデータ処理システムを設けることが知られている。例として、特定のメモリページが、特権例外レベルでの読取りおよび書込みのためにアクセス可能であるとしてマークを付けられるが、ユーザ例外レベルでの読取りアクセスだけのためにマークを付けられることができる。読取りおよび書込みアクセスに加えて、に指定されることができる、さらなるアクセス許可は、メモリページから読取られたプログラム命令を実行することができることである。
【０００３】
所与のメモリページに対して読取りアクセスが許可されるか、書込みアクセスが許可されるか、また実行アクセスが許可されるかを、特権レベルおよびユーザレベルのそれぞれについて独立にかつ直交して指定するアクセス制御ビットを含むページテーブルデータを提供することが、ＰｏｗｅｒＰＣプロセッサアーキテクチャから知られている。これは、１メモリページ当たり６つのアクセス制御ビットを消費する。
【０００４】
データ処理システム内で使用されるメモリの量が、より大きくなり、ページテーブルデータの複数のセットを必要とする仮想化などの技法の出現と共に、ページテーブルデータのサイズは、より重大な要因になってきた。使用されるアクセス制御ビットの数を減らすことによって、ページテーブルデータを格納するための必要とされるメモリ空間の量を低減することが有利である。この点に関する別の要因は、異なる命令セットを使用して異なる動作モードをサポートする欲求である。ページテーブルデータによって消費されるメモリ空間の量を低減するために、新たに導入される命令セットを使用するモードなどの新たに導入されるモードによって使用されるページテーブルデータは、先行するページテーブルデータおよび先行する命令セットと後方互換性があるべきであることが所望される。
【発明の概要】
【課題を解決するための手段】
【０００５】
一態様から見ると、本発明は、データを処理するための装置を提供し、装置は、
データ処理オペレーションを実施するプログラム命令に応答し、複数のモードで動作するように構成された処理回路と、
前記処理回路およびメモリに結合し、ページテーブルデータに基づいて前記メモリ内に格納されたデータ値に対するアクセス許可を制御するように構成されたメモリ管理回路とを備え、
前記メモリは、複数のメモリページに分割されたメモリアドレス空間を有し、前記ページテーブルデータは、それぞれのメモリページ用のアクセス許可を規定する、前記複数のメモリページのそれぞれ用の複数のアクセス制御ビットを含み、
前記処理回路が、アクセス許可をエンコードするために所定の数のアクセス制御ビットを使用する前記複数のモードの第１のモードにあるとき、前記メモリ管理回路は、前記アクセス制御ビットの複数の異なる組合せが、アクセス許可の同じセットを提供する冗長エンコーディングの少なくとも１つのインスタンスに応答し、
前記処理回路が、アクセス許可をエンコードするために前記所定の数のアクセス制御ビットを使用する前記複数のモードの第２のモードにあるとき、前記メモリ管理ユニットは、非冗長エンコーディングにおいてアクセス許可の複数の異なるセットを提供するアクセス制御ビットの複数の異なる組合せに応答する。
【０００６】
本技法は、第１の動作モードで使用されるアクセス制御ビットが、冗長エンコーディングの１つまたは複数のインスタンスを含むことを認識する。第２の動作モードでは、この冗長エンコーディングに対応するアクセス制御ビットの異なる組合せが、アクセス許可の複数の異なるセットを提供するために使用されることができ、それにより、アクセス制御ビットエンコーディング空間をより効率的に利用する。第１および第２のモードは、アクセス許可をエンコードするために同じ数のアクセス制御ビットを使用する。実際には、たとえばユーザ例外レベルと特権例外レベルの両方において、読取りアクセス、書込みアクセス、および実行アクセスの完全に直交しかつ独立の制御を設けることは、現実には必要とされないアクセス許可についての複数の可能性、たとえばユーザ例外レベルで書込み可能であったが、特権例外レベルで書込み可能でなかったメモリページをもたらすことを、本技法は認識する。異なるアクセス許可を提供し、アクセス制御ビットをより効率的に利用するために、第１の動作モード内での冗長エンコーディングが、第２の動作モードで使用されることができることを認識することによって、本技法はさらに進む。
【０００７】
有利な後方互換性を提供する方法として、第２の動作モードで提供されるアクセス許可の複数の異なるセットは、第１のモードにおける冗長エンコーディングに対応するアクセス許可の同じセットを含むことができ、それにより、同じページテーブルデータが、第１の動作モードと第２の動作モードで使用されることを可能にする。
【０００８】
第１のモード動作では、アクセス許可の従来のビューは、メモリページ内に格納されたデータ値が、それらのデータ値が実行可能であるために読取り可能であることを、アクセス許可が指定しなければならないような制御の装備をもたらす。しかし、仮想化技法のより広範な使用の出現によって、メモリページが実行可能であり、一方、データとして読取り可能でないことは、第２の動作モードで有用となりうる。例として、こうした配置構成は、プログラム命令が、未変換命令をデータとして読取るいずれの試みもトラップされ、仮想化をマスクする適切な処置がとられるように、仮想化システム内で変換されるときに有用である可能性がある。
【０００９】
異なる動作モードのそれぞれの動作モード内で、ユーザレベルおよび特権レベルを含む複数の例外レベルも設けられることができ、特権レベルは、装置のリソースに対してより多くのアクセスを提供する（たとえば、特権レベルは、ある制御または構成が変更されることを可能にする）。
【００１０】
アクセス制御ビットは、複数の異なる意味を提供し、それらの意味を異なる方法でエンコードするために使用されうることが理解されることになるが、いくつかの実施形態では、アクセス制御ビットの第１のアクセス制御ビットは、処理回路が複数のモードの第１のモードにあるとき、処理回路がユーザレベルと特権レベルの両方にあるときに、対応するメモリページからの命令の実行を防止するようにメモリ管理回路を選択的に制御する。したがって、この第１のアクセス制御ビットは、第１のモードで動作するとき、「ｅｘｅｃｕｔｅ  ｎｅｖｅｒ」フラグとして効果的に役立つ。
【００１１】
この同じ第１のアクセス制御ビットは、第２の動作モード内で異なる意味で、すなわち、処理回路がユーザレベルにあるときに、対応するメモリページからの命令の実行を防止するようにメモリ管理回路を選択的に制御するが、処理回路が特権レベルにあるときにそのメモリページからの命令を処理回路が実行できるか否かを制御しないために使用されうる。したがって、この状況では、第２のモードで動作するときの同じ第１のアクセス制御ビットは、「ｕｓｅｒ  ｅｘｅｃｕｔｅ  ｎｅｖｅｒ」ビットとして役立つ。
【００１２】
アクセス制御ビットの第２のアクセス制御ビットは、処理回路が特権レベルにあり、処理回路が第１の動作モードまたは第２のモードのいずれかにあるときに、対応するメモリページからの命令の実行を防止するようにメモリ管理回路を選択的に制御するために使用されることができる。したがって、アクセス制御ビットのこの第２のアクセス制御ビットは、「ｐｒｉｖｉｌｅｇｅ  ｅｘｅｃｕｔｅ  ｎｅｖｅｒ」ビットとして役立つ。
【００１３】
処理回路がユーザレベルで動作するときのメモリページについてのアクセス制御ビットの少なくとも一部の組合せについて、メモリ管理回路は、そのメモリページからの命令の実行を許可するが、メモリページに対する読取りアクセスおよび書込みアクセスを許可しないことは、いくつかの実施形態では以外にも有用である。
【００１４】
プログラミングにおいてエラーを起こし易いセキュリティを確実な方法で強化するために、メモリ管理回路は、メモリページから読取られる命令の実行を、そのメモリページ用のアクセス制御ビットがそのメモリページに対する書込みアクセスを提供するときのそのメモリページ用のアクセス制御ビットによって指定されるいずれの実行許可に係らず、防止する実行制御オーバライドパラメータに応答することができる。書込みアクセスと実行アクセスの両方を同時に装備することは、潜在的なセキュリティ脆弱性であり、したがって、改変を受け易いメモリページの実行を防止することは、セキュリティ強化である。実行制御オーバライドパラメータは、こうした制御が、単純な方法でかつページテーブルデータ自体（大きく、複雑で、変化する場合がある）と独立に設けられることを可能にする。
【００１５】
異なる動作モードは、種々の異なる形態をとりうるが、少なくともいくつかの実施形態では、第１の動作モードは、第１の命令セットからのプログラム命令に応答する処理回路に対応し、第２の動作モードは、第２の命令セットからのプログラム命令に応答する処理回路に対応する。
【００１６】
さらなる態様から見ると、本発明は、データを処理するための装置を提供し、装置は、
プログラム命令に応答しデータ処理オペレーションを実施するための処理手段であって、複数のモードで動作するように構成される、処理手段と、
前記処理手段およびメモリに結合し、ページテーブルデータに基づいて前記メモリ内に格納されたデータ値に対するアクセス許可を制御するためのメモリ管理手段とを備え、
前記メモリは、複数のメモリページに分割されたメモリアドレス空間を有し、前記ページテーブルデータは、それぞれのメモリページ用のアクセス許可を規定する、前記複数のメモリページのそれぞれ用の複数のアクセス制御ビットを含み、
前記処理手段が、アクセス許可をエンコードするために所定の数のアクセス制御ビットを使用する前記複数のモードの第１のモードにあるとき、前記メモリ管理手段は、前記アクセス制御ビットの複数の異なる組合せが、アクセス許可の同じセットを提供する冗長エンコーディングの少なくとも１つのインスタンスに応答し、
前記処理手段が、アクセス許可をエンコードするために前記所定の数のアクセス制御ビットを使用する前記複数のモードの第２のモードにあるとき、前記メモリ管理手段は、非冗長エンコーディングにおいてアクセス許可の複数の異なるセットを提供するためにアクセス制御ビットの前記複数の異なる組合せに応答する。
【００１７】
さらなる態様から見ると、本発明は、データを処理する方法を提供し、方法は、
プログラム命令に応答して、複数のモードで動作するように構成される処理回路によってデータ処理オペレーションを実施するステップと、
ページテーブルデータに基づいて前記メモリ内に格納されたデータ値に対するアクセス許可を制御するステップとを含み、
前記メモリは、複数のメモリページに分割されたメモリアドレス空間を有し、前記ページテーブルデータは、それぞれのメモリページ用のアクセス許可を規定する、前記複数のメモリページのそれぞれ用の複数のアクセス制御ビットを含み、
前記処理回路が、アクセス許可をエンコードするために所定の数のアクセス制御ビットを使用する前記複数のモードの第１のモードにあるとき、前記アクセス制御ビットは、前記アクセス制御ビットの複数の異なる組合せが、アクセス許可の同じセットを提供する冗長エンコーディングの少なくとも１つのインスタンスを提供し、
前記処理回路が、アクセス許可をエンコードするために前記所定の数のアクセス制御ビットを使用する前記複数のモードの第２のモードにあるとき、前記アクセス制御ビットの前記複数の異なる組合せは、非冗長エンコーディングにおいてアクセス許可の複数の異なるセットを提供する。
【００１８】
本発明の実施形態はまた、上述した技法を実施するための実行環境を提供するための、コンピュータプログラムによって制御される汎用コンピュータを備える仮想機械の形態で提供されることができる。
【００１９】
本発明の実施形態は、ここで、添付図面を参照して例としてだけ述べられる。
【図面の簡単な説明】
【００２０】
【図１】メモリアクセスを制御するためのページテーブルデータに応答するメモリ管理ユニットを含むデータ処理システムを概略的に示す図である。
【図２】第１の動作モードと第２の動作モードに設けられる、ページテーブルデータのアクセス制御ビットとアクセス許可との間のマッピングを示すテーブルである。
【図３】アクセス許可をデコードするメモリ管理ユニットのアクションを概略的に示すフロー図である。
【図４】上述した技法を実装するための仮想機械環境を概略的に示す図である。
【発明を実施するための形態】
【００２１】
図１は、メモリ管理ユニット６およびキャッシュメモリ８を介して主メモリ１０に結合された、プロセッサコアの形態の処理回路４を含むデータ処理システム２を概略的に示す。処理回路４は、命令パイプライン２２に沿って渡されるプログラム命令に応答して命令デコーダ２０によって生成される制御信号によって制御される、汎用レジスタバンク１２、マルチプレクサ１４、シフター１６、および加算器１８を備えるデータ経路を含む。命令デコーダ２０は、第１の命令セットと第２の命令セットの両方からの命令をデコードすることができる。モードレジスタ２４は、命令デコーダ２０を制御するモード値を格納して、命令パイプライン２２からのプログラム命令を、第１の命令セットからの命令（ＩＳＡ０）または第２の命令セットからの命令（ＩＳＡ１）としてデコードする。
【００２２】
処理回路４は、２つの異なる命令セットの使用に対応する上述した２つの異なるモードで動作すると共に、これらのモードのそれぞれのモード内で複数の異なる例外レベル、すなわちユーザレベルと特権レベルで動作することができる。例外レベルレジスタ２６は、処理回路４の目下の例外レベルを規定するデータを格納する。例外レベルレジスタ２６で示される目下の例外レベルに基づいて、処理回路４は、データ処理システム２内の異なるリソースにアクセスすることができる。当業者が情通しているように、特権レベルの場合、ユーザレベルの場合よりリソースに対するより多くのアクセスが、通常、与えられる。たとえば、いくつかの構成パラメータまたは命令は、特権レベルにおけるチャージングまたは実行について利用可能である可能性があるだけであり、ユーザレベルにおいて利用可能でない可能性がある。
【００２３】
メモリアクセスを生成するときの処理回路４は、メモリ管理ユニット６によって物理アドレスＰＡに変換される仮想アドレスＶＡを生成する。メモリ管理ユニット６はまた、主メモリ１０のメモリアドレス空間がその中に分割されるメモリページに関連するアクセス許可を管理の責任もある。メモリ管理ユニット６内の変換ルックアサイドバッファ２８は、主メモリ１０内に格納されたページテーブルデータ３０のキャッシュされたコピーを使用して、大部分の仮想−物理アドレス変換を実施する。このページテーブルデータは、仮想−物理アドレス変換を指定すると共に、アクセス制御ビットを使用してアクセス許可を指定する。
【００２４】
メモリアクセスが、処理回路４からメモリ管理ユニット６によって受信されると、目下のモードおよび目下の例外レベルが、アクセス許可に対してチェックされて、メモリアクセスが公認されるか否かが判定される。メモリアクセスが公認されるか否かはまた、メモリアクセスが、読取りメモリアクセスであるか、書込みメモリアクセスであるか、または関係するメモリページから実行用の命令をフェッチしようとするアクセスであるかに依存することになる。
【００２５】
許可されるメモリアクセスについてメモリ管理ユニット６から出力される変換済み物理アドレスＰＡは、キャッシュメモリ８に渡される。キャッシュメモリ８が、関係するデータを格納している場合、そのメモリアクセスは、キャッシュメモリ８によってサービスされる。キャッシュメモリ８が、関係するデータを格納していない場合、メモリアクセスは、主メモリ１０に進む。
【００２６】
図１に示すように、主メモリは、複数のメモリページ３４、３６、３８に分割されたメモリアドレス空間３２を含み、複数のメモリページ３４、３６、３８は、異なるサイズおよびそれらに関連する異なるアクセス許可を有する。メモリアドレス空間３２内には、ページテーブルデータ３０も含まれ、ページテーブルデータ３０は、仮想−物理アドレスマッピングを規定するデータ、ならびに、処理回路の動作モードおよび処理回路４の例外レベルに応じてアクセス許可を制御するためのアクセス制御ビットを格納する。
【００２７】
図２は、所与のメモリページについてページテーブルデータ３０内に格納されたセクセツ制御ビットと、第１の動作モードおよび第２の動作モードならびにそれらの動作モード内の異なる例外レベルにおいて、これらのアクセス制御ビットによって提供されるアクセス許可との間の関係を示す表である。見てわかるように、この例示的な実施形態では、４つのアクセス制御ビットが存在する。
【００２８】
第１のアクセス制御ビット４０は、処理回路４が第１の命令セットを実行する第１のモードにあるときにユーザレベルと特権レベルの両方で適用可能な（ｅｘｅｃｕｔｅ  ｎｅｖｅｒ）非実行制御ビットに対応する。処理回路４が第２の命令セットを実行するときの第２のモードでは、第１のアクセス制御ビット４０は、ユーザレベルでそのメモリページについて実行が許可されるか否かを指定し、また、特権レベルにあるときにそのメモリページから実行が許可されるか否かを制御できない、（ｕｓｅｒ  ｅｘｅｃｕｔｅ  ｎｅｖｅｒ）ユーザ非実行制御ビットとして役立つ。
【００２９】
第２のアクセス制御ビット４２は、（ｐｒｉｖｉｌｅｇｅ  ｅｘｅｃｕｔｅ  ｎｅｖｅｒ）特権実行非制御ビットとして役立つ。第２の動作モードでは、ｐｒｉｖｉｌｅｇｅ  ｅｘｅｃｕｔｅ  ｎｅｖｅｒ制御ビットである第２のアクセス制御ビット４２およびｕｓｅｒ  ｅｘｅｃｕｔｅ  ｎｅｖｅｒ制御ビットである第１のアクセス制御ビット４０は、独立にかつ直交して動作する。第１の動作モードでは、ｅｘｅｃｕｔｅ  ｎｅｖｅｒ制御ビットとして働く第１のアクセス制御ビット４０は、ｐｒｉｖｉｌｅｇｅ  ｅｘｅｃｕｔｅ  ｎｅｖｅｒ制御ビットとして役立つ第２のアクセス制御ビット４２の指示をオーバライドすることができる。そのため、メモリページが、実行されない(never execute)メモリページであることを第１のアクセス制御ビット４０が指示する場合、実行許可は、特権レベル実行が許可されることをｐｒｉｖｉｌｅｇｅ  ｅｘｅｃｕｔｅ  ｎｅｖｅｒ制御ビット４２が指示しても、そのメモリページ内で許可されないことになる。
【００３０】
第１の動作モードにあるときに第２のアクセス制御ビット４２の指示をオーバライドする第１のアクセス制御ビット４０のこの挙動は、図２でマークを付けられるように第１の動作モード内で冗長エンコーディングをもたらす。そのため、アクセス制御ビットの異なる組合せは、アクセス制御ビットのエンコーディングビット空間の消費に対応する、第１の動作モード内の同じアクセス許可をもたらす。
【００３１】
第２の動作モードでは、アクセス制御ビットは別様にデコードされ、この冗長性が取除かれて、アクセス制御ビットの異なる組合せによって与えられるアクセス許可がアクセス許可の異なる組合せに対応する非冗長エンコーディングが提供される。第２のモードで与えられるアクセス許可の組合せの１つは、第１のモードで与えられるアクセス許可の単一の組合せと同じであり、それにより、後方互換性が促進される。アクセス許可のこの同じセットは、図２において「＃」でマークを付けられる。
【００３２】
処理回路４の第１の動作モード内で、メモリページは、実行可能であるために読取り可能でなければならない。この条件は、処理回路４の第２の動作モードで適用されない。図２において「＊」でマーク付けされた、実行のみ用の(execute only)アクセス許可であるアクセス許可は、第１の動作モード内でのエンコーディングによって提供されないアクセス許可の形態に対応する。
【００３３】
図２に示すように、アクセス制御ビットのエンコーディングの上半分は、アクセス制御ビットの少なくとも一部の組合せについて書込みアクセスを提供し、一方、表の下半分では、書込みアクセスが許可されない。書込みアクセスが利用可能である時に提供される実行許可は、図１に示すメモリ管理ユニット６の制御レジスタ４４内に格納された実行制御オーバライドパラメータによってオーバライドされることができる。この実行制御オーバライドパラメータは、特権レベルソフトウェア制御下で書込まれることができる、または、さらに高いセキュリティが所望される場合には、ハードウェア制御下で設定されることができる。実行制御オーバライドパラメータが設定されると、書込み可能であるメモリページについての実行許可は、実行許可が許容されることを第１のアクセス制御ビット４０および／または第２のアクセス制御ビット４２が指示しても、許可されないことになる。
【００３４】
図３は、メモリアクセスが受信されるときにアクセス許可をデコードするときのメモリ管理ユニット６のアクションを示すフロー図である。ステップ４６にて、メモリ管理ユニット６は、メモリアクセスが受信されるのを待つ。ステップ４８にて、メモリアクセスのその仮想アドレスに対応するメモリページについてのアクセス制御ビットが読取られる。アクセス制御ビットのこうした読取りは、関係するメモリページが、最近アクセスされたか、または、別法として、当業者が情通するように、ページテーブルデータ３０を通してページテーブルウォークを必要とする場合、変換ルックアサイドバッファ２８内のルックアップによって実施されることができる。
【００３５】
ステップ５０にて、アクセス制御ビットは、処理回路の目下のモード（たとえば、処理回路が、第１の命令セットの命令を実行しているか、または、第２の命令セットの命令を実行しているか）ならびに目下の例外レベル（たとえば、処理回路が、ユーザレベルにあるか、または、特権レベルにあるか）に基づいてデコードされて、アクセス許可が与えられることが決定される。このデコーディングは、図２の表による。
【００３６】
ステップ５２にて、デコードされたアクセス許可が、試行されるメモリアクセスと比較され、試行されるメモリアクセスが、許可されるメモリアクセスであるか否かについての判定が行われる。メモリアクセスが許可されない場合、ステップ５４は、メモリアボート（abort）を生成する。メモリアクセスが許可される場合、ステップ５６は、受信された仮想アドレスに対応する物理アドレスを出力し、メモリアクセスは、適宜キャッシュメモリ８または主メモリ１０に渡るように許可される。
【００３７】
図４は、使用されることができる仮想機械実装態様を示す。先に述べた実施形態は、関係する技法をサポートする特定の処理ハードウェアを動作させるための装置および方法によって本発明を実装するが、ハードウェアデバイスのいわゆる仮想機械実装態様も可能である。これらの仮想機械実装態様は、仮想機械プログラム５１０をサポートするホストオペレーティングシステム５２０を実行するホストプロセッサ５３０上に実行される。通常、適度な速度で実行する仮想機械実装態様を提供するためによりパワフルなプロセッサが必要とされるが、こうした手法は、互換性または再使用のために別のプロセッサに固有のコードを実行するという欲求が存在するときなど、ある状況で正当化されることができる。仮想機械プログラム５１０は、アプリケーションプログラム５００にアプリケーションプログラムインタフェースを提供し、そのアプリケーションプログラムインタフェースは、仮想機械プログラム５１０によってモデル化されるデバイスである現実のハードウェアによって提供されることになるアプリケーションプログラムインタフェースと同じである。そのため、上述したメモリアクセスの制御を含むプログラム命令は、仮想機械ハードウェアとのその相互作用をモデル化するために、仮想機械プログラム５１０を使用してアプリケーションプログラム５００内から実行されることができる。
【符号の説明】
【００３８】
４０  第１のアクセス制御ビット
４２  第２のアクセス制御ビット
【図１】
2013533567.tif 000003
【図２】
2013533567.tif 000004
【図３】
2013533567.tif 000005
【図４】
2013533567.tif 000006
【国際調査報告】
2013533567.tif 000007
2013533567.tif 000008
2013533567.tif 000009