(57)【特許請求の範囲】
【請求項１】
システムバス及び該システムに接続された第１のメインメモリを備える第１のコンピュータ上で動作している送信アプリケーションから、第２のコンピュータ上で動作している受信アプリケーションへの転送を実行するためのコンピュータインターフェースであって、前記送信アプリケーションは、前記受信アプリケーションに送信するデータの前記メインメモリ内の送信仮想アドレスをオペレーティングシステムに提供し、前記インターフェースが、
Ａ．マッピングメモリと、
Ｂ．送信ワークキューメモリと、
Ｃ．１．前記マッピングメモリに、前記送信仮想アドレスに対応する送信物理アドレスをロードし、及び、
２．前記送信ワークキューメモリに、各データ送信の仕様値を入力するための前記オペレーティングシステム内の手段であって、
該仕様値は、転送の識別子と前記データの宛先の識別子を備え、該転送の識別子は、また、前記マッピングメモリ内の前記送信仮想アドレスのそれぞれの位置の識別子を含むことからなる手段と、
Ｄ．前記マッピングメモリに収容されている前記物理アドレスに従って、前記第１のメインメモリをアクセスして、そこから前記データを取り出すための手段と、
Ｅ．前記取り出したデータを前記第２のアプリケーションに送信するための手段
とからなること。
【請求項２】
請求項１のインターフェースが、さらに、
Ａ．受信ワークキューメモリと、
Ｂ．前記第１のメインメモリ内の受信仮想アドレスを特定するために、前記第１のコンピュータ上で動作している受信アプリケーションに問い合わせるための前記オペレーティングシステム内の手段であって、前記第２のコンピュータ上の送信アプリケーションからこの受信アプリケーションに転送される受信データが、前記第１のメインメモリにロードされることからなる手段と、
Ｃ．１．前記マッピングメモリに、前記受信仮想アドレスに対応する前記第１のメモリ内の受信物理アドレスをロードし、及び、
２．前記受信ワークキューメモリに、各データ送信の仕様値を入力するための前記オペレーティングシステム内の手段であって、
該仕様値は、転送の識別子と前記データの宛先の識別子を備え、該転送の識別子は、また、前記マッピングメモリ内の前記受信仮想アドレスのそれぞれの位置の識別子を含むことからなる手段と、
Ｄ．前記第２のコンピュータから、前記転送識別子によって特定されるデータを受信するための手段と、
Ｅ．前記マッピングメモリに収容されている前記受信物理アドレスによって、前記第１のメインメモリをアクセスして、前記第２のコンピュータ上の前記送信アプリケーションから受信されたデータをそれらのアドレスにロードするための手段
とからなること。
【請求項３】
送信手段が、予め決定された通信規格に基づいて前記第２のコンピュータに送信するために、データをフレーム化するフレーミング及びデフレーミングユニットを備える、請求項１のインターフェース。
【請求項４】
各データ転送の識別子が、各仮想チャンネルの識別子によって特定される仮想回線接続を規定し、及び、送信ワークキューメモリが、各仮想回線接続に対応する位置を含むことからなる請求項２のインターフェース。
【請求項５】
受信ワークキューメモリが、各仮想回線接続に対応するエントリを含む、請求項４のインターフェース。
【請求項６】
マッピングメモリが、各送信物理アドレスを記憶するための各仮想回線接続に対応する位置を含む、請求項５のインターフェース。
【請求項７】
各マッピングメモリ、送信ワークキューメモリ、及び受信ワークキューメモリが、システムバスのアドレス空間にある、請求項２のインターフェース。
【請求項８】
システムバスから受信されるデータを選択的に記憶し、該システムバスに送信するための記憶されたデータを取り出すためのバッファメモリからさらになり、前記バッファメモリが、時分割方式で、各仮想回線接続に対してデータを記憶し、及び取り出すように該バッファメモリを動作させるバッファコントローラを含むことからなる請求項４のインターフェース。
【請求項９】
バッファメモリが、通信リンクを介して第２のコンピュータから受信されたデータを選択的に記憶すると共に、該第２のコンピュータに送信するためのデータを取り出すように構築、及び構成され、バッファコントローラが、該バッファメモリに、時分割方式で、各仮想回線接続に対して前記第２のコンピュータから受信されたデータを記憶させるように構築、構成されることからなる請求項８のインターフェース。
【請求項１０】
さらに、ヘッドエントリとテールエントリ間の複数のエントリを規定するスレッドを含むスレッドメモリであって、該エントリの各々が、各仮想回線接続、及びセグメントアドレスのリンクされたリストを規定するエントリに対応するバッファメモリ内のアクティブなメモリセグメントを表すアドレスを構成することからなるスレッドメモリと、前記バッファメモリの対応するメモリセグメントへのロード、及びそこからの取り出しにそれぞれ基づいて、前記スレッドメモリにエントリを加え、及び、前記スレッドメモリからエントリを削除するための、バッファコントローラ内の手段とからさらになる請求項９のインターフェース。
【請求項１１】
記憶されたデータの無い、バッファメモリ内の占有されていないセグメントにそれぞれが対応する複数のエントリを有するフリーリストメモリからさらに構成され、前記フリーリストメモリから予め決定されたセグメントアドレスを有するエントリを除去し、同時に、前記スレッドメモリ内の前記予め決定されたセグメントアドレスを有するエントリを構築するための、バッファコントローラ内の手段からさらになる、請求項１０のインターフェース。
【請求項１２】
複数のエントリを記憶するための、前記バッファメモリ及びシステムバスに相互接続されたコンテキストメモリからさらになり、前記各エントリは、予め決定された仮想回線接続に対応し、前記各エントリは、前記各仮想回線接続のために、データ転送優先順位を規定する情報、前記バッファメモリ内のセグメントアドレスのスレッドの先頭位置と最後の位置、及び、前記バッファメモリ内に格納されているデータ量とを収容することからなる、請求項１１のインターフェース。
【請求項１３】
仕様値が、送信ワークキューメモリ及び受信ワークキューメモリの少なくとも１つに収容される各データ転送を識別するエントリを記憶する、システムバスに相互接続された、アクティブ回線接続メモリからさらになり、該アクティブな回線接続メモリが、新しいデータ転送が開始されるときには、新しいエントリを連続的に記憶し、既存のデータ転送が完了するときには、既存のエントリを削除するための手段を備えることからなる、請求項２のインターフェース。
【請求項１４】
前記アクティブ回線接続メモリ内の各エントリが、それぞれのデータ転送の優先順位の識別子を含む、請求項１３のインターフェース。
【請求項１５】
前記送信ワークキューメモリ及び受信ワークキューメモリのそれぞれが、それぞれのポインタレジスタを備え、各ポインタレジスタが、各送信ワークキューメモリ及び受信ワークキューメモリ内の各仕様値に対応するエントリを有し、各エントリが、次に起こるデータ転送のために、仕様値の各送信ワークキューメモリ及び受信ワークキューメモリ内の位置を表すポインタを含むことからなる請求項２のインターフェース。
【請求項１６】
システムバスと該システムバスに接続された第１のメインメモリを有する第１のコンピュータ上で動作している送信アプリケーションから、第２のコンピュータ上で動作している受信アプリケーションへの転送を実行するための方法であって、前記送信アプリケーションは、前記受信アプリケーションに送信するデータの前記メインメモリ内の送信仮想アドレスをオペレーティングシステムに提供し、前記方法が、
Ａ．マッピングメモリを設けるステップと、
Ｂ．送信ワークキューメモリを設けるステップと、
Ｃ．前記第１のコンピュータ上で動作するソフトウエアによって、
１．前記マッピングメモリに、前記送信仮想アドレスに対応する送信物理アドレスをロードし、及び、
２．前記送信ワークキューメモリに、各データ送信の仕様値を入力するステップであって、
該仕様値は、転送の識別子と前記データの宛先の識別子を備え、該転送の識別子は、また、前記マッピングメモリ内の前記送信仮想アドレスのそれぞれの位置の識別子を含むことからなるステップと、
Ｄ．前記マッピングメモリに収容されている前記物理アドレスに従って、前記第１のメインメモリをアクセスして、そこから前記データを取り出すステップと、
Ｅ．前記取り出したデータを前記第２のアプリケーションに送信するステップ
とからなること。
【請求項１７】
Ａ．受信ワークキューメモリを設けるステップと、
Ｂ．前記第１のメインメモリ内の受信仮想アドレスを特定するために、前記第１のコンピュータ上で動作している受信アプリケーションに、該第１のコンピュータ上で動作するソフトウエアによって問い合わせるステップであって、前記第２のコンピュータ上の送信アプリケーションからこの受信アプリケーションに転送される受信データが、前記第１のメインメモリにロードされることになる、ステップと、
Ｃ．前記ソフトウエアシステムによって、
１．前記受信仮想アドレスに対応する前記第１のメモリ内の受信物理アドレスを、前記マッピングメモリにロードするステップと、
２．前記受信ワークキューメモリに、各データ送信の仕様値を入力するステップであって、該仕様値は、転送の識別子、及び前記データの宛先の識別子を含み、前記転送の識別子が、さらに、前記マッピングメモリ内の前記受信仮想アドレスのそれぞれの位置の識別子を含むことからなる、ステップと、
Ｄ．前記第２のコンピュータから、前記転送識別子によって特定されるデータを受信するステップと、
Ｅ．前記マッピングメモリに収容された前記受信物理アドレスにより前記第１のメインメモリをアクセスして、前記第２のコンピュータ上の前記送信アプリケーションから受信されたデータをそれらのアドレスにロードするステップ
とからさらになる、請求項１６の方法。
【請求項１８】
前記送信するステップと、前記アクセスするステップのそれぞれが、各データ転送毎に仮想的なチャンネル識別子を構築することを含む、ＡＴＭ通信規格に従ってデータをフレーム化することを含む、請求項１７の方法。
【請求項１９】
バッファメモリにデータを記憶し、及びバッファメモリからデータを取り出すことをさらに含み、前記記憶し、転送するステップが、各データ転送に対応する仮想チャンネル識別子に基づいており、さらに、各対応する仮想チャンネル識別子に関連する優先条件に基づいて、前記記憶し、転送するステップに優先順位をつけることを含む請求項１８の方法。
【発明の詳細な説明】
発明の分野
本発明は、異なるコンピュータ及びコンピュータサブシステム上で動作するアプリケーション間の通信に関連する。特に、１つのコンピュータ上のアプリケーションデータを他のコンピュータの物理メモリアドレスにダイレクトマッピングすることに関する。さらに具体的には、実質上オペレーティングシステムが介在することなく、少なくとも２つのネットワーク接続されたコンピュータ間のメモリアドレッシング機能を実行するスイッチ構成に関する。
発明の背景
クラスタまたはネットワーク内のデータ処理装置（データ処理デバイス）間のデータ及び命令の転送は、各デバイスに備わっているインターフェースユニットを使用して実行される。このようなデータ処理装置は、例えば、ディスクサーバのようなコンピュータ、及び外部ネットワークへの通信リンクのような共有Ｉ／Ｏデバイスを備えることができる。一般的には、これらのユニット間をシリアル形式でデータを転送するリンクが使用される。特に、３つ以上のデバイスがリンクされるときに、データを転送するためにスイッチを設けることができる。
常時、多くのデータ転送が、異なるコンピュータ上で動作しているアプリケーションプログラム間で発生している。多くのネットワーク構成が、これらの転送を実行するために実装されてきた。概して、このような従来のネットワーク化によるアプローチは、待ち時間を少なくし、より高速で低コストを実現する所望の構成を提供するものではない。
従って、本発明の目的は、リンク（接続）されたデータ処理装置間のデータ転送の待ち時間を大幅に低減し、及びその速度を高速化する低コストのコンピュータインターフェースシステムを提供することである。このインターフェースシステムは、ハードウエアのコストを可能な限り低くするために、ボード上のリソース（すなわち、コンピュータ内に組み込み済みのリソース）を効率的に使用すべきである。
発明の要約
本発明は、ホスト装置内のアプリケーションにかかわる稼働中の各通信回線接続（通信回線）に対して、マップを記憶するインターフェースユニットを有する各ホストデータ処理装置（例えば、コンピュータ）を提供することによって、従来技術の欠点を克服する。このマップは、ホストのメインメモリ内の対応する物理アドレスを有するアプリケーションによって指定される仮想アドレスを特定するものである。これらの物理アドレスは、このアプリケーションと別の装置上で動作している特定のアプリケーションとの間で転送されるデータのホスト装置内の場所である。データ転送は、コンピュータ間のデータのルーティングを容易にする固有の識別子をそれぞれが伝える仮想的な回線接続に沿って生じる。各インターフェースユニットは、回線接続識別子の面で、指示されるか、または「マッピング」される一連のレジスタまたは「メモリ」を含む。
従って、インターフェースユニットは、プロトコル処理のために、ホストオペレーティングシステムへの時間のかかる発呼を行うことなく、あるいは、アプリケーションによって提供される仮想メモリ位置をメインメモリ内の物理メモリアドレスに変換することなく、メインメモリ間とのデータ転送をすることができる。さらに、インターフェースユニット内のレジスタを、回線毎のプロトコル状態情報を保持するために使用することができる。これによって、プロトコルの高速化が容易になる。
本発明は、また、３つ以上のホストデータ処理装置が含まれる場合に使用される、インターフェースユニット内及びスイッチ内において新規なバッファ構成を提供する。バッファ空間は、インターフェース及びスイッチを通るデータ送信回線接続に動的に割り当てられる。これによって、バッファメモリに必要とされるサイズが最小限になると共に、ハードウエアのコストが低減する。この技法は、また、種々の「フェア（fair）」及び／または適応型スケジューリングアルゴリズムを使用することを可能とする。
【図面の簡単な説明】
本発明の上述の及び他の目的、利点は、添付の図面と共に以下の詳細な説明を参照することによって、明らかになるであろう。
図１は、本発明に従う、互いに通信接続されたコンピュータシステムネットワークのブロック図である。
図２は、本発明に従うネットワークインターフェースユニットのより詳細なブロック図である。
図３は、本発明に従う他のネットワークインターフェースユニットのより詳細なブロック図である。
図４は、本発明に従うスイッチのブロック図である。
詳細な説明
図１に、本発明に従って基本クラスタ化されたコンピュータシステムを示す。一例として、この図では、クラスタは３つのコンピュータを備えている。この例では、コンピュータが示されているが、１つ以上のコンピュータを、ディスクサーバや外部ネットワークへの通信リンクのような他のデータ処理装置とすることもできる。従って、そのようは他のデバイスと共にこのシステムを使用することが、明確に考慮されている。
本発明の説明のために、一般的にコンピュータ３０ａを参照する。コンピュータ３０ａは、コンピュータ３０ｂとコンピュータ３０ｃに相互接続されていると想定する。本明細書では、添え字「ａ」、「ｂ」または「ｃ」の付いた同じ参照番号によって、各コンピュータシステム３０ａ、３０ｂ、及び３０ｃにおけるそれぞれ同じコンポーネントを参照する。これらのホストコンピュータ３０ａ、３０ｂ及び３０ｃは、それらが、下記する方法における相互通信に適合する限り、アーキテクチャは異なったものとすることができるということが考慮されている。ディスクサーバ３５もまた図示しており、さらに、本明細書において、「データ」という用語は、本発明のインターフェースユニットとの接続において発生するときには、制御データ（例えば、ＴＣＰ／ＩＰヘッダ情報）及び生データの両方を意味するものである。本発明のインターフェースは、データ処理装置間の転送のために、制御及びデータ列の両方をＡＴＭフレーム化データに変換するフレーミング機能を備える。このフレーム化されたデータは、同じ機能を使用する受信端末上で制御及びデータ列に再変換される。
コンピュータ３０ａは、並列システムバス４２ａによってメインメモリ４４ａに接続されたＣＰＵ、すなわち中央処理装置４０ａから構成される。メインメモリ４４ａには、オペレーティングシステム４６ａ及び一連のコンピュータアプリケーションプログラム４８ａを収容する記憶ブロックがある。
Ｉ／Ｏセクタ５０ａは、すべてがシステムバス４２ａに接続された、ディスク及び他の周辺デバイス５２ａ、さらに、本発明に従うネットワークインターフェースユニット５４ａを備えることができる。インターフェースユニット５４ａは、コンピュータ３０ｂ、３０ｃ、及びディスクサーバ３５との通信を可能にする。コンピュータ３０ｂは、システムバス４２ｂに接続されたそれ自身のネットワークインターフェースユニット５４ｂを備え、コンピュータ３０ｃは、システムバス４２ｃに接続されたネットワークインターフェースユニット５４を備える。クラスタ内では２つのみのコンピュータ（例えば、コンピュータ３０ａ及びコンピュータ３０ｂ）が接続されており、直接の相互接続８０（点線で図示）を、インターフェースユニット５４ａと５４ｂの間に設けることができる。逆に、多くの（例えば、３つ以上の）コンピュータが接続される場合には、スイッチ８２が、クラスタ内の装置間で信号を経路指定するために設けられる。このディスクサーバ３５は、また、スイッチ８２を介してクラスタ内で接続される。これは、他のユニット５４ａ、５４ｂ及び５４ｃとアーキテクチャが同じであるそれ自身のネットワークインターフェースユニット５５を備える。２つのコンピュータと、３つ以上のコンピュータ（及びディスクサーバ３５）間の複数のリンク８４、８６、８８及び８９との間の直接接続８０は、ＬＶＤＳ（低電圧差分信号方式）リンクまたは光ファイバリンクのような適切な形態をとることができる。
図２及び図３に、ネットワークインターフェースユニット５４ａと５４ｂをより詳細に示す。ユニット５４ａは、直列リンク８０によって相互接続されているということを最初に仮定して、以下にネットワークインターフェースユニットの動作をさらに詳細に説明する。
リンク８０は、それぞれのトランシーバ／直並列変換器９０ａ及び９０ｂを介して、ネットワークインターフェースユニット５４ａと５４ｂに動作可能に接続されている。トランシーバ９０ａと９０ｂは、両方とも、リンク８０を介して双方向通信のためにデータを送受信することができる。
ネットワークインターフェースユニット間の好ましいデータ転送モードは、周知の非同期転送モード（ＡＴＭ）である。ＡＴＭでは、メッセージは、パケットすなわち「セル」で転送される。すべての通信は、ＡＴＭ ＵＮＩ（ユーザーネットワークインターフェース）規格においてフレーム化される。１つ以上の仮想回線接続が、別のデータ処理装置（例として、コンピュータ３０ａ、３０ｂ及び３０ｃ、さらにディスクサーバ３５）上で動作しているアプリケーションプログラム間でセットアップされる。ネットワークを送信される各データセルは、仮想回線接続の仮想回線接続識別子（ＶＣＩ）を含むヘッダを有する。マルチリンクの回線接続では、各リンク毎に異なるＶＣＩを含むことができる。各回線接続は、同じ回線接続識別子の下で生じるホスト装置間の双方向データ転送を具備して、全二重モードで構築される。仮想回線接続及びそれらの対応するＶＣＩは、データ処理装置の各々に存在するアプリケーションの通信要件に基づいてシステムが立ち上がるときに、通常構築される。さらに、クラスタ内のアプリケーションプログラムによって、必要に応じて、動的に、仮想回線接続を構築し、及び既存の回線接続を中断することができる。
ＡＴＭは、本実施態様に従う好ましい通信規格として説明されているが、他の通信規格及びプロトコルを、本発明に従うインターフェースシステムと共に使用することができるということも明確に考慮されている。例えば、ＴＣＰ／ＩＰプロトコルを使用することができる。周知の及び商業上利用可能な適切なフレーミング／デフレーミング用モジュールを用いることにより、本発明のシステムと関連付けてこの通信規格を構築することができる。従って、本明細書では、ＡＴＭ規格を図示し説明するが、ＴＣＰ／ＩＰ、暗号化規格及び他の互換性のある通信プロトコルを代用することができ、以下では、これらの代替的なプロトコルも含むものとして説明する。
例えば、コンピュータ３０ａ上で動作しているアプリケーション６０ａが、コンピュータ３０ｂ上で動作している特定のアプリケーション６０ｂに回線接続を構築しようとする場合には、アプリケーション６０ａは、このアプリケーションにより使用される仮想メモリアドレスによって識別される、メモリ５５ａの記憶ブロック（または複数のブロック）の内容が、コンピュータ３０ｂ上で動作しているアプリケーション６０ｂとの送受信に使用されることになることをオペレーティングシステム４６ａに通知する。アプリケーションは、また、回線接続の優先順位、プロトコル処理タイプ、関連するフロー制御パラメータ及び関連する転送最適化パラメータを、オペレーティングシステムに送信する。
コンピュータ３０ａ上のソフトウエアアプリケーションとして実装することが好ましいスイッチコントローラ８９は、仮想的な回線接続を構築するためにオペレーティングシステムから命令を受け取る。オペレーティングシステム４６ａから回線接続を構築するためのリクエストを受信したコントローラ８９は、ターゲットコンピュータのオペレーティングシステム４６ｂとの通信を開始する。コントローラは、また、後述する方法でスイッチ８２と通信を行う。コントローラ８９は、オペレーティングシステム４６ａ及び４６ｂのそれぞれに特定のＶＣＩを使用するように命令する。
回線接続が構築されると、それぞれがＶＣＩによって指示される、対応するポインタが、インターフェースユニット５４ａの送信ワークキュー（transmit work queue）ポインタレジスタ１００ａに設定される。各ポインタは、対応するＶＣＩに対する送信ワークキュー情報を記憶するために予約されているホストのメインメモリ４４ａ内の特定のアプリケーション６０ａに関連する送信ワークキュー１０１ａを指示する。メインメモリに記憶された送信ワークキュー１０１ａの各エントリは、制御（例えばＴＣＰ／ＩＰ）及びデータ情報の開始位置、及び転送すべきデータ量を含む。転送が完了すると、レジスタ１００ａのポインタは、インターフェースユニット５４ａによってレジスタ内の次のエントリに進められる。
オペレーティングシステム４６ａは、アプリケーション６０ａによって提供される仮想アドレスの、メモリ５５ａ内の対応する物理メモリアドレスへのマップを、ユニット５４ａ内のマッピングメモリ９５ａにロードする。マッピングされる物理アドレスは、コンピュータ３０ａ上で動作している他のアプリケーションによって上書きされないように、通常、オペレーティングシステムによってホスト内でロックされる。メモリ９５ａは、インターフェースユニット５４ａを介して、各仮想回線接続毎に別々のマップを含む。各仮想回線接続毎に、ホストのメインメモリ４４ａに記憶された関連する送信ワークキュー１０１ａと受信ワークキュー１０３ａ（下記）がある。マッピングメモリ９５ａ、送信ワークキューポインタレジスタ１００ａ及び受信ワークキューポインタレジスタ１１０ａ（これも下記）は、システムバス４２ａの「アドレス空間」にあり、従って、オペレーティングシステム４６ａ及びアプリケーション６０ａのそれぞれによってこれらを直接アドレスすることができる。従って、アプリケーションは、任意の時間に、これらのレジスタへの書き込み、及びこれらのレジスタからの読み出しを直接行うことができる。
転送の受信端末では、ターゲットアプリケーション６０ｂが、対象としている回線接続のデータを受信し送信することになるメモリ４４ｂ内の仮想アドレスを、オペレーティングシステム４６ｂに供給している。オペレーティングシステム４６ｂは、メインメモリ４４ｂ内の対応する物理アドレスへのこれらの仮想アドレスのマップを有するインターフェースユニット５４ｂ上のマッピングメモリ９５ｂをロードし、不慮の上書きを防止するために、ホストオペレーティングシステム４６ｂ内の物理アドレスをロックする。各仮想回線接続毎に、関連する受信ワークキュー１０３ｂがある。ワークキュー内の各エントリは、制御及びデータが転送されることになるメモリ４４ｂ内の開始仮想アドレス、及びこれらのアドレスに続くメモリ空間のバイト数を含む。受信ワークキューポインタレジスタ１１０ａ内の関連するエントリは、インターフェースユニット５４ｂに設けられる。このエントリは、その回線接続のワークキュー１０３ｂ内の次のエントリへのポインタを含む。ポインタは、最初にアプリケーション６０ａによって設定され、次に、エントリ内で指定されたワークが完了した後に、インターフェース５４ｂによって次のワークキューのエントリに進められる。アプリケーション６０ｂに、制御情報及びデータの到着を知らせるために通知技法が使用される。この技法は、周知のポーリング及び／または割り込みルーチンを含むことができる。
それぞれの仮想的な回線接続は、例えば、アプリケーション６０ａからアプリケーション６０ｂへの、及びアプリケーション６０ｂからアプリケーション６０ａへの双方向におけるデータ転送を取り扱うので、逆のセットアップ手順もまた実施される。アプリケーション６０ａはまた、その受信ワークキューポインタレジスタ１１０ａ、受信ワークキュー１０３ａ及び送信ワークキューポインタレジスタ１００ａに、適切なエントリを設定する。アプリケーション６０ｂは、必要であれば、送信ワークキュー１０１ｂ及び関連するポインタレジスタ１００ａに適切なエントリを設定する。
スイッチ８２は、インターフェースユニットと同時にコントローラ８９によってセットアップされる。この手順を以下に説明する。リンク８０〜８６を介して送信されるデータは、それぞれ４８データバイト及び５ヘッダバイトからなるＡＴＭセル内にある。データがインターフェースユニット５４ａに入る速度、及び、データがこのユニットから送信される速度の瞬間速度は、一般的にには異なるであろう。ホストメモリとの間でより大きなデータブロックを転送すること、及びネットワークリンクを介してより小さなセルを転送することもまた所望される。さらに、複数の仮想的な回線接続は、通常、任意の所定時間に開放されて、回線接続をリアルタイムで多重化し、及び多重分離するようにユニットに要求する。従って、バッファ構成がインターフェースユニットに含まれる。具体的には、バッファメモリ１２０ａを含んでおり、このバッファメモリに入力データがロードされ、このバッファメモリから出力データが取り出される（検索される）。既知の従来の任意のバッファ構成を使用することができるが、以下で説明するダイナミックバッファ構成を使用することが好ましい。なぜなら、そのサイズを他の構成のサイズよりもかなり小さくすることができるからである。しかしながら、まず、本発明が別々のコンピュータ上で動作しているアプリケーション間のデータの転送を実行する方法について説明する。
コンテキストメモリ（context memories）１４０ａ、ｂ、及びｃが、インターフェースユニット５４ａ、ｂ、及びｃに設けられる。コンテキストメモリ１４０ａは、例えば、バッファメモリ１２０ａ内の空間を占有する各回線接続または潜在的な回線接続に対するエントリを収容する。各エントリは、それのＶＣＩによって指示され、回線接続の優先順位、回線接続によって占有されるバッファメモリのバイト数、フロー制御パラメータ、ホスト転送最適化情報、プロトコル状態情報、スレッドメモリ１３０ａ内の回線接続データの送受信ヘッダアドレス（head addresses）及び送受信テールアドレス（tail addresses）、及びホスト通知メカニズム（例えば、割り込みまたはポーリングルーチン）を含む。
各ネットワークインターフェースユニット５４ａ、５４ｂまたは５４ｃは、また、アクティブ回線接続メモリ１６０ａ、１６０ｂ、または１６０ｃを備える。これらのメモリは、ダイナミックバッファメモリ１２０ａ、１２０ｂ、または１２０ｃ内のデータと共に全てのアクティブ回線接続のリストを含んでいる。すなわち、任意の入力データまたは出力データ（送信ワークキュー１０１ａに現れる）は、アクティブ回線接続メモリ１６０ａ内にエントリを有する。メモリ１６０ａは、メッセージのプライオリティ（優先順位）に従ってセクションに分割される。例えば、２つの優先順位、「高い優先順位」と「低い優先順位」がある場合には、各アクティブ回線接続メモリは、２つのセクション１６０（Ｈ）及び１６０（Ｌ）を有する。
バッファメモリへのロード及びバッファメモリからの検索を制御するコントローラ１３６ａの一部であるスケジューラ１３５ａの制御の下に、インターフェースユニット５４のそれぞれは、アクティブ回線接続メモリ１６０ａ内のより高い優先順位のエントリを１つずつ巡回し、それらのエントリに対応する送信及び受信ワークキューによって指定された動作を実行する。従って、インターフェースユニット５４ａが、その送信ワークキュー１００ａからエントリを取り出すときには、それは、コンテキストメモリに、転送される情報のメインメモリ内の開始仮想アドレス、及び転送されるバイト数を入力する。次に、ユニット５４ａは、マッピングメモリ９５ａから、メインメモリ４４ａ内の開始位置の物理アドレスを返す。ユニット５４ａは、次に、ホストのメインメモリ４４ａから、それらの位置（場所）にあるデータを取り出し、それを、バッファメモリ１２０ａ内の１組のセグメント（記憶場所のクラスタ）にロードする。次に、ユニット５４ａは、その回線接続のコンテキストメモリのエントリを更新する。具体的には、ユニット５４ａは、メインメモリ４４ａの仮想アドレスをデータが取り出されることになる次のアドレスに更新し、さらに、転送されることになるデータの量を、メモリ４４ａから取り出されるブロックのサイズだけ減少させる。
続いて、スケジューラ１３５ａが、バッファメモリ１２０ａに現在存在する制御及び／またはデータのブロックからセルを取り出し始める。セル及びフレーミング能力（フレーム化能力）を備えるパッケージングユニット１３８ａが、取り出されたデータのＡＴＭセルを構築する。すなわち、周知の技法を使用してＡＴＭヘッダにデータを追加する。パッケージングユニットは、また、データの正確さを保証するためのチェックサムルーチンの実行を含む、必要な全てのネットワーク通信機能を実行する。フレームレベルでは、コンテキストメモリ１４０ａは、ＡＴＭ  ＡＡＬ−５、ＣＲＣ及びフレームプロトコルのような状態情報を保持し、この情報をＡＴＭ規格に準拠してフレームの後端部に追加する。フレームは、別の回線接続からのセルと混合することも、混合しないこともできる複数のセルに拡張することもできるし、また、拡張しないこともできる。
受信端末では、ユニット５４ｂ内のパーサー１３９ｂがセルのヘッダを解釈し、セルのデータ部をバッファメモリ１２０ｂにロードする。入力ＡＴＭセルは、１つずつバッファ１２０ｂに入力される。その後、データが検索されて、マッピングメモリ９５ｂ内で識別されるようにホストのメインメモリ４４ｂ内の特定の物理メモリ位置（記憶場所）に転送される。所定の仮想回線接続に対するすべての送信ワークキュー記述子が完了し、及び入力または出力データがバッファメモリ１２０ａ内にこれ以上存在しない場合には、アクティブな回線接続メモリ（アクティブ回線接続メモリ）１６０ｂ内の対応するエントリが除去される。明らかに、上述の構成は効率が良い。なぜなら、メインメモリ４４ａ及び４４ｂ内の物理メモリ位置を直接使用することによって、いずれのホストオペレーティングシステムも介入することなく、制御及びデータの転送が行われるからである。
好ましいバッファ構成において、メッセージデータは、各ダイナミックバッファ１２０ａ、１２０ｂ、及び１２０ｃを介して、各ネットワークインターフェースユニット５４ａ、５４ｂ、及び５４ｃへ及びそれらから転送される。バッファのサイズは、コンピュータネットワークの要件及び速度に依存する。典型的には、ＲＡＭバッファのサイズは１６０ビット×４Ｋビットである。すなわち、６４０Ｋビットの容量があれば十分であろう。管理のために、メモリは、それぞれがたくさんの、例えば２０個の連続するメモリ位置を備えるセグメントに分割される。本例では、各メモリ位置は１バイトのデータを収容する。
バッファ構成は、バッファメモリ１２０ａに加えて、スレッドメモリ（thread memory）１３０ａ、フリーリストメモリ（free list memory）１５０ａ、及びコンテキストメモリ１４０ａを備える。スレッドメモリは、バッファメモリ１２０ａの空間を占有する送信回線リンク、及び受信回線リンクの各々に対して、回線接続によって占有されるバッファセグメントのスレッド、すなわちリンクされたリストを、データがこれらのセグメントに入力された順序で収容する。スレッド内の最初のエントリは、「ヘッド（head）」にあり、最後のものは「テール（tail）」にある。フリーリストメモリは、メモリ１２０ａ内で利用可能なセグメントのリストを含むＦＩＦＯメモリである。しかしながら、多重スレッドは、単一のメモリ内に同時に存在することができ、スレッドの各々は、コンテキストメモリ及びスレッドメモリにそれぞれ保持されているそれ自身の個別の一連のポインタ及びリンクを有する。バッファメモリ１２０ａ内に特定の回線接続に対するデータが無い場合には、バッファメモリまたはスレッドメモリのリソースはその回線接続には割り当てられず、コンテキストメモリ１４０ａ内のヘッド及びテールポインタはキャンセルされる。従って、この構成によれば、リソースをより効率良く割り当てることができ、さらに、一般的に、メモリサイズ全体をより小さいものにすることができる。
データが、メモリ１２０ａにロードされることになる場合には、バッファコントロール１３６ａが、必要に応じて、フリーリストメモリ１５０ａからフリーのバッファメモリセグメントを取り出して、そのデータをそれらのバッファセグメントにロードする。それは、また、フリーリストメモリとスレッドメモリを更新する。具体的には、各セグメントが一杯になると、そのセグメントに関連するスレッドメモリは、フリーリストから割り当てられる利用可能な次のセグメントを指示するように更新される。それは、また、その回線接続用のコンテキストメモリ１４０ａのエントリのヘッドアドレス及びバイトカウントを更新する。
データがバッファメモリ１２０ａから取り出されると、逆の手順が次に行われる。すなわち、関連するスレッドのテール（末尾）アドレスにおいて取り出し（検索）が開始される。取り出し動作が完了すると、コンテキストメモリ１４０ａ内のテール及びバイトカウントが更新される。セグメントが開放されると、それらは、メモリ１５０ａ内のフリーリストに加え戻され、関連するスレッドメモリがクリアされる。
本実施態様では、コンテキストメモリ１４０ａには、各回線リンクによって使用されるダイナミックバッファ１２０ａ内のバイト数が提供される。スレッドメモリ１３０ａの動作は、それぞれの仮想接続に対するバイト数を取得するためにモニタされる。
本発明に従うインターフェースシステムは、データ転送のダイナミック（動的）な最適化を可能にする。すなわち、このシステムは、データの大きなバルク転送、及びより小さな転送に対して効率良く動作する。この最適化は、部分的には、優先順位の確立及びフロー制御規格に基づいている。
ダイナミックバッファ１２０ａへの各書き込み動作の後には、一般的に、このバッファから情報を取り出す読み出し動作が続く。より高い優先順位の取り出し（読み出し）が最初に認識され、その後に、それより低い優先順位の取り出しが続く。優先順位内において、このシステムは、「ラウンドロビン」方式で、アクティブな回線接続エントリを連続的に巡回する。データ送信時には、１つのＡＴＭセルが、バッファメモリからネットワークリンク８４ａまで一度に転送される。受信データにおいて、可変データブロック（一般的には２５６バイト）がホストに転送され、待ち時間を最適化する。バッファが飽和し始めた場合には、データをより大きなブロックでホストコンピュータに転送することができ、転送効率を最適化して、メモリの過負荷を防止する。通常、これは、ホストの飽和の結果として生じるものであり、このために、システムバスへのアクセスが一時的に制限される。ホストのメインメモリへのより効率の良い転送モード、すなわち、より大きなブロックサイズを使用することによって、上述の構成が、オーバーフローの問題を適切に処理することは明らかである。
ネットワークインターフェースユニット５４は、それぞれのホストコンピュータのシステムバスのバスマスタとして動作する。すなわち、それらは、これらのバス上で動作を開始することができる。ネットワークインターフェースユニット５４ａで使用されるメモリまたはレジスタ９５ａ、１００ａ、１１０ａ、１３０ａ、１４０ａ、１５０ａ、及び１６０ａのそれぞれは、好ましくは、個別の物理メモリであり、そのため、これらの複数のメモリを同時にアクセスすることができるということにも注目すべきである。これによって、ネットワークインターフェースユニット５４ａの動作速度を高速化することができる。
上記の説明は、２つの個別のコンピュータ３０ａと３０ｂの間のデータ転送に焦点をあてたものである。今度は、３つ以上のリンクされたコンピュータのクラスタ間のデータの転送について説明する。上記のプロセスは変わらない。
３つ以上のコンピュータ間の通信を経路指定するために、スイッチ８２（図１）が使用される。スイッチ８２の好ましい実施態様を図４に示す。スイッチは、１組の直並列変換器２００を介して複数のコンピュータから入力信号を受信する。同様に、出力信号は、１連の出力用並直列変換器２０２を介してコンピュータに送られる。もちろん、入力及び出力信号を、コンピュータのすぐそばの種々のデータ処理装置から取得して、そこに送ることができる。例えばスイッチ８２を、１つ以上の他のスイッチと相互接続することができる。さらに、これらの入力及び出力機能を、図２に詳細に示す回路９０のような信号変換回路によって提供することができる。入力信号は、ダイナミックバッファ２０６への単一の入力を選択可能にするマルチプレクサ（ＭＵＸ）２０４に送られる。同様に、出力信号は、適切な出力用変換器２０２を選択するデマルチプレクサ（ＤＥＭＵＸ）２０８に送られる。ＭＵＸ／ＤＥＭＵＸ制御回路２１２は、ダイナミックバッファ制御回路２１０の動作に基づいてバッファへの、及びバッファからの信号の転送を制御する。ダイナミックバッファの動作は、ネットワークインターフェースユニット５４ａの動作とほぼ類似している。ダイナミックバッファ制御回路２１０は、図２及び図３のインターフェースユニットに関連して説明したメモリと同様な一連のメモリを含む。
具体的には、スイッチは、各入力ＶＣＩを、同じ回線接続の出力ＶＣＩ、及び各出力ＶＣＩ用の出力ポートにマッピングするマッピングメモリを備える。スレッドメモリ２１４、コンテキストメモリ２１８、及びアクティブ回線接続メモリは、入力ＶＣＩまたは出力ＶＣＩのいずれかに関して構成される。マッピングメモリ２１３は、コンテキストメモリに相互接続される。スイッチコントローラが各回線接続を確立するときには、それは、また、スイッチコンテキストメモリ（switch context memory）２１８、及びマッピングメモリ２１３に、対応するＶＣＩによって指示される回線接続を確立するように命令する。コンテキスト／マッピングメモリ２１８、２１３は、ヘッドアドレス、テールアドレス、バイトカウント、フロー制御状態、及び送信優先順位の各ＶＣＩに関するエントリを含む。入力セルがバッファ２０６にロードされるべきときに、出力ＶＣＩの決定が行われると仮定する。入力ＶＣＩは、セルがダイナミックバッファ２０６に書き込まれる前に、メモリ２１３からマッピングされる出力ＶＣＩに置き換えられる。物理アドレスが所定のＶＣＩと関連してマッピングされるデータ処理装置インターフェース５４ａ、５４ｂ及び５４ｃとは異なり、スイッチ８２は、ＶＣＩ−ＶＣＩ間の直接のマッピングを担う。
図示していないが、スイッチ８２と各インターフェースユニットは、システム内の種々のコンピュータ及びスイッチと通信して、過度のデータの流入を防止するフロー制御回路を備える。これらの回路は、周知の構成を使用して実施することができ、個別のデータフロー制御データラインを使用してリンクすることができる。
上記は、本発明の好ましい実施態様を詳細に説明したものである。本発明の思想及び範囲を逸脱することなく、さまざまな変更及び追加を行うことができる。例えば、説明したバッファ制御システムを変更することができ、また、それを種々の他の許容可能なバッファ制御プロトコルで代用することできる。そのようなプロトコルは、本発明に従う仮想回線接続及びそれらの対応する識別子の構築に基づいてデータを転送することができなければならない。
ＡＴＭは、利用することが可能な複数の通信規格のうちの１つに過ぎない。考慮されている他の規格に、ＴＣＰ／ＩＰがある。同様に、他のタイプのネットワークスイッチを、本発明のネットワークインターフェースユニットと共に使用することができる。最後に、「ネットワークインターフェースユニット」という用語を本明細書で使用したが、任意の許容可能なプラットフォームを本発明に従うインターフェースに対して利用することができること、及び、このインターフェースを、コンピュータ全体における常設システム、ディスク、周辺機器、あるいは他のデータ処理装置として提供することができるということを明確に考慮している。従って、上記説明は、１例に過ぎないものとして捉えられるべきものであり、本発明の範囲を限定することを意図するものではない。
【図１Ａ】
0004090510.tif 000002
【図１Ｂ】
0004090510.tif 000003
【図２】
0004090510.tif 000004
【図３】
0004090510.tif 000005
【図４】
0004090510.tif 000006