JPH09114794A - パケット交換型キャッシュコヒーレントマルチプロセッサシステムにおけるメモリトランザクション実行を制御するトランザクションアクティベーションプロセッサ - Google Patents

パケット交換型キャッシュコヒーレントマルチプロセッサシステムにおけるメモリトランザクション実行を制御するトランザクションアクティベーションプロセッサ

Info

Publication number
JPH09114794A
JPH09114794A JP8078711A JP7871196A JPH09114794A JP H09114794 A JPH09114794 A JP H09114794A JP 8078711 A JP8078711 A JP 8078711A JP 7871196 A JP7871196 A JP 7871196A JP H09114794 A JPH09114794 A JP H09114794A
Authority
JP
Japan
Prior art keywords
transaction
data
request
upa
system controller
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
JP8078711A
Other languages
English (en)
Inventor
Zahir Ebrahim
エイブラヒム ザヒル
Satyanarayana Nishtala
ニシュタラ サティアナラヤナ
Loo William C Van
シー ヴァン ルー ウィリアム
Kevin Normoyle
ノーモイル ケヴィン
Paul Lowenstein
ローウェンスタイン ポール
Iii Louis F Coffin
エフ コフィン ザ サード ルイス
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
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH09114794A publication Critical patent/JPH09114794A/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/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • 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/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories

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)

Abstract

