(57)【特許請求の範囲】
【請求項１】
１番目のメモリエレメントと２番目のメモリエレメントとの間において転送されるデータをパッキングするための回路において、
それぞれ１番目のビット幅を有するデータワードの１番目のシーケンスを受け取り、そして、それぞれ２番目のビット幅を有するデータワードの２番目のシーケンスを直列に転送するように構成されたワードパッキング回路と、
（ｉ）データワードの第２シーケンスを直列に受け取り、そして、（ｉｉ）それぞれのデータワードが第２メモリエレメントに記憶されるための第２ビット幅を有するデータワードの３番目のシーケンスを生成するように構成され、前記ワードパッキング回路に結合したバイトパッキング回路とを有し、前記データワードの第３シーケンスが、データワードの第２シーケンスによって供給された有効データのみを有する、
ことを特徴とする回路。
【請求項２】
ホストシステムをネットワークメディアに結合するネットワークインタフェース回路において、
２番目のビット幅を持つように構成された送信バッファメモリと、
ホストシステムのデータバスとの接続を設定するように構成されたシステムバスインタフェースとを有し、前記のデータバスが１番目のビット幅を有し、
データバスに配置されたデータワードの１番目のシーケンスを受け取り、そして、前記の送信バッファメモリ内にデータを記憶する以前にデータワードの第１シーケンスによって供給される有効データをパックするように構成され、送信バッファメモリ及びシステムバスインタフェースに結合されたシステム及びＡＴＭレイヤコアを有し、前記のシステム及びＡＴＭレイヤコアにおいて、
データワードの第１シーケンスを受け取り、そして、それぞれ第２ビット幅を有するデータワードの２番目のシーケンスを直列転送するように構成されたワードパッキング回路と、
（ｉ）データワードの第２シーケンスを直列に受け取り、そして、（ｉｉ）それぞれ送信バッファメモリ内に記憶されるべき第２ビット幅を有するデータワードの第３シーケンスを生成するように構成され、前記ワードパッキング回路に結合されたバイトパッキング回路とを有し、データワードの第３シーケンスが、データワードの第２シーケンスによって供給された有効データのみを有する、
ことを特徴とする回路。
【請求項３】
請求項２記載のネットワークインタフェース回路における、ワードパッキング回路において、
読取り記憶エレメントと、
データワードの第１シーケンスを前記の読取り記憶エレメントに転送するように構成され、前記の読取り記憶エレメントに結合された複数の入力セレクタと、データワードの第１シーケンスを出力セレクタに順次転送するために前記読取り記憶エレメントを制御するように構成され、前記の読取り記憶エレメントに結合された制御回路とを有し、
前記読取り記憶エレメント及び前記制御回路に結合された前記の出力セレクタはデータワードの第２シーケンスを前記バイトパッキング回路に転送するように構成され、データワードの第２シーケンスはデータワードの第１シーケンスと同じである、
ことを特徴とする回路。
【請求項４】
データパッキングの方法において、
それぞれ１番目のビット幅を有するデータワードの第１シーケンスを受け取り、そして、それぞれ２番目のビット幅を有するデータワードの２番目のシーケンスを直列に転送するためのワードパッキング回路を提供する過程を有し、この場合、データワードの第２シーケンスの各データワードは有効ワードを含み、
データワードの第２シーケンスを直列に受け取り、そして次に、それぞれ第２メモリエレメントに記憶されるべき第２ビット幅を有するデータワードの第３シーケンスを生成するためにワードパッキング回路に結合されたバイトパッキング回路を提供するステップを有し、データワードの第３シーケンスが有効バイトのみを含む、
ことを特徴とする方法。
【請求項５】
ネットワークにおいて、
ネットワークメディアと、
前記ネットワークメディアを介してデータを転送するために前記ネットワークメディアに結合されたホストシステムとを有し、前記ホストシステムが伝送のためにデータをパッキングする回路を有し、前記回路において、
データワードの１番目のシーケンスを受け取り、そして、それぞれ２番目のビット幅を有するデータワードの２番目のシーケンスを直列に転送するように構成されたワードパッキング回路と、
（ｉ）データワードの２番目のシーケンスを直列に受け取り、そして、
（ｉｉ）それぞれ２番目のビット幅を有するデータワードの３番目のシーケンスを生成するように構成され、ワードパッキング回路に結合されたバイトパッキング回路とを有し、データワードの第３シーケンスが、データワードの第２シーケンスによって供給される有効データのみを含む、
ことを特徴とするネットワーク。
【請求項６】
ネットワークインタフェース回路において、
２番目のビット幅を持つように構成されたローカルバッファメモリと、
それぞれ１番目のビット幅を有するデータワードの１番目のシーケンスを受け取り、そして、データワードの第１シーケンスの有効データを前記のローカルバッファメモリ内に記憶するように構成され、前記ローカルバッファメモリに結合されたコア回路とを有し、前記コア回路において、
データワードの第１シーケンスを受け取り、そして、それぞれ第２ビット幅を有するデータワードの２番目のシーケンスを直列転送するように構成されたワードパッキング回路と、
（ｉ）データワードの第２シーケンスを直列に受け取り、そして、（ｉｉ）それぞれ送信バッファメモリに記憶されるべき第２ビット幅を有するデータワードの３番目のシーケンスを生成するように構成され、ワードパッキング回路に結合されたバイトパッキング回路とを有し、データワードの第３シーケンスが、データワードの第２シーケンスによって供給された有効データのみを含む、
ことを特徴とする回路。
【発明の詳細な説明】
【０００１】
【発明が属する技術分野】
本発明は、データ転送の分野に関する。更に詳細には、本発明は、システム全体の性能を改良するために加法によってデータをパッキングするための装置およびその方法に関する。
【０００２】
【従来の技術】
コンピュータシステム並びに他の「インテリジェント（知能）」システムにホストメモリーが含まれることは公知である。一般に、ホストメモリは、所定のアドレスレンジ（範囲）内に所在する任意のバイトサイズの多数のデータバッファを有する。これらのデータバッファは、後続する処理または伝送用としてデータバッファ内に記憶されたデータに選択的にアクセスすることを可能にするために、所定のアドレスレンジ内において一意的にアドレスされる。データバッファのバイトサイズ及び当該バイトの可用性に応じて、データのブロック（「データブロック」）は、１つのデータバッファ内に順次に記入することも可能であるが、一般には、複数のデータブロックに分断され、そして、図１に示すように、複数のデータバッファ内に非順次に記入されることが多い。例えば、４０バイトのデータは、それぞれ０６Ｈ、１０４Ｈ、及び、３０９Ｈのデータブロックアドレスから開始して、３つのデータバッファ内に非順次に記憶される。ここに、「Ｈ」は１６進アドレスを示す。
【０００３】
ホストメモリからネットワークシステムを介してデータブロックを転送する必要がある場合には、一般に、データブロックの各バイトが順次にアドレスされる（即ち、「バイトパックされる」）ことが望ましい。これは、通常、ホストメモリからデータブロックをアドレス可能な隣接バッファへ転送することによって達成される。このタイプのバイトパッキングを用いる主要な理由の１つは、ネットワークは、通常、性能最適化のために、データバイトの連続的なストリームとしてデータを伝達するということである。従って、無効情報を含むバイトを伝達するようにネットワークが構成されている場合には、ネットワークの性能が低下する。
【０００４】
現在、状態マシンは、異なるデータバッファからのデータを、必要に応じて、単一隣接バッファに組み合わせるために用いられている。「状態マシン」は、異なるデータバッファからのデータ組合わせを「知能的に」制御するためにマシンの自立状態情報と組合わされた入力を受け取る従来のロジック又は応用特定集積回路（ＡＳＩＣ）の集合体である。ただし、データ組合わせを制御するために状態マシンを使用すると、多数の欠点が提起される。
【０００５】
【発明が解決しようとする課題】
多数の欠点のうちの１つは、この状態マシンが非常に複雑なことであり、従って、設計が困難なことである。その理由は、この種状態マシンの設計に際しては、適合可能な全てのデータバッファが、（ｉ）所定のアドレスレンジ内のあらゆるアドレスが始動アドレスでありうること、及び、（ｉｉ）バイトサイズが任意であることという条件に適合する構造であるように配慮しなくてはならないからである。別の欠点は、状態マシンを著しく改変して益々複雑化することなしに、更に大きいビット幅をサポートするデータバッファに適合するように、状態マシンは改修可能（即ち、基準化可能）ではないことである。従って、上記の欠点を克服するようなオペレーション（動作）の可能な装置およびそれに対応する方法を提供することが渇望される。
【０００６】
【課題を解決するための手段】
それぞれネットワークインタフェース回路（ＮＩＣ）を介してネットワークに結合された多数のシステムを有するネットワーク全体の性能を最適化するために、ＮＩＣ内にパッキング回路が設けられる。パッキング回路構成は、ワードパッキング回路、及び、バイトパッキング回路からなり、これらの回路は、両方共、関係するホストシステム又は送信（ＴＸ）バッファメモリのあらゆる必要ビット幅の入力／出力（Ｉ／Ｏ）バスに適合するように、設計段階において基準化可能である。ワード、及び、バイトパッキング回路は、複雑な状態マシン回路の支援なしに、必要なデータパッキングを実施するために共同して作動する。
【０００７】
ホストシステムのＩ／Ｏバスと結合された「Ｎ」ビット幅のワードパッキング回路は、そのデータブロックと関連した全てのデータが読取られるまで、データブロックの「Ｎ」ビットを並列に（「Ｎ‐ビットデータワード」として）受け取る。ワードパッキング回路は、有効データを含むＮ‐ビットデータワードで構成されたこれらのワードのみをバイトパッキング回路に伝送する責任を有する。従って、第１Ｎ‐ビットデータワードの１番目のワードが有効データを一切含まない場合には、ワードパッキング回路は、この１番目のワードがバイトパッキング回路に伝送されることを防止することが出来る。更に、当該データブロックの最後のＮ‐ビットデータワードの最後のワードが有効データを一切含まない場合には、ワードパッキング回路は、前記の最後のワードが伝送されることを防止することが出来る。ワードパッキング回路がこれらのオペレーションを実施するにつれて、このワードパッキング回路は、並列のデータの「Ｒ」ビットをバイトパッキング回路に直列に出力する。ここに、「Ｒ」はＴＸバッファメモリのビット幅に等しい。「Ｎ」のサイズが「Ｒ」のサイズよりも２倍以上大きい場合には、各Ｎ‐ビットデータワードにとって複数のＲ‐ビットデータワードが必要である。
【０００８】
バイトパッキング回路は、Ｒ‐ビットデータワード（単数または複数）を受け取り、そして、データの無効バイトを伝送することを回避するために、入力記憶エレメント、及び／又は、セーブ記憶エレメント内に一時的に記憶されているＲ‐ビットデータワード（単数または複数）のバイトをセレクタを介して出力記憶エレメントに選択的にルートするように、ワードパッキング回路に結合される。バイト循環回路は、第１Ｒ‐ビットデータワード内の有効データのバイト位置に基づいて、前記のルーチングを選択する。
【０００９】
【発明の実施の形態】
以下に示す詳細な説明において、本発明は、好ましくは加法によるが、ただし、必ずしも非同期トランスファモード（ＡＴＭ）ネットワークのネットワークインタフェース回路（ＮＩＣ）内において実現されることを必要としない、バイトパッキングのための装置および方法について記述する。或る種の制御回路および２進表現を記述するために頻繁に用いられる多数の用語について次に定義することとする。「セレクタ」は、複数の多重ビット入力の中の１つを集合的に出力するために、並列配置された従来の１つ又は複数の多重論理ゲートとして定義される。「記憶エレメント」は、データの多重ビットを集合的に出力するために並列配列された一連のレジスタとして定義される。「データ」とは、別の意味であることが明確に表示される場合を除き、２進データ、及び／又は、２進インストラクションを意味する。「データブロック」は、データバッファに蓄えられる連続してアドレスされたビットのグループとして定義される。最後に、「データワード」とは、ホストメモリからＮＩＣへ並列伝達される「データブロック」の一部分を意味する。一般に、データワードは、長さが４バイト（３２ビット）であることが好ましいが、ｘ≧０である場合に、長さが任意の「２」バイトであっても差し支えない多数の「ワード」を含む。
【００１０】
本発明のネットワークインタフェース回路（ＮＩＣ）が組み込まれた一例としてのネットワークを図２に示す。ネットワーク１００は、例えばコンピュータシステム（図示せず）のようなそれぞれホストメモリを有する種々のシステム及びＮＩＣ１２０を含む。ＮＩＣ１２０は、直接的に、或いは、ローカルＡＴＭスイッチ１４０を介して間接的に、公開ＡＴＭスイッチ１５０に結合可能である。同様に、局所（ローカル）および公開スイッチ１４０及び１５０は、２つ又はそれ以上のシステム間の通信経路を供給するために、選定された任意のスキームに結合可能である。これらの局所および公開ＡＴＭスイッチ１４０及び１５０は、相互に遠隔配置されたシステムにおいて実行中のアプリケーションの間における転送を非同期的にサポートするために、必要なサービスの品質（即ち、ビットレート、許容タイミングロス、等々）に応じて、データの転送経路を決定する。更に図２に示すように、ネットワーク１００は、例えば、サポート用フレームワークとしてＡＴＭを使用するイーサネットまたはトークンリング・ネットワーク１６０のような、他のネットワークを接続する出入口として役立つ構内通信網（ＬＡＮ）エミュレーション１３０を利用するシステムを含んでいても差し支えない。
【００１１】
図２のシステムのうちの１つ（以後、「ホストシステム」と称する）として用いられるＮＩＣのアーキテクチャを示す簡素化された図を図３に示す。ＮＩＣ１２０は、ＡＴＭプロトコルに従って作動するネットワークメディア４００に入力／出力（「Ｉ／Ｏ」）バス（例えば、システムバス）３８０を介して結合されるホストシステム３９０をインターフェイスする。ＮＩＣ１２０は、システムバスインタフェース２００、包括入／出力（「ＧＩＯ」）インタフェース２４０を介してシステムバスインタフェース２００に結合されるシステム及びＡＴＭレイヤ（層）コア２２０、局所スレーブインタフェース２６０、一連の送信（「ＴＸ」）ＦＩＦＯ２８０、一連の受信（「ＲＸ」）ＦＩＦＯ３００、メディアインタフェース３２０、外部バッファメモリインタフェース３４０、及び、クロック合成回路３６０を有する。
【００１２】
ＮＩＣ１２０のコンポネント（構成部品）２００−３６０は、統括的に、多重バンド幅グループにおける動的に割当てられた多重チャネルを介して、ホストシステム３９０とネットワーク内の他のシステムとの間において、非同期的にデータを転送するように協同で動作する。換言すれば、ＮＩＣ１２０のコンポネントは、ホストシステム３９０のシステムバス３８０に結合された多重チャネルインテリジェント直接メモリアクセス（ＤＭＡ）コントローラとして集合的に機能する。好ましい実施形態において、多重送信および受信チャネルは、全二重１５５／６２２Ｍｂｐｓ物理的リンクを利用する仮想チャネルとして用いられる。ＮＩＣ１２０の外に所在する外部バッファメモリ４２０に外部バッファメモリインタフェース３４０を経て接続され、システムバス３８０を通るそれぞれ異なるチャネルにサブスクライブされる（割り当てられる）データの多重パケットは、システム及びＡＴＭレイヤコア２２０における回路によって、メディアインタフェース３２０を介してメディア４００に伝送するための送信セルに分割される。外部バッファメモリ４２０は、ＲＸバッファメモリ４４０及び複数のＦＩＦＯであることが好ましいＴＸバッファメモリ４６０を有する。この場合、それぞれ異なったデータ転送速度をサポートするために、１つのＦＩＦＯはそれぞれネットワークの各チャネルに対応する。
【００１３】
図３に示すように、システム及びＡＴＭレイヤコア２２０は、送信および受信データセルの非同期セル化（セリフィケーション）及び再組み立て（リアセンブリ）をそれぞれ容易にするために、分離されたセル化及び再組み立てロジック（図示せず）を有する。セル化ロジックは、他の事柄の中の１つとして、送信データセル内において用いられるデータのバイトをパックするための回路を有する。
【００１４】
システム及びＡＴＭレイヤコア２２０とメディヤインタフェース３２０との間において結合された一連のＴＸ及びＲＸ  ＦＩＦＯ２８０及び３００は、送信および受信データセルの送信および受信セルペイロードをそれぞれステージするために用いられる。メディアインタフェース３２０は、クロック合成回路３６０によって供給されるクロック信号によってドライブされるネットワークのメディア４００に、これらのデータセルを送信および受信する。メディア４００、従ってメディアインタフェース３２０は、ＡＴＭフォームアドホック仕様に規定されているように、汎用テストと、ＡＴＭ（ＵＴＯＰＩＡ）のためのオペレーション物理的インタフェース規格に適合することが好ましい。ＵＴＯＰＩＡ仕様に適合するために、クロック合成回路３６０は２０ＭＨｚ又は４０ＭＨｚいずれかのクロック信号を供給し、メディアインタフェース３２０をイネイブルにして、２０ＭＨｚのバイトストリームを１５５Ｍｂｐｓに関して、または、４０ＭＨｚの１６ビットストリームを６２２Ｍｂｐｓデータストリームに関してサポートさせる。
【００１５】
本実施形態において、メディアインタフェース３２０は、それぞれ１つの４バイトセルヘッダと１つの４８バイトペイロードによって構成される５２バイトデータセルをＴＸ  ＦＩＦＯ２８０から受信する。メディアインタフェース３２０は、メディア４００に５３バイトデータセルを供給する以前に、セルヘッダに対する第５番目のバイトとして、各送信セルにチェックサムを挿入する。逆に、メディアインタフェース３２０がメディア４００からセルを受信する場合には、メディアインタフェースは、チェックサムが正しいかどうかを判定するために、それぞれ受信したセルの第５番目のバイトにおけるチェックサムを調査する。チェックサムが正しい場合には、チェックサムを表すバイトは受信セルから除去され、受信セルはＲＸ  ＦＩＦＯ３００に送られる。チェックサムが正しくない場合には、受信セル全体が無視される。
【００１６】
システムバスインタフェース２００及びＧＩＯインタフェース２４０は、メディア４００への転送に関するスペシフィックス（詳細な規定条件）からホストシステム３９０を分離する。更に、システム及びＡＴＭレイヤコア２２０は、システムバス３８０及びホストスペシフィックスから分離される。ここに示す好ましい実施形態においては、システムバスは、電気・電子工学会（ＩＥＥＥ）規格１４９６仕様規定によるＳ−Ｂｕｓである。システムバスインタフェース２００は、システムバス、即ちこの図の場合は、前記Ｓ−Ｂｕｓの仕様に従って通信するように構成される。システムバスインタフェース２００は、異なるホストシステムバスに適合するように構成可能であるものと考察される。更に、システムバスインタフェース２００は、ＧＩＯインターフェイス２４０によって規定されたプロトコルに従って、データを送信および受信するように構成される。ＧＩＯインタフェース２４０は、システム及びＡＴＭレイヤコア２２０がホストシステムと通信するために用いられ、従って、異なるホストシステム及びバスに対してインタフェースするＮＩＣ１２０の実施形態が異なっても変化することのない単数のインタフェースを提供する。
【００１７】
ホストシステム３９０は、データパケット、及び、送信および受信中のパケットに対するポインタを含むホストメモリ３９５を有する。既に述べたように、ＮＩＣ１２０は、更に、ホストシステム３９０において実行中のアプリケーションから、非同期転送に関するセル記述詳細事項をシールドする。現行目的に関しては、ホストシステム３９０において実行中のアプリケーションは、当該技術分野において公知であるように、送信および受信リングの周りをパケットインタフェースによって包むことによって、送信および受信データを管理するものと仮定する。ただし、本発明は、他のデータ構造を用いて送信および受信データを管理するホストシステムにおいて実行中のソフトウェアアプリケーションを用いて実行することも可能である。
【００１８】
データ伝送に用いられるホストメモリの好ましいデータ構造の全体的な概観を図４に示す。ホストメモリには、送信（「ＴＸ」）データバッファ４７０ａ−４７０ｍ、ＴＸデータ記述子リング４８０ａ−４８０ｍ、及び、ＴＸ完成リング４９０が含まれる。転送されるべきデータを記憶するためのＴＸデータバッファ４７０ａ−４７０ｍは、既に述べたデータバッファと同じである。
【００１９】
ＴＸデータ記述子リング４８０ａ−４８０ｍは、（ｉ）通常、ＮＩＣによってサポートされ、転送データレートが異なる多重チャネル、及び、（ｉｉ）ＴＸデータバッファ４７０ａ−４７０ｍに数において対応するデータ構造である。各ＴＸデータ記述子リング４８０ａ−４８０ｍには、ソフトウェアによって順次にアクセスされる「１」番から「Ｋ」番までの複数「Ｋ」個のリングエントリが含まれる。「Ｋ」の値は、少なくとも６４に等しい整数であることが好ましい。各リングエントリは、所要データブロックの部分が配置される当該データ記述子のそれぞれのＴＸデータバッファにおける場所に対する少なくとも１つのポインタを含む「データ記述子」を記憶するに十分なサイズ（例えば６４バイト）である。データ記述子がリングエントリへ直列的に入力され、そして、ＮＩＣのＴＸ  ＤＭＡエンジン（後で検討）によって続いて読み取られるようにキューに入れられた場合、ソフトウェアは、Ｉ／ＯコマンドをＮＩＣに伝送する。このＩ／Ｏコマンドは、データ記述子を受信するために、パラメータとして、使用中ＴＸデータ記述子リングの数、及び、当該ＴＸデータ記述子リングの最後のリングエントリを含む。これは、ＮＩＣによってＴＸデータ記述子リングがポーリングされることを回避するために行われるが、大抵のパソコンプラットホームにおいては、これを採用することは経費がかさみ、しかも、データ伝達が必要でない場合にはこれの使用は不必要である。ＮＩＣは、処理済みの最後のデータ記述子のトラックをＴＸデータ記述子リング別に保持する。
【００２０】
ＴＸ完成リング４９０は、ＴＸデータ記述子リング４８０ａ−４８０ｍとは異なり、ポインタに依存することなしに、リングエントリ内に全ての必要な情報を含む複数のデータエントリを有するデータ構造である。ＴＸ完成リング４９０は、どのデータワードが分割（セグメンテーション）用ＴＸバッファメモリに転送済みであるかをソフトウェアに通知するために用いられる。好ましい実施形態においては、ＴＸ完成リング４９０は、任意の構成を選定しても差し支えないが、配列された６４バイトで構成される最大１，０２４リングエントリによる６４キロバイトのホストメモリを占有する。ＴＸ完成リング４９０は、ＮＩＣがＴＸ完成リング４９０の所有権を持つ場合にセットされる各記述子内のＯＷＮビットを必要とするソフトウェア及びハードウェアの両方によってアクセス可能である。
【００２１】
再度図３において、システム及びＡＴＭレイヤコア２２０の主要機能の一つは、ホストメモリからデータを検索し、パック用回路、即ち、１つのワードパッキング回路および１つのバイトパッキング回路を経てＴＸバッファメモリ内にデータを一時的に記憶する以前に、データに対してパッキング操作を実施することである。その後で、データを、セルに分割し、一連のＴＸ  ＦＩＦＯに転送することが可能である。これは、セル化ロジックの特定の構成部品の集合的な調停済み動作を介して達成される。この場合のロジックは、好ましくは図５に示すインタフェースを備えた、ＴＸ  ＤＭＡエンジン５００、ＴＸセグメンテーションエンジン５１０、及び、ＴＸ制御ＲＡＭ５２０である。
【００２２】
ＴＸ  ＤＭＡエンジン５００は、ホストメモリからデータを検索し、バイトパッキング回路６５０によってＴＸバッファメモリ内に記憶するためにデータをパックするバイトを検索する責任を有する。これによって、ＡＴＭスイッチへの伝達に先立ってＴＸセグメンテーションエンジン５１０が、図３に示すＴＸバッファメモリ４４０に記憶されているデータを送信データセルのペイロードに分割することが更に容易になる。ただし、この種のバイトパッキングは、任意のタイプのネットワークを通って情報を伝達するために、任意の回路によって使用可能であるものと考察される。ＴＸ制御ラム５２０は、ＴＸ  ＤＭＡエンジン５００及びＴＸセグメンテーション回路５１０によって使用するための情報の内部記憶装置を提供する。ＴＸデータバッファからＴＸバッファメモリへのデータ転送を統合する際のＴＸ制御ＲＡＭ５２０の動作については、譲受人によって同時出願された「ハードウェアとソフトウェアとの間におけるデータ転送を統合するための方法およびその装置」と題し、参考文書として本明細書に組込み済みの願書（代理人事件番号Ｎｏ．８２２２５．Ｐ０９３４）において詳細に検討されている。
【００２３】
図６及び７は、１つのワードパッキング回路６５０及び１つのバイトパッキング回路６００を含む上記のパッキング回路の実施形態を示す。ワードパッキング回路はバイトパッキング回路６５０に先立って作動する任意のＮＩＣ構成部品において実現可能であるものと考察されるが、この場合のワードパッキング回路は、図３に示すシステムバスインタフェース２００内において用いられ、その出力はＧＩＯインタフェース２４０を介して伝播する。ワードパッキング回路６００は、２つの必要な機能を遂行する。１つの機能は、「Ｎ‐ビット」データワードを「Ｒ‐ビット」ワード内に転送することである。この場合、「Ｎ」及び「Ｒ」の値は、それぞれ、システムバス及びＴＸバッファメモリのビット幅に対応する整数である。第２の機能は、Ｎ‐ビットデータワード内の無効ワードがバイトパッキング回路６５０に転送されることを防止することである。他方、バイトパッキング回路６５０は、無効バイトがＴＸバッファメモリに転送されることを防止することにより、データのバイトをパックする。この「バイトパッキング」は、選択的加法によって達成される。
【００２４】
説明し易くするために、本実施形態においては、３２ビットのデータとして扱われるワード、及び、システムバス及びＴＸバッファメモリの幅は、それぞれのビット幅が６４ビット及び３２ビットであるように構成されるものとする。従って、図６に示すワードパッキング回路６００は、幅が最大６４ビットまでのデータワードをサポートするように構成され、他方、図７−１１に示すバイトパッキング回路は、幅が最大３２ビットまでのデータワードをサポートするように構成されるはずである。ただし、本発明は、任意のビット幅のシステムバス、又はＴＸバッファメモリをサポートするように容易に基準化可能であることが考察される。
【００２５】
図６において、ワードパッキング回路６００は、ラッチエレメント６０５、第１及び第２入力セレクタ６１０及び６１５、読取り記憶エレメント（例えばＦＩＦＯ）６２０、出力セレクタ６２５、及び、出力制御回路６３０を有する。６４ビットデータワードは、図３に示すシステムバスから獲得され、２つの３２ビットデータワード、即ち、最下位３２ビットの６４ビットデータワードを持つ小文字データワード、及び、大文字データワードに分離される。
【００２６】
図に示すように、第１転送サイクル期間中に、小文字データワードは、（ｉ）ラッチエレメント６０５、（ｉｉ）第１入力セレクタ６１０の最初のポート、及び、（ｉｉｉ）入力第２セレクタ６１５の最初のポートに転送される。大文字データワードは、第２入力セレクタ６１０の２番目のポートに入力される。これら第１および第２入力セレクタ６１０及び６１５は、Ｓｅｌｅｃｔ１を論理「１」に等しくなるようにセットし、Ｓｅｌｅｃｔ０をホストメモリの関連ＴＸデータバッファ内における有効データの始動アドレスのビット２の値に等しくなるようにセットすることによって、無効ワード（３２ビット）が読取り記憶エレメント６２０内に記入されることを阻止するように不能化されるべく構成される。Ｓｅｌｅｃｔ０およびＳｅｌｅｃｔ１ラインの構成（コンフィギュレーション）は、システムバスの全サイズ（例えば、３２ビットシステムバスの場合には「００」）に適合するように導き出されることが可能であると考察される。
【００２７】
データが読取り記憶エレメント６２０に転送されるにつれて、出力制御回路６３０は、ＴＸバッファメモリがデータを受信可能であることを示す外部バッファメモリインタフェース内におけるローカルコントローラ（図示せず）によって生成されるバスライン６５１を介して作動状態にあるＲＥＡＤ＿ＥＮＡＢＬＥ信号を受信した際にバイトをパッキングするために、読取り記憶エレメント６２０の３２ビット部分をバイトパッキング回路６５０にパスするように、出力セレクタ６２５の第１および第２の部分を交互に選定する。その後で、出力制御回路６３０は、更に情報を獲得するために、読取り記憶エレメント「ＰＴＲ」のポインタをインクレメントする。出力制御回路６３０は、更に、ワードパッキング回路によってバイトパッキング回路に転送された各３２ビットデータワード毎にデクリメント（減分）する減分カウンタ（図示せず）からのバスライン６５２を介して、ＬＡＳＴ＿ＲＥＡＤ信号を入力として受信する。データ転送開始に先立って、カウンタは、データ記述子によって供給されたデータブロック内の有効ワードの個数となるようにリセットされる。ＬＡＳＴ＿ＲＥＡＤ信号は、作動化状態にある場合、読取られつつある読取り記憶エレメント６２０の部分が多数のＴＸデータバッファの中の１つから獲得されたデータの最後のデータバイトを含むことを示す。これは、最後の有効ワードを後続させている無効ワードを除去するために用いられる。
【００２８】
図７において、バイトパッキング回路６５０は、バイト循環回路６５５、入力記憶エレメント６６０、セーブ記憶エレメント６６５、出力記憶エレメント６７０、及び、セレクタ６７５を有する。入力記憶エレメント６６０は、ワードパッキング回路６００からデータ［３１：０］を受信し、データ［３１：０］をセーブ記憶エレメント６６５及びセレクタ６７５の両方にルートする。セーブ記憶エレメント６６５は、データ［３１：０］を１つの単一サイクルだけ遅延させ、そして、データ（「ＳＤａｔａ［３１：０］」と称する）をセレクタ６７５内に出力する。従って、セレクタ６７０は、入力記憶エレメント６６０及びセーブ記憶エレメント６６５両方からのデータ入力を受信する。
【００２９】
セレクタ６７５は、図８−１１に示すように、データ「ＰＤａｔａ［３１：０］」の中のパックされた１つのワードを一時に集合的に出力するために相互に平行に方向付けられた、４つのマルチプレクサグループ、即ち、「ＭＵＸ（０）―（３）」６８０、６８５、６９０、及び、６９５を有する。これらのマルチプレクサグループ６８０、６８５、６９０、及び、６９５は、状態マシンを必要とすることなしにバイトパッキングを実施するために、３２ビット幅のバイトパッキングに従い、図に示すようにルートされる。更に、６４ビット以上の幅の場合をサポートするために、マルチプレクサは、下の表Ｂに示すように、特定のシステム構成（コンフィギュレーション）を達成するように容易に修正される際に基準化することが可能である。これらのマルチプレクサグループ６８０、６８５、６９０、及び、６９５は、一般に、確実にバイトパッキングするためにデータをワードパッキング回路から通過させるために各マルチプレクサグループ６８０、６８５、６９０、及び、６９５のどの入力を選定するかを実行するバイト循環選択ライン６５６を介してバイト循環回路６５５によって選定される。この選択動作は、パイプライン「ＰＩＰＥ  ＣＯＵＮＴ」における有効バイトの個数（即ち、データバッファの読み取りを新規に開始する時点における、入力、セーブ、及び、出力記憶エレメント内のバイト数）、及び、最初のデータワード「ＢＵＦＦＥＲ  ＡＤＤＲ」の最初の有効バイトの始動アドレスに基づく。バイトパッキングは３２ビット（４バイト）幅に関して実施されるので、図に示すように、ＢＵＦＦＥＲ  ＡＤＤＲは２ビットである。ＢＵＦＦＥＲ  ＡＤＤＲのビット数は、受信したデータワードのサイズに応じて増大可能であることが考察される。バイト循環回路６５５は、バイト循環選択ライン６５６を介して伝播されるべき選定値を計算する。選定値は、次に示す方程式１の値に等しい：
【数１】
0003761980.tif 000002
ここに、「Ｒ」／８＝ＴＸバッファメモリのバイト幅である。
【００３０】
上記の識別済み方程式から求められる３２ビット実施形態における可能なデータパスを次の表Ａに示す。
【表１】
0003761980.tif 000003
【００３１】
一般に、ＴＸメモリバッファのビット幅に対応するサイズ「Ｒ」のあらゆるデータパケットに関して、バイトパッキングは、例えば、上記のバイト、又は、あらゆる所定のビット幅のような所定量（「Ｔ」）のパックされたデータをそれぞれ出力するために、次の表Ｂに基づいて、複数のマルチプレクサグループを構成することによって遂行される。マルチプレクサグループは、あらゆるビットサイズをサポートするように構成可能であるが、各マルチプレクサグループは、８ビットのデータを出力し、したがって、「Ｔ」が「８」に等しくなるように選定される。
【表２】
0003761980.tif 000004
【００３２】
本発明のオペレーションを明瞭にするために、加法技法を用いたバイトパッキングを説明することを唯一の目的として作成された特定の例を図１２−２０に示す。この特定例は、いかなる点においても本発明の適用範囲に関する制限を意味するものと解釈されてはならない。
【００３３】
ワードパッキング回路は、図１に示すデータバッファを用いて、有効データバイト１及び２を含む最初の３２ビットデータワードに先行する無効ワード、並びに、最初のＴＸデータバッファのデータと関連した最後の３２ビットデータワードの直前を先行するアドレス１４Ｈにおける無効ワードを除去するにつれて、バイトパッキング回路は、ＴＸバッファメモリに記憶する前に、更に、データをパックし続ける。図１２に示すように、ワードパッキング回路がデータブロックの３２ビットデータワードの最初のシーケンスをバイトパッキング回路へ転送し始める直前に、バイト循環回路は、セレクタ６７５（図示せず）に出力されるべき選定値を計算する。この選定値は、この場合においては、「２」（即ち、（４−０＋２）ｍｏｄ４）に等しい。従って、有効バイトデータ１−２は、第１サイクルにおいて、入力記憶エレメント６６０に転送される（図１３参照）。その次のサイクルにおいて、バイト１−２は、セーブ記憶エレメント６６５に転送され、他方、バイト３−６は、入力記憶エレメント６６０に転送される（図１４参照）。入力記憶エレメント６６０からのバイト１−２、及び、入力セーブ記憶エレメント６６０からのバイト３−４は、出力記憶エレメント６７０に転送され、他方、バイト３−６はセーブ記憶エレメント６６５に転送され、バイト７−１０は入力記憶エレメント６６０に転送される（図１５参照）。このプロセスは、出力記憶エレメント６７０内にバイト１３のみが所在する状態になるまで継続する（図１６参照）。ただし、バイトパッキングを維持するために、出力記憶エレメントが満杯になるまで、或いは、当該データが、ＬＡＳＴ＿ＲＥＡＤ信号によって示されるように、ＴＸバッファメモリに転送されるべきデータの最後の有効バイトでない限り、バイト１３は出力記憶エレメント６７０からＴＸバッファメモリへは転送されない。
【００３４】
２番目のＴＸデータバッファと関連したデータワードの２番目のシーケンスに関しては、バイト循環回路は、図１７に示すように、３（即ち（４−１＋０）ｍｏｄ  ４）に等しい選定値を再計算する。従って、第１サイクル期間中においては、バイト１４−１７は、入力記憶エレメント６６０に転送される（図１８参照）。その次のサイクルにおいては、バイト１４−１７はセーブ記憶エレメント６６５に入力され、バイト１４−１６は出力記憶エレメント６７０に転送され、バイト１８−２１は入力記憶エレメント６６０に転送される（図１９参照）。その次のサイクルにおいては、セーブ記憶エレメント６６５からのバイト１７が出力記憶エレメント２７０に転送され、バイト１８−２１はセーブ記憶エレメント６６５に転送され、バイト２３−２５は入力記憶エレメント６６０に転送される。同じプロセスは、バイト２９−３２が出力記憶エレメント６７０に転送される時まで継続する。
【００３５】
これ以降においては、第３ＴＸデータバッファからのデータを構成した後に、図２０に示すように、バイト循環回路６３０は、「１」（即ち（４−０＋１）  ｍｏｄ  ４）であるべき選定値を再計算する。プロセスは、上記のプロセス同様に継続する。ただし、この場合には、データワードの第１及び第２シーケンスに関して図に示すように、３つのバイト値は、「２」及び「１」バイトの代わりにセーブ記憶エレメント６６５から転送される。
【００３６】
図７−１１のワードパッキング及びバイトパッキング回路の集合的動作（オペレーション）を示すフローチャートを図２１に示す。ステップ１０５において、ワードパッキング回路は、１番目のビット幅を持つデータワードの最初のシーケンスをホストメモリから受信する。これらのデータワードは、１つの単一ＴＸデータバッファに記憶されているデータブロックの部分である。ステップ１１０において、ワードパッキング回路は、もし無効ワードが含まれている場合には、ワードパッキング回路を経て無効ワードが伝播することを抑制することにより、有効データに先行する第１データワード内における無効ワードを除去する。
【００３７】
次に、ステップ１１５において、ワードパッキング回路のデータ送信準備が整っていることを検出した場合、バイトパッキング回路内のバイト循環回路は、入力、セーブ、及び、出力記憶エレメント６６０、６６５、及び、６７０の間において適切なデータパスを構成する選定値を計算する。このデータパスは、ＴＸバッファメモリに転送された出力データパケットを「バイトパック」するために、１つのワードからのデータのバイトを他の１つのワードに効果的に加えるために用いられる（ステップ１２０）。次に、ステップ１２５において、ワードパッキング回路は、ポインタを読取り記憶エレメントに増分（インクレメント）することにより、データワードの第１シーケンスの最後のデータワード内における無効ワードを除去する。最終的に、ステップ１３０において、出力記憶エレメントに残っているあらゆるバイトをＴＸバッファメモリに転送する以前に、データワードの第１シーケンスの転送動作によってデータブロックのデータ転送が完成されるかどうかに関する判定が行われる。完成される場合には、データ転送は完了である。完成されない場合には、ワード及びバイトパッキング回路は、他のＴＸデータバッファと関連した後続データブロックに対してパッキング動作（オペレーション）を継続する。  ここで説明した本発明は、多くの異なる方法において、また、多くの異なる構成（コンフィギュレーション）を用いて設計可能である。本発明は、種々の実施形態を用いて説明されたが、当該技術分野における熟練者であれば、本発明の精神及び適用範囲から逸脱することなしに他の実施形態を考案できるはずである。当該技術分野における熟達者にとって、これら特定の詳細事項を組み込むことなしに本発明を実現することが可能であることは明白であるが、多数の特定詳細事項について説明した。ただし、場合によっては、本発明を不必要に理解し難くすること避けるために、公知の回路及びこれに類する事柄については説明しなかった。従って、本発明は、次に示す特許請求の範囲項に関して評価されなければならない。
【図面の簡単な説明】
【図１】  任意に選定された開始データブロックアドレス０６Ｈ、１０４Ｈ、及び、３０９Ｈに情報を記憶する多重データバッファの構成図である。
【図２】  スイッチング回路および専用ネットワークインタフェース回路を介して一緒に結合されたホストメモリを有するシステムを含むＡＴＭネットワークの説明図的な構成図である。
【図３】  システム及びＡＴＭレイヤコアを含む図２に示すネットワークインタフェース回路の説明図的な構成図である。
【図４】  データ伝送において、図２に示すネットワークインタフェース回路によって使用されるホストメモリの特定なデータ構造の説明図的な構成図である。
【図５】  ネットワークインターフェイス回路のシステム及びＡＴＭレイヤコア内にセル化用として設けられた構成部品の説明図的な構成図である。
【図６】  図３及び５に示すシステムバスインタフェースを用いて実現されたワードパッキング回路の説明図的な構成図である。
【図７】  図５に示すＴＸ  ＤＭＡエンジンを用いて実現されたバイトパッキング回路の説明図的な構成図である。
【図８】  図７に示すバイトパッキング回路のセレクタの説明図的な構成図である。
【図９】  図７に示すバイトパッキング回路のセレクタの説明図的な構成図である。
【図１０】  図７に示すバイトパッキング回路のセレクタの説明図的な構成図である。
【図１１】  図７に示すバイトパッキング回路のセレクタの説明図的な構成図である。
【図１２】  図１に示すデータブロックをバイトパックするために、図７に示すバイトパッキング回路の入力、セーブ、及び、出力記憶エレメントが引き受けるデータパスの説明図である。
【図１３】  図１に示すデータブロックをバイトパックするために、図７に示すバイトパッキング回路の入力、セーブ、及び、出力記憶エレメントが引き受けるデータパスの説明図である。
【図１４】  図１に示すデータブロックをバイトパックするために、図７に示すバイトパッキング回路の入力、セーブ、及び、出力記憶エレメントが引き受けるデータパスの説明図である。
【図１５】  図１に示すデータブロックをバイトパックするために、図７に示すバイトパッキング回路の入力、セーブ、及び、出力記憶エレメントが引き受けるデータパスの説明図である。
【図１６】  図１に示すデータブロックをバイトパックするために、図７に示すバイトパッキング回路の入力、セーブ、及び、出力記憶エレメントが引き受けるデータパスの説明図である。
【図１７】  図１に示すデータブロックをバイトパックするために、図７に示すバイトパッキング回路の入力、セーブ、及び、出力記憶エレメントが引き受けるデータパスの説明図である。
【図１８】  図１に示すデータブロックをバイトパックするために、図７に示すバイトパッキング回路の入力、セーブ、及び、出力記憶エレメントが引き受けるデータパスの説明図である。
【図１９】  図１に示すデータブロックをバイトパックするために、図７に示すバイトパッキング回路の入力、セーブ、及び、出力記憶エレメントが引き受けるデータパスの説明図である。
【図２０】  図１に示すデータブロックをバイトパックするために、図７に示すバイトパッキング回路の入力、セーブ、及び、出力記憶エレメントが引き受けるデータパスの説明図である。
【図２１】  図６及び７に示すワード及びバイトパッキング回路の作動ステップを示すフローチャートである。
【符号の説明】
２００  システムバスインタフェース
２２０  システム及びＡＴＭレイヤコア
３４０  外部バッファメモリインタフェース
３８０  システムバス
３９５  ホストメモリ
６００  ワードパッキング回路
６５０  バイトパッキング回路
【図１】
0003761980.tif 000005
【図２】
0003761980.tif 000006
【図３】
0003761980.tif 000007
【図４】
0003761980.tif 000008
【図５】
0003761980.tif 000009
【図６】
0003761980.tif 000010
【図７】
0003761980.tif 000011
【図８】
0003761980.tif 000012
【図９】
0003761980.tif 000013
【図１０】
0003761980.tif 000014
【図１１】
0003761980.tif 000015
【図１２】
0003761980.tif 000016
【図１３】
0003761980.tif 000017
【図１４】
0003761980.tif 000018
【図１５】
0003761980.tif 000019
【図１６】
0003761980.tif 000020
【図１７】
0003761980.tif 000021
【図１８】
0003761980.tif 000022
【図１９】
0003761980.tif 000023
【図２０】
0003761980.tif 000024
【図２１】
0003761980.tif 000025