(57)【特許請求の範囲】
【請求項１】
少なくとも１つのパケットの伝送の間にバッファとして使用されるメモリ装置（１６）内のパケットの終わりロケーションを識別する方法であって、
メモリ装置（１６）内の第１のメモリロケーション（４３）を予約するステップと、
第１の予約されたメモリロケーション（４３）のすぐ後の、メモリ装置（１６）内の第２のメモリロケーション（４５）を予約し、かつ、第２のメモリロケーションに値ＨＥＸ００００を書込むステップと、
少なくとも１つのパケットからのデータのシーケンスを、予約された第１のメモリロケーションに続く次のいくつかのメモリロケーション（３６）に書込むステップと、
データのシーケンスが書込まれた最後のメモリロケーションのアドレスを、予約された第１のメモリロケーション（４３）に書込むステップとを含み、データのシーケンスが書込まれた最後のメモリロケーションのアドレスを、予約された第１のメモリロケーション（４３）に書込むステップは、
データのシーケンスのために必要とされる連続したメモリロケーションの数をカウンタ（４２）に入力するステップと、
各メモリロケーションが書込まれたときカウンタ（４２）をインクリメントするステップと、
データが書込まれつつあるメモリロケーションのメモリアドレスで書込ポインタ（４４）を更新するステップと、
カウンタ（４２）が必要とされる連続したメモリロケーション（３６）の入力された数に達したとき、書込ポインタ（４４）の内容を予約された第１のメモリロケーションに書込むステップとを含む、パケットの終わりロケーションを識別する方法。
【請求項２】
少なくとも１つのパケットからのデータのシーケンスを、連続したいくつかのメモリロケーション（３６）に書込むステップは、データの第１のシーケンスを第２の予約されたメモリロケーション（４５）のすぐ後のメモリロケーションに書込むことにより達成される、請求項１に記載のパケットの終わりロケーションを識別する方法。
【請求項３】
カウンタ（４２）が、必要とされる連続したメモリロケーションの入力された数に達したとき、第２の予約されたメモリロケーション（４５）にＨＥＸ１０００を書込むステップをさらに含む、請求項１または２に記載のパケットの終わりロケーションを識別する方法。
【請求項４】
データのシーケンスを読出すステップをさらに含む、請求項３に記載のパケットの終わりロケーションを識別する方法。
【請求項５】
第１の予約されたメモリロケーション（４３）内の値を第１のレジスタ（４６）に書込むステップをさらに含む、請求項４に記載のパケットの終わりロケーションを識別する方法。
【請求項６】
第２の予約されたメモリロケーション（４５）内の値の最上位ビットを第２のレジスタ（４８）に書込むステップをさらに含む、請求項５に記載のパケットの終わりロケーションを識別する方法。
【請求項７】
データのシーケンスを読出すステップは、
読出されるデータのメモリロケーションのメモリアドレスで読出ポインタ（５４）を更新するステップと、
読出ポインタ（５４）内のメモリアドレスと第１の予約されたメモリロケーション（４３）内に含まれる値とを比較することによって、第１の論理値を得るステップとを含む、請求項６に記載のパケットの終わりロケーションを識別する方法。
【請求項８】
第１の論理値がＴＲＵＥであり、かつ第２のレジスタ（４８）に含まれる値がＴＲＵＥであるとき、パケットの終わりを示すステップをさらに含む、請求項７に記載のパケットの終わりロケーションを識別する方法。
【請求項９】
データがメモリロケーションに書込まれるとき、第３のレジスタ（６０）内の値をインクリメントするステップと、
データがメモリロケーションから読出されるとき、第３のレジスタ（６０）をデクリメントするステップとをさらに含む、請求項８に記載のパケットの終わりロケーションを識別する方法。
【請求項１０】
第３のレジスタ（６０）内の値がゼロの値を有するならば、空フラグをセットするステップをさらに含む、請求項９に記載のパケットの終わりロケーションを識別する方法。
【請求項１１】
第３のレジスタ（６０）内の値がＨＥＸＦＦＦＦの値を有するならば、フルフラグをセットするステップをさらに含む、請求項１０に記載のパケットの終わりロケーションを識別する方法。
【請求項１２】
空フラグがセットされているならば、メモリロケーションを読出すステップを防止するステップをさらに含む、請求項１１に記載のパケットの終わりロケーションを識別する方法。
【発明の詳細な説明】
発明の背景
１．発明の分野
この発明は、一般に、イーサネットへのおよびイーサネットからの情報の局による伝送を制御するための方法および装置に関し、特に、情報伝送の性能を上げるための方法および装置に関し、さらに特に、メモリ装置内のパケットの終わりのロケーションを正確に識別することによって、メモリ装置内に複数の情報パケットを効率的に記憶するための方法および装置に関する。
２．背景技術の説明
アホ（Aho）．Ａ．Ｖ他による『データ構造およびアルゴリズム（Data Structures and Algorithms）』（１９９３年６月米国、３９２〜３９７頁）は、オブジェクトに対する記憶割り当ておよびメモリ管理におけるサイズの混合を開示する。空のブロックおよび不要なデータを保持するブロックの管理によって、これらを新しいデータの保持のために利用できる。
ＥＰ−Ａ−０  ４２９  ０５４は、ネットワークにインタフェースするための既知のデータ表示およびプロトコルを開示する。
ＪＰ−Ａ−６２  ２１６０４６は、論理シミュレーション装置のための記録制御システムを開示する。
ローカルエリアネットワーク（ＬＡＮ）とは、職場、建物または建物群などのような限定された地理区域内に位置する、パーソナルコンピュータ、ワークステーション、ファイルサーバ、リピータ、データ端末装置（ＤＴＥ）および他のこのような情報処理装置が相互に情報を電子的に転送することを可能にする通信システムである。ＬＡＮ内の各情報処理装置は、ネットワークの動作を定義する固定されたプロトコル（または規格）に従うことで、ＬＡＮ内の他の情報処理装置と通信する。
ＩＳＯオープンシステム間相互接続基本参照モデルが、ＬＡＮ内のデータ通信の７層モデルを定義する。このモデルの最下層は、（ａ）ネットワークのノードを相互接続しかつ電子的に伝送されるべきデータの通り道となる物理媒体、（ｂ）ネットワークのノードが物理的伝送媒体とインタフェースする態様、（ｃ）物理的媒体を通じてデータを転送するためのプロセスおよび（ｄ）データストリームのプロトコル、を特定するモジュールからなる物理層である。
ＩＥＥＥ規格８０２．３、衝突検出を伴う搬送波感知多重アクセス方式（Carrier Sense Multiple Access with Collision Detection（ＣＳＭＡ／ＣＤ））および物理層の仕様は、物理層に関し最も一般的に使用されている規格の１つである。一般にイーサネットと呼ばれるＩＥＥＥ規格８０２．３は、撚線対ケーブルまたは典型的には撚線対ケーブルよりも価格の高い同軸ケーブルを通じてのデータ転送を扱う。ＩＥＥＥ規格８０２．３の１０Ｂａｓｅ−Ｔプロトコルは、撚線対ケーブルを通じてのデータ転送速度を１０メガビット／秒（Ｍｂｐｓ）と定めている。
図面を参照し、図１は、ＣＰＵ１２で表わされる、ワークステーション、パーソナルコンピュータ、ファイルサーバ、データ端末装置または他のこのような情報処理装置がどのようにイーサネット２２または媒体独立インタフェース２４で表わされる他の型のデータ通信装置に接続されるかを図示する。図１中、一般にネットワークインタフェースコントローラとしても知られるイーサネットコントローラ１４は、ＣＰＵ１２とイーサネット２２の入力（および出力）ラインとの間に位置づけられる。典型的には、イーサネット２２は２対の撚線対銅ケーブルからなり、入力対は１０Ｒ、出力対は１０Ｔと呼ばれる。
イーサネットコントローラ１４は、出力対またはケーブルへの出力データの送信および入力対またはケーブルからの入力データの受信の制御の役割を持つ。たとえば、出力データは、出力対またはケーブルに送られる前に、電磁干渉を減じるためマンチェスター符号化される。マンチェスター符号化により、データストリームのいくつかの部分は１０ＭＨｚのパルスとなり、データストリームの他の部分は５ＭＨｚのパルスとなる。
より多くの情報をより高速で転送する必要性がさらに高まり同時にデータ処理能力が向上することで、１０Ｂａｓｅ−Ｔプロトコルにより規定される１０Ｍｂｐｓの速度よりもはるかに高速のデータ転送速度への拡張が必要となっている。その結果、現在の既存のタイプの撚線対ケーブルを通じて１００Ｍｂｐｓの有効転送速度で移動するデータに対処するため、ＩＥＥＥ規格８０２．３を拡張する１００Ｂａｓｅ−ＴＸプロトコルがある。物理伝送媒体が、１００Ｂａｓｅ−ＴＸの速度およびより遅い１０Ｂａｓｅ−Ｔの速度の両方で、撚線対ケーブルを通じて転送されるデータを処理できることが望ましい場合がある。
イーサネットまたは媒体独立インタフェースを通じての様々な速度でのデータ伝送に関連する問題に加えて、パーソナルコンピュータ、ワークステーション、ファイルサーバ、リピータ、データ端末装置および他のこのような情報処理装置のデータ処理能力が相違することに関連する問題がある。たとえば、パーソナルコンピュータシステムにおいては、イーサネットを通じてのデータの受送信に加え、ＣＰＵ１２が処理しなければならない他の装置または任務があるかもしれない。
イーサネットコントローラ１４（図１）は、ＣＰＵ１２からイーサネット２２へのデータの伝送の制御の役割を持つ。イーサネットコントローラ１４が直面する主要な問題の１つは、伝送における割込が最小限になるようデータの伝送を制御することである。たとえば、もしデータの伝送において、割込があると、イーサネットのシステムは停止しすべてのデータを再送信しなければならない。これはつまり、もし受信局が割込まれかつデータの受信を継続できなければ、送信局がデータを再送信しなければならないということである。
よりよいデータ送信制御を行なう柔軟性を持ったイーサネットコントローラが必要とされている。この発明は、パケットにフォーマット化される入力データまたは出力データの一時記憶のためのバッファを提供する方法を教示する。空間およびコストの両方の理由から可能な限り小さくすることが必要とされるバッファ内に、パケットの形の情報を最も効率的に記憶するためには、連続的にパケットを記憶すること、すなわちパケットの間に埋められていないメモリロケーションが全く存在しないようにパケットを記憶することが望ましい。
バイト、またはパケットにおけるデータの他の単位のシーケンスにおけるパケットの終わりを検出する方法、そして次のパケットを順次記憶できるようにそのシーケンスが書込まれた最後のメモリロケーションを識別することが必要であり、それによって、情報の複数のパケットをメモリ装置内に効率的に記憶することができる。
発明の概要
この発明により、データのパケットの伝送の間にバッファとして使用されるメモリ装置内のパケットの終わりロケーションを１ロケーションと他ロケーションとの間で正確に識別する方法である。メモリ装置はバッファとして利用される。メモリ装置内の第１のロケーションが予約され、データのシーケンスが順次メモリ装置内に書込まれる。パケットの最後のバイトが識別されるとき、最後のバイトが書込まれるメモリロケーションのアドレスが第１の予約されたロケーションに書込まれる。
パケット内のデータの最後のバイトは、パケットに含まれるバイトの数をカウンタに入力することにより識別される。カウンタはメモリロケーションに各バイトが書込まれるに伴いインクリメントされる。書込ポインタは、データ書込まれていくメモリロケーションで更新される。カウンタが入力されたバイト数に達するとき、書込ポインタの内容が予約された第１のメモリに書込まれる。
メモリ装置内の第２のメモリロケーションが、第１の予約されたメモリロケーションのすぐ後に予約され、第２の予約されたロケーションに値ＨＥＸ００００が書込まれる。そして、第２の予約されたロケーションに続く第１のメモリロケーションから始めて、データがメモリ装置内に書込まれる。
書込カウンタが入力されたバイト数に達するとき、第２の予約されたロケーション内の値がＨＥＸ００００から値ＨＥＸ１０００に変わる。
データはメモリ装置から読出される。第１に予約されたメモリ装置内に含まれる値は、第１のレジスタに書込まれ、第２に予約されたレジスタ内の最上位ビットは第２のレジスタに書込まれる。第１のレジスタ内の値が読出ポインタ内の値と比較され、論理ＴＲＵＥまたは論理ＦＡＬＳＥを得る。もし第２のレジスタ内の値がＴＲＵＥでありかつ第１のレジスタ内の値がＴＲＵＥであれば、パケットの終わりが検出されている。
パケットの終わりがまだ書込まれていない場合には、メモリロケーションが書込まれたときに第３のレジスタ内の値をインクリメントし、メモリロケーションが読出されたときに第３のレジスタ内の値をデクリメントすることによって、読出ポインタが書込ポインタを追い越すのを防止する。第３のレジスタ内の値が０であるとき、ＥＭＰＴＹフラグがセットされ読出が禁止される。
この発明は、添付図面に関連し以下の詳細な説明を考慮するとよりよく理解される。以下の説明から当業者には容易に明らかとなるであろうように、この発明の好ましい実施例はこの発明の実施に適したベストモードの単なる例として図示および説明される。理解されるように、全くこの発明の範囲から逸脱することなく、この発明には他の異なった例があり得、そのいくつかの詳細にはさまざまな明らかな局面において修正を加えることができる。したがって、本図面および明細書は本質的に例示的なものとみなされ限定的なものとみなされるものではない。
【図面の簡単な説明】
本明細書に組み入れられその一部を形成する添付の図面はこの発明を図示し、説明とともに、この発明の原理を説明するために役立つ。
図１は、イーサネットコントローラ、ＣＰＵ、イーサネット接続および媒体独立インタフェース接続を備える先行技術のシステムの全体図である。
図２は、この発明を備えるシステムの全体図である。
図３は、この発明において使用されるメモリの部分を示す図である。
図４は、この発明において教示されるメモリの部分にデータが書込まれる態様を示す図である。
図５は、パケットの終わりのロケーションがメモリに記憶される態様を示す図である。
図６は、この発明において教示されるメモリの部分からデータが読出される態様を示す図である。
図７は、パケットの終わりが書込まれていないとき、この発明において教示されるメモリの部分からデータが読出される態様を示す図である。
詳細な説明
次に図１を参照し、ＣＰＵ１２と、イーサネット２２および媒体独立インタフェース２４への接続を備えるイーサネットコントローラ１４とを備える先行技術によるシステム１０を示す。ＣＰＵ１２はＢＵＳ１７によりイーサネットコントローラ１４に接続される。
次に図２を参照し、この発明により教示されるシステム１１を示す。この図面および続く図面においては、同様の構成要素を示すため同様の番号を使用する。イーサネットコントローラ１４の部分を図２に示す。イーサネットコントローラ１４がこの発明により教示される機能以外にも多くの他の機能を有すること、および、この発明に関連する構成要素のみを説明することが理解されねばならない。システム１１は、外部のイーサネットコントローラ１４に接続されるＳＲＡＭ１６とＣＰＵ１２とを含む。この構造によって、イーサネットコントローラ１４半導体装置を可能な限り小さくすることができ、かつ、設計技術者にとっては必要とあればバッファをより大きくする柔軟性が与えられる。理解されるように、ＳＲＡＭ１６を、イーサネットコントローラ１４装置の一部分として設計することもできる。さらに、ＣＰＵ１２、イーサネットコントローラ１４およびＳＲＡＭ１６をすべて単一の半導体装置として設計することもできよう。
イーサネットコントローラ１４の図示される部分の機能は、イーサネット２２および媒体独立インタフェース２４へのおよびからのデータの伝送の管理である。イーサネットコントローラ１４は、ＣＰＵ１２、イーサネット２２または媒体独立インタフェース２４のいずれかへのおよびいずれかからのデータの伝送の低速化を防止するためＳＲＡＭ１６をバッファとして利用することにより、データ伝送を管理する。データ伝送が低速化し得るのにはさまざまな理由があるが、たとえば、ＣＰＵ１２の待ち時間が長く、ＣＰＵ１２が他の割り込みから解放されるまで、イーサネット２２からのデータ伝送が停止することがあり得る。逆に、ＣＰＵ１２がイーサネット２２を通じてデータを送信しようとするときに、イーサネット２２が使用中であるかもしれず、それによってイーサネット２２の使用が終わるまでＣＰＵ２２からのデータが停止または一時中断されることになる。
情報の送信または受信を完了できないために生じる問題を回避するため、イーサネットコントローラ１４は４つのＦＩＦＯ、ＢＸ  ＦＩＦＯ２６、ＭＸ  ＦＩＦＯ２８、ＢＲ  ＦＩＦＯ３０およびＭＲ  ＦＩＦＯ３２を有する。ＢＸ  ＦＩＦＯ２６とＢＲ  ＦＩＦＯ３０とはイーサネットコントローラ１４のバス側にあり、かつ、ＭＸ  ＦＩＦＯ２８とＭＲ  ＦＩＦＯ３２とはイーサネットコントローラ１４の媒体アクセス制御（ＭＡＣ）側にある。各ＦＩＦＯは入力機能または出力機能のいずれかを制御する。ＢＸ  ＦＩＦＯ２６は、ＣＰＵ１２からＳＲＡＭ１６へのデータの伝送を制御する。ＭＸ  ＦＩＦＯ２８は、ＳＲＡＭ１６からイーサネット２２または媒体独立インタフェース２４へのデータの伝送を制御する。同様に、ＭＲ  ＦＩＦＯ３２はイーサネット２２または媒体独立インタフェース２４のいずれかからのデータの伝送を制御する。以下の説明においては、他の機能は同様なので、ＣＰＵ１２からＳＲＡＭ１６へのデータ伝送についてのみ説明する。以下の説明は、ＣＰＵ１２からＳＲＡＭ１６へのデータの書込およびＳＲＡＭ１６からのデータの読出を含む。
次に図３を参照し、ＳＲＡＭ１６などのメモリ装置のメモリ部３４を図示する。この発明の意図される範囲を逸脱することなく、他のメモリ装置を使用できることが理解されねばならない。ＨＥＸ００００からＨＥＸ００１１までのメモリアドレス３８を備える１８個のメモリロケーション３６が図示される。この説明においては、メモリロケーションはワード単位でアドレス指定される、すなわち、各メモリロケーションは２つの８ビットバイト、上位バイトロケーションと下位バイトロケーションとを有するという取決めに従う。部分３４はＳＲＡＭ１６内のどの場合にでもあり得、かつ、アドレス３８はメモリの最大サイズの範囲内にあるの値の任意シーケンスであり得ることが理解されねばならない。図３には、メモリ部３４に書込まれるデータの２つのパケットを示す。第１のパケットは、ＤＡＴＡ０からＤＡＴＡ４までの５バイトからなり、ＨＥＸ０００２からＨＥＸ０００４までのアドレスを備えるメモリロケーション内に図示される。ＤＡＴＡ４が第１のパケットの最後のバイト、すなわちパケットの終わりであるため、ＤＡＴＡ４が書込まれるメモリロケーションのアドレス（ＨＥＸ０００４）は第１の予約されたメモリロケーション、この場合には、アドレスＨＥＸ００００を備えるメモリロケーションに書込まれる。第１のパケット内の最後のバイトが書込まれてしまったので、第２の予約されたメモリロケーション、この場合には、アドレスＨＥＸ０００１を備えるメモリロケーションの内容がＨＥＸ１０００に変わる。値ＨＥＸ１０００は、パケットが有効であることを示し、これについてはさらに詳細に以下に説明する。
この例では、メモリが書込まれるべき、メモリの部分の初めの２つの予約されたロケーションは、メモリロケーションＨＥＸ００００およびＨＥＸ０００１である。予約されたロケーション各対のロケーションは、メモリ内に記憶されるその前のパケットのサイズに依存する。各パケットの終わりの後に、３２ビットのＳＴＡＴＵＳ用の２つの１６ビットのメモリロケーションと３２ビットのＤＥＳＣＲＩＰＴＯＲ用の２つの１６ビットのメモリロケーションとがある。図３中、メモリロケーションＨＥＸ０００５およびＨＥＸ０００６が第１のパケットのＳＴＡＴＵＳ用であり、ＨＥＸ０００７およびＨＥＸ０００８がＤＥＳＣＲＩＰＴＯＲ用である。第２のパケットについては、第１の予約されるロケーションはメモリロケーションＨＥＸ０００９であり、第２の予約されるロケーションはメモリロケーションＨＥＸ０００Ａである。第２のパケットの３２ビットのＳＴＡＴＵＳはメモリロケーションＨＥＸ０００ＦおよびＨＥＸ００１０に書込まれ、かつ、第２のパケットの３２ビットのＤＥＳＣＲＩＰＴＯＲはメモリロケーションＨＥＸ００１１およびＨＥＸ００１２に書込まれる。各パケットの３２ビットのＳＴＡＴＵＳおよびＤＥＳＣＲＩＰＴＯＲはパケットに関する情報を含み、詳細には説明しない。
次に図４を参照し、少数のメモリロケーション４０を図示する。次にメモリへのデータの書込方法を説明する。先に説明したように、ここでは、ＣＰＵ１２からイーサネット２２または媒体独立インターフェイス２４のいずれかへのデータ伝送を説明する。以下の説明が、データがイーサネット２２または媒体独立インターフェイス２４のいずれかからＣＰＵ１２へ伝送される状況にも適用可能であることが理解されねばならない。当業者は、以下の説明をイーサネットコントローラ１４（図２）の他の部分にも適用できるであろう。
ＣＰＵ１２がデータを送信したいとき、ＣＰＵは、適用可能なバス、この場合にはＰＣＩ  ＢＵＳ１８を要求し、送信すべきあるバイト数のデータを有することをＢＸ  ＦＩＦＯ２６に知らせる。この数はカウンタ４２に通信される。図にはカウンタ４２に５の値が書込まれている。例として５バイトのパケットが使用されており、これについて図５に関連し以下に説明する。メモリロケーションに書込まれるときカウンタ４２がインクリメントされ、かつ、インクリメントされた値がＢＸ  ＦＩＦＯ２６から入力された値に等しいとき、これはメモリに書込まれたばかりの値がパケット内のデータの最後のバイトであることを示す。代替的に、パケットに含まれるバイト数を表わす値をカウンタ４２に入力することができ、そして、各データバイトが書込まれるに伴いカウンタ４２をデクリメントすることができ、そして、値０に達するとき、データの最後のバイトがメモリに書込まれたこと、すなわちパケットの終わりが書込まれたことが示されるであろう。
図４は、パケットの終わりにまだ達していない状態を示す。最初のステップは、メモリ内の第１の２つの利用可能なロケーションを予約することであり、説明の目的でこれらは４３のメモリロケーションＨＥＸ００００および４５のＨＥＸ０００１として図示される。書込ポインタＷＲ  ＰＴＲ４４は最初４３のメモリロケーションＨＥＸ００００を指し示すであろう。もしＴＸ  ＯＷＮ４８内の値がゼロであれば、４３のメモリロケーションＨＥＸ００００の内容がレジスタＭＸＥＯＰ４６に書込まれるであろう。有効なパケットの終わりロケーションが書込まれるまではＨＥＸ００００内にどのような値があろうとも差異はないので、ＨＥＸ００００の内容は、「ドントケア」を示すＸＸＸＸとして図示されている。書込ポインタＷＲ  ＰＴＲ４４がインクリメントされ、４５のメモリロケーションＨＥＸ０００１を指し示すであろう。値ＨＥＸ００００が４５の第２の予約されたメモリロケーションＨＥＸ０００１へ書込まれるであろう。この時点において、ＷＲ  ＰＴＲ４４はＨＥＸ０００１となるであろうし、データが書込まれていないためカウンタ４２はインクリメントもデクリメントもされていないであろう。ＷＲ  ＰＴＲ４４がインクリメントしたならば、５０のデータの第１および第２のバイトＤＡＴＡ０およびＤＡＴＡ１がメモリロケーションＨＥＸ０００２に書込まれるであろうし、カウンタ４２が２にインクリメントされるであろう。図４に示す状態に達するまでこれが繰返されるであろう。ＷＲ  ＰＴＲ４４はメモリロケーションＨＥＸ０００３を指し示しており、５２のＤＡＴＡ２は下位バイトメモリロケーションＨＥＸ０００３に書込まれており、かつ、カウンタ４２は３バイトまたは４バイトのいずれかのデータがメモリに書込まれていることを示す値４にインクリメントされている。
次に図５を参照し、第１のパケット内のデータの最後のバイトがメモリに書込まれているときの（図４で始まる）状況を図示する。カウンタ４２内のインクリメントされた値がＢＸ  ＦＩＦＯ２６から入力された値に等しいとき、この場合はＨＥＸ０００４である、ＷＲ  ＰＴＲ４４内の値が、第１の予約されたメモリロケーション４３へ書込まれるであろう。レジスタＴＸ  ＯＷＮ４８内に含まれる値がゼロであるならば、ＷＲ  ＰＴＲ４４内の値が、レジスタＭＸ  ＥＯＰ４６に書込まれるであろう。さらに、もしＴＸ  ＯＷＮ４８内の値がゼロであれば、この値は１に変えられるであろう。第２の予約されたメモリロケーション内の値ＨＥＸ１０００は、パケットが有効であること、すなわちパケットの終わりが書込まれておりかつ第１の予約されたメモリロケーション内の値（この場合にはＨＥＸ００００）がパケットの終わりが書込まれたメモリロケーションであるということを示す。
上述の作用に加え、（データの最後のバイトが書込まれたメモリロケーションの後の）次の４つの１６ビットのメモリロケーション内に、メモリに書込まれたばかりのパケットの３２ビットのＳＴＡＴＵＳと３２ビットのＤＥＳＣＲＩＰＴＯＲとが書込まれるであろう。図３に関連し図示および説明されるように、ＤＥＳＣＲＩＰＴＯＲのすぐ次の２つのロケーションは、送信されるであろう次のパケットのために予約される。これは、メモリに書込まれるパケットの終わりのロケーションを正確に識別することができることの価値を示している。パケットの終わりのメモリ内の正確な位置を識別できることによって、可能な限り最も効率的な態様で、すなわち、連続したパケットの間に空のメモリロケーションが全くないように、メモリ内に異なったサイズの複数のパケットを書込むことができる。上述の例が示しているようにいくつかの場合においては、もしパケット内に奇数個のバイトがあれば、メモリロケーションの上位バイトロケーションには書込まれないであろうことが注意される。
次に図６を参照し、パケットの終わりがメモリに書込まれてしまっているときにパケット内のデータを読出す方法を図示する。図６は、図５に示すメモリに書込まれたパケットを示す。パケットは、メモリロケーションＨＥＸ０００２からメモリロケーションＨＥＸ０００４の下位バイトロケーションまでに書込まれたデータ５バイトを含む。パケットの終わりがメモリに書込まれているので、第１の予約されたメモリロケーション（ＨＥＸ００００）にはパケット内の最後のバイトのメモリロケーション、すなわちパケットの終わりのロケーションが書込まれている。この場合には、最後のバイトのメモリロケーションは、メモリロケーションＨＥＸ０００４である。読出ポインタＲＤ  ＰＴＲ５４が第１の予約されたメモリロケーション、この場合には、メモリロケーションＨＥＸ００００を指し示すとき、この値ＨＥＸ０００４はレジスタＭＸ  ＥＯＰ４６にも書込まれる。次のステップは、ＲＤ  ＰＴＲ５４が第２の予約されたメモリロケーション、この場合にはメモリロケーションＨＥＸ０００１を指し示すときである。先述したように、パケットの終わりはメモリに書込まれているので、第２の予約されたメモリロケーションの内容は値ＨＥＸ１０００を含むであろう。レジスタＭＸ  ＥＯＰ４６に含まれる値は５６の比較回路に入力される。ＲＤ  ＰＴＲ５４の内容はまた比較回路５６に入力され、そこでレジスタＭＸ  ＥＯＰ４６の内容と比較される。これら２つの値の比較結果は論理ＴＲＵＥまたは論理ＦＡＬＳＥのいずれかであろうし、レジスタＴＸ  ＯＷＮ４８の内容によりゲート制御される。もしＴＸ  ＯＷＮ４８がＴＲＵＥ（すなわち１）であり、かつ比較回路５６の出力がＴＲＵＥであれば、５８で示すようにパケットの終わりに達している。これは以下のように行なわれる。ＲＤ  ＰＴＲ５４がインクリメントされかつ次のメモリロケーションを指し示しているので、ＲＤ  ＰＴＲ５４の内容は、ＲＤ  ＰＴＲ５４がパケット内の最後のバイトすなわちパケットの終わりを指し示しているときレジスタＭＸ  ＥＯＰ４６に入力される値と実質的に同一であろう。このとき、論理値はＴＲＵＥとなり、第２の予約されたメモリロケーションからの最上位ビットの値がＴＲＵＥと規定される１であるため、出力論理もまたＴＲＵＥであろうし、パケットの終わりに達したことが５８で示されるであろう。
次に図７を参照し、パケットの終わりがメモリに書込まれておらず、かつ時間を節約するためにシステムがメモリに書込まれているデータの読出を許可する状況を図示する。この場合、読出ポインタが書込ポインタを追い越さずかつ無効データの読出を始めないことが重要である。図７に示す状況では、メモリに書き込まれているパケットについてのパケットの終わりには達していないが、データの読出が開始されており、効率のため開始が許可されている。たとえば、説明されている例よりもパケットがはるかに長い場合があり、その場合、読出を始める前に長いパケットが完全に書込まれてしまうまで、読出機能が待機しているのは非効率的であろう。図６に関連して先述したように、読出ポインタが第１の予約されたメモリロケーション４３を指し示すとき、第１の予約されたメモリロケーションの内容がレジスタＭＸ  ＥＯＰ４６に書込まれるであろう。この時点において、第１の予約されたメモリロケーション４３内の値が有効な値であるか否か、すなわちパケットの終わりのロケーションを含むか否かを決定することはできない。ＲＤ  ＰＴＲ５４は次に第２の予約されたメモリロケーション４５を指し示し、第２の予約されたメモリロケーション内に含まれる値の最上位ビットがレジスタＴＸ  ＯＷＮ４８に書込まれるであろう。最上位ビットはゼロであるため、比較回路５６は、ＮＯＴ  ＥＯＰを示すＦＡＬＳＥを５８で示すであろう。ＲＤＰＴＲ５４がＷＲ  ＰＴＲ４４を追い越すのを防ぐため、ＷＲ  ＰＴＲ４４により示されるようにデータ値がメモリに書込まれるたびごとにインクリメントされ、かつＲＤ  ＰＴＲ５４により示されるようにデータ値がメモリから読出されるたびごとにデクリメントされるレジスタ６０が設けられる。ＷＲ  ＰＴＲ４４がメモリロケーションＨＥＸ０００４を指し示し、メモリロケーションＨＥＸ０００４にデータ値が書込まれたばかりであることを示し、かつ、ＲＤ  ＰＴＲ５４もまたメモリロケーションＨＥＸ０００４を指し示し、メモリロケーションＨＥＸ０００４内のデータ値が読出されたばかりであることを示す、図７に示すような状況が生じるときがある。この時点で、レジスタ６０内の値はゼロであろうし、レジスタ６２内のＥＭＰＴＹフラグがセットされ、メモリからのさらなるいかなるデータの読出も防止するであろう。理解されるように、この状況においては、付加的なバイトがメモリに書込まれると、レジスタ６０内の値がインクリメントされ、その時点でレジスタ６０内の値は１となり、レジスタ６２内のフラグはリセットされそしてＲＤ  ＰＴＲ５４はインクリメントを許可され、次のメモリロケーション内のデータの読出が許可されるであろう。もし、メモリに書込まれるさらなるデータが全くなければ、レジスタ６０は再び値ゼロを含み、再び読出が禁止されるであろう。ＷＲ  ＰＴＲ４４がインクリメントされかつデータがメモリに書込まれるにつれ、最終的に最後のバイトに到達し、この時点においてカウンタ４２（図４および図５）はこのことをＷＲ  ＰＴＲ４４に示し、そしてＷＲＰＴＲ４４内の値はすぐにＭＸ  ＥＯＰ４６および第１の予約されたメモリロケーション４３に書込まれるであろう。同時に、第２の予約されたメモリロケーショ���内の最上位ビットがレジスタＴＸ  ＯＷＮ４８に書込まれるであろう。もし、ＴＸ  ＯＷＮ４８内の値がＴＲＵＥであり、かつＲＤ  ＰＴＲ５４内の値がレジスタＭＸ  ＥＯＰ４６内の値と一致するときは、論理出力５８はＴＲＵＥとなり、パケットの終わりが読出されたことを示すであろう。
上述のこの発明の好ましい実施例の説明は、例示および説明の目的で提示された。これは包括的なものまたはこの発明を開示された形態に厳密に限定することを意図するのではない。上の教示に照らし明らかな修正例または変形例が考えられる。この実施例は、この発明の原理およびその実際の応用例の最良の例を提供し、それによって、企図される特定の用途に適したさまざまな修正を加えてさまざまな例においてこの発明を当業者に利用することを可能にするため、選択されかつ説明された。このような修正および変更は、それらが公正に、法的にかつ公平に与えられる権利の範囲により解釈されるとき添付の請求の範囲により決定されるこの発明の範囲内にある。
【図１】
0003811759.tif 000002
【図２】
0003811759.tif 000003
【図３】
0003811759.tif 000004
【図４】
0003811759.tif 000005
【図５】
0003811759.tif 000006
【図６】
0003811759.tif 000007
【図７】
0003811759.tif 000008