JPH04306758A - メモリ共有マルチプロセッサ - Google Patents

メモリ共有マルチプロセッサ

Info

Publication number
JPH04306758A
JPH04306758A JP3312723A JP31272391A JPH04306758A JP H04306758 A JPH04306758 A JP H04306758A JP 3312723 A JP3312723 A JP 3312723A JP 31272391 A JP31272391 A JP 31272391A JP H04306758 A JPH04306758 A JP H04306758A
Authority
JP
Japan
Prior art keywords
bus
data
cache
memory
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP3312723A
Other languages
English (en)
Other versions
JP2512651B2 (ja
Inventor
Pradeep S Sindhu
プラディープ・エス・シンデュー
Jean-Marc Frailong
ジャン−マーク・フライロング
Jean A Gastinel
ジャン・エイ・ガスティネル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xerox Corp
Original Assignee
Xerox Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xerox Corp filed Critical Xerox Corp
Publication of JPH04306758A publication Critical patent/JPH04306758A/ja
Application granted granted Critical
Publication of JP2512651B2 publication Critical patent/JP2512651B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 【0001】この発明はコンピュータ・システムに対す
る同期的なパケット切り換え式のメモリ・バスに関する
ものであり、より詳細には、共有データの多重のキャッ
シュ・コピー間の両立性が必要とされる、特にメモリが
共有されたマルチプロセッサにおけるこのようなバスの
使用可能なバンド幅を増大させるためのバス・アーキテ
クチュアおよびプロトコルに関するものである。これを
更に詳細にいえば、この発明は、多重の階層化したメモ
リ・キャッシュを備えたメモリ共有マルチプロセッサを
含んでいるVLSI(超大規模集積化)コンピュータ・
システムに対する、前述のタイプのスケーラブル・メモ
リ・バスに関するものである。 【0002】コンピュータのメモリ・バスを設計すると
きの主要な目標は、それらの使用可能なバンド幅を最大
にすることにある。ショート・バスのサイクル・タイム
はこれを達成するために必要とされるものであるが、こ
れだけではバスの使用可能なバンド幅がその電気的なバ
ンド幅と確実に両立するようにはならない。その理由は
、該当の目標を達成するためには、バスも高い効率(通
常は、使用可能なバスのバンド幅に対するその電気的な
バンド幅の比率として規定される)を持たねばならない
からである。 【0003】実際に、通常の回路で切り換えられるバス
の使用可能なバンド幅を増大させるためには、ショート
・バスのサイクル・タイムは比較的価値が低いものであ
るが、その理由は、該回路でのバスの切り換えにより、
トランザクション対トランザクションをベースとして、
連続的なトランザクションに対するリクエスト(要求)
/リプライ(応答)のペアが直列化されるからである。 知られているように、コンピュータ・システムがその実
行を要求されるメイン・メモリのトランザクションの数
および頻度を減少させるべくキャッシュ・メモリ・シス
テムを用いることができるけれども、高い実行能力のシ
ステムにおいては、通常は静止状態にあるメモリ・バス
上のトラフィックが実行能力の有力な制限ファクタであ
る。 【0004】不都合なことに、経済的に実用可能なメイ
ン・メモリのアクセス・タイムが、典型的には、実現可
能なバスの最小のサイクル・タイムよりも数倍も長く、
このために、回路で切り換えられるバスの使用可能なバ
ンド幅がメイン・メモリのアクセス・タイムによって制
限され易くなる。キャッシュ・メモリを有するシステム
においては、回路で切り換えられるバスの無駄にされた
”ウエイト(待ち)”サイクル(即ち、その無駄にされ
たバンド幅)の減小は、メイン・メモリ/キャッシュ・
メモリのデータ・トランスポート・ユニットのサイズを
増大させることにより可能であって、これにより、より
大きいデータのブロックにわたるバスのウエイト・サイ
クルを償却するようにされる。しかしながら、このアプ
ローチによれば、1台または複数台のプロセッサによっ
てバス上に配置されるバンド幅ロードが増大する傾向が
生じて、より大きいデータ転送ユニットの利点が少なく
とも部分的に失われることになる。 【0005】他の者が認識していることは、“パケット
によって切り換えられる”バス(ときには、“スプリッ
ト・サイクル”バスまたは“ペンディング”バスと呼ば
れることもある)を用いることにより、アイドル・バス
・サイクルに起因するバンド幅の不利益点が回避できる
ということである。バスのパケットでの切り換えにより
バスのトランザクションのリクエストおよびリプライが
互いに分離され、これによって、多重のトランザクショ
ンに対するリクエストおよびリプライがバス上でインタ
リーブすることが許容される。一般的なルールとして、
アイドル・バス・サイクルの回避は、メイン・メモリが
関係するトランザクション(即ち、“メイン・メモリ・
トランザクション”)のリクエストおよびリプライを分
離することによって簡単に可能にされる。しかしながら
、全てのバス・トランザクションのリクエストおよびリ
プライを分離することが有利であることは見出されてお
り、そのために、(実施方法によって異なる最小数のサ
イクルを超える)可変数のバス・サイクルが、任意のリ
クエストとそれに対応するリプライとの間に介在するこ
とができて、ある所定のタイムアウト周期内にリプライ
が受け入れられないリクエストの、可能性のある終了ま
たは不成功にのみ追従するようにされる。全てのリクエ
ストおよびリプライについてのこの本質的な完全な分離
によりバスのデッドロックの排除の助けがなされるが、
産業上の標準的なシステムを含んでいる、異なるまたは
“関連のない”コンピュータ・システムのメモリ・バス
のような、非同期式のデバイスと該バスとのインタフェ
ースがより容易になるようにされる。更に、インタリー
ブされたメイン・メモリ・モジュールの使用が容易にさ
れ、また、マルチレベルで階層性のキャッシュ・メモリ
・システムを有するマルチプロセッサに対するキャッシ
ュの両立性の問題に対する解決が簡単にされる。 【0006】使用可能なバンド幅とキャッシュの両立性
とは、関連しているけれども分離可能な問題である。こ
こで理解されるようにキャッシュの両立性にはより詳細
な考慮がなされる。その理由は、マルチプロセッサにお
けるような異なるプロセッサのコントロールの下に、キ
ャッシュされたデータ・コピーの中の異なるものが更新
されることを許容しながら、共有データの多重にキャッ
シュされたコピーのアクセスをするバスに対して特別の
要求があるからである。 【0007】回路で切り換えられるバスに対するキャッ
シュの両立性の問題については、幾つかの解決策が知ら
れている。例えば、ともに係属中であり譲渡されたPa
radeep  S.Sindhu  et  al.
の米国特許出願が参照される。この米国特許出願は、“
マルチプロセッサのためのマルチ・レベルのキャッシュ
・メモリ・ツリー”として、1986年11月12日に
、出願番号第929,544号をもって出願されたもの
(D/86288)である。しかしながら、キャッシュ
の両立性を維持するためのこれら既知の技術は、パケッ
トで切り換えられるバスに対して直接的に適用できるも
のではない。なお、Andrew  W.Wilson
,Jr.,“Hierarchical  Cache
/Bus  Architecture  for  
Shared  Memory  multiproc
essors,”Computer  Archite
ctureConference  IEEE/ACM
),1987,pp244−252を参照されたい。 【0008】この発明においては、複数個のプロセッサ
、複数個のI/Oデバイス、複数個のキャッシュ・メモ
リおよび1個のメイン・メモリ間でのデータ転送のため
のパケットで切り換えられるバスを有する、メモリ共有
式のマルチプロセッサによってバス・プロトコルが採用
されている。そして、あらゆる時点において、全てのプ
ロセッサおよび全てのI/Oデバイスによる、全てのデ
ータに対する両立性のある値のアクセスを確実にしなが
ら、異なるプロセッサのコントロールの下に、データの
多重コピーを更新することが許容される。 【0009】この発明の他の利点および特徴については
、添付の図面と関連させて以下の説明を参照することに
よって明かにされる。 【0010】この発明の説明は、所定の例示された実施
例に関して相当程度詳細になされているけれども、この
発明はそれらの実施例に限定することを意図するもので
はないことが理解されるべきである。むしろ、その目的
とするところは、添記されている特許請求の範囲の欄に
よって規定されるように、この発明の全ての修正、変更
および均等物をカバーすることにある。 【0011】ここで開示されるメモリ・システムには幾
つかの重要な特徴があるから、異なる特徴に関連して構
成体を配置する助けとなるように、その開示は次のよう
な組成がなされている。 I.  初めの実施例 A.  システム・アーキテクチュア 1.  バスおよびメモリの階層性 a.  マルチレベルのバス・システムB.  バスの
論理的な術語 C.  バスの物理的な術語 D.  デバイス−バス・インタフェース1.  信号 2.  裁定・インタフェース 3.  データ/コントロール・インタフェース4. 
 両立性ポート E.  トランザクション 1.  メモリ関連トランザクション 2.  I/Oトランザクション 3.  多面的トランザクション F.  データの両立性 1.  単一レベルのシステムにおけるデータの両立性
2.  マルチレベルのシステムにおけるデータの両立
性II.  増強された実施例 A.  システム・アーキテクチュア B.  デバイス−バス・インタフェース1.  信号 2.  裁定・インタフェース 3.  データ/コントロール・インタフェース4. 
 両立性ポート C.トランザクション 1.  メモリ関連トランザクション 2.  I/Oトランザクション 3.  多面的トランザクション D.データの両立性 【0012】I.  初めの実施例 ここで図面に移行すると、特に図1についてみると、複
数個のプロセッサ12aa−12ijおよび共有のメイ
ン・メモリ13を備えたマルチプロセッサ11が示され
ている。このメイン・メモリ13は集中化されたものと
して描かれているけれども、ここで理解されることは、
物理的なアドレス空間の使用されたサブセットについて
分裂した(即ち、相互に排他的であり、また、徹底的な
)カバーをするために分散化できるということである。 【0013】A.  システム・アーキテクチュア1.
  バスおよびメモリの階層性 プロセッサ12aa−12ijは1個または複数個のク
ラスタ14a−14i内で構成されているが、その各々
には、裁定され、パケットで切り換えられるローカル・
バス15a−15iがそれぞれに備えられている。例示
された実施例においてクラスタ14a−14iの各々に
含まれているものは、義務的なものではないが、1個ま
たは複数個のプロセッサ12aa−12ijである。所
望であれば、例えば該クラスタの中の一つが、マルチプ
ロセッサ13に対するI/O動作の実行のためのものと
されている。しかしながら、ここで重要であるとされる
ことは、プロセッサ12aa−12ijの各々が、第1
レベルのキャッシュ・メモリ16aa−16ijによっ
て、それぞれに(プロセッサ自体には、図示されないが
、1個または複数個のより低レベルでもあるキャッシュ
・メモリを含ませることができる)、そのクラスタまた
は“ローカル・ホスト”バス15a...,もしくは1
5iに結合されているということである。その理由は、
プロセッサ12aa−12ijがそれらのキャッシュ・
メモリ16aa−16ijを介してそれらのホスト・バ
スと通信するようにされているからである。ローカル・
バス15a−15iは、これに次いで、それぞれに、ク
ラスタ14a−14i内の共有資源に対してキャッシュ
16aa−16ijをリンクさせる。例えばクラスタ1
4aのローカル・バス15aは、プロセッサ12aa−
12ijに対する第1レベルのキャッシュ16aa−1
6ijを、それぞれに、オプションのマップ・キャッシ
ュ17aおよび中間レベルまたは第2レベルのキャッシ
ュ・メモリ19aと相互接続させる。ここで示されてい
るように、該第2レベルのキャッシュ19aは、ランダ
ム・アクセス・メモリ(RAM)モジュール20aおよ
びコントローラ21aからなるものである。 【0014】a.  マルチレベルのバス・アーキテク
チュア 例示されたマルチプロセッサ11は階層的なアーキテク
チュアを有するものであり、異なるレベルの階層におけ
る同様な構成要素を同定するために同様な参照数字が採
用されている。更に、該構成要素の階層的な依存性を同
定するときの助け(デュアル・キャラクタのサフィック
スの第1のキャラクタを参照)のために、および、共通
の依存性を有する同様な構成要素間での区別をする(デ
ュアル・キャラクタのサフィックスの第2のキャラクタ
を参照)ために、アルファベットのサフィックスが前記
の参照数字に付加されている。 【0015】所望であれば、クラスタ14a−14iの
いずれのものでも、完全に機能的なモノプロセッサまた
はマルチプロセッサのコンピュータ・システムとして動
作するように構成することができる。この発明のバス・
プロトコルによれば、単一のバス上で幾つかのプロセッ
サを支持するために十分に使用可能なバスのバンド幅が
付与されるが、ここでのシステムの構成は、大方の現存
するデスクトップ・ワークステーションの適用のために
、および、多くの現存するプリント・サーバーおよびフ
ァイル・サーバーの適用のために十分な演算パワーを付
与するものである。しかしながら、マルチプロセッサ1
1のツリー状にされた階層的なアーキテクチュアによれ
ば、ローカル・クラスタのバス・トランザクションが、
グローバルなメイン・メモリのトランザクションのよう
なグローバル・バス26上の大方のトランザクションか
ら効果的に分離される。この結果として、バスに対する
バス・トラフィックと電気的なローディングとが分散さ
れ、これによって、より大きくてより有力なマルチプロ
セッサの構成が許容される。 【0016】実際には、2−レベルの階層構成が例示さ
れているだけであるが、ここで理解されることは、階層
の任意所与のレベルにおける2本またはそれよりも多く
のバスを次に高いレベルにおけるバスと相互接続させる
ために、マルチプロセッサ11のツリー状にされたアー
キテクチュアが、キャッシュ・メモリの付加的な層(図
示されない)の使用を通して伸長可能にされるというこ
とである。ここで認められるように、キャッシュ・メモ
リ16aa−16ijおよび19a−19iはキャッシ
ュ・メモリのツリーとして構成されており、これらのキ
ャッシュの記憶能力は、典型的には、ツリーの深さが増
すにつれて減少するようにされている。階層の全てのレ
ベルにおいて同じバス・プロトコルが用いられているこ
とから、ある特定の適用についての特別の要求により良
く合わせるべくマルチプロセッサ11の再構成をするた
めに、システムの設計者は十分な自由度を有している。 【0017】メイン・メモリ13は適当なコントローラ
25を介してトップ・レベルの“グローバル”バス26
に接続されているが、プロセッサおよびI/Oデバイス
は階層の任意のレベルにおいてバスに接続することがで
きる。バスの階層性は全てのバス・クライエント(即ち
、それぞれにプロセッサ12aa−12ijに対するキ
ャッシュ16aa−16ij;I/Oブリッジ18iが
ホスト・バス15iと通信するときに介在するキャッシ
ュ60;ローカル・エリア・ネットワーク(LAN)3
0iおよびディスプレイまたはプリンタ・デバイス31
iがそれぞれにホスト・バス15iと通信するときに介
在するコントローラ28iおよび29i;クラスタ14
a−14iがそれぞれにグローバル・バス26と通信す
るときに介在する第2レベルのキャッシュ19a−19
i;および、メイン・メモリ13がグローバル・バス2
6と通信するときに介在するコントローラ25)に対し
て透明なものであり、このために、クライエントは、可
能性のあるシステム構成のいずれに対してもカスタム化
する必要がない。セクションI.D.において更に十分
に後述されるように、バス・クライエント・インタフェ
ースはシステム構成から独立している。 【0018】B.  バスの論理的な術語この発明のバ
ス・プロトコルに含まれているものは、3個の異なるレ
ベル(即ち、バス・サイクルの電気的なレベル、パケッ
トの論理的なレベル、および、トランザクションの機能
的なレベル)におけるバスの動作である。 規定すべきこととしては、“バス・サイクル”が任意の
所与バス上におけるクロックの完全な周期であることか
ら、それは単一のバスを介する電気的な情報の転送のた
めの時間的な単位である。これに対して、“パケット”
は、論理的な情報の転送のための連続的なバス・サイク
ルの近接しているシーケンスである。そして、“トラン
ザクション”は論理的な機能を実行するための“リクエ
スト”パケットおよびそれに対応する“リプライ”パケ
ットからなるものであって、ここでの論理的な機能とは
、データ・フェッチ操作(即ち、ある特定のメモリ・ア
ドレス位置からのデータの読み取り)またはデータ記憶
操作(即ち、ある特定のメモリ・アドレス位置に対する
データの書き込み)のようなことである。先に指摘され
たように、リクエスト/リプライの全てのペアは分離し
ていることから、“ペンディング・リクエスト”(即ち
、リプライを待っているリクエスト)に対して予め選択
されたタイムアウトの周期によって規定される制限にな
るまでは、いずれのトランザクションに対するリクエス
トおよびリプライでも任意数のバス・サイクルによって
分離されることができる。特徴的なこととしては、各パ
ケットの第1のサイクル(いわゆる“ヘッダ”)はアド
レスおよびコントロール情報を有しており、これに対し
て、後続のサイクルはトランザクションの規定によって
しかるべく実行することを要求されたときのデータを有
している。 【0019】バス15a−15iおよび26の各々は同
期的なものであるが、バス対バスの情報の転送が第2レ
ベルのキャッシュ19a−19iのようなキャッシュに
よって完全にバッファされることから、これらは必ずし
も互いに同期している必要はない。更に、より十分に後
述されるように、バス15a−15iおよび26の各々
は、裁定手段35a,35b,35iおよび36によっ
て独立に裁定されるものである。 【0020】パケットで切り換えられる全てのクライエ
ント・デバイス(規定すべきこととして、“クライエン
ト・デバイス”とは、−“バス・クライエント”として
参照されることもあるが−、ホスト・バス14a−14
iおよび26を介してパケットの送受をするデバイスで
ある)は、バス“マスター”およびバス“スレーブ”と
しての双方の機能を果たすことが可能でなければならな
い。しかしながら、ある所与のトランザクションを開始
するためのリクエスト・パケットを発するクライエント
が“リクエスタ”として規定されているとき、または、
このようなリクエストに応答してリプライ・パケットを
発する任意のデバイスが“レスポンダ”として規定され
ているときには、クライエント・デバイスのトランザク
ション・レベルにおける相互作用は幾らか理解し易いも
のである。ここで認められるように、任意の所与のリク
エストに対して1個を超えるレスポンダは存在しない。 【0021】その動作において、リクエスタに対するバ
スが裁定手段によって許容されることは、リクエスタに
よってなされる裁定のリクエストに応答することである
。バスの許容がなされたときには、このリクエスタはバ
ス“マスター”になり、これに次いでそのリクエスト・
パケットを発するようにされる。他の全てのバス・クラ
イエントはこのパケットによって保持されているアドレ
スおよびコマンドを調べて、それらが何等かの動作をす
るように要求されているかどうかの決定をする。1個ま
たは複数個のクライエントは、要求された動作を実行す
るために“スレーブ”としての動作の機能を果たすべく
要求されているが、そのリクエスト・パケットを発する
ことが終了すると、該当のバスがリクエスタによって即
座に解放される。かくして、リプライ・パケットをリク
エスタに対して返すことができるのに先だって裁定手段
からのバス・マスターシップを取得するために、レスポ
ンダは、固有の独立した裁定リクエストをしなければな
らない。このリプライ・パケットはリクエスタに対して
アドレスされているから、このリクエスタはそれを受け
入れるためにスレーブ・モードで動作することになる。 【0022】C.  バスの物理的な術語任意の所与の
バス(例えば、ローカル・バス15a−15iまたはグ
ローバル・バス26の任意のもの)は多くのセグメント
からなるものであるが、好適には、バスの実行能力の低
下を回避するために、いずれの単一のバス内にも2個を
超える双方向性のバス・セグメントが存在しないように
される。このために、図3−図5を参照して認められる
ことは、コンピュータ・システムが、図3におけるよう
なモノボード・コンピュータとして、図4におけるよう
なマルチボード・コンピュータとして、または、図5に
おけるようなマルチボード/マルチモジュール・コンピ
ュータとして構成されるかどうかに拘らず、各バスのセ
グメントが同期してクロックされるパイプライン・レジ
スタ37を介して接続されていることである。この発明
のバス・プロトコルに対しては、または、このプロトコ
ルで確実にされるキャッシュの両立性を維持するために
は、パイプライン操作は必須のことではないけれども、
1本または複数本のバスの電気的な特性を最適化するこ
とは容易にされる。しかしながら、ここで理解されるこ
とは、バスの各々がパケットで切り換えられることから
、パイプライン操作が実現の可能性があるオプションで
あるということである。より詳細にいえば、図3−図5
に描かれているシステムは、それぞれに、2−レベル,
3−レベルおよび4−レベルのパイプライン操作のもの
である。好適には、パイプライン式のバス・セグメント
は短いものであり、また、一般的には等しい長さのもの
であって、電気的な信号の伝播の遅れ時間を最小にし、
また、多少なりとも等しくするようにされる。更に、実
際には、バス・セグメントのあるものまたはその全てが
、不所望の信号の反射を抑制するために、平衡型の抵抗
性終端部(図示されない)等によって終端されている。 しかしながら、ここで注意されるべきことは、バスとバ
ス・プロトコルとの電気的な特性は互いに独立している
ということである。 【0023】D.  デバイス−バス・インタフェース
ここで想起されるように、図2の41において示されて
いるような標準化されたバス・インタフェースは、バス
14a−14iおよび26をそれぞれの“クライエント
・デバイス”と電気的に相互接続させるために設けられ
ている。好適には、これらのバス・クライエントに備え
られているオープン・ドレイン型のCMOSドライバお
よびレシーバ(係属中であり譲渡された、1990年3
月30日に出願番号第07/502,372号として出
願の、William  F.Gunningの米国特
許出願であって、“Drivers  and Rec
eivers  for  Interfacing 
 VLSI  CMOS  Circuits  to
  Transmission  Lines”,D/
90153を参照)は、それぞれに、バスに対する出力
信号の適用をし、また、バスからの入力信号を受け入れ
るためのものである。インタフェース41のクライエン
ト側においてこのようなドライバおよびレシーバを用い
ることの利点は、それらの電力消費が著しく低く、現に
利用可能なVLSI技術を用いてこの発明を実施するこ
とが許容されることである。 【0024】1.  信号 図6において示されているように、バス・インタフェー
ス41に備えられているものは、コントロール・ポート
、裁定ポート、受け入れポート、送出ポートおよび両立
性ポートである。インタフェース41のコントロール・
ポートに対して加えられるホスト・バスによるクロック
信号は、インタフェース41とその関連のバス・クライ
エント・デバイスとの間の全ての相互作用についてのタ
イミングをコントロールし、また、クライエント・デバ
イスによって要求される任意の他のクロック信号を導出
することができる基準を付与するためのものである。 コントロール・ポートには、同期ストップ出力信号(S
StopOut)のための出力および対応の同期ストッ
プ入力信号(SStopIn)のための入力も含まれて
おり、これによって、関連のクライエント・デバイスは
、システムを同期ストップに移行することが所望される
ときには、SStopOutを主張することができる。 いずれのバス・クライエントによるSStopOutの
主張であっても、バス上の全てのクライエントおよび該
バスに対する裁定手段に対して“真の”SStopIn
信号が加わるようにされ、これによって、クライエント
がSStopOutの主張を解除するまでは、バス上の
全ての活動を停止するようにされる。 【0025】2.  裁定インタフェース裁定手段35
a−35iおよび36は、それぞれに、任意の所与時点
において競合しているクライエント・デバイスの中でバ
ス14a−14iおよび26を時間多重化させ、これに
よって、それぞれのクライエントが、そのホスト・バス
に対する公平に拘束された時間的なアクセスを確保する
ようにされる。これらのクライエント・デバイスは、1
本または複数本の専用リクエスト・ラインによって、お
よび、1本または複数本の専用許容ラインによって、そ
れらのホスト・バスに対する裁定手段に結合されている
。 【0026】その動作において、クライエント・デバイ
スは、そのバス上にリクエスト・パケットまたはリプラ
イ・パケットを予め出力し、その1本または複数本の専
用リクエスト・ラインを介して、そのホスト・バスのた
めの裁定手段に対するバス・リクエストの送信をする。 大方の場合においては、裁定リクエストがなされるため
のリクエスト・パケットまたはリプライ・パケットをク
ライエントが十分にアセンブルした後で、該裁定リクエ
ストの送信がなされるものであるが、幾つかの場合にお
いては、クライエントによる待機時間を減少させるため
、該クライエントがまだパケットのアセンブルをしてい
る間に、裁定リクエストが裁定手段によって登録される
。例えば、メイン・メモリ13の待機時間を減少させる
ために、メモリ・コントローラ25は、好適には、メイ
ン・メモリ13からのリプライに含まれるべきデータの
検索をしながら、ReadBlockのリプライ(より
詳細に後述される)に対するその裁定リクエストを登録
するようにされる。 【0027】ここで認められるように、それぞれの裁定
手段が受け入れる裁定リクエストは異なる優先度を有し
ており、また、異なる長さのパケットの送信のためのバ
スを取得するようにされる(例えば、この初めの実施例
の実施においては、2−サイクル長および5−サイクル
長のパケットが用いられている)。このために、多くの
裁定リクエスト・ラインを設けることが好都合である(
図2および図6を参照)が、その理由は、クライエント
・デバイスによってわずか数クロック・サイクル(この
初めの実施例および増強された実施例に関して、それぞ
れに、1サイクルの裁定リクエストおよび2サイクルの
裁定リクエストが後述される)の間にそれらの裁定リク
エストをコード化することが、該多くの裁定リクエスト
・ラインによって許容されるからであり、コード化する
ことを用いることにより、異なる優先度の裁定リクエス
トと異なる長さのパケットの送信のための裁定リクエス
トとの間での識別が、裁定手段によって可能にされる。 いずれのクライエント・デバイスでも、任意の瞬間にお
けるそのバス裁定手段と係属する多くの裁定リクエスト
を備えている。裁定手段は、これに次いで、競合してい
るクライエント・デバイスについて係属する裁定リクエ
ストの優先度を定めるための予め選択された裁定ルール
を適用し、そして、専属の1本または複数本のラインを
介して、該競合しているクライエント・デバイスに対し
てバス許容信号を次々に返すことにより、逐次的にそれ
らのリクエストを優先順位をもって許容していく。 例えば、1個または複数個のクライエント・デバイスの
任意のものが、ホスト・バスに対して異なる優先度の登
録された裁定リクエストを有するときに支配をする裁定
ルールにより、裁定手段が優先度の降下する順序に応じ
てそれらのリクエストを許容するようにされる。これに
対して、1個または複数個のクライエント・デバイスか
らの同じ優先度の裁定リクエストは、競合しているクラ
イエントの間で裁定を下すための“ラウンド−ロビン”
ルール、および、任意の所与のクライエントの多くのリ
クエストの間での裁定を下すためのFIFO(先入れ/
先出し)ルールを用いて適当に処理される。 【0028】より詳細にいえば、図6において示されて
いるように、各クライエント・デバイスは、2本の裁定
リクエスト・ライン38および1本の許容ライン39を
有している。これら2本の裁定リクエスト・ライン38
のために、4個までの異なる裁定リクエストをコード化
することがクライエントにより可能にされて、図7の4
0および41におけるような裁定手段によるデコード操
作をするようにされる。全てのバス・クライエントの裁
定の要求は、メイン・メモリ・コントローラを除いて、
それらのコード化に対して以下の意味を指定することに
よって満足することができる。     コード化  No.            
            意味        0  
              システム−ワイドの保持
