(57)【要約】【課題】  マルチプロセッサにおいて、優先度の高い処理を効率的に処理すること。【解決手段】  携帯電話１は、入力された割り込み処理を、タスクを実行していない単位プロセッサあるいは最も優先度の低いタスクを実行している単位プロセッサに実行させる外部割り込み制御部１１をＣＰＵ１０内に備えている。そのため、ＣＰＵ１０において、タスクの処理能力を可能な限り低下させることなく、発生した割り込み処理を実行することができる。したがって、マルチプロセッサであるＣＰＵ１０において、割り込み処理を効率的に処理することが可能となる。【選択図】  図２
2006243865.tif 000002
【特許請求の範囲】
【請求項１】
タスクあるいはスレッドを処理する複数のプロセッサ部と、入力された優先度の高い処理の実行を制御する高優先度処理制御部とを備えるプロセッサであって、
前記高優先度処理制御部は、前記複数のプロセッサ部のうち、タスクあるいはスレッドの処理を実行していないプロセッサ部または最も優先度の低いタスクあるいはスレッドの処理を実行しているプロセッサ部に、入力された優先度の高い処理を実行させることを特徴とするプロセッサ。
【請求項２】
前記高優先度処理制御部は、前記複数のプロセッサ部のうち、次に入力される優先度の高い処理を実行させる前記プロセッサ部を示す情報を記憶するプロセッサ選択部を含み、
前記複数のプロセッサ部においてタスクあるいはスレッドの切り換えが発生する毎に、タスクあるいはスレッドの処理を実行していないプロセッサ部または最も優先度の低いタスクあるいはスレッドの処理を実行している前記プロセッサ部を判定し、該プロセッサ部を示す情報を前記プロセッサ選択部に記憶させることを特徴とする請求項１記載のプロセッサ。
【請求項３】
前記優先度の高い処理には、優先度のレベルが設定されており、
前記高優先度処理制御部は、実行中である前記優先度の高い処理に設定された優先度のレベルを記憶する優先度レベル記憶部を含み、
入力された優先度の高い処理のうち、前記優先度レベル記憶部に記憶された優先度のレベルを基準として、入力された前記優先度の高い処理を選択して実行することを特徴とする請求項１または２記載のプロセッサ。
【請求項４】
前記優先度の高い所定処理は、割り込み処理であることを特徴とする請求項１から３のいずれか１項に記載のプロセッサ。
【請求項５】
タスクあるいはスレッドを処理する複数のプロセッサ部を備えるプロセッサにおける情報処理方法であって、
前記複数のプロセッサ部のうち、タスクあるいはスレッドの処理を実行していないプロセッサ部または最も優先度の低いタスクあるいはスレッドの処理を実行しているプロセッサ部に、入力された優先度の高い処理を実行させることを特徴とする情報処理方法。
【請求項６】
前記複数のプロセッサ部においてタスクあるいはスレッドの切り換えが発生する毎に、タスクあるいはスレッドの処理を実行していないプロセッサ部または最も優先度の低いタスクあるいはスレッドの処理を実行している前記プロセッサ部を判定し、前記複数のプロセッサ部のうち、次に入力される優先度の高い処理を実行させるプロセッサ部を示す情報を記憶しておくことを特徴とする情報処理方法。
【請求項７】
前記優先度の高い処理には、優先度のレベルが設定されており、
実行中である前記優先度の高い処理に設定された優先度のレベルを記憶しておき、入力された優先度の高い処理のうち、前記記憶された優先度のレベルを基準として、入力された前記優先度の高い処理を選択して実行することを特徴とする請求項５または６記載の情報処理方法。
【請求項８】
前記優先度の高い所定処理は、割り込み処理であることを特徴とする請求項５から７のいずれか１項に記載の情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクあるいはスレッドを並列的に処理するプロセッサおよびその情報処理方法に関する。
【背景技術】
【０００２】
近年、組み込み機器等において、複数のタスクあるいはスレッドを並列的に処理可能なマルチタスクプロセッサあるいはマルチスレッドプロセッサと呼ばれるプロセッサ（以下、これらを総称して「マルチプロセッサ」と言う。）が利用されつつある。
従来の携帯機器では、シングルプロセッサによる処理が行われていたところ、携帯機器の高機能化に伴い処理が複雑化し、シングルプロセッサによる処理が困難となっている。
【０００３】
そして、マルチプロセッサによる処理を行う場合、割り込み処理の発生に対して、シングルプロセッサと異なる対応を行う必要がある。例えば、割り込みの種類に応じて、複数のプロセッサのうち処理を行うプロセッサを定めておくという方法や、複数のプロセッサの全てに割り込み信号を入力し、プロセッサ間で調停を行うといった方法が考えられる。
なお、マルチプロセッサにおいて、割り込み処理をプロセッサ間で調停する方法に関する技術が、特許文献１，２に記載されている。
【０００４】
特許文献１，２に記載された技術は、マルチプロセッサシステムにおいて、プロセッサ毎に割り込みコントローラを備えておき、割り込み要求が発生した場合に、これら割り込みコントローラ間で調停を行うものである。
【特許文献１】特開平６−３２４９９６号公報
【特許文献２】特開平１０−９７５０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１，２に記載された技術においては、プロセッサ毎に割り込みコントローラを備えているため、必要なハードウェアが大型化し、配線も複雑化することから、組み込み機器に適するものではなかった。
また、上述のように、割り込みの種類に応じて、複数のプロセッサのうち処理を行うプロセッサを定めておくこととした場合、非動作状態のプロセッサが存在するにもかかわらず、割り込み処理が実行されない事態を生じ得るため、処理効率が低下する可能性があった。
【０００６】
このように、特許文献１，２に記載された技術を含め、従来の技術においては、組み込み機器に適用されたマルチプロセッサのようなハードウェアリソースの限られた環境下で、割り込み処理等、優先度の高い処理（以下、「高優先度処理」と言う。）を効率的に処理することが困難であった。
本発明の課題は、マルチプロセッサにおいて、優先度の高い処理を効率的に処理することである。
【課題を解決するための手段】
【０００７】
以上の課題を解決するため、本発明は、
タスクあるいはスレッドを処理する複数のプロセッサ部（例えば、図２の単位プロセッサＰ０〜Ｐ３）と、入力された優先度の高い処理（例えば、割り込み処理）の実行を制御する高優先度処理制御部（例えば、図２の外部割り込み制御部１１）とを備えるプロセッサであって、前記高優先度処理制御部は、前記複数のプロセッサ部のうち、タスクあるいはスレッドの処理を実行していないプロセッサ部または最も優先度の低いタスクあるいはスレッドの処理を実行しているプロセッサ部に、入力された優先度の高い処理を実行させることを特徴としている。
【０００８】
このような構成により、入力された割り込み処理等の優先度の高い処理を、タスクあるいはスレッドを実行していないプロセッサ部あるいは最も優先度の低いタスクあるいはスレッドを実行しているプロセッサ部に実行させることができる。
したがって、タスクあるいはスレッドの処理能力を可能な限り低下させることなく、優先度の高い処理を実行することができるため、マルチプロセッサにおいて、優先度の高い処理を効率的に処理することが可能となる。
【０００９】
また、前記高優先度処理制御部は、前記複数のプロセッサ部のうち、次に入力される優先度の高い処理を実行させる前記プロセッサ部を示す情報を記憶するプロセッサ選択部（例えば、図２の割り込み処理プロセッサ選択部１１ｃ）を含み、前記複数のプロセッサ部においてタスクあるいはスレッドの切り換えが発生する毎に、タスクあるいはスレッドの処理を実行していないプロセッサ部または最も優先度の低いタスクあるいはスレッドの処理を実行している前記プロセッサ部を判定し、該プロセッサ部を示す情報を前記プロセッサ選択部に記憶させることを特徴としている。
【００１０】
このような構成により、優先度の高い処理が発生した場合に、プロセッサ選択部を参照して、優先度の高い処理を直ちに所定のプロセッサ部において実行できるため、優先度の高い処理を効率的に処理することが可能となる。
また、前記優先度の高い処理には、優先度のレベルが設定されており、前記高優先度処理制御部は、実行中である前記優先度の高い処理に設定された優先度のレベルを記憶する優先度レベル記憶部（例えば、図２の全体割り込み優先度制御部１１ｂ）を含み、入力された優先度の高い処理のうち、前記優先度レベル記憶部に記憶された優先度のレベルを基準として、入力された前記優先度の高い処理を選択して実行することを特徴としている。
【００１１】
このような構成により、優先度の高い処理が複数発生した場合に、優先度の高い処理間の実行制御を適切に行うことが可能となり、割り込み処理を効率的に処理することが可能となる。
また、前記優先度の高い所定処理は、割り込み処理であることを特徴としている。
このような構成により、マルチプロセッサにおける割り込み処理を効率的に処理することが可能となる。
【００１２】
また、本発明は、
タスクあるいはスレッドを処理する複数のプロセッサ部を備えるプロセッサにおける情報処理方法であって、前記複数のプロセッサ部のうち、タスクあるいはスレッドの処理を実行していないプロセッサ部または最も優先度の低いタスクあるいはスレッドの処理を実行しているプロセッサ部に、入力された優先度の高い処理を実行させることを特徴としている。
【００１３】
また、前記複数のプロセッサ部においてタスクあるいはスレッドの切り換えが発生する毎に、タスクあるいはスレッドの処理を実行していないプロセッサ部または最も優先度の低いタスクあるいはスレッドの処理を実行している前記プロセッサ部を判定し、前記複数のプロセッサ部のうち、次に入力される優先度の高い処理を実行させるプロセッサ部を示す情報を記憶しておくことを特徴としている。
【００１４】
また、前記優先度の高い処理には、優先度のレベルが設定されており、実行中である前記優先度の高い処理に設定された優先度のレベルを記憶しておき、入力された優先度の高い処理のうち、前記記憶された優先度のレベルを基準として、入力された前記優先度の高い処理を選択して実行することを特徴としている。
また、前記優先度の高い所定処理は、割り込み処理であることを特徴としている。
【００１５】
このように、本発明によれば、マルチプロセッサにおいて、優先度の高い処理を効率的に処理することが可能となる。
【発明を実施するための最良の形態】
【００１６】
以下、図を参照して本発明に係るプロセッサの実施の形態を説明する。
本発明に係るプロセッサは、タスクあるいはスレッド等、プログラムをその実行単位で並列的に処理するものであり、本発明に係るプロセッサ内に、タスク等を実行するプロセッサ（以下、「単位プロセッサ」と言う。）が実質的に複数備えられたハードウェア構成を有している。
【００１７】
そして、複数の単位プロセッサのうち、高優先度処理（割り込み処理等）を実行する単位プロセッサを適宜選択する外部割り込み制御部を備えることにより、高優先度処理を効率的に実行することを可能としている。
まず、構成を説明する。
ここでは、本発明に係るプロセッサを携帯電話に組み込んだ場合を例に挙げ、高優先度処理として割り込み処理を想定した場合について説明する。なお、以下の説明において、スレッド等、プログラムの実行単位を総称して「タスク」と言う。
【００１８】
図１は、本発明に係る携帯電話１の機能構成を示すブロック図である。
図１において、携帯電話１は、ＣＰＵ（Central Processing Unit）１０と、フラッシュＲＯＭ２０と、メモリ３０と、バッファ４０と、無線部５０と、ＩｒＤＡ（Infrared Data Association）部６０と、オーディオ（Audio）部７０と、タイマ（Timer）８０と、ＵＳＢ（Universal Serial Bus）インターフェース部９０と、キー（KEY）操作部１００と、ＬＣＤ（Li quid Crystal Display）１１０と、カメラ（Camera）部１２０とを含んで構成され、ＣＰＵ１０、フラッシュＲＯＭ２０、メモリ３０およびバッファ４０は、バスによって接続されている。また、無線部５０、ＩｒＤＡ部６０、オーディオ部７０、タイマ８０、ＵＳＢインターフェース部９０、キー操作部１００、ＬＣＤ１１０およびカメラ部１２０は、ＣＰＵ１０と直接接続されている。
【００１９】
ＣＰＵ１０は、複数のタスクを並列的に処理しつつ携帯電話１全体を制御するもので、キー操作部１００から入力される各種の指示信号に応じて、フラッシュＲＯＭ２０に記憶されたオペレーティングシステムプログラム（ＯＳ）や各種アプリケーションプログラムを読み出して実行したり、無線部５０、オーディオ部７０あるいはカメラ部１２０等の周辺チップから入力される割り込み信号に応じて、割り込みハンドラを実行したりする。
【００２０】
例えば、ＣＰＵ１０は、ＯＳにより生成されたタスクと、アプリケーションにより生成されたタスクを並行して処理し、さらに、周辺チップから割り込み信号が入力された場合、割り込みハンドラを実行することにより、割り込み信号に対応するアプリケーションを起動する。なお、アプリケーションによる処理は、ＯＳのタスクスケジューラによって管理されるタスクとして実行されるため、ＯＳのサービスコールを呼び出すことができ、一方、割り込み処理は、タスクスケジューラによって管理されない処理（非タスク処理）であるため、ＯＳのサービスコールを呼び出すことはできない。
【００２１】
また、ＣＰＵ１０は、各種処理結果をフラッシュＲＯＭ２０あるいはメモリ３０に格納する。
ここで、ＣＰＵ１０の内部構成について説明する。
図２は、ＣＰＵ１０の内部構成を示すブロック図である。
図２において、ＣＰＵ１０は、複数の単位プロセッサＰ０〜Ｐ３と、外部割り込み制御部１１と、制御管理部１２とを含んで構成される。なお、図２に示す周辺チップは、図１に示す無線部５０、ＩｒＤＡ部６０およびオーディオ部７０等、ＣＰＵ１０に直接接続された機能部を総称したものであり、それぞれの周辺チップが、これら機能部のいずれかであることを意味している。
【００２２】
単位プロセッサＰ０〜Ｐ３は、それぞれが並列してタスクを処理可能なプロセッサであり、周辺チップにおいて割り込み信号が発生した場合、後述する外部割り込み制御部１１によって選択されたプロセッサが割り込み処理を実行する。
なお、単位プロセッサＰ０〜Ｐ３の内部構成としては同様のものとなるため、代表として、単位プロセッサＰ０の内部構成について説明する。
【００２３】
単位プロセッサＰ０は、ステータスレジスタ（ＰＳＲ）１０１と、プログラムカウンタ（ＰＣ）１０２と、割り込み処理用ステータスレジスタ（ＥＰＳＲ）１０３と、割り込み処理用プログラムカウンタ（ＥＰＣ）１０４とを含んで構成される。
なお、単位プロセッサＰ０は、ここでは図示を省略するが、プログラムカウンタが示すメモリアドレスから命令コードを読み出すフェッチ部、フェッチ部によって入力された命令コードをデコードするデコード部、デコード部におけるデコード結果に応じて、所定の演算を行うＡＬＵ（Arithmetic and Logical Unit）、演算対象あるいは演算結果のデータを記憶するレジスタファイル等を含んでいる。
【００２４】
ステータスレジスタ１０１は、単位プロセッサＰ０のステータス（例えば、割り込みの可否状態、単位プロセッサＰ０におけるオーバーフローの発生状態等）を記憶している。
プログラムカウンタ１０２は、単位プロセッサＰ０が次に実行するべき命令が格納されたメモリアドレスを記憶している。
なお、ステータスレジスタ１０１およびプログラムカウンタ１０２に記憶された内容は、単位プロセッサＰ０において割り込み処理が実行される際に、割り込み処理用ステータスレジスタ１０３および割り込み処理用プログラムカウンタ１０４に退避される。
【００２５】
割り込み処理用ステータスレジスタ１０３は、単位プロセッサＰ０において割り込み処理が実行される場合に、割り込み処理プログラムを起動する直前のステータスレジスタ１０１の状態を退避（複製）するレジスタである。割り込み処理プログラムにおいて、必要に応じて割り込み処理用ステータスレジスタ１０３の内容をスタック領域に退避することも可能である。
【００２６】
割り込み処理用プログラムカウンタ１０４は、単位プロセッサＰ０において割り込み処理が実行される場合に、割り込み処理プログラムを起動する直前のプログラムカウンタ１０２のアドレスを退避（複製）するレジスタである。割り込み処理プログラムにおいて、必要に応じて割り込み処理用プログラムカウンタ１０４の内容をスタック領域に退避することも可能である。
【００２７】
外部割り込み制御部１１は、無線部５０等の周辺チップから割り込み信号が入力された場合に、割り込み信号を調停した上で、割り込み処理を実行させるプロセッサを選択し、単位プロセッサＰ０が選択された場合には、所定の割り込み信号を単位プロセッサＰ０に出力する。
具体的には、外部割り込み制御部１１は、全体割り込み許可制御部１１ａと、全体割り込み優先度制御部１１ｂと、割り込み処理プロセッサ選択部１１ｃと、割り込みベクタ１１ｄとを含んで構成される。
【００２８】
全体割り込み許可制御部１１ａは、ＣＰＵ１０において各種割り込み処理の実行を許可するか否かを示す割り込み許可フラグを記憶しており、周辺チップから割り込み信号が入力された場合に、その割り込みに対応する割り込み許可フラグが割り込みを許可する状態を示している場合、その割り込み処理を受け付け、その割り込みに対応する割り込み許可フラグが割り込みを許可しない状態を示している場合、その割り込み処理に対して待機状態とさせる。
【００２９】
全体割り込み優先度制御部１１ｂは、ＣＰＵ１０において受け付ける割り込み処理の優先度（基準値）を記憶している。ＣＰＵ１０に入力される割り込み処理には、予め固定的にあるいは割り込み処理の発生時に動的に優先度のレベルが設定されており、全体割り込み優先度制御部１１ｂには、ＣＰＵ１０において現在実行されている割り込み処理の優先度のレベルが記憶される。そして、全体割り込み優先度制御部１１ｂは、周辺チップから入力された割り込み信号の優先度を参照して、記憶している割り込み処理の優先度（基準値）と周辺チップから入力された割り込み信号の優先度とを比較する。その結果、周辺チップから入力された割り込み信号の優先度が、現在記憶されている優先度（基準値）以下であると判定した場合、全体割り込み優先度制御部１１ｂは、周辺チップからの割り込み処理に対して待機状態とさせ、一方、現在記憶されている優先度（基準値）より高いと判定した場合、新たな割り込み処理を優先して実行する。
【００３０】
割り込み処理プロセッサ選択部１１ｃは、単位プロセッサＰ０〜Ｐ３のいずれに次の割り込み処理を実行させるかを示す単位プロセッサ指定領域と、単位プロセッサ指定領域に示される単位プロセッサに割り込み処理を行わせるか否かを示す割り込み可否領域とを含むレジスタによって構成される。
単位プロセッサ指定領域は、ＣＰＵ１０においてディスパッチ（タスクの切り換えに伴う単位プロセッサＰ０〜Ｐ３の再割り当て）が発生する毎に実行される割り込み処理プロセッサ指定処理（後述）によって更新される。なお、割り込み可否領域は、ＣＰＵ１０全体として割り込み処理を受け付けるか否かに応じて書き換えられる。
【００３１】
割り込みベクタ１１ｄは、割り込みハンドラの一覧が格納されたテーブルのメモリアドレスを記憶している。割り込み処理が実行される場合、まず、処理を行う単位プロセッサは、割り込みベクタに記憶されたメモリ３０上のアドレスを参照し、テーブルに示されている、割り込みの種類に応じた割り込みハンドラの格納先へジャンプする。そして、単位プロセッサが割り込みハンドラを起動することにより、割り込み処理が行われる。
【００３２】
制御管理部１２は、メモリ３０上に展開されたオペレーティングシステムプログラムと協働して実現される機能であり、例えば、ＯＳの一機能として割り込み処理プロセッサ指定処理が実行されることにより、割り込み処理プロセッサ選択部１１ｃの単位プロセッサ指定領域を更新する機能や、単位プロセッサＰ０〜Ｐ３の動作状態（Ｈａｌｔ状態であるか動作中であるか）および動作中の単位プロセッサＰ０〜Ｐ３において実行されているタスクの優先度の管理を行う機能等を含んでいる。なお、ＯＳとしての処理を実行する単位プロセッサは、状況に応じて随時変化する。
【００３３】
図１に戻り、フラッシュＲＯＭ２０は、携帯電話１において実行されるオペレーティングシステムプログラム、および、各種アプリケーションプログラムを記憶している。
メモリ３０は、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＲＡＭ（Static Random Access Memory）あるいはＳＤＲＡＭ（Synchronous DRAM）といった半導体メモリによって構成され、ＣＰＵ１０が処理を実行する際にワークエリアを形成すると共に、その処理結果を記憶する。
【００３４】
バッファ４０は、外部から携帯電話１に入力されたデータあるいは携帯電話１において発生されたデータを一時的に保持するバッファである。
無線部５０は、携帯電話１と携帯電話システムの基地局との間における無線通信を行うものである。例えば、無線部５０は、基地局から携帯電話１に対する着信を示す信号を受信した場合、ＣＰＵ１０に対して割り込み信号を出力し、着信信号の受信を通知する。また、無線部５０は、ＣＰＵ１０から発信を指示する信号が入力された場合、基地局に対して発信要求を示す信号を送信する。
【００３５】
ＩｒＤＡ部６０は、ＩｒＤＡに基づく通信を行うインターフェースであり、外部からＩｒＤＡに基づく無線信号を受信した場合、ＣＰＵ１０に対して割り込み信号を出力し、ＩｒＤＡ信号の受信を通知する。
オーディオ部７０は、携帯電話１において入出力される音声信号を処理するものであり、通話におけるマイクおよびスピーカを用いた音声の入出力、あるいは、音楽等の再生といった処理を行う。
【００３６】
タイマ８０は、携帯電話１のクロック信号を基に時間を計測し、例えば１ｍｓ毎等、所定時間毎にＣＰＵ１０に対して割り込み信号を出力する。
ＵＳＢインターフェース部９０は、ＵＳＢによる通信を行うためのインターフェースであり、ＵＳＢケーブルが接続された場合やＵＳＢケーブルから信号を受信した場合等に、ＣＰＵ１０に対して割り込み信号を出力する。
【００３７】
キー操作部１００は、携帯電話１に対する指示入力を行うための各種キーを備えており、これらのキーが押下された場合に、ＣＰＵ１０に対する割り込み信号を出力する。
ＬＣＤ１１０は、ＣＰＵ１０によって入力された文字あるいは画像等の描画命令に従って、所定画面を表示する表示装置である。
カメラ部１２０は、ＣＣＤ（Charge Coupled Devices）あるいはＣＭＯＳ（Complementary Metal Oxide Semiconductor）センサ等の撮像素子を備え、画像を撮影した場合に、ＣＰＵ１０に対して割り込み信号を出力する。
【００３８】
次に、動作を説明する。
初めに、割り込み処理プロセッサ指定処理について説明する。
図３は、割り込み処理プロセッサ指定処理を示すフローチャートである。
割り込み処理プロセッサ指定処理は、ＣＰＵ１０においてディスパッチが発生する毎にＯＳを実行している単位プロセッサ（ここでは単位プロセッサＰ０であるものとする。）によって実行される。
【００３９】
図３において、ＣＰＵ１０においてディスパッチが発生すると、ＯＳを実行している単位プロセッサＰ０は、Ｈａｌｔ状態にある単位プロセッサが存在するか否かを検索し（ステップＳ１）、Ｈａｌｔ状態にある単位プロセッサが存在しないと判定した場合、最も優先度の低いタスクを実行している単位プロセッサを検索する（ステップＳ２）。
ステップＳ１において、Ｈａｌｔ状態にある単位プロセッサが存在すると判定した場合、および、ステップＳ２の後、単位プロセッサＰ０は、次に発生する割り込み処理を実行する単位プロセッサを、Ｈａｌｔ中の単位プロセッサあるいは最も優先度の低いタスクを実行している単位プロセッサに決定する（ステップＳ３）。
【００４０】
次に、単位プロセッサＰ０は、割り込み処理プロセッサ選択部１１ｃにおける単位プロセッサ指定領域を書き換え、ステップＳ３において決定した単位プロセッサを示す値とする（ステップＳ４）。
そして、単位プロセッサＰ０は、割り込み処理プロセッサ指定処理を終了する。
このような処理の結果、割り込み処理が発生した場合に、割り込み処理プロセッサ選択部１１ｃにおける単位プロセッサ指定領域を参照することにより、割り込み処理が発生する毎に単位プロセッサの選択を行うことなく、直ちに割り込み処理を実行可能な状態となる。
【００４１】
次に、割り込み処理が発生した場合に外部割り込み制御部１１およびＯＳを実行している単位プロセッサＰ０が実行する割り込み実行処理について説明する。
図４は、割り込み実行処理を示すフローチャートである。
割り込み実行処理は、無線部５０等の周辺チップから割り込み信号が入力された場合に開始される。
【００４２】
図４において、周辺チップから割り込み信号が入力されると、全体割り込み許可制御部１１ａは、記憶している割り込み許可フラグを参照し、入力された割り込み信号の実行が許可されているか否かを判定する（ステップＳ１０１）。
ステップＳ１０１において、入力された割り込み信号の実行が許可されていないと判定した場合、全体割り込み許可制御部１１ａは、ステップＳ１０１に移行する。
【００４３】
一方、ステップＳ１０１において、全体割り込み許可制御部１１ａが、入力された割り込み信号の実行が許可されていると判定した場合、全体割り込み優先度制御部１１ｂは、入力された割り込み信号の優先度と、記憶している優先度（基準値）とを比較し、入力された割り込み信号の優先度が、記憶している優先度（基準値）より高いか否かを判定する（ステップＳ１０２）。
【００４４】
ステップＳ１０２において、入力された割り込み信号の優先度が、記憶している優先度（基準値）以下であると判定した場合、全体割り込み優先度制御部１１ｂは、ステップＳ１０１に移行する。
一方、ステップＳ１０２において、全体割り込み優先度制御部１１ｂが、入力された割り込み信号の優先度が記憶している優先度（基準値）より高いと判定した場合、ＯＳを実行している単位プロセッサＰ０は、割り込み処理プロセッサ選択部１１ｃにおける単位プロセッサ指定領域を参照し、割り込み処理を実行させる単位プロセッサを選択する（ステップＳ１０３）。
【００４５】
そして、単位プロセッサＰ０は、ステップＳ１０３において選択した割り込み処理を実行させる単位プロセッサがＨａｌｔ状態であるか否かを判定し（ステップＳ１０４）、Ｈａｌｔ状態でないと判定した場合、割り込み処理を実行させる単位プロセッサに対し、割り込み処理の初期化処理（ＥＰＣ、ＥＰＳＲへのＰＣ、ＰＳＲの値の複製、コンテキストの退避）を行わせる（ステップＳ１０５）。
【００４６】
ステップＳ１０４において、ステップＳ１０３で選択した割り込み処理を実行させる単位プロセッサがＨａｌｔ状態であると判定された場合、および、ステップＳ１０５の後、割り込み処理を実行する単位プロセッサは、割り込みベクタを参照して割り込みハンドラを起動することにより、割り込み処理を実行する（ステップＳ１０６）。
次に、単位プロセッサＰ０は、割り込み処理を実行させた単位プロセッサがＨａｌｔ状態のものであったか否かを判定し（ステップＳ１０７）、Ｈａｌｔ状態のものでなかったと判定した場合、割り込み処理の終了処理（ＥＰＣ、ＥＰＳＲの値をＰＣ、ＰＳＲに戻し、コンテキストを復帰する処理）を行わせる（ステップＳ１０８）。
【００４７】
ステップＳ１０７において、割り込み処理を実行させた単位プロセッサがＨａｌｔ状態のものであったと判定した場合、および、ステップＳ１０８の後、割り込み実行処理は終了する。
このような処理の結果、割り込みが発生した場合に、最も割り込み処理を行わせるのに適切な単位プロセッサＰ０〜Ｐ３が選択され、直ちに割り込み処理が実行される。
【００４８】
以上のように、本実施の形態に係る携帯電話１は、入力された割り込み処理を、タスクを実行していない単位プロセッサあるいは最も優先度の低いタスクを実行している単位プロセッサに実行させる外部割り込み制御部１１をＣＰＵ１０内に備えている。
そのため、ＣＰＵ１０において、タスクの処理能力を可能な限り低下させることなく、発生した割り込み処理を実行することができる。
【００４９】
したがって、マルチプロセッサであるＣＰＵ１０において、割り込み処理を効率的に処理することが可能となる。
また、全体割り込み優先度制御部１１ｂが、現在実行中の割り込み処理の優先度レベルを基準値として記憶しており、以後に入力される割り込み処理は、全体割り込み優先度制御部１１ｂに記憶された優先度の基準値を基に、より優先度の高い割り込み処理が選択して実行される。
【００５０】
そのため、複数の割り込み処理が発生した場合に、割り込み処理間の実行制御を適切に行うことが可能となり、ＣＰＵ１０において割り込み処理を効率的に処理することが可能となる。
なお、本発明は、マルチスレッドプロセッサあるいはマルチタスクプロセッサと呼ばれる各種実装形態のプロセッサに適用可能であるが、例えば、１チップ上に複数のプロセッサコアが実装され、プロセッサの構成要素の少なくとも一部をこれら複数のプロセッサコアが共用する形態のマルチプロセッサ（いわゆる密結合型のマルチタスクプロセッサ）において、特に有効となる。
【００５１】
図５は、本発明の適用対象となるマルチプロセッサの構成例を示す図である。
図５に示すマルチプロセッサは、メモリ制御部およびＡＬＵを複数のプロセッサコアが共用する形態であり、それぞれのプロセッサコアにプログラムカウンタおよびステータスレジスタ等の制御用レジスタが備えられていると共に、マルチプロセッサ全体を制御するためのプログラム制御部（全体用プログラム制御部）および制御用レジスタ（全体用ＰＳＲ）も別途備えられている。なお、図５に示すように、各プロセッサコアで共用するコンテキストキャッシュ等を備えても良い。
【００５２】
このような構成のマルチプロセッサの場合、各プロセッサコアが本実施の形態における単位プロセッサの機能を実現し、全体用プログラム制御部および全体用ＰＳＲの一部が本実施の形態における外部割り込み制御部の機能を実現するものとなる。
【図面の簡単な説明】
【００５３】
【図１】本発明に係る携帯電話１の機能構成を示すブロック図である。
【図２】ＣＰＵ１０の内部構成を示すブロック図である。
【図３】割り込み処理プロセッサ指定処理を示すフローチャートである。
【図４】割り込み実行処理を示すフローチャートである。
【図５】本発明の適用対象となるマルチプロセッサの構成例を示す図である。
【符号の説明】
【００５４】
１  携帯電話、１０  ＣＰＵ、１１  外部割り込み制御部、１１ａ  全体割り込み許可制御部、１１ｂ  全体割り込み優先度制御部、１１ｃ  割り込み処理プロセッサ選択部、１１ｄ  割り込みベクタ、１２  制御管理部、２０  フラッシュＲＯＭ、３０  メモリ、４０  バッファ、５０  無線部、６０  ＩｒＤＡ部、７０  オーディオ部、８０  タイマ、９０  ＵＳＢインターフェース部、１００  キー操作部、１１０  ＬＣＤ、１２０  カメラ部、Ｐ０〜Ｐ３  単位プロセッサ、１０１  ステータスレジスタ、１０２  プログラムカウンタ、１０３  割り込み処理用ステータスレジスタ、１０４  割り込み処理用プログラムカウンタ
【図１】
2006243865.tif 000003
【図２】
2006243865.tif 000004
【図３】
2006243865.tif 000005
【図４】
2006243865.tif 000006
【図５】
2006243865.tif 000007