JPH1055314A - キャッシュメモリ制御装置 - Google Patents
キャッシュメモリ制御装置Info
- Publication number
- JPH1055314A JPH1055314A JP8212369A JP21236996A JPH1055314A JP H1055314 A JPH1055314 A JP H1055314A JP 8212369 A JP8212369 A JP 8212369A JP 21236996 A JP21236996 A JP 21236996A JP H1055314 A JPH1055314 A JP H1055314A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- main memory
- data
- directory
- snoop
- 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
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【課題】 不必要なスヌープによるキャッシュアクセス
を減少させ、キャッシュの一致性保証を高速に行うこと
が可能なキャッシュメモリ制御装置を提供すること。 【解決手段】 スヌープ方式とディレクトリ方式とを併
用することにより、不必要なキャッシュのスヌープを減
少させる。そのために、主メモリコントローラ110が
キャッシュの状態を記憶している状態記憶手段112
(ディレクトリを含む)を参照し、スヌープが必要か否
かを判定してスヌープが必要であるときのみスヌープを
継続させ、スヌープが不要であるときにはキャッシュコ
ントローラ104〜106にスヌープの中断を知らせる
スヌープ中断信号を発する。キャッシュコントローラ1
04〜106では、スヌープ中断信号を受け取った場合
に該スヌープを中断させる。
を減少させ、キャッシュの一致性保証を高速に行うこと
が可能なキャッシュメモリ制御装置を提供すること。 【解決手段】 スヌープ方式とディレクトリ方式とを併
用することにより、不必要なキャッシュのスヌープを減
少させる。そのために、主メモリコントローラ110が
キャッシュの状態を記憶している状態記憶手段112
(ディレクトリを含む)を参照し、スヌープが必要か否
かを判定してスヌープが必要であるときのみスヌープを
継続させ、スヌープが不要であるときにはキャッシュコ
ントローラ104〜106にスヌープの中断を知らせる
スヌープ中断信号を発する。キャッシュコントローラ1
04〜106では、スヌープ中断信号を受け取った場合
に該スヌープを中断させる。
Description
【0001】
【発明の属する技術分野】本発明は、キャッシュコヒー
レンシをディレクトリ方式またはスヌープ方式で保証し
ているマルチプロセッサシステムのキャッシュメモリ制
御装置に関し、特に、複数のキャッシュメモリ間のデー
タの一致性保証の制御を高速かつ効率的に行なうキャッ
シュメモリ制御装置に関する。
レンシをディレクトリ方式またはスヌープ方式で保証し
ているマルチプロセッサシステムのキャッシュメモリ制
御装置に関し、特に、複数のキャッシュメモリ間のデー
タの一致性保証の制御を高速かつ効率的に行なうキャッ
シュメモリ制御装置に関する。
【0002】
【従来の技術】マルチプロセッサシステムにおけるキャ
ッシュメモリ間のデータの一致性保証の方式としては、
一般に、ディレクトリ方式と呼ばれる方式とスヌープ方
式と呼ばれる方式が知られている。ディレクトリ方式と
スヌープ方式については、David A.Patterson,John
L.Hennessy著、富田眞治,他訳「コンピュータ・アー
キテクチャ −設計・実現・評価の定量的アプローチ
−」 (1992年12月25日日経BP社発行) PP.478-486
に記載されている。ディレクトリ方式とは、主メモリ全
体のデータに対して、該データのキャッシングの状態を
管理するテーブル(ディレクトリ)を持ち、あるプロセ
ッサが起動したメモリアクセスに対して、まずそのテー
ブル(ディレクトリ)を調べ、所望の最新のデータが主
メモリではなく、あるキャッシュにのみ存在することが
わかった場合には、そのキャッシュに対して該データの
アクセスを行う方式である。
ッシュメモリ間のデータの一致性保証の方式としては、
一般に、ディレクトリ方式と呼ばれる方式とスヌープ方
式と呼ばれる方式が知られている。ディレクトリ方式と
スヌープ方式については、David A.Patterson,John
L.Hennessy著、富田眞治,他訳「コンピュータ・アー
キテクチャ −設計・実現・評価の定量的アプローチ
−」 (1992年12月25日日経BP社発行) PP.478-486
に記載されている。ディレクトリ方式とは、主メモリ全
体のデータに対して、該データのキャッシングの状態を
管理するテーブル(ディレクトリ)を持ち、あるプロセ
ッサが起動したメモリアクセスに対して、まずそのテー
ブル(ディレクトリ)を調べ、所望の最新のデータが主
メモリではなく、あるキャッシュにのみ存在することが
わかった場合には、そのキャッシュに対して該データの
アクセスを行う方式である。
【0003】ディレクトリ方式を採用した従来例とし
て、特開平4−245350号公報「キャッシュ一致化
方式」に開示されたものがある。該公開公報には、複数
のプロセッサによって共有されるメモリに、該メモリ上
のデータが各プロセッサのキャッシュ上でどのような保
持状態(各プロセッサのいずれのキャッシュにも保持さ
れていない第1の状態,いずれか1つのプロセッサのキ
ャッシュのみに保持されている第2の状態,各プロセッ
サのうち2つ以上のプロセッサのキャッシュに保持され
ている第3の状態)にあるかを示す2ビットのタグ情報
(テーブル)、または各プロセッサのキャッシュに該メ
モリ上のデータが保持されているかを示すプロセッサの
台数に等しいビット数のタグ情報(テーブル)を持た
せ、これらのタグ情報を参照することにより、あるプロ
セッサからのメモリライトアクセスが発生した場合に、
本来一致化処理が必要でないプロセッサにおける無駄な
一致化処理を行わないようにしたものが記載されてい
る。
て、特開平4−245350号公報「キャッシュ一致化
方式」に開示されたものがある。該公開公報には、複数
のプロセッサによって共有されるメモリに、該メモリ上
のデータが各プロセッサのキャッシュ上でどのような保
持状態(各プロセッサのいずれのキャッシュにも保持さ
れていない第1の状態,いずれか1つのプロセッサのキ
ャッシュのみに保持されている第2の状態,各プロセッ
サのうち2つ以上のプロセッサのキャッシュに保持され
ている第3の状態)にあるかを示す2ビットのタグ情報
(テーブル)、または各プロセッサのキャッシュに該メ
モリ上のデータが保持されているかを示すプロセッサの
台数に等しいビット数のタグ情報(テーブル)を持た
せ、これらのタグ情報を参照することにより、あるプロ
セッサからのメモリライトアクセスが発生した場合に、
本来一致化処理が必要でないプロセッサにおける無駄な
一致化処理を行わないようにしたものが記載されてい
る。
【0004】ディレクトリ方式では、一旦必ずテーブル
(タグ情報)を調べてから必要となるキャッシュのアク
セスを行うため、他キャッシュにデータが存在していた
場合にはアクセスタイムが大きくなってしまい、それが
性能を低下させる原因となっていた。また、キャッシュ
の一致性を従来のディレクトリ方式で保証しているキャ
ッシュシステムでは、主記憶容量全体に対しディレクト
リを設ける必要があるため、主メモリの大容量化につれ
てディレクトリも大容量化する必要があった。
(タグ情報)を調べてから必要となるキャッシュのアク
セスを行うため、他キャッシュにデータが存在していた
場合にはアクセスタイムが大きくなってしまい、それが
性能を低下させる原因となっていた。また、キャッシュ
の一致性を従来のディレクトリ方式で保証しているキャ
ッシュシステムでは、主記憶容量全体に対しディレクト
リを設ける必要があるため、主メモリの大容量化につれ
てディレクトリも大容量化する必要があった。
【0005】一方、スヌープ方式とは、あるプロセッサ
が起動したメモリアクセスに対して、全てのキャッシュ
が同時に、該アクセスのアドレスに対応するデータのコ
ピーを格納しているか否かを調べる方式である。スヌー
プ方式では、全てのキャッシュ各々が主メモリのアクセ
スと同時に、自キャッシュ内に所望のデータがあるか否
かのチェックを行うため、比較的高速にそのチェックが
行えるという利点があった。しかしながら、近年の、プ
ロセッサの高速化に伴い、メモリ装置としては、主メモ
リ以外に2〜3階層のキャッシュを持たせることが多く
なり、その場合、全ての階層のキャッシュのスヌープよ
りもメモリアクセスの方が高速に行えるという場合が生
じてきた。このため、主メモリアクセスが終了している
にも関わらず、スヌープの終了を待ち合わせるためにプ
ロセッサにデータを返すことができないという問題があ
る。
が起動したメモリアクセスに対して、全てのキャッシュ
が同時に、該アクセスのアドレスに対応するデータのコ
ピーを格納しているか否かを調べる方式である。スヌー
プ方式では、全てのキャッシュ各々が主メモリのアクセ
スと同時に、自キャッシュ内に所望のデータがあるか否
かのチェックを行うため、比較的高速にそのチェックが
行えるという利点があった。しかしながら、近年の、プ
ロセッサの高速化に伴い、メモリ装置としては、主メモ
リ以外に2〜3階層のキャッシュを持たせることが多く
なり、その場合、全ての階層のキャッシュのスヌープよ
りもメモリアクセスの方が高速に行えるという場合が生
じてきた。このため、主メモリアクセスが終了している
にも関わらず、スヌープの終了を待ち合わせるためにプ
ロセッサにデータを返すことができないという問題があ
る。
【0006】また、キャッシュ−プロセッサ間の転送単
位(ライン)よりも、主メモリ−キャッシュ間の転送単
位(ブロック)の方が大きい場合が多く、プロセッサか
らのアクセス1回につき、複数回の他キャッシュのスヌ
ープを必要とすることが多くなってきた。この様な場
合、全てのメモリアクセスに対して無条件にスヌープを
行うとバスのトラフィックが増加し、更には、バスが飽
和してしまうという問題が生じる。さらに、各階層のキ
ャッシュのスヌープを行っている間、当該キャッシュに
対するプロセッサからのアクセスが抑止されるため、マ
ルチプロセッサシステム全体の性能の低下をきたすとい
う問題がある。
位(ライン)よりも、主メモリ−キャッシュ間の転送単
位(ブロック)の方が大きい場合が多く、プロセッサか
らのアクセス1回につき、複数回の他キャッシュのスヌ
ープを必要とすることが多くなってきた。この様な場
合、全てのメモリアクセスに対して無条件にスヌープを
行うとバスのトラフィックが増加し、更には、バスが飽
和してしまうという問題が生じる。さらに、各階層のキ
ャッシュのスヌープを行っている間、当該キャッシュに
対するプロセッサからのアクセスが抑止されるため、マ
ルチプロセッサシステム全体の性能の低下をきたすとい
う問題がある。
【0007】本発明の第1の目的は、マルチプロセッサ
システムにおいて、高速なキャッシュの一致性保証を行
うことが可能なキャッシュメモリ制御装置を提供するこ
とである。本発明の第2の目的は、不必要なスヌープに
よるキャッシュアクセスを減少させ、システム性能を向
上させることが可能なキャッシュメモリ制御装置を提供
することである。本発明の第3の目的は、キャッシュの
一致性をディレクトリ方式で保証しているキャッシュシ
ステムにおいて、ディレクトリを小容量化することが可
能なキャッシュメモリ制御装置を提供することにある。
システムにおいて、高速なキャッシュの一致性保証を行
うことが可能なキャッシュメモリ制御装置を提供するこ
とである。本発明の第2の目的は、不必要なスヌープに
よるキャッシュアクセスを減少させ、システム性能を向
上させることが可能なキャッシュメモリ制御装置を提供
することである。本発明の第3の目的は、キャッシュの
一致性をディレクトリ方式で保証しているキャッシュシ
ステムにおいて、ディレクトリを小容量化することが可
能なキャッシュメモリ制御装置を提供することにある。
【0008】
【課題を解決するための手段】本発明のキャッシュメモ
リ制御装置(図1ないし図5参照)は、上記第1および
第2の目的を達成するために、キャッシュを有するマル
チプロセッサシステムにおいて、スヌープ方式とディレ
クトリ方式とを併用することによって不要なキャッシュ
のスヌープを減少させるものである。さらに詳細に述べ
ると、主メモリ(111)上のデータに対してそのキャ
ッシングの状態を表す状態記憶手段(112)と、その
状態記憶手段(112)の内容により他キャッシュのス
ヌープが必要か否かを判定する判定回路ブロック(20
2)と、該判定回路ブロック(202)の判定結果によ
りスヌープ中断信号を発行する中断信号制御回路ブロッ
ク(203)と、さらに各キャッシュコントローラ(1
04ないし106)にスヌープ制御ブロック(302)
および中断回路ブロック(303)を設けている。即
ち、プロセッサからのアクセスに対して、各キャッシュ
のスヌープと同時に、キャッシングの状態を表す状態記
憶手段(112)を検索し、その結果、スヌープが不要
であるとわかった場合には、スヌープの終了を待たずに
スヌープを中断させてプロセッサに対してデータを返す
ようにしている。
リ制御装置(図1ないし図5参照)は、上記第1および
第2の目的を達成するために、キャッシュを有するマル
チプロセッサシステムにおいて、スヌープ方式とディレ
クトリ方式とを併用することによって不要なキャッシュ
のスヌープを減少させるものである。さらに詳細に述べ
ると、主メモリ(111)上のデータに対してそのキャ
ッシングの状態を表す状態記憶手段(112)と、その
状態記憶手段(112)の内容により他キャッシュのス
ヌープが必要か否かを判定する判定回路ブロック(20
2)と、該判定回路ブロック(202)の判定結果によ
りスヌープ中断信号を発行する中断信号制御回路ブロッ
ク(203)と、さらに各キャッシュコントローラ(1
04ないし106)にスヌープ制御ブロック(302)
および中断回路ブロック(303)を設けている。即
ち、プロセッサからのアクセスに対して、各キャッシュ
のスヌープと同時に、キャッシングの状態を表す状態記
憶手段(112)を検索し、その結果、スヌープが不要
であるとわかった場合には、スヌープの終了を待たずに
スヌープを中断させてプロセッサに対してデータを返す
ようにしている。
【0009】また、本発明のキャッシュメモリ制御装置
は、上記第1および第2の目的を達成するために、各キ
ャッシュメモリに対してスヌープの中断を知らせるスヌ
ープ中断信号(130)と、各キャッシュコントローラ
(104ないし106)に、前記スヌープ中断信号(1
30)を受け取った場合に該スヌープを中断するための
中断回路ブロック(303)を設けている。即ち、上記
第1の目的において、スヌープが不要であるとわかった
場合には、各キャッシュコントローラに対して、スヌー
プの中断を知らせ、現在行っているスヌープまたは現在
待ち合わせをしているスヌープを中止するようにしてい
る。
は、上記第1および第2の目的を達成するために、各キ
ャッシュメモリに対してスヌープの中断を知らせるスヌ
ープ中断信号(130)と、各キャッシュコントローラ
(104ないし106)に、前記スヌープ中断信号(1
30)を受け取った場合に該スヌープを中断するための
中断回路ブロック(303)を設けている。即ち、上記
第1の目的において、スヌープが不要であるとわかった
場合には、各キャッシュコントローラに対して、スヌー
プの中断を知らせ、現在行っているスヌープまたは現在
待ち合わせをしているスヌープを中止するようにしてい
る。
【0010】また、本発明のキャッシュメモリ制御装置
(図6ないし図8参照)は、上記第1および第2の目的
を達成するために、ブロックに対するアクセスについて
も、特定なラインに対するスヌープのみを行う回路と、
主メモリ上のデータに対してそのキャッシングの状態を
表す状態記憶手段(412)と、その状態記憶手段の内
容により他キャッシュのスヌープが必要か否かを判定す
る判定回路ブロック(502)と、前記判定回路ブロッ
ク(502)による判定の結果、該アドレスを含むブロ
ックに対応するデータに対してスヌープが不要であると
わかった場合にはブロック全体のデータをキャッシュコ
ントローラに出力するとともに、スヌープが必要である
とわかった場合には特定なラインのみの転送に切り替え
ることを主記憶アクセス制御回路ブロック(504)に
報告し、該特定のラインに転送される情報を前記キャッ
シュコントローラに通知するライン転送制御回路ブロッ
ク(503)を設けている。
(図6ないし図8参照)は、上記第1および第2の目的
を達成するために、ブロックに対するアクセスについて
も、特定なラインに対するスヌープのみを行う回路と、
主メモリ上のデータに対してそのキャッシングの状態を
表す状態記憶手段(412)と、その状態記憶手段の内
容により他キャッシュのスヌープが必要か否かを判定す
る判定回路ブロック(502)と、前記判定回路ブロッ
ク(502)による判定の結果、該アドレスを含むブロ
ックに対応するデータに対してスヌープが不要であると
わかった場合にはブロック全体のデータをキャッシュコ
ントローラに出力するとともに、スヌープが必要である
とわかった場合には特定なラインのみの転送に切り替え
ることを主記憶アクセス制御回路ブロック(504)に
報告し、該特定のラインに転送される情報を前記キャッ
シュコントローラに通知するライン転送制御回路ブロッ
ク(503)を設けている。
【0011】本発明のキャッシュメモリ制御装置(図9
ないし図12参照)は、上記第3の目的を達成するため
に、キャッシュの一致性をディレクトリ方式で保証して
いるシステムにおいて、キャッシュ(702,802)
とディレクトリ(1100)間にキャッシュ情報信号
(1000)を設け、キャッシュ状態が変化する場合に
は、必要であれば、該キャッシュ情報信号によってキャ
ッシュ(702,802)からキャッシュ状態の変化を
ディレクトリ(1100)に報告し、DMAが発生した
場合には、該キャッシュ情報信号によってディレクトリ
(1100)からキャッシュデータの無効化とキャッシ
ュデータの主メモリ(1200)への書き戻しをキャッ
シュ(702,802)に報告するようにしている。
ないし図12参照)は、上記第3の目的を達成するため
に、キャッシュの一致性をディレクトリ方式で保証して
いるシステムにおいて、キャッシュ(702,802)
とディレクトリ(1100)間にキャッシュ情報信号
(1000)を設け、キャッシュ状態が変化する場合に
は、必要であれば、該キャッシュ情報信号によってキャ
ッシュ(702,802)からキャッシュ状態の変化を
ディレクトリ(1100)に報告し、DMAが発生した
場合には、該キャッシュ情報信号によってディレクトリ
(1100)からキャッシュデータの無効化とキャッシ
ュデータの主メモリ(1200)への書き戻しをキャッ
シュ(702,802)に報告するようにしている。
【0012】すなわち、キャッシュ情報信号を用いるこ
とによりキャッシュ状態とディレクトリ状態を常に一致
させることができ、その結果、最小限のディレクトリ容
量でキャッシュスヌープを最適化することが可能にな
る。これにより、ディレクトリはキャッシュ容量の合計
分だけ持てばよいことになり、また、DMAでディレク
トリミスヒット時のキャッシュスヌープは必要なくな
り、DMAのキャッシュスヌープ時も無効化または書き
戻しの発生するキャッシュとウェイをキャッシュ情報信
号によってディレクトリが指示するため、キャッシュの
ヒット判定が必要なくなる。
とによりキャッシュ状態とディレクトリ状態を常に一致
させることができ、その結果、最小限のディレクトリ容
量でキャッシュスヌープを最適化することが可能にな
る。これにより、ディレクトリはキャッシュ容量の合計
分だけ持てばよいことになり、また、DMAでディレク
トリミスヒット時のキャッシュスヌープは必要なくな
り、DMAのキャッシュスヌープ時も無効化または書き
戻しの発生するキャッシュとウェイをキャッシュ情報信
号によってディレクトリが指示するため、キャッシュの
ヒット判定が必要なくなる。
【0013】
【発明の実施の形態】以下、本発明の実施例を図面を用
いて詳細に説明する。 (第1の実施例)本発明の第1の実施例は、キャッシン
グの状態を表す状態記憶手段を参照してスヌープが不要
であるとわかった場合にスヌープの終了を待たずにスヌ
ープを中断させるようにしたものである。図1は、本発
明の第1の実施例の全体のシステム構成を示す図であ
る。同図において、101〜103は各々マルチプロセ
ッサシステムを構成するプロセッサ1〜n、107〜1
09は各々プロセッサ1〜nに接続されるライトバック
方式のキャッシュ1〜n、104〜106は各々キャッ
シュ1〜nの制御を行うキャッシュコントローラ1〜n
である。また、111は主メモリであり、112は状態
記憶手段である。110は信号群(128)を介して主
メモリ(111)を制御するとともに、信号群(12
9)を介して状態記憶手段(112)を制御する主メモ
リコントローラである。
いて詳細に説明する。 (第1の実施例)本発明の第1の実施例は、キャッシン
グの状態を表す状態記憶手段を参照してスヌープが不要
であるとわかった場合にスヌープの終了を待たずにスヌ
ープを中断させるようにしたものである。図1は、本発
明の第1の実施例の全体のシステム構成を示す図であ
る。同図において、101〜103は各々マルチプロセ
ッサシステムを構成するプロセッサ1〜n、107〜1
09は各々プロセッサ1〜nに接続されるライトバック
方式のキャッシュ1〜n、104〜106は各々キャッ
シュ1〜nの制御を行うキャッシュコントローラ1〜n
である。また、111は主メモリであり、112は状態
記憶手段である。110は信号群(128)を介して主
メモリ(111)を制御するとともに、信号群(12
9)を介して状態記憶手段(112)を制御する主メモ
リコントローラである。
【0014】キャッシュコントローラ1(104)は信
号群(121)を介してプロセッサ1(101)に、ま
た、信号群(124)を介してキャッシュ1(107)
に接続されている。同様に、キャッシュコントローラ2
(105)は信号群122を介してプロセッサ2(10
2)に、また信号群(125)を介してキャッシュ2
(108)に接続され、キャッシュコントローラn(1
06)は信号群(123)を介してプロセッサn(10
3)に、また信号群(126)を介してキャッシュn
(109)に接続されている。また、各キャッシュコン
トローラ1(104)〜n(106)および主メモリコ
ントローラ(110)は信号群(127)を介して相互
に接続され、本信号群(127)を介してデータ転送お
よびスヌープ制御が行われる。信号(130)は主メモ
リコントローラ(110)から各キャッシュコントロー
ラ1(104)〜n(106)に対して送られるスヌー
プ中断信号である。
号群(121)を介してプロセッサ1(101)に、ま
た、信号群(124)を介してキャッシュ1(107)
に接続されている。同様に、キャッシュコントローラ2
(105)は信号群122を介してプロセッサ2(10
2)に、また信号群(125)を介してキャッシュ2
(108)に接続され、キャッシュコントローラn(1
06)は信号群(123)を介してプロセッサn(10
3)に、また信号群(126)を介してキャッシュn
(109)に接続されている。また、各キャッシュコン
トローラ1(104)〜n(106)および主メモリコ
ントローラ(110)は信号群(127)を介して相互
に接続され、本信号群(127)を介してデータ転送お
よびスヌープ制御が行われる。信号(130)は主メモ
リコントローラ(110)から各キャッシュコントロー
ラ1(104)〜n(106)に対して送られるスヌー
プ中断信号である。
【0015】図2は、主メモリコントローラ(110)
の内部構成を示す図である。同図に示されているよう
に、主メモリコントローラ(110)は、主記憶アクセ
ス制御ブロック(201)と判定回路ブロック(20
2)を含んでいる。主記憶アクセス制御ブロック(20
1)は、主メモリ(111)に対する書き込み読み出し
を制御する主記憶アクセス制御回路(204)および状
態記憶手段(112)に対する書き込み読み出しを制御
する状態記憶手段制御回路(205)からなっており、
判定回路ブロック(202)は、主記憶アクセス制御ブ
ロック(201)の状態記憶手段制御回路(205)で
読み出した状態記憶手段の内容に基づいてスヌープを中
断するか否かを判定し中断信号制御回路ブロック(20
3)に報告する。中断信号制御回路ブロック(203)
は、スヌープ中断信号(130)を生成しキャッシュコ
ントローラ1(104)〜n(106)に送出するブロ
ックである。
の内部構成を示す図である。同図に示されているよう
に、主メモリコントローラ(110)は、主記憶アクセ
ス制御ブロック(201)と判定回路ブロック(20
2)を含んでいる。主記憶アクセス制御ブロック(20
1)は、主メモリ(111)に対する書き込み読み出し
を制御する主記憶アクセス制御回路(204)および状
態記憶手段(112)に対する書き込み読み出しを制御
する状態記憶手段制御回路(205)からなっており、
判定回路ブロック(202)は、主記憶アクセス制御ブ
ロック(201)の状態記憶手段制御回路(205)で
読み出した状態記憶手段の内容に基づいてスヌープを中
断するか否かを判定し中断信号制御回路ブロック(20
3)に報告する。中断信号制御回路ブロック(203)
は、スヌープ中断信号(130)を生成しキャッシュコ
ントローラ1(104)〜n(106)に送出するブロ
ックである。
【0016】図3は、キャッシュコントローラ1(10
4)の内部構成を示す図である。同図に示されているよ
うに、キャッシュコントローラ1(104)は、キャッ
シュアクセス制御ブロック(301)とスヌープ制御ブ
ロック(302)と中断回路ブロック(303)を含ん
でいる。中断回路ブロック(303)は、主メモリコン
トローラ(110)の中断信号制御回路ブロック(20
3)から送出されるスヌープ中断信号(130)によっ
てスヌープ中断信号が有効か無効かを判定するブロック
であり、スヌープ制御ブロック(302)は有効と判定
された場合に中断をキャッシュアクセスブロック(30
1)にスヌープ中断を通知するブロックであり、アクセ
ス制御ブロック(301)はスヌープ制御ブロック(3
02)からスヌープ中断を通知された場合にスヌープ処
理を中断するブロックである。なお、他のキャッシュコ
ントローラ2(105)〜n(106)もキャッシュコ
ントローラ1(104)と同様な構成を有している。
4)の内部構成を示す図である。同図に示されているよ
うに、キャッシュコントローラ1(104)は、キャッ
シュアクセス制御ブロック(301)とスヌープ制御ブ
ロック(302)と中断回路ブロック(303)を含ん
でいる。中断回路ブロック(303)は、主メモリコン
トローラ(110)の中断信号制御回路ブロック(20
3)から送出されるスヌープ中断信号(130)によっ
てスヌープ中断信号が有効か無効かを判定するブロック
であり、スヌープ制御ブロック(302)は有効と判定
された場合に中断をキャッシュアクセスブロック(30
1)にスヌープ中断を通知するブロックであり、アクセ
ス制御ブロック(301)はスヌープ制御ブロック(3
02)からスヌープ中断を通知された場合にスヌープ処
理を中断するブロックである。なお、他のキャッシュコ
ントローラ2(105)〜n(106)もキャッシュコ
ントローラ1(104)と同様な構成を有している。
【0017】図4は、主メモリ(111)のメモリ空間
の各ブロックに対応する状態記憶手段(112)の位置
づけを示した図である。ここで言う、ブロックとは、キ
ャッシュにおいて管理される単位のことである。同図に
示すように、状態記憶手段(112)は主メモリ(11
1)のメモリ空間の各ブロックごとに一つのテーブルエ
ントリを持っている。
の各ブロックに対応する状態記憶手段(112)の位置
づけを示した図である。ここで言う、ブロックとは、キ
ャッシュにおいて管理される単位のことである。同図に
示すように、状態記憶手段(112)は主メモリ(11
1)のメモリ空間の各ブロックごとに一つのテーブルエ
ントリを持っている。
【0018】図5は、図4に示した状態記憶手段(11
2)のテーブルエントリの内容の定義を示したものであ
る。ここでは、状態記憶手段(112)の各エントリは
2ビットで構成され、該エントリの値が、(a)「00」
の場合は当該ブロックのデータはどのキャッシュにも格
納されていないことを、(b)「01」の場合は当該ブロ
ックのデータは少なくとも一つのキャッシュに格納され
ておりその内容は主メモリと一致していることを、(c)
「10」の場合は当該ブロックのデータは少なくとも一
つのキャッシュに格納されておりその内容は主メモリと
一致していないことを意味している。(d)「11」は未
定義とする。
2)のテーブルエントリの内容の定義を示したものであ
る。ここでは、状態記憶手段(112)の各エントリは
2ビットで構成され、該エントリの値が、(a)「00」
の場合は当該ブロックのデータはどのキャッシュにも格
納されていないことを、(b)「01」の場合は当該ブロ
ックのデータは少なくとも一つのキャッシュに格納され
ておりその内容は主メモリと一致していることを、(c)
「10」の場合は当該ブロックのデータは少なくとも一
つのキャッシュに格納されておりその内容は主メモリと
一致していないことを意味している。(d)「11」は未
定義とする。
【0019】<リードアクセス>次に、プロセッサから
のリードアクセスにおける動作を詳細に説明する。プロ
セッサ1(101)がリードアクセスを要求した場合、
キャッシュコントローラ1(104)は、まず、該アド
レスに対応するデータがキャッシュ1(107)に格納
されているか否かをアドレスアレイ(図示せず)によっ
て調べる。 (a)キャッシュ1(107)ヒットの場合 該アドレスのデータがキャッシュ1(107)に格納さ
れていれば(ヒット)、キャッシュコントローラ1(1
04)は、該データをキャッシュ1(107)から読み
出し、プロセッサ1(101)へ送出し、該リードアク
セスを完了する。
のリードアクセスにおける動作を詳細に説明する。プロ
セッサ1(101)がリードアクセスを要求した場合、
キャッシュコントローラ1(104)は、まず、該アド
レスに対応するデータがキャッシュ1(107)に格納
されているか否かをアドレスアレイ(図示せず)によっ
て調べる。 (a)キャッシュ1(107)ヒットの場合 該アドレスのデータがキャッシュ1(107)に格納さ
れていれば(ヒット)、キャッシュコントローラ1(1
04)は、該データをキャッシュ1(107)から読み
出し、プロセッサ1(101)へ送出し、該リードアク
セスを完了する。
【0020】(b)キャッシュ1(107)ミスヒット
の場合 一方、該アドレスのデータがキャッシュ1(107)に
格納されていなければ、キャッシュコントローラ1(1
04)は、該アドレスのデータのリード要求信号を、信
号群(127)を介して主メモリコントローラ(11
0)に送出する。主メモリコントローラ(110)は、
該信号群(127)の情報(リード要求信号,アドレス
信号,他信号)により、主メモリ(111)のアクセス
を開始する。一方それと同時に、キャッシュコントロー
ラ2(105)〜キャッシュコントローラn(106)
は、上記信号群(127)の情報により、それぞれキャ
ッシュ2(108)〜キャッシュn(109)のスヌー
プを開始する。
の場合 一方、該アドレスのデータがキャッシュ1(107)に
格納されていなければ、キャッシュコントローラ1(1
04)は、該アドレスのデータのリード要求信号を、信
号群(127)を介して主メモリコントローラ(11
0)に送出する。主メモリコントローラ(110)は、
該信号群(127)の情報(リード要求信号,アドレス
信号,他信号)により、主メモリ(111)のアクセス
を開始する。一方それと同時に、キャッシュコントロー
ラ2(105)〜キャッシュコントローラn(106)
は、上記信号群(127)の情報により、それぞれキャ
ッシュ2(108)〜キャッシュn(109)のスヌー
プを開始する。
【0021】主メモリコントローラ(110)では、ま
ず、主記憶アクセス制御ブロック(201)により、プ
ロセッサ1(101)がアクセスしようとしているアド
レスに対して、主メモリ(111)および状態記憶手段
(112)の内容を読み出し、次いで、判定回路ブロッ
ク(202)により、状態記憶手段(112)から読み
出した2ビットの値に応じて、下記の各動作を行う。 (a)「00」の場合:…主メモリ(111)から読み
出した値を信号群(127)を介して、キャッシュコン
トローラ1(104)へ送出するとともに、スヌープ中
断信号(130)を有効にして他キャッシュのスヌープ
を中断させる。また、状態記憶手段(112)の内容を
「01」に更新する。 (b)「01」の場合:…主メモリ(111)から読み
出した値を信号群(127)を介して、キャッシュコン
トローラ1(104)へ送出するとともに、スヌープ中
断信号(130)を有効にして他キャッシュのスヌープ
を中断させる。また、状態記憶手段(112)の内容
は、変化させない。 (c)「10」の場合:…主メモリ(111)から読み
出した値を無効化し、スヌープ中断信号(130)を無
効にし、他キャッシュのスヌープを継続させる。スヌー
プの結果、最新のデータを持つキャッシュは該最新のデ
ータを信号群(127)を介して、キャッシュコントロ
ーラ1(104)へ送出する。主メモリコントローラ
(110)は、信号群(127)を介して伝達される最
新のデータを主メモリ(111)に書き込む。また、状
態記憶手段(112)の内容を「01」に更新する。
ず、主記憶アクセス制御ブロック(201)により、プ
ロセッサ1(101)がアクセスしようとしているアド
レスに対して、主メモリ(111)および状態記憶手段
(112)の内容を読み出し、次いで、判定回路ブロッ
ク(202)により、状態記憶手段(112)から読み
出した2ビットの値に応じて、下記の各動作を行う。 (a)「00」の場合:…主メモリ(111)から読み
出した値を信号群(127)を介して、キャッシュコン
トローラ1(104)へ送出するとともに、スヌープ中
断信号(130)を有効にして他キャッシュのスヌープ
を中断させる。また、状態記憶手段(112)の内容を
「01」に更新する。 (b)「01」の場合:…主メモリ(111)から読み
出した値を信号群(127)を介して、キャッシュコン
トローラ1(104)へ送出するとともに、スヌープ中
断信号(130)を有効にして他キャッシュのスヌープ
を中断させる。また、状態記憶手段(112)の内容
は、変化させない。 (c)「10」の場合:…主メモリ(111)から読み
出した値を無効化し、スヌープ中断信号(130)を無
効にし、他キャッシュのスヌープを継続させる。スヌー
プの結果、最新のデータを持つキャッシュは該最新のデ
ータを信号群(127)を介して、キャッシュコントロ
ーラ1(104)へ送出する。主メモリコントローラ
(110)は、信号群(127)を介して伝達される最
新のデータを主メモリ(111)に書き込む。また、状
態記憶手段(112)の内容を「01」に更新する。
【0022】キャッシュコントローラ1(104)は、
主メモリコントローラ(110)から送られてきたデー
タを受け取り、キャッシュ1(107)の更新を行うと
ともに、プロセッサ1(101)に対して該データの送
出を行う。一方、他のキャッシュコントローラ2(10
5)〜キャッシュコントローラn(106)では、主メ
モリコントローラ(110)より送出されたスヌープ中
断信号(130)を中断回路ブロック(303)で受け
取り、スヌープ中断信号(130)が有効であればスヌ
ープ制御ブロック(302)に該情報を伝達してスヌー
プを中断し、スヌープ中断信号(130)が無効であれ
ばそのままスヌープを続行し、その結果、最新のデータ
がいずれかのキャッシュ内にあれば、その最新データを
信号群(127)を介して、キャッシュコントローラ1
(104)へ送出する処理を行う。
主メモリコントローラ(110)から送られてきたデー
タを受け取り、キャッシュ1(107)の更新を行うと
ともに、プロセッサ1(101)に対して該データの送
出を行う。一方、他のキャッシュコントローラ2(10
5)〜キャッシュコントローラn(106)では、主メ
モリコントローラ(110)より送出されたスヌープ中
断信号(130)を中断回路ブロック(303)で受け
取り、スヌープ中断信号(130)が有効であればスヌ
ープ制御ブロック(302)に該情報を伝達してスヌー
プを中断し、スヌープ中断信号(130)が無効であれ
ばそのままスヌープを続行し、その結果、最新のデータ
がいずれかのキャッシュ内にあれば、その最新データを
信号群(127)を介して、キャッシュコントローラ1
(104)へ送出する処理を行う。
【0023】<ライトアクセス>次に、プロセッサから
のライトアクセスにおける動作を詳細に説明する。プロ
セッサ1(101)がライトアクセスを要求した場合、
キャッシュコントローラ1(104)は、まず、該アド
レスに対応するデータがキャッシュ1(107)に格納
されている(キャッシュヒット)か否(キャッシュミス
ヒット)かを調べる。 (a)キャッシュ1(107)ヒットの場合 該アドレスのデータがキャッシュ1(107)に格納さ
れていれば、キャッシュコントローラ1(104)は、
ライトデータをキャッシュ1(107)に格納して該ア
クセスを完了する(ライトバック方式のキャッシュの場
合)。
のライトアクセスにおける動作を詳細に説明する。プロ
セッサ1(101)がライトアクセスを要求した場合、
キャッシュコントローラ1(104)は、まず、該アド
レスに対応するデータがキャッシュ1(107)に格納
されている(キャッシュヒット)か否(キャッシュミス
ヒット)かを調べる。 (a)キャッシュ1(107)ヒットの場合 該アドレスのデータがキャッシュ1(107)に格納さ
れていれば、キャッシュコントローラ1(104)は、
ライトデータをキャッシュ1(107)に格納して該ア
クセスを完了する(ライトバック方式のキャッシュの場
合)。
【0024】(b)キャッシュ1(107)ミスヒット
の場合 一方、該アドレスのデータがキャッシュ1(107)に
格納されていなければ、キャッシュコントローラ1(1
04)は、該アドレスのデータのライト要求信号を、信
号群(127)を介して主メモリコントローラ(11
0)に送出する。主メモリコントローラ(110)は、
該信号群(127)を介して送られてきた情報(ライト
要求信号,アドレス信号,データ信号,他信号)によ
り、主メモリ(111)のライトアクセスを開始する。
一方、それと同時に、キャッシュコントローラ2(10
5)〜キャッシュコントローラn(106)は、該信号
群(127)の情報により、キャッシュ2(108)〜
キャッシュn(109)のスヌープを開始する。
の場合 一方、該アドレスのデータがキャッシュ1(107)に
格納されていなければ、キャッシュコントローラ1(1
04)は、該アドレスのデータのライト要求信号を、信
号群(127)を介して主メモリコントローラ(11
0)に送出する。主メモリコントローラ(110)は、
該信号群(127)を介して送られてきた情報(ライト
要求信号,アドレス信号,データ信号,他信号)によ
り、主メモリ(111)のライトアクセスを開始する。
一方、それと同時に、キャッシュコントローラ2(10
5)〜キャッシュコントローラn(106)は、該信号
群(127)の情報により、キャッシュ2(108)〜
キャッシュn(109)のスヌープを開始する。
【0025】このときの主メモリコントローラ(11
0)の動作を説明する。主メモリコントローラ(11
0)では、まず、主記憶アクセス制御回路(201)に
より、プロセッサ1(101)がアクセスしようとして
いるアドレスに対して、主メモリ(111)の内容と状
態記憶手段(112)の内容を読み出し、次いで、判定
回路(202)にて、状態記憶手段(112)から読み
出した値に応じて、下記の各動作を行う。 (a)「00」の場合:…信号群(127)を介して伝
達されたデータを主メモリ(111)へ書き込むと同時
に、スヌープ中断信号(130)を有効にして他キャッ
シュのスヌープを中断させる。また、状態記憶手段(1
12)の内容は変化させない。 (b)「01」の場合:…信号群(127)を介して伝
達されたデータを主メモリ(111)へ書き込むが、ス
ヌープ中断信号(130)は無効にして、他キャッシュ
のスヌープを継続させる。該アドレスのデータを持つキ
ャッシュは、主メモリ(111)との一致性を保つため
にキャッシュ内の該アドレスのデータを無効化する。ま
た、状態記憶手段(112)の内容を「00」に更新す
る。 (c)「10」の場合:…スヌープ中断信号(130)
は無効にして、他キャッシュのスヌープを継続させる。
該アドレスの最新のデータを持つキャッシュは、信号群
(127)を介して伝達されたデータを該キャッシュに
書き込む。また、状態記憶手段(112)の内容は変化
させない。
0)の動作を説明する。主メモリコントローラ(11
0)では、まず、主記憶アクセス制御回路(201)に
より、プロセッサ1(101)がアクセスしようとして
いるアドレスに対して、主メモリ(111)の内容と状
態記憶手段(112)の内容を読み出し、次いで、判定
回路(202)にて、状態記憶手段(112)から読み
出した値に応じて、下記の各動作を行う。 (a)「00」の場合:…信号群(127)を介して伝
達されたデータを主メモリ(111)へ書き込むと同時
に、スヌープ中断信号(130)を有効にして他キャッ
シュのスヌープを中断させる。また、状態記憶手段(1
12)の内容は変化させない。 (b)「01」の場合:…信号群(127)を介して伝
達されたデータを主メモリ(111)へ書き込むが、ス
ヌープ中断信号(130)は無効にして、他キャッシュ
のスヌープを継続させる。該アドレスのデータを持つキ
ャッシュは、主メモリ(111)との一致性を保つため
にキャッシュ内の該アドレスのデータを無効化する。ま
た、状態記憶手段(112)の内容を「00」に更新す
る。 (c)「10」の場合:…スヌープ中断信号(130)
は無効にして、他キャッシュのスヌープを継続させる。
該アドレスの最新のデータを持つキャッシュは、信号群
(127)を介して伝達されたデータを該キャッシュに
書き込む。また、状態記憶手段(112)の内容は変化
させない。
【0026】キャッシュコントローラ2(105)およ
びキャッシュコントローラn(106)では、中断回路
ブロック(303)により主メモリコントローラ(11
0)から送出されたスヌープ中断信号(130)を受け
取り、スヌープ中断信号(130)が有効であればスヌ
ープ制御ブロック(302)に該情報を伝達してスヌー
プを中断し、スヌープ中断信号(130)が無効であれ
ばそのままスヌープを続行し、主メモリと同じデータが
キャッシュ内にある場合には、当該キャッシュ内のデー
タを無効化し、主メモリよりも新しいデータがキャッシ
ュ内にある場合には、プロセッサ1から信号群(12
7)を介して送出されたデータを、当該キャッシュへ書
き込む。
びキャッシュコントローラn(106)では、中断回路
ブロック(303)により主メモリコントローラ(11
0)から送出されたスヌープ中断信号(130)を受け
取り、スヌープ中断信号(130)が有効であればスヌ
ープ制御ブロック(302)に該情報を伝達してスヌー
プを中断し、スヌープ中断信号(130)が無効であれ
ばそのままスヌープを続行し、主メモリと同じデータが
キャッシュ内にある場合には、当該キャッシュ内のデー
タを無効化し、主メモリよりも新しいデータがキャッシ
ュ内にある場合には、プロセッサ1から信号群(12
7)を介して送出されたデータを、当該キャッシュへ書
き込む。
【0027】以上説明した第1の実施例によると、マル
チプロセッサシステムにおける不要なキャッシュのスヌ
ープを減少させることができ、また、主メモリのアクセ
スに要する時間よりもキャッシュのスヌープに要する時
間の方が長いようなシステムの場合、キャッシュのスヌ
ープで主メモリアクセスが律速することが避けられるた
め、システムの性能向上が達成できる。
チプロセッサシステムにおける不要なキャッシュのスヌ
ープを減少させることができ、また、主メモリのアクセ
スに要する時間よりもキャッシュのスヌープに要する時
間の方が長いようなシステムの場合、キャッシュのスヌ
ープで主メモリアクセスが律速することが避けられるた
め、システムの性能向上が達成できる。
【0028】(第2の実施例)本発明の第2の実施例
は、キャッシングの状態を表す状態記憶手段を参照し、
スヌープが不要であるとわかった場合にはブロック全体
のデータをキャッシュコントローラに出力し、スヌープ
が必要であるとわかった場合には特定なラインのみの転
送に切り替えるようにしたものである。図6は本発明の
第2の実施例の全体のシステム構成を示す図である。同
図において、401〜403は各々マルチプロセッサシ
ステムを構成するプロセッサ1〜n、407〜409は
各々プロセッサ1〜nに接続されるライトバック方式の
キャッシュ1〜n、404〜406は各々キャッシュ1
〜nの制御を行うキャッシュコントローラ1〜nであ
る。また、411は主メモリであり、412は状態記憶
手段である。410は信号群(427)を介して主メモ
リ(411)を制御するとともに、信号群(429)を
介して状態記憶手段(412)を制御する主メモリコン
トローラである。
は、キャッシングの状態を表す状態記憶手段を参照し、
スヌープが不要であるとわかった場合にはブロック全体
のデータをキャッシュコントローラに出力し、スヌープ
が必要であるとわかった場合には特定なラインのみの転
送に切り替えるようにしたものである。図6は本発明の
第2の実施例の全体のシステム構成を示す図である。同
図において、401〜403は各々マルチプロセッサシ
ステムを構成するプロセッサ1〜n、407〜409は
各々プロセッサ1〜nに接続されるライトバック方式の
キャッシュ1〜n、404〜406は各々キャッシュ1
〜nの制御を行うキャッシュコントローラ1〜nであ
る。また、411は主メモリであり、412は状態記憶
手段である。410は信号群(427)を介して主メモ
リ(411)を制御するとともに、信号群(429)を
介して状態記憶手段(412)を制御する主メモリコン
トローラである。
【0029】キャッシュコントローラ1(404)は信
号群(421)を介してプロセッサ1(401)に、ま
た、信号群(424)を介してキャッシュ1(407)
に接続されている。同様に、キャッシュコントローラ2
(405)は信号群(422)を介してプロセッサ2
(402)に、また信号群(425)を介してキャッシ
ュ2(408)に接続され、キャッシュコントローラn
(406)は信号群(423)を介してプロセッサn
(403)に、また信号群(426)を介してキャッシ
ュn(409)に接続されている。また、各キャッシュ
コントローラ1(404)〜n(406)および主メモ
リコントローラ(410)は信号群(427)を介して
相互に接続され、本信号群(427)を介してデータ転
送およびスヌープ制御が行われる。信号(430)は主
メモリコントローラ(410)から各キャッシュコント
ローラ1(404)〜n(406)に対して送られる1
ビットのライン転送信号であり、この信号が無効を示す
場合はブロック転送を行い、有効の場合はライン転送を
行うように制御する。
号群(421)を介してプロセッサ1(401)に、ま
た、信号群(424)を介してキャッシュ1(407)
に接続されている。同様に、キャッシュコントローラ2
(405)は信号群(422)を介してプロセッサ2
(402)に、また信号群(425)を介してキャッシ
ュ2(408)に接続され、キャッシュコントローラn
(406)は信号群(423)を介してプロセッサn
(403)に、また信号群(426)を介してキャッシ
ュn(409)に接続されている。また、各キャッシュ
コントローラ1(404)〜n(406)および主メモ
リコントローラ(410)は信号群(427)を介して
相互に接続され、本信号群(427)を介してデータ転
送およびスヌープ制御が行われる。信号(430)は主
メモリコントローラ(410)から各キャッシュコント
ローラ1(404)〜n(406)に対して送られる1
ビットのライン転送信号であり、この信号が無効を示す
場合はブロック転送を行い、有効の場合はライン転送を
行うように制御する。
【0030】図7は、主メモリコントローラ(410)
の内部構成を示す図である。同図に示されているよう
に、主メモリコントローラ(410)は、主記憶アクセ
ス制御ブロック(501)と判定回路ブロック(50
2)とライン転送制御回路ブロック(503)を含んで
いる。主記憶アクセス制御ブロック(501)は、主メ
モリ(411)に対する書き込み読み出しを制御する主
記憶アクセス制御回路(504)および状態記憶手段
(412)に対する書き込み読み出しを制御する状態記
憶手段制御回路(505)からなり、判定回路ブロック
(502)は、主記憶アクセス制御ブロック(501)
の状態記憶手段制御回路(505)で読み出した状態記
憶手段の内容に基づいてライン転送の可否を判定し、ラ
イン転送制御回路ブロック(503)に報告するブロッ
クであり、ライン転送制御回路ブロック(503)はラ
イン転送信号(430)を生成し送出するための制御ブ
ロックである。
の内部構成を示す図である。同図に示されているよう
に、主メモリコントローラ(410)は、主記憶アクセ
ス制御ブロック(501)と判定回路ブロック(50
2)とライン転送制御回路ブロック(503)を含んで
いる。主記憶アクセス制御ブロック(501)は、主メ
モリ(411)に対する書き込み読み出しを制御する主
記憶アクセス制御回路(504)および状態記憶手段
(412)に対する書き込み読み出しを制御する状態記
憶手段制御回路(505)からなり、判定回路ブロック
(502)は、主記憶アクセス制御ブロック(501)
の状態記憶手段制御回路(505)で読み出した状態記
憶手段の内容に基づいてライン転送の可否を判定し、ラ
イン転送制御回路ブロック(503)に報告するブロッ
クであり、ライン転送制御回路ブロック(503)はラ
イン転送信号(430)を生成し送出するための制御ブ
ロックである。
【0031】図8は、キャッシュコントローラ1(40
4)の内部構成を示す図である。同図に示されているよ
うに、キャッシュコントローラ1(404)は、キャッ
シュアクセス制御ブロック(601)とスヌープ制御ブ
ロック(602)を含んでいる。主メモリコントローラ
(410)のライン転送制御回路ブロック(503)か
ら送出されるライン転送信号(430)は、キャッシュ
コントローラ(404)のキャッシュアクセス制御ブロ
ック(601)に入力され、キャッシュへのデータ転送
制御に用いられる。なお、キャッシュコントローラ2
(405)〜n(406)もキャッシュコントローラ1
(404)と同様に構成される。主メモリ(411)と
状態記憶手段(412)の対応関係および状態記憶手段
(412)の内容は、第1の実施例の図4および5と同
じであるので説明を省略する。
4)の内部構成を示す図である。同図に示されているよ
うに、キャッシュコントローラ1(404)は、キャッ
シュアクセス制御ブロック(601)とスヌープ制御ブ
ロック(602)を含んでいる。主メモリコントローラ
(410)のライン転送制御回路ブロック(503)か
ら送出されるライン転送信号(430)は、キャッシュ
コントローラ(404)のキャッシュアクセス制御ブロ
ック(601)に入力され、キャッシュへのデータ転送
制御に用いられる。なお、キャッシュコントローラ2
(405)〜n(406)もキャッシュコントローラ1
(404)と同様に構成される。主メモリ(411)と
状態記憶手段(412)の対応関係および状態記憶手段
(412)の内容は、第1の実施例の図4および5と同
じであるので説明を省略する。
【0032】次に、第2の実施例のリードアクセスおよ
びライトアクセス動作を詳細に説明する。 <リードアクセス>プロセッサ1(401)がリードア
クセスを要求した場合、キャッシュコントローラ1(4
04)は、まず、該アドレスに対応するデータがキャッ
シュ1(407)に格納されているか否かをアドレスア
レイ(図示せず)によって調べる。 (a)キャッシュ1(407)ヒットの場合:該アドレ
スのデータがキャッシュ1(407)に格納されていれ
ば、キャッシュコントローラ1(404)は、当該デー
タをキャッシュ1(407)から読み出し、プロセッサ
1(401)へと送出し、該リードアクセスを完了す
る。
びライトアクセス動作を詳細に説明する。 <リードアクセス>プロセッサ1(401)がリードア
クセスを要求した場合、キャッシュコントローラ1(4
04)は、まず、該アドレスに対応するデータがキャッ
シュ1(407)に格納されているか否かをアドレスア
レイ(図示せず)によって調べる。 (a)キャッシュ1(407)ヒットの場合:該アドレ
スのデータがキャッシュ1(407)に格納されていれ
ば、キャッシュコントローラ1(404)は、当該デー
タをキャッシュ1(407)から読み出し、プロセッサ
1(401)へと送出し、該リードアクセスを完了す
る。
【0033】(b)キャッシュ1(407)ミスヒット
の場合:一方、該アドレスのデータがキャッシュ1(4
07)に格納されていなければ、キャッシュコントロー
ラ1(404)は、当該アドレスを含むブロックのリー
ド要求信号,アドレス信号,他信号を、信号群(42
7)を介して主メモリコントローラ(410)に送出す
る。主メモリコントローラ(410)は、該信号群(4
27)の情報(リード要求信号)により、主メモリ(4
11)のアクセスを開始する。一方それと同時に、キャ
ッシュコントローラ2(405)〜キャッシュコントロ
ーラn(406)は、上記信号群(427)の情報によ
り、それぞれキャッシュ2(408)〜キャッシュn
(409)のスヌープを開始する。
の場合:一方、該アドレスのデータがキャッシュ1(4
07)に格納されていなければ、キャッシュコントロー
ラ1(404)は、当該アドレスを含むブロックのリー
ド要求信号,アドレス信号,他信号を、信号群(42
7)を介して主メモリコントローラ(410)に送出す
る。主メモリコントローラ(410)は、該信号群(4
27)の情報(リード要求信号)により、主メモリ(4
11)のアクセスを開始する。一方それと同時に、キャ
ッシュコントローラ2(405)〜キャッシュコントロ
ーラn(406)は、上記信号群(427)の情報によ
り、それぞれキャッシュ2(408)〜キャッシュn
(409)のスヌープを開始する。
【0034】主メモリコントローラ(410)では、ま
ず、主記憶アクセス制御ブロック(501)により、プ
ロセッサ1(401)がアクセスしようとしているアド
レスに対して、主メモリ(411)および状態記憶手段
(412)の内容を読み出し、次いで、判定回路ブロッ
ク(502)により、状態記憶手段(412)から読み
出した2ビットの値に応じて、下記の各動作を行う。 (a)「00」の場合:…主メモリ(411)から読み
出したブロックのデータを信号群(427)を介して、
キャッシュコントローラ1(404)へ送出する。ま
た、状態記憶手段(412)の内容を「01」に更新す
る。この時、ライン転送信号(430)は無効状態にし
ておく。 (b)「01」の場合:…主メモリ(411)から読み
出したブロックを信号群(427)を介して、キャッシ
ュコントローラ1(404)へ送出する。また、状態記
憶手段(412)の内容は変化させない。この時、ライ
ン転送信号(430)は無効状態にしておく。 (c)「10」の場合:…主メモリ(411)から読み
出したブロックを信号群(427)を介して、キャッシ
ュコントローラ1(404)へ送出する。また、そのと
き状態記憶手段(412)の内容を「01」に更新す
る。この時、ライン転送信号(430)は有効状態にし
ておく。この場合、他キャッシュに最新のデータが存在
する場合に、スヌーププロトコルに応じて、データの転
送を行う。
ず、主記憶アクセス制御ブロック(501)により、プ
ロセッサ1(401)がアクセスしようとしているアド
レスに対して、主メモリ(411)および状態記憶手段
(412)の内容を読み出し、次いで、判定回路ブロッ
ク(502)により、状態記憶手段(412)から読み
出した2ビットの値に応じて、下記の各動作を行う。 (a)「00」の場合:…主メモリ(411)から読み
出したブロックのデータを信号群(427)を介して、
キャッシュコントローラ1(404)へ送出する。ま
た、状態記憶手段(412)の内容を「01」に更新す
る。この時、ライン転送信号(430)は無効状態にし
ておく。 (b)「01」の場合:…主メモリ(411)から読み
出したブロックを信号群(427)を介して、キャッシ
ュコントローラ1(404)へ送出する。また、状態記
憶手段(412)の内容は変化させない。この時、ライ
ン転送信号(430)は無効状態にしておく。 (c)「10」の場合:…主メモリ(411)から読み
出したブロックを信号群(427)を介して、キャッシ
ュコントローラ1(404)へ送出する。また、そのと
き状態記憶手段(412)の内容を「01」に更新す
る。この時、ライン転送信号(430)は有効状態にし
ておく。この場合、他キャッシュに最新のデータが存在
する場合に、スヌーププロトコルに応じて、データの転
送を行う。
【0035】キャッシュコントローラ1(404)は、
主メモリコントローラ(410)から送られてきたデー
タを受け取り、プロセッサ1(401)に対して該デー
タの送出を行う。この時、ライン転送信号(430)が
無効状態であれば、キャッシュ1(407)に対してブ
ロック分のデータ更新を行い、ライン転送信号(43
0)が有効状態であれば、キャッシュ1(407)に対
して当該ライン分のみのデータ更新を行う。
主メモリコントローラ(410)から送られてきたデー
タを受け取り、プロセッサ1(401)に対して該デー
タの送出を行う。この時、ライン転送信号(430)が
無効状態であれば、キャッシュ1(407)に対してブ
ロック分のデータ更新を行い、ライン転送信号(43
0)が有効状態であれば、キャッシュ1(407)に対
して当該ライン分のみのデータ更新を行う。
【0036】<ライトアクセス>次に、プロセッサから
のライトアクセスにおける動作を詳細に説明する。プロ
セッサ1(401)がライトアクセスを要求した場合、
キャッシュコントローラ1(404)は、まず、該アド
レスに対応するデータがキャッシュ1(407)に格納
されている(キャッシュヒット)か否(キャッシュミス
ヒット)かを調べる。 (a)キャッシュ1(407)ヒットの場合 該アドレスのデータがキャッシュ1(407)に格納さ
れていれば、キャッシュコントローラ1(404)は、
ライトデータをキャッシュ1(407)に格納して該ア
クセスを完了する(ライトバック方式のキャッシュの場
合)。
のライトアクセスにおける動作を詳細に説明する。プロ
セッサ1(401)がライトアクセスを要求した場合、
キャッシュコントローラ1(404)は、まず、該アド
レスに対応するデータがキャッシュ1(407)に格納
されている(キャッシュヒット)か否(キャッシュミス
ヒット)かを調べる。 (a)キャッシュ1(407)ヒットの場合 該アドレスのデータがキャッシュ1(407)に格納さ
れていれば、キャッシュコントローラ1(404)は、
ライトデータをキャッシュ1(407)に格納して該ア
クセスを完了する(ライトバック方式のキャッシュの場
合)。
【0037】(b)キャッシュ1(407)ミスヒット
の場合 一方、該アドレスのデータがキャッシュ1(407)に
格納されていなければ、キャッシュコントローラ1(4
04)は、該アドレスのデータのライト要求信号,アド
レス信号,データ信号を、信号群(427)を介して主
メモリコントローラ(410)に送出する。主メモリコ
ントローラ(410)は、該信号群(427)を介して
送られてきた情報(ライト要求信号)により、主メモリ
(411)のライトアクセスを開始する。一方、それと
同時に、キャッシュコントローラ2(405)〜キャッ
シュコントローラn(406)は、該信号群(427)
の情報により、キャッシュ2(408)〜キャッシュn
(409)のスヌープを開始する。
の場合 一方、該アドレスのデータがキャッシュ1(407)に
格納されていなければ、キャッシュコントローラ1(4
04)は、該アドレスのデータのライト要求信号,アド
レス信号,データ信号を、信号群(427)を介して主
メモリコントローラ(410)に送出する。主メモリコ
ントローラ(410)は、該信号群(427)を介して
送られてきた情報(ライト要求信号)により、主メモリ
(411)のライトアクセスを開始する。一方、それと
同時に、キャッシュコントローラ2(405)〜キャッ
シュコントローラn(406)は、該信号群(427)
の情報により、キャッシュ2(408)〜キャッシュn
(409)のスヌープを開始する。
【0038】このときの主メモリコントローラ(41
0)の動作を説明する。主メモリコントローラ(41
0)では、まず、主記憶アクセス制御ブロック(50
1)により、プロセッサ1(401)がアクセスしよう
としているアドレスに対して、主メモリ(411)の内
容と状態記憶手段(412)の内容を読み出し、次い
で、判定回路ブロック(502)にて、状態記憶手段
(412)から読み出した値に応じて、下記の各動作を
行う。 (a)「00」の場合:…信号群(427)を介して伝
達されたデータを主メモリ(411)へ書き込む。ま
た、状態記憶手段(412)の内容は変化させない。 (b)「01」の場合:…信号群(427)を介して伝
達されたデータを主メモリ(411)へ書き込む。該ア
ドレスのデータを持つキャッシュは、主メモリ(41
1)との一致性を保つためにキャッシュ内の該アドレス
のデータを無効化する。また、状態記憶手段(412)
の内容を「00」に更新する。 (c)「10」の場合:…スヌープにより当該アドレス
の最新のデータを持つキャッシュを見付け、信号群(4
27)を介して伝達されたデータをそのキャッシュに書
き込む。またそのとき、状態記憶手段(412)の内容
は変化させない。
0)の動作を説明する。主メモリコントローラ(41
0)では、まず、主記憶アクセス制御ブロック(50
1)により、プロセッサ1(401)がアクセスしよう
としているアドレスに対して、主メモリ(411)の内
容と状態記憶手段(412)の内容を読み出し、次い
で、判定回路ブロック(502)にて、状態記憶手段
(412)から読み出した値に応じて、下記の各動作を
行う。 (a)「00」の場合:…信号群(427)を介して伝
達されたデータを主メモリ(411)へ書き込む。ま
た、状態記憶手段(412)の内容は変化させない。 (b)「01」の場合:…信号群(427)を介して伝
達されたデータを主メモリ(411)へ書き込む。該ア
ドレスのデータを持つキャッシュは、主メモリ(41
1)との一致性を保つためにキャッシュ内の該アドレス
のデータを無効化する。また、状態記憶手段(412)
の内容を「00」に更新する。 (c)「10」の場合:…スヌープにより当該アドレス
の最新のデータを持つキャッシュを見付け、信号群(4
27)を介して伝達されたデータをそのキャッシュに書
き込む。またそのとき、状態記憶手段(412)の内容
は変化させない。
【0039】ライトアクセスの場合は、何れの場合も、
ライン転送信号(430)は無効状態である。キャッシ
ュコントローラ2(405)〜キャッシュコントローラ
n(406)ではスヌープを行い、主メモリと同じデー
タがキャッシュ内にある場合には、当該データを無効化
し、主メモリよりも新しい最新のデータがキャッシュ内
にある場合には、プロセッサ1から信号群(427)を
介して送出されたデータを、当該キャッシュへ書き込
む。本第2の実施例も上記第1の実施例と同様に、マル
チプロセッサシステムにおける不要なキャッシュのスヌ
ープを減少させることができるため、システムの性能向
上が達成できる。
ライン転送信号(430)は無効状態である。キャッシ
ュコントローラ2(405)〜キャッシュコントローラ
n(406)ではスヌープを行い、主メモリと同じデー
タがキャッシュ内にある場合には、当該データを無効化
し、主メモリよりも新しい最新のデータがキャッシュ内
にある場合には、プロセッサ1から信号群(427)を
介して送出されたデータを、当該キャッシュへ書き込
む。本第2の実施例も上記第1の実施例と同様に、マル
チプロセッサシステムにおける不要なキャッシュのスヌ
ープを減少させることができるため、システムの性能向
上が達成できる。
【0040】(第3の実施例)次に、スヌープをさらに
減らすことが可能な第3の実施例を説明する。上記第1
および第2の実施例では、状態記憶手段に保持している
ものは、プロセッサからアクセスされたアドレスに該当
するブロックが、 a.少なくとも一つのキャッシュに保持されているか否
か、また、 b.もし保持されている場合にはそれがどういう状態
(主メモリと一致しているか否か)で保持されているか
を示す情報であるが、第3の実施例は、当該アドレスの
ブロックが、 a.どのキャッシュに存在するか、また b.そのキャッシュにどういう状態で保持されているか
(主メモリより新しい最新のデータが保持されているか
否か)、を示す情報にしたものである。
減らすことが可能な第3の実施例を説明する。上記第1
および第2の実施例では、状態記憶手段に保持している
ものは、プロセッサからアクセスされたアドレスに該当
するブロックが、 a.少なくとも一つのキャッシュに保持されているか否
か、また、 b.もし保持されている場合にはそれがどういう状態
(主メモリと一致しているか否か)で保持されているか
を示す情報であるが、第3の実施例は、当該アドレスの
ブロックが、 a.どのキャッシュに存在するか、また b.そのキャッシュにどういう状態で保持されているか
(主メモリより新しい最新のデータが保持されているか
否か)、を示す情報にしたものである。
【0041】この場合、状態記憶手段としては、特にス
ヌープの要否を判定するために特別に設けなくても通常
のディレクトリをそのまま利用してもよいことは明らか
である。このようにすると、どのキャッシュに存在する
かを示すために多少多くのビット(例えば、プロセッサ
数)を必要とするが、該当アドレスのブロックが最新の
データをもっている場合にはそのラインのデータを保持
しているキャッシュを調べ、そのキャッシュのみのスヌ
ープを続行し、他のキャッシュのスヌープを中断するこ
とにより、不要なスヌープをより少なくすることができ
る。
ヌープの要否を判定するために特別に設けなくても通常
のディレクトリをそのまま利用してもよいことは明らか
である。このようにすると、どのキャッシュに存在する
かを示すために多少多くのビット(例えば、プロセッサ
数)を必要とするが、該当アドレスのブロックが最新の
データをもっている場合にはそのラインのデータを保持
しているキャッシュを調べ、そのキャッシュのみのスヌ
ープを続行し、他のキャッシュのスヌープを中断するこ
とにより、不要なスヌープをより少なくすることができ
る。
【0042】(第4の実施例)次に、本発明の第4の実
施例を詳細に説明する。本発明の第4の実施例は、キャ
ッシュとディレクトリ間にキャッシュ情報信号を設け、
該キャッシュ情報信号によってキャッシュ状態とディレ
クトリ状態を常に一致させるようにしたものである。図
9に本発明の第4の実施例のブロック図を示す。同図に
おいて、700と800はCPUaとCPUb、701
と801は各CPUにおける命令制御部、702と80
2は各CPUにおける2ウェイ・セット・アソシアティ
ブのキャッシュ、703と803は各CPUにおけるキ
ャッシュバス、900はCPUバス、1000は本発明
が特徴とするキャッシュ情報信号、1100はディレク
トリ、1200は主メモリ、1300は主記憶制御信
号、1400はIOバス、1500はIOである。
施例を詳細に説明する。本発明の第4の実施例は、キャ
ッシュとディレクトリ間にキャッシュ情報信号を設け、
該キャッシュ情報信号によってキャッシュ状態とディレ
クトリ状態を常に一致させるようにしたものである。図
9に本発明の第4の実施例のブロック図を示す。同図に
おいて、700と800はCPUaとCPUb、701
と801は各CPUにおける命令制御部、702と80
2は各CPUにおける2ウェイ・セット・アソシアティ
ブのキャッシュ、703と803は各CPUにおけるキ
ャッシュバス、900はCPUバス、1000は本発明
が特徴とするキャッシュ情報信号、1100はディレク
トリ、1200は主メモリ、1300は主記憶制御信
号、1400はIOバス、1500はIOである。
【0043】キャッシュ情報信号1000は、本実施例
では、キャッシングするか否かを示すための1bit、
CPUaとCPUbのどちらの操作であるかを示すため
の1bit、第1ウェイまたは第2ウェイのどちらに対
する操作かを示すための1bit、キャッシュの状態が
インバリッドまたはクリーンまたはダーティであること
を示すための2bitの合計5bitにより構成され
る。以下の例では、 第0ビット:「0」のときキャッシングすることを示
す。「1」のときキャッシングしないことを示す。 第1ビット:「0」のときCPUa側のキャッシュ/デ
ィレクトリアクセスを示す。「1」のときCPUb側の
キャッシュ/ディレクトリアクセスを示す。 第2ビット:「0」のとき第1ウェイに対するアクセス
を示す。「1」のとき第2ウェイに対するアクセスを示
す。 第3ビットおよび第4ビット:「00」のときキャッシ
ュの次状態がクリーンになることを示す。「01」のと
きキャッシュの次状態がダーティになることを示す。
「10」のときキャッシュの次状態がインバリッドにな
ることを示す。「11」のときキャッシュのキャッシュ
データ(ブロック)を主メモリに書き戻すことを示す。
例えば、キャッシュ情報が「00000」の場合には、
CPUa側のキャッシュ/ディレクトリの第1ウェイの
状態をクリーンにすることを示している。
では、キャッシングするか否かを示すための1bit、
CPUaとCPUbのどちらの操作であるかを示すため
の1bit、第1ウェイまたは第2ウェイのどちらに対
する操作かを示すための1bit、キャッシュの状態が
インバリッドまたはクリーンまたはダーティであること
を示すための2bitの合計5bitにより構成され
る。以下の例では、 第0ビット:「0」のときキャッシングすることを示
す。「1」のときキャッシングしないことを示す。 第1ビット:「0」のときCPUa側のキャッシュ/デ
ィレクトリアクセスを示す。「1」のときCPUb側の
キャッシュ/ディレクトリアクセスを示す。 第2ビット:「0」のとき第1ウェイに対するアクセス
を示す。「1」のとき第2ウェイに対するアクセスを示
す。 第3ビットおよび第4ビット:「00」のときキャッシ
ュの次状態がクリーンになることを示す。「01」のと
きキャッシュの次状態がダーティになることを示す。
「10」のときキャッシュの次状態がインバリッドにな
ることを示す。「11」のときキャッシュのキャッシュ
データ(ブロック)を主メモリに書き戻すことを示す。
例えば、キャッシュ情報が「00000」の場合には、
CPUa側のキャッシュ/ディレクトリの第1ウェイの
状態をクリーンにすることを示している。
【0044】図10に本実施例におけるキャッシュとデ
ィレクトリの構成図を示す。図10(a)に示すよう
に、CPUaとCPUbは、それぞれ深さXエントリの
2ウェイセットアソシアティブでライトアロケイトのキ
ャッシュを持っているものとする。この場合のディレク
トリは、図10(b)に示すように、深さXエントリの
2ウェイセットアソシアティブのディレクトリをCPU
a側とCPUb側の2セット持っている。
ィレクトリの構成図を示す。図10(a)に示すよう
に、CPUaとCPUbは、それぞれ深さXエントリの
2ウェイセットアソシアティブでライトアロケイトのキ
ャッシュを持っているものとする。この場合のディレク
トリは、図10(b)に示すように、深さXエントリの
2ウェイセットアソシアティブのディレクトリをCPU
a側とCPUb側の2セット持っている。
【0045】次に、図9に示した各回路ブロックの動作
を説明する。図11はディレクトリ変更のフローチャー
トである。以下、同図に沿ってディレクトリ変更時の各
回路ブロックの動作について説明する。 (1)CPUリード要求時にヒットした場合:CPUa
の命令制御部701がキャッシュバス703に主記憶リ
ードを発行し(ステップS1;リード)、キャッシュ7
02のヒット判定結果がヒットの場合(ステップS2;
ヒット)、キャッシュ702は命令制御部701に要求
されたデータを返す。この場合、CPUaはCPUバス
900およびキャッシュ情報信号1000にコマンドを
発生しない。従って、ディレクトリ1100の変更は発
生しない(ステップS6)。
を説明する。図11はディレクトリ変更のフローチャー
トである。以下、同図に沿ってディレクトリ変更時の各
回路ブロックの動作について説明する。 (1)CPUリード要求時にヒットした場合:CPUa
の命令制御部701がキャッシュバス703に主記憶リ
ードを発行し(ステップS1;リード)、キャッシュ7
02のヒット判定結果がヒットの場合(ステップS2;
ヒット)、キャッシュ702は命令制御部701に要求
されたデータを返す。この場合、CPUaはCPUバス
900およびキャッシュ情報信号1000にコマンドを
発生しない。従って、ディレクトリ1100の変更は発
生しない(ステップS6)。
【0046】(2)CPUリード要求時にミスヒットの
場合:CPUaの命令制御部701がキャッシュバス7
03に主記憶リードを発行し(ステップS1;リー
ド)、キャッシュ702のヒット判定結果がミスヒット
の場合(ステップS2;ミスヒット)、キャッシュ70
2は主記憶リードをCPUバス900に発行し、主メモ
リ1200のブロックをキャッシュ702に取り込むと
ともに、命令制御部701に要求されたデータを返す。
この時、キャッシュ702はキャッシュ情報信号100
0にキャッシュ702の第1ウェイまたは第2ウェイの
どちらかがクリーンの状態になることを報告する(ステ
ップS3)。この場合、CPUaはキャッシュ情報信号
1000に「00000」(CPUa側のキャッシュの
第1ウェイがクリーンの状態になる場合)または「00
100」(CPUa側のキャッシュの第2ウェイがクリ
ーンの状態になる場合)のコマンドをCPUバス900
のコマンド(主記憶リード要求)と同時に発行する。デ
ィレクトリ1100はこのキャッシュ情報信号1000
を受け取って該当するエントリの第1ウェイまたは第2
ウェイのタグ情報を更新し、ステータスをクリーンにす
る(ステップS3)。
場合:CPUaの命令制御部701がキャッシュバス7
03に主記憶リードを発行し(ステップS1;リー
ド)、キャッシュ702のヒット判定結果がミスヒット
の場合(ステップS2;ミスヒット)、キャッシュ70
2は主記憶リードをCPUバス900に発行し、主メモ
リ1200のブロックをキャッシュ702に取り込むと
ともに、命令制御部701に要求されたデータを返す。
この時、キャッシュ702はキャッシュ情報信号100
0にキャッシュ702の第1ウェイまたは第2ウェイの
どちらかがクリーンの状態になることを報告する(ステ
ップS3)。この場合、CPUaはキャッシュ情報信号
1000に「00000」(CPUa側のキャッシュの
第1ウェイがクリーンの状態になる場合)または「00
100」(CPUa側のキャッシュの第2ウェイがクリ
ーンの状態になる場合)のコマンドをCPUバス900
のコマンド(主記憶リード要求)と同時に発行する。デ
ィレクトリ1100はこのキャッシュ情報信号1000
を受け取って該当するエントリの第1ウェイまたは第2
ウェイのタグ情報を更新し、ステータスをクリーンにす
る(ステップS3)。
【0047】(3)CPUライト要求時にヒットでキャ
ッシュがダーティの場合:CPUaの命令制御部701
がキャッシュバス703に主記憶ライトを発行し(ステ
ップS1;ライト)、キャッシュ702のヒット判定結
果がヒット(ステップS4;ヒット)でキャッシュ状態
がダーティ(ステップS5;ダーティ)の場合、キャッ
シュ702は主記憶ライトのデータをキャッシュ702
にライトする。この場合、CPUaはCPUバス900
およびキャッシュ情報信号1000にコマンドを発生し
ない。従って、ディレクトリ1100の変更は発生しな
い(ステップS7)。
ッシュがダーティの場合:CPUaの命令制御部701
がキャッシュバス703に主記憶ライトを発行し(ステ
ップS1;ライト)、キャッシュ702のヒット判定結
果がヒット(ステップS4;ヒット)でキャッシュ状態
がダーティ(ステップS5;ダーティ)の場合、キャッ
シュ702は主記憶ライトのデータをキャッシュ702
にライトする。この場合、CPUaはCPUバス900
およびキャッシュ情報信号1000にコマンドを発生し
ない。従って、ディレクトリ1100の変更は発生しな
い(ステップS7)。
【0048】(4)CPUライト要求時にヒットでキャ
ッシュがクリーンの場合:CPUaの命令制御部701
がキャッシュバス703に主記憶ライトを発行し(ステ
ップS1;ライト)、キャッシュ702のヒット判定結
果がヒット(ステップS4;ヒット))でキャッシュ状
態がクリーン(ステップS5;クリーン)の場合、キャ
ッシュ702は主記憶ライトデータをキャッシュ702
にライトし、CPUbのキャッシュ802を無効化する
ため、無効化要求をCPUバス900に発行する。この
時、同時にキャッシュ702はキャッシュ情報信号10
00にキャッシュ702の第1ウェイまたは第2ウェイ
のどちらかがダーティの状態になることを報告する(ス
テップS7)。この場合、CPUaがキャッシュ情報信
号1000に「00001」(CPUa側のキャッシュ
の第1ウェイがダーティの状態になる場合)または「0
0101」(CPUa側のキャッシュの第2ウェイがダ
ーティの状態になる場合)のコマンドをCPUバス90
0のコマンド(無効化要求)と同時に発行する。ディレ
クトリ1100はこのキャッシュ情報信号1000を受
け取って該当するエントリの第1ウェイまたは第2ウェ
イのステータスをダーティにする(ステップS7)。
ッシュがクリーンの場合:CPUaの命令制御部701
がキャッシュバス703に主記憶ライトを発行し(ステ
ップS1;ライト)、キャッシュ702のヒット判定結
果がヒット(ステップS4;ヒット))でキャッシュ状
態がクリーン(ステップS5;クリーン)の場合、キャ
ッシュ702は主記憶ライトデータをキャッシュ702
にライトし、CPUbのキャッシュ802を無効化する
ため、無効化要求をCPUバス900に発行する。この
時、同時にキャッシュ702はキャッシュ情報信号10
00にキャッシュ702の第1ウェイまたは第2ウェイ
のどちらかがダーティの状態になることを報告する(ス
テップS7)。この場合、CPUaがキャッシュ情報信
号1000に「00001」(CPUa側のキャッシュ
の第1ウェイがダーティの状態になる場合)または「0
0101」(CPUa側のキャッシュの第2ウェイがダ
ーティの状態になる場合)のコマンドをCPUバス90
0のコマンド(無効化要求)と同時に発行する。ディレ
クトリ1100はこのキャッシュ情報信号1000を受
け取って該当するエントリの第1ウェイまたは第2ウェ
イのステータスをダーティにする(ステップS7)。
【0049】(5)CPUライト要求時にミスヒットの
場合:CPUaの命令制御部701がキャッシュバス7
03に主記憶ライトを発行し(ステップS1;ライ
ト)、キャッシュ702のヒット判定結果がミスヒット
(ステップS4;ミスヒット)の場合、キャッシュ70
2は主記憶リードをCPUバス900に発行し、主メモ
リ1200のブロックをキャッシュ702に取り込み、
命令制御部701のデータをキャッシュ702にライト
する。キャッシュ702が主記憶リードをCPUバス9
00に発行する時、同時にキャッシュ702はキャッシ
ュ情報信号1000にキャッシュ702の第1ウェイま
たは第2ウェイのどちらかがダーティの状態になること
を報告する(ステップS7)。この場合、CPUaがキ
ャッシュ情報信号1000に「00001」(CPUa
側のキャッシュの第1ウェイがダーティの状態になる場
合)または「00101」(CPUa側のキャッシュの
第2ウェイがダーティの状態になる場合)のコマンドを
CPUバス900のコマンド(主記憶リード要求)と同
時に発行する。ディレクトリ1100はこのキャッシュ
情報信号1000を受け取って該当するエントリの第1
ウェイまたは第2ウェイのタグ情報を更新し、ステータ
スをダーティにする(ステップS7)。
場合:CPUaの命令制御部701がキャッシュバス7
03に主記憶ライトを発行し(ステップS1;ライ
ト)、キャッシュ702のヒット判定結果がミスヒット
(ステップS4;ミスヒット)の場合、キャッシュ70
2は主記憶リードをCPUバス900に発行し、主メモ
リ1200のブロックをキャッシュ702に取り込み、
命令制御部701のデータをキャッシュ702にライト
する。キャッシュ702が主記憶リードをCPUバス9
00に発行する時、同時にキャッシュ702はキャッシ
ュ情報信号1000にキャッシュ702の第1ウェイま
たは第2ウェイのどちらかがダーティの状態になること
を報告する(ステップS7)。この場合、CPUaがキ
ャッシュ情報信号1000に「00001」(CPUa
側のキャッシュの第1ウェイがダーティの状態になる場
合)または「00101」(CPUa側のキャッシュの
第2ウェイがダーティの状態になる場合)のコマンドを
CPUバス900のコマンド(主記憶リード要求)と同
時に発行する。ディレクトリ1100はこのキャッシュ
情報信号1000を受け取って該当するエントリの第1
ウェイまたは第2ウェイのタグ情報を更新し、ステータ
スをダーティにする(ステップS7)。
【0050】以上説明したように、本実施例では、キャ
ッシュ情報を用いることによってキャッシュ702とデ
ィレクトリ1100の状態を常に同一に保つことが可能
になる。また、全く同様にして、CPUbのキャッシュ
802とディレクトリ1100の状態も常に同一に保つ
ことができる。
ッシュ情報を用いることによってキャッシュ702とデ
ィレクトリ1100の状態を常に同一に保つことが可能
になる。また、全く同様にして、CPUbのキャッシュ
802とディレクトリ1100の状態も常に同一に保つ
ことができる。
【0051】図12はDMA時のディレクトリ動作フロ
ーチャートである。以下、同図に沿ってDMA要求時の
図1の各ブロックの動作について説明する。 (1)DMAリードでミスヒットの場合:IO1500
がIOバス1400にDMAリードを発行し、ディレク
トリ1100のヒット判定結果がミスヒット(ステップ
S11;ミスヒット)の場合、ディレクトリ1100が
主メモリ1200にIO1500へのデータ出力を指示
する。この場合、キャッシュ702とキャッシュ802
のスヌープは必要ない。ここでは、CPUバス900お
よびキャッシュ情報信号1000にコマンドは発行され
ない。
ーチャートである。以下、同図に沿ってDMA要求時の
図1の各ブロックの動作について説明する。 (1)DMAリードでミスヒットの場合:IO1500
がIOバス1400にDMAリードを発行し、ディレク
トリ1100のヒット判定結果がミスヒット(ステップ
S11;ミスヒット)の場合、ディレクトリ1100が
主メモリ1200にIO1500へのデータ出力を指示
する。この場合、キャッシュ702とキャッシュ802
のスヌープは必要ない。ここでは、CPUバス900お
よびキャッシュ情報信号1000にコマンドは発行され
ない。
【0052】(2)DMAリードでCPUa側ヒットで
ダーティの場合:IO1500がIOバス1400にD
MAリードを発行し、ディレクトリ1100のヒット判
定結果がCPUa側ヒット(ステップS11;CPUa
側ヒット)でCPUa側ディレクトリの状態がダーティ
(ステップS12;ダーティ)の場合、ディレクトリ1
100はCPUバス900に対し、キャッシュ702の
主メモリ1200への書き戻し(ライトバック)要求を
発行する(ステップS13)と同時に、キャッシュ情報
信号1000により、書き戻すブロックがキャッシュ7
02の第1ウェイまたは第2ウェイのどちらかであるこ
とを報告する。この場合、ディレクトリ1100がキャ
ッシュ情報信号1000に「00011」(CPUa側
のキャッシュの第1ウェイのブロックを主メモリに書き
戻す場合)または「00111」(CPUa側のキャッ
シュの第2ウェイのブロックを主メモリに書き戻す場
合)のコマンドをCPUバス900のコマンド(書き戻
し要求)と同時に発行する。キャッシュ702はこのキ
ャッシュ情報信号1000を受け取って当該キャッシュ
の第1ウェイまたは第2ウェイのデータを主メモリに書
き戻した後、該エントリをインバリッドにする。主メモ
リ1200はキャッシュ702から書き戻されたブロッ
クをIO1500へ返す。この時、CPUa側ディレク
トリをインバリッドに変更する(ステップS14)。
ダーティの場合:IO1500がIOバス1400にD
MAリードを発行し、ディレクトリ1100のヒット判
定結果がCPUa側ヒット(ステップS11;CPUa
側ヒット)でCPUa側ディレクトリの状態がダーティ
(ステップS12;ダーティ)の場合、ディレクトリ1
100はCPUバス900に対し、キャッシュ702の
主メモリ1200への書き戻し(ライトバック)要求を
発行する(ステップS13)と同時に、キャッシュ情報
信号1000により、書き戻すブロックがキャッシュ7
02の第1ウェイまたは第2ウェイのどちらかであるこ
とを報告する。この場合、ディレクトリ1100がキャ
ッシュ情報信号1000に「00011」(CPUa側
のキャッシュの第1ウェイのブロックを主メモリに書き
戻す場合)または「00111」(CPUa側のキャッ
シュの第2ウェイのブロックを主メモリに書き戻す場
合)のコマンドをCPUバス900のコマンド(書き戻
し要求)と同時に発行する。キャッシュ702はこのキ
ャッシュ情報信号1000を受け取って当該キャッシュ
の第1ウェイまたは第2ウェイのデータを主メモリに書
き戻した後、該エントリをインバリッドにする。主メモ
リ1200はキャッシュ702から書き戻されたブロッ
クをIO1500へ返す。この時、CPUa側ディレク
トリをインバリッドに変更する(ステップS14)。
【0053】(3)DMAリードでCPUb側ヒットで
ダーティの場合:IO1500がIOバス1400にD
MAリードを発行し、ディレクトリ1100のヒット判
定結果がCPUb側ヒット(ステップS11;CPUb
側ヒット)でCPUb側ディレクトリの状態がダーティ
(ステップS17;ダーティ)の場合、ディレクトリ1
100はCPUバス900に対し、キャッシュ802の
主メモリ1200への書き戻し(ライトバック)要求を
発行する(ステップS18)と同時に、キャッシュ情報
信号1000により、書き戻すブロックがキャッシュ8
02の第1ウェイまたは第2ウェイのどちらかであるこ
とを報告する。この場合、ディレクトリ1100がキャ
ッシュ情報信号1000に「01011」(CPUb側
のキャッシュの第1ウェイのブロックを主メモリに書き
戻す場合)または「01111」(CPUb側のキャッ
シュの第2ウェイのブロックを主メモリに書き戻す場
合)のコマンドをCPUバス900のコマンド(書き戻
し要求)と同時に発行する。キャッシュ802はこのキ
ャッシュ情報信号1000を受け取って当該キャッシュ
の第1ウェイまたは第2ウェイのデータを主メモリに書
き戻した後、該エントリをインバリッドにする。主メモ
リ1200はキャッシュ802から書き戻されたデータ
をIO1500へ返す。この時、CPUb側ディレクト
リをインバリッドに変更する(ステップS19)。
ダーティの場合:IO1500がIOバス1400にD
MAリードを発行し、ディレクトリ1100のヒット判
定結果がCPUb側ヒット(ステップS11;CPUb
側ヒット)でCPUb側ディレクトリの状態がダーティ
(ステップS17;ダーティ)の場合、ディレクトリ1
100はCPUバス900に対し、キャッシュ802の
主メモリ1200への書き戻し(ライトバック)要求を
発行する(ステップS18)と同時に、キャッシュ情報
信号1000により、書き戻すブロックがキャッシュ8
02の第1ウェイまたは第2ウェイのどちらかであるこ
とを報告する。この場合、ディレクトリ1100がキャ
ッシュ情報信号1000に「01011」(CPUb側
のキャッシュの第1ウェイのブロックを主メモリに書き
戻す場合)または「01111」(CPUb側のキャッ
シュの第2ウェイのブロックを主メモリに書き戻す場
合)のコマンドをCPUバス900のコマンド(書き戻
し要求)と同時に発行する。キャッシュ802はこのキ
ャッシュ情報信号1000を受け取って当該キャッシュ
の第1ウェイまたは第2ウェイのデータを主メモリに書
き戻した後、該エントリをインバリッドにする。主メモ
リ1200はキャッシュ802から書き戻されたデータ
をIO1500へ返す。この時、CPUb側ディレクト
リをインバリッドに変更する(ステップS19)。
【0054】(4)DMAリードでCPUa側ヒットで
クリーンの場合:IO1500がIOバス1400にD
MAリードを発行し、ディレクトリ1100のヒット判
定結果がCPUa側ヒット(ステップS11;CPUa
側ヒット)でCPUa側ディレクトリの状態がクリーン
(ステップS12;クリーン)の場合、ディレクトリ1
100が主メモリ1200にIO1500へのデータ出
力を指示する。この場合、キャッシュ702とキャッシ
ュ802のスヌープは必要ない。ここでは、CPUバス
900およびキャッシュ情報信号1000にコマンドは
発行されない。
クリーンの場合:IO1500がIOバス1400にD
MAリードを発行し、ディレクトリ1100のヒット判
定結果がCPUa側ヒット(ステップS11;CPUa
側ヒット)でCPUa側ディレクトリの状態がクリーン
(ステップS12;クリーン)の場合、ディレクトリ1
100が主メモリ1200にIO1500へのデータ出
力を指示する。この場合、キャッシュ702とキャッシ
ュ802のスヌープは必要ない。ここでは、CPUバス
900およびキャッシュ情報信号1000にコマンドは
発行されない。
【0055】(5)DMAリードでCPUb側ヒットで
クリーンの場合:IO1500がIOバス1400にD
MAリードを発行し、ディレクトリ1100のヒット判
定結果がCPUb側ヒット(ステップS11;CPUb
側ヒット)でCPUb側ディレクトリの状態がクリーン
(ステップS17;クリーン)の場合、ディレクトリ1
100が主メモリ1200にIO1500へのデータ出
力を指示する。この場合、キャッシュ702とキャッシ
ュ802のスヌープは必要ない。ここでは、CPUバス
900およびキャッシュ情報信号1000にコマンドは
発行されない。
クリーンの場合:IO1500がIOバス1400にD
MAリードを発行し、ディレクトリ1100のヒット判
定結果がCPUb側ヒット(ステップS11;CPUb
側ヒット)でCPUb側ディレクトリの状態がクリーン
(ステップS17;クリーン)の場合、ディレクトリ1
100が主メモリ1200にIO1500へのデータ出
力を指示する。この場合、キャッシュ702とキャッシ
ュ802のスヌープは必要ない。ここでは、CPUバス
900およびキャッシュ情報信号1000にコマンドは
発行されない。
【0056】(6)DMAライトでミスヒットの場合:
IO1500がIOバス1400にDMAライトを発行
し、ディレクトリ1100のヒット判定結果がミスヒッ
ト(ステップS11;ミスヒット)の場合、ディレクト
リ1100が主メモリ1200にIO1500からのデ
ータの書き込みを指示する。この場合、キャッシュ70
2とキャッシュ802のスヌープは必要ない。ここで
は、CPUバス900およびキャッシュ情報信号100
0にコマンドは発行されない。
IO1500がIOバス1400にDMAライトを発行
し、ディレクトリ1100のヒット判定結果がミスヒッ
ト(ステップS11;ミスヒット)の場合、ディレクト
リ1100が主メモリ1200にIO1500からのデ
ータの書き込みを指示する。この場合、キャッシュ70
2とキャッシュ802のスヌープは必要ない。ここで
は、CPUバス900およびキャッシュ情報信号100
0にコマンドは発行されない。
【0057】(7)DMAライトでCPUa側ヒットで
ダーティの場合:IO1500がIOバス1400にD
MAライトを発行し、ディレクトリ1100のヒット判
定結果がCPUa側ヒット(ステップS11;CPUa
側ヒット)でCPUa側ディレクトリの状態がダーティ
(ステップS12;ダーティ)の場合、ディレクトリ1
100はCPUバス900に対し、キャッシュ702の
主メモリ1200への書き戻し要求を発行する(ステッ
プS13)と同時に、キャッシュ情報信号1000によ
り、書き戻すブロックがキャッシュ702の第1ウェイ
または第2ウェイのどちらかであることを報告する。こ
の場合、ディレクトリ1100がキャッシュ情報信号1
000に「00011」(CPUa側のキャッシュの第
1ウェイのブロックを主メモリに書き戻す場合)または
「00111」(CPUa側のキャッシュの第2ウェイ
のブロックを主メモリに書き戻す場合)のコマンドをC
PUバス300のコマンド(書き戻し要求)と同時に発
行する。キャッシュ702はこのキャッシュ情報信号1
000を受け取って当該キャッシュの第1ウェイまたは
第2ウェイのデータを主メモリに書き戻した後、該エン
トリをインバリッドにする。ディレクトリ1100はキ
ャッシュ702の書き戻しブロックを主メモリ1200
にライトしてからIO1500からのデータを主メモリ
1200にライトする。この時、CPUa側ディレクト
リをインバリッドに変更する(ステップS14)。
ダーティの場合:IO1500がIOバス1400にD
MAライトを発行し、ディレクトリ1100のヒット判
定結果がCPUa側ヒット(ステップS11;CPUa
側ヒット)でCPUa側ディレクトリの状態がダーティ
(ステップS12;ダーティ)の場合、ディレクトリ1
100はCPUバス900に対し、キャッシュ702の
主メモリ1200への書き戻し要求を発行する(ステッ
プS13)と同時に、キャッシュ情報信号1000によ
り、書き戻すブロックがキャッシュ702の第1ウェイ
または第2ウェイのどちらかであることを報告する。こ
の場合、ディレクトリ1100がキャッシュ情報信号1
000に「00011」(CPUa側のキャッシュの第
1ウェイのブロックを主メモリに書き戻す場合)または
「00111」(CPUa側のキャッシュの第2ウェイ
のブロックを主メモリに書き戻す場合)のコマンドをC
PUバス300のコマンド(書き戻し要求)と同時に発
行する。キャッシュ702はこのキャッシュ情報信号1
000を受け取って当該キャッシュの第1ウェイまたは
第2ウェイのデータを主メモリに書き戻した後、該エン
トリをインバリッドにする。ディレクトリ1100はキ
ャッシュ702の書き戻しブロックを主メモリ1200
にライトしてからIO1500からのデータを主メモリ
1200にライトする。この時、CPUa側ディレクト
リをインバリッドに変更する(ステップS14)。
【0058】(8)DMAライトでCPUb側ヒットで
ダーティの場合:IO1500がIOバス1400にD
MAライトを発行し、ディレクトリ1100のヒット判
定結果がCPUb側ヒット(ステップS11;CPUb
側ヒット)でCPUb側ディレクトリの状態がダーティ
(ステップS17;ダーティ)の場合、ディレクトリ1
100はCPUバス900に対し、キャッシュ802の
主メモリ1200への書き戻し要求を発行する(ステッ
プS18)と同時に、キャッシュ情報信号1000によ
り、書き戻すブロックがキャッシュ802の第1ウェイ
または第2ウェイのどちらかであることを報告する。こ
の場合、ディレクトリ1100がキャッシュ情報信号1
000に「01011」(CPUb側のキャッシュの第
1ウェイのブロックを主メモリに書き戻す場合)または
「01111」(CPUb側のキャッシュの第2ウェイ
のブロックを主メモリに書き戻す場合)のコマンドをC
PUバス900のコマンド(書き戻し要求)と同時に発
行する。キャッシュ802はこのキャッシュ情報信号1
000を受け取って当該キャッシュの第1ウェイまたは
第2ウェイのデータを主メモリに書き戻した後、該エン
トリをインバリッドにする。ディレクトリ1100はキ
ャッシュ802の書き戻しブロックを主メモリ1200
にライトしてからIO1500からのデータを主メモリ
1200にライトする。この時、CPUb側ディレクト
リをインバリッドに変更する(ステップS19)。
ダーティの場合:IO1500がIOバス1400にD
MAライトを発行し、ディレクトリ1100のヒット判
定結果がCPUb側ヒット(ステップS11;CPUb
側ヒット)でCPUb側ディレクトリの状態がダーティ
(ステップS17;ダーティ)の場合、ディレクトリ1
100はCPUバス900に対し、キャッシュ802の
主メモリ1200への書き戻し要求を発行する(ステッ
プS18)と同時に、キャッシュ情報信号1000によ
り、書き戻すブロックがキャッシュ802の第1ウェイ
または第2ウェイのどちらかであることを報告する。こ
の場合、ディレクトリ1100がキャッシュ情報信号1
000に「01011」(CPUb側のキャッシュの第
1ウェイのブロックを主メモリに書き戻す場合)または
「01111」(CPUb側のキャッシュの第2ウェイ
のブロックを主メモリに書き戻す場合)のコマンドをC
PUバス900のコマンド(書き戻し要求)と同時に発
行する。キャッシュ802はこのキャッシュ情報信号1
000を受け取って当該キャッシュの第1ウェイまたは
第2ウェイのデータを主メモリに書き戻した後、該エン
トリをインバリッドにする。ディレクトリ1100はキ
ャッシュ802の書き戻しブロックを主メモリ1200
にライトしてからIO1500からのデータを主メモリ
1200にライトする。この時、CPUb側ディレクト
リをインバリッドに変更する(ステップS19)。
【0059】(9)DMAライトでCPUa側ヒットで
クリーンの場合:IO1500がIOバス1400にD
MAライトを発行し、ディレクトリ1100のヒット判
定結果がCPUa側ヒット(ステップS11;CPUa
側ヒット)でCPUa側ディレクトリの状態がクリーン
(ステップS12;クリーン)の場合、ディレクトリ1
100はCPUバス900に対し、キャッシュ702の
無効化要求を発行すると同時に、キャッシュ情報信号1
000により、無効化するデータがキャッシュ702の
第1ウェイまたは第2ウェイのどちらかであることを報
告する。この場合、ディレクトリ1100がキャッシュ
情報信号1000に「00010」(CPUa側のキャ
ッシュの第1ウェイがインバリッドの状態になる場合)
または「00110」(CPUa側のキャッシュの第2
ウェイがインバリッドの状態になる場合)のコマンドを
CPUバス900のコマンド(無効化要求)と同時に発
行する。キャッシュ702はこのキャッシュ情報信号1
000を受け取って当該キャッシュの第1ウェイまたは
第2ウェイをインバリッドにする(ステップS16)。
ディレクトリ1100はIO1500からのデータを主
メモリ1200にライトする。この時、CPUa側ディ
レクトリをインバリッドに変更する(ステップ14)。
クリーンの場合:IO1500がIOバス1400にD
MAライトを発行し、ディレクトリ1100のヒット判
定結果がCPUa側ヒット(ステップS11;CPUa
側ヒット)でCPUa側ディレクトリの状態がクリーン
(ステップS12;クリーン)の場合、ディレクトリ1
100はCPUバス900に対し、キャッシュ702の
無効化要求を発行すると同時に、キャッシュ情報信号1
000により、無効化するデータがキャッシュ702の
第1ウェイまたは第2ウェイのどちらかであることを報
告する。この場合、ディレクトリ1100がキャッシュ
情報信号1000に「00010」(CPUa側のキャ
ッシュの第1ウェイがインバリッドの状態になる場合)
または「00110」(CPUa側のキャッシュの第2
ウェイがインバリッドの状態になる場合)のコマンドを
CPUバス900のコマンド(無効化要求)と同時に発
行する。キャッシュ702はこのキャッシュ情報信号1
000を受け取って当該キャッシュの第1ウェイまたは
第2ウェイをインバリッドにする(ステップS16)。
ディレクトリ1100はIO1500からのデータを主
メモリ1200にライトする。この時、CPUa側ディ
レクトリをインバリッドに変更する(ステップ14)。
【0060】(10)DMAライトでCPUb側ヒット
でクリーンの場合:IO1500がIOバス1400に
DMAライトを発行し、ディレクトリ1100のヒット
判定結果がCPUb側ヒット(ステップS11;CPU
b側ヒット)でCPUb側ディレクトリの状態がクリー
ン(ステップS17;クリーン)の場合、ディレクトリ
1100はCPUバス900に対し、キャッシュ802
の無効化要求を発行すると同時に、キャッシュ情報信号
1000により、無効化するデータがキャッシュ702
の第1ウェイまたは第2ウェイのどちらかであることを
報告する。この場合、ディレクトリ1100がキャッシ
ュ情報信号1000に「01010」(CPUb側のキ
ャッシュの第1ウェイがインバリッドの状態になる場
合)または「01110」(CPUb側のキャッシュの
第2ウェイがインバリッドの状態になる場合)のコマン
ドをCPUバス900のコマンド(無効化要求)と同時
に発行する。キャッシュ802はこのキャッシュ情報信
号1000を受け取って当該キャッシュの第1ウェイま
たは第2ウェイをインバリッドにする(ステップS2
1)。主メモリ1200はIO1500からのデータを
ライトする。この時、CPUb側ディレクトリをインバ
リッドに変更する(ステップS19)。
でクリーンの場合:IO1500がIOバス1400に
DMAライトを発行し、ディレクトリ1100のヒット
判定結果がCPUb側ヒット(ステップS11;CPU
b側ヒット)でCPUb側ディレクトリの状態がクリー
ン(ステップS17;クリーン)の場合、ディレクトリ
1100はCPUバス900に対し、キャッシュ802
の無効化要求を発行すると同時に、キャッシュ情報信号
1000により、無効化するデータがキャッシュ702
の第1ウェイまたは第2ウェイのどちらかであることを
報告する。この場合、ディレクトリ1100がキャッシ
ュ情報信号1000に「01010」(CPUb側のキ
ャッシュの第1ウェイがインバリッドの状態になる場
合)または「01110」(CPUb側のキャッシュの
第2ウェイがインバリッドの状態になる場合)のコマン
ドをCPUバス900のコマンド(無効化要求)と同時
に発行する。キャッシュ802はこのキャッシュ情報信
号1000を受け取って当該キャッシュの第1ウェイま
たは第2ウェイをインバリッドにする(ステップS2
1)。主メモリ1200はIO1500からのデータを
ライトする。この時、CPUb側ディレクトリをインバ
リッドに変更する(ステップS19)。
【0061】以上の動作により、ディレクトリ容量はキ
ャッシュ容量の合計で済むようになる。また、DMAで
ディレクトリミスヒット時のキャッシュスヌープは必要
なくなり、DMAのキャッシュスヌープ時も無効化また
は書き戻しの発生するキャッシュとウェイをディレクト
リが指示するため、キャッシュのヒット判定が必要なく
なる。なお、第4の実施例では2ウェイのキャッシュで
説明したが、キャッシュのウェイ数にもよらずキャッシ
ュ情報のビットを変更するだけでさらに多ウェイに拡張
できることは明らかである。また、上記実施例ではキャ
ッシュをCPU内に設けた場合で説明したが、本発明は
キャッシュの物理的な位置によらず、CPUの内部に位
置した場合にも、CPUの外部に位置した場合にも適用
可能である。また、上記実施例ではライトバック方式の
キャッシュで説明したが、本発明はキャッシュの方式に
よらずライトスルー方式でもライトバック方式でも適用
可能である。
ャッシュ容量の合計で済むようになる。また、DMAで
ディレクトリミスヒット時のキャッシュスヌープは必要
なくなり、DMAのキャッシュスヌープ時も無効化また
は書き戻しの発生するキャッシュとウェイをディレクト
リが指示するため、キャッシュのヒット判定が必要なく
なる。なお、第4の実施例では2ウェイのキャッシュで
説明したが、キャッシュのウェイ数にもよらずキャッシ
ュ情報のビットを変更するだけでさらに多ウェイに拡張
できることは明らかである。また、上記実施例ではキャ
ッシュをCPU内に設けた場合で説明したが、本発明は
キャッシュの物理的な位置によらず、CPUの内部に位
置した場合にも、CPUの外部に位置した場合にも適用
可能である。また、上記実施例ではライトバック方式の
キャッシュで説明したが、本発明はキャッシュの方式に
よらずライトスルー方式でもライトバック方式でも適用
可能である。
【0062】
【発明の効果】本発明によれば、キャッシュを有するマ
ルチプロセッサシステムにおいて、スヌープ方式とディ
レクトリ方式とを併用することによって、不要なキャッ
シュのスヌープを減少させることができ、また、主メモ
リのアクセスに要する時間よりもキャッシュのスヌープ
に要する時間の方が長いようなシステムの場合、キャッ
シュのスヌープで主メモリアクセスが律速することが避
けられるため、システムの性能向上が達成できる。ま
た、本発明は、システム内のキャッシュの階層構造には
よらないし、各プロセッサが違う階層構造のキャッシュ
を持っていても有効である。また、各キャッシュの一致
性保証のプロトコルにもよらない。さらに、本発明は、
各キャッシュがライトスルー方式であっても、ライトバ
ック方式であっても、さらに、システム内および階層内
に両キャッシュ方式が混在していても有効である。ま
た、本発明は、状態記憶手段をDRAMで構成してもよ
いし、または、SRAMで構成してもよい。即ち、本発
明は、状態記憶手段の構成素子にはよらない。
ルチプロセッサシステムにおいて、スヌープ方式とディ
レクトリ方式とを併用することによって、不要なキャッ
シュのスヌープを減少させることができ、また、主メモ
リのアクセスに要する時間よりもキャッシュのスヌープ
に要する時間の方が長いようなシステムの場合、キャッ
シュのスヌープで主メモリアクセスが律速することが避
けられるため、システムの性能向上が達成できる。ま
た、本発明は、システム内のキャッシュの階層構造には
よらないし、各プロセッサが違う階層構造のキャッシュ
を持っていても有効である。また、各キャッシュの一致
性保証のプロトコルにもよらない。さらに、本発明は、
各キャッシュがライトスルー方式であっても、ライトバ
ック方式であっても、さらに、システム内および階層内
に両キャッシュ方式が混在していても有効である。ま
た、本発明は、状態記憶手段をDRAMで構成してもよ
いし、または、SRAMで構成してもよい。即ち、本発
明は、状態記憶手段の構成素子にはよらない。
【0063】また、本発明によれば、キャッシュコヒー
レンシをディレクトリ方式で保証しているシステムにお
いて、キャッシュとディレクトリ間にキャッシュ情報信
号を設け、ディレクトリ状態とキャッシュ状態を常に一
致させることにより、主メモリ容量全てに対するディレ
クトリを持つ必要がなく、キャッシュ容量の合計のディ
レクトリで済むようになる。また、DMAでディレクト
リミスヒット時のキャッシュスヌープは必要なくなり、
DMAのキャッシュスヌープ時も無効化または書き戻し
の発生するキャッシュとウェイをディレクトリが指示す
るため、キャッシュのヒット判定が必要なくなる。
レンシをディレクトリ方式で保証しているシステムにお
いて、キャッシュとディレクトリ間にキャッシュ情報信
号を設け、ディレクトリ状態とキャッシュ状態を常に一
致させることにより、主メモリ容量全てに対するディレ
クトリを持つ必要がなく、キャッシュ容量の合計のディ
レクトリで済むようになる。また、DMAでディレクト
リミスヒット時のキャッシュスヌープは必要なくなり、
DMAのキャッシュスヌープ時も無効化または書き戻し
の発生するキャッシュとウェイをディレクトリが指示す
るため、キャッシュのヒット判定が必要なくなる。
【図1】本発明の第1の実施例を実施するための全体構
成図である。
成図である。
【図2】本発明の第1の実施例を実施するための主メモ
リコントローラの主要ブロックを示す図である。
リコントローラの主要ブロックを示す図である。
【図3】本発明の第1の実施例を実施するためのキャッ
シュコントローラの主要ブロックを示す図である。
シュコントローラの主要ブロックを示す図である。
【図4】主メモリ空間およびそれに対応する状態記憶手
段を示す図である。
段を示す図である。
【図5】状態記憶手段の一実施例の内容を示す図であ
る。
る。
【図6】本発明の第2の実施例を実施するための全体構
成図である。
成図である。
【図7】本発明の第2の実施例を実施するための主メモ
リコントローラの主要ブロックを示す図である。
リコントローラの主要ブロックを示す図である。
【図8】本発明の第2の実施例を実施するためのキャッ
シュコントローラの主要ブロックを示す図である。
シュコントローラの主要ブロックを示す図である。
【図9】本発明の第4の実施例のブロック図である。
【図10】本発明の第4の実施例のキャッシュとディレ
クトリの構成図である。
クトリの構成図である。
【図11】本発明の第4の実施例のディレクトリの変更
フローである。
フローである。
【図12】本発明の第4の実施例のDMA時のディレク
トリの動作フローである。
トリの動作フローである。
101,401…プロセッサ1、102,402…プロ
セッサ2、103,403…プロセッサn、104,4
04…キャッシュコントローラ1、105,405…キ
ャッシュコントローラ2、106,406…キャッシュ
コントローラn、107,407…キャッシュ1、10
8,408…キャッシュ2、109,409…キャッシ
ュn、110,410…主メモリコントローラ、11
1,411…主メモリ、112,412…状態記憶手
段、130…スヌープ中断信号、201,501…主記
憶アクセス制御ブロック、202,502…判定回路ブ
ロック、203…中断信号制御回路ブロック、204,
504…主記憶アクセス制御回路、205,505…状
態記憶手段制御回路、301,601…キャッシュアク
セス制御ブロック、302,602…スヌープ制御ブロ
ック、303…中断回路ブロック、430…ライン転送
信号、503…ライン転送制御回路ブロック、700,
800…CPU、701,801…CPU命令制御部、
702,802…キャッシュ、703,803…キャッ
シュバス、900…CPUバス、1000…キャッシュ
情報信号、1100…ディレクトリ、1200…主メモ
リ、1300…主記憶制御信号、1400…IOバス、
1500…IO
セッサ2、103,403…プロセッサn、104,4
04…キャッシュコントローラ1、105,405…キ
ャッシュコントローラ2、106,406…キャッシュ
コントローラn、107,407…キャッシュ1、10
8,408…キャッシュ2、109,409…キャッシ
ュn、110,410…主メモリコントローラ、11
1,411…主メモリ、112,412…状態記憶手
段、130…スヌープ中断信号、201,501…主記
憶アクセス制御ブロック、202,502…判定回路ブ
ロック、203…中断信号制御回路ブロック、204,
504…主記憶アクセス制御回路、205,505…状
態記憶手段制御回路、301,601…キャッシュアク
セス制御ブロック、302,602…スヌープ制御ブロ
ック、303…中断回路ブロック、430…ライン転送
信号、503…ライン転送制御回路ブロック、700,
800…CPU、701,801…CPU命令制御部、
702,802…キャッシュ、703,803…キャッ
シュバス、900…CPUバス、1000…キャッシュ
情報信号、1100…ディレクトリ、1200…主メモ
リ、1300…主記憶制御信号、1400…IOバス、
1500…IO
───────────────────────────────────────────────────── フロントページの続き (72)発明者 坪井 正英 愛知県尾張旭市晴丘町池上1番地 株式会 社日立製作所オフィスシステム事業部内 (72)発明者 村嶋 寛志 愛知県尾張旭市晴丘町池上1番地 株式会 社日立製作所オフィスシステム事業部内 (72)発明者 岡澤 宏一 神奈川県川崎市麻生区王禅寺1099番地 株 式会社日立製作所システム開発研究所内 (72)発明者 梅村 雅也 神奈川県川崎市麻生区王禅寺1099番地 株 式会社日立製作所システム開発研究所内 (72)発明者 内藤 倫典 愛知県尾張旭市晴丘町池上1番地 株式会 社日立旭エレクトロニクス内 (72)発明者 平光 哲生 愛知県尾張旭市晴丘町池上1番地 株式会 社日立旭エレクトロニクス内 (72)発明者 寺尾 益美 愛知県名古屋市中区栄三丁目10番22号 日 立中部ソフトウェア株式会社内
Claims (6)
- 【請求項1】 複数のプロセッサと、前記複数のプロセ
ッサに共有される主メモリと、前記主メモリの制御を行
う主メモリコントローラと、前記複数のプロセッサの各
々と前記主メモリとの間に位置し、前記主メモリの内容
のコピーを保持する複数のキャッシュメモリと、前記複
数のキャッシュメモリの各々の制御を行うキャッシュコ
ントローラとを有するマルチプロセッサシステムにおけ
るキャッシュメモリ制御装置において、 前記主メモリ上のデータの状態を記憶する状態記憶手段
と、前記プロセッサからアクセスされたアドレスに対応
して前記状態記憶手段を検索し該アドレスに対して他キ
ャッシュのスヌープが必要か否かを判定する判定回路
と、前記判定回路による判定の結果スヌープが不要であ
るとわかった場合、前記キャッシュコントローラに対し
て出力するスヌープの中断を知らせるスヌープ中断信号
と、前記各々のキャッシュコントローラに、前記スヌー
プ中断信号を受け取った場合に該スヌープを中断すため
の中断回路を設けたことを特徴とするキャッシュメモリ
制御装置。 - 【請求項2】 複数のプロセッサと、前記複数のプロセ
ッサに共有される主メモリと、前記主メモリの制御を行
う主メモリコントローラと、前記複数のプロセッサの各
々と前記主メモリとの間に位置し、前記主メモリの内容
のコピーを保持する複数のキャッシュメモリと、前記複
数のキャッシュメモリの各々の制御を行うキャッシュコ
ントローラとからなり、前記主メモリから前記キャッシ
ュメモリへの転送単位(ブロック)が、前記キャッシュ
メモリから前記プロセッサへの転送単位(ライン)複数
分であるマルチプロセッサシステムにおけるキャッシュ
メモリ制御装置において、 前記キャッシュコントローラからのブロックの置き換え
要求時に、該ブロック内の特定のラインのみスヌープを
行うスヌープ回路と、前記主メモリ上のデータの状態を
記憶する状態記憶手段と、前記プロセッサからアクセス
されたアドレスに対応して前記状態記憶手段を検索し、
該アドレスを含むブロックに対応するデータの状態を判
定する判定回路と、前記判定回路による判定の結果該ア
ドレスを含むブロックに対応するデータに対してスヌー
プが不要であると判定された場合にブロック全体のデー
タをキャッシュコントローラに出力するとともに、スヌ
ープが必要であると判定された場合に特定のラインのみ
の転送に切り替え、該特定ラインの情報を前記キャッシ
ュコントローラに通知する手段を設けたことを特徴とす
るキャッシュメモリ制御装置。 - 【請求項3】 請求項1または2に記載のキャッシュ制
御装置において、前記状態記憶手段は、主メモリ上のど
のデータが、少なくとも一つのキャッシュメモリに保持
されているか否か、また保持されている場合にどういう
状態で保持されているかを記憶していることを特徴とす
るキャッシュメモリ制御装置。 - 【請求項4】 請求項1または2に記載のキャッシュメ
モリ制御装置において、前記状態記憶手段は、主メモリ
上のどのデータがキャッシュメモリに保持されているか
否か、保持されている場合にはどのキャッシュメモリに
どういう状態で保持されているかを記憶していることを
特徴とするキャッシュメモリ制御装置。 - 【請求項5】 キャッシュコヒーレンシをディレクトリ
方式で保証しているマルチプロセッサシステムにおける
キャッシュメモリ制御装置において、 キャッシュとディレクトリ間で送受するキャッシュ情報
信号を設け、該キャッシュ情報信号を用いてキャッシュ
状態とディレクトリ状態を一致させるようにしたことを
特徴とするキャッシュメモリ制御装置。 - 【請求項6】 請求項5記載のキャッシュメモリ制御装
置において、キャッシュ状態が変化する場合には、キャ
ッシュがキャッシュ状態の変化をキャッシュ情報信号に
よってディレクトリに報告し、DMAが発生した場合に
は、ディレクトリがキャッシュデータの無効化とキャッ
シュデータの主メモリへの書き戻しをキャッシュ情報信
号によってキャッシュに報告するようにしたことを特徴
とするキャッシュメモリ制御装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8212369A JPH1055314A (ja) | 1996-08-12 | 1996-08-12 | キャッシュメモリ制御装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8212369A JPH1055314A (ja) | 1996-08-12 | 1996-08-12 | キャッシュメモリ制御装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH1055314A true JPH1055314A (ja) | 1998-02-24 |
Family
ID=16621429
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP8212369A Pending JPH1055314A (ja) | 1996-08-12 | 1996-08-12 | キャッシュメモリ制御装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH1055314A (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100358155B1 (ko) * | 1999-12-24 | 2002-10-25 | 한국전자통신연구원 | 인터럽트 제어 장치 및 그 제어 방법과 그를 이용한 캐쉬제어기 |
| JP2008140258A (ja) * | 2006-12-04 | 2008-06-19 | Renesas Technology Corp | バス制御装置 |
| JP5136652B2 (ja) * | 2008-11-10 | 2013-02-06 | 富士通株式会社 | 情報処理装置及びメモリ制御装置 |
-
1996
- 1996-08-12 JP JP8212369A patent/JPH1055314A/ja active Pending
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100358155B1 (ko) * | 1999-12-24 | 2002-10-25 | 한국전자통신연구원 | 인터럽트 제어 장치 및 그 제어 방법과 그를 이용한 캐쉬제어기 |
| JP2008140258A (ja) * | 2006-12-04 | 2008-06-19 | Renesas Technology Corp | バス制御装置 |
| JP5136652B2 (ja) * | 2008-11-10 | 2013-02-06 | 富士通株式会社 | 情報処理装置及びメモリ制御装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR100318789B1 (ko) | 멀티프로세서 데이타 처리 시스템에서의 캐쉬를 관리하는시스템과 방법 | |
| JP4316016B2 (ja) | 複数のシステムバスを有するコンピュータシステムにおいてメモリコヒーレンスを維持するためのシステムおよび方法 | |
| US7827354B2 (en) | Victim cache using direct intervention | |
| US7032074B2 (en) | Method and mechanism to use a cache to translate from a virtual bus to a physical bus | |
| US6631447B1 (en) | Multiprocessor system having controller for controlling the number of processors for which cache coherency must be guaranteed | |
| US6021468A (en) | Cache coherency protocol with efficient write-through aliasing | |
| US5155824A (en) | System for transferring selected data words between main memory and cache with multiple data words and multiple dirty bits for each address | |
| JP3269967B2 (ja) | キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム | |
| US6345342B1 (en) | Cache coherency protocol employing a read operation including a programmable flag to indicate deallocation of an intervened cache line | |
| US5740400A (en) | Reducing cache snooping overhead in a multilevel cache system with multiple bus masters and a shared level two cache by using an inclusion field | |
| US6651115B2 (en) | DMA controller and coherency-tracking unit for efficient data transfers between coherent and non-coherent memory spaces | |
| US6272602B1 (en) | Multiprocessing system employing pending tags to maintain cache coherence | |
| JP3281893B2 (ja) | キャッシュ・メモリ階層内で利用するキャッシュ・コヒーレンシ機構を実施するための方法およびシステム | |
| US7305523B2 (en) | Cache memory direct intervention | |
| JPH08185359A (ja) | メモリサブシステム | |
| JPH07253928A (ja) | 2重化キャッシュ・スヌープ機構 | |
| US6321306B1 (en) | High performance multiprocessor system with modified-unsolicited cache state | |
| JPH04233048A (ja) | 多重レベルキャッシュの制御方法及び装置 | |
| JP2000010860A (ja) | キャッシュメモリ制御回路及びプロセッサ及びプロセッサシステム及び並列プロセッサシステム | |
| US7024520B2 (en) | System and method enabling efficient cache line reuse in a computer system | |
| JP3068469B2 (ja) | 2次レベルキャッシュメモリシステム | |
| JP3732397B2 (ja) | キャッシュシステム | |
| US7234028B2 (en) | Power/performance optimized cache using memory write prevention through write snarfing | |
| JP3202943B2 (ja) | 処理装置及びルックアサイド・キャッシュをスヌープする改善された装置及び方法 | |
| JP3626609B2 (ja) | マルチプロセッサシステム |