(57)【要約】【課題】ＰＵが多数搭載されるマルチプロセッサシステムにおいて、ＰＵ間のプロセス同期やプロセス制御といった、ＰＵ間多重連携処理を実現し、マルチプロセッサシステムのシステム・スループット向上およびリアルタイム応答性向上を実現する。【解決手段】割り込み通知ネットワークを設け、割り込み通知元のプロセッサユニット、割り込み通知先のプロセッサユニットに割り込み通知パケットを送信する。割り込み通知元のプロセッサユニットは、割り込み通知パケットに割り込み先のプロセスＩＤを含めて送信する。割り込み通知ネットワークの制御部は、送信されてくる割り込み通知パケットを解析して、内部に保持するプロセスＩＤとそれを実行しているプロセッサユニットの対応テーブルを参照し、割り込み通知先のプロセッサユニットを求めて、そのプロセッサユニットに割り込み通知パケットを送信する。【選択図】        図２
2006119802.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサを備え、あるプロセッサから他のプロセッサに割り込み通知をおこなうマルチプロセッサシステムにおいて、
前記複数のプロセッサを接続し、割り込み通知元のプロセッサから割り込み通知先のプロセッサに、割り込み通知パケットを送信する割り込み通知ネットワークを有し、
前記割り込み通知ネットワークは、制御部を有し、
前記制御部は、割り込み通知元のプロセッサから送信されてくる前記割り込み通知パケットを解析して、割り込み通知先のプロセッサを決定することを特徴とするマルチプロセッサシステム。
【請求項２】
前記割り込み通知ネットワークは、割り込み通知先のプロセッサを決定するための情報を保持することを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項３】
前記割り込み通知パケットに割り込み先のプロセスＩＤを含み、前記制御部は、前記割り込み先のプロセスＩＤを参照して、割り込み通知先のプロセッサを決定することを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項４】
前記制御部は、プロセスグループに属する複数のプロセスを実行しているプロセッサを割り込み通知先のプロセッサとすることを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項５】
あるプロセスグループに属するプロセスを実行しているプロセッサに対して、割り込み通知の同報通知をおこなうことを特徴とする請求項４記載のマルチプロセッサシステム。
【請求項６】
前記割り込み通知先から、前記割り込み通知ネットワークに接続された全てのプロセッサに対して、割り込み通知の同報通知をおこなうことを特徴とする請求項４記載のマルチプロセッサシステム。
【請求項７】
前記割り込み通知パケットは、割り込みレベルまたは緊急度を表す情報を含み、前記制御部は、割り込みレベルまたは緊急度を表す情報により、割り込み通知の優先度を決定することを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項８】
前記割り込み通知ネットワークは、クロスバー網構造であることを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項９】
複数のプロセッサを備え、ある入出力装置からプロセッサに割り込み通知をおこなうマルチプロセッサシステムにおいて、
前記複数のプロセッサと入出力装置を接続し、割り込み通知元の入出力装置から割り込み通知先のプロセッサに、割り込み通知パケットを送信する割り込み通知ネットワークを有し、
前記割り込み通知ネットワークは、制御部を有し、
前記制御部は、割り込み通知元の入出力装置から送信されてくる前記割り込み通知パケットを解析して、割り込み通知先のプロセッサを決定することを特徴とするマルチプロセッサシステム。
【請求項１０】
前記割り込み通知パケットに割り込み元の入出力装置番号を含み、前記制御部は、前記割り込み元の入出力装置番号を参照して、割り込み通知先のプロセッサを決定することを特徴とする請求項９記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサに係り、特に、プロセッサの数が多数で構成され、しかも、リアルタイム応答が重視されるシステムに用いて好適なマルチプロセッサシステムに関する。
【背景技術】
【０００２】
半導体製造技術の進歩による素子の微細化により、膨大な数のトランジスタを集積することが可能となっている。それと同時にプロセッサの高周波数化も進むが、動作時電力の増加、またリーク電流に起因する待機時電力の増加により、従来のプロセッサが歩んできた動作周波数の向上と論理方式の改善により達成してきた性能向上に限界が見え始めている。このような事情から、現在、情報処理装置の性能改善と低電力化を実現する手段として、従来のＣＰＵ、ＤＳＰといったプロセッサユニット（ＰＵ）を複数個オンチップで搭載し、処理を並列でおこなうことによって、動作周波数を向上させなくとも、高い演算性能を得ることが可能なマルチプロセッサシステムが有望となっている。将来、回路の微細化がさらに進むことで、ＰＵをオンチップで１００個〜１０００個積載することも可能となると予測される。
【０００３】
このようなマルチプロセッサシステムによって、各ＰＵを連携して動作させる場合、各ＰＵや外部入出力装置（ＩＯＤ）が発行する割り込み情報を相互に交換する仕組みが必要となる。従来、マルチプロセッサシステムにおいて、共通のバス線を通してＩＯＤからＰＵに対し割り込み要求を通知する方法が、例えば、以下の特許文献１、あるいは、特許文献２に開示されている。また、ＰＵ間で割り込みを通知する方式として、ＰＵ間相互にＰＵ数に対応した分の複数信号線を配置することにより、任意のＰＵに対し割り込みを通知する方法が、以下の特許文献３に開示されている。
【０００４】
【特許文献１】特開平５−３２４５７０号公報
【特許文献２】特開平９−２１２４７２号公報
【特許文献３】特開平５−３５６９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
現在、自動車のナビゲーションシステム、携帯電話、デジタルテレビなどといった画像、音声、データベース情報など多様なデータを同時に扱う新アプリケーションが生まれる中で、様々な種類の入力データを、それぞれ最適な方法により同時に処理をするために、プロセッサは多種のＰＵを搭載することになると考えられる。また、このようなＰＵを多数搭載したマルチプロセッサが実現すると、多様なメディア情報を同時に処理することが可能となり、現実状況を高度に認識するシステムが実現すると考えられる。このように、多様なデータが同時に多数のＰＵ上で処理される将来のマルチプロセッサシステムでは、それぞれのＰＵで実行されるプロセスの管理や、複数ＰＵ上でのプロセス間の連携と同期、低電力制御などＰＵのきめ細かい制御、また外部入出力装置（ＩＯＤ）から任意のＰＵへのイベント通知を実現する必要がある。そのためには、ＰＵ間またＰＵ・ＩＯＤ間で様々なイベント情報、すなわち、割り込み情報を、リアルタイム性を確保しつつ、効率的に相互に交換する仕組みが新たに必要となる。
【０００６】
以下、図１１を用いて従来の一般的な単一のＰＵで構成されるプロセッサの割り込みの仕組みを説明する。
図１１は、従来の一般的な単一のＰＵで構成されるプロセッサの構成図である。
【０００７】
従来の一般的な単一のＰＵで構成されるプロセッサは、図１１に示すようにＩ／Ｏ装置ＩＯ３０１やメモリ転送コントローラＤＭＡＣ３０２など複数の割り込み発生要因元からの割り込み要求を管理する単一の割り込みコントローラＩＮＴＣ３０３が存在し、そのＩＮＴＣが割り込み発生要因元から受けた割り込み要求から、あらかじめＩＮＴＣ内のレジスタに設定した規則にしたがって最も優先順位の高い要求を選択し、割り込み信号線３０４を通じてＣＰＵ３００に通知する。また、割り込み要因は、システムの割り込み事象レジスタにＩＮＴＣ３０３によりセットされ、ＣＰＵは、その割り込み事象レジスタにアクセスすることにより、割り込み要因を知ることになる。このため、固定的な割り込み要因と割り込み元の対応付けに基づく割り込み処理のため、例えば、割り込み要因によって割り込み処理を多様に変化させたり、複数の割り込み要因が同時に発生した場合、同時に当該要因に対応する割り込み処理を複数同時に扱ったりすることはできなかった。
【０００８】
また、従来のマルチプロセッサシステムにおける割り込み通知方式においても、ＰＵ間の割り込みを実現するためにＰＵ間の通信線を当該ＰＵ数分設置する必要があり、ＰＵを非常に多数搭載するマルチプロセッサを考えた場合、当該信号線の配置が非常に複雑になり実用的でない。またさらに、割り込み先のＰＵを決定するために、割り込み元のＰＵは、割り込み先のＰＵ上でどのようなプロセスが実行されているかを知る必要がある。したがって、割り込み発行元ＰＵは、割り込み先ＰＵを決定するために、例えば、オペレーティング・システム（ＯＳ）が特定のメモリエリア上で管理するプロセスリストにアクセスする必要があり、メモリアクセスに伴う遅延のため、割り込み通知に時間がかかってしまい、その結果リアルタイム性を大きく損ねてしまう問題もある。特に、ある特定の処理を連携しておこなっているプロセスグループの複数のプロセスに対し割り込みを通知するためには、発行元ＰＵは、プロセス・リストに逐一アクセスし、対応する複数のＰＵに対し逐一割り込みを通知することとなり、システム・スループットとリアルタイム応答性の低下という点で大きな問題となる。
【０００９】
本発明は、上記問題点を解決するためになされたもので、その目的は、特に、ＰＵが多数搭載されるマルチプロセッサシステムにおいて、任意のＰＵ間、またはＩＯＤ・ＰＵ間で効率的な割り込みの通知を可能とする手段の提供し、以って、ＰＵ間のプロセス同期やプロセス制御といったＰＵ間多重連携処理を実現し、マルチプロセッサシステムのシステム・スループット向上を実現することである。また、他の目的は、マルチプロセッサシステムにおいて、様々な外的要因に伴う処理のリアルタイム性の実現、例えば、緊急事態発生時などにシステムが即座に対応することを可能なマルチプロセッサシステムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明のマルチプロセッサシステムにおいては、割り込み通知ネットワークを設け、割り込み通知元のプロセッサユニット、または、入出力装置から、割り込み通知先のプロセッサユニットに割り込み通知パケットを送信する。
【００１１】
割り込み通知元のプロセッサユニットは、割り込み通知パケットに割り込み先のプロセスＩＤを含めて送信する。割り込み通知ネットワークの制御部は、割り込み通知元のプロセッサユニットから送信されてくる割り込み通知パケットを解析して、内部に保持するプロセスＩＤとそれを実行しているプロセッサユニットの対応テーブルを参照し割り込み通知先のプロセッサユニットを求めて、割り込み通知先のプロセッサユニットに送信する。
【００１２】
割り込み通知パケットには、同報通信をするためのフラグ、割り込みレベル、緊急度を表す情報を含めることができる。
【００１３】
また、割り込み通知元の入出力装置は、割り込み通知パケットに割り込み通知元の入出力装置番号を含めて送信する。
割り込み通知ネットワークの制御部は、割り込み通知元の入出力装置から送信されてくる割り込み通知パケットを解析して、内部に保持する入出力装置番号と割り込み先のプロセッサユニットの対応テーブルを参照し割り込み通知先のプロセッサユニットを求めて、割り込み通知先のプロセッサユニットに送信する。
【００１４】
本発明では、割り込みを通知する際の通知先プロセッサユニットを指定する情報は、割り込み通知ネットワーク内のテーブルが保持しているので、割り込みを通知するプロセッサユニットは、通知先プロセッサユニットの状態、および、通知情報を伝達するネットワークの状況を、割り込み発行時に把握する必要がなく、割り込み通知処理を高速おこなうことが可能となる。また、さらに、割り込み通知ネットワークの制御部が割り込み通知先プロセッサユニットを決定し、割り込み情報を割り込み通知先プロセッサユニットに選択的に通知するために、プロセッサユニット間に複雑な信号線を配置する必要がない。
【００１５】
また、割り込み通知先パケットには、割り込み先のプロセスＩＤを指定するので、割り込み通知元のプロセッサユニットは、割り込み通知先のプロセスがどのプロセッサユニットで実行されているかを把握する必要がなく、高速に割り込みを発行することが可能となる。
【００１６】
また、本発明では、割り込み通知パケットに設定された情報により、指定した範囲の複数プロセッサユニットに対して、割り込み情報を同報通知でき、複数のプロセッサユニット連携処理と制御が可能となる。
【００１７】
さらに、本発明では、割り込み通知パケットに設定された割り込みレベルや緊急度により、優先度を定めた割り込み制御がおこなえるようになる。
【発明の効果】
【００１８】
本発明によれば、マルチプロセッサシステムのシステム・スループット向上を実現することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明に係る各実施形態を、図１ないし図１０を用いて説明する。
【００２０】
〔マルチプロセッサシステムの構成〕
先ず、図１ないし図４を用いて本発明に係るマルチプロセッサシステムの構成について説明する。
図１は、本発明に係るマルチプロセッサシステムの概要構成を示すブロック図である。
図２は、本発明に係るマルチプロセッサシステムの他の構成を示すブロック図である。
図３は、本発明に係るマルチプロセッサシステムのブロック図で、割り込み通知ネットワークを詳細に示した図である。
図４は、本発明に係るマルチプロセッサシステムのブロック図で、プロセッサとプロセスの関係を詳細に示した図である。
【００２１】
本発明に係るマルチプロセッサシステムは、図１に示されるように複数のプロセッサユニットＰＵ（１１〜１５）が互いに通信して処理をおこなうマルチプロセッサシステムである。
【００２２】
ＰＵ（１１〜１５）は、汎用プロセッサ（ＣＰＵ）、信号処理プロセッサ（ＤＳＰ）、動的再構成可能なプロセッサ（ＤＲＰ，Dynamically Reconfigurable  Processor）などの組み合わせによる、さまざまな構成を取り得る。
【００２３】
これらの複数のＰＵは、データバスＤＢＵＳ３および本発明の特徴である割り込み通知ネットワークＩＮＴＮＷ２を介して相互に接続されている。また、これらのＰＵからアクセスすることが可能な、共有メモリＭＥＭ６がＤＢＵＳ３に接続されている。さらに、ディスプレイ、キーボードやディスクドライブといった装置を接続するＩ／Ｏ装置（ＩＯＤ）などの周辺機能ユニットＰＦＵ（５０，５１）が、周辺バスＰＢＵＳ４に接続されており、ＰＢＵＳ４とＤＢＵＳ３は、ブリッジＢＲＧ７を介して接続されている。また、さらに、ＰＦＵ（５０，５１）もＩＮＴＮＷ２に接続されている。
【００２４】
なお、図２に示されるように複数のＰＵの集合で構成したプロセッサ・モジュールＰＭを複数個並べて階層的に構成してもよい。ＰＭ（１００〜１０２）は、ＤＢＵＳ３およびＩＮＴＮＷ２を介して接続されたＰＵ１０〜１５で構成されており、さらに、ＰＭ内のＤＢＵＳ３およびＩＮＴＮＷ２を、外部ＤＢＵＳ１１０および外部ＩＮＴＮＷ１２０に接続することで、任意のＰＭのＰＵから、任意のＰＭのＰＵへ割り込みを通知することができる。
【００２５】
次に、図３を用いて割り込み通知ネットワークＩＮＴＮＷ２の詳細な構成について説明する。
【００２６】
ＩＮＴＮＷ２は、ＰＵおよびＰＦＵ数分の入出力ポートを持ち、割り込みコントローラＩＮＴＣＴＬ２０とパケットネットワークＰＫＴＮＷ２１およびプロセス・プロセッサユニット対応管理テーブルＩＤＴＢＬ２２で構成される。
【００２７】
ＩＮＴＣＴＬ２０は、各ＰＵおよび各ＩＯが発行する割り込みパケットを解析し、ＩＮＴＮＷ２を流れる割り込みパケットの制御をおこなう部分である。すなわち、各ＰＵおよび各ＩＯから割り込みパケットが入力されるとその割り込みパケットを解析し、ＩＤＴＢＬ２２を参照することで割り込み先ＰＵを決定して、ＰＫＴＮＷ２１内のスイッチ制御による経路設定と、出力ポートの接続権調停、およびリアルタイム性を保証するための割り込みパケットの順序制御をおこなう。ＩＮＴＣＴＬ２０は、ＰＫＴＮＷ内の複数のスイッチを同時に制御可能であり、ＩＮＴＮＷ２は、単一の入力に対し単一の出力ポートを接続しデータ転送するユニキャスト通知に加えて、単一の入力に対して複数の出力ポートを接続しデータ転送するマルチキャスト通知をおこなうことが可能である。これらの詳細な動作については、後述する。
【００２８】
ＰＫＴＮＷ２１は、割り込みパケットを転送するためのネットワークである。後にクロスバーの構造を持つ例を説明する。
【００２９】
ＩＤＴＢＬ２２は、プロセス、 ＰＵとＰＦＵとの対応関係を示すテーブルである。
【００３０】
次に、図４を用いてプロセッサとプロセスの関係とその動作について詳細に説明する。
【００３１】
図４に示されるマルチプロセッサシステムは、５個のＰＵ（ＣＰＵ、ＤＳＰ、ＤＲＰで構成）（１０〜１４）と２個のＰＦＵ（ＩＯ）（５０，５１）で構成されているものとする。これらのＰＵ（１０〜１４）はＤＢＵＳ３とＩＮＴＮＷ２に、ＩＯ（５０，５１）は、ＰＢＵＳ４およびＩＮＴＮＷ２に接続されており、ＰＢＵＳ４は、ＢＲＧ７を介してＤＢＵＳ３に接続されている。
【００３２】
各ＰＵ（１０〜１４）上では、様々な処理プロセス（ＰＲＣ）（３０１〜３０５）が実行されるが、以下では、説明を簡単化するために、各ＰＵ上で実行されるプロセス数は１とする。ＰＵ０（１０）ではシステム全体のプロセス（タスク）を管理するオペレーティング・システムＯＳ（３０１）を実行される。ＯＳは、ＭＥＭ６に、当該ＯＳが管理するプロセス一覧を示すプロセスリスト（ＰＲＣＬＩＳＴ）（３００）を配置する。
【００３３】
先ず、本発明のマルチプロセッサシステムにおける割り込み動作の概要を説明する。
【００３４】
ＰＵ間で割り込み通知をおこなう場合、割り込み元ＰＵは割り込み先のプロセスＩＤ（ＰＩＤ）を指定して割り込み通知用のパケット（以下、「割り込み通知パケット」という）を生成する。各ＰＵ（１０〜１４）は、ＭＥＭ上のＰＲＣＬＩＳＴ３００にアクセスすることで、システム上で実行されているプロセスを知ることができる。割り込み元ＰＵが割り込み通知パケットをＩＮＴＮＷ２に送付すると、ＩＮＴＣＴＬ２０は、そのパケットを解析し、指定されたＰＩＤからＩＤＴＢＬ２２を参照することにより、割り込み通知先のＰＵを決定し、割り込み発行元ＰＵと割り込み先ＰＵへのＰＫＴＮＷ２１の経路設定をおこなう。また、ＰＦＵ（５０，５１）からＰＵ（１０〜１４）に対して割り込み通知をおこなう場合には、その割り込み通知パケットは、発行元のＰＦＵ番号を含み、ＩＮＴＣＴＬ２０は、その割り込み通知パケットを解析して、ＰＦＵ番号からＩＤＴＢＬ２２を参照することにより、割り込み通知先のＰＵを決定し、割り込み発行元ＰＦＵと割り込み先ＰＵのＰＫＴＮＷ２１の経路設定をおこなう。
【００３５】
このように、ＩＮＴＮＷ２でＰＩＤとＰＵの対応付け、または、ＰＦＵとＰＵの対応付けをおこなっておくことによって、各ＰＵは、割り込み通知先のプロセスがどのＰＵで実行されているのかを管理しておく必要がなくなるため、高速に割り込み通知をおこなうことが可能となる。
【００３６】
〔マルチプロセッサシステムで扱うデータ構造〕
次に、図５および図６を用いて本発明のマルチプロセッサシステムで扱うデータ構造について説明する。
図５は、プロセス・プロセッサユニット対応管理テーブルの一例を示す図である。
図６は、割り込み通知パケットの一例を示す図である。
【００３７】
ＩＤＴＢＬ２２は、ＰＵＤ・ＰＵ、および、ＰＦＵ・ＰＵの対応情報を管理するためのテーブルである。
【００３８】
第１のフィールドのＦＬＧ２２０は、第２のフィールドのＰＩＤが、割り込み通知先プロセスＩＤを示すか、または、割り込み通知元のＰＦＵ番号を示すかを識別するためのフラグである。第２のフィールドのＰＩＤ２２１には、第１のフィールドＦＬＧにより、割り込み通知先プロセスＩＤまたは割り込み発生元のＰＦＵ番号が格納される。
【００３９】
第３のフィールドのＰＵＮ２２２には、割り込みを通知する通知先ＰＵの番号を格納する。この第３のフィルードは、第２のフィールドＰＩＤが、割り込み通知先プロセスＩＤを表すときには、そのプロセスを実行するＰＵの番号であり、第２のフィールドＰＩＤが、割り込み発生元のＰＦＵ番号を表すときには、割り込み発生元のＰＦＵと対応付けられた割り込み通知先のＰＵの番号になる。
【００４０】
また、第４のフィールドのＰＰＩＤ２２３には、ＰＵ間割り込み通知において、割り込みを発行した割り込み通知元のプロセスのＰＩＤを格納する。
【００４１】
ＩＤＴＢＬ２２は、このように割り込み通知元のプロセスのＰＩＤと、割り込み通知先のプロセスのＰＩＤを管理しているので、複数のプロセスをプロセスグループとして、それに対して割り込み制御をおこなうことが可能となる。
【００４２】
例えば、プロセスグループが一つの親プロセスから発生するプロセス間関係（親と子）を持つとする。そのときに、親のプロセスのプロセスＩＤを、第４のフィールドＰＰＩＤ２２３に、その親のプロセスが生成した子のプロセスＩＤを、第２のフィールドＰＩＤに格納する。また、その子のプロセスが孫プロセスを生成したときには、子のプロセスのプロセスＩＤを、第４のフィールドＰＰＩＤ２２３に、孫のプロセスＩＤを、第２のフィールドＰＩＤに格納する。例えば、図５に示した例では、親のプロセスのプロセスＩＤが、１００に、その子ののプロセスのプロセスＩＤが、１０１に、さらに、孫にあたるプロセスのプロセスＩＤが、１０２になる。
【００４３】
そして、プロセスグループに属するプロセスを停止させる場合には、親プロセスが発行した子プロセス、さらには、当該子プロセスが発行した孫プロセスなど、停止させようとするプロセスの下位層のプロセスをＩＤＴＢＬ２２によって検索し、ＩＮＴＮＷによって割り込み通知をマルチキャストでおこない、プロセスグループに属するプロセスを同時に停止させることを可能となる。
【００４４】
例えば、図４においてＰＵ１（１１）のプロセスＰＲＣ−Ａ（３０２）は、ＰＵ０（１０）が起動した画像認識プロセスであるとする。このとは、ＰＲＣ−Ａ（３０２）は画像認識をおこなうための特徴点抽出などの画像前処理をおこなうプロセスＰＲＣ−Ｂ（３０３）をＰＵ２（１２）上に起動した、すなわち、目的とした画像認識をおこなうために、ＰＵ１とＰＵ２が連携（ＰＲＣＧＲＰ）して処理をおこなっているとする。ここで、ＰＵ０（１０）で画像認識を中断して、音声認識に切り替えるイベントが発生したと想定する。ＰＵ０はＰＵ１（１１）の画像処理プロセスＰＲＣ−Ａ（３０２）を停止する割り込みパケットを発行するが、ＰＲＣ−Ａは子プロセスとしてＰＲＣ−Ｂ（３０３）を管理しているため、ＰＲＣ−Ａを停止する他にＰＲＣ−Ｂも停止する必要がある。上述のように、ＩＤＴＢＬ２２上には、ＰＲＣ−ＢがＰＲＣ−Ａの子プロセスであることが管理されている（割り込み元のプロセスＩＤと割り込み先のプロセスＩＤの対応）ため、ＩＮＴＮＷ２は、ＰＵ０（１０）が発行した割り込みパケットをＰＵ１（１１）、ＰＵ２（１２）に対してマルチキャストする。その結果、ＰＵ１、ＰＵ２双方でプロセス停止処理がおこなわれ、ＰＵ１、ＰＵ２は即座に別の処理に移る事が可能となる。
【００４５】
次に、ＩＤＴＢＬ２２内のエントリ情報を更新する方法を説明する。
【００４６】
ＩＤＴＢＬ２２は、ＰＢＵＳ４から情報を参照し、各ＰＵ（１０〜１４）は、ＤＢＵＳ（３）、ＢＲＧ（７）及びＰＢＵＳ（４）を経由してＩＤＴＢＬ内のエントリにアクセスすることで、各フィールド値を設定することができる。
【００４７】
ＩＤＴＢＬ２２は、プロセスの状態に応じて、また、入出力装置と割り込み先の対応が決定されるときに、更新される。
【００４８】
例えば、システム・ブートアップ時に起動するマスタＰＵ（ＰＵ０）から、初期状態におけるＩＯ（５０，５１）の割り込み通知先ＰＵを設定する、また、マスタＰＵが他のＰＵ（ＰＵ１〜ＰＵ４）を初期化するために、そのマスタＰＵから他のＰＵに対してＩＮＴＮＷ２の経路をあらかじめ設定することも可能である。さらにシステム起動後も、ＰＵ上でプロセスを新たに生成する、ＰＵ上で実行中のプロセスを停止・破棄する、ＩＯの割り込み通知先ＰＵを変更する、といった場合でも、ＰＵはＤＢＵＳ、ＢＲＧ及びＰＢＵＳを経由してＩＤＴＢＬ内のエントリにアクセスし、図４に対応したレジスタ値を書き換える。なお、ＩＤＴＢＬ２２が持つ対応情報（エントリ）は、基本的にＰＵ１個に対し１エントリとなるので、ＩＤＴＢＬのサイズであるエントリ数はＰＵ数と等しい。
【００４９】
以上の説明では、各ＰＵ上で実行されるプロセス数は、１であると仮定したが、２個以上の複数のプロセスを単一のＰＵ上で、例えば、時分割で同時に実行することも可能である。この場合、そのＰＵ上で、プロセス（タスク）管理をおこなうプロセスを実行し、タスク切り替え時に当該タスク管理プロセスは、ＩＤＴＢＬ２２にアクセスして、当該ＰＵ番号に対応するＰＩＤ２２１を切り替えたプロセスＩＤに更新する。その結果、他のＰＵは更新されたＰＩＤを指定することで、当該ＰＵにアクセス可能となる。なお、当該ＰＵ上で実行されている全ＰＩＤは、ＯＳが特定のメモリ上で管理するＰＲＣＬＳＴ３００に通知される。
【００５０】
次に、割り込み通知に際して作成される割り込み通知パケットのパケットフォーマットについて説明する。
【００５１】
第１のフィールドのＰＩＤ２３０は、割り込み通知先プロセスＩＤ、または、割り込み通知先ＰＵ番号を指定する。なお、ＰＩＤ２３０にプロセスＩＤが指定された場合は、ＩＮＴＮＷ側でそのプロセスＩＤから、当該プロセスを実行する割り込み通知先ＰＵ番号への変換をおこなう。
【００５２】
次に、第２のフィールドのＰＰＵ２３１では、割り込み発行元のＰＵ番号、または、ＰＦＵからの割り込み発行時は、割り込み発行元のＰＦＵ番号を指定する。第３のフィールドのＰＰＩＤ２３２は、ＰＵ間通知における割り込み発行元のプロセスＩＤを指定する。第４のフィールドのＭＣＦＬＧ２３３では、単一のＰＵに対するユニキャスト割り込み通知をおこなうか、第１のフィールドＰＩＤ２３０で指定したプロセス、および、そのプロセスの下位層プロセスを実行する複数のＰＵに対するマルチキャスト（同報）割り込み通知をおこなうかを指定する。
【００５３】
また、全ＰＵに対して割り込み通知をおこなうブロードキャスト割り込み通知も本項で指定できる。この場合、第１項のＰＩＤ２３０は無視するものとする。第５のフィールドのＩＮＴＥＶＴ２３４は、割り込み事象に対応した割り込み要因コードを指定する。第６のフィールドのＬＥＶＥＬ２３５には、割り込み優先度を設定する。例えば、同一のＰＵに対して複数割り込みが存在した場合、当該割り込み優先度が高い順に当該ＰＵに対して割り込みパケットが送付される。第７のフィールドのＥＸＰ２３６には、その割り込み通知を完了すべき時間、すなわち、割り込み通知のデッドラインを指定する。リアルタイム性を必要とする割り込み処理の場合、ＥＸＰの値を設定することによって、そのデッドライン時間内に割り込み通知完了を保障するために、デッドラインに対して時間余裕度が少ない割り込みパケットから優先的に送付するものとする。なお、優先順はＥＸＰを最優先とし、時間的余裕度がある場合、または時間余裕度が同一の場合は、第６のフィールドのＬＥＶＥＬ２３５で優先度を判定する。第８のフィールドのＶＢＲ２３７では、割り込み通知先のＰＵが起動する割り込み処理プロセスのプログラムが格納されたメモリ上の先頭番地を指定する。
【００５４】
〔割り込み通知ネットワークの詳細構成と動作〕
次に、図７を用いて割り込み通知ネットワークの詳細構成とその動作について説明する。
図７は、 割り込み通知ネットワークの回路構成図である。
【００５５】
この図の構成では、３個のＰＵ（１０〜１２）と１個のＩＯ（５０）がＩＮＴＮＷの入力ポートに、３個のＰＵ（１０〜１２）が出力ポートに接続されていて、クロスバー網構造により、パケットに制御をおこなうようになっている。
【００５６】
ＩＯ／ＰＵ間割り込みは、ＩＯから任意のＰＵへの一方向のみとする。前述した通り、ＩＮＴＮＷ２は、パケットネットワークＰＫＴＮＷ２１と、ＰＫＴＮＷ２１の経路設定とアービトレーションをおこなう割り込みコントローラＩＮＴＣＴＬ２０で構成される。ＰＫＴＮＷはクロスバー網構造であり、入力ポート側にプライオリティ・キュー（２１０〜２１３）を持ち、出力ポート側にその出力ポート数分のセレクタＳＥＬ０〜ＳＥＬ２（２１４〜２１６）を持つ。これらのセレクタは、ＩＮＴＣＴＬ２０が持つスイッチ制御回路ＳＷＣＴＬ２０５により制御され、ＩＮＴＮＷ２が持つ入力ポート中の任意の１ポートをＩＮＴＮＷ２の出力ポートに接続する。
【００５７】
キュー（２１０〜２１３）のサイズは、システムの割り込みトランザクションの大小によって任意のサイズを取り得る。
【００５８】
ＩＮＴＣＴＬ２０は、パケット・スケジューラＳＣＨＣＴＬ２０１、セレクタＳＥＬＣ２０２、プライオリティ・キュー２０３、スイッチ制御回路ＳＷＣＴＬ２０４により構成される。ＳＣＨＣＴＬ２０１は、入力パケットの解析とレベルおよび期限の判定をおこなうことで、割り込みパケットのスケジューリングとアービトレーションをおこなう。例えば、複数入力ポートに同時に割り込み要求が生じた場合には、ＳＣＨＣＴＬ２０１により優先度の高いパケットが判定され、ＳＥＬＣ２０２により、そのパケットが発行されている入力ポートが選択され、そのパケットが逐次、プライオリティ・キュー２０３に格納される。また、すでに、プライオリティ・キュー２０３内に複数パケットが格納されているが、後続のパケットの優先度が高い場合は、その後続パケットが優先的にプライオリティ・キュー２０３に格納される。なお、優先度が高いパケットとは、前述した通り、レベルが高い、または割り込み通知期限に対し余裕が少ないパケットである。プライオリティ・キュー２０３が出力するパケットは、ＳＷＣＴＬ２０４に送付され、ＳＷＣＴＬは、パケット解析を行い、そのパケット内の割り込み発行先プロセスＩＤ２３０、または、発行元ＰＦＵ番号により、ＩＤＴＢＬ２２を参照し、割り込み通知先ＰＵ番号２２２をＩＤＴＢＬから検索する。発行元ＰＵ番号またはＰＦＵ番号２３１、および発行先ＰＵ番号２２２を基に、ＳＷＣＴＬ２０４は、ＰＫＴＮＷ内のＳＥＬ（２１４〜２１６）を制御することで割り込み先ＰＵへのパケット・パスを構築する。ＳＷＣＴＬは、パケット内のマルチキャストフラグ（ＭＣＦＬＧ）（２３３）が、範囲指定の複数割り込み同報モードにセットされていた場合には、ＩＤＴＢＬ２２から複数の割り込み通知先ＰＵ番号２２２を受理し、そのための複数ＰＵへのパケット・パスを構築する。なお、本実施形態では、プライオリティ・キュー２０３およびＳＷＣＴＬ２０４が、各々単数の場合を説明したが、同時に複数パケット処理に対応するために、例えば、出力ポート数分のプライオリティ・キューとＳＷＣＴＬを用意し、ＩＤＴＢＬの検索とＰＫＴＮＷのセレクタ（２１４〜２１６）制御をおこなうことで、同時に複数のパケット・パスを構築することも可能である。
【００５９】
〔割り込み通知ネットワークによる割り込み通知動作〕
次に、図８ないし図１０を用いて本発明のマルチプロセッサシステムの割り込み通知動作について説明する。
図８および図９は、ＰＵからＰＵに割り込み通知をおこなうときの割り込み通知動作を示すタイミングチャートである。
図１０は、ＩＯからＰＵに割り込み通知をおこなうときの割り込み通知動作を示すタイミングチャートである。
【００６０】
先ず、図８によりＰＵ間の割り込み通知処理で、ＰＵ０（１０）がＰＵ１（１１）およびＰＵ２（１２）に対して割り込み同報通知をおこなう動作を説明する。すなわち、ＰＵ０（１０）に割り込み要因を発生するプロセスが実行されており、またＰＵ１（１１）に割り込み通知をおこなうプロセスが、さらに、ＰＵ２（１２）には、ＰＵ１プロセスが生成した子プロセスが実行されているとし、ＰＵ１およびＰＵ２双方のプロセスに対し割り込みをかけることを想定する。例としては、プロセスを同時に停止させるなど場合が考えられる。
【００６１】
発行元のＰＵ０（１０）上で割り込み要因が発生（ＩＮＴＥＶＴ）（４００）すると、ＰＵ０は、図６に示したパケットフォーマットに従って割り込みパケットを生成（ＰＫＴＧＥＮ）（４０１）し、ＩＮＴＮＷ２に対して、割り込みパケットの発行（ＰＫＴＰＳＳ）（４０２）をおこなう。そのパケットは、図７に示したＩＮＴＮＷ内のプライオリティ・キュー２１０にいったん格納される。なお、複数パケットがすでにキュー２１０に存在する場合には、優先度が高い順で格納される。そして、パケットを格納したキュー２１０は、パケットを出力し、ＳＣＨＣＴＬ２０１は、出力されたパケットを受理（ＰＫＴＡＣＰ）（４０３）する。そして、パケット解析をおこない、レベルＬＥＶＥＬ２３５、期限ＥＸＰ２３６より優先度を判定（ＥＸＰＪＤＧ）（４０４）し、ＩＮＴＣＴＬ内のプライオリティ・キュー２０３にそのパケットを格納する。そして、受理したパケットはＳＷＣＴＬ２０４に送付され、パケット情報を元にＳＷＣＴＬ２０４がＩＤＴＢＬ２２をアクセスすることで、パケット内のＰＩＤ情報２３０から当該パケット送付先のＰＵ番号を求め（ＰＩＤ／ＰＵＮＣＮＶ）（４０５）、ＰＫＴＮＷ２１のセレクタを制御する。
【００６２】
本例では、パケット中のＭＣＦＬＡＧ２３３が同報通知モードに設定して置く。このときに、割り込み通知先のＰＩＤ２３０に対応するＰＵ番号（ＰＵ１）（１１）と、そのプロセスのＰＩＤ２３０がＩＤＴＢＬ２２中のＰＰＩＤ２２３に一致するエントリのＰＵ番号、言い換えれば、ＰＵ１で実行されているプロセスの子プロセスが実行されているＰＵ番号（ＰＵ２）がＩＤＴＢＬから出力される。
【００６３】
そして、ＳＷＣＴＬ２０４は、ＰＫＴＮＷのＳＥＬ１（２１５）とＳＥＬ２（２１６）を制御することで、ＰＵ０→ＰＵ１、および、ＰＵ０→ＰＵ２のパケット・パスを作成する（ＲＴＣＴＬ）（４０６）。その結果、ＰＵ０からの割り込みパケットはＰＵ１（１１）、ＰＵ２（１２）双方で受理（ＰＫＴＡＣＰ）（４０７，４０８）され、ＰＵ１、ＰＵ２それぞれは、パケット内で指定された割り込み処理プログラムの先頭アドレス（ＶＢＲ）（２３７）からプログラムをロードして割り込み処理を開始する（ＩＮＴＰＲＣ）（４１０，４１２）。また、割り込み処理プログラムを起動せず、単に割り込み要因ＩＮＴＥＶＴ（２３４）を当該プロセスに通知するのみの動作もあり得る。例えば、ＰＵが持つ割り込み事象レジスタにＩＮＴＥＶＴ２３４を書き込み、当該プロセスが割り込み事象レジスタをポーリングすることで割り込み通知を受けるといった動作も考えられる。パケットを受理したＰＵ１とＰＵ２は、そのパケットが受理されたと同時に、発行元ＰＵ０（１０）に対して割り込み通知を受けた旨を通知するパケットＡＣＫを、そのパケット中の発行元ＰＵ番号ＰＰＩＤ２３２を利用して生成し（ＡＣＫＩＳＳ）（４０９，４１１）、ＩＮＴＮＷを介して割り込み元であるＰＵ０に対して通知する（４１３，４１４）。
【００６４】
次に、図９を用いてＰＵ間の割り込み通知処理で、複数のＰＵから単一のＰＵに対して、ほぼ同時に割り込み通知がおこなわれる場合の動作を説明する。すなわち、ＰＵ０（１０）およびＰＵ１（１１）から、ＰＵ２（１２）に対してほぼ同時に割り込みが発行されるものとし、それぞれのＰＵで発行する割り込みのレベルＬＥＶＥＬ２３５は同一であるが、割り込み通知の期限ＥＸＰ２３６が、ＰＵ０が、例えば、１５サイクル以内、ＰＵ１が１０サイクル以内と、ＰＵ１の割り込み通知期限に対する余裕度が、ＰＵ０より少ないとする。すなわち、ＰＵ１の割り込み要求をＰＵ０のそれよりも先に処理すべき状態を想定する。
【００６５】
ＰＵ０およびＰＵ１でほぼ同時に割り込み要因が発生（ＩＮＴＥＶＴ）（５００，５０３）すると、それぞれのＰＵは割り込み先のプロセスＩＤ（ここでは双方で同一）等を持った割り込みパケットを生成（ＰＫＴＧＥＮ）（５０１，５０４）しＩＮＴＮＷ２に対して、それらのパケットを発行（ＰＫＴＩＳＳ）（５０２，５０５）する。それらのパケットは、発行元ＰＵに対応するＩＮＴＮＷ内のプライオリティ・キュー（２１０，２１１）に、それぞれいったん格納される。そして、格納されたキューは、パケットを出力し、ＩＮＴＣＴＬ２０内のＳＣＨＣＴＬ２０４は、ＰＵ０（１０）およびＰＵ１（１１）が発行したそれぞれのパケットを受理（ＰＫＴＡＣＰ）（５０６，５１１）する。 ＩＮＴＣＴＬ２０では、双方のパケット解析をおこないレベルＬＥＶＥＬ２３５、期限ＥＸＰ２３６により優先度を判定（ＥＸＰＪＤＧ）（５０７，５１２）し、ＩＮＴＣＴＬ内のキューにそれらのパケットを格納する。ここで、双方のパケットの割り込みレベルＬＥＶＥＬは同一であるが、割り込み通知期限がＰＵ０では１５、ＰＵ１では１０であるので、ＰＵ１が発行した割り込みパケットの優先度が高いため、ＰＵ１のパケットが先行してＳＷＣＴＬに送付され、パケット情報を基にＳＷＣＴＬ２０４がＩＤＴＢＬ２２をアクセスすることにより、パケット内のＰＩＤ情報からそのパケット送付先のＰＵ番号を求め（ＰＩＤ／ＰＵＮＣＮＶ）（５１３）、ＰＫＴＮＷ２１のセレクタＳＥＬ２を制御する（ＲＴＣＴＬ）（５１４）。続いて、ＰＵ０のパケットも同様にＳＷＣＴＬ２０１に送付され、ＳＷＣＴＬ２０１はＰＫＴＮＷ２１のセクレタＳＥＬ２を制御する（５０９）。その結果、ＰＵ２ではＰＵ１が発行したパケットを先行して受理し（ＰＫＴＡＣＰ）（５１６）パケット解析をおこなった後、割り込み処理（ＩＮＴＰＲＣ）（５１７）を開始する。ＰＵ２は先行パケット受理後、ＰＵ０が発行したパケットを受理（ＰＫＴＡＣＰ）（５１８）し、パケット解析をおこない、先行割り込み処理終了後に、ＰＵ０が発行した割り込み処理をおこなう（ＩＮＴＰＲＣ）（５１９）。
【００６６】
次に、図１０を用いてＰＦＵ（ＩＯ）（５０）からＰＵ０（１０）に対する割り込み通知処理の動作を説明する。
【００６７】
ＩＯ５０で割り込み要因が発生（ＩＮＴＥＶＴ）すると（６００）、ＩＯ５０は、自身のＩＯ番号（２３１）、割り込みレベルＬＥＶＥＬ（２３５）、割り込み要因ＩＮＴＥＶＴ（２３４）を含んだ割り込み通知パケットを生成（ＰＫＴＧＥＮ）（６０１）し、ＩＮＴＮＷ２に対してそのパケットを発行（ＰＫＴＩＳＳ）（６０２）する。そのパケットは、ＩＮＴＮＷ２内のプライオリティ・キュー２１３にいったん格納され、ＩＮＴＣＴＬ２０内のＳＣＨＣＴＬ２０１は、そのパケットを受理する（ＰＫＴＡＣＰ）（６０３）。そして、ＳＣＨＣＴＬ２０１は、受理したパケットを解析し、当該割り込みのレベルと期限から優先度判定を行い（ＬＶＪＤＧ）（６０４）、プライオリティ・キュー２０３に格納する。次に、ＳＷＣＴＬ２０４は、ＩＤＴＢＬ２２にアクセスし、そのパケット内の発行元ＩＯ番号から、割り込み通知先のＰＵ番号を求め（ＩＯ／ＰＵＮＣＮＶ）（６０５）、ＰＫＴＮＷ２１内のセレクタＳＥＬ０（２１４）の制御をおこなう（ＲＴＣＴＬ）（６０６）。その結果、ＩＯからＰＵ０に対するパケット・パスが構築され、ＰＵ０はＩＯからの割り込みパケットを受理（ＰＫＴＡＣＰ）（６０８）し、割り込み処理プログラムアドレス（ＶＢＲ）（２３７）にジャンプし、割り込み処理を実行する（ＩＮＴＰＲＣ）（６０９）。
【００６８】
〔実施形態より理解できる本発明の特徴〕
以上の実施形態より理解できるように、本発明によれば、特に、ＰＵが多数搭載されるマルチプロセッサシステムにおいて、任意のＰＵ間、またはＩＯＤ・ＰＵ間で効率的な割り込みの通知を可能とする手段の提供し、以って、ＰＵ間のプロセス同期やプロセス制御といったＰＵ間多重連携処理を実現し、マルチプロセッサシステムのシステム・スループット向上を実現することができる。また、本発明によれば、マルチプロセッサシステムにおいて、様々な外的要因に伴う処理のリアルタイム性の実現、例えば、緊急事態発生時などにシステムが即座に対応することを可能なマルチプロセッサシステムを提供することができる。
【図面の簡単な説明】
【００６９】
【図１】本発明に係るマルチプロセッサシステムの概要構成を示すブロック図である。
【図２】本発明に係るマルチプロセッサシステムの他の構成を示すブロック図である。
【図３】本発明に係るマルチプロセッサシステムのブロック図で、割り込み通知ネットワークを詳細に示した図である。
【図４】本発明に係るマルチプロセッサシステムのブロック図で、プロセッサとプロセスの関係を詳細に示した図である。
【図５】プロセス・プロセッサユニット対応管理テーブルの一例を示す図である。
【図６】割り込み通知パケットの一例を示す図である。
【図７】割り込み通知ネットワークの回路構成図である。
【図８】ＰＵからＰＵに割り込み通知をおこなうときの割り込み通知動作を示すタイミングチャートである（その一）。
【図９】ＰＵからＰＵに割り込み通知をおこなうときの割り込み通知動作を示すタイミングチャートである（その二）。
【図１０】ＩＯからＰＵに割り込み通知をおこなうときの割り込み通知動作を示すタイミングチャートである。
【図１１】従来の一般的な単一のＰＵで構成されるプロセッサの構成図である。
【符号の説明】
【００７０】
１０〜１４…プロセッサユニット、２…割り込み通知ネットワーク、２０…割り込みコントローラ、２１…パケットネットワーク、２２…プロセス番号・プロセッサユニット対応管理テーブル、３…データバス、４…周辺バス、５０，５１…周辺機能ユニット、６…共有メモリ、７…ブリッジ、３００…ＣＰＵ、３０１…入出力装置、３０２…メモリ転送コントローラ、３０３…割り込みコントローラ、３０４…割り込み通知信号線、１００〜１０２…プロセッサ・モジュール、１１０…データバス、１２０…割り込み通知ネットワーク、３００…プロセスリスト、３０１〜３０５…プロセス、２２０〜２２３…プロセス番号・プロセッサユニット対応管理テーブルの各フィールド、２３０〜２４０…割り込み通知パケットの各フィールド、２０１…パケット・スケジューラ、２０２…セレクタ、２０３…プライオリティ・キュー、２０４…パケットネットワーク制御回路、２１０〜２１３…プライオリティ・キュー、２１４〜２１６…セレクタ。
【図１】
2006119802.tif 000003
【図２】
2006119802.tif 000004
【図３】
2006119802.tif 000005
【図４】
2006119802.tif 000006
【図５】
2006119802.tif 000007
【図６】
2006119802.tif 000008
【図７】
2006119802.tif 000009
【図８】
2006119802.tif 000010
【図９】
2006119802.tif 000011
【図１０】
2006119802.tif 000012
【図１１】
2006119802.tif 000013