(57)【特許請求の範囲】
【請求項１】
少なくとも二つのシステムバスと、
前記少なくとも二つのシステムバスのそれぞれに接続された少なくとも二つのプロセッサと、
前記少なくとも二つのシステムバスに接続されて、少なくとも二つのポートを有して前記ポートのそれぞれから独立してアクセス可能な少なくとも二つの挿入メモリと、
複数のエイジェントを相互に接続する入出力バスと、
前記入出力バスを前記少なくとも二つのシステムバスのそれぞれに直接に接続し、前記入出力バスを前記少なくとも二つのシステムバスを介して前記少なくとも二つのプロセッサと前記挿入メモリとに接続する少なくとも二つのポートを有する入出力バスインターフェイス手段と、
を有し、
前記少なくとも二つのシステムバスと前記入出力バスは、それぞれの前記システムバス又は前記入出力バスへのアクセスを独立して調停制御するそれぞれの調停手段を有し、
前記入出力バスインターフェイス手段は、前記挿入メモリに対して前記エイジェントから書き込まれるべきデータをラッチし、且つ前記挿入メモリから前記エイジェントにより読取られるべきデータを読む前にプリフェッチするためのバッファ手段を有する、
ことを特徴とする多重プロセッサ・アーキテクチュア。
【請求項２】
少なくとも二つのシステムバスと、
前記少なくとも二つのシステムバスのそれぞれに接続された少なくとも二つのプロセッサと、
前記少なくとも二つのシステムバスに接続されて、少なくとも二つのポートを有して前記ポートのそれぞれから独立してアクセス可能な少なくとも二つの挿入メモリと、
それぞれが複数のエイジェントを相互に接続する少なくとも二つの入出力バスと、
前記少なくとも二つの入出力バスのそれぞれを前記少なくとも二つのシステムバスのそれぞれに直接に接続し、前記少なくとも二つの入出力バスのそれぞれを前記少なくとも二つのシステムバスを介して前記少なくとも二つのプロセッサと前記挿入メモリとに接続する少なくとも二つのポートを有する少なくとも二つの入出力バスインターフェイス手段と、
を有し、
前記少なくとも二つのシステムバスと前記入出力バスは、それぞれの前記システムバス又は前記入出力バスへのアクセスを独立して調停制御するそれぞれの調停手段を有し、
前記少なくとも二つの入出力バスインターフェイス手段のそれぞれは、前記挿入メモリに対して前記エイジェントから書き込まれるべきデータをラッチし、且つ前記挿入メモリから前記エイジェントにより読取られるべきデータを読む前にプリフェッチするためのバッファ手段を有する、
ことを特徴とする多重プロセッサ・アーキテクチュア。
【請求項３】
前記バッファ手段のそれぞれは、前記少なくとも二つの挿入メモリの一の全ラインのデータに相当するサイズに相当する一ラインのデータを記憶するメモリサイズを有する少なくとも一つのバッファレジスタを有する、請求項２に記載の多重プロセッサ・アーキテクチュア。
【請求項４】
前記少なくとも二つの入出力バスインターフェイス手段のそれぞれは、一の該入出力バスインターフェイス手段の中に含まれるバッファレジスタの数に相当する一ラインから複数ラインのデータを、選択的にプリフェッチするための制御手段を有する、請求項３に記載の多重プロセッサ・アーキテクチュア。
【請求項５】
前記バッファ手段のそれぞれは、前記少なくとも二つの挿入メモリの一の全ラインのデータに相当するサイズに相当する一ラインのデータを記憶するメモリサイズを有する少なくとも二つのバッファレジスタを有し、
ここで、一方のバッファレジスタが一つのエイジェントからのデータを格納し、他方のバッファレジスタが前記少なくとも二つの挿入メモリに格納されていたデータを書き込む事によって空になる、ように構成された請求項２に記載の多重プロセッサ・アーキテクチュア。
【請求項６】
少なくとも二つのシステムバスと、
前記少なくとも二つのシステムバスのそれぞれに接続された少なくとも二つのプロセッサと、
それぞれが独立してアクセス可能な少なくとも二つの挿入メモリであって、それぞれの挿入メモリは、該挿入メモリを前記システムバスに接続するために前記システムバスの数と同じ数のポートを有し、
複数のエイジェントを相互に接続する少なくとも二つの入出力バスと、
前記少なくとも二つの入出力バスのそれぞれを前記少なくとも二つのシステムバスのそれぞれに直接に接続し、前記少なくとも二つの入出力バスのそれぞれを前記少なくとも二つのシステムバスを介して前記少なくとも二つのプロセッサと前記挿入メモリとに直接に接続する前記システムバスの数と同じ数のポートを有する入出力バスインターフェイス手段と、
を有し、
前記少なくとも二つのシステムバスと前記入出力バスは、それぞれの前記システムバス又は前記入出力バスへのアクセスを独立して調停制御するそれぞれの調停手段を有し、
前記入出力バスインターフェイス手段は、前記挿入メモリに対して前記エイジェントから書き込まれるべきデータをラッチし、且つ前記挿入メモリから前記エイジェントにより読取られるべきデータを読む前にプリフェッチするためのバッファ手段を有する、
ことを特徴とする多重プロセッサ・アーキテクチュア。
【請求項７】
前記バッファ手段のそれぞれは、前記少なくとも二つの挿入メモリの一の全ラインのデータに相当するサイズに相当する一ラインのデータを前記少なくとも二つの挿入メモリから受け取ることができるメモリサイズを有する少なくとも一つのバッファレジスタを有する、請求項６に記載の多重プロセッサ・アーキテクチュア。
【請求項８】
前記少なくとも二つの入出力バスインターフェイス手段のそれぞれは、一の該入出力バスインターフェイス手段の中に含まれるバッファレジスタの数に相当する一ラインから複数ラインのデータを、選択的にプリフェッチするための制御手段を有する、請求項７に記載の多重プロセッサ・アーキテクチュア。
【請求項９】
前記バッファ手段のそれぞれは、前記少なくとも二つの挿入メモリの一の全ラインのデータに相当するサイズに相当する一ラインのデータを記憶するメモリサイズを有する少なくとも二つのバッファレジスタを有し、
ここで、一方のバッファレジスタが一つのエイジェントを格納し、他方のバッファレジスタが前記少なくとも二つの挿入メモリに格納されていたデータを書き込む事によって空になる、ように構成された請求項６に記載の多重プロセッサ・アーキテクチュア。
【請求項１０】
二つのシステムバスと、
前記二つのシステムバスのそれぞれに接続された二つのプロセッサと、
それぞれが独立してアクセス可能な少なくとも二つの挿入メモリであって、それぞれの挿入メモリは二つのポートを有し、それぞれの前記挿入メモリの第一のポートは第一の前記システムバスに接続され、そして第二のポートは第二の前記システムバスに接続され、
複数のエイジェントを相互に接続する二つの入出力バスと、
前記二つの入出力バスのそれぞれを前記二つのシステムバスのそれぞれに直接に接続し、前記二つの入出力バスのそれぞれと前記二つのシステムバスを介して前記二つのプロセッサと前記挿入メモリとに直接に接続する前記システムバスの数と同じ数のポートを有する入出力バスインターフェイス手段と、
を有し、
前記二つのシステムバスと前記入出力バスは、それぞれの前記システムバス又は前記入出力バスへのアクセスを独立して調停制御するそれぞれの調停手段を有し、
前記入出力バスインターフェイス手段は、前記挿入メモリに対して前記エイジェントから書き込まれるべきデータをラッチし、且つ前記挿入メモリから前記エイジェントにより読取られるべきデータを読む前にプリフェッチするためのバッファ手段を有する、
ことを特徴とする多重プロセッサ・アーキテクチュア。
【請求項１１】
前記バッファ手段のそれぞれは、前記少なくとも二つの挿入メモリの一の全ラインのデータに相当するサイズに相当する一ラインのデータを前記少なくとも二つの挿入メモリから受け取ることかできるメモリサイズを有する少なくとも一つの入出力バスのためのバッファレジスタを有する、請求項１０に記載の多重プロセッサ・アーキテクチュア。
【請求項１２】
前記入出力バスインターフェイス手段は、一の該入出力バスインターフェイス手段の中に含まれるバッファレジスタの数に相当する一ラインから複数ラインのデータを、選択的にプリフェッチするための制御手段を有する、請求項１１に記載の多重プロセッサ・アーキテクチュア。
【請求項１３】
前記バッファ手段のそれぞれは、前記少なくとも二つの挿入メモリの一の全ラインのデータに相当するサイズに相当する一ラインのデータを受け取ることができるメモリサイズを有する少なくとも二つの入出力バスのためのバッファレジスタを有し、
ここで、一方の前記バッファレジスタが一つのエイジェントを格納し、他方の前記バッファレジスタが前記少なくとも二つの挿入メモリに格納されていたデータを書き込む事によって空になる、ように構成された請求項６に記載の多重プロセッサ・アーキテクチュア。
【請求項１４】
前記バッファ手段は、前記入出力バスのそれぞれのための４乃至８個の前記バッファレジスタを有する請求項１３に記載の多重プロセッサ・アーキテクチュア。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は一般的にコンピューターシステムに関し、特に多重システムバスおよび多重入出力サブシステムバスへ多重プロセッサを相互接続すべく多重プロセッサコンピューターシステムを構造化するための方法および装置に関する。この入出力サブシステムバスは、入出力サブシステムバス上に駐在するエイジェントにより、メモリに書き込むべきデータまたはメモリから読み取るべきデータをバッファリングするためのシステムバスに対してインターフェースされる。そしてすべてのシステムバスおよび入出力サブシステムバスは、多重プロセッサコンピューターシステムを得るための、分離されたバスシステム（decoupled bus system）を確定するため、独立に調停される。
【０００２】
【従来の技術】
コンピューターシステムは伝統的に中央処理ユニット（ＣＰＵ）と、ＣＰＵのオペレーションのためにＣＰＵにより使用される、主メモリを含めたデータ格納デバイスと、ＣＰＵを主要メモリその他のデータ格納デバイスに相互接続するシステムバスとを含む。加えて入出力デバイスが前記バスを介してシステムに接続される。かくしてシステムはクロックその他のコマンド信号およびデバイス間のデータ信号を搬送することにより、システムを構成するいろいろのデバイス間をつなぐ通信リンクとして働く。
【０００３】
プロセッサおよびメモリデバイスが発展するにともない、コンピューターシステムはシステムバス間を一層短時間に一層多量のデータを送信すべく益々高速で作動されるようになった。通信の重荷を幾分か軽減するため、多重バスを含むコンピューターシステムが開発されている。例えばプロセッサを関連の高速メモリに相互接続するために高速バスを用意し、低速入出力デバイスへの相互接続のために低速入出力バスを用意することができる。多重バスコンピューターシステムは多量のデータおよび制御信号を搬送することができる。しかしながら、多重バスコンピューターシステムは多重バスの制御の点でそれ自身新しい制御上の問題を作り出す。
【０００４】
さらに高度の高速性を達成するためには、多重プロセッサシステムが開発されなければならない。もちろん多重プロセッサシステムのオペレーションに必要とされる制御信号およびデータ信号の数は単一プロセッサシステムに必要とされるのもよりも大きい。コンピューターシステム内のユニット間通信の複雑度は多重プロセッサシステムの場合は一層増大することは明白である。多重プロセッサシステム内の通信の複雑度はそのようなシステムが多重バスを含むときは一層増大する。
【０００５】
プロセッサ間の相互作用を最小限にするため、多重プロセッサシステムの組織化およびプログラム化のような現存の方法を使用することによって既存のコンピューターシステムアーキテクチャのオペレーションを改善できるが、本技術分野の進歩を図ると共により良好に作動するシステムを与えるために、新規かつ改良されたコンピューターシステムを与える努力が続けられている。改良されたそのようなシステムアーキテクチャは、相当に広範囲な用途に耐える幅広いシステムコンフィギュレーションを与えるため、縮小／拡大性（scalability）を持つことが好ましい。このようにすれば、コンピューターシステムは与えられた用途に構築（コンフィギュレーション）化できると共に予定範囲内で生じた用途に応じて拡大／縮小できよう。
【０００６】
【発明が解決しようとする課題】
従って本発明は次の事項を課題とする。イ．多重プロセッサコンピューターシステムのアーキテクチャを構築するための改良された方法および装置を与えること、ロ．システムバス各々に結合された少なくとも二つのプロセッサに対し独立に調停される少なくとも二つのシステムまたはメモリバス、並びに単一システムバスを用いて複数システムに供する同数までの入出力バスエイジェントを許容できる多重拡張スロットを与えるべくシステムバスに結合される少なくとも一つの独立に調停される入出力バス、を含むべく多重プロセッサコンピューターシステムのアーキテクチャを構築する改良された方法および装置を与えること、ハ．システムバス各々に結合されたプロセッサに対し独立に調停される少なくとも二つのシステムまたはメモリバス並びに多重拡張スロット（これらは単一システムバスを用いて複数システムに供する同数までの入出力バスエイジェントを許容できる拡張スロットである）を与えるべくシステムバスに結合される少なくとも二つの独立に調停される入出力バスを含むことができるように、そしてその際、単一システムバスにかかる負荷を代償としてメモリデータバッファリングが前記入出力バスと入出力バスエイジェント間に与えられるようにすること。
【０００７】
【課題を解決するための手段】
上記の課題は本発明により次のように解決される。すなわち本発明の多重プロセッサシステムは、少なくとも二つのプロセッサが各々結合された少なくとも二つのシステムバスまたはメモリバスと、多重拡張スロットを与えるべくシステムバスに結合された少なくとも一つの入出力バスおよび好ましくは二つ以上の入出力バスとを含む。これら拡張スロットは一入出力バス当たり単一システムバス負荷を負う代償の下に相当数のシステム用入出力バスエイジェントをホスト（host、受容）する。各システムバスおよび入出力バスは本発明の多重プロセッサシステムに供する分離されたバスシステムを確定するため、独立の調停（arbitration）を受ける。システム用の主メモリは好ましくは少なくとも二つのメモリインターリーブ（interleave、複合体）を含み、その各々はシステムバスを介して同時的にアクセスできる。各入出力バスはシステムバスに対し、主メモリまたはメモリインターリーブから入出力バスエイジェントにより書き込み、読み取りされるデータをバッファする入出力インターフェース回路によって、インターフェースされる。主メモリ読み取り／書き込みデータをバッファすることにより、前記入出力インターフェース回路は、当該入出力バス上のエイジェントが主メモリからのデータを受信できるようになった最も早い時期に、主メモリからデータを供給することができ、また入出力バス上の一エイジェントが主メモリへ書き込まれるデータを供給できるようになった最も早い時期に、そのデータを受信することができる。
【０００８】
本発明の一局面において、多重プロセッサアーキテクチャは、少なくとも二つのプロセッサが各々結合された少なくとも二つのシステムバスを含む。これらのシステムバスには少なくとも二つのメモリインターリーブが結合され、各メモリインターリーブはシステムバス結合を行うための少なくとも二つのポートを有する。入出力バス上に駐在するエイジェントを相互に結合すると共にプロセッサに結合し、およびメモリインターリーブに結合するため、少なくとも二つの入出力バスが与えられる。少なくとも二つの入出力バスインターフェース手段がこれら入出力バスを上記システムバスに結合する。システムバスおよび入出力バスの制御は独立に調停され、各入出力バスインターフェース手段は、これらエイジェントからメモリインターリーブに書き込まれるデータをラッチ留めするための、かつ前記二つのメモリインターリーブからエイジェントにより読まれるべきデータを先取り読み取り（read-ahead prefetching）するための、バッファ手段を含む。本発明に基づく最も広範な装置上の特徴としては少なくとも一つの入出力バスを、その上に駐在するエイジェントの相互結合、プロセッサへの結合、およびメモリインターリーブへの結合をするため、与えることができる。
【０００９】
バッファ手段は各々、少なくとも一つのバッファレジスタを含む。このレジスタは、二つのメモリインターリーブのラインデータのサイズに相当するラインデータを受信するサイズにされたバッファレジスタを少なくとも一つ含む。この入出力バスインターフェース手段は各々、一ラインデータないし一入出力バスインターフェース手段内に含まれるバッファレジスタ数に相当するラインデータまでを選択的に取ってくるための制御手段を含む。好ましくはこのバッファ手段は各々、前記二つのメモリインターリーブの一ラインデータのサイズに相当する一ラインデータを受信するサイズにされた少なくとも二つのバッファレジスタを含む。この構造により、一エイジェントにより一バッファレジスタをパック（pack、データ全体の充填または捕捉）できる一方、もう一つのバッファレジスタの中にパックされたデータを二つのインターリーブへ書き込むことにより、当該一バッファレジスタを空にすることができる。
【００１０】
本発明の別の局面では多重プロセッサアーキテクチャは、少なくとも二つのプロセッサが各々に結合された少なくとも二つのシステムバスを含む。少なくとも二つのメモリインターリーブが設けられ、そのインターリーブは各々、これらメモリインターリーブをシステムバスに結合するため、システムバス数に対応する数のポートを有する。少なくとも二つの入出力バスが設けられ、その上に駐在するエイジェントを相互接続する。システムバス数に対応する数のポートを有する少なくとも二つの入出力バスインターフェース手段が前記入出力バスをシステムバスに結合する。上記エイジェントは入出力バス、入出力バスインターフェース手段およびシステムバスを介してプロセッサおよびメモリインターリーブに結合される。システムバスおよび入出力バスは各々、システムバスと入出力バスの制御を独立に調停するための調停手段を含み、入出力バスインターフェース手段は各々、エイジェントからメモリインターリーブへ書き込まれるべきデータをラッチ留めするための、またメモリインターリーブからエイジェントにより読み取るべきデータを先取り読み取りするための、バッファ手段を含む。
【００１１】
バッファ手段は各々、メモリインターリーブから一ラインデータを受信するサイズにされた少なくとも一つのバッファレジスタを含む。前記少なくとも二つの入出力バスインターフェース手段は、一ラインデータないしある入出力バスインターフェース手段内に含まれるバッファレジスタの数までに相当する数のラインデータを選択的に取ってくるための制御手段を含む。好ましくは、各バッファ手段は、メモリインターリーブから一ラインデータを受信するサイズにされた少なくとも二つのバッファレジスタを含む。この場合、一つのバッファレジスタは一エイジェントによりパックされ、別のバッファレジスタ中にパックされたデータをメモリインターリーブに書き込むことにより、バッファレジスタが空にされる。
【００１２】
本発明の別の局面では、多重プロセッサアーキテクチャはプロセッサが各々に結合された二つのシステムバスを含む。各々に二つのポートを有する少なくとも二つのメモリインターリーブが設けられる。各メモリインターリーブの二つのポートの第一のものは前記二つのシステムバスの第一のバスに結合され、各メモリインターリーブの二つのポートの第二のものは前記二つのシステムバスの第二のバスに結合される。二つの入出力バスはこれら二つの入出力バス上に駐在するエイジェントを相互に結合すると共に、プロセッサ、メモリインターリーブに結合する。入出力バスインターフェース手段は、二つの入出力バスを二つのシステムバスに結合する。その場合二つのシステムバスおよび二つの入出力バスバスの制御は独立に調停される。この入出力バスインターフェース手段は、当該エイジェントから当該メモリインターリーブに書き込むべきデータをラッチ留めするために、また当該エイジェントによりメモリインターリーブから読み取るべきデータを先取り読み取りするための、バッファ手段を含む。
【００１３】
このバッファ手段は、メモリインターリーブから一ラインデータを受信するサイズにされたバッファレジスタを各入出力バスごとに少なくとも一つ含む。前記入出力バスインターフェース手段は、一ラインデータないし各入出力バスの入出力バスインターフェース手段内に含まれるバッファレジスタ数までに相当する数のラインデータを選択的に取ってくるための制御手段を含む。このバッファ手段は、メモリインターリーブから受けとる一ラインデータを受信するサイズにされたバッファレジスタを各入出力バス毎に少なくとも二つ含む。この場合、充満しているバッファレジスタはこの中にパックされたデータをメモリインターリーブに書き込むことにより空にできる。他方、バッファレジスタの空のものはエイジェントによりメモリインターリーブに書き込まれるべきデータをパックできる。好ましくはこのバッファ手段は四ないし八のバッファレジスタを含む。
【００１４】
本発明のさらに別の局面では、多重プロセッサ相互接続方法は次のステップを含む。イ．第一および第二プロセッサを第一システムバスに相互接続するステップ、ロ．第三および第四プロセッサを第二システムバスに相互接続するステップ、ハ．少なくとも二つのメモリインターリーブを、該メモリインターリーブの第一および第二ポートにより、該第一および第二システムバスに相互接続するステップ、ニ．第一入出力バスインターフェース手段により第一入出力バスを該第一および第二システムバスにインターフェースするステップ、ホ．該第一入出力バスに第一エイジェントを結合するステップにして、該第一入出力バスが該第一エイジェントを相互接続できると共に該プロセッサ、該メモリインターリーブに接続できるようにするステップ。ヘ．該第二入出力バスインターフェース手段により第二入出力バスを該第一および第二システムバスにインターフェースするステップ、ト．第二エイジェントを該第二入出力バスに結合するステップにして該第二入出力バスが該第二エイジェントを相互に接続できると共に該プロセッサおよび該メモリインターリーブに結合できるようにするステップ、チ．該第一および第二入出力バス並びに該第一および第二入出力バスへのアクセスを独立に調停するステップと、リ．該第一および第二入出力バスに結合されたエイジェントから、該メモリインターリーブ中に書き込むべきデータをパックするステップにして、該データが該第一および第二入出力バスインターフェース手段中にパックするステップと、ヌ．パックしたデータを該メモリインターリーブ中に書き込むステップと、ル．該メモリインターリーブから読み取るべきデータを該第一および第二入出力バスに結合されたエイジェントまで取ってくるステップにして、該データが該第一および第二入出力バスインターフェース手段中に取ってくるステップと、オ．該メモリインターリーブから読み取ってきたデータを該エイジェントに転送するステップ。
【００１５】
この多重プロセッサ相互接続方法においては、メモリインターリーブ中に格納されたラインデータは、ｘバイトのデータを含むことが好ましい。また一エイジェントからメモリインターリーブに書き込まれるデータは少なくとも一ラインデータを含むことが好ましく、またデータをパックするステップはパックされたデータをメモリインターリーブに書き込む前にラインバッファ中へラインデータをパックすることが好ましい。さらにデータをパックするこのステップは、メモリインターリーブに書き込まれるべき多重ラインデータをパッキングするための多重ラインバッファができること、多重ラインバッファ中にデータをパックし続けること、そして多重ラインバッファの中にパックされたデータをメモリインターリーブへ書き込むことにより多重ラインバッファが空にされるときは常に、各多重ラインバッファが新規なデータに利用できるようにすべく多重ラインバッファを回転（rotation）させることできることが好ましい。
【００１６】
この多重プロセッサ相互接続方法においては、メモリインターリーブ中に格納されたラインデータは、ｘバイトのデータを含むことが好ましい。またメモリインターリーブから読み取るべきデータを、第一および第二入出力バスに結合された一エイジェントへ取ってくるステップは、取ってきたデータをそのエイジェントに転送する前に少なくとも一ラインデータをラインバッファ中に取ってくることを含むことが好ましい。さらに第一および第二入出力バスに結合されたエイジェントへメモリインターリーブからデータを取ってくる方法は次のステップを含むことが好ましい。イ．メモリインターリーブから読み取るべき先取りされたデータからなる多重ラインを受信するための多重ラインバッファを与えること、ロ．メモリインターリーブからデータを読み取るエイジェントの優先レベル相応数のラインデータを選択的に取ってくること、ハ．そのエイジェントにより多重ラインバッファから読み取られたデータを転送するステップ。
【００１７】
本発明の他の課題、利点は以下の説明、添付の図面、および前記特許請求から明かとなろう。
【００１８】
【実施例】
図を参照するに、図１（ａ）（ｂ）は本発明に基づき四つのプロセッサ１０２、１０４、１０６、１０８、二つのシステムバス１１０、１１２および二つのサブシステム入出力バス１１４、１１６を含む本発明の多重プロセッサシステムの実施例を示すブロック線図である。プロセッサ１０２、１０４はシステムバス１１０に結合され、プロセッサ１０６、１０８はシステムバス１１２に結合される。好ましい実施例では１１０、１１２は多重化されない、保有型バーストバス（tenured burst bus）である。「保有型」とは、データ転送の間、あるマスターがバスを占有することを意味し、「多重化されない」とは、個別化された物理的アドレスおよびデータ路を意味する。「バースト」とは、一つのアドレスがシステムバス上に置かれること、そしてその後メモリラインデータ全体が転送されるまで、データビット群（例えば好ましい実施例では３２ビットまたは６４ビットのいずれかのデータ）が各システムバスクロックで転送されることを意味する。
【００１９】
プロセッサ１０２-１０８はシステムバス１１０、１１２を介して四つの独立の二重ポート付きメモリインターリーブ１１８、１２０、１２２、および１２４に結合される。バス１１０、１１２はメモリバスと呼んでもよい。インターリーブとは、一つのメモリ分配方式（memory partitioning scheme）で、多重メモリバンクにまたがり線形にアドレス指定されるメモリラインを複合する（interleave）方式である。例えば図１（ａ）（ｂ）に示す四路インターリーブ（four-wayinterleave）においては、ラインアドレス０はメモリインターリーブ１１８のバンク０にマップされ、ラインアドレス１はメモリインターリーブ１２０のバンク０にマップされ、ラインアドレス２はメモリインターリーブ１２２のバンク０にマップされ、ラインアドレス３はメモリインターリーブ１２４のバンク０にマップされ、ラインアドレス４はメモリインターリーブ１１８のバンク０にマップされ、以下同様である。図１（ａ）（ｂ）の多重プロセッサシステム１００には四つのメモリインターリーブが示されるが、開示したアーキテクチャに任意の適当な数のインターリーブが使用できる。ただし一つないし四つのメモリインターリーブが典型的である。
【００２０】
システムバス１１０、１１２には、二重ポート付き（dual ported）中断コントローラ１２６、および二重ポート付き入出力バスインターフェース回路１３４、１３６を含んだ入出力バスインターフェース手段が結合される。その場合、入出力バスバスインターフェース回路１３４がシステムバス１１０、１１２に入出力バス１１４をインターフェースし、入出力バスインターフェース回路１３６が入出力バス１１６をシステムバス１１０、１１２にインターフェースする。中断コントローラ１２６、および入出力バスインターフェース回路１３４、１３６のオペレーションは後述する。
【００２１】
入出力バス１１４、は一次入出力バスとして設計されており、多重プロセッサ一システム１００にビデオサブシステム１３８を結合する。ビデオサブシステム１３８はまたビデオバス１４０を介してプロセッサ１０２-１０８に直接に結合される。入出力バス１１４には周辺バス１４２が結合され、多重プロセッサ一システム１００を標準の周辺デバイス１４４、ＲＯＭ／ＲＡＭ１４６、診断プロセッサ１４８、および構築兼検査（configuration and test, CAT）コントローラコントローラ１５０に結合する。コントローラ１５０はＣＡＴバス１５２、を介して多重プロセッサシステム１００に対してもインターフェースする。入出力バス１１４に供する中央調停制御点（central arbitration control point, CACP）を収容する直接メモリアクセス（direct memory access, DMA）コントローラ１５４もまた直接メモリアクセスオペレーションのため入出力バス１１４に結合される。
【００２２】
ある数の拡張スロット１５６が、これと対応する数のエイジェントを多重プロセッサ一システム１００にインターフェースするため、入出力バス１１４上に設けられる。多重プロセッサ一システム１００用の好ましい入出力バスは、例えば「マイクロチャンネル」の名称でＩＢＭコーポレーションから市販されている。この入出力バスバスは８個の拡張スロットを与える。このようにして本発明のアーキテクチャを利用することにより、多重プロセッサ一システム１００に使用される入出力バスに対応させてシステムバス（すなわちシステムバス１１０、１１２）に単一負荷を与える代償として、ある数の拡張スロットを与えることができる。もしも上記のＩＢＭ入出力バスが使用されると、８個の拡張スロットが与えられるが、他の入出力バスは、選択すればその入出力バスに応じた別の数の拡張スロットを与える。図示した多重プロセッサ一システム１００の入出力バス１１６はさらに別口の拡張スロット１５８を与え、また入出力バス１１６に結合された中央調停制御点ＣＡＣＰ付きのＤＭＡコントローラ１６０を含む。
【００２３】
図示した実施例では四つのプロセッサ１０２-１０８を示すが、与えられた用途および必要なプロセッサパワーに応じ、本発明に基づいて任意の合理的な数のプロセッサが使用できることは明白である。さらに、単一プロセッサ１０２-１０８の代わりに二重プロセッサ（dual processors）を与えることができる。プロセッサ１０２-１０８は好ましくはインテルコーポレーションから市販されている８０４８６プロセッサである。いずれにせよ、プロセッサ１０２-１０８は、図１（ａ）のプロセッサ１０２の拡大図により示されるプロセッサバスＰＢにより相互接続されるプロセッサユニットＰおよびコピーバックキャッシュメモリＣを含む。
【００２４】
コピーバックキャッシュは読み取りヒット（read hits）および書き込みヒット（writehits）を共に、システムバスまたはメモリバスから離して保持する。書き込みヒットはその内部キャッシュエントリーを修正し、キャッシュメモリ内で修正されたラインにマークを付ける。グローバルキャッシュコンシステンシー プロトコルは、ただ一つのコーピーバックキャッシュメモリのみがシステムに通報せずにラインを占有し、これを自由に修正することを許す。占有者たるキャッシュ（以下、オーナーキャッシュと言う）はデータのラインの有効なコピーのみを有することができるので、それが修正済みラインデータを置換するときはシステムメモリを更新しなければならない。オーナーキャッシュはまた他の任意のシステムデバイスからのライン要求に応答して、ライン内容を供給する責任をもつ。
【００２５】
図１（ａ）（ｂ）のコンフィギュレーション
（構成）は、例えば図４、図５の構成に拡大する（up-scaled）ことができ、あるいは図２、図３のコンフィギュレーションに縮小することができる。図２の点線の箱に示すように究極的縮小は、一つのバス、一つのプロセッサおよび一つのポート付きメモリを具えたシステム１６２への縮小である。コンフィギュレーションは、一つ以上のプロセッサ、一つのバスおよび一つのポート付きメモリからなる最も簡単なこの例の場合から、Ｎバス、Ｎポート付きメモリ、およびＮバス各々に接続された一つ以上のプロセッサを備えた場合に及ぶ。特に、図２Ｒ＞２-５はそれぞれ、単一バスシステム、双対バスシステム、三バスシステム、および四バスシステムを示す。一般に入出力バスはＮシステムバスすべてにまたがりポート結合するか、あるいはＮ未満のシステムバスのいくつかに対してポート結合することができる。後者の場合、すべてのプロセッサが入出力バスリソースに関して同一の判断（view）を持つことを保証するため、このＮ個のポートを結合されたメモリはハードウェアの形でインテリジェント復号器およびバス-ツー-バスブリッジサービス（bus-to-bus bridge service）を与えることができよう。
【００２６】
本発明のアーキテクチャの重要な特徴は、システムバス１１０、１１２および入出力バス１１４、１１６が独立に調停されるシステムリソースであること、すなわち多重プロセッサ一システム１００が、分離されたバス構造（decoupled bus structure）を含むこと、である。独立の調停はすべてのシステムコンフィギュレーションについてすべてのシステムおよび入出力バスに対し行われる。例えば、図１（ａ）（ｂ）に示す実施例ではシステムバス１１０、１１２は各々、それら自身の調停回路１１０Ａ、１１２Ａをバスシステムの一部として含み、調停はよく知られた調停戦略、例えば指定された優先レベル、に基づいて行われる。同様に、入出力バス１１４、１１６の調停はよく知られた調停戦略に従って独立に行われる。
【００２７】
このようにしてエイジェントが、その接続されている入出力バスの占有者になるべく調停を行うと、そのエイジェントはその入出力バスのみの専有権を勝ち取る。あるエイジェントが主メモリへのアクセスを希望することをある入出力バスインターフェースが復号するときのみ、そのエイジェントはシステムバスを求める調停を行い、メモリサイクルを実行する。それゆえ、エイジェントは、多重プロセッサシステムのプロセッサが依然としてシステムバス（すなわち図１（ａ）（ｂ）の多重プロセッサシステム１００内のシステムバス１１０、１１２）につながるメモリインターリーブへの完全なアクセスを有する間、その入出力バス上の他のエイジェントと通信することができる。
【００２８】
図６のブロック線図は、現在実行可能な多数のオペレーションによって、どのようにして開示に係るアーキテクチャの分離されたバス（decoupled bus）構造体が多重プロセッサ一システム１００内でオペレーションを行うかを例示する。例えば図６に示すように、プロセッサ１０６はシステムバス１１２を経由し信号路１６４を通してメモリインターリーブ１１８に結合され、プロセッサ１０４はシステムバス１１０を経由し、信号路１６６を通してメモリインターリーブ１２４に結合される。
【００２９】
さらに、以下のシステムオペレーションもプロセッサ１０６、１０４のオペレーションと同時進行する。イ．二つの入出力バスエイジェントＭ２Ｕ１、Ｍ２Ｕ２が入出力バス１１６を経由し信号路１６８を通して別の入出力バスに結合される。ロ．バスエイジェントＭ１Ｕ１が入出力バス１１４を経由し信号路１７０を通して入出力バスインターフェース回路１３４に結合される。信号路１７０は多分メモリオペレーションのためにシステムバス１１０、１１２の一つが利用可能となるのを待っている。プロセッサ１０８は、ビデオバス１４０を経由し信号路１７２を通してビデオサブシステム１３８に結合される。もちろん、信号路１６４-１７２は、単に本発明の例示のため多重プロセッサシステム１００を通して現在存在する多数の信号路の例をしめすにすぎない。分離されたバス構造はメモリインターリーブおよびキャッシュメモリと一体的になって、システムプロセッサおよび入出力バス上に駐在するエイジェントの同時的オペレーションを可能にし、また、本開示のアーキテクチャに基づいて構成されるシステムバスおよびシステムメモリの使用を最小限にする。
【００３０】
本例の多重プロセッサシステムの別の特徴は、本多重プロセッサシステムが主メモリ（すなわち図１R>１（ａ）（ｂ）のメモリ１１８-１２４）からまたは主メモリへデータを移動する際に実質上最大速度で入出力バス上のエイジェントを活動させることができる点である。このため、入出力バスインターフェース回路１３４、１３６は主メモリから読み取ったデータを、エイジェントがそのデータを受信するや否や供給するように構成されており、また主メモリへ書き込まれたデータを、エイジェントがそのデータを供給することができるようになるや否や、受信するように構成されている。このことは各エイジェントの能力を改善するのみならず、各エイジェントによる入出力バス帯域の利用度を低減する。入出力バス帯域の利用が低減すれば一層多数のエイジェントが入出力バスによるサービスを受けられるようになり、また、入出力バスリソース（なわち入出力バス上のエイジェント）へのアクセスを試みるプロセッサのアクセス待ちを低減することができる。
【００３１】
入出力バス上のエイジェントと本例の多重プロセッサシステムの主メモリもしくはメモリインターリーブとの間のデータ交換について図７を参照して説明する。この図は図１（ｂ）の入出力バスインターフェース回路１３４のブロック線図である。入出力バスインターフェース回路１３４、１３６は互いに非常に類似し、実質上同一であるので、入出力バスインターフェース回路１３４のみをここに説明する。最大効率は入出力バスインターフェース回路１３４、１３６が本システムのバスの全線（１６もしくは３２バイト）のバースト読み取り／書き込みサイクルを使用するときに得られる。これらのサイクルは、最適にインターリーブ化されたメモリアーキテクチャを利用する。次いでこのアーキテクチャがメモリインターリーブおよびプロセッサコピーバックキャッシュ間の取引に対して最適化される。
【００３２】
入出力バスインターフェース回路１３４、１３６がシステムバス全線のバースト読み取り／書き込みサイクルを許容できるようにするため、データは入出力バスインターフェース回路１３４、１３６内にバッファされる。書き込みにおいては入出力バスエイジェントによるある数の書き込みが、少なくとも一つのバッファレジスタを含むバッファ手段内に蓄積され、読み取りにおいてはシステムメモリからの少なくとも一ラインのデータが同じバッファ手段中に読み取られる。これらの読み取り／書き込みオペレーションはほとんどの入出力バスエイジェントもしくはマスターが「ブロック指向されている」という事実、すなわちデータは大体において大きく、かつ比較的に良好に組織化され、しかも線形上昇アドレス順で進行するという事実、を利用する。このことは入出力バスのストリーミングモードプロトコルにとって特に有用である。これらプロトコルは定義により一様（homogeneous）である。すなわち単一データストリームはすべて読み取りであるかすべて書き込みで、線形上昇アドレス順になっている。
【００３３】
図７に示す入出力バスインターフェース回路１３４の実施例では、これらバッファレジスタは先着順先出力（first-in-firsut-out, FIFO）レジスタ１７４Ａ-１７４Ｙを含む。
ＦＩＦＯレジスタ各々は（Ｘ＋１）データワードＤ０-ＤＸを含み、１２８ビットもしくは２５６ビットのいずれかのメモリラインデータ全体を格納する。例えばＸは７にすることができる。これは各々１６ビットもしくは３２ビットの８データワードが、１２８ビットもしくは２５６ビットラインデータ用の各ＦＩＦＯレジスタ１７４Ａ-１７４Ｙ内に格納されるようにするためである。
【００３４】
入出力バスインターフェース回路１３４の入出力バスアドレス復号器１７６が主メモリへのバスマスター書き込みを復号しても、その書き込みはシステムバス、すなわちシステムバス１１０、１１２の一方、に直ちには伝播されない。データは入出力バスインターフェース回路１３４内にラッチ留めされる。さらに特定するとＦＩＦＯレジスタ１７４Ａ-１７４Ｙ中にラッチ留めされ、バスマスターサイクルが直ちに停止される。このようにして入出力バスインターフェース回路１３４は、現バスマスターであるエイジェントがデータを供給するや否や、そのデータを受領する。ここでマスターが線形アドレス順の書き込みを続行するか、そうでなければあるストリームを開始すると仮定しよう。入出力バスインターフェース回路１３４は、ラインバッファであるＦＩＦＯレジスタ１７４Ａ-１７４Ｙの一つにラインデータ全体が捕捉されるまで、すなわち「パック（充填）される」まで、遅延無しにデータをラッチし続ける。このラインデータは当該システムコンフィギュレーションに応じて１６ビットまたは３２バイトである。
【００３５】
その場合のみ、入出力バスインターフェース回路１３４のバス／ＦＩＦＯコントローラ１７８はシステムバスすなわちシステムバス１１０、１１２の一方を求めて調停し、主メモリまたはメモリインターリーブ１１８-１２４へ単一書き込みラインバーストとしてデータを伝播する。その一方、入出力バスインターフェース回路１３４内の別のＦＩＦＯレジスタまたはラインバッファは中断無しに主マスターからデータを受信し続けてこれをパックし続ける。
【００３６】
図１（ａ）（ｂ）の多重プロセッサ一システム１００の好ましい実施例では、入出力バスインターフェース回路１３４、１３６はシステムコンフィギュレーションに応じて４または８個のＦＩＦＯレジスタまたはラインバッファを有する。その場合Ｙは３または７に等しい。もちろん、与えられた用途の必要に応じて任意の合理的な数のＦＩＦＯレジスタが使用できる。このようにしてＦＩＦＯレジスタ１７４Ａ-１７４Ｙはマスターにより連続的に充満され、システムバスを介して主メモリへ移され、次いで新規データに再度利用可能にされる。ラインバッファまたはＦＩＦＯレジスタ１７４Ａ-１７４Ｙは無期限に回転（roll over）し続け、マスターの遅延を起こさせない。ただし一つのバッファを空にする前にすべてのバッファが充満するほどにシステムバスが遅れてしまったときはこのかぎりではない。この遅れが生じた場合は、マスターは一つのレジスタまたはラインバッファが利用可能となるまで、停留（stall）される。
【００３７】
「パッキング」という語は、単一システムバスバースト書き込みをすべく多重バスマスターサイクルを集合化（assembled）することを意味する。例えば３２ビットマスターの８サイクルが３２バイトのラインサイズを得るための単一システムバス書き込みにパックされる。８バスマスターサイクルに関連して高々一キャッシュコヒーレンシーオペレーションが生ずるように、ラインサイズがシステムキャッシュメモリのサイズに一致されることが好ましい。１６ビットマスターの場合は、そのサイクルの内の１６個が単一システムバス書き込みにパックされる。
【００３８】
入出力バスインターフェース回路１３４の入出力バスアドレス復号器１７６が主メモリからバスマスター読み取りを復号すると、入出力バスアドレス復号器１７６はマスターを停留させ、直ちにシステムバスを得る調停を行う。一旦システムバス１１０、１１２の一つが勝ち取られると、入出力バスインターフェース回路１３４が主メモリからラインデータ全体を単一バースト読み取りで取って来て、ラインバッファまたはＦＩＦＯレジスタ１７４Ａ-１７４Ｙの一つに局所的に格納する。バスマスターにより要求されたこのデータは入出力バス１１４上に出力され、マスターは解放される。もしもマスターが線形アドレス順の読み取りを続行するか、あるいはストリームを開始すると、入出力バスインターフェース回路１３４はそのラインバッファから遅延無しにデータを供給する。
【００３９】
マスターが線形上昇順にデータを要求し続けることを予期して、入出力バスインターフェース回路１３４はさらにシステムバスバースト読み取りを開始することができる。これを先取り読み取りと言う。これは別のラインバッファまたはＦＩＦＯレジスタ１７４Ａ-１７４Ｙのいくつかに格納する。このようにして入出力バスインターフェース回路１３４はマスターの要求を予期し、マスターが要求するときに所望のデータが準備されているように局所的に待機させておく。入出力バスインターフェース回路１３４は、一ラインデータ以上で最大数がラインバッファもしくはＦＩＦＯレジスタ１７４Ａ-１７４Ｙの数に相当する数のラインデータを、主メモリから先取りするように選択的に構成できる。例えばメモリ読み取りを行うバスエイジェントまたはマスターの調停レベルに基づいて、１、２、４、または８ラインデータが先取りできる。先取りされるライン数は、当該バスエイジェントに相関される。この相関はその数が当該エイジェントにより読み取られるライン数に対応するようになっている。
【００４０】
入出力バスインターフェース回路１３４の書き込みオペレーションと異なり、第一バスマスターの読み取りは入出力バスインターフェース回路１３４が主メモリから第一ラインデータを取ってくる間、停留される。しかし、３２ビットマスターおよび３２バイトラインサイズを用いる場合は、次の７サイクルがラインバッファまたはＦＩＦＯレジスタ１７４Ａ-１７４Ｙの一つから遅延無しにサービスを受ける。したがって、停留した読み取りに関連して生じた時間損失は、はるかに多数の非遅延読み取りが行われる間に効果的に償却（amortization）され、平均読み取り待ち時間（averageread latency）が低下される。
【００４１】
最新のデータのみの使用を確実化する上記開示に係る多重プロセッサアーキテクチャのための作動方法および装置を以下に説明する。本例の高性能多重プロセッサアーキテクチャは、上記入出力バスインターフェース回路１３４、１３６内の主メモリに書き込むデータの格納を含む。入出力バスインターフェース回路１３４、１３６への書き込みデータの格納によって、現在バスマスターとなっているエイジェントがデータを供給することができるようになるや否や、確実にそのデータが受領される。しかし、そのデータが主メモリに書き込まれるまで、主メモリ内に収容されているデータは最新のデータではない。コピーバックキャッシュメモリも未だ主メモリ内のデータになっていないそのデータの正確なコピーのみを収容できる。また上記開示の多重プロセッサシステムの中断コントローラ１２６は緊密結合される。すなわち中断コントローラ１２６へのアクセスは、入出力バス１１４、１１６上に駐在するエイジェントおよびシステムバス１１０、１１２上に駐在するプロセッサ１０２-１０８により、入出力バスあるいはシステムバスへのアクセスもしくはシステムバスの占有をすることなしに迅速に行うことができる。
【００４２】
したがって本例の高性能アーキテクチャにおいては、中断が行われる前にあるバスエイジェントにより主メモリに書き込まれたデータが主メモリに到達すること、かつ入出力バスインターフェース回路１３４、１３６のＦＩＦＯレジスタ１７４Ａ-１７４Ｙを通して伝播中ではないことを確実化しなければならない。さらにターゲットメモリロケーションのキャッシュ化したコピーがすべて、中断が行われる前に無効化されもしくは更新されることを確実化しなければならない。さもないと、中断肯定応答サイクル（interrupt acknowledge cycle）およびまだ未更新の主メモリからのプロセスデータに応答して中断サービスルーチン（ＩＳＲ）が呼びだされることがある。
【００４３】
ここで図８乃至１１を参照する。これらの図は図１（ａ）（ｂ）の多重プロセッサ一システム１００の一部で、最新のデータのみが使用されることを確実化する多重プロセッサ一システム１００のオペレーションを例示する。入出力バスインターフェース回路１３４、１３６が類似するため、図７の場合と同様、入出力バスインターフェース回路１３４のみを説明する。入出力バスマスターＭ１Ｕ１が主メモリへ書き込みを行うときは、入出力バスインターフェース回路１３４のＦＩＦＯレジスタ１７４Ａ-１７４Ｙがアドレス／データをラッチ留めし、直ちにマスターＭ１Ｕ１を解放する。すなわちマスターＭ１Ｕ１は、データが主メモリに到達することを待ってからそのサイクルを停止する必要がない。これについて図８を参照されたい。
【００４４】
Ｍ１Ｕ１の書き込みサイクルが終了するや否や、マスターＭ１Ｕ１の斜視図部分から、書き込みが完了され、関連のプロセッサ（図８乃至１１にプロセッサ１０４）に書き込みサイクルが終了したことを示す中断信号が発生される。システムバス上には中断コントローラ１２６が駐在するので、また中断コントローラ１２６は入出力バスマスターの活動と同時的にアクセスできるので、中断信号（Ｉ）は図９に示すようにプロセッサ１０４へ通過される。プロセッサ１０４は中断コントローラ１２６から中断ベクトルを取得するため、システムバス１１０上に中断肯定応答（InerruptAcknowledge, ＩＡＫ）サイクルを発生する。これは図１０に示すようにプロセッサ１０４が中断サービスルーチン（Interrupt Service Routine,ＩＳＲ）を行うことができるようにするためである。本開示の多重プロセッサシステムのオペレーションのこの特徴により、最新データのみがシステムにより使用されることを確実化するため、ＩＡＫサイクルのサービスが遅延される。
【００４５】
Ｍ１Ｕ１からの中断要求に応答してプロセッサ１０４がＩＡＫサイクルをシステムバス１１０上に発生するとき、もしもシステムバス１１０が入出力バス１１４の現在の占有者でないなら、すなわち入出力バス１１４が他のあるバスマスターに占有され、このデータがＦＩＦＯレジスタ１７４Ａ-１７４Ｙ内に収容できるなら入出力バスインターフェース回路１３４が当該ＩＡＫサイクルを求める再試行信号ＲＥＴＲＹをプロセッサ１０４に発生し、図１１に示すようにビジー信号（使用中であることを示す信号）ＢＵＳＹを提起する。この入出力バスインターフェース回路１３４があたかも中断コントローラ１２６の代わりに選択されたスレーブ（slave）であるかのように振る舞う。中断コントローラ１２６は、入出力バスインターフェース回路１３４により発生された再試行信号を検出するためシステムバスを監視すると共に、スレーブとしてＩＡＫサイクルに応答して適当な中断ベクトルを返すがその前に、予定数のクロックサイクル分の時間だけ待機する。もしも中断コントローラ１２６がその待機時間の間、再試行信号を発見しないと、入出力バスインターフェース回路１３４は再試行信号を発生しなくなり、従って中断コントローラ１２６は適当な中断ベクトルを供給し、ＩＡＫサイクルを正常通り終了する。
【００４６】
この再試行信号は当該ＩＡＫサイクルを係属させたまま、プロセッサ１０４をシステムバスから降ろさせる。システムバス調停回路１１０Ａ、１１２Ａは、入出力バスインターフェース回路１３４がその信号ＢＵＳＹを除去するまで、プロセッサ１０２がシステムバス上に載ることを許さない。やがてシステムバスは入出力バスの専有権を獲得する。しかし、先の占有者に帰属する主メモリ書き込みのためのバスマスターであってＦＩＦＯレジスタ１７４Ａ-１７４Ｙに係属中のものが、すべてのバスマスター書き込みを完了し、すべての関連のコヒーレンシーオペレーションを完了するまでは、入出力バスインターフェース回路１３４はその信号ＢＵＳＹを除去しない。入出力バスインターフェース回路１３４は何時コヒーレンシーオペレーションが完了するかを決定するため、システムバスを監視する。入出力バスインターフェース回路１３４がその信号ＢＵＳＹを除去するまで、入出力バスインターフェース回路１３４は他の任意のプロセッサによる入出力バスへのアクセスの試み、またはＩＡＫサイクルの試みに応答して再試行信号を発生し続ける。
【００４７】
最後に入出力バスインターフェース回路１３４がその信号ＢＵＳＹを除去すると、図１（ａ）に示す１１０Ａまたは１１２ＡはＩＡＫサイクルを初めに試みたプロセッサ１０４がサイクルを再発行させることを許す。この場合は、入出力バスインターフェース回路１３４は使用中でないので入出力バスインターフェース回路１３４は再試行信号を発行せず、中断コントローラ１２６が中断ベクトルを供給し、サイクルを終了する。この場合、入出力バスインターフェース回路は再試行信号を発行しないが、中断コントローラ１２６がプロセッサ１０４に成功裡に中断ベクトルを供給してＩＡＫサイクルを終了させたことを入出力バスインターフェース回路１３４が検出するまで、入出力バスインターフェース回路は入出力バス専有権を「ロック」し、バスを他のマスターに引き渡すことはしない。この手順は、他の入出力バスがマスターとして当該入出力バス占有権を獲得せんとして入出力バスインターフェース回路１３４にメモリ書き込みを発行すると共により高い優先性の中断を上記ＩＡＫ完了前に発行することに対抗するための保護策となる。もしも別のマスターによるバス占有が許可されたとすると、関連のデータが依然として入出力バスインターフェース回路１３４のＦＩＦＯレジスタ１７４Ａ-１７４Ｙ内に存在しているにも拘わらず、より高い優先性の中断のために中断コントローラ１２６が中断ベクトルを供給する可能性がある。上記のＩＡＫサイクルの取り扱いと類似の方法で使用中の入出力バスへの非ＩＡＫサイクルを取り扱うことにより、システム性能を強化することができ、デッドロックを回避することができる。
【００４８】
バッファしたデータがインターフェース回路内に駐在するときは中断肯定応答（ＩＡＫ）サイクルの発行をプロセッサに再試行させるよう、多重プロセッサ一システム１００の入出力バスインターフェース回路１３４、１３６等のシステムの全入出力バスインターフェース回路を構築できるが、そのようなオペレーションはシステムの動作を遅延させるだけである。もしもすべてのバッファ済みデータが、ＩＡＫサイクルの完了前に主メモリに排出されているなら、システムの遅延が起きる。従って一次入出力バス１１４に対する入出力バスインターフェース回路１３４についてのみ、上記ＩＡＫ再試行オペレーションを与えることが好ましい。入出力バス１１６等の任意の追加の入出力バスからのデータの排出は、任意の追加入出力バスへの入出力アクセスをシステムのプロセッサに行わせることにより、確実化できる。この手順は入出力バスインターフェース回路１３４のＩＡＫ再試行オペレーションよりも遅いけれども、任意の駐在データを主メモリへ排出することを確実に行うことができる。
【００４９】
ここで好ましい入出力バスであるＩＢＭマイクロチャンネルを引用しながら、分離された多重入出力バス（multiple decoupled I/O buses）を共通システムバスに対してインターフェースするための方法および装置を説明する。しかしながら、本発明のこの特徴は一般的にいかなる入出力バスに対しても、それが与えられた多重プロセッサシステムに使用すべく選択されたものであれば、適用できることを了解されたい。とりわけ分離された多重入出力バスを使用することの利点は、多重プロセッサシステムを得る上で構築の自由度が大きいことが挙げられる。その理由は各追加入出力バスが相当数（例えば本好ましい入出力バス例では８または１６個）の拡張スロットを支持するからである。入出力バスは独立であり、主メモリデータ読み取り／書き込みをバッファするので、達成可能な入出力データ率は各入出力バスの追加数に比例して増大する。追加入出力バスは入出力帯域および容量への要求が大きくなるに伴って追加できる。また各追加入出力バスは独立にバッファされるので、システムバス上に、この余分の負荷があることを別にすれば追加入出力バスを追加しても関連して生じる内在的な電気的負荷の問題は起きない。例えばマイクロチャンネル入出力バスの使用により、１個の余分なシステムバス負荷で８個の追加入出力バスエイジェントに対する容量を与える。本例に開示した多重プロセッサシステムにおいては、入出力バスは各々にそれ自身の入出力バスインターフェース回路および内蔵のＣＡＣＰとのＤＭＡを有することに注目されたい。
【００５０】
本例の多重プロセッサシステムにおいては多重入出力バスを許容するために二つの復号装置が利用される。それらは、利用可能なメモリおよび入出力バスの入出力空間を分割（partitions）するプログラム可能な復号器と、エイジェントおよびＤＭＡ／ＣＡＣＰ等の各入出力バス上のハードウェア（これらは市販のものでよい）が一つ以上の入出力バスの存在を理解する義務から解放するためのアドレストランスレーターとである。
【００５１】
入出力バスに対する各入出力バスインターフェース回路、例えば図７に示す入出力バスインターフェース回路１３４、は一組の入出力バスコンフィギュレーションレジスタ１８０を含む。入出力バスコンフィギュレーションレジスタ１８０のいくつかは入出力バスが応答するメモリアドレスおよび入出力アドレスを確定する。システムコンフィギュレーション（システムの構築）の期間に、各入出力バスに関連された入出力バスインターフェース回路１３４の入出力バスコンフィギュレーションレジスタ１８０の内の対応するものに、ＣＡＴバスを介して入出力バスに対する特定のアドレス領域が負荷される。このようにして利用可能なメモリ空間および入出力空間が多重入出力バスに分配される。入出力バスコンフィギュレーションレジスタ１８０内に与えられる特定のアドレスレジスタには次のものがある。イ．ある特定の入出力バスに分配されたメモリアドレスの領域を特定するための、入出力バスメモリレジスタのトップ／ボトムＴＯＭ／ＢＯＭ、ロ．ある特定の入出力バスに分配された入出力アドレス領域を特定するための、入出力アドレスレジスタのトップ／ボトムＴＩＯ／ＢＩＯ、ハ．ある特定の入出力バスに対して、７６８Ｋないし８９６Ｋ領域内のいずれの８Ｋ幅拡張ＲＯＭスライスが分配されたかを特定するためのＲＯＭ拡張レジスタ、ニ.２４ビットアドレスバスエイジェントを支持するために８Ｋないし１６Ｍ領域内のいずれの１Ｍスライスが特定入出力バスに分配されたかを特定するための８Ｋないし１６Ｍローカルビットレジスタ。
【００５２】
入出力バスハードウェアに関連していくつかの固定アドレスが設けられる。ＩＢＭマイクロチャンネルハードウェアではこれら固定アドレスのすべてが入出力空間の最下位５１２バイト内に駐在する。例えば、入出力ポート０１００ｈ-０１０７ｈはエイジェントの構築のために保全される。エイジェントがセットアップモードに置かれると、そのエイジェントはこの領域の入出力アドレス空間に応答し、かつコンフィギュレーションを目的としてのみ、この領域に応答する。すべてのエイジェントが入出力アドレス空間の同一領域を使用するので、異なる入出力バス上のエイジェントを識別するため、システムバスアドレス復号器１８２が設けられる。しかしその場合でも複合器１８２は同時にすべての入出力バス上のすべてのエイジェントが依然入出力アドレス空間の同一領域を見ることを保証する。入出力バスコンフィギュレーションレジスタ１８０内の専用トランスレーションレジスタによって入出力バスインターフェース回路１３４内にプログラム可能なアドレストランスレーション装置が設けられる。システムの構築と同時に、各入出力バスインターフェース回路１３４内のこの専用トランスレーションレジスタは、ＣＡＴバスを介してこれら固定アドレスへのアクセスを復号またはトランスレーションするために使用するベース値を負荷される。
【００５３】
例えば、図１（ａ）（ｂ）に示すようにそれぞれ入出力バス１１４、１１６に接続された入出力バスインターフェース回路１３４、１３６がそれらのシステムバスアドレス復号器に対しトランスレーションベース値として００００ｈおよび０４００ｈを有していると仮定しよう。トランスレーションベース値００００ｈを持つ、図７に示す入出力バス１１４のシステムアドレス復号器１８２は、００００ｈで始まる５１２バイトブロックに応答する。この入出力バス上のエイジェントをプロセッサが構築するときは、このプロセッサは入出力バスの定義毎にポート０１００ｈ-０１０７ｈを通して構築を行う。第二の入出力バスバス１１６上のエイジェントを構築するためには、このプロセッサはポート０５００-０５０７ｈを通して構築を行う。すなわちポートは５１２バイトブロック中に同じだけオフセットされているが、この場合は００００ｈの変わりに０４００ｈを基準とするしかし、第二入出力バス１１６の入出力バスバスインターフェース回路１３６のシステムバスアドレス復号器（この復号器は図示してないが、図７のシステムバス復号器１８２と実質的に同一である）が第二入出力バス１１６上にサイクルを伝播するに先立ちこのオフセットを剥奪（strip）する。その結果第二入出力バス１１６上のエイジェントは依然として０１００ｈ-０１０７ｈのコンフィギュレーションサイクルを見る。
【００５４】
【効果】
以上に説明したように、本発明は第一に多重プロセッサコンピューターシステムのアーキテクチャを構築するための改良された方法および装置を与えることができる。そしてこの多重プロセッサコンピューターシステムのアーキテクチャを構築する方法および装置は、システムバス各々に結合された少なくとも二つのプロセッサに対し独立に調停される少なくとも二つのシステムまたはメモリバス、並びに単一システムバスを用いて複数システムに供する同数までの入出力バスエイジェントを許容できる多重拡張スロットを与えるべくシステムバスに結合される少なくとも一つの独立に調停される入出力バスを含むことができる。またこの方法および装置は、システムバス各々に結合されたプロセッサに対し独立に調停される少なくとも二つのシステムまたはメモリバス並びに多重拡張スロットを与えるべくシステムバスに結合される少なくとも二つの独立に調停される入出力バスを含むことができる。これらの多重拡張スロットは単一システムバスを用いて複数システムに供する相当数の入出力バスエイジェントを許容できる拡張スロットである。そしてこれら多重拡張スロットは一つのシステムバスに負荷がかかるだけで前記入出力バスと入出力バスエイジェント間にメモリデータバッファリングを与えることができる。
【図面の簡単な説明】
【図１】本発明の多重プロセッサシステムの実施例を示すブロック線図で、四つのプロセッサ、二つのシステムバスおよび二つのサブシステム入出力バスを含む例を示す。
【図２】図１（ａ）（ｂ）の多重プロセッサシステムの縮小されたコンフィギュレーションのブロック線図の一部である。
【図３】図１（ａ）（ｂ）の多重プロセッサシステムの縮小型コンフィギュレーションのブロック線図の残りの一部である。
【図４】図１（ａ）（ｂ）の多重プロセッサシステムの拡大型コンフィギュレーションのブロック線図の一部である。
【図５】図１（ａ）（ｂ）の多重プロセッサシステムの拡大型コンフィギュレーションのブロック線図の残りの一部である。
【図６】図１（ａ）（ｂ）の多重プロセッサシステムのブロック線図で、このシステム上で同時に行うことのできるオペレーションを例示する。
【図７】図１（ａ）（ｂ）の多重プロセッサシステムの入出力バスインターフェース回路のブロック線図である。
【図８】図１（ａ）（ｂ）の多重プロセッサシステムにおいて最新のデータのみが使用されることを確実化する本システムの動作を例示する、多重プロセッサシステムの図の一部である。
【図９】図８と同様、図１（ａ）（ｂ）の多重プロセッサシステムにおいて最新のデータのみが使用されることを確実化する本システムの動作を例示する、多重プロセッサシステムの図の他の一部である。
【図１０】図８と同様、図１（ａ）（ｂ）の多重プロセッサシステムにおいて最新のデータのみが使用されることを確実化する本システムの動作を例示する、多重プロセッサシステムの図の他の一部である。
【図１１】図８と同様、図１（ａ）（ｂ）の多重プロセッサシステムにおいて最新のデータのみが使用されることを確実化する本システムの動作を例示する、多重プロセッサシステムの図の他の一部である。
【符号の説明】
１００  多重プロセッサシステム
１０２−１０８  プロセッサ
１１０、１１２  システムバス
１１４、１１６  サブシステム入出力バス
１１８−１２４  二重ポート付きメモリインターリーブ
１２６  二重ポート付き中断コントローラ
１３４、１３６  二重ポート付き入出力バスインターフェース回路
１３８  ビデオサブシステム１
１４０  ビデオバス
１４２  周辺バス
１４４  周辺デバイス
１４６  ＲＯＭ／ＲＡＭ
１４８  診断プロセッサ
１５０  構築兼検査（configuration and test, CAT）コントローラ
１５２  ＣＡＴバス
１５４  直接メモリアクセス（direct memory access, DMA）コントローラ
１５６  スロット
１５８  拡張スロット
１６０  ＤＭＡコントローラ
１６２  一バス、一プロセッサおよび一ポートメモリを具えたシステム
１６４−１７２  信号路
１７４Ａ−１７４Ｙ  ＦＩＦＯレジスタ
１７６  入出力バスアドレス復号器
１７８  バス／ＦＩＦＯコントローラ
１８０  入出力バスコンフィギュレーションレジスタ
１８２  システムバスアドレス復号器
【図１】
0003765586.tif 000002
【図２】
0003765586.tif 000003
【図３】
0003765586.tif 000004
【図４】
0003765586.tif 000005
【図５】
0003765586.tif 000006
【図６】
0003765586.tif 000007
【図７】
0003765586.tif 000008
【図８】
0003765586.tif 000009
【図９】
0003765586.tif 000010
【図１０】
0003765586.tif 000011
【図１１】
0003765586.tif 000012