に対するデマンドの解除        1     
           システム−ワイドの保持に対す
るデマンド        2           
     低優先度の裁定リクエストの付加     
   3                高優先度の
裁定リクエストの付加  【0029】メイン・メモリ
の全ての裁定リクエストは同じ優先度のものであること
から、メイン・メモリ・コントローラからの裁定リクエ
ストは以下のように適当に解釈される。     コード化  No.            
            意味        0  
              システム−ワイドの保持
に対するデマンドの解除        1     
           システム−ワイドの保持に対す
るデマンド        2           
     短い(2サイクルの)パケットに対するリク
エスト                      
    の付加        3         
       長い(5サイクルの)パケットに対する
リクエスト                    
      の付加【0030】その実際においては、
裁定リクエストについての前述の解釈が、(図示されな
い手段により)システムの初期化の間に、裁定手段にお
ける裁定ポート内にプログラムされる。より詳細にいえ
ば、メモリ・コントローラに接続されているポート43
のような裁定ポートは、いわゆる“メモリ・ポート”と
して機能するようにプログラムされるが、これの意味す
ることは、それらが単一のFIFOリクエスト・レジス
タを用いており、また、短いリプライ・パケットおよび
長いリプライ・パケット(より高い優先度は“キャッシ
ュ・リプライ優先度”だけである)の双方に対して“メ
モリ優先度”が指定されることである。別の裁定ポート
42は、いわゆる“正常ポート”として機能するように
プログラムされるが、これの意味することは、低い優先
度のリクエストおよび高い優先度のリクエストを登録す
るために、分離したカウンタまたはレジスタが用いられ
るということである。このために、関連したクライエン
ト・デバイスによって低い優先度および高い優先度の裁
定リクエストが形成されるパケットの長さに関して、こ
れらの裁定ポート42の各々が更にプログラムされる。 【0031】サービスが要求されるものとして、異なる
タイプのクライエント・デバイスから裁定手段が受け入
れることができる、裁定リクエストに対する優先度の典
型的な指定は以下の通りである(下降する順序での優先
度)。     優先度  No.             
               指定        
0                キャッシュのリプ
ライの優先度        1          
      メモリ・コントローラおよびI/Oのリプ
ライの優                     
     先度        2         
       ディスプレイ・コントローラ・リクエス
トの高い優                    
      先度        3        
        I/Oリクエストの優先度     
   4                キャッシュ
のリクエストの優先度        5      
          ディスプレイ・コントローラ・リ
クエストの低い優                 
         先度【0032】一般的にいえば、
