JPH0954758A - パケット交換型キャッシュコヒーレントマルチプロセッサシステム用書戻し取消し処理システム - Google Patents

パケット交換型キャッシュコヒーレントマルチプロセッサシステム用書戻し取消し処理システム

Info

Publication number
JPH0954758A
JPH0954758A JP8078713A JP7871396A JPH0954758A JP H0954758 A JPH0954758 A JP H0954758A JP 8078713 A JP8078713 A JP 8078713A JP 7871396 A JP7871396 A JP 7871396A JP H0954758 A JPH0954758 A JP H0954758A
Authority
JP
Japan
Prior art keywords
data
request
cache
transaction
upa
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
JP8078713A
Other languages
English (en)
Inventor
Loo William C Van
シー ヴァン ルー ウィリアム
Zahir Ebrahim
エイブラヒム ザヒル
Satyanarayana Nishtala
ニシュタラ サティアナラヤナ
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 JPH0954758A publication Critical patent/JPH0954758A/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

Abstract

(57)【要約】 (修正有) 【課題】 システムコントローラに結合した主メモリ及
び複数のサブシステムから成るマルチプロセッサ構成。 【解決手段】 相互接続モジュール112は、システム
コントローラ110から受け取った相互接続制御信号に
従って主メモリ108とサブシステムを相互接続する。
少なくとも二つのサブシステムは、データプロセッサで
あり、それぞれがデータの多重ブロックを記憶する対応
キャッシュメモリ130と、キャッシュメモリによって
記憶された各データブロックに対して一つのキャッシュ
タグを含んでいる、マスタキャッシュタグ(Etag
s)132のセットを有している。システムコントロー
ラは、各メモリトランザクションを処理しかつ各データ
プロセッサに対する重複キャッシュタグのセット(Dt
ags)を保持する。そして、データプロセッサからの
メモリアクセス要求をパイプラインで送り、かつ犠牲に
なったキャッシュラインに対応しているDtagインデ
ックスが無効であるかどうかを決定するために、アクテ
ィベーションの前に所与のデータプロセッサからの各書
戻し要求を処理する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般に、プロセッサが
メモリ資源を共有するようなマルチプロセッサコンピュ
ータシステムに関し、特に、読取り及び書戻しトランザ
クションを並列化しかつ保留書戻しデータの後続変更に
より保留書戻しトランザクション要求を取消すための機
構を供給することによってメモリアクセス待ち時間を最
小化するために相互接続アーキテクチャ及びキャッシュ
コヒーレンス方法を用いるマルチプロセッサコンピュー
タシステムに関する。
【0002】
【従来の技術】マルチプロセッサシステムにおいて“キ
ャッシュコヒーレンス”を保持することの必要性は、よ
く知られている。“キャッシュコヒーレンス”を保持す
ることの意味は、最も少なくとも、データが一つのプロ
セッサによって共有アドレス空間の指定された位置に書
き込まれるときにはいつでも、同じアドレス位置にデー
タを記憶する他のプロセッサに対するキャッシュは、無
効にされるか、または新しいデータで更新されるかのい
ずれかである、ということである。キャッシュコヒーレ
ンスを保持するために用いられる二つの主要なシステム
アーキテクチャが存在する。ここでキャッシュスヌープ
アーキテクチャと呼ばれる、一つは、各データプロセッ
サのキャッシュが、共有メモリのデータが新しいデータ
で上書きされるときを検出するように共有アドレスバス
及び種々の制御ラインを監視する論理(ロジック)を含
み、そのデータプロセッサのキャッシュが同じメモリ位
置に対するエントリを含むか否かを決定し、かつキャッ
シュに記憶されたデータが別のプロセッサによって無効
にされるときにそのキャッシュコヒーレント及び/又は
対応キャッシュタグを更新することを必要とする。それ
ゆえに、キャッシュスヌープアーキテクチャでは、全て
のデータプロセッサは、他のキャッシュの状態に一致す
る状態にそれ自体のキャッシュを保持する責任がある。
【0003】ここでメモリディレクトリーアーキテクチ
ャと呼ばれる、第2のキャッシュコヒーレンスアーキテ
クチャでは、主メモリは、もしあれば、どのデータプロ
セッサがキャッシュに記憶されたデータブロックを有す
るかを示すデータの全てのブロックに対する一組の状態
ビットを含む。主メモリの状態ビットは、キャッシュコ
ヒーレンスアーキテクチャがそのような情報の記憶を必
要とするならばどのプロセッサがデータブロックの“所
有者”であるかと考えられるような、追加の情報を記憶
しうる。
【0004】
【発明が解決しようとする課題】これらのキャッシュコ
ヒーレンスアーキテクチャでは、読取り失敗(read mis
s) が、変更されたデータを有するキャッシュラインを
犠牲にすることを必要とするときに読取り−書戻しトラ
ンザクション対が発生し、それにより主メモリへの書戻
しを必要とする。従来技術では、これらのトランザクシ
ョンは、通常、要求を出しているプロセッサにデータを
すぐに受け取らせるために書戻しトランザクションの前
に犠牲にされる読取りトランザクションが実行されて、
厳格に守られる(striclty ordered)。厳守すること(str
ict ordering) に加えて、従来技術のキャッシュコヒー
レンスアーキテクチャは、これらの読取り及び書戻しト
ランザクションが順番に実行されることを要求して、ト
ランザクションが異なるキャッシュインデックスの方に
向けられるときでさえも、読取りと書戻しトランザクシ
ョンとの間で同じプロセッサから実行されるべき他のコ
ヒーレントトランザクションを許容しない。同じアドレ
スへの後続データ書込み(そのような新しいデータは、
データプロセッサの一つのキャッシュラインに記憶され
ている)により、書戻しトランザクションがスケジュー
ルされかつ書戻しに関連したデータが無効になるときに
これらのアーキテクチャにおいて一つの問題が発生す
る。これらの場合には、データがもはや有効でないの
で、書戻しトランザクションは、もはや必要ない。しか
しながら、これらの従来技術のアーキテクチャでは、一
度書戻しトランザクションが生成されたならばそれらを
取り消すための簡単な方法が存在しない。これは、これ
らの無効トランザクションの全てを捜すために所与のプ
ロセッサがスヌープできる単一共有アドレスバスが存在
しないからである。同様に、まだ実行されていないかま
たはまだスケジュールされていない書戻しトランザクシ
ョン(読取り−書戻しトランザクション対の一部として
保留されているもの)の取消しは、これらのトランザク
ションに対する可視性(視認性)の欠如により容易に達
成することができない。従って、生ずる不要な書戻しが
これら従来技術のシステムの特徴であり低減されたシス
テム性能を結果として生ずる。
【0005】従って、無効トランザクションの発生によ
り保留書戻しトランザクションを取り消すための簡単な
機構を供給するアーキテクチャは、総括トランザクショ
ンスループットにおける改善をもたらす。
【0006】
【課題を解決するための手段】本発明の上記目的は、シ
ステムコントローラ;システムコントローラに結合され
た主メモリ;Nが4よりも大きい整数である、Nデータ
ブロックを記憶するNキャッシュラインを有しているキ
ャッシュメモリと、キャッシュメモリの各キャッシュラ
インに対して一つのEtagを含んでいる、Nマスタキ
ャッシュタグ(Etags)と、それが主メモリの中に
書き戻されるまでキャッシュメモリから変位された汚染
犠牲者データブロックを記憶する書戻しバッファとを有
し、各キャッシュラインに対するEtagが、アドレス
インデックスと、キャッシュラインに記憶されたデータ
ブロックがデータプロセッサによって変更されたデータ
を含むか否かを示すEtag状態値とを記憶している、
データプロセッサを備え、データプロセッサは、システ
ムコントローラへメモリトランザクション要求を送る、
システムコントローラに結合された、マスタインターフ
ェイスを含み、メモリトランザクション要求は、読取り
要求及び書戻し要求を含み;各メモリトランザクション
要求は、読み取られるかまたは書き込まれるべき関連デ
ータブロックに対するアドレスを指定し;マスタインタ
ーフェイスは、(A)読取り要求を生成することによ
り、かつ(B)キャッシュ誤りが変更されたデータを含
む犠牲になるべきキャッシュラインを必要とするとき
に、対応EtagのEtag状態値により、書戻しバッ
ファに該変更されたデータを有しているデータブロック
を記憶しかつ書戻し要求を生成することにより、キャッ
シュメモリのあらゆるキャッシュライン上のキャッシュ
誤りに応答するキャッシュコヒーレンス論理を更に含
み;システムコントローラは、N重複キャッシュタグの
セット(Dtags)を含み、各Dtagは、Etag
sの一つに対応しかつDtag状態値及び対応Etag
と同じアドレスインデックスを記憶し;該Dtag状態
値は、対応キャッシュラインに記憶されたデータブロッ
クがデータプロセッサによって変更されたデータを含む
か否かを示し;システムコントローラは、データプロセ
ッサによる各メモリトランザクション要求を処理するメ
モリトランザクション要求論理を含み;アクセス要求論
理は、データプロセッサからのメモリトランザクション
要求をパイプラインで送るトランザクション実行回路素
子を含み、トランザクション実行回路素子は、書戻し要
求によって指定されたアドレスに対応しているDtag
インデックスが無効であるか否かを決定するためにアク
ティベートの前にデータプロセッサからの各書戻し要求
を処理する無効回路素子を含み、無効回路素子は、Dt
agインデックスが無効でないならば書戻し要求をアク
ティベートしかつDtagインデックスが無効であるな
らば書戻し要求を取り消し;システムコントローラのメ
モリトランザクション要求論理は、書込みバッファのデ
ータブロックを主メモリに書込みかつ対応Dtagの状
態値を無効にすることによってアクティベートされた書
戻し要求を処理する書戻し論理を含んでいるコンピュー
タシステムによって達成される。
【0007】本発明では、無効回路素子は、主メモリへ
汚染犠牲者データブロックを送らないようにデータプロ
セッサに命令するデータプロセッサへ第1の応答メッセ
ージを送ることによって書戻し要求を取消し、かつ主メ
モリへ汚染犠牲者データブロックを送るべくデータプロ
セッサに命令するデータプロセッサへ第2の応答メッセ
ージを送ることによって書戻し要求をアクティベートす
るように構成してもよい。本発明では、データプロセッ
サは、第1のデータプロセッサを構成し、キャッシュメ
モリは、第1のキャッシュメモリを構成しかつマスタイ
ンターフェイスは、第1のマスタインターフェイスを構
成し;コンピュータシステムは、第2のキャッシュメモ
リを有している第2のデータプロセッサを更に含み;第
2のデータプロセッサは、システムコントローラへメモ
リトランザクション要求を送るための、システムコント
ローラに結合した、第2のマスタインターフェイスを含
み、メモリトランザクション要求は、読取り要求及び書
戻し要求を含み;メモリトランザクション要求論理は、
メモリトランザクション要求を処理するときにDtag
sを更新するDtag更新論理を含み、Dtag更新論
理は、第2のマスタインターフェイスによって送られた
メモリトランザクションを処理することが第1のキャッ
シュメモリに記憶されたデータの排他的所有権を要求す
るときに第1のキャッシュメモリのキャッシュラインに
対するDtagインデックスを無効にし;それにより第
2のマスタインターフェイスによって送られたメモリト
ランザクションは、第1のデータプロセッサにおける書
戻しバッファの汚染犠牲者キャッシュラインに対応して
いるDtagインデックスを無効にし、無効回路素子に
書戻し要求を取り消させるように構成してもよい。
【0008】本発明では、マスタインターフェイスは、
システムコントローラへ送られるべきメモリトランザク
ション要求を記憶するための少なくとも二つの並列出力
要求キューを含み;キャッシュコヒーレンス論理は、
(A)読取り要求を出力要求キューの第1のものに記憶
することによりキャッシュメモリのあらゆるキャッシュ
ライン上のキャッシュ誤りに応答し、かつ(B)キャッ
シュ誤りが、変更されたデータを含む、対応Etagの
Etag状態値により、データブロックを記憶している
キャッシュライン上で発生するときに、変更されたデー
タを有しているデータブロックを書戻しバッファに記憶
しかつ出力要求キューの第2のものに書戻し要求を記憶
し;トランザクション実行回路素子は、データプロセッ
サの二つの並列出力要求キューからのメモリトランザク
ション要求をパイプラインで送るように構成してもよ
い。また、本発明の上記目的は、システムコントロー
ラ;システムコントローラに結合された主メモリ;それ
ぞれがデータブロックを記憶するキャッシュラインを有
しているキャッシュメモリと、キャッシュメモリの各キ
ャッシュラインに対して一つのEtagを含んでいる、
マスタキャッシュタグ(Etags)と、それが主メモ
リの中に書き戻されるまでキャッシュメモリから変位さ
れた汚染犠牲者データブロックを記憶する書戻しバッフ
ァとを有し、各キャッシュラインに対するEtagが、
アドレスインデックスと、キャッシュラインに記憶され
たデータブロックがデータプロセッサによって変更され
たデータを含むか否かを示すEtag状態値とを記憶し
ている、複数のデータプロセッサを備え、データプロセ
ッサのそれぞれは、システムコントローラへメモリトラ
ンザクション要求を送る、システムコントローラに結合
された、マスタインターフェイスを含み、マスタインタ
ーフェイスは、(A)読取り要求を生成することによっ
てキャッシュメモリのあらゆるキャッシュライン上のキ
ャッシュ誤りに応答するキャッシュコヒーレンス論理を
含み、かつ(B)キャッシュ誤りが変更されたデータを
含む犠牲になるべきキャッシュラインを必要とするとき
に、対応EtagのEtag状態値により、書戻しバッ
ファに該変更されたデータを有しているデータブロック
を記憶しかつ書戻し要求を生成し;システムコントロー
ラは、重複キャッシュタグのセット(Dtags)を含
み、各Dtagは、Etagsの一つに対応しかつDt
ag状態値及び対応Etagと同じアドレスインデック
スを記憶し;該Dtag状態値は、対応キャッシュライ
ンに記憶されたデータブロックがデータプロセッサによ
って変更されたデータを含むか否かを示し;システムコ
ントローラは、データプロセッサのそれぞれによる各メ
モリトランザクション要求を処理するメモリトランザク
ション要求論理を含み;メモリトランザクション要求論
理は、メモリトランザクション要求に基づいて有効から
無効状態値へ指定されたDtag状態値を更新する論理
を含んでいる、Dtag状態値を更新するDtag更新
論理を含み;メモリトランザクション要求論理は、デー
タプロセッサからのメモリトランザクション要求を実行
するトランザクション実行回路素子を含み、トランザク
ション実行回路素子は、書戻し要求によって指定された
アドレスに対応しているDtagがデータプロセッサの
別のものによるメモリトランザクション要求によって無
効にされたか否かを決定することによって各書戻し要求
を処理する無効回路素子を含み、無効回路素子は、Dt
agインデックスが無効でないならば書戻し要求をアク
ティベートしかつDtagインデックスが無効であるな
らば書戻し要求を取り消し;システムコントローラのメ
モリトランザクション要求論理は、書戻しバッファのデ
ータブロックを主メモリに書込みかつ対応Dtagの状
態値を無効にすることによってアクティベートされた書
戻し要求を処理する書戻し論理を含むコンピュータシス
テムによっても達成される。
【0009】本発明では、無効回路素子は、主メモリへ
汚染犠牲者データブロックを送らないようにデータプロ
セッサに命令するデータプロセッサへ第1の応答メッセ
ージを送ることによって書戻し要求を取消し、かつ主メ
モリへ汚染犠牲者データブロックを送るべくデータプロ
セッサに命令するデータプロセッサへ第2の応答メッセ
ージを送ることによって書戻し要求をアクティベートす
るように構成してもよい。本発明では、データプロセッ
サは、第1のデータプロセッサを構成し、キャッシュメ
モリは、第1のキャッシュメモリを構成しかつマスタイ
ンターフェイスは、第1のマスタインターフェイスを構
成し;コンピュータシステムは、第2のキャッシュメモ
リを有している第2のデータプロセッサを更に含み;第
2のデータプロセッサは、システムコントローラへメモ
リトランザクション要求を送るための、システムコント
ローラに結合した、第2のマスタインターフェイスを含
み、メモリトランザクション要求は、読取り要求及び書
戻し要求を含み;メモリトランザクション要求論理は、
メモリトランザクション要求を処理するときにDtag
sを更新するDtag更新論理を含み、Dtag更新論
理は、第2のマスタインターフェイスによって送られた
メモリトランザクションを処理することが第1のキャッ
シュメモリに記憶されたデータの排他的所有権を要求す
るときに第1のキャッシュメモリのキャッシュラインに
対するDtagインデックスを無効にし;それにより第
2のマスタインターフェイスによって送られたメモリト
ランザクションは、第1のデータプロセッサにおける書
戻しバッファの汚染犠牲者キャッシュラインに対応して
いるDtagインデックスを無効にし、無効回路素子に
書戻し要求を取り消させるように構成してもよい。
【0010】更に、本発明の上記目的は、主メモリ及び
それぞれがキャッシュメモリを有している複数のデータ
プロセッサに結合されたシステムコントローラを有して
いるパケット交換型キャッシュコヒーレントマルチプロ
セッサシステムにおいて書戻しトランザクションを取り
消す方法であって、キャッシュメモリの各キャッシュラ
インに対して一つのEtagを含んでいる、マスタキャ
ッシュタグ(Etags)を各データプロセッサに記憶
し、各キャッシュラインに対するEtagが、アドレス
インデックスと、キャッシュラインに記憶されたデータ
ブロックがその対応データプロセッサによって変更され
たデータを含むか否かを示すEtag状態値とを記憶し
ており;それが主メモリの中に書き戻されるまでキャッ
シュメモリから変位された汚染犠牲者データブロックを
各データプロセッサの書戻しバッファに記憶し;システ
ムコントローラに各キャッシュメモリのための重複タグ
(Dtags)のセットを記憶し、各DtagがDta
g状態値及び該対応Etagと同じアドレスインデック
スを含んでいるEtagsの一つに対応しており;デー
タプロセッサからシステムコントローラへメモリトラン
ザクション要求を送り、メモリトランザクション要求
は、読取り要求及び書戻し要求を含み;各メモリトラン
ザクション要求は、読取られるかまたは書込まれるべき
関連データブロックに対するアドレスを指定し;少なく
とも一つのDtagの無効を要求しているデータプロセ
ッサの一つからのメモリトランザクション要求を処理し
て、少なくとも一つのDtagの状態値を有効から無効
状態値へ更新し;書戻し要求によって指定されたアドレ
スに対応しているDtagが無効であるか否かを決定
し;Dtagが無効であるならば書戻し要求を取消し;
Dtagが無効でないならば書戻し要求をアクティベー
トする:ことによってシステムコントローラによる処理
に対する書戻し要求をアクティベートし;書戻しバッフ
ァの対応するもののデータブロックを主メモリに書込み
かつ対応Dtagsの状態値を無効にすることによって
アクティベートされた書戻し要求を処理する方法によっ
ても達成される。
【0011】本発明では、アクティベートする段階は、
主メモリへ汚染犠牲者データブロックを送らないように
データプロセッサに命令するデータプロセッサへ第1の
応答メッセージを送ることによって書戻し要求を取消
し、かつ主メモリへ汚染犠牲者データブロックを送るべ
くデータプロセッサに命令するデータプロセッサへ第2
の応答メッセージを送ることによって書戻し要求をアク
ティベートするように構成してもよい。本発明では、更
新段階は、データプロセッサの第2のものによって送ら
れたメモリトランザクションを処理することが第1のデ
ータプロセッサのキャッシュメモリに記憶されたデータ
の排他的所有権を要求するときに第1のデータプロセッ
サのキャッシュメモリのキャッシュラインに対するDt
ag状態値を無効状態値に更新することを含み;それに
より第2のデータプロセッサによって送られたメモリト
ランザクションは、第1のデータプロセッサにおける書
戻しバッファの汚染犠牲者キャッシュラインに対応して
いるDtagインデックスを無効にし、書戻し要求の取
消しをもたらすように構成してもよい。
【0012】
【作用】まとめると、本発明は、キャッシュコヒーレン
トマルチプロセッサコンピュータシステムにおけるキャ
ッシュメモリから変位された汚染犠牲者の不要な書戻し
を取り消すためのシステム及び方法である。マルチプロ
セッサシステムは、システムコントローラに結合された
多数のサブシステム及び主メモリを有する。相互接続モ
ジュールは、システムコントローラから受け取った相互
接続制御信号に従って主メモリとサブシステムを相互接
続する。少なくともサブシステムの二つは、データプロ
セッサであり、それぞれが、データの多重ブロックを記
憶する対応キャッシュメモリ及び対応マスタキャッシュ
インデックスを有する。各マスタキャッシュインデック
スは、キャッシュメモリによって記憶された各データブ
ロックに対して一つのキャッシュタグを含んでいる、N
マスタキャッシュタグのセット(Etags)を有す
る。各データプロセッサは、システムコントローラへ、
読取り及び書戻しトランザクションを含んでいる、メモ
リトランザクション要求を送り、かつデータプロセッサ
の他のものによりメモリトランザクション要求に対応し
ているシステムコントローラからキャッシュアクセス要
求を受け取るためのマスタインターフェイスを含む。デ
ータプロセッサは、各々関連トランザクションが終了す
るまで犠牲になったキャッシュラインを記憶するための
書戻しバッファを更に含む。
【0013】システムコントローラは、データプロセッ
サによる各メモリトランザクション要求を処理し、どの
キャッシュメモリの一つ及び主メモリが要求しているデ
ータプロセッサに結合するかを決定し、要求しているデ
ータプロセッサを決定されたキャッシュメモリの一つ及
び主メモリに結合するように対応している相互接続制御
信号を相互接続モジュールに送り、かつ決定されたキャ
ッシュメモリの一つ及び主メモリへまたはそれらから一
つのデータパケットを送信または受信すべく要求してい
るデータプロセッサを促すために応答メッセージを要求
しているデータプロセッサに送るメモリトランザクショ
ン要求論理を含む。システムコントローラは、データプ
ロセッサのそれぞれに対するN重複キャッシュタグのセ
ット(Dtags)を有している重複キャッシュインデ
ックスを保持し、データプロセッサのそれぞれに対する
N重複キャッシュタグのセットは、マスタキャッシュタ
グの対応セットと同じ数のキャッシュタグを有してい
る。各マスタキャッシュタグは、マスタキャッシュ状態
及びアドレスタグを示す;各マスタキャッシュタグに対
応している重複キャッシュタグは、第2のキャッシュ状
態及び対応しているマスタキャッシュタグと同じアドレ
スタグを示す。システムコントローラは、重複キャッシ
ュインデックスにNth+1エントリを含み、Nth+
1エントリは、関連データプロセッサの書戻しバッファ
に記憶された犠牲になったキャッシュラインのキャッシ
ュ状態に対応している。
【0014】システムコントローラは、データプロセッ
サからのメモリトランザクション要求を実行する論理回
路素子を含み、かつ犠牲になったキャッシュラインに対
応しているDtagインデックスが無効であるか否かを
決定するために所与のデータプロセッサからの各書戻し
要求を処理する無効回路素子を含む。特に、第1のデー
タプロセッサが第2のデータプロセッサからの書戻し要
求の対象である同じキャッシュラインを無効にするメモ
リトランザクションを実行したならば、書戻されるべき
そのキャッシュラインのデータが無効にされかつ第1の
データプロセッサによって重ね書きされるので、書戻し
は、不要である。無効回路素子は、書戻し要求で指定さ
れたアドレスに対するDtagインデックスが無効でな
いならば書戻しトランザクションに関連した主メモリへ
のデータ転送を実行させ、かつDtagインデックスが
無効であるならば書戻し要求を取り消す。本発明の更な
る目的及び特徴は、添付した図面を参照して以下の実施
例及び添付した特許請求の範囲から容易に理解できるで
あろう。
【0015】
【実施例】本発明の実施例を説明する前にこの文書で使
用する用語を以下に説明する。 キャッシュコヒーレンス(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) :キャッシュメモリから主メモリに
変更したデータをコピーすること。
【0016】次に、この文書で使用する略語を以下に説
明する。 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) 。 次に、添付した図面を参照して本発明の実施例を説明す
る。
【0017】図1を参照すると、本発明のコンピュータ
アーキテクチャを組み込んでいるマルチプロセッサコン
ピュータシステム100が示されている。マルチプロセ
ッサコンピュータシステム100は、一組の“UPAモ
ジュール”を含む。UPAモジュール102は、データ
プロセッサ並びにI/Oハンドラー等のようなスレーブ
装置を含む。各UPAモジュール102は、ここでUP
Aポートと呼ばれる、ポート104を有する。“UP
A”は、“汎用ポートアーキテクチャ(UniversalPort A
rchitecture) ”を意味する。簡略化のために、UPA
モジュール及びそれらの関連ポートは、ここで言われて
いるポートまたはUPAポートがポート及びその関連U
PAモジュールの両方を含むということを理解した上
で、しばしば纏めて“ポート”または“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の型に依存しないの
で、本発明は、多くの異なる相互接続モジュール構造に
用いることができる。
【0018】UPAポート104は、それぞれが個別に
動作する、パケット交換型アドレスバス114及びパケ
ット交換型データバス116を介して相互接続モジュー
ル112及びシステムコントローラ110とそれぞれイ
ンターフェイスする。UPAモジュールは、UPAポー
トに論理的にプラグ接続する。UPAモジュール102
は、データプロセッサ、I/Oバスへのインターフェイ
スを有するI/Oコントローラ、またはグラフィックフ
レームバッファを含みうる。好ましい実施例のUPA相
互接続アーキテクチャは、32までのUPAポート、及
び相互接続の多重アドレス及びデータバスを支持する。
4つのUPAポート104までは、同じアドレスバス1
14を共有し、かつ分散型アービトレーションプロトコ
ルでそのマスタシップをアービトレート(裁定・調停)
することができ。システムコントローラ110は、集中
コントローラでありかつ次の機能を実行する:コヒーレ
ンス制御;メモリ及びデータ経路制御;多重アドレスバ
スに対するアドレスクロスバーのような接続性。
【0019】システムコントローラ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]並びにトラ
ンザクション識別情報を担持する。
【0020】図1及び図2を参照すると、各UPAアド
レスバス114上に4つまでのUPAポート104を有
して、システムに多重アドレスバス114が存在しう
る。UPAアドレスバスの正確な数は、可変であり、か
つシステムスピード要求に一般に依存する。アドレスバ
ス114上により多くのポートを設置することは、アド
レスバス上の信号伝送を遅くするので、アドレスバス毎
のポートの最大数は、アドレスバスに必要な信号伝送ス
ピードによって決定される。データ経路回路素子(即
ち、相互接続モジュール112)及びアドレスバス11
4は、個別にスケーラブル(計量可能)である。結果と
して、相互接続モジュール112の設計に関連したスピ
ード/費用のトレードオフに関する決定に全く独立して
アドレスバスにわたるトランザクション要求の伝送に対
するスピード/費用のトレードオフを最適化するように
所与の数のプロセッサに対して、アドレスバスの数は、
増大または減少することができる。図3は、好ましい実
施例の4つの全てのインターフェイス(以下に詳述)を
有しているUPAポートによって受信及び送信された信
号の完全なセットを示す。表1は、図3に示した信号の
それぞれの短い説明を供給する。
【0021】
【表1】
【0022】
【表2】
【0023】
【表3】
【0024】
【表4】
【0025】
【表5】
【0026】UPAアドレスバス114上の有効パケッ
トは、UPA_Addr_valid信号をアサートす
るドライバ(即ち、UPAポート104またはシステム
コントローラ110)によって識別される。システムコ
ントローラ110は、システム100の各UPAアドレ
スバス114に接続される。UPAポート104及びシ
ステムコントローラ110は、分散型アービトレーショ
ンプロトコルを用いて各UPAアドレスバス114の使
用に対してアービトレートする。UPAポートは、共有
UPAアドレスバス114上の他のUPAポートと直接
通信しない。その代わり、要求しているUPAポート
が、アドレス指定されたUPAポートへのアクセスを要
求する要求パケットを生成するときに、システムコント
ローラ110は、要求パケットを再送信しかつそのUP
A_Addr_valid信号で宛先UPAポートを修
飾すること(qualifying)によってスレーブアクセスをア
ドレス指定されたUPAポートに前進させる。また、U
PAポートは、キャッシュコヒーレンスを保持するため
にUPAアドレスバス上を“スヌープ(snoop) ”しな
い。システムコントローラ110は、後述する書込み−
無効キャッシュコヒーレンスプロトコルを用いて、その
対応UPAモジュールがキャッシュメモリを含むそれら
UPAポートに代わってスヌーピングを実行する。
【0027】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つの転送を必要とする。
【0028】UPAマスタポートとも呼ばれる、“マス
タ”UPAポートは、データ転送トランザクションを始
動(開始)することができるものであるべくここで画定
される。全てのデータプロセッサUPAモジュールは、
マスタUPAポート104を有さなければならない。あ
るデータ処理能力を含むうる、グラフィック装置は、一
般にスレーブインターフェイスだけを有するということ
に注目。スレーブインターフェイスは、以下に説明す
る。この文書の目的に対して、“データプロセッサ”
は、データを主メモリから読取りかつ主メモリに書込む
プログラマブルコンピュータまたはデータ処理装置(例
えば、マイクロプロセッサ)であるべく画定される。大
部分の、だが全てである必要はない、“データプロセッ
サ”は、関連キャッシュメモリを有する。例えば、I/
Oコントローラは、データプロセッサでありそのUPA
ポートは、マスタUPAポートである。しかしながら、
多くの場合、I/Oコントローラは、キャッシュメモリ
を有していない(または少なくともコヒーレンス・ドメ
インにデータを記憶するキャッシュメモリでない)。キ
ャッシングUPAマスタポートは、コヒーレントキャッ
シュも有するデータプロセッサに対するマスタUPAポ
ートである。キャッシングUPAマスタポートは、キャ
ッシュコヒーレンスプロトコルに加わる(関係する)。
【0029】“スレーブ”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信
号を参照)。
【0030】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バイトを転送すること
ができる。
【0031】システムコントローラ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)上に常に位置合わせされる。
【0032】これら64バイトデータパケットは、付加
アドレス、アドレスタグ、またはトランザクションタグ
なしで送付される。アドレス情報及びデータは、独立の
バス上で独立に送信される。これは効率的であるが、入
力(incoming)データパケットをキャッシュミスデータ要
求と一致させるために、順序制約(ordering constrain
t) が適用されなければならない:データパケットは、
各マスタクラス内の対応要求と同じ順序でUPAポート
に送信されなければならない。(異なるマスタクラスに
おいてデータ要求に対する順序要求事項はない。)この
順序制約がフォローされたときに、各入力データパケッ
トは、対応マスタクラスに対する最も長く顕著な(longe
st outstanding) キャッシュミストランザクション要求
に応答しなければならない。
【0033】
【表6】
【0034】要求及び応答メッセージ トランザクションは、“要求”メッセージによって始動
(開始)されかつ“応答”の受容により実行される。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へ送るの
と本質的に同じ時にシステムコントローラによって生成
される。
【0035】システムコントローラ110によって開始
(始動)された各トランザクションは、要求が指向され
るUPAポート104に結合されたアドレスバス114
上にS_REQ(即ち、システムコントローラ要求)メ
ッセージを送ることによって開始(始動)される。シス
テムコントローラ110によって開始されたトランザク
ションは、一般に、UPAポートによるトランザクショ
ン要求に応じてシステムコントローラ110によって実
行された“ネストされたトランザクション”である。例
えば、UPAポートによるある一定のメモリトランザク
ション要求は、要求されたデータブロックに対する他の
UPAポートの全てのキャッシュエントリが、システム
コントローラが要求されたデータブロックを要求してい
るUPAポートのキャッシュへ転送できる前に、無効に
されることを要求しうる。キャッシュ無効は、そのキャ
ッシュが要求されたデータブロックを記憶する各UPA
ポートへのトランザクション要求を行っているシステム
コントローラによって実行される。各UPAポート10
4は、システムコントローラ要求に肯定応答するために
そのポートによって用いられる専用二点間5ビットポー
ト応答バス、P_REPLY、122を有する。
【0036】全てのシステムコントローラ要求は、ター
ゲットUPAポートの“スレーブポート”部分に指向さ
れる。UPAポートのスレーブポートは、要求されたデ
ータが読取り要求に対して準備され、送信されたデータ
が書込み要求に対して吸収され、キャッシュ無効が無効
要求に対して終了し、割込みが割込み要求に対して取り
扱われたことを示すためにシステムコントローラ110
から受け取ったトランザクションに肯定応答してP_R
EPLYバス122上の応答コードを駆動する。システ
ムコントローラ110は、要求しているUPAポートへ
のそのS_REPLYメッセージの送信をトリガするた
めにUPAスレーブポートから受け取ったP_REPL
Y肯定応答メッセージを用いる。
【0037】キャッシュメモリ、タグ及びスヌープバス 図1を参照すると、キャッシュメモリ130を含む各U
PAモジュール102に対して、Etagsと呼ばれる
一組の主キャッシュタグを有している主キャッシュイン
デックス132が保持される。ほとんどのインプリメン
テーション(実施)では、キャッシュメモリ130は、
UPAモジュール102のデータプロセッサ178(図
4に示す)が埋め込み型一次レベルまたは二次レベルキ
ャッシュを一般に含むので、“二次レベルキャッシュ”
または“三次レベルキャッシュ”であるということが理
解されるべきである。重複キャッシュタグは、各データ
プロセッサに対する最外側直接マップ型コヒーレントキ
ャッシュに対してだけ保持され、他の低次レベルキャッ
シュは、UPAポート専用であると考えられかつ完全内
包(perfect inclusion) を通してUPAポートによって
コヒーレントに維持される。キャッシュメモリ130の
各ラインに対して一つのEtagが存在し、キャッシュ
の各ラインは、一つの64バイト(16ワード)データ
ブロックを記憶する。好ましい実施例では、各Etag
は、タグ状態とキャッシュラインに記憶された64バイ
トブロックのアドレスを識別する一組のアドレスビット
とを記憶する。
【0038】上述したように、キャッシュブロックの大
きさは、64バイトである。キャッシュコヒーレンスの
ユニットも64バイトである。各UPAポートは、異な
る大きさのキャッシュを有することができる。更に、好
ましい実施例では、直接マップ型キャッシュメモリだけ
がデータプロセッサ及びI/O・UPAポートに用いら
れる。I/O・UPAポートは、種々のキャッシュメモ
リ構造を有しうる。そのようなキャッシュメモリ構造を
支持するシステムコントローラは、システムコントロー
ラのそのような構造の専用重複タグを通してインプリメ
ント(実施)される。好ましい実施例では、I/O・U
PAポートは、システムコントローラにおいて対応する
数のDtagsを有する複数の完全関連コヒーレントバ
ッファを有する。標準であるように、データブロックを
識別するために必要なアドレスビットの数は、キャッシ
ュメモリの大きさ及びキャッシュメモリにマップされた
アドレス空間の大きさに依存する。例えば、8ギガバイ
トのアドレス空間、及び512キロバイトの直接マップ
型キャッシュメモリに対して、14のアドレスビットが
キャッシュメモリの各ラインのデータブロックを識別す
るために必要である。即ち、指定バイトに対して33ビ
ットアドレスPA[32:0]、64バイトラインを有
する514キロバイトキャッシュメモリに記憶された対
応64バイトデータブロックに対して27ビットアドレ
スPA[32:6]を与えると、データブロックの完全
アドレスの14の上位アドレスビットPA[32:1
9]は、データブロックを識別するためにキャッシュタ
グに記憶され、データブロックのアドレスの次の13の
ビットPA[18:6]は、データブロックが記憶され
るのはどのキャッシュラインであるかを決定する。シス
テム100では、1テラバイトコヒーレントアドレス空
間PA[39:0]及び512キロバイト直接マップ型
キャッシュライン130で、各Etagは、キャッシュ
メモリの対応ラインに記憶されたデータブロックの全ア
ドレスの21の上位ビットを記憶することが必要であ
る。
【0039】キャッシュインデックスに記憶されるアド
レスビットの数、従って各マスタ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アレーから生成されるということを除いて、同じ
アドレスで表されたときにキャッシュメモリの主キャッ
シュインデックスによって生成されたキャッシュ・ヒッ
ト/ミス信号と同等である。
【0040】スヌープバス140は、アドレスバス11
4と独立にかつデータバス116と独立にスケーラブル
である。それゆえに、用いられた並列スヌープバス14
0の数及び各スヌープバス140を装填するDtagア
レー134の数は、アドレス及びデータバス114,1
16のスピード要求事項への依存性なしに、Dtagル
ックアップ及び更新動作のスピード要求事項だけに基づ
くことができる。
【0041】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によって使用され
る。図4に示されるように、これらのインターフェイス
は、多数のキューを含む。スレーブインターフェイス1
52は、トランザクション要求(PREQ,SRE
Q)、割込み要求(INT)、及び要求に関連したデー
タ(PREQ_DQ,INT_DQ)を受け取るための
入力要求キューを含む。マスタインターフェイス150
は、アウトバウンド要求に対するキューC0,C1を含
みかつ各マスタクラスに対するインバウンド及びアウト
バウンドデータキューIDQ0,ODQ0,IDQ1,
ODQ1を随意に含む。
【0042】以下の説明のあるものは、特定のトランザ
クション及び応答メッセージを参照する。全てのそのよ
うなトランザクション及び応答メッセージは、“トラン
ザクションの詳細な説明”と題されたこの文書の部分に
記載される。ポートIDレジスタ158のフィールド
は、以下のようである:IDフィールド160は、ポー
トに関連したUPAモジュールを識別する16ビットフ
ィールドであり、製造者のID(サン・マイクロシステ
ムズ,Inc.によって割り当てられた)に対する6ビ
ット、モジュールまたはプロセッサの型(製造者によっ
て割り当てられた)に対する6ビット、及びモジュール
・バージョン/リビジョン番号(製造者によって割り当
てられた)に対する4ビットを含んでいる。UPACA
Pフィールド161は、UPAポートの能力(機能)を
示すための5ビットマスクフィールドである。UPAが
マスタインターフェイスを有するならばUPACAP
[0]がセットされる。UPAモジュールがキャッシュ
(UPAポートを“キャッシュマスタ”にする)を有す
るならばUPACAP[1]がセットされる。
【0043】UPAポートがUPA_Slave_In
t_L信号を用いて割込み装置インターフェイスを有す
るならばUPACAP[2]がセットされる。このビッ
トは、スレーブ専用UPAポートによって主にセットさ
れる。ソフトウェアは、割込みハンドラーに対応してい
るターゲット−MIDをこのUPAポートに割り当て
る。UPAポートがP_INT_REQトランザクショ
ン要求プロトコルを用いて割込み装置インターフェイス
を有するならばUPACAP[3]がセットされる。ソ
フトウェアは、割込みハンドラーに対応しているターゲ
ット−MIDをこのUPAポートに割り当てる。UPA
ポートが割込みハンドラーインターフェイスを有するな
らばUPACAP[4]がセットされる。システムコン
トローラは、このビットがセットされたときにだけP_
INT_REQ割込み要求を他のUPAポートからこの
ポートに進める。ECCNotValidフィールド1
62は、このUPAポートがECCを支持しないことを
示すための1ビットフィールドである。このフィールド
は、データを供給するときにUPAポートがECCを生
成できるならば0×0にセットされる。データを供給す
るときにUPAポートがECC生成を支持しないならば
それは0×1にセットされ、かつECCチェッキングが
できないことを受容UPAポートに示すことをシステム
コントローラ110に要求する。ECCNotVali
dが0×1にセットされたときに、UPAポートは、U
PAデータバス上のECCチェッキングを支持しないし
UPAアドレスバス上のパリティチェッキングも支持し
ない。
【0044】ONEREADフィールド164は、この
UPAポートが一度にそれへの一つの顕著な(突出し
た)スレーブ読取りP_REQトランザクションだけを
支持することを示すための1ビットフィールドである。
ONEREADフィールドがセットされたならば、この
UPAポートは、P_RAB_REPLY及びP_RA
SP_REPLYメッセージを発行できず、それは、P
_RASB_REPLY応答メッセージを用いなければ
ならない。結果として、ONEREADフィールドがセ
ットされたならば、このUPAポートは、スレーブアク
セスに対してそれに指向されたP_NCRD_REQ及
びP_NCBRD_REQトランザクションに対してP
_RASB応答を用いる。以下に説明するように、シス
テムコントローラは、UPAポートに代わってこれらの
トランザクションに対するMID、クラス、及びサイズ
情報を維持する。P_NCRD_REQトランザクショ
ン要求メッセージ及びP_RASB応答メッセージも以
下に詳述する。PREQ_RQ[3:0]フィールド1
66は、スレーブインターフェイス152のPREQ_
RQキュー167の大きさをエンコード(符号化)する
4ビットフィールドである。このフィールドは、UPA
スレーブインターフェイス152が同時に記憶すること
ができる(2サイクル)入力P_REQトランザクショ
ン要求パケットの最大数を指定する。全てのUPAポー
トが、最小で、そのポートIDレジスタのスレーブ読取
りを支持しなければならないので、PREQ_RQの最
小値は、0×1である。
【0045】PREQ_DQ[5:0]フィールド16
8は、PREQ_DQキュー169の大きさをエンコー
ドする6ビットフィールドである。このフィールドは、
UPAスレーブポートが そのP_REQ書込みデー
タキュー169に受け取ることができる入力クワッドワ
ード(16バイト量)の数を指定する。書込みデータキ
ューPREQ_DQは、PREQ_RQ要求キューに支
持された要求の最大数に対するデータブロック(64バ
イト)を収容しなければならない。結果として、PRE
Q_DQデータキューは、UPAポートがスレーブ書込
みを支持しないならばPREQ_DQを0×0に等しく
セットすることができることを除いて、常にPREQ_
RQフィールド166において指定された大きさの4倍
である。PINT_RDQ[1:0]フィールド170
は、INT_RQ及びINT_DQキュー171,17
2の大きさをエンコードする2ビットフィールドであ
る。PINT_RDQフィールド170は、UPAポー
トが割込みハンドラーインターフェイス156を有する
ならば、有効である。割込み要求キューの大きさ、IN
T_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にセットする。
【0046】マスタインターフェイス マスタインターフェイス150は、オプション(任意)
である。UPAマスタインターフェイスは、UPAポー
トにトランザクション要求(P_REQ)を始動(開
始)させる。マスタインターフェイス150を有してい
るUPAポート104は、ここでマスタポートと呼ばれ
る。マスタポートに対するUPAモジュールは、キャッ
シュマスタポートと呼ばれるような場合に、物理的にア
ドレス指定されたコヒーレントキャッシュを含みうる。
キャッシュは、“MOESIキャッシュコヒーレンスプ
ロトコル”(後述する)に参与し、かつシステムコント
ローラ110からのコピーバック−無効要求に応答す
る。コヒーレントキャッシュは、UPAモジュールのあ
らゆる他の専用局所キャッシュの全体包含(total inclu
sion) を有する。好ましい実施例では、各キャッシング
UPAマスタポートは、部分的には各データプロセッサ
のキャッシュメモリが単一書戻しバッファ(図8のバッ
ファ280を参照)を有するだけなので、かつ部分的に
は多重書戻しバッファが必要である複雑な制御論理を回
避するために、ほとんどの場合に一つの顕著な(突出し
た)ダーティ・ビクティム(汚染犠牲者)書戻しを有す
ることができる。
【0047】データプロセッサが多重装填(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も含みうる。二つ以上のトランザクションクラ
ス(ここではマスタクラスと呼ばれる)を有することの
目的は、どのメモリトランザクションが順番に順序付け
される必要がありどのメモリトランザクションがその必
要がないかを各データプロセッサに示させることによっ
てメモリトランザクションの並列実行を増大することで
ある。特定データプロセッサからの各マスタクラスのト
ランザクションは、データプロセッサがそのクラスにお
いてメモリ要求を生成するのと同じ順序で終了されなけ
ればならない。異なるクラスにおけるメモリトランザク
ションの間には順序付け要求事項が存在しない。それゆ
えに、データプロセッサが、クラス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を終了することができる。
【0048】データキューは、データ転送の取扱いを簡
略化するために好ましい実施例において用いられる。ア
ウトバウンドデータキューは、対応トランザクション要
求または応答メッセージが送信される前に送信されるべ
きデータで常に満たされる。このように、データ書込み
トランザクション要求メッセージが送信されるか、また
は“データレディ(data ready)”応答メッセージがUP
Aポートによって送信されるときに、相互接続は、関連
データがすぐに送信可能であることを保証する。その大
部分がオプションである、インバウンドデータキュー
は、あらゆる他の論理の状態とは独立に満たすことがで
きるFIFO(先入れ先出し方式)バッファを用いて一
般に実施される。結果として、インバウンドデータキュ
ーがUPAポートに供給される(設けられる)ときには
いつでも、UPAモジュール(データプロセッサのよう
な)及びそのUPAポートのどちらも、データパケット
を受け取るためのハンドシェークプロトコルを管理する
必要がない。それよりも、データは、インバウンドデー
タキューの相互接続によって単に記憶されかつ関連UP
AポートまたはそのUPAモジュールは、要求された資
源が利用可能であるときはいつでもそのデータを処理す
る。
【0049】各マスタ要求クラスのトランザクションに
対するS_REPLYは、トランザクション要求が要求
しているUPAポートによって最初に発行された順序と
同じ順序でシステムコントローラ110によって、要求
しているマスタUPAポートに発行される。この要求事
項は、(A)各マスタ要求クラス内のトランザクション
が、トランザクション要求が発行される順序と同じ順序
で厳格にシステムコントローラによって起動されるよう
に先入れ先出しバッファとして各マスタクラス要求キュ
ーSCIQ0/1を扱うこと、及び(B)アクティブト
ランザクション要求のセット内で、それらトランザクシ
ョンが起動されたのと同じ順序で同じキューイングUP
Aポート及びマスタクラスを有しているトランザクショ
ンに対するS_REPLYの発行をキューイングするこ
とによってシステムコントローラで実施される。上記し
たように、二つのトランザクション要求クラスC0,C
1の間に順序付け(順序)関係が存在しない。一つのク
ラスからの要求に対するS_REPLYは、それらの要
求がシステムコントローラに送信された順序に関係な
く、二次クラスからの要求に対するS_REPLYより
も早くまたは遅くくる。
【0050】異なるマスタ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装置(または異なる所定のア
ドレス範囲)に対してなされるトランザクションを実行
することを許容される。
【0051】各UPAモジュールは、順序付けが重要で
ある全てのトランザクション要求を単一のマスタ要求ク
ラスに置くことを必要とする。全てのプロセッサUPA
モジュールに対する好ましいクラス割り当ては、以下の
ようである:クラス0は、キャッシュミス、及びブロッ
ク装填(block loads) による読取りトランザクションに
対して用いられる。クラス1は、書戻し要求、WriteInv
alidate (書込み無効)要求、ブロック記憶、割込み要
求、及び非キャッシュ型読取り/書込み要求に対して用
いられる。クラスへのメモリトランザクションのこの割
り当ては、キャッシュミスによってもたらされたメモリ
トランザクションを他のトランザクションによってブロ
ックされないようにイネーブルしかつデータプロセッサ
が複数の顕著な(突出した)装填及び/または先取りを
支持するときに特に重要である。これは、他の最適化と
共に、キャッシュ充填(cache fills) に対する最も低い
可能な待ち時間を与える。相互接続は、トランザクショ
ンの並列実行を最大化でき、かつ同じUPAポート及び
クラスからのトランザクションを除いて、それらをあら
ゆる順序で終了させる。コヒーレンスを保持し、かつプ
ログラマの視点から順序一定(sequentialconsistency)
を達成するために、TSO(総合記憶順序)、PSO
(部分的記憶順序)及びRMO(緩和メモリ順序)メモ
リモデル及びSSO(強力順序)I/O空間メモリモデ
ルは、相互接続のハードウェアを実際に順序一定(seque
ntially consistent) にすることなく支持される。
【0052】UPAマスタポートは、そのメモリモデル
に基づいてその内部メモリ事象の順序について単独でま
かされ(責任を有し)、かつそのメモリモデル順序付け
要求事項を支持するためにあらゆる要求クラスからのト
ランザクションの組合せを発行することができる。UP
Aポートのデータプロセッサは、その局所メモリモデル
に基づいて必要によりトランザクションを並列化しかつ
順序付けるために二つのマスタクラスを使用しうる。全
てのバリア及び同期は、それがマスタクラスからのトラ
ンザクションを発行する前にそのメモリモデルに基づい
てデータプロセッサによって実施される。全てのデータ
トランザクションは、常に終了し、かつ(一つの割込み
トランザクションを除いて)システムコントローラ11
0からマスタUPAポートへの再試行(リトライ)NA
CKは、存在しない。UPAマスタポートは、それ自体
のスレーブポートへの読取り/書込みスレーブアクセス
を行ってはならないし、既にそのキャッシュの中にある
データブロックに対する要求を行ってもいけないし、そ
れ自身に割込みを送ってもいけない。コネクタに関連し
た電気的制約によりループバック(loopback)は、本発明
の好ましい実施例によって支持されない。しかしなが
ら、ループバックの使用を論理的に妨げるものは、本発
明のシステムアーキテクチャに存在しない。事実、S_
REPLYのプロトコル、データ転送及びキャッシュコ
ヒーレンスは、ループバックで作動するように設計され
ている。
【0053】スレーブインターフェイス 全てのUPAポートは、スレーブインターフェイス15
2を含み、かつ全てのUPAポートは、ポートIDレジ
スタ158をインプリメント(実施)する。スレーブイ
ンターフェイス152は、トランザクションにだけ応答
することができ、トランザクションを始動(開始)する
ことができない。スレーブインターフェイス152は、
ときどきここで“スレーブポート”と呼ばれる。スレー
ブポートへの全ての参照は、UPAポートがマスタUP
Aポートであるか否かに係わりなく、UPAポートのス
レーブインターフェイスを意味する。キャッシングマス
タUPAポート上のUPAスレーブインターフェイス1
52は、UPA6ポート(UPAポート)にシステムコ
ントローラ110からのコピーバック−無効要求を受け
取らせる。UPAスレーブインターフェイス152は、
スレーブインターフェイスが割込みハンドラーインター
フェイス156を含むUPAポートの一部であるなら
ば、UPAポートに割込みパケットトランザクションを
受け取らせる。
【0054】UPAスレーブインターフェイスは、非キ
ャッシュ型アドレス空間を有し、かつマスタUPAポー
トからのUPAモジュール上で、そのポートIDレジス
タ158を読取ることを含んでいる、装置及びレジスタ
へのプログラムされたI/O(PIO)読取り/書込み
アクセスを許容する。各UPAスレーブインターフェイ
スは、8ギガバイトの非キャッシュ型アドレス空間が割
り当てられる。UPAポートがそれにアサートされたU
PA_Addr_Valid信号を見たときに、最上位
アドレスビット、PA[40]が1に等しいならば、ト
ランザクション要求パケットからの物理アドレスビット
PA[32:4]は、非キャッシュアドレス空間におけ
るアドレスを表わす。UPA相互接続アーキテクチャ
は、システム幅アドレス空間を画定しないし、ポートI
Dレジスタ158を除いて、あらゆるシステムレジスタ
に対するアドレスデコード(復号)も画定しない。UP
Aスレーブインターフェイスは、それらの要求が受け取
られたのと同じ順序でマスタUPAポートから同じマス
タクラスからのPIO読取り/書込みトランザクション
要求を処理する。即ち、それは、トランザクション要求
が受け取られたのと同じ順序でそれらのトランザクショ
ン要求に対するP_REPLYメッセージを送る。しか
しならが、それは、UPAポートからの異なるマスタク
ラスにおける要求に対する順序付け、または異なるUP
Aポートからの要求に対する順序付けを保持する必要が
ない。
【0055】UPAスレーブインターフェイスが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アドレスに基づく順序
付けの両方に用いることができる。UPAスレーブイン
ターフェイスは、書込みトランザクション上での書込み
終了を保証することができない。(同じプロセッサによ
り)読取りが後続する書込みは、ロケーション(記憶位
置)が存在するならば最後の書込みの結果をリターンす
る。しかしながら、I/O装置レジスタへの読取り−書
込みは、インプリメンテーション指定サイドアフェクト
(side affects)を有することができるので、これの意味
論(semantics) は、各I/O装置による。
【0056】マスタUPAポートは、二つが同じUPA
アドレスバスを共有している場合でも相互接続モジュー
ル112を通してのみスレーブUPAポートと通信す
る。スレーブ専用UPAポート(マスタインターフェイ
スを有さないUPAポート)は、システムコントローラ
へ割込みを知らせるために専用割込みワイヤを使用する
ことができる。システムコントローラは、それに対する
割込みパケットを生成し、かつそれを割込みハンドラー
UPAポートへ進める。システムコントローラ110
は、図4及び図5に示した3つのスレーブ要求受信キュ
ー(PREQ_RQ,SREQ_RQ,INT_RQ)
及び二つのデータキュー(PREQ_DQ,INT_D
Q)の最大の大きさを知ることによってUPAポートス
レーブインターフェイスへの要求のフロー制御を取り扱
う。各UPAポートに対するポートIDレジスタ158
は、それがそのキューに同時に記憶することができる各
型の顕著(突出)なトランザクション要求の最大数、そ
れゆえに、それらの要求のあるものがサービスを受ける
までどのくらいの数のそのような要求をシステムコント
ローラ110によってそれに送ることができるかを特定
する。また、ポートIDレジスタ158は、データキュ
ーのそれぞれが記憶できるクワッドワード(16バイト
ユニット)の最大数を特定する。
【0057】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システムクロックサイクル内でサービスを
受ける。
【0058】更に、上述したデュアルポートされたキャ
ッシュコントローラ方法を用いて、一つのデータプロセ
ッサ178から別のものへのコピーバック要求は、相互
接続が競合するメモリトランザクションを有さないとき
に主メモリからの装填とおおよそ同じ量の時間で終了す
る。特に、好ましい実施例では、主メモリからの装填
は、終了するために約8システムクロックサイクルが掛
かり、かつ一つのデータプロセッサキャッシュメモリか
ら別のデータキャッシュメモリプロセッサへのコピーバ
ックも、競合するメモリトランザクションが存在しない
ときに終了するために約8システムクロックサイクルが
掛かる。ほとんどのインプリメンテーションでは、各U
PAスレーブインターフェイスは、UPAアドレスバス
を介して受け取ったトランザクション要求のパリティチ
ェックを実行しかつ致命的エラーP_REPLYメッセ
ージであらゆるパリティエラーを報告することを必要と
する。ほとんどのインプリメンテーションでは、各UP
Aスレーブインターフェイス152は、ECCが有効で
あるならば書込みトランザクションのECCチェックを
実行し、かつデータエラーをログしかつ報告することも
必要である。
【0059】割込みインターフェイス 割込みインターフェイス154は、オフションである。
UPAポートがマスタインターフェイス150を支持す
るならば、それは、マスタUPAポートのあらゆるマス
タクラスから割込みハンドラーであるターゲットスレー
ブUPAポートへ割込みパケットトランザクションを発
行することができる。マスタUPAポートの割込みイン
ターフェイスは、P_INT_REQトランザクション
(以下のトランザクションの説明を参照)を始動(開
始)することによって割込みを生成する。マスタUPA
ポートは、要求パケットのターゲット−ID<4:0>
を特定することによって特定の宛先割込みハンドラーU
PAポートに対する割込みパケットを生成する。ターゲ
ット−IDは、宛先UPAポートの固有5ビットUPA
_Port_IDと同じである。それ自身にUPAポー
トによって導かれた割込みは、電気コネクタ考慮により
好ましい実施例においてUPAインターフェイス上で支
持されないが、しかし本発明の代替実施例においてよく
支持されうる。
【0060】一つ(またはそれ以上)の割込みハンドラ
ーUPAポートのターゲット−IDは、システム初期化
ソフトウェアによって各非プロセッサ割込み装置UPA
ポートに割り当てられる。非プロセッサ割込み装置UP
Aポートは、次に割り当てられたターゲット−IDだけ
に割込みトランザクションを送ることができる。プロセ
ッサUPAポートは、(プロセッサ対プロセッサ・ソフ
トウェアクロスコールに対する)あらゆる割込みハンド
ラーターゲット−IDへ割込みトランザクションを送る
ことができる。各割込みトランザクション要求P_IN
T_REQに対するターゲット−ID<4:0>は、2
サイクル割込みパケットの最初のサイクルの物理アドレ
スフィールドPA<18:14>に担持される(図9C
参照)。UPAポートは、あらゆるマスタ要求クラスに
P_INT_REQを置くことができる。それが一つの
クラスまたは別のクラスであるべきであるという要求事
項が存在しない。しかしながら、それは、キャッシュ充
填トランザクションをブロックしないように好ましい実
施例においてクラス1に置かれる。割込みトランザクシ
ョンを始動したUPAポートがS_INAK応答(さも
なければNACK応答として知られた)を受け取るなら
ば、要求しているUPAポートは、その出力データキュ
ーから割込みデータを、かつマスタ要求クラスキューか
らP_INT_REQ要求を取り除き、あるバックオフ
間隔の後で再試行する。
【0061】UPAポートが、UPAデータバス上の6
4バイトの割込みデータを駆動するためにS_WAB応
答を受け取るならば、そしてターゲットが有効な割込み
ハンドラーであるならば、P_INT_REQとデータ
の両方がシステムコントローラによってターゲットUP
Aポートに運ばれる(ちょうど非キャッシュブロック書
込みトランザクションのような)ことが保証される。タ
ーゲットが割込みハンドラーでないならば、システムコ
ントローラがそれを廃棄(かつ状態ビットをセット)し
うるか、または受容UPAポートがそれを(暗黙のうち
に)廃棄しうる。割込みは、異なるUPAポートへ多重
折り返し(multiple back-to-back) P_INT_REQ
トランザクションを発行するならば、それらが同じ順序
で運ばれるという保証はない。しかしながら、同じター
ゲット−IDを特定している折り返しP_INT_RE
Qは、同じ順序でターゲットUPAポートへシステムコ
ントローラによって運ばれて、システムコントローラ1
10からのNACKsを結果として生ずるあらゆる割込
み要求も、それらのオリジナル発行順序でUPA割込み
装置インターフェイスによって再試行されるということ
が提供される。
【0062】UPAポートがマスタインターフェイスを
支持しないが、割込みインターフェイス154を要求す
るならば、割込みインターフェイス154は、システム
コントローラ110に単一優先レベル割込みを送るべく
専用ワイヤ(図3においてUPA_Slave_Int
_Lとラベル付けされた)によって結合される。システ
ムコントローラ110は、割込みパケットを発生させか
つ割込みハンドラーUPAポートへ送り出させる。割込
みインターフェイスを有しているスレーブUPAポート
では、割込みハンドラーがスレーブUPAポートの所定
の割込みクリアレジスタへのスレーブ書込みで割込みを
クリアするまで、二次割込みをUPA_Slave_I
nt_Lライン上にアサートすることができない。更
に、単一割込み優先レベルだけが、UPA_Slave
_Int_Lラインを用いて生成された割込みに対して
利用可能である。
【0063】割込みハンドラーインターフェイス 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は、ソフトウェアが割込みハンドラーイ
ンターフェイスの‘割込みクリア’レジスタへの書込み
を実行するときに生成される。
【0064】システムコントローラレジスタ 図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は、全てのインアクティブ及び
アクティブ保留トランザクションを常に把握するために
システムコントローラによって用いられる。SC ID
レジスタ180のフィールドは、次の通り:IDフィー
ルド181は、システムコントローラを識別する16ビ
ットフィールドである。
【0065】UPANUMフィールド182は、システ
ムコントローラが支持することができるUPAポートの
最大数を指定する5ビットマスクフィールドである。S
CIQ0[3:0]フィールド183は、特定のUPA
ポートに対する入力クラス0要求キューSCIQ0に記
憶することができる(2サイクル)要求パケットの数を
特定する4ビットフィールドである。SCIQ1[3:
0]フィールド184は、特定のUPAポートに対する
入力クラス1要求キューSCIQ1に記憶することがで
きる(2サイクル)要求パケットの数を特定する4ビッ
トフィールドである。各そのようなマスタUPAポート
に対するSCIQ0及びSCIQ1要求入力キューの大
きさを示すために各マスタUPAポートに対するSCI
Q0及びSCIQ1レジスタの個別のセットが存在す
る。図6を参照すると、SC Configレジスタ1
90は、システムコントローラ110によって支持する
ことができる各UPAポートに対する一つの行または記
録192を含む。SC Configレジスタの各行の
位置は、対応UPAポートのポートIDに対応する。そ
れゆえに、SC Configレジスタ190の最初
(第1)の行は、ポートID 00000を有するUP
Aポートに対する構造データを記憶し、第2の行は、ポ
ートID 00001を有するUPAポートに対する構
造データを記憶する、等。各そのような記録は、ここで
“SCConfigレジスタのポート記録”と呼ばれ
る。SC Configレジスタ190の各ポート記録
におけるフィールドは、次の通り:UPA_Port_
ID_Reg193のコピーは、事実上、対応UPAポ
ートのポートIDレジスタのコピーである。
【0066】キャッシュインデックスマスク(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ポートへの追加ポートトランザクショ
ン要求の送信をブロックする。
【0067】SReqCntフィールド197は、UP
Aポートによっていまだ肯定応答されていない対応UP
Aポートへ送られたシステムコントローラトランザクシ
ョン要求の数である。システムコントローラは、各スレ
ーブインターフェイスにおけるSREQキューの最大の
大きさが一つなので、このフィールドの値が1に等しい
ときにはいつでもUPAポートへの追加システムコント
ローラトランザクション要求の送信をブロックする。
【0068】データフロー 図5及び図7を参照すると、メモリへ及びメモリからの
一般的な読取り/書込みデータフローは、次の通りであ
る。図には明示していないけれども、システムコントロ
ーラ110は、各マスタUPAポートに対するSCIQ
0及びSCIQ1入力要求キューの個別セットを含む。
更に、図8のフローチャートは、全データ転送トランザ
クションの全てのステップ(段階)を示していないとい
うことに注目すべきである。それよりも、それは、ほと
んどのデータ転送トランザクションに共通なステップだ
けを示す。全ての画定されたデータ転送トランザクショ
ンの更なる詳細は、“トランザクションの詳細な説明”
と題されたこの文書の部分に記載されている。UPAマ
スタポートは、システムコントローラがそれ自身の二つ
の要求入力キューの一つ(212)に受け取る、そのU
PAアドレスバス上の読取り/書込みトランザクション
要求(P_REQ)をシステムコントローラ110(2
10)へ発行する。それがコヒーレント要求(214)
であるならば、システムコントローラ110は、スヌー
プバス上でDtagルックアップ(スヌープ)動作を行
い、続いてDtag更新動作(216)を行う。Dta
gルックアップと同時に、読取りトランザクションが主
メモリに配置されたアドレス上で実行されるならば、シ
ステムコントローラは、メモリサイクルを開始する(2
17)。
【0069】“スヌープ動作”は、いずれかのDtag
アレー134が特定されたアドレスに対する有効エント
リを記憶するかどうかを決定すべくスヌープバス140
に結合された全てのDtagアレー134を同時にアク
セスする。Dtagアレー134のそれぞれは、各スヌ
ープ動作に応じて2ビット状態値並びにヒット/非ヒッ
トビットを出力する。Dtagアレーによって出力され
た2ビット状態値は、ヒット/非ヒットビットがマッチ
ングエントリがDtagアレー134に見出されたこと
を示すならば、Dtagの状態を表わす。“ヒット”ビ
ットがトゥルー(True)でありかつ二つのビットD
tag状態値が00に等しくないならば、“ヒット”
は、“Dtagアレーで検出される。行なわれている指
定トランザクション要求により、“ヒット”がDtag
アレー134のいずれかで検出されたならば、データ
は、一つのマスタUPAポートのキャッシュメモリから
供給されうるし、指定されたアドレスに対するデータを
記憶するキャッシュメモリのあるものまたは全てにおけ
るキャッシュエントリは、無効にされうるか、またはD
tag及びEtagアレーの一つ以上のキャッシュエン
トリのタグ状態は、以下に説明するように、別の方法で
更新されうる。
【0070】コヒーレント読取りトランザクションに対
して、(A)Dtagアレー134の指定されたアドレ
スに対してヒットが存在しない(222)か、または
(B)キャッシュヒットに対応している全てのDtag
sが非変更S(供給クリーン)状態でありかつトランザ
クションが自分(RDO)のトランザクションへの読取
りでないので、データがメモリから入力されるというこ
とを、スヌープが決定するならば、主メモリから要求し
ているUPAポートまで相互接続モジュール112を通
るデータ経路は、システムコントローラ110によって
セットアップ(準備)される(224)。システムコン
トローラ110は、要求しているUPAポートが指定さ
れたアドレスに対応しているデータブロックを受け取る
時間であるときに(228)要求しているUPAポート
にS_REPLYメッセージを送る(226)。別のU
PAポートキャッシュからのコヒーレント読取りは、要
求しているプロセッサ以外のデータプロセッサにおける
キャッシュメモリに対するキャッシュヒットが存在して
おり(222)、かつ(A)要求していないデータプロ
セッサに対するDtagが、変更されたデータブロック
を示す、OまたはM状態であるか、または(B)読取り
トランザクションが自分(P_RDO_REQ)のトラ
ンザクションへの読取りであるときに(223)、必要
である。
【0071】システムコントローラがデータブロックが
別のUPAポートキャッシュによって供給されなければ
ならないということを決定する(222,223)とき
に、システムコントローラ110は、コピーバックS_
REQを供給しているUPAポートのスレーブインター
フェイスへ送り、かつメモリサイクルをアボート(異常
終了)する(240)。二つ以上のデータプロセッサを
有しているシステムでは、システムコントローラは、無
効トランザクション要求(S_INV_REQ)を、供
給しているUPAポート以外の、キャッシュヒットが検
出された全てのキャッシングUPAマスタポートへも送
る(240)。データが準備できたときに、スレーブU
PAポートは、P_REPLYをシステムコントローラ
110へ発行する(242)。次に、システムコントロ
ーラ110は、供給しているUPAポートから要求して
いるUPAポートまでデータ経路を形成するために制御
信号を相互接続モジュール112へ送る(244)。ま
た、システムコントローラ110は、そのUPAデータ
バス上の要求したデータを駆動するためにS_REPL
Yを供給しているUPAスレーブインターフェイスへ送
り、かつそのUPAデータバスからデータを受け取るべ
くそれを促すためにS_REPLYを要求しているUP
Aマスタポート(246)へ送る(228)。
【0072】一般的なコヒーレント書込み(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参照)。
【0073】書戻しトランザクションが取り消されなけ
れば(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)。
【0074】書戻しトランザクションが取り消されたと
きに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)。
【0075】読取り廃棄(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)。
【0076】別の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カウントをシス
テムにディクリメントさせることができるのでフロー制
御の目的に対して重要である。
【0077】アドレス及びデータ経路が独立であり、か
つ全ての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の中にコピーされる。
【0078】各そのようなキューは、関連装置がエンキ
ューすることを欲しうる最大数の要求またはデータパケ
ットを取り扱うために十分に大きくなければならないと
いうことを除いて、データ及び要求出力キューに対する
指定サイズ制限または要求事項は、存在しない。更に、
出力データ及び要求キューの大きさは、フロー制御目的
に対してシステムの他の装置に関係ないので、それらの
大きさの値は、初期化ソフトウェアによってアクセスさ
れた構成レジスタにおいて示されていない。ソフトウェ
ア初期化の後、上流のキューは、すぐ下流のキューへ後
者のキューが有する容量よりも多くの要求を発行しな
い。システムコントローラ110からUPAポートへの
S_REPLYは、システムコントローラ110が対応
キューにおける更に一つの要求に対する空間をフリーに
したということをUPAポートに示し、かつそのキュー
に対する別のマスタ要求の準備を整える。UPAポート
からシステムコントローラ110へのP_REPLY
は、UPAスレーブポートがその対応キューにおける更
に一つの要求に対する空間をフリーにしたということを
システムコントローラ110に示し、かつ別のスレーブ
要求の準備を整える。
【0079】UPAポートのような、上流装置は、なん
らかの応答を待つことなく下流キューの最大容量まで一
連のトランザクションをすばやく連続して送信すること
ができ、そして下流キューへ追加の要求を送信する前に
少なくとも一つのS_REPLYまたはP_REPLY
を待つ(待機する)。フロー制御を図5に絵画的に示
す。システムコントローラ110入力要求キューSCI
Q0及びSCIQ1は、それぞれUPAマスタ要求クラ
スキューC0及びC1の下流である(逆に、C0及びC
1は、上流である)。同様に、UPAスレーブインター
フェイスの全てのキューは、システムコントローラ11
0の下流である。
【0080】キャッシュコヒーレンスモデル概要 本発明で用いられるキャッシュコヒーレンスプロトコル
は、二点間書込み無効である。それは、キャッシングU
PAマスタポートのキャッシュタグ(Etags)に保
持された5つの“MOESI”状態に基づく。(本発明
の別の実施例は、以下に説明するように、“反射メモ
リ”プロトコルを用いているシステムに対して4つの
“MESI”状態を用いる。)。キャッシュコヒーレン
スプロトコルは、物理的にインデックスされ物理的にタ
グされた(PIPT)キャッシュ上でだけ動作する。U
PAキャッシュコヒーレンスドメインは、物理的にアド
レス指定されたされたキャッシュによって境界を付けら
れる。一次レベルの仮想的にアドレス指定されたキャッ
シュは、もし存在するならば、UPAモジュールそれ自
体によってコヒーレントに維持されなければならない。
Etagキャッシュ状態は、次の通り(Etag状態遷
移に対して図10を参照): 無効(I):キャッシュインデックス及びキャッシュラ
イン内容が無効である。
【0081】共有クリーン(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と称する特別のコピーバックトランザクシ
ョンの使用でシステムコントローラによってデータプロ
セッサに示される。
【0082】キャッシュコヒーレンスのユニットは、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マスタポートからの全ての後続の装填または
記憶は、どのマスタが記憶を最後に実行したかに関係な
くそのデータの最終値を常に調べる。
【0083】代替“性能”インプリメンテーションで
は、記憶を実行しているプロセッサは、全ての他のコピ
ーが無効にされる前でも先に進むことを許される。その
ような実施例では、他のプロセッサは、保留無効トラン
ザクションが作用するまで過渡的時間量(transient amo
unt of time)に対するそれらのキャッシュの古い値を調
べることを継続しうる。しかしながら、保留無効を有し
ているプロセッサからの全記憶ミスは、それらのプロセ
ッサにおける無効が終了するまで、終了することから相
互接続によって遅延されかつ防止される。この最適化に
おいて、システムコントローラは、全ての無効応答を待
たない(待機しない)。しかしながら、この最適化を用
いているときでさえも、記憶は、まだ排他的(即ち、一
度に一つのプロセッサだけがキャッシュブロックへ書込
むことができる)でありかつ二つのプロセッサから同じ
キャッシュブロックまでの二つの記憶の間に過渡的ステ
ール状態(transient stale state) が決して存在しな
い。図7及び図9を参照すると、本発明のキャッシュコ
ヒーレンスプロトコルは、システムコントローラ110
からUPAポートまでの顕著なコピーバック無効トラン
ザクションをUPAポート毎につき一つに制限し、かつ
コヒーレントキャッシュへの他の局所アクセスに対して
それに優先権を与えることによって高い優先度を有する
要求にサービスすることをUPAポートに要求する。
【0084】キャッシュコヒーレンスプロトコルは、書
戻しキャッシュを支持し、かつ顕著な汚染犠牲者(dirty
victim)書戻しトランザクションをUPAポート毎につ
き一つに制限する。書戻しが終了するまでコヒーレンス
ドメインに維持されることを要求される汚染犠牲者にな
ったライン(dirty victimized lines)をハンドリングす
るUPAポートを簡略化するために、キャッシュコヒー
レンスプロトコルは、書戻しが終了する前に汚染犠牲者
(dirty victim)が無効にされたならば、UPAマスタポ
ートに書戻しトランザクションをリトラクト(retract)
させない。その代わり、システムコントローラは、書戻
しトランザクションが現れるときに書戻しがアボートさ
れる(取り消される)ことが必要であるということを記
憶している責任をもたせる。代替の実施例では、多重書
戻しトランザクションは、プロセッサに多重書戻しバッ
ファを、かつシステムコントローラに同じ数のDtag
非常駐バッファを供給することによって支持される。同
じプロトコルは、複数の書戻しトランザクションに対し
て作動する。本実施例は、好ましいデータプロセッサが
複数の顕著なキャッシュミストランザクションを発行し
ないので、一つの顕著な書戻しだけを用いる。代替実施
例は、複数の顕著なキャッシュミスを用いるデータプロ
セッサに対する必要事項である。
【0085】マルチプロセッサシステムにおけるそのコ
ヒーレントキャッシュへのプロセッサの参照とのスヌー
プ干渉を回避するために、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)一つ以上の他のキャッシュ
メモリに記憶されうる。
【0086】共有変更(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) ”最適化と呼ばれ、
かつそれは、各データプロセッサによって生成されなけ
ればならないトランザクションの数をかなり低減する。
【0087】上述したように、“反射メモリ”プロトコ
ルを用いているシステムでは、変更されたデータブロッ
クがけっして共有されないので、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) ”は、データプロセッサが、変位されているデ
ータブロックと同じキャッシュラインにマップする別の
データを参照するときのキャッシュデータブロックの変
位を意味する。本発明のキャッシュ書戻し機構は、書戻
しトランザクションに、汚染犠牲者によって前に占有さ
れていたキャッシュラインに新しいデータブロックを記
憶するトランザクションと独立にハンドルさせて、それ
により書戻しトランザクションに一般に関連する順序制
約を回避する。
【0088】図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は、用いられない。
【0089】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の犠牲者キャッシュラインがクリーン
であるときにトランザクションに用いられない。
【0090】以下は、本発明のキャッシュコヒーレンス
プロトコル及び図9に示したような集中重複タグを用い
ているシステムに対する事象の例示シーケンスである。
図8を参照すると、UPAマスタポートは、それがUP
Aアドレスバスに対してアービトレートするのを欲して
いることを示すために要求信号をアサートする(共有U
PAアドレスバスが用いられることを想定して)。UP
Aマスタポートは、アービトレーションを結局獲得しか
つUPAアドレスバス上の要求パケットを駆動する(2
10)。システムコントローラ110は、要求を受け取
り(212)、要求パケットのトランザクション型及び
物理アドレスをデコード(復号)し、それがコヒーレン
ト読取りまたは書込みトランザクション要求であったな
らば(214)、システムコントローラは、全アドレス
を取りかつそれをルックアップ動作のためのスヌープパ
イプラインに置く(216)。トランザクションは、い
まアクティブと考慮され、かつ付随更新動作がこのトラ
ンザクションに対して終了しかつS_REPLYが要求
しているUPAマスタポートへ送られるまでアクティブ
のままである。トランザクションがアクティブである
間、システムコントローラ110は、同じキャッシュイ
ンデックスを有する新しく入ってくるトランザクション
をアクティブになることからブロックする。トランザク
ション・ブロッキングは、以下に記載する“トランザク
ション活性化”と題するこの文書の部分で詳述する。
【0091】コヒーレントトランザクションで指定され
たアドレスが主メモリの中にあるならば、システムコン
トローラもメモリサイクルを始動(開始)する(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である。
【0092】要求している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ポートへのデータ転送と並列に実行されて、それによ
り利用可能なシステム資源の効率的使用を行う。
【0093】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の方法
は、待ち時間を最小にするので好ましいインプリメンテ
ーションである。
【0094】順序制約 各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を待つ。
【0095】マスタクラスから異なる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バスインターフェイスを必要とする。
【0096】同じUPAポートからの異なるマスタクラ
スから発行されたトランザクション、または異なるUP
Aポートから発行されたトランザクションに対する順序
制約は、存在しない。マスタUPAポートにおいて二つ
のマスタ要求クラスの間で順序を保持すること(もし望
むならば)は、(トランザクションが相互接続へ発行さ
れる前に二つのクラスの間に導入された適切なインタロ
ックを有する)そのマスタの責任である。また、スレー
ブUPAポートは、異なるUPAマスタからの、または
同じUPAポートからの異なるマスタクラスからの、ト
ランザクションに対するP_REPLYを順序付けるこ
とを要求しない。好ましい実施例では、同期またはバリ
アトランザクションが存在しない。同期またはバリア
は、UPAモジュール上のプロセッサにより、かつUP
Aマスタポートインターフェイスからのトランザクショ
ンをランチング(開始)する前に処理されることが必要
である。本発明の好ましい実施例では、コヒーレント共
有アドレス空間(主メモリ)への参照は、相互接続が物
理的に一定の順序でない(即ち、相互接続において画定
された大域順序(global order)が存在しない)場合であ
っても、一定の順序で現れる。しかしながら、相互接続
は、各UPAポートへの記憶を排他性を保証する。ま
た、相互接続は、マルチプロセッサシステムにロックを
獲得するためのデッカーのアルゴリズムを作動すること
ができるべくトランザクション終了の正確な順序付けを
保証する。
【0097】I/O装置への参照は、一定の順序であ
る。スレーブUPAインターフェイスは、装置アドレス
によってトランザクションを順序付ける。同じI/O装
置(または所定のアドレス範囲)への全ての参照は、U
PAスレーブインターフェイスでそれらが到着するのと
同じ順序で終了することを要求される。しかしながら、
(バスブリッジのおけるような)同じUPAスレーブイ
ンターフェイスをハングオフしている(放っている:(h
anging off) )異なるI/O装置へ行く参照の順序付け
は、存在せず、UPAスレーブインターフェイスは、並
列で異なるI/O装置(または異なる所定のアドレス範
囲)へ行くトランザクションを実行することを許され
る。
【0098】トランザクションの詳述 好ましい実施例で画定されたUPAトランザクションの
セットは、UPAに基づくワークステーション及びサー
バプロダクトの必要性を効率的に支持するために特に設
計された。以下は、UPAトランザクションの主な要求
事項及び目標である:メモリシステム上の帯域幅及び待
ち時間要求事項を満足するために、主メモリへの読取り
/書込みは、64バイトブロックだけで実行される。メ
モリへの部分書込みやメモリへの読取り−変更−書込み
は、存在しない。UPAプロセッサモジュールにおける
キャッシュブロックサイズは、64バイトであり、キャ
ッシュ充填/書戻しを必要としかつ64バイトの大さき
のデータブロック上でキャッシュコヒーレンスを保持す
る。中央相互接続プロセッサ(即ち、システムコントロ
ーラ)による重複キャッシュタグ(Dtags)の使用
は、主メモリデータ上の原子ロックの必要を除去する
が、書戻し意味論、二点間データ転送意味論、及び命令
フェッチ(取出し)上の読取り専用ミスに対する意味論
に対する効率的な支持を必要とする。
【0099】割込み意味論は、割込み発生源(interrupt
ing source) からの“不透明な(opaque)”状態情報を画
定するソフトウェアを送付することを必要とし、信頼で
きる送付のための非ブロッキングエントリを有する64
バイトの割込みパケットを必要とする。UPA相互接続
の特質により、トランザクションセットは、4つの構成
素子のセットで構成される:P_REQは、そのUPA
アドレスバス上のマスタUPAポートによって生成され
たトランザクション要求を意味する。これが、システム
における全てのデータ転送アクティビティを始動(開
始)するものである。システムコントローラは、P_R
EQトランザクション要求をUPAポートのスレーブイ
ンターフェイス(スレーブアクセスまたは割込みパケッ
ト)へ進めるか、または要求パケットのアドレスがその
管理されたアドレス空間(即ち主メモリ)内に入るなら
ばトランザクションそれ自体をサービスするかのいずれ
かである。S_REQは、あるP_REQに応じてコピ
ーバック−無効のためのキャッシングUPAポートのス
レーブインターフェイスに指向された、適切なUPAア
ドレスバス上のシステムコントローラによって生成され
たトランザクション要求を意味する。
【0100】P_REPLYは、UPAポートからシス
テムコントローラまでの二点間双方向ワイヤ上のUPA
ポートによって生成されたトランザクション肯定応答を
意味する。システムコントローラからの先のS_REQ
トランザクションに応じて、またはシステムコントロー
ラによる先のP_REQスレーブアドレス空間トランザ
クションの前進により生成される。S_REPLYは、
システムコントローラからUPAポートまでの二点間双
方向ワイヤ上のシステムコントローラによって生成され
たトランザクション肯定応答を意味する。S_REPL
Yメッセージは、UPAポートからのP_REQまたは
P_REPLYに応じて生成される。図10Aは、コヒ
ーレントP_REQ及びS_REQトランザクション要
求パケットに対するデータパケットフォーマットを示
す。図10Bは、非キャッシュ型P_REQトランザク
ション要求パケットに対するデータパケットフォーマッ
トを示す。図10Cは、割込みP_INT_REQトラ
ンザクション要求パケットに対するデータパケットフォ
ーマットを示す。これらの図は、以下の説明で参照され
る。
【0101】トランザクションセットまとめが表3に示
されている。表4及び5は、UPAマスタ及びスレーブ
インターフェイスに対する正当な要求/応答組合せをそ
れぞれ指定する。表6は、キャッシングUPAマスタポ
ートに対する種々の事象により使用するトランザクショ
ンの型を指定する。
【0102】
【表7】
【0103】
【表8】
【0104】
【表9】
【0105】
【表10】
【0106】キャッシュコヒーレントトランザクション キャッシュコヒーレントトランザクションは、キャッシ
ュ可能な主メモリアドレス空間をアクセスするために発
行されたトランザクションである。これらのトランザク
ションの多くは、要求しているUPAマスタポートのE
tag及びDtagキャッシュ状態並びに他のUPAマ
スタポートのEtag及びDtag状態を変更する。キ
ャッシュ状態遷移は、“キャッシュコヒーレンスプロト
コル”と題されたこの文書の部分で詳述される。以下
は、画定されたキャッシュコヒーレントトランザクショ
ンのそれぞれの詳述である。 ReadToShare(P_RDS_REQ) 共有トランザクションへのコヒーレント読取りは、関連
UPAモジュールのデータプロセッサが、そのアドレス
が局所キャッシュメモリに記憶されていない、指定され
たアドレスからデータを装填(load)することを試みると
きにUPAマスタポートによってシステムコントローラ
へ送られる。これは、“装填ミス”と呼ばれる。
【0107】他のキャッシュが要求したデータを有して
いないならば、要求したデータに対する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)であ
り、それゆえに反復しない。
【0108】システムコントローラは、別のキャッシュ
もそれを共有するならばS_RBS(読取りブロック共
有)応答メッセージで要求しているマスタUPAポート
へデータを供給し、他のキャッシュがそれを持っていな
いならばS_RBU(読取りブロック非共有)応答メッ
セージで要求しているマスタUPAポートへデータを供
給する。このトランザクションがキャッシュの汚染犠牲
者ブロックを変位する(Etag状態がMまたはO)な
らば、汚染犠牲者保留(DVP)ビットは、要求パケッ
トにセットされなけらばならない(図10Aのパケット
フォーマット参照)。システムコントローラは、マスタ
ポートのトランザクション要求におけるアドレスがアン
インプリメントされた主メモリに対してであるならば、
要求しているUPAマスタポートへS_RTO(タイム
アウト)応答メッセージを発行し、アドレスが非キャッ
シュ可能アドレス空間にあるならばS_ERR(バスエ
ラー)を発行して、パリティエラーが検出されたならば
システムをリセットさせる。UPAスレーブポートがシ
ステムコントローラからこのトランザクションを受け取
るならば、それは、システムコントローラにおける致命
的ハードウェア障害だけによるものでありうる。UPA
スレーブポートは、いかなるP_REPLYを発行する
ことを必要とせず、かつシステムを結局ハング(停止)
する、トランザクションを無視することができる。
【0109】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の読取りペナル
ティ”を回避する。
【0110】それが主メモリから供給されるべきときの
UPAポートのキャッシュメモリからのデータの供給
は、UPAポートのキャッシュメモリからのデータを供
給することは、その関連データプロセッサによるそのキ
ャッシュメモリの使用とインターフェア(干渉)するの
で、“第2の読取りペナルティ”と呼ばれる。好ましい
実施例では、コピーバックトランザクションは、そのキ
ャッシュメモリへのデータプロセッサ要求に対して優先
度を有し、それゆえに相互接続による不要なキャッシュ
読取りは、2〜3のクロックサイクルに対して関連デー
タプロセッサの動作を一般に遅延する。ReadToS
hareAlwaysトランザクションに対するエラー
ハンドリングは、ReadToShareトランザクシ
ョンに対するものと同じである。
【0111】ReadToOwn(P_RDO_RE
Q) コヒーレント読取り無効トランザクションは、記憶ミ
ス、または共有ライン上の記憶ヒット、または部分書込
みを併合するための書込きを意図した読取りによりシス
テムコントローラへUPAマスタによって送られる。こ
のトランザクションは、アドレス指定されたデータブロ
ックに対するEtag及びDtagにMへの両方の遷移
をもたらす(排他的変更)。UPAマスタがアドレス指
定されたデータブロックを有さず、かつ一つ以上の他の
キャッシュがブロックを有するならば、メモリサイクル
は、アボートされる。システムコントローラは、一つの
UPAポートにコピーバック−及び−無効に対するS_
CPI_REQ要求を送り、かつ全ての他のUPAポー
トに(S_INV_REQ)無効要求を送る。システム
コントローラは、S_REQ要求が送られた全てのUP
AポートからのP_SACKまたはP_SACKD応答
を待つ。全てのP_REPLYを受け取った後、システ
ムコントローラは、S_RBU応答で要求しているUP
Aポートへデータを供給する。代替実施例では、システ
ムコントローラ110は、S_REQが送られた他のU
PAポートからのP_REPLYを待つことなく、もし
あれば、供給しているUPAポートからP_REPLY
だけを受け取った後に要求しているUPAポートへS_
REPLYを生成する。しかしながら、コヒーレント読
取りトランザクションは、終了されず、かつシステムコ
ントローラがS_REQが送られた全てのUPAポート
から全てのP_REPLYを受け取るまでアクティブト
ランザクションのシステムコントローラの保留トランザ
クション状態アレー200から除去される。
【0112】UPAマスタが共有されたかまたは所有さ
れた状態でブロックを既に有しかつそれがそれを書込む
ことができるように排他的所有権を欲するならば(即
ち、SまたはO状態におけるライン上の記憶ヒット)、
データは転送されずかつシステムコントローラは、アド
レス指定されたデータブロックをも記憶する全ての他の
キャッシングUPAマスタポートへ無効要求を送る。シ
ステムコントローラは、それがこのブロックを共有する
全ての他のUPAポートからP_SACKまたはP_S
ACKD応答を受け取った後にS_OAK(排他的所有
権肯定応答)応答で要求しているUPAポートへ応答す
る。代替実施例では、S_OAK応答は、アドレス指定
されたデータブロックを共有する他のUPAポートへ無
効要求が送られた直後にシステムコントローラによって
要求しているUPAポートへ送られるが、しかしトラン
ザクションは、終了されず、かつシステムコントローラ
が無効要求が送られた全てのUPAポートからP_RE
PLYを受け取るまでアクティブトランザクションのシ
ステムコントローラの保留トランザクション状態アレー
200から除去される。更に、無効要求を受け取る各プ
ロセッサは、無効トランザクションが終了されるまでそ
のプロセッサによって連続的に始動(起動)されるあら
ゆるトランザクションを終了することを防ぐ。
【0113】このトランザクションがキャッシュにおけ
る汚染犠牲者ブロックを変位するならば(即ち、Eta
g状態がMまたはOである)、汚染犠牲者保留(PV
D)ビットは、要求パケットにセットされなければなら
ない(図10Aに示したパケットフォーマットを参
照)。システムコントローラは、Dtagsをスヌープ
することによってデータを転送するか否かを決定する。
ReadToOwnトランザクションに対するエラーハ
ンドリングは、ReadToShareトランザクショ
ンに対するものと同じである。
【0114】ReadToDiscard(P_RDD
_REQ) 最初の使用トランザクションの後に廃棄することを意図
したコヒーレント読取りは、要求しているUPAポート
に関連したデータプロセッサがそのキャッシュを汚染す
ることを欲せずかつ一つの使用の後でデータを廃棄する
ときにシステムコントローラへUPAマスタによって送
られる。このトランザクションは、Bcopy(ブロッ
クコピー)動作に対するレジスタのコヒーレントDVM
A読取り、及びブロック装填におけるようにコヒーレン
トドメインからデータを取るためにも用いられる。この
トランザクションは、いずれのDtagまたはEtag
エントリも変えない。このトランザクションは、(Mま
たはO状態の)所有しているキャッシュから、または主
メモリからの非破壊読取りをもたらす。供給している装
置が要求したデータを送る準備が整ったときに、システ
ムコントローラは、要求しているマスタUPAポートへ
S_REPLYを送ることによってデータ転送をイネー
ブルする。トランザクション要求パケットのDVPビッ
トは、このトランザクションに対してシステムコントロ
ーラによって無視される。ReadToOwnトランザ
クションは、ReadToShareトランザクション
に対するものと同じである。
【0115】Writeback(P_WRB_RE
Q) 書戻しトランザクション要求は、そのホーム位置へ汚染
犠牲になったブロックを書戻すためにシステムコントロ
ーラへUPAマスタによって送られる。書戻し要求と対
になった同じキャッシュインデックス上に(DVPビッ
トセットを有する)コヒーレント犠牲読取りトランザク
ション要求が常に存在する。影響を及ぼされたキャッシ
ュラインに対するEtag及びDtag状態遷移は、書
戻しが最初に実行されるか、またはラインを犠牲にする
コヒーレント読取りが最初に実行されるかに依存する。
書戻しトランザクション要求が最初に実行されたなら
ば、書戻しトランザクションが実行されるときにEta
g及びDtag状態の両方ともI(無効)へ遷移する。
読取りトランザクション要求が実行されるときには、E
tag及びDtag状態は、I状態から読取りデータブ
ロックに関連した状態へ遷移する。書戻しトランザクシ
ョンが最後に実行されたならば、読取りトランザクショ
ンが実行されたときにEtagは、その新しい状態へ遷
移しかつ対応Dtag状態は、DTag非常駐バッファ
282に記憶される。そして、書戻しトランザクション
が実行されるときに、Etagは、変化しないが、DT
ag非常駐バッファ282に一時的に記憶されたDta
gは、読取りデータブロックに関連したDtagにコピ
ーされる。
【0116】(別のUPAポートからのP_RDO_R
EQまたはP_WRI_REQトランザクションによ
り)犠牲になったデータに対する介入無効(intervening
invalidation)(S_CPI_REQまたはS_INV
_REQ)により書戻しが取り消されるならば、データ
は、書込まれずかつシステムコントローラは、S_WB
CAN応答で書戻しを取り消す。書戻し取消しは、“書
戻し取消し”と題されたこの文書の部分に以下で説明さ
れる。書戻しが取り消されなければ、システムコントロ
ーラは、UPAデータバス上へ64バイトバウンダリ
(境界)(A[5:4]=0×0)上で位置合わせされ
たデータの64バイトブロックを駆動すべく要求してい
るマスタUPAポートを促す、要求しているマスタオU
PAポートへS_WABを発行する。一つの顕著な書戻
しだけが各UPAポートから許される。書戻しトランザ
クション及び(DVPセットを有する)その付随読取り
トランザクションは、第2の書戻し及びその付随読取り
をUPAポートによって発行することができる前に両方
とも終了しなければならない(システムコントローラか
ら対応S_REPLYを受け取る)。
【0117】書戻し要求は、(DVPビットセットを有
する)読取り要求と常に対をなすので、読取りがエラー
で終了されたとしても、書戻しは、読取りが発行された
ならば常に発行されなければならないし、その逆もしか
り。書戻しトランザクションのアドレスがアンインプリ
メントされた主メモリに対するものであるならば、シス
テムコントローラは、この条件が不当であるなら何もせ
ずかつ通常の動作下では発生することができない。それ
が発生したならば、それは、UPAモジュールの致命的
ハードウェア障害だけによることができかつ最終的にシ
ステムを停止する(hang)。システムコントローラは、そ
れがパリティエラーを検出したならばシステムリセット
をもたらす。UPAポートの非キャッシュ型スレーブア
ドレス空間に指向されたP_WRB_REQトランザク
ションは、不当でありかつ通常の動作下で発生すること
ができずかつプログラミングエラーによって発生される
こともできない。マスタUPAポートがあらゆる非キャ
ッシュ可能空間へP_WRB_REQを発行したなら
ば、システムコントローラは、トランザクションを終了
せずかつシステムを停止する。
【0118】UPAスレーブポートがシステムコントロ
ーラからP_WRB_REQトランザクションを受け取
ったならば、それは、システムコントローラの致命的ハ
ードウェア障害だけによることができる。UPAスレー
ブポートは、P_REPLYを発行することを必要とせ
ずかつトランザクションを無視することができ、最終的
にシステムを停止する。
【0119】WriteInvalidate(P_W
RI_REQ) コヒーレント書込み及び無効要求は、そのホーム位置へ
データブロックをコヒーレントに書込むためにシステム
コントローラへUPAマスタによって送られる。このト
ランザクションは、コヒーレントDVMA書込み応答メ
ッセージよBcopyブロック記憶に用いられかつ新し
いデータをコヒーレントドメインに注入するために役立
つ。この要求に関連した犠牲者読取りトランザクション
は、存在しない。アドレス指定されたデータブロックに
関連したEtag及びDtagの両方は、Iに遷移す
る。要求しているUPAポートからデータを受け入れる
前に、システムコントローラは、S_REQをそれらの
UPAポートへ送ることによって、要求しているUPA
ポートを含んでいる、全てのキャッシュにおけるデータ
ブロックの全てのコピーを無効にし、かつそれらの全て
からのP_REPLYを待つ。全ての無効が肯定応答さ
れた後、システムコントローラは、UPA_Datab
us上へ64バイトバウンダリー(A[5:4]=0×
0)上に位置合わせされたデータの64バイトブロック
を駆動すべくマスタUPAポートを促すためにマスタU
PAポートへS_WABを発行する。
【0120】代替的に、システムコントローラは、無効
要求を送ることができるが、しかし要求しているマスタ
UPAポートへS_WABトランザクション要求を発行
する前に対応P_REPLYを待たない。しかしなが
ら、コヒーレント書込みトランザクションは、終了され
ずかつシステムコントローラが、S_REQ無効要求が
送られた全てのUPAポートからの全てのP_REPL
Yを受け取るまでアクティブトランザクションのシステ
ムコントローラの保留トランザクション状態アレー20
0から除去される。更に、無効要求を受け取る各プロセ
ッサは、無効トランザクションが終了されるまでそのプ
ロセッサによって後続して始動(開始)されたあらゆる
トランザクションが終了することを防ぐ。インバリデー
ト・ミー・アドバイザリ・ビット(Invalidat
e meAdvisory bit(IVA))は、D
tagsなしでインプリメントされるシステムで使用す
るP_WRI_REQトランザクションパケットで画定
される。要求しているUPAマスタは、それにS_IN
V_REQトランザクションも送ることをシステムコン
トローラに欲するならば、このビットをセットする。シ
ステムコントローラは、IVAビットがセットされたな
らば要求しているUPAポートへS_INV_REQト
ランザクションを送るためにDtagsを有さないシス
テムでこのビットを用いる。システムコントローラは、
Dtagsを有するシステムでこのビットを無視し、か
つどのUPAポートへS_INV_REQを送るかを決
定するためにDtagsを用いる。
【0121】複数のWriteInvalidateト
ランザクションは、システムコントローラがトランザク
ション要求を記憶するためにその要求受取りキュー(req
uestreceiving queue) C0またはC1に十分な空間を
有するかぎりマスタUPAポートによって連続で発行す
ることができる。システムコントローラは、アドレスが
アンインプリメントされた主メモリに対するものである
ならば(S_WAB応答を付与した後に)データを言及
せずに廃棄し、かつパリティエラーが検出されたならば
システムリセットをもたらす。UPAポートの非キャッ
シュ型スレーブアドレス空間に指向されたP_WRI_
REQトランザクションは、マスタUPAポートへS_
WAB応答を送ることによってシステムコントローラに
よって終了されが、しかしトランザクション及びそのデ
ータは、言及せずに廃棄される。このエラーは、プログ
ラミング・エラーにより発生しうるし、その結果システ
ムによって検出されかつ回復される。そのようなエラー
は、システムコントローラによってログされうる。UP
Aスレーブポートがシステムコントローラからこのトラ
ンザクションを受け取るならば、それは、システムコン
トローラにおける致命的なハードウェア障害によるだけ
であることが可能である。UPAスレーブポートは、P
_REPLYを発行するために必要ではなくかつトラン
ザクションを無視することができ、最終的にシステムを
停止する。
【0122】Invalidate(S_INV_RE
Q) キャッシングUPAポートのスレーブインターフェイス
へシステムコントローラによって送られた無効要求は、
データブロックに対するReadToOwn(P_RD
O_REQ)またはWriteInvalidate
(P_WRI_REQ)要求をサービスするためにシス
テムコントローラによって生成される。アドレス指定さ
れたデータブロックに関連するEtag及びDtagの
両方は、Iへ遷移する。P_RDO_REQトランザク
ションをサービスするために、システムコントローラ
は、次の規則に従ってUPAポートへ無効要求を送る。
一つのUPAポートだけがデータを有するならば、S_
INV_REQは、それに送られず、代わりに、コピー
バック−無効要求(S_CPI_REQ)がデータを供
給及び無効にするためにその一つのUPAポートへ送ら
れる。一つよりも多くのUPAポートがデータ(Dta
gがSまたはO状態である)を有するならば、S_CP
I_REQトランザクション要求は、それらUPAポー
トの一つへ送られかつ無効要求(S_INV_REQ)
は、全ての他のものへ送られる。
【0123】P_WRI_REQトランザクションをサ
ービスするために、システムコントローラは、要求して
いるUPAポートを含んでいる、そのDtag状態がM
またはOまたはSである全てのUPAポートへ無効要求
を送る。Dtagsなしのシステムでは、P_WRI_
REQトランザクションパケットのInvalidat
e me Advisory bit(IVA)は、要
求しているUPAポートへS_INV_REQを送るか
否かをシステムコントローラに指定する。IVAビット
は、要求しているUPAポートへの誤り無効(false inv
alidations) を回避するためにDtagsを有さないシ
ステムにおいてスヌープフィルタとして作用する。シス
テムコントローラは、Dtagsを有するシステムにお
いてこのビットを無視し、かつどのUPAポートへS_
INV_REQを送るべきかを決定するためにDtag
sを用いる。システムコントローラは、要求しているマ
スタUPAポートへ適切なS_REPLYを発行する前
にP_SACKまたはP_SACKD応答を待つ。この
トランザクションは、ブロックがそのキャッシュに存在
しないならばP_SNACK応答を有するUPAポート
によってNACKすることができる。
【0124】S_INV_REQ無効トランザクション
を受け取っているUPAポートが(そのポートIDレジ
スタによって指定されたような)キャッシュマスタでな
いならば、それは、システムコントローラにおける致命
的ハードウェア障害によるだけであることができる。U
PAポートは、P_REPLYを発行することを必要と
せずかつトランザクションを無視することができ、最終
的にシステムを停止する。しかしながら、キャッシュマ
スタUPAポートは、それを終了するためにこのトラン
ザクションに対する有効P_REPLYを発行しなけれ
ばならない。UPAスレーブポートがパリティエラーを
検出したならば、それは、P_FERRをアサートし、
システムコントローラにシステムリセットを生成させ
る。
【0125】Copyback(S_CPB_REQ) キャッシングUPAポートのスレーブインターフェイス
へのシステムコントローラからのコピーバック要求は、
ブロックに対するReadToShare(P_RDS
_REQ)またはReadToShareAlways
(P_RDSA_REQ)要求をサービスするためにシ
ステムコントローラによって生成される。アドレス指定
されたデータブロックに関連したDtag及びEtag
の最終状態は、OまたはSである。システムコントロー
ラは、次の規則に従って一つのUPAポートへS_CP
B_REQトランザクションを送る。S_CPB_RE
Qは、MまたはOのDtag状態を有するUPAポート
へ送られる。S_CPB_REQ要求は、要求している
UPAポートへ送ることができない。システムコントロ
ーラは、UPAポートからのP_SACKまたはP_S
ACKD応答を待つ。NDP(No Dtag Pre
sent)ビットがS_REQでセットされない限り、
このS_REQは、UPAポートがブロックを有してい
ないならばP_SNACK応答でNACKされることが
できない。P_SNACK応答は、NDPビットがセッ
トされないならば致命的エラーとしてシステムコントロ
ーラによって処理される。
【0126】P_REPLYを受け取った後、システム
コントローラは、UPA_Databus上のデータを
駆動するために供給しているUPAポートを促すべく供
給しているUPAポートへS_CRAB応答を発行し、
かつ要求しているマスタUPAポートへS_RBS応答
を発行する。供給しているUPAポートは、まずアドレ
ス指定されたクワッドワードをコピーバックして、後続
クワッドワードに対してA[5:4]のまわりにラッピ
ングするために必要である。コピーバックトランザクシ
ョンに対するエラーハンドリングは、無効トランザクシ
ョンに対するものと同じである。UPAスレーブポート
がデータエラーを検出したならば、それは、マスタがア
ンコレクタブルECCエラーを検出しうるようにUPA
_Databus上の無効チェックビットを駆動しなけ
ればならない。無効、またはアンインプリメントされた
アドレスは、システムコントローラがS_ERRで対応
P_REQトランザクションを終了するので、S_RE
Qで決して送られない。
【0127】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だけが
存在する。
【0128】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応答は致命的エラーとし
てシステムコントローラによって処理される。
【0129】UPAポート(並びに無効が送られた他の
UPAポート)からのP_REPLYを受け取った後、
システムコントローラは、データをUPAデータバス上
に駆動するために供給しているUPAポートを促すべく
供給しているUPAポートへS_CRAB応答を発行
し、かつ要求しているマスタUPAポートへS_RBU
応答を発行する。供給しているUPAポートは、まずア
ドレス指定されたクワッドワードをコピーバックし、後
続クワッドワードに対してA[5:4]のまわりをラッ
ピングすることを必要とする。CopybackInv
alidateトランザクションに対するエラーハンド
リングは、Copybackトランザクションに対する
ものと同じである。
【0130】CopybackToDiscard(S
_CPD_REQ) 非破壊的コピーバック要求は、データブロックに対する
ReadToDiscard(P_RDD_REQ)要
求をサービスするためにキャッシングマスタUPAポー
トのスレーブインターフェイスへシステムコントローラ
によって送られる。このトランザクションは、アドレス
指定されたデータブロックと関連したEtag及びDt
agにおける状態変化をもたらさない。システムコント
ローラは、以下の規則に従って一つのUPAポートへS
_CPD_REQトランザクションを送る。S_CPD
_REQ要求は、MまたはOのDtag状態を有する一
つだけのUPAポートへ送られる。S_CPD_REQ
は、要求しているUPAポートへ送ることができない。
システムコントローラは、S_CPD_REQが送られ
たUPAポートからのP_SACKまたはP_SACK
D応答を待つ。NDS(No Dtag Presen
t)ビットがS_REQにセットされない限りこの要求
は、UPAポートがブロックを有さないならばP_SN
ACK応答でNACKされることができない。NDPビ
ットがセットされていないならばP_SNACK応答は
致命的エラーとしてシステムコントローラによって処理
される。P_REPLYを受け取った後、システムコン
トローラは、要求したデータをUPAデータバス上に駆
動するために供給しているUPAポートを促すべく供給
しているUPAポートへS_CRAB応答を発行し、か
つ要求しているマスタUPAポートへS_RBS応答を
発行する。供給しているUPAポートは、まずアドレス
指定されたクワッドワードをコピーバックし、後続クワ
ッドワードに対してA[5:4]のまわりをラッピング
することを必要とする。
【0131】CopybackToDiscardトラ
ンザクションに対するエラーハンドリングは、Copy
backトランザクションに対するものと同じである。
【0132】Non−Cached Dataトランザ
クション 非キャッシュ型データトランザクションは、非キャッシ
ュ型アドレス空間へ発行されたトランザクションであ
る。これらのトランザクションに対しては、スヌーピン
グルックアップ動作は、実行されず、これらのトランザ
クションからのデータは、リクエスタによってキャッシ
ュされず、かつシステムコントローラによってアドレス
ブロッキングが実行されない。
【0133】NonCachedRead(P_NCR
D_REQ) 非キャッシュ型読取りトランザクション要求は、システ
ムレジスタ及び他のスレーブUPAポートのスレーブア
ドレス空間を含んでいる、非キャッシュ型アドレス空間
のデータを読取るためにUPAマスタポートによって生
成される。1,2,4,8,または16バイトがこのト
ランザクションで読取られ、かつバイト位置がバイトマ
スクで指定される。トランザクション要求で指定された
アドレスは、16バイトバウンダリー上に位置合わせさ
れる。任意のバイトマスクは、読取りに対して許され
ず、かつスレーブは、読取りバイトマスクが正しくない
ならば(P_RERRで)エラーを示すべきである。主
メモリは、このトランザクションで読取ることができな
い。システムコントローラは、要求パケットのアドレス
を復号する。それがシステムコントローラによって管理
されたアドレス空間に入るアドレスであるならば、シス
テムコントローラは、UPAデータバス上のデータを駆
動する。アドレスがUPAポートのスレーブインターフ
ェイスに対するものであるならば、システムコントロー
ラは、データを供給するためにUPAポートスレーブイ
ンターフェイスへこのトランザクションを進めてかつP
_REPLYを待つ。P_RASまたはP_RASB応
答を受け取ったときに、システムコントローラは、その
UPAデータバス上のデータを駆動するためにUPAポ
ートスレーブインターフェイスへS_SRS応答を発行
する。システムコントローラは、S_RAS(Read
Ack Single)応答をそれに送ることによっ
て要求したデータを受け取るために要求しているマスタ
UPAポートを促す。
【0134】システムコントローラは、S_NCRD_
REQ要求のアドレスがキャッシュ可能な主メモリ空間
またはアンインプリメントされたアドレス空間に対する
ものであるならばS_ERR応答を発行し、UPAスレ
ーブポートへトランザクションを進めない。システムコ
ントローラは、それが要求パケットにおけるパリティエ
ラーを検出するならばシステムリセットをアサートす
る。トランザクションがUPAポートのスレーブインタ
ーフェイスへ進められ、かつUPAポートのスレーブイ
ンターフェイスがP_RTO(タイムアウト)またはP
_RERR(あらゆる型のバスエラーによる)応答を発
行するならば、システムコントローラは、要求している
UPAマスタポートへS_RTOまたはS_ERR応答
をそれぞれ発行し、かつデータは、転送されない。アド
レスパケットパリティエラーがUPAポートスレーブイ
ンターフェイスによって検出されたならば、それは、P
_FERRをアサートし、かつシステムコントローラ
は、システムリセットを生成する。
【0135】NonCachedBlockRead
(P_NCBRD_REQ) 非キャッシュ型ブロック読取り要求は、非キャッシュ型
アドレス空間におけるデータのブロック読取りに対して
UPAマスタポートによって生成される。非キャッシュ
型データの64バイトは、このトランザクションを有す
るマスタUPAポートによって読取られる。このトラン
ザクションは、バイトマスクが用いられないことを除い
て、P_NCRD_REQトランザクションに類似す
る。要求したデータは、64バイトバウンダリー(PA
[5:4=0×0)上に位置合わせされる。更に、シス
テムコントローラは、S_RBU応答を有する要求して
いるマスタUPAポートへの要求したデータの送付を促
す。
【0136】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カウンタにおける)そのカウント
をディクリメントする。
【0137】書込み要求及びデータは、アドレス及びデ
ータ経路が独立であるように、システムコントローラに
よってUPAポートスレーブインターフェイスへあらゆ
る順序で進められうるということに注目。失敗する書込
みは、言及せずに失敗しかつ非同期で報告されるだけで
ある。例えば、P_NCWR_REQトランザクション
は、アドレスがキャッシュ可能主メモリアドレス空間に
あるならば、システムコントローラによってドロップさ
れる。それは、あらゆる型のバスエラーまたはタイムア
ウトエラー上のUPAポートスレーブインターフェイス
によりドロップされる。システムコントローラがエラー
によりトランザクションをドロップするならば、それ
は、エラーをログしうる。UPAスレーブポートがそれ
をドロップするならば、それは、エラーをログしかつ割
込みを介してそれを報告しうる。アドレスパケットパリ
ティエラーがスレーブによって検出されるならば、それ
は、P_FERR応答をアサートし、システムコントロ
ーラにシステムリセットを生成させる。
【0138】NonCachedBlockWrite
(P_NCBWR_REQ) 非キャッシュ型ブロック書込み要求は、非キャッシュ型
アドレス空間へのブロック書込みのためにUPAマスタ
ポートによって生成される。非キャッシュ型データの6
4バイトは、このトランザクションを有するマスタUP
Aポートによって書込まれる。このトランザクション
は、バイトマスクが用いられないことを除きP_NCW
R_REQトランザクションに類似する。書込まれるべ
きデータは、64バイトバウンダリー(PA[5:4=
0×0)上に位置合わせされる。システムコントローラ
は、S_WAB応答で書込まれるべきデータブロックを
供給すべく要求しているマスタUPAポートを促す。
【0139】非キャッシュ型制御トランザクション これは、64バイトデータがそれに関連したアドレス空
間を有していないようなデータトランザクションではな
い。スヌーピングは、実行されずかつデータは、リクエ
スタによってキャッシュされない。好ましい実施例にお
ける唯一の非キャッシュ型制御トランザクションは、割
込みトランザクションである。 Interrupt(P_INT_REQ) 割込みトランザクション要求パケットは、宛先UPAポ
ート割込みハンドラーインターフェイスへ64バイトブ
ロックのデータからなるパケット化された割込みを送付
するために割込みマスタUPAポートによって生成され
る。割込みトランザクションは、I/O装置からの割込
み、非同期事象及びエラー報告を送るために、かつ割込
みハンドラーUPAポートへソフトウェアクロストーク
を通知する(posting) ために用いられる。割込みトラン
ザクションは、UPAポートによってそれ自体へ送るこ
とができない。割込みトランザクションパケットは、物
理アドレスを含まない。その代わり、それは、宛先割込
みハンドラーUPAポートのポートID(MIDとも呼
ばれる)と同じである、Interrupt Targ
et ID(割込みターゲットID)を担持する。シス
テムコントローラは、ターゲットIDによって指定され
たUPAポートへ割込みパケットを送る。
【0140】以下の規則は、割込みUPAポートのマス
タインターフェイスに適用する。割込みトランザクショ
ンを指定されたUPAポートのスレーブインターフェイ
スへ送付することができるならば、システムコントロー
ラは、UPAデータバス上の割込みデータを駆動するた
めにそれを促すべく始動しているUPAポートへS_W
AB応答を発行する。フロー制御制限により割込みトラ
ンザクションを送付できない(即ち、ターゲットUPA
ポートの割込み入力要求キューが満たされている)なら
ば、システムコントローラは、割込みトランザクション
をNACKするために始動しているUPAポートへS_
INAK応答を発行する。UPAポートは、あるバック
オフ期間後に割込みトランザクションを送ることを再び
試みなければならない。バックオフ期間中、割込みトラ
ンザクションは、マスタUPAポートのクラスキューに
おいてそれの後ろの他のトランザクションをブロックし
ない。以下の規則は、宛先割込みハンドラーUPAポー
トのスレーブインターフェイスで適用する。システムコ
ントローラは、UPAアドレスバス上の指定したスレー
ブUPAポートへP_INT_REQトランザクション
を進め、かつUPAデータバスからの割込みデータを受
け入れるためにそれを促すべくS_SWIB応答をそれ
に発行する。
【0141】割込みハンドラーが入力キューから割込み
パケットを除去した後、スレーブUPAポートは、シス
テムコントローラへP_IAK応答で応答する。システ
ムコントローラは、フロー制御に対するこのスレーブU
PAポートへの顕著な割込み要求のそのカウント(SC
Configレジスタ190におけるPIntCn
t)をディクリメントするためにこのP_REPLYを
用いる。そのポート−IDレジスタによって指定された
ような割込みハンドラーでないスレーブUPAポートが
P_INT_REQを受け取るならば、P_IAK応答
でそれを受け入れかつ割込み要求及びそのデータを言及
せずに廃棄することが必要である。スレーブポートは、
この誤指向された(misdirected) トランザクションエラ
ーをログする必要がない。プログラミングエラーによる
誤指向された割込みパケット、即ち、非割込みハンドラ
ーUPAポートへ指向された、割込みパケットは、言及
せずに失敗する。システムコントローラは、データを得
るためにマスタUPAポートへS_WAB応答を発行す
が、しかしそれを廃棄する。システムコントローラは、
誤指向された割込みをログしうる。
【0142】P_INT_REQトランザクション要求
が非割込みハンドラーUPAポートによって受け取られ
るならば、これは、システムコントローラにおけるある
致命的ハードウェア障害によるか、またはシステムコン
トローラにおける構成レジスタの誤構成によってのみ発
生しうる。UPAポートは、トランザクションを無視し
うるしかつあらゆるP_REPLYを発行しない。
【0143】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を発行する。各スレーブインター
フェイスは、それが受け取ったスレーブP_REQトラ
ンザクションのMID(即ち、マスタID)に関してそ
のP_REPLYメッセージを順序付ける。換言する
と、同じMID(即ち、要求しているUPAポートのポ
ートID)を有する全てのP_REPLYメッセージ
は、対応要求が受け取られたのと同じ順序で正確に順序
付けられるが、しかし異なるMIDsを有するP_RE
PLYに対する順序付け制約は、存在しない。
【0144】P_RASBを除き、読取り要求に対する
全てのP_REPLY肯定応答は、P_REPLYが応
答しているスレーブ要求からのMIDを含む。図10D
に示すように、関連トランザクションに対するMast
erID(MID)は、応答メッセージの第2のサイク
ルで送られる。図10A,10B及び10Cは、それぞ
れがトランザクション要求パケットフォーマットの第2
のサイルクにおけるMID(MasterID)フィー
ルドを含む、種々の型のトランザクション要求のパケッ
トフォームを示す。各応答メッセージにおけるMID値
は、対応トランザクション要求メッセージにおけるMI
D値からコピーされる。P_RASB応答メッセージ
は、特別最適化であり、かつ関連トランザクションに対
するMasterIDを含まない。P_RASB応答メ
ッセージは、顕著なスレーブ読取りだけを支持する(グ
ラフィクスのような)UPAスレーブポートによって用
いられる。システムコントローラは、そのようなUPA
スレーブポートへ送られた各要求に対するサイズ、MI
D、及びクラス情報を保持する。P_RASB応答メッ
セージを受け取るときに、システムコントローラは、ト
ランザクションについてそれが先に記憶した情報により
それが読取りシングルまたは読取りブロック肯定応答で
あるかがわかり、かつ要求したデータを出力するために
UPAスレーブポートを促すべく対応S_SRBまたは
S_SRS応答メッセージを適切にアサートする。
【0145】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)を取り消さなければ
ならない。
【0146】
【表11】
【0147】
【表12】
【0148】
【表13】
【0149】
【表14】
【0150】
【表15】
【0151】
【表16】
【0152】
【表17】
【0153】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に対するクラスビットを含まない。異なるマスタクラ
スにおけるトランザクション要求に対するS_REPL
Yの順序付けに関する要求事項は、存在しない。各クロ
ック内で、各MIDに対して、全てのS_REPLYメ
ッセージは、対応トランザクション要求が受け取られた
のと同じ順序で送られなければならない。
【0154】二つのスレーブデータ受取りキューのそれ
ぞれに対し、かつ対応キューへ異なる大きさのデータを
書込むために、個別のS_REPLYメッセージが存在
する。S_SWB応答は、64バイトを書込むことをシ
ステムコントローラに告げかつS_SWS応答は、スレ
ーブのP_REQデータ受取りキュー169へ16バイ
トを書込むことをシステムコントローラに告げると同時
に、S_SWIB応答は、割込みハンドラースレーブポ
ート152のの割込みデータ受取りキュー172(図4
参照)へ64バイトを書込むことをシステムコントロー
ラに告げる。
【0155】
【表18】
【0156】
【表19】
【0157】
【表20】
【0158】
【表21】
【0159】
【表22】
【0160】
【表23】
【0161】
【表24】
【0162】
【表25】
【0163】キャッシュコヒーレンスプロトコルの詳述 図11の状態遷移図は、データ(Data)ブロックに
対するEtagMOESIキャッシュ状態の正当な遷移
を示す。それらは、インデックス[i]でキャッシュラ
インによって認識された遷移である必要はなく、それよ
りもこれらは、キャッシュラインへ/から移動している
データブロックに対する遷移であるということに注目。
このコンテキストにおける無効状態は、ブロックがこの
キャッシュに存在しない(しかし別のキャッシュに存在
しうる)ということを意味する。図12の状態遷移図
は、データ(Data)ブロックに対するDtagMO
SIキャッシュ状態の正当な遷移を示す。表9の状態遷
移表は、データブロックに対する全ての正当な状態遷
移、及びその下で遷移が発生する条件を指定する。これ
らの遷移は、両方がそれ自身のコヒーレントアクティビ
ティ並びにそれに影響を及ぼす他のUPAポートのコヒ
ーレントアクティビティによる、そのキャッシュへ/か
ら移動しているデータのブロックに対する始動(開始)
しているプロセッサによって見られたものである。表9
も種々のトランザクション要求タイプ及びこれらの状態
遷移をキャッシングUPAマスタポートで発生させるS
_REPLYとP_REPLYタイプを指定する。
【0164】一度に一つだけのキャッシュがDtagM
状態における特定のデータブロックを有することができ
ると同時に、一つのキャッシュは、他のキャッシュがそ
のデータのコピーを有しえないDtagM状態における
データブロックを有するということに注目。一度に一つ
だけのキャッシュがDtagO状態における特定のデー
タブロックを有することができ、そのデータブロックを
有している他のキャッシュは、DtagS状態だけにお
いてそれを有さなければならない。特定のデータブロッ
クを記憶する全てのキャッシュメモリがDtagS状態
におけるキャッシュラインに記憶されたデータブロック
を有するならば、データは、ReadToShare及
びReadToDiscard要求に対する別のキャッ
シュからの代わりに、主メモリのアドレス指定された位
置から常に供給される。データ転送が必要であるときに
ReadToOwnトランザクションに対して、要求し
たデータブロックは、M,OまたはS状態においてデー
タブロックを有するキャッシュから常に供給される。キ
ャッシュがデータブロックを現在記憶していないなら
ば、そのときにだけ、それは、主メモリのアドレス指定
された位置から供給される。
【0165】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に示したキャッシュ状態
の複数のサブセットを支持することも可能であるという
ことに注目。しかしながら、そのような動作のモード
は、好ましい実施例では用いられない。
【0166】書戻しトランザクション Dirt_Victim_Pending(汚染_犠牲
者_保留)(DIV)ビットは、トランザクション要求
パケットで画定される。好ましい実施例におけるトラン
ザクションの画定されたセットに関して図10A及び上
記の説明を参照。キャッシングUPAマスタは、誤りが
汚染ライン必要書戻しを犠牲にしたならば誤ったデータ
に対するコヒーレント読取りトランザクションにこのビ
ットをセットする。システムコントローラは、誤ったブ
ロックに対するDtag状態の更新を管理するためにD
VPビットを用いる。特に、書戻しトランザクション
は、(DVPビットセットを有する)読取りトランザク
ションと一対一でペアにされる。一対にすること(pairi
ng) は、書戻し及び読取りの両方が同じキャッシュライ
ンに対するものでなければならないことを意味する。し
かしながら、二つのトランザクションは、あらゆる順序
でいずれのマスタクラスからでも発行されうる。(図9
に示したように)一つだけの書戻しバッファ280及び
一つのDtagTB282が各キャッシュメモリ132
に対して供給されるので、UPAポート毎にせいぜい一
つの顕著な汚染犠牲者書戻しトランザクションが存在す
る。結果として、キャッシングUPAマスタは、DVP
ビットセットを有する一つだけの顕著なコヒーレント読
取りトランザクションを有することができる。第1の読
取り及び書戻しが両方ともに終了するまで、UPAマス
タポートは、DVPビットセットを有する後続の読取り
トランザクションを発行してはならない、即ち、DVP
ビットセットを有する別のトランザクションがUPAマ
スタポートによって生成することができる前に両方に対
するS_REPLYが受け取られなければならない。し
かしながら、先の書戻し保留が存在すると同時にUPA
マスタは、セットされていないDVPビットを有する後
続の読取りトランザクションを発行することができる。
【0167】UPAポートが単一マスタ要求クラスだけ
をインプリメントするならば、セットされたDVPビッ
トを有する顕著なトランザクション上の制限は、必要な
い。マスタクラス内の強い順序付け特性により、DVP
ビットに係わらずかつ先のトランザクションからのS_
REPLYを待つことなく、トランザクションは、パイ
プラインで送ることができる。キャッシングUPAマス
タは、書戻しトランザクションが終了するまで書戻しを
保留しているそれ自体の汚染犠牲になったブロックに対
する後続のコヒーレントトランザクションをブロックし
なければならない(即ち、発行しない)。UPAポート
が先に犠牲になったブロックに対するコヒーレント要求
を発行することができる最も早いものは、それがその書
戻しトランザクションに対する肯定応答S_REPLY
を受け取った後である。それは、S_REPLYの後す
ぐ次のクロックサイクルで要求を行うことができる。汚
染データに対する書戻しトランザクション及び誤ったデ
ータに対するコヒーレント読取りトランザクションの両
方が同じマスタ要求クラスに置かれ、かつ犠牲者を戻る
ための後続のトランザクションが最初の二つ(即ち、書
戻しトランザクション及び読取りトランザクションがキ
ャッシュからの犠牲者データブロックを変位した後)の
後ろに置かれたならば、このブロッキング要求事項は、
必要ではない。マスタ要求クラス内の強い順位付け特性
は、自動的にこのブロッキング制約を処理する。
【0168】キャッシングUPAマスタは、犠牲者デー
タブロックを変位したトランザクションが終了するまで
クリーン犠牲者データブロック(即ち、主メモリへ書戻
されることなくキャッシュから変位された)に対する後
続のコヒーレントトランザクションもブロックしなけれ
ばならない。しかしながら、クリーン犠牲者変位をもた
らした要求、及び犠牲者をキャッシュに戻す後続のもの
(要求)は、同じマスタ要求クラスに置かれ、そしてU
PAポートは、第1のものが終了するまで第2の要求を
ブロックすることを必要としない。二つの要求が異なる
要求クラスから発行することができる(好ましい実施例
における場合である)ならば、このブロッキング要求事
項は、データプロセッサによって強制されなければなら
ない。キャッシングマスタUPAポートは、それ自体の
プロセッサからの犠牲になったデータブロックへの後続
の装填または記憶を防がなければならない。これは、ク
リーン犠牲者並びに汚染犠牲者保留書戻しの両方に適用
する。キャッシングUPAマスタは、クリーン犠牲者の
場合に、キャッシュ充填に対するS_REPLY、また
は、汚染犠牲者の場合に、書戻しに対するS_REPL
Yがそれによって受け取られるまで、システムコントロ
ーラからの可能なS_REQに対してコヒーレンスドメ
インに犠牲になったデータを維持しなければならない。
換言すると、キャッシングUPAマスタポートは、シス
テムコントローラがそれにキャッシングUPAマスタポ
ートをこのオブリゲーション(義務)から開放するS_
REPLYを送るようなときまでシステムコントローラ
がそのように要求したならば相互接続へ変位した犠牲者
データブロックを供給することができなければならな
い。
【0169】UPAポートは、システムコントローラか
ら無効S_REQを受け取ることにより汚染犠牲者ブロ
ックに対するその書戻しトランザクションを取り消さな
い(S_INV_REQ,S_CPI_REQ)。シス
テムコントローラは、その代わり書戻しを取り消す。シ
ステムコントローラは、書戻しが、Dtagsにおいて
かまたはDtagsを有さないシステムにおける他の論
理を用いて取消しを保留している状態を保持することが
必要であり、かつ書戻しをそのアドレス指定された位置
へ書込ませてはならない。システムコントローラは、そ
の場合にはUPAポートからデータが転送されない、S
_WBCAN要求を発行することによって、またはS_
WAB応答を発行し次にデータを廃棄することによって
UPAポートからデータを受け入れることで書戻しを取
り消すことができる。
【0170】トランザクション要求をアクティブにする
こと 図5及び図13を参照すると、システムコントローラ1
10は、全ての保留及びアクティブトランザクション上
の情報を記憶する保留トランザクション状態アレー20
0を保持する。本発明のキャッシュ利用最適化のあるも
のは、所与のアドレス上のトランザクションの正確な順
序付けを強制することができるシステムコントローラに
依存する。トランザクション状態アレー200は、トラ
ンザクションの適切な順序付けを保持するためにシステ
ムコントローラによって用いられる一つのツールであ
る。トランザクション状態アレー200は、“スヌープ
パイプライン”における(即ち、Dtagルックアップ
及び更新をうける)トランザクション及びまだ終了して
いない他のアクティブトランザクションを含んでいる、
各アクティブトランザクションに対する行(row) 290
を含む。2ステージ・スヌープパイプラインを有してい
る、本発明を用いている二つのデータプロセッサシステ
ムの一般的なインプリメンテーションにおいて、トラン
ザクション状態アレーは、スヌープパイプラインにおけ
るトランザクションに対する2つの行及び各データプロ
セッサに対する2つ(の行)を含んでいる、6つの行2
90を一般に有する。更に一般的には、トランザクショ
ン状態アレー200は、各マスタクラスに対するデータ
プロセッサ毎に少なくとも一つの行及びスヌープパイプ
ラインの各ステージに対して一つの行を一般に含む。そ
れゆえに、4つのデータプロセッサ、2つのマスタ要求
クラス、及び2ステージスヌープパイプラインを有する
システムは、そのトランザクション状態テーブル200
に少なくとも10の行を有する。しかしながら、トラン
ザクションは、未使用状態アレー行290に動的に割り
当てられかつ個々の行290が特定のプロセッサまたは
タスクに永続的には割り当てられないということに注目
すべきである。
【0171】一つの好ましい実施例では、トランザクシ
ョン状態テーブル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は、現在の状態に対して同時にルック
アップされ、かつ次の状態で同時に更新される。
【0172】ルックアップ動作は、コヒーレント読取り
トランザクションに対してどこから(即ち、主メモリか
らまたはUPAポートから)データが供給されるかを決
定する。先のコヒーレント読取りトランザクションから
のDVPビットと共に、それは、この書戻しトランザク
ションを取り消すか否かを決定する。Dtagルックア
ップ動作は、無効要求を送るUPAポート及びRead
ToOwnまたはWrite−Invalidate
(書込み−無効)トランザクションのどちらに対するコ
ピーバック−無効要求を送るかを決定する。特に、これ
らのトランザクションのいずれに対して、Dtagルッ
クアップ動作は、トランザクションによってアドレス指
定されているデータブロックを現在記憶する全てのキャ
ッシングUPAマスタを決定する。Write−Inv
alidateトランザクションの場合には、アドレス
指定されたデータブロックを現在記憶する全てのそれら
キャッシングUPAマスタポートは、システムコントロ
ーラによって無効要求が送られる。ReadToOwn
トランザクションの場合には、アドレス指定されたデー
タブロックを現在記憶する一つを除いて全てのキャッシ
ングUPAマスタポートは、(もしあれば)システムコ
ントローラによって無効要求が送られ、その(除かれ
た)一つは、コピーバック−無効要求(S_CPI_R
EQ)が送られる。
【0173】Dtag更新動作は、1)更新が実行され
るトランザクションを始動(開始)したUPAポート、
及び2)S_REQトランザクション(コピーバック/
無効)がシステムコントローラによって送られたUPA
ポート、に対してのみシステムコントローラによって適
用される。表9は、好ましい実施例における全ての画定
されたDtag更新を掲載する。
【0174】
【表26】
【0175】
【表27】
【0176】
【表28】
【0177】
【表29】
【0178】
【表30】
【0179】
【表31】
【0180】
【表32】
【0181】
【表33】
【0182】システムコントローラは、パイプラインと
してスヌープバスを管理する。トランザクションが(ル
ックアップ動作に対して)スヌープパイプラインに入力
すると、トランザクションは、アクティブになりかつト
ランザクションに対する記録は、アクティブトランザク
ション状態アレー200の利用可能な行に記憶される。
スヌープパイプライン及び/又は資源窮乏効果の前の入
力キューイングにより、トランザクションがシステムコ
ントローラ入力キュー(SCIQ0またはSCIQ1)
に置かれておりかつスヌープパイプラインにまだ入力さ
れていないならば、それはアクティブとみなされない。
一度トランザクションがアクティブになったならば、そ
れが終了するまでそれは、システムコントローラでアク
ティブ状態のままである。それゆえに、アクティブトラ
ンザクション状態アレー200におけるトランザクショ
ンに対する行290は、保持され、かつトランザクショ
ンが終了するまで、種々の条件下で更新される。全ての
後続入力トランザクションは、それらがアクティブにな
ることができる前に以下に説明するアクティベーション
規則に従ってシステムコントローラにおいて既にアクテ
ィブなトランザクションに対して比較される。
【0183】アクティブトランザクションは、更新動作
の末期(later) 及び要求しているUPAポートへのその
トランザクションに対するS_REPLYの発行の後で
のみ終了になることができる。
【0184】システムコントローラによるトランザクシ
ョンアクティブ トランザクションのパイプラインで送られた実行は、シ
ステムコントローラによって同時にアクティブである多
重トランザクションを結果として生ずる。多重アクティ
ブトランザクションがDtagsの同じキャッシュイン
デックスを共有するならば、これは、システムにおいて
コヒーレンスハザード(災害)を導く。そのようなハザ
ードを回避するために、システムコントローラは、既に
アクティブなトランザクションに対するアクティブトラ
ンザクション状態アレーの情報に基づいてアクティブに
なることからトランザクションをブロックするトランザ
クションアクティベーション論理300を用いる。例え
ば、システムコントローラが、データに対するUPAポ
ートに対して顕著なS_REQを有し、かつキャッシュ
誤りによりそのUPAポートがそのデータを変位するな
らば、システムコントローラは、そのポートによってS
_REQに対するS_REPLYが付与されるまで変位
しているトランザクションに対するS_REPLYをブ
ロックしなければならない。本発明では、このS_RE
PLY順序を保持するために、システムコントローラ
は、S_REQが終了するまで入力トランザクションを
アクティブになることからインデックスブロック(index
block) する。
【0185】別の視野から、システムコントローラは、
各トランザクションがアクティブになるときに実行され
たDtagルックアップ動作がトランザクションに対す
るデータがどこから供給されるのかを正確に決定するよ
うに、アクティブトランザクションを正確にブロックし
なければならない。トランザクションに対するDtag
ルックアップに基づいて、一度トランザクションに対す
るデータ発生源が決定されたならば、どのくらいかかる
か、またはトランザクションが、ランチされる前に内部
キューにおける別のアクティブトランザクションの後ろ
でどのくらい長く待つかに関係なく、データは、それか
ら供給される。本発明によれば、以下の場合に、入力ト
ランザクションは、アクティブになることからブロック
される: A)入力トランザクションに関連したキャッシュインデ
ックスが既にアクティブなトランザクションによって更
新されるらしい;または B)入力トランザクションに関連したキャッシュインデ
ックスが既にアクティブなトランザクションに関連する
キャッシュインデックスを更改するらしい;または C)入力トランザクションが、既にアクティブなトラン
ザクションによって供給されている/無効にされている
キャッシュラインを供給する/無効にするらしい。
【0186】しかしながら、トランザクションアクティ
ベーション論理は、入力トランザクション及び既にアク
ティブなトランザクションが読取り−書戻し対(ペア)
であるときにトランザクションのアクティベーションを
ブロックしない。キャッシュ誤り−装填時間は、二つの
トランザクションを同時にアクティブにさせることによ
って最小化され、かなり改良されたシステム性能を結果
として生ずる。コヒーレンスハザードは、第1のルック
アップによるDtag更新ベクトルが第2のルックアッ
プに可視であり、かつ第1の更新動作の状態(更新が終
了されたか否かという事実)が第2の更新に対する更新
ベクトルが始動(開始)されるときに可視であるという
ことを確実にすることによって、上記のブロッキング規
則を適用することなく、この場合に削除される。図13
を参照すると、システムコントローラのトランザクショ
ン入力キューのそれぞれは、アービタ回路301にその
入力キューにおける最も古いインアクティブトランザク
ション要求を与える。各保留トランザクション要求に対
する記録におけるアクティブ/インアクティブ状態ビッ
トによって示されるような、先にアクティベートされた
トランザクションは、アービタ回路301に与えられな
い。アービタ回路301は、一つのインアクティブトラ
ンザクション要求を選択し、I/O要求(即ち、I/O
UPAポートからの)に最も高い優先度を、マスタク
ラス0要求(即ち、読取り及びブロック装填要求)へ次
に高い優先度を、そしてマスタクラス1要求(即ち、書
戻し要求、WriteInvalidate要求、ブロ
ック記憶、割込み要求、及び非キャッシュ型読取り/書
込み要求)へ最も低い優先度を与える。
【0187】アービタ回路301によって選択されたト
ランザクション要求は、一組のコンパレータ302によ
って全ての現行アクティブトランザクションと比較され
る。各コンパレータ302は、選択したトランザクショ
ン要求をアクティブトランザクション状態アレー200
の一つの行290に示されたアクティブトランザクショ
ンと比較し、かつ選択したトランザクションが対応行2
90で示されたアクティブトランザクションに基づいて
ブロックされるならば“1”に等しく、行290で示さ
れたアクティブトランザクション(もしあれば)が選択
したインアクティブトランザクションをブロックするこ
とを必要としないならば“0”に等しい出力ライン30
4上の1ビット“ブロック/非ブロック”結果を出力す
る。全てのコンパレータ302によって生成された一つ
のライン304上の結果は、ライン308上に総計ブロ
ック/非ブロック結果信号を生成するためにORゲート
306によって論理的にORされる。トランザクション
アクティベーション論理300は、(A)アクティブト
ランザクション状態アレー200に少なくとも一つの自
由(空)な行が存在しかつ(B)選択したインアクティ
ブトランザクションと現行アクティブトランザクション
との比較がライン308上に非ブロック信号を生成する
ならば、選択したトランザクションをアクティベートす
る。
【0188】システムコントローラのトランザクション
アクティベーション論理300の二つの実施例を次に説
明する。両方の実施例は、本発明の先に記載された態様
の全てと互換性がある。事実、並列で複数のデータ転送
動作を実行するためのシステムの能力(機能)を更に低
減するがシステムコントローラのインプリメンテーショ
ンを簡略化する、より制限されたアクティベーション規
則を有するトランザクションアクティベーション論理3
00を用いることができる。両方の好ましい実施例で
は、トランザクションアクティベーション論理300
は、アクティベーション試験に対する各システムクロッ
クサイクルの間中にシステムコントローラの入力要求キ
ャッシュ(各マスタUPAポートに対するSCIQ0及
びSCIQ1、及びI/O装置に対するSYSIOQ)
から一つのインアクティブトランザクションを選択す
る。そのクロックサイクルの間中、選択された入力トラ
ンザクションは、一組のコンパレータ302によって全
てのアクティブトランザクションと同時に比較される。
次のシステムクロックサイクルの間中、トランザクショ
ンアクティベーション論理300は、トランザクション
が現行アクティブトランザクションの一つによってブロ
ックされない先のクロックサイクルの間中に選択されか
つ試験された入力トランザクションをアクティベートす
る。保留インアクティブトランザクションが存在しない
か、またはアクティブトランザクション状態アレー20
0に利用可能な行が存在しないならば、トランザクショ
ンアクティベーション論理300は、インアクティブで
ある。
【0189】緩和されたトランザクションアクティベー
ション規則 本発明の第1の“緩和されたトランザクションアクティ
ベーション規則”実施例における各コンパレータ302
の論理回路素子に対する論理式は、以下の通りである:
【0190】
【数1】
【0191】AcTxは、選択されたインアクティブト
ランザクション状態アレーと比較されるアクティブトラ
ンザクション状態アレーの行である。InTxは、アク
ティブトランザクション状態アレーの行と同じように構
成された選択されたインアクティブトランザクションに
対する一組の情報である。AcTx.TxTypeは、
アクティブトランザクションのトランザクションタイプ
である。InTx.TxTypeは、選択されたインア
クティブトランザクションのトランザクションタイプで
ある。InTx.Status.DVPは、DVPビッ
トが選択されたインアクティブトランザクションにセッ
トされるならば、真(True)である。SC_Config
_Reg(X).CIMは、X番目のUPAポートに対
するキャッシュインデックスマスク(CIM)である。
上記論理式によれば:選択されたインアクティブコヒー
レントトランザクションは、アクティブトランザクショ
ンが存在しなければ、常にアクティベートされる。
【0192】アクティブトランザクション及び選択され
たインアクティブトランザクションの両方が書戻しトラ
ンザクションであるならば、アクティブ及び選択された
インアクティブトランザクションと関連したアドレスに
係わりなく、選択されたトランザクションは、アクティ
ブトランザクションによってブロックされない。書戻し
トランザクションであるアクティブトランザクションが
存在し、かつ選択された入力トランザクションが非書戻
しであるならば、またはアクティブトランザクションが
非書戻しでありかつ選択された入力トランザクションが
書戻しであるならば、選択された入力トランザクション
は、完全アドレスマッチが存在するならば、アクティベ
ーションからブロックされる。アクティブトランザクシ
ョンが非書戻しでありかつ選択された入力トランザクシ
ョンが非書戻しであるならば、選択された入力トランザ
クションがブロックされるべきか否かを決定するために
アドレス比較が実行される。選択された入力トランザク
ションのDVPビットがセットされるか、または選択さ
れた入力トランザクションがP_RDD_REQまたは
P_WRI_REQトランザクションであるならば、ア
クティブ及び選択された入力トランザクションの全アド
レスビットが比較される。さもなければ、アクティブ及
び選択された入力トランザクションの両方に対する関連
アドレスビットは、対応UPAポートのキャッシュイン
デックスフィールドに記憶されたビットであり、かつ比
較は、二つのビットフィールドのインターセクション上
で実行される。キャッシュインデックスフィールドにお
けるビットの数は、各UPAポートIDに対するSC
Configレジスタのキャッシュインデックスマスク
(CIM)フィールド194において指定される。選択
された入力トランザクションは、マッチが存在しなけれ
ばアクティベートされる。この“緩和されたトランザク
ションアクティベーション規則”実施例に対するブール
論理回路素子の複雑性は、全アドレス比較に対する最小
許容キャッシュメモリのキャッシュインデックスに関連
したそれらのアドレスビットを用いるだけでかなり低減
することができる。上述したように、この実施例で比較
されたアドレスビットの数は、システムの最小キャッシ
ュメモリのキャッシュインデックスにおけるビットの数
である。上記で用いられた例では、最小確立キャッシュ
メモリサイズが512Kバイトであるときに、最小サイ
ズキャッシュメモリに対するキャッシュインデックス
は、13バイトであり、アドレス指定されたデータブロ
ックの物理アドレスビットPA[18:6]に対応して
いる。しかしながら、一度全アドレス比較が削除される
と、読取り/書戻しトランザクション対の重複動作(ove
rlapping operation) を許容するために明示論理が含ま
れなければならない。
【0193】システムのこの“低減された複雑性の緩和
されたトランザクションアクティベーション規則”実施
例では、一つの好ましい実施例における各コンパレータ
302の論理回路素子に対する論理式は、以下の通りで
ある:
【0194】
【数2】
【0195】かつAdr(MinCIM)は、最小サイ
ズキャッシュメモリに対するアドレスインデックスと関
連したアドレスビットである。ReadWRBPair
信号に対する上記論理式で表された、読取り/書戻し対
を検出するために回路素子は、(A)二つのトランザク
ションが同じUPAポートからであり、(B)二つのう
ちの一つが書戻しトランザクションであり、他は、そう
でなく、かつ(C)書戻しトランザクションではない一
つのトランザクションがそのDVPビットが真にセット
されているならば、ポジティブ(正)のReadWRB
Pair信号を生成する。上述した“低減された複雑
性”コンパレータ論理の使用は、全アドレス比較上の非
マッチ及び最小キャッシュインデックス上のマッチを有
することの頻度(frequency) が、平均で、Nを最小キャ
ッシュインデックスにおけるビットの数とすると、2-N
に等しいので、全コンパレータ論理にわたりシステム性
能にネガティブなインパクトを全く有さない。例えば、
Nが13に等しい(512Kバイト最小キャッシュメモ
リサイズに対して)ならば、このインプリメンテーショ
ンによってブロックされるトランザクションと低減され
た複雑性インプリメンテーションによってブロックされ
ないものとの平均的割合い(average percentage)は、P
_RDD_REQ及びP_WRI_REQトランザクシ
ョンが全トランザクションの80%よいも少ないと想定
すると、全トランザクションの0.01%よりも少な
い。 より厳格なトランザクションアクティベーション規則 本発明の第1の“厳格なトランザクションアクティベー
ション規則”における各コンパレータ302の論理回路
素子に対する論理式は、次の通りである:
【0196】
【数3】
【0197】上記論理式によれば:選択された入力コヒ
ーレントトランザクションは、アクティブトランザクシ
ョンが存在しなければ、常にアクティベートされる。選
択された入力コヒーレントトランザクションは、システ
ムコントローラにおけるアクティブトランザクションと
のアドレスインデックスマッチが存在しなければアクテ
ィベートされる。入力コヒーレントトランザクション
は、入力コヒーレント書戻しトランザクションが書戻し
トランザクションと同じUPAポートからのReadで
あるアクティブトランザクションによってブロックされ
ないことを除き、システムコントローラにおけるアクテ
ィブトランザクションとインデックスマッチが存在しな
いならばアクティベーションからブロックされる。各ア
ドレスインデックス比較に用いるためのビットの数は、
どのUPAポートのキャッシュインデックスがアクティ
ブトランザクションが終了するまでガードされているか
に依存する。アクティブトランザクションにおけるDV
Pビットがセットされないならば、アドレス比較に用い
られたインデックスのビットの数は、選択された入力ト
ランザクションブロックインデックスの大きさと対応ア
クティブトランザクションブロックインデックスの大き
さとのインターセクションである。アクティブトランザ
クションのDVPビットがセットされるならば、アドレ
ス比較に用いられたインデックスのビットの数は、入力
トランザクションのブロックインデックスサイズであ
る。
【0198】上記“厳格な”トランザクションアクティ
ベーション規則は、以下の強い不変量(invariant) を有
する:セットされたDVPを有する読取りトランザクシ
ョン及び同じUPAポートからのその付随書戻しトラン
ザクションを除き、あらゆるキャッシュインデックス上
のシステムにおいてとりわけ一つのトランザクションが
アクティブがあることができる。この“厳格なトランザ
クションアクティベーション規則”実施例に対するブー
ル論理回路素子の複雑性は、全アドレス比較に対する同
じ数のアドレスビットを常に比較することによってかな
り低減することができる。システムのこの“低減された
複雑性の厳格なトランザクションアクティベーション規
則”実施例では、一つの好ましい実施例における各コン
パレータ302の論理回路素子に対する論理式は、以下
の通りである:
【0199】
【数4】
【0200】かつAdr(MinCIM)は、最小サイ
ズキャッシュメモリに対するアドレスインデックスと関
連したアドレスビットである。
【0201】アクティブトランザクション管理 上述したアドレスブロッキング規則(いずれかのセット
における)によりアクティブになることからトランザク
ションをブロッキングすることに加えて、システムコン
トローラは、また、以下の条件により進行することから
アクティブトランザクションをブロックしうる:トラン
ザクションがUPAポートへ送られるべき第2のS_R
EQを必要とすると同時に別のS_REQがそのUPA
ポートに対してまだ顕著であるならば、アクティブトラ
ンザクション上のワークは、ブロックされる。この条件
が検出されるべきためには、しかしながら、システムコ
ントローラは、まずトランザクションをアクティブにさ
せてかつつ関連Dtagルックアップを実行しなければ
ならない。アクティブトランザクション上のワークは、
メモリバンクビジー、またはデータ経路ビジー条件のよ
うな、資源コンテンション(争奪)によってブロックす
ることができる。アクティブトランザクション上のワー
クは、フロー制御要求事項によってブロックすることが
できる。特に、トランザクションは、スレーブの入力キ
ューが充填されているならば、ターゲットスレーブUP
Aポートへ進めることができない。
【0202】アクティブトランザクション管理は、上述
したアクティブトランザクション状態アレー200によ
って、一部、支持される。図14A〜14Dを参照する
と、状態アレー200は、各アクティブトランザクショ
ンに対する状態ベクトル294を含む。状態アレー20
0の各行における状態ベクトル294は、以下のものを
含む:アクティブトランザクション状態アレー200の
対応する行290がアクティブトランザクションに関す
る有効データを含むときに、真であるTxActive
フラグ320。対応トランザクション要求におけるDV
P(汚染犠牲者保留)フラグのコピーである、DVPフ
ラグ321。各トランザクション要求に対するDtag
アレーに記憶されるべき新しいDtag状態値322の
ベクトル。図14Bを参照すると、Dtag New
Stateアレーは、各Dtagアレーに対して、Dt
ag更新が対応Dtagアレー上で実行されるべきであ
るならば1に等しい更新yes/noフラグ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”に等しい。
【0203】それからデータがコピーされるべき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に等しい。
【0204】アクティブトランザクション状態アレーに
示されたトランザクションのどれがこのトランザクショ
ンが対応している無効サブトランザクションを終了する
までブロックされているのかを示しているビットマップ
である、WaitingTx’s327のBitMa
p。各ブロックされたトランザクションに対して、Bi
tMap326は、“1”ビットを有し、かつ各他のト
ランザクションに対してそれは、“0”ビットを有す
る。いかなる無効サブトランザクションを含まないトラ
ンザクションに対して、BitMap327は、全ゼロ
に等しい。
【0205】トランザクション実行論理 図21〜図25を参照すると、一度トランザクションが
アクティベートされたならば、Dtagルックアップ
は、すぐに実行されるか、またはDtagルックアップ
及び更新論理340によりそのトランザクションは、す
ぐに実行される。好ましい実施例では、Dtagルック
アップ動作は、次のようにパイプラインで送られる:4
つのシステムクロックサイクルにわたり、2つのDta
gルックアップは、2つの入力トランザクションに対し
て実行され、続いて2つのDtag更新動作が実行され
る。Dtagルックアップ動作は、各Dtagアレーに
対して一組の3つのDtagビットを生成し、1ビット
は、キャッシュヒットが検出されたかどうかを示し、2
ビットは、もしあれば、トランザクションの指定したデ
ータブロックアドレスに対応している、Dtagエント
リの状態を示す。P_REQトランザクションタイプと
共に、これらのDtag状態値は、(A)もしあれば、
要求したトランザクションを実行するためにUPAポー
トへ送られることが必要なS_REQ、(B)データが
どこへまたはどこから供給されるまたは送られるか、
(C)トランザクションが終了したときに要求している
UPAポートへ送られるべきS_REPLYタイプ、及
び(D)要求したトランザクションの実行の結果として
Dtagアレーに記憶されるべき新しいDtag状態
値、を決定するために用いられる。これらの値は、トラ
ンザクション表341の簡単なテーブル・ルックアップ
を用いて生成される。
【0206】表10は、2データプロセッサシステムに
対するトランザクションルックアップ表341の例を示
す。同様な表は、3つ以上のデータプロセッサを有して
いるシステムに対して、当業者により構築することがで
きる。表10を参照すると、最初の4つのカラム(列)
は、トランザクション表ルックアップの前であって、D
tagルックアップ動作の終結において知られたデータ
値を表わす。表10では、以下の略語が用いられる: Tx:トランザクション CurSt:Dtagルックアップから得られた現行D
tag状態値 NewSt:Dtag更新に対する新しいDtag状態
値 P0:UPAポート0に結合した、データプロセッサ0 P1:UPAポート1に結合した、データプロセッサ1 Mem:主メモリ X:なし、または気にしない error(誤り):決して発生すべきでない指定信号
組合せ
【0207】Dtagルックアップ、要求しているUP
Aポートの識別及びトランザクション要求のタイプから
得られた現行Dtag状態値を用いて、Dtagルック
アップ論理は、トランザクション表341(好ましい実
施例ではROMに記憶される)の対応している行をアク
セスし、かつアクティベートされたトランザクションに
対する状態ベクトル294内のDtag New St
ate Valuesベクトル322に結果として得ら
れたDtagの新しい状態値を記憶する。同様に、もし
あれば、トランザクション表341に見出されたS_R
EQタイプは、アクティベートされたトランザクション
に対するS_REQベクトル323に記憶され、かつト
ランザクション表341に見出されたS_REPLYタ
イプは、アクティベートされたトランザクションに対す
るトランザクション記録290のS_REPLYタイプ
フィールド325に記憶される。S_REPLYフィー
ルド325は、要求しているUPAポートへ送られるべ
きS_REPLYを記憶する。それゆえに、Dtagル
ックアップ動作の終結において、アクティベートされた
トランザクションを実行するために必要な情報は、状態
アレー200のトランザクションのトランザクション記
録290に記憶される。
【0208】好ましい実施例では、Dtagアレー13
4は、Dtagルックアップ及びトランザクション表ル
ックアップ動作が終了した直後にDtagの新しい状態
値ベクトル322のDtag New State値で
更新される。図25は、Dtag更新論理340を示
す。特に、Dtag更新論理340は、Dtagの新し
い状態値ベクトル322及びアクティベートされたトラ
ンザクションに対する対応データブロックアドレスを選
択するため及びスヌープバス140上にそれらの信号を
アサートするために2つのマルチプレクサ342,34
3を用いる。
【0209】
【表34】
【0210】
【表35】
【0211】
【表36】
【0212】
【表37】
【0213】図26を参照すると、S_REQのサブト
ランザクションを実行するためのS_Request論
理350は、S_REQ状態アレー352、並びにS_
REQを受け取るように構成された各データプロセッサ
に対する一つのSReqFIFOバッファを含んでい
る、一組のSReqFIFOバッファ356を用いる。
トランザクションがアクティベートされかつそのDta
gルックアップ動作が実行される毎に、各S_REQが
そのS_REQが送られるべきデータプロセッサに対応
しているSReqFIFOバッファ356に記憶される
ことを除き、各アクティベートされたトランザクション
のトランザクション記録290のベクトル323に記憶
されるのと同じS_REQデータがSReqFIFOバ
ッファにも記憶される。対応Dtagルックアップのと
きにFIFOに各データプロセッサに対する全てのS_
REQを記憶することによって、システムは、第1のデ
ータプロセッサマスタクラスから同じ第2のデータプロ
セッサへ送られたトランザクションがそれらが第1のデ
ータプロセッサのマスタクラス出力キューから送られた
のと同じ順序で実行されるトランザクション順序付け要
求事項を有するコンプライアンスを確実にする。
【0214】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によって処理される。
【0215】一度アクティブコヒーレントトランザクシ
ョンに対する全ての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ポートの各マスタクラスにおけるトランザ
クションが各マスタクラス内で発行されるのと同じ順序
で終了することを確実にする。
【0216】各終了したトランザクションに対して、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メッセージを生成
する。
【0217】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順序
付け要求事項は、自動的に満足される。
【0218】システムコントローラは、Dtagルック
アップ動作が実行される順序と、S_REQメッセージ
がUPAポートへ送られる順序との間で一対一対応を更
に保持する。
【0219】デッカーのアルゴリズムのインプリメンテ
ーション二つのプロセッサ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を読取るべきでないというこ
とを要求する。通常のシステムでは、デッカーのアルゴ
リズムは、記憶が終了することを許される前に一つ置き
のキャッシュにおける対応ラインが無効にされること
を、キャッシュラインへの記憶誤りが発生するときに、
要求することによって、インプリメントされる。
【0220】本発明では、通常の“記憶する前の全ての
キャッシュでの無効”規則は、次に例に示すように、対
応無効を受け取るまで全ての他のプロセッサからの記憶
が終了することをブロックすると同時に、一つのプロセ
ッサからの記憶を終了させることによって、デッカーの
アルゴリズムの正確さをインパクトすることなく、わず
かに緩和される。システムがP1の記憶動作を進行さ
せ、かつP1からの対応無効肯定応答メッセージを受け
取るまでP2の記憶動作をブロックするならば、P1
は、“0”としてBを読取り、P2は、1としてAを読
取る。本発明のトランザクションアクティベーション論
理は、デッカーのアルゴリズムの正確さを確実にするた
めに、二つ以上のプロセッサが同時にミューテックス・
ロック(mutex locks) をタッチすることを試みるときに
タイム・ウィンド内の一つ以外の全てのプロセッサによ
る記憶動作をブロックする。これは、通常の書込み無効
論理に対して共有データに対する記憶の性能を改善す
る。上述した“緩和された規則”をインプリメントする
S_Request論理350及びS_Reply論理
362の第1の、保守的な、実施例では、データが要求
しているキャッシュにおいてSまたはO状態にあるなら
ば、S_REQ論理は、全ての他の共有キャッシュへS
_INV要求を発行し、かつ要求しているキャッシュへ
S_OAKを発行する前にそれらからのP_Reply
を待つ。
【0221】さもなければ、データが他のキャッシュの
M状態にあるならば、状態マシン342は、そのキャッ
シュへS_CPIを発行し、それからのP_Reply
を待ち、そして要求しているキャッシュへデータを供給
する。上記条件のいずれも適用せずかつデータがキャッ
シュのS状態にあるならば、状態マシン342は、共有
キャッシュの一つへS_CPI要求を発行し、他の全て
の共有キャッシュへS_INV要求を発行し、そして要
求しているキャッシュへS_Replyを発行する前に
それらの全てからのP_Replyを待つ。上記条件の
いずれも適用しないならば、アドレス指定されたデータ
ブロックは、主メモリから供給される。第2の実施例で
は、Dtagルックアップ及び更新論理340及びS_
Request及びS_Reply論理350,362
は、上述した“緩和された規則”の“性能”版を一緒に
用いる。このインプリメンテーションでは、要求してい
るキャッシュに対して顕著なS_REQが存在するなら
ば、S_Request論理350は、S_REQへの
P_REPLYを待つ。次に、アドレス指定されたデー
タが要求しているプロセッサのキャッシュメモリのSま
たはO状態にあるならば、システムコントローラは、全
ての他の共有キャッシュへ無効要求(S_INV)を発
行しかつ要求しているキャッシュへS_OAKを発行す
る。
【0222】アドレス指定されたデータが要求している
プロセッサのキャッシュメモリのSまたはO状態にない
が、他のキャッシュのM状態にあるならば、システムコ
ントローラは、そのキャッシュのUPAスレーブポート
へコピーバック無効要求(S_CPI)を発行し、それ
からのP_REPLYを待ち、そして要求しているUP
Aポートへデータを供給する。上記条件のいずれも適用
せずかつアドレス指定されたデータがあらゆるキャッシ
ュ(即ち、要求しているプロセッサのキャッシュメモリ
以外)のS状態にあるならば、システムコントローラ
は、全ての共有キャッシュへ無効要求(S_INV)を
発行し、そして主メモリから要求したデータを供給す
る。そして、上記条件のいずれも適用しないならば、シ
ステムコントローラは、主メモリからアドレス指定され
たデータを供給する。好ましい実施例では、送られるべ
きS_REQ及びS_REPLYメッセージと各トラン
ザクションに対するデータ発生源は、Dtag新状態
値、トランザクションに対するS_REQベクター及び
トランザクションに対するS_REPLYを生成するた
めにDtagルックアップ動作の終りでアクセスされる
トランザクション表341において符号化される。
【0223】図27を参照すると、データ経路スケジュ
ーラ360は、(A)メモリユニット論理370、
(B)エラーユニット論理371、(C)UPAユニッ
ト論理372、及び(D)ファースト(Fast)フレームバ
ッファ(FFB)論理ユニット373からの競合してい
るデータ経路セットアップ要求間でアービトレートす
る。メモリユニット論理370は、主メモリからデータ
を読取りかつ主メモリへデータを書込むために必要な信
号を制御する。エラーユニット論理371は、タイムア
ウトエラー、不当アドレス範囲エラー等を取り扱う。U
PA論理ユニット372は、それへデータが供給される
かまたはそれからデータが要求されるUPAユニットと
のS_REQ、P_REQ及びP_REPLY通信を取
り扱う。FFB論理ユニット373は、フレームバッフ
ァ374から読取るため及びフレームバッファ374へ
書込むために必要な信号を制御する。論理ユニット37
0〜373のそれぞれは、データ経路要求を一時的に記
憶するFIFO要求バッファ375a〜375dを含
む。各FIFO要求バッファ375の各データ経路要求
エントリは、次のものを含む:エントリが有効データを
含むかどうかを示すための、有効ビット;データが転送
されるならば、どこからデータが転送されるのかを示し
ている、発生源(ソース);データが転送されるなら
ば、どこへデータが転送されるのかを示している、宛
先;要求したデータ経路が“スケジュールされた”(即
ち、許可された)ときに発行すべきS_REPLYの型
を示している、S_REPLY型。
【0224】データ経路スケジューラ360は、回転式
優先順位エンコーダとしてインプリメントされ、それゆ
えにラウンドロビンアービトレーションスキームを用い
る。(FFB論理ユニット以外の)論理ユニット370
〜373からの要求が許可されるときに、それは、次の
アービトレーションサイクルに対して最も低い優先順位
が割り当てられる。FFB論理ユニットに対して、その
FIFO375dの4つのデータ経路要求までは、デー
タ経路スケジューラ360が別のアービトレーションサ
イクルを実行しかつ他の要求をサービスする前にそれら
が単一要求であるかのようにデータ経路スケジューラ3
60によってサービスされる。この特別の優先順位は、
フレームバッファが新しいイメージデータで素早く装填
されることを確実にするためにFFBデータ経路要求に
与えられる。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によって記憶される。
【0225】宛先UPAポートへシステムコントローラ
によって進めされる非コヒーレントP_REQは、シス
テムコントローラの並列FIFO要求キューバッファに
記憶され、それゆえに非コヒーレントトランザクション
は、コヒーレントトランザクションの進行をブロックし
ない。サブトランザクション要求は、対応トランザクシ
ョンがアクティベートされたのと同じ順序で要求キュー
380に記憶される。UPAポートの要求キュー380
の各サブトランザクション要求(S_REQ)は、それ
がキュー380に記憶される順序で実行される。更に、
S_REPLYは、対応トランザクションがアクティベ
ートされるのと同じ順序で要求キュー380に記憶され
る。結果として、マスタクラス内のトランザクション及
び各この文書において先に説明したUPAスレーブポー
トによって実行されるトランザクションに対する全ての
順序付け要求事項は、要求キュー機構の動作によって自
動的に満たされる。この要求キュー機構は、ある程度ト
ランザクションの並列実行を低減する。例えば、多くの
場合に、S_REPLY及びS_REQは、並列でUP
Aポートによってサービスされると同時に、S_REQ
は、S_REPLYをブロックすることができ、及びそ
の逆もできる。しかしながら、キュー構造の簡略化、そ
して2から8またはそれ以上のデータプロセッサUPA
ポート及び一つ以上の非プロセッサUPAポートに対す
るこのアーキテクチャを用いているシステムにおいてま
だ許容される高度の並列実行は、魅力的な性能/コスト
特性を提供する。
【0226】代替実施例 本発明は、2〜3の特定な実施例を参照して記載された
が、この記載は、本発明の説明のためであり本発明を限
定するものではない。種々の変更は、添付した特許請求
の範囲により画定された真の精神及び範疇から逸脱する
ことなく当業者により生起されうる。
【0227】
【発明の効果】本発明のコンピュータシステムは、シス
テムコントローラ;システムコントローラに結合された
主メモリ;Nが4よりも大きい整数である、Nデータブ
ロックを記憶するNキャッシュラインを有しているキャ
ッシュメモリと、キャッシュメモリの各キャッシュライ
ンに対して一つのEtagを含んでいる、Nマスタキャ
ッシュタグ(Etags)と、それが主メモリの中に書
き戻されるまでキャッシュメモリから変位された汚染犠
牲者データブロックを記憶する書戻しバッファとを有
し、各キャッシュラインに対するEtagが、アドレス
インデックスと、キャッシュラインに記憶されたデータ
ブロックがデータプロセッサによって変更されたデータ
を含むか否かを示すEtag状態値とを記憶している、
データプロセッサを備え、データプロセッサは、システ
ムコントローラへメモリトランザクション要求を送る、
システムコントローラに結合された、マスタインターフ
ェイスを含み、メモリトランザクション要求は、読取り
要求及び書戻し要求を含み;各メモリトランザクション
要求は、読み取られるかまたは書き込まれるべき関連デ
ータブロックに対するアドレスを指定し;マスタインタ
ーフェイスは、(A)読取り要求を生成することによ
り、かつ(B)キャッシュ誤りが変更されたデータを含
む犠牲になるべきキャッシュラインを必要とするとき
に、対応EtagのEtag状態値により、書戻しバッ
ファに該変更されたデータを有しているデータブロック
を記憶しかつ書戻し要求を生成することにより、キャッ
シュメモリのあらゆるキャッシュライン上のキャッシュ
誤りに応答するキャッシュコヒーレンス論理を更に含
み;システムコントローラは、N重複キャッシュタグの
セット(Dtags)を含み、各Dtagは、Etag
sの一つに対応しかつDtag状態値及び対応Etag
と同じアドレスインデックスを記憶し;該Dtag状態
値は、対応キャッシュラインに記憶されたデータブロッ
クがデータプロセッサによって変更されたデータを含む
か否かを示し;システムコントローラは、データプロセ
ッサによる各メモリトランザクション要求を処理するメ
モリトランザクション要求論理を含み;アクセス要求論
理は、データプロセッサからのメモリトランザクション
要求をパイプラインで送るトランザクション実行回路素
子を含み、トランザクション実行回路素子は、書戻し要
求によって指定されたアドレスに対応しているDtag
インデックスが無効であるか否かを決定するためにアク
ティベートの前にデータプロセッサからの各書戻し要求
を処理する無効回路素子を含み、無効回路素子は、Dt
agインデックスが無効でないならば書戻し要求をアク
ティベートしかつDtagインデックスが無効であるな
らば書戻し要求を取り消し;システムコントローラのメ
モリトランザクション要求論理は、書込みバッファのデ
ータブロックを主メモリに書込みかつ対応Dtagの状
態値を無効にすることによってアクティベートされた書
戻し要求を処理する書戻し論理を含んでいるので、無効
トランザクションの発生により保留書戻しトランザクシ
ョンを取り消すための簡単な機構のアーキテクチャを供
給し、総括トランザクションスループットにおける改善
をもたらす。
【0228】また、本発明のコンピュータシステムは、
システムコントローラ;システムコントローラに結合さ
れた主メモリ;それぞれがデータブロックを記憶するキ
ャッシュラインを有しているキャッシュメモリと、キャ
ッシュメモリの各キャッシュラインに対して一つのEt
agを含んでいる、マスタキャッシュタグ(Etag
s)と、それが主メモリの中に書き戻されるまでキャッ
シュメモリから変位された汚染犠牲者データブロックを
記憶する書戻しバッファとを有し、各キャッシュライン
に対するEtagが、アドレスインデックスと、キャッ
シュラインに記憶されたデータブロックがデータプロセ
ッサによって変更されたデータを含むか否かを示すEt
ag状態値とを記憶している、複数のデータプロセッサ
を備え、データプロセッサのそれぞれは、システムコン
トローラへメモリトランザクション要求を送る、システ
ムコントローラに結合された、マスタインターフェイス
を含み、マスタインターフェイスは、(A)読取り要求
を生成することによってキャッシュメモリのあらゆるキ
ャッシュライン上のキャッシュ誤りに応答するキャッシ
ュコヒーレンス論理を含み、かつ(B)キャッシュ誤り
が変更されたデータを含む犠牲になるべきキャッシュラ
インを必要とするときに、対応EtagのEtag状態
値により、書戻しバッファに該変更されたデータを有し
ているデータブロックを記憶しかつ書戻し要求を生成
し;システムコントローラは、重複キャッシュタグのセ
ット(Dtags)を含み、各Dtagは、Etags
の一つに対応しかつDtag状態値及び対応Etagと
同じアドレスインデックスを記憶し;該Dtag状態値
は、対応キャッシュラインに記憶されたデータブロック
がデータプロセッサによって変更されたデータを含むか
否かを示し;システムコントローラは、データプロセッ
サのそれぞれによる各メモリトランザクション要求を処
理するメモリトランザクション要求論理を含み;メモリ
トランザクション要求論理は、メモリトランザクション
要求に基づいて有効から無効状態値へ指定されたDta
g状態値を更新する論理を含んでいる、Dtag状態値
を更新するDtag更新論理を含み;メモリトランザク
ション要求論理は、データプロセッサからのメモリトラ
ンザクション要求を実行するトランザクション実行回路
素子を含み、トランザクション実行回路素子は、書戻し
要求によって指定されたアドレスに対応しているDta
gがデータプロセッサの別のものによるメモリトランザ
クション要求によって無効にされたか否かを決定するこ
とによって各書戻し要求を処理する無効回路素子を含
み、無効回路素子は、Dtagインデックスが無効でな
いならば書戻し要求をアクティベートしかつDtagイ
ンデックスが無効であるならば書戻し要求を取り消し;
システムコントローラのメモリトランザクション要求論
理は、書戻しバッファのデータブロックを主メモリに書
込みかつ対応Dtagの状態値を無効にすることによっ
てアクティベートされた書戻し要求を処理する書戻し論
理を含むので、無効トランザクションの発生により保留
書戻しトランザクションを取り消すための簡単な機構の
アーキテクチャを供給し、総括トランザクションスルー
プットにおける改善をもたらす。
【0229】更に、本発明の方法は、主メモリ及びそれ
ぞれがキャッシュメモリを有している複数のデータプロ
セッサに結合されたシステムコントローラを有している
パケット交換型キャッシュコヒーレントマルチプロセッ
サシステムにおいて書戻しトランザクションを取り消す
方法であって、キャッシュメモリの各キャッシュライン
に対して一つのEtagを含んでいる、マスタキャッシ
ュタグ(Etags)を各データプロセッサに記憶し、
各キャッシュラインに対するEtagが、アドレスイン
デックスと、キャッシュラインに記憶されたデータブロ
ックがその対応データプロセッサによって変更されたデ
ータを含むか否かを示すEtag状態値とを記憶してお
り;それが主メモリの中に書き戻されるまでキャッシュ
メモリから変位された汚染犠牲者データブロックを各デ
ータプロセッサの書戻しバッファに記憶し;システムコ
ントローラに各キャッシュメモリのための重複タグ(D
tags)のセットを記憶し、各DtagがDtag状
態値及び該対応Etagと同じアドレスインデックスを
含んでいるEtagsの一つに対応しており;データプ
ロセッサからシステムコントローラへメモリトランザク
ション要求を送り、メモリトランザクション要求は、読
取り要求及び書戻し要求を含み;各メモリトランザクシ
ョン要求は、読取られるかまたは書込まれるべき関連デ
ータブロックに対するアドレスを指定し;少なくとも一
つのDtagの無効を要求しているデータプロセッサの
一つからのメモリトランザクション要求を処理して、少
なくとも一つのDtagの状態値を有効から無効状態値
へ更新し;書戻し要求によって指定されたアドレスに対
応しているDtagが無効であるか否かを決定し;Dt
agが無効であるならば書戻し要求を取消し;Dtag
が無効でないならば書戻し要求をアクティベートする:
ことによってシステムコントローラによる処理に対する
書戻し要求をアクティベートし;書戻しバッファの対応
するもののデータブロックを主メモリに書込みかつ対応
Dtagsの状態値を無効にすることによってアクティ
ベートされた書戻し要求を処理するので、無効トランザ
クションの発生により保留書戻しトランザクションを取
り消すための簡単な方法を供給し、総括トランザクショ
ンスループットにおける改善をもたらす。
【図面の簡単な説明】
【図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)発明者 ザヒル エイブラヒム アメリカ合衆国 カリフォルニア州 94043 マウンテン ヴィュー ガーシア アベニュー 2550 (72)発明者 サティアナラヤナ ニシュタラ アメリカ合衆国 カリフォルニア州 95014 クーパーティノ カントリー ス プリング コート 11522 (72)発明者 ケヴィン ノーモイル アメリカ合衆国 カリフォルニア州 95129 サン ホセ ボリナー ドライヴ 4708 (72)発明者 ポール ローウェンスタイン アメリカ合衆国 カリフォルニア州 94301 パロ アルト メルヴィル アベ ニュー 814 (72)発明者 ルイス エフ コフィン ザ サード アメリカ合衆国 カリフォルニア州 95124 サン ホセ ワイン コーク ウ ェイ 3444

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 システムコントローラ;前記システムコ
    ントローラに結合された主メモリ;Nが4よりも大きい
    整数である、Nデータブロックを記憶するNキャッシュ
    ラインを有しているキャッシュメモリと、前記キャッシ
    ュメモリの各前記キャッシュラインに対して一つのEt
    agを含んでいる、Nマスタキャッシュタグ(Etag
    s)と、それが前記主メモリの中に書き戻されるまで前
    記キャッシュメモリから変位された汚染犠牲者データブ
    ロックを記憶する書戻しバッファとを有し、各キャッシ
    ュラインに対する前記Etagが、アドレスインデック
    スと、前記キャッシュラインに記憶された前記データブ
    ロックが前記データプロセッサによって変更されたデー
    タを含むか否かを示すEtag状態値とを記憶してい
    る、データプロセッサを備え、 前記データプロセッサは、前記システムコントローラへ
    メモリトランザクション要求を送る、前記システムコン
    トローラに結合された、マスタインターフェイスを含
    み、前記メモリトランザクション要求は、読取り要求及
    び書戻し要求を含み;各メモリトランザクション要求
    は、読み取られるかまたは書き込まれるべき関連データ
    ブロックに対するアドレスを指定し;前記マスタインタ
    ーフェイスは、(A)読取り要求を生成することによ
    り、かつ(B)前記キャッシュ誤りが変更されたデータ
    を含む犠牲になるべきキャッシュラインを必要とすると
    きに、対応EtagのEtag状態値により、前記書戻
    しバッファに該変更されたデータを有しているデータブ
    ロックを記憶しかつ書戻し要求を生成することにより、
    前記キャッシュメモリのあらゆるキャッシュライン上の
    キャッシュ誤りに応答するキャッシュコヒーレンス論理
    を更に含み;前記システムコントローラは、N重複キャ
    ッシュタグのセット(Dtags)を含み、各Dtag
    は、前記Etagsの一つに対応しかつDtag状態値
    及び前記対応Etagと同じアドレスインデックスを記
    憶し;該Dtag状態値は、前記対応キャッシュライン
    に記憶された前記データブロックが前記データプロセッ
    サによって変更されたデータを含むか否かを示し;前記
    システムコントローラは、前記データプロセッサによる
    各前記メモリトランザクション要求を処理するメモリト
    ランザクション要求論理を含み;前記アクセス要求論理
    は、前記データプロセッサからの前記メモリトランザク
    ション要求をパイプラインで送るトランザクション実行
    回路素子を含み、前記トランザクション実行回路素子
    は、前記書戻し要求によって指定された前記アドレスに
    対応している前記Dtagインデックスが無効であるか
    否かを決定するためにアクティベートの前に前記データ
    プロセッサからの各書戻し要求を処理する無効回路素子
    を含み、前記無効回路素子は、前記Dtagインデック
    スが無効でないならば前記書戻し要求をアクティベート
    しかつ前記Dtagインデックスが無効であるならば前
    記書戻し要求を取り消し;前記システムコントローラの
    メモリトランザクション要求論理は、前記書込みバッフ
    ァの前記データブロックを前記主メモリに書込みかつ前
    記対応Dtagの前記状態値を無効にすることによって
    前記アクティベートされた書戻し要求を処理する書戻し
    論理を含んでいることを特徴とするコンピュータシステ
    ム。
  2. 【請求項2】 前記無効回路素子は、前記主メモリへ前
    記汚染犠牲者データブロックを送らないように前記デー
    タプロセッサに命令する前記データプロセッサへ第1の
    応答メッセージを送ることによって前記書戻し要求を取
    消し、かつ前記主メモリへ前記汚染犠牲者データブロッ
    クを送るべく前記データプロセッサに命令する前記デー
    タプロセッサへ第2の応答メッセージを送ることによっ
    て前記書戻し要求をアクティベートすることを特徴とす
    る請求項1に記載のコンピュータシステム。
  3. 【請求項3】 前記データプロセッサは、第1のデータ
    プロセッサを構成し、前記キャッシュメモリは、第1の
    キャッシュメモリを構成しかつ前記マスタインターフェ
    イスは、第1のマスタインターフェイスを構成し;前記
    コンピュータシステムは、第2のキャッシュメモリを有
    している第2のデータプロセッサを更に含み;前記第2
    のデータプロセッサは、前記システムコントローラへメ
    モリトランザクション要求を送るための、前記システム
    コントローラに結合した、第2のマスタインターフェイ
    スを含み、前記メモリトランザクション要求は、読取り
    要求及び書戻し要求を含み;前記メモリトランザクショ
    ン要求論理は、前記メモリトランザクション要求を処理
    するときに前記Dtagsを更新するDtag更新論理
    を含み、前記Dtag更新論理は、前記第2のマスタイ
    ンターフェイスによって送られたメモリトランザクショ
    ンを処理することが前記第1のキャッシュメモリに記憶
    されたデータの排他的所有権を要求するときに前記第1
    のキャッシュメモリのキャッシュラインに対する前記D
    tagインデックスを無効にし;それにより前記第2の
    マスタインターフェイスによって送られたメモリトラン
    ザクションは、前記第1のデータプロセッサにおける前
    記書戻しバッファの前記汚染犠牲者キャッシュラインに
    対応している前記Dtagインデックスを無効にし、前
    記無効回路素子に前記書戻し要求を取り消させることを
    特徴とする請求項1に記載のコンピュータシステム。
  4. 【請求項4】 前記マスタインターフェイスは、前記シ
    ステムコントローラへ送られるべきメモリトランザクシ
    ョン要求を記憶するための少なくとも二つの並列出力要
    求キューを含み;前記キャッシュコヒーレンス論理は、
    (A)読取り要求を前記出力要求キューの第1のものに
    記憶することにより前記キャッシュメモリのあらゆるキ
    ャッシュライン上のキャッシュ誤りに応答し、かつ
    (B)前記キャッシュ誤りが、変更されたデータを含
    む、対応EtagのEtag状態値により、データブロ
    ックを記憶しているキャッシュライン上で発生するとき
    に、前記変更されたデータを有しているデータブロック
    を前記書戻しバッファに記憶しかつ前記出力要求キュー
    の第2のものに書戻し要求を記憶し;前記トランザクシ
    ョン実行回路素子は、前記データプロセッサの前記二つ
    の並列出力要求キューからの前記メモリトランザクショ
    ン要求をパイプラインで送ることを特徴とする請求項1
    に記載のコンピュータシステム。
  5. 【請求項5】 システムコントローラ;前記システムコ
    ントローラに結合された主メモリ;それぞれがデータブ
    ロックを記憶するキャッシュラインを有しているキャッ
    シュメモリと、前記キャッシュメモリの各前記キャッシ
    ュラインに対して一つのEtagを含んでいる、マスタ
    キャッシュタグ(Etags)と、それが前記主メモリ
    の中に書き戻されるまで前記キャッシュメモリから変位
    された汚染犠牲者データブロックを記憶する書戻しバッ
    ファとを有し、各キャッシュラインに対する前記Eta
    gが、アドレスインデックスと、前記キャッシュライン
    に記憶された前記データブロックが前記データプロセッ
    サによって変更されたデータを含むか否かを示すEta
    g状態値とを記憶している、複数のデータプロセッサを
    備え、 前記データプロセッサのそれぞれは、前記システムコン
    トローラへメモリトランザクション要求を送る、前記シ
    ステムコントローラに結合された、マスタインターフェ
    イスを含み、前記マスタインターフェイスは、(A)読
    取り要求を生成することによって前記キャッシュメモリ
    のあらゆるキャッシュライン上のキャッシュ誤りに応答
    するキャッシュコヒーレンス論理を含み、かつ(B)前
    記キャッシュ誤りが変更されたデータを含む犠牲になる
    べきキャッシュラインを必要とするときに、対応Eta
    gのEtag状態値により、前記書戻しバッファに該変
    更されたデータを有しているデータブロックを記憶しか
    つ書戻し要求を生成し;前記システムコントローラは、
    重複キャッシュタグのセット(Dtags)を含み、各
    Dtagは、前記Etagsの一つに対応しかつDta
    g状態値及び前記対応Etagと同じアドレスインデッ
    クスを記憶し;該Dtag状態値は、前記対応キャッシ
    ュラインに記憶された前記データブロックが前記データ
    プロセッサによって変更されたデータを含むか否かを示
    し;前記システムコントローラは、前記データプロセッ
    サのそれぞれによる各前記メモリトランザクション要求
    を処理するメモリトランザクション要求論理を含み;前
    記メモリトランザクション要求論理は、メモリトランザ
    クション要求に基づいて有効から無効状態値へ指定され
    たDtag状態値を更新する論理を含んでいる、前記D
    tag状態値を更新するDtag更新論理を含み;前記
    メモリトランザクション要求論理は、前記データプロセ
    ッサからの前記メモリトランザクション要求を実行する
    トランザクション実行回路素子を含み、前記トランザク
    ション実行回路素子は、前記書戻し要求によって指定さ
    れた前記アドレスに対応している前記Dtagが前記デ
    ータプロセッサの別のものによるメモリトランザクショ
    ン要求によって無効にされたか否かを決定することによ
    って各書戻し要求を処理する無効回路素子を含み、前記
    無効回路素子は、前記Dtagインデックスが無効でな
    いならば前記書戻し要求をアクティベートしかつ前記D
    tagインデックスが無効であるならば前記書戻し要求
    を取り消し;前記システムコントローラのメモリトラン
    ザクション要求論理は、前記書戻しバッファの前記デー
    タブロックを前記主メモリに書込みかつ前記対応Dta
    gの前記状態値を無効にすることによって前記アクティ
    ベートされた書戻し要求を処理する書戻し論理を含むこ
    とを特徴とするコンピュータシステム。
  6. 【請求項6】 前記無効回路素子は、前記主メモリへ前
    記汚染犠牲者データブロックを送らないように前記デー
    タプロセッサに命令する前記データプロセッサへ第1の
    応答メッセージを送ることによって前記書戻し要求を取
    消し、かつ前記主メモリへ前記汚染犠牲者データブロッ
    クを送るべく前記データプロセッサに命令する前記デー
    タプロセッサへ第2の応答メッセージを送ることによっ
    て前記書戻し要求をアクティベートすることを特徴とす
    る請求項5に記載のコンピュータシステム。
  7. 【請求項7】 前記データプロセッサは、第1のデータ
    プロセッサを構成し、前記キャッシュメモリは、第1の
    キャッシュメモリを構成しかつ前記マスタインターフェ
    イスは、第1のマスタインターフェイスを構成し;前記
    コンピュータシステムは、第2のキャッシュメモリを有
    している第2のデータプロセッサを更に含み;前記第2
    のデータプロセッサは、前記システムコントローラへメ
    モリトランザクション要求を送るための、前記システム
    コントローラに結合した、第2のマスタインターフェイ
    スを含み、前記メモリトランザクション要求は、読取り
    要求及び書戻し要求を含み;前記メモリトランザクショ
    ン要求論理は、前記メモリトランザクション要求を処理
    するときに前記Dtagsを更新するDtag更新論理
    を含み、前記Dtag更新論理は、前記第2のマスタイ
    ンターフェイスによって送られたメモリトランザクショ
    ンを処理することが前記第1のキャッシュメモリに記憶
    されたデータの排他的所有権を要求するときに前記第1
    のキャッシュメモリのキャッシュラインに対する前記D
    tagインデックスを無効にし;それにより前記第2の
    マスタインターフェイスによって送られたメモリトラン
    ザクションは、前記第1のデータプロセッサにおける前
    記書戻しバッファの前記汚染犠牲者キャッシュラインに
    対応している前記Dtagインデックスを無効にし、前
    記無効回路素子に前記書戻し要求を取り消させることを
    特徴とする請求項5に記載のコンピュータシステム。
  8. 【請求項8】 主メモリ及びそれぞれがキャッシュメモ
    リを有している複数のデータプロセッサに結合されたシ
    ステムコントローラを有しているパケット交換型キャッ
    シュコヒーレントマルチプロセッサシステムにおいて書
    戻しトランザクションを取り消す方法であって、 前記キャッシュメモリの各キャッシュラインに対して一
    つのEtagを含んでいる、マスタキャッシュタグ(E
    tags)を各前記データプロセッサに記憶し、各キャ
    ッシュラインに対する前記Etagが、アドレスインデ
    ックスと、前記キャッシュラインに記憶された前記デー
    タブロックがその対応データプロセッサによって変更さ
    れたデータを含むか否かを示すEtag状態値とを記憶
    しており;それが前記主メモリの中に書き戻されるまで
    前記キャッシュメモリから変位された汚染犠牲者データ
    ブロックを各前記データプロセッサの書戻しバッファに
    記憶し;前記システムコントローラに各前記キャッシュ
    メモリのための重複タグ(Dtags)のセットを記憶
    し、各前記DtagがDtag状態値及び該対応Eta
    gと同じアドレスインデックスを含んでいる前記Eta
    gsの一つに対応しており;前記データプロセッサから
    前記システムコントローラへメモリトランザクション要
    求を送り、前記メモリトランザクション要求は、読取り
    要求及び書戻し要求を含み;各メモリトランザクション
    要求は、読取られるかまたは書込まれるべき関連データ
    ブロックに対するアドレスを指定し;少なくとも一つの
    前記Dtagの無効を要求している前記データプロセッ
    サの一つからのメモリトランザクション要求を処理し
    て、前記少なくとも一つのDtagの状態値を有効から
    無効状態値へ更新し;前記書戻し要求によって指定され
    たアドレスに対応している前記Dtagが無効であるか
    否かを決定し;前記Dtagが無効であるならば前記書
    戻し要求を取消し;前記Dtagが無効でないならば前
    記書戻し要求をアクティベートする:ことによって前記
    システムコントローラによる処理に対する書戻し要求を
    アクティベートし;前記書戻しバッファの対応するもの
    の前記データブロックを前記主メモリに書込みかつ前記
    対応Dtagsの前記状態値を無効にすることによって
    前記アクティベートされた書戻し要求を処理することを
    特徴とする方法。
  9. 【請求項9】 前記アクティベートする段階は、前記主
    メモリへ前記汚染犠牲者データブロックを送らないよう
    に前記データプロセッサに命令する前記データプロセッ
    サへ第1の応答メッセージを送ることによって前記書戻
    し要求を取消し、かつ前記主メモリへ前記汚染犠牲者デ
    ータブロックを送るべく前記データプロセッサに命令す
    る前記データプロセッサへ第2の応答メッセージを送る
    ことによって前記書戻し要求をアクティベートすること
    を特徴とする請求項8に記載の方法。
  10. 【請求項10】 前記更新段階は、前記データプロセッ
    サの第2のものによって送られたメモリトランザクショ
    ンを処理することが第1のデータプロセッサのキャッシ
    ュメモリに記憶されたデータの排他的所有権を要求する
    ときに前記第1のデータプロセッサのキャッシュメモリ
    のキャッシュラインに対する前記Dtag状態値を無効
    状態値に更新することを含み;それにより前記第2のデ
    ータプロセッサによって送られたメモリトランザクショ
    ンは、前記第1のデータプロセッサにおける前記書戻し
    バッファの前記汚染犠牲者キャッシュラインに対応して
    いる前記Dtagインデックスを無効にし、前記書戻し
    要求の取消しをもたらすことを特徴とする請求項8に記
    載の方法。
