JP2008065713A - マルチプロセッサシステム及び割込み制御方法 - Google Patents

マルチプロセッサシステム及び割込み制御方法 Download PDF

Info

Publication number
JP2008065713A
JP2008065713A JP2006244832A JP2006244832A JP2008065713A JP 2008065713 A JP2008065713 A JP 2008065713A JP 2006244832 A JP2006244832 A JP 2006244832A JP 2006244832 A JP2006244832 A JP 2006244832A JP 2008065713 A JP2008065713 A JP 2008065713A
Authority
JP
Japan
Prior art keywords
interrupt
processing
multiprocessor system
processor
sub cpu
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2006244832A
Other languages
English (en)
Inventor
Keiko Uchiumi
慶子 内海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2006244832A priority Critical patent/JP2008065713A/ja
Priority to US11/843,503 priority patent/US7721035B2/en
Publication of JP2008065713A publication Critical patent/JP2008065713A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt

Abstract

【課題】 1つのプロセッサが割り込みを受け付け、その割込みの要因に応じて、割込み処理を他のプロセッサに実行させる。
【解決手段】 複数のプロセッサにより割り込みを処理するマルチプロセッサシステムにおいて、1つのプロセッサが外部デバイスからの割込みを受け付け、その割込みの要因に応じて、割込みに対応する割込み処理を他のプロセッサに実行させる。
【選択図】 図2

Description

