JP2001503889A - 複数のシステムバスを有するコンピュータシステムにおいてメモリコヒーレンスを維持するためのシステムおよび方法 - Google Patents

複数のシステムバスを有するコンピュータシステムにおいてメモリコヒーレンスを維持するためのシステムおよび方法

Info

Publication number
JP2001503889A
JP2001503889A JP51390898A JP51390898A JP2001503889A JP 2001503889 A JP2001503889 A JP 2001503889A JP 51390898 A JP51390898 A JP 51390898A JP 51390898 A JP51390898 A JP 51390898A JP 2001503889 A JP2001503889 A JP 2001503889A
Authority
JP
Japan
Prior art keywords
bus
coherence
memory
cache
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP51390898A
Other languages
English (en)
Other versions
JP4316016B2 (ja
JP2001503889A5 (ja
Inventor
ヴォグト、ピート、ディー.
ホワイト、ジョージ、ピー.
チャン、スティーヴン、エス.
Original Assignee
コロラリー、インコーポレイテッド
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 コロラリー、インコーポレイテッド filed Critical コロラリー、インコーポレイテッド
Publication of JP2001503889A publication Critical patent/JP2001503889A/ja
Publication of JP2001503889A5 publication Critical patent/JP2001503889A5/ja
Application granted granted Critical
Publication of JP4316016B2 publication Critical patent/JP4316016B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

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

Landscapes

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

Abstract

(57)【要約】 複数のシステムバス(1、2)およびI/Oバス(3)を共有の主記憶装置(132)に相互接続し、システム内での待ち時間および全帯域幅に対する影響を最小限に抑えつつキャッシュコヒーレンスを効果的に維持するキャッシュコヒーレントなマルチバス多重処理システムおよび方法。このシステムは、少量のクロスバストラフィックでキャッシュメモリコヒーレンスを維持するような形でバス対バス通信をコーディネートするコヒーレンスフィルタ(200)を提供する。また、このシステムは、複数のバスを相互接続するメモリセルのマルチポートプールを提供する。

Description

【発明の詳細な説明】 複数のシステムバスを有するコンピュータシステムにおいて メモリコヒーレンスを維持するためのシステムおよび方法 発明の背景 1つしか中央処理装置を持たないコンピュータのパフォーマンスを改善するた めに、コンピュータ設計者らは多くの中央処理装置を備えたコンピュータを開発 している。多くの場合、このような多重処理コンピュータの中央処理装置は、1 本の共通バスを介して互いに接続され、システムの主記憶装置にも接続されてい る。しかしながら、近年になって中央処理装置のパフォーマンスが改善され、バ スパフォーマンステクノロジよりも高速化している。内部の中央処理装置のパフ ォーマンスの方が高速になることで、さらに外側の帯域幅を使わなければならな くなる。すなわち、共通バスで送信されるデータ量を多くして、中央処理パフォ ーマンスの向上分をカバーしなければならない。この結果、中央処理装置をサポ ートするのに必要な帯域幅と共通バスの全帯域幅とによつて、共通バスに接続で きる中央処理装置の数が制約されてしまうことになる。 多重処理システムにおける各プロセッサによって必要とされるバス帯域幅を減 らす方法の1つは、各プロセッサと共通バスとの間にキャッシュユニットを設け ることである。キャッシュユニットに接続されたプロセッサにデータをいったん ロードしてしまえば、プロセッサは共通バスを使用しなくてもキャッシュユニッ ト内にあるデータにアクセスすることができる。通常、プロセッサがそのキャッ シュユニットからデータを取得すれば、共通バスの限られた帯域幅を使って送信 されるデータ量は少なくなる。 多くの場合、プロセッサは特定のデータ値を何度も変更するため、データ 値が変更されるたびにそのデータ値を主記憶装置に書き戻す必要が生じる。しか しながら、変更後のデータ値を主記憶装置に書き戻すことで、プロセッサをサポ ートするのに必要なバス帯域幅の量は多くなる。したがって、書込み動作回数を 減らすことができれば、プロセッサをサポートするために必要なバス帯域幅も狭 くすることができる。 書込み動作回数を減らす一種のキャッシュユニットは、「ライトバック」キャ ッシュと呼ばれている。ライトバックキャッシュは変更後のデータ値を一時的に 格納することで、データ値を主記憶装置に書き戻すのに必要なバストランザクシ ョン数を削減している。例えば、プロセッサは、データを主記憶装置に書き戻す ことなくライトバックキャッシュ内のデータ値を何度も変更することができる。 ライトバックキャッシュによって、変更後のデータを最終的に主記憶装置に書き 戻せばよいことになる。 ライトバックキャッシュは多重処理システムで必要とされるバスの全帯域幅の 削減には極めて有効なものとなり得るが、残念なことにライトバックキャッシュ を用いるとメモリコヒーレンスの問題が生じる。例えば、各ライトバックキャッ シュはそれぞれ独自にデータ値のコピーを含む。このような状況で、2つ以上の プロセッサが独立にデータ値を変更すると、2つ以上のライトバックキャッシュ に同一のデータ値に対して異なるバージョンが存在してしまう可能性がある。こ れによって誤った動作が発生することもあり、結果として、全てのプロセッサが 常に全てのデータ値を一貫して見ている形を必須とするメカニズムがでてくる。 例えば、プロセッサがデータ値を変更すると、変更後のデータ値は主記憶装置 に書き戻されるまではライトバックキャッシュ内に存在する。この例では、ライ トバックキャッシュが変更後のデータ値を主記憶装置に書き戻すまで、主記憶装 置および他のキャッシュユニットではデータ値の古いコピーを持っている。しか しながら、データの完全性を維持するためには、他のプロ セッサでそのデータ値を要求する際には古いデータ値ではなく最新バージョンの データ値を入手できなければならない。 全てのプロセッサが全てのデータ値を一貫して見るように保証するプロセスは 、キャッシュコヒーレンスと呼ばれている。キャッシュコヒーレンスを達成する ための評判が良く成功している方法の組み合わせの1つでは、「スヌーピング動 作」と呼ばれるものに依存している。スヌーピング動作には様々なものが存在す るが、基本的に、キャッシュユニットにおけるスヌーピング動作では、共通バス でのバストランザクションを監視している。スヌーピング動作は、どのトランザ クションがキャッシュユニットの中身に影響するか、あるいはどのトランザクシ ョンがキャッシュユニット内に存在する変更後のデータと関連しているかを識別 する。一般に、スヌーピング動作を行うには、全てのプロセッサおよびこれに接 続されたキャッシュユニットが共通バスを共有している必要がある。共通バスを 共有することで、キャッシュユニットはバストランザクションを監視して、特定 のキャッシュユニットが変更後のデータ値を含む場合に潜在的にバストランザク ションを妨害することができる。 キャッシュコヒーレンス方法では一般に、キャッシュユニット内の特定のデー タ値が、無効、変更、共有、排他所有などステートか否かを示すコヒーレンスス テータス情報も利用している。多くのキャッシュコヒーレンス方法が存在するが 、一般的な2つのバージョンとしてMESIキャッシュコヒーレンスプロトコル およびMOESIキャッシュコヒーレンスプロトコルが挙げられる。MESIの 頭文字は、変更(Modified)、排他(Exclusive)、共有(S hared)および無効(Invalid)ステータスを示し、MOESIの頭 文字は、変更(Modified)、所有(Owned)、排他(Exclus ive)、共有(Shared)および無効(Invalid)ステートを意味 する。 ステートの意味は実施の仕方によって様々である。概して、変更ステートは、 通常は特定のキャッシュユニットに変更された特定のデータ値があることを意昧 する。排他ステートおよび所有ステートは、通常は特定のキャッシュユニットが データ値のコピーを変更できることを意味する。共有ステートは通常、データ値 のコピーが異なるキャッシュユニットに存在することを意昧し、無効ステートは キャッシュユニット内のデータ値が無効であることを意味する。 動作時、キャッシュユニットはバスの動作をスヌープし、コヒーレンスステー タス情報を使用してキャッシュコヒーレンスを保証する。例えば、第1のキャッ シュユニットを有する第1のプロセッサが特定のデータ値を得ることを望んでい ると仮定する。さらに、第2のキャッシュユニットを有する第2のプロセッサが 、そのデータ値の変更後のバージョンを有していると仮定する(コヒーレンスス テータス情報は第2のキャッシュユニット内のデータ値が変更ステートであるこ とを示している)。 この例では、第1のプロセッサがリードバスリクエストを開始してデータ値を 取得する。第2のキャッシュユニットは、リードバスリクエストをスヌープし、 これがデータ値の変更後のバージョンを含むか否かを判断する。次に、第2のキ ャッシュユニットが介在し、変更後のデータ値を共通バス経由で第1のプロセッ サに送信する。システムによって、変更後のデータ値を同時に主記憶装置に書き 込むことができる場合とそうでない場合とがある。 もう1つの例では、第1のプロセッサが特定のデータ値を独占所有することを 望んでいると仮定する。さらに、第2のキャッシュユニットが、データ値の未変 更共有のコピーを持っていると仮定する(コヒーレンスステータス情報は、第2 のキャッシュユニット内のデータ値が共有ステートであることを示している)。 この例では、第1のプロセッサがリードバスリクエストを開始し、データの独占 使用を要求する。 第2のキャッシュユニットはリードバスリクエストをスヌープし、データ値の 共有のコピーが含まれていると判断する。次に、第2のキャッシュユニットは、 データ値のコヒーレンスステータス情報を無効ステートに変えることでその共有 のデータ値を無効にする。データ値のコヒーレンスステータスを無効ステートに すると、第2のキャッシュユニット内のデータ値は無効になる。次に、第1のプ ロセッサがリードバスリクエストを完了し、独占使用するために主記憶装置から データ値のコピーを取得する。 スヌーピング動作では、1本の共通バスを有する多重処理システムのキャッシ ュコヒーレンスが維持されるが、さらに強力なコンピュータでは、各々主記憶装 置と複数のプロセッサとを相互接続するバスが2本以上含まれている。しかしな がら、共通バスではサポートできるプロセッサの数の制約が次第に大きくなつて きているため、マルチバスシステムで所望のパフォーマンスレベルを達成する必 要が生じることがある。複数のバスに関連した問題は、1つのバス上のプロセッ サでは、他のバス上のプロセッサによって開始されたトランザクションを監視で きないということである。この結果、スヌーピング動作によってマルチバスコン ピュータでのメモリコヒーレンスを維持することはできなくなる。 マルチバスシステムにおいてキャッシュコヒーレンスを維持する方法の1つに 、各バスが開始したバストランザクションを他の全てのバスに同報通信するもの がある。残念なことに、この手法では、各バスに送信される全てのバスのバス帯 域幅負荷が一緒になってしまう。当然ながら、これによってシステムパフォーマ ンスは大幅に落ち、複数のバスを用いることによる利点はなくなってしまう。 第2の方法は、いわゆるディレクトリベースのキャッシュコヒーレンス方法と 呼ばれるものに基づいている。IEEE Scaleable Coheren t Interconnectがマルチバスディレクトリベース のキャッシュコヒーレンスシステムの一例である。ディレクトリスキームでは、 プロセッサはバストランザクションのスヌープを行わない。代わりに、主記憶装 置のサブシステムが実データと一緒に付加情報を格納することによってメモリコ ヒーレンスを維持する。 主記憶装置サブシステム内の付加情報は一般に、1)どのプロセッサ(単数又 は複数)がデータ値を取得したかということと、2)データ値のコヒーレンスス テータスとを示している。例えば、2つ以上のプロセッサが同一のデータ値を共 有していることを付加情報によって示すことができる。さらに他の例では、特定 のデータ値を変更するのに適したプロセッサは1つしかないことを付加情報によ って示すことができる。 プロセッサがデータ値を要求すると、主記憶装置サブシステムはそれが最新バ ージョンのデータ値であるか否かを判断する。最新バージョンではない場合には 、主記憶装置サブシステムは、最新のデータ値を持っているプロセッサから要求 を出しているプロセッサにこの最新のデータ値を転送する。あるいは、主記憶装 置は要求を出しているプロセッサに対して他のプロセッサのうちどれが最新のデ ータ値を持っているか示すこともできる。 各データ値の最新バージョンの位置に関する情報が主記憶装置サブシステムに よって維持されているため、プロセッサではバストランザクションを「スヌープ 」する必要がない。しかしながら、このようなディレクトリを維持することで、 各データ値について主記憶装置に保持しなければならない追加情報が出てくるた め、システムに多額なコストが上乗せになる可能性がある。さらに、各データ値 について主記憶装置内にディレクトリを維持することで、要求されたデータの位 置を見極め、要求を出しているプロセッサに対してこれを転送するのに必要な時 間が原因でシステムパフォーマンスが落ちる可能性もある。 ディレクトリベースのシステムに代わるものの1つが、実際にはキャッシ ュユニットに格納されているデータ値に関連するコヒーレンスステータス情報を 格納するバス相互接続である。このように、(ディレクトリベースのスキームの ように)主記憶装置も比例的に増大させる形の格納方法をとるのではなく、サイ ズがかなり小さいキャッシュユニットの組み合わせにのみ格納量を関連させる。 しかしながら、この方法では、各キャッシュユニット内の全てのデータ値に関連 するコヒーレンスステータス情報の複製をマルチバスシステムに格納する必要が ある。 例えば、サンマイクロシステムのUltraSparcシステムでは、複数の バスを相互接続するためのバススイッチを利用している。このシステムでは、各 バスが内部キャッシュユニットを有するプロセッサと通信を行う。バススイッチ は、キャッシュユニット内の全てのデータ値に関連したコヒーレンスステータス 情報の複製を維持する。UltraSparcシステムでは、UltraSpa rcシステムのプロセッサがそのデータ値が置き換えられたかに関する正確な情 報を提供し、外部キャッシュタグを維持できるように構成されているため、バス スイッチでコヒーレンスステータス情報の複製を維持することができる。 しかしながら、このようなバススイッチは、多くの既成プロセッサでは実現す ることができない。これらのプロセッサは正確なキャッシュデータ置き換え情報 を出力しないためである。例えば、多くの従来のプロセッサは正確なコヒーレン スステータス情報を自己の内部キャッシュユニット内でのみ維持する。このため 、その他の装置では内部キャッシュユニットからデータ値が削除されるのがいつ であるかを判断することはできない。内部キャッシュユニット内のコヒーレンス ステータス情報についての正確な情報がなければ、バススイッチはコヒーレンス ステータス情報の複製を維持することができない。発明の開示 本発明によれば、シングルバスシステムのプロセッサの全パフォーマンス制限 を効率的に増やすキャッシュコヒーレントなマルチバスシステムが得られる。本 発明では、マルチバス式多重処理システムは、1)複数のシステムバスおよび複 数のI/O装置を共有の主記憶装置に相互接続し、2)システム内での待ち時間 および全帯域幅に対する影響を最小限に抑えつつキャッシュコヒーレンスを効果 的に維持する、待ち時間が少なく帯域幅の広いシステムを必要とすると考えてい る。本発明では、クロスバストラフィックにおけるオーバーヘッドを減らしなが らキャッシュのメモリコヒーレンスを維持するような形でバス対バスの通信のコ ーディネートを可能にする「コヒーレンスフィルタ」を用いて上記の問題に取り 組む。 本発明の好ましい実施の形態では、システムバス、I/Oバスおよび記憶素子 をマルチポートバススイッチ経由で接続する。このバススイッチは、あらゆるシ ステムバスまたはI/Oバスとあらゆるメモリユニットとを接続するだけでなく 、クロスバストラフィックもハンドリングする。また、好ましいバススイッチは 、バストランザクションに応答するのに必要な1つまたは複数の動作を判断する バスインタフェース論理を含む。しかしながら、本発明はこのようなマルチポー トバススイッチに限定されるものではなく、異なるデータパス用に別々のバスブ リッジが存在する場合など、様々な他のバス相互接続においても利用可能である 。 マルチバス多重処理システムにおけるキャッシュコヒーレンスを保証するため に、キャッシュをサポートする各バスが割り当てられたコヒーレンスフィルタを 有する。各コヒーレンスフィルタは、タグコントローラと、サイクルエンコーダ と、ルールテーブルとを含む。また、各コヒーレンスフィルタはタグメモリに接 続されている。一般的に、各タグコントローラは全てのタグメモリとの間をイン タフェースする。各サイクルエンコーダは、どのよ うな種類のバストランザクションがサイクルエンコーダの割り当てられたバスに おいて発生しているかを判断し、キャッシュコヒーレンスを維持するために必要 なバストランザクションがどれであるのかの判断は各ルールテーブルによって行 われる。 ここで、タグメモリに注目すると、各タグメモリは、l)タグメモリの割リ当 てられたバスに接続されたキャッシュユニット内に位置しているデータ値のアド レスと、2)データ値に関連したキャッシュコヒーレンスステータスのレコード を維持する。周知のように、主記憶装置内の各データ値は、対応するメモリアド レスによって識別される。好ましい実施の形態では、タグメモリはデータ値のア ドレスを格納し、実データ値ではなくこのアドレスによってデータ値を識別する 。データ値のアドレスを格納することに加え、好ましいタグメモリはデータ値の アドレスに関連したコヒーレンスステータス情報も格納する。 例えば、第1のコヒーレンスフィルタおよび第1のタグメモリが第1のバスに 割り当てられていると仮定する。さらに、第1のバス上の第1のプロセッサが主 記憶装置からのデータ値を要求すると仮定する。第1のコヒーレンスフィルタは 、第1のタグメモリ内のメモリアドレスのレコードを維持する。さらに、第1の コヒーレンスフィルタは、第1のタグメモリ内のメモリアドレスに関連したコヒ ーレンスステータス情報を格納する。 メモリトランザクションにおいてアクセスされるデータ量はシステムごとに異 なる。従来の大半のシステムでは、プロセッサがメモリリードトランザクション を実施する際に、このプロセッサが自プロセッサの内部キャッシュメモリの一部 を埋めるのに十分なメモリにアクセスする。通常、内部キャッシュメモリはいわ ゆるキャッシュラインと呼ばれている部分に複数のデータ値を格納する。 周知のように、従来のコンピュータ処理システムのメモリは、8ビットの 量(バイト)、16ビットの量(ワード)および32ビットの量(ダブルワード )に分割されている。現在の多くの32ビットプロセッサでは、主記憶装置はダ ブルワード(32ビット)の境界に編成されている。大半の32ビットプロセッ サでは、各キャッシュラインは複数のダブルワードを保持することができる。 一般に、プロセッサがデータ値を要求すると、このプロセッサは全体のキャッ シュラインを埋めるのに十分なデータを取得する。例えば、Pentium P roプロセッサでは、各内部データ値の大きさは様々であるが、この大きさが6 4ビットを超えることはない。しかしながら、Pentium Proのキャッ シュラインでは32バイトのデータ(256ビット)を保持している。Pent ium Proプロセッサで主記憶装置からデータ値を取得したい場合、そのキ ャッシュラインのうちの1本を埋めるのに必要な8つのデータ値(256ビット )を取得するのが普通である。 従来のシステムでは、各キャッシュラインはキャッシュラインアドレスによっ て識別されている。例えば、Pentium Proシステムでは、キャッシュ ラインはキャッシュライン内の最下位のデータ値のメモリアドレスと同一のキャ ッシュラインアドレスを有する。しかしながら、各キャッシュラインは32バイ トのデータを含むため、各キャッシュラインのキャッシュラインアドレスの方が 短く、下位5つのアドレスビットが含まれない。好ましい実施の形態では、特定 のバスに割り当てられた各タグメモリがキャッシュラインアドレスを格納する。 キャッシュラインアドレスを格納することに加え、各タグメモリはキャッシュ ラインアドレスに関連したコヒーレンスステータスも格納する。コヒーレンスス テータスは、キャッシュユニットにおけるキャッシュラインのステータスに関す るものである。好ましい実施の形態では、コヒーレンスステータスは3種類のコ ヒーレンスステートすなわち、無効ステート、共有ステー トまたは所有ステートを含む。 無効ステートは、キャッシュラインが無効であり、キャッシュラインを格納す るキャッシュエントリが空で新たなキャッシュラインを格納できることを意味す る。共有ステートは、プロセッサがキャッシュラインのコピーを持っているが、 変更権はないことを意味する。共有キャッシュラインは、例えば、変更されない プログラム指示または殆どの場合が読み込みだけであるデータ項目などであるこ とが多い。所有ステートは、キャッシュラインを取得したプロセッサによってこ のキャッシュラインを変更可能であることを意味する。 しかしながら、キャッシュラインのコヒーレンスステータスは、無効、共有お よび所有プロトコルに限定されるものではないことは、当業者であれば明らかで あろう。実際に、当業者であれば、変更(Modified)、排他(Excl usive)、共有(Shared)および無効(Invalid)(MESI )プロトコル、変更(Modified)、所有(Owned)、排他(Exc lusive)、共有(Shared)および無効(Invalid)(MOE SI)プロトコル、変更(Modified)、共有(Shared)、無効( Invalid)(MSI)プロトコル、二ステート無効および所有プロトコル 、Berkeleyプロトコル、イリノイ大学コヒーレンスプロトコル、Dig ital Equipment’s Fireflyプロトコル、Xerox Dragonプロトコルなどの様々なコヒーレンスプロトコルでコヒーレンスス テータスを実施できることは理解できよう。好ましい実施の形態では、無効、共 有および所有を利用する。これは、MESIプロトコルを利用しているPent ium Proプロセッサと効率的にインタフェースする機能を有しているため である。 従来の多くのプロセッサでは、プロセッサは、内部キャッシュユニット内に格 納されたキャッシュラインに関しての正確なコヒーレンスステータス 情報を出力しない内部キャッシュユニットを有する。例えば、内部キャッシュユ ニットは、変更されていないキャッシュラインをそのキャッシュラインが放棄さ れたことを信号通知せずにこれを放棄することができる。もう1つの例では、内 部キャッシュユニットは、キャッシュユニットが変更を行わない変更特権を有す るキャッシュラインを取得できる。この例では、キャッシュユニットは、キャッ シュラインが放棄されたことを信号通知せずにそのキャッシュラインを放棄する ことができる。この結果、キャッシュユニットを監視しているデバイスは、キャ ッシュラインが実際には放棄されたものである場合にキャッシュユニットはそれ をキャッシュラインの変更されたコピーであると誤解する。しかしながら、本発 明の好ましい実施の形態では、各タグメモリを独自に適合させ、現在のコヒーレ ンスステータス情報を出力しない内部キャッシュユニット用のキャッシュコヒー レンスを保証する。 本発明の重要な態様は、内部キャッシュユニットに現在保持されている可能性 があるキャッシュラインアドレスの上位集合を維持することによって、各タグメ モリがキャッシュコヒーレンスを保証することである。このように、キャッシュ ユニットが実際に放棄されたキャッシュラインを有する場合に、タグメモリにお けるキャッシュラインアドレスの上位集合によってキャッシュユニット内の特定 のキャッシュラインが共有ステートであることを示すことができる。他の場合に おいては、キャッシュユニットが実際に主記憶装置に書き戻されたキャッシュラ インを有する場合に、タグメモリにおけるキャッシュラインアドレスの上位集合 によってキャッシュユニット内の特定のキャッシュラインが変更されたステート であることを示すことができる。 キャッシュラインアドレスの上位集合を維持するために、好ましいコヒーレン スフィルタではいわゆるインクルージョンルールと呼ばれているものを利用して いる。ィンクルージョンルールは、特定のバスに接続されたキャ ッシュユニットに格納されたキャッシュラインアドレスが常にそのバスに割り当 てられたタグメモリのキャッシュラインアドレスの上位集合であることを保証す る。各コヒーレンスフィルタは自己と接続されたバスによってアクセスされる全 てのキャッシュラインを監視しているため、アクセスされた各キャッシュライン に関連したアドレスは、バスに割り当てられたタグメモリ内に維持される。キャ ッシュラインアドレスを複数のタグメモリのうちの1つから削除しなければなら ない場合、インクルージョンルールでは関連したキャッシュユニットに対して自 己のキャッシュメモリからそのキャッシュラインを削除するように指示をする。 例えば、タグメモリが新たなキャッシュラインアドレスを保持するだけのメモ リ容量を持たない場合、タグメモリから既存のキャッシュラインアドレス(古い キャッシュラインアドレス)のうちの1つを追い出してタグメモリに新たなキャ ッシュラインアドレス用の空間を作成しなければならない。古いキャッシュライ ンアドレスが無効ステートであれば、バスに接続されたキャッシュユニットは、 古いキャッシュアドレス)に関連したキャッシュラインをもう使用してはおらず 、タグメモリに割り当てられたコヒーレンスフィルタは単に古いキャッシュライ ンアドレスを新たなキャッシュラインアドレスで置き換えるのみである。 しかしながら、古いキャッシュラインアドレスが共有または所有ステートであ る場合には、コヒーレンスフィルタはキャッシュユニットが古いキャッシュライ ンアドレスを無効にするまでは古いキャッシュラインアドレスをタグメモリから 追い出すことができない。上述したように、好ましいタグメモリはキャッシュラ インアドレスの上位集合を維持するため、キャッシュユニットにおいて古いキャ ッシュラインアドレスをまず無効にし、その後であれば古いキャッシュラインア ドレスを新たなキャッシュラインアドレスで置き換えることができる。 コヒーレンスフィルタは、無効バストランザクションを行ってキャッシュユニ ット内の古いキャッシュラインアドレスを無効にする。無効バストランザクショ ンは、バスに接続されたキャッシュユニットに最初に古いキャッシュラインアド レスおよびこれに接続されたキャッシュラインを無効にするように指示する。 例えば、第1のキャッシュユニットを有する第1のプロセッサおよび第2のキ ャッシュユニットを有する第2のプロセッサが、割り当てられたコヒーレンスフ ィルタおよびタグメモリを有する第1のバスに接続されていると仮定する。さら に、第1のキャッシュユニットが共有ステートで第1のキャッシュラインを含む と仮定する。この例では、タグメモリは第1のキャッシュラインアドレスおよび 共有ステータス情報を含む。また、第2のプロセッサが、第2のキャッシュライ ンを要求するリードバストランザクションを開始すると仮定する。最後に、タグ メモリには第2のキャッシュラインアドレスにあてるだけのメモリ容量がないと 仮定する。 この例では、コヒーレンスフィルタは第1のキャッシュラインアドレスを追い 出して第2のキャッシュラインアドレス用の空間を確保する必要がある。しかし ながら、コヒーレンスフィルタが第1のキャッシュラインアドレスを追い出すこ とができるようになる前に、コヒーレンスフィルタは第1のキャッシュユニット 内にある第1のキャッシュラインアドレスを無効にするバストランザクションを 行わなければならない。第1のキャッシュアドレス線を無効にするために、コヒ ーレンスフィルタは無効バストランザクションを行い、第1のキャッシュユニッ トに対して第1のキャッシュラインアドレスに関連したキャッシュラインを無効 にするよう指示をする。 無効バストランザクションを行っている間、コヒーレンスフィルタは第2のキ ャッシュラインアドレスに対するリードバストランザクションを一時停止する。 第1のキャッシュラインアドレスが共有ステートにある(第1の キャッシュラインは変更されていない)ため、第1のキャッシュユニットは無効 バストランザクションに応答し、第1のキャッシュラインを無効にする。無効バ ストランザクションの終了後、コヒーレンスフィルタはタグメモリ内の第1のキ ャッシュラインアドレスを第2のキャッシュラインアドレスと置き換える。 しかしながら、場合によっては、第1のキャッシュユニットによって第1のキ ャッシュラインを変更(すなわち、第1のキャッシュラインが所有ステートにあ る)されている可能性もある。第1のキャッシュラインが所有ステートにある場 合、第1のコヒーレンスフィルタはここでも無効バストランザクションを行い、 第1のキャッシュラインを無効にする。しかしながら、第1のキャッシュユニッ トが第1のキャッシュラインを変更していた場合、第1のキャッシュユニットは 、変更された第1のキャッシュラインを主記憶装置に書き戻すライトバストラン ザクションを行って無効バストランザクションに応答する。 変更後の第1のキャッシュラインを主記憶装置に書き戻した後、第1のキャッ シュユニットが第1のキャッシュラインを無効にする。次にコヒーレンスフィル タがタグメモリ内の第1のキャッシュラインアドレスを第2のキャッシュライン アドレスと置き換える。このため、場合によっては、キャッシュラインアドレス の上位集合をタグメモリ内に維持するためにキャッシュユニットで変更後のデー タを主記憶装置に書き戻した後で、タグメモリ内のキャッシュラインを無効にし なければならないこともある。 好ましい実施の形態では、各コヒーレンスフィルタがダイレクトマッピング手 法を用いてタグメモリにキャッシュラインアドレスを格納する。ダイレクトマッ ピング手法は、各キャッシュラインアドレスをタグメモリ内の特定のタグエント リにマッピングするよう指定する。好ましい実施の形態ではダイレクトマッピン グ手法を用いるが、様々な異なる手法を用いてタグメモリ 内にキャッシュラインアドレスを編成できることは当業者であれば理解できよう 。例えば、ダイレクトマッピング手法の代わりに、タグメモリで完全アソシアテ ィブ方式のマッピング手法を用いることもできる。完全アソシアティブ方式のシ ステムでは、任意のキャッシュラインアドレスを任意のタグエントリに存在させ ることができる。他の実施の形態では、各キャッシュラインアドレスを格納する ことができるのは2つの異なるタグエントリのうち1つのみである(2ウェイセ ットアソシアティブ)か、または異なる4つのタグエントリのうちの1つ(4ウ ェイセットアソシアティブ)などである。 ここで、好ましい実施の形態のダイレクトマッピング手法に注目すると、各キ ャッシュラインアドレスを特定のタグエントリの識別用インデックスとして用い る。好ましい実施の形態では、1つのタグメモリにおけるエントリ数がいわゆる タグページと呼ばれているものの大きさを規定する。好ましくは、各システムバ スに接続されたタグメモリのタグページサイズは同一である。タグページサイズ は、プロセッサのキャッシュ内の全キャッシュメモリ量と関連している。さらに 、一般にはI/Oブリッジに接続されているキャッシュユニットが小さいため、 I/Oバスに接続されたタグメモリの方が小さい。 タグページは主記憶装置のページと混同されてはならない。従来技術において 周知のように、コンピュータの物理的なメモリアドレス空間はメモリページと呼 ばれる複数のセクションに概念的に編成可能である。この場合、各メモリページ が複数のキャッシュラインを含む。メモリページは処理システムによって定義さ れ、タグページからは独立している。 好ましい実施の形態では、キャッシュラインアドレスは、1)キャッシュライ ンアドレスを含むタグページおよび2)キャッシュラインアドレスのタグページ 内での位置を識別する。特に、キャッシュラインアドレスの上位側のビットによ ってタグページを識別し、下位側のビットによってタグページ 内のキャッシュラインアドレスの位置を識別する。 一般に、下位ビットによってキャッシュラインアドレスのタグページ内での位 置を識別するため、下位ビットはインデックスと呼ばれる。例えば、第1のタグ ページ内の第1のキャッシュラインアドレスについてみると、上位アドレスビッ トによって第1のタグページが識別され、下位アドレスビットによって第1のタ グページ内の第1のキャッシュラインアドレス位置が識別される。 好ましい実施の形態では、コヒーレンスフィルタ内のタグコントローラが、キ ャッシュラインアドレスをタグメモリ内に直接マッピングする。例えば、第1の バスに接続されたプロセッサがバストランザクションを開始して特定のキャッシ ュラインアドレスを要求すると、第1のタグコントローラはこのキャッシュライ ンアドレスを評価する。第1のタグコントローラは、第1のタグメモリ内の特定 のタグエントリを識別するためのインデックスとして下位アドレスビットを使用 する。次に、第1のタグコントローラが上位側のビット(タグページ)を識別さ れたタグエントリに格納する。 好ましい実施の形態では、タグメモリはスタティックメモリで実現される。ス タティックメモリで実現することで、各タグコントローラがバストランザクショ ンの際に各タグメモリに迅速にアクセスできるようになる。本発明はスタティッ クメモリにおいて実現されているが、当業者であれば異なるタイプの格納メカニ ズムを利用してタグメモリを実現してもよいことは理解できよう。好ましくは、 異なる種類の格納メカニズムによってメモリアクセス速度をバスのクロックレー トと釣り合わせ、パフォーマンスを最適化する。 2つのキャッシュラインアドレスが同一のタグエントリにマッピングされた場 合には、タグコントローラは前のキャッシュラインアドレスを追い出して新たな キャッシュラインアドレス用の空間を確保する。上述したように、古いキャッシ ュラインアドレスが無効になるまで、上記のプロセスによって 新たなキャッシュラインアドレスに関連したバストランザクションが一時中断さ れる場合がある。さらに、古いキャッシュラインアドレスを無効にするためには 別のバストランザクションを用いて、タグメモリがキャッシュユニット内に存在 するキャッシュラインアドレスの上位集合を維持するように保証しなければなら ない可能性もある。 本発明の一実施の形態では、各コヒーレンスフィルタがさらに、新たなキャッ シュラインアドレスに関連したバストランザクションを一時中断させずに古いキ ャッシュラインアドレスおよび新たなキャッシュラインアドレスを保持する無効 待ち行列を含む。これによって、システムのパフォーマンスを改善することがで きる。古いキャッシュラインを無効にする無効バストランザクションを後で行う ことができるためである。 複数のバスにおいてキャッシュコヒーレンスを維持することに注目すると、好 ましいコヒーレンスフィルタは、割り当てられたバスでのバストランザクション を監視することによって、クロスバストランザクションが必要になる時を判断す る。特に、各コヒーレンスフィルタ内のサイクルエンコーダが、コヒーレンスフ ィルタの割り当てられたバスで生じている各バストランザクションを監視する。 好ましい実施の形態では、サイクルエンコーダは、バス制御線を監視する周知の バス監視ロジックを利用する。サイクルエンコーダは次に1)そのタイプのバス トランザクションおよび2)バストランザクションに関連したタグメモリ内のキ ャッシュステータス情報をコヒーレンスルールテーブルに送信する。 ここで、ルールテーブルに注目すると、ルールテーブルはキャッシュコヒーレ ンスを維持するためにクロスバストランザクションを実施する時を判断する。好 ましい実施の形態では、ルールテーブルが、タグメモリ内のコヒーレンスステー タス情報を一部利用して、クロスバストランザクションを実施するか否かを判断 する。例えば、第1のバスでのバスリードトランザクシ ョンが特定のキャッシュラインアドレスを示す場合、第1のバスに割り当てられ たルールテーブルが、他のバスに割り当てられたタグメモリ(リモートタグメモ リ)内のキャッシュラインアドレスのコヒーレンスステータスを評価する。 リモートタグメモリから得られるコヒーレンスステータス情報を用いて、ルー ルテーブルは、キャッシュコヒーレンスを保証するためにリモートバストランザ クションが必要であるか否かを判断する。下記においてより詳細に説明するよう に、特定のコヒーレンスフィルタでは、タグコントローラがリモートタグメモリ にアクセスしてキャッシュステータスをルールテーブルに入力する。また、サイ クルエンコーダがバストランザクションのタイプを判断し、バストランザクショ ン情報をルールテーブルに入力する。 好ましい実施の形態では、ルールテーブルは大きな真理値表として作用する。 バストランザクション情報およびリモートタグメモリ情報を利用して、ルールテ ーブルは、キャッシュコヒーレンスの維持にはいずれのクロスバストランザクシ ョンまたはいづれの組のバストランザクションが必要であるかを判断する。 例えば、プロセッサがリードバストランザクションを第1のバスで開始すると 仮定する。この例では、バストランザクションを開始する第1のバスをロールバ スと呼び、多重バスシステムにおけるその他のバスをリモートバスと呼ぶ。リー ドバストランザクションでは、ローカルバス(ローカルコヒーレンスフィルタ) に割り当てられたコヒーレンスフィルタに所望のキャッシュラインアドレスを送 信する。次に、リモートバス(リモートタグメモリ)に割り当てられたタグメモ リにキャッシュラインアドレスが存在するか否かをローカルコヒーレンスフィル タで評価する。 この例のリモートタグメモリは、所望のキャッシュラインアドレスのコヒーレ ンスステータスが無効ステートにあることを示す。このような状況では、 リモートバス内のキャッシュラインアドレスは無効であるため、クロスバストラ ンザクションを行ってキャッシュコヒーレンスを維持する必要はない。したがっ て、ローカルコヒーレンスルールテーブルはバストランザクションをローカルバ スおよび主記憶装置に制限し、リモートバスでのバストランザクションを発生さ せない。バストランザクションをローカルバスに制限することで、クロスバスト ラフィックが削減される。 しかしながら、クロスバストランザクションが要求されていることがリモート タグメモリによって示されている場合には、ルールテーブルは、キャッシュコヒ ーレンスを保証するのに必要な適切なクロスバストランザクションまたは一組の トランザクションを判断する。例えば、複数のリモートタグメモリのうち1つに よつて、キャッシュラインアドレスが所有ステートであることが示されている場 合には、リモートバスに接続されたキャッシュユニットはキャッシュライン変更 後のバージョンを有している可能性がある。キャッシュラインアドレスが所有ス テートにあることがリモートタグメモリによって示されている場合には、ローカ ルルールテーブルは、リモートバスに接続されたバスマスタ論理がリモートバス でバスリードコマンドを実行してキャッシュコヒーレンスを保証する必要がある ことを示している。 バスリードコマンドがリモートバス上で実行されると、リモートキャッシュユ ニットはバスリードコマンドをスヌープし、これが所望のキャッシュラインの変 更後のバージョンを有しているか否かを判断する。リモートバス上の複数のリモ ートキャッシュユニットのうちの1つがキャッシュラインの変更後のバージョン を返してきた場合には、ルールテーブルはローカルバス上の要求を出しているプ ロセッサにこのキャッシュラインを転送する。 しかしながら、リモートバス上のいずれのキャッシュユニットでもキャッシュ ラインが変更されていない場合には、キャッシュユニットはバスリードコマンド に応答しない。次に、ルールテーブルは最新のキャッシュラインが 主記憶装置内にあると判断する。したがって、本発明では、ローカルバス上の要 求を出しているプロセッサに主記憶装置内の最新のキャッシュラインを送信する 。このように、本発明の好ましい実施の形態では、タグメモリにおけるキャッシ ュラインアドレスの上位集合を使用し、クロスバストランザクションが必要であ る時を判断してキャッシュコヒーレンスを維持する。 本発明のもう1つの態様は入力/出力デバイスとのインタフェース専用の第3 のバスを含む。好ましい実施の形態では、この第3のバスを入力/出力(I/O )バスと呼ぶ。好ましいI/Oバスは、他のプロセッサバスと同一のタイプのバ スである。しかしながら、I/Oバスおよび他のプロセッサバスの各々で異なる バスプロトコルを利用してもよいことは当業者であれば明らかであろう。 好ましいI/Oバスは、他のプロセッサバスと同様に動作する。ハイパフォー マンスコンピュータにおけるI/O転送の大半はダイレクトメモリアクセス(D MA)転送によって行われる。DMA転送は、通常は中央処理装置が直接関与す ることなく主記憶装置とI/O装置との間でデータを直接移動させるI/O装置 によって開始される。I/Oバスで発生するI/Oトランザクションでのメモリ コヒーレンスを維持することによって、各DMA転送の前後にキャッシュユニッ トにおいてキャッシュラインのフラッシュが回避される。 もう1つのタイプのI/O転送では、プロセッサによってI/Oデータに対し てダイレクトプログラムアクセスすることを必要とする。好ましい実施形態では 、バススイッチはダイレクトI/O転送をI/Oバスに、メモリマッピングI/ O転送として主記憶装置アドレス空間へのアクセス以外の全てのメモリアクセス をI/Oバスに転送する。このようなI/O転送はキャッシュコヒーレンスを必 要とせず、下記においてより詳細に説明するように、1つのバスから他のバスに 独自の方法で送信される。 好ましいI/Oバスは、I/Oコヒーレンスフィルタと、複数のシステムバス にわたるI/Oマッピングを改善し、かつI/Oデータ処理を改善してシステム バスの複雑さを軽減するI/Oバスインタフェースとを含む。バスにおいて生じ るI/Oデータトランザクションは、自動的にI/Oバスに転送される。また、 I/Oバス上にて開始されるトランザクションは、バストランザクションを他の バスに同報通信するのではなく宛先バスに送信される。 本発明のさらに他の態様では、複数のバス間での通信を最適化する。従来のバ ススイッチは、例えば、異なるバスを独立接続パスで相互接続する。このため、 従来のマルチバスシステムでは、通常は第1のバスおよび第2のバスが1本の独 立接続パスで相互接続され、第1のバスおよび第3のバスが他の独立接続パスで 相互接続され、第2のバスおよび第3のバスがさらに他の独立接続パスで相互接 続されている。予想通り、このような独立接続パスによってバススイッチを実現 する上での複雑さが増すことになる。 例えば、第1のバスが第1のバストランザクションを第2のバスに送ることを 望む場合、第1のバスは第1のバストランザクションを第1の待ち行列におき、 これによって第1のバスと第2のバスとがリンクされる。次に、第2のバスが第 1の待ち行列の出力から第1のバストランザクションを取得する。同様に、第2 のバスが第2のバストランザクションを第1のバスに送ることを望む場合、第2 のバスは第2のバストランザクションを第2の待ち行列におき、これによって第 2のバスと第1のバスとがリンクされる。次に、第1のバスが第2の待ち行列の 出力から第2のバストランザクションを取得する。 したがって、2本のバスで2つの待ち行列が必要になる。さらに他のバスを相 互接続するのであれば、さらに多くの待ち行列が必要になる。例えば、3バスシ ステムでは、バスとバスとの間の各接続に2つの待ち行列が必要で ある。結果として、3バスシステムでは6つの待ち行列が必要になる。 しかしながら、好ましい実施の形態においてバススイッチを実現するための独 自の方法では、すべてのバスからアクセス可能なメモリセルのマルチポートプー ルを用いて、このようなシステムの複雑性を減少する必要がある。独自のバスス イッチを用いれば、場合によっては同時に発生することもある他のデータ転送に 干渉することなく、どのバスから他のどのバスにでもデータを流すことができる 。下記においてより詳細に説明するように、各バスからのバス転送はメモリセル の共通のプールに入力される。次に、メモリの共通のプールにおけるバストラン ザクションが、それぞれの宛先のバスに送られる。有利なことに、バスは独立接 続パスを使用せずに他のいずれのバスに対しても読出しまたは書込みを行うこと ができる。 好ましい実施の形態では、各バストランザクションに関連した情報を、データ セル、リクエストセル、アドレスセルと呼ばれる3つの異なるメモリセルに格納 する。データセルは、バストランザクションに関連したデータを格納する。リク エストセルは、宛先のバスに送られるバストランザクションのタイプを定義する バストランザクション情報を含む。最後に、アドレスセルは、バストランザクシ ョンに関連したアドレス情報およびコヒーレンスステータス情報を含む。 好ましい実施の形態では、各データセル、各リクエストセルおよび各アドレス セルの間に1対1の対応が存在する。このため、各データセル、リクエストセル またはアドレスセル、またはこれらのセルの任意の組み合わせで、特定のバスト ランザクションについての情報を含むことができる。好ましい実施の形態では3 つのメモリセルを用いてバストランザクション情報を保持しているが、このバス トランザクション情報は3個未満または4個以上のメモリセルに存在させること もできる。 概念的に、データセル、リクエストセルおよびアドレスセルは、マルチポ ートメモリの1つのプールに存在するかのように見せることができる。好ましい 実施の形態では、データセル、リクエストセルおよびアドレスセルは異なるコン ポーネントに位置しているが、依然として1対1の対応を維持し続けている。好 ましい実施の形態では、データインタフェースバッファがデータセルを含み、シ ステムアクセスコントローラがアドレスセルおよびリクエストセルを含む。 ここで、好ましいデータインタフェースバッファに注目すると、データインタ フェースバッファにおける各データセルはマルチポートであり、全てのバスから アクセス可能である。各データセルは、特定のバストランザクションに関連した データを含む。有利なことに、データインタフェースバッファにおけるデータセ ルのプールは、バスデータパス同士を相互接続する。 ここで、好ましいシステムアクセスコントローラに注目すると、システムコン トローラは、中央リクエストリストと、バッファマネージャと、複数のバスマス タおよび複数のバススレーブとを含む。従来技術において周知のように、各バス マスタは、複数のバスのうちの1本でバストランザクションを開始し、各バスス レーブはこの1つのバスに接続された他のデバイスによって開始されたバストラ ンザクションを受信する。中央リクエストリストはリクエストセルのプールを維 持し、バッファマネージャはアドレスセルのプールを維持する。 中央リクエストリスト内のリクエストセルは各々マルチポートであり、全ての バスからアクセス可能である。各リクエストセルは、ターゲットバス識別子と、 バストランザクションコードとも言われるアクションコードと、オーナーバス識 別子とを含む。ターゲットバス識別子は、特定の宛先のバスを識別し、バストラ ンザクションコードは特定のバストランザクションを識別し、オーナーバス識別 子は開始バスを識別する。 ここで、バッファマネージャにおけるアドレスセルのプールに注目すると、 各アドレスセルはマルチポートであり、「使用中」情報と、メモリアドレスおよ びデータセルステータス情報とを含む。アドレスセルにおける使用中情報はアド レスセルが利用できるか否かを示している。好ましい実施の形態では、使用中情 報は、アドレスセルが使用中であるかフリーであるかを示すように設定された使 用中ビットを有している。場合によっては、使用中ビットがフリーに設定されて いるときにデータセルに有効データを存在させることもできる。これによって、 フリーのデータセル内の有効データを再利用する最適化が可能になる。 一方、メモリアドレスはバストランザクションに関連したメモリアドレスを含 み、データセルステータスはデータセルにおけるデータのステータスを示してい る。アドレスセルのプールに加え、バッファマネージャは、アドレスセルプライ オリティエンコーダと、複数のファーストインファーストアウト(FIFO)メ モリと、複数のアドレス比較器とを有している。アドレスセルのプライオリティ エンコーダは、どのアドレスセルが使用中でどのアドレスセルが新たなバストラ ンザクション情報を受信できるフリーなものであるかを判断する。好ましい実施 の形態では、アドレスセルのプライオリティエンコーダは、各アドレスセル内の 使用中情報を評価することによってどのアドレスセルがフリーであるかを判断す る。 アドレスセルのプライオリティエンコーダは、どのアドレスセルがフリーであ るかを判断するだけでなく、異なるバスにフリーのアドレスセルを割り当てる。 好ましくは、アドレスセルのプライオリティエンコーダがフリーのアドレスセル を異なるバスに割り当てる。フリーのアドレスセルをバスに割リ当てた後、アド レスプライオリティエンコーダは使用中ビットを設定し、そのアドレスセルがフ リーではないことを示す。例えば、3バスシステムにおける例であると仮定する と、プライオリティエンコーダは3つのアドレスセルがフリーであることを判断 する。好ましいプライオリティエンコーダは、 第1のフリーアドレスセルを第1のバスに割り当て、第2のフリーアドレスセル を第2のバスに割り当て、第3のフリーアドレスセルを第3のバスに割り当てる 。 4番目のアドレスセルがフリーになると、アドレスセルのプライオリティエン コーダは第1のバスに戻り、この4番目のアドレスセルを第1のバスに割り当て る。好ましいアドレスセルのプライオリティエンコーダではこのような手法を用 いてフリーのアドレスセルを異なるバスに割り当てているが、アドレスセルのプ ライオリティエンコーダを様々なアロケーションスキームに利用して、フリーア ドレスセルを異なるバスに割り当てできることは、当業者であれば理解できよう 。 ここで、バッファマネージャにおけるFIFOメモリに注目すると、FIFO メモリは、割り当てられたアドレスセルをこれがバスで必要になるまで一時的に 格納する。好ましい実施の形態では、FIFOメモリは、割り当てられたアドレ スセルを識別するアドレスセル識別子を格納する。アドレスセル識別子は、割り 当てられたアドレスセルのメモリ位置を含むデータ変数である。バスは、アドレ スセル識別子を利用して、アドレスセル識別子によって識別されたアドレスセル メモリ位置にアクセスする。 好ましい実施の形態では、各FIFOメモリが特定のバスに割り当てられてい る。さらに、各FIFOメモリが、各FIFOメモリと同一のバスに割り当てら れた複数のコヒーレンスフィルタのうちの1つと複数のバススレーブのうちの1 つとに接続されている。複数のバススレーブのうちの1つまたは複数のコヒーレ ンスフィルタのうちの1つでバストランザクションを他のバスに送信したい場合 、自己が割り当てられたFIFOメモリからアドレスセル識別子の1つを取得す る。 例えば、第1のバス上の第1のプロセッサが第2のバス上の第2のI/O装置 にデータ値を送信したいと仮定する。この例では、第1のバススレーブ が第1のバスに接続されている。第1のプロセッサがバストランザクションを開 始してデータ値を第2のI/O装置に送信すると、バストランザクションは第1 のバススレーブによって受信される。次いで、第1のバススレーブが、バストラ ンザクションを第2のバスに転送する必要があることを判断する。 したがって、第1のバススレーブがバッファマネージャにおける第1のFIF Oメモリにアクセスし、アドレスセル識別子を取得する。アドレスセル識別子を 利用して、第1のバススレーブが識別されたアドレスセルにアクセスし、データ 値アドレスを格納し、必要があれば、データ値のコヒーレンスステータスをその アドレスセルに格納する。対応するリクエストセルでは、第1のバススレーブが ターゲットバス識別子における第2のバスを指定し、アクションコード(バスト ランザクションコードとも呼ぶ)におけるバストランザクションコードを指定し 、オーナーバス識別子における第1のバスを指定する。さらに、第1のバススレ ーブは、バストランザクションに関連したデータ値を対応するデータセルに格納 する。 別の例では、キャッシュラインアクセスがキャッシュコヒーレンスを保証する ために第2のバスでのバストランザクションを要求していることを第1のバスに 割り当てられた第1のキャッシュコヒーレンスフィルタが判断すると仮定する。 この例では、第1のキャッシュコヒーレンスフィルタがバッファマネージャにお ける第1のFIFOメモリにアクセスし、アドレスセル識別子を取得する。 第1のコヒーレンスフィルタは、アドレスセル識別子を用いて識別されたアド レスセルにアクセスする。第1のコヒーレンスフィルタは次に、キャッシュライ ンアドレスおよびコヒーレンスステータス情報をアドレスセルに格納する。また 、リクエストセルでは、第1のコヒーレンスフィルタがターゲットバス識別子に おける第2のバスを指定し、バス識別子において適当な バストランザクションコードおよび第1のバスを指定する。しかしながら、この 例では、キャッシュコヒーレンスを保証する上でキャッシュラインデータは必要 ないため対応するデータセルは空のままである。バストランザクション情報を一 度セルに追加すると、適切なバスでバストランザクション情報を取得して所望の バストランザクションを実行しなければならない。 好ましい実施の形態では、中央リクエストリストにおける複数のバスプライオ リティエンコーダがリクエストセルに接続されている。上述したように、リクエ ストセルにおけるターゲットバス識別子が宛先のバスを識別する。一般的に、バ スプライオリティエンコーダがリクエストセルにおけるターゲットバス識別子を 評価し、どのバスでバストランザクションを行うべきであるかを判断する。 例えば、リクエストセルにおけるターゲットバス識別子が第1のバスおよび第 2のバスを指定すると仮定する。この例では、第1のバスプライオリティエンコ ーダがリクエストセルにおけるターゲットバス識別子を評価してどのリクエスト セルが第1のバス用のものであるかを識別し、第2のバスプライオリティエンコ ーダがターゲットバス識別子を評価してどのリクエストセルが第2のバス用のも のであるかを識別する。 また、宛先のバスを識別するために、各バスプライオリティエンコーダは、特 定のバスに関連したバスリクエストセルのうち、どのバスリクエストセルの優先 度が最も高いかを判断する。好ましい実施の形態では、各バスプライオリティエ ンコーダは、総当たり手法を用いて優先度が最も高いバスリクエストセルを判断 する。総当たり手法では、各バスプライオリティエンコーダがバスリクエストセ ルに対して連続的に最も高い優先度を割り当てることができる。 各バスプライオリティエンコーダは、優先度が最も高いバスリクエストセルを 複数のバスマスタのうちの1つに転送する。上述したように、バス識別 子を持っていることに加えて、リクエストセルはバストランザクションコードも 含む。次に、リクエストセルにおいて識別されたバストランザクションをバスマ スタが行う。場合によっては、下記においてより詳細に説明するように、トラン ザクションを実行するバスは、バストランザクションを開始したバスにデータを 書き戻さなければならないこともある。このような場合には、バスマスタはデー タセルを用いてライトバックデータを格納し、リクエストセルを再度利用して開 始したバスと通信を行う。上述したように、最初のバスはリクエストセル内に存 在するオーナーバス識別子によって識別される。しかしながら、バストランザク ションの終了時には、バスマスタは、アドレスセル500、リクエストセル60 0およびデータセル700をフリーに設定する。 バスマスタがバストランザクションを行っている間、バスプライオリティエン コーダは、そのバスに割り当てられて次に優先度の高いリクエストセルを識別し 、そのリクエストセルをバスマスタに転送する。バスプライオリティエンコーダ がそのバスに割り当てられた最後のバスリクエストセルに達した場合には、バス プライオリティエンコーダは、そのバスに割り当てられた第1のバスリクエスト セルに戻る。総当たり的に各バスリクエストセルに対して最も高い優先度を割り 当てることで、各バスリクエストセルを最終的にバスに転送することが保証され る。新たなリクエストセルが中央リクエストリストに追加されると、各バスプラ イオリティエンコーダは新たなリクエストセルへの即時のアクセス権を取得し、 よって最も高い優先度が割り当てられる。 本発明の他の態様では、バッファマネージャは、アドレス衝突を識別する複数 のアドレス比較器を含む。一般に、アドレス衝突は2つの異なるバストランザク ションが同一のデータ値に関連し、同時に発生した時に生じる。このような状況 では、同一のデータに対する2つのバストランザクションを同 時に、アドレスセル、リクエストセルおよびデータセルに存在させようとする可 能性がある。予想通り、このようなアドレス衝突によって誤った結果が生じるこ とがある。 好ましい実施の形態では、一組のアドレス比較器が各バスに割り当てられてい る。アドレス比較器の各組は、複数のコヒーレンスフィルタのうちの1つと、複 数のバススレーブのうちの1つと、バッファマネージャ内のすべてのアドレスセ ルとに接続されている。各バストランザクションについて、そのバスに割り当て られた一組のアドレス比較器がバストランザクションアドレスとアドレスセル内 の全てのアドレスとを比較する。アドレス衝突が検出されると、適切な動作を保 証するために、以下に詳細に説明するようなアクションを適宜とらなければなら ない。 図面の簡単な説明 本発明の上記の態様および他の態様、利点、新規な特徴は、以下の詳細な説明 を読み、添付の図面を参照することで明らかになろう。 図1は、好ましい多重処理マルチバスシステムのブロック図である。 図2は、好ましいシステムアクセスコントローラのブロック図である。 図3は、好ましいコヒーレンスフィルタおよびタグメモリのブロック図である 。 図4は、好ましいキャッシュラインアドレスおよび好ましいタグメモリのブロ ック図である。 図5Aおよび図5Bは、好ましいバッファマネージャのブロック図である。 図6は、好ましい中央リクエストリストのブロック図である。 図7は、好ましいデータインタフェースバッファのブロック図である。 図8は、バスリードコマンドの間にメモリコヒーレンスを維持するのに好まし い方法を示しているフローチャートである。 図9は、バス無効コマンドの間にメモリコヒーレンスを維持するのに好ましい 方法を示しているフローチャートである。 図10は、本発明の他の実施の形態における無効待ち行列のブロック図である 。 これらの図面において、3桁の参照符号の1桁目の数字は、その要素が最初に 出てきた図面の番号を示している。例えば、参照符号402が付された要素は、 最初に図4に出てくる。また、図面全体を通して構成要素間の対応を示すために 同様の参照符号を用いている。 好ましい実施の形態の詳細な説明 好ましい実施の形態では、1)複数のシステムバスとI/Oバスとを共有の主 記憶装置に相互接続し、2)待ち時間およびシステム内の全帯域幅に対する影響 を最小限に抑えつつキャッシュコヒーレンスを効果的に維持する、キャッシュコ ヒーレントなマルチバスシステムが得られる。特に、本発明は、少ない量のクロ スバストラフィックでキャッシュメモリコヒーレンスを維持するような形でバス 対バス通信をコーディネートするコヒーレンスフィルタを含む。 ここでは好ましいバスシステムに鑑みて本発明を説明するが、本発明はこれに 限定されるものではなく、様々な他のマルチバス背景においても使用可能である 。本発明の完全な理解を容易にするために、詳細な説明の残りの部分を以下のよ うなセクションおよびサブセクションに分けて構成する。 I. 用語および略語一覧 II. 好ましいマルチバスシステムの概要 III. システムアクセスコントローラ A. コヒーレンスフィルタ 1. タグメモリ 2. タグコントローラ 3. サイクルエンコーダ 4. ルールテーブル B. バッファマネージャ C. 中央リクエストリスト IV. データインタフェースバッファ V. キャッシュコヒーレンス維持 A. バスリードラインコマンド処理 B. バスリード無効ラインコマンド処理 VI. 他の実施の形態 VII. 結論 I. 用語および略語一覧 ASIC Application−Specific Integrate d Circuits(特定用途向け集積回路)。 BRLコマンド Bus Read Line(バスリードライン)コマンド 。バスリードラインコマンドは、バス上のキャッシュラインを読み出す。 BRILコマンド Bus Read Invalidate Line(バ スリード無効ライン)コマンド。バスリード無効ラインコマンドは、バス上のキ ャッシュラインを読み出し、無効にする。 バスマスタ 特定のバストランザクションを制御する制御ロジック。2つ以上 のデバイスが共通バスを共有しているシステムによっては、各デバイスがバスマ スタとなるための内部ロジックを有している。バスマスタがバストランザクショ ンを行った後、バスマスタは他のデバイスがバスマスタになれるようにそのバス を放棄する。このようなデバイスとしては、プロセッサ、I/O装置、メモリコ ントローラなどが挙げられる。 バススレーブ バスマスタからバストランザクションを受信する制御ロジック 。 バススヌーピング キャッシュメモリを有するプロセッサが、他のプロセッサ によって行われるメモリトランザクションを監視するために用いる手法。 DIB Data Interface Buffer(データインタフェー スバッファ)。 DEFER#信号 DEFER#信号はバストランザクションを遅延する。好 ましいPentium Proバスでは、DEFER#信号は1つの信号ではな く、DEFER#信号の意昧を示す制御信号の独自の符号化である。 DEN#信号 DEN#信号は、バストランザクションをいつ遅延できるかを 示している。遅延されたバストランザクションは、順不同で実行される。すなわ ち、第1のバストランザクションが遅延されると、第2のバストランザクション の方が遅延されている第1のバストランザクションよりも前に終了する。バスト ランザクションを発行するプロセッサは、そのバストランザクションがDEN# 信号のアサートによって遅延できるものであるか否かを示している。 FIFO first−in,first−out(ファーストイン、ファー ストアウト)メモリ。FIFOはアイテムが入力されるとそのままの順序でアイ テムを出力するメモリ待ち行列である。すなわち、第1のアイテムが入ると同じ 第1のアイテムが出てくる。 HIT#信号 好ましい実施の形態では、各プロセッサはバス上で一緒に配線 されてORが取られるHIT#信号を有している。プロセッサはHIT#信号を 生成してデータ値が共有されていることを示す。例えば、第1のプロセッサがデ ータ値を要求すると、第2のプロセッサがバストランザクショ ンを監視して、第2のプロセッサが要求されたデータ値のコピーを持った時にH IT#信号を生成する。 HITM#信号 好ましい実施の形態では、各プロセッサはHITM#信号を 有している。プロセッサは、変更後のデータ値がプロセッサのキャッシュメモリ に存在することがバススヌープ動作によって示されるとHITM#信号をアサー トする。 I/O Input/Output(入力/出力)。入力/出力デバイスを用 いた一般に入力/出力トランザクションを示す。 PCIバス Peripheral Component Intercon nect(周辺コンポーネント相互接続)バス。 プロセッサ 詳細な説明全体にわたって、プロセッサは計算または制御ユニッ トを意昧する。プロセッサはバストランザクションを介して主記憶装置と通信し 、中央処理装置、マイクロプロセッサ、スマート入力/出力デバイス、その他情 報を格納、処理または転送するあらゆるデバイスを含むことができる。 RAM Random Access Memory(ランダムアクセスメモ リ)。 SRAM Static Random Access Memory(スタ ティックランダムアクセスメモリ)。 SDRAM Synchronous Dynamic Random Ac cess Memory(同期ダイナミックランダムアクセスメモリ)。 スヌープヒット スヌープヒットは、特定のメモリトランザクションにおいて 要求されたデータが自己のキャッシュメモリにあることをプロセッサが検出する と発生する。 II. 好ましいマルチバスシステムの概要 図1に示されるように、好ましいマルチバスシステム100は、3つのシ ステムバスすなわち第1のシステムバス102と、第2のシステムバス104と 、第3のシステムバス106とを有している。各システムバス102、104お よび106はさらに、一組のアドレスおよび制御線108a、108bおよび1 08cならびに一組のデータ線110a、110bおよび110cを備えている 。アドレス線および制御線をアドレスおよび制御線108と総称する。データ線 110a、110bおよび110cをデータ線110と総称する。本詳細な説明 全体を通して、第1のシステムバス102は左側のバス102とも呼ばれ、第2 のシステムバス104は右側のバス104とも呼ばれ、第3のシステムバス10 6はI/Oバス106とも呼ばれる。 好ましい実施の形態では、各システムバス102、104および106は、I ntel Corporationによって定義されたPentium Pro システムバスである。Pentium Proシステムバスは、36ビットのア ドレスと、64ビットのデータと、様々な制御信号および誤差補正信号を提供す る。好ましい実施の形態ではPentium Proバスを利用しているが、ス ヌーピングキャッシュコヒーレンスプロトコルを実現する様々なシステムバスに 本発明を適用可能であることは当業者であれば理解できよう。さらに、1つのバ スのフォーマットが他のバスのフォーマットとは異なっていてもよい。 左側のバス102に接続されているのは、複数のプロセッサ112a、112 bなどである。右側のバス104に接続されているのは、複数のプロセッサ11 2c、112dなどである。プロセッサ112a、112b、112cおよび1 12dをプロセッサ112と総称する。好ましい実施の形態では、各プロセッサ 112は内部キャッシュユニット114を有する。4つのプロセッサ112を図 示してあるが、各バス102および104をさらに他のプロセッサ112に接続 することも可能である。好ましい実施の形態では、プロセッサ112はInte l Corporationによって提供さ れるPentium Proプロセッサである。本発明の好ましい実施の形態で はPentium Proプロセッサを利用しているが、本発明は特定のシステ ムバスと互換性のある様々なプロセッサ112に本発明を適用可能であることは 当業者であれば理解できよう。 プロセッサ112内のキャッシュメモリ114は、データをローカルに格納す ることによって処理パフォーマンスを改善する。一般に、キャッシュメモリ11 4によって、少ないバス帯域幅でプロセッサ112がデータ値にアクセスするこ とが可能になる。好ましい実施の形態におけるキャッシュメモリ114は、デー タ値をキャッシュラインに構成し、各キャッシュラインが32バイトのデータを 含む。 好ましい実施の形態における第3のシステムバス106は、入力/出力(I/ O)トランザクションを複数のI/Oブリッジ120と主記憶装置132との間 で送信し、よってI/Oバス106と呼ばれる。好ましいI/Oブリッジ120 は、Intel Corporation製の82450GX PCIset Orion PCI Bridgeである。好ましい実施の形態では、I/Oブ リッジ120がPCIバスを使用してI/OトランザクションをI/Oバス10 6から複数のI/O装置122に転送する。しかしながら、I/Oブリッジ12 0は様々なI/O装置122に対してアクセスする様々なデバイスで実現可能で あることは当業者であれば理解できよう。また、I/Oブリッジ120は任意の ものでり、互換性のあるI/O装置122をI/Oバス106に直接取り付けて もよい。 好ましいマルチバスシステム100には、奇数主記憶装置モジュール132a および偶数主記憶装置モジュール132bと、データインタフェースバッファ1 34も含まれている。好ましい実施の形態では、奇数主記憶装置モジュール13 2aおよび偶数主記憶装置モジュール132bを総称して主記憶装置132と呼 ぶ。好ましい奇数メモリモジュール132aおよび好ま しい偶数メモリモジュール132bは、32メガバイトから32ギガバイトまで の範囲でサイズを変えることのできる同期ダイナミックランダムアクセスメモリ (SDRAM)を備えている。SDRAMは、データの高速バーストを提供する 同期パイプラインインタフェースを使用している。 好ましいマルチバスシステムには、システムアクセスコントローラ130およ びデータインタフェースバッファ134も含まれている。概して、システムアク セスコントローラはマルチバスシステムの動作を制御する。システムアクセスコ ントローラは、各バス102、104および106についてアドレスおよび制御 線108a、108bおよび108cに接続されている。また、システムアクセ スコントローラ130は一組の奇数メモリアドレスおよび制御線138aと、一 組の偶数メモリアドレスおよび制御線138bと一組のデータインタフェースバ ッファ(DIB)制御線140とにも接続されている。 一方、データインタフェースバッファ134は、異なるバス102、104お よび106と主記憶装置132との間のデータパスを提供する。データインタフ ェースバッファ134は、各バス102、104および106についてのデータ 線110a、110bおよび110cに接続されている。またデータインタフェ ースバッファ134は一組の主記憶装置データ線142にも接続されている。 プロセッサ112は、主記憶装置132からデータを読み込むことによって、 自己のキャッシュメモリ114を充填する。最新のデータをキャッシュメモリ1 14内に維持するために、特定のバス上のプロセッサ112内のキャッシュメモ リ114は、自己が関連したバス102、104または106上で発生する主記 憶装置のバストランザクションをスヌープする。これをバススヌーピングと呼ぶ 。 キャッシュメモリ114がバストランザクションによって識別されたキ ャッシュラインと同一のキャッシュラインを含む場合には、スヌープヒットが起 こる。スヌープヒットが起こると、データ値の共有コピーを持っている1つのプ ロセッサ112または複数のプロセッサ112がHIT#信号をアサートする。 HIT#信号は、複数のアドレスおよび制御線108のうちの1本である。HI T#信号は、他のプロセッサ112に、メモリトランザクションに関連したデー タをプロセッサ112と共有していることを通知する。好ましい実施の形態では 、他のプロセッサ112のいずれもHIT#信号をアサートしない場合には、要 求を出したプロセッサが所望のデータ値のコヒーレンスステータスを所有ステー トに設定する。 他の場合には、プロセッサ112は自己のキャッシュメモリ114におけるキ ャッシュラインを変更することができる。しかしながら、バストラフィックを軽 減するために、他のプロセッサ112が同一のキャッシュラインを主記憶装置1 32から要求するまでは、キャッシュメモリ114によって変更後のキャッシュ ラインを主記憶装置132に返送しなくてもよい。例えば、プロセッサ112が キャッシュラインを更新した時に、他のプロセッサ112がこのキャッシュライ ンのコピーを持っていないかまたは同一のキャッシュラインの取得を望むことが ある。このような場合には、最新のキャッシュラインを有するプロセッサ112 は最新のキャッシュラインを主記憶装置132に書き戻すのではなく、プロセッ サ112が最新のキャッシュラインを自己のキャッシュメモリ114内に保持す る。 好ましい実施の形態では、バススヌープ動作によって変更後のキャッシュライ ンがプロセッサのキャッシュメモリ114内に存在することが示されると、複数 のプロセッサ112のうちの1つがHITM#信号をアサートする。HITM# 信号は、複数のアドレスおよび制御線108のうちの1つであり、最新のキャッ シュラインを有しているプロセッサ112がキャッシュラインを主記憶装置13 2に書き戻す必要があることを示している。例えば、 好ましい実施の形態において、左側のバス102上の第1のプロセッサ112a が変更後のキャッシュラインを自己のキャッシュメモリ114内に保持している と仮定する。左側のバス102上の第2のプロセッサ112bが同一のキャッシ ュラインのコピーを取得することを望むと、第2のプロセッサ112bは左側の バス102を制御し、主記憶装置132に対するメモリトランザクションを実行 して所望のキャッシュラインを識別する。次に、第1のプロセッサ112はメモ リトランザクションをスヌープし、自己が所望のキャッシュラインの変更後のバ ージョンを含むと判断する。 これに応答して、第1のプロセッサ112は、自分がキャッシュラインの変更 後のバージョンを含むことを示すHITM#信号をアサートする。第1のプロセ ッサ112が左側のバス102の指揮をとり、変更後のキャッシュラインを主記 憶装置132に書き戻す。第1のプロセッサ112aが変更後のキャッシュライ ンを主記憶装置132に書き戻した後、第2のプロセッサ112bが主記憶装置 のトランザクションを再開し、最新のキャッシュラインを取得する。 好ましいプロセッサ112は、バストランザクションが遅延可能なものである か否かを示すことができる。バストランザクションを発行するプロセッサ112 は、そのバストランザクションが遅延可能であるか否かをDEN#信号によって 示す。HITM#信号をアサートするプロセッサがトランザクション応答を制御 する。プロセッサがHITM#信号をアサートしたら、そのプロセッサは、(メ モリが有している)順にバストランザクションを実行するか、またはトランザク ションが遅延可能であれば、システムアクセスコントローラ130はバストラン ザクションを遅延するDEFER#信号をアサートする。DEFER#信号は特 定の制御線108の符号化である。 III. システムアクセスコントローラ ここで、システムアクセスコントローラ130に注目すると、図2に示さ れるように、好ましいシステムアクセスコントローラ130を特定用途向け集積 回路(ASIC)として実現する。概して、システムアクセスコントローラ13 0は、マルチバスシステム100におけるキャッシュコヒーレンスを維持しつつ 3本のバス102、104および106および主記憶装置132を制御する。 好ましくは、システムアドレスコントローラ130は、左側のコヒーレンスフ ィルタ200aと、右側のコヒーレンスフィルタ200bと、I/Oコヒーレン スフィルタ200cとを含む。本詳細な説明全体を通して、左側のコヒーレンス フィルタ200a、右側のコヒーレンスフィルタ200bおよびI/Oコヒーレ ンスフィルタ200cをコヒーレンスフィルタ200と呼ぶ。システムアクセス コントローラ130はまた、左側のバスマスタ202aと、右側のバスマスタ2 02bと、I/Oバスマスタ202cとを含む。本詳細な説明全体を通して、左 側のバスマスタ202a、右側のバスマスタ202bおよびI/Oバスマスタ2 02cをバスマスタ202と総称する。 また、システムアクセスコントローラ130は、左側のバススレーブ204a と、右側のバススレーブ204bと、I/Oバススレーブ204cとを含む。本 詳細な説明全体を通して、左側のバススレーブ204a、右側のバススレーブ2 04bおよびI/Oバススレーブ204cをバススレーブ204と総称する。さ らに、システムアクセスコントローラ130は、奇数メモリコントローラ206 aおよび偶数メモリコントローラ206bを含む。本詳細な説明全体を通して、 奇数メモリコントローラ206aおよび偶数メモリコントローラ206bをメモ リコントローラ206と総称する。 システムアクセスコントローラ130は、中央リクエストリスト208および バッファマネージャ210を含む。最後に、システムアクセスコントローラ13 0は外部の左側のタグメモリ212aと、外部の右側のタグメモリ212bと、 内部のI/Oタグメモリ212cとに接続されている。本詳細 な説明全体を通して、左側のタグメモリ212a、右側のタグメモリ212bお よびI/Oタグメモリ212cをタグメモリ212と総称する。 好ましい実施の形態では、左側のタグメモリ212a、左側のコヒーレンスフ ィルタ200a、左側のバスマスタ202aおよび左側のバススレーブ204a を左側のバス102に割り当てる。右側のタグメモリ212b、右側のコヒーレ ンスフィルタ200b、右側のバスマスタ202bおよび右側のバススレーブ2 04bを右側のバス104に割り当てる。I/Oタグメモリ212c、I/Oコ ヒーレンスフィルタ200c、I/Oバスマスタ202cおよびI/Oバススレ ーブ204cをI/Oバス106に割り当てる。 ここで、システムアクセスコントローラ130の相互接続に注目すると、左側 のコヒーレンスフィルタ200aは、左側のバスアドレスおよび制御線108a 、左側のタグメモリ212a、右側のタグメモリ212b、I/Oタグメモリ2 12c、バッファマネージャ210および中央リクエストリスト208と通信を 行う。右側のコヒーレンスフィルタ200bは、右側のバスアドレスおよび制御 線108b、左側のタグメモリ212a、右側のタグメモリ212b、I/Oタ グメモリ212c、バッファマネージャ210および中央リクエストリスト20 8と通信を行う。I/Oコヒーレンスフィルタ200cは、I/Oバスアドレス および制御線108c、左側のタグメモリ212a、右側のタグメモリ212b 、I/Oタグメモリ212c、バッファマネージャ210および中央リクエスト リスト208と通信を行う。 左側のバスマスタ202は、左側のバスアドレスおよび制御線108aおよび 中央リクエストリスト208と通信を行う。右側のバスマスタ202bは、右側 のバスアドレスおよび制御線108bおよび中央リクエストリスト208と通信 を行う。I/Oバスマスタ202cは、I/Oバスアドレスおよび制御線108 cおよび中央リクエストリスト208と通信を行う。 左側のバススレーブ204aは、左側のバスアドレスおよび制御線108 a、奇数メモリコントローラ206a、偶数メモリコントローラ206bおよび バッファマネージャ210と通信を行う。右側のバススレーブ204bは、右側 のバスアドレスおよび制御線108b、奇数メモリコントローラ206a、偶数 メモリコントローラ206bおよびバッファマネージャ210と通信を行う。I /Oバススレーブ204cは、I/Oバスアドレスおよび制御線108c、奇数 メモリコントローラ206a、偶数メモリコントローラ206bおよびバッファ マネージャ210と通信を行う。 したがって、中央リクエストリストは、左側のコヒーレンスフィルタ200a 、右側のコヒーレンスフィルタ200b、I/Oコヒーレンスフィルタ200c 、左側のバスマスタ202a、右側のバスマスタ202bおよびI/Oバスマス タ202cと通信を行う。バッファマネージャ210は、左側のコヒーレンスフ ィルタ200a、右側のコヒーレンスフィルタ200b、I/Oコヒーレンスフ ィルタ200c、左側のバスマスタ202a、右側のバスマスタ202b、I/ Oバスマスタ202c、左側のバススレーブ204a、右側のバススレーブ20 4b、I/Oバススレーブ204c、奇数メモリコントローラ206aおよび偶 数メモリコントローラ206bと通信を行う。 ここで、バスマスタ202に注目すると、バスマスタ202は、自己が割り当 てられたバス102、104および106上のバストランザクションを制御する 。例えば、左側のバスマスタ202aは左側のバス102上のバストランザクシ ョンを開始する。バスマスタ202が1つまたは複数のバストランザクションを 行った後、バスマスタ202はそのバスを放棄し、他のデバイスがバスマスタに なれるようにする。バスマスタ202を実現するための制御ロジックは当業者間 で周知である。 ここで、バススレーブ204に注目すると、バススレーブ204は、自己が割 り当てられたバス102、104および106上のプロセッサ112ま たはI/Oブリッジ120のうちの1つによって開始されたバストランザクショ ンを受信する。例えば、複数のプロセッサ112のうちの1つによって、主記憶 装置132の特定のデータ値に対するリードバストランザクションを開始するこ とができる。バススレーブ204は、バストランザクションを受信し、要求され たデータ値を主記憶装置132から取得する。バススレーブ204を実現するた めの制御ロジックは当業者間で周知である。 奇数メモリコントローラ206aおよび偶数メモリコントローラ206bは、 それぞれ奇数主記憶装置モジュール132aおよび偶数主記憶装置モジュール1 32bへのアクセスを制御する。奇数メモリコントローラ206aおよび偶数メ モリコントローラ206bは、当業者間で周知のメモリ制御手法を用いて奇数主 記憶装置モジュール132aおよび偶数主記憶装置モジュール132bを制御す る。 A. コヒーレンスフィルタ ここで、好ましいコヒーレンスフィルタ200に注目すると、各コヒーレンス フィルタ200は、キャッシュコヒーレンスを維持するためにはどのバストラン ザクションまたはバストランザクションの組が必要であるかを判断する。好まし い実施の形態では、各コヒーレンスフィルタ200は、キャッシュコヒーレンス を維持するのにクロスバストランザクションが必要ない場合には、クロスバスト ラフィックを制限することによってマルチバスシステム200におけるパフォー マンスを改善する。 上述したように、左側のコヒーレンスフィルタ200aは左側のバスアドレス および制御線108aを監視し、右側のコヒーレンスフィルタ200bは右側の バスアドレスおよび制御線108bを監視し、I/Oコヒーレンスフィルタ20 0cはI/Oアドレスおよび制御線108cを監視する。図3に示されるように 、各コヒーレンスフィルタ200は、タグコントローラ300と、サイクルエン コーダ302と、ルールテーブル304とを含む。ま た、各コヒーレンスフィルタ200は、複数のタグメモリ212のうちの1つに 割り当てられている。 1. タグメモリ 好ましくは、各タグメモリ212は、システムアクセスコントローラ130の 外部に位置するスタティックランダムアクセスメモリ(SRAM)に格納されて いる。左側のタグメモリ212aおよび右側のタグメモリ212bは同一のサイ ズであると好ましく、I/Oタグメモリの方はI/Oブリッジ120などに一般 に接続されている小さなキャッシュユニットゆえにサイズは小さい。特定のバス に割り当てられたタグメモリ212は、1)その割り当てられたバスに接続され たキャッシュメモリ114に位置するキャッシュライン、2)キャッシュライン のキャッシュステータスの上位集合レコードを維持する。好ましい実施の形態で は、キャッシュステータスは、キャッシュメモリ114内のキャッシュコヒーレ ンスステートよりも少数のステートを有する一組のキャッシュコヒーレンスステ ートで表される。 周知のように、主記憶装置における各キャッシュラインは、キャッシュライン アドレスで識別される。キャッシュラインのサイズはマルチバスシステム100 ごとに異なる。好ましい実施の形態では、キャッシュラインは、32個の8ビッ トデータ値(256ビット)を含む。各タグメモリ212は、実際のキャッシュ ラインではなく、キャッシュラインを識別するキャッシュラインアドレスを格納 する。キャッシュラインアドレスを格納することに加え、各タグメモリ212は そのキャッシュラインアドレスに関連したコヒーレンスステータス情報も格納す る。このように、各タグメモリ212は、タグメモリの割り当てられたバスに接 続されたキャッシュメモリ114にキャッシュされたデータの考え得る内容およ びステータスに関する情報を維持する。 例えば、左側のバス102上のプロセッサ112aが、主記憶装置132 内のキャッシュラインにアクセスするリードバストランザクションを生成すると 、プロセッサ112aは所望のキャッシュラインアドレスを左側のバスアドレス および制御線108a上に置く。以下においてより詳細に説明するように、左側 のコヒーレンスフィルタ200aは所望のキャッシュラインアドレスを受信し、 このキャッシュラインアドレスを左側のタグメモリ212aに格納する。また、 左側のコヒーレンスフィルタ200aは、左側のタグメモリ212aのキャッシ ュラインアドレスに関連したコヒーレンスステータスを格納する。 各キャッシュラインアドレスに関連したコヒーレンスステータスは、キャッシ ュメモリ114内のキャッシュラインのステータスに関連している。好ましい実 施の形態では、コヒーレンスステータスは、3種類のコヒーレンスステートすな わち、無効ステート、共有ステートまたは所有ステートを含む。無効ステートは 、キャッシュラインが無効であり、プロセッサ112はこれを使用すべきでない ことを意味する。共有ステートは、プロセッサ112がキャッシュラインを変更 できないことを意味する。例えば、共有キャッシュラインは変更されないプログ ラム指示などであることが多い。所有ステートは、キャッシュラインを所有して いるプロセッサ112によってキャッシュラインを変更可能であることを意味す る。好ましい実施の形態では、Pentium Proプロセッサ112が採用 しているMESIプロトコルをはじめとする様々なキャッシュコヒーレンスプロ トコルに対する適応性がゆえに無効(Invalid)、共有(Shared) および所有(Owned)プロトコルを利用する。 しかしながら、キャッシュラインのコヒーレンスステータスは、無効、共有お よび所有プロトコルに限定されないことは当業者であれば明らかであろう。特に 、変更(Modified)、排他(Exclusive)、共有(Share d)および無効(Invalid)(MESI)プロトコル、 変更(Modified)、所有(Owned)、排他(Exclusive) 、共有(Shared)および無効(Invalid)(MOESI)プロトコ ル、変更(Modified)、共有(Shared)、無効(Invalid )(MSI)プロトコル、Berkeleyプロトコル、イリノイ大学コヒーレ ンスプロトコルなどの様々なコヒーレンスプロトコルを用いてコヒーレンスステ ータスを実現できることは、当業者であれば理解できよう。 コヒーレンスステータスは、2ステート無効および所有プロトコルなどの2ス テートコヒーレンスプロトコルを用いて実現することもできる。デュアルバスシ ステムの2ステートコヒーレンスプロトコルでは、全てのバスは全てのキャッシ ュラインの共有コピーを有していると仮定される。全てのキャッシュラインが共 有されているかのように扱われ、コヒーレンスメモリが維持する必要があるのは 無効および所有ステートにあるデータ値に関連したレコードのみであるため、こ れによってコヒーレンスメモリのサイズが削減されることが多い。有利なことに 、バスが共有データに対して標準的なリードトランザクションを行うと、共有ス テータス情報はコヒーレンスメモリには格納されない。これによって、コヒーレ ンスメモリ内のコヒーレンスステータス情報の上位集合の維持に関する問題が少 なくなる。 しかしながら、このような2ステートシステムでは、全ての排他リードトラン ザクションまたは無効トランザクションにおいては、1つまたは複数のクロスバ ストランザクションを行ってキャッシュコヒーレンスを保証する必要がある。こ のようなクロスバストランザクションは、無効コマンドの排他リードトランザク ションに関連したデータの共有バージョンを他のバスが実際に含んでいるか否か を知るために必要である。デュアルバスシステムでは、3本以上のバスの場合よ りも2ステートプロトコルによって全体のパフォーマンスが高くなることがある が、2ステートプロトコルの利点ば作業 負荷特性に大きく依存する。 好ましいPentium Proプロセッサ112は、自己の内部キャッシュ メモリ114に格納されたキャッシュラインについての正確なコヒーレンスステ ータス情報を出力はしない。例えば、内部キャッシュメモリ114は、変更され ていないキャッシュラインをそのキャッシュラインが放棄されたことを信号通知 せずにこれを放棄することができる。本発明の好ましい実施の形態では、各タグ メモリ212を独自に適合させ、現在のコヒーレンスステータス情報を出力しな い内部キャッシュメモリ114用のキャッシュコヒーレンスを保証する。 特定のバスに接続された内部キャッシュメモリ114に現在保持されている可 能性があるキャッシュラインアドレスの上位集合を維持することによって、各タ グメモリ212がキャッシュコヒーレンスを保証する。例えば、左側のタグメモ リ212は、プロセッサ112aおよびプロセッサ112bの内部キャッシュメ モリ114に保持されている可能性のあるキャッシュラインアドレスの上位集合 を維持する。キャッシュラインアドレスの上位集合は必ずしも正確なタグステー タス情報を含むとは限らないため、キャッシュメモリ114が実際に放棄された キャッシュラインを有する場合に、タグメモリ212によってキャッシュメモリ 114内の特定のキャッシュラインが共有ステートであることを示すことができ る。他の場合においては、キャッシュメモリ114が実際に主記憶装置132に 書き戻されたキャッシュラインを有する場合に、タグメモリ212におけるキャ ッシュラインアドレスの上位集合によってキャッシュメモリ114内の特定のキ ャッシュラインが変更されたステートであることを示すことができる。 キャッシュラインアドレスの上位集合を維持するために、好ましいタグメモリ 212ではいわゆるインクルージョンルールと呼ばれているものを利用している 。インクルージョンルールは、特定のバスに接続されたキャッシ ュメモリ114に格納されたキャッシュラインアドレスが常にそのバスに割り当 てられたタグメモリのキャッシュラインアドレスの上位集合であることを保証す る。キャッシュラインアドレスを複数のタグメモリ212のうちの1つから削除 する場合、インクルージョンルールでは関連したキャッシュメモリ114に対し て自己のキャッシュメモリにおいてそのキャッシュラインを無効にするように指 示をする。 例えば、左側のタグメモリ212aがメモリ容量を持たないかまたは新たなキ ャッシュアドレスを保持する連帯性を持たない場合、左側のタグメモリ212a から既存のキャッシュラインアドレス(古いキャッシュラインアドレス)のうち の1つを追い出して左側のタグメモリ212aに新たなキャッシュラインアドレ ス用の空間を作成しなければならない。古いキャッシュラインアドレスが無効ス テートであれば、バスに接続されたキャッシュメモリ114は、古いキャッシュ アドレスに関連したキャッシュラインをもう使用してはおらず、単に古いキャッ シュラインアドレスを新たなキャッシュラインアドレスで置き換えるのみである 。 しかしながら、古いキャッシュラインアドレスが共有または所有ステートにあ る場合には、キャッシュメモリ114が古いキャッシュラインアドレスを無効に するまでは左側のコヒーレンスフィルタ200によって古いキャッシュラインア ドレスを左側のタグメモリ212aから追い出すことができない。上述したよう に、左側のタグメモリ212aは左側のバス102に接続されたキャッシュメモ リ114内のキャッシュラインアドレスの上位集合を維持しなければならないた め、まずキャッシュメモリ114で古いキャッシュラインアドレスを無効にし、 その後で左側のタグメモリ212aが古いキャッシュラインアドレスを新たなキ ャッシュラインアドレスに置き換えることができる。 下記においてより詳細に説明するように、左側のコヒーレンスフィルタ2 00aは、無効バストランザクションを行って、左側のバス102に接続された キャッシュメモリ114内の古いキャッシュラインアドレスを無効にする。無効 バストランザクションは、キャッシュメモリ114に最初に古いキャッシュライ ンアドレスを無効にするように指示する左側のバスで起こる。 しかしながら、場合によっては古いキャッシュラインが所有ステートにあリ、 複数のキャッシュメモリ114のうちの1つによって古いキャッシュラインが変 更されている可能性もある。キャッシュメモリ114が古いキャッシュラインを 変更した可能性がある場合、バスリード無効ライン(BRIL)トランザクショ ンが行われる。キャッシュメモリ114が変更済の古いキャッシュラインを有し ている場合、バスリード無効ライントランザクションの間、キャッシュメモリ1 14はバストランザクションに対して指令権を持ち、古いキャッシュラインアド レスに対応する変更後のキャッシュラインを主記憶装置132に書き戻す。変更 後のキャッシュラインを主記憶装置に書き戻した後、左側のコヒーレンスフィル タ200aは左側のタグメモリ212a内の古いキャッシュラインアドレスを新 たなキャッシュラインアドレスと置き換える。このように、キャッシュラインア ドレスの上位集合をタグメモリ212において維持するためには、場合によって は、古いキャッシュラインを置き換えることができるようになる前に、キャッシ ュメモリ114によって変更後のデータを主記憶装置132に書き戻さなければ ならないこともある。 キャッシュラインアドレス400および各タグメモリ212のフォーマットを 図4に示す。キャッシュラインアドレス400は、概念的に2つの部分に分割さ れる。第1の部分はタグページアドレス402を含み、第2の部分はオフセット アドレス404を含む。好ましい実施の形態では、タグメモリ212におけるタ グエントリ410の数がいわゆるタグページと呼ばれ ているものの大きさを規定する。好ましくは、タグメモリ212は各々この数の タグエントリ410を有し、よってタグページサイズは同一である。 好ましい実施の形態では、タグページアドレス402は、キャッシュラインア ドレス400を含むタグページを識別し、オフセットアドレス404は、キャッ シュラインアドレス400のタグページ内での位置を識別する。特に、キャッシ ュラインアドレス400の上位側のビットによってタグページアドレスを識別し 、下位側のビットによつてオフセットアドレス404を識別する。 一般に、下位ビットによってキャッシュラインアドレスのタグページ内での位 置を識別するので、下位ビットはインデックスと呼ばれる。例えば、第1のキャ ッシュラインアドレス400についてみると、上位アドレスビットによってタグ ページアドレス402が識別され、下位アドレスビットによってタグページ内の キャッシュアドレス線400の位置が識別される。 タグページのサイズは変更可能であるため、タグページアドレス402および オフセットアドレス404に割り当てられるビット数も変わる。好ましい実施の 形態では、左側のタグメモリ212aおよび右側のタグメモリ212bが216個 のエントリを含む場合、オフセットアドレス404はキャッシュラインアドレス 400の下位16ビットであり、タグページアドレス402はキャッシュライン アドレス400の上位15ビットである。上述したように、I/Oタグメモリ2 12cの方がサイズが小さいため、含んでいるエントリ数も少ない。好ましい実 施の形態では、I/Oタグメモリ212は32個のエントリを含む。 以下の表は、様々なサイズのタグメモリ212と、キャッシュラインアドレス 400でのおよび対応するタグページアドレス402およびオフセットアドレス 404のサイズを示している。 好ましい実施の形態では、コヒーレンスフィルタ200は、ダイレクトマッピ ング手法を用いてキャッシュラインアドレス400をタグメモリ200に格納す る。ダイレクトマッピングは、各キャッシュラインアドレス400が1つの特定 のタグエントリ410にマッピングされることを意味する。図4は、216個のタ グエントリ410からなる好ましいタグメモリ212を示している。各タグエン トリ410は、キャッシュラインアドレス400のタグページアドレス402を 含む。また、各タグエントリ410は、コヒーレンスステータスビット412お よびパリティビット414を含む。パリティビット414は、周知のパリティエ ラー検出用のものである。 プロセッサ112がキャッシュラインアドレス400にアクセスすると、コヒ ーレンスフィルタ200はオフセットアドレス404を使用して特定のタグエン トリ410を識別する。次に、コヒーレンスフィルタ200がタグページアドレ ス402を識別されたタグエントリ410に格納する。例えば、左側のバス10 2上の第1のプロセッサ112aが第1のタグページ内の第1のキャッシュライ ンアドレス400にアクセスすると、左側のコヒーレンスフィルタ200aはキ ャッシュラインオフセットアドレス404を使用して第1のタグエントリ410 を左側のタグメモリ212aに配置する。次に、左側のコヒーレンスフィルタ2 12aがタグページアドレス402を左側のタグメモリ212aの第1のタグエ ントリ410に格納する。 キャッシュラインアドレス400のタグページアドレス402を格納すること に加え、タグエントリ410はキャッシュラインアドレス400についての一組 のコヒーレンスステータスビット412も格納する。好ましくは、タグエントリ 410におけるコヒーレンスステータスビット412は好ましい3つのコヒーレ ンスステートすなわち、無効ステート、共有ステートまたは所有ステートを含む 。これら3つのコヒーレンスステートは、2つのコ ヒーレンスステータスビット412で表される。以下の表に、コヒーレンスステ ータスビット412に割り当てられるコヒーレンスステートを定義する。 2. タグコントローラ キャッシュラインアドレス400をタグメモリ212に直接マッピングするた めの制御ロジックは、タグコントローラ300内に設けられている。左側のバス 102に割り当てられたタグコントローラ300を左側のタグコントローラ30 0aと呼ぶ。右側のバス104に割り当てられたタグコントローラ300を右側 のタグコントローラ300bと呼ぶ。I/Oバス106に割り当てられたタグコ ントローラ300をI/Oタグコントローラ300cと呼ぶ。例えば、左側のタ グコントローラ300は、キャッシュラインアドレス400を左側のタグメモリ 212aに直接マッピングするダイレクトマッピングロジックを含む。 タグコントローラ300における制御ロジックは、キャッシュラインをキャッ シュメモリ114に直接マッピングするのに用いられる制御ロジックと同様であ る。このように、タグコントローラ300は当業者らに周知のダイレクトマッピ ングロジックを利用する。しかしながら、これは4ウェイセットアソシアティブ マッピングを用いている好ましいPentium Proプロセッサ112のキ ャッシュ制御ロジックとは異なる。 下記においてより詳細に説明するように、コヒーレンスフィルタ200は、タ グメモリ212内のコヒーレンスステータス情報を一部利用して、クロスバスト ランザクションを実施するか否かを判断する。好ましい実施の形態では、各タグ コントローラ300は自己所有タグメモリ212および他のバス に割り当てられたタグメモリ212にも接続されている。各タグコントローラ3 00はタグメモリ212のタグエントリ410にアクセスすることができるが、 各タグコントローラ300は自己に割り当てられたタグメモリ212のタグエン トリを変更するのみである。例えば、左側のタグコントローラ300aは左側の タグメモリ212a、右側のタグメモリ212bおよびI/Oタグメモリ212 cのタグエントリ410にアクセスすることができるが、左側のタグコントロー ラ300は左側のタグメモリ212aのタグエントリ410のみ変更する。 例えば、左側のバス102が特定のキャッシュラインアドレス400について のバストランザクションを送信すると、左側のタグコントローラ300aはキャ ッシュラインアドレス400を用いて対応するコヒーレンスステータスビット4 12を右側のタグメモリ212aおよびI/Oタグメモリ212bから取得する 。この例では、右側のコヒーレンスステータスビットを取得するために、キャッ シュラインアドレス400が右側のタグメモリ212bに直接マッピングされる 。また、I/Oコヒーレンスステータスビット412を取得するために、キャッ シュラインアドレスがI/Oタグメモリ212cに直接マッピングされる。本詳 細な説明全体を通して、他のバスに割り当てられた他のタグメモリ212から取 得したコヒーレンスステータスビット412を、リモートコヒーレンスステータ スビット412と呼ぶ。左側のタグコントローラ300aがリモートコヒーレン スステータスビット412を取得すると、左側のタグコントローラ300aはこ のリモートコヒーレンスステータスビット412をサイクルエンコーダ302に 転送する。 3. サイクルエンコーダ 各サイクルエンコーダ302は、バス102、104または106のうちの1 本においてどのような種類のバストランザクションが発生しているか を判断する。左側のバス102を監視するために割り当てられたサイクルエンコ ーダ302を左側のサイクルエンコーダ302aと呼ぶ。右側のバス104を監 視するために割り当てられたサイクルエンコーダ302を右側のサイクルエンコ ーダ302bと呼ぶ。I/Oバス102を監視するために割り当てられたサイク ルエンコーダ302をI/Oサイクルエンコーダ302cと呼ぶ。このように、 各サイクルエンコーダ302は、自己が割り当てられたバス102、104また は106に接続されたアドレスおよび制御線108を監視する。 好ましくは、サイクルエンコーダ302は、バス102、104および106 で実現される特定のバスプロトコルに関連した周知の手法を利用してバス制御線 を監視し、バストランザクションが主記憶装置132からデータを読み出してい るかそれに対してデータを書き込んでいるかを判断する。好ましい実施の形態で は、サイクルエンコーダ302は、周知の手法を用いてどのPentium P roバストランザクションが主記憶装置132からデータを読み出しているかそ れに対してデータを書き込んでいるかを判断する。サイクルエンコーダ302が 自己に割り当てられたバスで発生しているバストランザクションのタイプを判断 したら、サイクルエンコーダ302はそのバスサイクルのタイプをルールテーブ ル304に送信する。 4. ルールテーブル ここで、図3に示すルールテーブル304に注目すると、ルールテーブルはキ ャッシュコヒーレンスを維持するためにクロスバストランザクションを実施する 時を判断する。好ましい実施の形態では、左側のバス102に割り当てられたル ールテーブル304を左側のルールテーブル304aと呼ぶ。右側のバス102 に割り当てられたルールテーブル304を右側のルールテーブル304bと呼ぶ 。I/Oバスに割り当てられたルールテーブル304をI/Oルールテーブル3 04cと呼ぶ。 各ルールテーブル304は、サイクルエンコーダ302から得られるバストラ ンザクションタイプ情報およびリモートコヒーレンスステータスビット412を 評価する。好ましい実施の形態では、各ルールテーブル304は、スタティック ランダムアクセスメモリ(SRAM)内に保持された大きな真理値表である。各 ルールテーブルのメモリ位置に格納されているのは、キャッシュコヒーレンスを 保証するために実行する必要があるクロスバストランザクションおよびローカル バストランザクションのタイプである。 また、ルールテーブル304は、スヌープアクションも行う。好ましい実施の 形態では、キャッシュラインのコピーを共有していることがリモートタグメモリ によって示されると、ルールテーブル304はHIT#信号をアサートする。H IT#信号をアサートすることで、リモートバス上の1つまたは複数のキャッシ ュメモリがキャッシュラインのコピーを共有していることが示される。ルールテ ーブル304はまた、他のバスでの以後のコードリードトランザクションによっ てクロスバストラフィックが生成されないように、コードリードトランザクショ ンを強制的に共有ステートにするためにHIT#信号もアサートする。 キャッシュコヒーレンスを保証するのに必要な特定のクロスバストランザクシ ョンコードが、システムアクセスコントローラ130の制御下でルールテーブル 304にロードされる。好ましいマルチバスシステム100は、システムの初期 化中にクロスバストランザクションコードをルールテーブル304にロードする 。クロスバストランザクションコードは変更可能なものであるため、クロスバス トランザクションは異なるマルチバスシステム100に対して柔軟になることが できる。 B. バッファマネージャ 図1および図2に示すようなバッファマネージャ210、中央リクエストリス ト208およびデータインタフェースバッファ134は、複数のバス間 での通信を最適化する。好ましい実施の形態では、中央リクエストリスト208 、バッファマネージャ210およびデータインタフェースバッファ134は、バ ス102、104および106のいずれからもアクセス可能なメモリセルのマル チポートプール(図示せず)を含む。有利なことに、バス102、104または 106はいずれも、独立接続パスを使用せずに他のバス102、104または1 06に対して読み書きを行うことができる。 好ましい実施の形態では、各バストランザクションに関連した情報はさらに3 つの部分に区分けされ、アドレスセル、リクエストセルおよびデータセルと呼ば れる3つの異なるメモリセルに格納されている。したがって、各データセル、各 リクエストセルおよび各アドレスセルの間に1対1の対応が存在する。下記にお いてより詳細に説明するように、アドレスセルはバッファマネージャ210内に 、リクエストセルは中央リクエストリスト208内に、データセルはデータイン タフェースバッファ134内に設けられている。 好ましいバッファマネージャ210を図5Aおよび図5Bに示す。図5Aに注 目すると、バッファマネージャ210は、アドレスセル500のプールと、アド レスセルのプライオリティエンコーダ504と、左側のファーストインファース トアウト(FIFO)メモリ506aと、I/O FIFO506bと、右側の FIFO506cとを備えている。各アドレスセル500はマルチポートであり 、アドレスセルのプライオリティエンコーダ504、バスマスタ202、バスス レーブ204、メモリコントローラ206と通信を行う他、図5Bに示されるよ うに、比較器510とも通信を行う。 好ましいバッファマネージャ210は、64個のアドレスセル500を含む。 図5Aに示されるように、各アドレスセル500は、「使用中」ビット502、 メモリアドレス504および一組のデータセルステータスビット505を含む。 使用中ビット502は、特定のアドレスセル500が利用できるか否かを示して いる。好ましい実施の形態では、使用中ビット502は、 アドレスセル500が使用中であるかフリーであるかを示すように設定されてい る。メモリアドレス504はメモリアドレス504を含み、データセルステータ スビット505はバストランザクションのタイプを含む。特に、データセルステ ータスビット505は、無効バストランザクションが行われるか否かを判断する 。 ここで、アドレスセルのプライオリティエンコーダ504に注目すると、アド レスセルのプライオリティエンコーダ504は、どのアドレスセル500が使用 中で、どのアドレスセル500がフリーであるかを判断し、新たなバストランザ クション情報を受信する。好ましい実施の形態では、アドレスセルのプライオリ ティエンコーダ504におけるロジックが、各アドレスセル500における使用 中ビット502を評価することによってどのアドレスセル500がフリーである かを判断する。使用中ビット502が設定されている場合には、そのアドレスセ ル500は使用中である。使用中ビット502が設定されていなければ、そのア ドレスセルはフリーである。フリーのセルは総当たり式に選択される。 アドレスセルのプライオリティエンコーダ504は、どのアドレスセル500 がフリーであるかを判断するだけでなく、異なるバス102、104および10 6にフリーのアドレスセル500を割り当てる。好ましくは、アドレスセルのプ ライオリティエンコーダ504がフリーのアドレスセル500を総当たり式に異 なるバス102、104および106に割り当てる。下記においてより詳細に説 明するように、バストランザクション情報がフリーアドレスセル500に格納さ れている場合、使用中ビット502が設定され、アドレスセル500がフリーで はないことが示される。 例えば、第1、第2および第3のアドレスセル500がフリーであると仮定す る。好ましいプライオリティエンコーダ504は、第1、第2および第3のアド レスセル500がフリーであると判断し、第1のアドレスセル50 0を左側のバス102に、第2のアドレスセル500を右側のバス104に、第 3のアドレスセル500をI/Oバス106に割り当てる。4番目のアドレスセ ル500がフリーになると、アドレスセルのプライオリティエンコーダ504は 左側のバス102に戻り、この第4のアドレスセル500を左側のバス500に 割り当てる。好ましいアドレスセルのプライオリティエンコーダ504はフリー のアドレスセルを異なるバスに割り当てるが、アドレスセルのプライオリティエ ンコーダ504を様々なアロケーションスキームに利用してフリーのアドレスセ ル500を異なるバス102、104および106に割り当てることも可能であ るのは当業者であれば理解できよう。 ここで、バッファマネージャにおけるFIFOメモリ506に注目すると、F IFOメモリ506は、割り当てられたアドレスセル500を識別するアドレス セル識別子を一時的に格納する。アドレスセル識別子は、割り当てられたアドレ スセル500のメモリ位置を含むデータ変数である。好ましい実施の形態では、 アドレスセル識別子は64個のアドレスセル504を識別する。以下においてよ り詳細に説明するように、バスマスタ202はFIFOメモリ506内のアドレ スセル識別子を利用して、このアドレスセル識別子によって識別されたアドレス セルメモリ位置にアクセスする。 好ましい実施の形態では、各FIFOメモリ506はバススレーブ204およ びコヒーレンスフィルタ200に対して出力を行う。このように、左側のFIF Oメモリ506aは左側のバススレーブ204aおよび左側のコヒーレンスフィ ルタ200aに対して出力を行う。右側のFIFOメモリ506bは、右側のバ ススレーブ204bおよび右側のコヒーレンスフィルタ200bに対して出力を 行う。I/O FIFOメモリ506cは、I/Oバススレーブ204cおよび I/Oコヒーレンスフィルタ200cに対して出力を行う。複数のバススレーブ 204のうちの1つまたは複数のコヒーレンスフィルタ200のうちの1つでバ ストランザクションを他のバスに 送信したい場合、自己が接続されたFIFOメモリ506からアドレスセル識別 子を1つ取得する。 このように、好ましいバッファマネージャ210は、全てのバス102、10 4および106を相互接続するアドレスセル500のプールを提供する。バスの パスを別々にするのではなくアドレスセル500の上記のようなプールを提供す ることで、システムの複雑さが少なくなる。さらに、アドレスセルプライオリテ ィエンコーダ504およびFIFOメモリ506によって、フリーアドレスセル 500がバス102、104および106に等しく分配されることが保証される 。 図5Bに示す本発明の他の態様において、好ましいバッファマネージャ210 は、アドレス衝突を識別する複数のアドレス比較器510を含む。一般に、アド レス衝突は、2つの異なるバストランザクションが同一のデータ値に関連し、同 時に発生した時に生じる。このような状況では、2つのアドレスセル500が、 2つの異なるバストランザクションについてアドレスセル500に同一のメモリ アドレス504を含む可能性がある。このような状況では、不適切なバストラン ザクションが起こり得る。 複数のバススレーブ204のうち1つがバストランザクションを受信すると、 バススレーブ204はそのバストランザクションに関連したアドレスを、バスス レーブ204と同一のバスに割り当てられたアドレス比較器510に転送する。 アドレス比較器510は、新たなメモリアドレス504と使用中アドレスセル5 00内の全てのメモリアドレス504とを比較する。使用中アドレスセル500 において同一のメモリアドレスが検出されると、アドレス比較器510はバスス レーブ204にアドレス衝突が存在することを通知する出力を生成する。これを 受けて、バススレーブ204は、アドレス衝突を生み出したバストランザクショ ンを開始したプロセッサ112にリトライ信号を送信する。よって、プロセッサ 112ばバストランザクショ ンを後で開始する。 好ましい実施の形態では、各バスに一組のアドレス比較器510が割り当てら れている。このように、左側のアドレス比較器510aの組は左側のバス102 に割り当てられている。右側のアドレス比較器510cの組は右側のバス104 に割り当てられている。I/Oアドレス比較器510の組はI/Oバス106に 割り当てられてる。バススレーブ204が新たなメモリアドレス504を受信す ると、バススレーブ204が新たなメモリアドレス504をアドレス比較器51 0に転送する。次に、アドレス比較器501が使用中アドレスセル500に存在 するメモリアドレス504を評価し、アドレス衝突が存在するか否かを判断する 。 例えば、右側のバススレーブ202bはI/Oトランザクションを受信し、こ れをI/Oバス106上のI/Oブリッジ120のうちの1つに送る。I/Oト ランザクションに関連したメモリアドレスの受信時、右側のバススレーブ202 bはこのメモリアドレスを右側のアドレス比較器510cに転送する。右側のア ドレス比較器510cは、このメモリアドレスと使用中アドレスセル500内の 既存のメモリアドレス504とを比較する。メモリアドレスのコピーが使用中ア ドレスセル500に存在すると、アドレス比較器はアドレス衝突が存在する右側 のバススレーブ202bに信号を返送する。この例では、右側のバススレーブ2 02bはプロセッサ112cまたは112dに対してI/Oトランザクションを 後でリトライするように指示をする。 複数のタグメモリ212のうちの1つでエントリを無効にする無効バストラン ザクションを行う必要がある場合、バスが使用中ではなくなるまで無効動作を先 送りして遅らせると望ましい。1つの方法として、古いキャッシュラインアドレ ス(無効にされるキャッシュラインアドレス)をバッファマネージャに格納する ことが挙げられる。好ましい実施の形態では、バッファ マネージャ210におけるアドレスセル500は、キャッシュラインに接続され たタグページアドレス402およびオフセットアドレス404を含むキャッシュ ラインのメモリアドレス全体を含む。古いキャッシュラインアドレスを複数のア ドレスセル500のうちの1つに加えることで、古いキャッシュラインアドレス が実際には無効になっていなくても、新たなバストランザクションでマルチバス システム100を進めることができる。 もう1つのバストランザクションがバッファマネージャ210内に存在する古 いキャッシュラインアドレス400に関連していると仮定する。複数のバススレ ーブ204のうちの1つがバストランザクションを受信すると、バススレーブ2 04はこのバストランザクションに関連したアドレスをアドレス比較器510に 転送する。アドレス比較器510は、バストランザクションに関連したオフセッ トアドレス404と古いキャッシュラインアドレスのオフセットアドレス404 とを比較する。アドレス衝突が存在する場合には、比較器はデータセルのステー タスビット505を評価する。データセルのステータスビット505によって古 いキャッシュラインアドレスを無効にする必要があることが示されると、古いキ ャッシュラインアドレス400を無効にできるようになるまで新たなバストラン ザクションが強制的にリトライされる。この方法の他の実施の形態については、 「他の実施の形態」のセクションで後述する。 C. 中央リクエストリスト ここで、図6に示されるような好ましい中央リクエストリスト208に注目す ると、中央リクエストリスト208は、リクエストセル600のプールと、左側 のバスプライオリティエンコーダ602aと、右側のバスプライオリティエンコ ーダ602bと、I/Oバスプライオリティエンコーダ602cとを含む。各リ クエストセル600はマルチポートであり、アドレスセルのプライオリティエン コーダ602の各々と通信を行う。好ましい中央リク エストリスト208には、64個のリクエストセル600がある。さらに、64 個のアドレスセル500と64個のリクエストセル600との間には1対1の対 応が存在する。 各リクエストセル600は、ターゲットバス識別子604と、バストランザク ションコード606と、オーナーバス識別子608とを含む。ターゲットバス識 別子604は、宛先のバス102、104または106を識別する。下記におい てより詳細に説明するように、バス識別子604は予め規定されているのではな く、好ましい実施の形態では必要に応じてバス識別子604を設定し、右側のバ ス102、左側のバス104またはI/Oバス106のいずれかを識別する。例 えば、ターゲットバス識別子604は、バストランザクションコード606が右 側のバス104用であると指定することができる。一方、バストランザクション コードは、宛先のバスで行うバストランザクションのタイプを識別する。好まし い実施の形態では、バストランザクションコード606によって識別されたバス トランザクションをバスマスタ202が行う。オーナーバス識別子608は開始 したバスを識別する。例えば、オーナーバス識別子604は、左側のバス102 で開始されたバストランザクションコード606を示すことができる。 バスプライオリティエンコーダは、各リクエストセル600のターゲットバス 識別子604を評価し、どのリクエストセルが異なるバスを指定しているかを判 断する。次に、これらのバス102、104または106のうちの1本に関連し たバスマスタ202が、特定のリクエストセル600において識別されたバスト ランザクションを行う。例えば、左側のバスプライオリティエンコーダ602a は全てのターゲットバス識別子604を評価して、どのリクエストセル600が 左側のバス102用のものか判断する。右側のバスプライオリティエンコーダ6 02bは、全てのターゲットバス識別子604を評価して、どのリクエストセル 600が右側のバス104用のものか判 断する。I/Oバスプライオリティエンコーダ602cは、全てのターゲットバ ス識別子604を評価して、どのリクエストセル600がI/Oバス106用の ものか判断する。 また、宛先のバス102、104および106を識別することに加えて、各バ スプライオリティエンコーダ602は、特定のバス102、104または106 に関連したバスリクエストセル500のうち、どのバスリクエストセルの優先度 が最も高いかを判断する。好ましい実施の形態では、各バスプライオリティエン コーダ602は、総当たりロジックを用いて優先度が最も高いバスリクエストセ ル600を判断する。各バスプライオリティエンコーダ602が自己に割り当て られたバスに優先度の最も高いリクエストセル600を転送すると、各バスプラ イオリティエンコーダ602は優先度の割り当てを各リクエストセル600に対 してローテーションする。総当たりロジックでは、各バスプライオリティエンコ ーダ602が全てのバスリクエストセル600に対して連続的に最も高い優先度 を割り当てることができる。このような総当たりロジックは当業者間で周知であ る。 例えば、複数のリクエストセル600のうちの2つが右側のバス104用のも のであることを右側のバスプライオリティエンコーダ602bが識別したと仮定 する。右側のバスプライオリティエンコーダ602bは、第1のリクエストセル 600に最も高い優先度を割り当て、第1のリクエストセル識別子を右側のバス マスタ202bに送る。次に、右側のバスプライオリティエンコーダ602bは 第2のリクエストセル600に最も高い優先度を割り当て、第2のリクエストセ ル識別子を右側のバスマスタ202bに送る。右側のバスプライオリティエンコ ーダ602bが右側のバス104に割り当てられたリクエストセル600の最後 に達すると、右側のバスプライオリティエンコーダはリクエストセル500のプ ールの先頭に戻る。 このように、中央リクエストリスト208は、全てのバス102、104 および106を相互接続するリクエストセル600のプールを提供する。このよ うなリクエストセル600のプールは、バス接続パスを分離する場合と比べて、 システムの複雑さを軽減する。さらに、中央リクエストリスト208におけるバ スプライオリティエンコーダ602において、リクエストセルにおける各バスト ランザクションがバス102、104および106によって行うことができる。 IV. データインタフェースバッファ ここで、図7に示されるような好ましいデータインタフェースバッファ134 に注目すると、データインタフェースバッファ134は、データセル700のプ ールと、制御およびインデックス作成メカニズム702とを含む。各リクエスト セル600はマルチポートであり、奇数主記憶装置モジュール132aおよび偶 数主記憶装置モジュール132bに接続されたデータ線データ線110a、11 0bと110c及び142aと142bと通信を行う。好ましい中央リクエスト リスト208には、64個のデータセル700がある。さらに、64個のデータ セル700と、64個のリクエストセル600と、64個のアドレスセル500 との間には1対1の対応が存在する。各データセル700は、バストランザクシ ョンに関連したデータ値を含む。 制御およびインデックス作成メカニズム702は、バススレーブ204からD IB制御線140を受け取る。DIB制御線140は、特定のデータセル700 およびバス102、104または106のうちの1本を識別する。例えば、I/ Oバススレーブ204が新たなバストランザクションを複数のアドレスセル50 0のうちの1つと複数のリクエストセル600のうちの1つに加えると、I/O バススレーブ204もその新たなバストランザクションに関連したデータを対応 するデータセル700に加える。この例では、I/Oバススレーブ204はDI B制御線をアサートし、適切なデータセル700を識別する。制御およびインデ ックス作成メカニズム702は次に、 適切なデータセル700をイネーブルにしてI/Oデータ線110cからデータ を受信する。 このように、データインタフェースバッファは、全てのバス102、104ま たは106からアクセス可能なデータセル700のプールを提供する。バスを別 々に相互接続するのではなくデータセル700の上記のようなプールを提供する ことで、システムの複雑さが少なくなり、パフォーマンスが改善される。 V. キャッシュコヒーレンス維持 コヒーレンスフィルタ200によって監視されるバストランザクションは、バ スリードラインコマンドおよびバスリード無効コマンドを含む。バスリードライ ン(BRL)コマンドは、インストラクションコードまたはデータのキャッシュ ラインを主記憶装置132から読み出して無効にする。バスリード無効ライン( BRIL)コマンドは、キャッシュラインを無効にする。好ましいルールテーブ ル304ではこれらのバスコマンドに適応しているが、ルールテーブル304は 他の異なるバスコマンドにも適応可能であり、好ましい実施の形態のバスコマン ドに限定されないことは当業者であれば理解できよう。 A. バスリードラインコマンド処理 図8は、バス102、104または106のうちの1本がバスリードライン( BRL)コマンドを実行する際にキャッシュコヒーレンスを維持するためのフロ ーチャートを示している。スタートブロック800から開始して、複数のプロセ ッサ112のうちの1つがBRLコマンドを実行する。BRLコマンドの実行中 、プロセッサ112が、所望のキャッシュラインのキャッシュラインアドレス4 00を自己が割り当てられたコヒーレンスフィルタ200およびバススレーブ2 04に送信する。 バススレーブ204がキャッシュラインアドレスを受信すると、バススレ ーブ204はこのキャッシュラインアドレスを同一のバスに割り当てられたアド レス比較器510に転送する。アドレス比較器510は、オフセットアドレス4 04と、使用中アドレスセル500に存在するメモリアドレス504のオフセッ ト部分とを比較し、アドレス衝突の可能性があるか否かを判断する。アドレス比 較器510はまた、データセルのステータスビット505を評価し、アドレス衝 突を生成したアドレスセル500が無効トランザクションに関連しているか否か 確認する。関連している場合には、アドレス比較器510はアドレス衝突信号を バススレーブ204に送信する。次に、バススレーブ204が要求を出したプロ セッサ112に対してBRLコマンドを先送りしてリトライするよう指示する。 アドレス衝突が存在することがアドレス比較器によって示されなかった場合に は、好ましい実施の形態はブロック802に進み、バス102、104または1 06がBRLコマンドを実行していることをサイクルエンコーダ302が判断す る。また、バス102、104または106に割り当てられたタグコントローラ 300がBRLコマンドにおいて識別されたキャッシュラインアドレス400を 使用し、他のバス102、104および106(リモートタグメモリ212)に 割り当てられたタグメモリ212内のキャッシュラインアドレス400にアクセ スする。リモートタグメモリ212は、リモートキャッシュラインアドレス40 0が無効ステート、共有ステートまたは所有ステートのいずれにあるかを示すリ モートコヒーレンスステータスビット412を返送する。 特定のキャッシュラインアドレスを所有ステートで含むリモートタグメモリ2 12は1つしかない。しかしながら、2つ以上のリモートタグメモリ212が特 定のキャッシュラインアドレスを共有または無効ステートで含んでもよい。1つ のリモートタグメモリ212がキャッシュラインアドレスのコピーを共有ステー トで含み、別のリモートタグメモリ300が同一のキ ャッシュラインアドレスのコピーを無効ステートで含む場合には、共有ステート にあるコヒーレンスステータスビット412が指揮をとる。下記においてより詳 細に説明するように、2つ以上のリモートタグメモリ300が特定のキャッシュ ラインアドレスのコピーを共有ステートで含む場合には、コヒーレンスルール3 04は2つ以上のリモートバス102、104または106においてリモートバ ストランザクションを行い、キャッシュコヒーレンスを保証することができる。 また、リモートタグメモリ300の中には特定のキャッシュラインアドレス40 0を含むものが存在しない場合には、キャッシュラインアドレス400に関連し たリモートコヒーレンスステータスビット412が無効ステートであるかのよう に扱われる。 例えば、左側のバス102上の第1のプロセッサ112aがブロック802に おける特定のキャッシュラインアドレス400についてのBRLコマンドを生成 し、左側のサイクルエンコーダ302aは左側のバスでBRLコマンドが実行さ れていると判断する。また、左側のタグコントローラ300がキャッシュライン アドレス400を用いて右側のリモートタグメモリ212bおよびリモートI/ Oタグメモリ212cにアクセスする。タグコントローラ300は、右側のタグ メモリ212bおよびI/Oタグメモリ212cから、キャッシュラインアドレ ス400が右側のタグメモリ212bにあるか否か、I/Oタグメモリ212c が無効ステート、共有ステートまたは所有ステートのいずれであるかを示すリモ ートコヒーレンスステータスビット412を取得する。右側のタグメモリ212 bおよびI/Oタグメモリ212cのいずれもキャッシュラインアドレス400 を含んでいない場合には、左側のタグコントローラ300aがリモートコヒーレ ンスステータスビット412を無効ステートであるかのように扱う。 ここで、ローカルおよびリモート指定を用いている時の好ましいルールテーブ ル304の動作に注目すると、ローカルバス102、104または10 6に接続されたサイクルエンコーダ302は、ローカルルールテーブル304に バストランザクション(BRLコマンド)のタイプおよびリモートキャッシュス テータスビット412のステータスを送信する。リモートキャッシュラインアド レス400が無効ステートにあることがリモートコヒーレンスステータスビット 412によって示されると、ローカルルールテーブル304はブロック804に 進む。好ましい実施の形態では、リモートコヒーレンスステータスビット412 が無効ステートにあると、ローカルルールテーブル304はリモートバス102 、104または106のいずれでもBRILクロスバストランザクションを生成 しない。代わりに、ローカルルールテーブル304はキャッシュラインアドレス の上位集合400をローカルタグメモリ300において維持する。 ブロック804に進むと、ローカルプロセッサ112は、自己の内部キャッシ ュメモリ114に対して問い合わせを行い、ローカルプロセッサ112の中に所 望のキャッシュラインのコピーを持っているものがあるか否かを判断する。好ま しい実施の形態では、複数のプロセッサ112のうちの1つは、変更後のキャッ シュラインがプロセッサのキャッシュメモリ114に存在することがバススヌー プ動作によって示されるとHITM#信号をアサートする。HITM#信号は複 数のアドレスおよび制御線108のうちの1本であり、最新のキャッシュライン を有するプロセッサ112はキャッシュラインを主記憶装置132に書き戻す必 要があるということを示している。 ブロック806では、変更後のキャッシュラインを有するローカルプロセッサ 112がバストランザクションに応答し、同時に変更後のキャッシュラインを主 記憶装置132に書き戻すことによって主記憶装置132を更新する。ブロック 808に進むと、ローカルルールテーブル304はローカルタグコントローラ3 00に対して、ローカルタグメモリ212内のコヒーレンスステータスビット4 12を共有ステートに設定するよう指示する。次に、 ローカルルールテーブル304はENDブロック810に進む。 ブロック804に戻り、ローカルプロセッサ112がキャッシュラインの変更 後のコピーを含まない場合には、ルールテーブル304はブロック812に進む 。ブロック812では、ローカルルールテーブル304は、ローカルバス102 、104または106上のHIT#信号を評価する。上述したように、ローカル プロセッサ112は、ローカルプロセッサ112が自己のキャッシュメモリ11 4内に未変更のキャッシュラインのコピーを含んでいる場合にHIT#信号を生 成する。ローカルプロセッサ112が未変更のキャッシュラインのコピーを確か に含んでいる場合には、ローカルルールテーブル304はブロック814に進む 。 ブロック814では、ローカルバススレーブ204が主記憶装置132からキ ャッシュラインを取得する。キャッシュラインアドレスが奇数である場合には、 ローカルバススレーブ204は奇数主記憶装置132aからキャッシュラインを 取得する。キャッシュラインアドレスが偶数である場合には、ローカルバススレ ーブ204は偶数主記憶装置モジュール132bからキャッシュラインを取得す る。ローカルバススレーブ204は次に要求を出しているプロセッサ112にキ ャッシュラインを送信する。 ブロック808に進み、ローカルルールテーブル304はローカルタグコント ローラ300に対してローカルタグメモリ300内のコヒーレンスステータスビ ット412を共有ステートに設定するよう指示する。ローカルルールテーブル3 04は次に、ENDブロック810に進む。 ブロック812に戻り、ローカルプロセッサ112がHIT#信号またはHI TM#信号をアサートしないと、ブロック816によって示されるようにキャッ シュラインはローカルプロセッサ112には存在しない。ブロック818に進み 、ローカルタグメモリ212がキャッシュラインアドレス400のコピーを含ま ない場合、ルールテーブル304はこのキャッシュライン アドレス400をローカルタグメモリ212に加える。上述したように、ローカ ルタグメモリは既存のキャッシュラインアドレスをローカルタグメモリから追い 出して新たなキャッシュラインアドレスのために空間を確保する必要がある場合 がある。そのような場合には、古いキャッシュラインアドレスをまず無効にし、 その後で新たなキャッシュラインアドレスをローカルタグメモリに追加する。次 に左側のバススレーブが主記憶装置132から所望のキャッシュラインを取得し 、要求を出しているプロセッサ112にこれを送信する。 ローカルルールテーブル304はブロック822に進み、ローカルタグコント ローラ300にローカルタグメモリ212のキャッシュラインのコヒーレンスス テータスビット412を所有ステートに設定するよう指示する。しかしながら、 ローカルバス上のローカルプロセッサ112のうちの1つがHIT#信号をアサ ートすると、ローカルタグメモリ212は共有に設定される。また、BRLコマ ンドがコード用でリモートステータスが所有されていない場合には、ルールテー ブル304はHIT#信号をアサートする。そのときにHITM#が検出されな ければ、BRLコマンドを開始したプロセッサは自己の内部キャッシュステータ スを共有にマークする。HITM#信号がアサートされると、内在的な書き戻し が行われ、ローカルタグメモリ212が共有に設定される。ローカルルールテー ブル304はENDブロック810に進む。 ブロック802に戻り、以下、リモートタグメモリ300によって、リモート キャッシュラインアドレス400が共有ステートにあることが示された場合に何 が起こるかについて的を絞って説明する。リモートコヒーレンスステータスビッ ト412によってキャッシュラインアドレス400が共有ステートにあることが 示されると、ローカルルールテーブル304はリモートバス102、104また は106上にBRLクロスバストランザクション を生成しない。代わりに、ローカルルールテーブル304は主記憶装置132か ら所望のキャッシュラインを取得し、ローカルタグメモリ300を更新する。 ブロック830に進み、コードリードのために、ローカルルールテーブル30 4は、ローカルバス102、104または106にHIT#信号をアサートする 。次に、ローカルルールテーブル304はブロック832に進む。ブロック83 2では、ローカルルールテーブル304は主記憶装置132から所望のキャッシ ュラインを取得する。所望のキャッシュラインアドレスがローカルタグメモリ2 12内に存在しない場合には、タグコントローラは新たなキャッシュラインアド レス400をローカルタグメモリ212に追加する。上述したように、タグコン トローラ300は古いキャッシュラインアドレス400のうちの1つを追い出し て新たなキャッシュラインアドレス400のために空間を確保する場合もある。 808が十分に満足されるように進み、ローカルルールテーブル304はキャ ッシュラインのコヒーレンスステータスビット412を共有に設定してENDブ ロック610に進む。 ブロック802に戻り、以下、複数のリモートタグメモリ212のうちの1つ によって、複数のリモートキャッシュラインアドレス400のうちの1つが所有 ステートにあることが示された場合に何が起こるかについて的を絞って説明する 。リモートコヒーレンスステータスビット412によってリモートキャッシュラ インアドレス400のうちの1つが所有ステートにあることが示されると、リモ ートバスは所望のキャッシュラインの最新バージョンを有しているため、最新の キャッシュラインをリモートバスから取得しなければならない。ブロック802 では、ルールテーブル304がキャッシュコヒーレンスを保証するのに必要なB RLクロスバストランザクションを生成する。好ましい無効、共有および所有プ ロトコルでは、特定の時点で 時を違えずキャッシュラインを所有できるバスは1本のみである。このように、 リモートキャッシュラインを異なるコヒーレンスステートに変更しなければなら ない。 ブロック840に進み、ローカルルールテーブル304は、ローカルBRLコ マンドを遅延にできるか否かを判断する。ローカルBRLコマンドを遅延するこ とで、ローカルバスがバストランザクションの送信を続けることができる。上述 したように、バストランザクションを発行するプロセッサ104は、そのDEN #信号をアサートすることによってバストランザクションが遅延可能なものであ るか否かを示す。DEN#信号がアサートされると、ローカルルールテーブル3 04はブロック842に進み、ローカルバススレーブ204に対してローカルB RLコマンドを遅延するよう指示する。ブロック844に進み、ローカルルール テーブル304は次に、BRLコマンドをリモートバス102、104または1 06のうちの1本で行うよう本発明に指示する。 ブロック840に戻り、バストランザクションを遅延できない場合には、ロー カルルールテーブル304はブロック846に進み、ローカルバススレーブ20 4に対してローカルBRLコマンドを引きとめるよう指示する。ブロック844 に進み、ローカルルールテーブル304は次に、リモートバス102、104ま たは106のうちの1本でBRLコマンドを実行するよう本発明に対して指示す る。 ブロック844では、バッファマネージャ210および中央リクエストリスト 208がBRLコマンドを所望のバスに転送する。例えば、左側のバス102の 第1のプロセッサ112aが特定のキャッシュラインアドレスに対するBRLコ マンドを実行すると仮定する。さらに、キャッシュラインアドレス400に対し て右側のバスコヒーレンスステータスビット412がキャッシュラインアドレス 400が所有ステートであることを示す。 この例では、キャッシュコヒーレンスを保証するためには右側のバス104上 のBRLコマンドが必要であると左側のルールテーブル304aが判断する。左 側のルールテーブル304aは次に、左側のFIFO506aからフリーアドレ スセル識別子を取得する。左側のルールテーブル304aは、アドレスセル識別 子によって識別されるアドレスセル506aにアクセスし、キャッシュラインア ドレス400をメモリアドレス504に入力する。また、左側のルールテーブル 304aが対応するリクエストセル600にアクセスし、右側のバス識別子をタ ーゲットバス識別子604に格納し、BRLコマンドをバストランザクションコ ード606に格納し、左側のバス識別子をオーナーバス識別子608に格納する 。 右側のバスプライオリティエンコーダ602bがリクエストセル600に対し て最も高い優先度を割り当てたら、右側のバスマスタ202bは右側のバス10 4上でBRLコマンドを実行する。ブロック848に進み、右側のプロセッサが 右側のバス104上のBRLコマンドに応答する。ブロック848では、右側の プロセッサが、自己のキャッシュメモリ114内にあるキャッシュラインアドレ スのステータスを評価する。右側のプロセッサが所望のキャッシュラインアドレ スのコピーを有していなければ、右側のプロセッサはHIT#およびHITM# 信号をアサートしない。 ブロック850に進み、右側のタグコントローラ300bが、右側のタグメモ リ212b内のコヒーレンスステータスビット412を無効ステートに設定する 。ローカルバストランザクションが遅延されている場合には、左側のバススレー ブ202aが左側のバス102上に遅延リプライトランザクションを発行する。 ブロック818に進み、左側のバススレーブ202aが主記憶装置132から所 望のキャッシュラインを取得し、左側のバス102上の要求を出しているプロセ ッサ112にこれを送信する。左側のルールテーブル304aは次に、ブロック 822または824を介して進み、上述 したようにしてENDブロック810に達する。 さて、ブロック848に戻り、右側のプロセッサ112cまたは112dがキ ャッシュラインの未変更コピーを含む場合には、これらのプロセッサは右側のH IT#信号をアサートし、本発明はブロック852に進む。ブロック852では 、右側のタグコントローラ300bが右側のタグメモリ212b内のコヒーレン スステータスビット412を共有ステートに設定する。 ブロック854に進み、左側のタグメモリ212bがキャッシュラインアドレ ス400のコピーを有していない場合には、左側のルールテーブル304は左側 のタグコントローラ300aに対してこのキャッシュラインアドレス400を左 側のタグメモリ212aに追加するよう指示する。上述したように、ローカルタ グメモリは既存のキャッシュラインアドレス400を左側のタグメモリから追い 出し、新たなキャッシュラインアドレスのために空間を確保しなければならない 場合がある。このような場合には、古いキャッシュラインアドレスをまず無効に した上で、新たなキャッシュラインアドレスを左側のタグメモリに追加する。 ブロック852にいる間に、左側のバススレーブが主記憶装置132から所望 のキャッシュラインを取得し、左側のバス102上で要求を出しているプロセッ サ112aにこれを送信する。ブロック808に進み、左側のルールテーブル3 04aは左側のタグコントローラ300aに対して左側のタグメモリ212a内 のコヒーレンスステータスビット412を共有に設定するよう指示し、ENDブ ロック810に進む。 ここで、ブロック848に戻り、右側のプロセッサ112cまたは112dの うちの一方が自己のキャッシュメモリ114にキャッシュラインの変更されたコ ピーを有する場合には、右側のプロセッサ112cまたは112dは右側のHI TM#信号をアサートする。ブロック856に進み、変更後のキャッシュライン を左側のバス102に供給する。特に、変更後のキャッ シュラインをデータインタフェースバッファ134内の対応するデータセル70 0にロードし、続いてオーナーバス識別子608によって識別される左側のバス 102に送信する。次に、(オリジナルのバストランザクションが遅延可能であ る場合には遅延されたレスポンスと一緒に)変更後のキャッシュラインを左側の バス102に送信する左側のバススレーブ204aがデータセル700にアクセ スする。また、右側のタグコントローラ300bが右側のタグメモリ内のコヒー レンスステータスビットを共有ステートに設定する。 ステート858に進み、応答の一部として、変更後のキャッシュラインが主記 憶装置132に書き戻される。次に、本発明は上述したようにブロック852、 854、ブロック808およびENDブロック810に進む。このように、本発 明は、キャッシュコヒーレンスを維持するために必要な可能性がある場合にBR Lクロスバストランザクションを行う。上記の例は左側のバス102がBRLコ マンドを開始するプロセスについて述べたものであるが、右側のバス104また はI/Oバス106がBRLコマンドを開始しても同様のプロセスが起こる。 B. バスリード無効ラインコマンド処理 図9は、バス102、104または106のうちの1本がバスリード無効ライ ン(BRIL)コマンドを実行する際にキャッシュコヒーレンスを維持するため のフローチャートを示している。スタートブロック900から開始して、複数の プロセッサ112のうちの1つがBRILコマンドを実行する。BRILコマン ドの実行中、複数のプロセッサ112のうちの1つが、所望のキャッシュライン アドレス400を自己が割り当てられたコヒーレンスフィルタ200に送信する 。 ブロック902に進み、バス102、104または106がBRILコマンド を実行していることをサイクルエンコーダ302が判断する。また、割 り当てられたタグコントローラ300がBRILコマンドにおいて識別されたキ ャッシュラインアドレス400を使用し、リモートタグメモリ212内のキャッ シュラインアドレス400にアクセスする。リモートタグメモリ212がキャッ シュラインアドレス400を含む場合、これらのメモリはリモートキャッシュラ インアドレス400が無効ステート、共有ステートまたは所有ステートにあるこ とを示すリモートコヒーレンスステータスビット412を返送する。 上述したように、特定のキャッシュラインアドレスを所有ステートで含むリモ ートタグメモリ212は1つしかない。しかしながら、2つ以上のリモートタグ メモリ212が特定のキャッシュラインアドレスを共有または無効ステートで含 んでもよい。1つのリモートタグメモリ212がキャッシュラインアドレスのコ ピーを共有ステートで含み、別のリモートタグメモリ300が同一のキャッシュ ラインアドレスのコピーを無効ステートで含む場合には、共有ステートにあるコ ヒーレンスステータスビット412が指揮をとる。下記においてより詳細に説明 するように、2つ以上のリモートタグメモリ300が特定のキャッシュラインア ドレスのコピーを共有ステートで含む場合には、コヒーレンスルール304は2 つ以上のリモートバス102104または106においてリモートバストランザ クションを行い、キャッシュコヒーレンスを保証することができる。また、リモ ートタグメモリ300の中には特定のキャッシュラインアドレス400を含むも のが存在しない場合には、キャッシュラインアドレス400に関連したリモート コヒーレンスステータスビット412が無効ステートであるかのように扱われる 。 例えば、左側のバス102上のプロセッサ112aがブロック902における 特定のキャッシュラインアドレス400についてのBRILコマンドを生成する と、左側のサイクルエンコーダ302aが左側のバス102でBRILコマンド が実行されていると判断する。また、左側のタグコントロー ラ300aがキャッシュラインアドレス400を用いて右側のタグメモリ212 bおよびI/Oタグメモリ212cにアクセスする。タグコントローラ300は 、右側のタグメモリ212bおよびI/Oタグメモリ212cから、キャッシュ ラインアドレス400が右側のタグメモリ212bにあるか否か、I/Oタグメ モリ212cが無効ステート、共有ステートまたは所有ステートのいずれである かを示すリモートコヒーレンスステータスビット412を取得する。右側のタグ メモリ212bおよびI/Oタグメモリ212cのいずれもキャッシュラインア ドレス400を含んでいない場合には、左側のタグコントローラ300aがリモ ートコヒーレンスステータスビット412を無効ステートであるかのように扱う 。 ここで、好ましいルールテーブル304の動作およびローカルおよびリモート 指定を使用することに注目すると、ローカルバス102、104または106に 関連するサイクルエンコーダ302は、ローカルルールテーブル304にバスト ランザクション(BRILコマンド)のタイプおよびリモートコヒーレンスステ ータスビット412のステータスを送信する。リモートキャッシュラインアドレ ス400が無効ステートにあることがリモートコヒーレンスステータスビット4 12によって示されると、ローカルルールテーブル304はブロック904に進 む。好ましい実施の形態では、リモートコヒーレンスステータスビット412が 無効ステートにあると、ローカルルールテーブル304はリモートバス102、 104または106のいずれでもBRILクロスバストランザクションを生成し ない。代わりに、ローカルルールテーブル304はキャッシュラインアドレスの 上位集合400をローカルタグメモリ300において維持する。 ブロック904に進むと、ローカルプロセッサ112は、自己の内部キャッシ ュメモリ114に対して問い合わせを行い、ローカルプロセッサ112の中に所 望のキャッシュラインのコピーを持っているものがあるか否かを 判断する。好ましい実施の形態では、複数のプロセッサ112のうちの1つは、 変更後のキャッシュラインがプロセッサのキャッシュメモリ114に存在するこ とがバススヌープ動作によって示されるとHITM#信号をアサートする。HI TM#信号は、複数のアドレスおよび制御線108のうちの1本であり、最新の キャッシュラインを有するプロセッサ112はキャッシュラインを主記憶装置1 32に書き戻す必要があるということを示している。 ブロック906では、ローカルプロセッサ112がバストランザクションに応 答し、同時に変更後のキャッシュラインを主記憶装置132に書き戻すことによ って主記憶装置132を更新する。ブロック908に進むと、ローカルルールテ ーブル304はローカルタグコントローラ300に対して、ローカルタグメモリ 212内のコヒーレンスステータスビット412を所有ステートに設定するよう 指示する。次に、ローカルルールテーブル304はENDブロック910に進む 。 ブロック904に戻り、ローカルプロセッサ112がキャッシュラインの変更 後のコピーを含まない場合には、ローカルルールテーブル304はブロック91 2に進む。上述したように、ローカルタグメモリ212がキャッシュラインアド レス400のコピーを含まない場合、ローカルルールテーブル304はこのキャ ッシュラインアドレス400をローカルタグメモリ304に加える。このように 、ローカルタグメモリは既存のキャッシュラインアドレスをローカルタグメモリ から追い出して新たなキャッシュラインアドレスのために空間を確保する必要が ある場合がある。そのような場合には、古いキャッシュラインアドレスをまず無 効にし、その後で新たなキャッシュラインアドレスをローカルタグメモリに追加 する。ブロック912において、左側のバススレーブも主記憶装置132から所 望のキャッシュラインを取得し、要求を出しているプロセッサ112にこれを送 信する。 ブロック902に戻り、以下、リモートタグメモリ300によって、リモート キャッシュラインアドレス400が共有または所有ステートにあることが示され た場合に何が起こるかについて的を絞って説明する。リモートコヒーレンスステ ータスビット412によってリモートキャッシュラインアドレス400が共有ま たは所有ステートにあることが示されると、ローカルルールテーブル304は、 キャッシュコヒーレンスを保証するのに必要なBRILクロスバストランザクシ ョンを生成する。 ブロック920に進み、ローカルルールテーブル304は、ローカルBRIL コマンドを遅延できるか否かを判断する。上述したように、バストランザクショ ンを発行するプロセッサ104は、そのDEN#信号をアサートすることによっ てバストランザクションが遅延可能なものであるか否かを示す。DEN#信号が アサートされると、ローカルルールテーブル304はブロック922に進み、ロ ーカルバススレーブ204に対してローカルBRILコマンドを遅延するよう指 示する。ブロック924に進み、ローカルルールテーブル304は次に、BRL コマンドをリモートバス102、104または106のうちの1本で行うよう本 発明に指示する。 ブロック920に戻り、バストランザクションを遅延できない場合には、ロー カルルールテーブル304はブロック926に進み、ローカルバススレーブ20 4に対してローカルBRILコマンドを引きとめるよう指示する。ブロック92 4に進み、ローカルルールテーブル304は次に、リモートバス102、104 または106のうちの1本でリモートBRILコマンドを実行するよう本発明に 対して指示する。 ブロック924では、ブロック844で上述したように、バッファマネージャ 210および中央リクエストリスト208がBRILコマンドを所望のリモート バス102、104または105に転送する。ブロック928に進み、リモート バス102、104および106上でBRILコマンドが実 行される。ブロック928では、リモートプロセッサが、自己のキャッシュメモ リ114内にあるキャッシュラインアドレスのステータスを評価する。リモート プロセッサが所望のキャッシュラインアドレス400のコピーを有していなけれ ば、右側のプロセッサばHIT#またはHITM#信号をアサートしない。 ブロック930に進み、リモートタグコントローラ300が、リモートタグメ モリ212内のコヒーレンスステータスビット412を無効ステートに設定する 。ブロック932に進み、左側のバススレーブが主記憶装置132から所望のキ ャッシュラインを取得し、左側のバス102上の要求を出しているプロセッサ1 12にこれを送信する。さらに、キャッシュラインアドレス400がローカルタ グメモリ212に存在しない場合には、ローカルルールテーブル304がローカ ルタグコントローラ300に対して新たなキャッシュラインアドレス400をロ ーカルタグメモリに追加するよう指示する。上述したように、これには既存のキ ャッシュラインアドレスを無効にする必要がある場合もある。ブロック908に 進み、ローカルタグコントローラ300がローカルタグメモリ212におけるコ ヒーレンスステータスビットを所有に設定し、ENDブロック910に進む。 さて、ブロック928に戻り、リモートプロセッサ112がキャッシュライン の未変更コピーを含む場合には、これらのプロセッサはリモートHIT#信号を アサートし、本発明は上述したようにブロック930、ブロック932、ブロッ ク908およびENDブロック910に進む。再びブロック928に戻り、複数 のリモートプロセッサ112のうちの1つが自己のキャッシュメモリ114にキ ャッシュラインの変更後のコピーを含んでいる場合、リモートプロセッサ112 はリモートHITM#信号をアサートする。 ブロック934に進み、変更後のキャッシュラインをローカルバス102、1 04または106に供給する。特に、変更後のキャッシュラインをデータ インタフェースバッファ134内の適切なデータセル700にロードし、オーナ ーバス識別子608によって識別されるバスに返信する。次に、ローカルバスス レーブ204が(オリジナルのバストランザクションが遅延可能である場合には 遅延されたレスポンスと一緒に)変更後のキャッシュラインを左側のローカルバ ス102で送信する。また、リモートタグコントローラ300がリモートタグメ モリ内のリモートコヒーレンスステータスビットを無効ステートに設定する。応 答の一部として、変更後のキャッシュラインが主記憶装置132に書き戻される 。 次に、本発明は上述したようにブロック908およびENDブロック910に 進む。このように、本発明は、キャッシュコヒーレンスを維持するために必要な 可能性がある場合にBRILクロスバストランザクションを行う。 VI. 他の実施の形態 本発明の他の実施の形態は、いわゆる無効待ち行列と呼ばれるものを実現し、 これを含む。ここで、図10に示す無効待ち行列1000に注目すると、各バス は割り当てられた無効待ち行列1000を有する。無効待ち行列1000は、比 較的少数の待ち行列エントリ1002を含む。各待ち行列エントリ1002は、 複数のキャッシュラインアドレス400のうちの1つに対するタグページアドレ ス402と、オフセットアドレス404と、コヒーレンスステータスビット41 2と、パリティビット414とを格納する。 好ましい実施の形態では、好ましいタグメモリ212が主記憶装置132より も小さい。このため、時々2つ以上のキャッシュラインアドレス400が同一の タグエントリ410にマッピングされる。キャッシュラインが占有されたタグエ ントリ410にマッピングされると、タグコントローラ300は占有されている タグエントリ410をタグメモリ212から追い出さなければならない。すなわ ち、占有されているタグエントリ410の既存のキャッシュラインを無効にし、 タグコントローラ300が新たなキャッシュラ インアドレス400をタグエントリ410に格納できるようにする。 また、2つのプロセッサ112が同一のタグエントリ410にマッピングされ る2本のキャッシュラインにアクセスしようとした場合、コヒーレンスフィルタ 200が第1のキャッシュラインアドレス400を無効にし、これを第2のキャ ッシュラインアドレス400と置き換える。コヒーレンスフィルタ200は次に 第2のキャッシュラインアドレス400を無効にし、これを第1のキャッシユュ ラインアドレス400と置き換える。このようなピンポン作用はタグメモリスラ ッシングと呼ばれている。さらに大きなタグメモリ212を用いてタグメモリス ラッシングを最小限にすることは可能であるが、この方法ではタグメモリ212 にかかるコストが大幅に増す可能性がある。有利なことに、無効待ち行列100 0は、メモリにかかる追加コストを最小限に抑えたままタグメモリスラッシング を大幅に減らす。 さらに、古いキャッシュラインアドレスを無効にしなければならない場合、古 いキャッシュラインを無効にする処理が終了するまで新たなキャッシュラインア ドレスに関連したバストランザクションを遅延させなければならない。好ましい 無効待ち行列100では、新たなバストランザクションを進めることができる。 その後でバスがフリーになるまで先送りして古いキャッシュラインアドレスを無 効にすることができる。 複数のコヒーレンスフィルタ200のうちの1つでタグエントリ410をその タグメモリ212から追い出す必要が生じると、タグエントリ410はコヒーレ ンスフィルタの無効待ち行列1002に格納される。好ましい無効待ち行列10 00は最大で8個の追い出されたタグエントリ410を格納することができるが 、無効待ち行列1002は様々な数の追い出されたタグエントリ410を含むこ とができる。複数のコヒーレンスフィルタ200のうち1つで9個以上のタグエ ントリ410を追い出す場合は、無効待ち行列1000は最も後にアクセスされ たタグエントリ410を保持し、フラッ シュしたタグエントリ410を無効にする。 無効待ち行列1000は、タグメモリ212内のタグエントリ410とは異な るフォーマットで待ち行列エントリ1002を格納する。特に、好ましい待ち行 列エントリ1002は、タグメモリ212から追い出されたタグエントリ410 のタグページアドレス402と、オフセットアドレス404とコヒーレンスステ ータスビット412と、パリティビット414とを含む。どのようなキャッシュ ラインアドレス400であっても任意の待ち行列エントリ1002に存在するこ とができるため、各無効待ち行列1000は完全アソシアティブ方式であると言 われる。 各無効待ち行列1000が比較的少数の無効待ち行列エントリ1002を含む ため、各無効待ち行列1000はタグメモリ212のサイズを大きくするための 低コストの選択肢を提供する。好ましい実施の形態では、無効待ち行列1000 は、システムアクセスコントローラ130内に存在するスタティックランダムア クセスメモリで実現される。 VII. 結論 以上、本発明の好ましい実施の形態を説明したが、これらの実施の形態は一例 として挙げられたものであり、本発明の範囲を限定することを意味するものでは ない。例えば、本願明細書では3バスシステム100に鑑みて本発明を説明した が、本発明ではさらに多くの本数のバスを含むこともできる。さらに、本発明は 様々な多重処理システムで実現可能である。したがって、本発明の趣旨および範 囲は以下の請求の範囲およびこれと等価なものによって規定されるべきものであ る。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FI,FR,GB,GR,IE,IT,L U,MC,NL,PT,SE),OA(BF,BJ,CF ,CG,CI,CM,GA,GN,ML,MR,NE, SN,TD,TG),AP(GH,KE,LS,MW,S D,SZ,UG,ZW),EA(AM,AZ,BY,KG ,KZ,MD,RU,TJ,TM),AL,AM,AT ,AU,AZ,BA,BB,BG,BR,BY,CA, CH,CN,CU,CZ,DE,DK,EE,ES,F I,GB,GE,GH,HU,IL,IS,JP,KE ,KG,KP,KR,KZ,LC,LK,LR,LS, LT,LU,LV,MD,MG,MK,MN,MW,M X,NO,NZ,PL,PT,RO,RU,SD,SE ,SG,SI,SK,SL,TJ,TM,TR,TT, UA,UG,UZ,VN,YU,ZW (72)発明者 チャン、スティーヴン、エス. アメリカ合衆国 91740 カリフォルニア 州 グレンドラ イースト マートル 528

