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