(57)【要約】 (修正有) 【課題】 システムコントローラに結合された主メモリ
及び複数のキャッシュコヒーレントサブシステムを有し
ているマルチプロセッサコンピュータシステム。 【解決手段】 システムコントローラは、それが所定ア
クティベーション基準に一致するときに各メモリトラン
ザクション要求をアクティベートし、かつ前記所定基準
に一致するまで各前記要求をブロックする。トランザク
ションアクティベーション論理は、特定のメモリアクセ
ス要求のアクティベーションが所定基準に違反するか否
かを検出するために各メモリアクセス要求を全てのアク
ティベートされたメモリアクセス要求に対するアクティ
ブトランザクション状態データと比較する。保留の、先
にアクティベートされた動作と同じキャッシュラインへ
マップするデータブロックをアクセスする入力動作は、
同じキャッシュラインへマップする保留動作が終了する
までブロックされる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般に、プロセッサが
メモリ資源を共有するようなマルチプロセッサコンピュ
ータシステムに関し、特に、計算用システムスループッ
トを最大限にするようにメモリアクセス待ち時間を最小
限にするために相互接続アーキテクチャ及びキャッシュ
コヒーレンス方法を用いるマルチプロセッサコンピュー
タシステムに関する。
【0002】
【従来の技術】マルチプロセッサシステムにおいて“キ
ャッシュコヒーレンス”を保持することの必要性は、よ
く知られている。“キャッシュコヒーレンス”を保持す
ることの意味は、最も少なくとも、データが一つのプロ
セッサによって共有アドレス空間の指定された位置に書
き込まれるときにはいつでも、同じアドレス位置にデー
タを記憶する他のプロセッサに対するキャッシュは、無
効にされるか、または新しいデータで更新されるかのい
ずれかである、ということである。キャッシュコヒーレ
ンスを保持するために用いられる二つの主要なシステム
アーキテクチャが存在する。ここでキャッシュスヌープ
アーキテクチャと呼ばれる、一つは、各データプロセッ
サのキャッシュが、共有メモリのデータが新しいデータ
で上書きされるときを検出するように共有アドレスバス
及び種々の制御ラインを監視する論理(ロジック)を含
み、そのデータプロセッサのキャッシュが同じメモリ位
置に対するエントリを含むか否かを決定し、かつキャッ
シュに記憶されたデータが別のプロセッサによって無効
にされるときにそのキャッシュコヒーレント及び/又は
対応キャッシュタグを更新することを必要とする。それ
ゆえに、キャッシュスヌープアーキテクチャでは、全て
のデータプロセッサは、他のキャッシュの状態に一致す
る状態にそれ自体のキャッシュを保持する責任がある。
【0003】ここでメモリ参照アーキテクチャと呼ばれ
る、第2のキャッシュコヒーレンスアーキテクチャで
は、主メモリは、もしあれば、どのデータプロセッサが
キャッシュに記憶されたデータブロックを有するかを示
すデータの全てのブロックに対する一組の状態ビットを
含む。主メモリの状態ビットは、キャッシュコヒーレン
スアーキテクチャがそのような情報の記憶を必要とする
ならばどのプロセッサがデータブロックの“所有者”で
あるかと考えられるような、追加の情報を記憶しうる。
本発明は、キャッシュメモリを有する各データプロセッ
サがマスタキャッシュインデックスを保持しかつシステ
ムコントローラが各そのようなキャッシュメモリに対す
る重複キャッシュインデックスを保持するような異なる
キャッシュを用いる。キャッシュコヒーレンスを保持す
るために主メモリまたは他のキャッシュメモリとの通信
を必要とする他の状態変化またはキャッシュ誤りが存在
するようなデータプロセッサによる各メモリトランザク
ションに対して、システムコントローラは、全ての重複
キャッシュインデックス上でキャッシュインデックスル
ックアップを行う。重複キャッシュインデックスルック
アップから戻された状態値に基づいて、システムコント
ローラは、メモリトランザクションを実行するために必
要なアクションのシーケンスを選択する。
【0004】
【発明が解決しようとする課題】従来技術の“スヌープ
バス”キャッシュコヒーレンスシステムでは、一つのキ
ャッシュコヒーレントメモリトランザクションだけが一
度に実行できるので、二つの重複しているメモリトラン
ザクションが同じアドレスを同時にアクセスすることは
不可能であり、そのトランザクションは、それらがアド
レス及び制御バス上で“スヌープ”できるように全ての
データプロセッサにブロードキャストされてそれにより
他のデータプロセッサによって実行されたメモリトラン
ザクションに一致させてそれらの局所キャッシュメモリ
を維持する。従来技術のメモリ参照アーキテクチャキャ
ッシュコヒーレントシステムでは、メモリ参照論理がそ
のようなメモリトランザクションを本質的に直列化する
ので、二つの重複しているメモリトランザクションが同
じアドレスを同時にアクセスすることも不可能である。
多重データプロセッサがメモリトランザクションを始動
(開始)できかつ相互接続が同時に多重メモリトランザ
クションを処理できるような本発明の“重複キャッシュ
タグ”アーキテクチャでは、“コヒーレンスハザード(c
oherence hazards) ”を回避するための機構が必要であ
る。特に、本発明におけるトランザクションのパイプラ
イン型実行は、システムコントローラにおいて同時にア
クティブである多重トランザクションを結果として生ず
る。多重アクティブトランザクションがDtagsにお
いて同じキャッシュインデックスを共有するならばこれ
はシステムにおいてコヒーレンスハザードを導く。その
ようなハザードを回避するために、システムコントロー
ラは、既にアクティブである第2のメモリトランザクシ
ョンが第1のメモリトランザクションにより用いられる
であろうものと同じキャッシュインデックスを用いてい
るならばアクティブになることから第1のメモリトラン
ザクションをブロックする特別のトランザクションアク
ティベーション論理を用いる。このトランザクションア
クティベーションブロッキングに対する一つの重要な例
外は、書戻しトランザクションがブロックされることを
必要とせずかつ他のトランザクションにブロックされる
ことをもたらさないということである。
【0005】
【課題を解決するための手段】本発明の上記目的は、シ
ステムコントローラ;システムコントローラに結合され
た複数のサブシステム;システムコントローラに結合さ
れた主メモリ;を備え、複数のサブシステムは、複数の
データプロセッサを含み、複数のデータプロセッサのそ
れぞれは、データの多重ブロックを記憶する対応キャッ
シュメモリと、キャッシュメモリによって記憶された各
データブロックに対して一つのEtagを含んでいる、
マスタキャッシュタグ(Etags)の対応セットとを
有し、データプロセッサのそれぞれは、システムコント
ローラへメモリトランザクション要求を送る、システム
コントローラに結合された、インターフェイスを含み;
キャッシュメモリを有するデータプロセッサのそれぞれ
に対するインターフェイスは、データプロセッサの他の
ものによりメモリトランザクション要求に対応している
システムコントローラからキャッシュトランザクション
要求を受け取る回路素子を含み;各メモリトランザクシ
ョン要求は、関連アドレス値を有し;システムコントロ
ーラは、それが所定のアクティベーション基準に一致す
るときに各メモリトランザクション要求をアクティベー
トし、かつ所定のアクティベーション基準に一致するま
で各メモリトランザクション要求をブロックするトラン
ザクションアクティベーション論理;トランザクション
に関連したアドレス値を表している各アクティベートさ
れたトランザクションに対するデータを含んでいるアク
ティブトランザクション状態データであり、トランザク
ションアクティベーション論理によってアクティベート
されたメモリトランザクション要求を表しているアクテ
ィブトランザクション状態データを記憶するアクティブ
トランザクション状態テーブル;それがトランザクショ
ンアクティベーション論理によってアクティベートされ
た後に各メモリトランザクション要求を処理するメモリ
トランザクション要求論理;を備え、トランザクション
アクティベーション論理は、各メモリトランザクション
要求のアクティベーションがアクティベートされたメモ
リトランザクション要求のいずれかに関して所定のアク
ティベーション基準に違反するか否かを検出するために
各メモリトランザクション要求を全てのアクティベート
されたメモリトランザクション要求に対するアクティブ
トランザクション状態データと比較する論理を含むコン
ピュータシステムによって達成される。
【0006】本発明では、比較論理は、(A)メモリト
ランザクション要求に関連したアドレス値のキャッシュ
インデックス部分がアクティブトランザクション状態テ
ーブルに表されたアクティベートされたメモリトランザ
クション要求のいずれかに関連したアドレス値の対応部
分と一致するときに、(B)メモリトランザクション要
求及び一致しているキャッシュインデックスを有するア
クティベートされたメモリトランザクション要求が読取
りトランザクション要求及び書戻しトランザクション要
求を含まない限り、各メモリトランザクション要求をア
クティベートすることからトランザクションアクティベ
ーション論理をブロックするように構成してもよい。本
発明では、各データプロセッサに対するインターフェイ
スは、システムコントローラへ送られるべきメモリトラ
ンザクション要求を記憶する少なくとも二つの並列アウ
トバウンド要求キューを含み;メモリトランザクション
要求は、読取り要求及び書込み要求を含み;各メモリト
ランザクション要求は、読取られるかまたは書込まれる
べき関連データブロックに対するアドレスを指定し;シ
ステムコントローラは、第2のメモリトランザクション
要求が第2のアウトバウンド要求キューに記憶されると
きが第1のメモリトランザクション要求が第1のアウト
バウンド要求キューに記憶されるときよりも遅い場合で
あっても第1のアウトバウンド要求キューに記憶された
第1のメモリトランザクション要求がシステムコントロ
ーラによって第2のアウトバウンド要求キューに記憶さ
れた第2のメモリトランザクション要求よりも後で処理
されうるように資源利用可能性に従ってアウトバウンド
要求キューに記憶されたメモリトランザクション要求を
処理するように構成してもよい。
【0007】本発明では、データプロセッサは、各々シ
ステムコントローラがデータプロセッサの同じものから
の読取り要求及び書戻し要求を並列で処理できるように
読取り要求を第1のアウトバウンド要求キューに記憶し
かつ書戻し要求を第2のアウトバウンド要求キューに記
憶しかつ両方の参照アドレス値は、一致しているキャッ
シュインデックス値を有するように構成してもよい。本
発明では、システムコントローラは、各データプロセッ
サへメモリトランザクション要求を送りかつ各データプ
ロセッサから該メモリトランザクション要求を受け取る
各データプロセッサに結合したインターフェイスを含
み、インターフェイスは、各データプロセッサへ送られ
るべきメモリトランザクション要求を記憶する少なくと
も一つの出力要求キューを含み、出力要求キューに記憶
された各メモリトランザクション要求は、データプロセ
ッサの要求しているものからシステムコントローラによ
って受け取ったメモリトランザクション要求の一つに対
応し;各データプロセッサは、メモリトランザクション
要求に関連した資源の利用可能性によりシステムコント
ローラへの送信に対する応答を発生することによって受
け取ったメモリトランザクション要求に応ずる受け取っ
たトランザクション処理論理を含み;受け取ったトラン
ザクション処理論理は、受け取っているデータプロセッ
サのキャッシュメモリに対するEtagsの指定された
ものを無効にすることによって受け取ったEtag無効
要求を処理する論理を含み;システムコントローラは、
各キャッシュメモリに対する重複キャッシュタグ(Dt
ags)のセットを含み、各Dtagは、Etagsの
一つに対応しかつDtag状態値及び対応Etagと同
じアドレスインデックスを記憶し;Dtag状態値は、
対応キャッシュメモリに記憶された対応データブロック
がデータプロセッサの一つによって変更されたデータを
含むか否かを示し;メモリトランザクション要求論理
は、それがメモリトランザクション要求に対応している
Dtagを含むか否かを決定するために各Dtagsの
セットをアクセスするDtagルックアップ論理と;メ
モリトランザクション要求に基づいて有効から無効状態
値へ指定されたDtag状態値を更新する論理を含んで
いる、Dtag状態値を更新するDtag更新論理と;
所定メモリトランザクション要求によって指定されたア
ドレスに対応している、もしあれば、Dtags及びE
tagsの無効を必要とするデータプロセッサの要求し
ているものからの各所定メモリトランザクション要求を
処理する論理とを含み、処理論理は、(A)どのデータ
プロセッサが、もしあれば、無効を必要とするEtag
を有するかを識別するためにDtagルックアップ論理
を呼出し、(B)識別されたデータプロセッサへEta
g無効トランザクション要求を送り、(C)所定メモリ
トランザクション要求を終了するために必要な、もしあ
らば、データ転送を実行し、かつ(D)Etagsが無
効にされたことを確認する識別されたデータプロセッサ
から応答を受け取る論理を含み;データ転送は、識別さ
れたデータプロセッサからの応答を受け取る前に処理論
理によって始動されるように構成してもよい。
【0008】また、本発明の上記目的は、主メモリ及び
それぞれがキャッシュメモリを有する複数のデータプロ
セッサに結合されたシステムコントローラを有している
キャッシュコヒーレントマルチプロセッサシステムコン
トローラを動作する方法であって、それぞれが関連アド
レス値を有しているメモリトランザクション要求を各デ
ータプロセッサからシステムコントローラへ送り;それ
が所定アクティベーション基準に一致するときに各メモ
リトランザクション要求をアクティベートし、かつ所定
アクティベーション基準が一致するまで各メモリトラン
ザクション要求をブロックし;トランザクションに関連
したアドレス値を表している各アクティベートされたト
ランザクションに対するデータを含んでいるアクティブ
トランザクション状態データであり、アクティベートさ
れたメモリトランザクション要求を表しているアクティ
ブトランザクション状態データを記憶し;それがトラン
ザクションアクティベーション論理によってアクティベ
ートされた後に各メモリトランザクション要求を処理す
る段階を具備し、アクティベートする段階は、各メモリ
トランザクション要求のアクティベーションがアクティ
ベートされたメモリトランザクション要求のいずれかに
関して所定アクティベーション基準に違反するか否かを
検出するために各メモリトランザクション要求を全ての
アクティベートされたメモリトランザクション要求に対
する記憶されたアクティブトランザクション状態データ
と比較することを含む方法によっても達成される。
【0009】本発明では、比較段階は、(A)メモリト
ランザクション要求に関連したアドレス値のキャッシュ
インデックス部分がアクティブトランザクション状態テ
ーブルに表されたアクティベートされたメモリトランザ
クション要求のいずれかに関連したアドレス値の対応部
分と一致するときに、(B)メモリトランザクション要
求及び一致しているキャッシュインデックスを有するア
クティベートされたメモリトランザクション要求が読取
りトランザクション要求及び書戻しトランザクション要
求を含まない限り、各メモリトランザクション要求をア
クティベートすることからアクティベートする段階をブ
ロックするように構成してもよい。本発明では、各デー
タプロセッサは、少なくとも二つの並列アウトバウンド
要求キューにシステムコントローラへ送られるべきメモ
リトランザクション要求を記憶し;メモリトランザクシ
ョン要求は、読取り要求及び書込み要求を含み;各メモ
リトランザクション要求は、読取られるかまたは書込ま
れるべき関連データブロックに対するアドレスを指定
し;処理段階は、第2のメモリトランザクション要求が
第2のアウトバウンド要求キューに記憶されるときが第
1のメモリトランザクション要求が第1のアウトバウン
ド要求キューに記憶されるときよりも遅い場合であって
も第1のアウトバウンド要求キューに記憶された第1の
メモリトランザクション要求がシステムコントローラに
よって第2のアウトバウンド要求キューに記憶された第
2のメモリトランザクション要求よりも後で処理されう
るように資源利用可能性に従ってアウトバウンド要求キ
ューに記憶されたメモリトランザクション要求を処理す
ることを含むように構成してもよい。
【0010】本発明では、各データプロセッサは、シス
テムコントローラがデータプロセッサの同じものからの
読取り要求及び書戻し要求を並列で処理できるように読
取り要求を第1のアウトバウンド要求キューに記憶しか
つ書戻し要求を第2のアウトバウンド要求キューに記憶
しかつ両方の参照アドレス値は、一致しているキャッシ
ュインデックス値を有するように構成してもよい。本発
明では、各データプロセッサで、データプロセッサのキ
ャッシュメモリによって記憶された各データブロックに
対する一つのEtagを含んでいる、マスタキャッシュ
タグのセット(Etags)を記憶し;各データプロセ
ッサで、メモリトランザクション要求に関連した資源の
利用可能性によりシステムコントローラへの送信に対す
る応答を生成することによって受け取ったメモリトラン
ザクション要求に応じ;各データプロセッサで、受け取
っているデータプロセッサのキャッシュメモリに対する
Etagsの指定されたものを無効にすることによって
受け取ったEtag無効要求を処理し;システムコント
ローラにおいて、各キャッシュメモリに対する重複キャ
ッシュタグ(Dtags)のセットを記憶し、各Dta
gは、Etagsの一つに対応しかつDtag状態値及
び対応Etagと同じアドレスインデックスを記憶し;
Dtag状態値は、対応キャッシュメモリに記憶された
対応データブロックがデータプロセッサの一つによって
変更されたデータを含むか否かを示し;システムコント
ローラでは:それがメモリトランザクション要求に対応
しているDtagを含むか否かを決定するために各Dt
agsのセットをアクセスし;メモリトランザクション
要求に基づいて有効から無効状態値へ指定されたDta
g状態値を更新することを含んでいる、Dtag状態値
を更新し;所定メモリトランザクション要求によって指
定されたアドレスに対応している、もしあれば、Dta
gs及びEtagsの無効を必要とするデータプロセッ
サの要求しているものからの各所定メモリトランザクシ
ョン要求に対して、(A)どのデータプロセッサが、も
しあれば、無効を必要とするEtagを有するかを識別
するためにDtagルックアップ論理を呼出し、(B)
識別されたデータプロセッサへEtag無効トランザク
ション要求を送り、(C)所定メモリトランザクション
要求を終了するために必要な、もしあらば、データ転送
を実行し、かつ(D)Etagsが無効にされたことを
確認する識別されたデータプロセッサから応答を受け取
る論理を含み;データ転送は、識別されたデータプロセ
ッサからの応答を受け取る前に処理論理によって始動さ
れるように構成してもよい。
【0011】
【作用】本発明は、多数のサブシステム及びシステムコ
ントローラに結合された主メモリを有するマルチプロセ
ッサコンピュータシステムである。相互接続モジュール
は、システムコントローラから受け取った相互接続制御
信号に従って主メモリとサブシステムを相互接続する。
少なくともサブシステムの二つはデータプロセッサであ
り、それぞれが、データの多重ブロック及び一組のマス
タキャッシュタグ(Etags)を記憶する対応キャッ
シュメモリを有し、キャッシュメモリによって記憶され
た各データブロックに対して一つのキャッシュタグを含
んでいる。各データプロセッサは、メモリアクセス要求
をシステムコントローラに送り出しかつデータプロセッ
サの他のものによるメモリアクセス要求に対応している
システムコントローラからキャッシュアクセス要求を受
け取るマスタクラスを有しているマスタインターフェイ
スを含む。システムコントローラは、データプロセッサ
による各メモリアクセス要求を処理し、どのキャッシュ
メモリの一つ及び主メモリが要求しているデータプロセ
ッサに結合するかを決定し、要求しているデータプロセ
ッサを決定されたキャッシュメモリの一つ及び主メモリ
に結合するように対応している相互接続制御信号を相互
接続モジュールに送り出し、かつ決定されたキャッシュ
メモリの一つ及び主メモリへ一つのデータパケットを送
信または決定されたキャッシュメモリの一つ及び主メモ
リから一つのデータパケットを受信すべく要求している
データプロセッサを促すために応答メッセージを要求し
ているデータプロセッサに送り出すメモリアクセス要求
論理を含む。
【0012】システムコントローラは、それが所定のア
クティベーション基準に一致するときに各メモリトラン
ザクション要求をアクティベートし、かつ所定のアクテ
ィベーション基準に一致するまで各メモリトランザクシ
ョン要求をブロックするトランザクションアクティベー
ション論理を含む。アクティブトランザクション状態表
は、各アクティベートされたトランザクションに対する
アドレス値を含んでいる、アクティベートされたメモリ
トランザクション要求を表している状態データを記憶す
る。トランザクションアクティベーション論理は、特定
のメモリトランザクション要求のアクティベーションが
所定のアクティベーション基準に違反するか否かを検出
するために各メモリトランザクション要求を全てのアク
ティベートされたメモリトランザクション要求に対する
アクティブトランザクション状態データと比較するコン
パレータ論理を含む。書戻しトランザクションに関する
ある一定の例外を除き、保留の、先にアクティベートさ
れたトランザクションと同じキャッシュラインにマップ
するデータブロックをアクセスする入力トランザクショ
ンは、同じキャッシュラインにマップする保留トランザ
クションが終了するまでブロックされる。
【0013】本発明の更なる目的及び特徴は、添付した
図面を参照して以下の実施例及び添付した特許請求の範
囲から容易に理解できるであろう。
【0014】
【実施例】本発明の実施例を説明する前にこの文書で使
用する用語を以下に説明する。 キャッシュコヒーレンス(Cache Coherence) :各データ
ブロックの全てのコピーを一定に保つことである。 タグ(Tag) :タグは、一つのキャッシュラインの状態を
示しかつキャッシュラインに記憶されたデータブロック
に対するアドレスの上位アドレスビットを記憶するため
のキャッシュインデックスにおける記録である。 Etag:キャッシュメモリに対するキャッシュタグの
主アレーである。Etagアレーは、UPAポートのデ
ータプロセッサモジュールによってアクセスされかつ更
新される。 Dtag:システムコントローラによって保持されるキ
ャッシュタグの重複アレー。 相互接続(Interconnect):データプロセッサ、I/Oプ
ロセッサ及びそれらのポートを相互接続するシステム構
成素子のセットである。“相互接続”は、好ましい実施
例においてシステムコントローラ110、相互接続モジ
ュール112、データバス116、アドレスバス11
4、及び応答バス120(S_Replyに対して)、
122(P_Replyに対して)を含む。 犠牲者(Victim):キャッシュライン/から変位されたデ
ータブロック。 汚染犠牲者(Dirty Victim):別のデータブロックによる
キャッシュからのその変位の前に関連データプロセッサ
によって更新されたデータブロック。汚染犠牲者は、本
発明では同じデータブロックが書戻しトランザクション
が“アクティブ”になる前に別のデータプロセッサによ
って無効にされるならば書戻しを取り消すことができる
ことを除いて、主メモリに通常書き戻されなければなら
ない。 ライン(Line):単一のデータブロックを記憶するために
用いられるキャッシュメモリにおけるメモリのユニット
である。 無効(Invalidate):適切な状態値をキャッシュラインタ
グに書き込むことによってキャッシュラインの状態を
“無効”に変えること。 マスタクラス(Master Class):データプロセッサに対す
るUPAポートにおける独立要求キュー(independentre
quest queue) 。Kマスタクラスを伴うUPAポートを
有しているデータプロセッサは、Kマスタクラスのそれ
ぞれにおいてトランザクション要求を発行することがで
きる。各マスタクラスは、トランザクション要求をシス
テムコントローラに発行するためのそれ自体の要求FI
FOバッファ並びにトランザクション要求に応じてデー
タパケットを受け取るためのそれ自体の独特なインバウ
ンドデータバッファ及び送信されるべきデータパケット
を記憶するためのそれ自体のアウトバウンドデータバッ
ファを有する。 書戻し(Writeback) :キャッシュメモリから主メモリに
変更したデータをコピーすること。
【0015】次に、この文書で使用する略語を以下に説
明する。 DVMA:直接仮想メモリアクセス(DMA、この文書
の目的に対する直接メモリアクセスと同じ)。 DVP:汚染犠牲者の保留(dirt victim pending) 。 I/O:入力/出力 IVP:私を無効にさせる警告(Invalidate me Advisor
y) MOESI:5つのEtag状態:排他的変更(M),
共有変更(O),排他的クリーン(E),共有クリーン
(S)、無効(I)。 MOSI:4つのDtag状態:排他的及び潜在的変更
(M),共有変更(O),共有クリーン(S)、無効
(I)。 NDP:データタグ存在なし。 PA[xxx]:物理アドレス[xxx]。 SC:システムコントローラ。 UPA:汎用ポートアーキテクチャ(Universal Port Ar
chitecture) 。
【0016】次に、添付した図面を参照して本発明の実
施例を説明する。図1を参照すると、本発明のコンピュ
ータアーキテクチャを組み込んでいるマルチプロセッサ
コンピュータシステム100が示されている。マルチプ
ロセッサコンピュータシステム100は、一組の“UP
Aモジュール”を含む。UPAモジュール102は、デ
ータプロセッサ並びにI/Oハンドラー等のようなスレ
ーブ装置を含む。各UPAモジュール102は、ここで
UPAポートと呼ばれる、ポート104を有する。“U
PA”は、“汎用ポートアーキテクチャ(UniversalPort
Architecture) ”を意味する。簡略化のために、UP
Aモジュール及びそれらの関連ポートは、ここで言われ
ているポートまたはUPAポートがポート及びその関連
UPAモジュールの両方を含むということを理解した上
で、しばしば纏めて“ポート”または“UPAポート”
と呼ばれる。システム100は、複数のメモリバンク1
09Bank0 〜Bankm に分割されうる、主メモリ
108、システムコントローラ110、及びポート10
4と主メモリ108を相互接続する相互接続モジュール
112を更に含む。相互接続モジュール112は、シス
テムコントローラ110からのデータ経路設定信号の制
御下で、ポート104と他のポート104の間またはポ
ート104とメモリバンク109の間にデータ経路を形
成することができる。相互接続モジュール112は、各
UPAポート及びメモリモジュールに対して選択可能な
アクセスポートを有する単一の、共有データバスのよう
に簡単でありうるし、またはmのメモリバンクに対する
mのポート及びnのUPAポートに対するnのポートを
有している多少複雑なクロスバースイッチでありうる
し、或いはこれら二つの組合せでありうる。本発明は、
使用する相互接続モジュール112の型に依存しないの
で、本発明は、多くの異なる相互接続モジュール構造に
用いることができる。
【0017】UPAポート104は、それぞれが個別に
動作する、パケット交換型アドレスバス114及びパケ
ット交換型データバス116を介して相互接続モジュー
ル112及びシステムコントローラ110とそれぞれイ
ンターフェイスする。UPAモジュールは、UPAポー
トに論理的にプラグ接続する。UPAモジュール102
は、データプロセッサ、I/Oバスへのインターフェイ
スを有するI/Oコントローラ、またはグラフィックフ
レームバッファを含みうる。好ましい実施例のUPA相
互接続アーキテクチャは、32までのUPAポート、及
び相互接続の多重アドレス及びデータバスを支持する。
4つのUPAポート104までは、同じアドレスバス1
14を共有し、かつ分散型アービトレーションプロトコ
ルでそのマスタシップをアービトレート(裁定・調停)
することができ。システムコントローラ110は、集中
コントローラでありかつ次の機能を実行する:コヒーレ
ンス制御;メモリ及びデータ経路制御;多重アドレスバ
スに対するアドレスクロスバーのような接続性。
【0018】システムコントローラ110は、相互接続
モジュール112を制御し、かつ二つのUPAポート1
04の間、またはUPAポート104とメモリ108の
間のデータの転送をスケジュール(計画)する。本発明
のアーキテクチャは、任意の数のメモリバンク109を
支持する。システムコントローラ110は、両方の資源
の最大利用に対するデータ経路スケジューリングと共に
メモリアクセスタイミングを制御する。システムコント
ローラ110、相互接続モジュール112、及びメモリ
108は、“相互接続ドメイン”であり、かつそれらの
対応UPAポート104によってUPAモジュール10
2に結合される。相互接続ドメインは、UPAモジュー
ル104にも供給される、システムクロック118によ
って生成された、集中分散型システムクロック信号に完
全同期する。望ましいならば、各UPAモジュール10
2は、その専用内部クロックをシステム相互接続クロッ
クに同期することができる。この文書におけるクロック
信号への全ての参照は、特に示さない限り、システムク
ロックに言及する。各UPAアドレスバス114は、3
6ビット双方向性パケット交換要求バスであり、1ビッ
ト奇数パリティを含む。それは、41ビットの物理アド
レス空間のアドレスビットPA[40:4]並びにトラ
ンザクション識別情報を担持する。
【0019】図1及び図2を参照すると、各UPAアド
レスバス114上に4つまでのUPAポート104を有
して、システムに多重アドレスバス114が存在しう
る。UPAアドレスバスの正確な数は、可変であり、か
つシステムスピード要求に一般に依存する。アドレスバ
ス114上により多くのポートを設置することは、アド
レスバス上の信号伝送を遅くするので、アドレスバス毎
のポートの最大数は、アドレスバスに必要な信号伝送ス
ピードによって決定される。データ経路回路素子(即
ち、相互接続モジュール112)及びアドレスバス11
4は、個別にスケーラブル(計量可能)である。結果と
して、相互接続モジュール112の設計に関連したスピ
ード/費用のトレードオフに関する決定に全く独立して
アドレスバスにわたるトランザクション要求の伝送に対
するスピード/費用のトレードオフを最適化するように
所与の数のプロセッサに対して、アドレスバスの数は、
増大または減少することができる。図3は、好ましい実
施例の4つの全てのインターフェイス(以下に詳述)を
有しているUPAポートによって受信及び送信された信
号の完全なセットを示す。表1は、図3に示した信号の
それぞれの短い説明を供給する。
【0020】
【表1】
【0021】
【表2】
【0022】
【表3】
【0023】
【表4】
【0024】
【表5】 UPAアドレスバス114上の有効パケットは、UPA
_Addr_valid信号をアサートするドライバ
(即ち、UPAポート104またはシステムコントロー
ラ110)によって識別される。システムコントローラ
110は、システム100の各UPAアドレスバス11
4に接続される。UPAポート104及びシステムコン
トローラ110は、分散型アービトレーションプロトコ
ルを用いて各UPAアドレスバス114の使用に対して
アービトレートする。UPAポートは、共有UPAアド
レスバス114上の他のUPAポートと直接通信しな
い。その代わり、要求しているUPAポートが、アドレ
ス指定されたUPAポートへのアクセスを要求する要求
パケットを生成するときに、システムコントローラ11
0は、要求パケットを再送信しかつそのUPA_Add
r_valid信号で宛先UPAポートを修飾すること
(qualifying)によってスレーブアクセスをアドレス指定
されたUPAポートに前進させる。また、UPAポート
は、キャッシュコヒーレンスを保持するためにUPAア
ドレスバス上を“スヌープ(snoop) ”しない。システム
コントローラ110は、後述する書込み−無効キャッシ
ュコヒーレンスプロトコルを用いて、その対応UPAモ
ジュールがキャッシュメモリを含むそれらUPAポート
に代わってスヌーピングを実行する。
【0025】UPAポート104に結合されたUPAア
ドレスバス114及びUPAデータバス116は、独立
である。アドレスは、以下に説明する順序規則を介して
そのデータに関連(対応)付けられる。UPAデータバ
スは、128ビットのクワッドワード(quad-word) 双方
向データバス、プラス16の付加ECC(誤り訂正コー
ド)ビットである。“ワード(word)”は、32ビット、
4バイトのデータであるべくここで画定される。クワッ
ドワードは、4つのワード、または16バイトから構成
されている。ある実施例では、システム110の全てま
たはあるデータバス116は、64ビットのダブルワー
ド双方向データバス、ECCに対するプラス8の付加ビ
ットでありうる。ECCビットは、128ビット幅デー
タバスに対する二つの8ビットハーフに分割される。6
4ビット幅のUPAデータバスは、多くの信号ラインの
半分を有するけれども、それは、128ビット幅UPA
データバスと同じトランザクション毎のバイト数を担持
するが、しかしクロックサイクルの数の二倍においてで
ある。好ましい実施例では、コヒーレントデータ転送の
最小ユニットは、64バイトであり、128ビットのU
PAデータバス上の4つの連続システムクロックサイク
ルの間中に16バイトの4つの転送を必要とする。
【0026】UPAマスタポートとも呼ばれる、“マス
タ”UPAポートは、データ転送トランザクションを始
動(開始)することができるものであるべくここで画定
される。全てのデータプロセッサUPAモジュールは、
マスタUPAポート104を有さなければならない。あ
るデータ処理能力を含むうる、グラフィック装置は、一
般にスレーブインターフェイスだけを有するということ
に注目。スレーブインターフェイスは、以下に説明す
る。この文書の目的に対して、“データプロセッサ”
は、データを主メモリから読取りかつ主メモリに書込む
プログラマブルコンピュータまたはデータ処理装置(例
えば、マイクロプロセッサ)であるべく画定される。大
部分の、だが全てである必要はない、“データプロセッ
サ”は、関連キャッシュメモリを有する。例えば、I/
Oコントローラは、データプロセッサでありそのUPA
ポートは、マスタUPAポートである。しかしながら、
多くの場合、I/Oコントローラは、キャッシュメモリ
を有していない(または少なくともコヒーレンス・ドメ
インにデータを記憶するキャッシュメモリでない)。キ
ャッシングUPAマスタポートは、コヒーレントキャッ
シュも有するデータプロセッサに対するマスタUPAポ
ートである。キャッシングUPAマスタポートは、キャ
ッシュコヒーレンスプロトコルに加わる(関係する)。
【0027】“スレーブ”UPAポートは、データ転送
トランザクションを開始(始動)できないが、そのよう
なトランザクションの受容者(recipient) であるもので
あるべくここで画定される。スレーブポートは、システ
ムコントローラからの要求に応答する。スレーブポート
は、プログラムされたI/Oに対するそれに関連したア
ドレス空間を有する。マスタUPAポート内の“スレー
ブポート”(即ち、マスタUPAポート内のスレーブイ
ンターフェイス)もキャッシュブロックに対するコピー
バック要求を取り扱い、かつデータプロセッサを含むU
PAポートにおいて割込みトランザクションを取り扱
う。8ECCビットの各セットは、Shigeo Kaneda の6
4ビットSEC−DEC−S4EDコードを担持する。
相互接続は、ECCを生成または検査しない。データを
供給している各UPAポートは、対応ECCビットを生
成し、かつデータを受け取っているUPAポートは、E
CCビットを検査する。マスタ機能を有するUPAポー
トは、ECCを支持する。グラフィック・フレームバッ
ファを含んでいるスレーブ専用UPAポートは、ECC
を支持する必要がない(UPA_ECC_Valid信
号を参照)。
【0028】UPAデータバス116は、大域共有型共
通データバス(globally shared common data bus) では
ない。図1及び図2に示すように、システムに一つ以上
のUPAデータバス116が存在しうるし、かつ正確な
数は、インプリメンテーションに固有のものである。デ
ータは、128ビット幅のUPAデータバス上でクロッ
クサイクル毎に16バイトのユニットで常に転送され、
かつ64ビット幅のUPAデータバス上で2クロックサ
イクル毎に16バイトのユニットで常に転送される。好
ましい実施例における各キャッシュラインの大きさは、
64バイト、または16の32ビットワードである。以
下に詳述するように、64バイトは、キャッシュデータ
の転送を含んでいる全トランザクションに対するデータ
転送の最小ユニットである。即ち、相互接続を介して転
送されたキャッシュデータの各データパケットは、64
パケットである。非キャッシュデータの転送は、クワッ
ドワード内のどのバイトが転送されるデータを含むかを
示すべく16ビット・バイトマスクで修飾された、単一
クワッドワード伝送内で1〜16バイトを転送すること
ができる。
【0029】システムコントローラ110は、ここでS
_REPLYと呼ばれる信号を用いてUPAデータバス
116上のデータ転送をスケジュールする。ブロック転
送に対して、連続クワッドワードがメモリから連続クロ
ックサイクルで読取られるかまたは書込まれることがで
きないならば、UPA_Data_Stall信号は、
UPAポートへシステムコントローラ110によってア
サートされる。64バイトデータブロックのコヒーレン
トブロック読取り及びコピーバックトランザクションに
対して、物理アドレスビットPA[5:4]上にアドレ
ス指定されたクワッドワード(16バイト)は、最初に
送付され、かつ連続クワッドワードが表2に示されたラ
ップ順序(wrap order)で送付される。アドレス指定され
たクワッドワードは、要求しているデータプロセッサ
が、関連データブロックの最後のクワッドワードの受容
の前にアドレス指定されたクワッドワードを処理するこ
とを受け取りかつ始めることができるように最初に送付
される。このようにして、キャッシュ更新トランザクシ
ョンに関連した待ち時間は、低減される。64バイトデ
ータブロックの非キャッシュブロック読取り及びブロッ
ク書込みは、64バイトブロック・バウンダリ(PA
[5:4]=0×0)上に常に位置合わせされる。
【0030】これら64バイトデータパケットは、付加
アドレス、アドレスタグ、またはトランザクションタグ
なしで送付される。アドレス情報及びデータは、独立の
バス上で独立に送信される。これは効率的であるが、入
力(incoming)データパケットをキャッシュミスデータ要
求と一致させるために、順序制約(ordering constrain
t) が適用されなければならない:データパケットは、
各マスタクラス内の対応要求と同じ順序でUPAポート
に送信されなければならない。(異なるマスタクラスに
おいてデータ要求に対する順序要求事項はない。)この
順序制約がフォローされたときに、各入力データパケッ
トは、対応マスタクラスに対する最も長く顕著な(longe
st outstanding) キャッシュミストランザクション要求
に応答しなければならない。
【0031】
【表6】 要求及び応答メッセージ トランザクションは、“要求”メッセージによって始動
(開始)されかつ“応答”の受容により実行される。U
PAポートによる要求は、“ポート要求”を意味する、
P_REQとここでラベル付けされる。ポート要求は、
UPAポートのアドレスバス114を介して送信され
る。アドレスバス114が一つ以上のUPAポートによ
って共有されるならば、要求しているポートは、それが
アドレスバスを成功裏にアービトレートした後でのみそ
の要求を送信する。各ポート要求は、S_REPLYと
呼ばれる応答メッセージを介してシステムコントローラ
110によって肯定応答(acknowledge) される。システ
ムコントローラ110から各UPAポートへ5ビット応
答メッセージを一方向に送る各UPAポートに対する、
専用二地点間5ビットシステム応答バス、S_REPL
Yバス120が存在する。システムコントローラ110
は、トランザクション要求に肯定応答してS_REPL
Yバス120上の応答コードを駆動し、かつUPAデー
タバス116上のデータのソーシング(供給)及びシン
キング(沈降)を協調する。特に、システムコントロー
ラ110は、システムコントローラ110が要求された
トランザクションを実行するために必要なデータ経路を
設定することを準備するときか、またはトランザクショ
ン(無効トランザクション要求のような)がデータ転送
を含まないならば要求されたトランザクションが終了し
たときにP_REQに応じてS_REPLYを生成す
る。S_REPLYメッセージは、システムコントロー
ラが対応設定信号を相互接続モジュール112へ送るの
と本質的に同じ時にシステムコントローラによって生成
される。
【0032】システムコントローラ110によって開始
(始動)された各トランザクションは、要求が指向され
るUPAポート104に結合されたアドレスバス114
上にS_REQ(即ち、システムコントローラ要求)メ
ッセージを送ることによって開始(始動)される。シス
テムコントローラ110によって開始されたトランザク
ションは、一般に、UPAポートによるトランザクショ
ン要求に応じてシステムコントローラ110によって実
行された“ネストされたトランザクション”である。例
えば、UPAポートによるある一定のメモリトランザク
ション要求は、要求されたデータブロックに対する他の
UPAポートの全てのキャッシュエントリが、システム
コントローラが要求されたデータブロックを要求してい
るUPAポートのキャッシュへ転送できる前に、無効に
されることを要求しうる。キャッシュ無効は、そのキャ
ッシュが要求されたデータブロックを記憶する各UPA
ポートへのトランザクション要求を行っているシステム
コントローラによって実行される。各UPAポート10
4は、システムコントローラ要求に肯定応答するために
そのポートによって用いられる専用二点間5ビットポー
ト応答バス、P_REPLY、122を有する。
【0033】全てのシステムコントローラ要求は、ター
ゲットUPAポートの“スレーブポート”部分に指向さ
れる。UPAポートのスレーブポートは、要求されたデ
ータが読取り要求に対して準備され、送信されたデータ
が書込み要求に対して吸収され、キャッシュ無効が無効
要求に対して終了し、割込みが割込み要求に対して取り
扱われたことを示すためにシステムコントローラ110
から受け取ったトランザクションに肯定応答してP_R
EPLYバス122上の応答コードを駆動する。システ
ムコントローラ110は、要求しているUPAポートへ
のそのS_REPLYメッセージの送信をトリガするた
めにUPAスレーブポートから受け取ったP_REPL
Y肯定応答メッセージを用いる。 キャッシュメモリ、タグ及びスヌープバス 図1を参照すると、キャッシュメモリ130を含む各U
PAモジュール102に対して、Etagsと呼ばれる
一組の主キャッシュタグを有している主キャッシュイン
デックス132が保持される。ほとんどのインプリメン
テーション(実施)では、キャッシュメモリ130は、
UPAモジュール102のデータプロセッサ178(図
4に示す)が埋め込み型一次レベルまたは二次レベルキ
ャッシュを一般に含むので、“二次レベルキャッシュ”
または“三次レベルキャッシュ”であるということが理
解されるべきである。重複キャッシュタグは、各データ
プロセッサに対する最外側直接マップ型コヒーレントキ
ャッシュに対してだけ保持され、他の低次レベルキャッ
シュは、UPAポート専用であると考えられかつ完全内
包(perfect inclusion) を通してUPAポートによって
コヒーレントに維持される。
【0034】キャッシュメモリ130の各ラインに対し
て一つのEtagが存在し、キャッシュの各ラインは、
一つの64バイト(16ワード)データブロックを記憶
する。好ましい実施例では、各Etagは、タグ状態と
キャッシュラインに記憶された64バイトブロックのア
ドレスを識別する一組のアドレスビットとを記憶する。
上述したように、キャッシュブロックの大きさは、64
バイトである。キャッシュコヒーレンスのユニットも6
4バイトである。各UPAポートは、異なる大きさのキ
ャッシュを有することができる。更に、好ましい実施例
では、直接マップ型キャッシュメモリだけがデータプロ
セッサ及びI/O・UPAポートに用いられる。I/O
・UPAポートは、種々のキャッシュメモリ構造を有し
うる。そのようなキャッシュメモリ構造を支持するシス
テムコントローラは、システムコントローラのそのよう
な構造の専用重複タグを通してインプリメント(実施)
される。好ましい実施例では、I/O・UPAポート
は、システムコントローラにおいて対応する数のDta
gsを有する複数の完全関連コヒーレントバッファを有
する。
【0035】標準であるように、データブロックを識別
するために必要なアドレスビットの数は、キャッシュメ
モリの大きさ及びキャッシュメモリにマップされたアド
レス空間の大きさに依存する。例えば、8ギガバイトの
アドレス空間、及び512キロバイトの直接マップ型キ
ャッシュメモリに対して、14のアドレスビットがキャ
ッシュメモリの各ラインのデータブロックを識別するた
めに必要である。即ち、指定バイトに対して33ビット
アドレスPA[32:0]、64バイトラインを有する
514キロバイトキャッシュメモリに記憶された対応6
4バイトデータブロックに対して27ビットアドレスP
A[32:6]を与えると、データブロックの完全アド
レスの14の上位アドレスビットPA[32:19]
は、データブロックを識別するためにキャッシュタグに
記憶され、データブロックのアドレスの次の13のビッ
トPA[18:6]は、データブロックが記憶されるの
はどのキャッシュラインであるかを決定する。システム
100では、1テラバイトコヒーレントアドレス空間P
A[39:0]及び512キロバイト直接マップ型キャ
ッシュライン130で、各Etagは、キャッシュメモ
リの対応ラインに記憶されたデータブロックの全アドレ
スの21の上位ビットを記憶することが必要である。
【0036】キャッシュインデックスに記憶されるアド
レスビットの数、従って各マスタUPAポートに対する
キャッシュサイズは、後に詳述するように、各UPAポ
ートのポートIDレジスタ158をプローブすることに
よりシステム初期化ソフトウェアによって決定される。
マルチプロセッサシステムにおけるそのコヒーレントキ
ャッシュへのプロセッサの参照とのスヌープ干渉(障
害)を回避するために、タグの重複セット(UPAモジ
ュールのEtag132をミラーする)Dtags13
4は、システム100の他のキャッシュメモリとコヒー
レントに維持されるべきであるキャッシュメモリを有し
ている各UPAモジュールに対するシステムコントロー
ラ110によって保持される。Dtags134は、直
接マップ型キャッシュメモリを支持する。各Etagエ
ントリに対して、システムコントローラ110によるD
tags上のルックアップが、そのEtagsへのプロ
セッサアクセスと干渉することなくデータブロックに対
する対応Etag状態を正確に示すような、対応Dta
gsエントリが存在する。スヌープバス140は、シス
テムのキャッシュ可能なアドレス空間の大きさ(主メモ
リ空間の大きさ)に対応している全ての関連物理アドレ
スビットPA[40:6]を担持するように構成された
アドレスバスである。スヌープバスは、二つの双方向ビ
ットライン、マッチ(整合)信号ライン及び各Dtag
アレー134に対する書込み制御ラインを更に含む。二
つのビットラインは、Dtagsが読み取られたときに
2ビットのキャッシュライン状態をDtagsアレー1
34からシステムコントローラ100へ運び、かつシス
テムコントローラ110がDtagsを更新するときに
2ビット更新型ラインキャッシュを送信するために用い
られる。特定Dtagアレーのためのマッチラインは、
スヌープバス140上のアドレスが関連キャッシュメモ
リに記憶されたデータブロックのアドレスとマッチする
か否かを示しているマッチ信号を担持する。マッチ信号
は、マッチ信号は、キャッシュメモリの主インデックス
(即ち、Etagアレー)の動作に干渉することなくD
tagアレーから生成されるということを除いて、同じ
アドレスで表されたときにキャッシュメモリの主キャッ
シュインデックスによって生成されたキャッシュ・ヒッ
ト/ミス信号と同等である。
【0037】スヌープバス140は、アドレスバス11
4と独立にかつデータバス116と独立にスケーラブル
である。それゆえに、用いられた並列スヌープバス14
0の数及び各スヌープバス140を装填するDtagア
レー134の数は、アドレス及びデータバス114,1
16のスピード要求事項への依存性なしに、Dtagル
ックアップ及び更新動作のスピード要求事項だけに基づ
くことができる。 UPAポートモデル 各UPAポート104は、ポートIDまたはUPA_P
ort_ID(図3参照)と呼ばれる、固有の5ビット
値によって識別される。これは、システム100におい
て最大で32のUPAポートを許容する。図4を参照す
ると、各UPAポートは、多くとも4つの機能インター
フェイスを有することができる:マスタインターフェイ
ス150、スレーブインターフェイス152、割込み装
置(interrupter) インターフェイス154及び割込みハ
ンドラーインターフェイス156。全てのUPAポート
は、UPAスレーブインターフェイス152及びポート
IDレジスタ158を含む。ポートIDレジスタ158
は、その能力(機能)をシステムコントローラ110に
伝達するためにUPAポート104によって使用され
る。
【0038】図4に示されるように、これらのインター
フェイスは、多数のキューを含む。スレーブインターフ
ェイス152は、トランザクション要求(PREQ,S
REQ)、割込み要求(INT)、及び要求に関連した
データ(PREQ_DQ,INT_DQ)を受け取るた
めの入力要求キューを含む。マスタインターフェイス1
50は、アウトバウンド要求に対するキューC0,C1
を含みかつ各マスタクラスに対するインバウンド及びア
ウトバウンドデータキューIDQ0,ODQ0,IDQ
1,ODQ1を随意に含む。以下の説明のあるものは、
特定のトランザクション及び応答メッセージを参照す
る。全てのそのようなトランザクション及び応答メッセ
ージは、“トランザクションの詳細な説明”と題された
この文書の部分に記載される。ポートIDレジスタ15
8のフィールドは、以下のようである:IDフィールド
160は、ポートに関連したUPAモジュールを識別す
る16ビットフィールドであり、製造者のID(サン・
マイクロシステムズ,Inc.によって割り当てられ
た)に対する6ビット、モジュールまたはプロセッサの
型(製造者によって割り当てられた)に対する6ビッ
ト、及びモジュール・バージョン/リビジョン番号(製
造者によって割り当てられた)に対する4ビットを含ん
でいる。
【0039】UPACAPフィールド161は、UPA
ポートの能力(機能)を示すための5ビットマスクフィ
ールドである。UPAがマスタインターフェイスを有す
るならばUPACAP[0]がセットされる。UPAモ
ジュールがキャッシュ(UPAポートを“キャッシュマ
スタ”にする)を有するならばUPACAP[1]がセ
ットされる。UPAポートがUPA_Slave_In
t_L信号を用いて割込み装置インターフェイスを有す
るならばUPACAP[2]がセットされる。このビッ
トは、スレーブ専用UPAポートによって主にセットさ
れる。ソフトウェアは、割込みハンドラーに対応してい
るターゲット−MIDをこのUPAポートに割り当て
る。UPAポートがP_INT_REQトランザクショ
ン要求プロトコルを用いて割込み装置インターフェイス
を有するならばUPACAP[3]がセットされる。ソ
フトウェアは、割込みハンドラーに対応しているターゲ
ット−MIDをこのUPAポートに割り当てる。
【0040】UPAポートが割込みハンドラーインター
フェイスを有するならばUPACAP[4]がセットさ
れる。システムコントローラは、このビットがセットさ
れたときにだけP_INT_REQ割込み要求を他のU
PAポートからこのポートに進める。ECCNotVa
lidフィールド162は、このUPAポートがECC
を支持しないことを示すための1ビットフィールドであ
る。このフィールドは、データを供給するときにUPA
ポートがECCを生成できるならば0×0にセットされ
る。データを供給するときにUPAポートがECC生成
を支持しないならばそれは0×1にセットされ、かつE
CCチェッキングができないことを受容UPAポートに
示すことをシステムコントローラ110に要求する。E
CCNotValidが0×1にセットされたときに、
UPAポートは、UPAデータバス上のECCチェッキ
ングを支持しないしUPAアドレスバス上のパリティチ
ェッキングも支持しない。ONEREADフィールド1
64は、このUPAポートが一度にそれへの一つの顕著
な(突出した)スレーブ読取りP_REQトランザクシ
ョンだけを支持することを示すための1ビットフィール
ドである。ONEREADフィールドがセットされたな
らば、このUPAポートは、P_RAB_REPLY及
びP_RASP_REPLYメッセージを発行できず、
それは、P_RASB_REPLY応答メッセージを用
いなければならない。結果として、ONEREADフィ
ールドがセットされたならば、このUPAポートは、ス
レーブアクセスに対してそれに指向されたP_NCRD
_REQ及びP_NCBRD_REQトランザクション
に対してP_RASB応答を用いる。以下に説明するよ
うに、システムコントローラは、UPAポートに代わっ
てこれらのトランザクションに対するMID、クラス、
及びサイズ情報を維持する。P_NCRD_REQトラ
ンザクション要求メッセージ及びP_RASB応答メッ
セージも以下に詳述する。
【0041】PREQ_RQ[3:0]フィールド16
6は、スレーブインターフェイス152のPREQ_R
Qキュー167の大きさをエンコード(符号化)する4
ビットフィールドである。このフィールドは、UPAス
レーブインターフェイス152が同時に記憶することが
できる(2サイクル)入力P_REQトランザクション
要求パケットの最大数を指定する。全てのUPAポート
が、最小で、そのポートIDレジスタのスレーブ読取り
を支持しなければならないので、PREQ_RQの最小
値は、0×1である。PREQ_DQ[5:0]フィー
ルド168は、PREQ_DQキュー169の大きさを
エンコードする6ビットフィールドである。このフィー
ルドは、UPAスレーブポートが そのP_REQ書
込みデータキュー169に受け取ることができる入力ク
ワッドワード(16バイト量)の数を指定する。書込み
データキューPREQ_DQは、PREQ_RQ要求キ
ューに支持された要求の最大数に対するデータブロック
(64バイト)を収容しなければならない。結果とし
て、PREQ_DQデータキューは、UPAポートがス
レーブ書込みを支持しないならばPREQ_DQを0×
0に等しくセットすることができることを除いて、常に
PREQ_RQフィールド166において指定された大
きさの4倍である。
【0042】PINT_RDQ[1:0]フィールド1
70は、INT_RQ及びINT_DQキュー171,
172の大きさをエンコードする2ビットフィールドで
ある。PINT_RDQフィールド170は、UPAポ
ートが割込みハンドラーインターフェイス156を有す
るならば、有効である。割込み要求キューの大きさ、I
NT_RQ171は、このフィールドにバイナリバリュ
ー(2値)プラス1に等しい。割込み要求キューの最大
数は、4つの割込み要求である。纏めると、このフィー
ルドは、UPAスレーブポートが受け取ることができる
(2サイクル)入力P_INT_REQ要求の数並びに
UPAスレーブインターフェイスが受け取ることができ
る64バイト割込みデータブロックの数を特定する。U
PACAPフィールドに関しては、ポートIDレジスタ
が読込まれるべきためのスレーブインターフェイスを有
することを全てのUPAポートが要求されるときに、ス
レーブ能力(機能)を示すためのマスクビットが存在し
ない。以下は、UPACAPフィールドに対する設定の
例である。プロセッサモジュールのような全機能UPA
ポートは、そのUPACAPマスクが0×1Bにセット
される。スレーブアクセスに対してだけマップされかつ
割り込まないグラフィック装置のようなスレーブ専用U
PAポートは、そのUPACAPマスクが0×0にセッ
トされる。(UPA_Slave_Intで)割込みを
生成するスマートスレーブ専用UPAポートは、そのU
PACAPマスクを0×04にセットする。DVMA
(直接仮想メモリアクセス)を実行し、キャッシュを有
さず、かつP_INT_REQ割込み要求トランザクシ
ョンを生成するI/O・UPAポートは、そのUPAC
APマスクを0×9にセットする。
【0043】マスタインターフェイス マスタインターフェイス150は、オプション(任意)
である。UPAマスタインターフェイスは、UPAポー
トにトランザクション要求(P_REQ)を始動(開
始)させる。マスタインターフェイス150を有してい
るUPAポート104は、ここでマスタポートと呼ばれ
る。マスタポートに対するUPAモジュールは、キャッ
シュマスタポートと呼ばれるような場合に、物理的にア
ドレス指定されたコヒーレントキャッシュを含みうる。
キャッシュは、“MOESIキャッシュコヒーレンスプ
ロトコル”(後述する)に参与し、かつシステムコント
ローラ110からのコピーバック−無効要求に応答す
る。コヒーレントキャッシュは、UPAモジュールのあ
らゆる他の専用局所キャッシュの全体包含(total inclu
sion) を有する。好ましい実施例では、各キャッシング
UPAマスタポートは、部分的には各データプロセッサ
のキャッシュメモリが単一書戻しバッファ(図8のバッ
ファ280を参照)を有するだけなので、かつ部分的に
は多重書戻しバッファが必要である複雑な制御論理を回
避するために、ほとんどの場合に一つの顕著な(突出し
た)ダーティ・ビクティム(汚染犠牲者)書戻しを有す
ることができる。
【0044】データプロセッサが多重装填(multiple lo
ads)及びキャッシュミス(cache misses)または先取り(p
refetches)を発行できる、他の実施例では、データプロ
セッサに複数の書戻しバッファとシステムコントローラ
に対応する数のDtag非常駐バッファとが存在しう
る。ここに記載された書戻し取扱い論理プロトコルは、
UPAポートからのあらゆる数の顕著な(突出した)書
戻しで作動する。UPAマスタインターフェイス150
は、トランザクション要求の二つの“クラス”に対する
二つの独立出力要求キューC0及びC1までを有する。
C0及びC1は、それらがUPAマスタポートによって
始動されたトランザクションのクラスなので、“マスタ
クラス”とも呼ばれる。UPAマスタインターフェイス
は、あらゆるクラスからのトランザクション要求をを発
行しうる。各トランザクション要求パケットのビット
は、要求がどのクラスからであるのかをシステムコント
ローラに特定する。また、UPAポートのポートID
は、MIDフィールドのトランザクションパケットに担
持される(以下の、トランザクションの説明を参照)。
マスタインターフェイス150は、トランザクションク
ラスのそれぞれに対するインバウンド及びアウトバウン
ドデータキュー、IDQ0,ODQ0,及びIDQ1,
ODQ1も含みうる。
【0045】二つ以上のトランザクションクラス(ここ
ではマスタクラスと呼ばれる)を有することの目的は、
どのメモリトランザクションが順番に順序付けされる必
要がありどのメモリトランザクションがその必要がない
かを各データプロセッサに示させることによってメモリ
トランザクションの並列実行を増大することである。特
定データプロセッサからの各マスタクラスのトランザク
ションは、データプロセッサがそのクラスにおいてメモ
リ要求を生成するのと同じ順序で終了されなければなら
ない。異なるクラスにおけるメモリトランザクションの
間には順序付け要求事項が存在しない。それゆえに、デ
ータプロセッサが、クラス1で順番にメモリトランザク
ション要求T1−1,T1−2,及びT1−3を、クラ
ス2で順番にメモリトランザクションT2−1及びT2
−2を発行するならば、システムコントローラは、それ
らが生成されたのと同じ順序でトランザクションT1−
1,T1−2,及びT1−3を終了しなければならな
い。同様に、システムコントローラは、それらが生成さ
れたのと同じ順序でトランザクションT2−1及びT2
−2を終了しなければならない;しかし、それは、トラ
ンザクションT1−1,T1−2,及びT1−3に関し
ていつでもトランザクションT2−1及びT2−2を終
了することができる。
【0046】データキューは、データ転送の取扱いを簡
略化するために好ましい実施例において用いられる。ア
ウトバウンドデータキューは、対応トランザクション要
求または応答メッセージが送信される前に送信されるべ
きデータで常に満たされる。このように、データ書込み
トランザクション要求メッセージが送信されるか、また
は“データレディ(data ready)”応答メッセージがUP
Aポートによって送信されるときに、相互接続は、関連
データがすぐに送信可能であることを保証する。その大
部分がオプションである、インバウンドデータキュー
は、あらゆる他の論理の状態とは独立に満たすことがで
きるFIFO(先入れ先出し方式)バッファを用いて一
般に実施される。結果として、インバウンドデータキュ
ーがUPAポートに供給される(設けられる)ときには
いつでも、UPAモジュール(データプロセッサのよう
な)及びそのUPAポートのどちらも、データパケット
を受け取るためのハンドシェークプロトコルを管理する
必要がない。それよりも、データは、インバウンドデー
タキューの相互接続によって単に記憶されかつ関連UP
AポートまたはそのUPAモジュールは、要求された資
源が利用可能であるときはいつでもそのデータを処理す
る。
【0047】各マスタ要求クラスのトランザクションに
対するS_REPLYは、トランザクション要求が要求
しているUPAポートによって最初に発行された順序と
同じ順序でシステムコントローラ110によって、要求
しているマスタUPAポートに発行される。この要求事
項は、(A)各マスタ要求クラス内のトランザクション
が、トランザクション要求が発行される順序と同じ順序
で厳格にシステムコントローラによって起動されるよう
に先入れ先出しバッファとして各マスタクラス要求キュ
ーSCIQ0/1を扱うこと、及び(B)アクティブト
ランザクション要求のセット内で、それらトランザクシ
ョンが起動されたのと同じ順序で同じキューイングUP
Aポート及びマスタクラスを有しているトランザクショ
ンに対するS_REPLYの発行をキューイングするこ
とによってシステムコントローラで実施される。上記し
たように、二つのトランザクション要求クラスC0,C
1の間に順序付け(順序)関係が存在しない。一つのク
ラスからの要求に対するS_REPLYは、それらの要
求がシステムコントローラに送信された順序に関係な
く、二次クラスからの要求に対するS_REPLYより
も早くまたは遅くくる。
【0048】異なるマスタUPAポートからの要求間に
も順序付け関係が存在しない。UPAポートのスレーブ
インターフェイスに指向された異なるマスタUPAポー
トからの読取り/書込み要求は、あらゆる順序でUPA
ポートスレーブインターフェイスによって実行できる
が、しかし同じマスタUPAポートからでかつ同じマス
タ要求クラスの要求は、それらがUPAポートスレーブ
インターフェイスによって受け取られたと同じ順序でU
PAポートスレーブインターフェイスによって実行され
る。I/O装置への参照、順序的に一定(sequentially
consistent) である。スレーブUPAインターフェイス
は、装置アドレスによりトランザクションを順序付け
る。同じI/O装置(または所定のアドレス範囲)への
全ての参照は、それらがUPAスレーブインターフェイ
スに到着したのと同じ順序で終了する必要がある。しか
しながら、(バスブリッジにおけるような)同じUPA
スレーブインターフェイスをハングオフしている(hangi
ng off) 異なるI/O装置に対してなされる参照の順序
付けは、存在せず、かつUPAスレーブインターフェイ
スは、並列に異なるI/O装置(または異なる所定のア
ドレス範囲)に対してなされるトランザクションを実行
することを許容される。
【0049】各UPAモジュールは、順序付けが重要で
ある全てのトランザクション要求を単一のマスタ要求ク
ラスに置くことを必要とする。全てのプロセッサUPA
モジュールに対する好ましいクラス割り当ては、以下の
ようである:クラス0は、キャッシュミス、及びブロッ
ク装填(block loads) による読取りトランザクションに
対して用いられる。クラス1は、書戻し要求、WriteInv
alidate (書込み無効)要求、ブロック記憶、割込み要
求、及び非キャッシュ型読取り/書込み要求に対して用
いられる。クラスへのメモリトランザクションのこの割
り当ては、キャッシュミスによってもたらされたメモリ
トランザクションを他のトランザクションによってブロ
ックされないようにイネーブルしかつデータプロセッサ
が複数の顕著な(突出した)装填及び/または先取りを
支持するときに特に重要である。これは、他の最適化と
共に、キャッシュ充填(cache fills) に対する最も低い
可能な待ち時間を与える。相互接続は、トランザクショ
ンの並列実行を最大化でき、かつ同じUPAポート及び
クラスからのトランザクションを除いて、それらをあら
ゆる順序で終了させる。コヒーレンスを保持し、かつプ
ログラマの視点から順序一定(sequentialconsistency)
を達成するために、TSO(総合記憶順序)、PSO
(部分的記憶順序)及びRMO(緩和メモリ順序)メモ
リモデル及びSSO(強力順序)I/O空間メモリモデ
ルは、相互接続のハードウェアを実際に順序一定(seque
ntially consistent) にすることなく支持される。
【0050】UPAマスタポートは、そのメモリモデル
に基づいてその内部メモリ事象の順序について単独でま
かされ(責任を有し)、かつそのメモリモデル順序付け
要求事項を支持するためにあらゆる要求クラスからのト
ランザクションの組合せを発行することができる。UP
Aポートのデータプロセッサは、その局所メモリモデル
に基づいて必要によりトランザクションを並列化しかつ
順序付けるために二つのマスタクラスを使用しうる。全
てのバリア及び同期は、それがマスタクラスからのトラ
ンザクションを発行する前にそのメモリモデルに基づい
てデータプロセッサによって実施される。全てのデータ
トランザクションは、常に終了し、かつ(一つの割込み
トランザクションを除いて)システムコントローラ11
0からマスタUPAポートへの再試行(リトライ)NA
CKは、存在しない。UPAマスタポートは、それ自体
のスレーブポートへの読取り/書込みスレーブアクセス
を行ってはならないし、既にそのキャッシュの中にある
データブロックに対する要求を行ってもいけないし、そ
れ自身に割込みを送ってもいけない。コネクタに関連し
た電気的制約によりループバック(loopback)は、本発明
の好ましい実施例によって支持されない。しかしなが
ら、ループバックの使用を論理的に妨げるものは、本発
明のシステムアーキテクチャに存在しない。事実、S_
REPLYのプロトコル、データ転送及びキャッシュコ
ヒーレンスは、ループバックで作動するように設計され
ている。
【0051】スレーブインターフェイス 全てのUPAポートは、スレーブインターフェイス15
2を含み、かつ全てのUPAポートは、ポートIDレジ
スタ158をインプリメント(実施)する。スレーブイ
ンターフェイス152は、トランザクションにだけ応答
することができ、トランザクションを始動(開始)する
ことができない。スレーブインターフェイス152は、
ときどきここで“スレーブポート”と呼ばれる。スレー
ブポートへの全ての参照は、UPAポートがマスタUP
Aポートであるか否かに係わりなく、UPAポートのス
レーブインターフェイスを意味する。キャッシングマス
タUPAポート上のUPAスレーブインターフェイス1
52は、UPA6ポート(UPAポート)にシステムコ
ントローラ110からのコピーバック−無効要求を受け
取らせる。UPAスレーブインターフェイス152は、
スレーブインターフェイスが割込みハンドラーインター
フェイス156を含むUPAポートの一部であるなら
ば、UPAポートに割込みパケットトランザクションを
受け取らせる。UPAスレーブインターフェイスは、非
キャッシュ型アドレス空間を有し、かつマスタUPAポ
ートからのUPAモジュール上で、そのポートIDレジ
スタ158を読取ることを含んでいる、装置及びレジス
タへのプログラムされたI/O(PIO)読取り/書込
みアクセスを許容する。各UPAスレーブインターフェ
イスは、8ギガバイトの非キャッシュ型アドレス空間が
割り当てられる。UPAポートがそれにアサートされた
UPA_Addr_Valid信号を見たときに、最上
位アドレスビット、PA[40]が1に等しいならば、
トランザクション要求パケットからの物理アドレスビッ
トPA[32:4]は、非キャッシュアドレス空間にお
けるアドレスを表わす。
【0052】UPA相互接続アーキテクチャは、システ
ム幅アドレス空間を画定しないし、ポートIDレジスタ
158を除いて、あらゆるシステムレジスタに対するア
ドレスデコード(復号)も画定しない。UPAスレーブ
インターフェイスは、それらの要求が受け取られたのと
同じ順序でマスタUPAポートから同じマスタクラスか
らのPIO読取り/書込みトランザクション要求を処理
する。即ち、それは、トランザクション要求が受け取ら
れたのと同じ順序でそれらのトランザクション要求に対
するP_REPLYメッセージを送る。しかしならが、
それは、UPAポートからの異なるマスタクラスにおけ
る要求に対する順序付け、または異なるUPAポートか
らの要求に対する順序付けを保持する必要がない。UP
AスレーブインターフェイスがI/Oバスインターフェ
イスに接続されているならば、I/Oバスインターフェ
イスも、各個別アドレスまたはアドレス範囲に対してそ
れが受け取るトランザクションに対する順序付けを保持
することが必要である。例えば、同じI/Oバス上のア
ドレスA(または装置A)への読取りトランザクション
が後続するI/Oバス上のアドレスA(または装置A)
への書込みトランザクションは、I/Oバスインターフ
ェイスに書込みの前に読取りを再順序付け(reorder) さ
せてはならない。しかしながら、アドレスB(または装
置B)への読取りトランザクションが後続するアドレス
A(または装置A)への書込みは、あらゆる順序でI/
Oバスインターフェイスによって実行することができ
る。I/Oバス順序付けに対する正確な機構は、I/O
バスインターフェイスのインプリメンテーション毎に変
えることができる。しかしながら、クラス順序付けに対
して上述したものに類似するブロッキングビット及びブ
ロッキングビットマップスキームは、クラスに基づく順
序付け及びI/Oアドレスに基づく順序付けの両方に用
いることができる。
【0053】UPAスレーブインターフェイスは、書込
みトランザクション上での書込み終了を保証することが
できない。(同じプロセッサにより)読取りが後続する
書込みは、ロケーション(記憶位置)が存在するならば
最後の書込みの結果をリターンする。しかしながら、I
/O装置レジスタへの読取り−書込みは、インプリメン
テーション指定サイドアフェクト(side affects)を有す
ることができるので、これの意味論(semantics) は、各
I/O装置による。マスタUPAポートは、二つが同じ
UPAアドレスバスを共有している場合でも相互接続モ
ジュール112を通してのみスレーブUPAポートと通
信する。スレーブ専用UPAポート(マスタインターフ
ェイスを有さないUPAポート)は、システムコントロ
ーラへ割込みを知らせるために専用割込みワイヤを使用
することができる。システムコントローラは、それに対
する割込みパケットを生成し、かつそれを割込みハンド
ラーUPAポートへ進める。システムコントローラ11
0は、図4及び図5に示した3つのスレーブ要求受信キ
ュー(PREQ_RQ,SREQ_RQ,INT_R
Q)及び二つのデータキュー(PREQ_DQ,INT
_DQ)の最大の大きさを知ることによってUPAポー
トスレーブインターフェイスへの要求のフロー制御を取
り扱う。各UPAポートに対するポートIDレジスタ1
58は、それがそのキューに同時に記憶することができ
る各型の顕著(突出)なトランザクション要求の最大
数、それゆえに、それらの要求のあるものがサービスを
受けるまでどのくらいの数のそのような要求をシステム
コントローラ110によってそれに送ることができるか
を特定する。また、ポートIDレジスタ158は、デー
タキューのそれぞれが記憶できるクワッドワード(16
バイトユニット)の最大数を特定する。
【0054】UPAスレーブポートインターフェイス1
52は、それに送られたあらゆるトランザクションに対
して“再試行NACK”で応答することができない。そ
のようなネガティブな肯定応答メッセージの必要を回避
するために、システムコントローラ110は、スレーブ
インターフェイスがそのキューにおいて有するルームよ
りも多いUPAスレーブインターフェイスへの要求を発
行しない。先のトランザクションの終了を肯定応答する
ためのUPAスレーブインターフェイスからのP_RE
PLYは、そのスレーブUPAポートの入力要求キュー
におけるその型の更に一つの要求に対するルームが存在
することをシステムコントローラ110に報告する。好
ましい実施例におけるスレーブポートインターフェイス
152のシステムコントローラ要求キューSREQ_R
Q174の最大の大きさは、1で固定される。それゆえ
に、スレーブUPAポートに対してせいぜい一つの顕著
なS_REQが存在することができる。システム性能を
傷付ける(害する)ことなく単一のエントリ要求キュー
SREQ_RQ174を用いることができる理由は、全
てのS_REQ要求が、スレーブインターフェイスによ
って最も高い優先的サービスを与えられかつS_REQ
要求をキューイングすることが不要であるように迅速に
サービスを受けるということである。特に、図7に示す
ように、好ましい実施例では、各キャッシングUPAマ
スタポート104のキャッシュコントローラ176は、
キャッシュコントローラが、SREQ_RQがデータプ
ロセッサよりも高い優先度を与えられている、ポートデ
ータプロセッサ178とSREQ_RQ要求キューの両
方からのキャッシュアクセス要求を受け入れるようにデ
ュアルポートされる(dual ported)。この構成を用い
て、SREQは、SREQ_RQ要求キュー174にお
けるそれらの記憶の2から5システムクロックサイクル
内の各スレーブインターフェイスによって一般にサービ
スを受ける。特に、SREQがアサートされる一クロッ
クサイクル直前にデータプロセッサ178によって原子
読取り−変更−書込みキャッシュメモリ動作がスタート
されたならば、それは、終了するためにそのキャッシュ
トランザクションに対して3つの付加システムクロック
サイクルと同じくらい長く掛かりうるし、その後SRE
Qが一般に2システムクロックサイクル内でサービスを
受ける。
【0055】更に、上述したデュアルポートされたキャ
ッシュコントローラ方法を用いて、一つのデータプロセ
ッサ178から別のものへのコピーバック要求は、相互
接続が競合するメモリトランザクションを有さないとき
に主メモリからの装填とおおよそ同じ量の時間で終了す
る。特に、好ましい実施例では、主メモリからの装填
は、終了するために約8システムクロックサイクルが掛
かり、かつ一つのデータプロセッサキャッシュメモリか
ら別のデータキャッシュメモリプロセッサへのコピーバ
ックも、競合するメモリトランザクションが存在しない
ときに終了するために約8システムクロックサイクルが
掛かる。ほとんどのインプリメンテーションでは、各U
PAスレーブインターフェイスは、UPAアドレスバス
を介して受け取ったトランザクション要求のパリティチ
ェックを実行しかつ致命的エラーP_REPLYメッセ
ージであらゆるパリティエラーを報告することを必要と
する。ほとんどのインプリメンテーションでは、各UP
Aスレーブインターフェイス152は、ECCが有効で
あるならば書込みトランザクションのECCチェックを
実行し、かつデータエラーをログしかつ報告することも
必要である。
【0056】割込みインターフェイス 割込みインターフェイス154は、オフションである。
UPAポートがマスタインターフェイス150を支持す
るならば、それは、マスタUPAポートのあらゆるマス
タクラスから割込みハンドラーであるターゲットスレー
ブUPAポートへ割込みパケットトランザクションを発
行することができる。マスタUPAポートの割込みイン
ターフェイスは、P_INT_REQトランザクション
(以下のトランザクションの説明を参照)を始動(開
始)することによって割込みを生成する。マスタUPA
ポートは、要求パケットのターゲット−ID<4:0>
を特定することによって特定の宛先割込みハンドラーU
PAポートに対する割込みパケットを生成する。ターゲ
ット−IDは、宛先UPAポートの固有5ビットUPA
_Port_IDと同じである。それ自身にUPAポー
トによって導かれた割込みは、電気コネクタ考慮により
好ましい実施例においてUPAインターフェイス上で支
持されないが、しかし本発明の代替実施例においてよく
支持されうる。一つ(またはそれ以上)の割込みハンド
ラーUPAポートのターゲット−IDは、システム初期
化ソフトウェアによって各非プロセッサ割込み装置UP
Aポートに割り当てられる。非プロセッサ割込み装置U
PAポートは、次に割り当てられたターゲット−IDだ
けに割込みトランザクションを送ることができる。プロ
セッサUPAポートは、(プロセッサ対プロセッサ・ソ
フトウェアクロスコールに対する)あらゆる割込みハン
ドラーターゲット−IDへ割込みトランザクションを送
ることができる。
【0057】各割込みトランザクション要求P_INT
_REQに対するターゲット−ID<4:0>は、2サ
イクル割込みパケットの最初のサイクルの物理アドレス
フィールドPA<18:14>に担持される(図9C参
照)。UPAポートは、あらゆるマスタ要求クラスにP
_INT_REQを置くことができる。それが一つのク
ラスまたは別のクラスであるべきであるという要求事項
が存在しない。しかしながら、それは、キャッシュ充填
トランザクションをブロックしないように好ましい実施
例においてクラス1に置かれる。割込みトランザクショ
ンを始動したUPAポートがS_INAK応答(さもな
ければNACK応答として知られた)を受け取るなら
ば、要求しているUPAポートは、その出力データキュ
ーから割込みデータを、かつマスタ要求クラスキューか
らP_INT_REQ要求を取り除き、あるバックオフ
間隔の後で再試行する。UPAポートが、UPAデータ
バス上の64バイトの割込みデータを駆動するためにS
_WAB応答を受け取るならば、そしてターゲットが有
効な割込みハンドラーであるならば、P_INT_RE
Qとデータの両方がシステムコントローラによってター
ゲットUPAポートに運ばれる(ちょうど非キャッシュ
ブロック書込みトランザクションのような)ことが保証
される。ターゲットが割込みハンドラーでないならば、
システムコントローラがそれを廃棄(かつ状態ビットを
セット)しうるか、または受容UPAポートがそれを
(暗黙のうちに)廃棄しうる。
【0058】割込みは、異なるUPAポートへ多重折り
返し(multiple back-to-back) P_INT_REQトラ
ンザクションを発行するならば、それらが同じ順序で運
ばれるという保証はない。しかしながら、同じターゲッ
ト−IDを特定している折り返しP_INT_REQ
は、同じ順序でターゲットUPAポートへシステムコン
トローラによって運ばれて、システムコントローラ11
0からのNACKsを結果として生ずるあらゆる割込み
要求も、それらのオリジナル発行順序でUPA割込み装
置インターフェイスによって再試行されるということが
提供される。UPAポートがマスタインターフェイスを
支持しないが、割込みインターフェイス154を要求す
るならば、割込みインターフェイス154は、システム
コントローラ110に単一優先レベル割込みを送るべく
専用ワイヤ(図3においてUPA_Slave_Int
_Lとラベル付けされた)によって結合される。システ
ムコントローラ110は、割込みパケットを発生させか
つ割込みハンドラーUPAポートへ送り出させる。割込
みインターフェイスを有しているスレーブUPAポート
では、割込みハンドラーがスレーブUPAポートの所定
の割込みクリアレジスタへのスレーブ書込みで割込みを
クリアするまで、二次割込みをUPA_Slave_I
nt_Lライン上にアサートすることができない。更
に、単一割込み優先レベルだけが、UPA_Slave
_Int_Lラインを用いて生成された割込みに対して
利用可能である。
【0059】割込みハンドラーインターフェイス UPAポートは、割込みハンドラー156でありうる。
データプロセッサUPAモジュールは、割込みハンドラ
ーインターフェイスを一般に支持する。割込みハンドラ
ーであるために、UPAポートは、図16に示すINT
及びINT_DQキューを支持しなければならない。I
NT要求キューの最大の大きさは、4つの割込みであ
る。INT要求キューに配置されたP_INT_REQ
は、プロセッサによって試験される。好ましい実施例で
は、それは、ソフトウェア割込みハンドラーへのトラッ
プをもたらす。割込みハンドラーが割込みをハンドリン
グすることを終了した後、それは、P_INT_REQ
がハンドルされかつその入力割込み要求キューに別のP
_INT_REQのためのルームがあるということを示
すためにP_REPLYがシステムコントローラへのU
PAポートによって生成される。好ましい実施例では、
P_REPLYは、ソフトウェアが割込みハンドラーイ
ンターフェイスの‘割込みクリア’レジスタへの書込み
を実行するときに生成される。 システムコントローラレジスタ 図5を参照すると、システムコントローラ110は、各
マスタクラス(SCIQ0,SCIQ1)のトランザク
ション要求を受け取るための個別キュー(separate queu
es) 、並びにそれが生成する要求及びそれがUPAポー
トへ進める要求の両方に対するキュー(SCRQ)を含
む。また、システムコントローラ110は、その能力
(機能)をUPAポートへ伝達(通信)するためのSC
IDレジスタ180と、SC Configレジスタ
190と、保留(pending) トランザクション状態アレー
200を含む。SC Configレジスタ190は、
システムの全てのUPAポートの能力(機能)を記憶す
るため、並びにどのくらいのトランザクション要求がU
PAポートのそれぞれの入力キューに現在記憶されてい
るのかを常に把握するために用いられ、保留トランザク
ション状態アレー200は、全てのインアクティブ及び
アクティブ保留トランザクションを常に把握するために
システムコントローラによって用いられる。
【0060】SC IDレジスタ180のフィールド
は、次の通り:IDフィールド181は、システムコン
トローラを識別する16ビットフィールドである。UP
ANUMフィールド182は、システムコントローラが
支持することができるUPAポートの最大数を指定する
5ビットマスクフィールドである。SCIQ0[3:
0]フィールド183は、特定のUPAポートに対する
入力クラス0要求キューSCIQ0に記憶することがで
きる(2サイクル)要求パケットの数を特定する4ビッ
トフィールドである。SCIQ1[3:0]フィールド
184は、特定のUPAポートに対する入力クラス1要
求キューSCIQ1に記憶することができる(2サイク
ル)要求パケットの数を特定する4ビットフィールドで
ある。各そのようなマスタUPAポートに対するSCI
Q0及びSCIQ1要求入力キューの大きさを示すため
に各マスタUPAポートに対するSCIQ0及びSCI
Q1レジスタの個別のセットが存在する。図6を参照す
ると、SC Configレジスタ190は、システム
コントローラ110によって支持することができる各U
PAポートに対する一つの行または記録192を含む。
SC Configレジスタの各行の位置は、対応UP
AポートのポートIDに対応する。それゆえに、SC
Configレジスタ190の最初(第1)の行は、ポ
ートID 00000を有するUPAポートに対する構
造データを記憶し、第2の行は、ポートID 0000
1を有するUPAポートに対する構造データを記憶す
る、等。各そのような記録は、ここで“SCConfi
gレジスタのポート記録”と呼ばれる。SC Conf
igレジスタ190の各ポート記録におけるフィールド
は、次の通り:UPA_Port_ID_Reg193
のコピーは、事実上、対応UPAポートのポートIDレ
ジスタのコピーである。
【0061】キャッシュインデックスマスク(CIM)
フィールド194は、対応UPAポートの、もしあれ
ば、コヒーレントキャッシュのEtagブロックエント
リまたはラインの数を指定する。これは、アドレスに用
いるための物理アドレスPA[40:6]({40:
6])の下位アドレスビットのどのくらいがキャッシュ
コヒーレンスプロトコルをインプリメントするために比
較するかをシステムコントローラに示す。このフィール
ドは、キャッシュマスタUPAポートに対してだけ有効
である。IntCntフィールド195は、UPAポー
トによっていまだ肯定応答されていない対応UPAポー
トへシステムコントローラ110が進めた割込み要求の
数である。システムコントローラは、このフィールドの
値が、UPA_Port_IDレジスタのそのコピー1
93におけるPINT_RDQ[1:0]フィールド1
70に等しいときにはいつでもUPAポートへの追加割
込み要求の送信をブロックする。PReqCntフィー
ルド196は、UPAポートによっていまだ肯定応答さ
れていない対応UPAポートへシステムコントローラ1
10が進めたポートトランザクション要求の数である。
システムコントローラは、このフィールドの値が、UP
AポートIDレジスタのそのコピー193におけるPR
EQ_RQ[3:0]フィールド166に等しいときに
はいつでもUPAポートへの追加ポートトランザクショ
ン要求の送信をブロックする。
【0062】SReqCntフィールド197は、UP
Aポートによっていまだ肯定応答されていない対応UP
Aポートへ送られたシステムコントローラトランザクシ
ョン要求の数である。システムコントローラは、各スレ
ーブインターフェイスにおけるSREQキューの最大の
大きさが一つなので、このフィールドの値が1に等しい
ときにはいつでもUPAポートへの追加システムコント
ローラトランザクション要求の送信をブロックする。 データフロー 図5及び図7を参照すると、メモリへ及びメモリからの
一般的な読取り/書込みデータフローは、次の通りであ
る。図には明示していないけれども、システムコントロ
ーラ110は、各マスタUPAポートに対するSCIQ
0及びSCIQ1入力要求キューの個別セットを含む。
更に、図8のフローチャートは、全データ転送トランザ
クションの全てのステップ(段階)を示していないとい
うことに注目すべきである。それよりも、それは、ほと
んどのデータ転送トランザクションに共通なステップだ
けを示す。全ての画定されたデータ転送トランザクショ
ンの更なる詳細は、“トランザクションの詳細な説明”
と題されたこの文書の部分に記載されている。
【0063】UPAマスタポートは、システムコントロ
ーラがそれ自身の二つの要求入力キューの一つ(21
2)に受け取る、そのUPAアドレスバス上の読取り/
書込みトランザクション要求(P_REQ)をシステム
コントローラ110(210)へ発行する。それがコヒ
ーレント要求(214)であるならば、システムコント
ローラ110は、スヌープバス上でDtagルックアッ
プ(スヌープ)動作を行い、続いてDtag更新動作
(216)を行う。Dtagルックアップと同時に、読
取りトランザクションが主メモリに配置されたアドレス
上で実行されるならば、システムコントローラは、メモ
リサイクルを開始する(217)。“スヌープ動作”
は、いずれかのDtagアレー134が特定されたアド
レスに対する有効エントリを記憶するかどうかを決定す
べくスヌープバス140に結合された全てのDtagア
レー134を同時にアクセスする。Dtagアレー13
4のそれぞれは、各スヌープ動作に応じて2ビット状態
値並びにヒット/非ヒットビットを出力する。Dtag
アレーによって出力された2ビット状態値は、ヒット/
非ヒットビットがマッチングエントリがDtagアレー
134に見出されたことを示すならば、Dtagの状態
を表わす。“ヒット”ビットがトゥルー(True)で
ありかつ二つのビットDtag状態値が00に等しくな
いならば、“ヒット”は、“Dtagアレーで検出され
る。
【0064】行なわれている指定トランザクション要求
により、“ヒット”がDtagアレー134のいずれか
で検出されたならば、データは、一つのマスタUPAポ
ートのキャッシュメモリから供給されうるし、指定され
たアドレスに対するデータを記憶するキャッシュメモリ
のあるものまたは全てにおけるキャッシュエントリは、
無効にされうるか、またはDtag及びEtagアレー
の一つ以上のキャッシュエントリのタグ状態は、以下に
説明するように、別の方法で更新されうる。コヒーレン
ト読取りトランザクションに対して、(A)Dtagア
レー134の指定されたアドレスに対してヒットが存在
しない(222)か、または(B)キャッシュヒットに
対応している全てのDtagsが非変更S(供給クリー
ン)状態でありかつトランザクションが自分(RDO)
のトランザクションへの読取りでないので、データがメ
モリから入力されるということを、スヌープが決定する
ならば、主メモリから要求しているUPAポートまで相
互接続モジュール112を通るデータ経路は、システム
コントローラ110によってセットアップ(準備)され
る(224)。システムコントローラ110は、要求し
ているUPAポートが指定されたアドレスに対応してい
るデータブロックを受け取る時間であるときに(22
8)要求しているUPAポートにS_REPLYメッセ
ージを送る(226)。
【0065】別のUPAポートキャッシュからのコヒー
レント読取りは、要求しているプロセッサ以外のデータ
プロセッサにおけるキャッシュメモリに対するキャッシ
ュヒットが存在しており(222)、かつ(A)要求し
ていないデータプロセッサに対するDtagが、変更さ
れたデータブロックを示す、OまたはM状態であるか、
または(B)読取りトランザクションが自分(P_RD
O_REQ)のトランザクションへの読取りであるとき
に(223)、必要である。システムコントローラがデ
ータブロックが別のUPAポートキャッシュによって供
給されなければならないということを決定する(22
2,223)ときに、システムコントローラ110は、
コピーバックS_REQを供給しているUPAポートの
スレーブインターフェイスへ送り、かつメモリサイクル
をアボート(異常終了)する(240)。二つ以上のデ
ータプロセッサを有しているシステムでは、システムコ
ントローラは、無効トランザクション要求(S_INV
_REQ)を、供給しているUPAポート以外の、キャ
ッシュヒットが検出された全てのキャッシングUPAマ
スタポートへも送る(240)。データが準備できたと
きに、スレーブUPAポートは、P_REPLYをシス
テムコントローラ110へ発行する(242)。次に、
システムコントローラ110は、供給しているUPAポ
ートから要求しているUPAポートまでデータ経路を形
成するために制御信号を相互接続モジュール112へ送
る(244)。また、システムコントローラ110は、
そのUPAデータバス上の要求したデータを駆動するた
めにS_REPLYを供給しているUPAスレーブイン
ターフェイスへ送り、かつそのUPAデータバスからデ
ータを受け取るべくそれを促すためにS_REPLYを
要求しているUPAマスタポート(246)へ送る(2
28)。
【0066】一般的なコヒーレント書込み(P_WRI
_REQ)トランザクションでは、無効要求は、主メモ
リに書込まれているものと同じデータブロックを記憶し
ているキャッシュメモリへシステムコントローラによっ
て送られて(218)、S_REPLYメッセージは、
要求しているUPAポートから主メモリまで相互接続モ
ジュール112を通るデータ経路がシステムコントロー
ラ110によってセットアップされかつ主メモリがデー
タを書込むためにプライムされた後で、それに書込み動
作に対するデータを供給させるためにシステムコントロ
ーラによって要求しているUPAポートへ発行される
(230)。書戻し(P_WRB_REQ)トランザク
ションは、他のコヒーレント書込みトランザクションと
は異なって取り扱われる。トランザクションに対するD
tagルックアップ(スヌープ)の結果が受け取られた
ときに、書戻しトランザクション要求の指定されたアド
レスに対応しているDtagが無効であるならば(25
0)、それは、別のデータプロセッサが、アドレス指定
されたデータブロックの無効を要求したトランザクショ
ンを実行したことを意味する。これが起こったときに、
書戻しトランザクションは、書戻し取消し(S_WBC
AN)応答メッセージを要求しているUPAポート(2
51)へ送り戻すことによりシステムコントローラによ
って取り消され、要求しているUPAポートにその書戻
しバッファ280の内容を無効にさせる(図9参照)。
【0067】書戻しトランザクションが取り消されなけ
れば(250)、システムコントローラは、要求してい
るUPAポートから主メモリ(252)までデータ経路
をセットアップし、かつデータブロックを主メモリへ供
給すべく要求しているデータプロセッサに指示する(2
53、254)、書込みブロック肯定応答メッセージ
(S_WAB)を、要求しているデータプロセッサ(2
53)へ送る。図8Dを参照すると、ほとんどの場合、
Dtag更新動作(216)は、Dtagルックアップ
動作中に読取られるのと同じDtagエントリに新しい
Dtag値を記憶する。しかしながら、読取り/書戻し
トランザクション対に関して二つの例外が存在する。書
戻しトランザクションに対するDtag更新動作を実行
するときに、要求しているプロセッサに対するDtag
非常駐バッファDtagTBが有効値を現在記憶してい
るならば(255)、それは、現行書戻しトランザクシ
ョンと対の読取りトランザクションが終了した(即ち、
それが書戻しトランザクションの前に終了した)ことを
意味する。その場合には、書戻しトランザクションの終
りで実行されたDtag更新動作(256)は、書戻し
要求のアドレスに対応しているDtagにDtagTB
の内容を転送する。DtagTBが有効値を現在記憶し
ていないならば(255)、それは、対になった読取り
トランザクションがまだ終了していないことを意味し、
その場合には、書戻しトランザクションに対するDta
g更新動作は、書戻し要求のアドレスに対応しているD
tagを無効にする(257)。
【0068】書戻しトランザクションが取り消されたと
きにDtagTB有効ビットがトゥルー(True)に
セットされたならば、Dtag更新動作は、そのままD
tagTBの内容を関連キャッシュラインDtagにコ
ピーするということに注目すべきである。全ての他のデ
ータプロセッサに対するDtagsは、書戻しトランザ
クションによって検査されないし変更もされない。読取
りトランザクションに対するDtag更新動作を実行す
るときに、DVP(汚染犠牲者保留(dirty victim pend
ing))ビットは、“1”にセットされ、かつ要求してい
るプロセッサに対するDtagsのルックアップは、対
応書戻しトランザクションがまだ保留中である(即ち、
アドレスデータブロックに対するDtag状態が1に等
しくない)ということを示すならば、アドレスデータブ
ロックに対する新しいDtag状態は、書戻しを待機し
ているDtag非常駐バッファ(DtagTB)に記憶
される(259a)。さもなければ、(即ち、アドレス
データブロックに対するDtag状態が1に等しいなら
ば)、書戻しトランザクションは、読取りトランザクシ
ョンより前に起こり、かつトランザクションによって生
成された新しいDtag値は、アドレス指定されたデー
タブロックに対するDtagの中に直接書込まれる(2
59b)。
【0069】読取り廃棄(ReadToDiscard) 動作がUPA
モジュールのキャッシュメモリの内容に影響を及ぼさな
いので、読取り廃棄(ReadToDiscard) トランザクション
に対するDtag更新動作は、存在しない。同様に、読
取り廃棄(ReadToDiscard) トランザクションがキャッシ
ュメモリにおいてデータブロックを変位(displace)しな
いので、DVPビットは、読取り廃棄(ReadToDiscard)
トランザクションにセットされるべきではない。図8A
及び図8Bを参照すると、別のUPAポートからの一般
的な非キャッシュ型スレーブ読取りシーケンスは、以下
の通りである。UPAマスタポートは、そのUPAアド
レスバス上の読取り要求(P_REQ)をシステムコン
トローラ110へ発行する(210,212)。アドレ
スをデコーディングしかつアドレスがコヒーレントドメ
インの中ではないということを決定した後、システムコ
ントローラ110は、(それに対してアービトレートし
た後)ターゲットUPAのUPAアドレスバス上のター
ゲット(アドレス指定された)UPAポートのスレーブ
インターフェイスへP_REQを進める(260)。要
求したデータが送信の準備ができているとき、ターゲッ
トUPAポートは、システムコントローラ110へP_
REPLYを発行する(261)。システムコントロー
ラ110は、ターゲットUPAポートから要求している
UPAポートまで相互接続モジュールにデータ経路をセ
ットアップし(262)、そのUPAデータバス上の要
求したデータを駆動するためにターゲットUPAポート
へS_REPLYを発行し、かつそのUPAデータバス
からデータを受け取るために要求しているUPAマスタ
ポート(263)へS_REPLYを発行する(26
4)。
【0070】別のUPAポートへの一般的な非キャッシ
ュ型スレーブ書込みシーケンスは、次の通りである。U
PAマスタポートは、そのUPAアドレスバス上の書込
み要求(P_REQ)をシステムコントローラ110へ
発行する(210、212)。アドレスをデコーディン
グしかつアドレスがコヒーレントドメインの中ではない
ということを決定した後(214)、システムコントロ
ーラ110は、(それに対してアービトレートした後)
そのポートのUPAアドレスバス上のアドレス指定され
たUPAポートへP_REQを進める(250)。シス
テムコントローラ110は、要求しているUPAポート
からターゲットUPAポートまで相互接続モジュール1
12にデータ経路をセットアップし(266)、そのU
PAデータバス上のデータを駆動するために要求してい
るマスタポートへS_REPLYを発行し、かつそのU
PAデータバスからデータを受け取るためにターゲット
ポートへS_REPLYを発行する(267)。要求し
ているマスタポートは、それがS_REPLYを受け取
りかつデータを転送したときにトランザクションが終了
したとみなす。しかしながら、ターゲットUPAポート
は、それが供給されたデータを処理することを終えたと
きにP_REPLYを発行し、P_REPLYがターゲ
ットUPAポートスレーブ入力要求及びデータキューに
おける顕著な要求のそのPReqCntカウントをシス
テムにディクリメントさせることができるのでフロー制
御の目的に対して重要である。
【0071】アドレス及びデータ経路が独立であり、か
つ全てのUPAポートに対するスレーブインターフェイ
スが要求及びデータ入力キューの両方を含むので、要求
パケット及び対応データは、UPAポートスレーブイン
ターフェイスへあらゆる順序で進められうる、即ち、ア
ドレスの前にデータをそれに付与することができるし、
その逆もできるということに注目すべきである。データ
が対応要求パケットの前にスレーブインターフェイスへ
運ばれるときに、運ばれたデータは、スレーブインター
フェイスがそれを処理する準備ができるまでスレーブイ
ンターフェイスの入力データキューに単に置かれる。ス
レーブインターフェイスがその入力キューからデータ及
びトランザクション要求をドレインしたときに、それ
は、別のスレーブトランザクションの準備ができている
ことを示しているシステムコントローラ110へP_R
EPLYを発行する。システムコントローラ110は、
この地点でトランザクション終了とみなす。フロー制御
は、供給している装置が(A)下流のキュー(queue dow
nstream)の最大の大きさを、前もって、常に知っており
かつ(B)後者のキューに残っている空間の計数を維持
することを確実にすることによって達成される。最大キ
ュー・サイズは、全てのUPAポートに対するUPAポ
ートIDレジスタ158及びシステムコントローラのS
C IDレジスタ180からのパワーオン(power-on)で
初期化ソフトウェアによって統計的に決定され、かつす
ぐ上流のキュー(queueimmediately upstream)に対する
フロー制御レジスタの中に書込まれる。システムコント
ローラのフロー制御レジスタは、(A)UPAポートI
Dレジスタのシステムコントローラのコピー193に記
憶されたキューサイズパラメータPREQ_RQ及びP
INT_RDQ、及び(B)SC Configレジス
タ190におけるIntCnt、PReqCnt及びS
ReqCntカウンタ194、195及び196であ
る。システムの他のフロー制御レジスタは、UPAポー
トのマスタインターフェイス150におけるレジスタ2
70、272である。特に、図5を参照すると、各UP
Aポート104の各マスタインターフェイス150は、
そのUPAポートに対するシステムコントローラにおけ
るC0及びC1マスタクラス要求キューの大きさを示す
二つのレジスタ270−0、270−1、及び二つのマ
スタクラス要求キューのそれぞれにおいて現在保留され
ている要求の数を示す二つのカウンタ272−0、27
2−1を含む。各UPAマスタポートに対するSC I
DレジスタSCIQ0、SCIQ0(183、184)
のキューサイズ値は、パワーオンで初期化ソフトウェア
によって各対応UPAポートマスタインターフェイスの
サイズレジスタ270の中にコピーされる。
【0072】各そのようなキューは、関連装置がエンキ
ューすることを欲しうる最大数の要求またはデータパケ
ットを取り扱うために十分に大きくなければならないと
いうことを除いて、データ及び要求出力キューに対する
指定サイズ制限または要求事項は、存在しない。更に、
出力データ及び要求キューの大きさは、フロー制御目的
に対してシステムの他の装置に関係ないので、それらの
大きさの値は、初期化ソフトウェアによってアクセスさ
れた構成レジスタにおいて示されていない。ソフトウェ
ア初期化の後、上流のキューは、すぐ下流のキューへ後
者のキューが有する容量よりも多くの要求を発行しな
い。システムコントローラ110からUPAポートへの
S_REPLYは、システムコントローラ110が対応
キューにおける更に一つの要求に対する空間をフリーに
したということをUPAポートに示し、かつそのキュー
に対する別のマスタ要求の準備を整える。UPAポート
からシステムコントローラ110へのP_REPLY
は、UPAスレーブポートがその対応キューにおける更
に一つの要求に対する空間をフリーにしたということを
システムコントローラ110に示し、かつ別のスレーブ
要求の準備を整える。
【0073】UPAポートのような、上流装置は、なん
らかの応答を待つことなく下流キューの最大容量まで一
連のトランザクションをすばやく連続して送信すること
ができ、そして下流キューへ追加の要求を送信する前に
少なくとも一つのS_REPLYまたはP_REPLY
を待つ(待機する)。フロー制御を図5に絵画的に示
す。システムコントローラ110入力要求キューSCI
Q0及びSCIQ1は、それぞれUPAマスタ要求クラ
スキューC0及びC1の下流である(逆に、C0及びC
1は、上流である)。同様に、UPAスレーブインター
フェイスの全てのキューは、システムコントローラ11
0の下流である。 キャッシュコヒーレンスモデル概要 本発明で用いられるキャッシュコヒーレンスプロトコル
は、二点間書込み無効である。それは、キャッシングU
PAマスタポートのキャッシュタグ(Etags)に保
持された5つの“MOESI”状態に基づく。(本発明
の別の実施例は、以下に説明するように、“反射メモ
リ”プロトコルを用いているシステムに対して4つの
“MESI”状態を用いる。)。キャッシュコヒーレン
スプロトコルは、物理的にインデックスされ物理的にタ
グされた(PIPT)キャッシュ上でだけ動作する。U
PAキャッシュコヒーレンスドメインは、物理的にアド
レス指定されたされたキャッシュによって境界を付けら
れる。一次レベルの仮想的にアドレス指定されたキャッ
シュは、もし存在するならば、UPAモジュールそれ自
体によってコヒーレントに維持されなければならない。
Etagキャッシュ状態は、次の通り(Etag状態遷
移に対して図10を参照): 無効(I):キャッシュインデックス及びキャッシュラ
イン内容が無効である。
【0074】共有クリーン(S):このEtagに対応
しているキャッシュラインに記憶されたデータブロック
は、(A)このキャッシュに結合されたデータプロセッ
サによって変更されず、かつ(B)一つ以上の他のキャ
ッシュメモリに記憶されうる。 排他的クリーン(E):このEtagに対応しているキ
ャッシュラインに記憶されたデータブロックは、このキ
ャッシュに結合されたデータプロセッサによって変更さ
れずかつ他のキャッシュメモリに記憶されない。 共有変更(O):このEtagに対応しているキャッシ
ュラインに記憶されたデータブロックは、このキャッシ
ュに結合されたデータプロセッサによって変更されかつ
一つ以上の他のキャッシュメモリに記憶されうる。 排他的変更(M):このEtagに対応しているキャッ
シュラインに記憶されたデータブロックは、このキャッ
シュに結合されたデータプロセッサによって変更されか
つ他のキャッシュメモリに記憶されない。 本発明の別の実施例では、“反射メモリ”プロトコルを
用いているシステムに対して、4つの“MESI”状態
だけが用いられる。O状態が必要でない理由は、反射メ
モリシステムでは、最初のデータプロセッサが、M(排
他的変更)状態における第2のデータプロセッサのキャ
ッシュによって記憶されたデータブロック上にキャッシ
ュミスを有するときにはいつでも、第2から第1のデー
タプロセッサにデータブロックをコピーするために実行
されたコピーバック動作は、変更されたデータブロック
を主メモリへコピーもするということである。普通のコ
ピーバック動作の場合には、トランザクションの終結
で、両方のデータプロセッサは、データブロックをS
(共有クリーン)状態に記憶する。コピーバック及び無
効動作の場合には、データブロックに対する要求してい
るデータプロセッサのEtagは、E(排他的クリー
ン)状態でありかつ他のデータプロセッサの対応Eta
gは、無効にされる。それゆえに、反射メモリマルチプ
ロセッサシステムでは、データブロックは、変更状態に
ある間中けっして共有されない。O状態の回避は、デー
タプロセッサにM→O遷移の代わりにM→S遷移を行わ
せる(S_CPB_REQの代わりに)S_CPB_M
SI_REQと称する特別のコピーバックトランザクシ
ョンの使用でシステムコントローラによってデータプロ
セッサに示される。
【0075】キャッシュコヒーレンスのユニットは、6
4バイトのブロックサイズである。コヒーレント読取り
/書込みトランザクションは、4つのクワッドワードを
用いて、64バイトブロックだけにデータを転送する。
最小または最大キャッシュサイズ要求事項は、存在しな
い。各キャッシングUPAマスタポートに存在するキャ
ッシュサイズは、システム初期化ソフトウェアによって
決定され、かつキャッシュインデックスのビットの数
は、システムコントローラのSC Configレジス
タ190におけるキャッシュインデックスマスク(CI
M)194の中に書込まれる。システムコントローラ1
10(SC)は、他のUPAポートからの共有または変
更されたデータブロックへの読取りまたは書込みアクセ
スに応じて指定UPAポートへコピーバック無効トラン
ザクションを送ることによってUPAマスタキャッシュ
上のキャッシュコヒーレンスを保持する。初めてデータ
ブロックがUPAポートによって参照されたとき、それ
は、書込み許可のための相互接続へ行くことなくそれが
直接それを続いて書込みことができるようにそのUPA
ポートに対して排他的に与えられる。別のUPAポート
からそのブロックへの後続の参照で、システムコントロ
ーラ110は、適切なコピーバック無効を第1のUPA
ポートへ送りかつ要求しているUPAポートへデータの
キャッシュ間転送を実行する。一般に、システムコント
ローラ110は、要求しているUPAマスタポートへ書
込み許可を与える前にデータの全ての他のコピーを無効
にすることによって記憶の排他的所有権を保証し、かつ
他のUPAマスタポートからの全ての後続の装填または
記憶は、どのマスタが記憶を最後に実行したかに関係な
くそのデータの最終値を常に調べる。
【0076】代替“性能”インプリメンテーションで
は、記憶を実行しているプロセッサは、全ての他のコピ
ーが無効にされる前でも先に進むことを許される。その
ような実施例では、他のプロセッサは、保留無効トラン
ザクションが作用するまで過渡的時間量(transient amo
unt of time)に対するそれらのキャッシュの古い値を調
べることを継続しうる。しかしながら、保留無効を有し
ているプロセッサからの全記憶ミスは、それらのプロセ
ッサにおける無効が終了するまで、終了することから相
互接続によって遅延されかつ防止される。この最適化に
おいて、システムコントローラは、全ての無効応答を待
たない(待機しない)。しかしながら、この最適化を用
いているときでさえも、記憶は、まだ排他的(即ち、一
度に一つのプロセッサだけがキャッシュブロックへ書込
むことができる)でありかつ二つのプロセッサから同じ
キャッシュブロックまでの二つの記憶の間に過渡的ステ
ール状態(transient stale state) が決して存在しな
い。図7及び図9を参照すると、本発明のキャッシュコ
ヒーレンスプロトコルは、システムコントローラ110
からUPAポートまでの顕著なコピーバック無効トラン
ザクションをUPAポート毎につき一つに制限し、かつ
コヒーレントキャッシュへの他の局所アクセスに対して
それに優先権を与えることによって高い優先度を有する
要求にサービスすることをUPAポートに要求する。
【0077】キャッシュコヒーレンスプロトコルは、書
戻しキャッシュを支持し、かつ顕著な汚染犠牲者(dirty
victim)書戻しトランザクションをUPAポート毎につ
き一つに制限する。書戻しが終了するまでコヒーレンス
ドメインに維持されることを要求される汚染犠牲者にな
ったライン(dirty victimized lines)をハンドリングす
るUPAポートを簡略化するために、キャッシュコヒー
レンスプロトコルは、書戻しが終了する前に汚染犠牲者
(dirty victim)が無効にされたならば、UPAマスタポ
ートに書戻しトランザクションをリトラクト(retract)
させない。その代わり、システムコントローラは、書戻
しトランザクションが現れるときに書戻しがアボートさ
れる(取り消される)ことが必要であるということを記
憶している責任をもたせる。代替の実施例では、多重書
戻しトランザクションは、プロセッサに多重書戻しバッ
ファを、かつシステムコントローラに同じ数のDtag
非常駐バッファを供給することによって支持される。同
じプロトコルは、複数の書戻しトランザクションに対し
て作動する。本実施例は、好ましいデータプロセッサが
複数の顕著なキャッシュミストランザクションを発行し
ないので、一つの顕著な書戻しだけを用いる。代替実施
例は、複数の顕著なキャッシュミスを用いるデータプロ
セッサに対する必要事項である。
【0078】マルチプロセッサシステムにおけるそのコ
ヒーレントキャッシュへのプロセッサの参照とのスヌー
プ干渉を回避するために、UPAポートのEtagsを
ミラーするタグ(Dtags)の重複セットを有してい
る重複キャッシュインデックス(Dtagインデックス
と呼ばれる)は、各キャッシングUPAマスタポートに
対してシステムコントローラ110によって保持され
る。Dtagsは、DtagsのE及びM状態が併合さ
れている、4つの“MOSI”キャッシュ状態を用い
る。Dtagsは、直接マップ型キャッシュメモリを支
持する。各Etagエントリに対して、そのEtags
へアクセスするプロセッサと干渉することなく、システ
ムコントローラ110によるDtags上のルックアッ
プがデータブロックに対する対応Etag状態を正確に
示すような、対応Etagエントリが存在する。Dta
g状態は、次の通り: 無効(I):キャッシュインデックス及びキャッシュラ
イン内容が無効である。 共有クリーン(S):このEtagに対応しているキャ
ッシュラインに記憶されたデータブロックは、(A)こ
のキャッシュに結合されたデータプロセッサによって変
更されておらず、かつ(B)一つ以上の他のキャッシュ
メモリに記憶されうる。
【0079】共有変更(O):このEtagに対応して
いるキャッシュラインに記憶されたデータブロックは、
このキャッシュに結合されたデータプロセッサによって
変更され、かつ一つ以上の他のキャッシュメモリに記憶
されうる。 排他的及び潜在的変更(M):このEtagに対応して
いるキャッシュラインに記憶されたデータブロックは、
このキャッシュに結合されたデータプロセッサによって
変更され、他のキャッシュメモリに記憶されない。 E状態がDtagsに用いられない理由は、次の通りで
ある。データプロセッサがキャッシュミスを有しかつ
“自分への読取り(read to own) ”トランザクション要
求を有するデータを要求するときに、データプロセッサ
のUPAポートは、要求したデータパケットを受け取り
かつそのEtag状態をMにセットすると同時に、対応
DtagもシステムコントローラによってM状態にセッ
トされる。それゆえに、システムコントローラは、デー
タプロセッサが、要求したデータブロックを変更しかつ
データブロックがデータプロセッサが要求したデータブ
ロックを変更するための機会を有する前でさえも変更さ
れたことを示しているキャッシュライン状態値を記憶す
るということを“想定する。”結果として、データプロ
セッサが P_RDO_REQトランザクション要求に
より受け取ったデータブロックを変更したときに、シス
テムコントローラの対応Dtagが、既にキャッシュラ
インをM状態にあるということを表わすので、それは、
システムコントローラへトランザクションを送る必要が
ない。更に、装填ミスがデータブロックを、E状態のE
tag及びM状態のDtagを有する要求しているデー
タプロセッサキャッシュに記憶させるときに、データプ
ロセッサは、Dtagが既にM状態(排他的変更)にあ
るのでそれがその後そのデータブロックを変更するなら
ば、システムコントローラへのトランザクション要求を
実行しない。E状態のDtagのM状態への併合は、こ
こで“第1の書込み(first write) ”最適化と呼ばれ、
かつそれは、各データプロセッサによって生成されなけ
ればならないトランザクションの数をかなり低減する。
【0080】上述したように、“反射メモリ”プロトコ
ルを用いているシステムでは、変更されたデータブロッ
クがけっして共有されないので、O状態は必要ない。結
果として、反射メモリマルチプロセッサシステムでは、
3つの“MSI”状態だけがDtagsに対して用いら
れる。I/O UPAポートによるキャッシングの支持
は、システムコントローラによって供給される。例え
ば、I/O UPAポートがNの完全連想キャッシュバ
ッファを有するならば、システムコントローラは、完全
連想Dtagsの対応する数を有する。I/O UPA
ポートのキャッシュメモリを支持するシステムコントロ
ーラは、I/O UPAポートに結合されたI/Oバス
及びI/Oに独立である。図9を参照すると、本発明
は、“汚染犠牲者(dirty victims) ”と呼ばれる、変位
されたキャッシュデータブロックの書戻しをハンドリン
グするための特別な機構を供給する。ここで、“汚染(d
irty) ”とは、変位サレタデータブロックがUPAポー
トに関連したデータプロセッサによって書込まれた変更
されたデータを有するということを意味し、“犠牲者(v
ictims) ”は、データプロセッサが、変位されているデ
ータブロックと同じキャッシュラインにマップする別の
データを参照するときのキャッシュデータブロックの変
位を意味する。本発明のキャッシュ書戻し機構は、書戻
しトランザクションに、汚染犠牲者によって前に占有さ
れていたキャッシュラインに新しいデータブロックを記
憶するトランザクションと独立にハンドルさせて、それ
により書戻しトランザクションに一般に関連する順序制
約を回避する。
【0081】図9は、プロセッサEtags132、プ
ロセッサの単一書戻しバッファ280、システムコント
ローラ110によりDtagアレーに保持される重複エ
ントリ、及び各キャッシングUPAマスタポートに対す
るシステムコントローラの内側のDtag非常駐バッフ
ァ(DtagTBs)を示す。DtagTBは、n+1
th Dtagエントリ(ここでnは、Etagアレー
のEtagエントリの数である)として作用(作動)
し、かつキャッシュミスがキャッシュから汚染ブロック
(dirty block) を変位するときに新しいキャッシュブロ
ックに対するDtag状態を一時的に保持する。キャッ
シュ充填(読取り)トランザクションは、キャッシュミ
ス・ペナルティを最小化するために汚染犠牲者書戻しと
は独立に実行される。読取りトランザクションが最初に
終了したならば、関連Dtag新状態情報は、Dtag
TBに記憶される。次に、汚染犠牲者ブロックに対する
書戻しトランザクション要求が終了しかつ書戻しトラン
ザクションに対するDtag更新動作が実行されるとき
に、DtagTBの内容は、そのプロセッサに対する関
連キャッシュラインのDtagエントリに転送される。
Dtag転送へのDtagTBは、Dtag更新動作で
ある。書戻しトランザクションがまず終了するならば、
DtagTBは、用いられない。
【0082】DtagTBに関連する有効ビットがセッ
トされるときにはいつでも、DtagTBは、Dtag
ルックアップ動作並びにDtag更新動作に含まれる。
例えば、キャッシュライン充填動作によって更新された
キャッシュラインが後続のトランザクションによって変
更または無効にされることは、おおいに可能であるが、
しかし対応書戻しトランザクションが実行される前であ
る。この理由により、DtagTBは、その有効ビット
がセットされかつ実行されているトランザクションが書
戻しトランザクションでない限り他のDtagエントリ
と同じように全ての点で扱われる(処理される)。上述
したように、書戻しトランザクションに対するDtag
更新動作は、DtagTBの内容を正規(標準)のDt
agアレーに転送させる。図9は、同じデータブロック
Aをキャッシュする二つのデータプロセッサ102−1
及び102−kを示す。プロセッサ1は、O状態(共有
変更)にブロックAを有し、プロセッサkは、S状態
(共有クリーン)に有する。プロセッサ1は、新しいデ
ータブロックBに対してブロックAを犠牲にし、かつメ
モリに書込むために汚染ブロックAをその書戻しバッフ
ァ280−1へ転送する。システムコントローラ110
は、DtagTB282−1にブロックBに対するDt
ag状態を保持し、バッファ282−1を有効とマーク
(印付け)し、かつ書戻しトランザクションを待つ。プ
ロセッサkもブロックBに対してブロックAを犠牲にす
るならば、ブロックBは、プロセッサkに対するEta
gs及びDtagsにおいてブロックAを単に上書きす
る;プロセッサkの書戻しバッファ及びDtagTB
は、プロセッサkの犠牲者キャッシュラインがクリーン
であるときにトランザクションに用いられない。
【0083】以下は、本発明のキャッシュコヒーレンス
プロトコル及び図9に示したような集中重複タグを用い
ているシステムに対する事象の例示シーケンスである。
図8を参照すると、UPAマスタポートは、それがUP
Aアドレスバスに対してアービトレートするのを欲して
いることを示すために要求信号をアサートする(共有U
PAアドレスバスが用いられることを想定して)。UP
Aマスタポートは、アービトレーションを結局獲得しか
つUPAアドレスバス上の要求パケットを駆動する(2
10)。システムコントローラ110は、要求を受け取
り(212)、要求パケットのトランザクション型及び
物理アドレスをデコード(復号)し、それがコヒーレン
ト読取りまたは書込みトランザクション要求であったな
らば(214)、システムコントローラは、全アドレス
を取りかつそれをルックアップ動作のためのスヌープパ
イプラインに置く(216)。トランザクションは、い
まアクティブと考慮され、かつ付随更新動作がこのトラ
ンザクションに対して終了しかつS_REPLYが要求
しているUPAマスタポートへ送られるまでアクティブ
のままである。トランザクションがアクティブである
間、システムコントローラ110は、同じキャッシュイ
ンデックスを有する新しく入ってくるトランザクション
をアクティブになることからブロックする。トランザク
ション・ブロッキングは、以下に記載する“トランザク
ション活性化”と題するこの文書の部分で詳述する。
【0084】コヒーレントトランザクションで指定され
たアドレスが主メモリの中にあるならば、システムコン
トローラもメモリサイクルを始動(開始)する(21
7)。指定したアドレスが主メモリの中にないならば、
コヒーレントトランザクションは、エラーで終了され
る。システムコントローラは、全てのDtagsからの
ルックアップの結果を統合し、かつ次のサイクルで読取
りトランザクションに対してどこからデータがくるのか
を決定する(222,223)。データが主メモリから
供給されるものであるならば、システムコントローラ
は、メモリサイクルを継続する。データが別のマスタU
PAポートキャッシュから供給されるものであるなら
ば、システムコントローラは、メモリサイクルをアボー
トし、かつ要求したキャッシュラインのコピーを有する
UPAポートの少なくとも一つへS_REQを送る(2
40)。供給しているUPAポートへ送ったS_REQ
の型が要求しているUPAポートからのP_REQの型
に依存しているならば:P_RDO_REQ要求に対し
て、供給しているUPAポートへ送られたS_REQ
は、S_CPI_REQである;P_RDS_REQま
たはP_RDSA_REQに対して、送られたS_RE
Qは、S_CPB_REQである;そしてP_RDD_
REQに対して、送られたS_REQは、S_CPD_
REQである。
【0085】要求しているUPAポートが指定したデー
タブロックの排他的所有権を要求しているならば(即
ち、要求がP_RDO_REQ要求である)、S_RE
Q無効要求が、要求したキャッシュラインのコピーを有
する全てのポートへ送られる。システムコントローラ
は、要求しているUPAポートへS_REPLYを生成
する前に、S_REQが送られたUPAポートからのP
_REPLYを待つ(246)。代替的に、システムコ
ントローラ110は、S_REQが送られた他のUPA
ポートからのP_REPLYを待つことなく、供給して
いるUPAポートからP_REPLYを受け取った後に
要求しているUPAポートへS_REPLYを生成する
ことができる。しかしながら、コヒーレント読取りトラ
ンザクションは、終了されず、かつシステムコントロー
ラは、S_REQが送られたUPAポートからの全ての
P_REPLYを受け取るまで、アクティブトランザク
ションのシステムコントローラの保留トランザクション
状態アレー200から除去される。この第2の方法は、
待ち時間を最小化するので好ましいインプリメンテーシ
ョンである。即ち、要求しているデータプロセッサは、
第2のキャッシュコヒーレンスプロトコルを用いるとき
に、要求したデータを早く受け取る。更に、キャッシュ
無効S_REQトランザクションは、要求しているUP
Aポートへのデータ転送と並列に実行されて、それによ
り利用可能なシステム資源の効率的使用を行う。
【0086】Dtagsは、ルックアップ動作において
マッチ(一致)を戻した全てのUPAポートに対して同
時に書込まれる。DtagsのMOSI状態ビットは、
新しい値で更新される。要求しているUPAポートへ転
送されるデータの準備が整ったときに、システムコント
ローラは、要求者(リクエスタ)UPAポートへ肯定応
答S_REPLYを送りデータは供給しているキャッシ
ュ、または主メモリからUPA_Databus上へ転
送される。アクティブトランザクションが書戻し要求で
あるならば、Dtagルックアップ及び更新は、UPA
データバス上のデータを駆動するか、または書戻しを取
り消すために、それへのS_REPLYを生成する前
に、要求しているマスタUPAポートに対してだけ実行
される。アクティブトランザクションが書込み−無効要
求であるならば、ルックアップ及び更新は、コヒーレン
ト読取り要求に対するのと同じ方法で実行される。シス
テムコントローラは、ルックアップ・マッチを有する全
てのUPAポートへ無効S_REQを送る。UPA_D
atabus上のデータを駆動するための要求している
マスタUPAポートへのS_REPLYは、無効のため
の全てのP_REPLY肯定応答が受け取られるまでオ
フのままに保持される。代替的に、システムコントロー
ラ110は、S_REQが送られた他のUPAポートか
らのP_REPLYを待つことなく、もしあれば、供給
しているUPAポートだけからP_REPLYを受け取
った後に要求しているUPAポートへS_REPLYを
生成することができる。しかしながら、コヒーレント書
込みトランザクションは、終了されず、かつシステムコ
ントローラがS_REQが送られた全てのUPAポート
から全てのP_REPLYを受け取るまでアクティブト
ランザクションのシステムコントローラの保留トランザ
クション状態アレー200から除去される。第2の方法
は、待ち時間を最小にするので好ましいインプリメンテ
ーションである。
【0087】順序制約 各UPAマスタ要求クラスからのトランザクションは、
マスタインターフェイス及びスレーブインターフェイス
の終端間で強く順序付けられる。この要求事項は、次の
制約を暗に示す:マスタクラスからの複数の顕著な要求
に対して、各要求に対するS_REPLYは、トランザ
クション要求がUPAマスタによって発行された順序と
同じ順序で(システムコントローラによって)マスタへ
付与される。例えば、T1,T2が、同じマスタクラス
からのマスタUPAポートによって発行された連続の読
取り及び書込みトランザクションであるならば、T1に
対するS_REPLYは、システムコントローラ110
がT1の前にT2を終了しえてもT2に対するS_RE
PLYの前にシステムコントローラ110によって発行
される。マスタクラスから異なるUPAポート(または
UPAスレーブポートに接続されたスレーブ装置)への
複数の顕著な書込み要求に対して、システムコントロー
ラ110は、後続のスレーブトランザクションを別のス
レーブUPAポートへ進める前に一つのスレーブUPA
ポートへ進められた全てのトランザクションに対するP
_REPLYを待つ。例えば、T1,T2がスレーブU
PAポートAへのマスタUPAポートによって発行され
た連続の書込みトランザクションであり、かつT3がス
レーブUPAポートBへの同じマスタによって発行され
た後続の書込みトランザクションであるならば、システ
ムコントローラ110は、T3をスレーブポートBへ進
める前にスレーブポートAからのT1及びT2に対する
P_REPLYを待つ。
【0088】マスタクラスから異なるUPAスレーブポ
ートへの複数の顕著な読取り要求に対して、システムコ
ントローラ110は、マスタが読取り要求を発行したの
と同じ順序で要求しているマスタUPAへのデータレデ
ィに対してS_REPLYを発行する。マスタクラスか
ら異なるスレーブUPAポートへの複数の顕著な読取り
要求に対して、スレーブUPAポートは、それあトラン
ザクションを受け取ったのと同じ順序でそれらに対して
(システムコントローラへ)P_REPLY肯定応答を
発行する。スレーブUPAポートは、スレーブ装置への
書込み終了を保証することができない。従って、UPA
ポートは、(例えば、それがI/Oバスに接続された装
置へ行くならば)書込みがその最後の宛先に到達する前
でもシステムコントローラへP_REPLYを発行する
ことができる。UPAスレーブポートは、I/O装置位
置(またはアドレスのインプリメンテーション指定範
囲)へのプログラムされた入力/出力(PIO)リード
アフターライト(read-after-write)は、I/O装置自体
がこれを支持する(即ち、アドレス指定された位置がメ
モリのようである)ならば最後に書込まれたデータを戻
すようにトランザクションの順序を保持するためにI/
Oバスインターフェイスを必要とする。
【0089】同じUPAポートからの異なるマスタクラ
スから発行されたトランザクション、または異なるUP
Aポートから発行されたトランザクションに対する順序
制約は、存在しない。マスタUPAポートにおいて二つ
のマスタ要求クラスの間で順序を保持すること(もし望
むならば)は、(トランザクションが相互接続へ発行さ
れる前に二つのクラスの間に導入された適切なインタロ
ックを有する)そのマスタの責任である。また、スレー
ブUPAポートは、異なるUPAマスタからの、または
同じUPAポートからの異なるマスタクラスからの、ト
ランザクションに対するP_REPLYを順序付けるこ
とを要求しない。好ましい実施例では、同期またはバリ
アトランザクションが存在しない。同期またはバリア
は、UPAモジュール上のプロセッサにより、かつUP
Aマスタポートインターフェイスからのトランザクショ
ンをランチング(開始)する前に処理されることが必要
である。本発明の好ましい実施例では、コヒーレント共
有アドレス空間(主メモリ)への参照は、相互接続が物
理的に一定の順序でない(即ち、相互接続において画定
された大域順序(global order)が存在しない)場合であ
っても、一定の順序で現れる。しかしながら、相互接続
は、各UPAポートへの記憶を排他性を保証する。ま
た、相互接続は、マルチプロセッサシステムにロックを
獲得するためのデッカーのアルゴリズムを作動すること
ができるべくトランザクション終了の正確な順序付けを
保証する。
【0090】I/O装置への参照は、一定の順序であ
る。スレーブUPAインターフェイスは、装置アドレス
によってトランザクションを順序付ける。同じI/O装
置(または所定のアドレス範囲)への全ての参照は、U
PAスレーブインターフェイスでそれらが到着するのと
同じ順序で終了することを要求される。しかしながら、
(バスブリッジのおけるような)同じUPAスレーブイ
ンターフェイスをハングオフしている(放っている:(h
anging off) )異なるI/O装置へ行く参照の順序付け
は、存在せず、UPAスレーブインターフェイスは、並
列で異なるI/O装置(または異なる所定のアドレス範
囲)へ行くトランザクションを実行することを許され
る。 トランザクションの詳述 好ましい実施例で画定されたUPAトランザクションの
セットは、UPAに基づくワークステーション及びサー
バプロダクトの必要性を効率的に支持するために特に設
計された。以下は、UPAトランザクションの主な要求
事項及び目標である:メモリシステム上の帯域幅及び待
ち時間要求事項を満足するために、主メモリへの読取り
/書込みは、64バイトブロックだけで実行される。メ
モリへの部分書込みやメモリへの読取り−変更−書込み
は、存在しない。
【0091】UPAプロセッサモジュールにおけるキャ
ッシュブロックサイズは、64バイトであり、キャッシ
ュ充填/書戻しを必要としかつ64バイトの大さきのデ
ータブロック上でキャッシュコヒーレンスを保持する。
中央相互接続プロセッサ(即ち、システムコントロー
ラ)による重複キャッシュタグ(Dtags)の使用
は、主メモリデータ上の原子ロックの必要を除去する
が、書戻し意味論、二点間データ転送意味論、及び命令
フェッチ(取出し)上の読取り専用ミスに対する意味論
に対する効率的な支持を必要とする。割込み意味論は、
割込み発生源(interrupting source) からの“不透明な
(opaque)”状態情報を画定するソフトウェアを送付する
ことを必要とし、信頼できる送付のための非ブロッキン
グエントリを有する64バイトの割込みパケットを必要
とする。UPA相互接続の特質により、トランザクショ
ンセットは、4つの構成素子のセットで構成される:P
_REQは、そのUPAアドレスバス上のマスタUPA
ポートによって生成されたトランザクション要求を意味
する。これが、システムにおける全てのデータ転送アク
ティビティを始動(開始)するものである。システムコ
ントローラは、P_REQトランザクション要求をUP
Aポートのスレーブインターフェイス(スレーブアクセ
スまたは割込みパケット)へ進めるか、または要求パケ
ットのアドレスがその管理されたアドレス空間(即ち主
メモリ)内に入るならばトランザクションそれ自体をサ
ービスするかのいずれかである。
【0092】S_REQは、あるP_REQに応じてコ
ピーバック−無効のためのキャッシングUPAポートの
スレーブインターフェイスに指向された、適切なUPA
アドレスバス上のシステムコントローラによって生成さ
れたトランザクション要求を意味する。P_REPLY
は、UPAポートからシステムコントローラまでの二点
間双方向ワイヤ上のUPAポートによって生成されたト
ランザクション肯定応答を意味する。システムコントロ
ーラからの先のS_REQトランザクションに応じて、
またはシステムコントローラによる先のP_REQスレ
ーブアドレス空間トランザクションの前進により生成さ
れる。S_REPLYは、システムコントローラからU
PAポートまでの二点間双方向ワイヤ上のシステムコン
トローラによって生成されたトランザクション肯定応答
を意味する。S_REPLYメッセージは、UPAポー
トからのP_REQまたはP_REPLYに応じて生成
される。図10Aは、コヒーレントP_REQ及びS_
REQトランザクション要求パケットに対するデータパ
ケットフォーマットを示す。図10Bは、非キャッシュ
型P_REQトランザクション要求パケットに対するデ
ータパケットフォーマットを示す。図10Cは、割込み
P_INT_REQトランザクション要求パケットに対
するデータパケットフォーマットを示す。これらの図
は、以下の説明で参照される。
【0093】トランザクションセットまとめが表3に示
されている。表4及び5は、UPAマスタ及びスレーブ
インターフェイスに対する正当な要求/応答組合せをそ
れぞれ指定する。表6は、キャッシングUPAマスタポ
ートに対する種々の事象により使用するトランザクショ
ンの型を指定する。
【0094】
【表7】
【0095】
【表8】
【0096】
【表9】
【0097】
【表10】 キャッシュコヒーレントトランザクション キャッシュコヒーレントトランザクションは、キャッシ
ュ可能な主メモリアドレス空間をアクセスするために発
行されたトランザクションである。これらのトランザク
ションの多くは、要求しているUPAマスタポートのE
tag及びDtagキャッシュ状態並びに他のUPAマ
スタポートのEtag及びDtag状態を変更する。キ
ャッシュ状態遷移は、“キャッシュコヒーレンスプロト
コル”と題されたこの文書の部分で詳述される。以下
は、画定されたキャッシュコヒーレントトランザクショ
ンのそれぞれの詳述である。 ReadToShare(P_RDS_REQ) 共有トランザクションへのコヒーレント読取りは、関連
UPAモジュールのデータプロセッサが、そのアドレス
が局所キャッシュメモリに記憶されていない、指定され
たアドレスからデータを装填(load)することを試みると
きにUPAマスタポートによってシステムコントローラ
へ送られる。これは、“装填ミス”と呼ばれる。
【0098】他のキャッシュが要求したデータを有して
いないならば、要求したデータに対するEtag状態
は、Eへ遷移し、関連Dtag状態は、Mへ遷移する。
これは、別の相互接続トランザクションを生成すること
なくこのデータを後で書込むためにキャッシングUPA
マスタへの排他的アクセスを与える。他のキャッシュも
このデータを有するならば、要求しているUPAポート
の要求したデータに対するEtag及びDtag状態の
両方ともSへ遷移する。データが別のキャッシュから供
給されるならば、システムコントローラは、供給してい
るUPAポートにS_CPB_REQコピーバックトラ
ンザクション要求を送り、かつP_SACKまたはP_
SACKD応答を待つ。P_REPLYを受け取ったと
きに、システムコントローラは、それにS_CRAB応
答メッセージを送ることによって要求したデータブロッ
クを送るべく供給しているキャッシュに指令する。供給
しているUPAポートは、まずアドレス指定されたクワ
ッドワードを供給し、上記の表2に示したように後続の
クワッドワードに対して下位の物理アドレスビットPA
[5:4]に基づいて16バイトとして(modulo 16 byt
es) ラップしなければならない。受容UPAポートは、
この順序で送付されるデータを必要とする。これは、全
てのデータ転送トランザクションに対して真(true)であ
り、それゆえに反復しない。
【0099】システムコントローラは、別のキャッシュ
もそれを共有するならばS_RBS(読取りブロック共
有)応答メッセージで要求しているマスタUPAポート
へデータを供給し、他のキャッシュがそれを持っていな
いならばS_RBU(読取りブロック非共有)応答メッ
セージで要求しているマスタUPAポートへデータを供
給する。このトランザクションがキャッシュの汚染犠牲
者ブロックを変位する(Etag状態がMまたはO)な
らば、汚染犠牲者保留(DVP)ビットは、要求パケッ
トにセットされなけらばならない(図10Aのパケット
フォーマット参照)。システムコントローラは、マスタ
ポートのトランザクション要求におけるアドレスがアン
インプリメントされた主メモリに対してであるならば、
要求しているUPAマスタポートへS_RTO(タイム
アウト)応答メッセージを発行し、アドレスが非キャッ
シュ可能アドレス空間にあるならばS_ERR(バスエ
ラー)を発行して、パリティエラーが検出されたならば
システムをリセットさせる。UPAスレーブポートがシ
ステムコントローラからこのトランザクションを受け取
るならば、それは、システムコントローラにおける致命
的ハードウェア障害だけによるものでありうる。UPA
スレーブポートは、いかなるP_REPLYを発行する
ことを必要とせず、かつシステムを結局ハング(停止)
する、トランザクションを無視することができる。
【0100】ReadToShareAlways(P
_RDSA_REQ) 共有常時トランザクションへのコヒーレント読取りは、
命令装填(instructionload)上のミスのような読取り専
用ミス(即ち、読取り専用アドレス位置の読取り上のキ
ャッシュミス)によりシステムコントローラ110へU
PAマスタによって送られる。このトランザクション
は、要求しているマスタUPAポートのEtag及びD
tagが常にS(共有クリーン)へ遷移し、かつシステ
ムコントローラがS_RBS応答(読取りブロック共有
肯定応答)でデータを供給することを除いて、上述した
ReadToShareトランザクションと同じであ
る。このトランザクションがキャッシュの汚染犠牲者ブ
ロックを変位する(即ち、関連キャッシュラインのEt
ag状態がMまたはO)ならば、汚染犠牲者保留(DV
P)ビットは、要求パケットにセットされなければなら
ない(図10Aのパケットフォーマットを参照)。Re
adToShareAlwaysトランザクションは、
ミスされたデータが読取り専用(命令キャッシュミスに
おけるような)ということが、先に、知られておりかつ
変更されないときの場合に対する最適化である。従っ
て、このデータは、どれもそれを有していないときでも
共有クリーン(S)状態における相互接続によって常に
リターンされる。結果として、別のプロセッサが同じア
ドレスを読取り、そのプロセッサにおいてキャッシュミ
スをもたらすならば、ミスされたデータは、主メモリに
よって供給され、既に同じデータを有するキャッシュに
よってではない。これは、それが主メモリから供給され
るべきときに、データがUPAポートのキャッシュメモ
リから供給されるときに発生する“第2の読取りペナル
ティ”を回避する。
【0101】それが主メモリから供給されるべきときの
UPAポートのキャッシュメモリからのデータの供給
は、UPAポートのキャッシュメモリからのデータを供
給することは、その関連データプロセッサによるそのキ
ャッシュメモリの使用とインターフェア(干渉)するの
で、“第2の読取りペナルティ”と呼ばれる。好ましい
実施例では、コピーバックトランザクションは、そのキ
ャッシュメモリへのデータプロセッサ要求に対して優先
度を有し、それゆえに相互接続による不要なキャッシュ
読取りは、2〜3のクロックサイクルに対して関連デー
タプロセッサの動作を一般に遅延する。ReadToS
hareAlwaysトランザクションに対するエラー
ハンドリングは、ReadToShareトランザクシ
ョンに対するものと同じである。 ReadToOwn(P_RDO_REQ) コヒーレント読取り無効トランザクションは、記憶ミ
ス、または共有ライン上の記憶ヒット、または部分書込
みを併合するための書込きを意図した読取りによりシス
テムコントローラへUPAマスタによって送られる。
【0102】このトランザクションは、アドレス指定さ
れたデータブロックに対するEtag及びDtagにM
への両方の遷移をもたらす(排他的変更)。UPAマス
タがアドレス指定されたデータブロックを有さず、かつ
一つ以上の他のキャッシュがブロックを有するならば、
メモリサイクルは、アボートされる。システムコントロ
ーラは、一つのUPAポートにコピーバック−及び−無
効に対するS_CPI_REQ要求を送り、かつ全ての
他のUPAポートに(S_INV_REQ)無効要求を
送る。システムコントローラは、S_REQ要求が送ら
れた全てのUPAポートからのP_SACKまたはP_
SACKD応答を待つ。全てのP_REPLYを受け取
った後、システムコントローラは、S_RBU応答で要
求しているUPAポートへデータを供給する。代替実施
例では、システムコントローラ110は、S_REQが
送られた他のUPAポートからのP_REPLYを待つ
ことなく、もしあれば、供給しているUPAポートから
P_REPLYだけを受け取った後に要求しているUP
AポートへS_REPLYを生成する。しかしながら、
コヒーレント読取りトランザクションは、終了されず、
かつシステムコントローラがS_REQが送られた全て
のUPAポートから全てのP_REPLYを受け取るま
でアクティブトランザクションのシステムコントローラ
の保留トランザクション状態アレー200から除去され
る。
【0103】UPAマスタが共有されたかまたは所有さ
れた状態でブロックを既に有しかつそれがそれを書込む
ことができるように排他的所有権を欲するならば(即
ち、SまたはO状態におけるライン上の記憶ヒット)、
データは転送されずかつシステムコントローラは、アド
レス指定されたデータブロックをも記憶する全ての他の
キャッシングUPAマスタポートへ無効要求を送る。シ
ステムコントローラは、それがこのブロックを共有する
全ての他のUPAポートからP_SACKまたはP_S
ACKD応答を受け取った後にS_OAK(排他的所有
権肯定応答)応答で要求しているUPAポートへ応答す
る。代替実施例では、S_OAK応答は、アドレス指定
されたデータブロックを共有する他のUPAポートへ無
効要求が送られた直後にシステムコントローラによって
要求しているUPAポートへ送られるが、しかしトラン
ザクションは、終了されず、かつシステムコントローラ
が無効要求が送られた全てのUPAポートからP_RE
PLYを受け取るまでアクティブトランザクションのシ
ステムコントローラの保留トランザクション状態アレー
200から除去される。更に、無効要求を受け取る各プ
ロセッサは、無効トランザクションが終了されるまでそ
のプロセッサによって連続的に始動(起動)されるあら
ゆるトランザクションを終了することを防ぐ。
【0104】このトランザクションがキャッシュにおけ
る汚染犠牲者ブロックを変位するならば(即ち、Eta
g状態がMまたはOである)、汚染犠牲者保留(PV
D)ビットは、要求パケットにセットされなければなら
ない(図10Aに示したパケットフォーマットを参
照)。システムコントローラは、Dtagsをスヌープ
することによってデータを転送するか否かを決定する。
ReadToOwnトランザクションに対するエラーハ
ンドリングは、ReadToShareトランザクショ
ンに対するものと同じである。 ReadToDiscard(P_RDD_REQ) 最初の使用トランザクションの後に廃棄することを意図
したコヒーレント読取りは、要求しているUPAポート
に関連したデータプロセッサがそのキャッシュを汚染す
ることを欲せずかつ一つの使用の後でデータを廃棄する
ときにシステムコントローラへUPAマスタによって送
られる。このトランザクションは、Bcopy(ブロッ
クコピー)動作に対するレジスタのコヒーレントDVM
A読取り、及びブロック装填におけるようにコヒーレン
トドメインからデータを取るためにも用いられる。
【0105】このトランザクションは、いずれのDta
gまたはEtagエントリも変えない。このトランザク
ションは、(MまたはO状態の)所有しているキャッシ
ュから、または主メモリからの非破壊読取りをもたら
す。供給している装置が要求したデータを送る準備が整
ったときに、システムコントローラは、要求しているマ
スタUPAポートへS_REPLYを送ることによって
データ転送をイネーブルする。トランザクション要求パ
ケットのDVPビットは、このトランザクションに対し
てシステムコントローラによって無視される。Read
ToOwnトランザクションは、ReadToShar
eトランザクションに対するものと同じである。 Writeback(P_WRB_REQ) 書戻しトランザクション要求は、そのホーム位置へ汚染
犠牲になったブロックを書戻すためにシステムコントロ
ーラへUPAマスタによって送られる。書戻し要求と対
になった同じキャッシュインデックス上に(DVPビッ
トセットを有する)コヒーレント犠牲読取りトランザク
ション要求が常に存在する。影響を及ぼされたキャッシ
ュラインに対するEtag及びDtag状態遷移は、書
戻しが最初に実行されるか、またはラインを犠牲にする
コヒーレント読取りが最初に実行されるかに依存する。
【0106】書戻しトランザクション要求が最初に実行
されたならば、書戻しトランザクションが実行されると
きにEtag及びDtag状態の両方ともI(無効)へ
遷移する。読取りトランザクション要求が実行されると
きには、Etag及びDtag状態は、I状態から読取
りデータブロックに関連した状態へ遷移する。書戻しト
ランザクションが最後に実行されたならば、読取りトラ
ンザクションが実行されたときにEtagは、その新し
い状態へ遷移しかつ対応Dtag状態は、DTag非常
駐バッファ282に記憶される。そして、書戻しトラン
ザクションが実行されるときに、Etagは、変化しな
いが、DTag非常駐バッファ282に一時的に記憶さ
れたDtagは、読取りデータブロックに関連したDt
agにコピーされる。(別のUPAポートからのP_R
DO_REQまたはP_WRI_REQトランザクショ
ンにより)犠牲になったデータに対する介入無効(inter
vening invalidation)(S_CPI_REQまたはS_
INV_REQ)により書戻しが取り消されるならば、
データは、書込まれずかつシステムコントローラは、S
_WBCAN応答で書戻しを取り消す。書戻し取消し
は、“書戻し取消し”と題されたこの文書の部分に以下
で説明される。
【0107】書戻しが取り消されなければ、システムコ
ントローラは、UPAデータバス上へ64バイトバウン
ダリ(境界)(A[5:4]=0×0)上で位置合わせ
されたデータの64バイトブロックを駆動すべく要求し
ているマスタUPAポートを促す、要求しているマスタ
オUPAポートへS_WABを発行する。一つの顕著な
書戻しだけが各UPAポートから許される。書戻しトラ
ンザクション及び(DVPセットを有する)その付随読
取りトランザクションは、第2の書戻し及びその付随読
取りをUPAポートによって発行することができる前に
両方とも終了しなければならない(システムコントロー
ラから対応S_REPLYを受け取る)。書戻し要求
は、(DVPビットセットを有する)読取り要求と常に
対をなすので、読取りがエラーで終了されたとしても、
書戻しは、読取りが発行されたならば常に発行されなけ
ればならないし、その逆もしかり。書戻しトランザクシ
ョンのアドレスがアンインプリメントされた主メモリに
対するものであるならば、システムコントローラは、こ
の条件が不当であるなら何もせずかつ通常の動作下では
発生することができない。それが発生したならば、それ
は、UPAモジュールの致命的ハードウェア障害だけに
よることができかつ最終的にシステムを停止する(han
g)。システムコントローラは、それがパリティエラーを
検出したならばシステムリセットをもたらす。
【0108】UPAポートの非キャッシュ型スレーブア
ドレス空間に指向されたP_WRB_REQトランザク
ションは、不当でありかつ通常の動作下で発生すること
ができずかつプログラミングエラーによって発生される
こともできない。マスタUPAポートがあらゆる非キャ
ッシュ可能空間へP_WRB_REQを発行したなら
ば、システムコントローラは、トランザクションを終了
せずかつシステムを停止する。UPAスレーブポートが
システムコントローラからP_WRB_REQトランザ
クションを受け取ったならば、それは、システムコント
ローラの致命的ハードウェア障害だけによることができ
る。UPAスレーブポートは、P_REPLYを発行す
ることを必要とせずかつトランザクションを無視するこ
とができ、最終的にシステムを停止する。 WriteInvalidate(P_WRI_RE
Q) コヒーレント書込み及び無効要求は、そのホーム位置へ
データブロックをコヒーレントに書込むためにシステム
コントローラへUPAマスタによって送られる。このト
ランザクションは、コヒーレントDVMA書込み応答メ
ッセージよBcopyブロック記憶に用いられかつ新し
いデータをコヒーレントドメインに注入するために役立
つ。この要求に関連した犠牲者読取りトランザクション
は、存在しない。
【0109】アドレス指定されたデータブロックに関連
したEtag及びDtagの両方は、Iに遷移する。要
求しているUPAポートからデータを受け入れる前に、
システムコントローラは、S_REQをそれらのUPA
ポートへ送ることによって、要求しているUPAポート
を含んでいる、全てのキャッシュにおけるデータブロッ
クの全てのコピーを無効にし、かつそれらの全てからの
P_REPLYを待つ。全ての無効が肯定応答された
後、システムコントローラは、UPA_Databus
上へ64バイトバウンダリー(A[5:4]=0×0)
上に位置合わせされたデータの64バイトブロックを駆
動すべくマスタUPAポートを促すためにマスタUPA
ポートへS_WABを発行する。代替的に、システムコ
ントローラは、無効要求を送ることができるが、しかし
要求しているマスタUPAポートへS_WABトランザ
クション要求を発行する前に対応P_REPLYを待た
ない。しかしながら、コヒーレント書込みトランザクシ
ョンは、終了されずかつシステムコントローラが、S_
REQ無効要求が送られた全てのUPAポートからの全
てのP_REPLYを受け取るまでアクティブトランザ
クションのシステムコントローラの保留トランザクショ
ン状態アレー200から除去される。更に、無効要求を
受け取る各プロセッサは、無効トランザクションが終了
されるまでそのプロセッサによって後続して始動(開
始)されたあらゆるトランザクションが終了することを
防ぐ。
【0110】インバリデート・ミー・アドバイザリ・ビ
ット(Invalidate meAdvisory
bit(IVA))は、Dtagsなしでインプリメン
トされるシステムで使用するP_WRI_REQトラン
ザクションパケットで画定される。要求しているUPA
マスタは、それにS_INV_REQトランザクション
も送ることをシステムコントローラに欲するならば、こ
のビットをセットする。システムコントローラは、IV
Aビットがセットされたならば要求しているUPAポー
トへS_INV_REQトランザクションを送るために
Dtagsを有さないシステムでこのビットを用いる。
システムコントローラは、Dtagsを有するシステム
でこのビットを無視し、かつどのUPAポートへS_I
NV_REQを送るかを決定するためにDtagsを用
いる。複数のWriteInvalidateトランザ
クションは、システムコントローラがトランザクション
要求を記憶するためにその要求受取りキュー(requestre
ceiving queue) C0またはC1に十分な空間を有する
かぎりマスタUPAポートによって連続で発行すること
ができる。システムコントローラは、アドレスがアンイ
ンプリメントされた主メモリに対するものであるならば
(S_WAB応答を付与した後に)データを言及せずに
廃棄し、かつパリティエラーが検出されたならばシステ
ムリセットをもたらす。
【0111】UPAポートの非キャッシュ型スレーブア
ドレス空間に指向されたP_WRI_REQトランザク
ションは、マスタUPAポートへS_WAB応答を送る
ことによってシステムコントローラによって終了され
が、しかしトランザクション及びそのデータは、言及せ
ずに廃棄される。このエラーは、プログラミング・エラ
ーにより発生しうるし、その結果システムによって検出
されかつ回復される。そのようなエラーは、システムコ
ントローラによってログされうる。UPAスレーブポー
トがシステムコントローラからこのトランザクションを
受け取るならば、それは、システムコントローラにおけ
る致命的なハードウェア障害によるだけであることが可
能である。UPAスレーブポートは、P_REPLYを
発行するために必要ではなくかつトランザクションを無
視することができ、最終的にシステムを停止する。 Invalidate(S_INV_REQ) キャッシングUPAポートのスレーブインターフェイス
へシステムコントローラによって送られた無効要求は、
データブロックに対するReadToOwn(P_RD
O_REQ)またはWriteInvalidate
(P_WRI_REQ)要求をサービスするためにシス
テムコントローラによって生成される。アドレス指定さ
れたデータブロックに関連するEtag及びDtagの
両方は、Iへ遷移する。
【0112】P_RDO_REQトランザクションをサ
ービスするために、システムコントローラは、次の規則
に従ってUPAポートへ無効要求を送る。一つのUPA
ポートだけがデータを有するならば、S_INV_RE
Qは、それに送られず、代わりに、コピーバック−無効
要求(S_CPI_REQ)がデータを供給及び無効に
するためにその一つのUPAポートへ送られる。一つよ
りも多くのUPAポートがデータ(DtagがSまたは
O状態である)を有するならば、S_CPI_REQト
ランザクション要求は、それらUPAポートの一つへ送
られかつ無効要求(S_INV_REQ)は、全ての他
のものへ送られる。P_WRI_REQトランザクショ
ンをサービスするために、システムコントローラは、要
求しているUPAポートを含んでいる、そのDtag状
態がMまたはOまたはSである全てのUPAポートへ無
効要求を送る。Dtagsなしのシステムでは、P_W
RI_REQトランザクションパケットのInvali
date me Advisory bit(IVA)
は、要求しているUPAポートへS_INV_REQを
送るか否かをシステムコントローラに指定する。IVA
ビットは、要求しているUPAポートへの誤り無効(fal
se invalidations) を回避するためにDtagsを有さ
ないシステムにおいてスヌープフィルタとして作用す
る。システムコントローラは、Dtagsを有するシス
テムにおいてこのビットを無視し、かつどのUPAポー
トへS_INV_REQを送るべきかを決定するために
Dtagsを用いる。
【0113】システムコントローラは、要求しているマ
スタUPAポートへ適切なS_REPLYを発行する前
にP_SACKまたはP_SACKD応答を待つ。この
トランザクションは、ブロックがそのキャッシュに存在
しないならばP_SNACK応答を有するUPAポート
によってNACKすることができる。S_INV_RE
Q無効トランザクションを受け取っているUPAポート
が(そのポートIDレジスタによって指定されたよう
な)キャッシュマスタでないならば、それは、システム
コントローラにおける致命的ハードウェア障害によるだ
けであることができる。UPAポートは、P_REPL
Yを発行することを必要とせずかつトランザクションを
無視することができ、最終的にシステムを停止する。し
かしながら、キャッシュマスタUPAポートは、それを
終了するためにこのトランザクションに対する有効P_
REPLYを発行しなければならない。UPAスレーブ
ポートがパリティエラーを検出したならば、それは、P
_FERRをアサートし、システムコントローラにシス
テムリセットを生成させる。 Copyback(S_CPB_REQ) キャッシングUPAポートのスレーブインターフェイス
へのシステムコントローラからのコピーバック要求は、
ブロックに対するReadToShare(P_RDS
_REQ)またはReadToShareAlways
(P_RDSA_REQ)要求をサービスするためにシ
ステムコントローラによって生成される。アドレス指定
されたデータブロックに関連したDtag及びEtag
の最終状態は、OまたはSである。
【0114】システムコントローラは、次の規則に従っ
て一つのUPAポートへS_CPB_REQトランザク
ションを送る。S_CPB_REQは、MまたはOのD
tag状態を有するUPAポートへ送られる。S_CP
B_REQ要求は、要求しているUPAポートへ送るこ
とができない。システムコントローラは、UPAポート
からのP_SACKまたはP_SACKD応答を待つ。
NDP(No Dtag Present)ビットがS
_REQでセットされない限り、このS_REQは、U
PAポートがブロックを有していないならばP_SNA
CK応答でNACKされることができない。P_SNA
CK応答は、NDPビットがセットされないならば致命
的エラーとしてシステムコントローラによって処理され
る。P_REPLYを受け取った後、システムコントロ
ーラは、UPA_Databus上のデータを駆動する
ために供給しているUPAポートを促すべく供給してい
るUPAポートへS_CRAB応答を発行し、かつ要求
しているマスタUPAポートへS_RBS応答を発行す
る。供給しているUPAポートは、まずアドレス指定さ
れたクワッドワードをコピーバックして、後続クワッド
ワードに対してA[5:4]のまわりにラッピングする
ために必要である。
【0115】コピーバックトランザクションに対するエ
ラーハンドリングは、無効トランザクションに対するも
のと同じである。UPAスレーブポートがデータエラー
を検出したならば、それは、マスタがアンコレクタブル
ECCエラーを検出しうるようにUPA_Databu
s上の無効チェックビットを駆動しなければならない。
無効、またはアンインプリメントされたアドレスは、シ
ステムコントローラがS_ERRで対応P_REQトラ
ンザクションを終了するので、S_REQで決して送ら
れない。 Copyback(S_CPB_MSI_REQ) S_CPB_MSI_REQコピーバック要求は、以下
のことを除いてS_CPB_REQコピーバック要求と
同じである:(A)S_CPB_MSI_REQは、反
射メモリを有しているシステムでのみ用いられ、(B)
要求しているUPAポートへ書込まれたデータブロック
は、主メモリへも書込まれ、(C)Etags及びDt
agsの両方とも、S_CPB_MSI_REQトラン
ザクション要求に応じてM→S遷移を行う。O状態は、
反射メモリを有しているシステムでは用いられない、そ
れゆえに3つのリーガルDtag状態:M,S及びIと
4つのリーガルEtag状態:M,E,S及びIだけが
存在する。
【0116】CopybackInvalidate
(S_CPI_REQ) コピーバック及び無効要求は、データブロックに対する
ReadToOwn(P_RDO_REQ)要求をサー
ビスするためにキャッシングUPAポートのスレーブイ
ンターフェイスへシステムコントローラによって送られ
る。アドレス指定されたデータブロックと関連したEt
ag及びDtagの両方は、Iへ遷移する。システムコ
ントローラは、以下の規則に従って一つのUPAポート
へS_CPI_REQトランザクションを送る。S_C
PI_REQトランザクション要求は、M,OまたはS
のDtag状態を有する一つだけのUPAポートへ送ら
れる。S_CPI_REQは、要求しているUPAポー
トへ送ることができない。システムコントローラは、S
_CPI_REQ要求が送られたUPAポートからのP
_SACKまたはP_SACKD応答を待つ。NDS
(No DtagPresent)ビットがS_REQ
にセットされない限りこのS_REQは、UPAポート
がブロックを有さないならばP_SNACK応答でNA
CKされることができない。NDPビットがセットされ
ていないならばP_SNACK応答は致命的エラーとし
てシステムコントローラによって処理される。
【0117】UPAポート(並びに無効が送られた他の
UPAポート)からのP_REPLYを受け取った後、
システムコントローラは、データをUPAデータバス上
に駆動するために供給しているUPAポートを促すべく
供給しているUPAポートへS_CRAB応答を発行
し、かつ要求しているマスタUPAポートへS_RBU
応答を発行する。供給しているUPAポートは、まずア
ドレス指定されたクワッドワードをコピーバックし、後
続クワッドワードに対してA[5:4]のまわりをラッ
ピングすることを必要とする。CopybackInv
alidateトランザクションに対するエラーハンド
リングは、Copybackトランザクションに対する
ものと同じである。 CopybackToDiscard(S_CPD_R
EQ) 非破壊的コピーバック要求は、データブロックに対する
ReadToDiscard(P_RDD_REQ)要
求をサービスするためにキャッシングマスタUPAポー
トのスレーブインターフェイスへシステムコントローラ
によって送られる。このトランザクションは、アドレス
指定されたデータブロックと関連したEtag及びDt
agにおける状態変化をもたらさない。
【0118】システムコントローラは、以下の規則に従
って一つのUPAポートへS_CPD_REQトランザ
クションを送る。S_CPD_REQ要求は、Mまたは
OのDtag状態を有する一つだけのUPAポートへ送
られる。S_CPD_REQは、要求しているUPAポ
ートへ送ることができない。システムコントローラは、
S_CPD_REQが送られたUPAポートからのP_
SACKまたはP_SACKD応答を待つ。NDS(N
o Dtag Present)ビットがS_REQに
セットされない限りこの要求は、UPAポートがブロッ
クを有さないならばP_SNACK応答でNACKされ
ることができない。NDPビットがセットされていない
ならばP_SNACK応答は致命的エラーとしてシステ
ムコントローラによって処理される。P_REPLYを
受け取った後、システムコントローラは、要求したデー
タをUPAデータバス上に駆動するために供給している
UPAポートを促すべく供給しているUPAポートへS
_CRAB応答を発行し、かつ要求しているマスタUP
AポートへS_RBS応答を発行する。供給しているU
PAポートは、まずアドレス指定されたクワッドワード
をコピーバックし、後続クワッドワードに対してA
[5:4]のまわりをラッピングすることを必要とす
る。
【0119】CopybackToDiscardトラ
ンザクションに対するエラーハンドリングは、Copy
backトランザクションに対するものと同じである。 Non−Cached Dataトランザクション 非キャッシュ型データトランザクションは、非キャッシ
ュ型アドレス空間へ発行されたトランザクションであ
る。これらのトランザクションに対しては、スヌーピン
グルックアップ動作は、実行されず、これらのトランザ
クションからのデータは、リクエスタによってキャッシ
ュされず、かつシステムコントローラによってアドレス
ブロッキングが実行されない。 NonCachedRead(P_NCRD_REQ) 非キャッシュ型読取りトランザクション要求は、システ
ムレジスタ及び他のスレーブUPAポートのスレーブア
ドレス空間を含んでいる、非キャッシュ型アドレス空間
のデータを読取るためにUPAマスタポートによって生
成される。1,2,4,8,または16バイトがこのト
ランザクションで読取られ、かつバイト位置がバイトマ
スクで指定される。トランザクション要求で指定された
アドレスは、16バイトバウンダリー上に位置合わせさ
れる。
【0120】任意のバイトマスクは、読取りに対して許
されず、かつスレーブは、読取りバイトマスクが正しく
ないならば(P_RERRで)エラーを示すべきであ
る。主メモリは、このトランザクションで読取ることが
できない。システムコントローラは、要求パケットのア
ドレスを復号する。それがシステムコントローラによっ
て管理されたアドレス空間に入るアドレスであるなら
ば、システムコントローラは、UPAデータバス上のデ
ータを駆動する。アドレスがUPAポートのスレーブイ
ンターフェイスに対するものであるならば、システムコ
ントローラは、データを供給するためにUPAポートス
レーブインターフェイスへこのトランザクションを進め
てかつP_REPLYを待つ。P_RASまたはP_R
ASB応答を受け取ったときに、システムコントローラ
は、そのUPAデータバス上のデータを駆動するために
UPAポートスレーブインターフェイスへS_SRS応
答を発行する。システムコントローラは、S_RAS
(Read Ack Single)応答をそれに送る
ことによって要求したデータを受け取るために要求して
いるマスタUPAポートを促す。システムコントローラ
は、S_NCRD_REQ要求のアドレスがキャッシュ
可能な主メモリ空間またはアンインプリメントされたア
ドレス空間に対するものであるならばS_ERR応答を
発行し、UPAスレーブポートへトランザクションを進
めない。システムコントローラは、それが要求パケット
におけるパリティエラーを検出するならばシステムリセ
ットをアサートする。
【0121】トランザクションがUPAポートのスレー
ブインターフェイスへ進められ、かつUPAポートのス
レーブインターフェイスがP_RTO(タイムアウト)
またはP_RERR(あらゆる型のバスエラーによる)
応答を発行するならば、システムコントローラは、要求
しているUPAマスタポートへS_RTOまたはS_E
RR応答をそれぞれ発行し、かつデータは、転送されな
い。アドレスパケットパリティエラーがUPAポートス
レーブインターフェイスによって検出されたならば、そ
れは、P_FERRをアサートし、かつシステムコント
ローラは、システムリセットを生成する。 NonCachedBlockRead(P_NCBR
D_REQ) 非キャッシュ型ブロック読取り要求は、非キャッシュ型
アドレス空間におけるデータのブロック読取りに対して
UPAマスタポートによって生成される。非キャッシュ
型データの64バイトは、このトランザクションを有す
るマスタUPAポートによって読取られる。このトラン
ザクションは、バイトマスクが用いられないことを除い
て、P_NCRD_REQトランザクションに類似す
る。要求したデータは、64バイトバウンダリー(PA
[5:4=0×0)上に位置合わせされる。更に、シス
テムコントローラは、S_RBU応答を有する要求して
いるマスタUPAポートへの要求したデータの送付を促
す。
【0122】NonCachedWrite(P_NC
WR_REQ) 非キャッシュ型書込み要求は、非キャッシュ型アドレス
空間にデータを書込むためにUPAマスタポートによっ
て生成される。要求によって指定されたアドレスは、1
6バイトバウンダリー上に位置合わせされる。ゼロから
16までの、任意の数のバイトは、任意のバイトマスク
(主にグラフィック装置)を有する書込みを支持するス
レーブ装置へ16ビットバイトマスクによって指定され
たように書込むことができる。全てゼロのバイトマスク
は、ターゲットスレーブインターフェイスへのノーオペ
レーション(no-op) を示す。主メモリは、このトランザ
クションで書込むことができない。システムコントロー
ラは、UPAデータバスに書込まれるべきデータを駆動
するためにそれを促すべく要求しているマスタUPAポ
ートへS_WAS応答を発行する。要求しているマスタ
UPAポートがシステムコントローラからのS_REP
LYを認識するときに、それは、トランザクションが終
了したとみなしかつシステムコントローラへの顕著な要
求のそのカウントをディクリメントする。システムコン
トローラは、宛先アドレスがシステムコントローラによ
って管理されるアドレス空間の中であるならば要求して
いるマスタUPAポートによって供給されたデータを記
憶する。宛先アドレスがスレーブUPAポートに対する
ものであるならば、システムコントローラは、このトラ
ンザクションをスレーブUPAポートへ進める。システ
ムコントローラは、UPAデータバスからデータを受け
取るためにそれを促すべくUPAポートスレーブインタ
ーフェイスへS_SWS応答を発行しかつこのP_NC
WR_REQ要求をUPAアドレスバス上のそれに進め
る。UPAポートスレーブインターフェイスが肯定応答
P_REPLYをシステムコントローラへ帰する義務が
まだあるけれども、システムコントローラは、この時点
でこのトランザクションが終了したとみなす。P_WA
S応答がUPAポートスレーブインターフェイスから
(最終的に)受け取られたときに、システムコントロー
ラは、このスレーブUPAポートの入力要求及びデータ
キューにおける顕著な要求の(SC Configレジ
スタのPReqCntカウンタにおける)そのカウント
をディクリメントする。
【0123】書込み要求及びデータは、アドレス及びデ
ータ経路が独立であるように、システムコントローラに
よってUPAポートスレーブインターフェイスへあらゆ
る順序で進められうるということに注目。失敗する書込
みは、言及せずに失敗しかつ非同期で報告されるだけで
ある。例えば、P_NCWR_REQトランザクション
は、アドレスがキャッシュ可能主メモリアドレス空間に
あるならば、システムコントローラによってドロップさ
れる。それは、あらゆる型のバスエラーまたはタイムア
ウトエラー上のUPAポートスレーブインターフェイス
によりドロップされる。システムコントローラがエラー
によりトランザクションをドロップするならば、それ
は、エラーをログしうる。UPAスレーブポートがそれ
をドロップするならば、それは、エラーをログしかつ割
込みを介してそれを報告しうる。アドレスパケットパリ
ティエラーがスレーブによって検出されるならば、それ
は、P_FERR応答をアサートし、システムコントロ
ーラにシステムリセットを生成させる。 NonCachedBlockWrite(P_NCB
WR_REQ) 非キャッシュ型ブロック書込み要求は、非キャッシュ型
アドレス空間へのブロック書込みのためにUPAマスタ
ポートによって生成される。非キャッシュ型データの6
4バイトは、このトランザクションを有するマスタUP
Aポートによって書込まれる。このトランザクション
は、バイトマスクが用いられないことを除きP_NCW
R_REQトランザクションに類似する。書込まれるべ
きデータは、64バイトバウンダリー(PA[5:4=
0×0)上に位置合わせされる。システムコントローラ
は、S_WAB応答で書込まれるべきデータブロックを
供給すべく要求しているマスタUPAポートを促す。
【0124】非キャッシュ型制御トランザクション これは、64バイトデータがそれに関連したアドレス空
間を有していないようなデータトランザクションではな
い。スヌーピングは、実行されずかつデータは、リクエ
スタによってキャッシュされない。好ましい実施例にお
ける唯一の非キャッシュ型制御トランザクションは、割
込みトランザクションである。 Interrupt(P_INT_REQ) 割込みトランザクション要求パケットは、宛先UPAポ
ート割込みハンドラーインターフェイスへ64バイトブ
ロックのデータからなるパケット化された割込みを送付
するために割込みマスタUPAポートによって生成され
る。割込みトランザクションは、I/O装置からの割込
み、非同期事象及びエラー報告を送るために、かつ割込
みハンドラーUPAポートへソフトウェアクロストーク
を通知する(posting) ために用いられる。割込みトラン
ザクションは、UPAポートによってそれ自体へ送るこ
とができない。割込みトランザクションパケットは、物
理アドレスを含まない。その代わり、それは、宛先割込
みハンドラーUPAポートのポートID(MIDとも呼
ばれる)と同じである、Interrupt Targ
et ID(割込みターゲットID)を担持する。シス
テムコントローラは、ターゲットIDによって指定され
たUPAポートへ割込みパケットを送る。
【0125】以下の規則は、割込みUPAポートのマス
タインターフェイスに適用する。割込みトランザクショ
ンを指定されたUPAポートのスレーブインターフェイ
スへ送付することができるならば、システムコントロー
ラは、UPAデータバス上の割込みデータを駆動するた
めにそれを促すべく始動しているUPAポートへS_W
AB応答を発行する。フロー制御制限により割込みトラ
ンザクションを送付できない(即ち、ターゲットUPA
ポートの割込み入力要求キューが満たされている)なら
ば、システムコントローラは、割込みトランザクション
をNACKするために始動しているUPAポートへS_
INAK応答を発行する。UPAポートは、あるバック
オフ期間後に割込みトランザクションを送ることを再び
試みなければならない。バックオフ期間中、割込みトラ
ンザクションは、マスタUPAポートのクラスキューに
おいてそれの後ろの他のトランザクションをブロックし
ない。以下の規則は、宛先割込みハンドラーUPAポー
トのスレーブインターフェイスで適用する。システムコ
ントローラは、UPAアドレスバス上の指定したスレー
ブUPAポートへP_INT_REQトランザクション
を進め、かつUPAデータバスからの割込みデータを受
け入れるためにそれを促すべくS_SWIB応答をそれ
に発行する。
【0126】割込みハンドラーが入力キューから割込み
パケットを除去した後、スレーブUPAポートは、シス
テムコントローラへP_IAK応答で応答する。システ
ムコントローラは、フロー制御に対するこのスレーブU
PAポートへの顕著な割込み要求のそのカウント(SC
Configレジスタ190におけるPIntCn
t)をディクリメントするためにこのP_REPLYを
用いる。そのポート−IDレジスタによって指定された
ような割込みハンドラーでないスレーブUPAポートが
P_INT_REQを受け取るならば、P_IAK応答
でそれを受け入れかつ割込み要求及びそのデータを言及
せずに廃棄することが必要である。スレーブポートは、
この誤指向された(misdirected) トランザクションエラ
ーをログする必要がない。プログラミングエラーによる
誤指向された割込みパケット、即ち、非割込みハンドラ
ーUPAポートへ指向された、割込みパケットは、言及
せずに失敗する。システムコントローラは、データを得
るためにマスタUPAポートへS_WAB応答を発行す
が、しかしそれを廃棄する。システムコントローラは、
誤指向された割込みをログしうる。
【0127】P_INT_REQトランザクション要求
が非割込みハンドラーUPAポートによって受け取られ
るならば、これは、システムコントローラにおけるある
致命的ハードウェア障害によるか、またはシステムコン
トローラにおける構成レジスタの誤構成によってのみ発
生しうる。UPAポートは、トランザクションを無視し
うるしかつあらゆるP_REPLYを発行しない。 P_REPLYメッセージ 図10Dは、P_REPLYメッセージに対するパケッ
トフォーマットを示す。表7は、好ましい実施例におい
て用いるP_REPLYメッセージのそれぞれを画定
し、各応答メッセージに対するタイプヴァリュー(type
value)、応答メッセージを送るために必要なクロックサ
イクルの数、応答メッセージの名前、応答メッセージが
用いられたトランザクションの種類、及び応答メッセー
ジが送られるときのUPAポートの状態を含んでいる。
以下の規則は、P_REPLY生成に適用する。P_R
EPLYメッセージは、UPAポートのスレーブインタ
ーフェイスによってのみ生成される。スレーブ読取りト
ランザクションに対して、P_REPLYメッセージ
は、S_REPLYを待つことなくシステムコントロー
ラへパイプラインで送ることができる。システムコント
ローラは、それがP_REPLYを受け取ったのと同じ
順序でS_REPLYを発行する。
【0128】各スレーブインターフェイスは、それが受
け取ったスレーブP_REQトランザクションのMID
(即ち、マスタID)に関してそのP_REPLYメッ
セージを順序付ける。換言すると、同じMID(即ち、
要求しているUPAポートのポートID)を有する全て
のP_REPLYメッセージは、対応要求が受け取られ
たのと同じ順序で正確に順序付けられるが、しかし異な
るMIDsを有するP_REPLYに対する順序付け制
約は、存在しない。P_RASBを除き、読取り要求に
対する全てのP_REPLY肯定応答は、P_REPL
Yが応答しているスレーブ要求からのMIDを含む。図
10Dに示すように、関連トランザクションに対するM
asterID(MID)は、応答メッセージの第2の
サイクルで送られる。図10A,10B及び10Cは、
それぞれがトランザクション要求パケットフォーマット
の第2のサイルクにおけるMID(MasterID)
フィールドを含む、種々の型のトランザクション要求の
パケットフォームを示す。各応答メッセージにおけるM
ID値は、対応トランザクション要求メッセージにおけ
るMID値からコピーされる。P_RASB応答メッセ
ージは、特別最適化であり、かつ関連トランザクション
に対するMasterIDを含まない。P_RASB応
答メッセージは、顕著なスレーブ読取りだけを支持する
(グラフィクスのような)UPAスレーブポートによっ
て用いられる。システムコントローラは、そのようなU
PAスレーブポートへ送られた各要求に対するサイズ、
MID、及びクラス情報を保持する。P_RASB応答
メッセージを受け取るときに、システムコントローラ
は、トランザクションについてそれが先に記憶した情報
によりそれが読取りシングルまたは読取りブロック肯定
応答であるかがわかり、かつ要求したデータを出力する
ためにUPAスレーブポートを促すべく対応S_SRB
またはS_SRS応答メッセージを適切にアサートす
る。
【0129】UPAポートのスレーブインターフェイス
によるP_REPLYメッセージの生成は、任意の量の
時間を取りうる。タイムアウト期間は、要求をしている
マスタUPAポートではなく、UPAポートのスレーブ
インターフェイスによって決定される。P_SACK,
P_SACKD,P_SNACK応答メッセージは、U
PAスレーブポートへ送られた全てのS_REQトラン
ザクション要求に対する肯定応答である。P_SACK
及びP_SACKDは、次の場合を除きシステムコント
ローラによって同様に処理される。P_SACKD応答
メッセージがS_INV_REQまたはS_CPI_R
EQトランザクション要求に応答するならば、システム
コントローラは、Dtagsを有さないシステムにおけ
るこの応答を思い出すことが必要であり、かつそれが同
じUPAポートから認識するちょうど次の書戻しトラン
ザクション(P_WRB_REQ)を取り消さなければ
ならない。
【0130】
【表11】
【0131】
【表12】
【0132】
【表13】
【0133】
【表14】
【0134】
【表15】
【0135】
【表16】
【0136】
【表17】 S_REPLYメッセージ 図10Eは、S_REPLYメッセージに対するパケッ
トフォーマットを示す。表8は、好ましい実施例で用い
られるS_REPLYメッセージのそれぞれを画定し、
各応答メッセージに対するタイプヴァリュー(type valu
e)、応答メッセージを送るために必要なクロックサイク
ルの数、応答メッセージの名前、応答メッセージが用い
られたトランザクションの種類、及び応答メッセージが
送られるときのUPAポートの状態を含んでいる。以下
の規則は、S_REPLY生成に適用する。S_REP
LYパケットは、単一相互接続クロックサイクルで送ら
れる5ビットメッセージである。それは、全てのS_R
EPLYメッセージがシステムコントローラによって生
成されたトランザクション要求に対する応答であるの
で、それが応答しているトランザクションのマスタID
を含まない。S_REPLYパケットは、UPAマスタ
がS_REPLYがどのクラスに対するものであるかを
決定できるようにマスタUPAポートへのS_REPL
Yに対するクラスビットを含まない。
【0137】異なるマスタクラスにおけるトランザクシ
ョン要求に対するS_REPLYの順序付けに関する要
求事項は、存在しない。各クロック内で、各MIDに対
して、全てのS_REPLYメッセージは、対応トラン
ザクション要求が受け取られたのと同じ順序で送られな
ければならない。二つのスレーブデータ受取りキューの
それぞれに対し、かつ対応キューへ異なる大きさのデー
タを書込むために、個別のS_REPLYメッセージが
存在する。S_SWB応答は、64バイトを書込むこと
をシステムコントローラに告げかつS_SWS応答は、
スレーブのP_REQデータ受取りキュー169へ16
バイトを書込むことをシステムコントローラに告げると
同時に、S_SWIB応答は、割込みハンドラースレー
ブポート152のの割込みデータ受取りキュー172
(図4参照)へ64バイトを書込むことをシステムコン
トローラに告げる。
【0138】
【表18】
【0139】
【表19】
【0140】
【表20】
【0141】
【表21】
【0142】
【表22】
【0143】
【表23】
【0144】
【表24】
【0145】
【表25】 キャッシュコヒーレンスプロトコルの詳述 図11の状態遷移図は、データ(Data)ブロックに
対するEtagMOESIキャッシュ状態の正当な遷移
を示す。それらは、インデックス[i]でキャッシュラ
インによって認識された遷移である必要はなく、それよ
りもこれらは、キャッシュラインへ/から移動している
データブロックに対する遷移であるということに注目。
このコンテキストにおける無効状態は、ブロックがこの
キャッシュに存在しない(しかし別のキャッシュに存在
しうる)ということを意味する。図12の状態遷移図
は、データ(Data)ブロックに対するDtagMO
SIキャッシュ状態の正当な遷移を示す。表9の状態遷
移表は、データブロックに対する全ての正当な状態遷
移、及びその下で遷移が発生する条件を指定する。これ
らの遷移は、両方がそれ自身のコヒーレントアクティビ
ティ並びにそれに影響を及ぼす他のUPAポートのコヒ
ーレントアクティビティによる、そのキャッシュへ/か
ら移動しているデータのブロックに対する始動(開始)
しているプロセッサによって見られたものである。表9
も種々のトランザクション要求タイプ及びこれらの状態
遷移をキャッシングUPAマスタポートで発生させるS
_REPLYとP_REPLYタイプを指定する。
【0146】一度に一つだけのキャッシュがDtagM
状態における特定のデータブロックを有することができ
ると同時に、一つのキャッシュは、他のキャッシュがそ
のデータのコピーを有しえないDtagM状態における
データブロックを有するということに注目。一度に一つ
だけのキャッシュがDtagO状態における特定のデー
タブロックを有することができ、そのデータブロックを
有している他のキャッシュは、DtagS状態だけにお
いてそれを有さなければならない。特定のデータブロッ
クを記憶する全てのキャッシュメモリがDtagS状態
におけるキャッシュラインに記憶されたデータブロック
を有するならば、データは、ReadToShare及
びReadToDiscard要求に対する別のキャッ
シュからの代わりに、主メモリのアドレス指定された位
置から常に供給される。データ転送が必要であるときに
ReadToOwnトランザクションに対して、要求し
たデータブロックは、M,OまたはS状態においてデー
タブロックを有するキャッシュから常に供給される。キ
ャッシュがデータブロックを現在記憶していないなら
ば、そのときにだけ、それは、主メモリのアドレス指定
された位置から供給される。
【0147】P_WRB_REQトランザクションで、
キャッシュラインは、そのDtagライン状態がMまた
はOであるならば宛先アドレスへ書込まれる。そのDt
ag状態がIであるならば、書戻しは、取り消される。
特に、P_WRB_REQトランザクションが取り消さ
れる唯一のときは、あらゆる他のUPAポートからのP
_RDO_REQ(このポートへのS_CPI_RE
Q)またはP_WRI_REQ(このポートへのS_I
NV_REQ)要求がこのUPAポートの書戻しバッフ
ァの無効をもたらすときである。P_WRI_REQト
ランザクションで、そのDtag状態に関係なくデータ
ブロックは、書込まれる。上記のように指定されたトラ
ンザクションセットは、図11に示したキャッシュ状態
の複数のサブセットを支持することも可能であるという
ことに注目。しかしながら、そのような動作のモード
は、好ましい実施例では用いられない。 書戻しトランザクション Dirt_Victim_Pending(汚染_犠牲
者_保留)(DIV)ビットは、トランザクション要求
パケットで画定される。好ましい実施例におけるトラン
ザクションの画定されたセットに関して図10A及び上
記の説明を参照。キャッシングUPAマスタは、誤りが
汚染ライン必要書戻しを犠牲にしたならば誤ったデータ
に対するコヒーレント読取りトランザクションにこのビ
ットをセットする。システムコントローラは、誤ったブ
ロックに対するDtag状態の更新を管理するためにD
VPビットを用いる。
【0148】特に、書戻しトランザクションは、(DV
Pビットセットを有する)読取りトランザクションと一
対一でペアにされる。一対にすること(pairing) は、書
戻し及び読取りの両方が同じキャッシュラインに対する
ものでなければならないことを意味する。しかしなが
ら、二つのトランザクションは、あらゆる順序でいずれ
のマスタクラスからでも発行されうる。(図9に示した
ように)一つだけの書戻しバッファ280及び一つのD
tagTB282が各キャッシュメモリ132に対して
供給されるので、UPAポート毎にせいぜい一つの顕著
な汚染犠牲者書戻しトランザクションが存在する。結果
として、キャッシングUPAマスタは、DVPビットセ
ットを有する一つだけの顕著なコヒーレント読取りトラ
ンザクションを有することができる。第1の読取り及び
書戻しが両方ともに終了するまで、UPAマスタポート
は、DVPビットセットを有する後続の読取りトランザ
クションを発行してはならない、即ち、DVPビットセ
ットを有する別のトランザクションがUPAマスタポー
トによって生成することができる前に両方に対するS_
REPLYが受け取られなければならない。しかしなが
ら、先の書戻し保留が存在すると同時にUPAマスタ
は、セットされていないDVPビットを有する後続の読
取りトランザクションを発行することができる。
【0149】UPAポートが単一マスタ要求クラスだけ
をインプリメントするならば、セットされたDVPビッ
トを有する顕著なトランザクション上の制限は、必要な
い。マスタクラス内の強い順序付け特性により、DVP
ビットに係わらずかつ先のトランザクションからのS_
REPLYを待つことなく、トランザクションは、パイ
プラインで送ることができる。キャッシングUPAマス
タは、書戻しトランザクションが終了するまで書戻しを
保留しているそれ自体の汚染犠牲になったブロックに対
する後続のコヒーレントトランザクションをブロックし
なければならない(即ち、発行しない)。UPAポート
が先に犠牲になったブロックに対するコヒーレント要求
を発行することができる最も早いものは、それがその書
戻しトランザクションに対する肯定応答S_REPLY
を受け取った後である。それは、S_REPLYの後す
ぐ次のクロックサイクルで要求を行うことができる。汚
染データに対する書戻しトランザクション及び誤ったデ
ータに対するコヒーレント読取りトランザクションの両
方が同じマスタ要求クラスに置かれ、かつ犠牲者を戻る
ための後続のトランザクションが最初の二つ(即ち、書
戻しトランザクション及び読取りトランザクションがキ
ャッシュからの犠牲者データブロックを変位した後)の
後ろに置かれたならば、このブロッキング要求事項は、
必要ではない。マスタ要求クラス内の強い順位付け特性
は、自動的にこのブロッキング制約を処理する。
【0150】キャッシングUPAマスタは、犠牲者デー
タブロックを変位したトランザクションが終了するまで
クリーン犠牲者データブロック(即ち、主メモリへ書戻
されることなくキャッシュから変位された)に対する後
続のコヒーレントトランザクションもブロックしなけれ
ばならない。しかしながら、クリーン犠牲者変位をもた
らした要求、及び犠牲者をキャッシュに戻す後続のもの
(要求)は、同じマスタ要求クラスに置かれ、そしてU
PAポートは、第1のものが終了するまで第2の要求を
ブロックすることを必要としない。二つの要求が異なる
要求クラスから発行することができる(好ましい実施例
における場合である)ならば、このブロッキング要求事
項は、データプロセッサによって強制されなければなら
ない。キャッシングマスタUPAポートは、それ自体の
プロセッサからの犠牲になったデータブロックへの後続
の装填または記憶を防がなければならない。これは、ク
リーン犠牲者並びに汚染犠牲者保留書戻しの両方に適用
する。キャッシングUPAマスタは、クリーン犠牲者の
場合に、キャッシュ充填に対するS_REPLY、また
は、汚染犠牲者の場合に、書戻しに対するS_REPL
Yがそれによって受け取られるまで、システムコントロ
ーラからの可能なS_REQに対してコヒーレンスドメ
インに犠牲になったデータを維持しなければならない。
換言すると、キャッシングUPAマスタポートは、シス
テムコントローラがそれにキャッシングUPAマスタポ
ートをこのオブリゲーション(義務)から開放するS_
REPLYを送るようなときまでシステムコントローラ
がそのように要求したならば相互接続へ変位した犠牲者
データブロックを供給することができなければならな
い。
【0151】UPAポートは、システムコントローラか
ら無効S_REQを受け取ることにより汚染犠牲者ブロ
ックに対するその書戻しトランザクションを取り消さな
い(S_INV_REQ,S_CPI_REQ)。シス
テムコントローラは、その代わり書戻しを取り消す。シ
ステムコントローラは、書戻しが、Dtagsにおいて
かまたはDtagsを有さないシステムにおける他の論
理を用いて取消しを保留している状態を保持することが
必要であり、かつ書戻しをそのアドレス指定された位置
へ書込ませてはならない。システムコントローラは、そ
の場合にはUPAポートからデータが転送されない、S
_WBCAN要求を発行することによって、またはS_
WAB応答を発行し次にデータを廃棄することによって
UPAポートからデータを受け入れることで書戻しを取
り消すことができる。 トランザクション要求をアクティブにすること 図5及び図13を参照すると、システムコントローラ1
10は、全ての保留及びアクティブトランザクション上
の情報を記憶する保留トランザクション状態アレー20
0を保持する。本発明のキャッシュ利用最適化のあるも
のは、所与のアドレス上のトランザクションの正確な順
序付けを強制することができるシステムコントローラに
依存する。トランザクション状態アレー200は、トラ
ンザクションの適切な順序付けを保持するためにシステ
ムコントローラによって用いられる一つのツールであ
る。
【0152】トランザクション状態アレー200は、
“スヌープパイプライン”における(即ち、Dtagル
ックアップ及び更新をうける)トランザクション及びま
だ終了していない他のアクティブトランザクションを含
んでいる、各アクティブトランザクションに対する行(r
ow) 290を含む。2ステージ・スヌープパイプライン
を有している、本発明を用いている二つのデータプロセ
ッサシステムの一般的なインプリメンテーションにおい
て、トランザクション状態アレーは、スヌープパイプラ
インにおけるトランザクションに対する2つの行及び各
データプロセッサに対する2つ(の行)を含んでいる、
6つの行290を一般に有する。更に一般的には、トラ
ンザクション状態アレー200は、各マスタクラスに対
するデータプロセッサ毎に少なくとも一つの行及びスヌ
ープパイプラインの各ステージに対して一つの行を一般
に含む。それゆえに、4つのデータプロセッサ、2つの
マスタ要求クラス、及び2ステージスヌープパイプライ
ンを有するシステムは、そのトランザクション状態テー
ブル200に少なくとも10の行を有する。しかしなが
ら、トランザクションは、未使用状態アレー行290に
動的に割り当てられかつ個々の行290が特定のプロセ
ッサまたはタスクに永続的には割り当てられないという
ことに注目すべきである。
【0153】一つの好ましい実施例では、トランザクシ
ョン状態テーブル200の各行290は、トランザクシ
ョンに関連したデータブロックの完全アドレス(full ad
dress)291、要求しているUPAポートのマスタ(ポ
ート)ID292、5ビットトランザクションタイプ2
93(もしあれば、1ビットマスタ要求クラスと、4ビ
ットトランザクション識別子を含んでいる)、及び状態
ビット294のベクトルを含む。システムにおける全て
のデータプロセッサに対して確立された最小キャッシュ
メモリサイズが存在するならば、アドレスフィールド2
91は、完全アドレスを記憶する必要がない。例えば、
もし最小確立キャッシュメモリサイズが512Kバイト
であるならば、その大きさのキャッシュは、8192キ
ャッシュライン(それぞれが64バイトデータブロック
を記憶する)を有し、最小サイズキャッシュメモリに対
するキャッシュインデックスは、13ビットであり、そ
れゆえに、各状態行のアドレスフィールド291は、各
アクティブトランザクションに対するアドレス指定され
たデータブロックの物理アドレスビットPA[18:
6]を記憶するために用いることができる。スヌープバ
ス上でシステムコントローラによって実行される二つの
動作(オペレーション)が存在する:1)ルックアップ
及び2)更新。システムコントローラは、両方の動作を
排他的に実行する。全てのキャッシングUPAマスタポ
ートのDtagsは、現在の状態に対して同時にルック
アップされ、かつ次の状態で同時に更新される。
【0154】ルックアップ動作は、コヒーレント読取り
トランザクションに対してどこから(即ち、主メモリか
らまたはUPAポートから)データが供給されるかを決
定する。先のコヒーレント読取りトランザクションから
のDVPビットと共に、それは、この書戻しトランザク
ションを取り消すか否かを決定する。Dtagルックア
ップ動作は、無効要求を送るUPAポート及びRead
ToOwnまたはWrite−Invalidate
(書込み−無効)トランザクションのどちらに対するコ
ピーバック−無効要求を送るかを決定する。特に、これ
らのトランザクションのいずれに対して、Dtagルッ
クアップ動作は、トランザクションによってアドレス指
定されているデータブロックを現在記憶する全てのキャ
ッシングUPAマスタを決定する。Write−Inv
alidateトランザクションの場合には、アドレス
指定されたデータブロックを現在記憶する全てのそれら
キャッシングUPAマスタポートは、システムコントロ
ーラによって無効要求が送られる。ReadToOwn
トランザクションの場合には、アドレス指定されたデー
タブロックを現在記憶する一つを除いて全てのキャッシ
ングUPAマスタポートは、(もしあれば)システムコ
ントローラによって無効要求が送られ、その(除かれ
た)一つは、コピーバック−無効要求(S_CPI_R
EQ)が送られる。
【0155】Dtag更新動作は、1)更新が実行され
るトランザクションを始動(開始)したUPAポート、
及び2)S_REQトランザクション(コピーバック/
無効)がシステムコントローラによって送られたUPA
ポート、に対してのみシステムコントローラによって適
用される。表9は、好ましい実施例における全ての画定
されたDtag更新を掲載する。
【0156】
【表26】
【0157】
【表27】
【0158】
【表28】
【0159】
【表29】
【0160】
【表30】
【0161】
【表31】
【0162】
【表32】
【0163】
【表33】 システムコントローラは、パイプラインとしてスヌープ
バスを管理する。トランザクションが(ルックアップ動
作に対して)スヌープパイプラインに入力すると、トラ
ンザクションは、アクティブになりかつトランザクショ
ンに対する記録は、アクティブトランザクション状態ア
レー200の利用可能な行に記憶される。スヌープパイ
プライン及び/又は資源窮乏効果の前の入力キューイン
グにより、トランザクションがシステムコントローラ入
力キュー(SCIQ0またはSCIQ1)に置かれてお
りかつスヌープパイプラインにまだ入力されていないな
らば、それはアクティブとみなされない。一度トランザ
クションがアクティブになったならば、それが終了する
までそれは、システムコントローラでアクティブ状態の
ままである。それゆえに、アクティブトランザクション
状態アレー200におけるトランザクションに対する行
290は、保持され、かつトランザクションが終了する
まで、種々の条件下で更新される。全ての後続入力トラ
ンザクションは、それらがアクティブになることができ
る前に以下に説明するアクティベーション規則に従って
システムコントローラにおいて既にアクティブなトラン
ザクションに対して比較される。
【0164】アクティブトランザクションは、更新動作
の末期(later) 及び要求しているUPAポートへのその
トランザクションに対するS_REPLYの発行の後で
のみ終了になることができる。 システムコントローラによるトランザクションアクティ
ブ トランザクションのパイプラインで送られた実行は、シ
ステムコントローラによって同時にアクティブである多
重トランザクションを結果として生ずる。多重アクティ
ブトランザクションがDtagsの同じキャッシュイン
デックスを共有するならば、これは、システムにおいて
コヒーレンスハザード(災害)を導く。そのようなハザ
ードを回避するために、システムコントローラは、既に
アクティブなトランザクションに対するアクティブトラ
ンザクション状態アレーの情報に基づいてアクティブに
なることからトランザクションをブロックするトランザ
クションアクティベーション論理300を用いる。例え
ば、システムコントローラが、データに対するUPAポ
ートに対して顕著なS_REQを有し、かつキャッシュ
誤りによりそのUPAポートがそのデータを変位するな
らば、システムコントローラは、そのポートによってS
_REQに対するS_REPLYが付与されるまで変位
しているトランザクションに対するS_REPLYをブ
ロックしなければならない。本発明では、このS_RE
PLY順序を保持するために、システムコントローラ
は、S_REQが終了するまで入力トランザクションを
アクティブになることからインデックスブロック(index
block) する。
【0165】別の視野から、システムコントローラは、
各トランザクションがアクティブになるときに実行され
たDtagルックアップ動作がトランザクションに対す
るデータがどこから供給されるのかを正確に決定するよ
うに、アクティブトランザクションを正確にブロックし
なければならない。トランザクションに対するDtag
ルックアップに基づいて、一度トランザクションに対す
るデータ発生源が決定されたならば、どのくらいかかる
か、またはトランザクションが、ランチされる前に内部
キューにおける別のアクティブトランザクションの後ろ
でどのくらい長く待つかに関係なく、データは、それか
ら供給される。本発明によれば、以下の場合に、入力ト
ランザクションは、アクティブになることからブロック
される: A)入力トランザクションに関連したキャッシュインデ
ックスが既にアクティブなトランザクションによって更
新されるらしい;または B)入力トランザクションに関連したキャッシュインデ
ックスが既にアクティブなトランザクションに関連する
キャッシュインデックスを更改するらしい;または C)入力トランザクションが、既にアクティブなトラン
ザクションによって供給されている/無効にされている
キャッシュラインを供給する/無効にするらしい。
【0166】しかしながら、トランザクションアクティ
ベーション論理は、入力トランザクション及び既にアク
ティブなトランザクションが読取り−書戻し対(ペア)
であるときにトランザクションのアクティベーションを
ブロックしない。キャッシュ誤り−装填時間は、二つの
トランザクションを同時にアクティブにさせることによ
って最小化され、かなり改良されたシステム性能を結果
として生ずる。コヒーレンスハザードは、第1のルック
アップによるDtag更新ベクトルが第2のルックアッ
プに可視であり、かつ第1の更新動作の状態(更新が終
了されたか否かという事実)が第2の更新に対する更新
ベクトルが始動(開始)されるときに可視であるという
ことを確実にすることによって、上記のブロッキング規
則を適用することなく、この場合に削除される。図13
を参照すると、システムコントローラのトランザクショ
ン入力キューのそれぞれは、アービタ回路301にその
入力キューにおける最も古いインアクティブトランザク
ション要求を与える。各保留トランザクション要求に対
する記録におけるアクティブ/インアクティブ状態ビッ
トによって示されるような、先にアクティベートされた
トランザクションは、アービタ回路301に与えられな
い。アービタ回路301は、一つのインアクティブトラ
ンザクション要求を選択し、I/O要求(即ち、I/O
UPAポートからの)に最も高い優先度を、マスタク
ラス0要求(即ち、読取り及びブロック装填要求)へ次
に高い優先度を、そしてマスタクラス1要求(即ち、書
戻し要求、WriteInvalidate要求、ブロ
ック記憶、割込み要求、及び非キャッシュ型読取り/書
込み要求)へ最も低い優先度を与える。
【0167】アービタ回路301によって選択されたト
ランザクション要求は、一組のコンパレータ302によ
って全ての現行アクティブトランザクションと比較され
る。各コンパレータ302は、選択したトランザクショ
ン要求をアクティブトランザクション状態アレー200
の一つの行290に示されたアクティブトランザクショ
ンと比較し、かつ選択したトランザクションが対応行2
90で示されたアクティブトランザクションに基づいて
ブロックされるならば“1”に等しく、行290で示さ
れたアクティブトランザクション(もしあれば)が選択
したインアクティブトランザクションをブロックするこ
とを必要としないならば“0”に等しい出力ライン30
4上の1ビット“ブロック/非ブロック”結果を出力す
る。全てのコンパレータ302によって生成された一つ
のライン304上の結果は、ライン308上に総計ブロ
ック/非ブロック結果信号を生成するためにORゲート
306によって論理的にORされる。トランザクション
アクティベーション論理300は、(A)アクティブト
ランザクション状態アレー200に少なくとも一つの自
由(空)な行が存在しかつ(B)選択したインアクティ
ブトランザクションと現行アクティブトランザクション
との比較がライン308上に非ブロック信号を生成する
ならば、選択したトランザクションをアクティベートす
る。
【0168】システムコントローラのトランザクション
アクティベーション論理300の二つの実施例を次に説
明する。両方の実施例は、本発明の先に記載された態様
の全てと互換性がある。事実、並列で複数のデータ転送
動作を実行するためのシステムの能力(機能)を更に低
減するがシステムコントローラのインプリメンテーショ
ンを簡略化する、より制限されたアクティベーション規
則を有するトランザクションアクティベーション論理3
00を用いることができる。両方の好ましい実施例で
は、トランザクションアクティベーション論理300
は、アクティベーション試験に対する各システムクロッ
クサイクルの間中にシステムコントローラの入力要求キ
ャッシュ(各マスタUPAポートに対するSCIQ0及
びSCIQ1、及びI/O装置に対するSYSIOQ)
から一つのインアクティブトランザクションを選択す
る。そのクロックサイクルの間中、選択された入力トラ
ンザクションは、一組のコンパレータ302によって全
てのアクティブトランザクションと同時に比較される。
次のシステムクロックサイクルの間中、トランザクショ
ンアクティベーション論理300は、トランザクション
が現行アクティブトランザクションの一つによってブロ
ックされない先のクロックサイクルの間中に選択されか
つ試験された入力トランザクションをアクティベートす
る。保留インアクティブトランザクションが存在しない
か、またはアクティブトランザクション状態アレー20
0に利用可能な行が存在しないならば、トランザクショ
ンアクティベーション論理300は、インアクティブで
ある。
【0169】緩和されたトランザクションアクティベー
ション規則 本発明の第1の“緩和されたトランザクションアクティ
ベーション規則”実施例における各コンパレータ302
の論理回路素子に対する論理式は、以下の通りである:
【0170】
【数1】 AcTxは、選択されたインアクティブトランザクショ
ン状態アレーと比較されるアクティブトランザクション
状態アレーの行である。InTxは、アクティブトラン
ザクション状態アレーの行と同じように構成された選択
されたインアクティブトランザクションに対する一組の
情報である。AcTx.TxTypeは、アクティブト
ランザクションのトランザクションタイプである。In
Tx.TxTypeは、選択されたインアクティブトラ
ンザクションのトランザクションタイプである。InT
x.Status.DVPは、DVPビットが選択され
たインアクティブトランザクションにセットされるなら
ば、真(True)である。SC_Config_Reg
(X).CIMは、X番目のUPAポートに対するキャ
ッシュインデックスマスク(CIM)である。上記論理
式によれば:選択されたインアクティブコヒーレントト
ランザクションは、アクティブトランザクションが存在
しなければ、常にアクティベートされる。
【0171】アクティブトランザクション及び選択され
たインアクティブトランザクションの両方が書戻しトラ
ンザクションであるならば、アクティブ及び選択された
インアクティブトランザクションと関連したアドレスに
係わりなく、選択されたトランザクションは、アクティ
ブトランザクションによってブロックされない。書戻し
トランザクションであるアクティブトランザクションが
存在し、かつ選択された入力トランザクションが非書戻
しであるならば、またはアクティブトランザクションが
非書戻しでありかつ選択された入力トランザクションが
書戻しであるならば、選択された入力トランザクション
は、完全アドレスマッチが存在するならば、アクティベ
ーションからブロックされる。アクティブトランザクシ
ョンが非書戻しでありかつ選択された入力トランザクシ
ョンが非書戻しであるならば、選択された入力トランザ
クションがブロックされるべきか否かを決定するために
アドレス比較が実行される。選択された入力トランザク
ションのDVPビットがセットされるか、または選択さ
れた入力トランザクションがP_RDD_REQまたは
P_WRI_REQトランザクションであるならば、ア
クティブ及び選択された入力トランザクションの全アド
レスビットが比較される。さもなければ、アクティブ及
び選択された入力トランザクションの両方に対する関連
アドレスビットは、対応UPAポートのキャッシュイン
デックスフィールドに記憶されたビットであり、かつ比
較は、二つのビットフィールドのインターセクション上
で実行される。キャッシュインデックスフィールドにお
けるビットの数は、各UPAポートIDに対するSC
Configレジスタのキャッシュインデックスマスク
(CIM)フィールド194において指定される。選択
された入力トランザクションは、マッチが存在しなけれ
ばアクティベートされる。
【0172】この“緩和されたトランザクションアクテ
ィベーション規則”実施例に対するブール論理回路素子
の複雑性は、全アドレス比較に対する最小許容キャッシ
ュメモリのキャッシュインデックスに関連したそれらの
アドレスビットを用いるだけでかなり低減することがで
きる。上述したように、この実施例で比較されたアドレ
スビットの数は、システムの最小キャッシュメモリのキ
ャッシュインデックスにおけるビットの数である。上記
で用いられた例では、最小確立キャッシュメモリサイズ
が512Kバイトであるときに、最小サイズキャッシュ
メモリに対するキャッシュインデックスは、13バイト
であり、アドレス指定されたデータブロックの物理アド
レスビットPA[18:6]に対応している。しかしな
がら、一度全アドレス比較が削除されると、読取り/書
戻しトランザクション対の重複動作(overlapping opera
tion) を許容するために明示論理が含まれなければなら
ない。システムのこの“低減された複雑性の緩和された
トランザクションアクティベーション規則”実施例で
は、一つの好ましい実施例における各コンパレータ30
2の論理回路素子に対する論理式は、以下の通りであ
る:
【0173】
【数2】 かつAdr(MinCIM)は、最小サイズキャッシュ
メモリに対するアドレスインデックスと関連したアドレ
スビットである。ReadWRBPair信号に対する
上記論理式で表された、読取り/書戻し対を検出するた
めに回路素子は、(A)二つのトランザクションが同じ
UPAポートからであり、(B)二つのうちの一つが書
戻しトランザクションであり、他は、そうでなく、かつ
(C)書戻しトランザクションではない一つのトランザ
クションがそのDVPビットが真にセットされているな
らば、ポジティブ(正)のReadWRBPair信号
を生成する。上述した“低減された複雑性”コンパレー
タ論理の使用は、全アドレス比較上の非マッチ及び最小
キャッシュインデックス上のマッチを有することの頻度
(frequency) が、平均で、Nを最小キャッシュインデッ
クスにおけるビットの数とすると、2-Nに等しいので、
全コンパレータ論理にわたりシステム性能にネガティブ
なインパクトを全く有さない。例えば、Nが13に等し
い(512Kバイト最小キャッシュメモリサイズに対し
て)ならば、このインプリメンテーションによってブロ
ックされるトランザクションと低減された複雑性インプ
リメンテーションによってブロックされないものとの平
均的割合い(average percentage)は、P_RDD_RE
Q及びP_WRI_REQトランザクションが全トラン
ザクションの80%よいも少ないと想定すると、全トラ
ンザクションの0.01%よりも少ない。
【0174】より厳格なトランザクションアクティベー
ション規則 本発明の第1の“厳格なトランザクションアクティベー
ション規則”における各コンパレータ302の論理回路
素子に対する論理式は、次の通りである:
【0175】
【数3】 上記論理式によれば:選択された入力コヒーレントトラ
ンザクションは、アクティブトランザクションが存在し
なければ、常にアクティベートされる。選択された入力
コヒーレントトランザクションは、システムコントロー
ラにおけるアクティブトランザクションとのアドレスイ
ンデックスマッチが存在しなければアクティベートされ
る。入力コヒーレントトランザクションは、入力コヒー
レント書戻しトランザクションが書戻しトランザクショ
ンと同じUPAポートからのReadであるアクティブ
トランザクションによってブロックされないことを除
き、システムコントローラにおけるアクティブトランザ
クションとインデックスマッチが存在しないならばアク
ティベーションからブロックされる。各アドレスインデ
ックス比較に用いるためのビットの数は、どのUPAポ
ートのキャッシュインデックスがアクティブトランザク
ションが終了するまでガードされているかに依存する。
アクティブトランザクションにおけるDVPビットがセ
ットされないならば、アドレス比較に用いられたインデ
ックスのビットの数は、選択された入力トランザクショ
ンブロックインデックスの大きさと対応アクティブトラ
ンザクションブロックインデックスの大きさとのインタ
ーセクションである。アクティブトランザクションのD
VPビットがセットされるならば、アドレス比較に用い
られたインデックスのビットの数は、入力トランザクシ
ョンのブロックインデックスサイズである。
【0176】上記“厳格な”トランザクションアクティ
ベーション規則は、以下の強い不変量(invariant) を有
する:セットされたDVPを有する読取りトランザクシ
ョン及び同じUPAポートからのその付随書戻しトラン
ザクションを除き、あらゆるキャッシュインデックス上
のシステムにおいてとりわけ一つのトランザクションが
アクティブがあることができる。この“厳格なトランザ
クションアクティベーション規則”実施例に対するブー
ル論理回路素子の複雑性は、全アドレス比較に対する同
じ数のアドレスビットを常に比較することによってかな
り低減することができる。システムのこの“低減された
複雑性の厳格なトランザクションアクティベーション規
則”実施例では、一つの好ましい実施例における各コン
パレータ302の論理回路素子に対する論理式は、以下
の通りである:
【0177】
【数4】 かつAdr(MinCIM)は、最小サイズキャッシュ
メモリに対するアドレスインデックスと関連したアドレ
スビットである。 アクティブトランザクション管理 上述したアドレスブロッキング規則(いずれかのセット
における)によりアクティブになることからトランザク
ションをブロッキングすることに加えて、システムコン
トローラは、また、以下の条件により進行することから
アクティブトランザクションをブロックしうる:トラン
ザクションがUPAポートへ送られるべき第2のS_R
EQを必要とすると同時に別のS_REQがそのUPA
ポートに対してまだ顕著であるならば、アクティブトラ
ンザクション上のワークは、ブロックされる。この条件
が検出されるべきためには、しかしながら、システムコ
ントローラは、まずトランザクションをアクティブにさ
せてかつつ関連Dtagルックアップを実行しなければ
ならない。アクティブトランザクション上のワークは、
メモリバンクビジー、またはデータ経路ビジー条件のよ
うな、資源コンテンション(争奪)によってブロックす
ることができる。
【0178】アクティブトランザクション上のワーク
は、フロー制御要求事項によってブロックすることがで
きる。特に、トランザクションは、スレーブの入力キュ
ーが充填されているならば、ターゲットスレーブUPA
ポートへ進めることができない。アクティブトランザク
ション管理は、上述したアクティブトランザクション状
態アレー200によって、一部、支持される。図14A
〜14Dを参照すると、状態アレー200は、各アクテ
ィブトランザクションに対する状態ベクトル294を含
む。状態アレー200の各行における状態ベクトル29
4は、以下のものを含む:アクティブトランザクション
状態アレー200の対応する行290がアクティブトラ
ンザクションに関する有効データを含むときに、真であ
るTxActiveフラグ320。対応トランザクショ
ン要求におけるDVP(汚染犠牲者保留)フラグのコピ
ーである、DVPフラグ321。各トランザクション要
求に対するDtagアレーに記憶されるべき新しいDt
ag状態値322のベクトル。図14Bを参照すると、
Dtag New Stateアレーは、各Dtagア
レーに対して、Dtag更新が対応Dtagアレー上で
実行されるべきであるならば1に等しい更新yes/n
oフラグ322aと、このトランザクションに対するキ
ャッシュインデックスに対応しているDtagに記憶さ
れるべきである2ビットDtag状態値322bとを含
む。(図14B参照) どのS_REQサブトランザクションが、もしあれば、
各UPAポートへ送られるべきであるか、及び各そのよ
うなサブトランザクションの状態を示している、S_R
EQベクトル323。図14Cを参照すると、S_RE
Qベクトル323は、各UPAポートに対するエントリ
323aを有する。各UPAポートに対するエントリ3
23aは、もしあれば、対応UPAポートへ送られるべ
き、S_REQに対する4ビットS_REQタイプ値3
23bと、状態値323cを含む。状態値323cは、
S要求が対応UPAポートへ送られたかまたは送られる
べく待っているときに“1”に等しく、送られるべきS
要求がないUPAポートに対してかつ先に送られたS_
REQに応じてP_REPLYを既に送ってしまったU
PAポートに対して“0”に等しい。
【0179】それからデータがコピーされるべきUPA
ポート(もしあれば)を識別する、Copyback
(コピーバック)ID324。トランザクションが終了
する準備が整ったときに要求しているUPAポートへ送
られるべきS_REPLYタイプの4ビットコードであ
る、S_REPLYタイプ。S_REPLYも供給して
いるUPAポートへ送られるべきであるときはいつで
も、そのS_REPLYは、常にS_CRABメッセー
ジであり、それゆえにそのS_REPLYタイプは、ト
ランザクションに対する状態ベクトルに記憶されること
を必要としない。Dtag無効がこのトランザクション
に対して要求しているUPAポートと同じUPAポート
に対するDtag上で実行されるそれぞれ先にアクティ
ベートされかつ未終了のトランザクションに対して非ゼ
ロ値を有する、先の無効カウンタ326を待つ。例え
ば、このトランザクション(即ち、この状態アレー行2
90に対応しているトランザクション)を要求している
UPAポートに対するDtagアレーにおけるDtag
sを無効にさせる2つの保留トランザクションが存在す
るならば、この値は、2に等しい。
【0180】アクティブトランザクション状態アレーに
示されたトランザクションのどれがこのトランザクショ
ンが対応している無効サブトランザクションを終了する
までブロックされているのかを示しているビットマップ
である、WaitingTx’s327のBitMa
p。各ブロックされたトランザクションに対して、Bi
tMap326は、“1”ビットを有し、かつ各他のト
ランザクションに対してそれは、“0”ビットを有す
る。いかなる無効サブトランザクションを含まないトラ
ンザクションに対して、BitMap327は、全ゼロ
に等しい。 トランザクション実行論理 図21〜図25を参照すると、一度トランザクションが
アクティベートされたならば、Dtagルックアップ
は、すぐに実行されるか、またはDtagルックアップ
及び更新論理340によりそのトランザクションは、す
ぐに実行される。好ましい実施例では、Dtagルック
アップ動作は、次のようにパイプラインで送られる:4
つのシステムクロックサイクルにわたり、2つのDta
gルックアップは、2つの入力トランザクションに対し
て実行され、続いて2つのDtag更新動作が実行され
る。
【0181】Dtagルックアップ動作は、各Dtag
アレーに対して一組の3つのDtagビットを生成し、
1ビットは、キャッシュヒットが検出されたかどうかを
示し、2ビットは、もしあれば、トランザクションの指
定したデータブロックアドレスに対応している、Dta
gエントリの状態を示す。P_REQトランザクション
タイプと共に、これらのDtag状態値は、(A)もし
あれば、要求したトランザクションを実行するためにU
PAポートへ送られることが必要なS_REQ、(B)
データがどこへまたはどこから供給されるまたは送られ
るか、(C)トランザクションが終了したときに要求し
ているUPAポートへ送られるべきS_REPLYタイ
プ、及び(D)要求したトランザクションの実行の結果
としてDtagアレーに記憶されるべき新しいDtag
状態値、を決定するために用いられる。これらの値は、
トランザクション表341の簡単なテーブル・ルックア
ップを用いて生成される。表10は、2データプロセッ
サシステムに対するトランザクションルックアップ表3
41の例を示す。同様な表は、3つ以上のデータプロセ
ッサを有しているシステムに対して、当業者により構築
することができる。
【0182】表10を参照すると、最初の4つのカラム
(列)は、トランザクション表ルックアップの前であっ
て、Dtagルックアップ動作の終結において知られた
データ値を表わす。表10では、以下の略語が用いられ
る: Tx:トランザクション CurSt:Dtagルックアップから得られた現行D
tag状態値 NewSt:Dtag更新に対する新しいDtag状態
値 P0:UPAポート0に結合した、データプロセッサ0 P1:UPAポート1に結合した、データプロセッサ1 Mem:主メモリ X:なし、または気にしない error(誤り):決して発生すべきでない指定信号
組合せ Dtagルックアップ、要求しているUPAポートの識
別及びトランザクション要求のタイプから得られた現行
Dtag状態値を用いて、Dtagルックアップ論理
は、トランザクション表341(好ましい実施例ではR
OMに記憶される)の対応している行をアクセスし、か
つアクティベートされたトランザクションに対する状態
ベクトル294内のDtag New State V
aluesベクトル322に結果として得られたDta
gの新しい状態値を記憶する。同様に、もしあれば、ト
ランザクション表341に見出されたS_REQタイプ
は、アクティベートされたトランザクションに対するS
_REQベクトル323に記憶され、かつトランザクシ
ョン表341に見出されたS_REPLYタイプは、ア
クティベートされたトランザクションに対するトランザ
クション記録290のS_REPLYタイプフィールド
325に記憶される。S_REPLYフィールド325
は、要求しているUPAポートへ送られるべきS_RE
PLYを記憶する。
【0183】それゆえに、Dtagルックアップ動作の
終結において、アクティベートされたトランザクション
を実行するために必要な情報は、状態アレー200のト
ランザクションのトランザクション記録290に記憶さ
れる。好ましい実施例では、Dtagアレー134は、
Dtagルックアップ及びトランザクション表ルックア
ップ動作が終了した直後にDtagの新しい状態値ベク
トル322のDtag New State値で更新さ
れる。図25は、Dtag更新論理340を示す。特
に、Dtag更新論理340は、Dtagの新しい状態
値ベクトル322及びアクティベートされたトランザク
ションに対する対応データブロックアドレスを選択する
ため及びスヌープバス140上にそれらの信号をアサー
トするために2つのマルチプレクサ342,343を用
いる。
【0184】
【表34】
【0185】
【表35】
【0186】
【表36】
【0187】
【表37】 図26を参照すると、S_REQのサブトランザクショ
ンを実行するためのS_Request論理350は、
S_REQ状態アレー352、並びにS_REQを受け
取るように構成された各データプロセッサに対する一つ
のSReqFIFOバッファを含んでいる、一組のSR
eqFIFOバッファ356を用いる。トランザクショ
ンがアクティベートされかつそのDtagルックアップ
動作が実行される毎に、各S_REQがそのS_REQ
が送られるべきデータプロセッサに対応しているSRe
qFIFOバッファ356に記憶されることを除き、各
アクティベートされたトランザクションのトランザクシ
ョン記録290のベクトル323に記憶されるのと同じ
S_REQデータがSReqFIFOバッファにも記憶
される。対応DtagルックアップのときにFIFOに
各データプロセッサに対する全てのS_REQを記憶す
ることによって、システムは、第1のデータプロセッサ
マスタクラスから同じ第2のデータプロセッサへ送られ
たトランザクションがそれらが第1のデータプロセッサ
のマスタクラス出力キューから送られたのと同じ順序で
実行されるトランザクション順序付け要求事項を有する
コンプライアンスを確実にする。
【0188】S_REQ状態アレー352は、各マスタ
UPAポートに対する一つのS_REQ状態記録353
を含む。保留S_REQに関する各マスタUPAポート
記憶情報に対するS_REQ状態記録353は、もしあ
れば、そのUPAポートへ送られる。S_REQ状態記
録353は、S_REQが対応UPAポートに送られた
ときにだけ“1”にセットされる、有効ビット354
と、対応P_REPLYを受け取ったときにそのS_R
EQ状態ビット323cがクリアされることが必要であ
るアクティベートされたトランザクション記録のIDを
記憶するBufID355とを含む。S_REQ状態記
録の一つが“0”に等しい有効ビットを有するときはい
つでも、それは、対応UPAポートにS_REQ保留が
存在しないことを意味し、即ち、別のS_REQをその
UPAポートへ送ることができることを意味する。保留
S_REQを有していないUPAポートの識別、並び
に、もしあれば、そのUPAポートへランチされるべく
待機しているS_REQに基づき、S_Request
論理は、識別されたUPAポートへ対応SReqFIF
O356における第1のS_REQを送る。UPAポー
トからP_REPLYを受け取ったときにはいつでも、
それは、(A)P_REPLYを送ったUPAポートに
対するS_REQ状態記録353における有効ビット3
53をクリアすること、(B)P_REPLYを送った
UPAポートに対するS_REQ状態記録353で識別
されたトランザクション状態記録におけるS_REQ状
態ビット323cをクリアすること、によりS_Req
uest論理350によって処理される。
【0189】一度アクティブコヒーレントトランザクシ
ョンに対する全てのS_REQ状態ビット323cがク
リアされ、トランザクションがデータ転送を要求したな
らばデータ経路セットアップ要求がデータ経路スケジュ
ーラ論理(Datapath scheduler logic)360へ送られ
る。データ経路スケジューラ論理360は、ラウンドロ
ビンアービトレーションスキームを用いて競合している
データ経路セットアップ要求の間でアービトレートす
る。データ経路スケジューラ論理360がデータ経路サ
ービスに対するトランザクションを選択したときに、ま
たそれは、選択されたトランザクションに対する要求し
ているUPAポートへS_REPLYメッセージを、並
びに、もしあれば、供給シテイルUPAポートへ対応S
_REPLYを送るためにS_Reply論理362を
促すべくS_Reply論理362へ信号を送る。一組
のS_REPLYFIFOバッファ364は、各マスタ
UPAポートの各マスタクラスに対する個別のFIFO
バッファ364を用いて、アクティブトランザクション
に対するS_REPLYを記憶する。S_REPLYを
順序付けるためのFIFOバッファ364の使用は、各
マスタUPAポートの各マスタクラスにおけるトランザ
クションが各マスタクラス内で発行されるのと同じ順序
で終了することを確実にする。
【0190】各終了したトランザクションに対して、S
_Reply論理362は、適切なFIFO364に記
憶されたS_REPLYメッセージの送信を促す。UP
Aポートが要求しているプロセッサへデータを供給して
いるときに、S_CRABメッセージは、供給している
UPAポートへ送られなけらばならない。S_CRAB
メッセージは、S_Reply論理362のハードワイ
ヤード論理によって生成される。データ転送を要求して
いないトランザクションに対して、S_Reply論理
362は、トランザクションに対する全てのS_REQ
状態ビット323cがクリアされたときにMIDフィー
ルド292に示されたUPAポートへトランザクション
の状態記録のフィールド325に示されたS_REPL
Y(そのコピーが適切なS_REPLY FIFOバッ
ファ364に記憶される)を送る。非キャッシュ形アド
レス空間への非コヒーレントトランザクションに対し
て、S_Reply論理362は、要求しているUPA
ポートへS_REPLYメッセージを生成し、かつ一度
初期トランザクション要求に応じてターゲット(供給し
ている)UPAポートからP_REPLYを受け取った
ならば、あるトランザクションタイプに対して、供給し
ているUPAポートへS_REPLYメッセージを生成
する。
【0191】S_Reply論理326及びS_REP
LY FIFOバッファ364は、同じマスタクラスか
らの全ての要求に対して、Dtagルックアップ動作の
順序付けと特定の要求しているUPAポートへのデータ
伝送に対するS_REPLYメッセージの順序付けとの
間で一対一の対応を保持する。それゆえに、UPAマス
タポートが同じマスタクラスから読取りトランザクショ
ン要求を発行し続いて書込みトランザクション要求を発
行したならば、書込みトランザクションに対するS_R
EPLYは、読取りトランザクションに対するS_RE
PLYの後に発行される。S_REPLY順序付け要求
事項は、対応トランザクションのDtagルックアップ
動作が終了したときに各データプロセッサマスタクラス
に対してS_REPLYを記憶するために各データプロ
セッサの各マスタクラスに対するS_REPLY FI
FOバッファを供給することによって満たされる。結果
として、S_REPLYは、Dtagルックアップが各
データプロセッサマスタクラスに対するトランザクショ
ン上で実行されるのと同じ順序で正確に順序付けされ
る。別の実施例では、S_REPLY順序付け要求事項
は、各UPAポートマスタクラス専用のアクティブトラ
ンザクション状態アレー200のちょうど一つのエント
リ290を供給することによって満たされる。それゆえ
に、それぞれが二つのマスタクラス、プラスI/O U
PAマスタポートを有している、二つのマスタUPAポ
ートを有するこの第1の好ましい実施例に基づくシステ
ムでは、それぞれが一つのポート及びマスタクラス(適
用可能であれば)専用である、アクティブトランザクシ
ョン状態アレー200に5つのエントリ290が存在す
る。この好ましい実施例では、一度に各UPAポートマ
スタクラスに対して一つだけのトランザクションをアク
ティベートすることができるので、S_REPLY順序
付け要求事項は、自動的に満足される。
【0192】システムコントローラは、Dtagルック
アップ動作が実行される順序と、S_REQメッセージ
がUPAポートへ送られる順序との間で一対一対応を更
に保持する。 デッカーのアルゴリズムのインプリメンテーション 二つのプロセッサP1,及びP2を有するものと仮定す
る。データブロックまたはワードA及びBが両方のプロ
セッサによって共有され、かつ0に初期化されると想定
する。二つのプロセッサ上で命令の次のシーケンスを実
行する: プロセッサP1 プロセッサP2. st 1,A st 1,B メンバー(membar) メンバー(membar) Id B Id A ここで、“メンバー(membar)”は、メンバー命令に続い
く命令の実行の前に全ての先行命令が終了することを必
要とする命令である。デッカーのアルゴリズムは、それ
らの対応装填動作(Id B,Id A)を実行すると
きに両方のプロセッサが0を読取るべきでないというこ
とを要求する。
【0193】通常のシステムでは、デッカーのアルゴリ
ズムは、記憶が終了することを許される前に一つ置きの
キャッシュにおける対応ラインが無効にされることを、
キャッシュラインへの記憶誤りが発生するときに、要求
することによって、インプリメントされる。本発明で
は、通常の“記憶する前の全てのキャッシュでの無効”
規則は、次に例に示すように、対応無効を受け取るまで
全ての他のプロセッサからの記憶が終了することをブロ
ックすると同時に、一つのプロセッサからの記憶を終了
させることによって、デッカーのアルゴリズムの正確さ
をインパクトすることなく、わずかに緩和される。シス
テムがP1の記憶動作を進行させ、かつP1からの対応
無効肯定応答メッセージを受け取るまでP2の記憶動作
をブロックするならば、P1は、“0”としてBを読取
り、P2は、1としてAを読取る。本発明のトランザク
ションアクティベーション論理は、デッカーのアルゴリ
ズムの正確さを確実にするために、二つ以上のプロセッ
サが同時にミューテックス・ロック(mutex locks) をタ
ッチすることを試みるときにタイム・ウィンド内の一つ
以外の全てのプロセッサによる記憶動作をブロックす
る。これは、通常の書込み無効論理に対して共有データ
に対する記憶の性能を改善する。
【0194】上述した“緩和された規則”をインプリメ
ントするS_Request論理350及びS_Rep
ly論理362の第1の、保守的な、実施例では、デー
タが要求しているキャッシュにおいてSまたはO状態に
あるならば、S_REQ論理は、全ての他の共有キャッ
シュへS_INV要求を発行し、かつ要求しているキャ
ッシュへS_OAKを発行する前にそれらからのP_R
eplyを待つ。さもなければ、データが他のキャッシ
ュのM状態にあるならば、状態マシン342は、そのキ
ャッシュへS_CPIを発行し、それからのP_Rep
lyを待ち、そして要求しているキャッシュへデータを
供給する。上記条件のいずれも適用せずかつデータがキ
ャッシュのS状態にあるならば、状態マシン342は、
共有キャッシュの一つへS_CPI要求を発行し、他の
全ての共有キャッシュへS_INV要求を発行し、そし
て要求しているキャッシュへS_Replyを発行する
前にそれらの全てからのP_Replyを待つ。上記条
件のいずれも適用しないならば、アドレス指定されたデ
ータブロックは、主メモリから供給される。第2の実施
例では、Dtagルックアップ及び更新論理340及び
S_Request及びS_Reply論理350,3
62は、上述した“緩和された規則”の“性能”版を一
緒に用いる。このインプリメンテーションでは、要求し
ているキャッシュに対して顕著なS_REQが存在する
ならば、S_Request論理350は、S_REQ
へのP_REPLYを待つ。
【0195】次に、アドレス指定されたデータが要求し
ているプロセッサのキャッシュメモリのSまたはO状態
にあるならば、システムコントローラは、全ての他の共
有キャッシュへ無効要求(S_INV)を発行しかつ要
求しているキャッシュへS_OAKを発行する。アドレ
ス指定されたデータが要求しているプロセッサのキャッ
シュメモリのSまたはO状態にないが、他のキャッシュ
のM状態にあるならば、システムコントローラは、その
キャッシュのUPAスレーブポートへコピーバック無効
要求(S_CPI)を発行し、それからのP_REPL
Yを待ち、そして要求しているUPAポートへデータを
供給する。上記条件のいずれも適用せずかつアドレス指
定されたデータがあらゆるキャッシュ(即ち、要求して
いるプロセッサのキャッシュメモリ以外)のS状態にあ
るならば、システムコントローラは、全ての共有キャッ
シュへ無効要求(S_INV)を発行し、そして主メモ
リから要求したデータを供給する。そして、上記条件の
いずれも適用しないならば、システムコントローラは、
主メモリからアドレス指定されたデータを供給する。
【0196】好ましい実施例では、送られるべきS_R
EQ及びS_REPLYメッセージと各トランザクショ
ンに対するデータ発生源は、Dtag新状態値、トラン
ザクションに対するS_REQベクター及びトランザク
ションに対するS_REPLYを生成するためにDta
gルックアップ動作の終りでアクセスされるトランザク
ション表341において符号化される。図27を参照す
ると、データ経路スケジューラ360は、(A)メモリ
ユニット論理370、(B)エラーユニット論理37
1、(C)UPAユニット論理372、及び(D)ファ
ースト(Fast)フレームバッファ(FFB)論理ユニット
373からの競合しているデータ経路セットアップ要求
間でアービトレートする。メモリユニット論理370
は、主メモリからデータを読取りかつ主メモリへデータ
を書込むために必要な信号を制御する。エラーユニット
論理371は、タイムアウトエラー、不当アドレス範囲
エラー等を取り扱う。UPA論理ユニット372は、そ
れへデータが供給されるかまたはそれからデータが要求
されるUPAユニットとのS_REQ、P_REQ及び
P_REPLY通信を取り扱う。FFB論理ユニット3
73は、フレームバッファ374から読取るため及びフ
レームバッファ374へ書込むために必要な信号を制御
する。
【0197】論理ユニット370〜373のそれぞれ
は、データ経路要求を一時的に記憶するFIFO要求バ
ッファ375a〜375dを含む。各FIFO要求バッ
ファ375の各データ経路要求エントリは、次のものを
含む:エントリが有効データを含むかどうかを示すため
の、有効ビット;データが転送されるならば、どこから
データが転送されるのかを示している、発生源(ソー
ス);データが転送されるならば、どこへデータが転送
されるのかを示している、宛先;要求したデータ経路が
“スケジュールされた”(即ち、許可された)ときに発
行すべきS_REPLYの型を示している、S_REP
LY型。データ経路スケジューラ360は、回転式優先
順位エンコーダとしてインプリメントされ、それゆえに
ラウンドロビンアービトレーションスキームを用いる。
(FFB論理ユニット以外の)論理ユニット370〜3
73からの要求が許可されるときに、それは、次のアー
ビトレーションサイクルに対して最も低い優先順位が割
り当てられる。FFB論理ユニットに対して、そのFI
FO375dの4つのデータ経路要求までは、データ経
路スケジューラ360が別のアービトレーションサイク
ルを実行しかつ他の要求をサービスする前にそれらが単
一要求であるかのようにデータ経路スケジューラ360
によってサービスされる。この特別の優先順位は、フレ
ームバッファが新しいイメージデータで素早く装填され
ることを確実にするためにFFBデータ経路要求に与え
られる。
【0198】FFB374は、指定されたアドレス範囲
が割り当てられ、かつその発生源または宛先がその指定
されたアドレス範囲に入る全てのデータ転送動作は、F
FBU論理ユニット373によって処理される。図28
を参照すると、代替実施例では、アクティブトランザク
ション状態アレー200(図示省略)は、各UPAポー
トに対する先入れ先出し(FIFO)トランザクション
要求キュー380によって補われる。トランザクション
がアクティベートされる度に、Dtagルックアップ論
理340は、上述したのと同じトランザクション表ルッ
クアップ方法を用いて、トランザクションを実行するた
めに種々の他のUPAポートへ送られるべき、もしあれ
ば、S_REQを決定するか、またはP_REQが進め
られるべきUPAポートを決定する。それらのS_RE
Q、並びにコヒーレントトランザクションに対するS_
REPLYは、それらが送られるべきUPAポートに対
するFIFOキュー380にDtagルックアップ論理
340によって記憶される。宛先UPAポートへシステ
ムコントローラによって進めされる非コヒーレントP_
REQは、システムコントローラの並列FIFO要求キ
ューバッファに記憶され、それゆえに非コヒーレントト
ランザクションは、コヒーレントトランザクションの進
行をブロックしない。
【0199】サブトランザクション要求は、対応トラン
ザクションがアクティベートされたのと同じ順序で要求
キュー380に記憶される。UPAポートの要求キュー
380の各サブトランザクション要求(S_REQ)
は、それがキュー380に記憶される順序で実行され
る。更に、S_REPLYは、対応トランザクションが
アクティベートされるのと同じ順序で要求キュー380
に記憶される。結果として、マスタクラス内のトランザ
クション及び各この文書において先に説明したUPAス
レーブポートによって実行されるトランザクションに対
する全ての順序付け要求事項は、要求キュー機構の動作
によって自動的に満たされる。この要求キュー機構は、
ある程度トランザクションの並列実行を低減する。例え
ば、多くの場合に、S_REPLY及びS_REQは、
並列でUPAポートによってサービスされると同時に、
S_REQは、S_REPLYをブロックすることがで
き、及びその逆もできる。しかしながら、キュー構造の
簡略化、そして2から8またはそれ以上のデータプロセ
ッサUPAポート及び一つ以上の非プロセッサUPAポ
ートに対するこのアーキテクチャを用いているシステム
においてまだ許容される高度の並列実行は、魅力的な性
能/コスト特性を提供する。
【0200】代替実施例 本発明は、2〜3の特定な実施例を参照して記載された
が、この記載は、本発明の説明のためであり本発明を限
定するものではない。種々の変更は、添付した特許請求
の範囲により画定された真の精神及び範疇から逸脱する
ことなく当業者により生起されうる。
【0201】
【発明の効果】本発明のコンピュータシステムは、シス
テムコントローラ;システムコントローラに結合された
複数のサブシステム;システムコントローラに結合され
た主メモリ;を備え、複数のサブシステムは、複数のデ
ータプロセッサを含み、複数のデータプロセッサのそれ
ぞれは、データの多重ブロックを記憶する対応キャッシ
ュメモリと、前記キャッシュメモリによって記憶された
各データブロックに対して一つのEtagを含んでい
る、マスタキャッシュタグ(Etags)の対応セット
とを有し、データプロセッサのそれぞれは、システムコ
ントローラへメモリトランザクション要求を送る、シス
テムコントローラに結合された、インターフェイスを含
み;キャッシュメモリを有するデータプロセッサのそれ
ぞれに対するインターフェイスは、データプロセッサの
他のものによりメモリトランザクション要求に対応して
いるシステムコントローラからキャッシュトランザクシ
ョン要求を受け取る回路素子を含み;各メモリトランザ
クション要求は、関連アドレス値を有し;システムコン
トローラは、それが所定のアクティベーション基準に一
致するときに各メモリトランザクション要求をアクティ
ベートし、かつ所定のアクティベーション基準に一致す
るまで各メモリトランザクション要求をブロックするト
ランザクションアクティベーション論理;トランザクシ
ョンに関連したアドレス値を表している各アクティベー
トされたトランザクションに対するデータを含んでいる
アクティブトランザクション状態データであり、トラン
ザクションアクティベーション論理によってアクティベ
ートされたメモリトランザクション要求を表している該
アクティブトランザクション状態データを記憶するアク
ティブトランザクション状態テーブル;それがトランザ
クションアクティベーション論理によってアクティベー
トされた後に各メモリトランザクション要求を処理する
メモリトランザクション要求論理;を備え、トランザク
ションアクティベーション論理は、各メモリトランザク
ション要求のアクティベーションがアクティベートされ
たメモリトランザクション要求のいずれかに関して所定
のアクティベーション基準に違反するか否かを検出する
ために各メモリトランザクション要求を全てのアクティ
ベートされたメモリトランザクション要求に対するアク
ティブトランザクション状態データと比較する論理を含
むので、総括的なトランザクションスループットにおけ
る改良に加えて低減された待ち時間を供給する。
【0202】また、本発明は、主メモリ及びそれぞれが
キャッシュメモリを有する複数のデータプロセッサに結
合されたシステムコントローラを有しているキャッシュ
コヒーレントマルチプロセッサシステムコントローラを
動作する方法であって、それぞれが関連アドレス値を有
しているメモリトランザクション要求を各データプロセ
ッサからシステムコントローラへ送り;それが所定アク
ティベーション基準に一致するときに各メモリトランザ
クション要求をアクティベートし、かつ所定アクティベ
ーション基準が一致するまで各メモリトランザクション
要求をブロックし;トランザクションに関連したアドレ
ス値を表している各アクティベートされたトランザクシ
ョンに対するデータを含んでいるアクティブトランザク
ション状態データであり、アクティベートされたメモリ
トランザクション要求を表しているアクティブトランザ
クション状態データを記憶し;それがトランザクション
アクティベーション論理によってアクティベートされた
後に各メモリトランザクション要求を処理する段階を具
備し、アクティベートする段階は、各メモリトランザク
ション要求のアクティベーションがアクティベートされ
たメモリトランザクション要求のいずれかに関して所定
アクティベーション基準に違反するか否かを検出するた
めに各メモリトランザクション要求を全てのアクティベ
ートされたメモリトランザクション要求に対する記憶さ
れたアクティブトランザクション状態データと比較する
ので、総括的なトランザクションスループットにおける
改良に加えて低減された待ち時間を供給する。
【図面の簡単な説明】
【図1】本発明を組み込んでいるコンピュータシステム
のブロック図である。
【図2】本発明の一実施例に用いるデータバス及びアド
レスバス構造を示しているコンピュータシステムのブロ
ック図である。
【図3】本発明の好ましい実施例のポートに関連した信
号ラインを示す図である。
【図4】本発明の好ましい実施例のポートで見出される
インターフェイス及びポートIDレジスタのブロック図
である。
【図5】データ転送トランザクションを実行する間に使
用する要求及びデータキューを示している、本発明を組
み込んでいるコンピュータシステムのブロック図であ
る。
【図6】本発明の好ましい実施例で用いるシステムコン
トローラ構造(System Controller Configuration) レジ
スタのブロック図である。
【図7】キャッシングUPAマスタポート及び関連UP
Aモジュールのキャッシュコントローラのブロック図で
ある。
【図8】本発明の好ましい実施例における一般的な読取
り/書込みデータフロートランザクションの簡略化した
フローチャートの一部である。
【図9】本発明の好ましい実施例における一般的な読取
り/書込みデータフロートランザクションの簡略化した
フローチャート一部である。
【図10】本発明の好ましい実施例における一般的な読
取り/書込みデータフロートランザクションの簡略化し
たフローチャートの一部である。
【図11】本発明の好ましい実施例における一般的な読
取り/書込みデータフロートランザクションの簡略化し
たフローチャート一部である。
【図12】コヒーレントキャッシュ書戻しオペレーショ
ンを取り扱うために使用する書戻しバッファ及びDta
g一時的(非常駐)バッファ(Dtag Transient Buffers)
を示す図である。
【図13】種々のトランザクション要求パケットに対す
るデータパケットフォーマットを示す図である。
【図14】種々のトランザクション要求パケットに対す
るデータパケットフォーマットを示す図である。
【図15】種々のトランザクション要求パケットに対す
るデータパケットフォーマットを示す図である。
【図16】種々のトランザクション要求パケットに対す
るデータパケットフォーマットを示す図である。
【図17】種々のトランザクション要求パケットに対す
るデータパケットフォーマットを示す図である。
【図18】本発明の好ましい実施例のEtagアレーの
各キャッシュエントリに対するキャッシュタグライン状
態の状態遷移図である。
【図19】本発明の好ましい実施例のDtagアレーの
各キャッシュエントリに対するキャッシュタグライン状
態の状態遷移図である。
【図20】トランザクションを起動する論理回路素子を
示す図である。
【図21】本発明の好ましい実施例のシステムコントロ
ーラによって用いられる状態情報データ構造のブロック
図である。
【図22】本発明の好ましい実施例のシステムコントロ
ーラによって用いられる状態情報データ構造の他のブロ
ック図である。
【図23】本発明の好ましい実施例のシステムコントロ
ーラによって用いられる状態情報データ構造の他のブロ
ック図である。
【図24】本発明の好ましい実施例のシステムコントロ
ーラによって用いられる状態情報データ構造の他のブロ
ック図である。
【図25】本発明の好ましい実施例のシステムコントロ
ーラのDtag参照及び更新論理のブロック図である。
【図26】本発明の好ましい実施例のシステムコントロ
ーラの S_Request及びS_Reply論理の
ブロック図である。
【図27】本発明の好ましい実施例のデータ経路スケジ
ューラのブロック図である。
【図28】本発明の第2の好ましい実施例のシステムコ
ントローラのS_Request及びS_Reply論
理のブロック図である。
【符号の説明】
───────────────────────────────────────────────────── フロントページの続き (72)発明者 サティアナラヤナ ニシュタラ アメリカ合衆国 カリフォルニア州 95014 クーパーティノ カントリー ス プリング コート 11522 (72)発明者 ウィリアム シー ヴァン ルー アメリカ合衆国 カリフォルニア州 94301 パロ アルト エマーソン スト リート 2330 (72)発明者 ケヴィン ノーモイル アメリカ合衆国 カリフォルニア州 95129 サン ホセ ボリナー ドライヴ 4708 (72)発明者 ポール ローウェンスタイン アメリカ合衆国 カリフォルニア州 94301 パロ アルト メルヴィル アベ ニュー 814 (72)発明者 ルイス エフ コフィン ザ サード アメリカ合衆国 カリフォルニア州 95124 サン ホセ ワイン コーク ウ ェイ 3444

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 システムコントローラ;前記システムコ
    ントローラに結合された複数のサブシステム;前記シス
    テムコントローラに結合された主メモリ;を備え、 前記複数のサブシステムは、複数のデータプロセッサを
    含み、前記複数のデータプロセッサのそれぞれは、デー
    タの多重ブロックを記憶する対応キャッシュメモリと、
    前記キャッシュメモリによって記憶された各データブロ
    ックに対して一つのEtagを含んでいる、マスタキャ
    ッシュタグ(Etags)の対応セットとを有し、 前記データプロセッサのそれぞれは、前記システムコン
    トローラへメモリトランザクション要求を送る、前記シ
    ステムコントローラに結合された、インターフェイスを
    含み;キャッシュメモリを有する前記データプロセッサ
    のそれぞれに対する前記インターフェイスは、前記デー
    タプロセッサの他のものによりメモリトランザクション
    要求に対応している前記システムコントローラからキャ
    ッシュトランザクション要求を受け取る回路素子を含
    み;各メモリトランザクション要求は、関連アドレス値
    を有し;前記システムコントローラは、 それが所定のアクティベーション基準に一致するときに
    各前記メモリトランザクション要求をアクティベート
    し、かつ前記所定のアクティベーション基準に一致する
    まで各前記メモリトランザクション要求をブロックする
    トランザクションアクティベーション論理;前記トラン
    ザクションに関連したアドレス値を表している各アクテ
    ィベートされたトランザクションに対するデータを含ん
    でいるアクティブトランザクション状態データであり、
    前記トランザクションアクティベーション論理によって
    アクティベートされたメモリトランザクション要求を表
    している該アクティブトランザクション状態データを記
    憶するアクティブトランザクション状態テーブル;それ
    が前記トランザクションアクティベーション論理によっ
    てアクティベートされた後に各前記メモリトランザクシ
    ョン要求を処理するメモリトランザクション要求論理;
    を備え、 前記トランザクションアクティベーション論理は、前記
    各メモリトランザクション要求のアクティベーションが
    前記アクティベートされたメモリトランザクション要求
    のいずれかに関して前記所定のアクティベーション基準
    に違反するか否かを検出するために前記各メモリトラン
    ザクション要求を全てのアクティベートされたメモリト
    ランザクション要求に対する前記アクティブトランザク
    ション状態データと比較する論理を含むことを特徴とす
    るコンピュータシステム。
  2. 【請求項2】 前記比較論理は、(A)前記メモリトラ
    ンザクション要求に関連した前記アドレス値のキャッシ
    ュインデックス部分が前記アクティブトランザクション
    状態テーブルに表された前記アクティベートされたメモ
    リトランザクション要求のいずれかに関連した前記アド
    レス値の対応部分と一致するときに、(B)前記メモリ
    トランザクション要求及び前記一致しているキャッシュ
    インデックスを有する前記アクティベートされたメモリ
    トランザクション要求が読取りトランザクション要求及
    び書戻しトランザクション要求を含まない限り、各前記
    メモリトランザクション要求をアクティベートすること
    から前記トランザクションアクティベーション論理をブ
    ロックすることを特徴とする請求項1に記載のコンピュ
    ータシステム。
  3. 【請求項3】 各前記データプロセッサに対する前記イ
    ンターフェイスは、前記システムコントローラへ送られ
    るべきメモリトランザクション要求を記憶する少なくと
    も二つの並列アウトバウンド要求キューを含み;前記メ
    モリトランザクション要求は、読取り要求及び書込み要
    求を含み;各メモリトランザクション要求は、読取られ
    るかまたは書込まれるべき関連データブロックに対する
    アドレスを指定し;前記システムコントローラは、第2
    のメモリトランザクション要求が第2のアウトバウンド
    要求キューに記憶されるときが第1のメモリトランザク
    ション要求が第1のアウトバウンド要求キューに記憶さ
    れるときよりも遅い場合であっても前記第1のアウトバ
    ウンド要求キューに記憶された前記第1のメモリトラン
    ザクション要求が前記システムコントローラによって前
    記第2のアウトバウンド要求キューに記憶された前記第
    2のメモリトランザクション要求よりも後で処理されう
    るように資源利用可能性に従って前記アウトバウンド要
    求キューに記憶された前記メモリトランザクション要求
    を処理することを特徴とする請求項1に記載のコンピュ
    ータシステム。
  4. 【請求項4】 前記データプロセッサは、各々前記シス
    テムコントローラが前記データプロセッサの同じものか
    らの読取り要求及び書戻し要求を並列で処理できるよう
    に読取り要求を第1の前記アウトバウンド要求キューに
    記憶しかつ書戻し要求を第2の前記アウトバウンド要求
    キューに記憶しかつ両方の参照アドレス値は、一致して
    いるキャッシュインデックス値を有することを特徴とす
    る請求項3に記載のコンピュータシステム。
  5. 【請求項5】 前記システムコントローラは、各前記デ
    ータプロセッサへメモリトランザクション要求を送りか
    つ各該データプロセッサから該メモリトランザクション
    要求を受け取る各該データプロセッサに結合したインタ
    ーフェイスを含み、前記インターフェイスは、各前記デ
    ータプロセッサへ送られるべきメモリトランザクション
    要求を記憶する少なくとも一つの出力要求キューを含
    み、前記出力要求キューに記憶された各前記メモリトラ
    ンザクション要求は、前記データプロセッサの要求して
    いるものから前記システムコントローラによって受け取
    った前記メモリトランザクション要求の一つに対応し;
    各前記データプロセッサは、前記メモリトランザクショ
    ン要求に関連した資源の利用可能性により前記システム
    コントローラへの送信に対する応答を発生することによ
    って受け取ったメモリトランザクション要求に応ずる受
    け取ったトランザクション処理論理を含み;前記受け取
    ったトランザクション処理論理は、受け取っているデー
    タプロセッサのキャッシュメモリに対するEtagsの
    指定されたものを無効にすることによって受け取ったE
    tag無効要求を処理する論理を含み;前記システムコ
    ントローラは、各前記キャッシュメモリに対する重複キ
    ャッシュタグ(Dtags)のセットを含み、各Dta
    gは、前記Etagsの一つに対応しかつDtag状態
    値及び対応Etagと同じアドレスインデックスを記憶
    し;前記Dtag状態値は、対応キャッシュメモリに記
    憶された対応データブロックが前記データプロセッサの
    一つによって変更されたデータを含むか否かを示し;前
    記メモリトランザクション要求論理は、 それが前記メモリトランザクション要求に対応している
    Dtagを含むか否かを決定するために各前記Dtag
    sのセットをアクセスするDtagルックアップ論理
    と;前記メモリトランザクション要求に基づいて有効か
    ら無効状態値へ指定されたDtag状態値を更新する論
    理を含んでいる、前記Dtag状態値を更新するDta
    g更新論理と;前記所定メモリトランザクション要求に
    よって指定されたアドレスに対応している、もしあれ
    ば、Dtags及びEtagsの無効を必要とする前記
    データプロセッサの要求しているものからの各所定メモ
    リトランザクション要求を処理する論理とを含み、 前記処理論理は、(A)どのデータプロセッサが、もし
    あれば、無効を必要とするEtagを有するかを識別す
    るために前記Dtagルックアップ論理を呼出し、
    (B)前記識別されたデータプロセッサへEtag無効
    トランザクション要求を送り、(C)前記所定メモリト
    ランザクション要求を終了するために必要な、もしあら
    ば、データ転送を実行し、かつ(D)前記Etagsが
    無効にされたことを確認する前記識別されたデータプロ
    セッサから応答を受け取る論理を含み;前記データ転送
    は、前記識別されたデータプロセッサからの前記応答を
    受け取る前に前記処理論理によって始動されることを特
    徴とする請求項1に記載のコンピュータシステム。
  6. 【請求項6】 主メモリ及びそれぞれがキャッシュメモ
    リを有する複数のデータプロセッサに結合されたシステ
    ムコントローラを有しているキャッシュコヒーレントマ
    ルチプロセッサシステムコントローラを動作する方法で
    あって、 それぞれが関連アドレス値を有しているメモリトランザ
    クション要求を各データプロセッサから前記システムコ
    ントローラへ送り;それが所定アクティベーション基準
    に一致するときに各前記メモリトランザクション要求を
    アクティベートし、かつ前記所定アクティベーション基
    準が一致するまで各前記メモリトランザクション要求を
    ブロックし;前記トランザクションに関連したアドレス
    値を表している各アクティベートされたトランザクショ
    ンに対するデータを含んでいるアクティブトランザクシ
    ョン状態データであり、アクティベートされたメモリト
    ランザクション要求を表している該アクティブトランザ
    クション状態データを記憶し;それが前記トランザクシ
    ョンアクティベーション論理によってアクティベートさ
    れた後に各前記メモリトランザクション要求を処理する
    段階を具備し、 前記アクティベートする段階は、前記各メモリトランザ
    クション要求のアクティベーションが前記アクティベー
    トされたメモリトランザクション要求のいずれかに関し
    て前記所定アクティベーション基準に違反するか否かを
    検出するために前記各メモリトランザクション要求を全
    てのアクティベートされたメモリトランザクション要求
    に対する前記記憶されたアクティブトランザクション状
    態データと比較することを含むことを特徴とする方法。
  7. 【請求項7】 前記比較段階は、(A)前記メモリトラ
    ンザクション要求に関連した前記アドレス値のキャッシ
    ュインデックス部分が前記アクティブトランザクション
    状態テーブルに表された前記アクティベートされたメモ
    リトランザクション要求のいずれかに関連した前記アド
    レス値の対応部分と一致するときに、(B)前記メモリ
    トランザクション要求及び前記一致しているキャッシュ
    インデックスを有する前記アクティベートされたメモリ
    トランザクション要求が読取りトランザクション要求及
    び書戻しトランザクション要求を含まない限り、各前記
    メモリトランザクション要求をアクティベートすること
    から前記アクティベートする段階をブロックすることを
    特徴とする請求項6に記載の方法。
  8. 【請求項8】 各前記データプロセッサは、少なくとも
    二つの並列アウトバウンド要求キューに前記システムコ
    ントローラへ送られるべき前記メモリトランザクション
    要求を記憶し;前記メモリトランザクション要求は、読
    取り要求及び書込み要求を含み;各メモリトランザクシ
    ョン要求は、読取られるかまたは書込まれるべき関連デ
    ータブロックに対するアドレスを指定し;前記処理段階
    は、第2のメモリトランザクション要求が第2のアウト
    バウンド要求キューに記憶されるときが第1のメモリト
    ランザクション要求が第1のアウトバウンド要求キュー
    に記憶されるときよりも遅い場合であっても前記第1の
    アウトバウンド要求キューに記憶された前記第1のメモ
    リトランザクション要求が前記システムコントローラに
    よって前記第2のアウトバウンド要求キューに記憶され
    た前記第2のメモリトランザクション要求よりも後で処
    理されうるように資源利用可能性に従って前記アウトバ
    ウンド要求キューに記憶された前記メモリトランザクシ
    ョン要求を処理することを含むこと特徴とする請求項6
    に記載の方法。
  9. 【請求項9】 各前記データプロセッサは、前記システ
    ムコントローラが前記データプロセッサの同じものから
    の読取り要求及び書戻し要求を並列で処理できるように
    読取り要求を第1の前記アウトバウンド要求キューに記
    憶しかつ書戻し要求を第2の前記アウトバウンド要求キ
    ューに記憶しかつ両方の参照アドレス値は、一致してい
    るキャッシュインデックス値を有することを特徴とする
    請求項8に記載の方法。
  10. 【請求項10】 各データプロセッサで、前記データプ
    ロセッサのキャッシュメモリによって記憶された各デー
    タブロックに対する一つのEtagを含んでいる、マス
    タキャッシュタグのセット(Etags)を記憶し;各
    データプロセッサで、前記メモリトランザクション要求
    に関連した資源の利用可能性により前記システムコント
    ローラへの送信に対する応答を生成することによって受
    け取ったメモリトランザクション要求に応じ;各データ
    プロセッサで、受け取っているデータプロセッサのキャ
    ッシュメモリに対するEtagsの指定されたものを無
    効にすることによって受け取ったEtag無効要求を処
    理し;前記システムコントローラにおいて、各前記キャ
    ッシュメモリに対する重複キャッシュタグ(Dtag
    s)のセットを記憶し、各Dtagは、前記Etags
    の一つに対応しかつDtag状態値及び対応Etagと
    同じアドレスインデックスを記憶し、;前記Dtag状
    態値は、対応キャッシュメモリに記憶された対応データ
    ブロックが前記データプロセッサの一つによって変更さ
    れたデータを含むか否かを示し;前記システムコントロ
    ーラでは:それが前記メモリトランザクション要求に対
    応しているDtagを含むか否かを決定するために各前
    記Dtagsのセットをアクセスし;前記メモリトラン
    ザクション要求に基づいて有効から無効状態値へ指定さ
    れたDtag状態値を更新することを含んでいる、前記
    Dtag状態値を更新し;前記所定メモリトランザクシ
    ョン要求によって指定されたアドレスに対応している、
    もしあれば、Dtags及びEtagsの無効を必要と
    する前記データプロセッサの要求しているものからの各
    所定メモリトランザクション要求に対して、(A)どの
    データプロセッサが、もしあれば、無効を必要とするE
    tagを有するかを識別するために前記Dtagルック
    アップ論理を呼出し、(B)前記識別されたデータプロ
    セッサへEtag無効トランザクション要求を送り、
    (C)前記所定メモリトランザクション要求を終了する
    ために必要な、もしあらば、データ転送を実行し、かつ
    (D)前記Etagsが無効にされたことを確認する前
    記識別されたデータプロセッサから応答を受け取る論理
    を含み;前記データ転送は、前記識別されたデータプロ
    セッサからの前記応答を受け取る前に前記処理論理によ
    って始動されることを特徴とする請求項6に記載の方
    法。
