(57)【要約】【課題】メモリ保護ユニット（ＭＰＵ）（６０）と、メモリ保護ユニットに関連する複数の領域記述子６２を含むコンピュータ処理システムと方法の実施形態が提供される。【解決手段】領域記述子は、それぞれのメモリ領域に対するアドレスレンジと翻訳識別子値を含む。制御論理は、翻訳識別子制御インジケータが第１状態にあるか否か判定し、翻訳識別子制御インジケータが第１状態にある場合には、制御論理は、処理システムによって実行されている第１プロセスが処理システムによって実行されている第２プロセスに割当てられたメモリ領域にアクセスできるようにする。【選択図】図１
2013065296.tif 000002
【特許請求の範囲】
【請求項１】
メモリ保護ユニット（ＭＰＵ）と；
前記メモリ保護ユニットに関連する複数の領域記述子であって、前記領域記述子は、それぞれのメモリ領域に対するアドレスレンジと翻訳識別子値とを有することと；
翻訳識別子制御インジケータ（ＴＩＤＣＴＬ）と；
第１制御論理と
を有するコンピュータ処理システムであって、
前記第１制御論理は、前記翻訳識別子制御インジケータが第１状態にあるか否かを判定し、前記翻訳識別子制御インジケータが第１状態にある場合には、前記コンピュータ処理システムによって実行されている第１プロセスが、前記コンピュータ処理システムの第２プロセスに割当てられたメモリ領域にアクセスできるように動作可能である
ことを特徴とする、コンピュータ処理システム。
【請求項２】
前記第１制御論理は、前記翻訳識別子制御インジケータが第１状態にある場合には、複数の前記領域記述子の第２プロセスに対応する１つ以上の部分をマスキングする、
請求項１記載のコンピュータ処理システム。
【請求項３】
前記領域記述子のマスキングされた前記部分は、翻訳識別子値（ＴＩＤ）である、
請求項２記載のコンピュータ処理システム。
【請求項４】
前記コンピュータ処理システムはさらに、
領域グローバル化制御イネーブルインジケータ（ＲＧＣＥＮ）と；
プロセス識別子（ＰＩＤ）と；
第２制御論理とを有し、
前記第２制御論理は、前記領域グローバル化制御イネーブルインジケータが第１状態にあるか否かを判定するように動作可能であり、前記領域グローバル化制御イネーブルインジケータが第１状態にはない場合には、前記翻訳識別子制御インジケータ（ＴＩＤＣＴＬ）が前記第１状態にあるか否かに応じて前記第１プロセスが、前記第２プロセスに割当てられたメモリ領域にアクセスできるようにする、
請求項１記載のコンピュータ処理システム。
【請求項５】
前記領域記述子は、グローバル化インジケータが第１状態にあるときには、それぞれの領域記述子が他のプロセスによって利用され得るか否かを示す領域グローバル化制御インジケータ（ＲＧＣ）を有する、
請求項４記載のコンピュータ処理システム。
【請求項６】
前記コンピュータ処理システムはさらに、
制御レジスタ内のグローバル化ＰＩＤ（Ｇ＿ＰＩＤ）フィールドと；
第３制御論理と
を有し、
前記第３制御論理は、前記翻訳識別子制御インジケータが第１状態にあり、かつ第１プロセスのプロセス識別子（ＰＩＤ）値がグローバル化プロセス識別子Ｇ＿ＰＩＤフィールド内の値に一致するときには、翻訳識別子（ＴＩＤ）比較のためにグローバル化マスキングを使用するように動作可能である、
請求項１記載のコンピュータ処理システム。
【請求項７】
前記コンピュータ処理システムはさらに第４制御論理を有し、
前記第４制御論理は、前記翻訳識別子制御インジケータが第１状態にあり、かつ第１プロセスがスーパーバイザモードにあるときには、翻訳識別子（ＴＩＤ）比較のためにグローバル化マスキングを使用するように動作可能である、
請求項１記載のコンピュータ処理システム。
【請求項８】
前記コンピュータ処理システムはさらに、制御レジスタ内のメモリ保護ユニットイネーブルインジケータ（ＭＰＵＥＮ）を有し、
前記メモリ保護ユニットイネーブルインジケータが第１状態にあるときには、第１プロセスのアクセスアドレスが、複数の領域記述子の１つ以上におけるアドレスに比較されて一致が存在するか否かが判定される、
請求項１記載のコンピュータ処理システム。
【請求項９】
前記一致が検出されず、かつアクセスタイプがメモリ保護ユニット保護をバイパスするようにはイネーブルされないときには、例外条件が送信されてアクセスを試みる、
請求項８記載のコンピュータ処理システム。
【請求項１０】
メモリ保護ユニット（ＭＰＵ）と；
グローバル化プロセス識別子（Ｇ＿ＰＩＤ）フィールドを含む制御レジスタと；
メモリ保護ユニットに関連する複数の領域記述子であって、少なくとも１つの前記領域記述子が第１プロセスに割当てられていることと；
第１制御論理と
を有するコンピュータ処理システムであって、
前記第１制御論理は、前記第１プロセスに対するプロセス識別子（ＰＩＤ）がグローバル化プロセス識別子（Ｇ＿ＰＩＤ）フィールド内の値に一致するときには、前記第１プロセスが、第２プロセスのために割当てられたメモリ領域にアクセスできるように動作可能である、
コンピュータ処理システム。
【請求項１１】
前記コンピュータ処理システムはさらに、
翻訳識別子制御インジケータ（ＴＩＤＣＴＬ）と；
第２制御論理と
を有し、
前記第２制御論理は、前記翻訳識別子制御インジケータ（ＴＩＤＣＴＬ）が第１状態にあり、かつ第１プロセスがスーパーバイザモードにあるときには、前記第１プロセスと前記第２プロセスとに対する複数の領域記述子の、１つ以上における翻訳識別子値（ＴＩＤ）をマスキングするように動作可能である、
請求項１０記載のコンピュータ処理システム。
【請求項１２】
翻訳識別子制御インジケータ（ＴＩＤＣＴＬ）が第１状態にある場合には、前記第１制御論理は、領域記述子の第２プロセスに使用される部分をマスキングする、
請求項１０記載のコンピュータ処理システム。
【請求項１３】
前記領域記述子のマスキングされた部分は、翻訳識別子値（ＴＩＤ）である、
請求項１２記載のコンピュータ処理システム。
【請求項１４】
複数の領域記述子の１つ以上は、それぞれの領域記述子において定義されたメモリ領域が他のプロセスによって利用され得るか否かを示す領域グローバル化制御インジケータ（ＲＧＣ）を有する、
請求項１２記載のコンピュータ処理システム。
【請求項１５】
前記コンピュータ処理システムはさらに、
領域グローバル化制御イネーブルインジケータ（ＲＧＣＥＮ）を含む制御レジスタと；
第３制御論理と
を有し、
前記第３制御論理は、前記領域グローバル化制御イネーブルインジケータが第１状態にあるか否かを判定し、前記領域グローバル化制御イネーブルインジケータが前記第１状態にはない場合には、翻訳識別子制御インジケータ（ＴＩＤＣＴＬ）が第１状態にあるか否かに応じて、前記第１プロセスが、前記第２プロセスに割当てられたメモリ領域にアクセスできるように動作可能である、
請求項１４記載のコンピュータ処理システム。
【請求項１６】
前記第１制御論理はさらに、制御レジスタ内のメモリ保護ユニットイネーブルインジケータ（ＭＰＵＥＮ）を初期化し、前記メモリ保護ユニットイネーブルインジケータ（ＭＰＵＥＮ）が第１状態にあるときには、アクセスアドレスを、複数の領域記述子の１つ以上で指定されたアドレスレンジに比較して一致が存在するか否かを判定し；
一致が検出されず、かつアクセスタイプがメモリ保護ユニット保護をバイパスするようにはイネーブルされないときには、例外条件が送信されてアクセスを試みる、
請求項１４記載のコンピュータ処理システム。
【請求項１７】
コンピュータ処理システムにおけるメモリ保護ユニット（ＭＰＵ）の制御レジスタ内の、翻訳識別子制御インジケータ（ＴＩＤＣＴＬ）を初期化することと；
前記翻訳識別子制御インジケータ（ＴＩＤＣＴＬ）が第１状態にあるときには、第１プロセスと第２プロセスとに対するメモリ保護ユニットの複数の領域記述子の１つ以上において翻訳識別子比較をマスキングすることで、前記第１プロセスが、前記第２プロセスに割当てられたメモリ領域にアクセスできるようにすることと
を有する方法。
【請求項１８】
前記方法はさらに、制御レジスタ内の領域グローバル化制御イネーブルインジケータ（ＲＧＣＥＮ）を初期化することと；
前記領域グローバル化制御イネーブルインジケータ（ＲＧＣＥＮ）と前記翻訳識別子制御インジケータ（ＴＩＤＣＴＬ）とが両方とも指定された状態にあるときには、前記第２プロセスに対する領域記述子における領域グローバル化制御インジケータ（ＲＧＣ）が指定された状態にあるか否かに基づき、翻訳識別子のマスキングを実施することと
を有する、請求項１７記載の方法。
【請求項１９】
前記方法はさらに、制御レジスタ内のグローバル化プロセス識別子（Ｇ＿ＰＩＤ）を初期化することで、前記第２プロセスに対するプロセス識別子（ＰＩＤ）を指定することと；
制御レジスタ内の初期化メモリ保護ユニットイネーブルインジケータ（ＭＰＵＥＮ）を初期化して、メモリ保護ユニットイネーブルインジケータが第１状態にあるときには、アクセスアドレスを複数の領域記述子の１つ以上によって定義されたアドレスレンジに比較して、一致が存在するか否かを判定することと
を有する、請求項１７記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にデータ処理システム、より具体的には領域記述子グローバル化制御を有するメモリ管理ユニット（ＭＭＵ）に関する。
【背景技術】
【０００２】
幾つかの内蔵プロセッサが、多数の可変長メモリ領域に対して保護情報を提供する内部メモリ保護ユニット（ＭＰＵ）を実施する。アクセス保護は、命令フェッチとデータ読込／書出アクセスに基づき、これらのアクセスアドレスをメモリ保護ユニットＭＰＵの各エントリに比較して一致を判定（決定）することによって実行される。アクセスに対する記述子の一致は、アクセスアドレスが領域記述子によって定義されたアドレスレンジ内にあり、現在のプロセス識別子（ＰＩＤ）が領域記述子によって定義されたプログラム済み領域識別子に一致し、そして当該領域記述子に関連した許可がこのアクセスタイプを許すときに起こる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第６８１０４７１号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
メモリ保護ユニットＭＰＵの或る実施において、すべて０値にプログラムされた領域識別子は、どんなプロセスによっても一致でき、通常スーパーバイザ専用領域のために使用される「グローバルな」領域記述子を示す。しかし、スーパーバイザのユーザ領域へのアクセスも必要とされるため、この実施は典型的に多重冗長領域記述子を要求するか、または現在のプロセス識別子ＰＩＤ値を修正してプログラムされた領域識別子に一致させるためにスーパーバイザコードを要求する。しかし、これらの解決は、リソース使用または性能オーバーヘッドの点で不利益をもたらす。さらに他のマッピング制約のために、スーパーバイザモードにおいて現在のプロセス識別子ＰＩＤ値を変更してユーザ領域のプロセス識別子ＰＩＤ値に一致させることは可能ではないであろう。
【課題を解決するための手段】
【０００５】
メモリ管理ユニット（ＭＰＵ）の領域記述子の動的グローバル化は、種々の制御機構を使用することによって可能となろう。たとえば一実施形態において、メモリ保護ユニットＭＰＵ内のすべてのまたは選択された領域記述子エントリの有効な領域ＩＤをマスキングするグローバル化論理は実施できよう。一例において、このマスキングは、一時的に領域記述子エントリの有効な領域ＩＤをすべて０値（または他の幾つかの所定の値）に強制して、領域記述子エントリの「グローバル化」を生じさせることができる。代替として、マスキングの結果、現在のプロセスＩＤは、領域記述子中にプログラムされた領域ＩＤよりもグローバルなＩＤに一致することを必要とすることになろう。それゆえプロセッサの適切な状態における現在のプロセス動作（たとえばスーパーバイザモードにおける動作または特定のプロセス識別子値を有する動作）は、領域記述子エントリの特定の領域ＩＤに一致する必要なく、領域記述子エントリによって定義された領域にアクセスできる。このようにして現在のプロセスは、メモリ領域に対応する領域記述子エントリによって異なるプロセスに割当てられたメモリ領域にアクセスできる。
【図面の簡単な説明】
【０００６】
以下に本発明を図示によって説明するが、本発明は添付部の図面に限られるものではなく、同じ参照番号は類似の要素を指している。図中の要素は簡素かつ明瞭を旨として図示されており、必ずしも縮尺通りに描かれていない。
【図１】本発明の一実施形態に従いデータ処理システムをブロック図の形式で示す。
【図２】本発明の一実施形態に従い、図１のデータ処理システム内のメモリ保護ユニット（ＭＰＵ）をブロック図の形式で示す。
【図３】本発明の一実施形態に従い、図２のメモリ保護ユニットＭＰＵにおける領域記述子を表の形式で示す。
【図４】本発明の一実施形態に従い、図２のメモリ保護ユニットＭＰＵで使用可能なメモリ保護ユニットＭＰＵ制御とステータスレジスタを線図の形式で示す。
【図５】本発明の一実施形態に従い、図４のメモリ保護ユニットＭＰＵ制御とステータスレジスタの種々のフィールドに対する記述を表の形式で示す。
【図６】本発明の一実施形態に従い、図２のメモリ保護ユニットＭＰＵの領域記述子エントリに対する領域記述子一致論理を示す。
【図７】本発明の一実施形態に従い、図２のメモリ保護ユニットＭＰＵで使用可能なメモリ保護ユニットＭＰＵ制御とステータスレジスタを線図の形式で示す。
【図８】本発明の一実施形態に従い、図７のメモリ保護ユニットＭＰＵ制御とステータスレジスタの種々のフィールドに対する記述を表の形式で示す。
【図９】本発明の一実施形態に従い、図２のメモリ保護ユニットＭＰＵの領域記述子エントリに対する領域記述子一致論理を示す。
【図１０】本発明の一実施形態に従い、図２のメモリ保護ユニットＭＰＵの領域記述子エントリに対する領域記述子一致論理を示す。
【図１１】本発明の一実施形態に従い、図２のメモリ保護ユニットＭＰＵの動作方法をフローチャートの形式で示す。
【発明を実施するための形態】
【０００７】
本明細書中で使用される「バス」という言葉は、データ、アドレス、制御またはステータスなど１種類以上のタイプの情報を伝送するために使用できる複数の信号または導体の意味で用いる。本明細書中で論じられる導体は、単一導体、複数導体、一方向導体または双方向導体として図示または記述されよう。しかし、異なる実施形態において導体は別様であってよい。たとえば双方向導体よりも別個の一方向導体が使用されることもあれば、その逆のこともある。複数導体も多数の信号を連続的にまたは時分割多重化方式で伝送する単一導体に置き換えられてよい。同様に、多数の信号を運ぶ単一導体は、これらの信号のサブセットを運ぶ種々の異なる導体に分けることもできる。それゆえ信号の伝送については多くの選択肢が存在する。
【０００８】
「アサートする」または「セットする」と、「ネゲートする」（または「デアサートする」もしくは「クリアする」）という言葉は、本明細書中では信号、ステータスビットまたは類似の装置をそれぞれ論理的に真の状態または論理的に偽の状態に翻訳することに関連して用いる。論理的に真の状態が論理レベル１であるならば、論理的に偽の状態は論理レベル０である。そして論理的に真の状態が論理レベル０であるならば、論理的に偽の状態は論理レベル１である。
【０００９】
図１は、本発明の実施形態に従うデータ処理システム１００を図示するブロック図である。データ処理システム１００は、ＣＰＵ０として表す第１プロセッサ１０、第ＮのＣＰＵ（ＣＰＵＮ）として表す第２プロセッサコア１２、インタコネクト２０、メモリデバイス４０、および周辺デバイス３０、３２、３４を有する。プロセッサ１０はさらに、データキャッシュ５１と命令キャッシュ５２を含むキャッシュ５０；さらに領域記述子６２とメモリ保護ユニットＭＰＵ制御モジュール６４を含むメモリ保護ユニットＭＰＵ６０；データ処理論理モジュール７０；さらに現在のプロセス識別子（ＰＩＤ）を記憶する記憶回路５７を含む制御レジスタ５６；バスインタフェースユニット（ＢＩＵ）８０を有する。プロセッサ１２は、類似のサブコンポーネント（図示せず）を有しており、各々のプロセッサは、追加のモジュール（見やすくするために図示せず）を含むことができる。
【００１０】
メモリアクセス保護ポリシーは、データ処理システム１００に含まれている１つ以上のメモリ保護ユニット（ＭＰＵ）６０で実施できる。データ処理システム１００の動作中、プロセッサ１０および１２におけるデータ処理論理モジュール７０は、メモリ４０内の位置にアクセスするリクエストを出すことができる。たとえばデータ処理論理モジュール７０は、メモリ４０からプログラム命令またはデータ情報を取出し、またはデータ情報をメモリ４０に記憶するリクエストを出すことができる。メモリアクセス保護ポリシーは、リクエストされたアクセスを許可または拒否するか判定（決定）する。メモリ保護ユニット内の２つの領域記述子がメモリ内のエリアで互いに重なるアドレスレンジを持ち、相反するアクセスポリシーを有するならば、デフォルトアクセスポリシーが実施されてよい。
【００１１】
図１に示す実施形態においてデータ処理システム１００は、携帯電子デバイス、コンピュータデバイス、自動車用デバイス、通信デバイスなどを含む多数の電子システムに組み込むことができる汎用データ処理デバイスである。プロセッサ１０および１２は、ソフトウエアを実行するように構成された回路であり、これによって所望されたタスクを実行する。
【００１２】
メモリアクセスリクエストは、典型的にメモリ４０内の特定の位置から情報を取出すロード命令の実行、またはメモリ４０内の特定の位置に情報を書込む記憶命令の実行に関連している。アクセスしようとするメモリ内の位置を識別するために、メモリアクセスリクエストにはアドレスが付随する。ロード命令または記憶命令は、ソフトウエアプログラムに含めることができ、ソフトウエアプログラムは、スーパーバイザモードまたはユーザモードで実行できる。ソフトウエアプログラムの実行は、プロセスとも呼ばれ、読込アクセスリクエストまたは書出アクセスリクエストは、実行されている特定のプロセスに割当てられた現在のプロセス識別子値（ＰＩＤ）に関連させることができる。このプロセス識別子ＰＩＤは、制御レジスタ５６内の記憶回路５７に記憶できる。
【００１３】
メモリ読込動作中にアクセスされる情報は、命令を含むか、またはデータ情報を含むことができ、メモリ書出動作に関連した情報は、一般的にデータ情報である。したがってメモリアクセスリクエストは、１つ以上のリクエスト属性の値に基づき特徴付けることができる。リクエスト属性の例は、アクセスしようとする位置のアドレスを示すためのアドレス属性；リクエストが読込リクエストであるか否かを示すための読込属性；リクエストが書出リクエストであるか否かを示すための書出属性；リクエストがスーパーバイザモードで出されたか否かを示すためのスーパーバイザ属性；リクエストがユーザモードで出されたか否かを示すためのユーザ属性、リクエストに関連したプロセスを識別するためのプロセス識別（ＰＩＤ）属性；リクエストされた情報が命令であるか否かを識別するための命令属性などを含む。任意の数のリクエスト属性を領域記述子６２に含めて、メモリアクセスリクエストに関連させることができる。
【００１４】
本明細書中で使用されているメモリ位置は、固有のシステムアドレスを有するすべてのデータ記憶位置を指すことが意図されている。そのような位置は、メモリデバイス４０、周辺デバイス３０、３２、３４などを含めて、システムアドレススペース内に含めることができる。同様に、フレーズメモリアクセスリクエストは、本明細書中では固有のシステムアドレスに基づく記憶位置にアクセスするすべてのリクエストを指すために用いられている。簡素にするために、本明細書中に記載されているメモリマッピングされた記憶位置および対応するアクセスリクエストは、それぞれメモリおよびメモリアクセスリクエストと呼ぶ。
【００１５】
プロセッサ１０および１２は、インタコネクト２０を介して、メモリ４０および周辺デバイス３０−３４と通信できる。特に、インタコネクト２０は、信号を伝送してリクエスト情報（ＲＥＱＵＥＳＴ  ＩＮＦＯＲＭＡＴＩＯＮ）９０とリクエスト属性（ＲＥＱＵＥＳＴ  ＡＴＴＲＩＢＵＴＥＳ）９４を提供することができる。リクエスト情報９０は、メモリアドレス（ＡＤＤＲＥＳＳ）、書出データ（ＷＤＡＴＡ）および読込データ（ＲＤＡＴＡ）を含む。メモリデバイス４０は、プロセッサ１０またはプロセッサ１２によって出されたメモリアクセスリクエストを介してアクセス可能な記憶位置を提供できる。メモリデバイス４０は、動的ランダムアクセスメモリ（ＤＲＡＭ）、静的ランダムアクセスメモリ（ＳＲＡＭ）などを含め任意の種類のメモリタイプを有してよい。見やすくするために、図１は、データ処理システム１００のその他の構成要素で、動作が当業者によく知られているもの、たとえば高度キャッシュメモリデバイス、外部インタフェースなどは省いてある。さらにデータ処理システム１００が有するプロセッサの数は、これよりも多くても少なくてもよい。
【００１６】
動作中、プロセッサ１０および１２は、メモリ４０にアクセスして、命令を取得し、データ情報を取出し、またはデータ情報を記憶することできる。たとえばプロセッサ１０内のデータ処理論理モジュール７０は、メモリ４０の特定のメモリアドレスでデータ情報を取出すためにメモリアクセスリクエストを出すことができる。メモリ保護ユニットＭＰＵ６０は、メモリアクセスリクエストを外部のプロセッサ１０に伝送する前に、リクエストするデバイス（またはリクエストの発生源のソフトウエアプロセス）がアクセスを許すのに適した許可を持っているか判定できる。さらにプロセッサ１０は、所望のデータ情報がデータキャッシュ５１内にあるか判定できる。メモリ保護ユニットＭＰＵ６０が、リクエストは許可されたが、所望のデータ情報がデータキャッシュ５１内に存在しない（キャッシュミス）と判定したら、メモリアクセスリクエストがバスインタフェースユニットＢＩＵ８０に送られる。バスインタフェースユニットＢＩＵ８０は、インタコネクト２０を介してメモリアクセスリクエストをメモリ４０または周辺デバイス３０、３２、３４に転送するように構成されている。
【００１７】
バスインタフェースユニットＢＩＵ８０は、信号ＡＤＤＲＥＳＳ、読込命令信号（図示せず）、およびリクエストに関連した他の属性の値を識別するリクエスト属性９４を介してメモリアドレスを伝送することによってメモリ読込アクセスリクエストを開始できる。これらの信号は、インタコネクト２０を介してメモリ４０に伝えられる。メモリデバイス４０は、リクエストされたデータ情報をバスインタフェースユニットＢＩＵ８０に戻し、次いで信号ＲＤＡＴＡによってインタコネクト２０を介してデータ処理論理モジュール７０に戻すことができる。
【００１８】
同様の仕方で、プロセッサ１０におけるデータ処理論理モジュール７０は、メモリ４０の特定のメモリアドレスにデータ情報を記憶するためにメモリアクセスリクエストを出すことができる。メモリ保護ユニットＭＰＵ６０は、メモリアクセスリクエストを外部のプロセッサ１０に伝送する前に、リクエストに関連したリクエスト属性の値に基づきアクセスを許可または拒否するか判定できる。メモリ保護ユニットＭＰＵ６０が、リクエストに付随する属性は、メモリ保護ユニットＭＰＵ６０によって維持される属性の要件を満たすと判定したら、メモリアクセスリクエストがバスインタフェースユニットＢＩＵ８０に提供される。
【００１９】
バスインタフェースユニットＢＩＵ８０は、信号ＡＤＤＲＥＳＳ、信号ＷＤＡＴＡを介してメモリ４０に記憶されるべきデータ情報、書出命令信号（図示せず）、およびリクエストに関連した特権を識別するリクエスト属性９４を介してメモリアドレスを伝送することによってメモリ書出アクセスリクエストを開始できる。
【００２０】
メモリ４０から読込または書出すためのメモリアクセスリクエストは、アクセスリクエストに関連した種々のリクエスト属性を示すために信号リクエスト属性９４を介してメモリ４０に送信できる追加の情報を含んでよい。リクエスト属性９４は、上述したようにリクエスト源を識別する情報およびリクエストのタイプを含むことができる。たとえばリクエスト属性９４は、リクエストがスーパーバイザモードかユーザモードのいずれで実行されるプロセスに関連しているかの指示、リクエストが読込動作か書出動作のいずれを実行するかの指示などを含むことができる。リクエスト属性９４は、関連したメモリアクセスリクエストをさらに特定の方法で特徴付けることができる他の情報を含むことができる。
【００２１】
上述したように、メモリ保護ユニットＭＰＵたとえばメモリ保護ユニットＭＰＵ６０は、１つ以上のアドレス領域に関連するそれぞれの許可情報を維持できる。メモリ保護ユニットＭＰＵ６０は、命令フェッチおよびデータ読込／書出に基づき、メモリアドレスおよびこのメモリアクセスリクエストに関連するプロセスＩＤ（ＰＩＤ）をメモリ保護ユニットＭＰＵ６０内の各エントリ（領域記述子６２内に記憶）に比較して一致を判定することによって保護を実行する。メモリ保護ユニットＭＰＵ６０がメモリアドレスに対応して一致する領域記述子６２を識別すると、当該領域記述子６２に含まれている属性が評価され得る。属性は、共に保護ポリシーの状況を定義する任意の数のリクエスト属性に関するものであってよい。たとえば領域記述子は、特定のメモリアドレス領域内に含まれている位置が書出保護されることを指定でき、またどんな場合に情報を記憶するリクエスト、たとえば情報が領域内の所定の位置に記憶されるべきであることを示す属性を有するリクエストが拒否され、または情報を取出すリクエスト、たとえば情報が領域内の位置から読込まれるべきであることを示す属性を有するリクエストが許可されるかを指定できる。同様に、領域記述子６２は、メモリアドレス領域内に含まれている位置は、アクセスリクエストがスーパーバイザモードで実行されるプロセスによって出されたことを示す属性に関連するアクセスリクエストにだけアクセス可能であることを指定できる。
【００２２】
メモリ保護ユニットＭＰＵ６０の動作は、図２および図３を参照すれば一層よく理解されよう。図２は、本発明の特定の実施形態に従うメモリ保護ユニットＭＰＵ６０を図示するブロック図である。メモリ保護ユニットＭＰＵ６０は、１組の命令領域記述子２０２、１組のデータ領域記述子２０４、および１組の共有（命令またはデータ）領域記述子２０６を含む。メモリ保護ユニットＭＰＵ６０は、メモリ保護ユニットＭＰＵ制御モジュール６４も含む。メモリ保護ユニットＭＰＵ制御モジュール６４は、リクエストに関連したアドレスおよび特権属性に基づき、またはアクセスが命令フェッチアクセス、読込アクセスもしくは書出アクセスであるかに基づき、ならびに領域記述子２０２、２０４および２０６に含まれた１つ以上の領域記述子の内容に基づき、各々のリクエストされたメモリアクセスを選択的に許可または拒否するように動作する。上述したように、リクエスト属性９４は、アクセスリクエストを開始するデバイスまたはソフトウエアプロセスがスーパーバイザ特権を持っているか、それともユーザ特権しか持っていないかの指示を含むことができ、およびその他の属性、たとえばバスマスタ識別番号なども含んでよい。メモリアクセスリクエストが拒否されたら、メモリ保護ユニットＭＰＵ制御モジュール６４は、リクエストするデバイスにメモリアクセス例外が発生したことを示す終了エラー応答を返すことができる。
【００２３】
図３は、本発明の特定の実施形態に従い、領域記述子２０２、２０４または２０６のいずれかに対応できる領域記述子３００の実施形態を図示する表である。領域記述子３００（領域記述子エントリとも呼ぶ）は、複数のフィールド３２０−３３１を含む。フィールド３２０は、有効属性Ｖに関係する。対応する有効なビットがアサートされなければ、領域記述子は、無効である。有効なビットがアサートされ、領域記述子に関連したアドレスレンジがアドレスに関連するリクエストを有し、そして領域記述子に関連した領域識別子がリクエストに関連したプロセス識別子ＰＩＤに一致するならば、領域記述子に含まれた許可情報は、メモリアクセスリクエストに応答したと見なすことができる。
【００２４】
フィールド３２１ＵＰＰＥＲ  ＢＯＵＮＤとフィールド３２２ＬＯＷＥＲ  ＢＯＵＮＤは、それぞれ領域記述子の関連アドレスレンジを示すための上限アドレス属性と下限アドレス属性に関する。
【００２５】
フィールド３２５は、命令属性ＩＮＳＴに関する。この属性は、領域記述子が命令アクセス、たとえば対応する命令リクエスト属性もアサートされるようなアクセスリクエストに対してのみ有効であることを識別するためにアサートされ得る。したがって対応する命令属性は、セット２０２（命令領域記述子）に含まれた領域記述子ではアサートされ、セット２０４（データ領域記述子）に含まれた領域記述子ではネゲートされる。
【００２６】
フィールド３２６は、ＳＸ属性（スーパーバイザ実行）、ＳＷ属性（スーパーバイザ書出）、およびＳＲ属性（スーパーバイザ読込）を含む複数のアクセス可能属性に関係する。これらの属性は、領域記述子によって指定されたアドレス領域内に含まれた位置に対して領域記述子によって許可されるスーパーバイザレベルのソフトウエアのタイプを識別するために個々にアサートされ得る。たとえばＳＷ属性（スーパーバイザ書出）がアサートされたら、（リクエストに付随する相応のリクエスト属性をアサートすることによって）スーパーバイザアクセスと書出アクセスの両方として識別されたアクセスリクエストは、関連するメモリアドレス領域内の位置に情報を記憶することを記述子によって許可される。同様に、ＳＲ属性（スーパーバイザ読込）がアサートされたら、スーパーバイザアクセスと読込アクセスの両方として識別されたアクセスリクエストは、関連する領域内の位置を読込むことを記述子によって許可される。属性ＳＸ（スーパーバイザ実行）は、関連する領域内の位置が実行され得るか否か識別する。
【００２７】
フィールド３２７は、ＵＸ属性（ユーザ実行）、ＵＷ属性（ユーザ書出）、およびＵＲ属性（ユーザ読込）を含む複数のアクセス可能属性に関係し、これらの属性は、個々に記述子によって領域記述子に対応する位置に対して許可されたユーザレベル・アクセスリクエストのタイプを識別する。
【００２８】
フィールド３２８は、キャッシュ禁止領域属性ＣＩに関係する。キャッシュ禁止領域属性は、リクエストするデバイスに対して関連する領域内の位置から取出された情報をキャッシュデバイス、たとえば図１のデータキャッシュ５１や命令キャッシュ５２に記憶しないように命令するためにアサートされ得る。
【００２９】
フィールド３２９は、保護された領域属性Ｇに関係する。保護された領域属性は、関連する領域内に含まれる位置が通常のメモリ素子またはレジスタとは別様に動作することを示すためにアサートされ得る。その一例は、ＦＩＦＯ、揮発性記憶素子などに続いてまたは応答して値が変化できるメモリマッピングされた位置である。したがって保護された位置に関連する情報は、典型的にキャッシュメモリデバイスには記憶されない。
【００３０】
フィールド３３０の翻訳識別子ＴＩＤは、領域記述子に対する領域識別子に関係する（ＴＩＤは、翻訳識別子とも呼ばれることに留意されたい）。上述したように、領域記述子の有効なビットがアサートされ、受領されたリクエストに対応するアクセスアドレスが領域記述子の上限（ＵＰＰＥＲ＿ＢＯＵＮＤ）および下限によって示されたアドレスレンジ内にあり、そして受領されたリクエストに対応するプロセス識別子ＰＩＤ値が翻訳識別子ＴＩＤに一致したら、受領されたリクエストは、領域記述子に一致する。以下に論じるように、翻訳識別子ＴＩＤを「グローバル化」して、或る状況においては一致を示すために受領されたリクエストに対応するプロセス識別子ＰＩＤ値が翻訳識別子ＴＩＤに一致する必要がないようにすることは、有用であろう。このようにすると、以下に詳細に説明するように、翻訳識別子ＴＩＤは、種々の条件下で１回以上の制御を用いてマスキングされよう。
【００３１】
フィールド３３１の領域グローバル化制御ＲＧＣは、領域記述子に対する領域グローバル化制御に関係する。領域グローバル化制御ＲＧＣは、グローバル化に対するより精細な粒度を許容する。たとえばそれはどの領域記述子をグローバル化制御に適用すべきかを示すために用いられてよい。このようにして、領域グローバル化制御ＲＧＣが或る領域記述子に対してアサートされたら、グローバル化制御（すなわちマスキング制御）が適用されるが、領域グローバル化制御ＲＧＣがアサートされなければ、グローバル化制御は適用されず、一致が生じるか否かの判定に翻訳識別子ＴＩＤが使用される。このフィールドは、領域記述子内に存在することも存在しないこともある。
【００３２】
メモリ保護ユニットＭＰＵ６０の動作中、データ処理論理７０によって生成されるメモリアクセスリクエストが評価されて、アクセスしようとする位置のアドレス、リクエストに関連したプロセス識別子ＰＩＤ（記憶回路５７から取得できる）、リクエストされたプロセッサまたはプロセスアクセスリクエストはスーパーバイザ特権またはユーザ特権を有するか、リクエストは読込アクセスまたは書出アクセスであるか、そしてリクエストは命令アクセスまたはデータアクセスに対するものであるかを判定できる。領域記述子２０２、２０４および２０６は、他のリクエスト属性に対応する追加のフィールド、またはアクセスリクエストを所望の仕方で識別し、またはさらに適格にする追加のフィールドを含むことができる。メモリ保護ユニットＭＰＵ６０は、適当な単数または複数のセクタの各々の有効な領域記述子を審査できる（たとえば命令領域記述子と命令アクセスリクエストに対する共有領域記述子、およびデータ領域記述子とデータアクセスリクエストに対する共有領域記述子）。メモリ保護ユニットＭＰＵ６０が入ってくるアクセスリクエストに一致する領域記述子を識別したら、メモリ保護ユニットＭＰＵ６０は、リクエスト属性に基づき、および一致する領域記述子によって指定された許可に基づきアクセスを許可または拒否する。たとえばアドレスＸＹＺを書出すユーザモードリクエストが受領されたら、そして有効な領域記述子がアドレスＸＹＺを含むアドレス領域を定義し、そしてメモリアクセスリクエストに関連するプロセス識別子ＰＩＤが有効な領域記述子の翻訳識別子ＴＩＤに一致する値を持つ場合、ＵＷ属性（ユーザ書出）がアサートされればリクエストされたアクセスは許可され、ＵＷ属性（ユーザ書出）がアサートされなければ拒否され得る。さらにメモリアクセスが許可されたら、メモリアクセスは、一致する領域記述子内のキャッシュ禁止領域属性ＣＩフィールドと保護された領域属性Ｇフィールドの値に基づき、それぞれキャッシュ禁止アクセスまたは保護されたアクセスとして実行され得る。１つ以上の有効な領域記述子がリクエストされたアクセスアドレスおよび対応するプロセス識別子ＰＩＤに一致したら、どの領域記述子または領域記述子の部分がアクセスを統制するかを判定するために任意のポリシーが利用されてよい。たとえば多数の一致する領域記述子の最も制限の少ないアクセス許可が使用されてよい。
【００３３】
上述したように、スーパーバイザレベルのソフトウエアには、現在進行中のプロセスに関わりなく（すなわちプロセス識別子ＰＩＤ値に関わりなく）、コードのそれ自身のセクション（たとえばメモリ内のスーパーバイザ専用領域）にアクセスできるようにすることが望ましいであろう。さらにメモリ内のこれらのスーパーバイザ専用領域にアクセスすることに加えて、スーパーバイザがユーザ領域にアクセスできるようにすることも望ましいであろう。しかし、メモリ保護ユニットＭＰＵ６０によって定義された各々の特定のユーザ領域は、プロセス識別子ＰＩＤ値に結び付いている。それゆえ一実施形態においては、アドレスレンジがアクセスリクエストのアドレスを有する領域記述子の翻訳識別子ＴＩＤに、実際の記憶された翻訳識別子ＴＩＤ値に関わりなく、一時的に０値（または他の所定の値）を強制して一致を許可するグローバル化制御機構が含まれている。これが行なわれてよいのは、たとえばスーパーバイザモードの場合のみであり、ユーザモードでは行なわれない。それゆえ一実施形態において、メモリ保護ユニットＭＰＵ６０は、スーパーバイザモードにあるときにエントリに対するアドレスレンジ比較のプロセス識別子ＰＩＤ／翻訳識別子ＴＩＤ部分を実行するときに、すべての領域記述子（または領域記述子のサブセット）内の翻訳識別子ＴＩＤビットをグローバルに０にマスキングする能力を提供する。これはメモリ保護ユニットＭＰＵ制御レジスタにおいて制御ビットをセットすることによって行うことができる。
【００３４】
図４は、グローバルマスキング制御フィールド、翻訳識別子制御ＴＩＤＣＴＬ、およびメモリ保護ユニットイネーブルフィールドＭＰＵＥＮを含む多数のフィールドを有するメモリ保護ユニットＭＰＵ制御およびステータスレジスタ４００の例を線図の形式で示す。（翻訳識別子制御ＴＩＤＣＴＬフィールドは、翻訳識別子制御インジケータとも呼ばれ、メモリ保護ユニットＭＰＵ制御およびステータスレジスタ４００は、ＭＰＵ０ＣＳＲ０とも呼ばれることに留意されたい。）図４の例で、翻訳識別子制御ＴＩＤＣＴＬフィールドは、ビット２９に位置する１ビットフィールドであり、メモリ保護ユニットイネーブルＭＰＵＥＮフィールドは、ビット３１に位置する１ビットフィールドである。図４の３２ビットレジスタ内の残りのビットは予備で、他の制御またはステータス情報のために使用できる。代替的な実施形態は、メモリ保護ユニットＭＰＵ制御およびステータスレジスタを別様に配置でき、図示されているよりも多いまたは少ないフィールドを含んでよい。一実施形態において、メモリ保護ユニットＭＰＵ制御およびステータスレジスタ４００は、メモリ保護ユニットＭＰＵ制御６４内に位置している。
【００３５】
図５は、翻訳識別子制御ＴＩＤＣＴＬフィールドとメモリ保護ユニットイネーブルＭＰＵＥＮフィールドに対する記述を表の形式で提供する。メモリ保護ユニットイネーブルＭＰＵＥＮフィールドに関して、メモリ保護ユニットイネーブルＭＰＵＥＮビットがアサートされたら（論理レベル１）、メモリ保護ユニットＭＰＵ６０はイネーブルされ、逆にネゲートされたら（論理レベル０）、メモリ保護ユニットＭＰＵ６０はディスエーブルされる。それゆえこのビットは、メモリ保護ユニットＭＰＵ６０の動作をイネーブルする。イネーブルされると、アクセスアドレスは、メモリ保護ユニットＭＰＵ６０内の各エントリに一致条件について比較される。一致条件が生じず、アクセスタイプがメモリ保護ユニットＭＰＵ保護をバイパスするようにはイネーブルされないときには、アクセスに対する例外条件が送信される。翻訳識別子制御ＴＩＤＣＴＬフィールドに関して、翻訳識別子制御ＴＩＤＣＴＬフィールドがネゲートされたら（論理レベル０）、翻訳識別子ＴＩＤ比較が普通に行なわれ、グローバル化マスキングは行なわれない。すなわちこの場合には、メモリ保護ユニットＭＰＵ６０の有効な領域記述子によって生じるべき一致条件について、アクセスアドレスは、有効な領域記述子のアドレスレンジ内になければならず、アクセスのプロセス識別子ＰＩＤは、有効な領域記述子の翻訳識別子ＴＩＤに一致しなければならない。翻訳識別子制御ＴＩＤＣＴＬフィールドがアサートされたら（論理レベル１）、スーパーバイザモードにあるときにグローバル化マスキングを用いて翻訳識別子ＴＩＤ比較が行われる。さらに多数のヒットに対して（すなわち多数の領域記述子が一致条件となる場合）、一致する記述子の最も制限の少ないアクセス許可が使用される。現在の実施形態において、翻訳識別子制御ＴＩＤＣＴＬビットがアサートされると、（ユーザモードではなく）スーパーバイザモードにあるときにプロセス識別子ＰＩＤ／翻訳識別子ＴＩＤ比較を行うときにすべての領域記述子内の翻訳識別子ＴＩＤビットがマスキングされる。
【００３６】
スーパーバイザモードにあるときにマスキングを用いて翻訳識別子ＴＩＤ比較が行なわれるように翻訳識別子制御ＴＩＤＣＴＬビットをアサートすることによって、スーパーバイザコードは、ユーザタスクのために最初にロードされた領域記述子を、これらの記述子内のプログラムされた翻訳識別子ＴＩＤ値に関わりなく利用することが許される。この能力は、特定の状況においてアクティブであるために必要とされるスーパーバイザ領域記述子の数を最小化するために用いることができ、それによって効率を高めることができる。さらに領域記述子内の実際の内容は、変更されない。すなわち翻訳識別子ＴＩＤ値は、プログラムされた状態に留まり、比較論理で０または他の所定の値にマスキングされるのみである。
【００３７】
図６は、アクセスアドレスに対する領域記述子一致論理６００とその属性、およびそれがどのようにメモリ保護ユニットＭＰＵエントリ内の対応するフィールドに比較されるかを、一部は概略的に、一部はブロック図で示す。それゆえ領域記述子一致論理６００は、比較論理とも呼ばれ、メモリ保護ユニットＭＰＵ６０内の各領域記述子エントリに対して繰り返される。一致論理６００は、ＡＮＤゲート６１８、６１６、６１０および６０２、ＯＲゲート６０４、ならびにコンパレータ６１２、６１４、６０６および６０８を含む。ＡＮＤゲート６０２の第１入力は、対応する領域記述子エントリからの有効なビット（ＭＰＵ＿エントリ［Ｖ］）を受取るように結合され、第２入力はＯＲゲート６０４の出力に結合され、第３入力はＡＮＤゲート６１０の出力に結合される。ＡＮＤゲート６０２の出力は、一致条件が生じるか否かを示す一致信号ＭＰＵ＿エントリ＿一致を提供する。たとえば一致信号が高くなれば（論理レベル１）、当該領域記述子エントリに対する一致が生じており、一致信号が低いままか、または低くなれば（論理レベル０）、一致は生じなかったことになる。ＯＲゲート６０４の第１入力はコンパレータ６０６の出力に結合され、ＯＲゲート６０４の第２入力はコンパレータ６０８の出力に結合される。コンパレータ６０６は、（たとえば記憶回路５７によって提供され得る）現在のアクセスリクエストのプロセス識別子ＰＩＤを受取るように結合された第１入力と、ＡＮＤゲート６１８の出力に結合された第２入力とを有する。ＡＮＤゲート６１８は、対応する領域記述子エントリから翻訳識別子ＴＩＤ値（ＭＰＵ＿エントリ［ＴＩＤ］）を受取るように結合された第１ｎビット入力を有する。ＡＮＤゲート６１８の第２入力は、ＡＮＤゲート６１６の出力に結合された反転入力である。
【００３８】
ＡＮＤゲート６１６の第１入力は、メモリ保護ユニットＭＰＵ制御およびステータスレジスタ４００から翻訳識別子制御ＴＩＤＣＴＬ値を受取るように結合されており、ＡＮＤゲート６１６の第２入力は、スーパーバイザ／ユーザモードインジケータ（ＭＳＲ［ＰＲ］）を受取るように結合された反転入力である。これはたとえば制御レジスタ５６内に配置できる機械状態レジスタ（ＭＳＲ）の問題状態（ＰＲ）に対応しよう。本明細書中に記載された実施形態において、ＭＳＲ［ＰＲ］に対する０の値はスーパーバイザモードを示し、１の値はユーザモードを示す。コンパレータ６０８は、ＡＮＤゲート６１８の出力に結合された第１入力を有する。ＡＮＤゲート６１０は、コンパレータ６１２の出力に結合された第１入力と、コンパレータ６１４の出力に結合された第２入力とを有する。コンパレータ６１２は、メモリアクセスリクエストのアクセスアドレスを受取るように結合された第１入力と、対応する領域記述子エントリから上限値（ＭＰＵ＿エントリ［ＵＰＰＥＲ＿ＢＯＵＮＤ］）を受取るように結合された第２入力とを有する。コンパレータ６１４は、メモリアクセスリクエストのアクセスアドレスを受取るように結合された第１入力と、対応する領域記述子エントリから下限値（ＭＰＵ＿エントリ［ＬＯＷＥＲ＿ＢＯＵＮＤ］）を受取るように結合された第２入力とを有する。
【００３９】
動作中、一致論理６００は、受取ったメモリアクセスリクエストおよび対応する領域記述子エントリに関して一致が生じるか判定する。一致論理６００は、有効なビットがアサートされ（ＭＰＵ＿エントリ［Ｖ］は論理レベル１である）、ゲート６０４とゲート６１０の各々の出力が論理レベル１である場合のみ出力一致信号（ＭＰＵ＿エントリ＿一致）をアサートする。受取ったメモリアクセスリクエストのアクセスアドレスが、領域記述子エントリの上限と下限によって指示されたアドレスレンジ内にあるとき、ＡＮＤゲート６１０の出力は高い（論理レベル１）。すなわちコンパレータ６１２は、アクセスアドレスが上限よりも小さいかチェックして、もし小さければその出力を論理レベル１にアサートし、またコンパレータ６１４は、アクセスアドレスが下限よりも大きいかチェックし、もし大きければその出力を論理レベル１にアサートする。これら両比較が出力を論理レベル１にアサートした場合のみ、ゲート６１０の出力は論理レベル１である。
【００４０】
プロセス識別子ＰＩＤ／翻訳識別子ＴＩＤ比較部分および選択的グローバル化マスキングは、ＯＲゲート６０４およびＯＲゲート６０４を駆動する論理によって実行される。翻訳識別子制御ＴＩＤＣＴＬビットが論理レベル０であれば、つまり翻訳識別子ＴＩＤ比較が普通に行なわれるならば、ＡＮＤゲート６１６の出力は論理レベル０であり、翻訳識別子ＴＩＤ値は、コンパレータ６０６および６０８に対するＡＮＤゲート６１８のｎビット出力に提供される。しかし、翻訳識別子制御ＴＩＤＣＴＬビットが論理レベル１であれば、スーパーバイザモードにあるとき翻訳識別子ＴＩＤ比較は、マスキングされる。それゆえＭＳＲ［ＰＲ］が論理レベル１でユーザモードを示すならば、ＡＮＤゲート６１６の第２入力で反転するために、ＡＮＤゲート６１６の出力は論理レベル０である。この場合には翻訳識別子ＴＩＤの値は、マスキングされずにＡＮＤゲート６１８を通過してコンパレータ６０６および６０８に提供される。しかしＭＳＲ［ＰＲ］が論理レベル０で、スーパーバイザモードを示すならば（および翻訳識別子制御ＴＩＤＣＴＬが論理レベル１であれば）、ＡＮＤゲート６１６の出力は論理レベル１であり、ＡＮＤゲート６１８の第２入力で反転するために、ＡＮＤゲート６１８の出力はすべて０に強制される。それゆえ翻訳識別子ＴＩＤ値よりすべて０の値がコンパレータ６０６および６０８に提供される。翻訳識別子ＴＩＤ値がＡＮＤゲート６１８を通されたら、コンパレータ６０６によってプロセス識別子ＰＩＤに比較されて一致が生じるか判定される。好都合な比較（すなわち一致）の結果としてコンパレータ６０６の出力は高くなり（論理レベル１）、不都合な比較の結果としてコンパレータ６０６の出力低くなる（論理レベル０）。それゆえプロセス識別子ＰＩＤが翻訳識別子ＴＩＤ値に一致するならば、コンパレータ６０８の出力に関わりなくＯＲゲート６０４の出力は高くなり、プライベートアドレスレンジが示される。しかしＡＮＤゲート６１８によって翻訳識別子ＴＩＤ値がすべて０値に強制されると、コンパレータ６０６の出力は低くなって不都合な比較を示すが、コンパレータ６０８の出力は高くなって好都合な比較（すなわち一致）を示す。この場合には、翻訳識別子ＴＩＤのマスキングのために共有レンジが示される。コンパレータ６０６の出力が高くなるか、またはコンパレータ６０８の出力が高くなる限り、その結果として比較のプロセス識別子ＰＩＤ／翻訳識別子ＴＩＤ部分が一致する。
【００４１】
図４と図５の例の説明において、翻訳識別子制御ＴＩＤＣＴＬビットがアサートされると、スーパーバイザモード中にプロセス識別子ＰＩＤ／翻訳識別子ＴＩＤ比較を実行したときにすべての領域記述子内の翻訳識別子ＴＩＤビットがマスキングされることに留意されたい。しかし、代替的な実施形態において、各領域記述子は、（上に図３を参照して述べたように）領域グローバル化制御ＲＧＣフィールドを含むことができ、領域グローバル化制御ＲＧＣフィールドがアサートされた領域記述子（たとえば論理レベル１）内の翻訳識別子ＴＩＤビットは、プロセス識別子ＰＩＤ／翻訳識別子ＴＩＤ比較の実行中マスキングされ、領域グローバル化制御ＲＧＣフィールドがネゲートされた領域記述子（たとえば論理レベル０）内のおよび翻訳識別子ＴＩＤビットはマスキングされない。領域グローバル化制御ＲＧＣフィールドによって示されるように、翻訳識別子制御ＴＩＤＣＴＬを選択された領域記述子に適用できるようにするために、一致論理６００は適宜修正されてよい。
【００４２】
図７は、グローバル化プロセス識別子ＰＩＤ値、グローバル化プロセス識別子Ｇ＿ＰＩＤ、グローバルマスキング制御フィールド、翻訳識別子制御ＴＩＤＣＴＬ、領域グローバル化制御イネーブルフィールド、領域グローバル化制御イネーブルＲＧＣＥＮおよびＭＰＵイネーブルフィールドメモリ保護ユニットイネーブルＭＰＵＥＮを含む多数のフィールドを有するメモリ保護ユニットＭＰＵ制御およびステータスレジスタ７００の別の例を線図の形式で示す。（翻訳識別子制御ＴＩＤＣＴＬフィールドは、翻訳識別子制御インジケータとも呼ばれ、メモリ保護ユニットＭＰＵ制御およびステータスレジスタ７００は、ＭＰＵ０ＣＳＲ０とも呼ばれることに留意されたい。）図７の例で、グローバル化プロセス識別子Ｇ＿ＰＩＤフィールドは、ビット０−１５に位置する１６ビットフィールドであり、翻訳識別子制御ＴＩＤＣＴＬフィールドは、ビット２８および２９に位置する多ビットフィールド（この例では２ビット）であり、領域グローバル化制御イネーブルＲＧＣＥＮフィールドは、ビット３０に位置する１ビットフィールドであり、およびメモリ保護ユニットイネーブルＭＰＵＥＮフィールドは、ビット３１に位置する１ビットフィールドである。図７の３２ビットレジスタ内の残りのビットは予備であり、他の制御またはステータス情報に使用できる。代替的な実施形態は、メモリ保護ユニットＭＰＵ制御およびステータスレジスタを別様に配置でき、図示されているよりも多いまたは少ないフィールドを含んでよい。一実施形態において、メモリ保護ユニットＭＰＵ制御およびステータスレジスタ７００は、メモリ保護ユニットＭＰＵ制御６４内に位置している。
【００４３】
図８は、グローバル化プロセス識別子Ｇ＿ＰＩＤフィールド、翻訳識別子制御ＴＩＤＣＴＬフィールド、領域グローバル化制御イネーブルＲＧＣＥＮフィールド、およびメモリ保護ユニットイネーブルＭＰＵＥＮフィールドに対する記述を表の形式で提供する。メモリ保護ユニットイネーブルＭＰＵＥＮフィールドに関して、メモリ保護ユニットイネーブルＭＰＵＥＮビットがアサートされたら（つまり論理レベル１なら）メモリ保護ユニットＭＰＵ６０はイネーブルされ、逆にネゲートされたら（つまり論理レベル０なら）メモリ保護ユニットＭＰＵ６０はディスエーブルされる。それゆえこのビットは、メモリ保護ユニットＭＰＵ６０の動作をイネーブルする。イネーブルされたときアクセスアドレスは、メモリ保護ユニットＭＰＵ６０内の各エントリに一致条件について比較される。一致条件が生じず、アクセスタイプがメモリ保護ユニットＭＰＵ保護をバイパスするようにイネーブルされなければ、アクセスに対する例外条件が送信される。翻訳識別子制御ＴＩＤＣＴＬフィールドに関して、翻訳識別子制御ＴＩＤＣＴＬフィールドが００であれば、翻訳識別子ＴＩＤ比較が普通に行なわれ、グローバル化マスキングは実行されない。すなわちこの場合には、メモリ保護ユニットＭＰＵ６０の有効な領域記述子で生じるべき一致条件について、アクセスアドレスは、有効な領域記述子のアドレスレンジ内になければならず、アクセスのプロセス識別子ＰＩＤは、有効な領域記述子の翻訳識別子ＴＩＤに一致しなければならない。翻訳識別子制御ＴＩＤＣＴＬフィールドが０１であれば、スーパーバイザモードにあるときにグローバル化マスキングを用いて翻訳識別子ＴＩＤ比較が行われる。さらに多数のヒットに対して（すなわち多数の領域記述子が一致条件となる場合）、一致する記述子の最も制限の少ないアクセス許可が使用される。それゆえ翻訳識別子ＴＩＤが００または０１のときメモリ保護ユニットＭＰＵ６０は、上に図５と図６に関して翻訳識別子ＴＩＤがそれぞれ０または１である場合について記述されたように動作することに留意されたい。翻訳識別子制御ＴＩＤＣＴＬフィールドが１０であれば、現在のプロセス識別子ＰＩＤ値がメモリ保護ユニットＭＰＵステータスおよび制御レジスタ７００内に記憶されたグローバル化プロセス識別子Ｇ＿ＰＩＤ値に一致するとき、グローバル化マスキングを用いて翻訳識別子ＴＩＤ比較が行なわれる。この場合も多数のヒットに対しては、一致する記述子の最も制限の少ないアクセス許可が使用される。
【００４４】
引き続き図８を参照して、領域グローバル化制御イネーブルＲＧＣＥＮフィールドが０の値を有する場合には、グローバル化マスキングがイネーブルされたとき領域記述子内の領域グローバル化制御ＲＧＣフィールドは、無視される。このようにしてグローバル化マスキングがイネーブルされると、（たとえばスーパーバイザモードでプロセス識別子ＰＩＤ／翻訳識別子ＴＩＤ比較を実行するときに翻訳識別子ＴＩＤビットをマスキングすることによって、または現在のプロセス識別子ＰＩＤを特定の記述子の翻訳識別子ＴＩＤよりもグローバル化プロセス識別子Ｇ＿ＰＩＤに比較することによって）メモリ保護ユニットＭＰＵ６０のすべての領域記述子が適宜マスキングされる。領域グローバル化制御イネーブルＲＧＣＥＮフィールドが１の値を有する場合には、領域記述子内の領域グローバル化制御ＲＧＣフィールドは、グローバル化マスキングがイネーブルされたとき記述子のグローバル化を適格にするために使用される。すなわち一実施形態において、領域グローバル化制御ＲＧＣフィールドがアサートされた領域記述子（たとえば論理レベル１）のみがグローバル化マスキングによってマスキングされる一方、領域グローバル化制御ＲＧＣフィールドがネゲートされた領域記述子（論理レベル０）に対しては、現在のプロセス識別子ＰＩＤ記述子の翻訳識別子ＴＩＤとの比較が普通に行なわれるであろう。
【００４５】
図９は、アクセスアドレスに対する領域記述子一致論理９００とその属性、およびそれがどのようにメモリ保護ユニットＭＰＵエントリ内の対応するフィールドに比較されるかを、一部は概略的に、一部はブロック図で示す。それゆえ領域記述子一致論理９００は、比較論理とも呼ばれ、メモリ保護ユニットＭＰＵ６０内の各領域記述子エントリに対して繰り返される。図９の例は、グローバル化イネーブルを制御するためにグローバル化プロセス識別子Ｇ＿ＰＩＤフィールドの使用を含むが、領域グローバル化制御イネーブルＲＧＣＥＮの使用は含まない。一致論理９００は、ＡＮＤゲート９２２、９２０、９１８および９０２、ＯＲゲート９１６および９０４、ならびにコンパレータ９２４、９１２、９１４、９０６および９０８を含む。ＡＮＤゲート９０２の第１入力は、対応する領域記述子エントリから有効なビット（ＭＰＵ＿エントリ［Ｖ］）を受取るように結合され、第２入力はＯＲゲート９０４の出力に結合され、第３入力はＡＮＤゲート９１０の出力に結合される。ＡＮＤゲート９０２の出力は、一致条件が生じるか否かを示す一致信号ＭＰＵ＿エントリ＿一致を提供する。たとえば一致信号が高くなれば（論理レベル１）、当該領域記述子エントリに対する一致が生じており、一致信号が低いままかまたは低くなれば（論理レベル０）、一致は生じなかったことになる。ＯＲゲート９０４の第１入力はコンパレータ９０６の出力に結合され、ＯＲゲート９０４の第２入力は、コンパレータ９０８の出力に結合される。コンパレータ９０６は、（たとえば記憶回路５７によって提供され得る）現在のアクセスリクエストのプロセス識別子ＰＩＤを受取るように結合された第１入力と、ＡＮＤゲート９１８の出力に結合された第２入力を有する。ＡＮＤゲート６１８は、対応する領域記述子エントリから翻訳識別子ＴＩＤ値（ＭＰＵ＿エントリ［ＴＩＤ］）を受取るように結合された第１ｎビット入力を有する。ＡＮＤゲート９１８の第２入力は、ＯＲゲート９１６の出力に結合された反転入力である。ＯＲゲート９１６の第１入力は、ＡＮＤゲート９２２の出力に結合されている。ＡＮＤゲート９２２の第１入力は、第１インジケータを受取るように結合されており、この第１インジケータは、論理レベル１にアサートされたら、メモリ保護ユニットＭＰＵ制御およびステータスレジスタ７００からの翻訳識別子制御ＴＩＤＣＴＬフィールドの２ビット値が「０１」であることを示す。それゆえもし翻訳識別子制御ＴＩＤＣＴＬフィールドの値が「０１」でなければ、第１インジケータは論理レベル０である。ＡＮＤゲート９２２の第２入力は、スーパーバイザ／ユーザモードインジケータ（ＭＳＲ［ＰＲ］）を受取るように結合された反転入力である。これはたとえば制御レジスタ５６内に配置できる機械状態レジスタ（ＭＳＲ）の問題状態（ＰＲ）に対応しよう。本明細書中に記載された実施形態において、ＭＳＲ［ＰＲ］に対する０の値はスーパーバイザモードを示し、１の値はユーザモードを示す。ＯＲゲート９１６の第２入力はＡＮＤゲート９２０の出力に結合される。ＡＮＤゲート９２０の第１入力は、第２インジケータを受取るように結合され、この第２インジケータは論理レベル１にアサートされたら、メモリ保護ユニットＭＰＵ制御およびステータスレジスタ７００からの翻訳識別子制御ＴＩＤＣＴＬフィールドの２ビット値は「１０」であることを示す。それゆえ翻訳識別子制御ＴＩＤＣＴＬフィールドの値が「１０」でなければ、第２インジケータは論理レベル０である。ＡＮＤゲート９２０の第２入力はコンパレータ９２４の出力に結合される。コンパレータ９２４は、（たとえば記憶回路５７から）現在のプロセス識別子ＰＩＤを受取るように結合された第１入力と、メモリ保護ユニットＭＰＵ制御およびステータスレジスタ７００からグローバル化プロセス識別子Ｇ＿ＰＩＤ値を受取るように結合された第２入力を有する。コンパレータ６０８は、ＡＮＤゲート９１８の出力に結合された第１入力を有する。ＡＮＤゲート９１０は、コンパレータ９１２の出力に結合された第１入力と、コンパレータ９１４の出力に結合された第２入力を有する。コンパレータ９１２は、メモリアクセスリクエストのアクセスアドレスを受取るように結合された第１入力と、対応する領域記述子エントリから上限値（ＭＰＵ＿エントリ［ＵＰＰＥＲ＿ＢＯＵＮＤ］）を受取るように結合された第２入力を有する。コンパレータ９１４は、メモリアクセスリクエストのアクセスアドレスを受取るように結合された第１入力と、対応する領域記述子エントリから下限値（ＭＰＵ＿エントリ［ＬＯＷＥＲ＿ＢＯＵＮＤ］）を受取るように結合された第２入力を有する。
【００４６】
動作中、一致論理９００は、受取ったメモリアクセスリクエストおよび対応する領域記述子エントリに関して一致が生じるか判定する。一致論理９００は、有効なビットがアサートされ（ＭＰＵ＿エントリ［Ｖ］は論理レベル１である）、ゲート９０４とゲート９１０の各々の出力が論理レベル１である場合のみ出力一致信号（ＭＰＵ＿エントリ＿一致）をアサートする。受取ったメモリアクセスリクエストのアクセスアドレスが領域記述子エントリの上限と下限によって指示されたアドレスレンジ内にあるとき、ＡＮＤゲート９１０の出力は高い（論理レベル１）。すなわちコンパレータ９１２は、アクセスアドレスが上限よりも小さいかチェックして、そうであればその出力を論理レベル１にアサートし、またコンパレータ９６１４は、アクセスアドレスが下限よりも大きいかチェックして、そうであれば出力を論理レベル１にアサートする。これら両比較が出力を論理レベル１にアサートした場合のみ、ゲート９１０の出力は論理レベル１である。
【００４７】
プロセス識別子ＰＩＤ／翻訳識別子ＴＩＤ比較部分は、選択的グローバル化マスキングと同様、ＯＲゲート９０４およびＯＲゲート９０４を駆動する論理によって実施される。翻訳識別子制御ＴＩＤＣＴＬフィールドが００であれば、つまり翻訳識別子ＴＩＤ比較が普通に行なわれるならば、ＯＲゲート９１６の出力は論理レベル０であり、翻訳識別子ＴＩＤ値は、コンパレータ９０６および９０８へのＡＮＤゲート９１８のｎビット出力に提供される。すなわち翻訳識別子制御ＴＩＤＣＴＬが００であり、したがって０１でも１０でもなければ、ＯＲゲート９１６への入力は論理レベル０である。翻訳識別子制御ＴＩＤＣＴＬフィールドが論理レベル１であれば、スーパーバイザモードにあるとき翻訳識別子ＴＩＤ比較は、マスキングされる。それゆえＭＳＲ［ＰＲ］が論理レベル１であり、ユーザモードを示すならば、ＡＮＤゲート９２２の第２入力で反転するために、ＡＮＤゲート９２２の出力は論理レベル０である。また、翻訳識別子制御ＴＩＤＣＴＬフィールドが論理レベル０１であれば、ＡＮＤゲート９２２への第１入力は０であり、ＡＮＤゲート９２２の出力は０である。それゆえＯＲゲート９１６の出力は０であり、翻訳識別子ＴＩＤの値は、マスキングされずにＡＮＤゲート９１８を通ってコンパレータ６０６および６０８に提供される。しかしＭＳＲ［ＰＲ］が論理レベル０でスーパーバイザモードを示すならば（および翻訳識別子制御ＴＩＤＣＴＬが０１であれば）、ＡＮＤゲート９２２の出力は論理レベル１である。この場合にはＯＲゲート９１６の出力も１であり、ＡＮＤゲート９１８の第２入力で反転するために、ＡＮＤゲート９１８の出力はすべて０に強制される。それゆえコンパレータ９０６および９０８には、翻訳識別子ＴＩＤ値よりもすべて０の値が提供される。この場合ＯＲゲート９１６の第２入力も、０であることに留意されたい。しかし、翻訳識別子制御ＴＩＤＣＴＬフィールドが１０であるならば、グローバル化プロセス識別子Ｇ＿ＰＩＤ値を用いてグローバル化マスキング実施される。この場合にはＡＮＤゲート９２０への第１入力は論理レベル１であり、コンパレータ９２４は、現在のプロセス識別子ＰＩＤ値をメモリ保護ユニットＭＰＵ制御およびステータスレジスタ７００からのグローバル化プロセス識別子Ｇ＿ＰＩＤ値に比較する。一致があれば、コンパレータ９２４の出力は論理レベル１となり、ＡＮＤゲート９２０の出力は論理レベル１となる。この場合ＯＲゲート９１６への第１入力は、（翻訳識別子制御ＴＩＤＣＴＬが１０なので）論理レベル０であり、ＯＲゲート９１６の第２入力は論理レベル１である。それゆえＯＲゲート９１６の出力も１であり、そしてＡＮＤゲート９１８の第２入力で反転するために、ＡＮＤゲート９１８の出力はすべて０に強制される。ＯＲゲート９１６は、翻訳識別子制御ＴＩＤＣＴＬが０１または１０かに従いグローバル化マスキングが生じるための適当な条件が満たされているか検出する。グローバル化マスキングが生じるべきであるならば、翻訳識別子ＴＩＤ値はすべて０に強制され、そうでなければ翻訳識別子ＴＩＤ値は、マスキングされずにＡＮＤゲート９１８を通過する。
【００４８】
翻訳識別子ＴＩＤ値がＡＮＤゲート９１８を通過すると、コンパレータ９０６によってプロセス識別子ＰＩＤに比較されて一致が生じるか判定する。好都合な比較（すなわち一致）の結果としてコンパレータ９０６の出力は高くなり（論理レベル１）、不都合な比較の結果としてコンパレータ９０６の出力は低くなる（論理レベル０）。それゆえプロセス識別子ＰＩＤが翻訳識別子ＴＩＤ値に一致すれば、コンパレータ９０８の出力に関わりなくＯＲゲート９０４の出力が高くなり、プライベートアドレスレンジが示される。しかしＡＮＤゲート９１８によって翻訳識別子ＴＩＤ値がすべて０値に強制されると、コンパレータ９０６の出力は低くなって不都合な比較を示すが、コンパレータ９０８の出力は高くなって好都合な比較（すなわち一致）を示す。この場合には、翻訳識別子ＴＩＤのマスキングのために共有レンジが示される。コンパレータ９０６の出力が高くなるか、またはコンパレータ９０８の出力が高くなれば、比較のプロセス識別子ＰＩＤ／翻訳識別子ＴＩＤ部分は、一致する結果となる。
【００４９】
図１０は、アクセスアドレスに対する領域記述子一致論理１０００とその属性、およびそれがどのようにメモリ保護ユニットＭＰＵエントリ内の対応するフィールドに比較されるかを、一部は概略的に、一部はブロック図で示す。それゆえ領域記述子一致論理１０００は、比較論理とも呼ばれ、メモリ保護ユニットＭＰＵ６０内の各領域記述子エントリに対して繰り返される。図１０の例は、図９に示したように、グローバル化イネーブルを制御するためにグローバル化プロセス識別子Ｇ＿ＰＩＤフィールドの使用を有し、さらに領域グローバル化制御イネーブルＲＧＣＥＮの使用を含む。一致論理１０００は、ＡＮＤゲート１０２２、１０２０、１０１８，１０１０，１００２および１０２６、ＯＲゲート１０１６および１００４、ならびにコンパレータ１０２４、１０１２、１０１４、１００６および１００８を含む。ＡＮＤゲート１００２の第１入力は、対応する領域記述子エントリからの有効なビット（ＭＰＵ＿エントリ［Ｖ］）を受取るように結合され、第２入力はＯＲゲート１００４の出力に結合され、第３入力はＡＮＤゲート１０１０の出力に結合される。ＡＮＤゲート１００２の出力は、一致条件が生じるか否かを示す一致信号ＭＰＵ＿エントリ＿一致を提供する。たとえば一致信号が高くなれば（論理レベル１）、当該領域記述子エントリに対する一致が生じており、一致信号が低いままかまたは低くなれば（論理レベル０）、一致は生じなかったことになる。ＯＲゲート１００４の第１入力はコンパレータ１００６の出力に結合され、ＯＲゲート１００４の第２入力はコンパレータ１００８の出力に結合される。コンパレータ１００６は、（たとえば記憶回路５７によって提供され得る）現在のアクセスリクエストのプロセス識別子ＰＩＤを受取るように結合された第１入力と、ＡＮＤゲート１０１８の出力に結合された第２入力を有する。ＡＮＤゲート１０１８は、対応する領域記述子エントリから翻訳識別子ＴＩＤ値（ＭＰＵ＿エントリ［ＴＩＤ］）を受取るように結合された第１ｎビット入力を有する。ＡＮＤゲート１０１８の第２入力は、ＯＲゲート１０１６の出力に結合された反転入力である。ＯＲゲート１０１６の第１入力は、ＡＮＤゲート１０２２の出力に結合されている。ＡＮＤゲート１０２２の第１入力は、ＯＲゲート１０２８の出力に結合されている。ＯＲゲート１０２８の第１入力は、メモリ保護ユニットＭＰＵ制御およびステータスレジスタ７００から、領域グローバル化制御イネーブルＲＧＣＥＮの値を受取るように結合された反転入力である。ＯＲゲート１０２８の第２入力は、ＡＮＤゲート１０２６の出力に結合されている。
【００５０】
ＡＮＤゲート１０２６の第１入力は、メモリ保護ユニットＭＰＵ制御およびステータスレジスタ７００から、領域グローバル化制御イネーブルＲＧＣＥＮの値を受取るように結合されており、ＡＮＤゲート１０２６の第２入力は、現在の記述子エントリの領域グローバル化制御ＲＧＣフィールドの値を受取るように結合されている。ＡＮＤゲート１０２２の第２入力は、第１インジケータを受取るように結合されている。この第１インジケータは、論理レベル１にアサートされたら、メモリ保護ユニットＭＰＵ制御およびステータスレジスタ７００からの翻訳識別子制御ＴＩＤＣＴＬフィールドの２ビット値が「０１」であることを示す。それゆえもし翻訳識別子制御ＴＩＤＣＴＬフィールドの値が「０１」でなければ、第１インジケータは論理レベル０である。ＡＮＤゲート１０２２の第３入力は、スーパーバイザ／ユーザモードインジケータ（ＭＳＲ［ＰＲ］）を受取るように結合された反転入力である。これはたとえば制御レジスタ５６内に配置できる機械状態レジスタ（ＭＳＲ）の問題状態（ＰＲ）に対応しよう。本明細書中に記載された実施形態において、ＭＳＲ［ＰＲ］に対する０の値はスーパーバイザモードを示し、１の値はユーザモードを示す。ＯＲゲート１０１６の第２入力は、ＡＮＤゲート９２０の出力に結合される。ＡＮＤゲート１０２０の第１入力は、ＯＲゲート１０２８の出力に結合されている。ＡＮＤゲート１０２０の第２入力は、第２インジケータを受取るように結合され、この第２インジケータは、論理レベル１にアサートされたら、メモリ保護ユニットＭＰＵ制御およびステータスレジスタ７００からの翻訳識別子制御ＴＩＤＣＴＬフィールドの２ビット値は「１０」であることを示す。それゆえ翻訳識別子制御ＴＩＤＣＴＬフィールドの値が「１０」でなければ、第２インジケータは論理レベル０である。ＡＮＤゲート１０２０の第３入力は、コンパレータ１０２４の出力に結合される。コンパレータ１０２４は（たとえば記憶回路５７から）現在のプロセス識別子ＰＩＤを受取るように結合された第１入力と、メモリ保護ユニットＭＰＵ制御およびステータスレジスタ７００からグローバル化プロセス識別子Ｇ＿ＰＩＤ値を受取るように結合された第２入力を有する。コンパレータ１００８は、ＡＮＤゲート１０１８の出力に結合された第１入力を有する。ＡＮＤゲート１０１０は、コンパレータ１０１２の出力に結合された第１入力と、コンパレータ１０１４の出力に結合された第２入力を有する。コンパレータ１０１２は、メモリアクセスリクエストのアクセスアドレスを受取るように結合された第１入力と、対応する領域記述子エントリから上限値（ＭＰＵ＿エントリ［ＵＰＰＥＲ＿ＢＯＵＮＤ］）を受取るように結合された第２入力を有する。コンパレータ１０１４は、メモリアクセスリクエストのアクセスアドレスを受取るように結合された第１入力と、対応する領域記述子エントリから下限値（ＭＰＵ＿エントリ［ＬＯＷＥＲ＿ＢＯＵＮＤ］）を受取るように結合された第２入力を有する。
【００５１】
動作中、上にゲート９１６、９１８、９０６、９０８、９０４、９１２、９１４、９１０および９０２に関して説明したことは、それぞれゲート１０１６、１０１８、１００６、１００８、１００４、１０１２、１０１４、１０１０、１００２に該当することに留意されたい。しかし、一致論理１０００においてグローバル化マスキングは、領域グローバル化制御イネーブルＲＧＣＥＮがイネーブルされると（たとえば論理レベル１）、さらに各エントリの領域グローバル化制御ＲＧＣフィールドによって適格にされる。領域グローバル化制御イネーブルＲＧＣＥＮがイネーブルされないと（たとえば論理レベル０）、ＯＲゲート１０２８の反転入力のために、（ＡＮＤゲート１０２６の出力における値に関わりなく）ＯＲゲート１０２８の出力は論理レベル１である。このようにしてエントリに対して翻訳識別子制御ＴＩＤＣＴＬ値に従い、グローバル化マスキングが実施される。すなわちＯＲゲート１０２８の出力は論理レベル１であるから、ＯＲゲート１０２８の出力はゲート１０２２および１０２０の出力に影響せず、これらのゲートの出力は、他の２つの入力によって判定される（これについては上に図９の類似の回路を参照して説明した）。
【００５２】
領域グローバル化制御イネーブルＲＧＣＥＮがイネーブルされると、特定の領域記述子に対するグローバル化マスキングが、領域記述子の対応する領域グローバル化制御ＲＧＣフィールドによって判定される。領域グローバル化制御イネーブルＲＧＣＥＮがイネーブルされると（論理レベル１）、ＯＲゲート１０２８の第１入力は論理レベル０であり、ＯＲゲート１０２８の出力は、ＡＮＤゲート１０２６の出力によって判定される。それゆえ領域グローバル化制御イネーブルＲＧＣＥＮはイネーブルされるが、対応する領域記述子（すなわちエントリ）の領域グローバル化制御ＲＧＣフィールドが論理レベル０であれば、領域記述子に対してグローバル化マスキングは実施されない。この場合にはＡＮＤゲート１０２６の出力は論理レベル０であり、したがってＯＲゲート１０２８の出力も論理レベル０である。このことはＡＮＤゲート１０２２および１０２０の出力、したがってＯＲゲート１０１６の出力が、論理レベル０であることを保証する。それゆえ翻訳識別子ＴＩＤの値は、マスキングされずにＡＮＤゲート１０１８を通過してコンパレータ１００６および１００８に達する。しかし、領域グローバル化制御イネーブルＲＧＣＥＮがイネーブルされ（論理レベル１）、対応する領域記述子の領域グローバル化制御ＲＧＣフィールドが１であれば、エントリに対して翻訳識別子制御ＴＩＤＣＴＬ値に従うグローバル化マスキングが実施される。この場合にはＡＮＤゲート１０２６の出力およびＯＲゲート１０２８は論理レベル１であり、したがってゲート１０２２および１０２０の出力には影響せず、これらのゲートの出力は、他の２つの入力によって判定される（これについては上に図９の類似の回路を参照して説明した）。それゆえ領域グローバル化制御イネーブルＲＧＣＥＮがイネーブルされ、領域記述子の領域グローバル化制御ＲＧＣがアサートされたら、当該領域記述子に対してグローバル化マスキングがイネーブルされて、翻訳識別子制御ＴＩＤＣＴＬフィールドの値に従いプロセス識別子ＰＩＤが、領域記述子の翻訳識別子ＴＩＤに一致しない他のプロセスによって利用され得る。
【００５３】
図１１は、本発明の一実施形態に従うメモリ保護ユニットＭＰＵ６０の動作の方法１１００をフローチャートで示す。図１１に示す実施形態において、メモリ保護ユニットＭＰＵ制御およびステータスレジスタ（たとえばメモリ保護ユニットＭＰＵ制御およびステータスレジスタ７００）のＲＣＧＥＮと、グローバル化プロセス識別子Ｇ＿ＰＩＤフィールドおよび領域記述子の領域グローバル化制御ＲＧＣフィールドとが、メモリ保護ユニットＭＰＵ６０に対して存在している。図示された実施形態において、メモリ保護ユニットＭＰＵ制御およびステータスレジスタ（たとえばメモリ保護ユニットＭＰＵ制御およびステータスレジスタ７００）の翻訳識別子制御ＴＩＤＣＴＬフィールドは、少なくとも３つの状態（たとえば００、０１、１０）を持てることが前提とされている。方法１１００はブロック１１０２で開始し、ここで翻訳識別子制御ＴＩＤＣＴＬ、ＲＣＧＥＮ、グローバル化プロセス識別子Ｇ＿ＰＩＤ、およびメモリ保護ユニットイネーブルＭＰＵＥＮフィールドが適当に初期化される。たとえば或る適当な状態は、翻訳識別子制御ＴＩＤＣＴＬ（たとえば図８に関して説明した００、０１、１０）に記憶でき、適当なグローバルプロセス識別子ＰＩＤはグローバル化プロセス識別子Ｇ＿ＰＩＤに記憶でき、ＲＣＧＥＮはアサートまたはネゲートされて、それぞれ領域グローバル化制御ＲＧＣフィールドの使用をイネーブルまたはディスエーブルすることができる。メモリ保護ユニットＭＰＵ６０の領域記述子内の各領域グローバル化制御ＲＧＣフィールドは、各領域記述子エントリが作成されるときに初期化され得る。
【００５４】
方法１１００は判定ダイヤモンド１１０４に進み、ここでＲＣＧＥＮがイネーブルされるか判定される。ＲＣＧＥＮがイネーブルされなければ、方法は判定ダイヤモンド１１０８に進み、ここでメモリ保護ユニットＭＰＵ６０内の各領域記述子について翻訳識別子制御ＴＩＤＣＴＬフィールドの値に基づき、グローバル化マスキングが選択的にイネーブルされる。以下に説明するように判定ダイヤモンド１１０８、１１１０および１１１２は、領域記述子に対応する特定のメモリ領域についてグローバル化マスキングが行なわれるべきか判定する。判定ダイヤモンド１１０４で領域グローバル化制御イネーブルＲＧＣＥＮがイネーブルされたら、フローチャートは判定ダイヤモンド１１０６に進み、ここで各領域記述子について対応する領域グローバル化制御ＲＧＣが、イネーブルされるか判定される。次に方法１１００は判定ダイヤモンド１１０８に進み、ここで（判定ダイヤモンド１１０８、１１１０および１１１２に対応して）翻訳識別子制御ＴＩＤＣＴＬ値に従いグローバル化マスキングを実施するか否かの判定は、領域グローバル化制御ＲＧＣフィールドがイネーブルされた領域記述子についてのみ行なわれる。領域グローバル化制御ＲＧＣがイネーブルされない他のすべての領域記述子については、翻訳識別子ＴＩＤ比較が普通に行なわれ、上述したように一致条件が生じるためには現在のプロセス識別子ＰＩＤは、領域記述子の翻訳識別子ＴＩＤに一致する必要がある。
【００５５】
判定ダイヤモンド１１０８では、グローバル化がイネーブルされた領域記述子（ＲＧＣＥＮがイネーブルされない場合にはすべての領域記述子、または領域グローバル化制御イネーブルＲＧＣＥＮがイネーブルされた場合にはイネーブルされた領域グローバル化制御ＲＧＣフィールドを持つ領域記述子のみ）について、翻訳識別子制御ＴＩＤＣＴＬフィールドが状態０にあるか判定される。一実施形態において状態０は、図８を参照して述べられた「００」の値に対応することができる。対応する場合には方法１１００はブロック１１２２に進み、ここでは翻訳識別子ＴＩＤのマスキングは生じない。このマスキングがない場合には、一致条件を判定するための翻訳識別子ＴＩＤ比較が普通に行なわれる。判定ダイヤモンド１１０８で翻訳識別子制御ＴＩＤＣＴＬフィールドが状態０になければ、方法１１００は判定ダイヤモンド１１１０に進み、ここで翻訳識別子制御ＴＩＤＣＴＬフィールドが状態２にあるか判定される。一実施形態において状態２は、図８を参照して述べたように「１０」の値に対応することができる。対応する場合には、方法１１００は判定ダイヤモンド１１１４に進み、ここで現在のメモリアクセスリクエストに対応する現在のプロセス識別子ＰＩＤが、グローバル化プロセス識別子ＰＩＤ（メモリ保護ユニットＭＰＵ制御およびステータスレジスタのグローバル化プロセス識別子Ｇ＿ＰＩＤ）に一致するか判定される。一致しない場合には、方法はブロック１１２２に進み、ここでは当該領域記述子に対して翻訳識別子ＴＩＤのマスキングは実施されない。一致する場合には、方法は判定ダイヤモンド１１１６に進み、ここで（領域記述子のＵＰＰＥＲ＿ＢＯＵＮＤフィールドとＬＯＷＥＲ＿ＢＯＵＮＤフィールドを用いて）現在のメモリアクセスリクエストのアドレスが、領域記述子に対応するメモリ領域に一致するか判定される。判定ダイヤモンド１１１６でアドレスの一致がなければ、方法１１００はブロック１１２０に進み、ここでは当該エントリについて一致条件は生じない。或る場合には、アクセス例外が出される（たとえばメモリ保護ユニットＭＰＵ６０のどの領域記述子とも一致が生じない場合）。判定ダイヤモンド１１１６でアドレスの一致があれば、方法１１００はブロック１１１８に進み、ここで方法は翻訳識別子ＴＩＤの比較をマスキングして、現在のプロセスが、（メモリ保護ユニットＭＰＵ６０の領域記述子によって）異なるプロセスに割当てられ得るメモリにアクセスできるようにする。
【００５６】
判定ダイヤモンド１１１０で翻訳識別子制御ＴＩＤＣＴＬフィールドが状態２になければ、方法１１００は判定ダイヤモンド１１１２に進み、ここで翻訳識別子制御ＴＩＤＣＴＬフィールドが状態１にあり（図８を参照して述べたように「１０」の翻訳識別子制御ＴＩＤＣＴＬ値に対応することができる）、プロセッサは、スーパーバイザモードで動作しているか判定される。該当しない場合には、方法１１００はポイントＢを通ってブロック１１２２に進み、ここではマスキングが実施されない。該当する場合には、方法１１００は判定ダイヤモンド１１２４に進み、ここで現在のメモリアクセスリクエストのアドレスが領域記述子に対応するメモリの領域に一致するか判定される。一致しない場合には、方法１１００はポイントＡを通ってブロック１１２０に進む。アドレスの一致が生じる場合には、方法１１００はブロック１１１８に進み、ここで方法は、翻訳識別子ＴＩＤとプロセス識別子ＰＩＤの一致比較をマスキングして、現在のプロセスが異なるプロセスに割当てられ得るメモリにアクセスできるようにする。
【００５７】
それゆえ以上によって、どのようにグローバル化マスキングが行なわれて、プロセッサ上のプロセス実行が、メモリ保護ユニットＭＰＵ領域記述子の方法によって異なるプロセスに割当てられたメモリ内の領域にアクセスできるようになるかが理解される。このようにしてグローバル化マスキングは、領域記述子の翻訳識別子ＴＩＤなど領域記述子の部分が、一致条件の判定において利用されないようにすることができる。たとえば翻訳識別子ＴＩＤに対してグローバル化マスキングが行なわれると、現在のプロセスのプロセス識別子は、アクセスされているメモリ領域に対応する領域記述子の翻訳識別子ＴＩＤに一致する必要がない。一実施形態においてグローバル化マスキングがイネーブルされると、領域記述子の翻訳識別子ＴＩＤが０に強制されて領域記述子比較から有効に除外されるので、現在のプロセスは、任意のプロセス識別子ＰＩＤ値を持つことができる。代替としてグローバル化マスキングがイネーブルされると、現在のプロセスは、アクセスされている領域に対応する翻訳識別子ＴＩＤよりも、グローバルプロセス識別子ＰＩＤに一致しなければならない。さらに領域記述子の領域グローバル化制御ＲＧＣフィールドなど追加の制御を用いることによって、メモリ保護ユニットＭＰＵ内の領域記述子のサブセットに対してグローバル化マスキングが実施され得る。このようにして処理時間またはメモリ保護ユニットＭＰＵ内のエントリの数を増すことなく、スーパーバイザコードなど特定のソフトウエアによって多くの制御を与えることができる。
【００５８】
本発明を実施する装置は、大部分が当業者に公知の電子コンポーネントと電子回路からなるので、本発明の基礎をなすコンセプトを理解および評価し、また本発明の教示を不明瞭または散漫にしないために、回路の詳細については上述したように必要と見なされる程度を越えて説明しない。
【００５９】
上記の実施形態の幾つかで該当するものは、多様な種類の情報処理システムを用いて実施できる。たとえば図１とこれに関する議論は、例示的な情報処理アーキテクチャを記述しているが、この例示的なアーキテクチャは、単に本発明の種々の側面を論じる際に有益な参照を提供するために提示されているに過ぎない。もちろん、アーキテクチャの記述は、議論の目的のために単純化されており、本発明に従って使用できる多様なタイプの適当なアーキテクチャの一つに過ぎない。当業者は、論理ブロックの境界が単に例示的なものであり、代替的な実施形態は、論理ブロックや回路要素を統合したり、別様に機能を分解して種々の論理ブロックや回路要素に課したりできることを認識するであろう。
【００６０】
したがって本明細書中に示されたアーキテクチャは、単に例示的なものであり、実際には同じ機能を達成する他の多くのアーキテクチャも実施できることが理解されるべきである。抽象的ではあるが明確な意味において、同じ機能を達成するためのコンポーネントの任意の構成は、所望の機能が達成されるように有効に「関連している」。したがって本明細書中で特定の機能を達成するために組み合わされた２つのコンポーネントは、アーキテクチャであるか中間的なコンポーネントであるかに関わりなく、所望の機能が達成されるように互いに「関連している」。同様に、そのように関連している任意の２つのコンポーネントは、所望の機能を達成するために互いに「動作的に接続している」または「動作的に結合している」と見ることができる。
【００６１】
またたとえば一実施形態において、システム１００の図示された素子は、単一の集積回路上または同じデバイス内に配置された回路である。代替として、システム１００は、任意の数の別個の集積回路または互いに相互接続された別個のデバイスを含むことができる。
【００６２】
さらに当業者は、上記の動作の機能間の境界が単に例示的なものに過ぎないことを認識するであろう。多数の動作の機能は、単一の動作に組み合わされ、および／または単一の動作の機能は、追加の動作に配分されてよい。さらに代替的な実施形態は、特定の動作の多数のインスタンスを含んでよく、動作の順序は、他の種々の実施形態で変更されてよい。
【００６３】
本明細書において本発明は、特定の実施形態を参照して説明されているが、以下の特許請求の範囲に記載された本発明の範囲から逸脱することなく種々の変容や変更を行うことができる。したがって詳細な説明と図面は、制限的な意味ではなく例示的な意味を持つものと見なされるべきであり、そのようなすべての変容は、本発明の範囲に含まれることが意図されている。本明細書で特定の実施形態に関して記載されているいかなる効果、利点または問題の解決も、一部または全部の請求項の枢要、不可欠または必須の特徴もしくは要素と解釈されることを意図していない。
【００６４】
本明細書中で使用されている「結合」という言葉は、直接的結合または機械的結合に制限されることを意図していない。
さらに本明細書中で使用されている「ａ」または「ａｎ」の言葉は、１つまたは１つよりも多いものとして定義される。また、特許請求の範囲において「少なくとも１つの」や「１つ以上の」などの導入句を使用することは、不定冠詞「ａ」または「ａｎ」によって他の請求要素を導入することが、そのように導入された請求要素を含む特定の請求項を、そのような要素を１個のみ含む発明に制限することを含意するものと解釈されてはならない。これは、同じ請求項が「１つ以上の」または「少なくとも１つの」という導入句と、「ａ」または「ａｎ」などの不定冠詞を含む場合も同様である。
【００６５】
別途記載のない限り、「第１」および「第２」という言葉は、そのような言葉で記述される要素を任意に区別するために用いられる。したがってこれらの言葉は、必ずしもそれらの要素の時間順や優先順を示すことが意図されていない。
【００６６】
以下に、本発明の種々の実施形態を示す。
技術思想１に含まれるコンピュータ処理システムは、メモリ保護ユニット（ＭＰＵ）と；メモリ保護ユニットに関連する複数の領域記述子とを有し、領域記述子は、それぞれのメモリ領域に対するアドレスレンジと翻訳識別子値とを有する。コンピュータ処理システムはさらに、翻訳識別子制御インジケータ（ＴＩＤＣＴＬ）と；制御論理とを有しており、制御論理は、翻訳識別子制御インジケータが第１状態にあるか否かを判定して、翻訳識別子制御インジケータが第１状態にある場合には、処理システムによって実行されている第１プロセスが、処理システムの第２プロセスに割当てられたメモリ領域にアクセスできるように動作可能である。技術思想２は技術思想１のシステムを有し、制御論理は、翻訳識別子制御インジケータが第１状態にある場合には、複数の領域記述子の第２プロセスに対応する１つ以上の部分をマスキングする。技術思想３は技術思想２のシステムを有し、領域記述子のマスキングされた部分は、翻訳識別子値（ＴＩＤ）である。技術思想４は技術思想１のシステムを有し、さらに領域グローバル化制御イネーブルインジケータ（ＲＧＣＥＮ）と；プロセス識別子（ＰＩＤ）と；制御論理とを有し、制御論理は、領域グローバル化制御イネーブルインジケータが第１状態にあるか否かを判定するように動作可能であり、領域グローバル化制御イネーブルインジケータが第１状態にはない場合には、翻訳識別子制御ＴＩＤＣＴＬインジケータが第１状態にあるか否かに応じて第１プロセスが、第２プロセスに割当てられたメモリ領域にアクセスできるようにする。技術思想５は技術思想４のシステムを有し、さらに領域記述子は、グローバル化インジケータが第１状態にあるときには、それぞれの領域記述子が他のプロセスによって利用され得るか否かを示す領域グローバル化制御インジケータ（ＲＧＣ）を含む。技術思想６は技術思想１のシステムを有し、さらに制御レジスタ内のグローバル化ＰＩＤ（Ｇ＿ＰＩＤ）フィールドと；制御論理とを有し、翻訳識別子制御インジケータが第１状態にあり、かつ第１プロセスのプロセス識別子（ＰＩＤ）値がグローバル化プロセス識別子Ｇ＿ＰＩＤフィールド内の値に一致するときには、制御論理は、翻訳識別子（ＴＩＤ）比較のためにグローバル化マスキングを使用するように動作可能である。技術思想７は技術思想１のシステムを有し、さらに翻訳識別子制御インジケータが第１状態にあり、第１プロセスがスーパーバイザモードにあるときには、翻訳識別子（ＴＩＤ）比較のためにグローバル化マスキングを使用するように動作可能である制御論理を有する。技術思想８は技術思想１のシステムを有し、さらに制御レジスタ内のメモリ保護ユニットイネーブル（ＭＰＵＥＮ）インジケータを有し、メモリ保護ユニットイネーブルＭＰＵＥＮインジケータが第１状態にあるときには、第１プロセスのアクセスアドレスが複数の領域記述子の１つ以上におけるアドレスに比較されて一致が存在するか否かを判定する。技術思想９は技術思想８のシステムを有し、一致が検出されず、かつアクセスタイプがメモリ保護ユニットＭＰＵ保護をバイパスするようにはイネーブルされないときには、例外条件が送信されてアクセスを試みる。
【００６７】
技術思想１０に含まれるコンピュータ処理システムは、メモリ保護ユニット（ＭＰＵ）と；グローバル化プロセス識別子（Ｇ＿ＰＩＤ）フィールドを含む制御レジスタと；メモリ保護ユニットＭＰＵに関連する複数の領域記述子とを有し、少なくとも１つの領域記述子が第１プロセスに割当てられており；さらに制御論理を有する。制御論理は、第１プロセスに対するプロセス識別子（ＰＩＤ）がグローバル化プロセス識別子Ｇ＿ＰＩＤフィールド内の値に一致するときには、第１プロセスが、第２プロセスのために割当てられたメモリ領域にアクセスできるように動作可能である。技術思想１１は技術思想１０のシステムを有し、さらに翻訳識別子制御インジケータ（ＴＩＤＣＴＬ）と；制御論理とを有し、翻訳識別子制御（ＴＩＤＣＴＬ）インジケータが第１状態にあり、かつ第１プロセスがスーパーバイザモードにあるときには、制御論理が第１プロセスと第２プロセスとに対する複数の領域記述子の１つ以上における翻訳識別子値（ＴＩＤ）をマスキングするように動作可能である。技術思想１２は技術思想１０のシステムを有し、翻訳識別子制御インジケータ（ＴＩＤＣＴＬ）が第１状態にある場合には、制御論理は、領域記述子の第２プロセスに使用される部分をマスキングする。技術思想１３は技術思想１２のシステムを有し、領域記述子のマスキングされた部分は、翻訳識別子値（ＴＩＤ）である。技術思想１４は技術思想１２のシステムを有し、さらに複数の領域記述子の１つ以上は、それぞれの領域記述子において定義されたメモリ領域が他のプロセスによって利用され得るか否かを示す領域グローバル化制御インジケータ（ＲＧＣ）を含む。技術思想１５は技術思想１４のシステムを有し、さらに領域グローバル化制御イネーブルインジケータ（ＲＧＣＥＮ）を含む制御レジスタと；制御論理とを有し、制御論理は、領域グローバル化制御イネーブルインジケータが第１状態にあるか否かを判定して、領域グローバル化制御イネーブルインジケータが第１状態にはない場合には、翻訳識別子制御ＴＩＤＣＴＬインジケータが第１状態にあるか否かに応じて第１プロセスが、第２プロセスに割当てられたメモリ領域にアクセスできるように動作可能である。技術思想１７は技術思想１４のシステムを有し、さらに制御レジスタ内のメモリ保護ユニットイネーブル（ＭＰＵＥＮ）インジケータを初期化することを有し、メモリ保護ユニットイネーブルＭＰＵＥＮインジケータが第１状態にあるときには、アクセスアドレスを複数の領域記述子の１つ以上で指定されたアドレスレンジに比較して一致が存在するか否かを判定し；一致が検出されず、かつアクセスタイプがメモリ保護ユニットＭＰＵ保護をバイパスするようにはイネーブルされないときには、例外条件が送信されてアクセスを試みる。
【００６８】
技術思想１８に含まれる方法は、コンピュータシステムにおけるメモリ保護ユニット（ＭＰＵ）の制御レジスタ内の翻訳識別子制御（ＴＩＤＣＴＬ）インジケータを初期化することを有し；翻訳識別子制御ＴＩＤＣＴＬインジケータが第１状態にあるときには、第１プロセスと第２プロセスとに対するメモリ保護ユニットＭＰＵの複数の領域記述子の１つ以上において翻訳識別子比較をマスキングして、第１プロセスが、第２プロセスに割当てられたメモリ領域にアクセスできるようにする。技術思想１９は技術思想１８の方法を有し、さらに制御レジスタ内の領域グローバル化制御イネーブル（ＲＧＣＥＮ）インジケータを初期化することを有し；領域グローバル化制御イネーブルＲＧＣＥＮと翻訳識別子制御ＴＩＤＣＴＬインジケータとが両方とも指定された状態にあるときには、第２プロセスに対する領域記述子における領域グローバル化制御（ＲＧＣ）インジケータが指定された状態にあるか否かに基づき、翻訳識別子のマスキングが実施されることを含む。技術思想２０は技術思想１８の方法を有し、さらに制御レジスタ内のグローバル化プロセス識別子（Ｇ＿ＰＩＤ）を初期化して第２プロセスに対するプロセス識別子（ＰＩＤ）を指定し；制御レジスタ内の初期化メモリ保護ユニットイネーブル（ＭＰＵＥＮ）インジケータを初期化することを有し、メモリ保護ユニットイネーブルＭＰＵＥＮインジケータが第１状態にあるときには、アクセスアドレスを複数の領域記述子の１つ以上によって定義されたアドレスレンジに比較して、一致が存在するか否かを判定することを含む。
【図１】
2013065296.tif 000003
【図２】
2013065296.tif 000004
【図３】
2013065296.tif 000005
【図４】
2013065296.tif 000006
【図５】
2013065296.tif 000007
【図６】
2013065296.tif 000008
【図７】
2013065296.tif 000009
【図８】
2013065296.tif 000010
【図９】
2013065296.tif 000011
【図１０】
2013065296.tif 000012
【図１１】
2013065296.tif 000013