JP8078713A 1995-03-31 1996-04-01 パケット交換型キャッシュコヒーレントマルチプロセッサシステム用書戻し取消し処理システム Pending JPH0954758A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/415,040 US5684977A (en) 1995-03-31 1995-03-31 Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system
US08/415040 1995-03-31

Publications (1)

Publication Number Publication Date
JPH0954758A true JPH0954758A (ja) 1997-02-25

Family

ID=23644107

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8078713A Pending JPH0954758A (ja) 1995-03-31 1996-04-01 パケット交換型キャッシュコヒーレントマルチプロセッサシステム用書戻し取消し処理システム

Country Status (3)

Country Link
US (1) US5684977A (ja)
EP (1) EP0735484A1 (ja)
JP (1) JPH0954758A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006048406A (ja) * 2004-08-05 2006-02-16 Fujitsu Ltd メモリシステム制御装置およびメモリシステム制御方法
JP2007533014A (ja) * 2004-06-03 2007-11-15 株式会社ソニー・コンピュータエンタテインメント ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法
JP2007535057A (ja) * 2004-04-26 2007-11-29 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 集積回路及びトランザクション発信方法

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5875462A (en) * 1995-12-28 1999-02-23 Unisys Corporation Multi-processor data processing system with multiple second level caches mapable to all of addressable memory
US6038645A (en) * 1996-08-28 2000-03-14 Texas Instruments Incorporated Microprocessor circuits, systems, and methods using a combined writeback queue and victim cache
US5897656A (en) * 1996-09-16 1999-04-27 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
US5905876A (en) * 1996-12-16 1999-05-18 Intel Corporation Queue ordering for memory and I/O transactions in a multiple concurrent transaction computer system
US5946318A (en) * 1997-03-21 1999-08-31 International Business Machines Corporation Method and apparatus for processing and packetizing data from a data stream
US5996051A (en) * 1997-04-14 1999-11-30 Advanced Micro Devices, Inc. Communication system which in a first mode supports concurrent memory acceses of a partitioned memory array and in a second mode supports non-concurrent memory accesses to the entire memory array
US6094709A (en) * 1997-07-01 2000-07-25 International Business Machines Corporation Cache coherence for lazy entry consistency in lockup-free caches
US6249520B1 (en) * 1997-10-24 2001-06-19 Compaq Computer Corporation High-performance non-blocking switch with multiple channel ordering constraints
US6442533B1 (en) * 1997-10-29 2002-08-27 William H. Hinkle Multi-processing financial transaction processing system
US6058461A (en) * 1997-12-02 2000-05-02 Advanced Micro Devices, Inc. Computer system including priorities for memory operations and allowing a higher priority memory operation to interrupt a lower priority memory operation
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
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
US6633945B1 (en) 1997-12-07 2003-10-14 Conexant Systems, Inc. Fully connected cache coherent multiprocessing systems
US6341337B1 (en) * 1998-01-30 2002-01-22 Sun Microsystems, Inc. Apparatus and method for implementing a snoop bus protocol without snoop-in and snoop-out logic
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
US6631401B1 (en) 1998-12-21 2003-10-07 Advanced Micro Devices, Inc. Flexible probe/probe response routing for maintaining coherency
US6393529B1 (en) * 1998-12-21 2002-05-21 Advanced Micro Devices, Inc. Conversation of distributed memory bandwidth in multiprocessor system with cache coherency by transmitting cancel subsequent to victim write
US6370621B1 (en) 1998-12-21 2002-04-09 Advanced Micro Devices, Inc. Memory cancel response optionally cancelling memory controller's providing of data in response to a read operation
US6490661B1 (en) 1998-12-21 2002-12-03 Advanced Micro Devices, Inc. Maintaining cache coherency during a memory read operation in a multiprocessing computer system
US6266743B1 (en) 1999-02-26 2001-07-24 International Business Machines Corporation Method and system for providing an eviction protocol within a non-uniform memory access system
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
US6629178B1 (en) 2000-06-15 2003-09-30 Advanced Micro Devices, Inc. System and method for controlling bus access for bus agents having varying priorities
US6438658B1 (en) * 2000-06-30 2002-08-20 Intel Corporation Fast invalidation scheme for caches
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
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
KR100659683B1 (ko) * 2000-12-26 2006-12-21 파이오니아 가부시키가이샤 정보 기록/재생 장치 및 정보 기록 매체
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
US6971098B2 (en) 2001-06-27 2005-11-29 Intel Corporation Method and apparatus for managing transaction requests in a multi-node architecture
US6842827B2 (en) 2002-01-02 2005-01-11 Intel Corporation Cache coherency arrangement to enhance inbound bandwidth
US6968415B2 (en) * 2002-03-29 2005-11-22 International Business Machines Corporation Opaque memory region for I/O adapter transparent bridge
US7210006B2 (en) * 2002-06-28 2007-04-24 Sun Microsystems, Inc. Computer system supporting read-to-write-back transactions for I/O devices
US7577816B2 (en) * 2003-08-18 2009-08-18 Cray Inc. Remote translation mechanism for a multinode system
US6965972B2 (en) * 2002-09-25 2005-11-15 International Business Machines Corporation Real time emulation of coherence directories using global sparse directories
US7743223B2 (en) * 2003-08-18 2010-06-22 Cray Inc. Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system
US8307194B1 (en) 2003-08-18 2012-11-06 Cray Inc. Relaxed memory consistency model
US7421565B1 (en) 2003-08-18 2008-09-02 Cray Inc. Method and apparatus for indirectly addressed vector load-add -store across multi-processors
US7437521B1 (en) * 2003-08-18 2008-10-14 Cray Inc. Multistream processing memory-and barrier-synchronization method and apparatus
US7543133B1 (en) 2003-08-18 2009-06-02 Cray Inc. Latency tolerant distributed shared memory multiprocessor computer
US7519771B1 (en) 2003-08-18 2009-04-14 Cray Inc. System and method for processing memory instructions using a forced order queue
US8214601B2 (en) * 2004-07-30 2012-07-03 Hewlett-Packard Development Company, L.P. Purging without write-back of cache lines containing spent data
US7404118B1 (en) * 2004-09-02 2008-07-22 Sun Microsystems, Inc. Memory error analysis for determining potentially faulty memory components
US7757052B2 (en) * 2005-01-05 2010-07-13 International Business Machines Corporation Apparatus, system, and method for optimizing recall of logical volumes in a virtual tape server
US7478769B1 (en) 2005-03-09 2009-01-20 Cray Inc. Method and apparatus for cooling electronic components
US10031848B2 (en) * 2005-06-14 2018-07-24 Intel Corporation Method and apparatus for improving snooping performance in a multi-core multi-processor
US7865644B2 (en) * 2007-10-30 2011-01-04 International Business Machines Corporation Method and apparatus for attaching multiple slave devices to a single bus controller interface while supporting command pipelining
GB2484088B (en) * 2010-09-28 2019-08-07 Advanced Risc Mach Ltd Coherency control with writeback ordering
US8219684B1 (en) * 2011-11-02 2012-07-10 Google Inc. Redundant data requests with cancellation
US9292569B2 (en) 2012-10-02 2016-03-22 Oracle International Corporation Semi-join acceleration
US9679084B2 (en) * 2013-03-14 2017-06-13 Oracle International Corporation Memory sharing across distributed nodes
US9898414B2 (en) 2014-03-28 2018-02-20 Oracle International Corporation Memory corruption detection support for distributed shared memory applications
US10235176B2 (en) * 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10747298B2 (en) 2017-11-29 2020-08-18 Advanced Micro Devices, Inc. Dynamic interrupt rate control in computing system
US10503648B2 (en) 2017-12-12 2019-12-10 Advanced Micro Devices, Inc. Cache to cache data transfer acceleration techniques
US10452547B2 (en) 2017-12-29 2019-10-22 Oracle International Corporation Fault-tolerant cache coherence over a lossy network
US10467139B2 (en) 2017-12-29 2019-11-05 Oracle International Corporation Fault-tolerant cache coherence over a lossy network
WO2019152792A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
EP3746925A1 (en) 2018-02-02 2020-12-09 The Charles Stark Draper Laboratory Inc. Systems and methods for policy execution processing
EP3788488A1 (en) 2018-04-30 2021-03-10 Dover Microsystems, Inc. Systems and methods for checking safety properties
KR20200008759A (ko) * 2018-07-17 2020-01-29 에스케이하이닉스 주식회사 캐시 메모리 및 이를 포함하는 메모리 시스템, 캐시 메모리의 축출 방법
US11210246B2 (en) 2018-08-24 2021-12-28 Advanced Micro Devices, Inc. Probe interrupt delivery
TW202022679A (zh) 2018-11-06 2020-06-16 美商多佛微系統公司 用於停滯主處理器的系統和方法
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection

Family Cites Families (22)

* 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
FI86484C (fi) * 1984-04-27 1992-08-25 Honeywell Inf Systems Styrorgan i en digital datamaskin.
JPH065524B2 (ja) * 1987-11-18 1994-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーション 記憶装置管理方法
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
US5119485A (en) * 1989-05-15 1992-06-02 Motorola, Inc. Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation
EP0468831B1 (en) * 1990-06-29 1997-10-15 Digital Equipment Corporation Bus protocol for write-back cache processor
JPH04318654A (ja) * 1991-02-13 1992-11-10 Hewlett Packard Co <Hp> マイクロプロセッサへの割り込みのリダイレクションシステム
JP3180362B2 (ja) * 1991-04-04 2001-06-25 日本電気株式会社 情報処理装置
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
JPH0512117A (ja) * 1991-07-04 1993-01-22 Toshiba Corp キヤツシユ一致化方式
US5530835A (en) * 1991-09-18 1996-06-25 Ncr Corporation Computer memory data merging technique for computers with write-back caches
DE69230428T2 (de) * 1991-09-27 2000-08-03 Sun Microsystems Inc Verklemmungserkennung und Maskierung enthaltende Busarbitrierungsarchitektur
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
JP2809961B2 (ja) * 1993-03-02 1998-10-15 株式会社東芝 マルチプロセッサ
JPH07105031A (ja) * 1993-09-20 1995-04-21 Internatl Business Mach Corp <Ibm> 多重プロセッサ・コンピュータ・システム内で割込み情報を伝えるための方法および装置
US5537575A (en) * 1994-06-30 1996-07-16 Foley; Denis System for handling cache memory victim data which transfers data from cache to the interface while CPU performs a cache lookup using cache status information
US5655100A (en) * 1995-03-31 1997-08-05 Sun Microsystems, Inc. Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007535057A (ja) * 2004-04-26 2007-11-29 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 集積回路及びトランザクション発信方法
JP4740234B2 (ja) * 2004-04-26 2011-08-03 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 集積回路及びトランザクション発信方法
JP2007533014A (ja) * 2004-06-03 2007-11-15 株式会社ソニー・コンピュータエンタテインメント ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法
JP2006048406A (ja) * 2004-08-05 2006-02-16 Fujitsu Ltd メモリシステム制御装置およびメモリシステム制御方法