ディスプレイ・コントローラ(図1の28iを参照)で
はそのリクエストを満たすために低い裁定の優先度が用
いられていることから、他のものがアイドル状態にある
バス・サイクル中に、通常は、そのコントローラに対し
て伝送されるデータによってディスプレイの駆動がなさ
れる。しかしながら、ディスプレイに対するデータ・キ
ューが近傍のエンプティ・レベルに落ちるときには、デ
ィスプレイ・コントローラは、そのデータ・キューを補
充するために、幾つかのリクエスト・パケットに対する
その高い優先度のリクエスト・レベルを採用するように
される。 【0033】係属するリプライの個数を減少させるため
に、2個の最も高い裁定の優先度がリプライに対して指
定される。これは、バスのデッドロックを回避するため
の、重要なフロー・コントロールのメカニズムである。 また、トランザクションの実行の遅れ(即ち、リクエス
トの発行とこれに応じるリプライの受け入れとの間の時
間)も減少される。しかしながら、リプライに対して与
えられる高い優先度は、オーバフローのリスクを冒しな
がら、そのトランザクション・リクエスト・レジスタ3
4(図2)に対して十分な個数のトランザクション・リ
クエストを累積するクライエント・デバイスの可能性を
増大させる。従って、このような渋滞を防止するために
、裁定手段についてシステム・ワイドでの保持をデマン
ドする任意のクライエント・デバイスによって求められ
る第2のフロー・コントロールのメカニズムがある。 システム・ワイドでの保持に対するデマンドにより、リ
クエスト・パケットの送信についての許可を、裁定手段
がバスに対して出すことが不可能になることから、該裁
定手段は該バスをして、リプライ・パケットを送信する
ための裁定リクエストを出しているクライエントに専用
のものとする。一旦デマンドが出されると、このような
システム・ワイドでの保持により、そのデマンドを出し
ているクライエントによって解放されるまで、有効な状
態に留められる。これによって可能にされることは、渋
滞の状態にあるクライエントが、正常な動作が再開され
るのに先だってその渋滞の状態を解放するために、その
係属中のリクエストキューが十分に低いレベルまで降下
することを確実にすることである。 【0034】前述されたことから理解されるように、異
なるクライエント・デバイスは異なるレベルの優先度を
もつことができるけれども、ホスト・バスの割当が予め
強調されることはない。その結果として、そのホスト・
バスが許容されたクライエント・デバイスは、バス上で
完全なリクエスト・パケットまたはリプライ・パケット
を配することができるように、十分な時間的な周期にわ
たって“バス・マスター”であることになる。 【0035】しかしながら、ここで理解されるべきこと
は、裁定リクエストのコード化をすることの重要な利点
の一つとして、任意の処与のクライエントからの任意の
処与の裁定リクエストに対して、その処与の裁定リクエ
ストに応じてバスが許容されたときの、該処与のクライ
エントが発するパケットの長さを、裁定手段によって予
言的に決定することができる。これで許容されることは
、クライエントが発するパケットのために必要とされる
バス・サイクルの正確な個数について、任意の処与のク
ライエント・デバイスに対してバスが許容する時間の長
さを、裁定手段によって制限することである。より有意
義なこととしては、図8に示されているように、Gra
nt1 およびGrant2 のような連続的な許可の
タイミングのコントロールが、裁定手段によって可能に
される。このために、第2の許可(Grant2 )が
発せられるのは、生じているパケットAの最終バス・サ
イクルに対する許可(Grant1)を現在のバス・マ
スターのクライエントが評価した直後である。次に続く
バス・マスターになるクライエントによって、この早期
の許可の告知のために可能にされることは、その直前の
パケットAの最終サイクルに追従するパケットBのはじ
めのサイクルの間に、そのパケットBに対するヘッダー
・サイクルをもってバスを駆動するために適当な高い電
圧レベルまで、バス・ドライバによって移行させるのに
十分な時間がもたらされることである。かくして、明瞭
であることは、裁定手段は、バス上のパケットの送信に
関する時間的なオーバラップをしながらバスの裁定を実
行するだけではなく、クライエントが全ての利用可能な
バス・サイクルをパケットで満たすことも許容すること
である。 【0036】図3,図4および図5において示されてい
るような複数個のパイプライン式のバス・セグメントか
ら構成されているバスは、それらのクライエントが全て
の利用可能なバス・サイクルをパケットで満たすことも
許容するために、前述されたタイプの予測的なオーバラ
ップ式の裁定を用いるように所望されているときには、
ある程度の注意を払って設計されねばならない。これを
より詳細にいえば、連続的なパケットAおよびBは、こ
のようなバスの中間セグメントまたはいわゆる“バック
パネル”セグメント上において、該バックパネル・セグ
メントがバスの双方向性セグメントだけであるときにの
み、連続的なバス・サイクルに詰め込むことができる。 そうでないときには、パケットAおよびBを連続的なバ
ス・サイクルに詰め込もうとするいかなる試行でも、任
意の処与のバス・セグメント上でのそれら2個のパケッ
ト間での時間的なオーバラップに対する禁止によって妨
げられる。図3,図4および図5において示されている
ように、その解決策は、バックパネル・セグメントに対
するものを除いて、このようなバスの全てのセグメント
に対して単方向性のバス・セグメントを使用することで
ある。この解決策の有効性は図8において示されている
。ここで、図4に示されているバスの、それぞれに単方
向性の出力セグメントA1 およびA2からのパケット
AおよびBは、そのバックパネル・セグメントBを介し
て、それぞれに単方向性の入力セグメントC1 および
C2 に至るようにされる。 【0037】図示されている2本の付加的なワイヤ51
および52は、サービスに責任のある全てのクライエン
ト・デバイスに対する各裁定手段に接続されている。あ
る処与のクライエント・デバイスに対するバスの許可の
直前のサイクルにおいて、いわゆるHIPGrantラ
イン51上の信号の論理的なレベルにより、次に続く許
可が高い優先度のリクエストに相応しているか否かの決
定がクライエント・デバイスによってなされ、また、い
わゆるLongGrantライン52上の信号の論理的
なレベルにより、次に続く許可が長いパケットに対する
ものであるか否かの決定がクライエント・デバイスによ
ってなされる。従って、これら2個の信号により、異な
る優先度の係属中の裁定リクエストに対する許可の間に
ついて、および、異なる長さのパケットの送信を認める
ために与えられる許可の間について、クライエントがそ
の区別をすることが可能になる。 【0038】3.  データ/コントロール・インタフ
ェース ここで図1に戻ると、グローバル・バス26および14
a−14iのようなクラスタ・バスの各々は、2n で
表されるような2の累乗のビット・ワイドの多重化した
データ/アドレス・パスを形成するようにされている。 クライエント・デバイスを単方向性のバス・セグメント
に接続するために、その標準的なインタフェース41(
図6)には1個の送出ポートおよび1個の受容ポートが
備えられており、その各々は、2n ビット・ワイドの
データ/アドレス・パス(この発明の典型的な実施にお
いては、各バスのデータ/アドレス・パスは64ビット
・ワイドである)を構成している。しかしながら、イン
タフェース41の送出ポートは双方向性のモードで動作
できることから、クライエント・デバイスを双方向性の
バス・セグメントに接続するために、送出/受容(送受
両用)ポートとして用いられることになる。 【0039】ここで示されているように、これらの送出
ポートおよび受容ポートにも、ヘッダー・サイクル・ビ
ットのための1本のワイヤおよびパリティ・ビットのた
めの1本のワイヤが含まれている。この実施例において
は、パケットのヘッダー・サイクルを同定するために、
バス・マスター(即ち、該当のパケットを発しているク
ライエント)による各パケットのはじめのサイクルの間
に、HeaderCycleの論理的な真(“1”)の
信号が出される。その他方において、受容側がデータ送
信のエラーを検出できるように、関連するパケットで搬
送されるデータからのパリティの算出がデータ源におい
てなされる。このパリティ・チェック操作は全く従来か
らのものであることから、この特定の実施例においてバ
スがアイドル状態にあるときの論理的なレベルがロー(
“0”)であるために、偶数パリティが採用されている
ことを注意すれば十分である。 【0040】4.  両立性ポート 任意の処与の時点において、任意の処与のバス上の2個
またはそれよりも多くのキャッシュ・メモリ・クライエ
ント内にキャッシュされている、メモリ・アドレスの各
々の全てのキャッシュされたコピーを通してデータの両
立性を維持するために、バス・デバイス・インタフェー
ス41は、それぞれに、キャッシュ・メモリからのSh
aredOut信号およびOwnerOut信号を送信
するための出力部62および63とともに、メモリ・コ
ントローラ(中間レベルまたはより高いレベルのキャッ
シュに対するコントローラを含んでいる)からのSha
redIn信号およびOwnerIn信号を受信するた
めの入力部61および62を備えている。 【0041】同じバス上のキャッシュ・リクエスタがメ
モリ・リクエスト(例えば、この実施例におけるWri
teSingle,CondituonalWrite
SingleまたはReadBlockRequest
)を出すときはいつでも、ある固定的な時間遅れの後に
、真の(論理“1”の)SharedOut信号の状態
がキャッシュによって主張される。その他方において、
SharedInは、バス上の全てのキャッシュからの
SharedOut信号の、適当に遅れた論理的ORに
されている。この論理的ORの操作に起因する遅れも固
定されており、リクエストを受け入れたときにリクエス
タによって特定されたアドレスがバス上の他のキャッシ
ュのいずれかによって共有されているかどうかを決定す
る為に、このようなリクエスト・パケットを受け入れて
からある所定の時間の後で、レスポンダによってSha
redIn信号のレベルが評価される。ここで認められ
るように、リプライ・パケットのヘッダー・サイクルに
おける、いわゆる“replyShared”ビットに
よって、そのリプライをレスポンダが発するときには、
このSharedIn信号の値はリクエスタに戻される
。そして、これにより、そのリクエストがなされたとき
に、そのリクエストが指向されたデータが共有されてい
るか否かについて、リクエスタに告知するようにされる
。 【0042】他のキャッシュから受け入れられる読み取
りリクエスト(例えば、ReadBlockReque
st)において特定されるアドレスに存在するデータ・
ブロックの“owner”であるときはいつでも、ある
固定的な時間遅れの後に、真の(論理“1”の)Own
erOut信号の状態がキャッシュによって主張される
。より詳細に後述されるように、データが特定のデータ
・ブロックに書き込まれるときはいつでも、キャッシュ
はデータ・ブロックの“owner”になる。これの意
味することは、その所有権は、たとえ存在するとしても
、最後にデータ・ブロックに書き込まれたキャッシュに
属することから、任意の所与のデータ・ブロックについ
て、一時に1個の“owner”しか存在しないことに
なる。それにも拘らず、タイミングを簡略化するために
、OwnerIn信号は、好適には、バス上のキャッシ
ュからのOwnerOut信号の同様に遅れた論理的O
Rであるから、リプライを出すか、または、データにつ
いてのより低いレベルのキャッシュの“owner”か
らのリプライに従うかを決定するためにSharedI
nを評価するのと同じ時点において、バス上の最上位の
クライエント(即ち、メモリ・コントローラまたはより
高いレベルのキャッシュ)はOwnerInを評価する
ことができる。ここで認められるように、1個よりも多
くのキャッシュがOwnerOutを主張することはで
きないために、キャッシュからのOwnerOut信号
のOR操作をすることは必須のことではないけれども、
SharedInの値およびOwnerInの値につい
て一様な扱いがもたらされることになる。 【0043】ここで注目されるべきことは、Share
dIn信号の値およびOwnerIn信号の値が、ワイ
ヤ式のOR操作よりも論理的なOR操作によって演算さ
れるということである。これによってSharedIn
およびOwnerInのパイプライン操作が許容され、
その一方では、それらのタイミングおよび解釈上での電
気的な制約を回避するようにされる。所望されるときに
は、SharedOut/SharedIn信号の値お
よびOwnerOut/OwnerIn信号の値のパリ
ティ・チェック操作も許容される(増強した実施例につ
いての以下の説明において、このオプションの検討を参
照されたい)。 【0044】E.  トランザクショントランザクショ
ンはバス・プロトコルの最上層のものである。各トラン
ザクションは、独立して裁定されるリクエスト・パケッ
トおよびリプライ・パケットからなるものである。リク
エスタがバスに対する裁定手段による裁定リクエストを
登録したときに、ある1個のトランザクションが始まる
けれども、該裁定手段がバスに許可を出すまでは、該当
のリクエスト・パケットはそのリクエスト・レジスタ2
8に記憶される。該当のことが生起すると、リクエスタ
は、連続的なバス・サイクルの間に、そのリクエスト・
パケットを一時に1サイクルだけ発生させる。 【0045】“ヘッダー・サイクル”と呼ばれるリクエ
スト・パケットの初めのサイクルには、リクエスタおよ
びこのリクエスタが始めるトランザクションを同定する
ために必要な全ての情報が含まれている。これには、該
当のトランザクションを好適な結論に導くときに関与す
ることが必要な、1個または複数個のクライエント・デ
バイスを選択するために十分な情報も含まれている。リ
クエスト・パケットの後続のサイクルに一般的に含まれ
ているものは、実行されるべきトランザクションに依存
するデータである。全てのクライエント・デバイス(リ
クエスタを含む)はリクエスト・パケットを受け入れて
、該当のトランザクションに関与することが要求されて
いるか否かを決定するために、該デバイスの各々によっ
てそのヘッダー・サイクルを調べるようにされる。 【0046】一般的なルールとして、各リクエスト・パ
ケットにおけるヘッダー・サイクルの相当な個数のビッ
トが、メモリ位置またはI/Oデバイス・レジスタの選
択をするために、リクエスタによって出されるアドレス
に対して保留される。デバイスがある1個のトランザク
ションにおいて関与するように選択されるメカニズムは
、異なるトランザクションのためには異なることがあり
得るけれども、大方のトランザクションにおいては、選
択メカニズムとしてそのヘッダー・サイクルに含まれて
いるアドレスを使用するようにされる。 【0047】図9を参照しながら、より詳細にいえば、
この実施例においては、各リクエスト・パケットにおけ
るヘッダー・サイクルの47ビットがアドレス・フィー
ルドに対して割り当てられている(この実施においては
、これらのビットの中の32ビットだけが用いられてお
り、このために、他の15ビットは更に別の伸長作業の
ために利用可能なものであって、これの意味することは
、それらが全て“0”であることを確認するためにアド
レス・フィールドを読み取るときに、これらの使用され
ないビットがチェックされねばならないということであ
る)。他のビットの中の10個のビットは、各クライエ
ント・デバイスが指定される固有の識別子である、いわ
ゆる“DeviceID”を搬送するために保留されて
いる(これらのDeviceIDは、図示されない手段
によるシステムの起動の間に適当に指定されるものであ
る)。更に、リクエストのヘッダー・サイクルにおける
残りのビットの中の5個のビットは、トランザクション
のコマンドのコード化のために使用される。そして、更
に1個の余分のビットは、クライエント・デバイスによ
る保護的“モード”のチェック操作のために用いられる
(このモードのチェック操作によってクライエント・デ
バイスに可能にされることは、リクエスタが、特定され
たトランザクションを開始するように権限を付与されて
いるかどうかを決定することであるが、このようなモー
ドのチェック操作はこの発明の範囲を超えるものである
)。従って、この特定の実施においては、リクエストの
ヘッダー・サイクルで指定のないビットは1ビットだけ
である。 【0048】リクエスト・パケットを受け入れると、多
くのクライエントがその内部的な状態を変更することが
できるけれども、1個だけのクライエント・デバイスが
任意の所与のリクエストに対してリプライを出すことに
なる。レスポンダは、初めに、部分的または完全にその
リプライのアセンブルをし、これに次いで、そのバスに
対する裁定手段をもって、バスの裁定リクエストの登録
をする。その後で、バスの許可がなされると、1個また
は複数個のデータ・サイクルによって追従されるヘッダ
ー・サイクルをもって再開する連続的なバス・サイクル
の間に、レスポンダは一時に1サイクルのリプライ・パ
ケットを送出する。例えば64ビット・ワイドのバスに
より、各データ・サイクル上での8オクテット(8ビッ
ト・バイト)のデータ転送ユニットが支持される。これ
に次いで、様々に異なるワードに基づくソフトウエア・
アーキテクチュアを実施するために、これらのバイトが
種々の長さのワードに組成される。 【0049】図10に示されているように、各リプライ
・パケットにおけるヘッダー・サイクルは、リクエスタ
から受け入れられたコード化したコマンド、リクエスタ
によって特定されたアドレス、および、リクエスタのD
eviceIDのビットを同定するトランザクションの
反復をする。典型的には、このレスポンダは、リクエス
ト・パケットにおけるヘッダー・サイクルからこの情報
を取り出して、リプライ・パケットにおけるヘッダー・
サイクルの構成の際に用いるためにそれを記憶するだけ
である。この情報によれば、リプライ・パケットが関係
するトランザクションを固有に同定するだけではなく、
リプライ・パケットをトランザクションのリクエスタに
対して明確にリンクするようにされる。 【0050】ある程度の付加的な詳細における典型的な
リプライ・パケットのヘッダー・サイクルについて考慮
すると、ここで好適に観察されることは、対応するリク
エスト・パケットにおけるヘッダー・サイクルに対して
ビット対ビットで等価のものであって、以下の例外が存
在する。即ち:(1)該当のパケットがリプライである
ことを指示するために、リクエスト/リプライ・フラグ
・ビットが反転される;(2)リプライのアセンブルを
しているとき、レスポンダがフォールトに遭遇したか否
かを指示するために、リクエスト・ヘッダーにおけるモ
ード・ビットが、リプライ・ヘッダーにおけるフォール
ト・ビットとして用いられる;そして、(3)レスポン
ダがトランザクションのためのリクエスト・パケットを
受け入れた時点において、該トランザクションに対して
特定されたアドレスでのデータが多くのキャッシュによ
って共有されたか否かを指示するために、リクエスト・
ヘッダーにおける不使用のビットが、replySha
redビットとして用いられる。このreplySha
redビットの機能については、更に十分に後述される
。しかしながら、この点について適切に注意されること
は、フォールトに遭遇したときにのみ、レスポンダがフ
ォールト・ビットを真の(“1”の)論理レベルの状態
に駆動するということである。そして、このようなフォ
ールトが生じたときにはいつでも、このビットはリクエ
スタに対して効果的にこれを告知する。これにより、該
リクエスタをして、フォールト・コード(これは好適に
はリプライ・パケットにおける第2サイクルの32個の
下位順序のビットにおいて伝送される)を受け入れるべ
く用意をさせる。フォールトの検出およびフォールト・
コードの発生はこの発明の範囲外のことである。 【0051】前述のように、全てのクライエント・デバ
イスは、何等かの動作がそれらについて要求されている
かどうかを決定するために、リプライ・パケットにおけ
るヘッダー・サイクルを調べるようにされる。その動作
においては、異なるクライエント・デバイスの中でのリ
プライを明確にするためにDeviceIDが当てにさ
れる。しかしながら、ある種のクライエントは、多くの
未解決または係属のリクエストを持っている可能性があ
る。このために、好適には、多くのDeviceIDを
クライエントに対して指定することにより、または、そ
れらの未解決なリクエストに対するリプライを明確にす
るために、それらを可能化させるべく何等かの他の適当
な備えをすることにより、リプライがそれらのクライエ
ントの各々において更に明確にされる。 【0052】リクエスタがリプライを受け入れたときに
は、トランザクションは完了する。大方の場合において
、この発明のバス・プロトコルによれば、リクエストと
リプライとの間で1対1の対応が成立する。しかしなが
ら、ある種のリクエスト・パケットは対応のリプライ・
パケットを持っておらず、また、これと逆の関係も成り
立つが、その理由は、バス・プロトコルの実行によるた
め、または、エラー等によるためのいずれかである。 かくして、このプロトコルは、不変のものとしてのリク
エスト/リプライのペアリングには依存しないことにな
る。これに代えて要求されることは、任意の所与のバス
上の全てのクライエント・デバイスが、到着の順序にお
けるそれらからの動作を要求するリクエスト・パケット
にサービスをすることだけである。ここで認められるよ
うに、この要求はデータの両立性を維持することの中心
にあるものである。 【0053】コマンドのコード化、および、この初めの
実施例のために規定されたトランザクションに対するリ
クエスト/リプライ・ペアのパケット・レングスを要約
するテーブルが以下に示されている。   トランザクション・ペア            
  省略形      コード化      レングス
  ReadBlockRequest       
             RBRqst      
  0000 0          2   Rea
dBlockReply              
        RBRply        000
0 1          5   WriteBlo
ckRequest                
   WBRqst        0001 0  
        5   WriteBlockRep
ly                     WB
Rply        0001 1       
   2   WriteSingleRequest
                  WSRqst 
       0010 0          2 
  WriteSingleReply       
             WSRply      
  0010 1          2   Con
ditionalWriteSingleReques
t       CWSRqst       001
1 0          2   Conditio
nalWriteSingleReply      
   CWSRply       0011 1  
        5   FlushBlockReq
uest                   FB
Rqst        0100 0       
   5   FlushBlockReply   
                  FBRply 
       0100 1          2 
  未定義(Undefined )        
                      010
1 0  未定義(Undefined )     
                         
0111 1  IOReadRequest    
                   IORRqs
t       1000 0          2
   IOReadReply           
              IORRply    
   1000 1          2   IO
WriteRequest             
         IOWRqst       10
01 0          2   IOWrite
Reply                    
    IOWRply       1001 1 
         2   BIOWriteRequ
est                     B
IOWRqst      1010 0      
    2   BIOWriteReply    
                   BIOWRp
ly      1010 1          2
   MapRequest            
              MapRqst    
   1110 0          2   Ma
pReply                   
         MapRply       11
10 1          2   DeMapRe
quest                    
    DeMapRqst     1111 0 
         2   DeMapReply  
                        D
eMapRply     1111 1      
    2  【0054】ここで認められるように、3個の一般的な
