JP3623727B2 - Communication method - Google Patents
Communication method Download PDFInfo
- 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
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
[0005]
The
[0006]
The
[0007]
The DMA control unit 220 includes a transmission /
[0008]
The transmission /
[0009]
The network transmission /
[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 /
[0011]
The transmission DMA control
[0012]
The interrupt control
[0013]
The adapter control
[0014]
The adapter control means 215 is means for controlling the
[0015]
The network transmission /
[0016]
Hereinafter, a processing procedure of reception processing in data communication using the conventional system as described above will be described.
[0017]
First, the
[0018]
Next, when it is determined that the packet transfer destination is the local computer, the
[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
[0020]
Next, the
[0021]
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
[0040]
Hereinafter, the configuration of the
[0041]
The
[0042]
Further, depending on the system configuration of the
[0043]
The
[0044]
The multi-queue
[0045]
The transmission /
[0046]
The network transmission /
[0047]
The reception DMA control
[0048]
The transmission DMA control
[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 /
[0050]
The adapter control
[0051]
The
[0052]
The network transmission /
[0053]
The transmission /
[0054]
Next, the structure of data stored in the
[0055]
The data structure stored in the
[0056]
Data structures related to the reception process include reception area designation
[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
[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
[0066]
The transmission
[0067]
Here, a plurality of
[0068]
In this embodiment, user data (171 to 172) and user data (173) exist in the
[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
[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
[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
[0082]
Hereinafter, software processing during transmission and operation of the
[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
[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
[0088]
Examples of information to be set include an address in the
[0089]
Next, as shown in
[0090]
Information set in the transmission DMA control
[0091]
Finally, as shown in
[0092]
Next, the operation of the
[0093]
First, as shown in
[0094]
Next, as shown in
[0095]
Next, as shown in
[0096]
Next, as shown in
[0097]
Finally, as shown in
[0098]
Next, packet reception processing will be described.
[0099]
In the reception process, by using the network packet fetched from the
[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
[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
[0104]
First, as shown in
[0105]
Next, as shown in
[0106]
For example, the reception area designation
[0107]
Next, as shown in
[0108]
Finally, as shown in
[0109]
Next, the operation of the
[0110]
First, as shown in
[0111]
Next, as shown in
[0112]
In
[0113]
On the other hand, in
[0114]
Next, as shown in
[0115]
Next, as shown in
[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
[0117]
Next, as shown in
[0118]
Next, as shown in
[0119]
Next, as shown in
[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
[0122]
Finally, as shown in
[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
[0126]
Next, as shown in
[0127]
In
[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
[0130]
Next, as shown in
[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
[0132]
Next, according to
[0133]
In
[0134]
In
[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
[0138]
The
[0139]
Hereinafter, the configuration of the
[0140]
The
[0141]
The
[0142]
The
[0143]
The multi-queue
[0144]
The transmission buffer 113 and the
[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
[0147]
Multiqueue
[0148]
Note that the multi-queue
[0149]
The
[0150]
[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]
[0155]
Next, FIG. 12 shows a data format of a packet communicated via the network.
[0156]
The packet data includes
[0157]
The data length of each element constituting the
[0158]
[0159]
[0160]
That is,
[0161]
The
[0162]
As described above, the command queue selection table 1401 will be described later.
[0163]
[0164]
The
[0165]
The
[0166]
Also,
[0167]
Next, FIG. 13 shows an example of a data structure for subjecting received data to DMA processing. This may be stored in the
[0168]
The data structure for reception DMA processing in the memory includes a command queue selection table 1401 and a port-specific
[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
[0171]
The head address of the table is indicated by RECV_Q_TBL_ADR1231 constituting the multi-queue
[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
[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
[0184]
The
[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
[0187]
The hard header 1610 includes
[0188]
[0189]
In the command queue for reception,
[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
[0192]
Next, an example of a system in which the OS performs virtual memory management will be described.
[0193]
The
[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
[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
[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
[0215]
Next, in
[0216]
Subsequently, in
[0217]
Thereafter, in
[0218]
Next, in
[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
[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
[0231]
Next, in
[0232]
In
[0233]
On the other hand, in
[0234]
Next, the reception multi-queue DMA process will be described with reference to FIG.
[0235]
First, in
[0236]
Next, in
[0237]
Specifically, the following processing is performed.
[0238]
First, a command queue to be executed is determined according to the contents of
[0239]
Here, in order to improve security, for example, it is preferable that the
[0240]
Next, in
[0241]
If the packet has the
[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
[0243]
Next, in
[0244]
In
[0245]
On the other hand, in
[0246]
In
[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
[0250]
Next, in
[0251]
Next, in
[0252]
Next, in
[0253]
Subsequently, in
[0254]
Next, in
[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
Claims (1)
前記データの通信に先立って、送信側計算機のアプリケーションと受信側計算機のアプリケーションとの間でデータの直接転送を行うための識別子をメッセージ通信で決定し、
受信側計算機のアプリケーションが当該計算機の主記憶部に前記識別子に対応した受信領域を予め割り当て、前記割り当てられた受信領域と前記識別子との対応を示す情報をテーブル形式で設定した後に、
送信側計算機のアプリケーションが送信処理を発行すると、該送信側計算機のネットワークアダプタはデータに前記識別子を付加して該データを送信し、
受信側計算機のネットワークアダプタは、ネットワークを介して転送された前記識別子が付加されたデータについて、前記受信領域と識別子の対応関係を示す情報を検索して、受信先となる予め割り当てられた受信領域を特定し、当該受信領域にデータの転送を行ない、
受信側計算機のアプリケーションは受信要求を発行した際、まだデータが前記受信領域に転送されていない場合はブロックされ、該データが該受信領域に転送された場合に該ブロックされていた受信側計算機のアプリケーションが起動されて、該受信領域に転送されているデータを受け取り、
受信側計算機のアプリケーションは受信要求を発行した際、既にデータが前記受信領域に転送されていた場合は受信領域に転送されているデータを即座に受け取ること
を特徴とする通信方法。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 .
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) |
-
2000
- 2000-09-07 JP JP2000271165A patent/JP3623727B2/en not_active Expired - Fee Related
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 |