JP2009193430A - 通信制御装置、情報処理装置およびプログラム - Google Patents

通信制御装置、情報処理装置およびプログラム Download PDF

Info

Publication number
JP2009193430A
JP2009193430A JP2008034464A JP2008034464A JP2009193430A JP 2009193430 A JP2009193430 A JP 2009193430A JP 2008034464 A JP2008034464 A JP 2008034464A JP 2008034464 A JP2008034464 A JP 2008034464A JP 2009193430 A JP2009193430 A JP 2009193430A
Authority
JP
Japan
Prior art keywords
reception
message
hash value
key
buffer
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.)
Granted
Application number
JP2008034464A
Other languages
English (en)
Other versions
JP4621747B2 (ja
Inventor
Noboru Tanabe
昇 田邊
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2008034464A priority Critical patent/JP4621747B2/ja
Priority to US12/320,954 priority patent/US8423689B2/en
Publication of JP2009193430A publication Critical patent/JP2009193430A/ja
Application granted granted Critical
Publication of JP4621747B2 publication Critical patent/JP4621747B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9021Plurality of buffers per packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • H04L49/9073Early interruption upon arrival of a fraction of a packet

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】受信関数で指定された受信キーと一致する受信キーを有する受信メッセージを検索する時間を従来に比べて大幅に短縮させる。
【解決手段】取得した受信メッセージが有している受信キーからハッシュ値生成手段190により生成されたハッシュ値に応じて、複数の受信バッファ161〜164の中から一の受信バッファを選択して格納し、受信関数で指定される受信キーの一致判定により受信を行なう受信手段20からの送信要求に応じてハッシュ値に係る受信バッファ161〜164から受信関数に応じた受信メッセージの一つ以上の候補を出力する。これにより、受信関数で指定された受信キーと一致する受信キーを有する受信メッセージより先に一致しない受信キーを有する受信メッセージが大量に届いた場合であっても、受信関数で指定された受信キーと一致する受信キーを有する受信メッセージを検索する時間を従来に比べて大幅に短縮させることができる。
【選択図】 図2

Description

本発明は、通信制御装置、情報処理装置およびプログラムに関する。
従来から、PCクラスタや並列計算機において、メッセージ交換方式の通信が用いられている。特に、並列アプリケーションにおいては、分散メモリ型並列処理におけるメッセージ交換のためのライブラリであるMPI(Message Passing Interface)を代表とするメッセージ交換ライブラリを用いた通信が多用されている。
従来からPCクラスタ用のネットワークインタフェースとしては、Mellanox Technologies社のInfiniband HCAやMyricom社のMyrinetやQuadrics社のQsNET IIなどが、多くの利用形態でMPIと組み合わせて用いられている(例えば「非特許文献1」参照)。
国内においては、試作レベルの例として、RHiNET−2上にMPIを実装した例が報告されている(例えば「非特許文献2」参照)。また、メモリスロットに装着されるDIMMnet−2上にMPIを実装したものが報告されている(例えば「非特許文献3」参照)。
これらはネットワーク側から受信するデータを、いったんネットワークインタフェース基板上のメモリや、ホストコンピュータ上の主記憶上に設けられたスワップアウト対象外に予約された領域に形成されるバッファに蓄えられるような構造になっている。
ところで、並列システムにおいては、必ずしも受信側がメッセージ到着前に対応する受信関数を起動するという保証はない。また、並列システムにおいては、複数の相手からネットワーク越しに到着するメッセージが、必ずしも受信側が望んだ到着順序で受信側に届く保証はない。このため、上述のMPIなどのメッセージ交換ライブラリでは、受信関数を実行した場合には、まず、Unexpected message queueと呼ばれるバッファの中から必要なメッセージを探しに行く。そして、受信キーに一致するメッセージを見つけるまで、一致しなかったメッセージを別のバッファに退避する。
上述したDIMMnet−2は、IPUSH機構というハード的に制御されるポインタによりFIFO動作を行う。また、DIMMnet−2は、送信元グループで分類された受信バッファに書き込む。このような動作により、DIMMnet−2は、受信側でのファームウェアの介在を防止している。また、DIMMnet−2においては、バッファ検索成功確率向上によりMPIの通信遅延の短縮を図ることが報告されている(例えば、「非特許文献4」参照)。
一方、MPIのUnexpected message queue内のメッセージ検索の高速化をハードで支援する従来例が存在する。具体的には、ランダムロジックで比較器とレジスタからなるALPUという論理ブロックを構成し、これを大量に並べてシフトレジスタ状に接続し、列の途中からキーにマッチするエントリを引き抜くことができるUnexpected message queueを構成することでメッセージ検索の高速化を行っている(例えば、「非特許文献5」参照)。
さらに、LHS機構というメッセージの前半と後半を分別して異なる特性を持つメモリに格納して、メッセージの前半にありがちなMPIのマッチングに必要な情報を低遅延でホストに取り込めるようにすることで、MPIの通信遅延の短縮を図ることが報告されている(例えば、「非特許文献6」参照)。
"Performance comparisons of MPI implementations over InfiniBand, Myrinet and Quadrics", IEEE Proceedings of SC‘03, (2003年11月) "分散並列処理用ネットワークRHiNET−2の性能評価", 先進的計算基盤システムシンポジウムSACSIS2003, ISSN1344−0640 (2003年5月) "DIMMnet−2における通信ライブラリMPI−2の実現",情報処理学会計算機アーキテクチャ研究会研究報告ISSN0919−6072 (2006年2月) "メッセージパッシングモデルを支援するパケット受信機構の実装",情報処理学会計算機アーキテクチャ研究会研究報告ISSN0919−6072 (2005年11月) K. D. Underwood, K. S. Hemmert, A. Rodrigues, R. Murphy and R. Brightwell : "A Hardware Acceleration Unit for MPI Queue Processing", 19th International Parallel and Distributed Processing Symposium (IPDPS‘05) (2005年4月) "DIMMnet−3ネットワークインタフェースにおけるMPI支援機能",情報処理学会計算機アーキテクチャ研究会研究報告ISSN0919−6072 (2007年3月)
しかしながら、上述のバッファ検索操作は、例えば非特許文献5のようにハードウェアでサポートをしない限り、ソフトウェアによる大容量のメモリ間のコピーを伴う。したがって、受信側が望んだ順番に所望のメッセージが届かない限りメッセージ受信にかかる遅延時間が大きくなってしまう、という問題がある。
例えば、Myrinet等のようにネットワークインタフェース基板上のメモリ容量が小さい場合は、MPIの受信バッファ全部を基板上のメモリに搭載できるだけの容量がない。このため、ネットワークから流入するメッセージは速やかにPCIバスなどの入出力バスを経由してホストの主記憶上に吐き出す必要がある。メッセージがネットワークインタフェース基板上に滞っているとネットワーク側が詰まり、輻輳の原因となるためである。メッセージは、PCIバス等を経由して数回のDMAを繰り返してホストの主記憶に設けられたMPIの受信バッファに常時運ばれるため、通信遅延時間が大きくなってしまう。
また、DIMMnet−2のようにネットワークインタフェース基板上のメモリがDRAMベースになっていてホストの主記憶並みに容量が大きい場合は、ネットワーク側からリモートアクセスさせるデータをネットワークインタフェース基板上のメモリに配置することができる。さらに、MPIの受信バッファ全部をネットワークインタフェース基板上のメモリに配置することができる。このため、受信側がメッセージ到着前に対応する受信関数を起動していない場合はネットワークインタフェース基板上のメモリ上に設けられたMPIバッファに受信メッセージを格納できる。
しかしながら、ネットワークインタフェース基板上のメモリはホストの主記憶よりもホストからのアクセスに時間がかかるため、受信キーに一致するメッセージの検索に時間がかかってしまう。したがって、必ずしもMPIの受信遅延が短くならない、という問題がある。
さらに、非特許文献5に記載されたハードウェアでバッファの検索をサポートする方式のようにALPUと呼ばれる回路ブロックをランダムロジックで組み上げた場合には、論理回路の規模が大きくなる、という問題がある。このことはLSI内のその他の回路やバッファ量を圧迫したり、周波数を制限したり、消費電力が上げるなどの副作用を伴う。さらに、大規模な並列システムにおいては十分な個数のALPUをLSI内に実装することができず、そのあふれをソフトウェア的に救済しなければならないため、その場合、大きな性能低下が発生する。
さらにまた、非特許文献6に記載されたLHSは、メッセージ前半部を格納する1つの低遅延メモリにメッセージが届いた順番に格納されていく。このため、MPIの受信関数で指定された受信キーと一致しない受信キーを有するメッセージが、一致する受信キーを有するメッセージより先に大量に届いた場合は、先頭から順番に多数回比較していかねばならないため、その場合、大きな性能低下が発生する、という問題がある。
本発明は、上記に鑑みてなされたものであって、受信関数で指定された受信キーと一致する受信キーに係る受信情報を検索する時間を従来に比べて大幅に短縮させることができる通信制御装置、情報処理装置およびプログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明の通信制御装置は、受信メッセージまたは受信関数の引数の全部または一部に相当する受信情報を格納する複数の受信バッファと、前記受信メッセージが有している受信キーからハッシュ値生成規則に応じてハッシュ値を生成するハッシュ値生成手段と、前記受信情報を、前記ハッシュ値に応じて、前記複数の受信バッファの中から一の前記受信バッファを選択して格納する格納手段と、受信関数で指定される受信キーの一致判定により受信を行なう受信手段からの送信要求に応じて、前記受信情報を前記ハッシュ値に係る前記受信バッファから出力する出力手段と、を備えることを特徴とする。
また、本発明の通信制御装置は、分散メモリ型並列処理におけるメッセージ交換のためのライブラリが取り扱う受信メッセージの全部または一部を格納する複数の受信バッファと、前記受信メッセージが有している前記受信キーからハッシュ値生成規則に応じてハッシュ値を生成するハッシュ値生成手段と、前記受信メッセージを、当該受信メッセージが有している前記受信キーから生成された前記ハッシュ値に応じて、前記複数の受信バッファの中から一の前記受信バッファを選択して格納するメッセージ格納手段と、受信関数で指定される受信キーの一致判定により受信を行なう受信手段からの送信要求に応じて、前記受信関数に応じた前記受信メッセージの一つ以上の候補を、当該受信関数で指定される受信キーから生成される前記ハッシュ値に係る前記受信バッファから出力するメッセージ出力手段と、を備えることを特徴とする。
また、本発明の通信制御装置は、分散メモリ型並列処理におけるメッセージ交換のためのライブラリで用いられる受信関数の引数の全部または一部に相当する受信要求情報を格納する複数の受信バッファと、受信メッセージが有している受信キーからハッシュ値生成規則に応じてハッシュ値を生成するハッシュ値生成手段と、受信キーの一致判定により受信を行なう受信手段からの前記受信関数に係る受信要求情報を、当該受信関数に係る受信メッセージが届くまで、当該受信関数の前記受信キーから生成された前記ハッシュ値に応じて、前記複数の受信バッファの中から一の前記受信バッファを選択して格納する受信要求格納手段と、前記受信メッセージが届いた場合であって、当該受信メッセージが有している前記受信キーから生成される前記ハッシュ値に係る前記受信バッファ内に前記受信要求情報がある場合、前記受信メッセージを出力するメッセージ出力手段と、を備えることを特徴とする。
また、本発明の情報処理装置は、請求項1ないし10のいずれか一に記載の通信制御装置と、前記通信制御装置が備えるハッシュ値生成手段で用いられるハッシュ値生成規則を有しており、受信関数で指定される受信キーを入力として得られるハッシュ値に基づいて前記通信制御装置の所望の受信バッファに格納されている受信情報を当該通信制御装置から取得するホスト部と、を備える。
また、本発明のプログラムは、コンピュータを、受信メッセージまたは受信関数の引数の全部または一部に相当する受信情報を格納する複数の受信バッファと、前記受信メッセージが有している受信キーからハッシュ値生成規則に応じてハッシュ値を生成するハッシュ値生成手段と、前記受信情報を、前記ハッシュ値に応じて、前記複数の受信バッファの中から一の前記受信バッファを選択して格納する格納手段と、受信関数で指定される受信キーの一致判定により受信を行なう受信手段からの送信要求に応じて、前記受信情報を前記ハッシュ値に係る前記受信バッファから出力する出力手段と、として機能させることを特徴とする。
また、本発明のプログラムは、コンピュータを、分散メモリ型並列処理におけるメッセージ交換のためのライブラリが取り扱う受信メッセージの全部または一部を格納する複数の受信バッファと、前記受信メッセージが有している前記受信キーからハッシュ値生成規則に応じてハッシュ値を生成するハッシュ値生成手段と、前記受信メッセージを、当該受信メッセージが有している前記受信キーから生成された前記ハッシュ値に応じて、前記複数の受信バッファの中から一の前記受信バッファを選択して格納するメッセージ格納手段と、受信関数で指定される受信キーの一致判定により受信を行なう受信手段からの送信要求に応じて、前記受信関数に応じた前記受信メッセージの一つ以上の候補を、当該受信関数で指定される受信キーから生成される前記ハッシュ値に係る前記受信バッファから出力するメッセージ出力手段と、として機能させることを特徴とする。
また、本発明のプログラムは、コンピュータを、分散メモリ型並列処理におけるメッセージ交換のためのライブラリで用いられる受信関数の引数の全部または一部に相当する受信要求情報を格納する複数の受信バッファと、受信メッセージが有している受信キーからハッシュ値生成規則に応じてハッシュ値を生成するハッシュ値生成手段と、受信キーの一致判定により受信を行なう受信手段からの前記受信関数に係る受信要求情報を、当該受信関数に係る受信メッセージが届くまで、当該受信関数の前記受信キーから生成された前記ハッシュ値に応じて、前記複数の受信バッファの中から一の前記受信バッファを選択して格納する受信要求格納手段と、前記受信メッセージが届いた場合であって、当該受信メッセージが有している前記受信キーから生成される前記ハッシュ値に係る前記受信バッファ内に前記受信要求情報がある場合、前記受信メッセージを出力するメッセージ出力手段と、として機能させることを特徴とする。
本発明によれば、受信メッセージが有している受信キーから生成されたハッシュ値に応じて、複数の受信バッファの中から一の受信バッファを選択して受信情報を格納し、受信関数で指定される受信キーの一致判定により受信を行なう受信手段からの送信要求に応じてハッシュ値に係る受信バッファから受信情報を出力することにより、受信関数で指定された受信キーと一致するか一致しないかで受信情報は別の受信バッファに分別保持されている可能性が高いので、受信関数で指定された受信キーと一致する受信キーに係る受信情報を検索する時間を従来に比べて大幅に短縮させることができる、という効果を奏する。
本発明によれば、受信メッセージが有している受信キーから生成されたハッシュ値に応じて、複数の受信バッファの中から一の受信バッファを選択して受信情報を格納し、受信関数で指定される受信キーの一致判定により受信を行なう受信手段からの送信要求に応じてハッシュ値に係る受信バッファから受信関数に応じた受信メッセージの一つ以上の候補を出力することにより、受信関数で指定された受信キーと一致する受信キーを有する受信メッセージより先に一致しない受信キーを有する受信メッセージが大量に届いた場合であっても、受信関数で指定された受信キーと一致するか一致しないかで受信メッセージは別の受信バッファに分別保持されている可能性が高いので、受信関数で指定された受信キーと一致する受信キーを有する受信メッセージを検索する時間を従来に比べて大幅に短縮させることができる、という効果を奏する。
本発明によれば、受信キーの一致判定により受信を行なう受信手段からの受信関数に係る受信要求情報を、当該受信関数に係る受信メッセージが届くまで、当該受信関数の受信キーから生成されたハッシュ値に応じて、複数の受信バッファの中から一の受信バッファを選択して格納する。このようにして、受信情報に対するアクセスがし易いように分類された受信バッファ内では受信関数起動順に順序づけられた状態で保持することができる。その結果、受信メッセージが届いた際に、当該受信メッセージが有している受信キーから生成されるハッシュ値に係る受信バッファ内に受信要求情報がある場合、受信キーが一致する受信要求情報(ここに最終的な格納場所が記載されている)を検索する時間の短縮ができ、結果として最終的な格納場所に短い時間で受信メッセージを出力することができる、という効果を奏する。
以下に添付図面を参照して、この発明にかかる通信制御装置、情報処理装置およびプログラムの最良な実施の形態を詳細に説明する。
[第1の実施の形態]
本発明の第1の実施の形態を図1ないし図9に基づいて説明する。本実施の形態は通信制御装置としてNIC(Network Interface Card)上のLSI(Large Scale Integration)を適用し、情報処理装置としてPC(Personal Computer)を適用した例である。
図1は、本発明の第1の実施の形態にかかるPCクラスタの構成を示す模式図である。図1に示すように、PCクラスタは、複数台のPC(Personal Computer)をネットワークで結合することにより構築した並列計算機の一種である。PCクラスタは、実際に計算を行う複数台の計算ノードとなるPC1と、全体を管理するマスタノードとなるPC2とで構成されている。なお、本実施の形態のPCクラスタは、全ての計算ノードとなるPC1がディスクを有しているディスククラスタである。マスタノードとなるPC2と計算ノードとなるPC1とはスイッチングハブ3を介して内部ネットワーク4で接続されており、マスタノードとなるPC2のみが外部ネットワーク5に接続されている。なお、内部ネットワーク4は、コマンド/NFS用のみならず、MPI(Message Passing Interface)用のネットワークとしても利用される。MPIは、CPU(Central Processing Unit)間でメッセージを交信しながら並列処理を実現する並列ライブラリである。
次に、本実施の形態の特徴である計算ノードとなるPC1について説明する。図2は、PC1の構成を示すブロック図である。図2に示すように、PC1は、NIC(Network Interface Card)10と、後述する受信関数で指定される受信キーの一致判定により受信を行なう受信手段として機能するホスト部20とを備えている。
図3は、ホスト部20の構成を示すブロック図である。図3に示すように、ホスト部20は、PC1における各種処理を実行するものであって、一般的なパーソナルコンピュータと同様に、コンピュータの主要部であって各部を集中的に制御するCPU(Central Processing Unit)51を備えている。このCPU51には、BIOSなどを記憶した読出し専用メモリであるROM(Read Only Memory)52と、CPU51の作業エリアとして機能するRAM(Random Access Memory)53とがバス54で接続されている。さらにバス54には、各種のプログラム等を格納するHDD(Hard Disk Drive)55が、図示しないI/Oを介して接続されている。CPU51は、このシステムの主記憶装置として使用されるHDD55上にロードされたプログラムに基づいて各種処理を実行する。
HDD55に格納されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、DVD等のコンピュータで読み取り可能な記録媒体に記録されて提供されてもよい。この場合には、プログラムは、上記記録媒体から読み出して実行することにより主記憶装置であるHDD55に上にロードされ、各種処理を実行する各機能構成部が主記憶装置上に生成されるようになっている。また、プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。
NIC10は、コンピュータ間の通信を行うために使用されるハードウェアの1つである。本実施の形態においては、図2に示すように、NIC10は、LSI(Large Scale Integration)である通信制御装置100と第2メモリ200とを備えている。
第2メモリ200は、DRAM(Dynamic Random Access Memory)ベースのメモリである。第2メモリ200は、図2に示すように、NIC10上の通信制御装置100の外部に設置されている。第2メモリ200は、通信制御装置100が備える第1メモリ160に比べて大容量であって、かつ、データの転送要求などのリクエストを発してからリクエストの結果が返ってくるまでにかかる遅延時間が長い高遅延のメモリである。
なお、他の例としては、第2メモリ200は通信制御装置100の内部に設けられてもよい。また、第2メモリ200は、NIC10の外部に設けられてもよい。また、ホスト部20の主記憶上に形成されてもよい。さらに、第2メモリ200は、DRAMベース以外の構成であってもよい。
図2に示すように、通信制御装置100は、ネットワーク制御部110と、分割制御部120と、設定部130と、第1メモリ制御部140と、第2メモリ制御部150と、第1メモリ160と、ホストインタフェース部170と、プリフェッチバッファ180と、ハッシュ値生成部190とを備えている。
ネットワーク制御部110は、フロー制御や再送制御などのOSI参照モデルにおけるトランスポート層以下の層での処理を行う。ネットワーク制御部110は、内部ネットワーク4からメッセージを受信し、受信メッセージ(受信情報)として取得する。そして、受信したメッセージ、すなわち受信メッセージの誤りを検出して訂正し、誤りのない受信メッセージを分割制御部120に渡す。
分割制御部120は、分割位置レジスタ122と、サイズ位置レジスタ124と、キー位置レジスタ126とを有しており、受信メッセージを分割する。
分割位置レジスタ122は、受信メッセージの分割位置情報を保持している。分割位置情報とは、受信メッセージを分割する場合の分割位置を示す情報である。分割位置情報は、具体的には、先頭から何バイトの位置という情報である。
サイズ位置レジスタ124は、受信メッセージのサイズ位置情報を保持している。サイズ位置情報とは、受信メッセージにおいて、当該受信メッセージのデータサイズを示すサイズ情報が格納されている位置を示す情報である。
キー位置レジスタ126は、受信メッセージのキー位置情報を保持している。ここで、キー位置情報とは、受信メッセージにおいて、受信キーが格納されている位置に関する情報である。キー位置情報は、具体的には、例えば先頭から何バイトの位置という情報である。受信キーとは、受信関数で指定され、当該受信メッセージを受信するか否かを一致比較によって判定するための情報である。例えば、受信キーとは、MPIにおいては受信関数MPI_Irecv()の引数であるtag(メッセージタグ)やcomm(コミュニケータ)やsource(送信元のランク)が相当し、受信メッセージの前半メッセージに格納されているエンベロープ(envelope)と呼ばれる部分に含まれる情報である。
このような構成により、分割制御部120は、分割位置レジスタ122に保持されている分割位置情報およびサイズ位置レジスタ124に保持されているサイズ位置情報を利用して、適宜、受信メッセージを前半メッセージと後半メッセージとに分割する。本実施の形態にかかる分割制御部120は、分割手段として機能する。
分割制御部120は、さらに前半メッセージを第1メモリ制御部140に渡し、後半メッセージを第2メモリ制御部150に渡す。なお、分割制御部120は、比較的容量の小さい受信メッセージ、すなわち分割する必要のない小受信メッセージも、第1メモリ制御部140に渡す。
ここで、前半メッセージは、ホスト部20が受信処理においてはじめに利用すべきデータを含んでいる。ここで、受信処理とは、内部ネットワーク4から受信メッセージを取得した際に行う処理である。例えばMPIにおいては、受信処理においてはじめに受信関数によって指定された受信キーとエンベロープとが一致するか否かが判定される。すなわち、エンベロープは、受信処理においてはじめに利用される情報である。前半メッセージまたは小受信メッセージは、はじめに利用すべきデータとしてエンベロープを含んでいる。後半メッセージは、受信メッセージのうち前半メッセージ以外の部分である。
また、分割制御部120は、受信メッセージ(前半メッセージまたは小受信メッセージ)中のエンベロープの受信キーをハッシュ値生成部190に渡す。
ハッシュ値生成部190は、分割制御部120から入力される受信キーから所定のハッシュ関数(ハッシュ値生成規則)によりハッシュ値を生成し、生成したハッシュ値を第1メモリ制御部140と第2メモリ制御部150とに対して出力する。本実施の形態にかかるハッシュ値生成部190は、ハッシュ値生成手段として機能する。
設定部130は、ユーザからの指示等により分割位置情報を分割位置レジスタ122に設定する。これにより、分割位置を調整することができる。また、サイズ位置情報をサイズ位置レジスタ124に設定する。これにより、受信可能なメッセージのフォーマットを柔軟に変更することができる。すなわち、多様なフォーマットのメッセージを処理対象とすることができる。
なお、分割位置レジスタ122、サイズ位置レジスタ124、キー位置レジスタ126および設定部130は、必ずしも必須の構成ではない。他の例としては、分割位置情報およびサイズ位置情報およびキー位置情報として、適切な固定値を予め設定しておくこととしてもよい。
第1メモリ160は、第2メモリ200に比べて小容量であって、かつ、データの転送要求などのリクエストを発してからリクエストの結果が返ってくるまでにかかる遅延時間が短い低遅延のメモリである。第1メモリ160は、典型的にはLSIに内蔵される高速SRAMである。
例えば、MPIのシステムバッファ全体を通信制御装置100に設置するのは容量的に困難である。しかし、第1メモリ160は必ずしもLSI内蔵でなければならないというものではない。そこで、本実施の形態においては、第1メモリ160と第2メモリ200という容量や遅延の異なる2種類のメモリをメッセージ交換の高速化という観点で使い分けている。
第1メモリ160は、複数のエントリを保持可能なバッファを有している。受信メッセージ(前半メッセージなど)を受信したにも関わらずそのメッセージを受信するべき受信関数がホスト部20からコールされていない場合には、受信関数がコールされるまで受信メッセージ(前半メッセージ)をバッファリングしておく必要がある。このように受信関数がコールされるまで受信メッセージ(前半メッセージなど)をバッファリングするためのキューは、Unexpected message queueと呼ばれている。すなわち、第1メモリ160に形成される複数のバッファは、MPI用に用いられる場合において、受信キーが一致する受信関数をコールする前に届いてしまった受信メッセージ(前半メッセージなど)を一時的に格納するバッファである。本実施の形態においては、Unexpected message queueにより受信メッセージ(前半メッセージなど)を一時的に格納する受信バッファを、Unexpected受信バッファ前半部161〜164と称している。
第1メモリ制御部140は、小容量かつ低遅延である第1メモリ160を制御する。具体的には、分割制御部120から受け取った前半メッセージまたは小受信メッセージの全体を第1メモリ160に格納する。また、第1メモリ制御部140は、第1メモリ160に格納されているデータを読み出し、ホストインタフェース部170に渡す。
このように、前半メッセージまたは小受信メッセージを小容量かつ低遅延である第1メモリ160に格納することにより、大容量かつ高遅延である第2メモリ200に格納する場合に比べて少ない遅延で前半メッセージや小受信メッセージをホスト部20に提供することができる。
また、第2メモリ200は、第1メモリ160に格納しきれなかったデータを格納する。具体的には、受信メッセージのうち後半メッセージを格納する。第1メモリ160と同様に、第2メモリ200も、複数のエントリを保持可能なバッファを有している。このバッファは、MPI用に用いられる場合において、受信キーが一致する受信関数をコールする前に届いてしまった受信メッセージ(後半メッセージ)を一時的に格納するバッファである。本実施の形態においては、Unexpected message queueにより受信メッセージ(後半メッセージ)を一時的に格納するバッファを、Unexpected受信バッファ後半部201〜204と称している。
第2メモリ制御部150は、大容量かつ高遅延である第2メモリ200を制御する。具体的には、分割制御部120から受け取った後半メッセージを第2メモリ200に格納する。また、第2メモリ制御部150は、第2メモリ200に格納されているデータを読み出し、ホストインタフェース部170またはプリフェッチバッファ180に渡す。
ここで、第1メモリ160および第2メモリ200のデータ構造について図4を参照して説明する。
図4に示すように、第1メモリ160のUnexpected受信バッファ前半部161〜164は、前半メッセージまたは小受信メッセージの全体をエントリとして保持する。前半メッセージは、後続ポインタ(図4で点線で示されるアドレス情報)とともに同一のエントリに格納される。ここで、後続ポインタとは、前半メッセージに続く後半メッセージのアドレスを示す情報である。
第1メモリ160上のUnexpected受信バッファ前半部161〜164は、第1メモリ制御部140によりリング状に管理される。つまり、第1メモリ160上のUnexpected受信バッファ前半部161〜164は、先入れ先出しバッファ(FIFO)として機能するリングバッファである。すなわち、第1メモリ制御部140は、使用中領域(図4で網掛けで示されるメモリ領域)の先頭ポインタ(図4において一点鎖線で示されるアドレス情報)と末尾ポインタ(図4において鎖線で示されるアドレス情報)を保持している。先頭ポインタや末尾ポインタはランダムロジックのレジスタ上に格納しても良いし、大規模化に対応するならばメモリ上に格納しても良い。
なお、前半メッセージまたは小受信メッセージの全体は、ハッシュ値生成部190により生成されるハッシュ値によって選択されるリングバッファ(Unexpected受信バッファ前半部161〜164の何れか)にエントリとして格納される。ここに、メッセージ格納手段および格納手段の機能が実行される。
また、リングバッファ(Unexpected受信バッファ前半部161〜164の何れか)に前半メッセージまたは小受信メッセージの全体を書き込む処理は、例えば、IPUSH機構を用いることによりハードウェアで実現することができる。IPUSH機構については、非特許文献4に記載されている。
さらに、各エントリのデータサイズは予め定められている。例えば、エントリのデータサイズは、32バイトである。エントリのデータサイズは、ホスト部20のCPU51のラインサイズに対応して決定される。ホスト部20にできるだけ早くデータを送る観点からは、第1メモリ160になるべく多くのデータを格納することが望ましい。しかし、各エントリのデータサイズを大きくした場合には、空きが問題となる。このようなトレードオフに伴う実行性能最適点をエントリのデータサイズとするのが望ましい。
さらにまた、エントリのデータサイズは、エンベロープなどの制御情報が必ず含まれるようなデータサイズとすることが望ましい。さらには、例えば制御などに用いられるメッセージのように比較的容量の小さい小受信メッセージの全体を格納可能なデータサイズとすることが望ましい。これにより、エンベロープを含むエントリをホスト部20に転送するのと同時にこの小受信メッセージのデータ部もホスト部20に転送される。
このような小受信メッセージは、遅延時間が短いことが要求されるデータである場合が多い。内部ネットワーク4から長いメッセージを受信した後にこのような小受信メッセージを受信した場合でも、ホスト部20は、小受信メッセージを先に要求する場合が多い。上述のように、小受信メッセージを第1メモリ160に格納することにより低遅延で転送することができる。
また、後続ポインタのデータサイズも予め定められている。例えば、4バイトである。この場合、各エントリに格納される前半メッセージのデータサイズは、エントリのデータサイズ32バイトからポインタのデータサイズ4バイトを差し引いた残りのデータサイズ、すなわち28バイトである。そこで、分割位置レジスタ122には、分割位置として、先頭から28バイトを示す分割位置情報が格納されている。
小受信メッセージは、図4に示すUnexpected受信バッファ前半部163の先頭に格納されているエントリのように、後半メッセージが無く、受信メッセージの全体がエントリに格納される。この場合には、ポインタを格納する必要がない。このため、エントリのデータサイズ32バイト以下であれば、前半メッセージのデータサイズ28バイトよりも大きいデータであっても格納することができる。
一方、第2メモリ200上のUnexpected受信バッファ後半部201〜204も、図4に示すように、第2メモリ制御部150によりリング状に管理される。より詳細には、第2メモリ200には、エントリサイズが可変長のFIFOの構造を有したリングバッファが複数形成され、後半メッセージはハッシュ値生成部190により生成されるハッシュ値によって選択されるリングバッファ(Unexpected受信バッファ後半部201〜204の何れか)にエントリとして格納される。
上述したように、本実施の形態においては、第1メモリ制御部140は、第1メモリ160のUnexpected受信バッファ前半部161〜164の1つをそのメッセージの一時格納場所としている。また、第2メモリ制御部150は、このハッシュ値入力に対応する、第2メモリ200上のUnexpected受信バッファ後半部201〜204の1つをそのメッセージの一時格納場所としている。
ここで、受信メッセージの一時格納場所として、第1メモリ160の上に例えば4個の上のUnexpected受信バッファ前半部161〜164を形成する場合、および、第2メモリ200上に4個のUnexpected受信バッファ後半部201〜204を形成する場合においては、ハッシュ値生成部190は、Unexpected受信バッファ前半部161〜164およびUnexpected受信バッファ後半部201〜204の1つを特定できる情報、すなわち実質2ビットの情報を上記のハッシュ値として出力する。
なお、本実施の形態においては、Unexpected受信バッファの個数は4個としているが、必ずしも4個である必要は無く、キーが一致するメッセージの検索に要するUnexpected受信バッファの読み出し回数が少なくなる確率が高くなるため、性能の観点からは、この個数は第1メモリ160に割り当てられるメモリ容量や第1メモリ制御部140に保持できるポインタなどのバッファ管理情報の記憶容量が許す範囲で多い方が良い。
また、MPIにおいては送信元が同じメッセージは先に送信されたメッセージが先に届くようにする必要があるため、個々のUnexpected受信バッファは先入れ先出しバッファ(FIFO)として動作するように制御されることが望ましい。よって、内部ネットワーク4から受信されるメッセージのエンベロープ上のsource(送信元のランク)およびcomm(コミュニケータ)が同一ならば上記ハッシュ関数は同じハッシュ値を出力するようにすることにより、それらは同じUnexpected受信バッファに格納される。したがって、FIFO制御されたUnexpected受信バッファの先頭から読み出していけば、Unexpected受信バッファ前半部161〜164中に滞在するキーが一致するメッセージのうちで一番先に送信されたものを先に読み出せるようになる。よって、MPIにおいてはsourceとcommをハッシュ値生成部190の入力とすることが望ましい。しかし、comm(コミュニケータ)は1種類しか用いないアプリケーションも多いので、実用的にはsourceをハッシュ値生成部190の入力とすることが望ましい。
図2に戻り、プリフェッチバッファ180は、第2メモリ制御部150を介して第2メモリ200から後半メッセージを取得し、格納する。また、プリフェッチバッファ180は、後半メッセージをホストインタフェース部170に渡す。なお、ホストインタフェース部170に渡された後半メッセージは、プリフェッチバッファ180から削除される。
ホストインタフェース部170は、受信関数をコールしたホスト部20からの送信要求に応じて、第1メモリ160上の当該受信関数に応じた前半メッセージをホスト部20に渡す。本実施の形態にかかるホストインタフェース部170は、メッセージ出力手段および出力手段として機能する。ホスト部20は、受信関数の受信キーに対応した前半メッセージに対応する後半メッセージの格納場所(後続ポインタ)を検索する。次に、ホスト部20はその場所(後続ポインタ)に対応する第2メモリ200またはプリフェッチバッファ180上にある受信メッセージ(後半メッセージ)を、ホストインタフェース部170を介してアクセスする。
一方、ホスト部20では、CPU51で実行されるプログラム(例えば、MPIのシステム)が上記のハッシュ値生成部190で用いられるハッシュ関数を共有していて、受信関数(例えば、MPI_Irecv())をコールした時に引数として指定された受信キーを入力として上記のハッシュ関数を実行し、ハッシュ値を得ることができる。これにより、ホスト部20は、上記の仕組みによって、受信関数によって受信されるべきメッセージが第1メモリ160上のどのUnexpected受信バッファ前半部161〜164に格納されているのかを知ることができる。
ところで、MPIなどの2sidedな通信であるメッセージパッシングモデルに基づく通信ライブラリを実装する際には、受信側で受信したいメッセージと受信側ノードへのメッセージ到着順序が必ずしも一致しない、という問題がある。
従来の手法(例えば、特許文献1参照)によれば、ホスト部20による第1メモリ160上のエンベロープ部分の読み出しと比較を受信キーが一致するまで繰り返すことにより、受信キーが一致するメッセージをUnexpected受信バッファから検索することができるようにしている。しかしながら、例えばNAS Parallel Benchmarks(NPB)のFTやISなどにおいては、ノード数に近い多くのメッセージがUnexpected受信バッファに滞留するため、その検索時間の増加により通信遅延が増加する。よって、多くのノード数からなる並列システム上でNPB FTやISを実行すると、図5に示されるように、大量の先着メッセージの中から所望のメッセージBを掘り出さねばならない状況が発生する。この場合のメッセージBの検索時間は先に届いた「全ての」メッセージのエンベロープ部転送時間とキー比較時間の総和となる。図5に示す例では、受信メッセージa→b→…→k→A→l→m→…→y→Bの順序でメッセージが到着したとする。この状態において、ホスト部20が受信メッセージBを受信する関数を実行したとする。この場合には、従来の処理においては、メッセージBより先に届いた28個の受信メッセージのenvelopeを元にMPIの処理系は受信バッファからメッセージBを先頭から順番に検索して抽出することになる。
これに対して、本実施の形態においては、上述のように、エンベロープがホスト部20から低遅延でアクセスできる第1メモリ160に形成された複数のUnexpected受信バッファ前半部161〜164にハッシュ値に基づいて分類されて先入れ先出しの順序を保持した状態で保持されている。
ホスト部20は、ホストインタフェース部170と第1メモリ制御部140を介して、第1メモリ160に形成されたUnexpected受信バッファ前半部161〜164を先頭から読み出し、受信関数で指定した受信キーと一致するまで読み出しと比較を繰り返す。
図6に示す例においては先着のメッセージAと後着のメッセージBのエンベロープ中の受信キーが同じハッシュ値に対応するため、図6に示すようなハッシュ値計算時間に加えて、同一のUnexpected受信バッファ前半部161〜164内に滞留するメッセージAのエンベロープを読み出して受信キーを比較して不一致を検出する時間と、再び先ほど計算したハッシュ値に対応するUnexpected受信バッファ前半部161〜164を読み出して受信キーを比較して一致を検出する時間と、を加えたものがメッセージBを受信する際の検索に要する時間となる。より詳細には、図6に示すように、メッセージAおよびメッセージB以外のメッセージは全て別のハッシュ値を持つため別のUnexpected受信バッファに格納されるため、従来の方法で消費されていたこれらのメッセージに関わる処理の時間がメッセージBの受信時にはかからなくなるため大幅な高速化が期待できる。例えば、図6に示すように、受信メッセージa→b→…→k→A→l→m→…→y→Bの順序でメッセージが到着し、メッセージAとメッセージBが同じハッシュ値3に対応したとする。この場合、これらはメッセージA、メッセージBの順序で同一のUnexpected受信バッファ前半部163に格納される。したがって、図6に示すように、ホスト部20がハッシュ関数を計算してハッシュ値3を得て、ハッシュ値3に対応するUnexpected受信バッファ前半部163から受信メッセージA,Bのエンベロープを取得するだけで、メッセージBのエンベロープを抽出することができる。したがって、ホスト部20が受信メッセージBを検索するまでの遅延時間を大幅に短縮させることができる。
ここで、図7は通信制御装置100によるメッセージ受信処理を示すフローチャートである。ネットワーク制御部110が内部ネットワーク4を介してメッセージを受信すると(ステップS101のYes)、分割制御部120は、受信したメッセージ、すなわち受信メッセージを前半メッセージと後半メッセージとに分割し(ステップS102)、前半メッセージ(または小受信メッセージ)を第1メモリ制御部140に渡し(ステップS103)、後半メッセージを第2メモリ制御部150に渡す(ステップS104)。
また、ハッシュ値生成部190は、分割された前半メッセージ(または小受信メッセージ)のハッシュ値を生成して第1メモリ制御部140に渡すとともに(ステップS105)、後半メッセージのハッシュ値を生成して第2メモリ制御部150に渡す(ステップS106)。
そして、第1メモリ制御部140は、前半メッセージ(または小受信メッセージ)をハッシュ値に応じて第1メモリ160上のUnexpected受信バッファ前半部161〜164のいずれかに分類して格納する(ステップS107)。
また、第2メモリ制御部150は、後半メッセージをハッシュ値に応じて第2メモリ200上のUnexpected受信バッファ後半部201〜204のいずれかに分類して格納する(ステップS108)。
以上により、通信制御装置100によるメッセージ受信処理が完了する。
次に、通信制御装置100からホスト部20への受信メッセージ転送処理について説明する。図8は、ホスト部20の機能構成を示すブロック図である。ホスト部20は、CPU51がHDD55上にロードされたプログラムに従うことにより、受信メッセージ要求部201と、後半メッセージ要求部202と、キャッシュメモリ204と、制御情報管理部206とを備えている。
受信メッセージ要求部201は、所定のアドレスのデータがキャッシュメモリ204に存在しない場合には、通信制御装置100に対し、アドレスを指定して受信メッセージの要求を行う。そして、通信制御装置100から前半メッセージまたは小受信メッセージを取得し、キャッシュメモリ204に格納する。なお、受信メッセージ要求部201は、キャッシュラインサイズで前半メッセージまたは小受信メッセージを取得する。後半メッセージ要求部202は、通信制御装置100に対し後半メッセージの要求を行う。そして、通信制御装置100から後半メッセージを取得する。
制御情報管理部206は、受信メッセージ要求部201が取得した前半メッセージまたは小受信メッセージに含まれる制御情報、すなわちエンベロープを抽出する。そして、受信関数によって指定された受信キーと一致することを確認する。これにより、このメッセージを受信するか否かを検査する。
制御情報管理部206は、さらに受信メッセージ要求部201が取得したデータが前半メッセージである場合に、後半メッセージ要求部202に対し後半メッセージの要求を指示する。なお、取得したデータが前半メッセージであるか否かは、前半メッセージ中に格納されているサイズ情報が示すデータサイズがこの前半メッセージのデータサイズよりも大きいか否かにより判定する。
後半メッセージ要求部202は、通信制御装置100に対して、後半メッセージの要求を行う。そして、通信制御装置100から後半メッセージを取得する。
ホスト部20は、キャッシュベースのシステムである。したがって、ホスト部20のキャッシュミスヒットやプリフェッチ命令に伴うアクセスにより第1メモリ160に格納されている前半メッセージや小受信メッセージがホスト部20にバースト転送される。これにより、低遅延かつ高バンド幅での転送が可能になる。
図9は、通信制御装置100からホスト部20への受信メッセージ転送処理を示すフローチャートである。図7に示すメッセージ受信処理により通信制御装置100が内部ネットワーク4を介して受信したメッセージをホスト部20からの要求によりホスト部20に提供する際の処理である。
まず、ホスト部20の受信メッセージ要求部201は、受信メッセージ要求を通信制御装置100に送る(ステップS200)。通信制御装置100においては、ホストインタフェース部170が受信メッセージ要求を受け取ると、第1メモリ制御部140は、ハッシュ値に応じてホスト部20により指定されている第1メモリ160のUnexpected受信バッファ前半部161〜164の何れかに格納されているデータを読み出す(ステップS202)。具体的には、小受信メッセージまたは前半メッセージを読み出す。次に、ホストインタフェース部170は、読み出したデータをホスト部20に送信する(ステップS204)。
このとき、例えば、エントリに、前半メッセージとともに後半メッセージが存在することを示すフラグを格納しておき、フラグの有無から後半メッセージの有無を判断するようにする。
そして、後半メッセージがある場合には(ステップS210のYes)、第2メモリ制御部150は、第メモリ200からポインタに示される後半メッセージを読み出す(ステップS212)。そして、読み出した後半メッセージをプリフェッチバッファ180に格納する(ステップS214)。
ホスト部20においては、受信メッセージ要求部201は、前半メッセージまたは小受信メッセージを取得し、これらのデータをキャッシュメモリ204に格納する。このとき、制御情報管理部206は、データからエンベロープを抽出する。そして、受信関数によって指定された受信キーと一致することを確認する。そして、一致が確認できたデータが前半メッセージであるか否か、すなわち後半メッセージがあるか否かを判定する。
ステップS202において、前半メッセージの後続ポインタにより後半メッセージがあると判断した場合には(ステップS220のYes)、後半メッセージ要求部202は、後半メッセージ要求を通信制御装置100に送る(ステップS222)。
通信制御装置100のホストインタフェース部170は、要求されている後半メッセージがプリフェッチバッファ180に存在する場合には(ステップS230のYes)、プリフェッチバッファ180から後半メッセージを読み出す(ステップS232)。一方、要求されている後半メッセージがプリフェッチバッファ180に存在しない場合には(ステップS230のNo)、第2メモリ制御部150を介して第2メモリ200から後半メッセージを読み出す(ステップS234)。
なお、プリフェッチバッファ180に後半メッセージが存在しない場合としては、ホストが高速でプリフェッチが追いつかなかった場合や、後半メッセージがプリフェッチバッファ180に一旦格納されたが、後半メッセージ要求を取得したときには、空き容量不足で既に削除されていた場合が考えられる。また、プリフェッチバッファ180が新たなデータを書き込む分の空きがない場合には、書き込まない構造である場合には、後半メッセージが書き込まれなかった場合が考えられる。
次に、ホストインタフェース部170は、後半メッセージをホスト部20に送信する(ステップS236)。以上で、受信メッセージ転送処理が完了する。
以上のように、ホスト部20から要求されたデータに対応する後半メッセージが第2メモリ200に格納されている場合には、ホスト部20から後半メッセージの要求を取得する前に予めホスト部20への転送にかかる遅延の比較的小さいプリフェッチバッファ180に後半メッセージを読み出しておく。これにより、ホスト部20から後半メッセージを要求された際に後半メッセージがプリフェッチバッファ180に存在する確率を高めることができる。したがって、低遅延で後半メッセージをホスト部20に転送することができる。
これにより、ホスト部20における後半メッセージを有する受信メッセージの受信遅延を短縮することができる。さらに、小容量の第1メモリ160には全体を格納することができないが、遅延のバンド幅への影響が大きい中程度のデータサイズの受信メッセージにおけるバンド幅を向上させることができる。
このように本実施の形態によれば、受信メッセージが有している受信キーから生成されたハッシュ値に応じて、複数の受信バッファの中から一の受信バッファを選択して受信情報を格納し、受信関数で指定される受信キーの一致判定により受信を行なう受信手段からの送信要求に応じてハッシュ値に係る受信バッファから受信情報を出力することにより、受信関数で指定された受信キーと一致するか一致しないかで受信情報は別の受信バッファに分別保持されている可能性が高いので、受信関数で指定された受信キーと一致する受信キーに係る受信情報を検索する時間を従来に比べて大幅に短縮させることができる、という効果を奏する。
より詳細には、受信メッセージが有している受信キーから生成されたハッシュ値に応じて、複数の受信バッファの中から一の受信バッファを選択して受信情報を格納し、受信関数で指定される受信キーの一致判定により受信を行なう受信手段からの送信要求に応じてハッシュ値に係る受信バッファから受信関数に応じた受信メッセージの一つ以上の候補を出力することにより、受信関数で指定された受信キーと一致する受信キーを有する受信メッセージより先に一致しない受信キーを有する受信メッセージが大量に届いた場合であっても、受信関数で指定された受信キーと一致するか一致しないかで受信メッセージは別の受信バッファに分別保持されている可能性が高いので、受信関数で指定された受信キーと一致する受信キーを有する受信メッセージを検索する時間を従来に比べて大幅に短縮させることができる、という効果を奏する。
また、このような効果の実現においては、ハードウェア量が多くなりがちな連想メモリ(CAM)や、ALPUのような滞留可能メッセージ数に比例する分量のランダムロジックを用いないので、少ないハードウェア量で大量の滞留可能メッセージ数に対応可能になる、という効果を奏する。
なお、本実施の形態においては、第1メモリ160においては、エンベロープを含む32バイトのデータを前半メッセージとして格納したが、これに限るものではなく、エンベロープのみを格納することとしてもよい。すなわち、1つのエントリには、エンベロープと、受信メッセージの内、エンベロープ以外の部分を含むデータを格納する第2メモリ200のアドレスを示すポインタと、を格納する。
この場合には、分割制御部120は、受信メッセージのデータサイズがエントリのデータサイズに比べて大きい場合には、前半メッセージと後半メッセージとに分割する処理にかえて、エンベロープのみを抽出する。そして、エンベロープを第1メモリ制御部140に渡し、残りのデータを第2メモリ制御部150に渡す。
また、ハッシュ値生成部190は、ハッシュ値生成規則を変更できるようになっていても良い。最も単純なハッシュ値生成規則の例として、2のN乗個のバッファを切り替える場合にはエンベロープ中のsourceの最下位Nビットをそのままハッシュ値とすることもできる。
しかし、その規則では並列システムの結合トポロジーやアプリケーションの通信パターンによっては偏ったハッシュ値が出力される頻度が高くなり、複数のバッファに分類することで得られる効果が薄れてしまう可能性がある。このような状況における解決策として、例えばハッシュ値生成部190は複数のハッシュ値生成規則を内在して、設定部130からの入力により、そのうちの一つを選択的に使用したり、ハッシュ値生成用のパラメータ等を変更したりすることにより、より適切なハッシュ値を得られるようにすることが可能になる。すなわち、設定部130は、変更手段および規則変更手段として機能する。
また、設定部130からの入力だけでなく、受信メッセージ内にハッシュ値生成規則を指定する情報を設け、その情報からハッシュ値生成規則を選択することにより、アプリケーションごとに適切なハッシュ値を得られるようにすることが可能になる。
なお、本実施の形態においては、通信制御装置100をLSI(Large Scale Integration)で構成したが、これに限るものではなく、通信制御装置100を必ずしもハードワイヤドロジックで実現しなくても良い。例えば、ホスト部20上のCPU51をプログラムで動作させることにより、通信制御装置100の機能の全部または一部が実現されていても良い。
[第2の実施の形態]
次に、本発明の第2の実施の形態を図10および図11に基づいて説明する。なお、前述した第1の実施の形態と同じ部分は同じ符号で示し説明も省略する。
図10は、本発明の第2の実施の形態にかかるPC1の構成を示すブロック図である。第1の実施の形態においては、第1メモリ160上に形成されてハッシュ値によって制御されるUnexpected受信バッファ前半部161〜164に、分割制御部120から受け取った前半メッセージまたは小受信メッセージの全体を第1メモリ160に格納するようにした。本実施の形態においては、ハッシュ値によって制御されるバッファは必ずしも複数のUnexpected受信バッファでなくても良く、図10に示すように、格納部である第1メモリ160上に形成される複数のPosted受信要求バッファ361〜364を、ハッシュ値によって制御される受信バッファとしている。なお、個々のPosted受信要求バッファは先入れ先出しバッファ(FIFO)として動作するように制御されることが望ましい。
ここで、Posted受信要求バッファとは、MPIにおいて受信キーが一致するメッセージが届いていない状態で受信関数が先にコールされた場合にその受信キーや受信時のメッセージ格納先などの受信関数の引数として与えられる受信要求情報(受信情報)を保持しておくバッファである。このバッファに格納される場合、メッセージ本体は届いていないのでPosted受信バッファには後半部は不要である。ここに、受信要求格納手段および格納手段の機能が実行される。
ここで、先行受信要求検索部310は、受信メッセージの受信キーとハッシュ値を受信メッセージ分割制御部120やハッシュ値生成部190から受け取り、Posted受信要求バッファ361〜364のいずれかからハッシュ値に対応するものを選択して受信キーが一致する先行受信要求があるかどうかを検索する。
先行受信要求検索部310は、最短通信遅延短縮の観点からはハードワイヤドロジックで実現されている方が望ましいが、必ずしもハードワイヤドロジックで実現されていなくても良い。また、本実施の形態においては、先行受信要求検索部310は、通信制御装置100上に配置しているが、必ずしも通信制御装置100上に配置しなくても良い。例えば、ホスト部20上のCPU51をプログラムで動作させることにより、先行受信要求検索部310の機能の全部または一部が実現されていても良い。本実施の形態の場合は、先行受信要求検索部310へのメッセージ出力手段は第1メモリ制御部140となる。一方、先行受信要求検索部310がホスト部20上のプログラムで動作する場合、メッセージ出力手段はホストインタフェース部170となる。
ここで、図11は通信制御装置100によるメッセージ受信処理を示すフローチャートである。ネットワーク制御部110が内部ネットワーク4を介してメッセージを受信すると(ステップS101のYes)、Unexpected受信バッファ前半部161〜164の検索前に、先行受信要求検索部310が、第1メモリ制御部140を介してPosted受信要求バッファ361〜364内に、受信したメッセージに対応する受信要求情報があるか否かを検索する(ステップS201)。
先行受信要求検索部310による判定の結果、Posted受信要求バッファ361〜364内に受信キーが一致するエントリがある場合は(ステップS202のYes)、ホストインタフェース部170が、分割制御部120中で滞留している受信したメッセージのペイロード部を、プリフェッチバッファ180経由でホスト部20へ送信する(ステップS203)。ここに、メッセージ出力手段および出力手段の機能が実行される。その際、ホストインタフェース部170がホスト部20の主記憶にDMA転送する機能を有するならば、先行受信要求検索部310にあるペイロード部を書き込むべきアドレスやそのデータサイズを用いてペイロード部をDMA転送しても良い。また、DMA転送機能が無い場合には、ホスト部20に割り込みをかけたり、ホスト部20からリードできるステータスフラグを変更するなどしてホスト部20にメッセージ到着を通知し、ホスト部20上のプログラムによってホスト部20の主記憶にペイロード部のコピーを行なうようにしたりしても良い。
一方、一致するエントリがない場合には(ステップS202のNo)、Unexpected受信バッファ前半部161〜164に受信メッセージが格納されるように制御される。すなわち、分割制御部120は、受信したメッセージ、すなわち受信メッセージを前半メッセージと後半メッセージとに分割し(ステップS102)、前半メッセージ(または小受信メッセージ)を第1メモリ制御部140に渡し(ステップS103)、後半メッセージを第2メモリ制御部150に渡す(ステップS104)。
また、ハッシュ値生成部190は、分割された前半メッセージ(または小受信メッセージ)のハッシュ値を生成して第1メモリ制御部140に渡すとともに(ステップS105)、後半メッセージのハッシュ値を生成して第2メモリ制御部150に渡す(ステップS106)。
そして、第1メモリ制御部140は、前半メッセージ(または小受信メッセージ)をハッシュ値に応じて第1メモリ160上のUnexpected受信バッファ前半部161〜164のいずれかに分類して格納する(ステップS107)。
また、第2メモリ制御部150は、後半メッセージをハッシュ値に応じて第2メモリ200上のUnexpected受信バッファ後半部201〜204のいずれかに分類して格納する(ステップS108)。
以上により、通信制御装置100によるメッセージ受信処理が完了する。
このように本実施の形態によれば、受信キーの一致判定により受信を行なう受信手段からの受信関数に係る受信要求情報を、当該受信関数に係る受信メッセージが届くまで、当該受信関数の受信キーから生成されたハッシュ値に応じて、複数の受信バッファの中から一の受信バッファを選択して格納する。このようにして、受信情報を先行受信要求検索部310がアクセスし易いように、受信バッファが分類され、受信バッファ内では受信関数起動順に順序づけられた状態で保持することができる。その結果、受信メッセージが届いた際に、当該受信メッセージが有している受信キーから生成されるハッシュ値に係る受信バッファ内に受信要求情報がある場合、受信キーの一致する受信要求情報(ここに最終的な格納場所が記載されている)を先行受信要求検索部310が検索する時間を短縮することができ、結果として最終的な格納場所に短い時間で受信メッセージを出力することができる、という効果を奏する。
本発明の第1の実施の形態にかかるPCクラスタの構成を示す模式図である。 PCの構成を示すブロック図である。 ホスト部の構成を示すブロック図である。 第1メモリおよび第2メモリのデータ構造を示す模式図である。 従来のメッセージの検索時間を示す説明図である。 メッセージの検索時間を示す説明図である。 メッセージ受信処理を示すフローチャートである。 ホスト部の機能構成を示すブロック図である。 受信メッセージ転送処理を示すフローチャートである。 本発明の第2の実施の形態にかかるPCの構成を示すブロック図である。 メッセージ受信処理を示すフローチャートである。
符号の説明
1 情報処理装置
20 ホスト部、受信手段
100 通信制御装置
120 分割手段
130 変更手段、規則変更手段
140 メッセージ出力手段
160 第1メモリ
161〜164 受信バッファ
170 出力手段、メッセージ出力手段
190 ハッシュ値生成手段、キーハッシュ値生成手段
200 第2メモリ
361〜364 受信バッファ

Claims (14)

  1. 受信メッセージまたは受信関数の引数の全部または一部に相当する受信情報を格納する複数の受信バッファと、
    前記受信メッセージが有している受信キーからハッシュ値生成規則に応じてハッシュ値を生成するハッシュ値生成手段と、
    前記受信情報を、前記ハッシュ値に応じて、前記複数の受信バッファの中から一の前記受信バッファを選択して格納する格納手段と、
    受信関数で指定される受信キーの一致判定により受信を行なう受信手段からの送信要求に応じて、前記受信情報を前記ハッシュ値に係る前記受信バッファから出力する出力手段と、
    を備えることを特徴とする通信制御装置。
  2. 分散メモリ型並列処理におけるメッセージ交換のためのライブラリが取り扱う受信メッセージの全部または一部を格納する複数の受信バッファと、
    前記受信メッセージが有している前記受信キーからハッシュ値生成規則に応じてハッシュ値を生成するハッシュ値生成手段と、
    前記受信メッセージを、当該受信メッセージが有している前記受信キーから生成された前記ハッシュ値に応じて、前記複数の受信バッファの中から一の前記受信バッファを選択して格納するメッセージ格納手段と、
    受信関数で指定される受信キーの一致判定により受信を行なう受信手段からの送信要求に応じて、前記受信関数に応じた前記受信メッセージの一つ以上の候補を、当該受信関数で指定される受信キーから生成される前記ハッシュ値に係る前記受信バッファから出力するメッセージ出力手段と、
    を備えることを特徴とする通信制御装置。
  3. 前記受信メッセージを、当該受信メッセージの所定の位置より前に位置して前記受信キーを含む前半メッセージと、前記前半メッセージに続く後半メッセージとに分割する分割手段を備え、
    前記メッセージ格納手段は、前記後半メッセージが格納される大容量の第2メモリと比較して小容量、かつ、データの転送要求などのリクエストを発してからリクエストの結果が返ってくるまでにかかる遅延時間が短い低遅延な第1メモリが有している前記受信バッファに、前記分割手段により得られた前記前半メッセージを格納する、
    ことを特徴とする請求項2記載の通信制御装置。
  4. 前記各受信バッファは、先に格納された前記メッセージが先に読み出されるように制御される、
    ことを特徴とする請求項2記載の通信制御装置。
  5. 前記ハッシュ値生成手段の前記ハッシュ値生成規則を変更可能とする変更手段を備える、
    ことを特徴とする請求項2記載の通信制御装置。
  6. 前記変更手段は、前記受信メッセージ内に含まれる情報に応じて使用する前記ハッシュ値生成規則を変更可能である、
    ことを特徴とする請求項5に記載の通信制御装置。
  7. 分散メモリ型並列処理におけるメッセージ交換のためのライブラリで用いられる受信関数の引数の全部または一部に相当する受信要求情報を格納する複数の受信バッファと、
    受信メッセージが有している受信キーからハッシュ値生成規則に応じてハッシュ値を生成するハッシュ値生成手段と、
    受信キーの一致判定により受信を行なう受信手段からの前記受信関数に係る受信要求情報を、当該受信関数に係る受信メッセージが届くまで、当該受信関数の前記受信キーから生成された前記ハッシュ値に応じて、前記複数の受信バッファの中から一の前記受信バッファを選択して格納する受信要求格納手段と、
    前記受信メッセージが届いた場合であって、当該受信メッセージが有している前記受信キーから生成される前記ハッシュ値に係る前記受信バッファ内に前記受信要求情報がある場合、前記受信メッセージを出力するメッセージ出力手段と、
    を備えることを特徴とする通信制御装置。
  8. 前記受信要求格納手段が有している前記各受信バッファは、先に格納された前記受信要求情報が先に読み出されるように制御される、
    ことを特徴とする請求項7記載の通信制御装置。
  9. 前記キーハッシュ値生成手段の前記ハッシュ値生成規則を変更可能とする規則変更手段を備える、
    ことを特徴とする請求項7記載の通信制御装置。
  10. 前記規則変更手段は、前記受信メッセージ内に含まれる情報に応じて使用する前記ハッシュ値生成規則を変更可能である、
    ことを特徴とする請求項9に記載の通信制御装置。
  11. 請求項1ないし10のいずれか一に記載の通信制御装置と、
    前記通信制御装置が備えるハッシュ値生成手段で用いられるハッシュ値生成規則を有しており、受信関数で指定される受信キーを入力として得られるハッシュ値に基づいて前記通信制御装置の所望の受信バッファに格納されている受信情報を当該通信制御装置から取得するホスト部と、
    を備えることを特徴とする情報処理装置。
  12. コンピュータを、
    受信メッセージまたは受信関数の引数の全部または一部に相当する受信情報を格納する複数の受信バッファと、
    前記受信メッセージが有している受信キーからハッシュ値生成規則に応じてハッシュ値を生成するハッシュ値生成手段と、
    前記受信情報を、前記ハッシュ値に応じて、前記複数の受信バッファの中から一の前記受信バッファを選択して格納する格納手段と、
    受信関数で指定される受信キーの一致判定により受信を行なう受信手段からの送信要求に応じて、前記受信情報を前記ハッシュ値に係る前記受信バッファから出力する出力手段と、
    として機能させることを特徴とするプログラム。
  13. コンピュータを、
    分散メモリ型並列処理におけるメッセージ交換のためのライブラリが取り扱う受信メッセージの全部または一部を格納する複数の受信バッファと、
    前記受信メッセージが有している前記受信キーからハッシュ値生成規則に応じてハッシュ値を生成するハッシュ値生成手段と、
    前記受信メッセージを、当該受信メッセージが有している前記受信キーから生成された前記ハッシュ値に応じて、前記複数の受信バッファの中から一の前記受信バッファを選択して格納するメッセージ格納手段と、
    受信関数で指定される受信キーの一致判定により受信を行なう受信手段からの送信要求に応じて、前記受信関数に応じた前記受信メッセージの一つ以上の候補を、当該受信関数で指定される受信キーから生成される前記ハッシュ値に係る前記受信バッファから出力するメッセージ出力手段と、
    として機能させることを特徴とするプログラム。
  14. コンピュータを、
    分散メモリ型並列処理におけるメッセージ交換のためのライブラリで用いられる受信関数の引数の全部または一部に相当する受信要求情報を格納する複数の受信バッファと、
    受信メッセージが有している受信キーからハッシュ値生成規則に応じてハッシュ値を生成するハッシュ値生成手段と、
    受信キーの一致判定により受信を行なう受信手段からの前記受信関数に係る受信要求情報を、当該受信関数に係る受信メッセージが届くまで、当該受信関数の前記受信キーから生成された前記ハッシュ値に応じて、前記複数の受信バッファの中から一の前記受信バッファを選択して格納する受信要求格納手段と、
    前記受信メッセージが届いた場合であって、当該受信メッセージが有している前記受信キーから生成される前記ハッシュ値に係る前記受信バッファ内に前記受信要求情報がある場合、前記受信メッセージを出力するメッセージ出力手段と、として機能させることを特徴とするプログラム。
JP2008034464A 2008-02-15 2008-02-15 通信制御装置および情報処理装置 Expired - Fee Related JP4621747B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008034464A JP4621747B2 (ja) 2008-02-15 2008-02-15 通信制御装置および情報処理装置
US12/320,954 US8423689B2 (en) 2008-02-15 2009-02-10 Communication control device, information processing device and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008034464A JP4621747B2 (ja) 2008-02-15 2008-02-15 通信制御装置および情報処理装置

Publications (2)

Publication Number Publication Date
JP2009193430A true JP2009193430A (ja) 2009-08-27
JP4621747B2 JP4621747B2 (ja) 2011-01-26

Family

ID=40956154

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008034464A Expired - Fee Related JP4621747B2 (ja) 2008-02-15 2008-02-15 通信制御装置および情報処理装置

Country Status (2)

Country Link
US (1) US8423689B2 (ja)
JP (1) JP4621747B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9817706B2 (en) 2015-11-30 2017-11-14 Fujitsu Limited Non-transitory computer-readable recording medium having stored therein a communication algorithm determination program, communication algorithm determination method, and information processing device executing a communication algorithm determination program

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8170041B1 (en) * 2005-09-14 2012-05-01 Sandia Corporation Message passing with parallel queue traversal
CN102375862B (zh) * 2010-08-26 2013-03-27 腾讯科技(深圳)有限公司 大数据量消息管理方法和装置
US8949453B2 (en) 2010-11-30 2015-02-03 International Business Machines Corporation Data communications in a parallel active messaging interface of a parallel computer
DE102011009518B4 (de) * 2011-01-26 2013-09-12 Ruprecht-Karls-Universität Heidelberg Schaltungsanordnung für Verbindungsschnittstelle
US8949328B2 (en) 2011-07-13 2015-02-03 International Business Machines Corporation Performing collective operations in a distributed processing system
US8930962B2 (en) * 2012-02-22 2015-01-06 International Business Machines Corporation Processing unexpected messages at a compute node of a parallel computer
KR101351561B1 (ko) * 2013-05-08 2014-01-15 주식회사 아몬드 소프트 빅 데이터 추출 시스템 및 방법
US10019378B1 (en) * 2014-10-09 2018-07-10 Google Llc Addressing recent strings with ring buffer
CN105786845B (zh) * 2014-12-23 2020-03-31 中兴通讯股份有限公司 一种提供网络资产数据的方法及装置
US10652322B2 (en) * 2015-03-09 2020-05-12 International Business Machines Corporation Scalable parallel messaging process
US10701176B1 (en) * 2016-09-23 2020-06-30 Amazon Technologies, Inc. Messaging using a hash ring with host groups
CN110019263B (zh) * 2017-10-18 2021-08-13 北京京东尚科信息技术有限公司 信息存储方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS633351A (ja) * 1986-06-20 1988-01-08 Fujitsu Ltd バツフア検索制御方式
JPH02310649A (ja) * 1989-05-26 1990-12-26 Hitachi Ltd 受信フレーム転送方式および通信制御装置
JPH10293754A (ja) * 1997-04-18 1998-11-04 Hitachi Ltd コンピュータシステム
JP2003218918A (ja) * 2002-01-18 2003-07-31 Hitachi Ltd ラベル・スイッチ・ネットワークの仮想リンクを作成するための方法および装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6631422B1 (en) * 1999-08-26 2003-10-07 International Business Machines Corporation Network adapter utilizing a hashing function for distributing packets to multiple processors for parallel processing
US6757742B1 (en) * 2000-05-25 2004-06-29 Advanced Micro Devices, Inc. Computer-based system for validating hash-based table lookup schemes in a network switch
US7248585B2 (en) * 2001-10-22 2007-07-24 Sun Microsystems, Inc. Method and apparatus for a packet classifier
US6985974B1 (en) * 2002-04-08 2006-01-10 Marvell Semiconductor Israel Ltd. Memory interface controller for a network device
US7293197B2 (en) * 2003-08-13 2007-11-06 Micro Memory Llc Non-volatile memory with network fail-over
JP2006206229A (ja) 2005-01-26 2006-08-10 Toyo Seikan Kaisha Ltd 磁性物品振分け搬送装置
US7710968B2 (en) * 2006-05-11 2010-05-04 Intel Corporation Techniques to generate network protocol units

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS633351A (ja) * 1986-06-20 1988-01-08 Fujitsu Ltd バツフア検索制御方式
JPH02310649A (ja) * 1989-05-26 1990-12-26 Hitachi Ltd 受信フレーム転送方式および通信制御装置
JPH10293754A (ja) * 1997-04-18 1998-11-04 Hitachi Ltd コンピュータシステム
JP2003218918A (ja) * 2002-01-18 2003-07-31 Hitachi Ltd ラベル・スイッチ・ネットワークの仮想リンクを作成するための方法および装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9817706B2 (en) 2015-11-30 2017-11-14 Fujitsu Limited Non-transitory computer-readable recording medium having stored therein a communication algorithm determination program, communication algorithm determination method, and information processing device executing a communication algorithm determination program

Also Published As

Publication number Publication date
US8423689B2 (en) 2013-04-16
JP4621747B2 (ja) 2011-01-26
US20090210586A1 (en) 2009-08-20

Similar Documents

Publication Publication Date Title
JP4621747B2 (ja) 通信制御装置および情報処理装置
EP3057272B1 (en) Technologies for concurrency of cuckoo hashing flow lookup
US9037810B2 (en) Pre-fetching of data packets
EP3433746B1 (en) Contended lock request elision scheme
US20070168377A1 (en) Method and apparatus for classifying Internet Protocol data packets
US9871727B2 (en) Routing lookup method and device and method for constructing B-tree structure
US11245774B2 (en) Cache storage for streaming data
WO2021209051A1 (zh) 片上缓存装置、片上缓存读写方法、计算机可读介质
WO2008037201A1 (fr) Procédé et appareil permettant de résoudre une collision de hachage
US9304939B2 (en) Method and multi-core communication processor for replacing data in system cache
US20160352598A1 (en) Message aggregation, combining and compression for efficient data communications in gpu-based clusters
JPWO2011078108A1 (ja) マルチプロセッサ環境におけるパターンマッチング方法、及び装置
WO2020199760A1 (zh) 数据存储方法、存储器和服务器
JP7155552B2 (ja) 情報処理装置、情報処理システム及び情報処理装置の制御方法
JP6189266B2 (ja) データ処理装置、データ処理方法及びデータ処理プログラム
JP6378044B2 (ja) データ処理装置、データ処理方法およびプログラム
CN116132532A (zh) 一种报文处理方法、装置及电子设备
WO2018006786A1 (zh) 转发表项访问
JP2009301101A (ja) プロセッサ間通信システム、プロセッサ、プロセッサ間通信方法、および、通信方法
EP3588319B1 (en) Memory module
JP4417935B2 (ja) ネットワークを介して外部と通信を行う情報処理装置、情報処理方法および情報処理プログラム
US8959278B2 (en) System and method for scalable movement and replication of data
JP4431492B2 (ja) 複数のコヒーレンシー・グラニュールをサポートするデータ転送ユニット
CN116483739B (zh) 基于hash计算的KV对快速写架构
CN117666921A (zh) 数据处理方法、加速器及计算设备

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100222

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: 20101005

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101101

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees