JP2001034597A - キャッシュメモリ装置 - Google Patents

キャッシュメモリ装置

Info

Publication number
JP2001034597A
JP2001034597A JP11206975A JP20697599A JP2001034597A JP 2001034597 A JP2001034597 A JP 2001034597A JP 11206975 A JP11206975 A JP 11206975A JP 20697599 A JP20697599 A JP 20697599A JP 2001034597 A JP2001034597 A JP 2001034597A
Authority
JP
Japan
Prior art keywords
cache
data
hit
state
block
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.)
Withdrawn
Application number
JP11206975A
Other languages
English (en)
Inventor
Mitsuru Sato
充 佐藤
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP11206975A priority Critical patent/JP2001034597A/ja
Publication of JP2001034597A publication Critical patent/JP2001034597A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】完全なハードウェアによって無効化方式と更新
方式を自動的に切り替え、適切な一貫性管理方式を選択
できるようにすること。 【解決手段】プロセッサ1とキャッシュ2が組となった
ものの複数組と主記憶装置5aとが相互結合網を介して
接続された構成をとる並列計算機において、前記キャッ
シュ2にキャッシュコントローラ21を備え、該キャッ
シュコントローラ21が、一度に転送するデータ単位毎
に無効化方式と更新方式の一貫性管理方式を切り替える
ことのできる構成とし、前記キャッシュコントローラ2
1は、プロセッサ1からのデータ書き込み時に、前記一
貫性管理方式の切り替え情報をデータ転送時に同時に受
け取る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、並列計算機のプロ
セッサに付随するメインメモリ(主記憶)のメモリアク
セス高速化のためのキャッシュメモリ装置に関する。
【0002】
【従来の技術】共有メモリ型並列計算機におけるキャッ
シュメモリ(キャッシュ)は、単一プロセッサシステム
のキャッシュに比べてキャッシュの一貫性管理の問題が
発生する。ここで図14に示すような、プロセッサとキ
ャッシュが共有バスによって接続されたシステムを例に
とって説明する。
【0003】(1):共有バス型共有メモリ並列計算機
の説明 図14は従来の共有バス型共有メモリ並列計算機の説明
図である。図14において、共有バス型の共有メモリ並
列計算機には、プロセッサ(Processor )1A、1B、
・・・1N、キャッシュ(Cache )2A、2B、・・・
2N、共有バス(Shared Bus )3、主記憶(メインメモ
リ:Main Memory )5が設けてある。
【0004】プロセッサ1A、1B、・・・1Nは、接
続されたそれぞれのキャッシュ2A、2B、・・・2N
を介して主記憶5にアクセスするものである。キャッシ
ュ2A、2B、・・・2Nは、使われる可能性の高い主
記憶5のデータを保持するものである。共有バス3は、
それぞれのキャッシュ2A、2B、・・・2Nが共通に
使用するバスである。主記憶5は、データを記憶する記
憶装置である。
【0005】図14で、プロセッサ1Aに付随するキャ
ッシュ2Aがすでに主記憶5のコピーを持っており、同
じデータを他のプロセッサ1Bがアクセスしようとした
場合を考える(図15参照)。
【0006】(2):キャッシュのコヒーレンス(一貫
性)管理の説明 単一のプロセッサの場合は、プロセッサ1Bに付随する
キャッシュは単純に主記憶(メモリ)上のデータのコピ
ーをキャッシュに保存するだけでよいが、同様の方法を
図14に示す並列計算機でも用いると問題が生じる。
【0007】図15は従来のキャッシュのコヒーレンス
管理の説明図である。図15において、今、プロセッサ
1Bに付随するキャッシュ2Bにデータが格納された後
に、プロセッサ1Aがデータを更新したとする。キャッ
シュ2Aがライトバックキャッシュであると、更新され
たデータは主記憶5に書き戻されず、キャッシュの中に
格納される(主記憶は、後の適当な時間に更新され
る)。
【0008】従って、プロセッサ1B及びプロセッサ1
Bに付随するキャッシュは、データが更新されたことを
知ることができない。そのため、プロセッサ1Bから当
該データに対する読み出し要求が発生しても、プロセッ
サ1Bに付随するキャッシュ2Bはいつまでも自分が保
持する更新前の古いデータを返し続けることになる。
【0009】このような状態になると、プロセッサ1A
及びプロセッサ1Aに付随するキャッシュ2Aが参照す
る値とプロセッサ1B及びそれに付随するキャッシュ2
Bが参照する値の間で不一致が起こり、プログラマが期
待する動作とは異なる動作を行う可能性がある。このよ
うなことを防ぐために、複数のキャッシュ間でデータを
一致させるための仕組みが必要になる。
【0010】データを一致させるためには、キャッシュ
上のデータまたは主記憶5上のデータに状態を持たせ、
状態に応じて他のキャッシュと連携しなくてはならな
い。この状態の持たせかた、連携の仕方には様々な種類
がある。
【0011】:状態の持たせかたの説明 状態の持たせかたとして一般には、MOESIと呼ばれ
る方式やMESIと呼ばれる方式が用いられることが多
い。これらの状態をM:Modified 、O:Owned、E:
Exclusive、S:Shared 、I:Invalidの各状態に分
類し、状態とリクエストに応じて処理をする方式であ
る。
【0012】例えば、MESI方式を用いたキャッシュ
で、S状態にあるデータに対する書き込み要求が発生す
ると、他にも同じデータのコピーを保持しているキャッ
シュが存在することがわかる。このため、書き込み前に
何らかの一貫性管理方式を用いて、他のコピーとの一貫
性を保持しなくてはならないことがわかる。
【0013】:無効化方式(Invalidate)と更新方式
(Update)の説明 複数のキャッシュ間で一貫性を保持するための方式とし
ては、一般に無効化方式と更新方式のどちらかが用いら
れている。
【0014】(無効化方式の説明)無効化方式は、キャ
ッシュのデータを更新する前に、他のキャッシュにある
コピーを全て無効化し、無効化が終了した後にデータを
更新する方式である。このようにすると他のプロセッサ
がデータを読み出そうとした時には必ずキャッシュミス
が発生し、最新のデータを要求するので、他のプロセッ
サが古いデータを読んでしまうということを防ぐことが
できる。
【0015】図16は従来の無効化方式の説明図であ
る。図16の上図において、プロセッサ1Aに付随する
キャッシュ2A、プロセッサ1Bに付随するキャッシュ
2B、プロセッサ1Cに付随するキャッシュ2C、プロ
セッサ1Nに付随するキャッシュ2Nがそれぞれ主記憶
の同じコピーデータを保持しているものとする。この
時、例えばプロセッサ1Cからキャッシュ2Cが保持す
るコピーデータに対する書き込み要求があると、キャッ
シュ2Cが他のキャッシュにあるコピーを全て無効化す
る。そして、図16の下図に示すように、無効化が終了
した後にデータを更新するものである。
【0016】(更新方式の説明)更新方式は、無効化方
式とは違い、要求元のキャッシュのデータを更新すると
同時に、他のキャッシュにも更新すべきデータを送り、
コピーを持っているキャッシュ全てで同じ更新動作を行
う方式である。この方式を用いると、常にキャッシュに
あるデータは最新のものとなる。
【0017】図17は従来の更新方式の説明図である。
図17の上図において、プロセッサ1Aに付随するキャ
ッシュ2A、プロセッサ1Bに付随するキャッシュ2
B、プロセッサ1Cに付随するキャッシュ2C、プロセ
ッサ1Nに付随するキャッシュ2Nがそれぞれ主記憶の
同じコピーデータを保持しているものとする。この時、
例えばプロセッサ1Cからキャッシュ2Cが保持するコ
ピーデータに対する書き込み要求があると、キャッシュ
2Cが自分のキャッシュを更新すると同時に、他のキャ
ッシュにあるコピーデータを全て更新する。このため、
図17の下図に示すように、常にキャッシュにあるデー
タは最新のものとなる。
【0018】(フォールスシェアリング(false sharin
g )の説明)無効化方式と更新方式は、それぞれ利害得
失があり、どちらか片方のみを用いていると、場合によ
っては問題となる場合がある。例えば、無効化方式を用
いているシステムにおいて、2つのプロセッサが、同一
データブロック(キャッシュは主記憶から一度にブロッ
ク単位でデータをコピーする)の中のそれぞれ違うデー
タを利用している場合(これをfalse sharing と呼ぶ)
には、データは両方のプロセッサのキャッシュでS状態
として保持されているので、プロセッサが書き込みする
たびに他方のデータブロックが無効化される。
【0019】従って、2つのプロセッサが双方ともこの
データに対して何度も書き込みを行うと、データの読み
出し、無効化が交互に発行されることになる。これは更
新方式を用い、データブロックのうち書き換えデータの
みを更新する方法を用いることによって避けることがで
きる。
【0020】図18は従来の並列計算機におけるfalse
sharing の説明図である。図18において、プロセッサ
1Aに付随するキャッシュ2A、プロセッサ1Bに付随
するキャッシュ2Bがそれぞれ主記憶の同じデータブロ
ックを保持しているものとする。
【0021】この時、例えばプロセッサ1Aからキャッ
シュ2Aが保持するブロックのデータadr0に書き込みを
行う場合、プロセッサ1Bに付随するキャッシュ2Bの
ブロックを無効化する。また、プロセッサ1Bからキャ
ッシュ2Bが保持するブロックのデータadr1に書き込み
を行う場合は、プロセッサ1Aに付随するキャッシュ2
Aのブロックを無効化する。
【0022】一方で、更新方式を用いていると、一度読
んだだけで既に保持している必要のなくなったデータに
対してまで、他のプロセッサで更新が発生するたびに更
新メッセージが届くことになり、無駄なデータ転送が頻
発することになる。また、ライトバックキャッシュであ
れば、同一ブロック内を何度更新しても最終的なライト
バックは一度で済むが、状態がSのブロックに対する書
き込みの場合は、書き込みが発生するたびに更新動作が
行われるので、バスに対するトラフィックが多くなり、
システムのパフォーマンスを低下させる原因となる。
【0023】そのため、従来よりデータによって、無効
化方式と更新方式を使い分ける手法がいくつか考えられ
てきた。
【0024】最初に無効化方式と更新方式を使い分ける
手法が導入されたのは、ソフトウェアの分野である。ソ
フトウェアで仮想的な共有メモリを実現しているシステ
ムにおいて、ノード間でのデータのコンシステンシ(一
致性)を管理する手法として、データのアクセスパター
ンに応じたコンシステンシ管理を行うという手法が複数
提案されている。これらは、プログラムがどのようにデ
ータを使うかを予め指定したり、コンパイラやランタイ
ムによって判定し、有効なコンシステンシ管理を選択す
るというものである。
【0025】一方で、ハードウェアによる手法について
は、ソフトウェアによる手法ほど確立されていない。こ
れは、ソフトウェアで提案された手法がどれも複雑なも
のであり、そのままハードウェアに実装するのが困難だ
からである。これは、ソフトウェアによるデータ共有が
非常に重いシステムであるため、多少のオーバーヘッド
がかかっても効率的にデータを扱いたいというものであ
るのに対して、ハードウェアによるデータ共有は、非常
に密で、小さなオーバーヘッドが既システム性能の低下
に結び付いてしまうという違いによる。従って、これま
でのハードウェアによる切り替え方法としては、ハード
ウェア側では切り替える手段のみを提供し、実際の切り
替えはソフトウェアにまかせる手法が主であった。
【0026】
【発明が解決しようとする課題】前記従来のものには、
次のような課題があった。
【0027】ソフトウェアに変更が必要となり、従来の
ソフトウェアをそのまま高速に実行することができない
ものであった。また、ソフトウェアによる切り替え判定
には、複雑な処理が必要となり、データアクセスのたび
にその複雑な処理を行っていては、プログラム実行のパ
フォーマンスを低下させることになっていた。
【0028】本発明では、完全なハードウェアによって
無効化方式と更新方式を自動的に切り替え、適切なコン
システンシ管理手法を選択できるようにすることを目的
とする。
【0029】
【課題を解決するための手段】図1は本発明の原理説明
図である。図1中、1はプロセッサ、2はキャッシュ、
5aは主記憶装置、21はキャッシュコントローラであ
る。
【0030】本発明は前記従来の課題を解決するため次
のように構成した。
【0031】(1):プロセッサ1とキャッシュ2が組
となったものの複数組と主記憶装置5aとが相互結合網
を介して接続された構成をとる並列計算機において、前
記キャッシュ2にキャッシュコントローラ21を備え、
該キャッシュコントローラ21が、一度に転送するデー
タ単位毎に無効化方式と更新方式の一貫性管理方式を切
り替えることのできる構成とし、前記キャッシュコント
ローラ21は、プロセッサ1からのデータ書き込み時
に、前記一貫性管理方式の切り替え情報をデータ転送時
に同時に受け取る。
【0032】(2):前記(1)のキャッシュメモリ装
置において、プロセッサ1によって書き込みが行われ主
記憶装置5aのデータとは一致しないダーティ状態で保
持するデータに対して、他のキャッシュから読み出し要
求が発生した時、そのデータに対する書き込みの前記一
貫性管理方式として更新方式を指示する。
【0033】(3):前記(2)のキャッシュメモリ装
置において、前記データ単位毎に、前記ダーティ状態で
保持するデータに対する転送が行われた回数を示す回数
情報を設け、この回数情報が2回以上の決められた回数
の時、そのデータに対する書き込みの前記一貫性管理方
式として更新方式を指示する。
【0034】(4):プロセッサ1とキャッシュ2が組
となったものの複数組と主記憶装置5aとが相互結合網
を介して接続された構成をとる並列計算機において、前
記キャッシュ2にキャッシュコントローラ21を備え、
該キャッシュコントローラ21が、一度に転送するデー
タ単位毎に無効化方式と更新方式の一貫性管理方式を切
り替えることのできる構成とし、前記キャッシュコント
ローラ21は、プロセッサ1からのデータ書き込み発生
時に、そのデータが更新方式で一貫性管理を行うもので
あった場合、実際に更新動作を行う前に、各キャッシュ
2の状態を検査し、そのまま更新方式を用いるか、無効
化方式に切り替えるかを決定する。
【0035】(5):前記(4)のキャッシュメモリ装
置において、前記各キャッシュ2の状態の検査時に、前
記各キャッシュ状態の通知を受ける際、前記データの使
用状況により決まるヒットレベルの通知を受け、前記キ
ャッシュコントローラ21は、前記ヒットレベルに応じ
て、そのまま更新方式を用いるか、無効化方式に切り替
えるかを決定する。
【0036】(6):前記(5)のキャッシュメモリ装
置において、前記ヒットレベルとして、セットアソシア
ティブキャッシュの場合の最近にアクセスされたデータ
を上位とするLRUの順位を用いる。
【0037】(作用)前記構成に基づく作用を説明す
る。
【0038】キャッシュコントローラ21が、一度に転
送するデータ単位毎に無効化方式と更新方式の一貫性管
理方式を切り替えることのできる構成とし、前記キャッ
シュコントローラ21で、プロセッサ1からのデータ書
き込み時に、前記一貫性管理方式の切り替え情報をデー
タ転送時に同時に受け取る。このため、他のキャッシュ
の履歴も受け取ることができて、無効化方式あるいは更
新方式を適切に選択することができる。
【0039】また、プロセッサ1によって書き込みが行
われ主記憶装置5aのデータとは一致しないダーティ状
態で保持するデータに対して、他のキャッシュから読み
出し要求が発生した時、そのデータに対する書き込みの
前記一貫性管理方式として更新方式を指示する。このた
め、ダーティ状態で転送されるデータは、アクセス頻度
の高いデータであるので、適切な一貫性管理を行うこと
ができる。
【0040】さらに、前記データ単位毎に、前記ダーテ
ィ状態で保持するデータに対する転送が行われた回数を
示す回数情報を設け、この回数情報が2回以上の決めら
れた回数の時、そのデータに対する書き込みの前記一貫
性管理方式として更新方式を指示する。このため、アク
セス頻度の高いデータを正確に発見でき、適切な一貫性
管理を行うことができる。
【0041】また、キャッシュコントローラ21が、一
度に転送するデータ単位毎に無効化方式と更新方式の一
貫性管理方式を切り替えることのできる構成とし、前記
キャッシュコントローラ21で、プロセッサ1からのデ
ータ書き込み発生時に、そのデータが更新方式で一貫性
管理を行うものであった場合、実際に更新動作を行う前
に、各キャッシュ2の状態を検査し、そのまま更新方式
を用いるか、無効化方式に切り替えるかを決定する。こ
のため、不必要な更新動作を避けることができる。
【0042】さらに、各キャッシュ2の状態の検査時
に、各キャッシュ状態の通知を受ける際、前記データの
使用状況により決まるヒットレベルの通知を受け、キャ
ッシュコントローラ21で、前記ヒットレベルに応じ
て、そのまま更新方式を用いるか、無効化方式に切り替
えるかを決定する。このため、より正確にアクセス頻度
の高いデータのみに更新動作を行うことができる。
【0043】また、ヒットレベルとして、セットアソシ
アティブキャッシュの場合の最近にアクセスされたデー
タを上位とするLRUの順位を用いる。このため、キャ
ッシュデータの追い出し順序を決定するために装備され
たLRUの順位を用いて、付加的なハードウェアを不要
とすることができる。
【0044】
【発明の実施の形態】(1):本発明の全体の説明 本発明では、無効化方式と更新方式を相互に自動的に切
り替えるための手段として、無効化方式から更新方式へ
の切り替え手段と、更新方式から無効化方式への切り替
え手段の2つを用意するものである。
【0045】先ず、無効化方式と更新方式をデータによ
って使い分けることができるように、キャッシュコント
ローラに無効化方式のためのコントローラと更新方式の
ためのコントローラの両方を用意、あるいは両方の機能
を備えたコントローラを用意する。更に、各データブロ
ック毎に、このデータブロックが共有状態(S状態)に
ある時、プロセッサから書き込みが発生した場合に、無
効化方式を用いて一貫性管理を行うのか、更新方式を用
いて一貫性管理を行うのかを指示するビット(一貫性管
理方式選択ビット)を付加する。これにより、キャッシ
ュコントローラは、プロセッサからの書き込みが発生す
ると、キャッシュブロックの状態と一貫性管理方式選択
ビットを参照し、無効化方式あるいは更新方式を選択す
ることができる。
【0046】:無効化方式(無効化型)から更新方式
(更新型)への切り替えの説明 先ず、無効化方式から更新方式への切り替え手段とし
て、データ読み出し時に、外部から指示する方式を用意
する。これは更新方式に適したデータかどうかは、デー
タを保持しているプロセッサのみでは判別しにくく、他
のプロセッサとの関連をしらなくてはならないからであ
る。そのため、各キャッシュでは、データブロックの履
歴を管理しておき、データを渡すときにこの履歴も同時
に渡して、次に受け取ったキャッシュが無効化方式から
更新方式へ切り替えるかどうかの判断の参考とできるよ
うにする。
【0047】具体的には、この切り替えの履歴としては
ダーティブロック(dirty block )に対するリード(re
ad)を行った回数を用いる。即ち、各データブロックに
はダーティブロックに対するリードを何回行ったかを保
持する領域を置き、この情報を元にデータ送信時に更新
方式への切り替えを指示する。
【0048】無効化方式より更新方式が適しているデー
タというのは、あるプロセッサが書き込みをした後、そ
の情報を他のプロセッサが参照することが頻繁に起こる
データである。従って、書き込みが行われた状態に対す
る参照が頻繁であるデータを更新方式に適したデータと
みなす。これはデータを保持しているキャッシュそのも
のが判断できることではなく、これまでの履歴を参照し
なくては判断できない。そのため、キャッシュにデータ
を取り込む際に、これまでの履歴を同時に取り込み、そ
の履歴情報にしたがって無効化方式から更新方式への切
り替えを行う。
【0049】具体的な切り替えの基準としては、そのデ
ータがダーティ(dirty )状態(プロセッサによって書
き込みが行われた状態で、まだ主記憶には書き込まれて
いない)での転送が何回連続して行われたかという回数
を用いる。回数が何回を越えたら切り替えるかという閾
値には、1回、2回、n回という方法が考えられる。
【0050】・閾値が1回の場合の説明 閾値を1回とした場合は、キャッシュライン(データブ
ロック)には何の付加ビットも用いることなく実現可能
である。即ち、あるプロセッサに付随するキャッシュが
データ読み出しを行った時、読み出す相手が他のプロセ
ッサのキャッシュであり、そのキャッシュがダーティ状
態でデータを保持していたとする。この時、データの送
り手であるキャッシュが、現データがダーティ状態であ
るという情報と共にデータの受け手であるキャッシュに
データを転送するか、受け手が予めダーティ状態のデー
タ(ダーティデータ)がやってくることを知っておくこ
とによって、データの受け取り手がダーティデータの転
送であることを認識する。データの受け手であるキャッ
シュは、このデータがダーティであるという情報を元
に、データを格納するときに一貫性管理方式選択ビット
を更新方式に設定する。これによって、ダーティ状態で
ある時に1回読み出しが行われた時に無効化方式から更
新方式への切り替えが実現できる。
【0051】・閾値が2回の場合の説明 閾値を2回とした場合は、各データブロック毎に付加ビ
ットが1ビット必要になる。このビットは、先に述べた
ようなダーティ状態での転送が発生した場合に設定され
るビットである。さて、このビット(ダーティ転送ビッ
ト)が設定されたデータに対してプロセッサが書き込み
を発生し、このデータブロックがダーティ状態に変化し
たとする。この時、他のプロセッサからこのデータに対
する読み出しが発生すると、再びダーティ状態での転送
が発生することになる。この時、先の転送と同様に、ダ
ーティデータの転送である、という情報を受け取り手が
認識するとともに、転送元のキャッシュがダーティ転送
ビットの内容も転送する。するとデータの受け手側のキ
ャッシュは、これら2つの情報を検査し、両方とも設定
されていれば、受け取ったデータの一貫性管理方式選択
ビットを更新方式に設定する。このようにすることによ
って、各キャッシュラインに付加ビットを1ビット用意
し、閾値を2回とした切り替えが実現できる。
【0052】・閾値がn回の場合の説明 更に、このダーティ転送ビットを拡張し、数字を格納す
ることができるカウンタ(ダーティ転送カウンタ)にす
る。このダーティ転送カウンタは、ダーティ状態での転
送が行われると「+1」される。即ち、先ほどと同様
に、あるキャッシュがダーティ状態で保存しているデー
タに対して、他のキャッシュからの読み出しが発生する
と、転送元のキャッシュは、ダーティ状態であるという
情報と現在のダーティ転送カウンタの値と共にデータを
転送する。受け手側のキャッシュは、このダーティ状態
であるという情報を見て、受け取ったダーティ転送カウ
ンタの値を「+1」し、新たなダーティ転送カウンタの
値として保存する。この時、この「+1」されたダーテ
ィ転送カウンタの値がある閾値nを越えていた場合に
は、受け取ったデータの一貫性管理方式選択ビットを更
新方式に設定する。このようにして、n回ダーティ状態
での転送が続けば、一貫性管理方式を無効化方式から更
新方式へ切り替えることができるようにする。
【0053】:更新方式から無効化方式への切り替え
の説明 一方、更新型から無効化型への切り替え手段としては、
データを更新する前のスヌーピング(snooping)によっ
て実現する。つまり、従来の手法では、更新時には単に
データを転送するだけであったが、データ送信の前に他
のキャッシュの状態を検査し、その結果によってはデー
タ転送を取り止めるという機構を用意する。
【0054】更に、このデータ転送を取り止めるかどう
かの判断基準として、ヒット(hit)レベルという概念
を導入する。このヒットレベルとは、通常のヒット/ノ
ーヒット(no hit)の単純な「1/0」の値とは違っ
て、どれくらい使われているデータに対するヒットなの
かを数字で表現したものである。このヒットレベルの基
準としては、セットアソシアティブ(set associative
)キャッシュの場合のLRU(least recently used
)順位を用いる。
【0055】更新方式から無効化方式への切り替えの基
準としては、共有状態にあるキャッシュが存在するかど
うかを用いる。つまり、共有相手がいないのにいつまで
も更新動作を行うのは、トラフィックの無駄であり、こ
れを避ける。これは、更新動作を行う前に各キャッシュ
の状態を調べ、当該データを持っているかどうかをスヌ
ーピングさせれば実現することができる。つまり、更新
動作も通常の読み出し動作と同様に、「リクエスト発行
→スヌープ→データ転送」という動作を行うことにな
る。
【0056】このようにすると、共有されていないデー
タ(更新以前に他のキャッシュから追い出されて、共有
状態でなくなってしまったデータ)に関しては、更新動
作を行わないということが実現できる。
【0057】更に進めて、あまり参照されていないデー
タに関しては共有状態でないとの判断を行い、頻繁に参
照されるデータが存在する場合のみ、共有状態にあるキ
ャッシュが存在するとの判断を行う方式も用いることが
できる。即ち、ある程度頻繁にアクセスされる相手がい
る場合にのみ更新動作を行うという、更新動作の範囲を
さらに狭めた方式である。
【0058】このあまり参照されないデータ、あるいは
頻繁に参照されるデータの判断基準としては、セットア
ソシアティブキャッシュのLRU順位を用いる。LRU
順位は、上位にいればいるほど同一セット(set )内で
最近にアクセスされたことを保証するものであり、上位
にいることが即ちよく参照されていると近似的にみなす
ことができる。LRU順位は、大半のセットアソシアテ
ィブキャッシュであればキャッシュの追い出し順位を決
定するために装備しており、このための付加的ハードウ
ェアが必要でないという特徴を持つ。
【0059】(MESIプロトコルの説明)今、キャッ
シュがMESIプロトコルでデータを管理しているとす
る。MESIプロトコルとは、次の4つの状態でデータ
ブロック(キャッシュライン)を管理する方式である。
【0060】・M(Modified ) プロセッサがデータを更新しており、主記憶と内容が一
致していない状態である。データのコピーは当該キャッ
シュのみが排他的に保持している。
【0061】・E(Exclusive) データのコピーは当該キャッシュのみが排他的に保持し
ている状態である。データの内容は主記憶と一致してい
る。
【0062】・S(Shared ) データのコピーは当該キャッシュと他のキャッシュが同
時に保持している状態である。データの内容は主記憶と
一致している。
【0063】・I(Invalid) 当該キャッシュは、データのコピーを保持していない状
態である。
【0064】通常、MESIプロトコルを用いるキャッ
シュでの状態検査の場合には、キャッシュがM状態で保
持していれば、ヒットモディファイド(hit modified:
ヒットm(hitm)と略す)を返し、EまたはS状態で保持
していれば、ヒット(hit )を返す。今、あるキャッシ
ュでS状態のデータに対して書き込みが発生した場合、
他のキャッシュでもS状態あるいはI状態(追い出しに
よってデータが消去された場合)で保持していることに
なる。通常のスヌーピングを行う場合、ここで状態検査
を行うとヒットが返るか返らないかのどちらかであり、
情報量は「1」または「0」の1ビットである。これを
拡張するのが、あまり参照されていないデータ、あるい
は頻繁に参照されているデータを区別する方式である。
【0065】この区別する方式を実現するために、ヒッ
トの代わりにヒットレベルという概念を導入する。これ
は情報量を1ビットのヒットを複数ビットに拡張したも
のである。ヒットレベルの値は、いろいろ設定できる
が、ここではさきに述べたLRUの順位を用いる。
【0066】ヒットレベルとして、LRU順位を用いる
場合を考える。仮にキャッシュがn−wey(nはデー
タの数)セットアソシアティブ方式であったと仮定す
る。今、ヒットレベルとして2段階、即ちヒット0(頻
繁に参照されている)とヒット1(あまり参照されてい
ない)を用いるとし、その閾値をmとする。ここである
プロセッサがS状態にあるデータに対して書き込みを発
生し、それに付随するキャッシュがリクエストを出し、
各キャッシュの状態検査を行ったとする。すると各キャ
ッシュでは、先ず当該データの存在を調べ、存在すれば
それの同一セット内でのLRU順位を調べる。このLR
U順位が最上位(つまり最も最近にアクセスされた状
態)からm番目までの範囲であれば、このキャッシュ
は、状態検査の結果としてヒット0を返す。一方、LR
U順位がm+1番目から最下位までの間であれば、状態
検査の結果として、ヒット1を返す。
【0067】このようにして、ヒットに段階を持たせ、
ヒットレベルというものを用いることによって、頻繁に
参照されているデータがあるかどうかを確認することが
できる。
【0068】このヒットレベルを用いて、更新動作から
無効化動作に切り替えるには、以下のように行う。今、
先の例と同様に、MESIプロトコルを用い、ヒットレ
ベルとしてLRU順位を用いたヒット0、ヒット1を使
うキャッシュを考える。あるプロセッサが、S状態にあ
るデータに対して書き込みを発生し、それに付随するキ
ャッシュが他キャッシュの状態検査を行う。各キャッシ
ュは、その内部のデータの有る、無し、LRU順位に応
じて、それぞれヒット0、ヒット1、ノーヒット(no-h
it:ヒット0もヒット1も返さない)の3状態を返すこ
とになる。書き込みを行おうとするキャッシュは、戻っ
てきた各キャッシュの状態に応じて、以下の動作を行
う。
【0069】・全てノーヒットあるいはヒット1であっ
た場合、無効化動作を行い、当該データの一貫性管理方
式選択ビットを無効化方式に切り替える。
【0070】・ヒット0のキャッシュが存在した場合、
更新動作を行う。一貫性管理方式選択ビットは、更新動
作のままとする。
【0071】即ち、データを共有していてもヒットレベ
ルが低いキャッシュがいた場合には、更新動作から無効
化動作へと切り替える。このようにして、更新方式から
無効化動作への切り替えが可能となる。
【0072】なお、上記のヒット0のキャッシュが存在
した場合において、ヒット1のデータを保持しているキ
ャッシュの動作には、ヒット0のキャッシュと同様に更
新動作を行う方法と無効化動作を行う方法が考えられる
が、どちらも実現可能な方式である。更に、ヒットレベ
ルを、ヒット0、ヒット1、ヒット2、・・・ヒットn
と細かく分け、次のような動作を行わせることも可能で
ある(ここで「c」を閾値とする)。
【0073】・ヒットc以上のキャッシュは、更新動作
を行う。
【0074】・ヒットcより小さくヒットd以上のキャ
ッシュは、ヒットc以上のキャッシュがいた場合に更新
動作を行う。ヒットc以上のキャッシュがいない場合に
無効化動作を行う。
【0075】・ヒットdより小さいキャッシュは、常に
無効化動作を行う。
【0076】以上の無効化型→更新型の切り替え、更新
型→無効化型の切り替えを組み合わせることによって、
動的に無効化型と更新型を切り替えることができるよう
になる。 (2):具体例による説明1 :並列計算機の構成の説明 図2は共有バスを用いた共有メモリ型並列計算機の説明
図である。図2において、共有バスを用いた共有メモリ
並列計算機には、プロセッサ1A、1B、・・・1N、
キャッシュ2A、2B、・・・2N、共有バス3、メモ
リコントローラ4、主記憶(メインメモリ)5が設けて
ある。
【0077】プロセッサ1A、1B、・・・1Nは、接
続されたそれぞれのキャッシュ2A、2B、・・・2N
を介して主記憶5にアクセスするものである。キャッシ
ュ2A、2B、・・・2Nは、使われる可能性の高い主
記憶5のデータを保持するものである。共有バス3は、
それぞれのキャッシュ2A、2B、・・・2Nが共通に
使用するバスである。メモリコントローラ4は、主記憶
5の制御を行うものである。主記憶5は、データを記憶
する記憶装置である。
【0078】図2では、各プロセッサがキャッシュを通
じて共有バス3で接続された構成をとっている。主記憶
5は、メモリコントローラ4を介して、同じく共有バス
3に接続されており、このシステムには一つしかない。
この主記憶5のデータを、各プロセッサが共有する共有
メモリシステムである。これらの各キャッシュの状態管
理は、MESIプロトコルで行うものとする。
【0079】:キャッシュの詳細な説明 図3はキャッシュの内部構造の説明図である。図3にお
いて、図2のキャッシュの部分を詳細に示したものであ
り、キャッシュ2には、キャッシュコントローラ21、
キャッシュアレイ22が設けてある。キャッシュコント
ローラ21は、キャッシュの動作を司るもので、プロセ
ッサからのデータ要求を受け取ったり、共有バス3にリ
クエストを発行したりする。また、常に共有バス3上の
トラフィックを監視しており、他のキャッシュからのリ
クエストが共有バス3上に流れるとそれに応じた動作を
行うものである。キャッシュアレイ22は、データを保
存しておくための場所であり、主記憶5のコピーやプロ
セッサによって更新されたデータが保存されているもの
である。
【0080】:キャッシュアレイの説明 図4はキャッシュアレイの説明図である。図4におい
て、キャッシュアレイ22には、複数のセットが設けら
れており、各セットにはインデックスとLRUビットが
設けてある。また、各セットは同一インデックスを持つ
ブロックの集まり(ここでは4つのブロック)で構成さ
れている。各ブロックには、キー、ブロックデータ、状
態ビット、一貫性管理方式選択ビットが設けてある。
【0081】キャッシュアレイ22に格納されるデータ
は、ブロック単位で管理されている。各ブロックには、
状態を表すビット(状態ビット)が付いており、2ビッ
トでMESIの4状態を表す。更に、このブロックに対
する書き込み時の一貫性管理方式を表す一貫性管理方式
選択ビットが付いている。これは、無効化方式と更新方
式のどちらかを表すもので、1ビットである。更に、各
ブロックには、データのアドレスを記憶するためのキー
が付随している。
【0082】キャッシュアレイ22内では、複数のブロ
ックが1つのセットを構成して、セット単位でデータが
保存されている。セットは、同一インデックスを持つブ
ロックの集まりで、この例では4つのブロックが一つの
セットを構成している。インデックスは、キャッシュア
レイ22内の各セットの位置を指示するもので、アドレ
スから作られる。従って、図5(a)のアドレス、イン
デックス、キーの関係の説明に示すように、このインデ
ックスと各ブロックに保存されているキーを組み合わせ
ると、そのブロックのアドレスを表すことになる。
【0083】各セットには、4つのブロックの他に、L
RU情報を表すLRUビットが付随している。LRU情
報は、セット内の各ブロックがどういう順に並んでいる
かを表すものである。この場合は、4つのブロックが存
在するので、その順序を表す方法は、24通りを表現で
きる最低のビット数である5ビットが割り当てられる。
プロセッサから読み出し要求が発生し、キャッシュヒッ
トした場合、読み出されたブロックは、LRU情報で最
上位に並ぶようにLRUビットが書き換えられる。例え
ば、1−2−3−4の順で並んでいたセット(この時、
LRUビットにはこの順序を表現するビットパターンが
書き込まれている)に対して、3番のブロックがアクセ
スされたとすると、LRU情報は、3−1−2−4を表
すビットパターンに書き換えられる。
【0084】:共有バスの説明 図5(b)は共有バスの構成の説明である。図5(b)
において、共有バス3には、アービトレーション線、コ
マンド線、アドレス線、データ線、その他の制御情報線
の他に、キャッシュの状態検査を行った結果を通知する
ヒット0(hit0)線、ヒット1(hit1)線、ヒットm(h
itm)線が設けてある。
【0085】ヒット0、ヒット1、ヒットmの各線は、
各キャッシュ間のワイヤード−オア(wired-OR)線で構
成されており、キャッシュの内どれか一つがアサート
(assert)すると、その情報が全キャッシュに通知され
る。このヒット0、ヒット1、ヒットmの各線は、コマ
ンド(リクエスト)が発行された時点から固定クロック
後に全員が一斉にアサートすることが決められているも
のとする。
【0086】:ヒット0、ヒット1、ヒットmの制御
の説明 共有バス3に何らかのリクエストが発行されると、各キ
ャッシュコントローラ21は、必ず自分のキャッシュア
レイ22の状態検査を行い、その結果をヒット0線、ヒ
ット1線、ヒットm線を通じて全キャッシュに通知す
る。この方法は、以下のようになる。
【0087】先ず、コマンドと同時にリクエスト・アド
レスが共有バス3に流れてくるので、キャッシュコント
ローラ21はこのリクエスト・アドレスを元にインデッ
クス、キーを計算する。このインデックスにより、キャ
ッシュアレイ22の中の一つのセットが選択され、セッ
ト内の各ブロックのキーが検査される。これらのキーの
内、リクエスト・アドレスから作られたキーと一致する
ものがあれば、そのブロックの状態を調べると同時に、
このブロックがセットの中でどういう順位にあるかをL
RUビットを元に調べる。
【0088】これらの情報によって、各キャッシュコン
トローラ21は、規定された時間後に、ヒット0線、ヒ
ット1線、ヒットm線を次のようにアサートする。
【0089】・状態がIの場合 どれもアサートしない。
【0090】・状態がEまたはSの場合 LRUビットによる順位がある閾値cよりも上である場
合(例えば、c=3の時、LRUビットが1番目、2番
目、3番目の場合)、ヒット0をアサートする。それ以
外の場合は、ヒット1をアサートする。ヒットmはアサ
ートしない。
【0091】・状態がMの場合 ヒットmをアサートする。
【0092】リクエストを発行したキャッシュは、この
ヒット0、ヒット1、ヒットm情報を元に、データを受
け取ったり無効化動作や更新動作を行う。
【0093】(フローチャートによる説明)図6はヒッ
ト0、ヒット1、ヒットmの制御フローチャートであ
る。以下、図6の処理S1〜処理S8に従って説明す
る。
【0094】S1:キャッシュコントローラ21は、ブ
ロックの状態を検査し処理S2に移る。
【0095】S2:キャッシュコントローラ21は、ブ
ロックの状態がI状態かどうか判断する。この判断でブ
ロックの状態がI状態の場合はこの処理を終了し、もし
I状態でない場合は処理S3に移る。
【0096】S3:キャッシュコントローラ21は、ブ
ロックの状態がEまたはSかどうか判断する。この判断
でブロックの状態がEまたはSの場合は処理S4に移
り、もしEまたはSでない場合は処理S7に移る。
【0097】S4:キャッシュコントローラ21は、L
RUビットによる順位が閾値cよりも上であるかどうか
判断する。この判断で順位が閾値cよりも上である場合
は処理S5に移り、もし上でない場合は処理S6に移
る。
【0098】S5:キャッシュコントローラ21は、ヒ
ット0をアサートしこの処理を終了する。
【0099】S6:キャッシュコントローラ21は、ヒ
ット1をアサートしこの処理を終了する。
【0100】S7:キャッシュコントローラ21は、ブ
ロックの状態がM状態かどうか判断する。この判断でブ
ロックの状態がM状態の場合は処理S8に移り、もしM
状態でない場合はこの処理を終了する。
【0101】S8:キャッシュコントローラ21は、ヒ
ットmをアサートしこの処理を終了する。
【0102】:読み出し動作の説明 プロセッサがあるデータを読み出そうとして、キャッシ
ュにミスヒットした場合、キャッシュコントローラ21
は、以下のように動作する。
【0103】1)共有バス3のコマンド線に、メモリ
(主記憶)読み出しリクエストコマンドを発行し、同時
にアドレス線にリクエスト・アドレスを送出する。
【0104】2)各キャッシュコントローラは、アドレ
スを見てそれぞれヒット0、ヒット1、ヒットmをアサ
ートする。
【0105】3)送信元(リクエストコマンドを発行し
た側)のキャッシュコントローラは、規定された時間
後、ヒット0、ヒット1、ヒットmを観測し、その結果
に従って次の動作を行う。
【0106】・どれもアサートされなかった場合 この場合は、どのキャッシュにもデータは存在しなかっ
たということになるので、メモリコントローラ4からメ
インメモリ5のデータを受け取り、それをキャッシュア
レイ22のしかるべきセットの空いているブロックに保
存する。この時、空いているブロックが存在しなけれ
ば、LRUビットで表される順序が一番下位のブロック
を消去(EまたはS状態の場合)あるいはライトバック
(M状態の場合)し、新たな保存領域を確保する。
【0107】ブロックの状態はE状態とする。LRUビ
ットはこのブロックが先頭になるように書き換える。ま
た、一貫性管理方式選択ビットは無効化方式(初期状
態)とする。
【0108】・ヒット0またはヒット1がアサートされ
た場合 この場合、いずれかのキャッシュにデータのコピーが存
在し、それがメインメモリ5の内容と一致したものであ
るということを表している。そこでリクエストを発行し
たキャッシュは、コピーを持っている他のキャッシュあ
るいはメモリコントローラ4からデータのコピーを受け
取り、それをキャッシュアレイ22のしかるべきセット
の空いているブロックに保存する。この時、空いている
ブロックが存在しなければ、LRUビットで表される順
序が一番下位のブロックを消去(EまたはS状態の場
合)あるいはライトバック(M状態の場合)し、新たな
保存領域を確保する。
【0109】ブロックの状態はS状態とする。LRUビ
ットはこのブロックが先頭になるように書き換える。ま
た、一貫性管理方式選択ビットは無効化方式(初期状
態)とする。
【0110】・ヒットmがアサートされた場合 MESIプロトコルを用いているので、ヒットmがアサ
ートされた場合には、一つのキャッシュが排他的にデー
タを保持している。また、このデータは、書き換えられ
ており、メインメモリ5のデータとは一致しない。その
ため、リクエストを発行したキャッシュは、この排他的
にデータを保持しているキャッシュから最新のデータを
受け取る。この時、空いているブロックが存在しなけれ
ば、LRUビットで表される順序が一番下位のブロック
を消去(EまたはS状態の場合)あるいはライトバック
(M状態の場合)し、新たな保存領域を確保する。
【0111】なお、メモリコントローラ4は、データ線
を流れるデータを同時に観測し、メインメモリ5に最新
のデータを書き戻す(ライトバックも同時に行う)。
【0112】ブロックの状態はS状態とする。LRUビ
ットはこのブロックが先頭になるように書き換える。ま
た、一貫性管理方式選択ビットは更新方式(ダーティデ
ータを読み出したため)とする。
【0113】以上のようにして、キャッシュコントロー
ラ21は、データを読み出し、キャッシュブロックの状
態を適切な状態に設定する。この時、データブロックの
状態に応じて、一貫性管理方式を無効化方式か更新方式
に設定する。
【0114】(フローチャートによる説明)図7はデー
タ読み出し動作のフローチャートである。以下、図7の
処理S11〜処理S21に従って説明する。
【0115】S11:キャッシュコントローラ21は、
セットに空があるかどうか判断する。この判断でセット
に空がある場合は処理S16に移り、もしない場合は処
理S12に移る。
【0116】S12:キャッシュコントローラ21は、
LRUビットで表される順序が一番下位のブロックの状
態はEまたはSかどうか判断する。この判断でブロック
の状態がEまたはSの場合は処理S15に移り、もしE
またはSでない場合は処理S13に移る。
【0117】S13:キャッシュコントローラ21は、
LRUビットで表される順序が一番下位のブロックの状
態はMかどうか判断する。この判断でブロックの状態が
Mの場合は処理S14に移り、もしMでない場合は処理
S16に移る。
【0118】S14:キャッシュコントローラ21は、
LRUビットで表される順序が一番下位のブロックをラ
イトバックし処理S16に移る。
【0119】S15:キャッシュコントローラ21は、
LRUビットで表される順序が一番下位のブロックを消
去し処理S16に移る。
【0120】S16:キャッシュコントローラ21は、
リクエストを発行し、他のキャッシュの状態を調べ処理
S17に移る。
【0121】S17:キャッシュコントローラ21は、
ヒット0またはヒット1がアサートされたかどうか判断
する。この判断でヒット0またはヒット1がアサートさ
れた場合は処理S20に移り、もしヒット0またはヒッ
ト1がアサートされなかった場合は処理S18に移る。
【0122】S18:キャッシュコントローラ21は、
ヒットmがアサートされたかどうか判断する。この判断
でヒットmがアサートされた場合は処理S19に移り、
もしヒットmがアサートされなかった場合は処理S21
に移る。
【0123】S19:キャッシュコントローラ21は、
ブロックの状態はS状態とし、LRUビットはこのブロ
ックが先頭(最上位)になるように書き換え、また、一
貫性管理方式選択ビットは更新方式としこの処理を終了
する。
【0124】S20:キャッシュコントローラ21は、
ブロックの状態はS状態とし、LRUビットはこのブロ
ックが先頭になるように書き換え、また、一貫性管理方
式選択ビットは無効化方式としこの処理を終了する。
【0125】S21:キャッシュコントローラ21は、
ブロックの状態はE状態とし、LRUビットはこのブロ
ックが先頭になるように書き換え、また、一貫性管理方
式選択ビットは無効化方式としこの処理を終了する。
【0126】:書き込み動作の説明 プロセッサがあるデータを書き込みを行おうとした場
合、キャッシュコントローラ21は、以下のように動作
する。
【0127】1)自分のキャッシュアレイ22の中を検
索し、該当するキャッシュブロックが存在するか、存在
した場合にはその状態および一貫性管理方式選択ビット
がどちらに設定されているかを調べる。
【0128】・存在しない、あるいは状態がI状態の場
合 先ず、読み出し動作を行い(図7参照)、キャッシュア
レイ内に最新のデータのコピーを保存する。その後、も
う一度書込み動作を最初から開始する。
【0129】・M状態あるいはE状態の場合 データは、このキャッシュが排他的に保持しているの
で、ブロック内のデータをプロセッサの書き込みデータ
によって更新し、状態をM状態に変更する。また、LR
Uビットは、このブロックが先頭になるよう書き換え
る。一貫性管理方式選択ビットは、変更せず、以前の値
を保存する。
【0130】・S状態で一貫性管理方式選択ビットが無
効化方式の場合 データを他のキャッシュと共有しているので、先ず他の
キャッシュのデータを無効化する。無効化のために、共
有バス3を用いて無効化コマンドを発行する。各キャッ
シュは、無効化コマンドを受け取ると、自分のキャッシ
ュアレイを検査し、同じアドレスのブロックが存在すれ
ば、状態をI状態へと変更する。
【0131】無効化が完了した後、ブロック内のデータ
をプロセッサの書き込みデータによって更新し、状態を
M状態に変更する。LRUビットは、このブロックが先
頭(最上位)になるように書き換え、一貫性管理方式選
択ビットは、無効化方式のままとする。
【0132】・S状態で一貫性管理方式選択ビットが更
新方式の場合 他のキャッシュとデータを共有している可能性があるの
で、共有バス3を用いて更新コマンドを発行する。キャ
ッシュコントローラ21は、その更新コマンドに対する
ヒット0、ヒット1、ヒットm線を観測し、その結果に
応じて、次の動作を行う。
【0133】a、全てノーヒットあるいはヒット1であ
った場合 更新データは、共有バス3に流さず、更新コマンドを無
効化コマンドとして用いる(各キャッシュコントローラ
も同時にヒット0、ヒット1、ヒットmを観測してお
り、全てノーヒットあるいはヒット1であることを認識
できるので、受け取り側でも同時に判断する)。
【0134】無効化が完了した後、ブロック内のデータ
をプロセッサの書き込みデータによって更新し、状態を
M状態に変更する。LRUビットは、このブロックが先
頭になるように書き換える。また、一貫性管理方式選択
ビットは、無効化方式に変更する。
【0135】b、ヒット0のキャッシュが存在した場合 続けて、更新データをデータ線に流し、共有している各
キャッシュ(ヒット0、ヒット1共)で一致したデータ
を保持できるようにする。また、メモリコントローラ4
もこのデータを同様に受け取り、メインメモリ5の内容
も一致させる。更新データを受け取ったキャッシュで
は、ブロック内のデータのみを更新し、状態ビットやL
RUビットなどは更新しない。
【0136】更新データを流し終えると、ブロック内の
データをプロセッサの書き込みデータによって更新す
る。状態はS状態のままとする。LRUビットは、この
ブロックが先頭になるように書き換える。また、一貫性
管理方式選択ビットは、更新方式のままにする。
【0137】なお、更新データをデータ線で観測した時
点で、ヒット1をアサートしたキャッシュは、無効化す
るという方式にすることも可能である。これは他のキャ
ッシュの状態を見なくて良いため制御が簡単になる。
【0138】(フローチャートによる説明)図8はデー
タ書き込み動作のフローチャートである。以下、図8の
処理S31〜処理S43に従って説明する。
【0139】S31:キャッシュコントローラ21は、
該当するブロックが、すでにキャッシュ内に存在するか
どうか判断する。この判断で該当するブロックがキャッ
シュ内に存在する場合は処理S32に移り、存在しない
場合は処理S33に移る。
【0140】S32:キャッシュコントローラ21は、
ブロックの状態はEまたはMかどうか判断する。この判
断でブロックの状態がEまたはMの場合は処理S41に
移り、もしEまたはMでない場合は処理S34に移る。
【0141】S33:キャッシュコントローラ21は、
読み出し動作を行い、キャッシュアレイ内に最新のデー
タのコピーを保存し処理S32に移る(なお処理S31
に戻るようにしても良い)。
【0142】S34:キャッシュコントローラ21は、
ブロックの状態はSかどうか判断する。この判断でブロ
ックの状態がSの場合は処理S35に移り、もしSでな
い場合は処理S33に戻る。
【0143】S35:キャッシュコントローラ21は、
一貫性管理方式選択ビットは無効化方式かどうか判断す
る。この判断で無効化方式の場合は処理S42に移り、
もし無効化方式でない場合は処理S36に移る。
【0144】S36:キャッシュコントローラ21は、
他のキャッシュの状態を調べ処理S37に移る。
【0145】S37:キャッシュコントローラ21は、
ヒット0がアサートされたかどうか判断する。この判断
でヒット0がアサートされた場合は処理S38に移り、
もしヒット0がアサートされなかった場合は処理S42
に移る。
【0146】S38:キャッシュコントローラ21は、
更新データを共有バス3に流し、他のキャッシュも更新
し処理S39に移る。
【0147】S39:キャッシュコントローラ21は、
ブロック内のデータを更新し処理S40に移る。
【0148】S40:キャッシュコントローラ21は、
ブロックの状態はS状態とし、LRUビットはこのブロ
ックが先頭(最上位)になるように書き換え、また、一
貫性管理方式選択ビットは更新方式としこの処理を終了
する。
【0149】S41:ブロック内のデータを更新し処理
S43に移る。
【0150】S42:キャッシュコントローラ21は、
他のキャッシュのデータを無効化し処理S41に移る。
【0151】S43:キャッシュコントローラ21は、
ブロックの状態はM状態とし、LRUビットはこのブロ
ックが最上位になるように書き換え、また、一貫性管理
方式選択ビットは無効化方式としこの処理を終了する。
【0152】(3):具体例による説明2 本具体例も、前記具体例と同様に図2の構成の並列計算
機として説明する。
【0153】:キャッシュアレイの説明 図9はキャッシュアレイの説明図である。図9におい
て、キャッシュアレイには、複数のセットが設けられて
おり、各セットにはインデックスとLRUビットが設け
てある。また、各セットは同一インデックスを持つブロ
ックの集まり(ここでは4つのブロック)で構成されて
いる。各ブロックには、キー、ブロックデータ、状態ビ
ット、一貫性管理方式選択ビット、ダーティ(dirty )
転送ビットが設けてある。
【0154】本具体例は、図4のものに比べて、ブロッ
クにダーティ転送が行われたことを表すダーティ転送ビ
ットが付加されたものである。
【0155】ダーティ転送ビットは、M状態のブロック
が他のキャッシュによって読み出された場合、転送先の
キャッシュアレイで保存される時に設定されるビットで
ある。これに伴って、共有バス3には、ダーティ転送通
知線が付加される。
【0156】:共有バスの説明 図10は共有バスの構成の説明図である。図10におい
て、共有バス3には、アービトレーション線、コマンド
線、アドレス線、データ線、その他の制御情報線の他
に、キャッシュの状態検査を行った結果を通知するヒッ
ト0(hit0)線、ヒット1(hit1)線、ヒット2(hit
2)線、ヒットm(hitm)線、ダーティ(dirty )転送通
知線が設けてある。
【0157】ダーティ転送ビットは、M状態のブロック
が他のキャッシュによって読み出された場合、転送先の
キャッシュアレイで保存される時に設定されるビットで
ある。これに伴って、共有バス3には、ダーティ転送通
知線が付加され、データ転送時にそのブロックのダーテ
ィ転送ビットの状態を同時に通知することができるよう
になっている。また、共有バス3には、図5(b)のバ
スに比べて、前記ダーティ転送通知線の他に、さらにヒ
ット2線が付加されている。
【0158】:ヒット0、ヒット1、ヒット2、ヒッ
トmの制御の説明 ヒット0線、ヒット1線、ヒット2線、ヒットm線は、
以下の条件に従ってアサートされる。
【0159】共有バス3に何らかのリクエストが発行さ
れると、各キャッシュコントローラ21は、必ず自分の
キャッシュアレイ22の状態検査を行い、その結果をヒ
ット0線、ヒット1線、ヒット2線、ヒットm線を通じ
て全キャッシュに通知する。この方法は、以下のように
なる。
【0160】先ず、コマンドと同時にリクエスト・アド
レスが共有バス3に流れてくるので、キャッシュコント
ローラ21はこのリクエスト・アドレスを元にインデッ
クス、キーを計算する。このインデックスにより、キャ
ッシュアレイ22の中の一つのセットが選択され、セッ
ト内の各ブロックのキーが検査される。これらのキーの
内、リクエスト・アドレスから作られたキーと一致する
ものがあれば、そのブロックの状態を調べると同時に、
このブロックがセットの中でどういう順位にあるかをL
RUビットを元に調べる。
【0161】これらの情報によって、各キャッシュコン
トローラ21は、規定された時間後に、ヒット0線、ヒ
ット1線、ヒット2線、ヒットm線を次のようにアサー
トする。
【0162】・状態がIの場合 どれもアサートしない。
【0163】・状態がEまたはSの場合 LRUビットによる順位が最上位である場合、ヒット0
をアサートする。同様にLRUビットによる順位が2番
目である場合はヒット1を、3番目、4番目である場合
はヒット2をアサートする。
【0164】いずれの場合もヒットmはアサートしな
い。
【0165】・状態がMの場合 ヒットmをアサートする。
【0166】(フローチャートによる説明)図11はヒ
ット0、ヒット1、ヒット2、ヒットmの制御フローチ
ャートである。以下、図11の処理S51〜処理S60
に従って説明する。
【0167】S51:キャッシュコントローラ21は、
ブロックの状態を検査し処理S52に移る。
【0168】S52:キャッシュコントローラ21は、
ブロックの状態がI状態かどうか判断する。この判断で
ブロックの状態がI状態の場合はこの処理を終了し、も
しI状態でない場合は処理S53に移る。
【0169】S53:キャッシュコントローラ21は、
ブロックの状態がEまたはSかどうか判断する。この判
断でブロックの状態がEまたはSの場合は処理S54に
移り、もしEまたはSでない場合は処理S55に移る。
【0170】S54:キャッシュコントローラ21は、
LRUビットによる順位が最上位であるかどうか判断す
る。この判断で順位が最上位である場合は処理S58に
移り、もし最上位でない場合は処理S56に移る。
【0171】S55:キャッシュコントローラ21は、
ブロックの状態がM状態かどうか判断する。この判断で
ブロックの状態がM状態の場合は処理S57に移り、も
しM状態でない場合はこの処理を終了する。
【0172】S56:キャッシュコントローラ21は、
LRUビットによる順位が2番目であるかどうか判断す
る。この判断で順位が2番目である場合は処理S59に
移り、もし2番目でない場合は処理S60に移る。
【0173】S57:キャッシュコントローラ21は、
ヒットmをアサートしこの処理を終了する。
【0174】S58:キャッシュコントローラ21は、
ヒット0をアサートしこの処理を終了する。
【0175】S59:キャッシュコントローラ21は、
ヒット1をアサートしこの処理を終了する。
【0176】S60:キャッシュコントローラ21は、
ヒット2をアサートしこの処理を終了する。
【0177】:読み出し動作の説明 プロセッサがあるデータを読み出そうとして、キャッシ
ュにミスヒットした場合、キャッシュコントローラ21
は、以下のように動作する(ヒットした場合は、キャッ
シュアレイ22からデータを返す)。
【0178】1)共有バス3のコマンド線に、メモリ
(主記憶)読み出しリクエストコマンドを発行し、同時
にアドレス線にリクエスト・アドレスを送出する。
【0179】2)各キャッシュコントローラは、アドレ
スを見てそれぞれヒット0、ヒット1、ヒット2、ヒッ
トmをアサートする。
【0180】3)送信元のキャッシュコントローラは、
規定された時間後、ヒット0、ヒット1、ヒット2、ヒ
ットmを観測し、その結果に従って次の動作を行う。
【0181】・どれもアサートされなかった場合 この場合は、どのキャッシュにもデータは存在しなかっ
たということになるので、メモリコントローラ4からメ
インメモリ5のデータを受け取り、それをキャッシュア
レイ22のしかるべきセットの空いているブロックに保
存する。この時、空いているブロックが存在しなけれ
ば、LRUビットで表される順序が一番下位のブロック
を消去(EまたはS状態の場合)あるいはライトバック
(M状態の場合)し、新たな保存領域を確保する。
【0182】ブロックの状態はE状態とする。LRUビ
ットはこのブロックが先頭になるように書き換える。ま
た、一貫性管理方式選択ビットは無効化方式(初期状
態)とし、ダーティ転送ビットはクリアされる。
【0183】・ヒット0、ヒット1、ヒット2のいずれ
かがアサートされた場合 この場合、いずれかのキャッシュにデータのコピーが存
在し、それがメインメモリ5の内容と一致したものであ
るということを表している。そこでリクエストを発行し
たキャッシュは、コピーを持っている他のキャッシュあ
るいはメモリコントローラ4からデータのコピーを受け
取り、それをキャッシュアレイ22のしかるべきセット
の空いているブロックに保存する。この時、空いている
ブロックが存在しなければ、LRUビットで表される順
序が一番下位のブロックを消去(EまたはS状態の場
合)あるいはライトバック(M状態の場合)し、新たな
保存領域を確保する。
【0184】ブロックの状態はS状態とする。LRUビ
ットはこのブロックが先頭になるように書き換える。ま
た、一貫性管理方式選択ビットは無効化方式(初期状
態)とし、ダーティ転送ビットはクリアされる。
【0185】・ヒットmがアサートされた場合 MESIプロトコルを用いているので、ヒットmがアサ
ートされた場合には、一つのキャッシュが排他的にデー
タを保持している。また、このデータは、書き換えられ
ており、メインメモリ5のデータとは一致しない。その
ため、リクエストを発行したキャッシュは、この排他的
にデータを保持しているキャッシュから最新のデータを
受け取る。この時、同時に送信元のダーティ転送ビット
の状態も受け取る。また、受け取ったデータブロックの
ダーティ転送ビットをセットする。この時、空いている
ブロックが存在しなければ、LRUビットで表される順
序が一番下位のブロックを消去(EまたはS状態の場
合)あるいはライトバック(M状態の場合)し、新たな
保存領域を確保する。
【0186】なお、メモリコントローラ4は、データ線
を流れるデータを同時に観測し、メインメモリ5に最新
のデータを書き戻す。
【0187】ブロックの状態はS状態とする。LRUビ
ットはこのブロックが先頭になるように書き換える。ま
た、一貫性管理方式選択ビットは、送信元のダーティ転
送ビットの状態がセットされていれば更新方式(2回以
上のダーティ転送が行われた)とし、セットされていな
ければ無効化方式とする。
【0188】以上のようにして、キャッシュコントロー
ラ21は、データを読み出し、キャッシュブロックの状
態を適切な状態に設定する。この時、データブロックの
状態に応じて、一貫性管理方式を無効化方式か更新方式
に設定する。
【0189】(フローチャートによる説明)図12はデ
ータ読み出し動作のフローチャートである。以下、キャ
ッシュがミスヒットした時の読み出し動作を図12の処
理S61〜処理S73に従って説明する。
【0190】S61:キャッシュコントローラ21は、
セットに空があるかどうか判断する。この判断でセット
に空がある場合は処理S66に移り、もしない場合は処
理S62に移る。
【0191】S62:キャッシュコントローラ21は、
LRUビットで表される順序が一番下位のブロックの状
態はEまたはSかどうか判断する。この判断でブロック
の状態がEまたはSの場合は処理S65に移り、もしE
またはSでない場合は処理S63に移る。
【0192】S63:キャッシュコントローラ21は、
LRUビットで表される順序が一番下位のブロックの状
態はMかどうか判断する。この判断でブロックの状態が
Mの場合は処理S64に移り、もしMでない場合は処理
S66に移る。
【0193】S64:キャッシュコントローラ21は、
LRUビットで表される順序が一番下位のブロックをラ
イトバックし処理S66に移る。
【0194】S65:キャッシュコントローラ21は、
LRUビットで表される順序が一番下位のブロックを消
去し処理S66に移る。
【0195】S66:キャッシュコントローラ21は、
リクエストを発行し、他のキャッシュの状態を調べ処理
S67に移る。
【0196】S67:キャッシュコントローラ21は、
ヒット0、ヒット1、ヒット2のいずれかがアサートさ
れたかどうか判断する。この判断でヒット0、ヒット
1、ヒット2のいずれかがアサートされた場合は処理S
73に移り、もしいずれもアサートされなかった場合は
処理S68に移る。
【0197】S68:キャッシュコントローラ21は、
ヒットmがアサートされたかどうか判断する。この判断
でヒットmがアサートされた場合は処理S69に移り、
もしヒットmがアサートされなかった場合は処理S70
に移る。
【0198】S69:キャッシュコントローラ21は、
ダーティ転送ビットはセットされているかどうか判断す
る。この判断でダーティ転送ビットはセットされている
場合は処理S71に移り、もしセットされていない場合
は処理S72に移る。
【0199】S70:キャッシュコントローラ21は、
ブロックの状態はE状態とし、LRUビットはこのブロ
ックが先頭(最上位)になるように書き換え、また、一
貫性管理方式選択ビットは無効化方式とし、ダーティ転
送ビットはクリアしこの処理を終了する。
【0200】S71:キャッシュコントローラ21は、
ブロックの状態はS状態とし、LRUビットはこのブロ
ックが先頭になるように書き換え、また、一貫性管理方
式選択ビットは更新方式とし、ダーティ転送ビットはセ
ットとしこの処理を終了する。
【0201】S72:キャッシュコントローラ21は、
ブロックの状態はS状態とし、LRUビットはこのブロ
ックが先頭になるように書き換え、また、一貫性管理方
式選択ビットは無効化方式とし、ダーティ転送ビットは
セットとしこの処理を終了する。
【0202】S73:キャッシュコントローラ21は、
ブロックの状態はS状態とし、LRUビットはこのブロ
ックが先頭になるように書き換え、また、一貫性管理方
式選択ビットは無効化方式とし、ダーティ転送ビットは
クリアしこの処理を終了する。
【0203】:書き込み動作の説明 プロセッサがあるデータに対し書き込みを行おうとした
場合、キャッシュコントローラ21は、以下のように動
作する。
【0204】1)自分のキャッシュアレイ22の中を検
索し、該当するキャッシュブロックが存在するか、存在
した場合にはその状態および一貫性管理方式選択ビット
がどちらに設定されているかを調べる。
【0205】・存在しない、あるいは状態がI状態の場
合 先ず、読み出し動作を行い(図12参照)、キャッシュ
アレイ内に最新のデータのコピーを保存する。その後、
もう一度書き込み動作を最初から開始する。
【0206】・M状態あるいはE状態の場合 データは、このキャッシュが排他的に保持しているの
で、ブロック内のデータをプロセッサの書き込みデータ
によって更新し、状態をM状態に変更する。また、LR
Uビットは、このブロックが先頭になるよう書き換え
る。一貫性管理方式選択ビット、ダーティ転送ビットは
変更せず、以前の値を保存する。
【0207】・S状態で一貫性管理方式選択ビットが無
効化方式の場合 データを他のキャッシュと共有しているので、先ず他の
キャッシュのデータを無効化する。無効化のために、共
有バス3を用いて無効化コマンドを発行する。各キャッ
シュは、無効化コマンドを受け取ると、自分のキャッシ
ュアレイを検査し、同じアドレスのブロックが存在すれ
ば、状態をI状態へと変更する。
【0208】無効化が完了した後、ブロック内のデータ
をプロセッサの書き込みデータによって更新し、状態を
M状態に変更する。LRUビットは、このブロックが先
頭(最上位)になるように書き換えられる。一貫性管理
方式選択ビット、ダーティ転送ビットは変更せず、以前
の値を保存する。
【0209】・S状態で一貫性管理方式選択ビットが更
新方式の場合 他のキャッシュとデータを共有している可能性があるの
で、共有バス3を用いて更新コマンドを発行する。キャ
ッシュコントローラ21は、その更新コマンドに対する
ヒット0、ヒット1、ヒット2、ヒットm線を観測し、
その結果に応じて、次の動作を行う。
【0210】a、全てノーヒットあるいはヒット1ある
いはヒット2であった場合 更新データは、共有バス3に流さず、更新コマンドを無
効化コマンドとして用いる(各キャッシュコントローラ
も同時にヒット0、ヒット1、ヒット2、ヒットmを観
測しており、全てノーヒットあるいはヒット1あるいは
ヒット2であることを認識できるので、受け取り側でも
同時に判断する)。
【0211】無効化が完了した後、ブロック内のデータ
をプロセッサの書き込みデータによって更新し、状態を
M状態に変更する。LRUビットはこのブロックが先頭
になるように書き換える。また、一貫性管理方式選択ビ
ットは無効化方式に変更する。ダーティ転送ビットは以
前の値を保存する。
【0212】b、ヒット0のキャッシュが存在した場合 続けて、更新データをデータ線に流し、共有している各
キャッシュのうち、ヒット0、ヒット1をアサートした
キャッシュは、一致したデータを保持できるようにデー
タを更新する。ヒット2をアサートしたキャッシュは、
データを無効化する。また、メモリコントローラ4も、
このデータを同様に受け取り、メインメモリの内容も一
致させる。更新データを受け取ったキャッシュでは、ブ
ロック内のデータのみを更新し、状態ビットやLRUビ
ットなどは更新しない。
【0213】更新データを流し終えると、ブロック内の
データをプロセッサの書き込みデータによって更新す
る。状態はS状態のままとする。LRUビットは、この
ブロックが先頭になるように書き換える。また、一貫性
管理方式選択ビットは更新方式のままであり、ダーティ
転送ビットは以前の値を保持する。
【0214】(フローチャートによる説明)図13はデ
ータ書き込み動作のフローチャートである。以下、図1
3の処理S81〜処理S93に従って説明する。
【0215】S81:キャッシュコントローラ21は、
該当するブロックが、すでにキャッシュ内に存在するか
どうか判断する。この判断で該当するブロックがキャッ
シュ内に存在する場合は処理S82に移り、存在しない
場合は処理S83に移る。
【0216】S82:キャッシュコントローラ21は、
ブロックの状態はEまたはMかどうか判断する。この判
断でブロックの状態がEまたはMの場合は処理S91に
移り、もしEまたはMでない場合は処理S84に移る。
【0217】S83:キャッシュコントローラ21は、
読み出し動作を行い、キャッシュアレイ内に最新のデー
タのコピーを保存し処理S82に移る(なお処理S81
に戻るようにしても良い)。
【0218】S84:キャッシュコントローラ21は、
ブロックの状態はSかどうか判断する。この判断でブロ
ックの状態がSの場合は処理S85に移り、もしSでな
い場合は処理S83に戻る。
【0219】S85:キャッシュコントローラ21は、
一貫性管理方式選択ビットは無効化方式かどうか判断す
る。この判断で無効化方式の場合は処理S92に移り、
もし無効化方式でない場合は処理S86に移る。
【0220】S86:キャッシュコントローラ21は、
他のキャッシュの状態を調べ処理S87に移る。
【0221】S87:キャッシュコントローラ21は、
ヒット0がアサートされたかどうか判断する。この判断
でヒット0がアサートされた場合は処理S88に移り、
もしヒット0がアサートされなかった場合は処理S92
に移る。
【0222】S88:キャッシュコントローラ21は、
更新データを共有バス3に流し、ヒット0、ヒット1の
キャッシュを更新し(ヒット2のキャッシュは無効化す
る)処理S89に移る。
【0223】S89:キャッシュコントローラ21は、
ブロック内のデータを更新し処理S90に移る。
【0224】S90:キャッシュコントローラ21は、
ブロックの状態はS状態とし、LRUビットはこのブロ
ックが先頭(最上位)になるように書き換え、また、一
貫性管理方式選択ビットは更新方式とし、ダーティ転送
ビットは変更せず以前の値を保存しこの処理を終了す
る。
【0225】S91:ブロック内のデータを更新し処理
S93に移る。
【0226】S92:キャッシュコントローラ21は、
他のキャッシュのデータを無効化し処理S91に移る。
【0227】S93:キャッシュコントローラ21は、
ブロックの状態はM状態とし、LRUビットはこのブロ
ックが最上位になるように書き換え、また、一貫性管理
方式選択ビットは無効化方式とし、ダーティ転送ビット
は以前の値を保存しこの処理を終了する。
【0228】(4):本発明は次のようにしても実施可
能である。
【0229】:無効化方式/更新方式の選択をデータ
受け取り時に行う手法 プロセッサとキャッシュが組になったもの、およびメイ
ンメモリとメモリコントローラが相互結合網を介して接
続された構成をとる共有メモリ型並列計算機を考える。
この並列計算機において、各キャッシュに、書き込み時
の一貫性管理方式を、キャッシュライン(データブロッ
ク)毎に無効化方式と更新方式とで切り替えることので
きる構造を備える。プロセッサからのデータ書き込み時
に無効化方式と更新方式のどちらを使うかという情報
(例えばダーティ転送が行われた、あるいはキャッシュ
間を渡り歩いた回数等)を、メモリコントローラあるい
は他のキャッシュからのデータ転送時に同時に受け取る
方式を用いたキャッシュメモリ装置とする。
【0230】:ダーティブロックに対するリードを行
うと更新方式に切り替えるもの 前記のキャッシュで、自分がダーティ状態で保持して
いるデータに対して、他のキャッシュが読み出し要求を
発生した時、データ転送時に、そのデータブロックに対
する書き込みの一貫性管理方式として更新方式を用いる
ことを指示し、それ以外の場合は無効化方式を用いるこ
とを指示するキャッシュメモリ装置およびメモリコント
ローラとする。
【0231】:ダーティブロックに対するリードを2
回続けて行うと更新方式に切り替えるもの 前記のキャッシュに加えて、各データブロックに対し
てダーティ状態で転送が行われたことを示すフラグを用
意する。あるキャッシュがダーティ状態で保持している
データに対し、他のキャッシュが読み出し要求を発生し
た場合、データ転送後、読み出し要求を発生したキャッ
シュにデータが格納されるのと同時に、このフラグもセ
ットされる。このフラグがセットされている状態で、か
つダーティ状態となっているデータブロックに対して、
他のキャッシュから読み出し要求が発生した場合、デー
タ転送時にそのデータブロックに対する書き込みの一貫
性管理方式として更新方式を用いることを指示し、それ
以外の場合は無効化方式を用いることを指示するキャッ
シュメモリ装置およびメモリコントローラとする。
【0232】:ダーティブロックに対するリードをn
回続けて行うと更新方式に切り替えるもの 前記のキャッシュに加えて、各データブロックに対し
て、ダーティ状態で転送が行われた回数を示すカウンタ
を用意する。あるキャッシュがダーティ状態で保持して
いるデータに対し、他のキャッシュが読み出し要求を発
生した場合、データ転送後、読み出し要求を発生したキ
ャッシュにデータが格納されるのと同時に、このカウン
タが+1される。このカウンタがある閾値以上で、かつ
ダーティ状態となっているデータブロックに対して、他
のキャッシュから読み出し要求が発生した場合、データ
転送時にそのデータブロックに対する書き込みの一貫性
管理方式として更新方式を用いることを指示し、それ以
外の場合は無効化方式を用いることを指示するキャッシ
ュメモリ装置およびメモリコントローラとする。
【0233】:更新方式時にスヌープして動作を切り
替えるキャッシュ 各キャッシュに書き込み時の一貫性管理方式を、キャッ
シュライン毎に無効化方式と更新方式とで切り替えるこ
とのできる構造を備える。キャッシュに対して書き込み
が発生し、それが更新方式で一貫性管理を行うものであ
った場合、実際に更新動作を行う前に、各キャッシュの
状態を検査し、その検査結果に応じてそのまま更新方式
を用いるか、無効化方式に切り替えるかを決定するキャ
ッシュメモリ装置とする。
【0234】:ヒットにレベルを付けたキャッシュ キャッシュの状態通知を行う時に、ヒット/ノーヒッ
ト、clean (クリーン;メインメモリと一致、E又はS
状態)/modified(メインメモリと一致しない、M状
態)のみの情報でなく、ヒットにレベル(例えば、リフ
ァレンスカウンタ値、LRUの順位等)を付けて通知
し、ヒットレベルの小さいものしかない場合は、要求元
は共有状態ではなく排他的保持状態でデータを保持する
ことができるようにしたキャッシュメモリ装置とする。
【0235】:ヒットレベルとしてLRUの順位を用
いるキャッシュ 前記のキャッシュで、キャッシュメモリがセットアソ
シアティブでデータを保持しているとする。前記のヒ
ットレベルとして、同一セット内のLRU順位の何番目
に位置するか(あるいは、ある閾値を用いて、その閾値
より上か下か)を用いるキャッシュメモリ装置とする。
【0236】:更新方式時にスヌープし、ヒットレベ
ルに応じて無効化方式に切り替えるキャッシュ 前記のキャッシュにおいて、更新方式か無効化方式か
を決定する基準として、前記あるいはのヒットレベ
ルを用いる。更新動作を行う前に各キャッシュの状態を
検査し、ヒットレベルがある閾値以上のものがいれば更
新動作を行い全てが閾値より小さければ無効化動作を行
うキャッシュメモリ装置とする。
【0237】なお、閾値より上のヒットレベルを持つキ
ャッシュが存在し更新動作が行われた場合、閾値より小
さいヒットレベルを持つキャッシュは閾値以上のヒット
レベルを持つキャッシュと同様に更新動作を行ってもよ
いし、また、閾値より上のヒットレベルを持つキャッシ
ュと違って無効化動作を行ってもよい。あるいは、さら
に別の閾値を導入し、更新動作を行うキャッシュが存在
する場合には更新するキャッシュと、更新動作を行うキ
ャッシュが存在しても無効化動作を行うキャッシュに分
けてもよい。
【0238】:無効化方式/更新方式を動的に切り替
えるキャッシュ 前記あるいはあるいはあるいはと、前記ある
いはの方式を組み合わせて、一つのシステムで無効化
方式と更新方式の両方を、データによって動的に使い分
けることのできるキャッシュメモリ装置とする。
【0239】
【発明の効果】以上説明したように、本発明によれば次
のような効果がある。
【0240】(1)キャッシュコントローラが、一度に
転送するデータ単位毎に無効化方式と更新方式の一貫性
管理方式を切り替えることのできる構成とし、キャッシ
ュコントローラで、プロセッサからのデータ書き込み時
に、一貫性管理方式の切り替え情報をデータ転送時に同
時に受け取るため、他のキャッシュの履歴も受け取るこ
とができて、無効化方式あるいは更新方式を適切に選択
することができる。
【0241】(2):プロセッサによって書き込みが行
われ主記憶装置のデータとは一致しないダーティ状態で
保持するデータに対して、他のキャッシュから読み出し
要求が発生した時、そのデータに対する書き込みの前記
一貫性管理方式として更新方式を指示するため、ダーテ
ィ状態で転送されるデータはアクセス頻度の高いデータ
として、適切な一貫性管理を行うことができる。
【0242】(3):データ単位毎に、ダーティ状態で
保持するデータに対する転送が行われた回数を示す回数
情報を設け、この回数情報が2回以上の決められた回数
の時、そのデータに対する書き込みの一貫性管理方式と
して更新方式を指示するため、アクセス頻度の高いデー
タを正確に発見でき、適切な一貫性管理を行うことがで
きる。
【0243】(4):キャッシュコントローラが、一度
に転送するデータ単位毎に無効化方式と更新方式の一貫
性管理方式を切り替えることのできる構成とし、キャッ
シュコントローラで、プロセッサからのデータ書き込み
発生時に、そのデータが更新方式で一貫性管理を行うも
のであった場合、実際に更新動作を行う前に、各キャッ
シュの状態を検査し、そのまま更新方式を用いるか、無
効化方式に切り替えるかを決定するため、不必要な更新
動作を避けることができる。
【0244】(5):各キャッシュの状態の検査時に、
各キャッシュ状態の通知を受ける際、データの使用状況
により決まるヒットレベルの通知を受け、キャッシュコ
ントローラで、ヒットレベルに応じて、そのまま更新方
式を用いるか、無効化方式に切り替えるかを決定するた
め、より正確にアクセス頻度の高いデータのみに更新動
作を行うことができる。
【0245】(6):ヒットレベルとして、セットアソ
シアティブキャッシュの場合の最近にアクセスされたデ
ータを上位とするLRUの順位を用いるため、キャッシ
ュデータの追い出し順序を決定するために装備されたL
RUの順位を用いて、付加的なハードウェアが不要にな
る。
【図面の簡単な説明】
【図1】本発明の原理説明図である。
【図2】実施の形態における共有バスを用いた共有メモ
リ型並列計算機の説明図である。
【図3】実施の形態におけるキャッシュの内部構造の説
明図である。
【図4】実施の形態におけるキャッシュアレイの説明図
である。
【図5】実施の形態におけるブロックのアドレスと共有
バスの説明図である。
【図6】実施の形態におけるヒット0、ヒット1、ヒッ
トmの制御フローチャートである。
【図7】実施の形態におけるデータ読み出し動作のフロ
ーチャートである。
【図8】実施の形態におけるデータ書き込み動作のフロ
ーチャートである。
【図9】実施の形態におけるキャッシュアレイの説明図
である。
【図10】実施の形態における共有バスの構成の説明図
である。
【図11】実施の形態におけるヒット0、ヒット1、ヒ
ット2、ヒットmの制御フローチャートである。
【図12】実施の形態におけるデータ読み出し動作のフ
ローチャートである。
【図13】実施の形態におけるデータ書き込み動作のフ
ローチャートである。
【図14】従来の共有バス型共有メモリ並列計算機の説
明図である。
【図15】従来のキャッシュのコヒーレンス管理の説明
図である。
【図16】従来の無効化方式の説明図である。
【図17】従来の更新方式の説明図である。
【図18】従来の並列計算機におけるfalse sharing の
説明図である。
【符号の説明】
1 プロセッサ 2 キャッシュ 5a 主記憶装置 21 キャッシュコントローラ

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】プロセッサとキャッシュが組となったもの
    の複数組と主記憶装置とが相互結合網を介して接続され
    た構成をとる並列計算機において、 前記キャッシュにキャッシュコントローラを備え、 該キャッシュコントローラが、一度に転送するデータ単
    位毎に無効化方式と更新方式の一貫性管理方式を切り替
    えることのできる構成とし、 前記キャッシュコントローラは、プロセッサからのデー
    タ書き込み時に、前記一貫性管理方式の切り替え情報を
    データ転送時に同時に受け取ることを特徴としたキャッ
    シュメモリ装置。
  2. 【請求項2】前記プロセッサによって書き込みが行われ
    主記憶装置のデータとは一致しないダーティ状態で保持
    するデータに対して、他のキャッシュから読み出し要求
    が発生した時、そのデータに対する書き込みの前記一貫
    性管理方式として更新方式を指示することを特徴とした
    請求項1記載のキャッシュメモリ装置。
  3. 【請求項3】前記データ単位毎に、前記ダーティ状態で
    保持するデータに対する転送が行われた回数を示す回数
    情報を設け、この回数情報が2回以上の決められた回数
    の時、そのデータに対する書き込みの前記一貫性管理方
    式として更新方式を指示することを特徴とした請求項2
    記載のキャッシュメモリ装置。
  4. 【請求項4】プロセッサとキャッシュが組となったもの
    の複数組と主記憶装置とが相互結合網を介して接続され
    た構成をとる並列計算機において、 前記キャッシュにキャッシュコントローラを備え、 該キャッシュコントローラが、一度に転送するデータ単
    位毎に無効化方式と更新方式の一貫性管理方式を切り替
    えることのできる構成とし、 前記キャッシュコントローラは、プロセッサからのデー
    タ書き込み発生時に、そのデータが更新方式で一貫性管
    理を行うものであった場合、実際に更新動作を行う前
    に、各キャッシュの状態を検査し、そのまま更新方式を
    用いるか、無効化方式に切り替えるかを決定することを
    特徴としたキャッシュメモリ装置。
  5. 【請求項5】前記各キャッシュの状態の検査時に、前記
    各キャッシュ状態の通知を受ける際、前記データの使用
    状況により決まるヒットレベルの通知を受け、 前記キャッシュコントローラは、前記ヒットレベルに応
    じて、そのまま更新方式を用いるか、無効化方式に切り
    替えるかを決定することを特徴とした請求項4記載のキ
    ャッシュメモリ装置。
  6. 【請求項6】前記ヒットレベルとして、セットアソシア
    ティブキャッシュの場合の最近にアクセスされたデータ
    を上位とするLRUの順位を用いることを特徴とした請
    求項5記載のキャッシュメモリ装置。