JP8078711A 1995-03-31 1996-04-01 パケット交換型キャッシュコヒーレントマルチプロセッサシステムにおけるメモリトランザクション実行を制御するトランザクションアクティベーションプロセッサ Pending JPH09114794A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/414,772 US5655100A (en) 1995-03-31 1995-03-31 Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system
US08/414772 1995-03-31

Publications (1)

Publication Number Publication Date
JPH09114794A true JPH09114794A (ja) 1997-05-02

Family

ID=23642901

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8078711A Pending JPH09114794A (ja) 1995-03-31 1996-04-01 パケット交換型キャッシュコヒーレントマルチプロセッサシステムにおけるメモリトランザクション実行を制御するトランザクションアクティベーションプロセッサ

Country Status (3)

Country Link
US (2) US5655100A (ja)
EP (1) EP0735483A1 (ja)
JP (1) JPH09114794A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005539282A (ja) * 2002-01-09 2005-12-22 インターナショナル・ビジネス・マシーンズ・コーポレーション 単一のコヒーレントなシステム内の分散コンピュータ・ノードにキャッシュ・コヒーレンスを提供するのにグローバル・スヌープを使用する方法および装置
JP2015519678A (ja) * 2013-03-14 2015-07-09 オラクル・インターナショナル・コーポレイション 部分的に順序付けされたネットワーク上におけるブロードキャストキャッシュコヒーレンス

