JP2003030131A - 分割トランザクション・スヌーピング・バスおよび調停方法 - Google Patents

分割トランザクション・スヌーピング・バスおよび調停方法

Info

Publication number
JP2003030131A
JP2003030131A JP2002132026A JP2002132026A JP2003030131A JP 2003030131 A JP2003030131 A JP 2003030131A JP 2002132026 A JP2002132026 A JP 2002132026A JP 2002132026 A JP2002132026 A JP 2002132026A JP 2003030131 A JP2003030131 A JP 2003030131A
Authority
JP
Japan
Prior art keywords
bus
data
arbitration
transaction
address
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.)
Pending
Application number
JP2002132026A
Other languages
English (en)
Inventor
Erik Hagersten
ヘイガーステン,エリック
Ashok Singhal
シンハル,アショク
David Broniarczyk
ブロニアークズィク,デイヴィッド
Fred Cerauskis
セラウスキーズ,フレッド
Jeff Price
プライス,ジェフ
Leo Yuan
ユアン,レオ
Gerald Cheng
チェン,ジェラルド
Drew Doblar
ドゥブラー,ドリュー
Steve Fosth
フォス,スティーブ
Nalini Agarwai
アガーワイ,ナリーニ
Kenneth Harvey
ハーヴェイ,ケネス
Bjorn Liencres
リアンクレス,ビヨルン
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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
Priority claimed from US08/673,967 external-priority patent/US5911052A/en
Priority claimed from US08/673,038 external-priority patent/US5978874A/en
Priority claimed from US08/673,059 external-priority patent/US5829033A/en
Priority claimed from US08/675,284 external-priority patent/US5960179A/en
Priority claimed from US08/675,286 external-priority patent/US5987549A/en
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2003030131A publication Critical patent/JP2003030131A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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
    • 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/368Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 (修正有) 【課題】 分割トランザクション・スヌーピング・バス
上において、少なくとも1つのかかるバスを有するコン
ピュータ・システムに対するスヌーピングを実施。 【解決手段】CPUまたはその他の装置および/または
分散メモリ、データ入出力バッファ、要求タグ・キュー
を含むキュー、コヒーレント入力キュー("CIQ")、お
よびアドレス・バス調停を実施するアドレス・コントロ
ーラを含む回路基板を、1系統以上の分割トランザクシ
ョン・スヌーピング・バス・システムに差し込む。全て
の装置は、アドレス・バス上でスヌープを行い、識別さ
れたラインが所有されているのかあるは共有されている
のかを学習し、適切な所有/共有信号を発行する。無視
信号を受け取ると、トランザクションのCIQへのロー
ドが禁止され、この禁止は、当該トランザクションが再
ロードされ、無視がディアサートされるまで続く。

Description

