JP7144671B2 - ネットワークインタフェース装置、それを有するノードを複数有する情報処理装置及び情報処理装置のノード間送信データ送信方法 - Google Patents

ネットワークインタフェース装置、それを有するノードを複数有する情報処理装置及び情報処理装置のノード間送信データ送信方法 Download PDF

Info

Publication number
JP7144671B2
JP7144671B2 JP2018046159A JP2018046159A JP7144671B2 JP 7144671 B2 JP7144671 B2 JP 7144671B2 JP 2018046159 A JP2018046159 A JP 2018046159A JP 2018046159 A JP2018046159 A JP 2018046159A JP 7144671 B2 JP7144671 B2 JP 7144671B2
Authority
JP
Japan
Prior art keywords
node
computer node
tlb
write
remote
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018046159A
Other languages
English (en)
Other versions
JP2019159858A (ja
Inventor
新哉 平本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018046159A priority Critical patent/JP7144671B2/ja
Priority to US16/268,543 priority patent/US20190286575A1/en
Publication of JP2019159858A publication Critical patent/JP2019159858A/ja
Application granted granted Critical
Publication of JP7144671B2 publication Critical patent/JP7144671B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は,ネットワークインタフェース装置、それを有するノードを複数有する情報処理装置及び情報処理装置のノード間送信データ送信方法に関する。
ネットワークインタフェース装置は、コンピュータなどの情報処理装置内に設けられ、ネットワークを介して他のコンピュータとの間でのデータ転送などを制御する。ネットワークインタフェース装置は、例えば、インタフェース制御回路やダイレクトメモリアクセス制御回路等を集積した集積回路チップにより実現される。
複数のコンピュータのノード(以下コンピュータノード又は単にノードと称する)をネットワーク網で接続したハイパフォーマンスコンピュータ(HPC)は、複数のコンピュータノードが複雑な演算処理等を並列に実行する。複数のコンピュータノードによる並列処理では、第1のコンピュータノードが、他の第2のコンピュータノードに演算済みデータをストアしたり、第2のコンピュータノードの演算済みのデータを第1のコンピュータにロードしたりする。前者は、第1のコンピュータノードが、演算済みのライトデータをメッセージとして格納するライト・パケットを第2のコンピュータノードへ転送することで実行される。後者は、第1のコンピュータノードが、リード・パケットを第2のコンピュータノードに転送し、第2のコンピュータノードが読み出した演算済みのリードデータをメッセージとして格納する応答パケットを第1のコンピュータに転送することで実行される。
一方、複数のコンピュータノードの実アドレス空間はそれぞれ個別に設定され、各コンピュータノードでは、アプリケーションの仮想アドレス空間でデータの読み出し及び書込みが行われる。したがって、上記のライト・パケットによる処理では、第2のコンピュータノードで受信したライトデータをメインメモリに書き込む場合、第2のコンピュータノードは受信したライト・パケットの仮想アドレスを実アドレスに変換し、ライト・パケット内のライトデータをメインメモリに書き込む。また、上記のリード・パケットによる処理では、第1のコンピュータノードで受信したリードデータをメインメモリに書き込む場合、第1のコンピュータノードは、受信したリード・パケットの仮想アドレスを実アドレスに変換し、リード・パケット内のリードデータをメインメモリに書き込む。
そして、仮想アドレスを実アドレスに変換するために、各ノードのネットワークインタフェースは、メインメモリからアドレス変換テーブル内のアドレス変換に対応するアドレス変換エントリをフェッチしてアドレス変換バッファ(TLB:Translation Look-aside Buffer)に格納する必要がある。
以下の特許文献1の開示によれば、第1のコンピュータノードのプロセッサがリモート・ライト命令を発行すると、送信装置がTLB先読みパケットを第2のコンピュータノードに送信し、さらに、メインメモリから読み出したライトデータを格納するライト・パケットを第2のコンピュータノードに送信することが開示される。これによれば、第2のコンピュータノードはTLB先読みパケットに応答してTLBを先読みしておき、その後受信するライト・パケットの仮想アドレスをTLBを参照して実アドレスに変換する。
特開2003-50743号公報 特開2004-252838号公報
しかしながら、上記の特許文献1では、リモート・ライト命令の発行に応答して、第1のコンピュータノード内の送信装置が、まずTLB先読みパケットを第2のコンピュータノードに送信し、その後ライト・パケットを送信する。そのため、第1のコンピュータノードの送信装置は、リモート・ライト命令に対して2つのパケットを第2のコンピュータノードに送信することになり、ノード間ネットワーク網のトラフィック量の増大を招く。
そこで,本実施の形態の第1の側面の目的は,ノード間ネットワーク網のトラフィック量を増大させずに、TLB先読みの実行を可能にするネットワークインタフェース装置、それを有するノードを複数有する情報処理装置及び情報処理装置のノード間送信データ送信方法を提供することにある。
本実施の形態の第1の側面は,プロセッサを介さずにメインメモリにアクセスするダイレクトメモリアクセス制御部(以下DMAと称する)と、
前記メインメモリ内の仮想アドレスと実アドレスの対応を有するアドレス変換テーブル内の一部のアドレス変換エントリを格納するアドレス変換バッファ(以下TLBと称する)と、
前記プロセッサから送信されたコマンドに対する処理と受信した送信データに対する処理を制御する制御部とを有し、
前記制御部は、
前記プロセッサから、ライト及びリードのいずれかの要求に対応可能かを問い合わせる第1のメッセージとリモートノードプリキャッシュTLBを有する第1のコマンドを受信したとき、前記第1のメッセージと前記リモートノードプリキャッシュTLBとを含むリモートのコンピュータノード宛ての第1の送信データを送信し、
前記第1のメッセージに対する対応可能メッセージを含む第1の応答データの受信に応答して、前記プロセッサから、前記ライト及びリードのいずれかを要求する第2のコマンドを受信したとき、
前記第2のコマンドがライトを要求するとき、ライトデータのメッセージと前記第2のコマンド内のリモートノード仮想アドレスとを含む前記リモートのコンピュータノード宛てのライト・送信データを送信し、
前記リモートのコンピュータノードは、
前記第1の送信データに応答して、前記リモートノードプリキャッシュTLBに対応する第1のアドレス変換エントリを前記メインメモリから読み出し前記TLBにプリキャッシュし、
前記ライト・送信データに応答して、前記第1のアドレス変換エントリに基づいて、前記ライト・送信データ内のリモートノード仮想アドレスをリモートノード実アドレスに変換し、前記リモートノード実アドレスに基づいて前記メインメモリに前記ライトデータを書き込む、
ネットワークインタフェース装置である。
第1の側面によれば,ノード間ネットワーク網のトラフィック量を増大させずに、TLB先読みの実行を可能にする。
本実施の形態におけるHPCの概略構成を示す図である。 本実施の形態におけるコンピュータノードの構成例を示す図である。 本実施の形態におけるプロセッサが発行するコマンドとそれに対するメッセージのフォーマット例を示す図である。 ライト・パケットの場合のコマンドとパケットのフォーマット例を示す図である。 ネットワークインタフェースNW_IFの詳細な構成と主な信号の流れを示す図である。 ライト・パケットの場合のローカルノードとリモートノードそれぞれのプロセッサ及びネットワークインタフェースの動作を示すシーケンス図である。 ライト・パケットの場合のローカルノードとリモートノードそれぞれのプロセッサ及びネットワークインタフェースの動作を示すシーケンス図である。 リード・パケットの場合のコマンドとパケットのフォーマット例を示す図である。 リード・パケットの場合のローカルノードとリモートノードそれぞれのプロセッサ及びネットワークインタフェースの動作を示すシーケンス図である。 リード・パケットの場合のローカルノードとリモートノードそれぞれのプロセッサ及びネットワークインタフェースの動作を示すシーケンス図である。 第2の実施の形態におけるDMA制御回路の処理のフローチャートを示す図である。 第3の実施の形態におけるノードの構成を示す図である。 アドレス変換テーブルATTとTLBの一例を示す図である。
図1は、本実施の形態におけるHPCの概略構成を示す図である。HPCは、複数のコンピュータノードNODEと、それらコンピュータノード間の通信網であるネットワークNWとを有する。例えば、ネットワークNWに設けられたルータ(図示せず)を介して、各コンピュータノードがネットワークに接続される。このようなHPCにおいて、複数のコンピュータノードが演算処理を並列して実行し、第1のコンピュータノード(ローカルノード)が演算結果を第2のコンピュータノード(リモートノード)にネットワークを経由して送信し(演算結果のライト)、逆に、第1のコンピュータノードが第2のコンピュータノードの演算結果をネットワーク経由で取得する(演算結果のリード)。
また、あるコンピュータノード内の実アドレス空間と他のコンピュータノード内の実アドレス空間とはそれぞれ異なる。そして、あるプロセスのメモリアクセスの仮想アドレスは、それぞれのコンピュータノードで実アドレスに変換され、変換された実アドレスに基づきノード内のメインメモリなどにアクセスされる。
図2は、本実施の形態におけるコンピュータノードの構成例を示す図である。図2には、第1のコンピュータノードNODE_1と、第2のコンピュータノードNODE_2と、ネットワークNWとが示される。
第1のコンピュータノードNODE_1は、CPU(Central Processing Unit)などのプロセッサPRC_1と、DRAMなどのメインメモリM_MEMと、内部バスBUSと、ネットワークインタフェースNW_IF_1とを有する。ネットワークインタフェースは、ネットワークに接続され、他のコンピュータノードとのパケットの送受信を行う。第2のコンピュータノードNODE_2も同様の構成を有する。
また、両ノードのネットワークインタフェースNW_IF_1, NW_IN_2は、ネットワークインタフェース制御回路NW_IF_CNTと、パケット送信部PCK_TXと、パケット受信部PCK_RXと、メインメモリM_MEMに対してダイレクトメモリアクセスを行うDMA制御回路DMA_CNTと、アドレス変換テーブルの一部のエントリを格納するアドレス変換バッファTLB(Translation Look-aside Buffer)を有する。アドレス変換バッファTLBは、メインメモリ内のアドレス変換テーブルATTの一部のエントリを記憶する一種のキャッシュである。ネットワークインタフェースは、例えば、ネットワーク制御回路、パケット送信部、パケット受信部、DMA制御回路、TLBを有する集積回路装置(コンピュータチップ)である。
ノード間のパケットの送受信の動作の概略は次のとおりである。各ノードのプロセッサPRC_#(#=1,2)は、パケットの送信を指示するコマンドをネットワークインタフェースNW_IF_#に発行する。このコマンドに応答して、ネットワークインタフェースは、次のような処理を行う。以下のメッセージは、例えば通信文や通信コード、またはデータなどである。
(1)コマンドに含められたメッセージを格納するパケットを生成し、コマンドに含められた送信先ノードに送信する。
(2)コマンドに含められたメインメモリのアドレスに基づいてメインメモリ内のメッセージを取得し、そのメッセージを格納するパケットを生成し、コマンドの送信先ノードに送信する。
上記(1)の場合、ネットワークインタフェースはコマンド内のメッセージをパケットに格納して送信するので、メッセージ送信処理のレイテンシは短い。
上記(2)の場合、ネットワークインタフェースは、コマンド内のアドレスに基づいてメインメモリからメッセージをDMAで読み出す必要があり、DMA制御回路によるメッセージのDMA転送が必要となる。さらに、コマンド内のアドレスが仮想アドレスの場合、実アドレスへの変換のためのTLBのエントリもメインメモリからDMAで読み出しTLBに登録する(キャッシュする)ことが必要になる場合がある。よって、上記(2)の場合、メッセージ送信処理のレイテンシは長くなる傾向にある。
一方、パケットを受信したノードのネットワークインタフェースは、次のような処理を行う。
(3)受信したパケットに格納されたメッセージを予め確保したメインメモリ内の受信バッファに格納する。これによりプロセッサは、受信したメッセージを受信バッファから読み出し、必要な処理を実行する。
(4)受信したパケットに格納されたメッセージを、同パケットに格納されたメインメモリのアドレスに格納する。そして、プロセッサは、受信したメッセージに対して対応する処理を実行する。
上記(3)の場合、受信バッファがメインメモリ内に予め確保されるので、受信バッファの容量は限定的になる。そのため、メッセージの容量も少ないものに限定される。但し、メッセージ受信処理のレイテンシは短い。
上記(4)の場合、受信したパケット内のメッセージを受信パケット内のアドレスに基づいてメインメモリにDMAして書き込む。さらに、アドレスが仮想アドレスの場合、実アドレスへの変換のためのTLBをメインメモリからDMAで読み出しTLBに登録する(キャッシュする)ことが必要になる場合がある。よって、上記(4)の場合、メッセージ受信処理のレイテンシは長くなる傾向にある。
以上のように、ネットワークインタフェースでは、ネットワークインタフェース制御回路NW_IF_CNTが、メインメモリ内のメッセージやTLBをDMAで読み出すDMA要求DMA_RQを、DMA制御回路DMA_CNTに依頼する。DMA制御回路は、メインメモリから読み出したメッセージMSGをネットワークインタフェース制御回路に転送し、また、メインメモリから読み出したTLBのエントリをTLBに転送する。
さらに、ネットワークインタフェース制御回路は、仮想アドレスを実アドレスに変換するためにTLBにTLB要求TLB_RQを発行し、キャッシュヒットの場合、TLBから仮想アドレスに対応する実アドレスを取得する。キャッシュミスの場合、ネットワークインタフェース制御回路は、TLBのDMA要求DMA_RQをDMA制御回路に発行し、変換対象の仮想アドレスのTLBエントリをTLBに登録させる。
なお、パケットは単なる情報の形式に過ぎず、送受信する対象はパケットに限らず、フレームや単なるデータ等でも良い。以下、パケットは、送信データとも称する場合がある。
図13は、アドレス変換テーブルATTとTLBの一例を示す図である。メインメモリ内のアドレス変換テーブルATTは、仮想アドレスと実アドレスの全ての対応表である。但し、仮想アドレスをインデックスとし全ての実アドレス0~M-1が登録される。一方、TLBには、ATT内の一部のエントリが登録され、各TLBエントリは、実アドレスとそれに対応する仮想アドレスを有する。
TLBにTLBエントリを登録する処理は、メインメモリ内のアドレス変換テーブルATTから仮想アドレスKをインデックスとして実アドレスKを読み出し、その仮想アドレスKと実アドレスKをTLBエントリとしてTLBに登録する。TLBに空きエントリがない場合は、古いTLBエントリを追出し、新しいTLBエントリを登録する。
TLBにより仮想アドレスKから実アドレスKに変換する場合、TLBエントリを順番に読み出し、比較器11とANDゲート12により、変換対象の仮想アドレスKと一致する仮想アドレスに対応する実アドレスKを抽出する。TLB内に変換対象の仮想アドレスと一致する仮想アドレスがあればキャッシュヒット、一致する仮想アドレスがなければキャッシュミスとなり、ATTからTLBエントリを読み出して登録する必要がある。
前述のパケットの送信処理(1)(2)と受信処理(3)(4)では、メッセージをメインメモリからDMAで読み出したり、メインメモリにDMAで書き込んだりするDMA処理と、仮想アドレスから実アドレスに変換するためのアドレス変換テーブルATT内のアドレス変換エントリをメインメモリからDMAで読み出すDMA処理とが伴う。このようなメインメモリに対するDMA処理は、一般にレイテンシが長く、送信処理と受信処理のレイテンシを長くする原因となる。
[第1の実施の形態]
[コマンドとメッセージのフォーマット]
図3は、本実施の形態におけるプロセッサが発行するコマンドとそれに対するメッセージのフォーマット例を示す図である。
[第1のコマンドと第1のパケット]
本実施の形態によれば、プロセッサが発行する第1のコマンドCMD_1に、ライト及びリードのいずれかの要求に対応可能かを問い合わせるメッセージのフィールドF3と、ローカルノードプリキャッシュTLBのフィールドF4と、リモートノードプリキャッシュTLBのフィールドF5とを設ける。この問い合わせのメッセージは、短いビット長のメッセージである。さらに、第1のコマンドには、コマンドの種類のフィールドF1と、メッセージ送信先のリモートノードアドレスRM_ADDのフィールドF2も含まれる。
第1のコマンドのメッセージのフィールドF3には、受信バッファに格納可能な短いデータ長のメッセージ、例えば送信文または送信コードなどが格納される。
ローカルノードプリキャッシュTLBのフィールドF4は、送信元ノードであるローカルノードにアドレス変換エントリ(以下TLBエントリ)のプリキャッシュ(以下TLBプリキャッシュ)を要求するフィールドである。ローカルノードプリキャッシュTLBのフィールドF4には、TLBプリキャッシュに必要なアドレス変換テーブルATTのTLBエントリのインデックス等の情報が格納される。このインデックスに基づいて、ローカルノードのネットワークインタフェース制御回路は、ローカルノード内のメインメモリ内のATT内の当該インデックスに対応するTLBエントリをDMAで読み出しTLBに登録する。
リモートノードプリキャッシュTLBのフィールドF5は、送信先ノードであるリモートノードにTLBプリキャッシュを要求するフィールドであり、上記と同様にTLBエントリのインデックス等の情報が格納される。このインデックスに基づいて、リモートノードのネットワークインタフェース制御回路は、メインメモリ内のATT内のインデックスに対応するTLBエントリをDMAで読み出す。
一方、ネットワークインタフェース制御回路が第1のコマンドCMD_1に応答して送信する第1のパケットPCK_1は、パケット種類のフィールドF11と、パケット送信元のローカルノードアドレスLO_ADDのフィールドF12と、メッセージのフィールドF13と、リモートプリキャッシュTLBのフィールドF14とを有する。
リモートノードプリキャッシュTLBのフィールドF14は、第1のコマンド内のリモートノードプリキャッシュTLBが格納される。このインデックスに基づいて、リモートノードのネットワークインタフェース制御回路は、リモートノード内のメインメモリ内のATT内のインデックスに対応するTLBエントリをDMAで読み出しTLBに登録する。
[第2のコマンドと第2のパケット]
第1のコマンドCMD_1の問い合わせに対して、パケットの送信先のリモートノードから「要求に対応可能」のメッセージを格納する応答パケットを受信すると、ローカルノードでは、プロセッサがリード及びライトのいずれかの要求をする第2のコマンドCMD_2を発行する。
第2のコマンドCMD_2のフォーマットは、コマンド種類とリモートノードアドレスRM_ADDのフィールドF21,F22に加えて、ローカルノード仮想アドレスのフィールドF23及びリモートノード仮想アドレスのフィールドF24を有する。
[ライトの場合]
第2のコマンドCMD_2がライト・コマンドの場合、ローカルノード仮想アドレスのフィールドF23には、パケットで転送するメッセージの内容が記憶されているローカルノードの仮想アドレスが格納される。
ローカルノードのネットワークインタフェース制御回路は、第1のコマンドCMD_1のローカルノードプリフェッチTLBでプリキャッシュされたTLBエントリに基づいて仮想アドレスを実アドレスに変換し、その実アドレスに基づいてローカルノード内のメインメモリからメッセージの内容を読み出す。このメッセージは、受信バッファに格納できない程の大容量の(ビット長が長い)データなどである。
そして、ネットワークインタフェース制御回路は、読み出したメッセージを格納した第2のパケットPCK_2を生成し、リモートノードに送信する。
第2のパケットPCK_2のフォーマットは、パケット種類のフィールドF31とローカルノードアドレスLO_ADD及びリモートノードアドレスRM_ADDのフィールドF32に加え、読み出したメッセージのフィールドF33と、リモートノード仮想アドレスのフィールドF34を有する。
第2のパケットPCK_2を受信したリモートノードのネットワークインタフェース制御回路は、第1のパケットPCK_1受信時にプリキャッシュしたTLB内のTLBエントリに基づいて、第2のパケットPCK_2内のリモートノード仮想アドレスを実アドレスに変換し、メインメモリの実アドレスに第2のパケット内のメッセージ(データ)を書き込む。
[リードの場合]
一方、第2のコマンドCMD_2がリード・コマンドの場合、ローカルノード仮想アドレスのフィールドF23には、第2のパケットPCK_2に対するリモートノードからの応答パケット内のメッセージ(データ)を記憶するローカルノードでの仮想アドレスが格納される。
そして、ローカルノードのネットワークインタフェース制御回路は、メッセージを格納せずリモートノードでのリード先の仮想アドレスを格納した第2のパケットPCK_2を生成し、リモートノードに送信する。
第2のパケットPCK_2を受信したリモートノードのネットワークインタフェース制御回路は、第1のパケットPCK_1受信時にプリキャッシュしたTLB内のTLBエントリに基づいて、第2のパケットPCK_2内のリモートノード仮想アドレスを実アドレスに変換し、メインメモリの実アドレスに基づきメッセージ(データ)を読み出す。そして、リモートノードのネットワークインタフェース制御回路は、読み出したメッセージ(データ)を格納した応答パケットを、ローカルノードに送信する。
応答パケットを受信したローカルノードのネットワークインタフェース制御回路は、第1のコマンドのローカルノードプリキャッシュTLBでプリキャッシュしたTLBエントリに基づいて、第2のコマンドのローカルノード仮想アドレスを実アドレスに変換し、応答パケット内のメッセージ(データ)をメインメモリに書き込む。
なお、上記のパケットは、図示しないが、それぞれパケットIDをヘッダ内に格納し、応答パケットは応答対象パケットのパケットIDも格納する。
以下、ライト・パケットの場合とリード・パケットの場合の動作を詳述する。
[ライト・パケットの場合の動作]
図4は、ライト・パケットの場合のコマンドとパケットのフォーマット例を示す図である。図4の第1のコマンドCMD_1、第2のコマンドCMD_2は、図3の第1のコマンドCMD_1、第2のコマンドCMD_2と同じフォーマットである。
但し、図4の第1のコマンドCMD_1のコマンド種類のフィールドF1には「ライト、ショートメッセージ」が格納され、メッセージのフィールドF3には通信文または通信コードである「受信可能問い合わせ」が格納され、第1のコマンドCMD_1はライト・パケットの問い合わせパケットの送信を指示する。また、図4の第2のコマンドCMD_2のコマンド種類のフィールドF21には「ライト、ロングメッセージ」が格納され、第2のコマンドDMC_2はライト・パケットの送信を指示する。
一方、図4の第1のパケットPCK_1と第2のパケットPCK_2のフォーマットは、図3の第1のパケットPCK_1と第2のパケットPCK_2と同じフォーマットである。
但し、図4の第1のパケットPCK_1のパケット種類のフィールドF11には「ライト、ショートメッセージ、プリキャッシュTLB指定付」が格納され、メッセージのフィールドF13には「受信可能問い合わせ」が格納される。また、第2のパケットPCK_2のパケット種類のフィールドF31には「ライト、ロングメッセージ」が格納され、メッセージのフィールドF34には「データ」が格納される。
図5は、ネットワークインタフェースNW_IFの詳細な構成と主な信号の流れを示す図である。図5では、ネットワークインタフェース制御回路NW_IF_CNTが、プロセッサから送信されるコマンドCMDを受信し必要な処理を行うコマンド受信制御回路10と、パケット受信部PCK_RXが受信したパケットに対する処理を行うパケット受信制御回路20とを有する。
図6、図7は、ライト・パケットの場合のローカルノードとリモートノードそれぞれのプロセッサ及びネットワークインタフェースの動作を示すシーケンス図である。図6では、垂直方向が時間軸に対応する。図4,5、6、7を参照しながら、ローカルノードがリモートノードに対してメッセージのライトを実行する動作について説明する。
[ローカルノードNODE_1での処理]
S1:図6に示すように、まず、ローカルノードNODE_1内のプロセッサPRC_1が、図4の第1のコマンドCMD_1をネットワークインタフェースNW_IF_1に送信する(S1)。この第1のコマンドは、図4に示したとおり、コマンド種類フィールドF1に「ライト、ショートメッセージ」が、メッセージフィールドF3にメッセージとして「受信可能問い合わせ」が格納され、さらに、ローカルノードプリフェッチTLBとリモートノードプリフェッチTLBとが格納される。ここで、メッセージの「受信可能問い合わせ」とは、パケットの送信先のリモートノードが、ライトデータを受信してメインメモリに書き込む準備が整っているか否かを問い合わせることを意味する。
S2:ローカルノードのネットワークインタフェースNW_IF_1内のコマンド受信制御回路10は、(1)第1のコマンドCMD_1に応答して、第1のコマンド内のメッセージの「受
信可能問い合わせ」をメッセージのフィールドF13に格納した問合せ・ライト・パケットPCK_1を生成し、パケット送信部PCK_TXを介してリモートノードに送信する(S2)。問合せ・ライト・パケットPCK_1は、図4に示したとおり、パケット種類、ローカルノードアド
レスLO_ADDとリモートノードアドレスRM_ADDに加えて、メッセージの「受信可能問い合わせ」と、リモートノードプリフェッチTLBとを格納する。
また、ローカルノードのネットワークインタフェースNW_IF_1内のコマンド受信制御回路10は、(2)第1のコマンドCMD_1内のローカルノードプリフェッチTLBの情報(アドレス変換テーブルATTのインデックス)に基づいて、メインメモリM_MEM内のアドレス変換テーブルATTの前記インデックに対応するTLBエントリをDMAで読み出し、TLBに登録するTLBのプリキャッシュ要求TLB_DMA_RQを、DMA制御回路DMA_CNTに発行する(S2)。このTLBプリキャッシュ要求により、メインメモリ内のライトデータの仮想アドレスを実アドレスに変換するためのTLBエントリがTLBにプリキャッシュされる。
[リモートノードNODE_2での処理]
S3:第2のパケットである問合せ・ライト・パケットPCK_2の受信に応答して、リモートノードNODE_2内のネットワークインタフェースNW_IF_2のパケット受信制御回路20は、(3)パケットPCK_2内のメッセージ「受信可能問い合わせ」を、予めメインメモリ内に確保した受信バッファにDMAで書き込むメッセージDMAライト要求MSG_DMA_WT_RQを、DMA制御回路に発行する(S3)。これにより、プロセッサPRC_2は、パケットPCK_2のメッセージの内容を読み出すことができる。
さらに、リモートノードNODE_2内のネットワークインタフェースNW_IF_2のパケット受信制御回路20は、(4)パケットPCK_2内のリモートノードプリフェッチTLBの情報に基づいて、メインメモリM_MEM内のアドレス変換テーブルATTの前記インデックに対応するエントリをDMAで読み出し、TLBに登録するTLBのプリキャッシュ要求TLB_DMA_RQを、DMA制御回路DMA_CNTに発行する(S3)。このTLBプリキャッシュ要求により、メインメモリ内のライトデータの仮想アドレスを実アドレスに変換するためのTLBエントリがTLBにプリキャッシュされる。
S4:リモートノードのプロセッサPRC_2は、受信バッファのメッセージ「受信可能問い合わせ」に対し、ライト・パケットの受信に対する処理可能か否かを判定し、可能な場合、受信可能のメッセージを格納した応答パケットを送信することを命ずるコマンドをネットワークインタフェースNW_IF_2に送信する(S4)。このコマンドは、図示しないが、例えば、コマンド種類(ライトの問い合わせの応答)と、応答パケットの送信先ノードアドレス(ローカルノードNODE_1のアドレス)と、「受信可能」のメッセージとを有する。
S5:このコマンドに応答して、リモートノードのネットワークインタフェースNW_IF_2のコマンド受信制御回路10は、「受信可能」のメッセージを格納した応答パケットPCK_1_Rを生成し、パケット送信部PCK_TXからローカルノードに送信する(S5)。
[ローカルノードNODE_1での処理]
S6:ローカルノードのネットワークインタフェース内のパケット受信制御回路20は、リモートノードからの応答パケットPCK_1_Rの受信に応答して、応答パケット内のメッセージ「受信可能」を、メインメモリ内に予め確保した受信バッファにDMAアクセスで書き込む(S6)。
S7:図7に示すように、次に、応答パケット内のメッセージ「受信可能」に基づいて、ローカルノードのプロセッサPRC_1は、第2のコマンドCMD_2をネットワークインタフェースNW_IF_1に送信する(S7)。第2のコマンドCMD_2は、図4に示すとおり、コマンド種類「ライト、ロングメッセージ」と、リモートノードアドレスRM_ADDと、ローカルノード仮想アドレス及びリモートノード仮想アドレスを格納する。
S8:第2のコマンドに応答して、ネットワークインタフェース内のコマンド受信制御回路10は、(5)TLBにTLB要求TLB_RQを発行し、前述のS2の(2)でプリキャッシュしたTLBエントリに基づいて、第2のコマンド内のローカルノード仮想アドレスに対応する実アドレスを取得する。さらに、コマンド受信制御回路10は、DMA制御回路DMA_CNTにメインメモリ内の取得した実アドレスのメッセージをDMAアクセスして読み出す要求MSG_DMA_RQを発行し、メッセージ(ライトデータ)を取得する(S8)。第2のコマンドはロングメッセージの送信を命令するが、前述のS2の(2)で予めTLBエントリをTLBにプリキャッシュ済みであるので、コマンド受信制御回路10は、ローカルノード仮想アドレスの実アドレスへの変換を短時間で完了し、メインメモリ内のメッセージを読み出すことができる。
さらに、コマンド受信制御回路10は、(6)DMAアクセスで取得したメッセージ(ライトデータ)を格納したライト・パケットPCK_2を生成し、パケット送信部PCK_TXを介して、リモートノードに送信する(S8)。第2のパケットであるライト・パケットPCK_2は、図4に示すとおり、メッセージ(ライトデータ)に加えて、第2のコマンド内のリモートノード仮想アドレスを格納する。
[リモートノードNODE_2での処理]
S9:リモートノードのネットワークインタフェースNW_IF_2内のパケット受信制御回路20は、前述のS3の(4)でプリキャッシュしたTLBエントリに基づいて、ライト・パケット内のリモートノード仮想アドレスに対する実アドレスを要求するTLB要求TLB_RQをTLBに発行する。これにより、パケット受信制御回路20は、プリキャッシュしたTLBエントリに基づいてリモートノード仮想アドレスに対する実アドレスを取得し、その実アドレスに基づいてメインメモリ内にライト・パケットのメッセージ(ライトデータ)をDMAアクセスで書き込む要求MSG_MDA_WT_RQをDMA制御回路DMA_CNTに発行する(S9)。これにより、メッセージ(ライトデータ)がメインメモリに書き込まれる。
ここでも、前述のS3の(4)でTLBエントリがプリキャッシュ済みであるので、パケット受信制御回路20は、リモートノード仮想アドレスから実アドレスへの変換を短時間で行うことができ、ライト処理のレイテンシを短くすることができる。
上記の一連の処理では、第1のパケットPCK_1にリモートノードプリキャッシュTLBを格納して、リモートノードに予めTLBエントリをプリキャッシュし、第2のパケットPCK_2に書込み先のリモートノード仮想アドレスを格納している。それにより、ローカルノードがライト処理に必要な第1のパケットと第2のパケットをリモートノードに送信し、第1のパケットによりTLBのプリキャッシュを行い、第2のパケットでのライトデータのDMA処理を高速化する。よって、ネットワーク内のトラフィック量を増やすことなく、リモートノードでのTLBのプリキャッシュを行うことができる。これに対して、前述の特許文献1では、第2コマンドに対して先読みパケットと、ライト・パケットの2つのパケットを送信している。
上記のライト・パケットの送信処理では、第1のコマンドに基づいてローカルノードでのTLBのプリキャッシュを行わなくても良い。例えば、第1のコマンドと第2のコマンドとの間にTLBプリキャッシュを命ずる第3のコマンドを発行しても良い。但し、第1のパケットに、リモートノードプリキャッシュTLBを格納して、リモートノードでのTLBプリキャッシュを事前に実行させることで、ライト・パケットの処理レイテンシを短くできる。
[リード・パケットの場合の動作]
図8は、リード・パケットの場合のコマンドとパケットのフォーマット例を示す図である。図8の第1のコマンドCMD_1、第2のコマンドCMD_2は、図3の第1のコマンドCMD_1、第2のコマンドCMD_2と同じフォーマットである。
但し、図8の第1のコマンドCMD_1のコマンド種類のフィールドF1には「リード、ショートメッセージ」が格納され、メッセージのフィールドF3には通信文または通信コードである「送信可能問い合わせ」が格納される。したがって、第1のコマンドCMD_1はリードの問い合わせパケットの送信を指示する。また、図8の第2のコマンドCMD_2のコマンド種類のフィールドF21には「リード」が格納され、第2のコマンドDMC_2はリード・パケットの送信を指示する。
一方、図8の第1のパケットPCK_1のフォーマットは、図3の第1のパケットPCK_1と同じフォーマットである。第2のパケットPCK_2のフォーマットは、図3の第2のパケットと異なり、リモートノード仮想アドレスのフィールドF33とメッセージ長(データ長)のフィールドF34を有する。
さらに、第2のパケットに対する応答パケットPCK_2_Rは、図3には示されていないが、「リード応答」が格納されるパケットの種類のフィールドF41と、ローカルノードアドレス及びリモートノードアドレスのフィールドF42と、メッセージフィールドF43を有する。応答パケットのメッセージは、リモートノードで読み出されたリードデータである。
但し、図8の第1のパケットPCK_1のパケット種類のフィールドF11には「リード、ショートメッセージ、プリキャッシュTLB指定付」が格納され、メッセージのフィールドF13には「送信可能問い合わせ」が格納される。また、第2のパケットPCK_2のパケット種類のフィールドF31には「リード」が格納される。
図9及び図10は、リード・パケットの場合のローカルノードとリモートノードそれぞれのプロセッサ及びネットワークインタフェースの動作を示すシーケンス図である。図9,10も、垂直方向が時間軸に対応する。図5、8,9,10を参照しながら、ローカルノードがリモートノードに対してメッセージのリードを実行する動作について説明する。また、ライト・パケットと対比して主に相違する点について説明する。
[ローカルノードNODE_1での処理]
S11:図9において、ローカルノードNODE_1のプロセッサPRC_1は、第1のコマンドCMD_1をネットワークインタフェースNW_IF_1に送信する(S11)。第1のコマンドCMD_1は、図8で説明したとおりであり、メッセージの内容が「送信可能問合せ」で、ライト・パケットの場合の「受信可能問合せ」とは異なる。「送信可能問合せ」とは、リード・パケット送信先のリモートノードがリードデータをローカルノードに送信可能か否かを問い合わせることを意味する。
S12:ネットワークインタフェースNW_IF_1は、第1のコマンドCMD_1に応答して、(1)第1のパケットとして、問合せ・リード・パケットPCK_1を生成し、リモートノードNODE_2に送信する(S12)。この第1のパケットPCK_1は、図8で説明したとおりであり、メッセージの内容が「送信可能問合せ」である。それ以外は、図4のライト・パケットPCK_1と同じである。
さらに、ネットワークインタフェースNW_IF_1は、第1のコマンドに応答して、(2)コマンド内のローカルノードプリキャッシュTLBのフィールド内のインデックスに基づいて、メインメモリにDMAして、リードデータをメインメモリに書込む時のTLBエントリをTLBにプリキャッシュする(S12)。
上記のとおり、ローカルノードNODE_1での処理は、図6のライト・パケットの場合とほとんど同じであり、メッセージ内容だけが異なる。
[リモートノードNODE_2での処理]
S13:第1のパケットPCK_1の受信に応答して、リモートノードのネットワークインタフェースNW_IF_2は、(3)パケット内のメッセージ「送信可能問合せ」を、メインメモリ内の受信バッファにDMAで書き込む(S13)。さらに、ネットワークインタフェースNW_IF_2は、(4)パケット内のリモートノードプリキャッシュTLBに基づいて、メインメモリからリードデータを読み出す時のTLBエントリをTLBにプリキャッシュする(S13)。この処理は、図6のライト・パケットの場合の処理S3とほとんど同じである。
S14:リモートノードのプロセッサPRC_2は、受信したメッセージ「送信可能問合せ」に対して、リードデータを読み出して送信可能か否かをチェックし、可能であれば、「送信可能」のメッセージの送信を要求するコマンド(図示せず)をネットワークインタフェースNW_IF_2に送信する(S14)。このコマンドは、図示しないが、例えば、コマンド種類(リードの問い合わせの応答)と、応答パケットの送信先ノードアドレス(ローカルノードNODE_1のアドレス)と、「送信可能」のメッセージとを有する。
S15:このコマンドに応答して、リモートノードのネットワークインタフェースNW_IF_2のコマンド受信制御回路10は、「送信可能」のメッセージを格納した応答パケットを生成し、パケット送信部PCK_TXからローカルノードに送信する(S15)。これらの処理も、図6のライト・パケットの場合の処理S4,S5とほとんど同じである。
[ローカルノードNODE_1での処理]
S16:この応答パケットに応答して、ネットワークインタフェースNW_IF_1は、パケット内のメッセージ「送信可能」をメインメモリ内の受信バッファにDMAで書き込む(S16)。
S17:図10に示すとおり、プロセッサPRC_1は、受信バッファ内のメッセージに基づいて、リード・パケットの送信を要求する第2のコマンドCMD_2をネットワークインタフェースNW_IF_1に送信する(S17)。
第2のコマンドCMD_2に応答して、ネットワークインタフェースNW_IF_1は、第2のパケットとして、リード・パケットPCK_2を生成し、リモートノードに送信する(S18)。第2のパケットPCK_2は、図8で説明したとおりであり、メッセージフィールドがなく、リモートノード仮想アドレスのフィールドF33と、メッセージ長のフィールドF34を有する。
[リモートノードでの処理]
S19:リモートノードのネットワークインタフェースNW_IF_2は、第2のパケットPCK_2の受信に応答して、(5)処理S14の(4)でプリキャッシュしたTLBエントリでパケット内のリモートノード仮想アドレスを実アドレスに変換し、実アドレスに基づいてメインメモリ内のリードデータをDMAで読み出す(S19)。この処理では、TLBエントリがプリキャッシュ済みであるので、短時間で完了する。
さらに、ネットワークインタフェースNW_IF_2は、(6)リード・パケットである第2のパケットに応答する応答パケットPCK_2_Rを生成し、ローカルノードNODE_1に送信する(S19)。この応答パケットPCK_2_Rは、図8で説明したとおり、リードデータをメッセージとして格納する。
[ローカルノードでの処理]
S20:第2のパケットに対する応答パケットPCK_2_Rの受信に応答して、ローカルノードのネットワークインタフェースNW_IF_1は、処理S12の(2)でプリキャッシュしたTLBエントリで、ローカルノード仮想アドレスを実アドレスに変換し、実アドレスに基づいてメッセージのリードデータをDMAでメインメモリ内に書き込む(S20)。この処理も、TLBエントリがプリキャッシュ済みであるので、リードデータの書き込み処理は短時間で完了する。
上記のリード・パケットの送信処理では、第1のコマンドに基づいてローカルノードでのTLBのプリキャッシュを行わなくても良い。例えば、第1のコマンドと第2のコマンドとの間にTLBプリキャッシュを命ずる第3のコマンドを発行しても良い。
但し、第1のパケットにリモートノードプリキャッシュTLBを格納して、リモートノードでのTLBプリキャッシュを事前に実行させることで、リード・パケットの処理レイテンシを短くできる。また、ネットワークを転送されるパケットは、第1、第2のパケットと、第2のパケットに対する応答パケットであり、リモートノードでのTLBプリキャッシュの為の先読みパケットを追加する必要はない。よって、ネットワークのトラフィック量の増大は発生しない。
これに対して、前述の特許文献1では、第2のコマンドに応答して、先読みパケットとリード・パケットとをリモートノードに送信している。
[第2の実施の形態]
第1の実施の形態では、ライト・パケットの場合、リモートノードは、図6の処理S3で(3)パケット内のメッセージをDMAでメインメモリの受信バッファに書き込み、(4)パケット内のリモートノードプリキャッシュTLBに基づいてTLBエントリをDMAでメインメモリから読み出す。同様に、リード・パケットの場合、リモートノードは、図9の処理S13で同様のDMAによるメインメモリへのメッセージの書込みとTLBエントリの読み出しを行う。
ただし、DMAで読み出してTLBにプリキャッシュされるTLBエントリは、後続の処理でアドレス変換するときに必要である。したがって、全体のライト処理やリード処理のレイテンシ短縮のためには、TLBのプリキャッシュのためのDMA処理の優先度を下げて、受信した第1のパケットのメッセージをDMAでメインメモリの受信バッファに書き込む処理の優先度を上げるのが好ましい。
そこで、第2の実施の形態では、ネットワークインタフェース内のDMA制御回路DMA_CNTを改良して、TLBエントリのDMA処理よりも、メッセージDMA処理が優先されるようにする。
図11は、第2の実施の形態におけるDMA制御回路の処理のフローチャートを示す図で
ある。図5に示したとおり、DMA制御回路DMA_CNTは、DMA要求を受信して、メインメモリ
にDMAでアクセスする。その場合、DMA処理に必要な回路資源、例えば、DMA要求を格納す
るDMA要求バッファや、DMAで読み出したデータを一時的に格納するDMA受信バッファなど
を確保したうえで、DMA処理を実行する。これらの資源の数は有限である。したがって、DMA制御回路は、受信したDMA要求に対して、DMA処理に必要な資源を確保できるか否かの判定を行う。確保できればDMAを実行し、確保できなければDMA要求を確保できるまで待機させる。
そこで、第2の実施の形態では、資源確保が可能か否かの判定処理で、TLBプリキャッシュのためのDMA処理と、メッセージ書き込みの為のDMA処理の優先度に差をつける。
具体的には、DMA制御回路は、DMA要求DMA_RQを受信すると(S31のYES)、DMA要求の種類を判定する(S32)。TLBプリキャッシュのDMA要求の場合は、DMA制御回路は、実行中のDMA数+αが資源量の最大値に達しているか否かを判定し(S33)、NOであればそのDMA要求を実行し(S35)、YESであればNOになるまでそのDMA要求の実行を待機させる(S33のNO)。つまり、DMA制御回路は、利用可能な資源量がα個より多く残っていればDMA要求を実行し、残っていなければ残るまでDMA要求を待機させる。
メッセージのDMA要求の場合は、DMA制御回路は、実行中のDMA数が資源量の最大値に達しているか否かを判定し(S34)、NOであればそのDMA要求を実行し(S35)、YESであればNOになるまでそのDMA要求の実行を待機させる(S34のNO)。ここで、前述のαは、優先度の高いメッセージのDMA処理に必要な資源数である。この場合のメッセージはショートメッセージであるので、DMA処理に必要な資源数は「1」でよい。したがって、α=1である。
上記のDMA制御回路の処理によれば、TLBプリキャッシュのDMA処理とメッセージのDMA処理とが前後して発生した場合、TLBプリキャッシュのDMA処理を実行しても、DMA制御回路内の資源は必ずα個以上残るので、メッセージのDMA処理を確実に実行できる。よって、メッセージのDMA処理はTLBプリキャッシュのDMA処理より優先度が高くなる。
[第3の実施の形態]
図12は、第3の実施の形態におけるノードの構成を示す図である。TLBは、メインメモリ内のアドレス変換テーブルATT内の一部の複数のTLBエントリを記憶する一種のキャッシュである。そのため、DMA処理を行う場合TLBからアドレス変換に必要なTLBエントリを検出するのに検索処理が必要であり、処理のレイテンシを長くする。
そこで、第3の実施の形態では、ネットワークインタフェース制御回路NW_IF_CNT内に、TLBよりも容量の小さいTLB格納部TLB_2を設ける。TLB格納部TLB_2は、TLBのエントリ数より少ないエントリだけ記憶する。したがって、TLB格納部の回路規模はそれほど大きくない。
図12に示すとおり、TLBプリキャッシュのためのDMA要求DMA_RQに応答して、DMA制御回路DMA_CNTは、メインメモリ内のアドレス変換テーブルATTからTLBエントリを読み出すと、それをTLBに格納すると共に、ネットワークインタフェース制御回路にも送信する。それに応答して、制御回路は読み出されたTLBエントリをTLB格納部TLB_2に記憶する。
その後、メッセージのメインメモリからの読み出しやメッセージのメインメモリへの書込み処理のためのDMA処理が発生すると、ネットワークインタフェース制御回路NW_IF_CNTは、TLBエントリの検索をTLBとTLB格納部TLB_2に対して実行する。TLB格納部TLB_2は、少ないTLBエントリのみ格納しているので、検索処理を短時間で完了する。ネットワークインタフェース制御回路は、TLB格納部でヒットすれば、そのTLBエントリで仮想アドレスを実アドレスに変換し、DMA制御回路にメッセージのDMA要求DMA_RQを発行する。
前述のライト・パケットまたはリード・パケットで説明したとおり、メッセージのDMAによるメインメモリへのライトまたはリードの処理が行われる前に、TLBプリキャッシュが実行される。したがって、メッセージのDMAによるライトまたはリード処理が発生したとき、TLBプリキャッシュで取得したTLBエントリがTLB格納部TLB_2内に格納されているため、TLB格納部でヒットすることが期待できる。そのため、DMA処理のレイテンシを短くできる。
以上のとおり、上記の実施の形態によれば、第1に、第1のパケットにリモートノードプリキャッシュTLBを格納しているので、リモートノードのネットワークインタフェースが、次の第2のパケットを受信するまでの間に、TLBプリキャッシュを実行する。したがって、パケットの数を増やさずに、TLBプリキャッシュを第2のパケットを受信する前に完了または少なくとも開始することができる。それにより、ノード間メッセージ転送のレイテンシを短くできる。
第2に、第1のコマンドにローカルノードプリキャッシュTLBを格納しているので、ローカルノードのネットワークインタフェースが、第2のコマンドとしてライト要求コマンドを受信するまでの間に、TLBプリキャッシュを実行する。または、第2のパケット(リード・パケット)の応答パケットを受信するまでの間に、TLBプリキャッシュを実行する。したがって、コマンドの数を増やさずに、第2のコマンドを受信する前にまたは第2のパケット(リード・パケット)の応答パケットを受信する前に、TLBプリキャッシュを完了または少なくとも開始することができる。それにより、ノード間メッセージ転送のレイテンシを短くできる。
NODE_#:コンピュータノード、ノード
PRC_#:プロセッサ、CPU
M-MEM:メインメモリ
NW_IF_#:ネットワークインタフェース
NW_IF_CNT:ネットワークインタフェース制御回路
DMA_CNT:DMA制御回路
TLB:Translation Look-aside Buffer、一種のキャッシュ
ATT: Address Translation Table
(メインメモリ内のATTからTLBエントリが読み出され、TLBにキャッシュ登録される。)
CMD_#:コマンド
PCK_#:パケット、送信データ

Claims (10)

  1. コンピュータノード内に設けられるネットワークインタフェース装置であって、
    前記ネットワークインタフェース装置は、
    前記コンピュータノード内のプロセッサを介さずに前記コンピュータノード内のメインメモリにアクセスするダイレクトメモリアクセス制御部(以下DMAと称する)と、
    前記メインメモリ内の仮想アドレスと実アドレスの対応を有するアドレス変換テーブル内の一部のアドレス変換エントリを格納するアドレス変換バッファ(以下TLBと称する)と、
    前記プロセッサから送信されたコマンドに対する処理と受信した送信データに対する処理を制御する制御部とを有し、
    前記制御部は、前記ネットワークインタフェース装置がローカルコンピュータノード内に設けられている場合、
    前記ローカルコンピュータノード内の第1のプロセッサから、ライト及びリードのいずれかの要求に対応可能かを問い合わせる第1のメッセージと、リモートコンピュータノードに前記リモートコンピュータノード内の第2のTLBに格納する第1のアドレス変換エントリを前記リモートコンピュータノード内の第2のメインメモリからプリキャッシュすることを要求するリモートノードTLBプリキャッシュ要求を有する第1のコマンドを受信したとき、
    前記第1のメッセージと前記リモートノードTLBプリキャッシュ要求とを含む前記リモートコンピュータノード宛ての第1の送信データを送信し、
    前記第1のメッセージに対する対応可能メッセージを含む第1の応答データの受信に応答して前記第1のプロセッサにより発行された前記ライト及びリードのいずれかを要求する第2のコマンドを受信したとき、
    前記第2のコマンドがライトを要求するとき、ライトデータのメッセージと前記第2のコマンド内のリモートノード仮想アドレスとを含む前記リモートコンピュータノード宛てのライト・送信データを送信し、
    前記制御部は、前記ネットワークインタフェース装置が前記リモートコンピュータノード内に設けられている場合、
    前記第1の送信データに応答して、前記第1の応答データを前記ローカルコンピュータノードに送信し、前記第1のアドレス変換エントリを前記第2のメインメモリから読み出し前記第2のTLBにプリキャッシュし、
    前記ライト・送信データに応答して、前記第1のアドレス変換エントリに基づいて、前記ライト・送信データ内のリモートノード仮想アドレスをリモートノード実アドレスに変換し、前記リモートノード実アドレスに基づいて前記第2のメインメモリに前記ライトデータを書き込む、
    ネットワークインタフェース装置。
  2. 前記制御部は、前記ネットワークインタフェース装置がローカルコンピュータノード内に設けられている場合、
    前記第1のコマンドを受信したとき、前記第1のコマンド内の前記ローカルコンピュータノード内の第1のTLBに格納する第2のアドレス変換エントリを前記ローカルコンピュータノード内の第1のメインメモリからプリキャッシュすることを要求するローカルノードTLBプリキャッシュ要求に対応する前記第2のアドレス変換エントリを、前記第1のメインメモリから読み出し前記第1のTLBにプリキャッシュするプリキャッシュ要求を前記ローカルコンピュータノード内の第1のDMAに依頼し、
    前記第2のコマンドがライトを要求するとき、前記第2のアドレス変換エントリに基づいて、前記第2のコマンド内のローカルノード仮想アドレスをローカルノード実アドレスに変換し、前記ローカルノード実アドレスに基づいて前記第1のメインメモリから前記ライトデータを読み出す要求を前記第1のDMAに依頼する、
    請求項1に記載のネットワークインタフェース装置。
  3. 前記制御部は、前記ネットワークインタフェース装置がローカルコンピュータノード内に設けられている場合、
    前記第2のコマンドがリードを要求するとき、前記第2のコマンド内のリモートノード仮想アドレスを含むリード・送信データを前記リモートコンピュータノードに送信し、
    前記制御部は、前記ネットワークインタフェース装置が前記リモートコンピュータノード内に設けられている場合、
    前記リード・送信データに応答して、(1)前記第1のアドレス変換エントリに基づいて、前記リード・送信データ内のリモートノード仮想アドレスをリモートノード実アドレスに変換し、前記リモートノード実アドレスに基づいて前記第2のメインメモリからリードデータを読み出し、(2)前記リードデータを含む第2の応答データを前記ローカルコンピュータノード宛てに送信する、
    請求項1に記載のネットワークインタフェース装置。
  4. 前記制御部は、前記ネットワークインタフェース装置がローカルコンピュータノード内に設けられている場合、
    前記第2のコマンドがリードを要求するとき、前記第2のコマンド内のリモートノード仮想アドレスを含むリード・送信データを前記リモートコンピュータノードに送信し、
    前記制御部は、前記ネットワークインタフェース装置が前記リモートコンピュータノード内に設けられている場合、
    前記リード・送信データに応答して、(1)前記第1のアドレス変換エントリに基づいて、前記リード・送信データ内のリモートノード仮想アドレスをリモートノード実アドレスに変換し、前記リモートノード実アドレスに基づいて前記第2のメインメモリからリードデータを読み出し、(2)前記リードデータを含む第2の応答データを前記ローカルコンピュータノード宛てに送信する、
    請求項2に記載のネットワークインタフェース装置。
  5. 前記制御部は、前記ネットワークインタフェース装置がローカルコンピュータノード内に設けられている場合、
    前記第2の応答データを受信したとき、前記第2のアドレス変換エントリに基づいて、前記第2のコマンド内の前記ローカルノード仮想アドレスをローカルノード実アドレスに変換し、前記ローカルノード実アドレスに基づいて前記第1のメインメモリに前記リードデータを書き込む要求を前記第1のDMAに依頼する、請求項4に記載のネットワークインタフェース装置。
  6. 前記制御部は、前記ネットワークインタフェース装置が前記リモートコンピュータノード内に設けられている場合、
    前記第1の送信データに応答して、前記第1の送信データ内のメッセージを前記第2のメインメモリに書き込む要求を、前記リモートコンピュータノード内の第2のDMAに依頼し、
    前記第2のDMAは、
    前記メッセージを前記第2のメインメモリへ書込む第1の要求を、前記アドレス変換エントリを前記第2のメインメモリから読み出して前記第2のTLBへプリキャッシュする第2の要求よりも高い優先度で実行する、請求項1に記載のネットワークインタフェース装置。
  7. 前記第2のDMAは、
    前記第1の要求に応答して、実行中のダイレクトメモリアクセス処理に必要な回路資源の数がネットワークインタフェース装置の有する資源数に達していない場合、前記メッセージを前記第2のメインメモリにダイレクトメモリアクセスで書き込み、
    前記第2の要求に応答して、実行中のダイレクトメモリアクセス処理に必要な回路資源の数が前記ネットワークインタフェース装置の有する資源数より所定数少ない数に達していない場合、前記第1のアドレス変換エントリを前記第2のメインメモリからダイレクトメモリアクセスで読み出す、
    請求項6に記載のネットワークインタフェース装置。
  8. 前記制御部は、前記TLB内のアドレス変換エントリの一部を格納するTLB格納部を有し、
    前記制御部は、前記ネットワークインタフェース装置が前記リモートコンピュータノード内に設けられている場合、前記第1のアドレス変換エントリを前記第2のメインメモリから読み出して前記第2のTLBへプリキャッシュするとき、読み出した前記第1のアドレス変換エントリを前記リモートコンピュータノード内の第2のTLB格納部に格納する、請求項1に記載のネットワークインタフェース装置。
  9. 第1のネットワークインタフェースを有するローカルコンピュータノードと、
    第2のネットワークインタフェースを有し、前記ローカルコンピュータノードとネットワークを介して通信可能なリモートコンピュータノードとを有し、
    前記ローカルコンピュータノードと前記リモートコンピュータノードの前記第1及び第2のネットワークインタフェースはそれぞれ、
    自己のコンピュータノード内のプロセッサを介さずに前記自己のコンピュータノード内のメインメモリにアクセスするダイレクトメモリアクセス制御部(以下DMAと称する)と、
    前記メインメモリ内の仮想アドレスと実アドレスの対応を有するアドレス変換テーブル内の一部のアドレス変換エントリを格納するアドレス変換バッファ(以下TLBと称する)と、
    前記プロセッサから送信されたコマンドに対する処理と受信した送信データに対する処理を制御する制御部とを有し、
    前記ローカルコンピュータノード内の前記制御部は、
    前記ローカルコンピュータノード内の第1のプロセッサから、ライト及びリードのいずれかの要求に対応可能かを問い合わせる第1のメッセージと、前記リモートコンピュータノードに前記リモートコンピュータノード内の第2のTLBに格納する第1のアドレス変換エントリを前記リモートコンピュータノード内の第2のメインメモリからプリキャッシュすることを要求するリモートノードTLBプリキャッシュ要求を有する第1のコマンドを受信したとき、前記第1のメッセージと前記リモートノードTLBプリキャッシュ要求とを含む前記リモートコンピュータノード宛ての第1の送信データを送信し、
    前記第1のメッセージに対する対応可能メッセージを含む第1の応答データの受信に応答して前記第1のプロセッサにより発行された前記ライト及びリードのいずれかを要求する第2のコマンドを受信したとき、
    前記第2のコマンドがライトを要求するとき、ライトデータのメッセージと前記第2のコマンド内のリモートノード仮想アドレスとを含む前記リモートコンピュータノード宛てのライト・送信データを送信し、
    前記リモートコンピュータノード内の前記制御部は、
    前記第1の送信データに応答して、前記第1の応答データを前記ローカルコンピュータノードに送信し、前記第1のアドレス変換エントリを前記第2のメインメモリから読み出し前記第2のTLBにプリキャッシュし、
    前記ライト・送信データに応答して、前記第1のアドレス変換エントリに基づいて、前記ライト・送信データ内のリモートノード仮想アドレスをリモートノード実アドレスに変換し、前記リモートノード実アドレスに基づいて前記第2のメインメモリに前記ライトデータを書き込む、
    情報処理装置。
  10. 第1のネットワークインタフェースを有するローカルコンピュータノードと、第2のネットワークインタフェースを有し前記ローカルコンピュータノードとネットワークを介して通信可能なリモートコンピュータノードとを有する情報処理装置のノード間送信データ送信方法であって、
    前記ローカルコンピュータノードと前記リモートコンピュータノードの前記第1及び第2のネットワークインタフェースはそれぞれ、
    自己のコンピュータノード内のプロセッサを介さずに前記自己のコンピュータノード内のメインメモリにアクセスするダイレクトメモリアクセス制御部(以下DMAと称する)と、
    前記メインメモリ内の仮想アドレスと実アドレスの対応を有するアドレス変換テーブル内の一部のアドレス変換エントリを格納するアドレス変換バッファ(以下TLBと称する)と、
    前記プロセッサから送信されたコマンドに対する処理と受信した送信データに対する処理を制御する制御部とを有し、
    前記ノード間送信データ送信方法は、
    前記ローカルコンピュータノード内の前記制御部が、
    前記ローカルコンピュータノード内の第1のプロセッサから、ライト及びリードのいずれかの要求に対応可能かを問い合わせる第1のメッセージと、前記リモートコンピュータノードに前記リモートコンピュータノード内の第2のTLBに格納する第1のアドレス変換エントリを前記リモートコンピュータノード内の第2のメインメモリからプリキャッシュすることを要求するリモートノードTLBプリキャッシュ要求を有する第1のコマンドを受信したとき、前記第1のメッセージと前記リモートノードTLBプリキャッシュ要求とを含む前記リモートコンピュータノード宛ての第1の送信データを送信し、
    前記第1のメッセージに対する対応可能メッセージを含む第1の応答データの受信に応答して前記第1のプロセッサにより発行された前記ライト及びリードのいずれかを要求する第2のコマンドを受信したとき、
    前記第2のコマンドがライトを要求するとき、ライトデータのメッセージと前記第2のコマンド内のリモートノード仮想アドレスとを含む前記リモートコンピュータノード宛てのライト・送信データを送信し、
    前記リモートコンピュータノード内の前記制御部が、
    前記第1の送信データに応答して、前記第1の応答データを前記ローカルコンピュータノードに送信し、前記第1のアドレス変換エントリを前記第2のメインメモリから読み出し前記第2のTLBにプリキャッシュし、
    前記ライト・送信データに応答して、前記第1のアドレス変換エントリに基づいて、前記ライト・送信データ内のリモートノード仮想アドレスをリモートノード実アドレスに変換し、前記リモートノード実アドレスに基づいて前記第2のメインメモリに前記ライトデータを書き込む、
    情報処理装置のノード間送信データ送信方法。
JP2018046159A 2018-03-14 2018-03-14 ネットワークインタフェース装置、それを有するノードを複数有する情報処理装置及び情報処理装置のノード間送信データ送信方法 Active JP7144671B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018046159A JP7144671B2 (ja) 2018-03-14 2018-03-14 ネットワークインタフェース装置、それを有するノードを複数有する情報処理装置及び情報処理装置のノード間送信データ送信方法
US16/268,543 US20190286575A1 (en) 2018-03-14 2019-02-06 Network interface device, information processing device having plural nodes including network interface device, and method for transmitting transmission data between nodes of information processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018046159A JP7144671B2 (ja) 2018-03-14 2018-03-14 ネットワークインタフェース装置、それを有するノードを複数有する情報処理装置及び情報処理装置のノード間送信データ送信方法

Publications (2)

Publication Number Publication Date
JP2019159858A JP2019159858A (ja) 2019-09-19
JP7144671B2 true JP7144671B2 (ja) 2022-09-30

Family

ID=67905619

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018046159A Active JP7144671B2 (ja) 2018-03-14 2018-03-14 ネットワークインタフェース装置、それを有するノードを複数有する情報処理装置及び情報処理装置のノード間送信データ送信方法

Country Status (2)

Country Link
US (1) US20190286575A1 (ja)
JP (1) JP7144671B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11226902B2 (en) * 2019-09-30 2022-01-18 International Business Machines Corporation Translation load instruction with access protection

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003050743A (ja) 2001-08-07 2003-02-21 Nec Corp 仮想アドレス間データ転送方式
US20090022156A1 (en) 2007-07-12 2009-01-22 Blocksome Michael A Pacing a Data Transfer Operation Between Compute Nodes on a Parallel Computer
JP2009037610A (ja) 2007-07-31 2009-02-19 Intel Corp 入出力(i/o)仮想化動作のプロセッサへのオフロード
JP2016045510A (ja) 2014-08-19 2016-04-04 富士通株式会社 情報処理システム、情報処理装置、情報処理システムの制御方法及び情報処理装置の制御プログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003050743A (ja) 2001-08-07 2003-02-21 Nec Corp 仮想アドレス間データ転送方式
US20090022156A1 (en) 2007-07-12 2009-01-22 Blocksome Michael A Pacing a Data Transfer Operation Between Compute Nodes on a Parallel Computer
JP2009037610A (ja) 2007-07-31 2009-02-19 Intel Corp 入出力(i/o)仮想化動作のプロセッサへのオフロード
JP2016045510A (ja) 2014-08-19 2016-04-04 富士通株式会社 情報処理システム、情報処理装置、情報処理システムの制御方法及び情報処理装置の制御プログラム

Also Published As

Publication number Publication date
JP2019159858A (ja) 2019-09-19
US20190286575A1 (en) 2019-09-19

Similar Documents

Publication Publication Date Title
US10009295B2 (en) Virtual memory protocol segmentation offloading
US6928529B2 (en) Data transfer between virtual addresses
US7234006B2 (en) Generalized addressing scheme for remote direct memory access enabled devices
US6094708A (en) Secondary cache write-through blocking mechanism
US8812795B2 (en) Shared memory architecture
US20120173840A1 (en) Sas expander connection routing techniques
JP2011198360A (ja) パケット処理最適化
JP2015146115A (ja) 演算処理装置、情報処理装置及び演算処理装置の制御方法
JP2016004461A (ja) 情報処理装置、入出力制御装置および情報処理装置の制御方法
US11327890B1 (en) Partitioning in a processor cache
JP7144671B2 (ja) ネットワークインタフェース装置、それを有するノードを複数有する情報処理装置及び情報処理装置のノード間送信データ送信方法
US9824017B2 (en) Cache control apparatus and method
US11036643B1 (en) Mid-level instruction cache
US11093405B1 (en) Shared mid-level data cache
JP2002084311A (ja) パケット転送処理装置
EP4191425A1 (en) Pcie communications
US8850159B2 (en) Method and system for latency optimized ATS usage
US7136933B2 (en) Inter-processor communication systems and methods allowing for advance translation of logical addresses
JP7196858B2 (ja) 入出力実行装置、デバイス仮想化システム、入出力実行方法、および、プログラム
JP2005526335A (ja) 複数のコヒーレンシー・グラニュールをサポートするデータ転送ユニット
CN115357525A (zh) 探听过滤器、处理单元、计算设备和相关方法
CN118860294A (zh) 一种数据读取方法、系统及电子设备
JP2004252838A (ja) データ転送方法およびこれによるネットワークシステム
CN117193931A (zh) 脏页发送方法、外部设备及计算设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201210

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220607

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220804

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220816

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220829

R150 Certificate of patent or registration of utility model

Ref document number: 7144671

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150