JPH09128346A - 階層バスシステム - Google Patents
階層バスシステムInfo
- Publication number
- JPH09128346A JPH09128346A JP7285829A JP28582995A JPH09128346A JP H09128346 A JPH09128346 A JP H09128346A JP 7285829 A JP7285829 A JP 7285829A JP 28582995 A JP28582995 A JP 28582995A JP H09128346 A JPH09128346 A JP H09128346A
- Authority
- JP
- Japan
- Prior art keywords
- bus
- transaction
- bridge
- cache
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Multi Processors (AREA)
- Bus Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【課題】 マルチプロセッサシステムにおいて、システ
ムに接続可能なCPUの数を増加させる。 【解決手段】 CPU10〜12は上位バス20を介し
てバスブリッジ30に接続され、CPU13〜15は上
位バス22を介してバスブリッジ32に接続される。バ
スブリッジ30及び32とが下位バス40を介してメイ
ンメモリ50及びI/O装置52が接続される。バスブ
リッジ30及び32にはそれぞれ上位のCPU10〜1
2及び13〜15によって共有されるブリッジキャッシ
ュ31及び33が接続される。上位バス20及び22は
スプリットバスであり、CPU10〜15はスプリット
対応可能となっている。この構成によれば、階層化によ
り接続可能なCPU数が増えるとともに、ブリッジキャ
ッシュの採用及び上位バスのスプリットバス化により、
階層化に伴うスループットやレイテンシの劣化を防止す
ることができる。
ムに接続可能なCPUの数を増加させる。 【解決手段】 CPU10〜12は上位バス20を介し
てバスブリッジ30に接続され、CPU13〜15は上
位バス22を介してバスブリッジ32に接続される。バ
スブリッジ30及び32とが下位バス40を介してメイ
ンメモリ50及びI/O装置52が接続される。バスブ
リッジ30及び32にはそれぞれ上位のCPU10〜1
2及び13〜15によって共有されるブリッジキャッシ
ュ31及び33が接続される。上位バス20及び22は
スプリットバスであり、CPU10〜15はスプリット
対応可能となっている。この構成によれば、階層化によ
り接続可能なCPU数が増えるとともに、ブリッジキャ
ッシュの採用及び上位バスのスプリットバス化により、
階層化に伴うスループットやレイテンシの劣化を防止す
ることができる。
Description
【0001】
【発明の属する技術分野】本発明は、複数のプロセッサ
及びメモリを含むマルチプロセッサシステムにおける階
層的なバスシステムに関する。
及びメモリを含むマルチプロセッサシステムにおける階
層的なバスシステムに関する。
【0002】
【従来の技術】情報処理システムの処理能力に対する要
求の増大に伴い、1つのプロセッサでは能力的に不足す
る場合が出てきている。このような問題に対処するた
め、複数のプロセッサを連結して並列動作させるマルチ
プロセッサ方式のシステムが研究・開発されている。
求の増大に伴い、1つのプロセッサでは能力的に不足す
る場合が出てきている。このような問題に対処するた
め、複数のプロセッサを連結して並列動作させるマルチ
プロセッサ方式のシステムが研究・開発されている。
【0003】マルチプロセッサシステムにおけるプロセ
ッサの結合方式としては従来より様々な方式が考案され
ているが、実現の容易さや実行するプログラムのプログ
ラミングの容易さなどの理由から、近年ではバス共有型
の密結合マルチプロセッサ方式が多く採用されている。
図20は、バス共有型の密結合マルチプロセッサシステ
ムを示す概略図である。図20のシステムでは、複数の
CPU10〜12を、バス90を介してメインメモリ5
0やI/O装置52に共通接続している。
ッサの結合方式としては従来より様々な方式が考案され
ているが、実現の容易さや実行するプログラムのプログ
ラミングの容易さなどの理由から、近年ではバス共有型
の密結合マルチプロセッサ方式が多く採用されている。
図20は、バス共有型の密結合マルチプロセッサシステ
ムを示す概略図である。図20のシステムでは、複数の
CPU10〜12を、バス90を介してメインメモリ5
0やI/O装置52に共通接続している。
【0004】
【発明が解決しようとする課題】マルチプロセッサシス
テムにおいて性能の向上を図る場合、プロセッサ(CP
U)の並列数を増やすという方法が考えられるが、バス
共有型の場合、1本のバスに接続し得るCPUの数には
物理的な制限があった。すなわち、1本のバス上に接続
するCPUの数を増やすと信号線の電気的な容量負荷の
増大や信号線の長さの増加によって反射等の問題が発生
するので、バス共有型でしかも各CPUを高速動作させ
ようとした場合、並列可能なCPUの数には制限があっ
た。また、CPU数の増加は、いわゆるバスコンテンシ
ョンの問題を引き起こすため、この点からもCPU数は
制限されていた。
テムにおいて性能の向上を図る場合、プロセッサ(CP
U)の並列数を増やすという方法が考えられるが、バス
共有型の場合、1本のバスに接続し得るCPUの数には
物理的な制限があった。すなわち、1本のバス上に接続
するCPUの数を増やすと信号線の電気的な容量負荷の
増大や信号線の長さの増加によって反射等の問題が発生
するので、バス共有型でしかも各CPUを高速動作させ
ようとした場合、並列可能なCPUの数には制限があっ
た。また、CPU数の増加は、いわゆるバスコンテンシ
ョンの問題を引き起こすため、この点からもCPU数は
制限されていた。
【0005】本発明は、このような問題を解決するため
になされたものであり、多数のCPUを並列可能な階層
バスシステムを提供することを目的とする。
になされたものであり、多数のCPUを並列可能な階層
バスシステムを提供することを目的とする。
【0006】
【課題を解決するための手段】前述の目的を達成するた
めに、本発明に係る階層バスシステムは、複数のプロセ
ッサとそれらプロセッサによって共有されるメインメモ
リとを含む階層バスシステムにおいて、前記プロセッサ
を複数個ずつ上位バスにて相互に接続し、各上位バスご
とに、当該上位バスに接続されるプロセッサによって共
有されるブリッジキャッシュを有するバスブリッジを設
け、各バスブリッジを下位バスにて相互に接続し、この
下位バスに前記メインメモリを接続し、前記プロセッサ
をスプリット対応可能とし、前記プロセッサから上位バ
スに発行されたトランザクションを前記バスブリッジに
てスプリット処理することを特徴とする。
めに、本発明に係る階層バスシステムは、複数のプロセ
ッサとそれらプロセッサによって共有されるメインメモ
リとを含む階層バスシステムにおいて、前記プロセッサ
を複数個ずつ上位バスにて相互に接続し、各上位バスご
とに、当該上位バスに接続されるプロセッサによって共
有されるブリッジキャッシュを有するバスブリッジを設
け、各バスブリッジを下位バスにて相互に接続し、この
下位バスに前記メインメモリを接続し、前記プロセッサ
をスプリット対応可能とし、前記プロセッサから上位バ
スに発行されたトランザクションを前記バスブリッジに
てスプリット処理することを特徴とする。
【0007】この構成では、まず第1に、プロセッサと
メインメモリとの間が上位バス及び下位バスからなる階
層的なバス構成となっているため、各上位バスに接続さ
れるプロセッサの数が限られる場合でも、上位バスの数
を増やすことによりシステム全体として多数のプロセッ
サを接続することができる。
メインメモリとの間が上位バス及び下位バスからなる階
層的なバス構成となっているため、各上位バスに接続さ
れるプロセッサの数が限られる場合でも、上位バスの数
を増やすことによりシステム全体として多数のプロセッ
サを接続することができる。
【0008】第2に、この構成では、各バスブリッジに
対して当該バスブリッジの上位バスに接続されるプロセ
ッサによって共有されるブリッジキャッシュを設けたこ
とにより、プロセッサから発行されたトランザクション
の要求データがブリッジキャッシュに存在する場合に
は、下位バスを介してメインメモリを読みに行く必要が
なくなるため、下位バスのバス負荷を低減し、下位バス
のスループットを向上させることができるとともに、プ
ロセッサがトランザクションに対するレスポンスを得る
までの遅れ時間(レイテンシ)を短くすることができ
る。
対して当該バスブリッジの上位バスに接続されるプロセ
ッサによって共有されるブリッジキャッシュを設けたこ
とにより、プロセッサから発行されたトランザクション
の要求データがブリッジキャッシュに存在する場合に
は、下位バスを介してメインメモリを読みに行く必要が
なくなるため、下位バスのバス負荷を低減し、下位バス
のスループットを向上させることができるとともに、プ
ロセッサがトランザクションに対するレスポンスを得る
までの遅れ時間(レイテンシ)を短くすることができ
る。
【0009】第3に、この構成では、上位バスをスプリ
ットバスとしたことにより、上位バスのスループットを
向上させることができる。ここでスプリットとは、トラ
ンザクション発行のサイクルとそのトランザクションに
対する応答のサイクルとを分割可能とし、その間にトラ
ンザクション発行元のプロセッサにバス使用権を放棄さ
せ、他のバスマスタがトランザクションを発行できるよ
うにする方式である。
ットバスとしたことにより、上位バスのスループットを
向上させることができる。ここでスプリットとは、トラ
ンザクション発行のサイクルとそのトランザクションに
対する応答のサイクルとを分割可能とし、その間にトラ
ンザクション発行元のプロセッサにバス使用権を放棄さ
せ、他のバスマスタがトランザクションを発行できるよ
うにする方式である。
【0010】プロセッサのトランザクションの要求デー
タがブリッジキャッシュに存在しない場合、下位バスに
トランザクションを転送してメインメモリや他のクラス
タのキャッシュを読みに行く必要がある。この場合にお
いて、下位バスからの応答を待つ間、そのトランザクシ
ョンを発したプロセッサが上位バスを占有していると、
上位バスのスループットが低下してしまう。これに対し
て、本発明の構成では、プロセッサのトランザクション
の要求データがブリッジキャッシュに存在せず下位バス
にトランザクションを転送する必要がある場合には、そ
のトランザクションをスプリットすることができるの
で、その間上位バスに他のトランザクションを発行する
ことができ、全体として上位バスのスループットを向上
させることができる。
タがブリッジキャッシュに存在しない場合、下位バスに
トランザクションを転送してメインメモリや他のクラス
タのキャッシュを読みに行く必要がある。この場合にお
いて、下位バスからの応答を待つ間、そのトランザクシ
ョンを発したプロセッサが上位バスを占有していると、
上位バスのスループットが低下してしまう。これに対し
て、本発明の構成では、プロセッサのトランザクション
の要求データがブリッジキャッシュに存在せず下位バス
にトランザクションを転送する必要がある場合には、そ
のトランザクションをスプリットすることができるの
で、その間上位バスに他のトランザクションを発行する
ことができ、全体として上位バスのスループットを向上
させることができる。
【0011】また、本発明は、さらに上位バス上のプロ
セッサが、それぞれ自分専用のプロセッサキャッシュを
有する場合において、プロセッサキャッシュ及びブリッ
ジキャッシュは各キャッシュブロックのステートを記憶
するステート記憶手段をそれぞれ有し、プロセッサ及び
バスブリッジは自らが有するプロセッサキャッシュ又は
ブリッジキャッシュのステート記憶手段を制御するステ
ート制御手段をそれぞれ有し、プロセッサキャッシュの
各キャッシュブロックの取り得るステートを、ブリッジ
キャッシュの対応キャッシュブロックのステートに基づ
いて制約することにより、ブリッジキャッシュとこのブ
リッジキャッシュの上位のプロセッサキャッシュとのマ
ルチレベル包含性を維持することを特徴とする。
セッサが、それぞれ自分専用のプロセッサキャッシュを
有する場合において、プロセッサキャッシュ及びブリッ
ジキャッシュは各キャッシュブロックのステートを記憶
するステート記憶手段をそれぞれ有し、プロセッサ及び
バスブリッジは自らが有するプロセッサキャッシュ又は
ブリッジキャッシュのステート記憶手段を制御するステ
ート制御手段をそれぞれ有し、プロセッサキャッシュの
各キャッシュブロックの取り得るステートを、ブリッジ
キャッシュの対応キャッシュブロックのステートに基づ
いて制約することにより、ブリッジキャッシュとこのブ
リッジキャッシュの上位のプロセッサキャッシュとのマ
ルチレベル包含性を維持することを特徴とする。
【0012】この構成では、プロセッサキャッシュ及び
ブリッジキャッシュのそれぞれに各キャッシュブロック
のステートを記憶するステート記憶手段を設け、このス
テート記憶手段に記憶されたステートを用いてトランザ
クションの制御を行う。ステート記憶手段における各ス
テートは、ステート制御手段によって制御する。ここ
で、この構成では、プロセッサキャッシュの各キャッシ
ュブロックの取り得るステートをブリッジキャッシュの
対応キャッシュブロックのステートに基づいて制約する
ことにより、ブリッジキャッシュとこのブリッジキャッ
シュの上位のプロセッサキャッシュとのマルチレベル包
含性を維持する。この結果、プロセッサキャッシュとブ
リッジキャッシュとメインメモリとのキャッシュコンシ
ステンシを保つことができる。しかも、プロセッサキャ
ッシュとブリッジキャッシュとの間でマルチレベル包含
性を維持することにより、キャッシュコンシステンシ維
持のためのバスブリッジの構成を比較的簡単なものとす
ることができる。
ブリッジキャッシュのそれぞれに各キャッシュブロック
のステートを記憶するステート記憶手段を設け、このス
テート記憶手段に記憶されたステートを用いてトランザ
クションの制御を行う。ステート記憶手段における各ス
テートは、ステート制御手段によって制御する。ここ
で、この構成では、プロセッサキャッシュの各キャッシ
ュブロックの取り得るステートをブリッジキャッシュの
対応キャッシュブロックのステートに基づいて制約する
ことにより、ブリッジキャッシュとこのブリッジキャッ
シュの上位のプロセッサキャッシュとのマルチレベル包
含性を維持する。この結果、プロセッサキャッシュとブ
リッジキャッシュとメインメモリとのキャッシュコンシ
ステンシを保つことができる。しかも、プロセッサキャ
ッシュとブリッジキャッシュとの間でマルチレベル包含
性を維持することにより、キャッシュコンシステンシ維
持のためのバスブリッジの構成を比較的簡単なものとす
ることができる。
【0013】また、本発明は、バスブリッジに対してブ
リッジキャッシュのエビクション対象のキャッシュブロ
ックのデータを格納するバッファ手段を設け、エビクシ
ョン判定手段にてエビクションが必要と判定されると、
ブリッジキャッシュのエビクション対象のキャッシュブ
ロックのデータを前記バッファ手段に退避させたのちブ
リッジキャッシュの当該キャッシュブロックを用いて上
位バスからのトランザクションに対する処理を実行し、
前記バッファ手段に退避したデータを用いてライトバッ
ク処理を行うことを特徴とする。
リッジキャッシュのエビクション対象のキャッシュブロ
ックのデータを格納するバッファ手段を設け、エビクシ
ョン判定手段にてエビクションが必要と判定されると、
ブリッジキャッシュのエビクション対象のキャッシュブ
ロックのデータを前記バッファ手段に退避させたのちブ
リッジキャッシュの当該キャッシュブロックを用いて上
位バスからのトランザクションに対する処理を実行し、
前記バッファ手段に退避したデータを用いてライトバッ
ク処理を行うことを特徴とする。
【0014】この構成では、まずバスブリッジが上位バ
スからトランザクションを受け取った場合、エビクショ
ン判定手段によって当該トランザクションのアドレスに
対応するブリッジキャッシュのキャッシュブロックをエ
ビクションする必要があるか否かを判定する。この判定
の結果エビクションが必要と判定された場合、バスブリ
ッジは、ブリッジキャッシュの当該エビクション対象の
キャッシュブロックをバッファ手段に書き込む。この結
果、当該エビクション対象のキャッシュブロックのデー
タのライトバック処理はバッファ手段に書き込まれたデ
ータによって行うことができるので、ブリッジキャッシ
ュの当該エビクション対象のキャッシュブロックのデー
タを確保しておく必要がなくなる。したがって、当該キ
ャッシュブロックは上位バスからのトランザクションに
よって使用可能な状態となるので、バスブリッジは、ラ
イトバック処理の終了を待たずに当該キャッシュブロッ
クを用いて上位バストランザクションに対する処理を進
行することができる。
スからトランザクションを受け取った場合、エビクショ
ン判定手段によって当該トランザクションのアドレスに
対応するブリッジキャッシュのキャッシュブロックをエ
ビクションする必要があるか否かを判定する。この判定
の結果エビクションが必要と判定された場合、バスブリ
ッジは、ブリッジキャッシュの当該エビクション対象の
キャッシュブロックをバッファ手段に書き込む。この結
果、当該エビクション対象のキャッシュブロックのデー
タのライトバック処理はバッファ手段に書き込まれたデ
ータによって行うことができるので、ブリッジキャッシ
ュの当該エビクション対象のキャッシュブロックのデー
タを確保しておく必要がなくなる。したがって、当該キ
ャッシュブロックは上位バスからのトランザクションに
よって使用可能な状態となるので、バスブリッジは、ラ
イトバック処理の終了を待たずに当該キャッシュブロッ
クを用いて上位バストランザクションに対する処理を進
行することができる。
【0015】このように、本構成によれば、トランザク
ションに対する処理をエビクションに先行して行うこと
ができるため、プロセッサが最初にトランザクションを
発行してからそのトランザクションが完結するまでの時
間を大幅に短縮することができる。
ションに対する処理をエビクションに先行して行うこと
ができるため、プロセッサが最初にトランザクションを
発行してからそのトランザクションが完結するまでの時
間を大幅に短縮することができる。
【0016】なお、本構成において、さらにエビクショ
ン判定に応じてバスブリッジから上位バスに発行したイ
ンバリデートトランザクションに対して、上位バスのプ
ロセッサから当該エビクション対象のキャッシュブロッ
クのデータがライトバックされてきた場合に、プロセッ
サからライトバックされてきたデータによって前記バッ
ファ手段に格納されているデータを更新する構成とする
こともできる。この構成によれば、当該バスブリッジの
上位のプロセッサに当該エビクション対象のキャッシュ
ブロックの最新のデータが存在する場合に、この最新の
データはバスブリッジのバッファ手段に書き戻されるの
で、バスブリッジにおけるライトバックにおいては、そ
の最新データをバッファ手段からメインメモリに書き戻
すことができる。
ン判定に応じてバスブリッジから上位バスに発行したイ
ンバリデートトランザクションに対して、上位バスのプ
ロセッサから当該エビクション対象のキャッシュブロッ
クのデータがライトバックされてきた場合に、プロセッ
サからライトバックされてきたデータによって前記バッ
ファ手段に格納されているデータを更新する構成とする
こともできる。この構成によれば、当該バスブリッジの
上位のプロセッサに当該エビクション対象のキャッシュ
ブロックの最新のデータが存在する場合に、この最新の
データはバスブリッジのバッファ手段に書き戻されるの
で、バスブリッジにおけるライトバックにおいては、そ
の最新データをバッファ手段からメインメモリに書き戻
すことができる。
【0017】また、本発明は、バスブリッジが、当該バ
スブリッジにおいてスプリット中のトランザクションの
有無を示すスプリットフラグ手段と、上位バスから受け
取ったトランザクションの種類がキャッシュブロックを
使用する種類であるか否かを判定するトランザクション
判定手段と、上位バスから受け取ったトランザクション
のリトライの要否を判定するリトライ判定手段であっ
て、前記スプリットフラグ手段がスプリット中のトラン
ザクションが有ることを示し、かつ上位バスから受け取
ったトランザクションが前記トランザクション判定手段
によってキャッシュブロックを使用する種類であると判
定された場合にリトライが必要と判定するリトライ判定
手段と、前記リトライ判定手段によってリトライが必要
と判定されたときに、上位バスに対して前記トランザク
ションについてのリトライ信号を出力するリトライ出力
手段とを有し、前記上位バスのトランザクションを発行
したプロセッサは、バスブリッジからリトライ信号を受
け取った場合に、当該トランザクションをいったん終了
し、所定時間後に前記トランザクションを再発行するこ
とを特徴とする。
スブリッジにおいてスプリット中のトランザクションの
有無を示すスプリットフラグ手段と、上位バスから受け
取ったトランザクションの種類がキャッシュブロックを
使用する種類であるか否かを判定するトランザクション
判定手段と、上位バスから受け取ったトランザクション
のリトライの要否を判定するリトライ判定手段であっ
て、前記スプリットフラグ手段がスプリット中のトラン
ザクションが有ることを示し、かつ上位バスから受け取
ったトランザクションが前記トランザクション判定手段
によってキャッシュブロックを使用する種類であると判
定された場合にリトライが必要と判定するリトライ判定
手段と、前記リトライ判定手段によってリトライが必要
と判定されたときに、上位バスに対して前記トランザク
ションについてのリトライ信号を出力するリトライ出力
手段とを有し、前記上位バスのトランザクションを発行
したプロセッサは、バスブリッジからリトライ信号を受
け取った場合に、当該トランザクションをいったん終了
し、所定時間後に前記トランザクションを再発行するこ
とを特徴とする。
【0018】この構成において、スプリット中とは、バ
スブリッジが上位バスからのトランザクションをスプリ
ットしてから、当該トランザクションの発行元のプロセ
ッサに対してスプリット応答が完了するまでの間のこと
をいう。この構成では、バスブリッジがあるトランザク
ションについてスプリット中の間に別のトランザクショ
ンを受け取った場合、当該別のトランザクションがキャ
ッシュブロックを使用するかしないかを判定し、使用す
ると判定される場合にのみ当該別のトランザクションを
リトライさせる。そして、キャッシュブロックを使用し
ない種類のトランザクションについては、リトライさせ
ずにそのまま処理を行う。したがって、バスブリッジに
起因するリトライの発生頻度の増大を防止し、システム
全体としての処理効率を高めることができる。
スブリッジが上位バスからのトランザクションをスプリ
ットしてから、当該トランザクションの発行元のプロセ
ッサに対してスプリット応答が完了するまでの間のこと
をいう。この構成では、バスブリッジがあるトランザク
ションについてスプリット中の間に別のトランザクショ
ンを受け取った場合、当該別のトランザクションがキャ
ッシュブロックを使用するかしないかを判定し、使用す
ると判定される場合にのみ当該別のトランザクションを
リトライさせる。そして、キャッシュブロックを使用し
ない種類のトランザクションについては、リトライさせ
ずにそのまま処理を行う。したがって、バスブリッジに
起因するリトライの発生頻度の増大を防止し、システム
全体としての処理効率を高めることができる。
【0019】また、本発明は、バスブリッジが、当該バ
スブリッジにおいてスプリット中のトランザクションが
使用するキャッシュブロックのアドレス情報を記憶する
スプリット情報記憶手段と、上位バスから受け取ったト
ランザクションのアドレスと前記スプリット情報記憶手
段に記憶されたアドレス情報とを比較し、上位バスから
受け取ったトランザクションがスプリット中のトランザ
クションの使用するキャッシュブロックを使用するか否
かを判定するアドレス判定手段と、上位バスから受け取
ったトランザクションのリトライの要否を判定するリト
ライ判定手段であって、前記アドレス判定手段において
上位バスから受け取ったトランザクションがスプリット
中のトランザクションの使用するキャッシュブロックを
使用すると判定された場合にリトライが必要と判定する
リトライ判定手段とを有し、前記上位バスのトランザク
ションを発行したプロセッサは、バスブリッジからリト
ライ信号を受け取った場合に、当該トランザクションを
いったん終了し、所定時間後に前記トランザクションを
再発行することを特徴とする。
スブリッジにおいてスプリット中のトランザクションが
使用するキャッシュブロックのアドレス情報を記憶する
スプリット情報記憶手段と、上位バスから受け取ったト
ランザクションのアドレスと前記スプリット情報記憶手
段に記憶されたアドレス情報とを比較し、上位バスから
受け取ったトランザクションがスプリット中のトランザ
クションの使用するキャッシュブロックを使用するか否
かを判定するアドレス判定手段と、上位バスから受け取
ったトランザクションのリトライの要否を判定するリト
ライ判定手段であって、前記アドレス判定手段において
上位バスから受け取ったトランザクションがスプリット
中のトランザクションの使用するキャッシュブロックを
使用すると判定された場合にリトライが必要と判定する
リトライ判定手段とを有し、前記上位バスのトランザク
ションを発行したプロセッサは、バスブリッジからリト
ライ信号を受け取った場合に、当該トランザクションを
いったん終了し、所定時間後に前記トランザクションを
再発行することを特徴とする。
【0020】この構成では、スプリット情報記憶手段に
格納されたアドレス情報を用いることにより、バスブリ
ッジが受け取った上位バスからのトランザクションが現
在スプリット中のトランザクションの使用するキャッシ
ュブロックを使用するものか否かを判定することができ
る。そして、この構成では、上位バスからのトランザク
ションが、現在スプリット中のトランザクションの使用
するキャッシュブロックを使用すると判定された場合に
のみ、当該上位バスからのトランザクションのリトライ
を行う。したがって、この構成によれば、バスブリッジ
に起因するリトライの発生頻度が小さくなり、システム
全体としての処理効率を高めることができる。
格納されたアドレス情報を用いることにより、バスブリ
ッジが受け取った上位バスからのトランザクションが現
在スプリット中のトランザクションの使用するキャッシ
ュブロックを使用するものか否かを判定することができ
る。そして、この構成では、上位バスからのトランザク
ションが、現在スプリット中のトランザクションの使用
するキャッシュブロックを使用すると判定された場合に
のみ、当該上位バスからのトランザクションのリトライ
を行う。したがって、この構成によれば、バスブリッジ
に起因するリトライの発生頻度が小さくなり、システム
全体としての処理効率を高めることができる。
【0021】また、本発明は、前記バッファ手段を有す
る構成において、さらにバスブリッジが、上位バスから
受け取ったトランザクションのアドレスとバッファ手段
に退避中のキャッシュブロックのアドレスとを比較し、
当該トランザクションが退避中のキャッシュブロックに
対するトランザクションであるか否かを判定するアドレ
ス比較手段と、前記上位バスからのトランザクションが
退避中のキャッシュブロックに対するトランザクション
だと判定された場合に、当該トランザクションに対して
リトライが必要と判定するリトライ判定手段と、前記リ
トライ判定手段によってリトライが必要と判定されたと
きに、上位バスに対して前記トランザクションについて
のリトライ信号を出力するリトライ出力手段とを有し、
前記上位バスのトランザクションを発行したプロセッサ
は、バスブリッジからリトライ信号を受け取った場合
に、当該トランザクションをいったん終了し、所定時間
後に前記トランザクションを再発行することを特徴とす
る。
る構成において、さらにバスブリッジが、上位バスから
受け取ったトランザクションのアドレスとバッファ手段
に退避中のキャッシュブロックのアドレスとを比較し、
当該トランザクションが退避中のキャッシュブロックに
対するトランザクションであるか否かを判定するアドレ
ス比較手段と、前記上位バスからのトランザクションが
退避中のキャッシュブロックに対するトランザクション
だと判定された場合に、当該トランザクションに対して
リトライが必要と判定するリトライ判定手段と、前記リ
トライ判定手段によってリトライが必要と判定されたと
きに、上位バスに対して前記トランザクションについて
のリトライ信号を出力するリトライ出力手段とを有し、
前記上位バスのトランザクションを発行したプロセッサ
は、バスブリッジからリトライ信号を受け取った場合
に、当該トランザクションをいったん終了し、所定時間
後に前記トランザクションを再発行することを特徴とす
る。
【0022】この構成は、エビクション対象のキャッシ
ュブロックをブリッジキャッシュから一時的に退避して
おくためのバッファ手段を有するバスブリッジを用いる
システムに関するものである。バッファ手段に退避して
いるデータは、データの整合性を保つため他のトランザ
クションからは読み書きができない。したがって、バス
ブリッジが当該退避データに対する別のトランザクショ
ンを受け取った場合、当該トランザクションについてリ
トライを行う必要がある。そこで、本構成では、アドレ
ス比較手段によって、上位バスから受け取ったトランザ
クションのアドレスとバッファ手段に退避中のデータの
アドレスとを比較し、退避中のデータに対するトランザ
クションのみをリトライさせる。この構成によれば、バ
ッファ手段に退避中のデータに対するトランザクション
のみをリトライさせることができる。
ュブロックをブリッジキャッシュから一時的に退避して
おくためのバッファ手段を有するバスブリッジを用いる
システムに関するものである。バッファ手段に退避して
いるデータは、データの整合性を保つため他のトランザ
クションからは読み書きができない。したがって、バス
ブリッジが当該退避データに対する別のトランザクショ
ンを受け取った場合、当該トランザクションについてリ
トライを行う必要がある。そこで、本構成では、アドレ
ス比較手段によって、上位バスから受け取ったトランザ
クションのアドレスとバッファ手段に退避中のデータの
アドレスとを比較し、退避中のデータに対するトランザ
クションのみをリトライさせる。この構成によれば、バ
ッファ手段に退避中のデータに対するトランザクション
のみをリトライさせることができる。
【0023】また、本発明は、バスブリッジが、上位バ
スから受け取ったトランザクションをスプリットして下
位バスにトランザクションを発行した場合において、当
該下位バスのトランザクションに対して下位バスからリ
トライ信号を受け取った場合には、前記上位バスに対し
てスプリット応答トランザクションを発行すると共に前
記上位バスのトランザクション発行元のプロセッサに対
してリトライ信号を出力し、前記トランザクション発行
元のプロセッサは、前記バスブリッジからのリトライ信
号を受信すると、前記トランザクションをいったん終了
し、所定時間後にリトライすることを特徴とする。
スから受け取ったトランザクションをスプリットして下
位バスにトランザクションを発行した場合において、当
該下位バスのトランザクションに対して下位バスからリ
トライ信号を受け取った場合には、前記上位バスに対し
てスプリット応答トランザクションを発行すると共に前
記上位バスのトランザクション発行元のプロセッサに対
してリトライ信号を出力し、前記トランザクション発行
元のプロセッサは、前記バスブリッジからのリトライ信
号を受信すると、前記トランザクションをいったん終了
し、所定時間後にリトライすることを特徴とする。
【0024】この構成は、バスブリッジが、上位バスか
ら受け取ったトランザクションに対応して下位バスにト
ランザクションを発行した場合において、当該下位バス
・トランザクションに対して下位バスのエージェント
(例えばI/O装置)などからリトライ信号がバスブリ
ッジに返ってきた場合の処理に関する。すなわち、この
構成では、バスブリッジ自身が当該下位バス・トランザ
クションについてのリトライ処理を行うのではなく、バ
スブリッジからトランザクション発行元のプロセッサに
対してリトライ信号を発行し、そのプロセッサにリトラ
イ処理をさせる。この構成によれば、バスブリッジがリ
トライ処理のための特別の構成を持つ必要がなくなり、
バスブリッジの構成を簡単化することができる。
ら受け取ったトランザクションに対応して下位バスにト
ランザクションを発行した場合において、当該下位バス
・トランザクションに対して下位バスのエージェント
(例えばI/O装置)などからリトライ信号がバスブリ
ッジに返ってきた場合の処理に関する。すなわち、この
構成では、バスブリッジ自身が当該下位バス・トランザ
クションについてのリトライ処理を行うのではなく、バ
スブリッジからトランザクション発行元のプロセッサに
対してリトライ信号を発行し、そのプロセッサにリトラ
イ処理をさせる。この構成によれば、バスブリッジがリ
トライ処理のための特別の構成を持つ必要がなくなり、
バスブリッジの構成を簡単化することができる。
【0025】また、本発明は、バスブリッジが、上位バ
ストランザクションが有するスプリット識別子に対して
下位バスにおいて当該バスブリッジに固有のブリッジ識
別子を付加することにより、下位バストランザクション
のスプリット識別子を生成するスプリット識別子拡張手
段を有し、上位バスから受け取った上位バストランザク
ションをスプリットして下位バスに下位バストランザク
ションを発行する場合に、前記スプリット識別子拡張手
段によって得られたスプリット識別子を下位バストラン
ザクションに付することを特徴とする。
ストランザクションが有するスプリット識別子に対して
下位バスにおいて当該バスブリッジに固有のブリッジ識
別子を付加することにより、下位バストランザクション
のスプリット識別子を生成するスプリット識別子拡張手
段を有し、上位バスから受け取った上位バストランザク
ションをスプリットして下位バスに下位バストランザク
ションを発行する場合に、前記スプリット識別子拡張手
段によって得られたスプリット識別子を下位バストラン
ザクションに付することを特徴とする。
【0026】この構成において、上位バストランザクシ
ョンのスプリット識別子は、トランザクションの発行元
のプロセッサを識別するための識別子と当該プロセッサ
内においてトランザクションを識別するための識別子と
を含んでいるが、スプリット識別子のビット数が定まっ
ていれば識別可能なプロセッサの数、すなわちシステム
に接続可能なプロセッサの数も自ずと制限される。この
接続可能プロセッサ数の論理的制限を緩和するのが本構
成である。
ョンのスプリット識別子は、トランザクションの発行元
のプロセッサを識別するための識別子と当該プロセッサ
内においてトランザクションを識別するための識別子と
を含んでいるが、スプリット識別子のビット数が定まっ
ていれば識別可能なプロセッサの数、すなわちシステム
に接続可能なプロセッサの数も自ずと制限される。この
接続可能プロセッサ数の論理的制限を緩和するのが本構
成である。
【0027】この構成では、バスブリッジにて上位バス
トランザクションをスプリットして下位バスにトランザ
クションを発行する場合には、上位バストランザクショ
ンに与えられたスプリット識別子に対してバスブリッジ
のブリッジ識別子を付加することにより拡張したスプリ
ット識別子を下位バストランザクションに与える。この
構成によれば、下位バストランザクションは、拡張され
たスプリット識別子に含まれるブリッジ識別子よりその
発行元のバスブリッジを特定することが可能となる。し
たがって、下位バストランザクションからバスブリッジ
が特定されれば、トランザクション発行元プロセッサは
そのバスブリッジの上位にあることになるので、別々の
上位バス上のプロセッサに同一のプロセッサ識別子を与
えたとしてもそれらを互いに識別することが可能とな
る。したがって、この構成によれば、プロセッサ識別子
の数に制限があっても、ブリッジ識別子を加えたことに
より、システム全体として識別可能なプロセッサの数を
増やすことができ、階層バスシステム全体に接続可能な
プロセッサ数を増やすことができる。
トランザクションをスプリットして下位バスにトランザ
クションを発行する場合には、上位バストランザクショ
ンに与えられたスプリット識別子に対してバスブリッジ
のブリッジ識別子を付加することにより拡張したスプリ
ット識別子を下位バストランザクションに与える。この
構成によれば、下位バストランザクションは、拡張され
たスプリット識別子に含まれるブリッジ識別子よりその
発行元のバスブリッジを特定することが可能となる。し
たがって、下位バストランザクションからバスブリッジ
が特定されれば、トランザクション発行元プロセッサは
そのバスブリッジの上位にあることになるので、別々の
上位バス上のプロセッサに同一のプロセッサ識別子を与
えたとしてもそれらを互いに識別することが可能とな
る。したがって、この構成によれば、プロセッサ識別子
の数に制限があっても、ブリッジ識別子を加えたことに
より、システム全体として識別可能なプロセッサの数を
増やすことができ、階層バスシステム全体に接続可能な
プロセッサ数を増やすことができる。
【0028】また、本発明は、バスブリッジが、一方の
バスから受け取ったトランザクションのスプリット識別
子を所定ビット数のブリッジトランザクション識別子に
変換し、他方のバスにおいて当該バスブリッジに固有な
ブリッジ識別子に前記ブリッジトランザクション識別子
を付加することにより、他方のバスに発行するトランザ
クションに付与するスプリット識別子を生成するスプリ
ット識別子生成手段を有し、前記ブリッジトランザクシ
ョン識別子のビット数と前記ブリッジ識別子のビット数
との和は前記一方のバスにおけるスプリット識別子のビ
ット数に等しく、一方のバスから受け取ったトランザク
ションに対し他方のバスにトランザクションを発行する
必要がある場合には、当該他方のバスに発行するトラン
ザクションに対して前記スプリット識別子生成手段によ
って得られたスプリット識別子を当該他方のバスに発行
するトランザクションに付することを特徴とする。
バスから受け取ったトランザクションのスプリット識別
子を所定ビット数のブリッジトランザクション識別子に
変換し、他方のバスにおいて当該バスブリッジに固有な
ブリッジ識別子に前記ブリッジトランザクション識別子
を付加することにより、他方のバスに発行するトランザ
クションに付与するスプリット識別子を生成するスプリ
ット識別子生成手段を有し、前記ブリッジトランザクシ
ョン識別子のビット数と前記ブリッジ識別子のビット数
との和は前記一方のバスにおけるスプリット識別子のビ
ット数に等しく、一方のバスから受け取ったトランザク
ションに対し他方のバスにトランザクションを発行する
必要がある場合には、当該他方のバスに発行するトラン
ザクションに対して前記スプリット識別子生成手段によ
って得られたスプリット識別子を当該他方のバスに発行
するトランザクションに付することを特徴とする。
【0029】この構成では、バスブリッジが一方のバス
から受け取ったトランザクションも対応して他方のバス
にトランザクションを発行する際に当該他方のバスのト
ランザクションに与えるスプリット識別子を、前記一方
のバスのトランザクションのスプリット識別子と同ビッ
ト数とする。ここで、バスブリッジがトランザクション
に対して与えるスプリット識別子には、当該バスブリッ
ジのブリッジ識別子を含める。このため、バスブリッジ
は、一方のバスからのトランザクションのスプリット識
別子を所定ビット数のブリッジトランザクション識別子
に変換し、このブリッジトランザクション識別子と当該
バスブリッジのブリッジ識別子とを組み合わせることに
より、他方のバスへ発行するトランザクションのスプリ
ット識別子を生成する。ここで、ブリッジトランザクシ
ョン識別子のビット数は、スプリット識別子のビット数
からブリッジ識別子のビット数を減算した値である。な
お、この構成においては、一つのバスブリッジに対して
上位バスに対するブリッジ識別子と下位バスに対するブ
リッジ識別子が与えられ、各バスに対するブリッジ識別
子としては、当該バスにおいて当該バスブリッジを一意
的に識別できる値が与えられる。このような構成によれ
ば、下位バスにもプロセッサを接続することが可能にな
る。
から受け取ったトランザクションも対応して他方のバス
にトランザクションを発行する際に当該他方のバスのト
ランザクションに与えるスプリット識別子を、前記一方
のバスのトランザクションのスプリット識別子と同ビッ
ト数とする。ここで、バスブリッジがトランザクション
に対して与えるスプリット識別子には、当該バスブリッ
ジのブリッジ識別子を含める。このため、バスブリッジ
は、一方のバスからのトランザクションのスプリット識
別子を所定ビット数のブリッジトランザクション識別子
に変換し、このブリッジトランザクション識別子と当該
バスブリッジのブリッジ識別子とを組み合わせることに
より、他方のバスへ発行するトランザクションのスプリ
ット識別子を生成する。ここで、ブリッジトランザクシ
ョン識別子のビット数は、スプリット識別子のビット数
からブリッジ識別子のビット数を減算した値である。な
お、この構成においては、一つのバスブリッジに対して
上位バスに対するブリッジ識別子と下位バスに対するブ
リッジ識別子が与えられ、各バスに対するブリッジ識別
子としては、当該バスにおいて当該バスブリッジを一意
的に識別できる値が与えられる。このような構成によれ
ば、下位バスにもプロセッサを接続することが可能にな
る。
【0030】なお、この構成において、さらにスプリッ
ト識別子プロセッサ識別子とブリッジ識別子を同ビット
数にすれば、プロセッサとバスブリッジとを識別子に関
して等価として扱うことができるので、下位バスにプロ
セッサを接続したり、上位バスにバスブリッジを接続し
たりすることができ、システム構成の柔軟性を向上させ
ることができる。また、さらに、バスブリッジが付与可
能なブリッジトランザクション識別子が現在使用されて
いるか否かを管理する管理テーブルを用意し、この管理
テーブルを用いてブリッジトランザクション識別子を決
定することにより、ブリッジトランザクション識別子を
無駄なく割り当てることができる。
ト識別子プロセッサ識別子とブリッジ識別子を同ビット
数にすれば、プロセッサとバスブリッジとを識別子に関
して等価として扱うことができるので、下位バスにプロ
セッサを接続したり、上位バスにバスブリッジを接続し
たりすることができ、システム構成の柔軟性を向上させ
ることができる。また、さらに、バスブリッジが付与可
能なブリッジトランザクション識別子が現在使用されて
いるか否かを管理する管理テーブルを用意し、この管理
テーブルを用いてブリッジトランザクション識別子を決
定することにより、ブリッジトランザクション識別子を
無駄なく割り当てることができる。
【0031】また、本発明は、階層バスシステムにおい
てバスの物理的仕様及び論理的仕様を下位バスと上位バ
スとで共通としたことを特徴とする。
てバスの物理的仕様及び論理的仕様を下位バスと上位バ
スとで共通としたことを特徴とする。
【0032】この構成によれば、上位バスと下位バスと
の仕様を同一にすることにより、プロセッサ及びバスブ
リッジを上位バス及び下位バスのいずれにも接続するこ
とができるようになるので、システム構成のバリエーシ
ョンを広げることができる。
の仕様を同一にすることにより、プロセッサ及びバスブ
リッジを上位バス及び下位バスのいずれにも接続するこ
とができるようになるので、システム構成のバリエーシ
ョンを広げることができる。
【0033】また、本発明は、階層バスシステムにおい
て、下位バスを複数設け、これら各下位バスにそれぞれ
メインメモリを接続し、各上位バスに対して下位バスと
同数のバスブリッジを接続し、前記各上位バスと各下位
バスとを互いに1つのバスブリッジを介して接続したこ
とを特徴とする。
て、下位バスを複数設け、これら各下位バスにそれぞれ
メインメモリを接続し、各上位バスに対して下位バスと
同数のバスブリッジを接続し、前記各上位バスと各下位
バスとを互いに1つのバスブリッジを介して接続したこ
とを特徴とする。
【0034】この構成では、1つのプロセッサは、複数
のバスブリッジを介して複数のメインメモリに接続され
る。各メインメモリはそれぞれ別々の下位バスに接続さ
れているので、複数のメインメモリの総メモリサイズと
同じメモリサイズの一つのメインメモリを採用するシス
テム構成をとった場合に比べて、下位バスの付加を低減
することができ、下位バスのスループットを向上させる
ことができる。なお、この構成において、複数の下位バ
スのそれぞれに対してバスブリッジを設け、これらバス
ブリッジを介して前記各下位バスを1つのI/Oバスに
接続し、このI/OバスにI/O装置を接続すれば、必
要なI/O装置を各下位バスごとに設ける必要がなくな
り、システムの大規模化を防止することができる。
のバスブリッジを介して複数のメインメモリに接続され
る。各メインメモリはそれぞれ別々の下位バスに接続さ
れているので、複数のメインメモリの総メモリサイズと
同じメモリサイズの一つのメインメモリを採用するシス
テム構成をとった場合に比べて、下位バスの付加を低減
することができ、下位バスのスループットを向上させる
ことができる。なお、この構成において、複数の下位バ
スのそれぞれに対してバスブリッジを設け、これらバス
ブリッジを介して前記各下位バスを1つのI/Oバスに
接続し、このI/OバスにI/O装置を接続すれば、必
要なI/O装置を各下位バスごとに設ける必要がなくな
り、システムの大規模化を防止することができる。
【0035】
【発明の実施の形態】以下、本発明に係るマルチプロセ
ッサシステムの好適な実施形態を図面に基づいて説明す
る。
ッサシステムの好適な実施形態を図面に基づいて説明す
る。
【0036】実施形態1.図1は、本発明に係るマルチ
プロセッサシステムの全体的な構成の一例を示す概略構
成図である。
プロセッサシステムの全体的な構成の一例を示す概略構
成図である。
【0037】図1において、CPU10〜15は、2つ
のグループ(CPU10〜12,CPU13〜15)に
グループ分けされ、各グループごとに1本の上位バス2
0、22に接続されている。
のグループ(CPU10〜12,CPU13〜15)に
グループ分けされ、各グループごとに1本の上位バス2
0、22に接続されている。
【0038】各上位バス20、22は、それぞれバスブ
リッジ30、32に接続されている。各バスブリッジ3
0、32は、それぞれキャッシュ(以下、ブリッジキャ
ッシュと呼ぶ)31、33を有している。ブリッジキャ
ッシュ31は、上位バス20上のCPU10〜12によ
って共有され、ブリッジキャッシュ33は、上位バス2
2上のCPU13〜15によって共有される。このよう
に、複数のCPUをグループ化して1つのバスブリッジ
(及びブリッジキャッシュ)に接続したものをクラスタ
と呼ぶ。各バスブリッジ30、32は、下位バス40に
よって相互接続され、この下位バス40にメインメモリ
50及びI/O装置52が接続される。なお、I/O装
置52は1つとは限らず、複数接続することもできる。
リッジ30、32に接続されている。各バスブリッジ3
0、32は、それぞれキャッシュ(以下、ブリッジキャ
ッシュと呼ぶ)31、33を有している。ブリッジキャ
ッシュ31は、上位バス20上のCPU10〜12によ
って共有され、ブリッジキャッシュ33は、上位バス2
2上のCPU13〜15によって共有される。このよう
に、複数のCPUをグループ化して1つのバスブリッジ
(及びブリッジキャッシュ)に接続したものをクラスタ
と呼ぶ。各バスブリッジ30、32は、下位バス40に
よって相互接続され、この下位バス40にメインメモリ
50及びI/O装置52が接続される。なお、I/O装
置52は1つとは限らず、複数接続することもできる。
【0039】したがって、例えば、CPU11から上位
バス20に発行されたトランザクションがリード(Re
ad)であった場合には、バスブリッジ30は、ブリッ
ジキャッシュ31をスヌープ(検索)し、この結果ブリ
ッジキャッシュ31にヒットした場合は検索されたデー
タを上位バス20に返し、ヒットしなかった場合には下
位バス40にリード・トランザクションを発行する。
バス20に発行されたトランザクションがリード(Re
ad)であった場合には、バスブリッジ30は、ブリッ
ジキャッシュ31をスヌープ(検索)し、この結果ブリ
ッジキャッシュ31にヒットした場合は検索されたデー
タを上位バス20に返し、ヒットしなかった場合には下
位バス40にリード・トランザクションを発行する。
【0040】図1の構成において、上位バス20及び2
2はスプリットバスであり、CPUから発せられるメモ
リトランザクション(メインメモリのデータ内容につい
てのトランザクション)及びI/Oトランザクション
(I/O装置に対するトランザクション)の両方につい
てスプリット可能となっている。また、CPU10〜1
5は、スプリット対応可能なCPUである。トランザク
ションをスプリットをするかしないかの判断はバスブリ
ッジ30及び32で行われる。
2はスプリットバスであり、CPUから発せられるメモ
リトランザクション(メインメモリのデータ内容につい
てのトランザクション)及びI/Oトランザクション
(I/O装置に対するトランザクション)の両方につい
てスプリット可能となっている。また、CPU10〜1
5は、スプリット対応可能なCPUである。トランザク
ションをスプリットをするかしないかの判断はバスブリ
ッジ30及び32で行われる。
【0041】ここで、トランザクションをスプリットし
た場合におけるシステム各部の動作について説明する。
上位バスに発せられたトランザクションをスプリットす
ると決定した場合、バスブリッジは、トランザクション
発行元のCPUに対して、当該トランザクションをスプ
リットする旨の応答(「スプリット終了」と呼ぶ)を返
すとともに、下位バスに対して必要なトランザクション
を発行する。一方、スプリット終了信号を受け取った要
求元CPUは、いったん上位バスを解放し、下位バスか
らの応答を待つ。バスブリッジは、下位バスに発行した
トランザクションに対する他のバスブリッジやメインメ
モリなどからの応答が揃ったところで、トランザクショ
ン発行元CPUに対するスプリット応答トランザクショ
ンを生成し、上位バス上に発行する。そして、トランザ
クション発行元CPUがこのスプリット応答トランザク
ションを受け取ったところで、当該CPUが最初に発行
したトランザクションに対する一連の処理が終了する。
このように、本構成によれば、上位バスをスプリットバ
スとしたことにより、トランザクションをスプリットし
てからスプリット応答トランザクションが発行されるま
での間は上位バスが解放されているので、その間上位バ
スに他のトランザクションを発行することができる。
た場合におけるシステム各部の動作について説明する。
上位バスに発せられたトランザクションをスプリットす
ると決定した場合、バスブリッジは、トランザクション
発行元のCPUに対して、当該トランザクションをスプ
リットする旨の応答(「スプリット終了」と呼ぶ)を返
すとともに、下位バスに対して必要なトランザクション
を発行する。一方、スプリット終了信号を受け取った要
求元CPUは、いったん上位バスを解放し、下位バスか
らの応答を待つ。バスブリッジは、下位バスに発行した
トランザクションに対する他のバスブリッジやメインメ
モリなどからの応答が揃ったところで、トランザクショ
ン発行元CPUに対するスプリット応答トランザクショ
ンを生成し、上位バス上に発行する。そして、トランザ
クション発行元CPUがこのスプリット応答トランザク
ションを受け取ったところで、当該CPUが最初に発行
したトランザクションに対する一連の処理が終了する。
このように、本構成によれば、上位バスをスプリットバ
スとしたことにより、トランザクションをスプリットし
てからスプリット応答トランザクションが発行されるま
での間は上位バスが解放されているので、その間上位バ
スに他のトランザクションを発行することができる。
【0042】このように、図1の構成によれば、まずC
PU10〜15とメインメモリ50、I/O装置52と
の間が階層的なバス構成となっているため、個々の上位
バス20、22に接続できるCPUの数が少なくても、
システム全体として多数のCPUを接続することができ
る。
PU10〜15とメインメモリ50、I/O装置52と
の間が階層的なバス構成となっているため、個々の上位
バス20、22に接続できるCPUの数が少なくても、
システム全体として多数のCPUを接続することができ
る。
【0043】また、この構成では、ブリッジキャッシュ
31、33を設けたことにより、上位バス20、22の
トランザクションの要求データがブリッジキャッシュに
存在する場合には、メインメモリ50を読みに行く必要
がなくなるため、下位バス40のバス負荷が低減され、
この結果下位バス40のスループットが向上する。ま
た、CPUが自らの発したトランザクションに対するレ
スポンスを得るまでのレイテンシも短くなる。
31、33を設けたことにより、上位バス20、22の
トランザクションの要求データがブリッジキャッシュに
存在する場合には、メインメモリ50を読みに行く必要
がなくなるため、下位バス40のバス負荷が低減され、
この結果下位バス40のスループットが向上する。ま
た、CPUが自らの発したトランザクションに対するレ
スポンスを得るまでのレイテンシも短くなる。
【0044】さらに、この構成では、上位バス20、2
2をスプリットバスとしたことにより、上位バスのスル
ープットを向上させることができる。すなわち、この構
成では、上位バス20、22のトランザクションを下位
バス40に転送する必要がある場合には、そのトランザ
クションをスプリットすることができるので、その間上
位バス20、22に他のトランザクションを発行するこ
とができ、全体として上位バスのスループットを向上さ
せることができる。
2をスプリットバスとしたことにより、上位バスのスル
ープットを向上させることができる。すなわち、この構
成では、上位バス20、22のトランザクションを下位
バス40に転送する必要がある場合には、そのトランザ
クションをスプリットすることができるので、その間上
位バス20、22に他のトランザクションを発行するこ
とができ、全体として上位バスのスループットを向上さ
せることができる。
【0045】なお、図1の構成はあくまで一例であり、
上位バス及び下位バスには、物理的制約を満たす範囲内
であれば、CPU及びバスブリッジをいくつでも接続す
ることができる。
上位バス及び下位バスには、物理的制約を満たす範囲内
であれば、CPU及びバスブリッジをいくつでも接続す
ることができる。
【0046】さて、図1の構成において、CPU10〜
15にそれぞれ専用キャッシュ(以下、CPUキャッシ
ュと呼ぶ)を設けた場合を考える。このように各CPU
に専用のCPUキャッシュを設ければ、上位バス20、
22に発行されるトランザクションが少なくなるので、
上位バス20、22のスループットを向上させることが
できる。ただし、この場合には、CPUキャッシュ、ブ
リッジキャッシュ、及びメインメモリの間のデータの一
貫性(キャッシュ・コンシステンシ)を保つ必要があ
る。
15にそれぞれ専用キャッシュ(以下、CPUキャッシ
ュと呼ぶ)を設けた場合を考える。このように各CPU
に専用のCPUキャッシュを設ければ、上位バス20、
22に発行されるトランザクションが少なくなるので、
上位バス20、22のスループットを向上させることが
できる。ただし、この場合には、CPUキャッシュ、ブ
リッジキャッシュ、及びメインメモリの間のデータの一
貫性(キャッシュ・コンシステンシ)を保つ必要があ
る。
【0047】キャッシュ・コンシステンシを維持するた
めのプロトコルとしては、従来より様々な方式が提案さ
れているが、その代表的なものにMESIプロトコルが
ある。MESIプロトコルは、ライトバック・キャッシ
ュのためのキャッシュ・コンシステンシ・プロトコルの
一つであり、各キャッシュブロックに対してM,E,
S,Iの4種類のいずれかのステート(状態)を与え、
キャッシュブロックの読み込み、書き換えの際にそのス
テートを一定の規則にしたがって制御することによりキ
ャッシュ・コンシステンシを維持する。
めのプロトコルとしては、従来より様々な方式が提案さ
れているが、その代表的なものにMESIプロトコルが
ある。MESIプロトコルは、ライトバック・キャッシ
ュのためのキャッシュ・コンシステンシ・プロトコルの
一つであり、各キャッシュブロックに対してM,E,
S,Iの4種類のいずれかのステート(状態)を与え、
キャッシュブロックの読み込み、書き換えの際にそのス
テートを一定の規則にしたがって制御することによりキ
ャッシュ・コンシステンシを維持する。
【0048】ここで、M,E,S,Iの各ステートの示
す意味は以下の通りである。
す意味は以下の通りである。
【0049】M(Modify):そのブロックの更新されたデ
ータ(すなわち、そのブロックの最新のデータ)をその
キャッシュだけが持つ。
ータ(すなわち、そのブロックの最新のデータ)をその
キャッシュだけが持つ。
【0050】E(Exclusive) :そのブロックに関しメイ
ンメモリと同一内容のデータをそのキャッシュだけが持
つ。
ンメモリと同一内容のデータをそのキャッシュだけが持
つ。
【0051】S(Shared):そのブロックに関しメインメ
モリと同一内容のデータを持つが、他のキャッシュも当
該データを持っている可能性がある。
モリと同一内容のデータを持つが、他のキャッシュも当
該データを持っている可能性がある。
【0052】I(Invalid) :そのブロックは無効であ
る。
る。
【0053】キャッシュブロックの読み込み、書き換え
などの操作を行った場合のステートの制御については、
MESIプロトコルに規則が定められている。例えば、
あるCPUのキャッシュのステートSのキャッシュブロ
ックにライト(書込み)が行われる場合について説明す
る。この場合、他のCPUのキャッシュが当該キャッシ
ュブロックをステートSで持っている可能性がある。し
たがって、ライトを行うCPUは、他のキャッシュの当
該キャッシュブロックを無効化するため、インバリデー
ト(Invalidate: 無効化)・トランザクションを発行す
る。これを受けた他のCPUは、自らのキャッシュの当
該キャッシュブロックのステートをIとし、ライトを行
うCPU自体は所望のライト処理を行ったのち当該キャ
ッシュブロックのステートをMに変更する。このような
操作により、CPUがキャッシュ内の古いデータを使用
するおそれが無くなり、キャッシュ・コンシステンシが
保たれる。すなわち、あるキャッシュがステートSのブ
ロックを持っている場合において当該ブロックについて
ライト(データの書換え)を行う場合には、キャッシュ
・コンシステンシ維持のためには、他のキャッシュの当
該ブロックを無効化する。
などの操作を行った場合のステートの制御については、
MESIプロトコルに規則が定められている。例えば、
あるCPUのキャッシュのステートSのキャッシュブロ
ックにライト(書込み)が行われる場合について説明す
る。この場合、他のCPUのキャッシュが当該キャッシ
ュブロックをステートSで持っている可能性がある。し
たがって、ライトを行うCPUは、他のキャッシュの当
該キャッシュブロックを無効化するため、インバリデー
ト(Invalidate: 無効化)・トランザクションを発行す
る。これを受けた他のCPUは、自らのキャッシュの当
該キャッシュブロックのステートをIとし、ライトを行
うCPU自体は所望のライト処理を行ったのち当該キャ
ッシュブロックのステートをMに変更する。このような
操作により、CPUがキャッシュ内の古いデータを使用
するおそれが無くなり、キャッシュ・コンシステンシが
保たれる。すなわち、あるキャッシュがステートSのブ
ロックを持っている場合において当該ブロックについて
ライト(データの書換え)を行う場合には、キャッシュ
・コンシステンシ維持のためには、他のキャッシュの当
該ブロックを無効化する。
【0054】また、別の例としては、あるキャッシュが
ステートEのブロックを持っている場合において当該ブ
ロックに対してライトを行う場合には、他のキャッシュ
はすべて当該ブロックを持っていない(ステートI)の
で、他のキャッシュに対して何ら手当てをすることなく
ライト処理を行うことができる。MESIプロトコルに
は、その他詳細な規則が定められているが、ここでは省
略する。
ステートEのブロックを持っている場合において当該ブ
ロックに対してライトを行う場合には、他のキャッシュ
はすべて当該ブロックを持っていない(ステートI)の
で、他のキャッシュに対して何ら手当てをすることなく
ライト処理を行うことができる。MESIプロトコルに
は、その他詳細な規則が定められているが、ここでは省
略する。
【0055】本実施形態では、基本的にこのMESIプ
ロトコルを用いてキャッシュ・コンシステンシの管理を
行うが、MESIプロトコル自体は1階層のキャッシュ
システムについて規定したものであり、本実施形態のよ
うなキャッシュが複数階層構成となっているものに対し
ては、そのままで利用することはできない。そこで本実
施形態では、上記MESIプロトコルを次のように拡張
する。
ロトコルを用いてキャッシュ・コンシステンシの管理を
行うが、MESIプロトコル自体は1階層のキャッシュ
システムについて規定したものであり、本実施形態のよ
うなキャッシュが複数階層構成となっているものに対し
ては、そのままで利用することはできない。そこで本実
施形態では、上記MESIプロトコルを次のように拡張
する。
【0056】すなわち、この拡張プロトコルでは、ME
SIの各ステートは、同レベルにあるキャッシュ同士の
関係を示すものと規定する。CPUキャッシュのステー
トは他のCPUキャッシュとの関係を示すものとし、ブ
リッジキャッシュのステートは他のブリッジキャッシュ
との関係を示すものとする。この場合、CPUキャッシ
ュのステートは前述したものと同じ意味となるが、ブリ
ッジキャッシュのステートの意味は以下に示す通りとな
る。
SIの各ステートは、同レベルにあるキャッシュ同士の
関係を示すものと規定する。CPUキャッシュのステー
トは他のCPUキャッシュとの関係を示すものとし、ブ
リッジキャッシュのステートは他のブリッジキャッシュ
との関係を示すものとする。この場合、CPUキャッシ
ュのステートは前述したものと同じ意味となるが、ブリ
ッジキャッシュのステートの意味は以下に示す通りとな
る。
【0057】M:そのブロックの更新されたデータ(す
なわち、そのブロックの最新のデータ)を、そのブリッ
ジキャッシュ自体又はそのブリッジキャッシュの上位の
CPUキャッシュが持つ。
なわち、そのブロックの最新のデータ)を、そのブリッ
ジキャッシュ自体又はそのブリッジキャッシュの上位の
CPUキャッシュが持つ。
【0058】E:そのブリッジキャッシュは、そのブロ
ックに関しメインメモリと同一内容のデータを有してお
り、他のブリッジキャッシュは当該ブロックのデータを
有しない。
ックに関しメインメモリと同一内容のデータを有してお
り、他のブリッジキャッシュは当該ブロックのデータを
有しない。
【0059】S:そのブロックに関しメインメモリと同
一内容のデータを持つが、他のブリッジキャッシュも当
該データを持っている可能性がある。
一内容のデータを持つが、他のブリッジキャッシュも当
該データを持っている可能性がある。
【0060】I:そのブロックは無効である。
【0061】なお、ここで、「ブリッジキャッシュの上
位のCPUキャッシュ」とは、あるブリッジキャッシュ
に対し、バスブリッジ及び上位バス経由で接続されたC
PUのキャッシュのことを示すものとする。逆に「CP
Uキャッシュの下位のブリッジキャッシュ」とは、ある
CPUキャッシュに対し、上位バス及びバスブリッジを
経由して接続されたブリッジキャッシュのことを示すも
のとする。また、「キャッシュのステート」と言った場
合、そのキャッシュにおける、現在注目しているキャッ
シュブロック(すなわち、現在のトランザクションの要
求アドレスに対応するキャッシュブロック)のステート
のことを示すものとする。
位のCPUキャッシュ」とは、あるブリッジキャッシュ
に対し、バスブリッジ及び上位バス経由で接続されたC
PUのキャッシュのことを示すものとする。逆に「CP
Uキャッシュの下位のブリッジキャッシュ」とは、ある
CPUキャッシュに対し、上位バス及びバスブリッジを
経由して接続されたブリッジキャッシュのことを示すも
のとする。また、「キャッシュのステート」と言った場
合、そのキャッシュにおける、現在注目しているキャッ
シュブロック(すなわち、現在のトランザクションの要
求アドレスに対応するキャッシュブロック)のステート
のことを示すものとする。
【0062】そして、本実施形態では、ブリッジキャッ
シュのステートとCPUキャッシュのステートとの関係
に一定の制約を与えることにより、ブリッジキャッシュ
とCPUキャッシュとのマルチレベル包含性(MLI)
を保証し、多階層のキャッシュシステムにおけるキャッ
シュ・コンシステンシを維持する。ここで、MLIと
は、多階層のキャッシュシステムにおけるキャッシュ・
コンシステンシの制御を容易ならしめるために採用され
る制約の一種であり、CPUキャッシュに存在するデー
タは必ずその下位のブリッジキャッシュに存在するとい
う性質のことをいう。なお、本実施形態においては、M
LIを採用するため、ブリッジキャッシュの容量は、少
なくともその上位のCPUキャッシュの容量の総和以上
となっている。MLIを維持するようにキャッシュを制
御するようにすれば、システムを簡単な回路で構成する
ことができ、余計なバス・トランザクションの発生を抑
制することができる。
シュのステートとCPUキャッシュのステートとの関係
に一定の制約を与えることにより、ブリッジキャッシュ
とCPUキャッシュとのマルチレベル包含性(MLI)
を保証し、多階層のキャッシュシステムにおけるキャッ
シュ・コンシステンシを維持する。ここで、MLIと
は、多階層のキャッシュシステムにおけるキャッシュ・
コンシステンシの制御を容易ならしめるために採用され
る制約の一種であり、CPUキャッシュに存在するデー
タは必ずその下位のブリッジキャッシュに存在するとい
う性質のことをいう。なお、本実施形態においては、M
LIを採用するため、ブリッジキャッシュの容量は、少
なくともその上位のCPUキャッシュの容量の総和以上
となっている。MLIを維持するようにキャッシュを制
御するようにすれば、システムを簡単な回路で構成する
ことができ、余計なバス・トランザクションの発生を抑
制することができる。
【0063】本実施形態では、MLIを維持するため
に、ブリッジキャッシュのステートに基づきCPUキャ
ッシュの取り得るステートに制約を与える。本実施形態
では、この制約として、以下に示す2種類の制約のいず
れかを採用する。
に、ブリッジキャッシュのステートに基づきCPUキャ
ッシュの取り得るステートに制約を与える。本実施形態
では、この制約として、以下に示す2種類の制約のいず
れかを採用する。
【0064】まず、第1の制約(以下、「制約1」と呼
ぶ)を表1に示す。
ぶ)を表1に示す。
【0065】
【表1】 次に、第2の制約(以下、「制約2」と呼ぶ)を表2に
示す。
示す。
【0066】
【表2】 表1及び表2は、ブリッジキャッシュのステートがM,
E,S,Iのそれぞれの場合におけるそのブリッジキャ
ッシュの上位のCPUキャッシュが取り得るステートの
種類を示している。
E,S,Iのそれぞれの場合におけるそのブリッジキャ
ッシュの上位のCPUキャッシュが取り得るステートの
種類を示している。
【0067】制約1及び制約2は、ブリッジキャッシュ
のステートがM,S,Iの時については共通である。
のステートがM,S,Iの時については共通である。
【0068】制約1及び制約2では、ブリッジキャッシ
ュのステートがIである場合にCPUキャッシュのステ
ートはIしか認めないことにより、ブリッジキャッシュ
に無いデータ(キャッシュブロック)はその上位のリー
ダーCPUキャッシュにも無いということを保証する。
ュのステートがIである場合にCPUキャッシュのステ
ートはIしか認めないことにより、ブリッジキャッシュ
に無いデータ(キャッシュブロック)はその上位のリー
ダーCPUキャッシュにも無いということを保証する。
【0069】また、制約1及び制約2では、ブリッジキ
ャッシュのステートがSである場合には、CPUキャッ
シュのステートにS又はIを認める。前述したように、
ブリッジキャッシュのステートがSとなるのは、ブリッ
ジキャッシュが下位バスから新たなデータを読み込んだ
ときに他のブリッジキャッシュが同一データをもってい
る場合である。ここで、CPUキャッシュのステートを
制約1又は2のごとく制限しておけば、CPUキャッシ
ュがそのデータをブリッジキャッシュから読み込んだと
きにCPUキャッシュのステートがSとなる。これによ
り、次にそのCPUキャッシュにおいてそのデータの書
換え(ライト)が行われる場合には、必ず他のキャッシ
ュの無効化のためのトランザクション(インバリデー
ト:Invalidate)が発行される。そして、そのインバリ
デートをそのCPUの下位のバスブリッジが受け取って
そのバスブリッジから下位バスにもインバリデートを発
行することにより、他のブリッジキャッシュ(及びその
上位のCPUキャッシュ)にある当該データを無効化す
ることができる。
ャッシュのステートがSである場合には、CPUキャッ
シュのステートにS又はIを認める。前述したように、
ブリッジキャッシュのステートがSとなるのは、ブリッ
ジキャッシュが下位バスから新たなデータを読み込んだ
ときに他のブリッジキャッシュが同一データをもってい
る場合である。ここで、CPUキャッシュのステートを
制約1又は2のごとく制限しておけば、CPUキャッシ
ュがそのデータをブリッジキャッシュから読み込んだと
きにCPUキャッシュのステートがSとなる。これによ
り、次にそのCPUキャッシュにおいてそのデータの書
換え(ライト)が行われる場合には、必ず他のキャッシ
ュの無効化のためのトランザクション(インバリデー
ト:Invalidate)が発行される。そして、そのインバリ
デートをそのCPUの下位のバスブリッジが受け取って
そのバスブリッジから下位バスにもインバリデートを発
行することにより、他のブリッジキャッシュ(及びその
上位のCPUキャッシュ)にある当該データを無効化す
ることができる。
【0070】また、制約1及び制約2では、ブリッジキ
ャッシュのステートがMである場合にCPUキャッシュ
のステートとしてM,E,S,Iのすべてのステートを
認める。本実施形態において、ブリッジキャッシュのス
テートがMになるのは、上位のCPUにおいてライト動
作が行われた場合である。したがって、この場合は、C
PUキャッシュにはすべてのステートを認めておく必要
がある。
ャッシュのステートがMである場合にCPUキャッシュ
のステートとしてM,E,S,Iのすべてのステートを
認める。本実施形態において、ブリッジキャッシュのス
テートがMになるのは、上位のCPUにおいてライト動
作が行われた場合である。したがって、この場合は、C
PUキャッシュにはすべてのステートを認めておく必要
がある。
【0071】制約1と制約2の相違点は、ブリッジキャ
ッシュがEのときに制約2ではCPUキャッシュのステ
ートとしてM,Eを認めるが、制約1ではM,Eを認め
ないという点である。
ッシュがEのときに制約2ではCPUキャッシュのステ
ートとしてM,Eを認めるが、制約1ではM,Eを認め
ないという点である。
【0072】ブリッジキャッシュがEとなるのは、ブリ
ッジキャッシュが下位バスから新たなデータを読み込ん
だときに他のブリッジキャッシュが同一データをもって
いない場合である。この場合において、あるCPUキャ
ッシュがブリッジキャッシュからそのデータを読み込ん
だ場合、制約2では同一上位バス上の他のCPUキャッ
シュがそのデータを持っていない場合には、そのCPU
キャッシュのステートをEとすることを認める。これに
対して制約1では、同じ状況でそのCPUキャッシュの
ステートをSとする。
ッジキャッシュが下位バスから新たなデータを読み込ん
だときに他のブリッジキャッシュが同一データをもって
いない場合である。この場合において、あるCPUキャ
ッシュがブリッジキャッシュからそのデータを読み込ん
だ場合、制約2では同一上位バス上の他のCPUキャッ
シュがそのデータを持っていない場合には、そのCPU
キャッシュのステートをEとすることを認める。これに
対して制約1では、同じ状況でそのCPUキャッシュの
ステートをSとする。
【0073】制約2では、CPUキャッシュがあるデー
タをステートEで持っている場合においてそのデータを
書き替えるときには、そのCPUは外部に何ら信号を発
せずに書き替えを実行し、その結果CPUキャッシュの
ステートがMに変わる。この制約2では、ブリッジキャ
ッシュのステートがEである場合に、その上位のCPU
が最新のデータを持っているかどうかを知るには、上位
バスをスヌープするなどの処理が必要がある。
タをステートEで持っている場合においてそのデータを
書き替えるときには、そのCPUは外部に何ら信号を発
せずに書き替えを実行し、その結果CPUキャッシュの
ステートがMに変わる。この制約2では、ブリッジキャ
ッシュのステートがEである場合に、その上位のCPU
が最新のデータを持っているかどうかを知るには、上位
バスをスヌープするなどの処理が必要がある。
【0074】一方、制約1では、ブリッジキャッシュが
あるデータをステートEで持っている場合に、その上位
のCPUキャッシュが当該データを持っている場合には
そのステートはSになる。したがって、CPUキャッシ
ュが当該データを書き替える場合には上位バス上に必ず
インバリデートが発行されるため、ブリッジキャッシュ
はそのインバリデートを受け取ることにより、CPUキ
ャッシュのデータが書き替えられたことを知ることがで
きる。このときブリッジキャッシュのステートはMに変
わる。したがって、制約2によれば、ブリッジキャッシ
ュのステートがEのときには、その上位のCPUキャッ
シュには最新のデータが存在しないことが保証される。
あるデータをステートEで持っている場合に、その上位
のCPUキャッシュが当該データを持っている場合には
そのステートはSになる。したがって、CPUキャッシ
ュが当該データを書き替える場合には上位バス上に必ず
インバリデートが発行されるため、ブリッジキャッシュ
はそのインバリデートを受け取ることにより、CPUキ
ャッシュのデータが書き替えられたことを知ることがで
きる。このときブリッジキャッシュのステートはMに変
わる。したがって、制約2によれば、ブリッジキャッシ
ュのステートがEのときには、その上位のCPUキャッ
シュには最新のデータが存在しないことが保証される。
【0075】本実施形態では、このように、ブリッジキ
ャッシュとその上位のCPUキャッシュとのステートの
関係に制約を与えることにより、無用なバス・トランザ
クションを増やさずにキャッシュ・コンシステンシを維
持することができる。
ャッシュとその上位のCPUキャッシュとのステートの
関係に制約を与えることにより、無用なバス・トランザ
クションを増やさずにキャッシュ・コンシステンシを維
持することができる。
【0076】[バスブリッジの動作]本実施形態では、
バスブリッジの働きにより、以上説明した制約を満た
し、キャッシュ・コンシステンシを維持する。以下、本
実施形態のバスブリッジ及びブリッジキャッシュの動作
について説明する。
バスブリッジの働きにより、以上説明した制約を満た
し、キャッシュ・コンシステンシを維持する。以下、本
実施形態のバスブリッジ及びブリッジキャッシュの動作
について説明する。
【0077】[1]上位バスに発行されたトランザクシ
ョンに対する基本動作 まず、CPUから上位バスに発行されたトランザクショ
ンを受け取った場合のバスブリッジの一連の動作につい
て説明する。
ョンに対する基本動作 まず、CPUから上位バスに発行されたトランザクショ
ンを受け取った場合のバスブリッジの一連の動作につい
て説明する。
【0078】本実施形態においては、上位バスには以下
のトランザクションが定義されている。
のトランザクションが定義されている。
【0079】(1)Read(リード):アドレスで示
されたキャッシュブロックを読み込む。CPUからリー
ドのリクエストが出され、CPUキャッシュでミスした
場合(すなわち、リード・リクエストの要求データがC
PUキャッシュ内になかった場合)に発行される。
されたキャッシュブロックを読み込む。CPUからリー
ドのリクエストが出され、CPUキャッシュでミスした
場合(すなわち、リード・リクエストの要求データがC
PUキャッシュ内になかった場合)に発行される。
【0080】(2)Invalidate(インバリデ
ート):他のCPUキャッシュに存在するアドレスで示
されたキャッシュブロックを無効化する。CPUからラ
イトのリクエストが出され、CPUキャッシュでヒット
したもののそのCPUキャッシュのステートがSであっ
た場合(ライト・リクエストの要求データがCPUキャ
ッシュ内にステートSで存在した場合)に発行される。
ート):他のCPUキャッシュに存在するアドレスで示
されたキャッシュブロックを無効化する。CPUからラ
イトのリクエストが出され、CPUキャッシュでヒット
したもののそのCPUキャッシュのステートがSであっ
た場合(ライト・リクエストの要求データがCPUキャ
ッシュ内にステートSで存在した場合)に発行される。
【0081】(3)Read&Invalidate
(リード・アンド・インバリデート):他のCPUキャ
ッシュに存在するアドレスで示されたキャッシュブロッ
クを無効化し、当該アドレスで示されたキャッシュブロ
ックを読み込む。CPUからライト・リクエストが出さ
れ、CPUキャッシュでミスした場合に発行される。
(リード・アンド・インバリデート):他のCPUキャ
ッシュに存在するアドレスで示されたキャッシュブロッ
クを無効化し、当該アドレスで示されたキャッシュブロ
ックを読み込む。CPUからライト・リクエストが出さ
れ、CPUキャッシュでミスした場合に発行される。
【0082】(4)WriteBack(ライトバッ
ク):アドレスで示されたキャッシュブロックを下位の
ブリッジキャッシュに書き戻す。CPUのリクエストに
よりCPUキャッシュに空きブロックを作る必要がある
ときに発行される。
ク):アドレスで示されたキャッシュブロックを下位の
ブリッジキャッシュに書き戻す。CPUのリクエストに
よりCPUキャッシュに空きブロックを作る必要がある
ときに発行される。
【0083】なお、以上は、メインメモリのデータに対
するトランザクション(メモリ・トランザクション)の
みである。このほかにもI/O装置に対するトランザク
ション(I/Oトランザクション)があるが、これにつ
いての説明は省略する。
するトランザクション(メモリ・トランザクション)の
みである。このほかにもI/O装置に対するトランザク
ション(I/Oトランザクション)があるが、これにつ
いての説明は省略する。
【0084】[1.1]下位バス出力判定 上位バスにトランザクションが発行された場合、バスブ
リッジはまずそのトランザクションをスプリットする必
要がないか判定し、スプリットする場合には下位バスに
発行するトランザクションの種類を決定する。
リッジはまずそのトランザクションをスプリットする必
要がないか判定し、スプリットする場合には下位バスに
発行するトランザクションの種類を決定する。
【0085】ここで、下位バスには、次に示すトランザ
クションが定義されている。
クションが定義されている。
【0086】(1)Read(リード):指定されたア
ドレスのキャッシュブロックを読み込む。
ドレスのキャッシュブロックを読み込む。
【0087】(2)Invalidate(インバリデ
ート):他のブリッジキャッシュに存在する指定された
アドレスのキャッシュブロックを無効化する。
ート):他のブリッジキャッシュに存在する指定された
アドレスのキャッシュブロックを無効化する。
【0088】(3)Read&Invalidate
(リード・アンド・インバリデート):他のブリッジキ
ャッシュに存在する指定されたアドレスのキャッシュブ
ロックを無効化し、当該アドレスで示されたキャッシュ
ブロックを読み込む。
(リード・アンド・インバリデート):他のブリッジキ
ャッシュに存在する指定されたアドレスのキャッシュブ
ロックを無効化し、当該アドレスで示されたキャッシュ
ブロックを読み込む。
【0089】(4)WriteBack(ライトバッ
ク):指定されたアドレスのキャッシュブロックを下位
のメインメモリに書き戻す。
ク):指定されたアドレスのキャッシュブロックを下位
のメインメモリに書き戻す。
【0090】なお、下位バスにも上位バス同様I/Oト
ランザクションが定義されているが、ここでは省略す
る。
ランザクションが定義されているが、ここでは省略す
る。
【0091】[1.1.1]制約1を採用する場合 制約1を採用する場合には、バスブリッジは表3に示す
規則にしたがってスプリットの要否の判定及び下位バス
に発行するトランザクションを決定する。
規則にしたがってスプリットの要否の判定及び下位バス
に発行するトランザクションを決定する。
【0092】
【表3】 表3に示すように、バスブリッジは、自らの上位バスに
発行されたトランザクションの種類とそのトランザクシ
ョンを受け取ったときのブリッジキャッシュのステート
とに基づき、スプリットするか否か及びスプリットする
場合における下位バスに発行するトランザクションの種
類を決定する。なお、以下においては、「ブリッジキャ
ッシュがX(XはM、E、S、Iのうちのどれかのステ
ート)である」とは、バスブリッジがトランザクション
を受け取った場合において、そのトランザクションのア
ドレスに対応する当該ブリッジキャッシュのブロックの
ステートがXであることを意味する。
発行されたトランザクションの種類とそのトランザクシ
ョンを受け取ったときのブリッジキャッシュのステート
とに基づき、スプリットするか否か及びスプリットする
場合における下位バスに発行するトランザクションの種
類を決定する。なお、以下においては、「ブリッジキャ
ッシュがX(XはM、E、S、Iのうちのどれかのステ
ート)である」とは、バスブリッジがトランザクション
を受け取った場合において、そのトランザクションのア
ドレスに対応する当該ブリッジキャッシュのブロックの
ステートがXであることを意味する。
【0093】表3に示すように、上位バスにReadが
発行された場合、バスブリッジは、ブリッジキャッシュ
がIの場合にのみ、上位バスのReadをスプリットし
て下位バスにReadを発行する。なお、ブリッジキャ
ッシュがM,E,Sのいずれかである場合は、Read
トランザクションの要求アドレスはブリッジキャッシュ
又は同一上位バス上のCPUキャッシュに存在するの
で、要求元CPUはそれらから要求データを得ることが
できる。したがって、この場合は下位バスにはトランザ
クションが発行されない。なお、バスブリッジが上位バ
スのReadをスプリットしなかった場合には、上位バ
スだけでトランザクションが完了し、ブリッジキャッシ
ュのステートはトランザクションの前と変化しない。
発行された場合、バスブリッジは、ブリッジキャッシュ
がIの場合にのみ、上位バスのReadをスプリットし
て下位バスにReadを発行する。なお、ブリッジキャ
ッシュがM,E,Sのいずれかである場合は、Read
トランザクションの要求アドレスはブリッジキャッシュ
又は同一上位バス上のCPUキャッシュに存在するの
で、要求元CPUはそれらから要求データを得ることが
できる。したがって、この場合は下位バスにはトランザ
クションが発行されない。なお、バスブリッジが上位バ
スのReadをスプリットしなかった場合には、上位バ
スだけでトランザクションが完了し、ブリッジキャッシ
ュのステートはトランザクションの前と変化しない。
【0094】上位バスにRead&Invalidat
eが発行された場合は、バスブリッジは、ブリッジキャ
ッシュがS又はIのときにトランザクションをスプリッ
トする。まず、ブリッジキャッシュがSの場合には、バ
スブリッジは上位バスのRead&Invalidat
eをスプリットし、下位バスに対してInvalida
teを発行する。この場合は、Read&Invali
dateで要求されるデータはブリッジキャッシュに存
在するので、バスブリッジは、当該データをスプリット
終了信号と共に要求元CPUに返し、他のバスブリッジ
のブリッジキャッシュを無効化するために下位バスにI
nvalidateを発行する。一方、ブリッジキャッ
シュのがIの場合には、バスブリッジはトランザクショ
ンをスプリットし、下位バスに対してRead&Inv
alidateを発行する。この場合は、Read&I
nvalidateで要求されるデータはブリッジキャ
ッシュに存在しないので、バスブリッジは、当該データ
を入手しかつ他のバスブリッジのブリッジキャッシュを
無効化するため、下位バスにRead&Invalid
ateを発行する。なお、ブリッジキャッシュがM又は
Eの場合は、バスブリッジはトランザクションをスプリ
ットしない。ステートがM又はEということは、当該ブ
リッジキャッシュ又はその上位のCPUキャッシュに要
求データが存在し、他のブリッジキャッシュ及びその上
位のCPUキャッシュにはその要求データが存在しない
からである。なお、ブリッジキャッシュがM又はEの場
合は、トランザクション終了後のブリッジキャッシュの
ステートは共にMとなる。
eが発行された場合は、バスブリッジは、ブリッジキャ
ッシュがS又はIのときにトランザクションをスプリッ
トする。まず、ブリッジキャッシュがSの場合には、バ
スブリッジは上位バスのRead&Invalidat
eをスプリットし、下位バスに対してInvalida
teを発行する。この場合は、Read&Invali
dateで要求されるデータはブリッジキャッシュに存
在するので、バスブリッジは、当該データをスプリット
終了信号と共に要求元CPUに返し、他のバスブリッジ
のブリッジキャッシュを無効化するために下位バスにI
nvalidateを発行する。一方、ブリッジキャッ
シュのがIの場合には、バスブリッジはトランザクショ
ンをスプリットし、下位バスに対してRead&Inv
alidateを発行する。この場合は、Read&I
nvalidateで要求されるデータはブリッジキャ
ッシュに存在しないので、バスブリッジは、当該データ
を入手しかつ他のバスブリッジのブリッジキャッシュを
無効化するため、下位バスにRead&Invalid
ateを発行する。なお、ブリッジキャッシュがM又は
Eの場合は、バスブリッジはトランザクションをスプリ
ットしない。ステートがM又はEということは、当該ブ
リッジキャッシュ又はその上位のCPUキャッシュに要
求データが存在し、他のブリッジキャッシュ及びその上
位のCPUキャッシュにはその要求データが存在しない
からである。なお、ブリッジキャッシュがM又はEの場
合は、トランザクション終了後のブリッジキャッシュの
ステートは共にMとなる。
【0095】上位バスにInvalidateが発行さ
れた場合は、バスブリッジは、ブリッジキャッシュがS
の場合に、上位バスのInvalidateをスプリッ
トし、下位バスに対してInvalidateを発行す
る。ブリッジキャッシュがSであるため、他のブリッジ
キャッシュが同じデータを持っている可能性があるから
である。そして、ブリッジキャッシュのステートがM又
はEの場合は、バスブリッジはトランザクションをスプ
リットしない。この場合、他のブリッジキャッシュは無
効化対象のデータ(ブロック)を有していないからであ
る。なお、ブリッジキャッシュがIである場合は、CP
Uから上位バス上にInvalidateが発行される
ことはない。ブリッジキャッシュがIの場合その上位の
CPUキャッシュのステートは必ずIであるが、Inv
alidateはCPUキャッシュがステートSのとき
にライト動作を行う場合にしか発行されないからであ
る。なお、上位バスに発行されたInvalidate
が終了した後は、ブリッジキャッシュのステートはMと
なる。
れた場合は、バスブリッジは、ブリッジキャッシュがS
の場合に、上位バスのInvalidateをスプリッ
トし、下位バスに対してInvalidateを発行す
る。ブリッジキャッシュがSであるため、他のブリッジ
キャッシュが同じデータを持っている可能性があるから
である。そして、ブリッジキャッシュのステートがM又
はEの場合は、バスブリッジはトランザクションをスプ
リットしない。この場合、他のブリッジキャッシュは無
効化対象のデータ(ブロック)を有していないからであ
る。なお、ブリッジキャッシュがIである場合は、CP
Uから上位バス上にInvalidateが発行される
ことはない。ブリッジキャッシュがIの場合その上位の
CPUキャッシュのステートは必ずIであるが、Inv
alidateはCPUキャッシュがステートSのとき
にライト動作を行う場合にしか発行されないからであ
る。なお、上位バスに発行されたInvalidate
が終了した後は、ブリッジキャッシュのステートはMと
なる。
【0096】また、上位バスに発行されたトランザクシ
ョンがWriteBackであった場合は、トランザク
ションのスプリットは行われない。WriteBack
トランザクションでは、CPUキャッシュにある最新デ
ータをブリッジキャッシュに書き戻すだけなので、他の
バスブリッジには何ら影響がないからである。なお、W
riteBackが発行されるのはCPUキャッシュが
Mのブロックを持っている場合だけであり、制約1では
CPUキャッシュがMとなり得るのは下位のブリッジキ
ャッシュがMの場合だけである。したがって、ブリッジ
キャッシュがE,S,Iのときは上位バス上にWrit
eBackが発行されることはない。
ョンがWriteBackであった場合は、トランザク
ションのスプリットは行われない。WriteBack
トランザクションでは、CPUキャッシュにある最新デ
ータをブリッジキャッシュに書き戻すだけなので、他の
バスブリッジには何ら影響がないからである。なお、W
riteBackが発行されるのはCPUキャッシュが
Mのブロックを持っている場合だけであり、制約1では
CPUキャッシュがMとなり得るのは下位のブリッジキ
ャッシュがMの場合だけである。したがって、ブリッジ
キャッシュがE,S,Iのときは上位バス上にWrit
eBackが発行されることはない。
【0097】以上説明した規則にしたがってバスブリッ
ジが下位バスに発行するトランザクションを決定するこ
とにより、表1に示したブリッジキャッシュとCPUキ
ャッシュとの制約1を満足させ、キャッシュ・コンシス
テンシを維持することができる。
ジが下位バスに発行するトランザクションを決定するこ
とにより、表1に示したブリッジキャッシュとCPUキ
ャッシュとの制約1を満足させ、キャッシュ・コンシス
テンシを維持することができる。
【0098】そして、バスブリッジは、このようにして
決定されたトランザクションを下位バスに発行する。こ
の下位バスに発行されたトランザクションを受け取った
他のバスブリッジの動作については後の[2]節におい
て説明する。
決定されたトランザクションを下位バスに発行する。こ
の下位バスに発行されたトランザクションを受け取った
他のバスブリッジの動作については後の[2]節におい
て説明する。
【0099】次に、以上説明した規則の変形例について
説明する。変形例では、上位バスのトランザクションの
要求アドレスが、命令コードを指すものか、それともい
わゆる「データ」(非命令コード)を指すものかを判定
し、この判定を下位バスに発行するトランザクションの
種類の決定に反映させる。ここで、Invalidat
e及びRead&Invalidate(以下、Inv
alidate系と呼ぶ)は、CPUがライトを行う場
合に発行されるものなので、命令コードを要求すること
はほとんどない。したがって、この変形例では、Rea
dについてのみ、命令コードを要求する場合とデータを
要求する場合とでスプリット時に下位バスに発行するト
ランザクションの種類を変える。この変形例における規
則を表4に示す。
説明する。変形例では、上位バスのトランザクションの
要求アドレスが、命令コードを指すものか、それともい
わゆる「データ」(非命令コード)を指すものかを判定
し、この判定を下位バスに発行するトランザクションの
種類の決定に反映させる。ここで、Invalidat
e及びRead&Invalidate(以下、Inv
alidate系と呼ぶ)は、CPUがライトを行う場
合に発行されるものなので、命令コードを要求すること
はほとんどない。したがって、この変形例では、Rea
dについてのみ、命令コードを要求する場合とデータを
要求する場合とでスプリット時に下位バスに発行するト
ランザクションの種類を変える。この変形例における規
則を表4に示す。
【0100】
【表4】 表4は、Readの欄以外は表3と全く同じである。表
4から分かるように、この変形例では、上位バスに発行
されたReadをスプリットするときに、そのRead
トランザクションが命令コードを要求するものである場
合には下位バスにReadを発行し、データを要求する
ものである場合には下位バスにRead&Invali
dateを発行する。
4から分かるように、この変形例では、上位バスに発行
されたReadをスプリットするときに、そのRead
トランザクションが命令コードを要求するものである場
合には下位バスにReadを発行し、データを要求する
ものである場合には下位バスにRead&Invali
dateを発行する。
【0101】すなわち、この変形例では、上位バスのR
eadがデータ(非命令コード)を要求する場合は、ス
プリットの際にバスブリッジは、下位バスにRead&
Invalidateを発行することにより、当該デー
タを得ると共に他のブリッジキャッシュの当該データの
ブロックを無効化する。これにより、バスブリッジは、
下位バスから得られた当該データをブリッジキャッシュ
にステートMで登録することが可能となる。なお、当該
データを読み込んだときにブリッジキャッシュのステー
トをMにするための機構については後のブリッジキャッ
シュの次ステートの決定方法の説明において説明する。
eadがデータ(非命令コード)を要求する場合は、ス
プリットの際にバスブリッジは、下位バスにRead&
Invalidateを発行することにより、当該デー
タを得ると共に他のブリッジキャッシュの当該データの
ブロックを無効化する。これにより、バスブリッジは、
下位バスから得られた当該データをブリッジキャッシュ
にステートMで登録することが可能となる。なお、当該
データを読み込んだときにブリッジキャッシュのステー
トをMにするための機構については後のブリッジキャッ
シュの次ステートの決定方法の説明において説明する。
【0102】命令コードは、読み込まれた後に書き替え
られることはないが、データ(非命令コード)は、読み
込まれた後に書き替えられる可能性が高い。キャッシュ
内のデータを書き替える場合、そのデータが含まれるキ
ャッシュブロックのステートがSであれば、Inval
idateを発行して他のキャッシュの当該ブロックを
無効化する必要がある。したがって、データをブリッジ
キャッシュに読み込んだときにステートSで登録したと
すると、そのデータが書き替えられるときにバスブリッ
ジから下位バスにInvalidateを発行する必要
が出てくる。この場合、データの読み込みのときに1回
(Read)、データの書き替えのときに1回(Inv
alidate)の合計2回、下位バスにトランザクシ
ョンが発行されることになる。これに対して、本変形例
では、書き替えられる可能性が高いデータをブリッジキ
ャッシュに読み込む必要があるときには、下位バスにR
eadではなくRead&Invalidateを発行
することにより予め他のブリッジキャッシュを無効化
し、そのデータをステートMでブリッジキャッシュに登
録することにより、データの書き替えのときには下位バ
スにトランザクションを発行する必要がなくなる。した
がって、本変形例では、データを読み込んだあとそのデ
ータに書き替えを行う場合、読み込みの時点で下位バス
にRead&Invalidateを1回発行するのみ
でよく、上記表3の場合に比べて下位バスに発行するト
ランザクションの回数を減らすことができる。データ
(非命令コード)は書き替えられる可能性は高いので、
本変形例の手法による下位バス負荷低減の効果は高い。
られることはないが、データ(非命令コード)は、読み
込まれた後に書き替えられる可能性が高い。キャッシュ
内のデータを書き替える場合、そのデータが含まれるキ
ャッシュブロックのステートがSであれば、Inval
idateを発行して他のキャッシュの当該ブロックを
無効化する必要がある。したがって、データをブリッジ
キャッシュに読み込んだときにステートSで登録したと
すると、そのデータが書き替えられるときにバスブリッ
ジから下位バスにInvalidateを発行する必要
が出てくる。この場合、データの読み込みのときに1回
(Read)、データの書き替えのときに1回(Inv
alidate)の合計2回、下位バスにトランザクシ
ョンが発行されることになる。これに対して、本変形例
では、書き替えられる可能性が高いデータをブリッジキ
ャッシュに読み込む必要があるときには、下位バスにR
eadではなくRead&Invalidateを発行
することにより予め他のブリッジキャッシュを無効化
し、そのデータをステートMでブリッジキャッシュに登
録することにより、データの書き替えのときには下位バ
スにトランザクションを発行する必要がなくなる。した
がって、本変形例では、データを読み込んだあとそのデ
ータに書き替えを行う場合、読み込みの時点で下位バス
にRead&Invalidateを1回発行するのみ
でよく、上記表3の場合に比べて下位バスに発行するト
ランザクションの回数を減らすことができる。データ
(非命令コード)は書き替えられる可能性は高いので、
本変形例の手法による下位バス負荷低減の効果は高い。
【0103】なお、本変形例では、上位バスのRead
が命令コードを要求するものであった場合は、表3の場
合と同様、スプリット時には下位バスにReadを発行
する。これにより、下位バスから得られた命令コードは
バスブリッジにステートE又はSで登録される。
が命令コードを要求するものであった場合は、表3の場
合と同様、スプリット時には下位バスにReadを発行
する。これにより、下位バスから得られた命令コードは
バスブリッジにステートE又はSで登録される。
【0104】[1.1.2]制約2を採用する場合 制約2を採用する場合、バスブリッジは、上位バスに発
行されたトランザクションを受け取ると、そのトランザ
クションの種類とそのトランザクションを受け取ったと
きのブリッジキャッシュのステートとに基づき、表5に
示す規則にしたがってスプリットの要否の判定及び下位
バスに発行するトランザクションを決定する。
行されたトランザクションを受け取ると、そのトランザ
クションの種類とそのトランザクションを受け取ったと
きのブリッジキャッシュのステートとに基づき、表5に
示す規則にしたがってスプリットの要否の判定及び下位
バスに発行するトランザクションを決定する。
【0105】
【表5】 表5の規則と前記制約1に対する表3の規則との違い
は、ブリッジキャッシュのステートがEのときに上位バ
スにWriteBackが発行される可能性があるか否
かの違いである。制約1では、ブリッジキャッシュのス
テートがEの場合、CPUキャッシュにステートEを認
めず、したがってCPUキャッシュがステートMとなる
ことはない(表1参照)ので、CPUからWriteB
ackが行われることはない。これに対して、制約2で
は、CPUキャッシュにステートEを認めており(表2
参照)、CPUキャッシュのステートEのブロックがC
PUからの書き換えにより、バスブリッジが関知しない
ままステートMとなっている可能性がある。したがっ
て、制約2では、ブリッジキャッシュがステートEのと
きに、上位のCPUキャッシュからWriteBack
が行われる可能性がある。
は、ブリッジキャッシュのステートがEのときに上位バ
スにWriteBackが発行される可能性があるか否
かの違いである。制約1では、ブリッジキャッシュのス
テートがEの場合、CPUキャッシュにステートEを認
めず、したがってCPUキャッシュがステートMとなる
ことはない(表1参照)ので、CPUからWriteB
ackが行われることはない。これに対して、制約2で
は、CPUキャッシュにステートEを認めており(表2
参照)、CPUキャッシュのステートEのブロックがC
PUからの書き換えにより、バスブリッジが関知しない
ままステートMとなっている可能性がある。したがっ
て、制約2では、ブリッジキャッシュがステートEのと
きに、上位のCPUキャッシュからWriteBack
が行われる可能性がある。
【0106】表5の規則と前記表3の規則との相違はこ
の点のみであり、上位バス・トランザクションのスプリ
ットの決定及び下位バスに発行するトランザクションの
決め方については、表5の規則は表3の規則と同一であ
る。
の点のみであり、上位バス・トランザクションのスプリ
ットの決定及び下位バスに発行するトランザクションの
決め方については、表5の規則は表3の規則と同一であ
る。
【0107】以上説明した規則にしたがってバスブリッ
ジが下位バスに発行するトランザクションを決定するこ
とにより、表2に示したブリッジキャッシュとCPUキ
ャッシュとの制約2を満足させ、キャッシュ・コンシス
テンシを維持することができる。
ジが下位バスに発行するトランザクションを決定するこ
とにより、表2に示したブリッジキャッシュとCPUキ
ャッシュとの制約2を満足させ、キャッシュ・コンシス
テンシを維持することができる。
【0108】[1.2]ブリッジキャッシュの次ステー
ト 次に、上位バスからのトランザクションによるブリッジ
キャッシュのステート遷移について、その上位バス・ト
ランザクションをスプリットしない場合とスプリットす
る場合に分けて説明する。なお、ブリッジキャッシュの
次ステートの決定の仕方は、制約1及び制約2のいずれ
を採用した場合も同じである。
ト 次に、上位バスからのトランザクションによるブリッジ
キャッシュのステート遷移について、その上位バス・ト
ランザクションをスプリットしない場合とスプリットす
る場合に分けて説明する。なお、ブリッジキャッシュの
次ステートの決定の仕方は、制約1及び制約2のいずれ
を採用した場合も同じである。
【0109】まず、スプリットしない場合について説明
する。ここで、上位バス・トランザクションがRead
又はWriteBackであった場合には、ブリッジキ
ャッシュのステートは当該トランザクションの前後で変
化しない。一方、上位バス・トランザクションがInv
alidate系であった場合には、当該トランザクシ
ョン終了後のブリッジキャッシュのステートはMとす
る。Invalidate系トランザクションはデータ
の書き替えのために発行されるからである。
する。ここで、上位バス・トランザクションがRead
又はWriteBackであった場合には、ブリッジキ
ャッシュのステートは当該トランザクションの前後で変
化しない。一方、上位バス・トランザクションがInv
alidate系であった場合には、当該トランザクシ
ョン終了後のブリッジキャッシュのステートはMとす
る。Invalidate系トランザクションはデータ
の書き替えのために発行されるからである。
【0110】次に、スプリットする場合について説明す
る。この場合、トランザクション終了後のブリッジキャ
ッシュのステート(以下、次ステートと呼ぶ)は、バス
ブリッジから下位バスに発行したトランザクションとこ
のトランザクションに対する下位バスのスヌープ結果に
基づいて決定する。
る。この場合、トランザクション終了後のブリッジキャ
ッシュのステート(以下、次ステートと呼ぶ)は、バス
ブリッジから下位バスに発行したトランザクションとこ
のトランザクションに対する下位バスのスヌープ結果に
基づいて決定する。
【0111】表6は、ブリッジキャッシュの次ステート
の決定規則を示す表である。
の決定規則を示す表である。
【0112】
【表6】 ここで、スヌープ結果について説明する。バス上にトラ
ンザクションが発行された場合、そのバスに接続された
エージェント(CPUやバスブリッジ等)は、そのトラ
ンザクションの要求アドレスについて、最新データ(す
なわち、ステートM)を持っているか、メモリと同内容
のデータ(ステートE又はS)を持っているか、を示す
信号をバス上に出力する。この信号をスヌープ出力とい
う。以下、簡単のため、最新データを持っていることを
示す信号をHITM、メモリと同内容のデータを持って
いることを示す信号をHITという。より詳しく説明す
れば、本実施形態では、バスにはHITM用の信号線と
HIT用の信号線が設けられており、トランザクション
を受け取ったエージェントは、要求されたブロックをス
テートMで持っている場合にはHITMをアサートし、
要求されたブロックをステートE又はSで持っている場
合にはHITをアサートする。そして、エージェントが
トランザクションの要求アドレスに対応するブロックを
持っていない場合(ステートIのとき)には、HITM
もHITもアサートされず、この状態を「ミス」と呼
ぶ。
ンザクションが発行された場合、そのバスに接続された
エージェント(CPUやバスブリッジ等)は、そのトラ
ンザクションの要求アドレスについて、最新データ(す
なわち、ステートM)を持っているか、メモリと同内容
のデータ(ステートE又はS)を持っているか、を示す
信号をバス上に出力する。この信号をスヌープ出力とい
う。以下、簡単のため、最新データを持っていることを
示す信号をHITM、メモリと同内容のデータを持って
いることを示す信号をHITという。より詳しく説明す
れば、本実施形態では、バスにはHITM用の信号線と
HIT用の信号線が設けられており、トランザクション
を受け取ったエージェントは、要求されたブロックをス
テートMで持っている場合にはHITMをアサートし、
要求されたブロックをステートE又はSで持っている場
合にはHITをアサートする。そして、エージェントが
トランザクションの要求アドレスに対応するブロックを
持っていない場合(ステートIのとき)には、HITM
もHITもアサートされず、この状態を「ミス」と呼
ぶ。
【0113】トランザクション発行元のエージェント
は、他のエージェントからのスヌープ出力のワイヤード
ORをスヌープ結果として受け取る。したがって、スヌ
ープ結果がHITMの場合は、バス上に当該トランザク
ションの要求アドレスに対応するブロックをステートM
で持っているエージェントが存在することを意味し、ス
ヌープ結果がHITの場合は、バス上に当該トランザク
ションの要求アドレスに対応するブロックをステートE
又はSで持っているエージェントが存在することを意味
する。そして、スヌープ結果がミスの場合、すなわちH
ITMでもHITでもない場合は、バス上に当該トラン
ザクションの要求アドレスに対応するブロックを持って
いるエージェントがないこと意味する。
は、他のエージェントからのスヌープ出力のワイヤード
ORをスヌープ結果として受け取る。したがって、スヌ
ープ結果がHITMの場合は、バス上に当該トランザク
ションの要求アドレスに対応するブロックをステートM
で持っているエージェントが存在することを意味し、ス
ヌープ結果がHITの場合は、バス上に当該トランザク
ションの要求アドレスに対応するブロックをステートE
又はSで持っているエージェントが存在することを意味
する。そして、スヌープ結果がミスの場合、すなわちH
ITMでもHITでもない場合は、バス上に当該トラン
ザクションの要求アドレスに対応するブロックを持って
いるエージェントがないこと意味する。
【0114】表6に示すように、バスブリッジが下位バ
スにReadを発行した場合には、下位バスのスヌープ
結果によってブリッジキャッシュの次ステートを変え
る。すなわち、下位バススヌープ結果がHIT又はHI
TMであったときは次ステートをSとし、下位バススヌ
ープ結果がミスであったときは次ステートをEとする。
一方、バスブリッジが下位バスにInvalidate
系トランザクションを発行した場合には、下位バスのス
ヌープ結果によらず次ステートをMとする。
スにReadを発行した場合には、下位バスのスヌープ
結果によってブリッジキャッシュの次ステートを変え
る。すなわち、下位バススヌープ結果がHIT又はHI
TMであったときは次ステートをSとし、下位バススヌ
ープ結果がミスであったときは次ステートをEとする。
一方、バスブリッジが下位バスにInvalidate
系トランザクションを発行した場合には、下位バスのス
ヌープ結果によらず次ステートをMとする。
【0115】以上説明したようにブリッジキャッシュの
次ステートを決めることにより、ブリッジキャッシュ同
士の間のキャッシュ・コンシステンシを維持することが
できる。
次ステートを決めることにより、ブリッジキャッシュ同
士の間のキャッシュ・コンシステンシを維持することが
できる。
【0116】[1.3]スプリット応答時における上位
バスへのスヌープ出力 バスブリッジが上位バスに発行されたトランザクション
をスプリットした場合、そのバスブリッジは、スプリッ
ト時に下位バスに発行したトランザクションに対する他
の下位バスエージェントからの応答を受け取り、その結
果に基づきトランザクション発行元のCPUに対して応
答を行う必要がある。バスブリッジからトランザクショ
ン発行元CPUへのこのような応答のことをスプリット
応答トランザクションという。バスブリッジは、下位バ
スエージェントからの応答が揃ったところで上位バスに
アービトレーションを行って上位バスの使用権を獲得
し、上位バスに対し必要な情報を含んだスプリット応答
トランザクションを発行する。本実施形態では、このス
プリット応答トランザクションのときにバスブリッジか
ら上位バスに対して所定の規則にしたがったスヌープ出
力を発し、このスヌープ出力により発行元CPUのキャ
ッシュのステートを制御する。
バスへのスヌープ出力 バスブリッジが上位バスに発行されたトランザクション
をスプリットした場合、そのバスブリッジは、スプリッ
ト時に下位バスに発行したトランザクションに対する他
の下位バスエージェントからの応答を受け取り、その結
果に基づきトランザクション発行元のCPUに対して応
答を行う必要がある。バスブリッジからトランザクショ
ン発行元CPUへのこのような応答のことをスプリット
応答トランザクションという。バスブリッジは、下位バ
スエージェントからの応答が揃ったところで上位バスに
アービトレーションを行って上位バスの使用権を獲得
し、上位バスに対し必要な情報を含んだスプリット応答
トランザクションを発行する。本実施形態では、このス
プリット応答トランザクションのときにバスブリッジか
ら上位バスに対して所定の規則にしたがったスヌープ出
力を発し、このスヌープ出力により発行元CPUのキャ
ッシュのステートを制御する。
【0117】従来の一階層のキャッシュシステムについ
てのMESIプロトコルでは、CPUからバス上にトラ
ンザクションが発行されたときに、そのバスのスヌープ
結果から当該CPUのキャッシュの次ステートを決定す
る規則が定められている。その規則によれば、CPUか
らバスにReadが発行された場合、スヌープ結果がミ
スの場合は当該CPUキャッシュのステートをEに変
え、スヌープ結果がHIT又はHITMの場合は当該C
PUキャッシュのステートをSに変える。また、その規
則では、CPUからバスにInvalidate系トラ
ンザクションが発行された場合は、スヌープ結果にかか
わらず当該CPUキャッシュのステートをMに変える。
てのMESIプロトコルでは、CPUからバス上にトラ
ンザクションが発行されたときに、そのバスのスヌープ
結果から当該CPUのキャッシュの次ステートを決定す
る規則が定められている。その規則によれば、CPUか
らバスにReadが発行された場合、スヌープ結果がミ
スの場合は当該CPUキャッシュのステートをEに変
え、スヌープ結果がHIT又はHITMの場合は当該C
PUキャッシュのステートをSに変える。また、その規
則では、CPUからバスにInvalidate系トラ
ンザクションが発行された場合は、スヌープ結果にかか
わらず当該CPUキャッシュのステートをMに変える。
【0118】本実施形態では、CPUキャッシュは従来
の一階層キャッシュ用のMESIプロトコルにしたがっ
ており、したがってCPUキャッシュのステートはその
規則にしたがって遷移する。そして、本実施形態では、
その規則を利用してバスブリッジからのスヌープ出力に
よりその上位のCPUキャッシュのステートを制御する
ことにより、制約1又は制約2の関係を維持する。
の一階層キャッシュ用のMESIプロトコルにしたがっ
ており、したがってCPUキャッシュのステートはその
規則にしたがって遷移する。そして、本実施形態では、
その規則を利用してバスブリッジからのスヌープ出力に
よりその上位のCPUキャッシュのステートを制御する
ことにより、制約1又は制約2の関係を維持する。
【0119】[1.3.1]制約1を採用した場合 本実施形態において制約1を採用した場合には、バスブ
リッジは、スプリットを行った場合に、下位バスに発行
したトランザクションの種類に基づき、表7の規則に従
って上位バスに発行するスヌープ出力を決定する。
リッジは、スプリットを行った場合に、下位バスに発行
したトランザクションの種類に基づき、表7の規則に従
って上位バスに発行するスヌープ出力を決定する。
【0120】
【表7】 表7において、下位バスに発行したトランザクションが
Readの場合、バスブリッジは下位バスのスヌープ結
果にかかわらず上位バスにスヌープ出力としてHITを
アサートする。下位バス・スヌープ結果がHIT又はH
ITMの場合は、他のブリッジキャッシュに当該ブロッ
クがあると言うことなので、トランザクション発行元の
CPUの次ステートをSにする必要がある。ここでCP
Uキャッシュは前述した1階層キャッシュに対するME
SIプロトコルにしたがってステート遷移するので、次
ステートをSにするにはスヌープ結果としてHITを受
け取る必要がある。そこで、バスブリッジはスプリット
応答トランザクション時に上位バスに対してHITをア
サートし、上位バス上のトランザクション発行元CPU
は、そのHITを受けてCPUキャッシュの対応キャッ
シュブロックのステートをSとする。また、表7の規則
では、下位バス・スヌープ結果がミスのときにも上位バ
スにHITをアサートすることにより、表1に示した制
約1を満足するようにしている。すなわち、下位バス・
スヌープ結果がミスのときには、他のブリッジキャッシ
ュに当該ブロックを持っているものはないので、ブリッ
ジキャッシュの当該ブロックの次ステートはEとなる
(表6参照)。したがって、この場合に制約1を満たす
ためには、トランザクション発行元CPUのキャッシュ
の次ステートをSにする必要がある。このため、表7の
規則では、下位バス・スヌープ結果がミスの場合にも上
位バスに対してHITをアサートする。
Readの場合、バスブリッジは下位バスのスヌープ結
果にかかわらず上位バスにスヌープ出力としてHITを
アサートする。下位バス・スヌープ結果がHIT又はH
ITMの場合は、他のブリッジキャッシュに当該ブロッ
クがあると言うことなので、トランザクション発行元の
CPUの次ステートをSにする必要がある。ここでCP
Uキャッシュは前述した1階層キャッシュに対するME
SIプロトコルにしたがってステート遷移するので、次
ステートをSにするにはスヌープ結果としてHITを受
け取る必要がある。そこで、バスブリッジはスプリット
応答トランザクション時に上位バスに対してHITをア
サートし、上位バス上のトランザクション発行元CPU
は、そのHITを受けてCPUキャッシュの対応キャッ
シュブロックのステートをSとする。また、表7の規則
では、下位バス・スヌープ結果がミスのときにも上位バ
スにHITをアサートすることにより、表1に示した制
約1を満足するようにしている。すなわち、下位バス・
スヌープ結果がミスのときには、他のブリッジキャッシ
ュに当該ブロックを持っているものはないので、ブリッ
ジキャッシュの当該ブロックの次ステートはEとなる
(表6参照)。したがって、この場合に制約1を満たす
ためには、トランザクション発行元CPUのキャッシュ
の次ステートをSにする必要がある。このため、表7の
規則では、下位バス・スヌープ結果がミスの場合にも上
位バスに対してHITをアサートする。
【0121】また、下位バスに発行したトランザクショ
ンがInvalidate系の場合には、バスブリッジ
は上位バスに対してHITもHITMもアサートしない
(すなわち、ミス)。この場合、スプリット前の上位バ
スのトランザクションもInvalidate系である
ので、トランザクション発行元のCPUキャッシュの次
ステートはMとなる。このとき、ブリッジキャッシュの
次ステートもMとなるので(表6参照)、この場合も制
約1を満足する。
ンがInvalidate系の場合には、バスブリッジ
は上位バスに対してHITもHITMもアサートしない
(すなわち、ミス)。この場合、スプリット前の上位バ
スのトランザクションもInvalidate系である
ので、トランザクション発行元のCPUキャッシュの次
ステートはMとなる。このとき、ブリッジキャッシュの
次ステートもMとなるので(表6参照)、この場合も制
約1を満足する。
【0122】このように、表7の規則にしたがってスプ
リット応答時のスヌープ出力を生成することにより、ス
プリットを行った場合においても前記制約1を満足する
ことができ、この結果MLIを満たし、キャッシュ・コ
ンシステンシを維持することができる。
リット応答時のスヌープ出力を生成することにより、ス
プリットを行った場合においても前記制約1を満足する
ことができ、この結果MLIを満たし、キャッシュ・コ
ンシステンシを維持することができる。
【0123】[1.3.2]制約2を採用した場合 本実施形態において制約2を採用した場合には、バスブ
リッジは、スプリットを行った場合に、下位バスに発行
したトランザクションの種類に基づき、表8の規則に従
って上位バスに発行するスヌープ出力を決定する。
リッジは、スプリットを行った場合に、下位バスに発行
したトランザクションの種類に基づき、表8の規則に従
って上位バスに発行するスヌープ出力を決定する。
【0124】
【表8】 表8の規則と前記表7に示した制約1の場合の規則との
相違は、バスブリッジから下位バスに発行したトランザ
クションがReadで下位バスのスヌープ結果がミスの
場合のスヌープ出力の決め方である。すなわち、表8の
規則では、このような場合のバスブリッジから上位バス
へのスヌープ出力をミスとしている。
相違は、バスブリッジから下位バスに発行したトランザ
クションがReadで下位バスのスヌープ結果がミスの
場合のスヌープ出力の決め方である。すなわち、表8の
規則では、このような場合のバスブリッジから上位バス
へのスヌープ出力をミスとしている。
【0125】バスブリッジから下位バスに発行したトラ
ンザクションがReadで下位バスのスヌープ結果がミ
スの場合、ブリッジキャッシュの次ステートはEとなる
が、制約2ではブリッジキャッシュのステートがEの場
合、その上位のCPUキャッシュのステートがEとなる
ことを許す。したがって、この場合におけるバスブリッ
ジからのスプリット応答トランザクションにおいてスヌ
ープ出力をミスとすることにより、このスヌープ出力を
受け取ったトランザクション発行元のCPUのCPUキ
ャッシュの次ステートをEとすることができる。
ンザクションがReadで下位バスのスヌープ結果がミ
スの場合、ブリッジキャッシュの次ステートはEとなる
が、制約2ではブリッジキャッシュのステートがEの場
合、その上位のCPUキャッシュのステートがEとなる
ことを許す。したがって、この場合におけるバスブリッ
ジからのスプリット応答トランザクションにおいてスヌ
ープ出力をミスとすることにより、このスヌープ出力を
受け取ったトランザクション発行元のCPUのCPUキ
ャッシュの次ステートをEとすることができる。
【0126】このように、表8にしたがってスプリット
応答時のスヌープ出力を生成することにより、スプリッ
トを行った場合においても前記制約2を満足することが
でき、この結果MLIを満たし、キャッシュ・コンシス
テンシを維持することができる。
応答時のスヌープ出力を生成することにより、スプリッ
トを行った場合においても前記制約2を満足することが
でき、この結果MLIを満たし、キャッシュ・コンシス
テンシを維持することができる。
【0127】[2]下位バス上に発行されたトランザク
ションに対する基本動作 他のバスブリッジから下位バス上に発行されたトランザ
クションを受け取ったバスブリッジの一連の動作につい
て説明する。すなわち、ここでは、他のバスブリッジが
自分の上位のCPUからのトランザクションをスプリッ
トして下位バスにトランザクションを発行した場合に、
その下位バス・トランザクションを受け取ったバスブリ
ッジの動作を説明する。
ションに対する基本動作 他のバスブリッジから下位バス上に発行されたトランザ
クションを受け取ったバスブリッジの一連の動作につい
て説明する。すなわち、ここでは、他のバスブリッジが
自分の上位のCPUからのトランザクションをスプリッ
トして下位バスにトランザクションを発行した場合に、
その下位バス・トランザクションを受け取ったバスブリ
ッジの動作を説明する。
【0128】[2.1]上位バス出力判定 下位バス・トランザクションを受け取ったバスブリッジ
は、その下位バス・トランザクションの種類と現在のブ
リッジキャッシュのステートとに基づき、上位バスに発
行すべきトランザクションを決定する。
は、その下位バス・トランザクションの種類と現在のブ
リッジキャッシュのステートとに基づき、上位バスに発
行すべきトランザクションを決定する。
【0129】[2.1.1]制約1を採用する場合 制約1を採用する場合には、下位バス・トランザクショ
ンを受け取ったバスブリッジは、次の表9に示す規則に
したがって、上位バスに発行するトランザクションを決
定する。
ンを受け取ったバスブリッジは、次の表9に示す規則に
したがって、上位バスに発行するトランザクションを決
定する。
【0130】
【表9】 すなわち、下位バス・トランザクションがReadの場
合、そのトランザクションを受け取ったバスブリッジ
は、自分のブリッジキャッシュのステートがMの場合に
のみ上位バスに対してReadを発行する。ブリッジキ
ャッシュのステートがMの場合、そのバスブリッジの上
位のCPUが当該ブロックの最新データを持っている可
能性があるからである。このようにしてバスブリッジか
ら上位バスにReadが発行された場合、そのRead
を受け取ったCPUがそのReadの要求するキャッシ
ュブロックをMステートで持っていれば、そのCPUは
上位バスに対してスヌープ出力としてHITMをアサー
トすると共に、当該Mステートのブロックをバスブリッ
ジに返す。このとき、そのCPUのキャッシュのステー
トはSに変化する。これを受け取ったバスブリッジは、
このブロックを下位バスを介して下位バス・トランザク
ション発行元のバスブリッジに返す。そして、この下位
バス・トランザクション発行元のバスブリッジは、下位
バスから受け取った最新のデータをスプリット応答とし
てReadの発行元のCPUに返す。
合、そのトランザクションを受け取ったバスブリッジ
は、自分のブリッジキャッシュのステートがMの場合に
のみ上位バスに対してReadを発行する。ブリッジキ
ャッシュのステートがMの場合、そのバスブリッジの上
位のCPUが当該ブロックの最新データを持っている可
能性があるからである。このようにしてバスブリッジか
ら上位バスにReadが発行された場合、そのRead
を受け取ったCPUがそのReadの要求するキャッシ
ュブロックをMステートで持っていれば、そのCPUは
上位バスに対してスヌープ出力としてHITMをアサー
トすると共に、当該Mステートのブロックをバスブリッ
ジに返す。このとき、そのCPUのキャッシュのステー
トはSに変化する。これを受け取ったバスブリッジは、
このブロックを下位バスを介して下位バス・トランザク
ション発行元のバスブリッジに返す。そして、この下位
バス・トランザクション発行元のバスブリッジは、下位
バスから受け取った最新のデータをスプリット応答とし
てReadの発行元のCPUに返す。
【0131】下位バス・トランザクションがReadの
場合においてブリッジキャッシュのステートがM以外の
場合は、ここではCPUキャッシュとブリッジキャッシ
ュは制約1を満足しているので、当該ブリッジキャッシ
ュの上位のCPUキャッシュには要求ブロックをステー
トMで持っているものはない。したがって、バスブリッ
ジは上位バスに対してトランザクションを発行する必要
がない。
場合においてブリッジキャッシュのステートがM以外の
場合は、ここではCPUキャッシュとブリッジキャッシ
ュは制約1を満足しているので、当該ブリッジキャッシ
ュの上位のCPUキャッシュには要求ブロックをステー
トMで持っているものはない。したがって、バスブリッ
ジは上位バスに対してトランザクションを発行する必要
がない。
【0132】また、下位バス・トランザクションがIn
validateまたはRead&Invalidat
eの場合、そのトランザクションを受け取ったバスブリ
ッジは、自分のブリッジキャッシュのステートがM,
E,Sの場合に上位バスに対してInvalidate
を発行する。すなわち、ブリッジキャッシュのステート
がM,E,Sの場合、その上位のCPUキャッシュが無
効化すべきデータを持っている可能性があるので、バス
ブリッジは上位バスにInvalidateを発行す
る。一方、ブリッジキャッシュのステートがIの場合
は、その上位のCPUキャッシュにはトランザクション
の対象となるブロックがないので、上位バスにトランザ
クションを発行する必要がない。
validateまたはRead&Invalidat
eの場合、そのトランザクションを受け取ったバスブリ
ッジは、自分のブリッジキャッシュのステートがM,
E,Sの場合に上位バスに対してInvalidate
を発行する。すなわち、ブリッジキャッシュのステート
がM,E,Sの場合、その上位のCPUキャッシュが無
効化すべきデータを持っている可能性があるので、バス
ブリッジは上位バスにInvalidateを発行す
る。一方、ブリッジキャッシュのステートがIの場合
は、その上位のCPUキャッシュにはトランザクション
の対象となるブロックがないので、上位バスにトランザ
クションを発行する必要がない。
【0133】そして、下位バス・トランザクションがW
riteBackの場合は、バスブリッジは、上位バス
にトランザクションを発行しない。バスブリッジが下位
バスにWriteBackを発行するのは、自分のブリ
ッジキャッシュのブロックをエビクションしてメインメ
モリに書き戻す場合であり、WriteBackの発行
元は他のバスブリッジに対してデータの要求も無効化の
要求もしていないからである。
riteBackの場合は、バスブリッジは、上位バス
にトランザクションを発行しない。バスブリッジが下位
バスにWriteBackを発行するのは、自分のブリ
ッジキャッシュのブロックをエビクションしてメインメ
モリに書き戻す場合であり、WriteBackの発行
元は他のバスブリッジに対してデータの要求も無効化の
要求もしていないからである。
【0134】以上説明した規則にしたがってバスブリッ
ジが上位バスに発行するトランザクションを決定するこ
とにより、ブリッジキャッシュとCPUキャッシュとの
制約1(表1)を満足させ、キャッシュ・コンシステン
シを維持することができる。
ジが上位バスに発行するトランザクションを決定するこ
とにより、ブリッジキャッシュとCPUキャッシュとの
制約1(表1)を満足させ、キャッシュ・コンシステン
シを維持することができる。
【0135】[2.1.2]制約2を採用する場合 制約2を採用する場合、バスブリッジは、下位バスのト
ランザクションを受け取ると、そのトランザクションの
種類とそのトランザクションを受け取ったときのブリッ
ジキャッシュのステートとに基づき、表10に示す規則
にしたがって上位バスに発行するトランザクションを決
定する。
ランザクションを受け取ると、そのトランザクションの
種類とそのトランザクションを受け取ったときのブリッ
ジキャッシュのステートとに基づき、表10に示す規則
にしたがって上位バスに発行するトランザクションを決
定する。
【0136】
【表10】 表10の規則は、下位バスから受け取ったトランザクシ
ョンがReadでかつブリッジキャッシュのステートが
Eである場合において上位バスへReadを発行する点
が、制約1における表9の規則と異なる。
ョンがReadでかつブリッジキャッシュのステートが
Eである場合において上位バスへReadを発行する点
が、制約1における表9の規則と異なる。
【0137】制約2では、ブリッジキャッシュのステー
トがEのときに、その上位のCPUキャッシュがステー
トMとなっている(すなわち、CPUキャッシュが最新
のデータを持っている)可能性がある。したがって、下
位バスから受け取ったトランザクションがReadでか
つブリッジキャッシュのステートがEである場合には、
バスブリッジは上位バスに対してReadを発行する。
もしそのバスブリッジの上位のCPUキャッシュの一つ
がReadが要求するデータをステートMで持っていれ
ば、そのCPUは上位バスに対してスヌープ出力として
HITMをアサートすると共に、当該Mステートのブロ
ックをバスブリッジに返す。この結果、バスブリッジは
最新のデータを有することとなる。そして、バスブリッ
ジは、最初に受け取った下位バス・トランザクションに
対する応答として、この最新データを下位バスに出力す
る。
トがEのときに、その上位のCPUキャッシュがステー
トMとなっている(すなわち、CPUキャッシュが最新
のデータを持っている)可能性がある。したがって、下
位バスから受け取ったトランザクションがReadでか
つブリッジキャッシュのステートがEである場合には、
バスブリッジは上位バスに対してReadを発行する。
もしそのバスブリッジの上位のCPUキャッシュの一つ
がReadが要求するデータをステートMで持っていれ
ば、そのCPUは上位バスに対してスヌープ出力として
HITMをアサートすると共に、当該Mステートのブロ
ックをバスブリッジに返す。この結果、バスブリッジは
最新のデータを有することとなる。そして、バスブリッ
ジは、最初に受け取った下位バス・トランザクションに
対する応答として、この最新データを下位バスに出力す
る。
【0138】なお、表10におけるこれ以外の場合につ
いての規則は、表9の規則と同様である。
いての規則は、表9の規則と同様である。
【0139】以上説明した表10の規則にしたがってバ
スブリッジが上位バスに発行するトランザクションを決
定することにより、表2に示したブリッジキャッシュと
CPUキャッシュとの制約2を満足させ、キャッシュ・
コンシステンシを維持することができる。
スブリッジが上位バスに発行するトランザクションを決
定することにより、表2に示したブリッジキャッシュと
CPUキャッシュとの制約2を満足させ、キャッシュ・
コンシステンシを維持することができる。
【0140】なお、上記表9又は表10の規則にしたが
ってバスブリッジから上位バスにトランザクションが発
行された場合、その上位バスに接続された各CPUは、
階層を意識せず、そのトランザクションが他のCPUか
ら発行された場合と同様に応答する。したがって、例え
ばバスブリッジから上位バスにInvalidateが
発行されたときに、その上位バス上にInvalida
teの対象ブロックをステートMで持っているCPUが
あった場合は、そのCPUは上位バスに対してHITM
をアサートすると同時にその対象ブロックのデータを上
位バスに出力する。
ってバスブリッジから上位バスにトランザクションが発
行された場合、その上位バスに接続された各CPUは、
階層を意識せず、そのトランザクションが他のCPUか
ら発行された場合と同様に応答する。したがって、例え
ばバスブリッジから上位バスにInvalidateが
発行されたときに、その上位バス上にInvalida
teの対象ブロックをステートMで持っているCPUが
あった場合は、そのCPUは上位バスに対してHITM
をアサートすると同時にその対象ブロックのデータを上
位バスに出力する。
【0141】[2.1.3]変形例 [2.1.1]及び[2.1.2]で説明した上位バス
出力判定方式によれば、下位バス・トランザクションが
Invalidateの場合、これを受け取ったバスブ
リッジのブリッジキャッシュのステートがMであれば、
当該バスブリッジは、原則として上位バスに対してIn
validateを発行する(表9及び表10参照)。
出力判定方式によれば、下位バス・トランザクションが
Invalidateの場合、これを受け取ったバスブ
リッジのブリッジキャッシュのステートがMであれば、
当該バスブリッジは、原則として上位バスに対してIn
validateを発行する(表9及び表10参照)。
【0142】ところが、あるCPUキャッシュにおいて
エビクションが発生し、ステートMのブロックがそのC
PUの下位のブリッジキャッシュに書き戻された場合、
そのブリッジキャッシュのステートはMとなるのに対
し、元のCPUキャッシュと同じ上位バスに接続された
CPUキャッシュはすべてステートIとなる。したがっ
て、この場合、バスブリッジは、CPUから書き戻され
たブロックに対するInvalidateを下位バスか
ら受け取ったとしても、上位バスに対してInvali
dateを発行する必要はない。表9又は表10に示し
た方式においては、このような場合でも上位バスに対す
るInvalidateを発行することとなり、不要な
Invalidateの発行を行っていることとなる。
エビクションが発生し、ステートMのブロックがそのC
PUの下位のブリッジキャッシュに書き戻された場合、
そのブリッジキャッシュのステートはMとなるのに対
し、元のCPUキャッシュと同じ上位バスに接続された
CPUキャッシュはすべてステートIとなる。したがっ
て、この場合、バスブリッジは、CPUから書き戻され
たブロックに対するInvalidateを下位バスか
ら受け取ったとしても、上位バスに対してInvali
dateを発行する必要はない。表9又は表10に示し
た方式においては、このような場合でも上位バスに対す
るInvalidateを発行することとなり、不要な
Invalidateの発行を行っていることとなる。
【0143】また、[2.1.1]及び[2.1.2]
で説明した上位バス出力判定方式によれば、下位バス・
トランザクションがReadの場合、これを受け取った
バスブリッジのブリッジキャッシュのステートがMであ
れば、当該バスブリッジは、原則として上位バスに対し
てReadを発行する(表9及び表10参照)。
で説明した上位バス出力判定方式によれば、下位バス・
トランザクションがReadの場合、これを受け取った
バスブリッジのブリッジキャッシュのステートがMであ
れば、当該バスブリッジは、原則として上位バスに対し
てReadを発行する(表9及び表10参照)。
【0144】ところが、あるCPUがステートMのブロ
ックを持っているときに、そのCPUと同一上位バス上
のCPUがそのブロックをReadした場合、当該上位
バス上のCPUキャッシュのステートはS又はIとな
り、それらCPUキャッシュの下位のブリッジキャッシ
ュのステートはMとなる。すなわち、当該ブロックの最
新のデータはブリッジキャッシュが所有していることと
なる。この場合、バスブリッジは、当該ブロックに対す
るReadを下位バスから受け取ったとしても、上位バ
スに対してReadを発行する必要はない。表9又は表
10に示した方式においては、このような場合でも上位
バスに対するReadを発行することとなり、不要なR
eadの発行を行っていることとなる。
ックを持っているときに、そのCPUと同一上位バス上
のCPUがそのブロックをReadした場合、当該上位
バス上のCPUキャッシュのステートはS又はIとな
り、それらCPUキャッシュの下位のブリッジキャッシ
ュのステートはMとなる。すなわち、当該ブロックの最
新のデータはブリッジキャッシュが所有していることと
なる。この場合、バスブリッジは、当該ブロックに対す
るReadを下位バスから受け取ったとしても、上位バ
スに対してReadを発行する必要はない。表9又は表
10に示した方式においては、このような場合でも上位
バスに対するReadを発行することとなり、不要なR
eadの発行を行っていることとなる。
【0145】この変形例は、以上に説明したような不要
なトランザクションの発行を抑制することを目的とす
る。
なトランザクションの発行を抑制することを目的とす
る。
【0146】このため、本変形例では、バスブリッジに
おいて、ブリッジキャッシュの各ブロックごとに状態フ
ラグを設け、この状態フラグによってトランザクション
の発行を制御する。
おいて、ブリッジキャッシュの各ブロックごとに状態フ
ラグを設け、この状態フラグによってトランザクション
の発行を制御する。
【0147】図2は、この変形例の概略構成を示す図で
ある。図2において、上位バス20と下位バス40との
間でトランザクションの制御を行うバスブリッジ30
は、バスブリッジ制御部60と上位キャッシュ状態フラ
グ記憶部80とを含む。上位キャッシュ状態フラグ記憶
部80は、ブリッジキャッシュ31の各ブロックごとに
状態フラグを有する。この状態フラグは2ビットであ
り、各ビット(A)、(B)は、それぞれ次の状態を示
すためのビットである。
ある。図2において、上位バス20と下位バス40との
間でトランザクションの制御を行うバスブリッジ30
は、バスブリッジ制御部60と上位キャッシュ状態フラ
グ記憶部80とを含む。上位キャッシュ状態フラグ記憶
部80は、ブリッジキャッシュ31の各ブロックごとに
状態フラグを有する。この状態フラグは2ビットであ
り、各ビット(A)、(B)は、それぞれ次の状態を示
すためのビットである。
【0148】(A)そのフラグに対応するブリッジキャ
ッシュのブロックをInvalidateするために、
上位バス20上の各CPU10及び11のキャッシュを
Invalidateする必要がない。すなわち、ME
SIプロトコルでは、上位バス20上の各CPUのキャ
ッシュのステートがすべてIである (B)そのフラグに対応するブリッジキャッシュ31の
ブロックのデータを下位バス40に出力するために、上
位バス20に対してReadを発行する必要がない。す
なわち、上位バス20上の各CPUのキャッシュはI又
はSである バスブリッジ制御部60は、上位バス20・下位バス4
0間のトランザクションのやり取り及びブリッジキャッ
シュ31の制御のほかに、上位キャッシュ状態フラグ記
憶部80の制御を行う。
ッシュのブロックをInvalidateするために、
上位バス20上の各CPU10及び11のキャッシュを
Invalidateする必要がない。すなわち、ME
SIプロトコルでは、上位バス20上の各CPUのキャ
ッシュのステートがすべてIである (B)そのフラグに対応するブリッジキャッシュ31の
ブロックのデータを下位バス40に出力するために、上
位バス20に対してReadを発行する必要がない。す
なわち、上位バス20上の各CPUのキャッシュはI又
はSである バスブリッジ制御部60は、上位バス20・下位バス4
0間のトランザクションのやり取り及びブリッジキャッ
シュ31の制御のほかに、上位キャッシュ状態フラグ記
憶部80の制御を行う。
【0149】バスブリッジ制御部60は、CPU10又
は11から上位バス20上に発行されたトランザクショ
ンをモニタする。そして、そのトランザクションの種類
に基づき、上位キャッシュ状態フラグ記憶部80の当該
ブロックに対する状態フラグを制御する。すなわち、バ
スブリッジ制御部60は、上位バス20上にWrite
Backが発行されたのを検出したときには、上位キャ
ッシュ状態フラグ制御部80における該当ブロックに対
する状態フラグのビット(A)をセットする。また、バ
スブリッジ制御部60は、上位バス20上にReadが
発行されたのを検出したときには、上位キャッシュ状態
フラグ制御部80における該当ブロックに対する状態フ
ラグのビット(B)をセットする。そして、上位バス2
0上にInvalidate系トランザクションが発行
された場合には、バスブリッジ制御部60は、該当ブロ
ックに対する状態フラグを両ビットともリセットする
(CPUがInvalidate系を発行するのは、該
当ブロックに対して書き込みを行うときだからであ
る)。
は11から上位バス20上に発行されたトランザクショ
ンをモニタする。そして、そのトランザクションの種類
に基づき、上位キャッシュ状態フラグ記憶部80の当該
ブロックに対する状態フラグを制御する。すなわち、バ
スブリッジ制御部60は、上位バス20上にWrite
Backが発行されたのを検出したときには、上位キャ
ッシュ状態フラグ制御部80における該当ブロックに対
する状態フラグのビット(A)をセットする。また、バ
スブリッジ制御部60は、上位バス20上にReadが
発行されたのを検出したときには、上位キャッシュ状態
フラグ制御部80における該当ブロックに対する状態フ
ラグのビット(B)をセットする。そして、上位バス2
0上にInvalidate系トランザクションが発行
された場合には、バスブリッジ制御部60は、該当ブロ
ックに対する状態フラグを両ビットともリセットする
(CPUがInvalidate系を発行するのは、該
当ブロックに対して書き込みを行うときだからであ
る)。
【0150】そして、バスブリッジ制御部60は、下位
バス40からInvalidateを受け取った場合、
まずブリッジキャッシュ31をスヌープしてInval
idate対象ブロックのステートを調べる。このステ
ートがMの場合は、上位キャッシュ状態フラグ記憶部8
0を検索して、当該ブロックの状態フラグのビット
(A)を調べる。そして、このビット(A)がリセット
状態である場合にのみ、バスブリッジ制御部60は上位
バス20に対してInvalidateを発行する。ビ
ット(A)がセット状態の場合は、上位バス20上のC
PUキャッシュはすべてステートIなのでInvali
dateの発行は行わない。
バス40からInvalidateを受け取った場合、
まずブリッジキャッシュ31をスヌープしてInval
idate対象ブロックのステートを調べる。このステ
ートがMの場合は、上位キャッシュ状態フラグ記憶部8
0を検索して、当該ブロックの状態フラグのビット
(A)を調べる。そして、このビット(A)がリセット
状態である場合にのみ、バスブリッジ制御部60は上位
バス20に対してInvalidateを発行する。ビ
ット(A)がセット状態の場合は、上位バス20上のC
PUキャッシュはすべてステートIなのでInvali
dateの発行は行わない。
【0151】また、バスブリッジ制御部60は、下位バ
ス40からReadを受け取った場合、ブリッジキャッ
シュ31をスヌープしてRead対象のブロックのステ
ートを調べる。このステートがMの場合は、さらに上位
キャッシュ状態フラグ記憶部80を検索して、当該ブロ
ックの状態フラグのビット(B)を調べる。そして、こ
のビット(B)がリセット状態の場合のみ、バスブリッ
ジ制御部60は上位バス20に対してReadを発行す
る。
ス40からReadを受け取った場合、ブリッジキャッ
シュ31をスヌープしてRead対象のブロックのステ
ートを調べる。このステートがMの場合は、さらに上位
キャッシュ状態フラグ記憶部80を検索して、当該ブロ
ックの状態フラグのビット(B)を調べる。そして、こ
のビット(B)がリセット状態の場合のみ、バスブリッ
ジ制御部60は上位バス20に対してReadを発行す
る。
【0152】このように、図2の構成では、バスブリッ
ジ制御部60において、上位バス20上のトランザクシ
ョンをモニタすることにより、上位バス20上のCPU
キャッシュの状態を把握する。そして、この結果得た情
報を用いて下位バス40から上位バス20へのトランザ
クションの転送を制御することにより、上位バス20上
へ発行されるトランザクションを減らすことができる。
したがって、図2の構成によれば、上位バス20の負荷
を低減することができる。
ジ制御部60において、上位バス20上のトランザクシ
ョンをモニタすることにより、上位バス20上のCPU
キャッシュの状態を把握する。そして、この結果得た情
報を用いて下位バス40から上位バス20へのトランザ
クションの転送を制御することにより、上位バス20上
へ発行されるトランザクションを減らすことができる。
したがって、図2の構成によれば、上位バス20の負荷
を低減することができる。
【0153】[2.2]下位バスに対するスヌープ出力 下位バスからトランザクションを受け取ったバスブリッ
ジが、表9又は表10の規則にしたがって上位バスにト
ランザクションを発行すると、上位バスの各CPUから
そのトランザクションに対する応答が当該バスブリッジ
に返される。それら上位バスからの応答に基づき、バス
ブリッジは下位バスに対して応答を発する。この応答の
時に、バスブリッジは、下位バス・トランザクション発
行元のバスブリッジに対するスヌープ出力を下位バス上
に発する。
ジが、表9又は表10の規則にしたがって上位バスにト
ランザクションを発行すると、上位バスの各CPUから
そのトランザクションに対する応答が当該バスブリッジ
に返される。それら上位バスからの応答に基づき、バス
ブリッジは下位バスに対して応答を発する。この応答の
時に、バスブリッジは、下位バス・トランザクション発
行元のバスブリッジに対するスヌープ出力を下位バス上
に発する。
【0154】ここでは、他のバスブリッジから下位バス
に発行されたトランザクションを受け取ったバスブリッ
ジが、このトランザクションに対して下位バスに返すス
ヌープ出力の決定の方法について説明する。
に発行されたトランザクションを受け取ったバスブリッ
ジが、このトランザクションに対して下位バスに返すス
ヌープ出力の決定の方法について説明する。
【0155】[2.2.1]制約1を採用する場合 制約1を採用する場合、バスブリッジから下位バスへ発
行するスヌープ出力は、当該バスブリッジが受け取った
下位バス・トランザクションの種類と、下位バストラン
ザクションを受け取った時点でのブリッジキャッシュの
ステートとに基づき、次の表11の規則にしたがって決
定する。
行するスヌープ出力は、当該バスブリッジが受け取った
下位バス・トランザクションの種類と、下位バストラン
ザクションを受け取った時点でのブリッジキャッシュの
ステートとに基づき、次の表11の規則にしたがって決
定する。
【0156】
【表11】 まず、下位バス・トランザクションがReadであった
場合について説明する。この場合においてブリッジキャ
ッシュのステートがIの場合には、当該ブリッジキャッ
シュ及びその上位のCPUキャッシュのいずれもRea
dが要求するデータを持っていないので、バスブリッジ
は下位バスに対するスヌープ出力をミスとする。また、
ブリッジキャッシュがS又はEの場合には、当該ブリッ
ジキャッシュが下位バスのReadの要求するデータを
持っており、しかもそのデータの内容はメインメモリと
同内容なので、バスブリッジは下位バスに対するスヌー
プ出力をHITとする。特に、制約1を採用する場合
は、ブリッジキャッシュがEの場合にはその上位のCP
UキャッシュはMとなり得ないので、ブリッジキャッシ
ュがEの場合はバスブリッジは上位バスをスヌープする
までもなく、下位バスに対してHITをアサートすれば
足りる。また、ブリッジキャッシュのステートがMの場
合は、ブリッジキャッシュ又はその上位のCPUキャッ
シュのいずれかがそのReadの要求するデータを持っ
ているので、下位バスに対してHITMをアサートす
る。なお、ブリッジキャッシュのステートがMの場合、
前述したようにバスブリッジから上位バスにReadが
発行される。このReadに対する上位バスのスヌープ
結果がHITMだった場合は、バスブリッジは上位バス
のCPUキャッシュから最新のデータを得てブリッジキ
ャッシュに格納すると共に下位バス上にその最新データ
を出力する。一方、Readに対する上位バススヌープ
結果がHIT又はミスであった場合には、バスブリッジ
はブリッジキャッシュが有するデータを最新データとし
下位バスに出力する。
場合について説明する。この場合においてブリッジキャ
ッシュのステートがIの場合には、当該ブリッジキャッ
シュ及びその上位のCPUキャッシュのいずれもRea
dが要求するデータを持っていないので、バスブリッジ
は下位バスに対するスヌープ出力をミスとする。また、
ブリッジキャッシュがS又はEの場合には、当該ブリッ
ジキャッシュが下位バスのReadの要求するデータを
持っており、しかもそのデータの内容はメインメモリと
同内容なので、バスブリッジは下位バスに対するスヌー
プ出力をHITとする。特に、制約1を採用する場合
は、ブリッジキャッシュがEの場合にはその上位のCP
UキャッシュはMとなり得ないので、ブリッジキャッシ
ュがEの場合はバスブリッジは上位バスをスヌープする
までもなく、下位バスに対してHITをアサートすれば
足りる。また、ブリッジキャッシュのステートがMの場
合は、ブリッジキャッシュ又はその上位のCPUキャッ
シュのいずれかがそのReadの要求するデータを持っ
ているので、下位バスに対してHITMをアサートす
る。なお、ブリッジキャッシュのステートがMの場合、
前述したようにバスブリッジから上位バスにReadが
発行される。このReadに対する上位バスのスヌープ
結果がHITMだった場合は、バスブリッジは上位バス
のCPUキャッシュから最新のデータを得てブリッジキ
ャッシュに格納すると共に下位バス上にその最新データ
を出力する。一方、Readに対する上位バススヌープ
結果がHIT又はミスであった場合には、バスブリッジ
はブリッジキャッシュが有するデータを最新データとし
下位バスに出力する。
【0157】次に、下位バス・トランザクションがRe
ad&InvalidateまたはInvalidat
eであった場合について説明する。この場合において、
ブリッジキャッシュのステートがI,S又はEであった
場合には、バスブリッジは下位バスに対するスヌープ出
力をミスとし、ブリッジキャッシュのステートがMであ
った場合には下位バスに対するスヌープ出力をHITM
とする。Invalidate系トランザクションは、
対象とするキャッシュブロックを無効化(すなわちIス
テートに変える)するトランザクションであるから、ブ
リッジキャッシュの当該ブロックの次ステートはIとな
るので、下位バスに対するスヌープ出力もミスとすれば
よい。ただし、ブリッジキャッシュのステートがMであ
った場合には、そのブリッジキャッシュ(又は上位のC
PUキャッシュ)の持つ最新のデータをRead発行元
のバスブリッジに返しかつメインメモリにも書き戻す必
要があるため、下位バスにはHITMをアサートする。
ad&InvalidateまたはInvalidat
eであった場合について説明する。この場合において、
ブリッジキャッシュのステートがI,S又はEであった
場合には、バスブリッジは下位バスに対するスヌープ出
力をミスとし、ブリッジキャッシュのステートがMであ
った場合には下位バスに対するスヌープ出力をHITM
とする。Invalidate系トランザクションは、
対象とするキャッシュブロックを無効化(すなわちIス
テートに変える)するトランザクションであるから、ブ
リッジキャッシュの当該ブロックの次ステートはIとな
るので、下位バスに対するスヌープ出力もミスとすれば
よい。ただし、ブリッジキャッシュのステートがMであ
った場合には、そのブリッジキャッシュ(又は上位のC
PUキャッシュ)の持つ最新のデータをRead発行元
のバスブリッジに返しかつメインメモリにも書き戻す必
要があるため、下位バスにはHITMをアサートする。
【0158】あるバスブリッジから下位バスに発行され
たトランザクションがWriteBackであった場合
には、他のバスブリッジのキャッシュのステートはI以
外にはないので、他のバスブリッジはスヌープ出力をミ
スとする。
たトランザクションがWriteBackであった場合
には、他のバスブリッジのキャッシュのステートはI以
外にはないので、他のバスブリッジはスヌープ出力をミ
スとする。
【0159】なお、表11に示した規則において特徴的
なのは、バスブリッジから下位バスへのスヌープ出力を
決定する際に、上位バスのCPUの情報が不要なことで
ある。したがって、バスブリッジは、下位バスからトラ
ンザクションを受け取ると、そのトランザクションの種
類とそのときのブリッジキャッシュとステートを調べる
だけで、下位バスに対するスヌープ出力を生成できる。
これは、制約1のごとくCPUキャッシュのステートを
制限することのメリットの一つである。
なのは、バスブリッジから下位バスへのスヌープ出力を
決定する際に、上位バスのCPUの情報が不要なことで
ある。したがって、バスブリッジは、下位バスからトラ
ンザクションを受け取ると、そのトランザクションの種
類とそのときのブリッジキャッシュとステートを調べる
だけで、下位バスに対するスヌープ出力を生成できる。
これは、制約1のごとくCPUキャッシュのステートを
制限することのメリットの一つである。
【0160】以上説明した規則に従ってバスブリッジか
ら下位バスに対するスヌープ出力を生成することによ
り、キャッシュ・コンシステンシを維持することが可能
となる。
ら下位バスに対するスヌープ出力を生成することによ
り、キャッシュ・コンシステンシを維持することが可能
となる。
【0161】[2.2.2]制約2を採用する場合 制約2を採用した場合、バスブリッジから下位バスへ発
行するスヌープ出力は、当該バスブリッジが受け取った
下位バス・トランザクションの種類と、そのトランザク
ションを受け取った時点でのブリッジキャッシュのステ
ートと、上位バスのスヌープ結果とに基づき、次の表1
2の規則にしたがって決定する。
行するスヌープ出力は、当該バスブリッジが受け取った
下位バス・トランザクションの種類と、そのトランザク
ションを受け取った時点でのブリッジキャッシュのステ
ートと、上位バスのスヌープ結果とに基づき、次の表1
2の規則にしたがって決定する。
【0162】
【表12】 表12の規則は、表11に示した制約1の場合の規則と
異なり、上位バスのスヌープ結果によって下位バスへの
スヌープ出力を区別している。ここでいう上位バスのス
ヌープ結果とは、下位バス・トランザクションについて
バスブリッジが表10の規則にしたがって生成した上位
バス・トランザクションに対する上位バスのスヌープ結
果のことである。
異なり、上位バスのスヌープ結果によって下位バスへの
スヌープ出力を区別している。ここでいう上位バスのス
ヌープ結果とは、下位バス・トランザクションについて
バスブリッジが表10の規則にしたがって生成した上位
バス・トランザクションに対する上位バスのスヌープ結
果のことである。
【0163】表12の規則において、下位バス・トラン
ザクションの種類がWriteBackの場合、及び下
位バス・トランザクションの種類がRead、Inva
lidate又はRead&Invalidateの場
合において上位バスのスプリット結果がHITM以外の
場合のスヌープ出力の決定の規則は、表11の場合と同
様である。
ザクションの種類がWriteBackの場合、及び下
位バス・トランザクションの種類がRead、Inva
lidate又はRead&Invalidateの場
合において上位バスのスプリット結果がHITM以外の
場合のスヌープ出力の決定の規則は、表11の場合と同
様である。
【0164】表12の規則の特徴点は、下位バス・トラ
ンザクションの種類がRead、Invalidate
又はRead&Invalidateでブリッジキャッ
シュのステートがEの場合において、上位バスのスヌー
プ結果がHITMとなると、下位バスに対するスヌープ
出力をHITMとする点である。
ンザクションの種類がRead、Invalidate
又はRead&Invalidateでブリッジキャッ
シュのステートがEの場合において、上位バスのスヌー
プ結果がHITMとなると、下位バスに対するスヌープ
出力をHITMとする点である。
【0165】これは、制約2において、ブリッジキャッ
シュのステートがEの場合にはその上位のCPUキャッ
シュがステートMとなり得るためである。すなわち、ブ
リッジキャッシュのステートがEのときに、バスブリッ
ジから上位バスに発行したトランザクションに対するス
ヌープ結果がHITMであった場合には、上位バス上の
CPUがステートMのデータを持っていたことになり、
この結果を下位バス・トランザクションの発行元のバス
ブリッジへ知らせるために、下位バスへのスヌープ出力
をHITMとする。
シュのステートがEの場合にはその上位のCPUキャッ
シュがステートMとなり得るためである。すなわち、ブ
リッジキャッシュのステートがEのときに、バスブリッ
ジから上位バスに発行したトランザクションに対するス
ヌープ結果がHITMであった場合には、上位バス上の
CPUがステートMのデータを持っていたことになり、
この結果を下位バス・トランザクションの発行元のバス
ブリッジへ知らせるために、下位バスへのスヌープ出力
をHITMとする。
【0166】以上説明した規則に従ってバスブリッジか
ら下位バスに対するスヌープ出力を生成することによ
り、キャッシュ・コンシステンシを維持することが可能
となる。
ら下位バスに対するスヌープ出力を生成することによ
り、キャッシュ・コンシステンシを維持することが可能
となる。
【0167】[2.3]ブリッジキャッシュの次ステー
ト 次に、下位バスに発行されたトランザクションを受け取
ったバスブリッジのブリッジキャッシュのステートの遷
移について説明する。なお、ブリッジキャッシュの次ス
テートの決定の仕方は、制約1及び制約2のいずれを採
用した場合も同じである。
ト 次に、下位バスに発行されたトランザクションを受け取
ったバスブリッジのブリッジキャッシュのステートの遷
移について説明する。なお、ブリッジキャッシュの次ス
テートの決定の仕方は、制約1及び制約2のいずれを採
用した場合も同じである。
【0168】まず、下位バス・トランザクションを受け
取ったバスブリッジが上位バスに対してトランザクショ
ンを発行しない場合について説明する。
取ったバスブリッジが上位バスに対してトランザクショ
ンを発行しない場合について説明する。
【0169】下位バス・トランザクションがReadで
あった場合において、それを受け取ったバスブリッジの
ブリッジキャッシュのステートがIであった場合には、
そのブリッジキャッシュの次ステートはIとなる。ま
た、Readを受け取ったブリッジキャッシュのステー
トがS又はEであった場合には、そのブリッジキャッシ
ュの次ステートはSとなる。
あった場合において、それを受け取ったバスブリッジの
ブリッジキャッシュのステートがIであった場合には、
そのブリッジキャッシュの次ステートはIとなる。ま
た、Readを受け取ったブリッジキャッシュのステー
トがS又はEであった場合には、そのブリッジキャッシ
ュの次ステートはSとなる。
【0170】下位バス・トランザクションがInval
idate系であった場合には、それを受け取ったバス
ブリッジのブリッジキャッシュの次ステートはIとな
る。
idate系であった場合には、それを受け取ったバス
ブリッジのブリッジキャッシュの次ステートはIとな
る。
【0171】下位バス・トランザクションがWrite
Backであった場合には、それを受け取ったバスブリ
ッジのブリッジキャッシュのステートは変化しない。
Backであった場合には、それを受け取ったバスブリ
ッジのブリッジキャッシュのステートは変化しない。
【0172】次に、下位バス・トランザクションを受け
取ったバスブリッジが上位バスに対してトランザクショ
ンを発行する場合について説明する。この場合、ブリッ
ジキャッシュの次ステートは、表13に示す規則にした
がって決定する。
取ったバスブリッジが上位バスに対してトランザクショ
ンを発行する場合について説明する。この場合、ブリッ
ジキャッシュの次ステートは、表13に示す規則にした
がって決定する。
【0173】
【表13】 表13は、バスブリッジが上位バスに発行したトランザ
クションとそのトランザクションに対する上位バスのス
ヌープ結果との各組合わせに対するブリッジキャッシュ
の次ステートが示されている。
クションとそのトランザクションに対する上位バスのス
ヌープ結果との各組合わせに対するブリッジキャッシュ
の次ステートが示されている。
【0174】この規則では、バスブリッジが上位バスに
Readを発行した場合には、上位バスのスヌープ結果
にかかわらず、ブリッジキャッシュの次ステートをSと
する。一方、バスブリッジが上位バスにInvalid
ate系トランザクションを発行した場合には、ブリッ
ジキャッシュの次ステートをIとする。
Readを発行した場合には、上位バスのスヌープ結果
にかかわらず、ブリッジキャッシュの次ステートをSと
する。一方、バスブリッジが上位バスにInvalid
ate系トランザクションを発行した場合には、ブリッ
ジキャッシュの次ステートをIとする。
【0175】このような規則に従えば、上位バスのスヌ
ープ結果を用いずに容易にブリッジキャッシュの次ステ
ートを決定することができる。
ープ結果を用いずに容易にブリッジキャッシュの次ステ
ートを決定することができる。
【0176】下位バス・トランザクションを受け取った
バスブリッジが上位バスに対してトランザクションを発
行した場合における、ブリッジキャッシュの次ステート
の決め方にはもう一つの方法がある。その決め方の規則
を表14に示す。
バスブリッジが上位バスに対してトランザクションを発
行した場合における、ブリッジキャッシュの次ステート
の決め方にはもう一つの方法がある。その決め方の規則
を表14に示す。
【0177】
【表14】 この規則が表13の規則と異なる点は、上位バスにRe
adを発行した場合において、上位バスのスヌープ結果
に基づいてブリッジキャッシュの次ステートを決定して
いる点である。表14の規則では、上位バスにRead
を発行した場合、上位バスのスヌープ結果がHIT又は
HITMの場合には表13の規則と同様ブリッジキャッ
シュの次ステートをSとするが、上位バスのスヌープ結
果がミスの場合はブリッジキャッシュの次ステートをI
とする。このようにすることによって次のような効果が
得られる。
adを発行した場合において、上位バスのスヌープ結果
に基づいてブリッジキャッシュの次ステートを決定して
いる点である。表14の規則では、上位バスにRead
を発行した場合、上位バスのスヌープ結果がHIT又は
HITMの場合には表13の規則と同様ブリッジキャッ
シュの次ステートをSとするが、上位バスのスヌープ結
果がミスの場合はブリッジキャッシュの次ステートをI
とする。このようにすることによって次のような効果が
得られる。
【0178】すなわち、上位バスのスヌープ結果がミス
ということは、当該バスブリッジの上位バス上のCPU
キャッシュが現在すべてステートIであるということを
意味する。従って、このような場合にブリッジキャッシ
ュの次ステートをIとしても、キャッシュ・コンシステ
ンシは満足される。また、上位バス上のCPUキャッシ
ュがすべてIということは、上位バス上のCPUはRe
adトランザクションが要求するブロックを現在全く使
用していないということを意味するので、このような場
合にブリッジキャッシュのみが当該ブロックを持ってい
たとしても無駄になる可能性が高い。そこで、表14に
示したように上位バスのスヌープ結果がミスのときにブ
リッジキャッシュの次ステートをIとすることにより、
ブリッジキャッシュに空きブロックが生まれ、キャッシ
ュの有効利用を図ることができる。
ということは、当該バスブリッジの上位バス上のCPU
キャッシュが現在すべてステートIであるということを
意味する。従って、このような場合にブリッジキャッシ
ュの次ステートをIとしても、キャッシュ・コンシステ
ンシは満足される。また、上位バス上のCPUキャッシ
ュがすべてIということは、上位バス上のCPUはRe
adトランザクションが要求するブロックを現在全く使
用していないということを意味するので、このような場
合にブリッジキャッシュのみが当該ブロックを持ってい
たとしても無駄になる可能性が高い。そこで、表14に
示したように上位バスのスヌープ結果がミスのときにブ
リッジキャッシュの次ステートをIとすることにより、
ブリッジキャッシュに空きブロックが生まれ、キャッシ
ュの有効利用を図ることができる。
【0179】以上、上位バスに発行されたトランザクシ
ョンを受け取ったときのバスブリッジの基本動作と、下
位バスに発行されたトランザクションを受け取ったとき
のバスブリッジの基本動作とを説明した。次は、ブリッ
ジキャッシュのエビクション時のバスブリッジの動作、
及び上位バスのトランザクションに対するリトライにつ
いて説明する。
ョンを受け取ったときのバスブリッジの基本動作と、下
位バスに発行されたトランザクションを受け取ったとき
のバスブリッジの基本動作とを説明した。次は、ブリッ
ジキャッシュのエビクション時のバスブリッジの動作、
及び上位バスのトランザクションに対するリトライにつ
いて説明する。
【0180】[3]ブリッジキャッシュのエビクション
を行う場合のバスブリッジの動作 キャッシュメモリには様々な方式があるが、制御の容易
さやコストなどからダイレクトマッピング方式やセット
アソシアティブ方式が広く用いられている。これらの方
式においては、一つのキャッシュブロックに対して複数
のメモリアドレスを対応させているため、あるデータを
読み込もうとする場合に、そのデータに対応するキャッ
シュメモリのブロックがそのブロックに対応する他のア
ドレスのデータによって使用され、空きがない場合があ
る。このような場合に、現在使用されているブロックを
無効化して空きブロックを作る処理のことをエビクショ
ンと呼ぶ。キャッシュに読み込もうとしていたデータ
は、エビクションの結果できた空きブロックに格納され
る。
を行う場合のバスブリッジの動作 キャッシュメモリには様々な方式があるが、制御の容易
さやコストなどからダイレクトマッピング方式やセット
アソシアティブ方式が広く用いられている。これらの方
式においては、一つのキャッシュブロックに対して複数
のメモリアドレスを対応させているため、あるデータを
読み込もうとする場合に、そのデータに対応するキャッ
シュメモリのブロックがそのブロックに対応する他のア
ドレスのデータによって使用され、空きがない場合があ
る。このような場合に、現在使用されているブロックを
無効化して空きブロックを作る処理のことをエビクショ
ンと呼ぶ。キャッシュに読み込もうとしていたデータ
は、エビクションの結果できた空きブロックに格納され
る。
【0181】さて、ブリッジキャッシュにてエビクショ
ンを行った場合、上位バス上には当該エビクションを行
ったブロックを持っているCPUキャッシュが存在する
可能性がある。従って、ブリッジキャッシュのエビクシ
ョンを行った場合には、上位バスのCPUキャッシュの
当該ブロックを無効化する必要がある場合がある。ま
た、エビクション対象のブロックが最新のデータであっ
た場合、そのデータをメインメモリに書き戻す必要があ
る。
ンを行った場合、上位バス上には当該エビクションを行
ったブロックを持っているCPUキャッシュが存在する
可能性がある。従って、ブリッジキャッシュのエビクシ
ョンを行った場合には、上位バスのCPUキャッシュの
当該ブロックを無効化する必要がある場合がある。ま
た、エビクション対象のブロックが最新のデータであっ
た場合、そのデータをメインメモリに書き戻す必要があ
る。
【0182】本実施形態において、上位バスのトランザ
クションを検出したバスブリッジは、ブリッジキャッシ
ュを検索して当該トランザクションのアドレスに対応す
るブロックが空いているか否かを調べ、空きブロックが
ない場合にエビクションを行う。エビクションにおいて
は、ブリッジキャッシュの上位のCPUキャッシュの該
当ブロックを無効化し、ブリッジキャッシュの該当ブロ
ックのデータをメインメモリへ書き戻したのち、ブリッ
ジキャッシュの該当ブロックをステートをIに変更して
使用可能な状態とする。
クションを検出したバスブリッジは、ブリッジキャッシ
ュを検索して当該トランザクションのアドレスに対応す
るブロックが空いているか否かを調べ、空きブロックが
ない場合にエビクションを行う。エビクションにおいて
は、ブリッジキャッシュの上位のCPUキャッシュの該
当ブロックを無効化し、ブリッジキャッシュの該当ブロ
ックのデータをメインメモリへ書き戻したのち、ブリッ
ジキャッシュの該当ブロックをステートをIに変更して
使用可能な状態とする。
【0183】[3.1]上位バス上のCPUキャッシュ
の無効化 上位のCPUキャッシュ内のエビクション対象ブロック
を無効化するためには、バスブリッジは上位バスに対し
てInvalidateを発行する。このInvali
dateの発行は、次の表15に基づいて行う。
の無効化 上位のCPUキャッシュ内のエビクション対象ブロック
を無効化するためには、バスブリッジは上位バスに対し
てInvalidateを発行する。このInvali
dateの発行は、次の表15に基づいて行う。
【0184】
【表15】 すなわち、本実施形態では、バスブリッジは、自らのブ
リッジキャッシュにおけるエビクション対象のブロック
のステートに基づき、上位バスにInvalidate
を発行するか否かを決定する。なお、この表15及び次
に説明する表16及び17では、ブリッジキャッシュの
ステートの意味が、これまでの表3や4などの場合と異
なる。表3等において、ブリッジキャッシュのステート
といった場合、トランザクションに対するステート、す
なわちトランザクションの要求データがブリッジキャッ
シュに有るか無いか等を意味した。これに対して、表1
5等では、ブリッジキャッシュのステートとは、トラン
ザクションとは無関係に、ブロック自体に格納されてい
るデータのステートを意味する。
リッジキャッシュにおけるエビクション対象のブロック
のステートに基づき、上位バスにInvalidate
を発行するか否かを決定する。なお、この表15及び次
に説明する表16及び17では、ブリッジキャッシュの
ステートの意味が、これまでの表3や4などの場合と異
なる。表3等において、ブリッジキャッシュのステート
といった場合、トランザクションに対するステート、す
なわちトランザクションの要求データがブリッジキャッ
シュに有るか無いか等を意味した。これに対して、表1
5等では、ブリッジキャッシュのステートとは、トラン
ザクションとは無関係に、ブロック自体に格納されてい
るデータのステートを意味する。
【0185】表15の規則に従う場合、バスブリッジ
は、ブリッジキャッシュのステートがM,E,Sの場合
に上位バスにInvalidateを発行する。ブリッ
ジキャッシュのステートがM,E,Sの場合、上位のC
PUキャッシュが当該ブロックを持っている可能性があ
るからである。
は、ブリッジキャッシュのステートがM,E,Sの場合
に上位バスにInvalidateを発行する。ブリッ
ジキャッシュのステートがM,E,Sの場合、上位のC
PUキャッシュが当該ブロックを持っている可能性があ
るからである。
【0186】なお、このInvalidateを受け取
った上位バスの各CPUは、自らのCPUキャッシュを
検索してInvalidate対象のブロックの状態を
調べ、上位バスに対してスヌープ出力を返す。またこの
とき、上位バス上のCPUのなかに当該ブロックをステ
ートMで所有しているものがあれば、そのCPUは当該
ブロックのデータを上位バスに出力する。バスブリッジ
は、CPUから上位バス上に出力されたデータを受け取
り、そのデータにより当該エビクション対象のブロック
を更新する。
った上位バスの各CPUは、自らのCPUキャッシュを
検索してInvalidate対象のブロックの状態を
調べ、上位バスに対してスヌープ出力を返す。またこの
とき、上位バス上のCPUのなかに当該ブロックをステ
ートMで所有しているものがあれば、そのCPUは当該
ブロックのデータを上位バスに出力する。バスブリッジ
は、CPUから上位バス上に出力されたデータを受け取
り、そのデータにより当該エビクション対象のブロック
を更新する。
【0187】なお、表15の規則は、制約1及び制約2
に共通のものである。
に共通のものである。
【0188】[3.2]ブリッジキャッシュのデータの
メインメモリへの書き戻し また、ブリッジキャッシュ内の最新データをメインメモ
リに対して書き戻すためには、バスブリッジは下位バス
にWriteBackを発行する。
メインメモリへの書き戻し また、ブリッジキャッシュ内の最新データをメインメモ
リに対して書き戻すためには、バスブリッジは下位バス
にWriteBackを発行する。
【0189】[3.2.1]制約1を採用する場合 制約1を採用する場合は、バスブリッジから下位バスへ
のWriteBackの発行は、表16の規則に基づい
て行う。
のWriteBackの発行は、表16の規則に基づい
て行う。
【0190】
【表16】 バスブリッジは、ブリッジキャッシュのステートに基づ
いて、下位バスにWriteBackを発行するか否か
を決定する。表16に示すように、バスブリッジは、ブ
リッジキャッシュがステートMのときにのみ、下位バス
に対してWriteBackを発行する。ブリッジキャ
ッシュがステートM以外の場合は、そのブリッジキャッ
シュ自体のもっているデータはメインメモリと同内容で
あり、また制約1(表1)を満足していればその上位の
CPUキャッシュが当該ブロックの最新データを持って
いることはないから、そのような場合にはデータの下記
戻しは不要だからである。
いて、下位バスにWriteBackを発行するか否か
を決定する。表16に示すように、バスブリッジは、ブ
リッジキャッシュがステートMのときにのみ、下位バス
に対してWriteBackを発行する。ブリッジキャ
ッシュがステートM以外の場合は、そのブリッジキャッ
シュ自体のもっているデータはメインメモリと同内容で
あり、また制約1(表1)を満足していればその上位の
CPUキャッシュが当該ブロックの最新データを持って
いることはないから、そのような場合にはデータの下記
戻しは不要だからである。
【0191】したがって、ブリッジキャッシュがMのと
きには、Invalidateによって上位バス上のC
PUからブリッジキャッシュに書き戻された当該ブロッ
クの最新データ、もしくはそのような上位バスからの書
き戻しがなかった場合はブリッジキャッシュ自身が持っ
ているデータが、WriteBackトランザクション
によってメインメモリに書き戻される。一方、ブリッジ
キャッシュがEまたはSのときには、バスブリッジはメ
インメモリへのデータの書き戻しは行わず、単に当該ブ
ロックのステートをIに変更し、上位バスに当該ブロッ
クに対するInvalidateを発行する。ブリッジ
キャッシュのステートがIのときは、エビクション自体
が行われず、従って上位バスに対しても下位バスに対し
てもトランザクションは発行されない。
きには、Invalidateによって上位バス上のC
PUからブリッジキャッシュに書き戻された当該ブロッ
クの最新データ、もしくはそのような上位バスからの書
き戻しがなかった場合はブリッジキャッシュ自身が持っ
ているデータが、WriteBackトランザクション
によってメインメモリに書き戻される。一方、ブリッジ
キャッシュがEまたはSのときには、バスブリッジはメ
インメモリへのデータの書き戻しは行わず、単に当該ブ
ロックのステートをIに変更し、上位バスに当該ブロッ
クに対するInvalidateを発行する。ブリッジ
キャッシュのステートがIのときは、エビクション自体
が行われず、従って上位バスに対しても下位バスに対し
てもトランザクションは発行されない。
【0192】[3.2.2]制約2を採用する場合 制約2を採用する場合、ブリッジキャッシュのステート
がEのときに、そのブリッジキャッシュの上位のCPU
キャッシュがステートMとなっている可能性がある。し
たがって、ブリッジキャッシュのステートがEの場合に
は、バスブリッジは、上位バス上のCPUキャッシュを
調べ、もしステートMのCPUキャッシュがあれば、そ
のCPUキャッシュからステートMのデータを取得し、
これをメインメモリに書き戻す必要がある。上位バス上
のCPUキャッシュがステートMであるか否かは、前記
[3.1]で説明したInvalidateに対する上
位バスからのスヌープ結果から知ることができる。すな
わち、上位バス上のCPUキャッシュがステートMの場
合、そのCPUキャッシュは、バスブリッジからInv
alidateを受け取ると、スヌープ出力としてHI
TMをアサートするので、バスブリッジの上位バス・ス
ヌープ結果はHITMとなる。
がEのときに、そのブリッジキャッシュの上位のCPU
キャッシュがステートMとなっている可能性がある。し
たがって、ブリッジキャッシュのステートがEの場合に
は、バスブリッジは、上位バス上のCPUキャッシュを
調べ、もしステートMのCPUキャッシュがあれば、そ
のCPUキャッシュからステートMのデータを取得し、
これをメインメモリに書き戻す必要がある。上位バス上
のCPUキャッシュがステートMであるか否かは、前記
[3.1]で説明したInvalidateに対する上
位バスからのスヌープ結果から知ることができる。すな
わち、上位バス上のCPUキャッシュがステートMの場
合、そのCPUキャッシュは、バスブリッジからInv
alidateを受け取ると、スヌープ出力としてHI
TMをアサートするので、バスブリッジの上位バス・ス
ヌープ結果はHITMとなる。
【0193】なお、ステートMのCPUキャッシュは、
バスブリッジからInvalidateを受け取ると、
応答としてステートMのデータを上位バス上に出力する
ので、バスブリッジは上位CPUキャッシュからのステ
ートMのデータを自動的に取得することができる。
バスブリッジからInvalidateを受け取ると、
応答としてステートMのデータを上位バス上に出力する
ので、バスブリッジは上位CPUキャッシュからのステ
ートMのデータを自動的に取得することができる。
【0194】したがって、制約2を採用する場合におけ
るバスブリッジから下位バスへのWriteBackの
発行は、ブリッジキャッシュのステート及びInval
idateに対する上位バスのスヌープ結果とに基づ
き、次の表17の規則に従って行う。
るバスブリッジから下位バスへのWriteBackの
発行は、ブリッジキャッシュのステート及びInval
idateに対する上位バスのスヌープ結果とに基づ
き、次の表17の規則に従って行う。
【0195】
【表17】 制約2を採用した場合、ブリッジキャッシュのステート
がE又はMのときに、上位のCPUキャッシュがステー
トMになる可能性がある。したがって、ブリッジキャッ
シュのステートがE又はMの場合に、上位バス・スヌー
プ結果がHITMになる可能性がある。したがって、表
17では、ブリッジキャッシュのステートがE又はM
で、上位バス・スヌープ結果がHITMの場合には、下
位バスに対してWriteBackを発行する。このW
riteBackによってブリッジキャッシュからメイ
ンメモリに書き戻されるデータは、バスブリッジ(及び
ブリッジキャッシュ)が上位のCPUキャッシュから取
得したステートMのデータである。
がE又はMのときに、上位のCPUキャッシュがステー
トMになる可能性がある。したがって、ブリッジキャッ
シュのステートがE又はMの場合に、上位バス・スヌー
プ結果がHITMになる可能性がある。したがって、表
17では、ブリッジキャッシュのステートがE又はM
で、上位バス・スヌープ結果がHITMの場合には、下
位バスに対してWriteBackを発行する。このW
riteBackによってブリッジキャッシュからメイ
ンメモリに書き戻されるデータは、バスブリッジ(及び
ブリッジキャッシュ)が上位のCPUキャッシュから取
得したステートMのデータである。
【0196】また、ブリッジキャッシュのステートがM
の場合であっても、上位のCPUキャッシュがすべてス
テートM以外の場合もある。このような状態は、例え
ば、あるCPUキャッシュのステートMのデータがエビ
クションによりブリッジキャッシュに書き戻された場合
などに起こる。この場合、Invalidateに対す
る上位バスのスヌープ結果はHITM以外となる。この
とき、最新のデータはブリッジキャッシュが所有してい
ることになる。したがって、表17において、ブリッジ
キャッシュのステートがMで、上位バス・スヌープ結果
がHITM以外の場合には、バスブリッジは下位バスに
対してWriteBackを発行する。このとき、ブリ
ッジキャッシュからメインメモリに書き戻されるデータ
は、ブリッジキャッシュが所有しているデータである。
の場合であっても、上位のCPUキャッシュがすべてス
テートM以外の場合もある。このような状態は、例え
ば、あるCPUキャッシュのステートMのデータがエビ
クションによりブリッジキャッシュに書き戻された場合
などに起こる。この場合、Invalidateに対す
る上位バスのスヌープ結果はHITM以外となる。この
とき、最新のデータはブリッジキャッシュが所有してい
ることになる。したがって、表17において、ブリッジ
キャッシュのステートがMで、上位バス・スヌープ結果
がHITM以外の場合には、バスブリッジは下位バスに
対してWriteBackを発行する。このとき、ブリ
ッジキャッシュからメインメモリに書き戻されるデータ
は、ブリッジキャッシュが所有しているデータである。
【0197】なお、ブリッジキャッシュがステートE
で、上位バス・スヌープ結果がHITM以外の場合に
は、上位のCPUキャッシュがステートMである可能性
はないので、この場合にはWriteBackは発行し
ない。
で、上位バス・スヌープ結果がHITM以外の場合に
は、上位のCPUキャッシュがステートMである可能性
はないので、この場合にはWriteBackは発行し
ない。
【0198】以上説明した規則にしたがって上位バスへ
のInvalidateの発行及び下位バスへのWri
teBackの発行を行うことにより、システム全体の
キャッシュ・コンシステンシを維持しつつブリッジキャ
ッシュのエビクションを行うことができる。
のInvalidateの発行及び下位バスへのWri
teBackの発行を行うことにより、システム全体の
キャッシュ・コンシステンシを維持しつつブリッジキャ
ッシュのエビクションを行うことができる。
【0199】[3.3]トランザクション処理とエビク
ション処理との関係 次に、本実施形態におけるブリッジキャッシュのエビク
ションのためのバスブリッジの処理動作と、そのエビク
ションの起因となった上位バス・トランザクションのた
めのバスブリッジの処理動作との関係について説明す
る。
ション処理との関係 次に、本実施形態におけるブリッジキャッシュのエビク
ションのためのバスブリッジの処理動作と、そのエビク
ションの起因となった上位バス・トランザクションのた
めのバスブリッジの処理動作との関係について説明す
る。
【0200】前述したように、上位バス・トランザクシ
ョンのアドレスに対応するブリッジキャッシュのブロッ
クが空きブロックにならない限り、バスブリッジはその
上位バス・トランザクションの処理を進めることはでき
ない。
ョンのアドレスに対応するブリッジキャッシュのブロッ
クが空きブロックにならない限り、バスブリッジはその
上位バス・トランザクションの処理を進めることはでき
ない。
【0201】(a)そこで、まず考えられるのは、エビ
クションを先に行って空きブロックを確保した後、上位
バス・トランザクションについての処理を行うという方
式である。
クションを先に行って空きブロックを確保した後、上位
バス・トランザクションについての処理を行うという方
式である。
【0202】エビクション処理においては、上位CPU
キャッシュの無効化のためバスブリッジからInval
idateを発行する必要があるので、この時点で上位
バスを使用しているトランザクション発行元CPUに上
位バスをいったん解放させる必要がある。このために、
本実施形態では、ブリッジキャッシュのエビクションが
必要な場合には、トランザクション発行元のCPUにト
ランザクションのリトライを指示して、いったん上位バ
スを解放させる。リトライとは、現在発行中のトランザ
クションをいったん終了してバスを解放した後、所定時
間経過後に再び同じトランザクションを発行する処理で
ある。なお、この場合、CPUはリトライ機能を有する
ものを用いる。
キャッシュの無効化のためバスブリッジからInval
idateを発行する必要があるので、この時点で上位
バスを使用しているトランザクション発行元CPUに上
位バスをいったん解放させる必要がある。このために、
本実施形態では、ブリッジキャッシュのエビクションが
必要な場合には、トランザクション発行元のCPUにト
ランザクションのリトライを指示して、いったん上位バ
スを解放させる。リトライとは、現在発行中のトランザ
クションをいったん終了してバスを解放した後、所定時
間経過後に再び同じトランザクションを発行する処理で
ある。なお、この場合、CPUはリトライ機能を有する
ものを用いる。
【0203】このときの処理の流れは以下のようにな
る。まず、上位バス・トランザクションを受け取ったバ
スブリッジは、ブリッジキャッシュをスヌープしてエビ
クションが必要か否かを判定する。この結果、エビクシ
ョンの必要があると判定した場合は、上位バスに対して
リトライ終了信号を出力してトランザクション発行元C
PUにリトライを指示し、エビクション処理(上位CP
UのInvalidate及びメインメモリへのWri
teBack)を行う。一方、バスブリッジからのリト
ライ終了信号を受け取ったトランザクション発行元CP
Uは、いったんトランザクションを終了して上位バスを
解放し、その後所定時間経過後に同じトランザクション
を再発行する。この再発行時には、バスブリッジにおけ
るエビクション処理が終了しており、バスブリッジは当
該トランザクションの処理を進めることができる。
る。まず、上位バス・トランザクションを受け取ったバ
スブリッジは、ブリッジキャッシュをスヌープしてエビ
クションが必要か否かを判定する。この結果、エビクシ
ョンの必要があると判定した場合は、上位バスに対して
リトライ終了信号を出力してトランザクション発行元C
PUにリトライを指示し、エビクション処理(上位CP
UのInvalidate及びメインメモリへのWri
teBack)を行う。一方、バスブリッジからのリト
ライ終了信号を受け取ったトランザクション発行元CP
Uは、いったんトランザクションを終了して上位バスを
解放し、その後所定時間経過後に同じトランザクション
を再発行する。この再発行時には、バスブリッジにおけ
るエビクション処理が終了しており、バスブリッジは当
該トランザクションの処理を進めることができる。
【0204】(b)以上説明したようなリトライを行う
処理では、CPUが最初にトランザクションを発行して
から、最終的に当該トランザクションが完結するまでの
時間が長くなってしまう。また、ブリッジキャッシュの
エビクションが完了した後CPUからトランザクション
が再発行されるまでの間に、エビクションにより設けた
空きブロックが他のCPUからのトランザクションによ
り先に使用されてしまう可能性もあり、このような場合
は再びエビクションを行わなければならなくなる場合が
ある。
処理では、CPUが最初にトランザクションを発行して
から、最終的に当該トランザクションが完結するまでの
時間が長くなってしまう。また、ブリッジキャッシュの
エビクションが完了した後CPUからトランザクション
が再発行されるまでの間に、エビクションにより設けた
空きブロックが他のCPUからのトランザクションによ
り先に使用されてしまう可能性もあり、このような場合
は再びエビクションを行わなければならなくなる場合が
ある。
【0205】このような場合に対処するための方法とし
ては、バスブリッジ内に特別のバッファを設け、エビク
ション対象のブロックをそのバッファに一時的に退避し
てブリッジキャッシュを空け、先にCPUからのトラン
ザクションの処理を行ったのちにそのバッファに退避し
たブロックのデータを用いてエビクション処理を行うと
いう方式がある。
ては、バスブリッジ内に特別のバッファを設け、エビク
ション対象のブロックをそのバッファに一時的に退避し
てブリッジキャッシュを空け、先にCPUからのトラン
ザクションの処理を行ったのちにそのバッファに退避し
たブロックのデータを用いてエビクション処理を行うと
いう方式がある。
【0206】図3は、この方式におけるバスブリッジの
構成を説明するための概略構成図である。図3におい
て、上位バス20と下位バス40との間のトランザクシ
ョンの制御を行うバスブリッジ30は、これまで説明し
たバスブリッジ基本動作を実行するバスブリッジ制御部
60と、エビクション対象のキャッシュブロックを一時
的に格納するエビクションバッファ62とを含む。エビ
クションバッファ62は、退避ブロックのデータ内容を
格納するデータバッファ部66と、退避ブロックのアド
レスを格納するアドレスレジスタ部64とを有する。な
お、エビクションバッファ62は、数ブロック分のデー
タ及びアドレスを記憶することができ、複数のトランザ
クションの並行処理に対応可能となっている。エビクシ
ョンバッファ62は必要な容量が小さいのでサイズも小
さく、バスブリッジ制御部60と同一のチップの上に作
り込むことができる(ちなみに、ブリッジキャッシュ3
1はMLIを満たすためにサイズが大きくなるため、バ
スブリッジ制御部60と同一のチップ上に形成すること
は困難である)。
構成を説明するための概略構成図である。図3におい
て、上位バス20と下位バス40との間のトランザクシ
ョンの制御を行うバスブリッジ30は、これまで説明し
たバスブリッジ基本動作を実行するバスブリッジ制御部
60と、エビクション対象のキャッシュブロックを一時
的に格納するエビクションバッファ62とを含む。エビ
クションバッファ62は、退避ブロックのデータ内容を
格納するデータバッファ部66と、退避ブロックのアド
レスを格納するアドレスレジスタ部64とを有する。な
お、エビクションバッファ62は、数ブロック分のデー
タ及びアドレスを記憶することができ、複数のトランザ
クションの並行処理に対応可能となっている。エビクシ
ョンバッファ62は必要な容量が小さいのでサイズも小
さく、バスブリッジ制御部60と同一のチップの上に作
り込むことができる(ちなみに、ブリッジキャッシュ3
1はMLIを満たすためにサイズが大きくなるため、バ
スブリッジ制御部60と同一のチップ上に形成すること
は困難である)。
【0207】図3において、上位バス20に発行された
トランザクションをバスブリッジ30が受け取った場
合、バスブリッジ制御部60は、前述のようにブリッジ
キャッシュ31をスヌープしてトランザクションをスプ
リットすべきか否かなどの判定を行う。このとき、バス
ブリッジ制御部60は、トランザクションのアドレスに
対応するブリッジキャッシュ31内のブロックの使用状
況を検出し、検出の結果当該ブロックが空いていないこ
とが分かると、当該ブロックのデータをブリッジキャッ
シュ31から読み出してエビクションバッファ62のデ
ータバッファ部66に格納し、当該ブロックのアドレス
をアドレスレジスタに登録する。これ同時に、バスブリ
ッジ制御部60は、ブリッジキャッシュ31の当該ブロ
ックをステートIに変更して使用可能な状態とする。
トランザクションをバスブリッジ30が受け取った場
合、バスブリッジ制御部60は、前述のようにブリッジ
キャッシュ31をスヌープしてトランザクションをスプ
リットすべきか否かなどの判定を行う。このとき、バス
ブリッジ制御部60は、トランザクションのアドレスに
対応するブリッジキャッシュ31内のブロックの使用状
況を検出し、検出の結果当該ブロックが空いていないこ
とが分かると、当該ブロックのデータをブリッジキャッ
シュ31から読み出してエビクションバッファ62のデ
ータバッファ部66に格納し、当該ブロックのアドレス
をアドレスレジスタに登録する。これ同時に、バスブリ
ッジ制御部60は、ブリッジキャッシュ31の当該ブロ
ックをステートIに変更して使用可能な状態とする。
【0208】このような処理の結果、上位バス・トラン
ザクションの処理が可能となるので、バスブリッジ制御
部60は、前記[1]及び[2]節で説明した一連の処
理を行って、そのトランザクションを完結させる。すな
わち、バスブリッジ制御部60は、トランザクションの
スプリットを行って下位バス40にトランザクションを
発行し、この結果下位バス40の他のエージェント(メ
インメモリ又はバスブリッジ)から得たデータを、スプ
リット応答トランザクションとして上位バス20に出力
する。
ザクションの処理が可能となるので、バスブリッジ制御
部60は、前記[1]及び[2]節で説明した一連の処
理を行って、そのトランザクションを完結させる。すな
わち、バスブリッジ制御部60は、トランザクションの
スプリットを行って下位バス40にトランザクションを
発行し、この結果下位バス40の他のエージェント(メ
インメモリ又はバスブリッジ)から得たデータを、スプ
リット応答トランザクションとして上位バス20に出力
する。
【0209】そして、この後、バスブリッジ制御部60
は、エビクションバッファ62に一時退避したブロック
に対するエビクション処理を行う。すなわち、バスブリ
ッジ制御部60は、退避ブロックに対するInvali
dateトランザクションを上位バス20に発行してC
PUキャッシュとブリッジキャッシュとのコンシステン
シの維持を図り、当該退避ブロックがMステートである
場合には下位バス40にWriteBackトランザク
ションを発行し、メインメモリに当該退避ブロックを書
き戻す。なお、この場合において、バスブリッジ制御部
60は、退避ブロックに対するInvalidateに
対して、上位バス上のCPUからMステートのブロック
が書き戻されてきた場合は、そのブロックのアドレスを
判別して、この書き戻されてきたブロックをブリッジキ
ャッシュ31ではなくエビクションバッファ62に書き
込む。この場合、上位バスから書き戻されてきたデータ
は、最初にブリッジキャッシュ31から退避したデータ
の上に上書きされる。したがって、エビクションバッフ
ァ62のブロックは、メインメモリに書き戻すときに
は、必ず最新のデータとなっている。
は、エビクションバッファ62に一時退避したブロック
に対するエビクション処理を行う。すなわち、バスブリ
ッジ制御部60は、退避ブロックに対するInvali
dateトランザクションを上位バス20に発行してC
PUキャッシュとブリッジキャッシュとのコンシステン
シの維持を図り、当該退避ブロックがMステートである
場合には下位バス40にWriteBackトランザク
ションを発行し、メインメモリに当該退避ブロックを書
き戻す。なお、この場合において、バスブリッジ制御部
60は、退避ブロックに対するInvalidateに
対して、上位バス上のCPUからMステートのブロック
が書き戻されてきた場合は、そのブロックのアドレスを
判別して、この書き戻されてきたブロックをブリッジキ
ャッシュ31ではなくエビクションバッファ62に書き
込む。この場合、上位バスから書き戻されてきたデータ
は、最初にブリッジキャッシュ31から退避したデータ
の上に上書きされる。したがって、エビクションバッフ
ァ62のブロックは、メインメモリに書き戻すときに
は、必ず最新のデータとなっている。
【0210】このように、図3の構成によれば、トラン
ザクションに対する処理をエビクションに先行して行う
ことができるため、CPUが最初にトランザクションを
発行してからそのトランザクションが完結するまでの時
間が大幅に短縮される。
ザクションに対する処理をエビクションに先行して行う
ことができるため、CPUが最初にトランザクションを
発行してからそのトランザクションが完結するまでの時
間が大幅に短縮される。
【0211】なお、以上の説明では、図3の構成におけ
る実質的なエビクションの処理はトランザクションの処
理が完結した後に行うとしていたが、この順序は必須の
ものではない。例えば、バスにおいてパイプライン処理
が可能である場合には、上位バスが使用されていなけれ
ばInvalidateを発行することができ、また上
位バスのInvalidateが完了すればいつでも下
位バスにWriteBackを発行することができる。
したがって、この場合には、トランザクションに対する
処理が完結する前にInvalidateやWrite
Backを発行することも可能である。
る実質的なエビクションの処理はトランザクションの処
理が完結した後に行うとしていたが、この順序は必須の
ものではない。例えば、バスにおいてパイプライン処理
が可能である場合には、上位バスが使用されていなけれ
ばInvalidateを発行することができ、また上
位バスのInvalidateが完了すればいつでも下
位バスにWriteBackを発行することができる。
したがって、この場合には、トランザクションに対する
処理が完結する前にInvalidateやWrite
Backを発行することも可能である。
【0212】また、図3の構成では、エビクション対象
のブロックの退避場所としてエビクションバッファ62
を用いたが、ブロック退避場所としては、図4に示すよ
うな補助キャッシュ68を用いることもできる。図4に
おいて、補助キャッシュ68は、数ブロックを格納する
ことができる小容量のフルアソシアティブ・キャッシュ
である。図3のエビクションバッファ62と図4の補助
キャッシュ68との違いは、エビクションバッファ62
に格納されたブロックはバスブリッジ制御部60から読
みだすことはできないが、補助キャッシュ68に格納さ
れたブロックはバスブリッジ制御部60から読み出すこ
とができるという点である。したがって、バスブリッジ
制御部60が退避中のブロックを要求するトランザクシ
ョンを上位バスから受け取った場合、図3の構成ではバ
スブリッジ制御部60はそのトランザクションに対する
応答を行うことができないが、図4の構成によれば、補
助キャッシュ68から当該ブロックを読み出して応答す
ることができる。ただし、補助キャッシュ68の制御は
エビクションバッファ62の制御よりも複雑となるた
め、図4のバスブリッジ制御部60の回路構成は、図3
のそれよりも複雑かつ大規模になる。
のブロックの退避場所としてエビクションバッファ62
を用いたが、ブロック退避場所としては、図4に示すよ
うな補助キャッシュ68を用いることもできる。図4に
おいて、補助キャッシュ68は、数ブロックを格納する
ことができる小容量のフルアソシアティブ・キャッシュ
である。図3のエビクションバッファ62と図4の補助
キャッシュ68との違いは、エビクションバッファ62
に格納されたブロックはバスブリッジ制御部60から読
みだすことはできないが、補助キャッシュ68に格納さ
れたブロックはバスブリッジ制御部60から読み出すこ
とができるという点である。したがって、バスブリッジ
制御部60が退避中のブロックを要求するトランザクシ
ョンを上位バスから受け取った場合、図3の構成ではバ
スブリッジ制御部60はそのトランザクションに対する
応答を行うことができないが、図4の構成によれば、補
助キャッシュ68から当該ブロックを読み出して応答す
ることができる。ただし、補助キャッシュ68の制御は
エビクションバッファ62の制御よりも複雑となるた
め、図4のバスブリッジ制御部60の回路構成は、図3
のそれよりも複雑かつ大規模になる。
【0213】[4]リトライ処理 前記[3.3]において、ブリッジキャッシュのエビク
ションが必要な場合におけるトランザクションのリトラ
イについて説明したが、ここではその他にリトライを行
う場合についての構成について説明する。
ションが必要な場合におけるトランザクションのリトラ
イについて説明したが、ここではその他にリトライを行
う場合についての構成について説明する。
【0214】[4.1]スプリット中に上位バスに別の
トランザクションが発行された場合 バスブリッジが上位バス・トランザクションをスプリッ
トし、スプリットにより下位バスに発行したトランザク
ションに対する下位バスからの応答がバスブリッジに来
る前に、別のトランザクションが上位バスに発行された
場合、先に発行されたトランザクションが使用する予定
のキャッシュブロックが後に発行されたトランザクショ
ンによって使用されてしまい、前に発行されたトランザ
クションに対する下位バスからの応答をブリッジキャッ
シュに格納できなくなる可能性がある。
トランザクションが発行された場合 バスブリッジが上位バス・トランザクションをスプリッ
トし、スプリットにより下位バスに発行したトランザク
ションに対する下位バスからの応答がバスブリッジに来
る前に、別のトランザクションが上位バスに発行された
場合、先に発行されたトランザクションが使用する予定
のキャッシュブロックが後に発行されたトランザクショ
ンによって使用されてしまい、前に発行されたトランザ
クションに対する下位バスからの応答をブリッジキャッ
シュに格納できなくなる可能性がある。
【0215】このような問題を解消するためにまず考え
られるのは、バスブリッジにスプリット中か否かを示す
フラグを設け、上位バス・トランザクションを受け取っ
たときにフラグがスプリット中を示していれば、そのト
ランザクションのスプリットを認めないようにすること
である。すなわち、バスブリッジは、トランザクション
を受け取ると、フラグを調べるとともにブリッジキャッ
シュをスヌープし、スプリット中かつ受け取ったトラン
ザクションのスプリットが必要と分かった場合に、トラ
ンザクションをリトライさせる。このようにすれば、ス
プリット中のトランザクションのために確保されたキャ
ッシュブロックが、後から発行されたトランザクション
によって使用されるのを防ぐことができる。
られるのは、バスブリッジにスプリット中か否かを示す
フラグを設け、上位バス・トランザクションを受け取っ
たときにフラグがスプリット中を示していれば、そのト
ランザクションのスプリットを認めないようにすること
である。すなわち、バスブリッジは、トランザクション
を受け取ると、フラグを調べるとともにブリッジキャッ
シュをスヌープし、スプリット中かつ受け取ったトラン
ザクションのスプリットが必要と分かった場合に、トラ
ンザクションをリトライさせる。このようにすれば、ス
プリット中のトランザクションのために確保されたキャ
ッシュブロックが、後から発行されたトランザクション
によって使用されるのを防ぐことができる。
【0216】しかしながら、この方法では、他のトラン
ザクションのスプリット中に発行されたトランザクショ
ンは、必ずリトライするので無駄が多い。そこで、リト
ライを効率的に行う方法として、本実施形態では次の2
つの方法を採用する。
ザクションのスプリット中に発行されたトランザクショ
ンは、必ずリトライするので無駄が多い。そこで、リト
ライを効率的に行う方法として、本実施形態では次の2
つの方法を採用する。
【0217】第1の方法は、スプリット中にトランザク
ションが発行された場合、そのトランザクションの種類
から、そのトランザクションをスプリットしたときにブ
リッジキャッシュのブロックを使用するかどうかを判定
し、ブロックを使用する場合にのみリトライを行うとい
う方法である。例えば、Readトランザクションは、
スプリットした場合に、下位バスからの応答データを受
け入れるためブロックを使用するが、Invalida
teトランザクションは、スプリットしたとしてもブロ
ックを使用しない。このようなトランザクションの種類
によってリトライを行うか否かを判別することにより、
無駄なリトライを減らすことができる。
ションが発行された場合、そのトランザクションの種類
から、そのトランザクションをスプリットしたときにブ
リッジキャッシュのブロックを使用するかどうかを判定
し、ブロックを使用する場合にのみリトライを行うとい
う方法である。例えば、Readトランザクションは、
スプリットした場合に、下位バスからの応答データを受
け入れるためブロックを使用するが、Invalida
teトランザクションは、スプリットしたとしてもブロ
ックを使用しない。このようなトランザクションの種類
によってリトライを行うか否かを判別することにより、
無駄なリトライを減らすことができる。
【0218】この構成では、バスブリッジは、まず上位
バス・トランザクションを受け取ると、フラグを調べて
現在他のトランザクションがスプリット中か否かを判定
する。そして、スプリット中の場合は、上位バスから受
け取ったトランザクションの種類を検出して、その種類
がブロックを使用するものか否かを判定する。この結
果、ブロックを使用するトランザクションである場合に
は、そのトランザクションのスプリットを認めない。す
なわち、この場合、ブリッジキャッシュのスヌープによ
りそのトランザクションのスプリットが必要と判定され
ると、バスブリッジから当該トランザクションについて
リトライ終了信号を返す。
バス・トランザクションを受け取ると、フラグを調べて
現在他のトランザクションがスプリット中か否かを判定
する。そして、スプリット中の場合は、上位バスから受
け取ったトランザクションの種類を検出して、その種類
がブロックを使用するものか否かを判定する。この結
果、ブロックを使用するトランザクションである場合に
は、そのトランザクションのスプリットを認めない。す
なわち、この場合、ブリッジキャッシュのスヌープによ
りそのトランザクションのスプリットが必要と判定され
ると、バスブリッジから当該トランザクションについて
リトライ終了信号を返す。
【0219】この構成によれば、キャッシュブロックを
使用することのないトランザクションは、リトライせず
にそのまま実行することができる。
使用することのないトランザクションは、リトライせず
にそのまま実行することができる。
【0220】また、第2の方法は、スプリット中のトラ
ンザクションの使用予定ブロックのアドレスをバスブリ
ッジで管理し、使用予定ブロックに対するトランザクシ
ョンのみリトライするという方法である。すなわち、こ
の方法では、スプリット中に新たに発行されたトランザ
クションが、現在スプリット中のトランザクションが使
用する予定のブロックを使用するか否かを判定し、使用
すると判定される場合には新たに受け取ったトランザク
ションに対してリトライを指示する。
ンザクションの使用予定ブロックのアドレスをバスブリ
ッジで管理し、使用予定ブロックに対するトランザクシ
ョンのみリトライするという方法である。すなわち、こ
の方法では、スプリット中に新たに発行されたトランザ
クションが、現在スプリット中のトランザクションが使
用する予定のブロックを使用するか否かを判定し、使用
すると判定される場合には新たに受け取ったトランザク
ションに対してリトライを指示する。
【0221】図5は、このようなリトライ判定機能を有
するバスブリッジの概略構成を示した図である。図5に
おいて、図3と同一の部分には同一の符号を付してその
説明を省略する。
するバスブリッジの概略構成を示した図である。図5に
おいて、図3と同一の部分には同一の符号を付してその
説明を省略する。
【0222】図5においては、バスブリッジ30内に現
在スプリット中のトランザクションが使用するキャッシ
ュブロックのアドレス情報を格納するスプリット情報レ
ジスタ72が設けられている。
在スプリット中のトランザクションが使用するキャッシ
ュブロックのアドレス情報を格納するスプリット情報レ
ジスタ72が設けられている。
【0223】まず、図5の構成におけるスプリット情報
レジスタ72へのアドレス情報の登録動作について説明
する。この構成において、バスブリッジ制御部60は、
上位バス20から受け取ったトランザクションをスプリ
ットすると決定した場合、当該トランザクションのアド
レスに対応するキャッシュブロックのアドレス情報を求
め、スプリット情報レジスタ72に登録する。スプリッ
ト情報レジスタ72に登録されるアドレス情報は、例え
ばブリッジキャッシュ31がセットアソシアティブ方式
である場合は、該当ブロックのインデックス及びウエイ
番号である。そして、スプリットにより下位バス40に
発行したトランザクションに対する応答が戻り、バスブ
リッジ制御部60から上位バス20に対してスプリット
応答トランザクションを発行した時点で、当該トランザ
クションに対するスプリット情報レジスタ72の登録情
報は消去される。
レジスタ72へのアドレス情報の登録動作について説明
する。この構成において、バスブリッジ制御部60は、
上位バス20から受け取ったトランザクションをスプリ
ットすると決定した場合、当該トランザクションのアド
レスに対応するキャッシュブロックのアドレス情報を求
め、スプリット情報レジスタ72に登録する。スプリッ
ト情報レジスタ72に登録されるアドレス情報は、例え
ばブリッジキャッシュ31がセットアソシアティブ方式
である場合は、該当ブロックのインデックス及びウエイ
番号である。そして、スプリットにより下位バス40に
発行したトランザクションに対する応答が戻り、バスブ
リッジ制御部60から上位バス20に対してスプリット
応答トランザクションを発行した時点で、当該トランザ
クションに対するスプリット情報レジスタ72の登録情
報は消去される。
【0224】したがって、スプリット情報レジスタ72
には、現在スプリット中のトランザクションが使用する
予定のブロックのアドレス情報が格納されていることに
なる。なお、スプリット情報レジスタ72は複数のアド
レス情報が登録可能であり、同時に複数のトランザクシ
ョンのスプリットに対応可能となっている。
には、現在スプリット中のトランザクションが使用する
予定のブロックのアドレス情報が格納されていることに
なる。なお、スプリット情報レジスタ72は複数のアド
レス情報が登録可能であり、同時に複数のトランザクシ
ョンのスプリットに対応可能となっている。
【0225】次に、スプリット情報レジスタ72を用い
た上位バス・トランザクションのリトライ判定について
説明する。
た上位バス・トランザクションのリトライ判定について
説明する。
【0226】上位バス・トランザクションを受け取った
バスブリッジ制御部60は、そのトランザクションのア
ドレスから、対応するキャッシュブロックのアドレス情
報(例えば、インデックス及びウエイ番号)を求め、こ
のアドレス情報をスプリット情報レジスタ72に登録さ
れているアドレス情報と比較する。そして、この比較の
結果、両者が一致した場合には、バスブリッジ制御部6
0は、上位バス・トランザクションに対する応答として
リトライ終了信号を返す。一方、比較の結果両者が一致
しない場合には、バスブリッジ制御部60は、通常のト
ランザクション処理を行う。
バスブリッジ制御部60は、そのトランザクションのア
ドレスから、対応するキャッシュブロックのアドレス情
報(例えば、インデックス及びウエイ番号)を求め、こ
のアドレス情報をスプリット情報レジスタ72に登録さ
れているアドレス情報と比較する。そして、この比較の
結果、両者が一致した場合には、バスブリッジ制御部6
0は、上位バス・トランザクションに対する応答として
リトライ終了信号を返す。一方、比較の結果両者が一致
しない場合には、バスブリッジ制御部60は、通常のト
ランザクション処理を行う。
【0227】このように、図5に示すバスブリッジ30
によれば、スプリット中のトランザクションが使用する
予定のキャッシュブロックに対するトランザクション
は、リトライせずにそのまま実行することができる。
によれば、スプリット中のトランザクションが使用する
予定のキャッシュブロックに対するトランザクション
は、リトライせずにそのまま実行することができる。
【0228】なお、スプリット情報レジスタ72にスプ
リットしたトランザクションのアドレス情報をすべて登
録するかわりに、スプリットしたトランザクションのう
ちブリッジキャッシュを使用するトランザクションを選
別し、このようなトランザクションのアドレス情報のみ
を登録する構成とすれば、無駄なリトライをさらに減ら
すことができる。なお、ブリッジキャッシュを使用する
トランザクションは、トランザクションの種類から判別
する。
リットしたトランザクションのアドレス情報をすべて登
録するかわりに、スプリットしたトランザクションのう
ちブリッジキャッシュを使用するトランザクションを選
別し、このようなトランザクションのアドレス情報のみ
を登録する構成とすれば、無駄なリトライをさらに減ら
すことができる。なお、ブリッジキャッシュを使用する
トランザクションは、トランザクションの種類から判別
する。
【0229】また、前記第1及び第2の方法を併用すれ
ばリトライのさらなる効率化を達成することができる。
ばリトライのさらなる効率化を達成することができる。
【0230】[4.2]エビクションバッファに退避中
のデータに対するトランザクションが発行された場合 この状況は、前記[3.3](b)(図3参照)で説明
したエビクションバッファを用いた構成において生じ
る。すなわち、エビクション対象のブロックをエビクシ
ョンバッファに退避し、まだエビクションの処理が完了
しないうちに、退避したデータに対するトランザクショ
ンが上位バスに発行された場合、エビクションバッファ
に格納されたデータにはアクセス不可能なので、そのよ
うな退避データに対するトランザクションはリトライす
る必要がある。この場合、エビクションバッファにデー
タを退避させている間に上位バスに発行されたトランザ
クションをすべてリトライさせるという方法もあるが、
これではリトライが多くなり処理効率が向上しない。
のデータに対するトランザクションが発行された場合 この状況は、前記[3.3](b)(図3参照)で説明
したエビクションバッファを用いた構成において生じ
る。すなわち、エビクション対象のブロックをエビクシ
ョンバッファに退避し、まだエビクションの処理が完了
しないうちに、退避したデータに対するトランザクショ
ンが上位バスに発行された場合、エビクションバッファ
に格納されたデータにはアクセス不可能なので、そのよ
うな退避データに対するトランザクションはリトライす
る必要がある。この場合、エビクションバッファにデー
タを退避させている間に上位バスに発行されたトランザ
クションをすべてリトライさせるという方法もあるが、
これではリトライが多くなり処理効率が向上しない。
【0231】そこで、本実施形態では、このような場合
のリトライの発行を効率化するために、バスブリッジ
に、エビクションバッファ内のデータのアドレスとトラ
ンザクションのアドレスとを比較する手段を設ける。そ
して、比較の結果、トランザクションのアドレスと一致
するアドレスのデータがエビクションバッファに格納さ
れているとわかった場合には、そのトランザクションを
リトライさせる。
のリトライの発行を効率化するために、バスブリッジ
に、エビクションバッファ内のデータのアドレスとトラ
ンザクションのアドレスとを比較する手段を設ける。そ
して、比較の結果、トランザクションのアドレスと一致
するアドレスのデータがエビクションバッファに格納さ
れているとわかった場合には、そのトランザクションを
リトライさせる。
【0232】図3を参照して、この構成におけるバスブ
リッジの動作を説明する。上位バス20にトランザクシ
ョンが発行された場合、バスブリッジ制御部60は、そ
のトランザクションのアドレスと、エビクションバッフ
ァ62のアドレスレジスタ64に登録されているアドレ
スとを比較する(このアドレスの比較は、ブロック単位
の比較、すなわちタグ、インデックスまでの比較であ
る)。この結果、トランザクションのアドレスと同一の
アドレスがアドレスレジスタに登録されていた場合に
は、バスブリッジ制御部60は上位バス20に対してリ
トライ終了信号を出力する。
リッジの動作を説明する。上位バス20にトランザクシ
ョンが発行された場合、バスブリッジ制御部60は、そ
のトランザクションのアドレスと、エビクションバッフ
ァ62のアドレスレジスタ64に登録されているアドレ
スとを比較する(このアドレスの比較は、ブロック単位
の比較、すなわちタグ、インデックスまでの比較であ
る)。この結果、トランザクションのアドレスと同一の
アドレスがアドレスレジスタに登録されていた場合に
は、バスブリッジ制御部60は上位バス20に対してリ
トライ終了信号を出力する。
【0233】この構成によれば、エビクションバッファ
を採用した構成において、そのエビクションバッファに
退避中のデータに対するトランザクションのリトライ処
理を効率的に行うことができる。
を採用した構成において、そのエビクションバッファに
退避中のデータに対するトランザクションのリトライ処
理を効率的に行うことができる。
【0234】[4.3]下位バスからのリトライ指示に
対するバスブリッジの対応 リトライの指示は、下位バスのI/O装置などからも発
せられる。このような下位バスからのリトライ指示をバ
スブリッジが受け取った場合、バスブリッジが所定時間
後にトランザクションの再発行を行うという構成も考え
られるが、この場合、バスブリッジの構成が複雑となっ
てしまう。
対するバスブリッジの対応 リトライの指示は、下位バスのI/O装置などからも発
せられる。このような下位バスからのリトライ指示をバ
スブリッジが受け取った場合、バスブリッジが所定時間
後にトランザクションの再発行を行うという構成も考え
られるが、この場合、バスブリッジの構成が複雑となっ
てしまう。
【0235】そこで、バスブリッジの構成を簡単化する
ためには、バスブリッジは下位バスからリトライ終了信
号を受け取った場合に、そのリトライ終了信号を上位バ
スに転送する構成を採用することもできる。すなわち、
バスブリッジは、下位バスからリトライ終了信号を受け
取った場合、スプリット応答トランザクションを生成し
て上位バスに発行し、そのスプリット応答トランザクシ
ョンにてリトライ終了信号を出力する。そして、そのリ
トライ終了信号を受け取ったトランザクション発行元C
PUが、当該トランザクションのリトライを行う。
ためには、バスブリッジは下位バスからリトライ終了信
号を受け取った場合に、そのリトライ終了信号を上位バ
スに転送する構成を採用することもできる。すなわち、
バスブリッジは、下位バスからリトライ終了信号を受け
取った場合、スプリット応答トランザクションを生成し
て上位バスに発行し、そのスプリット応答トランザクシ
ョンにてリトライ終了信号を出力する。そして、そのリ
トライ終了信号を受け取ったトランザクション発行元C
PUが、当該トランザクションのリトライを行う。
【0236】この構成によれば、下位バスからのリトラ
イ指示に対するバスブリッジの処理が簡単化される。
イ指示に対するバスブリッジの処理が簡単化される。
【0237】以上、本実施形態の階層バスシステムの動
作について説明した。以下では、本実施形態におけるバ
スブリッジの構成及びその動作について説明する。
作について説明した。以下では、本実施形態におけるバ
スブリッジの構成及びその動作について説明する。
【0238】図6は、本実施形態におけるバスブリッジ
及びブリッジキャッシュの構成を示すブロック図であ
る。
及びブリッジキャッシュの構成を示すブロック図であ
る。
【0239】図6において、バスブリッジ300は、信
号線500〜510によって上位バス20と信号のやり
取りを行い、信号線512〜522によって下位バス4
0と信号のやり取りを行う。
号線500〜510によって上位バス20と信号のやり
取りを行い、信号線512〜522によって下位バス4
0と信号のやり取りを行う。
【0240】また、バスブリッジ300のブリッジキャ
ッシュは、図6においては、タグRAM402及びキャ
ッシュRAM404から構成されている。キャッシュR
AM404は、データをブロック単位で格納する。メモ
リから読み込まれたデータは、そのメモリアドレスのイ
ンデックス部に対応するアドレスのブロックに格納され
る。一方、タグRAM402は、キャッシュRAM40
4の各ブロックごとにメモリアドレスのタグ部を格納し
ており、キャッシュRAM404に各ブロックに格納さ
れているデータがどのメモリアドレスのデータであるか
を示している。また、タグRAM402は、各ブロック
ごとに、そのブロックに格納されているデータのMES
Iステートを保持している。
ッシュは、図6においては、タグRAM402及びキャ
ッシュRAM404から構成されている。キャッシュR
AM404は、データをブロック単位で格納する。メモ
リから読み込まれたデータは、そのメモリアドレスのイ
ンデックス部に対応するアドレスのブロックに格納され
る。一方、タグRAM402は、キャッシュRAM40
4の各ブロックごとにメモリアドレスのタグ部を格納し
ており、キャッシュRAM404に各ブロックに格納さ
れているデータがどのメモリアドレスのデータであるか
を示している。また、タグRAM402は、各ブロック
ごとに、そのブロックに格納されているデータのMES
Iステートを保持している。
【0241】次に、図7に示す構成の階層バスシステム
を例にとって、図6に示したバスブリッジ及びブリッジ
キャッシュの動作例を説明する。ここで、図7のバスブ
リッジ#0及び#1と、ブリッジキャッシュ#0及び#
1とは、それぞれ図6に示す構成を有しているものとす
る。また、この例においては、ブリッジキャッシュはダ
イレクトマッピング方式のキャッシュであるとして説明
する。
を例にとって、図6に示したバスブリッジ及びブリッジ
キャッシュの動作例を説明する。ここで、図7のバスブ
リッジ#0及び#1と、ブリッジキャッシュ#0及び#
1とは、それぞれ図6に示す構成を有しているものとす
る。また、この例においては、ブリッジキャッシュはダ
イレクトマッピング方式のキャッシュであるとして説明
する。
【0242】この動作例の初期状態を以下に示す。
【0243】 CPU#0: アドレスAのデータを持っていない(ア
ドレスAに対応するCPUキャッシュのキャッシュブロ
ックは無効化されている) ブリッジキャッシュ#0: アドレスAのデータを持っ
ていない。アドレスAに対応するブロックにはアドレス
BのデータがステートMで格納されている CPU#1: アドレスBのデータをステートMで持っ
ている ブリッジキャッシュ#1: アドレスAのデータをステ
ートMで持っている CPU#3: アドレスAのデータをステートMで持っ
ている 以下、このような初期状態から、CPU#0がアドレス
Aをリードするリクエストを発した場合のシステムの動
作について説明する。
ドレスAに対応するCPUキャッシュのキャッシュブロ
ックは無効化されている) ブリッジキャッシュ#0: アドレスAのデータを持っ
ていない。アドレスAに対応するブロックにはアドレス
BのデータがステートMで格納されている CPU#1: アドレスBのデータをステートMで持っ
ている ブリッジキャッシュ#1: アドレスAのデータをステ
ートMで持っている CPU#3: アドレスAのデータをステートMで持っ
ている 以下、このような初期状態から、CPU#0がアドレス
Aをリードするリクエストを発した場合のシステムの動
作について説明する。
【0244】(1)CPU#0は、自らのキャッシュを
検索するもののアドレスAのデータが存在しないので、
上位バス#0にReadトランザクション(アドレス
A)を発行する。
検索するもののアドレスAのデータが存在しないので、
上位バス#0にReadトランザクション(アドレス
A)を発行する。
【0245】(2)バスブリッジ#0は、上位バス#0
から信号線504を経由してトランザクションの種類
(Read)及びアドレス(A)を得る。これらの情報
は、上位トランザクションバッファ312、タグリード
回路318、下位バス出力判定回路314に入力され
る。すなわち、(2.1) 上位トランザクションバッファ3
12は、入力された上位バス・トランザクションの種
類、アドレス及びスプリットIDなど上位バストランザ
クションに関する諸情報を格納する。なお、スプリット
IDとは、バス上のトランザクションを識別するための
IDであり、トランザクションを発したエージェント
(CPU、バスブリッジ等)のIDと当該エージェント
内でのトランザクションのIDを含んでいる。
から信号線504を経由してトランザクションの種類
(Read)及びアドレス(A)を得る。これらの情報
は、上位トランザクションバッファ312、タグリード
回路318、下位バス出力判定回路314に入力され
る。すなわち、(2.1) 上位トランザクションバッファ3
12は、入力された上位バス・トランザクションの種
類、アドレス及びスプリットIDなど上位バストランザ
クションに関する諸情報を格納する。なお、スプリット
IDとは、バス上のトランザクションを識別するための
IDであり、トランザクションを発したエージェント
(CPU、バスブリッジ等)のIDと当該エージェント
内でのトランザクションのIDを含んでいる。
【0246】すなわち、この動作例では、トランザクシ
ョン種類“Read”、アドレス“A”及びReadに
割り当てられたスプリットIDなどの情報が上位トラン
ザクションバッファ312に格納される。
ョン種類“Read”、アドレス“A”及びReadに
割り当てられたスプリットIDなどの情報が上位トラン
ザクションバッファ312に格納される。
【0247】(2.2) タグリード回路318は、入力され
たアドレスによって指定されるデータがブリッジキャッ
シュ内に存在するか否かを調べる。このとき、まず、タ
グリード回路318は、入力されたアドレスからインデ
ックスを抽出し、セレクタ350を介してタグRAM4
02に入力する。タグRAM402は、入力されたイン
デックスに対応するブロックのタグ情報及びステートを
タグリード回路318に返す。
たアドレスによって指定されるデータがブリッジキャッ
シュ内に存在するか否かを調べる。このとき、まず、タ
グリード回路318は、入力されたアドレスからインデ
ックスを抽出し、セレクタ350を介してタグRAM4
02に入力する。タグRAM402は、入力されたイン
デックスに対応するブロックのタグ情報及びステートを
タグリード回路318に返す。
【0248】タグリード回路318は、タグRAM40
2から返されてきたタグとトランザクション・アドレス
のタグ部とを比較し、両者の一致・不一致を判定する。
そして、両者が一致する場合には該当ブロックのステー
トを下位バス出力判定回路314に出力する。この場
合、当該ブロックのステートがM又はE又はSであれ
ば、キャッシュRAM404内にReadの要求するデ
ータがあるということを意味する。
2から返されてきたタグとトランザクション・アドレス
のタグ部とを比較し、両者の一致・不一致を判定する。
そして、両者が一致する場合には該当ブロックのステー
トを下位バス出力判定回路314に出力する。この場
合、当該ブロックのステートがM又はE又はSであれ
ば、キャッシュRAM404内にReadの要求するデ
ータがあるということを意味する。
【0249】一方、両者が不一致の場合は、キャッシュ
RAM404内にはReadが要求するデータはないと
いうことなので、タグリード回路318はReadの要
求するアドレスAに対するブリッジキャッシュのステー
トとして、ステートIを下位バス出力判定回路314に
出力する。ただし、タグが不一致の場合には、該当ブロ
ックに格納されている別アドレスのデータがどのステー
トであるかによってエビクションが必要となる場合があ
るので、タグリード回路318は、タグRAM402か
ら受け取った該当ブロック自体のステートも下位バス出
力判定回路314に出力する。
RAM404内にはReadが要求するデータはないと
いうことなので、タグリード回路318はReadの要
求するアドレスAに対するブリッジキャッシュのステー
トとして、ステートIを下位バス出力判定回路314に
出力する。ただし、タグが不一致の場合には、該当ブロ
ックに格納されている別アドレスのデータがどのステー
トであるかによってエビクションが必要となる場合があ
るので、タグリード回路318は、タグRAM402か
ら受け取った該当ブロック自体のステートも下位バス出
力判定回路314に出力する。
【0250】この動作例では、ブリッジキャッシュ#0
にはアドレスAに対応するブロックにアドレスBのデー
タがステートMで格納されているので、タグリード回路
318から下位バス出力判定回路314へは、Read
の要求データ(アドレスA)が存在しないことを示すス
テートIの信号と、該当ブロック自体のステートMの信
号が出力される。
にはアドレスAに対応するブロックにアドレスBのデー
タがステートMで格納されているので、タグリード回路
318から下位バス出力判定回路314へは、Read
の要求データ(アドレスA)が存在しないことを示すス
テートIの信号と、該当ブロック自体のステートMの信
号が出力される。
【0251】(2.3) 下位バス出力判定回路314は、信
号線504から入力されたトランザクションの種類と、
タグリード回路318から入力されたトランザクション
・アドレスのステートとに基づき、下位バスに出力すべ
きトランザクションを決定する。このとき、下位バス出
力判定回路314は、制約1を採用する場合には表3又
は4の規則に従い、制約2を採用する場合は表5の規則
に従って、下位バスに出力するトランザクションを決定
する。
号線504から入力されたトランザクションの種類と、
タグリード回路318から入力されたトランザクション
・アドレスのステートとに基づき、下位バスに出力すべ
きトランザクションを決定する。このとき、下位バス出
力判定回路314は、制約1を採用する場合には表3又
は4の規則に従い、制約2を採用する場合は表5の規則
に従って、下位バスに出力するトランザクションを決定
する。
【0252】この動作例では、上位バス・トランザクシ
ョンはReadであり、Readのアドレスに対するブ
リッジキャッシュ#0のステートはIなので、制約1及
び2のいずれを採用した場合でも、下位バス出力判定回
路314は上位バスのトランザクションをスプリット
し、下位バスに対してアドレスAのデータを要求するR
eadを発行すると決定する。
ョンはReadであり、Readのアドレスに対するブ
リッジキャッシュ#0のステートはIなので、制約1及
び2のいずれを採用した場合でも、下位バス出力判定回
路314は上位バスのトランザクションをスプリット
し、下位バスに対してアドレスAのデータを要求するR
eadを発行すると決定する。
【0253】下位バス出力判定回路314の判定結果
は、下位バストランザクション生成・保持回路330に
入力される。なお、この場合は、上位バスのReadは
スプリットされるので、下位バス出力判定回路314
は、スプリットを行ったことを示す情報を出力する。こ
の情報は上位バストランザクションバッファ312に前
記トランザクションの種類及びアドレス等と対応づけて
登録される。また、この情報は、レスポンス生成回路3
10にも出力される。
は、下位バストランザクション生成・保持回路330に
入力される。なお、この場合は、上位バスのReadは
スプリットされるので、下位バス出力判定回路314
は、スプリットを行ったことを示す情報を出力する。こ
の情報は上位バストランザクションバッファ312に前
記トランザクションの種類及びアドレス等と対応づけて
登録される。また、この情報は、レスポンス生成回路3
10にも出力される。
【0254】(2.4) 下位バストランザクション生成・保
持回路330は、与えられた判定結果に従って、アドレ
スAのデータを要求するReadトランザクションを生
成する。同時に、下位バストランザクション生成・保持
回路330は、下位バスアービトレーション回路328
に所定の信号を発し、これを受けた下位バスアービトレ
ーション回路328は、下位バスの使用権を得るために
信号線514から下位バスに対してアービトレーション
信号を発する。この例では各バスは分散アービトレーシ
ョン方式を採用しており、下位バスアービトレーション
回路328は、下位バスアービトレーション回路328
が発したアービトレーション信号に対する他のバスブリ
ッジ#1のバス要求状態を信号線512から得、自バス
ブリッジ#0が下位バスに対してトランザクションを発
行できるか否かを判定する。そして、下位バスアービト
レーション回路328は、下位バスに対してトランザク
ションが発行可能となったときに出力バッファ362に
対して所定の信号を発し、この信号により、下位バスト
ランザクション生成・保持回路330で生成されたRe
adが出力バッファ362から信号線516を経由して
下位バスに出力される。
持回路330は、与えられた判定結果に従って、アドレ
スAのデータを要求するReadトランザクションを生
成する。同時に、下位バストランザクション生成・保持
回路330は、下位バスアービトレーション回路328
に所定の信号を発し、これを受けた下位バスアービトレ
ーション回路328は、下位バスの使用権を得るために
信号線514から下位バスに対してアービトレーション
信号を発する。この例では各バスは分散アービトレーシ
ョン方式を採用しており、下位バスアービトレーション
回路328は、下位バスアービトレーション回路328
が発したアービトレーション信号に対する他のバスブリ
ッジ#1のバス要求状態を信号線512から得、自バス
ブリッジ#0が下位バスに対してトランザクションを発
行できるか否かを判定する。そして、下位バスアービト
レーション回路328は、下位バスに対してトランザク
ションが発行可能となったときに出力バッファ362に
対して所定の信号を発し、この信号により、下位バスト
ランザクション生成・保持回路330で生成されたRe
adが出力バッファ362から信号線516を経由して
下位バスに出力される。
【0255】(2.5) このようにしてバスブリッジ#0が
下位バスに対して発行したReadは、下位バスから信
号線516を経由してバスブリッジ#0自身に取り込ま
れ、そのトランザクション種類(Read)及びアドレ
ス(A)が下位バストランザクションバッファ326に
格納される。
下位バスに対して発行したReadは、下位バスから信
号線516を経由してバスブリッジ#0自身に取り込ま
れ、そのトランザクション種類(Read)及びアドレ
ス(A)が下位バストランザクションバッファ326に
格納される。
【0256】(2.6) レスポンス生成回路310は、下位
バス出力判定回路314からスプリットを行ったことを
示す信号を受取り、これに基づきスプリット終了信号を
生成し、上位バス#0に出力する。なお、CPU#0
は、このスプリット終了信号を受取ると、いったん上位
バス#0を解放し、下位バスに発行したReadの結果
がバスブリッジ#0から返ってくるのを待つ。
バス出力判定回路314からスプリットを行ったことを
示す信号を受取り、これに基づきスプリット終了信号を
生成し、上位バス#0に出力する。なお、CPU#0
は、このスプリット終了信号を受取ると、いったん上位
バス#0を解放し、下位バスに発行したReadの結果
がバスブリッジ#0から返ってくるのを待つ。
【0257】(3)バスブリッジ#0は、前記(2)の
処理と同時に、ブリッジキャッシュ#0のエビクション
が必要か否かを判定する。エビクションが必要と判定さ
れた場合、ブリッジキャッシュ#0の該当ブロックのデ
ータをキャッシュRAM404からエビクションバッフ
ァ336に退避させる。また、バスブリッジ#0は、エ
ビクションが必要な場合は、上位バス#0へのInva
lidateトランザクションを生成し、さらに下位バ
スへのWriteBackトランザクションの発行の要
否を判定する。すなわち、(3.1) 下位バス出力判定回路
314は、前記(2.3) におけるタグリード回路318か
らの出力に基づきエビクションの要否を判定する。エビ
クションが必要となるのは、トランザクションのアドレ
スに対応するキャッシュブロックが、他のアドレスによ
って使用されている(当該他のアドレスについてのステ
ートがM又はE又はSである)場合である。したがっ
て、下位バス出力判定回路314は、トランザクション
に対するステートがIであり、該当ブロック自体のステ
ートがM又はE又はSであった場合には、ブリッジキャ
ッシュの該当ブロックのエビクションが必要と判定す
る。この判定結果は、キャッシュ制御回路322に入力
される。なお、下位バス出力判定回路314からキャッ
シュ制御回路322に与えられる出力には、エビクショ
ンすべきブロックのアドレス情報が含まれる。
処理と同時に、ブリッジキャッシュ#0のエビクション
が必要か否かを判定する。エビクションが必要と判定さ
れた場合、ブリッジキャッシュ#0の該当ブロックのデ
ータをキャッシュRAM404からエビクションバッフ
ァ336に退避させる。また、バスブリッジ#0は、エ
ビクションが必要な場合は、上位バス#0へのInva
lidateトランザクションを生成し、さらに下位バ
スへのWriteBackトランザクションの発行の要
否を判定する。すなわち、(3.1) 下位バス出力判定回路
314は、前記(2.3) におけるタグリード回路318か
らの出力に基づきエビクションの要否を判定する。エビ
クションが必要となるのは、トランザクションのアドレ
スに対応するキャッシュブロックが、他のアドレスによ
って使用されている(当該他のアドレスについてのステ
ートがM又はE又はSである)場合である。したがっ
て、下位バス出力判定回路314は、トランザクション
に対するステートがIであり、該当ブロック自体のステ
ートがM又はE又はSであった場合には、ブリッジキャ
ッシュの該当ブロックのエビクションが必要と判定す
る。この判定結果は、キャッシュ制御回路322に入力
される。なお、下位バス出力判定回路314からキャッ
シュ制御回路322に与えられる出力には、エビクショ
ンすべきブロックのアドレス情報が含まれる。
【0258】この動作例では、初期状態として、ブリッ
ジキャッシュ#0において、アドレスAに対応するブロ
ックにはアドレスBのデータがステートMで格納されて
いる。したがって、下位バス出力判定回路314は、ブ
リッジキャッシュ#0のエビクションが必要と判定し、
アドレスBをキャッシュ制御回路322に出力する。
ジキャッシュ#0において、アドレスAに対応するブロ
ックにはアドレスBのデータがステートMで格納されて
いる。したがって、下位バス出力判定回路314は、ブ
リッジキャッシュ#0のエビクションが必要と判定し、
アドレスBをキャッシュ制御回路322に出力する。
【0259】(3.2) 下位バス出力判定回路314の出力
を受け取ったキャッシュ制御回路322は、その出力に
含まれるアドレス情報をキャッシュRAM404に入力
する。キャッシュRAM404は、そのアドレス情報に
基づき、エビクション対象ブロックのデータをエビクシ
ョンバッファ336に出力し、当該ブロックを空き状態
にする。エビクションバッファ336は、キャッシュR
AM404から受け取ったデータを格納する。
を受け取ったキャッシュ制御回路322は、その出力に
含まれるアドレス情報をキャッシュRAM404に入力
する。キャッシュRAM404は、そのアドレス情報に
基づき、エビクション対象ブロックのデータをエビクシ
ョンバッファ336に出力し、当該ブロックを空き状態
にする。エビクションバッファ336は、キャッシュR
AM404から受け取ったデータを格納する。
【0260】また、キャッシュ制御回路322は、前記
アドレス情報をエビクションバッファ336に入力す
る。エビクションバッファ336は、このアドレス情報
を、前記キャッシュRAM404から受け取ったデータ
に対応付けて記憶する。
アドレス情報をエビクションバッファ336に入力す
る。エビクションバッファ336は、このアドレス情報
を、前記キャッシュRAM404から受け取ったデータ
に対応付けて記憶する。
【0261】この動作例では、アドレスBに対応するブ
ロックのデータがキャッシュRAM404からエビクシ
ョンバッファ336に掃き出され、キャッシュRAM4
04はそのデータをアドレスBと対応付けて格納する。
ロックのデータがキャッシュRAM404からエビクシ
ョンバッファ336に掃き出され、キャッシュRAM4
04はそのデータをアドレスBと対応付けて格納する。
【0262】この結果、キャッシュRAM404のアド
レスBに対応するブロックは解放され、Readトラン
ザクションが使用できる状態となる。
レスBに対応するブロックは解放され、Readトラン
ザクションが使用できる状態となる。
【0263】このように、図6の構成では、エビクショ
ン対象のブロックをエビクションバッファ336に退避
することにより、上位バスから受け取ったトランザクシ
ョンのために当該ブロックを使用することができる。し
たがって、この構成では、エビクションに伴うInva
lidate及びWriteBackの処理の完了を待
たずに、下位バスへのトランザクションの発行等のトラ
ンザクションに対する通常処理を進行することが可能と
なる。
ン対象のブロックをエビクションバッファ336に退避
することにより、上位バスから受け取ったトランザクシ
ョンのために当該ブロックを使用することができる。し
たがって、この構成では、エビクションに伴うInva
lidate及びWriteBackの処理の完了を待
たずに、下位バスへのトランザクションの発行等のトラ
ンザクションに対する通常処理を進行することが可能と
なる。
【0264】(3.3) 下位バス出力判定回路314は、エ
ビクションが必要と判定した場合には、タグリード回路
318から与えられるエビクション対象ブロックのステ
ート情報に基づき、下位バスにWriteBackを発
行するか否かを判定する。この判定は、制約1を採用し
た場合には表16の規則に従い、制約2を採用した場合
には表17の規則に従って行われる。
ビクションが必要と判定した場合には、タグリード回路
318から与えられるエビクション対象ブロックのステ
ート情報に基づき、下位バスにWriteBackを発
行するか否かを判定する。この判定は、制約1を採用し
た場合には表16の規則に従い、制約2を採用した場合
には表17の規則に従って行われる。
【0265】この動作例では、ReadのアドレスAに
対応するブロックにはアドレスBのデータがステートM
で格納されているので、いずれの制約条件を採用する場
合でも、下位バスにWriteBackを行うことが決
定される。
対応するブロックにはアドレスBのデータがステートM
で格納されているので、いずれの制約条件を採用する場
合でも、下位バスにWriteBackを行うことが決
定される。
【0266】この判定結果は、上位バストランザクショ
ンバッファ312に入力され、対応トランザクションの
情報に対応づけて登録される。
ンバッファ312に入力され、対応トランザクションの
情報に対応づけて登録される。
【0267】なお、この判定に基づくWriteBac
kの発行は、次に説明する上位バス#0へのInval
idateが完了した後に行われる。
kの発行は、次に説明する上位バス#0へのInval
idateが完了した後に行われる。
【0268】(3.4) 上位バス出力判定回路316は、前
記(2.3) におけるタグリード回路318からの出力に基
づき、前記下位バス出力判定回路314と同様にして、
エビクションの要否を判定する。ここでエビクションが
必要と判定された場合は、上位バス出力判定回路316
は、エビクション対象のブロックのステート(すなわ
ち、該当ブロックに格納されているデータのステート)
に基づき、前記表15の規則に従って上位バスへのIn
validateの発行を決定する。そして、上位バス
出力判定回路316は、この決定に応じて、Inval
idateの発行を指示する信号を上位バストランザク
ション生成・保持回路304に出力する。
記(2.3) におけるタグリード回路318からの出力に基
づき、前記下位バス出力判定回路314と同様にして、
エビクションの要否を判定する。ここでエビクションが
必要と判定された場合は、上位バス出力判定回路316
は、エビクション対象のブロックのステート(すなわ
ち、該当ブロックに格納されているデータのステート)
に基づき、前記表15の規則に従って上位バスへのIn
validateの発行を決定する。そして、上位バス
出力判定回路316は、この決定に応じて、Inval
idateの発行を指示する信号を上位バストランザク
ション生成・保持回路304に出力する。
【0269】この信号を受け取った上位バストランザク
ション生成・保持回路304は、Invalidate
トランザクションを生成すると共に、上位バスアービト
レーション回路302に対してアービトレーションを指
示する。そして、上位バス#0の使用権が得られ次第、
上位バストランザクション生成・保持回路304から出
力バッファ360を介して、上位バス#0にInval
idateが発行される。
ション生成・保持回路304は、Invalidate
トランザクションを生成すると共に、上位バスアービト
レーション回路302に対してアービトレーションを指
示する。そして、上位バス#0の使用権が得られ次第、
上位バストランザクション生成・保持回路304から出
力バッファ360を介して、上位バス#0にInval
idateが発行される。
【0270】この動作例では、上位バス出力判定回路3
16は、エビクションが必要と判定する。この結果、上
位バストランザクション生成保持回路304にてInv
alidateが生成され、上位バス#0のエビクショ
ンが完了し次第発行される。したがって、例えばパイプ
ライン処理が可能なシステムとすれば、CPU#0から
のReadの発行のサイクルが終わり次第、バスブリッ
ジ#0から上位バス#0に対してInvalidate
の発行が可能となる。
16は、エビクションが必要と判定する。この結果、上
位バストランザクション生成保持回路304にてInv
alidateが生成され、上位バス#0のエビクショ
ンが完了し次第発行される。したがって、例えばパイプ
ライン処理が可能なシステムとすれば、CPU#0から
のReadの発行のサイクルが終わり次第、バスブリッ
ジ#0から上位バス#0に対してInvalidate
の発行が可能となる。
【0271】以上に説明した(3)の処理は、前記
(2)の処理と同時並行して行われる。そして、これ以
降、本システムでは、(2)に続く通常のトランザクシ
ョン処理((4)〜(8))と、(3)に続くエビクシ
ョン処理((9)〜(11))とを行う。本システムに
おいてパイプライン方式のアーキテクチャを採用すれ
ば、これら通常処理とエビクション処理とは同時並行的
に行うことも可能である。
(2)の処理と同時並行して行われる。そして、これ以
降、本システムでは、(2)に続く通常のトランザクシ
ョン処理((4)〜(8))と、(3)に続くエビクシ
ョン処理((9)〜(11))とを行う。本システムに
おいてパイプライン方式のアーキテクチャを採用すれ
ば、これら通常処理とエビクション処理とは同時並行的
に行うことも可能である。
【0272】(4)バスブリッジ#1は、前記(2)で
下位バスに発行されたトランザクションをモニタする。
すなわち、バスブリッジ#1は、信号線516から下位
バス・トランザクションの種類(Read)及びアドレ
ス(A)を得て、これらの情報を下位トランザクション
バッファ326、タグリード回路318、上位バス出力
判定回路316に入力する。すなわち、(4.1) 下位トラ
ンザクションバッファ326は、入力された下位バス・
トランザクションの種類、アドレス及び当該トランザク
ションを発行したバスブリッジのIDなど下位バストラ
ンザクションに関する諸情報を格納する。
下位バスに発行されたトランザクションをモニタする。
すなわち、バスブリッジ#1は、信号線516から下位
バス・トランザクションの種類(Read)及びアドレ
ス(A)を得て、これらの情報を下位トランザクション
バッファ326、タグリード回路318、上位バス出力
判定回路316に入力する。すなわち、(4.1) 下位トラ
ンザクションバッファ326は、入力された下位バス・
トランザクションの種類、アドレス及び当該トランザク
ションを発行したバスブリッジのIDなど下位バストラ
ンザクションに関する諸情報を格納する。
【0273】この動作例では、トランザクション種類
“Read”、アドレス“A”等の情報が下位バストラ
ンザクションバッファ326に格納される。
“Read”、アドレス“A”等の情報が下位バストラ
ンザクションバッファ326に格納される。
【0274】(4.2) タグリード回路318は、前述のス
テップ(2.1) と同様にしてタグRAM402を検索し、
下位バス・トランザクションの要求データに対するブリ
ッジキャッシュ#1のステートを調べ、そのステートを
上位バス出力判定回路316に出力する。
テップ(2.1) と同様にしてタグRAM402を検索し、
下位バス・トランザクションの要求データに対するブリ
ッジキャッシュ#1のステートを調べ、そのステートを
上位バス出力判定回路316に出力する。
【0275】この例では、ブリッジキャッシュ#1は、
Readの要求データをステートMで所有しているの
で、タグリード回路318からは、ステートMを示す信
号が上位バス出力判定回路316に与えられる。
Readの要求データをステートMで所有しているの
で、タグリード回路318からは、ステートMを示す信
号が上位バス出力判定回路316に与えられる。
【0276】(4.3) 上位バス出力判定回路316は、信
号線516から入力されたトランザクション種類とタグ
リード回路318から入力されたトランザクションに対
するステートの情報とから、上位バス#1に発行するト
ランザクションを決定する。ここで、上位バス#1に発
行するトランザクションの決定においては、制約1を採
用する場合には表9の規則に従い、制約2を採用する場
合には表10の規則に従う。この動作例では、いずれの
制約条件を採用した場合でも、Readの発行が決定さ
れる。この上位バス出力判定回路316の判定結果は、
上位バストランザクション生成・保持回路304に入力
される。
号線516から入力されたトランザクション種類とタグ
リード回路318から入力されたトランザクションに対
するステートの情報とから、上位バス#1に発行するト
ランザクションを決定する。ここで、上位バス#1に発
行するトランザクションの決定においては、制約1を採
用する場合には表9の規則に従い、制約2を採用する場
合には表10の規則に従う。この動作例では、いずれの
制約条件を採用した場合でも、Readの発行が決定さ
れる。この上位バス出力判定回路316の判定結果は、
上位バストランザクション生成・保持回路304に入力
される。
【0277】(4.4) 上位バストランザクション生成・保
持回路304は、与えられた判定結果に従って、アドレ
スAのデータを要求するReadトランザクションを生
成する。同時に、上位バストランザクション生成・保持
回路304は、上位バスアービトレーション回路302
に所定の信号を発し、これを受けた上位バスアービトレ
ーション回路302は、上位バス#1の使用権を得るた
めに信号線500から上位バス#1に対してアービトレ
ーション信号を発する。そして、上位バスアービトレー
ション回路328は、このアービトレーション信号に対
する他のバスブリッジのバス要求状態を信号線502か
ら得、バスブリッジ#1が上位バス#1に対してトラン
ザクションを発行できるか否かを判定する。そして、上
位バス#1に対してトランザクションが発行可能となっ
たときに、上位バスアービトレーション回路302は出
力バッファ360に対して所定の信号を発し、この結果
上位バストランザクション生成・保持回路304で生成
されたReadが出力バッファ360から信号線504
を経由して上位バス#1に発行される。
持回路304は、与えられた判定結果に従って、アドレ
スAのデータを要求するReadトランザクションを生
成する。同時に、上位バストランザクション生成・保持
回路304は、上位バスアービトレーション回路302
に所定の信号を発し、これを受けた上位バスアービトレ
ーション回路302は、上位バス#1の使用権を得るた
めに信号線500から上位バス#1に対してアービトレ
ーション信号を発する。そして、上位バスアービトレー
ション回路328は、このアービトレーション信号に対
する他のバスブリッジのバス要求状態を信号線502か
ら得、バスブリッジ#1が上位バス#1に対してトラン
ザクションを発行できるか否かを判定する。そして、上
位バス#1に対してトランザクションが発行可能となっ
たときに、上位バスアービトレーション回路302は出
力バッファ360に対して所定の信号を発し、この結果
上位バストランザクション生成・保持回路304で生成
されたReadが出力バッファ360から信号線504
を経由して上位バス#1に発行される。
【0278】(4.5) このようにしてバスブリッジ#1が
上位バスに対して発行したReadは、上位バスから信
号線504を経由してバスブリッジ#1自身に取り込ま
れ、そのトランザクション種類(Read)及びアドレ
ス(A)が上位バストランザクションバッファ312に
格納される。
上位バスに対して発行したReadは、上位バスから信
号線504を経由してバスブリッジ#1自身に取り込ま
れ、そのトランザクション種類(Read)及びアドレ
ス(A)が上位バストランザクションバッファ312に
格納される。
【0279】(5)上位バス#1に接続されたCPU#
2及び#3は、バスブリッジ#1から上位バス#1に発
行されたReadをモニタする。ここで、CPU#3は
キャッシュ内にアドレスAのデータをステートMで持っ
ているので、CPU#3は当該Readに対してHIT
Mをスヌープ出力するとともに、アドレスAに対応する
キャッシュブロックのデータを上位バス#1に出力す
る。
2及び#3は、バスブリッジ#1から上位バス#1に発
行されたReadをモニタする。ここで、CPU#3は
キャッシュ内にアドレスAのデータをステートMで持っ
ているので、CPU#3は当該Readに対してHIT
Mをスヌープ出力するとともに、アドレスAに対応する
キャッシュブロックのデータを上位バス#1に出力す
る。
【0280】(6)バスブリッジ#1は、CPU#3か
ら出力されたステートMのデータによって自身のブリッ
ジキャッシュの該当ブロックを更新すると共に下位バス
にそのデータを出力し、さらに下位バスに対してHIT
Mをスヌープ出力する。そして、バスブリッジ#1は、
自身のブリッジキャッシュの該当ブロックのステートを
変更する。すなわち、(6.1) CPU#3から出力された
ステートMのデータは、信号線510を経由してバスブ
リッジ#1に入力される。このデータは、セレクタ35
2を介してキャッシュRAM404に入力されると共
に、信号線522を経由して下位バスに出力される。こ
こで、キャッシュRAM404の該当ブロックのデータ
内容は前記CPU#3からのデータによって更新され
る。このときのキャッシュRAM404内における更新
ブロックの特定は次のようにして行われる。すなわち、
ステップ(4.5) に示したように、バスブリッジ#1は、
自らが上位バスに対して発行したReadを信号線50
4を経由して取り込むが、この上位バスReadトラン
ザクションのアドレスが下位バス出力判定回路314を
介してキャッシュ制御回路322に入力される。キャッ
シュ制御回路322は、このアドレス情報からインデッ
クスを抽出し、このインデックス情報をキャッシュRA
M404に与えることにより更新すべきブロックを特定
する。このようにして特定されたブロックに対して信号
線510から入力されたデータが上書きされる。なお、
信号線522から下位バスに出力されたデータは、バス
ブリッジ#0によって取り込まれると共に、メインメモ
リにも入力され、データ内容の更新が行われる。
ら出力されたステートMのデータによって自身のブリッ
ジキャッシュの該当ブロックを更新すると共に下位バス
にそのデータを出力し、さらに下位バスに対してHIT
Mをスヌープ出力する。そして、バスブリッジ#1は、
自身のブリッジキャッシュの該当ブロックのステートを
変更する。すなわち、(6.1) CPU#3から出力された
ステートMのデータは、信号線510を経由してバスブ
リッジ#1に入力される。このデータは、セレクタ35
2を介してキャッシュRAM404に入力されると共
に、信号線522を経由して下位バスに出力される。こ
こで、キャッシュRAM404の該当ブロックのデータ
内容は前記CPU#3からのデータによって更新され
る。このときのキャッシュRAM404内における更新
ブロックの特定は次のようにして行われる。すなわち、
ステップ(4.5) に示したように、バスブリッジ#1は、
自らが上位バスに対して発行したReadを信号線50
4を経由して取り込むが、この上位バスReadトラン
ザクションのアドレスが下位バス出力判定回路314を
介してキャッシュ制御回路322に入力される。キャッ
シュ制御回路322は、このアドレス情報からインデッ
クスを抽出し、このインデックス情報をキャッシュRA
M404に与えることにより更新すべきブロックを特定
する。このようにして特定されたブロックに対して信号
線510から入力されたデータが上書きされる。なお、
信号線522から下位バスに出力されたデータは、バス
ブリッジ#0によって取り込まれると共に、メインメモ
リにも入力され、データ内容の更新が行われる。
【0281】(6.2) バスブリッジ#1から下位バスに対
するスヌープ出力は、下位バススヌープ出力生成回路3
32にて生成される。下位バススヌープ出力生成回路3
32には、信号線506からの上位バスのスヌープ結果
(上位の各CPUのスヌープ出力のワイヤードOR)
と、ステップ(4.1) で下位バストランザクションバッフ
ァ330に格納された下位バス・トランザクションの種
類と、上位バス出力判定回路316がステップ(4.2) で
検出したブリッジキャッシュのステートと、が入力され
る。ここで、制約1を採用した場合、下位バススヌープ
出力生成回路332は、下位バストランザクションの種
類とブリッジキャッシュのステートとの組み合わせから
表11の規則に従ってスヌープ出力を生成する。また、
制約2を採用した場合は、下位バススヌープ出力生成回
路332は、下位バストランザクションの種類、ブリッ
ジキャッシュのステート及び上位バススヌープ結果の組
み合わせから表12の規則に従ってスヌープ出力を生成
する。このようにして生成されたスヌープ出力は、信号
線518を経由して下位バスに出力される。
するスヌープ出力は、下位バススヌープ出力生成回路3
32にて生成される。下位バススヌープ出力生成回路3
32には、信号線506からの上位バスのスヌープ結果
(上位の各CPUのスヌープ出力のワイヤードOR)
と、ステップ(4.1) で下位バストランザクションバッフ
ァ330に格納された下位バス・トランザクションの種
類と、上位バス出力判定回路316がステップ(4.2) で
検出したブリッジキャッシュのステートと、が入力され
る。ここで、制約1を採用した場合、下位バススヌープ
出力生成回路332は、下位バストランザクションの種
類とブリッジキャッシュのステートとの組み合わせから
表11の規則に従ってスヌープ出力を生成する。また、
制約2を採用した場合は、下位バススヌープ出力生成回
路332は、下位バストランザクションの種類、ブリッ
ジキャッシュのステート及び上位バススヌープ結果の組
み合わせから表12の規則に従ってスヌープ出力を生成
する。このようにして生成されたスヌープ出力は、信号
線518を経由して下位バスに出力される。
【0282】この動作例では、下位バストランザクショ
ンの種類がReadで、ブリッジキャッシュのステート
がMなので、いずれの制約条件を採用する場合でも、下
位バススヌープ出力生成回路332はHITMを出力す
る。
ンの種類がReadで、ブリッジキャッシュのステート
がMなので、いずれの制約条件を採用する場合でも、下
位バススヌープ出力生成回路332はHITMを出力す
る。
【0283】(6.3) ブリッジキャッシュの次ステートは
タグ更新回路324で決定される。タグ更新回路324
には、信号線506からの上位バススヌープ結果と、ス
テップ(4.5) において上位バストランザクションバッフ
ァ312に格納された上位バス・トランザクションの種
類が与えられる。タグ更新回路324は、これらの情報
に基づき表13又は表14の規則に基づいて、ブリッジ
キャッシュの次ステートを決定する。この例では、上位
バススヌープ結果がHITMで上位バストランザクショ
ンがReadなので、ブリッジキャッシュの次ステート
はSと決定される。
タグ更新回路324で決定される。タグ更新回路324
には、信号線506からの上位バススヌープ結果と、ス
テップ(4.5) において上位バストランザクションバッフ
ァ312に格納された上位バス・トランザクションの種
類が与えられる。タグ更新回路324は、これらの情報
に基づき表13又は表14の規則に基づいて、ブリッジ
キャッシュの次ステートを決定する。この例では、上位
バススヌープ結果がHITMで上位バストランザクショ
ンがReadなので、ブリッジキャッシュの次ステート
はSと決定される。
【0284】また、タグ更新回路324は、上位バスト
ランザクションバッファ312からトランザクションの
アドレスAを得、このアドレスAと前記次ステートSと
をタグライト回路320に入力する。タグライト回路3
20は、このアドレスAのインデックス部をタグRAM
404に入力してタグ情報の書き換えを行うべきブロッ
クを指定し、さらに前記次ステートSをタグRAM40
2に入力して当該ブロックのステートを変更する。
ランザクションバッファ312からトランザクションの
アドレスAを得、このアドレスAと前記次ステートSと
をタグライト回路320に入力する。タグライト回路3
20は、このアドレスAのインデックス部をタグRAM
404に入力してタグ情報の書き換えを行うべきブロッ
クを指定し、さらに前記次ステートSをタグRAM40
2に入力して当該ブロックのステートを変更する。
【0285】(7)バスブリッジ#0は、下位バスに発
行したトランザクションに対する他のバスブリッジから
の応答を検出し、上位バス#0に対する応答の生成を行
う。この例では、下位バス上にはバスブリッジ#0及び
バスブリッジ#1が接続されているだけなので、バスブ
リッジ#0は、前記(6)でバスブリッジ#1から下位
バスに出力されたデータやスヌープ出力などを検出する
と、それらに基づき次のような処理を行う。
行したトランザクションに対する他のバスブリッジから
の応答を検出し、上位バス#0に対する応答の生成を行
う。この例では、下位バス上にはバスブリッジ#0及び
バスブリッジ#1が接続されているだけなので、バスブ
リッジ#0は、前記(6)でバスブリッジ#1から下位
バスに出力されたデータやスヌープ出力などを検出する
と、それらに基づき次のような処理を行う。
【0286】まず、バスブリッジ#0は、CPU#0に
応答を行うためにスプリット応答トランザクションを生
成し、上位バス#0上に発行する。また、バスブリッジ
#0は、CPU#0の次ステートを制御するために、ス
ヌープ出力を生成して上位バス#0に出力する。また、
バスブリッジ#0は、下位バスから得られたデータをブ
リッジキャッシュ#0に書き込む。さらに、バスブリッ
ジ#0は、自らのブリッジキャッシュのステートを変更
する。すなわち、(7.1) スプリット応答生成回路306
は、信号線518から下位バススヌープ結果が入力され
ると、上位バストランザクション生成・保持回路304
に対してスプリット応答トランザクション生成指令を発
する。すなわち、スプリット応答生成回路306は、下
位バススヌープ結果を、スプリット応答トランザクショ
ンを生成するためのタイミング信号として用いている。
スプリット応答生成回路306は、下位バススヌープ結
果を得たときに、上位トランザクションバッファ312
に格納されているトランザクション情報に基づき、トラ
ンザクション発行元のCPUに対してスプリット応答ト
ランザクション生成指令を生成する。上位トランザクシ
ョンバッファ312には、上位バスから受け取ったトラ
ンザクションの情報(種類、アドレス、スプリットID
等)がスプリットを行ったか否かの情報と共に格納され
ている。スプリット応答生成回路306は、この上位ト
ランザクションバッファ312からスプリットを行った
トランザクションを検索し、そのトランザクションのス
プリットIDからそのトランザクションを発行したCP
UのIDを検出して、当該CPU_IDに対するスプリ
ット応答トランザクションを生成する。
応答を行うためにスプリット応答トランザクションを生
成し、上位バス#0上に発行する。また、バスブリッジ
#0は、CPU#0の次ステートを制御するために、ス
ヌープ出力を生成して上位バス#0に出力する。また、
バスブリッジ#0は、下位バスから得られたデータをブ
リッジキャッシュ#0に書き込む。さらに、バスブリッ
ジ#0は、自らのブリッジキャッシュのステートを変更
する。すなわち、(7.1) スプリット応答生成回路306
は、信号線518から下位バススヌープ結果が入力され
ると、上位バストランザクション生成・保持回路304
に対してスプリット応答トランザクション生成指令を発
する。すなわち、スプリット応答生成回路306は、下
位バススヌープ結果を、スプリット応答トランザクショ
ンを生成するためのタイミング信号として用いている。
スプリット応答生成回路306は、下位バススヌープ結
果を得たときに、上位トランザクションバッファ312
に格納されているトランザクション情報に基づき、トラ
ンザクション発行元のCPUに対してスプリット応答ト
ランザクション生成指令を生成する。上位トランザクシ
ョンバッファ312には、上位バスから受け取ったトラ
ンザクションの情報(種類、アドレス、スプリットID
等)がスプリットを行ったか否かの情報と共に格納され
ている。スプリット応答生成回路306は、この上位ト
ランザクションバッファ312からスプリットを行った
トランザクションを検索し、そのトランザクションのス
プリットIDからそのトランザクションを発行したCP
UのIDを検出して、当該CPU_IDに対するスプリ
ット応答トランザクションを生成する。
【0287】この動作例では、バスブリッジ#1から出
力されたHITMの信号が信号線518から入力され
る。このHITMの信号を受けると、スプリット応答生
成回路306は、上位トランザクションバッファ312
からスプリットを行ったトランザクションを検出し、そ
のトランザクションの発行元CPUのID(スプリット
IDに含まれている。ここでは#0)を検出し、このC
PU#0に対するスプリット応答トランザクションの生
成指令を上位バストランザクション生成・保持回路30
4に出力する。
力されたHITMの信号が信号線518から入力され
る。このHITMの信号を受けると、スプリット応答生
成回路306は、上位トランザクションバッファ312
からスプリットを行ったトランザクションを検出し、そ
のトランザクションの発行元CPUのID(スプリット
IDに含まれている。ここでは#0)を検出し、このC
PU#0に対するスプリット応答トランザクションの生
成指令を上位バストランザクション生成・保持回路30
4に出力する。
【0288】上位バストランザクション生成・保持回路
304は、この指令に基づいてスプリット応答トランザ
クションを生成する。そして、上位バスアービトレーシ
ョン回路302にて上位バスの使用権を獲得したところ
で、信号線504から上位バス#0にそのスプリット応
答トランザクションが発行される。
304は、この指令に基づいてスプリット応答トランザ
クションを生成する。そして、上位バスアービトレーシ
ョン回路302にて上位バスの使用権を獲得したところ
で、信号線504から上位バス#0にそのスプリット応
答トランザクションが発行される。
【0289】(7.2) バスブリッジ#0は、信号線518
から得た下位バススヌープ結果と、前記ステップ(2.5)
で下位バストランザクションバッファ326に格納され
た下位バス・トランザクション種類とに基づき、上位バ
スに対するスヌープ出力を生成する。このスヌープ出力
の生成は、制約1を採用する場合には前記表7の規則に
従って行い、制約2を採用する場合には前記表8の規則
に従って行う。この処理は上位バススヌープ出力生成回
路308で行われ、生成されたスヌープ出力は信号線5
06を介して上位バス#0に出力される。この例では、
スヌープ出力としてHITが上位バス#0に出力され
る。
から得た下位バススヌープ結果と、前記ステップ(2.5)
で下位バストランザクションバッファ326に格納され
た下位バス・トランザクション種類とに基づき、上位バ
スに対するスヌープ出力を生成する。このスヌープ出力
の生成は、制約1を採用する場合には前記表7の規則に
従って行い、制約2を採用する場合には前記表8の規則
に従って行う。この処理は上位バススヌープ出力生成回
路308で行われ、生成されたスヌープ出力は信号線5
06を介して上位バス#0に出力される。この例では、
スヌープ出力としてHITが上位バス#0に出力され
る。
【0290】(7.3) バスブリッジ#0は、バスブリッジ
#1から下位バスに出力された最新のキャッシュデータ
を信号線522を経由して受信し、これをキャッシュR
AM404に格納する。すなわち、ステップ(7.1) にて
上位バス上に発行されたスプリット応答トランザクショ
ンはバスブリッジ#0自身にて受信され、このとき下位
バス出力判定回路314が上位トランザクションバッフ
ァ312に格納されているアドレスを読出してキャッシ
ュ制御回路322に与える。そして、キャッシュ制御回
路322は、このアドレスからインデックスを抽出し、
このインデックス情報をキャッシュRAM404に与え
ることにより書き込み対象のブロックを特定する。そし
て、キャッシュRAM404では、キャッシュ制御回路
322によって指定されたブロックに対して、信号線5
22から入力されたデータを書き込む。なお、このよう
にしてキャッシュRAM404に格納された最新データ
は、続いてキャッシュRAM404から信号線510を
介して上位バス#0に出力される。
#1から下位バスに出力された最新のキャッシュデータ
を信号線522を経由して受信し、これをキャッシュR
AM404に格納する。すなわち、ステップ(7.1) にて
上位バス上に発行されたスプリット応答トランザクショ
ンはバスブリッジ#0自身にて受信され、このとき下位
バス出力判定回路314が上位トランザクションバッフ
ァ312に格納されているアドレスを読出してキャッシ
ュ制御回路322に与える。そして、キャッシュ制御回
路322は、このアドレスからインデックスを抽出し、
このインデックス情報をキャッシュRAM404に与え
ることにより書き込み対象のブロックを特定する。そし
て、キャッシュRAM404では、キャッシュ制御回路
322によって指定されたブロックに対して、信号線5
22から入力されたデータを書き込む。なお、このよう
にしてキャッシュRAM404に格納された最新データ
は、続いてキャッシュRAM404から信号線510を
介して上位バス#0に出力される。
【0291】この例では、バスブリッジ#0は、下位バ
スからの応答によって得たアドレスAの最新データをブ
リッジキャッシュ#0に書き込むと共に、上位バス#1
に出力する。
スからの応答によって得たアドレスAの最新データをブ
リッジキャッシュ#0に書き込むと共に、上位バス#1
に出力する。
【0292】(7.4) タグ更新回路324は、信号線51
8から得られる下位バススヌープ結果と、ステップ(2.
5) で下位バストランザクションバッファ326に格納
された下位バストランザクションの種類とに基づき、ブ
リッジキャッシュの次ステートを決定する。この次ステ
ートの決定は、制約1及び制約2のいずれを採用する場
合でも。前記表6の規則に従って行う。この例では、下
位バススヌープ結果がHITMで下位バストランザクシ
ョンがReadなので、次ステートはSと決定される。
8から得られる下位バススヌープ結果と、ステップ(2.
5) で下位バストランザクションバッファ326に格納
された下位バストランザクションの種類とに基づき、ブ
リッジキャッシュの次ステートを決定する。この次ステ
ートの決定は、制約1及び制約2のいずれを採用する場
合でも。前記表6の規則に従って行う。この例では、下
位バススヌープ結果がHITMで下位バストランザクシ
ョンがReadなので、次ステートはSと決定される。
【0293】また、タグ更新回路324は、下位バスト
ランザクションバッファ312から下位バスに発行した
Readトランザクションのアドレスを得、このアドレ
スと前記次ステートとをタグライト回路320に入力す
る。タグライト回路320は、このアドレスのインデッ
クス部をタグRAM402に入力して書き換えを行うべ
きブロックを指定し、さらにアドレスのタグ部及び前記
次ステートをタグRAM402に入力して当該ブロック
のタグ及びステートを更新する。
ランザクションバッファ312から下位バスに発行した
Readトランザクションのアドレスを得、このアドレ
スと前記次ステートとをタグライト回路320に入力す
る。タグライト回路320は、このアドレスのインデッ
クス部をタグRAM402に入力して書き換えを行うべ
きブロックを指定し、さらにアドレスのタグ部及び前記
次ステートをタグRAM402に入力して当該ブロック
のタグ及びステートを更新する。
【0294】(8)前記(2)におけるスプリットの結
果、いったん上位バス#0を放棄したCPU#0は、バ
スブリッジ#0から上位バス#0に発行されたスプリッ
ト応答トランザクションを受取り、そのスプリット応答
トランザクションに付随するデータを、CPUキャッシ
ュの該当ブロックに書き込む。また、このとき、バスブ
リッジ#0からのスヌープ出力HITによりCPU#0
の受け取るスヌープ結果はHITとなり、この結果、C
PU#0は当該ブロックのステートをMESIプロトコ
ルにしたがってSに変更する。
果、いったん上位バス#0を放棄したCPU#0は、バ
スブリッジ#0から上位バス#0に発行されたスプリッ
ト応答トランザクションを受取り、そのスプリット応答
トランザクションに付随するデータを、CPUキャッシ
ュの該当ブロックに書き込む。また、このとき、バスブ
リッジ#0からのスヌープ出力HITによりCPU#0
の受け取るスヌープ結果はHITとなり、この結果、C
PU#0は当該ブロックのステートをMESIプロトコ
ルにしたがってSに変更する。
【0295】(9)ここからは、前記(3)の処理に続
くエビクションの処理について説明する。この(9)〜
(11)の処理は、必ずしも前記(4)〜(8)の処理
の後に来るものではなく、両者の処理は並行的に行うこ
ともできる。
くエビクションの処理について説明する。この(9)〜
(11)の処理は、必ずしも前記(4)〜(8)の処理
の後に来るものではなく、両者の処理は並行的に行うこ
ともできる。
【0296】前記ステップ(3.4) にて発行されたInv
alidateを受け取った上位バス#0上の各CPU
は、当該Invalidateの対象ブロックを無効化
する。この例では、InvalidateはアドレスB
に対するものであり、CPU#1はアドレスBのデータ
をステートMで持っている。したがって、CPU#1
は、Invalidateに対する応答として、上位バ
ス#0に対してHITMを出力し、アドレスBのブロッ
クのステートMのデータを上位バス#0に出力する。そ
して、CPU#0は、キャッシュの当該ブロックのステ
ートをMからIに変更する。
alidateを受け取った上位バス#0上の各CPU
は、当該Invalidateの対象ブロックを無効化
する。この例では、InvalidateはアドレスB
に対するものであり、CPU#1はアドレスBのデータ
をステートMで持っている。したがって、CPU#1
は、Invalidateに対する応答として、上位バ
ス#0に対してHITMを出力し、アドレスBのブロッ
クのステートMのデータを上位バス#0に出力する。そ
して、CPU#0は、キャッシュの当該ブロックのステ
ートをMからIに変更する。
【0297】(10)バスブリッジ#0は、Inval
idateに対応してCPU#1から書き戻されたデー
タを信号線510を経由して受取り、このデータにより
エビクションバッファ336の内容を更新する。すなわ
ち、エビクションバッファ336には、すでにステップ
(3.2) でキャッシュRAM404に格納されていたアド
レスBのデータが退避しているが、このデータに対し
て、CPU#1から書き戻されてきたアドレスBの最新
データが上書きされる。
idateに対応してCPU#1から書き戻されたデー
タを信号線510を経由して受取り、このデータにより
エビクションバッファ336の内容を更新する。すなわ
ち、エビクションバッファ336には、すでにステップ
(3.2) でキャッシュRAM404に格納されていたアド
レスBのデータが退避しているが、このデータに対し
て、CPU#1から書き戻されてきたアドレスBの最新
データが上書きされる。
【0298】(11)(11.1)バスブリッジ#0は、前記
ステップ(3.3) にて自らが上位バス#0に発行したIn
validateを信号線504を介して取り込む。こ
のInvalidateを受け取った下位バス判定回路
314は、上位トランザクションバッファ312に格納
されているWriteBack要否の判定結果(前記ス
テップ(3.3) 参照)を読み出し、これに従ってWrit
eBack指令信号を生成する。
ステップ(3.3) にて自らが上位バス#0に発行したIn
validateを信号線504を介して取り込む。こ
のInvalidateを受け取った下位バス判定回路
314は、上位トランザクションバッファ312に格納
されているWriteBack要否の判定結果(前記ス
テップ(3.3) 参照)を読み出し、これに従ってWrit
eBack指令信号を生成する。
【0299】この動作例では、ステップ(3.3) にてWr
iteBackが必要と判定されているので、下位バス
出力判定回路314は、アドレスBのデータを書き戻す
ためのWriteBackの発行を指示する指令信号を
生成する。この指令信号は、下位バストランザクション
生成・保持回路330に出力する。
iteBackが必要と判定されているので、下位バス
出力判定回路314は、アドレスBのデータを書き戻す
ためのWriteBackの発行を指示する指令信号を
生成する。この指令信号は、下位バストランザクション
生成・保持回路330に出力する。
【0300】(11.2)これを受け取った下位バストランザ
クション生成・保持回路330は、アドレスBについて
のWriteBackトランザクションを生成する。そ
して、このWriteBackは、下位バスアービトレ
ーション回路328により下位バスの使用権が取得でき
次第、信号線516を経由して下位バスに発行される。
クション生成・保持回路330は、アドレスBについて
のWriteBackトランザクションを生成する。そ
して、このWriteBackは、下位バスアービトレ
ーション回路328により下位バスの使用権が取得でき
次第、信号線516を経由して下位バスに発行される。
【0301】(11.3)また、下位バス出力判定回路314
からのWriteBack指示は、キャッシュ制御回路
322にも入力される。この指示を受けたキャッシュ制
御回路322は、エビクションバッファ336からアド
レスBのデータを出力させる。このデータは、信号線5
22を経由して下位バスに出力される。
からのWriteBack指示は、キャッシュ制御回路
322にも入力される。この指示を受けたキャッシュ制
御回路322は、エビクションバッファ336からアド
レスBのデータを出力させる。このデータは、信号線5
22を経由して下位バスに出力される。
【0302】このようにして、バスブリッジ#0からの
WriteBackによって、アドレスBのデータがメ
インメモリに書き戻される。
WriteBackによって、アドレスBのデータがメ
インメモリに書き戻される。
【0303】実施形態2.以上説明した実施形態1は、
階層バスシステムにおいて、バスの電気的な制約を克服
して一つのシステム上に接続できるCPUの数を増やす
ものであった。
階層バスシステムにおいて、バスの電気的な制約を克服
して一つのシステム上に接続できるCPUの数を増やす
ものであった。
【0304】ところで、一つの階層バスシステム上に接
続可能なCPUの数は、そのような物理的な制約のみな
らず論理的な制約を受けることもある。
続可能なCPUの数は、そのような物理的な制約のみな
らず論理的な制約を受けることもある。
【0305】すなわち、同時に複数のバストランザクシ
ョンのスプリットを許容する場合、各トランザクション
に対するスプリット応答を正確に発行元のCPUに返す
ためにトランザクションにIDを持たせる。このIDを
スプリットIDと呼ぶ。従来の階層バスシステムでは、
このスプリットIDは、図8に示すように次のように定
義されていた。
ョンのスプリットを許容する場合、各トランザクション
に対するスプリット応答を正確に発行元のCPUに返す
ためにトランザクションにIDを持たせる。このIDを
スプリットIDと呼ぶ。従来の階層バスシステムでは、
このスプリットIDは、図8に示すように次のように定
義されていた。
【0306】
【数1】 スプリットID=CPU_ID+トランザクションID ここで、CPU_IDは、階層バスシステム内の各CP
Uごとに一意的に定められる。また、トランザクション
IDは、各CPU内においてトランザクションごとに一
意的に定められる。このようなスプリットIDをみれ
ば、バス上のトランザクションが一意的に特定され、ま
たスプリット応答の宛先が特定される。
Uごとに一意的に定められる。また、トランザクション
IDは、各CPU内においてトランザクションごとに一
意的に定められる。このようなスプリットIDをみれ
ば、バス上のトランザクションが一意的に特定され、ま
たスプリット応答の宛先が特定される。
【0307】ところが、このようなスプリットIDで
は、システム上に接続可能なCPUの個数がCPU_I
Dのビット数によって制限されてしまう。例えば、CP
U_IDに2ビットが割り当てられている場合は、シス
テムに接続可能なCPUの個数は4個に限定される。こ
れがCPU接続個数に対する論理的な制約である。
は、システム上に接続可能なCPUの個数がCPU_I
Dのビット数によって制限されてしまう。例えば、CP
U_IDに2ビットが割り当てられている場合は、シス
テムに接続可能なCPUの個数は4個に限定される。こ
れがCPU接続個数に対する論理的な制約である。
【0308】従って、実施形態1のごとくシステムの階
層化を行い、物理的な制約を回避したとしても、従来の
ようなスプリットIDの割り当て方では、上記論理的な
制約によりシステムに接続可能なCPUの個数が限られ
てしまう。
層化を行い、物理的な制約を回避したとしても、従来の
ようなスプリットIDの割り当て方では、上記論理的な
制約によりシステムに接続可能なCPUの個数が限られ
てしまう。
【0309】本実施形態2は、このような論理的な制約
を回避しようとするものである。この実施形態は、図1
に示したバスブリッジを用いた階層型のシステムに適用
される。
を回避しようとするものである。この実施形態は、図1
に示したバスブリッジを用いた階層型のシステムに適用
される。
【0310】本実施形態では、上記論理的な制約を回避
するために、各バスブリッジにそれぞれ固有のID(以
下、ブリッジIDと呼ぶ)を与え、下位バス上でのトラ
ンザクションのスプリットIDを次のように定義する。
するために、各バスブリッジにそれぞれ固有のID(以
下、ブリッジIDと呼ぶ)を与え、下位バス上でのトラ
ンザクションのスプリットIDを次のように定義する。
【0311】
【数2】下位バススプリットID=ブリッジID+CP
U_ID+トランザクションID したがって、本実施形態における上位バス及び下位バス
上のトランザクションのスプリットIDの構成は図9に
示すようになる。
U_ID+トランザクションID したがって、本実施形態における上位バス及び下位バス
上のトランザクションのスプリットIDの構成は図9に
示すようになる。
【0312】ここで、CPU、バスブリッジ、I/Oな
どの各エージェントのIDは、各バスごとに一意的にな
るように定める。例えば、図1では下位バスに複数のバ
スブリッジ、メインメモリ、及びI/O装置が接続され
ているが、それら各エージェントにIDを与える場合に
は、下位バス内において一意的なIDを与える。また、
各上位バスについても各CPU及びバスブリッジに対し
て上位バス内において一意的なIDを与える。このよう
なID割り当てを行った場合、バスブリッジに対して
は、上位バスについてのIDと下位バスについてのID
の2種類のIDが与えられる。したがって、図9に示す
下位バススプリットIDにおけるブリッジIDは、バス
ブリッジの2つのIDのうち下位バスについてのIDを
指す。
どの各エージェントのIDは、各バスごとに一意的にな
るように定める。例えば、図1では下位バスに複数のバ
スブリッジ、メインメモリ、及びI/O装置が接続され
ているが、それら各エージェントにIDを与える場合に
は、下位バス内において一意的なIDを与える。また、
各上位バスについても各CPU及びバスブリッジに対し
て上位バス内において一意的なIDを与える。このよう
なID割り当てを行った場合、バスブリッジに対して
は、上位バスについてのIDと下位バスについてのID
の2種類のIDが与えられる。したがって、図9に示す
下位バススプリットIDにおけるブリッジIDは、バス
ブリッジの2つのIDのうち下位バスについてのIDを
指す。
【0313】この方式において、上位バスのトランザク
ションに対するスプリットIDは、その上位バスを発行
したCPUのIDと、そのCPUにおける当該トランザ
クションのIDから定められる。そして、上位バス・ト
ランザクションをスプリットして下位バスにトランザク
ションを発行した場合、その下位バス・トランザクショ
ンには、元の上位バス・トランザクションのCPU_I
D及びトランザクションIDに当該スプリットを行った
バスブリッジの下位バスに対するブリッジIDを加えた
ものを下位バススプリットIDとして与える。このよう
な下位バススプリットIDによれば、各ブリッジから下
位バスに発行されたトランザクションを一意的に特定す
ることができる。
ションに対するスプリットIDは、その上位バスを発行
したCPUのIDと、そのCPUにおける当該トランザ
クションのIDから定められる。そして、上位バス・ト
ランザクションをスプリットして下位バスにトランザク
ションを発行した場合、その下位バス・トランザクショ
ンには、元の上位バス・トランザクションのCPU_I
D及びトランザクションIDに当該スプリットを行った
バスブリッジの下位バスに対するブリッジIDを加えた
ものを下位バススプリットIDとして与える。このよう
な下位バススプリットIDによれば、各ブリッジから下
位バスに発行されたトランザクションを一意的に特定す
ることができる。
【0314】下位バススプリットIDの割り付けはバス
ブリッジによって行われる。より具体的に、バスブリッ
ジとして図6に示す構成の装置を用いた場合には、下位
バススプリットIDの割り付けは、下位バストランザク
ション生成・保持回路330で行われる。
ブリッジによって行われる。より具体的に、バスブリッ
ジとして図6に示す構成の装置を用いた場合には、下位
バススプリットIDの割り付けは、下位バストランザク
ション生成・保持回路330で行われる。
【0315】このようなスプリットID割り付け方式に
よれば、1つの上位バスに接続可能なCPUの個数は従
来同様限定されるものの、システム全体では、上位バス
の数を増やすことによってCPUの個数を増やすことが
可能となる。
よれば、1つの上位バスに接続可能なCPUの個数は従
来同様限定されるものの、システム全体では、上位バス
の数を増やすことによってCPUの個数を増やすことが
可能となる。
【0316】変形例1.次に、実施形態2の下位バスス
プリットID割り当て方式の変形例1について説明す
る。
プリットID割り当て方式の変形例1について説明す
る。
【0317】図10は、この変形例1の方式によるスプ
リットIDの構成を示す説明図である。図に示すよう
に、この変形例では、下位バススプリットIDを割り当
てるときに、上位バススプリットIDに単にブリッジI
Dを付加するのではなく、上位バススプリットIDのビ
ット数を縮退したものを下位バスにおけるトランザクシ
ョンIDとする。そして、この下位バス・トランザクシ
ョンIDにブリッジIDを付加することにより、下位バ
ススプリットIDのビット数を上位バススプリットID
のビット数と等しくする。ここで、上位バススプリット
IDから下位バスにおけるトランザクションIDを生成
する際には、この下位バス・トランザクションIDがス
プリットを行ったバスブリッジにおいてトランザクショ
ンごとに一意的となるようにする。
リットIDの構成を示す説明図である。図に示すよう
に、この変形例では、下位バススプリットIDを割り当
てるときに、上位バススプリットIDに単にブリッジI
Dを付加するのではなく、上位バススプリットIDのビ
ット数を縮退したものを下位バスにおけるトランザクシ
ョンIDとする。そして、この下位バス・トランザクシ
ョンIDにブリッジIDを付加することにより、下位バ
ススプリットIDのビット数を上位バススプリットID
のビット数と等しくする。ここで、上位バススプリット
IDから下位バスにおけるトランザクションIDを生成
する際には、この下位バス・トランザクションIDがス
プリットを行ったバスブリッジにおいてトランザクショ
ンごとに一意的となるようにする。
【0318】このように下位バススプリットIDを定め
ることにより、下位バスに対して上位バス用のデバイス
(例えばCPU)を接続することが可能となる。
ることにより、下位バスに対して上位バス用のデバイス
(例えばCPU)を接続することが可能となる。
【0319】なお、この構成においては、上位バスのス
プリットIDとこれを圧縮したトランザクションIDと
の対応関係を管理するID管理手段をバスブリッジに設
ける。 変形例2.次に、実施形態2の下位バススプリ
ットID割り当て方式の変形例2について説明する。
プリットIDとこれを圧縮したトランザクションIDと
の対応関係を管理するID管理手段をバスブリッジに設
ける。 変形例2.次に、実施形態2の下位バススプリ
ットID割り当て方式の変形例2について説明する。
【0320】図11は、この変形例2の方式によるスプ
リットIDの構成を示す説明図である。図に示すよう
に、この変形例では、ブリッジIDをCPU_IDと同
ビット数になるように設定する。そして、下位バススプ
リットIDを割り当てるときに、上記変形例1と同様、
上位バススプリットIDを変形して下位バスにおけるト
ランザクションIDを生成する。このとき、本変形例で
は、上位バスでのトランザクションIDのビット数と等
しくなるように上位バススプリットIDを縮退して、下
位バス・トランザクションIDを生成する。そして、こ
の下位バス・トランザクションIDにブリッジIDを付
加することにより、下位バススプリットIDのビット数
を上位バススプリットIDのビット数と等しくする。
リットIDの構成を示す説明図である。図に示すよう
に、この変形例では、ブリッジIDをCPU_IDと同
ビット数になるように設定する。そして、下位バススプ
リットIDを割り当てるときに、上記変形例1と同様、
上位バススプリットIDを変形して下位バスにおけるト
ランザクションIDを生成する。このとき、本変形例で
は、上位バスでのトランザクションIDのビット数と等
しくなるように上位バススプリットIDを縮退して、下
位バス・トランザクションIDを生成する。そして、こ
の下位バス・トランザクションIDにブリッジIDを付
加することにより、下位バススプリットIDのビット数
を上位バススプリットIDのビット数と等しくする。
【0321】この変形例2の方式によれば、上位バスス
プリットIDと下位バススプリットIDとが同ビット数
となるだけでなく、上位バススプリットIDにおけるC
PU_IDと下位バススプリットIDにおけるブリッジ
IDとが同ビット数となる。したがって、この方式によ
れば、バスブリッジとCPUとを論理的に等価に扱うこ
とができ、図1に示した下位バスに対してCPUを接続
することが可能となり、システム構成の柔軟性が向上す
る。
プリットIDと下位バススプリットIDとが同ビット数
となるだけでなく、上位バススプリットIDにおけるC
PU_IDと下位バススプリットIDにおけるブリッジ
IDとが同ビット数となる。したがって、この方式によ
れば、バスブリッジとCPUとを論理的に等価に扱うこ
とができ、図1に示した下位バスに対してCPUを接続
することが可能となり、システム構成の柔軟性が向上す
る。
【0322】なお、以上では、バスブリッジから下位バ
スに発行するトランザクションに対して与えるスプリッ
トIDの生成方式について説明したが、この変形例の方
式はバスブリッジから上位バスに発行するトランザクシ
ョンに与えるスプリットIDにも応用することができ
る。この場合、バスブリッジは、下位バスから受け取っ
たトランザクションのスプリットIDを変形してトラン
ザクションIDを生成し、このトランザクションIDに
対して当該バスブリッジの上位バスにおけるブリッジI
Dを付加することにより上位バススプリットIDを生成
する。
スに発行するトランザクションに対して与えるスプリッ
トIDの生成方式について説明したが、この変形例の方
式はバスブリッジから上位バスに発行するトランザクシ
ョンに与えるスプリットIDにも応用することができ
る。この場合、バスブリッジは、下位バスから受け取っ
たトランザクションのスプリットIDを変形してトラン
ザクションIDを生成し、このトランザクションIDに
対して当該バスブリッジの上位バスにおけるブリッジI
Dを付加することにより上位バススプリットIDを生成
する。
【0323】この変形例2における具体的なスプリット
IDの割り付け方について説明する。まず、上位バスに
発行されたトランザクションをバスブリッジがスプリッ
トして下位バスにトランザクションを発行する場合にお
けるスプリットIDの割り付け方から説明する。
IDの割り付け方について説明する。まず、上位バスに
発行されたトランザクションをバスブリッジがスプリッ
トして下位バスにトランザクションを発行する場合にお
けるスプリットIDの割り付け方から説明する。
【0324】この例では、バスブリッジ内に図12に示
すような管理テーブルを設け、この管理テーブルを用い
て下位バススプリットIDを決定する。図12に示す管
理テーブルは、トランザクションIDの数の分だけの欄
から構成される。例えば、トランザクションIDが8ビ
ットである場合には、管理テーブルは256の欄から構
成される。管理テーブルの各欄には、当該トランザクシ
ョンIDが使用中であるか未使用であるかを示す使用/
未使用フラグが設けられる。
すような管理テーブルを設け、この管理テーブルを用い
て下位バススプリットIDを決定する。図12に示す管
理テーブルは、トランザクションIDの数の分だけの欄
から構成される。例えば、トランザクションIDが8ビ
ットである場合には、管理テーブルは256の欄から構
成される。管理テーブルの各欄には、当該トランザクシ
ョンIDが使用中であるか未使用であるかを示す使用/
未使用フラグが設けられる。
【0325】上位バスのトランザクションをスプリット
すると決定した場合、バスブリッジは、図12の管理テ
ーブルから未使用の欄を探し出し、この結果見付かった
未使用欄のトランザクションIDを、下位バスに対して
発行するトランザクションのトランザクションIDとす
る。次に、このトランザクションIDに当該バスブリッ
ジのブリッジIDを付加して下位バススプリットIDと
する。そして、バスブリッジは、このようにして求めら
れた下位バススプリットIDをヘッダ等に付加して、下
位バスに対してトランザクションを発行する。また、こ
のとき、管理テーブルの当該トランザクションIDの欄
には、スプリットを行った上位バス・トランザクション
のスプリットIDが登録され、使用/未使用フラグが
「未使用」から「使用中」に変更される。そして、「使
用中」となった欄は、スプリットしたトランザクション
に対するスプリット応答トランザクションを発行する際
に、使用/未使用フラグが「未使用」に変更される。こ
れにより、その欄に対応するトランザクションIDは再
び使用可能となる。
すると決定した場合、バスブリッジは、図12の管理テ
ーブルから未使用の欄を探し出し、この結果見付かった
未使用欄のトランザクションIDを、下位バスに対して
発行するトランザクションのトランザクションIDとす
る。次に、このトランザクションIDに当該バスブリッ
ジのブリッジIDを付加して下位バススプリットIDと
する。そして、バスブリッジは、このようにして求めら
れた下位バススプリットIDをヘッダ等に付加して、下
位バスに対してトランザクションを発行する。また、こ
のとき、管理テーブルの当該トランザクションIDの欄
には、スプリットを行った上位バス・トランザクション
のスプリットIDが登録され、使用/未使用フラグが
「未使用」から「使用中」に変更される。そして、「使
用中」となった欄は、スプリットしたトランザクション
に対するスプリット応答トランザクションを発行する際
に、使用/未使用フラグが「未使用」に変更される。こ
れにより、その欄に対応するトランザクションIDは再
び使用可能となる。
【0326】例えば、バスブリッジとして図6に示す構
成を用いた場合、この管理テーブルは上位バストランザ
クションバッファ312に格納される。上位トランザク
ションバッファ312は、信号線504から入力される
スプリットIDと下位バス出力判定回路314からのス
プリットについての情報に基づいて前述したような管理
テーブルのメンテナンスを行う。すなわち、バスブリッ
ジが上位バスからのトランザクションを受け取ったと
き、その上位バストランザクションのスプリットIDが
信号線504を経由して上位トランザクションバッファ
312に入力される。そして、下位バス出力判定回路3
14にてトランザクションのスプリットが決定される
と、この決定を示す信号が上位トランザクションバッフ
ァ312に入力される。すると、上位バストランザクシ
ョンバッファ312は、管理テーブルの未使用欄を探
し、見付かった未使用欄に上位バスのスプリットIDを
格納し、その欄のフラグを「使用中」に変更する。同時
に、上位バストランザクションバッファ312は、その
欄の番号(トランザクションIDに対応)を示す信号を
下位バストランザクション生成・保持回路330に与え
る。下位バストランザクション生成・保持回路330
は、受け取った欄番号に対応するトランザクションID
を求め、このトランザクションIDに当該バスブリッジ
の下位バス用のブリッジIDを付加して下位バススプリ
ットIDを生成する。
成を用いた場合、この管理テーブルは上位バストランザ
クションバッファ312に格納される。上位トランザク
ションバッファ312は、信号線504から入力される
スプリットIDと下位バス出力判定回路314からのス
プリットについての情報に基づいて前述したような管理
テーブルのメンテナンスを行う。すなわち、バスブリッ
ジが上位バスからのトランザクションを受け取ったと
き、その上位バストランザクションのスプリットIDが
信号線504を経由して上位トランザクションバッファ
312に入力される。そして、下位バス出力判定回路3
14にてトランザクションのスプリットが決定される
と、この決定を示す信号が上位トランザクションバッフ
ァ312に入力される。すると、上位バストランザクシ
ョンバッファ312は、管理テーブルの未使用欄を探
し、見付かった未使用欄に上位バスのスプリットIDを
格納し、その欄のフラグを「使用中」に変更する。同時
に、上位バストランザクションバッファ312は、その
欄の番号(トランザクションIDに対応)を示す信号を
下位バストランザクション生成・保持回路330に与え
る。下位バストランザクション生成・保持回路330
は、受け取った欄番号に対応するトランザクションID
を求め、このトランザクションIDに当該バスブリッジ
の下位バス用のブリッジIDを付加して下位バススプリ
ットIDを生成する。
【0327】以上説明したように、図12に示すような
管理テーブルを用いて各トランザクションIDの使用/
未使用を管理し、上位バストランザクションをスプリッ
トする場合には、それらトランザクションIDのうち未
使用のものを順に下位バススプリットID中のトランザ
クションIDとして使用することにより、下位バスに対
して規定されているトランザクションIDを無駄なく使
用することが可能になる。すなわち、例えば下位バスに
おけるトランザクションIDを、上位バススプリットI
Dから関数などを用いて定める場合、異なった上位バス
スプリットIDが同じ下位バストランザクションIDに
マッピングされる可能性がある。この場合、後から来た
上位バストランザクションはスプリットすることができ
ず、後の上位バストランザクションについてはCPUに
対してリトライをさせることになる。これに対して本構
成のごとく管理テーブルを用いた場合では、異なった上
位バストランザクションに対して同一の下位バストラン
ザクションIDが割り当てられることはなく、トランザ
クションIDを無駄なく使用することができる。また、
リトライの発生頻度を減らすことができるので、システ
ム全体のスループット、レイテンシを向上させることが
できる。
管理テーブルを用いて各トランザクションIDの使用/
未使用を管理し、上位バストランザクションをスプリッ
トする場合には、それらトランザクションIDのうち未
使用のものを順に下位バススプリットID中のトランザ
クションIDとして使用することにより、下位バスに対
して規定されているトランザクションIDを無駄なく使
用することが可能になる。すなわち、例えば下位バスに
おけるトランザクションIDを、上位バススプリットI
Dから関数などを用いて定める場合、異なった上位バス
スプリットIDが同じ下位バストランザクションIDに
マッピングされる可能性がある。この場合、後から来た
上位バストランザクションはスプリットすることができ
ず、後の上位バストランザクションについてはCPUに
対してリトライをさせることになる。これに対して本構
成のごとく管理テーブルを用いた場合では、異なった上
位バストランザクションに対して同一の下位バストラン
ザクションIDが割り当てられることはなく、トランザ
クションIDを無駄なく使用することができる。また、
リトライの発生頻度を減らすことができるので、システ
ム全体のスループット、レイテンシを向上させることが
できる。
【0328】なお、この方式においては、リトライが生
じるのは管理テーブルに未使用の欄がなくなった場合の
みである。このような場合において、上位バスからトラ
ンザクションが来た場合は、バスブリッジは上位バスに
リトライ終了信号を返し、CPUに同一トランザクショ
ンの再発行を要求する。
じるのは管理テーブルに未使用の欄がなくなった場合の
みである。このような場合において、上位バスからトラ
ンザクションが来た場合は、バスブリッジは上位バスに
リトライ終了信号を返し、CPUに同一トランザクショ
ンの再発行を要求する。
【0329】次に、下位バスのトランザクションを受け
取ったバスブリッジが上位バスにトランザクションを発
行する場合の、上位バストランザクションに対するスプ
リットIDの割り付け方について説明する。
取ったバスブリッジが上位バスにトランザクションを発
行する場合の、上位バストランザクションに対するスプ
リットIDの割り付け方について説明する。
【0330】この場合は、バスブリッジ内に図13に示
すような管理テーブルを設け、この管理テーブルを用い
て上位バススプリットIDを決定する。図13の管理テ
ーブルは、図12に示したものと同様の構成を有してい
る。
すような管理テーブルを設け、この管理テーブルを用い
て上位バススプリットIDを決定する。図13の管理テ
ーブルは、図12に示したものと同様の構成を有してい
る。
【0331】バスブリッジが、下位バスのトランザクシ
ョンを受けて上位バスに対してトランザクションを発行
する場合、前記図12の場合と同様にして、図13の管
理テーブルの未使用欄のトランザクションIDを、上位
バスに対して発行するトランザクションのトランザクシ
ョンIDとする。次に、このトランザクションIDに当
該バスブリッジの上位バスに対するブリッジIDを付加
して上位バススプリットIDとする。このとき、管理テ
ーブルの当該トランザクションIDに対応する欄には、
下位バスバス・トランザクションのスプリットIDが登
録され、使用/未使用フラグが「未使用」から「使用
中」に変更される。そして、「使用中」の欄は、上位バ
スに発行したトランザクション終了したときに「未使
用」に変更される。これにより、その欄に対応するトラ
ンザクションIDは再び使用可能となる。
ョンを受けて上位バスに対してトランザクションを発行
する場合、前記図12の場合と同様にして、図13の管
理テーブルの未使用欄のトランザクションIDを、上位
バスに対して発行するトランザクションのトランザクシ
ョンIDとする。次に、このトランザクションIDに当
該バスブリッジの上位バスに対するブリッジIDを付加
して上位バススプリットIDとする。このとき、管理テ
ーブルの当該トランザクションIDに対応する欄には、
下位バスバス・トランザクションのスプリットIDが登
録され、使用/未使用フラグが「未使用」から「使用
中」に変更される。そして、「使用中」の欄は、上位バ
スに発行したトランザクション終了したときに「未使
用」に変更される。これにより、その欄に対応するトラ
ンザクションIDは再び使用可能となる。
【0332】例えば、バスブリッジとして図6に示す構
成を用いた場合、この管理テーブルは下位バストランザ
クションバッファ326に格納される。下位バストラン
ザクションバッファ326は、信号線516から入力さ
れる下位バススプリットIDと、上位バス出力判定回路
316から入力される上位バスに対するトランザクショ
ン発行の有無についての情報とに基づき、管理テーブル
をメンテナンスする。すなわち、上位バス出力判定回路
314にて上位バスに対してトランザクションを発行す
ると決定された場合、下位バストランザクションバッフ
ァ326の管理テーブルの未使用欄に元の下位バストラ
ンザクションのスプリットIDが登録され、その欄の番
号を示す信号が上位バストランザクション生成・保持回
路304に入力される。そして、上位バストランザクシ
ョン生成・保持回路304は、その欄番号に対応するト
ランザクションIDを求め、このトランザクションID
に当該バスブリッジの上位バス用のブリッジIDを付加
して上位バススプリットIDを生成する。
成を用いた場合、この管理テーブルは下位バストランザ
クションバッファ326に格納される。下位バストラン
ザクションバッファ326は、信号線516から入力さ
れる下位バススプリットIDと、上位バス出力判定回路
316から入力される上位バスに対するトランザクショ
ン発行の有無についての情報とに基づき、管理テーブル
をメンテナンスする。すなわち、上位バス出力判定回路
314にて上位バスに対してトランザクションを発行す
ると決定された場合、下位バストランザクションバッフ
ァ326の管理テーブルの未使用欄に元の下位バストラ
ンザクションのスプリットIDが登録され、その欄の番
号を示す信号が上位バストランザクション生成・保持回
路304に入力される。そして、上位バストランザクシ
ョン生成・保持回路304は、その欄番号に対応するト
ランザクションIDを求め、このトランザクションID
に当該バスブリッジの上位バス用のブリッジIDを付加
して上位バススプリットIDを生成する。
【0333】このように、図13に示す管理テーブルを
用いて上位バススプリットIDを管理することにより、
異なった下位バススプリットIDに対して同一の上位バ
ススプリットIDが割り付けられることがなくなり、ト
ランザクションIDを無駄なく使用することができる。
したがって、上位バススプリットIDに空きがない場合
に起こる下位バストランザクションのウエイト(wai
t:上位バスにトランザクションが発行可能となるまで
下位バスのトランザクションを待たせること。この間下
位バスは当該トランザクションによって占有される)処
理の頻度も減らすことができ、システム全体のスループ
ット、レイテンシを向上させることができる。
用いて上位バススプリットIDを管理することにより、
異なった下位バススプリットIDに対して同一の上位バ
ススプリットIDが割り付けられることがなくなり、ト
ランザクションIDを無駄なく使用することができる。
したがって、上位バススプリットIDに空きがない場合
に起こる下位バストランザクションのウエイト(wai
t:上位バスにトランザクションが発行可能となるまで
下位バスのトランザクションを待たせること。この間下
位バスは当該トランザクションによって占有される)処
理の頻度も減らすことができ、システム全体のスループ
ット、レイテンシを向上させることができる。
【0334】なお、この方式において下位バストランザ
クションのウエイトが生じるのは、管理テーブルに未使
用欄がなくなった場合のみである。
クションのウエイトが生じるのは、管理テーブルに未使
用欄がなくなった場合のみである。
【0335】実施形態3.実施形態1においては、階層
バスシステムにおける上位バスの仕様と下位バスの仕様
との関係については特に規定していなかった。
バスシステムにおける上位バスの仕様と下位バスの仕様
との関係については特に規定していなかった。
【0336】これに対して本実施態は、上位バスの仕様
と下位バスの仕様とに一定の関係を規定することによ
り、階層バスシステムのシステム構成の柔軟性を向上さ
せることを目的とするものである。
と下位バスの仕様とに一定の関係を規定することによ
り、階層バスシステムのシステム構成の柔軟性を向上さ
せることを目的とするものである。
【0337】すなわち、本実施形態では、バスの物理的
仕様及び論理的仕様の両方について、上位バスと下位バ
スとで仕様の統一を図る。ここで、バスの物理的仕様に
は、バス上の信号の電気レベルやバスが動作可能なクロ
ック周波数などがある。また、論理的仕様としては、バ
ス上のトランザクションの種類及びそのビットパタン、
トランザクションの要求アドレスの範囲及びその表現形
式、バスに接続されるキャッシュが出力するスヌープ出
力の表現形式及びそのビットパタン、バス上におけるト
ランザクションの識別子であるスプリットIDの構成な
どがある。なお、スプリットIDの構成の仕様の統一に
は、前記実施形態2の変形例2において説明したスプリ
ットID構成方式、すなわち上位バススプリットIDと
下位バススプリットIDとのビット幅を同一にし、上位
バススプリットIDにおけるCPU_IDと下位バスス
プリットIDにおけるブリッジIDとのビット幅を同一
にすることが含まれる。
仕様及び論理的仕様の両方について、上位バスと下位バ
スとで仕様の統一を図る。ここで、バスの物理的仕様に
は、バス上の信号の電気レベルやバスが動作可能なクロ
ック周波数などがある。また、論理的仕様としては、バ
ス上のトランザクションの種類及びそのビットパタン、
トランザクションの要求アドレスの範囲及びその表現形
式、バスに接続されるキャッシュが出力するスヌープ出
力の表現形式及びそのビットパタン、バス上におけるト
ランザクションの識別子であるスプリットIDの構成な
どがある。なお、スプリットIDの構成の仕様の統一に
は、前記実施形態2の変形例2において説明したスプリ
ットID構成方式、すなわち上位バススプリットIDと
下位バススプリットIDとのビット幅を同一にし、上位
バススプリットIDにおけるCPU_IDと下位バスス
プリットIDにおけるブリッジIDとのビット幅を同一
にすることが含まれる。
【0338】このように上位バスと下位バスとの仕様を
同一にすることにより、以下に示すようにシステム構成
のバリエーションを広げることができる。
同一にすることにより、以下に示すようにシステム構成
のバリエーションを広げることができる。
【0339】まず、図14に示すように、下位バスに対
して、上位バス上のCPU#0〜#2と同等のCPU#
3を接続可能となる。このとき、下位バスに接続された
バスブリッジ及びCPU#3にはそれぞれ下位バス上で
一意的なIDを与え、これをスプリットID生成の際に
用いる。具体的なスプリットIDの生成方式としては、
実施形態2のものを用いることができる。
して、上位バス上のCPU#0〜#2と同等のCPU#
3を接続可能となる。このとき、下位バスに接続された
バスブリッジ及びCPU#3にはそれぞれ下位バス上で
一意的なIDを与え、これをスプリットID生成の際に
用いる。具体的なスプリットIDの生成方式としては、
実施形態2のものを用いることができる。
【0340】また、同一バス上にCPUとバスブリッジ
が接続可能という点を拡張すれば、バス上のCPUをバ
スブリッジと置き換えることにより、図15に示すよう
な多階層のシステムの構築が可能となる。この場合、各
バスに接続されたエージェント(CPU、バスブリッ
ジ)には、当該バス上において一意的なIDが与えら
れ、このIDにより当該バス上におけるトランザクショ
ンのスプリットIDを生成する。具体的なスプリットI
Dの生成方式としては、実施形態2のものを用いること
ができる。なお、図15において、第2上位バスのCP
Uをバスブリッジに置き換えることにより、さらに多階
層のシステムを構築することもできる。
が接続可能という点を拡張すれば、バス上のCPUをバ
スブリッジと置き換えることにより、図15に示すよう
な多階層のシステムの構築が可能となる。この場合、各
バスに接続されたエージェント(CPU、バスブリッ
ジ)には、当該バス上において一意的なIDが与えら
れ、このIDにより当該バス上におけるトランザクショ
ンのスプリットIDを生成する。具体的なスプリットI
Dの生成方式としては、実施形態2のものを用いること
ができる。なお、図15において、第2上位バスのCP
Uをバスブリッジに置き換えることにより、さらに多階
層のシステムを構築することもできる。
【0341】また、本実施形態において、実際的なシス
テム構成の柔軟性を向上させるためには、モジュール化
の手法を採用することもできる。
テム構成の柔軟性を向上させるためには、モジュール化
の手法を採用することもできる。
【0342】すなわち、コンピュータ本体には、メイン
メモリ及びI/O装置等を接続した下位バス構成のみを
設けておき、CPU等の上位の構成はボード化して適宜
交換可能とする。交換ユニットたるボードとしては、一
つのCPUのみを実装したボードや、1つ以上のCPU
とバスブリッジ及びブリッジキャッシュとを1本のバス
に接続して構成した1つのクラスタを実装したボード等
を用いることができる。これら各種のボードは、下位バ
スに接続可能なインタフェースを有する。
メモリ及びI/O装置等を接続した下位バス構成のみを
設けておき、CPU等の上位の構成はボード化して適宜
交換可能とする。交換ユニットたるボードとしては、一
つのCPUのみを実装したボードや、1つ以上のCPU
とバスブリッジ及びブリッジキャッシュとを1本のバス
に接続して構成した1つのクラスタを実装したボード等
を用いることができる。これら各種のボードは、下位バ
スに接続可能なインタフェースを有する。
【0343】この方式によれば、例えば図16に示すよ
うに、1つCPUのボード100を接続した1CPUの
システムから、クラスタを収容したボード102を接続
したマルチCPUのシステムに容易にバージョンアップ
が可能となる。このように、この方式によれば、ユーザ
等の要望に合わせてシステム構成を容易に変更すること
が可能となる。
うに、1つCPUのボード100を接続した1CPUの
システムから、クラスタを収容したボード102を接続
したマルチCPUのシステムに容易にバージョンアップ
が可能となる。このように、この方式によれば、ユーザ
等の要望に合わせてシステム構成を容易に変更すること
が可能となる。
【0344】また、図17に示すように、CPU、メイ
ンメモリ及びI/O装置を含む基本的なシステムに対し
て、追加ボードとしてクラスタを収容したボード102
を接続するという構成も可能である。
ンメモリ及びI/O装置を含む基本的なシステムに対し
て、追加ボードとしてクラスタを収容したボード102
を接続するという構成も可能である。
【0345】更には、下位バスに対して複数のボードを
並列接続することにより、システムの性能を更に向上さ
せることも可能である。
並列接続することにより、システムの性能を更に向上さ
せることも可能である。
【0346】実施形態4.以上説明した各実施形態は、
複数のCPUが1つの下位バスを介して1つのメインメ
モリを共有するシステムについてのものであった。これ
に対して、本実施形態は、下位バス−メインメモリを複
数系統設け、これらメインメモリをそれぞれ上位の複数
のCPUで共有する。
複数のCPUが1つの下位バスを介して1つのメインメ
モリを共有するシステムについてのものであった。これ
に対して、本実施形態は、下位バス−メインメモリを複
数系統設け、これらメインメモリをそれぞれ上位の複数
のCPUで共有する。
【0347】図18は、実施形態4に係る階層バスシス
テムの一例の構成を示す説明図である。図18におい
て、図1と同一の部分には同一の番号を付してその説明
を省略する。
テムの一例の構成を示す説明図である。図18におい
て、図1と同一の部分には同一の番号を付してその説明
を省略する。
【0348】図18に示すシステムは、2つの下位バス
40a,40bを有し、下位バス40aにはメインメモ
リ50a及びI/O装置52aが、また下位バス40b
にはメインメモリ50b及びI/O装置52bが、それ
ぞれ接続されている。そして、このシステムにおいて
は、各上位バスには、それぞれ2つ下位バスにそれぞれ
接続するために、2系統のバスブリッジ及びブリッジキ
ャッシュが設けられている。すなわち、上位バス20に
は、下位バス40aと接続するためのバスブリッジ30
a及びブリッジキャッシュ31aと、下位バス40bと
接続するためのバスブリッジ30b及びブリッジキャッ
シュ31bとが接続されている。また、上位バス22に
は、下位バス40aと接続するためのバスブリッジ32
a及びブリッジキャッシュ33aと、下位バス40bと
接続するためのバスブリッジ32b及びブリッジキャッ
シュ33bとが接続されている。
40a,40bを有し、下位バス40aにはメインメモ
リ50a及びI/O装置52aが、また下位バス40b
にはメインメモリ50b及びI/O装置52bが、それ
ぞれ接続されている。そして、このシステムにおいて
は、各上位バスには、それぞれ2つ下位バスにそれぞれ
接続するために、2系統のバスブリッジ及びブリッジキ
ャッシュが設けられている。すなわち、上位バス20に
は、下位バス40aと接続するためのバスブリッジ30
a及びブリッジキャッシュ31aと、下位バス40bと
接続するためのバスブリッジ30b及びブリッジキャッ
シュ31bとが接続されている。また、上位バス22に
は、下位バス40aと接続するためのバスブリッジ32
a及びブリッジキャッシュ33aと、下位バス40bと
接続するためのバスブリッジ32b及びブリッジキャッ
シュ33bとが接続されている。
【0349】この構成において、メインメモリ50a及
びメインメモリ50bにはそれぞれ異なったアドレス空
間が割り当てられる。したがって、各バスブリッジは、
自身が接続されている下位バスのメインメモリのアドレ
ス空間を自らの受け持ち範囲とする。すなわち、各バス
ブリッジは、上位バスから受け取ったトランザクション
の要求アドレスが自らの受け持ち範囲か否かを判定する
機構を有し、受け持ち範囲であると判定された場合にの
み、その上位バス・トランザクションに対する応答処理
を行う。例えば、CPU10から発せられたトランザク
ションがメインメモリ50bのアドレスに対するもので
あった場合、バスブリッジ30a,30bは共にそのト
ランザクションを受け取ってアドレスが各自の受け持ち
範囲に含まれるか否かを判定する。この結果、バスブリ
ッジ30bがそのトランザクションに対する処理を行う
ことになる。そして、バスブリッジ30bは、ブリッジ
キャッシュ31bのスヌープを行い、この結果に基づい
て必要に応じてトランザクションのスプリットなどの処
理を行う。
びメインメモリ50bにはそれぞれ異なったアドレス空
間が割り当てられる。したがって、各バスブリッジは、
自身が接続されている下位バスのメインメモリのアドレ
ス空間を自らの受け持ち範囲とする。すなわち、各バス
ブリッジは、上位バスから受け取ったトランザクション
の要求アドレスが自らの受け持ち範囲か否かを判定する
機構を有し、受け持ち範囲であると判定された場合にの
み、その上位バス・トランザクションに対する応答処理
を行う。例えば、CPU10から発せられたトランザク
ションがメインメモリ50bのアドレスに対するもので
あった場合、バスブリッジ30a,30bは共にそのト
ランザクションを受け取ってアドレスが各自の受け持ち
範囲に含まれるか否かを判定する。この結果、バスブリ
ッジ30bがそのトランザクションに対する処理を行う
ことになる。そして、バスブリッジ30bは、ブリッジ
キャッシュ31bのスヌープを行い、この結果に基づい
て必要に応じてトランザクションのスプリットなどの処
理を行う。
【0350】したがって、この構成では、上位バス2
0、22に接続された各CPU10〜15は、下位バス
及びメインメモリが2系統存在することを意識せずにト
ランザクションを発行することができる。
0、22に接続された各CPU10〜15は、下位バス
及びメインメモリが2系統存在することを意識せずにト
ランザクションを発行することができる。
【0351】このように、本実施形態では、システムに
複数のメインメモリを設け、各メインメモリを別々の下
位バスに接続したことにより、各下位バスの負荷を低減
し、下位バスのスループットを向上させることができ
る。
複数のメインメモリを設け、各メインメモリを別々の下
位バスに接続したことにより、各下位バスの負荷を低減
し、下位バスのスループットを向上させることができ
る。
【0352】なお、上記構成において、各バスブリッジ
の受け持ち範囲を、コンピュータ起動時のセルフテスト
において判明した各メインメモリの使用可能アドレス範
囲に基づき調節することもできる。この場合、各バスブ
リッジは、セルフテストで判明した使用可能アドレス範
囲情報を得て、各自の接続されている下位バスのメイン
メモリの使用可能アドレス範囲を自らの受け持ちアドレ
ス範囲として設定する。このような方法によれば、各バ
スブリッジの受け持ち範囲を最適化することができる。
の受け持ち範囲を、コンピュータ起動時のセルフテスト
において判明した各メインメモリの使用可能アドレス範
囲に基づき調節することもできる。この場合、各バスブ
リッジは、セルフテストで判明した使用可能アドレス範
囲情報を得て、各自の接続されている下位バスのメイン
メモリの使用可能アドレス範囲を自らの受け持ちアドレ
ス範囲として設定する。このような方法によれば、各バ
スブリッジの受け持ち範囲を最適化することができる。
【0353】また、図18の例では、各下位バス40
a,40bにそれぞれI/O装置52a又は52bが接
続されていたが、そのような構成では、トランザクショ
ンのアドレスによって使用可能なI/O装置が限定され
る。すなわち、あるトランザクションが、メインメモリ
50aのアドレスに対するものの場合は、そのトランザ
クションはI/O装置52aのみしか使用できない。逆
にいえば、すべてのトランザクションが、アドレスにか
かわりなく同一のI/O装置を利用できるようにするた
めには、複数の下位バスにそれぞれ同一のI/O装置を
接続する必要がある。
a,40bにそれぞれI/O装置52a又は52bが接
続されていたが、そのような構成では、トランザクショ
ンのアドレスによって使用可能なI/O装置が限定され
る。すなわち、あるトランザクションが、メインメモリ
50aのアドレスに対するものの場合は、そのトランザ
クションはI/O装置52aのみしか使用できない。逆
にいえば、すべてのトランザクションが、アドレスにか
かわりなく同一のI/O装置を利用できるようにするた
めには、複数の下位バスにそれぞれ同一のI/O装置を
接続する必要がある。
【0354】図19は、このような問題を解決するため
のシステム構成を示す説明図である。図19において、
図18と同一の部分には同一の符号を付してその説明を
省略する。
のシステム構成を示す説明図である。図19において、
図18と同一の部分には同一の符号を付してその説明を
省略する。
【0355】図19の構成では、1つのI/O装置52
が2つの下位バス40a,40bによって共有される。
すなわち、I/O装置52はI/Oバス56に接続さ
れ、下位バス40a及び40bはそれぞれバスブリッジ
54a及び54bを介してI/Oバス56に接続されて
いる。バスブリッジ54a及び54bにはブリッジキャ
ッシュは設けられない。バスブリッジ54a及び54b
は、下位バス40a又は40bから受け取ったトランザ
クションがI/O装置52に対するトランザクションで
あると判定した場合は、そのトランザクションをI/O
バス56に転送する。そして、I/O装置52は、I/
Oバス56からトランザクションを受け取り、必要な処
理を行う。
が2つの下位バス40a,40bによって共有される。
すなわち、I/O装置52はI/Oバス56に接続さ
れ、下位バス40a及び40bはそれぞれバスブリッジ
54a及び54bを介してI/Oバス56に接続されて
いる。バスブリッジ54a及び54bにはブリッジキャ
ッシュは設けられない。バスブリッジ54a及び54b
は、下位バス40a又は40bから受け取ったトランザ
クションがI/O装置52に対するトランザクションで
あると判定した場合は、そのトランザクションをI/O
バス56に転送する。そして、I/O装置52は、I/
Oバス56からトランザクションを受け取り、必要な処
理を行う。
【0356】図19の構成によれば、各トランザクショ
ンは、アドレスにかかわらず、システムが有するすべて
のI/O装置を使用することができる。
ンは、アドレスにかかわらず、システムが有するすべて
のI/O装置を使用することができる。
【0357】なお、図19の構成において、バスブリッ
ジ54a,54bが、下位バス40a又は40bからI
/Oバス56に対してトランザクションを転送するとき
に、スプリットを行うようにしてもよい。この場合、I
/Oトランザクション処理時における下位バスの負荷を
低減することができる。
ジ54a,54bが、下位バス40a又は40bからI
/Oバス56に対してトランザクションを転送するとき
に、スプリットを行うようにしてもよい。この場合、I
/Oトランザクション処理時における下位バスの負荷を
低減することができる。
【0358】また、バスブリッジとブリッジキャッシュ
とを1つのパッケージとして構成し、ブリッジキャッシ
ュを使用するモードと使用しないモードとを切り換え可
能とすることにより、一種類のバスブリッジ・パッケー
ジで上位バス−下位バス間用と下位バス−I/Oバス間
用の両方に用いることができる。
とを1つのパッケージとして構成し、ブリッジキャッシ
ュを使用するモードと使用しないモードとを切り換え可
能とすることにより、一種類のバスブリッジ・パッケー
ジで上位バス−下位バス間用と下位バス−I/Oバス間
用の両方に用いることができる。
【図1】 本発明に係る階層バスシステムの全体的な構
成の一例を示す概略構成図である。
成の一例を示す概略構成図である。
【図2】 実施形態1における変形例の概略構成を示す
説明図である。
説明図である。
【図3】 エビクションバッファを設けたバスブリッジ
の概略構成を示す説明図である。
の概略構成を示す説明図である。
【図4】 補助キャッシュを設けたバスブリッジの概略
構成を示す説明図である。
構成を示す説明図である。
【図5】 リトライ判定機能を有するバスブリッジの概
略構成を示す説明図である。
略構成を示す説明図である。
【図6】 実施形態1におけるバスブリッジ及びブリッ
ジキャッシュの構成を示すブロック図である。
ジキャッシュの構成を示すブロック図である。
【図7】 階層バスシステムの一例を示す図である。
【図8】 従来のスプリットIDの構成を示す図であ
る。
る。
【図9】 実施形態2における上位バススプリットID
と下位バススプリットIDの構成を示す図である。
と下位バススプリットIDの構成を示す図である。
【図10】 実施形態2の変形例1における上位バスス
プリットIDと下位バススプリットIDの構成を示す図
である。
プリットIDと下位バススプリットIDの構成を示す図
である。
【図11】 実施形態2の変形例2における上位バスス
プリットIDと下位バススプリットIDの構成を示す図
である。
プリットIDと下位バススプリットIDの構成を示す図
である。
【図12】 実施形態2の変形例2における下位バスト
ランザクションIDの管理テーブルを示す図である。
ランザクションIDの管理テーブルを示す図である。
【図13】 実施形態2の変形例2における上位バスト
ランザクションIDの管理テーブルを示す図である。
ランザクションIDの管理テーブルを示す図である。
【図14】 実施形態3における下位バスにCPUを接
続した階層バスシステムの構成を示す図である。
続した階層バスシステムの構成を示す図である。
【図15】 実施形態3における多階層の階層バスシス
テムの構成を示す図である。
テムの構成を示す図である。
【図16】 実施形態3におけるボード交換を示す説明
図である。
図である。
【図17】 実施形態3におけるボード追加を示す説明
図である。
図である。
【図18】 実施形態4に係る階層バスシステムの一例
の概略構成を示す説明図である。
の概略構成を示す説明図である。
【図19】 実施形態4において複数の下位バスがI/
O装置を共有する構成例を示す説明図である。
O装置を共有する構成例を示す説明図である。
【図20】 バス共有型の密結合マルチプロセッサシス
テムを示す概略図である。
テムを示す概略図である。
10〜15 CPU、20,22 上位バス、30,3
2 バスブリッジ、31,33 ブリッジキャッシュ、
40 下位バス、50 メインメモリ、52I/O装
置、60 バスブリッジ制御部、62 エビクションバ
ッファ、64アドレスレジスタ、66 データバッフ
ァ、68 補助キャッシュ、72 スプリット情報レジ
スタ、80 上位キャッシュ状態フラグ記憶部、300
バスブリッジ、302 上位バスアービトレーション回
路、304 上位バストランザクション生成保持回路、
306 スプリット応答生成回路、308 上位バスス
ヌープ出力生成回路、310 レスポンス生成回路、3
12 上位トランザクションバッファ、314 下位バ
ス出力判定回路、316 上位バス出力判定回路、31
8 タグリード回路、320 タグライト回路、322
キャッシュ制御回路、324 タグ更新回路、326
下位トランザクションバッファ、328下位バスアー
ビトレーション回路、330 下位バストランザクショ
ン生成保持回路、332 下位バススヌープ出力生成回
路、334 レスポンス受信回路、336 エビクショ
ンバッファ、338 リトライ判定回路、402 タグ
RAM、404 キャッシュRAM。
2 バスブリッジ、31,33 ブリッジキャッシュ、
40 下位バス、50 メインメモリ、52I/O装
置、60 バスブリッジ制御部、62 エビクションバ
ッファ、64アドレスレジスタ、66 データバッフ
ァ、68 補助キャッシュ、72 スプリット情報レジ
スタ、80 上位キャッシュ状態フラグ記憶部、300
バスブリッジ、302 上位バスアービトレーション回
路、304 上位バストランザクション生成保持回路、
306 スプリット応答生成回路、308 上位バスス
ヌープ出力生成回路、310 レスポンス生成回路、3
12 上位トランザクションバッファ、314 下位バ
ス出力判定回路、316 上位バス出力判定回路、31
8 タグリード回路、320 タグライト回路、322
キャッシュ制御回路、324 タグ更新回路、326
下位トランザクションバッファ、328下位バスアー
ビトレーション回路、330 下位バストランザクショ
ン生成保持回路、332 下位バススヌープ出力生成回
路、334 レスポンス受信回路、336 エビクショ
ンバッファ、338 リトライ判定回路、402 タグ
RAM、404 キャッシュRAM。
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成7年11月6日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0318
【補正方法】変更
【補正内容】
【0318】このように下位バススプリットIDを定め
ることにより、下位バスに対して上位バス用のデバイス
(例えばCPU)を接続することが可能となる。なお、
この構成においては、上位バスのスプリットIDとこれ
を圧縮したトランザクションIDとの対応関係を管理す
るID管理手段をバスブリッジに設ける。
ることにより、下位バスに対して上位バス用のデバイス
(例えばCPU)を接続することが可能となる。なお、
この構成においては、上位バスのスプリットIDとこれ
を圧縮したトランザクションIDとの対応関係を管理す
るID管理手段をバスブリッジに設ける。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0319
【補正方法】変更
【補正内容】
【0319】変形例2.次に、実施形態2の下位バスス
プリットID割り当て方式の変形例2について説明す
る。
プリットID割り当て方式の変形例2について説明す
る。
Claims (42)
- 【請求項1】 複数のプロセッサとそれらプロセッサに
よって共有されるメインメモリとを含む階層バスシステ
ムにおいて、 前記プロセッサを複数個ずつ上位バスにて相互に接続
し、 各上位バスごとに、当該上位バスに接続されるプロセッ
サによって共有されるブリッジキャッシュを有するバス
ブリッジを設け、 各バスブリッジを下位バスにて相互に接続し、この下位
バスに前記メインメモリを接続し、 前記プロセッサをスプリット対応可能とし、 前記プロセッサから上位バスに発行されたトランザクシ
ョンを前記バスブリッジにてスプリット処理することを
特徴とする階層バスシステム。 - 【請求項2】 請求項1記載の階層バスシステムにおい
て、 前記プロセッサは、各々プロセッサキャッシュを有し、 前記プロセッサキャッシュ及びブリッジキャッシュは、
各キャッシュブロックのステートを記憶するステート記
憶手段をそれぞれ有し、 前記プロセッサ及びバスブリッジは、自らが有するプロ
セッサキャッシュ又はブリッジキャッシュの前記ステー
ト記憶手段を制御するステート制御手段をそれぞれ有
し、 前記プロセッサキャッシュの各キャッシュブロックの取
り得るステートを、前記ブリッジキャッシュの対応キャ
ッシュブロックのステートに基づいて制約することによ
り、ブリッジキャッシュとこのブリッジキャッシュの上
位のプロセッサキャッシュとのマルチレベル包含性を維
持することを特徴とする階層バスシステム。 - 【請求項3】 請求項2記載の階層バスシステムであっ
て、前記プロセッサキャッシュ及びブリッジキャッシュ
のステートがMESIプロトコルに従う場合において、 ブリッジキャッシュのステートがIの場合には、上位の
プロセッサキャッシュの取り得るステートをIに限定
し、 ブリッジキャッシュのステートがSの場合には、上位の
プロセッサキャッシュの取り得るステートをS又はIに
限定し、 ブリッジキャッシュのステートがEの場合には、上位の
プロセッサキャッシュの取り得るステートをS又はIに
限定し、 ブリッジキャッシュのステートがMの場合には、上位の
プロセッサキャッシュがすべてのステートを取り得るよ
うに認めることを特徴とする階層バスシステム。 - 【請求項4】 請求項2記載の階層バスシステムであっ
て、前記プロセッサキャッシュ及びブリッジキャッシュ
のステートがMESIプロトコルに従う場合において、 ブリッジキャッシュのステートがIの場合には、上位の
プロセッサキャッシュの取り得るステートをIに限定
し、 ブリッジキャッシュのステートがSの場合には、上位の
プロセッサキャッシュの取り得るステートをS又はIに
限定し、 ブリッジキャッシュのステートがE又はMの場合には、
上位のプロセッサキャッシュがすべてのステートを取り
得るように認めることを特徴とする階層バスシステム。 - 【請求項5】 請求項3又は請求項4記載の階層バスシ
ステムにおいて、 前記バスブリッジは、上位バスから受け取ったトランザ
クションの種類と当該トランザクションのアドレスに対
応するブリッジキャッシュのステートとに基づき、当該
トランザクションをスプリットするか否か及びスプリッ
トする場合において下位バスに発行するトランザクショ
ンを決定する下位バス出力判定手段を有し、上位バスか
らトランザクションを受け取った場合、この下位バス出
力判定手段によって決定されたトランザクションを下位
バスに発行することを特徴とする階層バスシステム。 - 【請求項6】 請求項5に記載の階層バスシステムにお
いて、 前記下位バス出力判定手段は、 上位バスのトランザクションがリードである場合には、
ブリッジキャッシュの対応ブロックのステートがIであ
る場合にのみ当該トランザクションをスプリットして下
位バスにリード・トランザクションを発行し、 上位バスのトランザクションがインバリデートである場
合には、ブリッジキャッシュの対応ブロックのステート
がSである場合にのみ当該トランザクションをスプリッ
トして下位バスにインバリデート・トランザクションを
発行し、 上位バスのトランザクションがリード・アンド・インバ
リデートである場合、ブリッジキャッシュの対応ブロッ
クのステートがSである場合には当該トランザクション
をスプリットして下位バスにインバリデート・トランザ
クションを発行し、ブリッジキャッシュの対応ブロック
のステートがIである場合には当該トランザクションを
スプリットして下位バスにリード・アンド・インバリデ
ート・トランザクションを発行するように決定すること
を特徴とする階層バスシステム。 - 【請求項7】 請求項6記載の階層バスシステムにおい
て、 前記下位バス出力判定手段は、 上位バスのトランザクションがリードである場合に、当
該リード・トランザクションが命令コードを要求するも
のであるかデータを要求するものであるかを判別する要
求判別手段を有し、 当該リード・トランザクションがデータを要求するもの
である場合には下位バスにリード・アンド・インバリデ
ートを発行することを特徴とする階層バスシステム。 - 【請求項8】 請求項3又は請求項4に記載の階層バス
システムにおいて、 前記バスブリッジは、下位バスに発行したトランザクシ
ョンの種類と下位バスのスヌープ結果に基づき、ブリッ
ジキャッシュにおける対応キャッシュブロックの次ステ
ートを制御する第1のステート制御手段を有することを
特徴とする階層バスシステム。 - 【請求項9】 請求項8記載の階層バスシステムにおい
て、 前記第1のステート制御手段は、 前記トランザクションの種類がインバリデート又はリー
ド・アンド・インバリデートである場合は、前記ブリッ
ジキャッシュの対応ブロックの次ステートをMにし、 前記トランザクションの種類がリードである場合は、下
位バスのスヌープ結果がミスの場合には前記ブリッジキ
ャッシュの対応ブロックの次ステートをEにし、下位バ
スのスヌープ結果がHIT又はHITMの場合には前記
ブリッジキャッシュの対応ブロックの次ステートをSに
することを特徴とする階層バスシステム。 - 【請求項10】 請求項3記載の階層バスシステムにお
いて、 前記バスブリッジは、 自バスブリッジから下位バスに発行したトランザクショ
ンの種類に基づきスプリット応答時における上位バスに
対するスヌープ出力を生成する上位バススヌープ出力生
成手段を有し、 前記上位バススヌープ出力生成手段は、前記トランザク
ションの種類がインバリデート又はリード・アンド・イ
ンバリデートである場合は前記スヌープ出力をミスと
し、前記トランザクションの種類がリードである場合は
前記スヌープ出力をHITとし、 バスブリッジが上位バスのトランザクションをスプリッ
トして下位バスにトランザクションを発行した場合に、
前記上位バススヌープ出力生成手段からのスヌープ出力
によって、上位バスを介して当該バスブリッジに接続さ
れたプロセッサのプロセッサキャッシュのステートを制
御することを特徴とする階層バスシステム。 - 【請求項11】 請求項4記載の階層バスシステムにお
いて、 前記バスブリッジは、 自バスブリッジから下位バスに発行したトランザクショ
ンの種類及び当該トランザクションに対する下位バスか
らのスヌープ結果に基づき、スプリット応答時における
上位バスに対するスヌープ出力を生成する上位バススヌ
ープ出力生成手段を有し、 前記上位バススヌープ生成手段は、前記トランザクショ
ンの種類がインバリデート又はリード・アンド・インバ
リデートである場合は前記スヌープ出力をミスとし、前
記トランザクションの種類がリードである場合は、下位
バスのスヌープ結果がミスの場合は前記スヌープ出力を
ミスとし下位バスのスヌープ結果がHIT又はHITM
の場合は前記スヌープ出力をHITとし、 バスブリッジが上位バスのトランザクションをスプリッ
トして下位バスにトランザクションを発行した場合に、
前記上位バススヌープ出力生成手段からのスヌープ出力
によって、上位バスを介して当該バスブリッジに接続さ
れたプロセッサのプロセッサキャッシュのステートを制
御することを特徴とする階層バスシステム。 - 【請求項12】 請求項3に記載の階層バスシステムに
おいて、 前記バスブリッジは、 下位バスから受け取ったトランザクションの種類と当該
トランザクションのアドレスに対応するブリッジキャッ
シュのステートとに基づき、上位バスに発行するトラン
ザクションの種類を決定する上位バス出力判定手段を有
し、 前記上位バス出力判定手段は、前記トランザクションの
種類がリードである場合はブリッジキャッシュの対応ス
テートがMの場合に上位バスにリード・トランザクショ
ンを発行すると決定し、前記トランザクションの種類が
インバリデート又はリード・アンド・インバリデートで
ある場合は前記ブリッジキャッシュの対応ステートがM
又はE又はSの場合に上位バスにインバリデート・トラ
ンザクションを発行すると決定することを特徴とする階
層バスシステム。 - 【請求項13】 請求項4に記載の階層バスシステムに
おいて、 前記バスブリッジは、 下位バスから受け取ったトランザクションの種類と当該
トランザクションのアドレスに対応するブリッジキャッ
シュのステートとに基づき、上位バスに発行するトラン
ザクションの種類を決定する上位バス出力判定手段を有
し、 前記上位バス出力判定手段は、前記トランザクションが
リードである場合はブリッジキャッシュの対応ステート
がM又はEの場合に上位バスにリード・トランザクショ
ンを発行すると決定し、前記トランザクションの種類が
インバリデート又はリード・アンド・インバリデートで
ある場合は前記ブリッジキャッシュの対応ステートがM
又はE又はSの場合に上位バスにインバリデート・トラ
ンザクションを発行すると決定することを特徴とする階
層バスシステム。 - 【請求項14】 請求項12又は請求項13記載の階層
バスシステムにおいて、 前記バスブリッジは、 ブリッジキャッシュの各キャッシュブロックごとについ
て、当該キャッシュブロックについての所定のトランザ
クションを上位バスに対して発行する必要があるか否か
の状態を示す状態フラグを記憶した上位キャッシュ状態
フラグ記憶手段と、 上位バスに発行されたトランザクションをモニタして、
当該トランザクションの種類及びアドレスに基づいて前
記上位キャッシュ状態フラグ記憶手段の当該キャッシュ
ブロックの状態を制御するフラグ制御手段と、 下位バスから前記所定トランザクションを受け取った場
合に、前記上位キャッシュ状態フラグを参照し、当該所
定トランザクションのアドレスに対応するキャッシュブ
ロックの状態フラグが上位バスに対して当該所定トラン
ザクションを発行する必要がないことを示している場合
は、当該所定トランザクションの上位バスへの発行を抑
制する発行抑制手段と、 を有することを特徴とする階層バスシステム。 - 【請求項15】 請求項3記載の階層バスシステムにお
いて、 前記バスブリッジは、 前記下位バスから受け取ったトランザクションの種類
と、当該トランザクションのアドレスについてのブリッ
ジキャッシュのステートとに基づき、前記下位バスに対
するスヌープ出力を生成する下位バススヌープ出力生成
手段を有し、 前記下位バススヌープ出力生成手段は、 前記トランザクションの種類がリードの場合において、
前記ブリッジキャッシュの対応ステートがMの場合はH
ITMをスヌープ出力とし、前記ブリッジキャッシュの
対応ステートがE又はSの場合はHITをスヌープ出力
とし、 前記トランザクションの種類がインバリデート又はリー
ド・アンド・インバリデートの場合には、前記ブリッジ
キャッシュの対応ステートがMの場合にHITMをスヌ
ープ出力とすることを特徴とする階層バスシステム。 - 【請求項16】 請求項4記載の階層バスシステムにお
いて、 前記バスブリッジは、 前記下位バスから受け取ったトランザクションの種類
と、当該トランザクションのアドレスについてのブリッ
ジキャッシュのステートと、当該トランザクションに対
応して上位バスに発行したトランザクションに対する上
位バスのスヌープ結果とに基づき、前記下位バスに対す
るスヌープ出力を生成する下位バススヌープ出力生成手
段を有し、 前記下位バススヌープ出力生成手段は、 前記トランザクションの種類がリードの場合において、
前記スヌープ結果がHITMの場合は前記ブリッジキャ
ッシュの対応ステートがM又はEの場合にHITMをス
ヌープ出力とし、前記スヌープ結果がHITM以外の場
合は前記ブリッジキャッシュの対応ステートがMの場合
にはHITMをスヌープ出力とし前記ブリッジキャッシ
ュの対応ステートがE又はSの場合にはHITをスヌー
プ出力とし、 前記トランザクションの種類がインバリデート又はリー
ド・アンド・インバリデートの場合において、前記スヌ
ープ結果がHITMの場合は前記ブリッジキャッシュの
対応ステートがM又はEの場合にHITMをスヌープ出
力とし、前記スヌープ結果がHITM以外の場合は前記
ブリッジキャッシュの対応ステートがMの場合にHIT
Mをスヌープ出力とすることを特徴とする階層バスシス
テム。 - 【請求項17】 請求項3又は請求項4に記載の階層バ
スシステムにおいて、 前記バスブリッジは、下位バスから受け取ったトランザ
クションに対応して上位バスに発行したトランザクショ
ンの種類に基づき、ブリッジキャッシュの対応ブロック
の次ステートを制御する第2のステート制御手段を有
し、 前記第2のステート制御手段は、 前記トランザクションの種類がリードである場合は、前
記ブリッジキャッシュの対応ブロックの次ステートをS
にし、 前記トランザクションの種類がインバリデート又はリー
ド・アンド・インバリデートである場合は、前記ブリッ
ジキャッシュの対応ブロックの次ステートをIにするこ
とを特徴とする階層バスシステム。 - 【請求項18】 請求項3又は請求項4に記載の階層バ
スシステムにおいて、 前記バスブリッジは、下位バスから受け取ったトランザ
クションに対応して上位バスに発行したトランザクショ
ンの種類と、当該トランザクションに対する上位バスの
スヌープ結果とに基づき、ブリッジキャッシュの対応ブ
ロックの次ステートを制御する第2のステート制御手段
を有し、 前記第2のステート制御手段は、 前記トランザクションの種類がリードである場合は、前
記上位バスのスヌープ結果がミスの場合には前記ブリッ
ジキャッシュの対応ブロックの次ステートをIにし、前
記上位バスのスヌープ結果がHIT又はHITMの場合
には前記ブリッジキャッシュの対応ブロックの次ステー
トをSにし、 上位バスに発行したトランザクションがインバリデート
又はリード・アンド・インバリデートである場合は、前
記ブリッジキャッシュの対応ブロックの次ステートをI
にすることを特徴とする階層バスシステム。 - 【請求項19】 請求項3又は請求項4記載の階層バス
システムにおいて、 前記バスブリッジは、 上位バスから受け取ったトランザクションのアドレスに
基づき、ブリッジキャッシュにおいて当該アドレスに対
応するキャッシュブロックのエビクションが必要か否か
を判定するエビクション判定手段と、 エビクションが必要と判定された場合に、前記ブリッジ
キャッシュのステート記憶手段に記憶されたエビクショ
ン対象のキャッシュブロックのステートに基づき、上位
バスに対して前記トランザクションのアドレスに対する
インバリデートトランザクションを発行するか否かを判
定するインバリデート判定手段であって前記エビクショ
ン対象のキャッシュブロックのステートがM又はE又は
Sの場合に上位バスに対してインバリデート・トランザ
クションを発行すると判定するインバリデート判定手段
と、 を有することを特徴とする階層バスシステム。 - 【請求項20】 請求項3記載の階層バスシステムにお
いて、 前記バスブリッジは、 上位バスから受け取ったトランザクションのアドレスに
基づき、ブリッジキャッシュにおいて当該アドレスに対
応するキャッシュブロックのエビクションが必要か否か
を判定するエビクション判定手段と、 エビクションが必要と判定された場合に、前記ステート
記憶手段に記憶されたエビクション対象のキャッシュブ
ロックのステートに基づき下位バスに前記トランザクシ
ョンのアドレスに対するライトバックトランザクション
を発行するか否かを判定するライトバック判定手段であ
って、エビクション対象のキャッシュブロックのステー
トがMの場合のみ下位バスにライトバックトランザクシ
ョンを発行すると判定するライトバック判定手段と、 を有することを特徴とする階層バスシステム。 - 【請求項21】 請求項4記載の階層バスシステムにお
いて、 前記バスブリッジは、 上位バスから受け取ったトランザクションのアドレスに
基づき、ブリッジキャッシュにおいて当該アドレスに対
応するキャッシュブロックのエビクションが必要か否か
を判定するエビクション判定手段と、 エビクションが必要と判定された場合に、上位バスに対
して前記キャッシュブロックに対するインバリデートト
ランザクションを発行するインバリデート発行手段と、 エビクションが必要と判定された場合に、前記ステート
記憶手段に記憶されたエビクション対象のキャッシュブ
ロックのステートと前記インバリデート発行手段から発
行されたインバリデートトランザクションに対する上位
バスのスヌープ結果とに基づき下位バスに前記エビクシ
ョン対象のキャッシュブロックに対するライトバックト
ランザクションを発行するか否かを判定するライトバッ
ク判定手段と、 を有し、 前記ライトバック判定手段は、上位バスのスヌープ結果
がHITMの場合はエビクション対象のキャッシュブロ
ックのステートがM又はEのときにライトバックを発行
すると判定し、上位バスのスヌープ結果がHITM以外
の場合はエビクション対象のキャッシュブロックのステ
ートがMのときにライトバックを発行すると判定するこ
とを特徴とする階層バスシステム。 - 【請求項22】 請求項19〜請求項21のいずれかに
記載の階層バスシステムにおいて、 前記バスブリッジは、 ブリッジキャッシュの前記エビクション対象のキャッシ
ュブロックのデータを格納するバッファ手段を有し、 エビクション判定手段にてエビクションが必要と判定さ
れると、ブリッジキャッシュのエビクション対象のキャ
ッシュブロックのデータを前記バッファ手段に退避させ
たのちブリッジキャッシュの当該キャッシュブロックを
用いて前記上位バスからのトランザクションに対する処
理を実行し、前記バッファ手段に退避したデータを用い
てライトバック処理を行うことを特徴とする階層バスシ
ステム。 - 【請求項23】 請求項22記載の階層バスシステムに
おいて、 前記バッファ手段は、 エビクション対象のキャッシュブロックのアドレスを格
納するアドレスレジスタと、 エビクション対象のキャッシュブロックのデータを格納
するデータバッファと、 を有することを特徴とする階層バスシステム。 - 【請求項24】 請求項22記載の階層バスシステムに
おいて、 前記バッファ手段は、 トランザクションのアドレス指定によってアクセス可能
な補助キャッシュとして構成されることを特徴とする階
層バスシステム。 - 【請求項25】 請求項22記載の階層バスシステムに
おいて、 前記バスブリッジは、 エビクション判定に応じて当該バスブリッジから上位バ
スに発行したインバリデートトランザクションに対し
て、上位バスのプロセッサから該当キャッシュブロック
のデータがライトバックされてきた場合に、プロセッサ
からライトバックされてきたデータによって前記バッフ
ァ手段に格納されているデータを更新することを特徴と
する階層バスシステム。 - 【請求項26】 請求項1記載の階層バスシステムにお
いて、 前記バスブリッジは、 当該バスブリッジにおいてスプリット中のトランザクシ
ョンの有無を示すスプリットフラグ手段と、 上位バスから受け取ったトランザクションの種類が、キ
ャッシュブロックを使用する種類であるか否かを判定す
るトランザクション判定手段と、 上位バスから受け取ったトランザクションのリトライの
要否を判定するリトライ判定手段であって、前記スプリ
ットフラグ手段がスプリット中のトランザクションが有
ることを示し、かつ上位バスから受け取ったトランザク
ションが前記トランザクション判定手段によってキャッ
シュブロックを使用する種類であると判定された場合に
リトライが必要と判定するリトライ判定手段と、 前記リトライ判定手段によってリトライが必要と判定さ
れたときに、上位バスに対して前記トランザクションに
ついてのリトライ信号を出力するリトライ出力手段と、 を有し、 前記上位バスのトランザクションを発行したプロセッサ
は、バスブリッジからリトライ信号を受け取った場合
に、当該トランザクションをいったん終了し、所定時間
後に前記トランザクションを再発行することを特徴とす
る階層バスシステム。 - 【請求項27】 請求項1記載の階層バスシステムにお
いて、 前記バスブリッジは、 当該バスブリッジにおいてスプリット中のトランザクシ
ョンが使用するキャッシュブロックのアドレス情報を記
憶するスプリット情報記憶手段と、 上位バスから受け取ったトランザクションのアドレスと
前記スプリット情報記憶手段に記憶されたアドレス情報
とを比較し、上位バスから受け取ったトランザクション
がスプリット中のトランザクションの使用するキャッシ
ュブロックを使用するか否かを判定するアドレス判定手
段と、 上位バスから受け取ったトランザクションのリトライの
要否を判定するリトライ判定手段であって、前記アドレ
ス判定手段において上位バスから受け取ったトランザク
ションがスプリット中のトランザクションの使用するキ
ャッシュブロックを使用すると判定された場合に、リト
ライが必要と判定するリトライ判定手段と、 を有し、 前記上位バスのトランザクションを発行したプロセッサ
は、バスブリッジからリトライ信号を受け取った場合
に、当該トランザクションをいったん終了し、所定時間
後に前記トランザクションを再発行することを特徴とす
る階層バスシステム。 - 【請求項28】 請求項21に記載の階層バスシステム
において、 前記バスブリッジは、 上位バスから受け取ったトランザクションのアドレスと
バッファ手段に退避中のキャッシュブロックのアドレス
とを比較し、当該トランザクションが退避中のキャッシ
ュブロックに対するトランザクションであるか否かを判
定するアドレス比較手段と、 前記上位バスからのトランザクションが退避中のキャッ
シュブロックに対するトランザクションだと判定された
場合に、当該トランザクションに対してリトライが必要
と判定するリトライ判定手段と、 前記リトライ判定手段によってリトライが必要と判定さ
れたときに、上位バスに対して前記トランザクションに
ついてのリトライ信号を出力するリトライ出力手段と、 を有し、 前記上位バスのトランザクションを発行したプロセッサ
は、バスブリッジからリトライ信号を受け取った場合
に、当該トランザクションをいったん終了し、所定時間
後に前記トランザクションを再発行することを特徴とす
る階層バスシステム。 - 【請求項29】 請求項1記載の階層バスシステムにお
いて、 前記バスブリッジは、 上位バスから受け取ったトランザクションをスプリット
して下位バスにトランザクションを発行した場合におい
て、当該下位バスのトランザクションに対して下位バス
からリトライ信号を受け取った場合には、前記上位バス
に対してスプリット応答トランザクションを発行すると
共に前記上位バスのトランザクション発行元のプロセッ
サに対してリトライ信号を出力し、 前記トランザクション発行元のプロセッサは、前記バス
ブリッジからのリトライ信号を受信すると、前記トラン
ザクションをいったん終了し、所定時間後にリトライす
ることを特徴とする階層バスシステム。 - 【請求項30】 請求項1記載の階層バスシステムにお
いて、 前記バスブリッジは、 上位バストランザクションが有するスプリット識別子に
対して下位バスにおいて当該バスブリッジに固有のブリ
ッジ識別子を付加することにより、下位バストランザク
ションのスプリット識別子を生成するスプリット識別子
拡張手段を有し、 上位バスから受け取った上位バストランザクションをス
プリットして下位バスに下位バストランザクションを発
行する場合に、前記スプリット識別子拡張手段によって
得られたスプリット識別子を下位バストランザクション
に付することを特徴とする階層バスシステム。 - 【請求項31】 請求項1記載の階層バスシステムにお
いて、 前記バスブリッジは、 一方のバスから受け取ったトランザクションのスプリッ
ト識別子を所定ビット数のブリッジトランザクション識
別子に変換し、他方のバスにおいて当該バスブリッジに
固有なブリッジ識別子に前記ブリッジトランザクション
識別子を付加することにより、他方のバスに発行するト
ランザクションに付与するスプリット識別子を生成する
スプリット識別子生成手段を有し、 前記ブリッジトランザクション識別子のビット数と前記
ブリッジ識別子のビット数との和は前記一方のバスにお
けるスプリット識別子のビット数に等しく、 一方のバスから受け取ったトランザクションに対し他方
のバスにトランザクションを発行する必要がある場合に
は、当該他方のバスに発行するトランザクションに対し
て前記スプリット識別子生成手段によって得られたスプ
リット識別子を当該他方のバスに発行するトランザクシ
ョンに付することを特徴とする階層バスシステム。 - 【請求項32】 請求項31記載の階層バスシステムに
おいて、 前記プロセッサは、上位バスにトランザクションを発行
する場合に、当該プロセッサが接続された上位バスにお
いて当該プロセッサに固有なプロセッサ識別子に対し
て、当該プロセッサ内において当該トランザクションに
固有なプロセッサトランザクション識別子を付加するこ
とにより、当該トランザクションのスプリット識別子を
生成し、 前記ブリッジ識別子を前記プロセッサ識別子と同ビット
数としたことを特徴とする階層バスシステム。 - 【請求項33】 請求項32記載の階層バスシステムに
おいて、 前記バスブリッジのスプリット識別子生成手段は、 当該バスブリッジが下位バスに発行するトランザクショ
ンに対して付与可能なブリッジトランザクション識別子
の使用・未使用状態を管理する下位バス用管理テーブル
を有し、 上位バスからのトランザクションに対して下位バスにト
ランザクションの発行が必要な場合は、前記下位バス用
管理テーブルにおいて未使用のブリッジトランザクショ
ン識別子を求め、求められたブリッジトランザクション
識別子を用いて前記下位バスに発行するトランザクショ
ンに対するスプリット識別子を生成するとともに、前記
上位バスからのトランザクションのスプリット識別子を
当該ブリッジトランザクション識別子に対応づけて前記
下位バス用管理テーブルに登録することを特徴とする階
層バスシステム。 - 【請求項34】 請求項33記載の階層バスシステムに
おいて、 前記バスブリッジは、上位バスから受け取ったトランザ
クションに対して下位バスにトランザクションの発行が
必要な場合において、前記下位バス用管理テーブルに未
使用のブリッジトランザクション識別子がない場合は、
上位バスに対してリトライ終了信号を発行し、当該上位
バスのトランザクションの発行元プロセッサに対して当
該トランザクションのリトライ処理を行わせることを特
徴とする階層バスシステム。 - 【請求項35】 請求項32記載の階層バスシステムに
おいて、 前記バスブリッジのスプリット識別子生成手段は、 当該バスブリッジが上位バスに発行するトランザクショ
ンに対して付与可能なブリッジトランザクション識別子
の使用・未使用状態を管理する上位バス用管理テーブル
を有し、 下位バスからのトランザクションに対して上位バスにト
ランザクションの発行が必要な場合は、前記上位バス用
管理テーブルにおいて未使用のブリッジトランザクショ
ン識別子を求め、求められたブリッジトランザクション
識別子を用いて前記上位バスに発行するトランザクショ
ンに対するスプリット識別子を生成するとともに、前記
下位バスからのトランザクションのスプリット識別子を
当該ブリッジトランザクション識別子に対応づけて前記
上位バス用管理テーブルに登録することを特徴とする階
層バスシステム。 - 【請求項36】 請求項35記載の階層バスシステムに
おいて、 前記バスブリッジは、下位バスから受け取ったトランザ
クションに対して上位バスにトランザクションの発行が
必要な場合において、前記上位バス用管理テーブルに未
使用のブリッジトランザクション識別子がない場合は、
前記上位バス用管理テーブルに未使用のブリッジトラン
ザクション識別子ができるのを待って上位バスに対する
トランザクションの発行を行うことを特徴とする階層バ
スシステム。 - 【請求項37】 請求項1記載の階層バスシステムにお
いて、 バスの物理的仕様及び論理的仕様を前記下位バスと上位
バスとで共通としたことを特徴とする階層バスシステ
ム。 - 【請求項38】 請求項37記載の階層バスシステムに
おいて、 前記下位バスは、1個以上のボードインタフェースを有
し、 これら各ボードインタフェースに対して、1つのプロセ
ッサを実装した第1のボードと、複数のプロセッサ及び
上位バス及びバスブリッジを実装した第2のボードと、
のいずれかを接続することによりシステム構成を変更可
能としたことを特徴とする階層バスシステム。 - 【請求項39】 請求項1記載の階層バスシステムにお
いて、 前記下位バスを複数設け、これら各下位バスにそれぞれ
メインメモリを接続し、前記各上位バスに対して下位バ
スと同数のバスブリッジを接続し、前記各上位バスと各
下位バスとを互いに1つのバスブリッジを介して接続し
たことを特徴とする階層バスシステム。 - 【請求項40】 請求項39記載の階層バスシステムに
おいて、 前記複数の下位バスのそれぞれに対してバスブリッジを
設け、これらバスブリッジを介して前記各下位バスを1
つのI/Oバスに接続し、このI/OバスにI/O装置
を接続したことを特徴とする階層バスシステム。 - 【請求項41】 請求項39又は請求項40に記載の階
層バスシステムにおいて、 同一の上位バスに接続された各バスブリッジは、それぞ
れ受け持ちのアドレス範囲が定められており、上位バス
から受け取ったトランザクションのアドレスが自らの受
け持ちアドレス範囲に含まれる場合にのみ、当該トラン
ザクションに対する処理を行うことを特徴とする階層バ
スシステム。 - 【請求項42】 請求項41記載の階層バスシステムに
おいて、 同一の上位バスに接続された各バスブリッジのアドレス
受け持ち範囲を変更可能としたことを特徴とする階層バ
スシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7285829A JPH09128346A (ja) | 1995-11-02 | 1995-11-02 | 階層バスシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7285829A JPH09128346A (ja) | 1995-11-02 | 1995-11-02 | 階層バスシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH09128346A true JPH09128346A (ja) | 1997-05-16 |
Family
ID=17696626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7285829A Pending JPH09128346A (ja) | 1995-11-02 | 1995-11-02 | 階層バスシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH09128346A (ja) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6341334B1 (en) | 1998-03-24 | 2002-01-22 | Mitsubishi Denki Kabushiki Kaisha | Bridge method, bus bridge, and multiprocessor system |
US6480187B1 (en) | 1997-08-07 | 2002-11-12 | Fujitsu Limited | Optical scanning-type touch panel |
US6993633B1 (en) | 1999-07-30 | 2006-01-31 | Hitachi, Ltd. | Computer system utilizing speculative read requests to cache memory |
JP2008176699A (ja) * | 2007-01-22 | 2008-07-31 | Renesas Technology Corp | マルチプロセッサ装置 |
JP2010152892A (ja) * | 2008-12-10 | 2010-07-08 | Nvidia Corp | ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移行するためのチップセットサポート |
JP2011065574A (ja) * | 2009-09-18 | 2011-03-31 | Fujitsu Ltd | キャッシュメモリ制御装置およびキャッシュメモリ制御方法 |
JP2011154704A (ja) * | 2011-03-04 | 2011-08-11 | Renesas Electronics Corp | マルチプロセッサ装置 |
JP2012123437A (ja) * | 2010-12-06 | 2012-06-28 | Sony Corp | 相互接続装置、および、その制御方法 |
US8601192B2 (en) | 2009-06-08 | 2013-12-03 | Panasonic Corporation | Arbitration device, arbitration system, arbitration method, semiconductor integrated circuit, and image processing device |
US9015446B2 (en) | 2008-12-10 | 2015-04-21 | Nvidia Corporation | Chipset support for non-uniform memory access among heterogeneous processing units |
-
1995
- 1995-11-02 JP JP7285829A patent/JPH09128346A/ja active Pending
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6480187B1 (en) | 1997-08-07 | 2002-11-12 | Fujitsu Limited | Optical scanning-type touch panel |
US6341334B1 (en) | 1998-03-24 | 2002-01-22 | Mitsubishi Denki Kabushiki Kaisha | Bridge method, bus bridge, and multiprocessor system |
US6993633B1 (en) | 1999-07-30 | 2006-01-31 | Hitachi, Ltd. | Computer system utilizing speculative read requests to cache memory |
US8621127B2 (en) | 2007-01-22 | 2013-12-31 | Renesas Electronics Corporation | Multi-processor device with groups of processors and respective separate external bus interfaces |
JP2008176699A (ja) * | 2007-01-22 | 2008-07-31 | Renesas Technology Corp | マルチプロセッサ装置 |
US10372654B2 (en) | 2007-01-22 | 2019-08-06 | Renesas Electronics Corporation | Multi-processor device |
US8200878B2 (en) | 2007-01-22 | 2012-06-12 | Renesas Electronics Corporation | Multi-processor device with groups of processors consisting of respective separate external bus interfaces |
JP2010152892A (ja) * | 2008-12-10 | 2010-07-08 | Nvidia Corp | ハードウェアデバイスをヘテロジニアス処理ユニット間でバインドし移行するためのチップセットサポート |
US9032101B1 (en) | 2008-12-10 | 2015-05-12 | Nvidia Corporation | Chipset support for binding and migrating hardware devices among heterogeneous processing units |
US9015446B2 (en) | 2008-12-10 | 2015-04-21 | Nvidia Corporation | Chipset support for non-uniform memory access among heterogeneous processing units |
US8601192B2 (en) | 2009-06-08 | 2013-12-03 | Panasonic Corporation | Arbitration device, arbitration system, arbitration method, semiconductor integrated circuit, and image processing device |
JP2011065574A (ja) * | 2009-09-18 | 2011-03-31 | Fujitsu Ltd | キャッシュメモリ制御装置およびキャッシュメモリ制御方法 |
JP2012123437A (ja) * | 2010-12-06 | 2012-06-28 | Sony Corp | 相互接続装置、および、その制御方法 |
JP2011154704A (ja) * | 2011-03-04 | 2011-08-11 | Renesas Electronics Corp | マルチプロセッサ装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11372777B2 (en) | Memory interface between physical and virtual address spaces | |
CN108885583B (zh) | 高速缓存存储器访问 | |
US7827354B2 (en) | Victim cache using direct intervention | |
KR100491435B1 (ko) | 다수의 시스템 버스를 가지는 컴퓨터 시스템 내의 메모리 일관성을 유지하기 위한 시스템 및 방법 | |
US7305523B2 (en) | Cache memory direct intervention | |
US7657710B2 (en) | Cache coherence protocol with write-only permission | |
US11914514B2 (en) | Data coherency manager with mapping between physical and virtual address spaces | |
US5606686A (en) | Access control method for a shared main memory in a multiprocessor based upon a directory held at a storage location of data in the memory after reading data to a processor | |
CN101593161B (zh) | 确保微处理器的快取存储器层级数据一致性的装置与方法 | |
US7620776B2 (en) | Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of modified memory blocks | |
US6272602B1 (en) | Multiprocessing system employing pending tags to maintain cache coherence | |
US8176261B2 (en) | Information processing apparatus and data transfer method | |
US6138217A (en) | Method and apparatus for cache coherency in an interconnecting network | |
JP2000250812A (ja) | メモリ・キャッシュ・システムおよびその管理方法 | |
JPH08185359A (ja) | メモリサブシステム | |
JPH07281955A (ja) | マルチプロセッサーシステムのスヌープ回路 | |
US10152417B2 (en) | Early freeing of a snoop machine of a data processing system prior to completion of snoop processing for an interconnect operation | |
WO1999035578A1 (en) | Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency | |
JPH09128346A (ja) | 階層バスシステム | |
US7464227B2 (en) | Method and apparatus for supporting opportunistic sharing in coherent multiprocessors | |
US20090198911A1 (en) | Data processing system, processor and method for claiming coherency ownership of a partial cache line of data | |
US6826654B2 (en) | Cache invalidation bus for a highly scalable shared cache memory hierarchy | |
CN114787784A (zh) | 扩展对某些请求的一致性保护的高速缓存窥探模式 | |
JP4948141B2 (ja) | バス制御装置 | |
KR100188438B1 (ko) | 멀티프로세서시스템의 교체 라이트백 사이클 처리장치 및 방법 |