JP11206975A 1999-07-22 1999-07-22 キャッシュメモリ装置 Withdrawn JP2001034597A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11206975A JP2001034597A (ja) 1999-07-22 1999-07-22 キャッシュメモリ装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11206975A JP2001034597A (ja) 1999-07-22 1999-07-22 キャッシュメモリ装置

Publications (1)

Publication Number Publication Date
JP2001034597A true JP2001034597A (ja) 2001-02-09

Family

ID=16532107

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11206975A Withdrawn JP2001034597A (ja) 1999-07-22 1999-07-22 キャッシュメモリ装置

Country Status (1)

Country Link
JP (1) JP2001034597A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7054997B2 (en) 2002-05-24 2006-05-30 Hitachi, Ltd. Disk array system and cache control method
KR20110055179A (ko) * 2009-11-19 2011-05-25 삼성전자주식회사 다중 프로세서 및 그것의 캐시 일관성 관리 장치 및 방법
US9183149B2 (en) 2012-04-17 2015-11-10 Samsung Electronics Co., Ltd. Multiprocessor system and method for managing cache memory thereof
CN108268939A (zh) * 2016-12-30 2018-07-10 上海寒武纪信息科技有限公司 用于执行lstm神经网络运算的装置和运算方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7054997B2 (en) 2002-05-24 2006-05-30 Hitachi, Ltd. Disk array system and cache control method
US7392341B2 (en) 2002-05-24 2008-06-24 Hitachi, Ltd. Disk array system and cache control method
KR20110055179A (ko) * 2009-11-19 2011-05-25 삼성전자주식회사 다중 프로세서 및 그것의 캐시 일관성 관리 장치 및 방법
JP2011108233A (ja) * 2009-11-19 2011-06-02 Samsung Electronics Co Ltd 多重プロセッサ及びそのキャッシュ一貫性管理装置及び方法
KR101662829B1 (ko) 2009-11-19 2016-10-05 삼성전자주식회사 다중 프로세서 및 그것의 캐시 일관성 관리 장치 및 방법
US9183149B2 (en) 2012-04-17 2015-11-10 Samsung Electronics Co., Ltd. Multiprocessor system and method for managing cache memory thereof
CN108268939A (zh) * 2016-12-30 2018-07-10 上海寒武纪信息科技有限公司 用于执行lstm神经网络运算的装置和运算方法

