Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP3623727B2 - Communication method - Google Patents
[go: Go Back, main page]

JP3623727B2 - Communication method - Google Patents

Communication method Download PDF

Info

Publication number
JP3623727B2
JP3623727B2 JP2000271165A JP2000271165A JP3623727B2 JP 3623727 B2 JP3623727 B2 JP 3623727B2 JP 2000271165 A JP2000271165 A JP 2000271165A JP 2000271165 A JP2000271165 A JP 2000271165A JP 3623727 B2 JP3623727 B2 JP 3623727B2
Authority
JP
Japan
Prior art keywords
data
reception
information
network
transmission
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.)
Expired - Fee Related
Application number
JP2000271165A
Other languages
Japanese (ja)
Other versions
JP2001111626A (en
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.)
Hitachi Ltd
Original Assignee
Hitachi 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
Priority claimed from JP22355093A external-priority patent/JP3473975B2/en
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2000271165A priority Critical patent/JP3623727B2/en
Publication of JP2001111626A publication Critical patent/JP2001111626A/en
Application granted granted Critical
Publication of JP3623727B2 publication Critical patent/JP3623727B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)
  • Communication Control (AREA)
  • Multi Processors (AREA)

Description

【0001】
【産業上の利用分野】
計算機システム等の情報処理システムを接続して構成したネットワークにおける、情報通信性能の向上ための技術に関する。
【0002】
特に、仮想メモリを有する計算機システム等の情報処理システムを接続したネットワークにおける、情報通信処理の高速化のための技術に関する。
【0003】
【従来の技術】
従来のネットワークを構成する情報処理システムの構成例を図2に示す。
【0004】
ここでは、ネットワークを構成する情報処理システムの一例として、ネットワーク内計算機200の構成について説明する。
【0005】
ネットワーク内計算機200は、プロセッサ230、メモリ250、ネットワークアダプタ210を有して構成され、各々の構成要素は、システムバス280に接続された構成になっている。
【0006】
ネットワークアダプタ210は、さらに、DMA制御部220、送受信用バッファ221、ネットワーク送受信部218、受信DMA制御情報保持手段211、送信DMA制御情報保持手段212、割込制御情報保持手段213、アダプタ制御情報保持手段214、およびアダプタ制御手段215を備えており、これらは内部バス222によって接続された構成になっている。
【0007】
DMA制御部220は、受信DMA制御情報保持手段211、送信DMA制御情報保持手段212、割込制御情報保持手段213、アダプタ制御情報保持手段214に保持された情報に基づいて、送受信用バッファ221とメモリ250との間のデータ転送の制御を行う手段であり、例えば、TTL、CMOS等の電子デバイスにより実現することができる。
【0008】
送受信用バッファ221は、ネットワーク290を介して送信するパケット、および、ネットワーク290を介して受信したパケットを格納、保持する手段であり、例えば、RAM等によって実現することができる。
【0009】
ネットワーク送受信部218は、ネットワーク290と送受信用バッファ221との間でデータ通信を行わせる手段であり、例えば、各種TTL、CMOS等の電子デバイスによって実現できる。
【0010】
受信DMA制御情報保持手段211は、送受信用バッファ221からメモリ250にデータ転送を行う際に行う制御に関する情報を保持する手段であり、例えば、RAM、各種TTL、各種CMOS等の電子デバイスによって実現できる。
【0011】
送信DMA制御情報保持手段212は、メモリ250から送受信用バッファ221にデータを転送を行う際に行う制御に関する情報を保持する手段であり、例えば、RAM、各種TTL、各種CMOS等の電子デバイスによって実現できる。
【0012】
割込制御情報保持手段213は、送受信用バッファ221とメモリ250との間でのデータ転送処理の終了時、および、ある定められた動作の終了時等に、割込を発行する場合に使用する情報を保持する手段であり、例えば、RAM等の電子デバイスによって実現できる。
【0013】
アダプタ制御情報保持手段214は、ネットワークアダプタ200が動作を行う際に使用する各種の制御情報を保持する手段であり、例えば、RAM、各種TTL、各種CMOS等の電子デバイスによって実現できる。
【0014】
アダプタ制御手段215は、プロセッサ230がネットワークアダプタ200の動作の起動、停止等を行うように制御する手段であり、例えば、RAM、各種TTL、各種CMOS等の電子デバイスによって実現できる。
【0015】
また、ネットワーク送受信部218は、内部に自アドレス保持手段219を備えている。自アドレス保持手段219は、ネットワーク送受信部218が、ネットワーク290を介して通信されるパケットを監視し、該パケットが自計算機宛のパケットか否かを判断するために、自アドレスを保持する手段であり、例えば、RAM、各種TTL、各種CMOS等の電子デバイスによって実現できる。
【0016】
以下、上記のような従来のシステムを使用したデータ通信における受信処理の処理手順について説明する。
【0017】
まず、ネットワークアダプタ210は、ネットワーク290を介して伝送されてくるパケットの転送先が、自計算機であるか否かを判断する。
【0018】
次に、パケットの転送先が、自計算機であると判断した場合、ネットワークアダプタ210は、ネットワークを介して伝送されてくるパケットを、送受信バッファ221内に取り込む。
【0019】
さらに、DMA制御部220は、受信DMA制御情報保持手段211が保持する情報に基づき、DMA処理(「Direct Memory Access」の略:直接、メモリにアクセスして入出力処理を行うことを意味し、以下このように記す)によって、取り込んだパケットを、OS(オペレーティング・システム)空間内に存在する受信パケット領域263に転送する。
【0020】
次に、ネットワークアダプタ210は、DMA処理によるデータ転送処理の終了後に、割込制御情報保持手段213の保持する情報の内容にしたがって、プロセッサ230に割り込みを指示する。
【0021】
割り込みを指示されたプロセッサ230は、OS空間内に存在する受信パケット領域263に存在するパケット内の情報にもとづき、データを転送すべきユーザ空間内に存在するユーザデータ271等を調べ、その後、データをコピーする処理を行うことによって、アプリケーションにデータを引き渡す一連の処理を行う。
【0022】
また、高速通信機構の検討において、平成5年5月の「並列処理シンポジウムJSPP’93」における「メッセージ通信の分散メモリ型並列計算機性能への影響−通信と演算のオーバラップと直接メッセージ受信の効果」の発表において、直接メッセージ通信手段が提案されており、メッセージへッダに、受信アドレスを付加しておくことが考えられるが、この手段では、受信メッセージをユーザ領域に転送可能か否かをを調べる手段、および、送信側で受信メッセージのアドレスを検出する手段が必要である。
【0023】
【発明が解決しようとする課題】
受信側のアドレスを直接指定するためには、送信側にて、受信側のアドレスを知っておくことが必須であるが、これを行うためには、送受信に先だって、別途、所定の通知をおこなう必要がある。従来の方法では、予め通信をおこなうことによってこれを実現するため、通信処理オーバヘッドの削減ができない。
【0024】
すなわち、ハードウエアによる、受信パケットのメモリへの転送処理が完了するまでは、受信パケットのデータの引き渡し先となる、アプリケーションおよびそのデータ領域のアドレスが特定できないのである。
【0025】
このため、受信パケットは、必ず、一度は、OS空間内に存在する受信バッファによって受信されてから、データコピー処理等によって、データを目的のアプリケーションに引き渡す処理が必要となる。
【0026】
かかるデータコピー処理は、データ量に比例して処理量が増加する。現在では、データ通信処理において、前記データコピー処理の占める割合が高いため、高速データ通信処理を行う上での大きな問題となっている。
【0027】
本発明の目的は、計算機システム等の情報処理システムを接続して構成したネットワークにおける、情報通信性能の向上ための技術を提供することにある
【0030】
【課題を解決するための手段】
本発明は、演算処理部と、主記憶部と、ネットワークインタフェースを少なくとも含む計算機を、それぞれのネットワークインタフェースを介して、少なくとも2以上接続して構成されるネットワークを介してデータの通信を行ないながら動作する計算機システムにおける通信方法であって、
データの転送に先立ち、受信側の計算機の主記憶部に受信領域を予め割り当て、ネットワークを介して送信する際に該予め割り当てられた受信領域を指定する識別子を付加し、
受信側計算機に、前記予め割り当てられた受信領域と前記付加された識別子の対応を示す情報を持たせ、ネットワークを介して転送されたデータについて、受信側計算機において、前記受信領域と識別子の対応関係を示す情報を検索して、受信先となる予め割り当てられた受信領域を特定し、当該受信領域にデータの転送を行なうことを特徴とする。
【0031】
すなわち、本発明では、現状の通信 (TCP/IP の動作と同様に、受信側と送信側で使用する、仮想的な回線の識別子を設定し、送信側では、その識別子を指定して送信し、受信側では、その識別子に対応して受信領域のアドレスを設定して、ハードウエアにて、識別子に基づいて受信領域のアドレスへの変換を行い、その後、データ転送を行うことで、余分な通信処理を発生させることなく、直接データを送信したい領域に、データを送るものである。
【0032】
さらに、送信側となる情報処理システムでは、受信側の情報処理システム内での転送先を指示する情報を、分割されるべきデータごとに、ヘッダ部の特定の領域にさらに記述する、ネットワークにおける通信方法も好ましい。
【0033】
【作用】
本発明においては、送受信するパケット内に、パケットを分割するための情報およびパケットが受信されるべき領域を示す情報である受信領域指定情報を備えた構成にする。
【0034】
そして、ネットワークを構成する、受信側の情報処理装置は、パケットを受信した後、パケットを分割するための情報に基づいて、パケットを分割し、情報処理装置が備えるメモリ上に存在する前記受信領域指定情報に対応して、受信領域を指定するために、予め受信側装置に備えられている変換テーブルを参照する。
【0035】
かかる変換テーブルの参照によって、パケット内のデータの受信領域を決定し、当該受信領域に、パケット内のデータを、DMA処理等によって転送する。
【0036】
以上のように、本発明によれば、ネットワークを介して通信を行うアプリケーションプロセス間での通信を、受信側のプロセッサによるデータコピー処理を不要として実現可能な高速なデータ通信機能を有する手段を安価に提供することができる。
【0037】
【実施例】
本発明の実施例について、以下、図面を参照して説明する。
【0038】
図1に、ネットワークを構成する、本発明にかかる情報処理システムの一例である、ネットワーク内計算機の構成例を示す。
【0039】
ネットワーク内計算機100を備えて構成されるネットワーク190は、通常、ネット内計算機100を、少なくとも2台以上備えた構成になっている。
【0040】
以下、ネットワーク内計算機100の構成を説明する。
【0041】
ネットワーク内計算機100は、プロセッサ130と、メモリ150と、ネットワークアダプタ110とを有して構成され、これらの構成要素は、システムバス180を介して接続されている。
【0042】
また、ネットワーク内計算機100のシステムの構成によっては、少なくとも1以上のI/O装置140を設けて構成するのが好ましい。
【0043】
また、上記ネットワークアダプタ110は、マルチキューDMA制御部120と、送受信用バッファ121と、ネットワーク送受信部118と、受信DMA制御情報保持手段111と、送信DMA制御情報保持手段112と、割込制御情報保持手段113と、アダプタ制御情報保持手段114と、アダプタ制御手段115と、受信DMA制御情報選択手段116と、DMA分割情報保持手段117とを有して構成され、各構成要素は、内部バス122を介して接続されている。
【0044】
マルチキューDMA制御部120は、受信DMA制御情報保持手段111、アダプタ制御情報保持手段114、および受信DMA制御情報選択手段116に保持された情報と、ネットワークから受信したパケットに含まれる情報と、メモリ150に保持されている受信領域指定情報選択情報167および受信領域指定情報(164から165)の各情報に基づいて、送受信用バッファ121からメモリ150へのデータ転送処理(受信時の処理)と、また、送信DMA制御情報保持手段112、割込制御情報保持手段113、およびアダプタ制御情報保持手段114に保持された情報と、メモリ150の送信領域指定情報(166)とに基づいて、メモリ150から送受信用バッファ121へのデータ転送処理(送信時の処理)を行う手段であり、例えば、各種TTL、CMOS等の電子デバイスによって実現することができる。
【0045】
送受信用バッファ121は、ネットワーク190を介して送信するパケット、および、ネットワーク190を介して受信したパケットを保持する手段であり、例えば、RAM等の電子デバイスによって実現することができる。
【0046】
ネットワーク送受信部118は、ネットワーク190と送受信用バッファ121との間のデータ通信を行わせる手段であり、例えば、各種TTL、CMOS等の電子デバイスによって実現することができる。
【0047】
受信DMA制御情報保持手段111は、送受信用バッファ121からメモリ150へのデータ転送時に行う制御に関する情報を保持する手段であり、例えば、RAM、各種TTL、CMOS等の電子デバイスによって実現することができる。
【0048】
送信DMA制御情報保持手段112は、メモリ150から送受信用バッファ121へのデータ転送時に行う制御に関する情報を保持する手段であり、例えば、RAM、各種TTL、CMOS等の電子デバイスによって実現することができる。
【0049】
割込制御情報保持手段113は、送受信用バッファ121とメモリ150との間でのデータ転送処理の終了時、および、所定の動作の終了時等に、割込を発行する際に使用する情報を保持する手段であり、例えば、RAM、各種TTL、CMOS等の電子デバイスによって実現することができる。
【0050】
アダプタ制御情報保持手段114は、ネットワークアダプタ110が動作を行う際に使用する、制御情報を保持する手段であり、例えば、RAM、各種TTL、CMOS等の電子デバイスによって実現することができる。
【0051】
アダプタ制御手段115は、送受信パケットをDMA処理により、データ転送制御する際、制御情報等をネットワークアダプタ110に、プロセッサ130によって通知させるための手段であり、例えば、各種TTL、CMOS等の電子デバイスによって実現することができる。
【0052】
ネットワーク送受信部118は、送受信用バッファ121の内容を、ネットワーク190に出力する送信処理と、ネットワーク190上の通信パケットを監視し、自アドレスを含むパケットを、送受信用バッファ121に取り込む処理(かかる処理は、次に示す自アドレス保持手段119によって行われる)を行う手段であり、例えば、各種TTL、CMOS等の電子デバイスによって実現することができる。また、ネットワーク送受信部118に備えられた、自アドレス保持手段119は、例えば、RAM等の電子デバイスによって実現できる。
【0053】
また、送受信用バッファ121は、例えば、RAM等の電子デバイスによって実現できる。なお、プロセッサ130は、例えば、CPU(中央処理装置)によって実現可能であり、メモリ150は、例えばRAMによって実現可能である。
【0054】
次に、メモリ150に格納されるデータの構造について説明する。
【0055】
メモリ150に格納されるデータの構造は、受信処理に関連するデータ構造と、送信処理に関連するデータ構造を考慮している。
【0056】
受信処理に関連するデータ構造としては、受信領域指定情報選択情報167、受信領域指定情報(164から165)、受信プロトコル情報(161から162)、ユーザデータ(171から172)がある。
【0057】
ユーザデータ(171から172)は、受信側がデータを受信する領域として確保した領域に格納された情報である。
【0058】
受信プロトコル情報(161から162)は、通信の際に必要なプロトコル情報を転送するための領域に格納された情報である。
【0059】
通信の際に必要なプロトコル情報とは、例えば、受信すべきプロセスを特定するための情報等である。
【0060】
受信領域指定情報(164から165)は、(受信の際に)パケットを転送する際の制御情報であり、例えば、ユーザデータ(171から172)、受信プロトコル情報(161から162)のアドレス情報等である。受信領域指定情報(164から165)では、複数のユーザデータを指し示す情報を保持してもよい。
【0061】
図1のメモリ150内に存在する、受信領域指定情報選択情報167は、後で示す、ネットワークパケットの受信領域指定情報312−bが示す情報にもとづいて、複数存在する受信領域指定情報(164から165)のいずれかを選択するための情報を保持し、そのデータ構造は、テーブル状になっている。
【0062】
送信処理に関連するデータは、例えば、送信領域指定情報(166)については、送信プロトコル情報(163)、ユーザデータ(173)等である。
【0063】
ユーザデータ(173)は、送信側が送信するデータ領域に格納されたデータである。送信プロトコル情報(163)は、通信の際に必要なプロトコル情報を転送するための領域に格納された情報である。通信の際に必要なプロトコル情報とは、例えば、受信先のプロセスを特定するための情報等である。
【0064】
送信領域指定情報(166)は、(送信の際)パケットを転送する際に必要な制御情報であり、例えば、ユーザデータ(173)、送信プロトコル情報(163)のアドレス情報およびサイズ情報である。送信領域指定情報(166)は、複数のユーザデータを指し示す情報を保持してもよい。
【0065】
受信領域指定情報(164から165)は、受信プロトコル情報(161から162)およびユーザデータ(171から172)の転送先領域を指定する情報であり、例えば、メモリ150内におけるアドレス、データサイズ等を有する。
【0066】
送信領域指定情報166は、送信プロトコル情報163、および、ユーザデータ173を指定する情報であり、例えば、メモリ150内におけるアドレス、データサイズ等を有する。
【0067】
ここで、送信プロトコル情報163、ユーザデータ173は、受信処理側と同様に、複数備えておくのも良い。
【0068】
本実施例においては、ユーザデータ(171から172)、ユーザデータ(173)は、メモリ150内のユーザ空間170に存在する。一方、受信領域指定情報選択情報167、受信プロトコル情報(161から162)、受信領域指定情報(164から165)、送信領域指定情報(166)、および、送信プロトコル情報163は、OS空間160内に存在する。
【0069】
次に、図3を参照して、ネットワーク上で送受信されるパケットである、ネットワークパケットの構成を示す。
【0070】
従来のネットワークパケットは、例えば、データ310−a、タイプ320−a、送信元アドレス321−a、受信先アドレス322−aを有して構成されていた。
【0071】
データ310−aは、OS、ソフトウエアが処理する対象となる情報である。
【0072】
タイプ320−aは、ネットワークアダプタ110が所定の処理を行うために必要な情報であり、例えば、データ全体の長さ等の情報である。
【0073】
送信元アドレス321−aは、パケットを送出したネットワーク内計算機を識別するための識別子である。さらに、受信先アドレス322−aは、パケットを受信すべきネットワーク内計算機を識別するための識別子である。
【0074】
本発明にかかるネットワークパケットは、データ310−b、分割情報311−b、受信領域指定情報312−b、タイプ320−b、送信元アドレス321−b、受信先アドレス322−bを有して構成される。
【0075】
データ310−b、タイプ320−b、送信元アドレス321−b、受信先アドレス322−bは、それぞれ、データ310−a、タイプ320−a、送信元アドレス321−a、受信先アドレス322−aに対応している。
【0076】
ここで、データ310−bの部分は、受信側としては、上記の受信プロトコル情報(161から162)から、受信領域指定情報312−b、タイプ320−b、送信元アドレス321−b、受信先アドレス322−bに相当する情報を除いた情報と、ユーザデータ(171から172)とを有して構成される情報である。
【0077】
または、データ310−bの部分は、送信側としては、上記の送信プロトコル情報(163)から、受信領域指定情報312−b、タイプ320−b、送信元アドレス321−b、受信先アドレス322−bに相当する情報を除いた情報と、ユーザデータ(173)とを有して構成される情報である。
【0078】
分割情報311−bは、例えば、パケットの分割数および分割する際の長さを示す情報である。また、ここで、分割情報は、3つ以上に分割するための情報を含んでもよいことは言うまでもない。また、パケットを分割した場合、分割された部分の、どの分割部分が、受信プロトコル情報(161から162)、送信プロトコル情報(163)に相当する部分で、どの分割部分が、ユーザデータ(171から173)に相当する部分であるかを示す情報を備えていてもよい。また3つ以上に、パケットを分割する場合には、分割された部分の、どの分割部分が、ユーザデータの、どの部分に対応するかを示す情報を備えておくのも好ましい。
【0079】
受信領域指定情報312−bは、パケットデータをメモリ150に転送する際に、そのデータの転送先を示す受信領域指定情報を選択するための情報である。
【0080】
以下、パケットの送信処理および受信処理の概要を示す。
【0081】
パケットの送信処理は、ユーザデータA173と、送信プロトコル情報163とを用いて、図3参照の本発明にかかるネットワークパケットを作成して、ネットワークにパケットを出力する処理である。
【0082】
以下、送信時のソフトウエア処理、ネットワークアダプタ110の動作を説明する。
【0083】
まず、パケット送信処理時に行われるソフトウエアによる処理を、図4を参照して説明する。
【0084】
ユーザデータA173には、送信対象となるユーザデータが保持されている。
【0085】
まず、ステップ410に示すように、送信プロトコル情報163には、受信領域指定情報312−b、タイプ320−b、送信元アドレス321−b、受信先アドレス322−bを設定する。
【0086】
ここで、前述のように、受信領域指定情報312−bは、受信側での受信領域を指定するための識別子である。タイプ320−bは、例えば、上位のプロトコルの種類等を示す情報である。送信元アドレス321−bは、自計算機のネットワークにおける識別子であり、受信先アドレス322−bは、受信先の計算機のネットワークにおける識別子である。
【0087】
次に、ステップ420に示すように、送信領域指定情報166に、ユーザデータA173、送信プロトコル情報領域163を指定する情報を設定する。
【0088】
設定する情報としては、例えば、メモリ170内におけるアドレス、データ長等である。ここで、送信領域指定情報166に設定する情報の中で、データ長および領域指定の数を、分割情報311−bとして、ネットワークパケットを構成する。
【0089】
次に、ステップ430に示すように、送信領域指定情報166の情報を、送信DMA制御情報保持手段112に設定する。
【0090】
送信DMA制御情報保持手段112に設定する情報は、メモリ170内における、当該領域のアドレス等である。
【0091】
最後に、ステップ440に示すように、アダプタ制御手段115に対して、動作の起動通知を行う。上記の一連の処理により送信処理が完了する。
【0092】
次に、送信処理の際のネットワークアダプタ110の動作を、図4を参照して説明する。アダプタ制御手段115に対する動作起動の通知によって、当該手段が動作を開始した以降の動作について説明する。
【0093】
まず、ステップ510に示すように、マルチキューDMA制御部120は、送信DMA制御情報保持手段112に保持されている情報に基づいて、送信領域指定情報166の内容を読み出して、その内容を、DMA分割情報保持手段117に設定する。
【0094】
次に、ステップ520に示すように、マルチキューDMA制御部120は、DMA分割情報保持手段117に保持されている、送信領域指定情報166の内容にしたがって、ユーザデータA173、送信プロトコル情報163に保持されている情報を、送受信用バッファ121に読み込む処理を行う。
【0095】
次に、ステップ530に示すように、マルチキューDMA制御部120は、DMA分割情報保持手段117に保持されている送信領域指定情報166の内容から、データ長、領域指定の数を、「分割情報311−b」として利用するために取り出す。
【0096】
次に、ステップ540に示すように、マルチキューDMA制御部120は、ユーザデータA173と、送信プロトコル情報163に保持されている受信領域指定情報312−b、タイプ320−b、送信元アドレス321−b、受信先アドレス322−b以外の情報とから、データ310−bを構成し、さらに、送信プロトコル情報163に保持されている受信領域指定情報312−b、タイプ320−b、送信元アドレス321−b、受信先アドレス322−bを用いて、本発明にかかるネットワークパケットを送受信用バッファ121内に作成、格納する。
【0097】
最後に、ステップ550に示すように、内部バス122を介して、ネットワーク送受信部118から、作成したネットワークパケットを出力する。
【0098】
さて、次に、パケットの受信処理について示す。
【0099】
受信処理は、ネットワーク190から取り込んだネットワークパケットを用いて、ハードウエア処理によって、パケットが備えるデータ部分のみを、ユーザ空間内に存在する所定のユーザデータ格納領域に、直接転送することで、パケットデータのデータコピー処理を行わずに、アプリケーションプログラムにデータを引き渡すことを可能にするものである。
【0100】
以下、受信処理の内容について説明する。
【0101】
ところで、受信処理には、大きく分けて、ソフトウエアがデータの到着に先だって行う処理である受信ソフト前処理と、データ到着時にネットワークアダプタ110が行う処理と、ソフトウエアによる、データが到着した後に行う処理である受信ソフト後処理がある。
【0102】
まず、受信ソフト前処理について示す。
【0103】
受信ソフト前処理は、受信領域指定情報選択情報167、受信領域指定情報(164から165)に、情報を設定し、かかる設定処理をネットワークアダプタ110に通知する処理である。
【0104】
まず、ステップ610に示すように、割込制御情報保持手段113に、データ受信終了時にプロセッサ130に発行する、割込に関する割込情報を設定する。
【0105】
次に、ステップ620に示すように、受信領域指定情報選択情報167内に、ネットワークパケット内の受信領域指定情報312−bと、受信領域指定情報(164から165)とをどのように対応させるかを決定し設定する処理を行う。
【0106】
例えば、受信領域指定情報選択情報167は、受信領域指定情報312−bに基づいて、受信領域指定情報の有するアドレスを読み出すことができる、テーブル状のデータ構造を有する構成を採用すれば良い。
【0107】
次に、ステップ630に示すように、受信領域指定情報(164から165)に、ユーザデータ(171から172)および受信プロトコル情報(161から162)が有する情報を設定する。この情報は、例えば、ユーザデータ(171から172)および受信プロトコル情報(161から162)のアドレスと、データサイズ等である。
【0108】
最後に、ステップ640に示すように、受信DMA制御情報保持手段111に、受信領域指定情報選択情報167が示す情報を設定する。
【0109】
次に、ネットワークパケットを取り込んでから、データを受信するまでのネットワークアダプタ110の動作について説明する。
【0110】
まず、ステップ710に示すように、ネットワークアダプタ110内のネットワーク送受信部118は、ネットワーク190を監視して、ネットワーク190上を通信されるネットワークパケットを取り込む。
【0111】
次に、ステップ720に示すように、ネットワークパケットの受信先アドレス322−bの内容が、自アドレス保持手段119に予め保持されている内容と等しい場合には、ステップ740にブランチし、等しくない場合には、ステップ730にブランチする。
【0112】
ステップ730では、取り込んだネットワークパケットを棄却して処理を終了する。
【0113】
一方、ステップ740では、ネットワークパケットを送受信用バッファ121に取り込む。
【0114】
次に、ステップ750に示すように、マルチキューDMA制御部120は、ネットワークパケット内の受信領域指定情報312−bの内容を、受信DMA制御情報選択手段116に設定する。
【0115】
次に、ステップ760に示すように、マルチキューDMA制御部120は、受信DMA制御情報保持手段111の内容と、受信DMA制御情報選択手段116の内容とから、複数存在する受信領域指定情報(164から165)のいずれかを選択する処理を行う。
【0116】
すなわち、これは、受信領域指定情報312−bの内容にしたがって、受信領域指定情報選択情報167のテーブルを参照することで、受信領域指定情報(164から165)のうちの一つを特定する処理である。
【0117】
次に、ステップ770に示すように、マルチキューDMA制御部120は、選択した受信領域指定情報(164から165)から、アドレス情報を取得する。
【0118】
次に、ステップ780に示すように、マルチキューDMA制御部120は、送受信用バッファ121に取り込んだネットワークパケットを用いて、分割情報311−bを取得する。
【0119】
次に、ステップ785に示すように、マルチキューDMA制御部120は、分割情報311−bに基づき、送受信用バッファ121に取り込んだネットワークパケットのデータ部を分割する処理を行う。
【0120】
すなわち、分割情報に保持されている分割数、分割長の情報と、パケットデータの分割部分のうち、どの分割部分が、受信プロトコル情報(161から162)に相当する部分で、どの分割部分がユーザデータ(171から172)に相当する部分であるかを示す情報とから、ネットワークパケットのデータ310−bを、受信プロトコル情報と、ユーザデータとに分割する処理を行う。
【0121】
次に、ステップ790に示すように、ステップ770にて特定された受信領域指定情報の情報(例えば、メモリ150内のアドレス値)に基づいて、分割したパケットを、ユーザデータおよび受信プロトコル情報に分離して、各々の転送先領域に転送する。
【0122】
最後に、ステップ795に示すように、割込制御情報保持手段113の内容にしたがって、プロセッサ130に対して割込を発行する。
【0123】
さて、次に、データ到着後に行う受信ソフト後処理について説明する。
【0124】
受信ソフト後処理は、ネットワークパケットが、ハードウエアによってユーザデータおよび受信プロトコル情報に分割して転送された後に、発行した割込によって起動される。
【0125】
まず、ステップ810に示すように、割込が発行されると、プロセッサ130は、受信プロトコル制御情報が有する情報にしたがって、データを受信したアプリケーションを特定する。
【0126】
次に、ステップ820に示すように、データを受信したアプリケーションが、データ受信要求を発行後、待ち状態となっていた場合には、ステップ830にブランチし、そうでない場合には、ステップ840にブランチする。
【0127】
ステップ830では、受信要求をしてブロックされていたアプリケーションの起動を行う。一方、ステップ840では、データを受信したアプリケーションがデータ受信要求を発行後に、待ち状態となっていない場合には、受信要求が発行されたときに、即座にデータを引き渡せるように、状態を通知するためのフラグの設定を行う。かかる場合には、受信アプリケーションから受信要求が発行されたときにデータの引き渡し処理を行う。
【0128】
次に、上記受信処理の動作を明確にするために、受信要求を発行したアプリケーションプログラムからみた動作を、図9を参照して説明する。
【0129】
まず、ステップ910に示すように、受信バッファの割り当て処理を行う。これは、図6にて説明した処理の起動を行うものである。
【0130】
次に、ステップ920に示すように、受信要求を発行する。受信要求の発行処理は、ステップ910の受信バッファ割り当て処理が先行して行われることが必要条件であるが、受信バッファ割り当て処理の直後に、受信要求を出すことは必要条件ではない。
【0131】
ここでは、最も単純に受信処理の流れを説明するために、受信関連処理のみの記述にとどめるが、ステップ910とステップ920との間に、所定の処理が存在してもかまわない。
【0132】
次に、ステップ930にしたがって、受信データの到着が受信要求に先行していれば、ステップ960にブランチし、そうでなれけば、ステップ940にブランチする。
【0133】
ステップ960では、図8にて説明した、データ到着を示すフラグが設定されているので、データを受け取るのみでよい。
【0134】
ステップ950では、まだデータが到着していないので、図8にて説明した受信要求プロセスの起動まで待ち状態に入る。かかる状態からの復帰処理は、図8にて説明した方法にて行われる。
【0135】
以下、さらに詳細に本発明にかかる実施例について図面を参照して説明する。
【0136】
図10に、ネットワークシステムを構成する、本発明にかかる情報処理装置の一例である、ネットワーク内計算機ノード1101(複数存在する計算機の一つずつを、以下「ノード」と称する)の構成例を示す。
【0137】
ネットワーク内計算機ノード1101を有して構成されるネットワークは、図10に示す計算機ノード1101を、ネットワーク1105に少なくとも2台以上接続して構成する。
【0138】
ネットワーク1105は、パケット等の情報を伝送するための手段であり、例えば、電気ケーブル、光ファイバ等を使用して構成すれば良い。
【0139】
以下、ネットワークを構成する情報処理装置の一例である、ネットワーク内計算機ノード1101の構成について、図面を参照して説明する。
【0140】
本実施例におけるネットワーク内計算機ノード1101は、プロセッサ1102、メモリ1103、ネットワークアダプタ1110を有して構成され、各構成要素は、システムバス1104を介して接続されている。
【0141】
また、前記ネットワークアダプタ1110は、マルチキューDMA制御部1111、受信用バッファ1112、送信用バッファ1113、ネットワーク受信部1114、およびネットワーク送信部1115を備えた構成としている。
【0142】
なお、計算機ノード1101は、システムの構成によっては、少なくとも1以上のI/O装置(図示せず)を備える構成にするのが好ましい。
【0143】
マルチキューDMA制御部1111および、ネットワーク送信部1115、ネットワーク受信部1114は、例えば、各種TTL、CMOS等の電子デバイスによって実現することができる。
【0144】
また、送信用バッファ113、受信用バッファ112は、例えば、RAM等の電子デバイスによって実現できる。さらに、プロセッサ1102は、例えばCPUによって、メモリ1103は、例えば、RAM等の電子デバイスによって実現できる。
【0145】
さて、図11に、前記マルチキューDMA制御部の構成例を示す。
【0146】
マルチキューDMA制御部は、マルチキュー制御レジスタ群1201とDMA制御部1202とを有して構成されており、本マルチキューDMA制御部は、システムバス、受信用バッファ、および送信用バッファに接続されている。
【0147】
マルチキュー制御レジスタ群1201は、ADP_COMMAND1211、ADP_STATUS1212、SEND_Q_ADR1221、SEND_Q_LEN1222、SEND_Q_HEAD1223、SEND_Q_TAIL1224、RECV_Q_TBL_ADR1231、RECV_Q_TBL_LEN1232、RECV_PORT_NO1233、RECV_Q_ADR1241、RECV_Q_LEN1242、RECV_Q_HEAD1243、RECV_Q_TAIL1244の各レジスタを有して構成される。
【0148】
なお、マルチキュー制御レジスタ群1201は、例えば、各種TTL、CMOS、RAM等の電子デバイスによって実現できる。
【0149】
DMA制御部1202は、DMA処理により、データ転送処理を行う機能を有するハードワイアードロジックであり、例えば、各種TTL、CMOS等にて実現される。
【0150】
ADP_COMMAND1211は、ネットワークアダプタを制御するためのコマンドを格納するためのレジスタであり、ADP_STATUS1212は、ネットワークアダプタを制御するためのステータス情報を保持するためのレジスタである。
【0151】
SEND_Q_ADR1221、SEND_Q_LEN1222、SEND_Q_HEAD1223、SEND_Q_TAIL1224は、送信用コマンドを処理するための、リスト構造(以下、これを「コマンドキュー」と称する)を有する各種パラメータの格納部であり、後に図15を参照して説明する。
【0152】
RECV_Q_TBL_ADR1231は、コマンドキュー選択テーブルのアドレスを示すポインタ、RECV_Q_TBL_LEN1232は、コマンドキュー選択テーブルのサイズを示し、さらに、RECV_PORT_NO1233は、受信したパケットのヘッダ内に存在するDMA_PORT_NOを一時的に保存するためのレジスタである。
【0153】
なお、コマンドキュー選択テーブルについては、図13および図14を参照して説明する。また、「DMA_PORT_NO」については、図12を参照して説明する。
【0154】
RECV_Q_ADR1241、RECV_Q_LEN1242、RECV_Q_HEAD1243、RECV_Q_TAIL1244は、受信用コマンドキュー用のパラメータの格納部であり、後に図15を参照して説明する。
【0155】
次に、図12に、ネットワークを介して通信されるパケットのデータフォーマットを示す。
【0156】
パケットデータは、DATA_LENGTH1301、HEADER_LENGTH1302、DMA_PORT_NO1303、SRC_NODE_NO1304、DST_NODE_NO1305、MODE1306、およびSOFT_HEADER1311とを備えて構成されるハードヘッダ部1300と、SOFT_DATA1312を備えるパケットデータ部1310を有して構成される。
【0157】
ハードヘッダ部1300を構成する各要素のデータ長は、固定長であることが好ましい。
【0158】
DATA_LENGTH1301は、1301、1302、1303、1304、1305、1306、1311、1312から構成されるデータの長さを示す情報が格納されている。
【0159】
HEADER_LENGTH1302は、パケット内のデータを複数に分割し、DMA処理により記憶領域に転送する際のデータの長さを示し、この長さは、1301、1302、1303、1304、1305、1306、1311から構成されるデータの長さである。
【0160】
すなわち、HEADER_LENGTH1302は、ハードヘッダ部の長さを示す情報である。
【0161】
DMA_PORT_NO1303は、受信側の計算機ノードが備える主記憶(もちろん、主記憶には限られない)に、DMA処理によってデータを転送する際のコマンドキューを選択するための、コマンドキュー選択テーブル1401の選択処理を行うためのパラメータである。
【0162】
前にも述べたとおり、コマンドキュー選択テーブル1401については、後述する。
【0163】
SRC_NODE_NO1304は、ネットワークを介してデータを送信する送信側の計算機ノードを識別するための情報であり、予め計算機ノードに付加されたアドレス番号等を使用すればよい。また、DST_NODE_NO1305は、ネットワークを介してデータを受信する受信側の計算機ノードを識別するための情報であり、予め計算機ノードに付加されたアドレス番号等を使用すればよい。
【0164】
図10に示すネットワーク受信部1114は、例えば、パケットが備えるDST_NODE_NO1305の内容が、予め設定された自計算機ノードに割当てられたアドレス番号と一致したときに、パケットの取り込み処理を行うように構成しておけば良い。
【0165】
MODE1306は、DMA処理を実行する際のコマンドを決定するためのパラメータであり、その使用法については、後に説明する処理フローの説明の際に述べる。
【0166】
また、SOFT_HEADER1311は、プロトコル処理を行うソフトウエアが使用するための情報であり、SOFT_DATA1312は、ネットワークを介して、例えば、アプリケーション間で送受信されるデータそのものである。
【0167】
次に、図13に、受信されたデータをDMA処理するためのデータ構造の一例を示す。これは、図10のメモリ1103の内に格納すればよい。
【0168】
メモリ内の受信DMA処理用データ構造は、コマンドキュー選択テーブル1401と、ポート別コマンドキュー群1410とを有して構成される。
【0169】
コマンドキュー選択テーブルの各エントリ1401−1、1401−2、…、1401−Nは、ポート別コマンドキュー1410−1、1410−2、…、1410−Nに対応して、情報(以下で述べる、図14に示すような情報)を保持している。
【0170】
図14に、コマンドキュー選択テーブル1401の構成を示す。これは、メモリ1103内に格納しておけば良い。
【0171】
テーブルの先頭アドレスは、図11にて示した、マルチキュー制御レジスタ群1201を構成するRECV_Q_TBL_ADR1231で指示され、テーブルのエントリ数は、マルチキュー制御レジスタ群1201を構成するRECV_Q_TBL_LEN1232にて示される。
【0172】
図14に示す、各エントリ1401−1、1401−2、…、1401−Nは、「Q_ADR_M,Q_HEAD_M,Q_TAIL_M,Q_LEN_M」(ただしM=1〜N:Nは、正の整数)の4つのパラメータを有して構成されており、これらは、各コマンドキューを制御するための情報である。
【0173】
これら各々のパラメータにより、所定の制御を行う方法については、図15にて示す。
【0174】
次に、図15に、コマンドキューの構成例を示す。これは、図10のメモリ1103内に格納されている。
【0175】
なお、コマンドキューの構成は、基本的に、送信側、受信側のいずれも同様の構成である。
【0176】
Q_ADR,Q_HEAD,Q_TAIL,Q_LENは、送信側については、図11にて示した、SEND_Q_ADR221、SEND_Q_LEN222、SEND_Q_HEAD223、SEND_Q_TAIL224に、一対一に対応しており、同様に、受信側については、図11に示した、RECV_Q_ADR241、RECV_Q_LEN242、RECV_Q_HEAD243、RECV_Q_TAIL244に、一対一に対応している。
【0177】
以下、各々について説明する。
【0178】
Q_ADR,Q_HEAD,Q_TAIL,Q_LENは、コマンドキューを管理するための情報である。
【0179】
Q_ADRは、コマンドキューの先頭のアドレスを示すポインタであり、Q_HEADは、次回のDMA処理を行うためのコマンドを示すポインタであり、Q_TAILは、ソフトウエアによって現在設定されている最後のコマンドを示すためのポインタである。
【0180】
コマンドキューは、キューの最後尾に、キューの先頭がつながっており、論理的なリング構造を有している。
【0181】
Q_LENは、コマンドキューの最後を認識し、先頭に折り返す処理をするために、必要なコマンドキューの長さ情報を保持する変数である。
【0182】
次に、コマンドキュー内部に備えられたコマンドについて説明する。
【0183】
各コマンド単位は、COMMAND1601、HEADER_POINTER1602、HEADER_LENGTH1603、DATA_POINTER1604、DATA_LENGTH1605、RESULT_STATUS1606を有して構成される。
【0184】
COMMAND1601のフィールドは、このコマンドによるDMA処理が終了した際に、割り込み命令を発行するか否か等の情報を保持するフィールドである。
【0185】
HEADER_POINTER1602のフィールドは、ハードヘッダ1610を保存している領域の物理アドレスを保持するフィールドである。
【0186】
HEADER_LENGTH1603のフィールドは、ハードヘッダ1610のデータ長を示す情報を保持するフィールドである。
【0187】
なお、ハードヘッダ1610は、DATA_LENGTH1301、HEADER_LENGTH1302、DMA_PORT_NO1303、SRC_NODE_NO1304、DST_NODE_NO1305、MODE1306、SOFT_HEADER1311を有して構成される。
【0188】
DATA_POINTER1604およびDATA_LENGTH1605は、それぞれ、パケット内のソフトデータ領域の物理アドレス(DATA_POINTER1604)、および、長さ(DATA_LENGTH1605)を示す。
【0189】
受信用のコマンドキューでは、HEADER_LENGTH1603およびDATA_LENGTH1605は、ヘッダ部分およびデータ部分に対応して、受信用に確保した記憶領域のサイズを示す。
【0190】
コマンドに、パケット単位ごとに、HEADER_POINTER1602およびDATA_POINTER1604に、物理アドレスを設定する領域を持ち、受信時に、このアドレスに対応してデータ転送を行うことで、以下に示すように、仮想アドレスを使用している場合に、仮想アドレスでの連続領域が、物理アドレスでは非連続領域となる、データの転送処理を行うことが可能となる。
【0191】
送受信対象となるデータ領域に対応する物理アドレスの取得は、OSによって行われる。最も単純な場合は、アプリケーションが物理アドレスに基づいて動作している場合であり、かかる場合には、OSは該アプリケーションのデータ領域の物理アドレスを、上位物理アドレスを設定すべきDATA_POINTER1604に設定すればよい。
【0192】
次に、OSが仮想メモリ管理を行うシステム例を示す。
【0193】
メモリ1103は、OSおよびアプリケーションによって使用されており、仮想メモリ管理下のプログラム(通常のアプリケーションプログラム)は、仮想メモリによるアドレスを、アドレス変換を行うための「プロセスページテーブル」に設定された情報にて物理アドレスに変換して、メモリアクセスを行う。
【0194】
この仮想メモリアドレスと物理アドレスの変換のためのテーブルが、図16に示すプロセスページテーブルである。
【0195】
以下、OSによって行われるアプリケーションのデータ領域の論理アドレスから、物理アドレスを取得する処理を、図16に示すプロセスページテーブルを使用して説明する。
【0196】
これは、図10のメモリ1103上に割り付けられた物理アドレスの替わりに、仮想アドレスを使用するための変換テーブルである。
【0197】
具体的には、図16に示すように、プロセスページテーブルは、プロセスの仮想ページに対応する物理ページを示すテーブルになっている。
【0198】
ここで「ページ」とは、OSがメモリ管理を行う基本単位である。ページのサイズは、2のべき乗で表現され、現在のOSでは、2048,4096,8192(バイト等)等のサイズを採用しているものが多い。
【0199】
物理アドレスと仮想アドレスは、前述のページ番号に、ページ内のオフセット値を加えた値となる。なお、物理アドレスと仮想アドレスにおいては、ページ内のオフセット値は同一の値である。
【0200】
物理アドレスを設定する際には、このテーブルを参照することにより、論理アドレスに対応する物理アドレスへの対応をとることができる。
【0201】
例えば、あるアプリケーションのデータ領域が論理ページ「M、M+1」であり、2領域にまたがって存在するデータを受信する場合には、各々の物理ページ番号200、物理ページ番号358をページサイズ倍して、ページ内のオフセット値を加えることにより物理アドレスを算出して、これをコマンドキューの連続する2つのコマンドのDATA−POINTER1604に設定すれば良い。このような処理によって、非連続的に存在する物理アドレス領域から、連続的に存在する仮想アドレス領域に、連続的にデータを転送することができるようになる。
【0202】
次に、仮想空間アドレスと物理空間アドレスとコマンドキューとの関連を、図18を参照して説明する。
【0203】
図18に示す仮想メモリ空間の一部に、アプリケーションの空間が存在する。
【0204】
アプリケーション空間内に存在するデータバッファ1910は、データA1901、データB1902、データC1903、およびデータD1904とを有して構成される。
【0205】
今、データA1901内の「3」は、仮想空間内のページ番号であり、図18に示すように、領域A1921に対応し、物理空間内でページ番号「52」に対応する。
【0206】
かかる対応は、図16にて説明したプロセステーブルに設定されている情報であるので、プロセステーブルを参照することで、仮想空間内の「3」ページが、物理空間内のページ番号「52」に対応していることにより判断される。
【0207】
以下、データB1902は、仮想空間内のページ番号「4」を有し、領域C1923に対応し、物理空間内でページ番号「73」を有する。
【0208】
また、データC1903は、仮想空間内のページ番号「5」を有し、領域B1922に対応し、物理空間内でページ番号「60」を有する。
【0209】
最後に、データD1904は、仮想空間内のページ番号「6」を有し、領域D1924に対応し、物理空間内でページ番号「81」を有する。
【0210】
したがって、アプリケーション空間のデータバッファ1910内に存在するデータA1901、データB1902、データC1903、データD1904にデータを受信する際には、コマンドキュー1930内のコマンドに対して設定する、物理アドレスを決定するための物理ページは、コマンドA1931には、物理空間内のページ番号「52」を使用する。また、コマンドB1932には、物理空間内のページ番号「73」を使用する。さらに、コマンドC1933には、物理空間内のページ番号「60」を使用する。最後に、コマンドD1934には、物理空間内のページ番号「81」を使用するようにする。上述のようにして、コマンドキューに設定する物理アドレスを算出すればよい。
【0211】
上記のように、コマンドキューのネットワークパケットに対応して各エントリを備え、各エントリごとに物理アドレスを設定する領域を保持する構成にすることにより、非連続的に存在する物理アドレス領域から、連続的に存在する仮想アドレス領域に、連続的にデータを受信することができるようになる。
【0212】
次に、本発明にかかる一連の処理を、初期化処理、受信側処理、送出側処理の順に説明をする。
【0213】
最初に、図20を参照して、初期化処理の動作を説明する。
【0214】
まず、ステップ2110において、コマンドキュー選択テーブル1401を作成し、メモリ1103内に格納しておく。
【0215】
次に、ステップ2120において、コマンドキューを作成し、メモリ1103内に格納しておく。
【0216】
続いて、ステップ2130において、ステップ2110において作成したコマンドキュー選択テーブル1401の管理情報を、ネットワークアダプタ1110が備えるマルチキュー制御レジスタ群201内のRECV_Q_TBL_ADDR1231、RECV_Q_TBL_LEN1232に設定する。
【0217】
その後、ステップ2140において、ネットワークアダプタ1110が備えるマルチキュー制御レジスタ群1201内のADP_COMMAND1211に、起動コマンドを設定する。
【0218】
次に、ステップ2150において、アプリケーション間で使用するポートを通信処理に先立って決定する処理を行なう。
【0219】
初めは、通信相手が特定できないので、初期化通信時には、例えば、ポート番号は、「1」を使用することにしておき、また、使用できる最大のエントリ数を、初期化時に静的に設定しておく。
【0220】
初期化通信方式としては、カーネル内のプロトコル処理を行うソフトウエア間での通信を、通常のメッセージパッシングと同様の方式で行えばよい。
【0221】
なお、通信に使用するバッファは、カーネル内のプロトコルサーバ用のバッファである。
【0222】
上述の初期化処理により、プロトコル処理を行うソフトウエアは、通常のメッセージ通信(TCP/IP等)と同様の通信が可能となる。
【0223】
次に、アプリケーション間で使用するポートを通信処理に先立って決定する処理として、送出側および受信側システムのポート番号の割り当て処理を行う。
【0224】
まず、ポート割り当てを行う処理を、以下に示す。
【0225】
ネットワーク内計算機を複数接続して構成されたネットワークにおいて、各計算機に対して、ポート番号が、静的に割り当てられているものとする。
【0226】
すなわち、計算機1と計算機2の間の通信では、例えば、ポート番号100〜200を使用するように、ポート番号を割り当て、同様に、ブロードキャスト通信用に使用するポートの番号の範囲も、例えば、ポート番号1000〜2000を使用するように、使用するポートの番号の範囲を予め指定しておく。
【0227】
各計算機間の通信に使用できるポートの番号の範囲が定められているので、アプリケーション間で使用するポート番号の決定は、前述のプロトコルサーバ間の通信により、TCP/IP等のプロトコルと同様の方法により行われる。以上の処理により、初期化処理が完了する。
【0228】
次に、図17に受信処理のフローを示す。
【0229】
通信の際に、データコピー処理を省略するためには、データの受信バッファがデータの送出よりも先に設定されていることが必要である。
【0230】
そこでまず、ステップ1810において、受信側のアプリケーションは、データの受信処理の起動を行う前に、受信バッファの割り当て処理を行う。
【0231】
次に、ステップ1820において、受信システムコールが、実際の受信データの到着よりも先に発行されれば、ステップ1830にブランチし、そうでなければ、ステップ1850にブランチする。
【0232】
ステップ1830では、データ到着終了までブロック(所定時間、処理がウエイトされることを、「ブロック」と称する)され、全データの到着時に、ステップ1840に示すように、受信発行プロセスの起動を行ない、受信処理を完了する。
【0233】
一方、ステップ1850においては、全データが到着したことを確認した後、受信処理を完了する。
【0234】
次に、図19を参照して、受信マルチキューDMA処理を説明する。
【0235】
まず、ステップ2010において、ネットワーク1105を介して到着した、パケットデータは、ネットワーク受信部1114によって、取り込み動作が行われ、受信用バッファ1112に格納される。
【0236】
次に、ステップ2020においては、マルチキューDMA制御部1111が、受信バッファ1112を監視しており、パケットデータが到着すると、マルチキューDMA制御部が起動し、一連の処理を開始することになる。
【0237】
具体的には、以下の処理が行われる。
【0238】
まず、パケットのハードヘッダ部が備える、DMA_PORT_NO1303の内容にしたがって、実行すべきコマンドキューを決定する。この処理は、マルチキュー制御レジスタ群1201内のRECV_Q_TBL_ADR1231の内容に、前記DMA_PORT_NO1303の内容をコマンドキュー選択テーブルの各エントリのサイズ倍(例えば、DMA_PORT_NOが「5」のとき、5エントリ分)した数値を加えることによって、アドレスを算出することによって行われる。
【0239】
ここで、セキュリティの向上のために、例えば、DMA_PORT_NO1303に、セキュリティチェックのための情報を備え、該情報が、予め設定された情報と一致したときにのみデータ転送を行なうような構成することが好ましい。
【0240】
次に、ステップ2030において、メモリ1103から、DMA処理によって、Q_ADR_O, Q_HEAD_O, Q_TAIL_O, Q_LEN_O(Oは、DMA_PORT_NO1303と等しい)を読み出し、各々、RECV_Q_ADR1241、RECV_Q_LEN1242、RECV_Q_HEAD1243、RECV_Q_TAIL1244に設定する。
【0241】
なお、前回のDMA処理におけるDMA_PORT_NO1303と、同一のDMA_PORT_NO1303を有するパケットであれば、ステップ2030における処理は、省略することができる。
【0242】
また、RECV_Q_ADR1241、RECV_Q_LEN1242、RECV_Q_HEAD1243、RECV_Q_TAIL1244を複数個保持するためのメモリを、ネットワークアダプタ1110内に設けた構成にすることで、高い確率で、ステップ2030のDMA処理による読み込み処理(メモリ1103からの読みだし処理)を省略することができる。
【0243】
次に、ステップ2040において、パケットヘッダ部内のMODE1306の内容が「−1」であれば、ステップ2070にブランチし、そうでけなれば、ステップ2050にブランチする。
【0244】
ステップ2070では、RECV_Q_ADRに、REDV_Q_HEADを加えた値が示す位置に存在するコマンドを実行する。ステップ2070に続いて、ステップ2080では、RECV_Q_HEADが示す内容を実行したコマンドが存在するアドレスの、次のアドレスが選択されるように、RECV_Q_HEADが存在するアドレスに、1コマンド分のアドレスを加える処理を行い、ステップ2090へと進む。
【0245】
一方、ステップ2050では、「RECV_Q_ADR+MODE」番目(コマンドキューMODE番目)のコマンドを実行する。ステップ2050に続いて、ステップ2060では、RECV_Q_HEAD内容を実行したコマンドが存在するアドレスの、次のアドレスが選択されるように、RECV_Q_HEADが存在するアドレスに、(1+MODE)コマンド分のアドレスを加える処理を行い、ステップ2090に進む。
【0246】
ステップ2090では、RECV_Q_ADR1241、RECV_Q_LEN1242、RECV_Q_HEAD1243、RECV_Q_TAIL1244の内容を、コマンドキュー選択テーブル内のエントリQ_ADR_O,Q_HEAD_O,Q_TAIL_O,Q_LEN_O(Oは、DMA_PORT_NO1303と等しい)に書き戻し、処理を完了する。
【0247】
以上に示したマルチキューDMA処理を繰り返すことにより、パケットデータは、アプリケーション空間のデータバッファ内へと、直接、転送されることになる。
【0248】
次に、図21を参照して送信側の処理について説明する。
【0249】
まず、ステップ2210において、アプリケーションが送信処理を発行する。
【0250】
次に、ステップ2220において、送信処理命令を発行したアプリケーション内の送信データバッファの物理アドレスを、図18を参照して説明した方法によって算出する。
【0251】
次に、ステップ2230において、ステップ2220において算出した物理アドレスをパラメータとして持つコマンドを、送信用コマンドキューに設定する。
【0252】
次に、ステップ2240において、送信処理を発行したアプリケーションをブロックする。
【0253】
続いて、ステップ2250において、ネットワークアダプタ1110によって、データの送出、すなわち、送信処理が行なわれる。ネットワークアダプタは、送信を終了すると、割り込みを発行する。
【0254】
次に、ステップ2260において、割り込みすべき旨の命令を受け取ったプロセッサ1102は、送信処理を発行して、ブロックされたアプリケーションの起動処理を行なう。以上で、送信処理は完了する。
【0255】
以上のように、本発明にかかる一連の処理、すなわち初期化処理、受信側処理、送出側処理が行われ、ネットワークにおけるパケットの高速通信が可能となる。
【0256】
【発明の効果】
本発明によれば、複数の情報処理システムを接続して構成したネットワークにおける、パケット内のデータの送受信処理において、受信側情報処理システムによる、データコピー、ページテーブル変更処理等を行わずに、高速な情報通信が可能な手段を安価に提供することができる。
【図面の簡単な説明】
【図1】計算機ネットワークシステム構成図である。
【図2】従来のネットワークシステムの構成図である。
【図3】ネットワークパケットの構成図である。
【図4】送信ソフト処理のフローチャートである。
【図5】ネットワークアダプタ送信動作の説明図である。
【図6】受信ソフト前処理の説明図である。
【図7】ネットワークアダプタ受信動作の説明図である。
【図8】受信ソフト後処理の説明図である。
【図9】受信アプリケーション処理の説明図である。
【図10】計算機ネットワークシステムの構成図である。
【図11】マルチキューDMA制御部の構成図である。
【図12】パケットの構成図である。
【図13】DMA処理用データ構造の説明図である。
【図14】コマンドキュー選択テーブルの構成の説明図である。
【図15】コマンドキュー構成図である。
【図16】プロセスページテーブルの説明図である。
【図17】受信側での処理フローの説明図である。
【図18】バッファコマンドキューの対応の説明図である。
【図19】受信側のマルチキューDMA処理フローの説明図である。
【図20】初期化処理フローの説明図である。
【図21】送信処理フローの説明図である。
【符号の説明】
100…ネットワーク内計算機、110…ネットワークアダプタ、111…受信DMA制御情報保持手段、112…送信DMA制御情報保持手段、113…割込制御情報保持手段、114…アダプタ制御情報保持手段、115…アダプタ制御手段、116…受信DMA制御情報選択手段、117…DMA分割情報保持手段、118…ネットワーク送受信部、119…自アドレス保持手段、120…マルチキューDMA制御部、121…送受信用バッファ、122…内部バス、130…プロセッサ、140…I/O装置、150…メモリ、160…OS空間、170…ユーザ空間、161…受信プロトコル情報、162…受信プロトコル情報、163…送信プロトコル情報、164…受信領域指定情報、165…受信領域指定情報、167…受信領域指定情報選択情報、171…ユーザデータ、172…ユーザデータ、173…ユーザデータ、200…ネットワーク内計算機、230…プロセッサ、250…メモリ、210…ネットワークアダプタ、211…受信DMA制御情報保持手段、212…送信DMA制御情報保持手段、213…割込制御情報保持手段、214…アダプタ制御情報保持手段、215…アダプタ制御手段、218…ネットワーク送受信部、219…自アドレス保持手段、220…DMA制御部、221…送受信用バッファ、222…内部バス、280…システムバス、1101…計算機ノード、1102…プロセッサ、1103…メモリ、1104…システムバス、1110…ネットワークアダプタ、1111…マルチキューDMA制御部、1112…受信用バッファ、1113…送信用バッファ、1114…ネットワーク受信部、1115…ネットワーク送信部、1201…マルチキュー制御レジスタ群、1202…DMA制御部、1300…ハードヘッダ部、1310…パケットデータ部
[0001]
[Industrial application fields]
The present invention relates to a technology for improving information communication performance in a network configured by connecting information processing systems such as computer systems.
[0002]
In particular, the present invention relates to a technique for speeding up information communication processing in a network connected with an information processing system such as a computer system having a virtual memory.
[0003]
[Prior art]
A configuration example of an information processing system constituting a conventional network is shown in FIG.
[0004]
Here, the configuration of the intra-network computer 200 will be described as an example of an information processing system that configures a network.
[0005]
The intra-network computer 200 includes a processor 230, a memory 250, and a network adapter 210, and each component is connected to a system bus 280.
[0006]
The network adapter 210 further includes a DMA control unit 220, a transmission / reception buffer 221, a network transmission / reception unit 218, a reception DMA control information holding unit 211, a transmission DMA control information holding unit 212, an interrupt control information holding unit 213, and an adapter control information holding unit. Means 214 and adapter control means 215 are provided, which are connected by an internal bus 222.
[0007]
The DMA control unit 220 includes a transmission / reception buffer 221 based on information held in the reception DMA control information holding unit 211, the transmission DMA control information holding unit 212, the interrupt control information holding unit 213, and the adapter control information holding unit 214. It is a means for controlling data transfer to and from the memory 250, and can be realized by an electronic device such as TTL or CMOS.
[0008]
The transmission / reception buffer 221 is means for storing and holding a packet transmitted via the network 290 and a packet received via the network 290, and can be realized by a RAM or the like, for example.
[0009]
The network transmission / reception unit 218 is means for performing data communication between the network 290 and the transmission / reception buffer 221 and can be realized by, for example, various electronic devices such as TTL and CMOS.
[0010]
The reception DMA control information holding unit 211 is a unit that holds information related to control performed when data is transferred from the transmission / reception buffer 221 to the memory 250, and can be realized by, for example, an electronic device such as a RAM, various TTLs, and various CMOSs. .
[0011]
The transmission DMA control information holding unit 212 is a unit that holds information related to control performed when data is transferred from the memory 250 to the transmission / reception buffer 221. For example, the transmission DMA control information holding unit 212 is realized by an electronic device such as a RAM, various TTLs, and various CMOSs. it can.
[0012]
The interrupt control information holding unit 213 is used when issuing an interrupt at the end of the data transfer process between the transmission / reception buffer 221 and the memory 250 or at the end of a predetermined operation. A means for holding information, and can be realized by an electronic device such as a RAM.
[0013]
The adapter control information holding unit 214 is a unit that holds various control information used when the network adapter 200 operates, and can be realized by an electronic device such as a RAM, various TTLs, various CMOSs, for example.
[0014]
The adapter control means 215 is means for controlling the processor 230 to start and stop the operation of the network adapter 200, and can be realized by an electronic device such as RAM, various TTLs, various CMOSs, for example.
[0015]
The network transmission / reception unit 218 includes a self address holding unit 219 therein. The own address holding means 219 is a means for holding the own address so that the network transmission / reception unit 218 monitors a packet communicated via the network 290 and determines whether the packet is a packet addressed to the own computer. For example, it can be realized by an electronic device such as a RAM, various TTLs, and various CMOSs.
[0016]
Hereinafter, a processing procedure of reception processing in data communication using the conventional system as described above will be described.
[0017]
First, the network adapter 210 determines whether or not the transfer destination of a packet transmitted via the network 290 is its own computer.
[0018]
Next, when it is determined that the packet transfer destination is the local computer, the network adapter 210 takes the packet transmitted via the network into the transmission / reception buffer 221.
[0019]
Further, the DMA control unit 220 means DMA processing (abbreviation of “Direct Memory Access”: direct access to memory to perform input / output processing based on information held by the reception DMA control information holding unit 211, The captured packet is transferred to the received packet area 263 existing in the OS (operating system) space.
[0020]
Next, the network adapter 210 instructs the processor 230 to interrupt according to the content of the information held by the interrupt control information holding unit 213 after the data transfer processing by the DMA processing is completed.
[0021]
The processor 230 instructed to interrupt checks the user data 271 and the like existing in the user space to which the data is to be transferred based on the information in the packet existing in the reception packet area 263 existing in the OS space. A series of processes for transferring data to the application is performed by performing the process of copying the.
[0022]
Also, in the study of high-speed communication mechanisms, the effect of message communication on the performance of distributed memory parallel computers in the "Parallel Processing Symposium JSPP'93" in May 1993-Effects of communication and computation overlap and direct message reception In this announcement, a direct message communication means has been proposed, and it is conceivable to add a reception address to the message header. In this means, it is determined whether the received message can be transferred to the user area. And a means for detecting the address of the received message on the transmission side.
[0023]
[Problems to be solved by the invention]
In order to directly specify the address on the receiving side, it is essential for the transmitting side to know the address on the receiving side, but in order to do this, a predetermined notification is separately made prior to transmission and reception. There is a need. In the conventional method, since this is realized by performing communication in advance, the communication processing overhead cannot be reduced.
[0024]
In other words, until the transfer processing of the received packet to the memory is completed by hardware, the address of the application and the data area to which the data of the received packet is transferred cannot be specified.
[0025]
For this reason, a received packet must be received once by a reception buffer existing in the OS space, and then a process of transferring data to a target application by a data copy process or the like is required.
[0026]
In such data copy processing, the processing amount increases in proportion to the data amount. At present, since the ratio of the data copy process in the data communication process is high, it is a big problem in performing the high-speed data communication process.
[0027]
The present inventionThe purpose ofTechnology for improving information communication performance in networks configured by connecting information processing systems such as computer systemsTo provideIt is in.
[0030]
[Means for Solving the Problems]
The present invention operates while performing data communication via a network configured by connecting at least two computers including at least two arithmetic processing units, a main storage unit, and a network interface via respective network interfaces. A communication method in a computer system that includes:
Prior to data transfer, a reception area is pre-assigned to the main memory of the receiving computer, and an identifier for designating the pre-assigned reception area is added when transmitting via the network,
The receiving computer has information indicating the correspondence between the pre-assigned receiving area and the added identifier, and the correspondence between the receiving area and the identifier is received in the receiving computer for data transferred via the network. In this case, a pre-assigned receiving area as a receiving destination is specified, and data is transferred to the receiving area.
[0031]
That is,In the present invention, the current communication (TCP / IP etc ) In the same way as the above, the virtual line identifier used on the receiving side and the transmitting side is set, the transmitting side designates the identifier and transmits, and the receiving side receives the receiving area corresponding to the identifier. I want to send data directly without generating extra communication processing by converting the address to the address of the receiving area based on the identifier in hardware and then transferring the data. Data is sent to the area.
[0032]
Further, in the information processing system on the transmission side, communication in the network is further described in a specific area of the header part for each piece of data to be divided, indicating information that designates a transfer destination in the information processing system on the reception side. A method is also preferred.
[0033]
[Action]
In the present invention, the packet to be transmitted / received is configured to include information for dividing the packet and reception area designation information which is information indicating an area where the packet is to be received.
[0034]
Then, the information processing apparatus on the receiving side that configures the network, after receiving the packet, divides the packet based on information for dividing the packet, and the reception area existing on the memory included in the information processing apparatus Corresponding to the designation information, in order to designate a reception area, a conversion table provided in advance on the receiving side apparatus is referred to.
[0035]
By referring to the conversion table, the reception area of the data in the packet is determined, and the data in the packet is transferred to the reception area by DMA processing or the like.
[0036]
As described above, according to the present invention, a means having a high-speed data communication function capable of realizing communication between application processes communicating via a network without requiring data copy processing by a processor on the receiving side is inexpensive. Can be provided.
[0037]
【Example】
Embodiments of the present invention will be described below with reference to the drawings.
[0038]
FIG. 1 shows a configuration example of a computer in a network that is an example of an information processing system according to the present invention that constitutes a network.
[0039]
The network 190 configured with the intra-network computer 100 is usually configured to include at least two intra-network computers 100.
[0040]
Hereinafter, the configuration of the intra-network computer 100 will be described.
[0041]
The intra-network computer 100 includes a processor 130, a memory 150, and a network adapter 110, and these components are connected via a system bus 180.
[0042]
Further, depending on the system configuration of the intra-network computer 100, it is preferable to provide at least one I / O device 140.
[0043]
The network adapter 110 includes a multi-queue DMA control unit 120, a transmission / reception buffer 121, a network transmission / reception unit 118, a reception DMA control information holding unit 111, a transmission DMA control information holding unit 112, and interrupt control information. The holding unit 113, the adapter control information holding unit 114, the adapter control unit 115, the reception DMA control information selection unit 116, and the DMA division information holding unit 117 are configured. Connected through.
[0044]
The multi-queue DMA control unit 120 includes information held in the reception DMA control information holding unit 111, adapter control information holding unit 114, and reception DMA control information selection unit 116, information included in a packet received from the network, memory 150, data transfer processing (processing at the time of reception) from the transmission / reception buffer 121 to the memory 150 based on the information of the reception region designation information selection information 167 and the reception region designation information (164 to 165) held in 150, Further, from the memory 150 based on the information held in the transmission DMA control information holding means 112, the interrupt control information holding means 113, and the adapter control information holding means 114 and the transmission area designation information (166) of the memory 150. A means for performing data transfer processing (transmission processing) to the transmission / reception buffer 121 Ri, for example, various types of TTL, can be implemented by an electronic device such as CMOS.
[0045]
The transmission / reception buffer 121 is means for holding packets transmitted via the network 190 and packets received via the network 190, and can be realized by an electronic device such as a RAM, for example.
[0046]
The network transmission / reception unit 118 is means for performing data communication between the network 190 and the transmission / reception buffer 121, and can be realized by, for example, various electronic devices such as TTL and CMOS.
[0047]
The reception DMA control information holding unit 111 is a unit that holds information related to control performed when data is transferred from the transmission / reception buffer 121 to the memory 150, and can be realized by an electronic device such as a RAM, various TTLs, and CMOSs, for example. .
[0048]
The transmission DMA control information holding unit 112 is a unit that holds information related to control performed when data is transferred from the memory 150 to the transmission / reception buffer 121, and can be realized by an electronic device such as a RAM, various TTLs, and CMOSs, for example. .
[0049]
The interrupt control information holding unit 113 stores information used when issuing an interrupt at the end of the data transfer process between the transmission / reception buffer 121 and the memory 150 and at the end of a predetermined operation. It is a means to hold | maintain and can be implement | achieved by electronic devices, such as RAM, various TTL, CMOS, for example.
[0050]
The adapter control information holding unit 114 is a unit that holds control information used when the network adapter 110 operates, and can be realized by an electronic device such as a RAM, various TTLs, and CMOSs, for example.
[0051]
The adapter control unit 115 is a unit for causing the processor 130 to notify the network adapter 110 of control information or the like when data transfer control is performed on a transmission / reception packet by DMA processing. Can be realized.
[0052]
The network transmission / reception unit 118 outputs the contents of the transmission / reception buffer 121 to the network 190, monitors the communication packet on the network 190, and takes in the packet including its own address into the transmission / reception buffer 121 (this process) Is carried out by the following own address holding means 119), and can be realized by various electronic devices such as TTL and CMOS, for example. The own address holding unit 119 provided in the network transmission / reception unit 118 can be realized by an electronic device such as a RAM, for example.
[0053]
The transmission / reception buffer 121 can be realized by an electronic device such as a RAM. The processor 130 can be realized by a CPU (Central Processing Unit), for example, and the memory 150 can be realized by a RAM, for example.
[0054]
Next, the structure of data stored in the memory 150 will be described.
[0055]
The data structure stored in the memory 150 considers the data structure related to the reception process and the data structure related to the transmission process.
[0056]
Data structures related to the reception process include reception area designation information selection information 167, reception area designation information (164 to 165), reception protocol information (161 to 162), and user data (171 to 172).
[0057]
User data (171 to 172) is information stored in an area secured by the receiving side as an area for receiving data.
[0058]
The reception protocol information (161 to 162) is information stored in an area for transferring protocol information necessary for communication.
[0059]
The protocol information necessary for communication is, for example, information for specifying a process to be received.
[0060]
The reception area designation information (164 to 165) is control information for transferring a packet (during reception), for example, user data (171 to 172), address information of reception protocol information (161 to 162), etc. It is. The reception area designation information (164 to 165) may hold information indicating a plurality of user data.
[0061]
The reception area designation information selection information 167 existing in the memory 150 of FIG. 1 is based on the information indicated by the reception area designation information 312-b of the network packet, which will be described later. 165) is stored, and the data structure is in the form of a table.
[0062]
The data related to the transmission process is, for example, transmission protocol information (163), user data (173), etc. for the transmission area designation information (166).
[0063]
User data (173) is data stored in the data area transmitted by the transmission side. Transmission protocol information (163) is information stored in an area for transferring protocol information necessary for communication. The protocol information necessary for communication is, for example, information for specifying a receiving process.
[0064]
The transmission area designation information (166) is control information necessary for transferring a packet (when transmitting), and is, for example, address information and size information of user data (173) and transmission protocol information (163). The transmission area designation information (166) may hold information indicating a plurality of user data.
[0065]
The reception area designation information (164 to 165) is information for designating the transfer destination area of the reception protocol information (161 to 162) and user data (171 to 172). For example, the address, data size, etc. in the memory 150 are set. Have.
[0066]
The transmission area designation information 166 is information for designating the transmission protocol information 163 and the user data 173, and has, for example, an address in the memory 150, a data size, and the like.
[0067]
Here, a plurality of transmission protocol information 163 and user data 173 may be provided as in the reception processing side.
[0068]
In this embodiment, user data (171 to 172) and user data (173) exist in the user space 170 in the memory 150. On the other hand, reception area designation information selection information 167, reception protocol information (161 to 162), reception area designation information (164 to 165), transmission area designation information (166), and transmission protocol information 163 are stored in the OS space 160. Exists.
[0069]
Next, referring to FIG. 3, a configuration of a network packet, which is a packet transmitted and received on the network, is shown.
[0070]
A conventional network packet has, for example, data 310-a, type 320-a, transmission source address 321-a, and reception destination address 322-a.
[0071]
The data 310-a is information to be processed by the OS and software.
[0072]
The type 320-a is information necessary for the network adapter 110 to perform a predetermined process, for example, information such as the length of the entire data.
[0073]
The transmission source address 321-a is an identifier for identifying the computer in the network that has transmitted the packet. Further, the receiving address 322-a is an identifier for identifying a computer in the network that should receive the packet.
[0074]
The network packet according to the present invention includes data 310-b, division information 311-b, reception area designation information 312-b, type 320-b, transmission source address 321-b, and reception destination address 322-b. Is done.
[0075]
Data 310-b, type 320-b, source address 321-b, and destination address 322-b are data 310-a, type 320-a, source address 321-a, and destination address 322-a, respectively. It corresponds to.
[0076]
Here, the data 310-b includes, as the receiving side, from the above reception protocol information (161 to 162), reception area designation information 312-b, type 320-b, transmission source address 321-b, and reception destination. This information includes information excluding information corresponding to the address 322-b and user data (171 to 172).
[0077]
Alternatively, the data 310-b includes, from the transmission protocol information (163), the reception area designation information 312-b, type 320-b, transmission source address 321-b, and reception destination address 322. This is information configured to include information excluding information corresponding to b and user data (173).
[0078]
The division information 311-b is information indicating, for example, the number of packet divisions and the length at the time of division. Here, it goes without saying that the division information may include information for dividing the information into three or more. In addition, when a packet is divided, which part of the divided part corresponds to the reception protocol information (161 to 162) and the transmission protocol information (163), and which part is the user data (from 171 173) may be included. In addition, when the packet is divided into three or more, it is preferable to provide information indicating which divided portion of the divided portion corresponds to which portion of the user data.
[0079]
The reception area designation information 312-b is information for selecting reception area designation information indicating a transfer destination of the data when the packet data is transferred to the memory 150.
[0080]
The outline of packet transmission processing and reception processing will be described below.
[0081]
The packet transmission process is a process of creating a network packet according to the present invention with reference to FIG. 3 using the user data A173 and the transmission protocol information 163 and outputting the packet to the network.
[0082]
Hereinafter, software processing during transmission and operation of the network adapter 110 will be described.
[0083]
First, processing by software performed at the time of packet transmission processing will be described with reference to FIG.
[0084]
User data A173 holds user data to be transmitted.
[0085]
First, as shown in step 410, in the transmission protocol information 163, reception area designation information 312-b, type 320-b, transmission source address 321-b, and reception destination address 322-b are set.
[0086]
Here, as described above, the reception area designation information 312-b is an identifier for designating a reception area on the reception side. The type 320-b is information indicating, for example, the type of the upper protocol. The transmission source address 321-b is an identifier in the network of the own computer, and the reception destination address 322-b is an identifier in the network of the reception destination computer.
[0087]
Next, as shown in step 420, information specifying the user data A 173 and the transmission protocol information area 163 is set in the transmission area specifying information 166.
[0088]
Examples of information to be set include an address in the memory 170 and a data length. Here, in the information set in the transmission area designation information 166, a network packet is configured with the data length and the number of area designations as the division information 311-b.
[0089]
Next, as shown in step 430, the information of the transmission area designation information 166 is set in the transmission DMA control information holding unit 112.
[0090]
Information set in the transmission DMA control information holding unit 112 is an address of the area in the memory 170.
[0091]
Finally, as shown in step 440, an operation start notification is sent to the adapter control means 115. The transmission process is completed by the series of processes described above.
[0092]
Next, the operation of the network adapter 110 during transmission processing will be described with reference to FIG. The operation after the start of the operation by the operation start notification to the adapter control unit 115 will be described.
[0093]
First, as shown in step 510, the multi-queue DMA control unit 120 reads the content of the transmission area designation information 166 based on the information held in the transmission DMA control information holding means 112, and converts the content into the DMA. The division information holding unit 117 is set.
[0094]
Next, as shown in step 520, the multi-queue DMA control unit 120 holds the user data A 173 and transmission protocol information 163 according to the contents of the transmission area designation information 166 held in the DMA division information holding unit 117. The read information is read into the transmission / reception buffer 121.
[0095]
Next, as shown in step 530, the multi-queue DMA control unit 120 determines the data length and the number of area designations from the contents of the transmission area designation information 166 held in the DMA division information holding means 117 as “division information”. "311-b" is taken out for use.
[0096]
Next, as shown in step 540, the multi-queue DMA control unit 120 receives the user data A173, the reception area designation information 312-b, the type 320-b, the transmission source address 321-held in the transmission protocol information 163. b, information other than the destination address 322-b, constitutes data 310-b, and further includes reception area designation information 312-b, type 320-b, and source address 321 held in the transmission protocol information 163. The network packet according to the present invention is created and stored in the transmission / reception buffer 121 using -b and the destination address 322-b.
[0097]
Finally, as shown in step 550, the created network packet is output from the network transmission / reception unit 118 via the internal bus 122.
[0098]
Next, packet reception processing will be described.
[0099]
In the reception process, by using the network packet fetched from the network 190, only the data portion included in the packet is directly transferred to a predetermined user data storage area existing in the user space by the hardware process. The data can be transferred to the application program without performing the data copy process.
[0100]
The contents of the reception process will be described below.
[0101]
By the way, the reception processing is roughly divided into reception software preprocessing that is processing performed before arrival of data by the software, processing performed by the network adapter 110 when data arrives, and processing performed after data arrives by software. There is reception software post-processing that is processing.
[0102]
First, reception software preprocessing will be described.
[0103]
The reception software pre-process is a process for setting information in the reception area designation information selection information 167 and the reception area designation information (164 to 165) and notifying the network adapter 110 of the setting process.
[0104]
First, as shown in step 610, interrupt information related to an interrupt to be issued to the processor 130 at the end of data reception is set in the interrupt control information holding means 113.
[0105]
Next, as shown in step 620, how the reception area designation information 312-b in the network packet is associated with the reception area designation information (164 to 165) in the reception area designation information selection information 167. Determine and set the process.
[0106]
For example, the reception area designation information selection information 167 may adopt a configuration having a table-like data structure that can read the address of the reception area designation information based on the reception area designation information 312-b.
[0107]
Next, as shown in step 630, the information included in the user data (171 to 172) and the reception protocol information (161 to 162) is set in the reception area designation information (164 to 165). This information includes, for example, addresses of user data (171 to 172) and reception protocol information (161 to 162), data size, and the like.
[0108]
Finally, as shown in step 640, information indicated by the reception area designation information selection information 167 is set in the reception DMA control information holding unit 111.
[0109]
Next, the operation of the network adapter 110 from taking in network packets until receiving data will be described.
[0110]
First, as shown in step 710, the network transmission / reception unit 118 in the network adapter 110 monitors the network 190 and captures a network packet communicated on the network 190.
[0111]
Next, as shown in step 720, when the contents of the destination address 322-b of the network packet are equal to the contents held in advance in the own address holding means 119, branch to step 740, and if not equal Branch to step 730.
[0112]
In step 730, the captured network packet is discarded and the process is terminated.
[0113]
On the other hand, in step 740, the network packet is taken into the transmission / reception buffer 121.
[0114]
Next, as shown in step 750, the multi-queue DMA control unit 120 sets the content of the reception area designation information 312-b in the network packet in the reception DMA control information selection unit 116.
[0115]
Next, as shown in step 760, the multi-queue DMA control unit 120 uses a plurality of reception area designation information (164) based on the contents of the reception DMA control information holding means 111 and the contents of the reception DMA control information selection means 116. To 165) is selected.
[0116]
That is, this is a process of identifying one of the reception area designation information (164 to 165) by referring to the table of the reception area designation information selection information 167 according to the contents of the reception area designation information 312-b. It is.
[0117]
Next, as shown in step 770, the multi-queue DMA control unit 120 acquires address information from the selected reception area designation information (164 to 165).
[0118]
Next, as shown in step 780, the multi-queue DMA control unit 120 acquires the division information 311-b using the network packet taken into the transmission / reception buffer 121.
[0119]
Next, as shown in step 785, the multi-queue DMA control unit 120 performs processing for dividing the data portion of the network packet taken into the transmission / reception buffer 121 based on the division information 311-b.
[0120]
That is, of the division number and division length information held in the division information and the division portion of the packet data, which division portion corresponds to the reception protocol information (161 to 162) and which division portion is the user. The network packet data 310-b is divided into reception protocol information and user data from information indicating whether the data corresponds to the data (171 to 172).
[0121]
Next, as shown in step 790, the divided packet is separated into user data and reception protocol information based on the information of the reception area designation information specified in step 770 (for example, the address value in the memory 150). Then, the data is transferred to each transfer destination area.
[0122]
Finally, as shown in step 795, an interrupt is issued to the processor 130 according to the contents of the interrupt control information holding unit 113.
[0123]
Next, reception software post-processing performed after data arrival will be described.
[0124]
The reception software post-processing is started by an interrupt issued after a network packet is divided into user data and reception protocol information by hardware and transferred.
[0125]
First, as shown in step 810, when an interrupt is issued, the processor 130 specifies an application that has received data in accordance with information included in the reception protocol control information.
[0126]
Next, as shown in step 820, if the application that has received the data is in a waiting state after issuing a data reception request, it branches to step 830; otherwise, it branches to step 840. To do.
[0127]
In step 830, the reception request is made to activate the blocked application. On the other hand, in step 840, if the application receiving the data is not in a waiting state after issuing the data reception request, the status is notified so that the data can be delivered immediately when the reception request is issued. Set the flag to In such a case, a data delivery process is performed when a reception request is issued from the reception application.
[0128]
Next, in order to clarify the operation of the reception process, the operation as viewed from the application program that issued the reception request will be described with reference to FIG.
[0129]
First, as shown in step 910, reception buffer allocation processing is performed. This activates the processing described in FIG.
[0130]
Next, as shown in step 920, a reception request is issued. The reception request issuance process is a prerequisite that the reception buffer allocation process in step 910 is performed in advance, but it is not a necessary condition to issue a reception request immediately after the reception buffer allocation process.
[0131]
Here, in order to describe the flow of the reception process in the simplest manner, only the reception-related process is described. However, a predetermined process may exist between Step 910 and Step 920.
[0132]
Next, according to step 930, if the arrival of the reception data precedes the reception request, the process branches to step 960. Otherwise, the process branches to step 940.
[0133]
In step 960, since the flag indicating data arrival described in FIG. 8 is set, it is only necessary to receive data.
[0134]
In step 950, since data has not yet arrived, the process waits until the reception request process described with reference to FIG. 8 starts. The return processing from such a state is performed by the method described with reference to FIG.
[0135]
Embodiments according to the present invention will be described below in more detail with reference to the drawings.
[0136]
FIG. 10 shows a configuration example of an intra-network computer node 1101 (each of a plurality of computers is hereinafter referred to as a “node”), which is an example of an information processing apparatus according to the present invention that constitutes a network system. .
[0137]
The network configured with the intra-network computer node 1101 is configured by connecting at least two computer nodes 1101 shown in FIG.
[0138]
The network 1105 is a means for transmitting information such as packets, and may be configured using, for example, an electric cable or an optical fiber.
[0139]
Hereinafter, the configuration of the intra-network computer node 1101, which is an example of an information processing apparatus configuring the network, will be described with reference to the drawings.
[0140]
The intra-network computer node 1101 in this embodiment is configured to include a processor 1102, a memory 1103, and a network adapter 1110, and each component is connected via a system bus 1104.
[0141]
The network adapter 1110 includes a multi-queue DMA control unit 1111, a reception buffer 1112, a transmission buffer 1113, a network reception unit 1114, and a network transmission unit 1115.
[0142]
The computer node 1101 is preferably configured to include at least one or more I / O devices (not shown) depending on the system configuration.
[0143]
The multi-queue DMA control unit 1111, the network transmission unit 1115, and the network reception unit 1114 can be realized by various electronic devices such as TTL and CMOS, for example.
[0144]
The transmission buffer 113 and the reception buffer 112 can be realized by an electronic device such as a RAM, for example. Furthermore, the processor 1102 can be realized by a CPU, for example, and the memory 1103 can be realized by an electronic device such as a RAM, for example.
[0145]
FIG. 11 shows a configuration example of the multi-queue DMA control unit.
[0146]
The multi-queue DMA control unit includes a multi-queue control register group 1201 and a DMA control unit 1202. The multi-queue DMA control unit is connected to a system bus, a reception buffer, and a transmission buffer. ing.
[0147]
Multiqueue control register group 1201, ADP_COMMAND1211, ADP_STATUS1212, SEND_Q_ADR1221, SEND_Q_LEN1222, SEND_Q_HEAD1223, SEND_Q_TAIL1224, RECV_Q_TBL_ADR1231, RECV_Q_TBL_LEN1232, RECV_PORT_NO1233, RECV_Q_ADR1241, RECV_Q_LEN1242, RECV_Q_HEAD1243, configured with a respective registers RECV_Q_TAIL1244.
[0148]
Note that the multi-queue control register group 1201 can be realized by various electronic devices such as TTL, CMOS, and RAM, for example.
[0149]
The DMA control unit 1202 is a hard wired logic having a function of performing data transfer processing by DMA processing, and is realized by various TTL, CMOS, and the like, for example.
[0150]
ADP_COMMAND 1211 is a register for storing a command for controlling the network adapter, and ADP_STATUS 1212 is a register for holding status information for controlling the network adapter.
[0151]
SEND_Q_ADR1221, SEND_Q_LEN1222, SEND_Q_HEAD1223, and SEND_Q_TAIL1224 are storage units for various parameters having a list structure (hereinafter referred to as “command queue”) for processing a transmission command, and will be described later with reference to FIG. To do.
[0152]
RECV_Q_TBL_ADR1231 is a pointer indicating the address of the command queue selection table, RECV_Q_TBL_LEN1232 is the size of the command queue selection table, and RECV_PORT_NO1233 is a register for temporarily storing DMA_PORT_NO present in the header of the received packet. is there.
[0153]
The command queue selection table will be described with reference to FIGS. 13 and 14. Further, “DMA_PORT_NO” will be described with reference to FIG.
[0154]
RECV_Q_ADR 1241, RECV_Q_LEN 1242, RECV_Q_HEAD 1243, and RECV_Q_TAIL 1244 are parameter storage units for the reception command queue, and will be described later with reference to FIG.
[0155]
Next, FIG. 12 shows a data format of a packet communicated via the network.
[0156]
The packet data includes DATA_LENGTH 1301, HEADER_LENGTH 1302, DMA_PORT_NO 1303, SRC_NODE_NO 1304, DST_NODE_NO 1305, MODE 1306, and SOFT_HEADER 1311, and a packet data unit 13 including a SOFT_DATA 1312.
[0157]
The data length of each element constituting the hard header portion 1300 is preferably a fixed length.
[0158]
DATA_LENGTH 1301 stores information indicating the length of data composed of 1301, 1302, 1303, 1304, 1305, 1306, 1311, and 1312.
[0159]
HEADER_LENGTH 1302 indicates the length of data when the data in the packet is divided into a plurality of pieces and transferred to the storage area by DMA processing. This length is composed of 1301, 1302, 1303, 1304, 1305, 1306, and 1311. Is the length of the data to be processed.
[0160]
That is, HEADER_LENGTH 1302 is information indicating the length of the hard header portion.
[0161]
The DMA_PORT_NO 1303 is a selection process of the command queue selection table 1401 for selecting a command queue for transferring data to the main memory (not limited to the main memory) included in the receiving computer node by DMA processing. It is a parameter for performing.
[0162]
As described above, the command queue selection table 1401 will be described later.
[0163]
SRC_NODE_NO 1304 is information for identifying the computer node on the transmission side that transmits data via the network, and an address number or the like added in advance to the computer node may be used. DST_NODE_NO 1305 is information for identifying a receiving computer node that receives data via the network, and an address number or the like added to the computer node in advance may be used.
[0164]
The network reception unit 1114 shown in FIG. 10 is configured to perform packet capture processing when the content of DST_NODE_NO 1305 included in the packet matches the preset address number assigned to the own computer node, for example. It ’s fine.
[0165]
The MODE 1306 is a parameter for determining a command for executing the DMA processing, and its usage will be described in the description of the processing flow described later.
[0166]
Also, SOFT_HEADER 1311 is information used by software that performs protocol processing, and SOFT_DATA 1312 is, for example, data itself transmitted and received between applications via a network.
[0167]
Next, FIG. 13 shows an example of a data structure for subjecting received data to DMA processing. This may be stored in the memory 1103 in FIG.
[0168]
The data structure for reception DMA processing in the memory includes a command queue selection table 1401 and a port-specific command queue group 1410.
[0169]
Each entry 1401-1, 1401-2,..., 1401-N of the command queue selection table corresponds to information (described below) corresponding to the port-specific command queues 1410-1, 1410-2,. Information as shown in FIG. 14 is held.
[0170]
FIG. 14 shows the configuration of the command queue selection table 1401. This may be stored in the memory 1103.
[0171]
The head address of the table is indicated by RECV_Q_TBL_ADR1231 constituting the multi-queue control register group 1201 shown in FIG. 11, and the number of entries in the table is indicated by RECV_Q_TBL_LEN1232 constituting the multi-queue control register group 1201.
[0172]
Each entry 1401-1, 1401-2,..., 1401-N shown in FIG. 14 includes four parameters of “Q_ADR_M, Q_HEAD_M, Q_TAIL_M, Q_LEN_M” (where M = 1 to N: N is a positive integer). These are information for controlling each command queue.
[0173]
FIG. 15 shows a method for performing the predetermined control according to each of these parameters.
[0174]
Next, FIG. 15 shows a configuration example of the command queue. This is stored in the memory 1103 of FIG.
[0175]
The configuration of the command queue is basically the same on both the transmission side and the reception side.
[0176]
Q_ADR, Q_HEAD, Q_TAIL, and Q_LEN correspond one-to-one to SEND_Q_ADR221, SEND_Q_LEN222, SEND_Q_HEAD223, and SEND_Q_TAIL224 shown in FIG. 11 on the transmission side. Similarly, the reception side is shown in FIG. Further, there is a one-to-one correspondence with RECV_Q_ADR241, RECV_Q_LEN242, RECV_Q_HEAD243, and RECV_Q_TAIL244.
[0177]
Each will be described below.
[0178]
Q_ADR, Q_HEAD, Q_TAIL, and Q_LEN are information for managing the command queue.
[0179]
Q_ADR is a pointer indicating the head address of the command queue, Q_HEAD is a pointer indicating a command for performing the next DMA processing, and Q_TAIL indicates the last command currently set by the software Pointer.
[0180]
The command queue has a logical ring structure in which the head of the queue is connected to the tail of the queue.
[0181]
Q_LEN is a variable that holds command queue length information necessary to recognize the end of the command queue and wrap it back to the beginning.
[0182]
Next, commands provided in the command queue will be described.
[0183]
Each command unit includes COMMAND 1601, HEADER_POINTER 1602, HEADER_LENGTH 1603, DATA_POINTER 1604, DATA_LENGTH 1605, and RESULT_STATUS 1606.
[0184]
The COMMAND 1601 field holds information such as whether or not to issue an interrupt instruction when the DMA processing by this command is completed.
[0185]
A field of HEADER_POINTER 1602 is a field that holds a physical address of an area in which the hard header 1610 is stored.
[0186]
A field of HEADER_LENGTH 1603 is a field that holds information indicating the data length of the hard header 1610.
[0187]
The hard header 1610 includes DATA_LENGTH 1301, HEADER_LENGTH 1302, DMA_PORT_NO 1303, SRC_NODE_NO 1304, DST_NODE_NO 1305, MODE 1306, and SOFT_HEADER 1311.
[0188]
DATA_POINTER 1604 and DATA_LENGTH 1605 indicate the physical address (DATA_POINTER 1604) and length (DATA_LENGTH 1605) of the soft data area in the packet, respectively.
[0189]
In the command queue for reception, HEADER_LENGTH 1603 and DATA_LENGTH 1605 indicate the size of the storage area reserved for reception corresponding to the header portion and the data portion.
[0190]
The command has an area for setting a physical address in HEADER_POINTER 1602 and DATA_POINTER 1604 for each packet unit, and at the time of reception, by performing data transfer corresponding to this address, a virtual address is used as shown below. In this case, it is possible to perform data transfer processing in which the continuous area at the virtual address becomes a non-continuous area at the physical address.
[0191]
Acquisition of a physical address corresponding to a data area to be transmitted / received is performed by the OS. The simplest case is when the application is operating based on a physical address. In such a case, the OS sets the physical address of the data area of the application in DATA_POINTER 1604 where the upper physical address should be set. Good.
[0192]
Next, an example of a system in which the OS performs virtual memory management will be described.
[0193]
The memory 1103 is used by the OS and applications, and the program under the virtual memory management (ordinary application program) converts the address in the virtual memory into information set in the “process page table” for performing address conversion. The memory address is converted into a physical address.
[0194]
The table for converting the virtual memory address and the physical address is a process page table shown in FIG.
[0195]
Hereinafter, processing for obtaining a physical address from a logical address of an application data area performed by the OS will be described with reference to a process page table shown in FIG.
[0196]
This is a conversion table for using a virtual address instead of the physical address allocated on the memory 1103 in FIG.
[0197]
Specifically, as shown in FIG. 16, the process page table is a table indicating physical pages corresponding to the virtual pages of the process.
[0198]
Here, “page” is a basic unit in which the OS performs memory management. The page size is expressed as a power of 2, and many current OSs employ a size such as 2048, 4096, 8192 (bytes, etc.).
[0199]
The physical address and the virtual address are values obtained by adding the offset value in the page to the above-described page number. Note that the offset value in the page is the same for the physical address and the virtual address.
[0200]
When setting a physical address, it is possible to take a correspondence to a physical address corresponding to a logical address by referring to this table.
[0201]
For example, when a data area of an application is a logical page “M, M + 1” and data that exists across two areas is received, each physical page number 200 and physical page number 358 are multiplied by the page size. The physical address is calculated by adding the offset value in the page, and this is set in the DATA-POINTER 1604 of two consecutive commands in the command queue. By such processing, data can be transferred continuously from a physical address area that exists discontinuously to a virtual address area that exists continuously.
[0202]
Next, the relationship among the virtual space address, the physical space address, and the command queue will be described with reference to FIG.
[0203]
An application space exists in a part of the virtual memory space shown in FIG.
[0204]
A data buffer 1910 existing in the application space includes data A 1901, data B 1902, data C 1903, and data D 1904.
[0205]
Now, “3” in the data A 1901 is the page number in the virtual space, and corresponds to the area A 1921 and corresponds to the page number “52” in the physical space as shown in FIG.
[0206]
Since this correspondence is information set in the process table described with reference to FIG. 16, by referring to the process table, page “3” in the virtual space becomes page number “52” in the physical space. Judged by correspondence.
[0207]
Hereinafter, the data B 1902 has a page number “4” in the virtual space, corresponds to the area C 1923, and has a page number “73” in the physical space.
[0208]
The data C 1903 has a page number “5” in the virtual space, corresponds to the region B 1922, and has a page number “60” in the physical space.
[0209]
Finally, the data D1904 has a page number “6” in the virtual space, corresponds to the area D1924, and has a page number “81” in the physical space.
[0210]
Therefore, when data A1901, data B1902, data C1903, and data D1904 existing in the data buffer 1910 in the application space are received, a physical address to be set for a command in the command queue 1930 is determined. For the physical page, the page number “52” in the physical space is used for the command A1931. Also, the page number “73” in the physical space is used for the command B 1932. Further, the page number “60” in the physical space is used for the command C 1933. Finally, the command D1934 uses the page number “81” in the physical space. As described above, the physical address to be set in the command queue may be calculated.
[0211]
As described above, each entry is provided corresponding to the network packet of the command queue, and the area for setting the physical address is held for each entry, so that the physical address area that is discontinuous can be continuously Thus, data can be continuously received in a virtual address area that exists in a normal manner.
[0212]
Next, a series of processing according to the present invention will be described in the order of initialization processing, reception side processing, and transmission side processing.
[0213]
First, the operation of the initialization process will be described with reference to FIG.
[0214]
First, in step 2110, a command queue selection table 1401 is created and stored in the memory 1103.
[0215]
Next, in step 2120, a command queue is created and stored in the memory 1103.
[0216]
Subsequently, in step 2130, the management information of the command queue selection table 1401 created in step 2110 is set in RECV_Q_TBL_ADDR1231 and RECV_Q_TBL_LEN1232 in the multi-queue control register group 201 provided in the network adapter 1110.
[0217]
Thereafter, in step 2140, an activation command is set in the ADP_COMMAND 1211 in the multi-queue control register group 1201 provided in the network adapter 1110.
[0218]
Next, in step 2150, processing for determining a port to be used between applications is performed prior to communication processing.
[0219]
Initially, since the communication partner cannot be specified, at initialization communication, for example, “1” is used as the port number, and the maximum number of entries that can be used is statically set at initialization. Keep it.
[0220]
As an initialization communication method, communication between software that performs protocol processing in the kernel may be performed by a method similar to normal message passing.
[0221]
Note that the buffer used for communication is a buffer for the protocol server in the kernel.
[0222]
Through the initialization process described above, the software that performs the protocol process can perform communication similar to normal message communication (TCP / IP or the like).
[0223]
Next, as a process for determining a port to be used between applications prior to the communication process, a process for assigning port numbers of the transmission side and reception side systems is performed.
[0224]
First, processing for assigning ports is shown below.
[0225]
It is assumed that a port number is statically assigned to each computer in a network configured by connecting a plurality of computers in the network.
[0226]
That is, in the communication between the computer 1 and the computer 2, for example, port numbers are assigned so as to use the port numbers 100 to 200, and similarly, the range of port numbers used for broadcast communication is, for example, port A range of port numbers to be used is designated in advance so that numbers 1000 to 2000 are used.
[0227]
Since the range of port numbers that can be used for communication between computers is determined, the port number used between applications is determined by the same method as for protocols such as TCP / IP by communication between the protocol servers described above. Is done. The initialization process is completed by the above process.
[0228]
Next, FIG. 17 shows a flow of reception processing.
[0229]
In order to omit the data copy process at the time of communication, it is necessary that the data reception buffer is set prior to the data transmission.
[0230]
Therefore, first, in step 1810, the receiving-side application performs reception buffer allocation processing before starting data reception processing.
[0231]
Next, in step 1820, if the receiving system call is issued prior to the actual reception of the received data, the process branches to step 1830. Otherwise, the process branches to step 1850.
[0232]
In step 1830, the data is blocked until the end of data arrival (processing is waited for a predetermined time is referred to as “block”), and when all data arrives, the reception issuance process is started as shown in step 1840, Complete the reception process.
[0233]
On the other hand, in step 1850, after confirming that all data has arrived, the reception process is completed.
[0234]
Next, the reception multi-queue DMA process will be described with reference to FIG.
[0235]
First, in step 2010, packet data that has arrived via the network 1105 is captured by the network reception unit 1114 and stored in the reception buffer 1112.
[0236]
Next, in step 2020, the multi-queue DMA control unit 1111 monitors the reception buffer 1112. When packet data arrives, the multi-queue DMA control unit is activated and starts a series of processes.
[0237]
Specifically, the following processing is performed.
[0238]
First, a command queue to be executed is determined according to the contents of DMA_PORT_NO 1303 provided in the hard header portion of the packet. In this process, the contents of the RECV_Q_TBL_ADR1231 in the multi-queue control register group 1201 are multiplied by the contents of the DMA_PORT_NO 1303 times the size of each entry in the command queue selection table (for example, five entries when DMA_PORT_NO is “5”). In addition, this is done by calculating the address.
[0239]
Here, in order to improve security, for example, it is preferable that the DMA_PORT_NO 1303 is provided with information for security check, and data transfer is performed only when the information matches preset information. .
[0240]
Next, in step 2030, Q_ADR_O, Q_HEAD_O, Q_TAIL_O, and Q_LEN_O (O is equal to DMA_PORT_NO1303) are read out from the memory 1103 by DMA processing, and set to RECV_Q_ADR1241, RECV_Q_LEN1242, and RECV_QREV3_Q_EV12_Q_H_44_Q_EV12_Q_EV12.
[0241]
If the packet has the same DMA_PORT_NO 1303 and the same DMA_PORT_NO 1303 in the previous DMA processing, the processing in step 2030 can be omitted.
[0242]
In addition, by configuring the memory for holding a plurality of RECV_Q_ADR1241, RECV_Q_LEN1242, RECV_Q_HEAD1243, and RECV_Q_TAIL1244 in the network adapter 1110, the read processing by the DMA processing in step 2030 (reading from the memory 1103) is performed with high probability. Dashi processing) can be omitted.
[0243]
Next, in step 2040, if the content of the MODE 1306 in the packet header portion is “−1”, the process branches to step 2070; otherwise, the process branches to step 2050.
[0244]
In Step 2070, a command existing at a position indicated by a value obtained by adding REDV_Q_HEAD to RECV_Q_ADR is executed. Subsequent to step 2070, in step 2080, processing for adding the address for one command to the address where RECV_Q_HEAD exists so that the next address of the address where the command which executed the contents indicated by RECV_Q_HEAD exists is selected. And go to step 2090.
[0245]
On the other hand, in step 2050, the “RECV_Q_ADR + MODE” -th (command queue MODE-th) command is executed. Subsequent to step 2050, in step 2060, a process of adding an address for (1 + MODE) command to an address where RECV_Q_HEAD exists so that the next address of the address where the command executing the RECV_Q_HEAD contents exists is selected. Go to step 2090.
[0246]
In step 2090, the contents of RECV_Q_ADR1241, RECV_Q_LEN1242, RECV_Q_HEAD1243, and RECV_Q_TAIL1244 are written in the entries Q_ADR_O, Q_HEAD_O, Q_TAIL_O, Q_LEN_O (O is equal to DMA_PORT_, and 130 is completed as DMA_PORT_NO).
[0247]
By repeating the multi-queue DMA processing described above, the packet data is directly transferred to the data buffer in the application space.
[0248]
Next, processing on the transmission side will be described with reference to FIG.
[0249]
First, in step 2210, the application issues a transmission process.
[0250]
Next, in step 2220, the physical address of the transmission data buffer in the application that issued the transmission processing command is calculated by the method described with reference to FIG.
[0251]
Next, in step 2230, a command having the physical address calculated in step 2220 as a parameter is set in the transmission command queue.
[0252]
Next, in step 2240, the application that issued the transmission process is blocked.
[0253]
Subsequently, in step 2250, the network adapter 1110 performs data transmission, that is, transmission processing. When the network adapter finishes transmission, it issues an interrupt.
[0254]
Next, in step 2260, the processor 1102, which has received the instruction to interrupt, issues a transmission process to start the blocked application. This completes the transmission process.
[0255]
As described above, a series of processing according to the present invention, that is, initialization processing, reception side processing, and transmission side processing is performed, and high-speed communication of packets in the network is possible.
[0256]
【The invention's effect】
According to the present invention, in a network configured by connecting a plurality of information processing systems, data transmission / reception processing within a packet can be performed at high speed without performing data copying, page table change processing, or the like by the receiving side information processing system. It is possible to provide a means capable of simple information communication at low cost.
[Brief description of the drawings]
FIG. 1 is a configuration diagram of a computer network system.
FIG. 2 is a configuration diagram of a conventional network system.
FIG. 3 is a configuration diagram of a network packet.
FIG. 4 is a flowchart of a transmission software process.
FIG. 5 is an explanatory diagram of a network adapter transmission operation.
FIG. 6 is an explanatory diagram of reception software pre-processing.
FIG. 7 is an explanatory diagram of a network adapter reception operation.
FIG. 8 is an explanatory diagram of received software post-processing.
FIG. 9 is an explanatory diagram of reception application processing.
FIG. 10 is a configuration diagram of a computer network system.
FIG. 11 is a configuration diagram of a multi-queue DMA control unit.
FIG. 12 is a configuration diagram of a packet.
FIG. 13 is an explanatory diagram of a data structure for DMA processing.
FIG. 14 is an explanatory diagram of a configuration of a command queue selection table.
FIG. 15 is a configuration diagram of a command queue.
FIG. 16 is an explanatory diagram of a process page table.
FIG. 17 is an explanatory diagram of a processing flow on the receiving side.
FIG. 18 is an explanatory diagram of correspondence of buffer command queues.
FIG. 19 is an explanatory diagram of a multi-queue DMA processing flow on the receiving side.
FIG. 20 is an explanatory diagram of an initialization process flow.
FIG. 21 is an explanatory diagram of a transmission processing flow.
[Explanation of symbols]
DESCRIPTION OF SYMBOLS 100 ... Computer in a network, 110 ... Network adapter, 111 ... Reception DMA control information holding means, 112 ... Transmission DMA control information holding means, 113 ... Interrupt control information holding means, 114 ... Adapter control information holding means, 115 ... Adapter control Means 116: Reception DMA control information selection means 117 ... DMA division information holding means 118 118 Network transmission / reception unit 119 ... Own address holding means 120 ... Multi-queue DMA control unit 121 ... Transmission / reception buffer 122 ... Internal bus , 130 ... processor, 140 ... I / O device, 150 ... memory, 160 ... OS space, 170 ... user space, 161 ... reception protocol information, 162 ... reception protocol information, 163 ... transmission protocol information, 164 ... reception area designation information 165 ... Reception area designation information, 167 ... Reception Area designation information selection information, 171 ... user data, 172 ... user data, 173 ... user data, 200 ... computer in network, 230 ... processor, 250 ... memory, 210 ... network adapter, 211 ... received DMA control information holding means, 212 ... Transmission DMA control information holding means, 213 ... Interrupt control information holding means, 214 ... Adapter control information holding means, 215 ... Adapter control means, 218 ... Network transmitting / receiving section, 219 ... Own address holding means, 220 ... DMA control section, 221: Buffer for transmission / reception, 222: Internal bus, 280 ... System bus, 1101 ... Computer node, 1102 ... Processor, 1103 ... Memory, 1104 ... System bus, 1110 ... Network adapter, 1111 ... Multi-queue DMA controller, 1112 ... Reception for Ffa, 1113 ... transmission buffer, 1114 ... network reception unit, 1115 ... network transmission unit, 1201 ... multiqueue control register group, 1202 ... DMA controller, 1300 ... hard header part, 1310 ... packet data unit

