JP3623727B2 - 通信方法 - Google Patents
通信方法 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
- Small-Scale Networks (AREA)
- Communication Control (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
【産業上の利用分野】
計算機システム等の情報処理システムを接続して構成したネットワークにおける、情報通信性能の向上ための技術に関する。
【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…パケットデータ部
Claims (1)
- 演算処理部と、主記憶部と、ネットワークアダプタを少なくとも含む計算機を、それぞれのネットワークアダプタを介して、少なくとも2以上接続して構成されるネットワークにおいて計算機のアプリケーション間でデータの通信を行う通信方法であって、
前記データの通信に先立って、送信側計算機のアプリケーションと受信側計算機のアプリケーションとの間でデータの直接転送を行うための識別子をメッセージ通信で決定し、
受信側計算機のアプリケーションが当該計算機の主記憶部に前記識別子に対応した受信領域を予め割り当て、前記割り当てられた受信領域と前記識別子との対応を示す情報をテーブル形式で設定した後に、
送信側計算機のアプリケーションが送信処理を発行すると、該送信側計算機のネットワークアダプタはデータに前記識別子を付加して該データを送信し、
受信側計算機のネットワークアダプタは、ネットワークを介して転送された前記識別子が付加されたデータについて、前記受信領域と識別子の対応関係を示す情報を検索して、受信先となる予め割り当てられた受信領域を特定し、当該受信領域にデータの転送を行ない、
受信側計算機のアプリケーションは受信要求を発行した際、まだデータが前記受信領域に転送されていない場合はブロックされ、該データが該受信領域に転送された場合に該ブロックされていた受信側計算機のアプリケーションが起動されて、該受信領域に転送されているデータを受け取り、
受信側計算機のアプリケーションは受信要求を発行した際、既にデータが前記受信領域に転送されていた場合は受信領域に転送されているデータを即座に受け取ること
を特徴とする通信方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000271165A JP3623727B2 (ja) | 1993-09-08 | 2000-09-07 | 通信方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22355093A JP3473975B2 (ja) | 1993-09-08 | 1993-09-08 | ネットワークシステムおよびネットワークにおける通信方法 |
JP2000271165A JP3623727B2 (ja) | 1993-09-08 | 2000-09-07 | 通信方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22355093A Division JP3473975B2 (ja) | 1993-09-08 | 1993-09-08 | ネットワークシステムおよびネットワークにおける通信方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003207207A Division JP2004094931A (ja) | 2003-08-11 | 2003-08-11 | ネットワークシステムおよびネットワークにおける通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001111626A JP2001111626A (ja) | 2001-04-20 |
JP3623727B2 true JP3623727B2 (ja) | 2005-02-23 |
Family
ID=34315491
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000271165A Expired - Fee Related JP3623727B2 (ja) | 1993-09-08 | 2000-09-07 | 通信方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3623727B2 (ja) |
-
2000
- 2000-09-07 JP JP2000271165A patent/JP3623727B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001111626A (ja) | 2001-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3473975B2 (ja) | ネットワークシステムおよびネットワークにおける通信方法 | |
JP3384686B2 (ja) | 通信ネットワークから情報を受信するための方法および装置 | |
EP1421739B1 (en) | Transmitting multicast data packets | |
US7320041B2 (en) | Controlling flow of data between data processing systems via a memory | |
US6836808B2 (en) | Pipelined packet processing | |
KR101006260B1 (ko) | 네트워크 프로토콜 처리의 오프로드에서 메모리 관리를 지원하기 위한 장치 및 방법 | |
US7409468B2 (en) | Controlling flow of data between data processing systems via a memory | |
JPH11134274A (ja) | デバイス・ドライバ中の割込みオーバヘッドを低減させる機構 | |
EP0889623A2 (en) | System and method for efficient remote disk I/O | |
KR20070042152A (ko) | 통신 접속 수립 방법과 시스템, 데이터 전송 방법과시스템, 및 컴퓨터 판독 가능한 기록 매체 | |
US20040054822A1 (en) | Transferring interrupts from a peripheral device to a host computer system | |
JP2000151664A (ja) | デ―タ伝送方法 | |
US7292593B1 (en) | Arrangement in a channel adapter for segregating transmit packet data in transmit buffers based on respective virtual lanes | |
JP2004094931A (ja) | ネットワークシステムおよびネットワークにおける通信方法 | |
JP3623727B2 (ja) | 通信方法 | |
US20020078118A1 (en) | Network interface application specific integrated circuit to allow direct attachment for an appliance,such as a printer device | |
CN116136790A (zh) | 任务处理方法和装置 | |
JP2924783B2 (ja) | リモートリード処理方法およびその装置 | |
KR960006472B1 (ko) | TICOM IOP 환경에서 FDDI펌웨어(firmware) 구동방법 | |
JP2002281039A (ja) | パケット送受信装置 | |
EP0863465A1 (en) | Network interface device and method | |
KR19980022445A (ko) | 송신 연결망 인터페이스에서의 긴급 메시지 송신 제어 방법 |
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 |