タイプのトランザクションがある。即ち、(a)キャッ
シュされたデータの両立性を維持しながら、メモリ・ア
クセス動作を実行するためのメモリ・トランザクション
、(b)プログラムされたI/O動作を実行するための
I/O・トランザクション、および、(c)更に他の機
能を実施するための多面的なトランザクションがある。 ここで評価されるように、リクエスト/リプライ・フラ
グ・ビット(即ち、前述のテーブルにおいて示されてい
るようなコマンド・フィールドの第5ビット)の論理的
なレベル(“0”または“1”)は、任意の所与のパケ
ットがリクエストまたはリプライのいずれであるかを指
示するためには十分なものであることから、トランザク
ションのコマンドの極めてコンパクトで効率的なコード
化をすることが実際的である。このコマンド・フィール
ドのフォーマットを用いて、16個までの異なるコマン
ドのコード化をすることが可能であるから、上記のよう
に規定されたトランザクションでは、コマンド・フィー
ルドの容量を部分的に消耗するだけであることが理解さ
れる。勿論、所望であるときには、付加的な特徴を実現
する更に別のトランザクションを規定するために、コマ
ンド・フィールドの余分の容量を用いることができる。 【0055】1.  メモリ関連のトランザクションI
/Oデバイスとメモリとの間でと同様に、プロセッサと
メモリとの間でのデータの転送をするためにメモリ・ト
ランザクションが用いられる。これをより詳細にいえば
、メイン・メモリ13または他のキャッシュからデータ
・ブロックを読み取るために、所望のデータ・ブロック
のバージョンがメモリ・システムのいずれかの位置にキ
ャッシュされているかどうかに依存して、そして、そう
であるときには、該キャッシュされたバージョンが“o
wned(所有されている)”であるかどうかに依存し
て、ReadBlockがキャッシュ・リクエスタによ
って呼ばれる。所有されているデータ・ブロック(即ち
、局部的に初期化された書き込み−即ち、メモリ・ツリ
ーの同じブランチにおけるプロセッサによって初期化さ
れた書き込み−によって最近に修正されたデータのブロ
ック)をメイン・メモリ13に対して書き戻すために、
FlushBlockがキャッシュ・リクエスタによっ
て呼ばれることができる。そして、WriteBloc
kは、任意の中間的なレベルのキャッシュ19a−19
iおよびトランザクションに対して特定されるアドレス
上で合致する任意の第1のレベルのキャッシュ16aa
−16aj(図1を参照)に対するのと同様に、データ
・ブロックをメイン・メモリ13に対して直接書き込む
ために、2次的なデータ源(即ち、メモリ・システムに
対して外部にあるデータ・プロデューサ)を可能化する
ために利用できるものである。換言すれば、このWri
teBlockで許容されることは、キャッシュを通し
てデータを迂回させることなく、新規なデータをマルチ
プロセッサ11の主要なメモリ・システムに導入するこ
とである。 【0056】これらの“ブロック”トランザクションの
全ては、物理的なアドレス空間に直列に整列している4
個の64−ビット・ワードのような、複数個の連続的な
ワードにわたっている。そのために、任意のこのような
データ・ブロック内の第1の個別にアドレス可能な量の
アドレスは0  mod  Nであり、ここに、Nは各
データ・ブロックに含まれている個別にアドレス可能な
量の個数である。有利なことに、各バス上での全てのデ
ータ・ブロックの転送の組成は、アドレスされた量がバ
ス上の第1のデータ・サイクル内に現れ、データ・ブロ
ックの残りの量がサイクリックな順序でこれに追従する
ようにされていることである。図11を参照されたい。 これにより、特定されたアドレスからデータを検索する
ためのメモリの待機が最小にされるが、これはキャッシ
ュ“ミス”のときには特に望ましいことである。 【0057】WriteSingleトランザクション
は、共有しているデータについて多くのキャッシュされ
たコピーを更新するために、必ずしもメイン・メモリ1
3に影響をおよぼすことなく、キャッシュ・リクエスタ
によって呼ばれる。このトランザクションは、影響のあ
るデータ・ブロックのコピーを含んでいるキャッシュに
よってのみ呼ばれるものである。Conditiona
lWriteSingleは、このように共有されてい
るデータに対して微細な読み取り−修正−書き込みの実
行をするために、キャッシュ・リクエスタによって呼ぶ
ことができる、密接な関連のあるオプション的なトラン
ザクションである。 【0058】2.  I/O  トランザクションI/
Oトランザクションによれば、図1におけるLANコン
トローラ29iのようなI/Oデバイスとの間で、プロ
セッサがデータの転送をすることが許容される。これら
のI/Oトランザクションのために採用されるアドレス
空間(即ち、“I/O空間”)は、全体としては、メモ
リ・トランザクションのために使用されるアドレス空間
(即ち、“メモリ空間”)とは関連しておらず、このた
めに、ある所与の有効なアドレスがメモリ空間またはI
/O空間のいずれかに存在するけれども、その双方に存
在することはない。ここで認められるように、I/Oト
ランザクションはデータの両立性についての関連を持た
ず、また、データ両立性プロトコルはI/Oトランザク
ションについての関連を持たないものである。 【0059】IORead,IOWriteおよびBI
OWriteトランザクションは、この実施例において
、I/O動作を実行するために規定されたものである。 各I/Oデバイスは共通のアドレス空間の固有の部分が
指定されており、これらのトランザクションは該当のア
ドレス空間に対して発せられる。このために、図1にお
けるコントローラ29iのようなI/Oデバイスは、そ
れらに対してアドレスされるI/Oコマンドを解釈する
ことが自由であり、所要に応じて、それらを所望のトラ
ンザクションに対して効率的に関与させることができる
。IOReadトランザクションおよびIOWrite
トランザクションは、キャッシュ・リクエスタにより起
動されて、それぞれに、特定されたI/Oアドレスとの
間でアドレス可能な量の読み取りおよび書き込みをする
ようにされる。BIOWriteもキャッシュ起動式の
トランザクションであって、I/Oアドレス空間に対し
て単一のアドレス可能な量を書き込むためのものである
が、ある所与の“デバイス・タイプ”の多くの事例に対
してデータを同時に書き込むことが許容されているため
に、I/OWriteトランザクションとは異なるもの
である。このために、BIOWriteは無制限のグロ
ーバルな放送的トランザクションではないけれども、あ
る所与のタイプの全てのデバイスに対しては放送的なも
のである。“デバイス・タイプ”の規定はシステムに依
存するものであり、この発明の範囲を超えている。 【0060】図1の18iにおいて示されているI/O
ブリッジに移行して理解されるべきことは、メモリ・シ
ステムに関する限りはそれがハイブリッド・デバイスで
あるということである。より詳細にいえば、このI/O
ブリッジ・デバイス18iは、キャッシュ16aa−1
6ijと機能的に類似のキャッシュ60を介してマルチ
プロセッサ11のメモリ・システムに直接アクセスする
、外部系列のコンピュータ・システムのメモリ・バスの
ような、非同期的なI/Oデバイスを備えるために有用
なものである。その目的のためにブリッジ18iに含ま
れているもの(図示されない)は、このようなI/Oデ
バイスによって出されたメモリの読み取りおよび書き込
みをバッファリングするための、そして、それらの読み
取りおよび書き込みを規定のメモリ・トランザクション
に変換するためのものである。しかしながら、それはI
/O空間の部分内のI/Oトランザクションにも応答す
るものであるが、その意味するところは、プロセッサ1
2aa−12ijがI/Oブリッジ18iの内部資源お
よび該ブリッジ18iが接続されるI/Oデバイスのレ
ジスタをアクセスできることである。 【0061】I/Oアドレス空間の指定は通常のことで
はないが、その理由は、マルチプロセッサ11のいずれ
かのバスに接続され得る異なるI/Oデバイスについて
のI/Oアドレス空間のサイズに関する要求が相当に異
なっていることにあるだけである。従って、実際的な態
様としては、各I/Oデバイスに対するI/Oアドレス
空間の指定が該デバイスにとって必要であるようなアド
レス空間と合理的に近似することが確実であるように、
I/Oアドレス空間を指定するときにこれらの差異を考
慮に入れるべきである。 【0062】3.  多面的トランザクションMapお
よびDeMapはキャッシュで呼ばれるトランザクショ
ンであって、マルチプロセッサ11の仮想メモリ環境に
おいて高速の仮想的−物理的アドレス空間のマッピング
を実行するためのものである。その目的のために、Ma
pでキャッシュ・リクエスタが許容されることは、図1
の17aにおけるようなマップ・キャッシュから、仮想
的ページ−物理的ページのマッピング・エントリを読み
取ることである。これに対して、DeMapによれば、
仮想的なアドレス空間の任意特定のページに対するキャ
ッシュ駐在の仮想的−物理的アドレス・マップを無効に
するために、キャッシュ・リクエスタが可能にされる。 【0063】F.  データの両立性 全てのバス・クライエントに対する共有メモリのマルチ
プロセッサ環境において必須であることは、メモリ空間
における任意の所与のアドレスに対するデータ値を同じ
シーケンスでアクセスすることである。これは“データ
の両立性”として参照される。このようなマルチプロセ
ッサにおける個別のプロセッサに対して分離したキャッ
シュ・メモリを用いることは、このデータの両立性を維
持するという問題を複雑にするものであり、特に、より
大規模なシステムにおいて、任意の所与の時点において
キャッシュ内に存在し得るある所与のコピーの潜在的な
個数が大きいときに問題を複雑にするものである。 【0064】しかしながら、特に効果的なデータの両立
性のプロトコルを実施することは、プロセッサ12aa
−12ijおよびI/Oブリッジ18iによって要求さ
れるメモリ・トランザクションの開始および実行をする
ために、いわゆる書き戻しキャッシュ(即ち、メイン・
メモリを即座に更新することなく、プロセッサによって
出されたデータの書き込みに従ってキャッシュされたデ
ータの更新をするキャッシュ)を用いることによって可
能にされる。これらのキャッシュは、メモリ空間におけ
る全てのアドレスからの要求に応じてデータのフェッチ
および記憶をすることができるが、その理由は、メモリ
空間内の任意の所与のアドレスにおけるデータの多くの
コピーの外部的な両立性が、上述されたトランザクショ
ンのある所定のものの使用を通して、ハードウエアによ
って自動的かつ透明的に維持されるためである。更に、
プロセッサ12aa−12ijおよびI/Oブリッジ1
8iに対するメモリの両立性のある観察を維持しながら
、I/Oデバイスによるメモリ空間に対する直接アクセ
スが許容される。 【0065】より詳細には、更に詳述されるように、キ
ャッシュ12aa−12ij,19a−19i,60は
、それぞれのバス上のトラフィックを直接または間接に
モニタすることによってデータが共有されるようになっ
た時点を検出し、また、任意のプロセッサ(またはI/
Oブリッジ18i)がメモリ空間における共有のデータ
値を更新したときには、いつでも放送的な書き込みを実
行する。キャッシュ12aa−12ijおよび60の全
ては“スヌーピー・キャッシュ”であるが、これの意味
することは、それらがバス上の全てのトランザクション
をモニタすることにある。 【0066】1.  シングル・レベル・システムにお
けるデータの両立性 先に指摘されたように、シングル・レベル・システムを
構成する1個または複数個のプロセッサは、図1におけ
るプロセッサ12aa−12ajのようなものであって
、共有のメイン・メモリとともに、それぞれのキャッシ
ュ16aa−16ajを介して、それらのメモリ・バス
15aと接続されている。プロセッサ12aa−12a
jは、それぞれに、それらのキャッシュ16aa−16
ajを介してメイン・メモリをアクセスしていることか
ら、任意の所与のアドレスにおける全てのキャッシュさ
れたコピーの間のデータの両立性を維持することで十分
であることが明かにされてくる。これの意味することは
、キャッシュされているメイン・メモリのコピーが、1
個または複数個のキャッシュされたコピーに関しては古
いことがあり得ることであるが、この古いメイン・メモ
リのデータに起因する演算上のエラーのリスクを負うこ
とはない。 【0067】データの両立性を維持するために、両立性
プロトコルが依存する各キャッシュは、特定のキャッシ
ュの要求においてバス上で係属しているトランザクショ
ンに従う任意のデータ・ブロックに対するpendin
gStateとともに、キャッシュしている各データ・
ブロックに対する“共有”および“固有”の2個の状態
ビットを保持している。これに加えて、通常は、キャッ
シュ16aa−16ajは、現にキャッシュされている
データ・ブロックと、オーバライト可能な削除された、
または、“空白の”データ・ブロックとの間の区別をす
るために、それらのデータ・ブロックの各々に対する“
有効”状態ビットを保持している。 【0068】共有ビットの状態で指示されることは、関
連のデータ・ブロックについて多くのキャッシュされた
コピーが存在し得るか否かということである。多くのキ
ャッシュされたコピーが存在するときには、該共有ビッ
トは真の(“1”の)状態に肯定的にセットされるが、
キャッシュされたコピーが1個しか存在しないときには
、必ずしも偽の(“0”の)状態にはリセットされない
ことから、これは控え目な指示である。これに対して、
ある所与のキャッシュを介して通信するプロセッサその
他のデバイスが、特定のデータ・ブロックに対する最近
の(即ち、最後の)書き込みを実行する責任があったと
きにのみ、該データ・ブロックに対する固有ビットが該
所与のキャッシュにおいて真の(“1”の)状態にセッ
トされる。これの意味することは、バス上の1個または
複数個の他のキャッシュも同じデータ・ブロックのコピ
ーを含んでいるとしても、任意の所与のバス上での任意
の時点におけるある所与のデータ・ブロックについて、
“固有”のキャッシュは1個だけということである。こ
れに加えて、バス上で係属している各トランザクション
に対してキャッシュが維持するpendingStat
eによってキャッシュにできることは、トランザクショ
ンがまだ係属中であるときに該当のデータ・ブロックの
キャッシュされたコピーの個数が変化するとしても、リ
プライが受け入れられたときに、トランザクションが関
連しているデータ・ブロックに対するその共有ビットの
ための値を正確に演算することができる。このpend
ingStateの情報によってキャッシュにできるこ
とは、より十分に後述されるように、該当のトランザク
ションに対する正確なデータ値を得るべく、キャッシュ
が適切な動作をするように、その係属中のトランザクシ
ョンによって特定されるアドレスにおけるデータの値を
修正できる介在のトランザクションを同定することでも
ある。 【0069】一般的なルールとして、その関連のプロセ
ッサがフェッチ・コマンドまたは記憶コマンドを発生し
たときには(即ち、このようなコマンドが発生されるべ
きアドレスがキャッシュ内に存在しないときには)、第
1のレベルのキャッシュでReadBlockRequ
estが起動して、“キャッシュ・ミス”が生じるよう
にする。必要であるときには、キャッシュからメイン・
メモリにデータを書き込み、これによって新規なデータ
を記憶するためのキャッシュ内の記憶スペースを自由に
するように、このキャッシュもFlushBlockを
起動させることができる(ここで想起されるように、古
いデータをメイン・メモリに書き込むことを回避するた
めに、それらの固有ビットのセットを有するデータ・ブ
ロックだけがFlushBlockによって書き出され
ることになる)。共有ビットのセット(“1”)を有す
るデータ・ブロックに対して関連のあるプロセッサによ
る書き込みがなされるときには、更にキャッシュによっ
てWriteSingleトランザクション(これは前
述された書き込みであって、データの両立性が無視でき
るときには、必要とされる最小のセットの動作から両立
性プロトコルを区別することである)が始められる。 【0070】リクエスタを含んでいる全てのキャッシュ
は、RBRqst,WSRqst,WSRply,CW
SRqst,CWSRply,およびWBRqstパケ
ット(即ち、特定されたアドレスにおけるデータの値お
よび/または非共有状態に影響があり得るパケット)の
いずれかのヘッダー・サイクルにおいて特定されるアド
レスに合致させようとする。その係属中のトランザクシ
ョンの各々に対してリクエスタが維持しているpend
ingStateに含まれているデータのアドレスは、
リクエスタがその固有のリクエスト・パケットを受け入
れたときに偽の(“0”の)状態にクリアされる共有の
状態とともに、同じアドレスを特定する前述のタイプの
介在パケットをリクエスタが検出できるためのトランザ
クションに従うものである。これでリクエスタが可能に
されることは、トランザクションが係属中である間に特
定のデータ・ブロックが共有の状態になるときに、その
係属中のトランザクションに従う任意のデータ・ブロッ
クに対する共有の状態を真の(“1”の)状態にセット
することである。更に、ある程度詳細に付加的に後述さ
れるように、トランザクションが係属中である間に、デ
ータの値が、係属中のトランザクションが変化されるの
に従っているときには、リクエスタによって適当な訂正
動作をすることも可能にされる。 【0071】リクエスタ以外の全てのキャッシュによっ
て簡単に合致されることは、上記のように列挙されたヘ
ッダー・サイクルにおいて特定されたアドレスを、それ
らがキャッシュしているデータ・ブロックのアドレスに
対抗させて、該特定のアドレスが含まれているかどうか
を決定するためである。FlushBlockトランザ
クションは、そのような動作がなされている他のキャッ
シュに対して告知をすることを必要とせずに、キャッシ
ュからメイン・メモリへのデータ・ブロックの書き込み
だけのために使用されるものであることから、このよう
な合致操作はFBRqstパケットまたはFERply
パケットのいずれかのために必要とされることはない。 同様にして、メモリが対応のWBRqstパケットを処
理したことを確認するだけであることから、WBRpl
yに対するアドレスの合致操作は不要である。更に、R
BRplyはリクエスタだけに関連するものであるから
、他のキャッシュはこのようなパケットを無視すること
ができる。 【0072】RBRqst,WSRqstまたはCWS
Rqstパケットのヘッダー・サイクルにおいて特定さ
れるアドレスと好都合に合致しているリクエスタを除く
各キャッシュは、そのバス・インタフェース41(図6
)の両立性ポートにおけるSharedOutの主張を
し、これによって、該当する特定のアドレスにおけるデ
ータ・ブロックが共有されていることの信号をする。 このようなキャッシュも、先にそのようにセットされて
いないときには、該特定されたデータ・ブロックのその
コピーに対する共有ビットを真の(“1”の)状態にセ
ットする。ここで想起されるように、全てのリクエスト
・パケットおよびリプライ・パケットのヘッダーはDe
viceID(図9および図10を参照)を備えていて
、それらが任意の所与のパケットに対するリクエスタで
あるか否かについて、バス・クライエントで決定するこ
とが可能にされる。 【0073】ここで認められるように、バス上の任意の
キャッシュによるSharedOutの主張は、データ
・ブロックのキャッシュ・オーナまたはメイン・メモリ
13(キャッシュ・オーナが存在しないとき)によって
リプライが付与されるかどうかには拘らず、対応するリ
プライ・パケットのヘッダー・サイクルにおけるrep
lySharedビットを真の(“1”の)状態にセッ
トさせるのに十分なものである。これは次の事実に従う
ものである。即ち、キャッシュからのSharedOu
t信号は(図示されない手段により)論理的にORがと
られ、共有ライン61(図12)を介して、全てのバス
・クライエント・インタフェース41の両立性ポートに
加えられるSharedIn信号の値を完成するように
される。 【0074】これに対して、リクエスタは、その係属す
るトランザクションに対するリプライのヘッダー・サイ
クルにおいて受け入れるreplySharedビット
と、該トランザクションのためにそのpendingS
tateにおいて維持される共有ビットとのORをとる
ようにされる。このために、リクエスタがそのリクエス
ト・パケットを発したときにデータ・ブロックが他のキ
ャッシュ内に存在しているとき、または、リクエスタが
そのリプライを待機している間にデータ・ブロックが他
のキャッシュ内にコピーされたときのいずれかであると
きには、特定されたデータ・ブロックのそのコピーに対
するリクエスタの共有ビットは、そのリプライを受け入
れたときに真に(“1”に)セットされる。 【0075】WSRqstまたはCWSRqstを発す
るリクエスタはデータ・ブロックのそのコピーに対する
その共有ビットのセットまたはリセットをする。このデ
ータ・ブロックに関連するトランザクションは、それを
受け入れる対応のリプライ・パケット(図10参照)の
ヘッダー・サイクルにおけるreplySharedビ
ットの状態、および、該当のリプライが受け入れられる
ときのそのpendingStateの共有状態に依存
するものである。リプライのヘッダーにおけるrepl
ySharedビットが偽の(“0”の)状態にあると
き、および、該トランザクションに対するそのpend
ingStateにおける共有状態が偽(“0”)であ
るときの双方であるときには、その書き込みがなされて
いるデータ・ブロックのコピーが他のキャッシュには含
まれていないことが、リクエスタによって確認される。 従って、リクエスタはこれに次いで特定のデータ・ブロ
ックに対するその共有ビットを偽の(“0”の)状態に
リセットし、これによって、データ・ブロックの状態が
共有状態から非共有状態に変更されるときに、該共有ビ
ットが最終的に確実にリセットするようにされる。 【0076】記憶されているデータ・ブロックに対して
キャッシュが維持しているオーナ・ビットの扱いは更に
簡単なことである。これを略述すれば、そのプロセッサ
の側でデータ・ブロックへの書き込みがなされるときは
いつでも、キャッシュにおいて、データ・ブロックに対
するそのオーナ・ビットのセットがなされる。これに対
して、キャッシュにおいては、データ・ブロックに含ま
れているアドレスのために、任意の他のキャッシュによ
って要求されるWriteSingleまたはCond
itionalWriteSingleトランザクショ
ンに対するWSRplyまたはCWSRplyにおける
特定のアドレスで、該キャッシュをして好都合に合致す
るようにさせるときにはいつでも、データ・ブロックに
対するそのオーナ・ビットのリセット(クリア)がなさ
れる。データ両立性のプロトコルに関する限り、Wri
teSingleおよびConditionalWri
teSingleは完全に等価のものであるから、ここ
で理解されるべきことは、共有ビットおよびオーナ・ビ
ットに対するWriteSingleトランザクション
の効果についての以下の説明は、Conditiona
lWriteSingleに対して良好に当てはまるも
のである。 【0077】先に指摘されたように、プロセッサによれ
ば、それぞれのキャッシュ内に存在するデータ・ブロッ
クにデータを書き込むことにより、共有メモリ・システ
ムへのデータの記憶がなされる。データ・ブロックに対
する共有ビットが偽の(“0”の)論理レベルにある間
に、関連のキャッシュ内に存在するデータ・ブロックの
一つのワードまたはアドレス可能な量の一つにおいて、
ある所与のデータ値を記憶させるための記憶コマンドが
プロセッサから発せられたときには、該プロセッサは即
座にキャッシュされたデータ・ブロックの適切な部位(
例えば、ワード)の更新を行い、これと同時に、該当の
データ・ブロックに対するオーナ・ビットのセットをす
る。これに対して、プロセッサによる記憶コマンドが指
向されるデータ・ブロックに対する共有ビットが真の(
“1”の)論理レベルにセットされたときには、該キャ
ッシュは記憶コマンドの実行を留保してWSRqstパ
ケットを発する。このWSRqstパケットによれば、
(a)該プロセッサがその記憶コマンドに指向した物理
的アドレス(この物理的アドレスは典型的にはプロセッ
サによって付与された仮想的アドレスの変換によって規
定される)が同定され、また、(b)該プロセッサによ
って生成されたデータ値を含むようにされる。 【0078】全てのWSRplyパケットは、単一レベ
ル・システムにおけるメモリ・コントローラからのもの
である。更に、1個のWSRplyパケットは、対応す
るWSRqstパケットの物理的アドレスおよびデータ
値の双方を写しているものである。このために、そのW
SRplyパケットを受け入れると、キャッシュ・リク
エスタは、そのプロセッサに対するデータの記憶を実行
するだけではなく、該プロセッサのデータが真の(“1
”の)状態に書き込まれるデータ・ブロックに対するそ
のオーナ・ビットのセットも実行する。このWSRpl
yパケットのヘッダー・サイクルにおいて特定されるア
ドレス上で合致する他のキャッシュのいずれであっても
、(a)リプライ・パケットによって与えられるデータ
値に基づいてアドレスされる、該リプライ・パケットに
対するそれらのデータのコピーを更新し、また、(b)
偽の(“0”の)状態に更新されたデータ・ブロックに
対するそれらのオーナ・ビットをリセットするようにさ
れる。ここで認められるように、これで確実にされるこ
とは、任意の所与のバス・サイクルの間に、いずれのキ
ャッシュであっても任意の所与のデータ・ブロックにつ
いての所有権を主張できないということである。 これの意味することは、メイン・メモリから読み取られ
てから書き込みがなされていない、いずれのキャッシュ
されたデータ・ブロックについて、いずれのキャッシュ
による所有権の主張もなされないということである。 【0079】前述のことに鑑みて理解されることは、キ
ャッシュ・リクエスタがある特定のアドレスにおいてデ
ータ・ブロックに対するそのバス上にRBRqstパケ
ットを生成させたときには、該データ・ブロックは該バ
ス上での他のキャッシュに固有のものになったり、なら
なかったりできるということである。しかしながら、他
のキャッシュの一つが特定のデータ・ブロックを固有の
ものにしているときには、そのオーナ(および、恐らく
は1個または複数個の他のキャッシュの)はそのアドレ
ス上で合致するようにされて、これにより、それらの各
々がSharedOutを主張するようにされる。更に
、このオーナはOwnerOutの主張も行い、これに
よりOwnerOut信号の論理的ORをとるようにも
されて、OwnerInライン62(図12)を真の(
“1”の)状態に駆動するようにされる。OwnerI
n信号の真の(“1”の)状態により、メイン・メモリ
がRBRqstに応答することが防止されて、対応のR
BRplyパケットを供給するための責任が特定のデー
タ・ブロックについてのキャッシュ・オーナに転嫁され
る。これに対して、キャッシュのいずれも該特定のデー
タ・ブロックの所有権を主張しないときには(即ち、O
wnerIn信号が偽(“0”)であるときには)、該
データ・ブロックが共有されているものであっても、メ
イン・メモリからRBRplyが供給される。 【0080】前述されたように、パケットによるバスの
切り換えで生成されるリスクは、データ・ブロックの所
有権の変化がなされるのは、リクエスタがRBRqst
を発した後であるが、対応のRBRplyを受け入れる
前であるということである。例えば、リクエストが発せ
られる時点においてメイン・メモリに固有のものである
データ・ブロックに対して、キャッシュはRBRqst
を発することができる。しかしながら、僅かな時間だけ
早いときには、その同じデータ・ブロックに対して新規
なデータを書き込むために、他のいずれかのキャッシュ
がWSRqstを発していることがある。ここでのリス
クは、リクエスト・パケットの到着順にメモリによるサ
ービスがなされるために、RBRplyパケットに先だ
って、WSRplyパケットがメモリによって発せられ
ることである。もし、これが生じたとすると、Writ
eSingleトランザクションを開始させたキャッシ
ュが、該データ・ブロックのオーナになる。データ・ブ
ロックの所有権におけるこの介在的な変化にも拘らず、
そのようにできるときには、メイン・メモリ13(図1
)はまだRBRplyを供給することになる。これの理
由は、RBRqstが受け入れられたときに、特定のデ
ータ・ブロックについて、キャッシュ・オーナがその所
有権を主張する用意がなかったからである。これの意味
することは、このRBRqstパケットによって付与さ
れたデータは古いということである。従って、古いデー
タの取り込みを回避するためには、リクエストされたデ
ータ・ブロックに対する正しい値を算出するため、また
は、その当初のRBRqstに対するRBRplyの受
け入れの後でのReadBlockの再試行を始めるた
めのいずれかのために、ReadBlockリクエスタ
においては、そのRBRqstに対するpending
Stateが用いられる。そのリクエストが古いデータ
の使用を避けるために係属している間に、ReadBl
ockリクエスタが考慮に入れることを必要とするパケ
ットは、そのRBRqstパケットがアドレスされるデ
ータ(WSRply、CWSRplyおよびWBRqs
t)を修正するためのものである。 【0081】メモリ・システムに関する限り、Writ
eBlockトランザクションはFlushBlock
トランザクションに類似しているけれども、これと等価
のものではない。キャッシュはFBRqstを無視する
けれども、WBRqstを無視することはない。これに
代えて、WBRqstによって特定されるアドレス上で
合致する任意のキャッシュにより、そのアドレスで合致
しているデータ・ブロックを、WBRqstパケットに
よって含まれているデータ・ブロックをもってオーバラ
イトされ、そして、該当のデータ・ブロックに対するそ
のオーナ・ビットを偽の(“0”の)状態にリセット(
クリア)するようにされる。 【0082】一つの簡単な例により、単一レベルの両立
性プロトコルについての前述の説明に対して、ある種の
有用な見通しが付加される。ここで認められるように、
次に続く例において説明されることは、特定されたメモ
リ位置(アドレス73)に対するイベントのシーケンス
であって、図12に示されている共有メモリ・システム
83における5個のキャッシュ82a−82eのいずれ
にも該当のアドレスが含まれていない状態から出発する
ようにされている。その便宜のために、この例において
用いられている参照数字は、図12において用いられて
いる参照数字に対応している。 1.  a.プロセッサ81aでアドレス73を読み取
る。 b.キャッシュ82aはミスして、バス85上のRea
dBlockを実行する。 c.メイン・メモリ86でリクエストされたデータを付
与する。 d.データ・ブロックのキャッシュされたコピーに対す
る状態ビットは:Shared82a =0,かつOw
ner82a =0である。 2.  a.プロセッサ81bでアドレス73を読み取
る。 b.キャッシュ82bはミスして、バス85上のRea
dBlockを実行する。 c.キャッシュ82aはアドレス73を含んでいるデー
タ・ブロックに対するそのSharedビットを真の(
“1”の)状態にセットし、また、SharedOut
を主張して、ある所定の遅れの後に、SharedIn
ライン61が真の(“1”の)状態になるように駆動さ
れる。 d.メモリ86はまだデータを付与する。 e.データ・ブロックのキャッシュされたコピーに対す
る状態ビットは:Shared82a =Shared
82b =1;Owner82a =Owner82b
 =0である。 3.  a.プロセッサ81cでアドレス73を読み取
