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