Families Citing this family (227)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5684977A (en) * 1995-03-31 1997-11-04 Sun Microsystems, Inc. Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system
TW469376B (en) * 1995-11-06 2001-12-21 Ibm A method and apparatus for modifying data in a multi-processor data processing system
US5940860A (en) * 1996-07-01 1999-08-17 Sun Microsystems, Inc. Methods and apparatus for substantially memory-less coherence transformer for connecting computer node coherence domains
US5829034A (en) * 1996-07-01 1998-10-27 Sun Microsystems, Inc. Method and apparatus for a coherence transformer with limited memory for connecting computer system coherence domains
US5893165A (en) * 1996-07-01 1999-04-06 Sun Microsystems, Inc. System and method for parallel execution of memory transactions using multiple memory models, including SSO, TSO, PSO and RMO
US6076147A (en) * 1997-06-24 2000-06-13 Sun Microsystems, Inc. Non-inclusive cache system using pipelined snoop bus
US6061766A (en) * 1997-06-24 2000-05-09 Sun Microsystems, Inc. Non-inclusive cache method using pipelined snoop bus
US6311256B2 (en) * 1997-06-30 2001-10-30 Emc Corporation Command insertion and reordering at the same storage controller
JPH1173370A (ja) * 1997-08-29 1999-03-16 Fujitsu Ltd 情報処理装置
US6260117B1 (en) * 1997-09-18 2001-07-10 International Business Machines Corporation Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency
US6108752A (en) * 1997-10-24 2000-08-22 Compaq Computer Corporation Method and apparatus for delaying victim writes in a switch-based multi-processor system to maintain data coherency
US6154816A (en) * 1997-10-24 2000-11-28 Compaq Computer Corp. Low occupancy protocol for managing concurrent transactions with dependencies
US6122714A (en) * 1997-10-24 2000-09-19 Compaq Computer Corp. Order supporting mechanisms for use in a switch-based multi-processor system
US6442533B1 (en) * 1997-10-29 2002-08-27 William H. Hinkle Multi-processing financial transaction processing system
US6633945B1 (en) 1997-12-07 2003-10-14 Conexant Systems, Inc. Fully connected cache coherent multiprocessing systems
US6418537B1 (en) 1997-12-07 2002-07-09 Conexant Systems, Inc. Accurate timing calibration for each of multiple high-speed clocked receivers using a single DLL
US6065077A (en) 1997-12-07 2000-05-16 Hotrail, Inc. Apparatus and method for a cache coherent shared memory multiprocessing system
US6292705B1 (en) 1998-09-29 2001-09-18 Conexant Systems, Inc. Method and apparatus for address transfers, system serialization, and centralized cache and transaction control, in a symetric multiprocessor system
US6516442B1 (en) 1997-12-07 2003-02-04 Conexant Systems, Inc. Channel interface and protocols for cache coherency in a scalable symmetric multiprocessor system
US5909574A (en) * 1997-12-23 1999-06-01 Northern Telecom Limited Computing system with exception handler and method of handling exceptions in a computing system
US6078981A (en) * 1997-12-29 2000-06-20 Intel Corporation Transaction stall technique to prevent livelock in multiple-processor systems
US6141734A (en) * 1998-02-03 2000-10-31 Compaq Computer Corporation Method and apparatus for optimizing the performance of LDxL and STxC interlock instructions in the context of a write invalidate protocol
US7200623B2 (en) * 1998-11-24 2007-04-03 Oracle International Corp. Methods to perform disk writes in a distributed shared disk system needing consistency across failures
US7930278B2 (en) * 1998-02-13 2011-04-19 Oracle International Corporation Methods to perform disk writes in a distributed shared disk system needing consistency across failures
US6175930B1 (en) * 1998-02-17 2001-01-16 International Business Machines Corporation Demand based sync bus operation
US6279065B1 (en) * 1998-06-03 2001-08-21 Compaq Computer Corporation Computer system with improved memory access
US6397302B1 (en) * 1998-06-18 2002-05-28 Compaq Information Technologies Group, L.P. Method and apparatus for developing multiprocessor cache control protocols by presenting a clean victim signal to an external system
US6510164B1 (en) * 1998-11-16 2003-01-21 Sun Microsystems, Inc. User-level dedicated interface for IP applications in a data packet switching and load balancing system
US6272136B1 (en) * 1998-11-16 2001-08-07 Sun Microsystems, Incorporated Pseudo-interface between control and switching modules of a data packet switching and load balancing system
US6424621B1 (en) 1998-11-17 2002-07-23 Sun Microsystems, Inc. Software interface between switching module and operating system of a data packet switching and load balancing system
US6272522B1 (en) 1998-11-17 2001-08-07 Sun Microsystems, Incorporated Computer data packet switching and load balancing system using a general-purpose multiprocessor architecture
JP4036992B2 (ja) * 1998-12-17 2008-01-23 富士通株式会社 キャッシュモジュール間でデータを動的に管理するキャッシュ制御装置および方法
US6393505B1 (en) * 1999-01-06 2002-05-21 Dvdo, Inc. Methods and apparatus for data bus arbitration
GB2345987B (en) * 1999-01-19 2003-08-06 Advanced Risc Mach Ltd Memory control within data processing systems
US6513084B1 (en) * 1999-06-29 2003-01-28 Microsoft Corporation Arbitration of state changes
US6469988B1 (en) 1999-07-08 2002-10-22 Conexant Systems, Inc. Low-level circuit implementation of signal flow graphs for real-time signal processing of high-speed digital signals
US6678838B1 (en) * 1999-08-23 2004-01-13 Advanced Micro Devices, Inc. Method to track master contribution information in a write buffer
US6557048B1 (en) * 1999-11-01 2003-04-29 Advanced Micro Devices, Inc. Computer system implementing a system and method for ordering input/output (IO) memory operations within a coherent portion thereof
US6347360B1 (en) * 2000-02-25 2002-02-12 Sun Microsystems, Inc. Apparatus and method for preventing cache data eviction during an atomic operation
US6640287B2 (en) * 2000-06-10 2003-10-28 Hewlett-Packard Development Company, L.P. Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests
US6434673B1 (en) 2000-06-30 2002-08-13 Intel Corporation Optimized configurable scheme for demand based resource sharing of request queues in a cache controller
US6438658B1 (en) * 2000-06-30 2002-08-20 Intel Corporation Fast invalidation scheme for caches
US6826619B1 (en) 2000-08-21 2004-11-30 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6487643B1 (en) 2000-09-29 2002-11-26 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6772298B2 (en) 2000-12-20 2004-08-03 Intel Corporation Method and apparatus for invalidating a cache line without data return in a multi-node architecture
KR100713097B1 (ko) * 2000-12-26 2007-05-02 파이오니아 가부시키가이샤 정보 기록 매체, 및 정보 재생 장치 및 방법
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US6791412B2 (en) * 2000-12-28 2004-09-14 Intel Corporation Differential amplifier output stage
US6721918B2 (en) 2000-12-29 2004-04-13 Intel Corporation Method and apparatus for encoding a bus to minimize simultaneous switching outputs effect
US20020087766A1 (en) * 2000-12-29 2002-07-04 Akhilesh Kumar Method and apparatus to implement a locked-bus transaction
US20020087775A1 (en) * 2000-12-29 2002-07-04 Looi Lily P. Apparatus and method for interrupt delivery
FR2819321B1 (fr) * 2001-01-10 2005-01-21 Amadeus Procede de traitement et d'acces a des donnees dans un systeme de reservation par ordinateur, et systeme de mise en oeuvre
US6775792B2 (en) * 2001-01-29 2004-08-10 Snap Appliance, Inc. Discrete mapping of parity blocks
US7054927B2 (en) * 2001-01-29 2006-05-30 Adaptec, Inc. File system metadata describing server directory information
US6990667B2 (en) 2001-01-29 2006-01-24 Adaptec, Inc. Server-independent object positioning for load balancing drives and servers
US6862692B2 (en) * 2001-01-29 2005-03-01 Adaptec, Inc. Dynamic redistribution of parity groups
US6721813B2 (en) * 2001-01-30 2004-04-13 Advanced Micro Devices, Inc. Computer system implementing a system and method for tracking the progress of posted write transactions
US11229472B2 (en) 2001-06-12 2022-01-25 Cilag Gmbh International Modular battery powered handheld surgical instrument with multiple magnetic position sensors
US6971098B2 (en) 2001-06-27 2005-11-29 Intel Corporation Method and apparatus for managing transaction requests in a multi-node architecture
US7290915B2 (en) * 2001-07-20 2007-11-06 Solovay Kenneth S Light coupling assembly
US7035908B1 (en) * 2001-07-26 2006-04-25 Lsi Logic Corporation Method for multiprocessor communication within a shared memory architecture
CN100570577C (zh) * 2001-08-29 2009-12-16 联发科技股份有限公司 高速程序跟踪
US7274692B1 (en) * 2001-10-01 2007-09-25 Advanced Micro Devices, Inc. Method and apparatus for routing packets that have multiple destinations
US7295563B2 (en) * 2001-10-01 2007-11-13 Advanced Micro Devices, Inc. Method and apparatus for routing packets that have ordering requirements
US7221678B1 (en) 2001-10-01 2007-05-22 Advanced Micro Devices, Inc. Method and apparatus for routing packets
US6981110B1 (en) 2001-10-23 2005-12-27 Stephen Waller Melvin Hardware enforced virtual sequentiality
US20030115402A1 (en) * 2001-11-16 2003-06-19 Fredrik Dahlgren Multiprocessor system
US6842827B2 (en) 2002-01-02 2005-01-11 Intel Corporation Cache coherency arrangement to enhance inbound bandwidth
US7051180B2 (en) 2002-01-09 2006-05-23 International Business Machines Corporation Masterless building block binding to partitions using identifiers and indicators
US6807586B2 (en) * 2002-01-09 2004-10-19 International Business Machines Corporation Increased computer peripheral throughput by using data available withholding
US6910108B2 (en) * 2002-01-09 2005-06-21 International Business Machines Corporation Hardware support for partitioning a multiprocessor system to allow distinct operating systems
US6823498B2 (en) * 2002-01-09 2004-11-23 International Business Machines Corporation Masterless building block binding to partitions
US6934835B2 (en) * 2002-01-09 2005-08-23 International Business Machines Corporation Building block removal from partitions
US6785779B2 (en) * 2002-01-09 2004-08-31 International Business Machines Company Multi-level classification method for transaction address conflicts for ensuring efficient ordering in a two-level snoopy cache architecture
US6983348B2 (en) * 2002-01-24 2006-01-03 Intel Corporation Methods and apparatus for cache intervention
US7210006B2 (en) * 2002-06-28 2007-04-24 Sun Microsystems, Inc. Computer system supporting read-to-write-back transactions for I/O devices
EP1376370B1 (en) * 2002-06-28 2017-06-14 Oracle America, Inc. Mechanism for starvation avoidance while maintaining cache consistency in computer systems
US7095646B2 (en) 2002-07-17 2006-08-22 Freescale Semiconductor, Inc. Multi-state magnetoresistance random access cell with improved memory storage density
US7146607B2 (en) * 2002-09-17 2006-12-05 International Business Machines Corporation Method and system for transparent dynamic optimization in a multiprocessing environment
US8108843B2 (en) * 2002-09-17 2012-01-31 International Business Machines Corporation Hybrid mechanism for more efficient emulation and method therefor
US7496494B2 (en) * 2002-09-17 2009-02-24 International Business Machines Corporation Method and system for multiprocessor emulation on a multiprocessor host system
US7953588B2 (en) * 2002-09-17 2011-05-31 International Business Machines Corporation Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host
US9043194B2 (en) * 2002-09-17 2015-05-26 International Business Machines Corporation Method and system for efficient emulation of multiprocessor memory consistency
US7051163B2 (en) * 2002-10-03 2006-05-23 Hewlett-Packard Development Company, L.P. Directory structure permitting efficient write-backs in a shared memory computer system
US6895476B2 (en) * 2002-10-03 2005-05-17 Hewlett-Packard Development Company, L.P. Retry-based late race resolution mechanism for a computer system
US7000080B2 (en) * 2002-10-03 2006-02-14 Hewlett-Packard Development Company, L.P. Channel-based late race resolution mechanism for a computer system
US7024520B2 (en) * 2002-10-03 2006-04-04 Hewlett-Packard Development Company, L.P. System and method enabling efficient cache line reuse in a computer system
US7003635B2 (en) * 2002-10-03 2006-02-21 Hewlett-Packard Development Company, L.P. Generalized active inheritance consistency mechanism having linked writes
US6892290B2 (en) * 2002-10-03 2005-05-10 Hewlett-Packard Development Company, L.P. Linked-list early race resolution mechanism
US6990559B2 (en) * 2002-10-03 2006-01-24 Hewlett-Packard Development Company, L.P. Mechanism for resolving ambiguous invalidates in a computer system
US7362772B1 (en) * 2002-12-13 2008-04-22 Nvidia Corporation Network processing pipeline chipset for routing and host packet processing
US6832268B2 (en) * 2002-12-19 2004-12-14 Intel Corporation Mechanism to guarantee forward progress for incoming coherent input/output (I/O) transactions for caching I/O agent on address conflict with processor transactions
US7290093B2 (en) * 2003-01-07 2007-10-30 Intel Corporation Cache memory to support a processor's power mode of operation
US20040153611A1 (en) * 2003-02-04 2004-08-05 Sujat Jamil Methods and apparatus for detecting an address conflict
US7287126B2 (en) * 2003-07-30 2007-10-23 Intel Corporation Methods and apparatus for maintaining cache coherency
US7353341B2 (en) * 2004-06-03 2008-04-01 International Business Machines Corporation System and method for canceling write back operation during simultaneous snoop push or snoop kill operation in write back caches
US7484122B2 (en) * 2004-06-17 2009-01-27 International Business Machines Corporation Controlling timing of execution of test instruction by target computing device
US8219379B2 (en) * 2004-11-29 2012-07-10 Arm Limited System, method and computer program product for testing software
US7474658B2 (en) * 2005-02-10 2009-01-06 International Business Machines Corporation Data processing system, method and interconnect fabric supporting concurrent operations of varying broadcast scope
US7373462B2 (en) * 2005-03-29 2008-05-13 International Business Machines Corporation Snoop filter for filtering snoop requests
US7392351B2 (en) * 2005-03-29 2008-06-24 International Business Machines Corporation Method and apparatus for filtering snoop requests using stream registers
US7386683B2 (en) * 2005-03-29 2008-06-10 International Business Machines Corporation Method and apparatus for filtering snoop requests in a point-to-point interconnect architecture
US7386685B2 (en) * 2005-03-29 2008-06-10 International Busniess Machines Corporation Method and apparatus for filtering snoop requests using multiple snoop caches
JP4327238B2 (ja) * 2006-02-28 2009-09-09 富士通株式会社 システムコントローラおよびキャッシュ制御方法
US20080056230A1 (en) * 2006-08-29 2008-03-06 Santhanakrishnan Geeyarpuram N Opportunistic channel unblocking mechanism for ordered channels in a point-to-point interconnect
KR20080046858A (ko) * 2006-11-23 2008-05-28 엘지전자 주식회사 미디어 싱크 기기, 미이어 소스 기기 및 미디어 싱크기기의 제어 방법
US20090064141A1 (en) * 2007-08-29 2009-03-05 Microsoft Corporation Efficient utilization of transactions in computing tasks
US8185695B2 (en) * 2008-06-30 2012-05-22 Advanced Micro Devices, Inc. Snoop filtering mechanism
US9089360B2 (en) 2008-08-06 2015-07-28 Ethicon Endo-Surgery, Inc. Devices and techniques for cutting and coagulating tissue
US8663220B2 (en) 2009-07-15 2014-03-04 Ethicon Endo-Surgery, Inc. Ultrasonic surgical instruments
US10441345B2 (en) 2009-10-09 2019-10-15 Ethicon Llc Surgical generator for ultrasonic and electrosurgical devices
US11090104B2 (en) 2009-10-09 2021-08-17 Cilag Gmbh International Surgical generator for ultrasonic and electrosurgical devices
US8986302B2 (en) 2009-10-09 2015-03-24 Ethicon Endo-Surgery, Inc. Surgical generator for ultrasonic and electrosurgical devices
US8510334B2 (en) * 2009-11-05 2013-08-13 Oracle International Corporation Lock manager on disk
US8469981B2 (en) 2010-02-11 2013-06-25 Ethicon Endo-Surgery, Inc. Rotatable cutting implement arrangements for ultrasonic surgical instruments
US8795327B2 (en) 2010-07-22 2014-08-05 Ethicon Endo-Surgery, Inc. Electrosurgical instrument with separate closure and cutting members
US9192431B2 (en) 2010-07-23 2015-11-24 Ethicon Endo-Surgery, Inc. Electrosurgical cutting and sealing instrument
US8756378B2 (en) * 2011-02-17 2014-06-17 Oracle International Corporation Broadcast protocol for a network of caches
US9259265B2 (en) 2011-07-22 2016-02-16 Ethicon Endo-Surgery, Llc Surgical instruments for tensioning tissue
JP6165780B2 (ja) 2012-02-10 2017-07-19 エシコン・エンド−サージェリィ・インコーポレイテッドEthicon Endo−Surgery,Inc. ロボット制御式の手術器具
US9439668B2 (en) 2012-04-09 2016-09-13 Ethicon Endo-Surgery, Llc Switch arrangements for ultrasonic surgical instruments
US9367323B2 (en) 2012-06-15 2016-06-14 International Business Machines Corporation Processor assist facility
US9772854B2 (en) 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US9336046B2 (en) 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9436477B2 (en) 2012-06-15 2016-09-06 International Business Machines Corporation Transaction abort instruction
US8688661B2 (en) 2012-06-15 2014-04-01 International Business Machines Corporation Transactional processing
US9361115B2 (en) 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US8966324B2 (en) 2012-06-15 2015-02-24 International Business Machines Corporation Transactional execution branch indications
US9442737B2 (en) 2012-06-15 2016-09-13 International Business Machines Corporation Restricting processing within a processor to facilitate transaction completion
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US10437602B2 (en) 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US20130339680A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US8682877B2 (en) 2012-06-15 2014-03-25 International Business Machines Corporation Constrained transaction execution
US9317460B2 (en) 2012-06-15 2016-04-19 International Business Machines Corporation Program event recording within a transactional environment
US8880959B2 (en) 2012-06-15 2014-11-04 International Business Machines Corporation Transaction diagnostic block
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US20140005705A1 (en) 2012-06-29 2014-01-02 Ethicon Endo-Surgery, Inc. Surgical instruments with articulating shafts
US9326788B2 (en) 2012-06-29 2016-05-03 Ethicon Endo-Surgery, Llc Lockout mechanism for use with robotic electrosurgical device
US9198714B2 (en) 2012-06-29 2015-12-01 Ethicon Endo-Surgery, Inc. Haptic feedback devices for surgical robot
US9408622B2 (en) 2012-06-29 2016-08-09 Ethicon Endo-Surgery, Llc Surgical instruments with articulating shafts
US9226767B2 (en) 2012-06-29 2016-01-05 Ethicon Endo-Surgery, Inc. Closed feedback control for electrosurgical device
US20140005702A1 (en) 2012-06-29 2014-01-02 Ethicon Endo-Surgery, Inc. Ultrasonic surgical instruments with distally positioned transducers
US9393037B2 (en) 2012-06-29 2016-07-19 Ethicon Endo-Surgery, Llc Surgical instruments with articulating shafts
US9351754B2 (en) 2012-06-29 2016-05-31 Ethicon Endo-Surgery, Llc Ultrasonic surgical instruments with distally positioned jaw assemblies
US9095367B2 (en) 2012-10-22 2015-08-04 Ethicon Endo-Surgery, Inc. Flexible harmonic waveguides/blades for surgical instruments
US20140135804A1 (en) 2012-11-15 2014-05-15 Ethicon Endo-Surgery, Inc. Ultrasonic and electrosurgical devices
US9814514B2 (en) 2013-09-13 2017-11-14 Ethicon Llc Electrosurgical (RF) medical instruments for cutting and coagulating tissue
US9265926B2 (en) 2013-11-08 2016-02-23 Ethicon Endo-Surgery, Llc Electrosurgical devices
GB2521228A (en) 2013-12-16 2015-06-17 Ethicon Endo Surgery Inc Medical device
US9795436B2 (en) 2014-01-07 2017-10-24 Ethicon Llc Harvesting energy from a surgical generator
US9547553B1 (en) 2014-03-10 2017-01-17 Parallel Machines Ltd. Data resiliency in a shared memory pool
US9554854B2 (en) 2014-03-18 2017-01-31 Ethicon Endo-Surgery, Llc Detecting short circuits in electrosurgical medical devices
US10463421B2 (en) 2014-03-27 2019-11-05 Ethicon Llc Two stage trigger, clamp and cut bipolar vessel sealer
US10092310B2 (en) 2014-03-27 2018-10-09 Ethicon Llc Electrosurgical devices
US9737355B2 (en) 2014-03-31 2017-08-22 Ethicon Llc Controlling impedance rise in electrosurgical medical devices
US9781027B1 (en) 2014-04-06 2017-10-03 Parallel Machines Ltd. Systems and methods to communicate with external destinations via a memory network
US9913680B2 (en) 2014-04-15 2018-03-13 Ethicon Llc Software algorithms for electrosurgical instruments
US9529622B1 (en) 2014-12-09 2016-12-27 Parallel Machines Ltd. Systems and methods for automatic generation of task-splitting code
US9690713B1 (en) 2014-04-22 2017-06-27 Parallel Machines Ltd. Systems and methods for effectively interacting with a flash memory
US9594688B1 (en) 2014-12-09 2017-03-14 Parallel Machines Ltd. Systems and methods for executing actions using cached data
US10285724B2 (en) 2014-07-31 2019-05-14 Ethicon Llc Actuation mechanisms and load adjustment assemblies for surgical instruments
US10639092B2 (en) 2014-12-08 2020-05-05 Ethicon Llc Electrode configurations for surgical instruments
US9753873B1 (en) 2014-12-09 2017-09-05 Parallel Machines Ltd. Systems and methods for key-value transactions
US9639473B1 (en) 2014-12-09 2017-05-02 Parallel Machines Ltd. Utilizing a cache mechanism by copying a data set from a cache-disabled memory location to a cache-enabled memory location
US9781225B1 (en) 2014-12-09 2017-10-03 Parallel Machines Ltd. Systems and methods for cache streams
US9690705B1 (en) 2014-12-09 2017-06-27 Parallel Machines Ltd. Systems and methods for processing data sets according to an instructed order
US10245095B2 (en) 2015-02-06 2019-04-02 Ethicon Llc Electrosurgical instrument with rotation and articulation mechanisms
US10321950B2 (en) 2015-03-17 2019-06-18 Ethicon Llc Managing tissue treatment
US10342602B2 (en) 2015-03-17 2019-07-09 Ethicon Llc Managing tissue treatment
US10595929B2 (en) 2015-03-24 2020-03-24 Ethicon Llc Surgical instruments with firing system overload protection mechanisms
US10034704B2 (en) 2015-06-30 2018-07-31 Ethicon Llc Surgical instrument with user adaptable algorithms
US11129669B2 (en) 2015-06-30 2021-09-28 Cilag Gmbh International Surgical system with user adaptable techniques based on tissue type
US10765470B2 (en) 2015-06-30 2020-09-08 Ethicon Llc Surgical system with user adaptable techniques employing simultaneous energy modalities based on tissue parameters
US10898256B2 (en) 2015-06-30 2021-01-26 Ethicon Llc Surgical system with user adaptable techniques based on tissue impedance
US11051873B2 (en) 2015-06-30 2021-07-06 Cilag Gmbh International Surgical system with user adaptable techniques employing multiple energy modalities based on tissue parameters
US20170086909A1 (en) 2015-09-30 2017-03-30 Ethicon Endo-Surgery, Llc Frequency agile generator for a surgical instrument
US10595930B2 (en) 2015-10-16 2020-03-24 Ethicon Llc Electrode wiping surgical device
US10235176B2 (en) 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10179022B2 (en) 2015-12-30 2019-01-15 Ethicon Llc Jaw position impedance limiter for electrosurgical instrument
US10575892B2 (en) 2015-12-31 2020-03-03 Ethicon Llc Adapter for electrical surgical instruments
US11229471B2 (en) 2016-01-15 2022-01-25 Cilag Gmbh International Modular battery powered handheld surgical instrument with selective application of energy based on tissue characterization
US11129670B2 (en) 2016-01-15 2021-09-28 Cilag Gmbh International Modular battery powered handheld surgical instrument with selective application of energy based on button displacement, intensity, or local tissue characterization
US10716615B2 (en) 2016-01-15 2020-07-21 Ethicon Llc Modular battery powered handheld surgical instrument with curved end effectors having asymmetric engagement between jaw and blade
US10842523B2 (en) 2016-01-15 2020-11-24 Ethicon Llc Modular battery powered handheld surgical instrument and methods therefor
US10555769B2 (en) 2016-02-22 2020-02-11 Ethicon Llc Flexible circuits for electrosurgical instrument
US10485607B2 (en) 2016-04-29 2019-11-26 Ethicon Llc Jaw structure with distal closure for electrosurgical instruments
US10702329B2 (en) 2016-04-29 2020-07-07 Ethicon Llc Jaw structure with distal post for electrosurgical instruments
US10646269B2 (en) 2016-04-29 2020-05-12 Ethicon Llc Non-linear jaw gap for electrosurgical instruments
US10456193B2 (en) 2016-05-03 2019-10-29 Ethicon Llc Medical device with a bilateral jaw configuration for nerve stimulation
US10376305B2 (en) 2016-08-05 2019-08-13 Ethicon Llc Methods and systems for advanced harmonic energy
US11266430B2 (en) 2016-11-29 2022-03-08 Cilag Gmbh International End effector control and calibration
WO2019152772A1 (en) 2018-02-02 2019-08-08 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
US20210042100A1 (en) 2018-02-02 2021-02-11 Dover Microsystems, Inc. System and method for translating mapping policy into code
US11080188B1 (en) 2018-03-28 2021-08-03 Apple Inc. Method to ensure forward progress of a processor in the presence of persistent external cache/TLB maintenance requests
US11797398B2 (en) 2018-04-30 2023-10-24 Dover Microsystems, Inc. Systems and methods for checking safety properties
US11275632B2 (en) 2018-09-14 2022-03-15 Advanced Micro Devices, Inc. Broadcast command and response
WO2020097179A1 (en) 2018-11-06 2020-05-14 Dover Microsystems, Inc. Systems and methods for stalling host processor
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US11113262B2 (en) * 2019-04-01 2021-09-07 Sap Se Time-efficient lock release in database systems
CN113010173A (zh) 2019-12-19 2021-06-22 超威半导体(上海)有限公司 并行处理中矩阵数据广播的方法
CN113094099A (zh) 2019-12-23 2021-07-09 超威半导体(上海)有限公司 矩阵数据广播架构
US11950797B2 (en) 2019-12-30 2024-04-09 Cilag Gmbh International Deflectable electrode with higher distal bias relative to proximal bias
US11786294B2 (en) 2019-12-30 2023-10-17 Cilag Gmbh International Control program for modular combination energy device
US20210196361A1 (en) 2019-12-30 2021-07-01 Ethicon Llc Electrosurgical instrument with monopolar and bipolar energy capabilities
US11707318B2 (en) 2019-12-30 2023-07-25 Cilag Gmbh International Surgical instrument with jaw alignment features
US20210196357A1 (en) 2019-12-30 2021-07-01 Ethicon Llc Electrosurgical instrument with asynchronous energizing electrodes
US11696776B2 (en) 2019-12-30 2023-07-11 Cilag Gmbh International Articulatable surgical instrument
US11786291B2 (en) 2019-12-30 2023-10-17 Cilag Gmbh International Deflectable support of RF energy electrode with respect to opposing ultrasonic blade
US11944366B2 (en) 2019-12-30 2024-04-02 Cilag Gmbh International Asymmetric segmented ultrasonic support pad for cooperative engagement with a movable RF electrode
US11937866B2 (en) 2019-12-30 2024-03-26 Cilag Gmbh International Method for an electrosurgical procedure
US11779329B2 (en) 2019-12-30 2023-10-10 Cilag Gmbh International Surgical instrument comprising a flex circuit including a sensor system
US11911063B2 (en) 2019-12-30 2024-02-27 Cilag Gmbh International Techniques for detecting ultrasonic blade to electrode contact and reducing power to ultrasonic blade
US11452525B2 (en) 2019-12-30 2022-09-27 Cilag Gmbh International Surgical instrument comprising an adjustment system
US11937863B2 (en) 2019-12-30 2024-03-26 Cilag Gmbh International Deflectable electrode with variable compression bias along the length of the deflectable electrode
US11812957B2 (en) 2019-12-30 2023-11-14 Cilag Gmbh International Surgical instrument comprising a signal interference resolution system
US11779387B2 (en) 2019-12-30 2023-10-10 Cilag Gmbh International Clamp arm jaw to minimize tissue sticking and improve tissue control
US11660089B2 (en) 2019-12-30 2023-05-30 Cilag Gmbh International Surgical instrument comprising a sensing system
US11986201B2 (en) 2019-12-30 2024-05-21 Cilag Gmbh International Method for operating a surgical instrument
US10972408B1 (en) 2020-02-10 2021-04-06 Apple Inc. Configurable packet arbitration with minimum progress guarantees
US11422946B2 (en) 2020-08-31 2022-08-23 Apple Inc. Translation lookaside buffer striping for efficient invalidation operations
US11675710B2 (en) 2020-09-09 2023-06-13 Apple Inc. Limiting translation lookaside buffer searches using active page size
US11615033B2 (en) 2020-09-09 2023-03-28 Apple Inc. Reducing translation lookaside buffer searches for splintered pages
US11403221B2 (en) 2020-09-24 2022-08-02 Advanced Micro Devices, Inc. Memory access response merging in a memory hierarchy
US11288008B1 (en) * 2020-10-30 2022-03-29 Dell Products L.P. Reflective memory system
KR102496994B1 (ko) * 2021-03-23 2023-02-09 에스케이하이닉스 주식회사 PCIe 인터페이스 장치 및 그 동작 방법

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4228503A (en) * 1978-10-02 1980-10-14 Sperry Corporation Multiplexed directory for dedicated cache memory system
US4503497A (en) * 1982-05-27 1985-03-05 International Business Machines Corporation System for independent cache-to-cache transfer
US4695951A (en) * 1983-07-07 1987-09-22 Honeywell Bull Inc. Computer hierarchy control
US4747043A (en) * 1984-02-10 1988-05-24 Prime Computer, Inc. Multiprocessor cache coherence system
DE3581556D1 (de) * 1984-04-27 1991-03-07 Bull Hn Information Syst Steuerungsgeraet in einem digitalen computer.
JPH065524B2 (ja) * 1987-11-18 1994-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーション 記憶装置管理方法
US4992930A (en) * 1988-05-09 1991-02-12 Bull Hn Information Systems Inc. Synchronous cache memory system incorporating tie-breaker apparatus for maintaining cache coherency using a duplicate directory
US5222224A (en) * 1989-02-03 1993-06-22 Digital Equipment Corporation Scheme for insuring data consistency between a plurality of cache memories and the main memory in a multi-processor system
EP0380842A3 (en) * 1989-02-03 1991-06-12 Digital Equipment Corporation Method and apparatus for interfacing a system control unit for a multiprocessor system with the central processing units
US5036459A (en) * 1989-03-09 1991-07-30 U.S. Philips Corporation Multi-processor computer system with distributed memory and an interprocessor communication mechanism, and method for operating such mechanism
JPH0664567B2 (ja) * 1989-12-25 1994-08-22 株式会社日立製作所 多重プロセッサシステム
US5297269A (en) * 1990-04-26 1994-03-22 Digital Equipment Company Cache coherency protocol for multi processor computer system
DE69127936T2 (de) * 1990-06-29 1998-05-07 Digital Equipment Corp Busprotokoll für Prozessor mit write-back cache
US5432918A (en) * 1990-06-29 1995-07-11 Digital Equipment Corporation Method and apparatus for ordering read and write operations using conflict bits in a write queue
IE860318L (en) * 1990-10-01 1986-08-05 Digital Equipment Corp System bus for a multi-cache data processing system
JPH04318654A (ja) * 1991-02-13 1992-11-10 Hewlett Packard Co <Hp> マイクロプロセッサへの割り込みのリダイレクションシステム
US5490261A (en) * 1991-04-03 1996-02-06 International Business Machines Corporation Interlock for controlling processor ownership of pipelined data for a store in cache
JP2703417B2 (ja) * 1991-04-05 1998-01-26 富士通株式会社 受信バッファ
WO1993000638A1 (en) * 1991-06-26 1993-01-07 Ast Research, Inc. Automatic distribution of interrupts controller for a multiple processor computer system
DE69230428T2 (de) * 1991-09-27 2000-08-03 Sun Microsystems Inc Verklemmungserkennung und Maskierung enthaltende Busarbitrierungsarchitektur
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
US5398325A (en) * 1992-05-07 1995-03-14 Sun Microsystems, Inc. Methods and apparatus for improving cache consistency using a single copy of a cache tag memory in multiple processor computer systems
US5319753A (en) * 1992-09-29 1994-06-07 Zilog, Inc. Queued interrupt mechanism with supplementary command/status/message information
US5434993A (en) * 1992-11-09 1995-07-18 Sun Microsystems, Inc. Methods and apparatus for creating a pending write-back controller for a cache controller on a packet switched memory bus employing dual directories
US5442758A (en) * 1993-07-19 1995-08-15 Sequent Computer Systems, Inc. Apparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring
JPH07105031A (ja) * 1993-09-20 1995-04-21 Internatl Business Mach Corp <Ibm> 多重プロセッサ・コンピュータ・システム内で割込み情報を伝えるための方法および装置
US5504874A (en) * 1993-09-29 1996-04-02 Silicon Graphics, Inc. System and method of implementing read resources to maintain cache coherency in a multiprocessor environment permitting split transactions
US5513337A (en) * 1994-05-25 1996-04-30 Intel Corporation System for protecting unauthorized memory accesses by comparing base memory address with mask bits and having attribute bits for identifying access operational mode and type
US5581729A (en) * 1995-03-31 1996-12-03 Sun Microsystems, Inc. Parallelized coherent read and writeback transaction processing system for use in a packet switched cache coherent multiprocessor system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005539282A (ja) * 2002-01-09 2005-12-22 インターナショナル・ビジネス・マシーンズ・コーポレーション 単一のコヒーレントなシステム内の分散コンピュータ・ノードにキャッシュ・コヒーレンスを提供するのにグローバル・スヌープを使用する方法および装置
JP2015519678A (ja) * 2013-03-14 2015-07-09 オラクル・インターナショナル・コーポレイション 部分的に順序付けされたネットワーク上におけるブロードキャストキャッシュコヒーレンス