【発明の詳細な説明】
【0001】発明の分野 本発明は、一般的にコンピュータ・バス・アーキテクチ
ャに関し、更に特定すれば、分割トランザクション・ス
ヌーピング・バス(split transaction snooping bus)、
当該バス上におけるスヌーピングおよびかかるバスに対
するプロトコルを実施し、バスを越えてコヒーレント・
ドメイン(coherent domain)を拡張し、全体的なデータ
応答を最適化し、共有資源へのアクセスに対する調停を
行い、ならびにシステム内の共有資源に対するアクセス
のレイテンシ短縮を図った優先的総当たり調停(priorit
ize round-robin arbitration)を提供する方法および装
置に関するものである。発明の背景 サーバ、ワークステーションなどを含む最近のコンピュ
ータ・システムは、典型的に、メモリのラインにキャッ
シュ可能な入出力(「I/O」または「IO」)ユニッ
ト、あるいは中央演算装置群(「CPU群」)またはマ
イクロプロセッサ群、および関連する分散型CPUラン
ダム・アクセス・メモリ・ユニット(「RAM」)のよ
うな数種類の装置を有する。(ここで用いる場合、「C
PU」および「装置」という用語は、相互交換可能に用
いるものとする。)種々の装置は互いに通信可能である
と共に、要求、コマンド、メモリ・アドレス、データ等
を含む種々の情報を種々の装置間で搬送する1つ以上の
バスを通じてRAMとの通信も可能となっている。かか
る情報は、典型的に、例えば64ビット即ち8バイトと
いうような広いビット幅のバス・ライン上をパケット状
で、システム・クロック周波数によって影響を受ける伝
送速度で伝送される。
【0002】コンピュータ・システムの主メモリは、通
常大きな記憶容量を有するが、比較的データ・アクセス
が遅い。データ・アクセスの高速化を達成すると共に、
主メモリへのアクセス回数を減らすために、多くの装置
(特にCPU)は、キャッシュと呼ばれる、小型で高速
なローカル・メモリを有している。キャッシュは、頻繁
にかつ最近用いられたデータのコピーを格納することに
より、当該装置が主メモリの代わりにキャッシュにアク
セス可能にするために用いられる。
【0003】装置がそのキャッシュ内にあるメモリ位置
にデータを書き込むための技法については、そのいくつ
かが当技術では公知である。いわゆる「ライト・スル
ー」キャッシュでは、データは、キャッシュおよび主メ
モリに書き込むことができる。また、「ライトバック」
(または「コピー・バック」)キャッシュでは、データ
はキャッシュにのみ書き込むことができる。ライトバッ
ク・キャッシュでは、主メモリ内のデータは、もはや正
しくない「状態」であり、キャッシュのみが当該メモリ
位置の正しいコピーを保持する。キャッシュ内において
変更されたデータのコピーを、「ダーティ」と呼ぶ。ダ
ーティ・データをキャッシュから除去しなければならな
い場合(別のメモリ位置のコピーのために余裕を作る
際)、ダーティ・データをメモリに書き戻さなければな
らない。本発明は、ライトバック・キャッシュを用いる
コンピュータ・システムに関して記載するが、本発明
は、ライト・スルー・キャッシュと共に用いるために一
般化することも可能である。
【0004】キャッシュのコヒーレンス(cache coheren
ce)が重要であることは理解されよう。多数の装置がそ
れらのキャッシュ内に同じメモリ位置のローカル・コピ
ーを有する場合、正しいシステム動作を行うためには、
全ての装置がそれらのキャッシュ内で同じデータを観察
することが必要となる(何故なら、これらは同じメモリ
位置のコピーを保持することを意味するからである)。
しかし、これらの装置の1つ以上がそれらのキャッシュ
にそのデータのローカル・コピーを書き込んだ場合、全
ての装置が同じデータを観察することはもはや不可能と
なる。キャッシュのコヒーレンスとは、全ての装置がそ
れらのキャッシュにおいて同じメモリ位置の同じデータ
を観察するのを保証するタスクのことである。これを行
うには、いずれかの装置がそのキャッシュ内のデータを
変更した場合、他のキャッシュ全てにおけるデータのコ
ピーを更新するか、あるいは他のキャッシュ全てにおけ
るデータのコピーを削除する。本発明は、第2のタイプ
のキャッシュ・コヒーレンスを採用したシステムと共に
用いる場合に関して記載するが、実際にはいずれのタイ
プのコヒーレンスでも採用可能である。尚、ライトバッ
ク・キャッシュを使用する場合、他のキャッシュでダー
ティとなっているメモリ位置のコピーを装置が必要とす
る際、このデータは、メモリからではなく、ダーティな
データを有するキャッシュから得なければならない(何
故なら、メモリ内のデータは古いからである)。
【0005】いわゆるスヌーピング・プロトコル(snoop
ing protocol)は、キャッシュのコヒーレンスを実施す
るための一般的な技法である。各キャッシュは、キャッ
シュ内の各メモリ位置に対する状態を維持する。装置が
あるメモリ位置のリードまたは書き込みを望む場合、通
常バスを通じてその要求の同報通信を行う。この要求
は、全ての装置によって、観察され、その状態とのチェ
ックが行われる。即ち、要求が「スヌープ」される。リ
ード要求に対しては、メモリの代わりに、ダーティなコ
ピーを有するキャッシュがデータで応答する。ライト要
求に対しては、他のキャッシュは全て、それらのデータ
・コピーを無効化するか、あるいは更新する。
【0006】通常、トランザクションは、アドレスを含
む要求を伴い、その後にデータを含む応答が続く。いわ
ゆる「回線交換」バスでは、トランザクションは、次の
トランザクションが開始可能となる前に、完了しなけれ
ばならない。要求と応答との間に長い遅延がある場合、
バスはその遅延の持続期間中アイドルのままであり、そ
の結果バスの帯域が失われる。対照的に、いわゆる「分
割トランザクション」(または「パケット交換)バスで
は、所与のトランザクションに対する要求と応答との間
に、他のトランザクションに対する要求および応答が可
能である。これによって、所与のトランザクションに対
する要求と応答との間に遅延があっても、バスの帯域を
最大限利用することが可能となる。
【0007】あるメモリ位置からデータを読み取るか、
あるいはあるメモリ位置にデータを書き込もうとするC
PUは、典型的に、まずシステム・バスを通じて要求型
信号をシステムに同報通信する。しかしながら、他の装
置も同じ信号を同時にバスを通じて同報通信しなければ
ならない場合もある。バス上では一度に1つの信号値の
みの送信が許されているに過ぎないため、装置はバスの
使用について調停を行わなければならず、調停を実施す
る機構が用意されている。更に、これらの要求およびデ
ータならびに他の信号を搬送する共通のシステム・バス
は有限な資源であり、その送信帯域は、ビット・ライン
数およびシステムのクロック速度によって決定される。
【0008】潜在的に衝突(conflict)し得る要求を調停
し、アクセス要求を許可する高速な機構を用いてもな
お、バス・システムにはスループットおよび応答を最大
限高めるという課題がある。例えば、従来技術の調停方
式には、2クロック・サイクル以上のレイテンシが発生
するという不利が伴う。
【0009】従来技術のシステムは、共通なアドレスに
関与する多数のトランザクションに対処する必要性のた
め、複雑である。かかる両義性(ambiguity)を減らすた
めに、かかるシステムは「未了」または「遷移」状態を
定義しなければならない。このために、実施態様全体の
複雑度を一層高めることになる。かかるシステムにおい
てフロー制御を賦課し、衝突の両義性を回避するための
従来技術の試みは、扱いにくいものでもあった。
【0010】データ要求がその要求後直ちに完了しない
システムには、複雑な機構を用いて、最終的にその要求
が完了することを保証しなければならない。メモリが分
散されているシステムでは、コヒーレントなドメイン、
例えば、常にコヒーレントに保たれているメモリ空間の
維持を迅速に行うことが課題となっている。現在無効な
データを保持しているメモリ位置からデータを読み取る
トランザクション要求は、従来技術では迅速に完了する
ことはできない。最初にそのメモリ位置に有効なデータ
を書き込み直す必要があり、そうした後に初めてその有
効データを要求元に供給することが可能となる。スヌー
ピング分割トランザクション・バス・システムにおいて
これらのプロセスを実施する従来技術の手順は複雑であ
り、時間がかかる。
【0011】分割スヌーピング・バス・システムのため
のアーキテクチャは、かかるバス・システムを数系統必
要とするシステム、例えば、多数のワークステーション
を備えたネットワークにおける使用に適したものでなけ
ればならない。単一のバス・システムを備えたコンピュ
ータ・システムでは、アドレス・バス上にトランザクシ
ョンが置かれる順序が、絶対的な時間関係を決定する。
したがって、CPUAによって開始されたトランザクシ
ョンが、CPU Bによって開始されたトランザクショ
ンよりも前にバス上に現れた場合、コンピュータ・シス
テムは、トランザクションAがトランザクションBに先
立つと見なし、変更されることはない。しかしながら、
かかるコンピュータ・システムを複数含み、複数のバス
・システムを備えているシステムでは、かかる単純な想
定はもはやあり得ない。かかる例の1つは、少なくとも
2台のワークステーションを備えたネットワークであろ
う。
【0012】単一のバス・システムを有する下位コンピ
ュータ・システムでは、当該バス・システム内のアドレ
ス・バス上にアドレス・パケットが現れる時間的な順序
によって、トランザクションの順序が一意的に定義され
る場合がある。しかしながら、かかる下位システムを複
数備え、複数のバス・システムを有するシステムでは、
トランザクションに対する全体的な順序を定義すること
が必要であるが、非常に困難である。例えば、下位シス
テム1のCPUが、下位システム1を含むあらゆる下位
システム内にあり得るメモリ位置にデータを書き込みた
い場合がある。全く同時に、他の下位システムのCPU
が、同一のメモリ位置または別のメモリ位置にデータを
書き込みたい場合がある。これら2つの同時トランザク
ション間で、全体的な順序を定義するにはどうすればよ
いのであろうか。
【0013】結果的に生じる不確実性のために、トラン
ザクションの順序に敏感な(critical)ルーチンを実行す
る際に、問題を発生する可能性がある。更に、従来技術
ではかかるシステムに対して全体的なトランザクション
の順序を効果的に定義できないために、システムのデッ
ドロックに至る可能性もある。したがって、スヌーピン
グ分割トランザクション・バス・システムを採用するコ
ンピュータ・システムを含むコンピュータ・システムに
おいて、コヒーレントなドメインを拡大(promote)する
迅速な実行機構が必要とされている。好ましくは、有効
なデータを書き込んで、要求の対象である、無効データ
を含むメモリを更新しているとき、かかる機構はそのデ
ータに関与する元のトランザクションを同時に再発行し
なければならない。
【0014】先に記したように、システム・バスのよう
な共有資源に対するアクセスを調停する機構が必要とさ
れている。いわゆる従来技術の公平なアルゴリズムで
は、アービトレータ(arbitrator)は、要求が到達した順
に、CPUにバス・アクセスを許可する。したがって、
要求が最も長い時間未了となっていたCPUにアクセス
が許可される。個々のCPUの要求には、重要性による
優先度は割り当てられず、唯一の基準は、種々の要求の
時間的順序だけである。この公平アルゴリズムの利点
は、種々のCPUの要求に伴う複雑な履歴を格納しなく
てもよいことである。
【0015】他の従来技術の方法に、いわゆる総当たり
アルゴリズム(round robin algorithm)がある。この場
合、CPU間で巡回順序を定義することにより、最も恵
まれた要求元CPUの地位(identity)が移動するように
する。即ち、CPU Nが最新の調停許可を受けた場
合、CPU N+1が要求をアサートしたならば、CP
U N+1が次の許可を受ける。総当たりアルゴリズム
はコンピュータ・システムの設計者には好評であるが、
かかるアルゴリズムは、ロジック深度(logic depth)が
小さい場合には実施が難しい。しかしながら、階層レベ
ルが深い総当たりを使用すると、許可のウイナ(winner)
を決定するために必要なクロック・サイクルがかかり過
ぎてしまう。何故なら、複数の下位レベルの各々におい
てウイナを決定し、その後で下位レベルのウイナの中か
らウイナを決定しなければならないからである。例え
ば、全ての要求が共通な論理レベルで処理される、論理
深度がない、より高速であるが比較的「平坦な」、即
ち、階層がない総当たりを実施することも可能である
が、論理ゲートの複雑性はそれでも存在する。
【0016】更に他の従来技術のアルゴリズムに、種々
のCPUの優先度を静的に決定するものがある。即ち、
CPU0には永久的に最高の優先度を指定し、CPU1
には次に高い優先度を指定する、等とする。その結果、
CPU2は、CPU0またはCPU1のいずれも現在バ
ス・アクセスを要求していない場合でなければ、調停許
可を受けることができない。この静的優先度決定方式
は、特に実施が簡単であるという利点がある。
【0017】上述の技法のいずれかを用いた場合、アー
ビトレータからバス・アクセス許可を受けた要求元CP
Uがアクセスを得ている間、他のあらゆる要求元CPU
からの要求は、禁止即ち中断状態で待っていなければな
らない。この状態は、要求元のCPUがその調停許可を
受け、そのデータまたは所望のアドレスあるいはその他
の信号をバス上に置き、そのトランザクションを完了す
るまで続く。
【0018】従来技術では、バスに対するアクセスの競
合する要求を調停するために用いられる機構には無関係
に、データのために1本の調停ラインが用いられ、アド
レスのために第2の調停ラインが用いられることがあ
る。先に注記したように、許可アクセスを勝ち取ったC
PUによる調停、許可、およびアクセスの時間中、他の
未了の要求は、最初に許可された要求の競合の間、一時
的に禁止される。
【0019】かかる技法は動作するものの、最初のCP
U要求、当該CPUへの調停の許可、バスへのCPUの
アクセス、ならびにバス・アクセスを受けるための次の
要求元に対する調停およびバス・アクセスの許可の間に
多くのクロック・サイクルが経過するはずであり、レイ
テンシによる不利が余りに大きくなり過ぎる可能性があ
る。したがって、禁止機構を用いずに、最短のレイテン
シ時間を達成する、バス・アクセス調停方法および装置
が必要とされている。
【0020】更に、分割トランザクションおよびスヌー
ピングを可能とする、バス・システムのための構造的プ
ロトコルも必要とされている。好ましくは、かかるプロ
トコル・アーキテクチャは、好ましいバス帯域および低
いレイテンシを得つつ、多数のCPUおよび大量のメモ
リに対応すべきである。同時に多数のトランザクション
の進展を可能とし、禁止、多数の再試行サイクル、未了
または遷移状態を賦課せずに、単純なフロー制御が得ら
れるようにすべきである。かかるプロトコルは、かかる
分割トランザクション・スヌーピング・バス・システム
をいくつか含むことができるような、システムの大型化
を可能とすべきである。本発明は、かかる調停方法およ
び装置、ならびに分割トランザクション・バス上におい
て所望のスヌーピングを実施する方法および装置を提供
し、更にかかるバスおよびそのためのプロトコルを提供
するものである。本発明の概要 本発明は、分割トランザクション・スヌーピング・バ
ス、バス・プロトコルおよびバス・スヌーピングを実施
する方法および装置、ならびにバスを越えてコヒーレン
ス・ドメインを拡張する技法、全体的なデータ応答を最
適化する技法、およびレイテンシが短い優先的総当たり
調停を用いた、共有資源に対するアクセスを調停する技
法を提示する。分割トランザクション・スヌーピング・
バス・プロトコルおよびアーキテクチャは、1系統以上
のかかるバスを有するシステムに用いるために設けられ
る。
【0021】好適実施例では、好適なスヌーピング分割
トランザクション・バス・システムにおいて、CPU装
置および分散型メモリを内蔵した回路カードを、バス・
インターフェースに差し込む。バス・システム・レベル
のバスを、グローバル・ネットワーク・インターフェー
スによって結合し、オムニバス・システムを形成するこ
とができる。サブシステム・レベルにおいて、例えば、
CPUおよび/または分散メモリのような装置を含む回
路基板を、1つ以上の分割トランザクション・スヌーピ
ング・バス・システムに差し込む。各回路カードは、更
に、ビット・スライス・データ・バッファおよびDTA
G RAMバッファ、要求タグ・キューを含むキュー、
およびバス・システムにアクセスする種々の装置から
の、潜在的に競合し得る要求を調節する調停機構を実施
するアドレス・コントローラを含む、データ入出力バッ
ファを内蔵することが好ましい。好ましくは、単一の調
停バスを多重化し、アドレス・バスおよびデータ・バス
要求トランザクションを搬送するようにし、要求と応答
との間の時間は可変とするが、2クロック・サイクル程
度の短さとすることが好ましい。アドレスおよびデータ
・バス・トランザクションの長さは、各々2サイクルと
することが好ましい。
【0022】各アドレス・コントローラに関連するコヒ
ーレント入力キュー("CIQ")は、関連する装置によっ
て要求されるトランザクションを収容する。かかるトラ
ンザクションは、バスまたはオムニバス(以降「バス/
オムニバス」と記す)システムを通じてアサートされ
る。全ての装置はアドレス・バス上でスヌープし、パケ
ット・アドレスおよび回路基板タグ・メモリ(「装置レ
ベル・タグ」)から、識別したラインが所有されている
かあるいは共有されているかについて学習する。当該ラ
インのキャッシュされたコピーを有する基板は共有信号
をアサートし、当該ラインを所有する基板は所有信号を
アサートする。無視信号を受信すると、トランザクショ
ンをコヒーレント入力キューにロードするのが禁止さ
れ、無視信号がもはやアサートされなくなるまで、トラ
ンザクションがバス・システム上に現れるのを延期させ
る。ディアサートされると、分散型メモリ内の元の位置
にアクセスしようとしている同じトランザクションがC
IQにロードされ、有効なトランザクションとしてバス
/オムニバス・システム上に現れることができ、こうし
て、トランザクションの順序を所望通りに変更すること
ができる。
【0023】一実施例では、グローバル・ネットワーク
・インターフェースは、IGNORE信号を発生する機構を備
え、種々の回路基板間に分散されているメモリ・システ
ム内のキャッシュ・ライン全てについての状態情報表を
起動する(start)メモリを含む。グローバル・ネットワ
ーク・インターフェース機構が、全体的なトランザクシ
ョンの再順序付けをすべきと判断した場合、トランザク
ションは無視される。IGNORE信号がアサートされると、
かかるトランザクションのCIQへのロードが禁止さ
れ、これによって、その時点におけるトランザクション
の順序付けを禁止する。後に、IGNORE信号のアサートが
解除されたときに、このトランザクションの再発行が可
能となる。このように、本発明は、全体的なトランザク
ションの最適な再順序付けを図ることができる。しか
し、かかる全体的な再順序付けのために、データを要求
し、アサートされたトランザクションに応答した結果、
所望のデータの古いバーションが要求元に供給される可
能性がある。
【0024】要求されたメモリ・ラインの所有権は、要
求時に、例えば、要求データが要求元装置によって受信
される以前に、直ちに移転される。本発明は、タグ・パ
イプライン・バイパスを実施し、アサートされた要求
は、アドレス・バス上の状態トランザクションが、要求
に依存せずに、原子的かつ論理的に発生するように、キ
ューに並べられる。同じデータに対する以降の要求には
タグが付けられ、所望のデータが未だ転送されていなく
ても、それらがオーナ−要求元の任務を負うようにす
る。高いスループットを促進するために、以降の要求元
のアクティビティを中止せずに、以前の要求トランザク
ションの許可および完了を待つ。プロセッサ・レベルの
キャッシュは、トランザクション・データの受信時に状
態を変化させる。
【0025】本発明は、ライト型動作に対する新しいト
ランザクション、即ち、ReadToShareForkトランザクシ
ョンを与える。このトランザクションは、現在古いまた
は劣化したデータを保持しているメモリ・アドレスが要
求された際に、システムがこのメモリ・アドレスに有効
なデータを書き込むと共に、このデータを迅速に元の要
求元に供給する、即ち、引き込ませることを同時に可能
とする。こうして、従来技術における場合に可能であっ
たよりも、最初に要求されたトランザクションを大幅に
高速化して完了することを可能としつつ、分散型メモリ
・システムにおいてコヒーレンス性を維持する。
【0026】要求されたメモリ位置に有効データを書き
込んでメモリを更新する場合、同じメモリ・アドレスお
よびトランザクションSourceID情報を用いて、このデー
タを読み出す未決のトランザクションを再発行させる。
しかしながら、本質的に有効データを2つの宛先に同時
に送ることにより、双方の「トランザクション」は同時
に発生する。
【0027】他の態様においては、1系統または多くの
かかるバスを有するシステムにおいて用いるために、分
割トランザクション・スヌーピング・バス・プロトコル
およびアーキテクチャを提供する。例えば、CPUおよ
び/または分散型メモリのような装置を含む回路基板
を、1系統以上の分割トランザクション・スヌーピング
・バス・システムに差し込む。各回路基板は、更に、ビ
ット・スライス・データ・バッファおよびDTAG R
AMバッファ、要求タグ・キューを含むキュー、および
バス・システムにアクセスする種々の装置からの、潜在
的に競合し得る要求を調節する調停機構を実施するアド
レス・コントローラを含む、データ入出力バッファを内
蔵することが好ましい。
【0028】好ましくは、単一の調停バスを多重化し、
アドレス・バスおよびデータ・バス要求トランザクショ
ンを搬送するようにし、アドレスおよびデータ・バス・
トランザクションの長さは、各々2サイクルとすること
が好ましい。アドレス・バスおよび調停バスは、各々同
じサイクルにおいて駆動することにより、帯域の拡張を
図る。要求と応答との間の時間は可変とするが、2クロ
ック・サイクル程度の短さとすることが好ましい。
【0029】多くのCPUが、別個のアドレス・バスお
よび調停バスを含む共有システム・バスにアクセス可能
なコンピュータ・システムでは、バスの中でも、アドレ
ス・バスに対するアクセスの調停を迅速に行わなければ
ならない。本発明は、優先的調停(prioritized arbitra
tion)の利点が階層的に得られる、レイテンシが低い分
散型総当たり調停機構も提供する。好適な実施態様で
は、基本的な2クロック・サイクルを用い、各アドレス
・バス・パケットおよび各データ・バス・パケットは2
サイクルを必要とする。
【0030】好ましくは、2つのCPUおよび関連する
RAMを、共有システム・バスに動作中のさし込み(hot
-plug)が可能な複数のカードの各々に設ける。各カード
は、2レベルの階層を有する調停機構を実施するロジッ
クを内蔵したアドレス・コントローラを含む。2レベル
の階層とは、単一のトップ・アービトレータ(top arbit
rator)と、好ましくは4つのリーフ・アービトレータ(l
eaf arbitrator)である。トップ・アービトレータと各
リーフ・アービトレータとの間には、上向きの要求ライ
ン("rout")、上向きのウイナ右側(winner-to-the-rig
ht)("wrgt")ライン、および下向きの許可ライン("wi
n")がある。各リーフ・アービトレータは、4本の要求
入力ライン("rin")を有し、これらの各ラインは、当
該リーフ・アービトレータが対処する単一のCPUに結
合されている。
【0031】アドレス・バス・アクセスに対する調停を
行いたいCPUは、それ自体が結合されているリーフ・
アービトレータへのrinラインを通じて、トップ・アー
ビトレータへの要求を開始する。各ローカル・リーフ・
アービトレータは、それ自体のrinライン上に存在し得
る0ないし4つの要求間における調停を行い、その要求
元間でウイナを決定し、トップ・アービトレータへのro
utライン上に信号を出力し、アクセスを望むCPUを有
することを示す。rinラインは、優先度に関してCPU
0>CPU1>CPU2>CPU3となるように、優先
順位が決められている。最終ウイナ("LW")ポインタ機
構が、各リーフ・アービトレータ内にあり、調停の付与
の後右に移動する。この位置変更は、wrgt出力ラインを
介してトップ・アービトレータに結合される。トップ・
アービトレータの観点からは、最初のリーフ・アービト
レータは2番目のリーフ・アービトレータより優先度が
高く、2番目のリーフ・アービトレータは3番目のリー
フ・アービトレータより優先度が高く、3番目のリーフ
・アービトレータは4番目のリーフ・アービトレータよ
り優先度が高いというように、リーフ・アービトレータ
の優先度が決められる。
【0032】各カードのアドレス・コントローラは、調
停バス(バスの中でもとりわけ)と通信を行う。調停バ
スは、各カード上の調停機構が同時にかつ同期して全て
の調停要求およびトップ・アービトレータの許可を見る
ことができるようにすると共に、同じLW状態を有するこ
とができるようにする。
【0033】リーフ・レベル調停は自律的であり、並行
して発生する。例えば、CPU0が最後にリーフ・レベ
ル調停に勝利した場合、これは除外され、リーフ・アー
ビトレータ1は、そのCPU1がアクセスを要求した場
合、それに対する許可を要求する。2番目のリーフ・ア
ービトレータ内において、CPU5が最後に勝利した場
合、それは除外され、次いでCPU6が勝利することが
できる(要求した場合)。トップ・アービトレータのレ
ベルでは、最初のリーフ・アービトレータが最後に許可
を勝ち取った場合、これは除外され、2番目のリーフ・
アービトレータが勝利する。即ち、そのCPU6が、調
停許可を勝ち取ることができる。
【0034】最終ウイナ・ポインタは、システム・クロ
ック・サイクル毎に1回、同期してリセットされる。好
適実施例では、低いレイテンシが得られる。これは、ア
ドレス・バスに対する調停により、アドレス・パケット
を同時に同報通信できるからである。これは、従来技術
の方式において、最初に調停を行い次いでアドレス・パ
ケットを出力する場合よりも高速である。各アドレス制
御が自立的な調停ユニットを含んでいるという点におい
て、調停は分散されている。リーフ・レベルの調停が行
われている間、トップ・アービトレータは、そのLWポイ
ンタから、どのリーフ・アービトレータが調停許可を勝
ち取るかについて決定を下すことができる。
【0035】本発明のその他の特徴および利点は、以下
の説明から明らかとなろう。以下の説明では、好適実施
例について、添付図面と関連付けながら、詳細に説明し
てある。好適実施例の詳細な説明 本発明にはいくつかの態様があり、分割トランザクショ
ン・スヌーピング・バス・アーキテクチャおよびプロト
コルの提供、ならびに分割トランザクション・バス上に
おけるスヌーピングを含む。本発明による分割トランザ
クション・スヌーピング・バス・システムは、他のバス
・システムを有さないシステムにおいて典型的に用いる
ものであるが、本発明は、かかる分割トランザクション
・スヌーピング・バス・システムを数系統含む、より大
型のシステムにおいても実施が可能である。また、本発
明は、コンピュータ環境における共有システム資源、即
ち、多くのCPUによって共有されるアドレス・バスに
対するアクセスの迅速な調停を行う、レイテンシが低い
分散階層総当たり型機構も提供する。
【0036】最も一般的な場合を図示するために、第1
図は電子式グローバル・ネットワーク・システム10を
示す。システム10は、グローバル・ネットワーク・イ
ンターフェース機構15を含み、これに複数の共有バス
・システム20,20’等が結合されている(図示を簡
単にするために2系統のバス・システムのみを示すが、
2系統以上のかかるシステムが存在し得ることは理解さ
れよう。)各共有バス・システムは、インターフェース
・アーキテクチャ30,30’によって、例えば、40
−Nのような複数のラインを通じて、好ましくは同一の
複数のプラグイン基板50−Nの各々に結合されてい
る、数系統のバス(これより説明する)を備えている。
【0037】インターフェース機構15は、無視信号発
生機構17、および基板50−N,50’N等の間に分
散されているメモリ内のキャッシュ・ライン全てのテー
ブル19を格納するメモリを含む。
【0038】好適実施例では、システム10はコンピュ
ータ・ワークステーションであり、インターフェース3
0は、基板50−N間において、無効化に基づくキャッ
シュ・コヒーレンス(invalidation-based cache cohere
nce)を有する、分割トランザクション・スヌーピング・
バス・システムを定義する。総称して、バス・システム
20,20’等の一群を、システム10全体に対して、
オムニバス・システム20”とも呼ぶことにする。しか
しながら、ここに記載する本発明は、単一のバス・シス
テム20および単一のバス・インターフェース30を備
えているシステムにも使用可能であることは理解されよ
う。
【0039】例えば、バス20のような単一のバス・シ
ステムを備えたコンピュータ・サブシステムでは、トラ
ンザクションがアドレス・バスに置かれた順序が、絶対
的かつ一意的な時間関係を決定する。したがって、CP
U A(例えば、あるタイプの装置)によって開始され
たトランザクションが、CPU Bによって開始された
トランザクションの前にバス上に現れた場合、コンピュ
ータ・システムは、トランザクションAを、トランザク
ションBに先立つものとして見なし、変更することはで
きない。しかしながら、かかる単純な想定は、かかるコ
ンピュータ・サブシステムを複数個含み、集合的にオム
ニバス・バス・システム20”を形成する複数のバス・
システムを備えたシステム10ではもはや通用しない。
システム10全体に対して、全体的なトランザクション
の最適な順序を定義するのが、無視機構17の機能であ
る。
【0040】回路基板50−Nは、システム10内にお
いて相互接続可能であり、物理的に、好ましくは同一の
16個あるプラグイン基板スロットの内の1つに差し込
む。スロットは、各コンピュータ・サブシステムに関連
する中央面の各側に8つずつ実装されていることが好ま
しい。これらスロットのいずれにも、多数のCPUおよ
び関連するRAM、または好ましくは2系統のSバスを
含む入出力(「I/O」または「IO」)装置を内蔵し
た、プラグイン回路基板を挿入することができる。この
明細書のかなり後で説明するが、基板50−Nは、シス
テム10の動作中、即ち、「ホット」な状態の間でも、
差し込むことができる。好適実施例では、中央面のクロ
ック速度は約83.3Mhzであり、関連するバス・デ
ータ帯域は約2.67GB/秒である。
【0041】各回路基板は、1つまたは2つのユニバー
サル・ポート・アーキテクチャ(UPA:universal po
rt architecture)と互換性のあるCPU装置、例え
ば、特定のインターフェースおよび好ましくはランダム
・アクセス・メモリ(「RAM」)を有する装置を含む
ことが好ましい。
【0042】第2図は、バス・システム20および典型
的なプラグイン回路基板50−Nを、更に詳細に示す。
第2図において、実線経路はデータ経路を表し、破線経
路(例えば、アドレス・コントローラ180からアドレ
ス・バス60)はアドレス経路を表す。この後説明する
ように、アドレス・コントローラ180内の分散調
停("ARB")ユニット186は、本発明の一態様を実施
する。
【0043】アドレス・コントローラ180内の好まし
い分散型調停("ARB")ユニット186は、関連するア
ドレス・バスに対するアクセスの調停を行う。調停ユニ
ット186において、要素A,B,C,およびDは、リ
ーフ・レベル・アービトレータを表し、要素Eはトップ
・レベル・アービトレータを表す。各リーフ・レベル・
アービトレータは、当該リーフ・レベルにおけるバス・
アクセスに対する調停を行い、トップ・レベル・アービ
トレータは、競合するリーフ・レベル・ウイナ間におい
てバス・アクセスの調停を行う。
【0044】第2図に示すように、各基板50−Nは、
好ましくは、データ・バス70(ライン束40−N内の
1本のラインを通じて)および基板上のRAM150−
Nと通信を行う、ビット・スライス型データ・バッファ
・コントローラ140、ならびにUPA CPU装置16
0−Nおよび/または170−N、又はI/Oユニット
を含む。データ・バッファ・コントローラ140は、好
ましくは、8つのビット・スライス集積回路("IC")チ
ップを含み、これらはUPAポート、メモリ、およびバス
・システム40間の転送中データをバッファする。
【0045】各基板50−Nは、更に、DataBus信号以
外の全信号、例えば、アドレス・バス60、データIDバ
ス90、調停バス80、およびコンフィギュレーション
信号130と(ライン束40−N内のラインを通じて)
通信を行うアドレス・コントローラ180も含む。本発
明によれば、アドレス・コントローラ180内には、コ
ヒーレント入力キュー("CIQ")182、キュー・バッ
ファ("QB")184、および分散型調停機構("ARB")
186がある。
【0046】アドレス・コントローラ180は制御信号
を発生し、この制御信号は経路190を通じてデータ・
コントローラ140に搬送される。データ・バス70、
アドレス・バス/状態バス60、調停バス80、および
データIDバス90上の信号タイミングは、このような
データおよびアドレス経路の多重区分(mutiplex-partit
ioning)を可能とするように指定される。
【0047】第2図に示すように、アドレス・コントロ
ーラ180は、基板上のRAMユニット150−N、お
よび各UPA CPU装置160−N,170−Nとも、
適切なアドレス経路を通じて通信を行う。経路200,
210は、アドレス・コントローラを、いわゆるDtag
RAMユニット220に結合する。
【0048】先に注記したように、「装置」は、メモリ
のラインをキャッシュ可能なI/Oユニットを表すこと
もある。キャッシュ・ブロックまたはキャッシュ・ライ
ンのために主メモリを内蔵した基板を、当該ラインの
「ホーム」と名付ける。キャッシュを含み、コヒーレン
スを維持するメモリ空間を、コヒーレント・ドメインと
名付ける。対称的に、コヒーレントでないドメインは、
例えば、ストリーミング・バッファ(streaming buffer)
やいわゆる"bcopy"バッファのように、格納されている
データに対するコヒーレンスを維持せずにメモリのコピ
ーを保持する場合もある記憶領域である。
【0049】本発明を好適に実施するシステム10およ
びインターフェース30では、正しいキャッシュ・コヒ
ーレントの振る舞いおよびメモリの順序を保証すること
が重要である。これを行うためには、基板からバス・シ
ステムに結合される種々の信号に対する信号タイミング
およびエンコーディングに対して必須要件を賦課し、更
にシステムの回路基板レベルの必須要件も同様に賦課す
る。インターフェース・システム30は、装置間のコヒ
ーレンスを確保するよりはむしろ、基板間のコヒーレン
スの確保に関係する。
【0050】第3図は、典型的なアドレス・コントロー
ラ180を更に詳細に示す。全ての装置要求は、要求出
力キュー(ROQ:Request Out Queue)176によって
表されるように、順番にアドレス・バス60に発行され
る。より一般化されたインターフェースにおいて順序付
けせずに応答の到達を許可する場合とは異なり、システ
ム10をUPAインターフェース装置と共に用いる場合、U
PAインターフェースは順序付けという制約を賦課する。
要求にはUPAクラス(0または1)が割り当てられ、同
じクラスの要求に対する応答は、要求順でなければなら
ない。しかしながら、異なるクラスの要求に対する応答
は、どのような順序で到達してもよい。キューC0Q1
74およびC1Qは、同じクラスのUPA要求に対する応
答が順番に到達することを保証する機能を果たす。
【0051】ある装置に関連する全てのコヒーレントな
要求および割り込み(外部のコヒーレント要求およびそ
れ自体のコヒーレントな要求を含む)は、DTAG RAM
220からDtagsによって「フィルタ処理」を受けた
後、コヒーレント入力キュー("CIQ")182に入力さ
れる。アドレス・コントローラのDTAGメモリ220の内
容とタグのバス・レベルのRAM表現との間のタグ比較
により、例えば、所与のメモリ・アドレスから古い(例
えば、現状では有効でない)データを求める要求を、素
早く識別するためのフィルタ処理を可能にする。
【0052】装置との関連では、局所的な要求は、装置
自体からの要求であり、それに対して外部要求(foreign
request)は、他の装置からこの装置に向けられた要求
である。第3図に示すように、全ての装置入出力("PI
O")要求は、ローカルPIOキュー("LPIOQ")183
に入力され、当該装置に対する全ての外部PIO要求
は、外部PIOキュー("FPIOQ")184に入力され
る。一般的に、トランザクションは順番に処理され、キ
ューの先頭から開始される。
【0053】装置160−Nに入力するデータおよびこ
れより出力するデータは、第3図に示すように、2つの
バッファ(例えば、キューではない)、即ち、データ出
力バッファ("DOB":Data Out Buffer)186、および
データ入力バッファ("DIB":data In Buffer)187
にバッファされる。
【0054】また、アドレス・コントローラ180は、
Dtagsバッファ220、ダーティなビクティム(dirty vi
ctim)をスヌープするために用いられるDVICTタグ17
9、デコード・ユニット185、およびダーティなビク
ティムによるキャッシュ・ミスのコピーバック(copybac
k)およびパーフォーマンスを最適化するために用いられ
るVbuffer188を内蔵する。
【0055】 に出願され、 と題し、本
発明と同一譲受人に譲渡された米国特許出願第08/
号は、Vbufferおよびコピーバックの最
適化方法の実施例を開示しており、これを用いて本発明
を実施することが可能である。しかしながら、他のバッ
ファおよび方法を代わりに用いてもよい。第3図に示す
ように、アドレス・コントローラ180は、調停ユニッ
ト186およびメモリ・コントローラ189も含む。好適実施例において用いられる信号群についての概要 システム30において、好ましくは、アドレス・バス6
0、データ・バス70、調停バス80、データIDバス9
0、状態信号バス100、ステータス信号バス110、
パリティ・ビット信号バス120、およびコンフィギュ
レーション信号バス130を含む、8系統の信号群があ
る。実際には、これらの論理信号群のいくつかは、同じ
バス信号配線上で、時間多重化される。
【0056】アドレス・バス60は、ソース回路基板装
置からコマンドを同報通信すると共に、要求元基板から
システム10内全ての基板に、好ましくは41ビットの
アドレスを同報通信するために用いられる。アドレス・
バス内のSourceIDフィールドは、各トランザクションに
一意的にタグを付けるために用いられる。「トランザク
ション」という用語は、アドレス・バス・パケット、お
よびその対応する有効データ・バス・パケットを意味す
る。システム30では、従来技術では一般的に実施され
ているようにデータ・バス・パケット上ではなく、アド
レス・バス・パケット上でキャッシュ・ラインの所有権
を移転させることによって、プロトコルの大幅な簡略化
を図っている。したがって、基板50−Nは、実際にラ
インに対するデータを有する前であっても、ラインを所
有する場合がある。また、アドレス・バスは全体的な順
序を定義し、これを用いて、特定のメモリ・モデルを実
施することができる。メモリ・モデルは、例えば、全格
納順("TSO":total storeorder)、部分的格納順("PS
O":partial store order)、および緩和メモリ順("RM
O":relaxed memory order)のように、システム・レベ
ルにおいて指定することができる。かかる特定メモリ・
モデルは、Sun Microsystems社のSPARC V9仕様において
定義されている。
【0057】システム30は、好ましくは、2サイクル
・アドレス・パケット(1サイクルではなく)を使用し
て、基板がアドレス・バス・トランザクション全てに対
してスヌープすることを可能にしている。各スヌープ
は、タグを読み取るために1サイクル、およびタグを書
き込むために1サイクルの合計2サイクルを必要とす
る。2サイクル・プロトコルは、データ・バス・パケッ
トにも同様に用いられる。
【0058】データ・バス70は、2つの基板間でデー
タを転送するために用いられ、データ・バス・パケット
は、いずれの順序でデータ・バス上に発生することも許
可されており、装置によって観察されるメモリ・モデル
に影響を与えることはない。データ転送は、応答側から
開始側へのリード型、または開始側から応答側へのライ
ト型でもよい。アドレス・バス・パケットを発行する
(例えば、同報通信する)基板のことを、トランザクシ
ョンの「開始側」と呼ぶ。リード型トランザクションに
対して要求データを提供し、ライト型動作に対してデー
タを受け入れる基板のことを「応答側」と呼ぶ。応答側
および開始側は、実際には同一基板である場合もある。
【0059】先に注記したように、データ・バス・パケ
ットは2サイクル長であり、データ・バス・パケット間
にブランク・サイクルを設ける必要はない。各サイクル
毎に、データ・バスは、好ましくは、256ビットのデ
ータ(これにエラー訂正コード("ECC")が追加され
る)を搬送する。したがって、データ・バス・パケット
は、好ましくは、64バイトのデータを搬送する。
【0060】調停バス80は、アドレス・バス60およ
びデータ・バス70に対する調停を行うために用いら
れ、かかる調停には1つ置きのサイクルが用いられる。
したがって、連続するサイクルは、アドレス("A")お
よびデータ("D")間で交代する。
【0061】データIDバス90は、データ・バス・パ
ケットを発し、あらゆるデータ・バス転送の前に用いら
れる、アドレス・バス・パケットのSourceIDを搬送す
る。バス90は、データ・バス転送とアドレス・バス・
パケットを照合し、データ・バス上での適切なデータの
駆動を許可するか、あるいは適切な記憶バッファへのデ
ータのロードを許可するために用いられる。
【0062】状態信号100は、アドレス・バス・パケ
ットによってアドレスされたラインの状態を示すライン
である。これらのラインは、SHARED, OWNED, MAPPED,お
よびIGNORE信号を含み、以下の第7表に示す通りであ
る。以下で説明するように、IGNORE信号は、好ましく
は、全体的なトランザクションの最適な順序付けを実施
するために用いられる。
【0063】ステータス信号110は2本のラインを含
み、トランザクションにおけるエラー、データ・バス上
の有効なECC、および応答(データ・バス・パケッ
ト)の取り消しを示す。
【0064】パリティ・ビット信号120は、調停バ
ス、状態信号、ステータス信号、およびデータIDバスに
おいてエラーを検出するために用いられる。(アドレス
・バスは、好ましくは、それ自体のパリティ・ラインに
よって保護され、データ・バスがECCを搬送する)。
【0065】コンフィギュレーション信号130は、ク
ロック、リセット、JTAG、およびその他の実施態様
によって異なる信号、例えば、ホット・プラグ回路基板
挿入機能に用いられるトリガ信号および係合信号のよう
な機構(facility)を備えている。
【0066】第1表は、システム30と共に用いられる
信号群を纏めたものである。
【0067】
【表1】
【0068】アドレス・バス信号群の定義 アドレス・バス60は、好ましくは、1つのパリティ信
号を含む、43本の信号線で構成される。第2表は、ア
ドレス・バス・パケット・フィールド、および2回の連
続サイクルにおいて駆動されるアドレス・バス・パケッ
トを示す。
【0069】
【表2】
【0070】多重化される共有フィールドおよび無視フ
ィールドは、論理的には、アドレス・バスの一部ではな
く(これらは同じピンを共有するが)、アドレス・バス
の残りの部分を用いて開始側によって駆動されるもので
はない。しかしながら、他のフィールドは全て、開始側
によって駆動される。パリティ・ビットは、それらが保
護するアドレス・バス・フィールドよりも1サイクル遅
れて駆動される。したがって、Parity0フィールドは、
サイクル0において駆動されるアドレス・バス・フィー
ルドを保護し、一方Parity1フィールドは、サイクル1
において駆動されるアドレス・バス・フィールドを保護
する。1サイクル遅れてパリティ・フィールドを駆動す
ることにより、パリティを計算するための時間が得られ
る。予約フィールドは、好ましくは、開始側によって駆
動されない。
【0071】Parity1フィールドは、開始側によって駆
動されないので、共有フィールドまたは無視フィールド
を保護しない。代わりに、共有フィールドおよび無視フ
ィールドは、後に述べる、ParityD信号によって保護さ
れる。
【0072】先に注記したように、タグのリードおよび
ライトに2サイクルを要するので、基板が全てのアドレ
ス・バス・トランザクションをスヌープできるようにす
るには、各アドレス・バス・パケットは2サイクル必要
とする。
【0073】好適実施例では、アドレス・フィールドは
物理アドレスのビット40:4を含む。ビット3:0は
不要である。何故なら、これらが含む情報は全てByteMa
skフィールドから得られるからである。ByteMaskフィー
ルドは、ReadIOおよびWriteIOトランザクションに対し
て、いずれかの数の16バイトを指定するために用いら
れる。
【0074】第2表では、ReadToShare, ReadToShareAl
ways, およびReadToOwnトランザクションにおいてビク
ティム・ビットを用いて、トランザクションに伴うキャ
ッシュ・ミスにより、ダーティなビクティムが発生した
ことを示す。ビクティム・ビットは、割り込みパケット
が、特殊な割り込み源をエンコードするために用いるこ
とができる。このビットは、他のいずれのトランザクシ
ョンにも用いられず、0として駆動される。
【0075】ポート・フィールドは、基板内における装
置番号を示し、基板当たり多くとも2つの装置を有する
に過ぎないシステムでは、1ビットのポート・フィール
ドで十分である。
【0076】パリティ・ビットは、第3表に示すよう
に、アドレス・バス・フィールド上において偶数パリテ
ィをエンコードする。パリティは、それらが保護するフ
ィールドより1サイクル遅れて駆動され、これによりパ
リティを計算するための十分な時間が得られる。
【0077】
【表3】
【0078】第3表において、SourceIDフィールドは、
アドレス・バス・パケットに一意的にタグを付けるため
に用いられる。応答側は、SourceIDをデータIDバス上に
置き、アドレス・バス・パケットおよびデータ・バス・
パケットの照合を行う。SourceIDフィールドは2つの下
位フィールドを有する。BoardID[6:3]下位フィールドは
基板を識別し、TransactionID[2:0]下位フィールドは当
該基板内におけるトランザクションを識別する。0のTr
ansactionIDはアイドルのために予約されており、これ
によって、各基板に、7つまでの未決のトランザクショ
ンを有することを許可している。未決のトランザクショ
ンは全て一意のSourceIDを有するが、TransactionIDの
選択は、実施態様によって異なる。コマンド・フィールド 第4表は、システム30において用いられる、コマンド
・フィールドのエンコーディングを示す。
【0079】
【表4】
【0080】データ・バス信号群の定義 データ・バス90に対する信号群の定義について、これ
より詳細に説明する。各データ・バスは、第5表に示す
ようなフィールドを有する。
【0081】
【表5】
【0082】データは、Kanedaによって開発された、独
立のSEC-DED-S4EDエラー訂正コードによって保護される
ことが好ましいが、他の形態の保護も代わりに使用可能
である。好適実施例では、8ビットのECCフィールド
が、第6表に指定したように、各64ビット・データ・
フィールド毎に関連付けられている。
【0083】
【表6】
【0084】データ・バス・パケットは、2サイクル
(64ビット)長であり、隣接するデータ・バス・パケ
ット間にアイドル・サイクルを設ける必要はない。ブロ
ック転送に対するデータ・バス上のデータの順序は、Ad
dress[5]によって決定され、32バイトの整合データ量
(data quantum)は、好ましくは最初に供給されるアドレ
スを含む。Address[5]が0である場合、最初のデータ・
サイクルはバイト0ないし31までを含み、次のデータ
・サイクルはバイト32ないし63までを含む。Addres
s[5]が1である場合、最初のデータ・サイクルはバイト
32ないし63を含み、次のサイクルはバイト0ないし
31を含む。
【0085】非ブロック転送(ReadIO, WriteIO)では、
最初のデータ・サイクルのバイト0ないし16にデータ
が配置され、個々のバイトはByteMaskフィールドにおい
て指定される。ByteMaskフィールドについては本明細書
の別のところで述べる。各データ・サイクルにおいて、
バイトは順序正しく並んでおり、最も番号が小さいバイ
トが最も番号が大きいビットを占めている。データIDバス信号群 DataIDバスに対する信号群について、次に説明する。デ
ータIDバスは7ビット幅であり、データ・バス・パケッ
トを以前のアドレス・バス・パケットと照合するために
用いられる。DataIDは1回置きのクロック・サイクル上
でのみ駆動されるので、第2表に示すように多数の他の
信号と、信号ピンを多重化形式で共有することができ
る。
【0086】第7表は好適実施例において用いられるデ
ータIDバス・フィールドを示す。
【0087】
【表7】
【0088】次に第4図を参照すると、データIDバス9
0は、最初のDataIDがデータ・バス70上で使用可能に
なる前に、5クロック・サイクル駆動されることがわか
る。この5サイクルのレイテンシは、適切なデータを駆
動する十分な時間を与えるために必要である。
【0089】第4図において、各アドレス・コントロー
ラ180は、少なくとも1つのラッチ・クロック・レジ
スタ("LCR":latched clock register)を含む。最も右
側にあるアドレス・コントローラに対する名称"180*"
は、物理的にこのアドレス・コントローラは、要求元即
ち開始側CPUを内蔵するカード以外の回路カード50
−N上に位置し得ることを表す。スロット即ちクロック
・サイクル"0"において、データ・バス調停(以下で説
明する)を勝ち取った要求元は、そのデータIDをデー
タIDバス90上に置き、サイクル"1"においてこの情
報をアドレス・コントローラ180*に結合する。サイ
クル2において、アドレス・コントローラ180*と関
連する出力LCRは、このデータIDを、要求元回路カ
ード上のビット・スライス・データ・バッファ・コント
ローラ140に関連する入力LCRに結合する。ユニッ
ト140内には、2サイクルのレイテンシがあり、クロ
ック・サイクル5上で、データIDはデータ・バス70
に書き込まれる。
【0090】データ・バス調停の「ウイナ」は、データ
IDバスに対する調停の暗示的なウイナでもあるので、デ
ータIDバスへのアクセスに対する別個の調停は必要な
い。調停バス信号群 プラグイン回路基板50−Nは、調停バス80を用い
て、アドレス・バスとデータ・バスとの間の調停に用い
られる調停バス上で、交互のアドレス("A")サイクル
およびデータ("D")サイクルによって、アドレス・バ
ス60およびデータ・バス90へのアクセスを得る。デ
ータIDバスおよびステータス信号に対するアクセスは、
データ・バスと共に暗示的に得られる。第8表によって
示されるように、調停バスは好ましくは3つのフィール
ドで構成される。
【0091】
【表8】
【0092】要求ラインは、各回路基板毎に1本割り当
てられ、分散型調停アルゴリズムをこの調停に用いるこ
とが好ましい。バス・アクセスを行おうとする各基板
は、その要求ラインをアサートし、そのほかの要求ライ
ン全てを読み取る。アドレス・バス・アクセスに対する
調停は、各回路基板50−N上のアドレス・コントロー
ラ180内にあるARBユニット186の中で分散形式で
決定される。調停のウイナは、要求が駆動されてから1
サイクル後に決定される。次いで、バス(アドレス・バ
スまたはデータ・バス)は、次のサイクルにおいて駆動
することができる。
【0093】各基板上のアドレス・コントローラ180
内のARBユニット186は、全ての基板に、同じ階層総
当たり型調停アルゴリズムを実行させ、各ARBユニット
186の状態が互いに同期を保つようにする。ArbSync
信号は、1つの基板(典型的にファームウエアで選択さ
れる)によって駆動され、基板がそれらの調停状態機械
を同期化する機構を与える。ArbSyncは交互に1値およ
び0値に駆動され、それぞれ交互のアドレス調停サイク
ルおよびデータ調停サイクルを示す。好適実施例では、
ArbSyncを駆動する基板は、同じ値を2サイクルの間駆
動することによって、調停のリセットを行わせることも
できる。(ArbSyncはハードウエアのデバッグ処理にも
有用である。) データ・バスの調停は、データが得られる前に開始する
ことができるので、通常調停レイテンシを重複すること
ができる。これにより、データ・バス調停では、2サイ
クル後に、単純なウイナの選択を用いることが可能とな
る。
【0094】FlowControlフィールドは、ある種のトラ
ンザクションに対するアドレス・バス調停要求を中止す
るために用いられる。フロー制御 次にFlowControl信号について説明する。フロー制御
は、好ましくは、あらゆる数の基板によって駆動される
ワイヤードOR信号であり、それらのアドレス・バス・
パケットのフロー制御を行う必要性を示す。ワイヤード
ORラインの電気的特性のために、FlowControlは非同
期信号として取り扱わなければならない。
【0095】基板は、FlowControlがアサートされてい
ることが観察されてから2サイクル後に開始するAdmin,
ReadIOまたはWriteIO以外のトランザクションを開始す
るために、アドレス・バスの要求を行ってはならない。
FlowControlがディアサートされて2サイクル後に開始
することにより、基板はアドレス・バスの要求を行い、
あらゆる種類のトランザクションを開始することができ
る。フロー制御は、Admin, ReadIO, またはWriteIOトラ
ンザクションには不要である。フロー制御は、データ・
バスに対しても不要であり、DataBus調停サイクルの間
無視すべきである。これは、リード型転送では、開始側
は常にそのDIB187に空間を有し、ライト型転送で
は、応答側は、データを受け入れる空間が足りない場
合、常にDataCancelをアサートすることができるからで
ある。好適実施例によるトランザクションの概要 各トランザクションは、1つの同報通信アドレス・バス
・パケットと、1つの有効な二点間データ・バス・パケ
ット(point-to-point Data Bus packet)とを伴う。後に
説明するが、取り消された1つの無効DataBusパケット
がある場合もある。分散型ARBユニット186の目的
は、あらゆるプラグ基板50−N上のあらゆるCPU装
置によって発行された要求についても、迅速かつ最少の
レイテンシで調停を行い、調停を勝ち取った基板実装装
置に許可信号を迅速に発行することである。リード型トランザクション 典型的なリード型トランザクションは次のように行われ
る。
【0096】(1)開始側基板上のCPUが、調停バス
を用いて、アドレス・バスの調停を行う。 (2)開始側は、アドレス、命令、およびSourceIDによ
って、アドレス・バスを駆動する。
【0097】(3)全ての基板がアドレス・バスと通信
し、アドレスを「スヌープ」する。アドレス・サイクル
に続く一定の遅延の後、アドレスがアドレス・バス上に
あった時点におけるラインの状態を示す状態信号を、全
ての基板が駆動する。必要であれば、基板は、後のサイ
クルにおいて、アドレス・バス・パケットに対して、そ
の基板に実装されているDTAG RAMユニット220
(第2図参照)内のキャッシュ・タグを更新するが、デ
ータ・バス・パケットによってタグの更新が行われるこ
とはない。
【0098】(4)応答側基板は、調停バスおよび分散
型ARBユニット186を用いて、データ・バスに対する
調停を行う。分散型とは、各プラグイン回路基板上の各
アドレス・コントローラ180が、その他の各ARBユニ
ットと状態が同一であるARBユニット186を内蔵して
いることを意味する。
【0099】(5)応答側基板は、アドレス・バス・パ
ケットからのSourceIDによって、データIDバスを駆動す
る。 (6)応答側基板は、状態信号を駆動する。
【0100】(7)応答側はデータ・バス・サイクルを
2回駆動する。 (8)データが宛先にロードされる。 システム30は、リード型トランザクション(応答側か
ら開始側へのデータ転送の結果発生する)、およびライ
ト型トランザクション(開始側から応答側へのデータ転
送の結果発生する)を含む、小さな集合のトランザクシ
ョンを定義する。集合的に、これらのトランザクション
は、ReadToShare, ReadToShareAlways,ReadToOwn, Read
Stream, ReadIOおよびReadBlockIO, WriteBack, WriteS
trem, WriteIOおよびWriteBlockIO, Interrupt, ReadTo
ShareFork, ならびにAdmin(疑似トランザクション)を
含む。これらのトランザクションに対する好適な特定エ
ンコーディングを、第3表に示す。リード型トランザクション集合 リード型トランザクション集合は、(i)ReadToShareおよ
びReadToShareAlwaysトランザクション、(ii)ReadToOwn
トランザクション、(iii)ReadStreamトランザクショ
ン、および(iv)ReadIOおよびReadBlockIOトランザクシ
ョンを含む。各トランザクションに対して開始側および
応答側によって要求される動作、ならびに実行が必要な
スヌーピング動作についてこれより説明する。尚、状態
機械についての最小限の特性を示すが、特定のキャッシ
ュ状態および特定のトランザクションを強制する必要は
ないことを注記しておく。また、メモリ順序およびキャ
ッシュのコヒーレンスは、システム30と共に用いるシ
ステムのアーキテクチャ、および、例えば、UPA型イン
ターフェース仕様のような装置インターフェースの仕様
の双方に依存することも注記しておく。(i)ReadToShareおよびReadToShareAlwaysトランザクシ
ョン ReadToShareおよびReadToShareAlwaysトランザクション
は、装置内におけるキャッシュ・リード・ミスを満足す
るために用いられる。ReadToShareトランザクション
は、ある基板が後に書き込もうとするラインをキャッシ
ュしたい場合に、その基板によって開始される。スヌー
ピングに関しては、このアドレスに対するホーム・メモ
リ(home memory)がMappedをアサートする。Mappedがア
サートされない場合、開始側は応答を期待せず、当該装
置にエラーを返す。全ての基板はアドレス・バス・パケ
ットをスヌープし、それらが当該ラインのキャッシュ・
コピーを有する場合、Sharedをアサートする。当該ライ
ンを所有する基板もOwnedをアサートし、開始側に応答
する。ラインのオーナは、多くとも1つに過ぎない。基
板が最初に他のトランザクションを発行したい場合、Ig
noreをアサートすればよい。開始側が多数の装置を有す
る場合、トランザクションは、ある装置におけるキャッ
シュ・ミスに応答して開始することができ、要求された
ラインは、同一基板内の他の装置にキャッシュすること
ができる。この場合、開始側はSharedをアサートする。
同様に、ラインが同一基板内の他の装置によって所有さ
れている場合、開始側はOwnedをアサートする。この場
合、開始側および応答側は同一基板である。
【0101】応答側に関して、ある基板が要求されたキ
ャッシュ・ラインを所有する場合、この基板がトランザ
クションに応答する。キャッシュ・ラインを所有する基
板がない場合、そのラインのホームが応答する。メモリ
のレイテンシを最少に抑えるために、メモリは、Owned
信号が有効になる前に、その応答を開始することができ
る。応答には、データ・バスに対する調停を行うこと、
およびデータIDバスを駆動することが含まれる。ライン
が他の基板に所有されている場合、メモリは、DataCanc
elをアサートすることによって、そのデータ・バス・パ
ケットを取り消す。Ignoreがアサートされ、メモリがそ
の応答を既に開始している場合、応答側がそのデータ・
バス・パケットを取り消す。メモリは、不確実な応答に
対してはDataIDを発行しないことが好ましい。これは、
対応するアドレス・バス・パケットの最初のサイクルか
ら11サイクル後に取り消すことができる。キャッシュ
の状態に関して、Sharedがアサートされている場合、開
始側は当該ラインに対する状態をセットし、それが共有
されていることを示す。ある基板がそのラインを所有し
ている場合、そのラインのオーナであり続ける。
【0102】他にラインを共有する基板がない場合、開
始側はそのラインのオーナになることを選択してもよ
い。これは、ラインが所有されていた場合よりも強い条
件を表す。これは、キャッシュ・ラインへの最初の書き
込みを一層効率的にすることができるので有用であり、
手順がUPAプロトコルにおいて用いられるという利点が
ある。この実施態様の手順を用いる場合、開始側は、Sh
ared信号の受け取りまで、それがラインの所有権を得る
か否かについてはわからない。しかし、所有権が得られ
た場合、開始側は、そのアドレス・バス・パケットがア
ドレス・バス上にあった時点に遡って、そのようにす
る。これは可能であるが、この際、開始側は、それ自体
のトランザクションに対するOwned信号の後に、Owned信
号をアサートするだけでよく、その時点までに、それが
オーナであることがわかる。Ignoreがアサートされた場
合、このラインの状態は変化しない。
【0103】ReadToShareAlwaysトランザクションは、
システム30の観点からは、ReadToShareトランザクシ
ョンと実質的に同じ場合がある。開始側は、書き込もう
とする意図がないラインをキャッシュしたい場合に、Re
adToShareAlwaysを発行する。他のSharedをアサートす
る基板がない場合であっても、開始側がそのラインのオ
ーナにはならないことを薦める。(ii)ReadToOwnトランザクション ReadToOwnトランザクションは、キャッシュ・ライト・
ミスを満足するために用いられる。ある基板が、そのキ
ャッシュから他の基板にラインを供給する責務を得た場
合、その基板のことを「オーナ」であるという。基板が
所有権を要求する際、ReadToOwnトランザクションを開
始して、オーナとなる。ReadToOwnトランザクション
は、キャッシュ・ラインに書き込みができるようにその
独占的所有権を望む基板によって開始される。同じトラ
ンザクションは、開始側が当該ラインの有効なキャッシ
ュ・コピーを有するか否かには無関係に用いられる。
【0104】スヌーピングおよびReadToOwnトランザク
ションに関して、このアドレスに対応するメモリを有す
る基板がMappedをアサートする。その他の場合、Mapped
がアサートされなければ、開始側は応答を期待せず、エ
ラーを当該装置に返す。全ての基板はアドレス・バス・
パケットをスヌープし、ラインを所有する基板がOwned
をアサートし、開始側に応答する。ラインのオーナは多
くとも1つに過ぎない。開始側が既にラインの有効なコ
ピーを有する場合、データを必要としないが、ReadToOw
nトランザクションを用いて、そのラインの独占的所有
権を得る。この場合、開始側は、Sharedもアサートし、
当該ラインを所有し得る他のキャッシュまたはメモリか
らの応答を禁止してもよい。
【0105】ある基板が要求されたキャッシュ・ライン
を所有し、それがOwnedラインをアサートした場合、こ
の基板がReadToOwnトランザクションに応答する。Owned
がアサートされなければ、そのラインに対するメモリが
応答する。メモリのレイテンシを最少に抑えるために、
Owned信号が有効になる前にメモリはその応答を開始す
ることができる。応答には、データ・バスに対する調停
を行うこと、およびデータIDバスを駆動することが含ま
れる。メモリは、Ownedがアサートされている場合、Dat
aCancelをアサートすることによって、そのデータ・バ
ス・パケットを取り消す。Ignoreがアサートされ、メモ
リが既にその応答を開始している場合、応答側がそのデ
ータ・バス・パケットを取り消す。先に注記したよう
に、メモリは、不確実な応答にはDataIDを発行すべきで
ない。不確実な応答は、対応するアドレス・バス・パケ
ットの最初のサイクルから11サイクル後に取り消すこ
とができる。
【0106】キャッシュ状態およびReadToOwnトランザ
クションに関して、開始側は、そのアドレス・バス・パ
ケットがアドレス・バス上に現れた直後に、キャッシュ
・ラインの所有権を得る。開始側基板以外の全基板は、
そのキャッシュ・ラインのコピーを無効化する。キャッ
シュ・ラインのオーナ(1つであり、それが開始側では
ない場合)も、そのラインのコピーを無効化し、開始側
に応答し、応答側からのデータ・パケットがそのキャッ
シュの唯一のコピーとなる。開始側が多数の装置を有す
る場合、開始側は、ReadToOwnトランザクションを開始
した装置以外の装置全てにおけるキャッシュ・ラインの
コピーを無効化する。トランザクションを開始した装置
には、応答側からのデータを、当該キャッシュ・ライン
の唯一のコピーとして与えなければならない。Ignoreが
アサートされると、ラインの状態は変化しない。
【0107】所有権は、ラインを要求するときに決定さ
れるのであり、当該ラインに対するデータを受け取ると
きではない。したがって、オーナはそれ自体のキャッシ
ュに実際にはそのラインを未だ有していない場合もあ
る。しかし、あるラインに対するオーナは、いずれの所
与の時点でも多くとも1つに過ぎない。このコヒーレン
ス・プロトコルは、「オーナ」と「ライタ」とを区別す
る点で、従来技術のコヒーレンス・プロトコルの殆どと
相違する。「ライタ」という用語は、潜在的にラインの
ダーティなコピーを有する基板のことを言う。所有権は
他の基板が所有権を要求するとすぐに移転するので、ラ
イタはオーナになる必要はない。したがって、ライタ
は、それがラインを他の基板に供給するまで、当該ライ
ンへの書き込みを継続することができる。いずれの時点
でもラインに対するライタは多くとも1つに過ぎない。(iii)ReadStreamトランザクション ReadStreamトランザクションは、メモリから、bcopyま
たはストリーミング・バッファ(streaming buffer)のよ
うに非コヒーレント・ドメインにデータ・ブロックを読
み取る際に用いられる。ここで用いる場合、「ブロッ
ク」または「ライン」という用語は、通常キャッシュ・
ブロックと関連付けられている64バイトの整合データ
を表す。ReadStreamトランザクションは、ある基板がコ
ヒーレント・ドメインから非コヒーレント・ドメインに
ラインを読み取りたい場合に、その基板によって開始さ
れる。スヌーピングに関して、このアドレスに対応する
メモリを有する基板がMappedをアサートし、その他の場
合、開始側は応答を期待せず、装置にエラーを戻す。全
ての基板がアドレス・バス・パケットをスヌープする。
ラインを所有する基板がOwnedをアサートし、開始側に
応答する。ラインのオーナは多くとも1つである。基板
が最初に他のトランザクションを発行したい場合、Igno
reをアサートすればよい。
【0108】応答側に関して、ある基板が要求されたキ
ャッシュ・ラインを所有する場合、これがReadStreamト
ランザクションに応答し、キャッシュ・ラインを所有す
る基板がない場合、当該ラインのホームが応答する。メ
モリ・レイテンシを最少に抑えるために、ホームは、Ow
ned信号が有効になる前に、その応答を開始することが
できる(応答には、データ・バスに対する調停を行うこ
と、およびデータIDバスを駆動することが含まれる)。
ラインが他の基板に所有されている場合、ホームはData
Cancelをアサートすることによって、そのデータ・バス
・パケットをキャンセルする。Ignoredがアサートさ
れ、メモリが既にその応答を開始している場合、応答側
がそのデータ・バス・パケットを取り消す。メモリは、
不確実な応答に対してはDataIDを発行すべきでない。こ
れは、対応するアドレス・バス・パケットの最初のサイ
クルから11サイクル後に取り消すことができる。Read
Streamトランザクションが、キャッシュ・ラインの状態
変化を発生させることは全くない。(iv)ReadIOおよびReadBlockIO ReadIOおよびReadBlockIOトランザクションは、入出力
(「I/O」または「IO」)空間からのリードに用いら
れる。ReadIOトランザクションは、バイト、半ワード、
ワード、二重ワード、四重ワード、およびマスクされた
バイト(byte-masked)のリードに用いられ、一方ReadBlo
ckIOは64バイト・ブロックを読み取るために用いられ
る。基板がIO空間からのリードを望む場合、その基板
がこれらのトランザクションを開始する。ReadBlockIO
トランザクションは、好ましくは64バイトのブロック
を読み取る際に用いられ、ReadIOは、アドレス・フィー
ルドにおいて指定された16バイト整合アドレス範囲か
らのByteMaskによって示される、好ましくは16バイト
の任意の組み合わせを読み取る際に用いられる。
【0109】ReadIOおよびReadBlockIOトランザクショ
ンにはスヌーピングは不要であるが、全ての基板はアド
レスをデコードして、それらが応答すべきか否かについ
ての判定を行う。応答するのは多くとも1つの基板であ
り、応答しようとする基板がMappedをアサートする。Ma
ppedがアサートされなければ、開始側は応答を期待せず
に、装置にエラーを返す。Ignoreは、ReadIOおよびRead
BlockIOトランザクションに対しては、アサートするこ
とができない。これら2つのトランザクションに関し
て、要求されたIOアドレスを含む基板が応答側とな
る。これらのトランザクションは、キャッシュ・ライン
の状態には何の変化も発生させない。ライト型トランザクション ライト型トランザクション集合は、(v)WriteBack、(vi)
WriteStream、(vii)WriteIOおよびWriteBlockIO、(vii
i)割り込み、(ix)ReadToShareFork、および(x)Adminを
含む。これらのトランザクション・タイプについてこれ
より詳しく説明する。(v)WriteBack WriteBackトランザクションは、ダーティなビクティム
をメモリに書き戻す際に用いられる。WriteBackトラン
ザクションは、ブロック整合され、基板がダーティなラ
インをメモリに格納したいときに、当該基板によって開
始される。スヌーピングに関して、アドレスに対するホ
ーム・メモリがMappedをアサートする。開始側はパケッ
トをスヌープし、ラインが所有されていない場合、Owne
dをアサートし、当該ラインが以前のトランザクション
によって無効化され、WriteBackが取り消されることを
示す。基板が最初に他のトランザクションを発行したい
場合、Ignoreをアサートすればよい。
【0110】応答側に関しては、要求されたメモリ・ア
ドレスのホームが応答側となる。全てのライト型動作と
同様に、データはまず開始側によって「押し出され
る」。応答側がこのデータを受け入れることができない
場合、DataCancelをアサートする。次に、応答側は、デ
ータを「引き込む」責務を得る。これが暗示するのは、
応答側は、それが「引き込もう」とするライト型動作を
追跡し続けるということである。開始側が適切なDataID
によってデータ・バスを駆動しデータを「引き込む」場
合、開始側は、データで応答する用意ができていなけれ
ばならない。開始側がWriteBackのためにOwnedをアサー
トした場合、全ライト型データ転送(full write-type d
ata transfer)が行われるが、データはメモリには書き
込まれない。Ignoreがアサートされると、データ・パケ
ットは発行されない。キャッシュの状態に関して、開始
側は、WriteBackトランザクションに対するアドレス・
パケットが発行された場合、ラインに対する所有権を放
棄する。他の基板がReadToOwnまたはWriteStreamトラン
ザクションを最初に開始した場合、このトランザクショ
ンを開始してはならない(またはOwnedをアサートする
ことにより、開始側が取り消さなければならない)。こ
のような場合、開始側は、Ownedをアサートすることに
よって、WriteBackトランザクションを取り消す。
【0111】一旦WriteBackアドレス・バス・パケット
が発行されたなら、当該ラインに対するメモリは、他の
基板がオーナとなるまで、このラインに対する以降の要
求に応答する責務を負う。この責務は、データ・バス・
パケットがメモリに受け取られていない場合でも存在す
る。したがって、ホームは、未決のWriteBackトランザ
クションを追跡し、未決のWriteBackトランザクション
を伴うラインに対する応答を延期する。これを行うの
は、ホームは、それ自体の古いデータのコピーで応答す
るのではなく、WriteBackからのデータで応答するから
である。Ignoreがアサートされている場合、ラインの状
態は変化しない。
【0112】ここで用いる場合、「ビクティム(victi
m)」とは、新しいデータが書き込まれる交換の対象とし
て識別されたキャッシュ・ラインのことである。ビクテ
ィム・キャッシュ・ライン内のデータは、主メモリが既
にそのデータを含んでいる場合は「クリーン」であり、
キャッシュ・ラインが更新されている(主メモリは更新
されていない)場合、「ダーティ」であり、この場合、
主メモリを更新するために、書き戻しが必要となる。(vi)WriteStream WriteStreamトランザクションは、bcopyバッファまたは
ストリーミングIOバッファのように非コヒーレント・
ドメインから、新しいデータをメモリ・ブロックに書き
込む際に用いられる。WriteStreamトランザクション
は、ある基板が新しいデータを、bcopyバッファまたは
ストリーミングIOバッファのように非コヒーレント・
ドメインからメモリのラインに書き込みたい場合に、こ
の基板によって開始される。全ての基板はアドレス・バ
ス・パケットをスヌープし、ある基板(開始側を含む)
が当該ラインのコピーを有する場合、そのコピーを無効
化する。SharedまたはOwned信号をアサートしてはなら
ず、このアドレスに対応するメモリを有する基板はMapp
edをアサートする。基板が最初に別のトランザクション
を発行したい場合、Ignoreをアサートすればよい。
【0113】要求されたメモリ・アドレスのホームは、
応答側となる。開始側はまず、データ・バスに対する調
停を行い、データを駆動することによって、応答側にデ
ータを「押し出そう」とする。応答側がデータを受け入
れる用意ができていない場合、応答側はDataCancelをア
サートする。しかしながら、応答側は次にデータ・バス
の調停を行い、適切なDataIDを駆動することによって、
データを「引き込む」。これが暗示するのは、応答側は
それが「引き込もう」としているライト型動作を追跡し
ているということである。開始側は適切なDataIDを用い
てデータ・バスを駆動しデータを「引き込む」際、開始
側はデータで応答する用意ができていなければならな
い。Ignoreがアサートされている場合、データ・パケッ
トは発行されない。全ての基板は、そのキャッシュ・ラ
インのコピーを無効化する。Ignoreがアサートされてい
る場合、ラインの状態は変化しない。(vii)WriteIOおよびWriteBlockIO WriteIOおよびWriteBlockIOトランザクションは、デー
タを入出力空間に格納する際に用いられる。基板がデー
タを入出力空間に書き込みたい場合、WriteIOおよびWri
teBlockIOを開始する。WriteBlockIOトランザクション
は、64バイト・ブロックを書き込む際に用いるのが好
ましい。WriteIOトランザクションは、アドレス・フィ
ールド内において指定された16バイト整合アドレス範
囲から、ByteMaskによって示される16バイトの任意の
組み合わせを書き込む際に用いられる。これらのトラン
ザクションにはスヌーピングは不要であるが、全ての基
板はアドレスをデコードして、応答すべきか否かについ
ての判定を行う。応答するのは多くとも1つの基板であ
り、ある基板が応答しようとする場合、Mappedをアサー
トする。Ignoreは、これらのトランザクションに対して
は、アサートしてはならない。
【0114】要求されたIOアドレスを含む基板は応答
側となる。開始側は、まず、データ・バスに対する調停
を行い、データを駆動することによって、データを応答
側に「押し出そう」とする。応答側がデータを受け入れ
る用意ができていない場合、DataCancelをアサートし、
次いでデータ・バスの調停を行い、適切なDataIDを駆動
することによって、データを「引き込む」。これが暗示
するのは、応答側はそれが「引き込もう」としているラ
イト型動作を追跡しているということである。開始側が
適切なDataIDを用いてデータ・バスを駆動しデータを
「引き込む」場合、開始側はデータで応答する用意がで
きていることが好ましい。これらのトランザクションが
キャッシュ・ラインの状態に何らかの変化を生ずる原因
となることはない。(viii)割り込み 割り込みトランザクションはライト型トランザクション
であり、このトランザクションに対して、割り込みに関
連するいわゆる「モンド・ベクトル(mondo vector)」を
宛先に書き込むために、データ・バス・パケットが用い
られる。DataBusパケットは割り込みベクトル情報を含
む。割り込みトランザクションは、ある基板が割り込み
ベクトルを他のボードに送りたいときに、この基板によ
って開始される。割り込みの目標は、アドレス・フィー
ルドにおいて指定され、実施態様によって異なる。好適
実施例では、割り込み目標IDは、UPA内に指定されて
いるのと同じアドレス・ビット、即ち、PA<18:14>上で
搬送される。
【0115】割り込みトランザクションにはスヌーピン
グは不要であるが、全ての基板はアドレスをデコード
し、応答すべきか否かについての判定を行う。割り込み
の意図した宛先である基板は、Mappedをアサートする。
割り込みの宛先がこの割り込みを受け入れることができ
ない場合、Shared信号をアサートし、トランザクション
を取り消す。基板が最初に他のトランザクションを発行
したい場合、Ignoreをアサートすればよい。アドレス・
バス・パケットによってアドレスされた基板は、Shared
信号をアサートして、割り込みが受け入れられなかった
ことを示さなければ、応答側となる。開始側は、まず、
データ・バスに対する調停を行い、データを駆動するこ
とによって、応答側にデータを「押し出そう」とする。
応答側がデータを受け入れる用意ができていない場合、
DataCancelをアサートする。しかしながら、応答側は、
データ・バスの調停を行い、適切なDataIDを駆動するこ
とによって、データを「引き込む」。こうして、応答側
は、それが「引き込む」ライト型動作を追跡する。開始
側が適切なDataIDを用いてデータ・バスを駆動しデータ
を「引き込む」場合、開始側はデータで応答する用意が
できてなければならない。Ignoreがアサートされている
場合、データ・パケットは発行されない。Ignoreがアサ
ートされていないが、Sharedがアサートされている場
合、ビクティム・ビットがセットされているのでなけれ
ば、開始側は「押し出し」データ・パケットを発行しな
い。ビクティム・ビットがセットされている場合、デー
タ・パケットを押し出す。このパケットに対してDataCa
ncelをアサートする基板があってはならず、データが単
純に欠落する可能性がある。割り込みトランザクション
がキャッシュ・ラインの状態に何らかの変化を生ずる原
因となることはない。(ix)ReadToShareFork ReadToShareForkトランザクションは、従来技術には見
られず、本発明を実施するために役立つものである。更
に、このトランザクションは、いくつかのバス・システ
ム20が存在し、各バス・システムがそれ自体のインタ
ーフェース・ユニット30、回路基板50、および関連
する要素を有するようなネットワーク・コンフィギュレ
ーションに有用である。このトランザクションは、分散
型共有メモリ("DSM":distributed shared memory)に
対応するために用いられ、メモリによってWriteBackト
ランザクションとして扱われ、他の装置によってReadTo
ShareAlwaysトランザクションとして扱われる。ReadToS
hareForkトランザクションの開始側は、論理的に、Igno
reがアサートされた元のReadToShareまたはReadToShare
Alwaysトランザクションの開始側である。しかしなが
ら、このトランザクションは、Ignoreをアサートした装
置によって発行される。元のトランザクションの開始側
はこれをReadToShareトランザクションとして扱い、一
方ホームはこれをWriteBackトランザクションとして扱
う。このトランザクションは、元のReadToShareまたはR
eadToShareAlwaysトランザクションと同じTransactionI
Dを用いる。
【0116】ReadToShareForkトランザクションは、Rea
dToShareトランザクションと同様にスヌープされる。キ
ャッシュ・ラインの共有コピーを有する装置が、Shared
をアサートする場合もある。ReadToShareForkトランザ
クションに対する応答は、このトランザクションを発行
した装置、例えば、Ignoreをアサートした装置によって
発行される。メモリがデータを受け入れることができな
い場合、DataCancelをアサートし、後にデータを引き込
む。元のトランザクションの開始側は、最初のデータ・
パケットから(ホームがDataCancelをアサートしなかっ
た場合)、または2番目のデータ・パケットから(ホー
ムがDataCancelをアサートした場合)、データを取り込
む。キャッシュ状態は、ReadToShareトランザクション
のそれと同一である。
【0117】実際には、ReadToShareForkはIgnore信号
と協同して本発明を実施する。先に注記したように、要
求元CPUは、直ちにその要求を許可されない場合があ
るが、他のタスクを処理し続ける(停止するのではな
く)。したがって、要求元は、無効のデータを保持する
メモリ・アドレスからデータを読み取ろうとした可能性
があるが、この場合、Ignoreがアサートされているの
で、関連するコヒーレント入力キューにトランザクショ
ンをロードすることはできない。最終的にかかるライト
・トランザクションが有効データでメモリ位置を更新
し、その時点で同じSourceIDを用いて元のトランザクシ
ョンがバス・システム上で再発行されたと仮定する(例
えば、同じ特定のメモリ位置からのリード)。
【0118】メモリ位置へのライトは比較的時間がかか
り、例えば、10クロック・サイクルかかる場合もあ
る。従来技術では、有効なデータが特定のメモリ位置に
書き込まれ、その後に、データを読み取りたい要求元
が、そうすることを許される。しかしながら、データを
獲得しそれを局所的に格納すると、更にそのために10
サイクルを要することになる。
【0119】本発明によれば、ReadToShareForkは、
(a)無効データを含む要求メモリ位置に有効データを
書き込むこと、および(b)データに対する要求が未だ
未決である要求元に有効データを返すことを、同時に実
行可能である。したがって、約20クロック・サイクル
後に未決の要求を完了するのではなく、約10クロック
・サイクル以内に、関連する要求メモリ位置においてデ
ータが更新されるのと同時に要求は許可される。メモリ
・コントローラの観点からは、ReadToShareForkはライ
ト・トランザクションを実施するように見えることに注
意されたい。しかしながら、アドレス・コントローラの
観点からは、ReadToShareForkは、リード・トランザク
ションを実施しているように見える。
【0120】第6図を参照するとスロット0において、
本発明は、アドレス・バス・アクセスに対する調停と、
ReadToShareForkトランザクション("RTS"と省略する)
の発行とを、同時に行うことができることを注記してお
く。タイム・スロット即ちタイム・サイクル1におい
て、インターフェース・ユニットは、Ignore信号を受け
たトランザクションとの関連において以前に用いたSour
ceIDと同一のSourceIDを送る。アドレス・バス・トラン
ザクションが送られたときから3クロック・サイクルと
いう早さで、インターフェース・ユニットはデータ・バ
スの調停を行い、ReadToShareForkトランザクションと
関連する有効データ値を送ることができる。したがっ
て、第6図のスロット5において、DataIDが送られる。
これは、SourceIDと同一である。
【0121】第6図のタイム・スロット8において、例
えば、格納輻輳(storage congestion)に近すぎる場合に
は、バッファ・メモリは任意にステータス信号を発行
し、更に他のデータの受け取りを中止することができ
る。(後の時点で、ステータスを発したメモリ・ユニッ
トは、輻輳状態が解消したときに、データ・バスの調停
を行うことができ、元のDataIDを送る。)中止ステータ
ス信号が発行されない場合、データ(d0)が、タイム
・スロット10において開始した、データ・バス上に現
れる。本発明は好ましくはデータに対して2サイクルを
使用するので、データはタイム・スロット11(d1)
に継続する。
【0122】メモリの観点からは、タイム・スロット1
0,11におけるデータ・バス上のデータは、ライト・
データとして扱われる。しかしながら、要求元のプロセ
ッサのアドレス・コントローラの観点からは、かかるデ
ータは読み出しデータとして見なされる。この二分法(d
ichotomy)即ち「二又」により、同一データを同時に2
カ所の別々の宛先位置に送ることができる。即ち、デー
タの無効バージョンが存在していた当のメモリ・アドレ
スと、要求元のCPUとに送ることができる。データ受
け取り側は、本質的に、所望のDataIDおよびSourceIDが
一致したデータがどこから来るのかについてはわかって
おらず、気にもしない。
【0123】このように、ReadToShareForkは、バス・
システムに結合された単一のデータ源が同時に有効デー
タでメモリ位置を更新し、しかもリード要求を満足する
ことができる機構を実施する。この同時手順は、元の要
求即ち要求IDの複製をアドレス・バス上に置く手段に
よって実施され、元の要求元は、その後、既に有効とな
っているデータを引き出すことができる。この手順は、
Ignore信号機構以外でも実施可能である。更に、アドレ
ス・コントローラによって、バス上に直ちにReadToShar
eForkを置くことができる。この手順が行われる可能性
があるのは、システム全体における一連のトランザクシ
ョンの順序においてメモリの更新が必要であり、応答を
より早く得たいことをアドレス・コントローラがわかっ
ている場合である。(x)Admin機能 厳密に言うと、Adminは、アドレス・バス・パケットの
みを伴い、応答データ・バス・パケットがないので、ト
ランザクションではない。データが予期されないので、
0のSourceIDを用いる。Adminは、基板間の特別な管理
上の同期のために用いられる。Adminアドレス・バス・
パケットは、他の全てのパケットとは別個に扱われる。
これらのパケットは、いずれのキューにも入力されず、
その処理は、実施態様によって異なる。Adminパケット
に対しては、Ignoreをアサートしてはならない。以下の
第9表は、AdminタイプをエンコードするAdminアドレス
・バス・パケットにおけるアドレス・フィールドを示
す。
【0124】
【表9】
【0125】第9表において、XIR Adminタイプは、XIR
割り込みを全ての基板に同報通信する際に用いられる。
XIR割り込みは、オペレーティング・システムのデバッ
グのために、CPUに割り込みをかける機構を与える。
起動Adminタイプは、起動イベントを全ての基板に同報
通信する際に用いられる。これは、電源を落とされてい
る装置の起動を同期化するアクティブ電力管理(active
power management)において用いられるイベントであ
る。好適な調停機構の概要 システム30は、いわゆる高速/低速調停、およびいわ
ゆるバス・パーキング調停(bus parking arbitration)
を含む、調停レイテンシの減少を図るアドレス・バス調
停のいくつかの方法に対応することができる。これら2
つの方法は、一旦これらがウイナを選択したなら、回路
基板がどのように動作するかを記述するものである。い
くつかの基板の要求の中からウイナを選択する際、これ
らの方法の各々は、本発明による、同じ総当たり優先的
方法を利用することが好ましい。
【0126】バス・パーキング法では、以前のウイナが
バスを直ちに駆動することを許され、一方他の全装置
は、好ましくは総当たりを用いて、次のウイナになるた
めに調停を行わなければならない。高速/低速法では、
システム30は動的にモードを切り替えることができ
る。モードが高速の場合、いずれかの基板がその要求と
共に、例えば、同じクロック・サイクルにおいて、直ち
にアドレス・バスを駆動することができる。しかし、衝
突(例えば、2つ以上の要求が高速モードでアサートさ
れる)が発生した場合、モードは低速に切り替わり、総
当たりを用いてウイナが決定される。より具体的には、
多数の基板がアドレス・バスを同時に駆動する場合、そ
の結果として衝突が検出され、パケットは破棄される。
次のサイクルにおいて、全ての基板は要求ラインをチェ
ックし、同時に1つ以上の基板がアドレス・バスを駆動
しなかったことを確認する。多数の基板がアドレス・バ
スを同時に駆動した場合、そのアドレスは無視され、調
停は低速モード方法に切り替わる。要求がない場合、調
停は高速モードに戻る。システム30では、ファームウ
エアが、所与のシステムにおいて、どちらの調停方法を
用いるかを制御することが好ましい。多数が同時にバス
を駆動すると電気的な制約があることから、高速/低速
調停方法は中央面(center plane)が短い小規模なシステ
ムにおいて用いると最良であることが示唆される。
【0127】高速/低速調停は、1995年11月7日
に出願され、本願と同じ譲受人に譲渡された、"DUAL MO
DE ARBITRATION METHOD FOR COMPUTER SYSTEMS WITH ZE
RO TO TWO CYCLES OF LATENCY"と題する、米国特許出願
第08/ 号に開示されている。
【0128】調停要求には状態がなく(stateless)、要
求ラインは、要求元の基板が調停を勝ち取るまで、調停
バス上で駆動される。高速モードでは、要求はアドレス
と共に提示され、一方低速モードでは、アドレスよりも
2サイクル早く、勝利した要求がアドレス・バス上に提
示される。
【0129】高速および低速モードのアドレス・バス調
停の選択は、次のアルゴリズムによって記述することが
できる。Sは低速調停を示す状態変数を表し、Tは現ク
ロック・サイクル(例えば、新しい状態が計算される時
点)を表し、T−1は直前の調停要求サイクルが発生し
た時点(例えば、システム・クロック・サイクル2回分
前)を表すとする。
【0130】調停同期をリセットした時点で、S=0と
セットし、 If (S==0) and (at most one request was made at T-1) then S=0: else if (no requests were made at T-1) then S=0; else S=1. 優先的総当たり調停機構の詳細 総当たり調停方法は、1つの回路基板が常にデフォルト
のウイナであることを保証する。このウイナがアドレス
・バスを駆動することができ、同一サイクルにおいてそ
の要求ラインの駆動も行う。他の全ての基板は、アドレ
ス・バスを駆動できるのは、調停を勝ち取ってからであ
る。いずれのアドレス調停サイクルにおいても、デフォ
ルトのウイナ以外の基板から要求がある場合、新しいデ
フォルトのウイナが選択され、その最初の要求を行って
から2サイクル後に、そのアドレス・バス・パケットを
駆動することができる。他の基板からの要求がない場
合、デフォルト・ウイナは同一のままである。初期状態
では、デフォルト・ウイナは基板0となっている。
【0131】第8図は、本発明による、アドレス調停の
好適な実施態様を示す。その論理的実施態様を第9図に
示す。ここで、添付資料1は、ここに記載する優先的総
当たり調停の概略的な、即ち、比較的ハードウエアには
独立した、実施態様を示すマシン・コードのリストであ
る。第8図はいくらか簡略化されており、各分散型アー
ビトレータ・ユニットは16本の入力を有し、その内の
1本は当該ユニットに関連するノードから来ており、単
一のウイナ出力信号、即ち、外部ウイナ出力信号が調停
ユニット内部にある。
【0132】第2図および第8図に示すように、優先的
総当たり調停機構は、各回路基板50−N上のアドレス
・コントローラ180間において、ARBユニット186
として分散されていることが好ましい。各アドレス・コ
ントローラは、同じ情報、例えば、それに対して行われ
た要求、および15個まで存在し得る他の要求を見てい
る。更に、各アドレス・コントローラは、同じ状態にあ
り、自律的に、低いリーフ・レベルのアクセス許可、お
よびトップ調停レベルのアクセス許可を行う。
【0133】図示のように、各回路基板上のアドレス・
コントローラ186は、2レベル階層調停("ARB")ユ
ニット186を実施するロジックを含む。このユニット
186は、バス・ライン、およびアドレス・バスに対す
るアクセスを要求することができるアドレス・コントロ
ーラ("AC")と通信する。各ARBユニット186は、同
一回路基板上の同一アドレス・コントローラ180内の
1つのトップ・アービトレータ250("E")に結合さ
れた、4つの同一のリーフ・アービトレータ260−A
(または"A"),260−B(または簡単に"B"),26
0−C("C"),および260−D("D")を含むことが
好ましい。トップ・アービトレータと各リーフ・アービ
トレータとの間には、上向きの要求ライン("rout")、
上向きのウイナ右側("wrgt")ライン、および下向きの
許可ライン("win")がある。
【0134】第8図および第9図に示すように、各リー
フ・アービトレータは、4つの要求入力ライン("ri
n")を有し、各ラインは、当該リーフ・アービトレータ
によって供される単一のアドレス・コントローラに結合
されている。第2図に示したように、調停バスは好まし
くは18本のラインを有し、その内の16本は、各リー
フ・アービトレータ毎に4本ずつ、"rin"ラインとして
達している。例えば、1本のかかる要求入力ラインは、
16個のアドレス・コントローラ・ユニット(第9図も
参照のこと)の各々に専用となっている。残りの2本の
調停バス・ラインは、適正なフロー制御(例えば、共有
調停バス資源が一時的に使用不可能となった場合に、許
可を中止する機構)を保証し、システムが現在アドレス
("A")サイクルまたはデータ("D")サイクルのどちら
にあるのかを識別する位相情報を提供するために用いら
れる。各アドレス・コントローラは、したがって、16
個の入力要求信号(rin)を観察し、16個のウイナ出
力信号(wout)を出力する。
【0135】第8図および第9図に実施されているよう
に、調停は16通りあり、4つのリーフ・レベルの4通
りのアービトレータ260−A,260−B,260−
C,260−Dから成り、各々4つまでの競合するCP
U装置間の調停要求を判断する。第5のトップ・アービ
トレータ250は、4つのリーフ・アービトレータの内
どれがこの時点でアドレス・バス・アクセスを要求元に
許可するかを決定する。この開示された実施例を用いる
と、第8図に示す2レベル階層構造が、機能的には単一
の大きな16通りの優先的アービトレータのように動作
する。
【0136】アドレス・コントローラ180内では、調
停要求は、rinラインを用いて、回路基板に配置されて
いるリーフ・アービトレータに提示される。より具体的
には、回路基板(例えば、第2図における160−N,
170−N)に関連する2つのCPUは、カード上の一
本のrinラインを用いてアクセス要求に対する調停を行
い、これに対して調停バスおよび15本のrinラインを
経由してこのカード以外のCPUから15個の要求が来
る。リーフ・レベルの調停ウイナは、そのアドレス・パ
ケットをカード・レベルのバスに送り、当該カードに対
するアドレス・コントローラ180のキュー・バッファ
184内で列を作る。
【0137】第8図において、例えば、リーフ・アービ
トレータAが、ここではμp0,μp1,μp2,およ
びμp3と表記した4つのCPUのいずれかからの、ア
ドレス・バスにアクセスする要求に応じている。第9図
に示すように、CPU装置はそれらのリーフ調停要求
を、調停バスに結合されているrin入力ラインを通じて
行う。これらの装置からの要求は、例えば、リーフ・ア
ービトレータAを用いて、μp0即ちCPU0からの要
求はμp1即ちCPU1からの要求よりも優先度が高
く、μp1からの要求はμp2即ちCPU2からの要求
よりも優先度が高く、μp2からの要求はμp3即ちC
PU3からの要求よりも優先度が高くなるように、優先
度が付けられる。
【0138】各リーフ・アービトレータは独立して機能
し、その4つまでの要求元の間で潜在的なウイナを決定
可能であることが認められよう。各リーフ・アービトレ
ータは、「潜在的な」ウイナを選択し、最終的なウイナ
は、競合するリーフ・レベルの潜在的ウイナの中から、
トップ・アービトレータによって選択される。トップ・
アービトレータから許可を受け取ったリーフ・アービト
レータのみが、その「潜在的な」ウイナを、最終的な許
可ウイナとすることができる。このように、トップ・ア
ービトレータの許可を、リーフ・レベルのアービトレー
タにおいて、資格付与者として用いる。この方法は、1
6通り調停方法のレイテンシを比較的少なくするという
利点がある。
【0139】上述の調停方法は、最終ウイナ("LW")ポ
インタ状態を、各リーフ・レベルおよびトップ・アービ
トレータ・ユニットにおいて与えることによって、総当
たり式とする。LWポインタは、各調停ユニットに関連
するどの要求元が、当該ユニットにおける最終ウイナで
あったかを記録する。したがって、第8図に示すよう
に、リーフ・アービトレータA,B,C,Dおよびトッ
プ・アービトレータEは、各々、当該レベルにおける調
停許可を与える毎に右方向に増加する(例えば、優先度
は低下する)、同一のLWポインタ機構を含む。
【0140】各リーフ・アービトレータA,B,C,D
は、各競合者の優先度および当該レベルにおける付与の
最終ウイナ("LW")履歴に基づいて提示される競合者間
の調停を行う。トップ・アービトレータEは、最終ウイ
ナのリーフ・アービトレータを指し示すLWポインタを
含む。トップ・アービトレータEは、リーフ・アービト
レータの相対的な優先度、およびトップ調停レベルにお
ける許可付与のLW履歴に基づいて、リーフ・レベル・
ウイナのどれが、調停の許可を勝ち取るかを決定する。
各調停ユニットに関連する種々のLWポインタは、必要
に応じて、同期的に状態を変化させる。
【0141】優先的総当たり方法を用いると、多数の要
求がある場合、新しいデフォルト調停ウイナが選択され
る。ある基板が調停を勝ち取った場合、勝利した基板は
次の状態では最も低い優先度を有することになる。
【0142】例えば、リーフ・アービトレータB内のC
PU5が当該レベルにおいて調停許可を勝ち取った最終
装置であったとすると、LW270はCPU5を指し示
す。リーフ・アービトレータB内における次の調停許可
はCPU6またはCPU7、例えば、最終ウイナの「右
側」にある装置に与えられる。勿論、これは、CPU6
またはCPU7のいずれかが要求をアサートし、CPU
5はアサートしていない場合のことである。したがっ
て、CPU6またはCP7のいずれかが要求をアサート
している場合、CPU4およびCPU5は、アクセス許
可の候補となることはできない。CPU6またはCPU
7のいずれも要求を行っておらず、CPU4およびCP
U5が双方共要求を行った場合、この例では、CPU4
がリーフ調停Bのレベルでは勝者となる。何故なら、C
PU4はCPU5よりも優先度が高いからである。
【0143】アドレス・バス・アクセスに対する調停を
行いたいCPUは、それが結合されているリーフ・アー
ビトレータへの入力要求"rin"ラインを通じて、トップ
・アービトレータ250に要求を発する(第9図参
照)。各ローカル・リーフ・アービトレータは、それ自
体のrinライン上に存在し得る0ないし4つの要求間で
調停を行い、その要求元の間でウイナを決定する。決定
は、格納されているLW情報、および競合する要求の優
先度に基づき、自律的に行われる。各回路カード50−
N上の各アドレス・コントローラ180は、要求情報が
調停バス80を通じて全てのユニット180に結合され
ているので、常に同じ情報を見ており、各コントローラ
180は同じ状態を有する。添付資料1に関して以下で
更に詳細に説明するが、LWは、以下のように、3つの
ビット、即ち、rgt(「右」に対して)によって、ビッ
ト・マスクされて実施されることが好ましい。
【0144】rin: 0 1 2 3 rgt: 1 2 3 本発明によれば、rgt[n]がセットされると、調停ライン
nは、調停ラインn−1よりも優先度が高くなる。rgt
[1]がセットされると、rin[1]はrin[0]よりも優先度が
高くなる。リーフ・レベル・アービトレータがウイナを
許可した場合、その右側の要求ラインが最も高い優先度
を有することになる。これらのrinラインのいずれかが
共有資源に対するアクセスを要求した場合、リーフ・レ
ベル・アービトレータは、トップ・レベル・アービトレ
ータに対するウイナ右側信号wrgtをアサートする。これ
によって、このリーフ・アービトレータがもう1回共有
資源を許可されることが保証される。
【0145】このように、リーフ・アービトレータAで
は、CPU0が最後に勝利し、CPU1が次に要求を行
わず、CPU2およびCPU3が各々アドレス・バス・
アクセスを要求した場合、CPU2の優先度がCPU3
のそれよりも高いので、CPU2が勝利することにな
る。各リーフ・アービトレータは、その競合者間におい
て同様の判断を行い、"rout"ライン上の信号をトップ・
アービトレータ250に出力し、それがアクセスを望ん
でいるCPUを有することを示す。各リーフ・アービト
レータは、トップ・アービトレータに、ウイナ右側信号
("wrgt")も送る。wrgtをアサートしているリーフ・ア
ービトレータは、トップ・アービトレータにおいて最も
高い優先度を有し、バスに対するアクセスを許可され
る。
【0146】トップ・アービトレータ250の観点から
は、リーフ・アービトレータは、最初のリーフ・アービ
トレータAが2番目のリーフ・アービトレータBよりも
優先度が高く、2番目のリーフ・アービトレータBが3
番目のリーフ・アービトレータCよりも優先度が高く、
3番目のリーフ・アービトレータCが4番目のリーフ・
アービトレータDよりも優先度が高くなるように、優先
度が決められる。所与のリーフ・アービトレータに関連
するどのCPUが、当該リーフ調停レベルにおいて、調
停を「勝ち取った」かは、トップ・アービトレータには
無関係である。唯一の必要な情報は、4つのリーフ・ア
ービトレータの内どれが現在アクセスしようとしている
装置を有するのかという情報である。
【0147】トップ・アービトレータおよびリーフ・ア
ービトレータ・レベルにおいて、LWポインタは厳密に
優先度が付けられた順序に優越する。リーフ・アービト
レータAを通じて要求を行った装置が、トップ・アービ
トレータが発行した許可を最後に勝ち取った場合、最後
のウイナAの「右側」にあるリーフ・アービトレータ、
例えば、BまたはCまたはDが、Aよりも高い優先度を
有することになる。しかしながら、リーフ・アービトレ
ータAがwrgt信号をアサートしたなら、これが最も高い
優先度を得ることになる。リーフ調停レベルLW機構の
場合と同様、LWポインタは巡回せず、LWポインタ
は、必要に応じて、各システム・クロック・サイクル毎
に1回同期的にリセットされる。システム10の起動時
に、回路基板が挿入されると、LWポインタはそれらの
デフォルト値にリセットされる。LW状態変化(例え
ば、右に向かって増分する)は、12nsのクロック・
サイクル毎に同期的に発生することが好ましい。
【0148】好適な実施態様では、ArbSync信号(本明
細書の中で説明する)は、1つの基板のみによって駆動
され、調停状態機械の基板間同期のための機構を提供す
る。トップ・アービトレータは、それ自体のLW状態機
械、およびリーフ・アービトレータからの"rout"ライン
上の入来する要求の優先度に基づいて、許可の決定を行
う。最終的な許可決定は迅速に行われ、ウイナ出力即
ち"win"ラインを用い、調停バスを通じて、リーフ・ア
ービトレータに渡される。例えば、CPU0がリーフ・
レベルの調停を最後に勝ち取った場合、その後CPU0
の優先度は最低となり、リーフ・アービトレータAは、
そのCPU1がアクセスを要求した場合、それに対する
許可を受け取る。リーフ・アービトレータB内におい
て、CPU5が最後に勝ち取った場合、その後CPU5
の優先度は最低となり、この時点ではCPU6が(要求
を行えば)勝利することができる。トップ・アービトレ
ータ・レベルでは、リーフ・アービトレータAが最後に
許可を勝ち取った場合、その後この優先度は最低とな
り、この例では、リーフ・アービトレータBが勝利す
る。即ち、そのCPU6が調停許可を勝ち取ることがで
きる。
【0149】第9図および添付資料1で用いている表記
について簡単に説明する。添付資料1は、概略的な、主
として装置に独立したものであることを意図している。
例えば、ここで与えたコードは、特定のファンインおよ
びファンアウト要件を有する特定の論理ゲート・ファミ
リに専用としたものではない。上述の総当たり調停方法
の他の実施態様も、実施可能であることを、当業者は認
めよう。添付資料1では、
【数1】 という表記は、NOT即ち論理的補数を表す。例えば、〜
1=0である。一方、垂直線"|"は論理ORを表す。"re
set1"という表現は、例えば、"reset"信号が、ロー即
ち"0"のときにアクティブであることを示す。「要求入
力ライン」の表記rin(3:0)のような表記は、リーフ・ア
ービトレータAが、ビット3,2,1,0上の4つまで
のCPU要求の入力を受け取り可能であることを示す。
単一のリーフ・レベル信号routは、トップ・リーフ・ア
ービトレータまで結合され、r(0)はリーフ・アービトレ
ータAからの要求であり、r(1)はリーフ・アービトレー
タBからのものである、等となっている。トップ・アー
ビトレータwout(3:0)から受け取った単一のリーフ・ア
ービトレータ勝利許可は、4ビット、即ち、3,2,
1,および0を用いる。
【0150】添付資料1の最初のページiから始める
と、モジュール"arbbig"はトップ・アービトレータの内
部機能を記述し、信号は入力または出力として識別さ
れ、かつ宣言され、それらの信号ビット幅が定義され
る。エントリ"reg[3:1]rgt"は、例えば、実数の取得を
定義する。2番目の"assign"エントリにおいて、"chang
e"は、いずれかのリーフ・アービトレータがその"rin"
信号をアサートしているか否かについて問い合わせる。
ページiの最後の"assign"エントリにおいて変化がある
場合、next_rgt[1]にrealw[0]が割り当てられ、変化が
ない場合、rgt[1]は変更されない。ページiiの先頭にお
いて、次のrgt値におけるrgtに対する同期的な割り当て
が行われる。
【0151】ページiiの先頭において、モジュール"arb
grp"はリーフ・アービトレータ・ユニットの内部機能を
記述する。ページiiにおいて、例えば、表記
【数2】 は、rin[0]がアサートされ、rgt[1]がセットされなけれ
ば、0が1に対して勝利することを表す。"wout[0]"割
り当てエントリは、例えば、その要求がアサートされた
場合、0が勝利し、このリーフ・アービトレータが、そ
の同等物に対して勝利することを表す。ページiiの下部
近くにある"next_rgt[1]"エントリは、rinが変化し、0
が勝利した場合、rgt[1]をセットすることを表す。
【0152】添付資料1のページiiの下部から始まる部
分において、モジュール"arbtop"は、どのようにしてト
ップ・アービトレータおよび4つのリーフ・アービトレ
ータを接続するのかについて記述する。第9図は、これ
らの接続、およびarbtopモジュール自体の図式表現であ
る。ページiiの下部から始まり、ページiiiに続いて、
モジュール"arbtop(clk, reset_1, rin, wout)"は、以
前に定義したトップ・アービトレータを相互接続するこ
とを対象とし、好適実施例では、4つの以前に定義した
リーフ・アービトレータである。
【0153】添付資料1におけるarbgrpモジュールにつ
いて、これより詳細に説明する。各リーフ・アービトレ
ータは4つのrin信号を入力し、rin信号のいずれかがア
サートされた場合、1つのrout信号をトップ・アービト
レータに出力する。rin[1],fin[2],およびrin[3]の各々
は、関連するrgtレジスタを有する。左側のrinのいずれ
かが、最後に変更信号がトップ・アービトレータによっ
てアサートされたときのウイナであった場合に、rgtレ
ジスタがアサートされる。対応するrgtビットがセット
されているrin信号は、左側のrin信号(小さい番号を有
する)よりも優先度が高く、そのrin信号はクリアされ
る。その他の場合、調停は、rin[0]<rin[1]<rin[2]<rin
[3]と成るように、厳密に優先順位が決められる。好適
な実施態様では、rin[0]は、関連するrgtレジスタを有
さず、純粋に優先順方式のみを基準とする。
【0154】リーフ・アービトレータが最後のウイナで
あって、rgtビットがセットされている第2のrinが現ウ
イナである場合、wrgtout信号をアサートして、このリ
ーフ・アービトレータが最も高い優先度を有すべきこと
を、トップ・アービトレータに知らせる。4つのrin信
号の内のウイナwout[3:0]は、対応するrin信号がアサー
トされると、アサートされ、トップ・アービトレータ
は、このリーフ・アービトレータのwin信号をアサート
し、他の3つのrin信号の中には、このrin信号に勝利す
るものはないと判定する。
【0155】rin信号の各対は、一方または他方が勝利
する条件を定義する2つの「ウイナ方程式」を有し、合
計で12のかかる方程式がある。winに対して、rin信号
をアサートしなければならず、他のrinには対応するrgt
レジスタがアサートされているものがない場合、最も番
号が小さいrinが勝利する。
【0156】arbbigモジュールに関して、トップ・アー
ビトレータ・モジュールは、既に述べたリーフ・アービ
トレータと同様である。ウイナ方程式は、next_rgt方程
式であるので、同一である。トップ・アービトレータに
対して、wout方程式は、wrgtをアサートするリーフ・ア
ービトレータが最も高い優先度を得ることも反映する。
リーフ・アービトレータのいずれかがバスを要求するこ
とには無関係にトップ・アービトレータは潜在的なウイ
ナを計算するので、realwは、リーフ・アービトレータ
に、そのrinがアサートされていると共に、ウイナとし
て選択されていることを要求する。リーフ・アービトレ
ータのいずれかからの要求がある場合、現在実施されて
いる変化信号がアサートされる。変化信号がアサートさ
れると、全てのrgtレジスタが更新される。
【0157】上述の同期分散型アルゴリズムは、アドレ
ス・バスおよびデータ・バス双方に対するアクセスを迅
速に調停する際に用いることができるが、上述のシステ
ム10においては、レイテンシが低いアクセスには、前
者の方が後者よりも重要である。アドレス・パケット
は、アドレス・バス・アクセスに対する調停と同時に出
力することができ、これによって、従来技術の方式(第
8図参照)に対して2クロック・サイクルの節約とな
る。この手法は、調停がまず行われ、次いで許可アドレ
ス・パケットがアドレス・バス上に置かれる従来技術の
方式よりも格段に高速である。更に、アドレス・バス調
停ラインとデータ・バス調停ラインとが別個に与えられ
る従来技術の方式とは異なり、共通の調停バスが、アド
レス・バスおよびデータ・バス・アクセスの調停を行う
ために時間多重化されているので、ピン数も節約され
る。好適実施例では、アドレス・バスおよびデータ・バ
ス要求トランザクションは、各々2サイクル長である。
【0158】更に、上述のアルゴリズムは、比較的浅い
論理深度、ここでは、約6論理レベルを有する平坦な総
当たりの実施態様であるかのように動作する。論理深度
は、上述の実施例では、入来する要求およびアクセスの
許可の間で比較的少ない論理ゲート演算を考慮すればよ
いことを意味する。
【0159】平坦な実施態様を使用可能であること(例
えば、単一のリーフ・アービトレータに対して16本の
入力ライン)、または2レベル以上の階層を使用可能で
あることが認められよう。しかしながら、全てを考慮す
ると、小集団の競合者(例えば、4つの競合者/群ま
で)間においてリーフ調停が発生し、更に小集団の競合
者(再び、4つ)間でトップ調停が発生する2レベル階
層が、低いレイテンシで容易に実施される。更に、好適
実施例は階層的総当たり調停方法を用いて、コンピュー
タ・バスに対するアクセスの種々の要求の調停を行う
が、この方法は、限定された資源を争う競合者間におい
て迅速な調停が望ましいあらゆる環境において使用可能
である。好適に用いられる状態信号タイプ 次に、4つの状態信号タイプ、Shared,Owned,Mapped,お
よびIgnoreについて、第10表を参照しながら、更に詳
細に説明する。
【0160】
【表10】
【0161】Share("S")状態信号 基板当たり1つとして、16個のShared("S")信号が
ある。各基板はそれ自体のShared信号を駆動し、他のSh
ared信号を全て読み取る。第2表に記したように、Shar
ed信号はアドレス・バス・ピン上に多重化されている。
Shared信号は、関連するアドレス・バス・サイクルの最
初のサイクルの5サイクル後に駆動される。Owned("O")状態信号 Owned状態信号は、関連するアドレス・バス・パケット
の最初のサイクルの6サイクル後に駆動され、データID
バス上に多重化される(第6図参照)。
【0162】SharedおよびOwned状態ラインは、基板が
実際に当該ラインに対するデータを有していなくても、
駆動されることになっている。基板は、それがアドレス
・バス上でReadToOwnトランザクションを開始した時点
から、所有権を放棄する時点まで、ラインのオーナとな
る。所有権が放棄されるのは、基板がアドレス・バス上
で当該ラインに対するWriteBackトランザクションを開
始したとき、または他の基板がアドレス・バス上で当該
ラインに対するReadToOwnまたはWriteStreamトランザク
ションを開始したときである。
【0163】同様に、基板は、それがアドレス・バス上
でReadToShareまたはReadToShareAlwaysトランザクショ
ンを開始した時点から、Shared信号をアサートする目的
のために、ラインを有すると言われる。基板は、ライン
がキャッシュにおいて置き換えられる時点まで、または
他の基板が当該ラインに対してReadToOwnまたはWriteSr
eamトランザクションを開始するまで、このラインを保
持する。
【0164】各プラグイン回路基板は、多数の装置を有
することが好ましく、その装置の全てに代わって動作す
る。したがって、基板は、ラインがその装置のいずれか
1つによって共有または所有されている場合、それ自体
のトランザクションのために、Shared信号またはOwned
信号をアサートする。Mapped("M")状態信号 Mapped状態信号は、トランザクションが応答を受け取る
ことを、開始側に示すために用いられる。Mappedがアサ
ートされないと、開始側は、それが応答を受け取らない
こと、および適切なエラーを報告すべきことを知る。Ma
pped信号は、十分に長いタイム・アウトを、軽いエラー
としてではなく、致命的なハードウエア・エラーとして
対処可能とすることが好ましい。Mapped信号は、関連す
るアドレス・バス・パケット(第6図参照)の最初のサ
イクルの6サイクル後に駆動される。第6表によって記
されるように、Mappedは、データIDバス上に多重化され
ている。
【0165】キャッシュ可能な空間に対する全てのトラ
ンザクション(即ち、RTS,RTSA,RTSF,RTO,RS,WB,WS)に
対して、Mappedは、対応するメモリ・ラインがその時点
においてキャッシュによって所有されていても、そのメ
モリ・ラインを有する基板によってアサートされる。割
り込みトランザクションについては、割り込みの宛先が
その時点において当該割り込みを受け入れることができ
なくても、割り込みの宛先(あるとすれば)がMappedを
アサートする。キャッシュ不可能なリードおよびライト
・トランザクションでは、基板が当該トランザクション
に対する応答側である場合、その基板がMappedをアサー
トする。Mappedは、好ましくは、Adminパケットに対し
てはアサートされない。Ignore("I")状態信号 第1図のグローバル・ネットワーク・インターフェース
・ユニット15内に示す無視機構17および記憶装置1
9について、これより、オムニバス・システム20”全
体におけるアドレス・トランザクション・パケットの最
適な再順序付けに関して説明する。即ち、第1図に示す
ように、グローバル・ネットワーク・インターフェース
15は、システム10全体を構成する種々のコンピュー
タ・サブシステムと関連するバス・システム20,2
0’を結合し、オムニバス・システム20”を形成す
る。インターフェース15はオムニバス・システム2
0”に結合され、バス・システム20”によって搬送さ
れようとするアドレス・バス・トランザクション全てを
監視する。任意のサブシステムに関連するいずれかの回
路基板(群)上のいずれの装置(群)からでも発する可
能性がある、種々のトランザクションは全て、好ましく
はグローバル・ネットワーク・インターフェース15に
送られ、ここで、全体的なトランザクションの順序が定
義される。次に、かかる全体的な順序は、オムニバス・
システム20”を通じて伝達され、システム10に結合
されている種々の回路基板上のアドレス・コントローラ
に戻される。無視機構の機能に関するその他の詳細は、
本願と同一日付で出願され、"METHODAND APPARATUS OPT
IMIZING GLOBAL DATA REPLIES IN A COMPUTER SYSTEM"
と題し、本願と同一譲受人に譲渡された、同時係属中の
米国特許出願第08/ 号においても見出すことができ
る。
【0166】先に引用した同時係属中の特許出願におい
て更に記載されているように、トランザクションの全体
的な再順序付けは、Ignore信号の使用の結果得られるも
のである。本発明は、あらゆる単一のトランザクション
の再順序付けを行うのは不要であることが好ましいこと
を認める。したがって、IGNORE信号は、再順序付けを行
わなければならないアドレス・バス・トランザクション
が感知された場合はいつでも、グローバル・ネットワー
ク・インターフェース機構15内において、オムニバス
・システム20”に対して発行される。かかる再順序付
けの可能性のあるトランザクションの典型的な候補は、
格納されているデータがメモリ内で有効でないアドレス
位置からのデータをCPUが要求する場合であろう。か
かるトランザクションを別の方法で行わせると、異なる
バージョンのデータが発生し(promulgate)、システム1
0の障害に至る。グローバル・ネットワーク・インター
フェース・ユニット15内では、動的に維持されている
テーブル19が、システム10を構成する種々の回路基
板間に分散されているメモリ内の全キャッシュ・ライン
を含んでいる。分散型メモリ・システムにおける各キャ
ッシュ・ラインに対して、グローバル・ネットワーク・
インターフェース・ユニット15は、関連する状態を2
ビットで保持しており、4つの状態、即ち、INVALID,SH
ARED,OWNER,またはMODIFIERを定義する。オムニバス2
0”内では、種々の状態信号100が、アドレス・バス
・パケットによってアドレスされたラインの状態を示
し、第10表に示すように、これら4つの状態信号を供
給する。
【0167】Ignore信号は、論理的にアドレス・バス・
トランザクションの再順序付けを行い、分散型共有メモ
リを実施する際に用いることができる。Ignoreは、分散
型共有メモリを実施する基板が、Ignoreをアサートした
トランザクションの前に、異なるトランザクションを挿
入することを可能とし、次いで当該トランザクションを
再発行することを可能にする。Ignore信号は、第2表に
示すように、アドレス・バスのピンに多重化されてお
り、最初のアドレス・サイクルから5サイクル後に有効
となる(第6図参照)。Ignoreがアサートされると、ア
ドレス・パケットは、Ignoreをアサートした装置以外の
全装置によって無視される。Ignoreをアサートした装置
は、後に同じトランザクションIDを用いて同じ(また
は同等の)トランザクションを再発行しなければならな
い。好適実施例では、Ignoreはコヒーレント・トランザ
クションおよび割り込みに対してのみアサートすること
ができ、IOリード、IOライト、またはadminパケッ
トに対してはアサートすることができない。
【0168】CPUが無効状態にあるキャッシュ・ライ
ンを要求した場合、例えば、メモリ内において有効でな
いデータを探す場合、無視機構はオムニバス20内のST
ATEラインを通じてIGNORE信号を発行する。グローバル
・ネットワーク・インターフェース内の状態テーブルに
記憶されている種々のSTATE信号は、種々の回路基板内
のDTAG RAMユニット220と全く同一の状態を有す
る。システム10の分散型メモリ内の特定位置に格納さ
れているデータが無効となることはあり得るので、当該
キャッシュ・ラインに関連するSTATE信号は無効とな
り、したがってIGNORE信号がアサートされる。
【0169】IGNORE信号がアサートされた場合、実際の
効果は、オムニバスに結合されている全てのアドレス・
コントローラ180が、対象のトランザクションが発生
しなかったかのように機能することである。対象のメモ
リ・アドレス(所望のデータの無効バージョンが保持さ
れている)をアクセスすることはできるが、実際上の目
的のためではない。何故なら、他のメモリ位置(物理的
にどこでもよい)が所望のデータの有効なバージョンを
保持しているからである。いずれかのCPUまたはその
他の装置が、無効状態に関連するキャッシュ・ラインに
アクセスしようとする場合、関連するメモリTAG(即
ち"MTAG")が示すように、グローバル・ネットワーク・
インターフェースはIGNORE信号をアサートさせる。
【0170】第6図に関して先に記したように、状態信
号IGNOREおよびSHARE"(I,S)"は、トランザクションが要
求元のCPU装置を内蔵するサブシステムに結合された
関連するアドレス・バスを駆動してから5サイクル後
の、共通タイミングにおいてアサートされる。したがっ
て、好適実施例では、IGNORE信号がアサートされる前
に、5サイクルのレイテンシがある。興味深いことに、
要求元装置を内蔵している回路基板に関連するアドレス
・コントローラ180は、オムニバス上において、それ
が要求したトランザクションを見ようともしない。その
理由は、各アドレス・コントローラ内に、コヒーレント
入力キュー182("CIQ")、およびバッファ・キュー
184があるからである。各アドレス・コントローラは
それに関連するCIQに、関心のある全てのコヒーレント
・トランザクション、例えば、それ自体のトランザクシ
ョンをロードする。
【0171】好適実施例では、アサートされたIGNORE信
号は、全てのアドレス・コントローラに、IGNOREのフラ
グが立ったトランザクションを、各アドレス・コントロ
ーラのコヒーレント入力キューに追加するのを禁止す
る。したがって、要求元の装置に関連するアドレス・コ
ントローラでさえも、IGNOREのフラグが立ったトランザ
クションを、それ自体のコヒーレント入力キューにロー
ドすることはできない。実際の効果は、IGNOREのフラグ
が立ったトランザクションは、オムニバス・システム上
ではアサート状態にはならず、したがって時間的即ちタ
イミングの意味において、トランザクションはまだ発生
していないことになる。トランザクションは、IGNORE信
号をアサートした装置によって、再発行される。
【0172】したがって、第6図において、タイム・ス
ロット0は、有効なアドレス要求の最初の発行を表すこ
とができる。あるいは、タイム・スロット0は、同じ要
求を後に再発行することを表すことができる。この要求
の最初の発行は、関連するアドレス・コントローラ内の
対応するコヒーレント入力キューにトランザクションを
ロードするのを禁止するIGNORE信号によって禁止された
ものである。
【0173】個々のアドレス・コントローラは、オムニ
バス上に現れるトランザクションに関連するsourceIDか
ら、所与のトランザクションが当該アドレス・コントロ
ーラ、例えば、このアドレス・コントローラが存在する
回路基板に関連する装置に関連するか否かについて、学
習することができる。更に、アドレス・コントローラ
は、オムニバスから、対象のトランザクションに対する
キャッシュ・ラインが異常状態にあるか否かについて、
例えば、他の装置があるキャッシュ・ラインを要求し、
そのキャッシュ・ラインに対して当該アドレス・コント
ローラが変更コピーを保持しているかどうかを学習する
ことができる。好適に使用されるステータス信号 好適実施例は、ECCValid,DCESelおよびDataCanel/Error
という3つのステータス信号を与える。これらの信号
は、対応するデータ・バス・パケットの最初のデータ・
サイクルの2サイクル前に、1サイクルの間駆動され
る。3つのステータス信号は全て、第6表に示したデー
タIDバス上に多重化される。
【0174】ECCValidステータス信号は、データ・バス
・パケット内のECCフィールドが有効であり、ECCを
発生することができない装置の使用を許可するか否かを
示す。ECCValidは、キャッシュされない動作および割り
込みに対してのみ意味を持ち、キャッシュ可能なトラン
ザクションに対しては意味を持たない。好適実施例で
は、メモリはどのデータが有効なECCを有するのかを追
跡しないので、全てのキャッシュ可能なトランザクショ
ンは有効なECCを有さなければならない。
【0175】DCESelステータス信号は、Data-Cancel/Er
rorをDataCancelとして扱うべきかまたはErrorとして扱
うべきかを、以下の第11表に記載するように示す。
【0176】
【表11】
【0177】DataCancelは、DataBusパケットを取り消
す際に用いられる。しかし、そうしても、データ・バス
・パケットを取り消すのみであり、トランザクションを
取り消す訳ではない。この手順は、データ・バス・パケ
ットが無効の場合、または「押し出された」ライト型動
作がデータを受け入れられない場合に用いられる。これ
ら2つのエラー・コーディングは、装置が2つのエラー
・タイプ間の区別を行うことができ、UPA相互接続アー
キテクチャに適合するという利点がある。
【0178】より具体的には、無効なデータ・バス・パ
ケットは、Owned信号が有効になる前にメモリがその応
答を開始した場合に、キャッシュ内に所有されているラ
インに対するリード・トランザクションの結果、発生す
る可能性がある。この状態は、例えば、メモリのレイテ
ンシを減少させる試みにおいて発生することがある。
【0179】あるいは、ライト型動作が開始側によって
「押し出された」場合、宛先はデータを受け入れること
ができない。すると、宛先はデータ・バス・パケットを
取り消し、データを「引き込む」責務を負う。即ち、Wr
iteStream,WriteIOおよびWriteBlock IO動作に関して後
に説明する手順を行う。好適実施例において用いられるパリティ信号 好ましくは、システム30は2つのパリティ信号、Pari
tyAおよびParityDを用いて、状態、ステータス、DataI
D、および調停信号を保護する。双方のパリティ・ビッ
トは偶数パリティをエンコードする。
【0180】ParityAは、「アドレス・サイクル」、例
えば、アドレス・バス調停が駆動されている間のサイク
ルの間に駆動される信号群を保護するために用いられ
る。これらの信号群は、アドレス・バス内の予約ビッ
ト、データIDバス上で多重化されているOwned,Mapped,E
CCValid,DCESelおよびDataCancel/Error信号、ならびに
調停信号を含む。
【0181】ParityDは、「データ・サイクル」、例え
ば、データ・バス調停が駆動されているサイクルの間に
駆動される信号群を保護する。これらの信号群は、おお
まかに(untidy)、DataID,Ignore信号、共有ライン、お
よび調停を含む。これらは双方のサイクルで駆動される
ので、調停信号は両方のパリティ・フィールドによって
保護されることは認められよう。ParityAおよびParityD
は、双方ともデータIDバス上に多重化され、多くとも1
つの基板によって駆動され、ソフトウエアがパリティを
駆動する基板を選択する。
【0182】第5図は、ParityAおよびParityDに対する
信号タイミングを示す。図示のように、ParityDは、そ
れが保護する信号から1サイクル遅れている。何故な
ら、ParityDはParityAと同じサイクルで駆動されるから
である。システム30と共に使用可能なコンフィギュレ
ーション信号には、クロック、JTAG、およびその他の実
施態様に依存する信号が含まれる。ReadToShareトランザクション・タイミング 第6図は、ホームが基板2(例えば、50−2)内にあ
る、アドレスAに対する基板1(例えば、第1回路基板
(第1図の50−1))によって開始されたReadToShar
eトランザクションについての、信号タイミング関係を
示す。第6図および第7図では、付番した実線矢印によ
って固定のタイミング関係が表され、破線矢印によって
原因となる可変タイミングの因果関係が示されている。
先に注記したように、"A"および"D"はマスタ・クロック
信号のアドレス・サイクル部分およびデータ・サイクル
部分を表す。
【0183】第6図の例は、リード型トランザクション
に対するこれらの関係について、最も速い(例えば、最
少の)タイミング値を示す。ライト型動作では、開始側
がデータ・バスに対する調停も行う。したがって、ライ
ト型動作では、データ・バス・パケットに対する最も速
いタイミングは、2サイクル早い。
【0184】(1)第6図の例において、基板1は、ア
ドレス・バスに対する速い調停を利用し、サイクル0に
おいて、2つのアドレス・バス・サイクルの内最初のサ
イクルおよびその調停ラインを駆動する。アドレス・バ
ス・パケットにはSourceID i(次のサイクルで駆動され
る)が添付されている。多数の基板が同時にアドレス・
バスおよび調停バスを駆動している場合、アドレス・バ
スはこれらのサイクルの間無視される。調停ウイナが決
定され、第7図に示すように、サイクル2において、ウ
イナが代わりにアドレス・バスを駆動する。
【0185】(2)アドレス・サイクルがアドレス・バ
ス上に現れてから5サイクル後に、全ての基板が、Shar
ed信号およびIgnore信号に対する適切な値をアサートす
る。これらは、第6図および第7図において、"S,I"と
一括して示されている。
【0186】(3)Shared信号から1サイクル後、即
ち、最初のアドレス・バス・サイクルから6サイクル後
に、基板はOwned信号に対する適切な値をアサートする
(第6図参照)。
【0187】(4)基板2は、アドレスAに対してホー
ムであるために、アドレスをデコードし、サイクル3に
おいて、データ・バスに対する調停要求を行う。これが
調停を勝ち取った場合、2サイクル後にSourceID iを用
いてデータIDバスを駆動する。
【0188】(5)データIDバスを駆動してから3サイ
クル後に、基板2がステータス信号を駆動する。例え
ば、ホーム(基板2)がデータ・バスにメモリ・レイテ
ンシを減少させるように要求した場合、DataCancelが必
要となる場合がある。かかる要求を行う際、ホームは、
それがデータを供給すると想定し、実際には他の基板が
オーナである場合、ホームはその要求を取り消す。
【0189】(6)ステータス信号を駆動してから2サ
イクル後に、基板2はデータ・バス上の2データ・サイ
クル(d0,d1)の内最初のサイクルを駆動する。調停タイミング 第6図および第7図は、高速モードの調停を示し、第7
図においてハッチングを施したアドレス・バス・サイク
ルは基板4との衝突を表す。この例では、基板1が調停
を勝ち取って、サイクル2において再びアドレス・バス
を駆動する。基板4は、サイクル2において再びアドレ
ス・バスに対する調停を行い、サイクル4において再び
アドレス・バスを駆動する。基板4によって開始される
以降のトランザクションは、第6図において陰影を付け
たブロックで示されている。データ転送およびトランザクションID管理 データ転送は、リード型またはライト型のいずれかであ
る。リード型転送は、応答側から開始側へのデータ転送
を伴い、一方ライト型転送は、開始側から応答側へのデ
ータ転送を伴う。リード型データ転送 リード型データ転送は応答側を伴うが、応答側とはメモ
リまたは装置が考えられる。キャッシュ可能な転送で
は、メモリはDataIDを発行することによって不確実にデ
ータ・パケットを開始するが、最終的にはDataCancelを
アサートすることによってこのデータ・パケットを取り
消す場合がある(ステータス信号、ならびに第7表およ
び第10表に関する先の説明を参照のこと)。不確実な
開始およびその後の取り消しは、キャッシュ可能なリー
ド要求がメモリから満足される一般的な場合に、レイテ
ンシを最少に抑えることができる。取り消しは様々な理
由から起こり得るが、アドレス・パケットに対するIgno
reまたはOwnedのアサート、アドレス・パケットがRTOで
あったこと、および開始側がSharedをアサートしたこと
(この場合、開始側は何の応答も期待しない)が含まれ
る。
【0190】メモリがデータ・パケットを取り消さなけ
ればならない場合、そのトランザクションに対する最初
のアドレス・バス・サイクルから11サイクル以内に、
当該パケットに対してDataIDを発行する(以下で、トラ
ンザクションIDに対する規則の下で説明する)。応答
側がメモリ以外の装置である場合、データ・パケットは
取り消されない。ライト型データ転送 ライト型データ転送では、最初に開始側によるデータの
「押し出し」がある。例えば、開始側はデータ・バスに
対する調停を行い、データを応答側に駆動する。ステー
タス信号に関して先に説明したように、応答側がデータ
を受け入れる用意ができていない場合、応答側はDataCa
ncelをアサートして、データ・バス・パケットを取り消
す。次に、応答側はデータを「引き込む」責務を得て、
それが取り消したデータ・バス・パケットのライト型ト
ランザクションを追跡する。応答側がデータを受け入れ
る用意ができた場合、データ・バスに対する調停を行
い、データを供給する用意ができているはずの開始側か
らデータを得る。ライト型トランザクションに対してIg
noreがアサートされた場合、データ・パケットを発行し
てはならない。
【0191】あるいは、適切な対応が装置のインターフ
ェース・プロトコルから提供された場合、ライト型トラ
ンザクションに対するプロトコルを簡略化することがで
きる。例えば、装置からライト・データを得るための機
構が、ライト動作の完了を確認する機構とは異なる場
合、ライトの宛先にデータを「引き込ませる」ことがで
きる。その場合、「押し出し」に続いて「引き込み」を
指定する必要はない。しかしながら、UPAプロトコル
は、装置からライト・データを得ると共に、ライトの完
了を知らせるように機能する、共通のS_REPLYを可能に
することが好ましい。
【0192】トランザクションIDに対する規則につい
て、これより説明する。各基板は7つの一意的なトラン
ザクションIDを有する。トランザクションIDが一意
的にトランザクションを識別することを保証するため
に、基板は以下の規則に従わなければならない。一意のIDを維持するための基板規則 (1)あるトランザクションに対する応答のDataIDは、
対応するアドレス・バス・パケットの最初のサイクルか
ら3番目のサイクルより早く発生してはならない。
【0193】(2)Ignoreがアサートされたライト型ト
ランザクションでは、データ・パケットを発行してはな
らない。しかしながら、この規則は、Ignoreがアサート
されるシステム(例えば、分散型共有メモリ、即ちDSM
システム)についてのみ関係する。好適実施例では、モ
ード・ビットを用いて、Ignoreの値がわかるまで、ライ
ト型動作に対してデータ・パケットを発行するのを禁止
する。
【0194】(3)開始側がOwnedをアサートしたWrite
BackトランザクションおよびIgnoreがアサートされない
WriteBackトランザクションについては、開始側がデー
タ・バス・パケットを送る。ホーム基板は、パケットを
受け入れるか、あるいはDataCancelをアサートする。Da
taCancelをアサートした場合、ホーム基板は他のデータ
・パケットを用いてデータを「引き込む」。いずれの場
合でも、ホーム位置はメモリにライトを行わず、単にデ
ータを破棄するだけである。
【0195】(4)Sharedがアサートされた割り込みト
ランザクション、およびIgnoreがアサートされない割り
込みトランザクションについては、開始側がデータ・パ
ケットを送ることができる。開始側がデータ・パケット
を送る場合、応答側はデータを破棄することができる
が、DataCancelをアサートしてはならない。
【0196】(5)トランザクションIDは、応答が取
り消されなかった場合、以前のトランザクションに対す
る応答のDataCancelタイム・スロットから2サイクル後
に開始する新しいトランザクションに対して、再使用す
ることも可能である。
【0197】トランザクションによっては、開始側がも
はや有効な応答を期待していないかもしれないが、なお
応答側はデータ・パケットを発行することができ、後に
このデータ・パケットを取り消すという場合があり得
る。開始側は応答を期待していないので、開始側は、同
じトランザクションIDを用いて新しいトランザクショ
ンを開始する潜在的な可能性がある。例えば、開始側が
SharedをアサートしたReadToOwnトランザクションは、
有効な応答を必要としない。更に別の例として、基板が
Ownedをアサートし、データで応答したメモリ・リード
動作では、メモリからの応答は要求されない。取り消された応答を誤解しないための基板規則 最初のトランザクションに対して取り消された応答を、
同じトランザクションIDを有する以後のトランザクシ
ョンに対する応答と間違えるのを避けるために、基板は
次の2つの規則を遵守しなければならない。(以下の規
則は、後の取り消された応答の可能性がないトランザク
ションIDには適用されない。) (6)取り消された応答があり得るリード型トランザク
ションに対するIDは、元のトランザクションの最初の
アドレス・バス・サイクルの後14サイクルまでは再使
用してはならない。別の言い方をすれば、IDが使用で
きない元のアドレス・バス・パケットの後に、6つのア
ドレス・バス・パケット・スロットがある。
【0198】(7)基板は、対応するアドレス・バス・
パケットの最初のサイクルから11番目のサイクル以降
に取り消すあらゆるトランザクションに対するIDを用
いて、データIDバス上で応答してはならない。基板が応
答を禁止することができない場合、元のトランザクショ
ンのトランザクションIDではなく、アイドルのDataID
コードを用いなければならない。トランザクションの順序 順序およびフロー制御に関して、アドレス・バスは単一
の全体的な順序を提供し、種々の実施例はそれを用いて
それらの特定のメモリ・モデルが実施可能であることが
好ましい。したがって、実施態様特定の順序は変更が可
能である。以下で述べるように、システム30は、UPA
によって指定された装置と共に用いることができる。キャッシュ・コヒーレンス これよりキャッシュ・コヒーレンスについて説明する。
好適実施例と共に用いるプロトコルは、基板が無効化に
基づくキャッシュ・コヒーレンス・プロトコルおよび所
有権に基づくキャッシュ・コヒーレンス・プロトコルを
用いて、ライトバック・キャッシュを実施することを許
可する。
【0199】かかるプロトコルを用いて、所有権をある
基板から別の基板に移転する際、正しい動作を保証する
ことが困難な場合があることは理解されよう。別のプロ
トコルでは、所有権がデータと共に(即ち、応答と共
に)移転されるものもあるが、正しいオーナは常に、要
求に応答することを期待されている。適切な応答を保証
することは、実際のデータ転送の小さな枠(Window)内に
要求がくる場合に、困難となり得る。
【0200】システム30は、あるラインに対して、オ
ーナとライタとの間で区別を行うことによってこの困難
を克服する。基板は、ReadToOwnアドレス・バス・パケ
ットを用いて所有権を要求するとすぐに、オーナとな
る。一方、ライタとは、ダーティの場合もあるが、ライ
ンに対するデータを実際に有する基板のことである。ラ
インが共有されるのでなければ、ライタはラインに書き
込むことができる。
【0201】著作(authorship)(例えば、ライト)は、
基板から基板に所有権に追従する。これによって、書き
込む順序が、アドレス・バス上のReadToOwnトランザク
ションの全体的な順序と同一であることを保証する。所
有権は、ReadToOwnの開始に伴って、他の基板に移転さ
れ、基板自体のWriteBackの開始によって、ラインのホ
ームに対して放棄される。また、所有権は、他の基板が
WriteStreamトランザクションを開始したときにも放棄
される。著作は、実際のデータを搬送する応答と共に、
移転または放棄される。実際には、基板があるラインに
対するオーナである時間期間は、当該基板がそのライン
に対するライタである時間期間と重複する必要はない。
【0202】オーナは、それが実際にデータを受け取る
前であっても、ラインに対する他の要求を受けることが
できる。オーナは、かかる要求全てを追跡し続け、最終
的に、ライタとなった後に、全ての応答に順番に応答す
ることを要求される。
【0203】好ましくは、上述のシステム30に対し
て、以下の条件(assertion)が真であることが必要であ
る。 (1)常にあるラインに対するオーナは多くとも1つで
ある。
【0204】(2)常にあるラインに対するライタは多
くとも1つである。 (3)基板はラインのライタとなることができる前に、
当該ラインのオーナとなる。
【0205】(4)あるラインに対するライタがない場
合、このラインはそのホーム・メモリにおいて更新す
る。 (5)あるラインに対する所有権が基板から基板に移転
する順序は、著作が基板から基板に移転する順序と同一
である。無効化 次に無効化について説明する。ReadToOwnアドレス・バ
ス・パケットは、開始側以外の全基板に、それらのキャ
ッシュ・ラインのコピーを無効化するように要求する。
対照的に、別の従来技術の無効化プロトコルによれば、
無効化は、全ての基板がそれらの無効化完了を確認する
までは、完了とは見なされない。しかしながら、かかる
プロトコルは、本発明を容易に実施できるシステムのよ
うな、大型システム上で効率的に実施するのは困難であ
る。
【0206】システム30が好適に実施された場合、応
答(オーナから、またはオーナがいない場合はホームか
ら)は、他の基板からの確認を待たずに、トランザクシ
ョンを完了する。しかしながら、ラインを有する全ての
基板内において、無効は待ち行列をなしている。基板か
らの全てのコヒーレントなバス・トランザクションは、
キューから順に完了させていくので、無効化は、あらゆ
る後続のコヒーレント・トランザクションの前に完了す
る。
【0207】所有権と同様に、ラインは、応答データ・
バス・パケットではなく、ReadToShareアドレス・バス
・パケットまたはReadToShareAlwaysアドレス・バス・
パケットによって共有されることになる。
【0208】次に、第3図を参照しながら、本発明の好
適実施例に対する、UPA装置を用いたキャッシュ・コヒ
ーレンスおよび順序付けについて説明する。UPA仕様は
当業者には公知であるので、ここでは説明しない。好適
実施例では、システム30はUPAインターフェースに準
拠した装置に対応するが、「UPA相互接続アーキテクチ
ャ」とはいくらか異なる。したがって、UPA相互接続ア
ーキテクチャ仕様(例えば、全体として特定システムの
実施態様に対する仕様)と、いずれかの将来の「UPAイ
ンターフェース」仕様(例えば、UPA装置とシステムと
の間のインターフェースについての仕様)との間の相違
を認めるべきである。「UPA相互接続アーキテクチャ」
はそれ自体、ここでは好適であるような大型システム1
0の効率的な実施を可能にする場合に、不当に制限的と
なる可能性がある。このような不当な制限は、種々のイ
ンデックスおよびアドレスを禁止する規則だけでなく、
無効化の原因となったトランザクションを確認する前に
全ての装置からの無効化に対する確認を待つことを含
む。
【0209】UPA仕様では、無効化の原因となったトラ
ンザクションを確認する前に、全ての装置からの無効化
に対する確認を待つことは比較的単純である。小型シス
テムでは、システム・コントローラ("SC")が好ましく
は単一チップであり、システム内の各UPAポートに対し
て二点間リンクを有するので、複雑性は回避されるが、
システムが大型化するに伴って、効率的に行うことが困
難になる。インターフェース30では、しかしながら、
アドレス・コントローラ180は、無効化に対する確認
を待たないが、例えば、Sun MicrosystemsのSunSメモリ
・モデルを含む、公知のメモリ・モデルは、それでも実
施されている。種々のインデックスおよびアドレス禁止
規則に関しては、UPA仕様SCは単一の集中エンティテ
ィであるので、インデックスおよびアドレスの禁止は、
小型システムでは簡単なものとすることができる。(単
一チップSCが実用的でない大型システムでは、実施は
より困難になる。)先に注記したように、インターフェ
ース30は、インデックスまたはアドレスの禁止を実施
せず、必要ともしない。
【0210】インターフェース30は、更に、「UPA相
互接続アーキテクチャ」に不必要に指定されている他の
態様も簡略化する。例えば、O,S,およびI状態のみ
を有する単純な三状態Dtagsプロトコルを採用する。こ
のプロトコルは、UPAが指定するMOSI Dtagプロトコルと
同等のあらゆる実用的な目的に対応する。また、インタ
ーフェース30は、全てのReadToShareトランザクショ
ンをReadToShareAlwaysトランザクションとして扱うこ
とにより、MOESI EtagsプロトコルをMOSIプロトコルに
変更可能なモードも許可する。UPA装置トランザクションの順序付け アドレス・バスは、全トランザクションの単一の全体的
な順序を確立する点、即ち、いわゆる「全体可視点」(p
oint of global visibility)を確立することができる。
かかる単一の全体的順序は、第3図に示したキューを用
いてSun Microsystemsのメモリ順序のようなメモリ順序
の実施を可能にすることが好ましい。これらのキュー
は、メモリのためではなく、UPA装置(例えば、CP
U)のみのためのものである。
【0211】システム30では、全ての装置要求("P_R
EQ")は、第3図において要求出力キュー("ROQ")17
6によって表されているように、アドレス・バス60に
順番に発行される。装置に関連するコヒーレントな要求
および割り込み(外部のコヒーレントな要求およびそれ
自体のコヒーレントな要求を含む)は全て、DTAGRAM
220からのDtagsによって「フィルタ処理」された
後、コヒーレント入力キュー("CIQ")182に入力さ
れる。第3図に示すように、装置PIO要求は全て、ロ
ーカルPIOキュー("LIOPQ")183に入力され、装
置に対する外部PIO要求は全て、外部PIOキュ
ー("FPIOQ")184に入力される。通常、これらのキ
ューの各々からのトランザクションは、キューの先頭か
ら順番に処理される。1つの例外は、装置からのWriteB
ackであり、このために特殊な最適化が実施される。Wri
teBackおよびビクティム化(victimization)(Dvictおよ
びVbufferブロックの機能を含む)については更に説明
する。
【0212】加えて、第3図に示すように、装置P_REQ
は、UPAクラスに応じて、2つのキューCOQ174および
CIQ175に配置される。キューCOQおよびCIQは、UPA仕
様が要求するように、各クラスに対するP_REQの順序に
したがって、S_REPLYの順序を維持するように機能す
る。
【0213】装置160−Nに向かうデータおよびこれ
から出ていくデータは、第3図に示すように、2つのバ
ッファ(例えば、キューではなく、真のバッファ)、デ
ータ出力バッファ("DOB")186およびデータ入力バ
ッファ("DIB")187にバッファされる。データは、ア
ドレス・バス・パケットと同じ順序で送ったり、受け取
ったりする必要はなく、データ・バス・パケットの順序
はメモリの順序とは関係がない。コヒーレント・トランザクションの順序付け 次に、コヒーレント・トランザクションの順序付けにつ
いて説明する。全てのコヒーレント・トランザクション
は、UPAクラスとは独立に、それらがアドレス・バスに
現れるのと同じ順序に並べられる。第2図および第3図
に示すように、トランザクションは、コヒーレント入力
キュー("CIQ")182の先頭から順番に処理される。
種々のコヒーレント・トランザクションについて、これ
より個々に説明する。
【0214】ローカルなReadToShare、ReadToShareAlwa
ys、およびReadStreamトランザクションに関して、アド
レス・コントローラ180は、これらのトランザクショ
ンに対するデータが到達するのを待ち、次いで、S_REPL
Yを装置に発行し、それにデータが続く。
【0215】外部ReadToShare、ReadToShareAlways、お
よびReadStreamは、アドレス・コントローラがOwnedラ
インをアサートしたトランザクションであり、したがっ
てデータを与える。尚、装置はUPA上にP_WB_REQを以前
に発行した可能性があることを注記しておく。この場合
およびSYSIO(CopyBack S_REQを全く受け入れることが
できない)の場合については、以下で別個に説明する。
アドレス・コントローラ180は、適切なCopyBack S_R
EQを装置に発行し(ReadToShareおよびReadToShareAlwa
ysに対してはS_CPB_REQ、ReadStreamに対してはS_CPD_R
EQ)、P_SACKまたはP_SACKD P_REPLYを待ち、S_CRAB S_
REPLYを発行し、データをDOBにロードする。この際、ト
ランザクションをコヒーレント入力キュー182から除
去することができる。好ましくは分散型総当たりARBユ
ニット186を用いて、アドレス・コントローラ180
はデータ・バスに対する調停を行い、その後データを転
送する。しかしながら、別の調停方式を用いてもよい。
【0216】ローカルなReadToOwnトランザクションは
2つの場合を考慮しなければならない。一方の場合は、
装置が有効なデータのコピーを有しておらず、上述の他
の局所的なリードのように扱われる場合である。アドレ
ス・コントローラ180はデータ入力バッファ("DI
B")187にデータが得られるのを待ち、S_RBU REPWを
発行し、次いでデータを供給する。第2の場合では、装
置は有効なデータのコピーを有する。ここでは、アドレ
ス・コントローラ180は、データを待たずに、S_OAK
S_REPLYを装置に発行する。アドレス・コントローラはS
haredをアサートしたので、当該データを所有するメモ
リもその他のキャッシュも、データで応答しない。
【0217】外部ReadToOwnトランザクションも、考慮
すべき2つの場合を提示する。第1の場合では、装置は
オーナではなく、又は開始側がShared信号をアサートし
て、それが既にデータを有していることを示す。アドレ
ス・コントローラ180は、S_INV_REQを装置に対して
発行し、P_REPLYを待ち、データは転送されない。第2
の場合では、装置はオーナであり、開始側はそのSharea
d信号をアサートしない。この時点で、アドレス・コン
トローラ180はP_CPI_REQを装置160−Nに発行
し、P_REPLYを待ち、S_CRAB S_REPLYを発行し、データ
をデータ出力バッファ("DOB")186にロードする。
この際、トランザクションをキューから除去することが
できる。好ましくは、アドレス・コントローラ180内
のARBユニット186を用いて、データ・バスに対する
調停を行い、その後データを開始側に転送する。(ARB
ユニット186は高速であるが、その低いレイテンシ
は、好適実施例におけるアドレス・バスの調停に対する
程、データ・バスの調停に対しては重要ではない。)ロ
ーカルWriteStreamトランザクションは、考慮すべき2
つの場合を提示する。第1の場合では、装置においてラ
インが有効である。アドレス・コントローラはまず、S_
INV_REQを発生して装置内のラインを無効化し、P_SACK/
P_SACKDを待ち、次いでS_WABを発行してデータを得る。
第2の場合では、装置においてラインが無効である。ア
ドレス・コントローラはS_WABを発行し、装置からデー
タを得ることができる。次いで、キューからトランザク
ションを除去することができ、その後実際のデータ転送
が発生する。
【0218】外部WriteStreamトランザクションに対し
て、アクセス・コントローラは、S_INV_REQを発行する
ことによって、装置内のラインを無効化し、P_SACK/P_S
ACKDを待つ。そして、CIQからトランザクションを除去
することができる。
【0219】ローカルな割り込みトランザクションに関
して、割り込みの宛先がこの割り込みを受け入れること
ができない場合、Shared信号をアサートする。この場
合、ACはS_INACKを装置に発行する。その他の場合、ア
ドレス・コントローラは、S_WABを発行し、割り込みデ
ータをDOBにロードし、続いて宛先に転送する。好適な
実施態様では、装置はそれ自体に割り込みを送ってはな
らない。かかる割り込みが送られた場合、システムのタ
イムアウトおよびリセットが続いて発生する。
【0220】外部割り込みトランザクションに関して、
アドレス・コントローラが割り込みに対してSharedライ
ンをアサートした場合、このトランザクションを破棄す
ることができる。その他の場合、アドレス・コントロー
ラはデータを待ち、P_INT_REQを装置に発行し、S_WIB S
_REPLYを発行し、データを転送する。この際、トランザ
クションをキューから除去する。装置は、かなり後にP_
IAKを発行することができ(おそらくは、ソフトウエア
による何らかの動作を通じて)、アドレス・コントロー
ラは、P_IAKを待っている間、他のトランザクションを
遅らせてはならない(stall)。ビクティム化およびローカル・ライトバック・トランザ
クション 次に、ビクティム化およびローカル・ライトバック・ト
ランザクションについて、第3図に関して説明する。各
UPAポートに対して、アドレス制御はダーティなビクテ
ィムをスヌープするための単一のタグ("Dvict")17
9、およびダーティなビクティムによるキャッシュ・ミ
スのパーフォーマンスを最適化するための単一のタグ付
バッファ("Vbuffer")188を有する。ビクティム化
トランザクションがUPA上に発行されると(即ち、DVPビ
ットがセットされたリード)、本発明では、対応するト
ランザクションもビクティム・ビットがセットされる。
かかるトランザクションに対して、開始側は対応するビ
クティム・タグをDtagsからDvictにコピーする。Dtags
と同様に、Dvictのスヌープが行われる。Dvict内のライ
ンに対して外部要求を行うと、その結果、適切なS_REQ
(CPB,CPI,INV)がCIQ内に並べられ、Dvictタグは、Dta
gsに対すると同様に、本発明では外部トランザクション
(RTO,WS)によって無効化される。
【0221】WriteBackは好ましくは、開始側のDtagsま
たはDvict内の一致タグ(matching tag)を無効化する。D
tagおよびDvictに対するスヌーピングによって、リード
・トランザクションをビクティム化する前またはその後
に、WriteBackのUPAによる発行が可能となる。WriteBac
kは開始側によってスヌープされるので、以前の外部ト
ランザクションが、ライトバックされているラインを無
効化した場合、WriteBackを取り消すことができる。こ
れを行うには、本発明において、WriteBackが現れたと
きに、ラインがそのDtagsまたはDvaict内に所有されて
いない場合、開始側がOwnedをアサートする。
【0222】トランザクションがクリーンなビクティム
を有する場合(例えば、DVPビットがUPA P_REQ内でセッ
トされていない)、このクリーンなビクティムに対する
タグをDvictにコピーしない。UPAポートには、リード・
トランザクションをビクティム化する前に現れた外部ト
ランザクションから得られたクリーンなビクティムに対
するS_REQが送られる。リード要求は外部トランザクシ
ョンの後にCIQに現れるので、アドレス・コントローラ
が、リードに対するS_REPLYの後に、クリーンなビクテ
ィムに対するS_REQを送出しないことが保証される。
【0223】UPAインターフェースにおいて、WriteBack
は、パーフォーマンスの考慮のために、およびS_REQを
受け入れることができない(コピーを戻すか、あるいは
無効化する)SYSIOを扱うために、他のトランザクショ
ンとはいくらか異なる扱いを受ける。
【0224】P_WB_REQと同じクラスに装置からの未決の
P_REQがない場合、アドレス・コントローラは、いずれ
かの未決のS_REQが完了するのを待ち、次いでS_WAB S_R
EPLYを装置に発行する。これは、おそらく、トランザク
ションが本発明上に現れる前である。アドレス・コント
ローラ180はデータをDOB186にバッファし、ライ
ンに対するタグをVbuffer188(第3図参照)に保持す
る。この際、オーナはアドレス・コントローラであっ
て、装置ではない。アドレス・コントローラは、S_REQ
要求を装置に発行することなく、ラインに対する全ての
外部要求に対処する。これを行うには、Vbuffer188
内のタグに対して、キューの先頭にあるコピーバック/
無効化要求をチェックし、DOB186に保持されているW
riteBackデータからデータを供給する。WriteBackトラ
ンザクションも、本発明からCIQ182に並べられる。
一旦WriteBackトランザクションがCIQ182の先頭に到
達すると、当然当該ラインに対する外部要求は全て処理
されたことになる。この時点で、トランザクションをキ
ューから除去することができ、アドレス・コントローラ
はVbuffer188を無効化することによって、「所有
権」を放棄する。
【0225】同じクラスからの未決のP_REQがある場
合、または未決のWriteBackによってVbufferが既に使用
されている場合、アドレス・コントローラは、WriteBac
kのために直ちにS_REPLYを発行することはできない。こ
の場合、WriteBackはCIQ内の他のコヒーレント・トラン
ザクションと共に列に並べられ、順番に対処される。こ
の場合はSYSIOには発生しないので、SYSIOからのWriteB
ackに対するS_REPLYは直ちに発行され、S_REOはSYSIOに
は送られない。外部WriteBackはUPA装置には無関係であ
り、CIQには入力されない。
【0226】外部コヒーレント・リードの間のパーフォ
ーマンスを最適化することに関して、Vbuffer188
は、コピーバック要求を最適化するためにも用いられ
る。実際、Vbufferが使用されていない場合、外部リー
ドに対するタグ(コピーバック要求がUPAに送られた)
はVbufferに保持され、対応するデータはDOBに保持され
る。後続の外部リードがVbufferをヒットした場合、キ
ャッシュへのコピーバック要求がなくても、これを満足
させることができる。これは、多数のプロセッサが、他
のキャッシュ内に所有されている共通のラインを要求す
る場合のパーフォーマンスを助ける。これは一般的な事
象であり、例えば、多くのプロセッサがスピンロック(s
pinlock)を待っているときに発生する場合がある。スピ
ンロックを保持しているプロセッサがそれに書き込みを
行うことによって、そのスピンロックを解放するとすぐ
に、他のプロセッサはライン上でミスし、このロックを
解放したプロセッサが所有する同じキャッシュ・ライン
に対する要求を行う。
【0227】次に、PIOトランザクションの順序付けに
ついて説明する。ローカルPIOトランザクションは、LPQ
内に置かれ、それらがキューの先頭に到達したときに処
理される。リード・トランザクションは、アドレス・コ
ントローラがS_REPLYを発行する前に、データを待つ。
ライト・トランザクションに対して、アドレス・コント
ローラはS_REPLYを発行し、データをDOBにロードする。
実際のデータ転送が行われるのは更に後である。
【0228】外部PIOトランザクションは、別個のFPQキ
ューに置かれ、それらがキューの先頭に到達したときに
処理される。外部リードは、P_NCRD_REC2またはP_NCBRD
_REQとして発行され、データは通常のP_REPLY/S_REPLY
シーケンスで得られる。いつもと同様、開始側への実際
のデータ転送は、後に行われる。多数の外部ライトが1
つの装置に対して発行される場合があり、データもS_RE
PLYによってこの装置に転送される。この際、トランザ
クションをキューから除去することができるが、アドレ
ス・コントローラは、UPAポートに対するフロー制御の
ために、P_REPLYを追跡し続ける。
【0229】UPAクラスおよびS_REPLYの順序は、各クラ
スにおけるUPA装置のP_REQに対するS_REPLYがP_REQと同
じ順序であるという、UPA装置による予想を伴ってい
る。しかし、トランザクションの順序が、クラスに基づ
いて維持されているのではなく、動作がCIQまたはLPQの
どちらに行くのかに基づいて維持されている場合、アド
レス・コントローラは、S_REPLYが適切な順序で与えら
れることを保証する機構を必要とする。C0QおよびC1Qキ
ューはこの機構を与えるものである。CIQの先頭にある
ローカル・トランザクションに対するS_REPLYは、それ
がC0QまたはC1Qでも、先頭にある場合にのみ発行するこ
とができる。その他の場合、LPQからのトランザクショ
ンには、最初にS_REPLYが発行されなければならない。
同様に、LPQの先頭にあるローカル・トランザクション
に対するS_REPLYは、それもC0QキューまたはC1Qキュー
の先頭にある場合にのみ、発行するようにしなければな
らない。その他の場合、CIQからのトランザクションに
は、S_REPLYが最初に発行されなければならない。
【0230】本発明では、UPAクラスは、例えば、デッ
ドロックの場合(以下で説明する)のように、なんら有
用な機能を提供することはなく、事実上設計を複雑化さ
せるだけである。S_REPLYに関連するP_REQは、各クラス
内でS_REPLAYの順序を決めるという要件のために、UPA
内では暗示的である。システムの確認を装置の要求と照
合する別の機構が存在するのであれば、UPAクラスを全
て排除することにより、本発明の設計を簡略化すること
ができる。
【0231】デッドロックは、同じクラスのキャッシュ
不可能なリードとキャッシュ可能なリードによって発生
する可能性がある。より具体的には、デッドロックは、
次のことが発生する場合に起こる。第1のUPA装置がま
ずキャッシュ不可能なリード要求(NCRD,NCBRD)を発行
し、次いでキャッシュ可能なリード要求(RDS,RDSA,RDO
またはRDD)を発行し、両方の要求が未決であり、キャ
ッシュ不可能なリード要求およびキャッシュ可能なリー
ド要求が同じクラス内にあり、キャッシュ不可能なリー
ド要求は第2のUPA装置上のIOバス(例えばSBus)に向
けられ、同じIOバス上のマスタが、第1のUPA装置内
に所有されている位置に、DMAキャッシュ可能なリー
ド要求を発行した。本発明では、この要求は、第1のUP
Aからのキャッシュ可能なリード要求の後に現われ、I
OバスはIOバス上のDMAキャッシュ可能なリードに対
する再試行を発行しない。
【0232】上述のデッドロックの場合、第1のUPAか
らのキャッシュ不可能なリードには、クラス順序のため
に、まずS_REPLYが発行されるが、DMA要求がIOバスを
保持しているので、データは得られない。DMA要求はキ
ャッシュ可能なリード要求の後であり、キャッシュ不可
能なリード要求に対するS_REPLYを先に与えなければな
らないので、キャッシュ可能なリード要求は完了するこ
とができない。そのため、DMA要求は完了することがで
きない。このデッドロックを回避するために、本発明に
おける基板は、同じクラスのキャッシュ不可能なリード
要求が既に未決である場合、キャッシュ可能な要求を発
行しない。(本好適実施例では、一度に許される未決の
リードは1つだけとし、この問題を解消している。) CIQトランザクションに対するフロー制御は、本発明で
は、調停バス内の単一のFlowControl信号を用いて実施
している。FlowControl信号がアサートされていれるこ
とが観察されてから2サイクル後に開始され、CIQ内に
入力される新しいトランザクションは開始されない。
【0233】フロー制御機構が必要なのは、装置内のCI
Qが禁止される可能性がある(例えば、装置によって発
行されたリード要求に対する応答を待っている)からで
ある。この時間中、他の装置からのアドレス・バス・パ
ケットがCIQを埋め尽くす可能性がある。好適実施例で
は、基板当たり7つの未決トランザクションIDによ
り、未決トランザクションの全数を112に限定してい
るが、CIQ内のパケットは、既に「完了」しているトラ
ンザクションからの場合もあるので、開始側および応答
側の視点からは、もはや「未決」ではないことを注記し
ておく。これらの例は、装置内で無効化されるデータに
対するReadToOwnまたはWriteStreamパケットである。開
始側および応答側のいずれも、他の全基板において実際
の無効化が競合するのを待つ必要はない。
【0234】デッドロックを防止するためには、FlowCo
ntrolがアサートされたあらゆるキューが、最終的に禁
止されないことを保証しなければならない。このため
に、ある装置に対するIO空間の要求は、それより早い
装置からのDMA要求によって禁止される可能性があるの
で、FlowControlはFPQの代わりにアサートされない。Fl
owControlがアサートされ、DMA要求に対するトランザク
ションが未だ開始されていない場合、トランザクション
が開始されず、デッドロックが発生する。結果的に、Fl
owControlは、FPQの代わりではなく、CIQの代わりにア
サートすることが好ましい。したがって、FPQは、全て
の装置からの未決のIO空間アクセスの最大数を収容可
能とするように十分な大きさでなければならない。
【0235】LPQに対するフロー制御は、ここではいず
れか1つの装置からの未決要求の数がトランザクション
IDによって7つに限定されているので、好適実施例で
は不要である。
【0236】次に、割り込みに対するフロー制御につい
て説明する。ある装置に配信される割り込みに対するP_
IAKは、大幅に遅れる場合がある。したがって、後続の
割り込みはこのままでは装置に配信することができない
ので、割り込みが他のトランザクションまたは装置を止
めてしまう事態を防止するための機構を設けなければな
らない。好適実施例では、各アドレス・コントローラ
は、そのUPAポートの各々に発行された未決の割り込み
の数のためにカウンタを有している。この数が、装置が
受け入れ可能な割り込み数と等しくなった場合、アドレ
ス・コントローラは、後続の割り込み全てに対してShar
ed信号をアサートし、送出側が再度試さなければならな
いことを示す。カウンタは、割り込みを受け入れる毎に
増分し、P_IAKを受け取る毎に減少する。尚、CIQは、P_
IAKを待って停止してはならないことを注記しておく。
【0237】本発明は、多数の未決トランザクション間
の多くの重複に対処することができる。好適実施例で
は、各UPAポートは8つまでの未決トランザクション(U
PAに関する限り未決)を有することができ、UPAクラス
間には区別を付けない。UPA装置は、クラス当たりの未
決要求数を含めてプログラムする必要があり、ファーム
ウエアがいずれかの方法でクラス0およびクラス1間に
おいて8つの要求を分配可能であることが好ましい。
【0238】各ポートは単一のDvictタグを有するの
で、ダーティなビクティムを伴うリードが発行された
後、ダーティなビクティムを伴う次のリードが発行でき
るようにするには、その前に、このリードに対するWrit
eBackを発行しなければならない。しかしながら、これ
では未だ、多数のWriteBackおよびダーティなビクティ
ムを伴う多数のリードが「対」をなすことにより1つの
Dvictタグで足りるのであるならば、これらがUPA上で未
決となる可能性がある。未決のリード要求の数または未
決のダーティなビクティムの数に関しては、これ以上の
制限はない。
【0239】UPA相互接続仕様は一層制限的であり、ダ
ーティなビクティムを伴う多数のリードおよび多数のWr
iteBacakが適切に「対をなし」同じクラスにある場合に
限って、これらが未決であることを許すことを注記して
おく。本発明では、「対を形成する」条件のみを必要と
し、UPAクラスに関する区別は設けない。これは、本発
明の今後の実施例は、ダーティなビクティムを伴う多数
のキャッシュ・ミスを発行しながらも、尚リード要求を
ビクティム化する事から異なるクラスのWriteBackを保
つことにより、良好なパーフォーマンスを維持すること
が可能であることを暗示するものである。
【0240】インターフェース30は、従来技術のバス
に基づくプロトコルに対して、いくつかの利点を提供す
ることは認められよう。従来技術とは対照的に、未了状
態は不要である。したがって、タグ状態機械を、簡素な
固定パイプラインとし、そのトランザクションがアドレ
ス・パケットおよびそれらのスヌープ情報のみに依存す
るようにすることが可能となる。更に対照的に、未了の
トランザクションと相互動作するトランザクションを禁
止する必要がない。代わりに、インターフェース30
は、タグ・パイプラインにおいて単純なパイプライン・
バイパスを用いて、かかる相互動作を処理する。
【0241】先に注記したように、本発明の好適実施例
では、各基板は7つまでの未決トランザクションを有す
ることができ、この場合トランザクションIDのサイズ
による制限が加えられる。これら7つの未決トランザク
ションは2つのUPAポートによって共有され、いずれの
ポートにも固定的な割り当てはない。例えば、7つの未
決トランザクションが全て同じUPAポートによって使用
されることも可能である。
【0242】再度第1図を参照する。種々の基板50−
Nは、システム10の動作中に、接地面スロット(groun
dplane slot)に挿入することができる、いわゆる「ホッ
ト・プラグ」が可能であることが好ましい。ホット・プ
ラグ基板挿入の間信号ピン上にグリッチを引き起こすの
を避けるために、基板50−Nは、異なる長さの接続ピ
ンを有することが好ましい。基板のプリチャージ電力用
ピンおよび接地用ピンは、他のピンよりも長くすること
により、最初に接触し、他の基板ピンが電気的な接触を
行う前に、基板を通常の動作レベルまで予め充電してお
く。加えて、1組の長い「トリガ」ピンを設けて電気的
接触を早め、挿入された基板にトリガ信号を確実にアサ
ートさせるようにする。トリガ信号は、新たに挿入され
た基板の信号ピンがもうすぐ電気的接触を行うことを、
システム10の他の基板50−Nに早めに警告するもの
である。
【0243】16サイクルの遅延の後、他の基板は、バ
ス上に新たな要求を行うことを禁止する内部ポーズをア
サートし、それらの内部マスタ・ポート・タイムアウト
・カウンタを停止し、内部プログラム可能カウンタを起
動する。他の基板もトリガをアサートしてトリガ信号を
デバウンス(de-bounce)するが、トリガが16サイクル
の遅延の前にディアサートされた場合、カウンタを起動
し直す。内部カウンタが満了したとき、基板はトリガを
ディアサートする。これは、挿入される基板によってア
サートされ続ける。また、基板は内部凍結信号(interna
l Frozen signal)もアサートし、バスの監視を停止す
る。カウンタの遅延によって、基板は既に開始されてい
るトランザクションを完了させ、次いでバスを無視する
ことができるので、グリッチがエラーの原因となること
はない。カウンタの遅延は、基板番号に応じてずらすこ
とにより、全てのドライバによるトリガ信号の同時解放
を防止することが好ましい。接触した正常な信号ピンか
らのノイズが始まり、1組のいわゆる係合ピンが、挿入
された基板に、正常な信号ピンが係合されたことを示
す。これは、挿入された基板において遅延を開始させ、
接触した正常な信号ピンからのノイズは停止する。係合
信号からの遅延が終了した後、挿入された基板はトリガ
をディアサートし、システム内の他の基板は内部凍結信
号をディアサートし、再びバスの監視を始める。
【0244】機械的な耐性に対処するために、基板のコ
ネクタは、1つのトリガ・ピンをコネクタの各端部に有
し、1つの係合ピンをコネクタの各端部に有することが
好ましい。トリガ信号は2つのトリガ・ピンの論理OR
であり、一方係合信号は2つの係合ピンの論理ANDで
ある。
【0245】ホット・プラグ挿入の間のディグリッチ(d
e-glitching)に対して、タイミングの制約が強制され
る。以下の表記では、Tiは連続イベント番号iに対応
する。時間間隔T4−T3は、未決のバス・トランザク
ションを全て完了するのに十分でなければならず、好適
実施例では約10msである。時間間隔T2−T1は、
挿入した基板の電力が、トリガをアサートするのに十分
に充電するのに十分でなければならない。信号ピンの接
触の結果生じるノイズは、時点T5以前に開始してはな
らない。これが意味するのは、プログラム可能な遅延
は、信号ピンがその時間では接触できないことを保証す
るために、十分短くしなければならないということであ
る。信号ピンの接触によるノイズは時点T8の前に終了
しなければならない。これは、遅延T6−T8(挿入さ
れた基板上で固定される遅延)は信号ピンからのノイズ
が減衰するために十分長くなければならないことを暗示
する。これは、基板を挿入する速度に下限を強制し、遅
延T8−T6は、これが実際上の制約とはならないこと
を保証するために、十分に長くなければならない。
【0246】以下の特許請求の範囲によって定義される
本発明の主題および精神から逸脱することなく、開示さ
れた実施例には、変更や改造が可能である。
【0247】
【図面の簡単な説明】
【図1】 第1図は、多数のバス・システムがあり、各
バス・システムが基板に実装されている装置とのインタ
ーフェースを行う、本発明を実施する好適実施例による
グローバル・ネットワーク・システムの一部を示す。
【図2】 第2図は、第1図に示したプラグ・イン回路
の詳細図である。
【図3】 第3図は、第1図に示したような回路基板ア
ドレス・コントローラ内のバッファ動作の詳細図であ
る。
【図4】 第4図は、第1図のシステムについて、デー
タIDバスの駆動とデータ・バスの駆動との間のレイテン
シを示す。
【図5】 第5図は、第1図のシステムに対する、アド
レス・バスおよび信号バスのパリティ比較に伴うレイテ
ンシを示す。
【図6】 第6図は、本発明による、高速モード調停に
関連する信号タイミングを示す。
【図7】 第7図は、本発明による、衝突が存在する場
合における、高速モード調停に関連する信号タイミング
を示す。
【図8】 第8図は、本発明による、第1図のシステム
に対するアドレス・コントローラ調停ユニットの詳細図
である。
【図9】 第9図は、第8図に示したような、本発明に
よる、優先的総当たり調停ユニットの論理図を示す。
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 08/673,967 (32)優先日 平成8年7月1日(1996.7.1) (33)優先権主張国 米国(US) (31)優先権主張番号 08/675,284 (32)優先日 平成8年7月1日(1996.7.1) (33)優先権主張国 米国(US) (31)優先権主張番号 08/675,286 (32)優先日 平成8年7月1日(1996.7.1) (33)優先権主張国 米国(US) (71)出願人 597004720 2550 Garcia Avenue,MS PAL1−521,Mountain V iew,California 94043− 1100,United States of America (72)発明者 ヘイガーステン,エリック アメリカ合衆国カリフォルニア州94303, パロ・アルト,コーク・オーク・ウェイ 3451 (72)発明者 シンハル,アショク アメリカ合衆国カリフォルニア州94062− 3922,レッドウッド・シティ,レイクミー ド・ウェイ 711 (72)発明者 ブロニアークズィク,デイヴィッド アメリカ合衆国カリフォルニア州94043, マウンテン・ヴュー,グラディス・アヴェ ニュー175,ナンバー 11 (72)発明者 セラウスキーズ,フレッド アメリカ合衆国カリフォルニア州94043, マウンテン・ヴュー,シエラ・ヴィスタ 612,ユニット・ジー (72)発明者 プライス,ジェフ アメリカ合衆国カリフォルニア州94043− 1100,マウンテン・ヴュー,ガーシア・ア ヴェニュー 2550,エムエス・ピーエイエ ル1−521 (72)発明者 ユアン,レオ アメリカ合衆国カリフォルニア州94043− 1100,マウンテン・ヴュー,ガーシア・ア ヴェニュー 2250,エムエス・ピーエイエ ル1−521 (72)発明者 チェン,ジェラルド アメリカ合衆国カリフォルニア州94065, レッドウッド・シティ,シェル・パークウ ェイ 545,アパートメント 3311 (72)発明者 ドゥブラー,ドリュー アメリカ合衆国カリフォルニア州94043− 1100,マウンテン・ヴュー,ガーシア・ア ヴェニュー 2250,エムエス・ピーエイエ ル1−521 (72)発明者 フォス,スティーブ アメリカ合衆国カリフォルニア州94043− 1100,マウンテン・ヴュー,ガーシア・ア ヴェニュー 2250,エムエス・ピーエイエ ル1−521 (72)発明者 アガーワイ,ナリーニ アメリカ合衆国カリフォルニア州95051, サンタ・クララ,バックレー・アヴェニュ ー 3650,ナンバー 212 (72)発明者 ハーヴェイ,ケネス アメリカ合衆国カリフォルニア州94043− 1100,マウンテン・ヴュー,ガーシア・ア ヴェニュー 2250,エムエス・ピーエイエ ル1−521 (72)発明者 リアンクレス,ビヨルン アメリカ合衆国カリフォルニア州94303, パロ・アルト,グリーア・ロード 2731 Fターム(参考) 5B005 JJ11 KK13 MM01 PP26 5B060 CD12 KA02 5B061 FF01 FF22 GG13 RR03

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 各々CPUおよび分散メモリに関連する
    装置を含む少なくとも1つのコンピュータ・サブシステ
    ムと、サブシステム・バス・システム及び該バス・シス
    テムに結合されたバス・インターフェースを含むオムニ
    バスとを含み、オムニバス搬送トランザクションの全体
    的順序が通常前記オムニバス・システムに対するアクセ
    スの時間的順序によって決定されるコンピュータ・シス
    テムにおいて、全体的なトランザクションの順序を最適
    化する方法であって、 (a)前記トランザクションの各々について、前記オム
    ニバスにトランザクションの搬送を許可することが、バ
    ス搬送トランザクションの全体的な再順序付けを正当化
    するいずれかの基準を満足するか否かについて判定を行
    うステップと、 (b)ステップ(a)において前記いずれかの基準を満
    足する場合、IGNORE信号を発行し、前記バス・システム
    上における前記トランザクションの各々の再順序付けを
    行わせるステップと、から成り、 前記ステップ(b)における基準の1つは、前記分散メ
    モリにおける所与のメモリ・アドレスにおいて、トラン
    ザクションによってアクセスされることを求められてい
    るデータの有効性における不一致を含み、 前記再順序付けは、無効バージョンの前記データが、前
    記トランザクションに応答して、前記オムニバスによっ
    て搬送されるのを防止することを特徴とする方法。
  2. 【請求項2】 請求項1記載の方法において、 各前記コンピュータ・サブシステムは少なくとも1つの
    アドレス制御装置を含み、前記オムニバス上に発行され
    るべきトランザクションは、前記トランザクションの発
    行者に関連するアドレス制御装置のコヒーレント入力キ
    ューにまずロードされなければならず、 前記オムニバス上のトランザクションの全体的再順序付
    けが、(i) アサートされた前記IGNORE信号が、前記トラ
    ンザクションを前記コヒーレント入力キューにロードす
    るのを禁止するか、(ii) 前記全体的バス・システム上
    へ置くことが、前記アサートされたIGNORE信号によって
    遅延される前記トランザクションが、前記IGNORE信号を
    アサートした装置によって後に再発行されるか、から成
    るグループから選択された少なくとも1つの処理の結
    果、行われることを特徴とする方法。
  3. 【請求項3】 請求項1記載の方法において、 各前記サブシステム・バス・システムは、少なくとも1
    つのアドレス・バスを含み、前記IGNORE信号は、(i) 各
    前記アドレス・バス上で時間多重化されるか、(ii) 前
    記アサートされたIGNORE信号が、前記アドレス・バス上
    のアドレス・パケットのアサートから5サイクルを越え
    ないレイテンシで、前記アドレス・バス上に現れるか、
    から成るグループから選択された少なくとも1つの特性
    を有することを特徴とする方法。
  4. 【請求項4】 請求項1記載の方法において、 前記コンピュータ・サブ・システムが一つだけあり、前
    記方法が該1つのコンピュータ・システムのために全体
    的なトランザクションの順序を最適化することを特徴と
    する方法。
  5. 【請求項5】 マイクロ・プロセッサ・ユニットを含む
    複数の競合者間で、共有資源に対するアクセスの調停を
    行う方法であって、 (a)前記競合者の少なくともいずれかによってアサー
    トされた調停要求を同報通信する通信機構を用意するス
    テップと、 (b)少なくとも1つの調停ユニットを前記通信機構に
    結合するステップと、 (c)選択された数の前記競合者を前記調停ユニットと
    関連付けるステップであって、各前記競合者は、他の前
    記競合者に対して関連付けられた許可優先度を有し、前
    記通信機構を通じて前記調停ユニットに調停要求信号を
    アサートすることが可能であり、前記調停ユニットから
    調停信号許可を受けることが可能であり、前記競合者
    は、前記共有資源に対するアクセスを許可された前記調
    停ユニットから前記許可信号を受け取るステップと、 (d)前記競合者に許可されたアクセスの最新の履歴に
    基づいて、優先度を有する前記競合者からの要求が否定
    されたアクセスとなるように、前記調停ユニットが優先
    的調停選択を実施するステップと、から成り、前記通信
    機構は調停バスを含み得、前記共有資源はアドレス・バ
    スを含み得ることを特徴とする方法。
  6. 【請求項6】 請求項5記載の方法において、 前記調停ユニットは階層的であり、総当たり調停許可選
    択を実施することを特徴とする方法。
  7. 【請求項7】 請求項5記載の方法において、 前記調停ユニットは階層的であり、かつ分散されてお
    り、前記調停ユニットは、(i) 少なくとも2つの下位リ
    ーフ・アービトレータであって、各々当該各リーフ・ア
    ービトレータに関連する前記競合者のサブセット間にお
    いて独立してリーフ・レベルのアクセス許可を調停する
    ことが可能な前記リーフ・アービトレータと、 更に、競合するリーフ・レベル許可取得アービトレータ
    間で、最終的な調停許可の調停を独立して行うことが可
    能な上位トップ・アービトレータと、を含むか、(ii)
    4つのリーフ・アービトレータを含み、各々4つまでの
    アクセス許可に対する競合する要求を含むサブセットの
    調停を行い、前記トップ・アービトレータは、前記4つ
    のリーフ・アービトレータに関連するアクセス許可のウ
    イナ間で、前記最終的な調停許可の調停を行い、前記リ
    ーフ・アービトレータおよび前記トップ・アービトレー
    タは、少なくとも1つの調停バスを含む前記通信機構を
    通じて通信すること、から成るグループから選択された
    特性を有することを特徴とする方法。
  8. 【請求項8】 請求項6記載の方法において、 少なくとも1つのレベルが、(iii) 前記下位リーフ・ア
    ービトレータの前記レベル、および (iv) 前記上位トッ
    プ・アービトレータから選択され、 各前記レベルにおける最新のアクセス許可の履歴に基づ
    いて、優先的アクセスの否定が行われ得ることを特徴と
    する方法。
  9. 【請求項9】 請求項5記載の方法において、 各下位リーフ・アービトレータおよび前記トップ・アー
    ビトレータは、最終ウイナ・ポインタ機構を含み、該ポ
    インタ機構は、次に優先度が高い競合者が関連する調停
    レベルにおける許可付与に続く、前記次に優先度が高い
    競合者に対する右方向を指し示し、 各前記ポインタの右側に競合者がない場合を除いて、か
    かる競合者のみが、各調停レベルにおいて、現優先度許
    可を勝ち取るために選択可能であり、各前記ポインタの
    右側に競合者がない場合、前記ポインタの左側の競合者
    が優先度許可を勝ち取ることができ、 各前記最終ウイナ・ポインタ機構は、必要に応じて、前
    記機構を内蔵するアービトレータにおける許可付与の
    後、再度指示を行い、該再指示は、各他の前記機構の再
    指示と同期して行われることを特徴とする方法。
  10. 【請求項10】 請求項5記載の方法において、 前記トップ・アービトレータおよび各前記リーフ・アー
    ビトレータ間の通信は、 リーフ・レベルにおいて前記リーフ・アービトレータに
    よって優先的許可を付与された競合者があれば、当該競
    合者を識別する、各前記リーフ・アービトレータから前
    記トップ・アービトレータへの出力ラインと、 各前記リーフ・アービトレータのレベルにおいて最終許
    可者を識別する、各前記リーフ・アービトレータから前
    記トップ・アービトレータへのウイナ右側ライン出力ラ
    インと、 前記リーフ・アービトレータの選択した1つに関連する
    競合者に、前記共有資源へのアクセスを許可する、前記
    トップ・アービトレータから各前記リーフ・アービトレ
    ータへの最終許可出力ラインと、を含むことを特徴とす
    る方法。
  11. 【請求項11】 請求項5記載の方法において、 前記競合者の少なくとも2つは、2つの前記リーフ・レ
    ベル・アービトレータおよびトップ・アービトレータを
    内蔵するアドレス・コントローラを内蔵する回路基板上
    に実装され、 前記アクセスの調停を行う方法は、複数の同一の前記回
    路基板を含むシステムにおいて実行され、 前記方法は、リーフ・レベル調停およびトップ・レベル
    調停が前記各回路基板上のアドレス・コントローラ内で
    独立して実行されるという点において分散型であること
    を特徴とする方法。
JP2002132026A 1996-03-15 2002-05-07 分割トランザクション・スヌーピング・バスおよび調停方法 Pending JP2003030131A (ja)

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
US1347796P 1996-03-15 1996-03-15
US08/673,967 US5911052A (en) 1996-07-01 1996-07-01 Split transaction snooping bus protocol
US08/673,038 US5978874A (en) 1996-07-01 1996-07-01 Implementing snooping on a split-transaction computer system bus
US08/673,059 US5829033A (en) 1996-07-01 1996-07-01 Optimizing responses in a coherent distributed electronic system including a computer system
US08/675,284 US5960179A (en) 1996-07-01 1996-07-01 Method and apparatus extending coherence domain beyond a computer system bus
US08/673,967 1996-07-01
US08/675,286 1996-07-01
US08/675,284 1996-07-01
US08/673,038 1996-07-01
US08/675,286 US5987549A (en) 1996-07-01 1996-07-01 Method and apparatus providing short latency round-robin arbitration for access to a shared resource
US08/673,059 1996-07-01
US60/013,477 1996-11-27

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP9532880A Division JPH11501141A (ja) 1996-03-15 1997-03-14 分割トランザクション・スヌーピング・バスおよび調停方法

Publications (1)

Publication Number Publication Date
JP2003030131A true JP2003030131A (ja) 2003-01-31

Family

ID=27555758

Family Applications (2)

Application Number Title Priority Date Filing Date
JP9532880A Pending JPH11501141A (ja) 1996-03-15 1997-03-14 分割トランザクション・スヌーピング・バスおよび調停方法
JP2002132026A Pending JP2003030131A (ja) 1996-03-15 2002-05-07 分割トランザクション・スヌーピング・バスおよび調停方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP9532880A Pending JPH11501141A (ja) 1996-03-15 1997-03-14 分割トランザクション・スヌーピング・バスおよび調停方法

Country Status (4)

Country Link
EP (1) EP0832459B1 (ja)
JP (2) JPH11501141A (ja)
DE (1) DE69733623T2 (ja)
WO (1) WO1997034237A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007148467A (ja) * 2005-11-24 2007-06-14 Nec Computertechno Ltd 情報処理装置およびそのエラー処理方法ならびに制御プログラム

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6209053B1 (en) * 1998-08-28 2001-03-27 Intel Corporation Method and apparatus for operating an adaptive multiplexed address and data bus within a computer system
US6928519B2 (en) * 2002-06-28 2005-08-09 Sun Microsystems, Inc. Mechanism for maintaining cache consistency in computer systems
US6950892B2 (en) * 2003-04-10 2005-09-27 International Business Machines Corporation Method and system for managing distributed arbitration for multicycle data transfer requests
JP4697924B2 (ja) * 2004-06-07 2011-06-08 キヤノン株式会社 データ転送方法
JP4656347B2 (ja) 2009-04-14 2011-03-23 日本電気株式会社 コンピュータ・システム
US8819345B2 (en) 2012-02-17 2014-08-26 Nokia Corporation Method, apparatus, and computer program product for inter-core communication in multi-core processors

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4009470A (en) * 1975-02-18 1977-02-22 Sperry Rand Corporation Pre-emptive, rotational priority system
US4314335A (en) * 1980-02-06 1982-02-02 The Perkin-Elmer Corporation Multilevel priority arbiter
US5195089A (en) * 1990-12-31 1993-03-16 Sun Microsystems, Inc. Apparatus and method for a synchronous, high speed, packet-switched bus
US5280591A (en) * 1991-07-22 1994-01-18 International Business Machines, Corporation Centralized backplane bus arbiter for multiprocessor systems
AU2476192A (en) * 1991-08-16 1993-03-16 Multichip Technology High-performance dynamic memory system
DE69319763T2 (de) * 1992-03-04 1999-03-11 Motorola Inc Verfahren und Gerät zur Durchführung eines Busarbitrierungsprotokolls in einem Datenverarbeitungssystem
JPH06282528A (ja) * 1993-01-29 1994-10-07 Internatl Business Mach Corp <Ibm> データ転送方法及びそのシステム
US5530933A (en) * 1994-02-24 1996-06-25 Hewlett-Packard Company Multiprocessor system for maintaining cache coherency by checking the coherency in the order of the transactions being issued on the bus
AU1973595A (en) * 1994-03-01 1995-09-25 Intel Corporation Highly pipelined bus architecture
US5682516A (en) * 1994-03-01 1997-10-28 Intel Corporation Computer system that maintains system wide cache coherency during deferred communication transactions

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007148467A (ja) * 2005-11-24 2007-06-14 Nec Computertechno Ltd 情報処理装置およびそのエラー処理方法ならびに制御プログラム
JP4584124B2 (ja) * 2005-11-24 2010-11-17 エヌイーシーコンピュータテクノ株式会社 情報処理装置およびそのエラー処理方法ならびに制御プログラム

Also Published As

Publication number Publication date
EP0832459A1 (en) 1998-04-01
WO1997034237A2 (en) 1997-09-18
WO1997034237A3 (en) 1998-05-28
DE69733623T2 (de) 2006-05-18
DE69733623D1 (de) 2005-08-04
JPH11501141A (ja) 1999-01-26
EP0832459B1 (en) 2005-06-29

Similar Documents

Publication Publication Date Title
US5911052A (en) Split transaction snooping bus protocol
US5987549A (en) Method and apparatus providing short latency round-robin arbitration for access to a shared resource
US5978874A (en) Implementing snooping on a split-transaction computer system bus
EP0669578B1 (en) Improved ordered cache-coherency scheme
US5829033A (en) Optimizing responses in a coherent distributed electronic system including a computer system
US5887146A (en) Symmetric multiprocessing computer with non-uniform memory access architecture
KR100360064B1 (ko) 고도로파이프라인된버스구조
US5276852A (en) Method and apparatus for controlling a processor bus used by multiple processor components during writeback cache transactions
US6681283B1 (en) Coherent data apparatus for an on-chip split transaction system bus
EP0735486B1 (en) Packet switched cache coherent multiprocessor system
US5996036A (en) Bus transaction reordering in a computer system having unordered slaves
US5655100A (en) Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system
US5684977A (en) Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system
US5581729A (en) Parallelized coherent read and writeback transaction processing system for use in a packet switched cache coherent multiprocessor system
US5657472A (en) Memory transaction execution system and method for multiprocessor system having independent parallel transaction queues associated with each processor
US6088771A (en) Mechanism for reducing latency of memory barrier operations on a multiprocessor system
CA2051029C (en) Arbitration of packet switched busses, including busses for shared memory multiprocessors
US5265235A (en) Consistency protocols for shared memory multiprocessors
EP0674272B1 (en) Queue-based predictive flow control mechanism
WO1998025208A1 (en) Computer system including multiple snooped, multiple mastered system buses and method for interconnecting said buses
US5895484A (en) Method and system for speculatively accessing cache memory data within a multiprocessor data-processing system using a cache controller
US6785779B2 (en) Multi-level classification method for transaction address conflicts for ensuring efficient ordering in a two-level snoopy cache architecture
US5519838A (en) Fast pipelined distributed arbitration scheme
US5930485A (en) Deadlock avoidance in a computer system having unordered slaves
US5933612A (en) Deadlock avoidance in a split-bus computer system

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040809

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040817

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050201