(57)【特許請求の範囲】
【請求項１】
システム全体を管理する１つのホストプロセッサエレメント（以下、ホストＰＥと略す）と、システムの構成要素を能動的に操作する少なくとも１つのマスタプロセッサエレメント（以下、マスタＰＥと略す）と、前記ホストＰＥおよび前記マスタＰＥの制御対象である少なくとも１つのスレーブエレメント（以下、ＳＥと略す）と、割り込み信号の入出力方向が前記ホストＰＥに対しては入力であり、前記マスタＰＥおよび前記ＳＥに対しては出力であるアーキテクチャを基本とするシステムバスとを備えたマルチプロセッサシステムの割り込みルーティング機構において、
前記ホストＰＥに管理され、システム構成情報が登録される構成情報データベースと、
前記システムバスを介して前記マスタＰＥ及び前記ＳＥと接続して、前記ホストＰＥを介さずに割り込み信号を少なくとも前記マスタＰＥと前記ＳＥの間で直接ルーティングできる割り込みルーティング回路とを備え、
前記ホストＰＥが、
システム初期化時に前記マスタＰＥおよび前記ＳＥがそれぞれ必要とするシステム資源を割り付け、割り付けれられた前記システム資源に関する情報と前記マスタＰＥと前記ＳＥの間の割り込みルーティングに必要な情報とを含むシステム構成情報を前記構成情報データベースに予め登録し、
前記構成情報データベースに基づいて前記ＳＥが発した割り込み信号が前記マスタＰＥへルーティングされるように前記割り込みルーティング回路を設定する割り込みルーティング機構。
【請求項２】
ホストＰＥが、
マルチプロセッサシステムが複数のマスタＰＥと複数のＳＥとを有する場合、各マスタＰＥとそのスレーブとなるＳＥとの対応を示す情報もシステム構成情報として構成情報データベースに予め登録し、
前記構成情報データベースに基づいて前記複数のＳＥのうちのいずれかが発した割り込み信号が該ＳＥを制御対象とするマスタＰＥへルーティングされるように割り込みルーティング回路を設定することを特徴とする請求項１記載の割り込みルーティング機構。
【請求項３】
ホストＰＥが接続されたシステムバスと他のシステムバスとを接続する１つのブリッジ機構と、必要であれば、前記他のシステムバスとこれとは別の他のシステムバスとを接続する少なくとも１つのブリッジ機構とを設け、各マスタＰＥおよび各ＳＥを前記システムバスおよび前記他のシステムバス上のいずれかの位置に設け、さらに、ホストＰＥを介さずに割り込み信号を割り込み要求元から割り込み要求先若しくは前記ブリッジ機構へ、または前記ブリッジ機構から割り込み要求先へ直接ルーティングできる割り込みルーティング回路を前記システムバスおよび前記他のシステムバス上に設け、
前記ホストＰＥが、
各マスタＰＥおよび各ＳＥの存在位置に関する情報もシステム構成情報として構成情報データベースに予め登録し、前記構成情報データベースに基づいて各ＳＥが発した割り込み信号が対応する割り込み要求先に必要ならば前記ブリッジ機構を介してルーティングされるように前記割り込みルーティング回路を設定することを特徴とする請求項１または請求項２記載の割り込みルーティング機構。
【請求項４】
請求項１記載の割り込みルーティング機構を利用するマルチプロセッサ制御方式において、
マスタＰＥに設けられ、該マスタＰＥとＳＥとの間の通信時のデータ転送のために、前記マスタＰＥが前記ＳＥにアクセスするためのウィンドウおよび該ウィンドウを介してアクセスするアクセス先を設定するためのレジスタを備え、
前記ホストＰＥが、構成情報データベースに基づいて前記マスタＰＥが前記ＳＥにアクセスできるように前記レジスタを設定し、
前記マスタＰＥと前記ＳＥとが通信を行う場合、前記ＳＥまたは前記マスタＰＥからの前記通信要求は割り込みとして割り込みルーティング回路を用いて前記マスタＰＥまたは前記ＳＥに通知し、前記マスタＰＥと前記ＳＥとの間のデータ転送は前記ウィンドウを介して行うマルチプロセッサ制御方式。
【請求項５】
ホストＰＥとマスタＰＥとの間の通信および前記マスタＰＥとＳＥとの間の通信における通信要求を割り込みとして割り込みルーティング回路を用いて通知し、前記ホストＰＥと前記マスタＰＥとの間のデータ転送は前記マスタＰＥ上に設けた共有メモリを介して行い、前記マスタＰＥと前記ＳＥとの間のデータ転送は前記マスタＰＥがシステムのマスタとなってデータ転送することを特徴とする請求項４記載のマルチプロセッサ制御方式。
【請求項６】
ＳＥの機能毎に有効／無効を設定できる機能制御用レジスタと、障害の要因を示すエラー要因情報を格納するためのエラー要因レジスタとを前記ＳＥに設け、
前記ＳＥが、障害が発生した際に割り込みルーティング回路を介した割り込みにより前記障害の発生を前記ＳＥを管理する管理マスタプロセッサエレメント（管理マスタＰＥ）に報告し、
前記障害の報告を受けた前記管理マスタＰＥが、前記ＳＥの前記エラー要因レジスタにアクセスして前記障害の要因を確認し、前記障害の要因に応じて前記障害の起きた機能を無効にすべく前記ＳＥの前記機能制御用レジスタの対応するビットをセットすることを特徴とする請求項４又は請求項５記載のマルチプロセッサ制御方式。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は複数のプロッセッサエレメントを備えたマルチプロセッサシステムにおいて割り込みルーティング等を制御するためのマルチプロセッサ制御方式、およびマルチタスクのハードウェア資源利用を制御するためのマルチタスク制御方式に関するものである。
【０００２】
【従来の技術】
図２１は割り込みルーティングを制御する従来のマルチプロセッサ制御方式が適用される複数のマスタＰＥを含むマルチプロセッサシステムの構成を示すブロック図である。図において、２００，２１０はマスタＰＥ、２０１はマスタＰＥ２００のＣＰＵ、２１１はマスタＰＥ２１０のＣＰＵ、２０２はマスタＰＥ２００の割り込みレジスタ、２１２はマスタＰＥ２１０の割り込みレジスタ、１４０は例えばＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスやそれに準じた規格のシステムバスであり、図示していないホストＰＥのみが入力で他の全てのマスタＰＥおよびＳＥ（図示せず）は出力であるような割り込み信号の入出力方向を有するバスである。このような従来のマルチプロセッサシステムでは、割り込みを発生する全てのＳＥもマスタＰＥとしてシステムバス１４０を制御する能力を有しており、ＳＥも含む割り込みを受け付ける全てのエレメントはシステムＩ／Ｏ空間中に割り込みを受け付けるための割り込みレジスタをそれぞれ備えている。図２１に示すマルチプロセッサシステムでは、マスタＰＥ２００はマスタＰＥ２１０のスレーブとして動作する。
【０００３】
次に動作について説明する。
マスタＰＥ２１０のスレーブとしてのマスタＰＥ２００からマスタＰＥ２１０への割り込み要求は、図２１の点線で示されたマスタとしてのマスタＰＥ２１０からスレーブとしてのマスタＰＥ２００への割り込みと同様な経路となる。すなわち、図２１の実線に示されているように、まずマスタＰＥ２００がシステムのマスタとなってシステムバス１４０を取得してマスタＰＥ２１０の割り込みレジスタ２１２にＩ／Ｏライト命令を用いて割り込み要求をセットし、これによってマスタＰＥ２１０内部でＣＰＵ２１１に割り込みが発生する。
【０００４】
図２２は例えば特開平１−１５２５６１号公報に開示された従来のマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。図において、図２１に示す従来のマルチプロセッサシステムと同一の構成要素には同一の符号を付してその説明を省略する。また、特開平１−１５２５６１号公報に開示されたマルチプロセッサシステムでは、マスタＰＥを上位装置もしくは上位ＣＰＵ、ＳＥをアダプタと呼んでいる。図２２において、３１０はＳＥとしての共有メモリ方式のアダプタ、３１１はアドレス設定レジスタ、３１２はメモリサイズ設定レジスタである。
【０００５】
次に動作について説明する。
マスタＰＥ２１０のＣＰＵ２１１は管理プログラムにより自動的にＰＩＯ命令を実行すると、共有メモリ方式のアダプタ３１０のアドレス設定レジスタ３１１およびメモリサイズ設定レジスタ３１２から、共有メモリアドレスの設定値および共有メモリサイズの設定値を読み出す。従って、ＣＰＵ２１１のシステム構築時に各アダプタの共有メモリアドレスおよび共有メモリサイズのデータが外部から入力されなくても、管理プログラムを用いて自動的に各アダプタから共有メモリアドレスおよび共有メモリサイズのデータを読み出すことができ、システム構築を容易に且つ正確に実行できる。
【０００６】
図２３は例えば特開昭６１−２９４５７２号公報に開示された従来のマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。図において、図２１および図２２に示す従来のマルチプロセッサシステムと同一の構成要素には同一の符号を付してその説明を省略する。図２３において、１００はホストＰＥ、２１７はマスタＰＥ２１０内に設けられた２ポートメモリ、３１０はマスタＰＥ２１０のターゲットとしてのＳＥである。
【０００７】
次に動作について説明する。
ホストＰＥ１００とマスタＰＥ２１０との間でデータ転送を行う場合、マスタＰＥ２１０の２ポートメモリ２１７を介してデータ転送が行われる。また、マスタＰＥ２１０とＳＥ３１０との間でデータ転送を行う場合、マスタＰＥ２１０がシステムのマスタとなってシステムバス１４０を制御してＳＥ３１０にデータを転送する。
【０００８】
図２４は例えば特開平６−２８３２０号公報に開示された従来のマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。図において、図２１に示す従来のマルチプロセッサシステムと同一の構成要素には同一の符号を付してその説明を省略する。また、図２４において、２１０，２２０はマスタプロセッサエレメント（マスタＰＥ）、５００は各マスタＰＥ２００，２１０，２２０に設けられており他のマスタＰＥに割り込み要求を発行する割り込み発行部（マスタＰＥ２２０には図示せず）、５０１は各マスタＰＥ２００，２１０，２２０に設けられており他のマスタＰＥからの割り込み要求を処理する割り込み実行部である（マスタＰＥ２００，２１０には図示せず）。この従来のマルチプロセッサシステムを構成する各マスタＰＥ２００，２１０，２２０は、自マスタＰＥに対して割り込み要求を発行してくる可能性のある複数のマスタＰＥにそれぞれ対応する複数の割り込みレジスタ２０２を具備している。
【０００９】
次に動作について説明する。
マスタＰＥ２００，２１０の割り込み発行部５００がマスタＰＥ２２０に対して割り込み処理を要求する場合、割り込み発行部５００が、その割り込み要求先のマスタＰＥ２２０が有する割り込みレジスタ２０２内のマスタＰＥ２００，２１０に割り付けられた部分に割り込み要求を設定する。マスタＰＥ２２０の割り込みレジスタ２０２がこの割り込み要求の設定を受けると、マスタＰＥ２２０の割り込み実行部５０１は対応する割り込み処理を実行する。
【００１０】
図２５は例えば特開昭６３−３９０４２号公報に開示された従来のマルチタスク制御方式の構成を示すブロック図である。図において、４０００はＣＰＵ、４００１，４００２，４００３はＣＰＵ４０００上で処理される複数のタスク、４００４はセマフォ制御部である。この従来の例ではホストＰＥはＣＰＵ４０００に対応する。
【００１１】
次に動作について説明する。
１つのＣＰＵ４０００上で複数のタスク４００１，４００２，４００３を実行させるマルチタスクの場合に、ある時間にＣＰＵ４０００上で動作するタスクは１つに限られるため、各々の優先順位に応じてＣＰＵ４０００を時分割に占有して動作する。特開昭６３−３９０４２号公報に開示された従来のマルチタスク同期制御方式では、セマフォ制御部４００４を用いて複数のタスク間の同期をとる。例えば、ＣＰＵ４０００上でタスク４００１を処理中に、他のタスク４００２がシステムコールを発行しセマフォ要求を出した場合、セマフォ制御部４００４は、実行中のタスク４００１と要求を出しているタスク４００２の優先順位を比較し、要求を出しているタスク４００２の方が優先順位が高ければ、処理中のタスク４００１を中断し、中断時の状態を専用のエリアに待避させる。その後、セマフォ制御部４００４は、要求を出しているタスク４００２に対してセマフォを移譲する。ＣＰＵ４０００は、セマフォを取得したタスク４００２の処理を実行し、その処理の終了後、セマフォ制御部４００４はセマフォを開放する。セマフォが開放されると、ＣＰＵ４０００は中断されていたタスク４００１の処理を再開する。
【００１２】
一般に、マルチプロセッサシステムにおいてＳＥに異常が発生した場合、システムの安全性を確保するため何らかの手段を用いて異常を外部に通知し、異常時の処理を行う必要がある。図２６はこのような手段を開示している特開昭６３−３０４３３３号公報に示された従来のマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。図において、図２１および図２２に示す従来のマルチプロセッサシステムと同一の構成要素には同一の符号を付してその説明を省略する。また、図２６において、３１０，３２０，３３０はスレーブエレメント（ＳＥ）、６２００は割り込みコントローラ、６２６０はマスタＰＥ２００とＳＥ３００，ＳＥ３１０，ＳＥ３２０，ＳＥ３３０とをそれぞれ接続するシステムバス、６２１０は割り込みコントローラ６２００がマスタＰＥ２００から制御信号を受信するための制御信号バス、６２２０，６２３０，６２４０，６２５０は割り込みコントローラ６２００が割り込み信号を各ＳＥ３００，３１０，３２０，３３０に送出するための割り込み信号線である。
【００１３】
また、図２７は図２６に示すＳＥ３００の構成を示すブロック図である。ＳＥ３００はＣＰＵ３０１と、ファームウェア（ＳＥ３００がダウン時にＣＰＵ３０１に行わせてＣＰＵ３０１の処理動作をストールさせる特定プログラムを含む）を格納するメモリ３０２と、割り込み信号バス３０４を介して入力されるＳＥ３００に対する割り込み（ＳＥ３００内部の割り込みを含む）を禁止するための割り込みマスク３０３とにより構成されている。他のＳＥ３１０、３２０、３３０もＳＥ３００と同様の構成を有している。
【００１４】
次に動作について説明する。
例えばＳＥ３００において障害が発生すると、マスタＰＥ２００は、通信を行っているシステムバス６２６０を介してＳＥ３００の障害を検知し、割り込みコントローラ６２００に対して制御信号バス６２１０を介して制御信号を送出する。割り込みコントローラ６２００はこの制御信号に応答してＳＥ３００に対して割り込み信号を発生する。割り込み信号線６２２０を介して入力された割り込み信号は、ＳＥ３００に対して割り込みを起こすとともに、割り込みマスク３０３をオンして割り込み信号バス３０４を介して入力されるＳＥ３００に対する他の割り込みをすべて禁止する。
【００１５】
ＳＥ３００のＣＰＵ３０１は、割り込み信号６２２０を介して入力される割り込み信号に応答して、メモリ３０２に格納されているファームウェアのうちで特定アドレスのダウン時の処理のファームウェアを読み出し、このファームウェアによりダウン時の処理（特定のプログラムの処理）を起動する。ダウン時の処理が起動されると、ダウン時の処理を行うことでＣＰＵ３０１はストール状態となり、ＳＥ３００ではダウン時の処理以外の処理は行われなくなる。
【００１６】
図２８は従来のマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。図において、６０２０は割り込み信号（ＰＣＩでいうＩＮＴＡ＃）、６０３０はエラー通知信号（ＰＣＩでいうＳＥＲＲ＃）、１００は割り込み信号６０２０、エラー通知信号６０３０を入力するホストＰＥ、３００，３１０はＳＥ、６０００はＳＥ３００の管理マスタＰＥ、２００はマスタＰＥ、１２１はシステムバスとしてのＰＣＩバスである。
【００１７】
次に動作について説明する。
以下では、図２８を参照しながら、従来のマルチプロセッサシステムで実行される、ＰＣＩ  ＬＯＣＡＬ  ＢＵＳ  ＳＰＥＣＩＦＩＣＡＴＩＯＮ  ＲＥＶ．２．１で規定される障害時のエラー報告、割り込みについて説明する。
【００１８】
ＳＥ３００で障害が発生すると、ＳＥ３００は、それが致命的な障害である場合にはエラー通知信号６０３０にてその障害をホストＰＥ１００に通知する。ホストＰＥ１００はそれを受けてエラー時の処理を実行するが、ホストＰＥ１００はその障害の危険度を把握できないため、一般的にはシステムのリセットなどの緊急時の処理を実行する。
【００１９】
ＳＥ３００で発生した障害の危険度が致命的でない場合は、ＳＥ３００は割り込み信号６０２０によりその障害をホストＰＥ１００に通知する。通知を受けたホストＰＥ１００は、一般的には、割り込み処理ルーティンの中でＳＥ３００の割り込み要因を認識して、その要因に応じた割り込み処理を実行する。
【００２０】
図２９は例えば特開平１−１４９１６１号公報に開示された従来のマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。なお、この従来例では、マスタＰＥをホストＰＥ、システム全体のホストＰＥとなるマスタＰＥを主ホストＰＥ、主ホストＰＥがダウンした時にホストとなるマスタＰＥを代替ホストＰＥと呼んでいる。また、図２９において、２００，２１０，２２０，２３０はホストＰＥとなり得るマスタＰＥ、４００は各マスタＰＥからアクセス可能な装置、２２０１，２２１１，２２２１，２２３１は全マスタＰＥ２００，２１０，２２０，２３０がホストＰＥとなるための順位に関する情報を保持するシステム情報テーブル、２２０２，２２１２，２２２２，２２３２はシステム起動時自マスタＰＥがホストＰＥとなるかどうかを決定する主ホスト／代替ホスト決定手段、２２０３，２２１３，２２２３，２２３３は自マスタＰＥがホストＰＥであることを他のマスタＰＥに宣言するための主ホスト／代替ホスト宣言手段、２２０４，２２１４，２２２４，２２３４はホストダウン時自マスタＰＥがホストＰＥとなるかどうかを決定する主ホスト／代替ホスト選択手段、３２００，３２１０，３２２０，３２３０はシステム起動時に予め定められた主ホスト／代替ホスト順位情報、３２０１，３２１１，３２２１，３２３１は各マスタＰＥのオペレータコンソール、４０１は各マスタＰＥ２００，２１０，２２０，２３０の状態を監視するマスタＰＥ監視手段、４０３はマスタＰＥの構成状況に関する情報を保持するシステム構成情報、４０２はシステム構成情報４０３への読み書きを行うシステム情報読書き手段、４０４はホストＰＥがダウンしたことを他マスタＰＥに通知するダウン通知手段である。
【００２１】
次に動作について説明する。
特開平１−１４９１６１号公報に開示された従来例では、各マスタＰＥ２００，２１０，２２０，２３０の主ホスト／代替ホスト決定手段が各マスタＰＥ２００，２１０，２２０，２３０の立ち上げ時に自マスタＰＥがシステム全体を管理する主ホストＰＥになるか、主ホストＰＥの代わりをする代替ホストＰＥになるか、それとも主ホストＰＥおよび代替ホストＰＥ以外の一般のマスタＰＥになるかを決定し、マスタＰＥ監視手段４０１がシステムの運用中に全マスタＰＥ２００，２１０，２２０，２３０の状態を監視する。そして、ダウン通知手段４０４は、マスタＰＥ監視手段４０１がマスタＰＥの１つがダウンしたことを認識するとダウンしたマスタＰＥ以外のマスタＰＥに対してホストダウン通知を行う。ダウンしたマスタＰＥ以外のマスタＰＥの主ホスト／代替ホスト選択手段は、ダウン通知手段４０１からホストダウン通知を受けると自マスタＰＥが新たに主ホストＰＥになるか代替ホストＰＥになるか、それとも主ホストＰＥにも代替ホストＰＥにもならないかを選択し、主ホスト／代替ホスト宣言手段が主ホスト／代替ホスト決定手段および主ホスト／代替ホスト選択手段によって主ホストＰＥまたは代替ホストＰＥになると決定および選択されたときに主ホスト宣言または代替ホスト宣言を行う。
【００２２】
【発明が解決しようとする課題】
従来のマルチプロセッサ制御方式は以上のように構成されているので、例えば図２１に示した従来のマルチプロセッサシステムでは、実際にはシステムのマスタとして機能する必要のないＳＥ等のエレメントまでも、割り込みを発生するためにマスタとして動作する機能を持たなければならず、マスタ機能を実装するためのハードウェアのボリューム増加や割り込み発生のためのマスタ動作による割り込み遅延の増大を招いてしまうという課題があった。
【００２３】
また、特開平１−１５２５６１号公報および特開昭６１−２９４５７２号公報に示された従来のマルチプロセッサ制御方式では、マスタＰＥとＳＥ等との間の通信に関してデータ転送用のパスは考慮されているが、通信要求用のパスは考慮されていないので、通信要求を通知するには通信要求フラグのポーリングを行ったり、全てのエレメントがマスタ機能を持つ必要があり、割り込み発生のためのマスタ動作による割り込み遅延の増大を招いてしまうという課題があった。
【００２４】
さらに、特開平６−２８３２０号公報に示された従来のマルチプロセッサシステム制御方式では、割り込みレジスタを複数設けたため、割り込みを通知するには割り込みレジスタごとに割り込みレベルを対応させるか、全割り込みレジスタからの割り込み要求を１つの割り込みレベルで処理する必要があるが、多くのシステム要素から割り込みを受ける場合、割り込みレジスタごとに割り込みレベルを対応させていては割り込み資源が不足するという課題があり、他方、全割り込みレジスタからの割り込み要求を１つの割り込みレベルで処理していては割り込み処理ルーチンでの割り込み要求元を特定するのに時間がかかってしまうという課題があった。
【００２５】
また、特開昭６３−３９０４２号公報に示された従来のマルチタスク制御方式では、単一のプロセッサ上でのソフトウェアのマルチタスク処理であり、複数のプロセッサエレメントおよび複数のバス上でのマルチプロセッシングには適用できないという課題があった。また、セマフォ制御部を実装するためのハードウェアのボリューム、ソフトウェアのボリュームが増大してしまうという課題があった。
【００２６】
さらに、特開昭６３−３０４３３３号公報に示された従来のマルチプロセッサ制御方式では、障害発生時、障害の発生したＳＥのＣＰＵがファームウェアによりダウン時の処理を行うという処理であるため、ＳＥは必ずファームウェアを格納するメモリとプロセッサＣＰＵとを備えたインテリジェントなシステムでなければならず、ＳＥがノンインテリジェント（メモリとＣＰＵを備えていない）システムである場合にはこの従来のマルチプロセッサ制御方式は適用できないという課題があった。
【００２７】
また、特開昭６３−３０４３３３号公報に示された従来のマルチプロセッサ制御方式では、障害の検知を通信にて行っているので、図２６に示すマスタＰＥ２００がＳＥ３００で障害が発生いた時に別のＳＥ３１０，３２０，３３０と長時間通信を行っている場合には、ＳＥ３００の障害を検知することが遅れてしまうという課題があった。この遅れは、致命的な障害が発生し緊急にシステムをストップさせなければならないような場合問題となる。
【００２８】
また、図２８に示したような従来のマルチプロセッサ制御方式では、ＳＥ３００に障害が発生しエラー通知信号６０３０にてホストＰＥ１００にその障害が通知された場合、ホストＰＥ１００にエラーが通知され、ホストＰＥ１００がエラー時の処理（一般的にはシステムのリセットなどの緊急時の処理）を実行するので、ＳＥ３００の以降、管理マスタプロセッサエレメント（管理マスタＰＥ）６０００がエラー処理を実行することができないという課題があった。
【００２９】
さらに、図２８に示したような従来のマルチプロセッサ制御方式では、ＳＥ３００とは無関係なマスタＰＥやＳＥにも影響が及ぶ。例えば、ホストＰＥ１００がエラー報告を受けた時、ホストＰＥ１００はその障害の危険度を把握できないため、緊急時の処理としてＰＣＩバスリセットというエラー処理を行うとともに、障害の発生したＳＥ３００とは無関係なマスタＰＥやＳＥもリセットしてしまうという課題があった。
【００３０】
また、図２８に示したような従来のマルチプロセッサ制御方式では、正常時のプログラムは管理マスタＰＥ６０００に実行させ、ＳＥ３００に障害が発生し割り込み信号６０２０にてホストＰＥ１００にエラーが通知された場合にホストＰＥ１００にエラー処理を実行させるために、ホストＰＥ１００および管理マスタＰＥ６０００にそれぞれソフトウェアをインストールしなければならないなどシステムが非常に複雑になるという課題があった。
【００３１】
さらに、特開平１−１４９１６１号公報に示された従来のマルチプロセッサ制御方式では、独立した単一のホスト監視手段で全マスタＰＥの状態を監視する必要があり、主ホストや代替ホストがダウンした場合にはホスト監視手段からの通知により全マスタＰＥが自身が主ホストや代替ホストになるべきか決定する必要があり、また、主ホストになる優先順位の情報を全マスタＰＥが個別に持たなければならないのでその情報をホスト間で同一に保つ必要があるので、ハードウェアボリューム、ソフトウェアボリューム、処理オーバーヘッドとも増大するという課題があった。
【００３２】
また、上記の従来のマルチプロセッサ制御方式やマルチタスク制御方式では、タスクごとにハードウェア資源の内容を変えるためにはタスクごとに個別にハードウェア資源を持つ必要があり、それ故、ハードウェアボリュームを増大させ、貴重なＩ／Ｏ空間に大きな領域を必要とするという課題があった。さらに、ハードウェアを実装する時点で、対象となるハードウェア資源を必要とするタスク数を把握しておかなければならないという課題があった。
【００３３】
この発明は上記のような課題を解決するためになされたもので、スレーブにマスタ機能を持たせたりその他のハードウェアを追加することなく、ＳＥからマスタＰＥへ割り込みをルーティングするマルチプロセッサ制御方式を得ることを目的とする。
【００３４】
また、この発明はスレーブにマスタ機能を持たせたりホストＰＥの割り込み処理ルーチンを特殊化したりすることなく、さらに、基礎となるシステムハードウェアを変更することなくＳＥからマスタＰＥへ割り込みをルーティングするマルチプロセッサ制御方式を得ることを目的とする。
【００３５】
さらに、この発明はマスタＰＥとＳＥとの通信に関する通信要求やデータを当事者間で直接送受信できるマルチプロセッサ制御方式を得ることを目的とする。
【００３６】
さらに、この発明はホストＰＥとマスタＰＥとの通信に関する通信要求やデータを当事者間で直接送受信でき、従来のマルチプロセッサシステムに比べて余分なオーバーヘッドをシステムにかけることなく通信できるマルチプロセッサ制御方式を得ることを目的とする。
【００３７】
さらに、この発明はＳＥで発生した障害を迅速にそのＳＥを管理するマスタＰＥに通知して障害が発生したＳＥとは無関係なマスタＰＥやＳＥに処理を継続させることができ、さらに、ノンインテリジェントであるかインテリジェントであるかに関わらずすべてのＳＥに適応できる、信頼性、保守性、および柔軟性の高いシスマルチプロセッサ制御方式を得ることを目的とする。
【００３８】
さらに、この発明は割り込み要求元および割り込み要求要因を迅速に特定できるマルチプロセッサ制御方式を得ることを目的とする。
【００３９】
さらに、この発明はセマフォレジスタの取得開放により複数のマスタＰＥ、ホストＰＥからのシステム共有資源へのアクセスを順次受け付けて処理することを可能にするマルチプロセッサ制御方式を得ることを目的とする。
【００４０】
さらに、この発明はハードウェア、ソフトウェア、処理オーバーヘッドを増大させることなく、ホストの権利をスムーズにシステムを構成するマスタＰＥに受け継がせてシステムダウンを防ぐマルチプロセッサ制御方式を得ることを目的とする。
【００４１】
さらに、この発明はハードウェアとしては１つしか実装されていないハードウェア資源をソフトウェア的には複数存在するように扱うことにより、ハードウェアが要求するスペース、価格などのコストを低減できるマルチプロセッサ制御方式およびマルチタスク制御方式を得ることを目的とする。
【００４３】
【課題を解決するための手段】
請求項１記載の発明に係る割り込みルケーティング機構は、ホストＰＥを介さずに割り込み信号を少なくともマスタＰＥとＳＥの間で直接ルーティングできる割り込みルーティング回路を設け、システム初期化時に割り付けたシステム資源に関する情報とマスタＰＥとＳＥの間の割り込みルーティングに必要な情報とを含むシステム構成情報を構成情報データベースに予め登録し、構成情報データベースに基づいてＳＥが発した割り込み要求がマスタＰＥへルーティングされるように割り込みルーティング回路を設定するものである。
【００４４】
請求項２記載の発明に係る割り込みルーティング機構は、マルチプロセッサシステムが複数のマスタＰＥと複数のＳＥとを有する場合、各マスタＰＥとそのスレーブとなるＳＥとの対応を示す情報もシステム構成情報として構成情報データベースに予め登録し、構成情報データベースに基づいて複数のＳＥのうちのいずれかが発した割り込み信号が該ＳＥを制御対象とするマスタＰＥへルーティングされるように割り込みルーティング回路を設定するものである。
【００４５】
請求項３記載の発明に係る割り込みルーティング機構は、ホストＰＥが接続されたシステムバスと他のシステムバスとを接続する１つのブリッジ機構と、必要であれば、他のシステムバスとこれとは別の他のシステムバスとを接続する少なくとも１つのブリッジ機構とを設け、各マスタＰＥおよび各ＳＥの存在位置に関する情報もシステム構成情報として構成情報データベースに予め登録し、構成情報データベースに基づいて各ＳＥが発した割り込み信号が対応する割り込み要求先に必要ならばブリッジ機構を介してルーティングされるように割り込みルーティング回路を設定するものである。
【００４６】
請求項４記載の発明に係るマルチプロセッサ制御方式は、マスタＰＥとＳＥとが通信を行う場合、ＳＥまたはマスタＰＥからの通信要求は割り込みとして割り込みルーティング回路を用いてマスタＰＥまたはＳＥに通知し、マスタＰＥとＳＥとの間のデータ転送はウィンドウを介して行うものである。
【００４７】
請求項５記載の発明に係るマルチプロセッサ制御方式は、ホストＰＥとマスタＰＥとの間の通信およびマスタＰＥとＳＥとの間の通信における通信要求を割り込みとして割り込みルーティング回路を用いて通知し、ホストＰＥとマスタＰＥとの間のデータ転送はマスタＰＥ上に設けた共有メモリを介して行い、マスタＰＥとＳＥとの間のデータ転送はマスタＰＥがシステムのマスタとなってデータ転送するものである。
【００４８】
請求項６記載の発明に係るマルチプロセッサ制御方式は、ＳＥにおいて障害が発生した際に割り込みルーティング回路を介して割り込みにより障害の発生をＳＥを管理マスタＰＥに報告し、障害の報告を受けた管理マスタＰＥにＳＥのエラー要因レジスタにアクセスさせて障害の要因を確認し、障害の要因に応じて障害の起きた機能を無効にすべく管理マスタＰＥにＳＥの機能制御用レジスタの対応するビットをセットさせるものである。
【００５５】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態１．
図１はこの発明の実施の形態１によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。この実施の形態１によるマルチプロセッサシステムのベースとなるハードウェアは、例えば、ＰＣＩバスやそれに準じたバスをシステムバスとするＩＢＭ  ＰＣ／ＡＴアーキテクチャに従うものである。図１において、１００はシステム全体のホストとなるホストプロセッサエレメント（以下、ホストＰＥと記す）、１０１はホストＰＥ１００内に設けられたＣＰＵ、１０２はホストＰＥ１００が管理するシステム構成情報を蓄積するためデータベースである構成情報データベース（以下、構成情報ＤＢと略す）、１０３はホストＰＥ１００内に設けられた割り込みコントローラ、１０４はホストＰＥ１００内に設けれれており、システムの周辺デバイスからの割り込みを割り込みコントローラ１０３のどのレベルに割り振るかをルーティングする割り込みルーティング機構であり、一般的にはＰＣＩバス制御用のチップセット内に実装される。また、１５０はシステムバスに含まれる一般的な接続線である割り込み信号線（システムバス）、２００は割り込み信号線１５０に接続されており、ＰＣＩバス上に存在しシステムの１つのマスタとなりえるＬＡＮカード等のマスタＰＥ、２１０は割り込み信号線１５０に接続されており、ＰＣＩバス上に存在する他のマスタデバイスとしてのマスタＰＥ、２１１はマスタＰＥ２１０内に設けられたＣＰＵ、２１２はマスタＰＥ２１０内に設けられたＩ／Ｏレジスタであり、外部からビットをセットされるとＣＰＵ２１１に対して割り込みを発生する割り込みレジスタ、３００はＰＣＩバス上に存在してホストＰＥ１００に対して割り込みを発生する１つのスレーブデバイスとしてのＳＥ、３１０はＰＣＩバス上に存在する他のスレーブデバイスとしてのＳＥである。また、図２は構成情報ＤＢ１０２の内容のうち、割り込みルーティングに関連する情報の一例を示す説明図である。
【００５６】
次に動作について説明する。
まず、ＰＣＩバス上のスレーブＳＥ３００から対象デバイスであるＰＣＩバス上のマスタＰＥ２１０に割り込みを通知する動作の流れについて説明する。ＰＣＩバスの割り込み信号線は一般的には図１中のＰＣＩバスの割り込み信号線１５０のように配線されるので、一般のシステムハードウェアで直接あるデバイスからの割り込みを別のデバイスに通知することができる。しかし、ＰＣＩバスの割り込み信号線１５０のような配線はＰＣＩとしては規格化されておらず、正規の規格ではＰＣＩ上のデバイスからの割り込み信号はデバイスごとにそれぞれホストＰＥ１００に入力されることとなっている。そのため、規格に則してＰＣＩバス上のデバイスから他のＰＣＩ上のデバイスへ割り込みを発生させることは一般的なハードウェアシステムだけでは実現できず、ソフトウェアもしくは特殊なハードウェアの実装が必要となる。この実施の形態１によるマルチプロセッサ制御方式は、特殊なハードウェアを実装することなく、ソフトウェアのみでＰＣＩバス上のデバイス間の割り込みをルーティングするように構成されており、以下では、ＳＥ３１０がマスタＰＥ２１０へ割り込み要求を行った場合を例にとってこの実施の形態１によるマルチプロセッサ制御方式の割り込みルーティングについて説明する。
【００５７】
システム初期化時に、ホストＰＥ１００、各マスタＰＥ２００，２１０、およびＳＥ３００，３１０が必要とする、メモリ、Ｉ／Ｏ、割り込み等のシステムの資源を割り付け、その割り付けられたシステム資源に関する情報とともに、図２に示すような、各マスタＰＥ２００，２１０の名称とその割り込みレジスタのＩ／Ｏアドレスと各マスタＰＥ２００，２１０の対象となるスレーブとしてのＳＥ３００，３１０の名称（即ち、マスタＰＥとＳＥとの対応関係）とそのＳＥの使用する割り込みレベルとを含む割り込みルーティングに関連する情報をシステム構成情報として構成情報ＤＢ１０２に予め登録する。なお、図２には、ＳＥ３００，３１０がマスタＰＥ２１０のスレーブとして動作する旨が規定されている。
【００５８】
次に、図１に示す矢印（１）に示すように、ＳＥ３００がマスタＰＥ２１０へのハードウェア上の割り込みをＰＣＩバスの割り込み信号線１５０上に発生すると、矢印（２）に示されているように、一般的なＰＣＩバス制御用のチップセット内に実装されている割り込みルーティング機構１０４を介して割り込みコントローラ１０３の割り込みレベル１０（図２に示したようにＳＥ３００の割り込みレベルは１０である）に入力される。次に、割り込みコントローラ１０３は、矢印（３）に示すようにＣＰＵ１０１に対して割り込み要求を発生し、ＣＰＵ１０１にＩＳＲ（割り込み処理ルーチン）を起動させる。ＩＳＲを起動したＣＰＵ１０１は、発生した割り込みレベルが１０であることを確認し、矢印（４）に示すように構成情報ＤＢ１０２にアクセスし割り込み要求先であるマスタＰＥ２１０の割り込みレジスタ２１２のＩ／Ｏアドレスを０ｘ３００と判断し、矢印（５）に示すようにマスタＰＥ２１０の割り込みレジスタ２１２の必要ビットをセットする。そして、マスタＰＥ２１０の割り込みレジスタ２１２のビットがセットされると、矢印（６）に示すようにマスタＰＥ２１０内のＣＰＵ２１１に対して割り込みが発生する。このようなフローに従って、ＳＥ３００で発生したマスタＰＥ２１０への割り込み要求はホストＰＥ１００を介してルーティングされる。
【００５９】
以上のように、この実施の形態１によれば、ＰＣＩバスをシステムバスとして用いておりハードウェア的にはスレーブであるＳＥ３００からマスタＰＥ２１０に割り込みを通知できないマルチプロセッサシステムにおいても、ＰＣＩバスシステムの一般的なハードウェアに割り込みルーティング用のソフトウェアルーチンを組み込むことにより、スレーブにマスタ機能を持たせたりその他のハードウェアを追加することなく、割り込みのルーティングを行うことができる。また、マスタＰＥやターゲットであるＳＥが複数存在する複雑なマルチプロセッサシステムにおいても、構成情報ＤＢ１０２の内容を参照することにより容易にシステム構成を把握でき、さらに、構成情報ＤＢ１０２の内容を変更することにより割り込みルーティングの変更を行えるため、システムのフレキシビリティを向上させることができる。
【００６０】
実施の形態２．
図３はこの発明の実施の形態２によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。この実施の形態２によるマルチプロセッサシステムは、割り込み信号線が全デバイスに共通に配線されているものではなく、ＰＣＩバスのようにホストＰＥとＰＣＩバス上の各デバイスの間を一対一で複数組接続されるようなシステムであり、図示していないホストＰＥを介さずにＳＥとマスタＰＥの間で割り込みを直接通知するための基本的な割り込みルーティング回路を有している。
【００６１】
図３において、ＩＮＴ０＃，ＩＮＴ１＃，ＩＮＴ２＃，ＩＮＴ３＃，ＩＮＴ４＃はそれぞれプルアップされたオープンコレクタ形式のローアクティブの割り込み信号線、１０００は割り込みルーティング回路、１１００〜１１０４は割り込み信号線ＩＮＴ０＃，ＩＮＴ１＃，ＩＮＴ２＃，ＩＮＴ３＃，ＩＮＴ４＃の内の１つを介して割り込みルーティング回路１０００へ入力されるあるＳＥからの割り込み信号を他の割り込み信号線を介してあるマスタＰＥへルーティング設定するための割り込み設定レジスタであり、割り込み設定レジスタ１１００は割り込み信号線ＩＮＴ０＃へ、割り込み設定レジスタ１１０１は割り込み信号線ＩＮＴ１＃へ、割り込み設定レジスタ１１０２は割り込み信号線ＩＮＴ２＃へ、割り込み設定レジスタ１１０３は割り込み信号線ＩＮＴ３＃へ、割り込み設定レジスタ１１０４は割り込み信号線ＩＮＴ４＃へ割り込みをそれぞれルーティングするように構成されている。また、１２００〜１２１９は各割り込み信号線ＩＮＴ０＃，ＩＮＴ１＃，ＩＮＴ２＃，ＩＮＴ３＃，ＩＮＴ４＃を介して入力される割り込み信号を反転した信号と各割り込み設定レジスタ１１００〜１１０４のいずれかのビットの出力との論理積を求めて主力する演算回路、１３００〜１３０４はそれぞれ４つの上記演算回路の出力の論理和を求めて出力して、割り込み信号線ＩＮＴ０＃，ＩＮＴ１＃，ＩＮＴ２＃，ＩＮＴ３＃，ＩＮＴ４＃への出力を制御するためのＮＯＲ回路、１４００〜１４０４はそれぞれ各ＮＯＲ回路１３００〜１３０４からの出力を入力し、割り込み信号線ＩＮＴ０＃，ＩＮＴ１＃，ＩＮＴ２＃，ＩＮＴ３＃，ＩＮＴ４＃へ割り込み信号を出力する割り込み信号出力回路である。
【００６２】
割り込み設定レジスタ１１００，１１０１，１１０２，１１０３，１１０４の４つのビットのそれぞれは、どの割り込み信号線ＩＮＴ０＃，ＩＮＴ１＃，ＩＮＴ２＃，ＩＮＴ３＃，ＩＮＴ４＃からの割り込みを許可するかを規定している。各割り込み設定レジスタ１１００〜１１０４において、ビット０は割り込み信号線ＩＮＴ０＃から、ビット１は割り込み信号線ＩＮＴ１＃から、ビット２は割り込み信号線ＩＮＴ２＃から、ビット３は割り込み信号線ＩＮＴ３＃から、ビット４は割り込み信号線ＩＮＴ４＃からの割り込みを許可する（ここで、例えば、割り込み設定レジスタ１１００の４つのビットはビット１、ビット２、ビット３、ビット４から構成されている）。例えば、割り込み設定レジスタ１１０１のビット２がセットされていると、割り込み信号線ＩＮＴ２＃を介して入力された割り込みを割り込み信号線ＩＮＴ１＃にルーティングすることを許可する。
【００６３】
次に動作について説明する。
以下、図３に示すように割り込みを発生するＳＥ３００が割り込み信号線ＩＮＴ４＃に接続されており、その割り込みを受けるべきマスタＰＥ２００が割り込み信号線ＩＮＴ０＃に接続されていると仮定し、ＳＥ３００がマスタＰＥ２００に対して割り込みを要求した場合のこの実施の形態２によるマルチプロセッサ制御方式の割り込み要求ルーティングについて説明する。
【００６４】
マルチプロセッサシステムは、システム初期化時に、上記実施の形態１と同様に、ホストＰＥ、マスタＰＥ２００、およびＳＥ３００が必要とする、メモリ、Ｉ／Ｏ、割り込み等のシステムの資源を割り付け、その割り付けられたシステム資源に関する情報とともに、マスタＰＥ２００の名称とその割り込みレジスタのＩ／ＯアドレスとマスタＰＥ２００の対象となるスレーブとしてのＳＥ３００の名称（即ち、マスタＰＥとＳＥとの対応関係）とそのＳＥの使用する割り込みレベルとを含む割り込みルーティングに関連する情報が、システム構成情報として図示していない構成情報ＤＢに予め登録される。ホストＰＥは、この構成情報ＤＢを参照して図３に示すような割り込み信号線ＩＮＴ０＃，ＩＮＴ１＃，ＩＮＴ２＃，ＩＮＴ３＃，ＩＮＴ４＃の使用状況を認識し、割り込み信号線ＩＮＴ４＃への割り込み設定レジスタ１１０４の全ビットをクリアし、さらに、割り込み信号線ＩＮＴ０＃への割り込み設定レジスタ１１００のビット４のみをセットする。これにより、割り込み信号線ＩＮＴ４＃は割り込みルーティング回路１０００によってドライブされることはなく、ＳＥ３００のみにドライブされるので、割り込み信号線ＩＮＴ４＃上で信号の衝突が起こることはない。
【００６５】
ＳＥ３００が自身の内部に持っているマスタＰＥ２００との共有メモリ（図示せず）にデータをセットして割り込み信号を割り込みルーティング回路１０００に送出し、割り込み信号線ＩＮＴ４＃をアクティブにドライブすると、演算回路１２０３，１２０７，１２１１，１２１５，１２１９の一方の入力はアクティブになる。一方、割り込み設定レジスタ１１００のビット４がセットされているので、上記の演算回路１２０３，１２０７，１２１１，１２１５，１２１９のうちで、もう一方の入力がアクティブになっているのは演算回路１２０３のみであるので、演算回路１２０３のみの出力がアクティブになる。その結果、ＮＯＲ回路１３００の出力がアクティブになり、割り込み信号線ＩＮＴ０＃にその出力が接続された割り込み信号出力回路１４００が割り込み信号線ＩＮＴ０＃をアクティブにドライブする。このようなルーティングにより、ＳＥ３００で発生した割り込み要求は、割り込み信号線ＩＮＴ４＃を介して割り込みルーティング回路１０００に入力され、さらに、割り込み信号線ＩＮＴ０＃を介してマスタＰＥ２００へ通知される。
【００６６】
以上のように、この実施の形態２によれば、ＰＣＩバスをシステムバスとする一般的なシステムハードウェアだけではターゲットであるＳＥ３００からマスタＰＥ２００に割り込みを通知できないマルチプロセッサシステムにおいても、スレーブにマスタ機能を持たせたりホストＰＥ１００の割り込み処理ルーチンを特殊化したりすることなく、さらに、基礎となるシステムハードウェアを変更することなく、必要な割り込みルーティング回路１０００を付加するだけでＳＥ３００からマスタＰＥ２００へ割り込みをルーティングできる。さらに、上記実施の形態１のように割り込みルーティングの際にホストＰＥ１００が介在しないため、割り込み通知に関して余分なオーバーヘッドはかからない。また、マスタＰＥやターゲットであるＳＥが複数存在する複雑なマルチプロセッサシステムにおいても、構成情報ＤＢ１０２の内容を参照することにより容易にシステム構成を把握でき、さらに、構成情報ＤＢ１０２の内容を変更することにより割り込みルーティングの変更を行えるため、システムのフレキシビリティを向上させることができる。
【００６７】
実施の形態３．
図４はこの発明の実施の形態３によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。この実施の形態３によるマルチプロセッサシステムのベースとなるハードウェアは、ＰＣＩバスやそれに準じたバスをシステムバスとするＩＢＭ  ＰＣ／ＡＴアーキテクチャに従うものである。また、この実施の形態３によるマルチプロセッサシステムは、５ＰＣＩスロットを持つＰＣＩバスシステムであり、上記実施の形態１で説明したような理由により一般的なハードウェアでは直接ルーティングできないＰＣＩバス上のデバイス間の割り込みを可能とする割り込みルーティング回路を備えている。
【００６８】
図４において、図１に示す上記実施の形態１のよるマルチプロセッサシステムの構成要素と同一のものには同一の符号を付してその説明を省略する。また、１，２，３、４、５はＰＣＩバスのＰＣＩスロットであり、ＰＣＩスロット２の割り込み信号線ＩＮＴＡ＃に接続されているマスタＰＥ２００およびＰＣＩスロット４の割り込み信号線ＩＮＴＡ＃に接続されているＳＥ３００を除いて、割り込みを使用するＰＣＩバス上のデバイスは他には接続されていないと仮定する。また、１１０は例えばインテル社の８２４３０ＦＸのような一般的なＰＣＩバスシステム用のＰＣＩチップセット、１０４はＰＣＩチップセット１１０内に実装されている一般的な割り込みルーティング機構、１５１〜１５４はそれぞれＰＣＩチップセット１１０へ入力される割り込み信号が伝送される割り込み信号線ＩＮＴＡ＃，ＩＮＴＢ＃，ＩＮＴＣ＃，ＩＮＴＤ＃、１００１はＰＣＩスロット間での割り込みルーティングを可能にする割り込みルーティング回路である。さらに、１１１０〜１１１３はそれぞれＰＣＩスロット２、ＰＣＩスロット３、ＰＣＩスロット４、ＰＣＩスロット５からＰＣＩスロット１への割り込みを許可するための割り込み設定レジスタ、１１２０〜１１２３はそれぞれＰＣＩスロット１、ＰＣＩスロット３、ＰＣＩスロット４、ＰＣＩスロット５からＰＣＩスロット２への割り込みを許可するための割り込み設定レジスタ、１１３０〜１１３３はそれぞれＰＣＩスロット１、ＰＣＩスロット２、ＰＣＩスロット４、ＰＣＩスロット５からＰＣＩスロット３への割り込みを許可するための割り込み設定レジスタ、１１４０〜１１４３はそれぞれＰＣＩスロット１、ＰＣＩスロット２、ＰＣＩスロット３、ＰＣＩスロット５からＰＣＩスロット４への割り込みを許可するための割り込み設定レジスタ、１１５０〜１１５３はそれぞれＰＣＩスロット１、ＰＣＩスロット２、ＰＣＩスロット３、ＰＣＩスロット４からＰＣＩスロット５への割り込みを許可するための割り込み設定レジスタである。１２４０は各ＰＣＩスロット１，２，３，４，５の割り込み信号線ＩＮＴＡ＃，ＩＮＴＢ＃，ＩＮＴＣ＃，ＩＮＴＤ＃に接続されており、全ての入力の反転したものの論理和を出力する演算回路、１２５０はＰＣＩスロット間での割り込みルーティングのために、各ＰＣＩスロット１，２，３，４，５への割り込みを許可する割り込み設定レジスタの各ビットの値と各ＰＣＩスロット１，２，３，４，５の演算回路１２４０の出力との論理積を出力するＡＮＤ回路、１３１０はＰＣＩスロット間での割り込みルーティングのために、他のＰＣＩスロットから同一割り込み信号線への割り込み信号をそれぞれ出力する複数のＡＮＤ回路１２５０の論理和を求めそれを反転して出力するＮＯＲ回路、１４１０は各ＮＯＲ回路１３１０の出力を入力とし、ＰＣＩスロット１，２，３，４，５からの割り込み信号を割り込み要求先へ直接出力するための割り込み信号出力回路である。１５００〜１５０３は各ＰＣＩスロット１，２，３，４，５の各割り込み信号をホストＰＥ１００に伝えることを許可するためのホストＰＥ１００への割り込み設定レジスタであり、割り込み設定レジスタ１５００は割り込み信号線ＩＮＴＡ＃１５１、割り込み設定レジスタ１５０１は割り込み信号線ＩＮＴＢ＃１５２、割り込み設定レジスタ１５０２は割り込み信号線ＩＮＴＣ＃１５３、割り込み設定レジスタ１５０３は割り込み信号線ＩＮＴＤ＃１５４を介してホストＰＥ１００への割り込みをそれぞれ許可するように構成されている。さらに、１６００は各ＰＣＩスロット１，２，３，４，５からホストＰＥ１００へ割り込みをルーティングするために、各ＰＣＩスロット１，２，３，４，５の割り込み信号線ＩＮＴＡ＃，ＩＮＴＢ＃，ＩＮＴＣ＃，ＩＮＴＤ＃と割り込み設定レジスタ１５００〜１５０３の各ビットとの論理和を求めるＡＮＤ回路、１７００は各ＰＣＩスロット１，２，３，４，５からホストＰＥ１００への割り込みをルーティングするために、割り込み設定レジスタ１５００〜１５０３のそれぞれに対して設けられた複数のＡＮＤ回路１６００からの出力の論理和を求め反転して出力するＮＯＲ回路である。
【００６９】
割り込み設定レジスタ１１１０〜１１１３、１１２０〜１１２３、１１３０〜１１３３、１１４０〜１１４３、１１５０〜１１５３はそれぞれ有効な４ビットを有しており、ビット０は対象ＰＣＩスロットの割り込み信号線ＩＮＴＡ＃へ、ビット１は割り込み信号線ＩＮＴＢ＃へ、ビット２は割り込み信号線ＩＮＴＣ＃へ、ビット３は割り込み信号線ＩＮＴＤ＃への割り込みルーティングをそれぞれ許可する。例えば、ＰＣＩスロット１への割り込み設定レジスタ１１１３のビット２をセットすると、ＰＣＩスロット５からＰＣＩスロット１の割り込み信号線ＩＮＴＣ＃への割り込みルーティングを許可したことになる。また、ホストＰＥ１００への割り込み設定レジスタ１５００〜１５０３はそれぞれ有効な２０ビットを有しており、例えばホストＰＥ１００への割り込み設定レジスタ１５００のビット１９がセットされていると、ＰＣＩスロット５の割り込み信号線ＩＮＴＤ＃を介して入力された割り込みを割り込み信号線ＩＮＴＡ＃１５１を介してホストＰＥ１００へ送出することを許可する。また、ＰＣＩバス上のデバイスからの割り込みを直接受信するために、マスタＰＥ２００は割り込みを入力として受け入れることができるようにハードウェア的に構成されている。なお、図４では割り込みルーティング回路１００１は、ホストＰＥ１００の外部に設けられているように描かれているが、ホストＰＥ１００の内部に設けてもよい。
【００７０】
次に動作について説明する。
まず、システム初期化時の処理について説明する。ＰＣＩスロット２，４にそれぞれマスタＰＥ２００およびＳＥ３００が組み込まれると、それぞれのデバイスドライバがインストールされ、マスタＰＥ２００のターゲットとなるデバイスがＳＥ３００であることがシステム構成情報として構成情報ＤＢ１０２に記録される。
【００７１】
そして、システムを起動するかまたはシステムをリセットとすると、ＰＣＩバスシステムでは、システムのファームウェアがコンフィギュレーションサイクルを実行してＰＣＩデバイスの存在をチェックし、認識されたＰＣＩデバイスについてはコンフィギュレーションレジスタを設定する。ファームウェアによるシステムのハードウェアコンフィギュレーションの設定が完了すると、例えばマイクロソフト社のＷｉｎｄｏｗｓ  ＮＴのようなＯＳがブートされる。ＯＳのブート処理時、マスタＰＥ２００やＳＥ３００のデバイスドライバの初期化ルーチンが実行される。マスタＰＥ２００のデバイスドライバの初期化ルーチンでは、まずマスタＰＥ２００がどのＰＣＩスロットに存在するかがチェックされる。マスタＰＥ２００が存在すれば、デバイスドライバのインストール時に設定されたシステム構成情報を含む構成情報ＤＢ１０２としてのレジストリの内容をチェックして、マスタＰＥ２００のターゲットとなるデバイスがＳＥ３００であることを認識する。そして、マスタＰＥ２００の割り込みレジスタのＩ／Ｏアドレスを確認し、ＳＥ３００がどのＰＣＩスロットに存在するかを確認し、さらにレジストリより得たＳＥ３００の対象ファンクションがどの割り込み信号を使用しているかを確認し（割り込みレベルを確認し）、これらの情報を構成情報ＤＢ１０２に格納されたシステム構成情報に追加する。それと同時に、ＳＥ３００をホストＰＥ１００が使用するＳＥ３００のデバイスドライバの管理下から除外する。
【００７２】
このようにして、上記実施の形態１および２と同様に、ホストＰＥ１００、マスタＰＥ２００、およびＳＥ３００が必要とする、メモリ、Ｉ／Ｏ、割り込み等のシステムの資源を割り付けられ、その割り付けられたシステム資源に関する情報とともに、ＳＥ３００が存在するＰＣＩスロットの位置、マスタＰＥ２００の名称とその割り込みレジスタのＩ／ＯアドレスとマスタＰＥ２００の対象となるスレーブとしてのＳＥ３００の名称（即ち、マスタＰＥとＳＥとの対応関係）とそのＳＥの使用する割り込みレベルとを含む割り込みルーティングに関連する情報が、システム構成情報として構成情報ＤＢ１０２に予め登録される。
【００７３】
また、図４に示すように、マスタＰＥ２００がＰＣＩスロット２上に存在し割り込み信号線ＩＮＴＡ＃を介して割り込み信号を受信でき、ＳＥ３００がＰＣＩスロット４上に存在し割り込み信号線ＩＮＴＡ＃を介して割り込み信号を送出することができる場合、マスタＰＥ２００のデバイスドライバの初期化ルーチンにおいて、割り込みルーティング回路１００１は、構成情報ＤＢ１０２を参照してＰＣＩスロット２への割り込み設定レジスタ１１２２のビット０をセットする。これにより、割り込みルーティング回路１００１は、ＳＥ３００からマスタＰＥ２００への割り込みを直接ルーティングすることができる。また、ＰＣＩスロット２とＰＣＩスロット４で発生する割り込みをホストＰＥ１００へ通知しないためにホストＰＥ１００への割り込みをルーティングするための割り込み設定レジスタ１５０１と１５０３のビット４〜７とビット１２〜１５を０クリアし、さらに、ＰＣＩスロット４での割り込み発生に起因するＰＣＩスロット２での割り込み発生を他のＰＣＩスロットへルーティングしないために割り込み設定レジスタ１１１０，１１３１，１１４１，１１５１の全てのビットを０クリアしておく。
【００７４】
上記のような初期化処理後、システム稼動時にＳＥ３００が自身の内部に持っているマスタＰＥ２００との共有メモリ（図示せず）にデータをセットしてＰＣＩスロット４で割り込みを発生すると、ＰＣＩスロット２への割り込み設定レジスタ１１２２のビット０がセットされているため、ＰＣＩスロット４に対して設けられた演算回路１２４０は論理１の信号を出力するので、一入力端子が割り込み設定レジスタ１１２２のビット０に接続されたＡＮＤ回路１２５０は論理１の信号を出力し、さらにそのＡＮＤ回路１２５０に接続されたＮＯＲ回路１３１０は論理０の信号を出力する。この結果、このＮＯＲ回路１３１０の出力に接続された割り込み信号出力回路１４１０は、ＰＣＩスロット２の割り込み信号線ＩＮＴＡ＃をアクティブにドライブする。このとき、ホストＰＥ１００への割り込み設定レジスタ１５０１と１５０３のビット４〜７とビット１２〜１５が０クリアされており、各ＰＣＩスロットへの割り込み設定レジスタ１１１０，１１３１，１１４１，１１５１が０クリアされているので、ホストＰＥ１００や他のＰＣＩスロットへ割り込みを発生することはない。
【００７５】
この実施の形態３によるマルチプロセッサシステムでは、ＰＣＩバスの各ＰＣＩスロット１，２，３，４，５の全割り込み信号の論理和を、複数のＡＮＤ回路１２５０および複数のＮＯＲ回路１３１０から構成される、他のＰＣＩスロットへの割り込みルーティングのための演算回路に入力したが、各ＰＣＩスロットへの割り込み設定レジスタ１１１０〜１１５３を拡張して各ＰＣＩスロット１，２，３，４，５の各割り込み信号を個別にルーティングできるレジスタ構成とし、各ＰＣＩスロット１，２，３，４，５の各割り込み信号を他のＰＣＩスロットへの割り込みルーティング演算回路に個別に入力することにより、さらに細かい割り込みルーティングを行うことができる。
【００７６】
以上のように、この実施の形態３によれば、ＰＣＩバスをシステムバスとする一般的なシステムハードウェアだけではターゲットであるＳＥからマスタＰＥに割り込みを通知できないマルチプロセッサシステムにおいても、スレーブにマスタ機能を持たせたりホストＰＥの割り込み処理ルーチンを特殊化したりすることなく、さらに、基礎となるシステムハードウェアを変更することなく、必要な割り込みルーティング回路１００１を付加するだけでＳＥからマスタＰＥへ割り込みをルーティングできる。さらに、上記実施の形態１のように割り込みルーティングの際にホストＰＥ１００が介在しないため、割り込み通知に関して余分なオーバーヘッドはかからない。また、マスタＰＥやターゲットであるＳＥが複数存在する複雑なマルチプロセッサシステムにおいても、構成情報ＤＢ１０２の内容を参照することにより容易にシステム構成を把握でき、さらに、構成情報ＤＢ１０２の内容を変更することにより割り込みルーティングの変更を行えるため、システムのフレキシビリティを向上させることができる。
【００７７】
実施の形態４．
図５はこの発明の実施の形態４によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。この実施の形態によるマルチプロセッサシステムは、ＰＣＩバスもしくはそれに準じたバスをシステムバスとして備えている。図において、１００はホストＰＥ、１０２はホストＰＥ１００が管理するシステム構成情報を蓄積するためデータベースである構成情報ＤＢ、１２１，１２３，１２５はＰＣＩバスもしくはそれに準じたＰＣＩバス（システムバス）、１２２，１２４はこれらのＰＣＩバス１２１，１２３，１２５を接続するためのブリッジデバイス（ブリッジ機構）、１００２，１００３，１００４は上記実施の形態３による割り込みルーティング回路１００１と同様な構成を有する割り込みルーティング回路である。図５に示すように、割り込み要求元のＳＥ３００はＰＣＩバス１２５上に、割り込み要求先のマスタＰＥ２１０はＰＣＩバス１２１上にあると仮定する。
【００７８】
一般的に、１つのＰＣＩバス上に１０デバイスまでしか接続できない。従って、１０を超えるデバイスが必要な場合には、図５に示すようにブリッジデバイス１２２，１２４を用いて複数のＰＣＩバス１２１，１２３，１２５を接続する必要がある。この実施の形態４によるマルチプロセッサ制御方式は、このような構成のマルチプロセッサシステムでの割り込みルーティングを提供するものである。
【００７９】
次に動作について説明する。
割り込みルーティング回路１００２は、通常通りホストＰＥ１００をホストとして割り込み信号をルーティングし、マスタＰＥ２１０およびブリッジ１２２をそれぞれ図４に示したような１つのＰＣＩスロット１，２，３，４または５に接続されている１つのデバイスとして割り込み信号をルーティングするように構成されている。同様に、割り込みルーティング回路１００３は、ブリッジ１０２およびブリッジ１０４をそれぞれ１つのデバイスとして割り込み信号をルーティングするように構成されている。さらに、割り込みルーティング回路１００４は、ＳＥ３００およびブリッジ１２４を１つのデバイスとして割り込み信号をルーティングするように構成されている。また、割り込みルーティング回路１００３，１００４は、ホストＰＥ１００へ直接割り込み信号を接続しないように設定される。即ち、割り込みルーティング回路１００３，１００４の図４に示すホストＰＥ１００への割り込み信号線ＩＮＴＡ＃１５１，ＩＮＴＢ＃１５２，ＩＮＴＣ＃１５３，ＩＮＴＤ＃１５４はオープンとなっている。
【００８０】
マスタＰＥ２１０のデバイスドライバのインストール時かまたは初期化時に、ホストＰＥ１００内の構成情報ＤＢ１０２には、マスタＰＥ２１０の名称、マスタＰＥ２１０の割り込みレジスタのＩ／Ｏアドレス、マスタＰＥ２１０のターゲットとしてＳＥ３００の名称、存在位置および割り込み信号レベルに関する情報を格納し、それに基づいてＰＣＩバス１２５上のＳＥ３００からの割り込みをブリッジデバイス１２４を経由してＰＣＩバス１２３上に発生させるように割り込みルーティング回路１００４とブリッジデバイス１２４を設定し、ブリッジデバイス１２４の発生したＰＣＩバス１２３上での割り込みをＰＣＩバス１２１上に発生させるように割り込みルーティング回路１００３とブリッジデバイス１２２を設定する。これにより、図５に示すような複数のブリッジデバイス１２２，１２４を含むＰＣＩバスシステムでも、ブリッジデバイス１２２，１２４をまたいで割り込みをルーティングできる。
【００８１】
以上のように、この実施の形態４によれば、ブリッジデバイス１２２，１２４により接続された複数のＰＣＩバス１２１，１２３，１２５を備えたマルチプロセッサシステムにおいても、スレーブにマスタ機能を持たせたりホストＰＥ１００の割り込み処理ルーチンを特殊化したりすることなく、さらに、基礎となるシステムハードウェアを変更することなく、必要な複数の割り込みルーティング回路１００２，１００３，１００４を付加するだけで異なるＰＣＩバス１２１，１２５上にそれぞれ設けられたＳＥ３００からマスタＰＥ２１０へ割り込みをルーティングできる。さらに、上記実施の形態１のように割り込みルーティングの際にホストＰＥ１００が介在しないため、割り込み通知に関して余分なオーバーヘッドはかからない。また、構成情報ＤＢ１０２を利用することにより、マスタＰＥやターゲットであるＳＥが複数存在する複雑なマルチプロセッサシステムにおいても、構成情報ＤＢ１０２の内容を参照することにより容易にシステム構成を把握でき、さらに、構成情報ＤＢ１０２の内容を変更することにより割り込みルーティングの変更を行えるため、システムのフレキシビリティを向上させることができる。
【００８２】
実施の形態５．
図６〜８はこの発明の実施の形態５によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成および動作を示すブロック図である。図６はシステム起動時の動作、図７はマスタＰＥ２１０のターゲットからマスタＰＥ２１０へ通信要求を通知する場合の動作、図８はマスタＰＥ２１０のターゲットからの通信要求に従い、マスタＰＥ２１０がターゲットにデータ転送する場合の動作を示すブロック図である。これらの図において、１００はホストＰＥ、１０１はホストＰＥ１００のＣＰＵ、１０２はホストＰＥ１００内に設けられておりシステム構成情報を格納する構成情報ＤＢ、１２１はシステムバスとしてのＰＣＩバス、２１１はマスタＰＥ２１０のＣＰＵ、２１５はマスタＰＥ２１０がマルチプロセッサシステムのマスタとなってＣＰＵ２１１がターゲットにアクセスする場合のＩ／Ｏウィンドウかメモリウィンドウであるウィンドウ、２１３はＣＰＵ２１１がウィンドウ２１５を通してターゲットにアクセスする場合のアクセス先を設定するためのウィンドウ設定レジスタ（レジスタ）、６００はＣＰＵ２１１がアクセスしようとするターゲットの先頭アドレスを設定するためのアドレス設定レジスタ、６０１はアクセス先の容量を設定するための容量設定レジスタ、２１７はホストＰＥ１００がマスタＰＥ２１０とデータ転送するためのマスタＰＥ２１０内に設けれらた２ポートメモリ（共有メモリ）、３００，３１０はマスタＰＥ２１０のターゲットとしてのＳＥ、１００１は上記実施の形態３による割り込みルーティング回路である。
【００８３】
なお、この実施の形態５によるマルチプロセッサシステムでは、マスタＰＥ２１０のターゲットとしてＳＥ３００およびＳＥ３１０の２つを考えているため、アドレス設定レジスタ６００と容量設定レジスタ６０１とウィンドウ２１５はそれぞれ２セット用意される。
【００８４】
次に動作について説明する。
図６の点線は割り込みルーティングを設定する際の処理の流れを示しており、実線はマスタＰＥ２１０とターゲット間のデータ転送のための設定の処理の流れを示しており、図７および図８の点線はＳＥ３００とマスタＰＥ２１０との間の通信処理を示しており、実線はＳＥ３１０とマスタＰＥ２１０との間の通信処理を示している。
【００８５】
ホストＰＥ１００は、図６に示す動作の前に、メモリ、Ｉ／Ｏ、割り込みなどのマルチプロセッサシステムの資源を割り付け、さらに、割り付けた資源に関する情報とともに、マスタＰＥ２１０の名称、およびマスタＰＥ２１０のターゲットがＳＥ３００とＳＥ３１０であることを示す情報を含むシステム構成情報を構成情報ＤＢ１０２に登録する。その後、システム起動時に、ホストＰＥ１００は、図６に示すように、構成情報ＤＢ１０２に登録されたマルチプロセッサシステムの資源割り付けに関する情報やマスタＰＥ２１０とターゲットであるＳＥ３００，３１０との関係の情報を含むシステム構成情報に基づき、割り込みルーティング回路１００１およびマスタＰＥ２１０のウィンドウ設定レジスタ２１３を設定する。このような設定はソフトウェアによって実行される。
【００８６】
割り込みルーティング回路１００１はホストＰＥ１００により直接設定され、これにより、ＳＥ３００，３１０からの割り込み信号は割り込みルーティング回路１００１を介してマスタＰＥ２１０へルーティングされる。ウィンドウ設定レジスタ２１３を設定するために、ホストＰＥ１００がマスタＰＥ２１０内の２ポートメモリ２１７にデータを転送すると、マスタＰＥ２１０のＣＰＵ２１１はそのデータを読み取りそのデータに基づきアドレス設定レジスタ６００および容量設定レジスタ６０１にそれぞれ設定する。アドレス設定レジスタ６００と容量設定レジスタ６０１とにマルチプロセッサシステムの資源空間に占めるターゲットとしてのＳＥ３００やＳＥ３１０の資源のアドレスとその容量とがそれぞれ設定される。このことにより、マスタＰＥ２１０のＣＰＵ２１１がＳＥ３００または３１０からの割り込み要求に応答してマスタＰＥ２１０のローカル資源空間のウィンドウ２１５の領域にアクセスすると、ウィンドウ２１５の回路がアクセス要求を変換し、マスタＰＥ２１０がマルチプロセッサシステムのマスタとなってアドレス設定レジスタ６００に設定された値をベースにして適切なオフセットを加えたシステム空間のアドレスに割り付けられたターゲットとしてのＳＥ３００やＳＥ３１０の資源にアクセスできる。
【００８７】
また、マスタＰＥ２１０の初期化の際に、マスタＰＥ２１０は２ポートメモリ２１７経由でターゲットからの通信要求用の割り込みレベルも取得し、対応した割り込み処理ルーチンを自身の内部に登録する。システムの通常動作に入ってからマスタＰＥ２１０のターゲットであるＳＥ３００やＳＥ３１０は自身の内部に持っているマスタＰＥ２１０との共有メモリ（図示せず）にデータをセットすることにより割り込み信号を発生する。ＳＥ３００または３１０がマスタＰＥ２１０との通信のために割り込み信号が発生すると、図７に示すように、その割り込み信号は割り込みルーティング回路１００１によりルーティングされマスタＰＥ２１０に入力され、ＣＰＵ２１１に対して割り込みが発生する。その後、マスタＰＥ２１０は、図８に示すように、対応するウィンドウ２１５を通してＳＥ３００やＳＥ３１０とデータ転送を行う。
【００８８】
なお、図６〜８ではターゲットからマスタＰＥ２１０に通信要求が発生した場合の処理の流れを示したが、マスタＰＥ２１０から通信要求が発生するなどのような他の種類の処理の流れも実際のマルチプロセッサシステムではありえる。このような場合にもこの実施の形態５によるマルチプロセッサ制御方式を適用できる。
【００８９】
以上のように、この実施の形態５によれば、マスタＰＥ２１０とＳＥ３００との通信に関する通信要求やデータを当事者間で直接送受信できるので、システムパフォーマンスを向上させることができる。さらに、通信用の割り込みルーティングやウィンドウの設定や変更をソフトウェアで実行することが可能であるので、システム構成のフレキシビリティを向上させることが可能となる。
【００９０】
実施の形態６．
図９および図１０はこの発明の実施の形態６によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成および動作を示すブロック図である。図において、図６〜８に示した上記実施の形態５によるものと同一の構成要素には同一の符号を付してその説明を省略する。この実施の形態によるマルチプロセッサシステムは、システム起動時に、上記実施の形態５によるマルチプロセッサシステムと同様の設定を行うように構成されている。図９はマスタＰＥ２１０とＳＥ３００との間の通信動作を、図１０はホストＰＥ１００とマスタＰＥ２１０との間の通信動作を示すものであり、図中、点線は通信要求のための割り込みの経路を、実線はデータ転送の経路を示している。
【００９１】
次に動作について説明する。
図９に示したマスタＰＥ２１０とそのターゲットとしてのＳＥ３００との通信経路から明らかなように、ＳＥ３００からの通信要求は、割り込みとして割り込みルーティング回路１００１経由でマスタＰＥ２１０が直接受け付る。そして、マスタＰＥ２１０のＣＰＵ２１１は、上記実施の形態５と同様に、ローカル資源空間のウィンドウ（図示せず）の領域にアクセスし、ウィンドウの回路がアクセス要求を変換し、マスタＰＥ２１０がマルチプロセッサシステムのマスタとなって自身のアドレス設定レジスタ（図示せず）に設定された値をベースにして適切なオフセットを加えたシステム空間のアドレスに割り付けられたターゲットとしてのＳＥ３００の資源に直接アクセスする。また、マスタＰＥ２１０からＳＥ３００への通信要求の場合にはマスタＰＥ２１０がシステムのターゲットとなってＳＥ３００に直接アクセスする。
【００９２】
図１０に示したホストＰＥ１００とマスタＰＥ２１０との通信経路から明らかなように、ホストＰＥ１００とマスタＰＥ２１０との間の通信要求としての割り込みは割り込みルーティング回路１００１によって直接相手に通知され、データ転送はマスタＰＥ２１０内に共有メモリとして設けられた２ポートメモリ２１７を介して行う。このような構成では、マスタＰＥ２１０がマルチプロセッサシステムのマスタとなってマスタＰＥ２１０とＳＥ３００との間の通信動作において、少量の制御データを転送するようにすることが好ましい。これにより、ホストＰＥ１００のシステム資源へのアクセス待機を最小限に抑えることが可能となる。さらに、２ポートメモリ２１７を介したホストＰＥ１００とマスタＰＥ２１０とがどのように同期をとって２ポートメモリ２１７にアクセスするか等の通信手順を適切に決めることにより、マスタＰＥ２１０のＣＰＵ２１１とホストＰＥ１００との２ポートメモリ２１７へのアクセスの競合による互いの処理の待機を最小限に抑えることができ、パフォーマンスの良いシステムを構築することができる。
【００９３】
なお、図９および図１０では、ターゲットからマスタＰＥ２１０に通信要求が発生した場合の処理の流れを示しているが、マスタＰＥ２１０から通信要求が発生するなどのような他の種類の処理の流れも実際のシステムではありえる。このような場合にもこの実施の形態６によるマルチプロセッサ制御方式を適用できる。
【００９４】
以上のように、この実施の形態６によれば、マスタＰＥ２１０とＳＥ３００との間およびマスタＰＥ２１０とホストＰＥ１００との間の通信要求は要求元から要求先に直接通知することができるので、システムパフォーマンスを向上させることができる。さらに、通信要求用の割り込みルーティングは、ソフトウェアで設定、変更することが可能であるので、システム構築のフレキシビリティを向上させることができる。
【００９５】
また、マスタＰＥ２１０とターゲットであるＳＥ３００とのデータ転送では、マスタＰＥ２１０がシステムのマスタとなってデータ転送するので、ホストＰＥ１００の介在がなくマスタＰＥ２１０の処理やホストＰＥ１００内部の処理に余分なオーバーヘッドがかからない。また、マスタＰＥ２１０の処理結果等をマスタＰＥ２１０上の共有メモリである２ポートメモリ２１７を介してホストＰＥ１００へ通知するように構成されているので、ホストＰＥ１００とマスタＰＥ２１０との間の通信データがたとえ大きくなっても、マスタＰＥ２１０のＣＰＵ２１１が２ポートメモリ２１７へデータを書き込む等のアクセスしている間にホストＰＥ１００はＰＣＩバス１４１を介して他の処理を実行できるので、システムの主メモリを共有メモリにしてマスタＰＥ２１０がホストＰＥ１００をホールドしてしまうような従来のマルチプロセッサシステムに比べてシステムに余分なオーバーヘッドをかけるようなことはない。そのため、この実施の形態６によるマルチプロセッサ制御方式によれば、システムとしてのトータルパフォーマンスをハイレベルに維持できる。
【００９６】
実施の形態７．
図１１はこの発明の実施の形態７によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。図において、２００，２１０はマスタＰＥ、２０１はマスタＰＥ２００のＣＰＵ、５１０はマスタＰＥ２００に設けられており、マスタＰＥ２１０等の割り込み要求元が割り込み要求をＣＰＵ２０１に通知するための割り込み要求レジスタ、５１１は割り込み要求を受けた側が割り込み要求をクリアするための割り込みクリアレジスタ、５１２は割り込み要求を受けても内部のＣＰＵ２０１への割り込みを発生させないための割り込みマスクレジスタ、２０２は割り込み要求レジスタ５１０、割り込みクリアレジスタ５１１、および割り込みマスクレジスタ５１２から構成される割り込み要求を通知するためのレジスタセットとしての割り込みレジスタ、５１３は割り込み要求元が割り込み要因を登録するための割り込み要因指定レジスタ、５１４は割り込み要因指定レジスタ５１３の内容をクリアするための割り込み要因クリアレジスタである。また、割り込み要因レジスタ５０２は、割り込み要因指定レジスタ５１３と割り込み要因クリアレジスタ５１４とから構成されており、マスタＰＥ２００に割り込みを発生するマスタＰＥごとに実装され得る。図１１には、２つのマスタＰＥ２００，２１０しか描かれていないが、３つ以上のマスタＰＥがＰＣＩバス等のシステムバス１４０を介して接続され得、マスタＰＥ２００は複数の他のマスタＰＥから割り込みを受け付けることができる。尚、マスタＰＥ２１０もマスタＰＥ２００と同様な割り込みレジスタおよび割り込み要因レジスタを有しており、マスタＰＥ２００等の他のマスタＰＥからの割り込み要求を処理するように構成されている。以下では、マスタＰＥ２００がマスタＰＥ２１０等の他のマスタＰＥからマスタＰＥ２００上の共有メモリ等のシステム共有の資源を使用する割り込み要求を受けてそれを処理する場合について説明する。
【００９７】
次の動作について説明する。
割り込み要求レジスタ５１０は、他のマスタＰＥからは書き込み専用であり、自身からは読み出し専用のレジスタである。従って、割り込み要求元のマスタＰＥが割り込み要求先であるマスタＰＥ２００内の割り込み要求レジスタ５１０のビットをセットすることにより、割り込み要求先のマスタＰＥ２００で割り込みが発生する。割り込み要求レジスタ５１０はビットごとにセット可能であり、例えば割り込み要求レジスタ５１０のビット１がセットされている状態で、割り込み要求元から２進数で００００１０００を書き込まれると、ビット１はセットされたまま新たにビット３もセットされる。割り込み要求レジスタ５１０のいずれかのビットがセットされており、以下で述べるようにそのビットが割り込みマスクレジスタ５１２でマスクされていないならば、マスタＰＥ２００内でＣＰＵ２０１に割り込みが発生する。
【００９８】
割り込みクリアレジスタ５１１は、自身のマスタＰＥ２００に対しては書き込み専用のレジスタであり、ビットごとの操作が可能である。すなわち、割り込み要求レジスタ５１０のビット０およびビット３がセットされている状態で割り込みクリアレジスタ５１１に２進数で００００１０００を書き込むとビット３のみクリアされてビット０はセットされたままとなる。割り込みマスクレジスタ５１２は、割り込み要求レジスタ５１０のビットがセットされていても自身のＣＰＵ２０１に割り込みを発生させないためのレジスタである。例えば、割り込みマスクレジスタ５１２のビット０がセットされていると、割り込み要求レジスタ５１０のビット０がセットされても割り込みは発生しない。この際、割り込み要求レジスタ５１０のビット０以外のビットがセットされた場合には割り込みは発生する。すなわち、割り込みマスクレジスタ５１２は、所定の他のマスクＰＥからの割り込み要求の処理を禁止することができる。
【００９９】
割り込み要因指定レジスタ５１３および割り込み要因クリアレジスタ５１４は、割り込み要求レジスタ５１０および割り込みクリアレジスタ５１１と同様の関係にある。すなわち、どちらもビットごとの操作が可能で、ビットごとに割り込み要因通知用とそのクリア用に使われる。ただし、割り込み要因指定レジスタ５１３は、割り込み要求レジスタ５１０と異なり、ビットがセットされていても自身の内部で割り込みを発生することはない。
【０１００】
システム起動までにマスタＰＥ２００に割り込みを発生するマスタＰＥ２１０を含む他の複数のマスタＰＥのそれぞれに割り込み要求レジスタ５１０のビットが各々割り振られる。システム起動時にマスタＰＥ２００は割り込み処理ルーチンをセットし、割り込みマスクレジスタ５１２を特定の他のマスクＰＥからの割り込み要求を処理しないように対応するビットをセットする。マルチプロセッサシステムの通常動作中、マスタＰＥ２１０からマスタＰＥ２００に割り込みを伝える必要が発生すると、マスタＰＥ２１０はマルチプロセッサシステムのマスタとなり、割り込み要因指定レジスタ５１３の複数のビットのうちのその割り込みの要因に対応するビットをセットする。その後、割り込み要求レジスタ５１０の複数のビットのうちでマスタＰＥ２１０からの割り込みに対応するビットをセットする。そして、割り込みマスクレジスタ５１２の対応するビットがセットされていなければ、割り込みレジスタ２０２はＣＰＵ２０１に割り込み要求を送出し割り込み処理ルーチンを起動させる。マスタＰＥ２００の割り込み処理ルーチンでは、ＣＰＵ２０１はまず割り込み要求レジスタ５１０の値を読み取り、割り込みを発生しているのが例えばマスタＰＥ２１０であることを知る。そして、マスタＰＥ２１０からの割り込みを処理する割り込み処理ルーチンに分岐し、その割り込み処理ルーチンでマスタＰＥ２１０用の割り込み要因指定レジスタ５１３を読み取り割り込み要因を特定する。その後、割り込み処理ルーチンにおいて割り込み要求を処理し、割り込み要因クリアレジスタ５１４を用いて割り込み要因をクリアし、割り込みクリアレジスタ５１１を用いてＣＰＵ２０１への割り込みをクリアする。
【０１０１】
マスタＰＥ２００に割り込みを発生するマスタＰＥが多数の場合、割り込みレジスタ２０２を複数設けてもよい。この場合、例えば、他のマスタＰＥが１７以上存在するならば、１６ビットの割り込みレジスタ２０２を２つ必要とし、他のマスタＰＥからの割り込み要求があるか無いかを確認し、割り込みを発生しているマスタＰＥを知るために２つの割り込み要求レジスタにアクセスする必要がある。また、割り込みを発生する他の複数のマスタＰＥの割り込み要因の数が少ない場合は、割り込み要因レジスタ５０２を複数のマスタＰＥで共有してもよい。例えば、１６ビットの割り込み要因レジスタ５０２が実装されているのに割り込みを発生する各マスタＰＥが８種類までの割り込み要因しか持たない場合、１つの割り込み要因レジスタ５０２に２つのマスタＰＥを対応させることができる。
【０１０２】
以上のように、この実施の形態７によれば、マスタＰＥ２００に割り込み要求を発生するマスタＰＥの数が多くても、マスタＰＥ２００内に割り込みレジスタ２０２と割り込み要因レジスタ５０２とを設けているので、数回のレジスタアクセスで割り込み要求元のマスタＰＥと割り込み要求要因を特定できる。例えば、割り込みレベルを１つとし、１つの３２ビット割り込みレジスタ２０２と８つの３２ビット割り込み要因レジスタ５０２とを設けることにより、８つの割り込み要因を持つ３２個の他のマスタＰＥからの割り込みの要求元および割り込み要因を２回のレジスタアクセスで特定でき、より高速に割り込み処理を実行できる。
【０１０３】
実施の形態８．
図１２（Ａ），（Ｂ）はこの発明の実施の形態８によるマルチプロセッサ制御方式が適用されるホストＰＥの構成を示す説明図である。図において、１３０はホストＰＥ１００中のタスクＡ、１３１は同様にホストＰＥ１００中のタスクＢ、６００はハードウェアとして実装されているアドレス設定レジスタ、６１０はタスクＡ１３０のコンテキストとしての仮想アドレス設定レジスタ、６２０はタスクＢ１３１のコンテキストとしての仮想アドレス設定レジスタである。仮想アドレス設定レジスタ６１０，６２０は、ともにアドレス設定レジスタ６００に対応する仮想のハードウェア資源である。
【０１０４】
アドレス設定レジスタ６００はホストＰＥ１００内に１つだけ実装されているものであり、２つのタスクＡ１３０，タスクＢ１３１は、アドレス設定レジスタ６００を別々の用途で使用するため、タスクＡ１３０、タスクＢ１３１のいずれがアドレス設定レジスタ６００を使用するかに応じて、アドレス設定レジスタ６００の設定値は異なる。アドレス設定レジスタ６００などのハードウェア資源をタスクＡ１３０、タスクＢ１３１のコンテキストとするには、対象となるハードウェア資源をメモリ空間にマッピングしておき、リアルタイムＯＳ  ＶｘＷｏｒｋｓなどのシステムコールなどを使用する。ＶｘＷｏｒｋｓなどのシステムコールには、指定されたメモリエリアをタスクのコンテキストとすることができるものがある。
【０１０５】
ところで、従来、タスクごとにハードウェア資源の内容を変えるためにタスクごとに個別にハードウェア資源を持つ必要があった。タスクごとに個別にハードウェア資源を準備するシステムではハードウェアボリュームが増大し、貴重なＩ／Ｏ空間に大きな領域を必要としていた。また、ハードウェアを実装する時点で、対象となるハードウェア資源を必要とするタスク数を把握しておかなければならなかった。この実施の形態８によるマルチプロセッサ制御方式は、このような従来のシステムの課題を解決する手段を提供するものである。
【０１０６】
次に動作について説明する。
まず、システム初期化時には、アドレス設定レジスタ６００は初期化状態にクリアされており、そのため仮想アドレス設定レジスタ６１０，６２０も初期化状態にクリアされている。タスクＡ１３０とタスクＢ１３１は、システムコールによりアドレス設定レジスタ６００がマッピングされたメモリ領域をそれぞれのタスクＡ１３０、タスクＢ１３１のコンテキストとして登録する。タスクＡ１３０が実行されている環境でタスクＡ１３０がマッピングされたメモリ領域を通してアドレス設定レジスタ６００をある値に設定する。その後、タスクスイッチが発生してタスクＢ１３１が実行される環境に変わると、タスクＡ１３０で使用していたアドレス設定レジスタ６００の内容はタスクＡ１３０の仮想アドレス設定レジスタ６１０に待避され、アドレス設定レジスタ６００には新たな実行タスクであるタスクＢ１３１の仮想アドレス設定レジスタ６２０の内容が設定される。このとき、アドレス設定レジスタ６００は初期化状態にクリアされるので、タスクＢ１３１は自分が必要とする値をマッピングされたメモリ領域を通してアドレス設定レジスタ６００に設定する。そしれ、タスクＢ１３１はアドレス設定レジスタ６００により設定されるウィンドウを通して処理を実行する。
【０１０７】
その後、再びタスクスイッチが発生してタスクＡ１３０が実行される環境に変化しても、前回のタスクスイッチの場合と同様に、アドレス設定レジスタ６００の内容はタスクＢ１３１の仮想設定レジスタ６２０に待避され、タスク設定レジスタ６００には新たな実行タスクであるタスクＡの仮想アドレス設定レジスタ６１０の内容が再設定される。そして、タスクＡ１３０は自分に必要な設定のウィンドウを通して処理を実行することができる。このように、タスクＡ１３０、タスクＢ１３１のように複数のタスクのそれぞれにコンテキストとして仮想アドレス設定レジスタを持たせることにより、１つの物理的ハードウェア資源であるアドレス設定レジスタ６００をそれぞれ独立して設定して使用することができる。
【０１０８】
上記の例では仮想アドレス設定レジスタをタスクのコンテキストとしたが、システム構成に関わるハードウェア資源に対応する仮想のハードウェア資源を各タスクのコンテキストとして持たせ、物理的には１つのシステムハードウェアを、複数のタスクで別構成のシステムハードウェアのように扱うことができる。
【０１０９】
例えば、上記実施の形態２によるマルチプロセッサ制御方式の割り込みルーティング回路１０００の割り込み設定レジスタ１１００〜１１０４や、上記実施の形態３によるマルチプロセッサ制御方式の割り込みルーティング回路１００１の割り込み設定レジスタ１１１０〜１１１３，１１２０〜１１２３，１１３０〜１１３３，１１４０〜１１４３，１１５０〜１１５３をタスクのコンテキストとして持たせることにより、ハードウェア的には１つのデバイスをタスク毎に別のデバイスのように扱うことが可能となる。さらに、この実施の形態８によるマルチプロセッサ制御方式は、上記実施の形態５によるマルチプロセッサ制御方式のウィンドウ設定レジスタ２１３にも適用することが可能である。
【０１１０】
さらに、この実施の形態８によるマルチプロセッサ制御方式の適用は、マルチプロセッサシステムに限定されるものではなく、シングルプロセッサを備えた制御装置にも適用され得る。
【０１１１】
以上のように、この実施の形態８によれば、ハードウェア資源としては１つしか実装されていないアドレス設定レジスタ６００をソフトウェア的には複数存在するように扱えるため、ハードウェアが要求するスペース、価格などのコストを低減できる。また、システム構成に関わるレジスタ等のハードウェア資源に対応する仮想のハードウェア資源をタスクのコンテキストとして持たせることにより、１つのシステムハードウェアをタスクごとに違ったシステムハードウェアとして扱えるため、システムコストの低減、システムのフレキシビリティを向上させることができる。
【０１１２】
実施の形態９．
図１３はこの発明の実施の形態９によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。図において、２０８はマスタＰＥ２００に設けられたホスト設定レジスタ、２１８はマスタＰＥ２１０に設けられたホスト設定レジスタ、２２８はマスタＰＥ２２０に設けられたホスト設定レジスタ、２３８はマスタＰＥ２３０に設けられたホスト設定レジスタ、２０９はマスタＰＥ２００に設けられたマスタＩＤ設定スイッチ、２１９はマスタＰＥ２１０に設けられたマスタＩＤ設定スイッチ、２２９はマスタＰＥ２２０に設けられたマスタＩＤ設定スイッチ、２３９はマスタＰＥ２３０に設けられたマスタＩＤ設定スイッチである。この実施の形態９によるマルチプロセッサシステムのマスタＰＥ２００，２１０，２２０，２３０は、ホストＰＥとなることができるだけの資源をそれぞれ独立して有している。
【０１１３】
次に動作について説明する。
マスタＰＥ２００，２１０，２２０，２３０に設けられたマスタＩＤ設定スイッチ２０９，２１９，２２９，２３９は、マスタＰＥごとに固有の設定値にそれぞれ設定され、それらの値はシステム上でマスタＰＥを特定するＩＤ情報として使われる。マスタＰＥ２００，２１０，２２０，２３０に設けられたホスト設定レジスタ２０８，２１８，２２８，２３８は、システムＩ／Ｏ空間上の同一のアドレスで指定される領域に存在しており、一回のアクセスで全マスタＰＥ２００，２１０，２２０，２３０の全てのホスト設定レジスタ２０８，２１８，２２８，２３８の値が設定され得る。ホスト設定レジスタ２０８，２１８，２２８，２３８の各ビットはマスタＩＤ設定スイッチ２０９，２１９，２２９，２３９の各設定値と対応付けられており、ホスト設定レジスタ２０８，２１８，２２８，２３８のセットされたビットに対応したマスタＩＤ設定スイッチの設定値を有するマスタＰＥがシステムのホストＰＥとして動作するように設定される。すなわち、ホスト設定レジスタ２０８，２１８，２２８，２３８中の１ビットのみをセットすることにより、マスタＰＥ２００，２１０，２２０，２３０のうちのいずれか１つをホストＰＥとして動作することを許可する。
【０１１４】
システム起動時に、例えば、マスタＩＤ設定スイッチ２０９の設定値をＩＤ０に設定し、ＩＤ０に対応するホスト設定レジスタ２０８，２１８，２２８，２３８のビットをセットすると、システム起動後、設定値ＩＤ０を有するマスタＰＥ２００がホストＰＥとして動作する。その後、もしホストＰＥとして動作しているマスタＰＥ２００上でなんらかの異常が発生すると、マスタＰＥ２００は、異常処理ルーチンによる処理の過程でシステムのホストＰＥとしての役割を他のマスタＰＥに譲るために、ホスト設定レジスタ２０８，２１８，２２８，２３８の値を書き換える。これにより、新たにセットされたビットに対応するＩＤを持つ他のマスタＰＥ２１０，２２０，または２３０がシステムのホストＰＥとして動作することが可能となり、システムとしての稼動を継続することができる。
【０１１５】
以上のように、実施の形態９によれば、システム起動前に各マスタＰＥ２００，２１０，２２０，２３０に固有のＩＤを持たせシステム起動時にはＩＤ０のマスタＰＥがシステムのホストＰＥとなるように設定し、ホストＰＥとなっているマスタＰＥで異常が発生した場合には、自身をシステムから切り離す前に異常処理ルーチン内で次にホストとなるマスタＰＥを決定し、そのＩＤに対応する値を全てのホスト設定レジスタ２０８，２１８，２２８，２３８に書き込み、ホストの権利を他のマスタＰＥに譲るので、ホストの権利をスムーズに受け継がせてシステムダウンを防ぐことが可能となり、比較的容易にシステムの高信頼性を得ることができる。
【０１１６】
また、非均質なマスタＰＥ２００，２１０，２２０，２３０を用意し、それらをダイナミックにホストＰＥに切り替えることにより、１つのシステム上で各マスタＰＥが独自のパフォーマンスを有効に発揮することができる。それ故、コストパフォーマンスの高いマルチプロセッサシステムを提供でき、さらに、従来技術のような独立したホスト監視手段を持つ必要がなくホストＰＥ決定のための情報データの一貫性を保持する必要もないので、ハードウェア、ソフトウェア、処理オーバーヘッドの増大を抑えることができる。
【０１１７】
実施の形態１０．
図１４はこの発明の実施の形態１０によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。図において、１００はホストＰＥ、１０５はホストＰＥ１００内部の割り込み処理ルーチンであり、セマフォ開放の割り込み要求の処理を行うルーチンである。また、２００，２１０，２４０はホストＰＥ１００からのバス５０００に電気的に接続されるマスタＰＥである。ここで、マスタＰＥ２４０は、内部にセマフォレジスタ２４１およびセマフォ待ち行列２４２と、マルチプロセッサシステムの共有資源としての共有メモリ２４３とを搭載するブリッジデバイスであり、バス５０００とは異なるバス５００１を有しているが、これ以外は他のマスタＰＥと同様なマスタＰＥである。また、２２０，２３０はマスタＰＥ２４０からのバス５００１に電気的に接続されているマスタＰＥ、５００２はマスタＰＥ２２０内部の割り込み処理ルーチン、５００３はマスタＰＥ２２０内に設けれており処理を待っている複数のタスクが登録されるタスク待ち行列、５００４はセマフォレジスタ２４１からホストＰＥ１００への割り込み信号線、５００５はホストＰＥ１００からマスタＰＥ２２０への割り込み信号線である。なお、マスタＰＥ２００，２１０，２３０もマスタＰＥ２４０内の共有メモリ２４３をアクセスするならば、マスタＰＥ２２０と同様な割り込み処理ルーチン５００２およびタスク待ち行列５００３を備えている。
【０１１８】
次に動作について説明する。
図１５はこの実施の形態１０によるマルチプロセッサ制御方式におけるセマフォ取得、開放時のマスタＰＥ２４０の動作の流れを示すフローチャートであり、図１６は、図１５に示したマスタＰＥ２４０の動作に対するホストＰＥ１００の動作を示すフローチャートである。以下、図１５および図１６を参照しながらこの実施の形態１０によるマルチプロセッサ制御方式による処理について説明する。
【０１１９】
システムに電源が投入された初期状態では、マスタＰＥ２４０のセマフォレジスタ２４１はクリアされ、共有メモリ２４３にアクセスし得るホストＰＥ１００，マスタＰＥ２００，２１０，２２０，２３０，２４０もセマフォレジスタ２４１を取得していない。この状態において、マスタＰＥ２００がセマフォレジスタ２４１をリードすると（ステップＳＴ５１００）、マスタＰＥ２００は有効なデータをリードでき（ステップＳＴ５１０１）、セマフォレジスタ２４１を取得してタスクを実行する（ステップＳＴ５１０２）。さらに、マスタＰＥ２００がセマフォレジスタ２４１を取得してタスクを実行している状態で、他のＰＥ、例えばマスタＰＥ２２０がセマフォレジスタ２４１をリードしても無効なデータをリードできず、セマフォレジスタ２４１を取得することはできない。セマフォレジスタ２４１を取得できなかった場合、マスタＰＥ２２０はセマフォ待ち行列２４２にセマフォ要求および優先順位を登録し（ステップＳＴ５１０５）、さらにマスタＰＥ２２０内のタスク待ち行列５００３にタスクＩＤおよび優先順位を登録する（ステップＳＴ５１０５）。マスタＰＥ２４０のセマフォレジスタ２４１を要求するＰＥが複数ある場合は、それらのタスクのセマフォ要求よよび優先順位がセマフォ待ち行列２４２に順に登録される（ステップＳＴ５１０５）。この実施の形態では、マスタＰＥ２２０のタスクが最も優先順位が高いものと仮定する。セマフォレジスタ２４１を取得できずセマフォ要求をセマフォ待ち行列２４２に登録しタスク待ち行列５００３にタスクＩＤを登録したマスタＰＥ２２０は、そのタスクの処理を中断し、セマフォレジスタ２４１を取得できるまで割り込みをウェイトする一方で（ステップＳＴ５１０６）、それ以外のタスクを実行することが可能となる。
【０１２０】
一方、現在セマフォレジスタ２４１を取得しているマスタＰＥ２００が処理を終了しセマフォレジスタ２４１を開放する場合、マスタＰＥ２００はセマフォレジスタ２４１にライト動作を実行し（ステップＳＴ５１０３）、セマフォレジスタ２４１はセマフォが開放されたことを示す割り込みを割り込み信号線５００４を介してホストＰＥ１００へ送出する（ステップＳＴ５１０４）。図１６に示すように、ホストＰＥ１００は割り込みを受付けると（ステップＳＴ５２００）、その割り込み要求を処理する割り込み処理ルーチン１０５に入り、マスタＰＥ２４０のセマフォ待ち行列２４２の内容を確認し（ステップＳＴ５２０１）、次のセマフォ待ちのマスタＰＥがあるか否かを判定し（ステップＳＴ５２０２）、セマフォ待ちのマスタＰＥの中からセマフォレジスタ２４１を取得すべき最も優先順位が高いマスタＰＥを決定し（ステップＳＴ５２０３）、そのマスタＰＥに対して割り込みの発生処理を行うべく割り込み信号線５００５を介して割り込みを発生させる（ステップＳＴ５２０４）。また、ステップＳＴ５２０２においてセマフォ待ち行列２４２にデータが登録されていないならば、ホストＰＥ１００は処理を終了する。
【０１２１】
図１４に示す例では、上記したように、マスタＰＥ２２０のタスクが最も優先順位が高いので、マスタＰＥ２２０のタスクがセマフォ待ちであるならば、ホストＰＥ１００はマスタＰＥ２２０へ割り込み要求を送付してセマフォレジスタ２４１の所有権をマスタＰＥ２２０に渡す。マスタＰＥ２２０が割り込み要求をホストＰＥ１００から受けると（ステップＳＴ５１０７）、セマフォ取得可能であることを知りマスタＰＥ２２０内部の割り込み処理ルーチン５００２に分岐して、タスク待ち行列５００３の内容を確認する（ステップＳＴ５１０８）。次に、マスタＰＥ２２０はウェイトしているタスクが２つ以上あるか否かを判定し（ステップＳＴ５１１０）、２以上あるならば優先順位により次に処理するタスクを決定する（ステップ５１０９）。一方、ウェイトしているタスクが１つであれば、マスタＰＥ２２０はそのタスクを無条件に選択する。処理するタスクが決定すると、マスタＰＥ２２０は、マスタＰＥ２４０のセマフォ待ち行列２４２およびマスタＰＥ２２０のタスク待ち行列５００３から処理するタスクに関する情報を削除し（ステップＳＴ５１１１）、セマフォレジスタ２４１をリードして（ステップＳＴ５１１２）、セマフォレジスタ２４１を取得する（ステップＳＴ５１１３）。マスタＰＥ２２０はセマフォレジスタ２４１を取得した後、タスクを実行する（ステップＳＴ５１１４）。タスクの実行が終了すると、マスタＰＥ２２０はセマフォレジスタ２４１にライト動作を行い（ステップＳＴ５１１５）、セマフォレジスタ２４１を開放する。セマフォが開放されるとセマフォレジスタ２４１を有するマスタＰＥ２４０は、ホストＰＥ１００に対して割り込み信号線５００４を介して割り込み信号を発生する（ステップＳＴ５１１６）。割り込み信号を受けたホストＰＥ１００は、図１６に示した動作に従って、次のセマフォ待ちのタスクを実行するために対象となるマスタＰＥに対して割り込みを発生する。
【０１２２】
以上のように、この実施の形態１０によれば、セマフォの取得開放により複数のマスタＰＥ２００，２１０，２２０，２３０，２４０およびホストＰＥ１００からの共有メモリ２４３へアクセスするタスクを順次受け付けて処理することが可能となるとともに、競合する場合には排他制御することができる。また、あるマスタＰＥがセマフォレジスタ２４１を要求したときに、他のマスタＰＥがセマフォレジスタ２４１を取得していてセマフォが取得できない場合、共有メモリ２４３を有する割り込み要求先のマスタＰＥ２４０内のセマフォ待ち行列２４２にそのセマフォ要求を登録し割り込み要求元のマスタＰＥ内のタスク待ち行列５００３にタスクＩＤを登録するので、セマフォレジスタ２４１の取得許可の割り込みを受けるまで、割り込み要求元のマスタＰＥは他の処理を実行することができる。さらに、タスクの優先順位をセマフォ待ち行列２４２に登録することにより、最も優先度の高いマスタＰＥのタスクであって最も優先度の高いタスクを優先して排他的に実行でき、効率的な処理が可能となる。
【０１２３】
なお、マスタＰＥ２４０内に設けられた共有メモリ２４３をシステムの共有資源の例として説明したが、この実施の形態１０はこれに限定されるものではないことは言うまでもない。
【０１２４】
実施の形態１１．
図１７はこの発明の実施の形態１１によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。図において、１００は上記実施の形態２または実施の形態３による割り込みルーティング回路１０００または１００１のような割り込みルーティング回路６０１０を備えたホストＰＥ、３００，３１０はＳＥ、６０００はＳＥ３００を管理している管理マスタＰＥ、２００はマスタＰＥ、６０２０はＳＥ３００からの管理マスタＰＥ６０００に対する割り込み信号、１２１はＳＥ３００，３１０、管理マスタＰＥ６０００、マスタＰＥ２００、ホストＰＥ１００を接続するＰＣＩバスである。図１７では割り込みルーティング回路６０１０は、ホストＰＥ１００内に設けられているように描かれているが、ホストＰＥ１００の外部に設けてもよい。
【０１２５】
また、図１８はノンインテリジェントなＳＥ３００の構造の一例を示すブロック図であり、図において、６０４０はＳＥ３００の複数の機能の起動／停止を機能毎に設定可能な機能制御用レジスタ、６０５０はエラー要因情報が格納されているエラー要因レジスタ、６０６０は外部にデータ等を出力するための外部出力回路、６０７０は外部からのデータ等を入力するための外部入力回路、６０６２は外部出力回路部６０６０に電源を供給するための出力回路用外部供給電源、６０６１は出力回路用外部供給電源６０６２の電圧を監視している異電圧検出回路、６０７２は外部入力回路部６０７０に電源を供給するための入力回路用外部供給電源、６０７１は入力回路用外部供給電源６０７２の電圧を監視している異電圧検出回路である。なお、これらの外部出力回路６０６０および外部入力回路６０７０は管理マスタＰＥ６０００からしかアクセスされない。また、６０９０はすべてのマスタＰＥによりアクセスされ得る共有メモリ、６０８０は共有メモリ６０９０のパリティエラー検出回路、６１００は外部出力回路６０６０の出力をすべてリセットしリセット状態を保持する出力強制リセット信号、６１１０は外部出力回路６０６０の電源に異電圧が投入されたことを報告する外部出力回路用異電圧検出信号、６１２０は外部入力回路６０７０の電源に異電圧が投入されたことを報告する外部入力回路用異電圧検出信号、６１３０は共有メモリ６０９０がアクセスされた時にパリティエラーが発生したことを示すパリティエラー検出信号、６１４０は共有メモリ６０９０の有効／無効設定信号である。また、図１９は機能制御用レジスタ６０４０のビット構成を示した説明図、図２０はのエラー要因レジスタ６０５０のビット構成を示した説明図である。
【０１２６】
次に動作について説明する。
ＳＥ３００で障害が発生した場合、ＳＥ３００は、割り込みルーティング回路６０１０を介して管理マスタＰＥ６０００に対し割り込み信号６０２０を発生する。管理マスタＰＥ６０００は、割り込み信号６０２０によりＳＥ３００に障害が発生したことを検知する。その後、管理マスタＰＥ６０００はＰＣＩバス１２１を介してＳＥ３００のエラー要因レジスタ６０５０をリードし、障害の要因を把握し、その要因に応じて機能制御レジスタ６０４０に障害の発生した機能を停止するために対応するビットを例えば論理１に設定する。
【０１２７】
ＳＥ３００が図１８に示すような構成を有している場合、図１８の外部出力回路６０６０に出力回路用外部供給電源６０６２により異電圧が投入されると、異電圧検出回路６０６１がその異常を検知し、外部出力回路異電圧投入信号６１１０をアクティブにするとともに、ＳＥ３００は割り込み信号６０２０を管理マスタＰＥ６０００に送出し、障害が起きたことを報告する。管理マスタＰＥ６０００は、ＳＥ３００の図２０に示すエラー要因レジスタ６０５０をリードし、障害の要因が外部出力回路６０６０に外部から異電圧が投入されたことであることを知り、外部出力回路６０６０が壊れて誤出力する事を防止するために、図１９に示すように機能制御レジスタ６０４０の出力強制リセットビットに論理１をライトする。これにより、外部出力回路６０６０の出力はリセットされ、よりフェールセーフであるリセット状態を保持する。このとき、管理マスタＰＥ６０００は外部出力回路６０６０にアクセスできなくなるが、外部入力回路６０７０、共有メモリ６０９０は有効であり、管理マスタＰＥ６０００は外部入力回路６０７０にアクセスでき、また、共有メモリ６０９０をアクセスするすべてのマスタＰＥは処理を続行できる。
【０１２８】
また、例えば、共有メモリ６０９０にアクセス時にパリティエラーが発生した場合、パリティエラー検出回路６０８０が異常を検出し、ＳＥ３００は図１７に示す割り込み信号６０２０により管理マスタＰＥ６０００に障害が発生したことを報告する。障害発生の報告を受けた管理マスタＰＥ６０００は、ＳＥ３００の図２０に示すエラー要因レジスタ６０５０をリードし、障害の要因が共有メモリアクセス時のパリティエラーであることを知る。管理マスタＰＥ６０００が、共有メモリ６０９０の障害が共有メモリ６０９０をアクセスするすべてのマスタＰＥに影響を及ぼす致命的な障害であると判断した場合、エラー通知信号６０３０をアサートしてシステムのエラーをホストＰＥ１００に通知し、エラー時の処理をホストＰＥ１００に委ねる。他方、管理マスタＰＥ６０００が共有メモリ６０９０の障害が致命的な障害でないと判断した場合、図１９に示すように機能制御レジスタ６０４０のメモリ有効／無効設定ビットを無効に設定することにより、すべてのマスタＰＥからのメモリアクセスに対するＳＥ３００の応答を禁止し、外部出力回路６０６０、外部入力回路６０７０のみ応答することを可能とする。
【０１２９】
以上のように、この実施の形態１１によれば、ＳＥ３００，３１０で発生した障害を割り込みにより迅速に管理マスタＰＥ６０００に報告することができ、管理マスタＰＥ６０００が自身に組み込まれているソフトウェアによりエラー要因に応じた柔軟なエラー処理を実行できる。また、エラー要因が他のＳＥやマスタＰＥに影響の無いものであるならば、構成制御用レジスタ６０４０の特定のビットをセットすることによりエラーを発生した機能のみを無効とすることができるので、その障害に無関係なＳＥやマスタＰＥは処理を続行することができる。さらに、ＳＥがインテリジェントであるかノンインテリジェントであるかに関わらず、機能制御用レジスタ６０４０とエラー要因レジスタ６０５０とを備えた全てのＳＥにこの実施の形態１１によるマルチプロセッサ制御方式を適用できる。従って、従来の技術と比較して、信頼性、保守性、および柔軟性の高いマルチプロセッサシステムを提供できる。
【０１３１】
【発明の効果】
以上のように、請求項１記載の発明によれば、ホストＰＥを介さずに割り込み信号をマスタＰＥとＳＥの間で直接ルーティングできる割り込みルーティング回路を設け、システム初期化時に割り付けたシステム資源に関する情報とマスタＰＥとＳＥの間の割り込みルーティングに必要な情報とを含むシステム構成情報を構成情報データベースに予め登録し、構成情報データベースに基づいてＳＥが発した割り込み信号がマスタＰＥへルーティングされるように割り込みルーティング回路を設定するように構成したので、例えばＰＣＩバスをシステムバスとする一般的なシステムハードウェアだけではターゲットであるＳＥからマスタＰＥに割り込みを通知できないマルチプロセッサシステムにおいても、スレーブにマスタ機能を持たせたりホストＰＥの割り込み処理ルーチンを特殊化したりすることなく、さらに、基礎となるシステムハードウェアを変更することなく、必要な割り込みルーティング回路を付加するだけでＳＥからマスタＰＥへ割り込み信号をルーティングできる効果がある。さらに、割り込みルーティングの際にホストＰＥが介在しないため、割り込み通知に関して余分なオーバーヘッドをかけることがないという効果がある。
【０１３２】
請求項２記載の発明によれば、マルチプロセッサシステムが複数のマスタＰＥと複数のＳＥとを有する場合、各マスタＰＥとそのスレーブとなるＳＥとの対応を示す情報もシステム構成情報として構成情報データベースに予め登録し、構成情報データベースに基づいて複数のＳＥのうちのいずれかが発した割り込み信号が該ＳＥを制御対象とするマスタＰＥへルーティングされるように割り込みルーティング回路を設定するように構成したので、マスタＰＥやターゲットであるＳＥが複数存在する複雑なマルチプロセッサシステムにおいても、構成情報ＤＢの内容を参照することにより容易にシステム構成を把握でき、さらに、構成情報ＤＢの内容を変更することにより割り込みルーティングの変更を行えるため、システムのフレキシビリティを向上させることができる効果がある。
【０１３３】
請求項３記載の発明によれば、ホストＰＥが接続されたシステムバスと他のシステムバスとを接続する１つのブリッジ機構と、必要であれば、他のシステムバスとこれとは別の他のシステムバスとを接続する少なくとも１つのブリッジ機構とを設け、各マスタＰＥおよび各ＳＥの存在位置に関する情報もシステム構成情報として構成情報データベースに予め登録し、構成情報データベースに基づいて各ＳＥが発した割り込み信号が対応する割り込み要求先に必要ならばブリッジ機構を介してルーティングされるように割り込みルーティング回路を設定するように構成したので、ブリッジ機構により複数のシステムバスが接続されたマルチプロセッサシステムにおいても、同様に、スレーブにマスタ機能を持たせたりホストＰＥの割り込み処理ルーチンを特殊化したりすることなく、さらに、基礎となるシステムハードウェアを変更することなく、必要な割り込みルーティング回路を付加するだけでブリッジ機構を介してＳＥからマスタＰＥへ割り込み信号をルーティングできる効果がある。
【０１３４】
請求項４記載の発明によれば、マルチプロセッサ制御方式をマスタＰＥとＳＥとが通信を行う場合、ＳＥまたはマスタＰＥからの通信要求は割り込みとして割り込みルーティング回路を用いてマスタＰＥまたはＳＥに通知し、マスタＰＥとＳＥとの間のデータ転送はウィンドウを介して行うように構成したので、マスタＰＥとＳＥとの通信に関する通信要求やデータを当事者間で直接送受信できるので、システムパフォーマンスを向上させることができる効果がある。また、通信用の割り込みルーティングやウィンドウをソフトウェアで設定、変更できるのでシステム構成のフレキシビリティを向上させることができる効果がある。
【０１３５】
請求項５記載の発明によれば、マルチプロセッサ制御方式をホストＰＥとマスタＰＥとの間の通信およびマスタＰＥとＳＥとの間の通信における通信要求を割り込みとして割り込みルーティング回路を用いて通知し、ホストＰＥとマスタＰＥとの間のデータ転送はマスタＰＥ上に設けた共有メモリを介して行い、マスタＰＥとＳＥとの間のデータ転送はマスタＰＥがシステムのマスタとなってデータ転送するように構成したので、マスタＰＥとＳＥとの間およびマスタＰＥとホストＰＥとの間の通信要求は要求元から要求先に直接通知することができるので、システムパフォーマンスを向上させることができる効果がある。さらに、通信要求用の割り込みルーティングをソフトウェアで設定、変更することが可能であるので、システム構築のフレキシビリティを向上させることができる効果がある。また、マスタＰＥとターゲットであるＳＥとのデータ転送でをマスタＰＥがシステムのマスタとなってデータ転送するので、ホストＰＥの介在がなくマスタＰＥの処理やホストＰＥ内部の処理に余分なオーバーヘッドがかからないという効果がある。さらに、処理結果等をマスタＰＥ上の共有メモリを介してホストＰＥへ通知するように構成されているので、ホストＰＥとマスタＰＥとの間の通信データがたとえ大きくなっても、システムの主メモリを共有メモリにしてマスタＰＥがホストＰＥをホールドしてしまう従来のマルチプロセッサシステムに比べて余分なオーバーヘッドをシステムにかけることはないので、システムとしてのトータルパフォーマンスをハイレベルに維持できる効果がある。
【０１３６】
請求項６記載の発明によれば、マルチプロセッサ制御方式をＳＥにおいて障害が発生した際に割り込みルーティング回路を介して割り込みにより障害の発生をＳＥを管理マスタＰＥに報告し、障害の報告を受けた管理マスタＰＥにＳＥのエラー要因レジスタにアクセスさせて障害の要因を確認し、障害の要因に応じて障害の起きた機能を無効にすべく管理マスタＰＥにＳＥの機能制御用レジスタの対応するビットをセットさせるように構成したので、ＳＥで発生した障害を割り込みにより迅速に管理マスタＰＥに報告することができ、管理マスタＰＥが自身に組み込まれているソフトウェアによりエラー要因に応じた柔軟なエラー処理を実行できる効果がある。また、構成制御用レジスタの特定のビットをセットすることによりエラーを発生した機能のみを無効とすることができるので、場合によってはその障害に無関係なＳＥやマスタＰＥは処理を続行することができる効果がある。さらに、ＳＥがインテリジェントであるかノンインテリジェントであるかに関わらず、機能制御用レジスタとエラー要因レジスタとを備えた全てのＳＥに適用でき、従来の技術と比較して、信頼性、保守性、および柔軟性の高いマルチプロセッサシステムを提供できる効果がある。
【図面の簡単な説明】
【図１】この発明の実施の形態１によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。
【図２】図１に示したマルチプロセッサシステムの構成情報ＤＢの内容を示す説明図である。
【図３】この発明の実施の形態２によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの割り込みルーティング回路の構成を主に示すブロック図である。
【図４】この発明の実施の形態３によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの割り込みルーティング回路の構成を主に示すブロック図である。
【図５】この発明の実施の形態４によるマルチプロセッサ制御方式が適用されるブリッジ機構を有するマルチプロセッサシステムの構成を示すブロック図である。
【図６】この発明の実施の形態５によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図であり、システム起動時のマスタＰＥおよび割り込みルーティング回路への設定処理手順を示す図である。
【図７】図６に示すマルチプロセッサシステムでの割り込みルーティング時のマスタＰＥとターゲット間での処理通知手順を示すブロック図である。
【図８】図６に示すマルチプロセッサシステムでのデータ転送時のマスタＰＥとターゲット間での処理通知手順を示すブロック図である。
【図９】この発明の実施の形態６によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図であり、マスタＰＥとＳＥとの間の通信におけるデータ転送経路を示す図である。
【図１０】図９に示すマルチプロセッサシステムのホストＰＥとマスタＰＥとの間の通信におけるデータ転送経路を示すブロック図である。
【図１１】この発明の実施の形態７によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの割り込み関連のレジスタ構成を示すブロック図である。
【図１２】この発明の実施の形態８によるマルチプロセッサ制御方式を示す説明図である。
【図１３】この発明の実施の形態９によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。
【図１４】この発明の実施の形態１０によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。
【図１５】図１４に示すマルチプロセッサシステムのマスタＰＥのセマフォ取得開放動作を示すフローチャートである。
【図１６】図１４に示すマルチプロセッサシステムのホストＰＥのマスタＰＥへ割り込みの送出動作を示すフローチャートである。
【図１７】この発明の実施の形態１１によるマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。
【図１８】図１７に示すマルチプロセッサシステムのＳＥの構成を示すブロック図である。
【図１９】図１８に示すＳＥの機能制御レジスタのビット構成を示す説明図である。
【図２０】図１８に示すＳＥのエラー要因レジスタのビット構成を示す説明図である。
【図２１】従来のマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。
【図２２】他の従来のマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。
【図２３】他の従来のマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。
【図２４】他の従来のマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。
【図２５】従来のマルチタスク制御方式の構成を示すブロック図である。
【図２６】他の従来のマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。
【図２７】図２６に示すマルチプロセッサシステムのＳＥの構成を示すブロック図である。
【図２８】他の従来のマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。
【図２９】他の従来のマルチプロセッサ制御方式が適用されるマルチプロセッサシステムの構成を示すブロック図である。
【符号の説明】
１００  ホストＰＥ、１０２  構成情報ＤＢ（構成情報データベース）、１２１，１２３，１２５  ＰＣＩバス（システムバス）、１２２，１２４  ブリッジデバイス（ブリッジ機構）、１４０  システムバス、１５０  割り込み信号線（システムバス）、２００，２１０，２２０，２３０  マスタＰＥ、２０１  ＣＰＵ、２０２  割り込みレジスタ、２０８，２１８，２２８，２３８  ホスト設定レジスタ、２１３  ウィンドウ設定レジスタ（レジスタ）、２１５  ウィンドウ、２１７  ２ポートメモリ（共有メモリ）、２４１  セマフォレジスタ、３００，３１０  ＳＥ、５０２  割り込み要因レジスタ、１０００，１００１，１００２，１００３，１００４，６０１０  割り込みルーティング回路、５０００，５００１  システムバス、６０００  管理マスタＰＥ、６０４０  機能制御用レジスタ、６０５０  エラー要因レジスタ。
【図１】
0003540119.tif 000002
【図２】
0003540119.tif 000003
【図３】
0003540119.tif 000004
【図４】
0003540119.tif 000005
【図５】
0003540119.tif 000006
【図６】
0003540119.tif 000007
【図７】
0003540119.tif 000008
【図８】
0003540119.tif 000009
【図９】
0003540119.tif 000010
【図１０】
0003540119.tif 000011
【図１１】
0003540119.tif 000012
【図１２】
0003540119.tif 000013
【図１３】
0003540119.tif 000014
【図１４】
0003540119.tif 000015
【図１５】
0003540119.tif 000016
【図１６】
0003540119.tif 000017
【図１７】
0003540119.tif 000018
【図１８】
0003540119.tif 000019
【図１９】
0003540119.tif 000020
【図２０】
0003540119.tif 000021
【図２１】
0003540119.tif 000022
【図２２】
0003540119.tif 000023
【図２３】
0003540119.tif 000024
【図２４】
0003540119.tif 000025
【図２５】
0003540119.tif 000026
【図２６】
0003540119.tif 000027
【図２７】
0003540119.tif 000028
【図２８】
0003540119.tif 000029
【図２９】
0003540119.tif 000030