る。 b.キャッシュ82cはミスして、バス85上のRea
dBlockを実行する。 c.キャッシュ82aおよびキャッシュ82bはSha
redOutを主張して、これにより、SharedI
nライン61が再びハイ(“1”)になるように駆動さ
れる。 d.メモリ86はまだデータを付与する。 e.データ・ブロックのキャッシュされたコピーに対す
る現在の状態ビットは:Shared82a =Sha
red82b =Shared82c =1;Owne
r82a =Owner82b =Owner82c 
=0である。 4.  a.プロセッサ81cでアドレス73を書き込
む。 b.データが共有されていることから、キャッシュ82
bがバス85上でWriteSingleを実行する。 c.キャッシュ82aおよびキャッシュ82cはSha
redOutを主張して、これにより、SharedI
nライン61がハイ(“1”)に駆動される。 d.キャッシュ82a,キャッシュ82bおよびキャッ
シュ82cはアドレス73におけるそれらの値を更新す
るが、メモリ86は実行しない。 e.キャッシュ82bはアドレス73を含むデータ・ブ
ロックのオーナになる(Owner82b =1)が、
そうではないデータ・ブロックのキャッシュされたコピ
ーに対する共有状態ビットおよび固有状態ビットは変化
しない。 5.  a.プロセッサ81dでアドレス73を読み取
る。 b.キャッシュ82dはミスして、バス85上のRea
dBlockを実行する。 c.キャッシュ82a,キャッシュ82bおよびキャッ
シュ82cはライン61上のSharedInに対する
SharedOutを主張する。 d.キャッシュ82bはOwnerOutを主張し、こ
れにより、ある所定の遅れの後で、OwnerInのラ
イン62を真の(“1”の)状態に駆動するようにされ
る。これにより、メイン・メモリ86の応答が禁止され
る。これに代えて、データ・ブロックがそのオーナ・キ
ャッシュ82bによって付与される。 e.キャッシュ82dはデータ・ブロックのそのコピー
を、Shared82d =1,Owner82d =
0,としてマークする。そうではないデータ・ブロック
のキャッシュされたコピーに対する共有状態ビットおよ
び固有状態ビットは変化しない。 6.  a.プロセッサ81dで現在のアドレス73を
書き込む。 b.データは共有されていることから、キャッシュ82
dはバス85上でWriteSingleを実行する。 c.キャッシュ82a,キャッシュ82bおよびキャッ
シュ82cはSharedOutを主張して、Shar
edInのライン61が再びハイ(“1”)に駆動され
る。 d.アドレス73を含むデータ・ブロックの所有権がキ
ャッシュ82bからキャッシュ82dに変化する(Ow
ner82b =0,Owner82d =1)。そう
ではないデータ・ブロックのキャッシュされたコピーに
対する共有状態ビットおよび固有状態ビットは変化しな
い。 7.  a.プロセッサ81eでアドレス73を書き込
む。 b.キャッシュ82eはミスして、バス85上のRea
dBlockを実行する。 c.キャッシュ82a,キャッシュ82b,キャッシュ
82c,およびキャッシュ82dはSharedOut
を主張して、これにより、前述された遅れの後で、Sh
aredInライン61が真の(“1”の)状態になる
ように駆動される。 d.アドレス73を含むデータ・ブロックの現在のオー
ナであるキャッシュ82dはOwnerOutを主張し
、OwnerInライン62をハイ(“1”)に駆動す
るようにされて、メモリ86はそれを行うためのデータ
を供給することが禁止される。 e.キャッシュ82eはデータ・ブロックのそのコピー
に対するその状態ビットを、Shared82e =1
,Owner82e =0としてマークする。 f.次いで、データが共有されていることから、キャッ
シュ82eはアドレス73に対してWriteSing
leを実行する。 g.キャッシュ82a,キャッシュ82b,キャッシュ
82c,およびキャッシュ82eはSharedOut
を主張し、これによりSharedInライン61を駆
動して、WSRplyのヘッダーにおけるreplyS
haredビットをして、真の(“1”の)状態にセッ
トさせる。 h.アドレス73を含んでいるデータ・ブロックの所有
権が、キャッシュ82dからキャッシュ82eにスイッ
チする(Owner82d =0,Owner82e 
=1)。 そうでないときには、データ・ブロックのキャッシュさ
れたコピーに対する共有および固有状態ビットは変更さ
れずに留まる。 【0083】2.  マルチレベル・システムにおける
データの両立性 ここで想起されるように、1個の2レベルのメモリ・シ
ステムは、“クラスタ”と呼ばれており、それぞれに第
2レベルのキャッシュ19a−19iを介してメイン・
バス(グローバル・バス)26に接続されているような
、複数個の1レベルのメモリ・システム14a−14i
(図1)からなるものである。これを換言すれば、各ク
ラスタに含まれている単一の第2レベルのキャッシュは
、この第2レベルのキャッシュをクラスタ内の第1レベ
ルのキャッシュに接続させるプライベート・バスととも
に、該クラスタをグローバル・バス26に接続させるも
のである。このプライベートなクラスタに対するバスは
、電気的にも論理的にも、他のクラスタ・バスおよびグ
ローバル・バスから区別されるものである。メイン・メ
モリ13はグローバル・バス26に接続されている。 【0084】このようなメモリ・システムのクラスタ・
バスのレベルにおいては、第2レベルのキャッシュがメ
イン・メモリの機能的な属性を有している。これに対し
て、グローバル・バスのレベルにおいては、該第2レベ
ルのキャッシュは、単一レベルのシステムにおけるキャ
ッシュと本質的に同じ態様の機能を果している。ここで
認められるように、バス・プロトコルおよびデータの両
立性のプロトコルの設計により、1レベルまたはマルチ
レベルのメモリ・システムとして動作しているかどうか
について、該第1レベルのキャッシュが見出すことを妨
げるような動作をするようにされる。これを換言すれば
、第1レベルのキャッシュがそれらの環境から受け入れ
る応答は、双方の場合において同じである。このために
、1レベルのメモリ・システムに対するデータの両立性
のプロトコルについての前述の説明は、マルチレベルの
システムのクラスタの各々に対して当てはまるものとし
て適切に説明されていることを注意すれば十分である。 【0085】マルチレベルのシステムに対するデータ両
立性のプロトコルの拡張では、より高いレベルのキャッ
シュ19a−19iが、いわゆる“existsBel
ow”ビットに加えて、第1レベルのキャッシュが保持
している全ての状態ビット(sharedState,
ownerStateおよびpendingState
)を維持することが必要とされる。これをより詳細にい
えば、より高いレベルのキャッシュの各々は、キャッシ
ュしている各データ・ブロックに対する1個のexis
tsBelowビットを保持している。このexist
sBelowビットは、メモリ・ツリーの同じブランチ
における1個または複数個の次に低いレベルのキャッシ
ュが該当の特定のデータ・ブロックを有しているときに
のみ、より高いレベルのキャッシュ内の任意の所与のデ
ータ・ブロックに対して真の(“1”の)状態にセット
する。このために、例えば図1の2レベルのシステムに
おいては、第2レベルのキャッシュ19a−19iがグ
ローバル・バス26上に現れるパケットのフィルタ操作
が該existsBelowビットにより可能にされて
、ある所与のクラスタ・バス15a,・・・または15
i上にトラフィックを生成するグローバル・バスのトラ
フィックだけが、1個または複数個のクラスタ・バスの
クライエント・デバイスに関連するようにされる。ここ
で認められるように、このようなフィルタ操作をするこ
となく、グローバル・バス26上の全てのトラフィック
が全てのクラスタ・バス15a−15i上に現れ、これ
により、メモリ・システムの2レベルの組成についての
目的に勝るようにされる。 【0086】クラスタ・バス上に現れるパケットがメイ
ン・バス(グローバル・バス)26上のパケット・トラ
フィックとどのように関連しているのか、および、これ
とは逆のときにはどのように関連しているのかについて
の包括的な理解を付与するためには、キャッシュ19a
のような第2レベルのキャッシュの一つの動作について
、ある程度詳細に考察することが有用である。 【0087】第2レベルのキャッシュ19aがそのクラ
スタ・バス15aの上でリクエスタからのRBRqst
を受け入れたときには、該第2レベルのキャッシュ19
aは、RBRqstによって特定されるデータ・ブロッ
クのコピーを含むこともあり、含まないこともある。そ
れがコピーを有しているときには、リプライ・パケット
におけるreplySharedビットを次のように論
理的なORにされたSharedInの値に対してセッ
トした後で、該第2レベルのキャッシュはRBRply
を介してリクエスタにデータを戻す。即ち、(a)RB
Rqstの結果として第1レベルのキャッシュから受け
入れられるSharedOut信号、および、(b)特
定されたデータ・ブロックに対するその共有ビットの現
在の値について、論理的にORにされたSharedI
nの値に対してリプライ・パケットにおけるreply
Sharedビットをセットした後で、該第2レベルの
キャッシュはRBRplyを介してリクエスタにデータ
を戻す(ここで想起されるように、単一レベルのシステ
ムにおいては、リクエスタからRBRqstが受け入れ
られてからある固定的な時間後に、メイン・メモリ・コ
ントローラ25がSharedInライン61上のSh
aredIn信号のレベルを評価して、リクエスタに対
して戻されるRBRplyパケットに対するヘッダーの
replySharedビットに対して、当該評価され
た信号のレベルをコピーするようにされる)。 【0088】これに対して、第2レベルのキャッシュ1
9aがそのクラスタ・バスのリクエスタによって特定さ
れるデータ・ブロックのコピーを有していないときには
、この第2レベルのキャッシュ19aはグローバル・バ
ス上にRBRqstパケットを発生させる。このリクエ
ストに対するRBRplyの戻りにより、該第2レベル
のキャッシュは新規なデータ・ブロックをもって自己の
更新を行い、この新規なデータ・ブロックに対するその
共有ビットの値を算出するためにそのRBRqstに対
するそのpendingStateを使用し、そして、
クラスタ・バス15a上にRBRplyを生成させるこ
とによる応答をする。 【0089】キャッシュ19aのような第2レベルのキ
ャッシュがそのクラスタ・バス上でリクエスタからのW
SRqstを受け入れたときには、該WSRqstによ
って特定されたアドレスを含むデータ・ブロックに対す
るその共有ビットがセットされているかどうかを定める
ために、該キャッシュ19aでチェックされる。当該特
定のデータ・ブロックに対する共有ビットがセットされ
ていないときには、該第2レベルのキャッシュ19aは
WSRqstデータに従ってデータの更新を行い、この
更新されたデータに対するその固有ビットのセットをし
、そして、そのクラスタ・バスを介して(適切な時点に
おいて、SharedInライン61の値におけるre
plySharedビットをもって)WSRplyを生
成させる。これに対して、第2レベルのキャッシュ19
aが真の状態(“1”)に対してセットされたWSRq
stに従うデータ・ブロックに対するその共有ビットを
有しているときには、グローバル・バス26上にWSR
qstを生成させることにより、クラスタ・レベルのリ
クエスタのWSRqstを伝播させる。メイン・メモリ
・コントローラ25は、ある所定の時間遅れの後に、W
SRplyを付与することによってこのグローバル・レ
ベルのリクエストに応答する。このリプライが受け入れ
られたときには、該第2レベルのキャッシュ19aはW
SRqstによって付与されたデータのWSRplyの
反映に従ってデータ・ブロックのそのコピーを更新し、
該データ・ブロックのそのコピーに対するその固有ビッ
トをセットし、そして、そのクラスタ・バス上に(グロ
ーバル・バス26を介して受け入れられたWSRply
におけるreplySharedビットの値、および、
クラスタ・バス上の当初のWSRqstに対応するSh
aredInライン61の値の論理的なORに対するこ
のクラスタ・レベルのWSRplyのセットのヘッダー
・サイクルにおけるreplySharedビットをも
って)WSRplyを生成させる。 【0090】各第2レベルのキャッシュは、グローバル
・バス26上のRBRqstパケットをモニタして、ア
ドレスの合致がなされているRBRqstの同定をする
。このようなアドレスの合致が生じたときには、キャッ
シュ19aのような第2レベルのキャッシュは、特定さ
れたデータ・ブロックのそのコピーに対する固有ビット
およびexistsBelowビットのチェックをする
。当該特定のデータ・ブロックに対するその固有ビット
がセットされているときには、該キャッシュ19aはデ
ータについて応答するけれども、RBRplyパケット
がアセンブルされる態様は、そのexistsBelo
wビットもセットされているか否かに依存することにな
る。これをより詳細にいえば、該existsBelo
wビットがセットされているときには、キャッシュ19
aは初めにそのクラスタ・バス19a上でRBRqst
を生成させて、特定されたデータ・ブロックの第1レベ
ルのキャッシュ・オーナから、グローバル・レベルのR
BRqstによって呼ばれるデータを検索するようにさ
れる。しかしながら、該特定されたデータ・ブロックの
キャッシュ19aによるコピーに対するexistsB
elowビットがセットされていないときには、キャッ
シュ19aにはそのコピーが現在のものであるとして含
まれていることから、グローバル・レベルでのリクエス
タのRBRqstを伝播させることなく、グローバル・
レベルでのRBRplyに応答するようにされる。 【0091】キャッシュ19aのような第2レベルのキ
ャッシュが、グローバル・バス26上のWSRqstに
おいて特定されたアドレスに合致しているときには、通
常のようにSharedOutが主張されるけれども、
他の動作をすることはない。しかしながら、キャッシュ
19aがグローバル・バス26上のWSRplyにおい
て特定されたアドレス上で合致しているときには、該当
のアドレスにおけるデータのそのコピーが更新される。 これに加えて、WSRplyによって特定されたアドレ
スを含むデータ・ブロックのそのコピーに対するexi
stsBelowビットがセットされることが起きたと
きには、キャッシュ19aもそのクラスタ・バス15a
上でWSRplyを生成させる。ここで注目すべきこと
は、このWSRplyパケットはクラスタ・バス上の対
応するWSRqstパケットによって先行されるもので
はなく、バス上でのリクエスト・パケットの数とリプラ
イ・パケットの数とが等しくないのは別の理由によると
いうことである。 【0092】ある第2レベルのキャッシュがそのクラス
タ・バスからFBRqstを取得したときには、リクエ
ストがアドレスされるデータ・ブロックのそのコピーが
更新され、FBRplyが伝送されて、それぞれにリク
エスタに対して戻されるだけである。FlushBlo
ckに対するレスポンダは、常に該レスポンダに対する
実際のまたは明白なメイン・メモリであるから、第2レ
ベルのキャッシュではグローバル・バス上の全てのFB
Rqstが無視される。 【0093】ここで想起されるように、WriteBl
ockトランザクションは、データを物理的なアドレス
空間に入力するために、2次的なデータ・プロデューサ
(メモリ・システムの外部にあるデータ源)による使用
のために有効なものである。該当の目的のために、この
トランザクションによれば、メイン・メモリに対して、
および、WBRqstにおいて特定されたアドレス上で
合致する任意のキャッシュに対して、サイクリックに順
序付けられたデータ・ブロックの書き込みがなされる。 マルチレベル・システムにおいては、WriteBlo
ckトランザクションは、グローバル・バス・トランザ
クションとしての使用のために限定されることができる
。該当のイベントにおいて、WBRqstはグローバル
・バス26とインタフェースされているデバイスによっ
てのみ生成される。そして、全てのWBRqstはメイ
ン・メモリ13によって供給される(WriteBlo
ckについてのこの限定された適用に対するWBRpl
yには、不確定のサイクルによって追従される標準的な
リプライのヘッダー・サイクルが含まれている)。代替
的に、このWriteBlockトランザクションは、
より低いレベルのキャッシュがそれを呼ぶことが許容さ
れるように再規定することができる。そうであるときに
は、より低いレベルのローカル・キャッシュのいずれか
によって生成されたWBRqstは第2レベルのキャッ
シュに渡され、これに次いで、該WBRqstをグロー
バル・バス26上に配置するようにされる。WBRpl
yを受け入れると書き込みが実行される。 【0094】ここで認められるように、この実施例で必
要とされることは、第2レベルのキャッシュの各々には
、それらの下部でキャッシュされていた全てのデータ・
ブロックのコピーが維持されるということである。該当
の目的のために、該第2レベルのキャッシュ19a−1
9iは、それぞれに、それらのそれぞれのクラスタ・バ
ス上で第1レベルのキャッシュの記憶容量の和に少なく
とも等しいデータの記憶容量を有するように選択される
。更に、第2レベルのキャッシュ19a−19iは、そ
れぞれに、それらのそれぞれのクラスタ・バス上で第1
レベルのキャッシュの連想性の和に少なくとも等しい連
想性の程度を有するように選択される。例えば、ある1
個のクラスタに4個の第レベルの直接にマッピングされ
たキャッシュ(即ち、1の程度の連想性を有するキャッ
シュ)が含まれているとすると、該当のクラスタに対す
る第2レベルのキャッシュは、そのクラスタ・バス上で
現れ得る任意のデータ・ブロックのアドレス上で確実に
合致できるように、少なくとも4の程度の連想性を有す
るように選択される。 【0095】II.増強された実施例 この発明のメモリ・システムは容易に拡張できるもので
あり、また、簡単に増強されるものであるから、修正お
よび改善のためのその可能性を例示するために、ある所
定の拡張および増強についての説明をする。その初めの
実施例の説明の構成をするために上記で使用されたと同
じ一般論的なアウトラインが追従されて、この増強され
た実施例に独特の特徴が属する事項を同定するようにさ
れる。 【0096】A.  システム・アーキテクチュア所望
であるときには、多重のバスは並列に動作するようにイ
ンターリーブさせることが可能であり(図示されない)
、これによって、必要とされるバス・ワイヤの本数に比
例して増大する危険性を招きながら、使用可能なバスの
バンド幅を増大するようにされる。例えば、ある1個の
実施においては、ある所与のパケットが伝送されるイン
ターリーブしたバスを同定するために使用されるべきリ
クエスト・パケットおよびリプライ・パケット(それぞ
れに図13および図14を参照)に対するヘッダーのア
ドレス・フィールドにおけるビット8および9が許容さ
れる。このために、該当の実施においては、バス・アー
キテクチュアについての1−ウエイ、2−ウエイおよび
4−ウエイのインターリーブが許容される。 【0097】B.  デバイス・バス・インタフェース
図15に示されているように、増強された実施例のため
の標準的なデバイス・バス・インタフェース101には
、幾つかの注目すべき修正が取り込まれている。その差
異のあるものは種々の信号を同定するために使用される
術語に関連しているが、他のものは相当に重要なことで
ある。インタフェース101の内部ロジックは図16に
例示されている。図16に示されているドライバ104
−109およびレシーバ111−117は、典型的には
オープン・ドレインのCMOSデバイスであって、前述
のGunningの出願である出願番号第07/502
,372号の教示を維持しているものである。 【0098】1.  信号 インタフェース101および図6のインタフェース41
の信号ポート間に存在する実質的な区別については、こ
のセクションの以下のヘッディングの下にある程度詳細
に開示される。 【0099】2.  裁定インタフェースここで想起さ
れるように、この発明によるメモリ・システムの各バス
は、全ての競合しているバス・クライエントは彼らのホ
スト・バスに対する公平で限界のあるタイム・アクセス
を確実にし、また、バス上でのパケットの渋滞を回避す
るフロー・コントロールを実施するための裁定手段を備
えている。上記で指摘されたように、1個または複数個
のバスがパケットで切り換えられることから、パケット
の渋滞は一つの結末をなすものであり、これの意味する
ことは、それらのサービスが可能になるよりも早く、バ
ス・クライエントがトランザクション・リクエストを累
積できることである。 【0100】この増強された実施例においては、各クラ
イエント・デバイスは、3本のリクエスト・ワイヤ  
Req  L[2..0]および3本の許可タイプ・ワ
イヤGnt−Type  L[2..0]を有する裁定
ポートを介して、そのバスのための裁定手段と相互作用
をする。これに加えて、該裁定手段に接続されている全
てのクライエントによって共有される単一のGntLワ
イヤがある。 【0101】ある1個のバス・クライエントは、1クロ
ック・サイクルまたは2個の連続するサイクルの間、そ
のReq  Lワイヤを用いて、そのバスのための裁定
手段に対してその裁定リクエストの通信をする。その第
1のサイクルにおいては、該クライエントはそのリクエ
ストの優先権についての通信をする。これに加えて、正
常な裁定リクエストのためには、クライエントはそのR
eq  Lワイヤの1本の上で第2のサイクルを用いて
、バスがリクエストされているパケット長について裁定
手段に告知するようにされる。典型的には、これらの裁
定リクエストの2個のサイクルに対するコード化は次の
通りである。 第1サイクル 7:裁定停止(Stop  Arbitration)
6:リプライ・ハイ(Reply  High)5:ポ
ーズ(Pause) 4:リプライ・ロー(Reply  Low)3:ホー
ルド(Hold) 2:リクエスト・ハイ(Request  High)
1:リクエスト・ロー(Request  Low)0
:ノー・リクエスト(No  Request)第2サ
イクル L:パケット長(0=>2サイクル,1=>9サイクル
) 【0102】4個の優先権であるRequest  L
ow,Request  High,Reply  L
ow,およびReply  High  は、バスに対
する“正常な”裁定リクエストに対応している。これを
換言すれば、それらが使用されるのは、裁定リクエスト
を登録しているデバイスが実際にパケットを伝送しよう
とするときである。Reply  Highはキャッシ
ュのリプライだけに用いられる;Reply  Low
はメモリのリプライだけに用いられる;そして、Req
uest  HighはプロセッサおよびIOキャッシ
ュのような大方のリクエスタに対するものである。Re
quest  Lowは、裁定手段からの許可を得るた
めに長い遅れが裁定的に黙認される“バックグラウンド
”デバイスによってのみ用いられるものである。再びこ
の実施例においては、ある1個のクライエントは多くの
裁定リクエストを続けて発することができるが、この場
合に、ある1個の分離したリクエストはリクエスト・サ
イクルの各ペアに対して登録される。更に、クライエン
トは、裁定手段がある所与のクライエントの側にたって
登録できる裁定リクエストの個数だけ、該裁定手段によ
って課される実施限界を彼らが超えていないことを確実
にするという責任がある。上述された裁定のルールを維
持しながら、より高い優先度の裁定リクエストが、より
低い優先度のリクエストに先だってサービスされる。そ
して、同じ優先度のレベル内にある裁定リクエストは、
ほぼラウンド・ロビン式の順序でサービスされることに
なる。 【0103】(NoRequest,Hold,Pau
seおよびStopのような)この実施例によって支持
される他の裁定の優先権は、クライエントが彼らのホス
ト・バスに対する裁定手段からの特別なサービスをリク
エストすることが許容されるように利用可能なものであ
る。これらの特別な裁定リクエストは、裁定の優先度を
特定する1サイクルのリクエストだけ裁定手段に対して
通信される。裁定手段からのサービスは何もリクエスト
されないときには、バス・クライエントはNoRequ
estを使用する。Holdは、リクエスト・パケット
に対するいかなるリクエストでも裁定手段が許容しない
ように所望するクライエントによって使用される(Ho
ldを下回る優先度)。このために、Holdは、その
目的および機能において、先に説明された実施例で採用
された裁定リクエストについて、“システム・ワイドの
保持を要求すること”および“システム・ワイドの保持
に対する要求を解除すること”のコード化をすることと
類似している。しかしながら、この実施例においては、
クライエントがHoldコードを主張するサイクルだけ
にわたって、裁定手段はHold状態に留まる。Pau
seはこの発明に対しては固有のコード化をすることで
ある。キャッシュによって主張できることは、メモリに
よって発生されるリプライが殺到するのを回避すること
である。最後に、Stopは、デバイスが全ての裁定を
停止させようと所望するときに用いられる。これにより
、裁定手段をして、任意の裁定手段がStopコードを
主張するだけのサイクルにわたってバスの許可を停止さ
せる。このために、ここで理解されることは、Stop
コードは、初めの実施例において考えられたSStop
信号と機能的に類似であるということである。 【0104】Gnt  LおよびGntType  L
は、次のバス・マスターになるように裁定手段によって
選択されていることをクライエントに対して告知するた
めに、裁定手段によって用いられるものである。この信
号は1サイクルだけ主張されるものであり、一連の後続
のサイクルにわたって、選択されたバス・クライエント
にバス・マスターシップを付与するものである。ここで
、GntType  Lは許可が与えられている裁定リ
クエストの優先度を指示している。このような目的のた
めに、GntType Lは次のように好適にコード化
される。 7:裁定停止(Stop  Arbitration)
6:リプライ・ハイの許可(Grant  Reply
  High) 5:保留(Reserved)(使用されない)4:リ