Claims (1)

演算処理部と、主記憶部と、ネットワークアダプタを少なくとも含む計算機を、それぞれのネットワークアダプタを介して、少なくとも2以上接続して構成されるネットワークにおいて計算機のアプリケーション間でデータの通信を行う通信方法であって、
前記データの通信に先立って、送信側計算機のアプリケーションと受信側計算機のアプリケーションとの間でデータの直接転送を行うための識別子をメッセージ通信で決定し、
受信側計算機のアプリケーションが当該計算機の主記憶部に前記識別子に対応した受信領域を予め割り当て、前記割り当てられた受信領域と前記識別子との対応を示す情報をテーブル形式で設定した後に、
送信側計算機のアプリケーションが送信処理を発行すると、該送信側計算機のネットワークアダプタはデータに前記識別子を付加して該データを送信し
信側計算機のネットワークアダプタは、ネットワークを介して転送された前記識別子が付加されたデータについて、前記受信領域と識別子の対応関係を示す情報を検索して、受信先となる予め割り当てられた受信領域を特定し、当該受信領域にデータの転送を行ない、
受信側計算機のアプリケーションは受信要求を発行した際、まだデータが前記受信領域に転送されていない場合はブロックされ、該データが該受信領域に転送された場合に該ブロックされていた受信側計算機のアプリケーションが起動されて、該受信領域に転送されているデータを受け取り、
受信側計算機のアプリケーションは受信要求を発行した際、既にデータが前記受信領域に転送されていた場合は受信領域に転送されているデータを即座に受け取ること
を特徴とする通信方法。
A communication method for communicating data between applications of a computer in a network configured by connecting at least two computers including at least an arithmetic processing unit, a main storage unit, and a network adapter via each network adapter. There,
Prior to the communication of the data, an identifier for performing direct transfer of data between the application of the sending computer and the application of the receiving computer is determined by message communication,
After the application of the receiving computer pre-assigns a reception area corresponding to the identifier to the main storage unit of the computer, and sets information indicating the correspondence between the allocated reception area and the identifier in a table format,
When the sending application computer issues a transmission process, the network adapter of the sender computer transmits the data by adding the identifier to the data,
Network adapter receiver side computer, for said identifier that is transferred over the network is added data, searching for information indicating a correspondence relationship prior Symbol receiving area identifier, assigned in advance a receiving destination identify receiving area, rows that have the transfer of data to the receiving area,
When the application of the receiving computer issues a reception request, it is blocked if the data is not yet transferred to the receiving area, and is blocked if the data is transferred to the receiving area. When the application is started and receives the data transferred to the receiving area,
A communication method characterized in that, when an application of a receiving computer issues a reception request, if the data has already been transferred to the reception area, the data transferred to the reception area is immediately received .
JP2000271165A 1993-09-08 2000-09-07 Communication method Expired - Fee Related JP3623727B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000271165A JP3623727B2 (en) 1993-09-08 2000-09-07 Communication method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP22355093A JP3473975B2 (en) 1993-09-08 1993-09-08 Network system and communication method in network
JP2000271165A JP3623727B2 (en) 1993-09-08 2000-09-07 Communication method

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP22355093A Division JP3473975B2 (en) 1993-09-08 1993-09-08 Network system and communication method in network

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2003207207A Division JP2004094931A (en) 2003-08-11 2003-08-11 Network system and communication method in network

