(57)【要約】【課題】専用の伝送バッファを有するネットワーク・インタフェースのデータ伝送の早期の初期化を伝送バッファヘホスト・コンピュータによって構成されたデータのフレームを転送するためのロジックを含むシステムにおいて提供する。【解決手段】伝送バッファヘホストによってダンウンロードされるフレームのデータ量が、伝送データ・バッファ(34)に存在するフレームのデータ量のスレッショールド判定を行うために監視される。スレッショールド判定は、フレームの大部分が伝送バッファに残っていることを示すとき、及び伝送バッファヘフレーム(34)の全データを転送する前に、ネットワーク・インタフェース・コントローラはフレームの伝送を開始するためのロジック(36)を有している。監視ロジックは、スレッショールド値を記憶するための記憶装置(43)を有している。従って、スレッショールド値は、実行を最適化するために、ホスト・システムによってセットされる。【選択図】図２
2006114030.tif 000002
【特許請求の範囲】
【請求項１】
通信媒体を介してデータ・フレームを伝送するシステムのための装置であって、
通信媒体上の伝送用ホスト・コンピュータによって作成されたフレーム・データを格納するためのバッファ・メモリと、
ホスト・システム・インタフェースを有し、前記バッファヘフレーム・データを転送するための手段と、
前記バッファ・メモリに結合され、バッファ・メモリへ転送されたフレーム・データの量のスレッショルド判定を行うために、バッファ・メモリへのフレーム・データの転送を監視するための手段と、
監視するための手段のスレッショルド判定に応答して、ホスト・コンピュータからバッファ・メモリへ全てのフレーム・データの伝送前に、フレームの伝送を開始するための手段、
を有する装置。
【請求項２】
伝送バッファは伝送記述子リング・バッファ、伝送データ・バッファ、ネットワーク上に伝送されるべきデータを識別するデータを有する伝送記述子と選択的即値データを有し、且つ監視するための手段はスレッショルド判定における即値データを有している請求項１に記載の装置。
【請求項３】
前記バッファ・メモリはホスト・アドレス空間と独立したバッファを有する請求項１に記載の装置。
【請求項４】
監視するための手段は、スレッショルド値を格納するためのシステムによって変更可能なスレッショルド記憶装置とスレッショルド判定判定ためのスレッショルド値に応答する論理装置を有する請求項１に記載の装置。
【請求項５】
前記フレームは、識別できるはじまりを有しており、スレショールド値はフレームのはじまりからデータ量を仕分ける請求項４に記載の装置。
【請求項６】
伝送バッファは伝送記述子リング・バッファと伝送データ・バッファを有しており、且つ転送するための手段は、
システムから伝送記述子リング・バッファへ伝送記述子をマッピングするための伝送記述子論理装置と、
伝送記述子リング・バッファの伝送記述子に応答して、システムのメモリからデータを検索し、伝送データ・バッファに検索去れたデータを格納するためのダウンロード論理装置、
を有する請求項１に記載の装置。
【請求項７】
伝送記述子は、更にネットワーク上に伝送されるべき即値データを有し、監視するための手段は、スレッショルド判定における即値データを有している請求項６に記載の装置。
【請求項８】
更に、伝送リング・バッファの伝送記述子および伝送を開始するための手段に応答して、伝送記述子リング・バッファと伝送データ・バッファからのデータを検索し、且つネットワーク上に伝送用検索データを供給するための伝送論理装置を有している請求項７に記載の装置。
【請求項９】
更に、転送するための手段が伝送論理装置に遅れる条件を検出し、悪いフレーム信号を、アンダーラン条件に応答して通信媒体へ供給するアンダーラン制御論理装置を有する請求項８に記載の装置。
【請求項１０】
伝送論理装置は、伝送されたフレームに誤り検出コードを付加するための手段を有し、且つ悪いフレーム信号はコラプトされた（ｃｏｒｒｕｐｔｅｄ）誤り検出コードを有している請求項９に記載の装置。
【請求項１１】
更に、伝送を開始するための手段に応答して、バッファ・メモリからデータを検出し、ネットワークへ伝送用の検索されたデータを供給するための伝送論理装置と、
転送するための手段が伝送論理装置に遅れる条件を検出し、悪いフレーム信号を、アンダーラン条件に応答して通信媒体へ供給するアンダーラン制御論理装置を有する請求項１に記載の装置。
【請求項１２】
伝送論理装置は、伝送されたフレームに誤り検出コードを付加するための手段を有し、且つ悪いフレーム信号はコラプトされた（ｃｏｒｒｕｐｔｅｄ）誤り検出コードを有している請求項１１に記載の装置。
【請求項１３】
ホスト・システムとネットワークに結合されたネットワーク・トランシーバ間の通信を制御するための装置であって、
バッファ・メモリと、
ホスト・システムとのインタフェースを有し、ホスト・システムとバッファ・メモリ間のデータを転送するためのホスト・インタフェース手段と、
バッファ・メモリに結合し、かつスレッショルド値を格納するためのスレッショード記憶装置に変更できるホスト・システムを有していて、バッファ・メモリに転送されたフレームのデータ量のスレッショルド判定を行うために、バッファ・メモリへのフレーム・データの転送を監視するための手段と
監視するための手段のスレッショルド判定に応答して、ホスト・コンピュータからバッファ・メモリへのフレームの全データの転送前に、フレームの伝送を開始するための手段と、
ネットワークへのインタフェースを有し、且つ開始するための手段に応答して、バッファ・メモリと伝送用ネットワーク・トランシーバ間のデータを転送するためのネットワーク・インタフェース手段と、
ネットワーク・インタフェース手段と結合し、スレッショルド値を最適化するためのフィードバックとしてのホスト・システムにより用いられることができるステータス情報を位置するための制御手段と、
を有する装置。
【請求項１４】
前記ホスト・インタフェース手段は、
ホスト・システムからバッファ・メモリへ伝送されるべきデータを識別する伝送記述子を転送するための伝送記述子論理装置と、
バッファ・メモリの伝送記述子に応答して、ホスト・システムのメモリからデータを検索し、検索されたデータをバッファ・メモリに格納するためのダウンロード論理装置、
を有する請求項１３に記載の装置。
【請求項１５】
前記伝送記述子は即値データを有する請求項１４に記載の装置。
【請求項１６】
前記監視するための手段は、伝送記述子の即値データ量を判定するための論理装置を有する請求項１５に記載の装置。
【請求項１７】
前記監視するための手段は、伝送記述子の即値データ量を判定するための論理装置、およびスレッショルド判定を行う場合に伝送記述子に応答して、ダウンロード論理装置によって検索されたデータの量を有している請求項１５に記載の装置。
【請求項１８】
前記制御手段は、バッファ・メモリヘデータを転送する場合のホスト・インタフェース手段トランシーバヘデータを転送する場合のネットワーク・インタフェース手段に遅れているアンダーアラン条件を検出する手段とアンダーラン条件に応答して、通信媒体に悪いフレーム信号を供給するための手段を有している請求項１３に記載の装置。
【請求項１９】
前記制御手段は伝送されたフレームに誤り検出コードを付加するための手段を有し、前記悪いフレーム信号はコラプトされた誤り検出コードを有している請求項１８に記載の装置。
【請求項２０】
前記制御手段によって位置されるステータス情報はアンダーラン条件の指示を有している請求項１８に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、通信ネットワークとデータ処理装置間のインタフェース、特に通信ネットワークをとおしてデータのパケット或いはフレームの伝送に関連するシステムに関する。
【０００２】
関連出願についての説明
本願は、１９９２年７月２８日に出願され、発明の出願時に、現在の譲渡人に譲渡された「ホストから独立したバッファ管理によるネットワーク・インタフェース」と題する係属中の米国出願第０７／９２１，５１９と関連するものである。
【背景技術】
【０００３】
データ通信システムは、しばしば送信側で作られたデータのパッケットあるいはフレームの伝送に基づかれている。データのパケットあるいはフレームは通信システムに含まれるネットワーク・プロトコルと互換性があるように設計される。従って、伝送システムは、データ伝送の開始前にネットワーク・プロトコルに従ってデータ・フレームを構成しなければならない。しばしば、伝送システムはネットワーク・アダプタに送られるデータのフレームが続く仕事を行う、例えば伝送されるべきデータの第２のフレームを構成する前に伝送されているという承認を待つであろう。
【０００４】
幾つかのネットワーク・アダプタ・インタフェースは、伝送システムによって作られたデータ・フレームは伝送システムによってダウンロードされ得る専用送信バッファを有している。このフレームは、ネットワークにフレームを伝送することに関連する媒体アクセス制御機能がフレームを首尾よく伝送するか、フレーム伝送をキャンセルするまで、伝送データ・バッファに格納されている。もしフレーム伝送がキャンセルされれば、データは、伝送システムがフレームを伝送ために第２の試みを開始するまで、伝送データ・バッファに保持されていてもよい。伝送データ・バッファはＦＩＦＯ（ｆｉｒｓｔ−ｉｎ−ｆｉｒｓｔ−ｏｕｔ）システムとは区別されるべきである。ＦＩＦＯシステムにおいては、伝送システムはフレームのデータをＦＩＦＯにダウンロードする。一方、ネットワーク・アダプタは伝送中にＦＩＦＯをアンロードする。ＦＩＦＯのデータは、伝送デー夕・バッファのデータのように、媒体アクセス制御機能やホストによって残したり、再使用することができない。
【０００５】
伝送データ・バッファは伝送システムがフレームを伝送データ・バッファに構成したり、ダウンロードしたりすることを、またネットワーク・アダプタがフレームを伝送するようにする間に他の仕事をすることを可能にするけれども、フレームの伝送は、完全なフレームがバッファにダウンロードされるまで遅らされるという欠点がある。従って、伝送データ・バッファ型のシステムはネッツトワーク・スループットを犠牲にして、ホスト・システムを効率的に改善する。集中的な通信の動作は特性を低下する。
【０００６】
更に、伝送データ・バッファを用いる従来のシステムはホストや伝送システムに伝送データ・バッファを管理するように要求する。ネットワーク・インタフェース・コントローラは、インタフェース・コントローラ内とネットワークへのＦＩＦＯバッファを通してＤＭＡ技術を用いて、ホストが管理した伝送データ・バッファからデータを転送する。
代表的な従来システムはナショナルセミコンダクタのＤＰ８３９３２Ｂ、システム‐オリエンテッド・ネットワーク・インタフェース・コントローラ（ＳＯＮＩＣ）およびインテル８２５８６ＬＡＮコープロセッサ（ｃｏｐｒｏｃｅｓｓｏｒ）を有している。
【０００７】
簡素化ＦＩＦＯを基本としたシステムから利用可能な通信スループットを維持している間、伝送データ・バッファの利点を与えることが必要である。
【発明の開示】
【０００８】
本発明は、専用伝送バッファを有するネットワーク・インタフェースにおけるデータ伝送の開始のために、提供する。本システムは、ホスト・コンピュータによって伝送バッファに作られるデータのフレームを伝送するための論理装置を有している。また、ホストによって伝送バッファにダウンロードされるフレームのデータ量は伝送バッファに残っているフレームのデータ量のスレッショルドを判定するために監視される。スレッショルドの判定はフレームの大部分が伝送バッファに残っていることを示すとき、およびフレームの全てのデータを伝送バッファに転送する前に、ネットワーク・インタフェース・コントローラはフレームの伝送を開始するための論理装置を有している。本発明の第１の特徴においては、監視論理装置はスレッショルド・メモリを有しており、このメモリはスレッショルド値を格納するためのホスト・コンピュータおよびホストヘステータス情報（状態情報）を記入するための論理装置によってプログラム可能である。従ってスレッショルド値は、変更可能なスレッショルド・メモリや記入されたステータス情報を用いて、特性を最適化するためにホスト・システムによってセットすることができる。
【０００９】
本発明の他の特徴によれば、伝送バッファは伝送記述子リングと伝送データ・バッファを有している。ホスト・システムはアダプタが管理している伝送記述子リングに伝送記述子を格納することによって、フレームを構成する。アダプタが伝送記述子の処理を始めると、アダプタは記述子自身から直接データを取り上げ、記述子において識別されるデータの伝送データ・バッファへのダウンロード処理を開始する。スレッショルド・論理装置は記述子からの直接データ量を決定し、ダウンロード領域へのフレームのデータのダウンロードを監視する。組み合わせがスレッショルドに合致すると、フレームの実際の伝送が開始される。従ってフレームの伝送は、完全なフレームがダウンロード領域ヘダウンロードされる前に、開始されてもよい。
【００１０】
よって、本発明はデータのフレームを構成し、伝送する場合に、集中的通信である応用に対しての通信スループットを監視している間に、ホスト・システムのための柔軟性を非常に増加するネットワーク・インタフェース・コントローラ用のアーキテクチャを提供する。
【００１１】
本発明の他の特徴および利点は図面、詳細な説明および請求範囲に基づいて理解されるであろう。
【発明を実施するための最良の形態】
【００１２】
本発明の好適実施例の詳細な説明は図面を参照してなされる。図１および図２は本発明によるデータ通信システムの概観図を示している。図３から図１０（Ａ）−（Ｅ）は、データ構造とデータの流れ含む、本発明の好ましい実施の詳細な説明を与える。図１１−図１８は、本発明の伝送特徴を実施するための論理装置の実行を与えている。
【００１３】
Ｉ．システムの概要
図１は、伝送バッファ・メモリで利用できるバイト数がプログラムされたスレッショルドを越えると、ネットワーク上にフレームの送信を開始することを自動的に可能にする専用伝送バッファ・メモリを用いる制御回路を有する、本発明によるデータ通信システムを示している。図１に示されているように、通信データ用のこのシステムは、参照番号１によって示されるホスト・データ処理システムを有し、この処理システムはホスト・システム・バス２、ホストＣＰＵ３、ホストメモリ４及びバス２を介して全ての通信を行う他のホスト装置５を有している。ネットワーク・インタフェース・アダプタ６はホストバス２に接続されている。次に、アダプタ６は、同軸線、捩れ対導体、光ファイバー、サテライト、無線或いは他の通信媒体のようなネットワーク媒体８に接続されているトランシーバ７に結合されている。また、ネットワーク・アダプタ６は、インタフェース・コントローラ６あるいはホストＣＰＵ３により管理され、与えられた特別な実施に依存しているアダプタ・メモリ９に接続されている。更に、アダプタ６は、ホスト・システム１からアダプタ・メモリ９へのデータの伝送を監視するための開始伝送論理装置６Ａを有している。開始伝送論理装置６Ａはホスト１からアダプタ６へ伝送される、与えられたフレームのためのスレッショルド判定を行う。スレッショルドが適合されると、アダプタ６はネットワークを通してフレームの伝送を開始する。勿論、これらの構成要素の他の幅広い変更が行われてもよい。例えば、アダプタ・メモリ９は、ホスト・バス２に直接接続することも可能である。また多重バス構造のものが利用されてもよい。
【００１４】
図２は本発明による開始伝送システムの機能的な構成要素を示している。図２において、幾つかの機能ブロックが表されている。ホスト・コンピュータ或いは送信システム３０は、ライン３２で示されたデータとライン３３で示された制御信号を受信してホスト・インタフェース論理装置３１と通信する。ホスト・インタフェース論理装置３１はライン３５を通して伝送バッファ３４にデータを送る。またスレッショルド・論理装置３６はホスト・コンピュータ３０からフレーム・バッファ３４へのデータ伝送を監視するためにホスト・インタフェース論理装置３１に結合される。ライン３７はスレッショルド論理装置３６とホスト・インタフェース論理装置３１との結合を示している。スレッショルド論理装置はスレッショルド判定を行い、且つライン３８で示された信号を、例えばメディア・アクセス制御（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）ＭＡＣ論理装置を有する伝送論理装置３９へ発生する。伝送論理装置３９はライン４０を通してバッファ３４からのデータを受信し、且つライン４１で示されたそのデータをネットワーク媒体４２へ供給する。フレーム・バッファ３４に残されなければならないフレームのデータ量を示すスレッショルド値を格納するスレッショルド記憶装置４３は、そのフレームの伝送が伝送ＤＭＡ論理装置及びＭＡＣ３９によって開始される前に、スレッショルド論理装置３６に結合される。
【００１５】
好ましいシステムにおいては、スレッショルド記憶装置４３はホスト・コンピュータ３０によってプログラムすることができる。この実施例においては、スレッショルド記憶装置４３はインタフェース論理装置３１を通してホストによりアスセス可能なレジスタである。代わりに、スレッショルド記憶装置は製造中にセットされるＲＯＭであってもよい。更に代わりのものとして、スレッショルド記憶装置は、ＥＥＰＲＯＭ、フラッシュＥＰＲＯＭ或いは他のメモリ記憶装置のような不揮発性メモリにユーザが特定したデータを用いて実施されてもよい。
【００１６】
伝送論理装置３９は、ホスト・システムに記入するためにライン４４を通してホスト・インタフェース３１に状況情報を供給する。状況情報は、実行中の状態の表示を有し、且つスレッショルド記憶装置４３の値を最適化するためにホストによって使用されることができる。
【００１７】
動作においては、ホスト・コンピュータはネットワーク媒体４２へ伝送されるべきデータのフレームをつくる。ホスト・コンピュータ３０はホスト・インタフェース３１を通してそのフレームを識別する。フレームの識別器に結合されたホスト・インタフェースはフレームの記述に従ってホスト・コンピュータ３０からバッファ３４ヘデータを移動する。スレッショルド３６はバッファ３４へのデータ伝送を監視する。データのスレッショルド量がバッファ３４に残っていると、伝送論理装置３９はフレームの伝送を開始するように命令される。従って、もし伝送論理装置３９がホスト・コンピュータ３０からの進行中のダウンロードのフレーム主題を伝送するために利用でき、バッファにダウンロードされているフレームがスレッショルド記憶装置４３によりセットされたスレシュホルドより大きく、且つホスト・コンピュータ３０は、データの直接伝送が要求されることを示しているならば、この動作は、完全なフレームがホスト・コンピュータ３０からバッファ３４へ転送される前に、開始する。
【００１８】
上述のように、バッファ３４はホスト・コンピュータ３０により直接アドレス可能であってもよく、好ましいシステムでは、ホスト・コンピュータ３０が伝送動作に関連するデータと制御信号を書き込むホスト・アドレス空間の予め特定された領域からなるホスト・インタフェース３１を通してアドレス可能である。従ってホスト・インタフェース３１はその予め特定されたアドレス空間からバッファおよびホストと無関係なホスト・アクセス可能レジスタへのデータ伝送をマップする。
【００１９】
本発明の好適実施例の更に詳細な説明が図３に示されている。
【００２０】
II．システムの概要
図３は、本発明によるネットワーク・インタフェース・コントローラを有するコンピュータ・システムを図示したものである。コンピュータ・システムは、プロセッサ１０、ホスト・メモリ１１及びＥＩＳＡバスのようなホスト・システム・バス１３を通して全ての通信をする他のホスト装置１２を含むホスト・システムを有している。ホスト・システム・バス１３はホスト・システム・アドレス空間を定義するアドレス・ラインを有している。典型的には、ＥＩＳＡバスに対して、約４ギガバイトのホスト・アドレス空間を確立する３２のアドレス・ラインがある。
【００２１】
ネットワーク・インタフェース・コントローラは、（Ｃａｄｅｎｃｅ，Ｉｎｃ．，Ｓａｎ  Ｊｏｓｅ，Ｃａｌｉｆｏｒｎｉａの利用可能な）技術により公知のＶＥＲＩＬＯＧ設計装置を用いて以下に概括している機能を実行するために設計された応用特定集積回路として、好適システムにおいて実施されているネットワーク・インタフェース・プロセッサ１４を有している。このネットワーク・インタフェース・プロセッサ１４は適当なバッファを介してバス１３に結合されている。また、このネットワーク・インタフェース・プロセッサ１４はＲＡＭ１５，ＢＩＯＳ  ＲＯＭ１６とＩＮＦＯ  ＥＥＰＲＯＭ１７、テストポート１８、エンコード／デコードチップ１９及びネットワーク・トランシーバ２０にも結合されている。次に、ネットワーク・トランシーバ２０はネットワーク媒体に結合されている。
【００２２】
大多数の機能はネットワーク・インタフェース・プロセッサ１４に組み込まれている。好適実施例では、ホスト・システムによりバスを通してアクセスできる全てのレジスタはプロセッサ１４かＲＡＭ１４の何れかにある。もしＲＡＭ１５にあれば、それらのアクセスはネットワーク・インタフェース・プロセッサ１４によって管理される。
ＲＡＭ１５はネットワーク・インタフェース・コントローラ上の第１の資源である。この資源はネットワーク・インタフェースの送受信動作に用いられるホスト・アドレス空間の外部にあるバッファ・メモリを与える。このＲＡＭ１５の構成と利用に関する詳細は以下に説明される。
【００２３】
ＢＩＯＳ  ＲＯＭ１６は、開始中のネットワーク・インタフェース・プロセッサ１４を介して、ホスト・システムの基本入出カコードへの拡張を与える。ＢＩＯＳ  ＲＯＭ１６のためのアドレスとＢＩＯＳ  ＲＯＭ１６からのデータはＲＡＭ１５によって分割されているそれぞれのバス２１と２２を通してネットワーク・インタフェース・プロセッサ１４へ結合される。
【００２４】
ＩＮＦＯ  ＥＥＰＲＯＭ１７は駆動装置、診断装置およびネットワーク管理ソフトウエアにより用いられる臨界的なアダプタ特定データを格納する。このデータは製造プロセス中に格納される。インタフェース・コントローラの開始中に、ＥＥＰＲＯＭ１７の内容は動作中の使用のためＲＡＭ１５の予め特定された領域にロードされる。
【００２５】
ナショナルセミコンダクタ（Ｎａｔｉｏｎａｌ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）８３９１マンチェスタ（Ｍａｎｃｈｅｓｔｅｒ）エンコード／デコードチップのようなエンコード／デコードチップがインタフェース・プロセッサ１６に結合される。ＡＵＩ接続器に結合された信号はボード外のトランシーバの使用を許容するために与えられる。
【００２６】
好適実施例におけるトランシーバ２０は薄いエサーネット（ｃｏａｘ／ＢＮＣ）トランシーバ或いは１０ＢａｓｅＴ（Ｔｙｐｅ  ３／ＲＪ−４５）トランシーバの何れかを有している。トランシーバ２０用の制御信号はエンコード／デコードチップ１９上の変換論理装置を用いて、ネットワーク・インタフェース・プロセッサ１４上に作られる。テストポート１８は、好適実施例では製造及び試験中に使用されるために与えられる。
【００２７】
III．コントローラ機能ユニット
図４は機能ブロックとデータ・パスを有する、図３のネットワーク・インタフェース・プロセッサ１４のブロック図である。実際には、図示されている以外にもいろいろなデータ・フロー径路の制御と関係する非常に多くの接続がなされている。図示されたインタフェースはＲＡＭインタフェース５０、ホスト・バス・インタフェース５１及びトランシーバ・インタフェース５２を有している。バス・インタフェース５１はＥＩＳＡバスのために設けられているもので、バス上のマスター或いはスレーブの何れかとして所定の時に動作する。図４に示された構成における各々の機能ユニットについて説明する。
【００２８】
Ａ．ＥＩＳＡスレーブ・インタフェース５４
ＥＩＳＡスレーブ・インタフェース５４によって、ネットワーク・インタフェース・コントローラによって管理されるレジスタ、およびバッファにアクセスするためのＥＩＳＡホストのパスが提供される。このモジュールにはコントローラの構成レジスタが含まれており、ルーティン信号のためにＥＩＳＡバスの粗コード化を行う。ＥＩＳＡスレーブ・インタフェース５４は、コントローラ中に分布している個々のレジスタのアドレス指定に対する解釈は全く行わない。
【００２９】
ＥＩＳＡスレーブ・インタフェースは、連続的にＥＩＳＡアドレス・バスを監視して、構成レジスタ、メモリ・マップ・ネットワーク・レジスタ、あるいはアダプタのＢＩＯＳＲＯＭがアクセスされているかどうかの判定動作を行う。
【００３０】
更には、ＥＩＳＡバスがメモリ・スレーブ・サイクルを開始する度ごとにＥＩＳＡスレーブ・インタフェースは、サイクル・アービタ５６に対してサイクル・リクエストを通知する。このサイクルが起こると、リクエストが許可されるまでの間、ホスト・システムは待ち状態となる。
【００３１】
また、ＥＩＳＡスレーブ・インタフェースによって、残りのネットワーク・コントローラに対する汎用３２ビット・バス、インタフェースが提供される。このインタフェースは汎用的な特性を有しているので、チップの他の部分の再設計を行うことなしにマイクロチャネルなどの他の種類のバスに対して容易に設計を適合させることが可能である。
【００３２】
ＥＩＳＡアドレス・バスのビット１４−２は、ラッチされて、他のモジュールを通過していく。アドレスの最下位の２ビット（１，０）は４バイト・イネーブルによって表され、これはデータ転送サイクル全体を通して有効である。８ビット・バイトからなる４つのレーンによってスレーブ・データ・チャネルが構成される。好適なシステムにおいては、データ・バスは実際には１対の単方向バスから成っており、そのうちの１つが書き込み用として、他方が読み取り用として用いられる。データ書き込みバスは、スレーブ・インタフェースを介してＥＩＳＡデータ・パスへの接続を必要とする全てのモジュールに対して多重引込みの形で結線される。読み取りバスは、多重化されＲＡＭインタフェース・モジュール５０中にマスクによって形成される。ＥＩＳＡバスからの書き込みリクエストは、サイクル・アービタ５６からの承認が得られるまで保持できる。あるサイクルが保持されているとき、アダプタへのそのサイクルが終了する間、ＥＩＳＡバスを待機状態から開放することができる。第１のサイクルがまだ保留中となっているときに、第２のサイクルがＥＩＳＡバスから発生されると、保留中の書き込みが実行されるまでＥＩＳＡバスの開放は延期される。この特定の実施例においては、ＥＩＳＡ読み取りのパイプライン方式による実行はサポートされていない。
【００３３】
また、ＥＩＳＡスレーブ・インタフェースは、ＥＥＰＲＯＭ１７へのインタフェースも提供する。このインタフェースは、ＥＥＰＲＯＭ１７の内容をアダプタ・メモリに対してリセットした後に転送するように動作する。
【００３４】
ＥＩＳＡスレーブ・インタフェース・モジュール５４は、主にＥＩＳＡバス仕様のアダプタ構成と関連する多数のレジスタを有している。これらのレジスタは、アダプタのメモリ・バス・アドレスおよび割り込みレベルのセットアップ、トランシーバのタイプの選択、ＢＩＯＳ  ＲＯＭのイネーブルなどを行うのに用いられる。また、構成レジスタによって、ホストが明確にアダプタの種類を識別し、そのアダプアを全体的にディスエーブルとする手段が与えられる。
【００３５】
Ｂ．ＥＩＳＡマスター・インタフェース５５
ＥＩＳＡマスター・インタフェース５５は、アップロードＤＭＡ５７およびダウンロードＤＭＡ５８からのＥＩＳＡバスを介してのバス主要動作実行リクエストを処理するためのものである。好適な実施例のＤＭＡ動作において用いられるバスと転送の実行においては、ＥＩＳＡバスは読み取りと書き込みとを混合して実行することを許容しないので、ＥＩＳＡマスター・インタフェース５５は自発的に保留中のアップロードとダウンロード要求との間での仲裁を行う。
【００３６】
バス主要転送は、アップロードＤＭＡ５７か、或いはダウンロードＤＭＡ５８かのどちらかによって必ず開始される。この転送は、この転送が終了したときにＤＭＡモジュールによって、或いはＥＩＳＡバス上の任意の装置の優先使用のためにＥＩＳＡマスター・インタフェースによって中断させることができる。
【００３７】
このように、ＥＩＳＡマスター・インタフェース５６の機能は、アップロードＤＭＡ５７、或いはダウンロードＤＭＡ５８のいずれか、或いはこれらの両方からの転送リクエストが保留されているときに、ＥＩＳＡバスへのアクセスに対する仲裁を行うことである。ＥＩＳＡマスター・インタフェース５５は、バス上のアドレス・スレーブを用いて、第１の転送を行うのに必要な信号の発信を行う。これによって、ＥＩＳＡバス定義にしたがった動作が保証される。
【００３８】
また、このモジュールは、アダプタモード論理装置５９によってイネーブルされたときには、リアルモード・セグメントの変換、すなわち、オフセット・アドレスの２０ビット線形アドレスへの変換も行う。
【００３９】
Ｃ．マスター／スレーブ・ユニオン・モジュール５３
マスター／スレーブ・ユニオン・モジュール５３は、ＥＩＳＡマスター・インタフェース５５とＥＩＳＡスレーブ・インタフェース５４とがＥＩＳＡバスへの接続を共用することを可能にするためのものである。このユニオン・モジュール５３は、主に一連の２：１マルチプレックサによって構成されている。
【００４０】
Ｄ．割り込みコントローラ・モジュール６０
コントローラには、割り込みコントローラ・モジュール６０が含まれている。割り込みコントローラ・モジュール６０は、いろいろな割り込みの実行と、マスクおよびイネーブル／ディスエーブル機構を含む支持動作とを行う。割り込み信号がコントローラ内部のいろいろなモジュールから発生されて、割り込みコントローラ・モジュール６０まで送られてくる。すると、割り込みコントローラ・モジュール６０は、この割り込み信号を各種のイネーブル及びマスクを通過させてＯＲ動作を実行し、その結果をホスト・バスに送る。
【００４１】
割り込みコントローラ・モジュール６０は、割り込みが価値ある事象であるかどうかの検出やホストへの割り込みの承認を行うわけではない。割り込みコントローラ・モジュール６０は、ＡＳＩＣに設けられた割り込み処理動作に用いられる多数のレジスタを含んでいる。
【００４２】
Ｅ．アダプタ・モード・モジュール５９
アダプタ・モード・モジュール５９は、コントローラのいろいろな基本動作モードの設定とコントローラのいろいろな状態の報告とを含む多くの機能を提供するものである。また、アダプタ・モード・モジュール５９は、ホスト・システムが診断に用いるウインドウ・レジスタのべ一ス・アドレスの設定も行う。さらに、アダプタ・モード・モジュール５９は、アダプタのリセット動作を行う。また、このモジュールは、コントローラ内部のいろいろなモジュール及びホスト・システムとの通信のための、デバイスによって実行される媒体アクセス・コントローラを識別する媒体アクセス・コントローラ識別レジスタを提供する。
【００４３】
Ｆ．サイクル・アービタ・モジュール５６
サイクル・アービタ・モジュール５６は、アダプタのＲＡＭに内蔵されているレジスタ或いはＡＳＩＣに内蔵されているレジスタへのアクセスを、ＲＡＭインタフェース５０を介していろいろなレクエスタ間に分配するためのものである。これによって、モジュールは優先順位によるオーバラン或いはアンダーランに悩まされることなく、ＲＡＭにタイミングよくアクセスすることが可能となる。
【００４４】
Ｇ．マルチキャスト・コンパレータ・モジュール６１
図４に示されているコントローラには、マルチキャスト・コンパレータ・モジュール６１が含まれている。マルチキャスト・コンパレータ・モジュール６１は、アダプタ・モード・モジュール５９によってイネーブルにされると、受信したフレームの宛先アドレス・フィールドとマルチキャスト・アドレス・テーブルの内容とをビットごとに比較する。マルチキャスト・アドレス・テーブルがホストに作成されて、ＲＡＭ１５に格納される。この比較において、個々のアドレスにもまた同報通信アドレスにも一致が見いだされない場合には、入力フレームは棄却される。
【００４５】
このようにして、マルチキャスト・コンパレータ・モジュール６１は、イーサネット（登録商標）受信モジュール６２と受信ＤＭＡモジュール６３の動作を監視し、何時新しいフレームが受信されるかの判定を行う。イーサネット・レシーバ６２によって受信され、レシーバの並列インタフェース６４に供給された各バイトはマルチキャスト・コンパレータ・モジュール６１によってシャドーされる。次いで、これらのバイトは、マルチキャスト・コンパレータ・モジュール６１がアクセスすることが可能なマルチキャスト・アドレス・テーブルの中の有効なエントリーに対して比較される。
【００４６】
マルチキャスト・コンパレータ６１は、マルチキャスト・アドレス・テーブルの内容を作成したり、あるいは維持を行ったりすることはない。しかし、モジユールは、ホストのテーブルへのアクセスを検出し、ＲＡＭインタフェース・モジュール５０に対して適当なリダイレクション・オフセットを供給する。
【００４７】
Ｈ．統計量コントローラ・モジュール６５
好適なシステムは、また統計量コントローラ・モジュール６５も有している。このモジュールは、コントローラのその他のいろいろなモジュール、特にイーサネット伝送モジュールとイーサネット受信モジュールの動作を監視し、当てはまる事象が発生する度に、ＲＡＭ１５中に保持されている統計量を更新する。
【００４８】
Ｉ．ダウンロードＤＭＡモジュール５８
ダウンロードＤＭＡモジュール５８は、データをホストシステムからアダプタ・メモリヘバス・マスター・ダウンロードするリクエストを発するためのものである。次に、このデータは、アダプタのオンボード送信データ・バッファ内に保管され、直ちに送信されるか、或いは後に送信される。
【００４９】
以下に説明するように、バッファ記述子が定義され、伝送データ・バッファのどれかが利用可能となると、直ちに、ダウンロードＤＭＡモジュールはＥＩＳＡマスター・インタフェース５５へのダウンロード・バス・マスター動作リクエストを受け入れる。ダウンロードＤＭＡモジュール５８は、ホストおよびアダプタのそれぞれの開始アドレスによって、指示されているとおりにデータを整列するために必要とされるパックとアンパンックとを含む全てのバイト整列を実行する。
【００５０】
また、ダウンロードＤＭＡモジュール５８は、アダプタのＲＡＭの内部に伝送記述子リング・バッファを維持するための論理装置を有している。ダウンロードＤＭＡモジュール５８は、ダウンロード動作の終了を指示するための割り込みを適当なモードで発生する。また、ダウンロードＤＭＡモジュール５８は、伝送ＤＭＡモジュール６７に、いつ伝送を開始するべきかを伝える。ダウンロードＤＭＡ動作に必要となるいろいろなレジスタについては、以下に説明するが、これらのレジスタは、本発明のデータのバッファリング処理に直接必要となるものである。
【００５１】
Ｊ．伝送ＤＭＡモジュール６７
伝送ＤＭＡモジュール６７は、ダウンロードＤＭＡ論理装置５８の指示に従って、伝送記述子バッファから、或いは伝送データ・バッファから、或いはこれらの両方からのバイトを、以下に説明するようにフェッチする。さらに、フェッチされたバイトは順次イーサネット伝送モジュール６６に供給される。
【００５２】
こうして伝送ＤＭＡモジュール６７は、伝送記述子リング・バッファの内容を読み取って、即値データの内容と伝送すべきフレーム全体の長さを判定する。もし、指定されたフレームがネットワーク仕様と合わない場合、例えば８０２．３の最小値よりも短く、且つアダプタがそのようにイネーブルされているような場合には、このモジールは、無定義のデータ・バイトをパッディングしてイーサネット伝送モジュール６６にさらに供給する。
【００５３】
ＣＳＭＡ／ＣＤネットワークにおける衝突再試行は、伝送ＤＭＡモジュール６７によって処理される。衝突がイーサネット伝送モジュール６６から通知された場合には、伝送ＤＭＡモジュール６７はバッファ中のフレーム記述子を再解釈することによって、同じフレームの再受入れを行う。
【００５４】
もし、可能であるならば、また伝送終了条件が満たされている場合には、伝送終了割り込みが発生されて伝送ＤＭＡモジュール６７の割り込みコントローラ６０による処理が行われる。
【００５５】
また、伝送が終了すると、伝送ＤＭＡモジュール６７は、アダプタの送信記述子リング・バッファに適当なフレーム状態を記憶する。
【００５６】
また、伝送に利用可能なデータがショートフォールを起こすと、伝送ＤＭＡモジュール６７はアンダーラン条件を検出する。
【００５７】
伝送ＤＭＡモジュール６７の動作に必要なレジスタについて再度さらに詳細に説明する。
【００５８】
Ｋ．イーサネット伝送装置モジュール６６
イーサネット伝送装置モジュール６６は、８０２．３標準ネットワークのための伝送に関連する媒体アクセス制御機能を提供する。このモジュールは、伝送ＤＭＡモジュール６７から並列データバイトを受取り、８０２．３のアクセス規則を適用して直列データを外部エンコーダ／デコーダ・チップに対して供給する。
【００５９】
Ｌ．イーサネット受信装置モジュール６２
同様に、イーサネット受信装置モジュール６２は、本質的に８０２．３を具現化したものである。このモジュールは外部エンコーダ／デコーダから直列データを受取り、そのデータに対して８０２．３の規則を適用して並列形式のデータを生成し、受信ＤＭＡモジュール６３の使用に供する。このようにイーサネット伝送装置６６とイーサネット受信装置は標準ＣＳＭＡ／ＣＤ動作を実行する。
【００６０】
Ｍ．受信ＤＭＡモジュール６３
受信ＤＭＡモジュール６３は、伝送ＤＭＡモジュール６７と相補的な動作を行うものである。このモジュールは、イーサネット受信装置６２から並列データ・バイトを受取り、これをアダプタの受信リング・バッファに保管する。
【００６１】
受信ＤＭＡモジュール６３は、イーサネット受信装置から受け取ったバイトを３２ビット・ワードにアッセンブルしてからアダプタのＲＡＭに格納するようにするためのものである。フレームの受信終了時点において、フレームの状態と長さが受信リング・バッファ内に記憶され、ホスト・システムの使用に供される。
【００６２】
また、以下に説明するように、受信ＤＭＡモジュール６３は、アダプタのＲＡＭ内に受信バッファ・リングを形成して、これを保持する。更に、「ルック・バッファ」レジスタを配置することによって、以下に説明するように、受信ＤＭＡモジュール６３によって処理された受信データをホストが見ることが可能にされる。
【００６３】
また、受信ＤＭＡモジュール６３は、割り込み通知信号を適当な条件のもとで処理する。
【００６４】
Ｎ．アップロードＤＭＡモジュール５７
アップロードＤＭＡモジュール５７は、ＲＡＭインタフェース５０を介して受信バッファからホストシステムへのデータの転送を行う。従って、受信リング・バッファは、受信ＤＭＡモジュール６３によって管理され、またアップロードＤＭＡ５７によって解釈が行われる。実際のバス・マスター転送は、ＥＩＳＡマスター・インタフェース・モジュール５５によって実行される。
【００６５】
アップロードＤＭＡモジュール５７は、受信ＤＭＡモジュール６３によって受信リング・バッファに記憶された、受信フレームの位置と長さを含むデータ構造の解釈を行う。またアップロードＤＭＡモジュール５７は、ホスト・システムが定義した転送記述子を読み取って、何バイトのフレームを転送しようとしているのか、およびそのフレームをホスト・メモリのどこへ転送しようとしているのかを判定する。
【００６６】
ホストの有効な転送リクエストに応答して、アップロードＤＭＡモジュール５７は、ＥＩＳＡマスター・インタフェース・モジュールからのバス・マスター・サイクルを行うようにリクエストする。
【００６７】
また、アップロードＤＭＡモジュール５７は、受信ＤＭＡモジュール６３とアップロードＤＭＡモジュール５７との間でのインターロックを用いてホスト・システムへの転送速度を低減し、受信ＤＭＡモジュール６３を介して受信されたフレームが先走ることを防ぐ。最後に、このモジュールは転送終了を示す割り込みを生成し、ホストの使用に供する。
【００６８】
Ｏ．ＲＡＭインタフェース・モジュール５０
ＲＡＭインタフヱース・モジュール５０は、ＲＡＭのアドレス指定を行うのに必要となるいろいろな動作のためのマルチプレクサとマスクとを提供するものである。このモジュールは、いろいろなアドレスとデータソースをいっしょに多重化して、ＲＡＭのアクセス・サイクルのためのパラメータを形成するものである。このモジュール５０は、ホスト・システムが読み取ることができるコントローラのいろいろなその他のモジュールからデータを寄せ集めるものである。更に、このモジュールは、データに対してマスクを施して用いられない上位ビットを強制的にゼロとし、データ・ワードをラッチしてマルチサイクル読み取りを行う。
【００６９】
Ｐ．ＪＴＡＧモジュール
図示されていないが、コントローラには、ＪＴＡＧモジュールが含まれている。これは１９９０年５月２１日のＩＥＥＥ標準１１４９．１−１９９０に定められている状態機械を具現化したものである。このモジュールによって、製造において、ＡＳＩＣのピンのスキャン・テストが可能となる。
【００７０】
Ｑ．自律アクセス・アドレス・バス定義
マルチキャスト・コンパレータ６１、統計量コントローラ６５、ダウンロードＤＭＡ５８、伝送ＤＭＡ６７、受信ＤＭＡ６３、ＥＩＳＡスレーブ・インタフェース５４、およびアップロードＤＭＡ５７は、全て自律アクセス能力をＲＡＭインタフェース５０を介してアダプターのＲＡＭに要求する。自律アクセスはホスト・バス上に発生する全てのサイクルと無関係に発生するものである。
【００７１】
この要求は、ＲＡＭインタフェ一ス５０によって使用するためのアドレス情報を発生し、通信するの能力を要求する。受信ＤＭＡ６３、伝送ＤＭＡ６７およびダウンロードＤＭＡ５８に対す場合、能力はオフセット・バスを作動するＤＭＡ論理装置によって含まれている。自律アクセスに専用の同様なオフセット・バスは統計量コントローラ６５、アップロードＤＭＡ５７及びマルチキャスト・コンパレータ６１によって使用のために提供される。
【００７２】
図４Ａは自律アクセス・アドレス・バスの構造を図式的に定義している。いろいろな機能的なモジュールには、図４に示されたと同じ参照番号が与えられている。
【００７３】
マルチキャスト・コンパレータ６１は、マルチキャスト・アドレス・テーブル内の個々のロケーションをアドレスするためのＲＡＭインタフェース５０に可変オフセットを供給するために、マルチキャスト・オフセット・バス〔６：２〕をドライブする。有効な値は関連する自律アクセス・サイクル中に表わされる。
【００７４】
統計量コントローラ６５は、アダプタのＲＡＭの統計領域内の個々のロケーションをアドレスするためのＲＡＭインタフェース５０に可変オフセットを供給するために、統計量オフセット・バス〔７：２〕をドライブする。有効な値は関連する自律アクセス・サイクル中に表わされる。
【００７５】
アップロードＤＭＡ５７は、受信バッファ・リング内の個々のロケーションをアドレスするためのＲＡＭインタフェース５０に可変オフセットを供給するために、アップロードＤＭＡオフセット・バス〔１４：２〕をドライブする。有効な値は関連する自律アクセス・サイクル中に表わされる。
【００７６】
ダウンロードＤＭＡ５８は、自律サイクル中にＲＡＭの伝送バッファ／伝送記述子領域へ可変オフセットを供給するためにダウンロードＤＭＡオフセット・バス〔１２：２〕をドライブする。ダウンロードＤＭＡ論理装置５８によって発生された２つの選択信号は２つのＲＡＭ領域間を区別するために用いられる。また、ダウンロードＤＭＡ５８は、ダウンロードＤＭＡ５８からＲＡＭインタフェース５０へ延びている３２ビット・データ・バスのどのバイト・レインが有効なデータを有しているかを示すために、ダウンロードＤＭＡバイト・イネーブル〔３：０〕を発生する。有効な値は関連する自律サイクル中に表わされる。
【００７７】
受信ＤＭＡ６３は、ＲＡＭの２２Ｋバイト受信バッファ領域内の可変オフセットを運ぶために受信ＤＭＡオフセット・バス〔１４：２〕をドライブする。
【００７８】
最後に、伝送ＤＭＡ論理装置は、自律サイクル中のＲＡＭの伝送バッファ／伝送記述子領域へ可変オフセットを供給するために、伝送ＤＭＡオフセット・バス〔１２：２〕をドライブする。伝送ＤＭＡ６７によって発生された２つの選択信号は２つのＲＡＭ領域間を区別するために用いられる。
【００７９】
IV．伝送および受信におけるデータの流れとデータ構造
図５は、本発明のアダプタにおけるデータの流れを図示したものであり、特にホスト・インタフェース、アダプタ・メモリ、およびネットワークのインタフェースについて伝送および受信におけるデータの流れを強調して示したものである。
【００８０】
先にも述べたように、ホスト・システムは、ホスト・バスのアドレスによって定義されるホスト・メモリ空間（全体を１００として図示）を有している。このホスト・メモリ空間のあらかじめ指定されたブロック１０１が、アダプタのインタフェース・アドレスのために確保される。アダプタは、ホスト・バスを介したアダプタ・インタフェース・アドレス・ブロック１０１内へのアクセスに対して応答するホスト・インタフェース１０２を含んでいる。また、アダプタには、ホストから独立したメモリ１０３が含まれている。ホスト・インタフェースは、指定されたアドレス・ブロック１０１と独立メモリとの間での転送データの動作を行う。また、アダプタは、アダプタ・メモリに接続されているネットワーク・インタフェース論理装置１０４を含んでいる。ネットワーク・インタフェースは、独立メモリ１０３の中のバッファおよびネットワーク・トランシーバ１０５からのデータ転送の管理を行う。ネットワーク・トランシーバ１０５は、データをネットワーク媒体１０６に対して供給する。
【００８１】
ホスト・インタフェース論理装置は伝送処理において用いられる伝送記述子論理装置とダウンロードＤＡＭ論理装置（全体を１０７として図示）、および受信処理において用いられるビュー論理装置、転送記述子論理装置、およびアップロードＤＭＡ論理装置（全体を１０８として図示）を有している。基本的には、これらのモジュールはホスト・システムによるアダプタ・インタフェース・アドレス・ブロック１０１への読み取り／書き込みに応答して、独立メモリ１０３とホストとのあいだのデータ通信の管理を行うものである。これによって、ホストは受信および伝送動作におけるアドレスの翻訳とバッファの管理動作とから全く開放される。
【００８２】
ネットワーク・インタフェース論理装置１０４は、伝送ＤＭＡ論理装置（総括的に１０９として図示）と受信ＤＭＡ論理装置（総括的に１１０として図示）とを有している。伝送ＤＭＡ論理装置１０９は、以下に説明するようにアダプタ・メモリ１０３に記憶されている記述子に応じて、データを独立アドプタ・メモリ１０３から取り出して、ネットワーク・トランシーバ１０５に移動させる。同様に、受信ＤＭＡ論理装置１１０は、データをネットワーク・トランシーバ１０５から独立アダプタ・メモリ１０３中に移動させる。このように、ネットワーク媒体１０６からのすべてのデータ通信は、ホストから独立したメモリ１０３に直接的に結合される。次に、ホスト独立メモリ１０３からの通信は、ホスト・メモリ空間のメモリ・マップ領域に応じて、ホスト・インタフェース論理装置１０２によって制御され、これによりネットワークとの通信に必要なプロトコル・ソフトウェアが非常に簡略化されるのである。
【００８３】
図６は、ホスト・インタフェースによって使用されるホスト・アドレス・ブロック１０１のマップの略図である。好適なシステムでは、このブロック内のアドレスは、ホストにとってはホストのアドレス空間の連続した８Ｋのブロックのメモリ・マップ・レジスタのように見える。
【００８４】
ＥＩＳＡの実施例の場合は、ブロック１０１の中の「レジスタ」あるいはマップされた領域は、倍長ワードのアドレスごとに区切って配置されており、従ってアドレスは４の倍数となっている。多くの「レジスタ」が倍長ワードの数倍（５０９もの大きな量）のメモリ空間を占める。
【００８５】
「レジスタ」は、ホストのアドレス空間の任意のあらかじめ指定されたブロックにメモリ・マップされているが、ホスト・システムがこれらのレジスタに対して実行する読み取りあるいは書き込みは、実際には、直接的にアダプタ・メモリに対してアクセスがなされる訳ではない。メモリ・マップ空間へのアクセスは、ホスト・システムに対して透過的なホスト・インタフェース論理装置１０４によって翻訳されて実行される。従って、アダプタのメモリは、ホストのアドレス空間およびホストの管理から独立している。図６は、これらのレジスタへのアクセスに用いられるホスト・アドレス空間のマッピングの概略を示したものである。これらのレジスタに含まれる主要なものとしては、００１０（ｈｅｘ）のオフセット位置の伝送領域レジスタ（ｔｒａｎｓｍｉｔ  ａｒｅａ  ｒｅｇｉｓｔｅｒ）（ＸＭＩＴ  ＡＲＥＡ）、０８００（ｈｅｘ）のオフセット位置の転送領域レジスタ（ｔｒａｎｓｆｅｒ  ａｒｅａ  ｒｅｇｉｓｔｅｒ）（ＸＦＥＲ  ＡＲＥＡ）、および１００Ｃ（ｈｅｘ）のオフセット位置のルック・バッファ（ＬＯＯＫ  ＢＵＦ）がある。状態、統計量、情報、および指示レジスタが、多数、領域内にバランスして分布している。
【００８６】
「ＸＭＩＴ  ＡＲＥＡ」レジスタは、ホストが伝送記述子をアダプタに書き込むために用いられる。伝送記述子については、以下に詳細に説明するが、コンパイルしてフレームとして伝送すべきデータを識別するデータを含んでおり、また即値データを含むことができる。００１０（ｈｅｘ）のオフセット位置の「ＸＭＩＴ  ＡＲＥＡ」は、ほぼ２Ｋバイトのサイズを有している。このデータは、以下に説明するように、独立アダプタ・メモリの中の伝送記述子リングにマップされる。
【００８７】
アダプタ・インタフェース・ホスト・アドレス・ブロックの中の０８００（ｈｅｘ）のオフセット位置の「ＸＦＥＲ  ＡＲＥＡ」は、およそ１Ｋバイトのバッファであり、これを介して転送記述子がアダプタの独立メモリに書き込まれる。１００Ｃ（ｈｅｘ）のオフセット位置の「ＬＯＯＫ  ＢＵＦ」は、およそ２Ｋバイトのバッファであり、これによってホストの独立アダプタ・メモリ内の受信リング・バッファへのリード・オンリー・ウインドウが提供される。受信プロセスの詳細は、「ホストから独立したバッファ管理によるネットワーク・インタフェース」と題する出願に述べられている。
【００８８】
図７は、アダプタのホスト独立メモリのマップを示したものである。このメモリ構成は、独立メモリの中のオフセット０の位置のおよそ３Ｋバイトの伝送データ・バッファ、オフセット０Ｃ００（ｈｅｘ）の位置のおよそ５Ｋバイトの伝送記述子リング、オフセット２０００（ｈｅｘ）のおよそ２２Ｋバイトの受信バッファ・リング、およびオフセット７８００（ｈｅｘ）の位置のおよそ１Ｋバイトの転送記述子領域とから成っている。メモリの中の最後の３領域には、アダプタの使用に供されるアダプタ情報、ネットワーク統計量、およびマルチキャスト・アドレス・テーブルが記憶される。
【００８９】
好適なシステムにおいては、アダプタは、伝送バッファ、受信バッファ、統計構造、およびいろいろな状態レジスタと統計量レジスタのために３２ＫバイトのＳＲＡＭ（スタティックＲＡＭ）を用いる。図５に定義されているアダプタのメモリの中のいくつかの領域によって被定義データ構造が提供される。
【００９０】
Ａ．伝送データ・バッフア
上記のように、伝送データ・バッファは、３Ｋバイトを占める。この領域は、２つの１．５Ｋバッファに分割される。これらのバッファは、バス・マスター転送によってアダプタにダウンロードされるデータだけを記憶する。コントローラは、伝送データ・バッファと伝送記述子の即値データ部分の両方の内容を用いられフレームをカプセル化して伝送する。アダプタは、起動時のデフォールトとしてメモリの基底に最も近いバッファを選択し、その後は自動的にバッファの使用を変更していく。
【００９１】
伝送バッファは、ダウンロードＤＭＡ論理装置と伝送ＤＭＡ論理装置とによって共同使用される。伝送ＤＭＡ論理装置は、バッファ０からバッファ１に切り換えたり、あるいは元に戻したりすることが自由にできる。唯一存在する制約は、伝送開始スレッシュールド・レジスタによってさだめられる伝送データの使用可能性である。伝送ＤＭＡモジュールは、ある１つの伝送を終了したときにはいつでも１つのバッファから他のバッファへ切り換わることができる。このバッファの切り換えは、伝送が成功したかどうかとはかかわりなく、また、前回の伝送においてマスター・ダウンロード・データが用いられていたかどうかとはかかわりなく起こる。
【００９２】
ダウンロードＤＭＡモジュールは、切り換わろうとしている相手のバッファが伝送ＤＭＡモジュールによって用いられていない場合においてだけ、あるバッファから他方のバッファへ切り換わることができる。ダウンロードＤＭＡは、伝送記述子の処理を終了する度ごとに、以下に説明するように、直前の記述子中に何らかのバス・マスター動作が呼び出されていたかどうかにはかかわりなく、あるバッファから他のバッファに切り換わろうと試みる。ただし、伝送ＤＭＡモジュールが使用中のバッファに切り換わらない。
【００９３】
Ｂ．伝送記述子
伝送記述子は、伝送を保留しているフレームを定義し、また伝送されたフレームの状態を保持するものである。これらの記述子は可変長であり、上記のように５Ｋバイト・リング・バッファに連続的に配置される。最初に配置される記述子は倍長ワードごとに区切られて配置されなければならない。図８ａに伝送記述子のデータ構造を示す。
【００９４】
伝送記述子領域に記述されるエントリーの全体の内容は、ホスト・プロセッサから図６に示されている「伝送領域」を介して供給されるデータをそのまま丸ごとコピーしたものである。しかし、「伝送プロトコル識別子」と「伝送フレーム状態」レジスタのフォーマットを要求に応じるため、またフレーム伝送とバッファ管理に関する充分な情報を供給するために、１つの値を再配置し、また幾つかを自動的に保存することが必要である。
【００９５】
ホスト・プロセッサの「伝送領域」への書き込みは、最初に書き込まれる値、即ち「伝送プロトコル識別子」と「伝送リクエスト処理」の値がリング内の次に利用可能なデータ構造内の５番目の３２ビット・ワードの位置（１０（ｈｅｘ）のオフセット位置）で終わるように、アダプタによって自動的にオフセットがかけられる。これは「伝送リクエスト処理」の値が「媒体アクセス・コントローラ識別子」の値に予約されている場所にホストによって書き込まれることを意味している。「伝送リクエスト処理」の値がアダプタのＲＡＭに書き込まれると、アダプタは直ちに、５番目の３２ビット・ワード記憶場所の最下位１６ビットの内容を４番目の３２ビット・ワード記憶場所の最上位１６ビットにコピーする必要がある。「伝送リクエスト処理ｊのコピーを行った後に、アダプタは「媒体アクセス・コントローラ識別子」（ＭＡＣＩＤ）の値を「「媒体アクセス・コントローラ識別子」レジスタから検索して、これを「伝送リクエスト処理」によって空けられた場所に書き込む。フレームの送信が終了した後に、４番目の３２ビット記憶場所（Ｃ（ｈｅｘ）のオフセット位置）の最下位１６ビットが伝送フレーム状態に置き換えられる。
【００９６】
「次の記述子ポインタ」のエントリーは、「送信バッファ・カウント」と「伝送即値長さ」の値がアダプタによって更新することができる。
【００９７】
「伝送領域」レジスタに書き込まれるデータは正確な順序で正しい位置に書き込まれるようになされるので、これらの２つの値の書き込みは容易に検出することが可能であり、これらを用いて、値をＲＡＭから検索する必要なしに、次の記述子の開始の判定に必要とされる記述子のサイズを算出することができる。
【００９８】
最後の「伝送データ長」の値がアダプタに書き込まれてしまえば、フレームの長さを算出して、これをデータ構造の「フレーム長」の位置を保管することが可能である。またこの値は、ホストが直ちに使用できるように、コントローラ・チップの中の「伝送フレーム長」レジスタにコピーされる。
【００９９】
以下の数パラグラフにおいて、伝送記述子データ構造の各フィールドについて定義する。
【０１００】
「次の記述子ポインタ」の値は、次の記述子の最初のワードを指し示すものである。この値は、ホストが「伝送待ち行列状態」を読み取ると直ちに更新される。定義された「次の記述子ポインタ」は、これによって指し示された場所が妥当な記述子を含んでいるということを必ずしも意味するものではない。これは、単に次の妥当な記述子が定義されるとしたら、これをどこに発見することができるかを示すだけに過ぎない。
【０１０１】
「フレーム長」フィールドはアダプタによって計算されて更新される。フレームの長さは、「伝送データ長」の値と「伝送即値長さ」の値とをすべて計算することによって求められる。この結果として得られる和が伝送フレームの全バイト数である。もしもこの和が８０２．３最小フレーム長よりも小さい場合には、和を最小フレ一ム長の値と等しくなるように設定する。この和は、伝送記述子の「フレーム長」の行に書き込まれ、「伝送フレーム長」レジスタを介してホストが利用できるようになされる。
【０１０２】
「伝送失敗」フィールドは、伝送が終了した後にイーサネット・トランスミッタから寄せ集めた状態ビットからなるエラー・コードを含む。このフィールドは「伝送失敗」レジスタにマップされ、ホストがアクセスできるようになされる。
【０１０３】
「伝送リクエスト処理」の値は、伝送ＤＭＡコントローラによって解釈され、関連するフレームの伝送の試みが終了したことの指示信号を発するべきかどうかが判定される。もし、このフィールドがゼロでなければ、指示信号が発せられる。また、伝送記述子リングの中のフレームのエントリーは、ホストが伝送状態を調べることができるようになるまで保持される。指示信号が発せられているときには、「伝送リクエスト処理」、「伝送状態」、「伝送プロトコル識別子」、「媒体アクセス・コントローラ識別子」の各フィールドをホストが利用可能なようになされる。もし、「伝送リクエスト処理」がゼロである場合には、ホストに何らかの指示を行うことなく、伝送終了後に伝送記述子待ち行列エントリーが破棄される。伝送アンダーライン状態は、「伝送リクエスト処理」がゼロであるかどうかにはかかわりなく通知される。
【０１０４】
「伝送状態」フィールドは、関連するフレームの送信状態を含むものである。このフィールドの内容は、伝送の試みが終了した直後に更新される。リターン・コードが「伝送状態」レジスタ定義に定義される。
【０１０５】
このフィールドの「伝送プロトコル識別子」の値は、伝送が終了したときに、ホストがフレームと係わる特定のプロトコルを識別するのに使用するためだけに待ち行列内に維持される。このようにすることによって、複数のプロトコルを同時にもちいることが可能となる。「伝送プロトコル識別子」と「伝送リクエスト処理」の両方によって、アダプタを通過するフレームが一意的に識別される。
【０１０６】
「媒体アクセス・コントローラ識別子」は、「伝送プロトコル識別子」と同様に、待ち行列中に保持されて、伝送終了時に使用される。しかし、ホストはこの値を「伝送領域」レジスタを介してアダプタに書き込むことはしない。そうではなく、ホストはこの値をいったん「媒体アクセス・コントローラ識別子」レジスタ中に記憶し、その後、この値を、「伝送リクエスト処理」がその最終的な位置にコピーされた後に、アダプタに応じて記述子データ構造中に保管する。
【０１０７】
「伝送バッファ・カウント」フィールドの内容は、ホストが「伝送領域」へ書き込むことによって供給される。このフィールドは、伝送フレームを構成するのに用いられるホストのメモリ内のバッファの数を指定する。各バッファは、２つの伝送データ・バッファのうちの１つが利用可能となると、直ちにホストのメモリからアダプタの伝送データ・バッファにリストされた順序に従って転送される。もしも「伝送バッファ・カウント」がゼロである場合には、このフレームに対しては、バス・マスター動作は実行されない。
【０１０８】
「伝送即値データ長」フィールドはホストから「伝送領域」に対する書き込みによって定められ、ホストから供給されようとしている「即値」データのバイト数を表すものである。このフィールドがゼロである場合には、次の３２ビット・ワード位置が最初のホスト・データ・バッファ記述子を含んでおり、バス・マスター・サイクルにおいてフレーム全体がアダプタに転送される。「伝送即値データ長」の値は、必ずしも４の倍数である必要はない。最初のホスト・データ・バッファ記述子の位置は次のように定められる。
【０１０９】
記述子オフセット＝（（伝送即値データ長）＋３）
＆ｆｆｆｃ（ｈｅｘ）＋１８（ｈｅｘ）
【０１１０】
可変長の「即値データ」フィールドは、ホストが「伝送領域」へのメモリ書き込みを用いてアダプタに保管する即値データを含む。このフィールドの長さは０から１，５１４バイトの範囲で変わる。即値データは、伝送に際して、アダプタによって伝送フレームのプリアンブルと伝送バッファ・データ（もし存在すれば）との間に挿入される。一般に、即値データは宛先アドレス、発信元アドレス、およびプロトコル特有のヘッダー・データで構成される。しかし、伝送フレーム全体を即値データであると見なすこともできる。このようにすると、アダプタは、伝送フレームの残りをヘェッチするためのバス・マスター動作の実行が全く必要なくなる。「伝送即値データ長」がゼロである場合には、このフィールドはスキップされて、フレーム全体がホスト・メモリ中のデータ・バッファ中に存在するものと仮定される。もし、「伝送即値データ長」が倍長ワードの整数倍以外の長さを指定している場合には、ホストは最も近い４の倍数に丸めて、そのバイト数だけ書き込みを行うことができる。「伝送即値データ長」を越える余分のバイトは無視され、伝送フレームの一部として含まれることはない。
【０１１１】
「伝送即値データ長」フィールドは、ホスト・データ・バッファ記述子当たりの２つのエントリーのうちの１つであり、関連するホスト・バッファのバイト数を定義するものである。この値は４の倍数である必要はない。
【０１１２】
３２ビットの「伝送データ・ポインタ」の値は、関連するホスト・データ・バッファの物理開始アドレスである。この値は４の倍数である必要はない。
【０１１３】
Ｖ．伝送処理
図９は、アダプタ上の独立メモリ内の伝送データ・バッファと伝送記述子リング・バッファの管理に用いられるネットワーク・インタフェース・ロッジクとホスト・インタフェース論理装置とについて示したものである。ホスト・インタフェースの側の論理装置には、ホスト記述子論理装置１５０とダウンロードＤＭＡ論理装置１５１とが含まれる。ホスト記述子論理装置１５０およびダウンロードＤＭＡ論理装置１５１は「伝送領域」レジスタ、「伝送終了スレッショルド」レジスタ、「伝送失敗」レジスタ、「伝送フレーム状態」レジスタ、「伝送プロトコル識別子」レジスタ、「伝送待ち行列状態」レジスタ、「伝送開始スレッショルド」レジスタ、を含む伝送“レジスタ”を介してホスト・アドレス空間に接続される。これらのレジスタの詳細については以下に説明する。
【０１１４】
図８ａに示されている記述子は、アサプタのホストの独立ＲＡＭの伝送記述子領域に、ホストによる「伝送領域」アドレス・ブロックへの書き込みによって記憶される。３つの異なった処理が、記述子待ち行列のエントリーに対してなされる。ホストは、最初に伝送記述子を作成するための書き込みを行い、バッファのデータをホストのメモリから伝送データ・バッファに移動させるためのバス・マスター・ダウンロード、および記述されたフレームのネットワークへの伝送を行う。最初の２つの処理は、ダウンロードＤＭＡ論理装置１５１およびホスト記述子論理装置１５０において行われる。伝送は、伝送ＤＭＡ論理装置１５５によって実行される。伝送記述子リング・バッファ１５２内の記述子の数と状態とは、ホストの書き込み、ダウンロード、および伝送処理の相対速度に従ってアダプタの動作過程において変化する。
【０１１５】
ダウンロードＤＭＡ論理装置１５１ないの２つの変数によって伝送記述子待ち行列の状態が記述される。「ゼロ・ダウンロード保留」は、ダウンロードＤＭＡ論理装置１５１によるダウンロード処理が未だ行われていない完全フレーム記述子が存在しないことを示すものである。「ゼロ・フレーム存在」変数は、すでにダウンロード処理が終了したけれども伝送がすんでいない記述子が存在しないことを示す。
【０１１６】
これらの伝送機構を構成している３つの処理の各々が記述子待ち行列を指し示すそれぞれのポインタの集合を保持する。
【０１１７】
ホスト記述子論理装置１５０は、アダプタ・メモリ上の伝送記述子リング・バッファ１５２のポインタの生成を行う。これらのポインタは、現在のホスト記述子ポインタ“ＣＨＤ”およびホスト書き込みポインタ“ＨＷ”として表されている。現在のホスト記述子ポインタＣＨＤは、ホストによって現在書き込みが行われているか、あるいは書き込まれようとしている記述子のベース・アドレスを指し示す。ホスト書き込みポインタＨＷは、（ＣＨＤポインタが指し示している）カレント記述子内のホストが次に書き込みを行おうとしている位置を指し示す。すなわち、ＨＷポインタは、ホストがカレント記述子を完成するために書き込みを行おうとしている「伝送領域」アドレス・ブロック内のオフセットを予測するものである。
【０１１８】
ホスト・システムから「伝送データ・バッファ０」１５３と「伝送データ・バッファ１」１５４へのダウンロードを管理している間に、ダウンロードＤＭＡ論理装置１５１は３つのポインタとバッファ選択信号を生成する。ダウンロードＤＭＡ論理装置１５１によって生成されたポインタはバス・マスター・ダウンロードＤＭＡ論理装置１５１によって現在処理されている記述子のベース・アドレスを指し示す現在のダウンロード記述子ポインタＣＤＤを含んでいる。ダウンロードＤＭＡ論理装置によって生成される第２のポインタは、現在の伝送データ・バッファ（「伝送データ・バッファ０」または「伝送データ・バッファ１」のいずれか）内のダウンロード処理によってデータが書き込まれている位置を指し示すダウンロード・ポインタＤＤを含む。ダウンロードＤＭＡ論理装置１５１によって生成される第３のポインタは、カレント・ダウンロード・バッファＣＤＢポインタを含む。ＣＤＢポインタは、ＣＤＢポインタによって指し示されている伝送記述子内の、現在ダウンロード処理がなされているホスト・メモリの仕様が存在するバッファ記述子を指し示す。
【０１１９】
また、ダウンロードＤＭＡ論理装置は、バス・マスター動作において、ダウンロードＤＭＡ論理装置からデータの転送を行う相手先のカレント伝送データ・バッファ１５３と１５４を、発見的に示されているように、信号ＢＵＦ１／０を用いて選択する。
【０１２０】
伝送ＤＭＡ論理装置１５５は、伝送処理のための３つのポインタの生成を行う。これらのポインタのうちにカレント伝送記述子ＣＸＤポインタが含まれるが、このポインタは、伝送論理装置１５５によって現在処理が行われている、伝送記述子リング・バッファ１５２内の記述子のべ一ス・アドレスを指し示すものである。伝送読み取りＸＲポインタは、カレント記述子あるいはカレント伝送データ・バッファ（１５３または１５４）ないの、伝送処理において、伝送すべきデータの読み取りが行われている位置を示すものである。
【０１２１】
伝送末端ポインタ（ＸＴ）は待ち行列のバックエンドを指し示すものである。このＸＴポインタは、伝送をすでに終了したけれどもステータス情報がホストシステムによって読み取られていないフレームが存在する場合には、ＣＸＤポインタではなく伝送記述子リング・バッファ１２内の古い記述子を指し示す。
【０１２２】
好適なシステムにおいては、ホストに対する伝送終了指示信号の生成に関して２つの動作モードが存在する。以上のパラグラフにおいて説明したホスト書き込み、バス・マスター・ダウンロード、および伝送処理に関連するデータ構造において、「ダウンロード伝送終了」変数が偽である場合には、伝送が終了したときあるいは「伝送終了スレッショルド」（以下に説明）が満たされたときに、指示信号の発生が行われる。一方、「ダウンロード伝送終了」が真である場合には、ダウンロードＤＭＡ論理装置１５１は、状態の読み取りがまだ行われていないフレームの追尾を行う。このモードでは、ホストは、フレームのダウンロードにおいて、フレームの伝送終了指示信号を受け取る。従って、ホストがその指示信号に応答することができるようになる以前にフレームを伝送することが可能である。このような状態においては、「伝送末端」はもはや記述子リング・バッファないの最も古い有用なエントリーを定義することができない。従って、フレーム状態処理が必要である。フレーム状態ポインタＦＳは、このモードにおいて、ホスによる状態の読み取りがまだ行われていない最も古い記述子のべ一ス・アドレスを指し示すものである。ＦＳポインタは伝送処理と関連するものであるので、図９の伝送ＤＭＡ論理装置１５５に示した。しかし、好適なシステムにおいては、ＨＳポインタは、ダウンロードＤＭＡ論理装置１５１の方に論理的な接続がなされる。
【０１２３】
また、伝送ＤＭＡは、カレント伝送フレームを構成するカレント伝送データ・バッファ１０３あるいは１０４を、発見的に図示されているように、信号ＢＵＦ０／１を用いて選択する。
【０１２４】
ホストからアダプタへのインタフェースを見ると、あたかも、あらかじめ指定されたアドレス・ブロックの１組のレジスタの集合であるかのように見える。伝送に必要となる重要な“レジスタ”について次にその概要を説明する。
【０１２５】
Ａ．伝送領域
このレジスタの目的は、ホストがアダプタに対して、（もし残りのフレームがあるとしたら）即値データとホストのメモリ・システムのどこに残りのフレームが存在するかを表すデータ構造を供給するための機構を提供することである。アダプタはこの情報を伝送記述子リング１２内に記憶し、記述されているこのフレームが最終的に伝送できるようになったときに用いる。
【０１２６】
アダプタは、データが書き込まれているアドレスと書き込まれている順序とから、そのデータが何を表すのかを判定する。アダプタへのデータの書き込みは、図６に関連して先に説明した構造と順序とを用いて行われねばならない。
【０１２７】
バス・マスター・ダウンロードは、記述子が「伝送領域」に書き込まれ、「伝送待ち行列状態」（以下に説明）がホストによって読み取られた後に、開始される。
【０１２８】
いったん、ホストが伝送記述子バッファ構造の「伝送領域」への転送を終了してしまうと、ホストは、「伝送フレーム長」を読み取って、ホストが伝送フレーム内に含むように指定したバイト数を判定することができる。次に、「伝送待ち行列状態」を読み取り、他のフレームをこのレジスタに書き込むことが可能なようにＣＨＤポインタを進めることが必要である。「伝送待ち行列状態」の読み取りの後において、「伝送領域」が再び満たされるまで、「伝送フレーム長」は無定義状態となる。
【０１２９】
ネットワークへの実際のフレームの伝送は、次の２つの条件が満たされたときに開始する。：（１）フレーム全体がアダプタのＲＡＭヘコピーされたとき、「伝送開始スレッショルド」（後に説明）条件がみたされているか、あるいは「伝送開始スレッショルド」がゼロである場合。（２）以前から待ち行列状態にあるリクエストが存在しない場合。もし、「伝送開始スレッショルド」バイト以上の即値データが「伝送領域」に書き込まれた場合には、「伝送待ち行列状態」を読み取る前に開始される。
【０１３０】
ホストがデータを「伝送領域」に書き込んでいるときに、アダプタが「伝送領域」の資源を使い果たしてしまった場合には、ホストが「伝送待ち行列状態」の読み取りを行ったときに、ホストに対して６の値が戻される。記述子バッファの容量を越えた書き込みはアダプタにすでに待ち行列状態にあるデータには何らの邪魔することはないであろう。
【０１３１】
伝送フレーム宛先アドレスおよび発信元アドレスは、ホストからの各伝送フレームごとにアダプタに対して、明示的に供給されなければならない。この情報は、即値データの一部として供給するともできるし、あるいは、もし即値データが存在しない場合には、記述子に指定された最初のデータ・バッファの最初の１２バイトとして供給するようにもできる。
【０１３２】
本質的に、ホストは、フレームの各バイトの供給を「伝送領域」レジスタを介して、あるいはダウンロードＤＭＡ動作によって、フレーム・デリッミタの初めとフレーム検査シーケンス（ＣＲＣ）との間に行う。
【０１３３】
Ｂ．伝送終了スレッショルド
「伝送終了スレッショルド」は、伝送終了の早期指示信号のためのものである。
【０１３４】
「伝送終了スレッショルド」レジスタは、アダプタが「伝送終了」指示信号を発する前に伝送すべき、あるいはアダプタヘダウンロードすべき（アダプタ・モードに依存する）残りの伝送バイト数を指定するのに用いられる。このレジスタは１０から０までのビットだけで具現化される。もし、最大フレーム長よりも大きな値が与えられると、この動作は正しく機能しない。この機能をディスエーブルするときには、レジスタを０にセットすればよい。「伝送フレーム長」の値以下を参照のこと）はどこで伝送フレームが終わるのかを判定するのにもちいられる。
【０１３５】
もし、このスレッショルドが大きすぎる値に設定されていると、アダプタが指示信号に応答してしまう。もし、「伝送フレーム状態」がｆｆ（ｈｅｘ）を返した場合には、指示信号をわずかに遅らせるように「伝送終了スレッショルド」レジスタの値を低減することによって実現される。このレジスタの動作は、フレームの最初の６０バイトを伝送している間、ディスエーブルとされる。このレジスタはリセットによって０にクリアされる。
【０１３６】
Ｃ．伝送失敗
「伝送失敗」は、伝送失敗の原因を返す。
このレジスタは、待ち行列中で待機していたフレームの伝送失敗原因を返す。０以外の値が返されたときには、伝送の試み中に１あるいはそれ以上のエラーに遭遇したことを示す。
【０１３７】
このレジスタの各ビットは以下のように定義される。
ビット０      ＤＭＡアンダーラン
ビット１      キャリアの不検出
ビット２      最大衝突
ビット３      ＳＱＥテスト失敗
【０１３８】
このレジスタは、フレーム伝送の試みが成功したか失敗したかにかかわらず有効なデータを含む。失敗がなかった場合には、このレジスタはその値として０（ｈｅｘ）を含む。このレジスタの内容は、フレームの送信が終了し（「伝送フレーム状態」の低位バイトがｆｆ（ｈｅｘ）以外の値となる。）、「伝送プロトコル識別子」が読み取られる前において有効である。
【０１３９】
データにアンダーラインが発生した場合には、宛先のデバイスが確実にそのフレームを不良フレームとして受取り、これを棄却するように、アダプタは強制的にそのフレームの送信中にＣＲエラーを発する。
【０１４０】
Ｄ．伝送フレーム長
「伝送フレーム長」は、伝送すべきバイト数を返す。
レジスタは、待ち行列中でＣＸＤポインタによって示される現在の位置の伝送フレーム記述子による伝送を待機している総バイト数を返す。この値は、即値データのバイト数とアダプタにダウンロードされたこのフレームに関するすべてのバッファ長フィールドの総数である。このレジスタによって返される値は、フレームの長さが６０バイトよりも短いときにアダプタによって行われるパッディングの影響をなんら受けない。
【０１４１】
「伝送フレーム長」レジスタは、ホストが最後のバイトを「伝送領域」に書き込んだ直後に有効となり、「伝送待ち行列状態」を読み取った後の最後の書き込みが「伝送領域」に行われるまで有効である。
【０１４２】
Ｅ．伝送フレーム状態
「伝送フレーム状態」は、伝送の試みの結果を返す。
このレジスタの：最下位の１６ビットは、待ち行列中で待機していたフレームの伝送の試みについての状態を返す。最上位の１６ビットは、そのフレームの「伝送リクエスト処理」を返す。伝送が成功したときには、値としてＸＸＸＸ００００（ｈｅｘ）（ＸＸＸＸはこの特定のフレームの「伝送リクエスト処理」である。が返され、一方、伝送が失敗した場合には、ＸＸＸＸ０００ａ（ｈｅｘ）が返される。アダプタが、衝突の後の伝送再試行処理を行っている場合には、ＸＸＸＸ００ｆｅ（ｈｅｘ）が返される。伝送がまだ信号中である場合には、「伝送フレーム状態」は、ＸＸＸＸ００ｆｆ（ｈｅｘ）を返す。
【０１４３】
もし、フレームの送信が成功しなかった場合には、伝送が失敗した具体的な理由を「伝送失敗」によって知ることができる。「伝送プロトコル識別子」を読み取って、もし次に伝送されるフレームがあれば「伝送フレーム状態」がこの次に伝送されるフレームに進められる。「伝送フレーム状態」を読み取ったときに、状態の値として“再試行”が返された場合には、この「伝送フレーム状態」の読み取りによって同時に「送信終了」指示信号がクリアされる。
【０１４４】
Ｆ．伝送プロトコル識別子
「伝送プロトコル識別子」は、伝送フレームのプロトコル識別子を返す。
アダプタが待ち行列で待機していたフレームの伝送の試みを終了し、その状態を指示すると、直ちに、ホストは「伝送プロトコル識別子」を読み取って、そのフレームを識別することが可能である。ここで返される値は、フレームを「伝送領域」に待機させる際に、「伝送プロトコル識別子」フィールドに書き込まれた値と同じ値である。
【０１４５】
このレジスタの読み取りが行われると、「伝送フレーム状態」の値として“再試行”が読み取られた場合を除いて「伝送終了」指示信号がクリアされる。「伝送フレーム状態」の読み取りによって、“再試行”が読み取られた場合には「伝送終了」がクリアされる。
【０１４６】
「伝送プロトコル識別子」の値は、３２ビット・レジスタの上位１６ビットに存在する。このレジスタの最下位の１６ビットは、「媒体アクセス・コントローラ識別子」レジスタに書き込まれる「媒体アクセス・コントローラ識別子」を返す。倍長ワード読み取りによって、これらの両方の値が同時に返される。
【０１４７】
多数のフレームを伝送待ち行列中に待機させて、多数伝送を行わせることが可能である。「伝送プロトコル識別子」の両ワードを読み取ると、「伝送フレーム状態」の終了状態および「伝送失敗」が進められ、また、もし次のフレームが存在すれば、「伝送プロトコル識別子」が伝送したフレームの次のフレームに進められる。
【０１４８】
Ｇ．伝送待ち行列状態
「伝送待ち行列状態」は、伝送フレームを待ち行列中に待機させた結果を返す。
「伝送待ち行列状態」レジスタ読み取ることによって、ホストが伝送フレームを「伝送領域」に待ち行列として待機させた試みの結果が返される。
【０１４９】
２（ｈｅｘ）-成功：リクエストされた伝送を待ち行列中へ待機させるのに成功した場合には、この値が「伝送待ち行列状態」を読み取ったときに返される。
６（ｈｅｘ）-資源の使い果たし：アダプタが待ち行列記憶用ＲＡＭを使い果たしてしまった場合には、状態の値として６（ｈｅｘ）が返される。
７（ｈｅｘ）-長過ぎるフレーム：伝送しようとしている単一のフレームの総バイト数が最大フレーム長をこえている場合には、このレジスタは７（ｈｅｘ）を返す。
【０１５０】
ａ（ｈｅｘ）-順序違反：データが順番通りに「伝送領域」に書き込まれなかった場合には、このエラー・コードが返される。
ｆｆ（ｈｅｘ）-アダプタの準備未了：「伝送領域」への書き込みが終了した後に、「伝送待ち行列状態」を読み取るのが早過ぎた場合には、待ち行列処理が終了する前に状態の値を読み取るようにすることが可能である。
【０１５１】
また、このレジスタが読み取られると、「伝送領域」が進められて、他の伝送を待ち行列中に待機させることが可能なようになされる。このレジスタの読み取りは、「伝送領域」へ全データが書き込まれた後に、かつ、「伝送領域」への次の伝送リクエストが行われる前に行う必要がある。
【０１５２】
「伝送待ち行列状態」から、エラー・コード（６（ｈｅｘ）、７（ｈｅｘ）、ａ（ｈｅｘ）あるいはｆｆ（ｈｅｘ））が返された場合には、そのフレームは待ち行列中に待機されておれず、ホストはこれを別の時に再び待ち行列に待機させる試みを行う必要がある。フレームが長過ぎたことを示すフラッグが立っている場合には、再度待ち行列に待機させる試みを行う前に、フレームを複数のフレームに分割する必要がある。
【０１５３】
成功を示すコード（２）が返された場合には、ホストは直ちに次の他のフレームを待ち行列中に待機させる試みに進むことができる。待ち行列中に待機させることが可能なフレーム数は、この目的のために割り当てられたアダプタのＲＡＭ容量と、各フレームに含まれる即値データ量とに依存する。
【０１５４】
ホストが、利用可能な「伝送記述子」の自由空間を越える大き過ぎるフレームを待ち行列中に待機させようと試みた場合には、まずエラーが起こり、次いで、このエラーがホストに対して返される。
【０１５５】
Ｈ．伝送開始スレッショルド
「伝送開始スレッショルド」は、伝送を早期に開始させるためのものである。
「伝送開始スレッショルド」レジスタは、伝送を開始する前にアダプタに存在している必要がある伝送バイト数を指定するのに用いられる。最大フレーム長よりも大きな値が与えられると、この機能は正しく動作しない。レジスタをゼロにセットすると、この機能をディスエーブルとすることができる。バイト数のカウントは、伝送フレームの宛先フィールドの最初のバイトから開始される。
【０１５６】
利用可能であると見なすことができるバイト数は、ホストによって「伝送領域」に書き込まれた即値デ・一夕とバス・マスターＤＭＡ動作を用いてアダプタの伝送データ・バッファに転送されたバイトとの和である。「伝送開始スレッショルド」を満たす伝送フレーム・バイトの即値データが準備されたか、あるいはアダプタがバス・マスタを用いて、「伝送開始スレッショルド」-「伝送即値データ長」のバイトをアダプタ上に転送されると、直ちに伝送リクエストが発せられる。
【０１５７】
アダプタ中に存在するバイト数は、フレームの全サイズが「伝送開始スレッショルド」よりも小さい場合を除いて、伝送を開始するのに必要な「伝送開始スレッショルド」に等しいか、またはこれよりも大きいことが必要である。フレームの全サイズが「伝送開始スレッショルド」よりも小さい場合には、このフレームの伝送は全フレームのアダプタへのコピーが終了した時点で開始される。前に保留となっている伝送フレームが存在したり、あるいはネットワークのトラフィックが滞留しているために実際の送信が遅滞することが起こり得る。
【０１５８】
Ｉ．伝送リング管理
図１０（Ａ）−（Ｅ）は、伝送動作にもちいられるポインタの進みかたを示したものである。図１０（Ａ）−（Ｅ）において、伝送記述子リングの全体部分が２００でしめされており、伝送データ・バッファが２０１−０および２０１−１で示されている。また、上記のポインタが略記号を用いて表されている。
【０１５９】
図１０（Ａ）において、ホスト記述子論理装置が伝送記述子リング２００中に第１の記述子の書き込みを行う。こうして、ＣＸＤポインタが第１の記述子のベース・アドレスを指し示し、また、ＨＷポインタが、ホストが次に書き込もうとしている倍長ワードの記述子のべ一ス・アドレスからのオフセットを指し示す。またＣＤＤ，ＣＤＢを含むダウンロード・ポインタによって、第１の記述子のダウンロード動作が開始される前のベース・アドレスが指し示される。同様に、伝送記述子ＣＤＸおよびＸＲが同じベース・アドレスを指し示している。また、ダウンロード・データ・ポインタＤＤによって第１のバッファ、例えばバッファ０の先頭が指し示される。
【０１６０】
図１０（Ｂ）においては、第１の記述子の書き込みが終了してダウンロード処理が開始され、ホストは、第２の記述子の書き込みを開始している。このようにして、ホスト記述子論理装置・ポインタＣＨＤは、次の記述子のベース・アドレスを指し示し、またＨＷが次のバイトと考えられるアドレスを指し示す。ダウンロード・ポインタＣＤＤは、第１の記述子のべ一ス・アドレスを指し示す。ダウンＤＭＡ論理装置は、ホストから伝送データ・バッファへのバッファ転送処理を行っている最中であるものと仮定されている。こうして、ＣＤＤポインタは、第１の記述子ダウンロード・バッファの記述子を指し示し、ＤＤポインタは、指し示す伝送データ・バッファ内のデータがダウンロードされている位置を表すオフセットを指し示す。スレッショルドにはまだ達していないので、伝送動作はまだ開始されていない。従って、伝送ポインタ及び末端ポインタは、依然として第１の記述子を指し示している。
【０１６１】
図１０（Ｃ）において、ホスト記述子論理装置は、第３の記述子に関する動作を行っており、また、ダウンロード論理装置は、第２の記述子に関する動作を行っており、伝送論理装置は、第１の記述子に関する動作を行っている。また、ホスト記述子論理装置・ポインタＣＸＤおよびＸＲは、第１の記述子に関する動作を行っている。従って、ＣＸＤポインタは第１の記述子のべ一ス・アドレスを指し示し、一方、ＸＲポインタは、伝送ＤＭＡ論理装置による伝送のために読み取っている即値データを指し示す。
伝送読み取りポインタＸＲは、即値データの読み取りを終了して、第１の記述子を処理する際に図１０（Ｂ）に示されているように、ダウンロードＤＭＡ論理装置によって満たされた伝送データ・バッファに移動する。
【０１６２】
伝送末尾ポインタＸＴは、依然として第１の記述子のべ一ス・アドレスを指し示している。
【０１６３】
ダウンロード論理装置は、第２の記述に関する動作を行っている。従って、ＣＤＤポインタは第２の記述子のべ一ス・アドレスを指し示し、またＣＤＢポインタは、第２の記述子内のバッファ記述子を指し示し、ＤＤポインタは、ダウンロードＤＭＡ論理装置がホストからのデータをそこへ転送している先である第２の伝送データ・バッファ内のオフセットを指し示す。
【０１６４】
図１０（Ｃ）においては、ホストは、第３の記述子を「伝送領域」レジスタに書き込んでいる。従って、ＣＨＤポインタは、第３の記述子のべ一ス・アドレスを指し示し、またＨＷポインタは、ホストによって次のバイトが書き込まれようとしているオフセットを指し示す。
【０１６５】
図１０（Ｄ）においては、ホストが第４の記述子の書き込み処理を行うための処理が続行している。こうして、ＣＨＤポインタは、第４の記述子のベース・アドレスを指し示し、またＨＷポインタは、「伝送領域」レジスタへの次の書き込みにおける予測アドレスを指し示す。
【０１６６】
ダウンロード論理装置は、第３の記述子に関する動作を行っている。こうしてＣＤＤポインタは、第３の記述子のべ一ス・アドレスを指し示し、また、ＣＤＢポインタは、第３の記述子内のバッファ記述子を指し示し、ダウンロード・データＤＤポインタは、第１のデータ・バッファのダウンロードが行われている位置を指し示す。この動作において、第１の記述子の伝送によって、第１のデータ・バッファがすでに開放されており、ダウンロード論理装置が第１のデータ・バッファを使用することができるようになっているもの仮定されている。
【０１６７】
伝送論理装置は、第２の記述子に関する動作を行っている。こうして、ＣＸＤポインタは、第２の記述子のべ一ス・アドレスを指し示し、ＸＲポインタは、伝送論理装置がそこからデータを読み取っている伝送データ・バッファ内の位置を指し示す。第１の記述子の状態は依然として読み取られるようなっているので、伝送末尾ＸＴポインタは依然として第１の記述子のべ一ス・アドレスを指し示している。
【０１６８】
図１０（Ｅ）における処理においては、第４の記述子の書き込みが終了したけれども、ホストは、新たな記述子の書き込みを一時的に中断しているものと仮定されている。この場合には、ＣＨＤポインタおよびＨＷポインタは、ホストによってさらにアクションが取られるのを待機している第５の記述子のべ一ス・アドレスを指し示す。ここで、ダウンロード処理については、第３に記述子のダウンロードを終了させる必要があるものと仮定されている。こうして、ＣＤＤポインタの現在値は第３の記述子のべ一ス・アドレスを指し示し、また、ＣＤＢポインタは第３の記述子内のバッファ記述子を指し示す。ＤＤポインタは、そこヘダウンロード処理によってデータがダウンロードを行っている伝送データ・バッファ内の位置を指し示す。
【０１６９】
また、図１０（Ｅ）においては、第２の記述子によって表されているフレームの伝送が終了し、伝送論理装置は、第３の記述子に関するダウンロード動作が終了するか、あるいは伝送論理装置が伝送を開始するのに十分な量のデータがダウンロードされるのを待機しているものと仮定されている。こうして、ＣＸＤおよびＸＲポインタは、第３の記述子のべ一ス・アドレスを指し示す。
【０１７０】
ホストは、第１の記述子の伝送状態を読み取るものと仮定されている。これはＸＴポインタを第２の記述子のベース・アドレスに移動することの効果を有している。
この処理は、アダプタが取り扱う記述子が自動的なリング循環されることによって続行されていく。またオーバランとアンダーラン状態がモニタされて、適当なエラー信号がアダプタから発せられる。
【０１７１】
VI．早期伝送論理装置
図１に示されている早期伝送論理装置６Ａは、好適な実施においてはダウンロードＤＭＡ論理装置５８において最初に実行される。好適な実施のキー要素は図１１を参照して述べられているデータ路演算、および図１２−図１７を参照して述べられている伝送開始制御論理装置を含んでいる。
【０１７２】
図１１は、データ路演算の基本論理装置を示す。この論理装置は、１１ビット・カウンタ３００上に最初に見いだされる。１１ビット・カウンタ３００はテスト入力、△（デルタ）入力、カウンタ・イネーブルＣＥ入力、クロック入力およびリセットＲ入力を有する。１１ビット・カウンタ３００はキャリーアウトＴＣおよびカウンタ出力〔１０：０〕を有する。テスト入力は、本発明に関係のないテストに用いられる。デルタ入力は、ダウンロードＤＭＡバイト・イネーブル〔３：０〕によってドライブされ、ダウンロード過程において活性化している３２ビット・バスのバイト数に基づいて、カウンタ３００のために１と４の間の増加量をセットする。
【０１７３】
カウンタ・イネーブルＣＥ入力はＡＮＤゲートの出力によってドライブされる。ＡＮＤゲート３０１への入力は、サイクル終了信号と遅延回路３０２の出力を有している。遅延回路３０２は、入力としてクロックとバッファ・ダウンロード指示バッファＤｗｎＡｃｋ信号を受信する。サイクル終了信号は伝送サイクルの最後のクロックの間に現れ、ダウンロードＤＭＡ内に読み取りと書き込みストローブを発生するために、他の制御信号と共に用いられる。バッファＤｗｎＡｃｋ信号は、アダプタ上のバッファ・ダウンロード自律アクセス用のサイクル指示信号である。これはバッファ・ダウンロード要求に応答して現れる。遅延回路３０２は、カウンタの適切な増加を保証することがサイクル終了信号の間少なくとも真のままであることを保証するために動作する。
【０１７４】
サイクル終了信号は、伝送サイクルを最後のクロックの間に発生する。それはデータ路バイト・エネーブル〔３：０〕により示される量によって、カウンタ３００を増加するための基本である。
【０１７５】
クロック入力３００はシステム・クロックによってドライブされる。リセット入力はＯＲゲート３０３によってドライブされる。ＯＲゲートへの入力は、新しい記述子がダウンロード・バッファ、ダウンロードＤＭＡリセット信号およびアダプタ上のカウンタをクリアするための全カウンタをクリアする信号によって、処理されているときを示す新しい記述子信号を有している。カウンタ３００の出力は、１１ビット線Ｑ〔１０：０〕上に供給される。この出力は、アダプタ３０４へ与えられる。アダプタ３０４への第２の入力はカレント記述子から読み取られる即時長さ値（ｉｍｍｅｄＬｅｎＶａｌｕｅ）〔１０：０〕である。即時長さ値とカウンタ３００の出力の合計はダウンロード駐留バイト値〔１０：０〕として供給される。
【０１７６】
図１１のデータ路演算は、駐留バイト有効信号の発生を示している。この信号は、通常は真である駐留バイト有効信号を、カウンタが値を変更するときはいつも３つのクロックに対して不活性にする一連のＤ型フリップ・フロップ３０５，３０６によって発生される。これは、ダウンロード駐留バイト値〔１０：０〕を加算器の外部に設定し、以下に説明する伝送開始制御論理装置の比較器を介して伝送する。従って、Ｄ型フリップ・プロップ３０５，３０６はＡＮＤゲート３０１の出力によってドライブされるリセット入力とクロック信号によってドライブされるクロックを有している。これらのフリップ・フロップはカウンタ３００が増加されるときは何時もリセットされる。
【０１７７】
また、この論理装置はＯＲゲート３０７の出力にデータ用意（ｄａｔａＲｅａｄｙ）信号を発生するためにも用いられる。このＯＲゲート３０７への入力はデータ路バイトＥｎ（ｄａｔａＰａｔｈＢｙｔｅＥｎ）信号〔３：０〕である。従って、データ用意信号は、有効なデータ路バイトＥｎ信号が発されるときは何時も発生される。
【０１７８】
ダウンロード実行（ｄｏｗｎｌｏａｄＣａｒｒｙＯｕｔ）信号は、カウンタ３００の実行信号ＴＣによるテスト目的のために発生される。
【０１７９】
また、この論理装置は、ダウンロード・データ・ポインタ（ｄｏｗｎｌｏａｄＤａｔａＰｏｉｎｔｅｒ）〔１１：２〕を発生するためにも用いられる。ダウンロード・データ・ポインタは、加算器３０８の出力に発生される。加算器３０８への入力は、カウンタ３００の出力Ｑと伝送バッファ選択ＭＵＸ３０９の出力のビット〔１０：２〕を有している。伝送バッファ選択ＭＵＸ３０９への入力は、選択入力での伝送バッファ選択信号に応答して選択される２つの伝送データ・バッファのオフセットを含んでいる。最後に、この論理装置は、減算器３１０の出力にデータ路オフセット（ｄａｔａＰａｔｈＯｆｆｓｅｔ）信号〔１：０〕を発生する。減算器はその入力に供給された信号ＡおよびＢ間の差異を発生する。信号Ａはラッチ３１１の出力に供給される。ラッチ３１１は、カウンタ３００の出力Ｑの２つの最小重要ビット〔１：０〕をラッチする。これらの２ビットはｄｏＡバッファ（ｄｏＡＢｕｆｆｅｒ）信号に応答してラッチされる。ｄｏＡバッファ信号は、伝送記述子に記述されたバッファのバス・マスター・ダウンロードを達成するためにバッファ・ダウンロード論理装置に供給されたコマンドである。従って、これらの２ビットは、ダウンロード動作の開始時にラッチされる。３２ビット・ダウンロード開始アドレスの対応ビットはバッファ転送用のデータ路オフセットを判定するために、それらから引かれる。
【０１８０】
従って、この論理装置は、ホスト・アドレスに結合され、アダプタ・メモリの与えられたフレーム・レジデントのデータ量のスレッショルドの判定に使用する、ホストから伝送データ・バッファへのデータのダウンローディグを監視する。
【０１８１】
ダウンロード・バイト・レジデント（ｄｏｗｎｌｏａｄＢｙｔｅｓＲｅｓｉｄｅｎｔ）〔１０：０〕の値は、図１２−１５を参照して述べられている伝送開始制御論理装置に供給される。伝送開始制御論理装置のブロック図が図１２に示されている。図１２のブロック図の各々の機能的な要素は図１３−１７を参照して述べられている。
【０１８２】
図１２は、伝送開始制御論理装置のブロック図である。伝送開始制御論理装置は開始スレッショルド・レジスタ３２０および開始スレッヨールドの値と図１１のデータ路演算において発生したダウンロード・バイト・レジデントの値を比較するダウンロード比較ブロック３２１を有している。また、即値データ比較器３２２は、即値データが伝送記述子に存在する事象において、比較を行うために含まれている。最後に、アダプタ伝送ＤＭＡ論理装置ブロックに供給するための利用可能な伝送データ（ｘｍｉｔＤａｔａＡｖａｉｌａｂｌｅ）信号を発生する利用可能なデータ制御ブロック３２３が含まれている。
【０１８３】
図１２の伝送開始制御論理装置は利用可能な伝送データ信号を発生するためのものであり、ネットワークに伝送すべき利用可能なデータがあることを指示するめに伝送ＤＭＡモジュールに供給される。利用可能な伝送データ信号は３つの条件の下で発生される。（１）伝送されるべく用意されたアダプタ上の、１またそれ以上の終了フレーム・レジデントがある場合。（２）アダプタ上には終了フレームはないが、現在ダウンロードされているフレームのためのバイト・レジデントの数が伝送開始スレッショルド・レジスタの値より大きい場合。（３）アダプタ上に終了フレームがなく、かつペンディング・ダウンロード動作がなく、現在伝送領域レジスタに書き込まれているフレームのための即時バイト・レジデントの数が伝送開始スレッショルドの値より大きい場合。
【０１８４】
開始スレッショルド・レジスタ３２０は、物理的な「伝送開始スレッショルド」レジスタとレジスタの値が有効である場合に判定する論理装置を含んでいる。特に、「伝送開始スレッショルド」の値がある時刻に１バイト書き込まれる場合、「伝送開始スレッショルド」信号は、第２のバイトが書き込まれるまで発生されない。これは、ダウンロード比較３２１と即時比較３２２を過渡的な値について比較することをしない。開始スレッショルド・レジスタ３２０への入力は、書き込む間開始スレッショルド・レジスタ３２０を介してデータをホスト・インタフェースの「伝送開始スレッショルド」レジスタへ運ぶホスト書き込みデータ（ｈｏｓｔＷｒｉｔｅＤａｔａ）〔１０：０〕を含む。開始スレッショルド書き込み（ｓｔａｒｔＴｈｒｅｓｈＷｒｉｔｅ）〔１：０〕信号は「伝送開始スレッショルド」レジスタのための書き込みストローブである。開始スレッショルド・レジスタ３２０は、開始スレッショルドの値（ｓｔａｒｔＴｈｒｅｓｈＶａｌｕｅ）（１０：０〕と開始スレッショルド有効信号を含んでいる。
【０１８５】
ダウンロード比較モジュール３２１への入力は開始スレッショルドの値（ｓｔａｒｔＴｈｒｅｓｈＶａｌｕｅ）〔１０：０〕と開始スレッショルド有効信号を含んでいる。また、ダウンロード・バイト・レジデント（ｄｏｗｎｌｏａｄＢｙｔｅｓＲｅｓｉｄｅｎｔ）〔１０：０）とバイト・レジデント有効（ｂｙｔｅｓＲｅｓｉｄｅｎｔＶａｌｉｄ）信号は入力として比較モジュール３２１へ供給される。ダウンロード比較モジュール３２１の出力はダウンロード・スレッショルド到達信号である。
【０１８６】
即値比較モジュール３２２への入力は開始スレッショルドの値〔１０：０〕と開始スレッショルド有効信号を有している。また、即値長さ（ｉｍｍｅｄＬｅｎｇｔｈＶａｌｕｅ）〔１０：０〕は伝送記述子から即値長さ有効信号を読み取る。即値長さ有効信号は即値長さに関する値が有効であることを指示する。他の入力は、即値データあるいはバッファ記述子データのホスト書き込みを指示するストローブである他のホスト書き込み〔３：０〕信号を有している。この信号の４ビットは４つのＥＩＳＡバス・バイト・レーン上の転送に相当する。ホストを指示する待ち行列状態読み取り（ｑｕｅｕｅＳｔａｔｕｓＲｅａｄ）信号は、新しい伝送記述子、アダプタの他の部分からの制御信号であるダウンロードＤＭＡリセット信号、クロック、伝送領域レジスタへのホストの書き込みにおけるエラーを指示する待ち行列エラー（ｑｕｅｕｅＥｒｒｏｒ）信号、および診断やテストのために用いられる全カウンタ・テストと全カウンタ・クリア信号の書き込みを準備するために読み取り状態である。
【０１８７】
即値比較モジュール３２２の出力は、即値スレッショルド到達信号である。ダウンロード・スレッショルド到達信号と即値スレッショルド到達信号は、利用可能なデータ制御ブロック３２２に供給される。他の入力は、ダウンロードＤＭＡリセット信号、クロック信号および待ち行列エラー信号を含んでいる。また、ゼロ・ダウンロード・ペンディング（ｚｅｒｏＤｏｗｎｌｏａｄＰｅｎｄｉｎｇ）信号とゼロ・フレーム・レジデント（ｚｅｒｏＦｒａｍｅＲｅｓｉｄｅｎｔ）信号は、利用可能なデータ制御ブロック３２３に供給される。これらの信号は、アダプタ上に終了伝送フレームがない場合およびペンディング・ダウンロード動作の発生がない場合をそれぞれ示している。利用可能なデータ制御ブロック３２３の出力は利用可能な伝送データ（ｘｍｉｔＤａｔａＡｖａｉｌａｂｌｅ）信号である。
【０１８８】
図１３は、図１２の開始スレッショルド・レジスタ３２０の実行を示す。このレジスタは、１１ビット・スレッショルド値の高および低バイトを保持するために３ビット・レジスタ３３０と８ビット・レジスタから成っている。３ビット・レジスタはホスト書き込みデータ（ｈｏｓｔＷｒｉｔｅＤａｔａ）〔１０：０〕バスのビット１０：８を記憶する。８ビット・レジスタはビット７：０を記憶する。３ビット・レジスタ３３０は、開始スレッショルド書き込み（ｓｔａｒｔＴｈｒｅｓｈＷｒｉｔｅ）〔１〕ストローブによってクロックされ、８ビット・レジスタ３３１は、開始スレッショルド書き込み〔０〕ストローブによってクロックされる。両方のレジスタはダウンロードＤＭＡリセットでリセットされる。レジスタ３３０と３３１の出力は伝送開始データ（ｘｍｉｔＳｔａｒｔＤａｔａ）〔１０：０〕として供給される。
【０１８９】
開始スレッショルド有効状態マシン３３２が用いられている。この状態マシンは、開始スレッショルド書き込みストローブ〔１：０〕、ダウンロードＤＭＡリセット信号およびクロックを入力として受信する。それは、図１４に示されるように簡単な状態マシンを有しており、開始スレッショルド書き込み〔１：０〕を監視し、開始スレッショルド値（ｓｔａｒｔＴｈｒｅｓｈＶａｌｕｅ）バイトの１つが有効であるときは何時も開始スレッショルド値信号を発生しない。従って、状態マシンは３つの状態を有している。第１の状態「ＩＮＩＴＩ」３３５は、ダウンロードＤＭＡリセットに入れられる。もし開始スレッショルド書き込み〔０〕信号が真であって、開始スレッショルド書き込み〔１）信号が偽であれば、状態マシンは低バイト書き込み状態（ＬＯＷ＿ＢＹＴＥ＿ＷＲＩＴＴＥＮ）状態３３６になる。次に、開始スレッショルド書き込み〔１〕信号が発生されると、状態マシンは「ＩＮＩＴＩ」状態３３５に戻る。もし「ＩＮＩＴＩ」状態３３５で、開始スレッショルド書き込み〔１〕信号が有効で、開始スレッショルド書き込み〔０〕信号が真でないなら、第３の状態、高バイト書き込み（ＨＩＧＨ＿ＢＹＴＥ＿ＷＲＩＴＴＥＮ）３３７が入れられる。開始スレッショルド書き込み〔０〕信号が発生されると、状態マシンは、開始スレッショルド有効信号が発生される間に「ＩＮＩＴＩ」状態３３５に戻る。
【０１９０】
ダウンロード比較モジュール３２１が図１５に示されている。この論理装置は図１１のデータ路演算からのダウンロード・バイト・レジデント（ｄｏｗｎｌｏａｄＢｙｔｅｓＲｅｓｉｄｅｎｔ）〔１０：０〕の値と開始スレッショルド・レジスタ３２０からの伝送開始データ（ｘｍｉｔＳｔａｒｔＤａｔａ）〔１０：０〕を受信する比較器３４０を有している。もし、ダウンロード・バイト・レジデントの値が伝送開始データの値より大きいか、等しいければ、比較器の出力が発生される。比較器３４０の出力はＡＮＤゲート３４１に供給される。ＡＮＤゲート３４１は比較器３４０の出力に加えて３つの入力を有している。入力は、開始スレッショルド・レジスタ・モジュール３２０からの開始スレッショルド有効信号と送信開始データの値がゼロに等しいかどうかをテストする論理装置３４２の出力を含んでいる。もし、それがゼロでないなら、信号が発生される。
【０１９１】
最後にデータ路演算からのバイト・レジデント有効（ｂｙｔｅｓＲｅｓｉｄｅｎｔＶａｌｉｄ）信号は、ダウンロード・スレッショルド到達信号がＡＮＤゲート３４１によって発生さられる前に、発生されなければならない。
【０１９２】
即値比較モジュール３２２が図１６に示されている。即値比較モジュール３２２は１１ビット・カウンター３５０、第１の比較器３５１、第２の比較器３５２および第３の比較器を有している。また、これらの比較器の出力はマルチプレックサ３５４を介して供給される。即値スレショールド到達信号はＡＮＤゲート３５５の出力に発生される。またＯＲゲート３５６とゼロに等しくないテスト論理装置３５７も含まれている。即値比較モジュールは１１ビットカウンター３５０を用いて即値データ・バイト・レジデントの数のトラックを保持する。１１ビットカウンターへの入力はテスト信号、各々のクロックによって加えられたデータあるいはインクレメントを示す他のホスト・書き込み（ｏｔｈｅｒＨｏｓｔＷｒｉｔｅ）〔３：０〕信号およびクロック信号を含んでいる。
【０１９３】
１１ビット・カウンター３５０はＯＲゲート３５６の出力でリセットされる。ＯＲゲートへの入力はダウンロードＤＭＡリセット信号、待ち行列状態読み取り信号、待ち行列エラー信号および全カウンター・クリアー信号を含んでいる。出力はＴＣ出力での即値終了信号と格納された即値バイトの数を示すＱ〔１０：０〕バスを有している。即値バイト出力は第１および第２の比較器３５１と３５２へ入力として供給される。第１の比較器３５１への第２入力は現在書き込まれている記述子から検索される即値長さ値（ｉｍｅｄＬｅｎｇｔｈＶａｌｕｅ）である。第２の比較器３５２への第２入力は開始スレショールド・レジスタ・モジュール３２０からの伝送開始データ（ｘｍｉｔＳｔａｒｔＤａｔａ）〔１０：０〕である。
【０１９４】
第３の比較器３５３は即値長さ値と伝送開始データ値を含む入力を受信する。
第１の比較器３５１は、即値バイトが即値長さ値より大きい場合に、“クリップ”信号を発生する。第２の比較器３５２は、即値バイトが即値長さ値より大きいか等しい場合に、カウント・クロス・スレショールド（ｃｏｕｎｔＣｒｏｓｓＴｈｒｅｓｈ）信号を発生する。第３の比較器３５３は、即値バイトが伝送開始データ値より大きいか等しい場合に、即値クロス・スレショールド（ｉｍｍｅｄＣｒｏｓｓｅｄＶａｌｕｅ）信号を発生する。クリップされた信号は、マルチプレックサ３５４の選択入力に供給される。これは、即値バイトの数が即値長さ値を越えない限り、マルチプレックサ３５４が出力Ｙとしてカウント・クロス・スレッショルド信号を選択させるために動作する。即値バイトの数が即値長さ値を越えると、即値クロス・スレショールド信号がマルチプレックサの出力Ｙに供給される。
【０１９５】
１１ビットカウンター３５０は、他のホスト書き込み〔３：０〕の値に従って、１，２，３あるいは４と増加される。
【０１９６】
即値スレッショルド到達信号はＡＮＤゲート３５５の出力に供給される。ＡＮＤゲート３５５への入力は、伝送開始データ（ｘｍｉｔＳｔａｒｔＤａｔａ）値がゼロでないとき、発生される論理装置３５７の出力を含んでいる。また、開始スレッショルド有効（ｓｔａｒｔＴｈｒｅｓｈＶａｌｉｄ）信号と即値長さ値信号がゲート３５５へ入力として供給される。これら３つの全ての信号が発生されると、マルチプレックサ３５４の出力は、即値スレッショルド到達信号として供給のためにイネーブルされる。即値バイト（ｉｍｍｅｄｉａｔｅＢｙｔｅｓ）が即値長さ値より少ないと、クリップされた信号は不活性であり、比較器３５２の出力は即値スレッショルド到達として供給される。即値バイトが即値長さ値を越えると、即値バイトの値は無視され、即値クロス・スレッショルド（ｉｍｍｅｄＣｒｏｓｓｅｄＴｈｒｅｓｈ）比較器３５３が継続する。
【０１９７】
待ち行列状態読み取り（ｑｕｅｕｅＳｔａｕｓＲｅａｄ）の発生は、それが常に新しいフレーム記述子の伝送領域への書き込みに同期されることを確実にして、カウンターをクリアーする。
【０１９８】
利用可能データ制御モジュール３２３は図１７に示される４状態-状態マシンから成っている。４つの状態は、ＩＮＩＴ２状態３７０、即値スレッショルド到達（ＩＭＭＥＤＩＡＴＥ＿ＴＨＲＥＳＨ＿ＭＥＴ）状態３７１、ダウンロード・スレッショルド到達（ＤＯＷＮＬＯＡＤ＿ＴＨＲＥＳＨ＿ＭＥＴ）状態３７２およびフレーム・レジデント（ＦＲＡＭＥ＿ＲＥＳＩＤＥＮＴ）状態３７３を有している。ＩＮＩＴ２状態３７０は、ダウンロードＤＭＡリセット（ｄｏｗｎｌｏａｄＤｍａＲｅｓｅｔ）に入れられる。もしゼロ・フレーム・レジデント（ｚｅｒｏＦｒａｍｅｓＲａｓｉｄｅｎｔ）、ゼロ・ダウンロード・ペンディング（ｚｅｒｏＤｏｗｎｌｏａｄＰｅｎｄｉｎｇ）および即値スレッショルド到達（ｉｍｍｅｄｉａｔｅＴｈｒｅｓｈＭｅｔ）信号が真であれば、即値スレッショルド到達状態３７１が入れられる。この状態では、利用可能な伝送データ（ｘｍｉｔＤａｔａＡｖａｉｌａｂｌｅ）信号が発生される。即値スレッショルド到達状態は待ち行列エラーの発生に従って、ＩＮＩＴ２状態３７０に戻る。代わりに、ゼロ・ダウンロード・ペンディング信号と待ち行列エラー信号が発生されないと、制御は即値スレッショルド到達状態３７１からダウンロード・スレッショルド到達状態３７２へ進む。この状態の間、利用可能な伝送データ（ｘｍｉｔＤａｔａＡｖａｉｌａｂｌｅ）信号は真である。もしゼロ・フレーム・レジデント（ｚｅｒｏＦｒａｍｅｓＲａｓｉｄｅｎｔ）信号が真でないと、状態マシンはダウンロード・スレッショルド到達（ＤＯＷＮＬＯＡＤ＿ＴＨＲＥＳＨ＿ＭＥＴ）状態３７２からフレーム・レジデント（ＦＲＡＭＥ＿ＲＥＳＩＤＥＮＴ）状態３７３へと進む。この状態では、発生された利用可能な伝送データ信号は残る。ゼロ・フレーム・レジデントの発生に従って、状態マシンは、利用可能な伝送データが偽であれば、ＩＮＩＴ２状態３７０に戻る。
【０１９９】
代わりに、もし、ＩＮＩＴ２状態３７０からゼロ・フレーム・レジデント信号が発生されると、状態マシンはフレーム・レジデント（ＦＬＡＭＥ＿ＲＥＳＩＤＥＮＴ）状態３７３へ直接進む。またゼロ・フレーム・レジデント信号が真で、ゼロ・ダウンロード・ペンディング信号は偽で、ダウンロード・スレッショルド到達信号が真である場合には、状態マシンはＩＮＩＴ２状態３７０からダウンロード・スレッショルド到達（ＤＯＷＮＬＯＡＤ＿ＴＨＲＥＳＨ＿ＭＥＴ）状態３７２へ進む。状態マシンは利用可能なデータ制御入力変数（ダウンロード・スレッショルド到達、即値スレッショルド到達、ゼロ・ダウンロード・ペンディング、ゼロ・フレーム・レジデント）上の転送が利用可能な伝送データ制御ライン上に偽りの指示をすることを妨げる。
【０２００】
VII．アンダーラン制御論理装置
図２の伝送論理装置３９は、図１８の簡単なブロック図に示されたデータ径路に結合されたアンダーラン制御論理装置を有する。図１８において、伝送データ径路４００は伝送ＤＭＡ論理装置からライン４０１を通って伝送バイトを受信することを示している。また、伝送書き込み信号「ＴＸＷＲ」はライン４０２を通して伝送データ径路４００へ供給される。伝送データ径路は、ライン４０１を通って伝送バイトを受信し、出力ライン４０３へ供給するためにそれらを直列にする。また、フレームからのデータは、標準媒体アクセス制御機能によるフレームの終わりに付加されているエラー検出コードを発生するための「ＣＲＣ」ロッジク４０５ヘライン４０４を通して供給される。「ＣＲＣ」ロッジク４０５の出力は、排他的ＯＲゲート４０７ヘライン４０６を通して供給される。排池的ＯＲゲート４０７は、悪いフレーム信号がライン４０９に発生されないならば、ライン４０８へ「ＣＲＣ」コードを通過させる。
【０２０１】
ライン４０３上のデータとライン４０８上の「ＣＲＣ」は、有効フレーム用のフレームの「ＣＲＣ」に従ったフレームのデータを直列出力ライン４１２へ供給するために、伝送制御論理装置４１１によって制御されるマルチプレックサ４１０に供給される。ライン４１２はネットワーク上の伝送用トランシーバに結合される。
【０２０２】
本発明によれば、この伝送データ径路は条件を検出するためのアンダーラン検出器４１３を有している。そしてアンダーラン検出器においては、ホスト・インタフェースによる伝送データ・バッファへのデータの転送あるいは伝送記述子バッファへの即値データが伝送ＤＭＡ論理装置による伝送データ径路４００へのデータの伝送より遅れる。アンダーラン検出器４１３は伝送制御論理装置４１１によって制御される。伝送制御論理装置４１１は、ライン４０２上に伝送書き込み「ＴＸＷＲ」信号が予期されている間、ライン４１４を通して間隔を指示する。アンダーラン検出器は、伝送書き込み「ＴＸＷＲ」信号がフレーム伝送の予期した間隔の間に存在しない、従って、悪いフレーム信号がライン４０９に発生されないことを判定する。悪いフレーム信号に応答して、「ＣＲＣ」データは、アンダーランを受けているフレームの既に伝送された部分のために、悪い「ＣＲＣ」が発生されるようにする排他的ＯＲゲート４０７によって反転される。また、伝送制御論理装置４１１はマルチプレックサ４１０を介して悪い「ＣＲＣ」データを選択するためにライン４０９上の悪いフレーム信号に応答もする。最後に、ライン４０９上の悪いフレーム信号は、アンダーラン条件の伝送失敗レジスタ（ｘｍｉｔＦａｉｌｕｒｅＲｅｇｉｓｔｅｒ）を介してステータス情報を仕分けするために用いられる。
【０２０３】
VIII．結び
本発明は、上述のシステムにおいて早期の伝送開始のためのものである。「伝送開始スレッショルド」レジスタ（ＸＭＩＴ  ＳＴＡＲＴ  ＴＨＲＥＳＨ  ｒｅｇｉｓｔｅｒ）をロードすることにより、本システムは、アダプターのバッファへ全フレームを伝送する前にネットワーク媒体ヘフレームの伝送を開始することを可能にする。早期の伝送開始は、「伝送開始スレッショルド」レジスタをゼロでない値にセットすることによって可能になる。
【０２０４】
「伝送開始スレッショルド」は、アダプターが、フレームを伝送することに関連した媒体アクセス制御機能と共に開始する前に、即値データとして或いはバス・マスター・データ転送を介してアダプターに転送されるデータとして、またはこれら２つの組み合わせとして、アダプター上になければならない伝送フレームのバイト数を記入するために用いられる。
【０２０５】
もし、アダプター（「伝送領域」（ＸＭＩＴ  ＡＲＥＡ）の「伝送即値長さ」フィールド（ＸＭＩＴ  ＩＭＭＥＤＩＡＴＥ  ＬＥＮＧＴＨ）に書かれた値によって判定される）によって予期される即値データ・バイト数が「伝送開始スレッショルド」にセットされた値を越えると、アダプターは、「伝送領域」へ十分な書き込みが行われた後に、直ちにフレームを伝送開始する。さもなければ、バス・マスターとしてアダプターが早期の伝送開始スレッショルド要求を満足するために、オンボード・バッファヘデータを十分にダウンロードするまで、伝送開始は遅延される。しかしながら、もし、スレッショルド値がフレーム長より大きいか、等しいならば、完全なフレームがアダプター上に残っている限り、伝送は開始するであろう。勿論、伝送の開始は他の待ち行列伝送によって、あるいはネットワーク・トラフィックへの遅れによって遅延されてもよい。
【０２０６】
このレジスタがゼロにセットされると、早期伝送の特徴は無能化され、アダプターが一全伝送フレームを伝送開始する前に、全伝送フレームはアダプター上に存在しなければならない。
【０２０７】
このレジスタに対する値は動作を最適化するためにホストによってプログラムされ得る。もし、その値が、低過ぎてセットされると、システムの待ち時間やバンド幅の制限は、保証された悪い「ＣＲＣ」のある部分的なフレームが伝送されるようにしてアダプターが伝送中にネットワークをアンダーランするようにする。もし、その値が、高過ぎてセットされると、伝送の開始前に不必要な遅延が発生するであろう。アダプターは、「伝送失敗（ＸＭＩＴ  ＦＡＩＬＵＲＥ）」レジスタを介してホストへ利用可能にされるアンダーラン条件の指示を発生する。もし、このアンダーラン指示が発生すると、ホスト・ドライブは「伝送開始スレッショルド」レジスタ上の値を増加するべきである。更に、アンダーラン指示は、ドライブ装置が「伝送開始スレッショルド」値を連続的に増加するようにする。もし、「伝送開始スレッショルド」値がシステムによって期待される最大の長さより大きな値まで増加されると、早期伝送の特徴は、「伝送開始スレッショルド」レジスタヘゼロを書き込むことによって、無能化される。
【０２０８】
本発明の前述の好ましい実施例は、あくまでも例示的なものである。本発明は上述の詳細な形だけに限定されることを意図するものでない。明らかに、多くの変形や変更が可能であることは当業者にとって明らかであろう。上記の実施例は本発明の原理とその実際の応用とについて説明するのに最も適切なものを選んだものであり、本発明を特定の用途に対して適するようにいろいろな形で実施し、変形することが可能であることは、当業者には明らかであろう。本発明の範囲は以下の請求の範囲によって定義され、またこれと等価なものを含むものである。
【図面の簡単な説明】
【０２０９】
【図１】本発明によるネットワーク・インタフェースを有するシステムの簡単なブロック図である。
【図２】本発明による伝送システムの機能的ブロック図である。
【図３】本発明によるホスト・システムとネットワーク・インタフェースの好ましい実施のブロック図である。
【図４】本発明を実施する図３のネットワーク・インタフェース・プロセッサのブロック図である。
【図４Ａ】図４のシステムに対する自律アクセス・アドレス・バスの構造を図示する。
【図５】本発明による、アダプタを通してホスト・メモリ空間からネットワークへのデータの流れを図示する。
【図６】本発明による、データ伝送に使用されるホスト・システムのアドレス空間のマップである。
【図７】ホスト・システムのアドレス空間と独立しているアダプタ・メモリのメモリ・マップである。
【図８】本発明の特徴によるトランススクリプト記述子のデータ構造を示す。
【図９】本発明による、伝送記述子リング・バッファと伝送データ・バッファ、及び伝送オペレーション中に用いられるポインタの管理を示す。
【図１０】（Ａ）−（Ｅ）は、伝送記述子リング・バッファと伝送データ・バッファ用のポインタの管理を示す図である。
【図１１】図４のネットワーク・インタフェース・コントローラ用の伝送機能に用いられるデータ・パス演算を示す論理装置図である。
【図１２】図４のネットワーク・インタフェース・アダプタ用の伝送開始制御論理装置の論理装置図である。
【図１３】図１２の論理装置用の伝送開始スレッショルド・レジスタの論理装置図である。
【図１４】図１３の伝送開始スレッショルド・レジスタの状態図である。
【図１５】図１２のダウンロード比較論理装置の論理装置図である。
【図１６】図１２の直接データ比較器の論理装置図である。
【図１７】図１２の論理装置におけるデータ利用制御機能の状態図である。
【図１８】本発明による、伝送論理装置の簡単なブロック図である。
【図１】
2006114030.tif 000003
【図２】
2006114030.tif 000004
【図３】
2006114030.tif 000005
【図４】
2006114030.tif 000006
【図４Ａ】
2006114030.tif 000007
【図５】
2006114030.tif 000008
【図６】
2006114030.tif 000009
【図７】
2006114030.tif 000010
【図８】
2006114030.tif 000011
【図９】
2006114030.tif 000012
【図１０】
2006114030.tif 000013
【図１１】
2006114030.tif 000014
【図１２】
2006114030.tif 000015
【図１３】
2006114030.tif 000016
【図１４】
2006114030.tif 000017
【図１５】
2006114030.tif 000018
【図１６】
2006114030.tif 000019
【図１７】
2006114030.tif 000020
【図１８】
2006114030.tif 000021