Claims (1)

  1. 【特許請求の範囲】 1. システムメモリと、 前記システムメモリと通信を行う第1のバスであって、前記第1のバスに接続 され、前記システムメモリから取得した複数のデータ値を格納するように構成さ れ、かつ前記データ値についてのキャッシュコヒーレンス情報を第1の一組のコ ヒーレンスステートと一緒に維持するように構成された少なくとも1つのキャッ シュメモリを有する第1のバスと、 前記第1のバスと通信を行うコヒーレンスメモリであって、前記データ値に関 連したコヒーレンスステータスレコードを、前記第1の一組のコヒーレンスステ ートよりも少ない数のコヒーレンスステートを含む第2の一組のコヒーレンスス テートと一緒に維持するように構成されたコヒーレンスメモリと、 バストランザクションを生成することができ、前記システムメモリと通信を行 う第2のバスと、 前記第2のバスと通信を行うコヒーレンスフィルタであって、前記第2のバス 上の前記バストランザクションを監視し、前記コヒーレンスステータスレコード に基づいて前記第1のバス上でのクロスバストランザクションを抑制するように 構成されたコヒーレンスフィルタと、を備えることを特徴とするマルチバス多重 処理システム。 2. 複数のキャッシュメモリをさらに備え、前記キャッシュメモリが、キャ ッシュコヒーレンス情報を前記第1の一組のコヒーレンスステートと一緒に維持 することを特徴とする請求項1に記載のシステム。 3. 前記バストランザクションが、前記データ値のうちの1つに関連し たメモリアドレスを識別することを特徴とする請求項1に記載のシステム。 4. 前記コヒーレンスステータスレコードが複数のエントリを含み、前記エ ントリが各々、前記キャッシュメモリに格納されたデータ値に関連したメモリア ドレスを格納するように構成されていることを特徴とする請求項3に記載のシス テム。 5. 前記エントリが各々、前記第2の一組のコヒーレンスステートを格納す るように構成されていることを特徴とする請求項1に記載のシステム。 6. 前記エントリが各々、前記第2の一組のコヒーレンスステートのうちの 1つを格納するように構成されていることを特徴とする請求項5に記載のシステ ム。 7. 前記メモリアドレスが各々、前記エントリのうちの1つに直接マッピン グされることを特徴とする請求項6に記載のシステム。 8. 第1のバスに接続されたキャッシュユニットに存在する第1の複数のデ ータ値に関連したキャッシュステータス情報であって、第1の一組のコヒーレン スステートに基づくキャッシュステータス情報を維持し、 前記データ値に関連し、前記第1の一組のコヒーレンスステートよりも少ない 数のコヒーレンスステートを利用する第2の一組のコヒーレンスステートに基づ くコヒーレンスステータスレコードを維持し、 バストランザクションを第2のバスで送信し、 メモリインコヒーレンスが前記バストランザクションによるものではないこと が前記コヒーレンスステータスレコードによって示される場合に、前 記第1のバスでのクロスバストランザクションを抑制することを含む、マルチバ スシステムにおいてキャッシュコヒーレンスを維持するための方法。 9. 前記コヒーレンスステータスレコードが、前記エントリが各々前記第2 の一組のコヒーレンスステートのうち1つを含むように前記データ値各々につい て複数のエントリを維持することを特徴とする請求項8に記載の方法。 10. 前記検知するステップが、前記バストランザクションに関連した前記 コヒーレンスステータスレコードにおいて前記エントリを調べ、前記エントリが 無効ステートにあるか否かを判断するステップをさらに含むことを特徴とする請 求項9に記載の方法。 11. 前記検知するステップが、前記バストランザクションに関連した前記 コヒーレンスステータスレコードにおいて前記エントリを調べ、前記エントリが 無効ステートにあるか否かを判断するステップをさらに含むことを特徴とする請 求項9に記載の方法。 12. 前記エントリが所有ステートにある場合に、前記バストランザクショ ンに関連した前記エントリを変更するステップをさらに含むことを特徴とする請 求項11に記載の方法。 13. 前記バストランザクションに関連した前記エントリを所有ステートか ら共有ステートに変更するステップをさらに含むことを特徴とする請求項11に 記載の方法。 14. 前記バストランザクションに関連した前記エントリを所有ステートか ら無効ステートに変更するステップをさらに含むことを特徴とする請求項11に 記載の方法。 15. システムメモリと、 前記システムメモリと通信を行うシステムバスであって、前記システムバスに 接続され、前記システムメモリから取得した複数のデータ値を格納するように構 成され、かつ前記データ値についてのキャッシュコヒーレンス情報を第1の一組 のコヒーレンスステートと一緒に維持するように構成された少なくとも1つのキ ャッシュメモリを有するシステムバスと、 前記システムバスと通信を行うコヒーレンスメモリであって、前記データ値に 関連したシステムバスコヒーレンスステータスレコードを、前記第1の一組のコ ヒーレンスステートよりも少ない数のコヒーレンスステートを含む第2の一組の コヒーレンスステートと一緒に維持するように構成されたコヒーレンスメモリと 、 少なくとも1つのバストランザクションを生成することができ、前記システム メモリと通信を行う入力/出力バスと、 前記入力/出力バスと通信を行う入力/出力コヒーレンスフィルタであって、 前記入力/出力バス上の前記バストランザクションを監視し、前記システムバス コヒーレンスステータスレコードに基づいて前記システムバス上でのクロスバス トランザクションを抑制するように構成された入力/出力コヒーレンスフィルタ と、を備えることを特徴とするマルチバス多重処理システム。 16. 前記入力/出力コヒーレンスフィルタが、前記I/Oバス上でのダイ レクトメモリアクセスを監視し、前記キャッシュメモリにおけるキャッ シュラインのフラッシングを回避するために必要なクロスバストランザクション を実行するようにも構成されていることを特徴とする請求項15に記載のシステ ム。 17. 前記入力/出力バスが、内部I/Oキャッシュメモリを含む複数のI /Oブリッジをさらに備え、前記I/Oキャッシュメモリが第2の複数のデータ 値を格納するように構成され、前記I/Oキャッシュメモリがさらに、前記デー タ値に関するキャッシュコヒーレンス情報を前記第1の一組のコヒーレンスステ ートと一緒に維持するようにも構成されていることを特徴とする請求項15に記 載のシステム。 18. 前記I/Oバスと通信を行うI/Oコヒーレンスメモリであって、前 記データ値に関連したI/Oコヒーレンスステータスレコードを前記第2の一組 のコヒーレンスステートと一緒に維持するように構成されたI/Oコヒーレンス メモリをさらに備えることを特徴とする請求項17に記載のシステム。 19. 前記システムバスと通信を行うシステムバスコヒーレンスフィルタで あって、前記システムバス上の前記バストランザクションを監視し、前記I/O コヒーレンスステータスレコードに基づいて前記I/Oバスでのクロスバストラ ンザクションを抑制するように構成されたシステムバスコヒーレンスフィルタを さらに備えることを特徴とする請求項18に記載のシステム。 20. システムバスに接続されたキャッシュユニットに存在する第1の複数 のデータ値に関連したキャッシュステータス情報であって、第1の一組 のコヒーレンスステートに基づくキャッシュステータス情報を維持し、 前記データ値に関連し、前記第1の一組のコヒーレンスステートよりも少ない 数のコヒーレンスステートを含む第2の一組のコヒーレンスステートに基づくコ ヒーレンスステータスレコードを維持し、 バストランザクションを入力/出力バスで送信し、 メモリインコヒーレンスが前記入力/出力バストランザクションによるもので はないことが前記コヒーレンスステータスレコードによって示される場合に、前 記システムバスでのクロスバストランザクションを抑制することを含む、マルチ バスシステムにおいてキャッシュコヒーレンスを維持するための方法。 21. 入力/出力バスでバストランザクションを送信する前記ステップが、 ダイレクトメモリアクセスであることを特徴とする請求項20に記載の方法。 22. 前記I/Oバスで転送される複数のI/Oデータ値をキャッシュする ステップをさらに含むことを特徴とする請求項20に記載のシステム。 23. 前記第1の一組のコヒーレンスステートに基づいて前記I/Oデータ 値に関連したキャッシュステータス情報を維持するステップをさらに含むことを 特徴とする請求項22に記載のシステム。 24. 前記I/Oデータ値に関連したI/Oコヒーレンスステータスレコー ドであって、前記第2の一組のコヒーレンスステートに基づくI/Oコヒーレン スステータスレコードを維持するステップをさらに含むことを特徴とする請求項 23に記載の方法。 25. 前記システムバスでバストランザクションを送信するステップと、メ モリインコヒーレンスが前記システムバストランザクションによるものではない ことが前記I/Oコヒーレンスステータスレコードによって示される場合に、前 記I/Oバスでのクロスバストランザクションを抑制するステップとをさらに含 むことを特徴とする請求項24に記載の方法。 26. システムメモリと、 前記システムメモリと通信を行う第1のシステムバスおよび第2のシステムバ スであって、前記第1のシステムバスおよび前記第2のシステムバスに接続され 、前記システムメモリから取得した複数のデータ値を格納するように構成され、 かつ前記データ値についてのキャッシュコヒーレンス情報を第1の一組のコヒー レンスステートと一緒に維持するように構成された少なくとも1つのキャッシュ メモリを有する第1のシステムバスおよび第2のシステムバスと、 前記第1のシステムバスと通信を行う第1のコヒーレンスメモリであって、前 記第1のシステムバスに接続された前記キャッシュユニット内の前記データ値に 関連した第1のコヒーレンスステータスレコードを、前記第1の一組のコヒーレ ンスステートよりも少ない数のコヒーレンスステートを含む第2の一組のコヒー レンスステートと一緒に維持するように構成された第1のコヒーレンスメモリと 、 前記第2のシステムバスと通信を行う第2のコヒーレンスメモリであって、前 記第2のシステムバスに接続された前記キャッシュメモリにおける前記データ値 に関連した第2のコヒーレンスステータスレコードを、前記第2のコヒーレンス プロトコルと一緒に維持するように構成された第2のコヒーレンスメモリと、 前記第1のバスと通信を行う第1のコヒーレンスフィルタであって、前記第1 のバスでのバストランザクションを監視し、前記第2のコヒーレンスステータス レコードに基づいて前記第2のバスでのクロスバストランザクションを抑制する ように構成された第1のコヒーレンスフィルタと、 前記第2のバスと通信を行う第2のコヒーレンスフィルタであって、前記第2 のバスでのバストランザクションを監視し、前記第1のコヒーレンスステータス レコードに基づいて前記第1のバスでのクロスバストランザクションを抑制する 第2のコヒーレンスフィルタと、を備えることを特徴とするマルチバス多重処理 システム。 27. 前記システムメモリおよびI/Oデータ値を少なくとも1つのI/O キャッシュメモリに格納する複数のI/O装置と通信を行うI/Oバスと、 I/Oバスと通信を行うI/Oコヒーレンスメモリであって、I/Oデータ値 に関連したI/Oコヒーレンスステータスレコードを前記第2のコヒーレンスプ ロトコルと一緒に維持するように構成されたI/Oコヒーレンスメモリと、をさ らに備えることを特徴とする請求項26に記載のシステム。 28. 前記第1のコヒーレンスフィルタが、前記I/Oコヒーレンスメモリ とも通信を行い、前記第1のバス上のバストランザクションを監視し、前記I/ Oコヒーレンスステータスレコードに基づいて前記I/Oバスでのクロスバスト ランザクションを抑制するように構成されることを特徴とする請求項27に記載 のシステム。 29. 前記第2のコヒーレンスフィルタが、前記I/Oコヒーレンスメモリ とも通信を行い、前記第2のバス上のバストランザクションを監視し、 前記I/Oコヒーレンスステータスレコードに基づいて前記I/Oバスでのクロ スバストランザクションを抑制するように構成されることを特徴とする請求項2 7に記載のシステム。 30. 前記第1のコヒーレンスメモリおよび前記第2のコヒーレンスメモリと 通信を行うI/Oコヒーレンスフィルタをさらに備え、前記I/Oコヒーレンス フィルタが、前記I/Oバス上のバストランザクションを監視し、前記第1のコ ヒーレンスステータスレコードに基づいて前記第1のバス上でのクロスバストラ ンザクションを抑制し、前記第2のコヒーレンスステータスレコードに基づいて 前記第2のバス上でのクロスバストランザクションを抑制するように構成されて いることを特徴とする請求項27に記載のシステム。 31. システムメモリと、 前記システムメモリと通信を行う第1のバスおよび第2のバスであって、前記 第1のバスおよび前記第2のバスに接続され、前記システムメモリから取得した 複数のデータ値を格納するように構成され、かつ前記データ値についてのキャッ シュコヒーレンス情報を、複数のコヒーレンスステートを含む第1のコヒーレン スプロトコルと一緒に維持するように構成された少なくとも1つのキャッシュメ モリを有する第1のシステムバスおよび第2のシステムバスと、 前記データ値に関連した第1のコヒーレンスステータスレコードを、前記第1 のコヒーレンスプロトコルとは異なるコヒーレンスステートを含む第2のコヒー レンスプロトコルと一緒に維持するための第1のコヒーレンスメモリ手段と、 前記第2のバス上のバストランザクションを監視し、前記第1のコヒーレ ンスステータスレコードに基づいて前記第1のバスでのクロスバストランザクシ ョンを抑制するための第1のコヒーレンスフィルタ手段と、を備えることを特徴 とするマルチバス多重処理システム。 32. システムメモリと、 前記システムメモリと通信を行う第1のバスであって、前記第1のバスに接続 され、前記システムメモリから取得した複数のデータ値を格納するように構成さ れ、かつ前記データ値についてのコヒーレンスステータス情報を第1の一組のコ ヒーレンスステートと一緒に維持するように構成された少なくとも1つのキャッ シュメモリを有する第1のバスと、 前記第1のバスと通信を行うコヒーレンスメモリであって、前記データ値に関 連したコヒーレンスステータスレコードを、前記第1の一組のコヒーレンスステ ートとは異なる第2の一組のコヒーレンスステートと一緒に維持するように構成 されたコヒーレンスメモリと、 バストランザクションを生成することができ、前記システムメモリと通信を行 う第2のバスと、 前記第2のバスと通信を行うコヒーレンスフィルタであって、前記第2のバス 上のバストランザクションを監視し、前記コヒーレンスステータスレコードに基 づいて前記第1のバス上でのクロスバストランザクションを抑制するように構成 されたコヒーレンスフィルタと、を備えることを特徴とするマルチバス多重処理 システム。 33. 前記第1のコヒーレンスフィルタが、バストランザクションアドレス を受信するように構成され、前記バストランザクションアドレスに対応する前記 第2のコヒーレンスステータスレコード内のエントリにアクセスするように構成 された第1のコヒーレンスメモリコントローラをさらに備 えることを特徴とする請求項32に記載のシステム。 34. 前記第1のコヒーレンスメモリコントローラが、前記エントリ内に存 在する前記コヒーレンスステートを取得することを特徴とする請求項33に記載 のシステム。 35. 前記第1のコヒーレンスフィルタが、前記バストランザクションを識 別するバストランザクションコードを識別するサイクルエンコーダをさらに備え ることを特徴とする請求項34に記載のシステム。 36. 前記第1のコヒーレンスフィルタが、前記コヒーレンスステータスと 前記バストランザクションを識別するバストランザクションコードとを受信する ルールテーブルをさらに備えることを特徴とする請求項35に記載のシステム。 37. 第1のバスに接続されたキャッシュユニットに存在する第1の複数の データ値に関連したキャッシュステータス情報であって、第1の一組のコヒーレ ンスステートに基づくキャッシュステータス情報を維持し、 前記データ値に関連し、前記第1の一組のコヒーレンスステートとは異なる第 2の一組のコヒーレンスステートに基づくコヒーレンスステータスレコードを維 持し、 バストランザクションを第2のバスで送信し、 メモリインコヒーレンスが前記バストランザクションによるものではないこと が前記コヒーレンスステータスレコードによって示される場合に、前記第1のバ スでのクロスバストランザクションを抑制することを含む、マルチバスシステム においてキャッシュコヒーレンスを維持するための方法。 38. バストランザクションアドレスに対応する前記第2のコヒーレンスス テータスレコード内のエントリにアクセスするステップをさらに含むことを特徴 とする請求項37に記載の方法。 39. 前記エントリ内に存在する前記コヒーレンスステートを取得するステ ップをさらに含むことを特徴とする請求項37に記載の方法。 40. 前記バストランザクションコードを符号化し、前記バストランザクシ ョンを識別するバストランザクションコードを生成するステップをさらに含むこ とを特徴とする請求項39に記載の方法。 41. 前記バストランザクションコードおよび前記コヒーレンスステートを 評価して、キャッシュコヒーレンスを維持するためにクロスバストランザクショ ンが必要であるか否かを判断するステップをさらに含むことを特徴とする請求項 40に記載の方法。 42. システムメモリと、 前記システムメモリと通信を行う第1のバスおよび第2のバスであって、前記 第1のバスおよび前記第2のバスに接続され、スヌープ動作を行って前記システ ムメモリから取得した複数のデータ値に対するキャッシュステータス情報を維持 するように構成され、前記データ値のうちのいくつかに関連した前記キャッシュ ステータス情報を、内部的な変更の出力を行わずに内部的に変更するように構成 された複数のキャッシュメモリを有する第1のバスおよび第2のバスと、 前記第1のバスと通信を行うコヒーレンスメモリであって、前記第1のバ ス上のキャッシュメモリによって取得した前記データ値に関連したコヒーレンス ステータスレコードを維持するように構成されたコヒーレンスメモリと、 前記第2のバスと通信を行うコヒーレンスフィルタであって、前記第2のバス 上のバストランザクションを監視し、前記コヒーレンスステータスレコードに基 づいて前記第1のバス上でのクロスバストランザクションを抑制するように構成 されたコヒーレンスフィルタと、を備えることを特徴とするマルチバス多重処理 システム。 43. システムバスに接続されたキャッシュユニットに存在する第1の複数 のデータ値に関連したキャッシュステータス情報を維持し、 前記キャッシュユニット内の前記キャッシュステータス情報を、内部的な変更 の出力を行わずに内部的に変更し、 前記データ値に関連したコヒーレンスステータスレコードを維持し、 バストランザクションを第2のバスで送信し、 メモリインコヒーレンスが前記バストランザクションによるものではないこと が前記コヒーレンスステータスレコードによって示される場合に、前記システム バスでのクロスバストランザクションを抑制することを含む、マルチバスシステ ムにおいてキャッシュコヒーレンスを維持するための方法。 44. 複数のプロセッサ内に存在するデータ値のコヒーレンスステータスを 記録するように各々構成された複数のエントリを有するメモリアレイと、 前記メモリアレイと通信を行う無効待ち行列であって、前記メモリアレイより も高い関連度を有するように構成され、前記メモリアレイから追い出される前記 エントリを格納するように構成された無効待ち行列と、を備えるこ とを特徴とする、多重処理システムにおいてメモリコヒーレンスを維持するコヒ ーレンスフィルタ。 45. 第1のバスであって、前記第1のバスに接続された少なくとも1つの プロセッサを有する第1のバスと、 第2のバスであって、前記第2のバスに接続された少なくとも1つのプロセッ サを有する第2のバスと、 前記第1のバスおよび前記第2のバスに接続され、前記第1のバスと前記第2 のバスとの間でバストランザクションを転送するように構成されたメモリセルの プールを有するマルチポートメモリであって、前記メモリセルが各々、前記第1 のバスまたは前記第2のバスのいずれかを宛先のバスとして識別するバスコード を格納するように構成され、前記宛先のバスにバストランザクションを行うよう 指示するバストランザクション情報を格納するように構成された、マルチポート メモリと、 前記メモリセルおよび前記第1のバスに接続され、前記メモリセルを評価して どのメモリセルが前記第1のバスを指定しているかを識別する第1のバスプライ オリティエンコーダと、 前記メモリセルおよび前記第1のバスに接続され、前記メモリセルを評価して どのメモリセルが前記第2のバスを指定しているかを識別する第2のバスプライ オリティエンコーダと、を備えることを特徴とするマルチバス多重処理システム 。 46. どのメモリセルがフリーでバストランザクション情報を格納できるか を判断するように構成されたフリーセルエンコーダをさらに備えることを特徴と する請求項45に記載のシステム。 47. 新たなバストランザクションと前記メモリセル内に存在する前記バス トランザクションとを比較する一組のアドレス比較器であって、前記メモリセル 内に存在する前記新たなバストランザクションおよび前記バストランザクション との衝突がいつ存在するかを示すように構成されたアドレス比較器をさらに備え ることを特徴とする請求項45に記載のシステム。 48. 前記メモリが各々、アドレスセルと、リクエストセルと、データセル とを含むことを特徴とする請求項45に記載のシステム。 49. 前記アドレスセルが各々、バストランザクションアドレス情報を格納 するように構成されていることを特徴とする請求項48に記載のシステム。 50. 前記アドレスセルが各々、使用中情報を格納するようにも構成されて いることを特徴とする請求項49に記載のシステム。 51. 前記リクエストセルが各々、前記バスコードおよび前記バストランザ クション情報を格納するように構成されていることを特徴とする請求項48に記 載のシステム。 52. 前記データセルの各々が前記バストランザクションデータを格納するよ うに構成されていることを特徴とする請求項48に記載のシステム。