本発明は、複数のプロセッサにおける割込み制御技術に関するものである。
従来、制御装置などの組み込みシステムでは、システム制御に対して高いリアルタイム性が要求されている。これは、システム制御に対応する割込みが発生し、その割込み処理を終えるまでの時間が予め設定された期間を超えると、システム制御に支障が出るためである。例えば、ある制御装置からの異常検知情報を受けた場合、必要な安全装置を直ちに作動させる必要がある。通常、安全装置は危険な状態が発生する前に作動して意味があるもので、発生してから作動するのでは意味がない。
このように、高いリアルタイム性を要求する組み込みシステムでは、計算すること自体が目的なのではなく、計算結果を使って他の機器やシステムを制御し、必要な処理を行うことが重要な目的の一つである。従って、処理時間に対する要求が厳しく、処理が遅れると多くの場合、結果を出しても無意味になってしまう。
システムのリアルタイム性は割込処理の遅延時間により定まるが、その原因の多くは、割込み処理の工数やソースが過剰すぎることである。そのため、処理終了時間が間に合わなくなる。また、割込み処理中は別の割込みを受信できないため、割込みが発生してから処理を開始するまでに時間がかかる。
また、マルチプロセッサシステムでの割込み処理の制御は、非常に複雑なため、複数の割込みには専用のCPUを予め定め、専用のCPUのみで行える構成にすることが多い。そのため、ハードウェア的には全てのCPUが割込みを受信できても、並列実行をソフトウェアにより禁止されているため、割込み処理は専用のCPUに割り当てられているものが多かった。
このようなことから、割込み処理を高速化したり、汎用性をもたせたりすることを目的とする種々の提案がなされている。以下、そのような提案の具体的な例を紹介する。
マルチプロセッサシステムでの、リアルタイム性を向上させる方法(例えば、特許文献1参照)が提案されている。特許文献1には、あるCPUがアイドル状態となったとき、そのCPUが他のCPUを割り込み禁止とし、全ての割込み処理を行うことが記載されている。また、割込み種別毎に1個又は複数個のCPUが割込み処理を行うようにレジスタ値を設定し、割込み処理を行うCPUを選択することも記載されている。
これにより、動的或いは静的に割込み処理を複数個のCPUに分散させることができ、システムのリアルタイム性が向上する。
また、割込みコントローラに左右されず、リアルタイム性を向上させる方法(例えば、特許文献2参照)が提案されている。特許文献2には、各割込みをそれぞれ処理する割込みタスクを生成し、各割込みタスクが処理する割込みに対して決められた割込みレベルを割込みタスクの優先度に反映する。そして、割込みを受付けると、受付けた割込みを処理する割込みタスクを起動してスケジューラに制御を移すことが記載されている。
これにより、割込みレベルの数を、割込みコントローラの優先度制御仕様に影響されることなく自由に設定することができ、割込み制御プログラムの中で割込みコントローラの優先度制御仕様に影響される箇所を減らすことができる。よって、異なる割込みコントローラへの移行を容易にすることが可能である。
特開平05−324569号公報 特開2005−196459号公報
しかしながら、特許文献1では、アイドル状態のCPUのみが割込みを取得できるため、アイドル状態のCPUがなければ、何れのCPUも割込みを取得することができない。また、全ての割込み種別毎に1個又は複数個のCPUが割込み処理を行うようにレジスタ値を設定するため、ハードウェア構成を変更したり、或いは割込み要因が増減した場合、レジスタ値の設定や必要個数も変更しなければならず、汎用的ではない。
また、特許文献2では、優先度の高い割込みが多く発生した場合、高優先度のタスクが数多く動作することになり、リアルタイム性を保障することができない。また、優先度の低い割込み処理が、長い時間、処理されない可能性もある。
本発明は、1つのプロセッサが割り込みを受け付け、その割込みの要因に応じて、割込み処理を他のプロセッサに実行させることを目的とする。
本発明は、複数のプロセッサにより割り込みを処理するマルチプロセッサシステムであって、
1つのプロセッサが外部デバイスからの割込みを受け付ける受付手段と、前記受付手段で受け付けた割込みの要因に応じて、前記割込みに対応する割込み処理を他のプロセッサに実行させる割込み処理制御手段とを有することを特徴とする。
また、本発明は、複数のプロセッサにより割り込みを処理するマルチプロセッサシステムにおける割込み制御方法であって、1つのプロセッサが外部デバイスからの割込みを受け付ける受付工程と、前記受付工程で受け付けた割込みの要因に応じて、前記割込みに対応する割込み処理を他のプロセッサに実行させる割込み処理制御工程とを有することを特徴とする。
本発明によれば、1つのプロセッサが割り込みを受け付け、その割込みの要因に応じて、割込み処理を他のプロセッサに実行させることにより、高速に処理でき、リアルタイム性を向上させることができる。
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
まず、本発明を説明する前に前提事項について概略的に説明する。図1は、マルチプロセッサシステム割込み制御方式が採用されるバス共有型マルチプロセッサシステムの構成の一例を示すブロック図である。図1において、101〜103はプロセッサ(CPU)であり、データ処理、演算処理及び制御を行う。104はメモリコントローラ(MC)であり、CPU101〜103の共有メモリ107を制御する。また、共有メモリ107には、CPU101〜103の動作に必要なデータが格納される。
105は内部割込みコントローラ(IC)であり、マルチプロセッサシステム100内のCPU101〜103の割込みを制御する。また、内部割込みコントローラ105には後述する外部割込みコントローラからの割込みも通知される。106はバスコントローラ(BC)であり、マルチプロセッサシステム100内や内部及び外部とのバス通信を制御する。
108は外部割込みコントローラ(IC)であり、マルチプロセッサシステム100に接続されている外部デバイス109〜111からの割込みを制御する。そして、外部デバイス109〜111からの割込みを検知すると、バスコントローラ106を経由して内部割込みコントローラ105に通知する。
図2は、本実施形態における割込み処理の全体像を示す概念図である。まず、予め外部割込みコントローラ108からの外部割込みを受け取るCPUをCPU101〜103の中で設定し、そのCPUをメインCPU(この例では、CPU101)とする。よって、内部割込みコントローラ105は、外部割込みコントローラ108から受け取った全ての外部割込みをメインCPU101に通知する。また、メインCPU101以外のCPUをサブCPU(この例では、CPU102、103)とし、割込み処理を行うCPUとする。
図2において、マルチプロセッサシステム100に接続されている外部デバイス109で割込みA201が発生し、外部デバイス110で割込みB202が発生すると、割込み受信CPUであるメインCPU101に通知される。メインCPU101は、通知された割込みA201と割込みB202に対応する割込みハンドラA203と割込みハンドラB204を検索する。そして、検索した割込みハンドラA203と割込みハンドラB204をアイドル状態のサブCPU102と103に送信し、処理を行わせる。
尚、本実施形態では、マルチプロセッサシステム100を構成するCPUの数に規定はなく、システム構成や処理工数に応じて増減が可能である。例えば、サブCPUの数を増加させた場合、割込みに対応する割込みハンドラの処理数も増加し、全体として割り込みの待機時間を減少させることができる。
図3は、割込み要因と割込みハンドラとの対応を設定するテーブルの構成の一例を示す図である。図3に示すように、このテーブルは、割込み要因301、割込み優先度302、割込みハンドラ303で構成され、メモリ107上に保存される。
割込み要因301には、接続されている外部デバイス109〜111で発生する全ての割込み要因が登録されている。割込み要因301は、外部デバイスの種類によって異なるため、システム構成により多種多様である。例えば、パーソナルコンピュータの場合には、キーボード、マウス、ネットワーク(LAN)、シリアル、CD−ROMドライブなどからの割込みが割込み要因として登録される。
優先度302には、割込み要因301別に割込み処理の優先度を設定する。本実施形態では、優先度302は0〜9までとし、昇順に優先度が低くなるものとする。即ち、優先度0が最も高い優先度で、優先度9が最も低い優先度として割込み処理される。
割込みハンドラ303には、割込み要因301を受信した後に、割込み処理として動作させる割込みハンドラを設定する。一般的には、割込みハンドラの関数アドレス等を設定するが、本実施形態では、説明を簡単にするために、ハンドラ名で記述している。また、割込み要因301や優先度302は、システム構成、目的、制約によってそれぞれ異なるため、本実施形態では、割込み要因名を具体的に明記しないことにする。
[第1の実施形態]
以上、本発明の前提事項について概略的に説明したが、以下に具体的な実施方法である第1の実施形態を、図面を用いて説明する。
まず、図4及び図5を用いて、メインCPU101が割込みを受信した際の処理を説明する。図4は、図3に示す割込み要因301が並列処理可能か否かを設定するテーブルの一例を示す図である。図4において、並列処理401には、割込み要因301が並列処理可能か否かの情報を設定する。第1の実施形態では、並列処理不可の場合は「NG」を、並列処理可能の場合は「OK」を設定する。また、処理状態402には、並列処理不可の割り込みに対応する割込みハンドラの処理状態を設定する。尚、処理状態402及びその切替方法については、更に後述する。
図5は、第1の実施形態におけるメインCPU101の割込み処理の一連の流れを示すフローチャートである。まず、ステップS501において、メインCPU101は、外部割込みコントローラ108から内部割込みコントローラ105へバスコントローラ106経由で通知された割込みを受信する。次に、ステップS502において、実行すべき割込み処理が並列処理可能か否かを、図4に示すテーブルを用いて調べる。ここで、受信した割込みの割込み要因301が割込みAの場合、並列処理401より割込みハンドラが並列処理可能であると判断する。また、受信した割込みの割込み要因301が割込みBの場合、並列処理401より割込みハンドラが並列処理不可であると判断する。
ステップS502で、並列処理可能であると判断した場合、ステップS503へ進み、並列処理可能割込みハンドラ振り分け処理を行う。尚、この並列処理可能割込みハンドラ振り分け処理に関しては、図6〜図9を用いて更に後述する。
一方、ステップS502で、並列処理不可であると判断した場合は、ステップS504へ進み、並列処理不可割込みハンドラ振り分け処理を行う。尚、この並列処理不可割込みハンドラ振り分け処理に関しては、図10〜図11を用いて更に後述する。
次に、図5に示すS503の並列処理可能割込みハンドラ振り分け処理を、図6〜図9を用いて説明する。図6は、メインCPU101とサブCPU102との通信状態の一例を示す図である。
図7は、サブCPUの動作状態の一例を示すテーブル図である。図7において、701はCPU−IDであり、サブCPUを識別するための識別子である。702はサブCPUの動作状態である。この例では、CPU−ID701が「サブCPU4」のサブCPUが動作状態702として「アイドル状態」703を示し、他のサブCPUは全て「使用中」を示している。
図8は、サブCPUが全て動作中で割込み処理が行えないとき、処理待ちキューとして保存する行列の一例を示す図である。図8に示す例では、割込みC、Dが割込み処理待ち行列801に保存されている状態で、新たに割込みAが発生した場合である。この場合、割込みAは、図3に示すように、優先度302が0で最も高いので、メインCPU101は割込みAを割込み処理待ち行列801の先頭にソートする。
図9は、並列処理可能割込みハンドラ振り分け処理を示すフローチャートである。尚、この例では、外部デバイス109から割込み要因301として割込みAを受け付けた際に、メインCPU101が実行する割込みハンドラ振り分け処理を説明する。
まず、ステップS901において、図7に示すテーブルを用いて、アイドル状態のサブCPUが存在するか否かを調べる。具体的には、サブCPUの動作状態を示すテーブルを検索し、アイドル状態のサブCPUが存在する場合、ステップS902へ進み、そのサブCPU(サブCPU4)の動作状態702を「使用中」に変更する。この処理は、割込みハンドラ処理要求が重複しないための排他制御である。
次に、ステップS903において、そのサブCPUに割込みハンドラの処理要求を送信する。具体的には、図3に示す割込み要因と割込みハンドラとの対応テーブルを検索し、割込みAに対応する割込みハンドラAを決定する。そして、ステップS902でアイドル状態のサブCPUに割込みハンドラAの処理要求を送信する。このとき、図6に示すように、メインCPU101は、割込みの要因を識別するID601と割込みハンドラ602を含むパケットをサブCPU102へ送信する。
また、上述のステップS901において、アイドル状態のサブCPUが存在しなければ、ステップS904へ進み、図8に示すように、割込みAを割込み処理待ち行列801に保存し、サブCPUがアイドル状態になるのを待つ。尚、メインCPU101は、図3に示す優先度302に従って割込みAを優先順にソートする。この場合、図8に示すように、割り込みAは割り込み処理待ち行列801の先頭にソートされる。
ここで、図5に示すS504の並列処理不可割込みハンドラ振り分け処理を、図10〜図11を用いて説明する。図10は、並列処理が行えない割込みが発生し、かつ該割込み処理が処理中の場合、処理終了待ちキューとして保存する行列の一例を示す図である。
図11は、並列処理不可割込みハンドラ振り分け処理を示すフローチャートである。尚、この例では、外部デバイス110から割込み要因301として割込みBを受け付けた際に、メインCPU101が実行する割込みハンドラ振り分け処理を説明する。
まず、ステップS1101において、図4に示すテーブルを用いて、割込みに対応する割込みハンドラが処理可能であるか否かを調べる。図4に示すように、処理状態402として、サブCPUで処理中を意味する「処理中」、割込み処理待ち行列(図8)にキューイングされていることを意味する「待機中」、処理可能を意味する「処理可能」の3つの処理状態がある。
ここで、割込みハンドラの処理状態402が処理可能であれば、ステップS1102へ進み、アイドル状態のサブCPUが存在するか否かを調べる。この処理は、並列処理可能割込みハンドラ振り分け処理と同様である。その結果、アイドル状態のサブCPUが存在する場合、ステップS1103へ進み、そのサブCPUの動作状態702を「使用中」に変更する。そして、ステップS1104において、割込みハンドラBの処理状態402を「処理中」に変更する。これは、割込みハンドラ処理が並列動作しないための排他制御である。次に、ステップS1105において、サブCPUに対して割込みハンドラの処理を要求する。
また、上述したステップS1102において、アイドル状態のサブCPUが存在しない場合、ステップS1106へ進み、その処理状態403を「待機中」に変更する。つまり、ステップS1101で受信した割込みの処理状態402を「待機中」に変更する。この処理は、割込み処理待ち行列(図8)に割込みBが複数入るのを防ぎ、割込みハンドラBが誤って並列動作しないための排他制御である。そして、ステップS1107において、上述したステップS904の処理と同様に、割込みBを割込み処理待ち行列801に保存し、サブCPUがアイドル状態になるのを待つ。尚、メインCPU101は、図3に示す優先度302に従って割込みBを優先順にソートする。
一方、上述したステップS1101において、割込みBの処理状態402が「待機中」又は「処理中」の場合は、ステップS1108へ進み、処理状態402が「処理可能」になるのを待機する。この場合、図11に示すように、割込み処理待ち行列801に割込みBを保存するのではなく、処理可能状態になるまで処理可能状態待ち行列1001に一時的に退避させておく。
次に、メインCPU101から送信された処理命令をサブCPU102、103が受信したときのサブCPU側の処理を、図6及び図12を用いて説明する。
図12は、割込みハンドラを実行するサブCPUの処理を示すフローチャートである。まず、ステップS1201において、サブCPU102がメインCPU101から割込みハンドラ処理命令610を受信する。そして、ステップS1202において、ステップS1201で受信した割込みハンドラ602の処理を実行する。次に、ステップS1203において、割込みハンドラ処理が終了すると、処理終了通知620をメインCPU101に送信する。このとき、割込み要因を識別するID603とサブCPU102の識別子であるサブCPU−ID604を含むパケットを送信する。
次に、サブCPUから送信された処理終了通知を受信したメインCPU側での処理を、図13を用いて説明する。
図13は、第1の実施形態におけるメインCPUの割込みハンドラ処理終了後の処理を示すフローチャートである。まず、ステップS1301において、サブCPUから割込みハンドラ処理終了通知620を受信する。この終了通知620には、サブCPUの識別子であるサブCPU−ID604と、処理が終了した割込み要因の種類603とが含まれている。
次に、ステップS1302において、ステップS1301で受信した終了通知620より、処理が終了した割込み要因512の割込みハンドラが並列可能か否かを、図4に示すテーブルを用いて調べる。ここで、割込みB又はDの終了通知を受信した場合、並列処理不可と判断し、ステップS1303へ進み、処理状態変更処理を行う。この処理状態変更処理に関しては、更に後述する。
また、ステップS1302において、並列処理可能な割込みの処理終了通知を受信した場合、ステップS1304へ進む。ステップS1304では、割込み処理待ち行列801に処理待ちの割込みキューがあるかを調べる。ここで、キューがない場合は、ステップS1308へ進み、ステップS1301で受信したサブCPU−ID604に基づき図7に示すサブCPUの動作状態を「使用中」から「アイドル」へ変更する。この処理により、このサブCPUは割込みハンドラ処理要求を受付け可能な状態となる。
また、ステップS1304において、割込みキューがあると判断した場合は、ステップSS1305へ進む。ステップS1305では、割込み処理待ち行列801における先頭の割込みを取得し、図4を参照してその割込みの割込みハンドラが並列処理可能か否かを調べる。ここで、並列処理不可と判断した場合、ステップS1306へ進み、ステップS1304で取得した先頭割込みに対応する割込みの処理状態を「待機中」から「処理中」へ変更する。これは、割込みハンドラ処理が並列動作しないための排他制御である。例えば、先頭割込みキューが割込みBであった場合、データ405の処理状態を「処理中」に変更する。
また、ステップS1305において、並列処理可能な割込みであれば、直接ステップS1307へ進み、ステップS1301で受信したサブCPU−IDに基づき、ステップS1305で取得した先頭の割込みに対応する割込みハンドラの処理を要求する。つまり、例えば、サブCPU−IDがサブCPU4である場合は、サブCPU4へ割込みAに対応する割込みハンドラA304の処理を要求する。
ここで、ステップS1303における処理状態変更処理を、図14及び図15を用いて説明する。
図14は、処理可能状態待ち行列の割込みを割込み処理待ち行列に移動する処理を説明するための図である。また、図15は、図14に示すS1303での割込み処理状態変更処理を示すフローチャートである。
まず、ステップS1501において、ステップS1301で受信した割込みに対応する割込みキューが処理可能状態待ち行列1001に存在するか否かを調べる。図14に示す例では、ステップS1301で受信した割込み要因ID603が割込みBとすると、ステップS1501において、対応する割込みBの割込みキュー1401が処理可能状態待ち行列1001に存在すると判断する。そして、ステップS1502において、ステップS1301で受信した割込み要因である割込みBに対応する割込みの処理状態を「待機中」に変更する。よって、割込みBの処理は、任意のサブCPUが「アイドル」状態になれば、処理可能となる。
次に、ステップS1503において、ステップS1501で検索した処理可能状態待ち行列1001内の割り込みキュー1401を処理可能状態待ち行列から取り出し、割込み処理待ち行列801に入れ、割込み優先度順にソートする。
また、ステップS1501において、ステップS1301で受信した割込みIDの割込みが処理可能状態待ち行列1001に存在しない場合、ステップS1504へ進む。ステップS1504では、ステップS1301で受信した割込みである割込みIDに対応する割込みの処理状態を「処理可能」に変更し、処理を終了する。よって、次回、同じ割込みが発生したら、直に割込み待ち行列801に割込みキューが入ることになる。
また、図10及び図14では、処理可能状態待ち行列1001を1つとしたが、割込みの種別毎に行列を1つずつ作成し、制御しても良い。
また、サブCPUや並列処理不可の割込みハンドラの排他制御方法として、システム設計によってはセマフォやミューテックスなどを使用する必要がある。
[第2の実施形態]
次に、図面を参照しながら本発明に係る第2の実施形態を詳細に説明する。第2の実施形態では、ある特定の割込み要因に対してのみ割込み処理を行う専用のサブCPUを割り当てる機能を追加する。例えば、図3より、割込み優先度が高い割込みAや割込みBは、割込み処理終了までの時間が厳しく制限されている可能性が高い。
そこで、第2の実施形態では、図16に示すように、割込みグループに対して専用サブCPU1601〜1603を割り当てる。逆に、割込み優先度の低い割り込みXや割込みYは、長い時間処理されずになる可能性がある。それを回避するため、図16に示すように、優先度の低い割込みを処理させる専用のサブCPU1604を1つ割り当てる。
優先度の高い割込みに対して専用サブCPUを割り当てる方法の一例として、次のような方法がある。優先度1以上の割込み、つまり割込みA及び割込みBのような、優先度が高い割込みグループ(図3に示す310)を定め、この割込みグループに対して1つ以上の専用サブCPUを複数割り当てる。
また、複数の割込みグループが存在し、複数の割込みグループ毎に1つ以上の専用サブCPUを割り当てることも可能である。この場合、割込みグループ310の処理にはサブCPU1601〜1603が使用できるが、割込みグループ310以外の割込み処理には使用できない。
即ち、割込みグループ310以外の割込みキューが割込み処理待ち行列1001にあり、サブCPU1601〜1603の何れかがアイドル状態の場合にあっても、割込み処理待ち行列1001にある割込みキューの割込み処理は実行されない。そして、割込み処理待ち行列にある割込みグループ310以外の割込みキューは、サブCPU1601〜1603以外がアイドル状態になるまで待機しなければならない。
これにより、専用サブCPU1601〜1603がアイドル状態で待機している可能性は高く、割込みグループ310の割込みに高速に対応し、割込み処理を行うことが可能となる。
また、優先度の高い割込みに対して専用サブCPUを割り当てる方法の他の例として、次のような方法がある。図17に示す割込みA用1701、1702、割込みB用1703のように、特定の1つの割込み要因毎に、1つ以上の専用サブCPUを割り当てる。この方法の場合、割込みAの処理にはサブCPU1701、1702、割込みBの処理にはサブCPU1703が使用できるが、それ以外の割込み処理には、これら専用サブCPU1701〜1703は使用できない。
即ち、上述の方法と同様に、割込みA、割込みB以外の割込みキューが割込み処理待ち行列にあり、サブCPU1701〜1703の何れかがアイドル状態だとしても、割込み処理は実行されない。そして、割込みキューはサブCPU1701〜1703以外がアイドル状態になるまで待機しなければならない。
これにより、専用サブCPU1701〜1703はアイドル状態で待機している可能性が高く、割込みA及び割込みBの割込みに高速に対応し、割込み処理を行うことが可能となる。
この方法の場合、サブCPUの数、割込み要因の数、割込みの制限などにより、最適な割り当て方法を検討し定める必要がある。
ここで、優先度の低い割込みに対して専用CPUを割り当てる方法として、次のような方法がある。優先度の低い割込みグループ(図3に示す311)の処理に対して予め専用サブCPU1604を割り当てる方法である。
また、図18に示す処理可能状態待ち1001及び割込み処理待ち行列801に割込みグループ311の割込みキューがN個以上溜まると、専用サブCPU1604を割り当てる。そして、割込みグループ311の割込みキューがM個以下になると、割り当てた専用サブCPU1604を解除する方法である。このようにすることで、長い時間処理されずになる可能性を回避することができる。
また、割込みの処理方法としても、図3で設定してある割込み優先度を反映させた優先度付きタスクを起動し、1つの専用サブCPU上で、複数の割込み処理を同時に行う方法がある。このようにすることで、割込み処理の工数やソースが長くても、専用サブCPUを独占することなく割込み処理することができる。
以上説明したように、複数の割込みを複数のCPUで完全並列に処理することができるので、割込み処理の高速化となり、システムのリアルタイム性が向上する。
また、割込みコントローラやアーキテクチャの種別などに左右されることのないソフトウェアで割込み処理を制御しているため、CPUの数、割込み要因の数、割込みの種類が変更されても、修正が容易である。
更に、割り込みを受信するメインCPUとは別のサブCPUが割込み処理を行うので、割込みを受信できない時間が短縮され、割込み処理の時間制限などを考慮して割込み処理工数をできるだけ削るという複雑な設計を行う必要がなくなる。
尚、本発明は複数の機器(例えば、ホストコンピュータ,インターフェース機器,リーダ,プリンタなど)から構成されるシステムに適用しても、1つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用しても良い。
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPU若しくはMPU)が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
このプログラムコードを供給するための記録媒体として、例えばフレキシブルディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、次の場合も含まれることは言うまでもない。即ち、プログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合である。
更に、記録媒体から読出されたプログラムコードがコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
マルチプロセッサシステム割込み制御方式が採用されるバス共有型マルチプロセッサシステムの構成の一例を示すブロック図である。 本実施形態における割込み処理の全体像を示す概念図である。 割込み要因と割込みハンドラとの対応を設定するテーブルの構成の一例を示す図である。 図3に示す割込み要因301が並列処理可能か否かを設定するテーブルの一例を示す図である。 第1の実施形態におけるメインCPU101の割込み処理の一連の流れを示すフローチャートである。 メインCPU101とサブCPU102との通信状態の一例を示す図である。 サブCPUの動作状態の一例を示すテーブル図である。 サブCPUが全て動作中で割込み処理が行えないとき、処理待ちキューとして保存する行列の一例を示す図である。 並列処理可能割込みハンドラ振り分け処理を示すフローチャートである。 並列処理が行えない割込みが発生し、かつ該割込み処理が処理中の場合、処理終了待ちキューとして保存する行列の一例を示す図である。 並列処理不可割込みハンドラ振り分け処理を示すフローチャートである。 割込みハンドラを実行するサブCPUの処理を示すフローチャートである。 第1の実施形態におけるメインCPUの割込みハンドラ処理終了後の処理を示すフローチャートである。 処理可能状態待ち行列の割込みを割込み処理待ち行列に移動する処理を説明するための図である。 図14に示すS1303での割込み処理状態変更処理を示すフローチャートである。 割込みグループに対して専用サブCPU1601〜1603を割り当てる、第2の実施形態における割込み制御の一例を示す図である。 1つの割込み要因毎に1つ以上の専用サブCPUを割り当てる、第2の実施形態における割込み制御の一例を示す図である。 処理可能状態待ち1001及び割込み処理待ち行列801の割込みキューにより専用サブCPU1604の割り当てを解除する方法を説明するための図である。
符号の説明
100 マルチプロセッサシステム
101 CPU
102 CPU
103 CPU
104 メモリコントローラ(MC)
105 内部割込みコントローラ(IC)
106 バスコントローラ(BC)
107 共有メモリ
108 外部割込みコントローラ(IC)
109 外部デバイス
110 外部デバイス
111 外部デバイス

Claims (9)

  1. 複数のプロセッサにより割り込みを処理するマルチプロセッサシステムであって、
    1つのプロセッサが外部デバイスからの割込みを受け付ける受付手段と、
    前記受付手段で受け付けた割込みの要因に応じて、前記割込みに対応する割込み処理を他のプロセッサに実行させる割込み処理制御手段と、
    を有することを特徴とするマルチプロセッサシステム。
  2. 前記割込み処理制御手段は、前記割り込みに対応する割込み処理をアイドル状態のプロセッサに実行させることを特徴とする請求項1記載のマルチプロセッサシステム。
  3. 前記割込み処理制御手段は、前記割込みの要因毎に予め設定されている割込み優先度に基づき、前記割り込みに対応する割込み処理を他のプロセッサに実行させることを特徴とする請求項1又は2記載のマルチプロセッサシステム。
  4. 前記割込み処理制御手段は、前記割込みの要因毎に予め設定されている並列処理可能か否かの情報に基づき、前記割り込みに対応する割込み処理を他のプロセッサに実行させることを特徴とする請求項1乃至3の何れか一項記載のマルチプロセッサシステム。
  5. 前記割込み処理制御手段は、特定の要因の割込みを受け付けた場合、前記割込みに対応する割込み処理を、前記特定の要因を専用に処理するプロセッサに実行させることを特徴とする請求項1乃至4の何れか一項記載のマルチプロセッサシステム。
  6. 前記割り込みに対応する割込み処理は、前記他のプロセッサ上で動作するソフトウェアであることを特徴とする請求項1乃至5の何れか一項記載のマルチプロセッサシステム。
  7. 複数のプロセッサにより割り込みを処理するマルチプロセッサシステムにおける割込み制御方法であって、
    1つのプロセッサが外部デバイスからの割込みを受け付ける受付工程と、
    前記受付工程で受け付けた割込みの要因に応じて、前記割込みに対応する割込み処理を他のプロセッサに実行させる割込み処理制御工程と、
    を有することを特徴とする割込み制御方法。
  8. 請求項7記載の割込み制御方法をコンピュータに実行させるためのプログラム。
  9. 請求項8記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2006244832A 2006-09-08 2006-09-08 マルチプロセッサシステム及び割込み制御方法 Withdrawn JP2008065713A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006244832A JP2008065713A (ja) 2006-09-08 2006-09-08 マルチプロセッサシステム及び割込み制御方法
