(57)【要約】  プロセッサ２０には、第１の許可の組を適用する第１のメモリ保護ユニット３８と、第２の許可の組を適用する第２のメモリ保護ユニット４０とが提供される。第１の許可の組及び第２の許可の組の両方が満たされる場合にのみ、メモリ・アクセスは許可される。プロセッサは、また、仮想アドレスＶＡから物理アドレスＰＡへと変換するように機能するメモリ管理ユニット４２を含む。第１のメモリ保護ユニット３８及びメモリ管理ユニット４２のうちの選択可能な１つは、ゲスト・オペレーティング・システムが実行される例外レベルより高い特権を用いる例外レベルで実行されるハイパーバイザ・プログラム２によって設定された選択ビットの制御下で、任意の所与の時点にアクティブである。
2016510469.tif 000002
【特許請求の範囲】
【請求項１】
プログラム命令のストリームを実行するように構成された処理回路と、
メモリ・アクセス動作が前記処理回路によって実行されるように、メモリ内のメモリ・アドレス位置を直接指定する物理アドレスを受信し、
前記メモリ・アクセス動作が許可されるかどうかを第１の許可の組に従って判断する
ように構成された第１のメモリ保護ユニットと、
前記物理アドレスを受信し、
前記メモリ・アクセス動作が許可されるかどうかを第２の許可の組に従って判断する
ように構成された第２のメモリ保護ユニットと
を含み、
前記第１の許可の組と前記第２の許可の組の両方を満たす場合にのみ、前記メモリ・アクセス動作が許可される、データを処理するための装置。
【請求項２】
前記処理回路は、例外レベルの階層内で選択可能な例外レベルで動作するように構成され、
例外レベルの前記階層内で第１の例外レベルで動作する場合、前記処理回路は、前記第１の許可の組を変更することを許可され、前記第２の許可の組を変更することを許可されず、
例外レベルの前記階層内で第２の例外レベルで動作する場合、前記処理回路は、前記第２の許可の組を変更することを許可される、請求項１に記載の装置。
【請求項３】
前記処理回路は、前記第１の例外レベルで動作する場合、リアルタイム・オペレーティング・システムのプログラム命令を実行し、前記第２の例外レベルで動作する場合、ハイパーバイザ・プログラムのプログラム命令を実行するように構成される、請求項２に記載の装置。
【請求項４】
ハイパーバイザ・プログラムは、それぞれが許可の関連する第１の組を有する複数のリアルタイム・オペレーティング・システムのうちの選択された１つを実行するように前記処理回路を制御する、請求項３に記載の装置。
【請求項５】
前記第１のメモリ保護ユニット及び前記第２のメモリ保護ユニットは、前記第１の許可の組及び前記第２の許可の組をそれぞれ使用して、少なくとも部分的に共有されるハードウェアを提供される、請求項１から４までのいずれか一項に記載の装置。
【請求項６】
メモリ管理ユニットを含み、前記メモリ管理ユニットは、
仮想メモリ・アクセス動作が前記処理回路によって実行されるように、仮想メモリ・アドレス空間内の仮想メモリ・アドレス位置を指定する仮想アドレスを受信し、
メモリ・マッピング・データに従って、前記メモリ内の物理メモリ・アドレスの位置を直接指定する物理アドレスへと前記仮想アドレスを変換する
ように構成される、請求項１から５までのいずれか一項に記載の装置。
【請求項７】
前記メモリ管理ユニットは、前記メモリ・マッピング・データ内の仮想メモリ許可の組に従って、前記仮想メモリ・アクセス動作が許可されるかどうかを判断するように構成される、請求項６に記載の装置。
【請求項８】
前記第１の例外レベルで動作する場合、前記処理回路は、前記メモリ・マッピング・データを変更することを許可され、前記第２の許可の組を変更することを許可されない、請求項２、並びに請求項６及び請求項７のいずれか一項に記載の装置。
【請求項９】
前記処理回路が前記第１の例外レベルで動作している間に、前記第１のメモリ保護ユニット及び前記メモリ管理ユニットの１つをアクティブにするように選択するために、前記第２の例外レベルから前記第１の例外レベルに切り替える際に動作するように構成された選択回路を含む、請求項２、並びに請求項６、７、及び８のいずれか一項に記載の装置。
【請求項１０】
前記第２の例外レベルで動作する場合、前記選択回路による前記選択は、前記処理回路によって書き込まれた選択ビットに依存し、
前記第１の例外レベルで動作する場合、前記選択ビットは、前記処理回路によって書き込み可能ではない、請求項９に記載の装置。
【請求項１１】
前記第１の例外レベルから前記第２の例外レベルへと切り替えるときに文脈データを格納し、前記第２の例外レベルから前記第１の例外レベルへと切り替えるときに前記文脈データを回復するように構成された例外制御回路を含み、前記選択ビットは、前記文脈データの一部である、請求項１０に記載の装置。
【請求項１２】
前記メモリ管理ユニットは、物理アドレスに仮想アドレスをマップする変換データを格納するように構成された変換ルックアサイド・バッファを含む、請求項６から１１までのいずれか一項に記載の装置。
【請求項１３】
前記メモリ管理ユニットは、前記メモリ・マッピング・データを決定するために前記メモリ内に格納されたページ・テーブル・データを通じてページ・テーブル・ウォーク動作を実行するように構成される、請求項６から１２までのいずれか一項に記載の装置。
【請求項１４】
前記処理回路は、前記仮想メモリ・アドレス・スペースを使用して、グラフィカル・ユーザ・インターフェースをサポートするオペレーティング・システム及び１つ又は複数のアプリケーション・プログラムを実行するように構成される、請求項６から１３までのいずれか一項に記載の装置。
【請求項１５】
前記第１のメモリ保護ユニットがアクティブな場合、前記第１の許可の組は、前記処理回路によって書き込むことができ、前記メモリ・マッピング・データを決定するためのページ・テーブル・データの開始位置を示す変換テーブル・ベース・レジスタ値は、前記処理回路によって書き込まれなくてもよく、
前記メモリ管理ユニットがアクティブな場合、前記第１の許可の組は、前記処理回路によって書き込まれなくてもよく、前記メモリ・マッピング・データを決定するためのページ・テーブル・データの開始位置を示す変換テーブル・ベース・レジスタ値は、前記処理回路によって書き込むことができる、請求項６から１４までのいずれか一項に記載の装置。
【請求項１６】
前記第１の許可の組及び前記変換テーブル・ベース・レジスタ値は、前記処理回路に結合されたコプロセッサ回路内のレジスタがマップされた値として格納される、請求項１５に記載の装置。
【請求項１７】
前記第１のメモリ保護ユニット及び前記第２のメモリ保護ユニットは、前記第１の許可の組及び前記第２の許可の組をそれぞれチェックするために、並行して動作するように構成される、請求項１から１６までのいずれか一項に記載の装置。
【請求項１８】
処理回路を用いてプログラム命令のストリームを実行するステップと、
メモリ・アクセス動作が前記処理回路によって実行されるように、メモリ内のメモリ・アドレス位置を直接指定する物理アドレスを受信するため、及び
前記メモリ・アクセス動作が許可されるかどうかを第１の許可の組に従って判断するために、
第１のメモリ保護ユニットを使用するステップと、
前記物理アドレスを受信するため、及び
前記メモリ・アクセス動作が許可されるかどうかを第２の許可の組に従って判断するために、
第２のメモリ保護ユニットを使用するステップと
を含み、
前記第１の許可の組と前記第２の許可の組の両方を満たす場合にのみ、前記メモリ・アクセス動作が許可される、データを処理する方法。
【請求項１９】
例外レベルの階層内で選択可能な例外レベルで前記処理回路を動作させるステップと、
例外レベルの前記階層内で第１の例外レベルで動作する場合、前記処理回路が、前記第１の許可の組を変更することを許可し、前記第２の許可の組を変更することを許可しないステップと、
例外レベルの前記階層内で第２の例外レベルで動作する場合、前記処理回路が、前記第２の許可の組を変更することを許可するステップと
を含む、請求項１８に記載の方法。
【請求項２０】
仮想メモリ・アクセス動作が前記処理回路によって実行されるように、仮想メモリ・アドレス空間内の仮想メモリ・アドレス位置を指定する仮想アドレスを受信するため、及び
メモリ・マッピング・データに従って、前記メモリ内の物理メモリ・アドレスの位置を直接指定する物理アドレスへと前記仮想アドレスを変換するために、
メモリ管理ユニットを使用するステップを含む、請求項１８又は１９に記載の方法。
【請求項２１】
前記第２の例外レベルから前記第１の例外レベルに切り替える際に、前記処理回路が前記第１の例外レベルで動作している間に、前記第１のメモリ保護ユニット及び前記メモリ管理ユニットの１つをアクティブにするように選択するステップを含む、請求項１９及び請求項２０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理システムの分野に関する。より詳細には、本発明は、データ処理システム内のメモリ保護ユニットの提供及び使用に関する。
【背景技術】
【０００２】
システムで実行されているプログラムによってメモリ区域へのアクセスを制御する目的で、データ処理システムにメモリ保護ユニット（ＭＰＵ）を提供することが知られている。メモリ保護ユニットは物理アドレスを受信し、メモリ・アクセス動作が許可されるかどうかをアクセス許可の組に従って判断する。メモリ保護ユニットは、特定の処理タスクを完了するのにどれくらい時間がかかるかに関して決定論的な振る舞いを有することが望ましいリアルタイム・システム内で使用するのに好適である。そのようなシステム内では、仮想アドレスを物理アドレスに変換するために必要な変換データを取得するために、主メモリ内でページ・テーブル・ウォーキングを必要とする変換ルックアサイド・バッファのミスのために、たとえば、潜在的に長い遅延が生じる可能性があるため、仮想アドレス指定を使用することには問題がある。
【０００３】
処理システムの技術が進歩するに従い、実行できる単位時間ごとの処理量に関して、こうしたシステムのパフォーマンスが同時に上昇している。加えて、可能な場合は、データ処理システムのコストを減らすように持続的な圧力がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
一態様から見ると、本発明は、
プログラム命令のストリームを実行するように構成された処理回路と、
メモリ・アクセス動作が前述の処理回路によって実行されるように、メモリ内のメモリ・アドレス位置を直接指定する物理アドレスを受信し、
前述のメモリ・アクセス動作が許可されるかどうかを第１の許可の組に従って判断するように構成された第１のメモリ保護ユニットと、
前述の物理アドレスを受信し、
前述のメモリ・アクセス動作が許可されるかどうかを第２の許可の組に従って判断するように構成された第２のメモリ保護ユニットと
を含む、データを処理するための装置を提供し、
許可の前述の第１の組と許可の前述の第２の組の両方を満たす場合にのみ、前述のメモリ・アクセス動作が許可される。
【０００５】
本技術は、第１のメモリ保護ユニットと第２のメモリ保護ユニットの両方を含むデータを処理するための装置を提供し、これらのメモリ保護ユニットの両方によって管理された許可を満たす場合にのみ、メモリ・アクセス動作が許可され、たとえば、第１のメモリ保護ユニットは、（すべての物理アドレスを使用する）ゲスト・リアルタイム・オペレーティング・システムに代わって、第１のアクセス許可の組を適用し、第２のメモリ保護ユニットは、複数のゲスト・オペレーティング・システム間の基礎をなすハードウェアの共有を管理するハイパーバイザ・プログラムに代わって、第２のアクセス許可の組を適用する。各仮想リアルタイム・システムは、そのメモリ・アクセス許可を実施するために第１のメモリ保護ユニットを使用することができ、次いで、ゲスト・オペレーティング・システムを管理するハイパーバイザは、ハイパーバイザによって管理されるアクセス許可を実施するために第２のメモリ保護ユニットを使用することができるため、この形態を有するシステムは、１つ又は複数のリアルタイム・システムを仮想化することができる。リアルタイム・プロセッサの仮想化は、技術分野内における受け入れられた知恵及び偏見に逆らうものである。その理由は、これが通常、リアルタイム・プロセッサの決定論的な振る舞いを受け入れがたいほど損ない、十分に適時な方法で処理タスクを実行するその能力を潜在的に妨げると見なされる可能性があるからである。しかしながら、本技術では、プロセッサ技術の進歩によって提供された処理速度の上昇によって、受け入れ可能な処理速度及び応答性のレベルをまだ維持しながら、リアルタイム・プロセッサを仮想化することは可能であると認識している。仮想化されたリアルタイム・プロセッサに関連する許可を実施するために物理アドレスで動作する第１のメモリ保護ユニットだけでなく、ハイパーバイザに関連する許可を実施するために物理アドレスで動作する第２のメモリ保護ユニットも使用することで、仮想アドレスを扱うことに関連する制限されていない遅延を回避することができ、仮想化されたリアルタイム・プロセッサに対しても、メモリ・アクセス動作に対して受け入れ可能な処理遅延を最大にすることができるという効果をもたらす。仮想化されたリアルタイム・プロセッサを提供することには、そのプロセッサの個別の実際のインスタンスを回避することができるため、コストが削減されるという長所がある。
【０００６】
仮想化されたリアルタイム・プロセッサとハイパーバイザとの間のセキュリティの管理は、処理回路を構成することによって例外レベルの階層をサポートするシステム内で促進できるため、第１の例外レベルで動作する場合、処理回路は、第１の許可の組を変更することを許可され、第２の許可の組を変更することを許可されず、一方、第２の例外レベルで動作する場合、処理回路は、第２の許可の組を変更することを許可される。したがって、システムが第２の例外レベルで動作している場合以外には、第２の許可の組の変更を防ぐことができ、それに応じて、１つ又は複数の仮想リアルタイム・プロセッサ（そのゲスト・オペレーティング・システムは第１の例外レベルで動作する）を管理する（第２の例外レベルで動作する）ハイパーバイザのセキュリティを保護することができる。
【０００７】
プロセッサは、それぞれが選択されたリアルタイム・オペレーティング・システムを実行し、関連する第１の許可の組を有する、複数のリアルタイム・プロセッサをサポートすることができる。また、システムは、たとえば、グラフィカル・ユーザ・インターフェース（ＧＵＩ）をサポートする「機能豊富（ｒｉｃｈ）な」オペレーティング・システムなど、そのようなリアルタイム動作の制約がない１つ又は複数の他のプロセッサと組み合わせて、１つ又は複数の仮想化されたリアルタイム・プロセッサを提供できる可能性もある。
【０００８】
第１のメモリ保護ユニット及び第２のメモリ保護ユニットは、一部の実施例では、完全に個別の回路として提供できることが理解されるであろう。また、他の実施例では、第１のメモリ保護ユニット及び第２のメモリ保護ユニットの実装は、それらがハードウェアの一部又はすべてを共有するような場合がある可能性もある。一部の実施例では、第１のメモリ保護ユニットとして機能するように、現在アクティブなゲスト・オペレーティング・システムの第１の許可の組を実施するために最初に動作し、次いで、ハイパーバイザの第２の許可の組を実施し、したがって、第２のメモリ保護ユニットとして機能するように動作する単一の組のハードウェアを提供することが可能な場合がある。
【０００９】
複数のプロセッサを仮想化する本技術の能力は、また、仮想アドレスを受信し、メモリ・マッピング・データに従ってこれらを物理アドレスに変換するように機能するメモリ管理ユニットを提供することによって拡張することができる。そのようなメモリ管理ユニットの提供により、装置は、仮想メモリで動作するプロセッサを仮想化することが可能になる。メモリ管理ユニットは、メモリ・マッピング・データ内の仮想メモリ許可の組に従って仮想メモリ・アクセス動作を許可する、又は許可しないように機能することができる。
【００１０】
ハイパーバイザのセキュリティは、処理回路を構成することによって支援できるため、第１の例外レベルで動作している場合、メモリ・マッピング・データを変更することを許可され、ハイパーバイザによって使用されている第２の許可の組を変更することを許可されない。
【００１１】
リアルタイム・プロセッサの仮想化と仮想メモリをサポートするプロセッサの仮想化との間の切り替えは、処理回路が第１の例外レベル（又はより低いアクセス権（より低い特権）を有するより低い例外レベル）で動作し続ける間に、第１のメモリ保護ユニット又はメモリ管理ユニットの１つをアクティブにするように選択するために、第２の例外レベル（ハイパーバイザ・レベルの場合がある）から第１の例外レベル（リアルタイム・オペレーティング・システムのカーネル又は仮想メモリをサポートするオペレーティング・システムのカーネルの場合がある）に移行するときに、これら２つのオプションを切り替えるために動作する選択回路によって促進することができる。したがって、システムは、第２の例外レベルから第１の例外レベルに戻るときに、第１のメモリ保護ユニット又はメモリ管理ユニットのいずれかをアクティブにするように選択する。
【００１２】
選択回路は、システムが第２の例外レベルで動作している場合、書き込まれている選択ビットに依存して制御することができる。第１の例外レベルで動作している場合、この選択ビットが処理回路によって書き込み可能でない場合、セキュリティが改善され、それによって、第２の例外レベルで選択されるような第１のメモリ保護ユニット又はメモリ管理ユニットは、第１の例外レベルで実行される処理の間に使用できる状態に維持されることを保証される。
【００１３】
異なるプロセッサの仮想化間の切り替えは、第１の例外レベルから第２の例外レベルに切り替えるときに文脈データを格納し、第２の例外レベルから第１の例外レベルに切り替えるときにこの文脈データを回復するように構成された例外制御回路によって促進することができる。この文脈データは、選択ビットを含むことができる。文脈データの各組は、たとえばレジスタの内容、構成データなど、異なる仮想化されたプロセッサに関連する場合がある。
【００１４】
メモリ管理ユニットは、様々な異なる形態を取ることができるが、少なくとも一部の実施例では、物理アドレスに仮想アドレスをマッピングする変換データを格納するように構成された変換ルックアサイド・バッファを含む。メモリ管理ユニットは、メモリ・マッピング・データを決定するために、主メモリ内に格納されたページ・データを通じて、ページ・テーブル・ウォーク動作を実行するように構成することができる。メモリ・マッピング・データの量は典型的には多く、したがって、通常、同時にメモリ管理ユニット内にすべてを保持することができるとは限らない。
【００１５】
本技術の少なくとも一部の実施例でサポートされるような仮想メモリを使用するプロセッサは、非リアルタイム・オペレーティング・システム、及びグラフィカル・ユーザ・インターフェースをサポートし、仮想メモリ・アドレス空間を使用する１つ又は複数のアプリケーション・プログラムを実行することができる。グラフィカル・ユーザ・インターフェースを使用するそのようなオペレーティング・システム及びアプリケーション・プログラムは、通常、保証された最大メモリ・アクセス遅延及び他のリアルタイム制約を必要としない処理のタイプに関連しているため、典型的には、リアルタイム動作の制約の影響を受けない。
【００１６】
仮想化されたリアルタイム・プロセッサと仮想メモリを使用する仮想化されたプロセッサの安全な分離は、第１のメモリ保護ユニットがアクティブな場合、第１の許可の組は処理回路によって書き込むことができ、メモリ・マッピング・データを決定するためのページ・テーブル・データの開始位置を示す変換テーブル・ベース・レジスタ値は、処理回路によって書き込まれなくてもよいシステムによって促進することができる。したがって、仮想化されたリアルタイム・プロセッサは、仮想化されたメモリを使用する仮想化されたプロセッサに関連する構成を変更することを妨げられる。反対に、メモリ管理ユニットがアクティブな場合、処理回路は、第１の許可の組を変更しなくてもよいが、変換テーブル・ベース・レジスタ値を変更することができるように構成することができる。したがって、仮想メモリを使用する仮想化されたプロセッサは、変換テーブル・ベース・レジスタ値など、それ自体の構成を更新することができるが、仮想化されたリアルタイム・プロセッサに関連する許可データの第１の組を変えることを妨げられる。
【００１７】
一部の実施例では、第１の許可の組及び変換ベース・レジスタ値は、処理回路に結合されたコプロセッサ内にレジスタがマップされた値として格納することができる。コプロセッサ内にレジスタがマップされた値の形でこの構成データを提供することで、この構成データは適切な場合に容易にアクセスすることが可能になり、反対に、適切な例外レベル制御に従って、又は第１のメモリ保護ユニット若しくはメモリ管理ユニットがアクティブかどうかに依存して、容易に保護することが可能になる。
【００１８】
別の態様から見ると、本発明は、
処理回路を用いてプログラム命令のストリームを実行するステップと、
メモリ・アクセス動作が前述の処理回路によって実行されるように、メモリ内のメモリ・アドレス位置を直接指定する物理アドレスを受信するため、及び
前述のメモリ・アクセス動作が許可されるかどうかを第１の許可の組に従って判断するために
第１のメモリ保護ユニットを使用するステップと、
前述の物理アドレスを受信するため、及び
前述のメモリ・アクセス動作が許可されるかどうかを第２の許可の組に従って判断するために
第２のメモリ保護ユニットを使用するステップと
を含むデータを処理する方法を提供し、
許可の前述の第１の組と許可の前述の第２の組の両方を満たす場合にのみ、前述のメモリ・アクセス動作が許可される。
ここで本発明の実施例について、添付の図面に関して例示のみを目的として記述する。
【図面の簡単な説明】
【００１９】
【図１】仮想メモリを使用する仮想化されたプロセッサとともに複数の仮想化されたリアルタイム・プロセッサをサポートするシステムを概略的に示す図である。
【図２】メモリ管理ユニットとともに第１及び第２のメモリ保護ユニットの両方を提供する処理システムを概略的に示す図である。
【図３】コプロセッサ内の構成データの記憶域を概略的に示す図である。
【図４】第１のメモリ保護ユニットがアクティブな場合のメモリ・アクセスの扱いを概略的に示す流れ図である。
【図５】メモリ管理ユニットがアクティブな場合のメモリ・アクセスの扱いを概略的に示す流れ図である。
【図６】ハイパーバイザ及び異なる関連する例外レベルを介した、仮想化されたプロセッサ間の切り替えを概略的に示す図である。
【図７】第１のメモリ保護ユニットと同時に動作するためにアドレス変換ユニットを有する処理システムの例を示す図である。
【図８】図７の処理システムの異なるオペレーティング・システムに対するメモリ・アクセスの扱いを概略的に示す図である。
【図９】メモリの物理的位置を識別する物理アドレスに、メモリ・アクセス動作のために処理回路によって生成されたアドレスをマッピングする例を示す図である。
【図１０】図７の処理システムに対するコプロセッサ内の構成データの記憶域を示す図である。
【図１１】第１のメモリ保護ユニット、アドレス変換ユニット、及び障害生成回路をより詳細に示す図である。
【図１２】第１のメモリ保護ユニットに格納された許可データの組の例を示す図である。
【図１３】アドレス変換ユニットに格納されたアドレス変換エントリの例を示す図である。
【図１４】特定の特権レベルのメモリ・アクセスが許可されないと第１のメモリ保護ユニットが判断した場合に、障害状態の生成を抑制する例を示す図である。
【図１５】第１のメモリ検出ユニットの許可データを更新するためのレガシ・インターフェースの例を示す図である。
【図１６】第１のメモリ保護ユニットの許可データを更新するための主なインターフェースの例を示す図である。
【図１７】図７のシステムを使用してメモリ・アクセス動作を処理する方法を示す流れ図である。
【図１８】メモリ保護ユニット及びアドレス変換ユニットに対するルックアップ動作をそれぞれ高速化するためのメモリ保護キャッシュ及びアドレス変換キャッシュを含む例を示す図である。
【図１９】メモリ・アクセス要求を扱うためにメモリ保護ユニットとアドレス変換ユニットのどちらを使用するかを選択するための選択ユニットを含む例を示す図である。
【発明を実施するための形態】
【００２０】
図１は、複数の仮想化されたリアルタイム・プロセッサ及び仮想メモリを使用する仮想化されたプロセッサをサポートするシステムを概略的に示している。ハイパーバイザ・プログラム２は、第２の例外レベルＥＬ２で動作し、仮想化されたプロセッサ間の切り替えを制御して、これらの仮想化されたプロセッサを相互に保護／分離するように機能する。第１の仮想化されたリアルタイム・プロセッサは、リアルタイム・アプリケーション６の実行をサポートするために、第１のリアルタイム・オペレーティング・システム４を使用する。リアルタイム・アプリケーション６とリアルタイム・オペレーティング・システム４の両方は、メモリ・アクセス動作を指定する場合、物理アドレスＰＡを生成する。リアルタイム・アプリケーション６によって生成された物理アドレスＰＡは、（ゲスト・リアルタイム・オペレーティング・システム４に代わって）リアルタイム・オペレーティング・システム４によって制御される第１のメモリ保護ユニットによって実施される第１のレベルのメモリ保護の影響を受ける。メモリ・アクセス要求がこの第１の許可の組によって許可される場合、メモリ・アクセス動作は、また、第２のメモリ保護ユニットを使用してハイパーバイザ２によって管理される第２の許可の組に対してチェックされる。第１のメモリ保護ユニット及び第２のメモリ保護ユニットは、リアルタイム・オペレーティング・システム４及びハイパーバイザ２のポリシーをそれぞれ実施するために、適切な許可データの第１の組及び許可データの第２の組で構成されるハードウェア要素によって提供される。したがって、リアルタイム・オペレーティング・システム４及びハイパーバイザ２によって制御される第１の許可の組及び第２の許可の組は、そのときにリアルタイム・オペレーティング・システム４又はハイパーバイザ２を実行することを必要とせずに、メモリ保護ユニット・ハードウェアによって実施することができる。
【００２１】
また、図１に示しているのは、複数のリアルタイム・アプリケーション１０、１２をサポートする他のリアルタイム・オペレーティング・システム８である。前述のように、リアルタイム・アプリケーション１０、１２は、第１のメモリ保護ユニット及び第２のメモリ保護ユニットによって第１の許可の組及び第２の許可の組に対してそれぞれチェックされる物理アドレスＰＡを生成する。リアルタイム・オペレーティング・システム４及びリアルタイム・アプリケーション６は、リアルタイム・オペレーティング・システム８及びリアルタイム・アプリケーション１０、１２が実行される仮想化されたリアルタイム・プロセッサとは異なる仮想化されたリアルタイム・プロセッサで実行することが考慮される。ハイパーバイザ２は、基礎をなすハードウェアでコンテキスト／構成データを交換することによって、これら２つの仮想化されたリアルタイム・プロセッサ間を切り替える。基礎をなすハードウェアは、リアルタイム動作に一致する方法で、第１の許可の組及び第２の許可の組の迅速な適用をサポートするために、第１のメモリ保護ユニット及び第２のメモリ保護ユニットを提供する。
【００２２】
また、図１に示しているのは、Ｗｉｎｄｏｗｓ（登録商標）、ｉＯＳ（登録商標）、Ｌｉｎｕｘ（登録商標）など、グラフィカル・ユーザ・インターフェースをサポートする「機能豊富な」オペレーティング・システムの形態である他のオペレーティング・システム１４である。複数のアプリケーション１６、１８は、この他のオペレーティング・システム１４を使用して実行される。アプリケーション１６、１８は、他のオペレーティング・システム１４によって構成及び制御されるメモリ管理ユニットによって変換される仮想アドレスを生成する。仮想アドレスは、次いで第２のメモリ保護ユニットによって第２の許可の組に対してチェックされる物理アドレスに変換される。したがって、他のオペレーティング・システム１４は、他のオペレーティング・システム１４に代わって適切な許可を変換及び適用するために、メモリ管理ユニットを利用し、次いで、第２のメモリ保護ユニットは、ハイパーバイザ２に代わって許可を適用するように機能する。
【００２３】
図２は、図１に示したソフトウェア・アーキテクチャをサポートするのに適した形態の処理ハードウェアを概略的に示している。マイクロプロセッサ・コア２０は、プログラム命令のストリームを実行するために処理回路２２を含む。プログラム命令のストリームは、ハイパーバイザ２４と、第１のリアルタイム・オペレーティング・システム２６と、第２のリアルタイム・オペレーティング・システム２８と、リアルタイム・アプリケーション３０と、他の「非リアルタイム」オペレーティング・システム３２と、その他のオペレーティング・システムに対するアプリケーション３４とを提供するプログラム命令を含むメモリ２３から読み出される。また、メモリ２３内に含まれているのは、ページ・テーブル・ウォーク動作を介してメモリ・マッピング・データを形成するために使用されるページ・テーブル・データ３６である。
【００２４】
マイクロプロセッサ・コア２０は、第１のメモリ保護ユニット３８、第２のメモリ保護ユニット４０、及びメモリ管理ユニット４２を含む。メモリ管理ユニット４２は、変換索引バッファ４４、ページ・テーブル・ウォーキング回路４６、及び変換テーブル・ベース・レジスタ４８を含む。変換テーブル・ベース・レジスタ４８は、メモリ２３内のページ・テーブル・データ３６の開始を指し示す変換テーブル・ベース・レジスタ値を格納する。ページ・テーブル・ウォーク回路４６は、変換ルックアサイド・バッファ４４へのメモリ・マッピング・データを取得するために、ページ・テーブル・ウォーク動作を実行する際に、この変換テーブル・ベース・レジスタ値を使用する。
【００２５】
第１のメモリ保護ユニット３８は、コプロセッサ５０内のレジスタから読み出される第１の許可の組を適用する。第２のメモリ保護ユニット４０は、同じくコプロセッサ５０から読み出される第２の許可の組を適用する。第１のメモリ保護ユニット３８及び第２のメモリ保護ユニット４０は、第１の許可の組及び第２の許可の組に従ってそれぞれチェックするために、同じ物理アドレスを使用して並行して動作する。例外レベル制御回路５２は、処理回路２２が現在動作している現在の例外レベル（すなわちアプリケーションに対してＥＬ０、オペレーティング・システムに対してＥＬ１、ハイパーバイザに対してＥＬ２）を制御するように機能する。選択回路５４は、ある所与の時点でメモリ管理ユニット４４及び第１のメモリ保護ユニット３８のどちらがアクティブかを制御するために提供される。第１のメモリ保護ユニット３８は、リアルタイム・オペレーティング・システム４、８の１つ、又はリアルタイム・アプリケーション６、１０、１２の１つなど、実行されているコードがリアルタイム・コードである場合にアクティブになる。他のオペレーティング・システム１４又はアプリケーション１６、１８の１つが実行されている場合、メモリ管理ユニット４２はアクティブになる。ハイパーバイザがアクティブな場合、メモリ管理ユニット４２又は第１のメモリ保護ユニット３８がハイパーバイザ２の動作に不適当に干渉するのを回避するために、第２のメモリ処理ユニット４０のみが使用される。アクティブな第１のメモリ保護ユニット３８とアクティブなメモリ管理ユニット４２との間の切り替えは、第２の例外レベルＥＬ２への移行を介して、第２の例外レベルＥＬ２で実行されるハイパーバイザ２の制御下で行われる。第２の例外レベルＥＬ２及びハイパーバイザ２からオペレーティング・システム４、８、及び１４の１つに戻る場合、選択ビットは処理回路から選択回路５４に出力され、第１のメモリ保護ユニット３８又はメモリ管理ユニット４２がアクティブになるかどうかを制御するように機能する。
【００２６】
処理回路２２は、メモリ２３内で実行されるメモリ・アクセスに関連するアドレスを生成する。第１のメモリ保護ユニット３８が現在アクティブになるように選択されている場合、これらのメモリ・アドレスは物理アドレスＰＡとなる。メモリ管理ユニット４２がアクティブになるように選択されている場合、これらのメモリ・アドレスは仮想アドレスＶＡとなる。物理アドレスＰＡは、第２のＭＰＵ４０に供給される合格信号を生成するために、第１のＭＰＵ３８によって許可データの第１の組に対してチェックされる。第２のＭＰＵ４０は、また、第２の許可の組に対して物理アドレスをチェックする。第１のＭＰＵ３８によるチェックの結果が合格であり、第２のＭＰＵ４０が、許可のその第２の組に対するメモリ・アクセスにも合格した場合、物理アドレスＰＡは、メモリ・アクセスを促進するためにメモリ２３に出力される。
【００２７】
メモリ管理ユニット４２がアクティブである場合、処理回路２２は、メモリ・アクセスに関連する仮想アドレスＶＡを生成する。この仮想アドレスＶＡは、メモリ管理ユニット４２に供給され、物理アドレスＰＡを生成するために、（変換ルックアサイド・バッファ４４内に保持されているか、又はページ・テーブル・ウォークを介してページ・テーブル・データ３６から回復した）メモリ・マッピング・データを介して変換される。メモリ管理ユニット４２は、また、ページ・テーブル・データ３６から取得されたメモリ管理データ内に含まれている仮想メモリ許可に対して仮想アドレスＶＡをチェックする。仮想アドレスＶＡが正しく変換され、仮想メモリ許可に合格した場合、メモリ管理ユニット４２は、第２のＭＰＵ４０に、変換された物理アドレスＰＡと、仮想メモリ許可の合格を示す信号とを出力する。次いで、第２のＭＰＵ４０は、ハイパーバイザ２に代わって許可データの第２の組を適用し、このチェックに合格すると、物理アドレスＰＡは、要求されたメモリ・アクセスを実行するためにメモリ２３に出力される。メモリ管理ユニット４２の動作がページ・テーブル・ウォーク動作を実行する必要性を含む場合があるため、所与のメモリ・アクセスを実行するのに必要な時間は、大きく変動する可能性があり、これが、リアルタイム動作が望まれるときに、メモリ管理ユニット４２を使用する仮想アドレス指定が不適切である理由である。
【００２８】
図３は、コプロセッサ５０内のメモリがマップされたレジスタの組を概略的に示している。これらのメモリがマップされたレジスタは、第１のＭＰＵ３８がアクティブな場合、状態Ａにあると示されている。メモリ管理ユニット４２がアクティブな場合、同じレジスタは状態Ｂにあると示されている。第１の許可の組は、第１のＭＰＵ３８がアクティブな場合、処理回路２２及び第１のＭＰＵ３８によってアクセスすることができるレジスタ５６の組内に格納される。第１のＭＰＵ３８がアクティブな場合、変換テーブル・ベース・レジスタ５８は、処理回路２２にアクセスすることができない。レジスタ６０の組は、第２のＭＰＵ４０によって使用されるハイパーバイザ２に代わって、第２の許可の組を格納する。ハイパーバイザ２の実行に対応する第２の例外レベル（ＥＬ２）で実行する場合、許可のこの第２の組のみがアクセス可能である。
【００２９】
図３のＢとして示している状況は、メモリ管理ユニット４２がアクティブな場合である。この状況では、レジスタ５６は、処理回路２２にアクセス可能ではなく、変換テーブル・ベース・レジスタ５８は、処理回路２２にアクセス可能であり、第２の例外レベルＥＬ２がアクティブな場合、第２の許可の組を格納するレジスタ６０は、ここでもハイパーバイザにのみアクセス可能である。
【００３０】
図４は、第１のＭＰＵ３８がアクティブな場合、図２の回路の動作を概略的に示す流れ図である。ステップ６２では、メモリ・アクセスが生成されるまで処理は待機する。ステップ６４では、第１のメモリ保護ユニット３８は、第１の許可の組に対して受信された物理アドレスＰＡをチェックする。ステップ６６の判断が、アクセスが許可されないということである場合、リアルタイム・オペレーティング・システム４、８の１つに代わって、ステップ６８は、設定されているポリシーに従って扱われるように許可障害をトリガーする。次いで、処理を終了する。
【００３１】
ステップ６６の判断が、第１のメモリ保護ユニット３８によってアクセスが許可されるということである場合、ステップ７０は、第２のメモリ保護ユニット４０により第２の許可の組に対して物理アドレスＰＡをチェックするように機能する。ステップ７２は、許可のこの第２の組が、アクセスが許可されることを示すかどうかを判断する。アクセスが許可されない場合、ステップ７４は、ハイパーバイザ２に代わって障害に対応する。アクセスが許可される場合、ステップ７６は、メモリ２２にアクセスを送信するように機能する。
【００３２】
図５は、メモリ管理ユニット４２がアクティブな場合の処理を概略的に示す流れ図である。ステップ７８では、メモリ・アクセスが生成されるまで処理は待機する。ステップ８０は、仮想アドレスＶＡを物理アドレスＰＡに変換し、仮想メモリ許可に対してアドレスをチェックするメモリ管理ユニット４２に対応する。ステップ８２の判断が、アクセスが許可されないということである場合、ステップ８４で、オペレーティング・システム１４に代わって障害に対応する。アクセスがステップ８２で許可される場合、ステップ８６は、第２のメモリ保護ユニット４０によって適用される第２の許可の組に対して、ステップ８０で生成された物理アドレスをチェックするように機能する。ステップ８８の判断が、第２の許可の組に従ってアクセスが許可されるということである場合、ステップ９０は、メモリ２２にアクセスを送信するように機能する。ステップ８８の判断が、アクセスが許可されないということである場合、ステップ９２は、ハイパーバイザ２に代わって障害に対応する。
【００３３】
図６は、第１のメモリ保護ユニット３８又はメモリ管理ユニット４２がアクティブかどうかの切り替えを概略的に示す図である。期間９４に、リアルタイム・アプリケーションは、最低の（最も特権が低い）例外レベルＥＬ０で実行される。期間９６では、処理は、例外レベルＥＬ１でリアルタイム・オペレーティング・システム４、８のカーネルの実行に進んでいる。このとき、処理は再び、例外レベルＥＬ０への移行で他のリアルタイム・アプリケーションに戻る。しかしながら、示した例では、リアルタイム・オペレーティング・システム・カーネル９６が実行されている間に、割り込みＩＲＱ又はイールド（ｙｉｅｌｄ）トリガーが発生し、これにより、期間９８においてハイパーバイザの実行がトリガーされ、処理回路が例外レベルＥＬ２に切り替えられる。期間９４のリアルタイム・アプリケーション、及び期間９６のリアルタイム・オペレーティング・システム・カーネルの実行の全体にわたって、第１のＭＰＵ３８及び第２のＭＰＵ４０はアクティブである。期間９８のハイパーバイザの動作は、第１のＭＰＵ３８がアクティブなものから、ＭＭＵ４２がアクティブなものへと図２の処理ハードウェアによって仮想化される仮想マシン間でコンテキストを交換することを含む。このコンテキスト切り替えは、典型的には、スワップインされている仮想マシンの以前の実行からの保存されたコンテキストに関連するレジスタ内容の交換だけでなく、スワップアウトされている仮想マシンに関連するレジスタ及び他のデータの保存を含む。期間９８の間に、ハイパーバイザ２がその実行を終了する場合、システムは、例外レベルＥＬ１に戻り、選択回路５４に出力される選択ビットを設定する。これは、アクティブである第１のメモリ保護ユニット３８からアクティブであるメモリ管理ユニット４２に切り替えるように機能する。期間１０２でアプリケーション１６、１８が実行される前に、期間１００は、例外レベルＥＬ１でオペレーティング・システム１４をサポートするグラフィカル・ユーザ・インターフェースの実行に対応する。期間１０２の処理は、仮想アドレスＶＡを生成し、物理アドレスＰＡへ仮想アドレスＶＡを変換するために、メモリ管理ユニット４２を使用するだけでなく、仮想メモリ許可を適用する。
【００３４】
図７は、処理装置の第２の実例を示している。この実例では、マイクロプロセッサ・コア２０は、アドレス変換ユニット１２０及び障害生成回路１２２をさらに含むという点を除いて、図２と同じである。他の点では、図７の処理装置の要素は、図２の対応する要素と同じであり、同じ参照番号で示している。
アドレス変換ユニット（ＡＴＵ）１２０は、それぞれがメモリ・アドレス空間の対応するページに対する仮想アドレスから物理アドレスへのマッピングを指定する、変換エントリを格納する変換ルックアサイド・バッファ（ＴＬＢ）１２６を含む。メモリのページは、ＴＬＢ１２６の変換ルックアサイド・バッファ・エントリに対応するある範囲のメモリ・アドレス空間である。ＭＭＵ４２とは異なり、ＡＴＵ１２０には、ページ・テーブル・ウォーキング回路４６又は変換テーブル・ベース・レジスタ４８がない。代わりに、ＡＴＵ１２０のＴＬＢ１２６の更新は、処理回路２２で実行されるソフトウェアによって実行される。ソフトウェア（たとえばリアルタイム・オペレーティング・システム・ソフトウェア）は、コプロセッサ５０のメモリがマップされたレジスタに更新されたデータを書き込み、ＴＬＢ１２６は、コプロセッサ５０から更新されたデータを読み出す。ＡＴＵ１２０に対するページ・テーブル・ウォークを排除することによって、仮想アドレスから物理アドレスへの変換を用いても、ＡＴＵは、リアルタイム・システムで使用するのに適したものになる。
【００３５】
図８は、図７の実施例の様々なメモリ・アクセス対応ユニット間の関係を概略的に示している。図１に示すように、システムは、リアルタイム・ソフトウェア（リアルタイム・オペレーティング・システム（ＲＴＯＳ）２６、２８、又はリアルタイム・アプリケーション３０など）、又は非リアルタイム・ソフトウェア（「ＧＵＩ機能豊富な」オペレーティング・システム３２又は非リアルタイム・アプリケーション３４など）の制御下で動作することができる。図８に示すリアルタイム状態と非リアルタイム状態との切り替えは、図１〜図６について上に記述したものと同じ方法で制御される。
非リアルタイム・ソフトウェアがアクティブな場合、ＭＭＵ４２は、メモリ２３の物理的位置を直接識別する物理アドレスへと、プロセッサ２２によって指定された仮想アドレスを変換し、次いで、物理アドレスは、メモリ・アクセスが、例外レベルＥＬ２の間にハイパーバイザ２４によって設定されたアクセス許可に基づいて、許可されるかどうかを制御するために第２のＭＰＵ４０に渡される。これは、図１〜図６に関して以前に記述したＭＰＵ４２と同じである。
リアルタイム・ソフトウェア２６、２８、３０がアクティブな場合、プロセッサ２２によって生成されたメモリ・アクセス動作に対するターゲット・アドレスＡは、第１のＭＰＵ３８とＡＴＵ１２０の両方に渡される。第１のＭＰＵ３８は、第１のＭＰＵ３８がターゲット・アドレスに対応する許可データの任意の組を格納するかどうかを判断するために保護ルックアップ（ｐｒｏｔｅｃｔｉｏｎ  ｌｏｏｋｕｐ）を実行する。また、ＡＴＵ１２０は、ＡＴＵ１２０がターゲット・アドレスに対応する変換エントリを格納するかどうかを判断するために変換ルックアップ（ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋ  ｕｐ）を実行する。第１のＭＰＵ３８及びＡＴＵ１２０は、例外レベルＥＬ１でオペレーティング・システム・ソフトウェアによってプログラム可能である。
【００３６】
第１のＭＰＵ３８でターゲット・アドレスがヒットした場合、ターゲット・アドレスは、メモリ２３内のメモリ位置を直接指定する物理アドレスＰＡとして解釈される。この場合、第１のＭＰＵ３８は、ターゲット・アドレスを含む区域に対応する許可データの組を使用して、メモリ・アクセス動作が許可されるかどうかを判断する。メモリ・アクセス動作が許可される場合、物理アドレス（ターゲット・アドレスに等しい）は、ハイパーバイザ・アクセス許可を適用するために、第２のＭＰＵ４０によって使用される。
【００３７】
他方では、ターゲット・アドレスがアドレス変換ユニット１２０の変換エントリ（ＴＬＢ１２６のＴＬＢエントリ）に対応する場合、ターゲット・アドレスは、仮想アドレスＶＡとして解釈され、ＡＴＵ１２０の対応する変換エントリを使用して、物理アドレスＰＡに変換される。次いで、ＡＴＵ１２０によって生成された物理アドレスＰＡは、ハイパーバイザに制御される許可データを使用してアクセスが許可されるかどうかを制御するために、第２のＭＰＵ４０に供給される。オプションとして、ＡＴＵ１２０は、また、一部のアクセス許可制御を提供することができる。
【００３８】
したがって、リアルタイム・ソフトウェアがアクティブな場合、第１のＭＰＵ３８とＡＴＵ１２０の両方は、第１のＭＰＵ３８を使用して処理されている一部のメモリ・アクセス及びＡＴＵ１２０を使用して処理されている他のメモリ・アクセスと同時にアクティブである。これは、リアルタイム又は非リアルタイムのソフトウェアが実行されるかどうかに依存して、これらのユニットの１つのみがアクティブであるＭＭＵ４２と第１のＭＰＵ３８との関係とは異なる。所与のメモリ・アクセス動作を処理するために、第１のＭＰＵ３８とＡＴＵ１２０のどちらが使用されるかは、メモリ・アクセス動作のターゲット・アドレスに基づいて選択される。図９に示すように、処理回路２２に見られるようなメモリ・アドレス空間は、第１のＭＰＵ３８に対応する一部のアドレス範囲１３０及びＡＴＵ１２０に対応する他のアドレス範囲１３２へと効率よく区分される。第１のＭＰＵ３８に対応するメモリ区域１３０のアドレスは、物理アドレス空間の対応する物理アドレスに直接マップされる。アドレス変換ユニット１２０に対応する区域１３２の仮想アドレスは、ＡＴＵ１２０の変換エントリを使用して、異なる物理アドレスに変換することができる。区域１３０、１３２の区分化は、ソフトウェアによって設定されるため、ソフトウェア・プログラマは、各メモリ・アクセスにどのユニット３８、１２０を使用するべきかを制御することができる。
【００３９】
第１のＭＰＵ３８とＡＴＵ１２０との組合せは、リアルタイム・アプリケーションに役立つ。通常、物理アドレスで直接動作し、したがって、迅速で決定論的な応答時間を提供するため、第１のＭＰＵ３８が好まれる。しかしながら、一部のレガシ・ソフトウェア・アプリケーション３０について、ソフトウェアによって参照されるアドレスは、他のアプリケーションに使用されるアドレスと衝突する場合があるため、ＡＴＵ１２０の仮想アドレスから物理アドレスへの変換を使用して、アドレス空間でこれらのアドレスを再配置することによって、そのようなアプリケーションは共存することができる。ＡＴＵがページ・テーブル・ウォーキング回路４６を有しておらず、ソフトウェアによって直接プログラム可能であるため、ＡＴＵ１２０は、適度に決定論的な応答時間を持ち、したがって、リアルタイム・システムに適している。
【００４０】
第１のＭＰＵ３８の許可データとＡＴＵ１２０のＴＬＢ１２６の変換テーブル・エントリの組は、コプロセッサ５０のメモリがマップされた構成レジスタを使用するソフトウェアによって、プログラム可能である。図１０は、構成レジスタの実例を示している。図１０は、この実施例のコプロセッサが、ＡＴＵ１２０の変換テーブル・エントリを規定するデータを格納するために追加のレジスタ１４０を含むという点を除いて、図３と同じである。変換エントリを規定するレジスタ１４０は、選択回路５４が、第１のＭＰＵ３８及びＡＴＵ１２０をアクティブにするように選択した状態Ａにある場合にのみアクセスすることができ、ＭＭＵ４２がアクティブである状態Ｂではアクセスすることができない。
【００４１】
図１１は、第１のＭＰＵ３８、ＡＴＵ１２０、及び障害生成回路１２２の実例をより詳細に示している。ターゲット・アドレスは、第１のＭＰＵ３８とＡＴＵ１２０の両方に提供され、両方のユニット３８、１２０は、ターゲット・アドレスに対応するデータを検索するためにルックアップ動作を実行する。
【００４２】
一部の実例では、第１のＭＰＵは、ターゲット・アドレスに対する変換エントリをルックアップするＡＴＵ１２０と並行してターゲット・アドレスに対応する許可データをルックアップすることができる。両方のルックアップを同時に実行できるので、この実装はより高速である。しかしながら、ＡＴＵ１２０のルックアップが、第１のＭＰＵ３８のルックアップの後に実行される、よりエネルギ効率が高い実装を提供することができる。第１のＭＰＵ３８が、許可データの取得された組を使用してメモリ・アクセスが許可されないと判断した場合、ＡＴＵ１２０でルックアップを実行することが必要ではない場合があるため、電力を節約するために、ＡＴＵのルックアップを省略することができる（システム設計者が、第１のＭＰＵ３８によって許可されないすべてのメモリ・アクセスを禁止することを望んでいると想定する。下に図１４に関して記述しているように、これは必ずしも該当しない）。したがって、第１のＭＰＵ３８は、ＭＰＵにヒットがある場合、対応する許可データがメモリ・アクセスを許可できるかどうかを示すかどうかを示している合格信号１５０をＡＴＵに発行することができる。アクセスを許可できないことを合格信号１５０が示している場合、ＡＴＵ１２０は、ルックアップを省略し、ＭＰＵ３８にヒットがないか、アクセスを許可できる場合、ＡＴＵ１２０は、ルックアップを実行する。
【００４３】
図１１に示すように、第１のＭＰＵ３８は、それぞれが第１のＭＰＵ３８のエントリに対応し、ターゲット・アドレスが、対応するエントリに対して規定されたアドレス空間の区域内にあるかどうかを示している、保護ヒット信号１５５の組を生成する。同様に、ＡＴＵ１２０は、それぞれがＴＬＢ１２６の変換エントリの１つに対応し、対応するエントリが、ターゲット・アドレスを含むアドレスのページに対するものであるかどうかを示している、変換ヒット信号１６０の組を生成する。
【００４４】
ヒット信号１５５、１６０の２つ以上がヒットを示している場合、障害生成回路１２２は障害状態を生成する。障害は、第１のＭＰＵ３８とＡＴＵ１２０の両方のヒットによって引き起こされる場合があるか、又は第１のＭＰＵ２８の異なるエントリでの複数のヒットによって、若しくはＡＴＵ１２０の異なるエントリでの複数の多ヒットによって引き起こされる場合がある。複数の同時のヒットを防ぐことによって、メモリ・アクセス要求の処理が、予測可能且つ安全なことを保証することができる。複数のヒットがある場合、これは予測不能な振る舞いにつながる可能性がある。たとえば、第１のＭＰＵ３８を使用してアクセス許可の２つの異なる組を適用することを試みること、又は第１のＭＰＵ３８を使用して物理アドレスとして、及びＡＴＵ１２０を使用して仮想アドレスとして、同じターゲット・アドレスを解釈することを試みることは、不確かな結果につながる可能性がある。障害を生成することによって、これらの状況にフラグを付けることができる。装置には、障害に取り組むため、又はシステム・オペレータに注意を促すように障害にフラグを付けるために、メモリ２３で障害対応ソフトウェア・ルーチンを提供することができる。よって、障害生成回路１２２は、システムのプログラマが、図９に示すようなＭＰＵ及びＡＴＵに対して規定された区域１３０、１３２の間の重複を回避するべきであることを保証する。
【００４５】
障害生成回路１２２は、また、ヒット信号１５５、１６０のいずれも、ＭＰＵ又はＴＬＢのエントリがターゲット・アドレスに対応していることを示していない場合、障害を生成することができる。
【００４６】
図１２は、第１のＭＰＵ３８の許可エントリの実例を示している。各エントリ１７０は、対応するメモリ区域のベース・アドレスを規定する区域ベース・アドレス１７２及び区域の制限アドレスを規定する区域制限アドレス１７４を含むことができる。典型的には、制限アドレス１７４は、ベース・アドレス１７２より大きな値を有する。保護ルックアップを実行する場合、第１のＭＰＵ３８は、ターゲット・アドレスがベース・アドレス１７２と制限アドレス１７４との間に位置する（又はアドレス１７２、１７４の１つに等しい）場合、エントリ１７０がターゲット・アドレスに対応すると判断する。ベース・アドレス１７２及び制限アドレス１７４は、第１のＭＰＵ３８を使用してメモリ区域の任意のサイズを規定することを可能にする。ＭＰＵエントリ１７０は、また、異なる特権レベルＥＬ０、ＥＬ１のメモリ・アクセス要求に対して規定された許可データ１７６、１７８を含む。たとえば、許可データ１７６は、アプリケーション特権レベルＥＬ０に対して規定され、許可データ１７８は、オペレーティング・システム特権レベルＥＬ１に対して規定される。許可データ１７６、１７８は、メモリ・アクセスのプロパティを制御する様々なパラメータを含む。たとえば、許可データは、読み出し動作が許可されるか、又は書み込み動作が許可されるかを規定することができる。また、許可データは、動作が、プログラム順に扱われる必要がある強く順位付けされたタイプのメモリ・アクセス動作か、又はプログラム順序に関して順序に関係なく実行できる通常の動作かなど、メモリ２３でメモリ・アクセスの処理を制御する区域属性を規定することができる。図１２は、区域制限アドレス１７４を使用して区域の終わりが規定される実例を示しているが、区域サイズ・パラメータを使用して、区域制限を規定することも可能である。
【００４７】
図１３は、ＡＴＵ１２０の変換テーブル・エントリ１８０の実例を示している。各エントリは、仮想ページ・アドレス１８２及び仮想ページ・アドレス１８２が変換されることになっている物理ページ・アドレス１８４を含む。エントリ１８０は、また、この変換が適用されることになっているページ内にあるターゲット・アドレスの範囲を示すページ・サイズ・パラメータ１８６を含む。たとえば、ページ・サイズは、４キロバイト及び６４キロバイトなど制限されたオプションの組から選択することができる。したがって、ＡＴＵ１２０の変換テーブル・エントリは、ベース・アドレス１７２及び制限アドレス１７４を使用して、より任意の区域を規定することができるＭＰＵ３８とは対照的に、事前に定めたサイズのページを規定することに制限することができる。ＡＴＵ１２０が所与のターゲット・アドレスに対して変換ルックアップを実行するとき、ターゲット・アドレスの最上位部分が変換エントリ１８０の仮想ページ・アドレス１８２に一致する場合、エントリ１８０は、ターゲット・アドレスに対応と判断される。仮想ページ・アドレス１８２に一致する部分のサイズは、ページ・サイズ１８６に依存する。たとえば、３２ビットのアドレスを使用して規定されたアドレス空間について、ページ・アドレス１８２は、アドレスの上位２０ビットであり、下位１２ビットは、同じページ内の異なるアドレスを識別する（２１２＝４０９６＝４キロバイト）。よって、ターゲット・アドレスの上位２０ビットが変換エントリ１８０の１つに対する仮想ページ・アドレス１８２に一致する場合、ＡＴＵ１２０でヒットが発生する。ヒットが検出されると、ターゲット・アドレスの仮想ページ・アドレス１８２は、対応する変換エントリ１８０の物理ページ・アドレス１８４に変換される。ページ・オフセットを指定するターゲット・アドレスの残りのビット（上に挙げた実例における下位の１２ビット）、及び変換の後に同じ状態を維持する。
【００４８】
複数のヒット信号１５５、１６０がヒットを示している場合、図１１の障害生成回路１２２は、障害状態を生成する。しかしながら、時々、ヒットがある場合でも、障害の生成を抑制することが望ましい場合がある。図１４に示すように、オペレーティング・システムは、それ自体のメモリ・アクセスのためにアドレス空間の部分１９０を予約することができる。アプリケーションは、また、オペレーティング・システムに対して予約された部分１９０の下位部分１９２でアドレスを使用することができる。この場合、区域１９２に対してＭＰＵ１７０は、通常、区域１９０に対して読み出し及び書き込みが許可されないことを示すために、アプリケーション特権レベルＥＬ０に対して許可１７６を設定し、読み出し及び書き込みが許可されることを示すために、オペレーティング・システム特権レベルＥＬ１に対して許可１７８を設定する。この場合、アプリケーションＥＬ０による区域１９０へのアクセスは可能ではなく、ＡＴＵとＭＰＵの両方がターゲット・アドレスに対する一致エントリを識別するときに障害が生成されると、アプリケーションを実行することができない。
【００４９】
図１４の下位部分に示すように、アプリケーションを実行することを可能にするために、下位区域１９２への特権レベルＥＬ０のアクセスは、ＡＴＵ１２０を使用して、物理アドレスに変換されたそれらのアドレスを有することができるため、物理アドレス空間の異なる部分を使用して、オペレーティング・システムに対して予約された部分１９０との衝突を回避する。障害生成回路１２２は、次の場合に障害状態の生成を抑制することができる。（ａ）ターゲット・アドレスに対して第１のＭＰＵ３８にヒットがある。（ｂ）ＡＴＵ１２０にもヒットがある。（ｃ）メモリ・アクセス動作が、事前に定めた特権レベル（たとえばＥＬＯ）である。（ｄ）第１のＭＰＵ３８が、許可データの対応する組を使用して、メモリ・アクセスが許可されないと判断する。よって、第１のＭＰＵ３８とＡＴＵ１２０の両方にヒットがあるにもかかわらず、変換されたアドレスでアクセスを続行することができる。
【００５０】
障害生成が抑制される事前に定めた特権レベルは、他のソフトウェアとの衝突を回避するために、ＡＴＵ１２０を使用してメモリ・アドレス空間で再配置されるソフトウェアの特権レベルの場合がある。図１４は、特権レベルＥＬ０からのアクセスが、特権レベルＥＬ１との衝突を回避するために変換されたターゲット・アドレスを有する実例を示しており、他の実例では、これは反対の可能性があり、それは、変換されたアドレスを有するＥＬ１に対するアクセスの可能性があり、ＥＬ０に対するアクセスは、アドレス空間のそれらのオリジナル部分に維持される。また、メモリ・アクセスがＭＰＵ３８によって許可されていないときに、アドレス変換を使用して、メモリ・アクセスを進めることを許可するために、ＡＴＵ１２０は、第１のＭＰＵ３８でのルックアップの結果に関係なく、変換ルックアップを実行するべきである（メモリ・アクセスが許可されないとＭＰＵ３８が判断した場合にＡＴＵ１２０が変換ルックアップを省略できる、上に記述した機能とは異なる）。
コプロセッサ５０は第１のＭＰＵ３８及びＡＴＵ１２０をプログラムするために使用される。以前のＭＰＵは、図１５に示したレガシ・インターフェース１９６を使用して、ソフトウェアによってプログラムされた。コプロセッサ５０は、区域セレクタ２００と、区域ベース・アドレス２０２と、区域制限アドレス２０４と、特権レベルＥＬ０に対するアクセス許可２０６の組と、特権レベルＥＬ１に対するアクセス許可２０８の組とを格納するために更新保存場所を有することができる。保存場所は、たとえば、レジスタ又はレジスタの下位部分の場合がある。第１のＭＰＵ３８で許可データの組を更新するために、処理回路２２によって実行されるソフトウェアは、区域セレクタ保存場所２００に、更新される許可データの識別子を書き込み、他の保存場所２０２、２０４、２０６、２０８に、ベース・アドレス、制限アドレス、及び許可の要求される値を書き込む。第１のＭＰＵ３８で２組以上の許可データを更新する必要がある場合、続く更新のためのデータが場所２００〜２０８に書き込まれる前に、保存場所２００〜２０８に書き込まれたデータが、第１のＭＰＵ３８によって読み出されたことを保証するために、これらは、バリア動作（ｂａｒｒｉｅｒ  ｏｐｅｒａｔｉｏｎ）によって分離されている各更新で順次に更新される。このために、メモリ保護データを更新する際に遅延が引き起こされる場合があり、これは、リアルタイム・オペレーティング・システムにおいて望ましくない場合がある。
【００５１】
この問題に取り組むために、本技術は、図１６に示すような更新インターフェース２１０を提供する。一度に単一のＭＰＵエントリを更新するために１組の場所２００〜２０８を提供する代わりに、図１６に示すインターフェース２１０は、更新保存場所の複数の組２１２を含む。許可データの所与の組を更新するために、処理回路２２によって実行されるソフトウェアは、更新する必要のある許可データの組に対応する更新保存場所の組２１２に更新されるデータを書き込む。これは、バリア動作を使用して異なるＭＰＵエントリの更新を分離する必要性を回避し、更新を高速化する。
図１６に示す主なインターフェース２１０は、リアルタイム・システムにより適しているが、図１５のレガシ・インターフェースに対して設計されたレガシ・ソフトウェアがシステムによって実行される場合、新しいソフトウェアとレガシ・ソフトウェアの両方が第１のＭＰＵ３８を更新することを許可するために、両方のインターフェースをコプロセッサ１５において提供することができる。
【００５２】
図１７は、第１のＭＰＵ３８及びＡＴＵ１２０を使用して、メモリ・アクセス動作を扱う方法を示している。ステップ３００で、メモリ・アクセス動作は、ターゲット・アドレスＡを指定する処理回路２２によってトリガーされる。ステップ３０２で、第１のＭＰＵ３８は、ターゲット・アドレスＡを含む区域に対応する許可データの組を検索するために保護ルックアップを実行する。ステップ３０４で、第１のＭＰＵ３８は、任意の区域ｘに対する保護ヒットがあったかどうかを判断する（つまり、ターゲット・アドレスがＭＰＵエントリｘによって規定された区域内にある）。ヒットがある場合、ステップ３０６で、第１のＭＰＵ３８は、区域ｘに対する保護ヒット信号を１に設定する。ヒットがない場合、ステップ３０８で、第１のＭＰＵ３８は、区域ｘに対応する保護ヒット信号を０に設定する。ステップ３０４〜３０８は、第１のＭＰＵ３８で規定された各区域に対して繰り返される。
【００５３】
第１のＭＰＵ３８の動作と同時に、アドレス変換ユニット１２０は、ターゲット・アドレスＡに対して対応する変換テーブル・エントリがあるかどうかを確認するためにステップ３１０で変換ルックアップを実行する。ステップ３１２で、ＡＴＵ１２０は、任意の変換エントリｙにヒットがあったかどうかを判断する。変換エントリｙに対して変換ヒットがある場合、ステップ３１４で、エントリｙに対応する変換ヒット信号は１に設定される一方、ヒットがない場合、ステップ３６０で変換ヒット信号ｙは０に設定される。ここでも、ステップ３１２〜３１６は、ＡＴＵ１２０の各変換エントリに対して繰り返される。
【００５４】
第１のＭＰＵ３８にヒットがある場合、ステップ３０６に続いて、方法は、第１のＭＰＵ３８が、メモリ・アクセスがターゲット・アドレスに一致したエントリで現在の例外レベルに対して規定された許可の組を使用して許可されるかどうかを判断するステップ３２０に進む。アクセスが許可される場合、ステップ３２２で、合格信号１５０は１に設定される一方、アクセスが許可されない場合、ステップ３２４で、合格信号は０に設定される。合格信号１５０は、第２のＭＰＵ４０に供給される。合格信号１５０が１に等しい場合、第２のＭＰＵは、ステップ３２６で、アクセスがそのアクセス許可に準拠しているかどうかを判断する。アクセスが許可されていると第２のＭＰＵが判断した場合、ステップ３２８で、アクセスは、処理されるメモリに送信される。他方では、アクセスが許可されないと第１のＭＰＵ３８又は第２のＭＰＵ４０のいずれかが判断した場合、障害対応は、ステップ３３０又は３３２で実行される（オペレーティング・システムの許可障害対応に対応するステップ３３０及びハイパーバイザの許可障害対応に対応するステップ３３２）。ターゲット・アドレスが変換ユニットのエントリに一致した場合、ステップ３１４に続けて、方法は、ＡＴＵ１２０の変換エントリにより、ターゲット・アドレスＡが仮想アドレスＶＡから物理アドレスＰＡに変換されるステップ３４０に進む。ステップ３４２で、変換された物理アドレスは、次いでステップ３４４でアクセスが許可されるかどうかをチェックする、第２のＭＰＵ４０に渡される。ステップ３４４、３４６、３４８は、上に記述したステップ３２６、３２８、３３２と同じである。第２のＭＰＵ４０のアクセス許可チェックは、第１のＭＰＵ又はＡＴＵ１２０でターゲット・アドレスがヒットするかどうかに関係なく、同じである。
【００５５】
一方、ステップ３０２から３１６の保護ルックアップ及び変換ルックアップの動作に続いて、ステップ３５０で、障害生成回路１２２は、（ａ）複数のヒット信号１５５、１６０は１に等しいか、又は（ｂ）ヒット信号１５５、１６０のいずれも１に等しくないかを判断する。システムが正確にプログラムされている場合、単一のヒット信号は１に等しく、他のヒット信号１５５、１６０は０に等しい。この場合、ステップ３５２で、障害状態は、障害生成回路１２２によってトリガーされない。
しかしながら、ゼロの場合、２つ以上のヒットがトリガーされており、ステップ３５４で、障害生成回路１２２は、次のイベントの組合せが発生したかどうかを検出する。（ｉ）メモリ・アクセスは、事前に定めた特権レベルからのものである（この実例ではＥＬ０）。（ｉｉ）ＡＴＵ１２０にヒットがあった。（ｉｉｉ）第１のＭＰＵ３８から受信された合格信号１５０は、アクセスが許可されていないことを示している。この場合、ステップ３５２で、ＡＴＵ１２０によって提供される変換に基づいて、メモリ・アクセスの継続が許可されるため（これは図１４に示した状況である）、障害状態はトリガーされない。他方では、ステップ３５４で、イベントのこの組合せが検出されない場合、ステップ３５６で、障害状態が生成される。障害は、すべてのタイプのエラーに対して同じ場合があるか、又は、障害生成回路１２２は、ＭＰＵに複数のヒットがあったか、ＡＴＵに複数のヒットがあったか、ＭＰＵ及びＡＴＵのそれぞれに１つのヒットがあったか、又はＭＰＵ及びＡＴＵにヒットがなかったかに依存して異なる種類の障害を生成することができる。ステップ３５８で、システムは、障害に対応するために障害対応ソフトウェアを実行する。たとえば、システムは、問題があることをユーザに通知するために警報灯を起動することができ、障害をトリガーしたメモリ・アクセス要求の処理を保留することができ、又は複数のヒットによって引き起こされる潜在的な安全でない状況に取り組む何らかの他の手段を提供することができる。
【００５６】
図１８は、第１のＭＰＵ３８は、対応するメモリ保護キャッシュ（マイクロＭＰＵ）４００を持ち、ＡＴＵ１２０は、対応するアドレス変換キャッシュ（マイクロＡＴＵ）４１０を有する別の実例を示している。マイクロＭＰＵ４００は、第１のＭＰＵ３８の許可データの組のサブセットを格納する。マイクロＡＴＵ４１０は、ＡＴＵ１２０のアドレス変換エントリのサブセットを格納する。メモリ・アクセス動作に応じて、ターゲット・アドレスは、第１のＭＰＵ３８、マイクロＭＰＵ４００、ＡＴＵ１２０、及びマイクロＡＴＵ４１０のそれぞれに供給される。
マイクロＭＰＵ４００が、ターゲット・アドレスを含む区域に対応する許可データの組を格納する場合、メモリ・アクセスに対するアクセス許可は、許可データのこの組を使用して制御され、第１のＭＰＵ３８の完全なルックアップを省略することができる。マイクロＭＰＵ４００が、許可データの対応する組を格納しない場合、第１のＭＰＵ３８の完全なルックアップが実行され、第１のＭＰＵ３８にヒットがある場合、メモリ・アクセスは、許可データの取得された組を使用して扱われ、これは、マイクロＭＰＵ４００にも配置することができるため、メモリの同じ区域への次のアクセスは、より迅速に扱うことができる。マイクロＭＰＵ４００は、格納する許可データの組が第１のＭＰＵ３８よりも少ないため、マイクロＭＰＵ４００のルックアップは、第１のＭＰＵ３８のルックアップよりも迅速且つエネルギ効率が高い。
【００５７】
同様に、マイクロＡＴＵ４１０が、ターゲット・アドレスを含むページに対応するアドレス変換エントリを格納する場合、ターゲット・アドレスは、取得されたアドレス変換エントリを使用して、仮想アドレスから物理アドレスに変換され、ＡＴＵ１２０の完全なルックアップは省略される。他方では、マイクロＡＴＵ１２０が対応するエントリを格納しない場合、ＡＴＵ１２０の完全なルックアップが実行され、ヒットがある場合、ターゲット・アドレスは、ＡＴＵ１２０で取得されたエントリを使用して変換される。次いで、マイクロＡＴＵ４１０は、ＡＴＵ１２０から取得されたエントリで更新することができる。
【００５８】
第１のＭＰＵ３８及びＡＴＵ１２０によって生成されたヒット信号１５５、１６０と同様に、マイクロＭＰＵ４００及びマイクロＡＴＵ４１０は、また、ターゲット・アドレスに対応するデータが識別されたかどうかを示す対応するヒット信号４２０、４３０を生成する。前述のように、障害生成回路１２２は、ヒット信号１５５、１６０、４２０、４３０がヒットを示していない場合、又は複数のヒット信号１５５、１６０、４２０、４３０がヒットを示している場合（図１４及び図１７のステップ３５４に関して記述した状況が発生していない限り）、障害を生成する。
【００５９】
どのデータがマイクロＭＰＵ４００又はマイクロＡＴＵ４１０に配置されるかを制御するために、任意の種類のキャッシュ・ラインフィル及びエビクション（ｅｖｉｃｔｉｏｎ）方式を使用することができる。この実例では、２レベルのＭＰＵ及び２レベルのＡＴＵを示していているが、他の実例では、他のレベルのキャッシュを提供することができる。また、ＭＰＵキャッシュ・レベルの数が、ＡＴＵキャッシュ・レベルの数と同じであることは不可欠ではない。
図１９は、第１のＭＰＵ３８及びＡＴＵ１２０のどちらが特定のメモリ・アクセスを扱うべきかを選択するために、選択ユニット４５０が提供される別の実例を示している。選択ユニット４５０は、第１のＭＰＵ３８が使用されるべき一部のメモリ範囲１３０及びＡＴＵ１２０が使用されるべき他のメモリ範囲１３２を規定する選択エントリの組を格納することができる（図９の実例と同様にアドレス空間を効率よく分割する）。選択ユニット４５０は、ＭＰＵ選択信号を第１のＭＰＵ３８に、ＡＴＵ選択信号４７０をＡＴＵ１２０に渡し、メモリ・アクセスを扱うために各ユニットが選択されているかどうか示す。選択ユニット４５０が第１のＭＰＵ３８及びＡＴＵ１２０の１つのみを選択するため、障害生成回路１２２は、この実施例では必要でない場合がある。その理由は、ＭＰＵ３８とＡＴＵ１２０の両方が所与のメモリ・アクセスに対してアクティブであることは可能とは限らないためである。しかしながら、第１のＭＰＵ３８の複数のエントリ又はＡＴＵ１２０の複数のエントリにヒットがある場合に、障害を生成することが望まれると、やはり障害生成回路１２２を提供することができる。
【００６０】
本発明の説明的な実施例について、添付の図面に関して詳細に本明細書に記述したが、本発明は、それらの明確な実施例に限定されるものではなく、添付された請求項によって規定されるような本発明の範囲及び精神から逸脱することなく、当業者によって、様々な変形及び変更を行うことができることが理解されるであろう。
【図１】
2016510469.tif 000003
【図２】
2016510469.tif 000004
【図３】
2016510469.tif 000005
【図４】
2016510469.tif 000006
【図５】
2016510469.tif 000007
【図６】
2016510469.tif 000008
【図７】
2016510469.tif 000009
【図８】
2016510469.tif 000010
【図９】
2016510469.tif 000011
【図１０】
2016510469.tif 000012
【図１１】
2016510469.tif 000013
【図１２】
2016510469.tif 000014
【図１３】
2016510469.tif 000015
【図１４】
2016510469.tif 000016
【図１５】
2016510469.tif 000017
【図１６】
2016510469.tif 000018
【図１７】
2016510469.tif 000019
【図１８】
2016510469.tif 000020
【図１９】
2016510469.tif 000021
【手続補正書】
【提出日】平成28年1月29日(2016.1.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラム命令のストリームを実行するように構成された処理回路と、
メモリ・アクセス動作が前記処理回路によって実行されるように、メモリ内のメモリ・アドレス位置を直接指定する物理アドレスを受信し、
前記メモリ・アクセス動作が許可されるかどうかを第１の許可の組に従って判断する
ように構成された第１のハードウェアメモリ保護ユニットと、
前記物理アドレスを受信し、
前記メモリ・アクセス動作が許可されるかどうかを第２の許可の組に従って判断する
ように構成された第２のハードウェアメモリ保護ユニットと
を含み、
前記第１の許可の組と前記第２の許可の組の両方を満たす場合にのみ、前記メモリ・アクセス動作が許可され、
前記処理回路は、例外レベルの階層内で選択可能な例外レベルで動作するように構成され、
例外レベルの前記階層内で第１の例外レベルで動作する場合、前記処理回路は、前記第１の許可の組を変更することを許可され、前記第２の許可の組を変更することを許可されず、
例外レベルの前記階層内で第２の例外レベルで動作する場合、前記処理回路は、前記第２の許可の組を変更することを許可される、
データを処理するための装置。
【請求項２】
前記処理回路は、前記第１の例外レベルで動作する場合、リアルタイム・オペレーティング・システムのプログラム命令を実行し、前記第２の例外レベルで動作する場合、ハイパーバイザ・プログラムのプログラム命令を実行するように構成される、請求項１に記載の装置。
【請求項３】
ハイパーバイザ・プログラムは、それぞれが許可の関連する第１の組を有する複数のリアルタイム・オペレーティング・システムのうちの選択された１つを実行するように前記処理回路を制御する、請求項２に記載の装置。
【請求項４】
前記第１のメモリ保護ユニット及び前記第２のメモリ保護ユニットは、前記第１の許可の組及び前記第２の許可の組をそれぞれ使用して、少なくとも部分的に共有されるハードウェアを提供される、請求項１から３までのいずれか一項に記載の装置。
【請求項５】
メモリ管理ユニットを含み、前記メモリ管理ユニットは、
仮想メモリ・アクセス動作が前記処理回路によって実行されるように、仮想メモリ・アドレス空間内の仮想メモリ・アドレス位置を指定する仮想アドレスを受信し、
メモリ・マッピング・データに従って、前記メモリ内の物理メモリ・アドレスの位置を直接指定する物理アドレスへと前記仮想アドレスを変換する
ように構成される、請求項１から４までのいずれか一項に記載の装置。
【請求項６】
前記メモリ管理ユニットは、前記メモリ・マッピング・データ内の仮想メモリ許可の組に従って、前記仮想メモリ・アクセス動作が許可されるかどうかを判断するように構成される、請求項５に記載の装置。
【請求項７】
前記第１の例外レベルで動作する場合、前記処理回路は、前記メモリ・マッピング・データを変更することを許可され、前記第２の許可の組を変更することを許可されない、請求項５及び請求項６のいずれか一項に記載の装置。
【請求項８】
前記処理回路が前記第１の例外レベルで動作している間に、前記第１のメモリ保護ユニット及び前記メモリ管理ユニットの１つをアクティブにするように選択するために、前記第２の例外レベルから前記第１の例外レベルに切り替える際に動作するように構成された選択回路を含む、請求項５、６、及び７のいずれか一項に記載の装置。
【請求項９】
前記第２の例外レベルで動作する場合、前記選択回路による前記選択は、前記処理回路によって書き込まれた選択ビットに依存し、
前記第１の例外レベルで動作する場合、前記選択ビットは、前記処理回路によって書き込み可能ではない、請求項８に記載の装置。
【請求項１０】
前記第１の例外レベルから前記第２の例外レベルへと切り替えるときに文脈データを格納し、前記第２の例外レベルから前記第１の例外レベルへと切り替えるときに前記文脈データを回復するように構成された例外制御回路を含み、前記選択ビットは、前記文脈データの一部である、請求項９に記載の装置。
【請求項１１】
前記メモリ管理ユニットは、物理アドレスに仮想アドレスをマップする変換データを格納するように構成された変換ルックアサイド・バッファを含む、請求項５から１０までのいずれか一項に記載の装置。
【請求項１２】
前記メモリ管理ユニットは、前記メモリ・マッピング・データを決定するために前記メモリ内に格納されたページ・テーブル・データを通じてページ・テーブル・ウォーク動作を実行するように構成される、請求項５から１１までのいずれか一項に記載の装置。
【請求項１３】
前記処理回路は、前記仮想メモリ・アドレス・スペースを使用して、グラフィカル・ユーザ・インターフェースをサポートするオペレーティング・システム及び１つ又は複数のアプリケーション・プログラムを実行するように構成される、請求項５から１２までのいずれか一項に記載の装置。
【請求項１４】
前記第１のハードウェアメモリ保護ユニットがアクティブな場合、前記第１の許可の組は、前記処理回路によって書き込むことができ、前記メモリ・マッピング・データを決定するためのページ・テーブル・データの開始位置を示す変換テーブル・ベース・レジスタ値は、前記処理回路によって書き込まれなくてもよく、
前記メモリ管理ユニットがアクティブな場合、前記第１の許可の組は、前記処理回路によって書き込まれなくてもよく、前記メモリ・マッピング・データを決定するためのページ・テーブル・データの開始位置を示す変換テーブル・ベース・レジスタ値は、前記処理回路によって書き込むことができる、請求項５から１３までのいずれか一項に記載の装置。
【請求項１５】
前記第１の許可の組及び前記変換テーブル・ベース・レジスタ値は、前記処理回路に結合されたコプロセッサ回路内のレジスタがマップされた値として格納される、請求項 １４に記載の装置。
【請求項１６】
前記第１のハードウェアメモリ保護ユニット及び前記第２のハードウェアメモリ保護ユニットは、前記第１の許可の組及び前記第２の許可の組をそれぞれチェックするために、並行して動作するように構成される、請求項１から１５までのいずれか一項に記載の装置。
【請求項１７】
処理回路を用いてプログラム命令のストリームを実行するステップと、
メモリ・アクセス動作が前記処理回路によって実行されるように、メモリ内のメモリ・アドレス位置を直接指定する物理アドレスを受信するため、及び
前記メモリ・アクセス動作が許可されるかどうかを第１の許可の組に従って判断するために、
第１のハードウェアメモリ保護ユニットを使用するステップと、
前記物理アドレスを受信するため、及び
前記メモリ・アクセス動作が許可されるかどうかを第２の許可の組に従って判断するために、
第２のハードウェアメモリ保護ユニットを使用するステップと
を含み、
前記第１の許可の組と前記第２の許可の組の両方を満たす場合にのみ、前記メモリ・アクセス動作が許可され、
例外レベルの階層内で選択可能な例外レベルで前記処理回路を動作させるステップと、
例外レベルの前記階層内で第１の例外レベルで動作する場合、前記処理回路が、前記第１の許可の組を変更することを許可し、前記第２の許可の組を変更することを許可しないステップと、
例外レベルの前記階層内で第２の例外レベルで動作する場合、前記処理回路が、前記第２の許可の組を変更することを許可するステップと
を含む、データを処理する方法。
【請求項１８】
仮想メモリ・アクセス動作が前記処理回路によって実行されるように、仮想メモリ・アドレス空間内の仮想メモリ・アドレス位置を指定する仮想アドレスを受信するため、及び
メモリ・マッピング・データに従って、前記メモリ内の物理メモリ・アドレスの位置を直接指定する物理アドレスへと前記仮想アドレスを変換するために、
メモリ管理ユニットを使用するステップを含む、請求項１７に記載の方法。
【請求項１９】
前記第２の例外レベルから前記第１の例外レベルに切り替える際に、前記処理回路が前記第１の例外レベルで動作している間に、前記第１のハードウェアメモリ保護ユニット及び前記メモリ管理ユニットの１つをアクティブにするように選択するステップを含む、請求項１８に記載の方法。
【国際調査報告】
2016510469.tif 000022
2016510469.tif 000023