JP3269967B2 - キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム - Google Patents

キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム

Info

Publication number
JP3269967B2
JP3269967B2 JP10282796A JP10282796A JP3269967B2 JP 3269967 B2 JP3269967 B2 JP 3269967B2 JP 10282796 A JP10282796 A JP 10282796A JP 10282796 A JP10282796 A JP 10282796A JP 3269967 B2 JP3269967 B2 JP 3269967B2
Authority
JP
Japan
Prior art keywords
cache
address
request
attribute information
data
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.)
Expired - Fee Related
Application number
JP10282796A
Other languages
English (en)
Other versions
JPH09293060A (ja
Inventor
正文 柴田
敦 中島
至誠 藤原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP10282796A priority Critical patent/JP3269967B2/ja
Priority to US08/839,072 priority patent/US5987571A/en
Publication of JPH09293060A publication Critical patent/JPH09293060A/ja
Application granted granted Critical
Publication of JP3269967B2 publication Critical patent/JP3269967B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、キャッシュコヒー
レンシ制御方法、および、これを用いたマルチプロセッ
サシステムに関するものである。
【0002】
【従来の技術】近年、コンピュータシステムのデータ処
理スループットを向上させるため、マルチプロセッサシ
ステムの構築が一般化している。マルチプロセッサシス
テムでは、各プロセッサが個別にキャッシュシステムを
所有するのが普通である。複数のキャッシュシステムが
具備されれば、当然、これらの間で同一データのコピー
が複数存在することになり、複数プロセッサ間でのキャ
ッシュデータの一貫性(コヒーレンシ)を保つ必要性が
生じてくる。複数のキャッシュシステムと、これらに接
続されたメインメモリとの間では、記憶管理の対象とな
る情報の最小単位が一ブロックとして取り扱われ、この
ブロック単位でデータの送受が行われる。そして、キャ
ッシュコヒーレンシの維持は、あるプロセッサが自キャ
ッシュへの書き込み動作を行う際に、他のキャッシュが
保持する同一キャッシュブロックを無効化(インバリデ
ート)するか、あるいは、この同一キャッシュブロック
を、自キャッシュへ書き込んだ最新データに更新するこ
とで実現される。
【0003】複数プロセッサ間でのキャッシュデータの
コヒーレンシを保つためのプロトコルは、一般にはキャ
ッシュコヒーレンシプロトコルと呼ばれている。これに
は、主に次の2つの方式がある。第1は、ディレクトリ
方式と呼ばれる方式で、メインメモリの各ブロックに関
する情報をシステムの1カ所で管理する方式である。こ
の方式では、メインメモリ上の全てのブロックの状態を
記述する論理的に単一のディレクトリを具備し、このデ
ィレクトリに、各ブロックのコピーがどのキャッシュ上
にあり、それらがどの様な状態にあるのかを記録してお
く。このディレクトリは物理的にはメインメモリ上で分
散されて実現されることが多いが、論理的には単一管理
される。キャッシュシステムは、あるブロックへの書き
込みを実行する際に、先ずこの管理表を参照することで
このブロックが他のどのキャッシュシステムへコピーさ
れているのかを知り、該当ブロックを持つキャッシュシ
ステムに書き込み動作を通知する。書き込み動作を通知
されたキャッシュシステムは、キャッシュコヒーレンシ
が維持されるよう動作する。
【0004】しかしながら、このディレクトリ方式にお
いては、キャッシュアクセスの前に必ずディレクトリ参
照が行われる。このため、処理要求を発行してから処理
が終了するまでの時間(レーテンシ)が増加するという
欠点がある。
【0005】第2の方式は、スヌープ方式と呼ばれる方
式である。この方式では、全てのキャッシュが、自身が
所有しているブロックに関する情報を保持し、かつ、各
キャッシュシステムとメインメモリを結合している共有
バスを常に監視する。スヌープ方式において、書き込み
動作を行うキャッシュシステムは、書き込み動作をする
旨を共通バスに送出する。他のキャッシュシステムは、
共通バスよりこの書き込み動作情報を検出し、続いて、
該当ブロックを自身が所有しているか否かを判定する。
所有している場合、このキャッシュシステムは、キャッ
シュコヒーレンシを維持するための制御を行う。スヌー
プ方式は、全てのキャッシュシステムが共通バスで結合
されている必要があるため、大規模なマルチプロセッサ
システムには向かないが、コピー所持の判定が個々のキ
ャッシュシステムで並列に実行されるためディレクトリ
方式に比べてレーテンシが短いという利点があり、従来
より多数のマルチプロセッサシステムで採用されてい
る。
【0006】スヌープ方式のコヒーレンシプロトコル
は、書き込み時の動作によりライトインバリデートとラ
イトマルチキャストの2種に分類され、更にこれらの変
形を含めて数多くの方式が提案されている。ヘネシー&
パターソン著「コンピュータ・アーキテクチャ」の8章
では数多くのマルチプロセッサシステムにおけるキャッ
シュコヒーレンシプロトコルが記載されている。この文
献で参照されている論文の多くは、IEEE Comp
uter Society Press発行の「The
Cache Coherence Problem
In Shared−Memory Multipro
cessors:Hardware Solution
s」に収録されている。最近のマイクロプロセッサで実
用化されているキャッシュコヒーレンシプロトコルとし
ては、インテル社Pentiumマイクロプロセッサに
おけるプロトコルがある。これについては、「Pent
iumプロセッサ アーキテクチャとプログラミング」
インテルジャパン株式会社発行の第18章に記載されて
いる。Pentiumマイクロプロセッサでは、キャッ
シュブロックの状態として、変更済み(Modifie
d)、排他的(Exclusive)、共有(Shar
ed)、無効(Invalid)の4状態(いわゆるM
ESIアルゴリズム)で管理している。
【0007】MESIアルゴリズムによるマルチプロセ
ッサのキャッシュコヒーレンシプロトコルには、IBM
社のPowerPCマイクロプロセッサで採用されてい
るものもある。この方式の詳細は、「POWER AN
D PowerPC」Morgan Kaufmann
Publishers,Inc.刊の第9章に記載さ
れている。図2に、本プロトコルによるキャッシュコヒ
ーレンシ制御動作を示す。
【0008】図2において、「Invalid」は、該
当キャッシュブロックに有効なデータが入っていないこ
とを示している。「Shared」は、該当キャッシュ
ブロックにメインメモリと同じデータ(クリーンなデー
タ)が入ってはいるが、このデータのコピーが他のキャ
ッシュに存在することを示している。すなわち、該当キ
ャッシュブロックのクリーンなデータを他のキャッシュ
と共有(又は共有可能)していることを示している。
「Exclusive」は、該当キャッシュブロックに
メインメモリと同じデータ(クリーンなデータ)が入っ
ており、かつ、このデータのコピーが他のキャッシュに
存在しないことを示している。「Modified」
は、該当キャッシュブロックにメインメモリとは異なる
可能性があるデータが格納されており、このデータのコ
ピーが他のキャッシュに存在しないことを示している。
キャッシュブロックにデータが書き込まれた場合、この
書き込み済みデータは、メインメモリとは異なる可能性
があるダーティなデータとなる。このように、「Sha
red」、「Exclusive」、「Modifie
d」では、「Invalid」と異なり、該当キャッシ
ュブロック内に参照すべき有効なデータが入っている。
【0009】そして、プロセッサからキャッシュシステ
ムに向けて読み出しリクエストが発行されると、これを
受けたキャシュシステムでは、先ずキャッシュタグメモ
リが参照され、該当ブロックの状態が判定される。該当
ブロックの状態が「Modified」、「Exclu
sive」、「Shared」ならばキャッシュヒット
であると判断され、この場合は、キャッシュメモリの内
容が読み出されプロセッサに送られる。なお、キャッシ
ュブロックの状態は以前のままとする。一方、該当ブロ
ックの状態が「Invalid」の場合は、キャッシュ
ミスと判定され、共通バスに読み出し要求トランザクシ
ョンが発行される。他キャッシュシステムは、共通バス
よりこの読み出し要求トランザクションをスヌープして
自身のキャッシュ状態をチェックし、該当ブロックが
「Modified」、「Exclusive」、「S
hared」ならば、「Shared」に変更する。こ
の際、該当ブロックが「Modified」の場合は、
このModifiedデータを最新データとしてメイン
メモリに書き戻す。これより、該当ブロックのデータと
メインメモリのデータが一致する。メインメモリに書き
戻されたデータは、共通バスに読み出されて要求元キャ
ッシュシステムに転送される。要求元キャッシュシステ
ムは受け取ったデータをプロセッサに送ると共に、この
データを「Shared」で記憶する。なお、データ読
み出し時のレーテンシを改善するため、Modifie
dデータをメインメモリに書き込むのと同時に、要求発
行元キャッシュシステムに直接転送する事もある。
【0010】プロセッサからキャッシュシステムに向け
て書き込みリクエストが発行された場合も、前述と同
様、これを受けたキャシュシステムでは、先ずキャッシ
ュタグメモリが参照され、該当ブロックの状態が判定さ
れる。該当ブロックの状態が「Modified」と
「Exclusive」の場合は、キャッシュヒットと
して、このキャッシュブロックへのデータの書き込みを
行い、ブロック状態を「Modified」に変更す
る。「Shared」又は「Invalid」の場合
は、キャッシュミスと判定し、共通バスに書き込み要求
トランザクションを発行する。他キャッシュシステム
は、書き込み要求トランザクションをスヌープして自身
のキャッシュ状態をチェックし、該当ブロックが「Mo
dified」、「Exclusive」、「Shar
ed」ならば「Invalid」に変更する。この際、
該当ブロックが「Modified」の場合は、このM
odifiedデータをメインメモリに書き戻す。メイ
ンメモリに書き戻されたデータは、共通バスに読み出さ
れて要求元キャッシュシステムに転送される。要求元キ
ャッシュシステムは受け取ったデータと、先程の書き込
みリクエストに含まれるデータとをマージして、「Mo
dified」で格納する。
【0011】以上、MESIアルゴリズムによるキャッ
シュコヒーレンシプロトコルについて述べたが、スヌー
プ方式のキャッシュコヒーレンシプロトコルの実用化に
あたっては、第1に、共通バスのスループットという問
題が発生する。共通バスに接続されるプロセッサの性能
が向上するにつれて、また、接続プロセッサ数が増大す
るにつれて、要求されるスループットはいっそう大きく
なる。そこで、共通バスの実現スループットを向上さ
せ、その一方でプロセッサ及びキャッシュシステムから
の要求スループットを削減する事が必要となる。共通バ
スの実現スループットの向上は、高速な動作クロックを
用いることや、データ幅を拡張することで実現すること
が一般的である。また、バスで実現不可能な場合は、バ
スと同様の動作をする相互結合網を用いて実現されるこ
ともある。プロセッサやキャッシュシステムからの要求
スループットの削減は、キャッシュヒット率が向上する
よう、キャッシュシステムのキャッシュ容量を増大した
り、キャッシュ構成を改善したりして実現することが多
い。
【0012】しかしながら、これらの解決策は、何れも
多大なコストがかかるという問題がある。
【0013】スヌープ方式の実用化の第二の問題点は、
スヌープ時の状態判定に関するスループット不足であ
る。共通バスに流れる書き込み動作通知には、該当ブロ
ックのアドレスが含まれているが、受け取ったアドレス
に対応するブロックが、キャッシュ内でどの様な状態に
あるのかを判定するためには、保持中のブロックのタグ
を格納したキャッシュタグメモリを参照する必要があ
る。すなわち、キャッシュシステムは、他キャッシュシ
ステムからのアクセス要求の度にキャッシュタグメモリ
への参照処理を行うこととなる。しかしながら、キャッ
シュシステムは、この処理の一方で、プロセッサに対す
るデータ供給サービスを行う際にも、このキャッシュタ
グメモリへの参照動作を行う。両側から参照されるキャ
ッシュタグメモリ内のキャッシュブロックの状態は、論
理的に単一管理する必要があるため、通常は、キャッシ
ュタグメモリへのアクセスを排他的に行う。このアクセ
スの切替がスループット不足を発生させるのである。
【0014】このスループット不足を解消するために、
従来では、キャッシュタグの複製を備えて、共通バスか
らのアクセスは、先ずこの複製タグを参照するといった
方法が採用されることもあった。
【0015】しかしながら、キャッシュタグを格納する
ためのキャッシュタグメモリには、非常に高速なメモリ
素子を用いるのが普通であるため、これを二重化するこ
とはコストパフォーマンスに反することになる。また、
ヒット率を高めるために大容量キャッシュを採用すれ
ば、キャッシュタグの容量も大きくなる。これも前述の
二重化を妨げる要因である。
【0016】プロセッサが自キャッシュへの書き込み動
作を行う際に、他キャッシュシステムが保有する該当ブ
ロックを無効化するための無効化要求が発せられること
については既に述べたが、この無効化要求を削減する従
来技術としては、特公平6−64553号公報に記載の
「スタック制御回路」がある。ここでは、キャッシュシ
ステムが、他のプロセッサから受けた無効化要求(具体
的には、無効化すべきブロックのアドレス)を一時的に
格納する複数のスタックを備え、各スタック間の無効化
アドレスを比較し、無効化アドレスが一致する場合、そ
の一方を削除し、同一アドレスに対する多重の無効化処
理を削減する。
【0017】しかしながら、この従来技術は、スタック
に格納されている無効化要求間の重複を検出して、それ
らの間で削減を行う方式であるため、受け取り時間が近
接した無効化要求間でしか削減処理が行われない。すな
わち、短時間に同一の無効化要求が連発されないと効果
が現れないという欠点がある。スタックの容量を増加さ
せ滞在時間を延長すると重複検出効果は増加するが、こ
れでは無効化要求が遅延する。キャッシュシステムがダ
ーティデータを所持している場合、この旨を要求元に通
知する処理と、最新データの転送処理も遅延することに
なる。この遅延動作は、アクセスレーテンシに直接影響
するため、スタックで複数の無効化アドレスを長時間保
持することは、性能上重大な損失となる。
【0018】また、無効化要求を削減する他の従来技術
としては、「1994 IEEEInternatio
nal Conference On Compute
rConference on Computer D
esign:VLSIin Computer and
Processors(ICCD‘94)」論文集に
掲載された「Issues in Multi−Lev
el Cache Designs」がある。この論文
では、インバリデートヒストリテーブルと呼ばれる無効
化要求を記録するテーブルが導入されている。この論文
に記載されている技術を図12及び図13を用いて簡単
に説明する。図12には、32Kバイトの容量を持つ1
次キャッシュを備えた4台のマルチプロセッサ(マルチ
プロセッサ0〜3)と、各マルチプロセッサに接続され
た、4Mバイトの2次キャッシュが示されている。同図
に示すように、ここではキャッシュシステムが2重階層
になっている。図13には、各1次キャッシュが発行し
た無効化要求(無効化アドレス)を逐次記録するための
ヒストリテーブルの構成例が示されている。このヒスト
リテーブルは、2次キャッシュのタグメモリに装備され
ている。同図には、ヒストリテーブルのほか、与えられ
た無効化アドレスを格納するためのアドレスレジスタ、
2次キャッシュタグテーブル、2次キャッシュタグテー
ブルに格納されているアドレス(タグ)と、アドレスレ
ジスタに格納されたアドレスとを比較してヒット判定を
行う2次キャッシュヒット判定回路、及び、ヒストリテ
ーブルに関するヒット判定を行うヒストリテーブルヒッ
ト判定回路も示されている。
【0019】そして、無効化アドレスが1次キャッシュ
から発行された場合には、ヒストリテーブルが参照さ
れ、ヒットした場合は、既に無効化が済んでいるものと
して、この要求を削除する。また、あるブロックに対す
る最初の無効化要求が発行された場合、そのブロックの
アドレスについては、ヒストリテーブルに未登録なた
め、この場合は、そのアドレスをヒストリテーブルに登
録すると共に、他の全ての1次キャッシュにこのアドレ
スの無効化要求が発せられる。
【0020】このように構成すれば、最初の一回以外の
他の1次キャッシュへの無効化要求が削減され、他の1
次キャッシュは、無効化要求に対する処理が軽減される
ことになる。
【0021】しかしながら、この従来技術においては、
ヒストリテーブルによって2次キャッシュに結合する全
ての1次キャッシュの状態が集中管理されている。例え
ば、1次キャッシュからのコヒーレンシ要求が与えられ
ると、先ず2次キャッシュのヒストリテーブルが参照さ
れ、ヒットしない場合はこのコヒーレンシ要求が該当す
る1次キャッシュに転送される。つまり、この従来技術
は、1次キャッシュ側から見ればディレクトリ方式のデ
ィレクトリに相当するものを2次キャッシュに設置した
ことに他ならない。これでは、転送が2度にわたって行
われてしまい、コヒーレンシ要求時のアクセスレーテン
シが増大してしまう。
【0022】
【発明が解決しようとする課題】以上のような問題を鑑
み、本発明の目的は、キャッシュブロックの状態判定が
効率よく実行される、キャッシュコヒーレンシ制御方
法、および、これを用いたマルチプロセッサシステムを
提供することにある。
【0023】
【課題を解決するための手段】上記目的を達成するため
の本発明の一態様によれば、複数のキャッシュシステム
のそれぞれに設けられたキャッシュタグメモリにて、少
なくとも、複数キャッシュシステム間に存在する同一ア
ドレスのデータブロックの状態と該アドレスとを管理す
ると共に、前記キャッシュシステムにて前記データブロ
ックへの処理が行われた際、一部の処理については、該
キャッシュシステムから他のキャッシュシステムに、そ
の処理内容と該アドレスを送り、前記複数キャッシュシ
ステム間のデータのコヒーレンシを維持するキャッシュ
コヒーレンシ制御方法において、前記複数のキャッシュ
システムのそれぞれにヒストリーテーブルを設けると共
に、他キャッシュシステムから発行されたアドレスの一
部又は全部を前記ヒストリーテーブルに格納し、前記ア
ドレスを通知されたキャッシュシステムのヒストリーテ
ーブルに該アドレスが格納されている場合には、該キャ
ッシュシステム内において、今回の通知処理に関する前
記キャッシュタグメモリへのアクセスを抑止し、前記ア
ドレスを通知されたキャッシュシステムのヒストリーテ
ーブルに該アドレスが格納されていない場合には、該キ
ャッシュシステム内において、今回の通知に関する前記
キャッシュタグメモリへのアクセスを行うことを特徴と
するキャッシュコヒーレンシ制御方法が提供される。
【0024】以下、本発明の動作原理を説明する。
【0025】最初に、読み出し専用ブロックが複数キャ
ッシュシステムで共有されていく過程を例にとって説明
する。
【0026】ここでは先ず、第一のキャッシュシステム
がメインメモリから該当ブロックを読み出すこととす
る。この際、他のキャッシュシステムは該当ブロックを
所持していないため、このキャッシュブロックは、読み
出した第一のキャッシュシステム内において「Excl
usive」で登録される。その後、第二のプロセッサ
は、共通バスに、このブロックの読み出し要求を発行す
る。第一のプロセッサは、この読み出し要求をスヌープ
し、先程のブロックの登録状態を「Shared」に変
更する。この際、第二のプロセッサ以外の第三、第四の
プロセッサも、この読み出し要求をスヌープし、該当ブ
ロックが自身の内部に存在するか否かの判断処理を行う
こととなる。そして、第二のプロセッサは、第一のプロ
セッサからの通知を受けて、メインメモリから読み出し
たデータを「Shared」で登録する。これ以降のプ
ロセッサの読み出し処理についても、同様なことが繰り
返されていく。
【0027】そして、従来技術においては、あるプロセ
ッサから共通バスに読み出し要求が発行される度に、そ
れ以外のキャッシュシステムがこれをスヌープし、該当
ブロックが自身の内部に存在するか否かの判定を行うた
めのキャッシュタグメモリへのアクセスを実行していた
のである。
【0028】書き込みブロックを、複数プロセッサで共
有していく過程も同様に検討する。
【0029】先ず、第一のキャッシュシステムが、書き
込み要求発行時において、メインメモリから該当ブロッ
クを読み出すこととする。この際、他のキャッシュシス
テムは、このブロックを所持していないため、第一のキ
ャッシュシステム内で該ブロックが「Modifie
d」で登録される。次に、第二のプロセッサは、このブ
ロックへの書き込み要求を共通バスに発行する。第一の
プロセッサは、この書き込み要求をスヌープし、自身が
所有する最新データを第二のプロセッサに送付すると共
に、ブロックの状態を「Invalid」に変更する。
第二のプロセッサは、第一のプロセッサからの最新デー
タを受けて、これを「Modified」で登録する。
これ以降、他のプロセッサ又は第一のプロセッサが当該
ブロックに対する書き込みが発生する度に、共通バスに
書き込み要求が発行され、「Modified」状態の
ブロックを備えるキャッシュシステムから最新データを
受け取ることとなる。
【0030】そして、従来技術においては、読み出し要
求時と同様、あるプロセッサから共通バスに書き込み要
求が発行される度に、それ以外のキャッシュシステム
は、これをスヌープし、キャッシュタグメモリへのアク
セスを実行していたのである。
【0031】しかしながら、例えば図2に示したような
プロトコルを使用した場合、各キャッシュシステムは、
他キャッシュシステムから発行される読み出し要求や書
き込み要求に対して必ずしも、毎回状態判定を行う必要
はない。
【0032】例えば、該当ブロックを一度「Share
d」として登録したキャッシュシステムは、その後の他
のキャッシュシステムの読みだし要求時において、その
状態を変更する必要がない。また、「Invalid」
の場合も同様であり、毎回の要求に対して「Inval
id」の設定処理を行う必要はない。
【0033】また、あるプロセッサで書き込み処理が行
われても、要求元である該プロセッサと最新データを供
給するプロセッサ以外のプロセッサは、該当キャッシュ
ブロックの状態が「Invalid」であることを一回
判断すれば、それ以降、このキャッシュブロックの状態
を毎回検査する必要はない。
【0034】本発明は、このようなことに着目して為さ
れたもので、他キャッシュシステムから発行されたアド
レスをヒストリーテーブルに格納し、次回の同一アドレ
スの要求を削減していこうとするものである。
【0035】
【発明の実施の形態】以下、本発明が適用されたマルチ
プロセッサシステムの実施形態について、図面を参照し
ながら説明する。
【0036】図1は、第1の実施形態のマルチプロセッ
サシステムのブロック図である。このマルチプロセッサ
システムは、3つのプロセッサ(プロセッサ10、プロ
セッサ11、プロセッサ12)と、3つのキャッシュシ
ステム(キャッシュシステム20、21、22)と、2
つのメインメモリ(メインメモリ40、41)と、これ
ら2つのメインメモリと前述の3つのキャッシュシステ
ムに接続された共通バス30を備える。プロセッサ数、
キャッシュシステム数、メインメモリ数については、構
築するマルチプロセッサシステムに合わせて変更すれば
よい。
【0037】キャッシュシステム20は、プロセッサ1
0とのインターフェースとなるプロセッサインターフェ
ース201と、共通バス30とのインターフェースとな
るメモリバスインターフェース207と、本実施形態の
特徴部分であるコヒーレンシトランザクションヒストリ
制御回路(CTH制御回路)208と、プロセッサイン
ターフェース201やCTH制御回路208から送られ
たアドレスがセットされるアドレスレジスタ202と、
キャッシュデータが格納されるキャッシュデータメモリ
205と、キャッシュデータメモリ205に格納されて
いるキャッシュデータのアドレスが格納されるキャッシ
ュタグメモリ203と、キャッシュデータメモリ205
に格納されるデータやキャッシュデータメモリ205か
ら読み出されたデータが一旦格納されるデータバッファ
206と、キャッシュシステム20内の各部の制御を行
うキャッシュ制御回路204とを備える。キャッシュタ
グメモリ203は、メインメモリ40、41よりも高速
なメモリ素子を用いて実現されている。例えば、メイン
メモリ40、41には、DRAM(Dynamic Random-Acc
ess Memory)が、キャッシュタグメモリ203には、S
RAM(Static Random-Access Memory)が用いられ
る。キャッシュデータメモリ205は、1セット中に2
つのブロックが存在する、いわゆる2ウェイセットのア
ソシアティブ構造となっている。このセットは、複数存
在する。各セットのブロックは、記憶管理の対象となる
情報の最小単位であり、キャッシュシステム間や、キャ
ッシュシステム−メインメモリ間をはじめ、接続機器間
でのデータの送受は、このブロック単位で行われる。キ
ャッシュタグメモリ203についても、キャッシュデー
タメモリ205に対応して2ウェイ構造となっている。
各ブロックには固有のアドレス(タグ)が予め付されて
おり、このタグがキャッシュタグメモリ203に格納さ
れる。以上説明したキャッシュタグメモリ203やキャ
ッシュデータメモリ205の構造については既によく知
られているので詳細な説明は省くこととする。
【0038】キャッシュシステム21についても、キャ
ッシュシステム20と同様に構成されている。すなわ
ち、プロセッサインターフェース211と、メモリバス
インターフェース217と、コヒーレンシトランザクシ
ョンヒストリ制御回路(CTH制御回路)218と、ア
ドレスレジスタ212と、キャッシュデータメモリ21
5と、キャッシュタグメモリ213と、データバッファ
216と、キャッシュ制御回路214がキャッシュシス
テム21内に設けられている。キャッシュシステム22
の構成については図示省略しているが、これと同様なも
のである。
【0039】以上説明したマルチプロセッサシステムに
おいて、プロセッサ10より読み出しリクエストが発行
されると、キャッシュシステム20は、このリクエスト
をプロセッサインターフェース201で受け取る。続い
て、キャッシュシステム20は、読み出しリクエストに
含まれるアドレス(リクエストアドレス)をアドレスレ
ジスタ202に設定し、キャッシュタグメモリ203と
キャッシュデータメモリ205をアクセスする。キャッ
シュタグメモリ203の内容は、キャッシュ制御回路2
04に伝えられ、キャッシュヒット判定が行われる。こ
こでは、リクエストアドレスに対応するタグがキャッシ
ュタグメモリ203に存在するか否かが判定され、さら
に、目的のタグが存在した場合には、そのタグに対応付
けられたブロックがどのような状態であるのかが判定さ
れる。ブロックの状態判定については、後で詳述するこ
ととする。キャッシュヒットの場合は、該当するタグの
ブロックのキャッシュデータがキャッシュデータメモリ
205から読み出され、データバッファ206にセット
される。このデータは、プロセッサインターフェース2
01を介してプロセッサ10に返却される。
【0040】一方、キャッシュミスの場合は、メモリバ
スインターフェース207にこの旨を通知し、メモリバ
スインターフェース207から共通バス30に向けて読
み出し要求トランザクションを発行する。読み出し要求
トランザクションは、共通バス30を流れ、その他のキ
ャッシュシステムやメインメモリ40、41に到達す
る。その後、メインメモリもしくは他キャッシュシステ
ムより最新のデータが共通バス30に返却される。メモ
リバスインターフェース207は、この最新データを受
け取り、データバッファ206に転送する。このデータ
は、プロセッサインターフェース201を通じてプロセ
ッサ10に返却され、さらに、これと同じデータが、キ
ャッシュデータメモリ205に書き込まれる。
【0041】また、プロセッサ10より書き込みリクエ
ストが発行されると、読み出し時と同様に、キャッシュ
タグメモリ203が参照されヒット判定が行われる。キ
ャッシュヒットの場合、プロセッサ10から送られた書
き込みデータは、データバッファ206を経由してキャ
ッシュデータメモリ205に書き込まれる。
【0042】一方、キャッシュミスの場合は、メモリバ
スインターフェース207から共通バス30に書き込み
要求トランザクションが発行される。メモリバスインタ
ーフェース207は、その後、メインメモリもしくは他
キャッシュシステムより最新のデータを受け取り、これ
をデータバッファ206に転送する。データバッファ2
06では、この最新データと、プロセッサインターフェ
ース201を通じて取得した、プロセッサからの書き込
みデータとがマージされ、マージされたデータがキャッ
シュデータメモリ205に書き込まれる。データの送受
がブロック単位で行われることについては既に述べた通
りであるが、これにより、プロセッサからの書き込みデ
ータと、他キャッシュシステム等から受け取った最新デ
ータとは通常、キャッシュデータメモリ205の該当ブ
ロック内で混在することとなる。なお、キャッシュ中の
ブロックは、メモリフル等で置き換えの対象となった場
合に、その内容がメインメモリに書き込まれることとな
る。このように所定の条件下でのみデータがメインメモ
リに書き込まれ、それ以外は、キャッシュのブロックに
対してデータの書き込みが行われる方式は、一般にライ
ト・バック方式と呼ばれる。もちろん、本発明は、この
方式に限定されない。
【0043】本マルチプロセッサシステムで行われるキ
ャッシュコヒーレンシ制御は、図2に示すプロトコルに
よるものとする。このプロトコルは、従来技術で説明し
た通りであり、キャッシュ内の各ブロックを、変更済み
(Modified)、排他的(Exclusiv
e)、共有(Shared)、無効(Invalid)
の4状態(いわゆるMESIアルゴリズム)で管理して
いる。図2において、「Invalid」は、該当キャ
ッシュブロックに有効なデータが入っていないことを示
している。「Shared」は、該当キャッシュブロッ
クにメインメモリと同じデータ(クリーンなデータ)が
入ってはいるが、このデータのコピーが他のキャッシュ
に存在することを示している。すなわち、該当キャッシ
ュブロックのクリーンなデータを他のキャッシュと共有
していることを示している。「Exclusive」
は、該当キャッシュブロックにメインメモリと同じデー
タ(クリーンなデータ)が入っており、かつ、このデー
タのコピーが他のキャッシュに存在しないことを示して
いる。「Modified」は、該当キャッシュブロッ
クにメインメモリとは異なる可能性があるデータが格納
されており、このデータのコピーが他のキャッシュに存
在しないことを示している。該当キャッシュブロックに
データが書き込まれるた場合、この書き込み済みデータ
は、メインメモリとは異なる可能性があるダーティなデ
ータとなる。このように、「Shared」、「Exc
lusive」、「Modified」では、「Inv
alid」と異なり、該当キャッシュブロック内に参照
すべき有効なデータが入っている。なお、これらのブロ
ック状態は、キャッシュタグメモリ203に格納され
る。
【0044】以下、このキャッシュコヒーレンシ制御を
踏まえて、先程説明した読み出しリクエスト及び書き込
みリクエストの流れをさらに説明する。
【0045】プロセッサ10から読み出しリクエストが
発行されると、このリクエストアドレスは、アドレスレ
ジスタ202に設定され、キャッシュ制御回路204に
よる前述の判定処理が行われる。これについては既に記
述した通りであるが、この判定処理では、リクエストア
ドレスが指し示すブロックの状態が、「Modifie
d」、「Exclusive」、「Shared」なら
ば、キャッシュヒットであると判定される。この場合、
キャッシュデータメモリ205の該当ブロックの内容を
読み出して、これをプロセッサ10に返却する。ブロッ
ク状態は、そのままとする。一方、「Invalid」
の場合は、キャッシュミスと判定し、メモリバスインタ
ーフェース207より共通バス30に読み出し要求トラ
ンザクションを発行する。他のキャッシュシステム21
及び22は、共通バス30に流れる当該トランザクショ
ンをスヌープし、自身のキャッシュ状態をチェックす
る。キャッシュシステム21及び22では、同様なチェ
ック処理が行われるため、ここではキャッシュシステム
21を例にとって説明する。キャッシュシステム21
は、メモリバスインターフェース217より取り込んだ
読み出し要求トランザクションを、CTH制御回路21
8に送出する。CTH制御回路218の動作については
後で詳述するが、ここではCTH制御回路218で読み
出し要求トランザクションがヒットせず、そのまま通過
してアドレスレジスタ212に転送されることとする。
具体的には、この転送によって、読み出し要求トランザ
クションに含まれている読み出しアドレスがアドレスレ
ジスタ212にセットされる。キャッシュ制御回路21
4は、アドレスレジスタ212にセットされたアドレス
に対応するタグが、キャッシュタグメモリ213に存在
するか否かを判定し、さらに、そのタグが示すブロック
の状態を判定する。ブロックの状態が「Modifie
d」、「Exclusive」、「Shared」なら
ば、これを「Shared」に変更する。ブロックの状
態が「Exclusive」、「Shared」の場
合、キャッシュシステム20が必要とする最新データ
は、メインメモリ40あるいはメインメモリ41にも存
在することになる。したがって、この場合は、メインメ
モリ40又は41に格納されている最新データが共通バ
ス30に読み出され、キャッシュシステム20に転送さ
れる。また、ブロックの状態が「Modified」の
場合、このブロック内のデータが最新のデータである。
したがって、この場合は、キャッシュデータメモリ21
5から、このブロックのデータをデータバッファ216
に読み出し、これを、メモリバスインターフェース21
7を介して共通バス30に送出する。これによりキャッ
シュシステム21が保有している最新データが、要求元
のキャッシュシステム20に転送される。また、メイン
メモリ40、41も、共通バス30を介してこの最新デ
ータを受取り、受け取った最新データを該当ブロックに
書き込む。発行元キャッシュシステム20は、共通バス
30を流れる最新データをメモリバスインターフェース
207経由で受け取る。その後、発行元システムキャッ
シュ20は、受け取った最新データをプロセッサ10に
返却すると共に、これと同じデータをキャッシュデータ
メモリ205に格納する。格納時のブロックの状態は、
他キャッシュシステム21のブロック状態によらず、
「Shared」とする。
【0046】また、プロセッサ10から書き込みリクエ
ストが発行された場合も、先程と同様、キャッシュタグ
メモリ203が参照され、キャッシュ制御回路204で
判定処理が行われる。この結果、該当ブロックの状態が
「Modified」又は「Exclusive」の場
合は、キャッシュヒットとして、このブロックに書き込
みを行う。「Exclusive」の場合、さらに、ブ
ロック状態を「Modified」に設定する。「Sh
ared」又は「Invalid」の場合は、キャッシ
ュミスと判定し、メモリバスインターフェース207よ
り共通バス30に書き込み要求トランザクションを発行
する。
【0047】読み出し要求時と同様に、他のキャッシュ
システム21及び22は、共通バス30に流れる当該ト
ランザクションをスヌープして、自身のキャッシュ状態
をチェックする。キャッシュシステム21及び22で
は、同様なチェック処理が行われるため、ここでもキャ
ッシュシステム21を例にとって説明する。キャッシュ
システム21は、メモリバスインターフェース217よ
り取り込んだ書き込み要求トランザクションを、CTH
制御回路218に送出する。CTH制御回路218の動
作は後述するが、ここではCTH制御回路218で書き
込み要求トランザクションがヒットせず、そのまま通過
してアドレスレジスタ212に転送されることとする。
具体的には、この転送によって、書き込み要求トランザ
クションに含まれている書き込みアドレスがアドレスレ
ジスタ212にセットされる。キャッシュ制御回路21
4は、アドレスレジスタ212にセットされたアドレス
に対応するタグが、キャッシュタグメモリ213に存在
するか否かを判定し、さらに、そのタグが示すブロック
の状態を判定する。ブロックの状態が「Modifie
d」、「Exclusive」、「Shared」なら
ば、これを「Invalid」に変更する。ブロックの
状態が「Exclusive」、「Shared」の場
合、キャッシュシステム20が必要とする最新データ
は、メインメモリ40あるいはメインメモリ41にも存
在することになる。したがって、この場合は、メインメ
モリ40又は41に格納されている最新データが共通バ
ス30に読み出され、キャッシュシステム20に転送さ
れる。また、ブロックの状態が「Modified」の
場合、このブロック内のデータが最新データである。し
たがって、この場合は、キャッシュデータメモリ215
から、このブロックのデータをデータバッファ216に
読み出し、これを、メモリバスインターフェース217
を介して共通バス30に送出する。これによりキャッシ
ュシステム21が保有している最新データが、要求元の
キャッシュシステム20に転送される。また、メインメ
モリ40、41も、共通バス30を介してこの最新デー
タを受け取り、これを該当ブロックに書き込む。発行元
キャッシュ20は、メモリバスインターフェース207
経由で最新データを受取り、データバッファ206に格
納する。この最新データは、更に、プロセッサ10から
送られた書き込みデータとマージされ、キャッシュデー
タメモリ205の該当ブロックに書き込まれる。ブロッ
クの状態は、他キャッシュシステム21のブロック状態
によらず、「Modified」とする。
【0048】つぎに、本実施形態の特徴部分であるコヒ
ーレンシトランザクションヒストリ制御回路(CTH制
御回路)208について説明する。CTH制御回路20
8は、コヒーレンシ制御を行うために用意された、メモ
リバスインターフェース207とアドレスレジスタ20
2と間の転送路に割り込む形で設置されている。CTH
制御回路208は、コヒーレンシトランザクションヒス
トリテーブル(CTHT)20Aと、CTH制御回路2
0Bと、ANDゲート20Cと、アドレスレジスタ20
9を有して構成されている。CTH制御回路208の詳
細は、図4に示されている。なお、図4の括弧内には、
キャッシュシステム21内のCTH制御回路218の構
成要素の番号を記載した。CTH制御回路20Bは、比
較器801と、CTHヒット判定回路802とを備え
る。ヒストリテーブル20Aを構成するにあたっては、
キャッシュデータメモリに従来より採用されている方式
をそのまま適用することができる。すなわち、各ブロッ
クのキャッシュ上での位置が一意に決められているダイ
レクト・マップ方式、ブロックをキャッシュ上の任意の
位置に置くことができるフル・アソシアティブ方式、及
び、ブロックをキャッシュ上のある決められた範囲の中
だけ置くことができるセット・アソシアティブ方式の何
れを採用しても構わない。本実施例では、説明を簡単に
するためダイレクト・マップ方式を採用した。
【0049】本実施形態のCTH制御回路208は、3
2ビット幅のアドレス(4GB(ギガバイト)空間を表
現可能なアドレス)を取り扱うことが可能であり、外部
から供給された32ビットアドレスは、アドレスレジス
タ209にセットされる。CTHT20Aは、1サイズ
が18ビットの格納領域(エントリ)を2K個持つテー
ブルであり、これらの格納領域には0〜2047までの
エントリ番号が付されている。各エントリに用意された
18ビットの内訳は、アドレスレジスタ209にセット
されたアドレスの上位16ビットを保持するための16
ビットと、該アドレスが指すブロックの状態を表すステ
ータスビット2ビットとなっている。0〜2047の各
エントリ番号は、アドレスレジスタ209にアドレスが
セットされた際に、セットされたアドレスのビット16
からビット26までの11ビットと比較される。ステー
タスビットは、「miss」、「S−Hit」、「I−
Hit」の何れかに設定される。「miss」は、アド
レスレジスタ209にセットされたアドレスがCTHT
20Aに登録されていない場合に設定される。「S−H
it」は、アドレスレジスタ209にセットされたアド
レスがCTHT20Aに登録されており、かつ、キャッ
シュタグメモリ203において該当ブロックの状態が
「Shared」もしくは「Invalid」になって
いる場合に設定される。「I−Hit」は、アドレスレ
ジスタ209にセットされたアドレスがCTHT20A
に登録されており、かつ、キャッシュタグメモリ203
において該当ブロックの状態が「Invalid」とな
っている場合に設定される。
【0050】そして、CTH制御回路208は、メモリ
バスインターフェース207より書き込み要求トランザ
クション又は読み出し要求トランザクションを受け取る
と、このトランザクションに含まれているアドレスをア
ドレスレジスタ209にセットする。セットされたアド
レスのうちのビット16からビット26までの11ビッ
トは、CTHT20Aの各エントリ番号と比較され、一
致したエントリ番号のエントリに格納されている16ビ
ットデータ(18ビットデータのうちのステータスビッ
ト2ビットを除くデータ)が比較器801に出力され
る。比較器803に出力された16ビットデータは、比
較器801で、アドレスレジスタ209にセットされて
いるアドレスの上位16ビットと比較され、その結果が
アドレスヒット信号803としてCTHヒット判定回路
802に出力される。CTHヒット判定論理802は、
アドレスヒット信号803と、CTHT20Aのステー
タスビット状態を表すステータスビット信号804の2
つの信号を受け、これらをもとに所定の判定処理を行
う。判定処理の結果は、CTH状態信号806及び転送
抑止信号805として出力される。CTH状態信号80
6は、メモリバスインターフェース207に出力され、
転送抑止信号805は、ANDゲート20Cに出力され
る。これを受けたANDゲート20Cは、アドレスレジ
スタ209にセットされているアドレスをアドレスレジ
スタ202にそのまま出力するか、又は、この出力を取
り止める。
【0051】図5は、CTHヒット判定回路802の動
作表である。図3は、CTHヒット判定回路802の動
作を含めたCTH制御回路20Bの動作表である。
【0052】図5に示すように、アドレスヒット信号8
03は、「hit」と「miss」の何れかを表すもの
で、これらは設定電圧で区別される。以下、信号が表す
各種状態は、設定電圧で区別するものとする。「hi
t」は、CTHT20Aにて選択されたエントリ中に格
納されている16ビットデータと、アドレスレジスタ2
09にセットされているアドレスの上位16ビットとが
一致している場合に設定される。「miss」は、これ
らが一致していない場合に設定される。転送抑止信号8
05は、アドレスヒット信号803とステータスビット
信号804をもとに、「0」、「1」の何れかの状態に
設定される。「0」を示す転送抑止信号805を受けた
ANDゲート20Cは、アドレスレジスタ209にセッ
トされているアドレスをアドレスレジスタ202にその
まま出力する。「1」を示す転送抑止信号805を受け
たANDゲート20Cは、アドレスレジスタ209にセ
ットされているアドレスの出力を取り止める。CTH状
態信号806は、ステータスビットと基本的には同じ状
態に設定されるが、ステータスビットが無効(「−」)
の場合は、「Miss」に設定される。
【0053】以下、図5及び図3を参照しつつ、各キャ
ッシュシステムの動作を説明する。ここでは、他キャッ
シュシステムをキャッシュシステム20とし、自キャッ
シュシステムをキャッシュシステム21として話しを進
める。
【0054】自キャッシュシステム21のCTH制御回
路218は、メモリバスインターフェース217を介し
て他キャッシュシステム20からの読み出し要求を受け
取ると、この読み出し要求の示すアドレスに応じて動作
し、その結果を、CTH状態信号816及び転送抑止信
号815として出力する。具体的には、アドレスがCT
HT21Aに登録されていない場合、または、アドレス
がCTHT21Aに登録されていてもステータスビット
が無効の場合に、「Miss」を表すCTH状態信号8
16と「0」を表す転送抑止信号815を出力する。こ
の転送抑止信号815により、読み出し要求アドレス
は、そのまま、アドレスレジスタ212に転送される。
なお、この転送処理と同時に、アドレスレジスタ212
に送られるアドレスの値を、CTHT21Aに「S−H
it」として登録する。アドレスレジスタ212にアド
レスが送られると、その後は、図2で説明したキャッシ
ュタグメモリ213へのアクセスが行われる。一方、読
み出し要求のアドレスが、「S−Hit」または「I−
Hit」としてヒットすると、ANDゲート21Cによ
るアドレスの転送が抑止される。「S−Hit」または
「I−Hit」は、前述したように、キャッシュタグメ
モリ213において該当ブロックが「Shared」又
は「Invalid」となっている場合に設定される
が、該当ブロックが「Shared」又は「Inval
id」の何れかの状態にあれば、図2で説明したよう
に、キャッシュシステム20が必要とするデータは、メ
インメモリから供給され、また、キャッシュタグメモリ
213の該当ブロックの状態も変更されない。すなわ
ち、他キャッシュからの読み出し要求時に「S−Hi
t」又は「I−Hit」となった場合には、読み出しア
ドレスは、キャッシュタグメモリ側で特に必要とされて
いないのである。したがって、この場合のアドレス転送
を抑止すれば、キャッシュタグメモリ側での処理が省か
れ、負荷が軽減されることとなる。なお、キャッシュタ
グメモリ側を作動させない分、キャッシュシステム20
への応答処理は、CTH制御回路218が行う。すなわ
ち、CTH制御回路218は、「S−Hit」の場合に
おいては、該当ブロックが「Shared」である旨を
キャッシュシステム20に通知する。また、「I−Hi
t」の場合においては、該当ブロックが「Invali
d」である旨をキャッシュシステム20に通知する。な
お、この通知処理の負荷は、キャッシュタグメモリ側全
体を動作させた場合と比較にならない程小さいものであ
る。
【0055】また、自キャッシュシステム21のCTH
制御回路218は、メモリバスインターフェース217
を介して他キャッシュシステム20からの書き込み要求
を受け取ると、この書き込み要求の示すアドレスに応じ
て動作し、その結果を、前述と同様、CTH状態信号8
16及び転送抑止信号815として出力する。具体的に
は、アドレスがCTHT21Aに登録されていない場
合、または、アドレスがCTHT21Aに登録されてい
てもステータスビットが無効の場合に、読み出し時と同
様、「Miss」を表すCTH状態信号816と「0」
を表す転送抑止信号815を出力する。この転送抑止信
号815により、読み出し要求アドレスは、そのまま、
アドレスレジスタ212に転送される。なお、この転送
処理と同時に、アドレスレジスタ212に送られるアド
レスの値を、CTHT21Aに「I−Hit」として登
録する。アドレスレジスタ212にアドレスが送られる
と、その後は、図2で説明したキャッシュタグメモリ2
13へのアクセスが行われるまた、ここでは、さらに、
「S−Hit」の場合も、このような動作が行われる。
「S−Hit」は、前述したように、キャッシュタグメ
モリ213において該当ブロックが「Shared」又
は「Invalid」となっている場合に設定される
が、該当ブロックの状態が、「Shared」の場合
は、これを「Invalid」に変更する必要がある。
したがって、書き込み要求時においては「S−Hit」
の場合でもアドレス転送を行うのである。一方、書き込
み要求のアドレスが、「I−Hit」としてヒットする
と、ANDゲート21Cによるアドレスの転送が抑止さ
れる。「I−Hit」となった場合、前述と同様、書き
込みアドレスは、キャッシュタグメモリ側で特に必要と
されていないので、アドレス転送を抑止する。なお、C
TH制御回路218は、「I−Hit」の場合において
は、該当ブロックが「Invalid」である旨をキャ
ッシュシステム20に通知する。
【0056】また、自キャッシュシステム発行の読み出
し要求時又は書き込み要求時においては、ヒットしても
ミスでもCTH制御回路218でヒット判定される。す
なわち、必要に応じてCTHT21Aの更新が行われる
だけで、キャッシュタグメモリ213へのアドレスの転
送は行われない。CTHT21Aの更新は、次のように
行う。書き込み要求で「S−Hit」又は「I−Hi
t」した場合は該当ブロックの状態を「miss」に変
更する。これによりCTHT21Aから該当ブロックが
削除される。読み出し要求で「I−Hit」した場合
は、該当ブロックの状態を「S−Hit」に変更する。
これ以外では、該当ブロックの状態は変更されない。な
お、読み出し要求時に常に「S−Hit」登録しても構
わないが、共有されていないブロックをヒストリテーブ
ルに積極的に登録すると、ヒストリテーブルのヒット確
率が低下する恐れがある。従って、他キャッシュ要求で
「I−Hit」登録したことのあるブロックのみ「S−
Hit」登録するように制御した方が都合がよい。
【0057】図6に、CTHヒット判定回路の別な動作
例を示す。この例では、コヒーレンシトランザクション
ヒストリテーブル(CTHT)に記録するブロック状態
を「Miss」と「Hit」のみにしてある。「Hi
t」は、前述の「I−Hit」に相当するものである。
ヒストリテーブルの容量が限られている場合、時間的局
所性の高いデータのみを登録した方が効率が良いが、読
み出し要求と書き込み要求では、データの共有という観
点で書き込み要求の方が局所性が高いのが一般的であ
る。従って、ここでは、書き込みトランザクションに限
ってヒストリテーブルに記録するようにした。
【0058】以上のように本実施形態によれば、キャッ
シュブロック状態の高速判定が可能となり、ひいては、
キャッシュミス時の該当ブロックのキャッシュ登録が高
速化される。また、他キャッシュシステムの要求による
キャッシュメモリへのアクセス回数が減れば、自プロセ
ッサからのアクセスを遅延させることがない。また、キ
ャッシュタグメモリには、通常、高速で高価なメモリが
使用され、要求スループットが高まるにつれてその度合
いが増大する。しかし、本実施形態のようにキャッシュ
メモリへのアクセス回数を減らし、要求スループット自
体を低減することができれば、ハードウエアコストを削
減することができる。
【0059】図7は、本発明が適用されたマルチプロセ
ッサシステムの第2の実施形態のブロック図である。図
7において、31は、相互結合網(スイッチ)、20
D、21Dは、スイッチインターフェースである。その
他の要素は図1と同一である。スイッチには、いわゆる
クロスバースイッチを用いることもできる。「従来の技
術」で指摘したように、スヌープ方式では共有バスのス
ループットが不足する可能性が大きい。バスには、全て
のプロセッサ及びキャッシュシステムとメインメモリが
接続されるため、スループットの向上のために動作周波
数を高めようとしても、信号伝搬遅延時間でその上限が
押さえられてしまう。また、データ幅を増やすと、接続
するキャッシュシステムやメインメモリのデータ幅全て
を広めることになり、コスト増を伴ってしまう。一方、
スイッチはバスよりも実装条件が緩いため、大きなスル
ープットが必要な場合に有効である。スイッチ結合でス
ヌープ方式を実現するためには、コヒーレンシ要求をコ
ヒーレンシ制御が必要なキャッシュシステム全てにマル
チキャストし、バスと同様に他のキャッシュシステムで
スヌープすればよい。図7のマルチプロセッサシステム
では、図1のシステムと同様、図2に示したコヒーレン
シプロトコルによるキャッシュコヒーレンシ制御が実現
可能である。また、コヒーレンシトランザクションヒス
トリ制御については、図3、図6、及び、後述する図9
の何れの態様も適用可能である。
【0060】図8に、図2とは異なる別のコヒーレンシ
プロトコルを示す。本プロトコルでは、図2のプロトコ
ルに対して幾つかの拡張を行っている。第1に、読み出
し要求に加えて、読み出し要求(2)を追加した。図8
での読み出し要求は図2の読み出し要求と同一である。
なお、読み出し要求の際のキャッシュミスにおいては、
前述した通り「Shared」で登録するが、「Sha
red」で登録されたブロックに対して書き込みを実行
すると再びキャッシュミスが発生してしまう。このた
め、読み込みと書き込みの両方が行われるブロックで、
データを読み込み、演算をし、この結果の書き込みを行
うと、読み出しと書き込みの2回のキャッシュミスを発
生させてしまいシステムの性能を低下させてしまう。こ
の様なブロックについては予め書き込み要求を発行して
おけばよいという考えもあるが、読み込み命令実行時
に、これ以降に同一ブロックで書き込みが発生するか、
それとも書き込みは別なブロックに対して発生するのか
をハードウエアで検出することは非常に困難である。
【0061】新たに追加した読み込み要求(2)は、従
来のイリノイアルゴリズム等で行われているように、読
み込み要求によるキャッシュミス時に、他のキャッシュ
システムの状態を見知し、他のキャッシュに当該ブロッ
クが登録されていれば「Shared」状態にし、他の
全てのキャッシュに当該ブロックが登録されていない時
は「Exclusive」で登録するように変更したも
のである。また、更に、他のキャッシュが「Modif
ied」状態でキャッシュ間データ転送が発生した際
は、転送元のキャッシュは「Invalid」にして、
登録先のキャッシュ状態を「Exclusive」で登
録するようにしたものである。読み込み要求と読み込み
要求(2)の使い分けは、ページテーブル等で、読み出
し専用指定が行われているブロックに対しては読み出し
専用要求を発行し、読み出し書き込み両方が可能なペー
ジに対しては読み出し要求(2)を用いれば良い。これ
により、読み込み、書き込みの両方が可能なブロックに
対して、適切なキャッシュ状態登録が可能になり、キャ
ッシュミスの発生を幾らか低減することが可能になる。
【0062】また、図8のコヒーレンシプロトコルで
は、更にキャッシュの掃き出し要求も加えた。キャッシ
ュの掃き出し要求は、システムに入出力プロセッサ等が
接続されている場合、入出力プロセッサと、プロセッサ
のキャッシュメモリとのコヒーレンシ維持のためソフト
ウエアに設けられるシステム制御命令である。入出力プ
ロセッサ(図示せず)は共通バスに接続されることが多
く、プロセッサとは独立にメインメモリに読み込み書き
込みを実行する。入出力プロセッサとプロセッサのキャ
ッシュメモリとのコヒーレンシ制御は、ハードウエアと
ソフトウエアの共同作業により実現されるため、マルチ
プロセッサのキャッシュシステム間のようなハードウエ
アによるコヒーレンシ制御は不要であるが、掃き出し要
求のようなシステム制御命令が装備される。掃き出し要
求は、該当ブロックがキャッシュ上に登録されている場
合、「Modified」状態ならばそのデータをメイ
ンメモリに掃き出し、状態を「Invalid」にす
る。また、「Exclusive」又は「Share
d」ならば状態を「Invalid」にする。この要求
は、キャッシュコヒーレンシを維持する全キャッシュシ
ステムに対して行われる。掃き出し要求が実行される
と、各キャッシュシステムが未登録状態となる。そし
て、この状態をヒストリテーブルで記憶しておけば、入
出力動作が完了した後、あるプロセッサがメインメモリ
から再びデータを読み出す際に、他プロセッサのキャッ
シュシステムがこの読み込み要求でキャッシュタグメモ
リに多大なスループット要求が発生することを避けるこ
とができる。
【0063】なお、図8のコヒーレンシプロトコルで
は、他キャッシュシステムの発行したトランザクション
をスヌープした際に、トランザクションタイプが読み出
し要求(2)の場合は、共通バスを介して「Share
d」状態で登録すべきか「Exclusive」状態で
登録可能かを通知する。発行元キャッシュシステムは、
他の全てのキャッシュシステムから「Exclusiv
e」登録が可能であると通知を受けたときのみ「Exc
lusive」状態で登録する。
【0064】図8のコヒーレンシプロトコルに対するC
TH制御回路208の動作を図9に示す。読み出し要求
及び書き込み要求に対するヒストリテーブルの動作は図
3と同一であるため説明を省略する。他キャッシュ発行
の読み出し要求(2)に対してはヒストリテーブル20
Aへの登録は行わない。その替わりに、自キャッシュシ
ステム発行のキャッシュ間データ転送及びリプレイスに
よるメインメモリへのデータ転送が発生した際に、この
ブロックを「I−Hit」としてヒストリテーブルへ登
録する。また、掃き出し要求をスヌープした際は、発行
元が自キャッシュでも他キャッシュでも当該ブロックを
「I−Hit」として登録する。リプレイスとは、フル
エントリされたキャッシュデータメモリに新たなキャッ
シュデータブロックを追加する際に、何れかのブロック
(例えば、最も旧いブロック)をメモリに書き戻す動作
である。
【0065】図10及び図11は、本発明が適用された
マルチプロセッサシステムの第3の実施形態のブロック
図である。なお、図11は、図10に続くもので、これ
らで一つのマルチプロセッサシステムを表している。
【0066】図10においては、図7のマルチプロセッ
サシステムと同様に相互結合網で複数のプロセッサ(キ
ャッシュシステム)とメインメモリを結合しているが、
ここでは、コヒーレンシトランザクションヒストリ制御
回路(CTH制御回路)を相互結合網側に具備してい
る。相互結合網32は、その内部にポートインターフェ
ース301〜305、スイッチキュー311〜315、
セレクタ321〜325を具備し、全ポートからの入力
信号をクロスバースイッチで出力信号に変換する。キャ
ッシュシステムへの出力を行うポートインターフェース
301〜303とセレクタ321〜323の間には、コ
ヒーレンシトランザクションヒストリ制御回路331〜
333が挿入されている。コヒーレンシトランザクショ
ンヒストリ制御回路の内部は、図4に示したものと同一
構造であり、出力ポートに接続されるキャッシュシステ
ムのキャッシュタグメモリに登録されていないブロック
アドレスや、登録されているが「Shared」で登録
されているブロックのアドレスが保持されている。この
様な構成を用いることで、相互結合網32とキャッシュ
システム20〜22間の信号スループットを低減するこ
とが可能となる。キャッシュコヒーレンシプロトコルや
コヒーレンシトランザクションヒストリ制御回路動作表
は他の実施例と同様の方式が適用可能である。
【0067】本実施形態では、キャッシュコヒーレンシ
プロトコルとして、図2及び図8のプロトコルを用いる
ことができるが、これは他のプロトコル、例えばイリノ
イプロトコルやライトワンスプロトコル等各種のプロト
コルでも適用可能である。また、ヒストリテーブルに登
録する情報も、「Invalid」や「Shared」
の他に、適用するプロトコルの状態に合わせた情報を記
録することができる。
【0068】以上、本発明の各実施形態について記述し
たが、ヒストリテーブルは、キャッシュタグより小容量
で高速なメモリを利用可能なため、キャッシュブロック
の状態判定が高速に実現できる効果もある。
【0069】
【発明の効果】以上述べたように本発明によれば、ヒス
トリテーブルで該当アドレスがヒットした場合に、キャ
ッシュタグメモリへのアクセスが抑止されるので、ブロ
ック状態の判定処理が効率よく行えるようになる。
【図面の簡単な説明】
【図1】本発明に係るマルチプロセッサシステムの第1
の実施形態のブロック図。
【図2】本発明に係るキャッシュコヒーレンシ制御の一
例を適用した場合の各キュッシュシステムの動作に関す
る図表(その1)。
【図3】本発明に係るキャッシュコヒーレンシトランザ
クションヒストリ(CTH)制御回路の動作に関する図
表(その1)。
【図4】本発明に係るキャッシュコヒーレンシトランザ
クションヒストリ(CTH)制御回路の構成図。
【図5】本発明に係るキャッシュコヒーレンシトランザ
クションヒストリ(CTH)制御回路のヒット判定論理
の一例を示す図表。
【図6】本発明に係るキャッシュコヒーレンシトランザ
クションヒストリ(CTH)制御回路の動作に関する図
表(その2)。
【図7】本発明に係るマルチプロセッサシステムの第2
の実施形態のブロック図。
【図8】本発明に係るキャッシュコヒーレンシ制御の一
例を適用した場合の各キュッシュシステムの動作に関す
る図表(その2)。
【図9】本発明に係るキャッシュコヒーレンシトランザ
クションヒストリ(CTH)制御回路の動作に関する図
表(その3)。
【図10】本発明に係るマルチプロセッサシステムの第
3の実施形態のブロック図(その1)。
【図11】本発明に係るマルチプロセッサシステムの第
3の実施形態のブロック図(その2)。
【図12】無効化要求を削減する従来の制御回路の構成
図(その1)。
【図13】無効化要求を削減する従来の制御回路の構成
図(その2)。
【符号の説明】
10、11、12:プロセッサ、 20、21、22:キャッシュメモリシステム、 30:共通バス、 31、32:相互結合網(SW)、 40、50:メインメモリ、 201、210:プロセッサインターフェース、 202、212:アドレスレジスタ、 203、213:キャッシュタグメモリ、 204、214:キャッシュ制御回路、 205、215:キャッシュデータメモリ 206、216:データバッファ、 207、217:メモリバスインターフェース、 208、218:コヒーレンシトランザクションヒスト
リ(CTH)制御回路、 209、219:アドレスレジスタ、 20A、21A:コヒーレンシトランザクションヒスト
リテーブル(CTHT)、 20B、21B:コヒーレンシトランザクションヒスト
リ(CTH)制御回路、 20C、21C:ANDゲート、 20D、21D:スイッチインターフェース、 301〜305:ポートインターフェース、 311〜315:スイッチキュー、 321〜325:セレクタ、 331〜333:コヒーレンシトランザクションヒスト
リ(CTH)回路、 341〜343:アドレスレジスタ、 351〜353:コヒーレンシトランザクションヒスト
リテーブル(CTHT)、 361〜363:ヒーレントトランザクションヒストリ
(CTH)制御回路、 371〜373:ANDゲート、 801:比較器、 802:コヒーレンシトランザクションヒストリ(CT
H)ヒット判定論理、 803:アドレスヒット信号、 804:ステータスビット信号、 805:転送抑止信号、 806:CTH状態信号、
───────────────────────────────────────────────────── フロントページの続き (72)発明者 藤原 至誠 神奈川県海老名市下今泉810番地 株式 会社日立製作所 オフィスシステム事業 部内 (56)参考文献 特開 平6−12384(JP,A) 特開 昭57−186282(JP,A) 特開 平4−133145(JP,A) 特開 平8−16475(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 15/16 - 15/177 G06F 12/08 - 12/12

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】複数のキャッシュシステムのそれぞれに設
    けられたキャッシュタグメモリにて、少なくとも、複数
    キャッシュシステム間に存在する同一アドレスのデータ
    ブロックの状態と該アドレスとを管理すると共に、前記
    キャッシュシステムにて前記データブロックへの処理が
    行われた際、一部の処理については、該キャッシュシス
    テムから他のキャッシュシステムに、その処理要求の
    容と該アドレスを送り、前記複数キャッシュシステム間
    のデータのコヒーレンシを維持するキャッシュコヒーレ
    ンシ制御方法において、 他のキャッシュシステムからアドレスを示した処理要求
    を受け取ると、データブロックを特定するためのアドレ
    スと、このデータブロックの属性情報とを格納するため
    に、当該キャッシュシステムに設けられたヒストリーテ
    ーブルに受け取ったアドレスに対応するアドレスが格
    納されているかどうかを判定し、前記判定の結果、前記ヒストリーテーブルに前記処理要
    求に伴うアドレスに対応するアドレスが格納されている
    ことが判明し、かつ、対応する属性情報が第一の種類の
    属性情報または第二の種類の属性情報のいずれかである
    場合(第一の場合)であり、かつ、前記処理要求が読み
    出し要求の場合には、 当該キャッシュシステム内におい
    て、今回の処理要求に関する前記キャッシュタグメモリ
    へのアクセスを抑止し、前記第一の場合以外の場合であり、かつ、前記処理要求
    が読み出し要求の場合には、今回の処理要求に伴うアド
    レスと共に第一の種類の属性情報を前記ヒストリーテー
    ブルに格納し、 前記判定の結果、前記ヒストリーテーブルに前記処理要
    求に伴うアドレスに対応するアドレスが格納されている
    ことが判明し、かつ、対応する属性情報が第二の種類の
    属性情報である場合(第二の場合)であり、かつ、前記
    処理要求が書き込み要求の場合には、 当該キャッシュシ
    ステム内において、今回の処理要求に関する前記キャッ
    シュタグメモリへのアクセスを抑止し、前記第二の場合以外の場合であり、かつ、前記処理要求
    が書き込み要求の場合には、今回の処理要求に伴うアド
    レスと共に第二の種類の属性情報を前記ヒスト リーテー
    ブルに格納し、 自キャッシュシステムからの読み出し要求があると、そ
    の読み出し要求に伴うアドレスに対応するアドレスが前
    記ヒストリーテーブルに格納されているかを判定し、該
    判定の結果、格納されていることが判明し、かつ、対応
    する属性情報が第二の種類の属性情報である場合には、
    該属性情報を第一の種類の属性情報に変更し、 自キャッシュシステムからの書き込み要求があると、そ
    の書き込み要求に伴うアドレスに対応するアドレスが前
    記ヒストリーテーブルに格納されているかを判定し、該
    判定の結果、格納されていることが判明し、かつ、対応
    する属性情報が第一の種類の属性情報または第二の種類
    の属性情報である場合には、当該格納されているアドレ
    スが前記ヒストリーテーブルに登録されていない状態に
    変更する、 ことを特徴とするキャッシュコヒーレンシ制御方法。
  2. 【請求項2】キャッシュデータメモリと、該キャッシュ
    データメモリ内の各データブロックに付されたタグ及び
    各データブロックの状態を表す状態情報を格納したキャ
    ッシュタグメモリと、前記キャッシュデータメモリ及び
    前記キャッシュタグメモリへのアクセスを行うキャッシ
    ュ制御回路とを含んだ2台以上のキャッシュシステム
    が、1台以上のメインメモリを共有しており、 前記2台以上のキャッシュシステムの一部又は全部が、
    他のキャッシュシステムから発行された処理要求及びア
    ドレスを受け取り、これらを受取ったキャッシュシステ
    ムのキャッシュ制御回路が、該アドレスで指定されたデ
    ータブロックの状態情報の内容を該処理要求の内容に基
    づいて設定することで、前記2台以上のキャッシュシス
    テム間でのキャッシュコヒーレンシが維持されるマルチ
    プロセッサシステムにおいて、 前記2台以上のキャッシュシステムのそれぞれは、 データブロックを特定するためのアドレスと、このデー
    タブロックの属性情報とを格納するヒストリーテーブル
    と、該ヒストリーテーブルの内容に応じて前記キャッシ
    ュ制御回路の制御を行うヒストリーテーブル制御回路と
    を備え、 前記ヒストリーテーブル制御回路は、他のキャッシュシステムからアドレスを示した処理要求
    を受け取ると、前記ヒストリーテーブルに、受け取った
    アドレスに対応するアドレスが格納されているかどうか
    を判定し、 前記判定の結果、前記ヒストリーテーブルに前記処理要
    求に伴うアドレスに対応するアドレスが格納されている
    ことが判明し、かつ、対応する属性情報が第一の種類の
    属性情報または第二の種類の属性情報のいずれかである
    場合(第一の場合)であり、かつ、前記処理要求が読み
    出し要求の場合には、当該キャッシュシステム内におい
    て、今回の処理要求に関する前記キャッシュタグメモリ
    へのアクセスを抑止し、 前記第一の場合以外の場合であり、かつ、前記処理要求
    が読み出し要求の場合には、今回の処理要求に伴うアド
    レスと共に第一の種類の属性情報を前記ヒストリーテー
    ブルに格納し、 前記判定の結果、前記ヒストリーテーブルに前記処理要
    求に伴うアドレスに対応するアドレスが格納されている
    ことが判明し、かつ、対応する属性情報が第二の種類の
    属性情報である場合(第二の場合)であり、かつ、前記
    処理要求が書き込み要求の場合には、当該キャッシュシ
    ステム内において、今回の処理要求に関する前記キャッ
    シュタグメモリへのアクセスを抑止し、 前記第二の場合以外の場合であり、かつ、前記処理要求
    が書き込み要求の場合には、今回の処理要求に伴うアド
    レスと共に第二の種類の属性情報を前記ヒストリーテー
    ブルに格納し、 自キャッシュシステムからの読み出し要求があると、そ
    の読み出し要求に伴うアドレスに対応するアドレスが前
    記ヒストリーテーブルに格納されているかを判定し、該
    判定の結果、格納されていることが判明し、かつ、対応
    する属性情報が第二の種類の属性情報である場合には、
    該属性情報を第一の種類の属性情報に変更し、 自キャッシュシステムからの書き込み要求があると、そ
    の書き込み要求に伴うアドレスに対応するアドレスが前
    記ヒストリーテーブルに格納されているかを判定し、該
    判定の結果、格納されていることが判明し、かつ、対応
    する属性情報が 第一の種類の属性情報または第二の種類
    の属性情報である場合には、当該格納されているアドレ
    スが前記ヒストリーテーブルに登録されていない状態に
    変更するものである、 ことを特徴とするマルチプロセッサシステム。
  3. 【請求項3】請求項2に記載のマルチプロセッサシステ
    ムにおいて、 前記2台以上のキャッシュシステムは、前記1台以上の
    メインメモリを共通バス若しくは相互結合網を介して共
    有していることを特徴とするマルチプロセッサシステ
    ム。
  4. 【請求項4】請求項2及び3のいずれか一項に記載のマ
    ルチプロセッサシステムにおいて、 前記各ヒストリーテーブル制御回路は、さらに、 他のキャッシュシステムからアドレス及び前記処理要求
    を受け取った際に、これらの発行元のキャッシュシステ
    ムに自キャッシュタグメモリにおける該当データブロッ
    クの状態を通知するものであることを特徴とするマルチ
    プロセッサシステム。
JP10282796A 1996-04-24 1996-04-24 キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム Expired - Fee Related JP3269967B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP10282796A JP3269967B2 (ja) 1996-04-24 1996-04-24 キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム
US08/839,072 US5987571A (en) 1996-04-24 1997-04-23 Cache coherency control method and multi-processor system using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10282796A JP3269967B2 (ja) 1996-04-24 1996-04-24 キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム

Publications (2)

Publication Number Publication Date
JPH09293060A JPH09293060A (ja) 1997-11-11
JP3269967B2 true JP3269967B2 (ja) 2002-04-02

Family

ID=14337859

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10282796A Expired - Fee Related JP3269967B2 (ja) 1996-04-24 1996-04-24 キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム

Country Status (2)

Country Link
US (1) US5987571A (ja)
JP (1) JP3269967B2 (ja)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09204403A (ja) * 1996-01-26 1997-08-05 Hitachi Ltd 並列計算機
JP3210590B2 (ja) * 1996-11-29 2001-09-17 株式会社日立製作所 マルチプロセッサシステムおよびキャッシュコヒーレンシ制御方法
US6032228A (en) * 1997-11-26 2000-02-29 International Business Machines Corporation Flexible cache-coherency mechanism
US6356991B1 (en) * 1997-12-31 2002-03-12 Unisys Corporation Programmable address translation system
US6112258A (en) * 1998-03-19 2000-08-29 3Com Corporation Multi-cycle I/O ASIC communication system having an arbiter circuit capable of updating address table associated with each I/O ASIC on bus
SE515461C2 (sv) * 1998-10-05 2001-08-06 Ericsson Telefon Ab L M Metod och arrangemang för minneshantering
JP2992284B1 (ja) * 1998-10-20 1999-12-20 松下電器産業株式会社 信号処理装置
US6546464B2 (en) * 1999-01-08 2003-04-08 Nortel Networks Limited Method and apparatus for increasing data rates in a data network while maintaining system coherency
US6314500B1 (en) * 1999-01-11 2001-11-06 International Business Machines Corporation Selective routing of data in a multi-level memory architecture based on source identification information
US6314491B1 (en) * 1999-03-01 2001-11-06 International Business Machines Corporation Peer-to-peer cache moves in a multiprocessor data processing system
JP3731385B2 (ja) * 1999-06-09 2006-01-05 株式会社日立製作所 パケット交換装置
US6381681B1 (en) * 1999-09-30 2002-04-30 Silicon Graphics, Inc. System and method for shared memory protection in a multiprocessor computer
US6412047B2 (en) * 1999-10-01 2002-06-25 Stmicroelectronics, Inc. Coherency protocol
US6519685B1 (en) * 1999-12-22 2003-02-11 Intel Corporation Cache states for multiprocessor cache coherency protocols
US7398282B2 (en) * 2000-06-16 2008-07-08 Fujitsu Limited System for recording process information of a plurality of systems
US6725341B1 (en) * 2000-06-28 2004-04-20 Intel Corporation Cache line pre-load and pre-own based on cache coherence speculation
US6658519B1 (en) * 2000-07-28 2003-12-02 International Business Machines Corporation Bus bridge with embedded input/output (I/O) and transaction tracing capabilities
US6901450B1 (en) 2000-09-22 2005-05-31 Hitachi, Ltd. Multiprocessor machine and cache control method for providing higher priority to shared cache that is accessed by multiprocessors
JP3732397B2 (ja) 2000-10-05 2006-01-05 株式会社日立製作所 キャッシュシステム
US6763433B1 (en) 2000-10-26 2004-07-13 International Business Machines Corporation High performance cache intervention mechanism for symmetric multiprocessor systems
US6721856B1 (en) 2000-10-26 2004-04-13 International Business Machines Corporation Enhanced cache management mechanism via an intelligent system bus monitor
US6601144B1 (en) * 2000-10-26 2003-07-29 International Business Machines Corporation Dynamic cache management in a symmetric multiprocessor system via snoop operation sequence analysis
US6704843B1 (en) 2000-10-26 2004-03-09 International Business Machines Corporation Enhanced multiprocessor response bus protocol enabling intra-cache line reference exchange
US6631450B1 (en) 2000-10-26 2003-10-07 International Business Machines Corporation Symmetric multiprocessor address bus protocol with intra-cache line access information
US6629210B1 (en) * 2000-10-26 2003-09-30 International Business Machines Corporation Intelligent cache management mechanism via processor access sequence analysis
US6842830B2 (en) * 2001-03-31 2005-01-11 Intel Corporation Mechanism for handling explicit writeback in a cache coherent multi-node architecture
US7444393B2 (en) 2001-10-30 2008-10-28 Keicy K. Chung Read-only storage device having network interface, a system including the device, and a method of distributing files over a network
US20030115402A1 (en) * 2001-11-16 2003-06-19 Fredrik Dahlgren Multiprocessor system
US7577816B2 (en) * 2003-08-18 2009-08-18 Cray Inc. Remote translation mechanism for a multinode system
US8751753B1 (en) 2003-04-09 2014-06-10 Guillermo J. Rozas Coherence de-coupling buffer
US7636815B1 (en) * 2003-04-09 2009-12-22 Klaiber Alexander C System and method for handling direct memory accesses
US7069351B2 (en) * 2003-06-02 2006-06-27 Chung Keicy K Computer storage device having network interface
US7366873B1 (en) 2003-08-18 2008-04-29 Cray, Inc. Indirectly addressed vector load-operate-store method and apparatus
US8307194B1 (en) 2003-08-18 2012-11-06 Cray Inc. Relaxed memory consistency model
US7543133B1 (en) 2003-08-18 2009-06-02 Cray Inc. Latency tolerant distributed shared memory multiprocessor computer
US7735088B1 (en) 2003-08-18 2010-06-08 Cray Inc. Scheduling synchronization of programs running as streams on multiple processors
US7334110B1 (en) 2003-08-18 2008-02-19 Cray Inc. Decoupled scalar/vector computer architecture system and method
US7519771B1 (en) 2003-08-18 2009-04-14 Cray Inc. System and method for processing memory instructions using a forced order queue
US7503048B1 (en) 2003-08-18 2009-03-10 Cray Incorporated Scheduling synchronization of programs running as streams on multiple processors
US7437521B1 (en) 2003-08-18 2008-10-14 Cray Inc. Multistream processing memory-and barrier-synchronization method and apparatus
US7421565B1 (en) 2003-08-18 2008-09-02 Cray Inc. Method and apparatus for indirectly addressed vector load-add -store across multi-processors
US7743223B2 (en) * 2003-08-18 2010-06-22 Cray Inc. Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system
US7769959B2 (en) 2004-01-20 2010-08-03 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration to memory
US7620696B2 (en) * 2004-01-20 2009-11-17 Hewlett-Packard Development Company, L.P. System and method for conflict responses in a cache coherency protocol
US8145847B2 (en) * 2004-01-20 2012-03-27 Hewlett-Packard Development Company, L.P. Cache coherency protocol with ordering points
US7818391B2 (en) 2004-01-20 2010-10-19 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration
US8176259B2 (en) 2004-01-20 2012-05-08 Hewlett-Packard Development Company, L.P. System and method for resolving transactions in a cache coherency protocol
US20050160238A1 (en) * 2004-01-20 2005-07-21 Steely Simon C.Jr. System and method for conflict responses in a cache coherency protocol with ordering point migration
US7395374B2 (en) * 2004-01-20 2008-07-01 Hewlett-Packard Company, L.P. System and method for conflict responses in a cache coherency protocol with ordering point migration
US8090914B2 (en) * 2004-01-20 2012-01-03 Hewlett-Packard Development Company, L.P. System and method for creating ordering points
US8468308B2 (en) * 2004-01-20 2013-06-18 Hewlett-Packard Development Company, L.P. System and method for non-migratory requests in a cache coherency protocol
US7478769B1 (en) 2005-03-09 2009-01-20 Cray Inc. Method and apparatus for cooling electronic components
US7971002B1 (en) * 2005-04-07 2011-06-28 Guillermo Rozas Maintaining instruction coherency in a translation-based computer system architecture
US8661208B2 (en) * 2007-04-11 2014-02-25 Hewlett-Packard Development Company, L.P. Non-inclusive cache systems and methods
US8769185B2 (en) 2007-10-23 2014-07-01 Keicy Chung Computer storage device having separate read-only space and read-write space, removable media component, system management interface, and network interface
US7958314B2 (en) * 2007-12-18 2011-06-07 International Business Machines Corporation Target computer processor unit (CPU) determination during cache injection using input/output I/O) hub/chipset resources
US8510509B2 (en) * 2007-12-18 2013-08-13 International Business Machines Corporation Data transfer to memory over an input/output (I/O) interconnect
US9069674B2 (en) * 2012-11-27 2015-06-30 International Business Machines Corporation Coherent proxy for attached processor
US9135174B2 (en) 2012-11-27 2015-09-15 International Business Machines Corporation Coherent attached processor proxy supporting master parking
US9612972B2 (en) 2012-12-03 2017-04-04 Micron Technology, Inc. Apparatuses and methods for pre-fetching and write-back for a segmented cache memory
US8938587B2 (en) 2013-01-11 2015-01-20 International Business Machines Corporation Data recovery for coherent attached processor proxy
US9021211B2 (en) 2013-01-11 2015-04-28 International Business Machines Corporation Epoch-based recovery for coherent attached processor proxy
US8990513B2 (en) 2013-01-11 2015-03-24 International Business Machines Corporation Accelerated recovery for snooped addresses in a coherent attached processor proxy
JP2014182488A (ja) 2013-03-18 2014-09-29 Fujitsu Ltd 演算処理装置、及び演算処理装置の制御方法
JP2014191622A (ja) * 2013-03-27 2014-10-06 Fujitsu Ltd 処理装置
CN104049955A (zh) * 2014-06-27 2014-09-17 浪潮(北京)电子信息产业有限公司 Cache一致性多级流水线处理方法及装置
CN105072048B (zh) * 2015-09-24 2018-04-10 浪潮(北京)电子信息产业有限公司 一种报文存储调度方法及装置
CN106371972B (zh) * 2016-08-31 2019-04-05 天津国芯科技有限公司 用于解决主设备间数据一致性的总线监控方法及装置
WO2018059655A1 (en) 2016-09-30 2018-04-05 Intel Corporation Method and apparatus for smart store operations with conditional ownership requests

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4622631B1 (en) * 1983-12-30 1996-04-09 Recognition Int Inc Data processing system having a data coherence solution
JPH0680499B2 (ja) * 1989-01-13 1994-10-12 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサ・システムのキャッシュ制御システムおよび方法
US5222224A (en) * 1989-02-03 1993-06-22 Digital Equipment Corporation Scheme for insuring data consistency between a plurality of cache memories and the main memory in a multi-processor system
JPH02253356A (ja) * 1989-03-28 1990-10-12 Toshiba Corp 階層キャッシュメモリ装置とその制御方式
US5113514A (en) * 1989-08-22 1992-05-12 Prime Computer, Inc. System bus for multiprocessor computer system
JP2820752B2 (ja) * 1990-01-19 1998-11-05 日本電信電話株式会社 密結合マルチプロセッサシステムにおけるキャッシュメモリ一致制御方法
JPH0664553A (ja) * 1992-08-21 1994-03-08 Honda Motor Co Ltd 可変舵角比操舵装置
US5557769A (en) * 1994-06-17 1996-09-17 Advanced Micro Devices Mechanism and protocol for maintaining cache coherency within an integrated processor

Also Published As

Publication number Publication date
US5987571A (en) 1999-11-16
JPH09293060A (ja) 1997-11-11

Similar Documents

Publication Publication Date Title
JP3269967B2 (ja) キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム
JP3737834B2 (ja) 2重化キャッシュ・スヌープ機構
US5671391A (en) Coherent copyback protocol for multi-level cache memory systems
US7237068B2 (en) Computer system employing bundled prefetching and null-data packet transmission
US7657710B2 (en) Cache coherence protocol with write-only permission
US5715428A (en) Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system
EP0818733B1 (en) A multiprocessing system configured to perform software initiated prefetch operations
US7669018B2 (en) Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
US5155824A (en) System for transferring selected data words between main memory and cache with multiple data words and multiple dirty bits for each address
KR100548908B1 (ko) 중앙 집중형 스누프 필터링 방법 및 장치
EP0817070B1 (en) Multiprocessing system employing a coherency protocol including a reply count
US20010013089A1 (en) Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol
JP3714617B2 (ja) キャッシュ階層で首尾一貫性を維持する方法、コンピュータ・システム、及び処理ユニット
JP2007183702A (ja) キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム
WO2008047070A1 (en) Handling of write access requests to shared memory in a data processing apparatus
US6266743B1 (en) Method and system for providing an eviction protocol within a non-uniform memory access system
US5806086A (en) Multiprocessor memory controlling system associating a write history bit (WHB) with one or more memory locations in controlling and reducing invalidation cycles over the system bus
JPH10187645A (ja) プロセス・ノードの多数のサブノード内にコヒーレンス状態で格納するように構成されたマルチプロセス・システム
JPH10149342A (ja) プリフェッチ動作を実行するマルチプロセス・システム
KR20030024895A (ko) 캐시 코히어런트 멀티-프로세서 시스템에서 순서화된입출력 트랜잭션을 파이프라이닝하기 위한 방법 및 장치
US20040059877A1 (en) Method and apparatus for implementing cache state as history of read/write shared data
JP2003177962A (ja) キャッシュ装置および方法
US5713004A (en) Cache control for use in a multiprocessor to prevent data from ping-ponging between caches
US6360301B1 (en) Coherency protocol for computer cache
US20070101067A1 (en) System and method for contention-based cache performance optimization

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080118

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20080118

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20090118

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20090118

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20100118

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20110118

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20110118

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20120118

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees