(57)【特許請求の範囲】
【請求項１】
各スイッチが少なくとも１つのネットワークインタフェースコントローラ（ＮＩＣ）に通信的に結合した複数のスイッチに通信的に結合した複数のＣＰＵを含むマルチノードコンピュータシステムであって、複数のＣＰＵの各々が複数のスイッチの一つに接続されたマルチノードコンピュータシステムにおいて、プロセッサ入出力（ＰＩＯ）書き込みリファレンスを、ＣＰＵからこのＣＰＵに対してローカルであるスイッチに接続されたＮＩＣまでルーティングする方法であって、
アドレスとデータを含むＰＩＯ書き込みリファレンスを複数のスイッチの一つがそれに接続されたＣＰＵから受け取り、
ローカルＮＩＣエイリアスを指示するアドレスに応答して、そのアドレスに基いて、ＰＩＯ書き込みリファレンスを受け取ったスイッチに対してローカルであるＮＩＣのアドレスを含む修正アドレスを生成し、
ＰＩＯ書き込みリファレンスをこの修正アドレスに向けてルーティングするステップを具備する方法。
【請求項２】
前記アドレスが更にベースフィールドを含み、該ベースフィールドをＮＩＣベースレジスタと照合して前記ＮＩＣに対してＰＩＯ書き込みリファレンスがなされているかどうか決定するステップをさらに具備する請求項１に記載の方法。
【請求項３】
アドレスが更にスイッチＩＤ（ＳＷＩＤ）フィールドを包含し、修正アドレスを生成するステップは更に、
ＳＷＩＤフィールドの内容を、ローカルＮＩＣエイリアスを指示するものから、ＰＩＯ書き込みリファレンスを受け取ったスイッチに対してローカルであるＮＩＣを示すローカルＳＷＩＤへと置き換えることを含む請求項１に記載の方法。
【請求項４】
マルチノードコンピュータシステムであって、
各々が１つのアドレスを含むＰＩＯ書き込みリファレンスを発行する複数のＣＰＵと、
各々がＰＩＯ書き込みリファレンスをネットワークインタフェースコントローラ（ＮＩＣ）に向けてルーティングするために少なくとも１つのＣＰＵに通信的に結合した複数のスイッチと、
各々がＰＩＯ書き込みリファレンスをネットワーク上でルーティングするために複数のスイッチの少なくとも１つに通信的に結合した複数のＮＩＣと、
各々が複数のスイッチの１つに属する複数のエイリアスデコーダであって、各エイリアスデコーダが属するスイッチが受け取ったＰＩＯ書き込みリファレンスを該スイッチに対してローカルであるＮＩＣへルーティングするために、前記アドレスに基づきＰＩＯ書き込みリファレンスを受け取ったスイッチに対してローカルであるＮＩＣのアドレスを含む修正アドレスを生成するエイリアスデコーダとを具備するシステム。
【請求項５】
各々が複数のスイッチの１つに属し、ＰＩＯ書き込みリファレンスを修正アドレスに向けてルーティングする複数のアドレスデコーダをさらに具備する請求項４に記載のシステム。
【請求項６】
各スイッチが少なくとも１つのネットワークインタフェースコントローラ（ＮＩＣ）に通信的に結合した複数のスイッチに通信的に結合した複数のＣＰＵを含むマルチノードコンピュータシステムにおいて、プロセッサ入出力（ＰＩＯ）書き込みリファレンスをＣＰＵからこのＣＰＵに対してローカルであるスイッチに接続されたＮＩＣまでルーティングする方法であって、
ベースアドレスとスイッチＩＤ（ＳＷＩＤ）を含むアドレスを含むＰＩＯ書き込みリファレンスを、複数のスイッチの一つが、該スイッチに接続されたＣＰＵから受け取り、
ベースアドレスをＮＩＣベースレジスタと照合してＮＩＣに対してＰＩＯ書き込みリファレンスがなされているかどうか決定し、
ＰＩＯ書き込みリファレンスがＮＩＣに対してなされていることに応答して、ＳＷＩＤがローカルＮＩＣエイリアスを指示する指定値を有するかどうか決定し、
ＳＷＩＤがローカルＮＩＣエイリアスを指示する指定値を有することに応答して、ＳＷＩＤフィールドが有するローカルＮＩＣエイリアスを指示する指定値を、ＰＩＯ書き込みリファレンスをＣＰＵから受け取ったスイッチに接続されたＮＩＣを示すローカルＳＷＩＤと置き換えることによって、ＰＩＯ書き込みリファレンスを、ＣＰＵからこのＣＰＵに対してローカルであるスイッチに接続されたＮＩＣまでルーティングすることを可能にするステップを具備する方法。
【請求項７】
各ＰＩＯリファレンスがデータパケットを含み、ＮＩＣへのＰＩＯリファレンスが各々、ＮＩＣがその宛先へデータパケットを送るのに必要とされるすべての情報を含む請求項６に記載の方法。
【請求項８】
分散型マルチノードコンピュータシステムであって、
アドレスを含むプロセッサ入出力（ＰＩＯ）リファレンスを発行するためのプロセッサ手段と、
ＰＩＯリファレンスをプロセッサ手段から受け取ってネットワークインタフェースコントローラ（ＮＩＣ）に向けてルーティングするためのスイッチング手段と、
ＰＩＯリファレンスで使用されたアドレスを受け取り、その受け取ったアドレスに基づき、ＰＩＯ書き込みリファレンスをプロセッサ手段から直接受け取ったスイッチング手段に接続されたＮＩＣを指示する修正アドレスを生成することによってＰＩＯ書き込みリファレンスを発行したプロセッサ手段に対してローカルであるスイッチング手段に接続されたＮＩＣまでＰＩＯ書き込みリファレンスをルーティングすることを可能にするエイリアス復号手段とを具備するシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にマルチノードコンピュータシステムにおけるデータパケット伝送に関するもので、詳記するならば、データパケットをローカルネットワークインタフェースコントローラを経由してルーティングするシステムおよび方法に関するものである。
【０００２】
【従来の技術】
従来のオペレーティングシステム（ＯＳ）は、普通、これを実行するコンピュータシステムが対称型であることを前提として設計されている。Ｓｕｎ  ＵＥ１０００等の対称型マイクロプロセッサ（ＳＭＰ）では、プロセッサまたはメモリアドレスに関係なくプロセッサがメモリに一様にアクセスできる。同様に、どのプロセッサ上で動く入出力（Ｉ／Ｏ）ドライバも、システム内のどのＩ／Ｏデバイスにも一様にアクセスできる。
【０００３】
【発明が解決しようとする課題】
最新のコンピュータシステムの多くは真の対称型でない。代表的な例は、中央処理装置（ＣＰＵ）ノードとＩ／Ｏノードがスイッチに接続され、スイッチが高速ネットワーク経由で他のスイッチおよびノードに接続されたシステムということになろう。すべてのＣＰＵノードがすべてのＩ／Ｏノードにアクセスできるということであるから、このシステムは、従来のＯＳに要求される程度まで対称型である。ところが、ＣＰＵノードがＩ／Ｏノードにアクセスする速度は、ＣＰＵノードと同じスイッチに接続されたＩ／Ｏノードにアクセスするときの方が、別のスイッチに接続されたＩ／Ｏノードにアクセスするときより速い。従来のＯＳは、位置的に最も近い適当なリソースに自動的にアクセスするＣＰＵのコンセプト（“プロセッサ・アフィニティ”として知られている）をサポートしない。すなわち、ＣＰＵノード上を走るソフトウェアが、常にＣＰＵノードと同じスイッチに接続されたＩ／Ｏノードにアクセスするのを確実にしないということである。結果として、ＣＰＵノードによっては、そこから遠隔のネットワークインタフェースコントローラ（ＮＩＣ）にアクセスするのにシステムインタコネクトを横切らなければならない一方で、ローカルＮＩＣへのアクセスが使用できるようになる場合もある。これは、ネットワーク経由の伝送のための待ち時間が増し、システムインタコネクトにおいて帯域幅が無駄に使用される結果となる。
【０００４】
【課題を解決するための手段】
本発明は、インタコネクトを介して接続された複数の中央処理装置（ＣＰＵ）ノード、入出力（Ｉ／Ｏ）ノード、およびメモリノードを包含する分散型マルチノードコンピュータシステムを対象とする（図１に示す通り）。インタコネクトは更に、複数の相互に結合されたスイッチを包含する。各スイッチは、ＣＰＵノードとＩ／Ｏノードとメモリノードの間のデータパケットのルーティングを提供する。各スイッチは、対応するＩ／Ｏノードを介してネットワーク上のデータパケット伝送のためのＮＩＣに接続される。各ＮＩＣはメモリマップにマッピングされる。システムアドレス空間の一部が、対応するスイッチに接続された各ＮＩＣごとに送信ウィンドウを形成する（図２に示す通り）。ＣＰＵが、データパケットをＮＩＣ送信ウィンドウに書き込むことによってネットワーク経由で伝送する。データパケット伝送を制御するメカニズムは、ＮＩＣ送信ウィンドウへのＣＰＵ書き込みが各々個々に自己定義的であるように定められる。すなわち、どこにデータパケットを送るのか決めるときに直前の書き込みを頼らないということである。データパケットの宛先およびその伝送のその他の情報は、送信ウィンドウに書き込まれたデータパケットの内部でコード化することができる。システム内でスイッチに接続されたＮＩＣは、ＣＰＵのその送信ウィンドウへの書き込みを同じように解釈するように構成される。これで、ＮＩＣ送信ウィンドウへのデータパケット書き込みがどのＮＩＣに向けてなされても同じ効果を持つことが確実になる。“アドレスエイリアシング”の周知のコンセプトは、送信ウィンドウのエイリアスされた部分へのＣＰＵ書き込みが常に、書き込みをするＣＰＵと同じスイッチに接続されたＮＩＣに向けられるように当該のＮＩＣ送信ウィンドウ部分で使用される。結果として、ＮＩＣへのＣＰＵ書き込みは、ＣＰＵ上を走るソフトウェアがどのＮＩＣにアクセスしようとするかに関係なく、ＣＰＵに最も近い位置にあるＮＩＣに向けられる。従って、分散型マルチノードコンピュータシステムにおいてより良い性能が達成される。
【０００５】
【発明の実施の形態】
図１について説明すると、ここに示してあるのは、外部ネットワーク９０に接続された分散型マルチノードコンピュータシステム１００の全体アーキテクチャのブロック図である。システム１００は、複数のノード、すなわち中央処理装置（ＣＰＵ）ノード１１０ａ〜１１０ｎ（全体として１１０）、メモリノード１１５ａ〜１１５ｎ、および入出力（“Ｉ／Ｏ”）ノード１２０ａ〜１２０ｎ（１２０）を含む。ＣＰＵノード１１０は各々が従来の処理装置、例えばＩｎｔｅｌまたはＩｎｔｅｌコンパチブルのＰｅｎｔｉｕｍTMクラスまたはより上位のプロセッサ、Ｓｕｎ  ＳＰＡＲＣTMクラスまたはより上位のプロセッサ、またはＩＢＭ／Ｍｏｔｒｏｌａ  ＰｏｗｅｒＰＣTMクラスまたはより上位のプロセッサである。Ｉ／Ｏノード１２０は各々が従来のＩ／Ｏシステム、例えば記憶装置、入力装置、周辺装置等々である。メモリノード１１５は各々が従来のメモリシステム、例えばダイナミックランダムアクセスメモリ（ＤＲＡＭ）システム、スタティックランダムアクセスメモリ（ＳＲＡＭ）システム等々である。図１に示す通り、システム１００におけるノード１１０、１１５および１２０は、インタコネクト１２５を介して接続される。インタコネクト１２５は、例えばルータまたはスイッチを使って実現化されたメッシュ、リングまたはハイパーキューブであってよい。インタコネクト１２５は、任意のノード対の間のパスを提供し、メッセージをあるノードから別のノードへルーティングする。インタコネクト１２５は更に、複数の相互に連結したスイッチ１３０（ａ）〜（ｎ）（全体として１３０）を包含するが、説明し易くするために、図には４つのスイッチ０、１、２および３だけを示す。スイッチ１３０は各々、ＣＰＵノード１１０とメモリノード１１５ａ〜１１５ｎとＩ／Ｏノード１２０の間でのデータパケットのルーティングを提供する。
【０００６】
スイッチ１３０は各々、システム１００におけるスイッチ１３０のＩＤを示すローカルスイッチＩＤ（ＳＷＩＤ）を有する。各ＳＷＩＤは、論理Ｈｉｇｈか論理ｌｏｗかどちらかであるバイナリビットによって特定されてよい。例えば図１に示す通り、スイッチ０はＳＷＩＤ‘００’を有し、スイッチ１はＳＷＩＤ‘０１’を有し、スイッチ２はＳＷＩＤ‘１０’を有し、スイッチ３はＳＷＩＤ‘１１’を有する。図１に示す通り、スイッチ０は、３つのＣＰＵノード１１０、１つのメモリノード１１５、および１つのＩ／Ｏノード１２０に接続される。スイッチ１は、２つのＣＰＵノード１１０、１つのＩ／Ｏノード１２０、および１つのメモリノード１１５に接続される。システム１００におけるどのノードも、これが物理的に接続されるスイッチ１３０と、これが物理的に接続されないスイッチ１３０とを併せ持つことに注目されたい。ＣＰＵ１１０は各々、ＣＰＵ１１０が直接接続されないスイッチへの非対称アクセスを持つ。一例を挙げると、番号１を付けたＣＰＵノード１１０は、スイッチ０に直接接続される。ところが、ＣＰＵノード１は、スイッチ１、２および３には直接接続されない。図１の実施例におけるこのような１つのスイッチ１３０の詳細なブロック図を図４に示す。
【０００７】
図１に示すスイッチ１３０は各々、対応するＩ／Ｏノード１２０を介してＮＩＣ８５（ｎ）（全体として８５）に接続される。図１に示す通り、スイッチ０は対応するＩ／Ｏノードを介してＮＩＣ０に接続し、スイッチ１は対応するＩ／Ｏノードを介してＮＩＣ１に接続し、スイッチ２は対応するＩ／Ｏノードを介してＮＩＣ２に接続し、スイッチ３は対応するＩ／Ｏノードを介してＮＩＣ３に接続する。ＮＩＣ８５は、ギガビット・イーサネットまたはファイバチャネル等のネットワークインタフェースのためのＩ／Ｏコントローラである。
【０００８】
システム１００は更に、ＣＰＵノード１１０にＮＩＣ８５へのプロセッサ入出力（ＰＩＯ）書き込みリファレンスを発行させるソフトウェアドライバ１６０を包含する。ソフトウェアドライバ１６０は、ソフトウェアとしてもハードウェアとしても実現することができる。
【０００９】
図２について説明すると、これは、マルチノードコンピュータシステム１００のアドレスマップ２００を示す。アドレスマップ２００は、キャッシュメモリやＩ／Ｏノード１２０等のメモリ構造にアクセスするための１組のメモリアドレスを有する。図２に示す通り、アドレスマップ２００は０から始まり、２64ビットの幅である。図２の例では、０から２32までのアドレスはいずれもメモリノード１１５へのリファレンスを維持する。２34から２40までのアドレスはいずれもメモリマップト入出力（ＭＭＩＯ）ウィンドウ２５へのリファレンスを維持する。すべてのＮＩＣ８５はアドレスマップ２００においてマッピングされる。システムアドレスマップ２００の一部が、対応するスイッチ１３０に接続された各ＮＩＣ８５ごとに送信ウィンドウを形成する。このアドレス空間をＮＩＣ送信ウィンドウ２７と呼ぶ。アドレスマップ２００では、さまざまなメモリ構造へのリファレンスを維持するためにどんなアドレス範囲を選んでも構わないことを理解されたい。
【００１０】
ＣＰＵ１１０は、データパケットをＮＩＣ送信ウィンドウに書き込むことによってネットワーク経由で伝送する。データパケット伝送を制御するためのメカニズムは、ＮＩＣ送信ウィンドウ２７へのＰＩＯ書き込みリファレンスが各々個々に自己定義的であるように定められる。すなわち、各ＰＩＯ書き込みはどこにデータパケットを送るのか決めるために直前のＰＩＯ書き込みを頼らないということである。データパケット伝送に必要とされる情報はすべて、単一のＰＩＯ書き込みでＮＩＣ８５に送信される。一例を挙げると、この情報は、ネットワークの宛先、データパケット、プロトコルヘッダ等を含んでよい。データパケットおよび他の情報の宛先は、ＮＩＣ送信ウィンドウ２７に書き込まれたデータパケットの内部でコード化され得る。代替の実施例では、データパケットの宛先は、ＮＩＣ送信ウィンドウ２７の内部でオフセット（図示されていない）によって指示されてよい。本発明の一実施例では、書き込み複合属性が、データパケットを単一転送で送信するのに使用される。データパケットを単一転送でＮＩＣ８５に送信するのに他の方法も活用できることを理解されたい。システム１００におけるスイッチに接続されたＮＩＣ８５は、その送信ウィンドウ２７への書き込みを同じように解釈する構成になっている。これで、ＮＩＣ送信ウィンドウ２７へのデータパケット書き込みがどのＮＩＣ８５に向けてなされても同じ効果を持つことが確実になる。
【００１１】
ＮＩＣ送信ウィンドウ２７では、ＮＩＣ０、ＮＩＣ１、ＮＩＣ２およびＮＩＣ３とラベルを付された領域が直接メモリマッピングされる。先に述べた通り、ＮＩＣ０は対応するＩ／Ｏノードを通じてスイッチ０に接続し、ＮＩＣ１は対応するＩ／Ｏノードを通じてスイッチ１に接続し、ＮＩＣ２は対応するＩ／Ｏノードを通じてスイッチ２に接続し、ＮＩＣ３は対応するＩ／Ｏノードを通じてスイッチ３に接続する。ＮＩＣ送信ウィンドウ２７においてＮＩＣ０とラベルを付された空間へのＰＩＯ書き込みリファレンスは、スイッチ０に属するＮＩＣ８５に直接向かうようルーティングされる。同様に、ＮＩＣ２とラベルを付された空間へのＰＩＯ書き込みリファレンスは、スイッチ２に属するＮＩＣ８５に直接向かうようルーティングされる。ＮＩＣ送信ウィンドウ２７においてラベル“ＬＯＣＡＬ  ＮＩＣ  ＡＬＩＡＳ”を付けた領域へのＰＩＯ書き込みリファレンスは、このＰＩＯ書き込みリファレンスを発行したＣＰＵと同じスイッチに属するＮＩＣに向けてルーティングされる。
【００１２】
未使用と記された領域は、ＬＯＣＡＬ  ＮＩＣ  ＡＬＩＡＳ（ローカルＮＩＣエイリアス）のエリアをＮＩＣ０ウィンドウと共に自然に並べるようにするためのアドレスマップ２００の間隙である。図２に示す通り、ＬＯＣＡＬ  ＮＩＣ  ＡＬＩＡＳは、ＭＭＩＯウィンドウ２５においてＮＩＣ送信ウィンドウ２７の最下部から始まる。
【００１３】
図３について説明すると、ここに示してあるのは、ＮＩＣ８５へのＰＩＯ書き込みリファレンスで使用されるアドレス５０の好適なフォーマットの図解である。アドレス５０は、どこにデータパケットを送るべきかを指示する。アドレス５０は、望ましくは、下記のフィールドを含む。ＮＩＣベースフィールド１０、ＳＷＩＤフィールド２０、ＮＩＣサイズフィールド３０、およびキャッシュラインオフセットフィールド４０。
【００１４】
ＮＩＣベースフィールド１０は、それをＮＩＣベースレジスタ（図３に示されていない）と照合することによってＮＩＣ８５に向けてＰＩＯ書き込みリファレンスがなされたかどうかを決定するのに使用される。ＮＩＣベースフィールド１０の内容がＮＩＣベースレジスタに合致すれば、それは、ＮＩＣ８５に対してリクエストが出されていることを示す。ＮＩＣベースレジスタ５については、後に図４に則して詳細に述べる。
【００１５】
ＳＷＩＤフィールド２０は、望ましくは、システム初期設定時に指定値に設定される。一実施例では、ＳＷＩＤフィールド２０に保存された指定値がゼロ“０００”である。一実施例では、ＳＷＩＤフィールド２０は３ビットの幅がある。値“０００”は一例にすぎず、ＳＷＩＤフィールド２０は任意のどんな数値も保持できることを理解されたい。ＮＩＣ８５に向けてＰＩＯ書き込みリファレンスを行なうことが決定されると、ＳＷＩＤフィールド２０は、それがローカルＮＩＣエイリアスを指示する指定値を有するかどうか見るために検査される。
【００１６】
ＮＩＣサイズフィールド３０は、ＭＭＩＯウィンドウ２５におけるＮＩＣ送信ウィンドウ２７のサイズを指定する。ＮＩＣ送信ウィンドウ２７は、サイズが２の累乗であるので、自然に並ぶ。キャッシュラインオフセットフィールド４０は、ＭＭＩＯウィンドウ２５におけるキャッシュラインのサイズを指示する。
【００１７】
図４について説明すると、これは、システム１００の１つのスイッチ１３０の機能ブロック図である。代表的なシステム１００は複数のスイッチ１３０を有するが、図４では、説明を分かり易くするためにそのようなスイッチ１３０が１つしか描かれていない。図４に示す通り、スイッチ１３０は数個の入力ポートを有するが、描かれているのは５個のポート８、９、１１、１２および１５だけである。スイッチ１３０は更に、対応するＩ／Ｏノード１２０を介してＮＩＣ８５に接続する。
【００１８】
各スイッチ１３０は更にＮＩＣベースレジスタ５を包含する。ＮＩＣベースレジスタ５は、図１に示すＮＩＣ８５がＭＭＩＯウィンドウ２５においてマッピングされた場所を示すべくプログラムされる。
【００１９】
各スイッチ１３０は更に、ＰＩＯ書き込みリファレンスで使用されたアドレス５０を復号するのに適したエイリアスデコーダ２を包含する。図４では、説明し易くするためにエイリアスデコーダ２が１つしか示してないが、スイッチ１３０の各ポートがエイリアスデコーダ２を有する。ＮＩＣ８５に向けてＰＩＯ書き込みリファレンスがなされたことが決定されると、エイリアスデコーダ２は、アドレス５０のＳＷＩＤフィールド２０を読み取り、それがローカルＮＩＣエイリアスを指示する指定値を有するかどうか決定する。アドレス５０がＮＩＣ送信ウィンドウ２７におけるローカルＮＩＣエイリアスを示せば、エイリアスデコーダ２は、アドレス５０のＳＷＩＤフィールドをローカルＳＷＩＤポート８から受け取ったローカルＳＷＩＤ１８と置き換えることによって、受け取ったアドレス５０を修正する。エイリアスデコーダ２は、修正アドレス５０ａをアドレスデコーダ４へ転送する。
【００２０】
アドレスデコーダ４は、修正アドレス５０ａを受け取り、データパケットをこの修正アドレス５０ａに向けてルーティングするのに使用される。修正アドレス５０ａは、ＰＩＯ書き込みリファレンスを発行したＣＰＵ１１０に接続されたスイッチを指すＮＩＣローカルのアドレスを含む。一例を挙げると、スイッチ１に接続されたＣＰＵ１１０がＰＩＯ書き込みリファレンスを発行した場合、リファレンスは、スイッチ１に接続されたＮＩＣ１に向けてルーティングされる。スイッチ１３０は更に、アドレスデコーダ４に結合したクロスバー（ＸＢＡＲ）６を包含する。ＸＢＡＲ６は、ＰＩＯ書き込みリファレンスをあるポートから別のポートに向けてルーティングする。
【００２１】
図５について説明すると、ここに示してあるのは、システム１００によって実行されるデータパケットのルーティングの方法のフローチャートである。プロセスが始まり（５１０）、ソフトウェアドライバ１６０がＣＰＵ１１０にＰＩＯ書き込みリファレンスをＮＩＣ８５に向けて発行させる（５２０）。ＰＩＯ書き込みリファレンスは、望ましくは、アドレス５０ならびにデータパケットを含む。ソフトウェアドライバ１６０は、ＰＩＯ書き込みリファレンスで用いられるアドレス５０において、望ましくは、ＳＷＩＤフィールド２０を指定値に設定する。指定値は、ＮＩＣ送信ウィンドウ２７におけるローカルＮＩＣエイリアスを指示する（図２に示す）。データパケットを伝送するのに要求された情報はすべて、単一のＰＩＯ書き込みリファレンスでＮＩＣ８５に送られなければならず、データパケット内部でコード化される。
【００２２】
ＰＩＯ書き込みリファレンスは、スイッチ１３０のポート９に到達する（図４に示す）。エイリアスデコーダ２は、ＰＩＯ書き込みリファレンスで使用されたアドレス５０を受け取る（５３０）。ステップ５４０において、ＮＩＣベースフィールド１０とＮＩＣベースレジスタ５の間で論理比較が行われる。ＮＩＣベースレジスタ５は、ＮＩＣ８５がＭＭＩＯウィンドウ２５においてマッピングされた場所を指示する。ＮＩＣベースフィールド１０の内容がＮＩＣベースレジスタに等しいならば、それは、ＮＩＣ８５に対してＰＩＯ書き込みリファレンスがなされていることを示す。その場合、それがローカルＮＩＣエイリアスを示す指定値を有するかどうか見るために、アドレス５０のＳＷＩＤフィールドが検査される（５５０）。
【００２３】
先のステップにおける決定が肯定的であれば、エイリアスデコーダは、アドレスのＳＷＩＤフィールドをローカルＳＷＩＤ１８と置き換え（５５５）、修正アドレス５０ａを生成する（図４に示す）。修正アドレス５０ａは、望ましくは、受け取られたアドレス５０と同じフィールドを有する。修正アドレス５０ａは、ＰＩＯ書き込みリファレンスを発行したＣＰＵ１１０に接続されたスイッチを指すＮＩＣローカルのアドレスを含む。
【００２４】
アドレスデコーダ４は、ローカルＳＷＩＤを有する修正アドレスを受け取り（５６０）、ＰＩＯ書き込みリファレンスを修正アドレス５０ａで指示された通りのその宛先に向けてルーティングし、そして、プロセスは終了する（５７０）。結果として、ＰＩＯ書き込みリファレンスは、ＰＩＯ書き込みリファレンスがどのＮＩＣをターゲットにしているかに関係なく、リクエストを出したＣＰＵに最も近い位置にあるＮＩＣに向けてルーティングされる。但し、ＮＩＣ８５に対してＰＩＯ書き込みリファレンスがなされなかった場合、アドレスは、修正されずにアドレスデコーダ４に送られる（５８０）。
【００２５】
こうして、本発明によれば有益なことに、ソフトウェアドライバ１６０は常に、動作中である現行ＣＰＵに最も近い位置のＮＩＣを使用できることになり、システムのトポロジーを理解する必要もない。オペレーティングシステムは、ソフトウェアドライバ１６０の知識なしにソフトウェアドライバ１６０をＣＰＵ間で動作させることができ、ネットワーク９０に各々独立して転送されるデータパケットは常に、現行ＣＰＵが接続されているスイッチに接続されたＮＩＣを通っていくことになる。
【００２６】
（付記１）各スイッチが少なくとも１つのネットワークインタフェースコントローラ（ＮＩＣ）に通信的に結合した複数のスイッチに通信的に結合した複数のＣＰＵを含むマルチノードコンピュータシステムにおいて、プロセッサ入出力（ＰＩＯ）書き込みリファレンスを、ＣＰＵからこのＣＰＵに対してローカルであるスイッチに接続されたＮＩＣまでルーティングする方法であって、
アドレスとデータを含むＰＩＯ書き込みリファレンスを受け取り、
ローカルＮＩＣエイリアスを指示するアドレスに応答して、そのアドレスに基いて、ＰＩＯ書き込みリファレンスを発行したＣＰＵに接続されているスイッチに対してローカルであるＮＩＣのアドレスを含む修正アドレスを生成し、
データをこの修正アドレスに向けてルーティングするステップを具備する方法。（１）
（付記２）前記アドレスが更にベースフィールドを含み、該ベースフィールドをＮＩＣベースレジスタと照合して前記ＮＩＣに対してＰＩＯ書き込みリファレンスがなされているかどうか決定するステップをさらに具備する付記１に記載の方法。（２）
（付記３）ＰＩＯ書き込みリファレンスが各々、ＮＩＣがその宛先へデータを送るのに必要とされるすべての情報を含む付記１に記載の方法。
【００２７】
（付記４）アドレスが更にスイッチＩＤ（ＳＷＩＤ）フィールドを包含し、修正アドレスを生成するステップは更に、
ＳＷＩＤフィールドを、ＰＩＯ書き込みリファレンスを発行したＣＰＵに接続されているスイッチに対してローカルであるＮＩＣのローカルＳＷＩＤと置き換えることを含む付記１に記載の方法。（３）
（付記５）マルチノードコンピュータシステムであって、
各々が１つのアドレスを含むＰＩＯ書き込みリファレンスを発行する複数のＣＰＵと、
各々がＰＩＯ書き込みリファレンスをネットワークインタフェースコントローラ（ＮＩＣ）に向けてルーティングするために少なくとも１つのＣＰＵに通信的に結合した複数のスイッチと、
各々がＰＩＯ書き込みリファレンスをネットワーク上でルートティングするために複数のスイッチの少なくとも１つに通信的に結合した複数のＮＩＣと、
各々が複数のスイッチの１つに属し、前記アドレスに基づきＰＩＯ書き込みリファレンスを発行したＣＰＵに接続されているスイッチに対してローカルであるＮＩＣのアドレスを含む修正アドレスを生成するエイリアスデコーダとを具備するシステム。（４）
（付記６）各々が複数のスイッチの１つに属し、ＰＩＯ書き込みリファレンスを修正アドレスに向けてルーティングする複数のアドレスデコーダをさらに具備する付記５に記載のシステム。（５）
（付記７）ＰＩＯ書き込みリファレンスで使用されたアドレスが更に、メモリマップト入出力（ＭＭＩＯ）ウィンドウに書き込むことのできるキャッシュラインの数を指示するサイズフィールドを包含する付記５に記載のシステム。（６）
（付記８）ＰＩＯリファレンスで使用されたアドレスが更に、ＭＭＩＯウィンドウに書き込まれた各キャッシュラインのサイズを指示するキャッシュラインオフセットフィールドを具備する付記５に記載のシステム。（７）
（付記９）各スイッチが更に、ＭＭＩＯウィンドウにおいてＮＩＣがマッピングされた場所を指示するＮＩＣベースレジスタを具備する付記５に記載のシステム。
【００２８】
（付記１０）ＮＩＣベースレジスタがプログラムされた定数を保存する付記９に記載のシステム。
【００２９】
（付記１１）各スイッチが、任意のスイッチのＭＭＩＯウィンドウへのＰＩＯ書き込みリファレンスを認識できる付記５に記載のシステム。
【００３０】
（付記１２）ＮＩＣへのＰＩＯ書き込みリファレンスが各々、ＮＩＣがその宛先へデータを送るのに必要とされるすべての情報を含む付記５に記載のシステム。
【００３１】
（付記１３）各スイッチが少なくとも１つのネットワークインタフェースコントローラ（ＮＩＣ）に通信的に結合した複数のスイッチに通信的に結合した複数のＣＰＵを含むマルチノードコンピュータシステムにおいて、プロセッサ入出力（ＰＩＯ）書き込みリファレンスをＣＰＵからこのＣＰＵに対してローカルであるスイッチに接続されたＮＩＣまでルーティングする方法であって、
ベースアドレスとスイッチＩＤ（ＳＷＩＤ）を含むアドレスを含むＰＩＯ書き込みリファレンスを受け取り、
ベースアドレスをＮＩＣベースレジスタと照合してＮＩＣに対してＰＩＯ書き込みリファレンスがなされているかどうか決定し、
ＰＩＯ書き込みリファレンスがＮＩＣに対してなされていることに応答して、ＳＷＩＤがローカルＮＩＣエイリアスを指示する指定値を有するかどうか決定し、
ＳＷＩＤがローカルＮＩＣエイリアスを指示する指定値を有することに応答して、ＳＷＩＤフィールドをローカルＳＷＩＤと置き換えるステップを具備する方法。（８）
（付記１４）各ＰＩＯリファレンスがデータパケットを含み、ＮＩＣへのＰＩＯリファレンスが各々、ＮＩＣがその宛先へデータパケットを送るのに必要とされるすべての情報を含む付記１３に記載の方法。（９）
（付記１５）ローカルＳＷＩＤが、ＰＩＯ書き込みリファレンスを発行したＣＰＵに接続されたスイッチのＩＤである付記１３に記載の方法。
【００３２】
（付記１６）ローカルＮＩＣエイリアスが、ＰＩＯ書き込みリファレンスを発行したＣＰＵに対してローカルであるスイッチに接続されたＮＩＣに向けてＰＩＯ書き込みリファレンスをルーティングできるようにするＭＭＩＯウィンドウ内の領域である付記１３に記載の方法。
【００３３】
（付記１７）分散型マルチノードコンピュータシステムであって、
アドレスを含むプロセッサ入出力（ＰＩＯ）リファレンスを発行するためのプロセッサ手段と、
ＰＩＯリファレンスをネットワークインタフェースコントローラ（ＮＩＣ）に向けてルーティングするためのスイッチング手段と、
ＰＩＯリファレンスで使用されたアドレスを受け取り、その受け取ったアドレスに基づき、ＰＩＯ書き込みリファレンスを発行したプロセッサ手段に対してローカルであるスイッチング手段に接続されたＮＩＣを指示する修正アドレスを生成するためのエイリアス復号手段とを具備するシステム。（１０）
【図面の簡単な説明】
【図１】本発明の一実施例による分散型マルチノードコンピュータシステムの全体アーキテクチャのブロック図である。
【図２】図１の分散型コンピュータシステムのアドレスマップを図解したものである。
【図３】ＮＩＣへのプロセッサ入出力（ＰＩＯ）リファレンスで使用されたアドレスの好適なフォーマットを図解したものである。
【図４】図１のシステムの一スイッチの機能ブロック図である。
【図５】図１のシステムによって実行されたＰＩＯリファレンスの宛先を復号する方法のフローチャートである。
【図１】
0003996457.tif 000002
【図２】
0003996457.tif 000003
【図３】
0003996457.tif 000004
【図４】
0003996457.tif 000005
【図５】
0003996457.tif 000006