(57)【特許請求の範囲】
【請求項１】
メモリ空間にアドレス割り付けされたアクセス対象と、前記アクセス対象に対してアドレスと識別子とアクセス種別とを指定してアクセスするアクセス主体と、前記アドレスと前記識別子と前記アクセス種別とに基づいて、前記アクセス主体から前記アクセス対象へのアクセスを許可または禁止するメモリ保護資源とを備え、
前記メモリ保護資源は、領域設定部と識別子判定情報部と属性設定部とを含む複数のエントリを備え、アクセスに際して前記アクセス主体から入力される前記アドレスが前記エントリの領域設定部に設定される領域に含まれ、前記識別子が前記識別子判定情報部に設定される識別子判定情報によって指定される複数の識別子のうちの少なくとも１つと一致し、且つ、前記アクセス種別が前記属性設定部に設定されるアクセス種別とが一致するときに、当該アクセスを許可し、
前記識別子判定情報部には、識別子設定部とマスク設定部とが含まれ、
前記メモリ保護資源は、当該アクセスに際して前記アクセス主体から出力される識別子から前記マスク設定部に保持される情報によって比較対象から除外された一部が前記識別子設定部と一致するときに、前記識別子が前記識別子判定情報によって指定される複数の識別子のうちの少なくとも１つと一致すると判定し、
前記アクセス主体は、前記識別子に代えて、前記マスク設定部に保持される情報に対応するマスク情報によって、当該識別子の一部をマスクし、マスクされた部分を識別初期情報に置換して生成した新たな識別子を、当該アクセスに際して出力する、
データ処理装置。
【請求項２】
メモリ空間にアドレス割り付けされたアクセス対象と、前記アクセス対象に対してアドレスと識別子とアクセス種別とを指定してアクセスするアクセス主体と、前記アドレスと前記識別子と前記アクセス種別とに基づいて、前記アクセス主体から前記アクセス対象へのアクセスを許可または禁止するメモリ保護資源とを備え、
前記メモリ保護資源は、領域設定部と識別子判定情報部と属性設定部とを含む複数のエントリを備え、アクセスに際して前記アクセス主体から入力される前記アドレスが前記エントリの領域設定部に設定される領域に含まれ、前記識別子が前記識別子判定情報部に設定される識別子判定情報によって指定される複数の識別子のうちの少なくとも１つと一致し、且つ、前記アクセス種別が前記属性設定部に設定されるアクセス種別とが一致するときに、当該アクセスを許可し、
前記識別子判定情報部には、識別子の上限値と下限値とが含まれ、
前記メモリ保護資源は、当該アクセスに際して前記アクセス主体から出力される識別子
が、前記上限値から前記下限値までの範囲に含まれるときに、前記識別子が前記識別子判定情報によって指定される複数の識別子のうちの少なくとも１つと一致すると判定して、当該アクセスを許可する、
データ処理装置。
【請求項３】
メモリ空間にアドレス割り付けされたアクセス対象と、前記アクセス対象に対してアドレスと識別子とアクセス種別とを指定してアクセスするアクセス主体と、前記アドレスと前記識別子と前記アクセス種別とに基づいて、前記アクセス主体から前記アクセス対象へのアクセスを許可または禁止するメモリ保護資源とを備え、
前記メモリ保護資源は、領域設定部と識別子判定情報部と属性設定部とを含む複数のエントリを備え、アクセスに際して前記アクセス主体から入力される前記アドレスが前記エントリの領域設定部に設定される領域に含まれ、前記識別子が前記識別子判定情報部に設定される識別子判定情報によって指定される複数の識別子のうちの少なくとも１つと一致し、且つ、前記アクセス種別が前記属性設定部に設定されるアクセス種別とが一致するときに、当該アクセスを許可し、
前記識別子判定情報部には、識別子設定部とマスク設定部とが含まれ、
前記メモリ保護資源は、当該アクセスに際して前記アクセス主体から出力される識別子から前記マスク設定部に保持される情報によって比較対象から除外された一部が前記識別子設定部と一致するときに、前記識別子が前記識別子判定情報によって指定される複数の識別子のうちの少なくとも１つと一致すると判定するデータ処理装置であって、
前記データ処理装置は、それぞれ固有のプロセッサ識別子が付与された複数のプロセッサを含む、複数のアクセス主体を備え、
前記アクセスが前記複数のプロセッサのうちの１つをアクセス主体とする場合には、前記アクセス主体から当該プロセッサに付与されたプロセッサ識別子がさらに出力され、
前記メモリ保護資源は、前記複数のエントリのそれぞれにプロセッサ識別子設定部をさらに備え、前記当該アクセスに際して、出力された前記プロセッサ識別子が前記プロセッサ識別子設定部と一致することを追加の条件として、当該アクセスを許可する、
データ処理装置。
【請求項４】
請求項１において、前記データ処理装置は、それぞれ固有の識別初期情報が対応付けられた複数のプロセッサを含む、複数のアクセス主体を備え、
前記アクセスが前記複数のプロセッサのうちの１つをアクセス主体とする場合に、前記アクセス主体は、前記識別子に代えて、前記マスク設定部に保持される情報に対応するマスク情報によって、当該識別子の一部をマスクし、マスクされた部分を当該アクセス主体であるプロセッサに対応する識別初期情報に置換して生成した新たな識別子を、当該アクセスに際して出力する、
データ処理装置。
【請求項５】
請求項１において、前記アクセス主体は、それぞれ固有の識別初期情報が対応付けられた複数の仮想プロセッサを含み、
前記アクセスが前記複数の仮想プロセッサのうちの１つをアクセス主体とする場合に、前記アクセス主体は、前記識別子に代えて、前記マスク設定部に保持される情報に対応するマスク情報によって、当該識別子の一部をマスクし、マスクされた部分を当該アクセス主体である仮想プロセッサに対応する識別初期情報に置換して生成した新たな識別子を、当該アクセスに際して出力する、
データ処理装置。
【請求項６】
メモリ空間にアドレス割り付けされたアクセス対象と、前記アクセス対象に対してアドレスと識別子とアクセス種別とを指定してアクセスするアクセス主体と、前記アドレスと前記識別子と前記アクセス種別とに基づいて、前記アクセス主体から前記アクセス対象へのアクセスを許可または禁止するメモリ保護資源とを備え、
前記メモリ保護資源は、領域設定部と識別子判定情報部と属性設定部とを含む複数のエントリを備え、アクセスに際して前記アクセス主体から入力される前記アドレスが前記エントリの領域設定部に設定される領域に含まれ、前記識別子が前記識別子判定情報部に設定される識別子判定情報によって指定される複数の識別子のうちの少なくとも１つと一致し、且つ、前記アクセス種別が前記属性設定部に設定されるアクセス種別とが一致するときに、当該アクセスを許可し、
前記識別子判定情報部には、識別子設定部とマスク設定部とが含まれ、
前記メモリ保護資源は、前記複数の識別子を格納するテーブルと、当該アクセスに際して前記アクセス主体から出力される識別子と、前記テーブルに格納される前記複数の識別子とをそれぞれ比較する複数の比較器とを備え、
前記複数のエントリのそれぞれは、前記複数の識別子のうちのいずれの比較結果を、当該アクセスを許可するための追加的な条件とするかを指定する、許可識別子設定部を備え、
前記メモリ保護資源は、前記複数の識別子についての複数の比較結果のうち、前記許可識別子設定部によって指定された比較結果を追加の条件として、当該アクセスを許可する、
データ処理装置。
【請求項７】
請求項６において、
前記データ処理装置は、プロセッサと前記プロセッサに接続され、トランスレーションルックアサイドバッファを含むメモリマネージメントユニットと、前記メモリマネージメントユニットにバスを介して接続されるメモリとを備え、
前記プロセッサは前記アクセス主体として機能し、前記メモリマネージメントユニットは、前記トランスレーションルックアサイドバッファを構成する複数のエントリを前記メモリ保護資源に備える前記複数のエントリとすることによって、前記メモリ保護資源として機能する、
データ処理装置。
【請求項８】
請求項６において、
前記アクセス主体として機能する１個または複数個のプロセッサと、
メモリ空間にアドレス割り付けされた複数のアクセス対象と、
前記複数のアクセス対象のそれぞれに接続される複数のメモリ保護資源とを備える、
データ処理装置。
【請求項９】
請求項６において、
単一の半導体基板上に形成された、
データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置に関し、特にプロセッサのメモリ空間に割り付けられた資源に対するアクセス保護に好適に利用できるものである。
【背景技術】
【０００２】
プロセッサが搭載されているデータ処理装置においては、当該プロセッサのメモリ空間に、メモリや機能モジュールなどの様々な資源が割り付けられており、アドレスを指定することによって資源がアクセスされ、データの読み出し、書込み、或いはプログラムの実行などが行われる。マルチタスクの場合には、一般に、メモリ空間が複数の領域に分割され、分割された領域毎に、各タスクからのどのようなアクセスを許しどのようなアクセスを禁止するかが規定されて、メモリ空間の保護がなされる。
【０００３】
特許文献１には、複数のソフトウェアパーティションが実行されるプロセッサに搭載されるＴＬＢ（Translation Look-aside Buffer）が開示されている。複数のソフトウェアパーティションとは、複数のオペレーティングシステム（ＯＳ：Operating System）、１つのソフトウェアの独立した複数のモジュールなどであるとされる。一般にＴＬＢは、メモリマネージメントユニット（ＭＭＵ：Memory Management Unit）に含まれ、論理アドレスと物理アドレスの間の変換を行う連想メモリで構成される。同文献では、ＴＬＢのエントリに仮想アドレスタグに加えて論理パーティション識別子（ＬＰＩＤ：Logical Partition Identification）を保持するフィールドを追加し、仮想アドレスの一致に加えて、プロセッサなどのアクセス主体がアクセスに際して指定するＬＰＩＤと一致する時に限ってＴＬＢヒットとする。ソフトウェアパーティションが実行されるときには、自身のＬＰＩＤを付加してメモリ空間に対するアクセスを行うので、メモリ空間に形成された各領域は、自身に割り当てられたＬＰＩＤとは異なるＬＰＩＤが付されたアクセスから保護される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公報第2005/0027960号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１について本発明者が検討した結果、以下のような新たな課題があることがわかった。
【０００６】
メモリ空間には、複数のパーティションから共通にアクセスされる共有領域が設けられる場合がある。複数のソフトウェアパーティションが、データを交換するためにメモリの一部の領域を共有する場合、或いは、共通の機能モジュールを共通に使用する場合などがこれに相当する。特許文献１に開示されるＴＬＢは、ＴＬＢを構成する連想メモリの各エントリに仮想アドレスタグとＬＰＩＤとを保持してその両方が一致したときに限ってアクセスを許可する。このため、一部のメモリ領域を複数のソフトウェアパーティションで共有するためには、共有する全てのソフトウェアパーティションのＬＰＩＤを保持する複数のエントリが必要となる。このときの複数のエントリは、同じ仮想アドレスタグと互いに異なるＬＰＩＤとを保持することとなる。
【０００７】
本発明者は、このような課題は、ＴＬＢに限らず同様の機構を採用するメモリ保護ユニット（ＭＰＵ：Memory Protection Unit）にも存在することに気付いた。また、上記のような複数のＯＳ、複数のソフトウェアモジュールによるマルチタスクシステムだけでなく、複数のプロセッサコアを搭載したマルチプロセッサシステムにおいても、同様の課題が存在することに気付いた。マルチプロセッサシステムでは、メモリ空間における分割された領域を、上記の「パーティション」に代えて「ドメイン」と称する場合があるが、各プロセッサコアに対してアクセスが許されたドメインがある他、複数のプロセッサコアに共有されるドメインについては、同様の課題が存在することに気付いた。
【０００８】
即ち、メモリ空間内の複数の領域に、それぞれに識別子（ＩＤ）が付された複数のアクセス主体がアクセスするときに、ＩＤに基づいてアクセス権限を制限するメモリ保護を行うメモリ保護資源において、一部の領域について複数のアクセス主体による共有を許すために、当該メモリ保護資源に搭載される連想メモリのエントリが有効に利用されないという課題がある。ここで、アクセス主体とはソフトウェアかハードウェアかを問わない。複数のＯＳ、複数のソフトウェアモジュールがソフトウェアのアクセス主体となり得、マルチプロセッサシステムにおける各プロセッサなどがハードウェアのアクセス主体となり得る。
【０００９】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
一実施の形態によれば、下記の通りである。
【００１１】
すなわち、メモリ空間にアドレス割り付けされたアクセス対象と、前記アクセス対象に対してアドレスと識別子とアクセス種別とを指定してアクセスするアクセス主体と、当該アクセスに伴って指定されたアドレスと識別子とアクセス種別とに基づいて、そのアクセスを許可または禁止するメモリ保護資源とを備えるデータ処理装置であって、以下のように構成される。
【００１２】
メモリ保護資源は、領域設定部と識別子判定情報部と属性設定部とを含む複数のエントリを備える。アクセスに際してアクセス主体からによって指定されるアドレスがエントリの領域設定部で設定される領域に含まれ、識別子が識別子判定情報によって指定される複数の識別子のうちの少なくとも１つと一致し、且つ、指定されるアクセス種別が属性設定部に設定されるアクセス種別とが一致するときに、当該アクセスを許可する。
【発明の効果】
【００１３】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【００１４】
すなわち、複数のアクセス主体によってメモリ空間の一部が共有される場合にも、１つのエントリで複数のＩＤを伴うアクセスを共通に許可することができ、エントリの使用効率が向上される。
【図面の簡単な説明】
【００１５】
【図１】図１は、実施形態１に係るメモリ保護資源の構成例を示すブロック図である。
【図２】図２は、実施形態２に係るメモリ保護資源の構成例を示すブロック図である。
【図３】図３は、実施形態３に係るメモリ保護資源の構成例を示すブロック図である。
【図４】図４は、実施形態４に係るメモリ保護資源の構成例を示すブロック図である。
【図５】図５は、実施形態５に係るメモリ保護資源の構成例を示すブロック図である。
【図６】図６は、実施形態６に係るメモリ保護資源の構成例を示すブロック図である。
【図７】図７は、実施形態７に係るメモリ保護資源の構成例を示すブロック図である。
【図８】図８は、メモリ保護資源をＭＰＵとして実装した、データ処理装置の構成例を示すブロック図である。
【図９】図９は、メモリ保護資源をＭＭＵのＴＬＢとして実装した、データ処理装置の構成例を示すブロック図である。
【図１０】図１０は、複数のメモリ保護資源を複数のアクセス対象に接続して実装した、データ処理装置の構成例を示すブロック図である。
【図１１】図１１は、メモリ保護資源における複数のエントリの構成例を示す説明図である。
【図１２】図１２は、マスク回路１４と一致検出回路１５の動作例を説明するための説明図である。
【図１３】図１３は、ＡＳＩＤＩ置換回路の動作例を説明するための説明図である。
【発明を実施するための形態】
【００１６】
実施の形態について詳述する。なお、発明を実施するための形態を説明するための全図において、同一の機能を有する要素には同一の符号を付して、その繰り返しの説明を省略する。
【００１７】
〔実施形態１〕
メモリ保護資源（１０）を備えるデータ処理装置（１００）の基本的な構成について説明する。ここでは、特定の図面を参照するものではないが、各機能要素に付される符号は、後述の各図面に付される符号を参照する場合の便宜のために、念の為にカッコ付きで付記する。
【００１８】
メモリ保護資源（１０）とは、メモリ空間にアドレス割り付けされた各種の資源に対するアクセスに際して、アクセスの主体（３０）ごとにアクセス対象である領域毎に所定のアクセス種別によるアクセスを許可または禁止する機能ブロックである。メモリ空間にアドレス割り付けされた資源は、その代表的なものはメモリ（５１）であり、アドレス割り付けされたレジスタ群などを備える、周辺機能ブロック（５２）等もこれに該当する。
【００１９】
データ処理装置（１００）は、メモリ空間にアドレス割り付けされたアクセス対象と、そのアクセス対象に対してアドレスと識別子（ＡＳＩＤ）とアクセス種別とを指定してアクセスするアクセス主体と、指定されたアドレスと識別子とアクセス種別とに基づいて、当該アクセス主体からアクセス対象へのアクセスを許可または禁止するメモリ保護資源（１０）とを含んで構成される。
【００２０】
ここで、アクセス主体（３０）とは、狭義には、バス（６０）を有するプロセッサにおける、ＣＰＵ（Central Processing Unit）（３０、３０＿１、３０＿２）やＤＭＡＣ（Direct Memory Access Controller）（３０＿３）などのバスマスタとなり得るハードウェアである。しかし、広義には、アクセス主体（３０）は、ＣＰＵ上で動作するＯＳやミドルウェア、アプリケーションソフトウェア或いはそれらを構成するタスクやソフトウェアパーティションなどであってもよい。即ち、ここでのアクセス主体とは、メモリ空間にアドレス割り付けされた各種の資源に対するアクセス権限が管理される単位である。仮に、１つのＣＰＵでオペレーティングシステム（ＯＳ）とミドルウェアとアプリケーションソフトウェアが実行されているとすると、ＯＳ、ミドルウェア及びアプリケーションソフトウェアのそれぞれに対してアクセスが許されるメモリ領域は互いに異なる。逆に、ある１つのメモリ領域からみると、ＯＳに与えられるアクセス権限と、ミドルウェアやアプリケーションソフトウェアに与えられるアクセス権限とは異なる。このように、同じＣＰＵからのアクセスであっても、そのアクセスに対して与えられるアクセス権限は様々であるので、それぞれをアクセス主体として位置付けることができる。一方、１つのアプリケーションソフトウェアが複数のＣＰＵで並列に実行されるような場合に、アクセス権限の管理を分ける必要がなければ、ハードウェアとしてのアクセス主体が異なっていても、同一のアクセス主体として位置付けてよい。一般にメモリ領域はアクセス主体ごとに分割され、１つのアクセス主体に占有されるメモリ領域は、他のアクセス主体からのアクセス（特に書込み）は禁止される。しかし、複数のアクセス主体の間でデータや情報を交換するために、同じメモリ領域が共有される場合がある。そのような場合には、共有されるメモリ領域は、複数のアクセス主体からのアクセスが許容されることとなる。
【００２１】
アクセス種別とは、当該メモリ領域に対するリードまたはライトの他、当該メモリ領域におけるソフトウェアの命令実行が含まれてもよい。アクセス主体がＣＰＵなどのプロセッサであるとき、命令フェッチをデータのリード／ライトとは別のアクセス種別である命令実行として扱えばよい。
【００２２】
基本的なメモリ保護資源（１０）は、領域設定部（２）と識別子判定情報部（４）と属性設定部（３）とを含む複数のエントリ（１）を備える。ここで複数のエントリは、メモリ保護資源（１０）を構成する連想メモリに搭載される複数のエントリである。メモリ保護資源（１０）は、アクセスに際してアクセス主体（３０）から入力されるアドレスがエントリの領域設定部（２）に設定される領域に含まれ、識別子（ＡＳＩＤ）が識別子判定情報によって指定される複数の識別子のうちの少なくとも１つと一致し、且つ、アクセス種別が属性設定部（３）に設定されるアクセス種別とが一致するときに、当該アクセスを許可する。
【００２３】
これにより、複数のアクセス主体によってメモリ空間の一部が共有される場合にも、１つのエントリで複数の識別子（ＡＳＩＤ）を伴うアクセスを共通に許可することができ、エントリの使用効率が向上される。アクセス主体から入力される識別子の検索値が、１つのエントリにつき１つの識別子と照合されるのではなく、複数の識別子と比較されるために、エントリが有効に利用される。
【００２４】
図８、９、１０は、データ処理装置１００の構成例を示すブロック図である。
【００２５】
図８は、メモリ保護資源をメモリ保護ユニット（ＭＰＵ）１０として実装した場合の、データ処理装置１００の構成例である。図中の配線は、それぞれ任意の本数の信号線で実装されるが、図では１本か複数本かの区別はせず、所謂ベクトル表記は省略されている。このことは、本願における他の図面についても同様である。データ処理装置１００では、ＣＰＵ３０とメモリ（ＲＡＭ）５１と周辺機能ブロック（Peripheral）５２とが互いにバス６０を介して接続され、ＣＰＵ３０とバス６０との間にＭＰＵ１０が設けられている。ＲＡＭ５１と周辺機能ブロック５２はアクセス対象であり、ＣＰＵ３０自身、または、ＣＰＵ３０で動作する仮想プロセッサ、或いは、ＣＰＵ３０で動作するソフトウェア（正確にはソフトウェアパーティション）がアクセス主体である。ＣＰＵ３０は、命令やデータのフェッチを制御するパイプライン（pipeline）３１と、アクセス主体を示す識別子（ＡＳＩＤ：Address Space IDentification）３２とを有する。ＣＰＵ３０は、パイプライン３１からアドレスＡとその時のアクセス種別Ｒ／Ｗを指定し、合せてＡＳＩＤ３２を指定して、アクセス対象に対するアクセスを要求し、データＤの入出力を行う。ＭＰＵ１０には、アドレスＡとアクセス種別Ｒ／ＷとＡＳＩＤ３２とが入力され、アクセス主体ごとに、アドレスＡによってアクセスが要求されたメモリ領域へのアクセス種別Ｒ／Ｗによって指定される種別のアクセスを行う権限が与えられているのか否かを判定し、その判定結果であるアクセス許可判定ＡＰをバス６０に出力する。特に図示はしないが、アクセス種別には、上述のように、リード／ライトの他にソフトウェアの命令実行が含まれてもよい。バス６０（実体的には不図示のバス調停回路またはバス制御回路）は、アクセス許可判定ＡＰがアクセスを許可することを示す場合に、当該メモリ領域が割り付けられているアクセス対象へのアクセスを実行し、アクセス許可判定ＡＰがアクセスを禁止することを示す場合にはアクセスを実行しない。図示は省略されているが、アクセスが禁止されている場合には、アクセスエラー等の信号を、ＣＰＵ３０などのアクセス主体に応答するように構成してもよい。
【００２６】
これにより、ＲＡＭ５１などのメモリ、周辺機能ブロック５２などの機能モジュール等の複数のアクセス対象に対するアクセスに、メモリ保護機能を提供することができる。
【００２７】
図９は、メモリ保護資源をメモリマネージメントユニット（ＭＭＵ）４０内のＴＬＢ１０として実装した場合の、データ処理装置１００の構成例である。データ処理装置１００では、ＣＰＵ３０とＲＡＭ５１と周辺機能ブロック５２とが互いにバス６０を介して接続されている点は図８と同様であるが、ＣＰＵ３０とバス６０との間に、ＭＰＵに代えてＭＭＵ４０が設けられている点が異なる。ＲＡＭ５１と周辺機能ブロック５２はアクセス対象であり、ＣＰＵ３０自身、または、ＣＰＵ３０で動作する仮想プロセッサ、或いは、ＣＰＵ３０で動作するソフトウェア（正確にはソフトウェアパーティション）がアクセス主体である。ＣＰＵ３０は、命令やデータのフェッチを制御するパイプライン３１と、アクセス主体を示す識別子（ＡＳＩＤ）３２とを有する。ＣＰＵ３０は、パイプライン３１から論理アドレスＬＡとその時のアクセス種別Ｒ／Ｗを指定し、合せてＡＳＩＤ３２を指定して、アクセス対象に対するアクセスを要求し、データＤの入出力を行う。ＭＭＵ４０内のＴＬＢ１０には、論理アドレスＬＡとアクセス種別Ｒ／ＷとＡＳＩＤ３２とが入力され、アクセス主体ごとに、論理アドレスＬＡによってアクセスが要求されたメモリ領域へのアクセス種別Ｒ／Ｗによって指定される種別のアクセスを行う権限が与えられているのか否かを判定し、その判定結果であるアクセス許可判定ＡＰをバス６０に出力する。このとき、ＴＬＢ１０は論理アドレスＬＡを対応する物理アドレスＰＡに変換してバス６０に出力する。特に図示はしないが、アクセス種別には、上述のように、リード／ライトの他にソフトウェアの命令実行が含まれてもよい。バス６０は、アクセス許可判定ＡＰがアクセスを許可することを示す場合に、当該メモリ領域が割り付けられているアクセス対象へのアクセスを実行し、アクセス許可判定ＡＰがアクセスを禁止することを示す場合にはアクセスを実行しない。図示は省略されているが、アクセスが禁止されている場合には、アクセスエラー等の信号を、ＣＰＵ３０などのアクセス主体に応答するように構成してもよい。
【００２８】
これにより、ＭＭＵに含まれるＴＬＢにより、メモリ保護機能を提供することができる。
【００２９】
図１０は、複数のメモリ保護資源を複数のアクセス対象に接続して実装した場合の、データ処理装置１００の構成例である。上述の２つの例は、ハードウェアのアクセス主体であるＣＰＵ３０に１個のメモリ保護資源であるＭＰＵまたはＴＬＢを接続した例であるが、複数のメモリ保護資源を複数のアクセス対象にそれぞれ接続してもよい。また、ハードウェアのアクセス主体も複数であってもよい。
【００３０】
データ処理装置１００は、バスマスタであるＣＰＵ３０＿１と３０＿２と、ＤＭＡＣ３０＿３と、第１及び第２ＭＰＵ１０＿１と１０＿２と、アクセス対象である資源Ａ（５０＿Ａ）と資源Ｂ−１（５０＿Ｂ−１）と資源Ｂ−２（５０＿Ｂ−２）と、バス６０とを備える。アクセス対象である資源Ａ（５０＿Ａ）と資源Ｂ−１（５０＿Ｂ−１）と資源Ｂ−２（５０＿Ｂ−２）は、例えばＲＡＭなどのメモリ或いは周辺機能ブロックであって、資源Ａ（５０＿Ａ）は第１ＭＰＵ１０＿１を介してバス６０に接続され、資源Ｂ−１（５０＿Ｂ−１）と資源Ｂ−２（５０＿Ｂ−２）は第２ＭＰＵ１０＿２を介してバス６０に接続されている。
【００３１】
ＣＰＵ３０＿１と３０＿２は、それぞれ命令やデータのフェッチを制御するパイプライン３１＿１と３１＿２を有するが図示は省略されている。ＣＰＵ３０＿１と３０＿２は、それぞれアクセス主体を示す識別子（ＡＳＩＤ）３２＿１と３２＿２を有し、ＤＭＡＣ３０＿３は、ＤＭＡ転送を実行するときのアクセス主体を示すＡＳＩＤ３２＿３を有する。ＣＰＵ３０＿１と３０＿２とＤＭＡＣ３０＿３は、さらに、それぞれ識別子マスク情報（ＡＳＩＤＭ）３３＿１と３３＿２と３３＿３、及び、識別初期情報（ＡＳＩＤＩ）３４＿１と３４＿２と３４＿３を有していても良い。ＡＳＩＤＭとＡＳＩＤＩについては、後段の実施形態において、詳述する。
【００３２】
ＣＰＵ３０＿１と３０＿２とＤＭＡＣ３０＿３は、バス権を取得すると、アドレスＡとその時のアクセス種別Ｒ／Ｗを指定し、合せて対応するＡＳＩＤ３２＿１と３２＿２と３２＿３を指定して、アクセス対象に対するアクセスを要求して、データＤの入出力を行う。ＭＰＵ１０＿１と１０＿２には、バス権を取得したバスマスタ（ＣＰＵ３０＿１、３０＿２またはＤＭＡＣ３０＿３）からアドレスＡとアクセス種別Ｒ／ＷとＡＳＩＤ３２＿１、３２＿２または３２＿３とが入力される。ＭＰＵ１０＿１と１０＿２は、入力されたアドレスＡが自身に管理する資源に割り付けられたメモリ領域の範囲内にあるときには、アクセス主体ごとに、アドレスＡによってアクセスが要求されたメモリ領域へのアクセス種別Ｒ／Ｗによって指定される種別のアクセスを行う権限が与えられているのか否かを判定する。ＭＰＵ１０＿１は、アクセス対象が資源Ａ（５０＿Ａ）であるときには、その判定結果であるアクセス許可判定ＡＰ＿Ａを資源Ａ（５０＿Ａ）に出力する。ＭＰＵ１０＿２は、アクセス対象が資源Ｂ−１またはＢ−２（５０＿Ｂ−１または５０＿Ｂ−２）であるときには、その判定結果であるアクセス許可判定ＡＰ＿Ｂ−１及びＡＰ＿Ｂ−２を資源Ｂ−１及びＢ−２（５０＿Ｂ−１及び５０＿Ｂ−２）にそれぞれ出力する。アクセス対象である、資源Ａ（５０＿Ａ）、資源Ｂ−１またはＢ−２（５０＿Ｂ−１または５０＿Ｂ−２）は、アクセス許可判定ＡＰがアクセスを許可することを示す場合に、当該メモリ領域が割り付けられているアクセス対象へのアクセスを実行し、アクセス許可判定ＡＰがアクセスを禁止することを示す場合にはアクセスを実行しない。図示は省略されているが、アクセスが禁止されている場合には、アドレスエラー等の信号を、ＣＰＵ３０＿１及び／又は３０＿２に応答するように構成してもよい。
【００３３】
以上説明したように、本実施形態１に係るメモリ保護資源１０は、メモリ保護ユニット（ＭＰＵ）１０として実装してもよいし、メモリマネージメントユニット（ＭＭＵ）４０内のＴＬＢ１０として実装してもよい。また、このようなメモリ保護資源１０が実装されるデータ処理装置１００は、図８、９のように１個のＣＰＵ３０のみでも、図１０のように複数のＣＰＵ３０＿１と３０＿２を備えて構成されてもよい。またＭＰＵは、図８のようにバス６０よりもバスマスタ側に配置してもよく、または、図１０のようにアクセス対象側に配置してもよい。このようなデータ処理装置１００におけるメモリ保護資源には、以下に示す構成例に限らず、後述の実施形態２〜７を始め、種々の変形による他の実施形態による構成例についても同様に適用することができる。また、データ処理装置１００は、特に制限されないが、例えば、公知のＣＭＯＳ（Complementary Metal-Oxide-Semiconductor field effect transistor）ＬＳＩ（Large Scale Integrated circuit）の製造技術を用いて、シリコンなどの単一半導体基板上に形成される。
【００３４】
メモリ保護資源１０の構成例について説明する。メモリ保護資源は、上述のようにメモリ保護ユニット（ＭＰＵ）１０として実装しても、メモリマネージメントユニット（ＭＭＵ）４０内のＴＬＢ１０として実装してもよいが、ここではメモリ保護機能の実装方法に絞って説明する。
【００３５】
図１は、実施形態１に係るメモリ保護資源１０の構成例を示すブロック図である。メモリ保護資源１０は、領域設定部２と、属性設定部３と、識別子判定情報部としてのＡＳＩＤ設定部４とＡＳＩＤＭ設定部５とを含む、複数のエントリ１を備える。
【００３６】
図１１は、メモリ保護資源１０における複数のエントリの構成例を示す説明図である。複数のエントリは、連想メモリにおけるエントリであって、領域設定部２と、属性設定部３と、識別子判定情報部としてのＡＳＩＤ設定部４の他に、バリッドビット（Valid）９を含む。図１１にはｅｎｔｒｙ０〜Ｎ−１までのＮ個のエントリを備える例を示す。各エントリにさらにＡＳＩＤＭ設定部５を設けても良い。エントリ数Ｎは任意である。
【００３７】
図１の説明に戻る。メモリ保護資源１０は、さらに領域判定部１２と、属性判定部１３と、マスク回路１４と、一致検出回路１５と、アクセス許可判定部１１とを備える。メモリ保護資源１０には、命令又はデータのフェッチを制御するパイプライン３１とアクセス主体を示すＡＳＩＤ３２とを備えるＣＰＵ３０が接続され、アドレスとアクセス種別とＡＳＩＤとが入力される。領域判定部１２は、アクセスに際してＣＰＵ３０から入力されたアドレスがエントリ１の領域設定部２に設定される領域に含まれるか否かを判定する。属性判定部１３は、アクセスに際してＣＰＵ３０から入力されたアクセス種別がエントリ１の属性設定部３に設定されているアクセス種別と一致するか否かを判定する。アクセスに際してＣＰＵ３０から入力されたＡＳＩＤは、ＡＳＩＤＭ設定部５に保持されている情報によって比較対象から除外された一部が、ＡＳＩＤ設定部４に設定されている値と一致するときに、識別子判定情報によって指定された複数の識別子（ＡＳＩＤ）のうちの少なくとも１つと一致すると判定される。より具体的には、アクセスに際してＣＰＵ３０から入力されたＡＳＩＤは、複数のビットで構成されており、その一部がＡＳＩＤＭ設定部５に設定されている値によってマスク回路１４でマスクされ、残った一部がＡＳＩＤ設定部４に設定されている値と一致検出回路１５で比較される。領域判定部１２と属性判定部１３と一致検出回路１５の比較結果が、アクセス許可判定部１１に入力され、全ての比較結果が「一致」を示すときに、当該アクセスを許可するアクセス許可判定を出力する。図１では、各比較結果が「一致」を示すときにハイ（high）となりアクセス許可判定部１１が３入力ＡＮＤゲートで構成される、正論理の論理回路を例示しているが、負論理に変更してもよい。
【００３８】
マスク回路１４と一致検出回路１５の動作例について、より詳しく説明する。図１２は、マスク回路１４と一致検出回路１５の動作例を説明するための説明図である。ＡＳＩＤ設定部４とＡＳＩＤＭ設定部５がともに３２ビットで構成され、０ｘ００ＡＢ＿ＣＤＦＥと０ｘＦＦ００＿００００がそれぞれに設定されているものとする。ここで、「０ｘ」は１６進表記であることを示し、１６進８桁により３２ビットの値が設定されている。マスク回路１４は、ＡＳＩＤＭ設定部５に設定される０ｘＦＦ００＿００００の各ビットを反転して、入力されたＡＳＩＤ０ｘＸＸＸＸ＿ＸＸＸＸの各ビットとのＡＮＤをとる。入力されたＡＳＩＤの上位８ビットは強制的に０ｘ００に変更され、残りの下位２４ビットはそのまま一致検出回路１５に入力される。一致検出回路１５は、マスク回路１４から入力される０ｘ００ＸＸ＿ＸＸＸＸとＡＳＩＤ設定部４に設定される０ｘ００ＡＢ＿ＣＤＦＥとの一致／不一致を判定して出力する。一致検出回路１５は、入力されるＡＳＩＤが、０ｘ００ＡＢ＿ＣＤＥＦ，０ｘ０１ＡＢ＿ＣＤＥＦ，０ｘ０２ＡＢ＿ＣＤＥＦ，…０ｘＦＦＡＢ＿ＣＤＥＦの２５６通りのＡＳＩＤ値のうちのいずれかと一致したときに、「一致」と判定することになる。即ち、アクセス主体から入力された識別子（ＡＳＩＤ）が、ＡＳＩＤ設定部４とＡＳＩＤＭ設定部５とに設定される識別子判定情報によって指定される複数の識別子（上記２５６通りのＡＳＩＤ値）のうちの少なくとも１つと一致し、アドレスが領域設定部２に設定される領域に含まれ、且つ、アクセス種別が属性設定部３に設定されるアクセス種別とが一致するときに、当該アクセスを許可する。
【００３９】
これにより、簡易な構成のメモリ保護資源によって、複数の識別子に１つのエントリを共有させることができる。
【００４０】
図１２に示した動作例は、マスク回路１４と一致検出回路１５について上述したような一構成例を仮定した例に過ぎず、マスク回路１４と一致検出回路１５の構成は種々変更することができる。例えば、正論理の回路を負論理に変更し、ＡＳＩＤＭ設定部５の設定値を「ハイ」でマスクする構成から「ロウ（low）」でマスクする構成に変更してもよい。また、ＡＳＩＤ等のビット数は例示した３２ビットには限られない。
【００４１】
〔実施形態２〕
図２は、実施形態２に係るメモリ保護資源１０の構成例を示すブロック図である。ＣＰＵ３０は、図１に示したＣＰＵ３０と同様にパイプライン３１とＡＳＩＤ３２とを備え、さらに、マスク情報であるＡＳＩＤＭ４４と識別初期化情報であるＡＳＩＤＩ３４とＡＳＩＤＩ置換回路とを備える。ＡＳＩＤＩ置換回路は、例えばＡＮＤ回路３５とＯＲ回路３６によって構成される。メモリ保護資源１０の構成は、図１に示したメモリ保護資源１０と同じである。アクセス主体であるＣＰＵ３０は、メモリ保護資源１０のマスク（ＡＳＩＤＭ）設定部５に保持される情報に対応するマスク情報をＡＳＩＤＭ３３に保持する。ＡＳＩＤＭ３３によって、ＡＳＩＤ３２の一部をマスクし、マスクされた部分をＡＳＩＤＩ３４に置換して生成した新たな識別子を、ＡＳＩＤ３２に代えて、ＡＳＩＤ検索値としてメモリ保護資源１０に出力する。
【００４２】
これにより、アクセス主体であるＣＰＵ３０から出力される識別子（ＡＳＩＤ）の値の範囲を限定することができる。
【００４３】
ＡＳＩＤＩ置換回路の動作例について、より詳しく説明する。図１３は、ＡＳＩＤＩ置換回路の動作例を説明するための説明図である。ＣＰＵ３０において、ＡＳＩＤ３２、ＡＳＩＤＭ３３及びＡＳＩＤＩ３４がそれぞれ３２ビットで構成され、０ｘ００ＡＢ＿ＣＤＦＥ、０ｘＦＦ００＿００００、０ｘ１２ＸＸ＿ＸＸＸがそれぞれに設定されているものとする。ＡＳＩＤ３２には、上記の例では０ｘ００ＡＢ＿ＣＤＦＥであるが、ＣＰＵ３０で実行されアクセス主体となるソフトウェアに応じた任意のＡＳＩＤが書き込まれる。ＡＳＩＤＭ３３には、上位８ビットをマスクする０ｘＦＦ００＿００００が書き込まれており、ＡＳＩＤＩ３４には、マスクされた上位８ビットを置き換える０ｘ１２ＸＸ＿ＸＸＸが書き込まれているので、ＣＰＵ３０からはＡＳＩＤ検索値として０ｘ１２ＡＢ＿ＣＤＥＦが出力される。
【００４４】
ＡＳＩＤ検索値が入力されたメモリ保護資源１０の構成例と動作は、図１を引用して説明した実施形態１と同様であるので、説明を省略する。
【００４５】
ＡＳＩＤ３２、ＡＳＩＤＭ３３及びＡＳＩＤＩ３４は、ＣＰＵ３０において、例えばレジスタとして実装される。ＡＳＩＤＭ３３及びＡＳＩＤＩ３４を格納するレジスタへの操作は、ＡＳＩＤ３２を格納するレジスタを操作する権限よりも上位に設定することで、改竄を防止することができる。好適な例では、あるドメインの動作モードよりも上位の動作モード、例えばハイパーバイザモードをＣＰＵ３０が持ち、そのモードでのみ操作を許可するように構成する。また別の実施態様では、ＡＳＩＤＭ３３及びＡＳＩＤＩ３４は、例えば端子設定を可能とされ、または、ハードワイヤードによって設計時に与えられた値に固定されてもよい。
【００４６】
図１３に示した動作例は、ＡＳＩＤＩ置換回路について上述したようなＡＮＤ回路３５とＯＲ回路３６による構成例を仮定した例に過ぎず、ＡＳＩＤＩ置換回路の構成は種々変更することができる。例えば、正論理の回路を負論理に変更し、ＡＳＩＤＭ３３の設定値を「ハイ」でマスクする構成から「ロウ（low）」でマスクする構成に変更してもよい。また、ＡＳＩＤ等のビット数は例示した３２ビットには限られない。
【００４７】
〔実施形態３〕
図３は、実施形態３に係るメモリ保護資源１０の構成例を示すブロック図である。図１を引用して説明した実施形態１では、エントリ１に識別子判定情報部としてＡＳＩＤ設定部４とＡＳＩＤＭ設定部５とを含む例を示した。これに対して本実施形態３では、エントリ１に、識別子判定情報部として、ＡＳＩＤ設定部４とＡＳＩＤＭ設定部５に代えて、ＡＳＩＤ上限値設定部６とＡＳＩＤ下限値設定部７とを備える。メモリ保護資源１０は、実施形態１と同様に領域判定部１２と属性判定部１３とを備える。本実施形態３では実施形態１とは異なり、メモリ保護資源１０に、ＣＰＵ３０から入力されるＡＳＩＤと、ＡＳＩＤ上限値設定部６とＡＳＩＤ下限値設定部７とをそれぞれ比較する２個の比較回路１６と１７と、その結果から入力されたＡＳＩＤがＡＳＩＤ上限値設定部６とＡＳＩＤ下限値設定部７とによって規定される範囲に含まれるか否かを判定するＡＳＩＤ範囲判定部１８を備える。本実施形態３のメモリ保護資源１０は、アクセスに際してアクセス主体であるＣＰＵ３０から入力されるアドレスが領域設定部２に設定される領域に含まれ、入力されるアクセス種別が属性設定部３に設定されるアクセス種別と一致し、且つ、入力されるＡＳＩＤがＡＳＩＤ上限値設定部６とＡＳＩＤ下限値設定部７とによって規定される範囲に含まれるときに、当該アクセスを許可する。
【００４８】
これにより、１つのエントリを共有させる複数の識別子の範囲を柔軟に設定することができる。実施形態１または２においては、複数ビットで構成されるＡＳＩＤにおいてマスクされたビットの部分が任意の複数のＡＳＩＤによって１つのエントリが共有される。このため、１つのエントリを共有することができる複数のＡＳＩＤは、２の冪乗数の間隔で周期的に配列された値に限定される。これに対し、本実施形態３では上限値と下限値を任意に設定することができるので、２の冪乗数の間隔に限られることがなく、取り得る範囲を柔軟に設定することができる。これにより、システム全体でのＡＳＩＤ割り付けの自由度が向上される。
【００４９】
なお、ＡＳＩＤ上限値設定部６とＡＳＩＤ下限値設定部７への値の操作は、ＡＳＩＤ３２の値を操作する権限よりも上位に設定することで、改竄を防止することができる。好適な例では、あるドメインの動作モードよりも上位の動作モード、例えばハイパーバイザモードモードでのみ操作を許可するように構成する。
【００５０】
〔実施形態４〕
図４は、実施形態４に係るメモリ保護資源１０の構成例を示すブロック図である。本実施形態４のメモリ保護資源１０は、複数のＣＰＵ３０＿１と３０＿２で共有される。ＣＰＵ３０＿１と３０＿２は、それぞれ、パイプライン３１＿と３１＿２及びＡＳＩＤ３２＿１と３２＿２を有し、さらにＣＰＵＩＤ３７＿１と３７＿２を有する。ＣＰＵＩＤ３７＿１と３７＿２は、ＣＰＵ３０＿１と３０＿２にそれぞれ固有のプロセッサ識別子である。ＣＰＵＩＤ３７＿１と３７＿２は、例えば、レジスタとして実装され、端子設定可能とされ、或いは、ハードワイヤにより固定される。ＣＰＵ３０＿１と３０＿２からは、それぞれアドレス、アクセス種別、ＡＳＩＤに加えて、ＣＰＵＩＤがメモリ保護資源１０に出力される。
【００５１】
メモリ保護資源１０は、エントリ１に、実施形態１（図１）と同様に、領域設定部２と属性設定部３とＡＳＩＤ設定部４とＡＳＩＤＭ設定部５とを含み、本実施形態４ではさらに、ＣＰＵＩＤ設定部８を含む。メモリ保護資源１０は、実施形態１と同様に領域判定部１２と属性判定部１３とマスク回路１４と一致検出回路１５とアクセス許可判定部１１とを備え、本実施形態４ではさらに、ＣＰＵＩＤ判定部１９を含む。領域判定部１２と属性判定部１３とマスク回路１４と一致検出回路１５の機能は、実施形態１と同様である。本実施形態４では、ＣＰＵＩＤ判定部１９が入力されるＣＰＵＩＤがＣＰＵＩＤ設定部８に設定された値と一致するか否かの判定を行い、その判定結果がアクセス許可判定部１１に対して、追加の条件として入力される。アクセス許可判定部１１は、入力されたＣＰＵＩＤがＣＰＵＩＤ設定部８に設定された値と一致することを追加の条件として、当該アクセスを許可する。
【００５２】
これにより、マルチコアシステムにおいても、簡易な構成のメモリ保護資源によって、複数の識別子に１つのエントリを共有させることができる。
【００５３】
〔実施形態５〕
図５は、実施形態５に係るメモリ保護資源１０の構成例を示すブロック図である。本実施形態５のメモリ保護資源１０は、複数のＣＰＵ３０＿１と３０＿２で共有される。複数のＣＰＵ３０＿１と３０＿２のそれぞれは、図２に示した実施形態２におけるＣＰＵ３０と同じである。即ち、ＣＰＵ３０＿１は、パイプライン３１＿１、ＡＳＩＤ３２＿１、マスク情報であるＡＳＩＤＭ４４＿１、識別初期化情報であるＡＳＩＤＩ３４＿１、及び、ＡＳＩＤＩ置換回路３５＿１、３６＿１を備え、ＣＰＵ３０＿２も同様に、パイプライン３１＿２、ＡＳＩＤ３２＿２、ＡＳＩＤＭ４４＿２、ＡＳＩＤＩ３４＿２、及び、ＡＳＩＤＩ置換回路３５＿２、３６＿２を備える。また、メモリ保護資源１０も、図２に示した実施形態２におけるメモリ保護資源１０と同じである。
【００５４】
本実施形態５において、複数のＣＰＵ３０＿１と３０＿２には、それぞれ固有の識別初期情報（ＡＳＩＤＩ）３４＿１と３４＿２が対応付けられている。
【００５５】
複数のＣＰＵ３０＿１と３０＿２のうちの１つがアクセス主体となったとき、その時のＡＳＩＤに代えて、マスク情報によって当該ＡＳＩＤの一部をマスクし、マスクされた部分を当該アクセス主体であるプロセッサに対応する識別初期情報（ＡＳＩＤＩ）に置換して生成した新たなＡＳＩＤ（ＡＳＩＤ検索値）を、メモリ保護資源１０に出力する。
【００５６】
ＡＳＩＤ検索値が入力されたメモリ保護資源１０の構成例と動作は、図１を引用して説明した実施形態１と同様であるので、説明を省略する。
【００５７】
これにより、マルチコアシステムにおいて、アクセス主体から出力される識別子の値の範囲を、プロセッサ毎に固有の値に限定することができる。
【００５８】
図１０に示したように、複数のＣＰＵ３０＿１と３０＿２を含む複数のバスマスタが搭載されたデータ処理装置１００において、ソフトウェアから出力されるＡＳＩＤを任意としながら、そのソフトウェアが実際に実行されるハードウェアに応じてその値が書き換えられたＡＳＩＤ検索値が、メモリ保護資源１０＿１と１０＿２に出力される。例えば、１つのソフトウェアが分割されて、ＣＰＵ３０＿１またはＣＰＵ３０＿２で実行されるときに、一方のＣＰＵ３０＿１によって実行されたときにアクセスが許されるメモリ領域と、他方のＣＰＵ３０＿２によって実行されたときにアクセスが許されるメモリ領域とは分離されている必要がある場合がある。このような場合には、その１つのソフトウェアには１つのＡＳＩＤが付与されている場合であっても、どちらのＣＰＵで実行されるかによって、ＡＳＩＤ検索値を書き換える必要がある。本実施形態５に示すように、ＡＳＩＤＩ３４＿１と３４＿２をＣＰＵ３０＿１と３０＿２それぞれに固有の値とすることによって、ＡＳＩＤ検索値は適切な値に書き換えられて出力される。これにより、ソフトウェアは実際に実行されるハードウェアを意識することなく、任意のＡＳＩＤを出力するときにも、適切な値の範囲に限定されたＡＳＩＤ検索値がメモリ保護資源１０に入力される。
【００５９】
〔実施形態６〕
図６は、実施形態６に係るメモリ保護資源１０の構成例を示すブロック図である。本実施形態６のＣＰＵ３０では、複数の仮想プロセッサが動作する。ＣＰＵ３０は、図２に示した実施形態２のＣＰＵ３０と同様に１個のパイプライン３１を備え、さらに、実施形態２のＣＰＵ３０とは異なり、複数のＡＳＩＤ４２と、複数のマスク情報であるＡＳＩＤＭ４３と、複数の識別初期化情報であるＡＳＩＤＩ４４と、ＡＳＩＤＩ置換回路４５、４６とを備える。複数のＡＳＩＤ４２と、複数のマスク情報であるＡＳＩＤＭ４３と、複数の識別初期化情報であるＡＳＩＤＩ４４は、それぞれ、複数の仮想プロセッサに対応する。
【００６０】
複数のＡＳＩＤＩ４４には複数の仮想プロセッサにそれぞれ対応付けられた固有の識別初期情報が対応付けられている。ＣＰＵ３０からのアクセスが発生したとき、ＣＰＵ３０はＡＳＩＤＩ置換回路４５、４６により、そのアクセス主体が複数の仮想プロセッサのうちの１つであると、ＣＰＵ３０はその時点でのＡＳＩＤ４２の全ビットのうち、ＡＳＩＤＭ４３で指定される一部を、アクセス主体である仮想プロセッサに対応するＡＳＩＤＩ４４に置き換えて、メモリ保護資源１０に出力する。
【００６１】
メモリ保護資源１０の構成と動作は、図１及び図２に示した実施形態１及び実施形態２のメモリ保護資源１０と同じであるので、説明を省略する。
【００６２】
これにより、仮想マルチコアシステムにおいて、アクセス主体から出力される識別子の値の範囲を、仮想プロセッサ毎に固有の値に限定することができる。
【００６３】
〔実施形態７〕
図７は、実施形態７に係るメモリ保護資源１０の構成例を示すブロック図である。ＣＰＵ３０は、図１に示した実施形態１のＣＰＵ３０と同様に、パイプライン３１とＡＳＩＤ３２とを備える。メモリ保護資源１０は、実施形態１のメモリ保護資源１０と同様に領域設定部２と属性設定部３とを含み、ＡＳＩＤ設定部４とＡＳＩＤＭ設定部５に代えてＡＳＩＤ許可エントリ設定部２０をさらに含む、複数のエントリ１を備える。メモリ保護資源１０は、実施形態１のメモリ保護資源１０と同様に、領域判定部１２と、属性判定部１３と、一致検出回路１５と、アクセス許可判定部１１とを備え、さらにＡＳＩＤ許可テーブル２１と、一致検出回路２２＿０〜２２＿３と、論理回路２３＿０〜２３＿３と２４とを備える。
【００６４】
メモリ保護資源１０には、アクセスに際して、ＣＰＵ３０からアドレスとアクセス種別とＡＳＩＤとが入力される。領域判定部１２は、ＣＰＵ３０から入力されるアドレスがエントリ１の領域設定部２に設定される領域に含まれるか否かを判定する。属性判定部１３は、アクセスに際してＣＰＵ３０から入力されるアクセス種別がエントリ１の属性設定部３に設定されるアクセス種別と一致するか否かを判定する。
【００６５】
ＡＳＩＤ許可テーブル２１は、アクセスが許可される可能性がある複数のＡＳＩＤ値ＡＳＩＤ０〜ＡＳＩＤ３を保持する。メモリ保護資源１０にＣＰＵ３０から入力されるＡＳＩＤ３２は、一致検出回路２２＿０〜２２＿３によって、ＡＳＩＤ許可テーブル２１に格納される複数のＡＳＩＤ値ＡＳＩＤ０〜ＡＳＩＤ３と比較され、一致するか否かが判定される。入力されるＡＳＩＤ３２及びＡＳＩＤ許可テーブル２１に格納される複数のＡＳＩＤ値ＡＳＩＤ０〜ＡＳＩＤ３は、それぞれ複数ビット（例えば３２ビット）の識別子情報であるが、一致検出回路２２＿０〜２２＿３による比較結果はそれぞれ１ビットである。即ち、ＡＳＩＤ許可テーブル２１に格納される複数のＡＳＩＤ値ＡＳＩＤ０〜ＡＳＩＤ３の数に対応する数、図７では４ビットの比較結果が出力される。ＡＳＩＤ許可エントリ設定部２０には、複数のＡＳＩＤ値ＡＳＩＤ０〜ＡＳＩＤ３のうち、ＣＰＵ３０から入力されるＡＳＩＤ３２とどのＡＳＩＤ値との比較結果を、アクセス許可判定に反映すべきかを指定する情報が格納されている。例えば、図示されるように、４個のＡＳＩＤ値ＡＳＩＤ０〜ＡＳＩＤ３のそれぞれに対応する１ビット、合計４ビットの指定情報が格納されている。４ビットの指定情報は、ＡＮＤゲート２３＿０〜２３＿３によって、４ビットの比較結果とそれぞれＡＮＤ演算されて、ＡＳＩＤ許可エントリ設定部２０に「ハイ」の指定情報が格納されたビットに対応するＡＳＩＤ値の比較結果のみが、ＯＲゲート２４によって追加の条件として、ＡＮＤゲートで構成されるアクセス許可判定部１１に入力される。
【００６６】
メモリ保護資源１０は、ＣＰＵ３０から入力されたＡＳＩＤ３２が、ＡＳＩＤ許可テーブル２１に設定される複数のＡＳＩＤ値ＡＳＩＤ０〜ＡＳＩＤ３のうちの少なくとも１つと一致し、アドレスが領域設定部２に設定される領域に含まれ、且つ、アクセス種別が属性設定部３に設定されるアクセス種別とが一致するときに、当該アクセスを許可する。
【００６７】
これにより、１つのエントリを共有させる複数の識別子（ＡＳＩＤ）の範囲を柔軟に設定することができる。１つのエントリを共有させる複数のＡＳＩＤは、実施形態１等マスク情報ＡＳＩＤＭによる方法では２の冪乗数ごとに設定する必要があるという制約があり、実施形態３では設定された上限値から下限値までの範囲に制約されるのに対し、本実施形態では、候補の数はハードウェアによって制限されるものの、設定される複数のＡＳＩＤの値自体は、互いの間隔も含めて全く任意である。
【００６８】
また、許可すべき複数の識別子の全てをエントリに保持する場合と比較して、回路規模の増加を抑えることができる。１つのエントリを共有させる複数のＡＳＩＤを全てのエントリに設定して保持する方法が、最も単純であるが、その場合には回路規模が著しく増大する問題がある。本実施形態７では、１個のＡＳＩＤ許可テーブル２１を備えて、比較結果をアクセス許可判定に反映させるか否かの各１ビットの指定情報のみを、各エントリのＡＳＩＤ許可エントリ設定部２０に保持させるように構成したので、回路規模の増大を抑えることができる。
【００６９】
なお、図７は正論理による論理回路の構成例であるが、負論理に変更するなど、同等の動作する他の論理回路に変更することは任意である。
【００７０】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【符号の説明】
【００７１】
１  エントリ
２  領域設定部
３  属性設定部
４  ＡＳＩＤ設定部
５  ＡＳＩＤＭ設定部
６  ＡＳＩＤ上限値設定部
７  ＡＳＩＤ下限値設定部
８  ＣＰＵＩＤ設定部
９  Ｖａｌｉｄフラグ設定部
１０  メモリ保護資源（ＴＬＢ，ＭＰＵ）
１１  アクセス許可判定部
１２  領域判定部
１３  属性判定部
１４  マスク回路
１５  一致検出回路
１６、１７  比較回路
１８  ＡＳＩＤ範囲判定部
１９  ＣＰＵＩＤ判定部
２０  ＡＳＩＤ許可エントリ設定部
２１  ＡＳＩＤ許可テーブル
２２  一致検出回路
２３、２４  論理回路
３０  アクセス主体（ＣＰＵ，ＤＭＡＣ）
３１  パイプライン
３２  ＡＳＩＤ
３３  ＡＳＩＤＭ
３４  ＡＳＩＤＩ
３５、３６  ＡＳＩＤＩ置換回路
４０  メモリマネージメントユニット（ＭＭＵ）
５０  アクセス対象（資源Ａ，資源Ｂ−１，資源Ｂ−２）
５１  メモリ（ＲＡＭ）
５２  周辺機能ブロック（Peripheral）
６０  バス
１００  データ処理装置
【図１】
0006504984.tif 000002
【図２】
0006504984.tif 000003
【図３】
0006504984.tif 000004
【図４】
0006504984.tif 000005
【図５】
0006504984.tif 000006
【図６】
0006504984.tif 000007
【図７】
0006504984.tif 000008
【図８】
0006504984.tif 000009
【図９】
0006504984.tif 000010
【図１０】
0006504984.tif 000011
【図１１】
0006504984.tif 000012
【図１２】
0006504984.tif 000013
【図１３】
0006504984.tif 000014