(57)【特許請求の範囲】
【請求項１】
メモリ要素に順次記憶された複数のＭＰＥＧフレームを有するデータのブロックを転送する際の効率を最適化する方法において、
データのブロックに関する情報をもたらす、メモリ要素に記憶されたデータ記述子から複数のオーバヘッド・パラメータにアクセスするステップと、
データのブロックを、各々が複数のＭＰＥＧフレームの１つに対応している複数のＭＰＥＧパケットにパケット化するステップと、
伝送バッファ・メモリ内に前記複数のＭＰＥＧパケットを記憶するステップと、
複数のＭＰＥＧパケットをセグメント化して、複数のセル・パケットを作成し、各セル・パケットが共通して前記の複数のオーバヘッド・パラメータの少なくとも１つを含んでいるステップとを備え、さらに、
制御情報とペイロード長さ情報を与える制御／長さフィールドである第１のオーバヘッド・パラメータにアクセスするステップと、
各々の前記セル・パケットのヘッダ情報を与えるセル・ヘッダである第２のオーバヘッド・パラメータにアクセスするステップと、
伝送バッファ・メモリ内に前記第１と前記第２のオーバヘッド・パラメータを記憶するステップと、
前記複数のＭＰＥＧパケットの各々を前記複数のオーバヘッド・パラメータに関連付けることにより、前記メモリ要素に記憶された前記データ記述子から同じ前記複数のオーバヘッド・パラメータに再アクセスしないで、前記複数のＭＰＥＧパケットを記憶するステップと、
伝送バッファ・メモリ内に記憶された前記第１と前記第２のオーバヘッド・パラメータを使用することにより、前記複数のＭＰＥＧパケットをセグメント化するステップと、
を備えることを特徴とする方法。
【請求項２】
複数のＭＰＥＧフレームを有するデータのブロックをメモリ要素から伝送バッファ・メモリに転送する際の効率を最適化する回路において、
メモリ要素に記憶されたデータ記述子から複数のオーバヘッド・パラメータにアクセスし、データのブロックを複数のＭＰＥＧパケットにパケット化し、そしてその複数のＭＰＥＧパケットの各々に対してその内容についての情報を与えるためのヘッダー・タグ・ビットをセットするように構成された伝送バッファ・メモリに結合された伝送ＤＭＡエンジンと、
伝送バッファ・メモリに結合された、複数のＭＰＥＧパケットをセグメント化して、回路から伝送される複数のセル・パケットを作成し、各セル・パケットが共通して前記の複数のオーバヘッド・パラメータの少なくとも１つを含んでいる伝送セグメント化エンジンと
を備えている回路。
【請求項３】
ホスト・メモリを含んでいるホスト・システムが遠隔システムと通信することを可能とするネットワーク・インタフェース回路において、
ホスト・システムのデータ・バスとの接続を確立して、ホスト・メモリに記憶されているデータのブロックにアクセスするように構成されたシステム・バス・インタフェースと、
遠隔システムへの伝送前にデータのブロックを記憶するように構成された伝送バッファ・メモリと、
ホスト・システムがデータ・バスに入れたデータのブロックを取得し、データのブロックを遠隔システムへの伝送に適した複数のセル・パケットに変換するシステムおよびＡＴＭ層コアとを備えており、システムおよびＡＴＭ層コアが
前記伝送バッファ・メモリに結合され、メモリ要素に記憶されたデータ記述子から複数のオーバヘッド・パラメータにアクセスし、そしてデータのブロックを複数のＭＰＥＧパケットにパケット化し、そのＭＰＥＧパケットの各ワードに対して少なくとも１つのヘッダー・タグ・ビットをセットして複数のＭＰＥＧフレームにおけるそのワードの位置を指示するするように構成された伝送ＤＭＡエンジンと、
前記伝送バッファ・メモリに結合された、複数のＭＰＥＧパケットをセグメント化して、回路から伝送される複数のセル・パケットを作成し、各セル・パケットが共通して前記の複数のオーバヘッド・パラメータの少なくとも１つを含んでいる伝送セグメント化エンジンとを含んでいる
ネットワーク・インタフェース回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータ転送の分野に関する。詳細にいえば、本発明はホスト・メモリに順次記憶され、アクセス可能なデータを、オーバヘッドを軽減し、データの帯域幅を広げるために後でセグメント化するために、複数のデータ・パケットにパケット化する装置および方法に関する。
【０００２】
【従来の技術】
非同期転送モード（ＡＴＭ）ネットワークにより、コンピュータ・システムなどの異なるシステムが互いに通信できるようになることは周知である。ほとんどのネットワークと同様に、ＡＴＭネットワーク全体の性能は、さまざまな要因によって大幅な影響を受ける。本願に関連する要因の１つは、コンピュータ・システムのシステム・バスとネットワーク媒体（たとえば、光ファイバ、ツイスト・ペア、スーパー・ツイスト・ペアなど）との間の伝送（「ＴＸ」）データ経路を確立するインタフェース回路のデータ帯域幅である。本願の範囲に関し、「データ帯域幅」はソフトウェア・オーバヘッド量に対する、ＴＸデータ経路を介してコンピュータ・システムから伝送されるデータの量の割合で表される。「ソフトウェア・オーバヘッド」はデータ転送を行うためにシステム機能を動作させるのに必要な制御情報として定義される。
【０００３】
【発明が解決しようとする課題】
従来のＡＴＭネットワークで経験する主な欠点の１つは、２地点間でのビデオおよびその他の通信データに対してフレーム・サイズの制約があり、これが所与の量のソフトウェア・オーバヘッドが制御するデータの量を増やすだけで、データ帯域幅を向上させるのを妨げることである。たとえば、ビデオはＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅｓ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）フレームで転送されるが、これはホストメモリに連続して記憶された１８８バイトのデータである。単一のＭＰＥＧフレームのバイト・サイズは、すべてのサイズが限定されているフレームと同様に、ソフトウェア・オーバヘッドがＭＰＥＧフレームのサイズに比較して大きいという状況のなかで変更することができない。従来のネットワークでは、各ＭＰＥＧフレームは通信ソフトウェアによって個別にアクセスされ、ローカル記憶用にインタフェース回路に転送される。ＡＴＭネットワークが単一のＭＰＥＧフレームをインタフェース回路に転送するのに多くのソフトウェア・オーバヘッドを必要とするのであれば、データ帯域幅が大幅に減少することは明らかである。それ故、上述の欠点を解決する装置および方法を作成することが有利なものとなる。
【０００４】
【課題を解決するための手段】
データ転送の制御に使用されるソフトウェア・オーバヘッドを最小限とし、これによって、データ帯域幅を広くするために、データ転送を制御し、これを行うハードウェア回路をネットワーク・インタフェース回路（「ＮＩＣ」）に実装する。ハードウェア回路は伝送（「ＴＸ」）ＤＭＡエンジンと、ＴＸセグメント化エンジンを備えている。
【０００５】
多数のＭＰＥＧフレームを有するデータ・ブロックにアクセスするために、データ記述子からオーバヘッドにアクセスした後、ＴＸ  ＤＭＡエンジンはデータ・ブロックをＭＰＥＧフレームの数およびサイズに対応したＭＰＥＧパケットにパケット化する。これらのＭＰＥＧパケットはＮＩＣに対してローカルに記憶される。ＭＰＥＧパケットを記憶する態様は、ＴＸ  ＤＭＡエンジンが同一のデータ・ブロックから生じる連続したＭＰＥＧパケットに関して同一のデータ記述子によってオーバヘッド情報に再アクセスする必要がない点で、通常のデータとは異なっている。逆に、いくつかのオーバヘッド・パラメータをローカルに記憶してから、最初のＭＰＥＧパケットが記憶され、これらのいくつかのオーバヘッド・パラメータは同一のデータ・ブロックの連続したＭＰＥＧパケットをセグメント化するために、ＴＸセグメント化エンジンによって使用される。これはハードウェア回路を使用するシステムによって実現される全体的なデータ帯域幅を広げる。
【０００６】
データ・ブロックがＭＰＥＧパケットとして記憶されていることが検出されると、ＴＸセグメント化エンジンはＭＰＥＧパケットのデータをセル・パケットの伝送セルに対するペイロードとしてセグメント化し、かつ必要に応じ、オーバヘッド・パラメータを検索して、各ＭＰＥＧパケットに対するセル・パケットを作成するように構成される。データ・ブロックに関連するすべてのＭＰＥＧフレームがＴＸ  ＤＭＡエンジンによって読み取られ、ローカルに記憶された後、ＮＩＣはホスト・メモリのＴＸ完了リングに書込みを行って、データ・ブロックが完全に転送されたことを通信ソフトウェアに通知する。
【０００７】
本発明の特徴および利点は本発明の以下の詳細な説明から明らかとなろう。
【０００８】
【発明の実施の形態】
以下の詳細な説明において、本発明はホスト・メモリに記憶されているデータをセグメント化する装置および方法を説明する。このようなセグメント化は非同期転送モード（「ＡＴＭ」）ネットワークのネットワーク・インタフェース回路（「ＮＩＣ」）内で行われる。本明細書で定義するある種の制御回路および２進表記を説明するために、いくつかの用語が頻繁に使用される。「データ」とは一般に２進データをいう。「ワード」とは長さが４倍と（３２ビット）であることが好ましいが、長さが任意の「２x 」（ただし、ｘは０≧である）でよく、「パケット」は連続して記憶された複数のワードである。「データ・ブロック」は伝送（「ＴＸ」）データ・バッファに記憶されている連続してアクセスされるバイトのグループと定義され、「ＭＰＥＧフレーム」はビデオを含む任意のタイプの通信データのデータ・ブロックのサイズが限定された部分を指すために使用される。ＭＰＥＧフレームは長さが１８８バイトであることが好ましいが、任意のバイト長のものでもよい。「ＭＰＥＧパケット」とはサイズおよびデータの内容がＭＰＥＧフレームに対応しているが、ＴＸデータ・バッファではなく、ＴＸバッファ・メモリに記憶されるものである。最後に、「パケット（化）」とはデータ・ブロックをデータのパケットにセグメント化するのに必要な操作をいう。
【０００９】
図１を参照すると、本発明のネットワーク・インタフェース回路（「ＮＩＣ」）が組み込まれた例示的なネットワークが示されている。ネットワーク１００は各々にホスト・メモリとＮＩＣ１２０が図示のように組み込まれている各種のシステム、たとえばコンピュータ・システム（図示せず）からなっている。ＮＩＣ１２０は公衆ＡＴＭ交換機１５０に直結されていても、あるいは構内ＡＴＭ交換機１４０を介して間接的に結合されていてもよい。同様に、構内および公衆交換機１４０および１５０は任意に選択された方式で結合され、２つ以上のシステムの間の通信経路をもたらすようになっている。必要とされるサービスの質（すなわち、ビット速度、許容タイミング損失など）により、これらの構内および公衆ＡＴＭ交換機１４０および１５０はデータの経路指定を行って、互いに遠隔配置されたシステムで動作しているアプリケーションの間の非同期転送をサポートする。図１にさらに示すように、ネットワーク１００はローカル・エリア・ネットワーク（「ＬＡＮ」）エミュレーション１３０を含んでいてもよく、これはＡＴＭをサポート・フレームワークとして使用するイーサネットやトークン・リング・ネットワークなどの他のネットワーク１６０に接続するゲートウェイとして働く。
【００１０】
さて、図２を参照すると、図１のシステムの１つ（以下、「ホスト・システム」と呼ぶ）によって使用されるＮＩＣのアーキテクチャの単純化した図が示されている。ＮＩＣ１２０は入出力（「Ｉ／Ｏ」）バス（たとえば、システム・バス）３８０を介して、ＡＴＭプロトコルにしたがって動作しているネットワーク媒体に結合されたホスト・システム３９０とインタフェースしている。ＮＩＣ１２０はシステム・バス・インタフェース２００、汎用入出力（「ＧＩＯ」）インタフェース２４０を介してシステム・バス・インタフェース２００に結合されているシステムおよびＡＴＭ層コア２２０、ローカル・スレーブ・インタフェース２６０、伝送（「ＴＸ」）ＦＩＦＯアレイ２８０、受信（「ＲＸ」）ＦＩＦＯアレイ３００、媒体インタフェース３２０、外部バッファ・メモリ・インタフェース３４０、およびクロック合成回路３６０を備えている。
【００１１】
また、ＮＩＣ１２０の構成要素２００−３６０は協働して、複数の帯域幅グループの複数の動的に割り振られるチャネルを通じて、ホスト・システム３９０とネットワーク内の他のシステムとの間でデータを非同期で転送する。換言すると、ＮＩＣ１２０の構成要素は集合して、ホスト・システム３９０のシステム・バス３８０に結合されたマルチチャネル直接メモリ・アクセス（ＤＭＡ）コントローラとして機能する。好ましい実施の形態において、複数の送受信チャネルが全二重１５５／６２２Ｍｂｐｓ物理リンクを利用する仮想チャネルとしてサービスを受ける。
【００１２】
外部バッファ・メモリ・インタフェース３４０を介してＮＩＣ１２０外にある外部バッファ・メモリ４２０へのシステム・バス３８０によって異なるチャネルに与えられたデータの複数のパケットは、システムおよびＡＴＭ層コア２２０の回路によって、媒体インタフェース３２０を介した媒体４００への伝送用の伝送セルにセグメント化される。外部バッファ・メモリ４２０は、複数のＦＩＦＯであるのが好ましく、１つのＦＩＦＯがネットワークの各チャネルに対応して、異なるデータ転送速度をサポートしているＲＸバッファ・メモリ４４０と、ＴＸバッファ・メモリ４６０を含んでいる。各ＦＩＦＯは（ｉ）セグメント化のための制御情報を与える複数のヘッダ・タグ・ビット、（ｉｉ）少なくとも１つのデータのワードを各クロック・サイクルで読み取り、図７に示すような単一エントリに一時的に記憶できるようにする複数の対応するエントリを記憶するのに十分な記憶容量を有している。
【００１３】
図２をさらに参照すると、システムおよびＡＴＭ層コア２２０は伝送および受信それぞれのデータ・セルの非同期セル化および再アセンブリを容易とするための分離されたセル化および再アセンブリ論理（図示せず）を備えている。システムおよびＡＴＭ層コア２２０と媒体インタフェース３２０の間に結合されているＴＸおよびＲＸ  ＦＩＦＯのアレイ２８０および３００を使用して、伝送および受信それぞれのデータ・セルの伝送および受信セル・ペイロードをステージングする。媒体インタフェース３２０はクロック合成回路３６０がもたらすクロック信号によって駆動され、ネットワークの媒体４００に対してデータ・セルを送受信する。媒体４００が、したがって媒体インタフェース３２０がＡＴＭ形式特別仕様書（ＡＴＭ  Ｆｏｒｍ  Ａｄ  Ｈｏｃ  ｓｐｅｃｉｆｉｃａｔｉｏｎ）に記載されているＡＴＭ汎用テストおよび操作物理インタフェース（Ｕｎｉｖｅｒｓａｌ  Ｔｅｓｔ  ａｎｄ  Ｏｐｅｒａｔｉｏｎｓ  Ｐｈｙｓｉｃａｌ  Ｉｎｔｅｒｆａｃｅ  ｆｏｒ  ＡＴＭ：「ＵＴＯＰＩＡ」）に準拠していることが好ましい。ＵＴＯＰＩＡ仕様に準拠するために、クロック合成回路３６０は２０ＭＨｚまたは４０ＭＨｚのいずれかのクロック信号をもたらして、媒体インタフェース３２０が１５５Ｍｂｐｓのデータ・ストリームについては２０ＭＨｚで、また６２２Ｍｂｐｓのデータ・ストリームについては４０ＭＨｚでバイト・ストリームをサポートできるようにする。
【００１４】
この実施の形態において、媒体インタフェース３２０は各々が４バイトのセル・ヘッダと４８バイトのペイロードを有している５２バイトのデータ・セルをＴＸ  ＦＩＦＯ２８０から受け取る。媒体インタフェース３２０は、５番目のバイトとしてチェックサムを各伝送セルのヘッダに挿入してから、１つまたは複数の５３バイトの伝送セル（以下、「セル・パケット」と呼ぶ）を媒体４００に与える。最後の伝送セルは制御および長さ情報、埋込み文字（必要に応じ）ならびに周期冗長チェックワード「ＣＲＣ」を含んでいる。逆に、媒体インタフェース３２０が媒体４００からセルを受信した場合、媒体インタフェースは各受信セルの５番目のバイトのチェックサムを調べて、チェックサムが正しいかどうか判定する。正しい場合には、チェックサムを表すバイトが受信セルからはぎ取られ、ＲＸ  ＦＩＦＯ３００に送られる。それ以外の場合には、受信セル全体が無視される。
【００１５】
システム・バス・インタフェース２００およびＧＩＯインタフェース２４０はホスト・システム３９０を媒体４００への転送の細部から絶縁する。さらに、システムおよびＡＴＭ層コア２２０はシステム・バス３８０の細部およびホストの細部から絶縁される。この好ましい実施の形態において、システム・バスは米国電気電子技術者協会（「ＩＥＥＥ」）規格１４９６仕様書で規定されているＳ−バスである。システム・バス・インタフェース２００はシステム・バスの仕様にしたがって、本例ではＳ−バスによって通信を行うように構成されている。システム・バス・インタフェース２００を異なるホスト・システム・バスに適合するように構成することも行われた。システム・バス・インタフェース２００はＧＩＯインタフェース２４０によって規定されるプロトコルにしたがってデータを送受信するようにも構成される。ＧＩＯインタフェース２４０はシステムおよびＡＴＭ層コア２２０がホスト・システム３９０と通信を行う単一のインタフェースをもたらし、したがって、異なるホスト・システムおよびバスとインタフェースするＮＩＣ１２０の異なる実施の形態に合わせて変化することはない。
【００１６】
ホスト・システム３９０はホスト・メモリ３９５を含んでおり、このメモリはデータ・パケットおよび送受信されるパケットに対するポインタを含んでいる。上述したように、ＮＩＣ１２０はホスト・システム３９０で動作しているアプリケーションからの非同期転送のセル描出の詳細もシールドする。このため、ホスト・システム３９０で動作しているアプリケーションが以下で説明するようなパケット・インタフェースを備えた循環送受信リングを使用して送受信データを管理するものと想定する。しかしながら、本発明は他のデータ構造を使用して送受信データを管理する、ホスト・システム３９０で動作するソフトウェア・アプリケーションで実施することもできる。
【００１７】
図３を参照すると、データ伝送で使用されるホスト・メモリ３９５の好ましいデータ構造の概要が示されている。ホスト・メモリは伝送（「ＴＸ」）データ・バッファ４７０ａ−４７０ｋと、これに対応するＴＸデータ記述子リング４８０ａ−４８０ｍおよびＴＸ完了リング４９０を含んでいる。ＴＸデータ・バッファ４７０ａ−４７０ｋはホスト・メモリ内部の所定のサイズの連続してアドレスされるバッファである。ＴＸデータ・バッファ４７０ａ−４７０ｋはデータ・ブロックを個別に記憶し、ビデオなどの通信媒体用の大きな記憶域をまとめてもたらすために使用される。
【００１８】
ＴＸデータ記述子リング４８０ａ−４８０ｍは複数「Ｎ」のリング・エントリ、たとえば、エントリ１、２、３などを有しているデータ構造である。ＴＸデータ記述子リング４８０ａ−４８０ｍの各々はＮＩＣがサポートしている、通常は異なる転送データ速度の「Ｍ」本のチャネル（「Ｍ」は２以上の自然数）の１本に対応している。各ＴＸデータ記述子リング４８０ａ−４８０ｍは通信ソフトウェアによって順次循環形式でアクセスされる複数「Ｎ」のリング・エントリを含んでいる。各リング・エントリは伝送に関係する情報（たとえば、データ・ブロックのサイズ、ＭＰＥＧフレームなど）を有している「データ記述子」、およびＴＸデータ・バッファ４７０ａ−４７０ｋにおかれている希望するデータ・ブロックへのポインタを収めるのに十分なサイズ（たとえば、６４バイト）のものである。各ＴＸデータ記述子リングのデータ記述子には、１から「Ｎ」までの番号がつけられている（ただし、「Ｎ」は各ＴＸデータ記述子リング４８０ａ−４８０ｍの記述子の数に等しい自然数）。通常、リングには１０２４のデータ記述子があり、すなわち、Ｎ＝１０２４であり、各リングは事前プログラム済みの帯域幅グループと関連づけられている。さらに、各データ記述子リングは伝送のために待ち行列化された１つまたは複数のデータ・ブロックを持っていてもよい。ＴＸデータ・バッファの数「Ｋ」は、ＴＸデータ・バッファ４７０ａ−４７０ｋがＮ個のエントリおよびＭ本のチャネルからのデータを保持するのに十分な数でなければならないため、「Ｍ」×「Ｎ」以下であることが好ましい。
【００１９】
データ記述子がリング・エントリに入力され、ＮＩＣ１２０による以降の読取りのために待ち行列化されると、ホスト・メモリ上で動作しているソフトウェアは「キック」コマンドを、図２のＮＩＣ１２０のシステムおよびＡＴＭ層コア２２０に対して発行する。このコマンドは書込み操作であり、パラメータとして、ＴＸデータ記述子リング番号（０−１２６）、および参照することによって本明細書の一部となる本願と同時出願の「Ａ  Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  Ｆｏｒ  Ｃｏｏｒｄｉｎａｔｉｎｇ  Ｄａｔａ  Ｔｒａｎｓｆｅｒ  Ｂｅｔｗｅｅｎ  Ｈａｒｄｗａｒｅ  ａｎｄ  Ｓｏｆｔｗａｒｅ」（代理人整理番号Ｎｏ．８２２２５．Ｐ０９３４）なる名称の米国特許願で、本出願人が検討している特定のＴＸデータ記述子リングに通知された最後のデータ記述子の対応するデータ記述子番号を与える。これはほとんどのパーソナル・コンピュータ・プラットフォームで用いるには費用がかさみ、データを伝送する必要がない場合には必要のない、ＮＩＣによるＴＸデータ記述子リングのポーリングを回避するために行われる。ＮＩＣはＴＸデータ記述子リングごとに、処理済みの最後のデータ記述子を追跡する。
【００２０】
図４に示すような好ましい実施の形態において、ＴＸデータ記述子リングの各データ記述子は６４バイト（ないし、１６ワード）の情報を含んでおり、その中には、ＴＸ  ＤＭＡエンジン（以下で説明する）が使用して、ホスト・メモリのＴＸデータ・バッファ４７０ａ−４７０ｋからのデータをパケット化するものがある。データ記述子の最初のワード（すなわち、３２ビット）４８１は少なくとも１つの制御ビット（以下、「ＭＰＥＧビット」という）４８２を含んでおり、これはセットされたときに、通信ソフトウェアが複数のＭＰＥＧフレームを介してビデオを転送することを望んでいることを示す。ＭＰＥＧビット４８２がセットされている場合には、通常はＴＸデータ記述子リングと関連づけられたＴＸデータ・バッファのバッファ長を示すためにもっぱら使用されている、データ記述子の最初のワード４８１内の複数のビット（「フレーム・ビット」）４８３が、単一のＭＰＥＧフレームのバイト長を指定するために使用される。
【００２１】
データ記述子はさらに、（ｉ）このＴＸデータ記述子リングのＴＸデータ・バッファに記憶されたデータ・ブロックの最初のバイトの３２ビット・スタート・アドレス（「Ｓｔａｒｔ＿Ａｄｄｒ＿Ｐｔｒ」）を与える第２のワード４８４と、ＭＰＥＧビット４８２がセットされている場合には、（ｉｉ）同じデータ記述子を利用して転送されるＭＰＥＧフレームの数（「Ｎｕｍ＿Ｆｒａｍｅｓ」）を示す第３のワード４８５を含んでいる。さらに、データ記述子は得られるセル・パケットの制御情報とペイロード長さ（「制御／長さ」）を含んでいる第４のワード４８６と、１バイトのチェックサムを除き、４バイトのセル・ヘッダ（「セル・ヘッダ」）を含んでいる第５のワード４８７を含んでいる。
【００２２】
図３に戻ると、ＴＸ完了リング４９０は複数のリング・エントリ「Ｊ」を有するデータ構造であり、ＴＸデータ記述子リング４８０ａ−４８０ｍと異なり、ポインタに依存するのではなく、リング・エントリにすべての必要な情報を含んでいる。ＴＸ完了リング４９０はハードウェアに対するプレース・ホルダとして働き、バッファ・メモリ４２０に転送されたパケットの状況を与える。それ故、ＴＸ完了記述子リング４９０のリング・エントリの数は「Ｊ」であり、ＴＸ完了リング４９０は、Ｍ本のチャネルからのＮ個のデータ記述子を通知するのに十分なエントリを持っていなければならないので、ＪはＭ×Ｎ以下（Ｊ≦Ｍ×Ｎ）である。ハードウェアはＴＸ完了記述子リング４９０の記述子を使用して、対応するＴＸデータ記述子リング番号と、転送されたデータ・ブロックに対応するデータ記述子番号をもたらす。好ましい実施の形態において、ＴＸ完了リング４９０は完了したトランザクションの更新を通知するためにハードウェアが使用するのに利用できるデータ記述子をハードウェアに報告するために使用される。ＴＸ完了記述子リング４９０がハードウェアとソフトウェアの両方によってアクセスできることが有利である。さらに、ＴＸ完了リング４９０は各々がＮ個のデータ記述子を持っている「Ｍ」個のＴＸデータ記述子リングからの複数の完了更新を収めるのに十分な大きさでなければならないので、１０２４のリング・エントリによってホスト・メモリ中の６４Ｋバイトを占めることが好ましい。
【００２３】
図２のシステムおよびＡＴＭ層コア２２０の機能の１つは、特定のチャネルによる伝送のためにホスト・メモリからデータを受け取り、このデータをパケット化された形式でＴＸバッファ・メモリ内に記憶して、後で検索し、まとまってセル・パケットを形成するＡＴＭセルのペイロードに挿入することである。この機能はセル化論理、すなわち図５に示したＴＸ  ＤＭＡエンジン５００、ＴＸセグメント化エンジン５１０およびＴＸ制御ＲＡＭ５２０の共同アービトレーション・オペレーションによって達成される。
【００２４】
ＴＸ  ＤＭＡエンジン５００はＴＸデータ・バッファからのデータを検索し、データをＴＸバッファ・メモリに適宜パケット化することを担う。データがＭＰＥＧ伝送を必要とするビデオである場合には、ＤＭＡエンジン５００が以下で説明するようにＭＰＥＧパケット・フォーマットにしたがいビデオをパケット化する。ＴＸセグメント化エンジン５１０はこれらのＭＰＥＧパケットがＴＸバッファ・メモリに入れられるとすぐに、これらのパケットをセグメント化し、ＴＸ  ＦＩＦＯアレイのサイズが対応するＴＸデータ・バッファのサイズよりも小さくなれるようにする。ＴＸデータ・バッファからＴＸバッファ・メモリへのデータ転送を調整する際のＴＸ制御ＲＡＭ５２０の動作は、参照することによって本明細書の一部となる本願と同時出願の「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｃｏｏｒｄｉｎａｔｉｎｇ  Ｄａｔａ  Ｔｒａｎｓｆｅｒ  Ｂｅｔｗｅｅｎ  Ｈａｒｄｗａｒｅ  ａｎｄ  Ｓｏｆｔｗａｒｅ」（代理人整理番号Ｎｏ．８２２２５．Ｐ０９３４）なる名称の米国特許願で本出願人が詳細にわたって検討している。
【００２５】
図５をさらに参照すると、ＴＸ  ＤＭＡエンジン５００は少なくとも２つの異なるパケット・フォーマット、すなわち、ＭＰＥＧセグメント化フォーマットによるデータ・パケット（「ＭＰＥＧパケット」）と、ＭＰＥＧセグメント化フォーマットによらないデータ・パケット（「非ＭＰＥＧパケット」）の一方にしたがって、データをパケット化する。ＴＸバッファ・メモリに記憶されるデータ・パケットのタイプは、上記で定義したデータ記述子の内容によって決定される。
【００２６】
次に、図６および図７を参照すると、ＴＸ  ＤＭＡエンジンはまず、特定のチャネルによって転送されるデータ・ブロックを記憶するＴＸデータ・バッファと関連づけられたデータ記述子のいくつかのオーバヘッド・パラメータを読み取って、ＴＸ  ＤＭＡエンジンが行うパケット化オペレーションを管理する情報を取得する（ステップ１０５）。これらのオーバヘッド・パラメータとしては（ｉ）ＭＰＥＧビット、（ｉｉ）長さ、（ｉｉｉ）Ｓｔａｒｔ＿Ａｄｄｒ＿Ｐｔｒ、（ｉｖ）Ｎｕｍ＿Ｆｒａｍｅｓ、（ｖ）制御／長さ、および上述した特性のセル・ヘッダなどがある。次に、ＴＸ  ＤＭＡエンジンはＭＰＥＧビットの状態をチェックして、データ・ブロックが特別なＭＰＥＧパケット化を必要とする数のＭＰＥＧフレームであるかどうかを判定する（ステップ１１０）。
【００２７】
ＭＰＥＧパケット化が必要な場合には、ＴＸ  ＤＭＡエンジンは特定のチャネルに関連づけられたＦＩＦＯの第１のワード・エントリに制御／長さ情報を書き込み、図７で「ＦＩＦＯ（１）」という符号のつけられたＦＩＦＯで示されているように、その対応するヘッダ・タグ・ビットを”００”にセットすることによって（ステップ１１５）、データ・ブロックをパケット化して、ＴＸバッファ・メモリのＦＩＦＯにローカル記憶する。次に、ＴＸ  ＤＭＡエンジンはセル・ヘッダをＦＩＦＯ（１）の第２のワード・エントリに書き込み、その対応するヘッダ・タグ・ビットを”１１”にセットする（ステップ１２０）。このパケット化手順は、ステップ１２５−１３０で示され、図７で「ＦＩＦＯ（２）」として表されている、ＴＸ  ＤＭＡエンジンが第１および第２のタグ・ビットのヘッダ・タグ・ビットを両方とも”１１”にセットする正規の操作とは異なっている。第１のワード・エントリのヘッダ・タグ・ビットを”００”にセットすることによって、セル・パケットを生成するためのセグメント化の際に、データがＭＰＥＧパケットとしてローカルに記憶されていると、ＴＸセグメント化エンジンが判定することが可能となる。特定のタグ構成をこの一般的な目的を逸脱することなく改変できると考えられる。
【００２８】
その後、ＴＸバッファ・メモリのビット幅にしたがい、フレーム・サイズ・パラメータによって画定されたバイト数をＴＸ  ＤＭＡエンジンによって順次読み取り、ＦＩＦＯ（１）のワード・エントリに順次書き込む。これらのワード・エントリの各々に関連づけられたヘッダ・タグ・ビットは、最後のワード・エントリを除いて、ＴＸ  ＤＭＡエンジンによって”００”にセットされる（ステップ１３５）。この時点で、ＴＸ  ＤＭＡエンジンは再度、ＭＰＥＧパケット化を望むのかどうかを判定する（ステップ１４０）。ＭＰＥＧパケット化を望んでおらず、通常のデータ記憶を示している場合には、ＴＸ  ＤＭＡエンジンは最後のワード・エントリに関連づけられたヘッダ・タグ・ビットを”１１”にセットし、同一または異なるデータ記述子がその制御／長さ情報およびセル・ヘッダを取得する（ステップ１４５）。しかしながら、ＭＰＥＧパケット化を望む場合には、ＴＸ  ＤＭＡエンジンはパケット化されたばかりのＭＰＥＧフレームの他に、ＴＸデータ・バッファ内に転送する他のＭＰＥＧフレームがあるかどうかを判定する（ステップ１５０および１５５）。これはＴＸ  ＤＭＡエンジン内に記憶されているＮｕｍ＿Ｆｒａｍｅｓパラメータを減らし、Ｎｕｍ＿Ｆｒａｍｅｓパラメータが現在ゼロであるかどうかをチェックすることによって達成することができる。
【００２９】
Ｎｕｍ＿Ｆｒａｍｅｓパラメータがゼロに等しく、ＴＸデータ・バッファからのデータ転送が完了していることを示している場合には、ＴＸ  ＤＭＡエンジンはステップ１４５におけるようにＭＰＥＧパケットの最後のワード・エントリのヘッダ・タグ・ビットに”１１”を書き込む。しかしながら、Ｎｕｍ＿Ｆｒａｍｅｓパラメータがゼロに等しくない場合には、最後のワード・エントリのヘッダ・タグ・ビットを”１０”にセットして、ＴＸセグメント化エンジンに、これが最初のＭＰＥＧパケットの終わりであるが、同じ制御／長さおよびセル・ヘッダ情報を利用している他のＭＰＥＧパケットが続いていることを示す（ステップ１６０）。その後、前に行ったように、データ記述子に再アクセスし、制御／長さ情報およびセル・ヘッダをロードする代わりに、ＴＸ  ＤＭＡエンジンは次のＭＰＥＧパケットに関連づけられたデータを読み取り、図７に示すようにＦＩＦＯ（１）に順次書き込む。ＴＸセグメント化エンジンは”１０”というヘッダ・タグ・ビットを検出すると、図８−図９で検討するように、以前のＭＰＥＧパケットからの同じセル・ヘッダ情報と制御／長さ情報を使用して次のＭＰＥＧパケットのデータをセグメント化する。
【００３０】
図８および図９を参照すると、ＴＸ  ＤＭＡエンジンがＭＰＥＧパケットをＴＸバッファ・メモリのＦＩＦＯに記憶し、ＴＸセグメント化エンジンがＮＩＣから伝送するセル・パケットを形成するために、ＭＰＥＧパケットと関連づけられたデータをアンロードしている。ＴＸセグメント化エンジンはまず、データ・パケットの第１のワード・エントリを、特定のチャネル番号に関連づけられたＦＩＦＯから読み取る（ステップ２０５）。第１のワード・エントリのヘッダ・タグ・ビットが”００”であることを、ＴＸセグメント化エンジンが検出した場合、情報が選択したセグメント化手順に後で影響を及ぼすＭＰＥＧパケットを含んでいると判定する（ステップ２１０）。ステップ２１５において、ＴＸセグメント化エンジンは第２のワードを読み取って、セル・ヘッダを取得する。その後、ステップ２２０において、ＴＸセグメント化エンジンはＦＩＦＯに記憶されているパケットが非ＭＰＥＧパケットであるか、ＭＰＥＧパケットであるかに応じて２つのセグメント化手順のうち一方を行う。
【００３１】
ＦＩＦＯに記憶されているパケットが非ＭＰＥＧパケットである場合には、ＴＸセグメント化エンジンはデータ・パケットに関連づけられたデータを、次の２つのうちの１条件が生じるまで読み取る。すなわち、ＴＸセグメント化エンジンが（ｉ）１２の連続したワード・エントリの内容を読み取って、データ・パケットから１２ワード（すなわち、４８バイト）のデータを取得する、あるいは（ｉｉ）対応するワード・エントリがデータ・ブロック内の最後のバイトの有効データを含んでいることを示す”１１”に等しい一対のヘッダ・タグ・ビットを検出する（ステップ２２５−２３５）。最初の条件が生じた場合には、ＴＸセグメント化エンジンは次のセル伝送のためのセル・ヘッダを利用し、この手順を第２の条件が生じるまで継続する（ステップ２４０−２４５）。第２の条件が生じると、制御／長さ情報、ならびに独立して生成されたＣＲＣが最後の伝送セルに追加されて、セル・パケットを生じる（ステップ２５０）。その後、ＣＲＣは次のセル・パケットを引き続いて生成するためにリセットされる。
【００３２】
ＦＩＦＯに記憶されているパケットがＭＰＥＧパケットである場合、ステップ３００において、ＴＸセグメント化エンジンはＭＰＥＧパケットのワード・エントリを、次の３つのうちの１条件が生じるまで読み取る。すなわち、ＴＸセグメント化エンジンが（ｉ）”１１”というヘッダ・タグ・ビットを検出する、（ｉｉ）”１０”というヘッダ・タグ・ビットを検出する、あるいは（ｉｉｉ）１２のワード・エントリを連続して読み取り、これによってデータ・パケットから１２ワード（すなわち、４８バイト）のデータを読み取る。第１の条件がまず検出された場合、ヘッダ・タグ・ビットがワード・エントリがデータ・ブロックの最後の有効バイトを含んでいることを示す”１１”であれば（ステップ３０５−３１０）、ＴＸセグメント化エンジンはステップ２５０−２５５で検討したものと同じ操作を行う。しかしながら、ＴＸセグメント化エンジンがデータ記述子と関連づけられた複数のＭＰＥＧパケットの１つの終わりを示す値”１０”を有しているヘッダ・タグ・ビットを検出する場合、制御／長さ情報、ならびにＣＲＣがセル・パケットに付加され、ＣＲＣがリセットされる（ステップ３１５−３３０）。しかしながら、非ＭＰＥＧパケットと異なり、以前のＭＰＥＧパケットからの制御／長さおよびセル・ヘッダ情報が次の伝送セルに使用されて、制御情報に再アクセスし、これをＴＸバッファ・メモリに再ロードすることに関連づけられたオーバヘッドを排除する。第３の条件の場合、ＴＸセグメント化エンジンは次の伝送セルの伝送にセル・ヘッダを利用し、第１または第２のいずれかの条件が生じるまで、この手順を継続する。
【００３３】
本明細書に記載した本発明は多くの異なる方法で、また多くの異なる構成を使用して設計することができる。本発明をさまざまな実施の形態によって説明してきたが、本発明の精神および範囲を逸脱することなく、他の実施の形態が当分野の技術者には想起できよう。したがって、本発明は首記の特許請求の範囲によって判断されるべきものである。
【図面の簡単な説明】
【図１】  交換回路および専用ネットワーク・インタフェース回路によって結合されたホスト・メモリを有するシステムを含んでいるＡＴＭネットワークを説明するブロック図である。
【図２】  システムとＡＴＭ層コアを含んでいる図１のネットワーク・インタフェース回路を説明するブロック図である。
【図３】  データの伝送時に図２のネットワーク・インタフェース回路が使用するホスト・メモリのいくつかのデータ構造を説明するブロック図である。
【図４】  図３のＴＸデータ記述子リングのリング・エントリの１つに記憶されているデータ記述子を説明するブロック図である。
【図５】  セル化のためにシステムおよびＡＴＭ層コア内に実装された、ＴＸ  ＤＭＡエンジンおよびＴＸセグメント化エンジンを含んでいる構成要素を説明するブロック図である。
【図６】  図２のＴＸバッファ・メモリ内にＭＰＥＧパケットと非ＭＰＥＧパケットを記憶する際に図５のＴＸ  ＤＭＡエンジンが行うパケット化操作を中心として説明する流れ図である。
【図７】  ＭＰＥＧパケットと非ＭＰＥＧパケットを図２のＴＸバッファ・メモリにＦＩＦＯで記憶する方法を説明するブロック図である。
【図８】  図２のネットワーク・インタフェース回路からの伝送用にセル・パケットを作成するために図５のＴＸセグメント化エンジンが行うアンロード操作を中心として説明する流れ図である。
【図９】  図２のネットワーク・インタフェース回路からの伝送用にセル・パケットを作成するために図５のＴＸセグメント化エンジンが行うアンロード操作を中心として説明する流れ図である。
【符号の説明】
１００  ネットワーク
１２０  ネットワーク・インタフェース回路（ＮＩＣ）
１４０  構内ＡＴＭ交換機
１５０  公衆ＡＴＭ交換機
３９０  ホスト・システム
【図１】
0003819484.tif 000002
【図２】
0003819484.tif 000003
【図３】
0003819484.tif 000004
【図４】
0003819484.tif 000005
【図５】
0003819484.tif 000006
【図６】
0003819484.tif 000007
【図７】
0003819484.tif 000008
【図８】
0003819484.tif 000009
【図９】
0003819484.tif 000010