(57)【要約】【課題】適切に外部割り込み要求に応じて割り込み処理を実行するプロセッサを決定し、システム全体として効率的な割り込み処理を行なえるようにする。【解決手段】プロセッサ１０１〜１０３の各々が実行中のタスクの優先度を獲得するタスク優先度獲得部１０４、タスク優先度獲得部１０４により獲得された前記プロセッサのタスクの優先度に基づき最も優先度の低いタスクを実行しているプロセッサを選択するプロセッサ選択手段１０５、発生した外部割り込み要求をすべて受け付ける割り込み受付部１０６、割り込み受付部１０６で受け付けた割り込み要求をプロセッサ選択手段１０５で決定したプロセッサに通知する割り込み通知部１０９を設け、前記プロセッサ選択手段により選択された最も優先度の低いタスクを実行しているプロセッサに、発生した外部割り込み要求に対応した割り込み処理を実行させる。【選択図】        図１
2005004562.tif 000002
【特許請求の範囲】
【請求項１】
外部割り込み要求を受け付ける割り込み機能を備えた複数のプロセッサを持つマルチプロセッサシステムにおいて、
前記プロセッサの各々で実行しているタスクの優先度を獲得するタスク優先度獲得手段と、
前記タスク優先度獲得手段により獲得された前記プロセッサのタスクの優先度に基づき最も優先度の低いタスクを実行しているプロセッサを選択するプロセッサ選択手段と、
発生した外部割り込み要求をすべて受け付ける割り込み受付手段と、
前記割り込み受付手段で受け付けた割り込み要求を前記プロセッサ選択手段により決定したプロセッサに通知する割り込み通知手段を有し、
前記プロセッサ選択手段により選択されたプロセッサに、発生した外部割り込み要求に対応した割り込み処理を実行させることを特徴とするマルチプロセッサシステム。
【請求項２】
前記プロセッサの各々で実行しているタスクの優先度を記憶するためのタスク優先度記憶手段と、
前記プロセッサの各々で実行しているタスクの切替に応じて前記タスク優先度記憶手段に記憶されたタスク優先度を更新する優先度更新手段とを更に有し、
前記タスク優先度獲得手段は、前記タスク優先度記憶手段からタスクの優先度を獲得することを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項３】
外部割り込み要求を受け付ける割り込み機能を備えた複数のプロセッサを持つマルチプロセッサシステムの制御方法において、
前記プロセッサの各々で実行しているタスクの優先度を獲得するタスク優先度獲得工程と、
前記タスク優先度獲得工程により獲得された前記プロセッサのタスクの優先度に基づき最も優先度の低いタスクを実行しているプロセッサを選択するプロセッサ選択工程と、
発生した外部割り込み要求をすべて受け付ける割り込み受付工程と、
前記割り込み受付工程で受け付けた割り込み要求を前記プロセッサ選択工程により決定したプロセッサに通知する割り込み通知工程を有し、
前記プロセッサ選択工程により選択されたプロセッサに、発生した外部割り込み要求に対応した割り込み処理を実行させることを特徴とするマルチプロセッサシステムの制御方法。
【請求項４】
外部割り込み要求を受け付ける割り込み機能を備えた複数のプロセッサを持つマルチプロセッサシステムの制御プログラムにおいて、
前記プロセッサの各々で実行しているタスクの優先度を獲得するタスク優先度獲得工程と、
前記タスク優先度獲得工程により獲得された前記プロセッサのタスクの優先度に基づき最も優先度の低いタスクを実行しているプロセッサを選択するプロセッサ選択工程と、
発生した外部割り込み要求をすべて受け付ける割り込み受付工程と、
前記割り込み受付工程で受け付けた割り込み要求を前記プロセッサ選択工程により決定したプロセッサに通知する割り込み通知工程を含み、
前記プロセッサ選択工程により選択されたプロセッサに、発生した外部割り込み要求に対応した割り込み処理を実行させることを特徴とするマルチプロセッサシステムの制御プログラム。
【請求項５】
外部割り込み要求を受け付ける割り込み機能を備えた複数のプロセッサを持つマルチプロセッサシステムにおいて、
各プロセッサの割り込み状態の有無をプロセッサ外部に通知する割り込み状態通知手段と、
割り込み状態に有る時に現在実行している割り込みの優先度をプロセッサ外部に通知する割り込み優先度通知手段と、
前記割り込み状態通知手段により得られた各々のプロセッサの割り込み状態と、前記割り込み優先度通知手段によって得られた各々のプロセッサの割り込み優先度から割り込み状態に無いプロセッサがあれば割り込み状態に無いプロセッサを、また、すべてのプロセッサが割り込み状態に有る時は最も低い割り込み優先度の割り込みを実行しているプロセッサを選択するプロセッサ選択手段と、
発生した外部割り込みの要求をすべて受け付ける割り込み受付手段と、
前記割り込み受付手段で受け付けた割り込み要求を前記プロセッサ選択手段により決定したプロセッサに通知する割り込み通知手段を有し、
前記プロセッサ選択手段により選択されたプロセッサに、外部割り込み要求に対応した割り込み処理を実行させることを特徴とするマルチプロセッサシステム。
【請求項６】
前記割り込み状態通知手段は、各プロセッサにおける割り込みの受け付け及び終了に応じて通知を行なうことを特徴とする請求項５に記載のマルチプロセッサシステム。
【請求項７】
前記割り込み優先度通知手段は、各プロセッサにおける割り込み処理の切り替えに応じて通知を行なうことを特徴とする請求項５に記載のマルチプロセッサシステム。
【請求項８】
外部割り込み要求を受け付ける割り込み機能を備えた複数のプロセッサを持つマルチプロセッサシステムの制御方法において、
各プロセッサの割り込み状態の有無をプロセッサ外部に通知する割り込み状態通知工程と、
割り込み状態に有る時に現在実行している割り込みの優先度をプロセッサ外部に通知する割り込み優先度通知工程と、
前記割り込み状態通知工程により得られた各々のプロセッサの割り込み状態と、前記割り込み優先度通知工程によって得られた各々のプロセッサの割り込み優先度から割り込み状態に無いプロセッサがあれば割り込み状態に無いプロセッサを、また、すべてのプロセッサが割り込み状態に有る時は最も低い割り込み優先度の割り込みを実行しているプロセッサを選択するプロセッサ選択工程と、
発生した外部割り込みの要求をすべて受け付ける割り込み受付工程と、
前記割り込み受付工程で受け付けた割り込み要求を前記プロセッサ選択工程により決定したプロセッサに通知する割り込み通知工程を有し、
前記プロセッサ選択工程により選択されたプロセッサに、外部割り込み要求に対応した割り込み処理を実行させることを特徴とするマルチプロセッサシステムの制御方法。
【請求項９】
外部割り込み要求を受け付ける割り込み機能を備えた複数のプロセッサを持つマルチプロセッサシステムの制御プログラムにおいて、
各プロセッサの割り込み状態の有無をプロセッサ外部に通知する割り込み状態通知工程と、
割り込み状態に有る時に現在実行している割り込みの優先度をプロセッサ外部に通知する割り込み優先度通知工程と、
前記割り込み状態通知工程により得られた各々のプロセッサの割り込み状態と、前記割り込み優先度通知工程によって得られた各々のプロセッサの割り込み優先度から割り込み状態に無いプロセッサがあれば割り込み状態に無いプロセッサを、また、すべてのプロセッサが割り込み状態に有る時は最も低い割り込み優先度の割り込みを実行しているプロセッサを選択するプロセッサ選択工程と、
発生した外部割り込みの要求をすべて受け付ける割り込み受付工程と、
前記割り込み受付工程で受け付けた割り込み要求を前記プロセッサ選択工程により決定したプロセッサに通知する割り込み通知工程を有し、
前記プロセッサ選択工程により選択されたプロセッサに、外部割り込み要求に対応した割り込み処理を実行させることを特徴とするマルチプロセッサシステムの制御プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は外部割り込み要求を受け付ける割り込み機能を備えた複数のプロセッサを持つマルチプロセッサシステム、その制御方法、および制御プログラムに関するものである。
【０００２】
【従来の技術】
従来より、単数あるいは複数のプロセッサを用いたコンピュータシステム、プリンタなどのコンピュータ応用機器において、入出力割り込み、タイマー割り込みなどの割り込み処理が広く利用されている。
【０００３】
単数のプロセッサのみを用いるシステムでは、割り込み処理を行なうプロセッサは単一であるが、マルチプロセッサシステムにおいて外部割り込みが発生した場合は複数のうちのどれかのプロセッサによりこの割り込みを処理する余地があり、従来では次のような方式で割り込み処理を行なうプロセッサを決定する方式が用いられている。
【０００４】
（１）発生した割り込みの種類（入出力割り込みや、タイマー割り込み等）に応じて決められた特定のプロセッサのみが割り込み処理を行なう（例えば、特許文献１を参照）。
【０００５】
（２）すべてのプロセッサに対し割り込み要求を行い、最初に割り込みを受け付けたプロセッサで割り込み処理を行なう。
【０００６】
【特許文献１】
特開平５―３２４５６９号公報
【０００７】
【発明が解決しようとする課題】
上記の従来方式（１）では特定のプロセッサにのみ割り込みが行われるので、外部割り込みが発生した時、割り込みを受け付ける特定のプロセッサで他のプロセッサよりも優先順位の高いタスクが実行されていると、他のプロセッサのタスクよりも優先順位が高いにも関わらず、そのタスクの実行が阻害される、という問題がある。また、割り込みを受け付ける特定のプロセッサの障害がシステム全体の障害に直結する。
【０００８】
従来方式（２）では、割り込みを最初に受け付けたプロセッサで実行しているタスクが必ずしも他のプロセッサで実行されているタスクよりも優先順位が低いとは限らない。また、すべてのプロセッサに対し割り込み要求を行なうため、結果的に割り込みを行わないプロセッサにおける割り込みのキャンセル処理を行わなければならないという問題がある。
【０００９】
また、従来方式（１）では、特定種の外部割込みに対して特定のプロセッサにのみ割り込みが行われるので、同種の外部割込みが同時期に複数発生した時、特定のプロセッサに割り込みが集中し、他のプロセッサでは通常タスクが実行されているにも関わらず、本来通常タスクよりも優先されるべき割り込み処理が待機させられる、また、割り込みを受け付ける特定のプロセッサの障害がシステム全体の障害に直結するなどの問題がある。
【００１０】
さらに、従来方式（２）では、割り込みを最初に受け付けたプロセッサが最適でない場合がある。すべてのプロセッサが割り込み状態であるとき、割り込みを受け付けたプロセッサの割込み優先順位が他のプロセッサで実行している割り込みの割り込み優先度よりも低いとは限らない。また、すべてのプロセッサに対し割込み要求を行なうため、結果的に割り込みを行わないプロセッサにおける割り込みのキャンセル処理を行わなければならない、などの問題がある。
【００１１】
本発明の課題は上記の問題点を解決し、外部割り込みが発生した時に、最も低い優先度を持つタスクを実行しているプロセッサのみに割り込み要求を行なうことにより、優先度の高いタスクの実行が阻害されることが無い効率的なタスクの実行とシステム全体として効率的な割り込み処理を行なうことにある。
【００１２】
また、本発明の他の課題は、外部割り込みが発生した時に、割り込み状態に無いプロセッサに割り込み要求を行なうことにより、常に割り込み処理を通常タスクよりも優先的に実行することにある。
【００１３】
また、本発明の他の課題はすべてのプロセッサが割り込み状態にある時には、最も低い割り込み優先度を持つ割り込み処理を実行しているプロセッサに割込み要求を行なうことにより、割り込み優先度に従った効率的な割り込み処理の実行を行なうことにある。
【００１４】
さらに、本発明の他の課題は、すべてのプロセッサが割り込みを受け付け可能にすることにより、１つのプロセッサに障害が起きてもシステム全体の障害とならないようにすることにある。
【００１５】
すなわち、本発明の課題は、外部割り込み要求を受け付ける割り込み機能を備えた複数のプロセッサを持つマルチプロセッサシステム、その制御方法、および制御プログラムにおいて、適切に外部割り込み要求に応じて割り込み処理を実行するプロセッサを決定し、システム全体として効率的な割り込み処理を行なえるようにすることにある。
【００１６】
【課題を解決するための手段】
上記の課題を解決するため、本発明によれば、外部割り込み要求を受け付ける割り込み機能を備えた複数のプロセッサを持つマルチプロセッサシステム、その制御方法、および制御プログラムにおいて、
プロセッサの各々で実行しているタスクの優先度を獲得するタスク優先度獲得手段（または工程）と、
タスク優先度獲得手段（または工程）により獲得されたプロセッサのタスクの優先度に基づき最も優先度の低いタスクを実行しているプロセッサを選択するプロセッサ選択手段（または工程）と、
発生した外部割り込み要求をすべて受け付ける割り込み受付手段（または工程）と、
割り込み受付手段（または工程）で受け付けた割り込み要求をプロセッサ選択手段（または工程）により決定したプロセッサに通知する割り込み通知手段（または工程）を有し、
プロセッサ選択手段（または工程）により選択されたプロセッサに、発生した外部割り込み要求に対応した割り込み処理を実行させる
構成、あるいは
各プロセッサの割り込み状態の有無をプロセッサ外部に通知する割り込み状態通知手段（または工程）と、
割り込み状態に有る時に現在実行している割り込みの優先度をプロセッサ外部に通知する割り込み優先度通知手段（または工程）と、
割り込み状態通知手段（または工程）により得られた各々のプロセッサの割り込み状態と、割り込み優先度通知手段（または工程）によって得られた各々のプロセッサの割り込み優先度から割り込み状態に無いプロセッサがあれば割り込み状態に無いプロセッサを、また、すべてのプロセッサが割り込み状態に有る時は最も低い割り込み優先度の割り込みを実行しているプロセッサを選択するプロセッサ選択手段（または工程）と、
発生した外部割り込みの要求をすべて受け付ける割り込み受付手段（または工程）と、
割り込み受付手段（または工程）で受け付けた割り込み要求をプロセッサ選択手段（または工程）により決定したプロセッサに通知する割り込み通知手段（または工程）を有し、
プロセッサ選択手段（または工程）により選択されたプロセッサに、外部割り込み要求に対応した割り込み処理を実行させる
構成を採用した。
【００１７】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を詳細に説明する。
【００１８】
（第１実施形態）
本発明の第１の実施形態を図１および図２にしたがって説明する。ここでは、本発明の最も基本的な構成および動作のみを説明し、より具体的な構成および動作については後述の第２および第３実施形態で説明する。
【００１９】
本実施形態の特徴は、各プロセッサの実行中のタスクの優先度を獲得するタスク優先度獲得部を設け、外部割り込み発生時に最も優先度の低いタスクを実行しているプロセッサに割り込み処理を実行させる点である。
【００２０】
図１の装置は、符号１０１、１０２…１０３で示す複数のプロセッサを有する電子機器で、このような複数プロセッサを用いる構成はコンピュータ、プリンタその他の情報処理装置に共通するものである。
【００２１】
図１において、プロセッサ１０１、１０２…１０３（符号は１０３で終っているがプロセッサの数は任意である）は、不図示の割り込み信号線などの状態に応じてあらかじめ定義された割り込みタスクを実行する割り込み処理機能を有している。
【００２２】
符号１０４は各プロセッサ１０１、１０２…１０３より実行しているタスクの優先度を獲得するタスク優先度獲得部、１０５はタスク優先度獲得部１０４において獲得したタスクの優先度を使用して、プロセッサ１０１、１０２…１０３のうち最低の優先度のタスクを実行しているプロセッサを１つ選択するプロセッサ選択手段である。
【００２３】
ここでいうタスクとは、プロセッサ１０１、１０２…１０３が実行する処理の単位で、たとえば、採用するＯＳ（オペレーティングシステム）の実装方式によりその「タスク」の意味が異なる場合もあるが、本実施形態の場合は、「特定のプロセス」（実行中のあるアプリケーションプログラムを意味する単位）、あるいは「プリンタヘッドへのデータ出力」、「外部記憶装置デバイスに対するデータ入出力」などの処理単位が考えられる。
【００２４】
このようなタスクについては、装置の仕様や目的に応じて優先度を割り付けることができる。たとえば本装置がインクジェットプリンタであったとすれば、インクジェットヘッドへの印刷データ転送を行なうタスクには極めて高いリアルタイム性が要求され、遅延が殆ど許されない。一方で、プリンタの入力インターフェースからの印刷データの入力を行なうタスクではインクジェットヘッドへのデータ転送タスクほどは高いリアルタイム性は要求されない。たとえば、このようにプロセッサのタスクが要求されるリアルタイム性に応じてそのタスクの優先度をあらかじめ設定することができる。
【００２５】
タスク優先度獲得部１０４の具体的な構成については後述の実施形態に譲るが、タスク優先度獲得部１０４は、プロセッサ１０１、１０２…１０３が実行しているタスクの優先度を獲得する。たとえば、タスク優先度獲得部１０４は、以上のように装置の仕様や目的に応じて判っている定められたタスクの優先度の情報をレジスタなどに有していれば、何らかの方法でプロセッサ１０１、１０２…１０３が実行しているタスク（通常、あるタイミングでプロセッサ１０１、１０２…１０３が実行しているタスクは刻々と変化する）を特定し、各プロセッサのタスクのいずれが最優先か、あるいは最も優先度が低いか、などを判定することができる。
【００２６】
これにより、プロセッサ選択手段１０５はプロセッサ１０１、１０２…１０３のうち最低の優先度のタスクを実行しているプロセッサを１つ選択することができ、その結果により後述の割り込み通知部１０９のプロセッサ選択動作を制御することができる。
【００２７】
一方、符号１０６は割り込み受付部であり、Ｉ／Ｏ回路１０７（ネットワークインターフェースやプリンタインターフェースなど）で発生する入出力割り込み要求、タイマー１０８で発生するタイマー割り込み要求、および不図示の他の外部割り込み発生要因からの外部割り込み要求をすべて受け付ける。
【００２８】
符号１０９は割り込み通知部で、この割り込み通知部１０９により、割り込み受付部１０６で受け付けた外部割り込み要求を、プロセッサ１０１、１０２…１０３のうちからプロセッサ選択手段１０５で決定された１つのプロセッサに通知することにより、各プロセッサで実行中のタスク優先度に応じて割り込み処理を実行させる。
【００２９】
符号１１８はＲＯＭおよびＲＡＭ（あるいはさらに仮想記憶機構なども含む）から成るメモリで、プロセッサ１０１、１０２…１０３のプログラムの格納、あるいはタスク実行時のワークエリアとして用いられる。
【００３０】
図２は図１の構成における動作をフローチャート図として示したものである。
【００３１】
図２において、Ｉ／Ｏ回路１０７およびタイマ１０８、あるいは不図示の外部割り込み発生要因から外部割り込み要求が発生すると（ステップＳ２０１）、すべてその割り込みは割り込み受付部１０６に通知される（ステップＳ２０２）。
【００３２】
割り込み受付部１０６で割り込みを受け付けると、割り込み通知部１０９はプロセッサ選択手段１０５に割り込み要求を通知すべきプロセッサを問い合わせる（ステップＳ２０３）。
【００３３】
割り込み要求を通知すべきプロセッサの問い合わせを受けたプロセッサ選択手段１０５は、タスク優先度獲得部１０４を使用してプロセッサ１０１、１０２…１０３からそれぞれで実行しているタスクの優先度を獲得し（ステップＳ２０４）、獲得したタスクの優先度を比較することにより、最も優先度の低いタスクを実行しているプロセッサをプロセッサ１０１、１０２…１０３の中から１つ選択し（ステップＳ２０５）、割り込み通知部１０９へ選択したプロセッサを通知する（ステップＳ２０６）。
【００３４】
割り込みすべきプロセッサの通知を受けた割り込み通知部１０９は、その通知された割り込みすべきプロセッサヘ、割り込み受付部１０６で受け付けた外部割り込み要求を通知する（ステップＳ２０７）。割り込み通知部１０９から割り込み要求を受けたプロセッサはあらかじめ定義された割り込み処理を実行する（ステップＳ２０８）。
【００３５】
以上のようにして、マルチプロセッサシステムにおいて、外部割り込み発生時に最も低い優先度のタスクを実行しているプロセッサのみに割り込み要求を行なうことができ、高い優先度を持つタスクが阻害されることがなく、効率的にタスクを実行し、システム全体として効率的な割り込み処理を行なえるという効果がある。また、すべてのプロセッサが割り込みを受け付け可能であることにより、１つのプロセッサに障害が起きてもシステム全体の障害とならないという効果もある。
【００３６】
（第２実施形態）
以下の第２および第３実施形態ではタスク優先度獲得部１０４の構成をより具体的に示す。
【００３７】
図３は第１実施形態の図１に相当する図で、同一部分には同一符号を付してある。
【００３８】
図３において、図１と異なるのはタスク優先度獲得部１０４の構成で、その他の部分は図１と同じである。図３において符号１１０、１１１…１１２はプロセッサ１０１、１０２…１０３で実行しているタスクの優先度を保持するタスク優先度バッファでありプロセッサ１０１、１０２…１０３にそれぞれ対応している。タスク優先度バッファ１１０、１１１…１１２の保持するタスク優先度は対応するプロセッサのタスクが切り替わる時に一度だけ新しいタスクの優先度に書き換えられる。
【００３９】
このようにタスク優先度バッファ１１０〜１１２を更新するには、種々の構成が考えられるが、たとえば、プロセッサ１０１、１０２…１０３のタスクの切り換え（コンテキストスイッチ）が生じる時に、プロセッサ１０１、１０２…１０３（あるいは別のプロセッサであってもよい）のソフトウェアにより、新しく実行中となるタスクの優先度情報をタスク優先度バッファ１１０〜１１２に書き込むようにする。このタスクの優先度情報の形式は、たとえばプロセッサ選択手段１０５によるプロセッサ選択が容易に行なえるように０〜２５５のような数値表現が考えられる。
【００４０】
実施形態１においては、ステップＳ２０４でプロセッサ１０１、１０２…１０３からそれぞれで実行しているタスクの優先度を獲得するよう説明したが、このステップＳ２０４で、タスク優先度バッファ１１０、１１１…１１２に保持されているタスク優先度を使用してもプロセッサ選択手段１０５は割り込みを実行させるべき最低優先度のタスクを実行しているプロセッサを決定することができる。
【００４１】
たとえば、上記のように、数値表現でタスクの優先度情報がタスク優先度バッファ１１０、１１１…１１２に保持されているのであれば、プロセッサ選択手段１０５は優先度情報の最大値（あるいは最小値）を求めるだけで割り込みを実行させるべき最低優先度のタスクを実行しているプロセッサを決定でき、前述の第１実施形態と同様の効果を得ることができる。
【００４２】
（第３実施形態）
図４にさらに異なるタスク優先度獲得部１０４の構成を示す。図４において、符号１１３はプロセッサ選択手段１０５により選択された最も実行中のタスクの優先度が低いプロセッサを特定する情報を保持するプロセッサバッファである。
【００４３】
本実施形態でもタスク優先度バッファ１１０〜１１２が設けられており、このタスク優先度バッファ１１０〜１１２は、第２実施形態のタスク優先度バッファ１１０〜１１２と同様のもので、プロセッサ１０１〜１０３のタスクの切り換えが生じたときこれに応じて新しいタスクの優先度が対応するタスク優先度バッファ１１０〜１１２に書き込まれるものとする。
【００４４】
第１実施形態、第２実施形態では、ステップＳ２０３で割り込み通知部１０９からの割り込み要求を通知すべきプロセッサの問い合わせがあった時、ステップＳ２０５においてタスク優先度獲得部１０４で獲得したタスクの優先度を比較して最も低い優先度のタスクを実行しているプロセッサをプロセッサ１０１、１０２…１０３の中から１つ選択するものとしたが、本実施形態の構成では、タスク優先度バッファ１１０、１１１…１１２が書き換えられた時に、タスク優先度獲得部１０４がタスク優先度バッファ１１０、１１１…１１２に新たに保持されたタスク優先度を比較して、最も低い優先度のタスクを実行しているプロセッサを選択してプロセッサバッファ１１３に保持しておき、割り込み通知部１０９からの問い合わせが有った時にプロセッサバッファ１１３の保持内容を通知するようにする。このような構成によっても、前述の第１実施形態同様の効果を期待することができる。
【００４５】
なお、本実施形態の場合、図２のステップＳ２０３が終了した後、ステップＳ２０４、ステップＳ２０５は既に実行済みで結果が得られているのでスキップして、ステップＳ２０６を実行することになる。
【００４６】
以上までに、第１〜第３の３つの実施形態を示したが、タスク優先度獲得部１０４は、たとえばプロセッサ１０１〜１０３（あるいは他のプロセッサ）のソフトウェアモジュールや専用のハードウェア回路から構成することができる。タスク優先度獲得部１０４をソフトウェアモジュールとして構成する場合には、たとえば、図２に示したような割り込み制御処理をオペレーティングシステムのカーネルのソフトウェアモジュールの１つとして実装する構成が考えられる。
【００４７】
タスク優先度獲得部１０４の一部あるいは全部をソフトウェアとして実装する場合は、そのプログラムはメモリ１１８に格納しておけばよい。
【００４８】
要は、タスク優先度獲得部１０４が複数プロセッサの実行しているタスクを認識でき、そのタスクの優先度に応じて、外部割り込み発生時に最も低い優先度のタスクを実行しているプロセッサのみに割り込み要求を実行させることができればよく、このような所期の動作を実現できるものであれば、タスク優先度獲得部１０４の具体的な構成は当業者において任意に設計変更が可能である。
【００４９】
以上の３つの実施形態（第１実施形態〜第３実施形態）は、複数のプロセッサで実行中のタスクの優先度を獲得し、タスクの優先度に応じて割り込み処理を実行させるプロセッサを決定するものであったが、以下の第４〜第８実施形態では、外部割り込み発生時に各プロセッサがどのような割り込み処理を実行しているかに応じて新たな割り込み処理をどのプロセッサに実行させるかを決定する構成を示す。すなわち、以下の実施形態では、外部割り込み発生時に割り込み状態に無いプロセッサがあれば、その割り込み状態にないプロセッサに割り込み要求を行ない、すべてのプロセッサが割り込み状態にある時は、最も低い優先度の割り込みを実行しているプロセッサに割り込み要求を行なう。
【００５０】
なお、第４〜第８実施形態において、第１〜第３実施形態と同一あるいは相当する機能部分については詳細な説明は省略するものとする。
【００５１】
（第４実施形態）
図５において、符号１１０１、１１０２…１１０３は第１〜第３実施形態同様のプロセッサで、割り込み機能を有している。
【００５２】
符号１１０４、１１０５…１１０６は、プロセッサ１１０１、１１０２…１１０３にそれぞれ含まれ、プロセッサ１１０１、１１０２…１１０３が割り込み状態に有るのか無いのかをプロセッサ外部に通知する割り込み状態通知部である。
【００５３】
また、符号１１０７、１１０８…１１０９は、プロセッサ１１０１、１１０２…１１０３にそれぞれ含まれ、プロセッサ１１０１、１１０２…１１０３で実行している割り込み処理の優先度をプロセッサ外部に通知する割り込み優先度通知部である。
【００５４】
割り込み状態通知部１１０４〜１１０６および割り込み優先度通知部１１０７〜１１０９は、ハードウェア的に可能であればプロセッサ１１０１〜１１０３のハードウェア信号線を介して上記の割り込み状態および優先度の情報を出力する構成とする。
【００５５】
あるいは、割り込み状態通知部１１０４〜１１０６および割り込み優先度通知部１１０７〜１１０９は、プロセッサ１１０１〜１１０３のソフトウェアから構成してもよい。その場合は、プロセッサ１１０１〜１１０３が実行する割り込み処理の一部に上記の割り込み状態および優先度の情報を生成するルーチンを含め、生成された割り込み状態および優先度の情報を特定の制御線やデータバスを介してプロセッサ選択部１１１０に出力するものとする。
【００５６】
符号１１１０はプロセッサ選択部で、次のように動作する。すなわち、プロセッサ選択部１１１０は、割り込み状態通知部１１０４、１１０５…１１０６から通知される割り込み状態および、割り込み優先度通知部１１０７、１１０８…１１０９から通知される割り込み優先度を利用して、プロセッサ１１０１、１１０２…１１０３のうち割り込み状態に無いものがあればそのうちの１つ、また、プロセッサ１１０１、１１０２…１１０３がすべて割り込み状態である時は、最も優先度の低い割り込みを実行しているプロセッサを１つ選択する。
【００５７】
Ｉ／Ｏ回路１１１１、タイマー１１１２、割り込み受付部１１１３は、第１〜第３実施形態のＩ／Ｏ回路１０７、タイマー１０８、割り込み受付部１０６と同等、また、割り込み通知部１１１４は第１〜第３実施形態の割り込み通知部１０９と同等であるのでここでは詳細な説明は省略する。
【００５８】
また、符号１１８はＲＯＭおよびＲＡＭ（あるいはさらに仮想記憶機構なども含む）から成るメモリで、プロセッサ１１０１、１１０２…１１０３のプログラムの格納、あるいはタスク実行時のワークエリアとして用いられる。
【００５９】
プロセッサ選択部１１１０は、前述の第１〜第３実施形態と同様に、たとえばプロセッサ１１０１〜１１０３（あるいは他のプロセッサ）のソフトウェアモジュールや専用のハードウェア回路から構成することができる。プロセッサ選択部１１１０をソフトウェアモジュールとして構成する場合には、たとえば、後述の図６に示すような割り込み制御処理をオペレーティングシステムのカーネルのソフトウェアモジュールの１つとして実装する構成が考えられる。
【００６０】
次に本実施形態の動作を図６のフローチャートを参照して説明する。
【００６１】
Ｉ／Ｏ回路１１１１、タイマー１１１２または不図示の他の外部割り込み発生要因から外部割り込み要求が発生すると（ステップＳ１２０１）、すべて割り込み受付部１１１３に通知される（ステップＳ１２０２）。割り込み受付部１１１３が割り込みを受け付けると、割り込み通知部１１１４はプロセッサ選択部１１１０に割り込み要求を通知すべきプロセッサを問い合わせる（ステップＳ１２０３）。
【００６２】
割り込み要求を通知すべきプロセッサの問い合わせを受けたプロセッサ選択部１１１０は、割り込み状態通知部１１０４、１１０５…１１０６からプロセッサ１１０１、１１０２…１１０３の現在の割り込み状態をそれぞれ獲得し（ステップＳ１２０４）、割り込み状態に無いプロセッサが有るかチェックする（ステップＳ１２０５）。
【００６３】
割り込み状態に無いプロセッサがあれば、割り込み状態に無いプロセッサの中から１つのプロセッサを選択し（ステップＳ１２０６）、ステップＳ１２０９へ進む。
【００６４】
ステップＳ１２０５ですべてのプロセッサ１１０１、１１０２…１１０３が割り込み状態にあれば、割り込み優先度通知部１１０７、１１０８…１１０９からプロセッサ１１０１、１１０２…１１０３で実行している割り込み処理の優先度をそれぞれ獲得し（ステップＳ１２０７）、獲得した割り込みの優先度を比較することにより、最も低い優先度の割り込みをを実行しているプロセッサをプロセッサ１１０１、１１０２…１１０３の中から１つ選択し（ステップＳ１２０８）、ステップＳ１２０９へ進む。
【００６５】
ステップＳ１２０９では、ステップＳ１２０６またはステップＳ１２０８で選択したプロセッサを割り込み通知部１１１４へ通知し、ステップＳ１２１０へ進む。
【００６６】
割り込みすべきプロセッサの通知を受けた割り込み通知部１１１４は、通知された割り込みすべきプロセッサヘ割り込み受付部１１１３で受け付けた外部割り込み要求を通知する（ステップＳ１２１０）。割り込み通知部１１１４から割り込み要求を受けたプロセッサは割り込み処理を実行する（ステップＳ１２１１）。
【００６７】
以上のように、外部割り込みが発生した時に、割り込み状態に無いプロセッサに割り込み要求を行なうことにより、常に割り込み処理を通常タスクよりも優先的に実行させることができる。また、すべてのプロセッサが割り込み状態にある時には、最も低い割り込み優先度を持つ割り込み処理を実行しているプロセッサに割り込み要求を行なうことにより、割り込み優先度に従った効率的な割り込み処理を行なうことができる。さらに、すべてのプロセッサが割り込みを受け付け可能にすることにより、１つのプロセッサに障害が起きてもシステム全体の障害とならないという効果もある。
【００６８】
（第５実施形態）
上記第４実施形態では、ステップＳ１２０７で割り込み優先度通知部１１０７、１１０８…１１０９からプロセッサ１１０１、１１０２…１１０３で実行している割り込みの優先度をそれぞれ獲得するようにしているが、ステップＳ１２０５より前にこの優先度の獲得処理を行なうようにしても同様の効果が得られることはいうまでもない。
【００６９】
（第６実施形態）
図７を参照して第６実施形態を説明する。本実施形態は、プロセッサ選択部１１１０の構成をより具体的に説明するものである。
【００７０】
図７において、符号１１１５、１１１６…１１１７はプロセッサ１１０１、１１０２…１１０３が現在割り込み状態にあるのかないのかを保持する割り込み状態バッファである。これら割り込み状態バッファ１１１５〜１１１７は、プロセッサ１１０１、１１０２…１１０３にそれぞれ対応し、プロセッサ１１０１、１１０２…１１０３が割り込み要求を受け付けると、対応する割り込み状態通知部１１０４、１１０５…１１０６から割り込みを受け付けた事が通知され、「割り込み状態」のフラグが対応する割り込み状態バッファ１１１５〜１１１７に書き込まれる。そして、プロセッサ１１０１、１１０２…１１０３が割り込み処理を終了すると、対応する割り込み状態通知部１１０４、１１０５…１１０６から割り込み処理終了が通知され、対応する割り込み状態バッファ１１１５〜１１１７の「割り込み状態」フラグがクリアされる。
【００７１】
第４実施形態においては、図６のステップＳ１２０４で割り込み状態通知部１１０４、１１０５…１１０６からプロセッサ１１０１、１１０２…１１０３の割り込み状態を獲得するものとしたが、このステップＳ１２０４において、割り込み状態バッファ１１１５〜１１１７に保持されている情報をチェックすることにより同様の効果を得ることができる。
【００７２】
（第７実施形態）
第６実施形態では、割り込み状態バッファ１１１５、１１１６…１１１７は、対応するプロセッサ１１０１、１１０２…１１０３が割り込み要求を受け付けた時に割り込み状態通知部１１０４、１１０５…１１０６から割り込みを受け付けた事が通知され、これにより「割り込み状態」のフラグが書き込まれるものとしたが、割り込み状態通知部１１０４、１１０５…１１０６からは通知せずに、図６のステップＳ１２０６またはステップＳ１２０８で割り込みすべきプロセッサを選択した後、選択されたプロセッサに対応する割り込み状態バッファ１１１５、１１１６…１１１７に「割り込み状態」のフラグを書き込んでも同様の効果が得られる。
【００７３】
（第８実施形態）
図８を参照して第８実施形態を説明する。本実施形態は、第６あるいは第７実施形態の構成にさらに割り込み優先度バッファ１１１８、１１１９…１１２０を設けたものである。
【００７４】
図８において、符号１１１８、１１１９…１１２０はプロセッサ１１０１、１１０２…１１０３で実行している割り込み処理の優先度を保持する割り込み優先度バッファであり、プロセッサ１１０１、１１０２…１１０３にそれぞれ対応している。
【００７５】
本実施形態においては、対応するプロセッサで実行する割り込み処理が切り替わった時に一度だけプロセッサの割り込み優先度通知部から割り込み優先度を通知するものとし、この優先度情報により割り込み優先度バッファ１１１８、１１１９…１１２０に保持されている割り込み優先度が書き換えられるものとする。
【００７６】
第４実施形態においては、プロセッサ選択部１１１０は割り込み優先度通知部１１０７、１１０８…１１０９からプロセッサ１１０１、１１０２…１１０３で実行している割り込みの優先度をそれぞれ獲得するとしているが、本実施形態では上記のようにしてプロセッサ選択部１１１０内の割り込み優先度バッファ１１１８、１１１９…１１２０で保持、更新されている割り込み優先度情報を使用している。このようにしても、同様の効果が得られることは言うまでもない。
【００７７】
【発明の効果】
以上の説明から明らかなように、本発明によれば、外部割り込み要求を受け付ける割り込み機能を備えた複数のプロセッサを持つマルチプロセッサシステム、その制御方法、および制御プログラムにおいて、
プロセッサの各々で実行しているタスクの優先度を獲得するタスク優先度獲得手段（または工程）と、
タスク優先度獲得手段（または工程）により獲得されたプロセッサのタスクの優先度に基づき最も優先度の低いタスクを実行しているプロセッサを選択するプロセッサ選択手段（または工程）と、
発生した外部割り込み要求をすべて受け付ける割り込み受付手段（または工程）と、
割り込み受付手段（または工程）で受け付けた割り込み要求をプロセッサ選択手段（または工程）により決定したプロセッサに通知する割り込み通知手段（または工程）を有し、
プロセッサ選択手段（または工程）により選択されたプロセッサに発生した外部割り込み要求に対応した割り込み処理を実行させる
構成を採用しているので、外部割り込み発生時に最も低い優先度のタスクを実行しているプロセッサのみに割り込み要求を行なうことができ、高い優先度を持つタスクが阻害されることがなく、効率的にタスクを実行し、システム全体として効率的な割り込み処理を行なえるという効果がある。また、すべてのプロセッサが割り込みを受け付け可能であることにより、１つのプロセッサに障害が起きてもシステム全体の障害とならないという効果もある。
【００７８】
あるいは、
各プロセッサの割り込み状態の有無をプロセッサ外部に通知する割り込み状態通知手段（または工程）と、
割り込み状態に有る時に現在実行している割り込みの優先度をプロセッサ外部に通知する割り込み優先度通知手段（または工程）と、
割り込み状態通知手段（または工程）により得られた各々のプロセッサの割り込み状態と、割り込み優先度通知手段（または工程）によって得られた各々のプロセッサの割り込み優先度から割り込み状態に無いプロセッサがあれば割り込み状態に無いプロセッサを、また、すべてのプロセッサが割り込み状態に有る時は最も低い割り込み優先度の割り込みを実行しているプロセッサを選択するプロセッサ選択手段（または工程）と、
発生した外部割り込みの要求をすべて受け付ける割り込み受付手段（または工程）と、
割り込み受付手段（または工程）で受け付けた割り込み要求をプロセッサ選択手段（または工程）により決定したプロセッサに通知する割り込み通知手段（または工程）を有し、
プロセッサ選択手段（または工程）により選択された外部割り込み要求に対応した割り込み処理を実行させる構成を採用しているので、外部割り込みが発生した時に、割り込み状態に無いプロセッサに割り込み要求を行なうことにより、常に割り込み処理を通常タスクよりも優先的に実行させることができる。また、すべてのプロセッサが割り込み状態にある時には、最も低い割り込み優先度を持つ割り込み処理を実行しているプロセッサに割り込み要求を行なうことにより、割り込み優先度に従った効率的な割り込み処理を行なうことができる。さらに、すべてのプロセッサが割り込みを受け付け可能にすることにより、１つのプロセッサに障害が起きてもシステム全体の障害とならないという効果もある。
【図面の簡単な説明】
【図１】本発明の第１実施形態の構成を示すブロック図である。
【図２】本発明の第１実施形態の動作を示すフローチャート図である。
【図３】本発明の第２実施形態の構成を示すブロック図である。
【図４】本発明の第３実施形態の構成を示すブロック図である。
【図５】本発明の第４実施形態の構成を示すブロック図である。
【図６】本発明の第４実施形態の動作を示すフローチャート図である。
【図７】本発明の第６実施形態の構成を示すブロック図である。
【図８】本発明の第８実施形態の構成を示すブロック図である。
【符号の説明】
１０１〜１０３  プロセッサ
１０４  タスク優先度獲得部
１０５  プロセッサ選択手段
１０６  割り込み受付部
１０９  割り込み通知部
１１０〜１１２  タスク優先度バッファ
１１３  プロセッサバッファ
１１８  メモリ
１１０１〜１１０３  プロセッサ
１１０４〜１１０６  割り込み状態通知部
１１０７〜１１０９  割り込み優先度通知部
１１１０  プロセッサ選択部
１１１３  割り込み受付部
１１１４  割り込み通知部
１１１５〜１１１７  割り込み状態バッファ
１１１８〜１１２０  割り込み優先度バッファ
【図１】
2005004562.tif 000003
【図２】
2005004562.tif 000004
【図３】
2005004562.tif 000005
【図４】
2005004562.tif 000006
【図５】
2005004562.tif 000007
【図６】
2005004562.tif 000008
【図７】
2005004562.tif 000009
【図８】
2005004562.tif 000010