Also Published As

Publication number Publication date
US5655100A (en) 1997-08-05
EP0735483A1 (en) 1996-10-02
US5905998A (en) 1999-05-18

Similar Documents

Publication Publication Date Title
JPH09114794A (ja) パケット交換型キャッシュコヒーレントマルチプロセッサシステムにおけるメモリトランザクション実行を制御するトランザクションアクティベーションプロセッサ
JPH09101943A (ja) パケット交換型キャッシュコヒーレントマルチプロセッサシステム
EP0735482B1 (en) A parallelized master request class structure for interfacing a processor in a packet switched cache coherent multiprocessor system and method of use of the same
JPH09114735A (ja) パケット交換型キャッシュコヒーレントマルチプロセッサシステム用並列型コヒーレント読取り及び書戻しトランザクション処理システム
US5684977A (en) Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system
EP0735487B1 (en) A fast, dual ported cache controller for data processors in a packet switched cache coherent multiprocessor system
US11907528B2 (en) Multi-processor bridge with cache allocate awareness
EP0547246B1 (en) Microprocessor architecture capable of supporting multiple heterogeneous processors
US6366984B1 (en) Write combining buffer that supports snoop request
EP0524683A1 (en) Scientific visualization system
US5797026A (en) Method and apparatus for self-snooping a bus during a boundary transaction
US8375171B2 (en) System and method for providing L2 cache conflict avoidance
IL142265A (en) Data processing system with uneven access to memory (NUMA) that precedes a call request for a remote processing industry on an approximate basis
IE990755A1 (en) Non-uniform memory access (numa) data processing system that speculatively issues requests on a node interconnect
US6996645B1 (en) Method and apparatus for spawning multiple requests from a single entry of a queue
JP2000250883A (ja) 不均等メモリ・アクセス・システムにおいてトランザクションのキャンセルによるデータ損失を避けるための方法およびシステム
US7421545B1 (en) Method and apparatus for multiple sequence access to single entry queue
JP2000215184A (ja) デ―タ転送方法