JP51390898A 1996-09-16 1997-09-16 複数のシステムバスを有するコンピュータシステムにおいてメモリコヒーレンスを維持するためのシステムおよび方法 Expired - Lifetime JP4316016B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/714,750 1996-09-16
US08/714,750 US5897656A (en) 1996-09-16 1996-09-16 System and method for maintaining memory coherency in a computer system having multiple system buses
PCT/US1997/016207 WO1998011488A1 (en) 1996-09-16 1997-09-16 System and method for maintaining memory coherency in a computer system having multiple system buses

Publications (3)

Publication Number Publication Date
JP2001503889A true JP2001503889A (ja) 2001-03-21
JP2001503889A5 JP2001503889A5 (ja) 2005-03-10
JP4316016B2 JP4316016B2 (ja) 2009-08-19

Family

ID=24871306

Family Applications (1)

Application Number Title Priority Date Filing Date
JP51390898A Expired - Lifetime JP4316016B2 (ja) 1996-09-16 1997-09-16 複数のシステムバスを有するコンピュータシステムにおいてメモリコヒーレンスを維持するためのシステムおよび方法

Country Status (9)

Country Link
US (2) US5897656A (ja)
EP (1) EP1021768A4 (ja)
JP (1) JP4316016B2 (ja)
KR (1) KR100491435B1 (ja)
CN (1) CN1130644C (ja)
AU (1) AU4345197A (ja)
CA (1) CA2264518C (ja)
RU (1) RU2221271C2 (ja)
WO (1) WO1998011488A1 (ja)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6581126B1 (en) * 1996-12-20 2003-06-17 Plx Technology, Inc. Method, system and apparatus for a computer subsystem interconnection using a chain of bus repeaters
US6073225A (en) * 1997-06-24 2000-06-06 Intel Corporation Method and apparatus for monitoring bus transactions based on cycle type and memory address range
US7197625B1 (en) * 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6633945B1 (en) 1997-12-07 2003-10-14 Conexant Systems, Inc. Fully connected cache coherent multiprocessing systems
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
US6065077A (en) * 1997-12-07 2000-05-16 Hotrail, Inc. Apparatus and method for a cache coherent shared memory multiprocessing 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
US6134635A (en) * 1997-12-09 2000-10-17 Intel Corporation Method and apparatus of resolving a deadlock by collapsing writebacks to a memory
US6334172B1 (en) * 1998-02-17 2001-12-25 International Business Machines Corporation Cache coherency protocol with tagged state for modified values
US6289419B1 (en) * 1998-03-06 2001-09-11 Sharp Kabushiki Kaisha Consistency control device merging updated memory blocks
US6295598B1 (en) * 1998-06-30 2001-09-25 Src Computers, Inc. Split directory-based cache coherency technique for a multi-processor computer system
US6304945B1 (en) 1999-05-13 2001-10-16 Compaq Computer Corporation Method and apparatus for maintaining cache coherency in a computer system having multiple processor buses
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
JP3946393B2 (ja) * 1999-10-19 2007-07-18 株式会社東芝 階層構造をもつ並列計算機
US6643787B1 (en) * 1999-10-19 2003-11-04 Rambus Inc. Bus system optimization
US7558923B1 (en) 1999-12-22 2009-07-07 Intel Corporation Prevention of live-lock in a multi-processor system
US6662278B1 (en) * 2000-09-22 2003-12-09 Intel Corporation Adaptive throttling of memory acceses, such as throttling RDRAM accesses in a real-time system
US6868481B1 (en) * 2000-10-31 2005-03-15 Hewlett-Packard Development Company, L.P. Cache coherence protocol for a multiple bus multiprocessor system
US6757790B2 (en) * 2002-02-19 2004-06-29 Emc Corporation Distributed, scalable data storage facility with cache memory
US6959372B1 (en) * 2002-02-19 2005-10-25 Cogent Chipware Inc. Processor cluster architecture and associated parallel processing methods
US7085866B1 (en) * 2002-02-19 2006-08-01 Hobson Richard F Hierarchical bus structure and memory access protocol for multiprocessor systems
CN100401731C (zh) * 2002-06-15 2008-07-09 华为技术有限公司 高速数据链路控制协议接收处理模块及其数据处理方法
CN1293739C (zh) * 2002-06-15 2007-01-03 华为技术有限公司 高速数据链路控制协议发送处理模块及其数据处理方法
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7191318B2 (en) * 2002-12-12 2007-03-13 Alacritech, Inc. Native copy instruction for file-access processor with copy-rule-based validation
US7032079B1 (en) * 2002-12-13 2006-04-18 Unisys Corporation System and method for accelerating read requests within a multiprocessor system
US8751753B1 (en) 2003-04-09 2014-06-10 Guillermo J. Rozas Coherence de-coupling buffer
US7636815B1 (en) * 2003-04-09 2009-12-22 Klaiber Alexander C System and method for handling direct memory accesses
US7334123B2 (en) * 2003-05-02 2008-02-19 Advanced Micro Devices, Inc. Computer system including a bus bridge for connection to a security services processor
DE10329680A1 (de) * 2003-07-01 2005-02-10 Universität Stuttgart Prozessorarchitektur für exakte Zeigeridentifizierung
US8117392B2 (en) * 2003-10-22 2012-02-14 Intel Corporation Method and apparatus for efficient ordered stores over an interconnection network
US20050216625A1 (en) * 2004-03-09 2005-09-29 Smith Zachary S Suppressing production of bus transactions by a virtual-bus interface
US7434008B2 (en) * 2004-04-23 2008-10-07 Hewlett-Packard Development Company, L.P. System and method for coherency filtering
US7398338B2 (en) * 2004-06-30 2008-07-08 Sap Ag Flexible and error resistant data buffering and connectivity
CN100463393C (zh) * 2004-08-20 2009-02-18 中兴通讯股份有限公司 一种异构系统之间数据安全共享的装置及方法
US7941585B2 (en) 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US7594081B2 (en) 2004-09-10 2009-09-22 Cavium Networks, Inc. Direct access to low-latency memory
WO2006031551A2 (en) 2004-09-10 2006-03-23 Cavium Networks Selective replication of data structure
US7366931B2 (en) 2004-12-30 2008-04-29 Intel Corporation Memory modules that receive clock information and are placed in a low power state
US7417883B2 (en) * 2004-12-30 2008-08-26 Intel Corporation I/O data interconnect reuse as repeater
US7203780B2 (en) * 2005-02-22 2007-04-10 Kabushiki Kaisha Toshiba System and method for facilitating communication between devices on a bus using tags
JP4956900B2 (ja) * 2005-03-07 2012-06-20 富士通株式会社 アドレススヌープ方法及びマルチプロセッサシステム
US7386683B2 (en) * 2005-03-29 2008-06-10 International Business Machines Corporation Method and apparatus for filtering snoop requests in a point-to-point interconnect architecture
US7290074B2 (en) * 2005-04-06 2007-10-30 Kabushiki Kaisha Toshiba Back-off timing mechanism
US7971002B1 (en) 2005-04-07 2011-06-28 Guillermo Rozas Maintaining instruction coherency in a translation-based computer system architecture
US7373444B2 (en) * 2005-04-15 2008-05-13 Kabushiki Kaisha Toshiba Systems and methods for manipulating entries in a command buffer using tag information
US7738483B2 (en) * 2005-09-08 2010-06-15 Kabushiki Kaisha Toshiba Systems and methods for managing communication between master and slave devices
JP2007079958A (ja) * 2005-09-14 2007-03-29 Hitachi Ltd 記憶制御装置、データ処理方法、及びコンピュータプログラム
US20070088918A1 (en) * 2005-10-13 2007-04-19 Sun Microsystems, Inc. Tracking dependencies among memory requests
US8924653B2 (en) * 2006-10-31 2014-12-30 Hewlett-Packard Development Company, L.P. Transactional cache memory system
US7613859B2 (en) * 2007-09-12 2009-11-03 Kabushiki Kaisha Toshiba Back-off timing mechanism in a digital signal processor
JP5453872B2 (ja) * 2009-03-27 2014-03-26 日本電気株式会社 ディスクアレイ装置、ディスク制御装置、ディスクアレイ装置における負荷分散方法
WO2011048582A1 (en) * 2009-10-25 2011-04-28 Plurality Ltd. Shared cache for a tightly-coupled multiprocessor
FR2992446B1 (fr) 2012-06-22 2015-04-10 Commissariat Energie Atomique Systeme et procede de traitement de donnees a gestion d'une coherence de caches dans un reseau de processeurs munis de memoires caches.
CN104298617B (zh) * 2014-08-20 2017-12-08 深圳大学 一种numa平台中非核部件数据流缓冲管理的优化方法及系统
WO2017012667A1 (en) 2015-07-22 2017-01-26 Huawei Technologies Co., Ltd. Hardware transactional memory in non volatile memory with log and no lock
US9921962B2 (en) * 2015-09-24 2018-03-20 Qualcomm Incorporated Maintaining cache coherency using conditional intervention among multiple master devices
US10102129B2 (en) * 2015-12-21 2018-10-16 Intel Corporation Minimizing snoop traffic locally and across cores on a chip multi-core fabric
US10073776B2 (en) 2016-06-23 2018-09-11 Advanced Micro Device, Inc. Shadow tag memory to monitor state of cachelines at different cache level
EP3260986B1 (en) * 2016-06-23 2019-08-14 Advanced Micro Devices, Inc. Shadow tag memory to monitor state of cachelines at different cache level
US10303603B2 (en) 2017-06-13 2019-05-28 Microsoft Technology Licensing, Llc Low power multi-core coherency
US10282298B2 (en) 2017-06-13 2019-05-07 Microsoft Technology Licensing, Llc Store buffer supporting direct stores to a coherence point

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4245344A (en) * 1979-04-02 1981-01-13 Rockwell International Corporation Processing system with dual buses
US4796232A (en) * 1987-10-20 1989-01-03 Contel Corporation Dual port memory controller
US4982321A (en) * 1987-10-23 1991-01-01 Honeywell Inc. Dual bus system
US5225374A (en) * 1988-05-13 1993-07-06 The United States Of America As Represented By The Secretary Of The Navy Method of fabricating a receptor-based sensor
US4953081A (en) * 1988-12-21 1990-08-28 International Business Machines Corporation Least recently used arbiter with programmable high priority mode and performance monitor
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
US5317718A (en) * 1990-03-27 1994-05-31 Digital Equipment Corporation Data processing system and method with prefetch buffers
US5261066A (en) * 1990-03-27 1993-11-09 Digital Equipment Corporation Data processing system and method with small fully-associative cache and prefetch buffers
US5325510A (en) * 1990-05-25 1994-06-28 Texas Instruments Incorporated Multiprocessor system and architecture with a computation system for minimizing duplicate read requests
US5115411A (en) * 1990-06-06 1992-05-19 Ncr Corporation Dual port memory system
CA2044689A1 (en) * 1990-06-15 1991-12-16 Roger E. Tipley Multilevel inclusion in multilevel cache hierarchies
IE860318L (en) * 1990-10-01 1986-08-05 Digital Equipment Corp System bus for a multi-cache data processing system
US5265232A (en) * 1991-04-03 1993-11-23 International Business Machines Corporation Coherence control by data invalidation in selected processor caches without broadcasting to processor caches not having the data
US5293603A (en) * 1991-06-04 1994-03-08 Intel Corporation Cache subsystem for microprocessor based computer system with synchronous and asynchronous data path
DE69227956T2 (de) * 1991-07-18 1999-06-10 Tandem Computers Inc Multiprozessorsystem mit gespiegeltem Speicher
US5369748A (en) * 1991-08-23 1994-11-29 Nexgen Microsystems Bus arbitration in a dual-bus architecture where one bus has relatively high latency
US5269005A (en) * 1991-09-17 1993-12-07 Ncr Corporation Method and apparatus for transferring data within a computer system
US5359715A (en) * 1991-09-16 1994-10-25 Ncr Corporation Architectures for computer systems having multiple processors, multiple system buses and multiple I/O buses interfaced via multiple ported interfaces
US5265211A (en) * 1992-01-02 1993-11-23 International Business Machines Corporation Arbitration control logic for computer system having dual bus architecture
US5553258A (en) * 1992-04-24 1996-09-03 Digital Equipment Corporation Method and apparatus for forming an exchange address for a system with different size caches
US5319766A (en) * 1992-04-24 1994-06-07 Digital Equipment Corporation Duplicate tag store for a processor having primary and backup cache memories in a multiprocessor computer system
US5398325A (en) * 1992-05-07 1995-03-14 Sun Microsystems, Inc. Methods and apparatus for improving cache consistency using a single copy of a cache tag memory in multiple processor computer systems
US5404462A (en) * 1992-10-16 1995-04-04 Unisys Corporation Dual bus interface transfer system for central processing module
US5495585A (en) * 1992-10-16 1996-02-27 Unisys Corporation Programmable timing logic system for dual bus interface
US5442754A (en) * 1992-12-04 1995-08-15 Unisys Corporation Receiving control logic system for dual bus network
US5386517A (en) * 1993-01-26 1995-01-31 Unisys Corporation Dual bus communication system connecting multiple processors to multiple I/O subsystems having a plurality of I/O devices with varying transfer speeds
US5553263A (en) * 1993-07-16 1996-09-03 Unisys Corporation Cache memory system with fault tolerance having concurrently operational cache controllers processing disjoint groups of memory
US5857084A (en) 1993-11-02 1999-01-05 Klein; Dean A. Hierarchical bus structure access system
US5623628A (en) * 1994-03-02 1997-04-22 Intel Corporation Computer system and method for maintaining memory consistency in a pipelined, non-blocking caching bus request queue
US5684977A (en) * 1995-03-31 1997-11-04 Sun Microsystems, Inc. Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system
EP0735487B1 (en) * 1995-03-31 2001-10-31 Sun Microsystems, Inc. A fast, dual ported cache controller for data processors in a packet switched cache coherent multiprocessor system
US5802278A (en) 1995-05-10 1998-09-01 3Com Corporation Bridge/router architecture for high performance scalable networking
US5740400A (en) * 1995-06-05 1998-04-14 Advanced Micro Devices Inc. Reducing cache snooping overhead in a multilevel cache system with multiple bus masters and a shared level two cache by using an inclusion field
US5673400A (en) 1995-06-06 1997-09-30 National Semiconductor Corporation Method and apparatus for identifying and controlling a target peripheral device in a multiple bus system
US5822755A (en) * 1996-01-25 1998-10-13 International Business Machines Corporation Dual usage memory selectively behaving as a victim cache for L1 cache or as a tag array for L2 cache
US5829033A (en) * 1996-07-01 1998-10-27 Sun Microsystems, Inc. Optimizing responses in a coherent distributed electronic system including a computer system
US5900011A (en) * 1996-07-01 1999-05-04 Sun Microsystems, Inc. Integrated processor/memory device with victim data cache

Also Published As

Publication number Publication date
AU4345197A (en) 1998-04-02
WO1998011488A1 (en) 1998-03-19
EP1021768A1 (en) 2000-07-26
CA2264518A1 (en) 1998-03-19
US6622214B1 (en) 2003-09-16
US5897656A (en) 1999-04-27
KR20000036144A (ko) 2000-06-26
RU2221271C2 (ru) 2004-01-10
CN1130644C (zh) 2003-12-10
JP4316016B2 (ja) 2009-08-19
KR100491435B1 (ko) 2005-05-24
CA2264518C (en) 2006-01-10
EP1021768A4 (en) 2002-08-14
CN1238050A (zh) 1999-12-08

Similar Documents

Publication Publication Date Title
JP4316016B2 (ja) 複数のシステムバスを有するコンピュータシステムにおいてメモリコヒーレンスを維持するためのシステムおよび方法
US6049847A (en) System and method for maintaining memory coherency in a computer system having multiple system buses
US6141733A (en) Cache coherency protocol with independent implementation of optimized cache operations
US6405289B1 (en) Multiprocessor system in which a cache serving as a highest point of coherency is indicated by a snoop response
US6345342B1 (en) Cache coherency protocol employing a read operation including a programmable flag to indicate deallocation of an intervened cache line
US5276852A (en) Method and apparatus for controlling a processor bus used by multiple processor components during writeback cache transactions
US5692149A (en) Block replacement method in cache only memory architecture multiprocessor
US6330643B1 (en) Cache coherency protocols with global and local posted operations
US20030046356A1 (en) Method and apparatus for transaction tag assignment and maintenance in a distributed symmetric multiprocessor system
US6334172B1 (en) Cache coherency protocol with tagged state for modified values
US6321306B1 (en) High performance multiprocessor system with modified-unsolicited cache state
US6279085B1 (en) Method and system for avoiding livelocks due to colliding writebacks within a non-uniform memory access system
JP2000250812A (ja) メモリ・キャッシュ・システムおよびその管理方法
US6751705B1 (en) Cache line converter
JPH10154100A (ja) 情報処理システム及び装置及びその制御方法
US6418514B1 (en) Removal of posted operations from cache operations queue
US5987544A (en) System interface protocol with optional module cache
US20040111565A1 (en) High speed memory cloner with extended cache coherency protocols and responses
US6226718B1 (en) Method and system for avoiding livelocks due to stale exclusive/modified directory entries within a non-uniform access system
US6247098B1 (en) Cache coherency protocol with selectively implemented tagged state
US6345344B1 (en) Cache allocation mechanism for modified-unsolicited cache state that modifies victimization priority bits
US6701416B1 (en) Cache coherency protocol with tagged intervention of modified values
US6341336B1 (en) Cache coherency protocol having tagged state used with cross-bars
US6345340B1 (en) Cache coherency protocol with ambiguous state for posted operations
US6374333B1 (en) Cache coherency protocol in which a load instruction hint bit is employed to indicate deallocation of a modified cache line supplied by intervention

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040614

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040614

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080507

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090421

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090520

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120529

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130529

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term