US11/843,503 US7721035B2 (en) 2006-09-08 2007-08-22 Multiprocessor system, processor and interrupt control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006244832A JP2008065713A (ja) 2006-09-08 2006-09-08 マルチプロセッサシステム及び割込み制御方法

Publications (1)

Publication Number Publication Date
JP2008065713A true JP2008065713A (ja) 2008-03-21

Family

ID=39171122

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006244832A Withdrawn JP2008065713A (ja) 2006-09-08 2006-09-08 マルチプロセッサシステム及び割込み制御方法

Country Status (2)

Country Link
US (1) US7721035B2 (ja)
JP (1) JP2008065713A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009122670A1 (ja) * 2008-04-03 2009-10-08 パナソニック株式会社 マルチプロセッサシステムおよびマルチプロセッサシステムの割込み制御方法
JP2010146065A (ja) * 2008-12-16 2010-07-01 Nec Corp 情報処理装置、割り込み制御方法
WO2016067496A1 (ja) * 2014-10-30 2016-05-06 日本電気株式会社 情報処理装置
WO2016075813A1 (ja) * 2014-11-14 2016-05-19 株式会社日立製作所 計算機システム、及びその制御方法
WO2016092667A1 (ja) * 2014-12-11 2016-06-16 株式会社日立製作所 計算機及び割込み制御方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5167844B2 (ja) * 2008-02-05 2013-03-21 日本電気株式会社 プロセッサ、電子機器、割込み制御方法及び割込み制御プログラム
US8024504B2 (en) * 2008-06-26 2011-09-20 Microsoft Corporation Processor interrupt determination
US20090327556A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Processor Interrupt Selection
JP5512383B2 (ja) * 2010-05-12 2014-06-04 ルネサスエレクトロニクス株式会社 計算機システム
US9256461B2 (en) * 2013-09-18 2016-02-09 International Business Machines Corporation Handling interrupt actions for inter-thread communication
US10552205B2 (en) * 2016-04-02 2020-02-04 Intel Corporation Work conserving, load balancing, and scheduling
US11630789B2 (en) 2020-09-11 2023-04-18 Apple Inc. Scalable interrupts
US20230053530A1 (en) 2021-08-23 2023-02-23 Apple Inc. Scalable System on a Chip

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4907149A (en) * 1983-07-22 1990-03-06 Texas Instruments Incorporated Dynamic redirection of interrupts
US4972312A (en) * 1985-11-04 1990-11-20 U.S. Philips Corporation Multiprocess computer and method for operating same having context switching in response to a peripheral interrupt
JP2855298B2 (ja) * 1990-12-21 1999-02-10 インテル・コーポレーション 割込み要求の仲裁方法およびマルチプロセッサシステム
JPH04318654A (ja) * 1991-02-13 1992-11-10 Hewlett Packard Co <Hp> マイクロプロセッサへの割り込みのリダイレクションシステム
US5214793A (en) * 1991-03-15 1993-05-25 Pulse-Com Corporation Electronic billboard and vehicle traffic control communication system
JPH05324569A (ja) 1992-05-21 1993-12-07 Mitsubishi Electric Corp 割り込み制御方式
US5371884A (en) * 1993-12-21 1994-12-06 Taligent, Inc. Processor fault recovery system
US5857090A (en) * 1995-12-29 1999-01-05 Intel Corporation Input/output subsystem having an integrated advanced programmable interrupt controller for use in a personal computer
US5862391A (en) * 1996-04-03 1999-01-19 General Electric Company Power management control system
US6189065B1 (en) * 1998-09-28 2001-02-13 International Business Machines Corporation Method and apparatus for interrupt load balancing for powerPC processors
US7328294B2 (en) * 2001-12-03 2008-02-05 Sun Microsystems, Inc. Methods and apparatus for distributing interrupts
KR100456630B1 (ko) * 2001-12-11 2004-11-10 한국전자통신연구원 프로세서간 통신을 위한 인터럽트 중계 장치 및 방법
JP2005196459A (ja) * 2004-01-07 2005-07-21 Fujitsu Ltd 割込み制御プログラムおよびその記録媒体ならびに割込み制御方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009122670A1 (ja) * 2008-04-03 2009-10-08 パナソニック株式会社 マルチプロセッサシステムおよびマルチプロセッサシステムの割込み制御方法
JP2009251802A (ja) * 2008-04-03 2009-10-29 Panasonic Corp マルチプロセッサシステムおよびマルチプロセッサシステムの割込み制御方法
JP2010146065A (ja) * 2008-12-16 2010-07-01 Nec Corp 情報処理装置、割り込み制御方法
WO2016067496A1 (ja) * 2014-10-30 2016-05-06 日本電気株式会社 情報処理装置
JP2016091076A (ja) * 2014-10-30 2016-05-23 日本電気株式会社 情報処理装置
WO2016075813A1 (ja) * 2014-11-14 2016-05-19 株式会社日立製作所 計算機システム、及びその制御方法
WO2016092667A1 (ja) * 2014-12-11 2016-06-16 株式会社日立製作所 計算機及び割込み制御方法