Similar Documents

Publication Publication Date Title
US7747826B2 (en) Data processing system and method for efficient communication utilizing an in coherency state
JP4848771B2 (ja) キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム
US7698508B2 (en) System and method for reducing unnecessary cache operations
US6678799B2 (en) Aggregation of cache-updates in a multi-processor, shared-memory system
US7484042B2 (en) Data processing system and method for predictively selecting a scope of a prefetch operation
US7490202B2 (en) Data processing system and method for efficient L3 cache directory management
US20060179241A1 (en) Data processing system and method for predictively selecting a scope of broadcast of an operation
US7747825B2 (en) Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of shared memory blocks
US20070079072A1 (en) Preemptive eviction of cache lines from a directory
JP5445581B2 (ja) コンピュータシステム、制御方法、記録媒体及び制御プログラム
US8812786B2 (en) Dual-granularity state tracking for directory-based cache coherence
US7194586B2 (en) Method and apparatus for implementing cache state as history of read/write shared data
US6266743B1 (en) Method and system for providing an eviction protocol within a non-uniform memory access system
US7454578B2 (en) Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a location of a memory
US6625694B2 (en) System and method for allocating a directory entry for use in multiprocessor-node data processing systems
JP5004571B2 (ja) 同報通信範囲を示す無効な整合状態を正確に形成するためのデータ処理システム、キャッシュ・システム、および方法
US6615321B2 (en) Mechanism for collapsing store misses in an SMP computer system
US7093075B2 (en) Location-based placement algorithms for set associative cache memory
US8473686B2 (en) Computer cache system with stratified replacement
JP2000322318A (ja) コンピュータキャッシュ用コヒーレンシープロトコル
US7725660B2 (en) Directory for multi-node coherent bus
US7669013B2 (en) Directory for multi-node coherent bus
KR20090053837A (ko) 자기 조화형 데이터를 이용하여 멀티프로세서 시스템의 캐시 코히어런스 오버헤드를 저감시키는 메카니즘 및 방법
JP2001034597A (ja) キャッシュメモリ装置
US6240491B1 (en) Process and system for switching between an update and invalidate mode for each cache block

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20061003