(57)【要約】【課題】多数のプロセッサやそれによってアクセス可能なモジュールが搭載された半導体集積回路において、上記プロセッサやモジュールの管理を容易化を図る。【解決手段】複数のプロセッサ（ＰＥ１〜ＰＥ４）と、上記プロセッサによってアクセス可能なモジュール（ＩＰ１〜ＩＰ３）とを含んで半導体集積回路（１０）が構成されるとき、上記プロセッサに与えられている、他のプロセッサ又は上記モジュールの利用許可を、他のプロセッサに変更可能なプロセッサ管理ユニット（ＰＭＵ）を設けることで、プロセッサやモジュールの管理の容易化を達成する。上記プロセッサ管理ユニットは、バスとバスコントローラとの間に配置することができる。また、上記プロセッサ管理ユニットは、バスと複数のプロセッサとの間、及びバスとモジュールとの間に分散配置することができる。【選択図】図１
2007172430.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、上記プロセッサによってアクセス可能なモジュールと、を含む半導体集積回路であって、
上記プロセッサに与えられている、他のプロセッサ又は上記モジュールの利用許可を、他のプロセッサに変更可能なプロセッサ管理ユニットを含むことを特徴とする半導体集積回路。
【請求項２】
上記複数のプロセッサと上記モジュールとを結合するためのバスと、
上記バスを介して行われるデータ通信を制御可能な上記バスコントローラと、を含み、
上記プロセッサ管理ユニットは、上記バスと上記バスコントローラとの間に配置されて成る請求項１記載の半導体集積回路。
【請求項３】
上記複数のプロセッサと上記モジュールとを結合するためのバスを含み、
上記プロセッサ管理ユニットは、上記バスと上記複数のプロセッサとの間、及び上記バスと上記モジュールとの間に分散配置されて成る請求項１記載の半導体集積回路。
【請求項４】
上記複数のプロセッサにおける個々のプロセッサを識別するためのプロセッサＩＤ情報を伝達可能なプロセッサＩＤ信号線を含む請求項１記載の半導体集積回路。
【請求項５】
上記プロセッサ管理ユニットは、上記複数のプロセッサにおける個々のプロセッサ毎の他のプロセッサ又は上記モジュールの利用許可情報を記憶可能な記憶部と、
上記記憶部に記憶されている情報に基づいて、上記プロセッサに与えられている、他のプロセッサ又は上記モジュールの利用許可を、他のプロセッサに変更するための制御を行う制御論理と、を含んで成る請求項１記載の半導体集積回路。
【請求項６】
上記プロセッサ管理ユニットは、上記複数のプロセッサにおける個々のプロセッサ毎の他のプロセッサ又は上記モジュール内のメモリ領域へのアクセス許可情報を記憶可能な記憶部と、
上記記憶部に記憶されているアクセス許可情報に基づいて、上記プロセッサに与えられている、他のプロセッサ又は上記モジュール内のメモリ領域へのアクセス許可を、他のプロセッサに変更するための制御を行う制御論理と、を含んで成る請求項１記載の半導体集積回路。
【請求項７】
上記記憶部は、上記プロセッサの制御許可と利用状況を示す第１レジスタと、上記プロセッサ内のメモリ領域及び上記モジュール内のメモリ領域に対する読み出しと書き込みの許可状況を示す第２レジスタと、を含む請求項６記載の半導体集積回路。
【請求項８】
上記複数のプロセッサにおける第１プロセッサの管理下に、それぞれ上記第１プロセッサとは異なる第２プロセッサと第３プロセッサとがある場合に、上記第１レジスタが更新されることによって上記第２プロセッサと上記第３プロセッサとの関係の変更が可能とされる請求項７記載の半導体集積回路。
【請求項９】
上記複数のプロセッサにおける第１プロセッサの管理下に、それぞれ上記第１プロセッサとは異なる第２プロセッサと第３プロセッサとがあり、上記第２プロセッサ又は上記第３プロセッサへのライト許可がある場合に、上記第２レジスタが更新されることによって上記第２プロセッサと上記第３プロセッサとの関係の変更が可能とされる請求項７記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路、さらにはそれに含まれるプロセッサやそれによってアクセス可能なＩＰ（設計資産）モジュールの管理の容易化を図るための技術に関する。
【背景技術】
【０００２】
近年、情報処理機器の普及と高性能化、高機能化への要求に伴い、一つの半導体チップに複数のプロセッサやＩＰモジュールが搭載されるようになってきた。これらのチップでは複数のプロセッサやＩＰモジュールに処理を割り当てることで、低周波数でも高い性能を得ることが可能である。半導体製造技術の進歩により半導体チップで実現できる回路規模が拡大しており、複数のプロセッサやＩＰモジュールを有効利用する半導体チップが求登場してきた。これらの半導体チップ、特に複数の異なるプロセッサを搭載する非対称マルチプロセッサチップでは、一つのコアをマスターとして他のコアに処理を分配し制御する方式、または、各々が独立に動作する方式が殆どであり、搭載されたプロセッサやＩＰモジュールを簡単かつ有効に利用する方法が求められている。また、複数のプログラムが複数のプロセッサで同時に実行されることから、他のプロセッサで実行中のプログラムの破壊を防いだり、メモリ領域ののぞき見を防ぐといったセキュリティ的な対策も求められている。
【０００３】
これに対して、プロセッサやＩＰモジュールなどのモジュールを管理し、利用を容易化し、有効活用するためのハードウェアや方式が、特許文献１や特許文献２に開示されている。
【０００４】
かかる先行技術では、専用回路やソフトウェアによりモジュールを管理し、性能を引き出す方法が提示されているが、多数のプロセッサが搭載された場合に重要となる階層的な管理、すなわち、あるプロセッサが自身に利用許可されているプロセッサやＩＰモジュールの利用許可を他のプロセッサに与えるといったことまでは考慮されていない。また、先に述べたようなセキュリティ的な側面も特に考慮されていない。
【０００５】
【特許文献１】特開２００４−１９２０５２号公報
【特許文献２】特開２００１−１６７０５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１や特許文献２に示される従来の方法では、比較的少数のプロセッサやＩＰモジュールを想定しており、階層的な管理については考慮されていない。また、信頼できないプログラム、特に他のプロセッサやメモリのリード／ライトを管理するようなプログラム実行した場合については特に考慮されていない。
【０００７】
この場合、オペレーティング・システムやその他のソフトウェアにより上記の問題を解決しなくてはならず、処理とプログラムの複雑化や、これに関わる処理によるオーバーヘッドの増大などが考えられる。また、信用できないプログラムに対してはソフトウェアでは対応しきれないことも考えられる。
【０００８】
今後、組み込み機器の高性能化や高機能化にともない、より多数のプロセッサやＩＰモジュールが搭載されるようになるため、上記のような問題は顕著になると考えられる。
【０００９】
本発明の目的は、多数のプロセッサやそれによってアクセス可能なモジュールが搭載された半導体集積回路において、上記プロセッサやモジュールの管理を容易化するための技術を提供することにある。
【００１０】
また、本発明の別の目的は、プロセッサやＩＰモジュールの階層的管理と、プロセッサごとのメモリ領域のアクセス制御を容易に実現するための技術を提供することにある。
【００１１】
さらに、本発明の別の目的は、複数のプロセッサやＩＰモジュールを搭載した半導体チップ利用の容易化とオーバーヘッドを削減するための技術を提供することにある。
【００１２】
そして、本発明の別の目的は、利用時におけるセキュリティの向上を図ることにある。
【００１３】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１４】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１５】
すなわち、複数のプロセッサと、上記プロセッサによってアクセス可能なモジュールとを含んで半導体集積回路が構成されるとき、上記プロセッサに与えられている、他のプロセッサ又は上記モジュールの利用許可を、他のプロセッサに変更可能なプロセッサ管理ユニットを設ける。
【００１６】
上記の手段によれば、プロセッサ管理ユニットは、上記プロセッサに与えられている、他のプロセッサ又は上記モジュールの利用許可を、他のプロセッサに変更することができる。このことが、プロセッサやモジュールの管理の容易化を達成する。
【００１７】
このとき、上記半導体集積回路には、上記複数のプロセッサと上記モジュールとを結合するためのバスと、上記バスを介して行われるデータ通信を制御可能な上記バスコントローラとを含めることができる。その場合において、上記プロセッサ管理ユニットは、上記バスと上記バスコントローラとの間に配置することができる。
【００１８】
上記複数のプロセッサと上記モジュールとを結合するためのバスを含む場合において、上記プロセッサ管理ユニットは、上記バスと上記複数のプロセッサとの間、及び上記バスと上記モジュールとの間に分散配置することができる。
【００１９】
上記複数のプロセッサにおける個々のプロセッサを識別するためのプロセッサＩＤ情報を伝達可能なプロセッサＩＤ信号線を設けることができる。
【００２０】
上記プロセッサ管理ユニットは、上記複数のプロセッサにおける個々のプロセッサ毎の他のプロセッサ又は上記モジュールの利用許可情報を記憶可能な記憶部と、上記記憶部に記憶されている情報に基づいて、上記プロセッサに与えられている、他のプロセッサ又は上記モジュールの利用許可を、他のプロセッサに変更するための制御を行う制御論理とを含んで構成することができる。
【００２１】
また、上記プロセッサ管理ユニットは、上記複数のプロセッサにおける個々のプロセッサ毎の他のプロセッサ又は上記モジュール内のメモリ領域へのアクセス許可情報を記憶可能な記憶部と、上記記憶部に記憶されているアクセス許可情報に基づいて、上記プロセッサに与えられている、他のプロセッサ又は上記モジュール内のメモリ領域へのアクセス許可を、他のプロセッサに変更するための制御を行う制御論理とを含んで構成することができる。
【００２２】
このとき、上記記憶部は、上記プロセッサの制御許可と利用状況を示す第１レジスタと、上記プロセッサ内のメモリ領域及び上記モジュール内のメモリ領域に対する読み出しと書き込みの許可状況を示す第２レジスタとを含んで構成することができる。
【００２３】
その場合において、上記複数のプロセッサにおける第１プロセッサの管理下に、それぞれ上記第１プロセッサとは異なる第２プロセッサと第３プロセッサとがある場合に、上記第１レジスタが更新されることによって上記第２プロセッサと上記第３プロセッサとの関係の変更が可能とされる。また、上記複数のプロセッサにおける第１プロセッサの管理下に、それぞれ上記第１プロセッサとは異なる第２プロセッサと第３プロセッサとがあり、上記第２プロセッサ又は上記第３プロセッサへのライト許可がある場合に、上記第２レジスタが更新されることによって上記第２プロセッサと上記第３プロセッサとの関係の変更が可能とされる。このような制御が行われることにより、上記プロセッサやモジュールの階層的な管理が可能とされる。そして、上記プロセッサやモジュールの階層的な管理が可能とされることで、上記プロセッサやモジュールの管理の容易化を達成することができ、また、利用時のオーバーヘッドを削減することができる。さらに上記プロセッサやモジュールの管理により、不正なプログラムによるデータの参照や破壊を防ぐことができる。
【発明の効果】
【００２４】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００２５】
すなわち、多数のプロセッサやそれによってアクセス可能なモジュールが搭載された半導体集積回路において、上記プロセッサやモジュールの管理を容易化するための技術を提供することができる。
【発明を実施するための最良の形態】
【００２６】
図１には、本発明にかかる半導体集積回路の一例とされるマイクロコンピュータが示される。
【００２７】
図１に示されるマイクロコンピュータ１０は、特に制限されないが、４つのプロセッサＰＥ１〜ＰＥ４、３つのＩＰモジュールＩＰ１〜ＩＰ３、バスブリッジＢＵＳＢ、プロセッサ管理ユニットＰＭＵ、バスステートコントローラＢＳＣ、ＩＤゲートＩＤＧ１〜ＩＤ４、プロセッサ間バス１００、外部バス１０１と、プロセッサＩＤ信号線１０２とを含み、単結晶シリコン基板などの一つの半導体基板に形成される。
【００２８】
プロセッサＰＥ１〜ＰＥ４は、予め設定されたプログラムに従って演算処理を行う。このプロセッサＰＥ１〜ＰＥ４は、特に制限されないが、互いに同一構成とされる。プロセッサＰＥ１は、中央処理装置ＣＰＵ、ローカルメモリＬＭＥＭ、ダイレクト・メモリアクセス・コントローラＤＭＡＣ、バス・インターフェースＢＩＦを含む。中央処理装置ＣＰＵは、命令に従って演算を行う。ローカルメモリＬＭＥＭは主にプロセッサＰＥ１内で演算に利用するデータやプログラムを格納するが、このプロセッサＰＥ１外からのアクセスも可能である。ダイレクト・メモリアクセス・コントローラＤＭＡＣは、中央処理装置ＣＰＵを利用しないでデータ転送を行うためのモジュールである。バス・インターフェースＢＩＦはプロセッサ内部のバスとＩＤゲートＩＤＧを接続するためのインターフェースである。
【００２９】
ＩＰモジュールＩＰ１〜ＩＰ３は、例えばネットワーク・インターフェースや、シリアル入出力などの入出力モジュール、オーディオ専用回路やビデオ処理専用回路などの用途限定の演算器などとされる。
【００３０】
バスブリッジＢＵＳＢは、プロセッサ間バス１００と外部バス１０１を接続するためのモジュールである。バス・プロトコルの変換や、動作クロックが異なる場合のタイミング調整などを行う。本例のＢＵＳＢはプロセッサ間バス１００から外部バス１０１への通信と、外部バス１０１からプロセッサ間バス１００への通信の両方をサポートしている。
【００３１】
プロセッサ間バス１００は、コマンド線と、アドレス線と、データ線と、バスアクセス要求信号線と、バスアクセス許可信号線と、エラー信号線を含んで構成される一般的なバスである。コマンド線は、これから行う通信の命令の伝達に用いられる。具体的には、読み出し、または、書き込みの選択や、通信するデータのサイズなどが上記コマンド線を介して伝達されるコマンドによって指定される。アドレス線は、これから行う通信のアドレス信号の伝達に用いられる。データ線は実際のデータ伝達に用いられる。
【００３２】
プロセッサＩＤ信号線１０２は、バスアクセス要求元の識別のためのプロセッサＩＤ（ＰＩＤという）を伝達するのに用いられる。このＰＩＤは、通常ＩＤゲートＩＤＧ１〜ＩＤＧ４で付加される。尚、ＩＤゲートが存在しないバスアクセス要求元の場合は、ＰＩＤ信号線１０２は”０”にセットされる。
【００３３】
ＩＤゲートＩＤＧ１〜ＩＤＧ４は、プロセッサ間バス１００の利用を要求するモジュールとプロセッサ間バス１００との接続部分に設置される。本例では各プロセッサ内のバス・インターフェースＢＩＦと、プロセッサ間バス１００との間に設置される。ＩＤゲートＩＤＧ１〜ＩＤＧ４は、プロセッサ内部からプロセッサ間バス１００へのアクセス要求を受けると、ＰＩＤ信号線１０２へＰＩＤの信号を付加してプロセッサ間バス１００へアクセス要求を出力する。各ＩＤゲートＩＤＧ１〜ＩＤＧ４には各々を識別するためのＰＩＤが割り付けられている。本例では、プロセッサＰＥ１のＰＩＤを「１」、プロセッサＰＥ２のＰＩＤを「２」、プロセッサＰＥ３のＰＩＤを「３」、プロセッサＰＥ４のＰＩＤを「４」とする。また、バスブリッジＢＵＳＢは、プロセッサ間バス１００へのアクセス要求を出すことが可能であるが、対応するＩＤゲートＩＤＧは設けられていない。このような場合、ＰＩＤは「０」とされる。
【００３４】
プロセッサ管理ユニットＰＭＵは、レジスタＰＥＣＭＬＲ、ＭＲＷＭＲ、及び制御論理ＣＮＴを含む。制御論理ＣＮＴは、ＰＩＤ信号線１０２と、プロセッサ間バス１００からのアクセス要求を受け、レジスタＰＥＣＭＬＲ及びＭＲＷＭＲの設定に従って、そのアクセスを許可するか否かの判定が行われる。
【００３５】
尚、前記２つのレジスタＰＥＣＭＬＲ及びＭＲＷＭＲへのすべてのアクセスが可能なマスタープロセッサを定義するためのレジスタＭＤＲ（図示せず）を設けても良い。このレジスタＭＤＲを含む場合は、リセット時にレジスタＭＤＲに”０”以外で最も小さいＰＩＤ、すなわち本構成においては”１”がセットされる。これにより、ＰＩＤ１に対応するプロセッサＰＥ１で実行される起動プログラムによって以降の設定を行うことが可能となる。リセット時の他のレジスタの値はアクセスを許可しないことを示す値とする。
【００３６】
プロセッサ管理ユニットＰＭＵでアクセスを許可すると判定された場合は要求をＢＳＣに通知し、許可しない場合はプロセッサ間バス１００のエラー信号線から要求元にエラーを返す。ＰＭＵでバスアクセスの管理を行うため、ＢＳＣはプロセッサ間バス１００に対応している既存のものを流用することも可能である。
【００３７】
バスステートコントローラＢＳＣは、ＰＭＵからの出力信号に従いプロセッサ間バス１００の利用管理を行う。プロセッサ管理ユニットＰＭＵとＢＳＣ間の接続はプロセッサ間バス１００と同じ構成で行われる。
【００３８】
図２には、上記プロセッサ管理ユニットＰＭＵ内のレジスタＰＥＣＭＬＲの記憶情報が示される。
【００３９】
図２において、左から一列目がアクセス先プロセッサを示しており、左から２列目乃至６列目の上から２行がアクセス元プロセッサを示している。アクセス元プロセッサの括弧内の値は、そのプロセッサに割り当てられたＰＩＤである。図２において、左から２列目乃至６列目の、上から３行目乃至６行目の項は、プロセッサ情報とされる。このプロセッサ情報において、アクセス元プロセッサがアクセス先プロセッサを利用できるかどうかを”／”の左側に示し、そのプロセッサを利用しているプロセッサはどれかを”／”の右側に示し、一項で２つの設定を示している。ここで、「アクセス元プロセッサがアクセス先プロセッサを利用できる」とは、アクセス元プロセッサがアクセス先プロセッサで任意のプログラムを実行できることを意味し、１が利用可能、０が利用不可能を示している。また、”そのプロセッサを利用しているプロセッサはどれか”とはアクセス先プロセッサが実行しているプログラムは、どのアクセス元プロセッサの要求により実行されたのかを意味し、”１”が利用していることを示し、”０”が利用していないことを示す。アクセス元プロセッサとアクセス先プロセッサが同じ場合には本レジスタで設定するまでもなくアクセス可能であるため、本レジスタでは制御を行わないことを表すＤＣ（Ｄｏｎ’ｔ  Ｃａｒｅ）とし、書き込みは不可能、読み出しは常にＤＣを意味する値を返すようにしている。
【００４０】
本図ではアクセス先プロセッサにＢＵＳＢが含まれていないが、これはＢＵＳＢがプロセッサではなくプログラムを実行できないためにこのような構成としている。ＢＵＳＢ内部の設定を同様に扱いたい場合には、アクセス先プロセッサにＢＵＳＢを含めることもできる。
【００４１】
例えば、図２において、アクセス元プロセッサＰＥ１（ＰＩＤ１）の列が、プロセッサＰＥ２はプロセッサＰＥ１から利用可能かつプロセッサＰＥ１が要求したプログラムを実行中であることを示す”１／１”に設定され、プロセッサＰＥ３とプロセッサＰＥ４はプロセッサＰＥ１から利用可能であるが、プロセッサＰＥ１が要求したプログラムを実行していないことを示す”１／０”になっている。また、図２におけるアクセス元プロセッサＰＥ２（ＰＩＤ２）の列は、プロセッサＰＥ２からプロセッサＰＥ３とプロセッサＰＥ４が利用可能で、プロセッサＰＥ３、プロセッサＰＥ４ともにプロセッサＰＥ２が要求したプログラムを実行していることを示す”１／１”となっている。その他のプロセッサＰＥ３、プロセッサＰＥ４と、ＰＩＤ０が割り当てられたモジュールは他のプロセッサを利用できないように”０／０”に設定された状態を示している。
【００４２】
リセット時の動作は、マスタープロセッサを定義するためのレジスタＭＤＲ（図示せず）を含む構成の場合、すべて”０”にリセットされる。マスタープロセッサを定義するためのレジスタＭＤＲを含まない場合、ＰＩＤ０以上で最もＰＩＤの小さいアクセス元プロセッサＰＥ１（ＰＩＤ１）の列がすべて”１／０”に設定され、他の値はすべて”０”に設定される。これにより、リセットでプロセッサＰＥ１からすべてのプロセッサが利用可能な状態になる。
【００４３】
マスタープロセッサを定義するためのレジスタＭＤＲ（図示せず）を含む構成では、任意のタイミング、状態においてＭＤＲに設定されたプロセッサが任意のプロセッサに対する設定を変更できるため、あるプロセッサを強制的に利用したり、フリーズしたプロセッサをリセットしたりすることが可能である。上記レジスタＭＤＲを含まない構成においてはレジスタＰＥＣＭＬＲの設定方法などの運用によりこの点をカバーすることが可能である。
【００４４】
図３には、プロセッサ管理ユニットＰＭＵ内のレジスタＭＲＷＭＲの記憶情報が示される。同図において、左から一列目がアクセス先プロセッサを示しており、左から２列目乃至６列目の上から２行がアクセス元プロセッサを示している。アクセス元プロセッサの括弧内の値は、そのプロセッサに割り当てられたＰＩＤである。表の左から２列目乃至６列目の、上から３行目から９行目の項は、”／”の左側がアクセス元プロセッサからアクセス先プロセッサへの読み込み要求の許可状態を表し、右側がアクセス元プロセッサからアクセス先プロセッサへの書き込み要求の許可状態を表す。図３では、”１”がアクセス可能、”０”がアクセス不可能を示す。アクセス元プロセッサとアクセス先プロセッサとが同じ場合には、本レジスタで設定するまでもなくアクセス可能であるため、本レジスタでは制御を行わないことを表すＤＣ（Ｄｏｎ’ｔ  Ｃａｒｅ）とし、書き込みは不可能、読み出しは、常にＤＣを意味する値を返すようにしている。
【００４５】
例えば、図３において、アクセス元プロセッサＰＥ１（ＰＩＤ１）の列を見ると、プロセッサＰＥ２とＩＰモジュールＩＰ１〜ＩＰ３へのアクセスは、リード／ライトが可能なことを示す”１／１”となっており、プロセッサＰＥ３とプロセッサＰＥ４へのアクセスはリードのみ可能なことを示す”１／０”となっている。
【００４６】
リセット時の動作は、マスタープロセッサを定義するためのレジスタＭＤＲ（図示せず）を含む構成の場合、すべて”０”にリセットされる。マスタープロセッサを定義するためのレジスタＭＤＲ（図示せず）を含まない場合、最もＰＩＤの小さいアクセス元プロセッサＰＥ１（ＰＩＤ１）の列が、すべて”１／１”に設定され、他の値はすべて”０”に設定される。これにより、リセットでプロセッサＰＥ１からすべてのプロセッサが利用可能な状態になる。
【００４７】
図４には、図２に示されるプロセッサの制御許可と利用状況を示すレジスタＰＥＣＭＬＲに基づいて管理されるアドレス領域へのアクセス制御の流れが示される。この制御は制御論理ＣＮＴによって行われる。
【００４８】
ここで、「レジスタＰＥＣＭＬＲに基づいて管理されるアドレス領域」とは、各プロセッサを外部から利用するための制御レジスタが配置された領域を指す。
【００４９】
バスアクセスが発生した場合（４００）、それがトリガーとなって、バスアクセスのアドレスが参照され、レジスタＰＥＣＭＬＲによって管理されるアドレス領域へのアクセスか否かの判別が行われる（４０１）。この判別において、レジスタＰＥＣＭＬＲの管理するアドレス領域である（Ｙｅｓ）と判断された場合には、アドレスからアクセス先モジュールが特定される（４０３）。また、上記ステップ４０１の判別において、レジスタＰＥＣＭＬＲの管理するアドレス領域ではない（Ｎｏ）と判断された場合には、アクセス許可条件１が発行される。ここで発行されたアクセス許可条件１と、図５の動作で発行されたアクセス許可条件２とが両方ともそろった場合には、バスアクセスが許可される。この場合のバスアクセスは、プロセッサ管理ユニットＰＭＵによって管理されるメモリ領域外へのアクセスであり、本例においては外部バスに割り当てられたメモリ領域とされる。
【００５０】
上記ステップ４０３では、バスアクセスで指定されたアクセス先のアドレスからアクセス先モジュールが特定される。本例ではプロセッサＰＥ１〜ＰＥ４の何れかとされる。
【００５１】
次に、レジスタＰＥＣＭＬＲが参照され、バスアクセス発生にかかるモジュールをアクセス元プロセッサと、上記ステップ４０３で特定されたアクセス先プモジュールとした項の値が”１／１”、又は”１／０”、あるいは”ＤＣ”の何れであるか否かの判別が行われる。項の値が”１／１”又は”１／０”、あるいは”ＤＣ”の何れかである（Ｙｅｓ）と判断された場合、当該バスアクセスが許可される（４０６）。また、上記ステップ４０４の判別において、項の値が”１／１”又は”１／０”、あるいは”ＤＣ”の何れでもない（Ｎｏ）と判断された場合、アクセスエラーとされる（４０５）。すなわち、許可されていない領域へアクセスと判定されたため、アクセスエラーがバスアクセス発生元に返される。このバスアクセスが許可された場合には、プロセッサ間バス１００を介してモジュール間の通信が可能とされる。このような制御により、アクセスが許可されていないプロセッサへのアクセスを防ぎ、プロセッサを占有して処理を行うことを可能としたり、不正なプログラムによりプロセッサの制御が奪われることを防いだりすることができる。
【００５２】
図５には、図３に示されるプロセッサの制御許可と利用状況を示すレジスタＰＥＣＭＬＲに基づいて管理されるアドレス領域へのアクセス制御の流れが示される。この制御は制御論理ＣＮＴによって行われる。
【００５３】
レジスタＭＲＷＭＲに基づいて管理されるアドレス領域とは、各プロセッサおよびＩＰモジュールの内部メモリ領域を指し、レジスタＰＥＣＭＬＲに基づいて管理されるアドレス領域とは重ならない。
【００５４】
バスアクセスが発生した場合（５００）、それがトリガーとなってバスアクセスのアドレスが参照され、レジスタＭＲＷＭＲに基づいて管理されるアドレス領域へのアクセスであるか否かの判別が行われる（５０１）。この判別において、レジスタＭＲＷＭＲに基づいて管理されるアドレス領域へのアクセスである（Ｙｅｓ）と判断された場合には、アドレスからアクセス先モジュールが特定される（５０３）。また、上記ステップ５０１の判別において、レジスタＭＲＷＭＲに基づいて管理されるアドレス領域へのアクセスではない（Ｎｏ）と判断された場合には、アクセス許可条件２が発行される（５０２）。ここで発行されたアクセス許可条件２と、図４の動作で発行されたアクセス許可条件１が両方ともそろった場合には、バスアクセスが許可される。この場合のバスアクセスは、プロセッサ管理ユニットＰＭＵで管理するメモリ領域外へのアクセスであり、本例においては外部バスに割り当てられたメモリ領域とされる。
【００５５】
また、上記ステップ５０３では、バスアクセスで指定されたアクセス先のアドレスからアクセス先モジュールが特定される。本例ではプロセッサＰＥ１〜ＰＥ４、ＩＰ１〜ＩＰ３の何れかとなる。
【００５６】
次に、バスアクセスの命令が参照され、リードアクセスであるか否かの判別が行われる。ここで、リードアクセスか否かの判別は、リードアクセスかライトアクセスかの判別に相当する。この判別において、リードアクセスである（Ｙｅｓ）と判断された場合には、レジスタＭＲＷＭＲが参照され、バスアクセスを発生したモジュールをアクセス元プロセッサ、上記ステップ５０３で特定されたモジュールをアクセス先ＰＥ／ＩＰとした項の値が”１／１”、又は”１／０”、あるいは”ＤＣ”の何れかであるか否かの判別が行われる（５０５）。この判別において、”１／１”、又は”１／０”、あるいは”ＤＣ”の何れかである（Ｙｅｓ）と判断された場合にはアクセスが許可され、モジュール間の通信が可能とされる（５０８）。しかし、上記ステップ５０５の判別において、”１／１”、又は”１／０”、あるいは”ＤＣ”の何れでもない（Ｎｏ）と判断された場合には、アクセスエラーがバスアクセス発生もとのモジュールに返される（５０７）。また、上記ステップ５０４の判別においてリードアクセスではない（Ｎｏ）と判断された場合には、レジスタＭＲＷＭＲが参照され、バスアクセスにかかるモジュールをアクセス元プロセッサ、上記ステップ５０３で特定されたモジュールをアクセス先ＰＥ／ＩＰとした項の値が”１／１”、又は”０／１”、あるいは”ＤＣ”の何れかであるか否かの判別が行われる（５０６）。この判別において、”１／１”、又は”０／１”、あるいは”ＤＣ”の何れかである（Ｙｅｓ）と判断された場合にはアクセスが許可され、モジュール間の通信が可能とされる（５０８）。しかし上記ステップ５０６の判別において、”１／１”、又は”０／１”、あるいは”ＤＣ”の何れかでもない（Ｎｏ）と判断された場合には、アクセスエラーがバスアクセス発生もとのモジュールに返される（５０７）。このような制御により、アクセスが許可されていないモジュールへのアクセスを防ぎ、不正なプログラムや、バグによるデータの参照や改ざんを防ぐことが可能となる。また、リードとライトの許可を個別に設定できるため、参照のみを可能にするといった運用も可能である。
【００５７】
図６には、図２に示されるプロセッサの制御許可と利用状況を示すレジスタＰＥＣＭＬＲを更新する場合の動作の流れが示される。この制御は制御論理ＣＮＴによって行われる。本図では、変更要求元プロセッサをＰＥ−Ａ、変更される項のアクセス元プロセッサをＰＥ−Ｂ、変更される項のアクセス先プロセッサをＰＥ−Ｃとして記述する。
【００５８】
先ず、レジスタＰＥＣＭＬＲにアクセスが発生したことをトリガーとして本フローチャートの動作が開始される（６００）。
【００５９】
レジスタＰＥＣＭＲＬＲにおいてアクセス元プロセッサがＰＥ−Ａ、アクセス先プロセッサがＰＥ−Ｂとされる項が参照され、”１／１”、又は”１／０”の何れかであるか否かの判別が行われる（６０１）。この判別において、”１／１”、又は”１／０”の何れかである（Ｙｅｓ）と判断された場合には、ＰＥ−ＢがＰＥ−Ａの管理下にあることを示している。”１／１”、又は”１／０”の何れかであると判断された場合には、ＰＥＣＭＲＬＲのアクセス元プロセッサがＰＥ−Ａ、アクセス先プロセッサがＰＥ−Ｃとなる項が参照され、”１／１”、又は”１／０”の何れかであるか否かの判別が行われる（６０２）。この判別において、”１／１”、又は”１／０”の何れかである（Ｙｅｓ）と判断された場合には、アクセス許可対象とされるレジスタが更新される（６０４）。また、上記ステップ６０１の判別において、”１／１”、又は”１／０”の何れでもない（Ｎｏ）と判断された場合、及び上記ステップ６０２の判別において、”１／１”、又は”１／０”の何れかでもない（Ｎｏ）と判断された場合には、許可されていない領域へのアクセスであることからアクセスエラーとされる（６０３）。本動作により、プロセッサＰＥ−Ａの管理下にプロセッサＰＥ−ＢとプロセッサＰＥ−Ｃがある場合に、プロセッサＰＥ−ＢとプロセッサＰＥ−Ｃの関係を変更することができる。これは、プロセッサＰＥ−Ａは管理下のプロセッサのみに対して設定を変更できることになり、プロセッサの階層的管理が可能になる。搭載するプロセッサの個数が増えるとすべてのプロセッサの管理を把握することは難しくなるため、このような階層的な管理を行うことで、管理の容易化を図ることができる。
【００６０】
図７には、図３に示されるプロセッサ内部のメモリおよびＩＰモジュール内部のメモリ（メモリマップされたレジスタも含む）の読み出しと書き込みの許可を行うレジスタＭＲＷＭＲを更新する場合の動作を示すフローチャートである。本図では、変更要求元プロセッサをＰＥ−Ａ、変更される項のアクセス元プロセッサをＰＥ−Ｂ、変更される項のアクセス先ＰＥ／ＩＰをＰＥ／ＩＰ−Ｃとして記述する。
【００６１】
レジスタＭＲＷＭＲにアクセスが発生したことをトリガーとして本フローチャートの動作が開始される（７００）。ステップ７０１では、レジスタＰＥＣＭＲＬＲのアクセス元プロセッサがＰＥ−Ａ、アクセス先プロセッサがＰＥ−Ｂの項を参照し、１／１または１／０のどちらかであるか、否かを判定する。１／１または１／０であった場合はＰＥ−ＢがＰＥ−Ａの管理下にあることを示している。１／１または１／０のどちらかであった場合は７０３へ進み、異なる場合はステップ７０２へ進む。ステップ７０２では、許可されていない領域へのアクセスと判定されたため、アクセスエラーをバスアクセス発生もとのモジュールに返す。ステップ７０３では、レジスタＭＲＷＭＲのアクセス元プロセッサがＰＥ−Ａ、アクセス先ＰＥ／ＩＰがＰＥ／ＩＰ−Ｃとされる項が参照され、”１／１”、又は”０／１”、あるいは”ＤＣ”の何れかであるか否かの判別が行われる。この判別において、”１／１”、又は”０／１”、あるいは”ＤＣ”の何れかである（Ｙｅｓ）と判断された場合には、ステップ７０４へ進み、異なる場合にはステップ７０２へ進む。ステップ７０４では、レジスタＭＲＷＭＲへのアクセスが許可されたため、対象のレジスタが更新される。本動作により、プロセッサＰＥ−Ａの管理下にプロセッサＰＥ−Ｂ及びプロセッサＰＥ／ＩＰ−Ｃがあり、ＰＥ−Ｂ又はプロセッサＰＥ／ＩＰ−Ｃへのライト許可がある場合に、プロセッサＰＥ−ＢとプロセッサＰＥ／ＩＰ−Ｃの関係を変更することができる。これは、プロセッサＰＥ−Ａは管理下のプロセッサまたはＩＰモジュールのみに対して設定を変更できることになり、プロセッサの階層的管理が可能になる。搭載するプロセッサやＩＰモジュールの個数が増えるとすべてのモジュールを把握することは難しくなるため、このような階層的な管理により、管理の容易化を図ることができる。
【００６２】
図８には、ＰＥ−ＡからＰＥ−Ｂを利用する場合の利用手順の流れが示される。
【００６３】
ステップ８００では、ＰＥ−ＡはＰＥ−Ａから利用可能なプロセッサとＩＰモジュールの確認が行われる。ステップ８０１では、ＰＥ−Ａは８００で得た情報で、ＰＥＣＭＬＲのアクセス元プロセッサ−Ａ、アクセス先プロセッサ−Ｂの項が１／０か否かの判別が行われる。この判別において、１／０であると判断された場合には、ＰＥ−ＢはＰＥ−Ａの管理下かつ、現在は利用されていないと判断し、ステップ８０３に進む。１／０以外の場合はＰＥ−Ａの管理下にＰＥ−Ｂが無い（０／０）か、ＰＥ−Ｂはすでに利用中（１／１）と判断され、ステップ８０２に進む。ステップ８０２では、ＰＥ−ＡはＰＥ−Ｂの利用は不可能であるため、ＰＥ−Ｂ利用のための処理を終了する。本例では特に定めないが、ＰＥ−Ａの管理権限を持つＰＥに対して、ＰＥ−Ｂの利用許可を申請するなどの動作も考えられる。ステップ８０３では、ＰＥ−ＡはＰＥＣＭＬＲのアクセス元プロセッサ−Ａ、アクセス先プロセッサ−Ｂの項を１／１にセットし、ＰＥ−ＡからＰＥ−Ｂを利用中であることを示す。ステップ８０４では、ＰＥ−Ｂに制御を許可するプロセッサがある場合に、レジスタＰＥＣＭＬＲの該当場所を１／０にセットし、ＰＥ−Ｂからの制御を可能にする。ステップ８０５では、ＰＥ−ＡはＰＥ−Ｂにアクセスを許可するＰＥ／ＩＰがある場合に、レジスタＭＲＷＭＲの該当場所を、１／０または１／１にセットする。セットする値はＰＥ−Ｂに与えるアクセス許可内容により変わる。ステップ８０６では、ＰＥ−ＡはＰＥ−Ｂの制御レジスタにアクセスしてＰＥ−Ｂに目的の処理を開始させる。ステップ８０７では、ＰＥ−ＢはＰＥ−Ａから要求された処理を完了したら、ＰＥ−Ａに処理の完了を報告する。ステップ８０８では、ＰＥ−ＡはＰＥＣＭＬＲのアクセス元プロセッサ−Ａ、アクセス先プロセッサ−Ｂの項を１／０にセットし、ＰＥ−ＡからＰＥ−Ｂを利用していないことを示す。
【００６４】
図９には、図１に示されるマイクロコンピュータ１０におけるプロセッサＰＥ１〜ＰＥ４およびＩＰモジュール１〜ＩＰ３の利用例が示される。
【００６５】
図９における矢印は、ひとつのプロセッサから他のプロセッサを利用する関係、および、ひとつのプロセッサからＩＰモジュールを利用する関係を示している。すなわち、プロセッサＰＥ１からプロセッサＰＥ２を使い、プロセッサＰＥ２からプロセッサＰＥ３とプロセッサＰＥ４とプロセッサＩＰ１を使い、プロセッサＰＥ３からプロセッサＩＰ２を使い、プロセッサＰＥ４からプロセッサＩＰ３を使う。この関係で処理を実行中のレジスタＰＥＣＭＬＲは、図２に示される値となる。また、この関係で処理を実行中のレジスタＭＲＷＭＲは図３に示される値となる。
【００６６】
図１０には、図９に示した関連において本マイクロコンピュータ１０を利用する場合の、通信の順序が示される。本図の初期状態ではプロセッサＰＥ１にすべてのモジュールの利用が許可されている状態とする。
【００６７】
図１０において、９００から９０６までは、プロセッサＰＥ１からプロセッサＰＥ２に処理を実行させるための動作を示している。
【００６８】
９００では、アクセス元プロセッサ１かつアクセス先プロセッサ２のレジスタＰＥＣＭＬＲを１／１に設定する。また、プロセッサＰＥ２からプロセッサＰＥ１のメモリ領域のリードを許可するために、アクセス元プロセッサ２かつアクセス先プロセッサ１のレジスタＰＥＣＭＬＲを１／０に設定する。
【００６９】
９０１では、プロセッサＰＥ２からプロセッサＰＥ３の利用を許可するために、アクセス元プロセッサ２かつアクセス先プロセッサ３のレジスタＰＥＣＭＬＲが”１／０”に設定され、レジスタＭＲＷＭＲが”１／１”に設定される。９０２では、プロセッサＰＥ２からプロセッサＰＥ４の利用を許可するために、アクセス元プロセッサ２、及びアクセス先プロセッサ４のレジスタＰＥＣＭＬＲが”１／０”に設定される。レジスタＭＲＷＭＲは”１／１”に設定される。９０３では、プロセッサＰＥ２からＩＰ１の利用を許可するために、アクセス元プロセッサ２かつアクセス先ＩＰ１のレジスタＭＲＷＭＲが”１／１”に設定される。９０４では、プロセッサＰＥ２からＩＰ２の利用を許可するために、アクセス元プロセッサ２及びアクセス先ＩＰ２のレジスタＭＲＷＭＲが”１／１”に設定される。９０５では、プロセッサＰＥ２からＩＰ３の利用を許可するために、アクセス元プロセッサ２及びアクセス先ＩＰ３のレジスタＭＲＷＭＲが”１／１”に設定される。９０６において、プロセッサＰＥ１は、プロセッサＰＥ２に対して目的の処理を実行させる。このとき、プロセッサＰＥ３、プロセッサＰＥ４、ＩＰモジュールＩＰ１〜ＩＰ３は、すべてプロセッサＰＥ２から利用可能な状態にあり、プロセッサＰＥ２はこれらのモジュールを利用して与えられた処理を実行することが可能である。
【００７０】
９０７から９０９はプロセッサＰＥ２からプロセッサＰＥ３に処理を実行させるための動作を示している。
【００７１】
９０７では、プロセッサＰＥ３からＩＰ２の利用を許可するために、アクセス元プロセッサ３かつアクセス先ＩＰ２のレジスタＭＲＷＭＲが”１／１”に設定される。９０９では、プロセッサＰＥ２はプロセッサＰＥ３に目的の処理が実行される。このとき、ＩＰ２はプロセッサＰＥ３から利用可能な状態にあり、プロセッサＰＥ３はこれのモジュールを利用して与えられた処理を実行することが可能である。９１０から９１２はプロセッサＰＥ２からプロセッサＰＥ４に処理を実行させるための動作が示される。９１０では、プロセッサＰＥ４からＩＰ３の利用を許可するために、アクセス元プロセッサ４かつアクセス先ＩＰ３のレジスタＭＲＷＭＲが”１／１”に設定される。９１２では、プロセッサＰＥ２は、プロセッサＰＥ４に対して目的の処理を実行させる。このとき、ＩＰ３はプロセッサＰＥ４から利用可能な状態にあり、プロセッサＰＥ４はこれのモジュールを利用して与えられた処理を実行することが可能である。９１３と９１４は許可されていないアクセスを行った場合の動作を示している。９１３では、プロセッサＰＥ３からプロセッサＰＥ４を利用しようとしてアクセスを行っているが、レジスタＰＥＣＭＬＲの該当箇所では許可されていない。そのため、９１４でＰＭＵからエラーが送られている。また、図２および図３のレジスタの値はこの状態の時の値を示している。９１５では、プロセッサＰＥ３は目的の処理を終了したため、処理要求元のプロセッサＰＥ２に終了の通知を行っている。９１６では、９１５の通知を受け、アクセス元プロセッサ２かつアクセス先プロセッサ３のレジスタＰＥＣＭＬＲの値を１／０として処理を行っていないことを示す値に更新している。９１７では、プロセッサＰＥ４は目的の処理を終了したため、処理要求元のプロセッサＰＥ２に終了の通知を行っている。９１８では、９１７の通知を受け、アクセス元プロセッサ２かつアクセス先プロセッサ４のレジスタＰＥＣＭＬＲの値を１／０として処理を行っていないことを示す値に更新している。９１９では、プロセッサＰＥ２は目的の処理を終了したため、処理要求元のプロセッサＰＥ１に終了の通知を行っている。９２０では、９１９の通知を受け、アクセス元プロセッサ１かつアクセス先プロセッサ２のレジスタＰＥＣＭＬＲの値を１／０として処理を行っていないことを示す値に更新している。
【００７２】
以上で説明したように本発明の構成を採用したマイクロコンピュータを利用することにより、複数のプロセッサやＩＰモジュールを含むチップにおいて、これらの管理を容易化し、利用時のオーバーヘッドを削減することができる。また、不正なプログラムによるデータの参照や破壊を防ぐことも可能である。
【００７３】
図１１には、上記マイクロコンピュータ１０の別の構成例が示される。
【００７４】
図１１に示されるマイクロコンピュータ１０が、図１に示されるのと大きく相違するのは、プロセッサ管理ユニットＰＭＵを、各プロセッサＰＥ１〜ＰＥ４および各ＩＰモジュールＩＰ１〜ＩＰ３と、プロセッサ間バス１００およびＰＩＤ線１０２との間に配置した点である。すなわち、ＩＤゲートＩＤＧ１とプロセッサ間バス１００およびＰＩＤ線１０２との間にプロセッサ管理ユニットＰＭＵ１１が配置され、ＩＤゲートＩＤＧ２とプロセッサ間バス１００およびＰＩＤ線１０２との間にプロセッサ管理ユニットＰＭＵ１２が配置され、ＩＤゲートＩＤＧ３とプロセッサ間バス１００およびＰＩＤ線１０２との間にプロセッサ管理ユニットＰＭＵ１３が配置され、ＩＤゲートＩＤＧ４とプロセッサ間バス１００およびＰＩＤ線１０２との間にプロセッサ管理ユニットＰＭＵ１４が配置される。ＩＰモジュールＩＰ１とプロセッサ間バス１００およびＰＩＤ線１０２との間にプロセッサ管理ユニットＰＭＵ２１が配置され、ＩＰモジュールＩＰ２とプロセッサ間バス１００およびＰＩＤ線１０２との間にプロセッサ管理ユニットＰＭＵ２２が配置され、ＩＰモジュールＩＰ３とプロセッサ間バス１００およびＰＩＤ線１０２との間にプロセッサ管理ユニットＰＭＵ２３が配置され、ＩＤゲートＩＤＧ４１とプロセッサ間バス１００およびＰＩＤ線１０２との間にプロセッサ管理ユニットＰＭＵ３１が配置される。ＰＭＵの位置を変更したことに伴い、ＰＭＵ内のレジスタは接続している各プロセッサまたは各ＩＰモジュールをアクセス先ＰＥ／ＩＰに持つもののみで構成することになり、図１１に示される構成は、図１の統合的な管理に対して分散的な管理を行うことになるが、各プロセッサ管理ユニットにより、図１に示される構成の場合と同様の作用効果を得ることができる。
【００７５】
本構成では図１の構成に比べて、ＩＰモジュールやプロセッサＰＥを接続する際にそれらのモジュールを変更する必要があり、面積も大きくなることが予想されるが、各ＰＭＵで判別するアドレス範囲が狭くなるために高速に判定が行えることや、管理するアドレスの範囲を各モジュールで柔軟に設定できる利点がある。
【００７６】
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００７７】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるマイクロコンピュータに適用した場合について説明したが、本発明はそれに限定されるものではなく、各種半導体集積回路に適用することができる。
【００７８】
本発明は、少なくとも、複数のプロセッサを含むことを条件に適用することができる。
【図面の簡単な説明】
【００７９】
【図１】本発明にかかる半導体集積回路の一例とされるマイクロコンピュータの構成例ブロック図である。
【図２】上記マイクロコンピュータにおけるプロセッサ管理ユニットに含まれるレジスタＰＥＣＭＬＲの説明図である。
【図３】上記マイクロコンピュータにおけるプロセッサ管理ユニットに含まれるレジスタＭＲＷＭＲの説明図である。
【図４】上記レジスタＰＥＣＭＬＲに基づいて管理されるアドレス領域へのアクセス制御動作のフローチャートである。
【図５】上記レジスタＭＲＷＭＲに基づいて管理されるアドレス領域へのアクセス制御動作のフローチャートである。
【図６】上記レジスタＰＥＣＭＬＲを更新する場合のフローチャートである。
【図７】上記レジスタＭＲＷＭＲを更新する場合のフローチャートである。
【図８】上記マイクロコンピュータにおいてプロセッサＰＥ−ＡからプロセッサＰＥ−Ｂを利用する場合の利用手順のフローチャートである。
【図９】上記マイクロコンピュータに含まれるプロセッサ及びＩＰモジュールの利用例の説明図である。
【図１０】上記マイクロコンピュータを利用した通信の説明図である。
【図１１】上記マイクロコンピュータの別の構成例を示すブロック図である。
【符号の説明】
【００８０】
１０  マイクロコンピュータ
１００  プロセッサ間バス
１０１  外部バス
１０２  ＰＩＤ信号線
ＰＥ１〜ＰＥ４  プロセッサ
ＩＰ１〜ＩＰ３  ＩＰモジュール
ＰＭＵ  プロセッサ管理ユニット
ＰＥＣＭＬＲ  レジスタ
ＭＲＷＭＲ  レジスタ
ＣＮＴ  制御論理
【図１】
2007172430.tif 000003
【図２】
2007172430.tif 000004
【図３】
2007172430.tif 000005
【図４】
2007172430.tif 000006
【図５】
2007172430.tif 000007
【図６】
2007172430.tif 000008
【図７】
2007172430.tif 000009
【図８】
2007172430.tif 000010
【図９】
2007172430.tif 000011
【図１０】
2007172430.tif 000012
【図１１】
2007172430.tif 000013