(57)【特許請求の範囲】
【請求項１】
複数のネットワーク・ステーションの間でデータ・パケットを転送するためのネットワーク・スイッチであって、
入力トークン・パッシング・リングを形成するように相互接続され、各々の入力ポートには前記リングの先行する入力ポートから入力トークンを受け取った後で入力トークンを前記リングの後続の入力ポートへ渡すための手段を含み、各々の入力ポートはまた対応するネットワーク・ステーションからのデータ・パケットを受信して転送するための手段を含む複数の入力ポートと、
出力トークン・パッシング・リングを形成するように相互接続され、各々の入力ポートには前記リングの先行する出力ポートから出力トークンを受け取った後前記リングの後続の出力ポートへ前記出力トークンを渡すための手段を含み、各々の出力ポートは対応するネットワーク・ステーションへのデータ・パケットを受信して転送するための手段を含む複数の出力ポートと、
前記入力及び出力ポートへ接続された前記入力ポートにより転送されたパケットを受信し入力転送データにしたがって前記出力ポートへ選択的に転送するためのスイッチング・システムと、
前記入力ポートと前記出力ポートと前記スイッチングシステムとを相互接続するグローバル・バスとを含み、
前記出力ポートの一つが前記出力トークンを受け取った場合でアイドル状態にある（現在パケットを受信していない）場合、前記グローバル・バス経由で前記入力ポートに対して前記入力トークンを渡し始めるように通知することと、トークンを受信する入力ポートが前記トークンを受信する出力ポートへ転送すべきパケットを受信した場合、前記トークンを受信する入力ポートは前記グローバル・バス経由で前記スイッチング・システムへ転送データを送出することを特徴とするネットワーク・スイッチ。
【請求項２】
前記トークンを受信する入力ポートが前記スイッチング・システムへ送出する前記転送データは前記トークンを受信する入力ポートを識別することを特徴とする請求項１に記載のネットワーク・スイッチ。
【請求項３】
前記トークンを受信する出力ポートはそれ自身を識別する前記スイッチング・システムへの転送データを送信して、前記トークンを受信する入力ポートに格納された前記パケットを前記トークンを受信する出力ポートへ転送することにより前記トークンを受信する入力及び出力ポートからの前記転送データに前記スイッチング・システムが応答するようにするための手段も含むことを特徴とする請求項２に記載のネットワーク・スイッチ。
【請求項４】
前記グローバル・バスへ接続されて前記グローバル・バス経由で前記出力ポートへ前記出力トークンを渡し始めるように連続的に通知するためのシーケンサ手段をさらに含むことを特徴とする請求項１に記載のネットワーク・スイッチ。
【請求項５】
前記シーケンサ手段が前記出力トークンを渡し始めるように前記出力ポートに通知したときに、前記グローバル・バス経由で前記出力ポートへ出力シード・ポートとして前記出力ポートの１つを識別する出力シード・データを送信することと、
アイドル状態ではない時に前記出力シード・ポートが前記出力トークンを渡すことで前記出力シード・データに応答し、アイドル状態の時には前記入力トークンを渡し始めるように前記グローバル・バス経由で前記入力ポートに通知することを特徴とする請求項４に記載のネットワーク・スイッチ。
【請求項６】
前記シーケンサ手段は前記出力トークンを渡し始めるように前記出力ポートに通知するたびに前記出力シード・データを変更して前記出力ポートの後続する１つが前記出力シード・ポートとして継続的に識別されるようにすることを特徴とする請求項５に記載のネットワーク・スイッチ。
【請求項７】
前記出力シード・ポートが出力トークンを受信する時に、前記グローバル・バス経由で前記シーケンサ手段へエンドオブサイクル（ＥＯＣ）信号を送信して前記出力ポートが前記出力トークンを渡すことを停止したことを伝えることを特徴とする請求項６に記載のネットワーク・スイッチ。
【請求項８】
ＥＯＣ信号受信時に前記シーケンサ手段は前記出力トークンをもう一度渡し始めるように前記出力ポートに伝えることを特徴とする請求項７に記載のネットワーク・スイッチ。
【請求項９】
前記トークンを受信する入力ポートが前記スイッチング・システムへ転送データを送信する場合に前記グローバル・バス経由で前記シーケンサ手段へエンドオブサイクル（ＥＯＣ）信号も送信して入力ポートが前記入力トークンを渡すことを停止したことを表わすことを特徴とする請求項４に記載のネットワーク・スイッチ。
【請求項１０】
ＥＯＣ信号を受信した後で、前記シーケンサ手段は前記グローバル・バス経由で前記入力ポートへＳＡＭＰＬＥ＿ＥＶＥＮＴＳ信号を送信することと、
前記ＳＡＭＰＬＥ＿ＥＶＥＮＴＳ信号を受信した後で、直前に受信した前記ＳＡＭＰＬＥ＿ＥＶＥＮＴＳ信号以後転送すべきパケットを受信した各々の入力ポートは前記グローバル・バス経由で前記シーケンサ手段へＮＥＷ＿ＲＥＱＥＳＴ信号を送信することと、
前記ＮＥＷ＿ＲＥＱＵＥＳＴ信号の受信時に、前記シーケンサ手段は前記出力トークンを渡し始めるように前記出力ポートへ通知することを特徴とする請求項９に記載のネットワーク・スイッチ。
【請求項１１】
前記ＥＯＣ信号を受信した後で、前記シーケンサ手段は前記グローバル・バス経由で前記出力ポートへＳＡＭＰＬＥ＿ＥＶＥＮＴＳ信号を送信することと、
前記ＳＡＭＰＬＥ＿ＥＶＥＮＴＳ信号を受信した後で、直前に受信したＳＡＭＰＬＥ＿ＥＶＥＮＴＳ信号以後アイドル状態になった各々の出力ポートは前記グローバル・バス経由で前記シーケンサ手段へＮＥＷ＿ＩＤＬＥ信号を送信することと、
前記ＮＥＷ＿ＩＤＬＥ信号の受信時に、前記シーケンサ手段は前記出力トークンを渡し始めるように前記出力ポートへ通知することを特徴とする請求項９に記載のネットワーク・スイッチ。
【請求項１２】
アイドル状態の出力ポートが前記入力ポートに前記入力トークンを渡し始めるように通知するときに、前記グローバル・バス経由で前記入力ポートへ前記入力ポートの１つを入力シード・ポートとして識別する入力シード・データを送信することと、
前記入力シード・ポートは前記出力ポートへ転送すべきデータ・パケットを受信しなかった場合に、前記入力トークンを渡すことで前記入力シード・データに応答し、前記出力ポートへ転送すべきデータ・パケットを受信した場合には前記グローバル・バス経由で前記スイッチング手段へ転送データを転送することによって前記入力シード・データに応答することを特徴とする請求項１に記載のネットワーク・スイッチ。
【請求項１３】
各々の出力ポートは前記入力トークンを渡し始めるように前記入力ポートに通知する度に前記出力シード・データを変更して前記入力ポートの後続のポートが前記入力シード・ポートとして継続的に識別されるようにすることを特徴とする請求項１２に記載のネットワーク・スイッチ。
【請求項１４】
各々の入力ポートは前記スイッチング・システム経由で出力ポートへ転送する前に各々の受信パケットを符号化して前記パケットの開始及び終了部分を表わす記号を含めることと、
各々の出力ポートはパケットを受信しているかまたアイドル状態にあるかを前記記号の検出で判定することと、
各々の出力ポートは対応するネットワーク・ステーションへ転送する前に各々の受信パケットを復号することを特徴とする請求項１に記載のネットワーク・スイッチ。
【請求項１５】
前記ネットワーク・ステーションの各々は固有なネットワーク・アドレスを有し、前記入力ポートによって受信されたパケットは各々が前記パケットを受信すべき宛先ネットワーク・ステーションのネットワーク・アドレスを含み、前記ネットワーク・スイッチはさらに
各々のネットワーク・ステーションのネットワーク・アドレスを前記ネットワーク・ステーションが接続されている出力ポートを識別するコードへ翻訳するためのアドレス翻訳手段と、
前記入力ポートと前記翻訳手段とを相互接続する翻訳バス手段とを含み、
前記入力ポートの各々は前記翻訳バス経由で前記アドレス翻訳手段へ受信したパケットに含まれる前記宛先ステーションの前記ネットワーク・アドレスを送出することと、
前記アドレス翻訳手段は前記宛先ステーションの前記ネットワーク・アドレスを対応する出力ポートを識別するコードに翻訳して前記翻訳バス手段経由で前記送信した入力ポートへ前記コードを返すことを特徴とする請求項１に記載のネットワーク・スイッチ。
【請求項１６】
前記グローバル・バスに接続されて前記グローバル・バス経由で前記出力ポートへ前記出力トークンを渡し始めるように継続的に通知するためのシーケンサ手段をさらに含むことを特徴とする請求項３に記載のネットワーク・スイッチ。
【請求項１７】
前記シーケンサ手段が前記出力トークンを渡し始めるように前記出力ポートに通知する時に前記グローバル・バス経由で前記出力ポートへ前記出力ポートの１つを出力シード・ポートとして識別する出力シード・データを送信することと、
前記出力シード・ポートはアイドル状態ではない場合に前記出力トークンを渡すことで前記出力シード・データに応答し、アイドル状態の時には前記入力トークンを渡し始めるように前記グローバル・バス経由で前記入力ポートに通知することで応答し、前記シーケンサ手段は前記出力ポートに前記出力トークンを渡し始めるように通知する度に前記出力シード・データを変更して前記出力ポートの継続したポートが前記出力シード・ポートとして継続的に識別されるようにすることを特徴とする請求項１６に記載のネットワーク・スイッチ。
【請求項１８】
前記出力シード・ポートが前記出力トークンを受信する時に前記グローバル・バス経由で前記シーケンサ手段へ前記出力ポートが前記出力トークンを渡すことを停止したことを表わすエンドオブサイクル（ＥＯＣ）信号を送信することと、
前記ＥＯＣ信号の受信時に、前記シーケンサ手段は前記出力トークンを渡し始めるように前記出力ポートに通知することを特徴とする請求項１７に記載のネットワーク・スイッチ。
【請求項１９】
前記トークンを受信する入力ポートが前記スイッチング・システムへ転送データを送出する時に、前記グローバル・バス経由で前記シーケンサ手段へ前記入力ポートが前記入力トークンを渡すことを停止したことを示すエンドオブサイクル（ＥＯＣ）信号も送信することと、
前記ＥＯＣ信号を受信した後で、前記シーケンサ手段は前記グローバル・バス経由で前記入力ポートへＳＡＭＰＬＥ＿ＥＶＥＮＴＳ信号を送信することと、
前記ＳＡＭＰＬＥ＿ＥＶＥＮＴＳ信号を受信した後で、それまでに受信したＳＡＭＰＬＥ＿ＥＶＥＮＴＳ信号以後転送すべきパケットを受信した各々の入力ポートは前記グローバル・バス経由で前記シーケンサ手段へＮＥＷ＿ＲＥＱＵＥＳＴ信号を送信することと、
前記ＮＥＷ＿ＲＥＱＵＥＳＴ信号の受信時に、前記シーケンサ手段は前記出力ポートに前記出力トークンを渡し始めるように通知することと、
前記ＥＯＣ信号を受信した後で、前記シーケンサ手段は前記グローバル・バス経由で前記出力ポートへＳＡＭＰＬＥ＿ＥＶＥＮＴＳ信号を送信することと、
前記ＳＡＭＰＬＥ＿ＥＶＥＮＴＳ信号を受信した後で、それまでに受信したＳＡＭＰＬＥ＿ＥＶＥＮＴＳ信号以後アイドル状態になった各々の出力ポートは前記グローバル・バス経由で前記シーケンサ手段へＮＥＷ＿ＩＤＬＥ信号を送信することと、
前記ＮＥＷ＿ＩＤＬＥ信号受信時に、前記シーケンサ手段は前記出力トークンを渡し始めるように前記出力ポートへ通知することを特徴とする請求項１７に記載のネットワーク・スイッチ。
【請求項２０】
アイドル状態の出力ポートが前記入力トークンを渡し始めるように前記入力ポートに通知する時に、前記グローバル・バス経由で前記入力ポートへ前記入力ポートの１つを入力シード・ポートとして識別する入力シード・データを送信することと、
前記入力シード・ポートは前記出力ポートへ転送すべきデータ・パケットを受信しなかった場合には前記入力トークンを渡すことにより前記入力シード・データへ応答し、前記出力ポートへ転送すべきデータ・パケットを受信した場合には前記グローバル・バス経由で前記スイッチング手段へ転送データを転送することにより前記入力シード・データに応答することと、
各々の出力ポートは前記入力トークンを渡し始めるように前記入力ポートに通知する度に前記出力シード・データを変更して前記入力ポートの継続するポートが前記入力シード・ポートとして継続的に識別されるようにすることを特徴とする請求項１７に記載のネットワーク・スイッチ。
【発明の詳細な説明】
発明の背景
発明の分野
本発明は一般にネットワーク・ステーション間でデータを転送するためのスイッチに関し、さらに詳しくはスイッチを通過する転送パスの競合する要求を調停するためのシステムを含むスイッチに関する。
関連技術の説明
ネットワークではコンピュータ間又は他の種類のネットワーク・ステーション間でデータ転送する。例えば、１０ＢＡＳＥ−Ｔイーサネット・システムではスター型ネットワーク配置でツイステッドペア線導体の組を使用して集中ハブ又はスイッチへネットワーク・ステーションを接続する。１０ＢＡＳＥ−Ｔハブはいずれか１つのネットワーク・ステーションからのデータ・パケットを受け取り他の全てのネットワーク・ステーションへそれをもう一度ブロードキャストする単純なリピータである。データ・パケット内のヘッダはそのパケットが予定している宛先ネットワーク・ステーションを表わしており、各々のネットワーク・ステーションはパケット・ヘッダを参照してパケットを受け入れるか又は無視するかを決定している。ハブ・リピータの欠点の１つは各々のネットワーク・ステーションへデータ・パケットを伝送するツイステッドペア線がそのステーションに向けられたパケットだけではなく、他の全てのステーションに向けられたパケットをも伝送しなければならないことである。つまり、所定の時間には１つだけのネットワーク・ステーションがパケットを送信できる。
一方でネットワーク・スイッチは入力パケットをこれの宛先ステーションだけに転送することで各々のネットワーク・ステーションに向けられたパケット・トラフィックだけを受け取るようにしており、多くのネットワーク・スイッチは同時に多重のパケット通信を処理する。ネットワーク・スイッチはネットワーク・ステーションからのパケットを受信するための入力ポートと、ネットワーク・ステーションへパケットを送信するための出力ポートと、入力ポートからの各々の入力パケットを適当な出力ポートへ選択的に転送するスイッチング・メカニズムを含む。入力ポートは入力パケットを格納し、パケット・ヘッダに含まれる転送データから宛先出力ポートを決定し、入力ポートと宛先出力ポートの間のスイッチ接続を調停するのが代表的である。接続が確立されると、入力ポートはスイッチ経由で出力ポートへパケットを送出する。
入力ポートは競合する接続要求を有することがあるので、ネットワーク・スイッチは何らかの種類の調停システムを提供して要求が許容される順序を決定しなければならない。代表的なネットワーク・スイッチでは各々の入力ポートが接続要求を中央アービタ（central arbiter）に送出する。中央アービタは出力ポートのビジー状態をモニタして出力ポートがアイドル状態になったときに保留中の要求が許可される順序を決定する。アービタが要求を許可するとスイッチング・メカニズムに制御データを送出して入出力ポート間に所望の接続を行なわせてから、要求を行なった入力ポートに肯定応答を送信する。入力ポートはスイッチング・メカニズム経由で出力ポートへデータを転送する。概して、中央アービタは各々の入力および／または出力ポートに優先順位を割り当てており最も優先順位の高いポートに要求する。多くの中央アービタは時間経過とともに接続権を公平に分配できるように入出力ポートの優先順位を回転させる。
タミールらの論文「ＶＬＳＩ通信スイッチ用の対称型クロスバ・アービタ」（"Symmetric Crossbar Arbiters for VLSI Communication Switches", published*****, 1993 by Tamir et al., in IEEE Transactions on Parallel andDistributed Systems, Vol. 4, no. 1）はＮ台のネットワーク・ステーションの間でデータを転送するＮ×Ｎクロスポイント・スイッチ用の集中「ウェーブフロント」アービタを開示している。このアービタはクロスポイント・スイッチの各々の考えられる接続ごとに１つずつ、調停セルのＮ×Ｎアレイを含む。各々の入力ポートはセルの１列に対応し列の各々のセルに対して独立した要求信号を供給する。各々の出力ポートは１行のセルに対応し行の各々のセルに独立したビジー信号を供給する。セルは優先順位にしたがって順位付けされている。入力ポートが出力ポートへの接続を探す時にはＮ出力要求信号の１つをアサートする。アサートされた要求信号が出力ポートに対応する行の調停セルを駆動する。その調停セルは他に何らかの許可を禁止するものがない場合には最も優先順位が高いセルで要求を許可する。優先順位はトークン・パッシング・リングを用いてセル同士の間で定期的にシフトされて入力ポートと出力ポートの両方に接続権の公平な割り当てを提供する。このシステムでの問題の１つは調停システムがネットワーク・ステーションの台数Ｎの自乗にしたがって増大し実現が困難になることである。
フラナゼク（Franaszek）に１９８９年３月２１日付で特許付与された米国特許第４，８１４，７６２号では調停システムが非集中化されているクロスポイント・スイッチを用いたネットワーク・スイッチを開示している。接続を調停するには、入力ポートと出力ポートが互いに「デルタ」ネットワーク経由で直接通信する。入力ポートがパケットを受け取るとデルタ・ネットワーク経由で出力ポートへ要求を送出する。出力ポートは接続要求を受けるとデルタ・ネットワーク経由で入力ポートへ応答を返す。応答は入力ポートと出力ポートの間に要求された接続を確立できる時間を入力ポートに与える。指示された時間に、入力ポートはクロスポイント・スイッチへ制御データを送出して接続を確立する。デルタ・ネットワークは転送ノードの幾つかのステージで形成される。各々の転送ノードは２つの入力ポートの一方から、又は先行するステージの２つのノードの一方から要求を受け取る。要求を受信するとノードは要求に含まれる宛先ポート・アドレスを検索して次のステージの２つのノードの一方へ、又は２つの出力ポートの一方へ要求を転送する。つまり要求はノードからノードへわたることで入力ポートと出力ポートの間を進む。応答は同様の方法でデルタ・ネットワーク経由で出力ポートから入力ポートへ伝えられる。デルタ・ネットワークは本質的に先に到着したものを先に取り扱う方法で同じ出力ノードへの競合する要求を調停する。このシステムではアービタのサイズもネットワーク・ステーションの台数よりも急速に増大する。
カイザーら（Kaiser et al）へ１９９５年７日４日付で特許付与された米国特許第５，４３０，４４２号では、クロスポイント・スイッチによって数個のポートを相互接続するネットワーク・スイッチのための部分的分散型調停システムが開示されている。このシステムでは接続権の調停は中央アービタで取り扱うがクロスポイント・スイッチの制御はポート間に分散している。ポートとアービタは共通の調停バスによって相互接続される。ネットワーク供給源からパケットを受け取る各々の入力ポートは調停バス上へ中央アービタへの接続要求を送出する。アービタは接続要求を許可する順序を決定し要求が許可されるとバス経由で入力ポートへ知らせる。接続要求が許可されると入力ポートはバス経由で宛先出力ポートに直接問い合わせて宛先出力ポートがビジー状態かどうかを調べる。宛先出力ポートがビジーでなければ、受信側ポートはクロスポイント・スイッチへ制御データを送出して接続を確立する。調停システムはネットワーク・ステーションの台数が増加するにつれて増大はしないが、調停バスのバンド幅によりシステムが要求を取り扱うことのできる速度が制限される。
大多数のネットワーク・ステーションからの接続要求に迅速かつ公平に応答できるようなコンパクトな調停システムを備えたネットワーク・スイッチが必要とされる。
発明の概要
本発明によるローカル・エリア・ネットワーク・スイッチは対応するネットワーク・ステーションからの入力パケットを受信して格納するための一組の入力ポートと、対応するネットワーク・ステーションへパケットを転送するための一組の出力ポートと、入力ポートから出力ポートへパケットを選択的に転送するためのスイッチング・システムとを含む。入出力ポートとスイッチング・システムはグローバル通信バスで相互接続される。出力ポートはさらに相互接続されて出力トークン・パッシング・リングを形成し、一方で入力ポートは相互接続されて入力トークン・パッシング・リングを形成する。アイドル状態の出力ポートが出力トークンを受け取るとグローバル・バス経由で入力ポートへ入力トークン・パッシング・サイクルを開始するように指示する。出力トークン・ホルダーもグローバル・バス経由でスイッチング・システムへ識別コード（ＩＤ）を送出する。入力トークン・パッシング・サイクルの間、出力トークン・ホルダーへ宛てたパケットを格納している入力ポートはこれが入力トークンを受け取った最初の入力ポートであれば出力トークン・ホルダーへの接続を確立できる。入力ポートはグローバル・バス経由でスイッチング・システムへＩＤを送出することによって接続を確立する。入力ポートと出力ポートのＩＤを受け取ったスイッチング・システムはこれらの間に接続を確立する。
トークン・パッシング・リングは高速で動作し大多数のポートを効率的に取り扱うことができる。情報はグローバル・バスを通過してトークン・パッシング・サイクルを開始させ接続を行なうべき時にスイッチング・システムへポートＩＤを送出するだけなので、グローバル・バスのバンド幅制限は調停時間にそれほどの悪影響を与えない。
したがって本発明の目的はネットワーク・ステーション間でデータを転送するためのスイッチを提供することである。
本発明の別の目的は資源を転送する切替要求の競合を調停するためのシステムを提供することである。
本明細書の終末部分では本発明の主題を特に指摘し明確に請求している。しかし同じ参照番号が同一の部材を表わしている添付の図面に鑑みて、本明細書の残りの部分を読むことにより、当業者は本発明の構成及び動作方法を、本発明の更なる利点及び目的と併せて、最も良く理解するであろう。
【図面の簡単な説明】
図１と図２は２４台までのネットワーク・ステーションの間でシリアル・データ・パケットを転送するための本発明によるローカル・エリア・ネットワーク（ＬＡＮ）・スイッチを示す。
図３はさらに詳細なブロック図の形式で図２の入力バッファＲＢ０を示す。
図４はさらに詳細なブロック図の形式で図２の出力バッファＴＢ０を示す。
図５は図４の入力シーケンサ７４によって行なわれる同期処理を示す状態図である。
図６はさらに詳細なブロック図の形式で図２のメモリ・コントローラ回路２４を示す。
図７はさらに詳細なブロック図の形式で図１のアドレス・マッピング・システム２６と図３のアドレス翻訳ユニット４４を示す。
図８は図７のステートマシン１００の動作を示すフローチャートである。
図９は図７のステートマシン９５の動作を示すフローチャートである。
図１０は図２の出力アービタＲＡ０の出力ポーリング・バージョンをさらに詳細なブロック図の形で示す。
図１１は図１０のステートマシン１２０の動作を示すフローチャートである。
図１２は図２の入力アービタＲＡ０の出力ポーリング・バージョンをさらに詳細なブロック図の形式で示す。
図１３はステートマシン１７０の動作を示すフローチャートである。
図１４は図２の調停シーケンサ２２の出力ポーリング・バージョンをさらに詳細なブロック図の形式で示す。
図１５は図１４のステートマシン２１０の動作を示すフローチャートである。
図１６は図２の調停シーケンサ２２のイベント駆動バージョンをさらに詳細なブロック図の形式で示す。
図１７は図１６のステートマシン４００の論理を詳説したフローチャートである。
図１８は図２の出力アービタＴＤ０のイベント駆動バージョンをさらに詳細なブロック図の形式で示す。
図１９は図１８のステートマシン５００の動作を示すフローチャートである。
図２０は図２の出力アービタＲＡ０のイベント駆動バージョンをさらに詳細なブロック図の形式で示す。
図２１と図２２は図２０のステートマシン６００の動作を示すフローチャートである。
好適実施例の詳細な説明
図１Ａは２４台までのネットワーク・ステーションの間でシリアル・データ・パケットを転送するための本発明によるローカル・エリア・ネットワーク（ＬＡＮ）スイッチ１０を示す。スイッチ１０はシリアル入力バスＲＸ０〜ＲＸ２３経由でネットワーク・ステーションからのデータ・パケットを受信してシリアル出力バスＴＸ０〜ＴＸ２３経由でネットワーク・ステーションへ転送する。
スイッチ１０は各々が入力バスＲＸ０〜ＲＸ２３の対応する１本に到着した到着パケットを受信して格納する一組の入力ポートＲＰ０〜ＲＰ２３と、各々が出力バスＴＸ０〜ＴＸ２３の対応する１本へ送信するためにパケットを格納する一組の出力ポートＴＰ０〜ＴＰ２３とを含む。スイッチング・システム１１は入力ポートＲＰ０〜ＲＰ２３に格納されたパケットを出力ポートＴＰ０〜ＴＰ２３の適当な１本へ転送する。スイッチング・システム１１は各々が入力ポートＲＰ０〜ＲＰ２３の対応する１つに接続されている２４本の「垂直」入力線（導体）Ｖ０〜Ｖ２３の組と各々が出力ポートＴＰ０〜ＴＰ２３の対応する１つに接続されている２４本の「水平」出力線Ｈ０〜Ｈ２３の組とを含む。グローバル・バス（ＧＬＯＢＡＬ＿ＢＵＳ）に入力ポート及び出力ポートから伝送されて来た入力制御データに応答して、スイッチング・システム１１は水平及び垂直導体の間の何らかの対の間の接続を行なったり遮断したりでき、これによりいずれかの入力ポートからいずれかの出力ポートへのパケット転送パスを接続したり遮断したりできる。
入力ポートＲＰ０〜ＲＰ２３はバスＭＡＰＰＩＮＧ＿ＢＵＳ経由でアドレス・マッピング・システム２６にアクセスする。マッピング・システム２６は各々のネットワーク・ステーションのネットワーク・アドレスをネットワーク・ステーションが接続されている特定の出力バッファＴＰ０〜ＴＰ２３へ関連付ける。入力ポートたとえばポートＲＰ０がパケットを受け取り格納するとパケットに含まれる宛先ステーションのネットワーク・アドレスをマッピング・バス経由でアドレス・マッピング・システム２６へ送信する。アドレス・マッピング・システムはパケットを受信すべき出力ポートたとえばＴＰ１の識別コード（ＩＤ）を返す。入力ポートと出力ポートは接続を調停する。出力ポートＴＰ０〜ＴＰ２３は相互接続されて出力トークン・パッシング・リングを形成する。「出力トークン」は各々の出力ポートがリングの次の出力ポートへ送信する信号（ＯＵＴＰＵＴ＿ＴＯＫＥＮ）である。１つの出力ポートはこれの出力ＯＵＴＰＵＴ＿ＴＯＫＥＮ信号をアサートすることで出力トークンを次へ「渡す」。入力ポートＲＰ０〜ＲＰ２３も同様に相互接続されて入力トークン・パッシング・リングを形成する。
調停シーケンサ２２はグローバル・バス経由で出力ポートＴＰ０〜ＴＰ２３の全部へ「出力シード」を送信することにより出力トークン・パッシング・サイクルを開始する。出力シードは選択された１つの出力ポートを出力シード・ポートとして識別するコードである。出力シード・ポートが出力シードを受け取ると、アイドル状態か又はビジー状態かを調べる。出力ポートは現在データ・パケットを受信している場合には自分を「ビジー状態」であると見なし、現在データ・パケットを受信していない場合には自分を「アイドル状態」であると見なす。出力シード・ポートがアイドル状態の場合接続を求める権利を「勝ち取る」。このような場合勝ち残った出力ポートがグローバル・バス経由で入力ポートＲＰ０〜ＲＰ２３の全部に対してこれらの１つを入力シード・ポートとして識別する「入力シード」を送出することにより入力トークン・パッシング・サイクルを開始する。勝ち残った出力ポートはまた自分自身のＩＤを全部の入力ポートへとスイッチング・システム１１へグローバル・バス経由で送出する。
入力シード・ポートが入力シードを受け取ると出力シード・ポートへ送信すべきデータ・パケットを現在格納しているかどうか調べる。パケットがあれば調停を勝ち取った入力シード・ポートはグローバル・バス経由でＩＤコードを出力ポート、スイッチング・システム１１、調停シーケンサ２２へ送出する。調停シーケンサ２２は勝ち残った入力ポートのＩＤを受信するとスイッチング・システム１１へライトイネーブル（ＷＥ）信号を送信する。勝ち残った入力ポートと出力ポートのＩＤを受信したスイッチング・システム１１にこれらの間の接続を確立することでＷＥ信号に応答する。勝ち残った出力ポートは勝ち残った入力ポートのＩＤを受信してから、自分自身をビジー状態と見なす。ＷＥ信号をパルスした後、調停シーケンサ２２は勝ち残った入力ポートのＩＤをグローバル・バスの応答線（ＲＥＳＰ）経由で入力ポートＲＰ０〜ＲＰ２３の全部に転送する。これによりスイッチング・システム１１経由で勝ち残った出力ポートへデータ・パケットを送信開始して良いことを勝ち残った入力ポートに知らせる。
入力シード・ポートが入力シードを受け取った時に出力シード・ポートへ送出すべきパケットを格納していない場合、入力シード・ポートは入力トークンを次の入力ポートへ渡す。その入力ポートが出力シード・ポートへ送出すべきパケットを有していれば、調停を勝ち取りグローバル・バス経由で全部の出力ポート、スイッチング・システム１１、調停シーケンサ２２へＩＤを送出し出力シード・ポートへの接続を確立する。それ以外の場合、入力トークン・ホルダーは入力トークンを次の入力ポートへ渡す。入力トークン・パッシング・サイクルは入力ポートが調停を勝ち取るまで、又は入力トークンが入力トークン・パッシング・リングを回って進み入力シード・ポートに戻って来るまで継続する。その場合、入力シード・ポートはサイクル終了（「ＥＯＣ」）コードを出力シード・ポートに送信して送信すべきパケットをどの入力ポートも持っていないことを伝える。ＥＯＣコードの受信時に、又は接続が行なわれたことを表わす有効入力ポートＩＤの受信時に、出力トークン・ホルダーは出力トークンを次の出力ポートへ渡す。
出力トークン・ホルダーがビジー状態の場合、入力トークン・パッシング・サイクルを開始せずにリングの次の出力ポートへ出力トークンをすぐに渡す。出力トークン・ホルダーがアイドル状態の場合、自分自身のＩＤとISを全ての入力ポートＲＰ０〜ＲＰ２３に送出して新しい入力トークン・パッシング・サイクルを開始する。入力シード・ポートから始める入力ポートは入力ポートが調停を勝ち取るか又は入力シード・ポートが出力トークン・ホルダーへＥＯＣコードを返送するまで前述のように入力トークンを渡す。いずれの場合も出力トークン・ホルダーは次の出力ポートへ出力トークンを渡し、この時点でさらに別の入力トークン・パッシング・サイクルを開始する。処理は継続して各々の出力ポートが出力トークンを受け取り、アイドル状態なら出力ポートに向けられたパケットを有する入力ポートを見付けようとして入力トークン・パッシング・サイクルを開始する。
出力トークンが出力シード・ポートへ戻ると、調停シーケンサ２２へＥＯＣコードを送出して出力トークン・パッシング・サイクルが終了に達したことを表わす。調停シーケンサ２２はこの後で出力ポートＴＰ０〜ＴＰ２３へ別の出力シードを送出して次のトークン・パッシング・サイクルを開始する。
前述の説明から明らかなように、出力シード・ポートは入力トークン・パッシング・サイクルを介する最初の機会を有していることから出力トークン・パッシング・サイクルの間に接続を取得する最高の優先順位を有している。全部の出力ポートが長期的に接続を確立する等しい機会を有することを保証するには、調停シーケンサ２２は出力ポートＴＰ０〜ＴＰ２３の次に連続するポートを出力シードに選択することによって各々の接続した出力トークン・パッシング・サイクルを開始する。同様に、入力シード・ポートは接続を行なう最初の機会を有しているので、入力トークン・パッシング・サイクルの間に現在の出力トークン・ホルダーへの接続を取得する最高の優先順位を有している。したがって全部の入力ポートが長期的に等しく扱われることを保証するには、出力ポートが入力トークン・パッシング・サイクルを開始する度に各々の出力ポートが入力ポートＲＰ０〜ＲＰ２３の次に連続するポートを入力シード・ポートとして選択する。
図２は図１のローカル・エリア・ネットワーク・スイッチ１０をさらに詳細なブロック図の形式で示す。図１の入力ポートＲＰ０は図２に図示してあるように入力アービタＲＡ０と入力バッファＲＢ０を含む。入力バッファＲＢ０は線ＴＸ０に到着するパケットを受信して格納し、後で線Ｖ０に転送する。図１の出力ポートＴＰ０は図２に図示した出力アービタＴＡ０と出力バッファＴＢ０を含む。出力バッファＴＢ０は線Ｈ０に到着するパケットを受信して格納し線ＲＸ０経由でネットワーク・ステーションへ転送する。入力ポートＲＰ１〜ＲＰ２３と出力ポートＴＰ１〜ＴＰ２３も同様のバッファ及びアービタ構成要素を有する。全ての入力アービタＲＡ０〜ＲＡ２３が入力トークン・パッシング・リングを形成し全ての出力アービタＴＡ０〜ＴＡ２３が出力トークン・パッシング・リングを形成する。グローバル・バスは全アービタと調停シーケンサ２２を相互接続する。
図１のスイッチング・システム１１はクロスポイント・スイッチ１２、ランダム・アクセス・メモリ（ＲＡＭ）１４、メモリ・コントローラ回路２４を含む。クロスポイント・スイッチ１２は各々が横方向線Ｈ０〜Ｈ２３の１本へまた縦方向線Ｖ０〜Ｖ２３の１本へ接続したソース及びドレイン端子を有するＣＭＯＳパス・トランジスタ２０のアレイを含む。ランダム・アクセス・メモリ（ＲＡＭ）１４は２４ビット・ワード２４個を格納し各々のトランジスタ２０のゲートへ別々の制御信号ＣＯＮＴを供給する。制御信号ＣＯＮＴがアサートされると、パストランジスタ２０をＯＮにし、これによって垂直線Ｖ０〜Ｖ２３の１つと水平線Ｈ０〜Ｈ２３のあいだに信号パスを設定する。トランジスタ２０のＪ列目のトランジスタ２０に供給される各々の制御信号ＣＯＮＴの状態はＲＡＭ１４に格納されたＪ番目のデータワードの対応するビットで決定される。調停シーケンサ２２からのライトイネーブル（ＷＥ）パルスを受信すると、メモリ・コントローラ回路２４はビット線Ｂ０〜Ｂ２３にワードを入れることにより選択された２４ビット・ワードをＲＡＭ１４に書き込みワード線Ｗ０〜Ｗ２３の１本にパルスする。ＲＡＭ１４へワードを書き込む際に、メモリ・コントローラ回路２４はビットＢ０〜Ｂ２３の１本を除き全て論理値「０」にセットして残ったビットを論理値「１」にセットする。メモリ・コントローラ回路２４はグローバル・バスに現われる勝ち残った入力ポートＩＤに応答して「１」にセットすべきビットを選択しグローバル・バスに現われる勝ち残った出力ポートＩＤに応答してパルスすべきワード線Ｗ０〜Ｗ２３を選択する。「１」にセットしたビットがＲＡＭ１４に到着すると、これに対応するトランジスタ２０に供給される制御信号ＣＯＮＴ信号をアサートする。トランジスタは勝ち残った入力ポートと出力ポートに継がる横方向線と縦方向線の間に接続を行なう。
たとえば入力バッファＲＢ０等の入力バッファがＲＸ０に到着するパケットを受信して格納する場合、パケットのアドレス・データを調べてマッピング・バス経由でアドレス・マッピング・システム２６と通信し、たとえば、ＴＢ１等の出力バッファにパケットを受信すべきかを決定する。入力バッファＲＢ０は入力アービタＲＡ０へ線Ｖ０経由で接続要求を送信し、接続要求で出力バッファＴＢ１を識別する。後述するように、入力ポートは無動作要求とデータ・パケットを符号化して入力アービタがこれらを識別できるようにまたいつ始まって終るのかを伝えるようにする。入力アービタＲＡ０が線Ｖ０の接続要求を検出すると、接続要求に含まれる出力バッファＩＤ（ＴＢ１）を保存した後で出力バッファＴＢ１への接続を調停する。
２４個の出力アービタＴＡ０〜ＴＡ２３は対応する横方向導体Ｈ０〜Ｈ２３から出力バッファＴＢ０〜ＴＢ２３へ伝送されるデータ・パケットをモニタする。出力ポートＴＰ１への接続が確立されると、出力アービタＴＡ１は内部「アイドル」フラグをセットしてその出力ポートＴＰ１がデータ・パケット受信中のためビジー状態であることを表わす。線Ｈ１に現われるデータ・パケットの終りを検出すると、出力アービタＴＡ１は内部ＩＤＬＥフラグをリセットしてポートＴＰ１がアイドル状態であることを表わす。後述するように、各々の出力アービタＴＡ０〜ＴＡ２３は調停処理中にＩＤＬＥフラグを調べて出力ポートＴＰ０〜ＴＰ２３がアイドル中かどうかしたがって新規接続に利用できる状態かを決定する。
入力バッファ
図３はさらに詳細なブロック図の形式で図２の入力バッファＲＢ０を示したものである。入力バッファＲＢ１〜ＲＢ２３も同様である。ネットワーク・ステーションはイーサネット１０ＢＡＳＥ−Ｔプロトコルを用いてバスＲＸ０経由でシリアルの形で入力バッファＲＢ０へデータ・パケットを送信する。標準のイーサネット・プロトコルに準拠したデータ単位としてフォーマットされたデータ・パケットは可変長であり表Ｉに示したようなフィールドを含んでいる：
0003852953.tif 000002
ＰＲＥＡＭＢＬＥとＳＴＡＲＴフィールドは全てのパケットについて同一の固定データ・パターンである。ＤＥＳＴフィールドはパケットを受信するネットワーク・ステーションのネットワーク・アドレスを表わす。ＳＲＣフィールドはパケットを送信したネットワーク・ステーションのネットワーク・アドレスを表わす。ＴＹＰＥ／ＬＥＮフィールドは使用しているプロトコルにしたがって、パケットの種類か、又はＤＡＴＡフィールドの長さのどちらかを表わすことができる。ＤＡＴＡフィールドはパケット・ペイロード・データを保持しており４６バイトから１５００バイトの長さとすることができる。ＣＲＣフィールドは受信側ネットワーク・ステーションで使用して送信中にパケットが混乱したかどうかを判定するためのフレーム・チェック・フィールドである。
図３を参照すると、従来の１０ＢＡＳＥ−Ｔネットワーク・インタフェース回路３０は入力バスＲＸ０に到着する到着パケットを受信する。バス上に伝送されるキャリア信号はパケット通信の始まりと終りとを表わす。データ・パケットの各ビットが到着すると、ネットワーク・インタフェース回路３０はＬＯＡＤ信号をパルスして４ビット・シリアル入力／パラレル出力・シフトレジスタ３１にビットを格納する。プレアンブルに続くデータ・パケットの第１の４ビット「ニブル」（１／２バイト）がシフトレジスタ３１にロードされると、ネットワーク・インタフェース回路３０はシフト−イン信号（ＳＩ）を先入れ先出し（ＦＩＦＯ）バッファ３２にアサートし、ＦＩＦＯバッファにニブルを格納させる。ネットワーク・インタフェース回路３０はデータ・パケットの連続したニブルの各々をバッファ３２にロードし続ける。
ＦＩＦＯバッファ３２に一番長く格納されているニブルがプレアンブルに続くデータ・パケットの第１のニブルであれば、ネットワーク・インタフェース回路３０はバッファステートマシン３４へＳＴＡＲＴ信号を送信する。バッファステートマシン３４はバッファメモリのランダム・アクセス・メモリ（ＲＡＭ）３６へのデータ・パケット格納を制御する。ＳＴＡＲＴ信号の受信時に、バッファステートマシン３４はシフト−アウト信号（ＳＯ）をパルスし始め、各々のパルスがＦＩＦＯバッファ３２に４ビット・データバス６１経由でＲＡＭ３６へ４ビット・データ・ニブルをシフトアウトさせる。バッファステートマシン３４で生成されたアドレス及びリード／ライト制御信号により制御されるＲＡＭ３６はパケット・データ・ニブルをシーケンシャルなアドレスに格納する。ネットワーク・インタフェース回路３０はＦＩＦＯバッファ３２にロードした各々のパケットのニブルをカウントし、さらにバッファステートマシン３４によって発生したＳＯ信号のパルスもカウントしてバッファステートマシン３４の何個のニブルがＲＡＭ３６に格納されたかを決定する。ネットワーク・インタフェース回路３０がパケットの最後のニブルをＦＩＦＯバッファ３２へシフトした後、ネットワーク・インタフェース回路３０はバッファステートマシン３４がＦＩＦＯバッファ３２からシフトアウトしたニブルの個数をカウントし続け、バッファステートマシン３４にＥＮＤ信号を送信してパケットの最後のニブルを取得したことを知らせる。バッファステートマシン３４はＲＡＭ３６に到着パケット・データのニブルが格納される度にこれもカウントする。ネットワーク・インタフェース回路３０からのＥＮＤ信号を受信した後、バッファステートマシン３４はパケットのヘッダ部分にあるＬＥＮＧＴＨフィールドとしてＲＡＭ３６にカウントを格納する。パケットが後に出力バッファへ転送される際に、出力バッファはＬＥＮＧＴＨフィールドからパケットの長さを決定する。
ＲＡＭ３６にパケット・データをロードした後、バッファステートマシン３４はデータ・パケットの発信元及び宛先フィールド（ＳＲＣ、ＤＥＳＴ）がＦＩＦＯバッファ３２にいつ現われるかをニブル・カウントから決定する。この時点でバッファステートマシン３４は翻訳信号（ＴＲＡＮＳ）を生成して、一対のレジスタ４０及び４２にＳＲＣ及びＤＥＳＴフィールドを格納させる。ＴＲＡＮＳ信号はレジスタ４０及び４２で新規アドレス・データが利用可能であることをアドレス翻訳回路４４に伝える。アドレス翻訳回路４４は図２のアドレス・マッピング・システム２６へ割り込み信号を送出する。アドレス・マッピング・システムはネットワーク・アドレスからスイッチ入出力ポートＩＤへ翻訳するためのテーブルを保持している。割り込みの受信時に、アドレス・マッピング・システムはアドレス翻訳回路４４からのＳＲＣ及びＤＥＳＴフィールドと出力バッファＴＢ０のＩＤを取得する（入力バッファＲＢ０経由でパケットを送信した発信元ネットワーク・ステーションはネットワーク通信を受信するための入力バッファＴＢ０にも接続されている）。アドレス・マッピング・システムはマッピング・テーブルを更新してＳＲＣフィールド・アドレスを出力バッファＴＢ０へマッピングする。アドレス・マッピング・システムは、後に他のいずれかのネットワーク・ステーションがバッファＴＢ０へ接続された発信元ネットワーク・ステーションへパケットを送信する際に、このマッピングを使用する。
アドレス・マッピング・システム２６（図１）はアドレス翻訳回路４４から取得したＤＥＳＴフィールドから宛先ネットワーク・ステーションが接続されている出力バッファのＩＤに翻訳して出力ポートＩＤ（ＰＯＲＴ＿ＩＤ）をアドレス翻訳回路４４へ返す。アドレス翻訳回路４４はＦＩＦＯバッファ４５に出力ポートＩＤ（ＰＯＲＴ＿ＩＤ）を供給する。ＦＩＦＯバッファ４５にもっとも長く格納されているＰＯＲＴ＿ＩＤが接続要求ジェネレータ回路４６に供給される。ＦＩＦＯバッファ４５は送信ステートマシン５０が空の場合には送信ステートマシン５０へＥＭＰＴＹ信号を供給しポートＩＤを格納している時にはデアサートする。送信シーケンサ５０は入力バッファＲＢ０から図２の入力アービタＲＡ０とクロスポイント・スイッチ１２へ導体Ｖ０上に送出されるデータ・パケットと接続要求のフローを制御する。シーケンサ５０は応答バッファ６４からＧＲＡＮＴＥＤ信号を受信する。応答バッファ６４は図２の調停シーケンサ２２からのグローバル・バスのＲＥＳＰ線をモニタする。前述したように、図２の調停シーケンサ２２が接続要求を許可すると、ＲＥＳＰ線に応答を送信し、応答が接続を要求した入力バッファのＩＤを表わす。応答バッファ６３が入力ポートＲＰ０のＩＤを伝送する応答を検出すると、ＧＲＡＮＴＥＤ信号を送出する。ＧＲＡＮＴＥＤ信号パルスはシーケンサ５０に対して入力バッファＲＢ０によって行なわれた最後の接続要求が許可されたことと次の接続要求を発行することが自由であることを伝える。
ＦＩＦＯバッファ４５が空でない場合、接続要求は保留される。ＧＲＡＮＴＥＤパルスを受信後（又はシステム起動後）シーケンサ５０はバッファ４５がポートＩＤを含まない時にＦＩＦＯバッファ４５からアサートされるＥＭＰＴＹ信号をモニタする。ＥＭＰＴＹ信号がデアサートされ、要求が保留になったことを表わすことが分かった場合、シーケンサ４５はＳＥＮＤ信号のパルスを開始して接続要求ジェネレータ回路４６に５ビットのデータ値のシーケンスの形で接続要求ＲＥＱを発生させ、これをマルチプレクサ５２経由でシフトレジスタ５６へ渡す。接続要求はＦＩＦＯバッファ４５に最も長く格納されている出力ポートＩＤを参照する。シフトレジスタ５６は５ビット・データ値のシーケンスをシリアル・データ・ストリームに変換して図２の入力アービタＴＡ０へ線Ｖ０経由で転送する。シーケンサ５０はＦＩＦＯバッファ４５へシフトアウト信号をパルスして接続要求ジェネレータ回路４６へ次のポートＩＤをシフトアウトするように指示する。
ステートマシン５０がＧＲＡＮＴＥＤ信号パルスを受信するとＮＥＸＴ＿ＰＡＣＫＥＴ信号をバッファステートマシン３４へ送信して次のパケットの転送を開始できることを伝える。バッファステートマシン３４はマルチプレクサ６０を切り換えてハードワイヤード５ビットコード「Ｊ」を受け取る。シーケンサ３４はマルチプレクサ６０の「Ｊ」コード出力をＦＩＦＯバッファ６２にシフトする。さらにマルチプレクサ６０を切り換えてハードワイヤード「Ｋ」コードを選択し、マルチプレクサ６０の「Ｋ」コード出力をＦＩＦＯバッファ６２にシフトする（後述するように、ＪＫコード・シーケンスは出力線Ｖ０上のデータ・パケット通信の開始をマークする）。この後、バッファステートマシン３４はマルチプレクサ６０を切り換えて、ＲＡＭ３６のデータ入出力バス６１に現われる４ビット・データを５ビットの「４Ｂ５Ｂ」エンコードした形に変換するエンコーダ回路５８からの５ビット・データ出力を選択する。シーケンサ３４はさらにＲＡＭ３６からデータ・パケットの４ビット・ニブルの順次読み取りを開始する。エンコーダ回路５８がニブルを５ビットの４Ｂ５Ｂエンコードした形に変換すると、マルチプレクサ６０は５ビットの結果をＦＩＦＯバッファ６２に渡す。シーケンサ３４はシフト−イン信号（ＳＩ）をストローブして、ＦＩＦＯバッファ６２に５ビット・データ値をロードさせる。ＦＩＦＯバッファ６２はバッファが満杯ならＦＵＬＬ信号を発生してバッファステートマシン３４に知らせる。ＦＩＦＯバッファ６２に格納されているもっとも長いニブルが送信シーケンサ５０によって制御されるマルチプレクサ５２の入力に現われる。パケット・データがＦＩＦＯバッファ６２に現在格納されている場合、ＦＩＦＯバッファ６２はシーケンサ５０へ供給されるＥＭＰＴＹ信号をデアサートする。シーケンサ５０が現在のところ接続要求を送信していないなら、マルチプレクサ５２を切り換えてＦＩＦＯバッファ６２の５ビット出力をシフトレジスタ５６へ供給する。送信ステートマシン５０は５ビットの値をシリアルな形式に変換して、図２のクロスポイント・スイッチ１２へ線Ｖ０上にデータを転送するようにシフトレジスタ５６に指示する。スイッチ１２は適当な出力バッファへデータを転送する。
バッファステートマシン３４がＲＡＭ３６からパケット・データをＦＩＦＯバッファ６２へ転送する際に、送出されたニブルをカウントしてパケット・ヘッダに格納されているパケットの既知の長さとカウントとを比較する。パケットの最後のニブルをエンコーダ回路５８経由でＦＩＦＯバッファ６２へ転送した後で、バッファステートマシン３４はマルチプレクサ６０を切り換えて５ビットのハードワイヤード・コード「Ｔ」を選択し、ＦＩＦＯバッファ６２へ転送する。このコードは、パケットの終りをマークしており、ＦＩＦＯバッファ６２とマルチプレクサ５２とシリアル化回路５６を通過してデータ・パケットの終りに線Ｖ０へと伝送される。
パケットのニブルの最後のビットがＦＩＦＯバッファ６２を出発すると、ＦＩＦＯバッファ６２はバッファが空になったことをステートマシン５０に通知する。送信ステートマシン５０は次の接続要求が確立されたことを表わす別のＧＲＡＮＴＥＤ信号パルスを待つ。さらに次のパケットを転送できることを表わすＮＥＸＴ＿ＰＡＣＫＥＴ信号パルスでバッファステートマシン３４に指示する。
送信シーケンサ５０が線Ｖ０に接続要求を送信する準備ができた時には、線Ｖ０に送出されるパケット・データの現在のフローを単に停止して接続要求をＶ０に転送し、パケット・データのフローを再開することに注意する。つまり接続要求は入力バッファＲＢ０から出力バッファＴＢ１〜ＴＢ２３の１つへフローするデータ・パケットの中央に現われることがある。受信する出力バッファは宛先ネットワーク・ステーションへ転送する前に接続要求を認識して除外する。接続要求が入力アービタＲＡ０へ転送される一方で入力バッファＰＢ０はデータ・パケットの転送でまだビジー状態なので、アービタは現在転送しているパケットが入力バッファを離れたらすぐに接続要求の検索を開始することができる。
４Ｂ５Ｂエンコーディング
入力ポートの入力バッファと入力アービタ部分が別々の集積回路上に実装されることがあるので、主としてモジュール間リンクの個数を減少させるため、接続要求とデータ・パケットは同じ出力線Ｖ０へ送信される。いずれの場合にも入力アービタはＶ０線をモニタしてパケット送信が終了した時点を確認する。接続要求とデータ・パケットは「４Ｂ５Ｂ」符号化されて入力及び出力アービタと出力バッファで接続要求とデータ・パケットがいつ始まって終るかを決定できるようにする。ＡＮＳＩ規格Ｘ３７９（ＦＤＤＩ）「４Ｂ５Ｂ」エンコーディング・システムに適合して、エンコーダ回路５４は表ＩＩに図示したように各々の入力４ビット・ニブルを５ビット出力値に変換する。
0003852953.tif 000003
４Ｂ５Ｂコードの５ビットで可能な３２通りの組合せのうちの１６通りだけしか４ビット・ニブルで可能な１６通りの値を表わすのに必要とされないことから、４Ｂ５Ｂコードの残りの１６通りの組合せは他の目的に利用できる。以下の表ＩＩＩは本発明によるネットワーク・スイッチが残り１６通りの４Ｂ５Ｂコードをどのように使用しているかを列挙したものである。
0003852953.tif 000004
ＣＲコードは接続要求の開始を識別するために使用される。Ｑ、Ｈ、Ｒ、Ｓコードは４Ｂ５Ｂ符号化データ・ストリームに現われた場合には無視される。Ｔコードは４Ｂ５Ｂ符号化データパケットの終りを表わす。Ｉ、Ｊ、Ｋ、Ｖコードは４Ｂ５Ｂ符号化データストリームの送受信を後述するような方法で同期するために使用する。
出力バッファ
図４は、図２の出力バッファＴＢ０をさらに詳細なブロック図の形式で示したものである。出力バッファＴＢ１〜ＴＢ２３も同様である。出力バッファＴＢ０はＨ０線に到着するデータ・ビットを受信し格納するためにシステム・クロック信号ＣＬＫによってクロックされる１０ビット・シリアル入力／パラレル出力シフトレジスタ７０を含む。一組のデコーダ７２はシフトレジスタ７０に格納されている最初の５データ・ビットが前述の表ＩＩのＩ、Ｖ、Ｔ又はＣＲ４Ｂ５Ｂコードを表わす場合、又はシフトレジスタ７０の１０ビット全部で連続してＪ及びＫコードを表わしている場合には、入力シーケンサ回路７４に信号を送る。４Ｂ５Ｂデコーダ回路７６は第２の格納されている５ビット値を対応する４ビット・ニブルに変換してマルチプレクサ７８経由でＦＩＦＯバッファ８０の入力へ渡す。
図５は、図４の入力シーケンサ回路７４によって実行される同期処理を示す状態図である。入力シーケンサ回路７４は「同期はずれ」状態８１で始まる。デコーダ７２がＩ（アイドル）信号を検出するまで入力シーケンサ回路７４は状態８１に留まる。その時点で入力シーケンサ回路７４は「プレ同期」状態８２に移行する。デコーダ７２が連続したＪ及びＫシンボル（データ・パケットの開始を表わす）の検出を通知すると、同期回路７４は「ロード・パターン」状態８３に切り換わり、マルチプレクサ７８を切り換えてパターン・ジェネレータ回路７９の出力を選択する。パターン・ジェネレータ回路７９はデータ・パケットのネットワーク・プロトコルＰＲＥＡＭＢＬＥフィールドを全てのデータ・パケットで同じとなるように発生する。パターン・ジェネレータ回路７９がＰＲＥＡＭＢＬＥフィールドを発生すると、シーケンサ７０はＦＩＦＯバッファ８０へシフトする。この後で、入力シーケンサ回路７４はマルチプレクサ７８を切り換えてデコーダ７６の出力を選択する。次に図５の状態８４に移行して５つ目のシステム・クロック信号のパルス毎にＳＩ信号をアサートする。デコーダ７２がＩコードを検出している場合、一方で入力シーケンサ回路７４はプレ同期状態８２に戻る。デコーダ７２がＶコードを検出すると入力シーケンサ回路７４は同期はずれ状態１０６に戻る。デコーダ７２がＣＲコード（接続要求の開始を表わす）を検出すると、一方で入力シーケンサ回路７４は状態８４にあり、シーケンサは「接続要求」状態８５に移行する。状態８５は状態８４と同様だが、状態８５では入力シーケンサ回路７４がデコーダ７６の出力をＦＩＦＯバッファ８０にシフトしない点で異なっている。入力シーケンサ回路７４は接続要求がシフトレジスタ７０を通過するのに必要とされるシステム・クロックサイクル個数分だけ状態１１２に留まる。入力シーケンサ回路７４は次に状態８４に移行してデータ・パケットの処理を再開する。
もう一度図４を参照すると、ＦＩＦＯバッファ８０が空でないことを伝える場合、バッファステートマシン８６はＦＩＦＯバッファ８０からデータをランダム・アクセス・メモリ（ＲＡＭ）８７の４ビット・データ入出力バスへシフトアウトする。ステートマシン８２はＲＡＭ８７にアドレス及び制御信号を供給してＲＡＭ８６に４ビット・ニブルを格納させる。バッファステートマシン８６は宛先ネットワーク・ステーションへ送出できるようになるまで各々のデータ・パケットをアセンブルし格納するための大型ＦＩＦＯバッファとしてＲＡＭ８７を使用する。各々のデータ・パケットが到着すると、ステートマシン８６はＬＥＮＧＴＨフィールドを調べてパケットの長さを決定する。パケットが完全に組み立てられるとバッファステートマシン８６はＲＡＭ８７からパケットの連続したニブルを各々読み取りＦＩＦＯバッファ８８へシフトし、長さフィールドをバイパスする。ステートマシン８６はＦＩＦＯバッファ８８で発生したＦＵＬＬ信号をモニタしており、満杯になった場合にはバッファ８８へのデータのロードを保留する。ＦＩＦＯバッファ８８に最も長く格納されているニブルが４ビット・パラレル入力／シリアル出力シフトレジスタ８９へ供給される。シフトレジスタ８９のシリアル出力は通常のネットワーク・インタフェース回路９０へ渡し、ネットワーク・インタフェース・コントローラ回路９０が各々のビットをＴＸ０バス経由で受信するネットワーク・ステーションへ転送する。ＴＸ０バスへビットを転送する場合、ネットワーク・インタフェース・コントローラ回路９０は出力ステートマシン９１に通知し、出力ステートマシン９１はシフトレジスタ８９にビットをシフトアウトするように通知する。４ビット・ニブルがシフトレジスタ８９からシフトされると、出力ステートマシン９１はＦＩＦＯバッファ８８によって発生したＥＭＰＴＹ信号を調べる。ＦＩＦＯバッファ８８が空でない場合、出力ステートマシン９１はＦＩＦＯバッファ８８からパケットの次のニブルをシフトしてこれをシフトレジスタ８９へシフトする。
メモリコントローラ回路
図６は、図２のメモリ・コントローラ回路２４をさらに詳細なブロック図の形式で示したものである。メモリ・コントローラ回路２４は一対のデコーダ回路９２と９３及び一組の３状態バッファ９４を含む。デコーダ回路９２と９３は勝ち残った入力ポートと出力ポートからグローバル・バス経由で５ビットのＩＮＰＵＴ＿ＰＯＲＴ及びＯＵＴＰＵＴ＿ＰＯＲＴ  ＩＤを受信する。デコーダ回路９２は図２のＲＡＭ１４へ供給される出力２４ビットＢ０〜Ｂ２３を発生する。デコーダ回路９２はＩＮＰＵＴ＿ＰＯＲＴ  ＩＤで参照される特定の１つのビットを除いて全てのビットＢ０〜Ｂ２３を論理値「０」にセットする。デコーダ回路９２はそのビットを論理値「１」にセットする。デコーダ回路９３も出力２４ビットＷ０’〜Ｗ２３’を発生し、ＯＵＴＰＵＴ＿ＰＯＲＴ  ＩＤによって参照される特定の１つのビットを除いて全てのビットを論理値「０」にセットする。デコーダ回路９３はそのビットを論理値「１」にセットする。３状態バッファ９４はＷ０’〜Ｗ２３’信号を図２のＲＡＭ１４のワード線Ｗ０〜Ｗ２３に接続する。図２の調停シーケンサ２２からのＷＥ信号のパルスが３状態バッファ９４を短時間だけ有効にして論理値「１」にセットされたビットＷ０’〜Ｗ２３’の１つに対応するワード線Ｗ０〜Ｗ２３にパルスが現われるようにする。図２のＲＡＭ１４はパルスされたワード線に対応する列に２４データ・ビットＢ０〜Ｂ２３を格納することによってパルスに応答する。ビットＢ０〜Ｂ２３の１つだけが論理値「１」になっているので、図２のクロスポイント・スイッチ１２は列に対応する出力バッファへの１つの接続だけを行ないそのバッファへの他の全ての接続を遮断する。
アドレス翻訳
図７は、図２のアドレス・マッピング・システム２６、図３の入力ポート・アドレス翻訳ユニット４４をさらに詳細なブロック図の形式で示している。アドレス翻訳回路４４はステートマシン９５、コンパレータ回路９６、ＡＮＤゲート９７、バス・インタフェース回路９８を含む。アドレス・マッピング・システム２６はマイクロコンピュータ１００、カウンタ１０１、一組の３状態バッファ１０３〜１０５を含む。
図８はマイクロコンピュータ１００の動作を示すフローチャートであり、図９はステートマシン９５の動作を示すフローチャートである。図３，図７，図８，図９を参照すると、４８ビットの宛先（ＤＥＳＴ）及び発信元（ＳＲＣ）アドレス・フィールドがレジスタ４０及び４２に格納されると（図３）、バッファステートマシン３４はＴＲＡＮＳ信号をパルスすることでアドレス翻訳回路４４に通知する。アドレス・マッピング・システム２６はアドレス翻訳回路４４を連続的にポーリングして翻訳ユニットが保留中の翻訳要求を有しているか調べる。カウンタ１０１はポーリングしたバッファのＩＤ（ＰＯＲＴ＿ＩＤ）を表わす出力カウントを発生する。
システムの起動に続き、マイクロコンピュータ１００はＰＯＬＬ出力信号をアサートする（ステップ１０８）。ＰＯＬＬ信号はバッファ１０３及び１０４を有効にして各々のアドレス翻訳回路４４内部のコンパレータ回路９６の入力へ線１０６経由でカウンタ１０１のＰＯＲＴ＿ＩＤを送信する。各々のアドレス翻訳回路４４が属する入力バッファのＩＤ（ＭＹ＿ＩＤ）はコンパレータ回路９６の第２の入力に印加される。ＰＯＲＴ＿ＩＤとＭＹ＿ＩＤが一致すると、コンパレータ回路９６は出力信号をアサートする。コンパレータ回路９６の出力信号とマイクロコンピュータ１００によって発生したＰＯＬＬ信号はＡＮＤゲート９７の入力に供給される。つまりＡＮＤゲート９７はバッファＭＹ＿ＩＤがポーリングされている時に出力をアサートする。
ＰＯＬＬ信号をアサートした後（ステップ１０８）、マイクロコンピュータ１００はユニット４４が保留中の翻訳要求を有していることを表わすアドレス翻訳回路４４の１つからの肯定応答（ＡＣＫ）信号入力を検索する（ステップ１０９）。マイクロコンピュータ１００がＡＣＫ信号パルスを検出しない場合（ステップ１０９）、カウンタ１０１をクロックするＮＥＸＴ信号をパルスする（ステップ１１０）。カウンタ１０１はＰＯＲＴ＿ＩＤの値をインクリメントする。新しいＰＯＲＴ＿ＩＤの値は翻訳ユニットへ送信され（ステップ１０８）、マイクロコンピュータ１００はこれに応答するＡＣＫパルスを探す（ステップ１０９）。マイクロコンピュータ１００はステップ１０８〜１１０のサイクルを続けて、保留中の翻訳を有しているポーリングしたアドレス翻訳回路４４からのＡＣＫ応答がステップ１０９で得られるまで各々のバッファを順番にポーリングする。ＡＣＫ信号パルスはマイクロコンピュータ１００にバス線１０７とバス・インタフェース回路９８経由でレジスタ４０からのＳＯＵＲＣＥデータ・フィールドを読み込み（ステップ１１１）、カウンタ１０１のポートＩＤ出力を到着したネットワークＳＯＵＲＣＥアドレスに関連付けるテーブルエントリを作成する（１１２）ようにマイクロコンピュータ１００に伝える。この後、マイクロコンピュータ１００はＰＯＬＬ信号をオフにして（ステップ１１３）バッファ１０３及び１０４を無効にし、バッファ１０５を有効にする。マイクロコンピュータ１００はバス線１０７とバス・インタフェース回路９８経由でレジスタ４２からの宛先ＤＥＳＴデータ・フィールドを読み込む（ステップ１１４）。この後、内部参照テーブルにアクセスして対応する出力ポートＩＤを決定し、線１０６に出力ポート（ＰＯＲＴ＿ＩＤ）を入れ（ステップ１１６）、ステートマシン９５にＳＴＥＰ信号パルスを送出してからＡＣＫ信号パルスを待つ（ステップ１１７）。ＮＥＸＴ信号をパルスして（ステップ１１０）次のポーリング・サイクルを開始し、ＰＯＬＬ信号をオンにして（ステップ１０８）から別のＡＣＫ応答を待つ（ステップ１０９）。
システム起動後、ステートマシン９５はレジスタ４０及び４２（図３）に新しいＳＯＵＲＣＥ及びＤＥＳＴフィールドが利用できることを示すＴＲＡＮＳ信号パルスを待つ（ステップ１１８）。次にＡＮＤゲート９７の出力がポールされていることを表わすまで待機する（ステップ１１９）。この後マイクロコンピュータ１００へＡＣＫ信号を送出して（ステップ１２０）、ＤＥＳＴフィールドが翻訳され対応する出力ＰＯＲＴ＿ＩＤが線１０６に準備できたことを表わすＳＴＥＰ信号パルスを待つ（ステップ１２５）。ＳＴＥＰ信号パルス受信時に、ステートマシン９５は図３のＦＩＦＯバッファ４５へシフトイン（ＳＩ）入力信号をパルスして（ステップ１２６）、データバス１０６に現われるポートＩＤを接続要求において後に使用するためバッファが格納する。この後、ステートマシン９５はＡＣＫ信号をパルスして（ステップ１２７）ステップ１１８に戻り、別の翻訳要求を待つ。
調停
本発明の好適実施例において、図１０から図１５までに図示してあるように、図２のＬＡＮスイッチ１０は「出力ポーリング」調停を使用する。本発明の別の実施例において、図１６から図２２に図示してあるように、図２のＬＡＮスイッチ１０は「イベント駆動」調停を使用する。両方のシステムで調停シーケンサ２２は各々の出力トークン・パッシング・サイクルを開始する。またどちらのシステムでも、出力トークン受信時に各々のアイドル中の出力アービタが入力ポートへの接続を確立しようと試みて入力トークン・パッシング・サイクルを開始する。出力ポーリング調停システムでは、調停シーケンサ２２がシステム起動時に出力トークン・パッシング・サイクルを開始し、直前の出力トークン・パッシング・サイクルが終了すると新規の出力トークン・パッシング・サイクルを開始する。しかし、イベント駆動調停システムでは、調停シーケンサ２２は入力アービタＲＡ０〜ＲＡ２３が調停シーケンサ２２に対して新規接続要求を有していることを伝えた場合、又はポートが新しくアイドル状態になったことを出力アービタＴＡ０〜ＴＡ２３が伝えた場合にだけ出力トークン・パッシング・サイクルを開始する。図２の入力アービタＲＡ０〜ＲＡ２３と出力アービタＴＡ０〜ＴＡ２３及び調停シーケンサ２２は、２種類の調停システムでは幾つかの面で異なっている。
出力アービタ−出力ポーリング
図１０は、出力ポーリング・システムで使用する図２の出力アービタＲＡ０をさらに詳細なブロック図の形式で示したものである。入力アービタと出力アービタならびに調停シーケンサ２２を相互接続する図２のグローバル・バスは表ＩＶに図示したように、８データ値又は制御信号を伝送する２４線を含む。
0003852953.tif 000005
出力アービタＴＡ０はアービタ動作を制御するためシステム・クロック（ＣＬＫ）によってクロックされるステートマシン１２７を含む。出力アービタＴＡ０はクロスポイント・スイッチ１２（図２）の横方向線Ｈ０に現われるデータ・パケットの終りを検出するためのエンドオブパケット（ＥＯＰ）検出回路１２８も含む。ＩＤＬＥ信号としてステートマシン１２７へ供給されるフリップフロップ１２９のＱ出力は、いつポートがアイドル状態かを表わす。検出回路１２８はパケットの終りを検出するとフリップフロップ１２９をセットする。ステートマシン１２７はポートへの接続が許可されるとフリップフロップをリセットする。出力アービタＴＤ０も一組の３状態バッファ１３０〜１３２、一組のコンパレータ１３３〜１３５及び「入力シード・ジェネレータ」回路１３６を含む。コンパレータ１３３はＯＵＴＰＵＴ＿ＳＥＥＤ線に現われる出力ポートＩＤが出力ポートＴＰ０のＩＤであるＭＹ＿ＩＤと一致した場合に出力信号をアサートする。コンパレータ１３４はＩＮＰＵＴ＿ＰＯＲＴ線に現われるデータがエンドオブサイクル（ＥＯＣ）コードと一致した場合に出力信号をアサートする。コンパレータ１３５はＯＵＴＰＵＴ＿ＰＯＲＴ線に現われる出力ポートＩＤがＭＹ＿ＩＤと一致した場合に出力信号をアサートする。
図１１は、図１０のステートマシン１２７の動作を示すフローチャートである。図１０及び図１１を参照すると、システム起動時にステートマシン１２７は自分自身を起動する（ステップ１４０）。ステップ１４０の間に、ステートマシン１２７は次の出力アービタへ供給するＯＵＴＰＵＴ＿ＴＯＫＥＮ信号をデアサートする。ステートマシン１２７は３種類の出力信号、ＥＮＤ＿ＣＹＣＬＥ、ＣＯＮＳＵＭＥ、ＳＥＥＤをセットして３個の３状態バッファ１３０〜１３２をオフにし、ＣＬＥＡＲ出力信号をパルスしてフリップフロップ１２８をリセットする。ステートマシン１２７はＳＡＭＰＬＥ＿ＥＶＥＮＴ線のパルスを待機する（ステップ１４２）。
トークン・パッシング・サイクルを開始するには、中央調停シーケンサ２２（図２）がＯＵＴＰＵＴ＿ＳＥＥＤ線に出力ポートの１つのＩＤを送り、ＳＡＭＰＬＥ＿ＥＶＥＮＴ線をパルスすることにより出力トークン・パッシング・サイクルの開始を伝える。ＳＡＭＰＬＥ＿ＥＶＥＮＴパルスの検出で、ステートマシン１２７は出力ポートが出力シードかどうか、コンパレータ１３３の出力を調べることで決定する（ステップ１４４）。図１０に図示してあるように、コンパレータ１３３は出力ポートのＩＤ（ＭＹ＿ＩＤ）とＯＵＴＰＵＴ＿ＳＥＥＤ線に伝送されるポートＩＤとを比較し、比較結果をステートマシン１２７に伝える。出力ポートＴＰ０が出力シードでなければ、ステートマシン１２７は出力トークンを受信するまで（即ち入力ＯＵＴＰＵＴ＿ＴＯＫＥＮ信号がアサートされるまで）待機し（ステップ１４６）、ステップ１４８に移行する。それ以外の場合、出力ポートＴＰ０が出力シードで出力トークンを受信しなかった場合（ステップ１４７）、ステートマシン１２７はステップ１４８へ直接移行する。
ステップ１４８でステートマシン１２７はＩＤＬＥ入力信号を調べて出力ポートＴＰ０がアイドル状態かどうかを決定する。出力ポートＴＰ０がアイドル状態ではない場合、ステートマシン１２７は出力トークンを次の出力ポートへ渡す（ステップ１４９）。出力ポートＴＰ０がステップ１４８でアイドル状態の場合には、ステートマシン１２７はシード・ジェネレータ回路１３６へのＮＥＸＴ信号入力をパルスしてＣＯＮＳＵＭＥ及びＳＥＥＤ出力信号をセットし、図１０の３状態バッファ１３１と１３２をオンにする（ステップ１５０）。３状態バッファ１３１がオンになると、ＯＵＴＰＵＴ＿ＰＯＲＴ線に出力ポートＴＰ０のＩＤ（ＭＹ＿ＩＤ）を送る。シード・ジェネレータ回路１３６は入力ポートＩＤのローテーション・テーブルを含みバッファ１３２への入力として入力ポートＩＤの１つを供給する。ＮＥＸＴ信号のパルスはシード・ジェネレータ回路１３６にローテーション・テーブルからの入力ポートＩＤの次の１つを出力として選択するように伝える。３状態バッファ１３２がオンになるとシード・ジェネレータ回路１３６の出力である入力ポートＲＰ１〜ＰＲ２３の１つのＩＤをＩＮＰＵＴ＿ＳＥＥＤ線に送る。有効なＩＤがＩＮＰＵＴ＿ＳＥＥＤ線に現われると、入力アービタＲＡ０〜ＲＡ２３はＯＵＴＰＵＴ＿ＰＯＲＴ線にＩＤが現われた出力ポート（ＴＰ０）への接続を調停する。出力ポートＴＰ０への保留中の接続要求を有する入力アービタが調停に勝ち残ると、ＩＮＰＵＴ＿ＰＯＲＴ線に入力ポートＩＤを送りＲＥＱＵＥＳＴ信号線をアサートする。出力ポートＴＰ０への保留要求を有する入力アービタがない場合、入力シード・ポートがＩＮＰＵＴ＿ＰＯＲＴ線にＥＯＣ（エンドオブサイクル）コードを送る。
ステップ１５０で入力トークン・パッシング・サイクルを開始した後、ステートマシン１２７はステップ１５２からステップ１５４を繰り返してＩＮＰＵＴ＿ＰＯＲＴ線のＥＯＣコード（ステップ１５２）か、又はＲＥＱＵＥＳＴ信号のアサートを探す（ステップ１５４）。ＲＥＱＵＥＳＴ信号がアサートされた場合、出力ポートＴＰ０への保留要求がありこれが許可される。したがって、ステートマシン１２７はフリップフロップ１２９をリセットして（ステップ１５６）出力ポートＴＰ０がもはやアイドル状態ではなくなることを表わし、ＧＲＡＮＴＥＤ信号のアサートを待機する（ステップ１５８）。図２の中央調停シーケンサ２２は入力ポートと出力ポートの間に接続を確立した場合にＧＲＡＮＴＥＤ信号をアサートする。接続が許可された後、ステートマシン１２７は出力トークンを次の出力ポートに渡す（ステップ１６０）。
ステップ１４９又はステップ１６０で出力トークンを渡した後、ステートマシン１２７は出力ポートＴＰ０が出力シードかどうかもう一度調べる（ステップ１６２）。違う場合、ステートマシン１２７はＥＯＣコードがＯＵＴＰＵＴ＿ＰＯＲＴ線に現われたことをコンパレータ１３５の出力が示すまで待機する（ステップ１６４）。出力シードはＯＵＴＰＵＴ＿ＰＯＲＴ線にＥＯＣコードを送って出力トークン・パッシング・サイクルの終了をマークする。この時点でステートマシン１２７は出力アービタを再初期化して（ステップ１４０）から別の出力トークン・パッシング・サイクルの開始を知らせるＳＡＭＰＬＥ＿ＥＶＥＮＴＳパルスを待つ（ステップ１４２）。
ステートマシン１２７がステップ１４４又は１６２のどちらかでPT０が出力シードであると決定した場合、ステップ１４７に戻り、ここで出力トークンを有しているか調べる（ステップ１４７）。出力シードがトークンを受信した場合、出力トークン・パッシング・サイクルが終了しており、全ての出力アービタが出力トークンを受信して渡している。そこでステートマシン１２７はＥＮＤ＿ＣＹＣＬＥ出力信号（図１０）をセットして３状態バッファ１３０をオンにし、ＯＵＴＰＵＴ＿ＰＯＲＴ線にＥＯＣコードを送って（ステップ１６６）出力トークン・パッシング・サイクルの終了を伝える。ステートマシン１２７は調停シーケンサ２２（図２）がＧＲＡＮＴＥＤ信号をパルスしてＥＯＣコードに応答するまで待機する（ステップ１６８）。調停シーケンサ２２は初期化ステップ１４０に戻り、出力アービタを再初期化した後、別の出力トークン・パッシング・サイクルの開始を待つ（ステップ１４２）。
入力アービタ−出力ポーリング
図１２は、出力ポーリング調停システムで使用する図２の入力アービタＲＡ０を示す。ＲＡ１〜ＲＡ２３も同様である。入力アービタＲＡ０はアービタ動作をシーケンス化するためのステートマシン１７０を含む。インタフェース回路１７２は入力バッファＲＢ０からクロスポイント・スイッチ１２（図２）の縦方向線Ｖ０を経由して到着する接続要求をモニタし到着した要求で伝送された宛先ポートのＩＤ（ＰＯＲＴ＿ＩＤ）を格納する。Ｖ０線がパケットを伝送していない場合、又はインタフェース回路１７２がＶ０線でパケット通信の終了を検出した場合、インタフェース回路１７２はＳＡＭＰＬＥ＿ＥＶＥＮＴＳ信号により入力がイネーブルになっているレジスタ１７４の入力へ格納してあるＰＯＲＴ＿ＩＤデータを供給する。接続要求が許可された場合、ステートマシン１７０はＣＬＥＡＲ信号をパルスしてインタフェース回路１７２に格納されたＰＯＲＴ＿ＩＤデータをクリアする。コンパレータ１７６はレジスタ１７４に格納されている宛先ポートＩＤ（ＰＯＲＴ＿ＩＤ）がＯＵＴＰＵＴ＿ＰＯＲＴ線で伝送されたＩＤと一致する場合にステートマシン１７０に通知する。３状態バッファ１７８はステートマシン１７０のＣＯＮＳＵＭＥ出力がイネーブルになった場合ＩＮＰＵＴ＿ＰＯＲＴ線に入力バッファＲＢ０のＩＤ（ＭＹ＿ＩＤ）を送る。３状態バッファ１７９はステートマシン１７０のＥＮＤ＿ＣＹＣＬＥ出力によってイネーブルになるとＩＮＰＵＴ＿ＰＯＲＴ線にＥＯＣコードを送る。コンパレータ１８０は入力バッファＲＢ０のＩＤであるＭＹ＿ＩＤがＩＮＰＵＴ＿ＳＥＥＤ線に伝送された入力ポートＩＤと一致する場合にステートマシン１７０に通知する。コンパレータ１８１はＩＮＰＵＴ＿ＰＯＲＴ線がＥＯＣコードを伝送する場合にステートマシン１７０に通知する。
図１３はステートマシン１７０の動作を示すフローチャートである。図１２及び図１３を参照すると、システムの起動時に、ステートマシン１７０はＣＯＮＳＵＭＥ出力信号をセットしてバッファ１７８をオフにし、またＣＬＥＡＲ信号をパルスしてインタフェース回路１７２のＰＯＲＴ＿ＩＤデータを初期化することにより初期化を行なう（ステップ１８２）。この後、ステートマシン１７０はトークン・パッシング・サイクルの開始を表わすＳＡＭＰＬＥ＿ＥＶＥＮＴＳ線のパルスを検出するまで待機する（ステップ１８４）。ステートマシン１７０はコンパレータ１８０の出力を調べて入力ポート（ＲＰ０）が入力シードかどうか決定する（ステップ１８６）。入力ポートＲＰ０が入力シードでありトークンを有していない場合（ステップ１８８）、又は入力ポートＲＰ０が入力シードではないがトークンを有している場合（ステップ１９０）、ステートマシン１７０はコンパレータ１７６の出力を調べてＩＤがＯＵＴＰＵＴ＿ＰＯＲＴ線に現われている出力バッファに対する保留要求があるか調べる（ステップ１９２）。入力ポートＲＰ０が出力バッファに対する保留要求を有していない場合、ステートマシン１７０は出力ＩＮＰＵＴ＿ＴＯＫＥＮ信号をアサートすることで入力トークンを渡す（ステップ１９４）。次にＧＲＡＮＴＥＤ信号のパルスか、出力又は入力トークン・パッシング・サイクルのどちらかの終りを表わすＩＮＰＵＴ＿ＰＯＲＴ線へのＥＯＣコードの出現を待機する（ステップ１９６）。この後、ステートマシン１７０は再初期化し（ステップ１８２）て別の入力トークン・パッシング・サイクルの開始を待機する（ステップ１８４）。
ステップ１９０でステートマシン１７０が入力トークンを受信しなかった場合、入力トークンを受信するまで（ステップ１９０）、又は要求が許容されたことをコンパレータ１８０の出力から検出するまで（ステップ１９１）、ステップ１９０とステップ１９１を繰り返す。ステートマシン１７０が入力トークンを受信する前に別の入力に要求が許可された場合、ステートマシン１７０は再初期化して（ステップ１８２）別の入力トークン・パッシング・サイクルの開始を待機する（ステップ１８４）。
ステート１９２でバッファ１７６の出力からＩＤがＯＵＴＰＵＴ＿ＰＯＲＴ線に現われている出力バッファに対する保留要求があると決定した場合、ステップ１９８でステートマシン１７０はＣＯＮＳＵＭＥ信号出力をセットして３状態バッファ１７８をオンにし、これによってＩＮＰＵＴ＿ＰＯＲＴ線に入力ポートＲＰ０のＩＤを送る。ステップ１９８でステートマシン１７０はＲＥＱＵＥＳＴ信号をアサートして接続を要求していることを示しＣＬＥＡＲ出力をパルスしてインタフェース回路１７２の接続要求をクリアする。ステートマシン１７０は出力又は入力トークン・パッシング・サイクルのどちらかの終了を表わすＧＲＡＮＴＥＤ信号のパルス又はＩＮＰＵＴ＿ＰＯＲＴ線のＥＯＣコードの出現を待機する（ステップ１９６）。この後、ステートマシン１７０は再初期化し（ステップ１８２）、別の入力トークン・パッシング・サイクルの開始を待機する（ステップ１８４）。
ステートマシン１７０がステップ１８６で入力ポートが入力シードでありステップ１８８で入力トークンを有していると分かった場合、ステートマシン１７０はＥＮＤ＿ＣＹＣＬＥ出力信号をセットしてバッファ１７９がＩＮＰＵＴ＿ＰＯＲＴ線にＥＯＣコードを送り（ステップ２００）、入力トークン・パッシング・サイクルの終了を通知する。この後、図２の調停シーケンサ２２がＧＲＡＮＴＥＤ信号をパルスすることにより入力トークン・パッシング・サイクルの終了を肯定応答するのを待つ（ステップ２０２）。この後ステートマシン１７０は再初期化し（ステップ１８２）、別の入力トークン・パッシング・サイクルの開始を待機する（ステップ１８４）。
調停シーケンサ−出力ポーリング
図１４は、図２の調停シーケンサ２２をさらに詳細なブロック図の形式で示したものである。調停シーケンサ２２は装置動作をシーケンサ化するためのステートマシン２１０を含む。出力シード・ジェネレータ回路２１２は出力ポートＩＤのローテーション・テーブルを含み、グローバル・バスのＯＵＴＰＵＴ＿ＳＥＥＤ線に出力ポートＩＤの１つを送る。ステートマシン２１０によって発生したＮＥＸＴ信号のパルスはジェネレータ回路２１２に対してローテーション・テーブルからＯＵＴＰＵＴ＿ＳＥＥＤ線に送るため、出力ポートＩＤの次の１つを選択するように指示する。コンパレータ２１４はＯＵＴＰＵＴ＿ＰＯＲＴ線がＥＯＣ（エンドオブサイクル）コードを伝送する場合にステートマシン２１０に通知する。ステートマシン２１０はメモリ・コントローラ回路に書き込みイネーブル信号ＷＥも供給する。ステートマシンがシフトイン（ＳＩ）信号をパルスすると、パラレル入力／シリアル出力シフトレジスタ２１８がＩＮＰＵＴ＿ＰＯＲＴ線に現われる入力ポートＩＤを格納する。ステートマシン２１０がＲＥＳＰＯＮＤ信号をアサートすると、３状態バッファ２２０はシフトレジスタ２１８の出力をグローバル・バスの応答線ＲＥＳＰに接続する。ステートマシンはシフトアウト信号（ＳＯ）をパルスしてシフトレジスタ２１８から入力ポートＩＤを順次シフトアウトし、これによってＲＥＳＰ線経由で図２の入力バッファＲＢ０〜ＲＢ２３へ応答を送信する。これにより最後の接続要求が許可されたことを指示された入力バッファに伝える。
図１５は、図１４のステートマシン２１０の動作を示すフローチャートである。図１４及び図１５を参照すると、ステートマシン２１０は起動後にＲＥＳＰＯＮＤ信号をセットしてバッファ２２０をオフにし、またＧＲＡＮＴＥＤ及びＳＡＭＰＬＥ＿ＥＶＥＮＴＳ信号を低値にして初期化を行なう（ステップ２３０）。ステートマシン２１０はＮＥＸＴ信号をパルスしてジェネレータ回路２１２にＯＵＴＰＵＴ＿ＳＥＥＤ線へ出力ポートＩＤを送出させる（ステップ２３４）。ステートマシン２１０は次にＳＡＭＰＬＥ＿ＥＶＥＮＴＳ線をパルスして出力トークン・パッシング・サイクルの開始を伝える（ステップ２３６）。さらにステップ２３８でＲＥＱＵＥＳＴ信号のパルスを検出するか又はステップ２４０でコンパレータ２１４がＯＵＴＰＵＴ＿ＰＯＲＴ線のＥＯＣの検出を通知するまでステップ２３８とステップ２４０を反復し続ける。
入力アービタはＲＥＱＵＥＳＴ信号をパルスしてＩＮＰＵＴ＿ＰＯＲＴ及びＯＵＴＰＵＴ＿ＰＯＲＴ線にあるコードで識別された入力ポート及び出力ポートの間の接続を要求する。ステップ２３８でＲＥＱＵＥＳＴ信号パルスの検出で、ステートマシン２１０は図２のメモリ・コントローラ回路２４へライトイネーブル信号（ＷＥ）を送信する（ステップ２４２）。メモリ・コントローラ回路２４は図２のＲＡＭ１４へデータを格納して勝ち残った入力ポート及び出力ポートの間の接続を確立することにより応答する。ステートマシン２１０は次にＧＲＡＮＴＥＤ線にパルスして入力バッファ及び出力バッファに要求が許可されたことを伝え、ＳＩ信号をパルスしてシフトレジスタ２１８へ入力ポートＩＤをロードする（ステップ２４６）。ステートマシン２１０はＲＥＳＰＯＮＤ信号をアサートしてバッファ２２０をオンにし、またＳＯ信号をパルスしてバッファ２２０経由でＲＥＳＰ線へ入力ポートＩＤをシフトすることにより入力バッファに応答を送信する（ステップ２４８）。この後、ステートマシン２１０はステップ２３８／２４０へ復帰する。ステップ２４０で、コンパレータ２１４が出力トークン・パッシング・サイクルの終了を検出したことをステートマシン２１０に伝えた場合、ステートマシン２１０は再初期化を行ない（ステップ２３０）、次の出力トークン・パッシング・サイクルを開始する。
イベント駆動型調停
本発明の別の実施例において、図１６から図２２に図示してあるように、図２のＬＡＮスイッチ１０はイベント駆動型調停を使用する。本システムにおいて、出力調停サイクルは出力バッファが新規にアイドル状態になった場合か、又は入力バッファが新規の接続要求を発行した場合に開始する。スイッチ１０のイベント駆動バージョンにおいて、入力及び出力アービタと調停シーケンサ２２を相互接続するグローバル・バスは表Ｖに図示したように１０個のデータ値又は制御信号を伝送する２６本の線を含む。
0003852953.tif 000006
シーケンサ−イベント駆動
図１６は、図２の調停シーケンサ２２のイベント駆動バージョンをさらに詳細なブロック図の形式で図示したものである。調停シーケンサ２２はシーケンサ動作を制御するためのステートマシン４００、出力及び入力シードを生成するためのシード・ジェネレータ回路４０２及び４０４を含む。３状態バッファ４０６及び４０８は各々シード・ジェネレータ回路４０２及び４０４の出力をＧＬＯＢＡＬバスのＯＵＴＰＵＴ＿ＳＥＥＤ及びＩＮＰＵＴ＿ＳＥＥＤ線へ接続する。デコーダ４０８はＧＬＯＢＡＬバスのＩＮＰＵＴ＿ＰＯＲＴ線でＥＯＣ（エンドオブサイクル）又は有効な入力ポートＩＤコードを検出した場合、ステートマシン４００へ通知する。シフトレジスタ４１２は３状態バッファ４１４を介してＲＥＳＰバスへ接続され、入力バッファへの接続応答としてＩＮＰＵＴ＿ＰＯＲＴ線に現われる勝ち残った入力バッファのＩＤを順次送信する。
図１７は、図１６のステートマシン４００の論理を詳細に示すフローチャートである。図１６及び図１７を参照すると、システム起動後に、ステートマシン４００はＧＬＯＢＡＬバスのＳＡＭＰＬＥ＿ＥＶＥＮＴＳ線で入力及び出力アービタ全部にパルスを送信する（ステップ４２２）。ＳＡＭＰＬＥ＿ＥＶＥＮＴＳパルス受信時に、最後に受信したＳＡＭＰＬＥ＿ＥＶＥＮＴＳパルス以後アイドル状態になった出力バッファの各出力アービタはＧＬＯＢＡＬバスの線にＮＥＷ＿ＩＤＬＥ信号をアサートする。同様にＳＡＭＰＬＥ＿ＥＶＥＮＴＳパルス受信時に、最後のＳＡＭＰＬＥ＿ＥＶＥＮＴＳパルス以後新規の接続要求を格納した各々の入力アービタはＧＬＯＢＡＬバスのＮＥＷ＿ＲＥＱ線をアサートする。ステートマシン４００はＮＥＷ＿ＩＤＬＥ及びＮＥＷ＿ＲＥＱ線を調べ（ステップ４２４及びステップ４２５）、どちらの線もアサートされていなければステップ４２２に戻り、ＳＡＭＰＬＥ＿ＥＶＥＮＴＳ線をもう一度パルスする。ステートマシン４００はＮＥＷ＿ＩＤＬＥ又はＮＥＷ＿ＲＥＱ線のどちらかのアサートを検出するまでステップ４２２、ステップ４２４、ステップ４２５を反復し続ける。
ＮＥＷ＿ＩＤＬＥ線のアサートを検出すると、ステートマシン４００はＮＥＸＴ＿ＯＵＴＰＵＴ信号をパルスしてシード・ジェネレータ回路４０２に新規の出力シードを出力するように指示し（ステップ４２６）、さらにＳＥＥＤ＿ＯＵＴ信号をアサートして（ステップ４２８）３状態バッファ４０６をオンにしてＧＬＯＢＡＬバスのＯＵＴＰＵＴ＿ＳＥＥＤ線に出力シードを送る。ステートマシン４００はＧＬＯＢＡＬバスのＯＵＴＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥ線にパルスする（ステップ４３０）。
ＯＵＴＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥパルスは入力アービタ及び出力アービタに接続を調停するように指示する。ステートマシン４００はデコーダ４０８がＩＮＰＵＴ＿ＰＯＲＴ線で、接続要求を許可する準備ができたことを示す有効入力ポートＩＤ又は接続要求を許可する準備ができていないことを表わすエンドオブサイクル・コード（ＥＯＣ）のどちらかを検出するまでステップ４３２で待機する。接続要求が許可できるとアービタが決定すると、勝ち残った入力バッファ及び出力バッファのＩＤがＩＮＰＵＴ＿ＰＯＲＴ線とＯＵＴＰＵＴ＿ＰＯＲＴ線に現われる。有効入力ポートＩＤがＩＮＰＵＴ＿ＰＯＲＴ線に現われることをデコーダ４０８が示すと、ステートマシン４００は書き込みイネーブル信号ＷＥをメモリ・コントローラ回路に送出して接続を行なうことによって要求を許可するように伝える（ステップ４３４）。ステートマシン４００はＳＩ信号をパルスしてシフトレジスタ４１２にＩＮＰＵＴ＿ＰＯＲＴ線の入力ポートＩＤをロードさせることで入力バッファへ応答を送信し（ステップ４３６）、ＲＥＳＰＯＮＤ信号をアサートして３状態バッファ４１４をオンにし、さらにＳＯ信号を連続パルスしてシフトレジスタ４１２に入力バッファへのＲＥＳＰ線へ入力ポートＩＤをシフトアウトさせる。この後、ステートマシン４００はＯＵＴＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥ線をパルスして要求が許可されたことを全アービタに通知する。ステートマシン４００はこの後でステップ４２２に復帰する。ステップ４３２でデコーダ４０８がＩＮＰＵＴ＿ＰＯＲＴ線のＥＯＣコードを検出すると、ステートマシン４００はステップ４３４及びステップ４３６をスキップして接続を許可しない。
ステップ４２５でＮＥＷ＿ＲＥＱ線のアサートを検出すると、ステートマシン４００はＮＥＸＴ＿ＩＮＰＵＴ信号をパルスして新規の入力シードを出力し（ステップ４４０）、ＳＥＥＤ＿ＩＮ信号をアサートしてデコーダ４０８をオンにし（ステップ４４２）、ＧＬＯＢＡＬバスのＩＮＰＵＴ＿ＳＥＥＤ線に入力シードを送出する。ステートマシン４００はＧＬＯＢＡＬバスのＩＮＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥ線にパルスする（ステップ４４４）。ＩＮＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥパルスは入力アービタ及び出力アービタに対して接続を調停するように伝える。ステートマシン４００はステップ４３２、４３４、４３６、４３８を前述したように実行して入力及び出力アービタから要求された接続を許可し、接続が許可された場合、入力バッファに応答を送信する。
出力アービタ−イベント駆動
図１８は、図２の出力アービタＴＡ０のイベント駆動バージョンをさらに詳細なブロック図の形式で示したものである。図２の出力アービタＴＡ１〜ＴＡ２３も同様である。出力アービタＴＡ０はアービタ動作を制御するためのステートマシン５００を含む。エンドオブパケット（ＥＯＰ）検出回路５０２は図２のクロスポイント・スイッチ１２の横方向線Ｈ０に沿って出力バッファＴＢ０へ渡されるパケットの終りを検出する。パケット終端の検出時に、検出回路５０２はステートマシン５００によって別々にリセットすることができる一対のフリップフロップ５０４及び５０５の対をセットする。フリップフロップ５０４のＱ出力はステートマシン５００へＩＤＬＥ入力を供給する。フリップフロップ５０６のＱ出力はステートマシン５００へ別の入力を提供し、ＧＬＯＢＡＬバスのＮＥＷ＿ＩＤＬＥ線をプルダウン（アサート）する３状態バッファ５０８をオンにする。コンパレータ５１０は出力ポートＴＰ０のＩＤ（ＭＹ＿ＩＤ）がＯＵＴＰＵＴ＿ＳＥＥＤ線に現われた時にステートマシン５００に通知する。コンパレータ５１２はエンドオブサイクル（ＥＯＣ）コードがＩＮＰＵＴ＿ＰＯＲＴ線に現われた時にステートマシン５００に通知する。コンパレータ５１４はＭＹ＿ＩＤがＯＵＴＰＵＴ＿ＰＯＲＴ線に現われた時にステートマシン５００に通知する。３状態バッファ５１６はＯＵＴＰＵＴ＿ＰＯＲＴ線にＭＹ＿ＩＤを送出することによりステートマシン５００からのＣＯＮＳＵＭＥ信号に応答する。シード・ジェネレータ回路５１８は３状態バッファ５２０経由でＩＮＰＵＴ＿ＳＥＥＤ線にリンクしてあり、ステートマシン５００がＳＥＥＤ信号をアサートするとＩＮＰＵＴ＿ＳＥＥＤ線に入力ポートＩＤを送出する。ステートマシン５２０がシード・ジェネレータ回路５１８へＮＥＸＴ信号パルスを供給すると、シード・ジェネレータ回路５１８は入力シードとして次の入力ポートＩＤを選択する。
図１９は、図１８のステートマシン５００の動作を示すフローチャートである。システム起動後、ステートマシン５００はＳＡＭＰＬＥ＿ＥＶＥＮＴＳ線のパルスを待機する（ステップ５２２）。ＳＡＭＰＬＥ＿ＥＶＥＮＴＳパルスの受信時に、中央調停シーケンサがＯＵＴＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥ又はＩＮＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥ線にアサートしているか調べる（ステップ５２４及び５２６）。前述したように、図２の調停シーケンサ２２は１つ、またはそれ以上の出力アービタがＮＥＷ＿ＩＤＬＥ線をアサートしていればＯＵＴＰＵＴ＿ＳＥＥＤ線にポートＩＤを送出してＯＵＴＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥ線にパルスする。出力アービタＴＡ０はコンパレータ５１０の出力を調べてこれのポート（ＴＰ０）が出力シードかどうか判定することによりＯＵＴＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥパルスに応答する（ステップ５２８）。違う場合、出力アービタＴＡ０は出力トークンを受信したかどうか調べる（ステップ５３０）。出力トークンを受信しなかった場合、中央調停シーケンサがもう一度ＯＵＴＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥ信号をアサートしているか調べる（ステップ５３２）。アサートしていれば、出力トークン・パッシング・サイクルは終っており、別の出力アービタが調停に勝ち残ったことになる。ステートマシン５００はステップ５２２に戻って別のトークン・パッシング・サイクルを待機する。それ以外の場合、ＯＵＴＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥ信号がアサートされなければ、ステートマシン５００はステップ５２８に戻る。
ステップ５２８でステートマシン５００は出力シードであることを知るか、又は出力ポートＴＰ０が出力シードではなく、出力アービタＴＡ０のステートマシン５００が出力トークンを受信したことを知った場合、ステートマシン５００はフリップフロップ５０６からのＩＤＬＥ信号を調べて出力ポートＴＰ０が新規にアイドル状態になっているか判定する（ステップ５３４）。違う場合、ステートマシン５００は出力トークンを渡し（ステップ５３６）、ステップ５３２経由でステップ５２８へ戻る。それ以外の場合、出力ポートＴＰ０がアイドル状態の場合（ステップ５３４）には、ステートマシン５００はＣＯＮＳＵＭＥ信号をアサートして３状態バッファ５１６をオンにし（ステップ５３８）、これによって出力ポートＴＰ０のＩＤ（ＭＹ＿ＩＤ）をＯＵＴＰＵＴ＿ＰＯＲＴ線に載せる。ステートマシン５００はＳＥＥＤ信号もアサートして３状態バッファ５２０をオンにすることにより、シード・ジェネレータ回路５１８によって発生した入力ポートＩＤをＩＮＰＵＴ＿ＳＥＥＤ線に載せる（ステップ５４０）。これで入力アービタに対して出力ポートＴＰ０へ接続する権利を調停するように伝える。
入力アービタが調停中に、出力アービタＴＡ０はＯＵＴＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥ線（ステップ５４２）とコンパレータ５１２の出力（ステップ５４４）をモニタして調停が成功したか失敗したかを決定する。調停が成功した場合、中央調停シーケンサはＯＵＴＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥ線５４２にパルスしてステートマシン５００は（ステップ５４６で）ＮＥＸＴ信号をパルスしてフリップフロップ１３４の出力をインクリメントし、フリップフロップ５０４と５０６をリセットして出力バッファがもはやアイドル状態ではないことを示し、ＣＯＮＳＵＭＥ及びＳＥＥＤ信号をデアサートしてバッファ５１６及び５２０をオフにする。ステートマシン５００はこの後ステップ５２２に戻って別のトークン・パッシング・サイクルの開始を待機する。
調停が失敗だった場合（どの入力ポートも新規にアイドル状態の出力ポートＴＰ０への保留要求を有していない）、シード入力アービタはＩＮＰＵＴ＿ＰＯＲＴ線にＥＯＣコードを載せてコンパレータ５１２がこのイベントをステートマシン５００に通過する。この時点で、ステートマシン５００は（ステップ５４８）フリップフロップ５０６をリセットしてＣＯＮＳＵＭＥ及びＳＥＥＤ信号をデアサートしてバッファ５１６及び５２０をオフにする。出力ポートＴＰ０が未だアイドル状態なのでステートマシン５００はフリップフロップ５０４をリセットしないことに注意する。しかし、出力ポートＴＰ０がもはや「新規に」アイドル状態ではないのでステートマシン５０６をリセットする。
１つまたはそれ以上の入力アービタがＮＥＷ＿ＲＥＱ線をアサートすると、中央調停シーケンサはＳＡＭＰＬＥ＿ＥＶＥＮＴＳ線とＩＮＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥ線をパルスして入力トークン・パッシング・サイクルを開始する。ステップ５２６でステートマシン５００はフリップフロップ５０４のＩＤＬＥ出力を調べて出力ポートＴＰ０がアイドル状態かどうか決定する（ステップ５５０）ことによりＩＮＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥパルスに対して応答する。出力バッファがアイドル状態ではない場合、ステートマシン５００はステップ５２２に戻って新しいトークン・パッシング・サイクルの開始を待機する。出力ポートＴＰ０がアイドル状態の場合には、ステートマシン５００はコンパレータ５１４の出力を調べて出力ポートＴＰ０のＩＤ（ＭＹ＿ＩＤ）がＯＵＴＰＵＴ＿ＰＯＲＴ線にあるか判定する（ステップ５５２）。ない場合、ステートマシン５００はステップ５２２に戻って新しいトークン・パッシング・サイクルの開始を待機する。ＭＹ＿ＩＤがＯＵＴＰＵＴ＿ＰＯＲＴ線に現われた場合、出力ポートＴＰ０への保留要求のある入力バッファが要求を許可してもらう権利を勝ち取ったことになる。その後（ステップ５５４）ステートマシン５００はＳＥＥＤ信号をアサートして３状態バッファ５２０をオンにし、バッファ５２０がＩＮＰＵＴ＿ＳＥＥＤ線に入力ポートＩＤを載せる。ステートマシン５００はＯＵＴＰＵＴ＿ＩＤＬＥ線もアサートする（ステップ５５４）。この後、ステートマシン５００は接続要求が許可されたことを表わすＯＵＴＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥ信号のアサートを待機している（ステップ５４２）。接続要求が許可された場合、ステートマシン５００はＮＥＸＴ信号をパルスしてシード・ジェネレータ回路５１８の出力をインクリメントし、フリップフロップ５０４及び５０６をリセットして出力バッファがもはやアイドル状態ではないことを表わし（ステップ５４６）、さらにステップ５２２に戻って別のトークン・パッシング・サイクルの開始を待機する。
入力アービタ−イベント駆動
図２０は、図２の入力アービタＲＡ０のイベント駆動バージョンをさらに詳細なブロック図の形式で示したものである。図２の出力アービタＲＡ１〜ＲＡ２３も同様である。入力アービタＲＡ０はアービタ動作を制御するためのステートマシン６００を含む。インタフェース回路６０２は入力バッファＲＢ０からのクロスポイント・スイッチ１２（図２）の縦方向線Ｖ０に現われるコマンドを見張り、コマンドに伝送される宛先ポートＩＤ（ＰＯＲＴ＿ＩＤ）を格納する。インタフェース回路６０２はデータ・パケットの開始と終了に注目して線Ｖ０がいつデータ・パケットを伝送するか決定する。線Ｖ０がビジー状態でなくなると、インタフェース回路６０２はフリップフロップ６１０をセットする。フリップフロップ６１０のＱ出力はステートマシン６００への入力を提供し、３状態バッファ６１２をオンにする。バッファ６１２の出力は３状態バッファ６１２がオンになっている時にＧＬＯＢＡＬバスのＮＥＷ＿ＲＥＱ線をプルダウン（アサート）する。インタフェース回路６０２は要求された宛先出力ポートＩＤ（ＰＯＲＴ＿ＩＤ）を表わす出力データを発生する。レジスタ６０４はＳＡＭＰＬＥ＿ＥＶＥＮＴＳ信号パルスに応答してＰＯＲＴ＿ＩＤデータを格納し、コンパレータ６０６はレジスタ６０４に格納されたＰＯＲＴ＿ＩＤデータがＧＬＯＢＡＬバスのＯＵＴＰＵＴ＿ＰＯＲＴ線に現われるポートＩＤと一致する場合にステートマシン６００に通知する。３状態バッファ６０８はステートマシン６００が出力信号ＲＥＱをアサートするとレジスタ６０４に格納されたＰＯＲＴ＿ＩＤデータをＯＵＴＰＵＴ＿ＰＯＲＴ線に送出する。
回路６０２が接続要求を受け取るとフリップフロップ６１０をセットする。要求が許可された場合、ステートマシン６００はフリップフロップ６１０をリセットする。またＣＬＥＡＲ出力信号をパルスして回路６０２に通知する。ＣＬＥＡＲ信号パルスはメモリからＰＯＲＴ＿ＩＤデータをクリアして別の接続要求の見張りを開始するようにインタフェース回路６０２に指示する。３状態バッファ６１４はステートマシン６００のＣＯＮＳＵＭＥ信号出力でオンにされた場合、ＩＮＰＵＴ＿ＰＯＲＴ線にＭＹ＿ＩＤ（入力ポートＲＰ０のＩＤ）を載せる。３状態バッファ６１６はステートマシン６００のＥＮＤ＿ＣＹＣＬＥ信号出力によってオンにされた場合、ＩＮＰＵＴ＿ＰＯＲＴ線にＥＯＣコードを送出する。コンパレータ６１８はＩＮＰＵＴ＿ＳＥＥＤ線にＭＹ＿ＩＤが現われるとステートマシン６００に通知し、コンパレータ６２０はＩＮＰＵＴ＿ＰＯＲＴ線にＥＯＣコードが現われるとステートマシン６００に通知する。
図２１及び図２２は、図２０のステートマシン６００の動作を示すフローチャートである。図２１及び図２２を参照すると、システム起動後、ステートマシン６００はＳＡＭＰＬＥ＿ＥＶＥＮＴＳ信号のパルスを待機し（ステップ６２２）、出力ポートが新規にアイドル状態になったことと出力トークン・パッシング・サイクルが開始されたことを表わすＯＵＴＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥ信号のパルス（ステップ６２４）を探す。パルスが見付かると、ステートマシン６００はコンパレータ６１８の出力を調べて入力ポートＲＰ０が入力シードかどうか判定する（ステップ６２６）。入力ポートＲＰ０が入力シードの場合、ステートマシン６００は入力トークンを受け取ったかどうか調べる（ステップ６２８）。受け取っていない場合、ステートマシン６００はコンパレータ６０６の出力を調べてＯＵＴＰＵＴ＿ＰＯＲＴ線に現われる出力ポートＩＤがレジスタ６０４に格納されたＰＯＲＴ＿ＩＤの値と一致するかどうか判定する。一致しない場合、ステートマシン６００は入力トークンを渡し（ステップ６３２）、別の入力ポートが出力調停に勝ったことを表わすＯＵＴＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥ線のパルスを探す（ステップ６３４）。別の入力ポートが勝ち残ったのではない場合、ステートマシン６００はコンパレータ６２０の出力を調べてＩＮＰＵＴ＿ＰＯＲＴ線にＥＯＣコードが現われているか判定する。現われていない場合、ステートマシンはステップ６２６に戻る。
入力ポートＲＰ０が入力シードではない場合（ステップ６２６）、ステートマシン６００は入力トークンを受け取ったかどうか判定し（ステップ６３８）、受け取っていなければ、ステップ６３４とステップ６３８を経由してステップ６２６に戻る。ステートマシン６００がステップ６３８で入力トークンを受け取ったと判定した場合、ステップ６３０へ移行する。ステップ６３０で、ＯＵＴＰＵＴ＿ＰＯＲＴのポートＩＤがレジスタ６０４のＰＯＲＴ＿ＩＤと一致することをコンパレータ６０６の出力が表わしている場合、入力ポートＲＰ０は示された出力ポートへの保留要求を有している。このイベントでは、ステートマシン６００はＣＯＮＳＵＭＥ信号をアサートしてＩＮＰＵＴ＿ＰＯＲＴ線にＭＹ＿ＩＤ（入力バッファＲＢ０のＩＤ）を送出して（ステップ６４０）中央調停シーケンサがＯＵＴＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥをパルスして入力バッファと出力バッファの間の接続が行なわれたことを表わすまで待機する（ステップ６４２）。その時点で（ステップ６４４）、ステートマシン６００はＣＬＥＡＲ信号をパルスしてインタフェース回路６０２からの要求をクリアしフリップフロップ６１０をリセットしてＮＥＷ＿ＲＥＱ信号をオフにする。次にステップ６２２に戻って新規の入力トークン・パッシング・サイクルの開始を待機する。ステップ６２８で入力ポートＴＰ０が入力シードでありステートマシン６００は入力トークンを受け取ったと判定した場合、ステートマシンはＥＮＤ＿ＣＹＣＬＥ信号をアサートし（ステップ６４６）、バッファ６１６にＩＮＰＵＴ＿ＰＯＲＴ線へＥＯＣコードを送出させる。ＥＯＣコードは新規にアイドル状態の出力バッファへの保留要求をどの入力バッファも有していないことを全アービタへ通知する。ステートマシン６００はステップ６２２に戻って別のトークン・パッシング・サイクルを待機する。
ステップ６２４でステートマシン６００がＯＵＴＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥパルスを検出しなかった場合、入力バッファが新規の接続要求を有していることを表わす中央調停シーケンサからのＩＮＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥパルスを探す（ステップ６４８、図２２）。ＩＮＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥパルスの検出時に、ステートマシン６００はコンパレータ６１８を調べて入力ポートＲＰ０が入力シードかどうか判定する（ステップ６５０）。そうなら、ステートマシン６００は入力トークンを受信したかどうか調べる（ステップ６５２）。入力トークンを受信している場合、トークン・パッシング・サイクルは終了しており新規の接続要求は許可されなかったことになる。この場合ステートマシン６００はＥＮＤ＿ＣＹＣＬＥ出力をパルスして３状態バッファ６１６にＩＮＰＵＴ＿ＰＯＲＴ線へＥＯＣコードを送出させてからステップ６２２に戻り（図２１）別の入力トークン・パッシング・サイクルを待機する。
ステップ６５２で入力ポートＲＰ０が入力トークンを有していない場合、ステートマシン６００はフリップフロップ６１０のＱ出力を調べて入力ポートＲＰ０が新規の接続要求を有しているか判定する（ステップ６５５）。有していない場合、ステートマシン６００は入力トークンを渡し（ステップ６５６）、ＯＵＴＰＵＴ＿ＩＤＬＥ線がアサートされたかどうか調べる（ステップ６５８）。これは別の入力ポートが調停に勝ち残ったことを表わす。違う場合、ステートマシン６００はコンパレータ６２０の出力を調べてトークン・パッシング・サイクルが終了したか判定する（ステップ６６０）。違う場合、ステートマシン６００はステップ６５０に戻る。入力ポートＲＰ０が入力シードではない場合（ステップ６５０）でステートマシン６００が入力トークンを受け取らなかった場合（ステップ６５２）、入力トークンを取るまでステートマシン６００はステップ６５８、６６０、６５０、６６２を周回し続ける。入力トークンを取った場合、ステートマシン６００はフリップフロップ６１０のＱ出力を調べて保留中の新規要求を有しているか調べる。ない場合、ステップ６５６でトークンを渡す。新規要求を有している場合、ステートマシン６００はＲＥＱ信号をアサートして３状態バッファ６０８をオンにすることで、要求されたバッファ・アドレスをＯＵＴＰＵＴ＿ＰＯＲＴ線に送出する（ステップ６６４）。ステートマシン６００はフリップフロップ６１０もリセットする（ステップ６６４）。次にＯＵＴＰＵＴ＿ＩＤＬＥ線を調べて要求された出力ポートがアイドル状態かどうか調べる（ステップ６６６）。アイドル状態ではない場合、ステートマシン６００は入力トークンを渡す（ステップ６５６）。
要求された出力バッファがアイドル状態の場合（ステップ６６６）、ステートマシン６００はステップ６６８に移行する。ステートマシン６００はステップ６５８からもステップ６６８に移行する。この時点で（ステップ６６８）要求されたポートの出力アービタが新規の出力シードをＩＮＰＵＴ＿ＰＯＲＴ線に送出しており、全部の入力アービタがその出力ポートへの接続を競争できる。つまり、ステップ６６８でステートマシン６００はコンパレータ６１８の出力を調べて出力ポートＴＰ０が入力シードかどうかを調べる。入力シードになっている場合、コンパレータ６０６の出力をもう一度調べて出力ポートへの保留要求を有しているか判定する（ステップ６７０）。有していない場合、入力トークンを渡し（ステップ６７２）、トークン・パッシング・サイクルの終りを表わすパルスをＯＵＴＰＵＴ＿ＡＲＢ＿ＣＹＣＬＥ線で調べる（ステップ６７４）。トークン・パッシング・サイクルが終りに達していない場合、ステートマシン６００はステップ６６８に戻る。入力ポートＲＰ０が入力シードではなく（ステップ６６８）入力トークンを有していない場合（ステップ６７６）、ステップ６７４に移行する。それ以外の場合、コンパレータ６０６の出力を調べて出力ポートに対する保留要求を有しているか判定する（ステップ６７０）。
出力バッファの保留要求を検出した場合（ステップ６７０）、ステートマシン６００はＣＯＮＳＵＭＥ信号をパルスして３状態バッファ６１４をオンにすることで入力ポートＲＰ０のＩＤ（ＭＹ＿ＩＤ）をＩＮＰＵＴ＿ＰＯＲＴ線に送出する（ステップ６７８）。ステートマシン６００は要求が許可されたことを表わす中央調停シーケンサからのパルスを待つ（ステップ６８０）。その後、ステートマシン６００はＣＬＥＡＲ信号をパルスして回路６０２からの要求をクリアし、ステップ６２２に戻って（図２１）別のトークン・パッシング・サイクルの開始を待機する。
前述の明細書は本発明の好適実施例を説明しているが、当業者は広い態様における本発明から逸脱することなく好適実施例に多くの変更を行なうことができよう。したがって、添付の請求項は本発明の真の範囲と精神にこれら全ての変更が含まれるものとして包括することを意図している。
【図１】
0003852953.tif 000007
【図２】
0003852953.tif 000008
【図３】
0003852953.tif 000009
【図４】
0003852953.tif 000010
【図５】
0003852953.tif 000011
【図６】
0003852953.tif 000012
【図７】
0003852953.tif 000013
【図８】
0003852953.tif 000014
【図９】
0003852953.tif 000015
【図１０】
0003852953.tif 000016
【図１１】
0003852953.tif 000017
【図１２】
0003852953.tif 000018
【図１３】
0003852953.tif 000019
【図１４】
0003852953.tif 000020
【図１５】
0003852953.tif 000021
【図１６】
0003852953.tif 000022
【図１７】
0003852953.tif 000023
【図１８】
0003852953.tif 000024
【図１９】
0003852953.tif 000025
【図２０】
0003852953.tif 000026
【図２１】
0003852953.tif 000027
【図２２】
0003852953.tif 000028