Publications (2)

Publication Number Publication Date
JP2001111626A JP2001111626A (en) 2001-04-20
JP3623727B2 true JP3623727B2 (en) 2005-02-23

Family

ID=34315491

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000271165A Expired - Fee Related JP3623727B2 (en) 1993-09-08 2000-09-07 Communication method

Country Status (1)

Country Link
JP (1) JP3623727B2 (en)

Also Published As

Publication number Publication date
JP2001111626A (en) 2001-04-20

Similar Documents

Publication Publication Date Title
JP3473975B2 (en) Network system and communication method in network
EP1421739B1 (en) Transmitting multicast data packets
JP3384686B2 (en) Method and apparatus for receiving information from a communication network
US7320041B2 (en) Controlling flow of data between data processing systems via a memory
US6836808B2 (en) Pipelined packet processing
KR101006260B1 (en) Apparatus and method for supporting memory management in offloading network protocol processing
US7292593B1 (en) Arrangement in a channel adapter for segregating transmit packet data in transmit buffers based on respective virtual lanes
KR100992282B1 (en) Methods and systems for establishing communication connections, methods and systems for transmitting data, and computer readable storage media
US7409468B2 (en) Controlling flow of data between data processing systems via a memory
EP0889623A2 (en) System and method for efficient remote disk I/O
JPH11134274A (en) Mechanism to reduce interrupt overhead in device driver
US20040054822A1 (en) Transferring interrupts from a peripheral device to a host computer system
JP2000151664A (en) Data transmission method
CN116136790A (en) Task processing method and device
JP2004094931A (en) Network system and communication method in network
JP3623727B2 (en) Communication method
US20020078118A1 (en) Network interface application specific integrated circuit to allow direct attachment for an appliance,such as a printer device
JP2924783B2 (en) Remote read processing method and device
CN120166152A (en) A protocol converter, method and electronic device for network card
EP4161032A1 (en) Network packet-based remote memory access method and apparatus, and device and medium
JP2002281039A (en) Packet transceiver
CN111817818A (en) Method and device for transmitting data packet
JPH07248997A (en) Bus control method

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040521

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041021

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041125

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

Free format text: PAYMENT UNTIL: 20071203

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20081203

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091203

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101203

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees