(57)【特許請求の範囲】
【請求項１】
複数の相互接続された処理ノードのうちの少なくとも１つの処理ノードを含む複数の割込みドメインを含むデータ処理システムであって、
各割込みドメインは、
外部割込みを処理する少なくとも１つのプロセッサと、外部割込みを生成することができる少なくとも１つの割込み元装置と、
前記少なくとも１つの割込み元装置によって生成された外部割込みを受け取り、割り込みパケットを発行する少なくとも１つの割込み元ユニットと、前記外部割込みを少なくとも前記プロセッサに渡す割込み先ユニットとを含む割込みハードウェアと、
前記処理ノードが割り込みを処理するプロセッサを含まない場合に、前記割り込みハードウェアからの割り込みパケットを受け入れ、その割り込みパケットを指定された処理ノードに転送するノード・コントローラと
を含み、
前記データ処理システムは、前記処理ノードが割り込みを処理するプロセッサを含むか否かの判断に応答して前記少なくとも１つのノード・コントローラと同じ割込みドメイン内のプロセッサまたは前記少なくとも１つのノード・コントローラとは異なる割込みドメイン内のプロセッサの両方のプロセッサに割込みを渡すものであり、前記割込み先ユニットと前記割込み元ユニットが共用相互接続を介して割込みパケットを渡し、前記複数の割込みドメインのうちの少なくとも１つの割込みドメインのために、前記複数の相互接続された処理ノードのうちの異なる処理ノード内に少なくとも１つの割込み元ユニットと前記割込み先ユニットが配置された、データ処理システム。
【請求項２】
前記複数の割込みドメインの各割込みドメイン内の前記割込みハードウェアが、その割込みドメイン内のみのプロセッサに割込みを渡す割込み先ユニットと、割込み元装置から割込みを受け取る少なくとも１つの割込み元ユニットとを含む、請求項１に記載のデータ処理システム。
【請求項３】
前記少なくとも１つの割込み元ユニットを含む前記複数の相互接続された処理ノードのうちの前記１つの処理ノードが、外部割込みを処理するプロセッサを含まない無プロセッサ・ノードである、請求項１に記載のデータ処理システム。
【請求項４】
前記複数の割込みドメインのうちの少なくとも１つの割込みドメインが複数の割込み元ユニットを含む、請求項２に記載のデータ処理システム。
【請求項５】
各割込みドメイン内の前記割込み先ユニットが、割込みドメイン間で割込みを渡すためのグローバル・アクセス可能メモリ・マップ・レジスタを含む、請求項２に記載のデータ処理システム。
【請求項６】
前記グローバル・アクセス可能メモリ・マップ・レジスタがプロセッサ間割込みを渡す、請求項５に記載のデータ処理システム。
【請求項７】
各前記割込みドメインの前記グローバル・アクセス可能メモリ・マップ・レジスタにそれぞれの物理アドレスが割り当てられ、各割込みドメインの前記グローバル・アクセス可能メモリ・マップ・レジスタの物理アドレスが、前記グローバル・アクセス可能メモリ・マップ・レジスタを含む処理ノードに割り振られた記憶域からの均一なオフセットを有する、請求項５に記載のデータ処理システム。
【請求項８】
複数の相互接続された処理ノードのうちの少なくとも１つの処理ノードを含んで構成され、かつ外部割込みを処理する少なくとも１つのプロセッサと、外部割込みを生成することができる少なくとも１つの割込み元装置と、前記少なくとも１つの割込み元装置によって生成された外部割込みを受け取り、割り込みパケットを発行する少なくとも１つの割込み元ユニットと前記外部割込みを少なくとも１つのプロセッサに渡す割込み先ユニットとを含む割込みハードウェアと、前記処理ノードが割り込みを処理するプロセッサを含まない場合に前記割り込みハードウェアからの割り込みパケットを受け入れ、その割り込みパケットを指定された処理ノードに転送するノード・コントローラとを含む複数の割込みドメインを含むデータ処理システムにおいて外部割込みを処理する方法であって、
前記データ処理システムのどの処理ノードに前記割込み元装置が含まれているかを識別するステップと、
前記処理ノードが割り込みを処理するプロセッサを含むか否かを判断するステップと、
前記判断に応答して、前記少なくとも１つのノード・コントローラと同じ割込みドメイン内のプロセッサまたは前記少なくとも１つのノード・コントローラとは異なる割込みドメイン内のプロセッサの両方のプロセッサに割込みを渡すステップと
を含み、前記複数の割込みドメインのうちの少なくとも１つの割込みドメインのため、前記複数の相互接続された処理ノードのうちの異なる処理ノード内に配置された、少なくとも１つの割込み元ユニットと前記割込み先ユニットとの間で共用相互接続を介して割り込みパケットを渡す、方法。
【請求項９】
前記複数の割込みドメインのうちの少なくとも１つの割込みドメインのため、前記複数の処理ノードのうちの少なくとも２つの処理ノードを相互接続する共用相互接続を介して割り込みパケットを渡す、請求項８に記載の方法。
【請求項１０】
前記データ処理システムのどの処理ノードに前記割込み元装置が含まれているかを識別するステップが、前記複数の相互接続された処理ノードのうちの１つの処理ノードが少なくとも１つの割込み元ユニットを含み、外部割込みを受け取るプロセッサを含まない無プロセッサ・ノードである、少なくとも１つの処理ノードを識別するステップを含む、請求項９に記載の方法。
【請求項１１】
前記データ処理システムのどの処理ノードに前記割込み元装置が含まれているかを識別するステップが、前記複数の割込みドメインのうちの、複数の割込み元ユニットを含む少なくとも１つの割込みドメインを確立するステップを含む、請求項８に記載の方法。
【請求項１２】
前記割込み先ユニット内のグローバル・アクセス可能メモリ・マップ・レジスタを使用して割込みドメイン間で割込みを渡すステップをさらに含む、請求項８に記載の方法。
【請求項１３】
割込みドメイン間で割込みを渡すステップが、割込みドメイン間でプロセッサ間割込みを渡すステップである、請求項１２に記載の方法。
【請求項１４】
さらに、各割込みドメインの前記グローバル・アクセス可能メモリ・マップ・レジスタの物理アドレスが前記グローバル・アクセス可能メモリ・マップ・レジスタを含む処理ノードに割り振られた記憶域からの均一なオフセットを有する、各前記割込みドメインの前記グローバル・アクセス可能メモリ・マップ・レジスタにそれぞれの物理アドレスを割り当てるステップを含む、請求項１２に記載の方法。
【請求項１５】
複数の相互接続されたノードを含み、各前記複数の相互接続されたノードが割込みを生成する装置を含み、複数のノード内の装置が同じレベルの割込みを生成することができるデータ処理システムであって、複数の相互接続された処理ノードのうちの少なくとも１つの処理ノードを含んで構成され、かつ外部割込みを処理する少なくとも１つのプロセッサと、外部割込みを生成することができる少なくとも１つの割込み元装置と、前記少なくとも１つの割込み元装置によって生成された外部割込みを受け取り、割り込みパケットを発行する少なくとも１つの割込み元ユニットと前記外部割込みを少なくとも前記プロセッサに渡す割込み先ユニットとを含む割込みハードウェアと、前記処理ノードが割り込みを処理するプロセッサを含まない場合に前記割り込みハードウェアからの割り込みパケットを受け入れ、その割り込みパケットを指定された処理ノードに転送するノード・コントローラとを含む複数の割込みドメインを含むデータ処理システム内で割込みを処理する方法であって、
前記データ処理システムのどの処理ノードに前記割込み元装置が含まれているかを識別するステップと、
前記処理ノードが割り込みを処理するプロセッサを含むか否かを判断するステップと、
前記判断に応答して、
割込みを処理するためにプロセッサに渡す場合に、レベルを有する前記割込みが、前記レベルの割込みを生成することができる装置のリストを入手するステップと、
前記リスト内のどの装置が前記割込みを生成したかを特定するために、前記プロセッサと同じ割込みドメイン内に配置された前記リスト内の装置のみをポーリングするステップとを含み、前記複数の割込みドメインのうちの少なくとも１つの割込みドメインのため、前記複数の相互接続された処理ノードのうちの異なる処理ノード内に配置された、少なくとも１つの割込み元ユニットと前記割込み先ユニットとの間で共用相互接続を介して割り込みパケットを渡す、方法。
【請求項１６】
前記ポーリングするステップの後、前記特定された装置に関連付けられた割込みハンドラにより前記特定された装置にサービスを実行させるステップをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記割込みの受渡しの前に、前記複数の相互接続されたノードのすべてのノードにとってアクセス可能なグローバル記憶スペースに前記リストを作成し、記憶するステップをさらに含む、請求項１５に記載の方法。
【請求項１８】
前記リストが単一の割込みドメイン内の装置のみを含む、請求項１７に記載の方法。
【請求項１９】
データ処理システムであって、
複数の相互接続されたノードの各ノードが割込みを生成する装置を含み、複数のノード内の装置が同じレベルの割込みを生成することができ、前記複数の相互接続されたノードのうちの少なくとも１つのノードがプロセッサを含む、複数の相互接続されたノードと、
前記割込みを生成する装置によって生成された外部割込みを受け取り、割り込みパケットを発行する少なくとも１つの割込み元ユニットと、前記外部割込みを少なくとも前記プロセッサに渡す割込み先ユニットとを含む割込みハードウェアと、
前記処理ノードが割り込みを処理するプロセッサを含まない場合に、前記割り込みハードウェアからの割り込みパケットを受け入れ、その割り込みパケットを指定された処理ノードに転送するノード・コントローラと
を含み、
前記処理ノードが割り込みを処理するプロセッサを含むか否かの判断に応答してレベルを有する割込みが前記プロセッサに渡されるのに応答して、前記レベルの割込みを生成することができる装置のリストを入手し、前記リスト内のどの装置が前記割込みを生成したかを特定するために前記リスト内の前記プロセッサと同じ割込みドメイン内に配置された装置のみをポーリングする、割込みハンドラとを含み、前記割込み先ユニットと前記割込み元ユニットが共用相互接続を介して割込みパケットを渡し、前記複数の割込みドメインのうちの少なくとも１つの割込みドメインのために、前記複数の相互接続された処理ノードのうちの異なる処理ノード内に少なくとも１つの割込み元ユニットと前記割込み先ユニットが配置された、データ処理システム。
【請求項２０】
前記割込みハンドラが第１のレベルの割込みハンドラであり、前記データ処理システムが、前記データ処理システム内に記憶され、前記プロセッサにより実行可能な第２のレベルの割込みハンドラをさらに含み、前記第２のレベルの割込みハンドラが前記装置に関連付けられ、前記第１のレベルの割込みハンドラが前記第２のレベルの割込みハンドラを呼び出して前記特定された装置にサービスを提供する、請求項１９に記載のデータ処理システム。
【請求項２１】
前記複数の相互接続されたノードのすべてのノードにとってアクセス可能なグローバル記憶スペースをさらに含み、前記割込みの受渡しの前に前記リストが前記グローバル記憶スペースに記憶される、請求項１９に記載のデータ処理システム。
【請求項２２】
前記リストが単一の割込みドメイン内の装置のみがリストされたものである、請求項２１に記載のデータ処理システム。
【請求項２３】
複数の相互接続されたノードの各ノードが割込みを生成する装置を含み、複数のノード内の装置が同じレベルの割込みを生成することができ、前記複数の相互接続されたノードのうちの少なくとも１つのノードがプロセッサを含む、複数の相互接続ノードを含むデータ処理システムであって、複数の相互接続された処理ノードのうちの少なくとも１つの処理ノードを含んで構成され、かつ外部割込みを処理する少なくとも１つのプロセッサと、外部割込みを生成することができる少なくとも１つの割込み元装置と、前記少なくとも１つの割込み元装置によって生成された外部割込みを受け取り、割り込みパケットを発行する少なくとも１つの割込み元ユニットと前記外部割込みを少なくとも前記プロセッサに渡す割込み先ユニットとを含む割込みハードウェアと、前記処理ノードが割り込みを処理するプロセッサを含まない場合に前記割り込みハードウェアからの割り込みパケットを受け入れ、その割り込みパケットを指定された処理ノードに転送するノード・コントローラとを含む複数の割込みドメインを含むデータ処理システムを制御するためのプログラムを記憶したコンピュータ可読な記憶媒体であって、
前記プログラムは、
前記データ処理システムのどの処理ノードに前記割込み元装置が含まれているかを識別するステップと、
前記処理ノードが割り込みを処理するプロセッサを含むか否かを判断するステップと、
前記判断に応答して、
前記プログラムに含まれる割込みハンドラが、割込みを処理するためにプロセッサに渡す場合に、レベルを有する前記割込みが、前記レベルの割込みを生成することができる装置のリストを入手するステップと、
前記リスト内のどの装置が前記割込みを生成したかを特定するために、前記プロセッサと同じ割込みドメイン内に配置された前記リスト内の装置のみをポーリングするステップと
を実行させ、前記複数の割込みドメインのうちの少なくとも１つの割込みドメインのため、前記複数の相互接続された処理ノードのうちの異なる処理ノード内に配置された、少なくとも１つの割込み元ユニットと前記割込み先ユニットとの間で共用相互接続を介して割り込みパケットを渡す処理を実行させる、コンピュータ可読な記憶媒体。
【請求項２４】
前記割込みハンドラが第１のレベルの割込みハンドラであり、前記プログラムが第２のレベルの割込みハンドラをさらに含み、第２のレベルの割込みハンドラが前記装置に関連付けられ、前記第１のレベルの割込みハンドラが前記第２のレベルの割込みハンドラを呼び出して前記特定された装置にサービスを提供する、請求項２３に記載の記憶媒体。
【請求項２５】
前記プログラムは、前記割込みの受渡しの前に前記複数のノードのすべてのノードにとってアクセス可能なグローバル記憶スペース内に前記リストを作成する構成ルーチンをさらに含む、請求項２３に記載の記憶媒体。
【請求項２６】
前記構成ルーチンは、単一の割込みドメイン内の装置のみのリストを入手するステップを実行する、請求項２５に記載の記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にはデータ処理に関し、詳細には、ノン・ユニフォーム・メモリ・アクセス（ｎｏｎ−ｕｋｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ（不均等メモリ・アクセス）：ＮＵＭＡ）データ処理システムにおけるデータ処理に関する。より詳細には、本発明は、ＮＵＭＡデータ処理システムのための割込みアーキテクチャに関する。
【０００２】
【従来の技術】
コンピュータ・システムでは、割込みを使用して、特別な処理を必要とするイベントの発生をプロセッサに警告することが多い。割込みは、たとえば、受取り側プロセッサに対するサービスの要求、エラー条件の報告、または装置間の単なる情報の伝達のために使用される。単一プロセッサ・コンピュータ・システムでは、すべての割込みが単一のプロセッサで処理されるため、割込みのサポートは比較的単純である。しかし、マルチプロセッサ・コンピュータ・システムでは、何らかの機構を使用して、割込みを処理のために特定の１つまたは複数のプロセッサまで経路指定しなければならないため、複雑さの度合いが増す。
【０００３】
従来の対称マルチプロセッサ（ＳＭＰ）コンピュータ・システムでは、割込みはハードウェアとソフトウェアの両方の機構を使用して、様々な方法で処理されてきた。ＳＭＰコンピュータ・システムは、一般には、グローバル割込みコントローラを使用して、割込みの優先順位と、各プロセッサによって実行されているプロセスがある場合にはそのプロセスの優先順位とに基づいて、割込み処理を行うプロセッサを選択する。したがって、割込みコントローラは割込みの優先順位を、プロセッサによって実行中のプロセスの優先順位と比較し、その割込みよりも低い優先順位を有するプロセスを実行しているプロセッサを処理側（ｓｅｒｖｉｃｉｎｇ）プロセッサとして選択する。ＳＭＰにおけるプロセッサは比較的緊密に結合されているため、プロセス優先順位と処理側プロセッサへの割込みの経路指定の判断は、共用システム相互接続または専用の割込み線を使用して容易に行うことができる。
【０００４】
【発明が解決しようとする課題】
最近、ノン・ユニフォーム・メモリ・アクセス（ｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ（不均等メモリ・アクセス）：ＮＵＭＡ）と呼ばれるマルチプロセッサ・コンピュータ・システム・トポロジが登場している。典型的なＮＵＭＡコンピュータ・システムとしては、各マルチプロセッサ・ノードがローカル・システム・メモリを有するいくつかのマルチプロセッサ・ノードが結合された高待ち時間ノード相互接続がある。ＮＵＭＡコンピュータ・システムにおける複数プロセッサは密結合されていないため、従来のＳＭＰ割込みサービスおよび伝達機構はＮＵＭＡコンピュータ・システムでは直接適用することができない。したがって明らかなように、割込みの経路指定および伝達のための効率的な機構を備える、ＮＵＭＡコンピュータ・システムにおける割込み処理機構が必要である。
【０００５】
【課題を解決するための手段】
ノン・ユニフォーム・メモリ・アクセス（ＮＵＭＡ）コンピュータ・システムは、ノード相互接続によって結合された少なくとも２つのノードを含み、それらのノードのうちの少なくとも１つのノードが割込みを処理するプロセッサを含む。本発明によると、ＮＵＭＡコンピュータ・システムの割込みアーキテクチャは、ハードウェア構成要素とソフトウェア構成要素の両方を含み、ＮＵＭＡコンピュータ・システムをいくつかの外部割込みドメインに区分化し、それによって外部割込みが常に、その割込みが発生した外部割込みドメイン内のプロセッサに渡されるようにする。このような各外部割込みドメインは典型的には１つのノードしか含まないが、割込みチャネリングまたは割込みファネリング（ｆｕｎｎｅｌｉｎｇ）を実施し、外部割込みをノード境界を超えてプロセッサに渡すことができる。
【０００６】
プロセッサに渡された後は、システム内の任意のプロセッサで割込み処理ソフトウェアが実行され、その外部割込みを処理する。本発明の割込みアーキテクチャは、割込みハンドラ・ポーリング連鎖（ツリー）のサイズを従来技術の方法より小さくすることによって、割込み処理ソフトウェアが外部割込みを迅速に処理することができるようにするので有利である。
【０００７】
本発明の割込みアーキテクチャは、外部割込みに加えて、プロセッサがそのプロセッサ自体に割り込んだり、ＮＵＭＡコンピュータ・システム内の１つまたは複数の他のプロセッサに割り込むことができるプロセッサ間割込み（ＩＰＩ）をサポートする。ＩＰＩは、グローバル・システム・メモリ内のメモリ・マップ・レジスタに書き込むことによってトリガされる。グローバル・システム・メモリは、ノード境界を超えたＩＰＩの送信を容易にし、割込み先のプロセッサを含む各ノードに１つの書込みトランザクションを送るだけでマルチキャストＩＰＩのトリガを可能にする。
【０００８】
本発明の割込みアーキテクチャは、数個のノードを含む小規模なＮＵＭＡコンピュータ・システムから数百個のノードを含む大規模なシステムまでのスケールに十分に適応する。各ノード内の割込みハードウェアは、スケーラビリティをもたせるために分散もされ、その場合、ハードウェア構成要素は共用伝達経路（すなわちローカル・バスと相互接続線）を介して伝送される割込みトランザクションを介して連絡する。
【０００９】
【発明の実施の形態】
１．０  ＮＵＭＡコンピュータ・システムの概要
図面、特に図１を参照すると、本発明によるＮＵＭＡコンピュータ・システムの例示の実施形態例が図示されている。図の実施形態は、たとえばワークステーション、サーバ、またはメインフレーム・コンピュータとして実現可能である。図のように、ＮＵＭＡコンピュータ・システム６は、ノード相互接続２２によって相互接続された複数（Ｎ≧２）個の処理ノード８ａ〜８ｎを含む。処理ノード８ａ〜８ｎは、それぞれＭ（Ｍ≧０）個のプロセッサ１０を含む。プロセッサ１０ａ〜１０ｍは、処理ノード内にある場合、同一であることが好ましく、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ（ＩＢＭ）コーポレイションから市販されているＰｏｗｅｒＰＣ（商標）プロセッサ系列内のプロセッサを含むことができる。レジスタと、プログラム命令を実行するために使用される命令フロー論理および実行ユニット（まとめてプロセッサ・コア１２として示す）に加えて、各プロセッサ１０ａ〜１０ｍは、それに付随するプロセッサ・コア１２にシステム・メモリ１８からデータをステージングするために使用されるオンチップ・キャッシュ階層１４も含む。各キャッシュ階層１４は、たとえば、それぞれ８〜３２キロバイト（ｋＢ）と１〜１６メガバイト（ＭＢ）の記憶容量を有するレベル１（Ｌ１）キャッシュとレベル２（Ｌ２）キャッシュを含む。各システム・メモリ１８に記憶されているデータは、ＮＵＭＡコンピュータ・システム６内のいずれのプロセッサ１０からでも要求、アクセス、変更することができるため、ＮＵＭＡコンピュータ・システム６はキャッシュ・コヒーレンシ・プロトコル（たとえばＭｏｄｉｆｉｅｄ，  Ｅｘｃｌｕｓｉｖｅ，  Ｓｈａｒｅｄ，  Ｉｎｖａｌｉｄ（ＭＥＳＩ）またはその変形）を実施して、同じ処理ノード内のキャッシュ間と異なる処理ノード内のキャッシュ間の両方のコヒーレンシを維持することが好ましい。
【００１０】
図のように、処理ノード８ａ〜８ｎはさらに、ローカル相互接続１６とノード相互接続２２との間に結合されたそれぞれのノード・コントローラ２０を含む。各ノード・コントローラ２０は、少なくとも２つの機能を実行することによってリモート処理ノード８のローカル・エージェントの役割を果たす。第１に、各ノード・コントローラ２０は、それに関連付けられたローカル相互接続１６をスヌープし、リモート処理ノード８へのローカル伝達トランザクションの送信を容易にする。第２に、各ノード・コントローラ２０は、ノード相互接続２２上の伝達トランザクションをスヌープし、付随するローカル相互接続１６上の関連する伝達トランザクションを統制する。各ローカル相互接続１６上の通信は、アービタ２４によって制御される。アービタ２４は、プロセッサ１０によって生成されたバス要求信号に基づいてローカル相互接続１６へのアクセスを規制し、ローカル相互接続１６上のスヌープされている伝達トランザクションのためにコヒーレンシ応答を編成する。
【００１１】
ＮＵＭＡコンピュータ・システム６の各システム・メモリ１８へのアクセスは、それぞれのメモリ・コントローラ（ＭＣ）１７によって規制される。プロセッサ１０ａ〜１０ｍ、ノード・コントローラ２０、およびその処理ノード８内のその他の装置によって生成された読み書き要求を受け取って処理する回路に加えて、各メモリ・コントローラ１７は割込み先ユニット（ＩＤＵ）１９を含む。割込み先ユニット１９は、後述するように、割込みの経路指定と処理を容易にする複数のレジスタおよびそれに付随する論理回路を含む。
【００１２】
ローカル相互接続１６は、メザニン・バス・ブリッジ２６を介してメザニン・バス３０に結合され、メザニン・バス３０は、たとえば周辺装置相互接続（ＰＣＩ）ローカル・バスとして実施可能である。メザニン・バス・ブリッジ２６は、プロセッサ１０がそれを介してバス・メモリまたは入出力アドレス空間あるいはその両方にマップされている入出力装置３２および記憶装置３４のうちの装置に直接アクセスすることができる低待ち時間経路と、入出力装置３２と記憶装置３４がそれを介してシステム・メモリ１８にアクセスすることができる高帯域幅経路の両方の経路を提供する。入出力装置３２には、たとえば、表示装置、キーボード、グラフィカル・ポインタ、外部ネットワークまたは接続装置と接続するためのシリアル・ポートおよびパラレル・ポートが含まれる。一方、記憶装置３４には、オペレーティング・システムおよびアプリケーション・ソフトウェアの不揮発性記憶域となる光ディスクまたは磁気ディスクを含めることができる。
【００１３】
入出力装置３２と記憶装置３４（およびＮＵＭＡコンピュータ・システム６のその他の非プロセッサ構成要素）は両方とも、割込み要求線３５を介して、入力値の受領の通知、エラー条件の報告など、任意の数の目的のために割込みを生成することができる。これらの割込み（割込みがプロセッサ１０以外の構成要素によって生成されたものであることを示すために、以下、外部割込みと呼ぶ）は、１つまたは複数の割込み元ユニット（ＩＳＵ）２８ａ、２８ｂによって収集される。わかりやすいように別々に図示されているが、ＩＳＵ２８ａと２８ｂは別法として、メザニン・バス・ブリッジ２６を形成するチップセット内に統合することもできる。後で詳述するように、ＩＳＵ２８は、外部割込みをＩＤＵ１９に経路指定し、ＩＤＵ１９は外部割込みおよびその他の割込みを処理のために割込み要求線３６を介してローカル・プロセッサ１０に渡す。
【００１４】
ローカル相互接続１６とノード相互接続２２は、それぞれ任意のバス・ベースのブロードキャスト構造体、スイッチ・ベースのブロードキャスト構造体、スイッチ・ベースの非ブロードキャスト構造体、またはバス・ベースとスイッチ・ベースの両方の構成要素を含むハイブリッド相互接続アーキテクチャを使用して実施可能である。使用する相互接続アーキテクチャに関係なく、ローカル相互接続１６とノード相互接続２２は、分割トランザクションをサポートすることが好ましい。分割トランザクションとは、伝達トランザクションのアドレス部分とデータ部分のタイミングが独立していることを意味する。各伝達トランザクションにどのアドレス期間およびデータ期間が属しているかを示すことができるように、組み合わさって１つのトランザクションを形成するアドレス・パケットとデータ・パケットの両方を、同じトランザクション・タグによってマークすることが好ましい。
【００１５】
各プロセッサ１０およびローカル相互接続１６に結合されたその他の各装置は、その装置が含まれている処理ノード８のノードＩＤと装置のローカルＩＤとを連結することによって形成されたシステム規模の装置ＩＤによって、ＮＵＭＡコンピュータ・システム６全体で固有に識別されることが好ましい。たとえば、最大４つのプロセッサ・ノード８があり、最大８つの装置を各ローカル相互接続１６に結合可能な一実施形態では、５ビットの装置ＩＤを使用し、上位２ビットをノードＩＤ、下位３ビットを装置のローカルＩＤに使用することができる。各ノードＩＤは、関連するノード・コントローラ２０内のレジスタで維持されることが好ましく、ローカルＩＤはローカル相互接続１６に接続された各装置内の装置識別レジスタで維持されることが好ましい。このような各システム規模の装置ＩＤは、関連する装置によって生成される各トランザクション・タグの上位ビット部分として使用することができ、それによってＮＵＭＡコンピュータ・システム６全体におけるトランザクション・タグの一意性が保証されるので有利である。
【００１６】
１．１  物理メモリ・マップ
次に図２を参照すると、各処理ノードがシステム・メモリ１８を含む４つの処理ノード８を有するＮＵＭＡコンピュータ・システム６の実施形態が使用することができる物理メモリ・マップの例が図示されている。図２に示す実施形態では、ＮＵＭＡコンピュータ・システム６内のすべての装置が、汎用記憶域５２とシステム制御および周辺装置域５４の両方を含む単一の１６ギガバイト（ＧＢ）の物理アドレス空間５０を共用する。汎用記憶域５２内の各物理アドレスは、システム・メモリ１８のうちの１つのシステム・メモリ１８内の１つの物理記憶場所のみに関連付けられている。したがって、汎用記憶域５２の内容全体は、ＮＵＭＡコンピュータ・システム６内のどのプロセッサ１０も遍くアクセスすることができ、すべてのシステム・メモリ１８間で区分化されているものと見ることができる。例示の実施形態では、汎用記憶域５２は、５００ＭＢのセグメントに分割され、４つの処理ノード８のそれぞれに４つ目ごとのセグメントが割り振られる。システム・メモリ１８に特定のデータを記憶する処理ノード８は、そのデータのホーム・ノードであると言える。逆に、処理ノード８ａ〜８ｎのうちの他のノードは、その特定のデータに関してはリモート・ノードであると言える。
【００１７】
さらに図２を参照すると、図の実施形態では２ＧＢの物理アドレスを保持するシステム制御および周辺装置域５４は、２５６ＭＢのシステム制御域５６と、０．５ＧＢの周辺入出力スペース５８と、１ＧＢの周辺記憶スペース６０と、初期プログラム・ロード（ＩＰＬ）域６２とを含む。ＩＰＬ域６２には、典型的には読取り専用メモリ（ＲＯＭ）に記憶される最大２５６ＭＢのＩＰＬ（すなわちブート）コードに割り当てるために予約されたアドレスが入れられる。ＩＰＬコードには、ＩＢＭコーポレイションから入手可能な拡張対話式エグゼクティブ（ＡＩＸ）などのオペレーティング・システムのローダが含まれる。図のように、周辺入出力スペース５８内の０．５ＧＢは、等しいサイズのセグメント６２に分割され、各セグメントが処理ノード８のうちのそれぞれ１つの処理ノードに割り振られている。周辺記憶スペース６０も同様に等しいサイズの２５６ＭＢのセグメント６６に区分化され、各セグメントが特定の処理ノード８に割り振られている。
【００１８】
周辺入出力スペース５８および周辺記憶スペース６０と同様に、システム制御域５６内の物理記憶スペースは複数のセグメント７０を含み、各セグメント７０にそれぞれの処理ノード８が関連付けられている。図の実施形態では、各セグメント７０は６４ＭＢのアドレス空間を含む。その他の１ノード単位の制御情報を記憶するためのアドレスに加えて、各システム制御域セグメント７０は、関連するノード８におけるＩＤＵ１９およびＩＳＵ２８内の割込みレジスタに割り当てられた物理アドレスを含む。後で詳述するように、本発明が外部割込みの受領と経路指定、プロセッサ間割込みの呼び出し、および処理ノード８間の割込みの経路指定に使用するのはこれらのメモリ・マップ・レジスタである。
【００１９】
２．０  割込みアーキテクチャの概要
本発明の割込みアーキテクチャは、少なくとも３つの明確に区別されるクラスの割込みを備える。第１に、プロセッサの内部動作によってトリガされる内部割込みがある。内部割込みは、たとえばプログラム例外や内部プロセッサ・レジスタのオーバーフロー／アンダーフローによってトリガされる。第２に、前述のように、プロセッサの外部にある入出力装置やシステム・タイマなどの装置によって外部割込みが生成される。第３に、本発明は、第１のプロセッサによって第２のプロセッサに割り込むために生成される、プロセッサ間割込み（ＩＰＩ）もサポートする。
【００２０】
本発明の好ましい実施形態では、ＮＵＭＡ処理システム６は、ＯｐｅｎＰＩＣ（オープン・プロセッサ割込みコントローラ）標準に準拠したその拡張版である割込みアーキテクチャによって、外部割込みおよびＩＰＩのための割込みサポートを行う。ＯｐｅｎＰＩＣについては、たとえば「Ｏｐｅｎ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ  （ＰＩＣ）  Ｒｅｇｉｓｔｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｒｅｖｉｓｉｏｎ  １．２」（１９９５年１０月、Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ，Ｉｎｃ．とＣｙｒｉｘ，Ｉｎｃ．の共同出版）に記載されている。ＯｐｅｎＰＩＣ対応であることが好ましいが、本発明は、システム全体を通じて一意的なメモリ・マップ割込み制御レジスタを有するどのようなシステムにも適用可能である。
【００２１】
本発明の割込みアーキテクチャは、ハードウェアとソフトウェアの両方の構成要素を含み、それぞれについて以下に説明する。
【００２２】
２．１  割込みアーキテクチャ・ハードウェア
一般に、単一の割込みドメインを処理するグローバル割込みコントローラを使用する従来のＯｐｅｎＰＩＣおよびその他のＳＭＰ割込み実施態様とは異なり、ＮＵＭＡコンピュータ・システム６の各処理ノード８は、好ましくはそれ自体の外部割込みドメインを形成し、図１に示すように、各外部割込みドメインはそれ自体のそれぞれのＩＤＵ１９と１つまたは複数のＩＳＵ２８とを有する。ＩＳＵ２８は、割込み元のための割込みシステムとのインタフェースをとり、ＩＤＵ１９は割込みシステムとプロセッサ１０との間のインタフェースをとる。割込みの効率的な処理を促し、割込みドメイン間での割込みの伝達を最小限にするために、処理ノード８が割込みを処理するように構成されたプロセッサ１０を備えている場合は、ＩＳＵ２８が受け取った外部割込みは、ローカル相互接続１６（および実施態様によってはメザニン・バス３０）を介して送られる割込みパケットを使用して、同じ割込みドメイン（すなわち処理ノード８）内のＩＤＵ１９のみに伝達される。しかし、割込みドメイン間での、構成情報、プロセッサ間割込み、割込み肯定応答、割込み終結コマンド、およびその他の割込み関連情報の伝達は、ＩＤＵ１９内のメモリ・マップ・レジスタを介してサポートされ、それによって、各処理ノード８における割込み資源のシステム規模での使用が可能になる。
【００２３】
２．１．１  割込み元ユニット（ＩＳＵ）構成要素
次に、図３および図４を参照すると、各割込み元ユニット（ＩＳＵ）２８内の割込み元構成レジスタと割込み保留レジスタの実施形態例がそれぞれ図示されている。各ＩＳＵ２８は、１つの割込み元についてこのような割込み元構成レジスタ７２を少なくとも１つ含むことが好ましく、そのＩＳＵ２８によってサポートされているすべての割込み元のために１つの割込み保留レジスタ８２を含むことが好ましい。
【００２４】
まず図３を参照すると、各割込み元構成レジスタ７２は、関連する割込み元の割込みベクタを識別するベクタ・フィールド７３と、割込みベクタを識別する追加のビットを格納することができる割込みベクタ予約フィールド７４と、関連する割込み元によって生成された割込みの優先順位を示す優先順位フィールド７５とを含む。図の実施形態では、割込み優先順位は最低優先順位である０から最高優先順位である１５までの範囲である。割込み資源は、各割込みドメイン内で一意的であることが好ましい。したがって、各割込みドメインはレベル１割込みをただ１つだけ有することが好ましいが、ＮＵＭＡコンピュータ・システム６内で最大Ｎ個のレベル１割込みが存在することができる。当然ながら、従来技術の技法を使用して、単一の処理ノード８内の複数の割込み元が同じ割込みレベルを共用するように、割込み共用を可能にすることもできる。
【００２５】
割込み元構成レジスタ７２は、さらに、２つの予約フィールド７６および７９と、割込み信号がエッジ・トリガであるかレベル・トリガであるかを示すセンス・ビット７７と、割込みがアクティブ・ロー（または負エッジ）であるかアクティブ・ハイ（正エッジ）であるかを示す極性ビット７８と、ベクタ・フィールド７３と極性フィールド７５が使用中で変更不可能であるかどうかを示すアクティビティ（ＡＣＴ）ビット８０と、関連する割込み元によって生成された割込みのＩＳＵ２８による受取りを可能／不能にするマスク（ＭＳＫ）フィールド８１とを含む。したがって、割込み要求線を介した特定の割込み元からの割込みの受取りに応答して、ＩＳＵ２８は適切な割込み元構成レジスタ７２を参照することによって割込み元の割込みが使用可能か否かと優先順位、その割込みに関連付けられた割込みベクタの識別子を判断することができる。
【００２６】
ＩＳＵ２８が外部割込みを受け取り、承認すると、ＩＳＵ２８は図４の保留レジスタ８２にビットを設定する。このビットは、その割込み元に固有に関連付けられており、割込み元が保留割込みを持っていることを示す。したがって、図４に示す実施形態では、各ＩＳＵ２８は最大１６個の割込み元に対応することができる。
【００２７】
２．１．２  割込み先ユニット（ＩＤＵ）構成要素
次に図５を参照すると、処理ノード８のメモリ・コントローラ１７内のＩＤＵ１９の詳細なブロック図が図示されている。ＩＤＵ１９の図示されている実施形態は、ＯｐｅｎＰＩＣ準拠であり、３つの別個のレジスタ・スペース、すなわち、グローバル・レジスタ９０と、プロセッサ単位レジスタ９２と、プロセッサ間割込み（ＩＰＩ）コマンド・レジスタ１３３とを含み、それぞれ、処理ノードのシステム制御域セグメント７０内の、グローバル構成レジスタ１０２で指定された基底アドレスからＯｐｅｎＰＩＣ定義オフセットにある位置に配置されている。アドレス指定を簡略化するために、基底アドレスと処理ノードのシステム制御域セグメント７０の先頭との間のオフセットはすべてのＩＤＵ１９について同じであることが好ましい。たとえば、４個の処理ノード８を含み、各処理ノードが４個のプロセッサ１０を含み、それらすべてのプロセッサが１６ＧＢの物理記憶スペースを共用するＮＵＭＡコンピュータ・システム６の例示の実施形態で、システム制御域５６がＡ３０．．Ａ６３  ０Ｅ０００００００ｈ〜０ＥＦＦＦＦＦＦＦｈにあって、０００００００００ｈ〜３ＦＦＦＦＦＦＦＦｈの範囲によってアドレス・ビット３０〜６３を定義するとする。ノード番号がｂ００〜ｂ１１の範囲で、処理ノード８に割り当てられたノード番号がＡ３６．．Ａ３７によって定義される場合、ノード番号ｂ０１を有する処理ノード８のシステム制御域セグメント７０は、Ａ３０．．Ａ６３  ０Ｅ４００００００ｈ〜０Ｅ４ＦＦＦＦＦＦｈに配置されることになる。すべてのシステム制御域セグメント７０内で、ＩＤＵ１９内のレジスタの基底アドレスは、０００Ｃ００００ｈなどの共通の任意のオフセットに配置される。したがって、ノード番号ｂ０１内のＩＤＵ１９のレジスタの基底アドレスは、０００Ｃ００００ｈに０Ｅ４００００００ｈを加算することによって求めることができ、０Ｅ４Ｃ０００００ｈとなる。次に、ノード番号ｂ０１のＩＤＵ１９内の個々のレジスタ・スペースおよびレジスタを、以下のように、ＯｐｅｎＰＩＣ定義オフセットを使用してアドレス指定することができる。
【表１】
0003606551.tif 000002
【００２８】
図５に示すように、各ＩＤＵ１９内のグローバル・レジスタ９０は、読み書き機能報告レジスタ１００と、読み書きグローバル構成レジスタ１０２と、読取り専用ベンダ識別レジスタ１０４と、（後述の）各ＩＰＩコマンド・ポートについて１つの読み書きプロセッサ間割込み（ＩＰＩ）ベクタ・レジスタ１０６と、読み書きスプリアス・ベクタ・レジスタ１０８と、読み書き初期設定レジスタ１１０とを含む。グローバル・レジスタ９０はＯｐｅｎＰＩＣ定義のものであり、以下の情報を含む。
機能報告レジスタ１００：処理ノードにおいてＩＰＬコードによって検出された割込み元の合計数と、その処理ノードのためにサポートされているプロセッサの合計数。
グローバル構成レジスタ１０２：処理ノードのグローバル・レジスタ・スペースの基底アドレス。
ベンダ識別レジスタ１０４：ＩＤＵ１９が搭載されている集積回路チップのベンダとリビジョン・レベルを識別する。
ＩＰＩベクタ・レジスタ１０６：処理ノード内のそれぞれのＩＰＩレジスタのベクタおよび優先順位情報。
スプリアス・ベクタ・レジスタ１０８：プロセッサから割込み肯定応答を受け取り、そのプロセッサのための保留割込みがないときに返されるベクタ。
プロセッサ初期設定レジスタ１１０：処理ノードでサポートされている各プロセッサのためのソフトウェア・リセット信号。
【００２９】
グローバル・レジスタ９０はＮＵＭＡコンピュータ・システム６内のすべてのプロセッサ１０によって共用されるため、ＡＩＸオペレーティング・システムのＰＡＬ層のソフトウェア割込みセットアップおよび処理ルーチンを使用して、すべての処理ノード８ａ〜８ｎ内のグローバル・レジスタ９０間の整合性が維持される。プロセッサ初期設定レジスタ１１０以外の書込みイネーブル・レジスタの更新は、プロセッサ１０がそのローカル相互接続１６上でＮ個の別々の書込みトランザクションを開始することによって行われる。ローカルＩＤＵ１９を対象とした書込みトランザクションは、ローカル・メモリ・コントローラ１７が受け取り、処理する。残りの書込みトランザクションは、ローカル・ノード・コントローラ２０によって他の処理ノード８のノード・コントローラ２０に転送され、それらのノード・コントローラ２０が、その書込みトランザクションをローカル相互接続１６を介して、関連するＩＤＵ１９に送る。グローバル・レジスタ９０へのアクセスは、グローバル・ソフトウェア・ロックによって規制され、一度に１つのプロセッサ１０だけがグローバル・レジスタ９０を更新するように保証される。古くなった設定値を使用した割込みが発行されるのを回避するため、グローバル・レジスタ９０の更新中、各処理ノード８でそれらの更新が行われるまですべての割込みはマスクされる。すべてのグローバル・レジスタ９０が同期化されているため、グローバル・レジスタ９０からの値のロードは、グローバル・レジスタ９０のローカル・コピーへの読み出しを行うだけで済む。
【００３０】
図５を参照すると、プロセッサ単位レジスタ９２は、処理ノード８がサポートすることができる各プロセッサ１０ごとに１個ずつ、Ｍ個のレジスタ・セット１２０を含む。プロセッサ単位レジスタ９２もＯｐｅｎＰＩＣ定義されたものであり、各レジスタ・セット１２０は読み書き現行タスク優先順位レジスタ１２２と、読取り専用割込み肯定応答レジスタ１２４と、読取り専用割込み終結（ＥＯＩ）レジスタ１２６とを含む。特定のプロセッサのレジスタ・セット１２０は、前述のように、グローバル構成レジスタ１０２に入っている基底アドレスと、プロセッサＩＤと、ＯｐｅｎＰＩＣアーキテクチャ・オフセットとを使用して探し出すことができる。プロセッサ単位レジスタ１２０は以下の機能を扱う。
現行タスク優先順位レジスタ１２２：処理中の割込みがない場合の現行タスクの相対タスク優先順位を示す。プロセッサに割込みを出すためには、割込み優先順位はそのプロセッサの現行タスク優先順位より高くなければならない。
割込み肯定応答レジスタ１２４：ソフトウェアが割込みに肯定応答するために読み取ると、ハードウェアが、関連するプロセッサのための保留割込みの割込みベクタを供給する。保留中の割込みがない場合、スプリアス割込みベクタが供給される。
割込み終結（ＥＯＩ）レジスタ１２６：ソフトウェアが、ＥＯＩコマンドを発行したプロセッサの最高処理中割込みに対してＥＯＩを発行するために書き込む。外部割込みのためのＥＯＩレジスタの書込みによって、メモリ・コントローラ１７がローカル相互接続１６上でＥＯＩ割込みトランザクションを発行する。
【００３１】
各ＩＤＵ１９内の三番目のレジスタ・スペースは、ＩＰＩ割込みの各レベルごとに１個のＩＰＩコマンド・レジスタを含むＩＰＩコマンド・レジスタ１３３のセットであり、ＯｐｅｎＰＩＣ準拠システムではＩＰＩコマンド・レジスタは４個である。各ＩＰＩコマンド・レジスタ１３３は、少なくともＭビットを含み、各ビット位置はＭ個のローカル・プロセッサ１０のうちの１つのローカル・プロセッサのプロセッサＩＤに対応する。したがって、ＩＰＩコマンド・レジスタ１３３内の特定のビット位置にｂ「１」を書き込むと、後で詳述するように、適切なレベルのＩＰＩが指定されたプロセッサ１０に対して発行される。ＮセットのＩＰＩコマンド・レジスタ１３３の状況は、割込み処理ソフトウェアによって汎用記憶スペース内のＩＰＩコマンド・レジスタのマスタ・セットでまとめて維持される。たとえば、ある例示のＮＵＭＡコンピュータ・システム内の４つの処理ノード８のそれぞれが最大８個のプロセッサをサポートする場合、維持される４個のＩＰＩコマンド・レジスタのマスタ・セットはそれぞれ３２ビットを有することができ、ビット０〜７が処理ノード０のプロセッサ０〜７に対応し、ビット８〜１５が処理ノード１のプロセッサ０〜７に対応し、以下同様である。
【００３２】
上述のグローバル・レジスタ９０、プロセッサ単位レジスタ９２、およびＩＰＩコマンド・レジスタ１３３に加えて、各ＩＤＵ１９はグローバル・タイマ割込み元およびその他のＯｐｅｎＰＩＣ定義レジスタまたはその他のレジスタも含むことができる。
【００３３】
２．１．３  割込み元ユニット（ＩＳＵ）の動作
次に図６を参照すると、本発明によるＩＳＵ２８の動作を示す高水準論理フローチャートが図示されている。図のように、プロセスはＩＳＵ２８による入力の受領に応答してブロック１４０から始まり、その後、ブロック１４２に進む。この入力がバス（すなわち、ローカル相互接続１６またはメザニン・バス３０）から受け取った割込みパケットである場合、プロセスはブロック１５２に進み、これについては後述する。しかし、入力が外部割込み（すなわち、割込み元による割込み要求線のアサート）である場合、プロセスはブロック１４２からブロック１４４に進み、ＩＳＵ２８が適切な割込み元構成レジスタ７２にアクセスして割込みにレベルを割り当てる。次に、ＩＳＵ２８はブロック１４６で、割込み元構成レジスタ７２を参照して、受け取った外部割込みのレベルの割込みが現在マスクされているかどうかを判断する。前述のように、本発明の好ましい実施形態では、各処理ノード８内で所与のレベルの割込みが一度に最大１つアクティブである。受け取った外部割込みのレベルの割込みがマスクされている場合、ＩＳＵ２８は現時点ではそれ以上の処置を行わず、割込み元は割込み要求線３５をアサートし続けるか、または後で再度アサートしなければならない。次にプロセスはブロック１４２に戻る。しかし、ブロック１４６で、受け取った割込みのレベルの割込みがマスクされていないと判断された場合、ブロック１５０に示すように、ＩＳＵ２８はローカル相互接続１６（および場合によってはメザニン・バス８０）を介してローカルＩＤＵ１９に割込みパケットを発行し、割込みのレベルと割込みベクタを示す。さらに、ＩＳＵ２８は受け取った割込みのレベルの割込みをマスクする。次に、プロセスはブロック１５０から、前述したブロック１４２に戻る。したがって、後述するように割込みチャネリングが使用可能化されていない限り、外部割込みが発生した処理ノード８内のハードウェアによってすべての外部割込みがソフトウェアに渡される。
【００３４】
次にブロック１５２を参照すると、バス上の割込みパケットの受領に応答して、ＩＳＵ２８は、割込みパケットで指定されているレベルの割込みを保留にしているか否かを判断する。保留にしていない場合、割込みパケットは、異なるＩＳＵ２８によって処理されることになり、無視され、プロセスはブロック１４２に戻る。ブロック１５２で、ＩＳＵ２８が割込みパケットで指定された割込みレベルの割込みを保留にしていると判断された場合、プロセスはブロック１６０に進む。ブロック１６０では、ＩＳＵ２８が受け取ったバス割込みトランザクションがＥＯＩまたは取消割込みトランザクションであるか否かが判断される。肯定の場合、プロセスはブロック１６２に進み、ＩＳＵ２８はバス割込みトランザクションで指定されている割込みレベルの割込みのマスクをクリアする。プロセスは次に、前述したブロック１４２に戻る。
【００３５】
他方、ブロック１６０でＩＳＵ２８が、受け取ったバス割込みトランザクションがＥＯＩまたは取消割込みトランザクションではないと判断した場合、プロセスはブロック１７０に進み、バス割込みトランザクションが、指定されたレベルの割込みを後で再発行するようにＩＳＵ２８に要求する再発行トランザクションであるか否かが判断される。バス割込みパケットが再発行トランザクションまたはその他の定義された割込みパケットではない場合、プロセスはブロック１７２に進み、ＩＳＵ２８は適切なエラー処理機能を実行する。しかし、バス割込みトランザクションが再発行トランザクションである場合、プロセスはブロック１７４に進む。ブロック１７４で、ＩＳＵ２８は実施態様に依存した時間間隔（たとえば所定のクロック・サイクル数）だけ待ってから、ブロック１５０に示すようにその割込みパケットをＩＤＵ１９に再発行する。
【００３６】
２．１．４  割込み先ユニット（ＩＤＵ）の動作
次に図７を参照すると、入力を処理する際のＩＤＵ１９の動作を示す高水準論理フローチャートが図示されている。図のように、プロセスはＩＤＵ１９による入力の受領に応答してブロック１８０から始まり、その後、ブロック１８２に進む。ブロック１８２では、ＩＤＵ１９が、その入力がＩＳＵ２８によって発行された割込み要求パケットであるか否かを判断する。否定の場合、プロセスはブロック２００に進み、これについては後述する。しかし、ＩＤＵ１９が受け取った入力がＩＳＵ２８によって発行された割込み要求パケットである場合、プロセスはブロック１８４に進み、割込み要求パケットで指定されている割込みレベルが、（１）現在割込みを処理していないローカル処理ノード８内のいずれかのプロセッサ１０の現行タスク優先順位レジスタ１２２で指定されている優先レベルよりも高いか否か、または（２）プロセッサ１０の保留待ち行列１３０内の項目を獲得するのに十分なほど高いか否かが判断される。否定の場合、プロセスはブロック１８６に進む。ブロック１８６で、ＩＤＵ１９はローカル相互接続１６上で再発行割込みパケットを送り、そのパケットは図６に関して前述したようにＩＳＵ２８によって受け取られ、処理される。ブロック１８８に示すように、保留待ち行列１３０内の割込みのレベルが、新たに受け取った割込みよりも低く、保留待ち行列１３０が一杯の場合も、その新しい割込みを優先して保留割込みを保留待ち行列１３０から追い出すために、同様の再発行割込みパケットを送らなければならない。
【００３７】
ブロック１８４および１８８の後に、プロセスはブロック１９０に進み、ＩＤＵ１９は、ブロック１８４で割込みが待ち行列化されたプロセッサ１０の割込み要求線３６をアサートする。さらに、ブロック１９２に示すように、ＩＤＵ１９は、関連する現行タスク優先順位レジスタ１２２内で、その割込みのレベルの保留フラグを設定し、割り込まれたプロセッサのアクティブ・フラグを設定する。次にプロセスは前述したブロック１８２に戻る。
【００３８】
ブロック１８２に戻って、ＩＤＵ１９が受け取った入力が割込み要求パケットでない場合、ＩＤＵ１９は、ブロック２００で、受け取った入力トランザクションが、割込みの受領に肯定応答するためにローカル・プロセッサ１０によってローカル相互接続１６上で送られた割込み肯定応答（ＡＣＫ）トランザクションであるか否かを判断する。否定の場合、プロセスは後述するブロック２２０に進む。しかし、ＩＤＵ１９が受け取った入力が割込み肯定応答トランザクションである場合、プロセスはブロック２０２に進み、ＩＤＵ１９は割込み要求線３６のアサートを解除し、少なくとも割込みレベルをサービス待ち行列項目に入れることによって、保留待ち行列１３０から保留割込みをプロセッサのサービス待ち行列１３２に進める。ブロック２０４に示すように、ＩＤＵ１９は次に、その割込みレベルと割込みベクタを含む割り込みトランザクションをローカル相互接続１６を介して処理側プロセッサ１０に送る。送信側プロセッサ１０の保留割込みがない場合に何らかの理由で割込みＡＣＫトランザクションがＩＤＵ１９によって受け取られる場合、スプリアス・ベクタ・レジスタ１０８に入っているスプリアス割込みベクタがプロセッサ１０に供給される。次にプロセスはブロック１８２に戻る。
【００３９】
割込みの処理の後、図７に示すように、プロセスがブロック１８２からブロック２００、ブロック２２０に進み、次にブロック２２２に進むことによって、処理側プロセッサ１０はＩＤＵ１９に対して割り込み終結（ＥＯＩ）書込みトランザクションを発行する。ブロック２２２で、ＩＤＵ１９はＥＯＩ書込みトランザクションに含まれている割込みのレベルの保留フラグをクリアする。ブロック２２８に示すように、ＩＤＵ１９は、ローカル相互接続１６にＥＯＩトランザクションを発行し、図６のブロック１６０および１６２に関して前述したように、割込み元ＩＳＵ２８の保留レジスタ８２内の割込みのために設定されているビットもクリアする。ブロック２２４に示すように、割り込まれたプロセッサ１０の保留待ち行列１３０内に他の割込みがある場合、プロセスは前述のブロック１９０に進むことによって、その待ち行列化された割込みをプロセッサ１０に通知する。あるいは、割り込まれたプロセッサ１０について保留になっている割込みがそれ以上ない場合、ＩＤＵ１９は、ブロック２２６に示すようにＩＤＵ１９で割り込まれたプロセッサ１０のアクティブ・フラグをクリアする。その後、プロセスはブロック１８２に戻る。
【００４０】
図８を参照すると、ＩＤＵ１９が受け取った入力トランザクションが、割込み要求でも、ＡＣＫトランザクション、ＥＯＩトランザクションでもない場合、ＩＤＵ１９は、ブロック２４０で、入力トランザクションがＩＰＩコマンド・レジスタ１３３を対象とした書込みトランザクションであるか否かを判断する。否定の場合、プロセスはブロック２６０〜２６４に進み、受け取った入力が有効であれば、ＩＤＵ１９は他の処理を行い、無効の場合には適切なエラー回復活動を行う。しかし、受け取った入力がＩＰＩコマンド・レジスタ１３３を対象とした書込みトランザクションである場合は、ＩＳＵ１９はその入力がＩＰＩのトリガであると認める。
【００４１】
前述の外部割込みとは異なり、ＩＰＩはＮＵＭＡコンピュータ・システム６内のプロセッサ１０が生成することができ、そのプロセッサ自体や、ＮＵＭＡコンピュータ・システム６内の１つまたは複数の他のプロセッサ１０を対象とすることができる。このようなＩＰＩは典型的には、異なるプロセッサ１０で実行されているプロセス間でメッセージを非同期で受け渡しするために使用される。ＩＰＩがサポートされるためには、システム始動時に実行されるセットアップ・ソフトウェアが、まず、サポートされる４つのＩＰＩの各ＩＰＩのレベルを初期設定する。次に、ＮＵＭＡコンピュータ・システム６の動作中に、発信元プロセッサ１０が１つまたは複数の宛先プロセッサ１０をメッセージの受信側として選択し、各宛先プロセッサ１０のしきい値ＩＰＩレベルがそのプロセッサの現行タスク優先順位レジスタ１２２で示される。発信元プロセッサ１０は、各宛先プロセッサ１０の構成情報としきい値ＩＰＩレベルを参照して、選択した宛先プロセッサ１０に割り込むためにどのようなＩＰＩ割込みを使用するかを判断する。次に、発信元プロセッサ１０は、選択されたＩＰＩに関連付けられたＩＰＩベクタ・レジスタ１０６を使用してアクセスすることができる共用記憶場所にメッセージを記憶する。最後に、発信元プロセッサ１０は、宛先プロセッサ１０を含む各処理ノード８に書込みトランザクションを発行する。その際、このような各書込みトランザクションは適切なＩＰＩコマンド・レジスタ１３３に宛てられる。
【００４２】
前述のように、図８のブロック２４０でＩＤＵ１９がデコードするのはこの書込みトランザクションである。ブロック２４０から、プロセスはブロック２４２に進み、ＩＤＵ１９は宛先ＩＰＩコマンド・レジスタ１３３にどのような優先順位（レベル）が関連付けられているかを判断し、どのようなローカル・プロセッサ１０がそのレベルの割込みを受け入れるかを、たとえばＩＰＩベクタ・レジスタ１０６を参照することによって判断する。ローカル宛先プロセッサ１０が判断されると、ブロック２４４および２４６に示すように、ＩＤＵ１９は宛先プロセッサ１０の割込み要求線をアサートし、ＩＰＩの割込みレベルの保留フラグを設定し、宛先プロセッサ１０のアクティブ・フラグを設定する。その後、プロセスはブロック１８２に戻る。
【００４３】
２．１．５  割込みチャネリング
ＮＵＭＡコンピュータ・システム６の用途によっては、システム・メモリ１８、入出力装置３２、または記憶装置３４などの特定の資源を、ＮＵＭＡコンピュータ・システム６の処理資源を増やさずに増強することが有利な場合がある。そのような場合、プロセッサ１０を含まない１つまたは複数のノード８を組み込むことが望ましい。しかし、ＮＵＭＡコンピュータ・システム６を前述のようにノード単位の割込みドメインに区分化したことを考えると、無プロセッサ・ノード８内の割込み元によって生成された外部割込みを処理する何らかの機構が必要である。本発明の好ましい実施形態によると、無プロセッサ・ノード８によって生成された外部割込みの処理は、割込みチャネリングによって実現される。
【００４４】
割込みチャネリングを行うために、ローカルＩＤＵ１９（ある場合）を使用不能にし、各無プロセッサ・ノード８のノード・コントローラ２０を転送モードにする。この転送モードでは、無プロセッサ・ノード８のノード・コントローラ２０が、ローカルＩＳＵ２８によって発信された割込みパケットを受け入れ、その割込みパケットを、少なくとも１つのプロセッサ１０と１つのＩＤＵ１９とを含む指定された「フォスター（養親）（ｆｏｓｔｅｒ）」ノード８に転送する。この転送モードは、たとえばシステム始動時に構成ソフトウェアによって書き込まれる、無プロセッサ・ノードのシステム制御域セグメント７０内のモード・レジスタによって制御することができる。この場合、このモード・レジスタにはモード制御ビットとフォスター（養親）ノード識別子とが入れられる。
【００４５】
ノード相互接続２２を介して転送される割込みトランザクションの受領に応答して、フォスター（養親）ノード８のノード・コントローラ２０はそのローカル相互接続１６で割込みトランザクションを実行する。次に、フォスター（養親）ノード８のＩＤＵ１９がその割込みパケットを要求し、前述のようにその割込みを処理のためにローカル・プロセッサ１０に渡す。フォスター（養親）ノード８のＩＤＵ１９によって生成された割込みパケットは、無プロセッサ・ノード８の発信元ＩＳＵ２８にも送られる。したがって、割込みチャネリングを使用して、リモート無プロセッサ・ノード８の割込み元とＩＳＵが、指定されたフォスター（養親）ノード８の割込みドメイン内に含められ、外部割込みが、フォスター（養親）ノード８で生成された外部割込みの処理に使用されるのと同じタイプの割込みトランザクションを使用して処理される。ノード相互接続２２のポイント・ツー・ポイント伝達機能を使用することによって、ドメインの独立性を破ることなく複数の「フォスター（養親）ノード」−「子ノード」関係が同時に存在することができるので有利である。
【００４６】
システム始動時の割込みチャネリングという特殊な場合を、割込みファネリングと呼ぶ。割込みファネリングでは、ＮＵＭＡコンピュータ・システム内のすべての外部割込みが一時的に、最初に構成されるマスタ・プロセッサに宛てて送られる。残りのプロセッサが構成され、したがって割込みを処理することができるようになった後、割込みドメインの区分化が行われる。
【００４７】
２．２  割込みソフトウェア
次に、図９を参照すると、本発明による割込み資源を構成する構成ルーチンの一部を図示した高水準論理フローチャートが示されている。図のように、図９に示す構成ルーチンのこの部分は、好ましくは初期電源投入自己検査（ＰＯＳＴ）およびその他の低レベル・ハードウェア初期設定コードが実行された後に、ブロック３００から始まり、ブロック３０２に進む。ブロック３０２では、構成ルーチンが、ＮＵＭＡコンピュータ・システム６のどのノード８に外部割込みを生成することができる装置が含まれているかを識別する。次に、ブロック３０４で、構成ルーチンは、外部割込みを生成することができる各装置に問い合わせて、そのような各装置が使用したい割込みのレベルを判断する。構成ルーチンは、装置間に競合があればそれを解決して、各装置の割込みにレベルを割り当てる。プロセスはブロック３０４からブロック３１０に進み、構成ルーチンは、それぞれの割込みレベルごとに、その割込みレベルの外部割込みを生成することができるすべての装置と各装置のノードＩＤと、各装置のレジスタの物理アドレスとをリストするデータ構造を、汎用メモリ内に作成する。実施態様固有の詳細に応じて、割込みの処理に有用なその他情報も各データ構造内に記憶可能である。
【００４８】
次に、ブロック３１２〜３３４に示すように、構成ルーチンは各ノード８内のハードウェアを構成する。ブロック３１２で構成ルーチンがノード８を選択した後、構成ルーチンは選択したノード８にプロセッサ１０が含まれているか否かを判断する。含まれていない場合、構成ルーチンは、ブロック３３０に示すように、選択したノード８内のＩＤＵ１９を使用不能にすることによって割込みチャネリングを行い、たとえばメモリ・マップ・レジスタに値を書き込むことによって、ＩＳＵ２８とノード・コントローラ２０を適切に構成する。前述のように、ノード・コントローラ２０の構成には、転送モード・レジスタ内の転送モード・ビットの設定とフォスター（養親）ノード８の指定が含まれる。さらに、構成レジスタは、選択したノード８のノードＩＤを、ノード・コントローラ２０内のノードＩＤレジスタに書き込むことが好ましい。次にプロセスはブロック３３４に進み、構成ルーチンは、構成すべき他のノード８が残っているか否かを判断する。構成すべき他のノードがまだ残っている場合、プロセスはブロック３１２に戻り、構成レジスタは次に処理するノード８を選択する。
【００４９】
再びブロック３２０を参照して、構成ルーチンが、ブロック３１２で選択したノード８にプロセッサ１０が含まれていると判断した場合、プロセスはブロック３２２に進む。ブロック３２２で、構成ルーチンは、選択したノード８内のプロセッサ１０、ＩＤＵ１９、ＩＳＵ２８、およびノード・コントローラ２０を構成する。図のように、この構成には、ノード・コントローラ２０内のノードＩＤレジスタへのノードＩＤの書込みと、内部プロセッサＩＤレジスタへの各プロセッサ自体のＩＤの書込みが含まれることが好ましい。次に、プロセスはブロック３３４に進み、処理すべきノード８が他に残っている場合は、ブロック３３６で他のセットアップと構成の活動を続ける。
【００５０】
次に図１０を参照すると、第１レベル割込みハンドラ（ＦＬＩＨ）ソフトウェアがＩＤＵ１９によってプロセッサ１０に渡された割込みの処理を促す方式を示す、高水準論理フローチャートが図示されている。図のように、このプロセスは、図７および図８に関して前述したＩＤＵ１９による割込み要求先のアサートに応答してブロック４００から始まる。プロセッサ１０は、割込み要求線のアサートに応答して、例外を受け取り、ブロック４０２から始まる第１レベル割込みハンドラにジャンプする。ブロック４０２で、プロセッサ１０はＦＬＩＨの制御下で動作し、処理する割込みの割込みレベルと割込みベクタを入手するために、割込み肯定応答（ＡＣＫ）トランザクションをＩＤＵ１９に送る。ＦＬＩＨは、ブロック４０３で、割込みがＩＰＩか外部割込みかも判断する。割込みがＩＰＩの場合、プロセスはブロック４０５に進み、処理側プロセッサ１０が、指定されたＩＰＩレベルのための共用記憶場所から割込み側プロセッサ１０からのメッセージを読み取る。次にプロセスはブロック４１０に進み、これについては後述する。
【００５１】
ブロック４０３に戻り、プロセッサ１０に渡された割込みが外部割込みであるとの判断に応答して、プロセスはブロック４０４に進む。ブロック４０４で、ＦＬＩＨは、実施態様により必要であれば割込みをＩＤＵ１９からマスクし、割込みの処理に必要な占有割込み資源のソフトウェア・ロックを獲得する。次に、ＦＬＩＨは、ブロック４０６に示すように、割込みレベルとその割込みレベルに関連付けられたデータ構造を指すポインタとを、第２レベル割込みハンドラ（ＳＬＩＨ）に渡す。
【００５２】
当業者ならわかるように、ＳＬＩＨは特定の装置によって生成された割込みを処理する割込み処理ルーチンである。複数の割込み元が同じレベルの割込みを生成することがあるため、このようなＳＬＩＨは典型的には互いに連鎖されてポーリング連鎖が形成され、それによって、ＳＬＩＨのポーリング連鎖が処理されると、連鎖内の各ＳＬＩＨがそれに関連付けられた装置（または複数の装置）をポーリングして、その装置が割込み元であるか否かを判断し、割込み元である場合はその割込みを処理するのに必要な操作を行う。本発明は、割込み処理待ち時間はポーリング連鎖の長さに大きく依存し、ポーリング連鎖の長さは、ＮＵＭＡコンピュータ・システム内の外部割込みのレベル数と割込みし得る割込み元の数とに依存することを認識している。したがって、ＮＵＭＡコンピュータ・システム６に外部割込みのレベルが１６しかなく、ＮＵＭＡコンピュータ・システム６内の可能な割込み元の数が多い場合、割込み処理待ち時間が長くなる。割込み処理待ち時間を短くするために、本発明は、１つまたは複数のノードで割込み元の候補としての装置をなくすことによってポーリング連鎖内のＳＬＩＨの数を少なくする。
【００５３】
第１の実施形態では、ポーリング連鎖内のＳＬＩＨの数は、ＦＬＩＨが、割込みを受け取るプロセッサ１０にとって既知である割込み発生元のノードＩＤを従来の割込みレベルと連結（またはその他の方法で結合）することによって形成されたノード固有の（またはスーパーセット）割込みレベルに割込みレベルをマッピングすることによって削減される。このような各ノード固有割込みレベルは、構成ルーチンによってメモリ内に作成された、関連する割込みデータ構造を持つことになる。このデータ構造は、その所与のレベルの外部割込みを生成することができる関連するノード（すなわち割込みドメイン）内の装置のみをリストする。したがって、ブロック４０６でポーリング連鎖の最初のＳＬＩＨに渡される割込みレベルは、ノード固有割込みレベルであり、ブロック４０６でＳＬＩＨに提供されるポインタはノード固有の割込みデータ構造を指すポインタであり、ポーリング連鎖は、ノード固有割込みデータ構造内にリストされた装置に関連付けられたＳＬＩＨのみを含むことになる。この第１の実施形態は、割込み処理資源をめぐって衝突せずに（または割込み処理資源のロックを獲得する必要なしに）、異なるノード８内のプロセッサ１０上で同じレベルの複数の割込みハンドラが並列して実行可能である点が有利であるが、ＦＬＩＨとＳＬＩＨがノード固有の割込みレベルを認識する必要がある。
【００５４】
あるいは、ポーリング連鎖内のＳＬＩＨの数は、第２の実施形態により削減することができる。第２の実施形態では、ＦＬＩＨ自体が割込みデータ構造のサブセットをＳＬＩＨに渡し、このサブセット割込みデータ構造には、外部割込みが渡されるプロセッサと同じノードＩＤを有する装置のみがリストされる。他のノードの装置が考慮の対象から除外され、ＳＬＩＨＳのポーリング・ツリーがより短くなる可能性が高い。この２つの実施形態のいずれも、前述の割込みチャネリングと併用することができ、その場合、割込みドメインのために構成ルーチンによって作成されるデータ構造には、フォスター（養親）ノードと子ノードの両方のノード内の装置が含まれることになる。
【００５５】
いずれにしても、ポーリング連鎖内の最初のＳＬＩＨに制御が渡されると、ブロック４０８に示すように、ＦＬＩＨは割込み処理が完了するのを待つ。重要なのは、割込みがＳＬＩＨのポーリング連鎖に渡されたら、オペレーティング・システムがそれらのＳＬＩＨをＮＵＭＡコンピュータ・システム６内のいずれかのプロセッサ１０上で実行されるようにスケジュールすることができることであり、負荷バランス、データ親和性、またはその他の基準に応じてＳＬＩＨが実行されるように、異なるプロセッサ１０を選択できることである。割込み元に関連付けられたＳＬＩＨが完了すると、制御はその割込みを元々受け取ったプロセッサ１０のＦＬＩＨに返され、ＦＬＩＨは、ブロック４１０に示し、図８のブロック２２０に関して説明したように、処理された割込みのレベルを示したＥＯＩトランザクションをＩＤＵ１９に発行する。その後、ＦＬＩＨはブロック４１２で終了する。
【００５６】
上述のように、本発明は、ＮＵＭＡコンピュータ・システムのための割込みアーキテクチャを提供する。この割込みアーキテクチャは、ハードウェアとソフトウェアの両方の構成要素を含み、ＮＵＭＡコンピュータ・システムを外部割込みドメインに区分化し、それによって外部割込みが常に、その割込みが発生した外部割込みドメイン内のプロセッサに渡されるようにする。このような各外部割込みドメインは典型的には単一のノードしか含まないが、割込みチャネリングまたは割込みファネリングを実施して、外部割込みをプロセッサに渡すためにノード境界を超えて経路指定することができる。プロセッサに渡された後は、ソフトウェアをシステム内のいずれかのプロセッサ上で実行してその外部割込みを処理する。本発明の割込みアーキテクチャは、従来技術の方法と比較して割込みハンドラ・ポーリング連鎖（ツリー）の大きさを縮小することによって、割込み処理ソフトウェアが外部割込みを迅速に処理できるようにするので有利である。本発明の割込みアーキテクチャは、外部割込みに加えて、いずれのプロセッサでもそのプロセッサ自体、あるいはシステム内の１つまたは複数の他のプロセッサに割り込むことができるようにするプロセッサ間割込み（ＩＰＩ）をサポートする。本発明は、メモリ・マップ・レジスタを使用してＩＰＩをトリガし、それによって、ノード境界を超えたＩＰＩの送信を容易にし、割込み先のプロセッサを含む各ノードに１つの書込みトランザクションを送るだけでマルチキャストＩＰＩのトリガを可能にする。重要なのは、本発明の割込みアーキテクチャは、数個のノードを含む小規模なＮＵＭＡコンピュータ・システムから数百個のノードを含む大規模なシステムまでのスケールに十分に適応することである。各ノード内の割込みハードウェアは、スケーラビリティをもたせるために分散もされ、その際、ハードウェア構成要素は共用伝達経路（すなわちローカル・バスと相互接続線）を介して伝送される割込みトランザクションを介して連絡する。
【００５７】
本発明について特に、好ましい実施形態を参照しながら示し、説明したが、当業者なら、本発明の主旨および精神から逸脱することなく本発明の態様および詳細に様々な変更を加えることができることがわかるであろう。たとえば、本発明についてＯｐｅｎＰＩＣ準拠の実施形態に関して説明したが、本発明はＯｐｅｎＰＩＣ準拠システムには限定されないものと理解されたい。さらに、本発明の態様について、本発明の方法を指示するソフトウェアを実行するコンピュータ・システムに関して説明したが、本発明は別法として、コンピュータ・システムと共に使用するコンピュータ・プログラム製品としても実施可能であるものと理解されたい。本発明の機能を定義するプログラムは、様々な信号伝達媒体を介してコンピュータ・システムに配布することができる。この信号伝達媒体には、書込み不能記憶媒体（たとえばＣＤ−ＲＯＭ）、書込み可能記憶媒体（たとえばフロッピィ・ディスケット、ハード・ディスク・ドライブ、ＥＥＰＲＯＭ）、およびコンピュータ・ネットワークや電話網などの通信媒体が含まれるが、これらには限定されない。したがって、このような信号伝達媒体は、本発明の機能を指示するコンピュータ可読命令を伝達またはコード化する場合、本発明の代替実施形態を表すものと理解すべきである。
【００５８】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００５９】
（１）各割込みドメインが、複数の相互接続された処理ノードのうちの少なくとも１つの処理ノードを含む複数の割込みドメインを含むデータ処理システムであって、
各割込みドメインが、外部割込みを受け取ることができる少なくとも１つのプロセッサと、外部割込みを生成することができる少なくとも１つの割込み元とを含み、
前記複数の割込みドメインのうちの各割込みドメインが、前記少なくとも１つの割込み元によって生成された外部割込みを受け取り、前記外部割込みを少なくとも１つのプロセッサに渡す割込みハードウェアを有し、
前記少なくとも１つのプロセッサが、前記少なくとも１つのプロセッサと同じ割込みドメイン内のプロセッサと、前記少なくとも１つのプロセッサとは異なる割込みドメイン内のプロセッサの両方のプロセッサに渡される割込みを処理することができる割込み処理ソフトウェアを実行する、データ処理システム。
（２）前記複数の割込みドメインの各割込みドメイン内の前記割込みハードウェアが、その割込みドメイン内のみのプロセッサに割込みを渡す割込み先ユニットと、割込み元から割込みを受け取る少なくとも１つの割込み元ユニットとを含む、上記（１）に記載のデータ処理システム。
（３）前記割込み先ユニットと前記割込み元ユニットが共用相互接続を介して割り込み情報を伝達する、上記（２）に記載のデータ処理システム。
（４）前記複数の割込みドメインのうちの少なくとも１つの割込みドメインのために、前記複数の相互接続された処理ノードのうちの異なる処理ノード内に少なくとも１つの割込み元ユニットと前記割込み先ユニットが配置された、上記（２）に記載のデータ処理システム。
（５）前記少なくとも１つの割込み元ユニットを含む前記複数の相互接続された処理ノードのうちの前記１つの処理ノードが、外部割込みを受け取るプロセッサを含まない、上記（４）に記載のデータ処理システム。
（６）前記複数の割込みドメインのうちの少なくとも１つの割込みドメインが複数の割込み元ユニットを含む、上記（２）に記載のデータ処理システム。
（７）各割込みドメイン内の前記割込みハードウェアが、割込みドメイン間で割込みを伝達するために使用されるグローバル・アクセス可能メモリ・マップ・レジスタを含む、上記（１）に記載のデータ処理システム。
（８）前記グローバル・アクセス可能メモリ・マップ・レジスタがプロセッサ間割込みを伝達するために使用される、上記（７）に記載のデータ処理システム。
（９）各前記割込みドメインの前記グローバル・アクセス可能メモリ・マップ・レジスタにそれぞれの物理アドレスが割り当てられ、各割込みドメインの前記グローバル・アクセス可能メモリ・マップ・レジスタの物理アドレスが、前記グローバル・アクセス可能メモリ・マップ・レジスタを含む処理ノードに割り振られた記憶域からの均一なオフセットを有する、上記（７）に記載のデータ処理システム。
（１０）データ処理システムにおいて外部割込みを処理する方法であって、
各割込みドメインが複数の相互接続された処理ノードのうちの少なくとも１つの処理ノードを含む複数の割込みドメインを確立するステップであって、各割込みドメインが、外部割込みを受け取ることができる少なくとも１つのプロセッサと、外部割込みを生成することができる少なくとも１つの割込み元とを含み、各前記複数の割込みドメインがそれぞれの割込みハードウェアを有するステップと、
前記複数の割込みドメインのうちの特定の割込みドメイン内で、前記割込みハードウェアにおける前記少なくとも１つの割込み元によって生成された外部割込みを受け取り、前記外部割込みを前記割込みハードウェアによって前記少なくとも１つのプロセッサに渡すステップと、
前記特定の割込みドメインの前記少なくとも１つのプロセッサを使用して、前記少なくとも１つのプロセッサに渡された前記外部割込みと、前記複数の割込みドメインのうちの前記特定の割込みドメインとは異なる１つの割込みドメイン内のプロセッサに渡された外部割込みとを処理することができる割込み処理ソフトウェアを実行するステップとを含む方法。
（１１）各前記複数の割込みドメイン内の前記割込みハードウェアが割込み先ユニットと少なくとも１つの割込み元ユニットとを含み、外部割込みを受け取るステップが、前記少なくとも１つの割込み元ユニットにおいて前記外部割込みを受け取るステップを含み、前記外部割込みを渡すステップが、前記外部割込みを前記割込み先ユニットを使用して前記少なくとも１つのプロセッサに渡すステップを含む、上記（１０）に記載の方法。
（１２）前記割込み先ユニットと前記割込み元ユニットとの間で共用相互接続を介して割り込み情報を伝達するステップをさらに含む、上記（１１）に記載の方法。
（１３）前記複数の割込みドメインのうちの少なくとも１つの割込みドメインのために、共用相互接続を介して割込み情報を伝達するステップが、前記複数の処理ノードのうちの少なくとも２つの処理ノードを相互接続する共用相互接続を介して割り込み情報を伝達するステップを含む、上記（１２）に記載の方法。
（１４）複数の割込みドメインを確立するステップが、前記複数の相互接続された処理ノードのうちの１つの処理ノードが少なくとも１つの割込み元ユニットを含み、外部割込みを受け取るプロセッサを含まない、少なくとも１つの割込みドメインを確立するステップを含む、上記（１３）に記載の方法。
（１５）複数の割込みドメインを確立するステップが、前記複数の割込みドメインのうちの、複数の割込み元ユニットを含む少なくとも１つの割込みドメインを確立するステップを含む、上記（１１）に記載の方法。
（１６）前記割込みハードウェア内のグローバル・アクセス可能メモリ・マップ・レジスタを使用して割込みドメイン間で割込みを伝達するステップをさらに含む、上記（１０）に記載の方法。
（１７）割込みドメイン間で割込みを伝達するステップが、割込みドメイン間でプロセッサ間割込みを伝達するステップを含む、上記（１６）に記載の方法。
（１８）各割込みドメインの前記グローバル・アクセス可能メモリ・マップ・レジスタの物理アドレスが前記グローバル・アクセス可能メモリ・マップ・レジスタを含む処理ノードに割り振られた記憶域からの均一なオフセットを有する、各前記割込みドメインの前記グローバル・アクセス可能メモリ・マップ・レジスタにそれぞれの物理アドレスを割り当てるステップをさらに含む、上記（１６）に記載の方法。
（１９）複数の相互接続されたノードを含み、各前記複数の相互接続されたノードが割込みを生成する装置を含み、複数のノード内の装置が同じレベルの割込みを生成することができるデータ処理システム内で割込みを処理する方法であって、
割込みを処理のためにプロセッサに渡すのに応答して、レベルを有する前記割込みが、前記レベルの割込みを生成することができる装置のリストを入手するステップと、
前記リスト内のどの装置が前記割込みを生成したかを特定するために、前記プロセッサと同じ割込みドメイン内に配置された前記リスト内の装置のみをポーリングするステップとを含む方法。
（２０）その後で、前記特定された装置に関連付けられた割込みハンドラを実行するステップをさらに含む、上記（１９）に記載の方法。
（２１）前記割込みの受渡しの前に、前記複数の相互接続されたノードのすべてのノードにとってアクセス可能なグローバル記憶スペースに前記リストを作成し、記憶するステップをさらに含む、上記（１９）に記載の方法。
（２２）前記リストが単一の割込みドメイン内の装置のみを含む、上記（２１）に記載の方法。
（２３）データ処理システムであって、
複数の相互接続されたノードの各ノードが割込みを生成する装置を含み、複数のノード内の装置が同じレベルの割込みを生成することができ、前記複数の相互接続されたノードのうちの少なくとも１つのノードがプロセッサを含む、複数の相互接続されたノードと、
レベルを有する割込みが前記プロセッサに渡されるのに応答して、前記レベルの割込みを生成することができる装置のリストを入手し、前記リスト内のどの装置が前記割込みを生成したかを特定するために前記リスト内の前記プロセッサと同じ割込みドメイン内に配置された装置のみをポーリングする、前記データ処理システム内に記憶され、前記プロセッサによって実行可能な割込みハンドラ・ソフトウェアとを含むデータ処理システム。
（２４）前記割込みハンドラ・ソフトウェアが第１のレベルの割込みハンドラであり、前記データ処理システムが、前記データ処理システム内に記憶され、前記プロセッサにより実行可能な第２のレベルの割込みハンドラをさらに含み、前記第２のレベルの割込みハンドラが前記装置に関連付けられ、前記第１のレベルの割込みハンドラが前記第２のレベルの割込みハンドラを呼び出して前記特定された装置にサービスを提供する、上記（２３）に記載のデータ処理システム。
（２５）前記複数の相互接続されたノードのすべてのノードにとってアクセス可能なグローバル記憶スペースをさらに含み、前記割込みの受渡しの前に前記リストが前記グローバル記憶スペースに記憶される、上記（２３）に記載のデータ処理システム。
（２６）前記リストが単一の割込みドメイン内の装置のみを含む、上記（２５）に記載のデータ処理システム。
（２７）複数の相互接続されたノードの各ノードが割込みを生成する装置を含み、複数のノード内の装置が同じレベルの割込みを生成することができ、前記複数の相互接続されたノードのうちの少なくとも１つのノードがプロセッサを含む、複数の相互接続ノードを含むデータ処理システムによって使用されるプログラム製品であって、
コンピュータ使用可能媒体と、
前記コンピュータ使用可能媒体内にコード化され、前記データ処理システムによって実行可能な割込みハンドラ・ソフトウェアであって、レベルを有する割込みが前記プロセッサに渡されるのに応答して、前記レベルの割込みを生成することができる装置のリストを入手し、前記リスト内のどの装置が前記割込みを生成したかを特定するために前記リスト内の前記プロセッサと同じ割込みドメイン内に配置された装置のみをポーリングする割込みハンドラ・ソフトウェアとを含む、プログラム製品。
（２８）前記割込みハンドラ・ソフトウェアが第１のレベルの割込みハンドラであり、前記プログラム製品が前記コンピュータ使用可能媒体内にコード化された第２のレベルの割込みハンドラをさらに含み、前記第２のレベルの割込みハンドラが前記装置に関連付けられ、前記第１のレベルの割込みハンドラが前記第２のレベルの割込みハンドラを呼び出して前記特定された装置にサービスを提供する、上記（２７）に記載のプログラム製品。
（２９）前記コンピュータ使用可能媒体を使用してコード化され、前記割込みの受渡しの前に前記複数のノードのすべてのノードにとってアクセス可能なグローバル記憶スペース内に前記リストを作成する構成ルーチンをさらに含む、上記（２７）に記載のプログラム製品。
（３０）前記構成ルーチンが、単一の割込みドメイン内の装置のみを前記リスト内に含める、上記（２９）に記載のプログラム製品。
【図面の簡単な説明】
【図１】本発明を有利に利用することができるようにするＮＵＭＡコンピュータ・システムの実施形態を示す図である。
【図２】図１に図示するＮＵＭＡコンピュータ・システムが使用することができる物理メモリ・マップの実施形態例を示す図である。
【図３】本発明による割込み元ユニット（ＩＳＵ）内の割込み元構成レジスタを示す図である。
【図４】本発明による割込み元ユニット（ＩＳＵ）内の保留割込みレジスタを示す図である。
【図５】本発明による割込み先ユニット（ＩＤＵ）を示すより詳細なブロック図である。
【図６】本発明によるＩＳＵの動作を示す高水準論理フローチャートである。
【図７】本発明によるＩＤＵの動作を示す高水準論理フローチャートである。
【図８】本発明によるＩＤＵの動作を示す高水準論理フローチャートである。
【図９】本発明による、割込み資源を構成する構成ルーチンの例示の実施形態を示す高水準論理フローチャートである。
【図１０】本発明による、第１レベル割込みハンドラ（ＦＬＩＨ）ソフトウェアの動作を示す高水準論理フローチャートである。
【符号の説明】
６  ＮＵＭＡコンピュータ・システム
８  処理ノード
１０  プロセッサ
１２  プロセッサ・コア
１４  キャッシュ階層
１６  ローカル相互接続
１７  メモリ・コントローラ
１８  システム・メモリ
１９  割込み先ユニット
２０  ノード・コントローラ
２２  ノード相互接続
２６  メザニン・バス・ブリッジ
２８  割込み元ユニット
３０  メザニン・バス
３２  入出力装置
３４  記憶装置
３５  割込み要求線
３６  割込み要求線
５０  物理アドレス空間
５２  汎用記憶域
５４  周辺装置域
５８  システム制御域
６０  周辺記憶スペース
７２  割込み元構成レジスタ
８２  割込み保留レジスタ
【図１】
0003606551.tif 000003
【図２】
0003606551.tif 000004
【図３】
0003606551.tif 000005
【図４】
0003606551.tif 000006
【図５】
0003606551.tif 000007
【図６】
0003606551.tif 000008
【図７】
0003606551.tif 000009
【図８】
0003606551.tif 000010
【図９】
0003606551.tif 000011
【図１０】
0003606551.tif 000012