(57)【特許請求の範囲】
【請求項１】
プロセッサユニットの入出力バスを、複数のプロセッサユニットが相互接続されるスイッチング装置への入出力バスへ中継するブリッジであって、
各プロセッサユニットの実効アドレスがマッピングされた前記複数のプロセッサユニット間で共有されるグローバルアドレス空間を前提として、当該プロセッサユニットから、前記複数のプロセッサユニットの内いずれかのターゲットノードの実効アドレスを指定したアクセス要求パケットを受け取る上流ポートと、
前記ターゲットノードの実効アドレスにそのターゲットノードの、スイッチングに必要なノード識別番号を付加することにより、前記ターゲットノードの実効アドレスをグローバルアドレスに変換する変換部を有する制御部と、
前記グローバルアドレスが指定されたアクセス要求パケットを前記スイッチング装置に出力する下流ポートとを備え、
前記制御部は、書込を行うための前記アクセス要求パケットの出力後であって、書込を行ったことを前記ターゲットノードに通知する前に、書込を行うための前記アクセス要求パケットにより指定されるグローバルアドレスを指定するアクセス要求パケットであって、読出を行うためのアクセス要求パケットを生成して前記下流ポートに出力させ、該読出が成功したことをもって前記ターゲットノードにおいて該書込が行われたことを確認する確認部をさらに有することを特徴とするブリッジ。
【請求項２】
前記確認部は、前記読出しを行うためのアクセス要求パケットを、前記複数のプロセッサユニット間の入出力バスにおいて、書き込みを行うための前記アクセス要求パケットとの順序保証がなされる態様で前記下流ポートに出力させることを特徴とする請求項１に記載のブリッジ。
【請求項３】
前記制御部は、前記プロセッサユニットから発行された、書込を行ったことを前記ターゲットノードに通知を行う通知パケットに対して、該通知パケットの前に出力した、前記ターゲットノードに書込を行うためのアクセス要求パケットの出力後の前記確認が取れたことを条件として、該通知パケットの出力を許可する順序保証部をさらに備えることを特徴とする請求項１または２に記載のブリッジ。
【請求項４】
前記複数のプロセッサユニット上で動作する分散アプリケーションを一意に識別するアプリケーション識別番号によって前記グローバルアドレス空間が論理的に区分けされる場合に、前記変換部は、前記グローバルアドレスが指定されたアクセス要求パケット内に前記アプリケーション識別番号を格納することを特徴とする請求項１から３のいずれか１項に記載のブリッジ。
【請求項５】
前記下流ポートは、前記複数のプロセッサユニットのいずれかであるソースノードから、当該プロセッサユニットをターゲットノードとしてその実効アドレスを指定したアクセス要求パケットを受け取った場合、前記変換部は、前記アクセス要求パケットから前記アプリケーション識別番号を取得し、前記上流ポートは、前記アクセス要求パケットに指定された当該プロセッサユニットの実効アドレスとともに、前記アクセス要求パケットから取得した前記アプリケーション識別番号を当該プロセッサユニットに渡すことを特徴とする請求項４に記載のブリッジ。
【請求項６】
複数のプロセッサユニットと、
複数のプロセッサユニットを相互接続するスイッチング装置と、
各プロセッサユニットの入出力バスを前記スイッチング装置の入出力バスへと中継するブリッジとを含み、
前記ブリッジは、
各プロセッサユニットの実効アドレスがマッピングされた前記複数のプロセッサユニット間で共有されるグローバルアドレス空間を前提として、当該プロセッサユニットから、前記複数のプロセッサユニットの内いずれかのターゲットノードの実効アドレスを指定したアクセス要求パケットを受け取る上流ポートと、
前記ターゲットノードの実効アドレスにそのターゲットノードの、スイッチングに必要なノード識別番号を付加することにより、前記ターゲットノードの実効アドレスをグローバルアドレスに変換する変換部を有する制御部と、
前記グローバルアドレスが指定されたアクセス要求パケットを前記スイッチング装置に出力する下流ポートとを備え、
前記制御部は、書込を行うための前記アクセス要求パケットの出力後であって、書込を行ったことを前記ターゲットノードに通知する前に、書込を行うための前記アクセス要求パケットにより指定されるグローバルアドレスを指定するアクセス要求パケットであって、読出を行うためのアクセス要求パケットを生成して前記下流ポートに出力させ、該読出が成功したことをもって前記ターゲットノードにおいて該書込が行われたことを確認する確認部をさらに備えることを特徴とする情報処理システム。
【請求項７】
前記確認部は、前記読出しを行うためのアクセス要求パケットを、前記複数のプロセッサユニット間の入出力バスにおいて、書き込みを行うための前記アクセス要求パケットとの順序保証がなされる態様で前記下流ポートに出力させることを特徴とする請求項６に記載の情報処理システム。
【請求項８】
前記プロセッサユニットは、
ソースノードである場合においては、書込を行うためのアクセス要求パケットの発行後、該書込を行ったことを前記ターゲットノードに通知する通知パケットを発行可能であり、
ターゲットノードである場合においては、該通知パケットの受信後、それにより通知される前記書込により書き込まれたデータを読み出し、
ソースノードのブリッジにおける前記制御部は、当該プロセッサユニットから発行された通知パケットに対して、該通知パケットの前に出力した、ターゲットノードに書込を行うためのアクセス要求パケットの出力後の前記確認が取れたことを条件として、該通知パケットの出力を許可する順序保証部をさらに備えることを特徴とする請求項６または７に記載の情報処理システム。
【請求項９】
複数のプロセッサユニットの各々がブリッジを介してスイッチング装置に接続された情報処理システムにおけるアクセス制御方法であって、
各プロセッサユニットの実効アドレスがマッピングされた前記複数のプロセッサユニット間で共有されるグローバルアドレス空間を前提として、当該プロセッサユニットから、前記複数のプロセッサユニットの内いずれかのターゲットノードの実効アドレスを指定したアクセス要求パケットを受け取る第１のステップと、
前記ターゲットノードの実効アドレスにそのターゲットノードの、スイッチングに必要なノード識別番号を付加することにより、前記ターゲットノードの実効アドレスをグローバルアドレスに変換する変換ステップを第２のステップと、
前記グローバルアドレスが指定されたアクセス要求パケットを前記スイッチング装置に出力する第３のステップとを含み、
前記第２のステップは、書込を行うための前記アクセス要求パケットの出力後であって、書込を行ったことを前記ターゲットノードに通知する前に、書込を行うための前記アクセス要求パケットにより指定されるグローバルアドレスを指定するアクセス要求パケットであって、読出を行うためのアクセス要求パケットを生成して出力し、該読出が成功したことをもって前記ターゲットノードにおいて該書込が行われたことを確認する確認ステップをさらに含むことを特徴とするアクセス制御方法。
【請求項１０】
前記確認ステップは、前記読出しを行うためのアクセス要求パケットを、前記複数のプロセッサユニット間の入出力バスにおいて、書き込みを行うための前記アクセス要求パケットとの順序保証がなされる態様で出力することを特徴とする請求項９に記載のアクセス制御方法。
【請求項１１】
前記第２のステップは、前記プロセッサユニットから発行された、書込を行ったことを前記ターゲットノードに通知を行う通知パケットに対して、該通知パケットの前に出力した、前記ターゲットノードに書込を行うためのアクセス要求パケットの出力後の前記確認が取れたことを条件として、該通知パケットの出力を許可する順序保証ステップをさらに含むことを特徴とする請求項９または１０に記載のアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータネットワーク上におけるノード間のアクセス技術に関する。
【背景技術】
【０００２】
従来、コンピュータネットワーク上において、通信を行うノード同士は互いのメモリやＩＯデバイスなどのリソースが見えず、リソースの透過性がなかった。【０００３】
そのため、たとえば、Ｅｔｈｅｒｎｅｔ（登録商標）などのネットワークにおいて、ノード間のアクセスは、ノードに備えられたＮＩＣ（ネットワーク・インターフェイス・カード）などのネットワークハードウェアやこれらのハードウェアのデバイスドライバを介して行われており、システムの負荷が大きく、オーバーヘッドにつながる問題があった。【０００４】
また、複数のプロセッサが接続されてなるマルチプロセッサシステムのようなコンピュータネットワークにおいて、各プロセッサ間においてリソースの透過性がないため、各プロセッサがアクセス可能な共有メモリを設け、共有メモリを介してプロセッサ間のデータの受渡しを行うことが考えられる。この場合、たとえばプロセッサＡがプロセッサＢにデータを渡したいときに、直接の受渡ができず、プロセッサＡによる、共有メモリへデータをコピーする処理と、プロセッサＢによる、共有メモリからデータを読み出してコピーする処理が必要であり、同じくオーバーヘッドの問題が起きうる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本願出願人は、特願２００６ー００８００４において、コンピュータネットワークのノード間において、リソースの透過性を提供する技術を提案した。この技術によれば、ノード間において、リソースに対する直接アクセスが可能となる。この技術が適用された、ブリッジを介してプロセッサを相互接続したマルチプロセッサシステムシステムにおいて、プロセッサがリード／ライトコマンドを発行すると、それらのコマンドを含むパケットがスイッチングネットワークで転送されるため、コマンドの送信順位が保証されないということについて、アクセスのオーダリング制御について改善する余地があることを本願出願人は認識した。【０００６】
本発明は、上記事情に鑑みてなされたものであり、その目的は、コンピュータネットワーク上のノード間において、リソースの透過性を実現するとともに、アクセスのオーダリング制御が可能な技術を提供することにある。
【課題を解決するための手段】
【０００７】
本発明のある態様は、ブリッジである。このブリッジは、プロセッサユニットの入出力バスを、複数のプロセッサユニットが相互接続されるスイッチング装置の入出力バスへと中継するブリッジであって、上流ポートと、制御部と、下流ポートを含む。【０００８】
上流ポートは、各プロセッサユニットの実効アドレスがマッピングされた複数のプロセッサユニット間で共有されるグローバルアドレス空間を前提として、当該プロセッサユニットから、複数のプロセッサユニットの内いずれかのターゲットノードの実効アドレスを指定したアクセス要求パケットを受け取る。ここで、実効アドレスとは実効アドレス空間内の所定の位置を示すアドレスである。さらに実効アドレス空間とは、各プロセッサユニット内に点在するメインメモリ等を含む記憶手段の各々から部分的に切り取られたメモリ空間の一部同士を集合させ、結合したものである。１つの実効メモリ空間は１つのプロセッサユニットに対応する。すなわち、プロセッサユニットと同数の実効メモリ空間が存在することになり、各プロセッサユニットは自分に対応する実効メモリ空間をワークメモリとして使用する。実効メモリ空間の内部構成を最適化することにより、対応するプロセッサユニットは最大パフォーマンスで動作できる。【０００９】
制御部は、ターゲットノードの実効アドレスにそのターゲットノードの、スイッチングに必要なノード識別番号を付加することにより、ターゲットノードの実効アドレスをグローバルアドレスに変換する変換部を備える。さらに、制御部は、書込を行うためのアクセス要求パケットの出力後、ターゲットノードにおいてこの書込が行われたことを確認する確認部を有する。【００１０】
下流ポートは、グローバルアドレスが指定されたアクセス要求パケットをスイッチング装置に出力する。【００１１】
また、確認部は、書込を行うためのアクセス要求パケットにより指定されるグローバルアドレスを指定するアクセス要求パケットであって、読出を行うためのアクセス要求パケットを生成して下流ポートに出力させ、この読出が行われたことをもって確認を行うようにしてもよい。【００１２】
さらに、制御部は、プロセッサユニットから発行された、書込を行ったことをターゲットノードに通知を行う通知パケットに対して、該通知パケットの前に出力した、ターゲットノードに書込を行うためのアクセス要求パケットの出力後の確認が取れたことを条件として、この通知パケットの出力を許可する順序保証部をさらに備えてもよい。【００１３】
また、複数のプロセッサユニット上で動作する分散アプリケーションを一意に識別するアプリケーション識別番号によってグローバルアドレス空間が論理的に区分けされる場合に、変換部は、グローバルアドレスが指定されたアクセス要求パケット内にアプリケーション識別番号を格納するようにしてもよい。【００１４】
また、下流ポートが、複数のプロセッサユニットのいずれかであるソースノードから、当該プロセッサユニットをターゲットノードとしてその実効アドレスを指定したアクセス要求パケットを受け取った場合、変換部は、アクセス要求パケットからアプリケーション識別番号を取得し、上流ポートは、アクセス要求パケットに指定された当該プロセッサユニットの実効アドレスとともに、アクセス要求パケットから取得したアプリケーション識別番号を当該プロセッサユニットに渡すようにしてもよい。【００１５】
本発明の別の態様は、情報処理システムである。この情報処理システムは、複数のプロセッサユニットと、複数のプロセッサユニットを相互接続するスイッチング装置と、各プロセッサユニットの入出力バスをスイッチング装置の入出力バスへと中継するブリッジとを含む。このブリッジは、前述した態様のブリッジとすることができる。【００１６】
なお、本発明の構成要素や表現を方法、装置、システム、プログラム、プログラムを記憶した記憶媒体などの間で相互に置換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１７】
本発明は、コンピュータネットワーク上のノード間においてリソースの透過性を実現するとともに、アクセスのオーダリング制御を可能にする。
【図面の簡単な説明】
【００１８】
【図１】本発明の概要の説明に用いた情報処理システムを示す図である。
【図２】図１に示す情報処理システムにおけるノードの構成を示す図である。
【図３】グローバルアドレス空間の概念を示す図（その１）である。
【図４】図２に示すノードにおけるブリッジの構成を示す図である。
【図５】図４に示すブリッジにおける制御部の構成を示す図である。
【図６】図３に示すグローバルアドレス空間に対応するグローバルアドレスのフォーマットを示す図である。
【図７】グローバルアドレス空間の概念を示す図（その２）である。
【図８】図７に示すグローバルアドレス空間に対応するグローバルアドレスのフォーマットの一例を示す図である。
【図９】本発明にかかる実施の形態による情報処理システムの構成を示す図である。
【図１０】図９に示す情報処理システムにおけるノードの構成例を示す図である。
【図１１】図１０に示すノードにおけるブリッジの構成を示す図である。
【図１２】実効アドレスを物理アドレスへ変換する際に用いられる変換テーブルおよび変換の結果の例を示す図である。
【符号の説明】
【００１９】
２０  ブリッジ、  ２１  上流ポート、  ２２  制御部、  ２３  変換部、  ２４  確認部、  ２５  順序保証部、  ２８  下流ポート、  ３０  プロセッサユニット、  ４０  ノード、  ５０  スイッチ、  ８０  スイッチ、  １００  ノード、  １１０  ブリッジ、  １１２  第１の入出力部、  １１４  ブリッジコントローラ、  １１６  レジスタ群、  １１８  第２の入出力部、  １２０  マルチコアプロセッサ、  １３０  サブプロセッサ、  １３２  コア、  １３４  ローカルメモリ、  １３６  ＭＦＣ、  １３８  ＤＭＡＣ、  １４０  メインプロセッサ、  １４２  コア、  １４４  Ｌ１キャッシュ、  １４５  Ｌ２キャッシュ、  １４６  ＭＦＣ、  １４８  ＤＭＡＣ、  １５０  リングバス、  １６０  ＩＯＩＦ、  １６４  ＩＯコントローラ、  １７０  メモリコントローラ、  １８０  メインメモリ。
【発明を実施するための最良の形態】
【００２０】
本発明の実施の形態の詳細を説明する前に、まず、本発明者が提案する技術の概要を説明する。【００２１】
図１に示す情報処理システムについて考える。この情報処理システムは、複数ここでは例として２つのノード４０を有し、これらのノードはスイッチング装置（以下単にスイッチという）５０によって接続される。【００２２】
図２は、ノード４０の構成を示す。
ノード４０は、プロセッサユニット３０と、プロセッサユニット３０の入出力バス（図示せず）を、スイッチ５０の入出力バス（図示せず）へ中継するブリッジ２０を備える。プロセッサユニット３０は、単一のプロセッサであってもよいし、複数のプロセッサより構成されたものであってもよい。ここで、ブリッジ２０の詳細を説明する前に、この技術に用いられるグローバルアドレス空間について説明する。【００２３】
図３は、グローバルアドレス空間の概念を示す。図３に示すように、グローバルアドレス空間において、各プロセッサユニット３０の実効アドレス空間が、このプロセッサユニット３０が属するノードに対応付けられるようにマッピングされている。このグローバルアドレス空間は、各プロセッサユニット３０間で共有され、それにおけるアドレスは、以下グローバルアドレスという。
このグローバルアドレス空間を用いて、ノード４０間のアクセスが行われる。【００２４】
ソースノードのプロセッサユニット３０は、ターゲットノードにアクセスする際に、ターゲットノードの実効アドレスを指定したアクセス要求パケットを発行して、ブリッジ２０に出力する。このアクセス要求パケットの発行は、たとえばＤＭＡ（ダイレクト・メモリ・アクセス）アーキテクチャを用いて行われる。【００２５】
図４は、ブリッジ２０の構成を示す。ブリッジ２０は、プロセッサユニット３０の入出力バスを介してプロセッサユニット３０との送受信を行う上流ポート２１、制御部２２、スイッチ５０の入出力バスを介してスイッチ５０との送受信を行う下流ポート２８を備える。【００２６】
図５は、制御部２２の構成を示す。制御部２２は、変換部２３、確認部２４、順序保証部２５を備える。【００２７】
上流ポート２１は、プロセッサユニット３０により発行されたアクセス要求パケットを受け取り、制御部２２の変換部２３は、ターゲットノードの実効アドレスに、ターゲットノードの、スイッチングに必要なノード識別番号（以下ノードＩＤという）を付加することによって、ターゲットノードの実効アドレスをグローバルアドレスに変換する。そして、下流ポート２８は、このグローバルアドレスを指定するアクセス要求パケットをスイッチ５０に出力する。
制御部２２における確認部２４と、順序保証部２５については、後述する。【００２８】
ノードＩＤは、ノード４０がネットワークにおける物理位置を示しうるものであり、たとえば、スイッチ５０における、このノードが接続された接続ポートの番号を用いることができる。【００２９】
図６は、グローバルアドレスのフォーマットを示す。図示のように、グローバルアドレスは、ノードＩＤと実効アドレスから構成される。【００３０】
ブリッジ２０の下流ポート２８は、このようなグローバルアドレスを指定したアクセス要求パケットをスイッチ５０に出力し、スイッチ５０は、受信したアクセス要求パケットのグローバルアドレスに含まれるノードＩＤを読み取り、このノードＩＤにより示される接続ポートに接続されたノード４０にアクセス要求パケットを転送する。【００３１】
ターゲットノードとなるノード４０のブリッジ２０は、下流ポート２８によりアクセス要求パケットを受け取る。上流ポート２１はアクセス要求パケットにより指定された実効アドレスをプロセッサユニット３０に出力する。この場合、変換部２３によりグローバルアドレスから実効アドレスを読み出して上流ポート２１に渡すようにしてもよいし、スイッチ５０が、アクセスパケットを転送する際に、グローバルアドレスに含まれる実効アドレスのみをブリッジ２０に出力し、変換部２３の介在を必要としないようにしてもよい。または、アクセス要求パケットをそのままプロセッサユニット３０に渡し、プロセッサユニット３０により実効アドレスの読出を行うようにしてもよい。
プロセッサユニット３０は、実効アドレスを物理アドレスに変換する。【００３２】
このように、ユーザ空間の一部をグローバルアドレス空間にマッピングすることによって、コンピュータネットワーク上のノード間において、リソースの透過性を得ることができる。これによって、ネットワークハードウェアやこれらのハードウェアのデバイスドライバの操作をせずにノード間のアクセスができ、低オーバヘッドのメモリアクセスが実現される。【００３３】
さらに、各ノードに含まれるプロセッサユニットにおけるメモリにおいて、自身以外のノード毎にエリアを割り当てておき、各ノードが自身に割り当てられたエリアにのみアクセスができるようにして安全性を高めるようにしてもよい。具体的には、ソースノードのブリッジ２０は、グローバルアドレスへの変換を行う際に、ターゲットノードのノードＩＤとともに、ソースノードのノードＩＤも付加する。ターゲットノードのブリッジ２０は、アクセス要求パケットに含まれる実効アドレスとともに、ソースノードのノードＩＤをプロセッサユニット３０に渡す。そして、プロセッサユニット３０が、ブリッジから渡された、ソースノードのノードＩＤを利用して、このアクセスの許否を決定するようにする。【００３４】
たとえば、プロセッサユニットは、実効アドレスを物理アドレスに変換する際に、変換のためのアドレス変換テーブルを用いることが考えられる。このアドレス変換テーブルに、アクセス要求先である物理アドレス空間へのアクセス許可または禁止を示す許可識別番号を付加する。当該許可識別番号とは例えば、各物理アドレス空間毎にアクセスを許可するアクセス要求元のノードのノードＩＤとすることができる。そして、プロセッサユニットは、この変換テーブルを参照して実効アドレスを物理アドレスに変換する際に、ブリッジから渡されたアクセス要求元のノードＩＤと、変換テーブルにおいてこの実効アドレスに対応付けられた許可識別番号と一致するか否かにより、この実効アドレスに対するアクセスの許否を決定することができる。【００３５】
こうすることによって、各ノードにおいてプロセッサユニットが最大パフォーマンスで動作するように各々の実効メモリ空間の内部構成が最適化された状態において、当該実効メモリ空間のノード間の相互アクセスを容易にするとともに、各ノードに対して割り当てられたエリアが、異なるノードからアクセスされることを防ぐことができ、安全である。【００３６】
ここで、アクセス要求パケットが、ターゲットノードのプロセッサユニット３０のメモリに書込を行うものである場合について考える。上述したように、グローバルアドレス空間を導入することによって、異なるノード間において直接アクセスすることができる。ソースノードのプロセッサユニット３０がターゲットノードのプロセッサユニット３０のメモリに直接書込を行う際に、ターゲットノードのプロセッサユニット３０に「書込を行った」ことを通知するために、通知するためのパケット（以下通知パケットという）を発行することが考えられる。ターゲットノードのプロセッサユニット３０は、この通知パケットの受信をもってデータの書込が行われたことを知り、該当するデータの読み出しを行う。ここで、通知パケットを受信した、ターゲットノードのプロセッサユニット３０にデータを読出させるために、シグナル・ノティフィクション・レジスタ（Ｓｉｎｇａｌ  Ｎｏｔｉｆｉｃａｔｉｏｎ  Ｒｅｇｉｓｔｅｒ）、メール・ボックス（Ｍａｉｌ  Ｂｏｘ）、ポーリング、リザーベーション・ロスト・イベント（Ｒｅｓｅｒｖａｔｉｏｎ  Ｌｏｓｔ  Ｅｖｅｎｔ）などの種々の知られている技術を用いてプロセッサに対する割込みを発生させる。【００３７】
ところで、ネットワークのルーティングにおいて、同じソースノード、同じアドレス（ここでは実効アドレス）のパケットは、同一経路を通り、各経路においてバスたとえばＰＣＩ  Ｅｘｐｒｅｓｓ（登録商標）のオーダリングルールに従うようにすることによって、オーダリングが保証されるが、アドレスが異なる場合においては、同じソースノード、同じターゲットノードであっても、異なる経路でルーティングされることがあり、オーダリングの保証がない。たとえば、ソースノードのプロセッサユニット３０は、書込を行う際に、書込を行うアクセス要求パケット（以下書込パケットという）の発行後、複数回の書込を連続して行う場合には、該複数回の書込のうちの最後の書込を行うアクセス要求パケットの発行後に、通知パケットを発行するが、書込パケットと通知パケットの転送順序が入れ替わることがあるため、この通知パケットは、必ずしも先行の書込パケットの後にターゲットノードに到着するとは限らない。通知パケットが先行の書込パケットより先にターゲットノードに到着すると、ターゲットノードのプロセッサユニット３０は、まだ書込がされていないデータを読み出すように動作し、古いデータまたは無効のデータを読み出してしまうという問題が起きる。【００３８】
ブリッジ２０の、図５に示す制御部２２における確認部２４と順序保証部２５は、通知が、先行の書込パケットによる書込が完了した後に行われることを保証するために設けられたものである。確認部２４は、各書込パケットの出力後、この書込パケットによる書込が完了したかの確認を行う。ここで、直接アクセスにおける書込においてよく利用され、書込パケットの出力後、該書込が行われたか否かについてターゲットノードから通知されないコマンドたとえばＰｏｓｔｅｄ  Ｗｒｉｔｅを利用する場合について考える。この場合において、確認部２４は、書込パケットによる書込が完了したことを確認するために、読出を行うものであって、書込パケットにより指定されるグローバルアドレスと同じアドレスを指定したリードコマンドを含むアクセス要求パケット（以下確認パケットという）を生成して、下流ポート２８を介して出力する。この確認パケットを、ソースノードにおいて実行が失敗したときにエラーが返されるＮｏｎ−Ｐｏｓｔｅｄ  Ｒｅａｄで送信される。【００３９】
なお、この際、ソースノードとターゲットノードによる処理量、ネットワーク上を流れるデータ量を減らすために、この確認パケットは、０バイトの読出を行うものであることが好ましい。【００４０】
ＰＣＩでは、Ｎｏｎ−Ｐｏｓｔｅｄ  Ｒｅａｄは、Ｐｏｓｔｅｄ  Ｗｒｉｔｅを追い越さないという規則があるから、先行の書込パケットによる書込が完了しなければ、確認パケットによる読出ができないので、確認部２４は、確認パケットによる読出が失敗したことを示すエラーを受信した際には、先行の書込が完了していないことを知り、読出が成功したことを示す応答を受信したことによって、先行の書込が完了したことを確認する。【００４１】
上述したように、ソースノードのプロセッサユニット３０は、ターゲットノードのプロセッサユニット３０に「書込を行った」ことを通知するために、書込パケットの後に通知パケットを発行してブリッジ２０に出力する。この通知パケットは、先行の書込パケットによる指定されるターゲットノードと同じノードを指定する。【００４２】
ここで、ブリッジ２０はソースノードのプロセッサユニット３０から通知パケットを受信すると、制御部２２における順序保証部２５によりこの通知パケットの出力を制御する。具体的には、確認部２４による確認パケットを用いた確認結果が、通知パケットより先に発行された全ての、同じアドレスを指定する書込パケットによる書込が完了したことを示すこと条件として、この通知パケットの出力を許可する。【００４３】
なお、スイッチ５０に出力される確認パケットと通知パケットが指定するアドレスは、他のアクセス要求パケットと同じようにグローバルアドレスである。確認パケットについては、確認部２４は、グローバルアドレスを指定するように直接生成するようにしてもよいし、確認部２４は実効アドレスを指定するように生成して、変換部２３により他のアクセス要求パケットの場合と同じようにグローバルアドレスへの変換を行うようにしてもよい。【００４４】
このように、確認部２４と順序保証部２５によって、通知パケットは、書込が行われた後に出力されることを保証される。【００４５】
次に、ネットワーク上の複数のノードが並列に同じアプリケーションを処理可能な分散アプリケーションシステムにこの技術を適用した場合について説明する。【００４６】
この場合において、アプリケーションを実行するノード、具体的にはノードに含まれるプロセッサユニットにおけるメモリには、動作中のアプリケーション毎にエリアが割り当てられている。本発明者が提案する技術は、分散アプリケーションシステムにおいて、異なるノードで動作する同じアプリケーション間で、このアプリケーションに対して割り当てられたエリアにアクセスすることを容易にする。【００４７】
そのために、アプリケーション識別番号（以下アプリケーションＩＤまたはＡＰＩＤという）を導入し、図３に示すグローバルアドレス空間を、このアプリケーションＩＤを用いて論理的に区分けする。【００４８】
アプリケーションＩＤは、動作中のアプリケーション毎に付与された、システム全体において一意にこのアプリケーションを識別するものである。すなわち、異なる複数のノードで動作する同じアプリケーションは、同じアプリケーションＩＤを有することになる。【００４９】
図７は、この場合のグローバルアドレス空間の概念を示す。右側のアドレス空間は各ノード、または当該ノードにおいて動作するアプリケーションに対応する実効アドレス空間である。中央のアドレス空間は、情報処理システム内に点在する同じアプリケーションに対応する実効アドレス空間の集合である。左側のアドレス空間は、情報処理システム内の各アプリケーションに対応するアドレス空間の集合である。【００５０】
図１に示すシステム構成を利用して、この場合におけるノード間のアクセスを説明する。
ソースノードのプロセッサユニット３０は、ターゲットノードにアクセスする際に、ターゲットノードの実効アドレスを指定したアクセス要求パケットを発行して、ブリッジ２０に出力する。【００５１】
ブリッジ２０の変換部２３は、ターゲットノードの実効アドレスに、ＡＰＩＤと、ターゲットノードのノードＩＤとを付加することによって、ターゲットノードの実効アドレスをグローバルアドレスに変換して、下流ポートを介して、このグローバルアドレスを指定するアクセス要求パケットをスイッチ５０に出力する。【００５２】
図８は、グローバルアドレスのフォーマットの一例を示す。図示のように、このグローバルアドレスは、ＡＰＩＤ、ターゲットノードのノードＩＤ、実効アドレスによって構成される。【００５３】
なお、グローバルアドレスのフォーマットは、図８に示す例に限られることがない。ＡＰＩＤは、アクセス要求パケットに含まれ、ターゲットノードのブリッジ２０により読出可能であればよく、たとえばグローバルアドレスのフォーマットとして図６に示すフォーマットを用い、ＡＰＩＤをアクセス要求パケットに格納するようにしてもよい。【００５４】
ターゲットノードとなるノード４０のブリッジ２０は、アクセス要求パケットを受け取ると、変換部２３は、アクセス要求パケットからＡＰＩＤを読み出し、このＡＰＩＤとともに、アクセス要求パケットにより指定された実効アドレスをノード４０に渡す。【００５５】
プロセッサユニット３０は、実効アドレスを、ＡＰＩＤに対応するアプリケーションに対して設けられたエリアの物理アドレスに変換する。【００５６】
このように、各ノードにおける実効アドレスがマッピングされたグローバル空間を、さらにＡＰＩＤを用いて論理的に区分けし、グローバルアドレスにＡＰＩＤを付加するかアクセス要求パケットにＡＰＩＤを格納することによって、ユーザアプリケーションが容易に、ノード間にまたがってアプリケーションが利用するメモリ空間にアクセスする可能となる。  さらに、この場合において、プロセッサユニットは、ブリッジから渡されたＡＰＩＤを利用して、このアクセスの許否を決定するようにすることが好ましい。【００５７】
たとえば、プロセッサユニットは、実効アドレスを物理アドレスに変換する際に、変換のためのアドレス変換テーブルを用いることが考えられる。このアドレス変換テーブルに、アクセス要求先である物理アドレス空間へのアクセス許可または禁止を示す許可識別番号を付加する。ここで許可識別番号とは例えば、各物理アドレス空間毎にアクセスを許可するＡＰＩＤである。そして、プロセッサユニットは、この変換テーブルを参照して実効アドレスを物理アドレスに変換する際に、ブリッジから渡されたＡＰＩＤと、変換テーブルにおいてこの実効アドレスに対応付けられた許可識別番号と一致するか否かにより、この実効アドレスに対するアクセスの許否を決定することができる。【００５８】
こうすることによって、アプリケーションがノード間にまたがって動作し、且つ各ノードにおいてはプロセッサユニットまたはアプリケーションが最大パフォーマンスで動作するように各々の実効メモリ空間の内部構成が最適化された状態において、当該実効メモリ空間のノード間の相互アクセスを容易にするとともに、所定のアプリケーションに対して割り当てられたエリアが、異なるアプリケーションからアクセスされることを防ぐことができ、安全である。【００５９】
また、実効アドレスから物理アドレスへの変換を、プロセッサユニット側において行うことによって、ブリッジの構成を単純にすることができる。さらに、プロセッサユニット側において、ブリッジとは独立に変換テーブルの調整などができる。さらに、ＩＯデバイスやメモリサイズの異なる種類のノードが混在しても、同じ構成のブリッジでノード間のアクセスを可能にすることができる。【００６０】
さらに、この場合においても、ブリッジ２０の確認部２４と順序保証部２５により、書込を通知する通知パケットが、先行の書込パケットによる書込が完了した後に出力されることを保証することができる。【００６１】
以下、本発明の実施の形態について、以上の概要を具現化してシステムを説明する。
図９は、本発明にかかる実施の形態による情報処理システムの構成を示す。この情報処理システムは、複数のノード１００と、これらのノードを接続してネットワークを形成するスイッチ８０を備える。ノード１００は、図示しない接続用バスでスイッチ８０と接続されており、この接続用バスは、たとえばＰＣＩバスとする。また、スイッチ８０はたとえばＰＣＩ−ＰＣＩブリッジにより構成される。なお、ＰＣＩバスは、ＰＣＩ、ＰＣＩ−Ｘ、ＰＣＩ  Ｅｘｐｒｅｓｓ（登録商標）のいずれの仕様によるものでもよい。【００６２】
図１０は、図９に示す情報処理システムにおけるノード１００の構成例を示す。ノード１００は、ブリッジ１１０と、マルチコアプロセッサ１２０と、メインメモリ１８０とを有する。【００６３】
マルチコアプロセッサ１２０は、ワンチップで形成されており、メインプロセッサＰＰＥ（Ｐｏｗｅｒ  Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）１４０と、複数、図示の例では８つのサブプロセッサＳＰＥ（Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）１３０と、ＩＯインターフェイス（以下ＩＯＩＦという）１６０と、メモリコントローラ１７０とを有し、これらは、リングバス１５０によって接続される。【００６４】
メインメモリ１８０は、マルチコアプロセッサ１２０の各処理ユニットの共有メモリであり、メモリコントローラ１７０と接続されている。【００６５】
メモリコントローラ１７０は、ＰＰＥ１４０および各ＳＰＥ１３０がメインメモリ１８０にアクセスする仲介を行う。なお、図１０に示す例では、メインメモリ１８０はマルチコアプロセッサ１２０の外部に設けられているが、マルチコアプロセッサ１２０内に含まれるように設けられてもよい。【００６６】
ＩＯＩＦ１６０は、図示しないＩＯＥＦバスによってブリッジ１１０と接続され、ブリッジ１１０と協働して、各ノード１００間のアクセスを可能にする。ＩＯＩＦ１６０には、ＩＯコントローラ１６４が含まれている。【００６７】
ＳＰＥ１３０は、コア１３２と、ローカルメモリ１３４と、メモリコントローラ（以下ＭＦＣという）１３６とを備え、ＭＦＣ１３６には、ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）１３８が含まれている。なお、ローカルメモリ１３４は、従来のハードウェアキャッシュメモリではないことが望ましく、それには、ハードウェアキャッシュメモリ機能を実現するための、チップ内蔵またはチップ外に置かれたハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが無い。【００６８】
ＰＰＥ１４０は、コア１４２と、Ｌ１キャッシュ１４４と、Ｌ２キャッシュ１４５と、ＭＦＣ１４６とを備え、ＭＦＣ１４６には、ＤＭＡＣ１４８が含まれている。【００６９】
通常、マルチコアプロセッサ１２０のオペレーティングシステム（以下ＯＳともいう）は、ＰＰＥ１４０において動作し、ＯＳの基本処理に基づいて、各ＳＰＥ１３０で動作するプログラムが決定される。また、ＳＰＥ１３０で動作するプログラムは、ＯＳの機能の一部をなすようなプログラム（たとえばデバイスドライバや、システムプログラムの一部など）であってもよい。なお、ＰＰＥ１４０とＳＰＥ１３０の命令セットアーキテクチャは、異なる命令セットを有する。【００７０】
図９に示す情報処理システムは、複数のマルチコアプロセッサ１２０上で同じアプリケーションが動作可能な分散アプリケーションシステムである。このシステムにおいて、図７に示すグローバルアドレス空間が用いられる。【００７１】
図１１は、ブリッジ１１０の構成を示す。ブリッジ１１０は、第１の入出力部１１２、ブリッジコントローラ１１４と、第２の入出力部１１８を有し、ブリッジコントローラ１１４には、レジスタ群１１６が含まれている。【００７２】
第１の入出力部１１２と第２の入出力部１１８は、図４に示すブリッジ２０の上流ポート２１と下流ポート２８とそれぞれ同じであり、ここで詳細な説明を省略する。【００７３】
ブリッジコントローラ１１４は、自身が属するノードがソースノードであるときに、マルチコアプロセッサ１２０により発行されたアクセス要求パケットが指定した実効アドレスをグローバルアドレスへの変換を行う。また、自身が属するノードがターゲットノードとしてアクセスされたときに、第２の入出力部１１８によって受信したアクセス要求パケットに含まれるグローバルアドレスからアクセス要求元ノードＩＤまたはＡＰＩＤを読み出し、このＡＰＩＤとともに、アクセス要求パケットが指定した実効アドレスをマルチコアプロセッサ１２０に渡す。【００７４】
また、ブリッジコントローラ１１４は、図５に示す制御部２２と同じように、確認部２４と順序保証部２５が行う、すなわち書込が完了したことを確認する処理と、確認の結果を用いて、通知パケットの出力を制御して順序保証を行う処理も行う。【００７５】
ブリッジコントローラ１１４内には、各ノード１００における実効アドレスとＩＯアドレスの変換を行うためのＩＯアドレス空間が存在する。ＩＯアドレス空間は１つまたは複数のセグメントに分割され、さらに各セグメントは１つまたは複数のページに分割される。ブリッジコントローラ１１４は、変換を行うためのレジスタを各ページ毎に備え、それらレジスタの集合がレジスタ群１１６である。ブリッジコントローラ１１４が備える変換用レジスタは、当該ページへのアクセスが許可されているアクセス要求元ノードＩＤまたはアクセス要求元アプリケーションの識別情報であるＡＰＩＤ、当該ページに対応付けてマッピングされたメインメモリ１８０における物理アドレス等を各ページ毎に含む。【００７６】
各ページ毎の情報は、システムプログラムによってＩＯＩＦ１６０を経由してレジスタ群１１６に含まれる該当のレジスタに書き込まれる。【００７７】
ここで、ノード１００間のアクセスについて説明する。
まず、アクセスを行うノード１００の動作を説明する。【００７８】
ノード１００に含まれるマルチコアプロセッサ１２０はターゲットノードとなる他のノードにアクセスする。アクセスするのにあたり、マルチコアプロセッサ１２０は、アクセス要求パケットをブリッジ１１０に発行する。このアクセス要求パケットは、ターゲットノードにおけるアクセス要求先アプリケーションの実効アドレスを含む。なお、このアクセス要求パケットは、マルチコアプロセッサ１２０に含まれるいずれかの処理ユニットのＤＭＡＣから発行される。【００７９】
ブリッジ１１０のブリッジコントローラ１１４は、実効アドレスをグローバルアドレスに変換する。ここで、グローバルアドレスについては、図８に示すフォーマットが用いられる。すなわち、ブリッジコントローラ１１４により得られたグローバルアドレスは、アクセスを要求するアプリケーションのＡＰＩＤと、ターゲットノードのノードＩＤと、ターゲットノードにおける実効アドレスから構成される。さらにここで、アクセス要求パケットにはアクセス要求元であるソースノードのノードＩＤが追加される。【００８０】
スイッチ８０は、このグローバルアドレスを指定したアクセス要求パケットに含まれるノードＩＤを読み取り、このノードＩＤにより示されるターゲットノードにアクセス要求パケットを転送する。【００８１】
マルチコアプロセッサ１２０は、書込を行うためのアクセスをする際に、書込パケットを発行した後に、書込を行ったことをターゲットノードに通知する通知パケットを発行する。なお、連続して書込を行う場合には、書込パケットを連続して発行するとともに、最後の書込パケットの後に、通知パケットを発行する。マルチコアプロセッサ１２０は、この通知パケットに対して、先行した各書込パケットによる書込が完了した後に出力されることを要求することを示すたとえば「ｆｅｎｃｅ」属性を付けてブリッジ１１０に出力する。【００８２】
ブリッジ１１０のブリッジコントローラ１１４は、それぞれの書込パケットに対してその出力後、０バイトの読出を行う確認パケットを生成して、第２の入出力部１１８を介して出力する。そして、この読出を行ったことを示す応答を受信したことによって、書込の完了を確認する。【００８３】
ブリッジコントローラ１１４は「ｆｅｎｃｅ」属性が付けられた通知パケットをマルチコアプロセッサ１２０から受信すると、先行の書込パケットに対する確認パケットを用いた確認結果が、通知パケットより先に発行された書込パケット（連続して複数の書込パケットが発行された場合においてはこれらのすべての書込パケット）による書込が完了したことを示すこと条件として、この通知パケットの出力を許可する。【００８４】
次に、アクセスされる側のノード１００、すなわちターゲットノードの動作について説明する。【００８５】
ターゲットノードとなるノード１００のブリッジ１１０はアクセス要求パケットを受信すると、ブリッジコントローラ１１４によりアクセス要求パケットに含まれるアクセス要求元ノードＩＤまたはＡＰＩＤを読み出す。そして、アクセス要求パケットに含まれる実効アドレスを、ＩＯアドレスに変換する。【００８６】
ブリッジ１１０は、このようにして得たＩＯアドレスを、アクセス要求元ノードＩＤまたはＡＰＩＤとともにマルチコアプロセッサ１２０のＩＯＩＦ１６０に送信する。【００８７】
ＩＯＩＦ１６０のＩＯコントローラ１６４は、ＩＯアドレスを、メインメモリ１８０における物理アドレスに変換する。図１２は、この変換に用いられた変換テーブルおよび変換の結果の例を示す。【００８８】
メインメモリ１８０がセグメントに分けられており、各セグメントはまた所定のページサイズのページに分けられている。ページサイズが４ＫＢであるときに、３６ビットのＩＯアドレスの各ビットは下記のように規定される：ＩＯ  Ａｄｄｒｅｓｓ［３４：２８］＝セグメント、ＩＯ  Ａｄｄｒｅｓｓ［２７：１２］＝ページ、ＩＯ  Ａｄｄｒｅｓｓ［１１：０］＝オフセット。【００８９】
図１２に示すように変換テーブルは、セグメントに含まれる各ページ毎に物理アドレス空間をマッピングするとともに、許可識別番号ＩＯＩＤによってアクセス許可／禁止を示している。ここでＩＯＩＤは、対応する物理アドレス（空間）へのアクセスが許可されているアクセス要求元ノードＩＤまたはアプリケーションの識別情報であるＡＰＩＤを示す。【００９０】
ＩＯコントローラ１６４は、ブリッジ１１０から受信したＩＯアドレスにより表されるセグメント番号、ページ番号について、変換テーブルを参照して、アクセスが許可されているか否かを見出す。たとえば、「セグメント＝１、ページ＝２、オフセット＝０」を示すＩＯアドレスとともに受信したアクセス要求元ノードＩＤまたはＡＰＩＤがＣである場合には、変換テーブルはセグメント＝１、ページ＝２に対してＩＯＩＤ＝Ｃを対応づけ、アクセス要求元ノードＩＤ＝Ｃで識別されるノードまたはＡＰＩＤ＝Ｃで識別されるアプリケーションによる物理アドレスｄへのアクセスが許可されることを規定しているので、ＩＯコントローラ１６４は、物理アドレスｄへのアクセスを許可する。一方、「セグメント＝１２７、ページ＝１、オフセット＝０」を示すＩＯアドレスとともに受信したアクセス要求元ノードＩＤまたはＡＰＩＤがＣである場合には、変換テーブルはセグメント＝１２７、ページ＝１に対してＩＯＩＤ＝Ｄを対応づけ、アクセス要求元ノードＩＤ＝Ｃで識別されるノードまたはＡＰＩＤ＝Ｃで識別されるアプリケーションによるアクセスが許可されないことを示しているので、ＩＯコントローラ１６４は、エラー信号を返して、アクセスを拒否する。【００９１】
なお、変換テーブルからわかるように、同じアクセス要求元ノードまたは同じアプリケーション（たとえばＩＯＩＤ＝Ａに対応するアクセス要求元ノードまたはアプリケーション）に対して、メモリ上の連続したエリア（物理アドレスａ、ｂにより示されるエリア）にマッピングされる。【００９２】
以上の構成によれば、ネットワークにより接続されたマルチプロセッサシステムにおいて、リソースの透過性を実現するとともに、オーダリングの制御が可能となる。【００９３】
図９に示す情報システムは、例としてスイッチ一つのみのシステムとしているが、上述したオーダリング制御の技術を、複数のスイッチにより拡張されたシステムにおける各ノード間のアクセスにも適用することができる。【００９４】
このようなシステムでは、たとえ同一ソース、同一ターゲットノードであっても、異なるルーティングバスを経由してコマンドやデータが届けられることを想定するため、連続的に発行するコマンドのオーダリングを保証することができない。【００９５】
一方、ルーティングに関して、完全に制約を無くしてしまったり、Ｅｔｈｅｒｎｅｔ（登録商標）のようなネットワークのようにパケットの消失を許容してしまうと、プロトコルが複雑になるため、ここで、システムに与える制約として、同一ソースノード、同一アドレスのルーティングパスは、同一になるというのを加える。そして、同一ルーティングパスに関しては、ＰＣＩたとえばＰＣＩ  Ｅｘｐｒｅｓｓ（登録商標）のオーダリングルールに従うという制約を加える。【００９６】
このような制限を加えると、あるノードのプロセッサユニットから発行したライトコマンドは、同一ノードが同じアドレスに対してリードコマンドを発行し、応答を待つことによって、先に発行したライトコマンドの完了を保証することができるようになる。【００９７】
あるプロセッサユニットが複数のライトコマンドによってデータを転送し、その完了を通知するために１つの通知コマンドを発行する場合、通知コマンドは、前に発行されたすべてのライトが完了した後に発行する必要がある。オーダリングを保証するには、同じアドレスに対するリードコマンドの完了が必要であるというルールに従うと、通知コマンドを発行する前に、以前に発行したライトコマンドと同一アドレスのリードコマンドがすべて完了する必要がある。【００９８】
ブリッジでは、ライトコマンドを発行した後に、同一アドレスにたとえば０バイトのリードコマンドを発行する機能を実装する。また、オーダリングが要求されるコマンド（オーダリングフラグ付きコマンド）に関しては、前に発行されたすべてのリードコマンドが完了した後での発行が保証される。なお、オーダリングフラグは、たとえばアドレスを変換するレジスタの一部として、ユーザが設定できる領域に実装されるようにしてもよい。【００９９】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。【０１００】
たとえば、図９に示す情報処理システムにおいて、アプリケーションＩＤすなわちＡＰＩＤをＩＯＩＤとして用いて、異なるノード間において、所定のアプリケーションに対して割り当てられたエリアが、異なるアプリケーションからアクセスされることを防ぐようにしている。たとえば、ＡＰＩＤの代わりにアクセス元のノードＩＤを用いて、このノードＩＤに割り当てられたエリアが他のノードによりアクセスされることを防ぐようにしてもよい。【０１０１】
また、スイッチ８０はＰＣＩバスを相互接続するものであったが、ＰＣＩ以外の規格のバスを相互接続するスイッチを用いてネットワークを構成してもよい。
【産業上の利用可能性】
【０１０２】
本発明は、コンピュータネットワーク上におけるノード間のアクセス技術に利用できる。
【図１】
0004469010.tif 000002
【図２】
0004469010.tif 000003
【図３】
0004469010.tif 000004
【図４】
0004469010.tif 000005
【図５】
0004469010.tif 000006
【図６】
0004469010.tif 000007
【図７】
0004469010.tif 000008
【図８】
0004469010.tif 000009
【図９】
0004469010.tif 000010
【図１０】
0004469010.tif 000011
【図１１】
0004469010.tif 000012
【図１２】
0004469010.tif 000013