(57)【要約】【課題】  小型であり、充分高い動作速度で動作可能であって、しかも割込み処理の実質的な処理効率が高いプロセッサを提供する。【解決手段】  複数のプロセッサユニット２０２ａ〜２０２ｄへの割込み要求を受け付け、複数のプロセッサユニット２０２ａ〜２０２ｄのいずれかに実行させる１つの外部割込制御部２０１が、プロセッサユニット２０２ａ〜２０２ｄに処理されているタスクの処理優先度を判定する全体割込優先度制御部２０４、プロセッサユニット２０２ａ〜２０２ｄがタスクの処理中に割込み要求が発生した場合、プロセッサユニット２０２ａ〜２０２ｄのうち、全体割込優先度制御部２０４によって判定された処理優先度が最も低いタスクを処理しているプロセッサ部を選択し、選択されたプロセッサユニットに対して割込み要求をする割込処理プロセッサ選択部２０５及び制御管理部２１２を備えるようプロセッサを構成する。【選択図】  図２
2006259968.tif 000002
【特許請求の範囲】
【請求項１】
タスクあるいはスレッドの処理中に該処理をいったん停止して他の処理を実行する割込み処理が可能なプロセッサ部を複数含むプロセッサであって、
前記プロセッサ部に割込み処理を要求する割込み要求を受け付け、該割込み要求によって要求された割込み処理を複数の前記プロセッサ部のうちのいずれかに実行させる一の割込み制御手段を備え、
前記割込み制御手段は、
前記プロセッサ部の各々において処理されているタスクあるいはスレッドの処理の優先度である処理優先度を判定する処理優先度判定手段と、
割込み処理が可能なすべての前記プロセッサ部がタスクあるいはスレッドの処理中であって、かつ、割込み要求が発生した場合、前記プロセッサ部のうち、前記処理優先度判定手段によって判定された処理優先度が最も低いタスクあるいはスレッドを処理しているプロセッサ部を選択するプロセッサ部選択手段と、
前記プロセッサ部選択手段よって選択された前記プロセッサ部に対して割込み要求をする割込み要求手段と、
を備えることを特徴とするプロセッサ。
【請求項２】
割込み要求の優先度である割込優先度を判定する割込優先度判定手段をさらに備え、
割込み処理が可能なすべての前記プロセッサ部が割込み処理中であって、かつ、割込み要求が発生した場合、
前記プロセッサ部選択手段は、複数の前記プロセッサ部において最も低く、かつ、発生した割込み要求の割込優先度よりも低い割込優先度を持つ割込み処理を実行しているプロセッサ部を選択し、
前記割込み要求手段は、前記プロセッサ部選択手段よって選択された前記プロセッサ部に対して割込み要求をすることを特徴とする請求項１に記載のプロセッサ。
【請求項３】
割込み処理が終了した場合、割込み要求によって処理が中断しているタスクあるいはスレッドを、タスクあるいはスレッドの処理優先度にしたがって割込み処理が終了した前記プロセッサ部に実行させる処理復帰手段をさらに備えることを特徴とする請求項１または２に記載のプロセッサ。
【請求項４】
タスクあるいはスレッドの処理中に該処理をいったん停止して他の処理を実行する割込み処理が可能なプロセッサ部を複数含み、前記プロセッサ部に割込み処理を要求する割込み要求を受け付け、該割込み要求によって要求された割込み処理を複数の前記プロセッサ部のうちのいずれかに実行させる一の割込み制御手段を備えたプロセッサに適用される割込み処理制御方法であって、
前記プロセッサ部の各々において処理されているタスクあるいはスレッドの処理の優先度である処理優先度を判定する処理優先度判定ステップと、
割込み処理が可能なすべての前記プロセッサ部がタスクあるいはスレッドの処理中であって、かつ、割込み要求が発生した場合、前記プロセッサ部のうち、前記処理優先度判定ステップにおいて判定された処理優先度が最も低いタスクあるいはスレッドを処理しているプロセッサ部を選択するプロセッサ部選択ステップと、
前記プロセッサ部選択ステップにおいて選択された前記プロセッサ部に割込み要求をする割込み要求ステップと、
を含むことを特徴とする割込み処理制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ及びこのプロセッサ適用される割込み処理制御方法に係り、特に複数のプロセッサを含んで複数のタスクやスレッドを並列して実行可能なプロセッサ及びこのプロセッサ適用される割込み処理制御方法に関する。
【背景技術】
【０００２】
近年、家電やプリンタ、携帯電話といった多くの機器に組込みシステムと呼ばれるコンピュータシステムが搭載されている。組込みシステムは、汎用的なコンピュータと異なり、要求される機能や用途が極めて限定されたシステムである。また、このような組込みシステムには、システムの機能や用途に特化されたＯＳ（Operating System）が必要になる。
【０００３】
このような組込みシステムに適用されるプロセッサには、小型でありながら高い動作速度が要求されるものがある。このため、組込みシステムに使用されるプロセッサは、シングルプロセッサから並列処理が可能なマルチプロセッサタイプのプロセッサに移行しつつある。マルチプロセッサは、小型、応答性の高さばかりでなく、低クロック、低消費電力といった特性を有し、組込みシステムに適した構成である。
【０００４】
また、特にマルチスレッドプロセッサは、密結合型のアーキテクチャを採用したことによって回路規模が小型でありながら高い性能を有する点で組込みシステムに適したプロセッサである。
ところで、小型のプロセッサを用いる組込みシステムでは、プロセッサでタスクやスレッド（本実施形態では以降タスクに統一する）が処理されているとき、このタスクをいったん停止して代わりに非タスク処理の実行を要求する割込み要求が比較的頻繁に発生する。マルチプロセッサにおいて割込み要求されたタスクの処理を効率化する従来技術としては、例えば、特許文献１、特許文献２が掲げられる。
【０００５】
特許文献１に記載された従来技術は、複数のプロセッサを備えたマルチプロセッサにおいて、各プロセッサと一対一に対応するプロセッサ割込みコントローラを設けている。そして、各プロセッサ割込みコントローラによって各プロセッサに要求された割込み処理を分配している。また、特許文献２に記載された従来技術は、割込みコントローラとして機能するＣＯＰＩＣあるいはＬＯＰＩＣとプロセッサとを一体化してバス・エージェントとして扱っている。このような特許文献２は、特許文献１と同様に、割込みコントローラが各プロセッサと一対一に対応するものである。
【特許文献１】特開平６−３２４４９６号公報
【特許文献２】特開平１０−９７５０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記した従来技術は、いずれも割込みコントローラごとにプロセッサが設けられていて、このためにマルチプロセッサの回路規模が大きくなって小型化に改善の余地を有するものといわざるを得なかった。
また、上記した従来技術の他、複数あるプロセッサのうちの１つだけを割込み処理が可能なプロセッサとし、割込みコントローラを１つ設ける従来技術もある。しかし、このような従来技術は、頻繁な割込み要求が発生した場合には充分な動作速度が得られないという欠点がある。さらに、１つのプロセッサだけを割込み処理が可能なプロセッサとした場合、先に処理すべき割込み処理、後で処理してもよい割込み処理のいずれもが１つのプロセッサ上で競合し、プロセッサの実質的な処理効率を低下させるおそれがある。
【０００７】
本発明は、上記した点に鑑みてなされたものであり、回路規模が小さいためにより小型であり、かつ頻繁な割込みに対応して充分高い動作速度で動作可能なプロセッサ及びこのプロセッサにおいて適用される割込み処理制御方法を提供することを目的とする。さらに、本発明は、割込み処理の実質的な処理効率がより高いプロセッサ及びこのプロセッサにおいて適用される割込み処理制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
以上の課題を解決するため、本発明のプロセッサは、タスクあるいはスレッドの処理中に該処理をいったん停止して他の処理を実行する割込み処理が可能なプロセッサ部を複数含むプロセッサであって、前記プロセッサ部に割込み処理を要求する割込み要求を受け付け、該割込み要求によって要求された割込み処理を複数の前記プロセッサ部のうちのいずれかに実行させる一の割込み制御手段を備え、前記割込み制御手段は、前記プロセッサ部の各々において処理されているタスクあるいはスレッドの処理の優先度である処理優先度を判定する処理優先度判定手段と、割込み処理が可能なすべての前記プロセッサ部がタスクあるいはスレッドの処理中であって、かつ、割込み要求が発生した場合、前記プロセッサ部のうち、前記処理優先度判定手段によって判定された処理優先度が最も低いタスクあるいはスレッドを処理しているプロセッサ部を選択するプロセッサ部選択手段と、前記プロセッサ部選択手段よって選択された前記プロセッサ部に対して割込み要求をする割込み要求手段と、を備えることを特徴とする。
【０００９】
このような発明によれば、１つの割込み制御手段を使って割込み要求を受け付け、要求された割込み処理を複数のプロセッサ部のうちのいずれかに実行させることができる。そして、割込み制御手段が、プロセッサ部の各々において処理されているタスクあるいはスレッドの処理の優先度である処理優先度を判定する。そして、割込み処理が可能なすべてのプロセッサ部がタスクあるいはスレッドの処理中であって、かつ、割込み要求が発生した場合、プロセッサ部のうちの処理優先度が最も低いタスクあるいはスレッドを処理しているプロセッサ部を選択し、選択されたプロセッサ部に対して割込み要求をすることができる。
【００１０】
このため、割込み制御手段が統括的に複数のプロセッサ部の割込み処理を制御することができるので、回路規模が小さいためにより小型であり、かつ頻繁な割込みに対応して充分高い動作速度で動作可能なプロセッサを提供することができる。さらに、優先度の高いタスク等の処理が割込み処理のため中断することをなくし、割込み処理の実質的な処理効率がより高いプロセッを提供することができる。
【００１１】
また、本発明のプロセッサは、割込み要求の優先度である割込優先度を判定する割込優先度判定手段をさらに備え、割込み処理が可能なすべての前記プロセッサ部が割込み処理中であって、かつ、割込み要求が発生した場合、前記プロセッサ部選択手段は、前記プロセッサ部において最も低く、かつ、発生した割込み要求の割込優先度よりも低い割込優先度を持つ割込み処理を実行しているプロセッサ部を選択し、前記割込み要求手段は、前記プロセッサ部選択手段よって選択された前記プロセッサ部に対して割込み要求をすることを特徴とする。
【００１２】
このような発明によれば、割込優先度判定手段が、割込み処理が可能なすべてのプロセッサ部が割込み処理中であって、かつ、割込み要求が発生した場合、複数のプロセッサ部において最も低く、かつ、発生した割込み要求の割込優先度よりも低い割込優先度を持つ割込み処理を実行しているプロセッサ部を選択する。そして、割込み要求手段が、選択されたプロセッサ部に対して割込み要求をすることができる。
【００１３】
このため、優先度の高い割込み処理が他の割込み処理が多重割込みすることによって中断することをなくし、割込み処理の実質的な処理効率がより高いプロセッを提供することができる。
また、本発明のプロセッサは、割込み処理が終了した場合、割込み要求によって処理が中断しているタスクあるいはスレッドを、タスクあるいはスレッドの処理優先度にしたがって割込み処理が終了した前記プロセッサ部に実行させる処理復帰手段をさらに備えることを特徴とする。
【００１４】
このような発明によれば、割込みの終了後、中断していたタスク等の処理を優先順位にしたがって再開することができる。このため、優先度の高いタスク等が、優先順位のより低いタスク等によって処理を待たされることがなく、実質的な処理効率がより高いプロセッサを提供することができる。
また、本発明の割込み処理制御方法は、タスクあるいはスレッドの処理中に該処理をいったん停止して他の処理を実行する割込み処理が可能なプロセッサ部を複数含み、前記プロセッサ部に割込み処理を要求する割込み要求を受け付け、該割込み要求によって要求された割込み処理を複数の前記プロセッサ部のうちのいずれかに実行させる一の割込み制御手段を備えたプロセッサに適用される割込み処理制御方法であって、前記プロセッサ部の各々において処理されているタスクあるいはスレッドの処理の優先度である処理優先度を判定する処理優先度判定ステップと、割込み処理が可能なすべての前記プロセッサ部がタスクあるいはスレッドの処理中であって、かつ、割込み要求が発生した場合、前記プロセッサ部のうち、前記処理優先度判定ステップにおいて判定された処理優先度が最も低いタスクあるいはスレッドを処理しているプロセッサ部を選択するプロセッサ部選択ステップと、前記プロセッサ部選択ステップにおいて選択された前記プロセッサ部に割込み要求をする割込み要求ステップと、を含むことを特徴とする。
【００１５】
このような発明によれば、１つの割込み制御手段を使って割込み要求を受け付け、要求された割込み処理を複数のプロセッサ部のうちのいずれかに実行させるプロセッサにおいて、割込み処理が可能なすべてのプロセッサ部がタスクあるいはスレッドの処理中であって、かつ、割込み要求が発生した場合、プロセッサ部のうちの処理優先度が最も低いタスクあるいはスレッドを処理しているプロセッサ部を選択し、選択されたプロセッサ部に対して割込み要求をすることができる。
【００１６】
このため、割込み制御手段が統括的に複数のプロセッサ部の割込み処理を制御することができるので、プロセッサの構成をより小型化でき、かつ頻繁な割込みに対応して充分高い動作速度で動作させることができる割込み制御方法を提供することができる。さらに、プロセッサを優先度の高いタスク等の処理が割込み処理のため中断することをなくし、プロセッサにおける割込み処理の実質的な処理効率をより高めることができる割込み制御方法を提供することができる。
【発明を実施するための最良の形態】
【００１７】
以下、図を参照して本発明に係るプロセッサ及び割込み処理制御方法をコンピュータに実行させるためのプログラムの一実施の形態を説明する。なお、本実施形態は、本実施形態のプロセッサが例えば携帯電話に適用される組込みシステムに採用された例を示すものである。図１は、本実施形態のプロセッサ１を含む携帯電話の構成を例示した図である。
携帯電話は、プロセッサ１に無線部５０、ＩｒＤＡ部６０、Ａｕｄｉｏ部７０、Ｔｉｍｅｒ８０、ＵＳＢＩ／Ｆ部９０、キー操作部１００、ＬＣＤ１１０、Ｃａｍｅｒａ部１２０がプロセッサ１に接続されてなる。このような構成にあっては、プロセッサ１に接続された無線部５０、ＩｒＤＡ部６０等はプロセッサ１の周辺装置となり、必要に応じてプロセッサ１に割込み信号を出力して割込み要求する。
【００１８】
無線部５０は、携帯電話と携帯電話システムの基地局との間における無線通信を行うものである。無線部５０は、例えば基地局から携帯電話に対する着信を示す信号を受信した場合、プロセッサ１に対して割込み信号を出力し、着信信号の受信を通知する。また、無線部５０は、プロセッサ１から発信を指示する信号が入力された場合、基地局に対して発信要求を示す信号を送信する。
【００１９】
ＩｒＤＡ部６０は、ＩｒＤＡに基づく通信を行うインターフェースであり、外部からＩｒＤＡに基づく無線信号を受信した場合、プロセッサ１に対して割込み信号を出力し、ＩｒＤＡ信号の受信を通知する。
オーディオ部７０は、携帯電話において入出力される音声信号を処理するものであり、通話におけるマイク及びスピーカを用いた音声の入出力、あるいは、音楽等の再生といった処理を行う。
【００２０】
タイマ８０は、携帯電話のクロック信号を基に時間を計測し、例えば１ｍｓ毎等、所定時間毎にプロセッサ１に対して割込み信号を出力する。
ＵＳＢインターフェース部９０は、ＵＳＢによる通信を行うためのインターフェースであり、ＵＳＢケーブルが接続された場合やＵＳＢケーブルから信号を受信した場合等に、プロセッサ１に対して割込み信号を出力する。
【００２１】
キー操作部１００は、携帯電話に対する指示入力を行うための各種キーを備えており、これらのキーが押下された場合に、プロセッサ１に対する割込み信号を出力する。
ＬＣＤ１１０は、プロセッサ１によって入力された文字あるいは画像等の描画命令に従って、所定画面を表示する表示装置である。
カメラ部１２０は、ＣＣＤ（Charge Coupled Devices）あるいはＣＭＯＳ（Complementary Metal Oxide Semiconductor）センサ等の撮像素子を備え、画像を撮影した場合に、プロセッサ１に対して割込み信号を出力する。
【００２２】
また、プロセッサ１には、プロセッサ１によってなされる処理に使用されるメモリ３０、フラッシュＲＯＭ２０、バッファ４０が接続されている。
フラッシュＲＯＭ２０は、携帯電話において実行されるオペレーティングシステムプログラム、及び、各種アプリケーションプログラムを記憶している。
メモリ３０は、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＲＡＭ（Static Random Access Memory）あるいはＳＤＲＡＭ（Synchronous DRAM）といった半導体メモリによって構成され、プロセッサ１が処理を実行する際にワークエリアを形成すると共に、その処理結果を記憶する。
【００２３】
バッファ４０は、外部から携帯電話に入力されたデータあるいは携帯電話において発生されたデータを一時的に保持するバッファである。
図２は、図１に示したプロセッサ１の内部構成を示すブロック図である。図示したプロセッサ１は、タスクあるいはスレッド（タスクに統一）を処理し、処理中のタスクをいったん停止して他の処理を実行する割込み処理が可能なプロセッサ部を複数含むプロセッサである。
【００２４】
プロセッサ部とは、図２に示したプロセッサ全体を構成する部分をなす複数のプロセッサの各々をいうものであって、以降、プロセッサユニットと記す。また、複数のプロセッサユニットの各々をプロセッサユニット２０２ａ、２０２ｂ、２０２ｃ、２０２ｄの符号を付して区別する。また、本実施形態では、プロセッサユニット２０２ａ〜２０２ｄのすべてが割込み処理が可能なプロセッサユニットである。
【００２５】
また、プロセッサ１は、プロセッサユニット２０２ａ〜２０２ｄに割込み処理を要求する割込み要求を受け付け、この割込み要求によって要求された割込み処理を複数のプロセッサユニット２０２ａ〜２０２ｄのうちのいずれかに指示する一の外部割込み制御部２０１を備えている。外部割込み制御部２０１は、プロセッサユニット２０２ａ〜２０２ｄの各々において処理されているタスクの処理の優先度である処理優先度を判定する制御管理部２１２、プロセッサユニット２０２ａ〜２０２ｄがタスクの処理中であって、かつ、割込み要求が発生した場合、プロセッサユニット２０２ａ〜２０２ｄのうち、処理優先度が最も低いタスクを処理しているプロセッサユニットを選択し、このプロセッサユニットに割込み要求をする制御管理部２１２及び割込処理プロセッサ選択部２０５を備えている。
【００２６】
さらに、外部割込み制御部２０１は、全体割込許可制御部２０３、割込ベクタ２０６、全体割込優先度制御部２０４を備えている。全体割込許可制御部２０３は、プロセッサユニット２０２ａ〜２０２ｄ全体に割込み許可がなされているか否かを判定し、この可否をフラグのオン、オフで示すものである。また、割込ベクタ２０６は、割込み処理の実行のため、プロセッサユニットが参照すべきメモリ３０のアドレスを示すものである。
【００２７】
また、全体割込優先度制御部２０４は、後述するプロセッサユニット２０２ａ〜２０２ｄのすべてで割込み処理がなされていて、さらに割込み要求が発生した場合に割込優先度を判定する優先度判定手段として機能する構成である。
また、メモリ３０には、組込みシステムとして構成された携帯電話に最適化されたＯＳ（Operating System）が記憶されている。このＯＳは、プロセッサユニット２０２ａ〜２０２ｄのタスク状態を検出する制御管理部２１２として機能する。つまり、制御管理部２１２は、通常ＯＳの機能に含まれ、ＯＳを記憶したメモリ３０に存在することになる。そして、制御管理部２１２（ＯＳ）は、メモリ３０から読み出され、プロセッサユニット２０２a〜d上で動作する。
【００２８】
なお、プロセッサユニット２０２ａ〜２０２ｄは、タスクを処理している状態（Ｒｕｎ）、タスクの処理が可能な状態（Ｒｅａｄｙ）、指示や所定の時間の経過を待って動作を停止している状態（Ｈａｌｔ）の３つのタスク状態を取り得る。
次に、プロセッサユニット２０２ａ〜２０２ｄの構成について説明する。なお、プロセッサユニット２０２ａ〜２０２ｄは、いずれも同様の構成を有している。このため、本実施形態では、プロセッサユニット２０２ａについてのみ記し、他のプロセッサユニット２０２ｂ〜２０２ｄの説明に代えるものとする。
【００２９】
プロセッサユニット２０２ａは、ＰＳＲ（Program Status Register）２０８、ＰＣ（Program Counter）２０９、ＥＰＳＲ（Exception Status Register）２１１、ＥＰＣ(Exception Program Counter)２１０を備えている。ＰＳＲ２０８は、プロセッサユニット２０２ａのステータス（割込みの可否、演算結果のフラグといった動作状態等）を記憶するレジスタである。また、ＰＣ２０９は、プロセッサユニット２０２ａにおけるプログラムの進行状況を格納しておくカウンタである。
【００３０】
ＰＳＲ２０８及びＰＣ２０９の内容は、例外的な処理（割込み処理を含む）が発生したとき、メモリ３０のスタック領域に退避される。
割込み処理用ステータスレジスタＥＰＳＲ２１１は、単位プロセッサにおいて割込み処理が実行される場合に、割込み処理プログラムを起動する直前のステータスレジスタの状態を退避（複製）するレジスタである。割込み処理プログラムにおいて、必要に応じて割込み処理用ステータスレジスタＥＰＳＲ２１１をスタック領域に退避することも可能である。
【００３１】
割込み処理用プログラムカウンタＥＰＣ２１０は、単位プロセッサにおいて割込み処理が実行される場合に、割込み処理プログラムを起動する直前のプログラムカウンタのアドレスを退避（複製）するレジスタである。割込み処理プログラムにおいて、必要に応じて割込み処理用プログラムカウンタＥＰＣ２１０をスタック領域に退避することも可能である。
【００３２】
また、図２においては、図１に示した無線部５０やＩｒＤＡ部６０等を周辺装置２０７ａ、２０７ｂ、２０７ｃ、２０７ｄとして示す。プロセッサ１は、ＯＳにより生成されたタスクを処理をしていて、周辺装置２０７ａ〜２０７ｄから割込み信号が入力されたときに割込み要求に対応する割込みハンドラを起動する。ＯＳによって生成されたタスクは、ＯＳのタスクスケジューラによって管理され、ＯＳのサービスコールによって呼び出すことができる。一方、割込み処理は、タスクスケジューラによって管理されない処理（非タスク処理）である。
【００３３】
図３は、プロセッサユニット２０２ａ〜dの別の一構成を示した図である。プロセッサユニット２０２ａ〜ｄは、フェッチ部３０１と、デコード部３０３と、ＡＬＵ（Arithmetic and Logical Unit）１０３と、レジスタバンクと含んで構成されている。フェッチ部３０１は、ＰＣ２０９あるいはＥＰＣ２１０が示すメモリアドレスから命令コードを読み出し、デコード部３０３に出力する。
【００３４】
デコード部３０３は、フェッチ部３０１によって入力された命令コードをデコードし、デコード結果（命令内容及びソースレジスタ、デスティネーションレジスタのアドレス等）をＡＬＵ３０５に出力する。
ＡＬＵ３０５は、デコード部３０３によって入力されたデコード結果に応じて、所定の演算を行い、演算結果をバンク分けされたレジスタであるレジスタバンク３０７に書き込む、あるいは分岐命令等の演算結果であるブランチ先のアドレスをプログラム制御部１０５に出力する。
【００３５】
レジスタバンク３０７は、ロード命令によってメモリ３０から読み出されたデータや、ＡＬＵ３０５の演算結果であるデータを記憶するレジスタ群である。
フェッチ部３０１とレジスタバンク３０７はプロセッサユニットごと独立に用いられているが、デコード部３０３、ALU３０５は、プロセッサユニット共通に使用する。デコード部３０３、ALU３０５を共有することにより、回路規模を削減できる。
【００３６】
以上述べた構成は、以下のように動作する。すなわち、周辺装置２０７ａ〜２０７ｄは、各々割込み信号０〜３を外部割込み制御部２０１に出力し、タスクの処理を要求する。本実施形態のプロセッサ１は、プロセッサユニット２０２ａ〜２０２ｄのすべてを割込み処理が可能に構成し、プロセッサユニット２０２ａ〜２０２ｄのいずれかが割込み処理を実行する。
【００３７】
外部割込み制御部２０１では、全体割込許可制御部２０３が、周辺装置２０７ａ〜２０７ｄのすべてに対して割込みが許可される状態であるか否かを示すフラグを立てて示している。要求された割込みがマスクされている場合、外部割込み制御部２０１は、割込み不可のフラグを立ててこの割込み要求を待機させる。制御管理部２１２（実体はＯＳ、本実施形態の構成にかかるＯＳの機能を制御管理部として示す）は、このフラグを参照し、割込みが許可されることを示すフラグがたっている場合にはプロセッサ１に対する割込みを許可する。
【００３８】
制御管理部２１２は、プロセッサユニット２０２ａ〜２０２ｄの動作状態を常に監視している。そして、次に割込みが要求された（割込み要求が発生した）場合に割込んだ処理を実行するのに充てるべきプロセッサユニットの情報を割込処理プロセッサ選択部２０５に書き込んでいる。具体的には、制御管理部２１２は、先ず、Ｈａｌｔ状態のプロセッサユニットを検出する。そして、プロセッサユニット２０２ａ〜２０２ｄのいずれかがＨａｌｔ状態であることが検出された場合、検出されたＨａｌｔ状態にあるプロセッサユニットに対して割込処理プロセッサ選択部２０５の割込み許可フラグを許可状態にし、割込み要求を受け付け可能とする。
【００３９】
また、プロセッサユニット２０２ａ〜２０２ｄのいずれもがＲｕｎ状態あるいはＲｕｎの実行に備えるＲｅａｄｙ状態である場合、制御管理部２１２は、処理されているタスクの優先度を判定し、優先度が最も低いタスクを処理しているプロセッサユニットに対して割込処理プロセッサ選択部２０５の割込み許可フラグを許可状態にし、割込み要求を受付可能とする。
【００４０】
周辺装置２０７ａ〜２０７ｄから割込み信号が入力されると、全体割込み許可制御部２０１は、割込み処理プロセッサ選択部２０５が示しているプロセッサユニット2０２ａ〜２０２ｄに対し、割込み要求を発生させる。
この動作を、図４を用いて説明する。図４では、プロセッサユニット２０２ａがタスクａを処理し、プロセッサユニット２０２ｂがタスクｂを処理している。また、プロセッサユニット２０２ｃがタスクｃを、プロセッサユニット２０２ｄがタスクｄを処理している。なお、タスクａないしタスクｄの処理の優先順位は、以下のとおりである。
【００４１】
タスクｄ＞タスクｃ＞タスクｂ＞タスクａ
図４に示した例では、プロセッサユニット２０２ａ〜２０２ｄのうちのプロセッサユニット２０２ａが、最も優先度の低いタスクａを処理している。このため、割込処理プロセッサ選択部２０５にはプロセッサユニット２０２ａに係る情報が書き込まれている。制御管理部２１２は、この情報を参照してプロセッサユニット２０２ａで処理されているタスクａをいったん停止し、処理中であったタスクａの状況や内容（コンテキスト）をメモリ３０に退避させる。
【００４２】
このとき、ＰＳＲ２０８、ＰＣ２０９に書き込まれていた内容もメモリ３０のスタック領域に退避される。そして、制御管理部２１２は、コンテキスト退避後のプロセッサユニット２０２ａで発生した割込み要求にかかる割込み処理Ａを実行させる。（図４（ａ））。なお、割込み処理Ａの実行にあたっては、割込ベクタ２０６に保存されているメモリ３０のアドレスが参照され、割込み処理に必要なプログラム等が読み出される。
【００４３】
なお、制御管理部２１２は、次回発生させるプロセッサユニットの情報を割込処理プロセッサ選択部２０５に書き込む。図４の例では、Ｈａｌｔ状態のプロセッサユニットがなく、プロセッサユニット２０２ｂが、現時点で最も優先度の低いタスクｂを処理しているので、割込処理プロセッサ選択部２０５には、プロセッサユニット２０２ｂを割込み許可状態にする情報を書込む。
【００４４】
タスクａに対する割込みの後、さらに割込み要求が発生した場合、割込み処理プロセッサ選択部２０５において、プロセッサユニット２０２ｂが割込み許可状態になっているので、プロセッサユニット２０２ｂに割込みが発生する。制御管理部２１２は、タスクｂのコンテキストをメモリ３０に退避させ、発生した割込み要求にかかる割込み処理Ｂを実行させる。
【００４５】
さらに、本実施形態では、制御管理部２１２が、割込み処理が終了した場合、割込み要求によって処理が中断しているタスクを、タスクの処理優先度にしたがって割込み処理が終了したプロセッサユニットに実行させている。このような制御管理部２１２は、本実施形態において、処理復帰手段として機能するものである。
すなわち、図４に示した例では、図中に示すタイミングｔ１で割込み処理Ｂが終了する。タイミングｔ１は、割込み処理Ａが終了する以前であって、プロセッサユニット２０２ｂは、タイミングｔ１から割込み処理Ａが終了するタイミングｔ２までＨａｌｔ状態にある唯一のプロセッサユニットとなる。このような場合、本実施形態では、制御管理部２１２が、メモリ３０のスタック領域から処理優先度が最も高いタスクｅのコンテキストを復帰させ、プロセッサユニット２０２ｂにタスクｅを処理させる。
【００４６】
また、タイミングｔ２で割込み処理Ａが終了し、プロセッサユニット２０２ａがＨａｌｔ状態になったとき、制御管理部２１２は、割込み処理Ｂによって中断されたタスクｂの優先度が処理を待っているタスクの処理優先度が最も高いことから、プロセッサユニット２０２ａにタスクｂのコンテキストを復帰させ、プロセッサユニット２０２ａに処理させる。
【００４７】
以上述べた動作によれば、処理優先度の低いタスクから割込み処理を実行させるので、優先度の高いタスクの処理が割込み要求によって遅れることがなく、割込み処理によるタスク処理の効率低下を実質的に緩和することができる。
また、以上述べた動作によれば、割込み処理後、単に割込みが発生する以前に処理されていたタスクをプロセッサユニットに再開させるのではなく、より優先度の高いタスクを優先してプロセッサユニットに復帰させている。このため、割込み処理によるタスク処理の効率低下緩和の効果をより高めることができる。
【００４８】
次に、本実施形態において、プロセッサユニット２０２ａ〜２０２ｄのすべてで割込み処理がなされている場合、さらに割込み要求が発生した場合の割込み処理である多重割込みについて説明する。
多重割込みの場合、本実施形態では、制御管理部２１２が、プロセッサユニット２０２ａ〜２０２ｄにおいて最も低く、かつ、発生した割込み要求の割込優先度よりも低い割込優先度を持つ割込み処理を実行しているプロセッサユニットを選択する。
【００４９】
すなわち、本実施形態では、プロセッサユニット２０２ａ〜２０２ｄの一部が多重割込み処理をしていて、他のプロセッサユニットが図４に示した通常の割込み処理をしている場合を想定する。このような条件下では、通常の割込みによって実行されている割込み処理と、多重割込みによって実行されている割込み処理とで割込優先度が等しいなら、通常の割込み処理を実行しているプロセッサユニットを優先して次の割込み処理の実行に使用するようにしてもよい。
【００５０】
このような本実施形態によれば、１つのプロセッサユニットに割込み要求が集中することによってこのプロセッサユニットが実質的に停止し、動作効率が低下することを防ぐことができる。
図５は、多重割込み時のプロセッサユニット２０２ａ〜２０２ｄの動作を説明するための図である。
【００５１】
プロセッサユニット２０２ａは、タスクａの実行中に割込み処理Ａを実行している。さらに、プロセッサユニット２０２ａでは、割込み処理Ａが中断され、割込み処理Ｅが実行される多重割込み処理が実行されている（図５（ａ））。
また、プロセッサユニット２０２ｂはタスクｂの処理の実行中に割込み処理Ｂを実行し（図５（ｂ））、プロセッサユニット２０２ｃはタスクｃの実行中に割込み処理Ｃを実行し（図５（ｃ））、プロセッサユニット２０２ｄは、タスクｄの実行中に割込み処理Ｄを実行されている。このような動作において、各割込み処理の割込優先度は、以下のように設定している（図５（ｄ））。
【００５２】
割込み処理Ｅ＞割込み処理Ｄ＞割込み処理Ｃ＞割込み処理Ｂ＞割込み処理Ａ
また、タスクの処理優先度は、以下のように設定されている。
タスクｅ＞タスクｄ＞タスクｃ＞タスクｂ＞タスクａ
また、図中に示したα、β、γの文字は、後に述べるフローチャートの説明に利用されるものである。
【００５３】
図５に示した動作は、割込み処理の割込優先度に応じて決定されたものである。すなわち、割込み処理Ｅの割込み要求が発生する以前、プロセッサユニット２０２ａ〜２０２ｄにはそれぞれ割込み処理が１つずつ実行されていて、プロセッサユニット２０２ａは、割込優先度が最も低い割込み処理Ａを実行している。また、割込み処理によって処理が中断されている割込み処理はいずれのプロセッサユニットにおいても０つである。このような条件では、割込み処理Ｅは、プロセッサユニット２０２ａにおける割込み処理Ａを中断して実行される。
【００５４】
なお、新たな割込み処理Ｅが発生すると、全体割込優先度制御部２０４は、割込み処理Ａの割込優先度と割込み処理Ｅの割込優先度とを比較する。割込み処理Ｅの優先度は、割込み処理Ａの優先度よりも高く、割込み処理Ｅのプロセッサユニット全体に対する割込みが許可される。割込みを要求した割込み処理の割込優先度が、現在実行されている割込み処理の最低の割込優先度よりも低い場合、発生した割込み要求は拒否される。
【００５５】
以上の割込み処理の結果、プロセッサユニット２０２ａにおいてだけ多重割込処理が実行されることになる。
また、割込み処理の終了後、図７に示した多重割込み処理にあっても、図６に示した割込み処理と同様に処理優先度が高いタスクからＨａｌｔ状態になったプロセッサユニットで実行される。
【００５６】
図６ないし図９は、以上述べた本実施形態のプロセッサに割込み処理制御方法について説明するためのフローチャートである。図６は、タスクの切替え要求の処理があったとき、後の割込みに備えて制御管理部２１２が実行する処理を説明するためのフローチャートである。
タスクの切替え要求がなされると、制御管理部２１２は、切替えの後Ｈａｌｔ状態のプロセッサユニットがあるか否か判断する(ステップＳ６０１）。Ｈａｌｔ中のプロセッサがあった場合(ステップＳ６０１：Ｙｅｓ）、制御管理部２１２は、Ｈａｌｔ中のプロセッサを次の割込み発生時に割込み処理に充てられるプロセッサユニットに決定する(ステップＳ６０３）。そして、このプロセッサユニットを特定する情報を割込処理プロセッサ選択部２０５に書き込んで割込み処理プロセッサ選択部２０５を書換える(ステップＳ６０４）。
【００５７】
一方、Ｈａｌｔ状態のプロセッサユニットがない場合(ステップＳ６０１：Ｎｏ）、処理の優先度が最も低い最低優先度タスクを実行しているプロセッサユニットを検索する(ステップＳ６０２）。そして、検索の結果特定された最低優先度タスクを実行しているプロセッサユニットを特定する情報を割込処理プロセッサ選択部２０５に書き込み、割込処理プロセッサ選択部２０５を書換える(ステップＳ６０４）。
【００５８】
以上の処理により、割込処理プロセッサ選択部２０５には、タスクの切替えが発生するたびに切替え後のプロセッサユニットにおいて割込み処理を実行するプロセッサユニットの情報が書き込まれる。
図７は、割込み要求によって要求された割込み処理を説明するためのフローチャートである。
【００５９】
外部割込み制御部２０１は、周辺装置２０７ａ〜２０７ｄのいずれかから出力された割込み信号を入力すると、割込み処理を開始する。
制御管理部２１２は、今回発生した割込みがＨａｌｔ状態から遷移したか否か判定する(ステップＳ７０１)。判定の結果、プロセッサユニットがＨａｌｔ状態からの遷移でない場合(ステップＳ７０１：Ｎｏ)、割込み処理を実行する(ステップＳ７０２)。
なお、割込み処理の実行にあたっては、割込ベクタに書き込まれているプログラムの格納先アドレスが参照される。
【００６０】
ステップＳ７０１における判断で、割込み処理を実行するプロセッサユニットがＨａｌｔ状態からの遷移である場合(ステップＳ７０１：Ｙｅｓ)、このプロセッサユニットでは、実行中であったタスクにかかる情報を、ＰＣ２０９やＰＳＲ２０８からＥＰＣ２１０やＥＰＳＲ２１１へ退避させる（ステップＳ７０４）。なお、退避させるタスクにかかる情報とは、割込みの終了後、割込みによって中断されたタスクを再開するのに必要な情報を復帰させるのに必要な情報である。
【００６１】
また、割込み処理の実行後、制御管理部２１２は、割込み処理を実行したプロセッサユニットが割込みの前にＨａｌｔ状態であったか否か判断する(ステップＳ７０３)。そして、プロセッサユニットがＨａｌｔ状態でなかった場合(ステップＳ７０３：Ｎｏ)、図７に示した処理は、そのまま終了する。一方、ステップＳ７０３において、割込み処理を実行したプロセッサユニットがＨａｌｔ状態であったと判断された場合（ステップＳ７０３：Ｙｅｓ）、このプロセッサユニットでは、ＥＰＣ２１０、ＥＰＳＲ２１１に退避された情報に基づいてメモリ３０に退避された情報が、ＰＣ２０９、ＲＳＲ２０８に復帰する（ステップＳ７０５）。
【００６２】
図８（ａ）、（ｂ）は、割込み処理開始時の処理を示し、図９（ａ）、（ｂ）は、割込み処理終了時の処理を示している。なお、図８、図９に示した処理は、共に制御管理部２１２と外部割込み制御部２０１とが協働して行うものである。具体的には、割込みの許可に関する制御が全体割込許可制御部２０３によって行われる。また、割込み処理のレベルの判定が全体割込優先度制御部２０４で行われ、割込み処理に使用されるプロセッサユニットの選択は割込処理プロセッサ選択部２０５によって行われる。さらに、割込み禁止の指示は、制御管理部２１２によって行われる。
【００６３】
また、割込み処理をするプロセッサユニットが決定した後、制御管理部２１２が動作し、以降の処理を行う。
図８（ａ）に示すフローチャートは、割込み信号が周辺装置２０７ａ〜２０７ｄのいずれによって出力されたとき開始する。全体割込許可制御部２０３は、外部割込み制御部２０１に対する割込みが許可されているか否かを判断する（ステップＳ８０１）。そして、割込み許可されていない場合（ステップＳ８０１：Ｎｏ）、許可がなされるまで待機する。
【００６４】
また、ステップＳ８０１において、割込みが許可されていると判断された場合（ステップＳ８０１：Ｙｅｓ）、全体割込優先度制御部２０４は、現在処理されている割込み処理（現割込み処理）の割込みレベル（現Ｌｅｖｅｌ割込み）に、今回要求された割込み処理（新割込み処理）の割込みレベル（新規割込みＬｅｖｅｌ）よりも低いものがあるか否か判断する（ステップＳ８０２）。この結果、現在割込み処理の割込みレベルがすべて新割込み処理の割込みレベルよりも高い場合（ステップＳ８０２：Ｎｏ）、要求された割込み処理を待機させる。
【００６５】
また、新割込み処理の割込みレベルが、現割込み処理の割込みレベルのいずれかよりも高い場合（ステップＳ８０２：Ｙｅｓ）、外部割込み制御部２０１は、割込処理プロセッサ選択部２０５に書き込まれている情報に基づき該当するプロセッサユニットに対し割込みの起動を行う（ステップＳ８０３）と共に、割込み開始の処理のため、新たな割込みを禁止する割込み禁止フラグをオンにする（ステップＳ８０４）。
【００６６】
図８（ｂ）は、ステップＳ８０５の処理を説明するためのフローチャートである。ステップＳ８０５では、制御管理部２１２が、Ｈａｌｔ状態にあるプロセッサユニットがあるか否か判断する（ステップＳ８１０）。Ｈａｌｔ状態にあるプロセッサユニットがある場合（ステップＳ８１０：Ｙｅｓ）、ステップＳ８０５に示した処理は終了する。そして、ステップＳ８０６では、Ｈａｌｔ状態にあるプロセッサユニットが割込み処理を実行するプロセッサユニットに決定される（ステップＳ８０６）。
【００６７】
また、ステップＳ８１０において、Ｈａｌｔ状態のプロセッサユニットがないと判断された場合（ステップＳ８１０：Ｎｏ）、制御管理部２１２は、すべてのプロセッサユニットにおいて割込み処理がなされているか否か判断する（ステップＳ８１１）。割込み処理を実行していないプロセッサユニットがある場合(ステップＳ８１１：Ｎｏ)、
タスクを処理しているプロセッサユニットのうちの処理優先度が最も低いタスクを処理しているプロセッサユニットを検索し（ステップＳ８１２）、検出されたプロセッサユニットが割込み処理を実行するプロセッサユニットに決定される（ステップＳ８０６）。
【００６８】
また、ステップＳ８１１において、すべてのプロセッサユニットが割込み処理を実行していて、新割込み処理がプロセッサユニットの数ｎよりも１つ多いｎ+１番目の割込み処理であった場合（ステップＳ８１１：Ｙｅｓ）、制御管理部２１２は、割込処理プロセッサ選択部を検索する（ステップＳ８１３）。そして、割込優先度が最も低い割込み処理を実行しているプロセッサユニットを検出する。ステップＳ８０６では、検出されたプロセッサユニットが、割込み処理を実行するプロセッサユニットに決定される（ステップＳ８０６）。
【００６９】
以上述べた図８に示すフローチャートの終了後、本実施形態のプロセッサは、先に示した図７のフローチャートの処理を実行して要求された割込み処理を実行する。
図９（ａ）に示すフローチャートは、図７のフローチャートに示した割込み処理の後に開始される。制御管理部２１２は、（全体割込許可制御部２０３に対し）先ず、割込み終了の処理のため、新たな割込みを禁止する割込み禁止フラグをオンにする（ステップＳ９０１）。制御管理部２１２は、終了処理の対象となっている割込み処理が多重割込みの処理であるか否か判断する（ステップＳ９０２）。この結果、この割込み処理が多重割込みでない場合（ステップＳ９０２：Ｎｏ）、割込みによって待機しているＲｅａｄｙ状態のタスクがあるか否か判断する（ステップＳ９０３）。
【００７０】
ステップＳ９０３において、Ｒｅａｄｙ状態のタスクがないと判断された場合（ステップＳ９０３：Ｎｏ）、割込み処理を終了したプロセッサユニットがＨａｌｔ状態であるとし、この情報によって割込処理プロセッサ選択部２０５が書換えられる（ステップＳ９０４）。制御管理部２１２は、ステップＳ９０１でオンされた割込み禁止フラグをオフにする（ステップＳ９０５）。割込み処理を終了したプロセッサユニットは、Ｈａｌｔ状態に遷移する（（ステップＳ９０６）図５（ｃ）にγで示す）。
【００７１】
また、ステップＳ９０２において、終了処理の対象となる割込み処理が多重割込みであると判断された場合（ステップＳ９０２：Ｙｅｓ）、次の割込み処理を実行するプロセッサユニットを選択するための選択処理を実行する（ステップＳ９１０）。
図９（ｂ）は、ステップＳ９１０の処理を説明するためのフローチャートである。ステップＳ９１０では、制御管理部２１２が、Ｈａｌｔ状態にあるプロセッサがあるか否か判断する（ステップＳ９２０）。Ｈａｌｔ状態にあるプロセッサユニットがある場合（ステップＳ９２０：Ｙｅｓ）、ステップＳ９１０に示した処理は終了する。ステップＳ９２１では、Ｈａｌｔ状態にあるプロセッサが次の割込み処理を実行するプロセッサユニットであるとして割込処理プロセッサ選択部２０５が書換えられる（ステップＳ８０６）。
【００７２】
また、ステップＳ９２０において、Ｈａｌｔ状態のプロセッサユニットがないと判断された場合（ステップＳ９２０：Ｎｏ）、さらに制御管理部２１２が、すべてのプロセッサユニットにおいて割込み処理がなされているか否か判断する（ステップＳ９２２）。割込み処理を実行していないプロセッサユニットがある場合(ステップＳ９２２：Ｎｏ)、制御管理部２１２が最も優先度が低いタスクを実行しているプロセッサユニットを検索する（ステップＳ９２３）。この結果、割込み処理をしていないプロセッサユニット、つまりタスクを処理しているプロセッサユニットのうちの処理優先度が最も低いタスクを処理しているプロセッサユニットが検出される。ステップＳ９２１では、割込処理プロセッサ選択部２０５が書換えられ、検出されたプロセッサユニットが次の割込み処理を実行するプロセッサユニットに設定される（ステップＳ９２１）。
【００７３】
また、ステップＳ９２２において、すべてのプロセッサユニットが割込み処理を実行している場合（ステップＳ９２２：Ｙｅｓ）、割込優先度が最も低い割込み処理を実行している（多重割込みの実行前に実行されていた割込み処理を含む）プロセッサユニットが検索される（Ｓ９２４）。ステップＳ９２１では、割込処理プロセッサ選択部２０５が検索結果に基づいて書換えられ、検出されたプロセッサユニットが次の割込み処理を実行するプロセッサユニットに設定される（ステップＳ９２１）。
【００７４】
割込処理プロセッサ選択部２０５の書換え後、は、ステップＳ９０１でオンされた割込み禁止フラグをオフにする（ステップＳ９１１）。割込み処理を終了したプロセッサユニットは、多重割込みの前に処理されていた割込み処理を実行する（（ステップＳ９１２）図５（ａ）にαで示す）。
また、ステップＳ９０３において、Ｒｅａｄｙ状態のタスクがあると判断された場合（ステップＳ９０７：Ｙｅｓ）、図９（ｂ）に示した処理によって割込処理プロセッサ選択部２０５を書換える処理が実行される（ステップＳ９０７）。割込処理プロセッサ選択部２０５の書換え後、制御管理部２１２は、ステップＳ９０１でオンされた割込み禁止フラグをオフにする（ステップＳ９０８）。割込み処理を終了したプロセッサユニットは、Ｒｅａｄｙ状態にあるタスクのうち、処理優先度が最も高いタスクの処理を実行する（（ステップＳ９０９）図５（ａ）にβで示す）。
【００７５】
以上述べた本実施形態のプロセッサ及び割込み処理制御方法は、外部割込み制御部２０１が統括的に複数のプロセッサユニット２０２ａ〜２０２ｄの割込み処理を制御することができる。このため、プロセッサユニット２０２ａ〜２０２ｄに各々に対応する複数の割込コントローラ等を設ける従来技術よりもプロセッサを小型化するのに有利である。また、複数のプロセッサユニットを割込み処理に使用することができるので、頻繁な割込みに対応して充分高い動作速度で動作可能である。
【００７６】
さらに、優先度の高いタスク等の処理が割込み処理のため中断することをなくし、プロセッサの割込み処理の実質的な処理効率をより高めることができる。
また、本実施形態は、割込み処理が可能なすべてのプロセッサユニットがタスクの割込み処理中であるとき、さらに割込み要求が発生した場合、複数のプロセッサユニット中最も低く、かつ、発生した割込み要求よりも低い割込優先度を持つ割込み処理を実行しているプロセッサユニットに対して割込み要求をする。このため、優先度の高い割込み処理に他の割込み処理が多重割込みすることによって優先度の高い割込み処理が中断することをなくし、割込み処理の実質的な処理効率を高めることができる。
【００７７】
また、本実施形態では、通常の割込みによって実行されている割込み処理と、多重割込みによって実行されている割込み処理とで割込優先度が等しいなら、通常の割込み処理を実行しているプロセッサユニットを優先して次の割込み処理の実行に使用するようにしてもよい。このようにすれば、１つのプロセッサユニットに割込み要求が集中することによってこのプロセッサユニットが実質的に停止し、動作効率が低下することを防ぐことができる。
【００７８】
また、本実施形態は、割込み処理が終了した場合、割込み要求によって処理が中断しているタスクを処理優先度にしたがって割込み処理が終了したプロセッサユニットに実行させる。このため、優先度の高いタスク等が、優先順位のより低いタスク等によって処理を待たされることがなく、プロセッサの実質的な処理効率をより高めることができる。
なお、本発明は、以上述べた構成に限定されるものではない。例えば、本実施形態のプロセッサは、図３に示したプロセッサユニットを備える構成に限定されるものでなく、タスクを複数並列に実行できるマルチタイプのプロセッサシステムであれば他の構成を採用しても良い。
【００７９】
図１０は、本発明の適用対象となる他の構成の一例としてマルチプロセッサを示した図である。図１０に示したマルチプロセッサは、１チップ上に複数のプロセッサコアが実装され、プロセッサの構成要素の少なくとも一部をこれら複数のプロセッサコアが共用する形態のマルチプロセッサ（いわゆる密結合型のマルチタスクプロセッサ）である。このようなマルチプロセッサは、本実施形態に適用した場合、特に顕著な効果を得られるものである。
【００８０】
図１０に示したマルチプロセッサは、メモリ制御部及びＡＬＵを複数のプロセッサコアが共用する形態であり、それぞれのプロセッサコアにプログラムカウンタ及びステータスレジスタ等の制御用レジスタが備えられていると共に、マルチプロセッサ全体を制御するためのプログラム制御部及び制御用レジスタも別途備えられている。なお、図４に示すように、各プロセッサコアで共用するコンテキストキャッシュ等を備えても良い。
【００８１】
このような構成のマルチプロセッサの場合、各プロセッサコアが本実施の形態における単位プロセッサの機能を実現するものとなり、マルチプロセッサ全体を制御するプログラム制御部において、ハードウェアセマフォ１３の機能を実現するものとなる。
また、本実施の形態においては、メモリ３０のシステム領域に対するアクセスが競合する可能性があることに鑑み、複数の単位プロセッサがＯＳへ移行することを排他制御する例について説明したが、同一のハードウェアにアクセスする可能性がある場合、例えば、ＣＰＵとＤＭＡ（Direct Memory Access）コントローラとの間における排他制御や、アプリケーション間における排他制御（共有メモリへのアクセスあるいは共通処理の実行）等に適用することも可能である。
【図面の簡単な説明】
【００８２】
【図１】本発明の一実施形態のプロセッサを含む携帯電話の構成を例示した図である。
【図２】図１に示したプロセッサ１の内部構成を示すブロック図である。
【図３】プロセッサユニットの内部構成を示した図である。
【図４】本発明の一実施形態のプロセッサがタスクに割込みを処理する場合の動作を説明するための図である。
【図５】本発明の一実施形態のプロセッサが多重割込み処理をする場合の動作を説明するための図である。
【図６】本発明の一実施形態のプロセッサが、タスクの切替え要求の処理があったとき後の割込みに備えて実行する処理を説明するためのフローチャートである。
【図７】本発明の一実施形態のプロセッサにおける割込み処理を説明するためのフローチャートである。
【図８】本発明の一実施形態の多重割込み処理開始の処理を説明するためのフローチャートである。
【図９】本発明の一実施形態の多重割込み処理終了の処理を説明するためのフローチャートである。
【図１０】本発明の適用対象となる他の構成の一例としてマルチプロセッサを示した図である。
【符号の説明】
【００８３】
１  プロセッサ、３０  メモリ、２０１  外部割込制御部、２０２ａ〜２０２ｄ  プロセッサユニット、２０３  全体割込許可制御部、２０４  全体割込優先度制御部、２０５  割込処理プロセッサ選択部、２０６  割込ベクタ、２０７ａ〜２０７ｄ  周辺装置
２１２  制御管理部
【図１】
2006259968.tif 000003
【図２】
2006259968.tif 000004
【図３】
2006259968.tif 000005
【図４】
2006259968.tif 000006
【図５】
2006259968.tif 000007
【図６】
2006259968.tif 000008
【図７】
2006259968.tif 000009
【図８】
2006259968.tif 000010
【図９】
2006259968.tif 000011
【図１０】
2006259968.tif 000012