JPH07182260A - ネットワークパケットのフレームバッファ方法 - Google Patents
ネットワークパケットのフレームバッファ方法Info
- Publication number
- JPH07182260A JPH07182260A JP6263557A JP26355794A JPH07182260A JP H07182260 A JPH07182260 A JP H07182260A JP 6263557 A JP6263557 A JP 6263557A JP 26355794 A JP26355794 A JP 26355794A JP H07182260 A JPH07182260 A JP H07182260A
- Authority
- JP
- Japan
- Prior art keywords
- buffer
- packet
- network
- packets
- mode
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/10—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
- G06F5/12—Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9031—Wraparound memory, e.g. overrun or underrun detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
- H04L49/9068—Intermediate storage in different physical parts of a node or terminal in the network interface card
- H04L49/9073—Early interruption upon arrival of a fraction of a packet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2205/00—Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F2205/12—Indexing scheme relating to groups G06F5/12 - G06F5/14
- G06F2205/126—Monitoring of intermediate fill level, i.e. with additional means for monitoring the fill level, e.g. half full flag, almost empty flag
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
- Small-Scale Networks (AREA)
Abstract
(57)【要約】
【目的】 ネットワークに送られるか又はネットワーク
から受け取られるパケットをバッファする方法を提供す
る。 【構成】 ネットワークパケット用の改良されたバッフ
ァ機構が提供される。ネットワークパケットを送信及び
受信するときに、円形バッファが使用される。この円形
バッファは、V86モードネットワークドライバ及び保
護モードアプリケーションによってアクセスできる。円
形バッファは、先入れ先出し式にパケットを記憶し、ネ
ットワークを経ての非同期通信を容易にし、そして多数
のクライエントにサービスする。
から受け取られるパケットをバッファする方法を提供す
る。 【構成】 ネットワークパケット用の改良されたバッフ
ァ機構が提供される。ネットワークパケットを送信及び
受信するときに、円形バッファが使用される。この円形
バッファは、V86モードネットワークドライバ及び保
護モードアプリケーションによってアクセスできる。円
形バッファは、先入れ先出し式にパケットを記憶し、ネ
ットワークを経ての非同期通信を容易にし、そして多数
のクライエントにサービスする。
Description
【0001】
【産業上の利用分野】本発明は、一般に、データ処理シ
ステムに係り、より詳細には、ネットワークに送られる
か又はネットワークから受け取られたパケットをバッフ
ァする方法に係る。
ステムに係り、より詳細には、ネットワークに送られる
か又はネットワークから受け取られたパケットをバッフ
ァする方法に係る。
【0002】
【従来の技術】多くの近代的なマイクロプロセッサは、
各製造業者によって作られたマイクロプロセッサの進歩
しつつある製品系列の一部分である。米国カリフォルニ
ア州キュパーチノのインテル社によって販売されている
80386マイクロプロセッサは、このようなマイクロ
プロセッサの一例である。この80386マイクロプロ
セッサは、80286マイクロプロセッサから進歩した
ものであり、そしてこれも、8086及び8088マイ
クロプロセッサから進歩したものである。80x86フ
ァミリーのうちの後で開発されたマイクロプロセッサ
は、その初期に開発された対応部及び8088に適合す
るように設計されている。従って、80386マイクロ
プロセッサは、8086又は8088マイクロプロセッ
サのために書かれたプログラムを実行できる(即ち、イ
ンテルのマイクロプロセッサは、上位互換性を示す)。
各製造業者によって作られたマイクロプロセッサの進歩
しつつある製品系列の一部分である。米国カリフォルニ
ア州キュパーチノのインテル社によって販売されている
80386マイクロプロセッサは、このようなマイクロ
プロセッサの一例である。この80386マイクロプロ
セッサは、80286マイクロプロセッサから進歩した
ものであり、そしてこれも、8086及び8088マイ
クロプロセッサから進歩したものである。80x86フ
ァミリーのうちの後で開発されたマイクロプロセッサ
は、その初期に開発された対応部及び8088に適合す
るように設計されている。従って、80386マイクロ
プロセッサは、8086又は8088マイクロプロセッ
サのために書かれたプログラムを実行できる(即ち、イ
ンテルのマイクロプロセッサは、上位互換性を示す)。
【0003】8088マイクロプロセッサは、「リアル
モード」として知られている単一の動作モードで実行す
るように設計されている。図1は、リアルモードの80
88マイクロプロセッサによって使用されるアドレス機
構を示している。リアルモードにおいて、16ビットセ
グメント100と16ビットオフセット102が結合さ
れて、物理アドレススペース内の位置を指定する20ビ
ット物理アドレス104を形成する。物理アドレス10
4は、図1に示すように、セグメント100を4ビット
左へシフトしそしてセグメント100にオフセット10
2を加えることによって形成される。その結果が、物理
メモリ106のセグメント108内のメモリ位置110
を識別する物理アドレス104である。8088マイク
ロプロセッサでは物理アドレスとして20ビットが使用
されているので、マイクロプロセッサは、1メガバイト
のメモリ(即ち、220バイト)しかアドレスできない。
この制約は、マイクロプロセッサに20ビットアドレス
バスを使用することによるものである。
モード」として知られている単一の動作モードで実行す
るように設計されている。図1は、リアルモードの80
88マイクロプロセッサによって使用されるアドレス機
構を示している。リアルモードにおいて、16ビットセ
グメント100と16ビットオフセット102が結合さ
れて、物理アドレススペース内の位置を指定する20ビ
ット物理アドレス104を形成する。物理アドレス10
4は、図1に示すように、セグメント100を4ビット
左へシフトしそしてセグメント100にオフセット10
2を加えることによって形成される。その結果が、物理
メモリ106のセグメント108内のメモリ位置110
を識別する物理アドレス104である。8088マイク
ロプロセッサでは物理アドレスとして20ビットが使用
されているので、マイクロプロセッサは、1メガバイト
のメモリ(即ち、220バイト)しかアドレスできない。
この制約は、マイクロプロセッサに20ビットアドレス
バスを使用することによるものである。
【0004】80386マイクロプロセッサは、リアル
モード、保護モード及び仮想8086モード(V86モ
ードとしても知られている)の3つのモードで動作する
能力を有している。80386のリアルモード動作は、
8088マイクロプロセッサで書かれたプログラムとの
上位互換性を容易にするように、8088マイクロプロ
セッサに充分類似している。即ち、8088マイクロプ
ロセッサのために書かれたコンピュータプログラムは、
80386マイクロプロセッサにおいてV86モードで
実行できる。それ故、80386マイクロプロセッサに
おいてV86モードで実行されるプログラムは、メモリ
の第1メガバイトしかアクセスすることができない。
モード、保護モード及び仮想8086モード(V86モ
ードとしても知られている)の3つのモードで動作する
能力を有している。80386のリアルモード動作は、
8088マイクロプロセッサで書かれたプログラムとの
上位互換性を容易にするように、8088マイクロプロ
セッサに充分類似している。即ち、8088マイクロプ
ロセッサのために書かれたコンピュータプログラムは、
80386マイクロプロセッサにおいてV86モードで
実行できる。それ故、80386マイクロプロセッサに
おいてV86モードで実行されるプログラムは、メモリ
の第1メガバイトしかアクセスすることができない。
【0005】80386の保護モード動作は、セグメン
ト化及びページングの両方を与えるものである。セグメ
ント化は、物理メモリを、セグメントと称する可変長さ
のメモリブロックに分割する。次いで、直接物理アドレ
スではなくてセグメント内のオフセットに関してアドレ
ス動作が行われる。ページングは、リニアアドレススペ
ースから物理アドレススペースのページフレームへとペ
ージをマッピングする方法である。メモリのページは、
4Kのサイズである。80386マイクロプロセッサの
保護モードでのセグメント化及びページングの組み合わ
せ使用は、アドレススペースの仮想化をサポートする。
仮想化とは、プログラムが、コンピュータシステムが実
際に有するものよりも大きな物理メモリを有するとして
コンピュータシステムを見ることができるようにする技
術を指す。仮想化されたコンピュータシステムでは、プ
ログラムは、仮想アドレスとして知られているアドレス
を指定し、次いで、これをページング及びセグメント化
の使用により物理アドレスへと変換することによって物
理メモリをアクセスする。それ故、80386マイクロ
プロセッサが保護モードにおいて動作するときには、コ
ンピュータプログラムによって指定されたアドレスが、
プログラムがリアルモードで実行されるときとは異なる
仕方で物理アドレス位置へと変換される。
ト化及びページングの両方を与えるものである。セグメ
ント化は、物理メモリを、セグメントと称する可変長さ
のメモリブロックに分割する。次いで、直接物理アドレ
スではなくてセグメント内のオフセットに関してアドレ
ス動作が行われる。ページングは、リニアアドレススペ
ースから物理アドレススペースのページフレームへとペ
ージをマッピングする方法である。メモリのページは、
4Kのサイズである。80386マイクロプロセッサの
保護モードでのセグメント化及びページングの組み合わ
せ使用は、アドレススペースの仮想化をサポートする。
仮想化とは、プログラムが、コンピュータシステムが実
際に有するものよりも大きな物理メモリを有するとして
コンピュータシステムを見ることができるようにする技
術を指す。仮想化されたコンピュータシステムでは、プ
ログラムは、仮想アドレスとして知られているアドレス
を指定し、次いで、これをページング及びセグメント化
の使用により物理アドレスへと変換することによって物
理メモリをアクセスする。それ故、80386マイクロ
プロセッサが保護モードにおいて動作するときには、コ
ンピュータプログラムによって指定されたアドレスが、
プログラムがリアルモードで実行されるときとは異なる
仕方で物理アドレス位置へと変換される。
【0006】図2は、80386の保護モードで使用さ
れるアドレス機構のブロック図である。80386の保
護モードにおいては、80386マイクロプロセッサ
は、48ビット仮想アドレス200を使用する。この仮
想アドレス200のビット0−31は、オフセット値2
02を保持し、ビット32−47は、セグメント記述子
テーブル208と称するセグメントのアドレスのテーブ
ルにおいてエントリ206に対するインデックスとして
使用されるセレクタ204を保持する。セグメント記述
子テーブル208のエントリ206は、セグメントのベ
ースアドレスを保持する。エントリ206に保持された
ベースアドレスは、加算器210により、仮想アドレス
200の32ビットオフセット202に加えられて、リ
ニアアドレス212を形成する。
れるアドレス機構のブロック図である。80386の保
護モードにおいては、80386マイクロプロセッサ
は、48ビット仮想アドレス200を使用する。この仮
想アドレス200のビット0−31は、オフセット値2
02を保持し、ビット32−47は、セグメント記述子
テーブル208と称するセグメントのアドレスのテーブ
ルにおいてエントリ206に対するインデックスとして
使用されるセレクタ204を保持する。セグメント記述
子テーブル208のエントリ206は、セグメントのベ
ースアドレスを保持する。エントリ206に保持された
ベースアドレスは、加算器210により、仮想アドレス
200の32ビットオフセット202に加えられて、リ
ニアアドレス212を形成する。
【0007】リニアアドレス212は、次いで、ページ
ング機構214へ通される。ページング機構214は、
リニアアドレス212を32ビット物理アドレス216
に変換するのに使用されるページディレクトリ及びテー
ブルを含んでいる。物理アドレス216は、物理メモリ
106内の位置218を指定するのに使用される。保護
モードにおいては、物理アドレスが32ビット長さであ
るので、4ギガバイト(即ち、232バイト)までのメモ
リをアドレスすることができる。
ング機構214へ通される。ページング機構214は、
リニアアドレス212を32ビット物理アドレス216
に変換するのに使用されるページディレクトリ及びテー
ブルを含んでいる。物理アドレス216は、物理メモリ
106内の位置218を指定するのに使用される。保護
モードにおいては、物理アドレスが32ビット長さであ
るので、4ギガバイト(即ち、232バイト)までのメモ
リをアドレスすることができる。
【0008】V86モードにおいては、オペレーティン
グシステムは、保護モードで見られる保護サービスの幾
つかを与えながら、仮想化された仕方でリアルモードコ
ードを実行する。オペレーティングシステムは、マイク
ロプロセッサで実行されている異なるリアルモードプロ
グラムに対して個別の仮想マシンを形成する。各仮想マ
シンは、マイクロプロセッサの能力とオペレーティング
システムのソフトウェアとの組み合わせによって形成さ
れた環境である。いかなる時点でもマイクロプロセッサ
においてアクティブに動作するのは1つの仮想マシンだ
けである。オペレーティングシステムは、現在アクティ
ブである仮想マシンを切り換えるために仮想マシン間を
コンテクスト切り換えすることができる。各仮想マシン
は、存在し、命令を実行し、そしてコンピュータシステ
ムの仮想メモリの第1メガバイト内のメモリ位置を参照
しなければならない。
グシステムは、保護モードで見られる保護サービスの幾
つかを与えながら、仮想化された仕方でリアルモードコ
ードを実行する。オペレーティングシステムは、マイク
ロプロセッサで実行されている異なるリアルモードプロ
グラムに対して個別の仮想マシンを形成する。各仮想マ
シンは、マイクロプロセッサの能力とオペレーティング
システムのソフトウェアとの組み合わせによって形成さ
れた環境である。いかなる時点でもマイクロプロセッサ
においてアクティブに動作するのは1つの仮想マシンだ
けである。オペレーティングシステムは、現在アクティ
ブである仮想マシンを切り換えるために仮想マシン間を
コンテクスト切り換えすることができる。各仮想マシン
は、存在し、命令を実行し、そしてコンピュータシステ
ムの仮想メモリの第1メガバイト内のメモリ位置を参照
しなければならない。
【0009】
【発明が解決しようとする課題】リアルモード及びV8
6モードの制約は、分散型環境に問題を課する。この問
題を理解するために、先ず、分散型環境におけるコンピ
ュータシステム間の通信においてどんなコンポーネント
が中心的役割を演じるかを説明するのが有用であろう。
典型的に、分散型システムの各コンピュータシステム
は、コンピュータシステムをネットワークとインターフ
ェイスするためのネットワークアダプタを有している。
図3は、コンピュータ300をネットワーク318にイ
ンターフェイスするネットワークアダプタ314の一例
を示している。コンピュータ300は中央処理ユニット
(CPU)303及びメモリ301を含んでいる。コン
ピュータメモリ301は、ネットワークアダプタ314
のためのネットワークドライバ312を含んでいる。
6モードの制約は、分散型環境に問題を課する。この問
題を理解するために、先ず、分散型環境におけるコンピ
ュータシステム間の通信においてどんなコンポーネント
が中心的役割を演じるかを説明するのが有用であろう。
典型的に、分散型システムの各コンピュータシステム
は、コンピュータシステムをネットワークとインターフ
ェイスするためのネットワークアダプタを有している。
図3は、コンピュータ300をネットワーク318にイ
ンターフェイスするネットワークアダプタ314の一例
を示している。コンピュータ300は中央処理ユニット
(CPU)303及びメモリ301を含んでいる。コン
ピュータメモリ301は、ネットワークアダプタ314
のためのネットワークドライバ312を含んでいる。
【0010】ネットワークアダプタ314は、ネットワ
ーク318にパケットを送信したりネットワーク318
からパケットを受信したりする役割を果たす。この説明
において、パケットとは、ネットワーク318を経て送
信するのに適したフォーマットにある情報のパッケージ
化単位である。ネットワークアダプタ314は、プロセ
ッサ315と、これがその役割を果たすよう助ける常駐
RAM315とを備えている。
ーク318にパケットを送信したりネットワーク318
からパケットを受信したりする役割を果たす。この説明
において、パケットとは、ネットワーク318を経て送
信するのに適したフォーマットにある情報のパッケージ
化単位である。ネットワークアダプタ314は、プロセ
ッサ315と、これがその役割を果たすよう助ける常駐
RAM315とを備えている。
【0011】ネットワークドライバ312は、ネットワ
ーク318に向けられるパケットを送信すると共に、ネ
ットワーク318から受け取られるパケットを受信する
という役割を果たす。ネットワークドライバ312は、
パケットをバッファすることによりパケットの送信及び
受信を行う。このようなバッファ動作によって課せられ
る問題は、ネットワークドライバ312がしばしばV8
6モードドライバであり、従って、コンピュータメモリ
301の仮想アドレススペースの第1メガバイト内にパ
ケットを記憶することしかできないことである。
ーク318に向けられるパケットを送信すると共に、ネ
ットワーク318から受け取られるパケットを受信する
という役割を果たす。ネットワークドライバ312は、
パケットをバッファすることによりパケットの送信及び
受信を行う。このようなバッファ動作によって課せられ
る問題は、ネットワークドライバ312がしばしばV8
6モードドライバであり、従って、コンピュータメモリ
301の仮想アドレススペースの第1メガバイト内にパ
ケットを記憶することしかできないことである。
【0012】現在、上記した問題は、「マッパ(Mappe
r)」プログラムを設けることによって対処されている。
このマッパプログラムは、パケットを受信又は送信しよ
うとしているプログラム306と、ネットワークドライ
バ312との間に位置される。パケットを送信又は受信
しようとするプログラム306は、マッパ308にイン
ターフェイスする。マッパ308は、V86モードで実
行する部分と、保護モードで実行する部分とを有してい
る。マッパ308は、パケットをバッファするためのバ
ッファ310を形成する。特に、マッパ308は、プロ
グラム306とネットワークドライバ312との間をイ
ンターフェイスするためにバッファ310のリンクされ
たリストを割り当て、解放しそして維持する。各サイズ
のバッファごとに1つのリスト302、303、304
がある。図3において、バッファ302、303及び3
04は、そのサイズが各々1.5k、256B及び64
Bである。同じサイズの全てのバッファは、同じリスト
においてリンクされる。
r)」プログラムを設けることによって対処されている。
このマッパプログラムは、パケットを受信又は送信しよ
うとしているプログラム306と、ネットワークドライ
バ312との間に位置される。パケットを送信又は受信
しようとするプログラム306は、マッパ308にイン
ターフェイスする。マッパ308は、V86モードで実
行する部分と、保護モードで実行する部分とを有してい
る。マッパ308は、パケットをバッファするためのバ
ッファ310を形成する。特に、マッパ308は、プロ
グラム306とネットワークドライバ312との間をイ
ンターフェイスするためにバッファ310のリンクされ
たリストを割り当て、解放しそして維持する。各サイズ
のバッファごとに1つのリスト302、303、304
がある。図3において、バッファ302、303及び3
04は、そのサイズが各々1.5k、256B及び64
Bである。同じサイズの全てのバッファは、同じリスト
においてリンクされる。
【0013】図4は、プログラム306からパケットを
受け取りそしてパケットをネットワークドライバ312
へ送信するプロセス中にマッパ308によって実行され
るステップのフローチャートを示している。マッパ30
8は、可変長さのバッファ310をメモリの第1メガバ
イト内に割り当て(図4のステップ402)そしてそれ
らをリンクされたリストとして記憶する(ステップ40
4)。パケットがプログラムから受け取られたときに
(ステップ406)、マッパ308は、パケットにとっ
て充分に大きなバッファがあるかどうかを決定する(ス
テップ408)。パケットにとって充分に大きなバッフ
ァがない場合には、マッパ308は、ネットワークドラ
イバ312が、充分に大きなバッファにおける処理を完
了するまで待機する(ステップ410)。パケットにと
って充分に大きなバッファがある場合には、マッパ30
8は、パケットにとって充分な大きさの最小バッファ
(即ち「最良適合(best fit)」バッファ)をリストから
取り出し(ステップ409)、そしてパケットをバッフ
ァに記憶する(ステップ411)。バッファのサイズ及
び数は、マッパ308のコンパイル時に決定される。次
いで、マッパは、バッファをネットワークドライバ31
2に通し(ステップ412)、そしてネットワークドラ
イバ312がパケットを送信しそしてバッファを解除し
た後に、マッパはバッファをリンクされたリストに戻
す。マッパ308は、システム停止時に処理を終了する
(ステップ414)。マッパ308、ネットワークドラ
イな312及びバッファ310は、全て、グローバルな
アドレススペースに存在する。
受け取りそしてパケットをネットワークドライバ312
へ送信するプロセス中にマッパ308によって実行され
るステップのフローチャートを示している。マッパ30
8は、可変長さのバッファ310をメモリの第1メガバ
イト内に割り当て(図4のステップ402)そしてそれ
らをリンクされたリストとして記憶する(ステップ40
4)。パケットがプログラムから受け取られたときに
(ステップ406)、マッパ308は、パケットにとっ
て充分に大きなバッファがあるかどうかを決定する(ス
テップ408)。パケットにとって充分に大きなバッフ
ァがない場合には、マッパ308は、ネットワークドラ
イバ312が、充分に大きなバッファにおける処理を完
了するまで待機する(ステップ410)。パケットにと
って充分に大きなバッファがある場合には、マッパ30
8は、パケットにとって充分な大きさの最小バッファ
(即ち「最良適合(best fit)」バッファ)をリストから
取り出し(ステップ409)、そしてパケットをバッフ
ァに記憶する(ステップ411)。バッファのサイズ及
び数は、マッパ308のコンパイル時に決定される。次
いで、マッパは、バッファをネットワークドライバ31
2に通し(ステップ412)、そしてネットワークドラ
イバ312がパケットを送信しそしてバッファを解除し
た後に、マッパはバッファをリンクされたリストに戻
す。マッパ308は、システム停止時に処理を終了する
(ステップ414)。マッパ308、ネットワークドラ
イな312及びバッファ310は、全て、グローバルな
アドレススペースに存在する。
【0014】公知のバッファ方法を用いたときには問題
が生じる。図3に示すように、マッパ308が送信を行
うときには、保護モードで実行されているプログラム3
06からパケットを受け取り、そのパケットをバッファ
310へ入れそしてバッファをネットワークドライバ3
12へ通す。バッファ310は、ネットワークドライバ
312が送信ファンクションの実行を完全に終了してし
まうまで、ネットワークドライバ312によって解除さ
れず、マッパ308によって使用することができない。
それ故、マッパ308がパケットに対して充分な大きさ
のバッファから出てしまうと、マッパ308は、ネット
ワークドライバ312が充分なサイズのバッファを空け
るまでアイドル状態で待機しなければならない。バッフ
ァが最終的に使用できるようになったときに、実行を保
護モードへ通してプログラム306からパケットを得、
バッファへとコピーを行い、そして実行をV86モード
へと戻してバッファをネットワークドライバ312へ通
すようにしなければならない。このプロセスは、非常に
時間浪費であり、ネットワークアダプタ314は、この
時間中にそのRAM316にある全てのパケットの送信
を容易に完了してしまい、従って、アイドル時間を生じ
る。
が生じる。図3に示すように、マッパ308が送信を行
うときには、保護モードで実行されているプログラム3
06からパケットを受け取り、そのパケットをバッファ
310へ入れそしてバッファをネットワークドライバ3
12へ通す。バッファ310は、ネットワークドライバ
312が送信ファンクションの実行を完全に終了してし
まうまで、ネットワークドライバ312によって解除さ
れず、マッパ308によって使用することができない。
それ故、マッパ308がパケットに対して充分な大きさ
のバッファから出てしまうと、マッパ308は、ネット
ワークドライバ312が充分なサイズのバッファを空け
るまでアイドル状態で待機しなければならない。バッフ
ァが最終的に使用できるようになったときに、実行を保
護モードへ通してプログラム306からパケットを得、
バッファへとコピーを行い、そして実行をV86モード
へと戻してバッファをネットワークドライバ312へ通
すようにしなければならない。このプロセスは、非常に
時間浪費であり、ネットワークアダプタ314は、この
時間中にそのRAM316にある全てのパケットの送信
を容易に完了してしまい、従って、アイドル時間を生じ
る。
【0015】パケットが受信されるときにも問題が生じ
る。図3に示すように、マッパ308がパケットを受け
取るに充分な大きさのバッファ310をもたずそしてプ
ログラム306がバッファ310を解除するのを待機し
なければならない場合には、ネットワークアダプタ31
4がそのRAM316をいっぱいにし、パケットのオー
バーフローを招く。オーバーフローが生じると、その溢
れたパケットが失われる。
る。図3に示すように、マッパ308がパケットを受け
取るに充分な大きさのバッファ310をもたずそしてプ
ログラム306がバッファ310を解除するのを待機し
なければならない場合には、ネットワークアダプタ31
4がそのRAM316をいっぱいにし、パケットのオー
バーフローを招く。オーバーフローが生じると、その溢
れたパケットが失われる。
【0016】上記問題に加えて、「最良適合」解決策の
使用は別の欠点を有する。マッパ308、バッファ31
0及びネットワークドライバ312は、全て、全V86
タスクにより共有されたグローバルなアドレススペース
に存在する。グローバルなアドレススペースにおいてメ
モリが使用されるときには、それが他のタスクによって
使用できない。これは、グローバルなアドレススペース
を、控えめにのみ使用すべきリソースにする。しかしな
がら、「最良適合」解決策を用いると、パケットの厳密
なサイズよりもほとんど常にバッファのスペースが大き
くなる(即ち、内部細分化が生じる)ので、メモリの浪
費を招く。この浪費を最小にするようにバッファのサイ
ズを調整することはできるが、アプリケーション及びネ
ットワークアダプタが異なるごとにパケットサイズも異
なるので、パケットサイズを予想することは非常に困難
である。それ故、「最良適合」解決策は、グローバルな
アドレススペースの最適な使用ではない。
使用は別の欠点を有する。マッパ308、バッファ31
0及びネットワークドライバ312は、全て、全V86
タスクにより共有されたグローバルなアドレススペース
に存在する。グローバルなアドレススペースにおいてメ
モリが使用されるときには、それが他のタスクによって
使用できない。これは、グローバルなアドレススペース
を、控えめにのみ使用すべきリソースにする。しかしな
がら、「最良適合」解決策を用いると、パケットの厳密
なサイズよりもほとんど常にバッファのスペースが大き
くなる(即ち、内部細分化が生じる)ので、メモリの浪
費を招く。この浪費を最小にするようにバッファのサイ
ズを調整することはできるが、アプリケーション及びネ
ットワークアダプタが異なるごとにパケットサイズも異
なるので、パケットサイズを予想することは非常に困難
である。それ故、「最良適合」解決策は、グローバルな
アドレススペースの最適な使用ではない。
【0017】
【課題を解決するための手段】本発明の第1の特徴によ
れば、ネットワークによって相互接続される多数のコン
ピュータシステムを有する分散型システムにおいて方法
が実施される。本発明の第1の特徴のこの方法によれ
ば、少なくとも1つのコンピュータは、記憶装置と、ネ
ットワークアダプタと、V86モードドライバとを備え
ている。パケットの送信中に、この方法は、V86モー
ドドライバによってアクセスできるメモリの部分内に存
在する単一バッファにパケットを記憶する。又、パケッ
トの送信中に、この方法は、V86モードドライバを使
用しながらバッファからパケットを検索する。
れば、ネットワークによって相互接続される多数のコン
ピュータシステムを有する分散型システムにおいて方法
が実施される。本発明の第1の特徴のこの方法によれ
ば、少なくとも1つのコンピュータは、記憶装置と、ネ
ットワークアダプタと、V86モードドライバとを備え
ている。パケットの送信中に、この方法は、V86モー
ドドライバによってアクセスできるメモリの部分内に存
在する単一バッファにパケットを記憶する。又、パケッ
トの送信中に、この方法は、V86モードドライバを使
用しながらバッファからパケットを検索する。
【0018】本発明の別の特徴によれば、分散型システ
ムは、ネットワークと、記憶装置と、処理手段とを備え
ている。ネットワークは、ネットワークパケットの送信
を与える。ネットワークに接続された記憶装置は、V8
6モードプログラムによってアクセスできる部分を有
し、そしてバッファを含んでいる。処理手段は、ネット
ワークパケットをバッファにロードするためのパケット
ローダと、バッファからパケットを検索するためのパケ
ット検索手段とを備えている。
ムは、ネットワークと、記憶装置と、処理手段とを備え
ている。ネットワークは、ネットワークパケットの送信
を与える。ネットワークに接続された記憶装置は、V8
6モードプログラムによってアクセスできる部分を有
し、そしてバッファを含んでいる。処理手段は、ネット
ワークパケットをバッファにロードするためのパケット
ローダと、バッファからパケットを検索するためのパケ
ット検索手段とを備えている。
【0019】
【実施例】本発明の好ましい実施例は、V86モードネ
ットワークドライバを使用したときにパケットをバッフ
ァするための公知技術の改良を提供する。本発明の好ま
しい実施例は、V86モードネットワークドライバによ
ってアクセスできる円形バッファを使用することにより
公知技術に対してメモリの利用を改善するものである。
パケットを先入れ先出し(FIFO)形態で処理するこ
とによって円形バッファ内でパケットの順序が維持され
る。更に、本発明の好ましい実施例は、ネットワークア
ダプタのアイドル時間を最小にすることによって高いシ
ステムスループットを与えると共に、失われるパケット
数を最小にすることによって高いデータ信頼性を与え
る。
ットワークドライバを使用したときにパケットをバッフ
ァするための公知技術の改良を提供する。本発明の好ま
しい実施例は、V86モードネットワークドライバによ
ってアクセスできる円形バッファを使用することにより
公知技術に対してメモリの利用を改善するものである。
パケットを先入れ先出し(FIFO)形態で処理するこ
とによって円形バッファ内でパケットの順序が維持され
る。更に、本発明の好ましい実施例は、ネットワークア
ダプタのアイドル時間を最小にすることによって高いシ
ステムスループットを与えると共に、失われるパケット
数を最小にすることによって高いデータ信頼性を与え
る。
【0020】図5は、本発明の好ましい実施例を遂行す
るのに適した分散型システム500を示している。この
分散型システム500は、ネットワーク511によって
相互接続されたコンピュータシステム502、504、
506、508及び510を備えている。ネットワーク
511は、ローカルエリアネットワーク(LAN)でも
よいし、ワイドエリアネットワーク(WAN)でもよい
し、或いは他の適当な相互接続メカニズムでもよい。図
5に示した分散型システム500の構成は単なる説明に
過ぎないことが当業者に明らかであろう。
るのに適した分散型システム500を示している。この
分散型システム500は、ネットワーク511によって
相互接続されたコンピュータシステム502、504、
506、508及び510を備えている。ネットワーク
511は、ローカルエリアネットワーク(LAN)でも
よいし、ワイドエリアネットワーク(WAN)でもよい
し、或いは他の適当な相互接続メカニズムでもよい。図
5に示した分散型システム500の構成は単なる説明に
過ぎないことが当業者に明らかであろう。
【0021】図6は、コンピュータシステム502の詳
細なブロック図である。他のコンピュータシステム50
4、506、508、510も同様の要素を含むことが
当業者に明らかであろう。コンピュータシステム502
は、中央処理ユニット(CPU)619と、メモリ60
0と、ネットワークアダプタ616とを備えている。ネ
ットワークアダプタ616はプロセッサ621及び常駐
RAMを備えている。ネットワークアダプタ616は、
一般に、拡張カードの形態をとり、他のコンピュータと
通信できるようにネットワーク511に接続される。ネ
ットワークアダプタ616は、コンピュータシステム5
02のメモリ600に常駐するネットワークドライバ6
14によって制御される。ネットワークドライバ614
は、V86モード604で実行され、従って、コンピュ
ータシステム502の仮想メモリ600の第1メガバイ
トに存在する。プログラム606は、ネットワーク51
1を経て送信されるパケットの発信者及び最終受信者と
して働く。プログラム606は、プロトコルドライバで
あってもよい。プログラム606は、一般に、保護モー
ド602で実行され、従って、メモリの第1メガバイト
内に存在する存在する必要はない。ネットワークドライ
バ614及びプログラム606は、マッパ608を経て
パケットを交換する。マッパ608は、保護モードで実
行される部分と、V86モードで実行される部分とを備
えている。バッファ613は、メモリの第1メガバイト
に設けられ、プログラム606とネットワークドライバ
614との間でパケットをバッファする。バッファ61
3は、以下で詳細に説明するように円形送信バッファ6
12及び円形受信バッファ610を備えている。
細なブロック図である。他のコンピュータシステム50
4、506、508、510も同様の要素を含むことが
当業者に明らかであろう。コンピュータシステム502
は、中央処理ユニット(CPU)619と、メモリ60
0と、ネットワークアダプタ616とを備えている。ネ
ットワークアダプタ616はプロセッサ621及び常駐
RAMを備えている。ネットワークアダプタ616は、
一般に、拡張カードの形態をとり、他のコンピュータと
通信できるようにネットワーク511に接続される。ネ
ットワークアダプタ616は、コンピュータシステム5
02のメモリ600に常駐するネットワークドライバ6
14によって制御される。ネットワークドライバ614
は、V86モード604で実行され、従って、コンピュ
ータシステム502の仮想メモリ600の第1メガバイ
トに存在する。プログラム606は、ネットワーク51
1を経て送信されるパケットの発信者及び最終受信者と
して働く。プログラム606は、プロトコルドライバで
あってもよい。プログラム606は、一般に、保護モー
ド602で実行され、従って、メモリの第1メガバイト
内に存在する存在する必要はない。ネットワークドライ
バ614及びプログラム606は、マッパ608を経て
パケットを交換する。マッパ608は、保護モードで実
行される部分と、V86モードで実行される部分とを備
えている。バッファ613は、メモリの第1メガバイト
に設けられ、プログラム606とネットワークドライバ
614との間でパケットをバッファする。バッファ61
3は、以下で詳細に説明するように円形送信バッファ6
12及び円形受信バッファ610を備えている。
【0022】プログラム606は、パケットの発信者及
び最終受信者であるとして説明するが、このプログラム
は、パケットを発生又は受信することのできるコードセ
グメント、プロセス、ライブラリ又は他のエンティティ
でもよいことが当業者に明らかであろう。更に、本発明
は、パケットの使用を参照して説明するが、他の形態の
データにも使用できることが当業者に明らかであろう。
更に、円形バッファのサイズがランタイムに変化するよ
うに円形バッファを実施できることも当業者に明らかで
あろう。
び最終受信者であるとして説明するが、このプログラム
は、パケットを発生又は受信することのできるコードセ
グメント、プロセス、ライブラリ又は他のエンティティ
でもよいことが当業者に明らかであろう。更に、本発明
は、パケットの使用を参照して説明するが、他の形態の
データにも使用できることが当業者に明らかであろう。
更に、円形バッファのサイズがランタイムに変化するよ
うに円形バッファを実施できることも当業者に明らかで
あろう。
【0023】図6は、単一の円形送信バッファ612及
び単一の円形受信バッファ614のみを示しているが、
多数のバッファを使用できることが明らかであろう。例
えば、ネットワークドライバ614が、米国ユタ州プロ
ボのノーベル・コーポレーションによって配給されるオ
ープンデータリンクインターフェイス(ODI)ネット
ワークドライバであるときは、1つの円形送信バッファ
612と、1つの円形受信バッファ610が必要とされ
る。更に、ネットワークドライバ614が、米国ワシン
トン州レドモンドのマイクロソフト・コーポレーション
によって配給されるネットワークドライブインターフェ
イス仕様(NDIS)V86モードドライバであるとき
には、全てのネットワークドライバに対して1つの円形
送信バッファ612が使用されるが、1つの非円形バッ
ファがアダプタ当たりの受信バッファとして使用され
る。受信バッファが円形でないのは、NDISネットワ
ークドライバがパケット受信に対して同期通信を与え、
一度に2つ以上のパケットを決して受け取らないからで
ある。
び単一の円形受信バッファ614のみを示しているが、
多数のバッファを使用できることが明らかであろう。例
えば、ネットワークドライバ614が、米国ユタ州プロ
ボのノーベル・コーポレーションによって配給されるオ
ープンデータリンクインターフェイス(ODI)ネット
ワークドライバであるときは、1つの円形送信バッファ
612と、1つの円形受信バッファ610が必要とされ
る。更に、ネットワークドライバ614が、米国ワシン
トン州レドモンドのマイクロソフト・コーポレーション
によって配給されるネットワークドライブインターフェ
イス仕様(NDIS)V86モードドライバであるとき
には、全てのネットワークドライバに対して1つの円形
送信バッファ612が使用されるが、1つの非円形バッ
ファがアダプタ当たりの受信バッファとして使用され
る。受信バッファが円形でないのは、NDISネットワ
ークドライバがパケット受信に対して同期通信を与え、
一度に2つ以上のパケットを決して受け取らないからで
ある。
【0024】円形送信バッファ612及び円形受信バッ
ファ610は、同様の構成のものである。図7は、この
ようなバッファの構成を示している。これらの円形バッ
ファ610及び612は、システムの始動時にメモリの
第1メガバイトに予め割り当てられ、マッパ608によ
りシステムの寿命期間中維持される。各円形バッファ7
10は固定長さのものである。図7において、バッファ
710は、4k(即ち4096バイト)の長さを有して
いる。バッファ710は、物理的な開始部及び物理的な
終了部と、論理的な開始部(ヘッド)及び論理的な終了
部(テイル)とを有している。ポインタは、バッファ7
10の論理的な開始部及び論理的な終了部を指定するよ
うに維持される。ポインタTxStart700は、円
形バッファ710の論理的なヘッドを指し、一方、ポイ
ンタTxStop702は、円形バッファ710の論理
的なテイルを指す。他の状態情報も円形バッファ710
に対して維持される。この状態情報は、バッファ710
の全長に等しいTxLenと示された値と、使用可能な
バッファスペースの量を指定する値TxAvailと、
バッファ710に現在あるパケット数を指定するリクエ
ストとして知られている値とを含む。
ファ610は、同様の構成のものである。図7は、この
ようなバッファの構成を示している。これらの円形バッ
ファ610及び612は、システムの始動時にメモリの
第1メガバイトに予め割り当てられ、マッパ608によ
りシステムの寿命期間中維持される。各円形バッファ7
10は固定長さのものである。図7において、バッファ
710は、4k(即ち4096バイト)の長さを有して
いる。バッファ710は、物理的な開始部及び物理的な
終了部と、論理的な開始部(ヘッド)及び論理的な終了
部(テイル)とを有している。ポインタは、バッファ7
10の論理的な開始部及び論理的な終了部を指定するよ
うに維持される。ポインタTxStart700は、円
形バッファ710の論理的なヘッドを指し、一方、ポイ
ンタTxStop702は、円形バッファ710の論理
的なテイルを指す。他の状態情報も円形バッファ710
に対して維持される。この状態情報は、バッファ710
の全長に等しいTxLenと示された値と、使用可能な
バッファスペースの量を指定する値TxAvailと、
バッファ710に現在あるパケット数を指定するリクエ
ストとして知られている値とを含む。
【0025】パケットが円形バッファ710に記憶され
たときに、パケットにヘッダが追加される。ヘッダは、
図7に示すように、2つのフィールド704及び706
を含んでいる。ヘッダの最初の2つのバイトは、使用中
(IU)フラグ704を含んでおり、これは、バッファ
710のこの部分がまだ使用中であるか又は別のパケッ
トによって使用されるように空いているかを指示する。
第2のフィールドであるLen(長さとして短い)フィ
ールド706も、2バイト長さであり、バッファ710
のこの部分におけるデータ708の長さを指定する。デ
ータフィールド708は、パケットのサイズに基づく可
変長さである。
たときに、パケットにヘッダが追加される。ヘッダは、
図7に示すように、2つのフィールド704及び706
を含んでいる。ヘッダの最初の2つのバイトは、使用中
(IU)フラグ704を含んでおり、これは、バッファ
710のこの部分がまだ使用中であるか又は別のパケッ
トによって使用されるように空いているかを指示する。
第2のフィールドであるLen(長さとして短い)フィ
ールド706も、2バイト長さであり、バッファ710
のこの部分におけるデータ708の長さを指定する。デ
ータフィールド708は、パケットのサイズに基づく可
変長さである。
【0026】マッパ608は、プログラム606から受
け取ったパケットを円形バッファ610へ書き込む役割
を果たす。マッパ608は、CopyDownPack
et(パケットコピーダウン)ルーチンを呼び出してパ
ケットをプログラム606からバッファへコピーし、次
いで、バッファがネットワークドライバへ送られてネッ
トワークを経て送信される。CopyDownPack
etルーチンを使用することにより、バッファ内の細分
化が生じないので、メモリの利用性が向上される。更
に、マッパ608は固定数の固定サイズバッファに限定
されないので、システムスループットが増加され、従っ
て、バッファの一部分が使用できるようになるのをマッ
パが待機しなければならない唯一の時間は、バッファが
完全にいっぱいになったときであり、この場合には、ス
ループットに影響が及ぶ。図8は、CopyDownP
acketルーチンによって実行されるステップのフロ
ーチャートである。このCopyDownPacket
ルーチンは、最初に、パケットを記憶するに充分な余裕
がバッファ710にあるかどうかを決定する(ステップ
800)。この決定は、パケットサイズを、バッファ7
10内の使用可能なスペースを指定する値TxAvai
lと比較することによって行われる。充分な使用可能な
スペースがバッファ710にない場合には、マッパ60
8は待機しそしてリクエストの送信(リクエスト送信)
を行わず(ステップ802)、リクエストは後で再び試
みられる。バッファ710に充分な余裕がある場合に
は、使用中フラグ704がセットされ、パケットによっ
て占有されるべきバッファの部分が使用中であることを
指示する(ステップ804)。更に、パケットが占有す
るバッファ710のメモリの量がLenフィールド70
6に書き込まれる。次いで、ヘッダ情報を加味するため
に、パケットに4バイトを加えたサイズだけTxSto
p702が増加される(ステップ808)。TxSto
p702が増加されるときに、TxStop702の値
がバッファの範囲を越えた(即ち、バッファの物理的な
終わりを越えた)場合には(ステップ810)、TxS
topの値がバッファの始めへ循環するようにセットさ
れる(ステップ812)。次いで、バッファ710の割
り当てられた部分のデータフィールド708へパケット
がコピーされる(ステップ814)。最終的に、値Tx
Availは、パケットの記憶を表すようにパケットに
より占有されたバッファスペースの量だけ減少される
(ステップ816)。「リクエスト」変数は、別のリク
エストが処理されたことを指示するために1だけ増加さ
れ(ステップ818)、そしてマッパ608は、バッフ
ァのその部分のアドレスをネットワークドライバ614
へ通す(ステップ820)。ネットワークドライバ61
4がバッファのその部分のアドレスを受け取った後に、
ネットワークドライバ614は、バッファからパケット
をコピーし、そしてそのパケットをネットワークアダプ
タ616のRAMへコピーする。ネットワークアダプタ
616は、次いで、ネットワーク511を経てパケット
を送信する。
け取ったパケットを円形バッファ610へ書き込む役割
を果たす。マッパ608は、CopyDownPack
et(パケットコピーダウン)ルーチンを呼び出してパ
ケットをプログラム606からバッファへコピーし、次
いで、バッファがネットワークドライバへ送られてネッ
トワークを経て送信される。CopyDownPack
etルーチンを使用することにより、バッファ内の細分
化が生じないので、メモリの利用性が向上される。更
に、マッパ608は固定数の固定サイズバッファに限定
されないので、システムスループットが増加され、従っ
て、バッファの一部分が使用できるようになるのをマッ
パが待機しなければならない唯一の時間は、バッファが
完全にいっぱいになったときであり、この場合には、ス
ループットに影響が及ぶ。図8は、CopyDownP
acketルーチンによって実行されるステップのフロ
ーチャートである。このCopyDownPacket
ルーチンは、最初に、パケットを記憶するに充分な余裕
がバッファ710にあるかどうかを決定する(ステップ
800)。この決定は、パケットサイズを、バッファ7
10内の使用可能なスペースを指定する値TxAvai
lと比較することによって行われる。充分な使用可能な
スペースがバッファ710にない場合には、マッパ60
8は待機しそしてリクエストの送信(リクエスト送信)
を行わず(ステップ802)、リクエストは後で再び試
みられる。バッファ710に充分な余裕がある場合に
は、使用中フラグ704がセットされ、パケットによっ
て占有されるべきバッファの部分が使用中であることを
指示する(ステップ804)。更に、パケットが占有す
るバッファ710のメモリの量がLenフィールド70
6に書き込まれる。次いで、ヘッダ情報を加味するため
に、パケットに4バイトを加えたサイズだけTxSto
p702が増加される(ステップ808)。TxSto
p702が増加されるときに、TxStop702の値
がバッファの範囲を越えた(即ち、バッファの物理的な
終わりを越えた)場合には(ステップ810)、TxS
topの値がバッファの始めへ循環するようにセットさ
れる(ステップ812)。次いで、バッファ710の割
り当てられた部分のデータフィールド708へパケット
がコピーされる(ステップ814)。最終的に、値Tx
Availは、パケットの記憶を表すようにパケットに
より占有されたバッファスペースの量だけ減少される
(ステップ816)。「リクエスト」変数は、別のリク
エストが処理されたことを指示するために1だけ増加さ
れ(ステップ818)、そしてマッパ608は、バッフ
ァのその部分のアドレスをネットワークドライバ614
へ通す(ステップ820)。ネットワークドライバ61
4がバッファのその部分のアドレスを受け取った後に、
ネットワークドライバ614は、バッファからパケット
をコピーし、そしてそのパケットをネットワークアダプ
タ616のRAMへコピーする。ネットワークアダプタ
616は、次いで、ネットワーク511を経てパケット
を送信する。
【0027】パケットが円形受信バッファ610又は円
形送信バッファ612から送られた後に、マッパは、パ
ケットを保持していたバッファスペースを解放してその
スペースを再び使用できるようにする必要がある。Fr
eeCircTxMem(円形送信メモリ解放)ルーチ
ンがこのタスクを実行する。図9は、FreeCirc
TxMemルーチンによって実行されるステップのフロ
ーチャートを示す。最初に、送信されたパケットに対し
「使用中」フラグ704が「非使用中」にセットされる
(ステップ900)。次いで、TxStartポインタ
700が、パケットを保持していたバッファスペースの
開始部を指す場合(ステップ902)、TxStart
ポインタ700は、Lenフィールド706に4を加え
た値だけ増加され(ステップ904)、そしてTxAv
ailは、Lenフィールド706に4を加えた値だけ
増加される(ステップ905)。TxStart700
がパケットが存在するスペースを既に指しており、そし
て増加の後に、新たなTxStart700が使用中で
ないバッファの部分を指す場合には(ステップ90
6)、TxStart700は、Lenフィールド70
6の値だけ再び増加され(ステップ904)、そしてT
xAvailは、再び、Lenフィールド706に4を
加えた値だけ増加される(ステップ905)。TxSt
art700の増加は、バッファ710が完全に空にな
るか、又は「使用中」とマークされた使用中フィールド
704をもつバッファ710の一部分が見つかるまで続
けられる。次いで、「リクエスト」変数が1だけ減少さ
れる(ステップ910)。しかしながら、パケットが存
在するバッファ710の部分をTxStart700が
指さない場合には(ステップ902)、マッパは、単に
「リクエスト」変数を減少する(ステップ910)。
形送信バッファ612から送られた後に、マッパは、パ
ケットを保持していたバッファスペースを解放してその
スペースを再び使用できるようにする必要がある。Fr
eeCircTxMem(円形送信メモリ解放)ルーチ
ンがこのタスクを実行する。図9は、FreeCirc
TxMemルーチンによって実行されるステップのフロ
ーチャートを示す。最初に、送信されたパケットに対し
「使用中」フラグ704が「非使用中」にセットされる
(ステップ900)。次いで、TxStartポインタ
700が、パケットを保持していたバッファスペースの
開始部を指す場合(ステップ902)、TxStart
ポインタ700は、Lenフィールド706に4を加え
た値だけ増加され(ステップ904)、そしてTxAv
ailは、Lenフィールド706に4を加えた値だけ
増加される(ステップ905)。TxStart700
がパケットが存在するスペースを既に指しており、そし
て増加の後に、新たなTxStart700が使用中で
ないバッファの部分を指す場合には(ステップ90
6)、TxStart700は、Lenフィールド70
6の値だけ再び増加され(ステップ904)、そしてT
xAvailは、再び、Lenフィールド706に4を
加えた値だけ増加される(ステップ905)。TxSt
art700の増加は、バッファ710が完全に空にな
るか、又は「使用中」とマークされた使用中フィールド
704をもつバッファ710の一部分が見つかるまで続
けられる。次いで、「リクエスト」変数が1だけ減少さ
れる(ステップ910)。しかしながら、パケットが存
在するバッファ710の部分をTxStart700が
指さない場合には(ステップ902)、マッパは、単に
「リクエスト」変数を減少する(ステップ910)。
【0028】又、円形受信バッファ610は、パケット
を受信できねばならない。円形受信バッファ610は、
ReceivePacket(パケット受信)ルーチン
を用いることによりネットワーク511からパケットを
受け取る。ReceivePacketルーチンは、ネ
ットワークドライバ614からパケットを受け入れそし
てそれをプログラム606へ通す。ODIネットワーク
ドライバのような非同期のネットワークドライバがパケ
ットを受信するときには、ドライバは、マッパ608に
「ReceiveLookAhead」メッセージを送
信する。このメッセージは、パケットが受信されている
ことを示し、そしてこのメッセージは、パケットの最初
の128バイトまでを含む。ネットワークドライバ61
4が全パケットを受信した後に、ドライバは「完了」メ
ッセージをマッパ608に送信して、全パケットが受信
されたことを指示する。ネットワークアダプタ616及
びネットワークドライバ614を通る通信は非同期で行
われ、従って、「完了」メッセージが「Receive
LookAhead」メッセージの順序から外れて到着
することが考えられるので、複雑さが生じる。それ故、
マッパ608によって完了が受け取られるたびに、マッ
パ608がパケットをプログラム606へ引き渡す場合
には、パケットの順序ずれが生じる。本発明は、この問
題を解消するものである。
を受信できねばならない。円形受信バッファ610は、
ReceivePacket(パケット受信)ルーチン
を用いることによりネットワーク511からパケットを
受け取る。ReceivePacketルーチンは、ネ
ットワークドライバ614からパケットを受け入れそし
てそれをプログラム606へ通す。ODIネットワーク
ドライバのような非同期のネットワークドライバがパケ
ットを受信するときには、ドライバは、マッパ608に
「ReceiveLookAhead」メッセージを送
信する。このメッセージは、パケットが受信されている
ことを示し、そしてこのメッセージは、パケットの最初
の128バイトまでを含む。ネットワークドライバ61
4が全パケットを受信した後に、ドライバは「完了」メ
ッセージをマッパ608に送信して、全パケットが受信
されたことを指示する。ネットワークアダプタ616及
びネットワークドライバ614を通る通信は非同期で行
われ、従って、「完了」メッセージが「Receive
LookAhead」メッセージの順序から外れて到着
することが考えられるので、複雑さが生じる。それ故、
マッパ608によって完了が受け取られるたびに、マッ
パ608がパケットをプログラム606へ引き渡す場合
には、パケットの順序ずれが生じる。本発明は、この問
題を解消するものである。
【0029】図10は、ReceivePacketル
ーチンによって実行されるステップのフローチャートで
ある。ReceivePacketルーチンが最初にネ
ットワークドライバ614からReceiveLook
Aheadパケットを受け取るときには、マッパ608
は、「完了」メッセージが受け取られていないパケット
があるかどうか決定する(ステップ1000)。保留と
なっている「完了」メッセージがない場合には、マッパ
は、パケットが128バイト未満であるかどうか決定す
る(ステップ1007)。パケットが128バイト未満
である場合は、パケットがプログラム606へ直接送ら
れ(ステップ1003)、バッファ動作は不要である。
パケットが128バイトより大きい場合(ステップ10
01)には、マッパ608は、バッファの一部分を割り
当て、バッファの一部分のアドレスをネットワークドラ
イバ614へ通し(ステップ1002)、ネットワーク
ドライバ614がバッファのその部分へパケットを充填
し終えるのを待機し(ステップ1004)、そしてバッ
ファのその部分のアドレスをプログラム606へ送る
(ステップ1018)。しかしながら、保留中の完了メ
ッセージがある場合には、マッパ608は、Recei
veLookAheadメッセージを受け取るときに、
使用中フィールド704における円形バッファ710の
次に使用可能な部分を迅速バッファとマークする(ステ
ップ1006)。バッファの一部分を迅速バッファとマ
ークすることは、それより前の全ての保留中完了メッセ
ージが受け取られるまでバッファのアドレスをプログラ
ム606へ送信できないことを表す。迅速バッファを使
用することによって、マッパ608は、パケットの順序
が維持され、従って、データの完全性を与えるよう確保
する。次いで、マッパ608は、パケットが128バイ
ト未満であるかどうかを決定する(ステップ100
8)。パケットが128バイト未満である場合には、マ
ッパ608は、パケットを迅速バッファへ自動的にコピ
ーする(ステップ1010)。さもなくば、マッパ60
8は、迅速バッファに対するアドレスを含むECB10
12(メモリブロック記述子)を形成し、そしてこのE
CBをネットワークドライバ614へ通さねばならな
い。更に、マッパ608は、ECBのアドレスを迅速バ
ッファの「Len」フィールド706に記憶する。ネッ
トワークドライバ614は、次いで、受け取ったパケッ
トをバッファの一部分に充填し、そしてそれが完了した
ことをマッパ608に知らせる(ステップ1014)。
この受信に対して「完了」メッセージを受け取ると、マ
ッパ608は、それ以前の全ての保留中の完了メッセー
ジが受け取られるのを待機した後に(ステップ101
6)、バッファの一部分のアドレスをプログラム606
へ通せるようになる(ステップ1018)。最終的に、
全ての保留中の完了メッセージが受け取られると、マッ
パ608は、パケットが存在する迅速バッファのアドレ
スをプログラム606へ通す(ステップ1018)。
ーチンによって実行されるステップのフローチャートで
ある。ReceivePacketルーチンが最初にネ
ットワークドライバ614からReceiveLook
Aheadパケットを受け取るときには、マッパ608
は、「完了」メッセージが受け取られていないパケット
があるかどうか決定する(ステップ1000)。保留と
なっている「完了」メッセージがない場合には、マッパ
は、パケットが128バイト未満であるかどうか決定す
る(ステップ1007)。パケットが128バイト未満
である場合は、パケットがプログラム606へ直接送ら
れ(ステップ1003)、バッファ動作は不要である。
パケットが128バイトより大きい場合(ステップ10
01)には、マッパ608は、バッファの一部分を割り
当て、バッファの一部分のアドレスをネットワークドラ
イバ614へ通し(ステップ1002)、ネットワーク
ドライバ614がバッファのその部分へパケットを充填
し終えるのを待機し(ステップ1004)、そしてバッ
ファのその部分のアドレスをプログラム606へ送る
(ステップ1018)。しかしながら、保留中の完了メ
ッセージがある場合には、マッパ608は、Recei
veLookAheadメッセージを受け取るときに、
使用中フィールド704における円形バッファ710の
次に使用可能な部分を迅速バッファとマークする(ステ
ップ1006)。バッファの一部分を迅速バッファとマ
ークすることは、それより前の全ての保留中完了メッセ
ージが受け取られるまでバッファのアドレスをプログラ
ム606へ送信できないことを表す。迅速バッファを使
用することによって、マッパ608は、パケットの順序
が維持され、従って、データの完全性を与えるよう確保
する。次いで、マッパ608は、パケットが128バイ
ト未満であるかどうかを決定する(ステップ100
8)。パケットが128バイト未満である場合には、マ
ッパ608は、パケットを迅速バッファへ自動的にコピ
ーする(ステップ1010)。さもなくば、マッパ60
8は、迅速バッファに対するアドレスを含むECB10
12(メモリブロック記述子)を形成し、そしてこのE
CBをネットワークドライバ614へ通さねばならな
い。更に、マッパ608は、ECBのアドレスを迅速バ
ッファの「Len」フィールド706に記憶する。ネッ
トワークドライバ614は、次いで、受け取ったパケッ
トをバッファの一部分に充填し、そしてそれが完了した
ことをマッパ608に知らせる(ステップ1014)。
この受信に対して「完了」メッセージを受け取ると、マ
ッパ608は、それ以前の全ての保留中の完了メッセー
ジが受け取られるのを待機した後に(ステップ101
6)、バッファの一部分のアドレスをプログラム606
へ通せるようになる(ステップ1018)。最終的に、
全ての保留中の完了メッセージが受け取られると、マッ
パ608は、パケットが存在する迅速バッファのアドレ
スをプログラム606へ通す(ステップ1018)。
【0030】本発明を、その好ましい実施例を参照して
説明したが、特許請求の範囲に規定された本発明の精神
及び範囲から逸脱せずに、種々の変更がなされ得ること
が当業者に明らかであろう。
説明したが、特許請求の範囲に規定された本発明の精神
及び範囲から逸脱せずに、種々の変更がなされ得ること
が当業者に明らかであろう。
【図1】8088マイクロプロセッサに対して使用され
るアドレス機構を示す図である。
るアドレス機構を示す図である。
【図2】保護モードで動作する80386マイクロプロ
セッサに対して使用されるアドレス機構を示す図であ
る。
セッサに対して使用されるアドレス機構を示す図であ
る。
【図3】ネットワークパケットをバッファするための公
知システムを示す図である。
知システムを示す図である。
【図4】ネットワークパケットをバッファするための公
知システムにおいて実行されるステップのフローチャー
トである。
知システムにおいて実行されるステップのフローチャー
トである。
【図5】本発明の好ましい実施例を遂行する例示的分散
システムを示す図である。
システムを示す図である。
【図6】図5のコンピュータシステムの詳細なブロック
図である。
図である。
【図7】本発明の好ましい実施例に用いられる円形バッ
ファを示す図である。
ファを示す図である。
【図8】本発明の好ましい実施例においてCopyDo
wnPacketファンクションによって実行されるス
テップを示すフローチャートである。
wnPacketファンクションによって実行されるス
テップを示すフローチャートである。
【図9】本発明の好ましい実施例においてFreeCi
rcTxMemファンクションによって実行されるステ
ップを示すフローチャートである。
rcTxMemファンクションによって実行されるステ
ップを示すフローチャートである。
【図10】本発明の好ましい実施例においてRecei
vePacketファンクションによって実行されるス
テップを示すフローチャートである。
vePacketファンクションによって実行されるス
テップを示すフローチャートである。
500 分散型システム 502、504、506、508、510 コンピュー
タシステム 511 ネットワーク 600 メモリ 604 V86モード 606 プログラム 608 マッパ 610 円形受信バッファ 612 円形送信バッファ 613 バッファ 614 ネットワークドライバ 616 ネットワークアダプタ 619 CPU 621 プロセッサ
タシステム 511 ネットワーク 600 メモリ 604 V86モード 606 プログラム 608 マッパ 610 円形受信バッファ 612 円形送信バッファ 613 バッファ 614 ネットワークドライバ 616 ネットワークアダプタ 619 CPU 621 プロセッサ
Claims (18)
- 【請求項1】 コンピュータシステムを有する分散型の
システムにおいて、上記コンピュータシステムの少なく
とも1つは、記憶装置と、ネットワークアダプタと、該
ネットワークアダプタにインターフェイスするV86モ
ードドライバとを有し、上記分散型システムは、ネット
ワークパケットを送信するためのネットワークを含むも
のであり、 V86モードドライバによってアクセスできるメモリの
一部分の単一バッファにネットワークパケットを記憶
し、そしてV86モードドライバを用いて上記バッファ
からネットワークパケットを検索するという段階を備え
たことを特徴とする方法。 - 【請求項2】 上記バッファは一連の部分より成るもの
で、開始部及び終了部を有し、そしてネットワークパケ
ットを記憶する上記段階は、 パケットを記憶する間に、 パケットに含まれた情報をバッファの上記一連の部分に
記憶し、 パケットに含まれた全ての情報が記憶される前にバッフ
ァの終了部に到達したかどうかを検出し、そしてパケッ
トの全ての情報が記憶される前にバッファの終了部に到
達した場合にはバッファにまだ記憶されていないパケッ
トに含まれた情報をバッファの開始部から始めてその一
連の部分に記憶する、という段階を備えた請求項1に記
載の方法。 - 【請求項3】 ネットワークパケットを記憶する上記段
階は、パケットがバッファに受け取られた順序に基づい
てバッファの次に続く区分に各パケットを記憶する段階
を備えた請求項1に記載の方法。 - 【請求項4】 上記V86モードネットワークドライバ
は、保護モードコンピュータプログラムにインターフェ
イスし、そして上記方法は、更に、上記バッファが上記
ネットワークパケットを上記保護モードコンピュータプ
ログラムから受け取るようにする段階を備えた請求項1
に記載の方法。 - 【請求項5】 上記バッファが上記ネットワークパケッ
トをV86モードネットワークドライバから受け取るよ
うにする段階を更に備えた請求項1に記載の方法。 - 【請求項6】 上記V86モードネットワークドライバ
は、保護モードコンピュータプログラムにインターフェ
イスし、そして上記方法は、更に、上記ネットワークパ
ケットを上記バッファから上記保護モードコンピュータ
プログラムへ送信する段階を備えた請求項1に記載の方
法。 - 【請求項7】 上記ネットワークパケットを上記バッフ
ァからV86モードドライバへ送信する段階を備えた請
求項1に記載の方法。 - 【請求項8】 複数のコンピュータシステムを備えた分
散型システムにおいて、各コンピュータシステムは相互
接続され、少なくとも1つのコンピュータシステムは、
メモリ及びマイクロプロセッサを有し、マイクロプロセ
ッサは、V86モード及び保護モードで実行する能力を
有し、パケットを送信及び受信する方法が、 V86モードでアクセスできるメモリの一部分に少なく
とも1つの固定長さのバッファを割り当て、 複数のパケットをバッファに記憶し、各パケットは順次
に記憶され、そしてパケットをバッファから検索する、
という段階を備えたことを特徴とする方法。 - 【請求項9】 上記バッファは一連の部分より成るもの
で、開始部及び終了部を有し、そしてパケットを記憶す
る上記段階は、 パケットを記憶する間に、 パケットに含まれた情報をバッファの上記一連の部分に
記憶し、 パケットに含まれた全ての情報が記憶される前にバッフ
ァの終了部に到達したかどうかを検出し、そしてパケッ
トの全ての情報が記憶される前にバッファの終了部に到
達した場合にはバッファにまだ記憶されていないパケッ
トに含まれた情報をバッファの開始部から始めてその一
連の部分に記憶する、という段階を備えた請求項8に記
載の方法。 - 【請求項10】 上記バッファは一連の部分より成り、
ネットワークパケットを記憶する上記段階は、パケット
がバッファに受け取られた順序に基づいてバッファの次
に続く区分に各パケットを記憶する段階を備えた請求項
8に記載の方法。 - 【請求項11】 上記バッファは論理的な末尾を有し、
上記方法は、更に、バッファにおけるパケット数のカウ
ントを維持すると共にバッファにおける使用可能なスペ
ースのカウントを維持する段階を備え、そしてパケット
を記憶する上記段階は、バッファの論理的な末尾を指す
ポインタを更新し、バッファにおけるパケット数のカウ
ントを増加し、そしてバッファ内の使用可能なスペース
のカウントを増加するという段階を備えている請求項8
に記載の方法。 - 【請求項12】 上記バッファは論理的な頭部を有し、
上記方法は、更に、バッファにおけるパケット数のカウ
ントを維持すると共にバッファにおける使用可能なスペ
ースのカウントを維持する段階を備え、そしてパケット
を検索する上記段階は、バッファの論理的な頭部を指す
ポインタを更新し、バッファにおけるパケット数のカウ
ントを減少し、そしてバッファ内の使用可能なスペース
のカウントを減少するという段階を備えている請求項8
に記載の方法。 - 【請求項13】 ネットワークパケットを送信するネッ
トワークと、 上記ネットワークに接続され、V86モードプログラム
によってアクセスできる部分を有し、この部分がネット
ワークパケットをバッファするためのバッファを保持す
るような記憶装置と、 上記ネットワークに接続された処理手段とを備え、該処
理手段は、 ネットワークパケットをバッファにロードするパケット
ローダと、 バッファからパケットを検索するパケット検索手段とを
含むことを特徴とする分散型システム。 - 【請求項14】 パケットを送信及び受信するコンピュ
ータシステムにおいて、 上記コンピュータシステムに接続されたネットワーク
と、 上記ネットワークに接続され、ネットワークを横切って
パケットを送信及び受信するためのネットワークアダプ
タと、 上記ネットワークアダプタに対してパケットを送信及び
受信するためのネットワークドライバと、 上記ネットワークドライバへパケットを送信すると共に
ネットワークドライバからパケットを受信するコンピュ
ータプログラムとを備え、このコンピュータプログラム
は、保護モードで動作し、 更に、上記コンピュータプログラムから受け取られるパ
ケットを保持すると共に、上記ネットワークドライバに
向けられるパケットを保持するための円形バッファを備
え、この円形バッファは、V86モードで実行するプロ
グラムによってアクセスできるものであり、 更に、上記ネットワークドライバから受け取られるパケ
ットを保持すると共に、上記コンピュータプログラムに
向けられるパケットを保持するための円形バッファを備
え、この円形バッファは、V86モードで実行するプロ
グラムによってアクセスできるものであることを特徴と
するコンピュータシステム。 - 【請求項15】 パケットを送信するためのコンピュー
タシステムにおける方法であって、コンピュータシステ
ムは、メモリ及びマイクロプロセッサを有しており、マ
イクロプロセッサは、V86モード及び保護モードで実
行する能力を有し、コンピュータは円形バッファを有
し、円形バッファは物理的な開始部及び論理的な終了部
を有し、パケットは複数のバイトで構成され、上記方法
は、 上記マイクロプロセッサがV86モードで実行する間
に、 コンピュータのメモリに固定長さの円形バッファを割り
当て、そして各パケットに対し、 円形バッファがパケットに対して充分な使用可能なスペ
ースを有するかどうかを決定し、 バッファの一部分がその円形バッファの論理的な終了部
の後の次の位置において使用されているか否かを表す指
示を記憶し、 上記指示の後のパケットの長さを記憶し、 パケットの各バイトに対し、 上記論理的な終了部の後のバイトに対して充分な空きバ
ッファスペースが存在する場合に、その円形バッファの
論理的な終了部の後の次の位置へバイトをコピーし、 上記バッファの論理的な終了部の後であって且つ上記バ
イトに対するバッファの物理的な終了部の前に充分な空
きバッファスペースがない場合に、円形バッファの物理
的な開始部にバイトをコピーし、そしてバッファの論理
的な終了部を更新する、という段階を備えたことを特徴
とする方法。 - 【請求項16】 パケットを受信するためのコンピュー
タシステムにおける方法であって、コンピュータシステ
ムは、メモリ及びマイクロプロセッサを有しており、マ
イクロプロセッサは、V86モード及び保護モードで実
行する能力を有し、コンピュータシステムは円形バッフ
ァ及びネットワークドライバを有し、円形バッファは物
理的な開始部及び論理的な終了部を有し、円形バッファ
はネットワークドライバにインターフェイスし、ネット
ワークドライバは、パケットが受け取られたときに受信
完了メッセージを送信し、そしてパケットは複数のバイ
トで構成され、上記方法は、 上記マイクロプロセッサがV86モードで実行する間
に、 コンピュータのメモリに固定長さの円形バッファを割り
当て、そして各パケットに対し、 円形バッファがパケットに対して充分な使用可能なスペ
ースを有するかどうかを決定し、 バッファの一部分がその円形バッファの論理的な終了部
の後の次の位置において使用されているか否かを表す指
示を記憶し、 上記指示の後のパケットの長さを記憶し、 パケットの各バイトに対し、 上記論理的な終了部の後のバイトに対して充分な空きバ
ッファスペースが存在する場合に、その円形バッファの
論理的な終了部の後の次の位置へバイトをコピーし、 上記バッファの論理的な終了部の後であって且つ上記バ
イトに対するバッファの物理的な終了部の前に充分な空
きバッファスペースがない場合に、円形バッファの物理
的な開始部にバイトをコピーし、そしてバッファの論理
的な終了部を更新する、という段階を備えたことを特徴
とする方法。 - 【請求項17】 使用中フラグを記憶する段階は、受信
完了が未解決になっているかどうかを検出しそして円形
バッファが迅速円形バッファであることを表す識別子を
記憶する段階を備えた請求項16に記載の方法。 - 【請求項18】 円形バッファに含まれたパケットに関
連したメモリを解放するためのコンピュータシステムに
おける方法であって、コンピュータシステムはマイクロ
プロセッサを有し、マイクロプロセッサは、V86モー
ド及び保護モードで実行する能力を有し、円形バッファ
は複数のパケットを含み、各パケットは円形バッファの
異なる部分に存在し、円形バッファの各部分は、使用中
又は非使用中としてセットされる使用中フラグと、長さ
フィールドを有し、そして円形バッファは、論理的な頭
部、論理的な末尾、円形バッファにおける使用可能なメ
モリのカウント、及び円形バッファにおけるパケット数
のカウントを有するものであり、上記方法は、 上記マイクロプロセッサがV86モードで実行する間
に、 解放されるべき円形バッファの各部分に対して、 上記使用中フラグを非使用中にセットし、 上記円形バッファの論理的な頭部がバッファの一部分を
指す場合に、バッファの各後続部分に対して、 その後続部分の使用中フラグが非使用中にセットされな
ければ、その後続部分の長さフィールドにおける値だけ
論理的頭部ポインタを増加し、 解放されたバッファの部分の数だけパケット数のカウン
トを減少し、そして解放されたバッファの全ての部分に
割り当てられたメモリの量だけ使用可能なメモリのカウ
ントを減少する、という段階を備えたことを特徴とする
方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14428093A | 1993-10-28 | 1993-10-28 | |
US08/144280 | 1993-10-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH07182260A true JPH07182260A (ja) | 1995-07-21 |
Family
ID=22507881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6263557A Withdrawn JPH07182260A (ja) | 1993-10-28 | 1994-10-27 | ネットワークパケットのフレームバッファ方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5826041A (ja) |
EP (1) | EP0651329A3 (ja) |
JP (1) | JPH07182260A (ja) |
CA (1) | CA2134061A1 (ja) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7577782B2 (en) * | 1996-02-02 | 2009-08-18 | Sony Corporation | Application programming interface for data transfer and bus management over a bus structure |
US6631435B1 (en) | 1996-02-02 | 2003-10-07 | Sony Corporation | Application programming interface for data transfer and bus management over a bus structure |
US5991520A (en) * | 1996-02-02 | 1999-11-23 | Sony Corporation | Application programming interface for managing and automating data transfer operations between applications over a bus structure |
US6233637B1 (en) | 1996-03-07 | 2001-05-15 | Sony Corporation | Isochronous data pipe for managing and manipulating a high-speed stream of isochronous data flowing between an application and a bus structure |
US6519268B1 (en) | 1996-03-07 | 2003-02-11 | Sony Corporation | Asynchronous data pipe for automatically managing asynchronous data transfers between an application and a bus structure |
US6493347B2 (en) * | 1996-12-16 | 2002-12-10 | Juniper Networks, Inc. | Memory organization in a switching device |
US6026451A (en) * | 1997-12-22 | 2000-02-15 | Intel Corporation | System for controlling a dispatch of requested data packets by generating size signals for buffer space availability and preventing a dispatch prior to a data request granted signal asserted |
US6151644A (en) * | 1998-04-17 | 2000-11-21 | I-Cube, Inc. | Dynamically configurable buffer for a computer network |
US6185640B1 (en) * | 1998-06-19 | 2001-02-06 | Philips Electronics North America Corporation | Minimal frame buffer manager allowing simultaneous read/write access by alternately filling and emptying a first and second buffer one packet at a time |
US6167471A (en) | 1998-10-14 | 2000-12-26 | Sony Corporation | Method of and apparatus for dispatching a processing element to a program location based on channel number of received data |
US6728961B1 (en) * | 1999-03-31 | 2004-04-27 | International Business Machines Corporation | Method and system for dynamically load balancing a process over a plurality of peer machines |
US6807615B1 (en) * | 1999-04-08 | 2004-10-19 | Sun Microsystems, Inc. | Apparatus and method for providing a cyclic buffer using logical blocks |
US7468985B2 (en) * | 2001-12-31 | 2008-12-23 | Stmicroelectronics, Inc. | System independent and scalable packet buffer management architecture for network processors |
US6654865B2 (en) * | 2002-01-31 | 2003-11-25 | Ubicom, Inc. | Netbufs: communication protocol packet buffering using paged memory management |
KR20050055549A (ko) * | 2003-12-08 | 2005-06-13 | 삼성전자주식회사 | Tcp/ip 통신을 위해 하드웨어적으로 구현한 링 버퍼관리 시스템 및 그 방법 |
US20060179392A1 (en) * | 2005-02-08 | 2006-08-10 | Takaaki Ota | Handshakeless retransmission protocol |
FR2889328B1 (fr) * | 2005-07-26 | 2007-09-28 | Atmel Nantes Sa Sa | Dispositif d'interfacage unidirectionnel de type fifo entre un bloc maitre et un bloc esclave, bloc maitre et bloc esclave correspondants |
US20080059811A1 (en) * | 2006-09-06 | 2008-03-06 | Ravi Sahita | Tamper resistant networking |
US7929418B2 (en) * | 2007-03-23 | 2011-04-19 | Hewlett-Packard Development Company, L.P. | Data packet communication protocol offload method and system |
US8032354B2 (en) * | 2007-12-27 | 2011-10-04 | Nvidia Corporation | Method and system for communicating between two independent software components of a device |
US8555380B2 (en) * | 2008-02-28 | 2013-10-08 | Intel Corporation | Automatic modification of executable code |
US8468356B2 (en) * | 2008-06-30 | 2013-06-18 | Intel Corporation | Software copy protection via protected execution of applications |
US9268707B2 (en) | 2012-12-29 | 2016-02-23 | Intel Corporation | Low overhead paged memory runtime protection |
US9367343B2 (en) * | 2014-08-29 | 2016-06-14 | Red Hat Israel, Ltd. | Dynamic batch management of shared buffers for virtual machines |
US10491667B1 (en) * | 2015-03-16 | 2019-11-26 | Amazon Technologies, Inc. | Customized memory modules in multi-tenant service provider systems |
CN112187403B (zh) * | 2017-02-04 | 2022-01-14 | 华为技术有限公司 | 信息处理的方法、装置、通信设备和通信*** |
US10152275B1 (en) | 2017-08-30 | 2018-12-11 | Red Hat, Inc. | Reverse order submission for pointer rings |
US11537855B2 (en) * | 2018-09-24 | 2022-12-27 | International Business Machines Corporation | Low spike count ring buffer mechanism on neuromorphic hardware |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4663706A (en) * | 1982-10-28 | 1987-05-05 | Tandem Computers Incorporated | Multiprocessor multisystem communications network |
NL8501143A (nl) * | 1985-04-19 | 1986-11-17 | Philips Nv | Kommunikatiesysteem voorzien van een eerst-in-eerst-uit-buffer. |
EP0215526B1 (en) * | 1985-09-19 | 1991-05-08 | BELL TELEPHONE MANUFACTURING COMPANY Naamloze Vennootschap | Data communication system |
JPS6426961A (en) * | 1987-07-23 | 1989-01-30 | Alps Electric Co Ltd | Exclusive control system for input/output port |
US5187780A (en) * | 1989-04-07 | 1993-02-16 | Digital Equipment Corporation | Dual-path computer interconnect system with zone manager for packet memory |
CA2011935A1 (en) * | 1989-04-07 | 1990-10-07 | Desiree A. Awiszio | Dual-path computer interconnect system with four-ported packet memory control |
-
1994
- 1994-10-21 CA CA002134061A patent/CA2134061A1/en not_active Abandoned
- 1994-10-26 EP EP94116900A patent/EP0651329A3/en not_active Withdrawn
- 1994-10-27 JP JP6263557A patent/JPH07182260A/ja not_active Withdrawn
-
1996
- 1996-11-12 US US08/747,186 patent/US5826041A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0651329A3 (en) | 1995-08-30 |
CA2134061A1 (en) | 1995-04-29 |
EP0651329A2 (en) | 1995-05-03 |
US5826041A (en) | 1998-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH07182260A (ja) | ネットワークパケットのフレームバッファ方法 | |
KR100326864B1 (ko) | 네트워크통신방법및네트워크시스템 | |
US6611883B1 (en) | Method and apparatus for implementing PCI DMA speculative prefetching in a message passing queue oriented bus system | |
US4730249A (en) | Method to operate on large segments of data in a virtual memory data processing system | |
US5961606A (en) | System and method for remote buffer allocation in exported memory segments and message passing between network nodes | |
JP4755390B2 (ja) | メモリを介してデータ処理システムの間でデータのフローを制御する方法および装置 | |
US6622193B1 (en) | Method and apparatus for synchronizing interrupts in a message passing queue oriented bus system | |
US8924624B2 (en) | Information processing device | |
US7409468B2 (en) | Controlling flow of data between data processing systems via a memory | |
US7721023B2 (en) | I/O address translation method for specifying a relaxed ordering for I/O accesses | |
JP4317365B2 (ja) | 周辺デバイスからホスト・コンピュータ・システムに割込みを転送する方法および装置 | |
EP1741023B1 (en) | Communicating protected data within locking messages | |
US7117338B2 (en) | Virtual memory address translation control by TLB purge monitoring | |
EP0602890B1 (en) | Transfer processing circuitry for use in parallel processing systems | |
JP3268980B2 (ja) | データ・バッファリング・システム | |
US5713044A (en) | System for creating new group of chain descriptors by updating link value of last descriptor of group and rereading link value of the updating descriptor | |
CN112650558B (zh) | 数据处理方法、装置、可读介质和电子设备 | |
US20210019261A1 (en) | Memory cache-line bounce reduction for pointer ring structures | |
JPH0926929A (ja) | 効率のよいデータ転送メカニズムに関する方法及び装置 | |
US7913059B2 (en) | Information processing device, data transfer method, and information storage medium | |
US6947971B1 (en) | Ethernet packet header cache | |
JPH1173365A (ja) | データ移動操作を最適化する方法 | |
JP3376956B2 (ja) | プロセッサ間通信装置 | |
JPH10105487A (ja) | 計算機ネットワーク通信方法およびネットワーク計算機システム | |
JPH0950423A (ja) | 遠隔情報処理システム間のデータ伝送方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20020115 |