Also Published As

Publication number Publication date
US5684977A (en) 1997-11-04
EP0735484A1 (en) 1996-10-02

Similar Documents

Publication Publication Date Title
JPH0954758A (ja) パケット交換型キャッシュコヒーレントマルチプロセッサシステム用書戻し取消し処理システム
US5905998A (en) Transaction activation processor for controlling memory transaction processing in a packet switched cache coherent multiprocessor system
EP0735486B1 (en) Packet switched cache coherent multiprocessor system
US5581729A (en) Parallelized coherent read and writeback transaction processing system for use in a packet switched cache coherent multiprocessor system
US5657472A (en) Memory transaction execution system and method for multiprocessor system having independent parallel transaction queues associated with each processor
EP0735487B1 (en) A fast, dual ported cache controller for data processors in a packet switched cache coherent multiprocessor system
US6366984B1 (en) Write combining buffer that supports snoop request
US6751720B2 (en) Method and system for detecting and resolving virtual address synonyms in a two-level cache hierarchy
US6622217B2 (en) Cache coherence protocol engine system and method for processing memory transaction in distinct address subsets during interleaved time periods in a multiprocessor system
US6925537B2 (en) Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants
JP2022534892A (ja) 書き込みミスエントリのドレインをサポートする犠牲キャッシュ
US6675265B2 (en) Multiprocessor cache coherence system and method in which processor nodes and input/output nodes are equal participants
US6751710B2 (en) Scalable multiprocessor system and cache coherence method
US7389389B2 (en) System and method for limited fanout daisy chaining of cache invalidation requests in a shared-memory multiprocessor system
US6738868B2 (en) System for minimizing directory information in scalable multiprocessor systems with logically independent input/output nodes
US6081874A (en) Non-uniform memory access (NUMA) data processing system that speculatively issues requests on a node interconnect
US5797026A (en) Method and apparatus for self-snooping a bus during a boundary transaction
EP0834816A2 (en) Microprocessor architecture capable of supporting multiple heterogenous processors
US8375171B2 (en) System and method for providing L2 cache conflict avoidance
US11321248B2 (en) Multiple-requestor memory access pipeline and arbiter
US6996645B1 (en) Method and apparatus for spawning multiple requests from a single entry of a queue
JP2000250883A (ja) 不均等メモリ・アクセス・システムにおいてトランザクションのキャンセルによるデータ損失を避けるための方法およびシステム
EP0981092A2 (en) Non-uniform memory access (NUMA) data processing system that decreases latency by expediting rerun requests
US7421545B1 (en) Method and apparatus for multiple sequence access to single entry queue
US11556472B1 (en) Data processing system having masters that adapt to agents with differing retry behaviors