(57)【特許請求の範囲】
【請求項１】
メモリ保護ユニット（２９ｌ、２９ｇ）であって、以下の特徴、即ち、
−アドレステーブルを登録するためのハードウェアレジスタと、
−前記アドレステーブルを格納するための設定メモリ（２８）と、
−前記設定メモリ（２８）を管理するための事前設定されたハードウェアロジック部（２９ｌ、２９ｇ）と、
−前記ハードウェアレジスタをロードするための、前記設定メモリ（２８）と前記ハードウェアロジック部（２９ｌ、２９ｇ）との間のデータ接続と、
−演算コア（２３、２４）により前記ロードを制御するための第１のインタフェースと、
−前記演算コア（２３、２４）により前記設定メモリ（２８）に書き込むための第２のインタフェースと、
いう特徴を有することを特徴とする、メモリ保護ユニット（２９ｌ、２９ｇ）。
【請求項２】
前記ハードウェアロジック部（２９ｌ、２９ｇ）は、前記ハードウェアレジスタの前記ロードの際のアクセスを監視するよう構成されることを特徴とする、請求項１に記載のメモリ保護ユニット（２９ｌ、２９ｇ）。
【請求項３】
前記ハードウェアロジック部（２９ｌ、２９ｇ）は、前記ロードがアクセス階層の実行レベルに従って行われるよう構成されることを特徴とする、請求項２に記載のメモリ保護ユニット（２９ｌ、２９ｇ）。
【請求項４】
前記ハードウェアロジック部（２９ｌ、２９ｇ）は、前記実行レベルがソフトウェア識別子に従って決定されるよう構成されることを特徴とする、請求項３に記載のメモリ保護ユニット（２９ｌ、２９ｇ）。
【請求項５】
前記ハードウェアロジック部（２９ｌ、２９ｇ）は、前記ソフトウェア識別子が選択的に、ＶＭＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ、仮想マシンモニタ）（１４）、ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ、仮想マシン）（１２）、又はＳＷＥ（Ｓｏｆｔｗａｒｅ  Ｅｎｔｉｔｙ、ソフトウェアエンティティ）（１３）を示すよう構成されることを特徴とする、請求項４に記載のメモリ保護ユニット（２９ｌ、２９ｇ）。
【請求項６】
前記ハードウェアロジック部（２９ｌ、２９ｇ）は、前記ソフトウェア識別子を用いて、同じ実行レベル及び様々な実行レベルのＶＭ（１２）、及び、同じ実行レベル及び様々な実行レベルのＳＷＥ（１３）を区別できるよう構成されることを特徴とする、請求項４又は５に記載のメモリ保護ユニット（２９ｌ、２９ｇ）。
【請求項７】
前記ハードウェアロジック部（２９ｌ、２９ｇ）は、前記ハードウェアレジスタの自動的又は部分的に自動的なロードが、各アクティブなソフトウェア（１２、１３、１４）に基づいて、当該ソフトウェア（１２、１３、１４）を示す前記ソフトウェア識別子を用いて行われるよう構成されることを特徴とする、請求項６に記載のメモリ保護ユニット（２９ｌ、２９ｇ）。
【請求項８】
請求項１〜７のいずれか１項に記載のメモリ保護ユニット（２９ｌ、２９ｇ）を備えたメモリ管理ユニット。
【請求項９】
請求項１〜７のいずれか１項に記載のメモリ保護ユニット（２９ｌ、２９ｇ）を備えたマイクロコントローラ（１５）。
【請求項１０】
前記マイクロコントローラ（１５）は、以下の特徴、即ち、
−大域的なアドレス空間（２２）と作業ファイルを交換するためのバス（２１）と、
−前記作業ファイルを処理するための、前記バス（２１）と間接的に接続された演算コア（２３、２４）と、
−前記大域的なアドレス空間（２２）を保護するための、前記演算コア（２３、２４）のうちの１つと前記バス（２１）との間に接続されたメモリ保護ユニット（２９ｌ、２９ｇ）と、
を有することを特徴とする、請求項９に記載のマイクロコントローラ（１５）。
【請求項１１】
前記バス（２１）が、マトリクススイッチを備える、請求項１０に記載のマイクロコントローラ（１５）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ保護ユニットに関する。本発明は、さらに、対応するメモリ管理ユニット、及び、対応するマイクロコントローラに関する。
【背景技術】
【０００２】
ハイパーバイザ（ＶＭＭ：ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ  ｍｏｎｉｔｏｒ、仮想マシンモニタ）は、仮想化の重要な基本コンセプトである。ソフトウェアの観点から、ＶＭＭは、様々な独立したソフトウェアエンティティが完全に互いに分けられることを保証する。この所謂無干渉（ｆｒｅｅｄｏｍ  ｆｒｏｍ  ｉｎｔｅｒｆｅｒｅｎｃｅ）は、セーフティクリティカルな適用の場合（ｕｓｅ  ｃａｓｅ、ユースケース）に特に有用である。比較的大きなソフトウェアエンティティ、例えば、オペレーションシステムを含むアプリケーションは、以下では仮想マシン（ＶＭ：ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ）と呼ばれる。比較的小さなソフトウェアエンティティ（ＳＷＥ：ｓｏｆｔｗａｒｅ  ｅｎｔｉｔｙ）は、例えば、ＶＭ内のオペレーションシステムのタスク、応用ソフトのソフトウェアスレッド（Ｓｏｆｔｗａｒｅ−Ｔｈｒｅａｄ）又は構成要素である。ＶＭとＳＷＥの階層的な細分化は、実装においては、実際に階層的に実現され、又は、ＶＭに対して論理的に対応付けて複数のＳＷＥを均等に分散することよって実現されうる。効率的な仮想化のために、従来技術によるマイクロコントローラ又はマイクロプロセッサは、ＶＭが互いに分けられるために特別なハードウェア機能を有する。
【０００３】
マイクロコントローラ又はマイクロプロセッサ（μＰ）（以下ではさらに纏めてμＣと呼ぶ）内の仮想化の中心的構成要素は、メモリ保護ユニット（ＭＰＵ：ｍｅｍｏｒｙ  ｐｒｏｔｅｃｔｉｏｎ  ｕｎｉｔ）である。汎用のＭＰＵは、スタンドアローンであってもよく、又は、メモリ管理ユニット（ＭＭＵ：ｍｅｍｏｒｙ  ｍａｎａｇｅｍｅｎｔ  ｕｎｉｔ）に組み込まれてもよい。主演算コア−ＭＰＵは、μＣの主演算コア（ｃｏｒｅ）によるメモリアクセスの、起こりうるアクセス違反について検査する。ＩＯ−ＭＭＵは、μＣのＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ、直接メモリアクセス）対応又はマスタ機能（Ｍａｓｔｅｒ）対応の周辺ユニットによるメモリアクセスの、起こりうるアクセス違反について検査する。主演算コア−ＭＰＵとＩＯ−ＭＭＵをまとめて、以下ではＭＰＵと呼ぶことにする。ＤＭＡ対応又はマスタ機能対応の周辺ユニットは、以下では主演算コアとまとめて、演算コアと呼ぶことにする。アクセス違反として、例えば、１のＶＭによる、他のＶＭに割り当てられたメモリアドレスへの書込みアクセスが上げられる。これに関して、許可された範囲内に個々のアクセスと関連付けられたアドレスが存在するかどうかが、アドレステーブルを用いて検査される。典型的に、様々なＶＭのために様々なアドレス範囲が設定される。例えば、５個のＶＭ、及び、ＶＭごとに１０個のアドレス範囲のために、合計５×１０＝５０個のアドレス範囲が定義される。典型的な演算システムは、１つ以上の演算コアと、例えば、フラッシュメモリ又はＲＡＭメモリと、で構成され、この１つ以上の演算コア及びフラッシュメモリ又はＲＡＭメモリは、バス又はマトリクススイッチ（ｃｒｏｓｓｂａｒ  ｓｗｉｔｃｈ、クロスバースイッチ）を介して互いに接続されている。ＭＰＵは、例えば演算コアとバス又はマトリクススイッチとの間に存在するハードウェアユニットである。ＭＰＵはアドレス範囲を格納し、かつ比較ユニットを備える。この比較ユニットは、バス又はマトリクススイッチを介したメモリへの演算コアの各アクセスが許可されているかについて、当該アクセスが実行される前に検査する。アクセスが許可されている場合にはアクセスが行われる。アクセスが許可されるべきではない場合にはアクセスは妨げられ、従ってバスに到達せず、例えば割り込みによって演算コアに適切に報知される。
【０００４】
独国特許出願公開第１９８２８０５６号明細書は、プログラムシーケンスにおけるメモリへの書込み中にメモリのメモリ領域を監視する構成に関する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
メモリのメモリ領域の設定中に以下のように構造化される補助メモリが、メモリに割り当てられ、即ち、メモリの保護すべきメモリ領域を標示する、補助メモリのメモリ領域が割り当てられるように、かつ、プログラムの進行中にメモリのメモリ領域と、補助メモリの上記標示するメモリ領域と、に同時に問い合わせが出来るように、かつ、補助メモリの上記標示するメモリ領域への問い合わせが許可されない際には、プログラムの進行に影響が及ぶように構造化される補助メモリが、メモリに割り当てられることが構想される。
【課題を解決するための手段】
【０００６】
本発明の根底には、仮想化のためのμＣの特別なハードウェア機能に頻繁にアクセスされるほど、仮想化の効率が、実行速度に関してより重要になるという認識がある。最悪の場合にはＶＭＭの利用によって、全計算能力ががくんと落ちるほど実行時間の追加コストが大きくなる。従って、本発明の一実施形態は、仮想化のためのハードウェアサポートであって、頻繁に利用しても当該ハードウェアサポートに必要な性能が最小限である上記ハードウェアサポートを提供する。
【０００７】
本解決策の利点は、無干渉を目的としてそのメモリ領域が互いに分けられているＶＭ及びＳＷＥの実行のために、ＭＰＵの必要な切り替えが加速化されることにある。このアプローチの目的は、特に、ＭＰＵの保護すべきアドレス範囲をロードするために必要な時間を最小限にすることである。このより迅速な切り替えは、例えば仮想化の効率のために役立ち、特にＶＭＭによるＶＭの切り替えによって役立つ。より迅速な切り替えは、個々のスレッドが互いに分かれている通常のオペレーションシステム又はアプリケーションのためにも役に立ち、特に個々のＳＷＥの切り替えによって役立つ。
【０００８】
演算コアはもはや、ＭＰＵレジスタを、自身が部分的に又は完全に（再）設定する必要がないため、演算コアは、ＭＰＵ内部の再設定の間、これと並行してローカルメモリで演算を実行することが可能である。
【０００９】
さらに、本発明の一実施形態は、ハードウェアサポートによって、ソフトウェア同士の保護のためのアドレス範囲の管理を柔軟なものにする。
【００１０】
従属請求項及び以下の明細書において記載される処置によって、独立請求項で示される基本思想の有利な発展形態及び改良が可能である。従って、メモリ保護ユニットのアドレステーブルを格納するための設定メモリが、スタティックＲＡＭ（ＳＲＡＭ：ｓｔａｔｉｃ  ｒａｎｄｏｍ−ａｃｃｅｓｓ  ｍｅｍｏｒｙ）を含むことが構想されうる。クロック周波数が技術的に制限されているため、設定メモリの大きな伝送帯域幅の実現のためには、アドレス範囲の迅速な再設定を可能とするために大きなデータワード幅を利用することも可能である。その際に、ＭＭＵに直接接続されたチップ内部のメモリによって、２５６ビット以上のデータ幅も限界ではない（ｕｎｋｒｉｔｉｓｃｈ）。
【００１１】
更なる別の観点によれば、シャドーレジスタが設けられてもよい。２つ以上のこのようなＭＰＵレジスタセットであって、明示的にソフトウェアによって、又はハードウェア予測ロジック部によっても予めロードされうる上記ＭＰＵレジスタセットの使用によって、レジスタの切り替えがバッファリングされ、従ってさらに迅速に行われうる。
【００１２】
更なる別の観点によれば、ハードウェアロジック部は、一意のソフトウェア識別子に基づいて同じ実行レベル又は様々な実行レベルのソフトウェアエンティティを区別できるよう構成されてもよい。このようなＩＤ又はアクセスレベルを用いて、適切な周辺ユニットの転送が有効であるかがメモリ保護ユニットによって検査されうる。
【００１３】
更なる別の観点によれば、このようにして、ハードウェアロジック部は、ハードウェアレジスタの自動的又は部分的に自動的なロードが、各アクティブなソフトウェアに基づき当該ソフトウェアのソフトウェア識別子を用いて行われるように構成され、従って、演算コアによるアクションは必要ではなく、又は限定されたアクションのみ必要である。従って、メモリ保護ユニットは、ソフトウェア識別子によって、自動的（かつ迅速）に、適切なアドレス範囲を自身のレジスタにロードすることが可能である。本処置は、しばしば、レジスタが非常に制限されており、メモリが比較的安価で、ソフトウェア識別子の変更は、バスを介した演算コアによるアクセスほど頻繁には明らかに行われないという状況を考慮したものである。提案されるアプローチは、可能な設定されるメモリ領域が、ソフトウェアにとってトランスペアレント（ｔｒａｎｓｐａｒｅｎｔ）に、低コストで、明らかに増大することを意味している。
【図面の簡単な説明】
【００１４】
本発明の実施例が図面に示され、以下の明細書において詳細に解説される。
【図１】利用される概念をソフトウェアとハードウェアに概略的に整理したものを示す。
【図２】一実施形態に係るローカルのＭＰＵ設定メモリを備えたμＣの構造を示す。
【図３】本発明の一実施形態の例示的な利用を示す。
【発明を実施するための形態】
【００１５】
例示的な利用のシナリオには、ソフトウェア１０を実行するマイクロプロセッサ又はマイクロコントロ―ラ１５の形態によるハードウェア１１が含まれている。ソフトウェア１０自身は、複数のＶＭ１２を監視することが可能なＶＭＭ１４を含み、ＶＭ１２自身は、複数のＳＷＥ１３を有することが可能である。このような関連性が、図１に纏められている。
【００１６】
図２は、マイクロコントローラ１５の構造をさらに詳細に示している。マイクロコントローラ１５は、特に、グローバルアドレス空間２２からの作業ファイルの読出し及びグローバルアドレス空間２２への書込みのための、スイッチングマトリクスを備えたバス２１であって、グローバルアドレス空間２２は、当該グローバルアドレス空間２２を介してアクセス可能なグローバルメモリ２２ａとグローバルアクセス可能な周辺ユニット２２ｂとで構成される、上記バス２１と、バス２１と間接的に接続された演算コア２３、２４であって、符号２３は、作業ファイルを処理するための主演算コアを示し、符号２４は、作業ファイルを処理するための、ＤＭＡ対応の周辺ユニットを示す、上記演算コア２３、２４と、ローカルの作業ファイルを格納するための、主演算コア２３の各一方と間接的に接続された２つのローカルの作業メモリ２５と、当該ローカルの作業メモリ２５を保護するための２つの第１のメモリ保護ユニット２９ｌであって、２つの主演算コア２３の各一方と各ローカルの作業メモリ２５ｌとの間に接続された上記メモリ保護ユニット２９ｌとグローバルメモリ２２ａ及びグローバル周辺ユニット２２ｂを含むグローバルアドレス空間２２を保護するための３つの第２のメモリ保護ユニット２９ｇであって、３つの演算コア２３、２４のうちの１つとバス２１との間に接続された上記メモリ保護ユニット２９ｇと、各メモリ保護ユニット２９ｇ、２９ｌに接続された設定メモリ２８であって、保護すべきメモリ領域の設定が格納される上記設定メモリ２８と、当該設定メモリ２８にアクセス出来るためのアクセスインタフェース分のメモリ保護ユニット２９ｌ、２９ｇの拡張部２９ｅであって、符号２０は、２９ｅと２８をまとめたものとして本発明に係る新規な要素を示す、上記拡張部２９ｅと、を備える。
【００１７】
その際に、メモリ保護ユニット２９ｌ、２９ｇの切り替えのためのハードウェアレジスタの内容は、例えば、マイクロコントローラ１５のメインメモリには格納されない。その代わりに、メモリ保護ユニット２９ｌ、２９ｇは各々、好適にスタティックＲＡＭの形態による固有のローカル設定メモリ２８と、当該設定メモリ２８を管理するための、メモリ保護ユニット２９ｌ、２９ｇに含まれるハードウェアロジック部２９ｅと、性能の良いデータ線と、設定メモリ２８とハードウェアロジック部２９ｌ、２９ｇとの間、特に、設定メモリ２８とハードウェアロジック部２９ｌ、２９ｇのハードウェアレジスタとの間の制御ロジック部であって、設定メモリ２８とハードウェアレジスタとの間のデータ交換のために、検査すべきアドレス範囲を保持する上記制御ロジック部と、メモリ保護ユニット２９ｌ、２９ｇと各演算コア２３、２４との間のインタフェースであって、設定メモリ２８とハードウェアレジスタとの間の比較を制御するための上記インタフェース（第１のインタフェース）と、メモリ保護ユニット２９ｌ、２９ｇと各演算コア２３、２４との間のインタフェースであって、直接的なデータ転送の途中に又はメモリ保護ユニット２９ｌ、２９ｇによる前処理の後に、演算コア２、２４により設定メモリ２８に書き込むための上記インタフェース（第２のインタフェース）と、を有する。
【００１８】
任意に、メモリ保護ユニット２９ｌ、２９ｇは、様々なアクセスレベルを階層的に分けるためのロジック部を、例えばＶＭＭ１４、ＶＭ１２、又はＳＷＥ１３の区別のために有し、正に実行されるソフトウェア１０のアクセスレベル又は識別子（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ、ＩＤ）に基づいて、例えば、ＶＭの場合はＶＭ−ＩＤに基づいて、ＳＷＥの場合はスレッドＩＤに基づいて、所望のＭＰＵ設定の自動的なロードを統制する。
【００１９】
アクティブなＶＭを定期的に実行する間、各メモリ保護ユニット２９ｌ、２９ｇは、従来の形態で動作する。即ち、特定数のアドレス範囲を含む最新のアドレステーブルが、メモリ保護ユニット２９ｌ、２９ｇのハードウェアレジスタ内に存在する。各演算コア２３、２４による各アドレスアクセスのアクセス権は、該当するアドレスがメモリ保護ユニット２９ｌ、２９ｇのアドレステーブルの各アドレス範囲に対して検査されることで、検査される。迅速な検査を可能とするために、全ての検査が好適にパラレルなハードウェア構造により実行され、例えば、アドレス範囲ごとに、下限についての比較器及び上限についての比較器が設けられることで、全ての検査が好適にパラレルなハードウェア構造により実行される。
【００２０】
しかしながら、ソフトウェアエンティティ、例えばＶＭが切り替えられる場合には、本発明によれば、ソフトウェア１０はもはや、アドレス範囲の書込みのための各ハードウェアレジスタを個々に又はブロック単位で、メモリ保護ユニット２９ｌ、２９ｇに明示的に新たにロードする必要がない。その代わりに、アドレス範囲が、ハードウェアロジック部２９ｅによって、メモリ保護ユニット２９ｌ、２９ｇのローカルの設定メモリ２８から読み出される。設定メモリ２８は、好適に高速のＳＲＡＭである。上記切り替えのために、ソフトウェア１０は、メモリ保護ユニット２９ｌ、２９ｇに指示するだけでよい。このことは、例えば、設定メモリ２８内でのアドレスの表示によって、又は、新しい設定データがそれに対して格納されるＩＤの伝達によって行うことが可能である。上記指示は、各演算コア２３、２４によって明示的に行われてもよく、又は、一意のＩＤ又はアクセスレベルが割り当てられる特定のＶＭＭ／ＶＭ／ＳＷＥによるメモリアクセスによって暗黙的に行われてもよい。
【００２１】
初期に又は実行時間にアドレス範囲を設定するためには、実現に応じて、各演算ユニット２３、２４、又は、演算ユニット２３、２４のうちの１つのみが、直接的又は間接的にメモリ保護ユニット２９ｌ、２９ｇのハードウェアレジスタを介して、メモリ保護ユニット２９ｌ、２９ｇの固有の設定メモリ２８又は全ての設定メモリ２８に、即ち、保護すべきアドレス範囲にアクセスすることが可能である。
【００２２】
後の作業フローにおいて、ＤＭＡ対応の周辺ユニット２４によるメモリアクセスが設定される場合には、好適に、主演算コア２３の、当該ＤＭＡ対応の周辺ユニット２４によるメモリアクセスを設定するＶＭＭ／ＶＭ／ＳＷＥの、場合により暗黙的に伝達されたＩＤ若しくはアクセスレベル、又は明示的に伝達すべきＩＤ若しくはアクセスレベルも、ＤＭＡ対応の周辺ユニット２４に格納されるが、設定メモリ２８には格納されない。後のフローにおいて、ＤＭＡ対応の周辺ユニット２４による各メモリアクセスには、対応するＩＤ又はアクセスレベルを付けることが可能である。このＩＤ又はアクセスレベルは、演算コア２３、２４のどのＶＭＭ／ＶＭ／ＳＷＥが各転送を設定したのかに従っている。ＩＤ又はアクセスレベルによって、ＤＭＡ対応の周辺ユニット２４の転送が有効であるかが、メモリ保護ユニット２９ｇによって、ここでも再び設定メモリ２８のアドレスデータを用いて検査されうる。
【００２３】
アクティブなソフトウェア１０の実行レベルに従って、当該ソフトウェア１０を実行する主演算コア２３による、メモリ保護ユニット２９ｌ、２９ｇの設定へのアクセスが許可され、又は禁止されうる。
【００２４】
メモリ保護ユニット２９ｌ、２９ｅは、明示的及び／又は暗黙的に／自動的に、ＳＷ  ＩＤ又は特権レベルに基づいて、以下のオプションに従ってアドレステーブルをロードすることが可能である。
【００２５】
特に、該当するメモリ保護ユニット２９ｌ、２９ｇが「均等（ｆｌａｃｈ）」であり、ＶＭ間でのみ区別される場合：即ち、ソフトウェア１０は、メモリ保護ユニット２９ｌ、２９で、ＶＭのためのアドレステーブルの始まりを明示的に設定する。このために、メモリ保護ユニット２９ｌ、２９ｇのメモリ領域内では、インデックス（Ｉｎｄｅｘ）ごと又はアドレスごとに、直接的又は間接的にオフセット（Ｏｆｆｓｅｔ）ごとに、最初のエントリ及び最終エントリが示される。
【００２６】
特に、該当するメモリ保護ユニット２９ｌ、２９ｅが階層的であり、ＶＭ間及びＳＷＥ間で区別される場合：即ち、ソフトウェア１０は、直接的又は間接的にオフセットごとに、関連するＳＷＥのエントリをインデックスごと又はアドレスごとに示すことが出来る。
【００２７】
該当するメモリ保護ユニット２９ｌ、２９ｅの設定メモリ２８又はハードウェアレジスタに格納された上記情報から、各実行されるＶＭ又はＳＷＥに許されるアドレス空間へのジャンプが導出されうる。
【００２８】
任意の安全性特徴（ｓａｆｅｔｙ  ｆｅａｔｕｒｅ、安全機能）に従って、起動段階（ｓｔａｒｔ−ｕｐ  ｐｈａｓｅ）で、メモリ保護ユニット２９ｌ、２９ｇのための想定される全ての設定を書き込み、駆動中には他の変更の可能性を禁止することが構想される。その場合、メモリ保護ユニット２９ｌ、２９ｇは設定モードにあり、引き続いて、他の相互作用が起こることなく、自立的に動作する。
【００２９】
好適に、ＶＭ内でのＳＷＥの数は設定されておらず、フレキシブルに選択されうる。対応する実施形態において、限られた数のハードウェア比較器によって、同時に検査することが可能なアドレス範囲の最大数も制限することが可能であろう。
【００３０】
階層を考慮する一実施形態において、メモリ保護ユニット２９ｌ、２９ｇによって、１の実行レベルのソフトウェア１０が、同じ実行レベル又は特権的な実行レベルの他のソフトウェア１０の設定を修正せず又は読み出さないことが保証される。これにより、ＶＭＭと、様々なＶＭ及びＳＷＥと、の設定されたアドレス範囲は或る程度まで見えない。この場合には、上位のソフトウェア１０に、全ての下位のソフトウェアエンティティ１０のアドレス範囲の設定へのフルアクセスが認められ、特に、ＶＭＭ１４には、ＶＭ１２及びＳＷＥ１３へのフルアクセスが認められ、ＶＭ１２には、ＳＷＥ１３へのフルアクセスが認められる。
【００３１】
２つ以上のハードウェアレジタセットを使用することによって、かつ対応して、従来技術で公知のシャドーレジスタ又はシャドー設定レジスタであって、明示的にソフトウェア１０又はハードウェア１１の予測ロジック部によってヒューリスティックに（ｈｅｕｒｉｓｔｉｓｃｈ）予めロード（ｐｒｅｆｅｔｃｈｉｎｇ、先読み）されうる上記シャドーレジスタ又はシャドー設定レジスタを使用することによって、ハードウェアレジスタの切り替えがバッファリングされ、従ってさらに迅速に行われうる。
【００３２】
設定メモリ２８が、全てのＶＭ及びＳＷＥのためには十分ではない場合には、演算コア２３のローカルメモリ２５又はグローバルメモリ領域２２ａにも上記設定を格納し、必要に応じて、これらのメモリと、メモリ保護ユニット２９ｌ、２９ｇに接続された設定メモリ２８と、の間で双方向に複写することが可能である。グローバルメモリ領域２２ａへのアクセスのために、演算コア２３、２４若しくはＤＭＡコントローラを利用することが可能であり、又は、メモリ保護ユニット２９ｌ、２９ｇは、対応するアクセスロジック部が存在する場合には、バス２１を用いて上記メモリ２２ａに直接的にアクセスすることが可能である。
【００３３】
階層が考慮される場合には、階層レベルの設定時に、より深い階層レベルにおけるエントリの最大数を設定出来るであるべきであろう。例えば、ＶＭ１２では、ＳＷＥ１３の実際の数を実行時間に自由に設定できるべきであろう。このことは動的にも行われ、即ち、場合によってはハードウェア１１の限定されたリソースにより上限が設定されて、動的にも行われうる。
【００３４】
図３は、本発明の一実施形態の利用の一例を図示している。第１の工程は、起動時に行われる初期化であって、動的に実行時間にも行われる上記初期化によって構成される。本工程では、演算コア２３が、メモリ保護ユニット２９ｇに１つ以上のアドレス範囲を送信する。メモリ保護ユニット２９ｇは当該アドレス範囲を、インタフェース２９ｅを介して、接続された設定メモリ２８に格納する。
【００３５】
本適用の第２の工程は、稼働中の活動化である。本工程では、演算コア２３は、メモリ保護ユニット２９ｇに、活動化すべきアドレス範囲を明示的又は暗黙的に報知する。この報知は、インデックス、ソフトウェアＩＤ、特権レベル、又は、設定メモリ２８へのポインタを用いて行うことが可能であり、1つ以上のアドレス範囲を含みうる。メモリ保護ユニット２９ｇは、演算ユニット２３によって起動されて又は独立的に、古いアドレス範囲の一部を、当該アドレス範囲がもはや有効ではない場合には破棄し、当該アドレス範囲が引き続き有効なままである場合には格納することが可能である。メモリ保護領域２９ｇは、新しい有効なアドレス範囲を、むしろ設定メモリ２８からローカルのハードウェアレジスタへとロードする。
【００３６】
第３の工程では、メモリ保護ユニット２９ｇは通常駆動に移行する。その際に、演算コア２３は、アドレス指定によってメモリ領域にアクセスし、メモリ保護ユニット２９ｇは、演算コア２３により利用されるアドレスが許可されているかについて検査する。許可されている場合には、上記アクセスはバス２１に転送され、それ以外の場合にはブロックされる。
【図１】
0006679419.tif 000002
【図２】
0006679419.tif 000003
【図３】
0006679419.tif 000004