(57)【要約】【課題】マルチコアシステムを構成するコアの数が増加した場合であってもハードウェアリソースの増加を抑制することができる情報処理装置を提供することである。【解決手段】一実施の形態によれば、情報処理装置１は、複数のコア１０、２０と、複数のコア１０、２０で共有可能な共有リソース３０と、複数のコア１０、２０の各々に固有の設定情報が格納されたローカルレジスタ１４、２４と、を備える。共有リソース３０は複数のコア１０、２０とは独立に設けられており、ローカルレジスタ１４、２４は複数のコア１０、２０の各々に設けられている。【選択図】図１
2017004554.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアと、
前記複数のコアで共有可能な共有リソースと、
前記複数のコアの各々に固有の設定情報が格納されたローカルレジスタと、を備え、
前記共有リソースは前記複数のコアとは独立に設けられており、
前記ローカルレジスタは前記複数のコアの各々に設けられており、
前記共有リソースは、前記各々のコアによる不正なアクセスから共有メモリを保護するメモリ保護回路を含み、
前記複数のコアの各々は、前記メモリ保護回路による判定の前に前記複数のコアの各々が前記共有メモリにアクセス可能であるか否かを判定するローカルメモリ保護回路を備え、
前記各々のローカルメモリ保護回路は、
前記共有メモリの保護領域に関する保護領域情報が格納された第２の保護領域設定レジスタと、
前記第２の保護領域設定レジスタに対応するように設けられ、メモリアクセス情報と前記第２の保護領域設定レジスタに格納されている前記保護領域情報とに基づいて前記各々のコアによる前記共有メモリへのアクセスの可否を判定する第２のアクセス判定回路と、を備え、
前記メモリ保護回路は、
前記共有メモリの保護領域に関する保護領域情報が格納された第１の保護領域設定レジスタと、
前記メモリアクセス情報に含まれているメモリアドレスが前記第２の保護領域設定レジスタに格納されているメモリ領域に含まれていない場合に、前記コアによる前記共有メモリへのアクセスの可否を判定する第１のアクセス判定回路と、を備え、
前記ローカルメモリ保護回路は、前記第２の保護領域設定レジスタに格納されている保護領域情報を前記メモリ保護回路が備える前記第１の保護領域設定レジスタに格納されている保護領域情報を用いて書き換える書換制御回路を更に備える、
情報処理装置。
【請求項２】
前記共有リソースは、前記複数のコアを含むマシンの設定情報が格納された共有レジスタを含む、請求項１に記載の情報処理装置。
【請求項３】
前記複数のコアの各々は、前記各々のコアによる前記共有レジスタへの書き込み及び読み出しを制御する共有レジスタ制御部を備える、請求項２に記載の情報処理装置。
【請求項４】
前記共有レジスタは、前記複数のコアを含むマシンが従う設定情報が格納されたマシン設定レジスタを含む、請求項３に記載の情報処理装置。
【請求項５】
前記共有レジスタは、前記複数のコアを含むマシンを仮想マシンとして使用する場合の設定情報が格納された仮想化設定レジスタを含む、請求項３に記載の情報処理装置。
【請求項６】
前記複数のコアの各々は、前記共有メモリにアクセスする際に前記メモリ保護回路に前記メモリアクセス情報を出力する、請求項１に記載の情報処理装置。
【請求項７】
前記メモリ保護回路は更に、前記各々のコアによる前記共有メモリへのアクセスの可否の判定を調停するアービタを備える、請求項６に記載の情報処理装置。
【請求項８】
前記第１の保護領域設定レジスタには、前記共有メモリのメモリ領域に対応するアドレス情報と前記各々のコアが前記メモリ領域にアクセスする際の権限に関する権限情報とが格納されている、請求項６に記載の情報処理装置。
【請求項９】
前記第１のアクセス判定回路は、前記メモリアクセス情報に含まれているメモリアドレスが前記第１の保護領域設定レジスタに格納されている前記メモリ領域に含まれており、且つ、前記コアに前記メモリ領域へのアクセス権限がある場合に、前記コアが前記共有メモリにアクセス可能であると判定する、請求項８に記載の情報処理装置。
【請求項１０】
前記第２の保護領域設定レジスタに格納されているメモリ領域の数は、前記第１の保護領域設定レジスタに格納されているメモリ領域の数よりも少ない、請求項１に記載の情報処理装置。
【請求項１１】
前記書換制御回路は、前記第２のアクセス判定回路から出力された判定結果に基づいて前記第２のアクセス判定回路の各々におけるアドレスヒット率を求め、当該アドレスヒット率が最も低い第２のアクセス判定回路に対応した第２の保護領域設定レジスタに格納されている保護領域情報を前記第１の保護領域設定レジスタに格納されている保護領域情報を用いて書き換える、請求項１に記載の情報処理装置。
【請求項１２】
複数のコアと、
前記複数のコアで共有可能な共有リソースと、
前記複数のコアの各々に固有の設定情報が格納されたローカルレジスタと、を備え、
前記共有リソースは前記複数のコアとは独立に設けられており、
前記ローカルレジスタは前記複数のコアの各々に設けられており、
前記共有リソースは、前記各々のコアによる不正なアクセスから共有メモリを保護するメモリ保護回路を含み、
前記複数のコアの各々は、前記メモリ保護回路による判定の前に前記複数のコアの各々が前記共有メモリにアクセス可能であるか否かを判定するローカルメモリ保護回路を備え、
前記各々のローカルメモリ保護回路は、
前記共有メモリの保護領域に関する保護領域情報が格納された第２の保護領域設定レジスタと、
前記第２の保護領域設定レジスタに対応するように設けられ、メモリアクセス情報と前記第２の保護領域設定レジスタに格納されている前記保護領域情報とに基づいて前記各々のコアによる前記共有メモリへのアクセスの可否を判定する第２のアクセス判定回路と、を備え、
前記メモリ保護回路は、
前記共有メモリの保護領域に関する保護領域情報が格納された第１の保護領域設定レジスタと、
前記メモリアクセス情報に含まれているメモリアドレスが前記第２の保護領域設定レジスタに格納されているメモリ領域に含まれていない場合に、前記メモリアドレスが前記第１の保護領域設定レジスタに格納されているメモリ領域に含まれているか否かを判定する領域判定回路と、を備え、
前記ローカルメモリ保護回路は、前記領域判定回路において、前記メモリアドレスが前記第１の保護領域設定レジスタに格納されているメモリ領域に含まれていると判定された場合、前記第２の保護領域設定レジスタに格納されている保護領域情報を前記第１の保護領域設定レジスタに格納されている保護領域情報を用いて書き換える書換制御回路を更に備え、
前記第２のアクセス判定回路は、前記第２の保護領域設定レジスタが書き換えられた後、再度、前記メモリアクセス情報と前記第２の保護領域設定レジスタに格納されている書き換え後の保護領域情報とに基づいて前記コアによる前記共有メモリへのアクセスの可否を判定する、
情報処理装置。
【請求項１３】
前記第２の保護領域設定レジスタに格納されているメモリ領域の数は、前記第１の保護領域設定レジスタに格納されているメモリ領域の数よりも少ない、請求項１２に記載の情報処理装置。
【請求項１４】
前記書換制御回路は、前記第２のアクセス判定回路から出力された判定結果に基づいて前記第２のアクセス判定回路の各々におけるアドレスヒット率を求め、当該アドレスヒット率が最も低い第２のアクセス判定回路に対応した第２の保護領域設定レジスタに格納されている保護領域情報を前記第１の保護領域設定レジスタに格納されている保護領域情報を用いて書き換える、請求項１２に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置に関し、例えば複数のコアを備える情報処理装置に関する。
【背景技術】
【０００２】
単一の情報処理装置内に複数のコアを設け、情報処理装置全体の処理能力を向上させるマルチコアシステムが知られている。例えば、マルチコアシステムでは、一つのプログラムを複数のスレッドに分割し、この複数のスレッドを複数のコアでそれぞれ実行することで、プログラムの処理速度を向上させることができる。
【０００３】
特許文献１には、高いセキュリティ性を維持しつつメモリ保護領域への各コアのアクセス権限を動的に変化させることを可能とする技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２５１９６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
単一の情報処理装置内に複数のコアを設けたマルチコアシステムでは、マシン設定や仮想化設定を行うレジスタやメモリ保護回路（ＭＰＵ：Memory Protection Unit）等のハードウェアリソースを各々のコアに設ける必要がある。このため、マルチコアシステムを構成するコアの数が多くなるほど、マルチコアシステム内のハードウェアリソースが増加し、チップ面積やコストが増加するという問題がある。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、情報処理装置は、複数のコアと、複数のコアで共有可能な共有リソースと、複数のコアの各々に固有の設定情報が格納されたローカルレジスタと、を備える。共有リソースは複数のコアとは独立に設けられており、ローカルレジスタは複数のコアの各々に設けられている。
【発明の効果】
【０００８】
前記一実施の形態によれば、マルチコアシステムを構成するコアの数が増加した場合であってもハードウェアリソースの増加を抑制することができる情報処理装置を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかる情報処理装置を示すブロック図である。
【図２】実施の形態１にかかる情報処理装置が備える共有レジスタ制御部＃１〜＃２と共有レジスタ＃０とを示すブロック図である。
【図３】実施の形態２にかかる情報処理装置が備えるＭＰＵ制御部＃１〜＃２とメモリ保護回路ＭＰＵ＃０とを示すブロック図である。
【図４】メモリ保護回路ＭＰＵ＃０が備える保護領域設定レジスタの一例を示す図である。
【図５】実施の形態２にかかる情報処理装置の動作を説明するためのフローチャートである。
【図６】実施の形態２にかかる情報処理装置の動作を説明するためのフローチャートである。
【図７】実施の形態３にかかる情報処理装置が備えるＭＰＵ制御部＃１〜＃２とメモリ保護回路ＭＰＵ＃０とを示すブロック図である。
【図８】実施の形態３にかかる情報処理装置の動作を説明するためのフローチャートである。
【図９】実施の形態３にかかる情報処理装置の動作を説明するためのフローチャートである。
【図１０】実施の形態４にかかる情報処理装置が備えるＭＰＵ制御部＃１〜＃２とメモリ保護回路ＭＰＵ＃０とを示すブロック図である。
【図１１】実施の形態４にかかる情報処理装置の動作を説明するためのフローチャートである。
【図１２】実施の形態４にかかる情報処理装置の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００１０】
＜実施の形態１＞
図１は、実施の形態１にかかる情報処理装置を示すブロック図である。図１に示す情報処理装置１は、コア＃１（１０）と、コア＃２（２０）と、共有リソース＃０（３０）と、共有メモリ３２と、排他制御部３４と、周辺モジュール３５と、を備える。
【００１１】
コア＃１（１０）は、コア＃１（１０）における演算処理を実行する演算部＃１（１１）を備える。演算部＃１（１１）は、ＣＰＵ（Central Processing Unit）＃１、共有レジスタ制御部＃１（１２）、ＭＰＵ制御部＃１（１３）、およびレジスタ＃１（ローカルレジスタ）１４を備える。演算部＃１には内部バスＡ_＃１が設けられており、ＣＰＵ＃１、共有レジスタ制御部＃１（１２）、ＭＰＵ制御部＃１（１３）、およびレジスタ＃１（１４）のそれぞれは、内部バスＡ_＃１を介して互いに接続されている。
【００１２】
なお、コア＃２（２０）の構成についても、コア＃１（１０）の構成と基本的に同様であるので重複した説明は省略する。例えばコア＃１（１０）の演算部＃１（１１）のＣＰＵ＃１、共有レジスタ制御部＃１（１２）、ＭＰＵ制御部＃１（１３）およびレジスタ＃１（１４）はそれぞれ、コア＃２（２０）の演算部＃２（２１）のＣＰＵ＃２、共有レジスタ制御部＃２（２２）、ＭＰＵ制御部＃１（２３）およびレジスタ＃１（ローカルレジスタ）２４に対応している。
【００１３】
ＣＰＵ＃１は所定のプログラムを実行する回路であり、演算部＃１（１１）においてメインプロセッサとして動作する演算回路である。
【００１４】
ＣＰＵ＃１は割り込みコントローラＩＮＴＣ＃１と接続されている。割り込みコントローラＩＮＴＣ＃１は、情報処理装置１の外部に設けられている周辺回路からの割り込み要求を割り込みインタフェース（ＩＦ）＃１を介して受信して、ＣＰＵ＃１に割り込み信号を出力する。
【００１５】
また、ＣＰＵ＃１はキャッシュメモリ＃１と接続されている。キャッシュメモリ＃１にはＣＰＵ＃１において高い頻度で使用されるデータが蓄積されている。よって、ＣＰＵ＃１がキャッシュメモリ＃１にアクセスしてデータを読み出すことで、コア＃１（１０）の動作を高速化することができる。
【００１６】
また、演算部＃１（１１）の内部バスＡ_＃１は、バスＢ_＃１を介してシステムバスインタフェース（ＩＦ）＃１に接続されている。システムバスＩＦ＃１は、コア＃１（１０）の外部に設けられているシステムバス３１と接続されている。同様に、コア＃２（２０）において、演算部＃２（２１）の内部バスＡ_＃２は、バスＢ_＃２を介してシステムバスＩＦ＃２に接続されている。システムバスＩＦ＃２は、コア＃２（２０）の外部に設けられているシステムバス３１と接続されている。システムバス３１には、例えば共有メモリ３２が接続されており、コア＃１（１０）とコア＃２（２０）は共有メモリ３２を共有している。
【００１７】
ＣＰＵ＃１は、内部バスＡ_＃１、バスＢ_＃１、システムバスＩＦ＃１、およびシステムバス３１を介して、共有メモリ３２からデータを読み出し、共有メモリ３２にデータを書き込むことができる。同様に、ＣＰＵ＃２は、内部バスＡ_＃２、バスＢ_＃２、システムバスＩＦ＃２、およびシステムバス３１を介して、共有メモリ３２からデータを読み出し、共有メモリ３２にデータを書き込むことができる。
【００１８】
また、演算部＃１（１１）の内部バスＡ_＃１は、バスＢ_＃１を介して周辺インタフェース（ＩＦ）＃１に接続されている。周辺ＩＦ＃１は、コア＃１（１０）の外部に設けられている周辺バス３３と接続されている。同様に、コア＃２（２０）において、演算部＃２（２１）の内部バスＡ_＃２は、バスＢ_＃２を介して周辺ＩＦ＃２に接続されている。周辺ＩＦ＃２は、コア＃２（２０）の外部に設けられている周辺バス３３と接続されている。周辺バス３３には、例えば排他制御部３４や周辺モジュール３５が接続されている。
【００１９】
ここで、排他制御部３４は、コア＃１（１０）およびコア＃２（２０）のうちのいずれか一方が共有リソース＃０や共有メモリ３２にアクセスしている場合に、他方のコアが共有リソース＃０や共有メモリ３２にアクセスすることを制限するための回路である。例えば、コア＃１（１０）が共有リソース＃０にアクセスしている場合、排他制御部３４はコア＃２（２０）による共有リソース＃０へのアクセスを禁止する。
【００２０】
共有リソース＃０（３０）は、コア＃１（１０）とコア＃２（２０）とで共有可能なリソースであり、例えば共有レジスタ＃０（５０）およびメモリ保護回路ＭＰＵ＃０（６０）を備える。ここで、共有リソース＃０（３０）は、コア＃１（１０）およびコア＃２（２０）とは独立に設けられている。
【００２１】
共有レジスタ＃０（５０）は、コア＃１（１０）とコア＃２（２０）とで共有可能な設定情報を格納するレジスタであり、例えば図２に示すように、マシン設定レジスタ＃０（５１）や仮想化設定レジスタ＃０（５２）を備える。マシン設定レジスタ＃０（５１）には、コア＃１（１０）とコア＃２（２０）とを含むマシン全体が従うアーキテクチャ情報が格納されている。アーキテクチャ情報とは、マシンＩＤ、互換モード設定、例外発生設定などに関する情報である。また、仮想化設定レジスタ＃０（５２）には、コア＃１（１０）とコア＃２（２０）とを含むマシンを仮想マシンとして用いる場合の設定情報が格納されている。ここで仮想マシンとして用いる場合の設定情報とは、例えばハイパーバイザコール分岐先アドレスやハイパーバイザコールテーブルサイズ等のハイパーバイザ特権に関する設定情報である。
【００２２】
コア＃１（１０）の演算部＃１（１１）には、コア＃１（１０）による共有レジスタ＃０（５０）への書き込み及び読み出しを制御する共有レジスタ制御部＃１（１２）が設けられている。同様に、コア＃２（１０）の演算部＃２（２１）には、コア＃２（２０）による共有レジスタ＃０（５０）への書き込み及び読み出しを制御する共有レジスタ制御部＃２（２２）が設けられている。
【００２３】
図２に示すように、例えばコア＃１（１０）のＣＰＵ＃１が共有レジスタ＃０（５０）に設定値を書き込む場合、ＣＰＵ＃１は内部バスＡ_＃１を経由して共有レジスタ制御部＃１（１２）に書き込み命令を出力する。書き込み命令を受けた共有レジスタ制御部＃１（１２）は、共有レジスタ＃０（５０）に書き込み制御信号と書き込み値（設定値）を出力する。書き込み制御信号が供給されると、共有レジスタ＃０（５０）は所定のレジスタに書き込み値（設定値）を格納する。
【００２４】
また、例えばコア＃１（１０）のＣＰＵ＃１が共有レジスタ＃０（５０）から設定値を読み出す場合、ＣＰＵ＃１は内部バスＡ_＃１を経由して共有レジスタ制御部＃１（１２）に読み出し命令を出力する。読み出し命令を受けた共有レジスタ制御部＃１（１２）は、共有レジスタ＃０（５０）に読み出し制御信号を出力する。読み出し制御信号が供給されると、共有レジスタ＃０（５０）は所定のレジスタから読み出し値（設定値）を読み出し、共有レジスタ制御部＃１（１２）に出力する。そして、共有レジスタ制御部＃１（１２）は内部バスＡ_＃１を経由してＣＰＵ＃１に読み出し値（設定値）を出力する。
【００２５】
なお、コア＃２（２０）においてＣＰＵ＃２が共有レジスタ＃０（５０）に設定値を書き込む場合や、共有レジスタ＃０（５０）から設定値を読み出す場合についても同様である。また、例えば共有レジスタ＃０（５０）に格納されている重要な情報については、マスタ権限のあるコア（例えば、コア＃１（１０））のみが書き込むように構成してもよい。
【００２６】
図１に示すメモリ保護回路ＭＰＵ＃０（６０）は、コア＃１（１０）およびコア＃２（２０）による共有メモリ３２への不正なアクセスから共有メモリ３２を保護するための回路である。例えば、ＣＰＵ＃１が共有メモリ３２にアクセスする場合、メモリ保護回路ＭＰＵ＃０（６０）は、ＣＰＵ＃１から出力されたメモリアドレスを含むメモリアクセス情報に基づいて、ＣＰＵ＃１による共有メモリ３２へのアクセスの可否を判定する。そして、ＣＰＵ＃１はメモリ保護回路ＭＰＵ＃０（６０）においてアクセス可能と判定された場合に、共有メモリ３２にアクセスする。
【００２７】
ここで、メモリ保護回路ＭＰＵ＃０（６０）は、コア＃１（１０）およびコア＃２（２０）による共有メモリ３２へのアクセス以外にも、例えば、コア＃１（１０）およびコア＃２（２０）が周辺モジュール３５にアクセスする場合等、コア＃１（１０）およびコア＃２（２０）が他の任意の共有回路にアクセスする場合にも用いることができる。なお、以下では、メモリ保護回路ＭＰＵ＃０（６０）が共有メモリ３２を保護する場合を例として説明する。
【００２８】
また、図１では共有メモリ３２がシステムバス３１に接続されている場合を例として示したが、例えば、ＣＰＵ＃１に接続されたメモリ（例えば、ＳＲＡＭやフラッシュメモリ）を共有メモリとして用いてもよく、また、ＣＰＵ＃２に接続されたメモリ（例えば、ＳＲＡＭやフラッシュメモリ）を共有メモリとして用いてもよい。
【００２９】
コア＃１（１０）の演算部＃１（１１）には、コア＃１（１０）によるメモリ保護回路ＭＰＵ＃０（６０）へのアクセスを制御するＭＰＵ制御部＃１（１３）が設けられている。また、コア＃２（２０）の演算部＃２（２１）には、コア＃２（２０）によるメモリ保護回路ＭＰＵ＃０（６０）へのアクセスを制御するＭＰＵ制御部＃２（２３）が設けられている。なお、ＭＰＵ制御部＃１（１３）、ＭＰＵ制御部＃２（２３）、およびメモリ保護回路ＭＰＵ＃０（６０）については、実施の形態２で詳細に説明する。
【００３０】
また、コア＃１（１０）の演算部＃１（１１）には、コア＃１（１０）に固有の設定情報が格納されたレジスタ＃１（１４）が設けられている。ここでコア＃１（１０）に固有の設定情報とは、例えばＣＰＵ＃１のＩＤ情報やキャッシュメモリ＃１の設定情報等である。同様に、コア＃２（２０）の演算部＃２（２１）には、コア＃２（２０）に固有の設定情報が格納されたレジスタ＃２（２４）が設けられている。
【００３１】
従来、単一の情報処理装置内に複数のコアを設けたマルチコアシステムでは、マシン設定や仮想化設定を行うレジスタやメモリ保護回路等のハードウェアリソースを各々のコアに設ける必要があった。このため、マルチコアシステムを構成するコアの数が多くなるほど、マルチコアシステム内のハードウェアリソースが増加し、チップ面積やコストが増加するという問題があった。
【００３２】
そこで本実施の形態にかかる情報処理装置１では、マルチコアシステムを構成するコア＃１（１０）とコア＃２（２０）とで共有可能な共有リソース＃０（３０）を、コア＃１（１０）およびコア＃２（２０）とは独立に設けている。また、コア＃１（１０）に固有の設定情報が格納されたレジスタ＃１（１４）をコア＃１（１０）に設け、コア＃２（２０）に固有の設定情報が格納されたレジスタ＃２（２４）をコア＃２（２０）に設けている。
【００３３】
このように本実施の形態にかかる情報処理装置１では、各コアに固有の設定情報が格納されたレジスタについては各コアの内部に残し、各コアで共有できる共有リソースについては各コアの外部に設けて共有している。このような構成とすることで、各コアの回路構成を簡素化することができ、マルチコアシステムを構成するコアの数が増加した場合であってもハードウェアリソースの増加を抑制することができる。よって、情報処理装置のチップ面積やコストの増加を抑制することができる。
【００３４】
＜実施の形態２＞
次に、実施の形態２について説明する。本実施の形態では、実施の形態１で説明した情報処理装置が備えるＭＰＵ制御部＃１（１３）、ＭＰＵ制御部＃２（２３）、およびメモリ保護回路ＭＰＵ＃０（６０）について詳細に説明する。なお、これ以外の構成については実施の形態１で説明した情報処理装置と同様であるので、同一の構成要素には同一の符号を付し重複した説明は省略する。
【００３５】
図３は、本実施の形態にかかる情報処理装置が備えるＭＰＵ制御部＃１（１３）、ＭＰＵ制御部＃２（２３）、およびメモリ保護回路ＭＰＵ＃０（６０）を示すブロック図である。メモリ保護回路ＭＰＵ＃０（６０）は、アービタ６１、保護領域設定レジスタ＃１〜＃ｍ（第１の保護領域設定レジスタ）、アクセス判定回路＃１〜＃ｍ（第１のアクセス判定回路）、および判定信号生成回路＃０を備える。ここで、ｍは２以上の整数である。
【００３６】
コア＃１（１０）が備えるＭＰＵ制御部＃１（１３）は、例えばＣＰＵ＃１が共有メモリ３２にアクセスする際にＣＰＵ＃１から出力されたメモリアクセス情報ＡＣＣ_Ｍ_１をメモリ保護回路ＭＰＵ＃０（６０）のアービタ６１に出力する。また、ＭＰＵ制御部＃１（１３）はＣＰＵ＃１に通知信号ＡＣＫ_１を出力する。
【００３７】
同様に、コア＃２（２０）が備えるＭＰＵ制御部＃２（２３）は、例えばＣＰＵ＃２が共有メモリ３２にアクセスする際にＣＰＵ＃２から出力されたメモリアクセス情報ＡＣＣ_Ｍ_２をメモリ保護回路ＭＰＵ＃０（６０）のアービタ６１に出力する。また、ＭＰＵ制御部＃２（２３）はＣＰＵ＃２に通知信号ＡＣＫ_２を出力する。
【００３８】
メモリ保護回路ＭＰＵ＃０（６０）が備えるアービタ６１は、コア＃１（１０）が共有メモリ３２にアクセス可能であるか否かの判定と、コア＃２（２０）が共有メモリ３２にアクセス可能であるか否かの判定とを調停する。つまり、ＭＰＵ制御部＃１（１３）からの判定要求とＭＰＵ制御部＃２（２３）からの判定要求とが競合した場合、これらの判定要求を調停する。
【００３９】
具体的には、アービタ６１は、ＭＰＵ制御部＃１（１３）から出力されたメモリアクセス情報ＡＣＣ_Ｍ_１と、ＭＰＵ制御部＃２（２３）から出力されたメモリアクセス情報ＡＣＣ_Ｍ_２とが競合した場合、これらのメモリアクセス情報ＡＣＣ_Ｍ_１、ＡＣＣ_Ｍ_２を調停し、いずれか一方のメモリアクセス情報ＡＣＣ_Ｍ_ｎ（ｎ＝１または２）をアクセス判定回路＃１〜＃ｍに出力する。また、アービタ６１は、ＭＰＵ制御部１３、２３のうち、選択しているメモリアクセス情報ＡＣＣ_Ｍ_ｎに対応しているＭＰＵ制御部に判定信号ＯＵＴ_ｎを出力する。つまり、アービタ６１は、メモリアクセス情報ＡＣＣ_Ｍ_１を選択している場合、判定信号生成回路＃０から出力された判定信号ＯＵＴ_１をＭＰＵ制御部＃１（１３）に出力する。また、アービタ６１は、メモリアクセス情報ＡＣＣ_Ｍ_２を選択している場合、判定信号生成回路＃０から出力された判定信号ＯＵＴ_２をＭＰＵ制御部＃２（２３）に出力する。
【００４０】
ここで、メモリアクセス情報ＡＣＣ_Ｍ_ｎには、例えばメモリメモリアドレス、共有メモリ３２へのアクセスの種類（書き込みアクセス／読み出しアクセス）に関する情報やアクセス幅（バイト／ハーフワード／ロングワード）に関する情報が含まれている。
【００４１】
保護領域設定レジスタ＃１〜＃ｍは、共有メモリ３２の保護領域に関する保護領域情報を格納している。つまり、保護領域設定レジスタ＃１〜＃ｍは、共有メモリ３２のメモリ領域に対応するアドレス情報と、各々のコアが共有メモリ３２のメモリ領域にアクセスする際の権限に関する権限情報（属性情報）とを格納している。
【００４２】
図４は、メモリ保護回路ＭＰＵ＃０（６０）が備える保護領域設定レジスタ＃１〜＃ｍの一例を示す図である。図４に示すように、各々の保護領域設定レジスタ＃１〜＃ｍは、上限アドレスレジスタ（ＭＰＵＡ１〜ＭＰＵＡｍ）、下限アドレスレジスタ（ＭＰＬＡ１〜ＭＰＬＡｍ）、および属性レジスタ（ＭＰＡＴ１〜ＭＰＡＴｍ）を備える。
【００４３】
上限アドレスレジスタ（ＭＰＵＡ１〜ＭＰＵＡｍ）は、各々のメモリ領域＃１〜＃ｍの上限アドレスを格納するレジスタである。下限アドレスレジスタ（ＭＰＬＡ１〜ＭＰＬＡｍ）は、各々のメモリ領域＃１〜＃ｍの下限アドレスを格納するレジスタである。ここでメモリ領域＃１〜＃ｍのそれぞれは、エントリ＃１〜＃ｍのメモリ領域に対応している。例えば、エントリ＃１のメモリ領域としてメモリ領域＃１を設定する場合、保護領域設定レジスタ＃１の上限アドレスレジスタＭＰＵＡ１にはメモリ領域＃１の上限アドレスを、下限アドレスレジスタＭＰＬＡ１にはメモリ領域＃１の下限アドレスを格納する。このとき、共有メモリ３２のメモリ領域＃１〜＃ｍ、つまりエントリ＃１〜＃ｍのメモリ領域は互いに重ならないように設定してもよく、また互いに重なるように設定してもよい。
【００４４】
なお、メモリ領域＃１〜＃ｍは、上記のように上限アドレスと下限アドレスとを用いて規定する代わりに、下限アドレスとメモリ領域のサイズとを用いて規定してもよい。この場合は、例えば下限アドレスレジスタと領域サイズレジスタを設ける。
【００４５】
属性レジスタ（ＭＰＡＴ１〜ＭＰＡＴｍ）は、各々のメモリ領域＃１〜＃ｍ（エントリ＃１〜＃ｍ）の属性（例えば、書き込みの許可／禁止、読み出しの許可／禁止、実行の許可／禁止）を格納するレジスタである。また、属性レジスタ（ＭＰＡＴ１〜ＭＰＡＴｍ）には、ＩＤ情報が格納されていてもよい。例えば、ＩＤ情報は各々のコアに対応するコアＩＤ情報、複数のコアをグループ化したグループＩＤ情報等である。例えば、属性レジスタにコアＩＤ情報が格納されている場合は、コア毎に共有メモリ３２へのアクセス判定を実施することができる。
【００４６】
図３に示すように、アクセス判定回路＃１〜＃ｍは、保護領域設定レジスタ＃１〜＃ｍに対応するように設けられている。換言すると、各々のエントリ＃１〜＃ｍに対応するように、保護領域設定レジスタ＃１〜＃ｍとアクセス判定回路＃１〜＃ｍとが設けられている。アクセス判定回路＃１〜＃ｍは、コア＃１（１０）およびコア＃２（２０）からそれぞれ出力されたメモリアクセス情報ＡＣＣ_Ｍ_ｎと、保護領域設定レジスタ＃１〜＃ｍに格納されている保護領域情報とに基づいて、コア＃１（１０）およびコア＃２（２０）による共有メモリ３２へのアクセスの可否を判定する。
【００４７】
つまり、アクセス判定回路＃１〜＃ｍは、メモリアクセス情報ＡＣＣ_Ｍ_ｎに含まれているメモリアドレスが保護領域設定レジスタ＃１〜＃ｍに格納されているメモリ領域に含まれており、且つ、コア＃１（１０）、コア＃２（２０）にメモリ領域３２へのアクセス権限がある場合に、コア＃１（１０）、コア＃２（２０）が共有メモリ３２にアクセス可能であると判定する。
【００４８】
例えば、コア＃１（１０）から出力されたメモリアクセス情報ＡＣＣ_Ｍ_１に含まれるメモリアドレスＡＤＤ_Ｍ_１が、保護領域設定レジスタ＃１に格納されているメモリ領域＃１に含まれている場合、アクセス判定回路＃１はメモリアドレスＡＤＤ_Ｍ_１がエントリ＃１に含まれていると判定する。つまり、メモリアドレスＡＤＤ_Ｍ_１が上限アドレスレジスタ（ＭＰＵＡ１）と下限アドレスレジスタ（ＭＰＬＡ１）の範囲内にある場合、アクセス判定回路＃１はメモリアドレスＡＤＤ_Ｍ_１がエントリ＃１に含まれていると判定する。
【００４９】
更に、コア＃１（１０）による共有メモリ３２へのアクセスの内容（つまり、書き込み、読み出し、実行など）が許可されている場合、アクセス判定回路＃１はコア＃１（１０）による共有メモリ３２へのアクセスを許可する。ここで、アクセスの内容が許可されている場合とは、コア＃１（１０）による共有メモリ３２へのアクセスの内容が属性レジスタ（ＭＰＡＴ１）にて許可されている場合である。
【００５０】
判定信号生成回路＃０は、アクセス判定回路＃１〜＃ｍから出力された判定結果に基づいて判定信号ＯＵＴ_ｎを生成し、生成した判定信号ＯＵＴ_ｎをアービタ６１に出力する。つまり、判定信号生成回路＃０は各々のアクセス判定回路＃１〜＃ｍのいずれかにおいて共有メモリ３２へのアクセスを許可すると判定された場合、共有メモリ３２へのアクセスを許可する判定信号ＯＵＴ_ｎを出力する。一方、判定信号生成回路＃０は各々のアクセス判定回路＃１〜＃ｍの全てにおいて共有メモリ３２へのアクセスを禁止すると判定された場合、共有メモリ３２へのアクセスを禁止する判定信号ＯＵＴ_ｎを出力する。なお、エントリ＃１〜＃ｍのメモリ領域が互いに重なるように設定されている場合は、複数のアクセス判定回路＃１〜＃ｍにおいてアクセスを許可すると判定される場合もある。
【００５１】
ＭＰＵ制御部＃１（１３）は、アービタ６１から出力された判定信号ＯＵＴ_１がアクセス許可を示す場合、ＣＰＵ＃１に通知信号ＡＣＫ_１としてアクセス許可通知信号を出力する。その後、ＣＰＵ＃１は共有メモリ３２にアクセスする。一方、ＭＰＵ制御部＃１（１３）は、判定信号ＯＵＴ_１がアクセス不可を示す場合、ＣＰＵ＃１に通知信号ＡＣＫ_１として例外通知信号を出力する。この場合は、ＣＰＵ＃１による共有メモリ３２へのアクセスが禁止される。なお、ＭＰＵ制御部＃２（２３）についても同様である。
【００５２】
次に、図５、図６に示すフローチャートを用いて、本実施の形態にかかる情報処理装置の動作について説明する。以下では、一例としてコア＃１（１０）が備えるＣＰＵ＃１が共有メモリ３２にアクセスする場合について説明する。
【００５３】
ＣＰＵ＃１が共有メモリ３２にアクセスする場合、ＣＰＵ＃１はＭＰＵ制御部＃１（１３）にメモリアクセス情報ＡＣＣ_Ｍ_１を出力する（ステップＳ１）。そして、ＭＰＵ制御部＃１（１３）は、アービタ６１にメモリアクセス情報ＡＣＣ_Ｍ_１を出力する（ステップＳ２）。アービタ６１は、コア＃１（１０）が共有メモリ３２にアクセス可能であるか否かの判定と、コア＃２（２０）が共有メモリ３２にアクセス可能であるか否かの判定とが競合している場合は、これらの判定要求を調停する。そして、アービタ６１による調停後、アービタ６１からアクセス判定回路＃１〜＃ｍにメモリアクセス情報ＡＣＣ_Ｍ_１が出力される（ステップＳ３）。その後、各々のアクセス判定回路＃１〜＃ｍはアクセス判定を実施し、各々のアクセス判定回路＃１〜＃ｍにおける判定結果を判定信号生成回路＃０に出力する（ステップＳ４）。
【００５４】
図６に示すフローチャートを用いて、アクセス判定について詳細に説明する。アクセス判定を行う際、アクセス判定回路＃１〜＃ｍは保護領域設定レジスタ＃１〜＃ｍとメモリアクセス情報ＡＣＣ_Ｍ_１とに基づきアクセス判定を行う（ステップＳ１１）。つまり、メモリアクセス情報ＡＣＣ_Ｍ_１に含まれるメモリアドレスＡＤＤ_Ｍ_１が、各エントリ＃１〜＃ｍ（つまり、保護領域設定レジスタ＃１〜＃ｍに格納されているメモリ領域＃１〜＃ｍ）に含まれているか判定する。そして、メモリアドレスＡＤＤ_Ｍ_１が、エントリ＃１〜＃ｍに含まれていない場合（ステップＳ１２：Ｎｏ）、アクセス判定回路＃１〜＃ｍはアクセス不可を示す判定結果を判定信号生成回路＃０に出力する（ステップＳ１５）。
【００５５】
一方、メモリアドレスＡＤＤ_Ｍ_１がエントリ＃１〜＃ｍに含まれており（ステップＳ１２：Ｙｅｓ）、更に、ＣＰＵ＃１による共有メモリ３２へのアクセスの内容が許可されている場合（ステップＳ１３：Ｙｅｓ）、アクセス判定回路＃１〜＃ｍはアクセス許可を示す判定結果を判定信号生成回路＃０に出力する（ステップＳ１４）。ここで、ＣＰＵ＃１による共有メモリ３２へのアクセスの内容が許可されている場合とは、例えばＣＰＵ＃１による共有メモリ３２へのアクセスの内容が保護領域設定レジスタ＃１〜＃ｍの属性レジスタにて許可されている場合である。
【００５６】
また、メモリアドレスＡＤＤ_Ｍ_１が、エントリ＃１〜＃ｍに含まれており（ステップＳ１２：Ｙｅｓ）、更に、ＣＰＵ＃１による共有メモリ３２へのアクセスの内容が許可されていない場合（ステップＳ１３：Ｎｏ）、アクセス判定回路＃１〜＃ｍはアクセス不可を示す判定結果を判定信号生成回路＃０に出力する（ステップＳ１５）。
【００５７】
このようにして各々のアクセス判定回路＃１〜＃ｍはアクセス判定を実施する。そしてアクセス判定後、判定信号生成回路＃０はアービタ６１に判定信号ＯＵＴ_１を出力する（ステップＳ５）。アービタ６１はＭＰＵ制御部＃１（１３）に判定信号ＯＵＴ_１を出力する（ステップＳ６）。そして、判定信号ＯＵＴ_１がアクセス許可を示す場合（ステップＳ７：Ｙｅｓ）、ＭＰＵ制御部＃１（１３）はＣＰＵ＃１に通知信号ＡＣＫ_１としてアクセス許可通知信号を出力する。その後、ＣＰＵ＃１は共有メモリ３２にアクセスする（ステップＳ８）。一方、判定信号ＯＵＴ_１がアクセス不可を示す場合（ステップＳ８：Ｎｏ）、ＭＰＵ制御部＃１（１３）はＣＰＵ＃１に通知信号ＡＣＫ_１として例外通知信号を出力する（ステップＳ９）。この場合は、ＣＰＵ＃１による共有メモリ３２へのアクセスが禁止される。
【００５８】
メモリ保護回路は、各々のコアが備える回路の中でも回路面積が大きい回路である。特に、エントリ数が多い場合（例えば、ｍ＝１６等）は、各々のコアに占める回路面積が大きくなると共に、アクセス判定時の消費電力も増加する。つまり、メモリ保護判定はメモリアクセスごとに行う必要があるため、エントリ数が多くなるとその分だけ消費電力が増加する。このため、マルチコアシステムを構成するコアの数が増加した場合は、その分だけ回路面積や消費電力が増加するという問題があり、メモリ保護回路ではこの問題が特に顕著にあらわれていた。
【００５９】
本実施の形態にかかる情報処理装置では、コア＃１（１０）とコア＃２（２０）とでメモリ保護回路ＭＰＵ＃０（６０）を共有している。このような構成とすることで、各コアの回路構成を簡素化することができ、マルチコアシステムを構成するコアの数が増加した場合であってもハードウェアリソースの増加を抑制することができる。
【００６０】
つまり、メモリ保護回路を共有することで、情報処理装置全体でのメモリ保護回路が備えるエントリ数を少なくすることができるので、情報処理装置全体での消費電力を低減することができる。例えば、マルチコアシステムを構成するコアの数が２つであり、メモリ保護回路のエントリ数ｍがｍ＝１６である場合、各々のコアにメモリ保護回路を設けると情報処理装置全体でのエントリ数は３２（＝１６＋１６）となる。しかし、各々のコアでメモリ保護回路を共有した場合は、情報処理装置全体でのエントリ数は１６となるので、消費電力を約１／２にすることができる。
【００６１】
また、例えば、情報処理装置には、パーソナルコンピュータ等に用いられるマイクロプロセッサと、搭載される電子機器の制御に機能が特化されているマイクロコントローラとがある。マイクロプロセッサは大容量のメモリを扱うため、メモリ保護機構としてメモリ保護機能とアドレス変換機能とを備えるメモリ管理ユニット（ＭＭＵ）を搭載する場合が多い。
【００６２】
一方、マイクロコントローラは搭載される電子機器の制御に機能が特化されているため、大容量のメモリを搭載する必要がなく、また仮想アドレスを物理アドレスに変換するアドレス変換機能も不要である。また、マイクロコントローラでは省電力、小面積が求められている。このため、マイクロコントローラのメモリ保護機構として、メモリ管理ユニット（ＭＭＵ）を搭載するとハードウェア資源のオーバーヘッドが大きくなる。
【００６３】
また、マイクロコントローラは電子機器の制御に用いられるため、リアルタイム性が重要となる。しかし、マイクロコントローラのメモリ保護機構としてメモリ管理ユニット（ＭＭＵ）を搭載すると、ＴＬＢミスヒット時にテーブルウォークが発生し、処理に時間がかかるためリアルタイム性が損なわれる。
【００６４】
よって、マイクロコントローラのメモリ保護機構としては、アドレス変換機能を備えないメモリ保護ユニット（ＭＰＵ）を用いるほうが、アドレス変換機能を備えるＭＭＵを用いるよりも好ましい。このため、本実施の形態にかかる情報処理装置は、省電力、小面積、リアルタイム性が重視されるマイクロコントローラに特に適しているといえる。
【００６５】
なお、本実施の形態にかかる情報処理装置は、アドレス変換機能を備えたメモリ保護回路を有する情報処理装置への適用を妨げるものではなく、例えばアドレス変換機能を備えるメモリ管理ユニット（ＭＭＵ）を搭載したマイクロプロセッサにも適用することができる。更に、本実施の形態にかかる情報処理装置は、例えばアドレス変換機能が不要なマイクロプロセッサにも適用することができる。
【００６６】
＜実施の形態３＞
次に、実施の形態３について説明する。図７は、本実施の形態にかかる情報処理装置が備えるＭＰＵ制御部＃１（１３'）、ＭＰＵ制御部＃２（２３'）、およびメモリ保護回路ＭＰＵ＃０（６０'）を示すブロック図である。本実施の形態では、図７に示すようにＭＰＵ制御部＃１（１３'）およびＭＰＵ制御部＃１（２３'）がそれぞれ、ローカルＭＰＵ＃１（７１）およびローカルＭＰＵ＃２（７２）を備える点が実施の形態２で説明した情報処理装置と異なる。これ以外は実施の形態１および２で説明した情報処理装置と同様である。
【００６７】
図７に示すように、ＭＰＵ制御部＃１（１３'）はローカルＭＰＵ＃１（７１）を備える。ローカルＭＰＵ＃１（７１）は、アドレスレジスタ＃１、保護領域設定レジスタ＃１_１〜＃１_ｐ（第２の保護領域設定レジスタ）、アクセス判定回路＃１_１〜＃１_ｐ（第２のアクセス判定回路）、判定信号生成回路＃１、および書換制御回路＃１を備える。ここで、ｐは１≦ｐ＜ｍの整数である。アドレスレジスタ＃１は、ＭＰＵ制御部＃１（１３'）に供給されたメモリアクセス情報ＡＣＣ_Ｍ_１を一時的に保持するレジスタである。
【００６８】
保護領域設定レジスタ＃１_１〜＃１_ｐは、共有メモリ３２の保護領域に関する保護領域情報を格納している。つまり、保護領域設定レジスタ＃１_１〜＃１_ｐは、共有メモリ３２のメモリ領域に対応するアドレス情報と、コア＃１（１０）が共有メモリ３２のメモリ領域にアクセスする際の権限に関する権限情報とを格納している。なお、保護領域設定レジスタ＃１_１〜＃１_ｐについては、実施の形態２で説明した保護領域設定レジスタ＃１〜＃ｍ（図４参照）と同様であるので、重複した説明は省略する。
【００６９】
アクセス判定回路＃１_１〜＃１_ｐは、保護領域設定レジスタ＃１_１〜＃１_ｐに対応するように設けられている。換言すると、各々のエントリ＃１_１〜＃１_ｐに対応するように、保護領域設定レジスタ＃１_１〜＃１_ｐとアクセス判定回路＃１_１〜＃１_ｐとが設けられている。アクセス判定回路＃１_１〜＃１_ｐは、アドレスレジスタ＃１から出力された（つまり、ＣＰＵ＃１から出力された）メモリアクセス情報ＡＣＣ_Ｍ_１と、保護領域設定レジスタ＃１_１〜＃１_ｐに格納されている保護領域情報とに基づいて、コア＃１（１０）による共有メモリ３２へのアクセスの可否を判定する。
【００７０】
つまり、アクセス判定回路＃１_１〜＃１_ｐは、メモリアクセス情報ＡＣＣ_Ｍ_１に含まれているメモリアドレスが保護領域設定レジスタ＃１_１〜＃１_ｐに格納されているメモリ領域に含まれており、且つ、コア＃１（１０）にメモリ領域３２へのアクセス権限がある場合に、コア＃１（１０）が共有メモリ３２にアクセス可能であると判定する。
【００７１】
判定信号生成回路＃１は、判定信号ＯＵＴ_Ｍ_１をＭＰＵ制御部＃１（１３'）に、または、メモリアドレスＡＤＤ_Ｍ_１をアービタ６１'に出力する。
【００７２】
つまり、判定信号生成回路＃１は、メモリアドレスＡＤＤ_Ｍ_１がヒットし、且つ、コア＃１（１０）にメモリ領域３２へのアクセス権限があると判定された場合に、アクセスを許可する判定信号ＯＵＴ_Ｍ_１を生成し、生成した判定信号ＯＵＴ_Ｍ_１をＭＰＵ制御部＃１（１３'）に出力する。ここで、メモリアドレスＡＤＤ_Ｍ_１がヒットした場合とは、アクセス判定回路＃１_１〜＃１_ｐのいずれかにおいて、メモリアクセス情報ＡＣＣ_Ｍ_１に含まれているメモリアドレスＡＤＤ_Ｍ_１が保護領域設定レジスタ＃１_１〜＃１_ｐに格納されているメモリ領域に含まれていると判定された場合である。
【００７３】
また、判定信号生成回路＃１は、メモリアドレスＡＤＤ_Ｍ_１がヒットし、且つ、コア＃１（１０）にメモリ領域３２へのアクセス権限がないと判定された場合に、アクセスを不可とする判定信号ＯＵＴ_Ｍ_１を生成し、生成した判定信号ＯＵＴ_Ｍ_１をＭＰＵ制御部＃１（１３'）に出力する。なお、各々のエントリ＃１_１〜＃１_ｐにメモリ領域のオーバーラップを許している場合は、メモリ保護回路ＭＰＵ＃０（６０'）の他のエントリにおいてアクセス判定をする必要があるため、判定信号ＯＵＴ_Ｍ_１をＭＰＵ制御部＃１（１３'）に出力することなくアービタ６１'にメモリアドレスＡＤＤ_Ｍ_１を出力する。
【００７４】
一方、判定信号生成回路＃１は、メモリアドレスＡＤＤ_Ｍ_１がヒットしなかった場合、アービタ６１'にメモリアドレスＡＤＤ_Ｍ_１を出力する。ここで、メモリアドレスＡＤＤ_Ｍ_１がヒットしなかった場合とは、全てのアクセス判定回路＃１_１〜＃１_ｐにおいて、メモリアクセス情報ＡＣＣ_Ｍ_１に含まれているメモリアドレスＡＤＤ_Ｍ_１が保護領域設定レジスタ＃１_１〜＃１_ｐに格納されているメモリ領域に含まれていないと判定された場合である。
【００７５】
書換制御回路＃１は、アクセス判定回路＃１_１〜＃１_ｐから出力された判定結果に基づいて、各々のアクセス判定回路＃１_１〜＃１_ｐにおけるアドレスヒット率を求める。ここで、アドレスヒット率とは、メモリアクセス情報ＡＣＣ_Ｍ_１に含まれているメモリアドレスＡＤＤ_Ｍ_１が保護領域設定レジスタ＃１_１〜＃１_ｐに格納されているメモリ領域に含まれていると判定された確率である。そして、書換制御回路＃１は、アドレスヒット率が最も低いアクセス判定回路＃１_１〜＃１_ｐに対応した保護領域設定レジスタ＃１_１〜＃１_ｐの保護領域情報を、アービタ６１'から供給されたレジスタ書き換え情報ＳＥＴ_ＲＥＧ_１を用いて書き換える。
【００７６】
なお、ＭＰＵ制御部＃２（２３'）が備えるローカルＭＰＵ＃２（７２）の構成についても、上記で説明したＭＰＵ制御部＃１（１３'）が備えるローカルＭＰＵ＃１（７１）の構成と同様であるので、重複した説明は省略する。
【００７７】
メモリ保護回路ＭＰＵ＃０（６０'）は、ローカルＭＰＵ７１、７２においてメモリアドレスＡＤＤ_Ｍ_ｎがヒットしなかった場合に、メモリ保護回路ＭＰＵ＃０（６０'）が備える保護領域設定レジスタ＃１〜＃ｍに格納されているメモリ領域にメモリアドレスＡＤＤ_Ｍ_ｎが含まれているか否かを判定する。
【００７８】
メモリ保護回路ＭＰＵ＃０（６０'）が備えるアービタ６１'は、ローカルＭＰＵ＃１（７１）の判定信号生成回路＃１から出力されたメモリアドレスＡＤＤ_Ｍ_１と、ローカルＭＰＵ＃２（７２）の判定信号生成回路＃２から出力されたメモリアドレスＡＤＤ_Ｍ_２とが競合した場合、メモリアドレスＡＤＤ_Ｍ_１とメモリアドレスＡＤＤ_Ｍ_２を調停する。つまり、アービタ６１'はメモリアドレスＡＤＤ_Ｍ_１またはメモリアドレスＡＤＤ_Ｍ_２を領域判定回路＃１〜＃ｍに出力する。
【００７９】
保護領域設定レジスタ＃１〜＃ｍは、共有メモリ３２の保護領域に関する保護領域情報を格納している。つまり、保護領域設定レジスタ＃１〜＃ｍは、共有メモリ３２のメモリ領域に対応するアドレス情報と、各々のコアが共有メモリ３２のメモリ領域にアクセスする際の権限に関する権限情報とを格納している。なお、保護領域設定レジスタ＃１〜＃ｍについては、実施の形態２で説明した保護領域設定レジスタ＃１〜＃ｍ（図４参照）と同様であるので、重複した説明は省略する。
【００８０】
領域判定回路＃１〜＃ｍは、保護領域設定レジスタ＃１〜＃ｍに対応するように設けられている。換言すると、各々のエントリ＃１〜＃ｍに対応するように、保護領域設定レジスタ＃１〜＃ｍと領域判定回路＃１〜＃ｍとが設けられている。領域判定回路＃１〜＃ｍは、メモリアドレスＡＤＤ_Ｍ_ｎと、保護領域設定レジスタ＃１〜＃ｍに格納されている保護領域情報とに基づいて、メモリアドレスＡＤＤ_Ｍ_ｎが保護領域設定レジスタ＃１〜＃ｍに格納されているメモリ領域に含まれているか否かを判定する。
【００８１】
例えば、メモリアドレスＡＤＤ_Ｍ_１が、保護領域設定レジスタ＃１に格納されているメモリ領域＃１に含まれている場合、つまり、メモリアドレスＡＤＤ_Ｍ_１が上限アドレスレジスタ（ＭＰＵＡ１）と下限アドレスレジスタ（ＭＰＬＡ１）の範囲内にある場合、領域判定回路＃１は、メモリアドレスＡＤＤ_Ｍ_１がエントリ＃１の保護領域に含まれていると判定する。
【００８２】
判定信号生成回路＃０は、領域判定回路＃１〜＃ｍから出力された判定結果に基づいて判定信号ＨＩＴ_ｎを生成し、生成すた判定信号ＨＩＴ_ｎ、およびレジスタ書き換え情報ＳＥＴ_ＲＥＧ_ｎをアービタ６１'に出力する。つまり、判定信号生成回路＃０は各々の領域判定回路＃１〜＃ｍのいずれかにおいて、メモリアドレスＡＤＤ_Ｍ_ｎが保護領域設定レジスタ＃１〜＃ｍに格納されているメモリ領域に含まれていると判定された場合、メモリアドレスＡＤＤ_Ｍ_ｎがヒットしたことを示す判定信号ＨＩＴ_ｎをアービタ６１'に出力する。このとき、判定信号生成回路＃０はヒットしたメモリアドレスＡＤＤ_Ｍ_ｎに対応する保護領域情報（つまり、保護領域設定レジスタ＃１〜＃ｍに格納されている情報）をレジスタ書き換え情報ＳＥＴ_ＲＥＧ_ｎとしてアービタ６１'に出力する。
【００８３】
例えば、アービタ６１'は、メモリアドレスＡＤＤ_Ｍ_１を選択した場合、ローカルＭＰＵ＃１（７１）に判定信号ＨＩＴ_１を出力する。また、アービタ６１'は、レジスタ書き換え情報ＳＥＴ_ＲＥＧ_１を書換制御回路＃１に出力する。書換制御回路＃１は、レジスタ書き換え情報ＳＥＴ_ＲＥＧ_１が供給されると、アドレスヒット率が最も低いアクセス判定回路＃１_１〜＃１_ｐに対応した保護領域設定レジスタ＃１_１〜＃１_ｐの保護領域情報を、アービタ６１'から供給されたレジスタ書き換え情報ＳＥＴ_ＲＥＧ_１を用いて書き換える。
【００８４】
次に、図８、図９に示すフローチャートを用いて、本実施の形態にかかる情報処理装置の動作について説明する。以下では、一例としてコア＃１（１０）が備えるＣＰＵ＃１が共有メモリ３２にアクセスする場合について説明する。
【００８５】
ＣＰＵ＃１が共有メモリ３２にアクセスする場合、ＣＰＵ＃１はローカルＭＰＵ＃１（７１）にメモリアクセス情報ＡＣＣ_Ｍ_１を出力する（ステップＳ２１）。つまり、ＣＰＵ＃１から出力されたメモリアクセス情報ＡＣＣ_Ｍ_１は、アドレスレジスタ＃１に一時的に保持されると共に、ローカルＭＰＵ＃１（７１）に供給される。ローカルＭＰＵ＃１（７１）は、メモリアクセス情報ＡＣＣ_Ｍ_１に基づいてアクセス判定を行う（ステップＳ２２）。
【００８６】
アクセス判定回路＃１_１〜＃１_ｐのいずれかにおいて、メモリアクセス情報ＡＣＣ_Ｍ_１に含まれるメモリアドレスが保護領域設定レジスタ＃１_１〜＃１_ｐに格納されているメモリ領域に含まれていると判定された場合（つまり、メモリアドレスＡＤＤ_Ｍ_１がヒットした場合）、ローカルＭＰＵ＃１（７１）においてアクセス判定可能と判定される（ステップＳ２３：Ｙｅｓ）。そして、メモリアドレスＡＤＤ_Ｍ_１がヒットし、且つ、コア＃１（１０）にメモリ領域３２へのアクセス権限があると判定された場合（ステップＳ２４：Ｙｅｓ）、判定信号生成回路＃１はアクセスを許可する判定信号ＯＵＴ_Ｍ_１をＭＰＵ制御部＃１（１３'）に出力する。この場合、ＭＰＵ制御部＃１（１３'）はＣＰＵ＃１に通知信号ＡＣＫ_１としてアクセス許可通知信号を出力する。その後、ＣＰＵ＃１は共有メモリ３２にアクセスする（ステップＳ２５）。
【００８７】
一方、メモリアドレスＡＤＤ_Ｍ_１がヒットしたが、コア＃１（１０）にメモリ領域３２へのアクセス権限がない場合はアクセス不可と判定される（ステップＳ２４：Ｎｏ）。そして、各々のエントリ＃１_１〜＃１_ｐにメモリ領域のオーバーラップを許している場合（ステップＳ２６：Ｙｅｓ）、図９のフローチャートへと進む。つまり、各々のエントリ＃１_１〜＃１_ｐにメモリ領域のオーバーラップを許している場合は、メモリ保護回路ＭＰＵ＃０（６０'）の他のエントリにおいてアクセス判定をする必要がある。一方、各々のエントリ＃１_１〜＃１_ｐにメモリ領域のオーバーラップを許していない場合（ステップＳ２６：Ｎｏ）、アクセスを不可とする判定信号ＯＵＴ_Ｍ_１をＭＰＵ制御部＃１（１３'）に出力する。そして、ＭＰＵ制御部＃１（１３'）はＣＰＵ＃１に通知信号ＡＣＫ_１として例外通知信号を出力する。この場合は、ＣＰＵ＃１による共有メモリ３２へのアクセスが禁止される（ステップＳ２７）。
【００８８】
また、ローカルＭＰＵ＃１（７１）においてアクセス判定ができない場合（ステップＳ２３：Ｎｏ）、つまり、メモリアドレスＡＤＤ_Ｍ_１がヒットしなかった場合、判定信号生成回路＃１は、アービタ６１'にメモリアドレスＡＤＤ_Ｍ_１を出力する（図９のステップＳ３１）。メモリアドレスＡＤＤ_Ｍ_１がヒットしなかった場合とは、全てのアクセス判定回路＃１_１〜＃１_ｐにおいて、メモリアクセス情報ＡＣＣ_Ｍ_１に含まれているメモリアドレスＡＤＤ_Ｍ_１が保護領域設定レジスタ＃１_１〜＃１_ｐに格納されているメモリ領域に含まれていないと判定された場合である。
【００８９】
図９のフローチャートに示すように、判定信号生成回路＃１がアービタ６１'にメモリアドレスＡＤＤ_Ｍ_１を出力した場合（ステップＳ３１）、アービタ６１'は、メモリアドレスＡＤＤ_Ｍ_１とメモリアドレスＡＤＤ_Ｍ_２を調停後、領域判定回路＃１〜＃ｍにメモリアドレスＡＤＤ_Ｍ_１を出力する。その後、領域判定回路＃１〜＃ｍはメモリアドレスＡＤＤ_Ｍ_１がエントリ＃１〜＃ｍに含まれているか判定する（ステップＳ３３）。換言すると、領域判定回路＃１〜＃ｍは、メモリアドレスＡＤＤ_Ｍ_１が保護領域設定レジスタ＃１〜＃ｍに格納されているメモリ領域に含まれているか否かを判定する（つまり、メモリアドレスＡＤＤ_Ｍ_１がヒットするか否かを判定する）。
【００９０】
そして、全ての領域判定回路＃１〜＃ｍにおいてメモリアドレスＡＤＤ_Ｍ_１がエントリ＃１〜＃ｍに含まれていないと判定された場合（ステップＳ３４：Ｎｏ）、判定信号生成回路＃０はミスヒットを通知する判定信号ＨＩＴ_１をアービタ６１'を介してＭＰＵ制御部＃１（１３'）に出力する。ＭＰＵ制御部＃１（１３'）は、アービタ６１'からミスヒットを通知する判定信号ＨＩＴ_１が供給されると、ＣＰＵ＃１に通知信号ＡＣＫ_１として例外通知信号を出力する（ステップＳ３６）。この場合は、ＣＰＵ＃１による共有メモリ３２へのアクセスが禁止される。
【００９１】
一方、領域判定回路＃１〜＃ｍにおいてメモリアドレスＡＤＤ_Ｍ_１がエントリ＃１〜＃ｍに含まれていると判定された場合（ステップＳ３４：Ｙｅｓ）、判定信号生成回路＃０はメモリアドレスＡＤＤ_Ｍ_１がヒットしたことを示す判定信号ＨＩＴ_１を、アービタ６１'を介してローカルＭＰＵ＃１（７１）に出力する。このとき、判定信号生成回路＃０は、レジスタ書き換え情報ＳＥＴ_ＲＥＧ_ｎとして、ヒットしたメモリアドレスＡＤＤ_Ｍ_１に対応する保護領域情報を、アービタ６１'を介して書換制御回路＃１に出力する。書換制御回路＃１は、アクセス判定回路＃１_１〜＃１_ｐのうちアドレスヒット率が最も低いアクセス判定回路に対応した保護領域設定レジスタ＃１_１〜＃１_ｐの保護領域情報を、レジスタ書き換え情報ＳＥＴ_ＲＥＧ_１を用いて書き換える（ステップＳ３５）。
【００９２】
保護領域設定レジスタの書き換え後、ローカルＭＰＵ＃１（７１）は、再度、メモリアクセス情報ＡＣＣ_Ｍ_１に基づいてアクセス判定を行う（ステップＳ３７）。このとき、メモリアクセス情報ＡＣＣ_Ｍ_１は、アドレスレジスタ＃１から供給される。そしてアクセス判定後、判定信号生成回路＃１はＭＰＵ制御部＃１（１３'）に判定信号ＯＵＴ_Ｍ_１を出力する。そして、判定信号ＯＵＴ_Ｍ_１がアクセス許可を示す場合（ステップＳ３８：Ｙｅｓ）、ＭＰＵ制御部＃１（１３'）はＣＰＵ＃１に通知信号ＡＣＫ_１としてアクセス許可通知信号を出力する。その後、ＣＰＵ＃１は共有メモリ３２にアクセスする（ステップＳ３９）。一方、判定信号ＯＵＴ_Ｍ_１がアクセス不可を示す場合（ステップＳ３８：Ｎｏ）、ＭＰＵ制御部＃１（１３'）はＣＰＵ＃１に通知信号ＡＣＫ_１として例外通知信号を出力する（ステップＳ４０）。この場合は、ＣＰＵ＃１による共有メモリ３２へのアクセスが禁止される。
【００９３】
以上で説明したように、本実施の形態にかかる情報処理装置ではコア＃１（１０）にローカルＭＰＵ＃１（７１）を設け、コア＃２（２０）にローカルＭＰＵ＃２（７２）を設けている。そして、共有のメモリ保護回路ＭＰＵ＃０（６０'）における判定の前に、各々のローカルＭＰＵ７１、７２を用いて、各々のコア１０、２０が共有メモリ３２にアクセス可能であるか否かを判定している。このとき、ローカルＭＰＵ７１、７２には、アドレスヒット率の高いエントリに対応した保護領域情報（共有メモリ３２の保護領域に関する情報）が優先的に格納されている。
【００９４】
よって、共有のメモリ保護回路ＭＰＵ＃０（６０'）における判定の前に、アドレスヒット率が高いローカルＭＰＵ７１、７２において、各々のコア１０、２０による共有メモリ３２へのアクセス判定を実施することができるので、情報処理装置の処理速度を高速化することができる。
【００９５】
このとき、ローカルＭＰＵ＃１（７１）の保護領域設定レジスタ＃１_１〜＃１_ｐおよびローカルＭＰＵ＃２（７２）の保護領域設定レジスタ＃２_１〜＃２_ｐのそれぞれに格納されているメモリ領域の数は、メモリ保護回路ＭＰＵ＃０（６０'）の保護領域設定レジスタ＃１〜＃ｍに格納されているメモリ領域の数よりも少ない。換言すると、メモリ保護回路ＭＰＵ＃０（６０'）のエントリ数ｍは、各々のローカルＭＰＵ７１、７２のエントリ数ｐよりも少ない（ｐ＜ｍ）。
【００９６】
つまり、各々のコア１０、２０による共有メモリ３２へのアクセスはタイミングクリティカルパスになる傾向があるため、各々のローカルＭＰＵ７１、７２のエントリ数は、メモリ保護回路ＭＰＵ＃０（６０'）のエントリ数よりも少なくすることができる。よって、アドレスヒット率の高いローカルＭＰＵ７１、７２において先にアクセス判定を実施することで、情報処理装置の消費電力を低減させつつ、処理速度を高速化することができる。
【００９７】
メモリ保護回路は、例えば、プログラムの暴走によってリソースが破壊されることを抑制し、また、ユーザ・プログラムが許可されていない実行やデータ操作を行うことを抑制するために設けている。通常アクセスするメモリ領域については、エントリ数の少ないメモリ保護回路を用いることができるので、通常のプログラムを実行している場合は、ローカルＭＰＵ７１、７２を用いたアクセス判定においてミスが起きる回数は少ない。
【００９８】
一方、メモリ保護違反を起こすようなアクセスでは、ローカルＭＰＵ７１、７２を用いたアクセス判定においてミスが発生する。この場合は、共有のメモリ保護回路ＭＰＵ＃０（６０'）における判定が必要となるが、メモリ保護回路ＭＰＵ＃０（６０'）における判定は、例えば１〜２クロックと時間が短いため、この影響はほとんど無視することができる。
【００９９】
なお、通常のアクセスで、ローカルＭＰＵ７１、７２のアドレスヒット率が９９．９％であれば、ローカルＭＰＵ７１、７２においてミスが起きた際のオーバーヘッドが１クロックである場合、ローカルＭＰＵ７１、７２によるクロック数のオーバーヘッドは、(０．９９９×１＋０．００１×２)＝１．００１であり、０．１％の性能劣化となる。
【０１００】
＜実施の形態４＞
次に、実施の形態４について説明する。図１０は、本実施の形態にかかる情報処理装置が備えるＭＰＵ制御部＃１（１３''）、ＭＰＵ制御部＃２（２３''）、およびメモリ保護回路ＭＰＵ＃０（６０''）を示すブロック図である。本実施の形態では、ローカルＭＰＵ８１、８２においてメモリアドレスがヒットしなかった際、メモリ保護回路ＭＰＵ＃０（６０''）においてアクセス判定を実施している点が、実施の形態３で説明した情報処理装置と異なる。これ以外は実施の形態３で説明した情報処理装置と同様である。
【０１０１】
図１０に示すように、ＭＰＵ制御部＃１（１３''）はローカルＭＰＵ＃１（８１）を備える。ローカルＭＰＵ＃１（８１）は、保護領域設定レジスタ＃１_１〜＃１_ｐ、アクセス判定回路＃１_１〜＃１_ｐ、判定信号生成回路＃１、および書換制御回路＃１を備える。ここで、ｐは１≦ｐ＜ｍの整数である。
【０１０２】
保護領域設定レジスタ＃１_１〜＃１_ｐは、共有メモリ３２の保護領域に関する保護領域情報を格納している。つまり、保護領域設定レジスタ＃１_１〜＃１_ｐは、共有メモリ３２のメモリ領域に対応するアドレス情報と、コア＃１（１０）が共有メモリ３２のメモリ領域にアクセスする際の権限に関する権限情報とを格納している。なお、保護領域設定レジスタ＃１_１〜＃１_ｐについては、実施の形態２で説明した保護領域設定レジスタ＃１〜＃ｍ（図４参照）と同様であるので、重複した説明は省略する。
【０１０３】
アクセス判定回路＃１_１〜＃１_ｐは、保護領域設定レジスタ＃１_１〜＃１_ｐに対応するように設けられている。換言すると、各々のエントリ＃１_１〜＃１_ｐに対応するように、保護領域設定レジスタ＃１_１〜＃１_ｐとアクセス判定回路＃１_１〜＃１_ｐとが設けられている。アクセス判定回路＃１_１〜＃１_ｐは、コア＃１（１０）から出力されたメモリアクセス情報ＡＣＣ_Ｍ_１と、保護領域設定レジスタ＃１_１〜＃１_ｐに格納されている保護領域情報とに基づいて、コア＃１（１０）による共有メモリ３２へのアクセスの可否を判定する。
【０１０４】
つまり、アクセス判定回路＃１_１〜＃１_ｐは、メモリアクセス情報ＡＣＣ_Ｍ_１に含まれているメモリアドレスが保護領域設定レジスタ＃１_１〜＃１_ｐに格納されているメモリ領域に含まれており、且つ、コア＃１（１０）にメモリ領域３２へのアクセス権限がある場合に、コア＃１（１０）が共有メモリ３２にアクセス可能であると判定する。
【０１０５】
判定信号生成回路＃１は、判定信号ＯＵＴ_Ｍ_１をＭＰＵ制御部＃１（１３''）に、または、メモリアドレスＡＤＤ_Ｍ_１をアービタ６１''に出力する。
【０１０６】
つまり、判定信号生成回路＃１は、メモリアドレスＡＤＤ_Ｍ_１がヒットし、且つ、コア＃１（１０）にメモリ領域３２へのアクセス権限があると判定された場合に、アクセスを許可する判定信号ＯＵＴ_Ｍ_１を生成し、生成した判定信号ＯＵＴ_Ｍ_１をＭＰＵ制御部＃１（１３''）に出力する。ここで、メモリアドレスＡＤＤ_Ｍ_１がヒットした場合とは、アクセス判定回路＃１_１〜＃１_ｐのいずれかにおいて、メモリアクセス情報ＡＣＣ_Ｍ_１に含まれているメモリアドレスＡＤＤ_Ｍ_１が保護領域設定レジスタ＃１_１〜＃１_ｐに格納されているメモリ領域に含まれていると判定された場合である。
【０１０７】
また、判定信号生成回路＃１は、メモリアドレスＡＤＤ_Ｍ_１がヒットし、且つ、コア＃１（１０）にメモリ領域３２へのアクセス権限がないと判定された場合に、アクセスを不可とする判定信号ＯＵＴ_Ｍ_１を生成し、生成した判定信号ＯＵＴ_Ｍ_１をＭＰＵ制御部＃１（１３''）に出力する。なお、各々のエントリ＃１_１〜＃１_ｐにメモリ領域のオーバーラップを許している場合は、メモリ保護回路ＭＰＵ＃０（６０''）の他のエントリにおいてアクセス判定をする必要があるため、判定信号ＯＵＴ_Ｍ_１をＭＰＵ制御部＃１（１３''）に出力することなくアービタ６１''にメモリアクセス情報ＡＣＣ_Ｍ_１を出力する。
【０１０８】
一方、判定信号生成回路＃１は、メモリアドレスＡＤＤ_Ｍ_１がヒットしなかった場合、アービタ６１''にメモリアクセス情報ＡＣＣ_Ｍ_１を出力する。ここで、メモリアドレスＡＤＤ_Ｍ_１がヒットしなかった場合とは、全てのアクセス判定回路＃１_１〜＃１_ｐにおいて、メモリアクセス情報ＡＣＣ_Ｍ_１に含まれているメモリアドレスＡＤＤ_Ｍ_１が保護領域設定レジスタ＃１_１〜＃１_ｐに格納されているメモリ領域に含まれていないと判定された場合である。
【０１０９】
書換制御回路＃１は、アクセス判定回路＃１_１〜＃１_ｐから出力された判定結果に基づいて、各々のアクセス判定回路＃１_１〜＃１_ｐにおけるアドレスヒット率を求める。ここで、アドレスヒット率とは、メモリアクセス情報ＡＣＣ_Ｍ_１に含まれているメモリアドレスＡＤＤ_Ｍ_１が保護領域設定レジスタ＃１_１〜＃１_ｐに格納されているメモリ領域に含まれていると判定された確率である。そして、書換制御回路＃１は、アドレスヒット率が最も低いアクセス判定回路＃１_１〜＃１_ｐに対応した保護領域設定レジスタ＃１_１〜＃１_ｐの保護領域情報を、アービタ６１''から供給されたレジスタ書き換え情報ＳＥＴ_ＲＥＧ_１を用いて書き換える。
【０１１０】
なお、ＭＰＵ制御部＃２（２３''）が備えるローカルＭＰＵ＃２（８２）の構成についても、上記で説明したＭＰＵ制御部＃１（１３''）が備えるローカルＭＰＵ＃１（８１）の構成と同様であるので、重複した説明は省略する。
【０１１１】
メモリ保護回路ＭＰＵ＃０（６０''）は、ローカルＭＰＵ８１、８２においてメモリアドレスＡＤＤ_Ｍ_ｎがヒットしなかった場合に、メモリアクセス情報ＡＣＣ_Ｍ_ｎに基づいてアクセス判定を実施する。
【０１１２】
メモリ保護回路ＭＰＵ＃０（６０''）が備えるアービタ６１''は、ローカルＭＰＵ＃１（８１）の判定信号生成回路＃１から出力されたメモリアクセス情報ＡＣＣ_Ｍ_１と、ローカルＭＰＵ＃２（８２）の判定信号生成回路＃２から出力されたメモリアクセス情報ＡＣＣ_Ｍ_２とが競合した場合、メモリアクセス情報ＡＣＣ_Ｍ_１とメモリアクセス情報ＡＣＣ_Ｍ_２を調停する。つまり、アービタ６１''はメモリアクセス情報ＡＣＣ_Ｍ_１またはメモリアクセス情報ＡＣＣ_Ｍ_２をアクセス判定回路＃１〜＃ｍに出力する。
【０１１３】
保護領域設定レジスタ＃１〜＃ｍは、共有メモリ３２の保護領域に関する保護領域情報を格納している。つまり、保護領域設定レジスタ＃１〜＃ｍは、共有メモリ３２のメモリ領域に対応するアドレス情報と、各々のコアが共有メモリ３２のメモリ領域にアクセスする際の権限に関する権限情報とを格納している。なお、保護領域設定レジスタ＃１〜＃ｍについては、実施の形態２で説明した保護領域設定レジスタ＃１〜＃ｍ（図４参照）と同様であるので、重複した説明は省略する。
【０１１４】
アクセス判定回路＃１〜＃ｍは、保護領域設定レジスタ＃１〜＃ｍに対応するように設けられている。換言すると、各々のエントリ＃１〜＃ｍに対応するように、保護領域設定レジスタ＃１〜＃ｍとアクセス判定回路＃１〜＃ｍとが設けられている。アクセス判定回路＃１〜＃ｍは、メモリアクセス情報ＡＣＣ_Ｍ_ｎと、保護領域設定レジスタ＃１〜＃ｍに格納されている保護領域情報とに基づいて、コア＃１（１０）およびコア＃２（２０）による共有メモリ３２へのアクセスの可否を判定する。
【０１１５】
つまり、アクセス判定回路＃１〜＃ｍは、メモリアクセス情報ＡＣＣ_Ｍ_ｎに含まれているメモリアドレスが保護領域設定レジスタ＃１〜＃ｍに格納されているメモリ領域に含まれており、且つ、コア＃１（１０）、コア＃２（２０）にメモリ領域３２へのアクセス権限がある場合に、コア＃１（１０）、コア＃２（２０）が共有メモリ３２にアクセス可能であると判定する。
【０１１６】
例えば、メモリアクセス情報ＡＣＣ_Ｍ_１に含まれるメモリアドレスが、保護領域設定レジスタ＃１に格納されているメモリ領域＃１に含まれている場合、つまり、メモリアドレスが上限アドレスレジスタ（ＭＰＵＡ１）と下限アドレスレジスタ（ＭＰＬＡ１）の範囲内にある場合、アクセス判定回路＃１は、メモリアドレスＡＤＤ_Ｍ_１がエントリ＃１に含まれていると判定する。更に、コア＃１（１０）による共有メモリ３２へのアクセスの内容（つまり、書き込み、読み出し、実行など）が許可されている場合、アクセス判定回路＃１はコア＃１（１０）による共有メモリ３２へのアクセスを許可する。ここで、アクセスの内容が許可されている場合とは、コア＃１（１０）による共有メモリ３２へのアクセスの内容が属性レジスタ（ＭＰＡＴ１）にて許可されている場合である。
【０１１７】
判定信号生成回路＃０は、アクセス判定回路＃１〜＃ｍから出力された判定結果に基づいて判定信号ＯＵＴ_ｎを生成し、生成した判定信号ＯＵＴ_ｎ、およびレジスタ書き換え情報ＳＥＴ_ＲＥＧ_ｎをアービタ６１''に出力する。つまり、判定信号生成回路＃０は各々のアクセス判定回路＃１〜＃ｍのいずれかにおいて共有メモリ３２へのアクセスを許可すると判定された場合、共有メモリ３２へのアクセスを許可する判定信号ＯＵＴ_ｎを生成し、生成した判定信号ＯＵＴ_ｎをアービタ６１''に出力する。一方、判定信号生成回路＃０は各々のアクセス判定回路＃１〜＃ｍの全てにおいて共有メモリ３２へのアクセスを許可すると判定されなかった場合、共有メモリ３２へのアクセスを禁止する判定信号ＯＵＴ_ｎを生成し、生成した判定信号ＯＵＴ_ｎをアービタ６１''に出力する。
【０１１８】
このとき、判定信号生成回路＃０は、ヒットしたメモリアドレスＡＤＤ_Ｍ_ｎに対応する保護領域情報（つまり、保護領域設定レジスタ＃１〜＃ｍに格納されている情報）をレジスタ書き換え情報ＳＥＴ_ＲＥＧ_ｎとしてアービタ６１''に出力する。なお、エントリ＃１〜＃ｍのメモリ領域が互いに重なるように設定されている場合は、複数のアクセス判定回路＃１〜＃ｍにおいてアクセスを許可すると判定される場合もある。
【０１１９】
例えば、アービタ６１''は、メモリアドレスＡＤＤ_Ｍ_１を選択した場合、ローカルＭＰＵ＃１（８１）に判定信号ＯＵＴ_１を出力する。また、アービタ６１''は、レジスタ書き換え情報ＳＥＴ_ＲＥＧ_１を書換制御回路＃１に出力する。書換制御回路＃１は、レジスタ書き換え情報ＳＥＴ_ＲＥＧ_１が供給されると、アドレスヒット率が最も低いアクセス判定回路＃１_１〜＃１_ｐに対応した保護領域設定レジスタ＃１_１〜＃１_ｐの保護領域情報を、アービタ６１''から供給されたレジスタ書き換え情報ＳＥＴ_ＲＥＧ_１を用いて書き換える。
【０１２０】
次に、図１１、図１２に示すフローチャートを用いて、本実施の形態にかかる情報処理装置の動作について説明する。以下では、一例としてコア＃１（１０）が備えるＣＰＵ＃１が共有メモリ３２にアクセスする場合について説明する。
【０１２１】
ＣＰＵ＃１が共有メモリ３２にアクセスする場合、ＣＰＵ＃１はローカルＭＰＵ＃１（８１）にメモリアクセス情報ＡＣＣ_Ｍ_１を出力する（ステップＳ５１）。ローカルＭＰＵ＃１（８１）は、メモリアクセス情報ＡＣＣ_Ｍ_１に基づいてアクセス判定を行う（ステップＳ５２）。
【０１２２】
アクセス判定回路＃１_１〜＃１_ｐのいずれかにおいて、メモリアクセス情報ＡＣＣ_Ｍ_１に含まれるメモリアドレスが保護領域設定レジスタ＃１_１〜＃１_ｐに格納されているメモリ領域に含まれると判定された場合（つまり、メモリアドレスＡＤＤ_Ｍ_１がヒットした場合）、ローカルＭＰＵ＃１（８１）においてアクセス判定可能であると判定される（ステップＳ５３：Ｙｅｓ）。そして、メモリアドレスＡＤＤ_Ｍ_１がヒットし、且つ、コア＃１（１０）にメモリ領域３２へのアクセス権限があると判定された場合（ステップＳ５４：Ｙｅｓ）、判定信号生成回路＃１はアクセスを許可する判定信号ＯＵＴ_Ｍ_１をＭＰＵ制御部＃１（１３''）に出力する。この場合、ＭＰＵ制御部＃１（１３''）はＣＰＵ＃１に通知信号ＡＣＫ_１としてアクセス許可通知信号を出力する。その後、ＣＰＵ＃１は共有メモリ３２にアクセスする（ステップＳ５５）。
【０１２３】
一方、メモリアドレスＡＤＤ_Ｍ_１がヒットしたが、コア＃１（１０）にメモリ領域３２へのアクセス権限がない場合はアクセス不可と判定される（ステップＳ５４：Ｎｏ）。そして、各々のエントリ＃１_１〜＃１_ｐにメモリ領域のオーバーラップを許している場合（ステップＳ５６：Ｙｅｓ）、図１２のフローチャートへと進む。つまり、各々のエントリ＃１_１〜＃１_ｐにメモリ領域のオーバーラップを許している場合は、メモリ保護回路ＭＰＵ＃０（６０''）の他のエントリにおいてアクセス判定をする必要がある。一方、各々のエントリ＃１_１〜＃１_ｐにメモリ領域のオーバーラップを許していない場合（ステップＳ５６：Ｎｏ）、アクセスを不可とする判定信号ＯＵＴ_Ｍ_１をＭＰＵ制御部＃１（１３''）に出力する。そして、ＭＰＵ制御部＃１（１３''）はＣＰＵ＃１に通知信号ＡＣＫ_１として例外通知信号を出力する。この場合は、ＣＰＵ＃１による共有メモリ３２へのアクセスが禁止される（ステップＳ５７）。
【０１２４】
また、ローカルＭＰＵ＃１（８１）においてアクセス判定ができない場合（ステップＳ５３：Ｎｏ）、つまり、メモリアドレスＡＤＤ_Ｍ_１がヒットしなかった場合、判定信号生成回路＃１は、アービタ６１''にメモリアクセス情報ＡＣＣ_Ｍ_１を出力する（図１２のステップＳ６１）。メモリアドレスＡＤＤ_Ｍ_１がヒットしなかった場合とは、全てのアクセス判定回路＃１_１〜＃１_ｐにおいて、メモリアクセス情報ＡＣＣ_Ｍ_１に含まれているメモリアドレスＡＤＤ_Ｍ_１が保護領域設定レジスタ＃１_１〜＃１_ｐに格納されているメモリ領域に含まれていないと判定された場合である。
【０１２５】
図１２のフローチャートに示すように、判定信号生成回路＃１がアービタ６１''にメモリアクセス情報ＡＣＣ_Ｍ_１を出力した場合（ステップＳ６１）、アービタ６１''は、メモリアクセス情報ＡＣＣ_Ｍ_１とメモリアクセス情報ＡＣＣ_Ｍ_２を調停後、アクセス判定回路＃１〜＃ｍにメモリアクセス情報ＡＣＣ_Ｍ_１を出力する（ステップＳ６２）。
【０１２６】
その後、アクセス判定回路＃１〜＃ｍは保護領域設定レジスタ＃１〜＃ｍとメモリアクセス情報ＡＣＣ_Ｍ_１とに基づきアクセス判定を行う（ステップＳ６３）。つまり、メモリアクセス情報ＡＣＣ_Ｍ_１に含まれるメモリアドレスＡＤＤ_Ｍ_１が、各エントリ＃１〜＃ｍ（つまり、保護領域設定レジスタ＃１〜＃ｍに格納されているメモリ領域＃１〜＃ｍ）に含まれているか判定する。そして、メモリアドレスＡＤＤ_Ｍ_１が、エントリ＃１〜＃ｍに含まれていない場合（ステップＳ６４：Ｎｏ）、アクセス判定回路＃１〜＃ｍはアクセス不可を示す判定結果を出力する。このとき、判定信号生成回路＃０はアクセス不可を示す判定信号ＯＵＴ_１を生成してアービタ６１''に出力する（ステップＳ６６）。
【０１２７】
一方、メモリアドレスＡＤＤ_Ｍ_１が、エントリ＃１〜＃ｍに含まれており（ステップＳ６４：Ｙｅｓ）、更に、ＣＰＵ＃１による共有メモリ３２へのアクセスの内容（読み出し、書き込み、実行等）が許可されている場合（ステップＳ６５：Ｙｅｓ）、アクセス判定回路＃１〜＃ｍはアクセス許可を示す判定結果を出力する。このとき、判定信号生成回路＃０はアクセス許可を示す判定信号ＯＵＴ_１を生成してアービタ６１''に出力する（ステップＳ６７）。ここで、ＣＰＵ＃１による共有メモリ３２へのアクセスの内容が許可されている場合とは、例えばＣＰＵ＃１による共有メモリ３２へのアクセスの内容が保護領域設定レジスタ＃１〜＃ｍの属性レジスタにて許可されている場合である。また、判定信号生成回路＃０は、レジスタ書き換え情報ＳＥＴ_ＲＥＧ_１として、ヒットしたメモリアドレスＡＤＤ_Ｍ_１に対応する保護領域情報を、アービタ６１''を介して書換制御回路＃１に出力する。
【０１２８】
また、メモリアドレスＡＤＤ_Ｍ_１が、エントリ＃１〜＃ｍに含まれており（ステップＳ６４：Ｙｅｓ）、更に、ＣＰＵ＃１による共有メモリ３２へのアクセスの内容が許可されていない場合（ステップＳ６５：Ｎｏ）、アクセス判定回路＃１〜＃ｍはアクセス不可を示す判定結果を出力する。このとき、判定信号生成回路＃０はアクセス不可を示す判定信号ＯＵＴ_１を生成してアービタ６１''に出力する（ステップＳ６８）。また、判定信号生成回路＃０は、レジスタ書き換え情報ＳＥＴ_ＲＥＧ_１として、ヒットしたメモリアドレスＡＤＤ_Ｍ_１に対応する保護領域情報を、アービタ６１''を介して書換制御回路＃１に出力する。
【０１２９】
書換制御回路＃１にレジスタ書き換え情報ＳＥＴ_ＲＥＧ_１が供給されると（ステップＳ６７、Ｓ６８）、書換制御回路＃１は、アクセス判定回路＃１_１〜＃１_ｐのうちアドレスヒット率が最も低いアクセス判定回路に対応した保護領域設定レジスタ＃１_１〜＃１_ｐの保護領域情報を、レジスタ書き換え情報ＳＥＴ_ＲＥＧ_１を用いて書き換える（ステップＳ６９）。
【０１３０】
また、アービタ６１''はＭＰＵ制御部＃１（１３''）に判定信号ＯＵＴ_１を出力する。そして、判定信号ＯＵＴ_１がアクセス許可を示す場合（ステップＳ７０：Ｙｅｓ）、ＭＰＵ制御部＃１（１３''）はＣＰＵ＃１に通知信号ＡＣＫ_１としてアクセス許可通知信号を出力する。その後、ＣＰＵ＃１は共有メモリ３２にアクセスする（ステップＳ７１）。一方、判定信号ＯＵＴ_１がアクセス不可を示す場合（ステップＳ７０：Ｎｏ）、ＭＰＵ制御部＃１（１３''）はＣＰＵ＃１に通知信号ＡＣＫ_１として例外通知信号を出力する（ステップＳ７２）。この場合は、ＣＰＵ＃１による共有メモリ３２へのアクセスが禁止される。
【０１３１】
以上で説明したように、本実施の形態にかかる情報処理装置においても実施の形態３で説明した情報処理装置と同様に、情報処理装置の消費電力を低減させつつ、処理速度を高速化することができる。
【０１３２】
なお、例えば、上記では２つのコアを備える情報処理装置について説明したが、各実施の形態で説明した情報処理装置は３つ以上のコアを備えていてもよい。
【０１３３】
また、実施の形態１では、情報処理装置が共有リソース＃０（３０）として共有レジスタ＃０（５０）およびメモリ保護回路ＭＰＵ＃０（６０）を備える場合を例として説明した。しかし実施の形態１にかかる情報処理装置は、共有レジスタ＃０（５０）のみを備えている構成であってもよい（つまり、メモリ保護回路ＭＰＵ＃０（６０）を備えていなくてもよい）。一方、実施の形態２乃至４にかかる情報処理装置では、共有リソース＃０（３０）として少なくともメモリ保護回路ＭＰＵ＃０（６０）を備えていればよく、共有レジスタ＃０（５０）を備えることは必須ではない。
【０１３４】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１３５】
１  情報処理装置
１０  コア＃１
１１  演算部＃１
１２  共有レジスタ制御部＃１
１３  ＭＰＵ制御部＃１
１４  レジスタ＃１
２０  コア＃２
２１  演算部＃２
２２  共有レジスタ制御部＃２
２３  ＭＰＵ制御部＃２
２４  レジスタ＃２
３０  共有リソース＃０
３１  システムバス
３２  共有メモリ
３３  周辺バス
３４  排他制御部
３５  周辺モジュール
５０  共有レジスタ＃０
５１  マシン設定レジスタ＃０
５２  仮想化設定レジスタ＃０
６０  メモリ保護回路
６１  アービタ
７１、７２  ローカルメモリ保護回路
【図１】
2017004554.tif 000003
【図２】
2017004554.tif 000004
【図３】
2017004554.tif 000005
【図４】
2017004554.tif 000006
【図５】
2017004554.tif 000007
【図６】
2017004554.tif 000008
【図７】
2017004554.tif 000009
【図８】
2017004554.tif 000010
【図９】
2017004554.tif 000011
【図１０】
2017004554.tif 000012
【図１１】
2017004554.tif 000013
【図１２】
2017004554.tif 000014