(57)【要約】【課題】主記憶と独立して管理されるメモリを備えたサブシステムを有する計算ノードで並列計算機システムを構成し、サブシステムと他の計算ノードを中継する通信アダプタで主記憶を経由せずに直接データ転送を行うことを目的とする。【解決手段】ＣＰＵと主記憶を備えた情報処理装置であって、主記憶に対してデータをＤＭＡ転送する通信アダプタと、前記主記憶とは独立したメモリを有するサブシステムと、前記主記憶の特定のアドレス範囲に対する前記通信アダプタからのＤＭＡ転送を、前記サブシステムのメモリに対するＤＭＡ転送に変換する経路変換部と、を備える。【選択図】図１
2014026531.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと主記憶を備えた情報処理装置であって、
前記主記憶に対してデータをＤＭＡ転送する通信アダプタと、
前記主記憶とは独立したメモリを有するサブシステムと、
前記主記憶の特定のアドレス範囲に対する前記通信アダプタからのＤＭＡ転送を、前記サブシステムのメモリに対するＤＭＡ転送に変換する経路変換部と、
を備えた情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記経路変換部は、
前記主記憶の特定のアドレス範囲と、前記サブシステムのメモリのアドレス範囲とを受け付けて、前記主記憶の特定のアドレス範囲と、前記サブシステムのメモリのアドレス範囲とを組にして保持するアドレス変換情報と、
前記主記憶に対するＤＭＡ転送のアドレスが、前記アドレス変換情報の特定のアドレス範囲に含まれるか否かを判定する判別部と、を有し、
前記主記憶に対するＤＭＡ転送のアドレスが、前記アドレス変換情報の特定のアドレス範囲に含まれる場合には、前記ＤＭＡの転送を前記サブシステムのメモリのアドレス範囲に変換することを特徴とする情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、
前記主記憶の特定のアドレス範囲には、前記ＤＭＡ転送を行うデータは格納されず、前記サブシステムのメモリのアドレス範囲に前記ＤＭＡ転送を行うデータが格納されることを特徴とする情報処理装置。
【請求項４】
請求項２に記載の情報処理装置であって、
前記経路変換部は、
前記ＤＭＡ転送の終了後に、前記アドレス変換情報の前特定のアドレス範囲と、前記サブシステムのメモリのアドレス範囲の組を無効化することを特徴とする情報処理装置。
【請求項５】
請求項１に記載の情報処理装置であって、
前記経路変換部は、
前記ＤＭＡ転送のうち、前記通信アダプタからのＤＭＡリードを、前記サブシステムからのＤＭＡライトに変換し、前記通信アダプタからのＤＭＡライトを、前記サブシステムからのＤＭＡリードに変換することを特徴とする情報処理装置。
【請求項６】
請求項１に記載の情報処理装置であって、
前記経路変換部は、
前記通信アダプタを接続する第１のポートと、
前記サブシステムを接続する第２のポートと、
を備えたスイッチであることを特徴とする情報処理装置。
【請求項７】
ＣＰＵと主記憶を備えた情報処理装置のデータ転送方法であって、
前記情報処理装置は、
主記憶に対してデータをＤＭＡ転送する通信アダプタと、前記主記憶とは独立したメモリを有するサブシステムと、を備え、
前記情報処理装置が、前記主記憶の特定のアドレス範囲に対する前記通信アダプタからのＤＭＡ転送を受け付ける第１のステップと、
前記情報処理装置が、前記主記憶の特定のアドレス範囲に対する前記通信アダプタからのＤＭＡ転送を、前記サブシステムのメモリに対するＤＭＡ転送に変換する第２のステップと、
を含むことを特徴とする情報処理装置のデータ転送方法。
【請求項８】
請求項７に記載の情報処理装置のデータ転送方法であって、
前記第２のステップは、
前記主記憶の特定のアドレス範囲と、前記サブシステムのメモリのアドレス範囲とを受け付けて、前記主記憶の特定のアドレス範囲と、前記サブシステムのメモリのアドレス範囲とを組にして保持するステップと、
前記主記憶に対するＤＭＡ転送のアドレスが、前記アドレス変換情報の特定のアドレス範囲に含まれるか否かを判定するステップと、を含み、
前記主記憶に対するＤＭＡ転送のアドレスが、前記アドレス変換情報の特定のアドレス範囲に含まれる場合には、前記ＤＭＡの転送を前記サブシステムのメモリのアドレス範囲に変換することを特徴とする情報処理装置のデータ転送方法。
【請求項９】
請求項８に記載の情報処理装置のデータ転送方法であって、
前記主記憶の特定のアドレス範囲には、前記ＤＭＡ転送を行うデータは格納されず、前記サブシステムのメモリのアドレス範囲に前記ＤＭＡ転送を行うデータが格納されることを特徴とする情報処理装置のデータ転送方法。
【請求項１０】
請求項８に記載の情報処理装置のデータ転送方法であって、
前記第２のステップは、
前記ＤＭＡ転送の終了後に、前記アドレス変換情報の前特定のアドレス範囲と、前記サブシステムのメモリのアドレス範囲の組を無効化するステップを、さらに含むことを特徴とする情報処理装置のデータ転送方法。
【請求項１１】
請求項７に記載の情報処理装置のデータ転送方法であって、
前記第２のステップは、
前記ＤＭＡ転送のうち、前記通信アダプタからのＤＭＡリードを、前記サブシステムからのＤＭＡライトに変換し、前記通信アダプタからのＤＭＡライトを、前記サブシステムからのＤＭＡリードに変換することを特徴とする情報処理装置のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主記憶とは独立したメモリを有するサブシステムが、通信アダプタを経由して送受信されるデータの処理を行う情報処理装置に関するものである。
【背景技術】
【０００２】
大規模な科学技術計算を高性能で実行するため、アクセラレータを備える計算ノードを高速ネットワークで接続した並列計算機が実用化されている。ここで計算ノードには、マルチコアＣＰＵと主記憶及びハードディスクといった一般的なシステム構成に加え、時間のかかる一部の処理をＣＰＵからオフロードして高速に実行するためのアクセラレータと、多数の計算ノードが協調して処理を進めるためのデータ転送を行うための通信アダプタを備える。
【０００３】
アクセラレータと通信アダプタは、PCI Expressデバイスとして入出力ハブに接続される。アクセラレータは、主記憶に匹敵する容量で独立したメモリを備え、処理に必要なデータは、主記憶との間でPCI Expressを経由して転送される。アクセラレータとして、グラフィックメモリを内蔵するGPUを利用した並列計算機システムが実用に供されている。
【０００４】
一方、通信アダプタは、独立したメモリは持たず、主記憶にPCI Expressを経由してアクセスする。計算ノード間の通信は、通信アダプタを初期化し通信アダプタ間の接続を確立した後、通信データのアドレス等を格納した通信制御情報を主記憶上に用意して、通信アダプタに通知することで起動される。
【０００５】
通信アダプタは、主記憶から読み込んだ通信制御情報をもとに、送信及び受信データの主記憶に対する読み出し及び書き込みを行う。並列計算機で用いられるノード間の通信ネットワークの一例であるInfiniBandでは、各計算ノードに通信アダプタとしてＨＣＡ（Host Channel Adapter）が搭載される（例えば、特許文献１、２）。
【０００６】
通信データがアクセラレータのメモリに存在する場合には、送信起動前にアクセラレータが送信データの主記憶に対する書き込みを行い、通信アダプタは主記憶上のデータにアクセスしてネットワークに送信する。ネットワークからデータを受信した通信アダプタは主記憶に受信データを書き込み、受信完了後にアクセラレータが受信データの主記憶に対する読み出しを行うことになる。つまり、アクセラレータが別の計算ノードに搭載されたアクセラレータのメモリにあるデータを高速ネットワーク経由で取得する場合、それぞれの計算ノードの主記憶を経由してデータが転送されることになり、必要以上に転送時間及び主記憶容量がかかるというという欠点があった。
【０００７】
この改善策として、アクセラレータのメモリ上の通信データ領域をＰＣＩアドレス空間にマップするとともに、アクセラレータのメモリ管理情報を取得して通信データのアドレスに反映した通信制御情報を作成することにより、通信アダプタに対して通信データが存在するアクセラレータのメモリアドレスを通知する方法が知られている（例えば、非特許文献１）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１１−１１３１６３号公報
【特許文献２】米国特許第７９７９６０１号明細書
【非特許文献】
【０００９】
【非特許文献１】思敏、石川裕著、「メニーコア並列計算機における通信機構の設計」、情報処理学会研究報告、平成２４年３月１９日、Vol.2012-HPC-133 No.16
【発明の概要】
【発明が解決しようとする課題】
【００１０】
大規模な科学技術計算に用いられる並列計算機システムを構成する計算ノードにおいて、他の計算ノードとのデータ通信に用いられる通信アダプタは、入出力デバイスの一つとして接続され、通信対象データにアクセスする際には主記憶に対するＤＭＡ転送を行う。上述の非特許文献１では、上記通信アダプタに加えて入出力デバイスとしてメモリを備えたアクセラレータが接続された計算ノードを備えている。アクセラレータは、一部の計算を高速化する目的で設けられており、主記憶とは独立したメモリを備える。上記通信アダプタが、上記サブシステムのメモリ上のデータに直接アクセスするためには、初期化時にサブシステムのメモリ空間をＣＰＵのメモリ空間に割り当て、データ通信時に通信対象データのアドレスを通信アダプタに通知する必要がある。
【００１１】
しかしながら上記従来例では、計算ノードの資源管理を行うＯＳにおいて、アクセラレータのメモリ管理機能とノード間通信の制御機能を連携させる必要がある。つまりＯＳのメモリ管理は、主記憶に加えて、ＰＣＩアドレス空間にマップされた主記憶に匹敵する容量を備えたアクセラレータのメモリを管理対象としなければならず、アドレス及びメモリ保護の管理が煩雑になる、という問題があった。
【００１２】
本発明が解決しようとする問題点は、主記憶と独立して管理されるメモリを備えたサブシステムを有する計算ノードで並列計算機システムを構成した場合、サブシステムと他の計算ノードを中継する通信アダプタが主記憶を経由せずに直接データ転送を行うことができない点である。
【課題を解決するための手段】
【００１３】
本発明は、ＣＰＵと主記憶を備えた情報処理装置であって、主記憶に対してデータをＤＭＡ転送する通信アダプタと、前記主記憶とは独立したメモリを有するサブシステムと、前記主記憶の特定のアドレス範囲に対する前記通信アダプタからのＤＭＡ転送を、前記サブシステムのメモリに対するＤＭＡ転送に変換する経路変換部と、を備える。
【発明の効果】
【００１４】
本発明の情報処理装置は、主記憶上に実際には存在しない特定のアドレス範囲のアドレス情報を、サブシステム（例えば、アクセラレータ）と通信アダプタとを接続する経路変換部（例えば、スイッチ）で設定することにより、該当するアドレスへのＤＭＡを判別してアクセラレータから外部へのＤＭＡ、または、外部からアクセラレータへのＤＭＡに変換することができる。これにより、主記憶のアドレス空間とは独立して管理されるサブシステム（アクセラレータ）のメモリに対して、通信アダプタが主記憶を経由せずに直接データ転送できるという利点がある。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施例を示し、並列計算機を構成する計算ノードの構成を示すブロック図である。
【図２】本発明の第１の実施例を示し、データ送信時の通信制御情報および通信データのアクセスを例示した説明図である。
【図３】本発明の実施例を示し、計算ノードのアクセラレータからのデータ送信の手順を示すシーケンス図である。
【図４】本発明の第１の実施例を示し、データ受信時の通信制御情報および通信データのアクセスを例示した説明図である。
【図５】本発明の第１の実施例を示し、計算ノードのアクセラレータでデータを受信する手順を示すシーケンス図である。
【図６】本発明の第２の実施例を示し、入出力ハブと接続する上位ポートを、通信アダプタとアクセラレータに対して独立に備える構成を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、本発明を実施するための形態について図面を参照して詳細に説明する。なお、本発明は、以下に述べる実施形態により限定されるものではない。
【実施例１】
【００１７】
図１は、本発明の第１の実施例を示し、並列計算機を構成する情報処理装置の一例を示すブロック図である。図示の例では、ネットワーク（ノード間ネットワーク）９を介して接続された計算ノードＡ（８）と計算ノードＢ（８Ｂ）で並列計算機を構成する。なお、計算ノードＡ（８）と計算ノードＢ（８Ｂ）は同様の構成であるので、以下では、計算ノードＡについてのみ説明し、重複した説明を省略する。
【００１８】
計算ノードＡ（８）は、演算を行うＣＰＵ３と、データやプログラムを格納する主記憶２と、データの入出力を制御する入出力ハブ４と、入出力ハブ４に接続されて複数のデバイスを接続するスイッチ１と、入出力ハブ４に接続されてデータの入出力を行う入出力デバイス７と、スイッチ１とネットワーク９に接続されて通信を行う通信アダプタ５と、スイッチに接続されてメモリ６０とプロセッサ７０（図中ＰＵ）を備えたアクセラレータ６と、を備えた計算機である。また、通信アダプタ５とアクセラレータ６は、図示しないＤＭＡ制御部を備えて、ＤＭＡによりデータの転送を行うことができる。
【００１９】
ＣＰＵ３に内蔵されるメモリコントローラによって制御される主記憶２に、入出力デバイスを接続するための入出力ハブ４を経由して、通信アダプタ５と主記憶２から独立したメモリ６０を備えるアクセラレータ６とを接続する専用のスイッチ１が装備されているものとする。
【００２０】
スイッチ１は、ＰＣＩ Ｅｘｐｒｅｓｓに準拠しており、下流（下位）ポートには複数のデバイスを接続することができ、上流（上位）ポートに接続された入出力ハブ４と通信を行うデバイスを切り替えることができる。また、スイッチ１は、後述するように、各ポート間のＤＭＡ（Direct Memory Access）をサポートする。
【００２１】
アクセラレータ６は、ＣＰＵ３の処理の一部を高速に実行するデバイスで、例えば、メニーコアプロセッサやＧＰＧＰＵ（General-Purpose computing on Graphics Processing Units）等のプロセッサ（ＰＵ）７０と、大容量（例えば、８GB以上）のメモリ６０を備える。
【００２２】
スイッチ１は、入出力ハブ４に接続する上位ポート１１と、通信アダプタ５に接続する下位ポート１２と、アクセラレータ６に接続する下位ポート１３と、アクセラレータ６のメモリ６０に対してアクセスを行うアドレス領域を保持するアドレス変換表１４と、アドレス変換表１４へアドレス領域を登録するアドレス登録部１５と、アドレス変換表１４とＤＭＡアドレスとの比較を行うアドレス判別部１６と、主記憶２に対するＤＭＡをアクセラレータ６のメモリ６０に対するアクセスに変換するＤＭＡ変換部１７と、アドレス変換表１４をメモリマップするベースアドレスレジスタ１８とを有する。
【００２３】
上位ポート１１と、下位ポート１２、１３のそれぞれでは、入力信号（ＤＭＡリクエスト）を解析して、データアクセスの種別、アドレス及びデータ長を、アドレス判別部１６に渡す。アドレス判別部１６は、アドレス変換表１４をもとに、主記憶２に対するＤＭＡをアクセラレータ６のメモリ６０に対するアクセスに変換するか否かを判別する。また、ベースアドレスレジスタ１８をもとにアドレス変換表１４を設定あるいは参照する場合を判別する。
【００２４】
アドレス判別部１６が、下位ポート１２、１３に入力した主記憶２に対するＤＭＡリクエストが、アドレス変換表１４に登録された領域に対するＤＭＡであると判別すると、当該リクエストをＤＭＡ変換部１７に送る。このＤＭＡリクエストが、通信アダプタ５からのＤＭＡリードリクエストの場合、ＤＭＡ変換部１７は、下位ポート１３に対して、アクセラレータ６が当該リクエストの主記憶２のアドレスに対するＤＭＡライトを行うようにコマンドを送信する。
【００２５】
アクセラレータ６には、上記コマンドを監視するプロセスを起動しておき、当該プロセスがアドレス変換表１４に登録された領域に対するＤＭＡライトを行う。
【００２６】
下位ポート１３に入力したアクセラレータ６からのＤＭＡライトの主記憶２のアドレスが、アドレス変換表１４に登録された領域（ＭＭＭＭ〜ＭＭＭＭ＋ＬＬ）に対するＤＭＡである場合、アドレス判別部１６は、このＤＭＡライトをＤＭＡ変換部１７に送り、ＤＭＡ変換部１７は、通信アダプタ６からのＤＭＡリードリクエストに対するリプライに変換して、下位ポート１２に出力する。
【００２７】
下位ポート１２に入力された通信アダプタ５からのＤＭＡライトの主記憶２のアドレスが、アドレス変換表１４に登録された領域（ＭＭＭＭ〜ＭＭＭＭ＋ＬＬ）に対するＤＭＡである場合、アドレス判別部１６は、当該ＤＭＡライトをＤＭＡ変換部１７に送る。ＤＭＡ変換部１７は、アクセラレータ６から当該リクエストの主記憶アドレスＭＭＭＭ〜ＭＭＭＭ＋ＬＬに対するＤＭＡリードリクエストが到着している場合、当該ＤＭＡリードリクエストに対するリプライに変換して、下位ポート１３に出力する。当該ＤＭＡリードリクエストが未到着の場合、ＤＭＡ変換部１７は、下位ポート１３に対して、アクセラレータ６が当該リクエストの主記憶アドレスに対するＤＭＡリードを行うようにコマンドを送り、アクセラレータ６において上記コマンドを監視するプロセスが、アドレス変換表１４に登録された領域ＭＭＭＭ〜ＭＭＭＭ＋ＬＬに対するＤＭＡリードリクエストを行う。
【００２８】
アドレス判別部１６が、上位ポート１１に入力したＣＰＵ３からの入出力デバイスのレジスタに対するライトリクエストのアドレスが、ベースアドレスレジスタ１８のアドレス値から一定の範囲にあると判別すると、当該リクエストをアドレス登録部１５に送り、アドレス変換表１４への登録を行う。
【００２９】
アドレス判別部１６が上記条件に合致しないと判別した、ポート１１、１２、１３からの入力については、スイッチ１は、アドレスおよびアクセス種別の変換を行うことなく、アドレスによって決まるポートに透過的に出力する。
【００３０】
本発明のスイッチ１は、主記憶２のアドレスのうち、アドレス変換表１４に登録されたアドレスに対するＤＭＡリクエストであれば、アドレス判別部１６がアクセラレータ６のメモリ６０に対するＤＭＡであると判定する。そして、ＤＭＡ変換部１７が、通信アダプタ５からのＤＭＡリクエストを、主記憶２のアドレスに対するＤＭＡリクエストに変換にてアクセラレータ６にＤＭＡを実行させる。これにより、計算ノードＢと計算ノードＡのアクセラレータ６のメモリ６０との間で行われるＤＭＡリクエストを、計算ノードＡの主記憶２を経由せずに、アクセラレータ６のメモリ６０と計算機ノードＢ間のＤＭＡを通信アダプタ５を介して直接行うことができるのである。
【００３１】
なお、上述したように計算ノードＢの構成要素である主記憶２Ｂ〜アクセラレータ６Ｂのメモリ６０Ｂは、計算ノードＡの構成要素と同様である。
【００３２】
図２は、アクセラレータ６のメモリ６０に存在する（または格納された）通信データ６１を、他の計算ノード（例えば、計算ノードＢ）へ送信する際に、本発明のスイッチ１で行われる制御の一例を示すブロック図である。スイッチ１では主記憶２の送信制御情報２０とアクセラレータ６の通信データ６１に対してアクセスが発生する。なお、アクセラレータ６による送信の起動および送信完了の判定はＣＰＵ３で実行するプログラムで行われる。当該プログラムは、並列計算機を構成する複数の計算ノードで実行される並列処理のプログラムの一部であってもよい。
【００３３】
なお、図２において、主記憶２の所定の領域には、送信リクエストキュー２３と受信リクエストキュー２７及び通信完了情報キュー２５を格納する通信制御情報の領域２１が設定される。
【００３４】
ＣＰＵ３で実行されるプログラムは、送信の起動を行う前に、当該通信を行うための送信制御情報２０を格納する通信制御情報の領域２１と重複しない、主記憶２のアドレス領域２２の先頭アドレスＭＭＭＭと長さＬＬを取得し、アクセラレータ６のメモリ６０上の通信データ領域６２の先頭アドレスＡＡＡＡと長さＬＬとともに、アドレス変換表１４へ登録３０を行う。なお、先頭アドレスＭＭＭＭや転送先の計算ノードの情報は、各計算ノードで実行される並列処理プログラムで決定されたものであり、送信リクエストキュー２３の送信制御情報２０に設定される。なお、並列処理プログラムにおいて、ノード間でデータの転送を行う手法については、公知または周知の手法を用いればよいので、本実施例では詳述しない。
【００３５】
上記アドレス領域２２は、アクセラレータ６のメモリ６０上の通信データ領域６２に対応しているが、当該主記憶２のアドレス領域２２に通信データ６１は存在しない。
【００３６】
次に、ＣＰＵ３は、上記の主記憶２のアドレス領域２２内にあるアドレス範囲ＭＭＭＭ〜ＭＭＭＭ＋ＬＬを、通信データ６１のアドレスとして指定した送信制御情報２０を作成し、主記憶２に置かれた送信リクエストキュー２３にセットして、通信アダプタ５に対して送信起動の通知３１を行う。
【００３７】
通信アダプタ５は、送信リクエストキュー２３のポインタ５０を管理しており、未処理の送信制御情報２０を取得するためのＤＭＡリード５１を行う。当該ＤＭＡリード５１のアドレスは、アドレス変換表１４にセットされた主記憶２のアドレス領域と重複しないため、主記憶２に置かれた送信制御情報２０に対するＤＭＡリード５１が行われる。
【００３８】
次に通信アダプタ５は、通信データ６１を取得するため、上記送信制御情報２０に指定されているアドレスに対するＤＭＡリードリクエスト５２を行う。当該リクエスト５２のアドレスは、アドレス変換表１４にセットされた主記憶２のアドレス領域２２（ＭＭＭＭ〜ＭＭＭＭ＋ＬＬ）に含まれているため、スイッチ１のアドレス判別部１６は、アクセラレータ６に対してＤＭＡライトを行うように通知６３を行う。
【００３９】
このとき、スイッチ１のＤＭＡ変換部１７は、ＤＭＡリードリクエスト５２のアドレスとともに、アドレス領域２２の先頭アドレスＭＭＭＭからのオフセットＬＬを計算し、アドレス変換表１４に登録されている通信データ領域６２の先頭アドレスＡＡＡＡにオフセットＬＬを加えたアドレスを、ＤＭＡライトを行う通信データ６１のアドレスとして通知する。
【００４０】
つまり、ＤＭＡ変換部１７は、主記憶２のアドレス範囲ＭＭＭＭ〜ＭＭＭＭ＋ＬＬに対するＤＭＡリードを、アクセラレータ６のメモリ６０のアドレスＡＡＡＡから主記憶２のアドレスＭＭＭＭへのＤＭＡライトに変換して、アクセラレータ６に指令する。
【００４１】
アクセラレータ６は、メモリ６０のアドレスＡＡＡＡ〜ＡＡＡＡ＋ＬＬの通信データ６１を、ＤＭＡライト６４で送信する。このＤＭＡライト６４の送信先アドレスは、通信アダプタ５からのＤＭＡリードリクエスト５２のアドレスＭＭＭＭ〜ＭＭＭＭ＋ＬＬと一致させる。
【００４２】
スイッチ１のＤＭＡ変換部１７は、アクセラレータ６からアドレス範囲ＭＭＭＭ〜ＭＭＭＭ＋ＬＬへのＤＭＡライトを、ＤＭＡリードのリプライ５３に変換して通信アダプタ５に出力する。
【００４３】
アクセラレータ６からのＤＭＡライトに代わって、ＤＭＡ変換部１７で変換された主記憶２のアドレスＭＭＭＭからのＤＭＡリプライ５３を受信した通信アダプタ５は、受信したデータを、他の計算ノードへ通信データ６１を送信する。
【００４４】
データ送信が完了すると、通信アダプタ５は、通信エラーの有無などの通信完了情報２４を作成し、主記憶２の通信完了情報キュー２５に対して通信完了情報２４のＤＭＡライト５４を行う。当該ＤＭＡライト５４のアドレスは、アドレス変換表１４にセットされた主記憶２のアドレス領域と重複しないため、アドレス判別部１６は当該ＤＭＡアクセスを透過させ、主記憶２の通信完了情報キュー２５に対するＤＭＡライト５４が行われる。
【００４５】
ＣＰＵ３で実行されるプログラムは、通信完了情報２４の参照を行い、通信データ領域６２についての通信が終了すると、アドレス変換表１４における当該通信データ領域６２のエントリの無効化３２を行う。
【００４６】
これにより、アドレス変換表１４の主記憶アドレスが無効化された後は、通信アダプタ５と主記憶２のアドレスＭＭＭＭの間でＤＭＡアクセスが発生しても、アドレス判別部１６はアドレス変換表１４の主記憶２のアドレスＭＭＭＭが無効であるため、当該ＤＭＡアクセスを透過させる。
【００４７】
図３は、図２に示すデータ送信手順を示すシーケンス図である。図２で示したように、スイッチ１は、アクセラレータ６のメモリ６０に存在する通信データ領域６２のアドレスＡＡＡＡを、主記憶２上のアドレス領域２２と組にして、当該データ領域６２の通信の開始から終了までの間、スイッチ１のアドレス変換表１４に保持する形態を採用したので、主記憶２のアドレス空間とは独立して管理されるアクセラレータ６のメモリ６０に対して、通信アダプタ５が主記憶２を経由せずに直接データ送信できるという効果がある。
【００４８】
図４は、他の計算ノードから受信したデータを、アクセラレータ６のメモリ６０に存在する通信データ領域６２に格納する説明図である。通信アダプタ５が他の計算ノードから受信したデータを、スイッチ１が主記憶２に代わってアクセラレータ６のメモリ６０で受信させる処理を示す。なお、受信の起動および受信完了の判定はＣＰＵ３で実行されるプログラムが行う場合を示す。当該プログラムは、上記図２、図３と同様に、並列計算機を構成する複数の計算ノードで実行される並列処理のプログラムの一部であってもよい。
【００４９】
ＣＰＵ３で実行されるプログラムは、アクセラレータ６による受信の起動を行う前に、当該通信を行うための受信制御情報２６を格納する通信制御情報の領域２１と重複しない、主記憶２のアドレス領域２２の先頭アドレスＭＭＭＭと長さＬＬを取得する。そして、ＣＰＵ３は、アクセラレータ６のメモリ６０上の通信データ領域６２の先頭アドレスＡＡＡＡと長さＬＬを、主記憶２のアドレス領域２２の先頭アドレスＭＭＭＭと長さＬＬを組にして、アドレス変換表１４への登録３０を行う。
【００５０】
主記憶２の上記アドレス領域２２は、上記通信データ領域６２に対応しているが、主記憶２のアドレスＭＭＭＭに通信データ６１は格納されない。
【００５１】
次に、ＣＰＵ３は、上記の主記憶２のアドレス領域２２内にあるアドレス範囲ＭＭＭＭ〜ＭＭＭＭ＋ＬＬを、データを受信するアドレスとして指定した受信制御情報２６を作成し、主記憶２に設定された受信リクエストキュー２７にセットして、通信アダプタ５に対して受信の起動通知３３を行う。
【００５２】
さらに、ＣＰＵ３は、アクセラレータ６に対して、通信データ６１のＤＭＡリードリクエスト６５を行うように通知３４を行う。このとき、ＣＰＵ３は、受信制御情報２６に指定したアドレス領域２２内のアドレスとともに、アドレス領域２２の先頭アドレスＭＭＭＭからのオフセットＬＬを計算し、アドレス変換表１４に登録した通信データ領域６２の先頭アドレスＡＡＡＡにオフセットＬＬを加えたアドレスを、ＤＭＡリードリプライデータの格納アドレスとしてアクセラレータ６に通知する。
【００５３】
上記通知３４を受けたアクセラレータ６は、受信制御情報２６に指定されたアドレスＭＭＭＭアドレスに対するＤＭＡリードリクエスト６５を行う。
【００５４】
当該リクエスト６５のアドレスＭＭＭＭは、アドレス変換表１４にセットされた主記憶２のアドレス領域２２に含まれているため、スイッチ１のアドレス判別部１６は、当該リクエスト６５をＤＭＡ変換部１７において保持するよう指令する。
【００５５】
通信アダプタ５は、受信リクエストキュー２７のポインタ５５を管理しており、未処理の受信制御情報２６を取得するためのＤＭＡリード５６を行う。当該ＤＭＡリード５６のアドレスは、アドレス変換表１４にセットされた主記憶２のアドレス領域ＭＭＭＭ〜ＭＭＭＭ＋ＬＬと重複しないため、主記憶２に置かれた受信制御情報２６に対するＤＭＡリード５６が行われる。つまり、アドレス判別部１６は、通信アダプタ５のＤＭＡアクセス先のアドレスが、アドレス変換表１４の値に含まれないため、当該ＤＭＡアクセスを透過する。
【００５６】
他の計算ノードからのデータを受け取った通信アダプタ５は、通信データ６１を格納するため、上記受信制御情報２６に指定されているアドレスＭＭＭＭに対するＤＭＡライト５７を行う。当該ＤＭＡライト５７のアドレスＭＭＭＭは、アドレス変換表１４にセットされた主記憶２のアドレス領域２２に含まれているため、スイッチ１のアドレス判別部１６は、アドレスＭＭＭＭに対する通信アダプタ５からのＤＭＡライトを、ＤＭＡ変換部１７に渡し、ＤＭＡ変換部１７では保持されているアクセラレータ６からのＤＭＡリードリクエスト６５に対するＤＭＡリードリプライ６６に変換する。
【００５７】
アクセラレータ６は、ＤＭＡ変換部１７から受信したＤＭＡリードリプライ６６をメモリ６０のアドレスＡＡＡＡの通信データ領域６２に格納する。
【００５８】
他の計算ノードからのデータ受信を完了すると、通信アダプタ５は、通信エラーの有無などの通信完了情報２４を作成し、主記憶２の通信完了情報キュー２５に対して通信完了情報２４のＤＭＡライト５４を行う。当該ＤＭＡライト５４のアドレスは、アドレス変換表１４にセットされた主記憶２のアドレス領域ＭＭＭＭと重複しないため、スイッチ１のアドレス判別部１６は、当該ＤＭＡアクセスを透過して、主記憶２の通信完了情報キュー２５に対するＤＭＡライト５４が行われる。
【００５９】
ＣＰＵ３で実行されるプログラムは、通信完了情報２４の参照を行い、通信データ領域６２についての通信が終了すると、アドレス変換表１４における当該通信データ領域６２のエントリの無効化３２を行う。
【００６０】
これにより、アドレス変換表１４の主記憶アドレスが無効化された後は、通信アダプタ５と主記憶２のアドレスＭＭＭＭの間でＤＭＡアクセスが発生しても、アドレス判別部１６はアドレス変換表１４の主記憶２のアドレスＭＭＭＭが無効であるため、当該ＤＭＡアクセスを透過させる。
【００６１】
以上の処理により、スイッチ１は、主記憶２に対するＤＭＡアクセスのうち、アドレス変換表１４に登録された主記憶２のアドレス範囲のうち特定のアドレス範囲ＭＭＭＭ〜ＭＭＭＭ＋ＬＬに対するＤＭＡリクエストであれば、アドレス判別部１６がアクセラレータ６のメモリ６０に対するＤＭＡであると判定する。そして、ＤＭＡ変換部１７が、通信アダプタ５からのＤＭＡリクエストを、主記憶２のアドレスに対するＤＭＡリクエストに変換してアクセラレータ６にＤＭＡアクセスを実行させる。
【００６２】
これにより、他の計算ノードと計算ノードＡのアクセラレータ６のメモリ６０との間で行われるＤＭＡリクエストを、計算ノードＡの主記憶２を経由せずに、アクセラレータ６のメモリ６０と他の計算ノード間のＤＭＡを、通信アダプタ５を介して直接行うことができるのである。
【００６３】
図５は、図４に示すデータ受信の手順を示すシーケンス図である。上述のように、アクセラレータ６のメモリ６０に存在する通信データ領域６２のアドレスＡＡＡＡを、主記憶２上のアドレス領域２２（ＭＭＭＭ〜ＭＭＭＭ＋ＬＬ）と組にして、当該データ領域６２の通信の開始から終了までの間、スイッチ１のアドレス変換表１４に登録する形態を採用したので、主記憶２のアドレス空間とは独立に管理されるアクセラレータ６のメモリ６０に対して、通信アダプタ５が主記憶２を経由せずに直接データを格納できるという効果がある。
【００６４】
なお、アドレス変換表１４に登録するアドレス範囲（ＭＭＭＭ〜ＭＭＭＭ＋ＬＬ）は、主記憶２に実在するアドレスである必要は無く、ＯＳ及びハードウェアで管理可能な主記憶空間であればよい。
【００６５】
また、上記実施例では、スイッチ１が主記憶２の特定のアドレス範囲ＭＭＭＭ〜ＭＭＭＭ＋ＬＬに対するＤＭＡリクエストであれば、アクセラレータ６のメモリ６０に対するＤＭＡに変換する例を示したが、スイッチ１に限定されるものではなく、ＤＭＡのデータ転送経路を変換する経路変換部等で構成してもよい。
【実施例２】
【００６６】
図６は、第２の実施例を示し、前記実施例１に示した、上位ポートと下位ポートを１対１で設けたもので、その他の構成は前記実施例１と同様である。
【００６７】
第２の実施例のスイッチ１では、入出力ハブ４と接続する上位ポートが、通信アダプタ５への入出力に使用される上位ポート１０と、アクセラレータ６への入出力に使用されるポート１１とを独立して備えることによって、アドレス変換表１４に登録されていない条件での入出力動作を並行して行うことができるので、本発明のスイッチ１を備えることによる入出力性能の低下を防止することができる。
【００６８】
なお、本発明において説明した計算機等の構成、処理部及び処理手段等は、それらの一部又は全部を、専用のハードウェアによって実現してもよい。
【００６９】
また、本実施例で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体（例えば、非一時的な記憶媒体）に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
【００７０】
また、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明をわかりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【符号の説明】
【００７１】
１  スイッチ
２  主記憶
３  ＣＰＵ
４  入出力ハブ
５  通信アダプタ
６    アクセラレータ
１１  上位ポート
１２、１３  下位ポート
１４  アドレス変換表
１６  アドレス判別部
１７  ＤＭＡ変換部
６０  メモリ
【図１】
2014026531.tif 000003
【図３】
2014026531.tif 000004
【図５】
2014026531.tif 000005
【図６】
2014026531.tif 000006
【図２】
2014026531.tif 000007
【図４】
2014026531.tif 000008