【発明の詳細な説明】
分割トランザクション・スヌーピング・バスおよび調停方法
発明の分野
本発明は、一般的にコンピュータ・バス・アーキテクチャに関し、更に特定す
れば、分割トランザクション・スヌーピング・バス(split transaction snoopig b
us)、当該バス上におけるスヌーピングおよびかかるバスに対するプロトコルを
実施し、バスを越えてコヒーレント・ドメイン(coherent domain)を拡張し、全
体的なデータ応答を最適化し、共有資源へのアクセスに対する調停を行い、なら
びにシステム内の共有資源に対するアクセスのレイテンシ短縮を図った優先的総
当たり調停(prioritize round-robin arbitration)を提供する方法および装置に
関するものである。
発明の背景
サーバ、ワークステーションなどを含む最近のコンピュータ・システムは、典
型的に、メモリのラインにキャッシュ可能な入出力(「I/O」または「IO」
)ユニット、あるいは中央演算装置群(「CPU群」)またはマイクロプロセッ
サ群、および関連する分散型CPUランダム・アクセス・メモリ・ユニット(「
RAM」)のような数種類の装置を有する。(ここで用いる場合、「CPU」お
よび「装置」という用語は、相互交換可能に用いるものとする。)種々の装置は
互いに通信可能であると共に、要求、コマンド、メモリ・アドレス、データ等を
含む種々の情報を種々の装置間で搬送する1つ以上のバスを通じてRAMとの通
信も可能となっている。かかる情報は、典型的に、例えば64ビット即ち8バイ
トというような広いビット幅のバス・ライン上をパケット状で、システム・クロ
ック周波数によって影響を受ける伝送速度で伝送される。
コンピュータ・システムの主メモリは、通常大きな記憶容量を有するが、比較
的データ・アクセスが遅い。データ・アクセスの高速化を達成すると共に、主メ
モリへのアクセス回数を減らすために、多くの装置(特にCPU)は、キャッシ
ュと呼ばれる、小型で高速なローカル・メモリを有している。キャッシュは、頻
繁にかつ最近用いられたデータのコピーを格納することにより、当該装置が主メ
モリの代わりにキャッシュにアクセス可能にするために用いられる。
装置がそのキャッシュ内にあるメモリ位置にデータを書き込むための技法につ
いては、そのいくつかが当技術では公知である。いわゆる「ライト・スルー」キ
ャッシュでは、データは、キャッシュおよび主メモリに書き込むことができる。
また、「ライトバック」(または「コピー・バック」)キャッシュでは、データ
はキャッシュにのみ書き込むことができる。ライトバック・キャッシュでは、主
メモリ内のデータは、もはや正しくない「状態」であり、キャッシュのみが当該
メモリ位置の正しいコピーを保持する。キャッシュ内において変更されたデータ
のコピーを、「ダーティ」と呼ぶ。ダーティ・データをキャッシュから除去しな
ければならない場合(別のメモリ位置のコピーのために余裕を作る際)、ダーテ
ィ・データをメモリに書き戻さなければならない。本発明は、ライトバック・キ
ャッシュを用いるコンピュータ・システムに関して記載するが、本発明は、ライ
ト・スルー・キャッシュと共に用いるために一般化することも可能である。
キャッシュのコヒーレンス(cache coherence)が重要であることは理解されよ
う。多数の装置がそれらのキャッシュ内に同じメモリ位置のローカル・コピーを
有する場合、正しいシステム動作を行うためには、全ての装置がそれらのキャッ
シュ内で同じデータを観察することが必要となる(何故なら、これらは同じメモ
リ位置のコピーを保持することを意味するからである)。しかし、これらの装置
の1つ以上がそれらのキャッシュにそのデータのローカル・コピーを書き込んだ
場合、全ての装置が同じデータを観察することはもはや不可能となる。キャッシ
ュのコヒーレンスとは、全ての装置がそれらのキャッシュにおいて同じメモリ位
置の同じデータを観察するのを保証するタスクのことである。これを行うには、
いずれかの装置がそのキャッシュ内のデータを変更した場合、他のキャッシュ全
てにおけるデータのコピーを更新するか、あるいは他のキャッシュ全てにおける
データのコピーを削除する。本発明は、第2のタイプのキャッシュ・コヒーレン
スを採用したシステムと共に用いる場合に関して記載するが、実際にはいずれの
タイプのコヒーレンスでも採用可能である。尚、ライトバック・キャッシュを使
用する
場合、他のキャッシュでダーティとなっているメモリ位置のコピーを装置が必要
とする際、このデータは、メモリからではなく、ダーティなデータを有するキャ
ッシュから得なければならない(何故なら、メモリ内のデータは古いからである
)。
いわゆるスヌーピング・プロトコル(snooping protocol)は、キャッシュのコ
ヒーレンスを実施するための一般的な技法である。各キャッシュは、キャッシュ
内の各メモリ位置に対する状態を維持する。装置があるメモリ位置のリードまた
は書き込みを望む場合、通常バスを通じてその要求の同報通信を行う。この要求
は、全ての装置によって、観察され、その状態とのチェックが行われる。即ち、
要求が「スヌープ」される。リード要求に対しては、メモリの代わりに、ダーテ
ィなコピーを有するキャッシュがデータで応答する。ライト要求に対しては、他
のキャッシュは全て、それらのデータ・コピーを無効化するか、あるいは更新す
る。
通常、トランザクションは、アドレスを含む要求を伴い、その後にデータを含
む応答が続く。いわゆる「回線交換」バスでは、トランザクションは、次のトラ
ンザクションが開始可能となる前に、完了しなければならない。要求と応答との
間に長い遅延がある場合、バスはその遅延の持続期間中アイドルのままであり、
その結果バスの帯域が失われる。対照的に、いわゆる「分割トランザクション」
(または「パケット交換)バスでは、所与のトランザクションに対する要求と応
答との間に、他のトランザクションに対する要求および応答が可能である。これ
によって、所与のトランザクションに対する要求と応答との間に遅延があっても
、バスの帯域を最大限利用することが可能となる。
あるメモリ位置からデータを読み取るか、あるいはあるメモリ位置にデータを
書き込もうとするCPUは、典型的に、まずシステム・バスを通じて要求型信号
をシステムに同報通信する。しかしながら、他の装置も同じ信号を同時にバスを
通じて同報通信しなければならない場合もある。バス上では一度に1つの信号値
のみの送信が許されているに過ぎないため、装置はバスの使用について調停を行
わなければならず、調停を実施する機構が用意されている。更に、これらの要求
およびデータならびに他の信号を搬送する共通のシステム・バスは有限な資源で
あり、その送信帯域は、ビット・ライン数およびシステムのクロック速度によっ
て決定される。
これらの要求およびデータならびに他の信号を搬送する共通のシステム・バス
は有限な資源であり、その送信帯域は、ビット線数およびシステムのクロック速
度によって決定される。潜在的に衝突(conflict)し得る要求を調停し、アクセス
要求を許可する高速な機構を用いてもなお、バス・システムにはスループットお
よび応答を最大限高めるという課題がある。例えば、従来技術の調停方式には、
2クロック・サイクル以上のレイテンシが発生するという不利が伴う。
従来技術のシステムは、共通なアドレスに関与する多数のトランザクションに
対処する必要性のため、複雑である。かかる両義性(ambiguity)を減らすために
、かかるシステムは「未了」または「遷移」状態を定義しなければならない。こ
のために、実施態様全体の複雑度を一層高めることになる。かかるシステムにお
いてフロー制御を賦諜し、衝突の両義性を回避するための従来技術の試みは、扱
いにくいものでもあった。
データ要求がその要求後直ちに完了しないシステムには、複雑な機構を用いて
、最終的にその要求が完了することを保証しなければならない。メモリが分散さ
れているシステムでは、コヒーレントなドメイン、例えば、常にコヒーレントに
保たれているメモリ空間の維持を迅速に行うことが課題となっている。現在無効
なデータを保持しているメモリ位置からデータを読み取るトランザクション要求
は、従来技術では迅速に完了することはできない。最初にそのメモリ位置に有効
なデータを書き込み直す必要があり、そうした後に初めてその有効データを要求
元に供給することが可能となる。スヌーピング分割トランザクション・バス・シ
ステムにおいてこれらのプロセスを実施する従来技術の手順は複雑であり、時間
がかかる。
分割スヌーピング・バス・システムのためのアーキテクチャは、かかるバス・
システムを数系統必要とするシステム、例えば、多数のワークステーションを備
えたネットワータにおける使用に適したものでなければならない。単一のバス・
システムを備えたコンピュータ・システムでは、アドレス・バス上にトランザク
ションが置かれる順序が、絶対的な時間関係を決定する。したがって、CPU
Aによって開始されたトランザクションが、CPU Bによって開始されたトラ
ンザクションよりも前にバス上に現れた場合、コンピュータ・システムは、トラ
ン
ザクションAがトランザクションBに先立つと見なし、変更されることはない。
しかしながら、かかるコンピュータ・システムを複数含み、複数のバス・システ
ムを備えているシステムでは、かかる単純な想定はもはやあり得ない。かかる例
の1つは、少なくとも2台のワークステーションを備えたネットワークであろう
。
単一のバス・システムを有する下位コンピュータ・システムでは、当該バス・
システム内のアドレス・バス上にアドレス・パケットが現れる時間的な順序によ
って、トランザクションの順序が一意的に定義される場合がある。しかしながら
、かかる下位システムを複数備え、複数のバス・システムを有するシステムでは
、トランザクションに対する全体的な順序を定義することが必要であるが、非常
に困難である。例えば、下位システム1のCPUが、下位システム1を含むあら
ゆる下位システム内にあり得るメモリ位置にデータを書き込みたい場合がある。
全く同時に、他の下位システムのCPUが、同一のメモリ位置または別のメモリ
位置にデータを書き込みたい場合がある。これら2つの同時トランザクション間
で、全体的な順序を定義するにはどうすればよいのであろうか。
結果的に生じる不確実性のために、トランザクションの順序に敏感な(critica
l)ルーチンを実行する際に、問題を発生する可能性がある。更に、従来技術では
かかるシステムに対して全体的なトランザクションの順序を効果的に定義できな
いために、システムのデッドロックに至る可能性もある。したがって、スヌーピ
ング分割トランザクション・バス・システムを採用するコンピュータ・システム
を含むコンピュータ・システムにおいて、コヒーレントなドメインを拡大(promo
te)する迅速な実行機構が必要とされている。好ましくは、有効なデータを書き
込んで、要求の対象である、無効データを含むメモリを更新しているとき、かか
る機構はそのデータに関与する元のトランザクションを同時に再発行しなければ
ならない。
先に記したように、システム・バスのような共有資源に対するアクセスを調停
する機構が必要とされている。いわゆる従来技術の公平なアルゴリズムでは、ア
ービトレータ(arbitrator)は、要求が到達した順に、CPUにバス・アクセスを
許可する。したがって、要求が最も長い時間未了となっていたCPUにアクセス
が許可される。個々のCPUの要求には、重要性による優先度は割り当てられず
、
唯一の基準は、種々の要求の時間的順序だけである。この公平アルゴリズムの利
点は、種々のCPUの要求に伴う複雑な履歴を格納しなくてもよいことである。
他の従来技術の方法に、いわゆる総当たりアルゴリズム(round robinalgorith
m)がある。この場合、CPU間で巡回順序を定義することにより、最も恵まれた
要求元CPUの地位(identity)が移動するようにする。即ち、CPU Nが最新
の調停許可を受けた場合、CPU N+1が要求をアサートしたならば、CPU
N+1が次の許可を受ける。総当たりアルゴリズムはコンピュータ・システム
の設計者には好評であるが、かかるアルゴリズムは、ロジック深度(logicdepth)
が小さい場合には実施が難しい。しかしながら、階層レベルが深い総当たりを使
用すると、許可のウイナ(winner)を決定するために必要なクロック・サイクルが
かかり過ぎてしまう。何故なら、複数の下位レベルの各々においてウイナを決定
し、その後で下位レベルのウイナの中からウイナを決定しなければならないから
である。例えば、全ての要求が共通な論理レベルで処理される、論理深度がない
、より高速であるが比較的「平坦な」、即ち、階層がない総当たりを実施するこ
とも可能であるが、論理ゲートの複雑性はそれでも存在する。
更に他の従来技術のアルゴリズムに、種々のCPUの優先度を静的に決定する
ものがある。即ち、CPU0には永久的に最高の優先度を指定し、CPU1には
次に高い優先度を指定する、等とする。その結果、CPU2は、CPU0または
CPU1のいずれも現在バス・アクセスを要求していない場合でなければ、調停
許可を受けることができない。この静的優先度決定方式は、特に実施が簡単であ
るという利点がある。
上述の技法のいずれかを用いた場合、アービトレータからバス・アクセス許可
を受けた要求元CPUがアクセスを得ている間、他のあらゆる要求元CPUから
の要求は、禁止即ち中断状態で待っていなければならない。この状態は、要求元
のCPUがその調停許可を受け、そのデータまたは所望のアドレスあるいはその
他の信号をバス上に置き、そのトランザクションを完了するまで続く。
従来技術では、バスに対するアクセスの競合する要求を調停するために用いら
れる機構には無関係に、データのために1本の調停ラインが用いられ、アドレス
のために第2の調停ラインが用いられることがある。先に注記したように、許可
アクセスを勝ち取ったCPUによる調停、許可、およびアクセスの時間中、他の
未了の要求は、最初に許可された要求の競合の間、一時的に禁止される。
かかる技法は動作するものの、最初のCPU要求、当該CPUへの調停の許可
、バスへのCPUのアクセス、ならびにバス・アクセスを受けるための次の要求
元に対する調停およびバス・アクセスの許可の間に多くのクロック・サイクルが
経過するはずであり、レイテンシによる不利が余りに大きくなり過ぎる可能性が
ある。したがって、禁止機構を用いずに、最短のレイテンシ時間を達成する、バ
ス・アクセス調停方法および装置が必要とされている。
更に、分割トランザクションおよびスヌーピングを可能とする、バス・システ
ムのための構造的プロトコルも必要とされている。好ましくは、かかるプロトコ
ル・アーキテクチャは、好ましいバス帯域および低いレイテンシを得つつ、多数
のCPUおよび大量のメモリに対応すべきである。同時に多数のトランザクショ
ンの進展を可能とし、禁止、多数の再試行サイクル、未了または遷移状態を賦課
せずに、単純なフロー制御が得られるようにすべきである。かかるプロトコルは
、かかる分割トランザクション・スヌーピング・バス・システムをいくつか含む
ことができるような、システムの大型化を可能とすべきである。本発明は、かか
る調停方法および装置、ならびに分割トランザクション・バス上において所望の
スヌーピングを実施する方法および装置を提供し、更にかかるバスおよびそのた
めのプロトコルを提供するものである。
本発明の概要
本発明は、分割トランザクション・スヌーピング・バス、バス・プロトコルお
よびバス・スヌーピングを実施する方法および装置、ならびにバスを越えてコヒ
ーレンス・ドメインを拡張する技法、全体的なデータ応答を最適化する技法、お
よびレイテンシが短い優先的総当たり調停を用いた、共有資源に対するアクセス
を調停する技法を提示する。分割トランザクション・スヌーピング・バス・プロ
トコルおよびアーキテクチャは、1系統以上のかかるバスを有するシステムに用
いるために設けられる。
好適実施例では、好適なスヌーピング分割トランザクション・バス・システム
において、CPU装置および分散型メモリを内蔵した回路カードを、バス・イン
ターフェースに差し込む。バス・システム・レベルのバスを、グローバル・ネッ
トワーク・インターフェースによって結合し、オムニバス・システムを形成する
ことができる。サブシステム・レベルにおいて、例えば、CPUおよび/または
分散メモリのような装置を含む回路基板を、1つ以上の分割トランザクション・
スヌーピング・バス・システムに差し込む。各回路カードは、更に、ビット・ス
ライス・データ・バッファおよびDTAG RAMバッファ、要求タグ・キュー
を含むキュー、およびバス・システムにアクセスする種々の装置からの、潜在的
に競合し得る要求を調節する調停機構を実施するアドレス・コントローラを含む
、データ入出力バッファを内蔵することが好ましい。好ましくは、単一の調停バ
スを多重化し、アドレス・バスおよびデータ・バス要求トランザクションを搬送
するようにし、要求と応答との間の時間は可変とするが、2クロック・サイクル
程度の短さとすることが好ましい。アドレスおよびデータ・バス・トランザクシ
ョンの長さは、各々2サイクルとすることが好ましい。
各アドレス・コントローラに関連するコヒーレント入力キュー("CIQ")は
、関連する装置によって要求されるトランザクションを収容する。かかるトラン
ザクションは、バスまたはオムニバス(以降「バス/オムニバス」と記す)シス
テムを通じてアサートされる。全ての装置はアドレス・バス上でスヌープし、パ
ケット・アドレスおよび回路基板タグ・メモリ(「装置レベル・タグ」)から、
識別したラインが所有されているかあるいは共有されているかについて学習する
。当該ラインのキャッシュされたコピーを有する基板は共有信号をアサートし、
当該ラインを所有する基板は所有信号をアサートする。無視信号を受信すると、
トランザクションをコヒーレント入力キューにロードするのが禁止され、無視信
号がもはやアサートされなくなるまで、トランザクションがバス・システム上に
現れるのを延期させる。ディアサートされると、分散型メモリ内の元の位置にア
クセスしようとしている同じトランザクションがCIQにロードされ、有効なト
ランザクションとしてバス/オムニバス・システム上に現れることができ、こう
して、トランザクションの順序を所望通りに変更することができる。
一実施例では、グローバル・ネットワーク・インターフェースは、IGNOR
E信
号を発生する機構を備え、種々の回路基板間に分散されているメモリ・システム
内のキャッシュ・ライン全てについての状態情報表を起動する(start)メモリを
含む。グローバル・ネットワーク・インターフェース機構が、全体的なトランザ
クションの再順序付けをすべきと判断した場合、トランザクションは無視される
。IGNORE信号がアサートされると、かかるトランザクションのCIQへの
ロードが禁止され、これによって、その時点におけるトランザクションの順序付
けを禁止する。後に、IGNORE信号のアサートが解除されたときに、このト
ランザクションの再発行が可能となる。このように、本発明は、全体的なトラン
ザクションの最適な再順序付けを図ることができる。しかし、かかる全体的な再
順序付けのために、データを要求し、アサートされたトランザクションに応答し
た結果、所望のデータの古いバーションが要求元に供給される可能性がある。
要求されたメモリ・ラインの所有権は、要求時に、例えば、要求データが要求
元装置によって受信される以前に、直ちに移転される。本発明は、タグ・パイプ
ライン・バイパスを実施し、アサートされた要求は、アドレス・バス上の状態ト
ランザクションが、要求に依存せずに、原子的かつ論理的に発生するように、キ
ューに並べられる。同じデータに対する以降の要求にはタグが付けられ、所望の
データが未だ転送されていなくても、それらがオーナー要求元の任務を負うよう
にする。高いスループットを促進するために、以降の要求元のアクティビティを
中止せずに、以前の要求トランザクションの許可および完了を待つ。プロセッサ
・レベルのキャッシュは、トランザクション・データの受信時に状態を変化させ
る。
本発明は、ライト型動作に対する新しいトランザクション、即ち、ReadToS
hareForkトランザクションを与える。このトランザクションは、現在古いまた
は劣化したデータを保持しているメモリ・アドレスが要求された際に、システム
がこのメモリ・アドレスに有効なデータを書き込むと共に、このデータを迅速に
元の要求元に供給する、即ち、引き込ませることを同時に可能とする。こうして
、従来技術における場合に可能であったよりも、最初に要求されたトランザクシ
ョンを大幅に高速化して完了することを可能としつつ、分散型メモリ・システム
においてコヒーレンス性を維持する。
要求されたメモリ位置に有効データを書き込んでメモリを更新する場合、同じ
メモリ・アドレスおよびトランザクションSourceID情報を用いて、このデー
タを読み出す未決のトランザクションを再発行させる。しかしながら、本質的に
有効データを2つの宛先に同時に送ることにより、双方の「トランザクション」
は同時に発生する。
他の態様においては、1系統または多くのかかるバスを有するシステムにおい
て用いるために、分割トランザクション・スヌーピング・バス・プロトコルおよ
びアーキテクチャを提供する。例えば、CPUおよび/または分散型メモリのよ
うな装置を含む回路基板を、1系統以上の分割トランザクション・スヌーピング
・バス・システムに差し込む。各回路基板は、更に、ビット・スライス・データ
・バッファおよびDTAG RAMバッファ、要求タグ・キューを含むキュー、
およびバス・システムにアクセスする種々の装置からの、潜在的に競合し得る要
求を調節する調停機構を実施するアドレス・コントローラを含む、データ入出力
バッファを内蔵することが好ましい。
好ましくは、単一の調停バスを多重化し、アドレス・バスおよびデータ・バス
要求トランザクションを搬送するようにし、アドレスおよびデータ・バス・トラ
ンザクションの長さは、各々2サイクルとすることが好ましい。アドレス・バス
および調停バスは、各々同じサイクルにおいて駆動することにより、帯域の拡張
を図る。要求と応答との間の時間は可変とするが、2クロック・サイクル程度の
短さとすることが好ましい。
多くのCPUが、別個のアドレス・バスおよび調停バスを含む共有システム・
バスにアクセス可能なコンピュータ・システムでは、バスの中でも、アドレス・
バスに対するアクセスの調停を迅速に行わなければならない。本発明は、優先的
調停(prioritized arbitration)の利点が階層的に得られる、レイテンシが低い
分散型総当たり調停機構も提供する。好適な実施態様では、基本的な2クロック
・サイクルを用い、各アドレス・バス・パケットおよび各データ・バス・パケッ
トは2サイクルを必要とする。
好ましくは、2つのCPUおよび関連するRAMを、共有システム・バスに動
作中のさし込み(hot-plug)が可能な複数のカードの各々に設ける。各カードは、
2レベルの階層を有する調停機構を実施するロジックを内蔵したアドレス・コン
トローラを含む。2レベルの階層とは、単一のトップ・アービトレータ(toparbi
trator)と、好ましくは4つのリーフ・アービトレータ(leaf arbitrator)である
。トップ・アービトレータと各リーフ・アービトレータとの間には、上向きの要
求ライン("rout")、上向きのウイナ右側(winner-to-the-right)("wrgt")ライ
ン、および下向きの許可ライン("win")がある。各リーフ・アービトレータは
、4本の要求入力ライン("rin")を有し、これらの各ラインは、当該リーフ・
アービトレータが対処する単一のCPUに結合されている。
アドレス・バス・アクセスに対する調停を行いたいCPUは、それ自体が結合
されているリーフ・アービトレータへのrinラインを通じて、トップ・アービト
レータへの要求を開始する。各ローカル・リーフ・アービトレータは、それ自体
のrinライン上に存在し得る0ないし4つの要求間における調停を行い、その要
求元間でウイナを決定し、トップ・アービトレータへのroutライン上に信号を出
力し、アクセスを望むCPUを有することを示す。rinラインは、優先度に関し
てCPU0>CPU1>CPU2>CPU3となるように、優先順位が決められ
ている。最終ウイナ("LW")ポインタ機構が、各リーフ・アービトレータ内に
あり、調停の付与の後右に移動する。この位置変更は、wrgt出力ラインを介して
トップ・アービトレータに結合される。トップ・アービトレータの観点からは、
最初のリーフ・アービトレータは2番目のリーフ・アービトレータより優先度が
高く、2番目のリーフ・アービトレータは3番目のリーフ・アービトレータより
優先度が高く、3番目のリーフ・アービトレータは4番目のリーフ・アービトレ
ータより優先度が高いというように、リーフ・アービトレータの優先度が決めら
れる。
各カードのアドレス・コントローラは、調停バス(バスの中でもとりわけ)と
通信を行う。調停バスは、各カード上の調停機構が同時にかつ同期して全ての調
停要求およびトップ・アービトレータの許可を見ることができるようにすると共
に、同じLW状態を有することができるようにする。
リーフ・レベル調停は自律的であり、並行して発生する。例えば、CPU0が
最後にリーフ・レベル調停に勝利した場合、これは除外され、リーフ・アービト
レータ1は、そのCPU1がアクセスを要求した場合、それに対する許可を要求
する。2番目のリーフ・アービトレータ内において、CPU5が最後に勝利した
場合、それは除外され、次いでCPU6が勝利することができる(要求した場合
)。トップ・アービトレータのレベルでは、最初のリーフ・アービトレータが最
後に許可を勝ち取った場合、これは除外され、2番目のリーフ・アービトレータ
が勝利する。即ち、そのCPU6が、調停許可を勝ち取ることができる。
最終ウイナ・ポインタは、システム・クロック・サイクル毎に1回、同期して
リセットされる。好適実施例では、低いレイテンシが得られる。これは、アドレ
ス・バスに対する調停により、アドレス・パケットを同時に同報通信できるから
である。これは、従来技術の方式において、最初に調停を行い次いでアドレス・
パケットを出力する場合よりも高速である。各アドレス制御が自立的な調停ユニ
ットを含んでいるという点において、調停は分散されている。リーフ・レベルの
調停が行われている間、トップ・アービトレータは、そのLWポインタから、ど
のリーフ・アービトレータが調停許可を勝ち取るかについて決定を下すことがで
きる。
本発明のその他の特徴および利点は、以下の説明から明らかとなろう。以下の
説明では、好適実施例について、添付図面と関連付けながら、詳細に説明してあ
る。
図面の簡単な説明
第1図は、多数のバス・システムがあり、各バス・システムが基板に実装され
ている装置とのインターフェースを行う、本発明を実施する好適実施例によるグ
ローバル・ネットワーク・システムの一部を示す。
第2図は、第1図に示したプラグ・イン回路の詳細図である。
第3図は、第1図に示したような回路基板アドレス・コントローラ内のバッフ
ァ動作の詳細図である。
第4図は、第1図のシステムについて、データIDバスの駆動とデータ・バス
の駆動との間のレイテンシを示す。
第5図は、第1図のシステムに対する、アドレス・バスおよび信号バスのパリ
ティ比較に伴うレイテンシを示す。
第6図は、本発明による、高速モード調停に関連する信号タイミングを示す。
第7図は、本発明による、衝突が存在する場合における、高速モード調停に関
連する信号タイミングを示す。
第8図は、本発明による、第1図のシステムに対するアドレス・コントローラ
調停ユニットの詳細図である。
第9図は、第8図に示したような、本発明による、優先的総当たり調停ユニッ
トの論理図を示す。
好適実施例の詳細な説明
本発明にはいくつかの態様があり、分割トランザクション・スヌーピング・バ
ス・アーキテクチャおよびプロトコルの提供、ならびに分割トランザクション・
バス上におけるスヌーピングを含む。本発明による分割トランザクション・スヌ
ーピング・バス・システムは、他のバス・システムを有さないシステムにおいて
典型的に用いるものであるが、本発明は、かかる分割トランザクション・スヌー
ピング・バス・システムを数系統含む、より大型のシステムにおいても実施が可
能である。また、本発明は、コンピュータ環境における共有システム資源、即ち
、多くのCPUによって共有されるアドレス・バスに対するアクセスの迅速な調
停を行う、レイテンシが低い分散階層総当たり型機構も提供する。
最も一般的な場合を図示するために、第1図は電子式グローバル・ネットワー
ク・システム10を示す。システム10は、グローバル・ネットワーク・インタ
ーフェース機構15を含み、これに複数の共有バス・システム20,20’等が
結合されている(図示を簡単にするために2系統のバス・システムのみを示すが
、2系統以上のかかるシステムが存在し得ることは理解されよう。)各共有バス
・システムは、インターフェース・アーキテクチャ30,30’によって、例え
ば、40−Nのような複数のラインを通じて、好ましくは同一の複数のプラグイ
ン基板50−Nの各々に結合されている、数系統のバス(これより説明する)を
備えている。
インターフェース機構15は、無視信号発生機構17、および基板50−N,
50’N等の間に分散されているメモリ内のキャッシュ・ライン全てのテーブル
19を格納するメモリを含む。
好適実施例では、システム10はコンピュータ・ワークステーションであり、
インターフェース30は、基板50−N間において、無効化に基づくキャッシュ
・コヒーレンス(invalidation-based cache coherence)を有する、分割トランザ
クション・スヌーピング・バス・システムを定義する。総称して、バス・システ
ム20,20’等の一群を、システム10全体に対して、オムニバス・システム
20”とも呼ぶことにする。しかしながら、ここに記載する本発明は、単一のバ
ス・システム20および単一のバス・インターフェース30を備えているシステ
ムにも使用可能であることは理解されよう。
例えば、バス20のような単一のバス・システムを備えたコンピュータ・サブ
システムでは、トランザクションがアドレス・バスに置かれた順序が、絶対的か
つ一意的な時間関係を決定する。したがって、CPU A(例えば、あるタイプ
の装置)によって開始されたトランザクションが、CPU Bによって開始され
たトランザクションの前にバス上に現れた場合、コンピュータ・システムは、ト
ランザクションAを、トランザクションBに先立つものとして見なし、変更する
ことはできない。しかしながら、かかる単純な想定は、かかるコンピュータ・サ
ブシステムを複数個含み、集合的にオムニバス・バス・システム20”を形成す
る複数のバス・システムを備えたシステム10ではもはや通用しない。システム
10全体に対して、全体的なトランザクションの最適な順序を定義するのが、無
視機構17の機能である。
回路基板50−Nは、システム10内において相互接続可能であり、物理的に
、好ましくは同一の16個あるプラグイン基板スロットの内の1つに差し込む。
スロットは、各コンピュータ・サブシステムに関連する中央面の各側に8つずつ
実装されていることが好ましい。これらスロットのいずれにも、多数のCPUお
よび関連するRAM、または好ましくは2系統のSバスを含む入出力(「I/O
」または「IO」)装置を内蔵した、プラグイン回路基板を挿入することができ
る。この明細書のかなり後で説明するが、基板50−Nは、システム10の動作
中、即ち、「ホット」な状態の間でも、差し込むことができる。好適実施例では
、中央面のクロック速度は約83.3Mhzであり、関連するバス・データ帯域
は約
2.67GB/秒である。
各回路基板は、1つまたは2つのユニバーサル・ポート・アーキテクチャ(U
PA:universal port architecture)と互換性のあるCPU装置、例えば、特
定のインターフェースおよび好ましくはランダム・アクセス・メモリ(「RAM
」)を有する装置を含むことが好ましい。
第2図は、バス・システム20および典型的なプラグイン回路基板50−Nを
、更に詳細に示す。第2図において、実線経路はデータ経路を表し、破線経路(
例えば、アドレス・コントローラ180からアドレス・バス60)はアドレス経
路を表す。この後説明するように、アドレス・コントローラ180内の分散調停
("ARB")ユニット186は、本発明の一態様を実施する。
第2図は、バス・システム20および典型的なプラグイン回路基板50−Nを
、更に詳細に示す。第2図において、実線経路はデータ経路を表し、破線経路(
例えば、アドレス・コントローラ180からアドレス・バス60)はアドレス経
路を表す。アドレス・コントローラ180内の好ましい分散型調停("ARB")
ユニット186は、関連するアドレス・バスに対するアクセスの調停を行う。調
停ユニット186において、要素A,B,C,およびDは、リーフ・レベル・ア
ービトレータを表し、要素Eはトップ・レベル・アービトレータを表す。各リー
フ・レベル・アービトレータは、当該リーフ・レベルにおけるバス・アクセスに
対する調停を行い、トップ・レベル・アービトレータは、競合するリーフ・レベ
ル・ウイナ間においてバス・アクセスの調停を行う。
第2図に示すように、各基板50−Nは、好ましくは、データ・バス70(ラ
イン束40−N内の1本のラインを通じて)および基板上のRAM150−Nと
通信を行う、ビット・スライス型データ・バッファ・コントローラ140、なら
びにUPA CPU装置160−Nおよび/または170−N、又はI/Oユニ
ットを含む。データ・バッファ・コントローラ140は、好ましくは、8つのビ
ット・スライス集積回路("IC")チップを含み、これらはUPAポート、メモ
リ、およびバス・システム40間の転送中データをバッファする。
各基板50−Nは、更に、DataBus信号以外の全信号、例えば、アドレス・
バス60、データIDバス90、調停バス80、およびコンフィギュレーション
信
号130と(ライン束40−N内のラインを通じて)通信を行うアドレス・コン
トローラ180も含む。本発明によれば、アドレス・コントローラ180内には
、コヒーレント入力キュー("CIQ”)182、キュー・バッファ("QB")
184、および分散型調停機構("ARB")186がある。
アドレス・コントローラ180は制御信号を発生し、この制御信号は経路19
0を通じてデータ・コントローラ140に搬送される。データ・バス70、アド
レス・バス/状態バス60、調停バス80、およびデータIDバス90上の信号
タイミングは、このようなデータおよびアドレス経路の多重区分(mutiplex-part
itioning)を可能とするように指定される。
第2図に示すように、アドレス・コントローラ180は、基板上のRAMユニ
ット150−N、および各 UPA CPU装置160−N,170−Nとも、
適切なアドレス経路を通じて通信を行う。経路200,210は、アドレス・コ
ントローラを、いわゆるDtag RAMユニット220に結合する。
先に注記したように、「装置」は、メモリのラインをキャッシュ可能なI/O
ユニットを表すこともある。キャッシュ・ブロックまたはキャッシュ・ラインの
ために主メモリを内蔵した基板を、当該ラインの「ホーム」と名付ける。キャッ
シュを含み、コヒーレンスを維持するメモリ空間を、コヒーレント・ドメインと
名付ける。対称的に、コヒーレントでないドメインは、例えば、ストリーミング
・バッファ(streaming buffer)やいわゆる"bcopy"バッファのように、格納され
ているデータに対するコヒーレンスを維持せずにメモリのコピーを保持する場合
もある記憶領域である。
本発明を好適に実施するシステム10およびインターフェース30では、正し
いキャッシュ・コヒーレントの振る舞いおよびメモリの順序を保証することが重
要である。これを行うためには、基板からバス・システムに結合される種々の信
号に対する信号タイミングおよびエンコーディングに対して必須要件を賦課し、
更にシステムの回路基板レベルの必須要件も同様に賦課する。インターフェース
・システム30は、装置間のコヒーレンスを確保するよりはむしろ、基板間のコ
ヒーレンスの確保に関係する。
第3図は、典型的なアドレス・コントローラ180を更に詳細に示す。全ての
装置要求は、要求出力キュー(ROQ:Request Out Queue)176によって
表されるように、順番にアドレス・バス60に発行される。より一般化されたイ
ンターフェースにおいて順序付けせずに応答の到達を許可する場合とは異なり、
システム10をUPAインターフェース装置と共に用いる場合、UPAインター
フェースは順序付けという制約を賦課する。要求にはUPAクラス(0または1
)が割り当てられ、同じクラスの要求に対する応答は、要求順でなければならな
い。しかしながら、異なるクラスの要求に対する応答は、どのような順序で到達
してもよい。キューC0Q174およびC1Qは、同じクラスのUPA要求に対
する応答が順番に到達することを保証する機能を果たす。
ある装置に関連する全てのコヒーレントな要求および割り込み(外部のコヒー
レント要求およびそれ自体のコヒーレントな要求を含む)は、DTAG RAM
220からDtagsによって「フィルタ処理」を受けた後、コヒーレント入力キュ
ー("CIQ")182に入力される。アドレス・コントローラのDTAGメモリ
220の内容とタグのバス・レベルのRAM表現との間のタグ比較により、例え
ば、所与のメモリ・アドレスから古い(例えば、現状では有効でない)データを
求める要求を、素早く識別するためのフィルタ処理を可能にする。
装置との関連では、局所的な要求は、装置自体からの要求であり、それに対し
て外部要求(foreign request)は、他の装置からこの装置に向けられた要求であ
る。第3図に示すように、全ての装置入出力("PIO")要求は、ローカルPI
Oキュー("LPIOQ")183に入力され、当該装置に対する全ての外部PI
O要求は、外部PIOキュー("FPIOQ")184に入力される。一般的に、
トランザクションは順番に処理され、キューの先頭から開始される。
装置160−Nに入力するデータおよびこれより出力するデータは、第3図に
示すように、2つのバッファ(例えば、キューではない)、即ち、データ出力バ
ッファ("DOB":Data Out Buffer)186、およびデータ入力バッファ("
DIB":data In Buffer)187にバッファされる。
また、アドレス・コントローラ180は、Dtagsバッファ220、ダーティな
ビクティム(dirty victim)をスヌープするために用いられるDVICTタグ17
9、デコード・ユニット185、およびダーティなビクティムによるキャッシュ
・ミ
スのコピーバック(copyback)およびパーフォーマンスを最適化するために用いら
れるVbffer188を内蔵する。
に出願され、 と題し、本発明と同一譲受人に譲渡さ
れた米国特許出願第08/ 号は、Vbfferおよびコピーバック
の最適化方法の実施例を開示しており、これを用いて本発明を実施することが可
能である。しかしながら、他のバッファおよび方法を代わりに用いてもよい。第
3図に示すように、アドレス・コントローラ180は、調停ユニット186およ
びメモリ・コントローラ189も含む。好適実施例において用いられる信号群についての概要
システム30において、好ましくは、アドレス・バス60、データ・バス70
、調停バス80、データIDバス90、状態信号バス100、ステータス信号バ
ス110、パリティ・ビット信号バス120、およびコンフィギュレーション信
号バス130を含む、8系統の信号群がある。実際には、これらの論理信号群の
いくつかは、同じバス信号配線上で、時間多重化される。
アドレス・バス60は、ソース回路基板装置からコマンドを同報通信すると共
に、要求元基板からシステム10内全ての基板に、好ましくは41ビットのアド
レスを同報通信するために用いられる。アドレス・バス内のSourceIDフィー
ルドは、各トランザクションに一意的にタグを付けるために用いられる。「トラ
ンザクション」という用語は、アドレス・バス・パケット、およびその対応する
有効データ・バス・パケットを意味する。システム30では、従来技術では一般
的に実施されているようにデータ・バス・パケット上ではなく、アドレス・バス
・パケット上でキャッシュ・ラインの所有権を移転させることによって、プロト
コルの大幅な簡略化を図っている。したがって、基板50−Nは、実際にライン
に対するデータを有する前であっても、ラインを所有する場合がある。また、ア
ドレス・バスは全体的な順序を定義し、これを用いて、特定のメモリ・モデルを
実施することができる。メモリ・モデルは、例えば、全格納順("TSO":total
storeorder)、部分的格納順("PSO":partial store order)、および緩和
メモリ順("RMO":relaxed memory order)のように、システム・レベルにお
いて指定することができる。かかる特定メモリ・モデルは、Sun Microsystems
社のSPARC
V9仕様において定義されている。
システム30は、好ましくは、2サイクル・アドレス・パケット(1サイクル
ではなく)を使用して、基板がアドレス・バス・トランザクション全てに対して
スヌープすることを可能にしている。各スヌープは、タグを読み取るために1サ
イクル、およびタグを書き込むために1サイクルの合計2サイクルを必要とする
。2サイクル・プロトコルは、データ・バス・パケットにも同様に用いられる。
データ・バス70は、2つの基板間でデータを転送するために用いられ、デー
タ・バス・パケットは、いずれの順序でデータ・バス上に発生することも許可さ
れており、装置によって観察されるメモリ・モデルに影響を与えることはない。
データ転送は、応答側から開始側へのリード型、または開始側から応答側へのラ
イト型でもよい。アドレス・バス・パケットを発行する(例えば、同報通信する
)基板のことを、トランザクションの「開始側」と呼ぶ。リード型トランザクシ
ョンに対して要求データを提供し、ライト型動作に対してデータを受け入れる基
板のことを「応答側」と呼ぶ。応答側および開始側は、実際には同一基板である
場合もある。
先に注記したように、データ・バス・パケットは2サイクル長であり、データ
・バス・パケット間にブランク・サイクルを設ける必要はない。各サイクル毎に
、データ・バスは、好ましくは、256ビットのデータ(これにエラー訂正コー
ド("ECC")が追加される)を搬送する。したがって、データ・バス・パケッ
トは、好ましくは、64バイトのデータを搬送する。
調停バス80は、アドレス・バス60およびデータ・バス70に対する調停を
行うために用いられ、かかる調停には1つ置きのサイクルが用いられる。したが
って、連続するサイクルは、アドレス("A")およびデータ("D")間で交代す
る。
データIDバス90は、データ・バス・パケットを発し、あらゆるデータ・バ
ス転送の前に用いられる、アドレス・バス・パケットのSourceIDを搬送する
。バス90は、データ・バス転送とアドレス・バス・パケットを照合し、データ
・バス上での適切なデータの駆動を許可するか、あるいは適切な記憶バッファへ
のデータのロードを許可するために用いられる。
状態信号100は、アドレス・バス・パケットによってアドレスされたライン
の状態を示すラインである。これらのラインは、SHARED,OWNED,MA
PPED,およびIGNORE信号を含み、以下の第7表に示す通りである。以
下で説明するように、IGNORE信号は、好ましくは、全体的なトランザクシ
ョンの最適な順序付けを実施するために用いられる。
ステータス信号110は2本のラインを含み、トランザクションにおけるエラ
ー、データ・バス上の有効なECC、および応答(データ・バス・パケット)の
取り消しを示す。
パリティ・ビット信号120は、調停バス、状態信号、ステータス信号、およ
びデータIDバスにおいてエラーを検出するために用いられる。(アドレス・バ
スは、好ましくは、それ自体のパリティ・ラインによって保護され、データ・バ
スがECCを搬送する)。
コンフィギュレーション信号130は、クロック、リセット、JTAG、およ
びその他の実施態様によって異なる信号、例えば、ホット・プラグ回路基板挿入
機能に用いられるトリガ信号および係合信号のような機構(facility)を備えてい
る。
第1表は、システム30と共に用いられる信号群を纏めたものである。
アドレス・バス信号群の定義
アドレス・バス60は、好ましくは、1つのパリティ信号を含む、43本の信
号線で構成される。第2表は、アドレス・バス・パケット・フィールド、および
2回の連続サイクルにおいて駆動されるアドレス・バス・パケットを示す。
多重化される共有フィールドおよび無視フィールドは、論理的には、アドレス
・バスの一部ではなく(これらは同じピンを共有するが)、アドレス・バスの残
りの部分を用いて開始側によって駆動されるものではない。しかしながら、他の
フィールドは全て、開始側によって駆動される。パリティ・ビットは、それらが
保護するアドレス・バス・フィールドよりも1サイクル遅れて駆動される。した
がって、Parity0 フィールドは、サイクル0において駆動されるアドレス・バ
ス・フィールドを保護し、一方Parity1 フィールドは、サイクル1において駆
動されるアドレス・バス・フィールドを保護する。1サイクル遅れてパリティ・
フィールドを駆動することにより、パリティを計算するための時間が得られる。
予約フィールドは、好ましくは、開始側によって駆動されない。
Parity1 フィールドは、開始側によって駆動されないので、共有フィールド
または無視フィールドを保護しない。代わりに、共有フィールドおよび無視フィ
ールドは、後に述べる、ParityD信号によって保護される。
先に注記したように、タグのリードおよびライトに2サイクルを要するので、
基板が全てのアドレス・バス・トランザクションをスヌープできるようにするに
は、各アドレス・バス・パケットは2サイクル必要とする。
好適実施例では、アドレス・フィールドは物理アドレスのビット40:4を含
む。ビット3:0は不要である。何故なら、これらが含む情報は全て ByteMas
kフィールドから得られるからである。ByteMaskフィールドは、ReadIOおよ
びWriteIOトランザクションに対して、いずれかの数の16バイトを指定する
ために用いられる。
第2表では、ReadToShare,ReadToShareAlways,およびReadToOwnト
ラン
ザクションにおいてビクティム・ビットを用いて、トランザクションに伴うキャ
ッシュ・ミスにより、ダーティなビクティムが発生したことを示す。ビクティム
・ビットは、割り込みパケットが、特殊な割り込み源をエンコードするために用
いることができる。このビットは、他のいずれのトランザクションにも用いられ
ず、0として駆動される。
ポート・フィールドは、基板内における装置番号を示し、基板当たり多くとも
2つの装置を有するに過ぎないシステムでは、1ビットのポート・フィールドで
十分である。
パリティ・ビットは、第3表に示すように、アドレス・バス・フィールド上に
おいて偶数パリティをエンコードする。パリティは、それらが保護するフィール
ドより1サイクル遅れて駆動され、これによりパリティを計算するための十分な
時間が得られる。
第3表において、SourceIDフィールドは、アドレス・バス・パケットに一
意的にタグを付けるために用いられる。応答側は、SourceIDをデータIDバ
ス上に置き、アドレス・バス・パケットおよびデータ・バス・パケットの照合を
行う。SourceIDフィールドは2つの下位フィールドを有する。BoardID[6:
3]下位フィールドは基板を識別し、TransactionID[2:0]下位フィールドは当
該基板内におけるトランザクションを識別する。0のTransactionIDはアイド
ルのために予約されており、これによって、各基板に、7つまでの未決のトラン
ザクションを有することを許可している。未決のトランザクションは全て一意の
SourceIDを有するが、TransactionIDの選択は、実施態様によって異なる
。コマンド・フィールド
第4表は、システム30において用いられる、コマンド・フィールドのエンコ
ーディングを示す。
データ・バス信号群の定義
データ・バス90に対する信号群の定義について、これより詳細に説明する。
各データ・バスは、第5表に示すようなフィールドを有する。
データは、Kanedaによって開発された、独立のSEC-DED-S4EDエラ
ー訂正コードによって保護されることが好ましいが、他の形態の保護も代わりに
使用可能である。好適実施例では、8ビットのECCフィールドが、第6表に指
定したように、各64ビット・データ・フィールド毎に関連付けられている。
データ・バス・パケットは、2サイクル(64ビット)長であり、隣接するデ
ータ・バス・パケット間にアイドル・サイクルを設ける必要はない。
ブロック転送に対するデータ・バス上のデータの順序は、Address[5]によっ
て決定され、32バイトの整合データ量(data quantum)は、好ましくは最初に供
給されるアドレスを含む。Address[5]が0である場合、最初のデータ・サイク
ルはバイト0ないし31までを含み、次のデータ・サイクルはバイト32ないし
63までを含む。Address[5]が1である場合、最初のデータ・サイクルはバイ
ト32ないし63を含み、次のサイクルはバイト0ないし31を含む。
非ブロック転送(ReadIO,WriteIO)では、最初のデータ・サイクルのバイ
ト0ないし16にデータが配置され、個々のバイトはByteMaskフィールドにお
いて指定される。ByteMaskフィールドについては本明細書の別のところで述べ
る。各データ・サイクルにおいて、バイトは順序正しく並んでおり、最も番号が
小さいバイトが最も番号が大きいビットを占めている。データIDバス信号群
DataIDバスに対する信号群について、次に説明する。データIDバスは7
ビット幅であり、データ・バス・パケットを以前のアドレス・バス・パケットと
照合するために用いられる。DataIDは1回置きのクロック・サイクル上での
み駆動されるので、第2表に示すように多数の他の信号と、信号ピンを多重化形
式で共有することができる。
第7表は好適実施例において用いられるデータIDバス・フィールドを示す。
次に第4図を参照すると、データIDバス90は、最初のDataIDがデータ
・バス70上で使用可能になる前に、5クロック・サイクル駆動されることがわ
かる。この5サイクルのレイテンシは、適切なデータを駆動する十分な時間を与
えるために必要である。
第4図において、各アドレス・コントローラ180は、少なくとも1つのラッ
チ・クロック・レジスタ("LCR":latched clock regioter)を含む。最も右
側にあるアドレス・コントローラに対する名称"180*"は、物理的にこのアドレス
・コントローラは、要求元即ち開始側CPUを内蔵するカード以外の回路カード
50−N上に位置し得ることを表す。スロット即ちクロック・サイクル"0"にお
いて、データ・バス調停(以下で説明する)を勝ち取った要求元は、そのデータ
IDをデータIDバス90上に置き、サイクル"1"においてこの情報をアドレス
・コントローラ180*に結合する。サイクル2において、アドレス・コントロ
ーラ180*と関連する出力LCRは、このデータIDを、要求元回路カード上
のビット・スライス・データ・バッファ・コントローラ140に関連する入力L
CRに結合する。ユニット140内には、2サイクルのレイテンシがあり、クロ
ック・サイクル5上で、データIDはデータ・バス70に書き込まれる。
データ・バス調停の「ウイナ」は、データIDバスに対する調停の暗示的なウ
イナでもあるので、データIDバスへのアクセスに対する別個の調停は必要ない
。調停バス信号群
プラグイン回路基板50−Nは、調停バス80を用いて、アドレス・バスとデ
ータ・バスとの間の調停に用いられる調停バス上で、交互のアドレス("A")サ
イ
クルおよびデータ("D")サイクルによって、アドレス・バス60およびデータ
・バス90へのアクセスを得る。データIDバスおよびステータス信号に対する
アクセスは、データ・バスと共に暗示的に得られる。第8表によって示されるよ
うに、調停バスは好ましくは3つのフィールドで構成される。
要求ラインは、各回路基板毎に1本割り当てられ、分散型調停アルゴリズムを
この調停に用いることが好ましい。バス・アクセスを行おうとする各基板は、そ
の要求ラインをアサートし、そのほかの要求ライン全てを読み取る。アドレス・
バス・アクセスに対する調停は、各回路基板50−N上のアドレス・コントロー
ラ180内にあるARBユニット186の中で分散形式で決定される。調停のウ
イナは、要求が駆動されてから1サイクル後に決定される。次いで、バス(アド
レス・バスまたはデータ・バス)は、次のサイクルにおいて駆動することができ
る。
各基板上のアドレス・コントローラ180内のARBユニット186は、全て
の基板に、同じ階層総当たり型調停アルゴリズムを実行させ、各ARBユニット
186の状態が互いに同期を保つようにする。ArbSync信号は、1つの基板(
典型的にファームウエアで選択される)によって駆動され、基板がそれらの調停
状熊機械を同期化する機構を与える。ArbSyncは交互に1値および0値に駆動
され、それぞれ交互のアドレス調停サイクルおよびデータ調停サイクルを示す。
好適実施例では、ArbSyncを駆動する基板は、同じ値を2サイクルの間駆動す
ることによって、調停のリセットを行わせることもできる。(ArbSyncはハー
ドウエアのデバッグ処理にも有用である。)
データ・バスの調停は、データが得られる前に開始することができるので、通
常調停レイテンシを重複することができる。これにより、データ・バス調停では
、
2サイクル後に、単純なウイナの選択を用いることが可能となる。
FlowControlフィールドは、ある種のトランザクションに対するアドレス・
バス調停要求を中止するために用いられる。フロー制御
次にFlowControl信号について説明する。フロー制御は、好ましくは、あら
ゆる数の基板によって駆動されるワイヤードOR信号であり、それらのアドレス
・バス・パケットのフロー制御を行う必要性を示す。ワイヤードORラインの電
気的特性のために、FlowControlは非同期信号として取り扱わなければならな
い。
基板は、FlowControlがアサートされていることが観察されてから2サイク
ル後に開始するAdmin,ReadIOまたはWriteIO以外のトランザクションを
開始するために、アドレス・バスの要求を行ってはならない。FlowControlが
ディアサートされて2サイクル後に開始することにより、基板はアドレス・バス
の要求を行い、あらゆる種類のトランザクションを開始することができる。フロ
ー制御は、Admin,ReadIO,またはWriteIOトランザクションには不要であ
る。フロー制御は、データ・バスに対しても不要であり、DataBus調停サイク
ルの間無視すべきである。これは、リード型転送では、開始側は常にそのDIB
187に空間を有し、ライト型転送では、応答側は、データを受け入れる空間が
足りない場合、常にDataCancelをアサートすることができるからである。好適実施例によるトランザクションの概要
各トランザクションは、1つの同報通信アドレス・バス・パケットと、1つの
有効な二点間データ・バス・パケット(point-to-point Data Bus packet)とを
伴う。後に説明するが、取り消された1つの無効DataBusパケットがある場合
もある。分散型ARBユニット186の目的は、あらゆるプラグ基板50−N上
のあらゆるCPU装置によって発行された要求についても、迅速かつ最少のレイ
テンシで調停を行い、調停を勝ち取った基板実装装置に許可信号を迅速に発行す
ることである。リード型トランザクション
典型的なリード型トランザクションは次のように行われる。
(1)開始側基板上のCPUが、調停バスを用いて、アドレス・バスの調停を
行う。
(2)開始側は、アドレス、命令、およびSourceIDによって、アドレス・
バスを駆動する。
(3)全ての基板がアドレス・バスと通信し、アドレスを「スヌープ」する。
アドレス・サイクルに続く一定の遅延の後、アドレスがアドレス・バス上にあっ
た時点におけるラインの状態を示す状態信号を、全ての基板が駆動する。必要で
あれば、基板は、後のサイクルにおいて、アドレス・バス・パケットに対して、
その基板に実装されているDTAG RAMユニット220(第2図参照)内の
キャッシュ・タグを更新するが、データ・バス・パケットによってタグの更新が
行われることはない。
(4)応答側基板は、調停バスおよび分散型ARBユニット186を用いて、
データ・バスに対する調停を行う。分散型とは、各プラグイン回路基板上の各ア
ドレス・コントローラ180が、その他の各ARBユニットと状態が同一である
ARBユニット186を内蔵していることを意味する。
(5)応答側基板は、アドレス・バス・パケットからのSourceIDによって
、データIDバスを駆動する。
(6)応答側基板は、状態信号を駆動する。
(7)応答側はデータ・バス・サイクルを2回駆動する。
(8)データが宛先にロードされる。
システム30は、リード型トランザクション(応答側から開始側へのデータ転
送の結果発生する)、およびライト型トランザクション(開始側から応答側への
データ転送の結果発生する)を含む、小さな集合のトランザクションを定義する
。集合的に、これらのトランザクションは、ReadToShare,ReadToShareA
lways,ReadToOwn,ReadStream,ReadIOおよびReadBlockIO,Write
Back,WriteStrem,WriteIOおよびWriteBlockIO,Interrupt,Read
ToShareFork,ならびにAdmin(疑似トランザクション)を含む。これらのト
ランザクションに対する好適な特定エンコーディングを、第3表に示す。リード型トランザクション集合
リード型トランザクション集合は、(i)ReadToShare および
ReadToShareAlwaysトランザクション、(ii)ReadToOwnトランザクション
、(iii)ReadStreamトランザクション、および(iv)ReadIOおよびReadBloc
kIOトランザクションを含む。各トランザクションに対して開始側および応答
側によって要求される動作、ならびに実行が必要なスヌーピング動作についてこ
れより説明する。尚、状態機械についての最小限の特性を示すが、特定のキャッ
シュ状態および特定のトランザクションを強制する必要はないことを注記してお
く。また、メモリ順序およびキャッシュのコヒーレンスは、システム30と共に
用いるシステムのアーキテクチャ、および、例えば、UPA型インターフェース
仕様のような装置インターフェースの仕様の双方に依存することも注記しておく
。(i) ReadToShareおよびReadToShareAlwaysトランザクション
ReadToShareおよびReadToShareAlwaysトランザクションは、装置内にお
けるキャッシュ・リード・ミスを満足するために用いられる。ReadToShareト
ランザクションは、ある基板が後に書き込もうとするラインをキャッシュしたい
場合いに、その基板によって開始される。スヌーピングに関しては、このアドレ
スに対するホーム・メモリ(home memory)がMappedをアサートする。Mappedが
アサートされない場合、開始側は応答を期待せず、当該装置にエラーを返す。全
ての基板はアドレス・バス・パケットをスヌープし、それらが当該ラインのキャ
ッシュ・コピーを有する場合、Shared をアサートする。当該ラインを所有する
基板もOwnedをアサートし、開始側に応答する。ラインのオーナは、多くとも1
つに過ぎない。基板が最初に他のトランザクションを発行したい場合、Ignore
をアサートすればよい。開始側が多数の装置を有する場合、トランザクションは
、ある装置におけるキャッシュ・ミスに応答して開始することができ、要求され
たラインは、同一基板内の他の装置にキャッシュすることができる。この場合、
開始側はSharedをアサートする。同様に、ラインが同一基板内の他の装置によ
って所有されている場合、開始側はOwnedをアサートする。この場合、開始側お
よび応答側は同一基板である。
応答側に関して、ある基板が要求されたキャッシュ・ラインを所有する場合、
この基板がトランザクションに応答する。キャッシュ・ラインを所有する基板が
ない場合、そのラインのホームが応答する。メモリのレイテンシを最少に抑える
ために、メモリは、Owned信号が有効になる前に、その応答を開始することがで
きる。応答には、データ・バスに対する調停を行うこと、およびデータIDバス
を駆動することが含まれる。ラインが他の基板に所有されている場合、メモリは
、DataCancelをアサートすることによって、そのデータ・バス・パケットを取
り消す。Ignoreがアサートされ、メモリがその応答を既に開始している場合、
応答側がそのデータ・バス・パケットを取り消す。メモリは、不確実な応答に対
してはDataIDを発行しないことが好ましい。これは、対応するアドレス・バ
ス・パケットの最初のサイクルから11サイクル後に取り消すことができる。キ
ャッシュの状態に関して、Sharedがアサートされている場合、開始側は当該ラ
インに対する状態をセットし、それが共有されていることを示す。ある基板がそ
のラインを所有している場合、そのラインのオーナであり続ける。
他にラインを共有する基板がない場合、開始側はそのラインのオーナになるこ
とを選択してもよい。これは、ラインが所有されていた場合よりも強い条件を表
す。これは、キャッシュ・ラインへの最初の書き込みを一層効率的にすることが
できるので有用であり、手順がUPAプロトコルにおいて用いられるという利点
がある。この実施態様の手順を用いる場合、開始側は、Shared信号の受け取り
まで、それがラインの所有権を得るか否かについてはわからない。しかし、所有
権が得られた場合、開始側は、そのアドレス・バス・パケットがアドレス・バス
上にあった時点に遡って、そのようにする。これは可能であるが、この際、開始
側は、それ自体のトランザクションに対するOwned信号の後に、Owned信号をア
サートするだけでよく、その時点までに、それがオーナであることがわかる。I
gnoreがアサートされた場合、このラインの状態は変化しない。
ReadToShareAlwaysトランザクションは、システム30の観点からは、Re
adToShareトランザクションと実質的に同じ場合がある。開始側は、書き込も
うとする意図がないラインをキャッシュしたい場合に、ReadToShareAlways
を発行する。他のSharedをアサートする基板がない場合であっても、開始側が
そのラインのオーナにはならないことを薦める。(ii) ReadToOwnトランザクション
ReadToOwnトランザクションは、キャッシュ・ライト・ミスを満足するため
に用いられる。ある基板が、そのキャッシュから他の基板にラインを供給する責
務を得た場合、その基板のことを「オーナ」であるという。基板が所有権を要求
する際、ReadToOwnトランザクションを開始して、オーナとなる。ReadToO
wnトランザクションは、キャッシュ・ラインに書き込みができるようにその独占
的所有権を望む基板によって開始される。同じトランザクションは、開始側が当
該ラインの有効なキャッシュ・コピーを有するか否かには無関係に用いられる。
スヌーピングおよびReadToOwnトランザクションに関して、このアドレスに
対応するメモリを有する基板がMappedをアサートする。その他の場合、Mapped
がアサートされなければ、開始側は応答を期待せず、エラーを当該装置に返す。
全ての基板はアドレス・バス・パケットをスヌープし、ラインを所有する基板が
Ownedをアサートし、開始側に応答する。ラインのオーナは多くとも1つに過ぎ
ない。開始側が既にラインの有効なコピーを有する場合、データを必要としない
が、ReadToOwnトランザクションを用いて、そのラインの独占的所有権を得る
。この場合、開始側は、Shared もアサートし、当該ラインを所有し得る他のキ
ャッシュまたはメモリからの応答を禁止してもよい。
ある基板が要求されたキャッシュ・ラインを所有し、それがOwnedラインをア
サートした場合、この基板がReadToOwn トランザクションに応答する。Owne
dがアサートされなければ、そのラインに対するメモリが応答する。メモリのレ
イテンシを最少に抑えるために、Owned信号が有効になる前にメモリはその応答
を開始することができる。応答には、データ・バスに対する調停を行うこと、お
よびデータIDバスを駆動することが含まれる。メモリは、Ownedがアサートさ
れている場合、DataCancelをアサートすることによって、そのデータ・バス・
パケットを取り消す。Ignoreがアサートされ、メモリが既にその応答を開始し
ている場合、応答側がそのデータ・バス・パケットを取り消す。先に注記したよ
うに、メモリは、不確実な応答にはDataIDを発行すべきでない。不確実な応
答は、対応するアドレス・バス・パケットの最初のサイクルから11サイクル後
に取り消すことができる。
キャッシュ状態およびReadToOwnトランザクションに関して、開始側は、そ
のアドレス・バス・パケットがアドレス・バス上に現れた直後に、キャッシュ・
ラインの所有権を得る。開始側基板以外の全基板は、そのキャッシュ・ラインの
コピーを無効化する。キャッシュ・ラインのオーナ(1つであり、それが開始側
ではない場合)も、そのラインのコピーを無効化し、開始側に応答し、応答側か
らのデータ・パケットがそのキャッシュの唯一のコピーとなる。開始側が多数の
装置を有する場合、開始側は、ReadToOwnトランザクションを開始した装置以
外の装置全てにおけるキャッシュ・ラインのコピーを無効化する。トランザクシ
ョンを開始した装置には、応答側からのデータを、当該キャッシュ・ラインの唯
一のコピーとして与えなければならない。Ignoreがアサートされると、ライン
の状態は変化しない。
所有権は、ラインを要求するときに決定されるのであり、当該ラインに対する
データを受け取るときではない。したがって、オーナはそれ自体のキャッシュに
実際にはそのラインを未だ有していない場合もある。しかし、あるラインに対す
るオーナは、いずれの所与の時点でも多くとも1つに過ぎない。このコヒーレン
ス・プロトコルは、「オーナ」と「ライタ」とを区別する点で、従来技術のコヒ
ーレンス・プロトコルの殆どと相違する。「ライタ」という用語は、潜在的にラ
インのダーティなコピーを有する基板のことを言う。所有権は他の基板が所有権
を要求するとすぐに移転するので、ライタはオーナになる必要はない。したがっ
て、ライタは、それがラインを他の基板に供給するまで、当該ラインへの書き込
みを継続することができる。いずれの時点でもラインに対するライタは多くとも
1つに過ぎない。(iii) ReadStreamトランザクション
ReadStreamトランザクションは、メモリから、bcopyまたはストリーミング
・バッファ(streaming buffer)のように非コヒーレント・ドメインにデータ・ブ
ロックを読み取る際に用いられる。ここで用いる場合、「ブロック」または「ラ
イン」という用語は、通常キャッシュ・ブロックと関連付けられている64バイ
トの整合データを表す。ReadStreamトランザクションは、ある基板がコヒーレ
ント・ドメインから非コヒーレント・ドメインにラインを読み取りたい場合に、
その基板によって開始される。スヌーピングに関して、このアドレスに対応する
メモリを有する基板がMappedをアサートし、その他の場合、開始側は応答を期
待せず、
装置にエラーを戻す。全ての基板がアドレス・バス・パケットをスヌープする。
ラインを所有する基板がOwnedをアサートし、開始側に応答する。ラインのオー
ナは多くとも1つである。基板が最初に他のトランザクションを発行したい場合
、Ignoreをアサートすればよい。
応答側に関して、ある基板が要求されたキャッシュ・ラインを所有する場合、
これがReadStreamトランザクションに応答し、キャッシュ・ラインを所有する
基板がない場合、当該ラインのホームが応答する。メモリ・レイテンシを最少に
抑えるために、ホームは、Owned信号が有効になる前に、その応答を開始するこ
とができる(応答には、データ・バスに対する調停を行うこと、およびデータI
Dバスを駆動することが含まれる)。ラインが他の基板に所有されている場合、
ホームはDataCancelをアサートすることによって、そのデータ・バス・パケッ
トをキャンセルする。Ignoredがアサートされ、メモリが既にその応答を開始し
ている場合、応答側がそのデータ・バス・パケットを取り消す。メモリは、不確
実な応答に対してはDataIDを発行すべきでない。これは、対応するアドレス
・バス・パケットの最初のサイクルから11サイクル後に取り消すことができる
。ReadStreamトランザクションが、キャッシュ・ラインの状態変化を発生させ
ることは全くない。(iv) ReadIOおよびReadBlockIO
ReadIOおよびReadBlockIOトランザクションは、入出力(「I/O」ま
たは「IO」)空間からのリードに用いられる。ReadIOトランザクションは
、バイト、半ワード、ワード、二重ワード、四重ワード、およびマスタされたバ
イト(byte-masked)のリードに用いられ、一方ReadBlockIOは64バイト・ブ
ロックを読み取るために用いられる。基板がIO空間からのリードを望む場合、
その基板がこれらのトランザクションを開始する。ReadBlockIOトランザク
ションは、好ましくは64バイトのブロックを読み取る際に用いられ、ReadI
Oは、アドレス・フィールドにおいて指定された16バイト整合アドレス範囲か
らのByteMaskによって示される、好ましくは16バイトの任意の組み合わせを
読み取る際に用いられる。
ReadIOおよびReadBlockIOトランザクションにはスヌーピングは不要で
ある
が、全ての基板はアドレスをデコードして、それらが応答すべきか否かについて
の判定を行う。応答するのは多くとも1つの基板であり、応答しようとする基板
がMappedをアサートする。Mappedがアサートされなければ、開始側は応答を期
待せずに、装置にエラーを返す。Ignoreは、ReadIOおよびReadBlockIO
トランザクションに対しては、アサートすることができない。これら2つのトラ
ンザクションに関して、要求されたIOアドレスを含む基板が応答側となる。こ
れらのトランザクションは、キャッシュ・ラインの状態には何の変化も発生させ
ない。ライト型トランザクション
ライト型トランザクション集合は、(v)WriteBack、(vi)WriteStream、(vi
i)WriteIOおよびWriteBlockIO、(viii)割り込み、(ix)ReadToShareF
ork、および(x)Adminを含む。これらのトランザクション・タイプについてこれ
より詳しく説明する。(v) WriteBack
WriteBackトランザクションは、ダーティなビクティムをメモリに書き戻す
際に用いられる。WriteBackトランザクションは、ブロック整合され、基板が
ダーティなラインをメモリに格納したいときに、当該基板によって開始される。
スヌーピングに関して、アドレスに対するホーム・メモリがMappedをアサート
する。開始側はパケットをスヌープし、ラインが所有されていない場合、Owned
をアサートし、当該ラインが以前のトランザクションによって無効化され、Wri
teBackが取り消されることを示す。基板が最初に他のトランザクションを発行
したい場合、Ignoreをアサートすればよい。
応答側に関しては、要求されたメモリ・アドレスのホームが応答側となる。全
てのライト型動作と同様に、データはまず開始側によって「押し出される」。応
答側がこのデータを受け入れることができない場合、DataCancelをアサートす
る。次に、応答側は、データを「引き込む」責務を得る。これが暗示するのは、
応答側は、それが「引き込もう」とするライト型動作を追跡し続けるということ
である。開始側が適切なDataIDによってデータ・バスを駆動しデータを「引
き込む」場合、開始側は、データで応答する用意ができていなければならない。
開
始側がWriteBackのためにOwnedをアサートした場合、全ライト型データ転送(
full write-type data transfer)が行われるが、データはメモリには書き込まれ
ない。Ignoreがアサートされると、データ・パケットは発行されない。キャッ
シュの状熊に関して、開始側は、WriteBackトランザクションに対するアドレ
ス・パケットが発行された場合、ラインに対する所有権を放棄する。他の基板が
ReadToOwnまたはWriteStreamトランザクションを最初に開始した場合、こ
のトランザクションを開始してはならない(またはOwnedをアサートすることに
より、開始側が取り消さなければならない)。このような場合、開始側は、Own
edをアサートすることによって、WriteBackトランザクションを取り消す。
一旦WriteBackアドレス・バス・パケットが発行されたなら、当該ラインに
対するメモリは、他の基板がオーナとなるまで、このラインに対する以降の要求
に応答する責務を負う。この責務は、データ・バス・パケットがメモリに受け取
られていない場合でも存在する。したがって、ホームは、未決のWriteBackトラ
ンザクションを追跡し、未決のWriteBackトランザクションを伴うラインに対
する応答を延期する。これを行うのは、ホームは、それ自体の古いデータのコピ
ーで応答するのではなく、WriteBackからのデータで応答するからである。Ig
noreがアサートされている場合、ラインの状態は変化しない。
ここで用いる場合、「ビクティム(victim)」とは、新しいデータが書き込まれ
る交換の対象として識別されたキャッシュ・ラインのことである。ビクティム・
キャッシュ・ライン内のデータは、主メモリが既にそのデータを含んでいる場合
は「クリーン」であり、キャッシュ・ラインが更新されている(主メモリは更新
されていない)場合、「ダーティ」であり、この場合、主メモリを更新するため
に、書き戻しが必要となる。(vi) WriteStream
WriteStreamトランザクションは、bcopyバッファまたはストリーミングIO
バッファのように非コヒーレント・ドメインから、新しいデータをメモリ・ブロ
ックに書き込む際に用いられる。WriteStreamトランザクションは、ある基板
が新しいデータを、bcopyバッファまたはストリーミングIOバッファのように
非コヒーレント・ドメインからメモリのラインに書き込みたい場合に、この基板
に
よって開始される。全ての基板はアドレス・バス・パケットをスヌープし、ある
基板(開始側を含む)が当該ラインのコピーを有する場合、そのコピーを無効化
する。SharedまたはOwned信号をアサートしてはならず、このアドレスに対応
するメモリを有する基板はMappedをアサートする。基板が最初に別のトランザ
クションを発行したい場合、Ignoreをアサートすればよい。
要求されたメモリ・アドレスのホームは、応答側となる。開始側はまず、デー
タ・バスに対する調停を行い、データを駆動することによって、応答側にデータ
を「押し出そう」とする。応答側がデータを受け入れる用意ができていない場合
、応答側はDataCancelをアサートする。しかしながら、応答側は次にデータ・
バスの調停を行い、適切なDataIDを駆動することによって、データを「引き込
む」。これが暗示するのは、応答側はそれが「引き込もう」としているライト型
動作を追跡しているということである。開始側は適切なDataIDを用いてデー
タ・バスを駆動しデータを「引き込む」際、開始側はデータで応答する用意がで
きていなければならない。Ignoreがアサートされている場合、データ・パケッ
トは発行されない。全ての基板は、そのキャッシュ・ラインのコピーを無効化す
る。Ignoreがアサートされている場合、ラインの状態は変化しない。(vii) WriteIOおよびWriteBlockIO
WriteIOおよびWriteBlockIOトランザクションは、データを入出力空間
に格納する際に用いられる。基板がデータを入出力空間に書き込みたい場合、W
riteIOおよびWriteBlockIOを開始する。WriteBlockIOトランザクショ
ンは、64バイト・ブロックを書き込む際に用いるのが好ましい。WriteIOト
ランザクションは、アドレス・フィールド内において指定された16バイト整合
アドレス範囲から、ByteMaskによって示される16バイトの任意の組み合わせ
を書き込む際に用いられる。これらのトランザクションにはスヌーピングは不要
であるが、全ての基板はアドレスをデコードして、応答すべきか否かについての
判定を行う。応答するのは多くとも1つの基板であり、ある基板が応答しようと
する場合、Mappedをアサートする。Ignoreは、これらのトランザクションに対
しては、アサートしてはならない。
要求されたIOアドレスを含む基板は応答側となる。開始側は、まず、データ
・
バスに対する調停を行い、データを駆動することによって、データを応答側に「
押し出そう」とする。応答側がデータを受け入れる用意ができていない場合、D
ataCancelをアサートし、次いでデータ・バスの調停を行い、適切なDataID
を駆動することによって、データを「引き込む」。これが暗示するのは、応答側
はそれが「引き込もう」としているライト型動作を追跡しているということであ
る。開始側が適切なDataIDを用いてデータ・バスを駆動しデータを「引き込
む」場合、開始側はデータで応答する用意ができていることが好ましい。これら
のトランザクションがキャッシュ・ラインの状態に何らかの変化を生ずる原因と
なることはない。(viii) 割り込み
割り込みトランザクションはライト型トランザクションであり、このトランザ
クションに対して、割り込みに関連するいわゆる「モンド・ベクトル(mondovect
or)」を宛先に書き込むために、データ・バス・パケットが用いられる。DataB
usパケットは割り込みベクトル情報を含む。割り込みトランザクションは、ある
基板が割り込みベクトルを他のボードに送りたいときに、この基板によって開始
される。割り込みの目標は、アドレス・フィールドにおいて指定され、実施態様
によって異なる。好適実施例では、割り込み目標IDは、UPA内に指定されて
いるのと同じアドレス・ビット、即ち、PA<18:14>上で搬送される。
割り込みトランザクションにはスヌーピングは不要であるが、全ての基板はア
ドレスをデコードし、応答すべきか否かについての判定を行う。割り込みの意図
した宛先である基板は、Mappedをアサートする。割り込みの宛先がこの割り込
みを受け入れることができない場合、Shared信号をアサートし、トランザクシ
ョンを取り消す。基板が最初に他のトランザクションを発行したい場合、Ignor
eをアサートすればよい。アドレス・バス・パケットによってアドレスされた基
板は、Shared信号をアサートして、割り込みが受け入れられなかったことを示
さなければ、応答側となる。開始側は、まず、データ・バスに対する調停を行い
、データを駆動することによって、応答側にデータを「押し出そう」とする。応
答側がデータを受け入れる用意ができていない場合、DataCancelをアサートす
る。しかしながら、応答側は、データ・バスの調停を行い、適切なDataIDを
駆動す
ることによって、データを「引き込む」。こうして、応答側は、それが「引き込
む」ライト型動作を追跡する。開始側が適切なDataIDを用いてデータ・バス
を駆動しデータを「引き込む」場合、開始側はデータで応答する用意ができてな
ければならない。Ignoreがアサートされている場合、データ・パケットは発行
されない。Ignoreがアサートされていないが、Sharedがアサートされている場
合、ビクティム・ビットがセットされているのでなければ、開始側は「押し出し
」データ・パケットを発行しない。ビクティム・ビットがセットされている場合
、データ・パケットを押し出す。このパケットに対してDataCancelをアサート
する基板があってはならず、データが単純に欠落する可能性がある。割り込みト
ランザクションがキャッシュ・ラインの状態に何らかの変化を生ずる原因となる
ことはない。(ix) ReadToShareFork
ReadToShareFork トランザクションは、従来技術には見られず、本発明を
実施するために役立つものである。更に、このトランザクションは、いくつかの
バス・システム20が存在し、各バス・システムがそれ自体のインターフェース
・ユニット30、回路基板50、および関連する要素を有するようなネットワー
ク・コンフィギュレーションに有用である。このトランザクションは、分散型共
有メモリ("DSM":distributed shared memory)に対応するために用いられ、
メモリによってWriteBackトランザクションとして扱われ、他の装置によって
ReadToShareAlwaysトランザクションとして扱われる。ReadToShareFork
トランザクションの開始側は、論理的に、Ignoreがアサートされた元のReadT
oShareまたはReadToShareAlwaysトランザクションの開始側である。しかし
ながら、このトランザクションは、Ignoreをアサートした装置によって発行さ
れる。元のトランザクションの開始側はこれをReadToShareトランザクション
として扱い、一方ホームはこれをWriteBackトランザクションとして扱う。こ
のトランザクションは、元のReadToShareまたはReadToShareAlwaysトラ
ンザクションと同じTransactionIDを用いる。
ReadToShareForkトランザクションは、ReadToShareトランザクション
と同様にスヌープされる。キャッシュ・ラインの共有コピーを有する装置が、S
hared
をアサートする場合もある。ReadToShareForkトランザクションに対する応
答は、このトランザクションを発行した装置、例えば、Ignoreをアサートした
装置によって発行される。メモリがデータを受け入れることができない場合、D
ataCancelをアサートし、後にデータを引き込む。元のトランザクションの開始
側は、最初のデータ・パケットから(ホームがDataCancelをアサートしなかっ
た場合)、または2番目のデータ・パケットから(ホームがDataCancelをアサ
ートした場合)、データを取り込む。キャッシュ状態は、ReadToShareトラン
ザクションのそれと同一である。
実際には、ReadToShareForkはIgnore信号と協同して本発明を実施する。
先に注記したように、要求元CPUは、直ちにその要求を許可されない場合があ
るが、他のタスクを処理し続ける(停止するのではなく)。したがって、要求元
は、無効のデータを保持するメモリ・アドレスからデータを読み取ろうとした可
能性があるが、この場合、Ignoreがアサートされているので、関連するコヒー
レント入力キューにトランザクションをロードすることはできない。最終的にか
かるライト・トランザクションが有効データでメモリ位置を更新し、その時点で
同じSourceIDを用いて元のトランザクションがバス・システム上で再発行さ
れたと仮定する(例えば、同じ特定のメモリ位置からのリード)。
メモリ位置へのライトは比較的時間がかかり、例えば、10クロック・サイク
ルかかる場合もある。従来技術では、有効なデータが特定のメモリ位置に書き込
まれ、その後に、データを読み取りたい要求元が、そうすることを許される。し
かしながら、データを獲得しそれを局所的に格納すると、更にそのために10サ
イクルを要することになる。
本発明によれば、ReadToShareForkは、(a)無効データを含む要求メモ
リ位置に有効データを書き込むこと、および(b)データに対する要求が未だ未
決である要求元に有効データを返すことを、同時に実行可能である。したがって
、約20クロック・サイクル後に未決の要求を完了するのではなく、約10クロ
ック・サイクル以内に、関連する要求メモリ位置においてデータが更新されるの
と同時に要求は許可される。メモリ・コントローラの観点からは、ReadToSha
reForkはライト・トランザクションを実施するように見えることに注意された
い。しか
しながら、アドレス・コントローラの観点からは、ReadToShareForkは、リ
ード・トランザクションを実施しているように見える。
第6図を参照するとスロット0において、本発明は、アドレス・バス・アクセ
スに対する調停と、ReadToShareForkトランザクション("RTS"と省略す
る)の発行とを、同時に行うことができることを注記しておく。タイム・スロッ
ト即ちタイム・サイクル1において、インターフェース・ユニットは、Ignore
信号を受けたトランザクションとの関連において以前に用いたSourceIDと同
一のSourceIDを送る。アドレス・バス・トランザクションが送られたときか
ら3クロック・サイクルという早さで、インターフェース・ユニットはデータ・
バスの調停を行い、ReadToShareForkトランザクションと関連する有効デー
タ値を送ることができる。したがって、第6図のスロット5において、DataI
Dが送られる。これは、SourceIDと同一である。
第6図のタイム・スロット8において、例えば、格納輻輳(storage congestio
n)に近すぎる場合には、バッファ・メモリは任意にステータス信号を発行し、更
に他のデータの受け取りを中止することができる。(後の時点で、ステータスを
発したメモリ・ユニットは、輻輳状態が解消したときに、データ・バスの調停を
行うことができ、元のDataIDを送る。)中止ステータス信号が発行されない
場合、データ(d0)が、タイム・スロット10において開始した、データ・バ
ス上に現れる。本発明は好ましくはデータに対して2サイクルを使用するので、
データはタイム・スロット11(d1)に継続する。
メモリの観点からは、タイム・スロット10,11におけるデータ・バス上の
データは、ライト・データとして扱われる。しかしながら、要求元のプロセッサ
のアドレス・コントローラの観点からは、かかるデータは読み出しデータとして
見なされる。この二分法(dichotomy)即ち「二又」により、同一データを同時に
2カ所の別々の宛先位置に送ることができる。即ち、データの無効バージョンが
存在していた当のメモリ・アドレスと、要求元のCPUとに送ることができる。
データ受け取り側は、本質的に、所望のDataIDおよびSourceIDが一致した
データがどこから来るのかについてはわかっておらず、気にもしない。
このように、ReadToShareForkは、バス・システムに結合された単一のデー
タ源が同時に有効データでメモリ位置を更新し、しかもリード要求を満足するこ
とができる機構を実施する。この同時手順は、元の要求即ち要求IDの複製をア
ドレス・バス上に置く手段によって実施され、元の要求元は、その後、既に有効
となっているデータを引き出すことができる。この手順は、Ignore信号機構以
外でも実施可能である。更に、アドレス・コントローラによって、バス上に直ち
にReadToShareForkを置くことができる。この手順が行われる可能性がある
のは、システム全体における一連のトランザクションの順序においてメモリの更
新が必要であり、応答をより早く得たいことをアドレス・コントローラがわかっ
ている場合である。(x) Admin機能
厳密に言うと、Adminは、アドレス・バス・パケットのみを伴い、応答データ
・バス・パケットがないので、トランザクションではない。データが予期されな
いので、0のSourceIDを用いる。Adminは、基板間の特別な管理上の同期の
ために用いられる。Adminアドレス・バス・パケットは、他の全てのパケットと
は別個に扱われる。これらのパケットは、いずれのキューにも入力されず、その
処理は、実施態様によって異なる。Adminパケットに対しては、Ignoreをアサ
ートしてはならない。以下の第9表は、AdminタイプをエンコードするAdminア
ドレス・バス・パケットにおけるアドレス・フィールドを示す。
第9表において、XIR Admin タイプは、XIR割り込みを全ての基板に同
報通信する際に用いられる。XIR割り込みは、オペレーティング・システムの
デバッグのために、CPUに割り込みをかける機構を与える。起動Adminタイプ
は、起動イベントを全ての基板に同報通信する際に用いられる。これは、電源を
落とされている装置の起動を同期化するアクティブ電力管理(active powermanag
ement)において用いられるイベントである。好適な調停機構の概要
システム30は、いわゆる高速/低速調停、およびいわゆるバス・パーキング
調停(bus parking arbitration)を含む、調停レイテンシの減少を図るアドレス
・バス調停のいくつかの方法に対応することができる。これら2つの方法は、一
旦これらがウイナを選択したなら、回路基板がどのように動作するかを記述する
ものである。いくつかの基板の要求の中からウイナを選択する際、これらの方法
の各々は、本発明による、同じ総当たり優先的方法を利用することが好ましい。
バス・パーキング法では、以前のウイナがバスを直ちに駆動することを許され
、一方他の全装置は、好ましくは総当たりを用いて、次のウイナになるために調
停を行わなければならない。高速/低速法では、システム30は動的にモードを
切り替えることができる。モードが高速の場合、いずれかの基板がその要求と共
に、例えば、同じクロック・サイクルにおいて、直ちにアドレス・バスを駆動す
ることができる。しかし、衝突(例えば、2つ以上の要求が高速モードでアサー
トされる)が発生した場合、モードは低速に切り替わり、総当たりを用いてウイ
ナが決定される。より具体的には、多数の基板がアドレス・バスを同時に駆動す
る場合、その結果として衝突が検出され、パケットは破棄される。次のサイクル
において、全ての基板は要求ラインをチェックし、同時に1つ以上の基板がアド
レス・バスを駆動しなかったことを確認する。多数の基板がアドレス・バスを同
時に駆動した場合、そのアドレスは無視され、調停は低速モード方法に切り替わ
る。要求がない場合、調停は高速モードに戻る。システム30では、ファームウ
エアが、所与のシステムにおいて、どちらの調停方法を用いるかを制御すること
が好ましい。多数が同時にバスを駆動すると電気的な制約があることから、高速
/低速調停方法は中央面(center plane)が短い小規模なシステムにおいて用いる
と最良であることが示唆される。
高速/低速調停は、1995年11月7日に出願され、本願と同じ譲受人に譲
渡された、"DUAL MODE ARBITRATION METHOD FOR
COMPUTERSYSTEMS WITH ZERO TO TWO CYCLE
S OF LATENCY"と題する、米国特許出願第08/ 号に開示
されている。
調停要求には状態がなく(stateless)、要求ラインは、要求元の基板が調停を
勝
ち取るまで、調停バス上で駆動される。高速モードでは、要求はアドレスと共に
提示され、一方低速モードでは、アドレスよりも2サイクル早く、勝利した要求
がアドレス・バス上に提示される。
高速および低速モードのアドレス・バス調停の選択は、次のアルゴリズムによ
って記述することができる。Sは低速調停を示す状態変数を表し、Tは現クロッ
ク・サイクル(例えば、新しい状態が計算される時点)を表し、T−1は直前の
調停要求サイクルが発生した時点(例えば、システム・クロック・サイクル2回
分前)を表すとする。
調停同期をリセットした時点で、S=0とセットし、
優先的総当たり調停機構の詳細
総当たり調停方法は、1つの回路基板が常にデフォルトのウイナであることを
保証する。このウイナがアドレス・バスを駆動することができ、同一サイクルに
おいてその要求ラインの駆動も行う。他の全ての基板は、アドレス・バスを駆動
できるのは、調停を勝ち取ってからである。いずれのアドレス調停サイクルにお
いても、デフォルトのウイナ以外の基板から要求がある場合、新しいデフォルト
のウイナが選択され、その最初の要求を行ってから2サイクル後に、そのアドレ
ス・バス・パケットを駆動することができる。他の基板からの要求がない場合、
デフォルト・ウイナは同一のままである。初期状態では、デフォルト・ウイナは
基板0となっている。
第8図は、本発明による、アドレス調停の好適な実施態様を示す。その論理的
実施態様を第9図に示す。ここで、添付資料1は、ここに記載する優先的総当た
り調停の概略的な、即ち、比較的ハードウエアには独立した、実施態様を示すマ
シン・コードのリストである。第8図はいくらか簡略化されており、各分散型ア
ービトレータ・ユニットは16本の入力を有し、その内の1本は当該ユニットに
関連するノードから来ており、単一のウイナ出力信号、即ち、外部ウイナ出力信
号が調停ユニット内部にある。
第2図および第8図に示すように、優先的総当たり調停機構は、各回路基板5
0−N上のアドレス・コントローラ180間において、ARBユニット186と
して分散されていることが好ましい。各アドレス・コントローラは、同じ情報、
例えば、それに対して行われた要求、および15個まで存在し得る他の要求を見
ている。更に、各アドレス・コントローラは、同じ状態にあり、自律的に、低い
リーフ・レベルのアクセス許可、およびトップ調停レベルのアクセス許可を行う
。
図示のように、各回路基板上のアドレス・コントローラ186は、2レベル階
層調停("ARB")ユニット186を実施するロジックを含む。このユニット1
86は、バス・ライン、およびアドレス・バスに対するアクセスを要求すること
ができるアドレス・コントローラ("AC")と通信する。各ARBユニット18
6は、同一回路基板上の同一アドレス・コントローラ180内の1つのトップ・
アービトレータ250("E")に結合された、4つの同一のリーフ・アービトレ
ータ260−A(または"A"),260−B(または簡単に"B"),260−C
("C")り,および260−D("D")を含むことが好ましい。トップ・アービ
トレータと各リーフ・アービトレータとの間には、上向きの要求ライン("rout"
)、上向きのウイナ右側("wrgt")ライン、および下向きの許可ライン("win"
)がある。
第8図および第9図に示すように、各リーフ・アービトレータは、4つの要求
入力ライン("rin")を有し、各ラインは、当該リーフ・アービトレータによっ
て供される単一のアドレス・コントローラに結合されている。第2図に示したよ
うに、調停バスは好ましくは18本のラインを有し、その内の16本は、各リー
フ・アービトレータ毎に4本ずつ、"rin"ラインとして達している。例えば、1
本のかかる要求入力ラインは、16個のアドレス・コントローラ・ユニット(第
9図も参照のこと)の各々に専用となっている。残りの2本の調停バス・ライン
は、適正なフロー制御(例えば、共有調停バス資源が一時的に使用不可能となっ
た場合
に、許可を中止する機構)を保証し、システムが現在アドレス("A")サイクル
またはデータ("D")サイクルのどちらにあるのかを識別する位相情報を提供す
るために用いられる。各アドレス・コントローラは、したがって、16個の入力
要求信号(rin)を観察し、16個のウイナ出力信号(wout)を出力する。
第8図および第9図に実施されているように、調停は16通りあり、4つのリ
ーフ・レベルの4通りのアービトレータ260−A,260−B,260−C,
260−Dから成り、各々4つまでの競合するCPU装置間の調停要求を判断す
る。第5のトップ・アービトレータ250は、4つのリーフ・アービトレータの
内どれがこの時点でアドレス・バス・アクセスを要求元に許可するかを決定する
。この開示された実施例を用いると、第8図に示す2レベル階層構造が、機能的
には単一の大きな16通りの優先的アービトレータのように動作する。
アドレス・コントローラ180内では、調停要求は、rinラインを用いて、回
路基板に配置されているリーフ・アービトレータに提示される。より具体的には
、回路基板(例えば、第2図における160−N,170−N)に関連する2つ
のCPUは、カード上の一本のrinラインを用いてアクセス要求に対する調停を
行い、これに対して調停バスおよび15本のrinラインを経由してこのカード以
外のCPUから15個の要求が来る。リーフ・レベルの調停ウイナは、そのアド
レス・パケットをカード・レベルのバスに送り、当該カードに対するアドレス・
コントローラ180のキュー・バッファ184内で列を作る。
第8図において、例えば、リーフ・アービトレータAが、ここではμp0,μ
p1,μp2,およびμp3と表記した4つのCPUのいずれかからの、アドレ
ス・バスにアクセスする要求に応じている。第9図に示すように、CPU装置は
それらのリーフ調停要求を、調停バスに結合されているrin入力ラインを通じて
行う。これらの装置からの要求は、例えば、リーフ・アービトレータAを用いて
、μp0即ちCPU0からの要求はμp1即ちCPU1からの要求よりも優先度
が高く、μp1からの要求はμp2即ちCPU2からの要求よりも優先度が高く
、μp2からの要求はμp3即ちCPU3からの要求よりも優先度が高くなるよ
うに、優先度が付けられる。
各リーフ・アービトレータは独立して機能し、その4つまでの要求元の間で潜
在的なウイナを決定可能であることが認められよう。各リーフ・アービトレータ
は、「潜在的な」ウイナを選択し、最終的なウイナは、競合するリーフ・レベル
の潜在的ウイナの中から、トップ・アービトレータによって選択される。トップ
・アービトレータから許可を受け取ったリーフ・アービトレータのみが、その「
潜在的な」ウイナを、最終的な許可ウイナとすることができる。このように、ト
ップ・アービトレータの許可を、リーフ・レベルのアービトレータにおいて、資
格付与者として用いる。この方法は、16通り調停方法のレイテンシを比較的少
なくするという利点がある。
上述の調停方法は、最終ウイナ("LW")ポインタ状態を、各リーフ・レベル
およびトップ・アービトレータ・ユニットにおいて与えることによって、総当た
り式とする。LWポインタは、各調停ユニットに関連するどの要求元が、当該ユ
ニットにおける最終ウイナであったかを記録する。したがって、第8図に示すよ
うに、リーフ・アービトレータA,B,C,Dおよびトップ・アービトレータE
は、各々、当該レベルにおける調停許可を与える毎に右方向に増加する(例えば
、優先度は低下する)、同一のLWポインタ機構を含む。
各リーフ・アービトレータA,B,C,Dは、各競合者の優先度および当該レ
ベルにおける付与の最終ウイナ("LW")履歴に基づいて提示される競合者間の
調停を行う。トップ・アービトレータEは、最終ウイナのリーフ・アービトレー
タを指し示すLWポインタを含む。トップ・アービトレータEは、リーフ・アー
ビトレータの相対的な優先度、およびトップ調停レベルにおける許可付与のLW
履歴に基づいて、リーフ・レベル・ウイナのどれが、調停の許可を勝ち取るかを
決定する。各調停ユニットに関連する種々のLWポインタは、必要に応じて、同
期的に状態を変化させる。
優先的総当たり方法を用いると、多数の要求がある場合、新しいデフォルト調
停ウイナが選択される。ある基板が調停を勝ち取った場合、勝利した基板は次の
状態では最も低い優先度を有することになる。
例えば、リーフ・アービトレータB内のCPU5が当該レベルにおいて調停許
可を勝ち取った最終装置であったとすると、LW270はCPU5を指し示す。
リーフ・アービトレータB内における次の調停許可はCPU6またはCPU7、
例えば、最終ウイナの「右側」にある装置に与えられる。勿論、これは、CPU
6またはCPU7のいずれかが要求をアサートし、CPU5はアサートしていな
い場合のことである。したがって、CPU6またはCP7のいずれかが要求をア
サートしている場合、CPU4およびCPU5は、アクセス許可の候補となるこ
とはできない。CPU6またはCPU7のいずれも要求を行っておらず、CPU
4およびCPU5が双方共要求を行った場合、この例では、CPU4がリーフ調
停Bのレベルでは勝者となる。何故なら、CPU4はCPU5よりも優先度が高
いからである。
アドレス・バス・アクセスに対する調停を行いたいCPUは、それが結合され
ているリーフ・アービトレータへの入力要求"rin"ラインを通じて、トップ・ア
ービトレータ250に要求を発する(第9図参照)。各ローカル・リーフ・アー
ビトレータは、それ自体のrinライン上に存在し得る0ないし4つの要求間で調
停を行い、その要求元の間でウイナを決定する。決定は、格納されているLW情
報、および競合する要求の優先度に基づき、自律的に行われる。各回路カード5
0−N上の各アドレス・コントローラ180は、要求情報が調停バス80を通じ
て全てのユニット180に結合されているので、常に同じ情報を見ており、各コ
ントローラ180は同じ状態を有する。添付資料1に関して以下で更に詳細に説
明するが、LWは、以下のように、3つのビット、即ち、rgt(「右」に対して
)によって、ビット・マスクされて実施されることが好ましい。
rin: 0 1 2 3
rgt: 1 2 3
本発明によれば、rgt[n]がセットされると、調停ラインnは、調停ラインn−
1よりも優先度が高くなる。rgt[1]がセットされると、rin[1]はrin[0]よりも優
先度が高くなる。リーフ・レベル・アービトレータがウイナを許可した場合、そ
の右側の要求ラインが最も高い優先度を有することになる。これらのrinライン
のいずれかが共有資源に対するアクセスを要求した場合、リーフ・レベル・アー
ビトレータは、トップ・レベル・アービトレータに対するウイナ右側信号wrgtを
アサートする。これによって、このリーフ・アービトレータがもう1回共有資源
を許可されることが保証される。
このように、リーフ・アービトレータAでは、CPU0が最後に勝利し、CP
U1が次に要求を行わず、CPU2およびCPU3が各々アドレス・バス・アク
セスを要求した場合、CPU2の優先度がCPU3のそれよりも高いので、CP
U2が勝利することになる。各リーフ・アービトレータは、その競合者間におい
て同様の判断を行い、"rout"ライン上の信号をトップ・アービトレータ250に
出力し、それがアクセスを望んでいるCPUを有することを示す。各リーフ・ア
ービトレータは、トップ・アービトレータに、ウイナ右側信号("wrgt")も送る
。wrgtをアサートしているリーフ・アービトレータは、トップ・アービトレータ
において最も高い優先度を有し、バスに対するアクセスを許可される。
トップ・アービトレータ250の観点からは、リーフ・アービトレータは、最
初のリーフ・アービトレータAが2番目のリーフ・アービトレータBよりも優先
度が高く、2番目のリーフ・アービトレータBが3番目のリーフ・アービトレー
タCよりも優先度が高く、3番目のリーフ・アービトレータCが4番目のリーフ
・アービトレータDよりも優先度が高くなるように、優先度が決められる。所与
のリーフ・アービトレータに関連するどのCPUが、当該リーフ調停レベルにお
いて、調停を「勝ち取った」かは、トップ・アービトレータには無関係である。
唯一の必要な情報は、4つのリーフ・アービトレータの内どれが現在アクセスし
ようとしている装置を有するのかという情報である。
トップ・アービトレータおよびリーフ・アービトレータ・レベルにおいて、L
Wポインタは厳密に優先度が付けられた順序に優越する。リーフ・アービトレー
タAを通じて要求を行った装置が、トップ・アービトレータが発行した許可を最
後に勝ち取った場合、最後のウイナAの「右側」にあるリーフ・アービトレータ
、例えば、BまたはCまたはDが、Aよりも高い優先度を有することになる。し
かしながら、リーフ・アービトレータAがwrgt信号をアサートしたなら、これが
最も高い優先度を得ることになる。リーフ調停レベルLW機構の場合と同様、L
Wポインタは巡回せず、LWポインタは、必要に応じて、各システム・クロック
・サイクル毎に1回同期的にリセットされる。システム10の起動時に、回路基
板が挿入されると、LWポインタはそれらのデフォルト値にリセットされる。L
W状態変化(例えば、右に向かって増分する)は、12nsのクロック・サイク
ル
毎に同期的に発生することが好ましい。
好適な実施態様では、ArbSync信号(本明細書の中で説明する)は、1つの
基板のみによって駆動され、調停状態機械の基板間同期のための機構を提供する
。
トップ・アービトレータは、それ自体のLW状態機械、およびリーフ・アービ
トレータからの"rout"ライン上の入来する要求の優先度に基づいて、許可の決定
を行う。最終的な許可決定は迅速に行われ、ウイナ出力即ち"win"ラインを用い
、調停バスを通じて、リーフ・アービトレータに渡される。例えば、CPU0が
リーフ・レベルの調停を最後に勝ち取った場合、その後CPU0の優先度は最低
となり、リーフ・アービトレータAは、そのCPU1がアクセスを要求した場合
、それに対する許可を受け取る。リーフ・アービトレータB内において、CPU
5が最後に勝ち取った場合、その後CPU5の優先度は最低となり、この時点で
はCPU6が(要求を行えば)勝利することができる。トップ・アービトレータ
・レベルでは、リーフ・アービトレータAが最後に許可を勝ち取った場合、その
後この優先度は最低となり、この例では、リーフ・アービトレータBが勝利する
。即ち、そのCPU6が調停許可を勝ち取ることができる。
第9図および添付資料1で用いている表記について簡単に説明する。添付資料
1は、概略的な、主として装置に独立したものであることを意図している。例え
ば、ここで与えたコードは、特定のファンインおよびファンアウト要件を有する
特定の論理ゲート・ファミリに専用としたものではない。上述の総当たり調停方
法の他の実施態様も、実施可能であることを、当業者は認めよう。添付資料1で
は、"〜"という表記は、NOT即ち論理的補数を表す。例えば、〜1=0である
。一方、垂直線"|"は論理ORを表す。"reset_1"という表現は、例えば、"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を用いる。
添付資料1の最初のページiから始めると、モジュール"arbbig"はトップ・ア
ービトレータの内部機能を記述し、信号は入力または出力として識別され、かつ
宣言され、それらの信号ビット幅が定義される。エントリ"reg[3:1]rgt"は、例
えば、実数の取得を定義する。2番目の"assign"エントリにおいて、"change"は
、いずれかのリーフ・アービトレータがその"rin"信号をアサートしているか否
かについて問い合わせる。ページiの最後の"assign"エントリにおいて変化があ
る場合、next_rgt[1]に realw[0]が割り当てられ、変化がない場合、rgt[1]は変
更されない。ページiiの先頭において、次のrgt値におけるrgtに対する同期的な
割り当てが行われる。
ページiiの先頭において、モジュール"arbgrp"はリーフ・アービトレータ・ユ
ニットの内部機能を記述する。ページiiにおいて、例えば、表記"wirewin01=rin
[0]&〜rgt[1]"は、rin[0]がアサートされ、rgt[1]がセットされなければ、0が
1に対して勝利することを表す。"wout[0]"割り当てエントリは、例えば、その
要求がアサートされた場合、0が勝利し、このリーフ・アービトレータが、その
同等物に対して勝利することを表す。ページiiの下部近くにある"next_rgt[1]"
エントリは、rinが変化し、0が勝利した場合、rgt[1]をセットすることを表す
。
添付資料1のページiiの下部から始まる部分において、モジュール"arbtop"は
、どのようにしてトップ・アービトレータおよび4つのリーフ・アービトレータ
を接続するのかについて記述する。第9図は、これらの接続、およびarbtopモジ
ュール自体の図式表現である。ページiiの下部から始まり、ページiiiに続いて
、モジユール"arbtop(clk,reset_1,rin,wout)"は、以前に定義したトップ・アー
ビトレータを相互接続することを対象とし、好適実施例では、4つの以前に定義
したリーフ・アービトレータである。
添付資料1におけるarbgrpモジュールについて、これより詳細に説明する。各
リーフ・アービトレータは4つのrin信号を入力し、rin信号のいずれかがアサー
トされた場合、1つのrout信号をトップ・アービトレータに出力する。rin[1],f
in[2],およびrin[3]の各々は、関連するrgtレジスタを有する。左側のrinのいず
れかが、最後に変更信号がトップ・アービトレータによってアサートされたとき
のウイナであった場合に、rgtレジスタがアサートされる。対応するrgtビットが
セットされているrin信号は、左側のrin信号(小さい番号を有する)よりも優先
度が高く、そのrin信号はクリアされる。その他の場合、調停は、rin[0]<rin[1
]<rin[2]<rin[3]と成るように、厳密に優先順位が決められる。好適な実施態
様では、rin[0]は、関連するrgtレジスタを有さず、純粋に優先順方式のみを基
準とする。
リーフ・アービトレータが最後のウイナであって、rgtビットがセットされて
いる第2のrinが現ウイナである場合、wrgtout信号をアサートして、このリーフ
・アービトレータが最も高い優先度を有すべきことを、トップ・アービトレータ
に知らせる。4つのrin信号の内のウイナwout[3:0]は、対応するrin信号がアサ
ートされると、アサートされ、トップ・アービトレータは、このリーフ・アービ
トレータのwin信号をアサートし、他の3つのrin信号の中には、このrin信号に
勝利するものはないと判定する。
rin信号の各対は、一方または他方が勝利する条件を定義する2つの「ウイナ
方程式」を有し、合計で12のかかる方程式がある。winに対して、rin信号をア
サートしなければならず、他のrinには対応するrgtレジスタがアサートされてい
るものがない場合、最も番号が小さいrinが勝利する。
arbbigモジュールに関して、トップ・アービトレータ・モジュールは、既に述
べたリーフ・アービトレータと同様である。ウイナ方程式は、next_rgt方程式で
あるので、同一である。トップ・アービトレータに対して、wout方程式は、wrgt
をアサートするリーフ・アービトレータが最も高い優先度を得ることも反映する
。リーフ・アービトレータのいずれかがバスを要求することには無関係にトップ
・アービトレータは潜在的なウイナを計算するので、realwは、リーフ・アービ
トレータに、そのrinがアサートされていると共に、ウイナとして選択されてい
ることを要求する。リーフ・アービトレータのいずれかからの要求がある場合、
現在実施されている変化信号がアサートされる。変化信号がアサートされると、
全てのrgtレジスタが更新される。
上述の同期分散型アルゴリズムは、アドレス・バスおよびデータ・バス双方に
対するアクセスを迅速に調停する際に用いることができるが、上述のシステム1
0においては、レイテンシが低いアクセスには、前者の方が後者よりも重要であ
る。アドレス・パケットは、アドレス・バス・アクセスに対する調停と同時に出
力することができ、これによって、従来技術の方式(第8図参照)に対して2ク
ロック・サイクルの節約となる。この手法は、調停がまず行われ、次いで許可ア
ドレス・パケットがアドレス・バス上に置かれる従来技術の方式よりも格段に高
速である。更に、アドレス・バス調停ラインとデータ・バス調停ラインとが別個
に与えられる従来技術の方式とは異なり、共通の調停バスが、アドレス・バスお
よびデータ・バス・アクセスの調停を行うために時間多重化されているので、ピ
ン数も節約される。好適実施例では、アドレス・バスおよびデータ・バス要求ト
ランザクションは、各々2サイクル長である。
更に、上述のアルゴリズムは、比較的浅い論理深度、ここでは、約6論理レベ
ルを有する平坦な総当たりの実施態様であるかのように動作する。論理深度は、
上述の実施例では、入来する要求およびアクセスの許可の間で比較的少ない論理
ゲート演算を考慮すればよいことを意味する。
平坦な実施態様を使用可能であること(例えば、単一のリーフ・アービトレー
タに対して16本の入力ライン)、または2レベル以上の階層を使用可能である
ことが認められよう。しかしながら、全てを考慮すると、小集団の競合者(例え
ば、4つの競合者/群まで)間においてリーフ調停が発生し、更に小集団の競合
者(再び、4つ)間でトップ調停が発生する2レベル階層が、低いレイテンシで
容易に実施される。更に、好適実施例は階層的総当たり調停方法を用いて、コン
ピュータ・バスに対するアタセスの種々の要求の調停を行うが、この方法は、限
定された資源を争う競合者間において迅速な調停が望ましいあらゆる環境におい
て使用可能である。好適に用いられる状態信号タイプ
次に、4つの状態信号タイプ、Shared,Owned,Mapped,およびIgnoreについ
て、第10表を参照しながら、更に詳細に説明する。
Share("S")状態信号
基板当たり1つとして、16個のShared("S")信号がある。各基板はそれ
自体のShared信号を駆動し、他のShared信号を全て読み取る。第2表に記した
ように、Shared信号はアドレス・バス・ピン上に多重化されている。Shared信
号は、関連するアドレス・バス・サイクルの最初のサイクルの5サイクル後に駆
動される。Owned("O")状態信号
Owned状態信号は、関連するアドレス・バス・パケットの最初のサイクルの6
サイクル後に駆動され、データIDバス上に多重化される(第6図参照)。
SharedおよびOwned状態ラインは、基板が実際に当該ラインに対するデータ
を有していなくても、駆動されることになっている。基板は、それがアドレス・
バス上でReadToOwnトランザクションを開始した時点から、所有権を放棄する
時点まで、ラインのオーナとなる。所有権が放棄されるのは、基板がアドレス・
バス上で当該ラインに対するWriteBackトランザクションを開始したとき、ま
たは他の基板がアドレス・バス上で当該ラインに対するReadToOwnまたはWri
teStreamトランザクションを開始したときである。
同様に、基板は、それがアドレス・バス上でReadToShareまたはReadToS
hareAlwaysトランザクションを開始した時点から、Shared信号をアサートする
目的のために、ラインを有すると言われる。基板は、ラインがキャッシュにおい
て置き換えられる時点まで、または他の基板が当該ラインに対してReadToOwn
またはWriteSreamトランザクションを開始するまで、このラインを保持する。
各プラグイン回路基板は、多数の装置を有することが好ましく、その装置の全
てに代わって動作する。したがって、基板は、ラインがその装置のいずれか1つ
によって共有または所有されている場合、それ自体のトランザクションのために
、Shared信号またはOwned信号をアサートする。Mapped("M")状態信号
Mapped状態信号は、トランザクションが応答を受け取ることを、開始側に示
すために用いられる。Mappedがアサートされないと、開始側は、それが応答を
受け取らないこと、および適切なエラーを報告すべきことを知る。Mapped信号
は、十分に長いタイム・アウトを、軽いエラーとしてではなく、致命的なハード
ウエア・エラーとして対処可能とすることが好ましい。Mapped信号は、関連す
るアドレス・バス・パケット(第6図参照)の最初のサイクルの6サイクル後に
駆動される。第6表によって記されるように、Mappedは、データIDバス上に
多重化されている。
キャッシュ可能な空間に対する全てのトランザクション(即ち、RTS,RT
SA,RTSF,RTO,RS,WB,WS)に対して、Mappedは、対応する
メモリ・ラインがその時点においてキャッシュによって所有されていても、その
メモリ・ラインを有する基板によってアサートされる。割り込みトランザクショ
ンについては、割り込みの宛先がその時点において当該割り込みを受け入れるこ
とができなくても、割り込みの宛先(あるとすれば)がMappedをアサートする
。キャッシュ不可能なリードおよびライト・トランザクションでは、基板が当該
トランザクションに対する応答側である場合、その基板がMappedをアサートす
る。Mappedは、好ましくは、Adminパケットに対してはアサートされない。Ignore("I")状態信号
第1図のグローバル・ネットワーク・インターフェース・ユニット15内に示
す無視機構17および記憶装置19について、これより、オムニバス・システム
20”全体におけるアドレス・トランザクション・パケットの最適な再順序付け
に関して説明する。即ち、第1図に示すように、グローバル・ネットワーク・イ
ンターフェース15は、システム10全体を構成する種々のコンピュータ・サブ
システムと関連するバス・システム20,20’を結合し、オムニバス・システ
ム20”を形成する。インターフェース15はオムニバス・システム20”に結
合され、バス・システム20”によって搬送されようとするアドレス・バス・ト
ランザクション全てを監視する。任意のサブシステムに関連するいずれかの回路
基板(群)上のいずれの装置(群)からでも発する可能性がある、種々のトラン
ザクションは全て、好ましくはグローバル・ネットワーク・インターフェース1
5に送られ、ここで、全体的なトランザクションの順序が定義される。次に、か
かる全体的な順序は、オムニバス・システム20”を通じて伝達され、システム
10に結合されている種々の回路基板上のアドレス・コントローラに戻される。
無視機構の機能に関するその他の詳細は、本願と同一日付で出願され、"MET
HOD AND APPARATUS OPTIMIZING GLOBAL DA
TA REPLIES IN A
COMPUTER SYSTEM"と題し、本願と同一譲受人に譲渡された、同時
係属中の米国特許出願第08/ 号においても見出すことができる。
先に引用した同時係属中の特許出願において更に記載されているように、トラ
ンザクションの全体的な再順序付けは、Ignore信号の使用の結果得られるもの
である。本発明は、あらゆる単一のトランザクションの再順序付けを行うのは不
要であることが好ましいことを認める。したがって、IGNORE信号は、再順
序付けを行わなければならないアドレス・バス・トランザクションが感知された
場合はいつでも、グローバル・ネットワーク・インターフェース機構15内にお
いて、オムニバス・システム20”に対して発行される。かかる再順序付けの可
能性のあるトランザクションの典型的な候補は、格納されているデータがメモリ
内で有効でないアドレス位置からのデータをCPUが要求する場合であろう。か
かるトランザクションを別の方法で行わせると、異なるバージョンのデータが発
生し(promulgate)、システム10の障害に至る。グローバル・ネットワーク・イ
ンターフェース・ユニット15内では、動的に維持されているテーブル19が、
システム10を構成する種々の回路基板間に分散されているメモリ内の全キャッ
シュ・ラインを含んでいる。分散型メモリ・システムにおける各キャッシュ・ラ
インに対して、グローバル・ネットワーク・インターフェース・ユニット15は
、関連する状態を2ビットで保持しており、4つの状態、即ち、INVALID
,SHARED,OWNER,またはMODIFIERを定義する。オムニバス2
0”内では、種々の状態信号100が、アドレス・バス・パケットによってアド
レスされたラインの状態を示し、第10表に示すように、これら4つの状態信号
を供給する。
Ignore信号は、論理的にアドレス・バス・トランザクションの再順序付けを
行い、分散型共有メモリを実施する際に用いることができる。Ignoreは、分散
型共有メモリを実施する基板が、Ignoreをアサートしたトランザクションの前
に、異なるトランザクションを挿入することを可能とし、次いで当該トランザク
ションを再発行することを可能にする。Ignore信号は、第2表に示すように、
アドレス・バスのピンに多重化されており、最初のアドレス・サイクルから5サ
イクル後に有効となる(第6図参照)。Ignoreがアサートされると、アドレス
・パケットは、Ignoreをアサートした装置以外の全装置によって無視される。
Ignoreをアサート
した装置は、後に同じトランザクションIDを用いて同じ(または同等の)トラ
ンザクションを再発行しなければならない。好適実施例では、Ignoreはコヒー
レント・トランザクションおよび割り込みに対してのみアサートすることができ
、IOリード、IOライト、またはadminパケットに対してはアサートすること
ができない。
CPUが無効状態にあるキャッシュ・ラインを要求した場合、例えば、メモリ
内において有効でないデータを探す場合、無視機構はオムニバス20内のSTA
TEラインを通じてIGNORE信号を発行する。グローバル・ネットワーク・
インターフェース内の状態テーブルに記憶されている種々のSTATE信号は、
種々の回路基板内のDTAG RAMユニット220と全く同一の状態を有する
。システム10の分散型メモリ内の特定位置に格納されているデータが無効とな
ることはあり得るので、当該キャッシュ・ラインに関連するSTATE信号は無
効となり、したがってIGNORE信号がアサートされる。
IGNORE信号がアサートされた場合、実際の効果は、オムニバスに結合さ
れている全てのアドレス・コントローラ180が、対象のトランザクションが発
生しなかったかのように機能することである。対象のメモリ・アドレス(所望の
データの無効バージョンが保持されている)をアクセスすることはできるが、実
際上の目的のためではない。何故なら、他のメモリ位置(物理的にどこでもよい
)が所望のデータの有効なバージョンを保持しているからである。いずれかのC
PUまたはその他の装置が、無効状態に関連するキャッシュ・ラインにアクセス
しようとする場合、関連するメモリTAG(即ち"MTAG")が示すように、グ
ローバル・ネットワーク・インターフェースはIGNORE信号をアサートさせ
る。
第6図に関して先に記したように、状態信号IGNOREおよびSHARE"(
I,S)"は、トランザクションが要求元のCPU装置を内蔵するサブシステムに
結合された関連するアドレス・バスを駆動してから5サイクル後の、共通タイミ
ングにおいてアサートされる。したがって、好適実施例では、IGNORE信号
がアサートされる前に、5サイクルのレイテンシがある。興味深いことに、要求
元装置を内蔵している回路基板に関連するアドレス・コントローラ180は、オ
ムニバス上において、それが要求したトランザクションを見ようともしない。そ
の理由は、各
アドレス・コントローラ内に、コヒーレント入力キュー182("CIQ")、お
よびバッファ・キュー184があるからである。各アドレス・コントローラはそ
れに関連するCIQに、関心のある全てのコヒーレント・トランザクション、例
えば、それ自体のトランザクションをロードする。
好適実施例では、アサートされたIGNORE信号は、全てのアドレス・コン
トローラに、IGNOREのフラグが立ったトランザクションを、各アドレス・
コントローラのコヒーレント入力キューに追加するのを禁止する。したがって、
要求元の装置に関連するアドレス・コントローラでさえも、IGNOREのフラ
グが立ったトランザクションを、それ自体のコヒーレント入力キューにロードす
ることはできない。実際の効果は、IGNOREのフラグが立ったトランザクシ
ョンは、オムニバス・システム上ではアサート状態にはならず、したがって時間
的即ちタイミングの意味において、トランザクションはまだ発生していないこと
になる。トランザクションは、IGNORE信号をアサートした装置によって、
再発行される。
したがって、第6図において、タイム・スロット0は、有効なアドレス要求の
最初の発行を表すことができる。あるいは、タイム・スロット0は、同じ要求を
後に再発行することを表すことができる。この要求の最初の発行は、関連するア
ドレス・コントローラ内の対応するコヒーレント入力キューにトランザクション
をロードするのを禁止するIGNORE信号によって禁止されたものである。
個々のアドレス・コントローラは、オムニバス上に現れるトランザクションに
関連するsourceIDから、所与のトランザクションが当該アドレス・コントロー
ラ、例えば、このアドレス・コントローラが存在する回路基板に関連する装置に
関連するか否かについて、学習することができる。更に、アドレス・コントロー
ラは、オムニバスから、対象のトランザクションに対するキャッシュ・ラインが
異常状態にあるか否かについて、例えば、他の装置があるキャッシュ・ラインを
要求し、そのキャッシュ・ラインに対して当該アドレス・コントローラが変更コ
ピーを保持しているかどうかを学習することができる。好適に使用されるステータス信号
好適実施例は、ECCValid,DCESel,およびDataCanel/Errorという3
つのステータス信号を与える。これらの信号は、対応するデータ・バス・パケッ
トの最
初のデータ・サイクルの2サイクル前に、1サイクルの間駆動される。3つのス
テータス信号は全て、第6表に示したデータIDバス上に多重化される。
ECCValidステータス信号は、データ・バス・パケット内のECCフィール
ドが有効であり、ECCを発生することができない装置の使用を許可するか否か
を示す。ECCValldは、キャッシュされない動作および割り込みに対してのみ
意味を持ち、キャッシュ可能なトランザクションに対しては意味を持たない。好
適実施例では、メモリはどのデータが有効なECCを有するのかを追跡しないの
で、全てのキャッシュ可能なトランザクションは有効なECCを有さなければな
らない。
DCESelステータス信号は、Data-Cancel/ErrorをDataCancelとして扱
うべきかまたはErrorとして扱うべきかを、以下の第11表に記載するように示
す。
DataCancelは、DataBusパケットを取り消す際に用いられる。しかし、そ
うしても、データ・バス・パケットを取り消すのみであり、トランザクションを
取り消す訳ではない。この手順は、データ・バス・パケットが無効の場合、また
は「押し出された」ライト型動作がデータを受け入れられない場合に用いられる
。これら2つのエラー・コーディングは、装置が2つのエラー・タイプ間の区別
を行うことができ、UPA相互接続アーキテクチャに適合するという利点がある
。
より具体的には、無効なデータ・バス・パケットは、Owned信号が有効になる
前にメモリがその応答を開始した場合に、キャッシュ内に所有されているライン
に対するリード・トランザクションの結果、発生する可能性がある。この状態は
、例えば、メモリのレイテンシを減少させる試みにおいて発生することがある。
あるいは、ライト型動作が開始側によって「押し出された」場合、宛先はデー
タを受け入れることができない。すると、宛先はデータ・バス・パケットを取り
消し、データを「引き込む」責務を負う。即ち、WriteStream,WritelO,およ
び
WriteBlockIO動作に関して後に説明する手順を行う。好適実施例において用いられるパリティ信号
好ましくは、システム30は2つのパリティ信号、ParityAおよびParityD
を用いて、状態、ステータス、DataID、および調停信号を保護する。双方の
パリティ・ビットは偶数パリティをエンコードする。
ParityAは、「アドレス・サイクル」、例えば、アドレス・バス調停が駆動
されている間のサイクルの間に駆動される信号群を保護するために用いられる。
これらの信号群は、アドレス・バス内の予約ビット、データIDバス上で多重化
されているOwned,Mapped,ECCValid,DCESel,およびDataCancel/Err
or信号、ならびに調停信号を含む。
ParityDは、「データ・サイクル」、例えば、データ・バス調停が駆動され
ているサイクルの間に駆動される信号群を保護する。これらの信号群は、おおま
かに(untidy)、DataID,Ignore信号、共有ライン、および調停を含む。これ
らは双方のサイクルで駆動されるので、調停信号は両方のパリティ・フィールド
によって保護されることは認められよう。ParityAおよびParityDは、双方と
もデータIDバス上に多重化され、多くとも1つの基板によって駆動され、ソフ
トウエアがパリティを駆動する基板を選択する。
第5図は、ParityAおよびParityDに対する信号タイミングを示す。図示の
ように、ParityDは、それが保護する信号から1サイクル遅れている。何故な
ら、ParityDはParityAと同じサイクルで駆動されるからである。システム3
0と共に使用可能なコンフィギュレーション信号には、クロック、JTAG、お
よびその他の実施態様に依存する信号が含まれる。ReadToShareトランザクション・タイミング
第6図は、ホームが基板2(例えば、50−2)内にある、アドレスAに対す
る基板1(例えば、第1回路基板(第1図の50−1))によって開始されたR
eadToShareトランザクションについての、信号タイミング関係を示す。第6図
および第7図では、付番した実線矢印によって固定のタイミング関係が表され、
破線矢印によって原因となる可変タイミングの因果関係が示されている。先に注
記したように、"A"および"D"はマスタ・クロック信号のアドレス・サイクル部
分
およびデータ・サイクル部分を表す。
第6図の例は、リード型トランザクションに対するこれらの関係について、最
も速い(例えば、最少の)タイミング値を示す。ライト型動作では、開始側がデ
ータ・バスに対する調停も行う。したがって、ライト型動作では、データ・バス
・パケットに対する最も速いタイミングは、2サイクル早い。
(1)第6図の例において、基板1は、アドレス・バスに対する速い調停を利
用し、サイクル0において、2つのアドレス・バス・サイクルの内最初のサイク
ルおよびその調停ラインを駆動する。アドレス・バス・パケットにはSourceI
Di(次のサイクルで駆動される)が添付されている。多数の基板が同時にアド
レス・バスおよび調停バスを駆動している場合、アドレス・バスはこれらのサイ
クルの間無視される。調停ウイナが決定され、第7図に示すように、サイクル2
において、ウイナが代わりにアドレス・バスを駆動する。
(2)アドレス・サイクルがアドレス・バス上に現れてから5サイクル後に、
全ての基板が、Shared信号およびIgnore信号に対する適切な値をアサートする
。これらは、第6図および第7図において、"S,I"と一括して示されている。
(3)Shared信号から1サイクル後、即ち、最初のアドレス・バス・サイク
ルから6サイクル後に、基板はOwned信号に対する適切な値をアサートする(第
6図参照)。
(4)基板2は、アドレスAに対してホームであるために、アドレスをデコー
ドし、サイクル3において、データ・バスに対する調停要求を行う。これが調停
を勝ち取った場合、2サイクル後にSourceIDiを用いてデータIDバスを駆
動する。
(5)データIDバスを駆動してから3サイクル後に、基板2がステータス信
号を駆動する。例えば、ホーム(基板2)がデータ・バスにメモリ・レイテンシ
を減少させるように要求した場合、DataCancelが必要となる場合がある。かか
る要求を行う際、ホームは、それがデータを供給すると想定し、実際には他の基
板がオーナである場合、ホームはその要求を取り消す。
(6)ステータス信号を駆動してから2サイクル後に、基板2はデータ・バス
上の2データ・サイクル(d0,d1)の内最初のサイクルを駆動する。調停タイミング
第6図および第7図は、高速モードの調停を示し、第7図においてハッチング
を施したアドレス・バス・サイクルは基板4との衝突を表す。この例では、基板
1が調停を勝ち取って、サイクル2において再びアドレス・バスを駆動する。基
板4は、サイクル2において再びアドレス・バスに対する調停を行い、サイクル
4において再びアドレス・バスを駆動する。基板4によって開始される以降のト
ランザクションは、第6図において陰影を付けたブロックで示されている。データ転送およびトランザクションID管理
データ転送は、リード型またはライト型のいずれかである。リード型転送は、
応答側から開始側へのデータ転送を伴い、一方ライト型転送は、開始側から応答
側へのデータ転送を伴う。リード型データ転送
リード型データ転送は応答側を伴うが、応答側とはメモリまたは装置が考えら
れる。キャッシュ可能な転送では、メモリはDataIDを発行することによって
不確実にデータ・パケットを開始するが、最終的にはDataCancelをアサートす
ることによってこのデータ・パケットを取り消す場合がある(ステータス信号、
ならびに第7表および第10表に関する先の説明を参照のこと)。不確実な開始
およびその後の取り消しは、キャッシュ可能なリード要求がメモリから満足され
る一般的な場合に、レイテンシを最少に抑えることができる。取り消しは様々な
理由から起こり得るが、アドレス・パケットに対するIgnoreまたはOwnedのア
サート、アドレス・パケットがRTOであったこと、および開始側がSharedを
アサートしたこと(この場合、開始側は何の応答も期待しない)が含まれる。
メモリがデータ・パケットを取り消さなければならない場合、そのトランザク
ションに対する最初のアドレス・バス・サイクルから11サイクル以内に、当該
パケットに対してDataIDを発行する(以下で、トランザクションIDに対す
る規則の下で説明する)。応答側がメモリ以外の装置である場合、データ・パケ
ットは取り消されない。ライト型データ転送
ライト型データ転送では、最初に開始側によるデータの「押し出し」がある。
例えば、開始側はデータ・バスに対する調停を行い、データを応答側に駆動する
。ステータス信号に関して先に説明したように、応答側がデータを受け入れる用
意ができていない場合、応答側はDataCancelをアサートして、データ・バス・
パケットを取り消す。次に、応答側はデータを「引き込む」責務を得て、それが
取り消したデータ・バス・パケットのライト型トランザクションを追跡する。応
答側がデータを受け入れる用意ができた場合、データ・バスに対する調停を行い
、データを供給する用意ができているはずの開始側からデータを得る。ライト型
トランザクションに対してIgnoreがアサートされた場合、データ・パケットを
発行してはならない。
あるいは、適切な対応が装置のインターフェース・プロトコルから提供された
場合、ライト型トランザクションに対するプロトコルを簡略化することができる
。例えば、装置からライト・データを得るための機構が、ライト動作の完了を確
認する機構とは異なる場合、ライトの宛先にデータを「引き込ませる」ことがで
きる。その場合、「押し出し」に続いて「引き込み」を指定する必要はない。し
かしながら、UPAプロトコルは、装置からライト・データを得ると共に、ライ
トの完了を知らせるように機能する、共通のS_REPLYを可能にすることが
好ましい。
トランザクションIDに対する規則について、これより説明する。各基板は7
つの一意的なトランザクションIDを有する。トランザクションIDが一意的に
トランザクションを識別することを保証するために、基板は以下の規則に従わな
ければならない。一意のIDを維持するための基板規則
(1)あるトランザクションに対する応答のDataIDは、対応するアドレス
・バス・パケットの最初のサイクルから3番目のサイクルより早く発生してはな
らない。
(2)Ignoreがアサートされたライト型トランザクションでは、データ・パ
ケットを発行してはならない。しかしながら、この規則は、Ignoreがアサート
されるシステム(例えば、分散型共有メモリ、即ちDSMシステム)についての
み関係する。好適実施例では、モード・ビットを用いて、Ignoreの値がわかる
まで、ライト型動作に対してデータ・パケットを発行するのを禁止する。
(3)開始側がOwnedをアサートしたWriteBackトランザクションおよびIg
noreがアサートされないWriteBackトランザクションについては、開始側がデ
ータ・バス・パケットを送る。ホーム基板は、パケットを受け入れるか、あるい
はDataCancelをアサートする。DataCancelをアサートした場合、ホーム基板
は他のデータ・パケットを用いてデータを「引き込む」。いずれの場合でも、ホ
ーム位置はメモリにライトを行わず、単にデータを破棄するだけである。
(4)Sharedがアサートされた割り込みトランザクション、およびIgnoreが
アサートされない割り込みトランザクションについては、開始側がデータ・パケ
ットを送ることができる。開始側がデータ・パケットを送る場合、応答側はデー
タを破棄することができるが、DataCancelをアサートしてはならない。
(5)トランザクションIDは、応答が取り消されなかった場合、以前のトラ
ンザクションに対する応答のDataCancelタイム・スロットから2サイクル後に
開始する新しいトランザクションに対して、再使用することも可能である。
トランザクションによっては、開始側がもはや有効な応答を期待していないか
もしれないが、なお応答側はデータ・パケットを発行することができ、後にこの
データ・パケットを取り消すという場合があり得る。開始側は応答を期待してい
ないので、開始側は、同じトランザクションIDを用いて新しいトランザクショ
ンを開始する潜在的な可能性がある。例えば、開始側がSharedをアサートした
ReadToOwnトランザクションは、有効な応答を必要としない。更に別の例とし
て、基板がOwnedをアサートし、データで応答したメモリ・リード動作では、メ
モリからの応答は要求されない。取り消された応答を誤解しないための基板規則
最初のトランザクションに対して取り消された応答を、同じトランザクション
IDを有する以後のトランザクションに対する応答と間違えるのを避けるために
、基板は次の2つの規則を遵守しなければならない。(以下の規則は、後の取り
消された応答の可能性がないトランザクションIDには適用されない。)
(6)取り消された応答があり得るリード型トランザクションに対するIDは
、元のトランザクションの最初のアドレス・バス・サイクルの後14サイクルま
では再使用してはならない。別の言い方をすれば、IDが使用できない元のアド
レ
ス・バス・パケットの後に、6つのアドレス・バス・パケット・スロットがある
。
(7)基板は、対応するアドレス・バス・パケットの最初のサイクルから11
番目のサイクル以降に取り消すあらゆるトランザクションに対するIDを用いて
、データIDバス上で応答してはならない。基板が応答を禁止することができな
い場合、元のトランザクションのトランザクションIDではなく、アイドルのD
ataIDコードを用いなければならない。トランザクションの順序
順序およびフロー制御に関して、アドレス・バスは単一の全体的な順序を提供
し、種々の実施例はそれを用いてそれらの特定のメモリ・モデルが実施可能であ
ることが好ましい。したがって、実施態様特定の順序は変更が可能である。以下
で述べるように、システム30は、UPAによって指定された装置と共に用いる
ことができる。キャッシュ・コヒーレンス
これよりキャッシュ・コヒーレンスについて説明する。好適実施例と共に用い
るプロトコルは、基板が無効化に基づくキャッシュ・コヒーレンス・プロトコル
および所有権に基づくキャッシュ・コヒーレンス・プロトコルを用いて、ライト
バック・キャッシュを実施することを許可する。
かかるプロトコルを用いて、所有権をある基板から別の基板に移転する際、正
しい動作を保証することが困難な場合があることは理解されよう。別のプロトコ
ルでは、所有権がデータと共に(即ち、応答と共に)移転されるものもあるが、
正しいオーナは常に、要求に応答することを期待されている。適切な応答を保証
することは、実際のデータ転送の小さな枠(Window)内に要求がくる場合に、困
難となり得る。
システム30は、あるラインに対して、オーナとライタとの間で区別を行うこ
とによってこの困難を克服する。基板は、ReadToOwnアドレス・バス・パケッ
トを用いて所有権を要求するとすぐに、オーナとなる。一方、ライタとは、ダー
ティの場合もあるが、ラインに対するデータを実際に有する基板のことである。
ラインが共有されるのでなければ、ライタはラインに書き込むことができる。
著作(authorship)(例えば、ライト)は、基板から基板に所有権に追従する。
これによって、書き込む順序が、アドレス・バス上のReadToOwnトランザクシ
ョンの全体的な順序と同一であることを保証する。所有権は、ReadToOwnの開
始に伴って、他の基板に移転され、基板自体のWriteBackの開始によって、ラ
インのホームに対して放棄される。また、所有権は、他の基板がWriteStream
トランザクションを開始したときにも放棄される。著作は、実際のデータを搬送
する応答と共に、移転または放棄される。実際には、基板があるラインに対する
オーナである時間期間は、当該基板がそのラインに対するライタである時間期間
と重複する必要はない。
オーナは、それが実際にデータを受け取る前であっても、ラインに対する他の
要求を受けることができる。オーナは、かかる要求全てを追跡し続け、最終的に
、ライタとなった後に、全ての応答に順番に応答することを要求される。
好ましくは、上述のシステム30に対して、以下の条件(assertion)が真であ
ることが必要である。
(1)常にあるラインに対するオーナは多くとも1つである。
(2)常にあるラインに対するライタは多くとも1つである。
(3)基板はラインのライタとなることができる前に、当該ラインのオーナと
なる。
(4)あるラインに対するライタがない場合、このラインはそのホーム・メモ
リにおいて更新する。
(5)あるラインに対する所有権が基板から基板に移転する順序は、著作が基
板から基板に移転する順序と同一である。無効化
次に無効化について説明する。ReadToOwnアドレス・バス・パケットは、開
始側以外の全基板に、それらのキャッシュ・ラインのコピーを無効化するように
要求する。対照的に、別の従来技術の無効化プロトコルによれば、無効化は、全
ての基板がそれらの無効化完了を確認するまでは、完了とは見なされない。しか
しながら、かかるプロトコルは、本発明を容易に実施できるシステムのような、
大型システム上で効率的に実施するのは困難である。
システム30が好適に実施された場合、応答(オーナから、またはオーナがい
ない場合はホームから)は、他の基板からの確認を待たずに、トランザクション
を完了する。しかしながら、ラインを有する全ての基板内において、無効は待ち
行列をなしている。基板からの全てのコヒーレントなバス・トランザクションは
、キューから順に完了させていくので、無効化は、あらゆる後続のコヒーレント
・トランザクションの前に完了する。
所有権と同様に、ラインは、応答データ・バス・パケットではなく、ReadTo
Shareアドレス・バス・パケットまたはReadToShareAlwaysアドレス・バス
・パケットによって共有されることになる。
次に、第3図を参照しながら、本発明の好適実施例に対する、UPA装置を用
いたキャッシュ・コヒーレンスおよび順序付けについて説明する。UPA仕様は
当業者には公知であるので、ここでは説明しない。好適実施例では、システム3
0はUPAインターフェースに準拠した装置に対応するが、「UPA相互接続ア
ーキテクチャ」とはいくらか異なる。したがって、UPA相互接続アーキテクチ
ャ仕様(例えば、全体として特定システムの実施態様に対する仕様)と、いずれか
の将来の「UPAインターフェース」仕様(例えば、UPA装置とシステムとの
間のインターフェースについての仕様)との間の相違を認めるべきである。「U
PA相互接続アーキテクチャ」はそれ自体、ここでは好適であるような大型シス
テム10の効率的な実施を可能にする場合に、不当に制限的となる可能性がある
。このような不当な制限は、種々のインデックスおよびアドレスを禁止する規則
だけでなく、無効化の原因となったトランザクションを確認する前に全ての装置
からの無効化に対する確認を待つことを含む。
UPA仕様では、無効化の原因となったトランザクションを確認する前に、全
ての装置からの無効化に対する確認を待つことは比較的単純である。小型システ
ムでは、システム・コントローラ("SC")が好ましくは単一チップであり、シ
ステム内の各UPAポートに対して二点間リンクを有するので、複雑性は回避さ
れるが、システムが大型化するに伴って、効率的に行うことが困難になる。イン
ターフェース30では、しかしながら、アドレス・コントローラ180は、無効
化に対する確認を待たないが、例えば、Sun MicrosystemsのSunSメモリ・モ
デルを含む、公知のメモリ・モデルは、それでも実施されている。種々のインデ
ック
スおよびアドレス禁止規則に関しては、UPA仕様SCは単一の集中エンティテ
ィであるので、インデックスおよびアドレスの禁止は、小型システムでは簡単な
ものとすることができる。(単一チップSCが実用的でない大型システムでは、
実施はより困難になる。)先に注記したように、インターフェース30は、イン
デックスまたはアドレスの禁止を実施せず、必要ともしない。
インターフェース30は、更に、「UPA相互接続アーキテクチャ」に不必要
に指定されている他の態様も簡略化する。例えば、O,S,およびI状態のみを
有する単純な三状態Dtagsプロトコルを採用する。このプロトコルは、UPAが
指定するMOSI Dtagプロトコルと同等のあらゆる実用的な目的に対応する。
また、インターフェース30は、全てのReadToShareトランザクションをRea
dToShareAlwaysトランザクションとして扱うことにより、MOESI Etags
プロトコルをMOSIプロトコルに変更可能なモードも許可する。UPA装置トランザクションの順序付け
アドレス・バスは、全トランザクションの単一の全体的な順序を確立する点、
即ち、いわゆる「全体可視点」(point of global visibility)を確立することが
できる。かかる単一の全体的順序は、第3図に示したキューを用いてSunMicro
systemsのメモリ順序のようなメモリ順序の実施を可能にすることが好ましい。
これらのキューは、メモリのためではなく、UPA装置(例えば、CPU)のみ
のためのものである。
システム30では、全ての装置要求("P_REQ")は、第3図において要求
出力キュー("ROQ")176によって表されているように、アドレス・バス6
0に順番に発行される。装置に関連するコヒーレントな要求および割り込み(外
部のコヒーレントな要求およびそれ自体のコヒーレントな要求を含む)は全て、
DTAGRAM220からのDtagsによって「フィルタ処理」された後、コヒー
レント入力キュー("CIQ")182に入力される。第3図に示すように、装置
PIO要求は全て、ローカルPIOキュー("LIOPQ")183に入力され、
装置に対する外部PIO要求は全て、外部PIOキュー("FPIOQ")184
に入力される。通常、これらのキューの各々からのトランザクションは、キュー
の先頭から順番に処理される。1つの例外は、装置からのWriteBackであり、
このために特殊な最適化
が実施される。WriteBackおよびビタティム化(victimization)(Dvictおよび
Vbufferブロックの機能を含む)については更に説明する。
加えて、第3図に示すように、装置P_REQは、UPAクラスに応じて、2
つのキューCOQ174およびCIQ175に配置される。キューCOQおよび
CIQは、UPA仕様が要求するように、各クラスに対するP_REQの順序に
したがって、S_REPLYの順序を維持するように機能する。
装置160−Nに向かうデータおよびこれから出ていくデータは、第3図に示
すように、2つのバッファ(例えば、キューではなく、真のバッファ)、データ
出力バッファ("DOB")186およびデータ入力バッファ("DIB")187に
バッファされる。データは、アドレス・バス・パケットと同じ順序で送ったり、
受け取ったりする必要はなく、データ・バス・パケットの順序はメモリの順序と
は関係がない。コヒーレント・トランザクションの順序付け
次に、コヒーレント・トランザクションの順序付けについて説明する。全ての
コヒーレント・トランザクションは、UPAクラスとは独立に、それらがアドレ
ス・バスに現れるのと同じ順序に並べられる。第2図および第3図に示すように
、トランザクションは、コヒーレント入力キュー("CIQ")182の先頭から
順番に処理される。種々のコヒーレント・トランザクションについて、これより
個々に説明する。
ローカルなReadToShare、ReadToShareAlways、およびReadStreamト
ランザクションに関して、アドレス・コントローラ180は、これらのトランザ
クションに対するデータが到達するのを待ち、次いで、S_REPLYを装置に
発行し、それにデータが続く。
外部ReadToShare、ReadToShareAlways、およびReadStream は、アドレ
ス・コントローラがOwnedラインをアサートしたトランザクションであり、した
がってデータを与える。尚、装置はUPA上にP_WB_REQを以前に発行した
可能性があることを注記しておく。この場合およびSYSIO(CopyBack S_
REQを全く受け入れることができない)の場合については、以下で別個に説明
する。アドレス・コントローラ180は、適切なCopyBack S_REQを装置に
発行し
(ReadToShareおよびReadToShareAlwaysに対してはS_CPB_REQ、
ReadStreamに対してはS_CPD_REQ)、P_SACKまたはP_SACKD
P_REPLYを待ち、S_CRAB S_REPLYを発行し、データをDOB
にロードする。この際、トランザクションをコヒーレント入力キュー182から
除去することができる。好ましくは分散型総当たりARBユニット186を用い
て、アドレス・コントローラ180はデータ・バスに対する調停を行い、その後
データを転送する。しかしながら、別の調停方式を用いてもよい。
ローカルなReadToOwnトランザクションは2つの場合を考慮しなければなら
ない。一方の場合は、装置が有効なデータのコピーを有しておらず、上述の他の
局所的なリードのように扱われる場合である。アドレス・コントローラ180は
データ入力バッファ("DIB”)187にデータが得られるのを待ち、S_RBU
REPWを発行し、次いでデータを供給する。第2の場合では、装置は有効な
データのコピーを有する。ここでは、アドレス・コントローラ180は、データ
を待たずに、S_OAKS_REPLYを装置に発行する。アドレス・コントロー
ラはSharedをアサートしたので、当該データを所有するメモリもその他のキャ
ッシュも、データで応答しない。
外部ReadToOwnトランザクションも、考慮すべき2つの場合を提示する。第
1の場合では、装置はオーナではなく、又は開始側がShared信号をアサートし
て、それが既にデータを有していることを示す。アドレス・コントローラ180
は、S_INV_REQを装置に対して発行し、P_REPLYを待ち、データは
転送されない。第2の場合では、装置はオーナであり、開始側はそのSharead信
号をアサートしない。この時点で、アドレス・コントローラ180はP_CPI_
REQを装置160−Nに発行し、P_REPLYを待ち、S_CRAB S_RE
PLYを発行し、データをデータ出力バッファ("DOB")186にロードする
。この際、トランザクションをキューから除去することができる。好ましくは、
アドレス・コントローラ180内のARBユニット186を用いて、データ・バ
スに対する調停を行い、その後データを開始側に転送する。(ARBユニット1
86は高速であるが、その低いレイテンシは、好適実施例におけるアドレス・バ
スの調停に対する程、データ・バスの調停に対しては重要ではない。)
ローカルWriteStreamトランザクションは、考慮すべき2つの場合を提示す
る。第1の場合では、装置においてラインが有効である。アドレス・コントロー
ラはまず、S_INV_REQを発生して装置内のラインを無効化し、P_SAC
K/P_SACKDを待ち、次いでS_WABを発行してデータを得る。第2の場
合では、装置においてラインが無効である。アドレス・コントローラはS_WA
Bを発行し、装置からデータを得ることができる。次いで、キューからトランザ
クションを除去することができ、その後実際のデータ転送が発生する。
外部WriteStreamトランザクションに対して、アクセス・コントローラは、
S_INV_REQを発行することによって、装置内のラインを無効化し、P_S
ACK/P_SACKDを待つ。そして、CIQからトランザクションを除去する
ことができる。
ローカルな割り込みトランザクションに関して、割り込みの宛先がこの割り込
みを受け入れることができない場合、Shared 信号をアサートする。この場合、
ACはS_INACKを装置に発行する。その他の場合、アドレス・コントロー
ラは、S_WABを発行し、割り込みデータをDOBにロードし、続いて宛先に
転送する。好適な実施態様では、装置はそれ自体に割り込みを送ってはならない
。かかる割り込みが送られた場合、システムのタイムアウトおよびリセットが続
いて発生する。
外部割り込みトランザクションに関して、アドレス・コントローラが割り込み
に対してSharedラインをアサートした場合、このトランザクションを破棄する
ことができる。その他の場合、アドレス・コントローラはデータを待ち、P_I
NT_REQを装置に発行し、S_WIB S_REPLYを発行し、データを転送
する。この際、トランザクションをキューから除去する。装置は、かなり後にP
_IAKを発行することができ(おそらくは、ソフトウエアによる何らかの動作を
通じて)、アドレス・コントローラは、P_IAKを待っている間、他のトランザ
クションを遅らせてはならない(stall)。ビクティム化およびローカル・ライトバック・トランザクション
次に、ビクティム化およびローカル・ライトバック・トランザクションについ
て、第3図に関して説明する。各UPAポートに対して、アドレス制御はダーテ
ィなビクティムをスヌープするための単一のタグ("Dvict")179、およびダ
ーティなビクティムによるキャッシュ・ミスのパーフォーマンスを最適化するた
めの単一のタグ付バッファ("Vbuffer")188を有する。ビクティム化トラン
ザクションがUPA上に発行されると(即ち、DVPビットがセットされたリー
ド)、本発明では、対応するトランザクションもビクティム・ビットがセットさ
れる。かかるトランザクションに対して、開始側は対応するビクティム・タグを
DtagsからDvictにコピーする。Dtagsと同様に、Dvictのスヌープが行われる
。Dvict内のラインに対して外部要求を行うと、その結果、適切なS_REQ(
CPB,CPI,INV)がCIQ内に並べられ、Dvictタグは、Dtagsに対す
ると同様に、本発明では外部トランザクション(RTO,WS)によって無効化
される。
WriteBackは好ましくは、開始側のDtagsまたはDvict内の一致タグ(matchi
ngtag)を無効化する。DtagおよびDvictに対するスヌーピングによって、リー
ド・トランザクションをビクティム化する前またはその後に、WriteBackのU
PAによる発行が可能となる。WriteBackは開始側によってスヌープされるの
で、以前の外部トランザクションが、ライトバックされているラインを無効化し
た場合、WriteBackを取り消すことができる。これを行うには、本発明におい
て、WriteBackが現れたときに、ラインがそのDtagsまたはDvaict内に所有さ
れていない場合、開始側がOwnedをアサートする。
トランザクションがクリーンなビタティムを有する場合(例えば、DVPビッ
トがUPAP_REQ内でセットされていない)、このクリーンなビクティムに
対するタグをDvictにコピーしない。UPAポートには、リード・トランザクシ
ョンをビクティム化する前に現れた外部トランザクションから得られたクリーン
なビクティムに対するS_REQが送られる。リード要求は外部トランザクショ
ンの後にCIQに現れるので、アドレス・コントローラが、リードに対するS_
REPLYの後に、クリーンなビクティムに対するS_REQを送出しないこと
が保証される。
UPAインターフェースにおいて、WriteBackは、パーフォーマンスの考慮
のために、およびS_REQを受け入れることができない(コピーを戻すか、あ
るいは無効化する)SYSIOを扱うために、他のトランザクションとはいくら
か異なる扱いを受ける。
P_WB_REQと同じクラスに装置からの未決のP_REQがない場合、アド
レス・コントローラは、いずれかの未決のS_REQが完了するのを待ち、次い
でS_WABS_REPLYを装置に発行する。これは、おそらく、トランザクシ
ョンが本発明上に現れる前である。アドレス・コントローラ180はデータをD
OB 186にバッファし、ラインに対するタグをVbffer188(第3図参照)に
保持する。この際、オーナはアドレス・コントローラであって、装置ではない。
アドレス・コントローラは、S_REQ要求を装置に発行することなく、ライン
に対する全ての外部要求に対処する。これを行うには、Vbffer188内のタグ
に対して、キューの先頭にあるコピーバック/無効化要求をチェックし、DOB
186に保持されているWriteBackデータからデータを供給する。WriteBack
トランザクションも、本発明からCIQ182に並べられる。一旦WriteBack
トランザクションがCIQ182の先頭に到達すると、当然当該ラインに対する
外部要求は全て処理されたことになる。この時点で、トランザクションをキュー
から除去することができ、アドレス・コントローラはVbffer188を無効化す
ることによって、「所有権」を放棄する。
同じクラスからの未決のP_REQがある場合、または未決のWriteBackによ
ってVbfferが既に使用されている場合、アドレス・コントローラは、WriteBa
ckのために直ちにS_REPLYを発行することはできない。この場合、Write
BackはCIQ内の他のコヒーレント・トランザクションと共に列に並べられ、
順番に対処される。この場合はSYSIOには発生しないので、SYSIOから
のWriteBackに対するS_REPLYは直ちに発行され、S_REOはSYSI
Oには送られない。外部WriteBackはUPA装置には無関係であり、CIQに
は入力されない。
外部コヒーレント・リードの間のパーフォーマンスを最適化することに関して
、Vbuffer188は、コピーバック要求を最適化するためにも用いられる。実際
、Vbufferが使用されていない場合、外部リードに対するタグ(コピーバック要
求がUPAに送られた)はVbufferに保持され、対応するデータはDOBに保持
される。後続の外部リードがVbfferをヒットした場合、キャッシュへのコピー
バック要求がなくても、これを満足させることができる。これは、多数のプロセ
ッサが、他のキャッシュ内に所有されている共通のラインを要求する場合のパー
フォ
ーマンスを助ける。これは一般的な事象であり、例えば、多くのプロセッサがス
ピンロック(spinlock)を待っているときに発生する場合がある。スピンロックを
保持しているプロセッサがそれに書き込みを行うことによって、そのスピンロッ
クを解放するとすぐに、他のプロセッサはライン上でミスし、このロックを解放
したプロセッサが所有する同じキャッシュ・ラインに対する要求を行う。
次に、PIOトランザクションの順序付けについて説明する。ローカルPIO
トランザクションは、LPQ内に置かれ、それらがキューの先頭に到達したとき
に処理される。リード・トランザクションは、アドレス・コントローラがS_R
EPLYを発行する前に、データを待つ。ライト・トランザクションに対して、
アドレス・コントローラはS_REPLYを発行し、データをDOBにロードす
る。実際のデータ転送が行われるのは更に後である。
外部PIOトランザクションは、別個のFPQキューに置かれ、それらがキュ
ーの先頭に到達したときに処理される。外部リードは、P_NCRD_REC2 ま
たはP_NCBRD_REQとして発行され、データは通常のP_REPLY/S_
REPLY シーケンスで得られる。いつもと同様、開始側への実際のデータ転
送は、後に行われる。多数の外部ライトが1つの装置に対して発行される場合が
あり、データもS_REPLYによってこの装置に転送される。この際、トラン
ザクションをキューから除去することができるが、アドレス・コントローラは、
UPAポートに対するフロー制御のために、P_REPLYを追跡し続ける。
UPAクラスおよびS_REPLYの順序は、各タラスにおけるUPA装置の
P_REQに対するS_REPLYがP_REQと同じ順序であるという、UPA
装置による予想を伴っている。しかし、トランザクションの順序が、クラスに基
づいて維持されているのではなく、動作がCIQまたはLPQのどちらに行くの
かに基づいて維持されている場合、アドレス・コントローラは、S_REPLY
が適切な順序で与えられることを保証する機構を必要とする。C0QおよびC1
Qキューはこの機構を与えるものである。CIQの先頭にあるローカル・トラン
ザクションに対するS_REPLYは、それがC0QまたはC1Qでも、先頭に
ある場合にのみ発行することができる。その他の場合、LPQからのトランザク
ションには、最初にS_REPLYが発行されなければならない。同様に、LP
Qの先頭にあるローカル・トランザクションに対
するS_REPLYは、それもC0QキューまたはC1Qキューの先頭にある場
合にのみ、発行するようにしなければならない。その他の場合、CIQからのト
ランザクションには、S_REPLYが最初に発行されなければならない。
本発明では、UPAクラスは、例えば、デッドロックの場合(以下で説明する
)のように、なんら有用な機能を提供することはなく、事実上設計を複雑化させ
るだけである。S_REPLYに関連するP_REQは、各クラス内でS_REP
LAYの順序を決めるという要件のために、UPA内では暗示的である。システ
ムの確認を装置の要求と照合する別の機構が存在するのであれば、UPAクラス
を全て排除することにより、本発明の設計を簡略化することができる。
デッドロックは、同じクラスのキャッシュ不可能なリードとキャッシュ可能な
リードによって発生する可能性がある。より具体的には、デッドロックは、次の
ことが発生する場合に起こる。第1の UPA 装置がまずキャッシュ不可能なリ
ード要求(NCRD,NCBRD)を発行し、次いでキャッシュ可能なリード要
求(RDS,RDSA,RDO,またはRDD)を発行し、両方の要求が未決であ
り、キャッシュ不可能なリード要求およびキャッシュ可能なリード要求が同じク
ラス内にあり、キャッシュ不可能なリード要求は第2のUPA装置上のIOバス
(例えばSBus)に向けられ、同じIOバス上のマスタが、第1のUPA装置内に
所有されている位置に、DMAキャッシュ可能なリード要求を発行した。本発明
では、この要求は、第1のUPAからのキャッシュ可能なリード要求の後に現わ
れ、IOバスはIOバス上のDMAキャッシュ可能なリードに対する再試行を発
行しない。
上述のデッドロックの場合、第1のUPAからのキャッシュ不可能なリードに
は、クラス順序のために、まずS_REPLYが発行されるが、DMA要求が1
0バスを保持しているので、データは得られない。DMA要求はキャッシュ可能
なリード要求の後であり、キャッシュ不可能なリード要求に対するS_REPL
Yを先に与えなければならないので、キャッシュ可能なリード要求は完了するこ
とができない。そのため、DMA要求は完了することができない。このデッドロ
ックを回避するために、本発明における基板は、同じクラスのキャッシュ不可能
なリード要求が既に未決である場合、キャッシュ可能な要求を発行しない。(本
好適実施例では、一度に許される未決のリードは1つだけとし、この問題を解消
している。)
CIQトランザクションに対するフロー制御は、本発明では、調停バス内の単
一のFlowControl信号を用いて実施している。FlowControl信号がアサートさ
れていれることが観察されてから2サイクル後に開始され、CIQ内に入力され
る新しいトランザクションは開始されない。
フロー制御機構が必要なのは、装置内のCIQが禁止される可能性がある(例
えば、装置によって発行されたリード要求に対する応答を待っている)からであ
る。この時間中、他の装置からのアドレス・バス・パケットがCIQを埋め尽く
す可能性がある。好適実施例では、基板当たり7つの未決トランザクションID
により、未決トランザクションの全数を112に限定しているが、CIQ内のパ
ケットは、既に「完了」しているトランザクションからの場合もあるので、開始
側および応答側の視点からは、もはや「未決」ではないことを注記しておく。こ
れらの例は、装置内で無効化されるデータに対するReadToOwnまたはWriteS
treamパケットである。開始側および応答側のいずれも、他の全基板において実
際の無効化が競合するのを待つ必要はない。
デッドロックを防止するためには、FlowControlがアサートされたあらゆる
キューが、最終的に禁止されないことを保証しなければならない。このために、
ある装置に対するIO空間の要求は、それより早い装置からのDMA要求によっ
て禁止される可能性があるので、FlowControl はFPQの代わりにアサートさ
れない。FlowControlがアサートされ、DMA要求に対するトランザクション
が未だ開始されていない場合、トランザクションが開始されず、デッドロックが
発生する。結果的に、FlowControlは、FPQの代わりではなく、CIQの代
わりにアサートすることが好ましい。したがって、FPQは、全ての装置からの
未決の10空間アクセスの最大数を収容可能とするように十分な大きさでなけれ
ばならない。
LPQに対するフロー制御は、ここではいずれか1つの装置からの未決要求の
数がトランザクションIDによって7つに限定されているので、好適実施例では
不要である。
次に、割り込みに対するフロー制御について説明する。ある装置に配信される
割り込みに対するP_IAKは、大幅に遅れる場合がある。したがって、後続の
割り込みはこのままでは装置に配信することができないので、割り込みが他のト
ラ
ンザクションまたは装置を止めてしまう事態を防止するための機構を設けなけれ
ばならない。好適実施例では、各アドレス・コントローラは、そのUPAポート
の各々に発行された未決の割り込みの数のためにカウンタを有している。この数
が、装置が受け入れ可能な割り込み数と等しくなった場合、アドレス・コントロ
ーラは、後続の割り込み全てに対してShared信号をアサートし、送出側が再度
試さなければならないことを示す。カウンタは、割り込みを受け入れる毎に増分
し、P_IAKを受け取る毎に減少する。尚、CIQは、P_IAKを待って停止
してはならないことを注記しておく。
本発明は、多数の未決トランザクション間の多くの重複に対処することができ
る。好適実施例では、各UPAポートは8つまでの未決トランザクション(UP
Aに関する限り未決)を有することができ、UPAクラス間には区別を付けない
。UPA装置は、クラス当たりの未決要求数を含めてプログラムする必要があり
、ファームウエアがいずれかの方法でクラス0およびクラス1間において8つの
要求を分配可能であることが好ましい。
各ポートは単一のDvictタグを有するので、ダーティなビクティムを伴うリー
ドが発行された後、ダーティなビクティムを伴う次のリードが発行できるように
するには、その前に、このリードに対するWriteBackを発行しなければならな
い。しかしながら、これでは未だ、多数のWriteBackおよびダーティなビクテ
ィムを伴う多数のリードが「対」をなすことにより1つのDvictタグで足りるの
であるならば、これらがUPA上で未決となる可能性がある。未決のリード要求
の数または未決のダーティなビクティムの数に関しては、これ以上の制限はない
。
UPA相互接続仕様は一層制限的であり、ダーティなビクティムを伴う多数の
リードおよび多数のWriteBacakが適切に「対をなし」同じクラスにある場合に
限って、これらが未決であることを許すことを注記しておく。本発明では、「対
を形成する」条件のみを必要とし、UPAクラスに関する区別は設けない。これ
は、本発明の今後の実施例は、ダーティなビクティムを伴う多数のキャッシュ・
ミスを発行しながらも、尚リード要求をビクティム化する事から異なるクラスの
WriteBackを保つことにより、良好なパーフォーマンスを維持することが可能
であることを暗示するものである。
インターフェース30は、従来技術のバスに基づくプロトコルに対して、いく
つかの利点を提供することは認められよう。従来技術とは対照的に、未了状態は
不要である。したがって、タグ状態機械を、簡素な固定パイプラインとし、その
トランザクションがアドレス・パケットおよびそれらのスヌープ情報のみに依存
するようにすることが可能となる。更に対照的に、未了のトランザクションと相
互動作するトランザクションを禁止する必要がない。代わりに、インターフェー
ス30は、タグ・パイプラインにおいて単純なパイプライン・バイパスを用いて
、かかる相互動作を処理する。
先に注記したように、本発明の好適実施例では、各基板は7つまでの未決トラ
ンザクションを有することができ、この場合トランザクションIDのサイズによ
る制限が加えられる。これら7つの未決トランザクションは2つのUPAポート
によって共有され、いずれのポートにも固定的な割り当てはない。例えば、7つ
の未決トランザクションが全て同じUPAポートによって使用されることも可能
である。
再度第1図を参照する。種々の基板50−Nは、システム10の動作中に、接
地面スロット(groundplane slot)に挿入することができる、いわゆる「ホット・
プラグ」が可能であることが好ましい。ホット・プラグ基板挿入の間信号ピン上
にグリッチを引き起こすのを避けるために、基板50−Nは、異なる長さの接続
ピンを有することが好ましい。基板のプリチャージ電力用ピンおよび接地用ピン
は、他のピンよりも長くすることにより、最初に接触し、他の基板ピンが電気的
な接触を行う前に、基板を通常の動作レベルまで予め充電しておく。加えて、1
組の長い「トリガ」ピンを設けて電気的接触を早め、挿入された基板にトリガ信
号を確実にアサートさせるようにする。トリガ信号は、新たに挿入された基板の
信号ピンがもうすぐ電気的接触を行うことを、システム10の他の基板50−N
に早めに警告するものである。
16サイクルの遅延の後、他の基板は、バス上に新たな要求を行うことを禁止
する内部ポーズをアサートし、それらの内部マスタ・ポート・タイムアウト・カ
ウンタを停止し、内部プログラム可能カウンタを起動する。他の基板もトリガを
アサートしてトリガ信号をデバウンス(de-bounce)するが、トリガが16サイク
ル
の遅延の前にディアサートされた場合、カウンタを起動し直す。内部カウンタが
満了したとき、基板はトリガをディアサートする。これは、挿入される基板によ
ってアサートされ続ける。また、基板は内部凍結信号(internal Frozen signal)
もアサートし、バスの監視を停止する。カウンタの遅延によって、基板は既に開
始されているトランザクションを完了させ、次いでバスを無視することができる
ので、グリッチがエラーの原因となることはない。カウンタの遅延は、基板番号
に応じてずらすことにより、全てのドライバによるトリガ信号の同時解放を防止
することが好ましい。接触した正常な信号ピンからのノイズが始まり、1組のい
わゆる係合ピンが、挿入された基板に、正常な信号ピンが係合されたことを示す
。これは、挿入された基板において遅延を開始させ、接触した正常な信号ピンか
らのノイズは停止する。係合信号からの遅延が終了した後、挿入された基板はト
リガをディアサートし、システム内の他の基板は内部凍結信号をディアサートし
、再びバスの監視を始める。
機械的な耐性に対処するために、基板のコネクタは、1つのトリガ・ピンをコ
ネクタの各端部に有し、1つの係合ピンをコネクタの各端部に有することが好ま
しい。トリガ信号は2つのトリガ・ピンの論理ORであり、一方係合信号は2つ
の係合ピンの論理ANDである。
ホット・プラグ挿入の間のディグリッチ(de-glitching)に対して、タイミング
の制約が強制される。以下の表記では、Tiは連続イベント番号iに対応する。
時間間隔T4−T3は、未決のバス・トランザクションを全て完了するのに十分
でなければならず、好適実施例では約10msである。時間間隔T2−T1は、
挿入した基板の電力が、トリガをアサートするのに十分に充電するのに十分でな
ければならない。信号ピンの接触の結果生じるノイズは、時点T5以前に開始し
てはならない。これが意味するのは、プログラム可能な遅延は、信号ピンがその
時間では接触できないことを保証するために、十分短くしなければならないとい
うことである。信号ピンの接触によるノイズは時点T8の前に終了しなければな
らない。これは、遅延T6−T8(挿入された基板上で固定される遅延)は信号
ピンからのノイズが減衰するために十分長くなければならないことを暗示する。
これは、基板を挿入する速度に下限を強制し、遅延T8−T6は、これが実際上
の
制約とはならないことを保証するために、十分に長くなければならない。
以下の特許請求の範囲によって定義される本発明の主題および精神から逸脱す
ることなく、開示された実施例には、変更や改造が可能である。
【手続補正書】
【提出日】1997年12月22日
【補正内容】
請求の範囲
1.少なくとも1つのメモリ・ユニットと、トランザクションの開始および/ま
たはトランザクションに対する応答が可能な、中央演算装置及び/又は入出力ユ
ニットを含み得る少なくとも1つの装置であって、アドレス・コントローラと関
連付けられた各前記装置とを有するコンピュータ・システムと共に用い、各前記
装置によってスヌープされる少なくとも1つのアドレス・バスを有する分割トラ
ンザクション・バス・プロトコル及びシステムであって、該分割トランザクショ
ン・バス・システムが、
各前記装置に結合され、少なくとも1つのトランザクションに関連するアドレ
ス・データを搬送するアドレス・バスと、
各前記装置に結合され、少なくとも1つのトランザクションに関連するトラン
ザクション・データを搬送するデータ・バスと、
各前記装置に結合され、前記装置の少なくともいくつかに対するアドレス・バ
スおよびデータ・バス・トランザクション要求を搬送する多重化調停バスであっ
て、各トランザクションについて、アドレス・データは、前記調停バス上にトラ
ンザクション要求が置かれるのと実質的に同時に前記アドレス・バス上に置かれ
る、前記多重化調停バスとから成り、
各前記装置は前記アドレス・バスをスヌープし、識別されたメモリ・ラインが
所有されているかあるいは共有されているかを学習し、これに応じて、適切な所
有信号または共有信号を前記バス・システム上でアサートすることを特徴とする
分割トランザクション・バス・プロトコル及びシステム。
2.請求項1記載のプロトコル及びシステムにおいて、
アドレス・データの各パケットは、2クロック・サイクル長であり、トランザ
クション・データの各パケットは2クロック・サイクル長であり、前記調停バス
上におけるアドレス・バスおよびデータ・バスの調停は、各クロック・サイクル
毎に交代することを特徴とする分割トランザクション・バス・プロトコル及びシ
ステム。
3.請求項1記載のプロトコル及びシステムにおいて、
前記コンピュータ・システムは、キャッシュ・ラインと、該キャッシュ・ライ
ンの各々についての状態情報を格納するバス・レベル・タグ・メモリとを含み、
該バス・レベル・タグ・メモリは前記装置がスヌーピングのために用いるもので
あり、
前記回路カードの各々は、前記装置の内の1つに関連する前記キャッシュ・ラ
インの各々についての状態情報を格納する装置レベル・タグ・メモリを含み、
前記バス・レベル・タグ・メモリ内の状態情報と前記装置レベル・タグ・メモリ
内の状態情報とを比較し、再順序付けの候補となる要求を識別する機構を含むこ
とを特徴とする分割トランザクション・バス・プロトコル及びシステム。
4.請求項1又は2又は3記載のプロトコル及びシステムであって、前記装置が
、
(a)中央演算ユニットを含むか、
(b)入出力装置を含むか、
(c)前記アドレス・バスにアクセスする要求を調停する機構を有するアドレス
・コントローラを含む回路カード上に実装されているか、
(d)コヒーレント入力キューを含む回路カードであって、アサートの前に、前
記コンピュータ・システムによる時間多重化可能な無視信号のアサートがない場
合、前記回路カードに関連する前記装置に対して要求された全てのコヒーレント
・トランザクションを前記コヒーレント入力キューにロードする、回路カード上
に実装されており、
前記無視信号のディアサート時に、前記トランザクションを再発行し、該再発
行したトランザクションに関連する無視信号がアサートされない場合、前記再発
行したトランザクションは、前記コヒーレント入力キューにロードされ、前記分
割トランザクション・バス・システム上に有効なトランザクションとして現れる
か、
(e)メモリを含む回路カード上に実装されており、オープン状態と共有状態を
識別するために、トランザクション・アドレス・データ及び前記回路カード上の
メモリをスヌープするか、
から成るグループから選択された少なくとも1つの特性を有することを特徴とす
る分割トランザクション・バス・プロトコル及びシステム。
5.請求項1記載のプロトコル及びシステムであって、更に、
トランザクション要求に応答するデータを一意的に識別するdataIDを搬送す
るデータIDバスを含み、
各トランザクションに対する前記アドレス・データは、前記トランザクション
を開始した前記装置を内蔵している前記回路カードを一意的に識別すると共に、
前記トランザクションを一意的に識別するsourceIDを含み、
前記dataIDおよび前記sourceIDは、前記バス・システムが、前記データ・
バス上のパケットと、以前に前記アドレス・バス上に置かれたパケットを照合す
ることを可能にすることを特徴とする分割トランザクション・バス・プロトコル
及びシステム。
6.請求項1記載のプロトコル及びシステムにおいて、
開始側の前記装置がデータを押し出し、応答側の前記装置が現在前記データを
受け入れることができない場合、データ取り消し信号がアサートされ、その時点
において、前記応答側装置は前記データを引き込む責務を負うことを特徴とする
分割トランザクション・バス・プロトコル及びシステム。
7.請求項6記載のプロトコル及びシステムにおいて、
応答側の前記装置は更に、それが引き込むべきライト型動作を追跡し、
開始側の前記装置は、前記応答側装置が前記データ・バス上で適切なdataID
信号を駆動する場合、前記データで応答し、そこで前記データが引き込まれるこ
とを特徴とする分割トランザクション・バス・プロトコル及びシステム。
8.請求項1記載のプロトコル及びシステムであって、更に、
キューを含み、その中にアサートされた要求を並べ、前記アドレス・バス上の
状態トランザクションが、それに対する応答に依存せずに、原子的かつ論理的に
発生するようにし、前記分割トランザクション・バスは、トランザクション要求
を禁止することなく機能することを特徴とする分割トランザクション・バス・プ
ロトコル及びシステム。
9.請求項1又は4記載のプロトコル及びシステムであって、更に、
関連する前記トランザクションに関連するデータがまだ転送されていなくても
、前記識別されたメモリ・ラインの所有権を、前記アドレス・バス上のパケット
で
前記装置に移転する機構を含み、前記所有権を有する前記装置が前記メモリ・ラ
インに対する以降の要求に応答することを責務とすることを特徴とする分割トラ
ンザクション・バス・プロトコル及びシステム。
10.請求項3又は4記載のプロトコル及びシステムであって、更に、
前記バス・レベル・タグ・メモリ内および前記装置レベル・タグ・メモリ内に
状態の同一性がある場合、前記コヒーレント入力キューにトランザクションをロ
ードさせ、その他の場合そのようなロードを禁止する機構と、
前記アドレス・バス上の状態トランザクションが、それに対する応答には依存
せずに、原子的かつ論理的に発生するようなタグ・パイプライン・バイパスと、
を含むことを特徴とする分割トランザクション・バス・プロトコル及びシステム
。
11.請求項7記載のプロトコル及びシステムにおいて、
前記開始側装置がライトバック・トランザクションに対する所有信号をアサー
トする場合、前記データをメモリに書き込むことなくデータ転送が発生し、前記
ライトバック・トランザクションに対するアドレス・パケットが発行されたとき
、前記開始側装置は適切な前記メモリ・ラインの所有権を放棄することを特徴と
する分割トランザクション・バス・プロトコル及びシステム。
12.請求項11記載のプロトコル及びシステムにおいて、
前記ライトバック・トランザクションを発行する前記装置が、(i)前記装置に
関連するバス・レベル・タグが前記装置はオーナでないことを示す場合、(ii)
所有型信号がアサートされた場合、及び、(iii)無視信号がアサートされた場
合、から成るグループから選択された少なくとも1つのイベントの発生と同時に
、前記ライトバック・トランザクションを取り消すことを特徴とする分割トラン
ザクション・バス・プロトコル及びシステム。
13.バス・システムと、メモリと、前記バス・システム上にトランザクション
の要求を可能とする複数の装置とを含む電子システムにおいて、コヒーレント・
メモリ・ドメインを拡張しつつ、同時にリード・トランザクションを満足する方
法であって、前記装置の少なくともいくつかは、前記バス・システムに接続され
た回路基板上に実装されている中央演算装置(CPU)を含み、前記回路基板は
、前記電子システムに関連する複数の分散型メモリ・ユニットの内少なくとも1
つ
を含み、
(a)前記装置の1つによって前記バス・システム上に要求されたリード・ト
ランザクションが、無効なバージョンのデータが位置する前記メモリ内のアドレ
スに向けられていることを検出するステップと、
(b)前記アドレスに有効なバージョンの前記データを書き込むことを含むR
eadToForkトランザクションを与え、それによって、前記メモリ・アドレスを
更新し、同時に前記リード・トランザクションを満足するステップであって、前
記書き込みは、要求側の前記装置にはリード・トランザクションとして見えるが
、前記メモリ・ユニットにはライト・トランザクションとして見えるステップと
、から成り、
再発行の際、前記ReadToShareForkトランザクションは、(i)前記メモリ・
アドレスと、前記装置が前記リード・トランザクションを発したときの前記トラ
ンザクション識別タグと同一の識別タグとを保持するパケットを、前記バス・シ
ステムに搬送させ、前記識別タグの同一性の認識と同時に有効なデータが引き込
まれるか、(ii)前記バス・システムがスヌーピング分割トランザクション・バ
ス・システムであるとき、前記要求元装置に、前記更新データを引き込むことを
、前記装置がそれを行うことが可能なときに、可能にするか、(iii)前記装置
によって、前記バス・システム内のアドレス・バス上で開始されるか、(iv)前
記メモリ・アドレス内で前記データが更新されたときに発行された再発行トラン
ザクションであるか、
から成るグループから選択された少なくとも1つの特性を有するものであり、
前記システムは、トランザクションのアサートに基づいて、該トランザクショ
ンに対する応答には関係なく、論理的かつ原子的に遷移状態を維持することを特
徴とする方法。
14.請求項13記載の方法において、
ステップ(b)が、(i)該ステップにおいて、前記リード・トランザクショ
ンは、前記メモリ内の前記アドレスにおいて前記データを更新したとき、前記リ
ード・トランザクションを再発行することによって満足されるか、(ii)該ステ
ップにおいて、前記要求元装置に関連するアドレス制御装置が選択的にステータ
ス信号を
アサートし、前記装置に関連するバッファの輻幀による前記トランザクションの
完了を延期するか、(iii)該ステップは、要求側の前記装置に関連する前記ア
ドレス制御装置にはリード・トランザクションとして見えるが、前記メモリ・ユ
ニットにはライト・トランザクションとして見えるか、(iv)該ステップにおい
て、前記方法が、正常なライト動作に等しい数のバス・システム・クロック・サ
イクルをセーブするか、
から成るグループから選択された特性を少なくとも1つの有することを特徴とす
る方法。
15.各々CPUおよび分散メモリに関連する装置を含む少なくとも1つのコン
ピュータ・サブシステムと、サブシステム・バス・システム及び該バス・システ
ムに結合されたバス・インターフェースを含むオムニバスとを含み、オムニバス
搬送トランザクションの全体的順序が通常前記オムニバス・システムに対するア
クセスの時間的順序によって決定されるコンピュータ・システムにおいて、全体
的なトランザクションの順序を最適化する方法であって、
(a)前記トランザクションの各々について、前記オムニバスにトランザクシ
ョンの搬送を許可することが、バス搬送トランザクションの全体的な再順序付け
を正当化するいずれかの基準を満足するか否かについて判定を行うステップと、
(b)ステップ(a)において前記いずれかの基準を満足する場合、IGNO
RE信号を発行し、前記バス・システム上における前記トランザクションの各々
の再順序付けを行わせるステップと、から成り、
前記ステップ(b)における基準の1つは、前記分散メモリにおける所与のメ
モリ・アドレスにおいて、トランザクションによってアクセスされることを求め
られているデータの有効性における不一致を含み、
前記再順序付けは、無効バージョンの前記データが、前記トランザクションに
応答して、前記オムニバスによって搬送されるのを防止することを特徴とする方
法。
16.請求項15記載の方法において、
各前記コンピュータ・サブシステムは少なくとも1つのアドレス制御装置を含
み、前記オムニバス上に発行されるべきトランザクションは、前記トランザクシ
ョンの発行者に関連するアドレス制御装置のコヒーレント入力キューにまずロー
ドされなければならず、
前記オムニバス上のトランザクションの全体的再順序付けが、
(i)アサートされた前記IGNORE信号が、前記トランザクションを前記コヒ
ーレント入力キューにロードするのを禁止するか、(ii)前記全体的バス・システ
ム上へ置くことが、前記アサートされたIGNORE信号によって遅延される前
記トランザクションが、前記IGNORE信号をアサートした装置によって後に
再発行されるか、
から成るグループから選択された少なくとも1つの処理の結果、行われることを
特徴とする方法。
17.請求項15記載の方法において、
各前記サブシステム・バス・システムは、少なくとも1つのアドレス・バスを
含み、前記IGNORE信号は、(i)各前記アドレス・バス上で時間多重化され
るか、
(ii)前記アサートされたIGNORE信号が、前記アドレス・バス上のアドレス
・パケットのアサートから5サイクルを越えないレイテンシで、前記アドレス・
バス上に現れるか、
から成るグループから選択された少なくとも1つの特性を有することを特徴とす
る方法。
18.請求項15記載の方法において、
前記コンピュータ・サブ・システムが一つだけあり、前記方法が該1つのコン
ピュータ・システムのために全体的なトランザクションの順序を最適化すること
を特徴とする方法。
19.マイクロ・プロセッサ・ユニットを含む複数の競合者間で、共有資源に対
するアクセスの調停を行う方法であって、
(a)前記競合者の少なくともいずれかによってアサートされた調停要求を同
報通信する通信機構を用意するステップと、
(b)少なくとも1つの調停ユニットを前記通信機構に結合するステップと、
(c)選択された数の前記競合者を前記調停ユニットと関連付けるステップで
あって、各前記競合者は、他の前記競合者に対して関連付けられた許可優先度を
有し、前記通信機構を通じて前記調停ユニットに調停要求信号をアサートするこ
とが可能であり、前記調停ユニットから調停信号許可を受けることが可能であり
、前記競合者は、前記共有資源に対するアクセスを許可された前記調停ユニット
から前記許可信号を受け取るステップと、
(d)前記競合者に許可されたアクセスの最新の履歴に基づいて、優先度を有
する前記競合者からの要求が否定されたアクセスとなるように、前記調停ユニッ
トが優先的調停選択を実施するステップと、
から成り、
前記通信機構は調停バスを含み得、前記共有資源はアドレス・バスを含み得るこ
とを特徴とする方法。
20.請求項19記載の方法において、
前記調停ユニットは階層的であり、総当たり調停許可選択を実施することを特
徴とする方法。
21.請求項19記載の方法において、
前記調停ユニットは階層的であり、かつ分散されており、前記調停ユニットは
、
(i)少なくとも2つの下位リーフ・アービトレータであって、各々当該各リーフ
・アービトレータに関連する前記競合者のサブセット間において独立してリーフ
・レベルのアクセス許可を調停することが可能な前記リーフ・アービトレータと
、
更に、競合するリーフ・レベル許可取得アービトレータ間で、最終的な調停許
可の調停を独立して行うことが可能な上位トップ・アービトレータと、
を含むか、
(ii)4つのリーフ・アービトレータを含み、各々4つまでのアクセス許可に対す
る競合する要求を含むサブセットの調停を行い、前記トップ・アービトレータは
、前記4つのリーフ・アービトレータに関連するアクセス許可のウイナ間で、前
記最終的な調停許可の調停を行い、前記リーフ・アービトレータおよび前記トッ
プ・アービトレータは、少なくとも1つの調停バスを含む前記通信機構を通じて
通信すること、
から成るグループから選択された特性を有することを特徴とする方法。
22.請求項20記載の方法において、
少なくとも1つのレベルが、(iii)前記下位リーフ・アービトレータの前記レ
ベル、および(iv)前記上位トップ・アービトレータから選択され、
各前記レベルにおける最新のアクセス許可の履歴に基づいて、優先的アクセス
の否定が行われ得ることを特徴とする方法。
23.請求項19記載の方法において、
各下位リーフ・アービトレータおよび前記トップ・アービトレータは、最終ウ
イナ・ポインタ機構を含み、該ポインタ機構は、次に優先度が高い競合者が関連
する調停レベルにおける許可付与に続く、前記次に優先度が高い競合者に対する
右方向を指し示し、
各前記ポインタの右側に競合者がない場合を除いて、かかる競合者のみが、各
調停レベルにおいて、現優先度許可を勝ち取るために選択可能であり、各前記ポ
インタの右側に競合者がない場合、前記ポインタの左側の競合者が優先度許可を
勝ち取ることができ、
各前記最終ウイナ・ポインタ機構は、必要に応じて、前記機構を内蔵するアー
ビトレータにおける許可付与の後、再度指示を行い、該再指示は、各他の前記機
構の再指示と同期して行われることを特徴とする方法。
24.請求項19記載の方法において、
前記トップ・アービトレータおよび各前記リーフ・アービトレータ間の通信は
、
リーフ・レベルにおいて前記リーフ・アービトレータによって優先的許可を付
与された競合者があれば、当該競合者を識別する、各前記リーフ・アービトレー
タから前記トップ・アービトレータへの出力ラインと、
各前記リーフ・アービトレータのレベルにおいて最終許可者を識別する、各前
記リーフ・アービトレータから前記トップ・アービトレータへのウイナ右側ライ
ン出力ラインと、
前記リーフ・アービトレータの選択した1つに関連する競合者に、前記共有資
源へのアクセスを許可する、前記トップ・アービトレータから各前記リーフ・ア
ービトレータへの最終許可出力ラインと、
を含むことを特徴とする方法。
25.請求項19記載の方法において、
前記競合者の少なくとも2つは、2つの前記リーフ・レベル・アービトレータ
およびトップ・アービトレータを内蔵するアドレス・コントローラを内蔵する回
路基板上に実装され、
前記アクセスの調停を行う方法は、複数の同一の前記回路基板を含むシステム
において実行され、
前記方法は、リーフ・レベル調停およびトップ・レベル調停が前記各回路基板
上のアドレス・コントローラ内で独立して実行されるという点において分散型で
あることを特徴とする方法。
─────────────────────────────────────────────────────
フロントページの続き
(31)優先権主張番号 08/673,059
(32)優先日 1996年7月1日
(33)優先権主張国 米国(US)
(31)優先権主張番号 08/673,967
(32)優先日 1996年7月1日
(33)優先権主張国 米国(US)
(31)優先権主張番号 08/675,284
(32)優先日 1996年7月1日
(33)優先権主張国 米国(US)
(31)優先権主張番号 08/675,286
(32)優先日 1996年7月1日
(33)優先権主張国 米国(US)
(81)指定国 EP(AT,BE,CH,DE,
DK,ES,FI,FR,GB,GR,IE,IT,L
U,MC,NL,PT,SE),JP
(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
【要約の続き】
求にはタグが付けられ、オーナー要求元の責務を負うこ
とになる。