プライ・ローの許可(Grant  Reply  L
ow) 3:保留(Reserved)(使用されない)2:リ
クエスト・ハイの許可(Grant  Request
  High) 1:リクエスト・ローの許可(Grant  Requ
est  Low) 0:許可ナシ(No  Grant) 【0105】Gnt  Lが主張されており、該当のク
ライエントに対するGntTypeL  がゼロではな
いときにのみ、所与のクライエントはそのバスに対する
裁定手段からの有効な許可を有している。この実施例に
おいて、ある所与のクライエント・デバイスに対するイ
ンタフェース101におけるサイクルi上でGnt  
LおよびGntType  Lが主張されているときに
は、クライエントは、サイクルi+2において、その出
ていく単方向または双方向のバス・セグメントを駆動す
ることができる。図17に示されているものは、裁定(
5サイクルの裁定の潜在が仮定されている)およびパケ
ットの伝送の間の、裁定リクエスタのデバイス・バス・
インタフェース101における、より重要な裁定リクエ
ストおよび許可信号についてのタイミングである。この
図17を読むときには図16にも留意すべきである。 【0106】上述された実施例におけるように、裁定手
段はフロー・コントロールを実施するための2個の異な
るメカニズムを有している。裁定の優先度は、これらの
フロー・コントロールのメカニズムの第1のものである
。ここで理解されるように、リクエスト・パケットおよ
びリプライ・パケットの双方を発するクライエント・デ
バイスは、リクエスト・パケットの伝送に対するそれら
の裁定リクエストよりも、リプライ・パケットの伝送に
対するそれらの裁定リクエストに対して、より高い優先
度を常に指定している。渋滞の始まりに先だってデバイ
スが常にリプライの用意をしているときには、これは渋
滞の問題を除外するために十分なものであるが、全ての
デバイスにとってはこの要求を満たすことはできない。 例えば、それらが受け入れ得るリクエスト・パケットに
対する到達レートにおいて応答するためには、メモリ・
コントローラ25(図1)のような、より遅いデバイス
を予期することは実際的ではない。更に、このようなデ
バイスでオーバフローのリスクなしで累積できる入力キ
ューの長さは法外に長いものである。 【0107】このために、裁定手段は、Holdおよび
Pauseの裁定リクエストのコード化に対する上述の
応答を介して、第2のフロー・コントロールのメカニズ
ムを実施するようにされる。ここで認められるように、
HoldまたはPauseのリクエストに対する裁定手
段の応答は即座のものではないから、それらのHold
またはPauseのリクエストがバスの裁定手段におい
て効力を生じる間に幾つかの入来するパケットの累積が
許容されるように、クライエント・デバイスはそれらの
入力キューにおいて十分な余裕を持たねばならない。し
かしながら、クライエント・デバイスのいずれかが極め
て頻繁にHoldまたはPauseのリクエストをする
ときには、バスのスループットが無用な逆効果を生じる
ことから、バランスが衝撃を受けることがある。 【0108】3.  データ/コントロール・インタフ
ェース インタフェース101のデータ・ポートおよびオプショ
ンの受け入れポート(図15)は、その目的および機能
において、それぞれに、インタフェース41の送出ポー
トおよび受け入れポート(図4)に類似している。しか
しながら、インタフェース41のHeaderCycl
eIn信号およびHeaderCycleOut信号は
、パケットのヘッダー・サイクルを同定するための逆パ
リティ・シンドロームを採用するという立場から、これ
らは除外されている。各バス上の全てのパケットの各サ
イクルに対するバイト・レベルにおいて、パリティの演
算がこの増強された実施例でなされていることから、こ
れは実際的なことである。各バスでは、典型的に、64
ビット幅の多重化したアドレス/データ・パスが設けら
れているとすると、これの意味することは、全てのパケ
ットの各サイクルについて8個のパリティ・ビットがあ
るということである。その結果として、データ・サイク
ルに対する正しい偶数パリティのコード化は、ヘッダー
・サイクルに対する正しい奇数パリティのコード化から
、8のハミング距離だけ離されることになるが、標準的
なエラー検出技術を用いてパリティ・エラーを検出する
ことの可能性について妥協することからは、パリティの
この異常な使用を防止するためには十分な離隔であると
信じられる。 【0109】インタフェース101の他の差別的な特徴
は、BidEN  L信号がそのコントロール・ポート
に加えられて、該インタフェース101が単方向のバス
・セグメントまたは双方向のバス・セグメントに接続さ
れているかどうかを肯定的に指示するようにされること
である。BidEN  Lが主張されているとき、また
は真(“1”)であるときには、DataPortは双
方向モードで動作して、クライエント・デバイスと双方
向のバス・セグメントとの間で、双方向のパケット通信
を支持するようにされる。これに対して、BidEN 
 Lが主張されていないとき、または偽(“0”)であ
るときには、DataPortは単方向の出力モードで
動作し、また、ReceiveOptionPortは
単方向の入力モードで動作するようにされる。 【0110】4.  両立性ポート 図4に示されているインタフェース41の両立性ポート
は、図15のインタフェース101における直接的な対
応を備えてはいないが、ここで認められることは、両立
性の信号がインタフェース101の裁定ポートにマージ
されていることである。この表象的な(present
ational)変更がなされているのは次の理由によ
る。即ち、(a)バス・クライエントからのReqSh
aredL  信号(SharedOut信号として先
に同定されたもの)の論理的なORをとって、それらの
クライエントに対してGrantShared  L信
号(SharedIn信号として先に同定されたもの)
を供給するために、および、(b)バス・クライエント
からのReqOwner  L信号(OwnerOut
信号として先に同定されたもの)の論理的なORをとり
、それらに対してGrantOwner  L信号(O
wnerIn信号として先に同定されたもの)を供給す
るためには、各バスに対する裁定手段が便利な位置にあ
ることが見出されたからである。実際に、ReqSha
red  L,GrantShared  L,Req
Owner  LおよびSharedOut  Lは、
機能的には、それぞれに、インタフェース41のSha
redOut,SharedIn,OwnerOutお
よびOwnerIn信号と同等のものであるから、Sh
aredOut,SharedIn,OwnerOut
およびOwnerIn  なる名称は、拡張されたデー
タ両立性のプロトコルの記述を簡略化するために、以下
のそれらの信号を参照する際に用いられることになる。 両立性信号をインタフェース101の裁定ポートにマー
ジさせることの付加的な利点は、出力信号に対してはイ
ンタフェース101において、また、入力信号に対して
は裁定手段において、単一ビット・パリティのコード化
の使用を介するようにして、裁定および両立性の入力信
号および出力信号について組み合わされたパリティ・チ
ェック操作を容易にするものである。 【0111】C.  トランザクションこの実施例に対
して規定されているトランザクションは次の通りである
。   トランザクション        リクエスト  
      コマンド          リクエスト
  名                      
/リプライ        コード化        
  /リプライ                  
        省略形            (リ
クエスト      パケット長          
                         
         /リプライ)Noop/Error
             Noop/Error  
         00000(0/1)      
1/1 サイクルWriteSingleInvali
date  WSIRqst/WSIRply    
  00001(0/1)      2/2 サイク
ルNonCacheableReadBlock  N
CRBqst/NCRBRply     00010
(0/1)      2/9 サイクルFlushB
lock             FBRqst/F
BRply        00011(0/1)  
    9/2 サイクル(未定義)        
      −                  
 00100(0/1)      −       
  WriteSingleUpdate      
WSURqst/WSURply      0010
1(0/1)      2/2 サイクルReadB
lock              RBRqst/
RBRply        00110(0/1) 
     2/9 サイクルWriteBlock  
           WBRqst/WBRply 
       00111(0/1)      9/
