JP3213758B2 - 記憶一致制御方法およびそれを用いたマルチプロセッサシステム - Google Patents

記憶一致制御方法およびそれを用いたマルチプロセッサシステム

Info

Publication number
JP3213758B2
JP3213758B2 JP08054891A JP8054891A JP3213758B2 JP 3213758 B2 JP3213758 B2 JP 3213758B2 JP 08054891 A JP08054891 A JP 08054891A JP 8054891 A JP8054891 A JP 8054891A JP 3213758 B2 JP3213758 B2 JP 3213758B2
Authority
JP
Japan
Prior art keywords
cache
data
block
processor
request
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
JP08054891A
Other languages
English (en)
Other versions
JPH04293137A (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 JP08054891A priority Critical patent/JP3213758B2/ja
Publication of JPH04293137A publication Critical patent/JPH04293137A/ja
Application granted granted Critical
Publication of JP3213758B2 publication Critical patent/JP3213758B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はキャッシュを持つ複数の
プロセッサにおける記憶一致制御方法およびそれを用い
たマルチプロセッサシステムに係る。
【0002】
【従来の技術】キャッシュに関する従来技術について
は、「IEEEComputer」、第21巻、2号
(1988年)第9頁から第21頁に論じられている。
キャッシュには一般に書き込み時に主記憶を更新しない
ストアイン方式のキャッシュと書き込み時には主記憶も
更新するストアスルー方式のキャッシュがあるが、大規
模なマルチプロセッサシステムにおいてはストアイン方
式のキャッシュの方が適していると言われる。というの
は、ストアイン方式の方がストアスルー方式に比べて主
記憶のアクセス回数が少なくてすみ、システム全体の性
能が上がるからである。しかし、ストアイン方式のキャ
ッシュを有するプロセッサを複数台接続してマルチプロ
セッサを構成する場合にはキャッシュ間のデータの一致
制御が問題となる。従来は、あるプロセッサがデータを
キャッシュに書き込む場合に対応するブロックが他プロ
セッサのキャッシュにあると、その他プロセッサのキャ
ッシュのブロックを無効化(無効化ビットを立てる)す
ることでデータの一致制御を行っていた(無効化方
式)。あるいは、他のプロセッサのキャッシュにも書き
込みに行くことで一致制御を行っていた(ブロードキャ
スト方式)。
【0003】
【発明が解決しようとする課題】前述の無効化方式で
は、共有データに対してはプロセッサ間でお互いに無効
化しあってデータ転送が増えるという問題がある。ここ
で、共有データとはOSが管理しているテーブルのデー
タなどを指し、複数のプロセッサが共に用いるようなデ
ータ、また複数のプログラムが共に用いるようなデータ
である。一方、ブロードキャスト方式では共有データで
ない場合でも他プロセッサのキャッシュにデータがある
と書き込み毎に他のプロセッサのキャッシュに書き込み
にいくことになり、データの転送量が増えるという問題
点がある。また、これらを用いたデータ処理装置の性能
を低下させることになる。本発明の目的は、要求するデ
ータが共有データかどうかを判定し、自プロセッサのキ
ャッシュと他プロセッサのキャッシュの状態を判定した
結果により記憶一致制御方法を変更することで、無駄な
データの転送を起こさないようにし、記憶一致制御方法
の性能を上げることである。本発明のさらに他の目的
は、よりよい記憶一致制御を行うことで性能の良いマル
チプロセッサシステムを提供することである。
【0004】
【課題を解決するための手段】上記目的を達成するため
に、本発明の記憶一致制御方法では、要求するデータが
共有データかどうかを判定し、各キャッシュに対応する
データが保持されているかどうかを判定し、あるプロセ
ッサでデータを書き込む場合に、他プロセッサのキャッ
シュにデータが存在しない場合は、自プロセッサのキャ
ッシュのみを更新し、共有データで他プロセッサのキャ
ッシュにもデータが存在する場合は、自プロセッサのキ
ャッシュと他プロセッサのキャッシュの更新を行い、非
共有データで他プロセッサのキャッシュにデータが存在
する場合には、自プロセッサのキャッシュのみを更新
し、他プロセッサのキャッシュのデータを無効にする。
また、キャッシュを更新する場合に、通常LRU(Le
ast Recently Used)方式で管理され
ているキャッシュブロック置換時の優先順位(キャッシ
ュに格納されているブロックの置換をする際の置換の優
先順位である)(以下、更新順序と記載する)に従って
更新しているが、特に、本発明の望ましい態様では、自
プロセッサと他プロセッサのキャッシュを更新する場合
に、他プロセッサのキャッシュの更新順序を変更しな
い。
【0005】また、上記目的を達成するために、本発明
のマルチプロセッサシステムでは、要求するデータが共
有データかどうかを判定する手段と、各キャッシュに対
応するデータが保持されているかどうかを判定する手段
と、あるプロセッサでデータを書き込む時、他プロセッ
サのキャッシュにデータが存在しない場合は、自プロセ
ッサのキャッシュのみを更新し、共有データで他プロセ
ッサのキャッシュにデータが存在する場合は、自プロセ
ッサのキャッシュと他プロセッサのキャッシュの更新を
行ない、非共有データで他プロセッサのキャッシュにデ
ータが存在する場合は、自プロセッサのキャッシュのみ
を更新して他プロセッサのキャッシュのデータを無効に
する手段を設ける。特に、本発明の望ましい態様では、
自プロセッサと他プロセッサのキャッシュを更新する場
合に、他プロセッサのキャッシュの更新順序を変更しな
い手段を設ける。
【0006】
【作用】本発明における記憶一致制御方法では、あるプ
ロセッサでデータを書き込む場合に、要求するデータが
共有データかどうかを判定し、各キャッシュに対応する
データが保持されているかどうかを判定し、共有データ
で他プロセッサのキャッシュにもデータが存在する場合
は、自プロセッサのキャッシュと他プロセッサのキャッ
シュの更新を行なうことで無効化方式での相互に無効化
しあうことによるデータの転送を避け、性能を向上させ
る。また、非共有データで他プロセッサのキャッシュに
データが存在する場合には、自プロセッサのキャッシュ
のみを更新し、他プロセッサのキャッシュのデータを無
効にすることで、ブロードキャスト方式でのデータ転送
の増加を防ぎ、不必要なデータがキャッシュ内に存在し
つづけることを防止することで性能を向上させる。特
に、本発明の望ましい態様では、自プロセッサと他プロ
セッサのキャッシュを更新する場合に、他プロセッサの
キャッシュの更新順序を変更しないことで不必要なデー
タがキャッシュに存在しつづけることを更に防止し、性
能を向上させる。
【0007】本発明におけるマルチプロセッサシステム
では、あるプロセッサでデータを書き込む場合に、要求
するデータが共有データかどうかを判定する手段と各キ
ャッシュに対応するデータが保持されているかどうかを
判定する手段の判定結果により、共有データで他プロセ
ッサのキャッシュにもデータが存在する場合には、自プ
ロセッサのキャッシュと他プロセッサのキャッシュの更
新を行なうことで無効化方式での相互に無効化しあうこ
とによるデータの転送を避け、性能を向上させる。ま
た、判定結果により、非共有データで他プロセッサのキ
ャッシュにデータが存在する場合には、自プロセッサの
キャッシュのみを更新し、他プロセッサのキャッシュの
データを無効にすることで、ブロードキャスト方式での
データ転送の増加を防ぎ、不必要なデータがキャッシュ
内に存在しつづけることを防止することで性能を向上さ
せる。特に、本発明の望ましい態様では、自プロセッサ
と他プロセッサのキャッシュを更新する場合に、他プロ
セッサのキャッシュの更新順序を変更しない手段を設け
ることで不必要なデータがキャッシュに存在しつづける
ことを更に防止し、性能を向上させる。
【0008】
【実施例】以下、本発明の一実施例を図を用いて説明す
る。本発明を実施しうるマルチプロセッサシステムの一
例を図2に示す。このマルチプロセッサシステムはIU
(命令制御ユニット)1〜4,BU(バッファ制御ユニ
ット)11〜14からなるプロセッサ4台で構成され
る。IUは一般に8バイト単位で取り出し指令または記
憶指令をBUへ送る。要求されたデータがキャッシュに
あれば、そこで取り出しまたは記憶が行なわれる。とこ
ろが、要求されたデータがキャッシュにない場合にはキ
ャッシュミスが生じる。その場合には要求されたデータ
を含むブロックをキャッシュへ持ってくる。また、記憶
指令の場合で他のキャッシュに対応するブロックがあっ
た場合には格納するデータの転送をする必要または該ブ
ロックをキャンセル(無効化と同じ)する必要がある。
また、適切な排他フラグ(SH[共有状態](同一デー
タが複数のキャッシュに存在する状態)またはEX[排
他状態](データが一つのキャッシュにのみ存在する
(無効化されていない)状態))を持っていなければ、
キャッシュにある当該ブロックのフラグを変更する必要
がある。そのため、BUは関連するSCU(記憶制御ユ
ニット)21,22へ対応する指令を出すことにより、
要求されたデータを含むブロックの取り出し、または自
キャッシュの当該ブロックの排他フラグの変更あるいは
他キャッシュへの格納するデータの転送またはキャンセ
ルを要求する。これらの指令を以下BU要求指令と呼
ぶ。
【0009】図2のマルチプロセッサシステムは4台の
プロセッサのほかに、2台の記憶制御ユニットSCU2
1,22および主記憶MS31,32,4台のIOP
(I/Oプロセッサ)41〜44から構成される。SC
Uはデータ線および制御線によってそれぞれ2台のBU
とMSの一方に相互接続されている。各BUは関連する
SCU(ローカルSCU、例えば、BU0のローカルS
CUはSCU0である)を介して、一方のMSおよび関
係するIOPと直接接続され、更に、ローカルSCUお
よびリモートSCU(例えば、BU0のリモートSCU
はSCU1である)間の接続によって他方のMSおよび
リモートのIOPとも間接的に接続される。従って、図
2のマルチプロセッサシステムに含まれるどのBUも他
の任意のBU,IOPあるいはMSと通信することがで
きる。
【0010】このようなマルチプロセッサシステムにお
ける本発明の記憶一致制御方法について以下説明してい
く。まず、全体の処理の流れを図1により説明する。あ
るプロセッサからの指令(100)が発行された場合
に、まず、記憶指令か取り出し指令かの判定を行なう
(101)。取り出し指令の場合には共有データかどう
かの判定を行ない(103)、共有データの場合には取
り出し共有処理を行ない(110)、非共有データの場
合には取り出し非共有処理を行なう(130)。また、記
憶指令の場合にも共有データかどうかの判定を行ない
(105)、共有データの場合には記憶共有処理を行な
い(150)、非共有データの場合には記憶非共有処理
を行なう(170)。
【0011】共有データかどうかの判定の仕方として
は、例えば、アドレス変換で用いられるTLB内の共有
領域であるか否かを示す情報であるCビットにより行う
仕方がある。TLBはアドレス変換を効率よく実行する
ためのバッファであり、各エントリは図11aに示すよ
うな構成をとっている。変換はページ単位で行われ、仮
想空間番号と空間内ページアドレスからなる仮想ページ
アドレスとそれに対応する絶対アドレスの対が登録され
ており、登録されている仮想ページアドレスに対する変
換は高速に実現できる。また、共有領域に対する変換を
示すためにCビットが設けられ、これが1の場合には仮
想空間番号が何であっても同じ絶対アドレスに変換され
ることになる。Vはエントリが有効であるかどうかを示
すビット、Rは対応するアドレスがアクセスされたかど
うかを示すビットである。共有領域に対するIU指令か
どうかを決定するためにはこのCビットを用いて判定す
る。Cビットが1のときには共有領域と判定し、0のと
きには非共有領域と判定する。
【0012】図3は取り出し共有処理(110)の流れ
を示したものである。まず、自プロセッサのキャッシュ
にデータが存在するかどうかの判定を行なう(11
1)。すなわち、自プロセッサが指定したアドレスのデ
ータが自プロセッサのキャッシュに存在するかどうかの
判定を行うことであり、後述するBAAを調べることに
より行われる。存在した場合(113)には、自キャッ
シュからのデータの取り出しを行ない、通常LRU(L
east Recently Used)方式で管理さ
れている自キャッシュの更新順序の更新を行なう(11
4)。 自プロセッサのキャッシュにデータが存在しな
かった場合には、他キャッシュに存在するかどうかの判
定を行なう(115)。これは、後述するFAAを調べ
ることにより行われる。他キャッシュに存在しなかった
場合(116)には、主記憶MSから自キャッシュへの
データ転送を行ない、データを取り出し、自キャッシュ
の排他フラグを排他状態に設定し、自キャッシュの更新
順序を更新する(117)。自プロセッサのキャッシュ
に存在せず、他プロセッサのキャッシュに存在した場合
(118)には、他キャッシュからデータを転送し、デ
ータの取り出しを行ない、排他フラグを何れのキャッシ
ュにおいても共有状態に設定し、キャッシュの更新順序
を何れのキャッシュにおいても更新する(119)。こ
のように処理することで、自プロセッサのキャッシュに
データが存在する場合には即座にデータの読み出しが可
能であり、自プロセッサのキャッシュにデータが存在し
ない場合でも従来の記憶一致制御方法と同等の性能が得
られる。
【0013】図4は取り出し非共有処理(130)の流
れを示したものである。自プロセッサのキャッシュにデ
ータが存在するかどうかの判定を行ない(131)、存
在した場合には、他プロセッサのキャッシュにデータが
存在するかどうかの判定を行なう(133)。他キャッ
シュにデータが存在しない場合(135)には、自キャッ
シュからのデータの取り出しを行ない、自キャッシュの
更新順序の更新を行なう(139)。自プロセッサおよび
他プロセッサのキャッシュにデータが存在した場合(1
36)には、自キャッシュからのデータの取り出しを行
ない、他プロセッサのキャッシュの対応するブロックの
キャンセル(無効化と同じ)を行ない、自キャッシュの
排他フラグを排他状態に設定し、自キャッシュの更新順
序の更新を行なう(140)。自プロセッサのキャッシ
ュにデータが存在しなかった場合(132)にも、他プ
ロセッサのキャッシュにデータが存在するかどうかの判
定を行なう(134)。他キャッシュにデータが存在し
なかった場合(137)には、主記憶MSから自キャッ
シュへデータを転送し、データの取り出しを行ない、自
キャッシュの排他フラグを排他状態に設定し、自キャッ
シュの更新順序を更新する。自プロセッサのキャッシュ
にデータが存在せず、他プロセッサのキャッシュにデー
タが存在した場合(138)には、他キャッシュからの
データの転送を行ない、データの取り出しを行ない、他
キャッシュの対応するブロックのキャンセルを行ない、
自キャッシュの排他フラグを排他状態に設定すると共
に、自キャッシュの更新順序を更新する(142)。こ
のように処理することで、他プロセッサのキャッシュに
不必要なデータが存在しつづけ、キャッシュの有効利用
を図れなくなることを防ぐことができる。
【0014】図5は記憶共有処理(150)の流れを示
したものである。自プロセッサのキャッシュの指定され
たアドレスにデータが存在するかどうかの判定(この判
定は後述するBAAを調べ、BAAに対応するアドレス
があるかどうかをみることにより行う)を行ない(15
1)、存在した場合には、他プロセッサのキャッシュの
指定されたアドレスにデータが存在するかどうかの判定
(この判定は後述するFAAを調べ、FAAに対応する
アドレスがあるかどうかをみることにより行う)を行な
う(153)。他プロセッサのキャッシュにデータが存
在しない場合(155)には、自キャッシュのデータの
更新を行ない、自キャッシュの排他フラグを排他状態に
設定し、自キャッシュの更新順序を更新する。(15
9)。自プロセッサおよび他プロセッサのキャッシュに
データが存在した場合(156)には、自キャッシュお
よび他キャッシュのデータの更新を行ない、自キャッシ
ュおよび他キャッシュの排他フラグを共有状態に設定
し、自キャッシュおよび他キャッシュの更新順序の更新
を行なう(160)。自プロセッサのキャッシュにデー
タが存在しなかった場合(152)にも、他プロセッサ
のキャッシュにデータが存在するかどうかの判定を行な
う(154)。他キャッシュにデータが存在しなかった
場合(157)には、主記憶MSからキャッシュへデー
タを転送し、自キャッシュのデータの更新を行ない、自
キャッシュの排他フラグを排他状態に設定し、自キャッ
シュの更新順序を更新する(161)。自プロセッサの
キャッシュにデータが存在せず、他プロセッサのキャッ
シュにデータが存在した場合(158)には、他プロセ
ッサのキャッシュからデータ転送を行ない、自キャッシ
ュおよび他キャッシュのデータの更新を行ない、自キャ
ッシュおよび他キャッシュの排他フラグを共有状態に設
定すると共にキャッシュの更新順序の更新を行なう(1
62)。このように処理することで、共有されているブ
ロックに対する要求が複数のプロセッサで頻発しても、
無効化方式のようにキャンセルしあうことでブロック単
位の転送を行なう必要はなく、更新データのみの転送で
すみ、ヒット率も向上するため、性能を向上させること
ができる。
【0015】図6は記憶非共有処理(170)の流れを
示したものである。自プロセッサのキャッシュにデータ
が存在するかどうかの判定を行ない(171)、存在し
た場合には、他プロセッサのキャッシュにデータが存在
するかどうかの判定を行なう(173)。他キャッシュ
にデータが存在しない場合(175)には、自キャッシ
ュのデータの更新を行ない、自キャッシュの更新順序の
更新を行なう(179)。自プロセッサおよび他プロセ
ッサのキャッシュにデータが存在した場合(176)に
は、自キャッシュのデータの更新を行ない、他プロセッ
サの対応するブロックのキャンセルを行ない、自キャッ
シュの排他フラグを排他状態に設定し、自キャッシュの
更新順序の更新を行なう(180)。自プロセッサのキ
ャッシュにデータが存在しなかった場合(172)にも、
他キャッシュにデータが存在するかどうかの判定を行な
う(174)。他キャッシュにデータが存在しなかった場
合(177)には、主記憶MSから自キャッシュにデー
タを転送し、データの更新を行ない、自キャッシュの排
他フラグを排他状態に設定し、自キャッシュの更新順序
を更新する(181)。自プロセッサのキャッシュにデ
ータが存在せず、他キャッシュにデータが存在した場合
(178)には、他キャッシュからのデータ転送を行な
い、データの更新を行ない、他キャッシュの対応するブ
ロックのキャンセルを行ない、自キャッシュの排他フラ
グを排他状態に設定すると共にキャッシュの更新順序を
更新する(182)。このように処理することで、ブロ
ードキャスト方式のように他プロセッサのキャッシュに
不必要なデータが存在しつづけ、キャッシュの有効利用
を図れなくなることを防ぐことができる。以上示したよ
うに処理することで、共有データに対しても非共有デー
タに対しても最適な記憶一致制御を行なうことができ
る。
【0016】次に、本発明の記憶一致制御方法の更に望
ましい態様を説明する。処理方法はほぼ同じであるが、
取りだし共有処理と記憶共有処理の一部が異なる。図7
は取り出し共有処理(110)のさらに望ましい処理の
流れを示したものである。図3と比べて、自プロセッサ
のキャッシュにデータが存在せず、他プロセッサのキャ
ッシュにデータが存在した場合(118)の処理(11
9)が異なる。この場合には他プロセッサのキャッシュ
の更新順序は更新しない。こうすることにより、他プロ
セッサのキャッシュに不必要なデータが存在することを
さらに防ぐことができ、ヒット率を向上させ、キャッシ
ュを有効に利用できる。
【0017】図8は記憶共有処理(150)のさらに望
ましい処理の流れを示したものである。図5と比べて、
自キャッシュにデータが存在し、他キャッシュにもデー
タが存在した場合(159)の処理(160)と自キャ
ッシュにデータが存在せず、他キャッシュにデータが存
在した場合(158)の処理(162)が異なる。これ
らの場合には、他プロセッサのキャッシュの更新順序を
変更しない。こうすることにより、他プロセッサのキャ
ッシュに不必要なデータが存在することをさらに防ぐこ
とができ、ヒット率を向上させ、キャッシュを有効に利
用できる。
【0018】図2に示すマルチプロセッサシステムにお
ける記憶一致制御とそのための構成について以下説明す
る。以下では、要求を出したユニットを他から区別する
ために、添字「R」を付けることにする。例えば、BU
(R)は要求を出したバッファ制御ユニットを示し、C
(R)はBU(R)に含まれるキャッシュを示し、BA
A(R)はBU(R)に含まれるキャッシュディレクト
リを示し、FAA(R)はBAA(R)に対応する写し
ディレクトリを示す。BUはIUからの指令に応答して
自身のBAAを調べ、もし要求されたデータがキャッシ
ュにないか、有っても排他フラグが共有状態を示してい
る場合には、自身がBU(R)となってBU要求指令を
ローカルSCUへ送る。ローカルSCUはこの指令を、
MSに対する要求およびローカルSCUおよびリモート
SCUにある他の全てのFAAを探索するための相互探
索要求として扱う。
【0019】相互検索の結果、要求されたデータが他の
プロセッサのキャッシュにあることがわかると、当該キ
ャッシュは相互探索ヒットが生じたキャッシュとして表
示される。以下、このキャッシュをC(H)で示し、C
(H)を含むバッファ制御ユニットをBU(H)で示
し、その写しディレクトリをFAA(H)で示す。C
(H)はBU(R)によって要求されたブロックを持っ
ており、従ってこのブロックをC(R)へ転送するため
の送信キャッシュとなる。
【0020】SCUは、SCUに接続されているBUの
BAAに対応したFAAを持っている。SCUの内部に
設けられている相互探索制御線が全てのFAAに接続さ
れていて、競合すなわち競合探索ヒットを調べるように
なっているので、相互探索は全てSCUにあるFAAの
みで行なわれ、その間BUにあるBAAは使用可能な状
態にある。また、BAAはIUからの論理アドレスによ
ってアドレス指定されるが、FAAは論理アドレスを変
換した絶対アドレスによってアドレス指定される。
【0021】各キャッシュはストアイン型のキャッシュ
であるから、IUによってキャッシュ中のブロックが変
更されても、MSでただちに同様の変更が行なわれるわ
けではない。従ってキャッシュ内には変更されたブロッ
クおよび未変更のブロックが混在している。未変更ブロ
ックはMSからも取り出すことができるが、変更ブロッ
クは該ブロックを含むキャッシュから取り出せるだけで
ある。このキャッシュは取り出し要求があると、要求さ
れたブロックを取り出す。取り出し要求は、(1)相互
探索ヒットによるものと、(2)ブロック置換(新しい
ブロックを持ってくるためのスペースをあける)による
ものとがある。(1)はBU(H)で実行されるが、
(2)はBU(R)で実行される。
【0022】BAAおよびFAAのエントリを図11b
に示す。これらのエントリは、関連するキャッシュ中の
各ブロックに対応している。1ビットのEXフィールド
は、その内容が1であれば排他状態(EX)を示し、0
であれば共有状態(SH)を示す。一般に複数のキャッ
シュに存在している可能性があれば共有状態を示すフラ
グ(EX=0)を与える。一方、一つのキャッシュにし
か存在しない場合には排他状態を示すフラグ(EX=
1)が与えられる。1ビットのVフィールドは対応する
ブロックが有効か否かを示す。1ビットのCHフィール
ドは対応するブロックが変更されたか否かを示してい
る。キャッシュはアクセスの効率を高めるために、ブロ
ック単位で構成され、各BAAおよびFAAのエントリ
もブロック単位になっている。各ブロックはIUのアク
セス単位よりも大きく、IUは一般にその内の一部をア
クセスする。従って、IUによって要求されたデータは
ブロックの一部分であっても、BAAエントリおよびF
AAエントリに含まれる全てのフラグは、要求されたデ
ータを含むブロック全体に適用される。
【0023】IUは命令又はデータをアクセスしたいと
きに、取り出し指令または記憶指令をBUへ送るが、こ
のIU指令は共有データ(前述のTLBのCビットが1
のもの)に対するものか非共有データ(Cビットが0の
もの)に対するものかに応じて共有型(CO)または非
共有型(PR)型にわけられる。共有型のIU指令(I
U CO指令)においては、要求されたデータが自キャ
ッシュにあれば、対応するBAAエントリ中の排他フラ
グが共有状態SHか排他状態EXかには関係なく、ただ
ちにキャッシュから取り出し、あるいは記憶が行なわれ
る。記憶の場合にはBAAエントリ中の排他フラグがE
Xの場合には他に何も行なわないが、BAAエントリの
排他フラグがSHの場合には、記憶指令が同じブロック
を保持している他キャッシュに送られる。
【0024】要求されたデータが自キャッシュにない場
合には、他の全てのIUに対応するFAAで相互探索が
行なわれる。その結果、いずれかのキャッシュで相互探
索ヒットが生じると、そのキャッシュすなわちC(H)
はヒットしたブロックを接続されているSCUに転送
し、当該SCUは、このブロックをC(R)へ転送す
る。また、BU(R)およびBU(H)の対応するBA
AエントリおよびFAAエントリ中の排他フラグはSH
にされる。要求されたブロックが送信キャッシュC
(H)で変更されていた場合には、MS中のオリジナル
ブロックはまだ最新の状態になっていないためにアクセ
スを禁止される。記憶の場合には、記憶指令がBU
(H)にも送られる。複数のキャッシュに同じブロック
のデータが含まれていた場合には、IU COの指令を
実行することによって、各々のキャッシュから同じブロ
ックのデータを同時に取り出したり、記憶したりでき
る。
【0025】非共有型のIU指令においては、要求され
たデータを含むブロックがキャッシュにあって、その排
他フラグがEXであれば、8バイトのデータの取り出し
または記憶をただちに行なえる。排他フラグがEXであ
るブロックはマルチプロセッサシステム中の一つのキャ
ッシュにのみ保持される。要求されたブロックがキャッ
シュにないか、またはもしあってもその排他フラグがS
Hであれば、他の全てのIUに関連するFAAで相互探
索が行なわれる。その結果、いずれかのキャッシュで相
互探索ヒットが生じると、そのキャッシュすなわちC
(H)はヒットしたブロックを接続されているSCUに
転送し、当該SCUは、このブロックをC(R)に転送
する。また、BU(R)の対応するBAAエントリおよ
びFAAエントリ中の排他フラグは、EXにされ、従っ
て、C(R)だけがこのブロックを含むことになる。C
(H)においては当該ブロックが無効化される。要求さ
れたブロックが送信キャッシュで変更されていた場合に
は、MS中のオリジナルブロックはまだ最新の状態にな
っていないから、アクセスは禁止される。
【0026】IU指令を受け取ったBUでキャッシュミ
スが生じた場合あるいは記憶指令の場合に他のキャッシ
ュにデータが存在する可能性があれば、このBUは図1
2に示したようなBU要求指令を出す。これはもとのI
U指令によって与えられた共有型フラグ(Cビット)を
含む。
【0027】BU要求指令はBU要求指令線230を介
してローカルSCUへ送られる。ローカルSCUはこれ
に応答して、要求されたブロックを取り出すための要求
をMSに送り、同時に、BU要求指令をXSAR(相互
探索アドレスレジスタ)に移す。BU要求指令はこのレ
ジスタから相互探索線を介してリモートSCUにも送ら
れる。ローカルSCUではXSARに移されたBU要求
指令中の絶対アドレスを用いて関連BUのFAAが探索
され、リモートSCUでは2台のリモートBUのFAA
が探索される。
【0028】送信キャッシュからBU(R)へ要求され
たブロックを転送するために、指令を含む処理制御信号
をやり取りする様子を図10に示す。BU(R)を要求
元キャッシュとすると、BU(H)が送信キャッシュで
ある。図10には示していないが、ブロック転送には図
9(概略図であり、詳細は後述の図面と説明で示され
る)のようなデータ線構造が使用される。ここで、OB
Bは出力ブロックバッファである。なお、要求元がIO
Pの場合もある。
【0029】図10の(A)および図10の(B)の例
では、ブロック転送のための制御信号のやり取りは、キ
ャッシュミスを検出したBUまたは適切な排他フラグを
持っていないBU(R)によって開始される。まず、B
U(R)は制御線230を介して図12に示すようなB
U要求指令をローカルSCUへ送る。
【0030】図12の各フィールドの意味は次のとおり
である。 STAR設定:STAR(Store Address
Register) を設定するかどうかを指定す
る。 記憶:記憶処理であるかどうかを指定する。 FAR設定:FAR(Fetch Address R
egister)を設定するかどうかを指定する。 取り出し:取り出し処理であるかどうかを指定する。 C:共有領域のデータに関する処理であるかどうかを指
定する。 絶対アドレス:処理するデータのアドレスを指示する。
【0031】ローカルSCUは、BU要求指令を受け取
ると、その処理の優先順位をスケジュールし、対応する
MSに要求を出し、内部の相互探索制御線256,25
7(図17および図18)と外部の相互探索制御線25
8に相互探索要求を出す。いずれかのFAAで相互探索
ヒットが見つかると、そのFAA(H)を含むSCUが
制御線を介してBU(H)に相互探索要求を送る。この
相互探索要求はBU(H)に対し、(1)競合ブロック
(ヒットしたブロック)をそのキャッシュから吐き出す
こと、(2)競合ブロックを無効化すること、(3)競
合ブロックの排他フラグをEXからSHに変更するこ
と、(4)競合ブロックへのデータ転送が行なわれるこ
と、(5)変更の有無をチェックすること、(6)これ
らの5つのうちの特定の組合せを要求される。
【0032】相互探索ヒット要求線252上の各種制御
信号の一例を図13に示す。図13の各フィールドの意
味は次のとおりである。 相互探索ヒット要求:相互探索ヒット要求であることを
指示する。 CO:(1)競合ブロックをそのキャッシュから吐き出
すことを指示する。 CC:(5)変更の有無をチェックすることを指示す
る。 ST:(4)競合ブロックへのデータ転送が行なわれる
ことを指示する。 SH:(3)競合ブロックの排他フラグをEXからSH
に変更することを指示する。 I:(2)競合ブロックを無効化することを指示する。 絶対アドレス:処理するデータのアドレスを指示する。 GID:処理対象となるクラスを指定する(図19参
照)。 SID:処理対象となるローを指定する(図19参
照)。
【0033】相互探索ヒット要求線232はBUごとに
1本ずつ設けられる。従って、図2のマルチプロセッサ
システムには全部で4本の相互探索要求線があるが、こ
れらを区別する必要があるときには、接続されているB
Uの番号1〜4の番号を付けて、232・1、232・
2、232・3、232・4のように表示する(他の制
御線も同様)。
【0034】相互探索に関与している各SCUは、相互
探索要求に対する応答を出しおわるまで、要求者の識別
子(RQID)をXSSAR243(図17)に保持し
ている。BU(H)に対する相互探索ヒット要求がブロ
ックの吐き出しであれば、BU(H)がキャッシュ間転
送またはキャッシュからチャネルへの転送における送信
BUになり、当該ブロックを要求元であるC(R)また
はIOP(R)に転送する。相互探索ヒット要求によっ
て上述の(1)から(6)までのうちのいずれかを要求
されたBU(H)は相互探索ヒット応答信号線233へ
信号を出すことによってローカルSCUに応答する。
【0035】相互探索ヒット応答信号線232上の信号
の一例を図14に示す。図14の各フィールドの意味は
次のとおりである。 相互探索ヒット応答:相互探索ヒット応答であることを
指示する。 CO:競合ブロックをそのキャッシュから吐き出したこ
とを応答する。 CH:競合ブロックが変更されていたことを応答する。 ST:競合ブロックへのデータ転送が完了したことを応
答する。 SH:競合ブロックの排他フラグをEXからSHへ変更
したことを応答する 。 I:競合ブロックを無効化が完了したことを応答
する。 GID:処理対象となるクラスを指定する(図19参
照)。 SID:処理対象となるローを指定する(図19参
照)。 相互探索ヒット要求信号線232と同じく、相互探索ヒ
ット応答信号線233もBUごとに設けられる。
【0036】相互探索要求信号を受け取ったSCUは、
この信号がデータの転送を示していると、要求元BU
(R)のキャッシュから転送されてくるデータを受け取
るために、関連するOBB(出力ブロックバッファ)を
準備する。データ転送は、図10の各制御線と並列に設
けられている図9のデータ線を用いて実行される。ま
た、リモート応答信号を受け取ったローカルSCUは、
どのBUまたはIOPが要求者であるかに応じて、直接
応答または間接応答を与える。すなわち、ローカルSC
Uは、要求者が自身に接続されていれば直接応答を与え
(図10の(A))、要求者がリモートSCUに接続さ
れていれば間接応答を与える(図10の(B))。
【0037】要求者がリモートSCUに接続されている
と、ローカルSCUはリモート応答制御信号線276,
277を介してリモートSCUに相互探索ヒット応答信
号を送る。この信号はリモートSCUの相互探索ヒット
応答制御回路(図18を参照)に受け取られ、要求者が
リモートSCUに接続されていることを知らせる。要求
者が接続されているSCUの相互探索ヒット応答制御回
路は、送信BUから直接、またはもう一方のSCUを介
して、相互探索ヒット応答信号を受け取ると、指令応答
線231へ指令応答信号を出して要求者であるBUまた
はIOPへ送り、その時OBBからデータ線へ出力され
ているブロックデータを受け取らせる。
【0038】指令応答信号の一例を図15に示す。図1
5の各フィールドの意味は次のとおりである。 指令応答:指令応答であることを指示する。 CH:データが変更されていること(MSと一致してい
ない)を指示する。 ST:記憶指令であるかどうかを指示する。 指令応答信号231もBUごとに設けられる。
【0039】キャッシュ間またはキャッシュからIOP
へのブロック転送は、要求者であるBUのキャッシュま
たはIOPへのブロック書き込みによって終了する。指
令応答信号がBU(R)に受け取られたとき、その選択
されたBAAエントリ(図11b)を変更することがで
きる。例えば、ブロック転送を伴う場合には、当該ブロ
ックに対応する新たなBAAエントリが作成され、ブロ
ック転送を伴わない場合には、C(R)に対応するブロ
ックの変更フラグおよび排他フラグが書き替えられる。
【0040】図29aの表1、図29bの表2はキャッ
シュ間転送における種々の状態を要約して示したもので
ある。上記表1、表2および図29cの表3のフィール
ドの意味は次のとおりである。 IU指令:IU指令の形式を示す。 自キャッシュ:自キャッシュにデータがあるかどうか、
その時の排他フラグが何であるかを示す。 探索結果:他キャッシュにデータがあるかどうか、その
時の排他フラグが何であるかを示す。 MS要求:MSに対するリクエストを実行するか、取り
消すかを示す。 FAA更新:FAAのフラグをどのように変更するかを
示す。 相互探索要求:相互探索要求の形式を示す。 相互探索応答:相互探索応答の形式を示す。 指令応答:指令応答の形式を示す。 データ転送:どこからどこへデータ転送が行われるかを
示す。
【0041】キャッシュ間転送すなわちC(H)からC
(R)への転送はいずれかのSCUにFAA(H)があ
る場合に実行される。相互探索によりヒットが検出され
ると、FAAを含むSCUはただちにMSに取消し信号
を送って、以前にMSへ出したブロック取り出し信号を
取り消す。次いで、競合ブロックが変更されていなけれ
ば、MSから同じブロックを取り出すこともできるが、
いったん取り消したMS要求を再び出してブロック取り
出しを行なうとかなりの遅れがでるので、たとえ変更さ
れていなくてもキャッシュから取り出すようにした方が
効率的である。C(H)から取り出されたブロックはS
CU(H)の関連するOBBへロードされ、次いでそこ
からC(R)の方へ転送される。
【0042】要求が非共有型のPR取り出しであった場
合には、この要求に関わるブロックすなわち競合ブロッ
クがC(H)で変更されているか否かに関係なく、FA
A(H)およびBAA(H)の両方で対応するエントリ
が無効化され、また競合ブロックが例え変更されていた
としてもC(R)への転送が行なわれるだけで、MSへ
の転送は行なわれない。これに対して、要求が共有型の
CO取り出しでかつブロックが変更されていた場合に
も、競合ブロックがC(R)へ転送されるだけで、MS
への転送は行なわれない。共有型取り出し要求の場合で
も、相互探索の結果ヒットが検出されなければ、FAA
(R)およびBAA(R)の対応するエントリに含まれ
る排他フラグが共有状態(EX=0)にセットされるだ
けである。非共有型の取り出しの場合には、上述の排他
フラグが排他(EX=1)にセットされ、かつFAA
(H)およびBAA(H)の対応するエントリが無効化
される。
【0043】図29cの表3はキャッシュ−チャネル間
転送の要約である。共有型の要求は共有領域へのデータ
のアクセスであり、非共有型の要求は私有領域へのアク
セスである。表3において、データ転送に関与するキャ
ッシュはC(H)だけであり、相互探索の結果、ブロッ
クが見つかると、C(H)からIOPへの転送が行なわ
れるだけである。ただし、指令が非共有型の場合にはF
AA(H)およびBAA(H)において競合ブロックが
無効化される。非共有型の指令の場合にはMSへの転送
も行なわれる。
【0044】本発明に従えば、図2のマルチプロセッサ
システムに含まれる複数のキャッシュで各々異なったブ
ロックの転送を同時に行なうことができる。以上で実施
例の一般的な説明を終わり、各装置の詳細に移ることに
する。
【0045】BUの詳細は図16に、SCUの詳細は図
17および図18に各々示してある。説明の都合上、図
16はBU0を図17および図18はSCU0を示して
いるが、他のBU1〜BU3およびSCU1もこれと同
じ構成である。従って、BU1〜BU3およびSCU1
については図16および図17,18中の参照番号また
は記号を適宜変えて説明することにする。図18〜図2
4は、BUおよびSCUに含まれる主な回路の更に詳細
な構成を示したものであるが、回路自体は比較的簡単
で、その動作も以下の説明から明らかになると思われる
ので、特に参照することはしない。なお、以下の説明は
図9のデータ構造を前提としている。
【0046】図16で、バッファ制御アドレスレジスタ
(BCAR)211はローカル要求アドレスおよびリモ
ート要求アドレスの両方を受け取る。ローカル要求アド
レスは関連するIU(IU0)から供給され、リモート
要求アドレスはローカルSCU(SCU0)からの相互
探索ヒット要求線232に接続された相互探索アドレス
レジスタ(XSAR)210から供給される。BUに対
する全ての要求はBAA優先順序回路212へ送られ、
そこでどの要求が次にBCAR211へ入力されるかが
決定される。選択された要求は1サイクルの間だけBC
AR211に保持され、その後、ブロック取り出しアド
レスレジスタ(BFAR)222またはブロック記憶ア
ドレスレジスタ(BSAR)223へ転送されて、当該
要求に関するBUの全てのオペレーションが完了するま
で、そこに保持されている。
【0047】BCAR211へ送られる要求の大部分
は、ローカルIUからの取り出し要求または記憶要求
で、当該要求の論理アドレスを含んでいる。ローカル要
求でキャッシュミスが生じた場合あるいは適切な排他フ
ラグを持っていなかった場合には、既に説明したよう
に、BUはローカルSCUに向かう制御線230へBU
要求指令を出して、所望のデータを含むブロックを他の
何れかのキャッシュが保持しているかどうかを調べる相
互探索を開始させる。相互探索要求線232からXSA
Rを介してBCAR211へ送られてくる相互探索ヒッ
ト要求は、他のBU(BU1〜BU3)で開始される相
互探索の結果、BU(BU0)のFAAで相互探索ヒッ
トが検出されたときに出される。BUは相互探索ヒット
要求に応答して、要求されているブロックの吐き出し、
無効化、排他フラグの変更、データのアクセス等を行な
う。
【0048】ローカルIUからの要求でキャッシュミス
が生じた場合には、BCAR210にあったローカル要
求アドレスがBFAR222またはBSAR223へ転
送され、要求されたブロックが他のキャッシュまたはM
Sから自身のキャッシュに転送されてくるまでそこに保
持される。転送されてきたブロックにたいし、IUによ
って要求された取り出しまたは記憶が完了すると、BC
AR211は別の要求を処理可能になる。
【0049】BAA216およびその関連回路は、BC
AR211にある要求アドレスに対応するエントリがB
AA216にあるか否かを調べる。BAAおよびその関
連回路の構成を図19、図20、図21を用いて説明す
る。BCAR211にある要求アドレス(論理アドレ
ス)のビット1〜19がアドレス変換回路213へ送ら
れ、そこで得られた絶対ページフレームアドレスがBA
A216に送られる(データ線302)。また、通常ア
ドレス変換回路においてはアドレスが共有データである
かどうかを示すフラグ(Cビット)を持っていてこれに
より要求されたデータが共有データであるか非共有デー
タであるかを区別できる。従って、指令と共にこの共有
かどうかの情報が送られる。
【0050】次に、図19に示すようにBCAR211
のビット20〜25によりアドレス線301を介して6
4カラム中の一つが選択され、16クラス×2ローの絶
対アドレス(ビット1〜19、これはカラム番号とクラ
ス番号で示される各位置に格納されており、各ロー毎に
64×16の格納位置がある。)が読み出される[31
0a〜p,320a〜p]。読み出されたアドレスは比
較器330a〜pにより絶対ページフレームアドレスと
比較される(ロー0についてのみ図20に示す。ロー1
についても同様である)。グループ識別子(GID)は
ビット16〜19に対応するもので、BAA中のシノニ
ムクラスでヒットが検出された場合には、ヒットしたク
ラスの情報をエンコードすることによって得られ、その
シノニムクラスを識別するように設定される。セット識
別子(SID)はローに対応するもので、2つのローの
うちのどのエントリが要求アドレスと一致したのかを識
別する。選択回路でアドレスの一致即ちキャッシュヒッ
トが検出されるとデータの取り出しアドレスまたは記憶
アドレスがBFAR222またはBSAR223からア
ドレス線を通ってキャッシュへ送られ、データの取り出
しまたは記憶が行なわれる。
【0051】1つの要求アドレスでBAA216から選
択回路217へ読み出されるBAAエントリの最大数は
32であるが、その何れにおいてもキャッシュヒットが
検出されない場合には、キャッシュミスを示す信号がB
U要求指令回路219およびANDゲート235へ送ら
れる。また、ヒットしても適切な排他フラグを持ってい
ない場合にもこれを示す信号がBU要求指令回路219
およびANDゲート237へ送られる。BU指令回路2
19は図12に示した5個のフラグビットをBU要求指
令線220へ出力し、ANDゲート235はBFARに
あるブロックへ取り出しアドレスを同じ指令線に出力す
るか、ANDゲート237がBASRにあるブロック記
憶アドレスを同じ指令線に出力する。かくして、図12
に示すBU要求指令がローカルSCUに送られる。選択
回路は、他のキャッシュまたはMSから転送されてくる
ブロックをローカルキャッシュのどこに書き込むかを決
定するため、LRUのような置換手段に従って、クラス
およびローを選択し、それを識別するSIDおよびGI
DをBFARに書き込む。
【0052】図17で、SCU0は受け取ったBU要求
指令を、該指令を出したBUに関連する取り出しアドレ
スレジスタ(FAR)へ入れる。例えば、FAR0はB
U0からの全てのBU要求指令を受け取る。BU要求指
令は、その実行がSCU優先順序回路242によって許
可されるまで、関連するFARに保持されている。SC
U優先順序回路242はFAR0〜3,STAR0〜
3、リモートFARおよびリモートSTARにある要求
のうちから次に実行するものを選択する。
【0053】例えば、FAR0にあるBU要求指令が選
択されると、制御線240により、FAR0の出力が選
択され、XSSAR243およびANDゲート250の
方へ送られる。SCU優先順序回路242はこの時XS
SAR243およびANDゲート244へゲート信号を
印加しており、かくしてBU0の要求指令がXSSAR
243に書き込まれ、かつANDゲートからMS要求と
して出力される。ブロックが別のキャッシュにあれば、
前に出されたMS要求が図18の取消制御回路251に
より取り消され、要求されたデータはこのキャッシュか
ら得られる。
【0054】XSSAR243の内容を図22に示す。
XSSAR243は各々の要求者即ちローカルのBUお
よびIOP並びにリモートのBUおよびIOPに対応す
るビット位置を含み、そのうちの一つがセットされる。
例えば、ローカルのBU0に対するビット位置がセット
されると、このBU0の写しディレクトリを除くほかの
全ての写しディレクトリで探索が行なわれなければなら
ないことを示す。XSSAR243はSIDおよびGI
Dも保持する。XSSAR243に受け取られたBU要
求指令は内部制御線257を通って関連BU(BU2)
の写しディレクトリFAA2へ送られ、同時に相互探索
制御線258を通ってリモートSCU(SCU1)へ送
られる。SCU1では優先順序回路242によって許可
されると、この指令をリモートXSSAR245に受け
取り、関連するBU(BU1およびBU3)のFAA
(FAA1およびFAA3)の探索を行なう。
【0055】各FAAの出力側にはヒット論理回路25
9が接続されており、そこで相互探索ヒットが調べられ
る。ヒット論理回路259の詳細は図21に示してあ
る。ヒット論理回路259・0で相互探索ヒットが見つ
かると、XSSAR243にあった指令は、ヒット論理
回路259・0の相互探索ヒットの制御のもとに図18
のXSRR261・0へ移される。ヒット論理回路25
9・2の場合には、XSRR261・2へ移される。X
SRR261の詳細は図23に示してある。XSRR2
61はXSSAR243および関連するヒット論理回路
259の出力を組合せて相互探索ヒット要求指令を作
る。XSSAR243の信号はBU要求指令のCO/P
R状態を示し、関連するヒット論理回路259の出力は
FAA(H)におけるヒットブロックエントリ中のEX
/SH状態を示す。
【0056】XSRR261に対するこれらの入力は図
29a〜図29cの表1〜3に示してある。表の1番左
の列は、要求がCO型かPR型かおよび取り出しか記憶
かの区別を示す。2番目の列は自キャッシュにデータが
存在するかどうかと、存在した場合に共有されている可
能性がある(SH)か共有されていない(EX)かを示
す。3番目の列は、相互探索の結果(ヒット論理回路2
59)の出力を示す。どのFAAでも所望ブロックのア
ドレスが見つからなければ相互探索ミスが生じる。ヒッ
トの場合には、それを検出したFAAエントリ中のEX
フィールドの内容にしたがって、SHヒットあるいはE
Xヒットが知らされる。ブロックが見つかった場合に
は、MSではなくてこのブロックを記憶しているキャッ
シュからブロック取り出しが行なわれ、第4列に示すよ
うに、前にだされたMS要求が取り消される。5番目の
列は関連する2つのFAA(R)およびFAA(H)に
おける更新の様子を示している。各FAAを更新するた
めのFAA書き込み制御回路は図24に示してある。
【0057】このようにしてXSRR261はBU
(H)に対する要求指令を作成し、相互探索ヒット要求
線232を介してBU(H)へ送る。図16のBUOを
BU(H)とすると、相互探索ヒット要求線232上の
要求はXSAR210へ入力される。さらに、要求はB
AA優先順序回路212によって許可されると、BCA
R211へ送られ、それを用いてBAA216をアクセ
スする。BAA優先順序回路212が相互探索優先信号
を発生すると、相互探索ヒット応答回路215が起動さ
れて、相互探索ヒット要求に対するBUの応答を準備す
る。この応答は表1〜3の第7番目の列に示されてお
り、XSAR210からの信号にしたがって作成され
る。
【0058】相互探索ヒット応答回路は図14に示した
6ビットの信号を相互探索ヒット応答線233へ出力す
る。相互探索ヒット応答回路の詳細は図25に示してあ
る。BAA216で選択されたエントリの更新もBAA
書き込み制御回路214(詳細は図26)によって実行
される。この回路はXSAR210の内容によってエン
トリをSH型にするかまたは無効化するかまたはデータ
の書き込みを行なう。また、相互探索ヒット応答回路2
15によって吐き出しが要求されると、BAAにおいて
現在アドレス指定されているエントリ中のブロックアド
レスが選択回路217を経てBSARにロードされ、さ
らに信号線224上の吐き出し開始信号により吐き出し
制御回路220が起動されて、ORゲートを経てセレク
タによりBSAR223にあるアドレスがアドレス線を
通って関連するキャッシュへ送られる。
【0059】このキャッシュから送出されたブロックは
ローカルSCU内の対応するOBB0へ送られる。ま
た、相互探索ヒット応答回路215によってデータの書
き込みが要求されると、BAAにおいて現在アドレス指
定されているエントリ中のブロックアドレスが選択回路
217を経てBSARにロードされ、さらに信号線22
5上の書き込み開始信号によりキャッシュ書き込み制御
回路221が起動されて、ORゲートを経てセレクタに
よりBSAR223にあるアドレスがアドレス線を通っ
て関連するキャッシュへ送られる。これによりローカル
SCU内の対応するOBB0のデータがこのキャッシュ
へ書き込まれる。信号線224上の吐き出し開始信号は
ANDゲート236にも印加されて、BSARからのア
ドレスを信号線230の方へ通過させる。このアドレス
は相互探索ヒット応答信号線上の信号と一緒になって、
ローカルSCUに相互探索ヒット応答を与える。
【0060】ローカルSCU(SCU0)は相互探索ヒ
ット応答線233・0上の信号を図18のBU0相互探
索ヒット応答制御回路260・0に受け取る。この回路
はOBB0を起動して、BU0のキャッシュからBU0
データ線267・0を通って送られてくるブロックを受
け取らせる。BU2のための回路266・2およびOB
B2も同じである。BU0相互探索ヒット応答制御回路
266・0は別の出力線271・0へ、指令応答線制御
回路(CRBC)272(詳細は図27)を起動する信
号を出力する。CRBC272は相互探索ヒット応答を
供給したBUとは異なる要求元へ、図15のような3ビ
ットの指令応答を送る。
【0061】この指令応答の第1ビットが指令応答線2
31が活動状態にあることを示し、第2ビット(CH)
は要求者へ転送されたブロックが変更されてMSにある
オリジナルブロックとは異なっていることを示す。ま
た、第3ビット(ST)は記憶指令に対する応答である
ことを示す。
【0062】要求者がBU0であれば、CRBC272
は制御線231・0へ指令応答を出す。BU0に受け取
られた指令応答は、図28に詳細を示す指令応答回路2
18中の対応するトリガをセットする。BU0は最初に
取り出し要求を出したときにその要求がCO型であるか
PR型であるかを図28中の対応するトリガに記憶して
おり、その内容と指令応答に基づいて、転送されてきた
ブロックに対応するBAAエントリ中の排他フラグのセ
ット/リセットを制御する。BAA書き込み制御回路2
14(詳細は図26)は、相互探索ヒット応答回路21
5および指令応答回路215および指令応答回路218
からの信号を選択されたBAAエントリ中の対応するフ
ラグフィールドに書き込む。
【0063】BAAにおいて割り振られたエントリは、
送信OBBから受け取ったブロックを関連するキャッシ
ュのどこに書き込むかを決める。このOBB−キャッシ
ュ間転送のためのデータ線は、送信BUに関連する相互
探索ヒット応答制御回路266・0または266・2に
よって選択される。相互探索ヒット応答制御回路266
・0または266・2は、制御線271・0または27
1・2からローカルSCU0のCRBC272へ制御信
号を送るか、制御線276・0または276・2からリ
モートSCU1のCRBC272へ制御信号を送る。例
えば、BU0相互探索ヒット応答制御回路266・0か
ら信号線276・0を経由してリモートSCU1のCR
BC272へ送られる信号は、OBB0からBU1また
はBU3, IOP1,IOP3へのゲート動作を示
す。信号線271・0上の信号は、OBB0からBU2
またはIOP0またはIOP2へのゲート動作を示す。
【0064】SCU1にあるOBB1またはOBB3か
ら BU0,BU2またはIOP0,IOP2への転送
においては、制御線276・1上の信号がOBB1から
のゲート動作を示し、制御線276・3上の信号がOB
B3からのゲート動作を示す。CRBC272の構成は
両SCUで同じである。CRBC272は図15のよう
な指令応答信号をローカルBUまたはローカルIOPへ
送る。前述のように、CRBCからの指令応答信号は信
号線231通って指令応答回路218に受け取られ、そ
の結果BAA書き込み制御回路214よってBAA21
6内の選択されたエントリが更新される。エントリの更
新にはその時にBCAR211にあるアドレスが使用さ
れる。通常は、アクセスされる度ごとにLRU等の規則
により更新する順序を管理している。本発明におけるよ
り望ましい態様では、相互探索ヒット要求の場合には更
新を抑止する。このためには、相互探索ヒットの場合に
通常行なっている更新順序の更新の起動をかけなければ
良い。こうすることで、常に更新順序を更新する場合と
比較して不必要なデータがキャッシュ中に存在しつづけ
ることが避けられるため、より性能を向上させることが
できる。
【0065】相互探索ヒット応答制御回路266・0ま
たは266・2から信号線281・0または281・2
へ出力される信号は、各々のOBBから要求元のBUへ
のブロック転送を制御する。例えば、OBB0からのブ
ロック転送は、信号線281・0と合わせてOBB0の
4ビットの出力カウンタを起動することにより開始され
る。OBB0は256バイトを記憶しており、出力カウ
ンタを1ずつ進めることによってそれらがデータ切り替
え回路274へ読み出されるデータ切り替え回路274
は、両SCUの相互探索ヒット応答制御回路266およ
びMS応答制御回路269からのゲート制御信号にした
がって各々のデータをローカルのBU,IOPまたはM
Sへ向ける。
【0066】本実施例では、各OBBはローカルSCU
にあるデータ切り替え回路274に接続され他データ線
283のほかに、リモートSCUにあるデータ切り替え
回路274に接続されたデータ線286も持っている。
ローカルBUまたはIOPがデータを受け取るのであれ
ば、そのデータはOBB0またはOBB2からデータ線
283・0またはデータ線283・2を通ってローカル
SCU0のデータ切り替え回路274へ送られる。デー
タ切り替え回路274は受け取ったデータを、相互探索
ヒット応答制御回路266またはMS応答制御回路26
9からのゲート制御信号にしたがって、ローカルBU,
IOPまたはMSに向ける。データをリモートのBU,
IOPまたはMSへ送る必要がある場合には、OBB0
またはOBB2はそのデータを線286・0または28
6・2へ出力する。線286はリモートSCU1のデー
タ切り替え回路274に接続されており、そこで同様な
ゲート制御信号の制御のもとに目的とするBU,IOP
またはMSへデータが転送される。
【0067】以上のように制御を行なう手段を設けるこ
とにより、効率の良い記憶一致制御を行なうことがで
き、マルチプロセッサシステムの性能を向上させること
ができる。また、前述のように共有データか非共有デー
タかの判定は、アドレス変換回路に含まれる共有ビット
(Cビット)を使うことで容易に判定できるが、命令ご
とに指定しても良い。また、エントリごとに1ビットの
共有ビットを設け、それを特定の命令を使ってデータを
アクセスするときのみセット/リセットしても良い。そ
して、共有かどうの判定は、アドレスから求めるのでは
なく、このビットを用いて行なっても良い。また、本実
施例では相互探索でヒットした場合にはMSへの要求を
取り消すことでキャッシュ内のブロックの変更が行なわ
れていなくてもキャッシュからデータ転送を行なってい
るが、ヒットしても変更されていなければMSへの要求
を取り消さない制御をしても良い。この場合にはキャッ
シュからのデータ転送でなく、MSからデータが転送さ
れることになる。
【0068】
【発明の効果】本発明の記憶一致制御方法では、共有デ
ータに関しては、そのデータを持っているキャッシュに
も書き込みに行くことで性能の低下を防ぎ、非共有デー
タに関しては他のプロセッサのキャッシュの対応するデ
ータをキャンセルすることでキャッシュを有効に使用す
ることができ、キャッシュのヒット率を上げる効果があ
る。また、他のプロセッサのキャッシュに書き込む場合
でも、更新順序を更新しないことにより、さらに不要な
データがキャッシュ中に存在することによるキャッシュ
の効率の低下を防ぐことができる。また、これらを用い
たマルチプロセッサシステムは同様の理由により性能を
向上させることができる。
【図面の簡単な説明】
【図1】本発明における記憶一致制御方法の全体の流れ
を示す図である。
【図2】本発明に従うマルチプロセッサシステムの構成
を示すブロック図である。
【図3】共有領域に対する取り出し要求の場合の処理の
流れを示す図である。
【図4】非共有領域に対する取り出し要求の場合の処理
の流れを示す図である。
【図5】共有領域に対する記憶要求の場合の処理の流れ
を示した図である。
【図6】非共有領域に対する記憶要求の場合の処理の流
れを示した図である。
【図7】共有領域に対する取り出し要求の場合のさらに
望ましい態様の処理の流れを示す図である。
【図8】共有領域に対する記憶要求の場合のさらに望ま
しい態様の処理の流れを示した図である。
【図9】マルチプロセッサシステムにおけるデータ線構
造の一例を示す図である。
【図10】マルチプロセッサシステム内での各種制御信
号のやり取りを示す図である。
【図11a】TLBの各エントリのフォーマットを示す
図である。
【図11b】BAAエントリおよびFAAエントリのフ
ォーマットを示す図である。
【図12】BU要求指令のフォーマットを示す図であ
る。
【図13】相互探索ヒット要求のフォーマットを示す図
である。
【図14】相互探索ヒット応答のフォーマットを示す図
である。
【図15】指令応答のフォーマットを示す図である。
【図16】BUの構成を示す図である。
【図17】SCUの構成を示す回路図である。
【図18】SCUの構成を示す回路図である。
【図19】BAAの構成を示す回路図である。
【図20】BAAの構成を示す回路図である。
【図21】ヒット論理回路259の詳細な回路図であ
る。
【図22】XSAR243の詳細な回路図である。
【図23】XSRR261の詳細な回路図である。
【図24】FAA書き込み制御回路の詳細な回路図であ
る。
【図25】相互探索ヒット応答回路の詳細な回路図であ
る。
【図26】BAA書き込み制御回路の詳細な回路図であ
る。
【図27】CRBC272の詳細な回路図である。
【図28】指令応答回路の詳細な回路図である。
【図29a】キャッシュ間転送における各種状態を要約
して示した表1を示す図である。
【図29b】キャッシュ間転送における各種状態を要約
して示した表2を示す図である。
【図29c】キャッシュとチャネル間の転送における各
種状態を要約した表3を示す図である。
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI G06F 12/12 505 G06F 12/12 505 551 551 (56)参考文献 特開 平2−238534(JP,A) 特開 昭58−118083(JP,A) 特開 平2−267658(JP,A) 特開 昭58−35784(JP,A) 特開 平4−233051(JP,A) 特開 平3−58151(JP,A) 特開 昭57−94973(JP,A) 特開 平1−133162(JP,A) 特開 平4−5740(JP,A) 特開 平4−5739(JP,A) 特開 平3−40046(JP,A) 特開 平2−186456(JP,A) 特開 平4−151751(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 12/08 - 12/12

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 キャッシュを有する複数のプロセッサ
    と、該プロセッサによって共有される主記憶を備えるマ
    ルチプロセッサシステムにおける記憶一致制御方法にお
    いて、 いずれかのプロセッサがデータを自プロセッサのキャッ
    シュに書き込む際に該データが共有データであるか否か
    を判定し、 前記データに対応するブロックの各キャッシュにおける
    状態を判定し、 前記データに対応するブロックが他のプロセッサのキャ
    ッシュに存在する場合に、そのブロックが共有データの
    ブロックであるときは自プロセッサのキャッシュと他プ
    ロセッサのキャッシュとも更新し、共有データのブロッ
    クでないときは自プロセッサのキャッシュを更新し他プ
    ロセッサのキャッシュに存在する前記データに対応する
    ブロックを無効にし、 他プロセッサのキャッシュを更新する場合に、該キャッ
    シュのキャッシュブロック置換時の優先順位を変更しな
    いようにしたことを特徴とする記憶一致制御方法。
  2. 【請求項2】 キャッシュを有する複数のプロセッサ
    と、該プロセッサによって共有される主記憶を備えるマ
    ルチプロセッサシステムにおいて、 いずれかのプロセッサがデータを自プロセッサのキャッ
    シュに書き込む際に、前記データが共有データであるか
    否かを判定する手段と、 前記データに対応するブロックの各キャッシュにおける
    状態を判定する手段と、 前記データに対応するブロッ
    クが他のプロセッサのキャッシュに存在する場合に、そ
    のブロックが共有データのブロックであるときは自プロ
    セッサのキャッシュと他プロセッサのキャッシュとも更
    新する手段と、共有データのブロックでないときは自プ
    ロセッサのキャッシュを更新し他プロセッサのキャッシ
    ュに存在する前記データに対応するブロックを無効にす
    る手段と、 他プロセッサのキャッシュを更新する場合に、該キャッ
    シュのキャッシュブロック置換時の優先順位を変更しな
    い手段を備えたことを特徴とするマルチプロセッサシス
    テム。
JP08054891A 1991-03-20 1991-03-20 記憶一致制御方法およびそれを用いたマルチプロセッサシステム Expired - Fee Related JP3213758B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP08054891A JP3213758B2 (ja) 1991-03-20 1991-03-20 記憶一致制御方法およびそれを用いたマルチプロセッサシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP08054891A JP3213758B2 (ja) 1991-03-20 1991-03-20 記憶一致制御方法およびそれを用いたマルチプロセッサシステム

Publications (2)

Publication Number Publication Date
JPH04293137A JPH04293137A (ja) 1992-10-16
JP3213758B2 true JP3213758B2 (ja) 2001-10-02

Family

ID=13721400

Family Applications (1)

Application Number Title Priority Date Filing Date
JP08054891A Expired - Fee Related JP3213758B2 (ja) 1991-03-20 1991-03-20 記憶一致制御方法およびそれを用いたマルチプロセッサシステム

Country Status (1)

Country Link
JP (1) JP3213758B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5104139B2 (ja) * 2007-09-07 2012-12-19 富士通株式会社 キャッシュシステム

Also Published As

Publication number Publication date
JPH04293137A (ja) 1992-10-16

Similar Documents

Publication Publication Date Title
US7032074B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
US5197139A (en) Cache management for multi-processor systems utilizing bulk cross-invalidate
US8909871B2 (en) Data processing system and method for reducing cache pollution by write stream memory access patterns
US6704841B2 (en) Method and apparatus for facilitating speculative stores in a multiprocessor system
EP1399823B1 (en) Using an l2 directory to facilitate speculative loads in a multiprocessor system
JP2819982B2 (ja) 範囲指定可能なキャッシュ一致保証機能を有するマルチプロセッサシステム
US5119485A (en) Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation
US6658538B2 (en) Non-uniform memory access (NUMA) data processing system having a page table including node-specific data storage and coherency control
US6718839B2 (en) Method and apparatus for facilitating speculative loads in a multiprocessor system
US5450563A (en) Storage protection keys in two level cache system
EP0062165A2 (en) Multiprocessors including private and shared caches
US20020083269A1 (en) Cache system
JPS6255187B2 (ja)
US8700863B2 (en) Computer system having a cache memory and control method of the same
US5263144A (en) Method and apparatus for sharing data between processors in a computer system
JPH0340046A (ja) キャッシュメモリ制御方式および情報処理装置
US5737575A (en) Interleaved key memory with multi-page key cache
US5678025A (en) Cache coherency maintenance of non-cache supporting buses
JPH04336641A (ja) 処理システムにおける使用のためのデータキャッシュおよび方法
US6934810B1 (en) Delayed leaky write system and method for a cache memory
US6484241B2 (en) Multiprocessor computer system with sectored cache line system bus protocol mechanism
JP3213758B2 (ja) 記憶一致制御方法およびそれを用いたマルチプロセッサシステム
JPH0816474A (ja) マルチプロセッサシステム
US6553462B2 (en) Multiprocessor computer system with sectored cache line mechanism for load and store operations
US5636365A (en) Hierarchical buffer memories for selectively controlling data coherence including coherence control request means

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees