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