9 サイクルIOReadSingle       
    IORSRqst/IORSRply    
01000(0/1)      2/2 サイクルI
OWriteSingle          IOW
SRqst/IOWSRply    01001(0
/1)      2/2 サイクルIOReadBl
ock            IORBRqst/I
ORBRply    01010(0/1)    
  2/9 サイクルIOWriteBlock   
        IOWBRqst/IOWBRply
    01011(0/1)      9/2 サ
イクル(未定義)              −  
                 01100(0/
1)      −         Lock   
                LRqst/LRp
ly          01101(0/1)   
   2/2 サイクルDemapInitiate 
         DmIRqst/DmIRply 
     01110(0/1)      2/2 
サイクルInterrupt            
  Int/−                01
111(0/1)      2/− サイクル(未定
義)              −        
           10000(0/1)    
  −         SwapSingleInv
alidate   SSIRqst/SSIRply
      10001(0/1)      2/2
 サイクル(未定義)              −
                   10010(
0/1)      −         KillB
lock              KBRqst/
KBRply        10011(0/1) 
     2/2 サイクル(未定義)       
       −                 
  10100(0/1)      −      
   SwapSingleUpdate      
 SSURqst/SSURply      101
01(0/1)      2/2 サイクル(未定義
)              −         
          10110(0/1)     
 −         (未定義)         
     −                   
10111(0/1)      −        
 (未定義)              −    
               11000(0/1)
      −         IOSwapSin
gle           IOSSRqst/IO
SSRply    11001(0/1)     
 2/2 サイクル(未定義)           
   −                   11
010(0/1)      −         (
未定義)              −      
             11011(0/1)  
    −         (未定義)      
        −                
   11100(0/1)      −     
    UnLock               
  URqst/URply          11
101(0/1)      2/2 サイクルDem
apTerminate         DmTRq
st/DmTRply      11110(0/1
)      2/2 サイクル(未定義)     
         −               
    11111(0/1)       −   
      【0112】再び、全てのリクエスト・パケットおよび
リプライ・パケットの第1のサイクルはヘッダー・サイ
クルである。図13に戻って認められることは、この実
施例におけるリクエスト・パケットに対するヘッダー・
サイクルのフォーマットが、42ビット幅のアドレス・
フィールドとともに、6ビット幅のコマンド・フィール
ド(リクエスト/リプライのフラグ・ビットを含んでい
る)を有するようにされていて、規定されている増大し
た個数のトランザクションのコード化に対して十分な能
力を備えていることである。アドレス・フィールドのよ
り上位の2ビットは、実施されている種々の“単一の”
(WriteSingleUpdate,I/ORea
dSingle,等の)トランザクションに対してアド
レスされた“単一のもの”のサイズ(SSize)を特
定するために採用されており、また、このフィールドの
下位の40ビットはI/Oアドレス空間またはメモリ・
アドレス空間(即ち、物理的なアドレス空間)のいずれ
かにおけるバイト・アドレスを特定するために有用なも
のである。一つの実施においては、これらのバイト・ア
ドレス・ビットの中の36個だけが採用されており、残
りの4ビット(例えば、該バイト・アドレスの上位4ビ
ット)は、将来のアドレス拡張のために保留されている
(保留または不使用のアドレス・ビットに対してとられ
る対策については上記の説明を参照)。 【0113】図13におけるリクエスト・パケットのヘ
ッダー・サイクルに付加的に含まれているPLenビッ
トは、該パケットが(9サイクルの)長パケットである
か、または、(2サイクルの)短パケットであるかの信
号を出すためのものである。このコード化はヘッダーの
コマンド・フィールドで搬送されるコマンドについては
冗長性があるけれども、ある所定の事例では長パケット
に関連しており、他の事例では短パケットに関連するよ
うな、まだ規定されていないコマンドの適当なコード化
を許容するようにされる。更に、キャッシュ・リクエス
タによって任意の所与のデータ・ブロック上に維持され
るオーナ・ビットをコントロールするための  Owビ
ットがあり、該所与のデータ・ブロックの値または共有
状態に影響し得るトランザクションを開始するようにさ
れる。該当のカテゴリに入るこの実施例のトランザクシ
ョンは、WriteSingleUpdate,Wri
teSingleInvalidate,SwapSi
ngleUpdate,SwapSingleInva
lidateおよびReadBlockである。それら
のトランザクションに対するリクエスト・パケットのヘ
ッダーにおけるOwビットの状態により、該トランザク
ションが関係するデータ・ブロックの所有権を受け入れ
るために、リクエスタに用意があるかどうかの指示がな
される。他の全てのトランザクションに対しては、この
Owビットの値が偽りの(“0”の)状態にあるように
維持される。 【0114】この実施例におけるリクエスト・パケット
のヘッダーには8ビット幅のDeviceIDフィール
ドおよび4ビット幅のSubIDフィールドも含まれて
いるが、これらは、その目的および機能において、上記
された実施例のヘッダーによって搬送されるDevic
eIDと類似している(この例においては、SubID
は、多くの未解決のリクエストに対するリプライの曖昧
さをなくすことを、バスのクライエント・デバイスで可
能にするために採用できるものであり、また、SubI
Dフィールドは、リクエスタの状態を内部的に記憶させ
ることを回避するために、トランザクションのリクエス
タに対する内部的な状態またはpendingStat
eをコード化するために採用できるものである)(両立
性プロトコルについての検討を参照)。図13における
ヘッダーに付加的に含まれているエラー・ビット(Er
r)および不使用ビットの双方は、リクエスト・ヘッダ
ーにおいて偽の(“0”の)状態に維持される(Err
ビットはリプライ・ヘッダーにおいてのみ意味があるも
のである)。 【0115】図14と図13との比較により、リプライ
・パケットに対するヘッダー・サイクルが対応のリクエ
スト・パケットに対してビット対ビットで同等であるこ
とが確かめられる。ただし、コマンド・フィールドのリ
クエスト/リプライ・ビットは該パケットをリプライと
して同定するように反転される;リプライ・パケットの
長さ(即ち、長または短)は  PLen  ビットに
よってコード化される;Errビットは、リプライのア
センブルをしているときにレスポンダがエラーに遭遇し
たか否かに依存して、真の(“1”の)状態にセットさ
れるか、または、偽りの(“0”の)状態に維持される
;Owビットの状態が採用されて、トランザクションが
関係しているデータ・ブロックの所有権を獲得するため
にリクエスタが許容されているか否かの指示をするよう
にされる;そして、リクエスト・ヘッダーの不使用ビッ
トが共有(Sh)ビットとして採用されて、対応のリク
エストがアドレスされたデータが、リクエスト・パケッ
トを受け入れた時点において共有されているか否かの信
号をするようにされる(このように共有されたデータに
ついての、より緻密な説明は上記で現れている)。 【0116】1.  メモリ関連トランザクションこの
実施例のために備えられているメモリ・アクセス・トラ
ンザクションは、ReadBlock,NonCach
eableReadBlock,FlushBlock
,WriteBlock,WriteSingleUp
date,WriteSingleInvalidat
e,SwapSingleUpdate,SwapSi
ngleInvalidateおよびKillBloc
kである。ReadBlock,WriteBlock
およびFlushBlockトランザクションは、多く
の点において、第1の実施例において対応する同名のト
ランザクションと同等のものであるが、この実施例にお
けるこれらのトランザクションおよびその他の“ブロッ
クの”トランザクションでは8サイクルのデータ転送ユ
ニット(即ち、8バス・サイクルであって、その各々に
は8個の連続バイトが含まれている)が用いられる点で
差異がある。更に、WriteSingleUpdat
eトランザクションは、早期の実施例におけるWrit
eSingleトランザクションと機能的に類似してい
るが、新規に規定されたWriteSingleInv
alidateトランザクションとの区別のためにその
名称が変更されている。同様にして、SwapSing
leUpdateは、前述されたConditiona
lWriteSingleトランザクションを比較的小
幅に修正したトランザクションである(即ち、Swap
SingleUpdateは、Conditional
WriteSingleで実行される細かい読み取り−
修正−書き込みよりは、細かい読み書きを実行するため
に用いられるものである。)。新規に規定されたSwa
pSingleInvalidateトランザクション
との区別をするために、それは“Update”なトラ
ンザクションとして同定される。 【0117】WriteSingleInvalida
teおよびSwapSingleInvalidate
トランザクションは、それぞれに、WriteSing
leUpdateおよびSwapSingleUpda
teトランザクションに対する書き込み無効化のスタイ
ルの対応事項を備えるように規定されている。それらに
より、特定のデータ・ブロックのコピーをキャッシュ・
リクエスタで更新することが可能にされ、受け入れてい
るキャッシュがトランザクションのペンディングをする
データ・ブロックに対して無効化のリクエストがアドレ
スされない限り、同じデータ・ブロックのコピーを含ん
でいる任意の他のキャッシュはそのコピーを無効にする
ようにされている。ここで想起されるように、該当のデ
ータ・ブロックに対するValidビットを偽の(“0
”の)状態にクリアするだけで、キャッシュはそのデー
タ・ブロックの任意のものを無効化し、または、削除す
ることができる。 【0118】この実施例において、メイン・メモリ13
(図1)から読み取られた後で修正されたデータ・ブロ
ックの所有権は、必ずしも最後に書き込みをしたプロセ
ッサに対するキャッシュに属するものではない。代替的
に、データ・ブロックの所有権の転移は、WriteS
ingleUpdate,WriteSingleIn
validate,SwapSingleUpdate
,SwapSingleInvalidateおよびR
eadBlockトランザクションに対するリクエスト
・パケットおよびリプライ・パケットのヘッダー・サイ
クルにおけるOwビットの状態のコントロールによって
なされる。これを詳細にいえば、リクエスタを除く全て
のキャッシュであって、WSIRply,WSURpl
y,SSIRplyおよびSSURplyと合致するも
のは、特定のデータ・ブロックに対するそれらのオーナ
・ビットを偽の(“0”の)状態に無条件でクリアさせ
る。これに対して、リクエスタは、このようなリプライ
を受け入れると、該リプライにおけるOwビットに依存
して、該当のデータ・ブロックに対するそのオーナ・ビ
ットを(“1”)にセット、または(“0”)にクリア
する。リプライ・ヘッダーにおけるOwビットが真の(
“1”の)状態にセットされているときには、リクエス
タは、該データ・ブロックに対するそのオーナ・ビット
を真の(“1”の)状態にセットする。しかしながら、
リプライ・ヘッダーにおけるOwビットが偽の(“0”
の)状態にクリアされているときには、対応のリクエス
ト・パケット内のOwビットが偽の(“0”の)状態に
クリアされているために、または、ある他の理由により
、リプライを用意しながらレスポンダがOwビットを偽
の(“0”の)状態にクリアしたために、リクエスタは
、トランザクションが関係するデータ・ブロックに対す
るそのオーナ・ビットを偽の(“0”の)状態にクリア
する。ここで認められるように、メイン・メモリ13(
図1)は、物理的なアドレス空間における全てのデータ
・ブロックの欠陥のあるオーナである。従って、WSI
Rqst,WSURqst,SSIRqstまたはSS
URqstのヘッダーに偽の(“0”の)Owビットが
含まれているときには、メモリ13は、通常は、リクエ
ストによって付与される新規なデータに従って更新され
る。勿論、SSIRqstまたはSSURqstを発す
るキャッシュが、これらのトランザクションの読み取り
フェーズを支持する際に、まだプロセッサに対して古い
データを供給する責任があることから、リクエスタは、
そのリクエストに対するリプライを少なくとも受け入れ
るまでは、該当のデータ値を留めておくようにされる。 【0119】OwビットはReadBlockトランザ
クションにおいても用いられる。特に、関連のプロセッ
サによる書き込みに対するプレリュードとして、キャッ
シュ・リクエスタによって発せられるRBRqstにお
いて、それは真の(“1”の)状態にセットされて、対
応のRBRqstが受け入れられるときに、特定のデー
タ・ブロックに対するそのオーナ・ビットを真の(“1
”の)状態にセットすることを、リクエスタが所望して
いることが告知される。このために、ここで理解される
ことは、RBRqstのヘッダーにおけるOwビットに
より、リクエスタに対する特定のデータ・ブロックの所
有権の加速された転移が許容されることになる。 【0120】この実施例に対するReadBlockト
ランザクションに特有の別の特徴は、RBRplyを可
能にするようにされた提案事項であって、リプライにつ
いての任意のデータ・サイクルにおいて、リクエスタに
対して戻されるべきデータをフェッチしている間にメモ
リ・エラーが生じたときには、該リクエスタにこれを告
知するようにされている。何等かのこのようなデータの
フェッチ・エラーが生じたことがレスポンダによって見
出されたときには、1個または複数個のエラーで影響を
受けるRBRplyのデータ・サイクルの各々に対して
、メモリ・フォールト(MemFault)サイクルが
代用される。MemFaultサイクルは独特のものと
して同定可能であるが、その理由は、(a)そのための
パリティがヘッダー・サイクルの奇数パリティに対して
反転されること、(b)Noopに対するコマンド・コ
ードが含まれていること、および、(c)そのDevi
ceIDおよびSubDeviceIDフィールドがエ
ンプティ(全て0)であることのためである。生じてい
るメモリ・エラーのタイプを同定するエラー・コードは
、このようなMemFaultサイクルの下位32ビッ
トによって支承されている。このようなメモリのフォー
ルト・サイクルのメカニズムを付与する重要な利点は、
リクエストされたメモリの読み取り動作を実行しながら
、レスポンダがRBRplyを発することが許容される
ことであるが、これの意味することはメモリの待ち時間
を減少できることである。 【0121】KillBlockは規定されている新規
なトランザクションであって、(メイン・メモリと同様
な)第2のまたはより高いレベルのキャッシュが、それ
らがブランチするより低いレベルのキャッシュから不使
用のデータ・ブロックを排除できるようにされる。例え
ば、しばらくの間図1に戻ると、キャッシュ19aはK
illBlockを始動させて、クラスタ・バス15a
上にある全てのキャッシュ16aa−16ajから特定
のデータ・ブロックの全てのコピーを除去させることが
できる。 【0122】これをより詳細にいえば、該KillBl
ockトランザクションが重要であるという理由は、第
2のまたはより高いレベルのキャッシュにより実在のデ
ータ・ブロックを犠牲にすることが許容されて、該当の
データに対して指定されていた記憶位置が、その上位ま
たは高位レベルのバス(即ち、キャッシュ19aの場合
にはグローバル・バス26)上でReadBlockを
実行することによってキャッシュが獲得する新規なデー
タを記憶させるために再指定できるようにされる。ここ
で想起されるように、それらのより下位レベルのバス(
例えば、バス15a)上の任意のRBRqst上で“ミ
ス”にされたときには、これらのより高位レベルのキャ
ッシュはそれらのバス上でReadBlockを始動さ
せる。このために、KillBlockトランザクショ
ンの規定は、初めの実施例における第2のまたはより高
位レベルのキャッシュに対して課された、潜在的に繁雑
な“associator  coverage(連想
範囲)”を回避するためのものである。ここでより詳細
に想起されることは、第2レベルのキャッシュ19a−
19iの各々を選択することにより、第1レベルのキャ
ッシュに対して連想範囲を付与することが可能にされて
、(a)それらの下位に存在する第1レベルのキャッシ
ュの容量の和に少なくとも等しい容量、および、(b)
それらの第1レベルのキャッシュの連想性の和に少なく
とも等しい連想性の程度を持たせることである。 しかしながら、このKillBlockトランザクショ
ンによれば、代替的でコストが潜在的に低い技術が付与
されて、第2レベルのキャッシュにより、それらの第1
レベルのチャイルド・キャッシュ(即ち、それらがブラ
ンチする第1レベルのキャッシュ)に対する完全な範囲
を与えることが確実にされる。 【0123】KillBlockを実行するために、よ
り高位レベルのキャッシュにより適当な犠牲アルゴリズ
ム(周知のいかなる犠牲アルゴリズムでも使用できる)
の使用を介して潜在的な犠牲としてのデータ・ブロック
が選択され、そして、該選択されたデータ・ブロックに
対するそのオーナ・ビットの状態がチェックされる。潜
在的な犠牲ブロックに対するそのオーナ・ビットが真の
(“1”の)状態にセットされると、KillBloc
kの始動手段(initiator)により、その下位
レベルのバス(即ち、第2レベルのキャッシュ19aの
場合にはクラスタ・バス15a)上にRBRqstがま
ず発せられる。このRBRqstは潜在的な犠牲にアド
レスされているから、対応のRBRplyが受け入れら
れるときには、該KillBlockの始動手段により
潜在的な犠牲のそのコピーが更新される。所要であれば
更新の後で(KillBlockの始動手段が潜在的な
犠牲に対するそのオーナ・ビットを偽の(“0”の)状
態にクリアしたときには、更新の実行はされない)、こ
のKillBlockの始動手段は、その下位レベルの
バスを用いて、該潜在的な犠牲に対してアドレスされる
KBRplyを発するようにされる。このKBRply
上で合致する、より下位レベルのキャッシュ(例えば、
キャッシュ12aa−12aj)の各々は、その上でペ
ンディングしているトランザクションがない限りは、特
定されたデータ・ブロックのそのコピーに対するそのV
alidビットをクリアするようにされる。このKil
lBlockの始動手段は、次いで、その下位レベルの
バス上にKBRqstを発する。このKBRqstは潜
在的な犠牲に対してアドレスされているから、KRBq
stが受け入れられ、そのKRBqstに応答して、よ
り下位レベルのキャッシュの任意のものがReqSha
red  L(SharedOut)が決定されるとき
には、KillBlockの始動手段によってそのGr
antSharedL入力信号(換言すれば、そのSh
aredIn信号)の状態がチェックされる。もしそう
であるとすると、KillBlockの始動手段がリセ
ットされて、ある所定の将来の時点まで、選択されたデ
ータ・ブロックを犠牲にすることが延期される。しかし
ながら、KRBqstの受け入れの際に、より下位レベ
ルのキャッシュのいずれもReqShared  L(
SharedOut)を主張しないときに、このKil
lBlockの始動手段で確認されることは、その下位
レベルのバス上の任意のキャッシュにおいて特定された
データ・ブロックのコピーは存在せず、これに次いで、
そのより高位レベルのバス上でFlushBlockが
始動して、データ・ブロックのそのコピーをメイン・メ
モリ13に書き戻すようにされる(または、次に高いレ
ベルのキャッシュに書き戻すようにされる)。 【0124】メモリ・システムの効率性を増大させるた
めに規定されている別のトランザクションは、NonC
acheableReadBlockトランザクション
である。このトランザクションは、アドレスされている
データ・ブロックの共有/非共有状態が影響を受けない
ことを除き、前述されたReadBlockトランザク
ションと同等のものである。従って、その適用は、DM
AI/Oデバイスのような非キャッシュ式のリクエスタ
の側にたって、合致性のあるメモリ空間(即ち、物理的
なアドレス空間)からのデータ・ブロックの読み取りに
限定される。 【0125】2.  I/O  トランザクションI/
Oデバイス間でのデータ・ブロックの読み取りおよび書
き込み(それぞれに、IOReadBlockおよびI
OWriteBlock)をするために、また、I/O
デバイスに対してアトミックな読み/書き(IOSwa
pSingle)を実行するために、I/Oトランザク
ションは付加的なトランザクションの支持を付与するよ
うに拡張されている。更に、第1実施例のBIOWri
teトランザクションは、次のSectionにおいて
略述されるような、より特定のInterruptトラ
ンザクションを備えるために省略されている。 【0126】3.  他のトランザクションLockお
よびUnLockは、このカテゴリにおいて、より関心
のある拡張がなされる2個のトランザクションである。 Lockはキャッシュ・リクエスタにより呼ばれること
ができて、リクエスタを除く任意のクライエントにとっ
て、特定されたデータ・ブロックに影響があり得るいず
れのトランザクションでもその実行を防止するようにさ
れる(即ち、WriteBlock,WriteSin
gleUpdate,WriteSingleInva
lidate,SwapSingleInvalida
teまたはKillBlock)。従って、ある所与の
データ・ブロックに課されるトランザクション上に、細
かい順序付けの程度を課することが有用である。また、
リクエストされるデータ・ブロックに対する書き込みの
頻度のために、古いデータが戻されるRBRqst上で
の無限回数の再試行をキャッシュで防止することも有用
である。全てのキャッシュ・クライエントによってロッ
クされたデータ・ブロックのアドレス(LockAdd
ress)を登録することにより、また、リクエスタ以
外の全てのキャッシュに対して真の(“1”の)状態に
セットされるフラグ・ビット(LockAddress
Valid)を備えることにより、Lockは好都合に
呼ばれることになる。かくして、この特徴のこのような
実施により、1個だけのデータ・ブロックが任意所与の
時点においてロックされることが許容される。UnLo
ckは、ある1個のLockのホルダーがそのLock
をクリアするために呼ぶことができる、相対的なトラン
ザクションである。キャッシュの各々をして、特定され
たデータ・ブロックに対するそのLockAddres
sValidビットをクリアさせることにより、その達
成がなされる。 【0127】前述されたように、Interruptト
ランザクションも、プロセッサに対する割り込みの信号
を出力するために規定されたものである。プロセッサの
割り込みはこの発明の範囲を超えたものであるけれども
、ここで注意されることは、このInterruptト
ランザクションは、ある特定のプロセッサを目標とする
もの、または、システムにおける全てのプロセッサに対
する放送的なものである。 【0128】DemapInitiateは、上述され
たDeMapトランザクションに類似のものである。し
かしながら、この事例においては、仮想的なアドレスか
ら物理的アドレスへの変換は、それぞれに、プロセッサ
12aa−12ij(図1)に対して設けられるトラン
ザクションのルック・アサイド・バッファ(図示されな
い)によって実行される。かくして、DeMapTer
minateトランザクションが規定されていて、リク
エストされたDeMapが完了したときに、プロセッサ
12aa−12ijの各々により、その第1レベルのキ
ャッシュ16aa−16ijをしてこのトランザクショ
ンを始動させることになる。プロセッサ12aa−12
ijがdemapの動作を実行している間に、キャッシ
ュ16aa−16ijがReqShared  L(S
haredOut)を主張して、DmIRplyがその
Sh(換言すれば、replyShared)ビットを
偽の(“0”の)状態にクリアさせる合致が生じたとき
に、プロセッサ12aa−12ijの全てがリクエスト
されたdemapを完了したという確認をDeMapI
nitiateリクエスタが得るようにされる。 【0129】F.データの両立性 この発明のこの実施例のために規定されているWrit
eSingleInvalidate,SwapSin
gleInvalidateおよびKillBlock
トランザクションは、生起するデータ・ブロック共有の
量を減少させ、これによって、データ両立性のプロトコ
ルが、第1の実施例における純粋な更新プロトコルとい
うよりも、ハイブリッドな更新/無効化プロトコルとし
て振舞うようにされる。この変更がなされたのは、両立
性プロトコルの効率性を増大させるという目的のためで
ある。これらの新規なトランザクションのために、両立
性プロトコルの効率性において注目すべき改善があるか
どうかはまだ不確実ではあるけれども、この新規なトラ
ンザクションが両立性プロトコルの有用性または効率性
の逆効果とはならないことは明かである。 【0130】両立性のプロトコルに対してなされた別の
変更は、リクエスト・パケットおよびリプライ・パケッ
トのヘッダー・サイクルにおけるOwビットの使用に関
連している。上記で指摘されたように、両立性のあるメ
モリ空間内で実行される読み取りおよび書き込みに関連
するリクエスタおよびレスポンダに対してこのビットで
与えられることは、このような読み取りおよび書き込み
が指向されるデータ・ブロックの所有権の転移に対する
ある所定の付加的なコントロールである。しかしながら
、純粋な更新の両立性プロトコルまたはハイブリッドな
更新/無効化の両立性プロトコルのいずれの有効性また
は有用性に影響することはない。むしろ、特定のデータ
・ブロックが“共有”されているか否か、および、“固
有”のものであるか否かについての追跡を維持するため
の、複写され、非同期に維持されているアドレス/状態
・タグに依存するアーキテクチュア(図示されない)を
用いて、実施されているキャッシュに対する支持が与え
られる。状態の変更はこのようなキャッシュのタグから
タグへと伝わるから、該キャッシュのプロセッサ側から
は共有されておらず、また、固有でもないようにみえる
、局部的にキャッシュされているデータ・ブロックに対
してプロセッサが書き込みを発するときには、ある一つ
の競合条件を生じさせることができる。 【0131】このような競合条件が生じることを回避す
るために、偽の(“0”の)状態の共有ビットおよびオ
ーナ・ビットを有しているデータ・ブロックに指向され
る書き込みを関連のプロセッサが発したときには、キャ
ッシュに対してWriteSingleの始動を要求す
ることができるが、これではバス・トラフィックが増大
することになる。従って、このようなWriteSin
gleの頻度を減少させるためにOwビットが含まれて
いる。特に、プロセッサが書き込みのペンディング状態
にあるデータ・ブロックのコピーを得るためにRBRq
stを発するときには、そのRBRqstのヘッダー・
サイクルにおけるOwビットをキャッシュによってセッ
トすることが可能となり、これによって、対応のRBR
plyにおけるOwビットが真の(“1”の)状態にセ
ットされるようにリクエスタが要求していることがレス
ポンダに告知されることになる。
【図面の簡単な説明】
【図1】  この発明を有利に用いることができる、階
層性のキャッシュ・メモリ・システムを備えたメモリ共
有式のマルチプロセッサを示す簡略化したブロック図で
ある。
【図2】  図1に示されているマルチプロセッサのた
めの、標準的なバス/クライエント・インタフェースに
おける内部ロジックの簡略化した概略図である。
【図3】  この発明を用いるモノボード・コンピュー
タのためのパイプライン式メモリ・バスの概略図である
【図4】  この発明のマルチボードによる実施例のた
めのパイプライン式メモリ・バスの概略図である。
【図5】この発明のマルチボード、マルチモジュールに
よる実施例のためのパイプライン式メモリ・バスの概略
図である。
【図6】  図2に示されているバス/クライエント・
インタフェースの種々の信号ポートを同定するための機
能図である。
【図7】  バス上のパケット送信との間で時間的にオ
ーバラップした関係にあるときの、前述されたタイプの
メモリ・バスに対して裁定をするための裁定手段を示す
機能的なブロック図である。
【図8】  図4において示されているパイプライン式
のバスの裁定とその上でのパケットの送信との間の時間
的なオーバラップを例示するタイミング図である。
【図9】  この発明の初めの実施例のために選択され
たフォーマットにおける、バス・トランザクションのた
めのリクエスト・パケットにおけるヘッダー・サイクル
をビット・レベルで示す図である。
【図10】  対応のフォーマットにされたリプライ・
パケットにおけるヘッダー・サイクルをビット・レベル
で示す図である。
【図11】  アドレスされた量のデータ・ブロックが
転送ユニットの第1のデータ・サイクル内に含まれるよ
うに、バス上においてデータ・ブロックの転送ユニット
についてサイクリックな再順番付けの例示をするための
図である。
【図12】  この発明の初め実施例のために備えられ
ている、データの両立性のプロトコルについての基本的
な原理を例示するために有用な、単一レベルのメモリ共
有マルチプロセッサの簡略化した概略図である。
【図13】  この発明の増強された実施例によって実
行される、バス・トランザクションにおけるリクエスト
・パケットのためのヘッダー・サイクル・フォーマット
をビット・レベルで示す図である。
【図14】  この発明の増強された実施例によって実
行される、バス・トランザクションにおけるリプライ・
パケットのためのヘッダー・サイクル・フォーマットを
ビット・レベルで示す図である。
【図15】  この発明の増強された実施例に対する標
準的なデバイス−バス・インタフェースの種々の信号ポ
ートを同定するための機能図である。
【図16】  図15に示されているデバイス−バス・
インタフェースにおける内部ロジックの簡略化した概略
図である。
【図17】  この発明の増強された実施例で依存され
る、2−サイクルの長いリクエスト・パケットおよびリ
プライ・パケットの裁定および送信のための、ある所定
の信号の相対的なタイミングを例示するタイミング図で
ある。
【符号の説明】

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】1個のメイン・メモリ、複数個のプロセッ
    サ、複数個のI/Oデバイス、および、前記プロセッサ
    および前記I/Oデバイスに対するそれぞれのキャッシ
    ュ・メモリを備えているメモリ共有マルチプロセッサに
    おける;前記プロセッサ、前記I/Oデバイス、前記キ
    ャッシュ・メモリおよび前記メイン・メモリ間でのデー
    タ転送のためのメモリ・トランザクションを実行するた
    めのパケット切り換え式バスであって;前記トランザク
    ションの各々は不確定な時間遅れでリプライ・パケット
    が追従するリクエスト・パケットからなり、これによっ
    て多重トランザクションに対するリクエスト・パケット
    およびリプライ・パケットが前記バス上で時間的にイン
    タリーブされていて、異なるプロセッサのコントロール
    の下に前記データの少なくとも幾らかが異なる時点にお
    いて更新されるべく多重コピーをさせるトランザクショ
    ンが含まれており;前記プロセッサの全ておよび前記I
    /Oデバイスの全てに対して、前記キャッシュ・メモリ
    内に記憶されており、前記多重コピーによって表される
    全てのデータを含んでいる、全てのデータと両立性があ
    る値を与えるための手段が、前記バスに設けられている
    ;メモリ共有マルチプロセッサのための両立性があるパ
    ケット切り換え式メモリ・バス。
JP3312723A 1990-11-30 1991-11-27 メモリ共有マルチプロセッサ Expired - Lifetime JP2512651B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62050890A 1990-11-30 1990-11-30
US620508 1990-11-30

Publications (2)

Publication Number Publication Date
JPH04306758A true JPH04306758A (ja) 1992-10-29
JP2512651B2 JP2512651B2 (ja) 1996-07-03

Family

ID=24486243

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3312723A Expired - Lifetime JP2512651B2 (ja) 1990-11-30 1991-11-27 メモリ共有マルチプロセッサ

Country Status (5)

Country Link
US (1) US5924119A (ja)
EP (1) EP0488770B1 (ja)
JP (1) JP2512651B2 (ja)
CA (1) CA2051222C (ja)
DE (1) DE69130203T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0836526A (ja) * 1994-07-22 1996-02-06 Nec Gumma Ltd 情報処理システム

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0140571B1 (ko) * 1995-01-19 1998-07-01 김광호 버스제어수단을 구비한 다중프로세서시스템
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
US5944807A (en) 1996-02-06 1999-08-31 Opti Inc. Compact ISA-bus interface
DE19651075A1 (de) * 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
DE19654846A1 (de) * 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
ATE243390T1 (de) 1996-12-27 2003-07-15 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen umladen von datenflussprozessoren (dfps) sowie bausteinen mit zwei- oder mehrdimensionalen programmierbaren zellstrukturen (fpgas, dpgas, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
JP3288261B2 (ja) * 1997-06-19 2002-06-04 甲府日本電気株式会社 キャッシュシステム
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
DE19807872A1 (de) * 1998-02-25 1999-08-26 Pact Inf Tech Gmbh Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
AU5805300A (en) 1999-06-10 2001-01-02 Pact Informationstechnologie Gmbh Sequence partitioning in cell structures
US6766325B1 (en) * 1999-12-02 2004-07-20 Microsoft Corporation System and method for maintaining data for performing “what if” analysis
EP1342158B1 (de) 2000-06-13 2010-08-04 Richter, Thomas Pipeline ct-protokolle und -kommunikation
US6678840B1 (en) * 2000-08-31 2004-01-13 Hewlett-Packard Development Company, Lp. Fault containment and error recovery in a scalable multiprocessor
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US7657877B2 (en) * 2001-06-20 2010-02-02 Pact Xpp Technologies Ag Method for processing data
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US6678799B2 (en) * 2001-10-18 2004-01-13 Hewlett-Packard Development Company, Lp. Aggregation of cache-updates in a multi-processor, shared-memory system
EP1483682A2 (de) 2002-01-19 2004-12-08 PACT XPP Technologies AG Reconfigurierbarer prozessor
EP2043000B1 (de) 2002-02-18 2011-12-21 Richter, Thomas Bussysteme und Rekonfigurationsverfahren
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
TWI282513B (en) * 2002-06-12 2007-06-11 Mediatek Inc A pre-fetch device of instruction for an embedded system
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
JP4388895B2 (ja) 2002-09-06 2009-12-24 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト リコンフィギュアラブルなシーケンサ構造
EP1486875A1 (en) * 2003-06-12 2004-12-15 STMicroelectronics Limited Allowing multiple simultaneous acccesses to a cache
EP1676208A2 (en) 2003-08-28 2006-07-05 PACT XPP Technologies AG Data processing device and method
KR100658591B1 (ko) * 2005-11-23 2006-12-15 엠텍비젼 주식회사 공유 메모리를 이용한 디스플레이 제어 방법 및 장치
EP1808774A1 (en) 2005-12-22 2007-07-18 St Microelectronics S.A. A hierarchical reconfigurable computer architecture
EP1974265A1 (de) 2006-01-18 2008-10-01 PACT XPP Technologies AG Hardwaredefinitionsverfahren
US7702743B1 (en) * 2006-01-26 2010-04-20 Symantec Operating Corporation Supporting a weak ordering memory model for a virtual physical address space that spans multiple nodes
US7756943B1 (en) 2006-01-26 2010-07-13 Symantec Operating Corporation Efficient data transfer between computers in a virtual NUMA system using RDMA
CN101918931B (zh) * 2007-02-02 2013-09-04 普西迈斯特公司 具有集成高速分组交换串行接口的处理器芯片架构
US9582440B2 (en) * 2013-02-10 2017-02-28 Mellanox Technologies Ltd. Credit based low-latency arbitration with data transfer
US9641465B1 (en) 2013-08-22 2017-05-02 Mellanox Technologies, Ltd Packet switch with reduced latency
US10452573B2 (en) 2016-12-06 2019-10-22 Hewlett Packard Enterprise Development Lp Scripted arbitration circuit
US10944694B2 (en) * 2016-12-06 2021-03-09 Hewlett Packard Enterprise Development Lp Predictive arbitration circuit
US10721185B2 (en) 2016-12-06 2020-07-21 Hewlett Packard Enterprise Development Lp Age-based arbitration circuit
KR102471523B1 (ko) * 2018-04-26 2022-11-28 에스케이하이닉스 주식회사 반도체 집적 회로 장치 및 이를 포함하는 반도체 메모리 시스템
US10693811B2 (en) 2018-09-28 2020-06-23 Hewlett Packard Enterprise Development Lp Age class based arbitration

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02211572A (ja) * 1988-10-14 1990-08-22 Intel Corp パイプライン処理用パケツトバスのアクセス要求と応答との待ち行列を捌く為の方法および装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2474201B1 (fr) * 1980-01-22 1986-05-16 Bull Sa Procede et dispositif pour gerer les conflits poses par des acces multiples a un meme cache d'un systeme de traitement numerique de l'information comprenant au moins deux processus possedant chacun un cache
US4451880A (en) * 1980-10-31 1984-05-29 Honeywell Information Systems Inc. Memory controller with interleaved queuing apparatus
US4442487A (en) * 1981-12-31 1984-04-10 International Business Machines Corporation Three level memory hierarchy using write and share flags
US4535448A (en) * 1982-12-10 1985-08-13 At&T Bell Laboratories Dual bus communication system
US4622631B1 (en) * 1983-12-30 1996-04-09 Recognition Int Inc Data processing system having a data coherence solution
US4843542A (en) * 1986-11-12 1989-06-27 Xerox Corporation Virtual memory cache for use in multi-processing systems
US4928225A (en) * 1988-08-25 1990-05-22 Edgcore Technology, Inc. Coherent cache structures and methods
US5023488A (en) 1990-03-30 1991-06-11 Xerox Corporation Drivers and receivers for interfacing VLSI CMOS circuits to transmission lines

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02211572A (ja) * 1988-10-14 1990-08-22 Intel Corp パイプライン処理用パケツトバスのアクセス要求と応答との待ち行列を捌く為の方法および装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0836526A (ja) * 1994-07-22 1996-02-06 Nec Gumma Ltd 情報処理システム

Also Published As

Publication number Publication date
JP2512651B2 (ja) 1996-07-03
EP0488770A2 (en) 1992-06-03
EP0488770A3 (en) 1992-07-15
DE69130203T2 (de) 1999-03-04
US5924119A (en) 1999-07-13
DE69130203D1 (de) 1998-10-22
CA2051222C (en) 1998-05-05
EP0488770B1 (en) 1998-09-16
CA2051222A1 (en) 1992-05-31

Similar Documents

Publication Publication Date Title
JPH04306758A (ja) メモリ共有マルチプロセッサ
JPH04333955A (ja) バスの競合を解決するための裁定手段
US5265235A (en) Consistency protocols for shared memory multiprocessors
US5754800A (en) Multi processor system having dynamic priority based on row match of previously serviced address, number of times denied service and number of times serviced without interruption
JPH04302051A (ja) メモリ共有マルチプロセッサが使用する全ての物理的アドレスのデータ両立性を保持する方法
US6279084B1 (en) Shadow commands to optimize sequencing of requests in a switch-based multi-processor system
US6249520B1 (en) High-performance non-blocking switch with multiple channel ordering constraints
JPH06180682A (ja) データの転送方法およびその装置
US6687797B1 (en) Arbitration system and method
US20060253662A1 (en) Retry cancellation mechanism to enhance system performance
Briggs et al. Intel 870: A building block for cost-effective, scalable servers
US6889343B2 (en) Method and apparatus for verifying consistency between a first address repeater and a second address repeater
US6609185B1 (en) Data storage system having majority gate filter
JP2000215187A (ja) マルチプロセッサシステム
JP2000215184A (ja) デ―タ転送方法

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 19950123

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19960220

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090416

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090416

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100416

Year of fee payment: 14

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110416

Year of fee payment: 15

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120416

Year of fee payment: 16

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120416

Year of fee payment: 16