Also Published As

Publication number Publication date
US7721035B2 (en) 2010-05-18
US20080065803A1 (en) 2008-03-13

Similar Documents

Publication Publication Date Title
JP2008065713A (ja) マルチプロセッサシステム及び割込み制御方法
US11550627B2 (en) Hardware accelerated dynamic work creation on a graphics processing unit
JP5650952B2 (ja) マルチコア/スレッドのワークグループ計算スケジューラ
JP5408356B2 (ja) スケジューラプログラム、マルチコアプロセッサシステムおよびスケジューリング方法
KR101626378B1 (ko) 병렬도를 고려한 병렬 처리 장치 및 방법
KR20120058605A (ko) Gpu 워크의 하드웨어 기반 스케쥴링
US7590990B2 (en) Computer system
CN109086135B (zh) 资源伸缩方法、装置、计算机设备及存储介质
US20030177288A1 (en) Multiprocessor system
EP2420930A2 (en) Apparatus and method for thread scheduling and lock acquisition order control based on deterministic progress index
JP2022509170A (ja) プロセッサにおける余裕認識(laxity-aware)型動的優先度変更
JP6372262B2 (ja) 印刷装置、およびプログラム
JP2008107875A (ja) ジョブ制御装置及びジョブ制御プログラム
JP4404228B2 (ja) タスクスケジューリングシステム、方法、およびプログラム
JPH10289066A (ja) 画像処理装置及びその方法
US20130262834A1 (en) Hardware Managed Ordered Circuit
US9015719B2 (en) Scheduling of tasks to be performed by a non-coherent device
JP2008225641A (ja) コンピュータシステム、割り込み制御方法及びプログラム
US20070043869A1 (en) Job management system, job management method and job management program
WO2019188175A1 (ja) デッドロック回避方法、デッドロック回避装置
WO2022137838A1 (ja) プロセス割当制御装置、プロセス割当制御方法、及び、プロセス割当制御プログラムが格納された記録媒体
JP2012008838A (ja) 印刷文書変換装置およびプログラム
JP2010044703A (ja) マルチタスクosにおけるタスク切り替え方法及びプログラム
JP2007233608A (ja) 割込み制御装置及び割込み制御方法をコンピュータに実行させるためのプログラム。
KR20010084392A (ko) 직접 메모리 액세스 제어 장치

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20091110