(57)【要約】      （修正有）【課題】アクティブメッセージ（ＡＭ）を通じてＲＭＡアプリケーションプログラミングインターフェース（ＡＰＩ）を実施する方法、装置及びソフトウェアを提供する。【解決手段】ＡＭ書き込み要求及びＡＭ読み出し要求１１８がローカルノード１００からリモートノード１０２に送信されて、リモートメモリアクセス（ＲＭＡ）技法を使用してリモートノード１０２上のメモリにデータを書き込み、あるいは該メモリからデータを読み出す。上記ＡＭ要求１１８は対応するＡＭハンドラ１１０、１１０によって扱われ、該ＡＭハンドラ１１０、１１０は、要求に関連するオペレーションを自動的に実行する。ＡＭを使用したＲＭＡ読み出し及び書き込みは、関連する読み出しモジュール、書き込みモジュール１０６、及びＲＭＡ進行モジュールの使用を通してさらに容易にされる。【選択図】図１ａ
2016053946.tif 000002
【特許請求の範囲】
【請求項１】
リモートノードとローカルノードとにおけるリモートメモリアクセス（ＲＭＡ）データ転送を実行する方法であって、
前記ローカルノードから前記リモートノードにデータが書き込まれるＲＭＡ書き込みを、
書き込まれるべきデータを前記ローカルノード上のソースバッファから読み出すステップと、
第１のアクティブメッセージ（ＡＭ）書き込み要求を前記ローカルノードから前記リモートノード上のＡＭハンドラに送信するステップであり、前記第１のＡＭ書き込み要求は、書き込まれるべきデータと、該データが書き込まれるべき前記リモートノード上のリモートメモリアドレス空間における開始アドレスとを含む、ステップと、
前記第１のＡＭ書き込み要求を、前記リモートノード上の前記ＡＭハンドラで、前記第１のＡＭ書き込み要求から前記データを抽出し、かつ前記開始アドレスで始まる前記リモートメモリアドレス空間におけるアドレス範囲に前記データを書き込むことによって扱うステップと、
によって実行するステップ
を含む方法。
【請求項２】
前記リモートノードから前記ローカルノードにＡＭ書き込み応答を送信するステップであって、前記ＡＭ書き込み応答は、前記データが前記リモートメモリアドレス空間に成功裏に書き込まれたことを示す、ステップと、
前記ローカルノード上のＡＭハンドラを用いて前記ＡＭ書き込み応答のメッセージを処理するステップと、
をさらに含む請求項１に記載の方法。
【請求項３】
書き込まれるべき前記データを複数のパケットへと区分するステップと、
前記複数のパケットの各々について、
前記ローカルノード上の前記ソースバッファから、パケットに対応するパケットデータを読み出すステップと、
前記ローカルノードから前記リモートノード上の前記ＡＭハンドラに、前記パケットデータと該パケットデータが書き込まれるべき前記リモートノード上のリモートメモリアドレス空間における開始アドレスとを含むそれぞれのＡＭ要求を送信するステップと、
前記それぞれのＡＭ要求を、前記リモートノード上の前記ＡＭハンドラで、前記それぞれのＡＭ要求から前記パケットデータを抽出し、かつ前記開始アドレスで始まる前記リモートメモリアドレス空間におけるアドレス範囲に前記パケットデータを書き込むことによって扱うステップと、
をさらに含み、
前記第１のＡＭ書き込み要求は、前記複数のパケットのデータの第１のパケットを転送するために使用されるＡＭ書き込み要求に対応する、
請求項１又は２に記載の方法。
【請求項４】
前記パケットデータのすべてが前記リモートメモリアドレス空間に成功裏に書き込まれたことを検出するステップと、
前記リモートノードから前記ローカルノードに、前記パケットデータが前記リモートメモリアドレス空間に成功裏に書き込まれたことを示すＡＭ応答を送信するステップと、
前記ローカルノード上のＡＭハンドラを用いて前記ＡＭ応答のメッセージを処理するステップと、
をさらに含む請求項３に記載の方法。
【請求項５】
データが前記リモートノードから読み出され、かつ前記ローカルノードに転送されるＲＭＡ読み出しを、
前記リモートノード上の前記ＡＭハンドラにＡＭ読み出し要求を送信するステップであって、前記ＡＭ読み出し要求は、読み出されるべきデータの前記リモートアドレス空間におけるアドレス範囲を識別する、ステップと、
前記ＡＭ読み出し要求のメッセージを受信することに応答して、前記リモートノード上の前記ＡＭハンドラを介して前記リモートアドレス空間から読み出されるべき前記データを取り出し、ＡＭ読み出し応答のメッセージを介して前記ローカルノードに前記の取り出されたデータを送信するステップと、
前記ＡＭ読み出し応答を、前記ローカルノード上のＡＭハンドラで、前記ＡＭ読み出し応答から前記データを抽出し、かつ前記ローカルノード上の宛先バッファに前記データを書き込むことによって扱うステップと、
によって実行するステップ
をさらに含む請求項１乃至４のうちいずれか１項に記載の方法。
【請求項６】
データが前記リモートノードから読み出され、かつ複数のパケットを使用して前記ローカルノードに転送されるＲＭＡ読み出しを実行するステップであって、前記複数のパケットの各々についてのデータが、
それぞれのＡＭ読み出し要求を前記リモートノード上の前記ＡＭハンドラに送信するステップであり、前記ＡＭ読み出し要求は、読み出されるべきパケットデータの前記リモートアドレス空間におけるアドレス範囲を識別する、ステップと、
前記ＡＭ読み出し要求のメッセージを受信することに応答して、前記リモートノード上の前記ＡＭハンドラを介して前記リモートアドレス空間から読み出されるべき前記パケットデータを取り出し、ＡＭ読み出し応答のメッセージを介して前記ローカルノードに前記の取り出されたパケットデータを送信するステップと、
前記ＡＭ読み出し応答を、前記ローカルノード上のＡＭハンドラで、前記ＡＭ読み出し応答から前記パケットデータを抽出し、かつ前記ローカルノード上の宛先バッファに前記パケットデータを書き込むことによって扱うステップと、
によって転送される、ステップ
をさらに含む請求項１乃至５うちいずれか１項に記載の方法。
【請求項７】
タグ付きメッセージングスキームを使用して前記第１のＡＭ書き込み要求にタグ付きメッセージを用いるステップと、
前記リモートノード上の前記ＡＭハンドラを用いて前記タグ付きメッセージを調べて、前記リモートノードが前記第１のＡＭ書き込み要求の意図された受信者であることを照合するステップと、
をさらに含む請求項１乃至６のうちいずれか１項に記載の方法。
【請求項８】
前記ローカルノードにおいて、前記リモートノードから送信される１又は複数のＡＭ書き込み要求を使用してデータが書き込まれ得る前記リモートノード上の前記リモートメモリアドレス空間における少なくとも１つのアドレス範囲を登録するステップと、
前記リモートノードに、前記ローカルノードに登録された少なくとも１つのアドレス範囲に対応するアクセスキーを公開するステップと、
前記第１のＡＭ書き込み要求に前記アクセスキーを含めるステップと、
前記リモートノード上の前記ＡＭハンドラを介して前記アクセスキーを調べて、前記第１のＡＭ書き込み要求が許可されるかを検証するステップと、
をさらに含む請求項１乃至７のうちいずれか１項に記載の方法。
【請求項９】
請求項１乃至８のうちいずれか１項に記載の方法を実施するためにローカル及びリモートのノード上でそれぞれ実行されるように構成された第１の命令セット及び第２の命令セットを記憶した非一時的マシン可読媒体。
【請求項１０】
リモートノードとローカルノードとにおけるリモートメモリアクセス（ＲＭＡ）データ転送を実行する方法であって、
前記ローカルノードから前記リモートノードにデータが書き込まれるＲＭＡ書き込みを、
前記ローカルノードから前記リモートノード上のＡＭハンドラに第１のアクティブメッセージ（ＡＭ）書き込み要求を送信するステップであり、前記第１のＡＭ書き込み要求は、前記データが書き込まれるべき前記リモートノード上のリモートメモリアドレス空間におけるアドレス範囲を識別する、ステップと、
書き込まれるべきデータを前記ローカルノード上のソースバッファから読み出し、前記データを前記リモートノードに送信するステップと、
前記リモートノードにより受信された前記データを、前記リモートメモリアドレス空間に書き込まれるべき前記データに前記第１のＡＭ書き込み要求において識別される前記アドレス範囲を占有させるように処理するステップと、
によって実行するステップ
を含む方法。
【請求項１１】
複数のＡＭ書き込み要求を受信するステップであって、各ＡＭ書き込み要求は、後に送信されるＡＭ書き込み要求に関連付けられたデータのブロックが書き込まれるべき前記リモートノード上の前記リモートメモリアドレス空間におけるアドレス範囲を識別し、各ＡＭ書き込み要求は、関連付けられたデータの前記ブロックを識別するしるしを含む、ステップと、
前記リモートノード上の前記ＡＭハンドラを介して、前記リモートノード上のＲＭＡ書き込みキューに各ＡＭ書き込み要求をエンキューするステップと、
前記ローカルノードからデータの複数のブロックを受信するステップであって、データの各ブロックは、事前に受信されたＡＭ書き込み要求に関連付けられ、前記事前に受信されたＡＭ書き込み要求を識別することができるしるしを含む、ステップと、
前記ＲＭＡ書き込みキューから前記ＡＭ書き込み要求をデキューするステップと、
各々のデキューされたＡＭ書き込み要求を、ＡＭ書き込み要求に関連付けられた前記の受信されたデータのブロックが前記リモートメモリアドレス空間においてどこに書き込まれるべきかを決定するように処理するステップと、
をさらに含む請求項１０に記載の方法。
【請求項１２】
データが前記リモートノードから読み出され、かつ前記ローカルノードに転送されるＲＭＡ読み出しを、
前記リモートノード上の前記ＡＭハンドラにＡＭ読み出し要求を送信するステップであって、前記ＡＭ読み出し要求は、読み出されるべきデータの前記リモートアドレス空間におけるアドレス範囲を識別する、ステップと、
前記ＡＭ読み出し要求のメッセージを受信することに応答して、前記リモートノード上の前記ＡＭハンドラを介して、読み出されるべきデータの前記リモートアドレス空間における前記アドレス範囲を識別する前記ＡＭ読み出し要求に対応するＲＭＡ読み出し要求を生成するステップと、
前記リモートノード上で前記ＲＭＡ読み出し要求を処理するステップであって、前記ＲＭＡ読み出し要求における前記アドレス範囲により定義されるとおりの前記リモートアドレス空間から読み出されるべき前記データが、前記リモートアドレス空間から取り出され、かつ前記ローカルノードに送信されることをもたらす、ステップと、
前記リモートノードから送信される前記の取り出されたデータを、前記ローカルノード上の宛先バッファに書き込むステップと、
によって実行するステップ、をさらに含む請求項１０又は１１に記載の方法。
【請求項１３】
前記ＡＭ読み出し要求のメッセージを受信することに応答して、前記リモートノード上の前記ＡＭハンドラを介して、読み出されるべきデータの前記リモートアドレス空間における前記アドレス範囲を識別する前記ＡＭ読み出し要求に対応するＲＭＡ読み出し要求を生成し、前記リモートノード上のＲＭＡ読み出し要求キューにエンキューするステップと、
前記ＲＭＡ読み出し要求キューから前記ＲＭＡ読み出し要求をデキューするステップと、
前記ＲＭＡ読み出し要求における前記アドレス範囲により定義されるとおりの前記リモートアドレス空間から読み出されるべき前記データを取り出し、前記の取り出されたデータを前記ローカルノードに送信するステップと、
をさらに含む請求項１２に記載の方法。
【請求項１４】
前記のデキューし、データを取り出し、送信するオペレーションは、前記リモートノード上の前記ＡＭハンドラとは別個である前記リモートノード上のＲＭＡ読み出し機能によって実行される、請求項１３に記載の方法。
【請求項１５】
請求項１０乃至１４のうちいずれか１項に記載の方法を実施するためにローカル及びリモートのノード上でそれぞれ実行されるように構成された第１の命令セット及び第２の命令セットを記憶した非一時的マシン可読媒体。
【請求項１６】
ネットワークインターフェースと、
ローカルメモリアドレス空間を含むメモリと、
前記ネットワークインターフェースを介して、前記ネットワークインターフェースに結合された通信リンクを通じてリモート装置から送信される第１のＡＭ書き込み要求を受信することであって、前記第１のＡＭ書き込み要求は、前記リモート装置により発行されるリモートメモリアクセス（ＲＭＡ）書き込みに対応し、第１のデータが書き込まれるべき前記メモリにおける前記ローカルメモリアドレス空間における開始アドレスに書き込まれるべき該データを含み、
前記第１のＡＭ書き込み要求を、前記第１のＡＭ書き込み要求から前記データを抽出し、かつ前記開始アドレスで始まる前記リモートメモリアドレス空間におけるアドレス範囲に前記データを書き込むことによって扱い、
前記リモート装置に、前記データが前記リモートメモリアドレス空間に成功裏に書き込まれたことを示すＡＭ書き込み応答を送信する
ように構成された書き込み要求アクティブメッセージ（ＡＭ）ハンドラと、
を備えた装置。
【請求項１７】
前記リモート装置上のメモリにおけるリモートメモリアドレス空間に対するＲＭＡ書き込みに対応する第２のＡＭ書き込み要求が生成され、かつ前記リモート装置に送信されるＡＭ書き込みオペレーションを実行するように構成されたＲＭＡ書き込みモジュールであって、前記第２のＡＭ書き込み要求は、第２のデータが書き込まれるべき前記リモートメモリアドレス空間における開始アドレスに書き込まれるべき該データを含む、ＲＭＡ書き込みモジュールと、
前記第２のデータを前記リモートメモリアドレス空間に成功裏に書き込むことに応じて前記リモート装置から送信されるＡＭ書き込み応答を処理するように構成された書き込み応答ＡＭハンドラと、
をさらに備えた請求項１６に記載の装置。
【請求項１８】
ソースバッファ、をさらに備え、前記ＲＭＡ書き込みモジュールは、
前記リモートメモリアドレス空間に書き込まれるべき第３のデータを複数のパケットへと区分し、
前記複数のパケットの各々について、
パケットに対応するパケットデータを前記ソースバッファから読み出し、
前記リモート装置上の書き込み要求ＡＭハンドラに、前記パケットデータと該パケットデータが書き込まれるべき前記リモート装置上の前記リモートメモリアドレス空間におけるそれぞれの開始アドレスとを含むそれぞれのＡＭ書き込み要求を送信する
ようにさらに構成される、請求項１７に記載の装置。
【請求項１９】
前記書き込み要求ＡＭハンドラは、
前記リモート装置から複数のＡＭ書き込み要求を受信することであって、前記複数のＡＭ書き込み要求の各々は、複数のパケットへと区分され、かつ前記ローカルメモリアドレス空間におけるそれぞれの開始アドレスにおいて前記ローカルメモリアドレス空間に書き込まれるべき第３のデータの、リモート書き込みに対応するそれぞれのパケットデータを含み、
前記複数のＡＭ書き込み要求の各々についての前記パケットデータを抽出し、ＡＭ書き込み要求により識別される前記開始アドレスで始まる前記ローカルメモリアドレス空間に前記パケットデータを書き込み、
前記第３のデータの全体が前記ローカルメモリアドレス空間に書き込まれたことを検出し、
前記リモート装置に、前記第３のデータが前記ローカルメモリアドレス空間に成功裏に書き込まれたことを示すＡＭ書き込み応答を送信する
ようにさらに構成される、請求項１６乃至１８のうちいずれか１項に記載の装置。
【請求項２０】
前記ローカルメモリにおける宛先バッファと、
読み出し応答ＡＭハンドラと、
ＡＭ読み出し要求を生成し、前記リモート装置上の読み出し要求ＡＭハンドラに送信することであって、前記ＡＭ読み出し要求は、読み出されるべき前記リモート装置のデータの前記リモートアドレス空間におけるアドレス範囲を識別し、
前記ＡＭ読み出し要求に応答して、前記リモート装置から、前記リモートアドレス空間から読み出された前記データを含むＡＭ読み出し応答を受信し、
前記ＡＭ読み出し応答を、前記読み出し応答ＡＭハンドラで、前記ＡＭ読み出し応答から前記データを抽出し、かつ前記データを前記宛先バッファに書き込むことによって扱う
ように構成されたＲＭＡ読み出しモジュールと、
をさらに備えた請求項１６乃至１９のうちいずれか１項に記載の装置。
【請求項２１】
前記ＲＭＡ読み出しモジュールは、データが前記リモート装置から読み出され、かつ複数のパケットを使用して転送されるＲＭＡ読み出しを実行するようにさらに構成され、前記複数のパケットの各々についてのデータは、
それぞれのＡＭ読み出し要求を前記リモート装置上の前記読み出し要求ＡＭハンドラに送信することであって、前記ＡＭ読み出し要求は、読み出されるべきパケットデータの前記リモートアドレス空間におけるアドレス範囲を識別し、
各々のそれぞれのＡＭ読み出し要求に応答して、前記リモート装置から、前記リモートアドレス空間から読み出された前記パケットデータを含むＡＭ読み出し応答を受信し、
前記ＡＭ読み出し応答を、前記読み出し応答ＡＭハンドラで、前記ＡＭ読み出し応答から前記パケットデータを抽出し、かつ前記パケットデータを前記宛先バッファに書き込むことによって扱う
ことによって遠隔的に読み出される、請求項１６乃至２０のうちいずれか１項に記載の装置。
【請求項２２】
前記リモート装置から、読み出されるべきデータを含むデータの前記ローカルアドレス空間におけるアドレス範囲を識別するＡＭ読み出し要求を受信し、
前記ＡＭ読み出し要求において識別される前記アドレス範囲から前記データを取り出し、
前記リモート装置に、取り出された前記データを含むＡＭ応答を送信する
ように構成された読み出し要求ＡＭハンドラ
をさらに含む請求項１６乃至２１のうちいずれか１項に記載の装置。
【請求項２３】
ネットワークインターフェースと、
ローカルメモリアドレス空間を含むメモリと、
前記ネットワークインターフェースを介して、前記ネットワークインターフェースに結合された通信リンクを通じてリモート装置から送信される複数のＡＭ書き込み要求を受信することであって、各ＡＭ書き込み要求は、前記リモート装置により発行されるリモートメモリアクセス（ＲＭＡ）書き込みに対応し、前記ローカルメモリアドレス空間に書き込まれるべきそれぞれのデータと該それぞれのデータの先頭が書き込まれるべき開始アドレスとを含み、
ＲＭＡ書き込み要求を生成し、前記ＲＭＡ書き込み要求をＲＭＡ書き込みキューにエンキューする
ように構成された書き込み要求アクティブメッセージ（ＡＭ）ハンドラと、
前記リモート装置からデータの複数のブロックを受信することであって、データの各ブロックは、事前に受信されたＡＭ書き込み要求に関連付けられ、対応するＲＭＡ書き込み要求を識別することができるしるしを含み、
前記ＲＭＡ書き込みキューから前記ＲＭＡ書き込み要求をデキューし、
各々のデキューされたＲＭＡ書き込み要求を、ＲＭＡ書き込み要求に関連付けられた前記の受信されたデータのブロックが前記ローカルメモリアドレス空間においてどこに書き込まれるべきかを決定するように処理する
ように構成されたＲＭＡ進行モジュールと、
を備えた装置。
【請求項２４】
前記メモリにおけるソースバッファと、
前記リモート装置にＡＭ書き込み要求を送信することであって、前記ＡＭ書き込み要求は、前記データが書き込まれるべき前記リモート装置上のメモリにおけるリモートメモリアドレス空間におけるアドレス範囲を識別し、
書き込まれるべき前記データを前記ソースバッファから読み出し、
前記データを前記リモート装置に送信することであって、前記データは、前記ＡＭ書き込み要求を送信した後に送信され、前記データは、送信される前記データを前記ＡＭ書き込み要求とマッチさせるのに使用されるように構成されたしるしと共に送信される
ように構成されたＲＭＡ書き込みモジュールと、
をさらに備えた請求項２３に記載の装置。
【請求項２５】
ＲＭＡ読み出し要求キューと、
前記リモート装置から、読み出されるべきデータの前記ローカルアドレス空間におけるアドレス範囲を識別するＡＭ読み出し要求を受信し、
前記ＡＭ読み出し要求のメッセージを受信することに応答して、読み出されるべきデータの前記ローカルアドレス空間における前記アドレス範囲を識別する対応するＲＭＡ読み出し要求を生成し、
前記ＲＭＡ読み出し要求キューに前記ＲＭＡ読み出し要求をエンキューする
ように構成された読み出し要求ＡＭハンドラと、
前記ＲＭＡ読み出し要求キューから前記ＲＭＡ読み出し要求をデキューし、
前記ＲＭＡ読み出し要求における前記アドレス範囲により定義されるとおりの前記ローカルアドレス空間からデータを読み出し、
読み出された前記データを前記リモート装置に送信する
ように構成されたＲＭＡ進行モジュールと、
をさらに備えた請求項２３又は２４に記載の装置。
【発明の詳細な説明】
【背景技術】
【０００１】
分散メモリ構成を備えるコンピュータシステム（例えばクラスタ）において、各コンピューティングノードは、それ自体に取り付けられたローカルメモリに対するダイレクトアクセスを有する。他のノードに取り付けられたメモリは、リモートメモリと呼ばれる。大抵、リモートメモリは直接アクセス可能ではなく、ノード間で通信するためにメッセージパッシングメカニズムが使用される。
【０００２】
リモートメモリアクセス（ＲＭＡ）は、リモートメモリに直接アクセスすることができる印象を与えるソフトウェアインターフェースをさす。多くの形態のＲＭＡオペレーションがあるが、最終的に、ＲＭＡオペレーションは、読み出し及び書き込みの２つに要約することができる。読み出しオペレーションは、リモートメモリアドレス範囲からローカルバッファにデータをコピーする。書き込みオペレーションは、ローカルバッファからリモートメモリアドレス範囲にデータをコピーする。
【０００３】
既存のリモートメモリアクセス（ＲＭＡ）実装は、一般に、２つのカテゴリに該当する。第１のカテゴリに対応する実装は、コンピュータノード間における下層のインターコネクトファブリックのリモートダイレクトメモリアクセス（ＲＤＭＡ）能力を使用する。Ｍｅｌｌａｎｏｘなどが提供するＩｎｆｉｎｉＢａｎｄ（ＩＢ）ホストコントローラアダプタ（ＨＣＡ）は、ハードウェアにおいてＲＤＭＡ機能をサポートする。上記能力は、ＩＢ  Ｖｅｒｂと呼ばれるソフトウェアインターフェースを介してアプリケーションに公開される。ＩＢ  ｖｅｒｂでは、ＲＭＡオペレーションを実行するために、ユーザがワーク要求を作成し、それをワークキューに投じる。それから、ＨＣＡがキューを処理し、ハードウェアにおいてＲＤＭＡを実行する。第２のカテゴリにより使用されるアプローチは、通常のメッセージパッシングインターフェース（ＭＰＩ）を通じてＲＭＡ機能をエミュレートすることである。一例は、ＭＰＩＣＨ／ＭＰＩＣＨ２（ハイパフォーマンスＭＰＩ）における一方的な（one-sided）オペレーションの実装である。これは、しばしば、要求‐応答方式において行われる。ＲＭＡオペレーションの非同期性に起因して、要求が処理されることを確保するのに別個のスレッドが大抵必要とされる。
【０００４】
既存のＲＭＡ実装は多くの欠点を有する。ＲＤＭＡベースの実装下において、特殊なハードウェアが必要とされる。メッセージパッシングベースの実装下において、関連するメッセージに関係するさらなるトラフィックがインターコネクトファブリックを通じて転送されなければならず、ゆえに、ファブリックの有効な帯域幅を低減させることになる。
【図面の簡単な説明】
【０００５】
本発明が添付の図面を併用して下記の詳細な説明を参照することによってより理解されるとき、本発明に係る前述の態様及び付随する利点の多くがより容易に十分理解されるであろう。図面において、同様の参照番号は、特にその他の方法で指定されない限り、様々なビューにわたって同様の部分をさす。
【図１ａ】一実施形態に従う、ＡＭ書き込み要求ハンドラの使用を通してデータのブロックがリモートノードのアドレス空間に書き込まれるＲＭＡ書き込みを例示する概略図である。
【図１ｂ】一実施形態に従う、ＡＭ読み出し要求ハンドラ及びＡＭ読み出し応答ハンドラの使用を通してデータのブロックがリモートノードのアドレス空間から読み出されるＲＭＡ読み出しを例示する概略図である。
【図２ａ】一実施形態に従う、図１ａに示されるスキームを使用してデータが複数のパケットを介して転送されるＲＭＡ書き込み実施を例示する概略図である。
【図２ｂ】一実施形態に従う、図１ｂに示されるスキームを使用してデータが複数のパケットを介して転送されるＲＭＡ読み出し実施を例示する概略図である。
【図３ａ】一実施形態に従う、ＡＭ要求の後に続く送信オペレーションの使用を通してデータのブロックがリモートノードのアドレス空間に書き込まれるタグ付きメッセージＲＭＡ書き込みを例示する概略図である。
【図３ｂ】一実施形態に従う、ＡＭ読み出し要求ハンドラ、ＲＭＡ進行モジュール及びＲＭＡ読み出しモジュールの使用を通してデータのブロックがリモートノードのアドレス空間から読み出されるタグ付きメッセージＲＭＡ読み出しを例示する概略図である。
【図４】ローカルノードとリモートノードとにおける、アクセスキー交換及びメモリ登録オペレーションに対応するメッセージの交換を例示するタイムフロー図である。
【図５】本明細書に開示される実施形態に従うローカルノードオペレーション及びリモートノードオペレーションの態様を容易にするように構成されたノードアーキテクチャのブロック概略図である。
【発明を実施するための形態】
【０００６】
本明細書において、アクティブメッセージ（ＡＭ）を通じてＲＭＡアプリケーションプログラミングインターフェース（ＡＰＩ）を実施する方法、装置及びソフトウェアの実施形態が開示される。下記の説明において、本明細書に開示され、例示される実施形態の深い理解を提供するように、多数の特定の詳細が明記される。しかしながら、本発明は上記特定の詳細のうち１又は複数なしに、あるいは他の方法、コンポーネント、材料等を用いて実施され得ることを、当業者は認識するであろう。他の例において、本発明の態様を分かりにくくすることを回避するために、周知の構造、材料又はオペレーションは詳細には示されず、あるいは説明されない。
【０００７】
本明細書において、明りょうさのために、図面内の個々のコンポーネントは、特定の参照番号によってではなく図面内の該コンポーネントのラベルによっても参照される。さらに、（特定コンポーネントとは対照的に）特定タイプのコンポーネントを参照する参照番号は、参照番号の後に「典型」を意味する“（ｔｙｐ）”が続くもので示されることがある。上記コンポーネントの構成は、存在し得るが簡潔さ及び明りょうさのために図面に示されない同様のコンポーネント、又はそうでなければ別個の参照番号でラベル付けされていない同様のコンポーネントの典型であることが理解されるであろう。反対に、“（ｔｙｐ）”は、コンポーネント、要素等がその開示された機能、実装、目的等のために典型的に使用されることを意味するものとみなされるべきではない。
【０００８】
本明細書に開示される実施形態の態様下において、ＲＭＡを使用してデータがリモートノードにおけるメモリに書き込まれ、あるいは該メモリから読み出されるＲＭＡ書き込み及び読み出しオペレーションを容易にするように、アクティブメッセージ技法が実施される。ＡＭの基本的な考え方は、メッセージが到着したときにコードがターゲット側において自動的に実行されることを可能にすることである。このコードはＡＭハンドラと呼ばれる。複数のＡＭハンドラがＡＭメカニズムに予め登録されてもよく、ＡＭメッセージは、ＡＭハンドラのための対応する識別子を指定することによって複数のＡＭハンドラのうちいずれかを参照することができる。ＡＭメッセージは要求又は応答のいずれかであってよく、その双方が、データに加えていくらかの追加制御情報を運ぶことができ、指定されたハンドラの実行を引き起こすことができる。ＡＭ要求は、ＡＭハンドラの内部以外のどこでも発行されることができるが、ＡＭ応答は、ＡＭハンドラの内部でのみ発行されることができ、最大で、ＡＭ要求ごとに１つの応答が発行されてよい。
【０００９】
本明細書に開示される実施形態の態様下において、アクティブメッセージハンドラは、対応するＡＭ要求又は応答がそのターゲットに到着したとき、自動的に実行される。このことは、ＲＭＡオペレーションに必要とされる必要な非同期処理メカニズムを提供する。基本的に、ＲＭＡ書き込みオペレーションは、ソースバッファからデータを運ぶＡＭ要求と、該データをターゲットアドレスにコピーするＡＭハンドラとで実施することができる。ＲＭＡ読み出しオペレーションは、ターゲットアドレス情報を運ぶＡＭ要求と、ＡＭ応答を介してデータを送り返すＡＭハンドラと、該データを宛先バッファにコピーする別のＡＭハンドラとで実施することができる。
【００１０】
図１ａ及び図１ｂは、一実施形態に従う、ローカルノード１００とリモートノード１０２との間でデータのブロックを転送する書き込み及び読み出しＡＭメカニズムを例示する。図１ａに示されるとおり、ローカルノード１００は、ソースバッファ（ｓｒｃ＿ｂｕｆ）１０４とＲＭＡ書き込み（ｒｍａ＿ｗｒｉｔｅ（））モジュール１０６とＡＭ書き込み応答ハンドラ１０８とを含む。リモートノード１０２は、ＡＭ書き込み要求ハンドラ１１０とＲＭＡアドレス空間１１２とを含む。ローカルノード１００は、インターコネクト１１４を介してリモートノード１０２に通信可能に結合される。
【００１１】
ソースバッファ１０４からＲＭＡアドレス空間１１２へのソースデータ１１６のブロックのＲＭＡ書き込みは、下記のとおり進む。ソースデータ１１６が、ＲＭＡ書き込みモジュール１０６を介してソースバッファ１０４から読み出され、ＲＭＡ書き込みモジュールは、インターコネクト１１４を通じてＡＭハンドラ１１０に送信されるＡＭ書き込み要求１１８を生成する。ＡＭ書き込み要求１１８は、ソースデータ１１６と、ソースデータ１１６が書き込まれるべきリモートメモリ範囲に関する情報とを含む。これは、データ１１６の先頭が書き込まれるべきＲＭＡアドレス空間１１２における開始アドレス（ｒｍａ＿ａｄｄｒ）を含み、サイズ（長さ）、アクセスキー及び／又はメッセージタグを場合により含んでもよい。それから、ターゲット側におけるＡＭ書き込み要求ハンドラ（ＡＭ書き込み要求ハンドラ１１０）が、ＤＭＡ又はメモリコピーオペレーション１２０を介して、アドレスｒｍａ＿ａｄｄｒで始まるＲＭＡアドレス空間１１２にソースデータ１１６をコピーする。一実施形態において、ＡＭ書き込み要求ハンドラ１１０がＲＭＡアドレス空間１１２へのソースデータ１１６のコピーを完了したとき、完了イベントが所望される場合、任意的なＡＭ書き込み応答１２２がイニシエータ（ローカルノード１００）に送り返されてもよい。例示されるとおり、ＡＭ書き込み応答１２２はＡＭ書き込み応答ハンドラ１０８に向けられ、ＡＭ書き込み応答ハンドラ１０８は完了イベントを扱うように構成される。
【００１２】
図１ｂは、ＲＭＡ読み出しオペレーションに関連してローカルノード１００及びリモートノード１０２により用いられるさらなるリソース及びＡＭを示す。これには、宛先バッファ（ｄｅｓｔ＿ｂｕｆ）１２４とＲＭＡ読み出し（ｒｍａ＿ｒｅａｄ（））モジュール１２６とローカルノード１００のためのＡＭ読み出し応答ハンドラ１２８とリモートノード１０２のためのＡＭ読み出し要求ハンドラ１３０とを含む。一実施形態において、ＡＭ書き込み応答ハンドラ１０８とＡＭ読み出し応答ハンドラ１２８とは、同じＡＭハンドラに対応する。同様にして、一実施形態において、ＡＭ書き込み要求ハンドラ１１０とＡＭ読み出し要求ハンドラ１３０とは、同じＡＭハンドラに対応する。
【００１３】
ＲＭＡ読み出しオペレーションのオペレーションは、下記のとおり進む。ＲＭＡ読み出しＡＰＩ１２６が、読み出されるべきデータ（例えばリモートデータ１３４）が記憶されているｒｍａ＿ａｄｄｒで始まるリモートアドレス範囲を識別するＡＭ読み出し要求１３２をＡＭ読み出し要求ハンドラ１３０に送信する。一実施形態において、ＡＭ読み出し要求１３２は、開始アドレス（ｒｍａ＿ａｄｄｒ）及び長さを含み、さらにアクセスキー及び／又はメッセージタグを含んでもよい。ＡＭ読み出し要求１３２を受信することに応答して、ＡＭ読み出し要求ハンドラ１３０は、ＡＭ読み出し応答ハンドラ１２８に向けられるＡＭ読み出し応答１３６を介して、リモートノード１０２からローカルノード１００にリモートデータ１３４のコピーを送信する。ＡＭ読み出し応答１３６の受信に応じて、ＡＭ読み出し応答ハンドラ１２８は、リモートデータ１３４のコピーを抽出し、ＤＭＡ又はメモリコピー１３８を実行してリモートデータ１３４のコピーを宛先バッファ１２４に書き込み、ＲＭＡ読み出しオペレーションを完了する。
【００１４】
一般に、ＡＭメカニズムは、単一のＡＭメッセージを介して転送することができるデータの量に関する制限を有することがある。こうした制限を克服するために、単一のＡＭメッセージについての制限より大きい量のデータは、より小さいデータ単位（例えばパケット）へと分割され、パイプライン方式で転送されてもよい。図２ａ及び図２ｂは、上記技法を使用してインターコネクト２０４を通じてローカルノード２００とリモートノード２０２との間のデータの転送をもたらすＲＭＡ読み出し及びＲＭＡ書き込みオペレーションの例を例示する。
【００１５】
図２ａに示されるとおり、ローカルノード２００は、複数のスロット２０８を有するソースバッファ２０６と、ＲＭＡ書き込みモジュール２１０と、ＡＭ書き込み応答ハンドラ２１２とを含む。リモートノード２０２は、ＡＭ書き込み要求ハンドラ２１４と、複数のスロット２１８に区分されたＲＭＡメモリ空間２１６とを含む。
【００１６】
パイプライン型（pipelined）ＲＭＡ書き込みは、下記のとおり進む。ソースバッファ２０６におけるそれぞれのスロットに記憶されたデータが、ＲＭＡ書き込みモジュール２１０を介してアクセスされ、それぞれのＡＭ書き込み要求２２２を介して複数のパケット２２０として転送される。上述と同様に、一実施形態において、各ＡＭ書き込み要求２２２は、開始アドレス（ｒｍａ＿ａｄｄｒ）と、任意的な長さ、アクセスキー及び／又はメッセージタグとを含む。ＡＭハンドラ２１４による受信に応じて、各ＡＭ要求２２２が処理され、ＲＭＡアドレス空間２１６におけるｒｍａ＿ａｄｄｒで始まる対応するアドレス範囲にデータを書き込むそれぞれのメモリコピー２２４の生成をもたらす。完了イベントを採用する実施形態において、１又は複数のＡＭ書き込み応答２２６がＡＭハンドラ２１２に返される。例えば、ＡＭ書き込み応答は、完了したパケット書き込みごとに返されてもよく、あるいは、ＡＭ書き込み応答は、送信されるパケットの数にかかわらず、所与のソースデータ転送について単一のＡＭ書き込み応答２２６を提供するなどして、複数のパケット書き込みの完了を裏付けてもよい。
【００１７】
例示目的のために、パケット２２０ごとのソースデータの部分がソースバッファ２０６のそれぞれのスロット２０８に記憶され、ＲＭＡアドレス空間２１６のそれぞれのスロット２１８に書き込まれるように表されている。しかしながら、ソースバッファ２０６及び／又はＲＭＡアドレス空間２１６は複数のスロットに区分される必要はなく、データを記憶することができる１又は複数のアドレス空間として一般に構成されてもよいことが認識されるであろう。さらに、各パケット２２０のサイズは同じであってもよく、あるいは、異なるサイズが使用されてもよい。例えば、一実施形態において、パケットは、使用されるインターコネクト２０４により使用される下層のトランスポートプロトコルに適用可能な最大転送単位（ＭＴＵ）を採用する（最後のパケットはＭＴＵ未満のサイズを有し得ることに留意する）。同時に、パケットに含まれるデータは、複数のパケットを介して転送されることになるソースデータのブロックを複製するように、ＲＭＡアドレス空間２１６に書き込まれるべきである。一実施形態において、パケットデータは順番に書き込まれる。他の実施形態において、順序がばらばらの書き込みが長い間許可され、完了に応じて、書き込まれたデータブロックがソースデータブロックの複製を構成する。
【００１８】
図２ｂに示されるとおり、ローカルノード２００は、複数のスロット２３０を有する宛先バッファ２２８と、ＲＭＡ読み出しモジュール２３２と、ＡＭ読み出し応答ハンドラ２３４とをさらに含む。リモートノード２０２は、ＡＭ読み出し要求ハンドラ２３６をさらに含む。マルチパケットＲＭＡ書き込みと同様に、データはＲＭＡ読み出しモジュール２３２を介して複数のパケットを使用して転送される。各パケット転送は、図１ｂのＲＭＡ読み出しのためのデータブロック転送と同様であり、下記のとおり進む。ＲＭＡ読み出しモジュール２３２は、ＡＭ読み出し要求ハンドラ２３６により扱われることをターゲットとしたＡＭ読み出し要求２４０を送信する。各ＡＭ読み出し要求２４０は、読み出されるべきリモートデータが記憶されているｒｍａ＿ａｄｄｒで始まるリモートアドレス範囲を識別する。上述と同様に、一実施形態において、ＡＭ読み出し要求２４０は、開始アドレス（ｒｍａ＿ａｄｄｒ）及び長さと、任意的なアクセスキー及び／又はメッセージタグとを含む。
【００１９】
各ＡＭ読み出し要求２４０を受信することに応答して、ＡＭ読み出し要求ハンドラ２３６は、ＡＭ読み出し応答ハンドラ２３４に向けられるＡＭ読み出し応答２４２を介して、リモートノード２０２からローカルノード２００に、パケット２４１を含むリモートデータの部分のコピーを送信する。各ＡＭ読み出し応答２４２の受信に応じて、ＡＭ読み出し応答ハンドラ２３４は、パケット２４１の中のリモートデータのコピーを抽出し、ＤＭＡ又はメモリコピー２４４を実行して、パケット２４１を介して転送されたリモートデータのコピーを宛先バッファ２２８における対応するスロット２３０に書き込み、このパケットについてのＲＭＡ読み出しオペレーションを完了する。図２ａに表され上記で論じられたマルチパケット読み出しオペレーションと同様に、宛先バッファ２２８とＲＭＡアドレス空間２１６とに関するスロットの使用は例示目的のためであり、いくつかの実施形態において、パケットのサイズは変化してもよい。
【００２０】
パケットサイズは、パイプライン型実装を介して達成可能な最大帯域幅の制限要因になる可能性がある。しかしながら、タグを付けられた（タグ付き）メッセージパッシングメカニズムが利用可能である場合、こうしたメカニズムを利用することによって、大量データ転送のためのさらなるパフォーマンス向上を達成することができる。タグ付きメッセージパッシングは、メッセージパッシングが片側における送信とその反対側における受信とで実行される点において、通常のメッセージパッシングと同様である。しかしながら、タグ付きメッセージパッシングは各メッセージにタグをさらに取り付け、したがって受信側は、どのメッセージを受信するかを選ぶことができる。このことは、単一の通信チャネルを複数のチャネルに効率的に変える。一実施形態において、タグは、種々のＲＭＡオペレーションを識別してペアの送信及び受信オペレーション間の１対１マッチングを確保するように使用される。
【００２１】
図３ａ及び図３ｂは、タグ付きメッセージを使用した読み出し及び書き込みオペレーションの例を例示する。図３ａのタグ付きメッセージ書き込みオペレーションに示されるとおり、ソースデータのブロックが、インターコネクト３０４を介してローカルノード３００からリモートノード３０２に転送される。さらに詳細には、ローカルノード３００は、ソースデータが記憶されているソースバッファ３０６と、ＲＭＡ書き込みモジュール３０８とを含み、リモートノード３０２は、ＡＭ書き込み要求ハンドラ３１０とＲＭＡ進行モジュール３１２とＲＭＡアドレス空間３１４とを含む。
【００２２】
タグ付きメッセージ書き込みオペレーションは、下記のとおり進む。ＲＭＡ書き込みは、ＡＭ書き込み要求３１６の後に送信オペレーション３１８が続くことを含む。ＡＭ書き込み要求３１６は、いかなるデータペイロードもなくリモートアドレス範囲に関する情報だけを運び、むしろ送信データ３２０は、後の送信オペレーション３１８を介して転送される。ＡＭ書き込み要求３１６の受信に応じて、ＡＭハンドラ３１０は、対応するＲＭＡ書き込み要求を生成し、エンキューオペレーション３２２を介してＲＭＡ書き込み要求をＲＭＡキュー３２４に入れる。エンキューされたＲＭＡ書き込み要求が、デキューオペレーション３２６の後、ＲＭＡ進行モジュール３１２によって後から処理されるとき、ＡＭ書き込み要求３１６により提供されたリモートアドレス範囲をＲＭＡアドレス空間３１４における受信バッファとして、受信オペレーション３２８が発行される。この受信オペレーションは、イニシエータ側（すなわちローカルノード３００）において投じられた（posted）送信３２０とマッチし、ＲＭＡアドレス空間３１４における意図されたリモートアドレス範囲にソースデータを取得しなければならない。一般に、ＡＭ書き込み要求を送信することと対応するデータの送信とは非同期であってよいが、好ましくは、ＡＭ書き込み要求はその関連するデータ送信に先行するべきである。一実施形態において、受信オペレーション３２８は、送信データ３２０のブロックを、ＲＭＡアドレス空間３１４に書き込まれる前に、一時的にバッファしてもよい。
【００２３】
図３ｂに示されるとおり、ローカルノード３００は、宛先バッファ３３０とＲＭＡ読み出しモジュール３３２とをさらに含み、これらは下記のタグ付きメッセージ読み出しオペレーションを容易にするように構成される。タグ付きメッセージ書き込みオペレーションと同様に、ＲＭＡ読み出しは、ＡＭ読み出し要求を受けての受信オペレーションを含み、ＡＭ読み出し要求ハンドラは、送信オペレーションがターゲット側において発行されることを引き起こすことになる。大抵、メッセージパッシングオペレーションはＡＭハンドラの内部で発行されることができないため、ターゲット側におけるＲＭＡキューが必要とされる。
【００２４】
図３ｂに例示されるとおり、ＲＭＡ読み出しモジュール３３２はＡＭ読み出し要求３３４を発行し、ＡＭ読み出し要求３３４は、リモートノード３０２におけるＡＭ読み出し要求ハンドラ３３６に向けられ、ＡＭ読み出し要求ハンドラ３３６によって受信される。ＡＭ読み出し要求ハンドラ３３６は、対応するＲＭＡ読み出し要求を生成し、該読み出し要求をＲＭＡ読み出し要求キュー３３８にエンキューし、一方、ＲＭＡ進行モジュール３１２における送信ブロック３４０は、ＲＭＡ読み出し要求キュー３３８から読み出し要求をデキューし、ＲＭＡアドレス空間３１４から対応するデータを取り出し、該データを送信オペレーション３４２を介してＲＭＡ読み出しモジュール３３２の受信オペレーション３４４に送信する。それから、受信オペレーション３４４は、上記データを宛先バッファ３３０に書き込み、リモート読み出しオペレーションを完了する。
【００２５】
使用される具体的なアプローチに依存して、前述の実施形態に従うＲＭＡ書き込み及び読み出しオペレーションに使用すべき（１又は複数の）メモリアドレス空間は、前もって登録を必要としてもよく、しなくてもよい。例えば、いくつかの実施形態はＰＳＭ（Ｐｅｒｆｏｒｍａｎｃｅ  Ｓｃａｌｅｄ  Ｍｅｓｓａｇｉｎｇ）を採用し、ＰＳＭはメモリ登録を必要としない。ＰＳＭは、特にＨＰＣ向けに設計されたＡＰＩを定義する。これは、高レベルの能力を扱うタグ付きメッセージングＡＰＩを定義し、メッセージパッシングインターフェース（ＭＰＩ）標準の実施を効率良くサポートすることができる。一方、ＰＳＭの内部の実装は、データ移動ストラテジに関するインターコネクト固有の詳細と、ＱｏＳ（サービス品質）、分散ルーチン、回復力などの高度な特徴を調整することとに焦点をあてることができる。アクティブメッセージが、経験的な特徴としてさらに提供される。
【００２６】
ＰＳＭは、ユーザ空間ライブラリとして実装されるように設計される。ＰＳＭを使用してＲＭＡデータ転送を実行するための詳細は、ＱＬｏｇｉｃ又はＰＳＭの開発者によって公開されている複数バージョンのＰＳＭプログラマ向けマニュアルにおいて、あるいはＯｐｅｎＦａｂｒｉｃｓアライアンスにより公開されている様々なＰＳＭ関連文書において提供される。ＰＳＭは、バージョン１．５．２としてＯＦＥＤ（ＯｐｅｎＦａｂｒｉｃｓ  Ｅｎｔｅｒｐｒｉｓｅ  Ｄｉｓｔｒｉｂｕｔｉｏｎ）に含まれ、ＩＢ  Ｖｅｒｂに対するピアである。ＩｎｆｉｎｉＢａｎｄにおける使用をターゲットとしているが、本明細書におけるＰＳＭを採用する実施形態下において、ＰＳＭのような機能性は、イーサネット（登録商標）ネットワークアダプタなどの非ＩｎｆｉｎｉＢａｎｄハードウェアについて実施されてもよい。
【００２７】
上記で言及されたとおり、ＰＳＭはメモリ登録を必要としない。場合により、ライトウェイトメモリ登録メカニズムが、アクセス検証を提供するように実施されてもよい。この実施検討には、連続的なアドレス空間、又はソートされたばらばらのアドレス範囲のリストなどの、アクセスされるべきメモリ領域制御構造を含んでもよい。一実施形態において、制御構造アドレスが、アクセスキーとして使用されてもよい。
【００２８】
図４は、ネットワークリンク４０４を介して接続されたローカルノード４００とリモートノード４０２とによって実行されるオペレーション及びメッセージングタイムフローを例示する。直接接続として表されているが、ネットワークリンク４０４は、例えばスイッチなどの１又は複数のさらなるネットワーク要素を横断してもよいことが理解されるであろう。タイムフローは、ローカルノード４００が、ローカルノード４００のローカルメモリにおける１又は複数のアドレス空間内の１又は複数のアドレス範囲４０６を登録することから始まる。それから、ローカルノード４００は、キー公開メッセージ４１０を介してアクセスキー４０８を公開し、キー公開メッセージ４１０は、リモートノード４０２などの１又は複数のリモートノードに送信される。一実施形態において、アクセスキー４０８は、ローカルノード４００によって登録された（１又は複数の）登録アドレス範囲／空間を識別するようにエンコードされる。
【００２９】
その後、アクセスキー４０８は、ローカルノード４００により登録された（１又は複数の）アドレス範囲／空間内のメモリにアクセスするリモートノード４０２によって発行されるＲＭＡ書き込み及びＲＭＡ読み出し要求の検証に使用される。図４の下部に表されるとおり、ＡＭ書き込み要求又はＡＭ読み出し要求に対応するメッセージ４１２が、リモートノード４０２からローカルノード４００に送信される。メッセージ４１２はアクセスキー４０８を含む。受信に応じて、ＡＭ書き込み又はＡＭ読み出しが、アクセスキー４０８を使用してローカルノード４００によって検証される。この検証オペレーションは、いつの（１又は複数の）登録アドレス範囲／空間であるのかを確かめるように、開始アドレスと明示的な又は検出された要求のサイズとによって指定されるアドレス範囲を検証してもよい。検証が成功した場合、登録されたメモリへのアクセスが許可され、そうでない場合、該アクセスは許可されない。一実施形態において、リモートノード４０２のＡＭ書き込み又はＡＭ読み出し要求が検証に落第した場合に、アクセスエラーメッセージ４１６がリモートノード４０２に返される。
【００３０】
図５は、本明細書に開示される実施形態の態様を実施することに使用され得る（ローカル）ノード５００として実施されるように構成された例示的な装置のブロック概略図である（「ローカル」又は「リモート」ノードの文脈はノードの観点からであり、本明細書に開示されるオペレーション及び機能性は、ＲＭＡ書き込み又は読み出しオペレーションの文脈においてローカルノード又はリモートノードのいずれかとして動作する単一ノードによって実施され得ることが認識されるべきである。）一実施形態において、ノード５００は、サーバシャーシにインストールされるように構成されたサーバブレード又はサーバモジュールを含む。サーバブレード／モジュールはメインボード５０２を含み、メインボード５０２上に、プロセッサ５０４、メモリ５０６、記憶装置５０８及びネットワークインターフェース５１０を含む様々なコンポーネントが搭載される。メインボード５０２は、一般に、サーバシャーシから電力を受け取り、かつシャーシ内の他のコンポーネントと通信する１又は複数のコネクタを含むことになる。例えば、一般的なブレードサーバ又はモジュールアーキテクチャは、それぞれのサーバブレード又はモジュールの接合コネクタが設置された、複数のコネクタを含むバックプレーンを採用している。
【００３１】
プロセッサ５０４は、１又は複数のコアを含むＣＰＵ５１２を含む。ＣＰＵ及び／又はコアはインターコネクト５１４に結合され、インターコネクト５１４は、プロセッサに実装される１又は複数のインターコネクトの例示である（かつ、簡潔さのために単一のインターフェースコネクトとして示されている）。インターコネクト５１４は、メモリインターフェース（Ｉ／Ｆ）５１６とＰＣＩｅ（ペリフェラルコンポーネントインターコネクトエクスプレス）インターフェース５１８とにさらに結合される。メモリインターフェース５１６はメモリ５０６に結合され、ＰＣＩｅインターフェース５１８は、記憶装置５０８及びネットワークインターフェース５１０を含む様々な入力／出力（Ｉ／Ｏ）装置にプロセッサ５０４を結合するインターフェースを提供する。一般に、記憶装置５０８は、これらに限定されないが磁気又は光ディスクドライブ、ソリッドステートドライブ（ＳＳＤ）、フラッシュメモリチップ又はモジュールなどの１又は複数の不揮発性記憶装置の例示である。
【００３２】
ネットワークインターフェース５１０は、イーサネット（登録商標）ネットワークアダプタ又はＮＩＣなどの、サーバノードに実装され得る様々なタイプのネットワークインターフェースの例示である。ネットワークインターフェース５１０は、ＰＣＩｅインターフェース５２０、ダイレクトメモリアクセス（ＤＭＡ）エンジン５２２、送信バッファ５２４、受信バッファ５２６、ＭＡＣモジュール５３０、及びパケット処理エンジン又はＮＰＵ（ネットワークプロセッサユニット）５３２を含む。ネットワークインターフェース５１０は、イーサネット（登録商標）物理レイヤを実施する回路及びロジックを含むＰＨＹ回路５３４をさらに含む。さらに、任意的な調整レイヤ５３６が表される。
【００３３】
ＰＨＹ回路５３４は、一組のＰＨＹサブレイヤ５３８ａ‐ｄと、シリアライザ／デシリアライザ（ＳＥＲＤＥＳ）５４０と、送信バッファ５４４及び１又は複数の送信器５４６を含む送信ポート５４２と、受信バッファ５５０及び１又は複数の受信器５５２を含む受信ポート５４８とを含む。ノード５００はさらに、有線又は光リンク５６０を介して、受信ポート５５６及び送信ポート５５８を含むリモートノード５５４と通信するようにリンクされるものとして例示されている。実装される具体的なイーサネット（登録商標）ＰＨＹに依存して、種々の送信器及び受信器構成だけでなく、ＰＨＹサブレイヤの種々の組み合わせが採用されてもよい。例えば、１０ＧＥ  ＰＨＹは、４０ＧＥ又は１００ＧＥ  ＰＨＹの異なるＰＨＹ回路を採用するであろう。
【００３４】
図１ａ、図１ｂ、図２ａ、図２ｂ、図３ａ及び図３ｂを参照して上記で説明された実施形態などの実施形態のソフトウェアベースの態様を実施するように、様々なソフトウェアコンポーネントがＣＰＵ５１２の１又は複数のコア上で実行される。図５に表される例示的なソフトウェアコンポーネントは、ホストオペレーティングシステム５６２と、アプリケーション５６４と、様々なＡＭハンドラ５６６及びＲＭＡモジュール５６８を実施するソフトウェア命令とを含む。上記ソフトウェアコンポーネントのすべて又は一部分は、一般に、記憶装置５０８により表されるとおり、ノードのボード上に記憶されることになる。さらに、いくつかの実施形態下において、コンポーネントの１又は複数がネットワークを通じてダウンロードされ、メモリ５０６及び／又は記憶装置５０８にロードされてもよい。
【００３５】
ノード５００のオペレーションの間、ホストオペレーティングシステム５６２の部分が、ＯＳユーザ空間において実行される１又は複数のアプリケーション５６４と共に、メモリ５０６にロードされることになる。ＡＭハンドラ５６６及びＲＭＡモジュール５５８は、一般に、ＯＳドライバなどを使用して実施されてもよく、あるいはＯＳユーザ空間において実行されるソフトウェアコンポーネントとして実施されてもよい。いくつかの実施形態において、ＡＭハンドラ５６６及び／又はＲＭＡモジュール５５８のすべて又は一部分が、ネットワークインターフェース５１０において実施されるパケット処理エンジン／ＮＰＵ５３２などの１又は複数の処理要素上で実行される組み込みソフトウェアとして実施されてもよい。別の選択肢として、ＡＭハンドラオペレーション及び／又はＲＭＡモジュールオペレーションのすべて又は一部分が、ノード５０２上にホストされた１又は複数の仮想マシン（図示せず）を介して実施されてもよい。
【００３６】
図５に例示される実施形態において、ＭＡＣモジュール５３０は、ネットワークインターフェース５１０の一部として表され、ハードウェアコンポーネントを含む。ネットワークインターフェース５１０によりサポートされる様々なオペレーションを実施するロジックが、パケット処理エンジン／ＮＰＵ５３２又は１若しくは複数の他のプロセッサ要素上で実行される組み込みロジック及び／又は組みこみソフトウェアを介して実施されてもよい。一例として、送信ポート５４２からの転送アウトバウンドのための上位レイヤパケットを作成することに、組み込みロジックが用いられてもよい。これには、上位レイヤパケット（例えば、ＴＣＰ／ＩＰ、ＵＤＰ、他のプロトコルなど）のイーサネット（登録商標）パケットにおけるカプセル化と、その後のイーサネット（登録商標）パケットのフレーム化とを含み、イーサネット（登録商標）パケットは、イーサネット（登録商標）フレームのストリームを生成するために使用される。
【００３７】
一般に、パケット処理エンジン／ＮＰＵ５３２により実行されるパケット処理オペレーションは、組み込みロジック及び／又は組み込みソフトウェアを介して実施されてもよい。パケット処理は、ネットワークインターフェース５１０内、及びさらにネットワークインターフェース５１０とメモリ５０６との間におけるデータの送付を管理するように実施される。これには、ＤＭＡ書き込みを使用して受信バッファ５２６からメモリ５０６にデータを送付するように構成されたＤＭＡエンジン５２２の使用を含み、ＣＰＵ５１２を関与させない方法でデータがＰＣＩｅインターフェース５２０及び５１８を介してメモリ５０６に送付されることをもたらす。いくつかの実施形態において、送信バッファ５２４及び受信バッファ５２６は、ネットワーキング分野において周知の技法を使用して上記バッファとメモリ５０６とにおけるＤＭＡデータ転送を容易にするように構成されたメモリマップドＩＯ（ＭＭＩＯ）アドレス空間を含む。
【００３８】
ホストプロセッサ５０４上で実行されるソフトウェアに、ＭＣＡレイヤオペレーションのいずれもが実装されなくてもよく、ＭＡＣレイヤオペレーションのすべて又は一部分が実装されてもよい。スプリットＭＡＣアーキテクチャを使用する一実施形態において、イーサネット（登録商標）パケットカプセル化及びカプセル化解除（decapsulation）オペレーションはソフトウェアにおいて実施され、イーサネット（登録商標）フレーム化及びフレーム化解除（deframing）はハードウェアにおいて（例えば、ネットワークインターフェース５１０のパケット処理エンジン／ＮＰＵ５３２上で実行される組み込みロジック又は組み込みソフトウェアを介して）実施される。
【００３９】
ＡＭ要求とＡＭ応答と関連するＡＭハンドラとを用いるＲＭＡ書き込み及びＲＭＡスキームは、既存のＲＭＡ技法を超える利点を提供する。例えば、上記スキームはホスト上で実行されるソフトウェアを介して実施されてもよいため、特別に構成されたハードウェア（例えば、ＩｎｆｉｎｉＢａｎｄ  ＨＣＡ）をこれまでに必要としたＲＭＡデータ転送を、これに限定されないがイーサネット（登録商標）などの他のプロトコルで使用されるように拡張することができる。上記スキームは、機能性又はパフォーマンスをさらに向上させるようにＰＳＭ又はタグ付きメッセージングＡＰＩの使用などの既存の技法と組み合わせられてもよい。
【００４０】
本明細書に説明される対象事項のさらなる態様が、下記の番号付けされた付記（clauses）において提示される。
付記１
リモートノードとローカルノードとにおけるリモートメモリアクセス（ＲＭＡ）データ転送を実行する方法であって、
上記ローカルノードから上記リモートノードにデータが書き込まれるＲＭＡ書き込みを、
書き込まれるべきデータを上記ローカルノード上のソースバッファから読み出すステップと、
第１のアクティブメッセージ（ＡＭ）書き込み要求を上記ローカルノードから上記リモートノード上のＡＭハンドラに送信するステップであり、上記第１のＡＭ書き込み要求は、書き込まれるべきデータと、該データが書き込まれるべき上記リモートノード上のリモートメモリアドレス空間における開始アドレスとを含む、ステップと、
上記第１のＡＭ書き込み要求を、上記リモートノード上の上記ＡＭハンドラで、上記第１のＡＭ書き込み要求から上記データを抽出し、かつ上記開始アドレスで始まる上記リモートメモリアドレス空間におけるアドレス範囲に上記データを書き込むことによって扱うステップと、
によって実行するステップ
を含む方法。
付記２
上記リモートノードから上記ローカルノードにＡＭ書き込み応答を送信するステップであって、上記ＡＭ書き込み応答は、上記データが上記リモートメモリアドレス空間に成功裏に書き込まれたことを示す、ステップと、
上記ローカルノード上のＡＭハンドラを用いて上記ＡＭ書き込み応答メッセージを処理するステップと、
をさらに含む付記１に記載の方法。
付記３
書き込まれるべき上記データを複数のパケットへと区分するステップと、
上記複数のパケットの各々について、
上記ローカルノード上の上記ソースバッファから、パケットに対応するパケットデータを読み出すステップと、
上記ローカルノードから上記リモートノード上の上記ＡＭハンドラに、上記パケットデータと該パケットデータが書き込まれるべき上記リモートノード上のリモートメモリアドレス空間における開始アドレスとを含むそれぞれのＡＭ要求を送信するステップと、
上記それぞれのＡＭ要求を、上記リモートノード上の上記ＡＭハンドラで、上記それぞれのＡＭ要求から上記パケットデータを抽出し、かつ上記開始アドレスで始まる上記リモートメモリアドレス空間におけるアドレス範囲に上記データを書き込むことによって扱うステップと、
をさらに含み、
上記第１のＡＭ書き込み要求は、上記複数のパケットのデータの第１のパケットを転送するために使用されるＡＭ書き込み要求に対応する、
付記１又は２に記載の方法。
付記４
上記パケットデータのすべてが上記リモートメモリアドレス空間に成功裏に書き込まれたことを検出するステップと、
上記リモートノードから上記ローカルノードに、上記パケットデータが上記リモートメモリアドレス空間に成功裏に書き込まれたことを示すＡＭ応答を送信するステップと、
上記ローカルノード上のＡＭハンドラを用いて上記ＡＭ応答メッセージを処理するステップと、
をさらに含む付記３に記載の方法。
付記５
データが上記リモートノードから読み出され、かつ上記ローカルノードに転送されるＲＭＡ読み出しを、
上記リモートノード上の上記ＡＭハンドラにＡＭ読み出し要求を送信するステップであって、上記ＡＭ読み出し要求は、読み出されるべきデータの上記リモートアドレス空間におけるアドレス範囲を識別する、ステップと、
上記ＡＭ読み出し要求メッセージを受信することに応答して、上記リモートノード上の上記ＡＭハンドラを介して上記リモートアドレス空間から読み出されるべき上記データを取り出し、ＡＭ読み出し応答メッセージを介して上記ローカルノードに上記の取り出されたデータを送信するステップと、
上記ＡＭ読み出し応答を、上記ローカルノード上のＡＭハンドラで、上記ＡＭ読み出し応答から上記データを抽出し、かつ上記ローカルノード上の宛先バッファに上記データを書き込むことによって扱うステップと、
によって実行するステップ
をさらに含む先行する付記のうちいずれか１つに記載の方法。
付記６
データが上記リモートノードから読み出され、かつ複数のパケットを使用して上記ローカルノードに転送されるＲＭＡ読み出しを実行するステップであって、上記複数のパケットの各々についてのデータが、
それぞれのＡＭ読み出し要求を上記リモートノード上の上記ＡＭハンドラに送信するステップであり、上記ＡＭ読み出し要求は、読み出されるべきパケットデータの上記リモートアドレス空間におけるアドレス範囲を識別する、ステップと、
上記ＡＭ読み出し要求メッセージを受信することに応答して、上記リモートノード上の上記ＡＭハンドラを介して上記リモートアドレス空間から読み出されるべき上記パケットデータを取り出し、ＡＭ読み出し応答メッセージを介して上記ローカルノードに上記の取り出されたパケットデータを送信するステップと、
上記ＡＭ読み出し応答を、上記ローカルノード上のＡＭハンドラで、上記ＡＭ読み出し応答から上記パケットデータを抽出し、かつ上記ローカルノード上の宛先バッファに上記パケットデータを書き込むことによって扱うステップと、
によって転送される、ステップ、
をさらに含む先行する付記のうちいずれか１つに記載の方法。
付記７
タグ付きメッセージングスキームを使用して上記第１のＡＭ書き込み要求にタグ付きメッセージを用いるステップと、
上記リモートノード上の上記ＡＭハンドラを用いて上記タグ付きメッセージを調べて、上記リモートノードが上記第１のＡＭ書き込み要求の意図された受信者であることを照合するステップと、
をさらに含む先行する付記のうちいずれか１つに記載の方法。
付記８
上記ローカルノードにおいて、上記リモートノードから送信される１又は複数のＡＭ書き込み要求を使用してデータが書き込まれ得る上記リモートノード上の上記リモートメモリアドレス空間における少なくとも１つのアドレス範囲を登録するステップ、をさらに含む先行する付記のうちいずれか１つに記載の方法。
付記９
上記リモートノードに、上記ローカルノードに登録された少なくとも１つのアドレス範囲に対応するアクセスキーを公開するステップと、
上記第１のＡＭ書き込み要求に上記アクセスキーを含めるステップと、
上記リモートノード上の上記ＡＭハンドラを介して上記アクセスキーを調べて、上記第１のＡＭ書き込み要求が許可されるかを検証するステップと、
をさらに含む付記８に記載の方法。
付記１０
先行する付記のうちいずれか１つに記載の方法を実施するためにローカル及びリモートのノード上でそれぞれ実行されるように構成された第１の命令セット及び第２の命令セットを記憶した非一時的マシン可読媒体。
付記１１
リモートノードとローカルノードとにおけるリモートメモリアクセス（ＲＭＡ）データ転送を実行する方法であって、
上記ローカルノードから上記リモートノードにデータが書き込まれるＲＭＡ書き込みを、
上記ローカルノードから上記リモートノード上のＡＭハンドラに第１のアクティブメッセージ（ＡＭ）書き込み要求を送信するステップであり、上記第１のＡＭ書き込み要求は、上記データが書き込まれるべき上記リモートノード上のリモートメモリアドレス空間におけるアドレス範囲を識別する、ステップと、
書き込まれるべきデータを上記ローカルノード上のソースバッファから読み出し、上記データを上記リモートノードに送信するステップと、
上記リモートノードにより受信された上記データを、上記リモートメモリアドレス空間に書き込まれるべき上記データに上記第１のＡＭ書き込み要求において識別される上記アドレス範囲を占有させるように処理するステップと、
によって実行するステップ
を含む方法。
付記１２
複数のＡＭ書き込み要求を受信するステップであって、各ＡＭ書き込み要求は、後に送信されるＡＭ書き込み要求に関連付けられたデータのブロックが書き込まれるべき上記リモートノード上の上記リモートメモリアドレス空間におけるアドレス範囲を識別し、各ＡＭ書き込み要求は、関連付けられたデータの上記ブロックを識別するしるし（indicia）を含む、ステップと、
上記リモートノード上の上記ＡＭハンドラを介して、上記リモートノード上のＲＭＡ書き込みキューに各ＡＭ書き込み要求をエンキューするステップと、
上記ローカルノードからデータの複数のブロックを受信するステップであって、データの各ブロックは、事前に受信されたＡＭ書き込み要求に関連付けられ、上記事前に受信されたＡＭ書き込み要求を識別することがしるしを含む、ステップと、
上記ＲＭＡ書き込みキューから上記ＡＭ書き込み要求をデキューするステップと、
各々のデキューされたＡＭ書き込み要求を、ＡＭ書き込み要求に関連付けられた上記の受信されたデータのブロックが上記リモートメモリアドレス空間においてどこに書き込まれるべきかを決定するように処理するステップと、
をさらに含む付記１１に記載の方法。
付記１３
データが上記リモートノードから読み出され、かつ上記ローカルノードに転送されるＲＭＡ読み出しを、
上記リモートノード上の上記ＡＭハンドラにＡＭ読み出し要求を送信するステップであって、上記ＡＭ読み出し要求は、読み出されるべきデータの上記リモートアドレス空間におけるアドレス範囲を識別する、ステップと、
上記ＡＭ読み出し要求メッセージを受信することに応答して、上記リモートノード上の上記ＡＭハンドラを介して、読み出されるべきデータの上記リモートアドレス空間における上記アドレス範囲を識別する上記ＡＭ読み出し要求に対応するＲＭＡ読み出し要求を生成するステップと、
上記リモートノード上で上記ＲＭＡ読み出し要求を処理するステップであって、上記ＲＭＡ読み出し要求における上記アドレス範囲により定義されるとおりの上記リモートアドレス空間から読み出されるべき上記データが、上記リモートアドレス空間から取り出され、かつ上記ローカルノードに送信されることをもたらす、ステップと、
上記リモートノードから送信される上記の取り出されたデータを、上記ローカルノード上の宛先バッファに書き込むステップと、
によって実行するステップ、をさらに含む付記１１又は１２に記載の方法。
付記１４
上記ＡＭ読み出し要求メッセージを受信することに応答して、上記リモートノード上の上記ＡＭハンドラを介して、読み出されるべきデータの上記リモートアドレス空間における上記アドレス範囲を識別する上記ＡＭ読み出し要求に対応するＲＭＡ読み出し要求を生成し、上記リモートノード上のＲＭＡ読み出し要求キューにエンキューするステップと、
上記ＲＭＡ読み出し要求キューから上記ＲＭＡ読み出し要求をデキューするステップと、
上記ＲＭＡ読み出し要求における上記アドレス範囲により定義されるとおりの上記リモートアドレス空間から読み出されるべき上記データを取り出し、上記の取り出されたデータを上記ローカルノードに送信するステップと、
をさらに含む付記１３に記載の方法。
付記１５
上記のデキューし、データ取り出しし、送信するオペレーションは、上記リモートノード上の上記ＡＭハンドラとは別個である上記リモートノード上のＲＭＡ読み出し機能によって実行される、付記１４に記載の方法。
付記１６
上記ローカルノードにおいて、上記リモートノードから送信される１又は複数のＡＭ書き込み要求を使用してデータが書き込まれ得る上記リモートノード上の上記リモートメモリアドレス空間における少なくとも１つのアドレス範囲を登録するステップ、をさらに含む付記１１乃至１５のうちいずれか１つに記載の方法。
付記１７
上記リモートノードに、上記ローカルノードに登録された少なくとも１つのアドレス範囲に対応するアクセスキーを公開するステップと、
上記第１のＡＭ書き込み要求に上記アクセスキーを含めるステップと、
上記リモートノード上の上記ＡＭハンドラを介して上記アクセスキーを調べて、上記第１のＡＭ書き込み要求が許可されるかを検証するステップと、
をさらに含む付記１７に記載の方法。
付記１８
付記１１乃至１７のうちいずれか１つに記載の方法を実施するためにローカル及びリモートのノード上でそれぞれ実行されるように構成された第１の命令セット及び第２の命令セットを記憶した非一時的マシン可読媒体。
付記１９
ネットワークインターフェースと、
ローカルメモリアドレス空間を含むメモリと、
上記ネットワークインターフェースを介して、上記ネットワークインターフェースに結合された通信リンクを通じてリモート装置から送信される第１のＡＭ書き込み要求を受信することであって、上記第１のＡＭ書き込み要求は、上記リモート装置により発行されるリモートメモリアクセス（ＲＭＡ）書き込みに対応し、第１のデータが書き込まれるべき上記メモリにおける上記ローカルメモリアドレス空間における開始アドレスに書き込まれるべき上記データを含み、
上記第１のＡＭ書き込み要求を、上記第１のＡＭ書き込み要求から上記データを抽出し、かつ上記開始アドレスで始まる上記リモートメモリアドレス空間におけるアドレス範囲に上記データを書き込むことによって扱い、
上記リモート装置に、上記データが上記リモートメモリアドレス空間に成功裏に書き込まれたことを示すＡＭ書き込み応答を送信する
ように構成された書き込み要求アクティブメッセージ（ＡＭ）ハンドラと、
を備えた装置。
付記２０
上記リモート装置上のメモリにおけるリモートメモリアドレス空間に対するＲＭＡ書き込みに対応する第２のＡＭ書き込み要求が生成され、かつ上記リモート装置に送信されるＡＭ書き込みオペレーションを実行するように構成されたＲＭＡ書き込みモジュールであって、上記第２のＡＭ書き込み要求は、第２のデータが書き込まれるべき上記リモートメモリアドレス空間における開始アドレスに書き込まれるべき上記データを含む、ＲＭＡ書き込みモジュールと、
上記第２のデータを上記リモートメモリアドレス空間に成功裏に書き込むことに応じて上記リモート装置から送信されるＡＭ書き込み応答を処理するように構成された書き込み応答ＡＭハンドラと、
をさらに備えた付記１９に記載の装置。
付記２１
ソースバッファ、をさらに備え、上記ＲＭＡ書き込みモジュールは、
上記リモートメモリアドレス空間に書き込まれるべき第３のデータを複数のパケットへと区分し、
上記複数のパケットの各々について、
パケットに対応するパケットデータを上記ソースバッファから読み出し、
上記リモート装置上の書き込み要求ＡＭハンドラに、上記パケットデータと該パケットデータが書き込まれるべき上記リモート装置上の上記リモートメモリアドレス空間におけるそれぞれの開始アドレスとを含むそれぞれのＡＭ書き込み要求を送信する
ようにさらに構成される、付記２０に記載の装置。
付記２２
上記書き込み要求ＡＭハンドラは、
上記リモート装置から複数のＡＭ書き込み要求を受信することであって、上記複数のＡＭ書き込み要求の各々は、複数のパケットへと区分され、かつ上記ローカルメモリアドレス空間におけるそれぞれの開始アドレスにおいて上記ローカルメモリアドレス空間に書き込まれるべき第３のデータの、リモート書き込みに対応するそれぞれのパケットデータを含み、
上記複数のＡＭ書き込み要求の各々についての上記パケットデータを抽出し、ＡＭ書き込み要求により識別される上記開始アドレスで始まる上記ローカルメモリアドレス空間に上記パケットデータを書き込み、
上記第３のデータの全体が上記ローカルメモリアドレス空間に書き込まれたことを検出し、
上記リモート装置に、上記第３のデータが上記ローカルメモリアドレス空間に成功裏に書き込まれたことを示すＡＭ書き込み応答を送信する
ようにさらに構成される、付記１９乃至２１のうちいずれか１つに記載の装置。
付記２３
上記ローカルメモリにおける宛先バッファと、
読み出し応答ＡＭハンドラと、
ＡＭ読み出し要求を生成し、上記リモート装置上の読み出し要求ＡＭハンドラに送信することであって、上記ＡＭ読み出し要求は、読み出されるべき上記リモート装置のデータの上記リモートアドレス空間におけるアドレス範囲を識別し、
上記ＡＭ読み出し要求に応答して、上記リモート装置から、上記リモートアドレス空間から読み出された上記データを含むＡＭ読み出し応答を受信し、
上記ＡＭ読み出し応答を、上記読み出し応答ＡＭハンドラで、上記ＡＭ読み出し応答から上記データを抽出し、かつ上記データを上記宛先バッファに書き込むことによって扱う
ように構成されたＲＭＡ読み出しモジュールと、
をさらに備えた付記１９乃至２２のうちいずれか１つに記載の装置。
付記２４
上記ＲＭＡ読み出しモジュールは、データが上記リモート装置から読み出され、かつ複数のパケットを使用して転送されるＲＭＡ読み出しを実行するようにさらに構成され、上記複数のパケットの各々についてのデータは、
それぞれのＡＭ読み出し要求を上記リモート装置上の上記ＡＭ読み出し要求ハンドラに送信することであって、上記ＡＭ読み出し要求は、読み出されるべきパケットデータの上記リモートアドレス空間におけるアドレス範囲を識別し、
各々のそれぞれのＡＭ読み出し要求に応答して、上記リモート装置から、上記リモートアドレス空間から読み出された上記パケットデータを含むＡＭ読み出し応答を受信し、
上記ＡＭ読み出し応答を、上記読み出し応答ＡＭハンドラで、上記ＡＭ読み出し応答から上記パケットデータを抽出し、かつ上記パケットデータを上記宛先バッファに書き込むことによって扱う
ことによって遠隔的に（remotely）読み出される、付記１９乃至２３のうちいずれか１つに記載の装置。
付記２５
上記リモート装置から、読み出されるべきデータを含むデータの上記ローカルアドレス空間におけるアドレス範囲を識別するＡＭ読み出し要求を受信し、
上記ＡＭ読み出し要求において識別される上記アドレス範囲から上記データを取り出し、
上記リモート装置に、取り出された上記データを含むＡＭ応答を送信する
ように構成された読み出し要求ＡＭハンドラ
をさらに含む付記１９乃至２４のうちいずれか１つに記載の装置。
付記２６
ネットワークインターフェースと、
ローカルメモリアドレス空間を含むメモリと、
上記ネットワークインターフェースを介して、上記ネットワークインターフェースに結合された通信リンクを通じてリモート装置から送信される複数のＡＭ書き込み要求を受信することであって、各ＡＭ書き込み要求は、上記リモート装置により発行されるリモートメモリアクセス（ＲＭＡ）書き込みに対応し、上記ローカルメモリアドレス空間に書き込まれるべきそれぞれのデータと該それぞれのデータの先頭が書き込まれるべき開始アドレスとを含み、
ＲＭＡ書き込み要求を生成し、上記ＲＭＡ書き込み要求をＲＭＡ書き込みキューにエンキューする
ように構成された書き込み要求アクティブメッセージ（ＡＭ）ハンドラと、
上記リモート装置からデータの複数のブロックを受信することであって、データの各ブロックは、事前に受信されたＡＭ書き込み要求に関連付けられ、対応するＲＭＡ書き込み要求を識別することができるしるしを含み、
上記ＲＭＡ書き込みキューから上記ＲＭＡ書き込み要求をデキューし、
各々のデキューされたＲＭＡ書き込み要求を、ＲＭＡ書き込み要求に関連付けられた上記の受信されたデータのブロックが上記ローカルメモリアドレス空間においてどこに書き込まれるべきかを決定するように処理する
ように構成されたＲＭＡ進行モジュールと、
を備えた装置。
付記２７
上記メモリにおけるソースバッファと、
上記リモート装置にＡＭ書き込み要求を送信することであって、上記ＡＭ書き込み要求は、上記データが書き込まれるべき上記リモート装置上のメモリにおけるリモートメモリアドレス空間におけるアドレス範囲を識別し、
書き込まれるべき上記データを上記ソースバッファから読み出し、
上記データを上記リモート装置に送信することであって、上記データは、上記ＡＭ書き込み要求を送信した後に送信され、上記データは、送信される上記データを上記ＡＭ書き込み要求とマッチさせるのに使用されるように構成されたしるしと共に送信される
ように構成されたＲＭＡ書き込みモジュールと、
をさらに備えた付記２６に記載の装置。
付記２８
ＲＭＡ読み出し要求キューと、
上記リモート装置から、読み出されるべきデータの上記ローカルアドレス空間におけるアドレス範囲を識別するＡＭ読み出し要求を受信し、
上記ＡＭ読み出し要求メッセージを受信することに応答して、読み出されるべきデータの上記ローカルアドレス空間における上記アドレス範囲を識別する対応するＲＭＡ読み出し要求を生成し、
上記ＲＭＡ読み出し要求キューに上記ＲＭＡ読み出し要求をエンキューする
ように構成された読み出し要求ＡＭハンドラと、
上記ＲＭＡ読み出し要求キューから上記ＲＭＡ読み出し要求をデキューし、
上記ＲＭＡ読み出し要求における上記アドレス範囲により定義されるとおりの上記ローカルアドレス空間からデータを読み出し、
読み出された上記データを上記リモート装置に送信する
ように構成されたＲＭＡ進行モジュールと、
をさらに備えた付記２６又は２７に記載の装置。
付記２９
上記メモリの一部分を占有する宛先バッファと、
上記リモート装置にＡＭ読み出し要求を送信することであって、上記ＡＭ読み出し要求は、読み出されるべき上記リモート装置上のメモリにおけるリモートアドレス空間におけるアドレス範囲を識別し、
上記リモート装置から、上記リモートアドレス空間から読み出されたデータを受信し、
上記の受信されたデータを上記宛先バッファに書き込む
ように構成されたＲＭＡ読み出しモジュールと、
をさらに備えた付記２８に記載の装置。
付記３０
ネットワークインターフェースとローカルアドレス空間を含むメモリとを含むノード上で実行されるように構成された命令を記憶した非一時的マシン可読媒体であって、上記命令は、
実行されると、
上記ネットワークインターフェースを介して、上記ネットワークインターフェースに結合された通信リンクを通じてリモート装置から送信される第１のＡＭ書き込み要求を受信することであって、上記第１のＡＭ書き込み要求は、上記リモート装置により発行されるリモートメモリアクセス（ＲＭＡ）書き込みに対応し、かつ第１のデータが書き込まれるべき上記メモリにおける上記ローカルメモリアドレス空間における開始アドレスに書き込まれるべき上記データを含み、
上記第１のＡＭ書き込み要求を、上記第１のＡＭ書き込み要求から上記データを抽出し、かつ上記開始アドレスで始まる上記リモートメモリアドレス空間におけるアドレス範囲に上記データを書き込むことによって扱い、
上記リモート装置に、上記データが上記リモートメモリアドレス空間に成功裏に書き込まれたことを示すＡＭ書き込み応答を送信する
ように構成された書き込み要求アクティブメッセージ（ＡＭ）ハンドラ
を含む、非一時的マシン可読媒体。
付記３１
上記リモート装置上のメモリにおけるリモートメモリアドレス空間に対するＲＭＡ書き込みに対応する第２のＡＭ書き込み要求が生成され、かつ上記リモート装置に送信されるＡＭ書き込みオペレーションを実行するように構成されたＲＭＡ書き込みモジュールであって、上記第２のＡＭ書き込み要求は、第２のデータが書き込まれるべき上記リモートメモリアドレス空間における開始アドレスに書き込まれるべき上記データを含む、ＲＭＡ書き込みモジュールと、
上記第２のデータを上記リモートメモリアドレス空間に成功裏に書き込むことに応じて上記リモート装置から送信されるＡＭ書き込み応答を処理するように構成された書き込み応答ＡＭハンドラと、
を含む命令をさらに含む、付記３０に記載の非一時的マシン可読媒体。
付記３２
上記ノードはソースバッファをさらに備え、上記ＲＭＡ書き込みモジュールは、
上記リモートメモリアドレス空間に書き込まれるべき第３のデータを複数のパケットへと区分し、
上記複数のパケットの各々について、
上記ソースバッファから、パケットに対応するパケットデータを読み出し、
上記リモート装置上の書き込み要求ＡＭハンドラに、上記パケットデータと該パケットデータが書き込まれるべき上記リモート装置上の上記リモートメモリアドレス空間におけるそれぞれの開始アドレスとを含むそれぞれのＡＭ書き込み要求を送信する
ようにさらに構成される、付記３１に記載の非一時的マシン可読媒体。
付記３３
上記書き込み要求ＡＭハンドラは、
上記リモート装置から複数のＡＭ書き込み要求を受信することであって、上記複数のＡＭ書き込み要求の各々は、複数のパケットへと区分され、かつ上記ローカルメモリアドレス空間におけるそれぞれの開始アドレスにおいて上記ローカルメモリアドレス空間に書き込まれるべき第３のデータの、リモート書き込みに対応するそれぞれのパケットデータを含み、
上記複数のＡＭ書き込み要求の各々について、パケットデータを抽出し、ＡＭ書き込み要求により識別される開始アドレスで始まる上記ローカルメモリアドレス空間に上記パケットデータを書き込み、
上記第３のデータの全体が上記ローカルメモリアドレス空間に書き込まれたことを検出し、
上記リモート装置に、上記第３のデータが上記ローカルメモリアドレス空間に成功裏に書き込まれたことを示すＡＭ書き込み応答を送信する
ようにさらに構成される、付記３０乃至３２のうちいずれか１つに記載の非一時的マシン可読媒体。
付記３４
上記ノードは上記ローカルメモリにおける宛先バッファをさらに備え、上記命令は、
読み出し応答ＡＭハンドラと、
実行されると、
ＡＭ読み出し要求を生成し、上記リモート装置上の読み出し要求ＡＭハンドラに送信することであって、上記ＡＭ読み出し要求は、読み出されるべき上記リモート装置のデータの上記リモートアドレス空間におけるアドレス範囲を識別し、
上記ＡＭ読み出し要求に応答して、上記リモート装置から、上記リモートアドレス空間から読み出された上記データを含むＡＭ読み出し応答を受信し、
上記ＡＭ読み出し応答を、上記読み出し応答ＡＭハンドラで、上記ＡＭ読み出し応答から上記データを抽出し、かつ上記データを上記宛先バッファに書き込むことによって扱う
ように構成されたＲＭＡ読み出しモジュールと、
をさらに含む、付記３０乃至３３のうちいずれか１つに記載の非一時的マシン可読媒体。
付記３５
上記ＲＭＡ読み出しモジュールは、データが上記リモート装置から読み出され、かつ複数のパケットを使用して転送されるＲＭＡ読み出しを実行するようにさらに構成され、上記複数のパケットの各々についてのデータは、
それぞれのＡＭ読み出し要求を上記リモート装置上の上記ＡＭ読み出し要求ハンドラに送信することであって、上記ＡＭ読み出し要求は、読み出されるべきパケットデータの上記リモートアドレス空間におけるアドレス範囲を識別し、
各々のそれぞれのＡＭ読み出し要求に応答して、上記リモート装置から、上記リモートアドレス空間から読み出された上記パケットデータを含むＡＭ読み出し応答を受信し、
上記ＡＭ読み出し応答を、上記読み出し応答ＡＭハンドラで、上記ＡＭ読み出し応答から上記パケットデータを抽出し、かつ上記パケットデータを上記宛先バッファに書き込むことによって扱う
ことによって遠隔的に読み出される、付記３０乃至３４のうちいずれか１つに記載の非一時的マシン可読媒体。
付記３６
上記命令は、
上記リモート装置から、読み出されるべきデータを含むデータの上記ローカルアドレス空間におけるアドレス範囲を識別するＡＭ読み出し要求を受信し、
上記ＡＭ読み出し要求において識別される上記アドレス範囲から上記データを取り出し、
上記リモート装置に、取り出された上記データを含むＡＭ応答を送信する
ように構成された読み出し要求ＡＭハンドラ
をさらに含む、付記３０乃至３５のうちいずれか１つに記載の非一時的マシン可読媒体。
付記３７
ネットワークインターフェースとローカルアドレス空間を含むメモリとを含むノード上で実行されるように構成された命令を記憶した非一時的マシン可読媒体であって、上記命令は、
実行されると、
上記ネットワークインターフェースを介して、上記ネットワークインターフェースに結合された通信リンクを通じてリモート装置から送信される複数のＡＭ書き込み要求を受信することであって、各ＡＭ書き込み要求は、上記リモート装置により発行されるリモートメモリアクセス（ＲＭＡ）書き込みに対応し、かつ上記ローカルメモリアドレス空間に書き込まれるべきそれぞれのデータと該それぞれのデータの先頭が書き込まれるべき開始アドレスとを含み、
ＲＭＡ書き込み要求を生成し、上記ＲＭＡ書き込み要求をＲＭＡ書き込みキューにエンキューする
ように構成された書き込み要求アクティブメッセージ（ＡＭ）ハンドラと、
実行されると、
上記リモート装置からデータの複数のブロックを受信することであって、データの各ブロックは、事前に受信されたＡＭ書き込み要求に関連付けられ、かつ対応するＲＭＡ書き込み要求を識別することができるしるしを含み、
上記ＲＭＡ書き込みキューから上記ＲＭＡ書き込み要求をデキューし、
各々のデキューされたＲＭＡ書き込み要求を、ＲＭＡ書き込み要求に関連付けられた上記の受信されたデータのブロックが上記ローカルメモリアドレス空間においてどこに書き込まれるべきかを決定するように処理する
ように構成されたＲＭＡ進行モジュールと、
を含む、非一時的マシン可読媒体。
付記３８
上記ノードは上記メモリにおけるソースバッファをさらに備え、上記命令は、
実行されると、
上記リモート装置にＡＭ書き込み要求を送信することであって、上記ＡＭ書き込み要求は、上記データが書き込まれるべき上記リモート装置上のメモリにおけるリモートメモリアドレス空間におけるアドレス範囲を識別し、
書き込まれるべき上記データを上記ソースバッファから読み出し、
上記データを上記リモート装置に送信することであって、上記データは、上記ＡＭ書き込み要求を送信した後に送信され、上記データは、送信される上記データを上記ＡＭ書き込み要求とマッチさせるのに使用されるように構成されたしるしと共に送信される
ように構成されたＲＭＡ書き込みモジュール
をさらに含む、付記３７に記載の非一時的マシン可読媒体。
付記３９
上記ノードはＲＭＡ読み出し要求キューをさらに備え、上記命令は、
実行されると、
上記リモート装置から、読み出されるべきデータの上記ローカルアドレス空間におけるアドレス範囲を識別するＡＭ読み出し要求を受信し、
上記ＡＭ読み出し要求メッセージを受信することに応答して、読み出されるべきデータの上記ローカルアドレス空間における上記アドレス範囲を識別する対応するＲＭＡ読み出し要求を生成し、
上記ＲＭＡ読み出し要求キューに上記ＲＭＡ読み出し要求をエンキューする
ように構成された読み出し要求ＡＭハンドラと、
上記ＲＭＡ読み出し要求キューから上記ＲＭＡ読み出し要求をデキューし、
上記ＲＭＡ読み出し要求における上記アドレス範囲により定義されるとおりの上記ローカルアドレス空間からデータを読み出し、
読み出された上記データを上記リモート装置に送信する
ように構成されたＲＭＡ進行モジュールと、
をさらに含む、付記３７又は３８に記載の非一時的マシン可読媒体。
付記４０
上記ノードは上記メモリの一部分を占有する宛先バッファをさらに備え、上記命令は、
実行されると、
上記リモート装置にＡＭ読み出し要求を送信することであって、上記ＡＭ読み出し要求は、読み出されるべき上記リモート装置上のメモリにおけるリモートアドレス空間におけるアドレス範囲を識別し、
上記リモート装置から、上記リモートアドレス空間から読み出されたデータを受信し、
上記の受信されたデータを上記宛先バッファに書き込む
ように構成されたＲＭＡ読み出しモジュール
をさらに含む、付記３９に記載の非一時的マシン可読媒体。
【００４１】
具体的な実装を参照していくつかの実施形態が説明されたが、他の実装がいくつかの実施形態に従って可能である。さらに、図面に例示され及び／又は本明細書に説明された要素又は他の特徴の配置及び／又は順序は、例示され説明された上記具体的な方法において配置される必要はない。多くの他の配置がいくつかの実施形態に従って可能である。
【００４２】
図に示された各システムにおいて、いくつかの場合における要素が同じ参照番号又は異なる参照番号を各々有して、表現された要素が異なり得る及び／又は同様であり得ることを示唆することがある。しかしながら、要素は、種々の実装を有し、かつ本明細書に示され又は説明されたシステムのいくつか又はすべてと共に動作するほど十分に、柔軟であり得る。図面に示された様々な要素は、同じであってもよく、あるいは異なってもよい。どの要素が第１の要素として参照され、どれが第２の要素と呼ばれるかは、任意的である。
【００４３】
本説明及び請求項において、用語「結合される」及び「接続される」とその派生物とが使用されることがある。上記用語は、互いに対するシノニムであるようには意図されないことが理解されるべきである。むしろ、特定の実施形態において、「接続される」は、２以上の要素が互いに直接の物理的又は電気的接触を有することを示すために使用されることがある。「結合される」は、２以上の要素が直接の物理的又は電気的接触を有することを意味することがある。しかしながら、「結合される」は、２以上の要素が互いに直接の接触を有さないがしかしなお互いに協働し又は相互作用することを意味することもある。
【００４４】
本明細書において、及び一般に、アルゴリズムは、所望される結果につながる動作又はオペレーションについての自己矛盾のないシーケンスであると考えられる。上記動作又はオペレーションには、物理量の物理的操作を含む。必ずではないが、大抵、上記量は、記憶され、転送され、結合され、比較され、さらにその他の方法で操作されることが可能な電気的又は磁気的信号の形態をとる。上記信号をビット、値、要素、シンボル、文字、用語、数などで参照することは、主に共通使用の理由で、時に便利であることが分かっている。しかしながら、上記の及び同様の用語のすべてが適切な物理量に関連付けられるべきであり、かつ上記量に適用される単に便利なラベルであることが理解されるべきである。
【００４５】
一実施形態は、本発明の一実装又は一例である。本明細書における「一実施形態」、「ある実施形態」、「いくつかの実施形態」又は「他の実施形態」といった言葉は、その実施形態と関連して説明された特定の特徴、構造又は特性が本発明の少なくともいくつかの実施形態に含まれ、しかし必ずしもすべての実施形態には含まれないことを意味する。「一実施形態」、「ある実施形態」又は「いくつかの実施形態」の様々な出現は、必ずしもすべて同じ実施形態を参照するものではない。
【００４６】
本明細書に説明され例示されたすべてのコンポーネント、特徴、構造、特性等が特定の１又は複数の実施形態に含まれる必要はない。例えば、あるコンポーネント、特徴、構造又は特性が含まれ「てよい」、含まれ「る可能性がある」、含まれ「ることができる」、あるいは含まれ「るであろう」と本明細書が示す場合、上記特定のコンポーネント、特徴、構造又は特性が含まれることを必要とはされない。本明細書又は請求項が「一」要素を参照する場合、このことは、上記要素が１つだけ存在することを意味するものではない。本明細書又は請求項が「さらなる一」要素を参照する場合、このことは、２以上のさらなる要素が存在することを除外するものではない。
【００４７】
上記で論じられたとおり、本明細書における実施形態の様々な態様が、対応するソフトウェア並びに／又は組み込みコンポーネント及びアプリケーション、例えば、サーバ若しくはデバイスプロセッサ上で実行されるソフトウェア、並びに／又は組み込みプロセッサによって実行されるソフトウェア及び／若しくはファームウェアなどによって容易にされ得る。ゆえに、本発明の実施形態は、何らかの形態の処理コア（コンピュータのＣＰＵ、マルチコアプロセッサの１又は複数のコアなど）上で実行されるソフトウェアプログラム、ソフトウェアモジュール、ファームウェア及び／若しくは分散ソフトウェア、又はプロセッサ若しくはコア上で実行される仮想マシンとして使用され、あるいはこれらをサポートするように使用されてもよく、あるいはその他の方法で、コンピュータ可読又はマシン可読非一時的記憶媒体上に又は該媒体内で実施され、あるいは実現されてもよい。コンピュータ可読又はマシン可読非一時的記憶媒体は、マシン（例えばコンピュータ）によって読取可能な形式において情報を記憶し又は送信する任意のメカニズムを含む。例えば、コンピュータ可読又はマシン可読非一時的記憶媒体は、記録可能／記録不可能媒体（例えば、読取専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置など）などの、コンピュータ又はコンピューティングマシン（例えば、コンピューティングデバイス、電子システムなど）がアクセス可能な形式において情報を提供する（すなわち、記憶し、かつ／あるいは送信する）任意のメカニズムを含む。そのコンテンツは、直接実行ファイル（「オブジェクト」又は「実行可能」形式）、ソースコード、又は差分コード（「デルタ」又は「パッチ」コード）であってよい。コンピュータ可読又はマシン可読非一時的記憶媒体には記憶装置又はデータベースを含んでもよく、上記記憶装置又はデータベースからコンテンツがダウンロードされてもよい。コンピュータ可読又はマシン可読非一時的記憶媒体には、販売又は発送の時点においてコンテンツを記憶させた装置又はプロダクトを含んでもよい。ゆえに、記憶されたコンテンツを有する装置を発送すること、又は通信媒体を通じたダウンロード向けにコンテンツを提示することが、本明細書に説明された上記コンテンツを有するコンピュータ可読又はマシン可読非一時的記憶媒体を含む製造品を提供することとして理解されてもよい。
【００４８】
本明細書に説明されたプロセス、サーバ又はツールとして上記で言及された様々なコンポーネントが、説明された機能を実行する手段であり得る。本明細書において説明された様々なコンポーネントによって実行されるオペレーション及び機能は、処理要素上で実行されるソフトウェアによって、あるいは組み込みハードウェアなどを介して、あるいはハードウェアとソフトウェアとの任意の組み合わせで実施されてもよい。上記コンポーネントは、ソフトウェアモジュール、ハードウェアモジュール、専用目的ハードウェア（例えば、アプリケーション固有ハードウェア、ＡＳＩＣ、ＤＳＰなど）、組み込みコントローラ、ハードワイヤード回路、ハードウェアロジックなどとして実施されてもよい。ソフトウェアコンテンツ（例えば、データ、命令、構成情報など）は、コンピュータ可読又はマシン可読非一時的記憶媒体を含む製造品を介して提供されてもよく、これは、実行することができる命令を表すコンテンツを提供する。コンテンツは、コンピュータに、本明細書に説明された様々な機能／オペレーションを実行させることができる。
【００４９】
本明細書において使用されるとき、用語「のうち少なくとも１つ」で結び付けられたアイテムの列挙は、列挙された用語の任意の組み合わせを意味し得る。例えば、表現「Ａ、Ｂ又はＣのうち少なくとも１つ」は、Ａ、Ｂ、Ｃ、Ａ及びＢ、Ａ及びＣ、Ｂ及びＣ又はＡ、Ｂ及びＣを意味し得る。
【００５０】
本発明の例示された実施形態の上記説明は、要約書に説明される内容も含め、網羅的なものではなく、開示されたそのままの形態に本発明を限定するものでもない。本発明の特定の実施形態と本発明のための例とが本明細書において例示目的で説明されているが、当業者が認識するであろうとおり、本発明の範囲内で様々な均等的変更が可能である。
【００５１】
こうした変更は、本発明に対して上記の詳細な説明を考慮して行われ得る。下記の請求項において使用される用語は、本明細書及び図面に開示された特定の実施形態に本発明を限定するものとみなされるべきではない。むしろ、本発明の範囲は全体として下記の請求項によって決定されるべきであり、請求項は請求項解釈についての確立された原則に従って解釈されるべきである。
【符号の説明】
【００５２】
１００、２００、３００  ローカルノード
１０２、２０２、３０２  リモートノード
１０４、２０６、３０６  ソースバッファ
１０６、２１０、３０８  ＲＭＡ書き込みモジュール
１０８、２１２          ＡＭ書き込み応答ハンドラ
１１０、２１４、３１０  ＡＭ書き込み要求ハンドラ
１１２、２１６、３１４  ＲＭＡアドレス空間
１１４、２０４、３０４  インターコネクト
１１６                  ソースデータ
１１８、２２２、３１６  ＡＭ書き込み要求
１２２、２２６          ＡＭ書き込み応答
１２４、２２８、３３０  宛先バッファ
１２６、２３２、３３２  ＲＭＡ読み出しモジュール
１２８、２３４          ＡＭ読み出し応答ハンドラ
１３０、２３６、３３６  ＡＭ読み出し要求ハンドラ
１３２、２４０、３３４  ＡＭ読み出し要求
１３４                  リモートデータ
１３６、２４２          ＡＭ読み出し応答
２０８、２１８、２３０  スロット
２２０、２４１          パケット
３１２                  ＲＭＡ進行モジュール
３２４                  ＲＭＡ書き込み要求キュー
３３８                  ＲＭＡ読み出し要求キュー
４００  ローカルノード
４０２  リモートノード
４０４  ネットワークリンク
４０６  アドレス範囲／空間
４０８  アクセスキー
４１０  キー公開メッセージ
４１２  ＡＭ書き込み又は読み出し要求メッセージ
４１６  アクセスエラーメッセージ
５００  （ローカル）ノード
５０２  メインボード
５０４  プロセッサ
５０６  メモリ
５１６  メモリインターフェース
５０８  記憶装置
５１０  ネットワークインターフェース
５１８、５２０  ＰＣＩｅインターフェース
５２２  ＤＭＡエンジン
５６６  ＡＭハンドラ
５５８  ＲＭＡモジュール
５５４  リモートノード
【図１ａ】
2016053946.tif 000003
【図１ｂ】
2016053946.tif 000004
【図２ａ】
2016053946.tif 000005
【図２ｂ】
2016053946.tif 000006
【図３ａ】
2016053946.tif 000007
【図３ｂ】
2016053946.tif 000008
【図４】
2016053946.tif 000009
【図５】
2016053946.tif 000010
【外国語明細書】
2016053946000001.pdf
2016053946000002.pdf
2016053946000003.pdf
2016053946000004.pdf