JPH1074174A - ネットワーク・インタフェース - Google Patents
ネットワーク・インタフェースInfo
- Publication number
- JPH1074174A JPH1074174A JP9051805A JP5180597A JPH1074174A JP H1074174 A JPH1074174 A JP H1074174A JP 9051805 A JP9051805 A JP 9051805A JP 5180597 A JP5180597 A JP 5180597A JP H1074174 A JPH1074174 A JP H1074174A
- Authority
- JP
- Japan
- Prior art keywords
- message
- network interface
- control information
- coprocessor
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/128—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
ネットワーク・インタフェースにおいて、短い待ち時間
でかつメッセージ処理のための支援機能の複雑さを減ら
したものを提供する。 【解決手段】 ネットワーク・インタフェース66の受
信側82が、データとメッセージデータに関して実施さ
れる動作を示す宛先制御情報とを含むメッセージを受信
し、この受信メッセージから宛先制御情報を抽出し、抽
出された宛先制御情報をネットワーク・インタフェース
に接続されたメッセージ・コプロセッサ64に通信し、
これによりメッセージ・コプロセッサ64によって発生
された命令と引数を受け取り、これらの受信した命令と
引数に応じて受信メッセージに関する小集合の動作の内
の少なくとも1つを実行する。
Description
インタフェースに関し、特に非同期伝送モードネットワ
ーク等のコネクションベースのネットワークに関する。
さらに具体的には、この発明は、短い待ち時間の通信、
メッセージ・フィルタリング、及びメッセージの多重化
を含む、ネットワーク・インタフェースにおけるメッセ
ージ処理用支援機能の提供に関する。
同期伝送モード(ATM)ネットワーク等のコネクション
ベースの通信システムにおいて、多数のコンピュータ
が、ネットワークに接続されて、パケット又はフレーム
(ここでは、交換可能に使用される)と呼ばれる単位が数
連になった状態で、メッセージや情報の流れを、通信し
ている。非同期伝送モードネットワークにおいて、パケ
ットは、セルと呼ばれる小単位が連結したものである。
特定のコンピュータに送られるパケットは、そのコンピ
ュータをそのネットワークに接続しているネットワーク
・インタフェース経由で、コンピュータに受け取られ
る。同様に、コンピュータは、そのネットワーク・イン
タフェース経由で、そのネットワークにパケットを注入
する。ネットワーク・インタフェースの仕事は、送信と
受信の両方に対して、パケットを効率的に処理すること
である。
は、パケットの意味論上の内容、つまり、そのパケット
が表しているものを、意味している。
いて、パケットは、ネットワーク・インタフェースのバ
ッファで、先ずそのパケットを捕らえることによって、
受信される。適当なときに、ホストコンピュータは、そ
のパケットの到着を知らされる。ネットワーク・インタ
フェースによって、ホストコンピュータは、そのホスト
メモリのフリーバッファに、そのパケットをコピーし
て、そのパケットによって要求されている処理を行う。
さらに最近のネットワーク・インタフェースは、直接記
憶アクセス(DMA)機構を有しているので、そのネット
ワーク・インタフェースに、ホストメモリのフリーバッ
ファにデータを保存させることができる。同様に、メッ
セージが、ホストコンピュータによって送信されると、
そのメッセージは、ネットワーク・インタフェースに、
ホストメモリにおけるそのデータの位置と、所望の宛先
を通知する。ネットワーク・インタフェースは、適当な
長さに分割された、そのデータを、ホストメモリからネ
ットワーク・インタフェースのローカルメモリにコピー
し、その宛先への送信のために、そのデータでパケット
を形成する。さらに最近のネットワーク・インタフェー
スは、出力パケット用データを得るために、ホストメモ
リへの直接記憶アクセスを可能にしている。
送受信するプロセスは、コンピュータ処理オーバーヘッ
ドを伴うが、そのオーバーヘッドは、主に、オペレーテ
ィングシステムの対話とメッセージのコピーに起因す
る。ホストコンピュータにおいて、アプリケーション・
プログラムが、ネットワーク・インタフェースと直接的
に対話せず、むしろホストオペレーティングシステム経
由で間接的に対話することによって、通常、オペレーテ
ィング・システムの対話が発生する。この対話には、4
つのタイプがある。第1は、処理の通知であり、パケッ
トの到着のとき、又は受信側待ち行列の中の未処理のパ
ケット数が、所与のしきい置を越えたとき、あるいはそ
の両方のときに、割込を通して通知される。第2は、パ
ケットを送るために、送信側待ち行列に、あるいは、ネ
ットワーク・インタフェースからの通知に応じた受信側
待ち行列からのどちらかのデータの、アプリケーション
が始動する伝送である。第3は、アプリケーション・プ
ログラムによって使用される仮想メモリアドレスを、ホ
ストメモリに直接的にアクセスするために、ネットワー
ク・インタフェースによって使用される物理的アドレス
に、読み替えることである。現在のシステムにおいて、
送信側では、オペレーティング・システムが、送られる
べきデータについて、ネットワーク・インタフェースに
通知したときに、この対話が発生する。受信側では、オ
ペレーティング・システムが、ネットワーク・インタフ
ェースに、受信メッセージが保存されるべき場所、又は
フリーバッファについて通知するときに、同じオーバヘ
ッドが発生する。第4は、最長経路(クリティカルパス)
にないフリーバッファ待ち行列を満たしておくような、
一般的な段取り機能である。オペレーティング・システ
ムの呼び出しや取り扱いの割込は、通常、高価である。
そのようなオペレーティング・システムの対話は、ホス
ト処理サイクルを浪費するので、アプリケーション・プ
ログラムに使用できるサイクル数を減少させて、メッセ
ージの送受信をさらに遅延させる。
ング・システムに使用されるバッファが、オペレーティ
ング・システムの中の使用可能なフリーバッファのグロ
ーバルプールから選択されて、コネクションに対して、
フリーバッファの固定的な割当てが無くなるために、一
般に、メッセージのコピーによるオーバーヘッドが発生
する。結果として、フリーバッファの位置は、アプリケ
ーション・プログラムが、メッセージデータに期待して
いるホストメモリの最終位置であることを、保証されな
い。従って、オペレーティング・システムは、フリーバ
ッファから所望の最終位置にデータをコピーする。つま
り、メッセージのコピーも、ホストの処理サイクルを浪
費して、アプリケーション・プログラムに利用できるサ
イクル数を減少させて、メッセージの受信をさらに遅延
させる。
タフェースと直接的に対話させるネットワーク・インタ
フェースを使用することによって、オペレーティング・
システムの対話が減少する。しかし、確実に防護するた
めに、アプリケーション・プログラムに使用される仮想
アドレスを、ネットワーク・インタフェースにより使用
される物理的アドレスに置き換える機構が、存在する。
そのようなネットワーク・インタフェースは、例えば、
1994年9月にProceedings of ACM SigComm'94に発
表されたPeter Drushel他著の"Experiences with a Hig
h-Speed Network Adapter: A Software Perspective"に
公表されている。この論文は、仮想アドレスが、その仮
想アドレスから物理的アドレスを生成するために、マッ
ピングエンジンを備えているネットワーク・インタフェ
ースに使用されている、システムの説明をしている。こ
の様なシステムにおいては、オペレーティング・システ
ムは、置き換えを実行する必要はないが、仮想アドレス
を有するネットワーク・インタフェースを提供する。
・インタフェースからアプリケーション・プログラムの
アドレス空間に、直接的にデータを伝送する機構を備え
ることで、メッセージコピー・オーバーヘッドを削減で
きる。このようなシステムは、1994年4月12日に
出願された、Randy B. Osborn発明の米国特許出願第08/
226,541号に公開されている。そのようなシステムで
は、ネットワークで通信されるメッセージは、宛先制御
情報の領域を有していて、その宛先制御情報は、ネット
ワーク・インタフェースによって行われるべき動作と、
場合によっては、その動作の達成に使用される数項のオ
ペランドを識別する。ネットワーク・インタフェースの
機構は、受信メッセージを検査して、ホストコンピュー
タと対話することなく、その宛先制御情報に示されてい
る動作を行う。例えば、メッセージ中のデータが、ホス
トコンピュータによるコピーを排除するために、ネット
ワーク・インタフェースによって決定されたホストメモ
リの場所に、直接的に保存されることが可能である。
的に保存することは、一種のメッセージ処理であり、そ
のような制御情報を用いて、ネットワーク・インタフェ
ースによって実行され得る。他の数種類の動作があり、
それらは、ホストからメッセージを取り出し、ネットワ
ークにそれを注入し、ネットワークからメッセージを受
け取り、さらにそれをホストに保存する間に、メッセー
ジの低レベル処理を必要とする。
フィルタリングである。適切なメッセージ形式で、受信
側は、そのようなメッセージがホストに到達して、ホス
トの資源、特にホストプロセッサ時間を消費する前に、
望まないメッセージを濾し取ること(フィルタリング)が
できる。このようなフィルタリングの用途は、ATMフ
ォーラムスタイルのLANエミュレーション(LANE)
実施の効率を向上することである。そのような実施は、
不明な宛先を見つけるためにメッセージを放送し、LA
NEサーバーに送ったメッセージを繰り返す。これらの
動作は、ホストが望まないメッセージを受け取ることに
なる。通常、ホストコンピュータは、それらをすぐに捨
ててしまうためにだけ、それらのメッセージを処理する
ための資源を消費する。本発明により、メッセージプロ
セッサは、受信メッセージの先頭にある制御情報を検査
でき、従って、ホストコンピュータを巻き込まずに、そ
のメッセージを、廃棄することができる。
メッセージの多重分離である。メッセージの先頭は、メ
ッセージは、ホストのどこに送られるべきかを示すため
の、多重分離項目として、使用され得る。例えば、送信
制御プロトコル(TCP)ポートアドレスは、TCPパケ
ットのヘッダから分離でき、そのポートに適した待ち行
列に、そのパケットを送るために使用できる。ネットワ
ーク・インタフェースとメッセージ・コプロセッサによ
る、この多重分離は、取り出されるメッセージを、ホス
トからの多重分離の支援をすることができる。
それらは、その宛先でメッセージ本体に取る行動を表し
ている情報を、メッセージが運ぶ部類のプロトコルに属
している。従来のプロトコルにおいて、宛先でのホスト
コンピュータは、必要なデータの全てを受け取るまで
は、メッセージの処理を行うことができなかった。上記
のように、この要件は、そのデータをコピーするという
余分なオーバーヘッド、及び、短いメッセージにとって
はさらに重大な、メッセージ処理のためのホスト・プロ
セッサの主要活動の通知オーバーヘッドと割込を、含ん
でいる。ある工業用制御システムは、反射メモリとして
知られている「巡回」メモリを実施するためのリモート
動作を、既に使用している。本発明によるネットワーク
・インタフェースにおけるメッセージ処理支援機能は、
巡回メモリの実装を、さらに容易に、さらに効率的にす
る。
分散直接記憶アクセス(DMA)である。2種類の分散D
MAが、特に有用である:分散サイズは事前に定義され
る、暗示的分散と、メッセージが、メッセージデータと
共にまとめられた分散宛先アドレスを含んでいる、明示
的分散である。暗示的分散の例は、メッセージデータか
らプロトコルヘッダを分離し、そのヘッダをあるバッフ
ァに送り、データを別のバッファに送るが、どちらのバ
ッファも任意の場所に存在可能である。この技術は、T
CP/IP処理に使用され得る。明示的分散DMAにつ
いては、その宛先での低レベル処理は、データとアドレ
スをまとめて、そのデータを適切なアドレスに送ること
ができる。
ッセージ処理用のネットワーク・インタフェースにおけ
る支援機能の提供は、ネットワーク・インタフェースに
複雑さと、従って、コストを増加させる。ネットワーク
・インタフェースにおける低レベルメッセージ処理は、
現在、非標準通信プロトコルにおける研究を必要として
いるので、この追加コストは、一般に、商業用アプリケ
ーションにおける利点を、上回ってしまう。従って、殆
どの商業的に使用可能なネットワーク・インタフェース
は、そのような支援機能を提供していない。
されたもので、ネットワーク・インタフェースを任意の
メッセージ・コプロセッサと接続するための単純なイン
タフェースを備えることによって、コネクションベース
の通信ネットワーク用のネットワーク・インタフェース
におけるメッセージ処理のための支援機能の複雑さを減
らしたネットワーク・インタフェースを提供することを
目的とする。
発明の第1の発明は、プロセッサとメモリを有するホス
トコンピュータを、このホストコンピュータを複数のコ
ンピュータに接続するネットワークに接続するためのネ
ットワーク・インタフェースであって、上記ネットワー
ク・インタフェースの受信側が、上記ネットワーク・イ
ンタフェースにおいて、データとメッセージデータに関
して実施される動作を示す宛先制御情報とを含むメッセ
ージを受け取るための手段と、上記ネットワーク・イン
タフェースにおいて、上記受信メッセージから宛先制御
情報を抽出し、抽出された宛先制御情報を、上記ネット
ワーク・インタフェースに接続されたメッセージ・コプ
ロセッサに通信するための手段と、上記ネットワーク・
インタフェースにおいて上記メッセージ・コプロセッサ
への上記抽出された制御情報の通信後に動作可能な、上
記メッセージ・コプロセッサによって発生された命令と
引数を受け取るための手段と、上記受信した命令と引数
に応じて、上記受信メッセージに関する小集合の動作の
内の少なくとも1つを実行するための手段と、を備えた
ことを特徴とするネットワーク・インタフェースにあ
る。
ッサが、ネットワーク・インタフェースの外部にあり、
さらに、上記ネットワーク・インタフェースが、受信メ
ッセージから宛先制御情報を抽出し、上記メッセージ・
コプロセッサに上記抽出情報を通信し、上記メッセージ
・コプロセッサから上記命令と引数を受け取り、さらに
引数を有する命令を実行するための上記各手段を実装し
ているメッセージ・コントローラを含む集積回路からな
ることを特徴とする請求項1に記載のネットワーク・イ
ンタフェースにある。
フェース内のインタフェースが、上記外部メッセージ・
コプロセッサに接続されたメモリマッピングされたロー
カルバスであることを特徴とする請求項2に記載のネッ
トワーク・インタフェースにある。
ネットワーク・インタフェースを上記メッセージ・コプ
ロセッサに接続しているメモリマッピングされたバス上
の指定メモリ位置に書き込まれることを特徴とする請求
項1に記載のネットワーク・インタフェースにある。
ッサから受け取った上記命令が、上記ネットワーク・イ
ンタフェースによって実行されるべき小集合の動作の中
の1つの動作を表す第1の項目と、1つ以上のオペラン
ドを表す第2の項目とを定義しているフォーマットを有
することを特徴とする請求項1に記載のネットワーク・
インタフェースにある。
ーク・インタフェースを上記メッセージ・コプロセッサ
に接続しているメモリマッピングされたバス上の指定さ
れたメモリ位置から読み込まれることを特徴とする請求
項5に記載のネットワーク・インタフェースにある。
ーク・インタフェースによって実行されるべき可能な動
作毎に独立した1ビットを含むフォーマットを有してい
ることを特徴とする請求項5に記載のネットワーク・イ
ンタフェースにある。
を実行する手段が、上記命令に応じて動作する、上記受
信メッセージからさらに多くのデータを読み取ってそれ
を上記メッセージ・コプロセッサに送るための手段と、
上記メッセージ・コプロセッサからさらに別の命令を繰
り返し受け取りさらに実行するための手段を備えている
ことを特徴とする請求項1に記載のネットワーク・イン
タフェースにある。
を実行する手段が、返信動作命令を作成して、上記ネッ
トワーク・インタフェースの送信側によってアクセス可
能な返信待ち行列に返信命令を保存する手段を備えてい
ることを特徴とする請求項1に記載のネットワーク・イ
ンタフェースにある。
れを実行する手段が、上記宛先制御情報を読み終える前
に、上記受信メッセージを最初の状態に復元するための
手段を備えていることを特徴とする請求項1に記載のネ
ットワーク・インタフェースにある。
・インタフェースによって書き込まれるべきメッセージ
からのデータの指定長を示し、上記命令を受け取ってそ
れを実行する手段が、上記指定長のデータが、上記メッ
セージ・コプロセッサによって指定されたアドレスに書
き込まれるべきであるか否かを判断する手段と、指定さ
れたアドレスから始まる指定量のデータを保存するため
の手段と、を備えていることを特徴とする請求項1に記
載のネットワーク・インタフェースにある。
・インタフェースによって書き込まれるべきメッセージ
からのデータの指定長を示し、上記命令を受け取ってそ
れを実行する手段が、フリーバッファを選択する手段
と、指定量のデータを上記選択されたフリーバッファに
保存する手段と、を備えていることを特徴とする請求項
1に記載のネットワーク・インタフェースにある。
ホスト・プロセッサに対する割込み信号を生成する手段
をさらに備えたことを特徴とする請求項11に記載のネ
ットワーク・インタフェースにある。
割メッセージであり、上記命令を受け取ってこれを実行
する手段が、任意の前の制御区分の処理後に、上記分割
メッセージにおける任意の次の制御区分を自動的に処理
する手段を備えていることを特徴とする請求項1に記載
のネットワーク・インタフェースにある。
するホストコンピュータを、このホストコンピュータを
メッセージを通信するために複数のコンピュータに接続
するネットワークに接続するためのネットワーク・イン
タフェースであって、上記ネットワーク・インタフェー
スの送信側が、上記ネットワーク・インタフェースにお
いて、宛先制御情報を出力メッセージから獲得する方法
を示す送り元制御情報をホストコンピュータから受け取
り、上記ネットワーク・インタフェースに接続されたメ
ッセージ・コプロセッサに通信する手段と、上記ネット
ワーク・インタフェースにおいて、上記メッセージ・コ
プロセッサへの送り元制御情報の通信後に動作可能な、
上記送り元制御情報に応じて、上記メッセージ・コプロ
セッサによって作成された命令と引数を受け取る手段
と、上記出力メッセージの受信によって上記出力メッセ
ージに関して実施される動作を表す上記宛先制御情報を
得るために、上記受け取った命令と引数に応じて小集合
の命令の内の少なくとも1つの命令を実行する手段と、
上記ネットワーク・インタフェースにおいて、上記ネッ
トワーク経由で上記複数のコンピュータの内の少なくと
も1台に送信されるべき上記出力メッセージに上記宛先
制御情報を挿入する手段と、を備えたことを特徴とする
ネットワーク・インタフェースにある。
セッサが、上記ネットワーク・インタフェースに対して
外部にあり、上記ネットワーク・インタフェースが、上
記受け取りおよび通信のための上記各手段を実装し、さ
らに上記外部メッセージ・コプロセッサへのインタフェ
ースを有するメッセージ・コントローラから成る集積回
路であることを特徴とする請求項15に記載のネットワ
ーク・インタフェースにある。
タフェース内のインタフェースが、上記外部メッセージ
・コプロセッサに接続されたメモリマッピングされたロ
ーカルバスであることを特徴とする請求項16に記載の
ネットワーク・インタフェースにある。
上記ネットワーク・インタフェースを上記メッセージ・
コプロセッサに接続しているメモリマッピングされたバ
ス上の指定されたメモリ位置に書き込まれることを特徴
とする請求項15に記載のネットワーク・インタフェー
スにある。
セッサから受け取った上記命令が、上記ネットワーク・
インタフェースによって実行されるべき小集合の動作の
内の1つの動作を表す第1の項目と、1つ以上のオペラ
ンドを表す第2の項目を含むフォーマットを有すること
を特徴とする請求項15に記載のネットワーク・インタ
フェースにある。
ワーク・インタフェースを上記メッセージ・コプロセッ
サに接続している、メモリマッピングされたバス上の指
定されたメモリ位置から読み込まれることを特徴とする
請求項19に記載のネットワーク・インタフェースにあ
る。
ワーク・インタフェースによって実行されるべき可能な
動作毎に独立した1ビットを含むフォーマットを有して
いることを特徴とする請求項19に記載のネットワーク
・インタフェースにある。
れを実行する手段が、上記命令に応じて動作する、上記
ホストコンピュータからさらに多くのデータを読み取っ
てそれを上記メッセージ・コプロセッサに送るための手
段と、上記メッセージ・コプロセッサからさらに別の命
令を繰り返し受け取りさらに実行するための手段を備え
たことを特徴とする請求項15に記載のネットワーク・
インタフェースにある。
ーク・インタフェースによって読み取られるべきデータ
の指定量を示し、上記命令を受け取ってこれを実行する
ための手段が、上記指定量のデータが上記受け取った命
令によって指定されるアドレスから読み取られるべきか
否かを判断する手段と、上記指定されたバッファにある
上記指定量のデータを上記出力メッセージに読み込む手
段と、を備えたことを特徴とする請求項15に記載のネ
ットワーク・インタフェースにある。
ーク・インタフェースによって読み出されるべきデータ
の指定量を示し、上記命令を受け取ってこれを実行する
ための手段が、送信のために上記ホストによって上記ネ
ットワーク・インタフェースに提供された上記バッファ
からのデータを選択する手段と、上記指定量のデータを
上記選択されたバッファから読み取り、上記読み取った
データを出力メッセージに挿入する手段と、を備えたこ
とを特徴とする請求項15に記載のネットワーク・イン
タフェースにある。
割メッセージであり、上記命令を受け取ってこれを実行
する手段が、任意の前の制御区分の処理後に、上記分割
メッセージにおける任意の次の制御区分を自動的に処理
する手段を備えていることを特徴とする請求項15に記
載のネットワーク・インタフェースにある。
数のコンピュータに接続するネットワークとの間で、実
行されるべき動作を表す宛先制御情報と通信チャネルを
表すヘッダとを含むメッセージを送受するために、プロ
セッサとメモリを有する上記ホストコンピュータに接続
されたネットワーク・インタフェースであって、上記ネ
ットワーク・インタフェースが、コントローラと、上記
ネットワーク・インタフェースによって送受されるメッ
セージにおける宛先制御情報の位置に関する情報を含む
関連メモリと、制御情報を上記コントローラからメッセ
ージ・コプロセッサに送信するための手段、上記メッセ
ージ・コプロセッサから小集合の命令の中の1つの命令
を受け取るための手段を備えた上記メッセージ・コプロ
セッサに接続するためのインタフェースであって、上記
コントローラが、上記メッセージ・コプロセッサからの
命令に応じて、出力メッセージの宛先で実行されるべき
動作を表す宛先制御情報を得るための手段、上記宛先制
御情報を上記出力メッセージに挿入するための手段を有
しているものと、上記コントローラが、上記メッセージ
・コプロセッサから受け取った命令に応じて、受け取っ
たメッセージを取り扱うための手段を有している、こと
を特徴とするネットワーク・インタフェースにある。
スを、任意のメッセージ・コプロセッサと接続するため
に、単純なインタフェースを提供することによって、コ
ネクションベースの通信ネットワーク用ネットワーク・
インタフェースにおける、メッセージ処理のための支援
機能の複雑さを減らしている。ある実施の形態におい
て、ネットワーク・インタフェースは、外部メッセージ
・コプロセッサに対する簡単なインタフェースと、メッ
セージから制御情報を抽出し、その制御情報をそのコプ
ロセッサに送り、さらに、そのコプロセッサが出した小
集合の命令に対応するための手段との両方を有する、簡
単な集積回路である。このようにして、ネットワーク・
インタフェースは、メッセージ処理のためのオーバーヘ
ッドを最小限度しか負担せず、一方、外部コプロセッサ
が提供できる普遍性は、全て残している。
ースにおいて、受信側では、メッセージ中の宛先制御情
報は、そのネットワーク・インタフェースによって抽出
され、メッセージ・コプロセッサに送られる。そのメッ
セージ・コプロセッサは、その宛先制御情報に応じて、
そのネットワーク・インタフェースによる、短い待ち時
間の通信、メッセージ・フィルタリング、又は他の形式
のメッセージ処理に対する動作を含む、種々のメッセー
ジ処理動作を実施するように、プログラムされている。
メッセージ・コプロセッサは、そのネットワーク・イン
タフェースが理解する簡単な一組の命令を返す。ネット
ワーク・インタフェースに送られる簡単な一組の命令だ
けを提供し、宛先制御情報が、種々のメッセージ処理動
作を定義することができるようにすることによって、非
常に柔軟性のあるシステムが得られる。
スは、ホストコンピュータによって作成された送り元制
御情報を読み、それをメッセージ・コプロセッサに送
る。そのメッセージ・コプロセッサは、出力メッセージ
の宛先でネットワーク・インタフェースによって処理さ
れるはずの、出力メッセージ用の宛先制御情報を生成す
るために、送り元制御情報に応じて、動作を実施する。
メッセージ・コプロセッサは、小集合の命令の内の1命
令をネットワーク・インタフェースに返すので、ネット
ワーク・インタフェースは、その命令を処理して、宛先
制御情報を出力メッセージに挿入する。
ェースを支援するために、ネットワーク・インタフェー
スは、宛先制御情報を送信メッセージに挿入し、宛先制
御情報を受信メッセージから抽出するための機構を、備
えている。ネットワーク・インタフェースは、メッセー
ジ・コプロセッサへの簡単なコネクションも有してい
る。メッセージ・コプロセッサは、そのネットワーク・
インタフェースが使用するローカルバス上にあり、この
ローカルバスは、現在のコネクション又は仮想チャネル
に関する表形式の情報を保存するために、ネットワーク
・インタフェースが使用するメモリバスである。この場
合、そのコプロセッサは、ネットワーク・インタフェー
スのメモリ空間にマッピングされて、メモリのようにア
クセスされる。
み合わせにより、短い待ち時間の通信(リモート読取り
及び書き込み)、効率的なメッセージのフィルタリン
グ、及び速くて高価ではない多重分離を含めた、多くの
リモート動作が実行可能である。任意のメッセージ・コ
プロセッサを使用することのより、その制御情報が、そ
のコプロセッサが実行できる命令を定義できるようにす
ることにより、受信及び送信メッセージを取り扱うため
の柔軟な方法が、提供される。
を実行する能力は、特に重要である。
に難しいのは、受信メッセージが、リモート書き込みの
ように復号されなければならないだけでなく、送信動作
が、その返信を作成するために、開始されなければなら
ないためである。ネットワーク・インタフェースは、リ
モート書込みと同じようにリモート読取りを取り扱い、
受信側は、メッセージ・コプロセッサに、指定量のメッ
セージデータを書き込み、次に、命令を読む。通常、こ
の命令は、受信側で実施される。しかし、その命令が
「send-reply(返信を送れ)」である場合、ホストメモリ
位置から直接記憶アクセス(DMA)経由で、直接的にア
クセスされたデータに、ある制御情報を付加する処理を
する送信側に使用される機構と同じものを、そのネット
ワーク・インタフェースは、呼び出す。短い通信経路、
又はメッセージ待ち行列は、そのようなリモート読取り
を支援するために、ネットワーク・インタフェースの送
信側と受信側の間に設けられる。そのようなシステムに
より、リモート読取りが、ホスト・プロセッサの介入無
しに実施できるようになる。
ワークにホストコンピュータを接続するためのネットワ
ーク・インタフェースの受信側であり、そこでは、ネッ
トワークは、ホストコンピュータと、複数のコンピュー
タを接続している。そのネットワーク・インタフェース
の受信側は、コネクション経由で、複数のコンピュータ
から受け取ったメッセージから、制御情報を抽出するた
めの機構を備えている。この抽出された制御情報は、そ
のネットワーク・インタフェースに接続された、メッセ
ージ・コプロセッサに通信される。その抽出された情報
の、メッセージ・コプロセッサへの通信後、受信側は、
その受信メッセージに関する動作を実行するために、メ
ッセージ・コプロセッサから命令を受け取りそれを実行
する。
タと、ネットワークを接続するためのネットワーク・イ
ンタフェースの送信側であり、そこでは、ネットワーク
は、ホストコンピュータを、複数のコンピュータに接続
している。そのネットワーク・インタフェースの送信側
は、ホストコンピュータから送り元制御情報を受け取る
ための機構と、その送り元制御情報を、ネットワーク・
インタフェースに接続されたメッセージ・コプロセッサ
に通信するための機構とを、備えている。送信側は、メ
ッセージ・コプロセッサへの送り元制御情報の通信後に
動作可能で、宛先制御情報を得るために、メッセージ・
コプロセッサから命令を受け取って、それを実行するた
めの機構も備えている。その宛先制御情報は、次に、コ
ネクション経由で、複数のコンピュータの内の1台に送
信されるべきメッセージに、挿入される。
ピュータを、複数のコンピュータと接続しているネット
ワークとの間で、メッセージを送受するために、ホスト
コンピュータに接続されているネットワーク・インタフ
ェースであり、そこでは、メッセージは、制御情報と、
通信チャネルを示すヘッダとを有している。そのネット
ワーク・インタフェースは、送信側と受信側用のコント
ローラを備えている。送信側では、コントローラは、ホ
ストから送り元制御情報を受け取る。その送り元制御情
報を、メッセージ・コプロセッサに送るために、コント
ローラは、送信側メッセージ・コプロセッサとインタフ
ェースし、そのメッセージ・コプロセッサから、小集合
の命令の中から1つ以上の命令を受け取る。そのメッセ
ージ・コプロセッサからの命令に応じて、そのコントロ
ーラは、宛先制御情報を、出力メッセージに挿入する。
受信側では、コントローラは、受信メッセージから宛先
制御情報を抽出して、その宛先制御情報を、受信側メッ
セージ・コプロセッサに送る。そのメッセージ・コプロ
セッサは、小集合の命令から1つ以上の命令を返す。そ
のコントローラは、受信した命令に応じて、受信メッセ
ージを処理する。
ネットワーク・インタフェースとメッセージ・コプロセ
ッサとの間のインタフェースは、簡単なメモリマッピン
グされたインタフェースである。
ュータ・システム20は、ネットワーク・インタフェー
ス26経由で、ネットワーク24に接続されたホストコ
ンピュータ22を、備えている。ネットワーク・インタ
フェース26は、それぞれメッセージ34と32の送信
と受信の処理をする送信側30と受信側28とを備えて
いる。そのようなシステムの実施の実状は、下記のよう
な状態である。
コンピュータ22は、4つの待ち行列を保守するが、そ
の中のそれぞれ2つの待ち行列は、通信の送信側と受信
側用である。送信側では、送信待ち行列88(TXin)
は、他のコンピュータに送信されるメッセージの一覧表
である。その一覧表の中の各エントリは、フレーム記述
子と呼ばれ、通常、そのメッセージが送信されるコネク
ション又は仮想チャネル、及びホストメモリ中のメッセ
ージデータの位置の表示を示す。送信完了待ち行列(T
Xdone)90は、対応するメッセージの送信が完了
した後、TXin待ち行列からのエントリが置かれる類
似のエントリの一覧表である。受信側28では、フリー
バッファ待ち行列(RXfree)84は、データ受信に
使用できるホスト中のフリーバッファの一覧表である。
使用済みバッファ一覧表(RXdone)86は、受信メ
ッセージからのデータを保存するために、最近使用され
たバッファを示す。
24にメッセージ34を送信するために、ネットワーク
・インタフェース26は、TXin送信待ち行列88か
ら1つのエントリを読み取り、送られるべきデータのホ
ストメモリ中の位置と、そのメッセージの宛先とを得
る。ネットワーク・インタフェース26は、ホストメモ
リからネットワーク・インタフェースに、そのデータの
適切な長さの小区分をコピーし、また、ネットワークへ
の送信のために、そのデータの小区分をパケットにす
る。現状のシステムでは、この様なコピーは、通常、直
接記憶アクセス(DMA)によって実行される。
るために、ホストコンピュータは、到着メッセージを保
存するために使用できる、ホストメモリの場所又はフリ
ーバッファを、予め識別する。現在使用可能なフリーバ
ッファの一覧表は、RXfree待ち行列84で探すこ
とができる。パケットがネットワーク・インタフェース
に到着すると、ネットワーク・インタフェースは、RX
free待ち行列84からフリーバッファを選択して、
そのメッセージデータをホストメモリのフリーバッファ
にコピーする。別のフリーバッファが、必要に応じて追
加されて使用される。メッセージが終了すると、ネット
ワーク・インタフェースは、割込等でホストコンピュー
タに知らせる。現在のシステムでは、ネットワーク・イ
ンタフェースからホストメモリのフリーバッファへのデ
ータのコピーは、直接記憶アクセス(DMA)、つま
り、ネットワーク・インタフェースによって始動される
効率的なブロック伝送を通して実行される。
ッセージの送受信プロセスは、主にオペレーティング・
システムの対話とメッセージのコピーに起因するコンピ
ュータ処理オーバーヘッドを含んでいる。ホストコンピ
ュータでのアプリケーション・プログラムが、ネットワ
ーク・インタフェースと直接的に対話せず、むしろオペ
レーティング・システム経由で、間接的に対話すること
によって、通常、オペレーティング・システムの対話が
発生する。この対話には、4つの側面がある。第1の側
面は、処理の通知であり、メッセージの到着のとき、又
はRXdone使用済みバッファ一覧表86の中のメッ
セージ数が所与のしきい置を越えたとき、あるいはその
両方のときに、割込を通して通知される。第2の側面
は、メッセージを送るために、TXin送信待ち行列8
8に、あるいは、ネットワーク・インタフェースからの
通知に応じてRXdone使用済みバッファ一覧表86
からの、どちらかのデータの、アプリケーションが始動
する伝送である。第3は、アプリケーション・プログラ
ムによって使用される仮想アドレスを、ホストメモリに
直接的にアクセスするために、ネットワーク・インタフ
ェースによって使用される物理的アドレスに、読み替え
ることである。現在のシステムにおいて、送信側では、
オペレーティング・システムが、送られるべきデータに
ついて、ネットワーク・インタフェースに通知するとき
に、この対話が発生する。受信側では、オペレーティン
グ・システムが、ネットワーク・インタフェースに、受
信メッセージが保存される場所、又はフリーバッファに
ついて通知するときに、同じオーバヘッドが発生する。
第4は、最長経路(クリティカル・パス)ではないRXf
reeを充満させておくような一般的な段取り機能であ
る。オペレーティング・システムの呼び出しや取り扱い
の割込は、通常、高価である。そのようなオペレーティ
ング・システムの割込は、ホスト処理サイクルを浪費
し、アプリケーション・プログラムに使用できるサイク
ル数を減少させて、メッセージの送受信をさらに遅延さ
せる。
ング・システムに使用されるバッファが、オペレーティ
ング・システムの中の使用可能なフリーバッファのグロ
ーバルプールから選択されて、コネクションに対して、
フリーバッファの固定的な割当てが無くなるために、一
般に、メッセージのコピーによるオーバーヘッドが発生
する。結果として、フリーバッファの位置は、アプリケ
ーション・プログラムが、メッセージデータに期待して
いるホストメモリの最終位置であることを、保証されな
い。従って、オペレーティング・システムは、フリーバ
ッファから所望の最終位置にデータをコピーする。つま
り、メッセージのコピーも、ホストの処理サイクルを浪
費して、アプリケーション・プログラムに対するサイク
ル数を減少させて、メッセージの受信をさらに遅延させ
る。
タフェースと直接的に対話させるネットワーク・インタ
フェースを使用することによって、オペレーティング・
システムの対話が減少する。しかし、適当な防護をする
ために、アプリケーション・プログラムに使用される仮
想アドレスを、図20及び図21に示すように、ホスト
メモリにアクセスするために、ネットワーク・インタフ
ェースにより使用される物理的アドレスに置き換える機
構が存在する。そのようなネットワーク・インタフェー
スは、例えば、1994年9月にProceedings of ACM S
igComm '94に発表されたPeter Drushel他著の"Experien
ces with a High-Speed Network Adapter: A Software
Perspective"に公表されている。この様なシステムにお
いては、オペレーティング・システムは、置き換えを実
行する必要はないが、仮想アドレスを有するネットワー
ク・インタフェースを提供する。オペレーティング・シ
ステムの対話は減少するが、オペレーティング・システ
ムは、依然として到着通知を処理している。
ケットは、入力バッファ160(通常、先入れ先出しメ
モリ(FIFO))によって受け取られる。入力バッファ
160の最初のメモリ位置である処理バッファ158
は、ヘッダ処理回路166と出力バッファ156との両
方に、接続されている。出力バッファ156は、通常、
先入れ先出しメモリ(FIFO)である。そのパケットが
目指している仮想チャネルを、他のものの中から判定す
るために、ヘッダ処理回路166は、入力パケットから
ヘッダ情報を抜き取る。この仮想チャネル情報は、任意
のローカルメモリ152とアドレス生成回路162か
ら、仮想アドレスを得るために使用される。アドレス
は、マルチプレクサ163経由で、その仮想アドレスを
物理的アドレスにマッピングするマッピング回路164
に、供給される。処理バッファ158から出力された書
き込まれるべきデータと、マッピング回路164からの
物理的アドレスが、出力バッファ158に入力される。
DMA部154は、データをホストメモリの対応する位
置に直接的に保存するために、出力バッファ156で、
そのデータを処理する。
想アドレスは、例えば、ネットワーク・インタフェース
のコントローラ(図示せず)から、あるいは、アドレス
生成回路112による生成によって、ローカルバス10
3経由で、受け取られる。ホストメモリにアクセスし
て、データを処理バッファ108にコピーするために、
DMA回路104により使用される物理的アドレスを決
定するマッピング回路114に、仮想アドレスが供給さ
れる。ヘッダ処理回路116は、ヘッダ情報を処理バッ
ファ108に供給する。次に、生成されたパケットは、
ネットワークへの送信のために、出力バッファ(FIF
O)110に出力される。
ワーク・インタフェースからアプリケーション・プログ
ラムのアドレス空間に、直接的にデータをコピーする機
構を備えることで、メッセージコピー・オーバーヘッド
を削減できる。このようなシステムは、1994年4月
12日に出願された、Randy B. Osborn発明の米国特許
出願第08/226,541号に公開されている。そのようなシス
テムでは、ネットワークで通信されるメッセージは、宛
先制御情報の領域を有していて、その宛先制御情報は、
ネットワーク・インタフェースによって行われるべき動
作と、場合によっては、その動作の達成に使用される数
項のオペランドを識別する。そのような宛先制御情報の
形式は、図23の(a)乃至(d)に関連して、さらに詳し
く、以下に記述する。ネットワーク・インタフェースの
機構は、受信メッセージを検査して、ホストプロセッサ
と対話することなく、その宛先制御情報に示されている
動作を行う。例えば、メッセージ中のデータが、ホスト
コンピュータによるコピーを排除するために、ホストメ
モリのネットワーク・インタフェースによって決定され
た場所に、直接的に保存されることが可能である。
・オーバーヘッドを削減するための機構を備えた、コン
ピュータ・システム40を示している。図22におい
て、コンピュータ・システムは、ネットワーク・インタ
フェース44経由で、ネットワーク24に接続されたコ
ンピュータ22を備えている。このシステムにおいて、
メッセージ48と46は、送信側で供給した宛先制御情
報50を含んでいる。受信側のネットワーク・インタフ
ェースは、通信遅延(待ち時間)と受信側のホストコンピ
ュータ22での通信の影響を減らすために、その宛先制
御情報50を処理する。特に、受信側の処理52では、
ネットワーク・インタフェースのローカルメモリ54に
ある状態情報にアクセスするために、その宛先制御情報
を使用する。RXfree(フリーバッファ待ち行列)内
の次のフリーバッファの位置よりも、むしろ、データが
直接的に保存されるホストメモリ(図示せず)の特定の位
置のアドレスを得るために、その状態情報が処理され
る。同様に、送信メッセージ48を生成するために、送
信側の処理56は、ホスト・コンピュータ・メモリ(図
示せず)から直接的にデータを読み取り、さらに、ロー
カルメモリ54から状態情報を使用して得られた宛先制
御情報を付加する。
0のデータ内容を表している略図である。図23の(a)
に示す最も簡単な種類の宛先制御情報は、その宛先で行
われるべき動作の表示300と、その動作に使用される
オペランドの表示302とを、含んでいる。そのオペラ
ンドは、その宛先のネットワーク・インタフェースに保
存されている情報、又はその送り元で供給された情報、
あるいはその両方への参照である。304で示されてい
るように、データ長(サイズ)とチェックサム情報も、提
供される。宛先制御情報50(図22参照)のさらに複雑
な構成は、図23の(b)に示すようにその宛先制御情報
のサイズの表示306(暗示的、又は明示的な表示)を含
む。この形式により、オペランド308の数が変わって
も使用できる。
メッセージの先頭に挿入される。どちらにしても、図2
3の(c)に示すようなATM、つまり先頭のセル310
が、一般に、宛先制御情報を含み、残りのセル312と
最後のセル314がデータを搬送する場合、メッセージ
は、数個のセルから構成される。しかし、図23の(d)
の316と318で示されるように、メッセージが、数
個の制御区分で構成されることも可能である。そのよう
なメッセージは、分割メッセージと呼ばれる。そのよう
な場合、各制御区分は、各制御区分の先頭セル310の
先頭に、宛先制御情報50(図22参照)を有している。
ッセージ・コプロセッサに対する簡単なインタフェース
を設けることにより、ネットワーク・インタフェースに
おけるメッセージ処理支援の複雑さを減らしている。そ
のメッセージ・コプロセッサの実行に応じて定義され
た、任意の組のメッセージ処理動作の実行のために、宛
先制御情報50が処理される。任意のメッセージ・コプ
ロセッサに対する簡単なインタフェースの使用により、
低レベルメッセージ処理のための支援機能付きのネット
ワーク・インタフェースが、経済的に製造されるように
なる。そのようなシステムは、単に少ない待ち時間だけ
でなく、多種のメッセージ処理動作やそのアプリケーシ
ョンにおける実験や応用も可能にする。
明において、コンピュータ・システム60は、ネットワ
ーク・インタフェース66経由で、ネットワーク24に
接続されているホストコンピュータ22を備えている。
そのネットワーク・インタフェースは、VLSI又はL
SI技術を使用した集積回路として、実用化される。ネ
ットワーク24は、同様に、ネットワークに接続されて
いる他のコンピュータ・システム(図示せず)に、このコ
ンピュータ・システム60を接続している。この発明の
ある実施の形態において、ネットワークは、非同期伝送
モード(ATM)等のコネクションベースのネットワーク
である。通信処理を支援するために、ホストコンピュー
タは、従来のシステムにおけるようなリング待ち行列8
4、86、88、及び90を備えている。しかし、その
ような実施の形態においては、送信側待ち行列88と9
0におけるエントリは、宛先制御情報を得る方法を示し
ている下記の送り元制御情報を含んでいる。
フェースは、宛先制御情報76の無いメッセージ70と
72が送信されるか、又は受信されたときに、標準的な
ネットワーク・インタフェースとして動作する。メッセ
ージが、宛先制御情報76付きで送信又は受信された場
合、そのネットワーク・インタフェースは、任意のメッ
セージ・コプロセッサ68及び64を通じて、要求され
た処理を行う。つまり、そのネットワーク・インタフェ
ースは、ローカルバス69経由で送信側処理用のメッセ
ージ・コプロセッサ68と、受信側処理用メッセージ・
コプロセッサ64とに接続されるインタフェースを備え
ている。
スは、送信メッセージ・コプロセッサ68が処理をする
送り元制御情報74をこのインタフェースを通じて、ホ
ストコンピュータ22から送信側メッセージ・コプロセ
ッサ68に送る。その送り元制御情報は、出力メッセー
ジに挿入されるべき宛先制御情報76を得るための方法
を、メッセージ・コプロセッサ68に示す。命令を表す
返信78は、送信側のメッセージ・コプロセッサ68に
よって、ネットワーク・インタフェース66に返され
る。この命令は、その出力メッセージに挿入されるべき
宛先制御情報76を得るための方法を表している。
されているように、メッセージ処理で使用される宛先制
御情報を含んでいる場合、その宛先制御情報は、76に
示すように、受信側のメッセージ・コプロセッサ64
に、送信される。次に、その受信側のメッセージ・コプ
ロセッサ64は、ネットワーク・インタフェースに返信
62を与え、その返信は、そのメッセージ上の、ネット
ワーク・インタフェース66によって実行される動作を
表す小集合の命令の内の1つの命令を表している。
・コプロセッサ68に通信し、また、送信側メッセージ
・コプロセッサ68からネットワーク・インタフェース
66に、返信78を通信するための簡単なインタフェー
スは、ネットワーク・インタフェースと、送信側メッセ
ージ・コプロセッサ68との間の、アプリケーション・
プログラミング・インタフェースの見本を提供する。同
様に、宛先制御情報76を受信側メッセージ・コプロセ
ッサ64に通信し、返信62を、受信側メッセージ・コ
プロセッサ64からネットワーク・インタフェース66
に通信するための簡単なインタフェースは、ネットワー
ク・インタフェースと、受信側メッセージ・コプロセッ
サ64との間の、アプリケーション・プログラミング・
インタフェースの見本を提供する。
セッサの能力と、それが処理する対応する制御情報用の
構文法(シンタックス)とによってのみ制限される、任意
の一組のメッセージ処理機能を実行するために、送信側
と受信側のメッセージ・コプロセッサは、プログラムさ
れ得る。ユーザは、そのメッセージ・コプロセッサが、
ネットワーク・インタフェース66に備えられた数個の
命令の内の1つの命令を表す返信を常に返す限りは、そ
のメッセージ・コプロセッサによって実行されるべき動
作における、その制御情報の構文法を定義できる。送信
側と受信側のメッセージ・コプロセッサは、図1に暗示
するように物理的に独立したものである必要はない。そ
れらは、1台の物理的なものを多重化してもよい。
ットワーク・インタフェースは、ローカルバス69経由
で、ローカルメモリ94にも接続されている。このロー
カルメモリは、例えば、現在使用中の仮想チャネルに関
する状態情報の保守のために、使用される表を含むこと
ができる。この実施の形態において、受信又は送信メッ
セージが、宛先制御情報76を含んでいるかどうかは、
そのメッセージが通信しているコネクション、又は仮想
チャネルによって、決定される。ローカルメモリ94の
表のエントリを使用して、標識が付けられる「特別に標
識が付けられた」仮想チャネルは、宛先制御情報76を
有していると考えられるが、他のコネクションや仮想チ
ャネル上のメッセージは、そのような宛先制御情報76
を有しているとは考えられない。
のネットワーク・インタフェースとメッセージ・コプロ
セッサへのインタフェースの実施については、図2乃至
18に関連して、以下に詳述する。受信側メッセージ処
理の支援については、先ず、図2、図4及び図5に関連
して、さらに詳述する。
フェースの受信側82は、ローカルバス69に接続さ
れ、そのローカルバスには、任意の受信側メッセージ・
コプロセッサ64と任意のローカルメモリ94が、接続
されている。そのネットワーク・インタフェースの受信
側82は、一般に、下記のように動作する。宛先制御情
報76を有するメッセージが受信されて、83で、その
内容が宛先制御情報76とデータ85に分割される。ヘ
ッダ77は、仮想チャネル(VC)データと他の状態情報
を得るために、処理される。その仮想チャネル、状態、
及び宛先制御情報は、ローカルバス69に供給され、そ
のローカルバスからそれらの情報が、受信側メッセージ
・コプロセッサ64によって受信される。そのメッセー
ジ・コプロセッサ64の処理の完了後、返信命令と引数
62が、メッセージ・コプロセッサによって、ローカル
バス69経由で、ネットワーク・インタフェースに返さ
れる。そのネットワーク・インタフェースは、コントロ
ーラ87を備え、そのコントローラは、データ85をホ
ストメモリの指定された位置に保存する等の指示を表し
ている、データ85を処理するために、返信62を使用
する。
ク・インタフェースの構成要素の、さらに詳しいブロッ
ク図である。図3において、ローカルメモリは、RX
VC表として知られる受信側仮想チャネル表96を、有
している。RX VC表の各エントリに対して、この仮
想チャネルが、メッセージ処理動作を支援するか否かの
表示98が提供され、支援する場合は、当初の宛先制御
情報の長さの表示91が、提供される。その表には、残
りのセルを、93で表されているメッセージの同じ制御
区分に保存するための物理的アドレス等の、VC単位の
他の状態情報も含まれる。受信側メッセージ・コプロセ
ッサ64と共に、ローカルメモリ94は、ローカルバス
69経由で、受信側(RX)メッセージ処理コントローラ
150に接続されている。RXメッセージ処理コントロ
ーラ150は、入力メッセージに関して、メッセージ処
理ステップをとるか否かを決定するRX VC表を使用
し、また、そのような動作を実行するメッセージ・コプ
ロセッサとの通信の制御も行う。
IFO160によって受信され、次に、そのメッセージ
は、通常、入力FIFO160の最初の記憶位置であ
る、処理バッファ158に送信される。その処理バッフ
ァ158は、ネットワーク・インタフェースによる処理
のために、各セルを保存する。宛先制御情報とヘッダ
は、処理バッファ158から読み取られる。ヘッダ処理
回路166は、メッセージからヘッダ情報を読み取っ
て、VC情報を判定し、それをメッセージ処理コントロ
ーラ150に供給するために設けられ、そのコントロー
ラ150は、受信側仮想チャネル表(RX VC表)96
を使用して、メッセージ処理動作が、実行されるべきで
あるかを判断する。そのようなメッセージ処理が実行さ
れない場合は、通常のネットワーク・インタフェースに
おける場合と同様に、メッセージ処理が続行される。こ
の様態において、図20に関連して上述したように、ネ
ットワーク・インタフェースの受信側は、アドレス生成
回路162、マルチプレクサ163、マッピング回路1
64、出力FIFO156、及びDMA回路154を具
備している。
ットワーク・インタフェースの受信側82の一般的な動
作を、以下に記述する。ネットワーク・インタフェース
の受信側82には、入力メッセージ72から宛先制御情
報76を抽出して(図2参照)、それを受信側メッセージ
・コプロセッサ64に供給するという、全般的な仕事が
ある。上記のステップ後に、仮想チャネルに、特別に標
識が付けられていて、つまり、メッセージ処理が実行さ
れるべきであることを、ネットワーク・インタフェース
が、確認した場合、ネットワーク・インタフェースは、
RX VC表96を使用して(図3参照)、宛先制御情報
の長さを判断する。次に、メッセージ処理コントローラ
150は、処理バッファ158中のこの宛先制御情報に
アクセスして、それを受信側メッセージ・コプロセッサ
64に送る。そのメッセージ・コプロセッサは、このデ
ータを宛先制御情報と判断して、適切な動作をする。そ
の動作は任意であり、メッセージ・コプロセッサのプロ
グラマに任される。そのネットワーク・インタフェース
は、次に、メッセージ・コプロセッサ64からの返信6
2(図1参照)を読み返す。
ネットワーク・インタフェースと、メッセージ・コプロ
セッサ68とのインタフェースについて、以下に記述す
る。受信側82では、ネットワーク・インタフェース
は、2つのメモリ・マッピングされた区画を経由し、さ
らにローカルバス69を経由して、メッセージ・コプロ
セッサと通信する。使用される区画数は、実施の形態毎
に異なる;しかし、インタフェースは、一般に、少なく
とも2つの区画を必要とする。第1の区画は、宛先制御
区画と呼ばれるが、受信メッセージからの宛先制御情報
を、メッセージ・コプロセッサに書き込むために使用さ
れる。この区画は、開始区画と呼ばれる区画も含み、こ
れは、宛先制御区画に書き込まれた宛先制御情報の処理
を開始するべきであることを示すために、メッセージ・
コプロセッサに、開始信号を与える目的で使用される。
第2の区画は、返信区画と呼ばれるが、メッセージ・コ
プロセッサからネットワーク・インタフェースへの返信
を保存する。ネットワーク・インタフェースは、適当な
ときに、この区画から返信を読み出す。その返信区画
は、ホストメモリにアクセスするためのアドレス、ロー
カルメモリにおけるアドレス、メッセージ・コプロセッ
サでのアドレス、又は他の引数等の引数、及び命令を通
信するために、2つ以上の区画に小分割されることもあ
る。
ースは、適切なデータ、例えば、受信メッセージからの
宛先制御情報を、宛先制御区画に書き込み、次に、命令
を開始区画に書き込む。メッセージ・コプロセッサは、
その宛先制御情報を処理し、その結果、その情報は、返
信区画に書き込まれる小集合の命令の中の1つの命令
と、可能な場合、1つ以上の引数になる。
は、そのインタフェースを簡単にするために、受信側
が、メッセージ・コプロセッサから認識する小集合の命
令を有している。これらの命令は、下記のように、ネッ
トワーク・インタフェースによって実行される簡単な動
作に、対応している: 1.そのメッセージを破棄する(メッセージのフィルタ
リングのため)。 2.そのメッセージの先頭に、その制御情報を復元す
る。 3.フリーバッファに、指定量の残りのメッセージを保
存する。 4.メッセージ・コプロセッサに指定されたアドレス
に、指定量のその残りのメッセージを保存する。 5.そのメッセージから、さらに多くのデータを、メッ
セージ・コプロセッサに送り、別の命令を読み返す。 6.リモート読取り動作に対するような返信を始動す
る。 7.ホストコンピュータに対して割込を始動する。
であって、制限をするものではないことを理解された
い。
ータであり、その中のある区分は命令を表し、1つ以上
の他の区分は引数を表す。例えば、1バイトのデータが
命令を表す。第2のバイトが、引数を表す。その命令
は、一組になった少数の命令の内のどれを実行するか
を、単に示すだけである。
特定の形式と返信区画が、例Aに説明されている。
りである: 1.ATM AAL0又はAAL5フレームの最初のセ
ルが到着すると、ネットワーク・インタフェースは、レ
ジスタRX MP DATAによって指定された物理的アドレスで
始まるメッセージ・コプロセッサに、そのセルの先頭に
ある、N(32ビット)ワードの制御情報を、書き込む。
Nは、仮想チャネル(VC)表で指定され、そのセルが、
AAL5の最終フレームであれば、10以下でなければ
ならず、そうでなければ、12以下でなければならな
い。 2.ネットワーク・インタフェースは、レジスタRX_MP_
CNTL_BASEの内容(RX MP CNTL BASEによって示される内
容)によって指定される物理的アドレスに、VCチャネ
ル番号とGO信号を含む単一ワードを、書き込む。 3.ネットワーク・インタフェースは、<RX MP CNTL BA
SE>+4の位置で、そのメッセージ・コプロセッサから、
命令ワードを読み返す。 4.ネットワーク・インタフェースは、以下に詳述する
ように、その命令を解釈する。グローバルRX MP enable
フラグがセットされ、VC毎のフラグMP on rxvcもセッ
トされたときだけ、このメッセージ処理活動が行われ
る。RX MP enableフラグがクリヤされ、しかし、MP on
rxvcはセットされていれば、MP on rxvcがクリヤされ
る。 2.形式 2.1 コプロセッサの項目 メッセージ・コプロセッサは、受信側のメッセージ処理
のために下記の項目を有する: アドレス 項目名 機能 RX_MP_CNTL_BASE+0 RX_MP_GO_VC 開始信号と仮想チャネル (書き込み) RX_MP_CNTL_BASE+4 RX_MP_CMD 命令処理(読み取り) RX_MP_CNTL_BASE+8 RX_MP_EXT_ADDR 外部アドレス(読み取り) RX_MP_CNTL_BASE+12 RX_MP_MSG_AGR1 返信メッセージの引数1 (読み取り) RX_MP_CNTL_BASE+16 RX_MP_MSG_ARG2 返信メッセージの引数2 (読み取り) RX_MP_CNTL_BASE+20 RX_MP_MSG_ADDR 返信メッセージのデータアドレス (読み取り) RX_MP_DATA+0 なし フレーム区分の最初のセルから制 から 御情報を受け取るメモリ区画 RX_MP_DATA+48 まで 2.2 GO VC項目 コプロセッサの場所MP_RX_GO_VCに書き込まれる値は、
32ビット長で、下記の形式を有する。 31 30 29 23 19 15 0 g c crc 未使用 長さ 終了 VCチャネル − GO[31]は、その項目が正規のGO命令であるかどうか
を示すgo_flagである。 − GO[30]は、RX_MP_DATAに書き込まれ、このGO命令に
よって送信された情報が、同じ制御区分からの情報の続
き(つまり、send_moreオプションにおけるような、同じ
セルからのデータの多重書き込み)であるかを示すcont_
flagである。 − GO[29]は、セル内容のCRC-10チェックの結果であ
る。 − GO[23:20]は、RX_MP_DATAにたった今、書き込まれ
たワード数である。 − GO[19:16]は、RX_MP_DATAにおける終了位置、つま
り、ベースRX_MP_DATAからコプロセッサに書き込まれる
最後のワードのオフセット)である。 − GO[15:0]は、VCチャネル番号である。 − 他の項目は、未使用である。 2.3 命令項目 コプロセッサの場所MP_RX_CMDから読み返される命令
は、32ビット長で、下記の項目を有する: − [31:24]は、命令である。 − [23:16]は、命令の引数1である。send_moreモード
で、[19:16]は、そのコプロセッサから読み取られる追
加ワード数を示す。send_replyモードでは、[23:16]
は、8ビットの制御情報であり、MSG FIFOのMSG_CNTL経
由で、送信側に渡される。これら2つのモードは、相互
に排他的である。 − [15:2]は、命令の引数2である。length_modeで
は、バッファに保存されるデータ量Pをワード数で表し
ている。 − [1:0]は、2ビットの外部命令である。MP_problem
モードでは、最下位ビットは、MP_RX_enableがクリヤさ
れるべきであるかを示す。 命令は、下記の形式を有する: 31〜 MP_fault send_more send_reply restore length_mode buff_mode skip_ 24 1 0 1st_FD store_rest int_1st_FD cont − CMD[31]--MP_problemは、コプロセッサの問題が発
生したことを示す。CMD[31]が表明されると、MP_on_rxv
cがクリヤされ、その命令は変更されて、「restore(復
元せよ)」に変わり、それにそのフレーム全体をRXfree
バッファに保存する"store_rest"が後続し、さらにホス
トコンピュータに、その問題が通知される。CMD[0]がセ
ットされると、その問題は、致命的な故障となり、MP_R
X_enableはクリヤされ;そうでない場合は、その問題
は、MPエラーである。CMD[0]の値が何であっても、MP
_on_rxvcはクリヤされ、VC用に書き込まれる次のフレ
ーム記述子は、"MP_prob"を表し、さらに、VC用の次
のフレーム記述子を保存した後で、「RX MP interrupt
(受信側MP割込み)」が生成される。 − CMD[30]--send_moreは、ネットワーク・インタフェ
ースは、さらに多くの制御ワードをコプロセッサに送
り、さらに命令を再読すべきであることを示す。セット
されれば、数個の追加ワードが、命令引数1によって指
定される。send_more命令は、セルがAAL5の最終フ
レームである場合は10ワードまで、そうでない場合は
12ワードになるまで、何度も繰り返される。無限ルー
プを避けるために、少なくとも1ワードは送られる。任
意の点で、制御情報の総ワード数が、この数値を超える
と(send_more命令又はVCエントリで指定された当初
のcntl_lenのどちらかによって)、状態項目が"MP_size
_err"を表すこと以外は、MPエラーと同じ動作が発生
する。 − CMD[29]--send_replyは、ネットワーク・インタフ
ェースは、送信側に送信を始動させるために、MSG
FIFOに、メッセージを入れるべきであることを表
す。命令の引数1は、8ビットの制御情報をMSG項目
に含めることを指定する。MSG FIFOが空いてい
ない場合は、状態項目が、"MP_msg_full"を示す以外
は、MPエラーと同じ動作が行われる。 − CMD[28]--resoreは、ネットワーク・インタフェー
スは、コプロセッサに書き込まれた制御情報の全ワード
を、そのフレームの先頭に、復元するべきであることを
示す。これは、制御情報をそのフレームに戻させ、"pee
k"動作に影響する。制御情報をコプロセッサに送ること
は、通常は、"pop"動作である。 − CMD[27]--length_modeは、ネットワーク・インタフ
ェースは、入力フレームからの次のPバイトを、CMD[2
6]によって示される宛先に書き込むべきであることを示
す。命令の引数2は、Pを指定する。 − CMD[26]--buff_modeは、ネットワーク・インタフェ
ースは、位置RX_MP_EXT_ADDRか、又はRXfreeから
取り出したバッファからのどちらかから読み出した外部
アドレスで始まるバッファに、書き出すべきであること
を示している。この外部アドレスは、仮想チャネルとし
て解釈され、そのVCに適合した変換表を使用して、物
理的アドレスに変換される。 − CMD[25]--skip_1st_FDは、ネットワーク・インタフ
ェースが、このフレーム用の最初のフレーム記述子を、
RXdoneに書き出すことを省くべきか否かを表す。 − CMD[24]--store_restは、ネットワーク・インタフ
ェースが、上記の動作に従った後、そのフレームの残り
を、RXfreeから得た1つ以上のバッファ(通常の
送信側の動作におけるように)に保存するべきか否かを
表す。そうでない場合は、ネットワーク・インタフェー
スは、その入力フレームの残りを廃棄する。 − CMD[1]--int_1st_FDは、そのフレーム用の最初のフ
レーム記述子が、RXdoneに書き込まれるときに、
RXdoneフレーム割込を生成する(skip_1st_FDで
ない場合)。 − CMD[0]--contは、制御区分が後続することを示す。
セットされていると、上記の全ての動作の終了後、ネッ
トワーク・インタフェースは、次のセル境界までの入力
フレームの残りのデータを廃棄し、次に、上記のプロト
コルを繰り返す。 2.4 RX VC表のエントリ MPの受信側は、各RX VC表エントリの最初のワー
ドの下記の8ビットを、使用する。MP_control項目の形
式は、下記の通りである: − MP_control[7]は、MPがこのVCに対して使用可
能であるかを示すMP_on_rxvcである。 − MP_control[6]は、その受け取ったセルが、制御区
分の先頭であり、MPが、そのVCに対して使用可能で
あれば、MPセルとして解釈されなければならないかを
示すstart_of_segmentである。 − MP_control[5]は、FD1であり、MP状態情報を保持
するために使用される1制御ビットである。 − MP_control[4]は、FD0であり、MP状態情報を保持
するために使用されるもう1つの制御ビットである。 − MP_control[3:0]は、cntl_lenであり、つまり、M
Pが、そのVCに対して使用可能であれば、ネットワー
ク・インタフェースが、そのVCの最初のセルの受け取
りの際に、先ず、メッセージ・コプロセッサに送らなけ
ればならない制御情報のワード数である。FD1とFD0は、
命令の実行時に使用される制御状態を定義する。
ジの処理に対して、非常に大きい柔軟性を与える。制御
情報の長さは、固定量の宛先制御情報を、コプロセッサ
に送ることによって、メッセージ毎に変更でき、そのコ
プロセッサは、さらに多くの制御情報を送るように要求
することができる。制御区分の数も、変更することが可
能である。コプロセッサは、別の制御区画が直後に追随
していることを、表すことができる。明示的な分散DM
Aは、アドレスデータ対毎に、ある制御区分にマッピン
グする。暗示的な分散DMAは、メッセージの途中でバ
ッファを変えることによって、支援される:つまり、指
定量のデータを、外部から供給されるか、又はRXfr
eeからの、あるバッファに送ることができ、その次
に、残りのデータを、1つ以上のバッファに送ることが
できる。あるバッファにヘッダを送り、別のバッファに
データを送るために処理をするTCP/IPに、この柔
軟性が利用できる。この場合、ネットワーク・インタフ
ェースは、そのメッセージからのゼロデータをコプロセ
ッサに書き込む。TCP/IPのヘッダ長に等しい量の
データを保存した後で、そのバッファを変更することを
表している命令を、そのコプロセッサは、単に返すだけ
である。
コプロセッサは、全てのメッセージの処理を、殆ど実行
し、また、実行可能な動作は、プログラム可能であっ
て、全く、ユーザー次第である。ネットワーク・インタ
フェースは、データスタックからメッセージデータを取
り出して、一組の数個の単純な命令として解釈される情
報を読み戻す。
メッセージ・コプロセッサ64との間の対話処理につい
て、図4と図5を参照しながら、以下に記述する。先
ず、ネットワーク・インタフェースは、受信メッセージ
が、特別に標識が付けられた仮想チャネル用であるか否
かを判断する。そうであれば、図4と図5の処理が、R
X VC表96に示すように、予め指定された量のデー
タを、メッセージ・コプロセッサ64に書き込む、ネッ
トワーク・インタフェースのステップ170から始ま
る。ネットワーク・インタフェースは、メッセージ・コ
プロセッサに命令して、その情報を処理させ、返される
べき命令をステップ172で待つ。そのネットワーク・
インタフェースは、指定回数のローカルバスサイクル
を、単に待つだけで、その命令のために、メモリマッピ
ングされたインタフェースの指定メモリ位置を読む。こ
の命令は、次に、ネットワーク・インタフェースによっ
て解釈される。その命令ワードは、命令とその命令に必
要な引数を表すような形式であり、従って、2つ以上の
項目を有している:1つは、命令の名称用であり、残り
の1つ以上は引数用である。その命令が故障を表す場合
(ステップ174)、メッセージ処理動作は、復元動作に
よって元に戻され、そのメッセージは、通常のメッセー
ジとして取り扱われる。その命令が、ステップ176で
判定されるように、コプロセッサに、さらに情報を送れ
という要請であれば、ステップ178で、さらにデータ
がコプロセッサに送られ、ネットワーク・インタフェー
スは、再度、ステップ172で待つことになる。ステッ
プ176と178により、所与のコネクション向けの可
変長の制御情報が可能になる。
送れ)」であるか否かを判定するステップ180で継続
される。この命令は、他のコンピュータにメッセージを
送るために、ステップ182でリモート返信動作を呼び
出すが、これについては図7乃至図15に関連して以下
に詳述する。
うな、復元動作であれば、入力メッセージから読み出さ
れたデータは、ステップ186で、処理バッファ158
にあるそのメッセージに返される。処理は、ステップ1
88から200まで継続し、ステップ189で判定され
るように、そのメッセージからの指定量のデータを、指
定のアドレスにあるメモリ区画か(ステップ190)、又
はフリーバッファ一覧表RXfreeからのフリーバッ
ファに(ステップ192)書き込むことを含む。ステップ
196で判定されるように、そのメッセージ処理が完了
するか、又はメッセージ・プロセッサからの命令が、そ
のメッセージの残りの部分を廃棄することを示している
場合は、フレーム記述子がRXdone待ち行列に書き
込まれる。そのフレーム記述子が書き込まれた後、メッ
セージ・コプロセッサからのその命令が、ホストプロセ
ッサに対する割込を生成するべきであることを示してい
る場合(ステップ199で判定されるように)、その割
込が、ステップ201で生成される。メッセージデータ
が残っていて、また、ステップ202で判定されるよう
に、この残ったデータが保存されるべきである場合に
は、そのメッセージは、ステップ204で、RXfre
eから選択されたフリーバッファに保存される。最後
に、ステップ200で判定しているように、そのメッセ
ージが、後続の制御区分を有している場合、現在の制御
区分の終わりまでのデータが、ステップ205で廃棄さ
れ、処理は、そのメッセージの次の制御区画についてス
テップ170で、再開される。そうでない場合は、その
データはステップ206で廃棄されて、処理が終了す
る。
したが、ネットワーク・インタフェースにおけるメッセ
ージ処理支援の送信側について、図6から図16までに
関連して、さらに詳細に、以下に記述する。
ク・インタフェース、及び送信側メッセージ・コプロセ
ッサ68による対話とデータの流れを、概略図で示して
いる。送信において、ホストコンピュータは、送り元制
御情報74と、任意のデータ73とを含むメッセージを
生成する。その送り元制御情報は、以下に詳述される
が、出力メッセージに挿入されるべき宛先制御情報、そ
れの存在する場所、あるいはそれの生成方法を示してい
る。そのメッセージが、ネットワーク・インタフェース
に送られると、そのネットワーク・インタフェースは、
75で示すように、そのデータ73から送り元制御情報
74を分離して、その送り元制御情報を処理する。その
送り元制御情報74は、返信78を返す送信側メッセー
ジ・コプロセッサ68に送られる。その返信は、ネット
ワーク・インタフェースへの命令であり、出力メッセー
ジ用の宛先制御情報76を含むか、又は宛先制御情報7
6の位置を示すか、あるいは宛先制御情報76の生成方
法示している。その宛先制御情報は、次に、71に示す
ように、データ73に由来するか又は返信命令78に指
定されるデータ72と結合されて、出力メッセージ70
となる。
と図8に関連して記述する。送り元制御情報は、一般
に、TXin待ち行列のフレーム記述子に由来する。そ
のフレーム記述子及び送り元制御情報は、多種の形式が
ある。図7に示すようなこの発明のある実施の形態にお
いて、フレーム記述子400は、データ毎に、4バイト
で4行の区画を有している。第1行において、第1バイ
ト402は状態情報で、第2バイト404は、下記の短
命令モードでの送り元制御情報用に使用される。次の2
バイト406は、VCチャネル番号用である。次の行4
08は、下記で参照されるように、バッファアドレス又
はデータポインタである。第3行410は、短命令モー
ドにおける4バイトの追加送り元制御情報であるか、又
はATMAAL5用のCPCS後書き情報である。最後
の行は、1バイトのモード情報414,1バイトのバッ
ファ識別子416,2バイトのバッファ長418を含ん
でいる。
式の送り元制御情報を予期しているかを示す、仮想チャ
ネル毎の表のエントリを維持するか、又は、フレーム記
述子が、送り元制御情報の形式を示す。
な方法は、項目404と項目410を使用して、図7に
示すように、フレーム記述子に、直接的に符号化するこ
とである。そのフレーム記述子400は、項目408に
送られるべきデータ420へのポインタも含んでいる。
この「短命令」形式により、送り元制御情報の長さは、
そのフレーム記述子の長さによって制限される。しか
し、送り元制御情報及びフレーム記述子は、1回のメモ
リ動作で、ネットワーク・インタフェースに送られるの
で、この形式は、短い待ち時間用に好適である。
の送り元制御情報の直接符号化の代わりに、図8のフレ
ーム記述子424にあるように、送り元制御情報を含ん
でいるホストメモリ422の位置への、項目408の参
照子又はポインタが使用される。これらの実施の形態の
どちらにおいても、送り元制御情報は、命令として、送
信側のメッセージ・コプロセッサに送られるべきデータ
である。
するための、可能な範囲を示している。図9に示される
形式では、フレーム記述子426が、送り元制御情報を
全く含んでいない。項目408を使用して表される、送
られるべきデータ430は、適当な場所に、宛先制御情
報428を、既に含んでいる。このモードは、仮想チャ
ネルに対する送信側が、メッセージ処理の支援をせず、
宛先が行うときに、使用される通常モードである。
は、図7におけるように、項目410を使用して、フレ
ーム記述子で直接的に符号化された送り元制御情報と、
項目408にデータ434へのポインタとを含んでい
る。ネットワーク・インタフェースは、出力メッセージ
を生成するために、送信側メッセージ・コプロセッサ6
8によって生成された宛先制御情報を、フレーム記述子
によって示されたデータに付加する。
は、図7におけるように、項目410を使用して、フレ
ーム記述子で直接的に符号化された送り元制御情報と、
未使用のデータポインタとを含んでいる。送信側メッセ
ージ・コプロセッサ68は、宛先制御情報440の位置
と、データ442が読み取られるべきホストメモリの位
置との両方を計算する。
報は、フレーム記述子に組み込まれていない;その代わ
りに、フレーム記述子のデータポインタが、図8におけ
るように、送り元制御情報の位置を示している。図12
に示すフレーム記述子444において、送られるべきデ
ータ446は、項目408を使用して参照される位置に
ある送り元制御情報に後続する。送信側メッセージ・コ
プロセッサ68は、宛先制御情報450も生成する。
使用して、送り元制御情報454に後続する任意のデー
タ452は無視され、その代わりに、送られるべきデー
タ456の位置が、送り元制御情報454の中の情報に
基づいて、送信側メッセージ・コプロセッサ68によっ
て、計算される。送信側メッセージ・コプロセッサ68
は、宛先制御情報450も生成する。
458は、バッファ460の連結された一覧表を表して
いる。第1のバッファの最初の部分は、送り元制御情報
462であると解釈される。宛先制御情報450の位置
と、供給された送り元制御情報に基づいて、送られるべ
きデータ464の位置とを、送信側メッセージ・コプロ
セッサ68が計算する。一旦、このコプロセッサ指定の
データが送られると、ネットワーク・インタフェース
は、連結一覧表における第1バッファの残りのデータを
無視して、連結一覧表における第2以降のバッファから
データを送る。
る、ネットワーク・インタフェースの構成要素のブロッ
ク図である。図15において、メッセージ処理コントロ
ーラ100は、ネットワーク・インタフェースによるメ
ッセージ処理を制御する。ローカルバス69は、送信側
メッセージ・コプロセッサ68と、可能ならば、送信側
仮想チャネル(TX VC)表97を含むローカルメモ
リ94とに、接続されている。そのTX VC表は、各
仮想チャネル毎に、メッセージ処理のために、その仮想
チャネルに特別に標識が付けられているか否かを示す表
示95を有し、そうである場合には、その表は、送信側
メッセージ・コプロセッサに送るために、送り元制御情
報の長さの表示99を有する。TX VC表97は、そ
の仮想チャネルが、送り元制御情報を直接的に符号化す
る、フレーム記述子を使用しているか否かの表示(図示
せず)も、含んでいる。図示のように、TX VC表9
7は、他のVC状態情報も、含んでいる。
ネットワーク・インタフェースの送信側80は、宛先制
御情報76を出力メッセージ70に付加するという全般
的な仕事がある(図6参照)。その宛先制御情報76をメ
ッセージに付加するための最も簡単な方法は、図9のよ
うに、ホストコンピュータに、この機能を実行させるこ
とであるが、この方法は、一般に、ホストコンピュータ
の、さらに多くの関与と通信のオーバーヘッドを必要と
する。送信側80に判断させて、宛先制御情報を出力メ
ッセージに付加させるために、ホストコンピュータは、
メッセージ・コプロセッサ向けの送り元制御情報を含む
フレーム記述子と、任意のメッセージデータとを、TX
in待ち行列に入れる。フレーム記述子は、図9から図
14に示すような形式のいずれかであるが、それには制
限されない。ネットワーク・インタフェースは、先ず、
適切なときに、TXin待ち行列から、あるフレーム記
述子を取り出す。そのフレーム記述子は、先ず、それが
対応する仮想チャネルを判断し、ヘッダ処理回路116
を使用して、ヘッダを作成するために使用される。メッ
セージ処理動作の必要が無い通常のメッセージに対し
て、ネットワーク・インタフェースは、図19から図2
1に関連して既に記述したように、そのメッセージを処
理する。しかし、その仮想チャネルに、特別に標識が付
けられている場合は、ネットワーク・インタフェース
は、フレーム記述子を使用して、その送り元制御情報の
位置を識別するか、又は、そのフレーム記述子から直接
的に送り元制御情報を読み取る。次に、ネットワーク・
インタフェースは、指定の処理を実行するために、送り
元制御情報74を、送信側メッセージ・コプロセッサ6
8に送る。送信側メッセージ・コプロセッサは、次に、
送り元制御情報74を使用して、宛先制御情報76と、
TX VC表97によって指定されたメッセージの位置
にある、送信メッセージの中の宛先制御情報に付加する
データの位置を判断する。宛先制御情報は、送信側メッ
セージ・コプロセッサに書き込まれた送り元制御情報に
由来するか、又は送信側メッセージ・コプロセッサによ
って実行された任意の処理から、例えば、コプロセッサ
のレジスタから来るものかのどちらかであり、処理バッ
ファ108で出力メッセージに挿入される。そのメッセ
ージデータは、当初に待ち行列に入れられたメッセージ
の残りからか、又は送信側メッセージ・コプロセッサに
よって供給されたアドレスから来るかのどちらかであ
る。処理バッファ108で、メッセージに付加されるデ
ータにアクセスするために、そのアドレスは、アドレス
生成モジュール112、マッピングモジュール114、
及びDMAモジュール104によって処理される。
ンタフェースの送信側と、送信側メッセージ・コプロセ
ッサ68との間のインタフェースについて、さらに詳述
する。送信側80では、ローカルバス69及びメモリマ
ッピングされた区画経由で、ネットワーク・インタフェ
ースは、メッセージ・コプロセッサ68と通信する。使
用される区画数は、実施状態で変化する;しかし、イン
タフェースは、一般に、少なくとも2つの区画を必要と
する:1つは送り元制御情報をメッセージ・コプロセッ
サに送るための区画で、送り元制御区画と呼ばれ、他の
区画は、返信を読むため区画である。その送り元制御区
画は、開始命令と、VC番号又は状態情報等の他の情報
とを受け取る要求区画を含んでいる。命令と、宛先制御
情報又はアドレス等の関連引数とを、ネットワーク・イ
ンタフェースに通信するために、返信区画は、メッセー
ジ・コプロセッサによって使用される。
ースは、適切なデータ、例えば、送り元制御情報を送り
元制御区画に書き込み、次に、開始命令を書き込む。メ
ッセージ・コプロセッサは、送り元制御情報を処理し
て、宛先制御情報、アドレス、又はたの引数と共に、返
信区画に書き込まれる小集合の命令の中の1命令にす
る。
は、そのインタフェースを簡単にするために、メッセー
ジ・コプロセッサから認識する小集合の命令を有してい
る。これらの命令は、下記のような、ネットワーク・イ
ンタフェースによって実行される簡単な動作に、対応し
ている: 1.メッセージ・コプロセッサから読み込まれた1メッ
セージのデータを構成する。 2.そのメッセージから読み出された1メッセージのデ
ータを構成する。 3.指定されたアドレス、例えば、ホストメモリのアド
レスから読み出された1メッセージのデータを構成す
る。 4.メッセージ・コプロセッサ、及びメッセージ又は指
定されたアドレスのどちらかから読み出された、1メッ
セージのデータを構成する。 5.メッセージ・コプロセッサに指定量のデータを書き
込み、さらに、別の命令を読み返す。 6.故障が、メッセージ・コプロセッサに発生してい
る。
あって、制限をするものではないことを理解されたい。
命令構造は、一般に、数バイトのデータであり、その中
のある区分は命令を表し、1つ以上の他の区分は引数を
表す。例えば、1バイトのデータが命令を表す。第2の
バイトが、引数を表す。その命令は、小集合の命令の内
のどれを実行するかを、単に示すだけである。
例が、例Bに示されている。
ドでの仮想チャネルに対して、下記の通りである: 1.VCが短命令モードであり、そのVC用フレーム記
述子が、TXinにあるときは、ネットワーク・インタ
フェースは、そのフレーム記述子に含まれている8.5
バイトの制御情報を、TX VC表にある、一時的な場
所に保存する。 2.VCが短命令でなく、フレームが、先ず送信用に予
定されているときは、ネットワーク・インタフェース
は、VCチャネル番号、ある追加制御情報、及びGO信
号を含む1ワードが追随する、2ワードの制御情報を、
レジスタTX_MP_CNTL_BASEの内容によって指定された物
理的アドレスから始まる位置に、書き込む。VCが短命
令モードではない場合、フレーム制御区分毎の開始点
で、ネットワーク・インタフェースは、指定された当初
のワード数の送り元制御情報を、その制御区分の初めか
ら、TX_MP_DATA_INで始まる連続的なアドレスに、書き
込みをする。次に、ネットワーク・インタフェースは、
VCチャネル番号、コプロセッサに、たった今書き込ま
れたワード数、GO信号を含む1ワードを、<TX_MP_CNT
L_BASE>+8の場所に、書き込む。 3.ネットワーク・インタフェースは、<TX_MP_CNTL_BA
SE>+12に含まれている物理的アドレスから、コプロセッ
サからの命令ワードを読み返す。 4.ネットワーク・インタフェースは、以下に詳述する
ように、その命令を解釈する。グローバルTX_MP_enable
フラグがセットされ、VC毎のフラグMP_on_txvcもセッ
トされたときだけ、このメッセージ処理活動が行われ
る。MP_on_txvcはセットされ、しかし、TX_MP_enableフ
ラグがクリヤされていれば、フレーム記述子を、その状
態項目において"MP_disable"を有するTXdoneに書
き込むことによって、そのフレームは、打ち切られる。 2.形式 2.1 コプロセッサの項目 メッセージ・コプロセッサは、受信側のメッセージ処理
のために下記の項目を有する: アドレス 項目名 機能 TX_MP_CNTL_BASE+0 TX_MP_CNTL1 制御情報の第1ワード (書き込み) TX_MP_CNTL_BASE+4 TX_MP_CNTL2 制御情報の第2ワード (書き込み) TX_MP_CNTL_BASE+8 TX_MP_GO_VC 開始信号とVCチャネル (書き込み) TX_MP_CNTL_BASE+12 TX_MP_CMD 命令処理(読み取り) TX_MP_CNTL_BASE+16 TX_MP_ADDR 宛先制御情報アドレス (読み取り) TX_MP_CNTL_BASE+20 TX_MP_EXT_ADDR 外部アドレス(読み取り) TX_MP_DATA_IN+0 なし ホストから送り元制御情報を受け から 取るメモリ区画 TX_MP_DATA_IN+48 まで 2.2 制御情報 メッセージ・コプロセッサに送られる制御情報は、フレ
ーム記述子に含まれている。短命令モードに対しては、
8.5バイトの送り元制御情報が、下記のようにフレー
ム記述子から抽出される。TX_MP_CNTL1は、バッファI
Dの内容からの3.5バイトとバッファ長項目である。
TX_MP_CNTL1の特定の形式は、下記の通りである: ネットワーク・インタフェース(TX VC表)によっ
て維持されているバッファ長は、後にコプロセッサ命令
によって変更される。バッファIDは、変更されない。
TX_MP_CNTL2は、フレーム記述子のCPCS項目の内容
からの4バイトである。最終的な1バイトの制御情報
は、8ビットのVPI/VCI項目から抽出されて、G
O_VC命令経由で渡される。 2.3 GO_VC項目 コプロセッサの場所MP_TX_GO_VCに書き込まれる値は、
32ビット長で、下記の形式を有する。 31 30 29 28 27 26 24 23 16 15 0 g c t m s 未使用 制御/長さと終了 VCチャネル − GO_VC[31]は、その項目が正規のGO命令であるかど
うかを示すgo_flagである。 − GO_VC[30]は、TX_MP_DATA_INに書き込まれ、このGO
命令によって送信された情報が、同じ制御区分からの情
報の続き(つまり、send_moreオプションにおけるよう
な、同じセルからのデータの多重書き込み)であるかを
示すcont_flagである。 − GO_VC[29]は、AALタイプフラグである。ATM
タイプAAL0に対しては0であり、タイプAAL5に
対しては1である。 − GO_VC[28]は、モード表示である:短命令モード
(送り元制御情報がTX_MP_CNTL1とTX_MP_CNTL2にある)
であれば0であり、長命令モード(送り元制御情報が<T
X_MP_DATA_IN>から始まる場所に保存されている)であ
れば1である。 − GO_VC[27]は、送り元を示す:0は、TXinを示
し;1は、MSG FIFOを示す。 − GO_VC[23:16]は、短命令モードにおける1バイトの
送り元制御情報である。 − GO_VC[23:20]は、長命令モードにおいて、TX_MP_DA
TA_INに、たった今書き込まれたワード数である。 − GO_VC[19:16]は、長命令モードの場合、TX_MP_DATA
_INにおける終了位置である。 − GO_VC[15:0]は、VCチャネル番号である。 2.4 命令項目 コプロセッサの場所MP_TX_CMDから読み返される命令
は、32ビット長で、下記の項目を有する: − [31:24]は、命令である。 − [23:16]は、命令の引数1である。M、つまり、TX_M
P_ADDRによって指定されるアドレスから読み取られるワ
ード数を示す。 − [15:2]は、命令の引数2である。length_modeで
は、送信されるフレーム用に取り出すために、データ量
をワード数で表す。 − [1:0]は、外部命令情報である。MP_problemモード
では、CMD[0}は、MP_TX_enableがクリヤされるべきであ
るかを示す。 命令は、下記の形式を有する: 31〜 MP_fault send_more unused read_coproc length_mode buff_mode no_FD_ 24 1 0 wr fetch_rest unused cont − CMD[31]--MP_problemは、コプロセッサの問題が発
生したことを示す。CMD[0]がセットされると、その問題
は、致命的な故障となり、MP_TX_enableはクリヤされ
る。そうでない場合は、その問題は、MPエラーであ
る。どちらの場合でも、その状態項目にある"MP_prob"
を有するTXdoneに、フレーム記述子を書き込むこ
とによって、そのフレームは、打ち切られる。 − CMD[30]--send_moreは、ネットワーク・インタフェ
ースは、さらに多くの制御ワードをコプロセッサに送
り、さらに命令を再読すべきであることを示す。セット
されれば、数個の追加ワードが、命令引数1によって指
定される。詳細は、受信側のsend_moreに対するものと
同じである。 − CMD[28]--read_coprocは、ネットワーク・インタフ
ェースは、コプロセッサから読み出すべきであることを
示す。セットされると、ネットワーク・インタフェース
は、TX_MP_ADDRによって与えられる物理的アドレスから
開始するワードを読むことによって、最初のMワードの
送信されるフレーム(通常は、宛先制御情報)を形成す
る。 − CMD[27]--length_modeは、ネットワーク・インタフ
ェースは、データバッファから読み込まれたPバイトを
有するコプロセッサから、それが存在するならば、最初
のMバイトに、従うべきであることを示す。このモード
は、データ場長を変更し、分割表にあるbuf_len項目
を、Pに変更する。Pが最初に指定されたバッファ長より
大きい場合は、MP_pend_errを使用して、エラーが報告
される。Pが最初に指定されたバッファ長より小さい場
合は、そのバッファは、切り捨てられて、最初のバッフ
ァにある残りのデータは、送られない。命令の引数2
は、Pを指定する。 − CMD[26]--buff_modeは、ネットワーク・インタフェ
ースは、外部アドレス又は入力フレームから読み取るべ
きであるか否かを示している。セットされていると、ネ
ットワーク・インタフェースは、位置TX_MP_EXT_ADDRか
ら読まれた仮想チャネルから始めて、命令引数2で指定
された量のデータを取り出す。 − CMD[25]--no_FD_wrは、ネットワーク・インタフェ
ースが、フレーム記述子を、TXdoneに書き出すこ
とを、省くべきか否かを表す。フレーム記述子を書き込
むことは、任意であり、この命令ビットで制御される。 − CMD[24]--fetch_restは、ネットワーク・インタフ
ェースが、上記の動作に従った後、そのフレーム記述子
によって示された、そのフレームの残りからのデータを
有する上記のデータに、従うべきであるか否かを表す。
そうでない場合は、ネットワーク・インタフェースは、
そのフレーム記述子によって示された、そのフレームの
残りを廃棄する。 − CMD[0]--contは、制御区分が後続することを示す。
セットされていると、上記の全ての動作の終了後、ネッ
トワーク・インタフェースは、次のセル境界までの入力
フレームの残りのデータを廃棄し、次に上記のプロトコ
ルを繰り返す。 − 他の項目は、未使用である。 2.5 TX VC表のエントリ 送信側のMPは、各TX VC表エントリの最初のワー
ドの下記の12ビットを、使用する。MP_control項目の
形式は、下記の通りである: − MP_control[0]は、MPが、このVCに対して使用
可能であるかを示すMP_on_txvcである。 − MP_control[1]は、そのフレーム記述子が、送信側
で作成されたものか、つまり、MSG FIFOで見つ
かったものかを示すMP_src_fRxである。 − MP_control[2]は、バッファ長エラーが発生したこ
とを示すMP_pend_errである。 − MP_control[3]は、ネットワーク・インタフェース
が、フレーム区分の最初のセルを分割していることを示
すStart_segmentである。 − MP_control[4]は、そのVCが、短命令モードであ
るか否かを示すshort_commandである。 − MP_control[5]は、ネットワーク・インタフェース
は、フレーム記述子をTXdoneに書き込むべきでは
ないことを示すskip_FDである。 − MP_control[6]は、ネットワーク・インタフェース
は、そのフレームの残りを廃棄すべきであることを示す
discard_restである。 − MP_control[7]は、未使用である。 − MP_control[11:8]は、ネットワーク・インタフェー
スが、長命令モードでコプロセッサに書き込むべきであ
る最初のワード数の制御情報を示す。送信側が、VC用
のフレーム記述子をTXdoneに書き込む場合は、常
に、MP_src_fRxビットと、MP_pend_errビットのORを
取って、そのフレーム記述子の状態項目に入れる。
ある。宛先制御情報の長さは、固定量のデータを、コプ
ロセッサに送ることによって、メッセージ毎に変更で
き、そのコプロセッサは、制御情報を表している、さら
に多くのデータを要求することができる。コプロセッサ
は、TXinにあるメッセージの先頭部分から、又はT
Xinにあるフレーム記述子の他の項目から、送り元制
御情報を得ることができる。宛先制御情報は、コプロセ
ッサ又はTXinのメッセージから得られる。最後に、
送信メッセージデータは、TXinにある残りのデータ
又はコプロセッサによって提供されるアドレスから得ら
れる。TXinの各エントリによって、多重制御区分
(宛先制御情報とデータを含む)が、送信メッセージ中
に生成される。
コプロセッサは、全てのメッセージの処理を、殆ど実行
して、実行される処理の種類は、プログラム可能であっ
て、全く、ユーザー次第である。ネットワーク・インタ
フェースは、データをメッセージ・コプロセッサに書き
込み、小集合の命令として解釈する情報を読み戻すだけ
である。
ジ・コプロセッサとの間の対話処理について、図16を
参照しながら、以下に記述する。先ず、ネットワーク・
インタフェースは、TX VC表にアクセスするため
に、TXin待ち行列から、次のメッセージの仮想チャ
ネル情報を取り出す。その仮想チャネルが、メッセージ
処理のために特別に標識が付けられている場合、図16
の処理が実行される。
インタフェースは、メモリマッピングされたインタフェ
ースの送り元制御区画経由で、送り元制御情報をメッセ
ージ・コプロセッサに書き込む。そのメッセージが、指
定量の制御データを有していない場合は、エラーが発生
し、メッセージ処理動作が終了するか、又は例外処理手
順が実行される。次に、ネットワーク・インタフェース
は、メッセージ・プロセッサに、任意の必要な処理を実
行するように命令する。ネットワーク・インタフェース
は、必要に応じて、数サイクルのローカルメモリバスサ
イクルの間、待機し(ステップ122)、次に、メモリマ
ッピングされたインタフェースの返信区画にある、メッ
セージ・コプロセッサによって書き込まれた命令ワード
を読み込む。ネットワーク・インタフェースは、次に、
この命令ワードを解釈する。その命令ワードは、その命
令と、その命令に必要な引数を表すために、フォーマッ
トされ、従って、2つ以上の項目を含んでいる:1つ
は、命令の名称用であり、残りの1つ以上は引数用であ
る。その命令が故障を表す場合(ステップ124)、処理
は終了する。その命令が、ステップ126で判断される
ように、コプロセッサに、さらに情報を送れという要請
であれば、ステップ128で、さらに多くのデータがコ
プロセッサに送られ、ネットワーク・インタフェース
は、再度、ステップ122で待つことになる。その命令
が、ステップ130で判定されるように、コプロセッサ
からデータを読み出す要求であれば、ステップ132
で、メモリマッピングされたインタフェースの返信区画
から、指定量のデータが読み出され、さらに、出力メッ
セージの一部を形成するために使用される。
の別の位置から、又はホストメモリにある交代バッファ
の指定アドレスから、読み出されるべきであるか否かを
判断するステップ134に続く。次に、指定量のデータ
が、ステップ136、137、又は138で適切な供給
源から読み出され、出力メッセージに形成される。ステ
ップ140で判断するように、そのメッセージの残り
が、出力メッセージに使用されるべきである場合は、そ
のデータは、ステップ142で出力メッセージとして形
成される。そうでない場合は、別の制御区分が開始する
ときは(ステップ143)、処理された制御区分の残り
は、ステップ145で廃棄され、そのメッセージ中の次
の制御区分が、ステップ120から始まる処理をされ
る。後続の制御区分が無い場合は、そのメッセージの残
りは、ステップ144で廃棄される。最後に、必要に応
じて、フレーム記述子が、ステップ145と146で、
TXdoneに書き込まれる。
信付きリモート動作を実行するための、このシステムの
使用について、この発明によるこの様態の、ある実施の
形態を図示している図17と図18を参照しながら説明
する。リモート動作は、書き込みと読み取り動作から成
っている。ホストの介入が無いリモート書き込み動作
は、上記のアーキテクチャによって支援される。リモー
ト書き込み動作に対して、メッセージ中の宛先制御情報
は、そのメッセージに、そのデータを書き込むホストメ
モリの位置を決めるために、復号される。リモート読み
取りが、本質的にさらに難しいのは、受信メッセージ
は、リモート書き込みのように復号されなければならな
いだけでなく、最初の送り元に返信するために、受信終
了時に送信動作が、開始されなければならないためであ
る。そうであっても、リモート読取りの支援も大切であ
るのは、書き込み動作だけしか行わないアプリケーショ
ンは、少ないからである。他の動作も、1通の返信メッ
セージが、最初の送り元に送られるようにするので、リ
モート読取りをするのに似たステップを含んでいる。例
としてリモート読取りを使って、以下の記述を行ってい
る。しかし、支援され得る動作の種類は、返信を当初の
送り元に送らせる動作の全ての動作を、含んでいる。
て、支援される。第1部分は、ある命令、つまり、宛先
でのリモート書込みの処理である。そのリモート書込み
には、読み取り命令、アドレス、長さ、及び返信の場所
とアドレスが、含まれている。第2部分は、ホストコン
ピュータによる、その命令の解釈である。第3部分は、
要求された読み取り動作に対する返信を含む、戻りのリ
モート書込みの開始である。残念ながら、リモート読取
り動作の実行は、最長経路にあるホストコンピュータ
に、その読み取り命令の解釈をさせるので、読み取り要
求やホストコンピュータへのロードに対応した待ち時間
が、受け入れ難い長さになる。例えば、図19から図2
1、及び図22に示すシステムにおいて、ホストコンピ
ュータは、入力メッセージの処理をして、送信待ち行列
にエントリを生成し、さらに、ネットワーク・インタフ
ェースによって、そのエントリが処理されるのを待たな
ければならない。従ってこの実施形態は最後の解決手段
である。
ーク・インタフェースは、リモート読取り動作に、ホス
トコンピュータを回避させる支援機能を有している。図
17を参照すると、この支援機能は、ネットワーク・イ
ンタフェースの受信側82と、送信側80との間に配置
されたリモート読取り待ち行列220を、備えている。
そのリモート読取り待ち行列は、単一要素待ち行列又は
FIFOと同様に小さい。リモート読取り待ち行列22
0の要素222は、それが属している仮想チャネルの表
示223と、引数224とを含んでいる。ある実施の形
態において、リモート読取り待ち行列の要素222の形
式は、TXin待ち行列88にあるフレーム記述子22
5の形式と同一(最初の数バイトにある、数ビットの状
態ビットを除いて)である。代わりに、リモート読取り
待ち行列のエントリ220は、フレーム記述子225の
形式とは違う数個の引数を含んでいる。フレーム記述子
225とリモート読取り待ち行列222の両方で、最初
の数バイトは、223と226に示すような、仮想チャ
ネルの表示を含んでいる。
ようにして、入力リモート読取り動作を処理する。先
ず、ネットワーク・インタフェースは、リモート書込み
と同様に、リモート読取り処理する。つまり、受信側
は、指定量のメッセージデータ、例えば、宛先制御情報
76を、受信側メッセージ・コプロセッサに書き込み、
次に、命令を読み取る。通常は、受信側メッセージ・コ
プロセッサからの命令は、受信側82で実行される。し
かし、その命令が「send reply(返信を送れ)」命令で
あれば、DMA経由でホストメモリ位置からアクセスさ
れたデータに、ある制御情報を付加するために、ネット
ワーク・インタフェースは、送信側80によって使用さ
れる同じ機構を呼び出す。
特定の実施の形態の動作を、詳細に説明している。他の
実施の形態も可能である。特に、図1に示すようなシス
テムは、リモート読取り待ち行列220を含むように、
変更できる。この実施の形態において、図18に示すよ
うに、メッセージは、メッセージ処理用に標識が付けら
れたコネクションで受信される(ステップ230)。受信
側82における他の動作に関して、ネットワーク・イン
タフェースは、ステップ232で、指定量の宛先制御情
報をメッセージ・コプロセッサに送る。この宛先制御情
報は、そのメッセージを、リモート読取り要求として識
別して、その読み取りのアドレスとサイズを与える。図
17を参照すると、返信メッセージ502に宛先制御情
報500を生成する支援をするために、宛先制御情報
は、ある返信制御情報504も含んでいる。図18を参
照すると、メッセージ・コプロセッサは、ステップ23
4で、ネットワーク・インタフェースが受信メッセージ
から、さらに多くのデータを送るべきであることを示す
命令を返す。ネットワーク・インタフェースは、返信の
場所とアドレスとして解釈されるように、要求された量
のデータ、つまり、返信制御情報504をメッセージ・
コプロセッサに送る(ステップ236)。ステップ238
で、メッセージ・コプロセッサは、返信メッセージ用の
宛先制御情報500を形成して、後で読み出されるべき
メモリ位置に、それを保存する。メッセージ・コプロセ
ッサは、ステップ240で、「send reply(返信を送
れ)」命令を、ネットワーク・インタフェースに返す。
reply"命令を検出すると、メモリマッピングされたイン
タフェースの命令区画にある、1つ以上の追加データ項
目から、1つ以上のメッセージ引数を読み取る(ステッ
プ242)。その引数は、送信側が、宛先制御情報を生
成するために使用するデータと、出力メッセージ用デー
タのための送り元とを含んでいる。ステップ244で、
ネットワーク・インタフェースの受信側82は、送信側
80が、後で処理をする仮想チャネルと、メッセージ引
数との両方を表しているメッセージを、リモート読取り
待ち行列に入れる。そのリモート読取り待ち行列220
を使用することにより、ネットワーク・インタフェース
の送信側80は、TXin待ち行列に、ホストメモリへ
のエントリの書き込みを、避けることができる。そのリ
モート読取り待ち行列の実施形態によっては、待ち行列
に入っているデータが、単一ワードか、又は多重データ
ワードであることもあり得る。
的にポーリングして、あるときに、送信側80は、その
リモート読取り待ち行列220から、そのエントリを取
り出す(ステップ246)。そのリモート読取り待ち行列
の、そのデータを使用して、送信側は、そうでなければ
フレーム記述子から得るはずのデータを、獲得する。こ
の情報を得るために、ホストコンピュータにアクセスす
ることなく、送信側は、送り元制御情報を含むフレーム
記述子を処理できるので、受信側は、リモート読取り待
ち行列に、その送り元制御情報を生成するべきである。
そうでなければ、送信側は、リモート読取り待ち行列の
データを、特別に取り扱わなければならない。図17に
示すような実施の形態において、リモート読取り待ち行
列の要素は、TXinにあるフレーム記述子と全く同じ
形式を有しているので、送信側は、リモート読取り待ち
行列の要素を、TXinのエントリと全く同じように処
理できる。特に、指示されたコネクションは、特別に標
識が付けられても、付けられなくてもよい。特別に標識
が付けられていない場合、送信側は、送信するバッファ
を表しているTXinからのフレーム記述子と全く同様
に、リモート読取り待ち行列の要素を処理する。コネク
ションに特別に標識が付けられている場合は、送信側
は、メッセージ処理、つまり、送り元制御情報として、
リモート読取り待ち行列の要素から、送信側メッセージ
・コプロセッサへの引数を保存することを、始動する。
ップ250で、任意の適切な命令、例えば、宛先制御情
報を読むための「read from coprocessor(コプロセッサ
から読め)」という命令と、ホストメモリからデータを
DMAするための「read fromexternal address(外部ア
ドレスから読め)」命令を、返す。次に、ネットワーク
・インタフェースは、メッセージ・コプロセッサから読
み取られて、以前に保存された宛先制御情報500を、
そのメッセージの先頭に置き、さらに、読み取り返信デ
ータ用のホストメモリの所与の位置から、DMAを始動
する(ステップ252)。つまり、要求元で使用される要
求されたデータと、制御情報とを含むメッセージが、要
求元に送られる。
・コプロセッサ用制御情報や返信命令構造の実施の形態
は、例Cに示されている。
信メッセージを送るように命令する。受信側は、send_r
eply命令に後続し、受信側から送信側へのインタフェー
ス情報を通信するために、FIFO待ち行列を使用す
る。各待ち行列の要素は、下記の4つの項目を有してい
る: MSG_CNTL[32];タグ、返信メッセージ用VCチャネル番
号、及びある制御情報を含んでいる。 MSG_ARG1[32];3.5バイトの引数を含み、その引数
は、バイト単位の返信メッセージデータ長を含んでい
る。 MSG_ARG2[32];4バイトの引数を含んでいる。 MSG_ADDR[32];返信メッセージデータ用仮想アドレスを
含んでいる。 2.動作 受信側は、位置RX_MP_MSG_ARG1から下位28ビットを、
MSG_ARG1に(TX_MP_CNTL1に送られるべきデータ)、位
置RX_MP_MSG_ARG2から32ビットをMSG_ARG2に(TX_MP_
CNTL2に送られるべきデータ)、及び位置RX_MP_MSG_ADD
Rから読み取られたアドレスを、MSG_ADDRに書き込む。
送信側は、下記のように、フレーム記述子の項目と同様
の形式である、これらのFIFO項目を解釈する: MSG_CNTL;フレーム記述子の第1項目に対応する。VC
チャネル番号、1バイトの制御情報、及び以下に示す8
ビットの項目を含んでいる。 MSG_ARG1;フレーム記述子の第4項目に対応し、2つの
項目を含む:特定の解釈の無い12ビットの項目と、所
与のデータバッファに送るために、データ長として解釈
される16ビット項目である。上位4ビットは、未使用
である。 MSG_ARG2;フレーム記述子の第3項目に対応し、引数を
含んでいる。 MSG_ADDR;フレーム記述子の第2項目に対応し、読むべ
きデータバッファのベースアドレス(仮想アドレス)を含
んでいる。これらのレジスタを使用して、受信側は、処
理のために送信側に渡されるフレーム記述子を構成す
る。送信側は、真のフレーム記述子と全く同じ、この工
夫された「フレーム記述子」を処理する。例え送信側が
現在TXinをポーリングしていなくても、送信側は、
継続的にMSG FIFOをポーリングしなければなら
ない。宛先であるVCが空きになって、そのフレーム記
述子を受け入れ可能になるまで、フレーム記述子は、M
SGFIFOに残る。 3.形式 MSG_CNTLは、下記の形式を有している: 31 30 29 28 25 24 23 16 15 0 present rsvd daa_num aal_type 0 0 pti_lsb 0 cntl-info VC channel これは、フレーム記述子の第1項目の形式に近く構成さ
れている。MSG_CTRL[31]は、MSG待ち行列要素が、占
有しているかを示すビットである。MSG_CTRL[30]は、留
保。MSG_CTRL[29]は、リング待ち行列の設定識別子であ
る。MSG_CTRL[28]は、AALタイプの返信メッセージで
ある:AAL5又はAAL0MSG_CTRL[27:26]は、未使
用。MSG_CTRL[25]は、内容タイプの表示項目の最下位ビ
ットである。MSG_CTRL[24]は、未使用。MSG_CTRL[23:1
6]は、8ビットの制御情報である。MSG_CTRL[15:0]は、
返信メッセージ用VCチャネルである。 4.実施 send_reply要求を引き起こす別のメッセージが到着した
ときに、MSG FIFOが空いていない場合は、ネッ
トワーク・インタフェースは、MP_on_rxvcをクリヤし、
そのメッセージに関する「restore(復元せよ)」命令
を出し、さらに、そのメッセージ全体を、ホストコンピ
ュータが取り扱うRXfreeバッファに、ダンプす
る。ネットワーク・インタフェースには、メッセージ処
理を再度可能にするために、RX VC表のMP_on_rxvc
ビットを、リセットする責任がある。受信側は、MSG_CN
TLのビットをセットしてはいけないので、そのメッセー
ジの第1セルが処理されるまで、MSG待ち行列要素
を、送信側が使用できるようにする。これにより、送信
側が返信メッセージの処理を開始する前に、その第1セ
ルのデータのメッセージ処理と保存が、完了する。その
返信メッセージは、そのメッセージの後続セルに含まれ
ているデータを、参照してはならないが、その理由は、
その返信メッセージに対する送信側の処理が、それらを
参照するときには、それらのセルは、まだ到着していな
い場合があるからである。
形態は、受信側と送信側の両方のメッセージ処理支援機
能を利用している。送信側メッセージ・コプロセッサへ
のアクセスに対する競合は、返信メッセージを処理する
ための適切な時間が経過するまで待つことによって、ネ
ットワーク・インタフェースにより取り扱われる。
が、前記のものは、単に説明のためであり、制約をする
ものでなく、例としてのみ表されたものであることは、
当業者には明確なはずである。多くの変更や実施の形態
は、通常の技術の範囲内であり、添付する特許請求の範
囲に規定されている本発明の範囲内であると考えられ
る。例えば、勿論、メッセージ処理のための、ネットワ
ーク・インタフェースにおける支援機能の実施形態は、
多種多様である。例えば、順次組み合わせ論理を使用し
た直接的なハードウェアでの実施、順次論理を使用して
いるマイクロプログラム化状態機械、及びマイクロプロ
セッサは、送信側と受信側を実現するために使用され得
る。ネットワーク・インタフェースとメッセージ・コプ
ロセッサとの間のインタフェースの種類は、種々の形態
が可能である。例えば、メッセージ・コプロセッサに、
能動的にネットワーク・インタフェースと通信させる、
バスインタフェースが提供可能である。代わりに、既述
のメモリマッピングされたインタフェース等の受動的な
インタフェースも使用できる。情報交換用プロトコル
も、種々の形態を取れることを理解されたい。
ットワーク用ネットワーク・インタフェースは、種々の
メッセージ処理動作を実行する任意のメッセージ・コプ
ロセッサと通信をするインタフェースを含む、メッセー
ジ処理用支援機能を有している。メッセージ処理は、ホ
ストコンピュータとネットワーク間のメッセージの低レ
ベル処理である。このような処理は、ホストから与えら
れる制御情報に応じて送信され、また、入力メッセージ
に含まれた制御情報に応じて受信される。メッセージ処
理には、待ち時間の少ないリモート読取り及び書込み動
作、メッセージ・フィルタリング、及びメッセージの多
重分離が含まれている。このようなネットワーク・イン
タフェースは、任意のプロセッサを使用して、種々のメ
ッセージ処理動作の支援機能を提供し、一方、この支援
機能によるネットワーク・インタフェースの複雑さとコ
ストを最小にする。ネットワーク・インタフェースは、
メッセージ・コプロセッサに、メッセージ用制御情報を
提供する。その制御情報は、そのメッセージ・コプロセ
ッサによって実行される動作と、可能ならばオペランド
とを示している。その動作とは、入力メッセージを処理
するか、又は出力メッセージを作成するかである。メッ
セージ・コプロセッサは、そのネットワーク・インタフ
ェースによって処理される小集合の命令の内の1命令に
応答する。そのメッセージ・コプロセッサからの命令
は、ホスト、又は離れた宛先にあって、データが保存さ
れる、メモリの位置等の追加データを含むこともある。
ネットワーク・インタフェースとメッセージ・コプロセ
ッサとの間のコネクションは、ネットワーク・インタフ
ェース上で、さらにローカルバス上の、メモリマッピン
グされたインタフェースである。ネットワーク・インタ
フェースは、メッセージ処理を支援するために、メッセ
ージから宛先制御情報を抽出し、また、宛先制御情報を
メッセージに挿入する機構を有している。ネットワーク
・インタフェースは、その宛先制御情報が、接続を経由
して受信又は送信したメッセージのどこにあるかを示し
ている情報を、各接続毎に保守している。この種のイン
タフェースを使用して、そのメッセージ・コプロセッサ
に供給される制御情報は、全く任意であって、メッセー
ジ・コプロセッサの能力にのみ制限される。メッセージ
・コプロセッサは、ネットワーク・インタフェースによ
って使用されるプロトコルに準拠している限りは、任意
に選択され得るので、そのネットワーク・インタフェー
スに関連して、新しい通信プロトコルで実験するのは、
簡単である。そのネットワーク・インタフェース上の送
信側と受信側の間の送信要求の待ち行列を設けることに
より、ホストプロセッサを回避するリモート読取り動作
に対する支援がなされ、また、メッセージ・コプロセッ
サを使用することにより、実行される。
明では、ネットワークにホストコンピュータを接続する
ためのネットワーク・インタフェースの受信側であり、
そこでは、ネットワークは、ホストコンピュータと、複
数のコンピュータを接続している。そのネットワーク・
インタフェースの受信側は、コネクション経由で、複数
のコンピュータから受け取ったメッセージから、宛先制
御情報を抽出するための機構を備えている。この抽出さ
れた宛先制御情報は、そのネットワーク・インタフェー
スに接続された、メッセージ・コプロセッサに通信され
る。その抽出された情報の、メッセージ・コプロセッサ
への通信後、受信側は、その受信メッセージに関する動
作を実行するために、メッセージ・コプロセッサから宛
先制御情報に基づく命令と引数を受け取りそれを実行す
る。これにより、コネクションベースの通信ネットワー
ク用のネットワーク・インタフェースの受信側におい
て、短い待ち時間でかつメッセージ処理のための支援機
能の複雑さを減らしたものを提供できる等の効果が得ら
れる。
ホストコンピュータと、ネットワークを接続するための
ネットワーク・インタフェースの送信側であり、そこで
は、ネットワークは、ホストコンピュータを、複数のコ
ンピュータに接続している。そのネットワーク・インタ
フェースの送信側は、ホストコンピュータから送り元制
御情報を受け取るための機構と、その送り元制御情報
を、ネットワーク・インタフェースに接続されたメッセ
ージ・コプロセッサに通信するための機構とを、備えて
いる。送信側は、メッセージ・コプロセッサへの送り元
制御情報の通信後に動作可能で、宛先制御情報を得るた
めに、メッセージ・コプロセッサから命令を受け取っ
て、それを実行するための機構も備えている。その宛先
制御情報は、次にコネクション経由で複数のコンピュー
タの内の1台に送信されるべきメッセージに挿入され
る。これにより、コネクションベースの通信ネットワー
ク用のネットワーク・インタフェースの送信側におい
て、短い待ち時間でかつメッセージ処理のための支援機
能の複雑さを減らしたものを提供できる等の効果が得ら
れる。
トコンピュータを、複数のコンピュータと接続している
ネットワークとの間で、メッセージを送受するために、
ホストコンピュータに接続されているネットワーク・イ
ンタフェースであり、そこでは、メッセージは、制御情
報と、通信チャネルを示すヘッダとを有している。その
ネットワーク・インタフェースは、送信側と受信側用の
コントローラを備えている。送信側では、コントローラ
は、ホストから送り元制御情報を受け取る。その送り元
制御情報を、メッセージ・コプロセッサに送るために、
コントローラは、送信側メッセージ・コプロセッサとイ
ンタフェースし、そのメッセージ・コプロセッサから、
小集合の命令の中から1つ以上の命令を受け取る。その
メッセージ・コプロセッサからの命令に応じて、そのコ
ントローラは、宛先制御情報を、出力メッセージに挿入
する。受信側では、コントローラは、受信メッセージか
ら宛先制御情報を抽出して、その宛先制御情報を、受信
側メッセージ・コプロセッサに送る。そのメッセージ・
コプロセッサは、小集合の命令から1つ以上の命令を返
す。そのコントローラは、受信した命令に応じて、受信
メッセージを処理する。これにより、コネクションベー
スの通信ネットワーク用のネットワーク・インタフェー
スにおいて、短い待ち時間でかつメッセージ処理のため
の支援機能の複雑さを減らしたものを提供できる等の効
果が得られる。
スとメッセージ・コプロセッサを有するコンピュータ・
システムのブロック図である。
理支援機能を有するネットワーク・インタフェースの受
信側におけるデータの流れを示す概略図である。
するネットワーク・インタフェースの受信側ブロック図
である。
表すフローチャートである。
トである。
処理支援機能を有するネットワーク・インタフェースの
送信側におけるデータの流れを示す概略図である。
スの送信側で使用される送り元制御情報用フォーマット
の概略図である。
スの送信側で使用される送り元制御情報用フォーマット
の概略図である。
スの送信側で使用される送り元制御情報用フォーマット
の概略図である。
ースの送信側で使用される送り元制御情報用フォーマッ
トの概略図である。
ースの送信側で使用される送り元制御情報用フォーマッ
トの概略図である。
ースの送信側で使用される送り元制御情報用フォーマッ
トの概略図である。
ースの送信側で使用される送り元制御情報用フォーマッ
トの概略図である。
ースの送信側で使用される送り元制御情報用フォーマッ
トの概略図である。
有するネットワーク・インタフェースの送信側ブロック
図である。
を表すフローチャートである。
ーク・インタフェースにおける返信付きリモート動作に
対する支援機能を示すブロック図である。
チャートである。
表的なコンピュータ・システムのブロック図である。
を有しているネットワーク・インタフェースの受信側の
ブロック図である。
を有しているネットワーク・インタフェースの送信側の
ブロック図である。
通信で使用されるホストコンピュータとネットワーク・
インタフェースを有するコンピュータ・システムのブロ
ック図である。
れる宛先制御情報を有するメッセージの内容の略図であ
る。
コンピュータ・システム、62,78 返信、64
受信側メッセージ・コプロセッサ、66 ネットワーク
・インタフェース、68 送信側メッセージ・コプロセ
ッサ、69 ローカルバス、70,72 メッセージ、
74 送り元制御情報、76 宛先制御情報、77 ヘ
ッダ、80 送信側、82 受信側、94 ローカルメ
モリ。
Claims (26)
- 【請求項1】 プロセッサとメモリを有するホストコン
ピュータを、このホストコンピュータを複数のコンピュ
ータに接続するネットワークに接続するためのネットワ
ーク・インタフェースであって、上記ネットワーク・イ
ンタフェースの受信側が、 上記ネットワーク・インタフェースにおいて、データと
メッセージデータに関して実施される動作を示す宛先制
御情報とを含むメッセージを受け取るための手段と、 上記ネットワーク・インタフェースにおいて、上記受信
メッセージから宛先制御情報を抽出し、抽出された宛先
制御情報を、上記ネットワーク・インタフェースに接続
されたメッセージ・コプロセッサに通信するための手段
と、 上記ネットワーク・インタフェースにおいて上記メッセ
ージ・コプロセッサへの上記抽出された制御情報の通信
後に動作可能な、上記メッセージ・コプロセッサによっ
て発生された命令と引数を受け取るための手段と、 上記受信した命令と引数に応じて、上記受信メッセージ
に関する小集合の動作の内の少なくとも1つを実行する
ための手段と、 を備えたことを特徴とするネットワーク・インタフェー
ス。 - 【請求項2】 上記メッセージ・コプロセッサが、ネッ
トワーク・インタフェースの外部にあり、さらに、上記
ネットワーク・インタフェースが、受信メッセージから
宛先制御情報を抽出し、上記メッセージ・コプロセッサ
に上記抽出情報を通信し、上記メッセージ・コプロセッ
サから上記命令と引数を受け取り、さらに引数を有する
命令を実行するための上記各手段を実装しているメッセ
ージ・コントローラを含む集積回路からなることを特徴
とする請求項1に記載のネットワーク・インタフェー
ス。 - 【請求項3】 上記ネットワーク・インタフェース内の
インタフェースが、上記外部メッセージ・コプロセッサ
に接続されたメモリマッピングされたローカルバスであ
ることを特徴とする請求項2に記載のネットワーク・イ
ンタフェース。 - 【請求項4】 上記宛先制御情報が、上記ネットワーク
・インタフェースを上記メッセージ・コプロセッサに接
続しているメモリマッピングされたバス上の指定メモリ
位置に書き込まれることを特徴とする請求項1に記載の
ネットワーク・インタフェース。 - 【請求項5】 上記メッセージ・コプロセッサから受け
取った上記命令が、上記ネットワーク・インタフェース
によって実行されるべき小集合の動作の中の1つの動作
を表す第1の項目と、1つ以上のオペランドを表す第2
の項目とを定義しているフォーマットを有することを特
徴とする請求項1に記載のネットワーク・インタフェー
ス。 - 【請求項6】 上記命令が、上記ネットワーク・インタ
フェースを上記メッセージ・コプロセッサに接続してい
るメモリマッピングされたバス上の指定されたメモリ位
置から読み込まれることを特徴とする請求項5に記載の
ネットワーク・インタフェース。 - 【請求項7】 上記命令が、上記ネットワーク・インタ
フェースによって実行されるべき可能な動作毎に独立し
た1ビットを含むフォーマットを有していることを特徴
とする請求項5に記載のネットワーク・インタフェー
ス。 - 【請求項8】 上記命令を受け取ってそれを実行する手
段が、上記命令に応じて動作する、上記受信メッセージ
からさらに多くのデータを読み取ってそれを上記メッセ
ージ・コプロセッサに送るための手段と、上記メッセー
ジ・コプロセッサからさらに別の命令を繰り返し受け取
りさらに実行するための手段を備えていることを特徴と
する請求項1に記載のネットワーク・インタフェース。 - 【請求項9】 上記命令を受け取ってそれを実行する手
段が、返信動作命令を作成して、上記ネットワーク・イ
ンタフェースの送信側によってアクセス可能な返信待ち
行列に返信命令を保存する手段を備えていることを特徴
とする請求項1に記載のネットワーク・インタフェー
ス。 - 【請求項10】 上記命令を受け取ってこれを実行する
手段が、上記宛先制御情報を読み終える前に、上記受信
メッセージを最初の状態に復元するための手段を備えて
いることを特徴とする請求項1に記載のネットワーク・
インタフェース。 - 【請求項11】 上記命令がネットワーク・インタフェ
ースによって書き込まれるべきメッセージからのデータ
の指定長を示し、上記命令を受け取ってそれを実行する
手段が、 上記指定長のデータが、上記メッセージ・コプロセッサ
によって指定されたアドレスに書き込まれるべきである
か否かを判断する手段と、 指定されたアドレスから始まる指定量のデータを保存す
るための手段と、 を備えていることを特徴とする請求項1に記載のネット
ワーク・インタフェース。 - 【請求項12】 上記命令がネットワーク・インタフェ
ースによって書き込まれるべきメッセージからのデータ
の指定長を示し、上記命令を受け取ってそれを実行する
手段が、 フリーバッファを選択する手段と、 指定量のデータを上記選択されたフリーバッファに保存
する手段と、 を備えていることを特徴とする請求項1に記載のネット
ワーク・インタフェース。 - 【請求項13】 上記保存手段がさらに、ホスト・プロ
セッサに対する割込み信号を生成する手段をさらに備え
たことを特徴とする請求項11に記載のネットワーク・
インタフェース。 - 【請求項14】 上記受信メッセージが分割メッセージ
であり、上記命令を受け取ってこれを実行する手段が、
任意の前の制御区分の処理後に、上記分割メッセージに
おける任意の次の制御区分を自動的に処理する手段を備
えていることを特徴とする請求項1に記載のネットワー
ク・インタフェース。 - 【請求項15】 プロセッサとメモリを有するホストコ
ンピュータを、このホストコンピュータをメッセージを
通信するために複数のコンピュータに接続するネットワ
ークに接続するためのネットワーク・インタフェースで
あって、上記ネットワーク・インタフェースの送信側
が、 上記ネットワーク・インタフェースにおいて、宛先制御
情報を出力メッセージから獲得する方法を示す送り元制
御情報をホストコンピュータから受け取り、上記ネット
ワーク・インタフェースに接続されたメッセージ・コプ
ロセッサに通信する手段と、 上記ネットワーク・インタフェースにおいて、上記メッ
セージ・コプロセッサへの送り元制御情報の通信後に動
作可能な、上記送り元制御情報に応じて、上記メッセー
ジ・コプロセッサによって作成された命令と引数を受け
取る手段と、 上記出力メッセージの受信によって上記出力メッセージ
に関して実施される動作を表す上記宛先制御情報を得る
ために、上記受け取った命令と引数に応じて小集合の命
令の内の少なくとも1つの命令を実行する手段と、 上記ネットワーク・インタフェースにおいて、上記ネッ
トワーク経由で上記複数のコンピュータの内の少なくと
も1台に送信されるべき上記出力メッセージに上記宛先
制御情報を挿入する手段と、 を備えたことを特徴とするネットワーク・インタフェー
ス。 - 【請求項16】 上記メッセージ・コプロセッサが、上
記ネットワーク・インタフェースに対して外部にあり、
上記ネットワーク・インタフェースが、上記受け取りお
よび通信のための上記各手段を実装し、さらに上記外部
メッセージ・コプロセッサへのインタフェースを有する
メッセージ・コントローラから成る集積回路であること
を特徴とする請求項15に記載のネットワーク・インタ
フェース。 - 【請求項17】 上記ネットワーク・インタフェース内
のインタフェースが、上記外部メッセージ・コプロセッ
サに接続されたメモリマッピングされたローカルバスで
あることを特徴とする請求項16に記載のネットワーク
・インタフェース。 - 【請求項18】 上記送り元制御情報が、上記ネットワ
ーク・インタフェースを上記メッセージ・コプロセッサ
に接続しているメモリマッピングされたバス上の指定さ
れたメモリ位置に書き込まれることを特徴とする請求項
15に記載のネットワーク・インタフェース。 - 【請求項19】 上記メッセージ・コプロセッサから受
け取った上記命令が、上記ネットワーク・インタフェー
スによって実行されるべき小集合の動作の内の1つの動
作を表す第1の項目と、1つ以上のオペランドを表す第
2の項目を含むフォーマットを有することを特徴とする
請求項15に記載のネットワーク・インタフェース。 - 【請求項20】 上記命令が、上記ネットワーク・イン
タフェースを上記メッセージ・コプロセッサに接続して
いるメモリマッピングされたバス上の指定されたメモリ
位置から読み込まれることを特徴とする請求項19に記
載のネットワーク・インタフェース。 - 【請求項21】 上記命令が、上記ネットワーク・イン
タフェースによって実行されるべき可能な動作毎に独立
した1ビットを含むフォーマットを有していることを特
徴とする請求項19に記載のネットワーク・インタフェ
ース。 - 【請求項22】 上記命令を受け取ってそれを実行する
手段が、上記命令に応じて動作する、上記ホストコンピ
ュータからさらに多くのデータを読み取ってそれを上記
メッセージ・コプロセッサに送るための手段と、上記メ
ッセージ・コプロセッサからさらに別の命令を繰り返し
受け取りさらに実行するための手段を備えたことを特徴
とする請求項15に記載のネットワーク・インタフェー
ス。 - 【請求項23】 上記命令が上記ネットワーク・インタ
フェースによって読み取られるべきデータの指定量を示
し、上記命令を受け取ってこれを実行するための手段
が、 上記指定量のデータが上記受け取った命令によって指定
されるアドレスから読み取られるべきか否かを判断する
手段と、 上記指定されたバッファにある上記指定量のデータを上
記出力メッセージに読み込む手段と、 を備えたことを特徴とする請求項15に記載のネットワ
ーク・インタフェース。 - 【請求項24】 上記命令が上記ネットワーク・インタ
フェースによって読み出されるべきデータの指定量を示
し、上記命令を受け取ってこれを実行するための手段
が、 送信のために上記ホストによって上記ネットワーク・イ
ンタフェースに提供された上記バッファからのデータを
選択する手段と、 上記指定量のデータを上記選択されたバッファから読み
取り、上記読み取ったデータを出力メッセージに挿入す
る手段と、 を備えたことを特徴とする請求項15に記載のネットワ
ーク・インタフェース。 - 【請求項25】 上記出力メッセージが分割メッセージ
であり、上記命令を受け取ってこれを実行する手段が、
任意の前の制御区分の処理後に、上記分割メッセージに
おける任意の次の制御区分を自動的に処理する手段を備
えていることを特徴とする請求項15に記載のネットワ
ーク・インタフェース。 - 【請求項26】 ホストコンピュータを複数のコンピュ
ータに接続するネットワークとの間で、実行されるべき
動作を表す宛先制御情報と通信チャネルを表すヘッダと
を含むメッセージを送受するために、プロセッサとメモ
リを有する上記ホストコンピュータに接続されたネット
ワーク・インタフェースであって、上記ネットワーク・
インタフェースが、 コントローラと、上記ネットワーク・インタフェースに
よって送受されるメッセージにおける宛先制御情報の位
置に関する情報を含む関連メモリと、 制御情報を上記コントローラからメッセージ・コプロセ
ッサに送信するための手段、上記メッセージ・コプロセ
ッサから小集合の命令の中の1つの命令を受け取るため
の手段を備えた上記メッセージ・コプロセッサに接続す
るためのインタフェースであって、上記コントローラ
が、上記メッセージ・コプロセッサからの命令に応じ
て、出力メッセージの宛先で実行されるべき動作を表す
宛先制御情報を得るための手段、上記宛先制御情報を上
記出力メッセージに挿入するための手段を有しているも
のと、 上記コントローラが、上記メッセージ・コプロセッサか
ら受け取った命令に応じて、受け取ったメッセージを取
り扱うための手段を有している、 ことを特徴とするネットワーク・インタフェース。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/614,833 US6078733A (en) | 1996-03-08 | 1996-03-08 | Network interface having support for message processing and an interface to a message coprocessor |
US08/614833 | 1996-03-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1074174A true JPH1074174A (ja) | 1998-03-17 |
JP2931798B2 JP2931798B2 (ja) | 1999-08-09 |
Family
ID=24462896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9051805A Expired - Fee Related JP2931798B2 (ja) | 1996-03-08 | 1997-03-06 | ネットワーク・インタフェース |
Country Status (2)
Country | Link |
---|---|
US (1) | US6078733A (ja) |
JP (1) | JP2931798B2 (ja) |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7506020B2 (en) | 1996-11-29 | 2009-03-17 | Frampton E Ellis | Global network computers |
US8225003B2 (en) | 1996-11-29 | 2012-07-17 | Ellis Iii Frampton E | Computers and microchips with a portion protected by an internal hardware firewall |
US20050180095A1 (en) | 1996-11-29 | 2005-08-18 | Ellis Frampton E. | Global network computers |
US7805756B2 (en) | 1996-11-29 | 2010-09-28 | Frampton E Ellis | Microchips with inner firewalls, faraday cages, and/or photovoltaic cells |
US7926097B2 (en) * | 1996-11-29 | 2011-04-12 | Ellis Iii Frampton E | Computer or microchip protected from the internet by internal hardware |
US7634529B2 (en) | 1996-11-29 | 2009-12-15 | Ellis Iii Frampton E | Personal and server computers having microchips with multiple processing units and internal firewalls |
US6725250B1 (en) * | 1996-11-29 | 2004-04-20 | Ellis, Iii Frampton E. | Global network computers |
US6167428A (en) * | 1996-11-29 | 2000-12-26 | Ellis; Frampton E. | Personal computer microprocessor firewalls for internet distributed processing |
US7174393B2 (en) | 2000-12-26 | 2007-02-06 | Alacritech, Inc. | TCP/IP offload network interface device |
US8539112B2 (en) | 1997-10-14 | 2013-09-17 | Alacritech, Inc. | TCP/IP offload device |
US7133940B2 (en) * | 1997-10-14 | 2006-11-07 | Alacritech, Inc. | Network interface device employing a DMA command queue |
US8621101B1 (en) | 2000-09-29 | 2013-12-31 | Alacritech, Inc. | Intelligent network storage interface device |
US8782199B2 (en) | 1997-10-14 | 2014-07-15 | A-Tech Llc | Parsing a packet header |
US6687758B2 (en) * | 2001-03-07 | 2004-02-03 | Alacritech, Inc. | Port aggregation for network connections that are offloaded to network interface devices |
US7185266B2 (en) * | 2003-02-12 | 2007-02-27 | Alacritech, Inc. | Network interface device for error detection using partial CRCS of variable length message portions |
US7167927B2 (en) | 1997-10-14 | 2007-01-23 | Alacritech, Inc. | TCP/IP offload device with fast-path TCP ACK generating and transmitting mechanism |
US6226680B1 (en) | 1997-10-14 | 2001-05-01 | Alacritech, Inc. | Intelligent network interface system method for protocol processing |
US6658480B2 (en) * | 1997-10-14 | 2003-12-02 | Alacritech, Inc. | Intelligent network interface system and method for accelerated protocol processing |
US7237036B2 (en) * | 1997-10-14 | 2007-06-26 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding a TCP connection |
US6697868B2 (en) * | 2000-02-28 | 2004-02-24 | Alacritech, Inc. | Protocol processing stack for use with intelligent network interface device |
US6757746B2 (en) * | 1997-10-14 | 2004-06-29 | Alacritech, Inc. | Obtaining a destination address so that a network interface device can write network data without headers directly into host memory |
US6434620B1 (en) * | 1998-08-27 | 2002-08-13 | Alacritech, Inc. | TCP/IP offload network interface device |
US6226706B1 (en) * | 1997-12-29 | 2001-05-01 | Samsung Electronics Co., Ltd. | Rotation bus interface coupling processor buses to memory buses for interprocessor communication via exclusive memory access |
US6782510B1 (en) * | 1998-01-27 | 2004-08-24 | John N. Gross | Word checking tool for controlling the language content in documents using dictionaries with modifyable status fields |
US6240095B1 (en) * | 1998-05-14 | 2001-05-29 | Genroco, Inc. | Buffer memory with parallel data and transfer instruction buffering |
US6615383B1 (en) | 1998-05-29 | 2003-09-02 | Sun Microsystems, Inc. | System and method for message transmission between network nodes connected by parallel links |
US7664883B2 (en) | 1998-08-28 | 2010-02-16 | Alacritech, Inc. | Network interface device that fast-path processes solicited session layer read commands |
US6272553B2 (en) * | 1998-11-20 | 2001-08-07 | Sprint Communications Company, L.P. | Multi-services communications device |
US6286035B1 (en) * | 1999-02-01 | 2001-09-04 | Lucent Technologies Inc. | Validating and parsing engine for system configuration and support command messages |
US7281030B1 (en) * | 1999-09-17 | 2007-10-09 | Intel Corporation | Method of reading a remote memory |
US6832265B1 (en) | 2000-01-07 | 2004-12-14 | Cisco Technology, Inc. | Methods and apparatus for moving data elements within a data communications device |
US6954424B2 (en) | 2000-02-24 | 2005-10-11 | Zarlink Semiconductor V.N., Inc. | Credit-based pacing scheme for heterogeneous speed frame forwarding |
US7050437B2 (en) * | 2000-03-24 | 2006-05-23 | International Business Machines Corporation | Wire speed reassembly of data frames |
US6947430B2 (en) * | 2000-03-24 | 2005-09-20 | International Business Machines Corporation | Network adapter with embedded deep packet processing |
US7047196B2 (en) | 2000-06-08 | 2006-05-16 | Agiletv Corporation | System and method of voice recognition near a wireline node of a network supporting cable television and/or video delivery |
US6822959B2 (en) * | 2000-07-31 | 2004-11-23 | Mindspeed Technologies, Inc. | Enhancing performance by pre-fetching and caching data directly in a communication processor's register set |
US7116764B1 (en) * | 2000-08-11 | 2006-10-03 | Unisys Corporation | Network interface unit having an embedded services processor |
US7327832B1 (en) * | 2000-08-11 | 2008-02-05 | Unisys Corporation | Adjunct processing of multi-media functions in a messaging system |
US8019901B2 (en) * | 2000-09-29 | 2011-09-13 | Alacritech, Inc. | Intelligent network storage interface system |
US20020040391A1 (en) * | 2000-10-04 | 2002-04-04 | David Chaiken | Server farm formed of systems on a chip |
DE60038821D1 (de) * | 2000-12-26 | 2008-06-19 | St Microelectronics Sa | Einrichtung und verfahren zum filtern von nachrichps |
US20020083150A1 (en) * | 2000-12-27 | 2002-06-27 | Linden Minnick | Accessing information from memory |
US8095370B2 (en) | 2001-02-16 | 2012-01-10 | Agiletv Corporation | Dual compression voice recordation non-repudiation system |
US7149212B2 (en) | 2001-03-21 | 2006-12-12 | International Business Machines Corporation | Apparatus, method and limited set of messages to transmit data between scheduler and a network processor |
US7085266B2 (en) * | 2001-03-21 | 2006-08-01 | International Business Machines Corporation | Apparatus, method and limited set of messages to transmit data between components of a network processor |
DE10119754B4 (de) * | 2001-04-23 | 2007-11-29 | Infineon Technologies Ag | Verfahren und Vorrichtung zum Speichern von Datenpaketen |
US7333514B2 (en) | 2001-08-09 | 2008-02-19 | Telefonaktiebolaget Lm Ericsson (Publ) | Flexible frame scheduler for simultaneous circuit-and packet-switched communication |
US6965558B1 (en) * | 2001-08-23 | 2005-11-15 | Cisco Technology, Inc. | Method and system for protecting a network interface |
US7020753B2 (en) * | 2002-01-09 | 2006-03-28 | Sun Microsystems, Inc. | Inter-domain data transfer |
US6795902B2 (en) * | 2002-01-09 | 2004-09-21 | Sun Microsystems, Inc. | Inter-domain data transfer |
US7421515B2 (en) * | 2002-01-17 | 2008-09-02 | Hewlett-Packard Development Company, L.P. | Method and system for communications network |
US20040064565A1 (en) * | 2002-02-06 | 2004-04-01 | International Business Machines Corporation | Obtaining location information using a rejection model |
US7126956B2 (en) * | 2002-03-05 | 2006-10-24 | Applied Micro Circuits Corporation | System to provide fractional bandwidth data communications services |
US7543087B2 (en) | 2002-04-22 | 2009-06-02 | Alacritech, Inc. | Freeing transmit memory on a network interface device prior to receiving an acknowledgement that transmit data has been received by a remote device |
US7496689B2 (en) * | 2002-04-22 | 2009-02-24 | Alacritech, Inc. | TCP/IP offload device |
US7191241B2 (en) * | 2002-09-27 | 2007-03-13 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding to a TCP connection |
US7337241B2 (en) * | 2002-09-27 | 2008-02-26 | Alacritech, Inc. | Fast-path apparatus for receiving data corresponding to a TCP connection |
US20040088262A1 (en) * | 2002-11-06 | 2004-05-06 | Alacritech, Inc. | Enabling an enhanced function of an electronic device |
GB2395308B (en) * | 2002-11-18 | 2005-10-19 | Quadrics Ltd | Command scheduling in computer networks |
US7212538B2 (en) * | 2003-09-05 | 2007-05-01 | Qualcomm Incorporated | Differential ack processing buffer manager and method therefor |
US7114109B2 (en) * | 2004-03-11 | 2006-09-26 | International Business Machines Corporation | Method and apparatus for customizing and monitoring multiple interfaces and implementing enhanced fault tolerance and isolation features |
US8248939B1 (en) | 2004-10-08 | 2012-08-21 | Alacritech, Inc. | Transferring control of TCP connections between hierarchy of processing mechanisms |
US7738500B1 (en) | 2005-12-14 | 2010-06-15 | Alacritech, Inc. | TCP timestamp synchronization for network connections that are offloaded to network interface devices |
AU2008201643B1 (en) | 2007-07-24 | 2008-08-28 | Rambrandt Messaging Technologies, LP | Messaging service in a wireless communications network |
US8125796B2 (en) | 2007-11-21 | 2012-02-28 | Frampton E. Ellis | Devices with faraday cages and internal flexibility sipes |
US8539513B1 (en) | 2008-04-01 | 2013-09-17 | Alacritech, Inc. | Accelerating data transfer in a virtual computer system with tightly coupled TCP connections |
US8341286B1 (en) | 2008-07-31 | 2012-12-25 | Alacritech, Inc. | TCP offload send optimization |
US9306793B1 (en) | 2008-10-22 | 2016-04-05 | Alacritech, Inc. | TCP offload device that batches session layer headers to reduce interrupts as well as CPU copies |
US8176141B1 (en) * | 2009-07-07 | 2012-05-08 | Viasat, Inc. | SMB request prefetching |
US8429735B2 (en) | 2010-01-26 | 2013-04-23 | Frampton E. Ellis | Method of using one or more secure private networks to actively configure the hardware of a computer or microchip |
US11025752B1 (en) * | 2015-07-20 | 2021-06-01 | Chelsio Communications, Inc. | Method to integrate co-processors with a protocol processing pipeline |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5247626A (en) * | 1990-05-29 | 1993-09-21 | Advanced Micro Devices, Inc. | Fddi controller having flexible buffer management |
US5430850A (en) * | 1991-07-22 | 1995-07-04 | Massachusetts Institute Of Technology | Data processing system with synchronization coprocessor for multiple threads |
US5442797A (en) * | 1991-12-04 | 1995-08-15 | Casavant; Thomas L. | Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging |
US5299313A (en) * | 1992-07-28 | 1994-03-29 | 3Com Corporation | Network interface with host independent buffer management |
JPH08180001A (ja) * | 1994-04-12 | 1996-07-12 | Mitsubishi Electric Corp | 通信方式及び通信方法及びネットワークインタフェース |
US5682553A (en) * | 1995-04-14 | 1997-10-28 | Mitsubishi Electric Information Technology Center America, Inc. | Host computer and network interface using a two-dimensional per-application list of application level free buffers |
US5696936A (en) * | 1995-04-25 | 1997-12-09 | Unisys Corporation | Low latency message processor interface using memory mapped Read/Write Windows |
US5664116A (en) * | 1995-07-07 | 1997-09-02 | Sun Microsystems, Inc. | Buffering of data for transmission in a computer communication system interface |
US5751951A (en) * | 1995-10-30 | 1998-05-12 | Mitsubishi Electric Information Technology Center America, Inc. | Network interface |
-
1996
- 1996-03-08 US US08/614,833 patent/US6078733A/en not_active Expired - Fee Related
-
1997
- 1997-03-06 JP JP9051805A patent/JP2931798B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2931798B2 (ja) | 1999-08-09 |
US6078733A (en) | 2000-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2931798B2 (ja) | ネットワーク・インタフェース | |
JP2933885B2 (ja) | ネットワーク・インタフェースおよび受信メッセージの処理方法 | |
JP2990345B2 (ja) | ネットワークインターフェース | |
US5446726A (en) | Error detection and correction apparatus for an asynchronous transfer mode (ATM) network device | |
US5802287A (en) | Single chip universal protocol multi-function ATM network interface | |
US5625825A (en) | Random number generating apparatus for an interface unit of a carrier sense with multiple access and collision detect (CSMA/CD) ethernet data network | |
US5668809A (en) | Single chip network hub with dynamic window filter | |
US5828903A (en) | System for performing DMA transfer with a pipeline control switching such that the first storage area contains location of a buffer for subsequent transfer | |
US5640399A (en) | Single chip network router | |
US5848293A (en) | Method and apparatus for transmission and processing of virtual commands | |
US6724767B1 (en) | Two-dimensional queuing/de-queuing methods and systems for implementing the same | |
JP4205181B2 (ja) | Atmパケット・ヘッダおよびデータをホスト・コンピュータ・システムにバースト転送するための方法および装置 | |
US6615282B1 (en) | Adaptive messaging | |
US20020176430A1 (en) | Buffer management for communication systems | |
Welsh et al. | Atm and fast ethernet network interfaces for user-level communication | |
US6760333B1 (en) | Hybrid digital subscriber loop and voice-band universal serial bus modem | |
JPH09321828A (ja) | 保護メモリ・オペレーティング・システムにおけるデータ・コピー・オーバーヘッドを削減する機構 | |
JPH09128313A (ja) | コンピュータ通信システム・インターフェースにおける送信データのバッファリング | |
JPH05219098A (ja) | フレーム変換方法及び装置 | |
JPH0955755A (ja) | Atm通信ネットワーク及びその方法 | |
JP2002204253A (ja) | 非同期転送モードにおけるホスト・プロセッサおよびディジタル信号プロセッサ間転送用インターフェース・ユニット、およびこれを用いたデータ処理システム | |
WO2000054469A9 (en) | Multimedia and multirate switching method and apparatus | |
US6804243B1 (en) | Hardware acceleration for segmentation of message packets in a universal serial bus peripheral device | |
EP1102171A2 (en) | Universal serial bus network peripheral device | |
US7215670B1 (en) | Hardware acceleration for reassembly of message packets in a universal serial bus peripheral device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R154 | Certificate of patent or utility model (reissue) |
Free format text: JAPANESE INTERMEDIATE CODE: R154 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080521 Year of fee payment: 9 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080521 Year of fee payment: 9 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090521 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100521 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100521 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110521 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120521 Year of fee payment: 13 |
|
LAPS | Cancellation because of no payment of annual fees |