(57)【特許請求の範囲】
【請求項１】
各々がノードコントローラ（７５）を有する複数のノードクラスタ（１７０）と、
複数のノードコントローラ（７５）間に作動的に結合されたプロセッサ間通信ネットワーク（５７５）とよりなり、
各ノードコントローラ（７５）は、
クロスバーユニット（２７９）と、
クロスバーユニットに作動的に結合された複数のポート（２７１−２７５）とよりなり、複数のポートは、第１のポート（２７１）、第２のポート（２７２）及び第３のポートを含み、第１のポートと第２のポートとは１又はそれ以上のプロセッサに接続するように構成された第１のポートタイプであり、第３のポートはメモリデータ及びディレクトリデータを含むメモリに接続するように構成された第２のポートタイプであり、第１のポートタイプと第２のポートタイプとは異なる機能を有するマルチプロセッサコンピュータシステム。
【請求項２】
複数のノードコントローラは第１のノードコントローラを含み、第１のノードコントローラは単一の集積回路チップ上に形成される請求項１のシステム。
【請求項３】
複数のノードコントローラは第１のノードコントローラを含み、各ノードクラスタ（１７０）はさらに、
第１のプロセッサと第２のプロセッサとを含む複数のプロセッサ（７４）と、
メモリ（７７）とを含み、
プロセッサとメモリとは、第１のポートが、クロスバーユニットと、第１の複数のプロセッサとの間に作動的に結合され、第２のポートが、クロスバーユニットと、第２のプロセッサとの間に作動的に結合され、第３のポートが、クロスバーユニットと、メモリとの間に作動的に結合されるように、ノードクラスタのノードコントローラに作動的に結合されている請求項１のシステム。
【請求項４】
メモリは、複数のプラグ接続可能なメモリ／ディレクトリカード上に実装され、各カードは、
メモリデータの保持専用のメモリチップの第１の副集合と、ディレクトリデータの保持専用のメモリチップの第２の副集合とを含む複数のメモリチップを有し、
メモリポートはさらに、
メモリチップの第１の副集合に結合されたメモリデータバス及びメモリアドレスバスを含むメモリデータポートと、
メモリチップの第２の副集合に結合されたディレクトリデータバス及びディレクトリアドレスバスを含むディレクトリデータポートとよりなる請求項３のシステム。
【請求項５】
複数のメモリ／ディレクトリカードの各々の、メモリチップの第２の副集合のデータ空間に対するメモリチップの第１の副集合のデータ空間の比率は、マルチプロセッサコンピュータシステムのサイズに応じた値に設定されている請求項３のシステム。
【請求項６】
複数のノードコントローラは第１のノードコントローラを含み、各ノードクラスタ（１７０）はさらに、
第１のプロセッサと第２のプロセッサとを含む複数のプロセッサ（７４）と、
Ｉ／Ｏサブシステム（７９）とを含み、
プロセッサとＩ／Ｏサブシステムとは、第１のポートが、クロスバーユニットと、第１の複数のプロセッサとの間に作動的に結合され、第２のポートが、クロスバーユニットと、第２のプロセッサとの間に作動的に結合され、第３のポートが、クロスバーユニットと、Ｉ／Ｏサブシステムとの間に作動的に結合されるように、ノードクラスタのノードコントローラに作動的に結合されている請求項１のシステム。
【請求項７】
複数のノードコントローラは第１のノードコントローラを含み、各ノードクラスタ（１７０）はさらに、
第１のプロセッサと第２のプロセッサとを含む複数のプロセッサ（７４）と、
ネットワーク（７３）とを含み、
プロセッサとネットワークとは、第１のポートが、クロスバーユニットと、第１の複数のプロセッサとの間に作動的に結合され、第２のポートが、クロスバーユニットと、第２のプロセッサとの間に作動的に結合され、第３のポート（２７４）が、クロスバーユニットと、ネットワーク（７３）との間に作動的に結合されるように、ノードクラスタのノードコントローラに作動的に結合されている請求項１のシステム。
【請求項８】
ノードコントローラは、プロセッサ間通信チャンネルにより互いに直接接続される請求項７のシステム。
【請求項９】
複数のノードコントローラは第４及び第５のポートを有する第１のノードコントローラを含み、第１のノードコントローラに連携するノードクラスタ（１７０）はさらに、
第１のプロセッサと第２のプロセッサとを含む複数のプロセッサ（７４）と、
メモリ（７７）と、
Ｉ／Ｏサブシステム（７９）と
ネットワーク（７３）とを含み、
プロセッサ、メモリ（７７）、Ｉ／Ｏサブシステム（７９）及びネットワーク（７３）は、第１のポートが、クロスバーユニットと、第１の複数のプロセッサとの間に作動的に結合され、第２のポートが、クロスバーユニットと、第２のプロセッサとの間に作動的に結合され、第３のポート（２７３）が、クロスバーユニットと、Ｉ／Ｏサブシステムとの間に作動的に結合され、第４のポート（２７４）が、クロスバーユニットと、ネットワーク（７３）との間に作動的に結合され、第５のポート（２７５）が、クロスバーユニットと、メモリ（７７）との間に作動的に結合されるように、ノードクラスタのノードコントローラに作動的に結合されている請求項１のシステム。
【請求項１０】
クロスバーユニットは、逐次的に受信する２つの２倍長ワードのデータを選択的に組み合わせることにより、クロスバーユニットを介して伝送される単一の４倍長ワードのマイクロパケットを形成し、各２倍長ワードは少なくとも６４ビットのデータを含み、単一の４倍長ワードは少なくとも１２８ビットのデータを含む請求項９のシステム。
【請求項１１】
メモリ（７７）は、複数のプラグ接続可能なメモリ／ディレクトリカード上に実装され、各カードは、
メモリデータの保持専用のメモリチップの第１の副集合と、ディレクトリデータの保持専用のメモリチップの第２の副集合とを含む複数のメモリチップを有し、
メモリポートはさらに、
メモリチップの第１の副集合に結合されたメモリデータバス及びメモリアドレスバスを含むメモリデータポートと、
メモリチップの第２の副集合に結合されたディレクトリデータバス及びディレクトリアドレスバスを含むディレクトリデータポートとよりなる請求項９のシステム。
【請求項１２】
複数のメモリ／ディレクトリカードの各々の、メモリチップの第２の副集合のデータ空間に対するメモリチップの第１の副集合のデータ空間の比率は、マルチプロセッサコンピュータシステムのサイズに応じた値に設定されている請求項１１のシステム。
【請求項１３】
プロセッサ間通信ネットワーク（５７５）を介して接続されノードクラスタ（１７０）として構成された複数のノードと、プロセッサ間通信ネットワーク（５７５）に作動的に結合されたノードコントローラ（７５）とを有するマルチプロセッサコンピュータシステムのノードコントローラであって、
各ノードコントローラは、
クロスバーユニット（２７９）と、
クロスバーユニットに作動的に結合された複数のポート（２７１−２７５）とよりなり、複数のポートは、第１のポート（２７１）、第２のポート（２７２）及び第３のポートを含み、第１のポートと第２のポートとは１又はそれ以上のプロセッサに接続するように構成された第１のポートタイプであり、第３のポートはメモリデータ及びディレクトリデータを含むメモリに接続するように構成された、第２のポートタイプであり、第１のポートタイプと第２のポートタイプとは異なる機能を有するが、第１のポートと第２のポートとは実質的に同一の機能を有するノードコントローラ。
【請求項１４】
ノードコントローラは単一の集積回路チップ上に形成される請求項１３のノードコントローラ。
【請求項１５】
第１のポートと第２のポートとはプロセッサと通信可能であり、第３のポート（２７５）はメモリ（７７）と通信可能である請求項１３のノードコントローラ。
【請求項１６】
メモリ（７７）は、プラグ接続可能なメモリ／ディレクトリカードとして構成され、各カードは、
メモリデータの保持専用のメモリチップの第１の副集合と、ディレクトリデータの保持専用のメモリチップの第２の副集合とを含む複数のメモリチップを有し、
第３のポート（２７５）は、
メモリチップの第１の副集合に結合されたメモリデータバス及びメモリアドレスバスを含むメモリデータポートと、
メモリチップの第２の副集合に結合されたディレクトリデータバス及びディレクトリアドレスバスを含むディレクトリデータポートとよりなる請求項１５のノードコントローラ。
【請求項１７】
複数のメモリ／ディレクトリカードの各々の、メモリチップの第２の副集合のデータ空間に対するメモリチップの第１の副集合のデータ空間の比率は、マルチプロセッサコンピュータシステムのサイズに応じた値に設定されている請求項１６のノードコントローラ。
【請求項１８】
第１のポートと第２のポートとはプロセッサと通信可能であり、第３のポート（２７４）はネットワーク（７３）と通信可能である請求項１３のノードコントローラ。
【請求項１９】
第１のポートと第２のポートとはプロセッサと通信可能であり、第３のポート（２７３）はＩ／Ｏサブシステム（７９）と通信可能である請求項１３のノードコントローラ。
【請求項２０】
ノードコントローラはさらに、第４のポートと第５のポートとを有し、第４のポート（２７４）はネットワーク（７３）と通信可能であり、第５のポート（２７５）はメモリ（７７）と通信可能であり、各ポートはクロスバーユニット（２７９）を介して互いに通信する請求項１９のノードコントローラ。
【請求項２１】
クロスバーユニット（２７９）は、逐次的に受信する２つの２倍長ワードのデータを選択的に組み合わせることにより、クロスバーユニットを介して伝送される単一の４倍長ワードのマイクロパケットを形成し、各２倍長ワードは少なくとも６４ビットのデータを含み、単一の４倍長ワードは少なくとも１２８ビットのデータを含む請求項１３のノードコントローラ。
【請求項２２】
少なくとも第１のノードコントローラ、第２のノードコントローラ、第１のノードコントローラに作動的に結合された第１の複数のプロセッサ、第２のノードコントローラに作動的に結合された第２の複数のプロセッサ、第１のノードコントローラに作動的に結合されメモリデータ及びディレクトリデータを含む第１のメモリ、第１のノードコントローラに作動的に結合された第１の入出力システム、及び第１のノードコントローラと、第２のノードコントローラとの間に作動的に結合されたプロセッサ間通信ネットワークとを含み、第１のノードコントローラが、第１のメモリに結合されたメモリポートと、入出力システムに結合された入出力ポートと、第１の複数のプロセッサの第１の副集合に作動的に結合された第１のプロセッサポート及び第１の複数のプロセッサの第２の副集合に作動的に結合された第２のプロセッサポートを含む複数の独立のプロセッサポートを含むマルチプロセッサコンピュータシステム内のユニットを結合する方法であって、
メモリポートと、第１のプロセッサポートとの間でデータを伝送し、
メモリポートと、第２のプロセッサポートとの間でデータを伝送し、
メモリポートと、入出力ポートとの間でデータを伝送し、
メモリポートと、ネットワークポートとの間でデータを伝送するステップよりなるマルチプロセッサコンピュータシステムのユニットの結合方法。
【請求項２３】
プロセッサ間通信ネットワークは、プロセッサ間通信チャンネルよりなり、さらに、プロセッサ間通信チャンネルにより互いに直接接続された第１のノードコントローラと、第２のノードコントローラとの間で直接、データを伝送するステップをさらに含む請求項２２の方法。
【請求項２４】
プロセッサ間通信ネットワークはプロセッサ間通信組織よりなり、さらに、１またはそれ以上の他のノードコントローラにも接続されたプロセッサ間通信組織を介して第１のノードコントローラと第２のノードコントローラとの間で間接的にデータを伝送するステップをさらに含む請求項２２の方法。
【請求項２５】
メモリポート、第１のプロセッサポート、第２のプロセッサポート、入出力ポート及びネットワークポートのうちの任意の２つの間でデータを伝送するステップをさらに含む請求項２２の方法。
【請求項２６】
メモリポート、第１のプロセッサポート、第２のプロセッサポート、入出力ポート及びネットワークポートのうちの任意の２つの間におけるデータの伝送は、複数のかかる伝送が同時に起こるように非ブロック方式で行われる請求項２２の方法。
【発明の詳細な説明】
【０００１】
【発明の分野】
本発明は、並列マルチプロセッサコンピュータシステムのための方法及び装置に関し、さらに詳細には、マルチプロセッサノードコントローラ回路及び方法に関する。
【０００２】
【発明の背景】
マルチプロセッサ（ＭＰ）システムは、数個から最大数百個または数千個の処理要素（ＰＥ）よりなる計算システムである。複数命令複数データ（ＭＩＭＤ）ＭＰコンピュータシステムの能力は独立したスレッドのコードを同時に実行できる能力にあるが、ＰＥの、固有な互いに非同期な状態のため、かかるシステムにおいて必要に応じて事象が静的な順序で起こるようにすることは困難である。協調通信、共有資源への逐次的アクセス、並列領域間の制御された移行などのような複数のＰＥ間の相互作用を含むプログラムシーケンスは、適正な実行を確保するために、同期（バリア及び／またはユーレカ同期）を必要とする。ルータ、ネットワーク及び同期装置及び方法に関する１つのかかる発明は、１９９７年１１月１７日付けの米国特許出願第０８／９７２，０１０号に記載されている。
【０００３】
対称分散マルチプロセッサを有する一部のＭＰシステムは、キャッシュのコヒーレントモデルを使用する。かかるシステムの１つは、１９９７年１１月１７日付けの米国特許出願第０８／９７１，１８４号に記載されている。
【０００４】
ＭＰシステムの種々の部分間の通信を改善するための改良型ノードコントローラ装置及び方法が当該技術分野で求められている。さらに、小型及び大型のシステムの両方で、性能とコストの両面で利点が得られる丁度手頃な大きさのノードコントローラが求められている。さらに、非常に高い柔軟性と性能及び速度を有するノードコントローラが求められている。
【０００５】
【発明の概要】
本発明は、高度並列処理を可能にする方法及び装置を提供する。本発明は、小型と大型のマルチプロセッサシステムの両方に使用可能であり、広範囲のシステム価格と能力に亘って優れた性能と低コストの両方を満足するノードコントローラを含む。一部の実施例では、このノードコントローラは、各々が単一プロセッサ及び／またはマルチプロセッササブシステム（各々がオプションとしてローカルキャッシュメモリを含む）をサポートする２またはそれ以上のプロセッサポートだけでなく、以下のポートタイプ、即ち入出力（Ｉ／Ｏ）、メモリ、ディレクトリ及びネットワークインターフェイスのうちの１またはそれ以上を提供する単一チップ上に実現される。
【０００６】
分散マルチプロセッサは、伝統的に、メモリコントローラと共に、ネットワークコントローラ、入出力インターフェイス及びプロセッサに接続された別個のディレクトリコントローラを用いて構成されている。本発明の種々の実施例では、メモリコントローラ（オプションとしてキャッシュコヒーレンス機能を有するディレクトリコントローラを含む）と、Ｉ／Ｏコントローラ及びネットワークコントローラは、複数のプロセッサポートを含む１つのチップ上にすべて構成されている。これにより２つの利点が得られる。第１に、任意のノード間の通信がチップ上で直接、単一のプロトコルを用いて行われるため、通信が多数のチップの境界を横断する必要がないことである。第２に、これらすべてを単一チップ上に埋め込むため、クロスバー全体の設計をチップの内部に利用する。これにより非ブロックモードの通信が可能となり、遠隔のノードがローカルノードのメモリと直接話すことができると同時にローカルノードがこれらの通信間の待ち合わせなしにそのＩ／Ｏシステムと話すことができる。これとは対照的に、バスタイプのシステムでは、１つの通信はもう１つの通信が完了するまで待機しなければならない。クロスバーを利用する本発明の実施例では、これらは同時に進行可能である。さらに、すべてのものを単一のチップ内に埋め込むことにより、この同じアーキテクチュアから小型システムを形成する方がコスト的に有利であるが、その理由は、大型システムを形成する際の大きなシステム構成をサポートするための多数の余分のチップを使用する費用が存在しないためである。
【０００７】
本発明によると、各々がノードコントローラを有する複数のノードクラスタと、複数のノードコントローラ間に作動的に結合されたプロセッサ間通信ネットワークとよりなり、各ノードコントローラは、クロスバーユニットと、クロスバーユニットに作動的に結合された複数のポートとよりなり、複数のポートは、第１のポート、第２のポート及び第３のポートを含み、第１のポートと第２のポートとは１又はそれ以上のプロセッサに接続するように構成された第１のポートタイプであり、第３のポートはメモリデータ及びディレクトリデータを含むメモリに接続するように構成された第２のポートタイプであり、第１のポートタイプと第２のポートタイプとは異なる機能を有するマルチプロセッサコンピュータシステムが提供される。
本発明の１つの局面によると、マルチプロセッサコンピュータシステムは、例えば、２個のノードコントローラが互いに接続された小型マルチプロセッサシステムまたは最大で数百個または数千個のノードコントローラがルータネットワークを介して接続されたプロセッサシステムである。このシステムの１つのかかる実施例は、第１のノードコントローラ、第２のノードコントローラ、第１のノードコントローラに作動的に結合された第１の複数のプロセッサ、第２のノードコントローラに作動的に結合された第２の複数の複数のプロセッサ、第１のノードに作動的に結合された第１のメモリ、第１のノードコントローラに作動的に結合された第１の入出力システム、及び第１のノードコントローラと、第２のノードコントローラとの間に作動的に結合されたプロセッサ間通信ネットワークを含む。この実施例の第１のノードコントローラは、クロスバーユニット、クロスバーユニットと、第１のメモリとの間に作動的に結合されたメモリポート、クロスバーユニットと、第１の入出力システムとの間に作動的に結合された入出力ポート、クロスバーユニットと、プロセッサ間通信ネットワークとの間に作動的に結合されたネットワークポート、クロスバーユニットと、第１の複数のプロセッサの第１の副集合との間に作動的に結合された第１のプロセッサポート、及びクロスバーユニットと、第１の複数のプロセッサの第２の副集合との間に作動的に結合された第２のプロセッサポート含む複数の独立のプロセッサポートを有する。このシステムの一部の実施例では、第１のノードコントローラは、単一の集積回路チップ上に形成される。
【０００８】
システムの一部の実施例では、メモリは、複数のプラグ接続可能なメモリ／ディレクトリカード上に実装され、各カードは、メモリデータの保持専用のメモリチップの第１の副集合と、ディレクトリデータの保持専用のメモリチップの第２の副集合とを含む複数のメモリチップを含む。さらに、このメモリポートは、メモリチップの第１の副集合に結合されたメモリデータバス及びメモリアドレスバスを含むメモリデータポートと、メモリチップの第２の副集合に結合されたディレクトリデータバス及びディレクトリアドレスバスを含むディレクトリデータポートとを有する。一部のかかる実施例では、各メモリ／ディレクトリカード上のメモリチップの第２の副集合のデータ空間に対するメモリチップの第１の副集合のデータ空間の比率は、マルチプロセッサコンピュータシステムのサイズに応じた値に設定される。
【０００９】
システムの一部の実施例では、クロスバーユニットは、このユニットを介して伝送するために逐次的に受信される２つの２倍長ワードのデータを１つの４倍長ワードのマイクロパケットにし、各２倍長ワードは少なくとも６４ビットのデータを、単一の４倍長ワードは少なくとも１２８ビットのデータを含む。
【００１０】
本発明の別の局面によると、上述のシステムの１またはそれ以上に使用可能な方法が提供される。この方法は、メモリポートと、第１のプロセッサポートとの間、メモリポートと、第２のプロセッサポートとの間、メモリポートと、入出力ポートとの間、またメモリポートとネットワークポートとの間のデータの伝送を含む。
【００１１】
この方法の一部の実施例はさらに、プロセッサ間通信ネットワークにより互いに直接接続された第１のノードコントローラと、第２のノードコントローラとの間におけるデータの直接伝送を含む。
【００１２】
本発明の一部の実施例はさらに、１またはそれ以上の他のノードコントローラに接続されたルータチップを介する第１のノードコントローラと、第２のノードコントローラとの間における間接的なデータの伝送を含む。
【００１３】
【好ましい実施例の説明】
好ましい実施例の以下の詳細な説明では、本願の一部を形成し、本発明の実施態様である特定の実施例を例示する添付図面を参照する。本発明の範囲から逸脱することなく他の実施例を使用したり構造的な変更を加えたりすることができるのが分かるであろう。
【００１４】
本発明の一部の実施例は、本願の一部として引用する１９９７年１１月１７日付けの米国特許出願第０８／９７２，０１０号にさらに記載されるようなルータ、ネットワーク、及び同期装置及び方法を含む。
【００１５】
一部の実施例は、一般的にコヒーレントなキャッシュモデルを使用しないマルチプロセッサシステムを実現するものである。他の実施例として、本願の一部として引用する１９９７年１１月１７日付けの米国特許出願第０８／９７１，１８４号に記載されるようなキャッシュコヒーレンス機構及び方法が含まれる。詳説すると、本発明は、コスト的に有利であり、スケールダウンするときだけでなくスケールアップ（即ち、多数のプロセッサを使用）するとき優れた性能を発揮するノードコントローラを提供する。
【００１６】
図１は、１またはそれ以上のノードクラスタ１７０を有する本発明のマルチプロセッサコンピュータシステム１００の実施例を示すが、各ノードクラスタ１７０は、０個からＮ個のプロセッサ７４、０個からＭ個のメモリ７７及び０個からＩ個の入出力（Ｉ／Ｏ）サブシステム７９を有する。ユーザのニーズに応じて、相互接続ネットワーク１７５を二次元のトーラス、Ｎ次元のハイパーキューブまたはルータ７６間の任意の他の適当な相互接続ネットワークとして構成可能である。１つの実施例において、各ルータ７６は８個のポート２１１を有し、各ポート２１１は他のルータ７６への接続または各々が０個乃至それ以上のプロセッサ要素（ＢＥ）７４を有する１個乃至Ｎ個のノードコントローラ７５への接続のために使用可能である。従って、一部の実施例では、ルータ７６を、ＰＥ７４またはメモリ７７または入出力サブシステム７９を具備しないネットワーク１７５の相互接続ノード（即ち、ノードクラスタ１７０内でなくてブロック１７５内の回路）だけとして使用可能であり、そのポートはすべて他のルータ７６への接続に使用される。
【００１７】
図１に示すような他の実施例では、一部のポート２１１はネットワーク１７５を介して他のルータ７６に接続するために使用され、他のポート２１１は、ノードコントローラ７５を介して複数のＰＥ７４、メモリ７７及び入出力サブシステム７９への接続に使用される。
【００１８】
図２は、６個のルータ接続部７２（即ち、他のルータ７６への接続部）及び２つのノードコントローラとの接続部７３（チャンネル７３とも呼ぶ）（即ち、８個のプロセッサ要素７４に接続される２つのノードコントローラ７５への接続部）を備えたルータ７６を有するノードクラスタ１７０のかかる実施例を詳細に示す。１個乃至４個のＰＥ７５は、各ノードコントローラ７５に接続され、１個またはそれ以上のバンクのメモリを有する単一のメモリ７７を共有する。一部の実施例では、各バンクは、並列アクセスされる２個またはそれ以上のメモリカードを含む。一部の実施例では、各メモリカードは、メモリチップの別個の副集合を含み、１つの副集合はメモリデータ専用、別の副集合はディレクトリデータ専用である（かかるカードはメモリ／ディレクトリカードとも呼ばれることがある）。各ノードコントローラ７５は、オプションとして、入出力サブシステム７９に接続されるが、このサブシステムは、ワークステーション、ディスクシステム及びテープシステムなどのようなデバイス及び従来型高速入出力ポートへの接続を可能にする。
【００１９】
１つの実施例において、各ノードコントローラ７５は、最大で５個のインターフェイスポート、即ち、ＰＩ０ ２７１、ＰＩ１ ２７２、ＩＩ２７３，ＮＹ２７４及びＭＩ５を有する。プロセッサポートインターフェイス０（ＰＩ０）２７１は、プロセッサ７４の第１の副集合２４１と接続し、プロセッサポートインターフェイス１（ＰＩ１）２７１はプロセッサ７４の第２の副集合２４２と接続し、入出力ポートインターフェイス（ＩＩ）２７３は入出力システム７９と接続し、ネットワークポートインターフェイス（ＮＩ）２７４は図２に示すようなルータ７６かまたは以下の図４に示す別のノードコントローラ７５に接続される。メモリインターフェイス（ＭＩ）２７５はメモリ７７に接続される。
【００２０】
図３は、単一のノードクラスト１７０を有するマルチプロセッサシステム３００の別の実施例であり、その単一のルータ７６はルータ接続７２がなく、８個のノードコントローラへの接続部（チャンネル）７３（即ち、３２個のプロセッサ７４に接続される８個のノードコントローラ７５への接続部）を備えている。これは、ルータ７６（８個のポート２１１を備えている）及びノードコントローラ７５（最大４個のＰＥ７４に接続可能である）の実施例について最大数のＰＥ７４である。各ポート２１１は最大で１個のプロセッサクラスタ３７０に接続され、各プロセッサクラスタ３７４は最大で４個のＰＥ７４と、ＰＥ７４のための共有メモリ７７と、共有入出力サブシステム７９とを有し、これらはすべて１つのノードコントローラ７５を介して接続されている。この実施例において、ルータ７６は他のいずれのルータ７６にも接続されていない。勿論、他の構成では、すべてのポート２１１を使用する必要はなく、またすべてのプロセッサクラスタ３７０が４個のＰＥ７４により完全に占拠される必要はない。
【００２１】
図４は、ルータチップを具備しないが、２つのノードコントローラ７５が単一のプロセッサ間通信チャンネル７３を用いて互いに接続されたマルチプロセッサシステム４００の実施例を示す。この実施例は最大８個のプロセッサ７４を受け入れる。これは、ノードコントローラ７５（各々が最大４個のＰＥ７４に接続可能である）のこの実施例にとって最大数のＰＥである。各ノードコントローラ７５は最大１個の他のプロセッサクラスタ３７０に接続され、各プロセッサクラスタ３７０は、最大４個のＰＥ７４、ＰＥ７４の共有メモリ７７、及び共有入出力サブシステム７９を有し、これらすべては１つのノードコントローラ７５を介して接続されている。勿論、他の構成では、すべてのプロセッサクラスタ３７０が４個のＰＥ７４により完全に占拠される必要はなく、さらに別の実施例では８個以上のプロセッサがサポートされている。
【００２２】
システムアーキテクチュア
本発明のシステムアーキテクチュア（「ＳＮ１」と呼ぶこともある）は、図５に示すように、１個またはそれ以上のプロセッサ／メモリノード３７０が、帯域幅がプロセッサの数と共に変化する汎用相互接続ネットワーク（プロセッサ間通信組織とも呼ぶ）５７５に接続されたものである。種々の実施例において、プロセッサ間通信組織５７５は、図４に示すように２つのノードコントローラ７５に直接結合される単一のプロセッサ間通信チャンネル７３のような簡単なものか、または多数のノードコントローラ７５を接続する大きなネットワークを含むことができる。かかる１つの大きなネットワークは、図１に示すような相互接続されたルータ７６のネットワークを含むが、他の実施例として当該技術分野においてよく知られた他の相互接続ネットワークを含むものもある。
【００２３】
ＳＮ１システムのハイレベル編成
ＳＮ１における大域的共有メモリ５７７は区分化されており、メモリ７４の一部が４個のプロセッサ７４の各群に分散（即ち、局所的に接続）されている。この区分化により、プロセッサ７４の近くに割り当てられたメモリの待ち時間が非常に短くなると共に、一般的な相互接続により任意のプロセッサ７４からのすべてのメモリ５７７への大域的アクセスが可能となる。ディレクトリ系プロトコルを用いて、すべての大域メモリ５７７に亘りキャッシュコヒーレンスを維持する。ＳＮ１システム内の入出力（Ｉ／Ｏ）５７９もまた区分化されており、入出力インターフェイス接続ポイント（ＩＩポート）２７３は各ＣＰＵ／メモリノード３７０上にある。分散メモリ５７７と同様に、各入出力ポート２７３は各プロセッサ７４からアドレス可能である。
【００２４】
１つの実施例において、各ＣＰＵ／メモリノード３７０は「ブリック」モジュールに実装されている。大きなＣＰＵ構成を、複数のノードモジュールを用いて構成することが可能である。これらのノード３７０はルータ７６を介してリンクに接続され、その各々はブリックとして実装されている。種々の実施例において、各ノード３７０は最大４個のＴ−ＲｅｘタイプまたはＭｅｒｃｅｄタイプのプロセッサ、各々がある大きさの主メモリ及びその関連の大きさのディレクトリメモリを有するメモリディレクトリバンク７７、相互接続ネットワーク（クレイリンク２と呼ぶこともある）を介するマルチノード相互接続のための接続ポート２７４、及び入出力サブシステム７９へのＩＩ接続ポート２７３を含む。相互接続ネットワークの接続ポートは全二重であり、各方向において１６００ＭＢ／秒である。入出力接続ポート（「ＸＴＯＷＮ２」と呼ぶこともある）は全二重で、１２００ＭＢ／秒であるが、旧型の入出力デバイスまたは旧型のＳＮ０システムからのグラフィックス装置とのインターフェイスのために８００ＭＢ／秒に遅くすることも可能である。
【００２５】
クレイリンク２への接続ポートは、ルーティングネットワーク１７５と接続される。ルーティングネットワーク１７５は、ケーブルを用いてノードとノード及びそれぞれの間で接続される８個のポートを有するルータチップ７６により構成されている。ＳＮ１ファミリーで用いる相互接続トポロジーを次の部分で説明する。
【００２６】
ＤＩＭＭモジュール６００
ＤＩＭＭモジュール６００（図６Ａを参照）は、２９４ピンの垂直にプラグ接続可能なＰＣＢ（印刷回路板）であり、主メモリ及びディレクトリメモリのための部品を有する。
【００２７】
ＤＩＭＭガイドベース６７１及びレバー６７２
図６Ｂは、４個のＤＩＭＭモジュール６００を有するＤＩＭＭガイド６７３である。ＤＩＭＭモジュール６００は特別に背が高いため、外部ガイド／サポート部分６７３が必要である。ガイド６７３は、４個のモジュール６００を支持し、空気の流れを許容し、挿入及び取り出し機構を備えている。１つの実施例において、１つのガイドの設計を図６Ｂに示すようにＤＩＭＭの両端に使用する。
【００２８】
レバー６７２は、ガイド６７１の頂部上にある。これらのレバー６７２は、ＤＩＭＭモジュール６００の挿入、取り外し及び保持を行うにつき機械的な利点を提供する。
【００２９】
近い方の端部のＤＩＭＭラッチは図６Ｂでは閉じた状態である。遠い方の端部のラッチは開いた状態にある。
【００３０】
一部の実施例において、ノードコントローラ７５は、単一の集積回路チップ４７５上で実現され（図７Ｂを参照）、１つの特別な実施例では、ベットロックと呼ぶ単一のチップ上で実現される。ベットロックはノードコントローラ７５のこの特定の実施例のことであるが、本発明の他の実施例も企図されている。特に、一部の実施例では以下に説明するある特定の特徴部分を省略し、他の実施例では、以下に述べる特徴を備えるか或いはある特定の組み合わせの特徴部分を付加または削除したものである。
【００３１】
システムの概観
１つの実施例において、本発明は、１乃至４０９６個のプロセッサを用いる分散共有メモリマルチプロセッサである（ベットロックＳＮ１ノードの実施例は最大１０２４個のプロセッサをサポートするが）。ＳＮ１は、単一のアドレス空間をサポートし、機械全体に亘りキャッシュコヒーレンスを与える。ＳＮ１は多数のノードを有するように編成され、各ノードはローカルメモリをプロセッサに接続し、ルータネットワークへのポートと、入出力サブシステムへのポートを提供する。ベットロックは、ＳＮ１ノードの最初の実施例である。各ベットロックは、最大４個のＴ−Ｒｅｘタイププロセッサ、大域メモリの一部、キャッシュコヒーレンスを維持するディレクトリ、クロストーク入出力サブシステムへのインターフェイス及び図７Ａで示すようにＳＮ１（ＳＮ１ネット）ルータネットワークへのインターフェイスをサポートする。
【００３２】
ノードコントローラ２７５（ベットロック）の概観
ベットロックチップは、４つのタイプの外部インターフェイスと、ローカルチップ資源へのインターフェイスとの間の接続性を与える。各インターフェイスは、ユニットとして知られるベットロックを細分化したものにより管理される。ユニットの名前はそれらが管理するインターフェイスに因んで付けられており、それらは入出力インターフェイスユニット（ＩＩ）、ネットワークインターフェイスユニット（ＮＩ）、メモリ／ディレクトリインターフェイスユニット（ＭＴ）、２個のプロセッサインターフェイスユニット（ＰＩ  ０及びＰＩ  １）及びローカルブロック（ＬＢ）である。これらのユニットは、図７Ｂで示すように中央クロスバー（ＸＢ）により接続されている。ベットロックは、最大２５６個のＳＮ１ネットノード（１０２４個のプロセッサ）の共有メモリシステムをサポートする。
【００３３】
種々の内部ベットロックインターフェイスは、ＸＢユニットを介してメッセージを送信することにより通信する。ＳＮ１キャッシュコヒーレントプロトコル仕様に説明されるように、システムのベットロックを回避するために、メッセージは２つのグループ、即ち要求と応答に分離される。メッセージが入力ポート（クロストークプロトコル）またはネットワークポート（ＳＮ１ネットプロトコル）を介して到達すると、メッセージがベットロックの内部フォーマットに変換される。メッセージがこれらのポートの１つから出るときは逆のことが起こる。
【００３４】
図７Ａは、本発明の１つの実施例のノードコントローラ７５を示す。図７Ｂは、ノードコントローラ７５の１つの実施例であるが、さらにノードコントローラ７５へのまたはその内部でのデータの流れを示す。図７Ｂはまた、単一のチップ４７５内で実現されたノードコントローラ７５を示す。図７Ｃは、ノード３７０内のノードコントローラ７５を示し、本発明の１つの実施例の種々のインターフェイス幅及びクロック速度を記載している。図７Ｄは、ノードコントローラ７５の１つの実施例のメッセージのヘッダー及びデータフォーマットを示す。
【００３５】
ベットロック内部メッセージフォーマット
ベットロックの内部メッセージ（ノードコントローラ７５の１つの実施例）（図７Ｄを参照）は、ヘッダーフレーム（フレームは、概念的または論理的に単一のユニットである１群のビットである）を有する。この用語は、その情報を処理するに必要なクロックサイクルの数でもなければ、同時に「印加」された（ベットロックのＸＢまたはルータネットワークもしくはクロストークインターフェイスを介して）後、メッセージの合計６４乃至１０２４ビットのデータを運ぶ１またはそれ以上のデータフレームが続くビットの単位サイズを意味するものでもない。図４は、ベットロックの各フレームのフォーマット（ヘッダー、２倍長ワードデータ及び４倍長ワードデータ）を示す。ヘッダーフレームの後に０、１、２または１６個の２倍長ワードのデータフレームまたは、ＭＤインターフェイス上において０、１または８個の４倍長ワードのデータフレームがある（任意特定のベットロックＭＤインターフェイスは、これらデータフォーマットのただ１つを使用する）。ベットロックのクロスバーユニット上の大部分のインターフェイスは、単一のクロックサイクルにおいて１６０ビットよりなる１つのマイクロパケットフリット（ヘッダー、２倍長ワードのデータまたは４倍長ワードのデータを運ぶ）を受入れ／伝送する。ベットロックのクロスバーユニットは、各マクロパケット（入力ポートから出力ポートへの）を２つのクロックサイクルで処理する。可能な時はいつも、クロスバーユニットは、２個の受信２倍長ワードを組合せて単一の４倍長ワードのマイクロパケットにする。
【００３６】
各フレームがベットロックＸＢユニット内に入ったり出たりする際、制御信号（図４に示し、各表１に詳細に記載されている）は、以下の情報の全部または一部を指示する。
【００３７】
そのフレームの行先はどのローカルベットロックユニット（即ち、ＸＢポート）か、
そのフレームが要求か応答か（即ち、使用するバーチャルチャンネルを定義するクラス）、
このフレームが現在のメッセージで終了するか否かである。
【００３８】
Ｘｓｅｌフィールドはヘッダーについてのみ有効であり、データフレームは常に行先ユニットへのヘッダーに続くことに注意されたい。
【００３９】
図７Ｅは、ソース及び補充フィールドのフィールドフォーマットを示す。図７Ｆは、制御フィールド７４１または制御フィールド７４７の制御信号の使用法の表を示す。図７Ｇは、フィールド７４３のデバイスＩＤの符号化法を示す。図７Ｈは、ＸＤ２７９のメッセージのヘッダーにおけるソースフィールドの内容の説明に用いる用語を示す。
【００４０】
図７Ｉ、７Ｊ、７Ｋ、７Ｌ、７Ｍ及び７Ｎは、内部のベットロックメッセージソース及び補充フィールドを示す。図７Ｏは、ＸＢ２７９のためのＸｓｅｌ選択符号化法の表（表４）である。
【００４１】
ヘッダーフレームは、ソース及び補充フィールドと、メッセージタイプ（命令）フィールドと、３７ビット（３９：３）の有効アドレスを含む。その後に続くデータフレームは、６４または１２８ビットのデータに、アンコレクタブルデータエラー（ＵＣＥ）を示すビットを加えたものを含む。ＵＣＥビットは、そのデータワードについてメモリのダブルビットエラーのようなアンコレクタブルエラーに遭遇するとセットされる。４倍長ワードのデータフォーマットは、ＤａｔａＥｖｅｎとＤａｔａＯｄｄの２倍長ワードに分割される。４倍長ワードを狭いインターフェイスに沿う伝送のために２倍長ワードに分解する必要がある時はいつも、ＤａｔａＥｖｅｎが最初に伝送される。２倍長ワードの有効なデータが、４倍長ワードのインターフェイスに送られる場合、それはＤａｔａＥｖｅｎにあると仮定する。
【００４２】
図７Ｇ（表２）は、ヘッダーフレームのソース及び補充フィールドに含まれる値を特定する。これらのフィールドに用いる識別子の一般的なフォーマットは図５に示す。ノードＩＤは、ルータネットワークアドレス（３９：３２）システムがデフォルトのＭモードで動作している場合）に対応する。ノードアドレス空間（ノードにおいてアドレス可能メモリの合計）は従ってアドレス（３１：０）であり、ノード当たり最大８ＧＢバイトのアドレス可能なメモリを許容する。図７Ｈは、ヘッダーのソースフィールドの内容を説明するための用語を示す。ソースフィールド（図７Ｅに示す）は以下の１つを示す。
【００４３】
ネットワークインターフェイスから出るディレクトリ訂正メッセージ（ＸＦＥＲまたはＳＨＷＢのような）について、それはコヒーレンシー要求イニシエータ（即ち、ソース）を識別する。
【００４４】
ネットワークインターフェイスへ向かう他のメッセージについては、送られた要求の上のソースフィールドは、コヒーレンシートランズアクションにおける第３のパーティー（図６に示す）の行先アドレスを示す。
【００４５】
他のすべてのメッセージについては、コヒーレンシー要求イニシエーター（即ち、ソース）を示す。ベットロックの内部には２つのタイプのインバリデイトが存在する。
【００４６】
ＬＢに送られるだけのインバリデイトプラスビットベクトルは、ローカルインバリデイト（ＬＩＮＶＡＬ）と呼ぶ。
【００４７】
ＰＩ（ローカルまたは遠隔）に送られる通常のインバリデイトは（ＩＮＶＩＬ）と呼ぶ。
【００４８】
図７Ｉ−７Ｎに示す表は、すべてのベットロックトランズアクションのソース及び補充フィールドの内容を詳細に示すものである。この表に用いる略語の一部を以下に説明する。
【００４９】
Ｉｎｉｔは、元のトランズアクションのイニシエータであり、表２に示すように３ビットのフィールドがデバイスＩＤ符号化を指示する。
【００５０】
Ｓｅｎｄは、現在のメッセージを送るノードの８ビットのノードＩＤである送り手である。
【００５１】
Ｏｗｎｅｒは、このヘッダーのアドレスにより照会されるキャッシュラインのオーナーであり、訂正メッセージを発生するために使用される。オーナーはイニシエータもしくは送り手のいずれかである。
【００５２】
Ｐｒｉｏｒｉｔｙは、コヒーレンス要求の優先レベルである。
【００５３】
ＡｃｋＣｎｔは、インバリデイトが送られた結果予想されるアクノーレッジカウントである。この番号は送られるインバリデイトの総数から１を引いたものである。ＷＲＢは、現在の書き込みトランズアクションの書き込み要求バッファ資源のタグ番号である。
【００５４】
Ｔａｒｇｅｔは、介入ターゲットの識別子である。
【００５５】
Ｔ−Ｒｅｘ／ＢＣａｓｔは、いずれのＴＲｅｘがインバリデイトを送るかを特定する２ビットのフィールドであり、両方のＴＲｅｘへの放送を特定することもできる。
【００５６】
ＸＢ２７９の概観
図８は、ＸＢ２７９の１つの実施例のブロック図である。ノードコントローラ７５のクロスバーユニットＸＢ２７９は、２つのＰＩ２７０、ＭＤ２７５、ＩＩ２７３、ＬＢ及びＮＩ２７４Ｄユニットの間の構成で効率的な態様での接続性を与える。ＸＢ２７９は、各ユニットをＸＢ２７９に接続する物理的チャンネルに亘って多重化された２つのバーチャルチャンネルに沿うベットロック内部フォーマットでのメッセージの流れをサポートする。ＸＢ２７９は、バッファ／待ち行列バイパス経路及び調停指針により軽負荷の下で最小の待ち時間になるように、また、バーチャルチャンネルごとの調停要求及び波面調停により重負荷の下で最大のスループットを与えるように設計される。各対のユニット間のメッセージの順序は、各バーチャルチャンネル内で維持される。単一のソースバーチャルチャンネルから異なる行先ユニットへ向けられたメッセージは、任意の順序で伝送することができる。種々のバーチャルチャンネルに沿うメッセージは、インターフェイスに亘って、またはフリットレベルにおける物理的チャンネルに沿ってインタービービングを施してもよい。
【００５７】
以下のユニット中心の（ＸＢ中心でない）頭字語を用いる。
【００５８】
ｘＩＱは、ＸＢ２７９からメッセージを受けるｘユニットと入力待ち行列（例えば、ＰＩＱ＝プロセッサインターフェイスの入力待ち行列）である。
【００５９】
ｘＯＱは、ＸＢ２７９への送信を待つメッセージを保持するｘユニットの出力待ち行列（例えば、ＮＯＱ＝ネットワークインターフェイスの出力待ち行列）である。
【００６０】
１つの実施例において、ＸＢ２７９は、ノードコントローラ７５のほぼ中心に物理的に位置するが、その理由は、機能ユニット（ＭＤ２７５、ＩＩ２７３、ＬＢ２７８、ＮＩ２７４及び２つのＰＩ２７１、２７２）の各々と直接通信しなければならないからである。ＸＢ２７９は、各々が機能的ユニットと直接インターフェイスする１組のモジュールに分割され、１つのセットが中央の接続と調停を行う。
【００６１】
図７Ｏは、ＸＢアーキテクチュアのブロック図である。図示の表示法では、デュアルＦＩＦＯは単一のバッファメモリ構造内の２つのバーチャルチャンネルＦＩＦＯのことであり、クワッドＦＩＦＯは類似の構造内の４つのバーチャルチャンネルのことである。デュアルバンクは、ＦＩＦＯ書き込みポートの幅のことであり、メモリ出力待ち行列（ＭＯＱ）は、デュアルバンクのＦＩＦＯが３．２ギガビット（秒）の帯域幅を維持するのを必要とする。
【００６２】
データパスクロスバー
この中央に位置するモジュールは、８個の入力と６個の出力を有するクロスバーを含む。このクロスバーのデータパスは、すべての入力及び出力につき６７ビット幅であり、５ナノ秒のクロックでポート当たり１．６ＧＢ／秒のデータ帯域幅を与える。単一のサイクルがクロスバーのデータパスを通過するのに費やされ、データは、クロスバーのデータパスへ送られる前に登録され、出力マルチプレクサの後のレジスタ内に流れ込む。
【００６３】
データの転送は、ユニット出力の待ち行列とタンレムで働くアービターにより調和される。データ、有効及びフリットタッグ情報はソース出力の待ち行列により与えられる。クロスバーセレクトラインは、アービターにより制御され、無駄な待ち時間を最小限に押さえるためのバスとして登録される。
【００６４】
ユニット出力の待ち行列
ユニット出力の待ち行列（ＯＱ）は、出力されるユニットメッセージ（行先はＸＢ２７９）のバッファリングを行うと同時にデータパス資源の調停を行う（ＸＢの術語はユニット中心であり、ＸＢ中心でない）。ある特定のケースでは、それらは同等でないＸＢとユニットの帯域幅の間の速度マッチングを行う（ＭＯＱ、ＮＯＱ2、ＩＯＱだけでなくコア（ＰＯＱ、ＩＯＱ）に対して非同期のユニットの同期ポイント）。
【００６５】
ＯＱは２つの主要なインターフェイス、即ち、ユニットインターフェイスとアービター／データバスインターフェイスとを有する。ユニットインターフェイスは各ユニットの特異な条件に合うように特注されており、以下の章で詳細に説明する。アービター／データバスインターフェイスはＯＱにわたって均等である。
【００６６】
全てのＯＱインターフェイスにわたって、メッセージの行先は行先ユニットに関連するＸｓｅｌを用いて特定される。表４（図８に示す）に示すこの符号化法は、ルータネットワークヘッダーフォーマットと首尾一貫している。（１つの実施例では、本発明は、１９９７年１１月１７日付けの米国特許出願第０８／９７２，０１０号、１９９７年１１月１７日付けの米国特許出願第０８／９７１，５８８号、１９９７年１１月１７日付けの米国特許出願第０８／９７１，５８７号、１９９７年１１月１７日付けの米国特許出願第０８／９７１，１８４号、１９９７年１１月１７日付けの米国特許出願第０８／９７１，５９１号（これら全てを本願の一部として引用する）に記載されたような、ネットワークインターフェイスにおいて必要とされるフォーマットの変換量を最小限に抑えるルータネットワークを使用する）。ＸＢ２７９は、ベッドロック内部メッセージの行く先をアドレスするためにルータネットワーク符号化のスーパーセットをサポートする。
【００６７】
Ｖａｌｉｄ（ユニットから出力待ち行列への）は、１個のヘッダーまたは２個の連続するデータフリットに対応するＮＩ２７４を除き、単一のサイクルフリットに対応する。Ｔａｉｌは、Ｖａｌｉｄと一緒にくるＮＩ２７４を除きメッセージの最後のフリットと一緒にくる。表４を示す図７Ｏを参照されたい。Ｘｓｅｌ（２）を０にセットすると、４つのＳＮ０コンパチブル符号化が得られる（ローカルブロックがベクトル及びＮＩレジスタＰＩＯを行先としてＮＩ２７４にとって代わると、Ｘｓｅｌ）もサブノードセレクトビットとして考えることができる。
【００６８】
空のＯＱを介する待ち時間を減少するためにメッセージバッファは完全にバイパスされるかあるいはデータが同じサイクルでバッファに書き込みそして読み出される。クロスバー調停の詳細はユニットから隠れているが、これは適正なデータの転送及びＯＱインターフェイス上の流れ制御だけに関連がある。
【００６９】
ユニット入力待ち行列
ユニット入力待ち行列（ＩＱ）は、ＸＢ２７９を通過したがその行先ユニットにより未だ処理されていないデータのバッファリングを行う。それらの主要な役割はＸＢ２７９と、受信ユニットとの間の速度マッチングと同期を行うことである。それらは、サイズが適正である場合、ＸＢメッセージの流れを小さい帯域幅ユニットの影響から隔離し、大きい帯域幅のユニットが、大きい速度での転送が可能になるまで入来パケットを蓄積できるようにする。
【００７０】
ＸＩ２７４はＸＢ２７９と同期で帯域幅がマッチしているため、ＮＩ２７４はＩＱを持たない。ＩＱからの充填レベル情報を、アービターが利用してＯＱからのメッセージの流れを制御する。ＮＩ２７４の場合、ＳＮ１ネットの流れ制御情報を用いてＸＢ２７９にわたるバックプレッシャーを与える。
【００７１】
ＭＤ２７５は、ＸＢ２７９と大きい帯域幅のメモリンターフェイスとの間の速度マッチングを行うために入力バッファを必要とする。ＭＤ２７５と、入力バッファとの間の堅い結合を可能にするため、バッファは、ＸＢＩＱ内でなくてＭＤユニット２７９内に配置される。ＭＤ２７５もまた、アービターへの流れ制御信号を与える。
【００７２】
Ｖａｌｉｄ（ＸＢ２７９からＩＱまたはユニットへの）は、単一のサイクルフリットに対応しているために全ての待ち行列にわたって首尾一貫していることに注意されたい。Ｔａｉｌは、２サイクル転送の最初のサイクルにおいて印加されるＮＩ２７４は除きメッセージの最後のフリットに対応する。
【００７３】
アービター
アービターは、バイパス調停により無競争のポートの少ない待ち時間の調停を行い、また資源が飽和すると波面調停により効率的で高い利用を可能にする。アービターは全てのユニットに対し公正さを確保し、またバーチャルチャンネル内のメッセージの細分化を許容しないことにより正当性を確保する。
【００７４】
アービターによりサポートされるデータ転送の基本ユニットは２つのクロックを持つものであり、単一のクロックヘッダーの後に未使用サイクル、単一のクロックデータがきて、その後に未使用サイクルがくるか、または２つのデータクロックより成る。単一クロックによるデータの転送は、奇数長のデータペイロードの最後の転送にのみ使用されることに注意されたい。アービターはサイクルの１つおきにユニットからＸＢが帯域幅の２サイクルの要求を受け、同じサイクルにおいて特定の行先に対して帯域幅を付与する。
【００７５】
エラーの取り扱い
ＸＢ２７９実施例の一部では、以下に述べる根本原因の一部を有するエラーに遭遇する。
【００７６】
ベッドロックにおける（ユニットまたはＸＢ２７９それ自体）設計ミス。
【００７７】
それらの影響がＸＢ２７９へ到達する前にユニットによりフィルータリングを受けない外部コンポーネントの故障。
【００７８】
システム構成エラーである。
【００７９】
これらのエラーは多くの態様で明らかにあるが、クロスバーは以下のタイプのエラーだけを検知する。
【００８０】
ユニットからＯＱへの無効のＸｓｅｌ行先符号（ＢＡＤ  ＸＳＥＬ）。
【００８１】
ユニットからＯＱまたはＯＱからＩＱへの待ち行列のオーバーフロー。
【００８２】
空の待ち行列のＯＱの付与またはＩＱの読み出しによる待ち行列のアンダーフロー。
【００８３】
ＩＱからユニットへの前方向の進行の欠如。
【００８４】
ユニットからＯＱへのＴａｉｌの喪失（ＴＡＩＬ  ＴＩＭＥＯＵＴ）である。
【００８５】
スピューモード
クロスバーは、特定のＯＱを出る全てのデータまたは特定のＩＱに入る全てのデータＮＩ２７４に対してエコーとして送る（スピュー）ことのできるデバッグモードを提供する。ＮＩ２７４に一旦到達するとデータはネットワークフォーマットに変換され、ＳＮ１ネットポートから通常通り送出されて、リンクに埋め込まれた適当なテストチップ（リンク上の信号の検査を可能にするもの）により捕捉される。このモードは、ＮＩ２７４のポートをスピュートラフィック及び通常のトラフィックにより共有できないため、単一のノードシステムのデバッギングにとってのみ有用であることに注意されたい。ＰＯＱ１つの実施例において、プロセッサインターフェイスの出力待ち行列の各ＰＩ１７０に対して１つの、２つのインスタンシエーションＰＯＱ０  ８１２及びＰＯＱ１  ８１６が存在する。他の実施例では、ＰＩポートのさらに多いインスタンシエーションまたは１またはそれ以上の他のポートの複数のインスタンシエーションが使用される。
【００８６】
各ＰＩＱは、ＰＩクロック周波数でＰＩ２７１または２７２に対する要求及び応答メッセージを受ける。ＰＯＱは、内部的には、ＰＩデータをコアクロックの領域に入れるシンクロナイザーを有する。コアクロック領域では、ＰＯＱは、ＸＢアービター及びデータパスへＰＩ要求及び応答を与える。ＰＩ２７０及びコアが同期的に作動している時、セット可能な同期モード（ｐｉｎ）がある。これにより、ＰＯＱはシンクロナイザーをバイパスして１．５サイクルをセーブする。
【００８７】
ＰＩ２７１または２７２は、それぞれＰＯＱ８１２または８１６により流れ制御される。ＰＯＱは、要求及び応答待ち行列の新しいデータが利用可能な自由なエントリーの数を示す。自由なエントリーの数が０に到達すると、ＰＩ２７０はもはやデータをＰＯＱへ送ることができない。
【００８８】
ＰＩ２７０は、エントリーの数を知る必要がなくＴ−Ｒｅｘ＋プロセッサの流れ制御を適正に行える（これを行うには簡単なフルフラッグでは十分ではない）。
【００８９】
各ＰＩ２７０には２つのプロセッサが接続されているため、その命名は、例えばＰＩ  ＰＯＱ  ＲｑＶａｌｉｄ  Ｐ０、ＰＩ  ＰＯＱ  ＲｑＶａｌｉｄ  Ｐ１である。
【００９０】
ＰＯＱのコアサイドのクロック領域は、応答チャンネルにおいて訂正メッセージを作成する特別な論理を有する。Ｔ−Ｒｅｘ＋からの一部の介入応答は、命令のタイプ及び補充フィールドに応じて、データのあるまたはデータのない訂正メッセージがホームノードのメモリへ送られることを必要とする。以下の式は、訂正メッセージのタイプを詳細を示すものである。
【００９１】
訂正ビット（ビット５５）がセットされると、訂正メッセージ命令は以下のうちの１つである
【００９２】
0004472909.tif 000002
【００９３】
応答バッファからエントリーが自由になるとＲｐＦｒｅｅが印加されるが、ＲｑＷｒＦｒｅｅはパケットが２つのフリットより長い場合に限り印加される。
【００９４】
読み出し要求は２つのフリットより長くないため読み出しのためにＲｑＷｒｆｅｅは印加されないが、ＰＩ２７０はエラーがある場合部分的書き込みを可能にする２つのエントリーを確保する必要があるため、ブロックの書き込み（フリット３−１７）のために１５個のＲｑＷｒＦｒｅｅパルスが印加される。グラフィックスの要求（エラーが予想されない）のためには、エントリーが自由になる度にＲｑＷｒＦｒｅｅが印加される。
【００９５】
ＰＩＱ
プロセッサインターフェイス入力待ち行列（ＰＩＱ）は、別個の要求及び応答チャンネルを有するＦＩＦＯ対である。ＰＩＱのＸＢ側はコアクロック速度で走るが、ＰＩＱのＰＩ側はＰＩクロック速度で走る。従って、ＰＩＱは非同期境界を実現する。有効なデータがＰＩＱのＰＩ側に現れると、ＰＩ２７０がＰＩＱからデータを読み出すまで有効なラインが印加される。
【００９６】
ＭＯＱ
メモリ帯域幅全体を保持するために、メモリユニットの出力待ち行列（ＭＯＱ）ブロックは、３つの別個のＸＢ２７９のポートにアタッチされた３つの複製された待ち行列構造（ＭＰ０、ＭＰ１、ＭＭＱ）を与える。ＭＤ２７５は、メッセージを各待ち行列にそれらの行先に応じて送る。各ＰＩ２７０に向けられた単一の待ち行列（ＭＰ０及びＭＰ１）と、ＬＢ、及びＮＩ及びＩＩメッセージが保持された第３の待ち行列（ＭＭＱ）が存在する。
【００９７】
各ＭＯＱ構造は、別個のヘッダー（ＭＯＱＨ）及びデータ（ＭＯＱＤ）ＦＩＦＯにより構成されている。ＭＯＱＨとＭＯＱＤとは、ＭＤ２７５データパスへの接続を能率的にする別個のインターフェイスを有する。ＭＯＱＨは、大部分の外に出るトラフィックが応答チャンネル上にあるため、要求及び応答チャンネル（ほとんど応答チャンネル）に不平等に分割される。ＭＯＱＨとＭＯＱＤもバイパスの経路を有する。ＭＤ２７５からの要求をサポートする限られたセットのデータは全体的にＭＯＱＨを介して移動するため、ＭＯＱＤの要求チャンネルが不要になる。ＭＤ２７５からの３．２ギガバイト／秒のデータ速度を受け入れるため、ＭＯＱＤは、ＭＤ２７５により同時に書き込まれ且つＸＢ２７９により交互に読み出されるデュアルバッファを有する。
【００９８】
２倍長ワードのデータを転送する場合、ＭＤ２７５は４倍長ワードのインターフェイスの両側でそのデータを送ることができる。ＤｗＯｆｆｓｅｔ信号は、ＤａｔａＥｖｅｎまたはＤａｔａＯｄｄの何れを使用されるかを示す。
【００９９】
遠隔読み出し待ち時間を減少するために、ＭＤ２７５は、時として全てのチェックが完了する前にＭＯＱにヘッダーを与える。これを行うには２つのシナリオが存在する。
【０１００】
１．Ｈｔｄｒ（Ｒｑ、Ｒｐ）ｄｓｔが印加され、ヘッダーそれ自身が転送される間次のサイクルにおいて、ＭＤ２７５はＥＣＣエラーと遭遇し、メッセージをキャンセルしなければならない。ＭＤ２７５はこの第２のサイクルにおいてアボート信号を印加して、ヘッダーをドロップこのメッセージに関連する全ての状態をクリアすべきことを示す。同じ（第２の）サイクルにおいて、別のＨｔｄｒ（Ｒｑ、Ｒｐ）Ｖａｌｉｄ（同一チャンネル上）が印加され、そのメッセージをキャンセルしなければならない。
【０１０１】
２．ＮＩ２７４へ向かうメッセージ（遠隔ノードへの途中）については、ヘッダーがＭＯＱへ転送された後そのサイクルにおいてアクセスエラーが検知される場合がある。これらケースでは、ＭＤ２７５は転送の第３のサイクルにおいてＡＥ信号を印加し、ＭＯＱとＭＩ２７４とは協働して各ヘッダーが確実にドロップされるようにする。このキャンセルされた転送の結果、ＸＢ２７９内にメッセージが進行中であることを示す残りの状態が残っている場合がある。ＭＤ２７５は、メッセージをＮＩ２７４に同一チャンネルに沿って再び送信することにより未処理のＸＢ状態を全てクリアするように補償する。元のＨｄｒ（Ｒｑ，Ｒｐ）Ｖａｌｉｄが第２のサイクルでアボートされておらず、第３のサイクルにおいてアクセスエラーに遭遇することを注意されたい。また、アクセスエラーに最終的に遭遇するヘッダーのすぐ後（同一チャンネル）のヘッダーをアボートしなければならないことに注意されたい。再び有効な転送を行うには、ＡＥヘッダーの後単一サイクルの遅延で十分である。第３のサイクルにおいて、ＡＥが印加される場合、ＭＤ２７５は、第２及び第３のサイクルにおいてＨｄｒ（Ｒｑ、Ｒｐ）Ｖａｌｉｄが存在しないように補償する。ＭＤ２７５と各ＭＯＤとの間の流れ制御はクレジットベースである。
【０１０２】
リセットされると、ＭＤ２７５は各ＭＯＱにおいて以下の空間が利用可能であると想定する。
【０１０３】
ＭＯＱＨにおける４つの要求ヘッダー／ＤＷデータエントリー。
【０１０４】
ＭＯＱＨにおける１２の応答／ＤＷデータエントリー。
【０１０５】
ＭＯＱＤにおける２４のＱＷデータ応答エントリーである。
【０１０６】
ＭＤ２７５は、各ＭＯＱにつき利用可能なバッファ空間のカウントを維持する必要がある。ヘッダーまたはデータサイクルを特定のＭＯＱに転送すると、ＭＤ２７５は対応のクレジットカウントを減分する必要がある。各ＭＯＱからのＨｔｅｒＲｑ／ＲｐＦｒｅｅ出力は、ＭＯＱＨにおいて単一サイクルのヘッダー／２倍長ワードのデータエントリーが利用可能になっていることを示す。ＤａｔａＦｒｅｅは、ＭＯＱＤにおいて４倍長ワードまたは４倍長ワードに整列された２倍長ワードのエントリーが利用可能になっていることを示す。
【０１０７】
図１０と、表２０（図９Ａに示す）は、ＭＤ／ＭＯＱインターフェイス信号の詳細なリストである。
【０１０８】
ＭＩＱ
ＸＢ２７９には、ＭＩＱはない。ＸＢ２７９はＭＤ２７５の入力データパスに直接ついているため、ＭＤ２７５は待ち行列のメッセージをよりよく管理できる。ＸＢの１．６ＧＢ／秒のポートは、メモリのピーク帯域幅の半分だけを提供できる。
【０１０９】
ＭＤ２７５は幾つかのＸＢソースの流れ制御を別個にするため、ある特定のソースからの要求を他のソースがそれらのバッファが空になるまで停止状態にあっても進行させることができる。
【０１１０】
遠隔読み出しの待ち時間を改善するために、ＮＩ２７４は、遠隔の読み出し要求を受けるやいなやＭＩＱへ送り、ＸＢ２７９全体をバイパスする。ＮＩ高速パスから受ける読み出し要求は投機的性質を有し、ＭＩＱがインターフェイスを他の態様で利用できない時にＭＤ２７５を介して送られるにすぎない。投機的なヘッダーは単一サイクルだけについて提示され、ＨｄｒＡｖａｉｌに関連するＨｄｒＳｐｅｃ信号として示す。
【０１１１】
ＮＩ２７４からＭＤ２７５へ送られる投機的ヘッダーはＮＩ−ＮＯＱインターフェイスの動作にいかなる意味でも影響を与えない。表２１（図１０Ａに示）は、ＸＢ２７９とＸＢ２７５との間のインターフェイス信号の詳細を示す。
【０１１２】
ＮＯＱ
ネットワークユニットの出力待ち行列（ＮＯＱ）は、ルータネットワーク（１７５）の４つのバーチャルチャンネルに直接対応する４つのチャンネルを有する。各独立のチャンネルはＦＩＦＯとして取り扱われ、各々がアービターへ要求を送る。ＮＯＱに戻される認可を制御することにより、アービターは、４つのバーチャルチャンネルがベッドロックの残りによりサポートされる２つのバーチャルチャンネルに正しく合流するようにする。
【０１１３】
データは、ＸＢ２７９内のＯＱと、ＩＱとの間に用いると同じ態様により２サイクルフリットでＮＩ−ＮＯＱインターフェイスを介して転送される。Ｖａｌｉｄは、連続サイクルでＮＯＱに印加することができない。Ｖａｌｉｄの各印加は、単一サイクルのベッドロックヘッダーの後の未使用サイクルか、または、単一サイクルまたはデータの後の未利用サイクルもしくは２つのサイクルのデータを表す。偶数長さのペイロードは一連の２サイクルデータフリットとして送られ、奇数長さのペイロードの最後の転送は有効な単一サイクルのデータの後のデッドサイクルである。
【０１１４】
ＮＩ−ＮＯＱインターフェイス上の単一サイクルとデュアルサイクルのデータフリット間には明らかな違いはない。ＮＯＱは、２つを区別するためにヘッダーのＶａｌｉｄパルスが設けられたサイズフィールドを用いる。ＮＯＱは、ヘッダーの命令サイズビットを復号し、メッセージへの最後のフリットの最初の２倍長のデータだけをサンプリングする。各２倍長ワードのデータについてクロスバーのフォーマットでＵＳＥビットが規定されるが、それはＮＩ２７４からＮＯＡへのデータフリットの最初のサイクル上でのみ有効である。
【０１１５】
ＮＩ２７４は、リンクレベルのチェックが完了する前にフリットをＮＯＱへ送る。リンクレベルのエラーによりフリットをドロップしなければならない場合、ＮＩ２７４はＶａｌｉｄを印加した１サイクル後にＳｑｕａｓｈを印加する。
【０１１６】
ＮＯＱ−ＮＩインターフェイスの流れ制御は、ＮＩ２７４がＮＯＱのバッファ深さを知ることを必要とする。ＮＩ２７４は、消費された全てのバッファ（Ｖａｌｉｄ転送により）と、空になった全てのバッファ（ＮＯＤからのＦｒｅｅパルスにより示す）とを追跡しなければならない。バッファの深さは、記憶可能な２サイクルフリットの数として測定され、Ｆｒｅｅパルスは２サイクルフリットバッファの解放を示す。Ｓｑｕａｓｈの前のＶａｌｉｄはＮＯＱによりドロップされるため、Ｆｒｅｅパルスが得られない。
【０１１７】
ＮＯＱタイミング図である図１１を参照されたい。この図は、ＳＮネットＬＬＰと内部クロスバー信号とを含む。これらは、ＳＮ１ネットからクロスバーへのだめになった予想待ち時間を説明する手助けとなるが、ＮＩ−ＮＯＱインターフェイスに直接影響を与えない。インターフェイス信号は表２２（図１Ａに示す）にリストされている。
【０１１８】
ＮＯＱの機能
ＮＩ２７４は、入来ＸＢトラフィックの入力待ち行列を持たない。ＮＩ２７４とＸＢ２７９との直接の接続により、メッセージは、ＸＢ２７９によりサポートされる２サイクルフリットフォーマットでそのインターフェイスを必ず伝送される。ＤａｔａＶａｌｉｄ信号が印加される毎に、フリットの最初のサイクルが送信される。各ヘッダーの後の未使用のサイクルにより、ＮＩ２７４はデッドロックヘッダーを全速で２サイクルルータネットワークヘッダーに拡張できる。ＮＩ２７４が最小の待ち時間で出力メッセージをフォーマットするのを可能にするため２サイクルフリットの最初のサイクルにはＤａｔａＴａｉｌタッグが付けられる。インターフェイス上において単一データサイクルと二重データサイクルおフリットの間にはく別はない。
【０１１９】
ＸＢによりサポートされる２つのトラフィックチャンネル（要求／応答）は、クロスバーには見えない態様で、ＮＩ２７４により４つのルータネットワークチャンネル上に逆多重化される。ＮＩ２７４は４つのネットワークバーチャルチャンネルからの流れ制御情報を組み合わせて、クロスバーにより見える２つのチャンネルにバックプレッシャーをかける。
ＸＢ−ＮＩプロトコルは、メモリシステムからの待ち時間を減少する最適化により複雑化になる。遠隔のメモリ要求に対する最小の待ち時間での応答をサポートするために、ＭＤ２７５は、アクセス権のチェックが完了する前に応答ヘッダーをＸＢ（ＮＩ２７４に向けられている）へ送る。アクセスチェックの結果エラーが見つかると、ＭＤ２７５はアクセスエラー（ＡＥ）信号をＭＯＱとＮＩ２７４へ印加する。応答ヘッダーがＭＯＱとクロスバーを最小の待ち時間で通過する場合、ヘッダーＤａｔａＶａｌｉｄはＡＥ信号と同時に到達する。ＭＯＱからのＡＥＶａｌｉｄ信号のＮＩ２７４への印加は、この最小の待ち時間経路をとる時は必ず印加される。ＮＩ２７４において、ＭＤ２７５からのアクセスエラー（ＡＥ）ビットがＭＯＱからのＡＥＶａｌｉｄビットと組み合わされて、図１２に示すようにＸＢＤａｔａＶａｌｉｄをゲートする。フルセットのＸＢ／ＮＩインターフェイス信号の説明については、表２３（図１１Ｂに示す）を参照されたい。
【０１２０】
ＬＯＱ
ローカルブロックの出力待ち行列（ＬＯＱ）は、ＦＩＦＯ対である。それは、出力されるインバリデイトがネットワークの帯域幅全体で送ることを確実にするに十分なサイズであることだけが必要である。ＬＯＱバイパス経路を持たない。ＬＯＱインターフェイス信号は表２４（図１２Ａに示す）に詳細に示されている。ヘッダーまたは単一サイクルのデータは、
【０１２１】
0004472909.tif 000003
【０１２２】
であれば転送されると考える。Ｒｑ及びＲｑＲｅａｄｙは一緒に印加してもよい。Ｒｑ、ＲｑＡｖａｉｌは互いに排他的である。
【０１２３】
ＬＩＱ
ローカルブロックの入力待ち行列（ＬＩＱ）は、ローカルブロックへ独立の要求と応答インターフェイスを与える。要求ＦＩＦＯはローカルブロックへの他の要求だけでなくインタリデート要求をバッファし、ローカルノードの４つのプロセッサから出力可能な粗いインバリテートを全て保持するに十分な大きさを持つ必要がある。
【０１２４】
ＬＩＱがＬＢへ送る要求フリットを有する場合、ＲｑＡｖａｉｌ信号を印加する。ＬＢは、要求フリットを受けることができる時ＲｑＲｅａｄｙを独立に印加する。同じサイクルにおいてＲｑＡｖａｉｌとＲｑＲｅａｄｙとが印加されるとデータの転送が起こったと規定する。ＬＢは、複数のＡｖａｉｌ信号が存在する場合、複数のＲｅａｄｙ信号を印加することにより同一サイクルで複数のフリットを消費できる。
【０１２５】
ＬＩＱを流れる応答メッセージだけは、ベクトル応答である。ＬＢは、ベクトル応答が全速で常に消費できるのを補償する。ＬＢはまた、ＬＢに間違って到達する任意の応答メッセージが全速で消費されるように補償する。その結果、ＬＩＱからのＶａｌｉｄ信号が、Ｒｅａｄｙ／Ａｖａｉｌプロトコルでなくて応答転送を示すために使用され、ＬＩＱには応答の記憶は割り当てられない。ＬＩＱ／ＬＢインターフェイス信号を、表２５（図１２Ｂに示す）で詳細に示す。
【０１２６】
ＩＯＱ
ＩＯインターフェイスの出力待ち行列（ＩＯＱ）は、別個の要求及び応答チャンネルを有するＦＩＦＯ対である。ＩＩ２７３からのデータは、ＩＩ２７３の速度でＩＯＱに書き込まれるがこの速度はベッドロックのコアクロックに関し、非同期的である。データはデッドロックのコア速度でＸＢ２７９により読み出される。
【０１２７】
実現を容易にするため、ＩＯＱとＰＯＱとを同じソースロジックからインスタンシエーションする。即ち、それらは論理的に同一である。種々の実施例において、論理がＩＩ２７３またはＰＩ２７０に作用するかにより特別の特長を作動可能または作動不可能状態にする。例外は、ＩＯＱにおける調停トリガーである。ＩＯＱにおける調停トリガーにより、ＩＯＱは、調停始める前にヘッダーを見た後、プログラム可能なサイクル数だけ増すことができる。これによりＩＯＱは、未使用のサイクルなしにアービターとバスとを最適に利用できるように十分なエントリーを持つ機会を与えられる。調停トリガーレジスタは、キャッシュラインを転送するため、ＩＩ周波数／コア周波数のサイクル数に設定可能である。
【０１２８】
ＩＩＱ
ＩＯインターフェイスの入力待ち行列（ＩＩＱ）は、別個の要求及び応答チャンネルを有数ＦＩＦＯ対である。ＸＢ２７９からのデータ、ベッドロックコアの速度でＩＯＡに書き込まれ、これはＩＩクロックに関し非同期的である。それは、別個の要求及び応答レジスタを介してＩＩ２７３に送られる。
【０１２９】
実現を容易にするためにＩＩＱとＰＩＱとは同じソースロジックからインスタンシエーションされる。即ち、ＩＯＱにおける調停トリガーを除き論理的に同一である。ＩＯＱにおける調停トリガーにより、ＩＯＱは、調停を始める前に、ヘッダーを見た後プログラム可能なサイクルの数だけ待つことができる。これにより、ＩＯＱには、未使用のサイクルなしにＸＢ帯域幅（アービター及びパス）を使用できるようにする十分なエントリーを持つ機会が与えられる。調停トリガーレジスタは、キャッシュラインを転送するためにＩＩ周波数／コア周波数のサイクル数に設定可能である。メッセージのＴａｉｌが見える場合、それはプログラムされた数のサイクルの間待たずに直ちに調停することができる。
【０１３０】
アービター及びデータパスインターフェイス
アービターは、クロスバーの帯域幅を公正且つ効率的に付与するために、バーチャルチャンネル毎の要求と、ＯＱからのメッセージフレーム情報とを、行先ＩＱユニットからの流れ制御情報と組み合わせる。軽負荷の下で短い待ち時間を、また重負荷の下で高い効率を得るために、アービターは、２つの帯域幅要求インターフェイス、即ち、各々を取り扱うアービターの実現方法により命名されたバイパスアービターインターフェイスと、波面アービターインターフェイスとをサポートする。
【０１３１】
スイッチは、バーチャルチャンネルータグＯＱソースからＩＱまたはユニットの行先へのテイルビットと共にデータを運ぶ。
【０１３２】
バイパス調停
アービターは、短い待ち時間及び固定した優先調停の手段としてバイパス調停をサポートする。ＯＱが空でアイドリングド状態にある場合、新しい要求が待ち時間を最小限に抑えるためにバイパス調停を利用できる。バイパス調停を始めルータために、ＯＱは、クロックサイクルの始めにその適当な要求ラインを加える（全ての要求ラインの要約については以下のＸＢインターフェイスの章を参照されたい）。要求されたＩＱがフリーである場合そして進行中のコンフリクトするバーチャルメッセージが存在しない（ＭＩＰの場合）場合、バイパスアービターはＩＱを要求するＯＱへ認可する。次のクロックにおいて、ＯＱはデータをＸＢデータパス上に与えて、サイクルの始めでスタートしなければならない。このプロセスはＦＩＦＯの読み出しを完了するに十分な時間をＯＱに与えないために、ＯＱは、ＦＩＦＯ読み出し段をバイパスし、ＸＢ２７９へ直ちに伝送するためにデータを用意する必要がある。
【０１３３】
実施を簡略化するため、ＯＱがバイパスアービターから帯域幅を要求できる時についての制限がある。バイパス要求は他のチャンネル上に未処理のＭＩＰが存在しない限り空の待ち行列から行うことが可能である。
【０１３４】
Ｎサイクル速く要求を行うことができるようにするため、ユニットはＸＢ大尉域幅を必要とするが最終的にはそれを利用できないことを考慮する必要がある場合がある。この問題を解決するために、アービターは投機的なバイパス要求をサポートする。バイパスの認可を受けると、データはデータのバーチャルチャンネル及びＸｓｅｌを有するＸＢデータパスへ送られる。これらが登録された認可値にマッチする場合、データは行先ＩＱで有効と考えられるが、そうでなければ要求は投機的であると考えられ無視される。
【０１３５】
バイパスアービターはＸＢ  ＢＹＰＡＳＳ  ＥＮレジスタを介して非作動状態にすることができる。非作動状態になると、ｂｙｐＧｎｔは決して印加されず、全てのメッセージの転送が波面アービター１５００により制御される。
【０１３６】
波面調停
アービターは、波面調停をサポートし、それは調停毎の認可の数を最大限にすることによりＸＢの帯域幅をより効果的に利用し、エイジ機構を介してＯＱを要求するものに対して公平性を与える。ＯＱは常に波面調停を要求することができ、ＦＩＦＯのヘッドにおいて有効なパケットを有する全ての行先に対して波面調停要求をする必要がある。波面アービターは、より多い要求を受ければより効率的に認可を割り当てることができる。
【０１３７】
ＯＱは、サイクルの始めにその波面調停要求を出す必要がある。同じサイクルの終わりに向けて、アービターはＯＱへ認可を与える。そうすると、ＯＱはＦＩＦＯの読み出しを完了するために１つの完全なサイクルを有し、従って次のサイクルでＸＢ２７９にデータを与える必要がある。
【０１３８】
図１４は、ＸＢアービター１４００（ＭＯＱフィルータを示す）の１つの実施例のブロック図である。調停要求が波面アービターに到達する前に、それらはフィルータブロック１４００を通って送られる。フィルータブロックは、２つのメッセージの流れが１つのバーチャルチャンネル上で混合されるのを防止する。ＯＱ要求と同じ行先に向いたバーチャルチャンネルＭＩＰが他に存在しない場合、その要求はフィルータブロックから波面アービター１５００へ送られる（図１５を参照）。波面アービターは、最悪の状態のタイミングパスを最小限に抑えるため、横に傾いているが、マトリックス状に構成されている。波面マトリックスの行はＯＱソースを表し、一方列はＩＱの行先を表す。波面アービターの各タイルはフィルータリングを受ける調停要求ラインの終点であり、特定のＩＱを要求するする特定のＯＱを表す。ＩＱは１つの調停ラウンドで幾つかのＩＱを要求できる。ＯＱは、ラウンドにつき最大値１ＩＱが与えられる。波面アービターはＭＯＱを３ＯＱとして取り扱うが、その理由はＭＯＱが３つのデータ流を同時に与えるからであることに注意されたい。従って、ＭＯＱは調停ラウンドで最低３つの認可を受けることができる。
【０１３９】
図１５の左上方の隅に最も近い波面調停タイルは最初に評価され、従って最も高い優先度を有する。特定のタイルにおいて要求が認可される場合その情報は右下方に伝えられるが、その理由は、タイルを認可するとその行フリー（ＲＦｒｅｅ）及び列フリー（ＣＦｒｅｅ）ラインが外れるからである。独立のタイル内では、ＲＦｒｅｅ及びＣＦｒｅｅラインが共に印加される場合に要求が認可されるだけである。ＸＢ２７９には、各々が異なる優先度セットを有する合計６個の波面アービターが存在する。図１５に示す波面アービターの構造は優先度が固定されており、ＰＯＱ０はＰＩＱ０につき最上位の優先度を、ＰＯＱ１はＬＩＱにつき最上位の優先度を有することに注意されたい。ＸＢ２７９の６個の波面アービターはそれぞれ、異なる優先順位を表し、何れのＯＱが特定のＩＱに向けられた最も古い年代のパケットであるかによりアービターは使用する波面アービターの１つを選択する。
【０１４０】
アービターとＯＱとの間のａｒｂ／ｇｎｔインターフェイス。
【０１４１】
ＸＢの要求及び認可はデータの２クロック前にパイプラインされるため、ＯＱバッファメモリのフルサイクルを、データをデータパスに提示する前に読み出すことができる。図１５Ａは、１例としての波面アービター信号の表（表２９）
クロスバー調停の公正さ
公正さと前方への進行を確実にするため、アービターは可能な限りチップ上に最も古いａｒｂを認可しようとする。最も古いのは、ＯＱで実現されアービターへ送られるエイジングプロトコルにより決定される。バーチャルチャンネル待ち行列のヘッドに到達する新しいヘッダーはエイジ０を受ける。メッセージが完全になるまで、このエイジはアービターにより決定される速度で増分される。アービターにより決定されるエイジング速度は、ＸＢ  ＡＧ  ＷＲＡＰレジスタを介してプログラム可能である。バイパス調停は公正でないが、バイパス認可を受けない任意のメッセージは直ちに波面調停にいき、これは公正である。波面要求は、バイパス要求よりも高い優先度を有する。
【０１４２】
アービターの優先度モジュールは、各ＯＱからのエイジを常に比較する。その好ましいエイジＸｓｅｌフィールドに従って最も古いエイジが常に選択され優先度を与えられる。同点の場合、優先度ブロックはラウンドロビーポインタに従って勝者を選ぶ。ポインタは認可の結果とは無関係に各認可サイクルで前進する。エイジが高いレベルに前進する前にバーチャルメッセージがカットオフされるのを防止するためロビンポインタは、ＯＱのうちの少なくとも１つが８またはそれ以上のエイジ（その最大値の半分）を持つまでは前進しない。
【０１４３】
優先度モジュールは、全てのＯＱの間のエイジの比較を完了するまで完全なクロックサイクルを必要とする。この遅延のため、優先度情報は常に認可の決定を１サイクルだけ遅らせる。新しいメッセージがこの遅れにより前のメッセージのエイジを引き継ぐのを防止するためメッセージのテイルフリットが認可を受ける場合、ＯＱからの次の要求が、あたかも１つの要求サイクルでエイジが０であるように取り扱われる。
【０１４４】
エイジが同じである場合、アービターは勝者を選択するために擬似ランダムの解決機能を使用する。これは、エイジが０ｘｆの最大値に飽和する時またはアービターのエイジ機能が非作動状態である時に重要である。同点になると勝者はプールからランダムに、またはＯＱを調停することにより選択される。擬似ランダム数は、１５ビットの線形フィードバックシフトレジスタ（ＬＦＳＲ）を用いて発生される。このＬＦＳＲは多項式Ｘ15＋Ｘ＋１により駆動され、これは２15のクロック毎に非繰り返し態様で０と１の等しいバランスをとる。
【０１４５】
クロスバー流れ制御
アービターのパイプライン深さを取り扱うため、幾つかの流れ制御信号が各ＩＱ（またはＩＱが存在しない場合はユニット）により提供される。待ち行列の充填レベルに応じてＦｕｌｌ及びＦｕｌｌＩｎ１信号を印加する必要がある。待ち行列の充填レベルは、クロスバーからの有効な転送の後のサイクルで更新する必要がある。
【０１４６】
ＦｕｌｌＩｎ１は、ヘッダーまたは最大２つのデータサイクルより成る１またはそれより小さいクロスバーフリットが利用可能な空間がある時はいつも印加する必要がある。Ｆｕｌｌは、単一のクロスバーフリットを取り扱うために利用可能な十分な空間がない時は必ず印加しなければならない。ヘッダーとデータが別個に記憶される待ち行列では、何れのための空間が足りないことにより、Ｆｕｌｌ／ＦｕｌｌＩｎ１を認可する必要がある。図１６は、クロスバーデータＶ（Ａｌｉｂ）及びＦｕｌｌ、ＦｕｌｌＩｎ１信号の間の関係を示すタイミング図である。
【０１４７】
アービター接続性
アービター内の信号は、ソースユニットを指示する２つの大文字（Ｐ０、Ｐ１、Ｍ０、Ｍ１、ＮＯ、ＩＯまたはＬＯ）の後に作用（ＡＲＢ、ＧＮＴ、ＭＩＰ）が続きその後に行先の入力ユニットを示す２つの大文字（ＰＩ、ＭＩ、ＮＩ、ＩＩ、ＬＩ）が続くように命名されている。表３０（図１６Ａを参照）は、各待ち行列が入力待ち行列を要求するために使用可能なバーチャルチャンネルを要約したものである。表３１（図１７を参照）は、各待ち行列が入力待ち行列を要求するために使用可能なバーチャルチャンネルを要約したものである。
【０１４８】
データバスクロスバーインターフェイス
クロスバーデータパスに沿うデータ転送は、データ有効（ＤａｔａＶ）制御信号で認定され、バーチャルチャンネル（ＤａｔａＶｃｈ）及びメッセージテイル（ＤａｔａＴ）情報でタグをつけられる。単一のサイクルがそれを通過すると経過し、データはクロスバーのデータパスへ提示される前に登録され、出力マルチプレクサの後レジスタに流入する。クロスバーセレクトラインは、アービターにより制御され、だめな待ち時間を最小限に抑えるために１つのホットバスとして登録される。
【０１４９】
ＸＢ構造
以下の章は、各ＸＢ待ち行列構造を別個に説明するものである。
【０１５０】
ＰＯＱ構造
ＰＯＱ構造は、以下に述べるＩＯＱ構造と類似である。
【０１５１】
ＭＯＱ構造
ＭＯＱは、別個のヘッダー（ＭＯＱＨ）及びデータ（ＭＯＱＴ）待ち行列に分割される。ＭＯＱＨは、各バーチャルチャンネルにつき１つの、２つの独立のＦＩＦＯ（先入れ先出しレジスタを含む）データＭＯＱＤは、応答のみのデータＦＩＦＯである。ＦＩＦＯの設計は、ＭＯＱのためのＤＡＭＱ（動的割り付け複数待ち行列メモリ）の設計に優先して選択されたが、その理由は、ＭＤ２７５からの性能に敏感なトラフィックがＤＡＭＱ制御構造から有意な利点が得られない予測可能な性質を持つからである。ＦＩＦＯは制御ロジックのオーバーヘッドを減少し、別個で独立のＦＩＦＯにより、要求及び応答のトラフィックを任意にインターリービングすることができる。
【０１５２】
ＭＯＱデータバッファ
図１７は、ＭＯＱデータバッファ１７００のブロック図である。要求メッセージデータは完全にＭＯＱＨを進む。短いデータ応答は、ＭＤ２７５の何れのセクション（ヘッダー／ディレクトリ対データ／メモリ）がそれらを発生したかに応じて何れかの待ち行列を通る。長い（キャッシュライン）データ応答は常にＭＯＱＤを通る。
【０１５３】
ＭＯＱ要求及び応答ＦＩＦＯは、適当なＦＩＦＯをメモリにより構成される。ＭＯＱＤは、ＭＤ２７５から完全な帯域幅トラフィックを受けるようにダブルバンクのＦＩＦＯを使用するが、それらのバンクはＸＢ２７９の帯域幅にマッチするように交互に読み出される。ＭＯＱＨ  ＦＩＦＯは、データパスにおける複数のレベルを減少し且つＦＩＦＯのオーバーヘッドを節約するために、要求と応答のＦＩＦＯの間で共有される。
【０１５４】
デュアルバンクのＭＯＱＤは、１組のクオーターキャッシュライン（ＱＣＬ）応答バッファ（１つのＱＣＬ＝各バンクにおける２つのクロック）として管理される。ＭＤ２７５からのキャッシュライン応答は４つのＱＣＬ書き込みより成り、全ての部分的な応答（Ｆ＆ＯＰを含む）は全部のＱＣＬを占める。ＭＯＱＨは、単一クロックヘッダーだけでなくヘッダー＋単一データパケットを含む。ＭＯＱＨ応答ヘッダーは、そのヘッダーに幾つのＭＯＱＤエントリーが関連するかを求めるために、それらがＭＯＱを出る時に復号される。
【０１５５】
ＭＤ２７５はメモリへ要求を出力する前にＭＯＱ空間を確保しなければならないため、ＭＤ２７５は充填レベルのＭＯＱＤ及びＭＯＱＨのシャドウコピーを維持する。流れ制御は、エントリー（単一のヘッダーまたはデータのＱＣＬ）が排出されたことを示す信号により待ち行列毎に行われる。
【０１５６】
ＮＯＱ構造
ＮＯＱは、ＥＳ１ネットネットワークバーチャルチャンネル受信バッファを含む。４つのバーチャルチャンネルバッファはそれぞれ、１６個のエントリーの深さを有し、そこでは、各エントリーがルータネットワークのフリット−ヘッダーまたは１２８ビットのデータに対応する。各チャンネルはヘッダーとデータの任意の組み合わせを含んでもよい。ＮＯＱバッファは、４つの独立のＦＩＦＯとして構成される。
【０１５７】
ＮＯＱバッファ
ＮＯＱのために、制御構造のオーバーヘッドを減少させるため、ＦＩＦＯがＤＡＭＯに優先して選択された。性能重要メッセージは、ＭＤ２７５への読み出し要求及びＰＩ２７０への読み出し要求となる傾向があり、これらのメッセージタイプは別個のバーチャルチャンネル上を進むため、それらは互いに干渉しない。ＭＤ２７５へのライトバックメッセージは、ＭＤ２７５への読み出しメッセージと要求チャンネルを共有するが、この効果はＭＤ２７５の要求が読み出しを好みそしてネットワークにおいてバーチャルチャンネルの適用により幾分対抗されるため読み出しが空のチャンネルを占めるのを奨励される。４つのバーチャルチャンネルの各々はＸＢ調停の独立のＦＩＦＯケーブルを有するため、ネットワークバーチャルチャンネル適応の効果はベッドロックＸＢ２７９へ繰り越される。
【０１５８】
ＮＯＱの４つの論理ＦＩＦＯは、デュアルバンクのＦＩＦＯ構造にわたって実現される。この構造により、各ＦＩＦＯは６５ビットの幅を有し且つヘッダーが両方のバンクにわたって書き込み及び読み出しをするようにしなければならない。
【０１５９】
ＩＯＱ構造
ＩＯＱは、ＩＩ２７３からのトラフィックを、ハブコアクロック領域に同期させる必要がある。これは、グレーコードカウンタに適用される標準のダブルシンクロナイザーで行われる。ＰＯＱがハブコアの側でメッセージを受信すると、それは、メッセージ全体が受信された段階でＸＢ２７９の調停を行う。これは、高い帯域幅ＸＢ２７９がＩＯＱ  ＦＩＦＯをアンダーランニングするのを防止するため、ブロック長さのメッセージにつき行われる。ＩＯＱは独立の要求及び応答ＦＩＦＯに分割されるが、最もそれらは同一のバッファメモリＦＩＦＯを共有する。
【０１６０】
ＰＩＱ構造
ＰＩＱは、ＸＢ２７９からデータを受け、ＰＩ２７０により読み出されるようにＦＩＦＯに書き込む。要求及び応答チャンネルの各々につき６４個のエントリーが存在する。同期モードでは、データをＸＢ２７９からＰＩ２７０へバイパスすることが可能である。
【０１６１】
ＭＩＱ構造
ＭＩＱは、３つのＦＩＦＯにより実現された４つの論理ＦＩＦＯに分割される。ヘッダーは単一バンクの要求／応答ＭＩＱＨにおいてバッファされ、デュアルバンクの要求／応答ＭＩＱＤは関連のデータを保持する。ＭＩＱＤバッファは、ＭＤ２７５への要求データが応答データよりもより普通であるため、３つのブロック要求エントリーと１つのブロック応答エントリーに分割される。
【０１６２】
ＭＩＱは常に、単一のヘッダーをＭＤ２７５へ送ルータだ１つのバーチャルチャンネルが有効なヘッダーを含む場合、ＭＩＱは有効なヘッダーを提示し、要求か応答かを示す。ＭＩＱが両方のチャンネルで有効なヘッダーを有する場合、ＭＤ２７５がその応答チャンネル全体にわたる信号を印加しない限り、応答チャンネルがＭＤ２７５に対して提示する。ＭＤ２７５がヘッダーを消費する準備状態にある場合、それはＨｅａｄｅｒＲｅａｄ信号を印加し、それがそのエントリーを待ち行列から自由にする。
【０１６３】
ＩＩＱ構造
ＩＩＱは、１．６ＧＢ／秒のコアデータ速度でＸＢ２７９からデータを受け、それを、要求または応答ＦＩＦＯの何れかのＧＲＡに書き込む。書き込みポインタがＩＯクロック領域に同期された後、それは、０．８ＧＢ／秒の速度でＩＩ２７３により読み出すことができる。ＩＩ待ち行列にはバイパスデータパスは存在しない。
【０１６４】
ＬＩＱ構造
ＬＩＱは、ＮＩ２７４からのＰＩＯ要求に対して専用の待ち行列を与える。ＰＩＯ要求はまれであるが、要求−要求ＰＩＯデッドロックを回避するため高い優先度を有する。ＬＩＮＶＡＬにサービスしながら、ＬＢはＮＩ２７４からの入来遠隔ＰＩＯ要求にサービスする能力を備える必要がある。単なる要求ＮＩ２７４はＬＢに対してＰＩＯ要求を行うことができる。要求はＦＩＦＯをバイパスし、応答は出力レジスタに書き込まれ、決してＦＩＦＯに入らない。応答レジスタは、ＬＢがサイクル毎に遅延なしに応答処理することが可能であるため自由走行型である。
【０１６５】
待ち行列のサイズ及びタイプ
１つの実施例において、ＸＢ待ち行列構造は、ＩＢＭのＣＭＯＳ６ｓ低電力レジスタレイ（ＦＩＦＯ）（バーモント州バーリントンのＩＢＭコーポレイションから市販されている）または、待ち行列のサイズがＦＩＦＯのゲートのオーバーヘッドを正当化しない場合標準のレジスタで実現される。表３２（図２１Ａに示す）は、ＸＢ２７９における各待ち行列のサイズとタイプを要約したものである。
【０１６６】
図８は、ＸＢ機能ユニットを物理的設計のために論理モジュールに分解したものを詳細に示す。
【０１６７】
メモリ／ディレクトリインターフェイス
ベッドロック（ノードコントローラ７５の１つの実施例）、メモリ／ディレクトリインターフェイス（ＭＤ）２７５は、ベッドロックシステムの全てのメモリへのアクセスを制御する。メモリの読み出し及び書き込みのような標準的なメモリコントローラ動作の実行に加えて、ベッドロックＭＤ２７５は、何れのプロセッサ及び何れのＩＯインターフェイスがシステムの各キャッシュラインを現在使用中であるかを正確に追跡する。アクセス毎に、ベッドロックＭＤ２７５はこの表（ディレクトリと呼ぶ）をチェックして、キャッシュコヒーレンスの維持に必要なメッセージを発生する。
ベッドロックＭＤ２７５は、要求の任意の単一クラスを完全に満足する十分な帯域幅を与える。換言すれば、４つの全てのプロセッサまたはＳＮ１ネットの両方向もしくは入出力インターフェイスの両方向は、完全な帯域幅でメモリにアクセスできる。ベッドロックＭＤ２７５はまた、複数の要求によりメモリにアクセス中である時帯域幅を構成且つ効率的に割り当てるに必要な調停構造を提供する。アーキテクチャー部分は、ＭＤ２７５のアーキテクチャーレベルの概観を含み、以下のトピックを包含する。
【０１６８】
メモリのアドレス
ページの取り扱い
インターフェイス
メッセージのタイプ
保護モデル
ページカウンタ
フェッチ及び動作
バックドアＥＣＣ
バックドアディレクトリ
ジャンクバス
ＳＤＲＡＭ初期化
ＤＤＲ−ＳＤＲＡＭ初期化
ディフレッシュ
内臓型自己テスト
ＳＮ０コンパチビリティ
次に、主要なアーキテクチャーのブロックを説明するが、それには３つある（図３１を参照）。
【０１６９】
放出ブロック（ＩＢ）３１１０：新しいメッセージを全て取り入れ、それらを効率的且つ公正な順序でメモリシステムの残部へ放出する。ＤＲＡＭへアドレス及び制御信号を送る
メモリブロック（ＭＢ）３１１８：ＤＲＡＭからＸＢＡＲへまたはＸＢＡＲからＤＲＡＭへデータを転送する。
【０１７０】
ディレクトリブロック（ＤＢ）３１１６：ディレクトリデータを読み出し、必要なメッセージのヘッダーを作成し、新しいディレクトリデータを計算しそしてそれを書き込む。
【０１７１】
次に、複数のアーキテクチャーブロックを横断する実施情報について述べる。
【０１７２】
ＤＤＲ同期
タイミング図
アーキテクチャー
この章はまず、メモリシステム全体の設計について詳細に説明する。以下の節は、メモリシステムの上に構築される高いレベルのアーキテクチャー部分について説明する。
【０１７３】
メモリシステム
ベッドロックメモリシステムは、ベッドロックチップ、幾つかのクロックバッファ、フラッシュＰＲＯＭ、ＵＡＲＤ、４つのバンクのＬＥＤ、及び２、４、６または８個のＤＩＭＭ（デュアルインラインメモリモジュール）を有する。各ベッドロックＤＩＭＭは、１個または２個の７２ビットサブバンクのメモリをＤＲＡＭと、１個または２個の１６ビットのサブバンクディレクトリＤＲＡＭより成る。図４２は、ベッドロックＤＩＭＭの前部を示す。２バンクＤＩＭＭでは、このＤＩＭＭの後部は前部と同じである。
【０１７４】
ＤＩＭＭは２つの群にまとめることが可能であり（またはまとめることが可能でなく）その結果１２８ビット幅のメモリシステム（＋１６ビットのＥＣＣと３２ビットのディレクトリ）が得られる。システムの種々の用途に適用できるようにするため、ベッドロックＭＤ２７５は多くの異なるサイズのＤＩＭＭをサポートする。２つのＤＩＭＭより成る各セットは同一サイズである必要がある。
【０１７５】
ベッドロックＭＤ２７５は、以下のＤＩＭＭサイズ：３２ＭＢ、６４ＭＢ、１２８ＭＢ、２５６ＭＢ、５１２ＭＢ及び１ＧＢをサポートする。表５８（図３２Ａを参照）は、ＤＩＭＭの各構成における情報（陰影をつけた行は、ＳＮ１が実際に使用する可能性が最も高いＤＩＭＭである）を示す。
【０１７６】
ベッドロックＭＤ２７５は、２つの異なルータイプのＤＩＭＭ：ＤＤＲ−ＳＤＲＡＭ−ｓｔｄ、及びＤＤＲ−ＳＤＲＡＭ−ｐｒｍをサポートする。ＤＤＲ−ＳＤＲＡＭは、アドレスを受ける速度の倍の速度でデータを出力する。特別なバージョンのＳＤＲＡＭである。全てのベッドロックシステムは、ＤＤＲ−ＳＤＲＡＭを使用する。
【０１７７】
標準型ＤＩＭＭは、メモリＤＲＡＭの２つのバンク毎に１つのバンクのディレクトリＤＲＡＭを含む。プレミアム（ＰＲＭ）ＤＩＭＭは、メモリＤＲＡＭの各バンクにつき１つのバンクのディレクトリＤＲＡＭを含む。最大１２８個のプロセッサを含むシステムは、標準型ＤＩＭＭを使用可能である。プレミアムＤＩＭＭは、任意のシステム（最大１０２４個のプロセッサ）で作動する。
【０１７８】
ベッドロックチップからＤＩＭＭへのアドレスバスは常に、１００ＭＨｚで働く。ベッドロックチップとＤＩＭＭのデータバスは、２００ＭＨｚでは働く。従って、最大帯域幅は３．２ＧＢ／秒である。
【０１７９】
ディレクトリの編成
ベッドロックＭＤ２７５は、メモリシステムのコーヒーレントなアクセス毎にディレクトリメモリをチェックすることによりシステムキャッシュコーヒーレンスを維持する。各アクセスにより状態が変化するため、ベッドロックＭＤ２７５は、データメモリの読み出しまたは書き込み動作と平行してディレクトリメモリの読み出し−修正−書き込み動作を行う必要がある。
【０１８０】
ＤＤＲ−ＳＤＲＡＭ−標準型ＤＩＭＭを有するシステムでは、メモリＤＲＡＭの２つのバンク毎に１つのバンクのディレクトリＤＲＡＭが存在する。ＤＩＭＭは２つのグループであるため、ベッドロックＭＤ２７５は、２つのバンクのメモリＤＲＡＭ（２つのＤＩＭＭにわたって広がっている）の間で２つのバンクのディレクトリＤＲＡＭ（各ＤＩＭＭにつき１個）を共有できる。その結果、ベッドロックＭＤ２７５へ３２ビットのディレクトリデータバスの何れの側からも入ることのできる事実上１６ビット幅のデータバスが得られる。標準型ディレクトリのエントリーは３２ビットであるため、それは２サイクルにわたって読み出し及び書き込みされる。図４３は、標準型ディレクトリシステム（２つのバンクのメモリＤＲＡＭと１つのバンクのディレクトリＤＲＡＭをＤＩＭＭ毎に有する）の概略図である。
【０１８１】
ＤＤＲ−ＳＤＲＡＭ−プレミアムＤＩＭＭを備えたシステムでは、メモリＤＲＡＭの各バンク毎に１つのバンクのディレクトリＤＲＡＭがある。この場合、ディレクトリバンクは、データと同じ態様で２つのＤＩＭＭにわたって広がっているため、全部で３２ビットのディレクトリデータパスを利用することができる。プレニアムディレクトリのエントリーは６４ビットであるため、２サイクルにわたって読み出し及び書き込みされる。図４４は、プレニアムディレクトリシステム（２つのバンクのメモリＤＲＡＭと２つのバンクのディレクトリＤＲＡＭがある）の単一のプレニアムＤＩＭＭの概略図である。
【０１８２】
メモリのアドレス ８個の１ＧＢのＤＩＭＭのＭモードでの最大のメモリ構成では、アドレス空間は８ＧＢである。４個の１ＧＢのＤＩＭＭのＮモードの最大の構成では、アドレス空間は４ＧＢである。ベッドロックＭＤ２７５は、２個のＤＩＭＭの各セットにつき１ＧＢの２ブロックを割り当てる。２つの物理的バンクを有するＤＩＭＭは両方のブロックを使用するが、１つのバンクのＤＩＭＭはただ１つのブロックを使用する。１組のＤＩＭＭは２ＧＢの空間を完全に占めない場合、ＯＳはメモリにその結果生じるギャップを割り当てると予想される。最小のメモリ構成は２個の３２ＭＢのＤＩＭＭまたは６４ＭＢであろう。ベッドロックＭＤ２７５によりサポートされる全てのＤＤＲ−ＳＤＲＡＭは、４個の内部（論理）バンクを含む。ベッドロックＭＤ２７５は、最も低いアドレスビット（１２８バイト）のキャッシュラインサイズのすぐ上）を用いてこれら４つの論理バンクにわたってインターリービングする。表５９（図３４Ａを参照）は、各アドレスビットが如何にして使用されるかを示す。ベッドロックＭＤ２７５は、例え小さなＤＩＭＭが各ビットを受信または解釈しなくても図示の全てのピンを駆動する。
【０１８３】
ディレクトリのアドレス
コーヒーレントな取引毎に、ベッドロックＭＤ２７５は、ディレクトリエントリーの読み出し−修正―書き込みを行う。さらに、ページカウンタの保護エントリーの読み出し及び／またはページカウンタのエントリーの読み出し−修正−書き込みを行う。ディレクトリのエントリー、保護エントリー及びページカウンタのエントリーは全てディレクトリに記憶される。表５９に示すＤＩＭＭ、物理的、論理的及びＲＡＳアドレスは、メモリ及びディレクトリアドレスの両方につき同一である。従って、ディレクトリＣＡＳアドレスはエントリーの各タイプに応じて異なる。ＣＡＳＤｉｒ、ＣＡＳＰｒｏｔ及びＣＡＳＣｏｕｎｔフィールドでは、定数は以下のように定義される：Ｄ＝０、Ｐ＝１、Ｃ＝０、ｘ＝０であり、Ｒｇｎは保護領域のビット４：０のことである。
【０１８４】
ページの取り扱い
全てのＤＲＡＭと同様に、ベッドロックで使用するＳＤＲＡＭ及びＤＤＲ−ＳＤＲＡＭは、行アドレス及び列アドレスによりアクセスされる。複数の列アドレスは余分な遅延なしに逐次的に読み出しが可能である。複数の行（ページとも呼ぶ）を変更するためには、ＤＲＡＭは古い行を閉じて新しい行を開く必要がある。このため、新しい行へのアクセスは新しい列へのアクセスよりもコストが格段に大きい。
【０１８５】
この事実にもかかわらず、ベッドロックＭＤ２７５は、常に、トランズアクションを終了した直後（その後のトランザクションのアドレスとは無関係に）その行（ページ）を閉じる。この決定は２つの理由により成された。
【０１８６】
キャッシュラインアドレスに対して４つの態様でインターリービングを行い、４つの要求の完全なパイプライニングをサポートすることにより、ベッドロックＭＤ２７５は依然として完全な帯域幅を得ることができる。
【０１８７】
複数のインターフェイス（従って複数の流れ）がメモリをアクセスする時（メモリンターフェイスが完全な帯域幅に到達できる時）、ページを開いたままにすると効率が非常に低下する。
【０１８８】
単一の流れがメモリをアクセスする間、調停ロジックの余分の帯域幅及び順序変更能力がページを開いたままにしておく場合との性能の差の大部分（全てではない）を減殺することがある。
【０１８９】
トランザクションのグループ化
フルキャッシュラインの読み出し信号は、８個の５ナノ秒サイクルで１２８ビット幅のメモリンターフェイスを移動できる。しかしながら、キャッシュコヒーレンスを維持するために必要なディレクトリの読み出し−修正−書き込みを行うには５ナノ秒サイクルが１２個必要である。このため、ベッドロックＭＤ２７５は全てのトランザクションを（可能な時はいつも）複数の対にグループ化する。このようにすると、２つの読み出し、２つの修正及び２つの書き込みが帯域幅を失うことなく２つのデータの読み出しまたは書き込みの形で起こる。ベッドロックＭＤ２７５は、任意の２つのコーヒーレントまたは完全なキャッシュライントランザクションをグループ化可能である。部分的なトランザクションは全てそれ自身で実行しなければならない。
【０１９０】
インターフェイス
ベッドロックＭＤ２７５は、ベッドロックシステムの残部をベッドロッククロスバーを介して接続する。単一の１．６ＧＢ／秒のリンクは、クロスバーからＭＤ２７５へ入るデータ及びヘッダーを取り扱う。ＭＤ２７５からクロスバーへ入るデータ及びヘッダーを、３つの１．６ＧＢ／秒のリンクが取り扱う。
【０１９１】
メモリシステムの利用を完全するために、ベッドロックＭＤ２７５は、ＰＩ０からの要求、ＰＩ１からの要求、ＮＩまたはＩＩからの要求及び応答を４つの別個のバーチャルチャンネルとして取り扱う。これを行うことにより、ＭＤ２７５は、１つの流れがそれを継続する前に競合する流れが排出されるまで待機しなければならないというボトルネックを阻止する。メッセージがＭＤ２７５（ＩＢブロック）に到達すると、それらはバーチャルチャンネルに応じて別個の入力待ち行列に書き込まれる。メッセージＭＤ２７５を出て（図３１に示すようにＭＯＱ３１１３に入る）と、それらはバーチャルチャンネルに応じて別個の出力待ち行列に（応答はＰＩ０へ、応答はＰＩ１へ、応答はＮＩまたはＩＩへ、または要求）書き込まれる。ＩＢブロック内の調停エンジンはＭＤ２７５がチャンネル間で帯域幅を公正に割り当てるようにする。
【０１９２】
メッセージのタイプ
全てのベッドロックＭＤ２７５は、高いレベルにおいてクロスバーからメッセージを受取り、応答をクロスバーへ返す。参考までに表６０（図３４Ｂを参参照）及び表６１（表３４Ｃを参照）は、ベッドロックＭＤ２７５が受信し発生する全てのメッセージを示す。ディレクトリの表（ＳＮ１キャッシュコヒーレンスプロトコル仕様に説明されている）は、特定の入来メッセージに応答して正確に何れの組の出力されるメッセージが発生されるかを決定する。
【０１９３】
保護モデル
ベッドロックシステムは、最大１０２４個のプロセッサにスケールアップ可能である。そのように大きいシステム上で単一の共有メモリのオペレーティングシステムを走らせるのはほとんど不可能である。かかるシステムを使用可能にするため、ベッドロックシステムは、同一の共有メモリベース上を走る複数のオペレーティングシステムをサポートしなければならない。一般的に、各オペレーティングシステムはそれ自身の環境を制御し、システムの残部から独立にリセットまたはリブートすることができる。単一のかかるオペレーティングシステムがシステム全体をダウンさせるのを防止するためベッドロックＭＤ２７５は、ある特定のプロセッサまたは入出力サブシステムがある特定のメモリ領域をアクセスするのを阻止する。アクセス防止に使用される情報は、ディレクトリメモリの特定の保護領域に記憶され、アクセス毎にディレクトリと共に読み出される。
【０１９４】
必要な情報量を制限するため、ベッドロックシステムは、要求を行うプロセッサまたは入出力サブシステムの領域に応じて保護情報を記憶する。システムには決して６４個以上の領域は存在しない。小さなシステム（６４個のベッドロックチップより少ないまたはそれに等しい）では、１つのベッドロックチップが１つの領域に等しい。ベッドロックチップが６５個から１２８個のシステムでは、２つのベッドロックチップが１つの領域に匹敵する。大型のシステム（ベッドロックチップが最大２５６個またはプロセッサが最大１０２４個）では、４個のベッドロックチップが１つの領域に匹敵する。
【０１９５】
概して、同一のオペレーティングシステム（セルとも呼ぶ）内の全てのプロセッサ及び入出力サブシステムは同一の保護を有する。このため、ベッドロックＭＤ２７５は、カレントセルと呼ぶ６４ビットのローカルレジスタを用いて、何れの領域がベッドロックチップと同じオペレーティングシステムの内部にあるかを特定する。これらのローカルな領域からの要求では、ベッドロックＭＤ２７５はディレクトリエントリー内の単一ビットをチェックする。他の全ての要求については、ベッドロックＭＤ２７５はシステムの各領域につき４つのビット（プロセッサの読み出し、更新及び書き込みインバリデイトにつき１つ、プロセッサの書き込み及び応答に対して１つ、入出力サブシステムの読み出し及び書き込みインバリデイトに対して１つ、及び入出力サブシステムの書き込み及び応答に対して１つ）を含むディレクトリメモリの別個の部分を読み出す。プロセッサ及び入出力システムの保護は、ファイアウォールを低くすることなしにセルを超えたＤＭＡを可能にするために分離される。読み出し、更新及び書き込みの無効は、書き込み及び応答から分離されるが、それにより２つの段階よりなるセルの除去プロセス（最初に読み出しを許容せず、キャッシュラインをホームノードに引いた後最後に書き込み及び応答を許容しない）を可能にする。保護エントリーにアクセスする方法についての詳細は、ＳＮ１プログラミングマニュアルを参照されたい。
【０１９６】
ＲＥＡＤ、ＲＤＳＨ、ＲＤＥＸ、ＲＥＸＵまたはＵＰＧＲＤ要求がアクセスンないラインをヒットする場合、ベッドロックＭＤ２７５は通常の応答の代わりにＡＥＲＲ（アクセスエラー）を返信する。ＷＩＮＶ要求がアクセスのないラインをヒットする場合、それはメモリに書き込みをせず、ＷＥＲＲ（書き込みエラー）を返信する。ＷＢ要求またはＳＨＷＢ、ＳＸＷＢまたはＰＢＷＢ応答がアクセスのないラインをヒットする場合ベッドロックＭＤ２７５はこの要求がカレントセルの内側か外側にあるかにより異なる対応をする。セルの内側からの要求または応答についてはデータは保護値とは無関係にメモリに書き込まれる。ファイアウォールが破られた場合、ＭＤ２７５はＷＥＲＲメッセージを返信し（ＷＢの場合）、エラー情報をＭＩＳＣ  ＥＲＲＯＲレジスタに記憶し、両方のローカルＰＩに割り込み信号を送る。セルの外側からの要求及び応答については、ベッドロックＭＤ２７５は、ＷＩＮＶと同様に、ＷＢ、ＳＨＷＢ、ＳＸＷＢまたはＰＧＷＢを取り扱い、保護が有効でない限りメモリへの書き込みを行わない。非コーヒーレント読み出し要求（ＲＳＨＵ及びＰＷＴＵ）は保護をチェックせず従って、セル間の安全な通信を行うために使用できる。ＰＷＲＵ要求は保護をチェックし、ＷＩＮＶと同じように取り扱われる。ＰＲＤＭ及びＰＷＲＭ要求は共に、フェッチ及び演算キャッシュ内でミスすると保護をチェックする。それらは共にキャッシュヒットのフェッチ及び演算変数と共にキャッシュされた別個の６４ビットの保護フィールドを使用する。ＰＲＤＨ要求は保護をチェックしない。ＰＷＲＨ要求は、それらの保護レジスタとしてカレントセルレジスタを使用する、それによりセルの外部の任意のプロセッサのＨＳＰＥＣ空間への書き込みが阻止される。ＨＳＰＥＣ空間のＵＡｌｉａｅｓ部分（内部のＲ１００００のためにＨＳＰＥＣ内に配置された非コーヒーレント読み出し部分）は、ＵＳＰＥＣ仕様の一部としてここで取り扱われる。ＵＳＢＥＣ、ＭＳＢＣ及びＨＳＰＥＣ空間についての情報は、ＳＮ１プログラミングマニュアルを参照されたい。
【０１９７】
ページカウンタ
ベッドロックのようなＮＵＭＡ（一様でないメモリアーキテクチャーを有する）装置では、プログラムの性能は、重要なデータ構造の配置に応じて変化する。一般的に、データはそれにアクセスするプロセッサに近い所が望ましい。しかしながら、データが常に正しく配置されるようにすることは重要な問題であり、常に保証することは不可能である。ベッドロックチップはオペレーティングシステム及びアプリケーションがデータを正しく配置しない状況を改善するためのページ移送をサポートする。
【０１９８】
オペレーティングシステムの各ページ（１６ｋＢ）は、４組の２つのカウンタを含む。各組のカウンタはメモリのインターリービングを行う。従って、０組はキャッシュライン０、４、８、１２など、１組はキャッシュ１、５、９、１３などを、２組はキャッシュ２、６、１０、１４などを、３組はキャッシュ３、７、１１、１５組を担当する。これはアドレスに対するカウンタの直感的なマッピングではないが、キャッシュラインの境界に対するインターリービングの決定により必要である。
【０１９９】
各組を構成する２つのカウンタは、ローカルカウンタとリモートカウンタとである。ローカルかリモートかは、ベッドロックＭＤ２７５内のローカルレジスタにより決まる。このレジスタ（ＭｉｇＮｏｄｅＭａｓｋと呼ぶ）は、９ビットのチップマスク（最大５１２個のベッドロックチップをサポートする）を含む。任意所与のアクセスのためには、マスクにＡＮＤ接続されたソースｃｈｉｐｉｄがマスクにＡＮＤ接続されたＭＤ２８５のｃｈｉｐｉｄと同じであれば、アクセスがローカルのものと考えられる。そうでなければ、アクセスはリモートであると考えられる。
【０２００】
カウンタそれ自体は、ディレクトリのエントリー及び保護情報と共にディレクトリメモリに記憶される（ディレクトリメモリの完全なマップについては、ＳＮ１プログラミングマニュアルを参照されたい）。ディレクトリへのアクセスがメモリの帯域幅に影響を与えるのを防止するため、ベッドロックＭＤ２７５は増分するだけでｎ番目のアクセス毎にこれらのページカウンタをチェックする。ｎの値は、ＭｉｇＩｎｔｅｒｖａｌＣｏｕｎｔローカルレジスタにセットすることができる。
【０２０１】
カウンタチェックとなるアクセスが行われると、両方のカウンタはベッドロックＭＤ２７５に読み出される。アクセスがローカル（マスクにより決まる）であれば、ローカルカウンタが増分される。アクセスがリモートであれば、リモートカウンタが増分される。増分の後、増分されたカウンタはしきい値（ＭｉｇＶａｌｕｅＴｈｒｅｓｈレジスタにセットされている）と比較され、これら２つのカウンタの間の差がしきい値（ＭｉｇＤｉｆｆＴｈｒｅｓｈレジスタにセットされている）と比較される。２つの制御ビット（ＶａｌｕｅＩｎｔｅｒｒｕｐｔ及びＤｉｆｆＩｎｔｅｒｒｕｐｔ）がカウンタと共にディレクトリから読み出される。ＶａｌｕｅＩｎｔｅｒｒｕｐｔビットがセットされると、ＭＤ２７５が、ＭｉｇＶａｌｕｅＴｈｒｅｓｈを超えておれば割り込み信号を送出する。ＤｉｆｆＩｎｔｅｒｒｕｐｔビットがセットされておれば、ＭＤ２７５は、ＭｉｇＤｉｆｆＴｈｒｅｓｈレジスタがセットされていれば割りこみ信号を出す。ＭＤの割りこみについての完全な説明はＳＮ１プログラミングマニュアルを参照されたい。対応の割りこみビットがセットされていない場合、何れかのカウンタの値を超えると、アクセスのアドレス及びソースがＭｉｇＣａｎｄｉｄａｔｅレジスタに記憶される。何れかのカウンタが増分で飽和状態のなると、両方のカウンタが右に１つだけシフトされる。
【０２０２】
フェッチ及び演算
共有メモリシステムでは、オペレーティングシステムとユーザープログラムの両方がロックを掛けそれを解放するのに多量の時間を費やす。しかしながら、大部分の簡単な同期アルゴリズムは２つのプロセッサを過ぎると大きさの釣合いがとれていない。この問題を回避するためベッドロックＭＤ２７５は多数のプロセッサに対して大きさが非常によく折り合った特別なコーヒーレント同期機構を提供する。
【０２０３】
ベッドロックＭＤ２７５は、最近アクセスされて同期変数のキャッシュ（２２つの６４ビットラインエントリーまたは４つの３２ビットエントリー）を維持する。ＭＳＰＥＣ空間（ＰＲＤＭまたはＰＷＲＭ）への任意の未だキャッシュされていない読み出しまたは書き込みは最初に、キャッシュ内にヒットがあるか否かをチェックする。もしあれば、以下に述べる動作が直ちに行われ、データまたは応答信号が戻される。読み出しまたは書き込みがキャッシュ内にヒットがなければ、最も古いキャッシュのエントリーが書きこまれ、新しいデータが読み出され、動作が行われてデータまたは応答が返信される。
【０２０４】
キャッシュ上では、アドレスのビット５乃至３を特定の値に設定することにより動作が行われる。これらのアドレスビットはもはやメモリをアドレスするために使用されないため、キャッシュライン当たりせいぜい２つの６４ビットライン（または４つの３２ビット）フェッチ及び演算変数が存在できる。ＰＲＤＭ上では以下の動作を行うことができる。キャッシュの値のフェッチの後の増分、フェッチの後の減分、フェッチの後のクリア及びキャッシュのフラッシュである。ＰＷＲＭでは、以下の動作を行うことができる。キャッシュの値の書き込み、単純な増分（ＰＷＲＭと共に送られる値は無視する）、単純な減分（ＰＷＲＭと共に送られる値は無視）、キャッシュの値とＰＷＲＭ値との論理積をとる、キャッシュの値とＰＷＲＭの値の論理和をとる）、及びキャッシュのフラッシュである。正確な符号については、ＳＮ１プログラミングマニュアルを参照されたい。
上述したように、キャッシュは、２つの６４ビットのエントリーまたは４つの３  ２ビットのエントリー（もしくは１つの６４ビットのエントリー及び２つの３２ビットのエントリー）により利用可能である。しかしながら、３２ビットラインのエントリーの各対は同一の６４ビットの２倍長ワードである必要がある。６４ビットの保護ワードもまた、各６４ビットのエントリー（または３２ビットの各対）と一緒にキャッシュされる。
【０２０５】
バックドアＥＣＣ
ベッドロックＭＤ２７５は、ＥＣＣメモリの読み出し及び書き込みへのバックドアパスをサポートする。ＨＳＰＥＣ空間内の２つのアドレス空間は、バックドアＥＣＣアクセスをサポートする。書き込みのためのアクセス（ＰＷＲＨ）では、両方の空間がＥＣＣメモリへの書き込みを行うためデータの読み出し−修正−書き込みを行う。読み出しのためのアクセス（ＰＲＤＨでは、ＢＤＥＣＣ−ＮＯＲＭＡＬ空間だけがＥＣＣの値を戻し、一方ＢＤＥＣＣ−ＳＣＲＵＢ空間がデータとＥＣＣを読み出し、ＥＣＣの値を戻し、データとＥＣＣを修正し、修正されたデータ及びＥＣＣの再書込みを行う。インターフェイスの完全な説明については、ＳＮ１プログラミングマニュアルを参照されたい。
【０２０６】
バックドアディレクトリ
ディレクトリメモリはコーヒーレントトランザクション毎に読み出し及び書き込みされるが、データはベッドロックＭＤ２７５の内部で使用されるだけである。オペレーティングシステムがディレクトリに記憶された情報にアクセスし、ブートアップの間ディレクトリを初期化する（ためには、別個のバックドアパスがディレクトリメモリへの透明なアクセスを提供する。ＨＳＰＥＣ空間内の２つのアドレス空間は、バックドアディレクトリ動作のために使用される。何れかの空間への読み出し（ＰＲＤＨ）は、３２ビット（標準）または６４ビット（プレニアム）のディレクトリワード全体を戻す。ＢＤＤＩＲ−ＡＣＣＥＳＳ空間への書き込み（ＰＷＲＨ）により、ディレクトリエントリー内の単一の保護ビットが書き込まれる。ＢＤＤＩＲ−ＦＵＬＬ空間への書き込み（ＰＷＲＨ）により、全体のディレクトリワードが書き込まれる。
【０２０７】
３２ビットまたは６４ビットのディレクトリワードは、６ビットまたは７ビットのＥＣＣフィールドを含む。特別な支援がない場合、オペレーティングシステムはＥＣＣへのバックドア書き込みを行う必要がある時は必ずＥＣＣの値を予め計算する必要があるであろう。この余分な複雑性を回避するためベッドロックＭＤ２７５は、デフォルトにより、ＥＣＣフィールドに正しい値を（書き込み命令と共に送られた値とは無関係に）ロードする。ＤｉｒｅｃｔｏｒｙＯｏｎｆｉｇレジスタ内にＩｇｎｏｒｅＥＣＣビットがセットされる場合、ベッドロックＭＤ２７５はＥＣＣビットを修正せずに送り出す。
【０２０８】
ＢＤＤＩＲアドレス空間及び特定のディレクトリ、保護またはページカウンタのエントリーにアクセスするに必要なアドレスマッピングについての完全な情報はＳＮ１プログラミングマニュアルを参照されたい。
【０２０９】
フラッシュＰＲＯＭ
ベットロックＭＤ２７５は、ブートコード及びシステム構成／エラー情報のために１６ＭＢのフラッシュＰＲＯＭ（２つの８ＭＢ部分）をサポートする。このＰＲＯＭは、ＨＳＰＥＣ内のＬＢＯＴ及びＲＢＯＴ空間を通してアクセスされる。プロセッサは、ベットロックチップがｃｈｉｐ−ｉｄを有する前にＰＲＯＭをアクセスしなければならないため、プロセッサインターフェイスはノード０におけるＬＢＯＯＴ空間へのアクセスをキャッシュし、これらをローカルＭＤ２７５へ差し向ける。ＲＢＯＯＴ空間は、ｃｈｉｐ−ｉｄが初期化されると任意のノードのＰＲＯＭをアクセスするために任意のプロセッサにより使用可能である。
【０２１０】
ＰＲＯＭを読み出すために、ＨＳＰＥＣアドレスとＰＲＯＭアドレス（所与の空間内にある）には１対１のマップが存在する。ベットロックＭＤ２７５は、すべての読み出しサイズ（２倍長ワード、半長ワード及びバイト）をサポートする。ＰＲＯＭの書き込みのためには、ＨＳＰＥＣアドレスとＰＲＯＭアドレス（所与の空間内にある）の間には８対１のマップが存在する。換言すれば、ＨＡＳＢＥＣアドレス０はＰＲＯＭアドレス０に対応するが、ＨＳＢＥＣアドレス８はＰＲＯＭアドレス１に対応する。ベットロックＭＤ２７５は、フラッシュＰＲＯＭのバイト書き込みをサポートするに過ぎない。
【０２１１】
ジャンクバス
ベットロックＭＤ２７５は、コアＭＤ２７５の機能性と関連性をもたないコンポーネントへの別個のインターフェイスをサポートする。これらのコンポーネントとは、フラッシュＰＲＯＭ、４つのバンクのＬＥＤ、ＵＡＲＴ及び２つのシナジー（このインターフェイスは遠隔のシナジーレジスタを読み出すために使用される）である。ジャンクバスへのアクセスは、ＨＳＰＥＣ空間内のＬＲＥＧ及びＲＲＥＧアドレス空間を介して行われる。ベットロックＭＤ２７５は、フラッシュＰＲＯＭと、６４ビットの読み出しと１６ビットの書き込みをサポートするシナジーを除いて、すべてのジャンクバスの１６ビットの読み出しと書き込みをサポートするに過ぎない。
【０２１２】
ＳＤＲＡＭ及びＤＤＲ−ＳＤＲＡＭ初期化
すべてのＳＤＲＡＭ及びＤＤＲ−ＳＤＲＡＭは、システムブート時に初期化する必要のあるモードレジスタを含む。これらのモードレジスタは、ジャンクバスのアクセスに使用される同じＬＲＥＧ及びＲＲＥＧアドレス空間を介してアクセスされる。
【０２１３】
リフレッシュ
ベットロックＭＤ２７５によりサポートされるＳＤＲＡＭ及びＤＤＲ−ＳＤＲＡＭは、重力マイクロ秒ごとにほぼ一度リフレッシュ命令を必要とする。リフレッシュ電力サージを減少するために、ベットロックＭＤ２７５は、８マイクロ秒ごとに各ＤＩＭＭ上の１つのバンクのＳＤＲＭまたはＤＤＲ−ＳＤＲＡＭをリフレッシュする。ベットロックＭＤ２７５は、４つの内部バンクすべてを同時にリフレッシュするために、ＳＤＲＡＭ及びＤＤＲ−ＳＤＲＡＭの自動リフレッシュ機能を使用する。このリフレッシュは、４マイクロ秒のウインドー内の最初のアイドルサイクル時に起こる。アイドルサイクルがない場合、リフレッシュはタイムアウトとなり、強制的に終了する。正確なリフレッシュインターバルは、ＲｅｆｒｅｓｈＣｏｎｔｒｏｌレジスタにより構成可能である。システムのすべてのＤＩＭＭが１個または２個のバンクをもつに過ぎない場合、ＭＤ２７５は８または１６マイクロ秒ごとにリフレッシュするだけである。
【０２１４】
メモリテスト
ベットロックＭＤ２７５は、アクセス可能なよりも格段に早い速度ですべてのメモリ（データ、ＥＣＣ及びディレクトリ）をテストできる内臓型自己テスト（ＢＩＳＴ）機能をサポートする。この機能の目標は、ハードウエアによるテストの速度の利点を維持しながらソフトウエアの管理下でできるだけ大きい制御性を保持することである。第１に、ソフトウエアは、モードレジスタにメモリ構成を初期化するために書き込みを行い、リフレッシュをオンにし、各ＤＩＭＭのサイズを求める（即ち、４個または８個の部分により−これはシステムコントローラにより読み出される）。このメモリのサイズを調べる動作は、メモリのアドレス復号テストと等価的である。このため、ＤＩＳＴ機能はアドレステストのサポートを含まない。
【０２１５】
メモリのサイズ測定が起こり、ソフトウエアが正しいＤＩＭＭサイズでＭｅｍｏｒｙＣｏｎｆｉｇレジスタをコンフィグレイションすると、実際のＢＩＳＴ動作をはじめることができる。ソフトウエアはまず最初に、２つのコンフィグレイションレジスタをセットアップする。４ビットのデータパターンがＢＩＳＴＤａｔａＰａｔｔｅｒｎレジスタに入る。このパターンは、すべて１４４ビットのデータメモリ及びすべて３２ビットのディレクトリデータに亘って複製されている。パターンシーケンス情報（常に同じパターンまたは逆のサイクル）もＢＩＳＴＤａｔａＰａｔｔｅｒｎレジスタへ入る。テスト中のバンクがＢＩＳＴＣｏｎｔｒｏｌレジスタに入る。最後に、ＢＩＳＴＣｏｎｔｒｏｌレジスタのスタートビットの書き込みがＢＩＳＴ動作を開始させる。
【０２１６】
ＢＩＳＴの間、ベットロックＭＤ２７５は、テスト中のすべてのバンクを所望のパターンに初期化し、その後テスト中のすべてのバンクをテストする。第１のエラーで、データパターンがＢＩＳＴＤａｔａＥｒｒｏｒレジスタに記憶され（ディレクトリデータのパターン、メモリデータのパターン及びアドレスデータのパターン）ＢＩＳＴ動作が停止する。ＢＩＳＴＳｔａｔｕｓレジスタから状態レポートを読み出すことができる。ＢＩＳＴ動作が一旦完了すると、ベットロックＭＤ２７５がＢＩＳＴＳｔａｔｕｓレジスタのビットを更新する。ＢＩＳＴがエラーの後再びスタートする場合、それがオフになった所で継続する。
【０２１７】
フラッシュＰＲＯＭとジャンクバスは、ＢＩＳＴ動作の間はアクセスできない。ローカルレジスタはＭＤ２７５を介してアクセスされない（それはＬＢブロックから特別なデータパスを介して読み出される）ため、それらは通常はＢＩＳＴ動作の間に進行可能である。
【０２１８】
ソフトリセット
ソフトリセットによりノードのメモリの状態を維持するためには、ＭＤ２７５はその機能の一部の内部リセットを、ソフトまたはハードリセットを介して行うかに応じてゲートする。ソフトリセットの時、ユニットは、以下の例外を除き電力をオンにするリセットのように初期化される。
【０２１９】
ＭＥＭＯＲＹ  ＣＯＮＦＩＧ及びＤＩＲ  ＣＯＮＦＩＧレジスタの内容が維持される。これにより、ＳＤＲＡＭのサイズと幅に関する設定と、シンクロナイザーの設定とディレクトリのフレーバーが確実に保存される。
【０２２０】
リセット信号がなくなった直ぐ後、ＭＤ２７５はすべてのバンクのＳＤＲＡＭに対してプリチャージを出力することにより、それらを既知の状態にする（リセット信号がＳＤＲＡＭアクセスの中間点できた場合）。
【０２２１】
ＲＥＦＲＥＳＨ  ＣＯＮＴＲＯＬレジスタの内容が維持される。リフレッシュカウンターは、ソフトリセットの後そのカウントを０で再びスタートし、リフレッシュがソフトリセットの前に可能化される場合は、ＭＤ２７５はプログラムされたしき値に応じてリフレッシュを回復する。
【０２２２】
放出ブロック
ＸＢＡＲからのすべてのメッセージは、ＩＢ（放出ブロック）を介してＭＤ２７５へ入る。ＩＢはメッセージを復号し、それらを構成差と効率のために順序を変更し、ＤＲＡＭへ必要なアドレス及び命令を出力し、ＤＢ及びＭＢブロックを入来または出力データと同期させる。
【０２２３】
この章は３つの節：アーキテクチュア、調停及び設計に別れている。放出ブロックの全体構造はアーキテクチュア部分で説明するが、調停アルゴリズム（すべてのメッセージタイプに対する）は調停部分で述べる。
【０２２４】
アーキテクチュア
メッセージがＸＢからＭＤ２７５へ到達すると、ヘッダーが１２個のエントリーのヘッダー待ち行列（ＩＢブロックにある）に書き込まれ、それに対応するデータがあれば、８キャッシュラインデータ待ち行列（ＭＢブロック内にある）に書き込まれる。ヘッダー及びデータ待ち行列の書き込みと平行して、入来メッセージが復号されて、未処理の待ち行列及び書き込み表に記憶される。未処理の待ち行列は、ヘッダー待ち行列のすべてのエントリーにつき１つのエントリーを維持し、書き込み表は、データ待ち行列の各キャッシュラインにつき１つのエントリーを維持する（データ待ち行列は実際、書き込み表にエントリーをもたないＭＢにより内部で使用するための９番目のキャッシュラインを実際含む）。
【０２２５】
ＸＢＡＲは、入来メッセージをソース及びタイプに応じて４つのバーチャルチャンネルのうちの１つに分割する。ＢＩ０からの要求は１つのチャンネル上に到達し、一方、ＰＩ１からの要求、ＮＩまたはＩＩからの要求及び応答は残りの３つのチャンネル上に到達する。４つの入力待ち行列（ヘッダー、データ、未処理及び書き込み）の各々は、各バーチャルチャンネルにその空間の４分の１を割り当てる。ＸＢ及びＩＢは共に４つのバーチャルチャンネルを完全に独立なものとして取扱い、任意のインターリービングをサポートする。
【０２２６】
ヘッダー待ち行列の書き込みと平行して、ＩＢは、入来メッセージをすべての開いたバンク（最大４個）と比較し、命令（読み出し／書き込み、全／部分）を復号する。これらの動作の出力は、未処理待ち行列に記憶されて調停時に使用される。データを有する入来メッセージについては、ＩＢはテイルビット受信すると書き込み表に書き込む。
【０２２７】
メッセージの復号された情報が一旦未処理の待ち行列及び書き込み表に入ると、調停論理がそれを選択してＭＤ２７５の残部へ送る。メッセージは、そのヘッダーをヘッダー待ち行列から読み出し関連の情報を各データバス（アドレス、ディレクトリ及びメモリ）のヘッドの３つの待ち行列に書き込むことにより出力される。メッセージがこれら３つの待ち行列に入ると、ＤＲＡＭに出力することが可能となり完了する。
【０２２８】
調停
放出ブロックの調停部分は、未処理待ち行列の１２個のエントリーを必要とし、最もよいエントリーを選択する。ここでは、最もよいとは、３つの入力要求待ち行列間に公正な分散が存在し、書き込みと応答が充分な帯域幅を得るようなものである。充分な帯域幅を確保し、すべてのメッセージが手頃な量の時間で出力され、すべてのＤＲＡＭの制約が守られるように定義される。
【０２２９】
ことを単純化するために、調停プロセスは２つの段階、即ち、独立のメッセージに基づく小域的調停段階と、待ち行列に応じた大域的調停段階とに分解される。２つの段階の間には従属関係はほとんどないため、それらは同じサイクルで平行して走ることができる。
【０２３０】
小域的要求調停
４つのバーチャルチャンネル（ＰＩ０からの要求、ＰＩ１からの要求、ＮＩまたはＩＩからの要求及びすべての応答）の各々は、それ自身の独立した小域的調停を行う。これに平行して、大域的調停は４つのチャンネルのうちいずれか完全な調停を実際に得るかにつき選択する。
【０２３１】
３つの要求待ち行列につき、調停ロジックは、最初に、待ち行列の最大３つの要求のうちいずれが実行する準備ができているかをチェックする。キャッシュされる読み出しでは、キャッシュされる読み出し、部分的な読み出しまたは部分的な書き込みが準備状態にあると考えられる場合、それは以下の条件を満足する必要がある。
【０２３２】
メッセージがキャッシュされた最も旧い読み出し、部分的読み出しまたはチャンネルの部分的書き込みであり、書き込みタイムアウト（以下に述べる）が差し迫っていない場合、正しい出力ヘッダー待ち行列には少なくとも３つのヘッダーの空間と、正しい出力データ待ち行列にはキャッシュラインのデータの空間が存在しなければならない。メッセージがキャッシュされた読み出し、部分的読み出しまたは部分的書き込みであり、或いは書き込みタイムアウトが差し迫っている場合、正しい出力ヘッダー待ち行列は少なくとも６個のヘッダーの空間と、正しい出力データ待ち行列の２つのキャッシュラインデータの空間がなければならない。メッセージがキャッシュライン書き込みである場合、正しい出力ヘッダー待ち行列には少なくとも６個のヘッダーの空間がなければならない。
【０２３３】
メッセージは開いた任意のバンクとのコンフリクトがあってはならない。部分的読み出し及び部分的書き込みでは、アドレス論理は部分的なものを受け入れる能力を備えなければならない。キャッシュされた読み出し及びキャッシュされた書き込みでは、アドレスロジックは部分的でないものを受け入れる能力を備えなければならない。
【０２３４】
キャッシュされた書き込み及び部分的書き込みでは、データパケット全体がデータ待ち行列に存在する必要がある。
【０２３５】
キャッシュされた書き込みでは、ＥＲＥＳＰが出力のために待機状態であってはならない（ＥＲＥＳＰは、書き込みとして出力された後読み出しとして再び出力する必要のあるメッセージである。この出力と再出力との間には調停を得るために新しい書き込みが許容されない）。
【０２３６】
部分的読み出し及び部分的書き込みでは、メッセージはそのチャンネルで最も旧い部分的なものでなければならない（部分的は順序よく出力されなければならない）。キャッシュされた書き込みでは、メッセージはチャンネルにおいて最も旧いキャッシュされた書き込みでなければならない）キャッシュされた書き込みは順序よく出力される。最大３つのメッセージの各々につき準備状態を示す情報が一旦得られると、調停ロジックは最も高い優先度を有するメッセージを選択する。優先度は以下のように決定される。
【０２３７】
１．キャッシュされた任意の書き込み（書き込みタイムアウトが印加されている場合）。
【０２３８】
２．最も旧いキャッシュされた読み出し、部分的読み出しまたは部分的な書き込み。
【０２３９】
３．キャッシュされた任意の読み出し、部分的読み出しまたは部分的書き込み。
【０２４０】
４．キャッシュされた任意の書き込みである。
【０２４１】
小域的応答調停
応答チャンネルは、３つの要求チャンネルとは僅かに異なった対応で取り扱われる。応答は、以下の基準が満足されれば準備状態にあると考えられる。
【０２４２】
メッセージが開いた任意のバンクとコンフリクトがあってはならない。
【０２４３】
アドレスロジックは非部分的なものを受け入れる能力をもつ必要がある。
【０２４４】
メッセージは待ち行列の最も旧い応答である（応答は順序よく出力される）。書き込み応答についてはデータパケット全体がデータ待ち行列内に存在する必要がある。
【０２４５】
最も旧いメッセージが常に選択される（もし準備状態にあれば）ため、応答チャンネルには優先度は存在しない。
【０２４６】
大域的調停
３つの要求待ち行列間に公正に帯域幅を割り当てるためには、大域的調停ロジックは３つのＬＲＵ表を維持する。第１のＬＲＵ（最も旧い）は、最も旧い未処理のキャッシュされた読み出し、部分的読み出しまたは部分的書き込みとして指示されたメッセージを待ち行列が最後に出力する順番を追跡する。第２のＬＲＵ（任意の）は、任意のキャッシュされた読み出し、部分的読み出しまたは部分的書き込みメッセージを待ち行列から最後に出力する順番を追跡する。第３のＬＲＵ（書き込み）は、待ち行列がキャッシュされた書き込みメッセージを最後に出力する順番を追跡する。
【０２４７】
大域的調停は、以下の優先度スキムを用いて待ち行列を選択する。
【０２４８】
１．応答タイムアウトのある準備状態にある応答、
２．書き込みタイムアウトのある準備状態のキャッシュされた書き込み。書き込みＬＲＵを用いて選択される。
【０２４９】
３．最も旧いものと指示された準備状態にあるキャッシュされた読み出し、部分的読み出しまたは部分的書き込み。最も旧いＬＲＵを用いて選択される。
【０２５０】
４．準備状態にあるキャッシュされた読み出し、部分的読み出しまたは部分的書き込み。任意のＬＲＵを用いて選択される。
【０２５１】
５．準備状態にあるキャッシュされた書き込み。書き込みＬＲＵを用いて選択される。
【０２５２】
６．準備状態にある応答。
【０２５３】
書き込みＬＲＵは、キャッシュされた書き込みメッセージが出力されるときはいつも更新される。最も旧いＬＲＵは、最も旧いキャッシュされた読み出し、部分的読み出しまたは部分的書き込みと指示されたメッセージが出力されるときはいつも更新される。任意のＬＲＵは、キャッシュされた読み出し、部分的読み出しまたは部分的書き込みが出力されるときは更新される。
【０２５４】
書き込みタイムアウト
書き込みタイムアウトロジックは、書き込みがデータ待ち行列に永遠に止まらないようにする。さらに、チャンネルのデータ待ち行列が一旦フルになると、書き込みタイムアウトロジックが書き込みを強制的に出力して、次の書き込みメッセージのための空間を確保する。
【０２５５】
書き込みタイムアウトは、２つの条件のうちの１つが満足されるとスタートする。
【０２５６】
任意のチャンネルのデータ待ち行列に２つのデータのキャッシュラインが存在する。
【０２５７】
読み出しメッセージのユーザが選択可能な数が、最後の書き込みメッセージが出力された後出力されている。
【０２５８】
上記条件のうちの１つが満足され、応答タイムアウトが進行中である場合、書き込みタイムアウトだけがバーチャルチャンネルに対して適用され、これは書き込みＬＲＵにおいて最も高い優先度を有する書き込みメッセージを含む。書き込みがそのチャンネルから出力され、タイムアウトが適用される場合、そのタイムアウトは３つの要求チャンネルすべてに対して放送される。タイムアウトは、キャッシュされた書き込み以外の何かまたは４つのキャッシュされた書き込みが出力されるうちいずれか早く起こるまで継続するため、タイムアウトが完了した後、任意のタイプの少なくとも４つのメッセージがタイムアウトを再び適用する前に出力する必要がある。
【０２５９】
応答タイムアウト
応答タイムアウトロジックは、応答が最終的に出力されるようにする。応答タイムアウトは、ユーザがセット可能な要求の数以上の要求が最後の要求が出力された後出力されて書き込みタイムアウトが進行中でない場合に適応される。
【０２６０】
ジャンクバス及びＰＲＯＭ
ベットロックＭＤ２７５は、別個の財産的価値のあるバスを用いて非ＤＲＡＭ外部デバイスと会話をする。ＭＤ２７５は、このバスの上の４つの異なルータイプのデバイス、即ちＥＰＲＯＭ、ＵＡＲＴ、ＬＥＤ及び１またはそれ以上のジャンクバスを認識する。各タイプのデバイスはＨＳＰＥＣ空間（表４２を参照）のＬＲＥＧまたはＲＲＥＧ部分内にそれ自身のアドレス空間を有する。
【０２６１】
バスは、１６個のアドレス／データピンと、４個の制御ピンと割り込みラインとを用いてベットロックＭＤ２７５とを接続する。図３６は、インターフェイスを示すものである。
【０２６２】
メモリブロック
図３７は、メモリブロックデータパスのブロック図である。このデータパスは、データをピンから出力データ待ち行列（ＭＯＱＤ３１１４）及び入力データ待ち行列（ＭＩＱＤ）からピンへ転送する。データパスの内部には２つの特別なサブブロックがあり、これらは、キャッシュラインの読み出し−修正−書き込み動作を可能にしまた設置及び演算動作を実現する。
【０２６３】
マージキャッシュは、キャッシュラインの読み出し−修正−書き込み動作をサポートする。ベットロックＭＤは、バイト境界上での未キャッシュ状態の書き込み動作を可能にする。しかしながら、ＳＤＲＡＭコストを節約するために、保護情報（ＥＣＣ）だけが６４ビットの量記憶される。しかしながら、未キャッシュ状態の書き込みを行うために、ＭＤは読み出し−修正−書き込み動作を実行しなければならない。まず第１に、メモリブロックはキャッシュライン全体を読み出して、必要とされる１２８ビットをマージキャッシュに記憶する。その後、メモリブロックは、記憶した情報をＭＩＱＤから読み出して新しいデータと共に選択されたバイトをオーバーライトする。正しいデータが利用可能となると、ＥＣＣの発生により送られてメモリに書き込みされる。
【０２６４】
フェッチ及び演算ブロックは、同期動作を改善するために２エントリーキャッシュを実現する。
【０２６５】
基本的な動作
通常の読み出し
通常の読み出しは、ピンからデータを取り入れ、ＥＣＣエラーを検知し修正し（ＥＣＣエラーを無視しない場合）、その後、このデータをＭＯＱへ送ることにより行う。ＶａｌｉｄＤａｔａ及びＤａｔａＴａｉｌ信号がＭＯＱ３１１３へ送られて、有効なデータが存在することを示す。
【０２６６】
通常の書き込み
奇数及び偶数のＭＩＱＤ待ち行列はそれぞれ７２個の６５ビットエントリーを含むが、各エントリーは６４ビットワードであり、ＵＣＥビットはそのワードに関連している。７２個のエントリーは、各入力待ち行列（Ｂ０、Ｂ１及びＭｉｓｃ）からのデータの２つの完全なキャッシュライン及び、ここのキャッシュラインの読み出し−修正−書き込みを行うためにＭＢだけにより使用される１つの余分のキャッシュラインにとって充分である。ＭＩＱＤは、ＸＢにより一度に１つの６４ビットワードだけ書き込まれる。通常の書き込みを行うように指示されると、ＭＢは、ＭＩＱＤ  ＯｄｄとＭＩＱＤ  Ｅｖｅｎと並列に読み出し、このデータをラッチして、次のサイクルでＥＣＣビットを発生し、そのデータをピンに送る。通常の書き込み時、ＥＣＣビットはＩｇｎｏｒｅＥＣＣビットのセット状態とは無関係に発生されることに注意されたい。
【０２６７】
図３７は、メモリブロックデータパスの１つの実施例を示す。
【０２６８】
部分的読み出し
部分的読み出しは、キャッシュライン全体をメモリから読み出すが、要求されたデータを含む１２８ビットをＭＯＱに送るだけにより進む。ＤａｔａＶａｌｉｄ及びＤａｔａＴａｉｌは、適当な１２８ビットの量が利用可能であるときセットされる。
【０２６９】
部分的書き込み
部分的書き込みは２つの相よりなる動作である。最初の相で、適当なキャッシュラインがＭＩＱＤへ読み出され、修正を必要とする１２８ビットの量がマージキャッシュへ読み出される。部分的書き込みの第２の相の間、キャッシュラインはメモリに書き込まれる。部分的書き込みデータは、読み出しからメモリキャッシュへ送られる。部分的書き込みの第２の相の間、キャッシュラインはメモリへ書き込まれる。部分的書き込みデータはＭＩＱＤから取られて、ＢｙｔｅＥｎａｂｌｅ信号に応じてマージキャッシュ内でデータとマージされる。キャッシュラインの他のすべての１２８ビットは、ＭＩＱＤからメモリへ変化なしに書き込まれる。通常、ＥＣＣは書き込み時に再び発生される。しかしながら、ＥＣＣを無視する場合、そのラインが以前もっていた旧いＥＣＣはその代わりに書き込まれる。
【０２７０】
フェッチ及び演算書き込みミス
フラッシュ動作は、現在キャッシュ内にあるデータを書き出した後充てんしその後書き込み動作をすることにより行う。
【０２７１】
フェッチ及び演算保護
フェッチ及び演算保護は２つの部分を有する。第１の部分は、ディレクトリブロック内で起こり充てん動作時に起こる通常のディレクトリ保護チェックである。ＤＢがアクセスエラーを検知する場合、フェッチ及び演算キャッシュ内の保護ワードがクリアされ、フェッチ及び演算動作は許容されない。ＤＢはまた、ＩＢに対してフェッチ及び演算充てん動作時にアクセスエラーが起ったことを通知する。
【０２７２】
保護チェックの第２の部分は、読み出しヒットまたは書き込みヒット動作時に起る。ＩＢは、フェッチ及び演算保護レジスタの６４ビットの１つをアドレスする保護領域ビットを送っている。これがセットされた状態である場合、その動作は進行することができ、そうでなければフェッチ及び演算キャッシュは不変である。
【０２７３】
フェッチ及び演算動作
ベットロックＭＤは、ＳＮ０  ＭＤと同じフェッチ及び演算命令を実現する。小さなフェッチ及び演算キャッシュ（２エントリー）は、低い占有率（約２７ナノ秒）のトランズアクションを可能にし、これによりプログラムの動機が有意にスピードアップされる。
【０２７４】
図３８は、フェッチ及び演算キャッシュデータパスのブロック図である。このキャッシュには２つのエントリーがある。各エントリーは６４ビットの保護ワードと、６４ビットのデータワードとよりなり、これは、単一の６４ビットワードまたは図のＦ＆Ｏｂ−Ｈｉ及びＦ＆Ｏｂ−Ｌｏとして示す２つの３２ビットワードとして考えることができる。フェッチ及び演算キャッシュにより実行される４つの重要な動作は、充てん、読み出し、書き込み及びフラッシュである。各動作の短い要約を以下に述べる。
【０２７５】
充てん−充てん動作では、データはメモリから直接、フェッチ及び演算キャッシュへロードされる。演算または論理動作は行われない。
【０２７６】
読み出し−読み出し動作では、データがキャッシュから取り出されて、ＭＯＱＤへ送られ、キャッシュエントリーがクリアされて増分または減分されるか或いは変化ないままに置かれる。論理動作は行われない。
【０２７７】
書き込み−記憶動作では、データがＭＩＱＤから取り出されて、オプションとしてキャッシュ内の値と論理積または論理和を取られた後、キャッシュ内に記憶される。これは、ＭＩＱＤからの入来データを無視しただキャッシュ内の値を増分または減分することができる。
【０２７８】
フラッシュ−フラッシュ動作では、データがキャッシュから取り出されてメモリへ戻される。これは、部分書き込み動作に似た２つの相よりなる動作であり、キャッシュライン全体がメモリから読み出されてＭＩＱＤへ記憶された後、キャッシュラインが再び書き込まれ、最初の２つのワードがＭＩＱＤでなくてフェッチ及び演算キャッシュから取り出される。
【０２７９】
フェッチ及び演算キャッシュに対して読み出しまたは書き込みを行うことができるが、いずれの場合でも３つの可能性がある。即ち、キャッシュ内でのヒットがあるヒットケースと、キャッシュミスであり、キャッシュエントリーが未使用のロードケースと、キャッシュミスで、キャッシュエントリーが現在使用中のミスケースとがある。各ケースは、充てん、読み出し、書き込み及びフラッシュ動作のいくつかの組み合わせにより取り扱われる。
【０２８０】
フェッチ及び演算読み出しヒット：読み出し動作が行われる。
【０２８１】
フェッチ及び演算書き込みヒット：書き込み動作が行われる。
【０２８２】
フェッチ及び演算読み出しロード：充てん動作が正しいデータをキャッシュにロードするために行われた後、読み出し動作が行われる。
【０２８３】
フェッチ及び演算書き込みロード：充てん動作が正しいデータをキャッシュにロードするために行われタイムアウト書き込み動作が行われる。
【０２８４】
フェッチ及び演算読み出しミス：フラッシュ動作がキャッシュに現在あるデータを書き出すために行われた後、充てん動作が行われ、その後書き込み動作が行われる。
【０２８５】
バックドアデータＥＣＣ動作
バックドアＥＣＣ読み出し
バックドアＥＣＣ読み出しは、キャッシュラインの最初の８個の２倍長ワードかまたはキャッシュラインの後ろの８個の２倍長ワードのいずれかからＥＣＣビットを収集することにより進む。ＩＢは常に、最初にキャッシュラインの重要な部分を取り込むため、ＭＢは、サイクルごとに最初の４サイクルの１６個のＥＣＣビットからＥＣＣビットを収集する。これらのＥＣＣビットはその後、ＭＯＱの単一の６４ビットワードとして送られる。
【０２８６】
ＩｇｎｏｒｅＥＣＣがセットされていない場合、キャッシュラインのＥＣＣエラーがバックドアＥＣＣ読み出し時に検知され、修正される（単一ビットエラーのケース）。
【０２８７】
バックドアＥＣＣ書き込み
バックドアＥＣＣ書き込みは、部分的書き込みと同様な態様で進む。バックドアＥＣＣ書き込みは、一度に２つの整列６４ビットワードのＥＣＣビットを書き込む。最初に、メモリから完全なキャッシュラインへ読み出しを行い、ＭＩＱＤに書き込む。ＩＢは、この場合重要な半分のキャッシュラインの順序変更を行い、そのため、ＥＣＣを書き込みたいワードは常に最初の４サイクルにあることに注意されたい。ＭＢはそのバイトを見て、それらのＥＣＣビットが書き込まれるいずれか２つのワードをチェックできるようにする（バイトのイネーブルビットの２つだけをセットする必要がある）。マージキャッシュは、バックドアＥＣＣ書き込みを行いたい１２８ビットにより書き込まれる。その後、キャッシュラインはメモリに書き戻され、適当なサイクルで、バックドアＥＣＣビットがマージキャッシュデータと同時にＭＩＱＤから読み出され、全体で１４４ビットがメモリに書き込まれる。ＥＣＣビットはＭＩＱＤから読み出されたワードの１６個の終りのビットであることに注意されたい。
【０２８８】
バックドアＥＣＣの書き込みは、セットされたＩｇｎｏｒｅＥＣＣと共に主として使用するためである。ＩｇｎｏｒｅＥＣＣがセットされない場合、ＥＣＣエラーがキャッシュラインの読み出し時に検知されて修正される。また、ＥＣＣビットは、バックドアＥＣＣ書き込みと共に直接書き込まないすべてのワードにつき再び発生される。
【０２８９】
ＥＣＣスクラブ動作
ＥＣＣスクラブ動作は、メモリの単一ビットのＥＣＣエラーを修正するために使用される。これは、キャッシュラインの読み出しと、修正されたキャッシュラインをＭＩＱＤに書き込むことよりなる２つの相の動作である。従って、正しいＥＣＣを再び発生しながらデータをメモリに書き戻す。スクラブ動作の目的は既知のエラーを修正することであるから、読み出し時の単一ビットのＥＣＣエラーは割り込みを発生せず、例えＩｇｎｏｒｅＥＣＣがセットされていなくてもエラーレジスタに影響を与えない。しかしながら、ＩｇｎｏｒｅＥＣＣがセットされていない時ダブルビットのエラーが依然として検出される。
【０２９０】
ディレクトリブロック
ディレクトリブロック（ＤＢ）は、ＳＮ１キャッシュのコヒーレンスプロトコルを実現する役割を有する。内向きのメッセージブロック（ＩＢ）がいずれの入来ドランズアクションを取り扱うかを決定して、すべてのアドレスをＳＤＲＡＭへ送り、またメモリブロック（ＭＢ）がメモリへのまたはメモリからのデータを取り扱うが、ＤＢは、ディレクトリにコヒーレンス情報を維持し、出力されるメッセージのすべてのヘッダーを発生する。ＴＢの主要な機能は下記の通りである。
【０２９１】
ＤＶパイプラインのための最大６個の未処理の要求を記憶する。
【０２９２】
入来メッセージ、入来メッセージのソースの保護認可及び現在のディレクトリの状態に基づき、出力メッセージのヘッダー及び時として出力メッセージのデータをチェックする。
【０２９３】
ディレクトリの状態を維持管理する。ＥＣＣを発生しチェックする。２つのコンフリクトなるディレクトリエントリーのサイズがサポートされている（３２／６４ビット）。
【０２９４】
ページ移行カウンタを更新する。カウント（即ちカウント間の差）がユーザが規定したしきい値を越えると割り込みを発生させる。
【０２９５】
エラーを記録する（ディレクトリステートメモリエラー及び入来メッセージのプロトコルエラー）。
【０２９６】
ディレクトリメモリの直接の読み出し／書き込みを許容する。これらはキャッシュされていないＨＳＰＥＣ空間だけでなくキャッシュされた読み出しが２倍長ワードのデータを戻す特別なモードを介してサポートされている。
【０２９７】
ローカルレジスタの読み出し及び書き込みを可能にする（ＩＢはローカルブロックへのインターフェイスを取り扱う）。
【０２９８】
ネットワークインターフェイスユニット２７４
ネットワークインターフェイスユニット（ＮＩ）２７４は、ベットロッククロスバー２７９と、ベットロックのＳＮ１ネットポート７３との間のブリッジとして働く。ＮＩ２７４は、ＳＮ１ネット接続のすべての曲面を取り扱い、ＳＮ１ルータ７６へ、またはピアノードコントローラ７５のＮＩ２７４へ取り付けることができる。
【０２９９】
ＳＮ１ネットメッセージのフォーマットはベットロッククロスバーのメッセージフォーマットと異なるため、ＮＩは、２つのインターフェイス間を流れるすべてのメッセージを変換する。ＮＩはこれらの変換を全帯域幅で且つ各方向につき単一サイクルの待ち時間で行う。クロスバー内ですべてのベットロック側のメッセージのバッファリングが起こり、ＮＩがクロスバーと遠隔のＳＮ１ネットエージェントとの間の流れ制御情報を調停する。
【０３００】
この明細書全体に亘って用語送る及び出力は、ベットロックからＳＮ１ネットへ送られるメッセージのことであり、用語受ける及び入来は、ＳＮ１ネットからベットロックで受けるメッセージに関するものである。図３９は、ＮＩ２７４の主要なアドレス及びデータパスのブロック図である。
【０３０１】
ＳＮ１ネットワークインターフェイス
図４１は、１つの実施例のノードコントローラ７５とルータ７６との接続を示すブロック図である。
【０３０２】
物理的な層で、ＮＩは、ＳＴＩ信号技術で動作する２つの単方向のソース同期２０ビットデータポートを介してＳＮ１ネットと接続する。すべての信号が差動信号であるため、ポートごとに４４個の信号がある。この物理的な層の回路は、ピンの８００ＭＨｚのシリアルデータと、チップコアにより使用される２００ＭＨｚのパラレルデータとの間の変換を実現するソース同期ドライバ（ＳＳＤ）とソース同期レシーバ（ＳＳＲ）よりなる。
【０３０３】
リンクレベルプロトコル（ＬＬＰバージョン３．０）は、マイクロパケットとして知られる１２８ビットのデータ単位を高い信頼度で適正に転送するために、物理的な層の上にある。このプロトコルの層の動作の詳細についてはリンクレベルプロトコルの仕様を参照されたい。ＳＳＤ、ＳＳＲ及びＬＬＰの送信及び受信モジュールは、ＳＮ１ルータ７６に用いるものと同じプロトコルを実現したものである。ＳＳＤ／ＳＳＲインターフェイスの大部分の曲面は、ＬＬＰ内で取り扱われる。例外は、ＳＳＲのデータサンプリングウインドの制御であり、これはＤ  ＡＶＡＩＬセレクトポートを介して行われる。このサンプルの設定は、Ｄ  ＡＶＡＩＬ  ＳＥＬビットによりＮＩ  ＰＯＲＴ  ＰＡＲＭＳレジスタにセットされる。
【０３０４】
ＳＮ１ネットのバーチャルチャンネルのタッギング、メッセージフレーミング及びクレジットベースの流れ制御はＬＬＰの上の層であるため、ＳＮ１のコヒーレンスプロトコルメッセージがマイクロパケットシーケンスで構成される。この情報は、サイドバンドデータとしてＬＬＰから送られる（メッセージのサイドバンド符号化を示す図４０を参照されたい）。
【０３０５】
クロスバーインターフェイス
ＮＩのクロスバーインターフェイスの両方向は、内部ベットロックと、ＳＮ１ネットの転送間の帯域幅の正確なマッチングにより単純化される。全ての単一サイクルベットロックヘッダーの後にクロスバー上のデッドサイクルが来るため、２サイクルのＳＮ１ネットのヘッダーと同じ帯域幅が消費される。４倍長ワードの全てのデータマイクロパケットは、クロスバー上で２つのデータサイクルを消費し、２倍長ワードのデータマイクロパケットの後に、クロスバー上でデッドサイクルが来るため、再びＳＮ１ネットの帯域幅とのマッチングが得られる。
【０３０６】
ＳＮ１ネットから受信する全てのメッセージは全帯域幅で変換されて、クロスバーのＮＯＱセクションに送られ、そこで、バッファリングを受けて、クロスバースイッチへ直接送られる。ＮＯＱ充てんレベルは、ＮＩを介して、サイドバンドバーチャルチャンネル流れ制御プロトコルを使用することにより遠隔のＳＮ１ネットピアへ送られる。
【０３０７】
ＳＮ１ネットからベットロック内部メッセージへの変換
この章は、ＮＩポートに到達するＳＮ１ネットメッセージがいかにしてベットロック内部メッセージフォーマットへ変換されるかを説明する。
【０３０８】
ルータネットワークマイクロパケットを受信すると、ベットロックは、テイルビットがセットされたマイクロパケットに続く任意のマイクロパケットをルータネットワークのヘッダーと考える。リセットの後、受信した第１のマイクロパケットはヘッダーであると想定される。
【０３０９】
ベットロックからＳＮ１ネットヘッダーへの変換は、メッセージのタイプとは無関係である。簡単に説明すると、
【０３１０】
0004472909.tif 000004
【０３１１】
ベットロック内部からＳＭ１ネットへのメッセージの変換
この章は、ＮＩポートを出るベットロック内部メッセージがＳＮ１ネットメッセージフォーマットへ変換される態様を説明する。
ＳＮ１ネットヘッダーの行先フィールドの内容は、ベットロック内部ヘッダーのアドレスフィールド、ソースフィールドまたは補充フィールドの内容に、命令に応じて対応する（以下の表１２０に要約されている）。
【０３１２】
0004472909.tif 000005
【０３１３】
0004472909.tif 000006
【０３１４】
0004472909.tif 000007
【０３１５】
レジスタへのアクセス
ＮＩ空間のレジスタへのアクセスは、ローカルブロック（ＬＢ）により調停される。レジスタ読み出し及び書き込み要求はＬＢが受け、このＬＢは専用のレジスタデータ及びアドレスバスを用いてレジスタのデータをＮＩへまたそのＮＩから転送する。アクセス保護もＬＢにより制御される。しかしながら、ＮＩは存在しないレジスタのアドレス空間の読み出しアクセスエラーを検知する。このエラーはＬＢに送られる。
【０３１６】
ベットロックチップのＩＯインターフェイスユニット（ＩＩ）は、クロストークインターフェイスへのインターフェイスを実現するものであり、これはリスクコントローラ及びネットワークボード（例えば、イサーネット）のような入出力デバイスに接続される。
【０３１７】
図４２は、ＩＯユニット及びノードコントローラ７５の残部及び入出力ポート７９に対するその位置を示すハイレベルの図である。ベットロックのクロスバー（ＸＢ）ユニットと、ＩＩとの間のインターフェイスは、４つのＸＢ待ち行列よりなる。４つの待ち行列の名前には先頭にＲＱまたはＲＢが付けられ、それらがそれぞれ要求メッセージまたは応答メッセージを運ぶことを示す。この名前の残りの部分は、ＩＩセクションがメッセージを受けるもの（入力待ち行列、ＩＩＱ）またはメッセージを送るもの（出力待ち行列、ＩＯＱ）であるかを示す。図６０は、各インターフェイスにより発生されるか消費することのできるメッセージのタイプをリストしたものである。
【０３１８】
ＩＩセクションは２つの基本的な機能を有する。即ち、（１）ＩＯで場がホストメモリの読み出し及び書き込みを行うことのできる方法（「ＤＭＡ」動作）を提供し、また、システムのプロセッサがＩＯデバイスを制御できる（「ＰＩＯ」動作）方法を与える。従って、用語「ＤＭＡ」は、ＩＯデバイスが要求の発信者であるケースを言い、用語「ＰＩＯ」は、システムのどこかのプロセッサが要求のソースであるケースを言う。ＩＩ自身を制御するために第３の基本的な機能である機能（「ローカルＰＩＯ」と呼ぶ）も実現される。この用語は、プロセッサが要求の発信者であることを反映したものであり、要求の対象はＩＩにとって内部（ローカル）であるレジスタである。
【０３１９】
ＤＭＡ動作では、ＩＯデバイスは、クロストーク要求メッセージをクロストーク受信インターフェイスに送ることにより要求を発信する。この要求は、クレジット要求バッファ（ＣＲＢ）と呼ぶ状態ベクトルの形でＩＩの中に記録される。この要求はベットロックの内部メッセージのフォーマットへ再フォーマットされた後、要求ＩＯＱを介してＸＢユニットへ送られ、要求の目標であるメモリのホームノードへ送られる。ＩＩのセクションＩＩセクションはＳＮ１コヒーレンスプロトコルに参加し、ターゲットメモリにアクセスするためにいくつかの動作（後で説明する）を必要とする場合がある。これらの動作が必要であるため、要求の状態をＣＲＢにおいて更新する。ＸＢから要求ＩＩＱを介して応答が受信されると、それはクロストーク送信インターフェイスへ送られ、ＣＲＢがリタイアする。
【０３２０】
ＰＩＯ動作では、プロセッサは、ルータネットワーク要求メッセージを要求ＩＩＱへ送ることにより要求を始動する。要求が読み出し要求である場合、この要求のノード番号及びプロセッサ番号が、ＴＩＯ要求バッファ（ＰＲＤ）と呼ぶ構造内に記録される。要求が書き込み要求である場合、要求するものは、それを要求ＩＯＱへ送り出すことにより直ちに書き込み応答が与えられる。この要求はその後、クロストークフォーマットへ再フォーマットされ、クロストーク送信インターフェイスを介してターゲットＩＯデバイスへ送られる。ＩＩセクションは、ＰＩＯのキャッシュコヒーレンスに関しては何の仕事もしないが、その理由は、ＩＯスペースへのアクセスがコヒーレンス領域を出ていると定義されるからである。読み出し応答がクロストーク受信インターフェイス上に受信されると、ＰＲＢに記憶された情報を用いて、応答がベットロック内部メッセージへ再フォーマットされ、応答ＩＯＱを介して送り出される。書き込み応答がクロストーク受信インターフェイス上に受信されると、それはエラー及び他の状態情報があるか否かをチェックした後捨てられる。
【０３２１】
ＩＩローカルレジスタに対するＰＩＯ動作は、ＩＯデバイスに対するＰＩＯの動作に非常によく似ている。唯一の相違点は、要求のターゲットがＩＩの内部にあるため要求がクロストークインターフェイスを関与させないことである。
【０３２２】
メッセージの流れ
バッファのオーバーフロー及びデッドロック状態を防止するため、ハードウエアの流れ制御機構を使用しなければならない。これらの流れ制御機構は階層構造であり、階層の底部で低レベルの信号のハンドシェイキングがあり、階層の上部でメッセージが同期された流れ制御がある。この生は、ＩＩの流れ制御部分の概観である。
【０３２３】
ノード内またはノード間のデッドロックを防止するため、ＩＩは、有限時間内に要求及び応答をＩＩＱから外すようにする。これは、ある特定のエラー、特に、クロストークインターフェイスに関与するエラーがあっても変わらない。ＩＩはさらに、メッセージがＩＩＱ上で費やす時間を最小限に押さえようとする。
【０３２４】
ＩＩはクロストークインターフェイスを実現するため、クロストーククレジット機構を実現する。このクレジット機構は、メッセージ入力バッファがオーバーフローしないようにする（ＩＯデバイス及びＩＩの２つの両方）。
【０３２５】
前の２つの段落に述べた機構は独立ではない。実際、クロストーククレジット機構はＩＯデバイスが遅い場合、ＩＩＱの前進に悪い影響を与える場合がある。（ＩＩはクロストーククレジットがない場合さらにＰＩＱ要求を受け付けることが出来ず、従ってＩＩＩＱの機能を停止する可能性がある）。この問題を軽減するため、ＰＩＯコンベアベルトと呼ぶ機構をＩＩが実現する。この機構は、ＰＩＯクレジットと呼ぶ第２の組のクレジットを管理する。これらのＰＩＯクレジットは、特定のＩＯディレクトリへのアクセスを管理し（全てのＩＯデバイスへのアクセスを管理するクロストーククレジットとは異なる）、特定のＩＯデバイスが別の要求を受け付けることができない時、そのＩＯデバイスの新しい要求をＩＩＱから取り出して否定応答を与える。この作用により、要求したものはその要求を再び列に並ばせてそれを送り、かくして機構に同じ名前を与えるコンベアベルトということになる。
【０３２６】
部分マージバッファとしてのＣＲＢ
ＳＮ１ネットワークプロトコル及びキャッシュコヒーレンスプロトコルは、メモリデータに対して一度に１つのキャッシュラインだけ作用する。しかしながら、ＩＯデバイスは、メモリデータのバイトサイズの固まりに対して採用することができなければならず、ＩＩはこれを行う機構を提供する必要がある。読み出しについては、これは、ＩＯデバイスがメモリ読み出しデータを要求するときは必ずキャッシュライン全体がＩＩに送られ、その後対象となるバイトがそのデバイスへ送られることを意味するに過ぎない。書き込みについては、さらに複雑である。
【０３２７】
ＩＯデバイスがキャッシュラインより小さい固まりで主メモリに書き込む場合、ＩＩは、（１）システムからキャッシュラインを要求し、（２）システムがそれを戻すとバッファにそのキャッシュラインを受け、（３）バイトデータをキャッシュラインにマージされ、（４）キャッシュライン全体を主メモリへ書き戻す。クロストークからの他の全ての要求と同様に、ＣＲＢは、キャッシュラインのコヒーレンス情報を維持するように割り当てられ、ＣＲＢに連携のキャッシュラインバッファはマージを実行するために使用される。
【０３２８】
部分キャッシュラインの書き込み（部分書き込みとも呼ぶ）のマージングは、ＩＩがキャッシュラインの排他的コピーを要求する唯一の場合を表わす。マージンが完了すると、そのラインは直ちに書き戻されるため、それは汚れた排他的状態に保持されない。
【０３２９】
クレジット応答バッファ（ＣＲＢ）
コヒーレント資源バッファ（またはＣＲＢはＩＩにより操作される。内部ＩＩ状態を示すキャッシュラインである。ＩＩはＳＮ１キャッシュコヒーレンスプロトコルに参加しなければならないため、要求を有する各キャッシュラインに関するある特定の状態情報を維持しなければならない。
【０３３０】
一般的に、クロストークから受ける各要求は、それがタッチする各キャッシュラインについて１つのＣＲＢを使用する。要求がルータネットワーク５７５へ送られると、一部の情報がＣＲＢに残されるため、応答がルータネットワーク５７５から受信されると、ＩＩはそれに対してどうするかを知っている。ＳＮ１キャッシュコヒーレンスプロトコルが複雑であると仮定して、ＩＩは、クロストーク上で要求するものに最終的に送ることのできる応答を受ける前にキャッシュラインのディレクトリまたは所有者とのいくつかの交換に参加してもよい。従って、各ＣＲＢは、キャッシュコヒーレンスプロトコルへのＩＩの参加を管理する状態マシンにおける現在の状態を表わす。
【０３３１】
キャッシュコヒーレンスプロトコルのＩＩの参加を管理する状態マシンの残部は、「ＣＲＢ表」と呼ぶ。ＣＲＢ表は、入来メッセージ、入来メッセージにより暗示されるＣＲＢ（メッセージのアドレスをＣＲＭが探索することにより決まる）及び他のＩＩの内部ファクタを見る大きな固まりの組み合わせロジックであるに過ぎない。これらの入力が与えられると、ＣＲＢ表は次のＣＲＢ状態を発生し、これがＣＲＢ及び、メッセージへの応答：ルータネットワーク５７５またはクロストーク８２への要求または応答を交信するために利用される。時として、入来メッセージがＣＲＢを更新するだけであり、出力するメッセージを発生させない。
【０３３２】
ＣＲＢ表はただ１つであり、それは１５個全てのＣＲＢとパイプラインにより共有される。
【０３３３】
ＰＩＯ応答バッファ（ＰＲＢ）
ＣＲＢは、未処理のＤＭＡ要求（クロストークにより始動される要求）についての情報を保持する。同様に、未処理のＰＩＯ要求（ルータネットワーク５７５上で始動される要求）についての情報は、ＰＩＯ応答バッファ（ＰＲＢ）に保持される。ＳＮ１システムのプロセッサがクロストーク上でＩ／Ｏデバイスに要求を行うと、ある特定の状態を維持しなければならず、応答がそのデバイスから戻ると、ＩＩはそれをどこに送るかが分かる。後述する理由により、この情報は、ＰＩＯ読み出し要求のために保持されるに過ぎない。
【０３３４】
未処理の読み出しについての情報は、読み出し表エントリー（ＰＲＴＥ）と呼ぶレジスタに保持される。８個のＰＲＴＥがあるが、これは未処理の読み出しについて１個である。ＣＲＢ表と同様に機能して、未処理の要求（ＰＲＢ及びその要求に関連するＰＲＴＥ）により記述される）及び入来メッセージの状態をとって次の状態及び応答メッセージを引き出すＰＲＢ表が存在する。これはコヒーレンス境界の入出力側にあるため（ＰＩＯ要求は定義上コヒーレンス領域から出ている）、ＰＲＢ及びＰＲＴＥにより実現される現在の状態は、ＰＲＢ表におけるようにＣＲＢよりも格段に簡単である。
【０３３５】
ＩＩ内部レジスタ
ＩＩは、多数の内部（ローカル）レジスタにより構成され制御される。それらは、この明細書の後の章で述べるようにＩＩインターフェイスを判定するに必要なＩＩ内部状態の残部を表わすため、ここで述べる。
【０３３６】
ＩＩＱインターフェイス要求
ＩＩにより受信されるルータネットワーク５７５からの要求だけは、介入であり（ＩＩが所有するキャッシュラインに関するメッセージ）、ＰＩＯは読み出し及び書き込みを（クロストークまたはＩＩのローカルレジスタに対して）行う。
【０３３７】
ローカルブロック
ベットロックチップのローカルブロック（ＬＢ）は、ＰＩＯアクセスマシン、いくつかのレジスタ、インバリデートエンジン、ベクトルＰＩＯマシン及びリアルータイムクロック発生器を含む。ＬＢに入力される入力信号と、ＬＢにより駆動される出力信号とは、いくつかの異なるグループに集めることができる。かかるグループはそれぞれ、特定のインターフェイスを構成する。これらのインターフェイスは一緒に、ＬＢユニットのインターフェイス全体を構成する。以下の節はそれぞれ特定のグループを説明
するものである。
【０３３８】
クロック、リセット及びＪＴＡＧ
【０３３９】
0004472909.tif 000008
【０３４０】
ＲＥＳＥＴ  ＬＢ入力を印加すると、ＬＢがその状態マシンを全てリセットし、そのレジスタをそれらの特定リセット値に初期化する。ＬＢは、進行中の任意の動作をアボートする。例えば、ＰＩＯ読み出しまたは書き込み要求またはＬＩＮＶＡＬ要求）。ＲＥＳＥＴ  ＬＢ  ＳＯＦＴ入力を印加すると、ＬＢはその全ての状態マシンをリセットし、進行中の任意の動作をアボートするが、レジスタはそれらの現在の内容を保持する（即ち、それらは再び初期化されない）。ＲＥＳＥＴ  ＬＢ  ＳＯＦＴ入力は診断の目的のためのものであるがベットロックチップは、プロトタイプチップが利用可能になった後実験室でテストされる。ノードがさらに進行が不可能なような膠着状態になった場合、ＲＥＳＥＴ  ＬＢ  ＳＯＦＴ入力を用いてそのチップを、ソフトウエアがレジスタの内容を検査して故障の原因を突き止めることができる状態に復帰させるように使用可能である。
【０３４１】
0004472909.tif 000009
【０３４２】
0004472909.tif 000010
【０３４３】
システム構成及びトポロジー
本発明のＳＮ１装置は、２個乃至５１２個のＣＰＵの範囲にわたるモジューラー型コンピュータシステムである。それらは別個のラックに取り付けたモジュールより成り、モジュールは、２個または４個のＣＰＵ（Ｃブリック）、８ポートルータ（Ｒブリック）、種々のＩＯブリック（Ｉブリック、Ｄブリック及び／またはＸブリック）、電源部及び／またはディスクドライブ部（Ｄブリック）を有するノードを備えている。これら全てのモジュールまたはブリック）は、１個または複数のラックに取り付けられ、ケーブルにより相互接続されている。１つの実施例では、システムと方法は１つの実施例では、１９９９年９月２９日付け米国特許出願第０９／４０８，８７４号に記載されるようなシステム及び方法を使用する。
【０３４４】
これらのシステムは非常に柔軟性の高い構成を有するが、その理由は、ＣＰＵ、メモリ、ＩＯ及びディスク資源の量を全て独立に選択できるからである。全ての機能が完全な冗長性を有する稼働率の高いシステムを容易に構成することができる。
【０３４５】
全てのＳＮ１システム（８個またはそれより少ないＣＰＵを含むシステムであってシステムは例外であって、これらはルータＲブリックを使用せずに実現される特別なケースである）は、電源部、ルータ（Ｒブリック）及び４プロセッサノード（Ｃブリック）に１個またはそれ以上の入出力ブリックを加えたグループを含む。それ以外のノードはルータにケーブル接続されるが、大型のシステムでは、ルータが互いにケーブル接続される。この構成により、低コスト、高帯域幅及び低待ち時間の組み合わせによる優れた利点が得られ、高い稼働率のシステム構成を容易にサポートする。かなり実質的な入出力システムを有する最大２４個のＣＰＵを単一のラックに構成可能である。最大３２個のＣＰＵを単一のラックに格納し、入出力システムは別個のラックにすることも可能である。大型のシステムは多数のラックにより実現される。
【０３４６】
１２８個を超えるＣＰＵを有するシステムは、多数のノードの相互接続を可能にする、メタルータと呼ぶ、幾つかのラックに装着されたさらに別のルータ７６により構成される。ラック内のモジュールは、全ての構成につき同一に編成され且つ格納され、この構成を拡張する場合にラック内で配線を変更する必要は存在しない。
【０３４７】
１６個またはそれ以下のＣＰＵを有するシステムでは、ラック内に、入出力及びディスクブリックを取り付けるための空間が存在する。大型のシステムでは、入出力及びディスクモジュールはノード３７０またはルータ７６を含まない別個のラック内に装着される。
【０３４８】
ノード：プロセッサ／メモリ
ＳＮ１システムは、１個またはそれ以上のノード３７０を有する。各ノード３７０は、２個または４個のプロセッサ７４と、それらの関連キャッシュ、主メモリ７７及び入出力ポート２７３並びにルータネットワークへのポート２７４を有する。中央のＡＳＩＣ、ノードコントローラ７５はこれら４つのサブシステムを接続する。
【０３４９】
ＣＰＵタイプ
本発明の一部の実施例では、ＣＰＵの２つのファミリーがＳＮ１システムにおいてサポートされるが、これらは、ＭＩＰＳ  Ｔ−Ｒｅｘプロセッサ（例えば、本願の出願人であるＳＧＩから市販されるＲ１２０００Ｓプロセッサ及びその関連のプロセッサ）及びインテルのＭＥＲＣＥＤプロセッサ（インテルコーポレイションから市販されると予想されルータイプのプロセッサ）である。各タイプのＣＰＵは、各ノード３７０の種々の実施例を実現するために用いる種々のボード設計    上に実現される。ノード３７０のＣブリックを交換することによりアップグレードが可能である。１つの実施例では、ＭＩＰＳ及びＭｅｒｃｅｄノードは単一のシステム内では混在させるべきではないが、両方のタイプのプロセッサを用いるシステムを、ＣｒａｙＬｉｎｋ２以外の相互接続手段によりクラスタを形成するように接続してもよい。
【０３５０】
ＭＩＰＳ  ＣＰＵ
１つの実施例では、ＳＮ１は、ＭＩＰＳ  Ｔ−Ｒｅｘ  ＣＰＵをサポートするが、このＣＰＵは、フリップチップパッケージとして実装され、２００ＭＨｚのＳＹＳＡＤ速度（ＳＹＳＡＤはプロセッサインターフェイス７２）をサポートするＴ−Ｒｅｘ  Ｓｈｒｉｎｋ（Ｒ１２０００Ｓ）ＣＰＵから始まる。種々の実施例において、ＳＮ１を発展させるためにさらに別のＭＩＰＳプロセッサの開発が計画されている。
【０３５１】
１つの実施例において、ＭＩＰＳ  ＳＮ１ノードのキャッシュサイズは４及び８ＭＢである。１つの実施例において、キャッシュは、９個の２５６ｋ×１８または５１２ｋ×１８のＳＳＲＡＭ（同期スタティックランダムアクセスメモリチップ）から構成される。Ｔ−Ｒｅｘ  Ｓｈｒｉｎｋプロセッサの二次的キャッシュは、ＣＰＵのコアクロックの半分の速度で動作する。
【０３５２】
Ｍｅｒｃｅｄ  ＣＰＵ
１つの実施例において、ＳＮ１はＭｅｒｃｅｄタイプのＣＰＵをサポートする。１つの実施例において、このＭｅｒｃｅｄ  ＣＰＵは、２つのＭｅｒｃｅｄ  ＣＰＵをＳｙｓａｄバス（ノードコントローラ７５のプロセッサインターフェイスバス７１）の１つの上で通信できるようにする別のプロセッサインターフェイスＡＳＩＣを導入することによりサポートされる。２つのプロセッサインターフェイスＡＳＩＣは、４個のＭｅｒｃｅｄ  ＣＰＵをサポートするためにノード毎に設けられる。プロセッサインターフェイスＡＳＩＣはまたレベル３のキャッシュをサポートし、これはＤＤＲ  ＳＤＲＡＭチップ（日立製作所またはＮＥＣから市販されるもの及びＩＢＭによりサンプルされるような二データ速度同期ダイナミックランダムアクセスメモリ）を用いて実現される。このキャッシュは、ＣＰＵの実効メモリアクセス時間を改善し、Ｍｅｒｃｅｄ  ＣＰＵがＭｉｐｓ  ＣＰＵに使用するプロトコルに基づくＳＮ１システムで作動できるようにするに必要なプロトコルの変換を行うためにも使用される。
【０３５３】
主メモリ構成
１つの実施例において、ＳＮ１システムは、主メモリとしてＤＤＲ  ＳＤＲＡＭを含むカストムＤＩＭＭ（デュアルインメモリモジュール）を使用する。大型のＳＮ１システム（１２８個のプロセッサより大きいスケールアップが可能なシステム）に用いるＤＩＭＭは物理的には同じであるが、最大５１２個のＣＰＵの構成を可能にする十分なディレクトリメモリを提供するさらに１つのメモリチップを含んでいる。
【０３５４】
これらのＤＩＭＭは、この明細書ではプレミアムＤＩＭＭと呼ぶが、余分のディレクトリスペースのないＤＩＭＭは標準型ＤＩＭＭと呼ぶ。プレミアムと標準型ＤＩＭＭは、ディレクトリメモリの違いを除き同一であり、共通のＰＣＢ（印刷回路ボード）設計を共有する。ＣＰＵが１２８個未満のシステムでは、これら２つのタイプを互換的に使用し、１つのノード内にそれらを混在することが可能である。これらの実施例では、複数のメモリ／ディレクトリカードのうちの各々のディレクトリデータ空間に対するメモリデータ空間の比率は、マルチプロセッサコンピュータシステムのサイズに基づく値にセットされる。一部の実施例では、このサイズはシステムのＣＰＵの数として、特に、プロセッサが１２８個以上であるか否かにより決める。プロセッサが１２８以上含まれる場合、余分のメモリチップを有するプレミアムＤＩＭＭ（即ち、ディレクトリデータ空間に対するメモリデータ空間の比率が低い）を用いる。
【０３５５】
１つの実施例において、各ノード３７０のボードは、２つのＤＩＭＭをそれぞれ含む４つのバンクとして配列された８個のＤＩＭＭソケットを含む。これは、従来型システムのＤＩＭＭスロットの数の半分であることを注意されたい。この決定は、ＳＮ１のタイムフレームで得られるメモリ密度が大きいため行われた。主メモリは、１００ＭＨｚアドレス／２００ＭＨｚデータの速度を有し、ピークの帯域幅は３２００Ｍバイト／秒であるＤＤＲ  ＳＤＲＡＭを用いて実現する。ＤＩＭＭは、顧客の種々のニーズに合わせるため広い範囲のＤＩＭＭサイズを可能にする１２８個及び２５６メガビットのＤＲＡＭを用いる。２５６メガビットの技術を用いると、各ＳＮ１ノードは最大８ギガバイトのメモリをサポートできる。
【０３５６】
ＳＮ１の全てのＤＩＭＭは、一方がデータ／ＥＣＣのための×４メモリ（４ビット幅のデータパス）チップをサポートし、他方が×８メモリ（８ビット幅データパス）チップをサポートする２つの基本となる印刷回路タイプから構成される。以下の表は、種々の実施例に用いる種々のタイプを示すものである。全てのタイプは標準型またはプレミアム型で実現可能であり、計画された例は、標準型だけで可能な最も小型のサイズ及びプレミアムだけで可能な他のサイズである。１つの実施例に使用するタイプを太字で示す。＊記号をつけたものはプレミアムＤＩＭＭである。
【０３５７】
0004472909.tif 000011
【０３５８】
上の表は、データメモリンクリメントＤＩＭＭキットを示す。このインクリメントは２つのメモリ／ディレクトリデータＤＩＭＭを必要とする。
【０３５９】
１つの実施例において、全てのＤＩＭＭは、システムコントローラにより読み出し可能なシリアルＰＲＯＭを含む。ＰＲＯＭは、部品番号、日付コード、メモリチップ製造者及びＳＰＩＤ  ＰＲＯＭのＪＥＤＥＣ基準と規定された他の情報を含む。ＤＩＭＭは、向上でＰＲＯＭを可能にする書き込みイネーブルピンを含む。このピンはノードモード上では接続される、従ってシステム１００においてＰＲＯＭに書き込むことができない。
【０３６０】
Ｃブリック
１つの実施例のＣブリックは、最大４個のＣＰＵと、８個のＤＩＭＭスロット、ノードコントローラ７５及びＬ１システムコントローラより成る単一ノードを格納する。１つの実施例において、Ｃボックスの設計は、ＭＩＰＳ  Ｔ−Ｒｅｘ  ＣＰＵまたはＩｎｔｅｌ  Ｍｅｒｃｅｄ  ＣＰＵの何れにも適用される。Ｃブリックの設計は、保守のためＣブリックの前側へまたは前側から摺動させて取り外すことができるロジックキャリアを想定して設計されている。このロジックキャリアユニットは、ノードの電子機器、フロントパネル、ホットプラグファン、Ｌ１ディスプレイ及び化粧プラスチックを保持する。Ｃブリックの前から見えるのは、Ｌ１ディスプレイと３つの前置ファンである。これらのファンは、前方から取り外し可能であり、冗長性で交換可能である。
【０３６１】
Ｃブリックの後部は直流４８ボルトの入力電源、Ｄ−ＮＥＴ、ＸＴａｌｋ２  Ｉ／Ｏ及びＵＳＢのコネクタを含む。ＵＳＢポートは、Ｒブリックのない小型システムのオプションとしてのＬ２システムコントローラに接続するために使用する。同じＵＳＢポートを、所望に応じて、Ｌ３システムコントローラに接続することもできる。
【０３６２】
ファンの交換は、Ｃブリックを作動中でも実施可能な保守の唯一の可能なタイプである。他の全ての保守（ＤＩＭＭの交換）は、ブリックの電源を切り、ロジックキャリアユニットをブリックから取り外す必要がある。
【０３６３】
ＣノードブリックＭＩＰＳ  Ｔ−Ｒｅｘ  ＣＰＵの実施
Ｔ−Ｒｅｘノードボードセットは、主ボードと最大２つのプロセッサボード（ＰＩＭＭ）を有する。１つの実施例の主ボードは、ノードコントローラ７５、メモリ７７の８個のＤＩＭＭソケット、３個の直流４８ボルトから低電圧へのＤＣ−ＤＣコンバータ、Ｌ１システムコントローラ及びＰＩＭＭ（プロセッサインラインモジュール）ボードへの接続部を保持する、半パネル（１１×１７インチ）１６層のボードである。
【０３６４】
各プロセッサボードは、Ｌ２キャッシュメモリと共にボードに直接半田付けされる２個のＭＩＰＳ  ＣＰＵ７４を保持する。各ＰＩＭＭは、各ＰＩＭＭ上の２つのＴＣ−ＤＣコンバータを用いてそれ自身の直流４８ボルトの電圧を低電圧に変換する。主ボードと各ＰＩＭＭとの間の電気的接続は、２つの２４０ポジションのアレイコネクタにより行われる。
【０３６５】
結論
本発明は、第１の局面で、マルチプロセッサコンピュータシステム（例えば、ただ２つのノードコントローラ７５が互いにプロセッサ間チャンネル７３により接続された小型のマルチプロセッサシステム４００、または数百個または数千個のノードコントローラ７５が互いにルートネットワーク５７５または他のプロセッサ間通信組織５７５を介して接続されたマルチプロセッサシステム１００または５００）を提供する。このシステムのかかる実施例は、第１のノードコントローラ７５、第２のノードコントローラ７５、第１のノードコントローラ７５に作動的に結合された第１の複数のプロセス１４１、第２のノードコントローラ７５に作動的に結合された第２の複数のプロセス１４１、第１のノードコントローラ７５に作動的に結合された第１のメモリ７７、第１のノードコントローラ７５に作動的に結合された第１の入出力システム７９及び、第１のノードコントローラ７５と、第２のノードコントローラ７５との間に作動的に結合されたプロセッサ間通信ネットワーク５７５を含む。この実施例において、第１のノードコントローラ７５は、クロスバーユニット２７９と、クロスバーユニット２７９と、第１のメモリ７７との間に作動的に結合されたメモリポート２７５と、クロスバーユニット２７９と、第１の入出力システム７９との間に作動的に結合された入出力ポート２７３と、クロスバーユニット２７９と、プロセッサ間通信ネットワーク５７５との間に作動的に結合されたネットワークポート２７４と、複数の独立のプロセッサポート２７０とよりなり、これらのプロセッサポートは、クロスバーユニット２７９と、第１の複数のプロセッサ７４の第１の副集合２４１との間に作動的に結合された第１のプロセッサポート２７１と、クロスバーユニット２７９と、第１の複数のプロセッサ７４の第２の副集合２４２とび間に作動的に結合された第２のプロセッサポート２７２とを含む。
【０３６６】
システムの一部の実施例では、第１のノードコントローラ７５は、単一の集積回路チップ４７５上に形成される。
【０３６７】
システムの一部の実施例において、第１のメモリ７７は、複数のプラグ接続可能なメモリ／ディレクトリカード６００上に実装され、各カード６００は、メモリデータの保持専用のメモリチップの第１の副集合６２０と、ディレクトリデータの保持専用のメモリチップの第２の副集合とを含む複数のメモリチップ６１０を有する。さらに、メモリポート２７５は、メモリチップ６１０の第１の副集合に結合されたメモリデータバス６１１及びメモリアドレスバス６１２を含むメモリデータポート６１３と、メモリチップ６２０の第２の副集合に結合されたディレクトリデータバス６２１及びディレクトリアドレスバス６２２を含むディレクトリデータポート６２３とを有する。かかる一部の実施例では、複数のメモリ／ディレクトリカードの各々の、メモリチップの第２の副集合６２０のデータ空間に対するメモリチップの第１の副集合６１０のデータ空間の比率は、マルチプロセッサコンピュータシステムのサイズに応じた値に設定されている。
【０３６８】
システムの一部の実施例において、クロスバーユニット２７９は、逐次的に受信する２つの２倍長ワードのデータを選択的に組み合わせることにより、クロスバーユニット２７９を介して伝送される４倍長ワードのマイクロパケットを形成し、各２倍長ワードは少なくとも６４ビットのデータを含み、単一の４倍長ワードは少なくとも１２８ビットのデータを含む。
【０３６９】
システムの一部の実施例において、第１のノードコントローラ７５及び第２のノードコントローラ７５は、プロセッサ間通信チャンネル７３により互いに直接接続される。他の実施例では、第１のノードコントローラ７５及び第２のノードコントローラ７５は、１またはそれ以上の他のノードコントローラ７５に接続されたルータチップ７６を介して互いに間接的に接続される。
【０３７０】
本発明は、別の局面において、１またはそれ以上のノードコントローラを含むマルチプロセッサシステム１００、３００、５００に用いる第１のノードコントローラを提供する。この第１のノードコントローラは、クロスバーユニット２７９と、メモリ７７との通信のためにクロスバーユニット２７９に作動的に結合されたメモリポート２７５と、第１の入出力システム７９との通信のためにクロスバーユニット２７９に作動的に結合された入出力ポート２７３と、プロセッサ間ネットワーク５７５を介する第２のノードコントローラ７５との通信のためにクロスバーユニット２７９に作動的に結合されたネットワーク２７４と、複数の独立のプロセッサポート２７０とよりなる。これらのプロセッサポート２７０は、第１の複数のプロセッサ７４の第１の副集合２４１との通信のためにクロスバーユニット２７９に作動的に結合された第１のプロセッサポート２７１と、第１の複数のプロセッサ７４の第２の副集合２４２との通信のためにクロスバーユニット２７９に作動的に結合された第２のプロセッサポート２７２とを含む。
【０３７１】
ノードコントローラの種々の実施例において、本発明の第１のシステム局面の実施例について述べたように、オプションとして種々の詳細部分が組み込まれる。
【０３７２】
本発明は、別の局面において、第１のノードコントローラを含む１またはそれ以上のノードコントローラ７５と、第１のノードコントローラに作動的に結合された第１の複数のプロセッサ７４と、第１のノードコントローラに作動的に結合された第１のメモリ７７とよりなるマルチプロセッサシステム１００、３００または５００（第２のシステム）を提供する。第１のノードコントローラ７５は、単一の集積回路チップとして実装され、クロスバーユニット２７９と、クロスバーユニットと、第１のメモリとの間に作動的に結合されたメモリポート２７５と、複数の独立のプロセッサポートとよりなり、これらのプロセッサポートは、クロスバーユニットと、第１の複数のプロセッサの第１の副集合との間に作動的に結合された第１のプロセッサポートと、クロスバーユニットと、第１の複数のプロセッサの第２の副集合との間に作動的に結合された第２のプロセッサポートとを含み、第１の副集合２４１は複数のプロセッサ７４を含み、第２の副集合２４２は複数のプロセッサ７４を含む。
【０３７３】
第２のシステムの一部の実施例において、このシステムはさらに、第１のノードコントローラ７５に作動的に結合された第１の入出力システム７９を具備し、第１のノードコントローラ７５はさらに、クロスバーユニット２７９と、第１の入出力システム７９との間に作動的に結合された入出力ポート２７３を有する。
【０３７４】
第２のシステムの一部の実施例において、このシステムはさらに、第１のノードコントローラと、第２のノードコントローラとの間に作動的に結合されたプロセッサ間通信ネットワーク７３を具備し、第１のノードコントローラ７５はさらに、クロスバーユニットと、プロセッサ間通信ネットワークとの間に作動的に結合されたネットワークポート２７４を有する。
【０３７５】
第２のシステムの一部の実施例において、このシステムはさらに、第１のノードコントローラに作動的に結合された第１の入出力システム７９と、第１のノードコントローラと、第２のノードコントローラとの間に作動的に結合されたプロセッサ間通信ネットワーク５７５とを具備し、第１のノードコントローラ７５は、さらに、クロスバーユニットと、第１の入出力システムとの間に作動的に結合された入出力ポート２７３と、クロスバーユニットと、プロセッサ間通信ネットワークとの間に作動的に結合されたネットワークポート２７４とを有する。
【０３７６】
第２のシステムの一部の実施例において、第１のメモリ７７は、複数のプラグ接続可能なメモリ／ディレクトリカード上に実装され、各カードは、メモリデータの保持専用のメモリチップの第１の副集合６１０と、ディレクトリデータの保持専用のメモリチップの第２の副集合６２０とを含む複数のメモリチップを有し、メモリポート２７５は、さらに、メモリチップの第１の副集合６１０に結合されたメモリデータバス６１１及びメモリアドレスバス６１２を含むメモリデータポート６１３と、メモリチップ６２０の第２の副集合に結合されたディレクトリデータバス６２１及びディレクトリアドレスバス６２２を含むディレクトリデータポート６２３とよりなる。かかる実施例において、複数のメモリ／ディレクトリカードの各々の、メモリチップの第２の副集合のデータ空間に対するメモリチップの第１の副集合のデータ空間の比率は、マルチプロセッサコンピュータシステムのサイズに応じた値に設定されている。
【０３７７】
本発明は、別の局面において、上述したシステムの１またはそれ以上に利用可能な方法を提供する。この方法は、メモリポート２７５と、第１のプロセッサポート２７１との間でデータを伝送し、メモリポート２７５と、第２のプロセッサポート２７２との間でデータを伝送し、メモリポート２７５と、入出力ポート２７３との間でデータを伝送し、メモリポート２７５と、ネットワークポート２７４との間でデータを伝送するステップよりなる。
【０３７８】
この方法の一部の実施例は、さらに、プロセッサ間通信チャンネルにより互いに直接接続された第１のノードコントローラと、第２のノードコントローラとの間で直接、データを伝送するステップを含む。
【０３７９】
この方法の一部の実施例は、さらに、１またはそれ以上の他のノードコントローラにも接続されたプロセッサ間通信組織５７５を介して第１のノードコントローラ７５と、第２のノードコントローラ７５との間で間接的にデータを伝送するステップを。
【０３８０】
この方法の一部の実施例は、さらに、メモリポート、第１のプロセッサポート、第２のプロセッサポート、入出力ポート及びネットワークポートのうちの任意の２つの間でデータを伝送するステップを含む。
【０３８１】
この方法の一部の実施例では、メモリポート、第１のプロセッサポート、第２のプロセッサポート、入出力ポート及びネットワークポートのうちの任意の２つの間におけるデータの伝送は、複数のかかる伝送が同時に起こるように非ブロック方式で行われる。
【０３８２】
本発明は、さらに別の局面において、プロセッサの数、メモリの大きさ及び／またはノードの数のようなシステムのサイズに応じてディレクトリの相対的なサイズが変化するシステムを提供する。かかる実施例の一部は、各々がメモリポート、別個のネットワークポート、別個の第１のプロセッサポート、及びオプションとして第２の別個のプロセッサポート２７２を備えた、第１のノードコントローラを含む複数のノードコントローラ７５と、複数のノードコントローラのそれぞれ１つのネットワークポートに作動的に結合されたプロセッサ間通信ネットワークと、第１のノードコントローラの第１のプロセッサポートに作動的に結合された第１の複数のプロセッサを含む、複数のノードコントローラのそれぞれ１つの第１のプロセッサポートに作動的に結合された複数のプロセッサ７４と、複数の別個のメモリ７７とよりなり、複数の別個のメモリのうちの１またはそれ以上のメモリは、複数のノードコントローラのそれぞれ１つのメモリポートにローカルに作動的に結合され、第１のノードコントローラのメモリポートにローカルに作動的に結合された第１のメモリを含み、第１のメモリは複数のプラグ接続可能なメモリ／ディレクトリカード上に実装され、各カードは、メモリデータの保持専用のメモリチップの第１の副集合と、ディレクトリデータの保持専用のメモリチップの第２の副集合とを含む複数のメモリチップよりなり、第１のノードコントローラのメモリポートは、さらに、メモリデータが複数のメモリカードから同時にアクセスされるように、複数のメモリ／ディレクトリカードの各々の上のメモリデータバス及びメモリチップの第１の副集合に結合されたメモリアドレスバスを含むメモリデータポートと、メモリデータのアクセスとは無関係に複数のメモリカードから同時にディレクトリデータがアクセスされるように、複数のメモリ／ディレクトリカードの各々の上のメモリチップの第２の副集合に結合されたディレクトリデータバス及びディレクトリアドレスバスを含むディレクトリデータポートとよりなる。一部の実施例において、複数のメモリ／ディレクトリカードの各々の、メモリチップの第２の副集合のデータ空間に対するメモリチップの第１の副集合のデータ空間の比率は、マルチプロセッサコンピュータシステムのサイズに応じた値に設定されている。種々の実施例において、この比率を決定するサイズは、プロセッサの数、メモリの大きさ及び／またはノードの数に基づく。
【０３８３】
以上の説明は例示的なものであって、限定的な意味を持たないことを理解されたい。当業者には、本願の記載に鑑みて、多数の変形例及び設計変更が自明であろう。したがって、本発明の範囲は、頭書の特許請求の範囲を参照して決定すべきであり、全ての均等物の範囲が与えられるべきである。
【図面の簡単な説明】
【図１】図１は、本発明のマルチプロセッサシステム１００の１つの実施例である。
【図２】図２は、ルータ７６が６個のルータ接続部７２と、８個のプロセッサ７４とを備え、４個のプロセッサ７４が２個のノードコントローラ７５の各々に接続されたノードクラスタ１７０の実施例である。
【図３】図３は、単一のルータ７６を備えたマルチプロセッサシステム３００の一実施例である。
【図４】図４は、ルータチップはないが、２つのノードコントローラが互いに接続されたマルチプロセッサシステム４００の一実施例である。
【図５】図５は、本発明のマルチプロセッサシステム５００の一実施例である。
【図６Ａ】図６Ａは、ＤＩＭＭモジュール６００を示す。
【図６Ｂ】図６Ｂは、４つのＤＩＭＭモジュール６００を備えたＤＩＭＭガイド６７３を示す。
【図７Ａ】図７Ａは、本発明の一実施例によるノードコントローラを示す。
【図７Ｂ】図７Ｂは、単一のチップの４７５内に実現されたノードコントローラ７５の一実施例をその内部のデータの流れと共に示す図である。
【図７Ｃ】図７Ｃは、ノード３７０内のノードコントローラ７５の図であり、本発明の一実施例の種々のインターフェイス幅及びクロック速度を示す。
【図７Ｄ】図７Ｄは、ノードコントローラ７５の一実施例のメッセージのヘッダー及びデータフォーマットを示す。
【図７Ｅ】図７Ｅは、ソース及び補充フィールドのフィールドフォーマットを示す。
【図７Ｆ】図７Ｆは、制御フィールド７４１または制御フィールド７４７の制御信号の使用態様を示す表である。
【図７Ｇ】図７Ｇは、フィールド７４３のデバイスＩＤ符号化法を示す。
【図７Ｈ】図７Ｈは、ＸＢ２７９のメッセージのヘッダー内のソースフィールドの内容を示すための用語である。
【図７Ｉ】図７Ｉは、内部ベッドロックメッセージのソース及び補充フィールドを示す表（表３）である。
【図７Ｊ】図７Ｊは、内部ベッドロックメッセージのソース及び補充フィールドを示す表（表３）である。
【図７Ｋ】図７Ｋは、内部ベッドロックメッセージのソース及び補充フィールドを示す表（表３）である。
【図７Ｌ】図７Ｌは、内部ベッドロックメッセージのソース及び補充フィールドを示す表（表３）である。
【図７Ｍ】図７Ｍは、内部ベッドロックメッセージのソース及び補充フィールドを示す表（表３）である。
【図７Ｎ】図７Ｎは、内部ベッドロックメッセージのソース及び補充フィールドを示す表（表３）である。
【図７Ｏ】図７Ｏは、ＸＢ２７９のＸｓｅｌ選択符号化法の表（表４）である。
【図８】図８は、ＸＢ２７９の一実施例のブロック図である。
【図８Ａ】図８Ａは、ＰＯＱ／ＰＩインターフェイス信号の表である。
【図８Ｂ】図８Ｂは、ＰＩＱ／ＰＩインターフェイス信号の表である。
【図９】図９は、ＰＩＱのタイミング図９００である。
【図９Ａ】図９Ａは、ＭＯＱ／ＭＤインターフェイス信号の表である。
【図１０】図１０は、ＭＤ／ＭＯＱインターフェイス信号のタイミング図１０００である。
【図１０Ａ】図１０Ａは、ＸＢ／ＭＤインターフェイス信号の表である。
【図１１】図１１は、ＮＯＱインターフェイスのタイミング図１１００である。
【図１１Ａ】図１１Ａは、ＮＯＱ／ＮＩインターフェイス信号の表である。
【図１１Ｂ】図１１Ｂは、ＸＢ／ＮＩインターフェイス信号の表である。
【図１２】図１２は、アクセスエラー（ＡＥ）のプロトコルを示す。
【図１２Ａ】図１２Ａは、ＬＯＱ／ＬＢインターフェイス信号の表である。
【図１２Ｂ】図１２Ｂは、ＬＩＱ／ＬＢインターフェイス信号の表である。
【図１２Ｃ】図１２Ｃは、ＩＯＱ／ＩＩインターフェイス信号の表である。
【図１２Ｄ】図１２Ｄは、ＩＩＱ／ＩＩインターフェイス信号の表である。
【図１３】図１３は、サンプルバイパスアービターインターフェイス信号の表である。
【図１４】図１４は、ＭＯＱフィルタを一例として示す、ＸＢ２７９のＸＢアービターフィルタ１４００の図である。
【図１５】図１５は、波面アービター構造１５００の図であり、６個の固定優先のアービターのうちのただ１つを示す。
【図１５Ａ】図１５Ａは、サンプル波面アービターインターフェイス信号の表である。
【図１６】図１６は、ＸＢ２７９の流れ制御のタイミング図である。
【図１６Ａ】図１６Ａは、入力待ち行列を要求するチャンネルの表である。
【図１７】図１７は、ＭＯＱデータバッファのブロック図である。
【図１７Ａ】図１７Ａは、入力待ち行列を要求する信号の表である。
【図１８】図１８は、ＮＯＱバッファのブロック図である。
【図１９】図１９は、ＩＯＱバッファのブロック図である。
【図２０】図２０は、ＭＩＱバッファのブロック図である。
【図２１】図２１は、ＬＩＱバッファのブロック図である。
【図２２】図２２は、ＸＢ２７９の一実施例のセルカウンタと、ＸＢ２７９の種々のレジスタ及び構造の構成及びサイズを示す。
【図２３】図２３は、ＰＩ２７０のブロック図である。
【図２３Ａ】図２３Ａは、いくつかのＴ−Ｒｅｘ速度で及びクロックディバイダーのためのＳＹＳＡＤインターフェイスの速度を示す。
【図２４】図２４は、ＰＩ２７０のアドレス及びデータパスのブロック図である。
【図２５】図２５は、ＲＲＢ要素のデータ構造を示す図である。
【図２５Ａ】図２５Ａは、種々のＲＲＢ状態ビットを示す。
【図２６】図２６は、ＲＲＢのブロック図である。
【図２７】図２７は、ＷＲＢ要素のデータ構造図である。
【図２７Ａ】図２７Ａは、ＷＲＢ状態ビットの表（表３５）である。
【図２８】図２８は、ＩＲＢ要素の一実施例のデータ構造を示す。
【図２９】図２９は、本発明の一実施例のＰＩ２７０により提供される機能を示す。
【図２９Ａ】図２９Ａは、Ｔ−Ｒｅｘが発生する要求の表（表３６）である。
【図２９Ｂ】図２９Ｂは、ＷＲＢコンフリクトのＲＲＢ要求の表（表３７）である。
【図２９Ｃ】図２９Ｃは、出力される要求のデータフォーマットを示す表（表２８）である。
【図２９Ｄ】図２９Ｄは、入来応答動作のためのデータフォーマットを示す表（表３９）である。
【図３０】図３０は、Ｔ−Ｒｅｘ外部ブロックデータ応答のＳＹＳＡＤ調停のタイミング図である。
【図３１】図３１は、ＭＤ２７５の一実施例のブロック図である。
【図３２】図３２は、メモリＤＩＭＭ６００の一実施例のブロック図である。
【図３２Ａ】図３２Ａは、ＤＩＭＭ構成の表（表５８）である。
【図３３】図３３は、１対の標準型メモリＴＩＭＭ６８０の一実施例のブロック図である。
【図３４】図３４は、１対のプレミアムメモリＤＩＭＭ６９０の一実施例のブロック図であり、対の一半を示す。
【図３４Ａ】図３４Ａは、使用するアドレス変換表（表５９）である。
【図３４Ｂ】図３４Ｂは、ＭＤ２７５の入来メッセージ表（表６０）である。
【図３４Ｃ】図３４Ｃは、ＭＤ２７５の出力されるメッセージ表（表６１）である。
【図３５】図３５は、ＭＤ２７５の待ち行列の一実施例のブロック図である。
【図３６】図３６は、ＭＤ２７９と、外部のＰＲＯＭ、ＵＡＲＴ、ＬＥＤ及びシナジーブリッジチップのインターフェイスの一実施例を示すブロック図である。
【図３７】図３７は、メモリブロックデータパスの一実施例である。
【図３８】図３８は、フェッチ及び演算キャッシュデータパスの一実施例を示す。
【図３９】図３９は、ＮＹ２７４の主アドレス及びデータパスのブロック図である。
【図４０】図４０は、メッセージサイドバンド符号化法を示す。
【図４１】図４１は、１つの実施例のノードコントローラ７５とルータ７６との間の接続を示すブロック図である。
【図４２】図４２は、ＩＯユニットと、ノードコントローラ７５及び入出力ポート７９の残部に対する位置を示すハイレベルの図である。
【図１】
0004472909.tif 000012
【図２】
0004472909.tif 000013
【図３】
0004472909.tif 000014
【図４】
0004472909.tif 000015
【図５】
0004472909.tif 000016
【図６Ａ】
0004472909.tif 000017
【図６Ｂ】
0004472909.tif 000018
【図７Ａ】
0004472909.tif 000019
【図７Ｂ】
0004472909.tif 000020
【図７Ｃ】
0004472909.tif 000021
【図７Ｄ】
0004472909.tif 000022
【図７Ｅ】
0004472909.tif 000023
【図７Ｆ】
0004472909.tif 000024
【図７Ｇ】
0004472909.tif 000025
【図７Ｈ】
0004472909.tif 000026
【図７Ｉ】
0004472909.tif 000027
【図７Ｊ】
0004472909.tif 000028
【図７Ｋ】
0004472909.tif 000029
【図７Ｌ】
0004472909.tif 000030
【図７Ｍ】
0004472909.tif 000031
【図７Ｎ】
0004472909.tif 000032
【図７Ｏ】
0004472909.tif 000033
【図８】
0004472909.tif 000034
【図８Ａ】
0004472909.tif 000035
【図８Ｂ】
0004472909.tif 000036
【図９】
0004472909.tif 000037
【図９Ａ】
0004472909.tif 000038
【図１０】
0004472909.tif 000039
【図１０Ａ】
0004472909.tif 000040
【図１１】
0004472909.tif 000041
【図１１Ａ】
0004472909.tif 000042
【図１１Ｂ】
0004472909.tif 000043
【図１２】
0004472909.tif 000044
【図１２Ａ】
0004472909.tif 000045
【図１２Ｂ】
0004472909.tif 000046
【図１２Ｃ】
0004472909.tif 000047
【図１２Ｄ】
0004472909.tif 000048
【図１３】
0004472909.tif 000049
【図１４】
0004472909.tif 000050
【図１５】
0004472909.tif 000051
【図１５Ａ】
0004472909.tif 000052
【図１６】
0004472909.tif 000053
【図１７】
0004472909.tif 000054
【図１６Ａ】
0004472909.tif 000055
【図１７Ａ】
0004472909.tif 000056
【図１８】
0004472909.tif 000057
【図１９】
0004472909.tif 000058
【図２０】
0004472909.tif 000059
【図２１】
0004472909.tif 000060
【図２２】
0004472909.tif 000061
【図２３】
0004472909.tif 000062
【図２３Ａ】
0004472909.tif 000063
【図２４】
0004472909.tif 000064
【図２５】
0004472909.tif 000065
【図２５Ａ】
0004472909.tif 000066
【図２６】
0004472909.tif 000067
【図２７】
0004472909.tif 000068
【図２７Ａ】
0004472909.tif 000069
【図２８】
0004472909.tif 000070
【図２９】
0004472909.tif 000071
【図２９Ａ】
0004472909.tif 000072
【図２９Ｂ】
0004472909.tif 000073
【図２９Ｃ】
0004472909.tif 000074
【図２９Ｄ】
0004472909.tif 000075
【図３０】
0004472909.tif 000076
【図３１】
0004472909.tif 000077
【図３２】
0004472909.tif 000078
【図３２Ａ】
0004472909.tif 000079
【図３３】
0004472909.tif 000080
【図３４】
0004472909.tif 000081
【図３４Ａ】
0004472909.tif 000082
【図３４Ｂ】
0004472909.tif 000083
【図３４Ｃ】
0004472909.tif 000084
【図３５】
0004472909.tif 000085
【図３６】
0004472909.tif 000086
【図３７】
0004472909.tif 000087
【図３８】
0004472909.tif 000088
【図３９】
0004472909.tif 000089
【図４０】
0004472909.tif 000090
【図４１】
0004472909.tif 000091
【図４２】
0004472909.tif 000092