(57)【特許請求の範囲】
【請求項１】
１つ以上のノードから成る非階層のスケーラブル・コンピュータ・システムであって、コンピュータ・システム内の各ノードが、専用キャッシュ（Ｌ１キャッシュ）を有する少なくとも１つの中央プロセッサと、メモリ制御装置とを含み、それぞれが同一の製造仕様を有する、各ノード内の複数のプロセッサ半導体チップ（プロセッサ・チップ）と、
コンピュータ・システム内の全てのプロセッサ・チップ上の全ての中央プロセッサによりアクセス可能な、コンピュータ・システム内の共用メモリを提供する複数のＲＡＭ（ランダム・アクセス・メモリ）半導体チップであって、共用メモリがコンピュータ・システム内のＲＡＭ全体から成り、コンピュータ・システム内の異なるプロセッサ・チップ上のメモリ制御装置に接続されるＲＡＭの複数のサブセット（ＲＡＭセクション）に分割される、複数のＲＡＭチップと、
各々がそれぞれのＲＡＭセクションと、それぞれのプロセッサ・チップ上のそれぞれのメモリ制御装置との間に局所的に接続され、それぞれのプロセッサ・チップ上の各プロセッサに対して、局所的に接続されるＲＡＭセクションとの間の直接アクセスを提供する複数のローカル・メモリ・バスと、
同一ノード内の各プロセッサ・チップに接続されて、同一ノード内の任意のプロセッサ・チップによりアクセスされる共用メモリ内のデータを記憶する、各ノード内のノード・キャッシュであって、該ノード・キャッシュは、複数の同一のノード・キャッシュ・チップから構成され、各ノード・キャッシュ・チップがノード・キャッシュに記憶される各データ・ラインの一部を記憶して、前記複数のノード・キャッシュ・チップがデータ・ラインの各部を並列に送信する、ノード・キャッシュと、
同一ノード内の各ノード・キャッシュ・チップと、同一ノード内の各プロセッサ・チップとに接続され、同一ノード内の総てのプロセッサ・チップ上の前記Ｌ１キャッシュに格納されるデータ・ラインのステータスに関するデータを記録する、各ノード内のノード・ディレクトリと、
システム内のデータ・コヒーレンスを維持し、ノード・キャッシュからデータをフェッチする、ノード・ディレクトリのノード制御手段と、
各プロセッサ・チップを同一ノード内のノード・キャッシュ・チップ及びノード・ディレクトリに接続して、任意のプロセッサが該任意のプロセッサを含むプロセッサ・チップに直結されていないＲＡＭセクションをアクセスするとき、該任意のプロセッサが、ノードの共用メモリの任意のＲＡＭセクション上のデータをアクセスすることを可能にする、各ノード内のノード内バス機構と、
を含み、
任意のプロセッサがＬ１キャッシュでミスした場合、メモリ制御装置が要求をノード制御手段に送信するのと並列に、ＲＡＭセクションからのフェッチ・オペレーションを開始し、後に要求されたデータ・ラインがノード・ディレクトリに存在することが見出された場合、フェッチ・オペレーションが取り消される、
スケーラブル・コンピュータ・システム。
【請求項２】
ノード・ディレクトリ及び各ノード・キャッシュ・チップを、同一ノード内の各プロセッサ・チップに接続する電子スイッチをさらに含む、請求項１記載のスケーラブル・コンピュータ・システム。
【請求項３】
データのプロセッサ要求アドレスを接続ノード・ディレクトリに提供することにより、データを接続ノード・キャッシュから要求する、各プロセッサ・チップ内の制御手段であって、データが要求元プロセッサ・チップに接続されるＲＡＭセクションから入手可能でない場合、接続ノード・キャッシュからのデータのフェッチを制御する、請求項２記載のスケーラブル・コンピュータ・システム。
【請求項４】
データが該ノード・キャッシュに含まれない場合、データに対するノード要求を、要求先アドレスを含むＲＡＭセクションに接続されているプロセッサ・チップに提供する、ノード・ディレクトリのノード・ミス制御手段であって、要求先プロセッサ・チップが要求先アドレスのデータのコピーを該ノード・キャッシュに送信し、そのデータが次に該ノード・キャッシュにより、要求元プロセッサに送信される、ノード・ミス制御手段と、
をさらに含む請求項１〜３のいずれか１項記載のスケーラブル・コンピュータ・システム。
【請求項５】
ノード内電子スイッチが、ノード・ディレクトリ及び各ノード・キャッシュ・チップの夫々と同一のチップに備えられ、各ノード・キャッシュ・チップを同一ノード内の各プロセッサ・チップに接続し、前記ノード内電子スイッチに接続されるノード制御手段が、前記ノード内電子スイッチを制御してコンピュータ・システム内の任意のプロセッサにより要求されるデータを転送する、請求項２〜４のいずれか１項記載のスケーラブル・コンピュータ・システム。
【請求項６】
コンピュータ・システム内に提供される複数のノードと、
各ノード内のノード・キャッシュ及びノード・ディレクトリを、コンピュータ・システム内の他の各ノード内のノード・キャッシュ及びノード・ディレクトリに接続する１つ以上のノード間バスと
を含む、請求項１〜５のいずれか１項記載のスケーラブル・コンピュータ・システム。
【請求項７】
前記各ＲＡＭセクションに固有の実アドレスの範囲が、システム共用メモリ内の異なるバイト位置に割当てられ、実アドレスが共用メモリ内のバイト・アドレスであり、コンピュータ・システム内の任意のプロセッサ上で実行するプログラムにより使用可能であって、コンピュータ・システム内の任意のプロセッサが、プログラム定義アドレスにより、共用メモリ内に配置されるデータ及びプログラムをアクセスすることを可能にし、
各プロセッサ・チップが、共用メモリのプログラム定義アドレスを各ＲＡＭアドレスに変換するアドレス変換制御手段を含む、請求項１〜６のいずれか１項記載のスケーラブル・コンピュータ・システム。
【請求項８】
各それぞれのＲＡＭセクション上の各ＲＡＭアドレスが、コンピュータ・システム内の固有のプロセッサ・チップ識別子（ＩＤ）を追加されることにより、システム共用メモリ内で固有にされ、各共用メモリ・アドレスが少なくともプロセッサ・チップ識別子（ＩＤ）及びＲＡＭアドレスを含む、請求項７記載のスケーラブル・コンピュータ・システム。
【請求項９】
固有のプロセッサ・チップＩＤが、プロセッサ・チップを含むノードのノード・アドレスを含み、各ノードがコンピュータ・システム内で固有のノード・アドレスを有し、追加されるチップＩＤがそのノード内でのみ固有であることを要求される、請求項８記載のスケーラブル・コンピュータ・システム。
【請求項１０】
各プロセッサ・チップ上のプロセッサが、特定のコンピュータ・アーキテクチャに従い構築されて、そのアーキテクチャ用に作成されたプログラムを実行し、アドレス変換制御手段が実行プログラム内のアドレスを要求ＲＡＭアドレスに変換する、請求項７記載のスケーラブル・コンピュータ・システム。
【請求項１１】
アドレス変換制御手段によるＲＡＭアドレスへの変換後に、プロセッサ・チップの外部のプログラム・アドレスを伝達する、各プロセッサ・チップ上のアドレス通信制御手段をさらに含む、請求項１０記載のスケーラブル・コンピュータ・システム。
【請求項１２】
各ＲＡＭセクション内のメモリ実アドレス空間が、複数のアドレス空間に分割され、それらが
コンピュータ・システム内の任意のプロセッサ・チップ上で実行されるプログラムによりアクセス可能な、システム共用メモリの一部として提供される第１のメモリ空間と、
接続されるプロセッサ・チップ上のプロセッサにより実行されるマイクロコードによってのみアクセス可能で、コンピュータ・システム内の任意のプロセッサ・チップ上で実行するプログラムによってはアクセス可能でない、ハードウェア・メモリの第２のメモリ空間と
を含む、請求項１１記載のスケーラブル・コンピュータ・システム。
【請求項１３】
各ＲＡＭセクションの第１及び第２のメモリ空間が、ＲＡＭアドレスのそれぞれの範囲を含み、第１のメモリ空間内のＲＡＭアドレスだけが、アドレス変換制御によりサポートされて、プログラム・アドレスからＲＡＭアドレスに変換される、請求項１２記載のスケーラブル・コンピュータ・システム。
【請求項１４】
アドレス変換制御手段が、各ＲＡＭセクションの第１のメモリ空間内のＲＡＭアドレスを、固有のプログラム・バイト・アドレスの範囲に割当て、プログラム・アドレスが、コンピュータ・システム内の任意のプロセッサ・チップ内のプロセッサ内で実行するプログラムにより生成されるとき、ＲＡＭセクション内の要求データ位置のアクセスを可能にする、請求項１３記載のスケーラブル・コンピュータ・システム。
【請求項１５】
任意のプロセッサ・チップがシステム共用メモリをアクセスできる複数のプロセッサを含み、プロセッサ・チップＩＤとは別の固有のプロセッサ識別子（ＩＤ）が、各プロセッサ・チップ内の各プロセッサに割当てられ、各システム固有のＲＡＭアドレスが、プロセッサＩＤ、プロセッサ・チップＩＤ、及びそれぞれのＲＡＭセクションのＲＡＭアドレスを含み、ＲＡＭアドレスがそのＲＡＭセクション内でのみ固有である必要がある、請求項１４記載のスケーラブル・コンピュータ・システム。
【請求項１６】
各ノード・ディレクトリが、同一ノード内の総てのプロセッサ・チップ上の前記Ｌ１キャッシュ格納されるデータ・ラインの総てのＲＡＭアドレスを記憶し、及び、各ノード・キャッシュが、同一ノード内の任意のプロセッサ・チップによりアクセスされる共用メモリ内のコピーを受信及び記憶する、請求項１〜１５のいずれか１項記載のスケーラブル・コンピュータ・システム。
【請求項１７】
コンピュータ・システムが２つ以上のノードを含み、要求元ノードのノード制御手段からの要求アドレスの同報に応答して、要求先ノード・ディレクトリが要求されたデータ・ラインのコピーを要求元ノード・キャッシュに転送し、要求元ノード制御手段が該データ・ラインのコピーを、要求元ノード・キャッシュから要求元リモート・プロセッサに転送する、請求項１６記載のスケーラブル・コンピュータ・システム。
【請求項１８】
各ノード・ディレクトリ内のコヒーレンス制御が、各有効ノード・ディレクトリ・エントリ内の制御情報を用いて行われ、該制御情報が要求元プロセッサＩＤ、及び要求ＲＡＭアドレスを含むＲＡＭセクションの記憶ＩＤを含む、請求項１〜１７のいずれか１項記載のスケーラブル・コンピュータ・システム。
【請求項１９】
要求ＲＡＭデータ・ラインに対し、要求元プロセッサに一時的に与えられるアクセス権限を示す権限標識が、コンピュータ・システム内の各ノード・ディレクトリ内の各有効ノード・ディレクトリ・エントリ内に記憶され、アクセス権限が読出し専用及びストア権限を含む、請求項１８記載のスケーラブル・コンピュータ・システム。
【請求項２０】
コンピュータ・システム内の他の各ノード・ディレクトリと通信する、各ノード・ディレクトリのコヒーレンス通信制御手段が、同一のＲＡＭデータ・ラインをアクセスして、システム共用メモリ内の全てのデータのコヒーレンスを維持する、請求項１９記載のスケーラブル・コンピュータ・システム。
【請求項２１】
各有効データ・ラインが、コンピュータ・システムの１つ以上の専用プロセッサ・キャッシュ及びノード・キャッシュに同時に記憶可能であり、同一のデータ・ラインが、要求ＲＡＭアドレスの接続ノード・ディレクトリ内の対応するノード・ディレクトリ・エントリ内で識別されるＲＡＭセクションにストアバックされ、
ノード・ディレクトリ、ノード・キャッシュ及び専用プロセッサ・キャッシュ内のストアバック制御手段が、データ・ラインの最新の変更バージョンを、識別されたＲＡＭセクション内の要求アドレスに後に記憶する、請求項２０記載のスケーラブル・コンピュータ・システム。
【請求項２２】
ノード間バスが、非共用バスである請求項６〜２１のいずれか１項記載のスケーラブル・コンピュータ・システム。
【請求項２３】
ノード間バスが、共用バスである請求項６〜２１のいずれか１項記載のスケーラブル・コンピュータ・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は単純な製造可能性を有する高度にスケーラブルな高性能共用メモリ・コンピュータ・システムのための、新規の非階層ノード構造を提供する。本発明は少数タイプのハードウェア・チップ・コンポーネントを使用して、広範囲のシステム・スケーラビリティをサポートし、製造の容易性及び市場拡大を可能にする。システムはこれらの各タイプの多数の複製プロセッサ・チップを含み得、そこでは大規模システム・メモリが、システム内の全てのプロセッサにより共用可能である。大規模共用メモリは一般に、それぞれがプロセッサ・チップに接続されるＤＲＡＭチップのサブセットにより構成される（ＳＲＡＭなどの他のタイプのメモリ技術も代用され得る）。任意のＤＲＡＭサブセット内のデータは、システム内の任意のプロセッサによりアクセス可能であり、任意のプロセッサにより実行される命令内の同一のアドレスを用いてアクセスされる。従って、同一のメモリ・アドレスが、システム内の全てのプロセッサの実行可能な命令内で使用され得る。固有タイプのメモリ・バス機構が、各プロセッサ・チップを共用メモリ内のそれぞれのＤＲＡＭサブセットに接続し、ＤＲＡＭサブセットに直結されるプロセッサによる高速メモリ・アクセスを可能にする。たとえ同一の共用システム・メモリ内の全てのＤＲＡＭが、全てのプロセッサによりアドレス指定可能であっても、従来のメモリ・バス設計により共用メモリ内で一般に発生するバス競合が、本発明により最小化される。ＤＲＡＭのサブセットは、等しいサイズを有する必要はない。直結されるプロセッサを有するＤＲＡＭサブセットのグループが、共用メモリ・システムのノードを構成する。各ノードは、ノード・ディレクトリ及びノード電子スイッチと共にノード・キャッシュを有する。ノードのノード・キャッシュ間に接続されるノード間バスにより、複数のノードが一緒に接続される一方、全てのノードが単一の分散共用メモリ・システム内に含まれる。そこではノード・ディレクトリが、システム共用メモリを構成する全てのノードへの、またはそれらのノードからのプロセッサ・アクセス、並びにそれらのノード内のデータのコヒーレンスを管理する。
【０００２】
【従来の技術】
従来のメモリ・システム制限：
本発明は従来のノード・システムにおいてしばしば見受けられるように、ノード間で通信するために、通信リンクまたは"メッセージ・プロトコル"を使用しない。従来システムはしばしば各ノード内に、任意の他のノード内のメモリと無関係に動作するメモリを提供するので、これはノード間（inter-nodal）共用メモリとは言えない。こうした従来システムは、単一ノード内のプロセッサ間でのみ共用されるノード内（intra-nodal）共用メモリを、ノード内に含む。こうした従来システムは、メモリ内のデータの保全性を保つために不可欠な、システム内のコヒーレンス要件に違反することなく、異なるノード内のプロセッサによるそれらのいわゆる共用メモリへのアクセスを可能にしない。
【０００３】
それにひきかえ、本発明はシステムの全てのノード内の全てのＤＲＡＭ内の全てのデータのシステム・コヒーレンスを保証する一方、システム内の任意のノード内のプロセッサによる、全てのノードＤＲＡＭへのノード間アクセスを可能にする。更に、本発明はＤＲＡＭが単一のノード・システム内にあるか、複数ノード・システム内にあるかに関わらず、複数の別々に接続されたＤＲＡＭを単一の共用メモリに結合する。そしてこれらのＤＲＡＭは、システム全体の全てのノード内の全てのプロセッサにより使用可能である。従って、本発明の任意のノード内のプロセッサが直接メモリ・アクセスにより、他のノード内に配置されるデータをアドレス指定及びアクセスできる。このアクセスは、異なるノード内のＤＲＡＭに記憶されるオペランドを要求する命令のプロセッサ実行の間に発生し得る。ノード内のデータをアクセスするために、またはシステムの異なるノード間でデータをアクセスするために、メッセージングまたはパケット処理は、本発明によれば使用されない。
【０００４】
ノード間キャッシュ・コヒーレンス制御無しに、別のノードからデータをアクセスすると、システム・データの保全性を破壊する。十分なコヒーレンス制御無しに、データが実行のために独立のノード・メモリ間でコピーされると、コピーされたデータ項目の値が、システム内の他のコピーと不調和に変更されない保証はない。これはシステム内のデータの保全性に悪影響を及ぼす。コヒーレンス制御は、誤った処理結果の獲得につながり得る、データ項目のコピーの未知のバージョンの使用を阻止する。従来のコヒーレンス制御の大部分はノード内共用メモリを取り扱い、そこでは単一の集中化機構がコヒーレンスを維持するために使用される。
【０００５】
ノード内共用メモリ及び分散コヒーレンス機構の従来の扱いは、一般に、次の３つのトピックの１つを扱う。すなわち、１）ノードに渡りキャッシュ・コヒーレンスを維持する詳細にほとんど注意を払わずに、非常に多数のノードにスケーリングする相互接続トポロジ、２）同様にノードに渡りキャッシュ・コヒーレンスを維持する方法にほとんど注意を払わずに、ノードを相互接続ネットワークに相互接続するインタフェース・コンポーネント、または３）特殊なコヒーレンス・ディレクトリ、メモリ・アレイにより記憶されるコヒーレンス情報、或いはシステム設計及びパッケージングに余分なコスト及び複雑性を追加する他の特殊なインタフェース及びスイッチ・コンポーネントの使用を通じた、ノード間キャッシュ・コヒーレンスの維持である。
【０００６】
従来技術では、共用メモリ・コンピュータ・システムはハードウェア・コヒーレンス制御により、全てのオペランド・アクセスをチェックし、共用メモリ内の任意の場所のデータの全ての変化を検出及び制御し、データの保全性を維持する。コヒーレンス・チェックは、共用メモリ内の任意の場所に記憶されるデータ項目が、所与の時刻にそのデータ項目を用いて、全てのプロセスに同一の値を提供することを保証する。これはシステム内のどのプロセスまたはプロセッサがデータ項目を変更または使用するか、及び共用メモリのどの部分がデータ項目を記憶するかに関係しない。
【０００７】
しかしながら、従来の共用メモリ・システム内の従来の共用メモリ制御装置の設計は、システムのスケーラビリティを制限する。なぜなら、従来の制御装置は一般に、たとえ制御装置が少ない数のプロセッサ及び小さなメモリ・サイズを有するシステム構成に導入される場合であっても、最大サイズのシステムに拡大されるように、最大数のプロセッサ及び最大サイズのメモリのために設計されているからである。その結果、こうした従来の制御装置の初期コストは、最大以下のシステム・サイズの場合にも低減せず、こうした従来のシステムを非常に狭い範囲のプロセッサ及びメモリ・スケーラビリティに制限する。
【０００８】
従来の共用メモリ制御装置は、しばしば、メモリ制御装置と共用メモリ間に提供される共通バスを有する。共通バスはシステム内の多数のプロセッサにより、時に全てのプロセッサにより共用される。このバス共用は、バスを競合する全ての同時メモリ・アドレス間のバス競合を生じ、勝利したアドレスだけが共用メモリへの次のアクセスを獲得する。この全アドレス競合バス制御装置の設計は、帯域幅制限を被り、複数のプロセッサによる共用メモリに対する同時アクセス要求のスピードを低減する。また、プロセッサが従来の制御装置の共用バスを使用するためにアクセス要求を待機している間に、待ち時間ペナルティを被る。従って、こうした従来の共通記憶制御装置のバス設計は、システム内の最大数のプロセッサによるバス上の最大トラフィックを処理するように、最初に構成されなければならず、同一のメモリ制御装置及びそのバス機構を使用する小規模システムのコストを増加させる。半導体プロセッサ・スピードの継続的な増加は、従来の共用メモリ・システム内のプロセッサ、それらの記憶制御装置、及びそれらの共通のバス機構間の帯域幅及び待ち時間不一致を増加させる。
【０００９】
同一ノード内のメモリ及び複数プロセッサ間に提供される共通バスの例が、Somaniらによる米国特許第５５２４２１２号で開示されており、そこではその共用メモリ・バス制御装置内に、共用メモリ・バスの集中型アービタを提供し、これがノード内の共通メモリ・バスを制御する。この特許はノード間共用メモリを開示しない。
【００１０】
半導体技術及びソフトウェア設計の最近の動向は、前述のバス競合問題をより深刻にする。オンチップＣＭＯＳ回路のスピードは、オフチップ・ドライバ及び関連バスのスピードよりも速く増加している。多くの従来設計は既に、オフチップ・バス・スピードの何倍もの内部プロセッサ・スピードを有し、格差は直ちに悪化する。これらの低速バスは主記憶アクセスの待ち時間を追加する。
【００１１】
新たなプログラミング技術は、以前に考えられたよりも大きなコードを作成し、それらのコードはしばしばメモリ参照パターンを実行する。これらは実行される１命令当たり、従来のソフトウェアにより発生するよりも、平均的により多くのキャッシュ・ミスを発生する。追加のキャッシュ・ミスは、主記憶アクセスの間のソフトウェア待ち行列化を、従って待ち時間の増加をもたらす。大規模システムに対する要求が高まる動向により、より多くのプロセッサによる共用主記憶装置へのより多くの同時アクセスが将来要求されよう。多くのソフトウェア作業負荷は、ハイレベルのマルチプロセッサ実行を許可され、これは従来システム設計の制限に重い負担をかける。特に、１システム当たりの追加のプロセッサ及び共用主メモリ・サイズの使用は、システムのメモリ階層アクセス・レートにさらに大きな負担をかける。
【００１２】
用語"ノード"は、従来技術では多くの多様な及び無関係の意味を有するために使用される。従来技術における用語"ノード"に関する一般的な使用は、通信ネットワークにおいて見い出され、そこではネットワークが通信リンクにより接続される複数の独立の"ノード"を含み、リンクを介してデータのパケットが"ノード"間で伝送される。各ノードは、それ自身の独立のオペレーティング・システムを有する独立のハードウェア・コンピュータ・システムであり、各"ノード"はしばしば、"中央電子コンプレックス"または"中央処理コンプレックス"と呼ばれる。用語"ノード"の異なる意味は、ソフトウェア従来技術において見い出され、そこでは"ノード"はしばしば、マルチノード・ソフトウェア構成内の１つ以上の他のノードを位置付ける１つ以上のアドレス・ポインタを含むソフトウェア構造体を表すために使用される。更に従来技術において、用語"ノード"の他の意味が存在する。従って、用語"ノード"が、それが使用されている詳細において示される意味を有することを認識することが重要である。これらの理由から、用語"ノード"の意味を従来技術の文献から本明細書に転換するには多大な注意が必要である。
【００１３】
【発明が解決しようとする課題】
本明細書では、用語"ノード"は単一コンピュータ・システムのセクションを表し、これは"ノード間"（すなわちセクション間）バスにより接続される１つ以上の"ノード"（すなわち１つ以上のセクション）上に含まれる。最初に単一のセクションから構成される場合、１つ以上の追加のセクションが後に追加され、セクション間バスにより初期のセクションに接続されて、コンピュータ・システムの能力を拡大する。追加のセクション（"ノード"）の追加は、単一コンピュータ・システム特性を変更せず、そこでは全ての"ノード"（すなわちセクション）が、単一のオペレーティング・システムにより管理される。すなわち、本明細書では、複数ノード・システム内の各"ノード"が、単一コンピュータ・システム内の"セクション"の１つである。この単一コンピュータ・システム内において、複数"セクション"の各々は、複数の"システム・セル"からなり、各セルはプロセッサ・チップ、及びチップにローカル・バスにより接続されるローカル・メモリ（例えばＤＲＡＭ）から成る。各プロセッサ・チップは少なくとも１つの中央プロセッサを含み、複数の中央プロセッサを含んでも良い。コンピュータ・システムの任意のセクション内の全てのまたは一部のシステム・セルは、Ｉ／Ｏインタフェースを含み得る。セルがＩ／Ｏインタフェースを含む場合、それはＩ／Ｏプロセッサをチップ上に提供するか、Ｉ／Ｏインタフェースを提供するために、チップ上の中央プロセッサに（中央処理機能に加え、）Ｉ／Ｏ機能を実行させることによりサポートされる。
【００１４】
【課題を解決するための手段】
本発明の目的は、コンピュータ・システムにおけるメモリ・バス競合を多大に低減することであり、これは複数のプロセッサ・チップの各々内において、ＤＲＡＭのサブセットを含むシステム共用メモリのサブセットを、サブセット・メモリ制御装置に接続する、固有のコンピュータ・システム設計を提供することにより達成される。この設計は幾つかの利点を有し、それらの中にはメモリ・バス競合の大きな低減が含まれる。このバス競合の低減は、多数のメモリ・バスを提供することにより獲得され、各バスは、共用メモリのアドレス範囲内の比較的小さな範囲の実アドレスだけを扱う。これはシステム共用メモリ内の小範囲のアドレスを、システム内の各プロセッサ・チップに接続されるＤＲＡＭのサブセットに割当てることにより達成される。多数のプロセッサ・チップがシステム内に提供され得て、各々がその接続されるＤＲＡＭサブセットを有し、自身のメモリ・バスは自身のそれぞれのＤＲＡＭサブセットだけをサービスする。これは共用メモリをかなりの数のＤＲＡＭサブセットに区分化し、各々はシステム共用メモリ内の異なる小アドレス範囲を有する。このように、各小範囲がそれ自身のメモリ・バス及びそれ自身のメモリ制御装置を有し、それにより異なるアドレス範囲をサービスする異なるプロセッサ・チップ・メモリ・バス上の同時メモリ・アクセスを可能にすることにより、システム内のメモリ・バス競合の多大な低減を可能にする。
【００１５】
例えば、システム内に２０個のプロセッサ・チップが存在する場合、システムは２０のバスに接続される２０のＤＲＡＭサブセットを有し、これらのバスは、２０個のプロセッサ・チップ上の２０個のメモリ制御装置に接続される。全共用メモリ範囲が０乃至１ギガバイトの実メモリの場合、各ＤＲＡＭサブセットは１ギガバイト範囲内の異なる２０メガバイト範囲のアドレス指定を割当てられる。これにより、２０個の異なるプロセスが２０個の異なるプロセッサ・チップ上で同時に実行され、これらは共用メモリの異なる範囲のローカル・サブセットを同時にアクセスする。
【００１６】
一方、従来設計システムは、全ての（例えば２０個の）プロセッサ間の共通バス及びシステム共用メモリを提供する、１つまたは２つのメモリ制御装置を有し得る。そこでは共通バスが１度に２０個のプロセッサによる１アクセスだけを可能にし、２０個のプロセッサによる２０の同時アクセス要求を一度に１ギガバイト・メモリへの１アクセスだけに制限する。それにひきかえ、本発明の前述の操作例では、一度にシステム共用メモリへの２０の同時アクセスを可能にする。この例は、本発明が従来の共通バス設計を使用するシステムの全メモリ・システム帯域幅に比較して、共用メモリ・アクセスにおいて、全システム帯域幅のほぼ２０倍の増加を提供することを示す。
【００１７】
更に、本発明はプロセッサ・チップか、またはそれらに接続されてシステム共用メモリを構成するＤＲＡＭサブセットの数及びサイズを加減算することにより、システムの全システム・メモリ帯域幅を容易にスケーリングすることができる。
【００１８】
本発明の別の目的は、単一システムの共用メモリのための固有の構成を提供することである。このメモリ構成は、ＤＲＡＭサブセット（及びそれらの別々に接続されるプロセッサ・チップ）を、共用メモリ・システムを構成する１つ以上のノードに区分化する。各ノードは、そのノードに直結されるＤＲＡＭ内のデータへのアクセスを制御し、データのコヒーレンスを維持する責任を負う。２つ以上のノードがシステム内に提供される場合、各ノードは任意の数のプロセッサ・チップを含み得、各プロセッサはそのサブセット内に任意の数のＤＲＡＭを有し得る。本発明の好適な実施例は、システムの各ノード内に同数のプロセッサ・チップを提供し、各サブセット内に同数のＤＲＡＭを提供するが、１ノードにつき等しい数のプロセッサ・チップ及びＤＲＡＭの選択は、本発明により要求されない。例えば、システムの初期構造化は、システム内の複数のノードの各々内に、等しい数のプロセッサ・チップ及びＤＲＡＭを提供するが、後に任意のノードのプロセッサ・チップまたはＤＲＡＭの数が変更されて、そのノードがより大きな（または小さな）サイズにスケーリングされ、結果的に異なるサイズのノードが生成され得る（例えば、システムの複数のノードの１つ以上のノードが、残りの他のノードと異なる数のプロセッサ・チップ及びＤＲＡＭを含む）。
【００１９】
ノードに区分化される共用メモリ・システムにおいて、本発明はシステムの各ノード内に"共通ディレクトリ"を提供する。各共通ディレクトリはそのノードを表し、同一ノード内の全てのプロセッサ・チップに接続される全てのＤＲＡＭを所有すると見なされる。共用メモリ・システムが２つ以上のノードから構成される場合、異なるノード内の共通ディレクトリ間に１つ以上の"ノード間バス"が接続される。これらのノード間バスは、共用メモリ・システムの共通ディレクトリ間で制御信号及びデータを伝達する。従って、システムの共用メモリは、システム内の全てのノード内のＤＲＡＭを含む。
【００２０】
現共用メモリ・システム内で見いだされるバス・スピードの不一致は、本発明により多大に低減される。これは本発明に従い、各プロセッサ・チップ内に統合される別々のメモリ制御装置バスにそれぞれ接続される、独立の共用メモリＤＲＡＭサブセットの使用によるからで、それによりチップ内のプロセッサは共用メモリ内で非競合並列アクセスを達成でき、従来システムにおいて通常見いだされるメモリ・バス競合無しに、全体的なメモリ・アクセス・レートの多大な増加を可能にする。従来システムでは、１プロセッサ当たりのメモリ・アクセス・レートは、同時プロセッサ・アクセス要求間の競合を回避するメモリ・アクセスの直列化により、システム内のプロセッサの数が増えると低減する。それにひきかえ、本発明はシステム内のプロセッサの数が増加しても、１プロセッサ当たりのメモリ・アクセス・レートを著しく低下しない。これはその固有の共用メモリ設計が、各プロセッサのための別々のバスを、共用メモリの別々のセクションに提供し、それにより異なるプロセッサが単一の共用メモリ内の非競合セクションを割当てられるからである。従って、本発明はプロセッサの数が増加すると、全体的なシステム・メモリ・アクセス・レートが１プロセッサ当たりのアクセス・レートの低下により制限される従来の共用メモリ・システムと異なり、システム共用メモリへの全体的なシステム・メモリ・アクセス・レートが、システム内のプロセッサの数に比例して実質的に増加することを可能にする。これらの理由から、本発明は従来システムに比較してシステム性能の多大な増加を提供する。
【００２１】
更に、本発明は従来の共用メモリ・システムに比較して、本発明を使用するシステムの費用性能比を多大に低減する。これは本発明が共用メモリ・システムのサイズを増加するために、同一チップ・タイプの複製を可能にする態様による。すなわち、同一のプロセッサ・チップ・タイプが、システム内の全てのＤＲＡＭサブセットと共に使用され、各プロセッサ・チップは同一のプロセッサ、同一のメモリ制御装置、及び同一の専用プロセッサ・キャッシュを有し、更に外部Ｉ／Ｏ装置を、それぞれのプロセッサ・チップに接続されるローカルＤＲＡＭサブセットに接続する１つ以上の同一の入出力（Ｉ／Ｏ）ポートを有する。
【００２２】
プロセッサ・チップ・メモリ制御装置設計は、システム共用メモリのために、全メモリ制御装置機能のサブセット化を可能にする。このメモリ制御装置のサブセット化はまた、システム・コストがシステムにより必要とされるシステム資源に従い、直接変化するようにするために重要である。本発明により提供される結果のシステム設計は、システム製造コストを、同一チップ・タイプ（すなわち同一の部品番号を有する）の複製の増加に実質的に比例して変化させる。これはコストが共通メモリ設計により制約される従来の共用メモリ・システムでは見られない。本発明は、システムが最小数のプロセッサ及びメモリ・サイズだけを必要とする低システム・コストから、システムが多数のプロセッサ及びメモリ・サイズを必要とする高システム・コストまで、システム・コストが多岐に渡ることを可能にする。
【００２３】
システム・コストは、本発明により使用される方法により、すなわちシステムにおける共用メモリ・アクセス・レートが、システム内のプロセッサの数にあまり依存しないようにする一方、システム構造全体を通じて複製チップの使用を可能にする方法により、多大に影響を受ける。これは従来の共用メモリ・システムに比較して、システムの費用性能比を多大に低減する。同時に、本発明は共用メモリ・コンピュータ・システムのスケーラビリティを多大に増加する。
【００２４】
本発明により共用メモリ・コンピュータ・システムとして提供される新規の構造は、新規のコンピュータ・システムが最小の部品タイプにより製造されることを可能にし、これはコンピュータ・システムのサイズを増加する決定が下される時、コンピュータ・システムのサイズを、性能的に多大に増強された超大規模サイズに拡大するように、容易に複製され得る。すなわち、本発明は比較的小さなサイズから、超大規模サイズ（一般に"メインフレーム"に関連付けられる）までの共用メモリ・コンピュータ・システムの製造メーカをサポートし、これらの異なるサイズのコンピュータ・システムは全て、安価に製造可能な少数の同一タイプの部品だけを複製することにより、潜在的に製造される。
【００２５】
本発明のスケーリング・フィーチャは、本発明の部品の複製による１つまたは複数のシステム・ノードから成る共用メモリ・システムの新規の構成により、追加のタイプのコンピュータ部品を有する必要無しに、システム拡張（または縮小）を可能にする。
【００２６】
本発明の別の目的は、ノード間共用メモリにおいてノード間コヒーレンス問題を解決することである。ノード間接続される（すなわちノード間バスにより接続される）共通ディレクトリ内に、コヒーレンス制御が提供され、それによりシステム内のノード間データ・コヒーレンス問題を解決する。各共通ディレクトリを有する共通キャッシュがデータ・ラインのコピーを記憶する。所有ディレクトリはデータ・ラインに対する基本コヒーレンス責任を有するが、（別のノードの）別の共通ディレクトリは、ノード間トラフィックを低減するために、そのデータ・ラインのコピーを含み得、それによりシステム効率を増加させる。
【００２７】
システム内のノードの数及びノードのサイズは、同一のコンピュータ部品番号を複製することにより、大きな範囲に渡って選択され得る。これは例えばプロセッサ・チップの数を増加したり、各プロセッサ・チップに接続されるＤＲＡＭの数またはサイズを増加したり、追加される各プロセッサ・チップに対して、別のノード・キャッシュ・セクションを追加したり、追加される各プロセッサ・チップとノード・キャッシュ・セクション間にバス機構を追加するなどによる。各ノードはメモリ階層構造を有し、これはチップ内のプロセッサにより使用されるプロセッサ・チップ内の専用キャッシュと、ノード・キャッシュと、ノード内の各プロセッサ・チップに接続されて、システム共用主メモリとして機能するＤＲＡＭとを含み、各ノード内に３つの階層レベルを提供する。また、多数のＩ／Ｏインタフェース接続が各プロセッサ・チップ内に提供され、Ｉ／Ｏインタフェースが各プロセッサ・チップ内に統合される。
【００２８】
各ノードは、ノードのサイズを増加するためにノード内で複製され得る部品から構成される。複製部品には、プロセッサ・チップ（専用キャッシュを有する中央プロセッサと、区分化された共用メモリ制御装置エンティティと、Ｉ／Ｏインタフェース・エンティティとを統合）、各プロセッサ・チップに接続されるＤＲＡＭ、ノード・キャッシュ・ディレクトリ・チップ、及びノード・キャッシュ・セクション・チップが含まれる。低待ち時間アクセスを有する高メモリ・アクセス帯域幅が、本発明の構造により獲得されて、同時メモリ・アクセス要求間の直列優先順位化を要求する共用メモリ・バスを使用する、従来の共用メモリ・システムで発生するメモリ・バス干渉を回避する。
【００２９】
共用メモリの全体サイズは、異なって変更され得る。ある方法は、任意のノード内の各ＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）のサイズ、または各中央プロセッサに接続されるＤＲＡＭの数を変更する。別の方法は、各ノード内の共用メモリの一部（任意のノード内の各中央プロセッサに接続される）のサイズの変更により、または変更無しにシステム内のノードの数を変更する。
【００３０】
従って、本発明に従い形成されるノード・システムのサイズは、ノード内及びノード間の両方でスケーリングされて、共用メモリ・システムのサイズを増減する。ノード内変化は、システムの任意のノード内における、中央プロセッサ及びそれらの専用キャッシュの数、ノード・キャッシュ内のセクションの数、及びシステムへの入出力インタフェース接続の数を変更する。ノード間変化は、システムを構成するノードの数を変更する。
【００３１】
本発明は、共用メモリ・システムの各ノード内に拡張可能なノード内バス機構を提供して、異なる数の中央プロセッサがノード・キャッシュ機能のセクションに接続されることを可能にする。そこではキャッシュ・セクションの数が、ノード内のプロセッサ・チップの数とは別に変更され得る。電子スイッチング機能（クロスポイント・スイッチ）が、ノード・キャッシュ機能の各セクションに設けられ、キャッシュ機能の各セクションをノード内の各プロセッサに突き合わせる。更に、電子スイッチング機能はノード内のノード・キャッシュをバイパスして、任意のノード内の任意のプロセッサによる任意のノード内の任意のメモリ・サブセットに記憶されるデータへのアクセスを高速化する。
【００３２】
また各ノード内において、ノード・ディレクトリ機能が、ノード内の全てのキャッシュ・セクションに接続されて、ノード・キャッシュ内に記憶されたまたは記憶されるデータ・ラインを突き止め、こうした全てのデータのデータ・コヒーレンスを維持する。
【００３３】
プロセッサの数はノード間で不同でよいが、少なくとも初期には、各ノード内に同数のプロセッサを有することが好ましい。かなり大きな総数のプロセッサがシステムの全てのノード内に含まれ得るが、実際にはより多くのプロセッサが追加されると、システム性能の相互問い合わせペナルティを被る。なぜなら、例えばデータ・ラインへの書込みの権限変更を要求する特定のプロセッサに、データ・ラインの制御を与えるために、共用データ・ラインが無効にされる必要がある場合、より多くのプロセッサ・チップがアクセスされなければならないからである。
【００３４】
本発明の共用メモリ・コンピュータ・システムは、任意のコンピュータ・アーキテクチャを使用するように適応化され、コンピュータ・ハードウェアが、適応化されたアーキテクチャの下で使用可能な任意のソフトウェアの実行を可能にする。
【００３５】
複数ノード・システムのノードを一緒に接続して、共用メモリ・ノード間システムにおけるバス機構コストとバス機構性能とのトレードオフを提供するために、ここでは異なるタイプのノード間バス機構が開示される。バスはまた同一のバスに対して、同一の部品番号を用いて複製され得る。
【００３６】
従って、各ノードのために複製されるバス及び半導体チップが、プロセッサ機能と、ノード・キャッシュ機能と、ノード・ディレクトリ機能と、電子スイッチング機能とを実行する。各ノード内のプロセッサ機能は、ノード内に１つ以上のプロセッサ・チップを複製することにより提供され、各プロセッサ・チップは１つ以上の中央プロセッサと、各プロセッサのための専用キャッシュ及びディレクトリと、メモリＤＲＡＭをその中央プロセッサに接続するメモリ制御装置と、Ｉ／Ｏ装置を中央プロセッサに接続するＩ／Ｏインタフェースとを含む。ＤＲＡＭはＥＤＯ、高速ページ、ＳＤＲＡＭなどの任意のタイプである。Ｉ／Ｏインタフェースは、全ての中央プロセッサで必要とされない場合、全てのプロセッサ・チップ内で提供または使用される必要はない。
【００３７】
システムの各ノード内の任意の中央プロセッサに接続されるＤＲＡＭは、システム内の任意の中央プロセッサ上で実行される命令により直接アクセスされる。仮想アドレス指定が、システム内の任意のプロセッサ上の実行プログラムにより使用される場合、そのプロセッサが各仮想アドレスを実アドレスに変換し、これがその実アドレスを含むＤＲＡＭをアクセスするために使用される。本発明では、マルチノード・システムの任意のノード内の任意の中央プロセッサにより実行される任意の命令内の各記憶オペランドの実アドレスが、そのオペランドを記憶する特定のプロセッサＤＲＡＭを識別する。これはシステム構成制御において、各ＤＲＡＭセットにシステム・ワイドな固有アドレス範囲を割当てる十分な柔軟性を実現することにより達成される。より一般的には、同一のローカルＤＲＡＭアドレスが、全てのＤＲＡＭサブセット内で繰り返される（一般にはアドレス"０"から開始する）。
【００３８】
好適な実施例のハードウェアにおいて、固有アドレスを定義するために、各ＤＲＡＭサブセット内の各ローカル・バイト・アドレスが、そのＤＲＡＭに接続されるプロセッサ・チップのノード識別子及びプロセッサ・チップ識別子に連結される。しかしながら、大部分のプログラムは連続範囲の固有の実アドレスを用いて、システム共用メモリ内の全てのバイト位置を定義する。システム・プログラムが共用メモリ内のオペランドをアクセスするためのプログラム実アドレスとしてＤＲＡＭアドレスと共に、ノードＩＤ及びプロセッサＩＤを使用することは、厄介である。従って、物理アドレス変換テーブルがシステム内の全てのプロセッサに提供され、プログラムにより生成される実アドレスを、ＤＲＡＭの配置場所を指定するプロセッサＩＤ及びノードＩＤに連結されるローカルＤＲＡＭアドレスに変換する。
【００３９】
物理アドレス変換テーブルは、各プロセッサ・チップに接続される各ＤＲＡＭサブセット内に確保されるハードウェア・レジスタ内で、またはマイクロコード領域内で実現され得る。これはシステム内の各プロセッサに対して複製され、各プロセッサはそれ自身の物理アドレス変換テーブルへの並列アクセスを有する。システム内の全てのプロセッサは、システム内の他のプロセッサからの干渉無しに、または関係無しに、それらの実行プログラム内の物理アドレスを決定する。
【００４０】
本発明の好適な実施例では、各ノード内のノード・キャッシュが、１つ以上のノード・キャッシュ・セクション・チップから成る第２レベル・キャッシュ機能である。ノードのノード・キャッシュ機能内のノード・キャッシュ・セクションの数は、プロセッサ・チップ間のデータ転送のサイズにより、及び各ノード・キャッシュ・セクション・チップに対して提供されるビット記憶容量により、決定される。１データ転送につき同一整数のビット数が、セクション・チップの各々に対して選択され、全てのノード・キャッシュ・セクション・チップが同一であることを可能にし、それによりそれらは同一の部品番号により製造され得る。ノード・キャッシュ・セクションの数は、ノード内のプロセッサの数には無関係である。
【００４１】
各ノード・キャッシュ機能に記憶されるデータ・ラインは、一般に、ローカル・ノード内のプロセッサにより最も頻繁にアクセスされるラインであり、これらのデータ・ラインは、ノード・ディレクトリ（ノードの共通ディレクトリ）により管理される。
【００４２】
ノードに含まれるＤＲＡＭサブセット（すなわちノードにとってローカル）は、ここではそのノード内の共通ディレクトリにより所有されると見なされる。ＤＲＡＭを含むノード（すなわちＤＲＡＭにとってローカルのノード）は、ここではホーム・ノードと見なされ、ホーム・ディレクトリを含む。ホーム・ディレクトリはそのノード内のＤＲＡＭ内の全てのメモリ位置を所有し、それらの位置のコヒーレンスを維持する責任を負う。従って、システムが複数のノード内にＤＲＡＭを有する場合、各ノードは共用メモリの一部を含み、各ノードの共通ディレクトリは、共用メモリ内のＤＲＡＭの一部だけを所有する。所与のアドレスに対するホーム・ノード以外のノードは、リモート・ノードと呼ばれる。
【００４３】
しかしながら、任意のノード内の任意のプロセッサが、そのノードにとってローカルのＤＲＡＭか、リモート・ノードかに関わらずシステム共用メモリ内の任意の場所に記憶されるデータをアクセスできる。すなわち、システム内の任意のＤＲＡＭサブセットに記憶されるデータ・ラインがコピーされ、コピーが要求元プロセッサのノード内のリモート・ノード・キャッシュ機能に転送され、続いて要求元プロセッサの専用キャッシュに転送される。データ・ラインの複数のコピーが、一時的に、複数ノード内の複数のノード・キャッシュ機能に記憶され得る。これにより各要求元プロセッサに最も近いキャッシュが、現在複数のプロセッサにより並列に使用されているデータ・ラインのコピーを含むことができ、最速のシステム性能が提供される。しかしながら、１つのノード共通ディレクトリだけがホーム・ノード上に存在でき、ホーム・ノードは、プロセッサがストア権限を要求しているシステム内のデータ・ラインの全ての過剰なコピーの無効化を制御するなど、データ・ラインのシステム・コヒーレンスを維持する責任を負う。
【００４４】
アクセス権限要求はまた、各メモリ・アクセス要求と一緒に含まれる。要求された権限は、共有権限（一般に命令フェッチのための読出し専用要求）か、排他権限（一般に記憶またはロック要求のために、キャッシュ・ラインへの記憶を可能にする）か、または条件付き排他権限（オペランド・フェッチ要求のための条件付き排他であり、しばしば後にそのラインのストア要求を伴う）である。
【００４５】
各ノード・ディレクトリによる制御は、その所有ＤＲＡＭ内でアクセスされる全てのデータのコヒーレンスを維持し、ノード内のプロセッサにより現在使用されている非所有データ・ラインに対してコヒーレンス制御を支援する２次的な役割を演じる。ノード・ディレクトリ制御は、各プロセッサ・アドレス・コマンドと一緒に、"権限要求"を受信する。共用、排他及び条件付き排他権限に対するデータ・コヒーレンスは、一般に従来技術において教示されるが、本発明は共用メモリ・システムのローカル及びリモート・ノードにおけるコヒーレンス・チェックを扱う新規の制御を提供する。
【００４６】
要求がプロセッサの専用ディレクトリ内でミスすると、要求が（そのデータのホーム・ノードの参照用要求ノードＩＤ、プロセッサＩＤ、及び要求ＤＲＡＭアドレスと共に）要求元プロセッサのローカル・ノード・ディレクトリに送信される。要求が要求元プロセッサのそのノード・ディレクトリ内でヒットすると、要求されたアクセス権限がチェックされ、承認されると、関連データ・ラインのコピーまたはデータ・ラインの要求部分が、接続されるノード・キャッシュから要求元プロセッサの専用キャッシュに転送される。
【００４７】
データ・ラインがローカル・ノード・ディレクトリ内に存在しない場合、または要求アクセス権限またはノード・ディレクトリ内のデータ・ラインの現状態との競合が発生する場合、そのアドレスのホームノードが、メモリまたは別のキャッシュ位置からデータのフェッチを開始しなければならず、そのデータに対してキャッシュ・コヒーレンスがシステム・ワイドに維持される。
【００４８】
電子クロスポイント・タイプ・スイッチが、同一チップ上に含まれるノード・キャッシュ・セクションに関連して、各ノード・キャッシュ・セクション・チップ内に含まれる。電子スイッチは全てのデータを制御し、ローカル・ノード・キャッシュ・セクションと任意のローカル・プロセッサ・チップとの間の、またはローカル・ノード・キャッシュ・セクションと、要求されたまたは要求元のリモート・プロセッサ・チップを含むノード内のリモート・ノード・キャッシュ・セクションとの間の転送を制御する。従って、リモート・プロセッサのデータ・ラインが要求される場合、そのリモート・ノード・キャッシュ・セクションがそのライン・セクションをその電子スイッチを通じて、要求リモート・プロセッサ・チップにまたはそれから転送する。
【００４９】
好適なノード構造は、個別化すなわちカストマイズ化された複製のチップ及びバスを含み、それらの複製は、同一の固有の部品番号を同じ設計の各複製チップまたはバスに割当てることにより管理される。好適な実施例では、同一の部品番号が各複製プロセッサ・チップ、各ノード・キャッシュ・セクション・チップ（ノード・キャッシュ・セクション及び電子スイッチを含む）、各ノード制御チップ（ノード・キャッシュ・ディレクトリ及びノード制御）、チップを接続するために使用される各バス・タイプ、及びバスをチップ上のピンに接続するためにチップに接続される各バス・コネクタ・タイプに割当てられる。好適な実施例では、１つのノード制御チップが、同一ノードにより所有される全てのＤＲＡＭのコヒーレンスを制御するために使用される。任意のノードのノード制御チップは、同一ノード内の全てのプロセッサ・チップ、及び同一ノード内の全てのノード・キャッシュ・セクション・チップ、更にノード間バスを通じて、システム内の他の各ノードのノード制御チップと通信する。
【００５０】
ストアイン・プロトコルまたはストアスルー・プロトコルのいずれかが、各プロセッサ・チップ上の各専用キャッシュ内に組み込まれ得る。ストアイン・キャッシュ・プロトコルがここでは好適である。なぜなら、これはノード・ディレクトリ及びノード・キャッシュ機能における干渉を多大に低減するからである。また、ノード・キャッシュが全てストアイン・キャッシュであり、ノード間バス・トラフィックを多大に低減することも好ましい。
【００５１】
ノード・バスはサブライン単位ではビット並列であり、各データ・ライン内のサブライン単位ではビット直列であるが、各データ・ライン内の全ビットに対してビット並列（現在の最速のデータ転送タイプであることが判明している）などの、他の周知のデータ転送方法も本発明において使用され得る。
【００５２】
本発明はシステムの全体的な共用メモリ制御機能を、複数のプロセッサ・チップ・メモリ制御装置（ＭＣ）に物理的に分割し（１プロセッサ・チップにつき１ＭＣが対応する）、ＭＣはプロセッサ・チップに割当てられるＤＲＡＭのサブセットに接続する。
【００５３】
プロセッサ・チップに接続されるＤＲＡＭに割当てられる実記憶アドレスの範囲は、連続バイト・アドレスである必要はないが、その方が一般に好適である。同一セットのＤＲＡＭアドレスが各ノード内に提供され得るが、これは本発明の要件ではなく、ノードが異なる範囲のＤＲＡＭアドレスを有することも可能である。異なるノード内のＤＲＡＭが同一のまたは重複するアドレスを有する場合、それらはシステムの構成時に、及びＤＲＡＭが任意のノード内で変更される度に、前述の物理アドレス変換テーブルを生成することにより、システム内の固有アドレスとされる。このように、システム内の共用メモリ制御装置の数は、将来プロセッサ・チップ及び接続されるＤＲＡＭを追加または除去するとき、変更され得る。また、任意のプロセッサ・チップに接続されるＤＲＡＭの数またはサイズは、将来任意のノードまたは全てのノード内で変更され得る。任意のＤＲＡＭがシステム内で変更されるとき、変更後に"物理アドレス変換テーブル"が全ての既存のＤＲＡＭを含むように再生されて、全てのノードのシステム共用メモリ内の連続アドレスを再割当てする。
【００５４】
システムの共用メモリ・サイズは、システムの全てのノード内の各プロセッサ・チップのための共用システム・メモリに構成されるＤＲＡＭ空間の合計であり、これは一般に、接続プロセッサのためのマイクロコードを記憶するためなどの、他の機能のために確保されたＤＲＡＭ空間を差し引いた、全ノード内の全てのＤＲＡＭ空間の合計である。
【００５５】
従来技術では、各ページ・フレーム内の空間をデータ・ラインに分割し、ページ・フレームを含むＤＲＡＭ内において、各データ・ラインがその全ビットを並列にアクセスされることが一般的であった。各データ・ラインは次にメモリ・バス上に、メモリ・アクセスの単位を提供する。各データ・ライン内のビットは、システム共用メモリ内のバイト・アドレスにより位置付けられる単位であるバイトに区分化される。本システムの共用メモリ内のデータ・ライン内のバイト位置のハードウェア・アドレス（任意のプロセッサにより要求される）は、次のアドレス要素の連結から構成される。すなわち、それらは要求ノードＩＤ及び要求プロセッサＩＤ（ターゲット・アドレスを含むＤＲＡＭサブセットを突き止める）、要求プロセッサのＤＲＡＭ内のライン位置を識別するライン番号、及びライン内のバイト番号（要求アドレスのターゲット・バイトを突き止める）である（図６参照）。これらのアドレス要素内で使用される数が２の累乗であることは、好適ではあるが、理論的には不可欠ではない。
【００５６】
本発明の重要な新規のフィーチャは、本発明がその共用メモリをそのプロセッサ・チップ間で区分化し、容易に拡張可能な可変サイズの共用メモリをサポートすることである。この新規の構成はまた、区分化された共用メモリ制御装置を提供し、それにより、現在大規模マルチプロセッサ・システム内で使用される従来の高価なトータル・メモリ制御装置チップの除去を可能にする。本発明による区分化共用メモリ制御装置の使用は、メモリ制御装置のコストを制御されるメモリのサイズに比例させることにより、大規模コンピュータ・システムのコスト・パフォーマンスを多大に改善する。すなわち、任意のプロセッサによるシステム共用メモリの一部分の容易な拡張が提供される。本メモリ制御装置サイズの拡張は、システム内のプロセッサ・チップの数だけの関数とされ、システム共用メモリのサイズは、プロセッサ・チップの数を拡大（または縮小）することにより、或いは任意のノードのサイズを変更することにより、またはより多くのノードをシステムに追加することにより、変更され得る。
【００５７】
また、システム主メモリ容量及び接続性が、任意のメモリ制御装置チップの変更の要求無しに、より多くのＤＲＡＭを任意のプロセッサ・チップに接続することにより変更され得る。また、接続されるＤＲＡＭを含むより多くのプロセッサ・チップを設けることにより、システム主メモリのサイズが増加する。
【００５８】
従って、システム主メモリ・サイズ及びプロセッサ容量及び接続性が、非常にハイレベルの容量及びシステム性能に増加され得る。メモリ容量は任意の所与のシステム構成のために、個別に容易に適合化され、過剰なハードウェア・システム資源の必要性を低減する。これらの全ての要因がシステム・スケーリングを改善する。
【００５９】
従って、本発明は、プロセッサの数及びそれらがサポートするメモリのサイズを増加するために、従来の共用メモリ・システムの制御装置チップに対して要求される複雑で高価な変更を回避する。
【００６０】
前述のように、本発明のフィーチャは、従来のメモリ制御装置チップセットの除去である。こうしたチップセットは一般に、別個のコンポーネントのセットであり、時に統合ノード・ディレクトリ及びノード・キャッシュを有する。実際問題として、こうしたディレクトリ／キャッシュ／制御装置の結合構成を製造することは、困難且つ高価である。なぜなら、結合チップは過剰な数のＩ／Ｏ接続を要求し、そのためにこのチップによるスケーリングを、接続可能なプロセッサの最大数に制限するからである。本発明はハイレベルの多重プロセシングにおいて、より優れたコスト・パフォーマンスを可能にする。これは従来の結合チップ上のＩ／Ｏピン数が、必要な全てのＤＲＡＭカードをコスト効率良く接続できない事実による。
【００６１】
従って、本発明により、ハードウェア・バス・スピードの増加を要求すること無しに、有効メモリ・アクセス帯域幅が従来システムに勝って、多大に増加される。これは本発明がそのメモリ制御装置機能を、独立のメモリ制御装置セクションに分割し、別々のプロセッサ・チップ上に配置される各制御装置セクションが、別々の共用メモリＤＲＡＭセクションに接続されることによる。本発明により提供される区分化されたメモリ／制御装置／プロセッサ構造は、従来のメモリ制御装置により使用される共用メモリ・バス上の競合を排除することにより、メモリ・バス競合を回避する。こうしたメモリ・バス競合は、同時メモリ・アクセスの間の干渉をもたらし、複数の競合プロセッサの間のメモリ・アクセスを直列化する。本発明は異なるメモリ制御装置を用いて、同時要求を異なるメモリ・バス上で実行することにより競合を生じること無く、共用メモリの並列及び独立アクセスを可能にし、同時メモリ要求の従来の直列化を回避する。従って、本発明はメモリをアクセスするための複数のプロセッサ間の競合を多大に低減する。
【００６２】
Ｉ／Ｏ制御装置が各プロセッサ・チップ上に提供されて、各プロセッサ及びその接続ＤＲＡＭのためのＩ／Ｏインタフェースを提供する。各プロセッサ・チップ上のＩ／Ｏ制御装置は、外部Ｉ／Ｏバスに接続され、既存の多くのマルチプロセッサ・システム内で見いだされる従来のＩ／Ｏ制御装置チップが除去され、システムのサイズが増加されるとき、システムのＩ／Ｏ接続性を増加することにより、システム・スケーリングを改善する。このＩ／Ｏインタフェースは潜在的な追加の効率的利点を有し、Ｉ／Ｏデータがプロセッサ・チップに接続されるＤＲＡＭ上の割当てられた位置に、直接転送されることを可能にする（オペレーティング・システムの制御に従い、好適なページ・フレームをＩ／Ｏデータ転送に割当てる）。それにより、システム内の他のデータ・パスとの競合の無いＩ／Ｏデータ・パスを提供できる。ノード内で使用され得る別のデータ・パスは、プロセッサ・チップ上の各プロセッサを通じて、Ｉ／Ｏデータをノード内のノード・キャッシュに転送する。Ｉ／Ｏデータのこのタイプの転送はプロセッサにより制御され、プロセッサはコマンド（ａｄｄｒ／ｃｍｄ）を、各プロセッサ・チップをそのノード・ディレクトリ・チップに接続するコマンド・バス上に送信する。コマンドは要求メモリ・アドレス、及びそのノード・キャッシュ機能のアクセスのための権限を含み、これらがノード・ディレクトリにより処理される。ノード内バスもまた、Ｉ／Ｏデータを転送するために必要に応じて使用され得る。
【００６３】
【発明の実施の形態】
図１は好適な実施例の基本構成ブロックを示し、メモリ５及び半導体チップ７を含む単一プロセッサ構成である。チップ７はＣＰ（中央プロセッサ）１、Ｌ１キャッシュ２、Ｌ１ディレクトリ３、メモリ制御装置４、及びＩ／Ｏ装置へのＩ／Ｏインタフェース１２を含む。チップ７内において、Ｌ１キャッシュ２はＣＰ１の専用キャッシュであり、Ｌ１ディレクトリ３はＬ１キャッシュ２用のディレクトリである。メモリ制御装置４は、メモリ５とＣＰ１との間のインタフェースである。Ｉ／Ｏインタフェース１２は、ＣＰ１を含むコンピュータ・システムの外部にあるＩ／Ｏ装置に接続可能である。バス・インタフェース・ユニット１３は、プロセッサ・チップ７と共通スイッチ／キャッシュ（図２の４０）との間のバス機構をサポートする。これはより大規模な構成のための基本構成ブロックとして作用する。
【００６４】
メモリ制御装置４は、メモリ５の動作のために要求される制御論理を含む。ここでメモリ５はＣＰ１の主記憶装置であり、ＤＲＡＭ素子により構成される。メモリ制御装置４における従来の制御は、業界標準ＤＲＡＭのセットを駆動するために必要とされる信号を提供する組み合わせ論理及びラッチを含む。生成される信号には、ロウ・アドレス・ストローブ（ＲＡＳ）、カラム・アドレス・ストローブ（ＣＡＳ）、アドレス、チップ・セレクト（ＣＳ）、出力イネーブル（ＯＥ）、データ出力などが含まれる。これらの制御信号の動作シーケンスは、従来設計に帰属し、業界では周知である。制御論理はまた、ＤＲＡＭ製品仕様に従い要求されるＤＲＡＭリフレッシュ信号を生成する。制御論理は更に、全ての未解決の主記憶装置要求に対するステータスを維持し、またデータ・パリティまたはＥＣＣエラーの検出及び可能な訂正のための責任を担う。メモリ制御装置はまた、メモリ・フェッチが開始された後に、それらからの返却データを取消しまたは廃棄する能力をサポートする。メモリ５内のＳＩＭＭ／ＤＲＡＭは、複数のＤＲＡＭチップの複数のバンクから構成され、要求される合計サイズのＤＲＡＭアレイを提供する。
【００６５】
メモリ制御装置４、双方向データ・バス８、及びアドレス／コマンド・バス９の組み合わせは、"メモリ・インタフェース"と称される。
【００６６】
各Ｉ／Ｏインタフェース１２は、ＣＰがＩ／Ｏ装置の集まりのオペレーションとインタフェースするために要求される従来の制御論理を含む。制御論理は、業界標準Ｉ／Ｏバス（ＰＣＭＣＩＡなど）またはプロプラエタリＩ／Ｏインタフェースを駆動するために必要とされる信号を、Ｉ／Ｏ制御装置に提供する組み合わせ論理及びラッチを含む。論理機能はバス調停、コマンド・フォーマッティング、割込み処理論理回路などを含む。
【００６７】
チップ上の超高レベルの回路密度により、複数のプロセッサ１及び追加のキャッシュ・レベルが、同一チップ７上に提供され得る。こうしたケースでは、同一チップ７上の複数のＣＰ１は、任意的に、１つ以上のキャッシュ・レベルを共用したり、メモリ及びＩ／Ｏへのインタフェースを共用し得る。
【００６８】
メモリ５は、ＳＩＭＭ（シングル・インライン・メモリ・モジュール）５またはＤＩＭＭ（デュアル・インライン・メモリ・モジュール）上に実装されるＤＲＡＭチップとして、従来通り実現される。高速性能のために、任意的な標準のリドライブ・チップ６が、プロセッサ・チップ７とＳＩＭＭ５（またはＤＩＭＭ）との間に追加され得る。
【００６９】
図２は、制御チップ２７及びＭ個のスイッチ／キャッシュ・チップ２８を含む共通スイッチ／キャッシュを示す。制御チップ２７は、ノード・キャッシュ及びスイッチの制御２３、及びノード・ディレクトリ２４を含む。制御２３はノード・キャッシュ及び電子スイッチの動作の責任を担い、これらの資源に対する様々な要求を順序付けする。制御２３はまた、システム内の全てのＣＰによる全てのメモリ・アクセスに対して、データ・コヒーレンス及びデータ保全性を維持する責任を負う。ＣＰはそのノードの任意のプロセッサ・チップ７に接続される共用メモリ・セクション内のデータをアクセスし得る。制御チップ２７はアドレス／コマンド・バス２５を介して、プロセッサ・チップ７と通信し、ノード間アドレス／コマンド・バス３０を介して、他のノード上の制御チップと通信する。
【００７０】
各スイッチ／キャッシュ・チップ２８は、電子スイッチ部分２２及びノード・キャッシュ部分２１を含む。電子スイッチ２２は双方向データ・バス２０を介して、プロセッサ・チップ７との間でデータを転送する。好適な実施例では、４つのスイッチ／キャッシュ・チップ２８が存在する。データはビット・スライス方式により（１６バイト・データ・バス２０から１チップ２８につき４バイト）、任意のプロセッサ・チップ７と４つのスイッチ／キャッシュ・チップ２８との間で転送される。従って、４つの同一のスイッチ／キャッシュ・チップ２８が各プロセッサ・チップ７との間で１６バイトを並列に転送する。このようにして、各キャッシュ部分２１がノード構成内の全てのプロセッサ・チップ７により共用される。
【００７１】
電子スイッチ２２はまた、ノード間データ・バス３２を介して、他のノードとの間でデータを転送する。ノード間アドレス／コマンド・バス及びデータ・バスは、以下の図面を簡素化するために、単一のエンティティ３１に結合されて示される。
【００７２】
図３は、図１に示されるのと同一のタイプの複数のプロセッサ・チップ７を含む、単一ノード・コンピュータ・エンティティの好適な実施例を示す。ここでＮ個のプロセッサ・チップ及びメモリ構成ブロック１５が、双方向バス２０により、Ｍ個のスイッチ／キャッシュ・チップ２８及び制御チップ２７を含む共通スイッチ／キャッシュ・ブロック４０に相互接続される。好適な実施例では、Ｎ＝４及びＭ＝４であり、これらの値を以下の議論の中で使用する。
【００７３】
更に、このノードは３つの双方向ノード間バス・ポート３１を介して、他のノードに接続する。バス３１の他端は、別のノード内の対応するクロスバー・スイッチ２２（後述）に接続する。バスのスピード整合のために、または必要に応じて、ストア・データを一時的にバッファリングするために、追加のバッファが各バス上に提供され得るが、これらは図示されていない。
【００７４】
ノード制御チップ２７はまた、ノード・キャッシュ（４つのノード・キャッシュ部分２８により提供される）に接続するノード・ディレクトリ２４を含む。ノード制御チップ２７は更に、ノード・チップの各々に接続する論理回路２３を含み、これはノード・キャッシュ部分２８と選択ローカル・プロセッサ・チップまたは選択リモート・ノードとの間の、１６バイト・データ単位の転送を制御する。
【００７５】
ノード・ディレクトリ２４は、少なくとも４つの独立にアクセス可能なインタリーブにより動作する高速ＳＲＡＭ技術を含む。ノード・ディレクトリ２４のこうした実現は、キャッシュ・フェッチ及びストア要求はもとより、コヒーレンス・プロトコルを処理するために必要とされる高帯域幅を提供する。セット・アソシアティブ合同クラス・エントリが、各ノード・ディレクトリ２４内に提供され得て、各ディレクトリ内のヒット及びミスを判断するために使用される。
【００７６】
様々なキャッシュ・コヒーレンス・プロトコルが、この単一または複数ノード・コンピュータ構造内で使用され得る。好適な実施例では、ノード・ディレクトリ２４は"包含的（inclusive）"であり、これはＬ１ディレクトリ３内の全てのエントリ（同一のプロセッサ・チップ７上のＣＰにとって直接使用可能）が、チップ７上のそれぞれのＬ１ディレクトリ３に接続されるノード・ディレクトリ２４内にも含まれることを意味する。キャッシュ・ライン間のコヒーレンス一貫性が、標準ＭＥＳＩプロトコルまたはその変形を用いて維持される（詳細については、Gannonらによる米国特許第５２６５２３２号"Cross-Invalidate Directory Methods and Means"を参照）。各ノード・ディレクトリ２４は、図７に示されるように、その関連ノード・キャッシュに記憶されるデータ・ラインのステータスに関する情報を含む。このデータはノード・コンピュータ・システム全体に渡り、データ一貫性を実現するために使用される。
【００７７】
ノード・ディレクトリ２４の探索は、単一ノード・システム内のデータ・コヒーレンスを維持するために、４プロセッサのノード構成内のそのラインのステータスに関する必要なデータを提供する。ラインがノード・ディレクトリ２４内で排他とマークされる場合、ノード・ディレクトリの排他ＣＰ  ＩＤビットが、ラインを排他に保持するＣＰのＩＤを示す（各ディレクトリ・エントリ内のビットのリストについては、図７を参照）。ラインが共用とマークされる場合、好適な実施例では、そのノード上の任意のプロセッサ７が、それらのＬ１キャッシュ２内に、ラインのコピーを共用状態で含むと仮定される。各ラインに対するノード・ディレクトリ内の追加のビット、及び追加の制御複雑性により、実際にラインのコピーを共用状態で保持するＬ１キャッシュ２を示すことも可能である。
【００７８】
ノード・ディレクトリ情報は、Gannonらにより米国特許第５２６５２３２号で述べられるタイプの、必要とされる相互問い合わせ要求を開始するために使用される。制御チップ２７上の制御論理２３は、複数ソース（後述のように他のノードを含む）から要求を受信し、バッファリングする能力、または優先機構を用いて、ノード・アクセスに対する要求を選択する能力、及び新たな要求オペレーションが現在進行中の前の要求オペレーションと競合する場合（必要とされるアドレスまたは資源の競合による）、その新たな要求オペレーションが開始されないように保証する能力を含む。
【００７９】
制御論理２３はまた、ノード・キャッシュ２１を制御する従来手段を含み、これはノード・ディレクトリ２４情報（ヒット、ミス、排他、変更、無効など）を用いて、各ノード・キャッシュ・エントリに記憶されるキャッシュ・ラインのステータスを決定する。制御論理２３は更に、様々なノード間ポート間でデータを転送するために、クロスバー・スイッチ２２の動作を制御する。
【００８０】
ノード内バス機構は、一端が各プロセッサ・チップ７に、他端がスイッチ／キャッシュ部分２８の１つに接続されるデータ・バス２０を含む。ノード内バス機構は更に、一端が各プロセッサ・チップ７に他端がノード制御チップ２７に接続されるアドレス／コマンド・バス２５を含む。アドレス／コマンド・バス２５は、フェッチ、ストア、及び相互問い合わせオペレーションのためのアドレス及び制御情報、オペレーション・タイプを区別するためのタグ、及び相互問い合わせまたは他のディレクトリ探索からの応答を伝搬する。好適な実施例のノード内Ｌ１／ノード・バス２５は、各Ｌ１キャッシュ２に固有である。代わりに、ノード内バスが（各Ｌ１キャッシュ固有バス１４の代わりに）マルチドロップ共用バスの場合、全てのＬ１ディレクトリ３が、業界において周知の従来の"スヌーピ"・プロトコルを用いて、全てのバス活動をスヌープする必要がある。この場合、オペレーション効率は低下し得る。
【００８１】
各プロセッサ・チップ７内への追加レベルのプロセッサ及びキャッシュの統合が、将来のより高度なＣＭＯＳ製造技術により達成されよう。更に将来、クロスバー・スイッチ２２、ノード・キャッシュ２１、次にノード制御２３またはノード・ディレクトリ２４の一部の機能が、各プロセッサ・チップ７内に結合されよう。
【００８２】
従って、ノード内のＣＰメモリ全体は、好適な実施例において、ノード・メモリの区分にあたる全てのメモリ部分５から構成され、各メモリ５は固有の物理アドレス範囲を割当てられる。その結果、ノード内のそれぞれのメモリ５に割当てられるアドレス範囲の合計のノード・メモリが提供される。更に、本発明に従い構成されるマルチノード・コンピュータ・システムでは、各ノードが固有のアドレス範囲を有するか、各ノードが同一のまたは重複するアドレス範囲を使用するとき、各ノードが固有の識別子を割当てられる（これが好適な実施例である）。システム内の全てのノード内のアドレス範囲の合計は、コンピュータ・システムのアドレスの全セットを構成する。
【００８３】
各メモリ・アクセスは、次の３つのタイプの１つに分類される。それらは、一般に命令フェッチに当てはまる共用要求と、一般にデータ・ストアまたはロッキング・オペレーションに当てはまる排他要求と、大抵のデータ・フェッチにおける条件付き排他要求（すなわちcond-excl）である。要求フェッチがそのプロセッサのＬ１ディレクトリ３内でミスし、ラインをシステム内の別の所からフェッチするとき、共用要求は常にラインを共用状態で返却し、排他要求は常にラインを排他状態で返却し、条件付き排他要求は、ラインがシステム内の任意の他のプロセッサによりキャッシュされていない場合、ラインを排他状態で返却し、それ以外では共用状態として返却する。
【００８４】
要求フェッチがそのプロセッサのＬ１ディレクトリ３内でミスすると、フェッチがプロセッサ・チップ７により、プロセッサのアドレス／コマンド・バス２５を用いて、ローカル・ノードのノード制御２３に発行される。ノード制御２３が、その特定のラインのアドレスを求めて、ノード・ディレクトリ２４を探索する。ラインがノード・ディレクトリ２４内に存在し、有効な場合、次の事象シーケンスが発生する。すなわち、ノード・ディレクトリ２４が排他とマークされるデータを見いだし、ディレクトリ・エントリ内の排他ＣＰ  ＩＤビットが要求元ＣＰに一致しない場合、ノード制御２３がアドレス／コマンド・バス２５を用いて、排他ＣＰ  ＩＤビット内で指定されるＬ１キャッシュに、変更データのコピーをデータ・バス２０を介してノードに転送するように伝える。ノード制御２３はまた、そのノード上のＬ１キャッシュに、Ｌ１ディレクトリ３内のそのラインの状態を無効に変更するように（データが排他として返却される場合）、または共用に変更するように（データが共用として返却される場合）伝える。ノード・ディレクトリ内のラインの状態が共用であり、データが排他として返却される場合、そのノード上の全てのＬ１ディレクトリ３は、そのラインを無効にするように伝えられなければならない。なぜなら、ノード・ディレクトリ２４は、そのラインの共用コピーをあるディレクトリ空間に保管するための、全ての位置のリストを保持しないからである。そのデータが次にノード・キャッシュにより要求元プロセッサ・チップ７に供給され、データ転送が関連クロスバー・スイッチ２２を介し、その接続データ・バス２０を用いて実行される。全ての場合において、共用／排他状態がノード・ディレクトリ２４内で適切にマークされ、ラインを要求するＣＰを識別するノード・ディレクトリ２４内の排他ＣＰ  ＩＤビットが、適切なＣＰ  ＩＤ値にセットされる。
【００８５】
そのプロセッサのＬ１ディレクトリ３内でミスする要求フェッチが、要求元プロセッサ・チップ７に局所的に接続されるＤＲＡＭセクション５からのデータに対するものであるとき、メモリ制御装置４は要求をノードに送信するのと並列に、局所的に接続されるメモリ位置に対して、即時フェッチ・オペレーションを開始する。こうしたフェッチは、後にラインがそのノードのノード・ディレクトリ２４内に存在することが見いだされる場合、またはシステム内の任意の他のキャッシュ内で変更された場合、取り消される。これは本発明のフィーチャを使用するように適合されるアプリケーションのプログラミングにとって、局所的に接続されるメモリへの低待ち時間且つ高帯域幅アクセスを可能にする。
【００８６】
前述のメモリ・インタリーブ技法の代替アプローチは、キャッシュ・ラインよりも小さなインタリーブ・サイズを使用し、そのためキャッシュ・ラインが複数のメモリ・インタフェースに渡って広がる。複数のメモリ・インタフェース及びデータ・バス２０を並列に使用することにより、ラインがフェッチされ、ノード・キャッシュ２１に転送される。これは個々のフェッチに対して、より高い帯域幅性能を提供する。
【００８７】
データがノード・ディレクトリ２４内において、別のプロセッサにより排他に保持されているが、変更されていないことが見い出される場合（排他ＣＰ  ＩＤビットが要求元ＣＰに一致しない）、最初にデータをＬ１キャッシュ２からノード・キャッシュ２１にコピーし戻す（コピー・バック）ことなく、ノード・キャッシュ２１から直接データの有効なコピーをフェッチすることが可能である。しかしながら、好適な実施例では、オペレーション・シーケンスにおいて後に潜在的に発生し得るストア・ミスに関わる問題を回避するために、Ｌ１キャッシュ２からノード・キャッシュ２１へのこうしたフェッチが、それにも関わらず実行される。
【００８８】
要求ラインがそのノードのノード・ディレクトリ２４内に存在し、有効であると見いだされない場合、及び要求データが要求元プロセッサ・チップ７に局所的に接続されるＤＲＡＭ５内に存在しない場合、及び他のノードがシステム内に存在しない場合、フェッチ・コマンドが適切なアドレス／コマンド・バス２５を介して、そのノード上の適切なメモリ制御装置４に送信され、メモリ・アクセスが開始する。データがメモリＤＲＡＭ５から返却されるとき、それはデータ・バス２０を介して、スイッチ／キャッシュ・チップ２８に転送される。そこで、制御チップ２７の指示に従い、データがノード・キャッシュ２１にロードされ、ノード・ディレクトリ２４が更新され、データが電子スイッチ２２及び適切なデータ・バス２０を介して、要求元プロセッサに転送される。システム内に他のノードが存在する場合、それらは問い合わされなければならない。そのオペレーションの詳細論議については後述する。
【００８９】
図４は、４つのノードを大規模なキャッシュ・コヒーレンス・マルチプロセッサ・コンピュータ構成に一緒に相互接続する好適な方法を示す。図４のマルチノード構成は、追加のチップ・タイプを使用することなく、図３の単一ノード・コンピュータ構造を構築するために使用されるのと同一のチップ・タイプにより構築され、メモリ部分５及びＩ／Ｏ部分１２は、全てのノードに追加されるプロセッサの数に比例してスケーリングされる。４つのノード４１は図４では、ノードを相互接続する双方向バス３１により相互接続される。各バス３１は１６バイト・データ・バス３２、及びフェッチ、ストア、及び相互問い合わせオペレーションのためのアドレスを伝搬する"アドレス／コマンド"・バス３０を含む。コマンド・タグがオペレーション・タイプを指定し、応答が相互問い合わせまたは他のディレクトリ探索コマンドを受信するノードから提供される。
【００９０】
ノード内のメモリ５は、割当てられた主記憶アドレス範囲にもとづき、チップ７内のメモリ・インタフェース間で区分化され、システム内の全てのプロセッサにより、大域的にアドレス指定可能である。Ｉ／Ｏアドレス範囲は、全てのプロセッサ・チップ７内の主記憶アドレス範囲と重複しないように割当てられ、これらのＩ／Ｏ範囲を通じて全てのＩ／Ｏ装置がシステム内の全てのプロセッサによりアクセスされ得る。
【００９１】
図４の各ノード４１は、同一ノード内のＣＰ１のＬ１キャッシュ２内にキャッシュされる全てのラインを包含するノード・ディレクトリ２４を含む。しかしながら、任意のノード内のＬ１キャッシュ及びノード・キャッシュは、コンピュータ・システム内の任意のノード内のメモリ５からフェッチされるデータをアクセス及びキャッシュできる。キャッシュ・ラインは複数のノード・ディレクトリ２４内に、共用（読出し専用）状態で同時に存在できる。従来のＭＥＳＩプロトコルによれば、ラインは単一のノード・ディレクトリ２４内でのみ、排他状態または変更状態で存在できる。
【００９２】
図４のマルチノード・コンピュータ・システムでは、メモリ要求を開始するＣＰを含む任意のノードが、要求元ノードと呼ばれる。アクセスされるデータを有するメモリ５を含むノード４１は、その要求のホーム・ノードと呼ばれ、そのデータのコヒーレンスを維持する責任を担う。排他状態のラインを現在キャッシュしているノード４１は、そのデータの保持ノード（holding node）と呼ばれる。
【００９３】
複数のノード・ディレクトリ２４のいずれかにおいて、データ・ラインの状態が変更されるとき、２つの同時要求が互いに競合しないように保証するために、"直列化プロセス"が使用され、コンピュータ・システムの記憶装置内のデータの一貫したビューが、全てのノード内の全てのＣＰ１により観察されるように維持する。一般にこれは、ラインの１つ以上のコピーが無効化されなければならないときに常時実行され、あるプロセッサが例えばデータ・ラインへの書込みなど、排他アクセスを必要とするときに発生する。別のこうした状況は、ラインが排他から共用に変更されなければならないときに発生し、複数のプロセッサにそのラインへの共用アクセスを許可し、ラインの複数のコピーを共用状態で使用することを許可する。"直列化プロセス"は、全てのこうした要求を要求アドレスのホーム・ノードに送信することにより達成される。ホーム・ノード４１内のノード制御論理２３は、各ノード内に実装される優先機構にもとづき定義された順序に従い、こうした要求の各々を処理する。
【００９４】
フェッチがノード・ディレクトリ２４内でミスし、要求元ノードがホーム・ノードの場合、ノード制御２３は図３に関連して述べたように、即時そのメモリ位置に対してフェッチ・オペレーションを開始する。同時にノード制御２３はフェッチ・コマンドのアドレスを、ノード間アドレス／コマンド・バス３０を介して、他のノード上のノード制御２３に同報する。ノード制御２３の各々は、それらのノード・ディレクトリ２４内でこのアドレスを探索し、そのステータスにより、ノード間アドレス／コマンド・バス３０を介して、要求元ノードのノード制御２３に応答する。使用される直接ノード相互接続技法のために、このオペレーションはメモリ・アクセスよりも大変高速である。他のノード制御２３の１つが、ラインがそのノード・ディレクトリ２４内で排他状態であると応答する場合、要求元ノード上のノード制御２３が、メモリ要求を取り消す信号を適切なアドレス／コマンド・バス２０を介して送信し、ラインが保持ノード・キャッシュ２１から電子スイッチ２２及びノード間データ・バス３０を介して、要求元ノード・キャッシュ２１にフェッチされる。全てのノード・ディレクトリ２４は包含的であるので、Ｌ１ディレクトリ３内の排他または変更状態のデータは、その情報をそのノード・ディレクトリ２４内に反映される。こうしたケースでは、データが図３に関連して述べた方法により、Ｌ１キャッシュ２内の実際のコピーからフェッチされ、その後、要求元ノードに転送される。オリジナル要求タイプが排他であった場合、要求データは排他状態で返却され、最初にそのラインを保持する任意の他のノード・ディレクトリ２４またはＬ１ディレクトリ３は、その状態を無効に変更しなければならない。オリジナル要求タイプが共用または条件付き排他であった場合、それがシステム内のどこかに既にキャッシュされていると判明した場合、要求データが共用状態で返却され、データを排他または変更状態で保持する任意の他のノード・ディレクトリ２４またはＬ１ディレクトリ３が、その状態を共用に変更しなければならない。複数のノード・ディレクトリ２４に渡って共用されるために、変更キャシュ・ラインが共用状態に変更される場合、それは一般にオペレーションの一部として、ホーム・メモリ５にストアバックされる（従って"変更−共用"状態の必要性を回避する）。データが任意の他のディレクトリ（３または２４）内で、排他または変更と見い出されない場合、図３に関連して述べたように、オリジナル・メモリ要求が完了し、データを提供することを許可される。返却ラインの最終状態（排他または共用）は、要求タイプ、並びに図３で述べたように、ラインがシステム内の任意の他のキャッシュ内に存在すると見い出されたか否かの関数である。
【００９５】
フェッチがノード・ディレクトリ２４内でミスし、要求元ノードがホーム・ノードでない場合、ノード制御２３は適切なノード間アドレス／コマンド・バス３０を介して、処理のための要求をホーム・ノード上のノード制御２３に送信する。ホーム・ノードのノード制御２３内の優先機構による処理が選択される場合、ノード制御２３はそのノード・ディレクトリ２４を探索し、ラインが存在するか否かを確認する。ヒットが検出される場合、ラインがホーム・ノードのノード・キャッシュ２１から、電子スイッチ２２及び適切なノード間データ・バス３２を介して、要求元ノードのノード・キャッシュ２１に返却され、必要とされるキャッシュ状態の変更が、ホーム・ノードによりノード間アドレス／コマンド・バス３０を介して、全ての適切なノード上のノード制御２３に同報される。ノード・ディレクトリ２４がラインが排他状態であったと示した場合、ラインは最初に、図３で述べた方法により、排他ＣＰ  ＩＤビットにより示されるＬ１キャッシュ１からフェッチされ、その後、要求元ノードのノード・キャッシュ２１に転送される。ラインがノード・ディレクトリ２４内に存在しなかった場合、メモリ・フェッチがノード制御２３により、適切なアドレス／コマンド・バス２５を介して、ホーム・ノード内の適切なメモリ制御装置４に発行される。
【００９６】
ホーム・ノード上でのメモリ・フェッチと並列に、ホーム・ノードのノード制御２３がフェッチ・コマンドの要求アドレスを、ノード間アドレス／コマンド・バス３０を介して、（要求元ノードを除く）全ての他のノード上のノード制御２３に同報する。他のノード上のノード制御２３はそれらのノード・ディレクトリ２４を探索して、それらがラインを排他状態または共用状態で保持するか否かを確認する。ラインを排他状態で保持する場合、前述の方法により、ラインがそのノード・キャッシュ２１から適切な電子スイッチ２２及びノード間データ・バス３２を介して、ホーム・ノードにフェッチされる。ホーム・ノードは適切なノード間データ・バス３２を介して、ラインを要求元ノードに転送する。
【００９７】
他のノード・ディレクトリ２４がラインを排他状態で保持している場合、メモリ・フェッチがホーム・ノード上で完了することを許可され、データ・ラインが適切なノード内データ・バス２０を介して、ホーム・ノード電子スイッチ２１に転送され、次に適切なノード間データ・バス３２を介して、要求元ノードに転送される。
【００９８】
オリジナル要求タイプが排他であった場合、要求データが排他状態で返却される。オリジナル要求タイプが条件付き排他であり、データがシステム内の任意の他のキャッシュ内に存在すると見いだされなかった場合、要求データが排他状態で返却される。他のケースでは、要求データが共用状態で返却される。
【００９９】
データが要求元プロセッサに排他状態で返却される場合、ホーム・ノードのノード制御２３はアドレス／コマンド・バス２５を介して、要求データに対する無効化コマンドを他のノードに適宜発行する。要求データが共用状態で返却される場合、そのデータを排他状態または変更状態で保持する任意の他のノード・ディレクトリ２４及び任意のＬ１ディレクトリ３が、その状態を共用に変更する。更に、ラインの共用コピーがホーム・ノードのノード・キャッシュ２１内に配置され得る。
【０１００】
変更キャッシュ・ラインが複数ノード・ディレクトリ２４に渡って共用されるために、共用状態に変更される場合、それは一般にオペレーションの一部として、ホーム・メモリ５にストアバックされる。
【０１０１】
Ｌ１ディレクトリ３内の現在共用状態のラインへのストアは、キャッシュ・ミスとして扱われ、要求データ・ラインの排他所有権を要求するフェッチ・コマンドが、アドレス／コマンド・バス２５を介して、ノード制御２３に送信される。性能改善のために、これは任意的に、業界において既知の方法（例えばGannonらによる米国特許第５２６５２３２号を参照）を用いることにより、データを返却することなく、排他所有権を返却する特殊な要求として扱われ得る。
【０１０２】
Ｉ／Ｏ装置に対応するアドレス範囲は、主記憶装置のアドレス範囲と重複せず、一部のまたは全てのプロセッサ・チップ７に渡って区分化される。全てのＩ／Ｏ装置は、システム内の全てのプロセッサによりアドレス指定可能である。プロセッサ７からＩ／Ｏ装置へのコマンドは、局所的に接続されるＩ／Ｏ装置に対しては、Ｉ／Ｏアドレス／コマンド・バス１１（図１）を介して、Ｉ／Ｏ装置に直接送信される。他のＩ／Ｏ装置のためのコマンドは、ノード内アドレス／コマンド・バス２５、ノード間アドレス／コマンド・バス３０、及び制御チップ２７を介して、適切なＩ／Ｏ制御ポート１２に経路指定される。Ｉ／Ｏ装置からのＤＭＡコマンドもまた、アドレス／コマンド・バス２５及び３０及び制御チップ２７を介して経路指定される。同様に、Ｉ／Ｏ装置へのまたはそれらからのデータ転送は、メモリ・オペレーションの場合同様、ノード内及びノード間データ・バス２０及び３２、並びにスイッチ部分２２を介して適切なＩ／Ｏ制御１２に経路指定される。Ｉ／Ｏオペレーションはキャッシュ内のデータをアクセスできるが、新たなデータをキャッシュ内にもたらすことはない。
【０１０３】
複数ノードの代替相互接続（図５）：
図５は、４ノード・コンピュータ・システムの代替相互接続技法を示し、これはノード・バス３２に接続される共用マルチドロップ・データ・バス及びアドレス／コマンド・バス３３を利用して、業界において周知の調停技術を使用する。これらは図４のノード・バス３１により提供される直接２地点間接続を置換する。図５の４つのノード４１は、図４の４つのノード４１と同様に構成されるが、ノードはマルチドロップ・タイプの異なるタイプのノード間バス３３により接続される。単一マルチドロップ・バスが、図５のシステムを実現するために使用され得るが、図５では２つのバスが示され、アドレス範囲にもとづきインタリーブされて動作し、帯域幅を改善する。図４に関連して前述したオペレーション・シーケンスは、図４の構成において使用され得るが、図４の実施例はノード間フェッチのために、スヌープ同報を単純化及び結合する潜在性を有する。
【０１０４】
図４で述べた方法により実現される直列化機構のために、全てのノード・ミス・オペレーションが、要求アドレスに対するホーム・ノードの制御チップ２７内のコマンドの処理に関係する。この構成は、現在別のノード上で使用中の所与のノードからの全てのアドレスに関して、制御チップ２７により管理されるディレクトリ・テーブルの実現に大いに適する。こうしたディレクトリ・テーブルは、ノード間での不要な相互問い合わせ探索を回避するために使用され得る。
【０１０５】
用語"ノード"は、従来技術では多くの多様な無関係の意味を有して参照される。従来技術において、用語"ノード"は、一般的に通信ネットワークにおいて使用される。ネットワークは通信リンクにより接続される複数の独立の"ノード"を含み、通信リンクが"ノード"間でデータのパケットを送信し、各ノードは独自のオペレーティング・システムを有する独立のハードウェア・コンピュータ・システムであり、各ノードはしばしば、"中央電子コンプレックス"または"中央処理コンプレックス"と呼ばれる。用語"ノード"の異なる意味は、従来一般にソフトウェア技術において見いだされ、そこでは"ノード"はしばしば、マルチノード・ソフトウェア構成内の１つ以上の他のノードを突き止める、１つ以上のアドレス・ポインタを含むソフトウェア構造体を表すために使用される。更に、従来技術において、用語"ノード"の他の意味が存在する。従って、用語"ノード"が、それが使用されている仕様内で示される意味だけを有するべきことを認識することが重要である。これらの理由から、用語"ノード"の意味を従来技術の文献から本明細書に転用するには、多大な注意が必要である。
【０１０６】
本明細書では、用語"ノード"は単一コンピュータ・システムのセクションを表し、これは"ノード間"（すなわちセクション間）バスにより接続される１つ以上の"ノード"（すなわち１つ以上のセクション）から構成される。最初に単一のセクションから構成される場合、１つ以上の追加のセクションが後に追加され、セクション間バスにより初期のセクションに接続されて、コンピュータ・システムの容量を拡大する。追加のセクション（"ノード"）の追加は、単一コンピュータ・システムの特性を変更せず、全ての"ノード"（すなわちセクション）は、単一のオペレーティング・システムにより管理され得る。すなわち、本明細書では、複数ノード・システム内の各"ノード"は、単一コンピュータ・システム内の"セクション"の１つである。この単一コンピュータ・システム内において、複数"セクション"の各々は、複数の"システム・セル"から構成され、各セルはプロセッサ・チップ、及びプロセッサ・チップにローカル・バスにより接続されるローカル・メモリ（例えばＤＲＡＭ）から構成される。各プロセッサ・チップは少なくとも１つの中央プロセッサを含み、複数の中央プロセッサを含み得る。コンピュータ・システムの任意のセクション内の全てのまたは一部のシステム・セルは、Ｉ／Ｏインタフェースを含み得る。セルがＩ／Ｏインタフェースを含む場合、それはチップ上にＩ／Ｏプロセッサを提供することにより、またはチップ上の中央プロセッサに、（その中央処理機能に加え）Ｉ／Ｏインタフェースを提供するためのＩ／Ｏ機能を実行させることによりサポートされる。
【０１０７】
まとめとして、本発明の構成に関して以下の事項を開示する。
【０１０８】
（１）１つ以上のノードから成るスケーラブル・コンピュータ・システムであって、任意のノードのサイズ及びシステム内のノードの数が、コンピュータ・システムのサイズ及び性能を変更するために容易に変更可能であり、コンピュータ・システム内の各ノードが、
専用キャッシュ（Ｌ１キャッシュ）を有する少なくとも１つの中央プロセッサと、メモリ制御装置とを含み、それぞれが同一の製造仕様を有して、容易な複製をサポートする、各ノード内の複数のプロセッサ半導体チップ（プロセッサ・チップ）と、
コンピュータ・システム内の全てのプロセッサ・チップ上の全ての中央プロセッサによりアクセス可能な、コンピュータ・システム内の共用メモリを提供する複数のＲＡＭ（ランダム・アクセス・メモリ）半導体チップであって、共用メモリがコンピュータ・システム内のＲＡＭ全体から成り、コンピュータ・システム内の異なるプロセッサ・チップ上のメモリ制御装置に接続されるＲＡＭの複数のサブセット（ＲＡＭセクション）に分割される、複数のＲＡＭチップと、
各々がそれぞれのＲＡＭセクションと、それぞれのプロセッサ・チップ上のそれぞれのメモリ制御装置との間に局所的に接続され、それぞれのプロセッサ・チップ上の各プロセッサに対して、局所的に接続されるＲＡＭセクションとの間の直接アクセスを提供する複数のローカル・メモリ・バスと、
同一ノード内の各プロセッサ・チップに接続されて、同一ノード内の任意のプロセッサ・チップによりアクセスされる共用メモリ内のデータを記憶する、各ノード内のノード・キャッシュと、
同一ノード内のノード・キャッシュと、同一ノード内の各プロセッサ・チップとに接続される、各ノード内のノード・ディレクトリと、
各プロセッサ・チップを同一ノード内のノード・キャッシュ及びノード・ディレクトリに接続して、任意のプロセッサがそのプロセッサを含むプロセッサ・チップに直結されないＲＡＭセクションをアクセスするとき、ノード内の任意のプロセッサが、ノードの共用メモリの任意のＲＡＭセクション上のデータをアクセスすることを可能にする、各ノード内のノード内バス機構と
を含む、スケーラブル・コンピュータ・システム。
（２）ノード内の中央プロセッサによりアクセスされる、またはＲＡＭに記憶されるデータを記憶する各ノードのノード・キャッシュを構成する、１つ以上の複製可能なノード・キャッシュ半導体チップ（ノード・キャッシュ・チップ）と、
ノード・キャッシュ内のプロセッサ要求データを突き止める同一ノードのノード・ディレクトリに接続される、ノード・キャッシュの各ノード・キャッシュ・チップと、
ノード・ディレクトリ及び各ノード・キャッシュ・チップを、同一ノード内の各プロセッサ・チップに接続する電子スイッチと
を含む、前記（１）記載のスケーラブル・コンピュータ・システム。
（３）各プロセッサ・チップに接続されるＲＡＭセクションに記憶されるデータであって、ノード・キャッシュまたはノード・ディレクトリへのアクセスと重複して、プロセッサ・チップ上の任意のプロセッサにより迅速にアクセス及び使用されて、データの変更コピーがシステム内のどこかに存在するか否かを判断する、前記（２）記載のスケーラブル・コンピュータ・システム。
（４）データのプロセッサ要求アドレスを接続ノード・ディレクトリに提供することにより、データを接続ノード・キャッシュから要求する、各プロセッサ・チップ内の制御であって、データが要求元プロセッサ・チップに接続されるＲＡＭ内で短路データとして入手可能でない場合、接続ノード・キャッシュからのデータのフェッチを制御する、前記（３）記載のスケーラブル・コンピュータ・システム。
（５）データが現在接続ノード・キャッシュに含まれている場合、接続ノード・キャッシュからデータをフェッチする、ノード・ディレクトリのノード制御と、
データが接続ノード・キャッシュに含まれない場合、データに対するノード要求を、プロセッサ要求アドレスを有するＲＡＭセクションに接続されるプロセッサ・チップに提供することにより応答する、ノード・ディレクトリのノード・ミス制御であって、ノード要求プロセッサ・チップが要求アドレスのデータのコピーをノード・キャッシュに送信し、そのデータが次にノード・キャッシュにより、ノード・キャッシュ内でミスしたプロセッサ要求アドレスを提供するプロセッサに送信される、前記（４）記載のスケーラブル・コンピュータ・システム。
（６）ノード・キャッシュを構成する複数の同一のノード・キャッシュ・チップを含み、各ノード・キャッシュ・チップがノード・キャッシュに記憶される各データ・ラインの一部を記憶し、各データ・ラインが共用メモリ内の単一のアクセスにより決定されるデータの単位である、前記（５）記載のスケーラブル・コンピュータ・システム。
（７）ノード内電子スイッチがノード・ディレクトリと共に提供されて、ノード・ディレクトリを同一ノード内の各プロセッサ・チップに接続し、コンピュータ・システム内の任意のプロセッサにより要求される、任意のローカルＲＡＭセクション（ノード・ディレクトリを含むノード内のＲＡＭ）に記憶されるデータのデータ転送を制御する、前記（６）記載のスケーラブル・コンピュータ・システム。
（８）ノード内電子スイッチが各ノード・キャッシュ・チップと共に提供されて、各ノード・キャッシュ・チップを同一ノード内の各プロセッサ・チップに接続し、接続されるノード・ディレクトリの制御に従い、コンピュータ・システム内の任意のプロセッサにより要求されるデータを転送する、前記（７）記載のスケーラブル・コンピュータ・システム。
（９）ノード内電子スイッチがノード・ディレクトリと共に提供され、ノード・ディレクトリを含む同一チップ上に形成される、前記（８）記載のスケーラブル・コンピュータ・システム。
（１０）ノード内電子スイッチが各ノード・キャッシュ・チップと共に提供され、ノード・キャッシュ・チップを含む同一チップ上に形成される、前記（８）記載のスケーラブル・コンピュータ・システム。
（１１）コンピュータ・システム内に提供される複数のノードと、
各ノード内のノード・キャッシュ及びノード・ディレクトリを、コンピュータ・システム内の他の各ノード内のノード・キャッシュ及びノード・ディレクトリに接続する１つ以上のノード間バスと
を含む、前記（１０）記載のスケーラブル・コンピュータ・システム。
（１２）ノード間電子スイッチがノード・ディレクトリと共に提供され、ノード・ディレクトリをコンピュータ・システム内の他の各ノード内のノード・ディレクトリに接続する、前記（１１）記載のスケーラブル・コンピュータ・システム。
（１３）ノード間電子スイッチが各ノード・キャッシュ・チップと共に提供され、ノード・キャッシュ・チップを、コンピュータ・システム内の他の各ノードのノード・キャッシュ内の対応するノード・キャッシュ・チップに接続する、前記（１２）記載のスケーラブル・コンピュータ・システム。
（１４）（プロセッサ・チップに接続される）各ＲＡＭセクションが、データ・ラインを記憶可能なＲＡＭライン単位に分割され、データ・ラインが接続プロセッサ・チップ上のメモリ制御装置セクションにより、ＲＡＭアドレスを用いて検索され、ＲＡＭセクション内のアドレスがそれぞれのＲＡＭセクション内で固有であり、システム共用メモリ内の他のＲＡＭセクションのＲＡＭアドレスと一意であることを要求されず、
コンピュータ・システム内の全てのＲＡＭセクションが、システム共用メモリを提供するように制御される、前記（１３）記載のスケーラブル・コンピュータ・システム。
（１５）固有の実アドレスの範囲が、システム共用メモリ内の異なるバイト位置に割当てられ、実アドレスが共用メモリ内のバイト・アドレスであり、コンピュータ・システム内のプロセッサ・チップ内のプロセッサ上で実行するプログラムにより使用可能であって、コンピュータ・システム内の任意のチップ上の任意のプロセッサが、プログラム定義アドレスにより、共用メモリ内に配置されるデータ及びプログラムをアクセスすることを可能にし、
各プロセッサ・チップ内に提供されるアドレス変換制御が、共用メモリのプログラム定義アドレスをＲＡＭアドレスに変換し、コンピュータ・システム内の任意のノードの任意のＲＡＭセクション内の要求ＲＡＭアドレスを突き止める、前記（１４）記載のスケーラブル・コンピュータ・システム。
（１６）各それぞれのＲＡＭセクション上の各ＲＡＭアドレスが、コンピュータ・システム内の固有のプロセッサ・チップ識別子（ＩＤ）を追加されることにより、システム共用メモリ内で固有にされ、各共用メモリ・アドレスが少なくともプロセッサ・チップ識別子（ＩＤ）及びＲＡＭアドレスを含む、前記（１５）記載のスケーラブル・コンピュータ・システム。
（１７）固有のプロセッサ・チップＩＤが、プロセッサ・チップを含むノードのノード・アドレスを含み、各ノードがコンピュータ・システム内で固有のノード・アドレスを有し、追加されるチップＩＤがそのノード内でのみ固有であることを要求される、前記（１６）記載のスケーラブル・コンピュータ・システム。
（１８）各プロセッサ・チップ上のプロセッサが、特定のコンピュータ・アーキテクチャに従い構築されて、そのアーキテクチャ用に作成されたプログラムを実行し、アドレス変換制御が実行プログラム内のアドレスを要求ＲＡＭアドレスに変換して、コンピュータ・システム内の任意の要求ＲＡＭセクション内の要求データをアクセスする、前記（１７）記載のスケーラブル・コンピュータ・システム。
（１９）アドレス変換制御によるＲＡＭアドレスへの変換後に、プロセッサ・チップの外部のプログラム・アドレスを伝達する、各プロセッサ・チップ上のアドレス通信制御を含む、前記（１８）記載のスケーラブル・コンピュータ・システム。
（２０）各ＲＡＭセクション内のメモリ実アドレス空間が、複数のアドレス空間に分割され、それらが
コンピュータ・システム内の任意のプロセッサ・チップ上で実行されるプログラムによりアクセス可能な、システム共用メモリの一部として提供される第１のメモリ空間と、
接続されるプロセッサ・チップ上のプロセッサにより実行されるマイクロコードによってのみアクセス可能で、コンピュータ・システム内の任意のプロセッサ・チップ上で実行するプログラムによってはアクセス可能でない、ハードウェア・メモリの第２のメモリ空間と
を含む、前記（１９）記載のスケーラブル・コンピュータ・システム。
（２１）各ＲＡＭセクションの第１及び第２のメモリ空間が、ＲＡＭアドレスのそれぞれの範囲を含み、
（共用メモリの一部である）第１のメモリ空間内のＲＡＭアドレスだけが、アドレス変換制御によりサポートされて、プログラム・アドレスからＲＡＭアドレスに変換される、前記（２０）記載のスケーラブル・コンピュータ・システム。
（２２）アドレス変換制御が、各ＲＡＭセクションの第１のメモリ空間内のＲＡＭアドレスを、固有プログラム・バイト・アドレスの範囲に割当て、プログラム・アドレスが、コンピュータ・システム内の任意のプロセッサ・チップ内のプロセッサ内で実行するプログラムにより生成されるとき、ＲＡＭセクション内の要求データ位置のアクセスを可能にする、前記（２１）記載のスケーラブル・コンピュータ・システム。
（２３）任意のプロセッサ・チップがシステム共用メモリをアクセスできる複数のプロセッサを含むとき、プロセッサ・チップＩＤとは別の固有のプロセッサ識別子（ＩＤ）が、各プロセッサ・チップ内の各プロセッサに割当てられ、各システム固有のＲＡＭアドレスが、プロセッサＩＤ、プロセッサ・チップＩＤ、及びそれぞれのＲＡＭセクションのＲＡＭアドレスを含み、ＲＡＭアドレスがそのＲＡＭセクション内でのみ固有である必要がある、前記（２２）記載のスケーラブル・コンピュータ・システム。
（２４）各ノード・ディレクトリが、所有ノード・ディレクトリと同一のノード内のプロセッサ・チップに接続されるＲＡＭセクションを所有し、
各所有ノード・ディレクトリが、それ自身のＲＡＭセクション内でアクセスされる全てのＲＡＭアドレスを記憶し、所有ノード・ディレクトリへの送信前に、各ＲＡＭアドレスがプログラム・アドレスからＲＡＭアドレスに変換され、各要求アドレスが要求元プロセッサを識別し、要求アドレスを含むＲＡＭセクションを識別し、
（所有ノード・ディレクトリに接続される）ノード・キャッシュが、同一ノード内の任意のＲＡＭセクション内でアクセスされるデータのコピーを受信及び記憶し、アクセス・データがＲＡＭセクション内に留まり、ノード・キャッシュに記憶されるデータのコピーをバックさせる、前記（２３）記載のスケーラブル・コンピュータ・システム。
（２５）コンピュータ・システムが２つ以上のノードを有する場合、所有ノード・ディレクトリが要求アドレスを、同一ノード内のローカル・プロセッサから、及びコンピュータ・システム内のリモート・ノード・ディレクトリから受信し、各要求アドレスが要求元プロセッサ、及び要求アドレスを含むＲＡＭセクションを識別し、
各所有ノード・ディレクトリが各受信される要求アドレスを探索し、それが所有ノード・ディレクトリ内の有効エントリ内で見い出されない場合、任意的に要求アドレスを記憶し、
（所有ノード・ディレクトリに接続される）ノード・キャッシュが、識別されるＲＡＭセクションに接続されるプロセッサ・チップのメモリ制御装置によりフェッチされるデータ・ラインを受信して、任意的に記憶する、前記（２４）記載のスケーラブル・コンピュータ・システム。
（２６）コンピュータ・システムが２つ以上のノードを含む場合、
要求アドレスが要求ＲＡＭセクションに接続されるプロセッサ・チップにより提供されなかったとき、所有ノード・ディレクトリが要求アドレスを、識別されたＲＡＭセクションに接続されるプロセッサ・チップに転送し、
接続されるプロセッサ・チップが要求アドレスを用いて、識別されたＲＡＭセクション内のアドレス指定データ・ラインをアクセスし、要求アドレスが識別されたＲＡＭセクションに接続されるプロセッサ・チップにより提供されなかったとき、プロセッサ・チップがデータ・ラインを所有ノード・キャッシュに送信し、
要求アドレスが別のノード内の接続リモート・ノード・ディレクトリから受信されたとき、所有ノード・ディレクトリが要求データ・ラインのコピーをリモート・ノード・キャッシュに転送し、リモート・ノード・ディレクトリが要求データ・ラインのコピーを、その接続ノード・キャッシュから要求元リモート・プロセッサに転送する、前記（２５）記載のスケーラブル・コンピュータ・システム。
（２７）各ノード・ディレクトリ内のコヒーレンス制御が、各有効ノード・ディレクトリ・エントリ内の制御情報を用いて、１つ以上のＬ１キャッシュ及びノード・キャッシュにコピーされ、コンピュータ・システム内のプロセッサにより変更されたかもしれない要求データ・ラインの複数のコピーに渡り、コヒーレンスを維持し、制御情報が記憶要求元プロセッサＩＤ、及び要求ＲＡＭアドレスを含むＲＡＭセクションの記憶ＩＤを含む、前記（２６）記載のスケーラブル・コンピュータ・システム。
（２８）要求ＲＡＭデータ・ラインに対し、要求元プロセッサに一時的に与えられるアクセス権限を示す権限標識が、コンピュータ・システム内の各ノード・ディレクトリ内の各有効ノード・ディレクトリ・エントリ内に記憶され、アクセス権限が読出し専用及びストア権限を含む、前記（２７）記載のスケーラブル・コンピュータ・システム。
（２９）コンピュータ・システム内の他の各ノード・ディレクトリと通信する、各ノード・ディレクトリのコヒーレンス通信制御が、同一のＲＡＭデータ・ラインをアクセスして、システム共用メモリ内の全てのデータのコヒーレンスを維持する、前記（２８）記載のスケーラブル・コンピュータ・システム。
（３０）各有効データ・ラインが、コンピュータ・システムの１つ以上の専用プロセッサ・キャッシュ及びノード・キャッシュに同時に記憶可能であり、同一のデータ・ラインが、要求ＲＡＭアドレスの接続ノード・ディレクトリ内の対応するノード・ディレクトリ・エントリ内で識別されるＲＡＭセクションにバックされ、
ノード・ディレクトリ、ノード・キャッシュ及び専用プロセッサ・キャッシュ内のストアバック制御が、データ・ラインの最新の変更バージョンを、識別されたＲＡＭセクション内の要求アドレスに後に記憶する、前記（２９）記載のスケーラブル・コンピュータ・システム。
（３１）ストアバック制御及びコヒーレンス通信制御が、所有ノード・ディレクトリのノード内のノード内バスと、ノード間バスを用いて、要求元プロセッサＩＤを有する各リモート・ノード・ディレクトリに接続する、前記（３０）記載のスケーラブル・コンピュータ・システム。
（３２）各所有ノード・ディレクトリのコヒーレンス通信制御が、コヒーレンス信号を所有ＲＡＭセクションの識別子を含む各非所有（リモート）ノード・ディレクトリに伝達することにより、コンピュータ・システム全体に渡って、所有ノード・ディレクトリにより所有される全てのＲＡＭセクションに記憶される全てのデータ・ラインに対して、全てのコヒーレンス・オペレーションを調整する、前記（３１）記載のスケーラブル・コンピュータ・システム。
（３３）各ノード・ディレクトリのコヒーレンス施行制御が、ノード・ディレクトリに接続されるノード・キャッシュに記憶される所有データ及び非所有データに対して異なって作用し、所有データはノード・ディレクトリにより所有されるＲＡＭによりバックされ、非所有データはノード・ディレクトリにより所有されるＲＡＭによりバックされず、リモート・ノード内のＲＡＭによりバックされ、
共用システム・メモリ内の所有データのコヒーレンスを維持するために、コピー無効化が要求される場合、ノード・ディレクトリのコヒーレンス施行制御において、無効制御が所有データに対して作用し、コンピュータ・システム内の全てのノード内の所有データのコピーの無効化を調整し、
所有データがコンピュータ・システム内の任意のプロセッサにより変更された後、ノード・ディレクトリのコヒーレンス施行制御において、ライトバック制御が所有データに対して作用し、所有データの補助ＲＡＭセクションへのライトバックを調整する、前記（３２）記載のスケーラブル・コンピュータ・システム。
（３４）非所有ノード・ディレクトリの無効化制御が、接続ノード・キャッシュ内の、及びノード内の任意の専用プロセッサ・キャッシュ内の非所有データのコピーだけを無効化するように作用する、前記（３３）記載のスケーラブル・コンピュータ・システム。
（３５）各ノード・ディレクトリへのコヒーレンス信号制御が、所有ノード・ディレクトリに、非所有ノード・ディレクトリのノード内の非所有データのコピーに対する権限変更要求を知らせ、所有ノード・ディレクトリがコンピュータ・システムの全てのノード内のデータの権限変更を調整することを可能にする、前記（３４）記載のスケーラブル・コンピュータ・システム。
（３６）１つ以上のシステム・セクションを含み、
各システム・セクションが複数のシステム・セル、セクション・キャッシュ及びディレクトリ、及びセルをセクション・キャッシュ及びディレクトリに接続する電子スイッチ及びセクション内バスを含み、
各システム・セルがプロセッサ半導体チップ（プロセッサ・チップ）、ローカル・メモリ、及びローカル・メモリをプロセッサ・チップに接続するローカル・バスを含み、ローカル・メモリが、システムの任意のセル内に配置される中央プロセッサにより共用可能なデータ及び命令を記憶するシステム・メモリのサブセットであり、
各プロセッサ・チップが少なくとも１つの中央プロセッサ、プロセッサ・キャッシュ、及びサブセット・メモリ制御装置インタフェースを含み、
セクション内バスが各プロセッサ・チップをセクション内の電子スイッチを介して、セクション・キャッシュ及びディレクトリに接続し、
電子スイッチが、後にセクションに追加されるセルとセクション・キャッシュ及びディレクトリとの間に、将来バスを接続するスイッチング能力を有し、
コヒーレンス制御がディレクトリ内のエントリを提供されて、システム内のセル間で通信されるデータ及び命令のコヒーレンスを制御する、スケーラブル・コンピュータ・システム。
（３７）セクション内の任意の中央プロセッサにより、システム内の任意のセルからアクセスされるデータを記憶するセクション・キャッシュのサブセットを含む、複数の複製可能なキャッシュ半導体チップと、
複数の複製可能なキャッシュ半導体チップ内のエントリに関連付けられるアクセス及びコヒーレンス情報を記憶するセクション・ディレクトリのサブセットを含む、複数の複製可能なディレクトリ半導体チップと
を含む、前記（３６）記載のスケーラブル・コンピュータ・システム。
（３８）各プロセッサ・チップのサブセット制御装置インタフェースが、セクション内バスの１つの一端に接続され、セクション内バスの他端がセクション内の１つ以上の電子スイッチに接続されて、セクション・キャッシュ及びセクション・ディレクトリへの接続を形成する、前記（３７）記載のスケーラブル・コンピュータ・システム。
（３９）データが要求元プロセッサ・チップのセル内のローカル・サブセット・メモリ内で入手可能でないとき、各プロセッサ・チップ内の専用キャッシュ・ミス制御が、データの要求を生成し、要求データのプロセッサ要求アドレスを、接続されるセクション・ディレクトリに送信することにより、データの要求を接続されるセクション内バスを介してセクション・キャッシュに送信し、セクション・キャッシュからのデータのフェッチを制御する、前記（３８）記載のスケーラブル・コンピュータ・システム。
（４０）プロセッサ・チップ上のサブセット・メモリ制御装置インタフェースが、チップ上の中央プロセッサのＩ／Ｏ接続機能として提供され、中央プロセッサのＩ／Ｏ接続機能がローカル・メモリ・バス及びセクション内バスに接続されて、コマンド及びメモリ要求を、チップを含むセクション内のセクション・ディレクトリとの間で転送し、コマンドまたは要求により要求されるとき、セクション内バスが、チップを含むセクション内のセクション・キャッシュとの間でデータを転送する、前記（３６）記載のスケーラブル・コンピュータ・システム。
（４１）チップ上のサブセット・メモリ制御装置インタフェースが、ローカル・メモリ・バスとチップ上の各中央プロセッサとの間に接続されるチップ上の独立の制御装置プロセッサにより提供され、制御装置プロセッサが更にセクション内バスに接続されて、コマンド、メモリ要求及びデータを、チップを含むセクション内のセクション・ディレクトリ及びセクション・キャッシュとの間で転送する、前記（３６）記載のスケーラブル・コンピュータ・システム。
（４２）セクション間バスがシステム・セクションを、システム・セクションの複製である追加のシステム・セクションに接続し、セクション間バスが各システム・セクション内の電子スイッチで終端して、要求制御情報及びデータをシステム・セクション間で伝送し、複数システム・セクションを単一コンピュータ・システムに統合する、前記（３９）記載のスケーラブル・コンピュータ・システム。
（４３）１つ以上の非共用セクション間バス（非共用バス）が、システム・セクションをコンピュータ・システム内の追加のシステム・セクションに接続し、各追加のシステム・セクションがシステム・セクションの複製であり、各非共用バスが１対のシステム・セクションの各々内のセクション・ディレクトリで終端し、非共用バスにより接続されるコンピュータ・システム内のシステム・セクションの各々が、コマンド及びデータを、同一の非共用バスに接続される他のシステム・セクションとの間で送受信し、コンピュータ・システム内の全ての非共用バスが、それらの接続システム・セクションをコンピュータ・システムに統合して、任意のシステム・セクション内の任意のセル内の任意の中央プロセッサが、コンピュータ・システム内の任意のセクションの任意のセルに記憶されるデータをアクセスすることを可能にする、前記（３９）記載のスケーラブル・コンピュータ・システム。
（４４）共用セクション間バス（バス）がシステム・セクションを、コンピュータ・システム内の１つ以上の追加のシステム・セクションに接続し、各追加のシステム・セクションがシステム・セクションの複製であり、共用セクション間バスがバスに接続される各システム・セクション内の電子スイッチで終端し、システム・バスがコマンドを、バスに接続される任意のシステム・セクション内の任意のセル内の任意の中央プロセッサから、バスに接続される任意の他のシステム・セクション内の任意のセルに伝送し、中央プロセッサがバスに接続される任意のシステム・セクション内の任意のセルに記憶されるデータ及び命令をアクセスすることを可能にする、前記（３９）記載のスケーラブル・コンピュータ・システム。
（４５）プロセッサ・チップがチップ上のＩ／Ｏ接続ポイントによりサポートされるＩ／Ｏインタフェースを含み、Ｉ／Ｏ接続ポイントがチップ上のメモリ制御装置に接続されて、Ｉ／Ｏインタフェースをローカル・メモリ・バス及びノード内メモリ・バスに接続し、
Ｉ／Ｏデータが任意のプロセッサ・チップ上のＩ／Ｏインタフェースを用いて、Ｉ／Ｏ装置に及びＩ／Ｏ装置から提供され、Ｉ／Ｏデータがプロセッサ・アクセスの場合と同一のノード・コヒーレンス制御、バス機構、及びメモリ制御装置を用いて、適切なホーム・メモリ位置またはキャッシュにフェッチ／記憶される、前記（３６）記載のスケーラブル・コンピュータ・システム。
（４６）各システム・セルが、チップ上の中央プロセッサとは独立に、チップのＩ／Ｏインタフェースを提供し、同一チップ上のメモリ制御装置に接続されるＩ／Ｏプロセッサを含む、前記（４５）記載のスケーラブル・コンピュータ・システム。
【図面の簡単な説明】
【図１】システムの各ノード内に複製されるプロセッサ機能の一部であるプロセッサ・チップ７の構成を示す。プロセッサ・チップ７は、プロセッサ回路論理から成る中央プロセッサ（ＣＰ）１を含み、Ｌ１キャッシュ２、関連Ｌ１ディレクトリ３、メモリ制御装置セクション４、及びＣＰをＩ／Ｏ装置に接続するＩ／Ｏインタフェースを提供する入出力（Ｉ／Ｏ）制御装置１２と一緒に統合される。メモリ制御装置セクション４は、ＳＩＭＭ（シングル・インライン・メモリ・モジュール）５上のＤＲＡＭなどの、ランダム・アクセス電子メモリ・チップのセットに接続可能なメモリ・インタフェースを含む。オプションの標準リドライブ・チップ６がプロセッサ・チップ７とＳＩＭＭ５との間に示され、高性能化のために信号を再駆動する。バス・インタフェース・ユニット１３は、プロセッサ・チップ７と共通スイッチ／キャッシュ（図２の４０）と間のバス機構をサポートする。
【図２】制御チップ２７及び"Ｍ"個のスイッチ／キャッシュ・チップ２８から成る共通スイッチ／キャッシュを示す。制御チップ２７はキャッシュ及びスイッチの制御２３、及びノード・ディレクトリ２４を含む。制御２３はノード・キャッシュ及び電子スイッチの動作の責任を担い、これらの資源に対する様々な要求をサービスする。制御２３はまた、システム内の全てのＣＰによる全てのメモリ・アクセスに対して、データ・コヒーレンス及びデータ保全性を維持する責任を負う。ＣＰはそのノードの任意のプロセッサ・チップ７に接続される共用メモリ・セクション内のデータをアクセスし得る。制御チップ２７はアドレス／コマンド・バス２５を介して、プロセッサ・チップ７と通信し、ノード間アドレス／コマンド・バス３０を介して、他のノード上の制御チップと通信する。各スイッチ／キャッシュ・チップ２８は、電子スイッチ部分２２及びノード・キャッシュ部分２１を含む。全ての電子セクション・スイッチ２２及びノード・キャッシュ・セクション２１は、ノード・ディレクトリ２４及びノード・キャッシュ及びクロスバー・スイッチ制御２３を含むノード制御チップ２７への接続により、ノード内に一緒に統合される。電子スイッチ２２は双方向データ・バス２０を介して、プロセッサ・チップ７との間でデータを転送する。電子スイッチ２２はまた、ノード間データ・バス３２を介して、他のノードとの間でデータを転送する。ノード間アドレス／コマンド・バス及びデータ・バスは、以下の図面を簡素化するために、単一のエンティティ３１に結合されて示される。
【図３】図１に示されるプロセッサ・チップ及びメモリ組み合わせ１５をＮ個含むノードを示す。バス・インタフェース・ユニット１３が双方向ノード内データ・バス２０、すなわち双方向バス・セットの一端に接続され、各バスの他端は、電子セクション・スイッチ２２を介して、異なるノード・セクション・チップ２８に接続される。ノード内の任意のＣＰ７が、ノードの任意のノード・キャッシュ・セクション内のオペランドをアクセスでき、ノードのノード・キャッシュ・ディレクトリが、システム内の全てのＣＰによるメモリ・アクセスに対して、データ・コヒーレンス及びデータ保全性を維持する。すなわち、全てのＣＰがそのノードの任意のＣＰ７に接続される共用メモリ・セクション内のデータをアクセスし得る。
【図４】各々が図３に示されるように構成される４つのノードを有するコンピュータ・エンティティを示し、４ｘＮ個のＣＰ、及び４個のノード・キャッシュから成る構成を有するコンピュータ・エンティティを提供する。図４では、ノードがノード間バス３１により一緒に接続され、これは図２に示されるように、アドレス／制御バス３０及びデータ・バス３２を含む。各バスの端部は、図３のコンピュータ・エンティティ内の１ノードに接続される。Ｉ／Ｏインタフェース１２及びそれらのバス部分１０及び１１（図１参照）が、図３の各プロセッサ・チップ７内に含まれるが、それらは配線の混乱を回避するために図４では示されていない。
【図５】４つのノード・コンピュータ・エンティティ（図４と同じ１６個のプロセッサを有する）を相互接続するノード間バス機構の代替方法を示す。図５では異なるタイプのノード間バスを使用し、これは共用マルチドロップ・バス３３である。各マルチドロップ・バス３３は、各ノードに接続されるノード間バス３１と類似のデータ・バス部分及びアドレス／制御バス部分を含む。単一の共用マルチドロップ・バス３１が使用され得るが、図５はより大きな総帯域幅を提供するために、２つのこうしたバスを示す。要求される物理アドレスにもとづき、要求がバス間で分割される。
【図６】データ・ラインをシステム・ワイドに一意的に識別するために使用される物理アドレスを示す。この物理アドレスは、そのデータを所有するＤＲＡＭのノードＩＤ及びＣＰ  ＩＤ、更にそのＤＲＡＭセクション内のデータのバイト・アドレスを含む。物理ライン・アドレスはビット０乃至５６の物理アドレスから成り、ビット５７乃至６３は、データ・ライン内のバイトを指定するために使用される。この例は１２８バイト・ライン・サイズを想定する。
【図７】Ｌ１ディレクトリ３及びノード・ディレクトリ２４のエントリ内容を示す。Ｌ１キャッシュ２はストアインとして管理される。Ｌ１ディレクトリ３は標準ＭＥＳＩキャッシュ・コヒーレンス・プロトコルに従い、ラインを排他または共用としてマークする。排他ラインは変更データを含み、変更としてマークされる。ディレクトリのアドレス部分は、データのシステム・ワイドな固有のライン・アドレスを識別するために必要な情報を含む。これは一般に、そのラインを所有するＤＲＡＭのノードＩＤ及びＣＰ  ＩＤ、並びにそのＤＲＡＭセクション内のデータのライン・アドレスを含む。ノード・キャッシュ２１もまたストアインとして管理される。ノード・ディレクトリ２４は標準ＭＥＳＩキャッシュ・コヒーレンス・プロトコルに従い、ラインを排他または共用としてマークする。ラインが排他としてマークされるとき、排他ＣＰ  ＩＤビットが、ラインの排他的所有権を要求したプロセッサ７を示す。ラインが共用としてマークされるとき、排他ＣＰＩＤビットは意味を持たない。排他ラインは変更データを含み得、その場合、変更とマークされる。ディレクトリのアドレス部分は、データのシステム・ワイドな固有のライン・アドレスを識別するために必要な情報を含む。これは一般に、そのラインを所有するＤＲＡＭのノードＩＤ及びＣＰ  ＩＤ、並びにそのＤＲＡＭセクション内のデータのライン・アドレスを含む。
【符号の説明】
１  ＣＰ（中央プロセッサ）
２  Ｌ１キャッシュ
３  Ｌ１ディレクトリ
４  メモリ制御装置
５  メモリ
６  リドライブ・チップ
７  半導体チップ
８  双方向データ・バス
９  アドレス／コマンド・バス
１２  Ｉ／Ｏインタフェース
１３  バス・インタフェース・ユニット
１５  メモリ構成ブロック
２０  双方向データ・バス
２１  ノード・キャッシュ部分
２２  電子スイッチ部分
２３  ノード・キャッシュ及びスイッチの制御
２４  ノード・ディレクトリ
２５  アドレス／コマンド・バス
２７  制御チップ
２８  スイッチ／キャッシュ・チップ
３０  ノード間アドレス／コマンド・バス
３１  双方向ノード間バス・ポート
３２  ノード間データ・バス
４０  共通スイッチ／キャッシュ・ブロック
４１  ノード
【図１】
0003722415.tif 000002
【図２】
0003722415.tif 000003
【図３】
0003722415.tif 000004
【図４】
0003722415.tif 000005
【図５】
0003722415.tif 000006
【図６】
0003722415.tif 000007
【図７】
0003722415.tif 000008