JP2746530B2 - 共有メモリマルチプロセッサ - Google Patents

共有メモリマルチプロセッサ

Info

Publication number
JP2746530B2
JP2746530B2 JP6009374A JP937494A JP2746530B2 JP 2746530 B2 JP2746530 B2 JP 2746530B2 JP 6009374 A JP6009374 A JP 6009374A JP 937494 A JP937494 A JP 937494A JP 2746530 B2 JP2746530 B2 JP 2746530B2
Authority
JP
Japan
Prior art keywords
block
processor
cache
module
shared memory
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 - Lifetime
Application number
JP6009374A
Other languages
English (en)
Other versions
JPH07152647A (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.)
Individual
Original Assignee
Individual
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
Priority claimed from KR1019940001080A external-priority patent/KR0138585B1/ko
Application filed by Individual filed Critical Individual
Publication of JPH07152647A publication Critical patent/JPH07152647A/ja
Application granted granted Critical
Publication of JP2746530B2 publication Critical patent/JP2746530B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は共有メモリマルチプロセ
ッサ(multiprocessor)に関するもので、特に、分離型ト
ランザクションバス(split transaction bus) を用い、
新規な書込み−無効化キャッシュシステム(write-inval
idate cache system) を用いた共有メモリマルチプロセ
ッサ関するものである。
【0002】
【従来の技術】マルチプロセッシング(multiprocessin
g) は現存の単一プロセッサ技術の限界を克服して、シ
ステムコンピューチングパワーを増進させる普遍的な方
法である。マルチプロセッサにおいては、多数の命令語
ストリーム(instruction stream)が並列に行われ、プロ
セッサモジュール間の通信及び同期化はメッセージを伝
達するかメモリモジュールを共有して行われる。
【0003】共有メモリマルチプロセッサは、非常に経
済的にシステムコンピューチングパワーおよびスピード
を増進させる方法であり、これは低価の高性能マイクロ
プロセッサなどが共通バス(common bus)を通じて共有メ
モリモジュールと経済的に相互結合され得るという事実
に基づいている。図3は、共通バスにより多数のプロセ
ッサモジュールが多数の共有メモリモジュールと結合さ
れた典型的な共有メモリマルチプロセッサを示す。
【0004】しかし、かかるシステム構成には次のよう
な二つの根本的な問題点がある。即ち、多数のプロセッ
サモジュールが同時に共通バスをアクセスしようとする
時発生するバスコンテンション(bus contention)と多数
のプロセッサモジュールが一つのメモリモジュールを同
時にアクセスしようとする時発生するメモリコンテンシ
ョン(memory contention) がその問題点である。かかる
問題点などはメモリアクセス時間を増加させ、結局マル
チプロセッサの実行速度を減少させる。
【0005】共通バスにおけるアクセスコンテンション
回数を減らすための一つの方法は、共通バスが不必要に
動作しないことなく出来るだけ多い情報を伝送させるこ
とである。例えば、プロセッサモジュールがメモリモジ
ュールに対するアクセス要求を共通バスを通じて伝送す
る時から応答を受信する時まで共通バスを占める非分離
型トランザクションバス(non-split transation bus)を
用いるより、メモリモジュールに対するアクセス要求伝
送過程と応答伝送過程を分離させて、メモリモジュール
のアクセス要求伝送過程と応答過程との間の共通バスを
用いない間に他のプロセッサモジュールやメモリモジュ
ールがその共通バスを用い得るようにする分離型トラン
ザクションバスを用いることが共通バスにおけるアクセ
スコンテンションの回数を減らすに役立つ。分離型トラ
ンザクションバスに対するより詳細な説明は、例えば、
D.J.Schanin らに許可された米国特許第5,067,071 号に
記述されている。
【0006】共通バスの帯域幅が増加しても、一つのメ
モリモジュールは一回に一つのメモリアクセス要求を処
理し得るので、同時に多数のプロセッサモジュールが一
つのメモリモジュールをアクセスしようとする時発生す
るメモリコンデションによるシステム性能の低下は、依
然と存在する。したがって、できるだけプロセッサモジ
ュールとメモリモジュールとの間のトラフィク(traffi
c) を減少させることが望ましい。
【0007】プロセッサモジュールはプロセッサが度々
用いると予測されるメモリモジュールのブロックをメモ
リモジュール容量は小さいが、より速いアクセス時間を
提供する自体キャッシュに貯蔵することによって共通バ
スとメモリモジュールに対するアクセス要求の回数を減
らし得る。図4には、全てのプロセッサモジュールにキ
ャッシュが含まれたマルチプロセッサ構成を示した。
【0008】しかし、マルチプロセッサの場合、各プロ
セッサモジュールは自体キャッシュを用いるので、一つ
のプロセッサモジュールが自体キャッシュに貯蔵された
ブロックに対する書込み作業を行うことになると、その
書込み作業の結果が他の全てのプロセッサモジュール内
の自体キャッシュに貯蔵されている該当ブロックに反映
されなければならない、いわゆるキャッシュコヒーレン
ス問題(cache coherence problem) が発生する。キャッ
シュコヒーレンスの問題を解決すると共に、プロセッサ
モジュールのバスおよびメモリアクセス要求を減らすた
めに種々のキャッシュコヒーレンス方式が提案された。
かかる方式の中、最も広く用いられる方式中の一つは、
書込み−無効化キャッシュコヒーレンス方式(write-inv
alidatecache coherence scheme) である。
【0009】かかる書込み−無効化キャッシュコヒーレ
ンス方式において、プロセッサモジュール内のキャッシ
ュは、内部に貯蔵された各ブロックに対して状態情報を
保持し、この状態情報は少なくとも三つの可能なキャッ
シュブロック状態(即ち、MODIFIED,INVALIDおよびSHAR
ED)中の一つを表す。MODIFIED状態は、該当ブロックが
該当キャッシュ内で最も最近に変更されたが、該当メモ
リモジュールはまだ更新されなかったことを示す。MODI
FIED状態のブロックが次後に説明されるブロック代替(b
lock replacement )によって新しいブロックに代替され
る場合、そのブロックは該当メモリモジュールでコピー
バック(copy back) されなければならない。INVALID 状
態は該当ブロックが他のプロセッサモジュールにより無
効化されたことを示す。VALID 状態は、該当ブロックが
該当キャッシュ内で変更されず、他のプロセッサモジュ
ールにより無効化されることもなく、また、該当メモリ
モジュール内に貯蔵された該当ブロックとその内容上、
一致するということを示す。前記のキャッシュコヒーレ
ンス方式は、プロセッサモジュール内のプロセッサから
のブロックアクセス要求に対して、一般に、次のように
動作する。
【0010】読出しヒット(read hit)ー前記プロセッサ
モジュール内のキャッシュが、読み出し要求されたブロ
ックをSHAREDやMODIFIED状態で保有している場合であっ
て、前記プロセッサモジュールはそのブロックに対する
読み出し作業を行う。
【0011】読出しミス(read miss) ー前記プロセッサ
モジュール内のキャッシュが、読出し要求されたブロッ
クを有していないか(キャッシュミス)、読出し要求さ
れたブロックをINVALID 状態で有している場合(無効化
ミス)として、前記プロセッサモジュールはメモリモジ
ュールと他のプロセッサモジュールにそのブロックに対
するブロードキャースト読出し要求を伝送する。他のプ
ロセッサモジュールの中、いずれか一つが要求されたブ
ロックをMODIFIED状態で有している場合、そのプロセス
モジュールがブロードキャースト読出し要求に対してそ
のブロックを提供する。他のプロセスモジュールが、要
求されたブロックをMODIFIED状態で有していない場合、
要求されたブロックを有しているメモリモジュールが前
記ブロードキャースト読出し要求に対してそのブロック
を提供する。これによって、前記プロセッサモジュール
は、要求したブロックを受信して読出し作業を行い、そ
のブロックの状態をSHARED状態に保持する。
【0012】書込みヒット(write-hit) ー前記プロセッ
サモジュール内のキャッシュが、書込み要求されたブロ
ックをSHAREDやMODIFIED状態で有している場合として、
MODIFIED状態で保有していると、前記プロセッサモジュ
ールはそのブロックに対する書込み作業を行う。前記プ
ロセッサモジュール内のキャッシュが要求されたブロッ
クをSHARED状態で保有している場合、前記プロセッサモ
ジュールは他のプロセッサモジュールにそのブロックに
対する無効化要求を伝送して、他の全てのプロセッサモ
ジュールがそれらのキャッシュ内に貯蔵された要求され
たブロックのコピーを無効化させるようにし、自体キャ
ッシュに貯蔵されたブロックに対する書込み作業を行
い、ブロックの状態をMODIFIED状態に変更する。
【0013】書込みミス(write miss)ー前記プロセッサ
モジュール内のキャッシュが、書込み要求されたブロッ
クを保有していないか(キャッシュミス)、書込み要求
されたブロックをINVALID 状態で保有している場合(無
効化ミス)として、前記プロセッサモジュールはそのブ
ロックに対する無効化要求が含まれたブロードキャース
ト読出し要求をメモリモジュールおよび他のプロセッサ
モジュールへ伝送して、他の全てのプロセッサモジュー
ルがそれらのキャッシュ内に貯蔵された要求されたブロ
ックのコピーを無効化させると同時に、他のプロセッサ
モジュール中の一つが要求されたブロックをMODIFIED状
態で保持している場合、そのプロセッサモジュールが前
記無効化要求が含まれたブロードキャースト読出し要求
に対してそのブロックを提供するようにする。反面、あ
るプロセッサモジュールも要求されたブロックをMODIFI
ED状態で保持していない場合、要求されたブロックを保
持しているメモリモジュールが無効化要求が含まれた前
記ブロードキャースト読出し要求に応じてそのブロック
を提供する。これによって、前記プロセッサモジュール
は、要求したブロックを受信してその状態をMODIFIED状
態に変更し、書込み作業を行う。
【0014】前述した書込み−無効化キャッシュコヒー
レンス方式の多様な変形が、例えば、Per Stenstrom の
“A Survey of Cache Coherence Schemes for Multipro
cessors ”(IEEE Computer,June 1990,pp.12-24);Param
arcos,M およびPatel,J.の“A Low Overhead Coherence
Solution for Multiprocessors with Private CacheMe
mories ”(11th ISCA,1984,pp.348-354);R.H.Katzらの
“Implementing A Cache Consistency Protocol ”(12t
h ISCA,1985,pp.276-283);およびTom LovettとShreekan
t Thakkar の“The Symmetry Multiprocessor System”
(1988 ICPP,Vol.I,August 1988,pp.303-310)などに記述
されている。
【0015】かかる従来の書込み−無効化キャッシュコ
ヒーレンス方式などは非分離型トランザクションバスを
用いたマルチプロセッサ環境下でとは異なって、分離型
トランザクションバスを用いたマルチプロセッサ環境下
では下記のような非効率性を示す。
【0016】前述したように、既存の書込み−無効化キ
ャッシュコヒーレンス方式においては、無効化ミスが発
生する時ごとに、プロセッサモジュールは(無効化要求
が含まれた)ブロードキャースト読出し要求をメモリモ
ジュールと他のプロセッサモジュールに伝送する。ま
た、分離型トランザクションバスは、メモリアクセス要
求およびそれに相応する応答との間にバスを解除(relea
se) して、その期間の間バスが他のモジュールにより用
いられるように許容する。
【0017】かかる状況下において、図5の例で示す通
り、プロセッサモジュール1でブロックXに対する無効
化ミスが発生し、次いでプロセッサモジュール2で他の
ブロックYに対するキャッシュミスが発生すると、(メ
モリモジュールが一つであり、このメモリモジュールに
一つの要求バッファ(request buffer)が与えられたと仮
定する時)プロセッサモジュール1はブロックXに対す
る( 無効化要求が含まれた) ブロードキャースト読出し
要求を、プロセッサモジュール2はブロックYに対する
( 無効化要求が含まれた) ブロードキャースト読出し要
求をメモリモジュールおよび他のプロセッサモジュール
へ伝送する。
【0018】これによって、メモリモジュールはブロッ
クXに対する(無効化要求が含まれた)ブロードキャー
スト読出し要求に対してブロックXに対するメモリ読出
し動作を始めるが、メモリモジュールは一回に一つのメ
モリアクセス要求を処理し得るので、ブロックYに対す
る( 無効化要求が含まれた) ブロードキャースト読出し
要求は、要求バッファに貯蔵する。したがって、プロセ
ッサモジュール2からの要求に対する処理はメモリモジ
ュールがプロセッサモジュール1からの要求に対する応
答を完了するか、ブロックXをMODIFIED状態で保有して
いる(即ち、ブロックXの更新されたコピーを保有して
いる)他のプロセッサモジュールがメモリモジュールの
代わりにブロックXを提供するという情報をメモリモジ
ュールへ伝送する時まで遅延される。
【0019】しかし、他のプロセッサモジュール中の一
つがブロックXをMODIFIED状態で保有していることを既
に知ることができれば、プロセッサモジュール1はブロ
ックXに対する( 無効化要求が含まれた) ブロードキャ
ースト読出し要求を他のプロセッサモジュールへだけ伝
送して、不要なメモリアクセスを減らし得るので、メモ
リモジュールはブロックYに対する( 無効化要求が含ま
れた) ブロードキャースト読出し要求に対する応答を遅
延することなく処理して実質的なメモリアクセス時間を
減少させ得る。
【0020】
【発明が解決しようとする課題】したがって、本発明の
主目的は、キャッシュコヒーレンス問題を解決すると同
時に実質的なメモリアクセス時間を減らすことができる
分離型トランザクションバスを用いた共有メモリマルチ
プロセッサを提供することにある。
【0021】
【課題を解決するための手段】上記目的を達成するため
に、第1の発明の共有メモリマルチプロセッサは、分離
型トランザクションプロトコル(split transaction pro
tocol)下で動作するシステムバスと、このシステムバス
に結合したメモリモジュールと、前記システムバスに結
合している複数のプロセッサモジュールとを有する共有
メモリマルチプロセッサにおいて、前記プロセッサモジ
ュールは、プロセッサと、このプロセッサと前記システ
ムバスとの間に結合し、ブロックを貯蔵するキャッシュ
と、このキャッシュに貯蔵された前記ブロックが無効化
状態であるときには、前記メモリモジュールが前記無効
化状態のブロックの更新されたコピーを保有するか否か
を表す状態情報を備える状態情報貯蔵装置とを含み、前
記プロセッサモジュールは前記プロセッサから前記無効
化状態のブロックに対するアクセス要求を受信したと
き、前記状態情報が前記メモリモジュールには前記更新
されたコピーを保有していないことを表す情報である場
合には前記システムバスを通じて前記複数のプロセッサ
モジュールとだけ通信して前記更新されたコピーとアク
セスすることを特徴とする。また、第2の発明の共有メ
モリマルチプロセッサは、分離型トランザクションプロ
トコル下で動作するシステムバスと、前記システムバス
に結合したメモリモジュールと、前記システムバスに結
合している複数のプロセッサモジュールとを有する共有
メモリ多重プロセッサにおいて、前記複数のプロセッサ
モジュールは、プロセッサと、このプロセッサと前記シ
ステムバスとの間に結合し、ブロックを貯蔵するキャッ
シュと、このキャッシュに貯蔵された前記ブロックが無
効化状態であるときには、前記メモリモジュールが前記
無効化状態のブロックの更新されたコピーを保有するか
否かを表す状態情報と、前記プロセッサモジュールのう
ち前記無効化状態のブロックを最後に無効化した一つの
プロセッサモジュールを示す識別情報とを備える状態情
報貯蔵装置とを含み、前記プロセッサモジュールは前記
プロセッサから前記無効化状態のブロックに対するアク
セス要求を受信したとき、前記状態情報が前記メモリモ
ジュールには前記更新されたコピーを保有していないこ
とを表す情報である場合には前記システムバスを通じて
前記識別情報が示す前記一つのプロセッサモジュールと
だけ通信して前記更新されたコピーとアクセスすること
を特徴とする。
【0022】
【作用】上記構成によれば、前記各プロセッサモジュー
ルは前記プロセッサから前記各ブロックに対するアクセ
ス要求を受信した時、前記状態情報が前記少なくとも一
つ以上のメモリモジュールが前記更新されたコピーを保
有していないことを表す場合、前記システムバスを通じ
て、ただ前記多数のプロセッサモジュールと通信するこ
とによって前記更新されたコピーをアクセスすることに
よって、不要なメモリアクセスを減らし、実質的なメモ
リアクセス時間を減らすことができる。
【0023】
【実施例】以下、本発明の実施例を添付図面を参照しな
がら詳細に説明する。
【0024】まず、図1を参照すれば、本発明の新規な
書込み−無効化キャッシュシステムを用いた共有メモリ
マルチプロセッサの例示的なブロック図が示されてい
る。図示の通り、共有メモリマルチプロセッサには、少
なくともーつ以上のメモリモジュール100と少なくと
も二つ以上のプロセッサモジュール(200、20
0′)が分離型トランザクションバス300により結合
されており、各プロセッサモジュール(200または2
00′)はプロセッサ(400または400′)および
キャッシュ(500または500′)を含む。
【0025】メモリモジュール100とキャッシュ(5
00または500′)において、データは同一な大きさ
のブロックに分離されて貯蔵される。キャッシュ(50
0または500′)に貯蔵されている一つのブロックに
対するアクセスはプロセッサ(400または400′)
からそのブロックに対するアクセス要求と共にそのブロ
ックの物理的なアドレスが伝達されることによって開始
される。(キャッシュ500、500′は、全て同じ構
造および機能を有しているので、以下、キャッシュ50
0に対してだけ詳述する。また、以下、本発明の実施例
を説明することにおいて、キャッシュ500が下記した
ような直接マッピング(direct mapping)方式を用いる場
合に対して説明するが、本発明はキャッシュ500が他
のマッピング方式、例えば、2-Way set-associative ma
pping(Mano,M.M.,Computer Engineering,Prentice hal
l,1988 参照) などを用いた場合にも同一に適用され得
ることは勿論である)。
【0026】ブロックの物理的アドレスがnビットで与
えられた時、この中、例えば下位kビットはキャッシュ
500内のブロックをアクセスするために用いられ、n
ビットアドレスはメモリモジュール100内のブロック
をアクセスするために用いられる。かかる下位kビット
部分は“ブロックアドレス”と呼ばれ、残りの上位nー
kビット部分は“タグアドレス”と呼ばれる。キャッシ
ュ500内の各ブロックは、データとこれに連関された
タグアドレスから構成される。したがって、一つのブロ
ックがキャッシュ500内に新しく貯蔵される場合、デ
ータとタグアドレスが共に貯蔵される。この場合、プロ
セッサ(400または400′)から一つのブロックに
対するアクセス要求と共にそのブロックの物理的なアド
レスがキャッシュ500に到着すると、そのブロックの
物理的なアドレスの“ブロックアドレス部分”は、キャ
ッシュ500内のブロックをアクセスするために用いら
れ、そのブロックの物理的なアドレスの“タグアドレ
ス”部分はキャッシュ500に貯蔵された“ブロックア
ドレス”部分によりアクセスされたブロック内のタグア
ドレスビットとの比較のために用いられる。前記タグア
ドレス部分と前記キャッシュからのタグアドレスビット
が一致すれば、キャッシュ500がそのブロックを保有
していることを意味する。
【0027】また、本発明によるキャッシュ500は、
貯蔵された各ブロックに対して、そのブロックの現在状
態を示すキャッシュブロック状態情報(cache block sta
te information) を保持する。
【0028】前述した通り、従来の書込みー無効化キャ
ッシュコヒーレンス方式によると、プロセッサモジュー
ルで一つのブロックに対する無効化ミスが発生すれば、
( 無効化要求が含まれた) 読出し要求がメモリモジュー
ルと他のプロセッサモジュールへ伝送され、このため共
有メモリマルチプロセッサの性能に悪い影響を及ぶ。し
かし、本発明でのように、他のプロセッサモジュールが
そのブロックをMODIFIED状態で、即ち、そのブロックの
更新されたコピーを貯蔵していることが分かることがで
きれば、前記( 無効化要求が含まれた) 読出し要求は、
他のプロセッサモジュールへだけ伝送されて、メモリモ
ジュールは前記( 無効化要求が含まれた) 読出し要求に
対するトランザクションで除外されて、不要なメモリア
クセスが除去されるので、実質的なメモリアクセス時間
を減少し得る。
【0029】しかし、かかる改善を成すために、本発明
のキャッシュシステム500は、INVALID 状態を最小限
二つのキャッシュブロック状態、例えば、NON-COPYBACK
-INVALID状態とCOPYBACK-INVALID状態に区別して保持し
なければならない。
【0030】NON-COPYBACK-INVALID状態とCOPYBACK-INV
ALID状態は、共に共有メモリマルチプロセッサ内の他の
プロセッサモジュールにより該当ブロックが無効化され
たことを意味する。しかし、NON-COPYBACK-INVALID状態
は、該当ブロックを最も最近に無効化させたプロセッサ
モジュールが自分が保有している該当ブロックの更新さ
れたコピーをメモリモジュール100へコピーバックし
なかったことを表すが、COPYBACK-INVALID状態は、該当
ブロックを最も最近に無効化させたプロセッサモジュー
ルが自分が保有している該当ブロックの更新されたコピ
ーを次により詳細に記述されるブロック代替にしたがっ
て、メモリモジュール100へコピーバックさせたこと
を意味する。
【0031】また、本発明の一つの実施例によって、本
発明のキャッシュ500は、次のような五つの追加的な
キャッシュブロック状態を含み得る。即ち、MODIFIED-S
HARED 、MODIFIED,EXCLUSIVE,SHARED-SOURCE,SHARED の
五つのキャッシュブロック状態を含み得、これらの状態
は全て有効(即ち、共有メモリマルチプロセッサ内の他
のプロセッサモジュールにより無効化されなかった)キ
ャッシュブロック状態を意味する。
【0032】MODIFIED-SHARED およびMODIFIED状態は、
該当ブロックがキャッシュ500内で最も最近に更新さ
れた(即ち、キャッシュ500が該当ブロックの更新さ
れたコピーを保有している)と、メモリモジュール10
0内のものと一致しないを意味する。MODIFIED状態は、
また他のキャッシュ500′には該当ブロックが有効な
状態で存在しないを意味する。
【0033】EXCLUSIVE 状態は、該当ブロックがメモリ
モジュール100のものと一致し、他のキャッシュ50
0′には該当ブロックが有効な状態で存在しないを示
す。
【0034】SHARED-SOURCE 状態は、該当ブロックがメ
モリモジュール100のものと一致し、キャッシュ50
0内で該当ブロックに対する最も最近の読出しミスが発
生しており、他のキャッシュ500には、該当ブロック
がMODIFIED-SHARED またはMODIFIED状態では存在しない
を表す。また、SHARED状態は該当ブロックの状態が前記
したある状態にも属しなく、ただし有効であることを示
す。
【0035】本発明の実施例によると、MODIFIED-SHARE
D やMODIFIED、EXCLUSIVE,SHARD-SOURCEの状態で該当ブ
ロックを保有したプロセッサモジュールが該当ブロック
の所有者となることによって、他のプロセッサモジュー
ルから該当ブロックに対するアクセス要求受信時、それ
に対する応答をする責任がある。
【0036】図2を参照すれば、本発明の一つの実施例
によるキャッシュ500の具現例がブロック形態で示さ
れている。示された通り、キャッシュ500は各々キャ
ッシュ500内に貯蔵されたブロックのタグアドレスを
保有したプロセッサタグキャッシュ510及びバスモニ
タタグキャッシュ520;各々プロセッサタグキャッシ
ュ510及びバスモニタタグキャッシュ520に結合さ
れた二つの比較器511、521;貯蔵された各々のキ
ャッシュブロックに対して、前述したような七つのキャ
ッシュブロック状態中、一つの状態を示すキャッシュブ
ロック状態情報を貯蔵する状態情報キャッシュ530;
キャッシュブロックを貯蔵するデータキャッシュ54
0;キャッシュ制御器550;キャッシュ制御器550
の制御下でプロセッサ400およびキャッシュ500を
システムバス100に接続するバスインタフェース56
0を含む。
【0037】プロセッサ400が一つのブロックに対す
るアクセス要求とそのブロックの物理的アドレスをキャ
ッシュ500へ伝送すると、“ブロックアドレス”と表
現された前記物理的なアドレスの部分が、プロセッサタ
グキャッシュ510、状態情報キャッシュ530及びデ
ータキャッシュ540をアクセスするに用いられる。比
較器511は、プロセッサタグキャッシュ510からの
タグアドレスと、“タグアドレス”と表現された前記物
理的なアドレスの他の部分を入力として、比較動作を行
う。比較器511内でこれらの二つの入力が一致すれ
ば、キャッシュ500は、要求されたブロックを保有し
ている。
【0038】バス監視作業は、バスモニタタグキャッシ
ュ520を用いて処理され、したがってバス監視作業は
プロセッサ400がキャッシュをアクセスする作業と並
行して行われる。即ち、キャッシュ500において、バ
ス300からある命令語(bus-oriented command)が所望
のブロックの物理的アドレスと共に受信されると、前記
物理的アドレスの“ブロックアドレス”部分は、バスモ
ニタタグキャッシュ520、状態情報キャッシュ530
およびデータキャッシュ540をアクセスするに用いら
れる。比較器521はバスモニタタグキャッシュ520
からのタグアドレスと、前記物理的なアドレスの“タグ
アドレス”部分を入力として提供受けて比較作業を行
う。比較器521内でこれら二つの入力が一致すると、
キャッシュ500が所望のブロックを保有していること
を意味する。
【0039】キャッシュ制御器550は、前記した入力
の一致可否に関する情報を受け、プロセッサ400から
の要求および/またはシステムバス300からの命令語
に応じて、そのブロックに対する状態情報を検査/変更
し、下記のようなCOMMAND,VALID,DIRTY,MEMORY-INHIBI
T、SOURCE-ID およびDESTINATION-IDラインなどを検査
/変更し、キャッシュ500の全般的な動作を制御およ
び同期化させる。
【0040】図1をさらに参照すれば、共有メモリマル
チプロセッサの主な要素間の通信は、システムバス30
0上で成される。システムバス300は、三つのバス、
即ち、アドレスバス、データバス及び制御バスを含み、
前述したような分離型トランザクションプロトコルを用
いる。また、制御バスはCOMMAND,VALID,DIRTY,MEMORY-I
NHIBIT,SOURCE-IDおよびDESTINATION-ID ラインを含み
得る。
【0041】COMMAND ラインは、メモリモジュール10
0およびプロセッサモジュール200、200′の間
に、次により詳細に説明されるブロードキャースト読出
し要求、キャッシューキャッシュなど読出し要求(cache
-to-caches read request)、無効化要求、無効化要求が
含まれたブロードキャースト読出し要求(broadcast rea
d with invalidation request)、無効化要求が含まれた
キャッシューキャッシュなど読出し要求(cache-to-cach
es read with invalidation request)を含む命令語を伝
送する。
【0042】VALID,DIRTY およびMEMORY-INHIBITライン
は( 無効化要求が含まれた) ブロードキャースト読出し
要求に用いられる。例えば、プロセッサモジュール20
0がいずれかのブロックに対するキャッシュミスによっ
て、メモリモジュール100と他のプロセッサモジュー
ル200′へブロードキャースト読出し要求を伝送すれ
ば、他のプロセッサモジュール200′はそれらが保有
する該当ブロックの状態情報にしたがってVALID,DIRTY
およびMEMORY-INHIBITライン上に該当信号を印加する。
その後、プロセッサモジュール200はVALID ラインを
検査して、他のプロセッサモジュールに該当ブロックが
EXCLUSIVE,SHARED-SOURCE またはSHARED状態中のいずれ
か一つの状態で存在するかを判断し得、DIRTY ラインを
検査して該当ブロックがMODIFIED-SHARED またはMODIFI
ED状態で存在するかを判断し得る。また、メモリモジュ
ール100はMEMORY-INHIBITラインを検査して、MEMORY
-INHIBIT信号が印加された場合、前記( 無効化要求が含
まれた) ブロードキャースト読出し要求に対する処理を
中断し得る。
【0043】SOURCE-ID ラインは( 無効化要求が含まれ
た) ブロードキャースト読出し要求、無効化要求が含ま
れたキャッシューキャッシュなど読出し要求または無効
化要求などの命令語を発信したソースプロセッサモジュ
ール(source processor module) を識別するために用い
られ、DESTINATION-IDラインは前記命令語を受信するか
要求されたブロックを受信するプロセッサモジュールを
識別するために用いられる。
【0044】以下、本発明の一つの実施例によって、キ
ャッシュ(500および500′)を含むプロセッサモ
ジュール(200および200′)の例示的な動作が読
出しーヒット、読出しーミス、書込みーヒットおよび書
込みーミスの各場合に対して記述される。各場合におい
て、プロセッサモジュール200内のプロセッサ400
がキャッシュ500へ一つのブロックをアクセスするた
めの要求を発生したと仮定する。また、下記のプロセッ
サモジュール200、200′の例示的な動作を説明す
ることにおいて、ブロック代替とはキャッシュミスが発
生したとき、該当キャッシュ内で代替されるブロックが
MODIFIED-SHARED であるかMODIFIED状態で存在したら、
そのブロック(即ち、そのブロックの更新されたコピ
ー)を該当メモリモジュールへコピーバックし、そのブ
ロックを自分のキャッシュ内でNON-COPYBACK-INVALID状
態で保有している他の全てのプロセッサモジュールに、
例えば、COMMAND ラインを通じて信号を伝送して、それ
らが保有したそのブロックのコピーの状態をCOPYBACK-I
NVALID状態で変更するようにする作業である。
【0045】読出しヒットープロセッサモジュール20
0内のキャッシュ500が読出し要求されたブロックを
MODIFIED-SHARED,MODIFIED,EXCLUSIVE,SHARED-SOURCEま
たはSHARED状態のいずれか一つで保有している場合とし
て、キャッシュ500はそのブロックをプロセッサ40
0へ伝達する。
【0046】読出しーミスープロセッサモジュール20
0内のキャッシュ500が、読出し要求されたブロック
を保有していないかCOPYBACK-INVALIDやNON-COPYBACK-I
NVALID状態で保有している場合として、そのブロックを
キャッシュ500に保有していなければ、プロセッサモ
ジュール200はブロック代替を行い、メモリモジュー
ル100および他のプロセッサモジュール200′にそ
のブロックに対するブロードキャースト読出し要求を伝
送する。一方、キャッシュ500が要求されたブロック
をCOPYBACK-INVALID状態で保有していれば、プロセッサ
モジュール200はブロック代替なく、メモリモジュー
ル100および他のプロセッサモジュール200′へそ
のブロックに対するブロードキャースト読出し要求を伝
送する。
【0047】他のプロセッサモジュール200′中の一
つが要求されたブロックをEXCLUSIVE やSHARED-SOURCE
状態で保有している場合、そのプロセッサモジュール2
00′は、VALID およびMEMORY-INHIBIT信号を該当ライ
ンに印加し、前記読出し要求に対して自体キャッシュ5
00′に貯蔵されたそのブロックのコピーを提供するこ
とによって応答し、自体キャッシュに貯蔵されたそのブ
ロックの状態をSHARD状態に変更する。他のプロセッサ
モジュール200′中のいずれか一つが要求されたブロ
ックをMODIFIED-SHARED やMODIFIED状態で保有している
場合、そのプロセッサモジュール200′はDIRTY およ
びMEMORY-INHIBIT信号を該当ラインに印加し、前記読出
し要求に対して自体キャッシュに貯蔵されたそのブロッ
クのコピーを提供することによって応答し、自体キャッ
シュに貯蔵されたそのブロックの状態をMODIFIED-SHARE
D 状態で保持/変更する。他のプロセッサモジュール2
00′が要求されたブロックをSHARED状態で保有してい
る場合、そのプロセッサモジュール200′はVALID 信
号をVALID ラインに印加する。
【0048】メモリモジュール100は、かかるトラン
ザクションの間、MEMORY-INHIBITラインを調査してMEMO
RY-INHIBIT信号が印加されなかった場合、前記読出し要
求に対して該当ブロックのコピーを提供する。
【0049】前述の過程を通じて、プロセッサモジュー
ル200が、メモリモジュール100または他のプロセ
ッサモジュール200′中の一つから要求されたブロッ
クの有効なコピーを受信すると、VALID ラインおよびDI
RTY ラインを検査して、受信されたブロックを次のよう
な状態で自体キャッシュ500に貯蔵し、該当読出し作
業を行う。DIRTY 信号が印加された場合、プロセッサモ
ジュール200は、受信したブロックをSHARED状態でキ
ャッシュ500に貯蔵する。VALID 信号が印加された
が、DIRTYT信号が印加されていない場合、プロセッサモ
ジュール200は受信したブロックをSHARED-SOURCE 状
態でキャッシュ500に貯蔵する。VALID信号もDIRTY
信号も印加されていない場合、プロセッサモジュール2
00は、受信したブロックをEXCLUSIVE 状態でキャッシ
ュ500に貯蔵する。
【0050】しかし、プロセッサモジュール200内の
キャッシュ500が要求されたブロックをNON-COPYBACK
-INVALID状態で保有している場合、プロセッサモジュー
ル200は(従来のキャッシュコヒーレンス方式におい
てブロードキャースト読出し要求をメモリモジュール1
00および他のプロセッサモジュール200′へ伝送す
る代わりに)キャッシューキャッシューなど読出し要求
を他のプロセッサモジュール200′へだけ伝送する。
【0051】これによって、要求されたブロックを最も
最近に無効化させて、そのキャッシュ500′内にその
ブロックをMODIFIEDやMODIFIED-SHARED 状態で保有して
いるプロセッサモジュール200′は、自体キャッシュ
500′に貯蔵されたそのブロックのコピーをプロセッ
サモジュール200へ伝送して、前記キャッシューキャ
ッシュなど読出し要求に応答して、自体キャッシュ50
0′に貯蔵されたそのブロックの状態をMODIFIED-SHARE
D 状態に保持/変更する。
【0052】プロセッサモジュール200は、要求され
たブロックの有効なコピーを受信すると、その受信した
ブロックをSHARED状態でキャッシュ500に貯蔵し、該
当読出し作業を行う。
【0053】書込みーヒットープロセッサモジュール2
00内のキャッシュ500が書込み要求されたブロック
をMODIFIED-SHARED 状態やMODIFIED、EXCLUSIVE,SHARED
-SOURCE,SHARED状態で保有する場合として、プロセッサ
モジュール200内のキャッシュ500が要求されたブ
ロックをMODIFIED状態で保有している場合、プロセッサ
モジュール200は、書込み作業を行う。
【0054】キャッシュ500が要求されたブロックを
EXCLUSIVE 状態で保有している場合、プロセッサモジュ
ール200はそのブロックに対する書込み作業を行い、
そのブロックの状態をMODIFIED状態に変更する。
【0055】キャッシュ500が要求されたブロックを
MODIFIED-SHARED 、SHARED-SOURCEまたはSHAREDの中、
いずれか一つの状態で保有している場合、プロセッサモ
ジュール200は他のプロセッサモジュール200′に
そのブロックに対する無効化要求を伝送して、他の全プ
ロセッサモジュール200′がそれらが保有した要求さ
れたブロックのコピーの状態をNON-COPYBACK-INVALID状
態に変更するようにする。これらコピーが全て無効化さ
れた後、プロセッサモジュール200は、要求されたブ
ロックに対する書込み作業を行い、そのブロックの状態
をMODIFIED状態に変更する。
【0056】書込みーミスープロセッサモジュール20
0内のキャッシュ500が、書込み要求されたブロック
を保有していないか、COPYBACK-INVALID、NON-COPYBACK
-INVALID状態で保有している場合として、プロセッサモ
ジュール200内のキャッシュ500が要求されたブロ
ックを保有していないと、プロセッサモジュール200
はブロック代替を行い、メモリモジュール100および
他の全プロセッサモジュール200′にそのブロックに
対する無効化要求が含まれたブロードキャースト読出し
要求を伝送する。キャッシュ500が要求されたブロッ
クをCOPYBACK-INVALID状態で保有している場合、プロセ
ッサモジュール200はブロックの代替無くメモリモジ
ュール100および他のプロセッサモジュール200′
にそのブロックに対する無効化要求が含まれたブロード
キャースト読出し要求を伝送する。
【0057】他のプロセッサモジュール200中、いず
れか一つが、要求されたブロックをMODIFIED、MODIFIED
-SHARED 、EXCLUSIVE またはSHARED-SOURCE の中、いず
れか一つの状態で保有している場合、そのプロセッサモ
ジュール200′は、MEMORY-INHIBIT信号をMEMORY-INH
IBITラインに印加し、自体キャッシュ500′に貯蔵さ
れたそのブロックのコピーを提供することによって、前
記要求に応答し、自体キャッシュ500′に貯蔵された
そのブロックの状態をNON-COPYBACK-INVALID状態に変更
する。他のプロセッサモジュール200′が、要求され
たブロックをSHARED、COPYBACK-INVALID,NON-COPYBACK-
INVALID 状態で保有している場合、プロセッサモジュー
ル200′は、自体キャッシュに貯蔵されたそのブロッ
クの状態をNON-COPYBACK-INVALID状態で保持/変更す
る。
【0058】メモリモジュール100は、かかるトラン
ザクションの間、MEMORY-INHIBITラインを調査して、ME
MORY-INHIBIT信号が印加されなかった場合、前記要求に
対して該当ブロックのコピーを提供する。
【0059】プロセッサモジュール200が、メモリモ
ジュール100または他のプロセッサモジュール20
0′中のいずれか一つから要求されたブロックの有効な
コピーを受信する場合、受信したブロックを自体キャッ
シュ500にMODIFIED状態に貯蔵し、該当書込み作業を
行う。
【0060】しかし、プロセッサモジュール200内の
キャッシュ500が、要求されたブロックをNON-COPYBA
CK-INVALID状態で保有している場合、プロセッサモジュ
ール200は(従来のキャッシュコヒーレンス方式にお
いて、無効化要求が含まれたブロードキャースト読出し
要求をメモリモジュール100および他のプロセッサモ
ジュール200′へ伝送する代わりに)無効化要求が含
まれたキャッシューキャッシュなど読出し要求を他のプ
ロセッサモジュール200′へだけ伝送する。
【0061】これによって、要求されたブロックを最も
最近に無効化させることによって、そのキャッシュ50
0′内に要求されたブロックをMODIFIEDやMODIFIED-SHA
RED状態で保有しているプロセッサモジュール200′
は、自体キャッシュ500′に貯蔵されたそのブロック
の更新されたコピーをプロセッサモジュール200へ伝
送して、前記無効化要求が含まれたキャッシューキャッ
シュなど読出し要求に応答して、自体キャッシュ50
0′内に貯蔵されたブロックの状態をNON-COPYBACK-INV
ALID状態に変更する。他のプロセッサモジュール20
0′が要求されたブロックをその以外の状態に保有して
いる場合、そのプロセッサモジュール200′は前記無
効化要求が含まれたキャッシューキャッシュなど読出し
要求に対して、自体キャッシュ500内に貯蔵されたブ
ロックのコピーの状態をNON-COPYBACK-INVALID状態に変
更する。
【0062】プロセッサモジュール200は、要求され
たブロックの有効なコピーを受信すると、受信したブロ
ックの状態をMODIFIED状態に自体キャッシュ500に貯
蔵し、所望の書込み作業を行う。
【0063】前述したプロセッサモジュールの動作にお
いて、プロセッサモジュール200が要求されたブロッ
クを最も最近に無効化させた(即ち、要求されたブロッ
クの更新されたコピーを保有している)プロセッサモジ
ュールを識別し得ると、前記キャッシューキャッシュな
ど読出し要求はキャッシューキャッシュ読出し要求に代
替され得る。
【0064】このために、本発明のキャッシュ500、
500′は本発明のもう他の実施例によって、それらの
状態情報キャッシュ内にキャッシュ500、500′に
貯蔵された各キャッシュブロックに対する一つの付加的
な領域、即ち、該当ブロックを最も最近に無効化させた
プロセッサモジュールを識別する目的地識別領域を保持
し得る。
【0065】以下、前述の本発明のもう他の実施例によ
って、キャッシュ500、500′を含むプロセッサモ
ジュール200、200′の例示的な動作を読出しヒッ
ト、読出しミス、書込みヒット、書込みミスの各場合に
対して説明する。
【0066】読出しヒットープロセッサモジュール20
0内のキャッシュ500が、要求されたブロックをMODI
FIED-SHARED 、MODIFIED,EXCLUSIVE,SHARED-SOURCEまた
はSHARED状態のある一つの状態に保有している場合とし
て、キャッシュ500はそのブロックをプロセッサ40
0へ伝達する。
【0067】読出しーミスープロセッサモジュール20
0内のキャッシュ500が読出し要求されたブロックを
保有していないか、COPYBACK-INVALID、NON-COPYBACK-I
NVALID状態に保有している場合として、プロセッサモジ
ュール200内のキャッシュ500が要求されたブロッ
クを保有していないと、プロセッサモジュール200は
ブロック代替を行い、メモリモジュール100及び他の
プロセッサモジュール200′へそのブロックに対する
ブロードキャースト読出し要求を伝送する。一方、キャ
ッシュ500が要求されたブロックをCOPYBACK-INVALID
状態で保有している場合、プロセッサモジュール200
はブロック代替のなくメモリモジュール100及び他の
プロセッサモジュール200′へそのブロックに対する
ブロードキャースト読出し要求を伝送する。
【0068】他のプロセッサモジュール200′中、い
ずれか一つが要求されたブロックをEXCLUSIVE やSHARED
-SOURCE 状態で保有している場合、そのプロセッサモジ
ュール200′はVALID およびMEMORY-INHIBIT信号を該
当ラインに印加し、前記読出し要求に対して自体キャッ
シュ500′に貯蔵されたそのブロックのコピーを提供
することによって応答し、自体キャッシュ500′に貯
蔵されたそのブロックの状態をSHARED状態に変更する。
他のプロセッサモジュール200′の中のある一つが要
求されたブロックをMODIFIED-SHARED やMODIFIED状態で
保有している場合、そのプロセッサモジュール200′
はDIRTY およびMEMORY-INHIBIT信号を該当ラインに印加
し、前記読出し要求に対して自体キャッシュ500′に
貯蔵されたそのブロックのコピーを提供することによっ
て応答し、自体キャッシュ500′に貯蔵されたそのブ
ロックの状態をMODIFIED-SHARED 状態に保持/変更す
る。他のプロセッサモジュール200′が要求されたブ
ロックをSHARED状態で保有している場合、そのプロセッ
サモジュール200′はVALID 信号をVALID ラインに印
加する。
【0069】メモリモジュール100は、かかるトラン
ザクションの間、MEMORY-INHIBITラインを調査して、ME
MORY-INHIBIT信号が印加されていない場合、前記読出し
要求に対して該当ブロックのコピーを提供する。
【0070】前述の過程を通じて、プロセッサモジュー
ル200がメモリモジュール100または他のプロセッ
サモジュール200′中、いずれか一つから要求された
ブロックの有効なコピーを受信すると、VALID ラインお
よびDIRTY ラインを検査して、受信したブロックを次の
ように自体キャッシュ500に貯蔵し、該当読出し作業
を行う。DIRTY 信号が印加された場合、プロセッサモジ
ュール200は受信したブロックをSHARED状態でキャッ
シュ500に貯蔵する。VALID 信号が印加されたがDIRT
Y 信号が印加されていない場合、プロセッサモジュール
200は、受信したブロックをSHARED-SOURCE 状態でキ
ャッシュ500に貯蔵する。VALID 信号もDIRTY 信号も
印加されていない場合、プロセッサモジュール200は
受信したブロックの状態をEXCLUSIVE 状態でキャッシュ
500に貯蔵する。しかし、プロセッサモジュール20
0内のキャッシュ500が、要求されたブロックをNON-
COPYBACK-INVALID状態で保有している場合、プロセッサ
モジュール200はそのブロックに対するキャッシュー
キャッシュ読出し要求を要求されたブロックのDESTINAT
ION-ID領域が示す他のプロセッサモジュール200′へ
伝送する(DESTINATION-ID領域はそのブロックを最も最
近に無効化させることによって、そのキャッシュ50
0′内にそのブロックをMODIFIEDやMODIFIED-SHARED 状
態で保有しているプロセッサモジュール200′を示す
情報を貯蔵することに注意する)。
【0071】プロセッサモジュール200′は、それが
保有した、要求されたブロックの更新されたコピーをプ
ロセッサモジュール200へ伝送して、前記キャッシュ
ーキャッシュ読出し要求に応答して、自体キャッシュ5
00′内に貯蔵されたそのブロックの状態をMODIFIED-S
HARED 状態に保持/変更する。
【0072】プロセッサモジュール200は、要求され
たブロックの有効なコピーを受信すると、受信したブロ
ックをSHARED状態でキャッシュ500に貯蔵し、該当読
出し作業を行う。
【0073】書込みヒットープロセッサモジュール20
0内のキャッシュ500が、書込み要求されたブロック
をMODIFIED-SHARED 状態やMODIFIED、EXCLUSIVE,SHARED
-SOURCE,SHAERED 状態で保有した場合として、プロセッ
サモジュール200内のキャッシュ500が要求された
ブロックをMODIFIED状態で保有する場合、プロセッサモ
ジュール200は、書込み動作を行う。
【0074】キャッシュ500が要求されたブロックを
EXCLUSIVE 状態で保有している場合、プロセッサモジュ
ール200はそのブロックに対する書込み作業を行い、
そのブロックの状態をMODIFIED状態に変更する。
【0075】キャッシュ500が要求されたブロックを
MODIFIED-SHARED 、SHARED-SOURCEまたはSHAREDの中、
いずれか一つの状態で保有している場合、プロセッサモ
ジュール200は、他のプロセッサモジュール200′
にそのブロックに対する無効化要求を伝送して、他のプ
ロセッサモジュール200′がそれらが保有した、要求
されたブロックのコピーの状態をNON-COPYBACK-INVALID
状態に変更するようにし、それらのコピーのDESTINATIO
N-ID領域を更新してプロセッサモジュール200を明示
するようにする。全コピーが無効化された後、プロセッ
サモジュール200は、要求されたブロックに対する書
込み作業を行い、そのブロックの状態をMODIFIED状態に
変更する。
【0076】書込みミスープロセッサモジュール200
内のキャッシュ500が書込み要求されたブロックを保
有していないか、COPYBACK-INVALID、NON-COPYBACK-INV
ALID状態で保有している場合として、プロセッサモジュ
ール200内のキャッシュ500が要求されたブロック
を保有していなければ、プロセッサモジュール200は
ブロック代替を行なって、メモリモジュール100およ
び他のプロセッサモジュール200′にそのブロックに
対する無効化要求が含まれたブロードキャースト読出し
要求を伝送する。一方、キャッシュ500が要求された
ブロックをCOPYBACK-INVALID状態で保有している場合、
プロセッサモジュール200はブロック代替なくメモリ
モジュール100及び他の全プロセッサモジュール20
0′へそのブロックに対する無効化要求が含まれたブロ
ードキャースト読出し要求を伝送する。
【0077】他のプロセッサモジュール200′中、い
ずれか一つが、要求されたブロックをMODIFIED、MODIFI
ED-SHARED 、EXCLUSIVE またはSHARED-SOURCE の中、い
ずれか一つの状態で保有している場合、そのプロセッサ
モジュール200′は、MEMORY-INHIBIT信号をMEMORY-I
NHIBITラインに印加し、自体キャッシュ500′に貯蔵
されたそのブロックのコピーを提供することによって、
前記要求に応答し自体キャッシュ500′に貯蔵された
そのブロックの状態をNON-COPYBACK-INVALID状態に変更
し、そのブロックのDESTINATION-ID領域を変更してプロ
セッサモジュール200を明示するようにする。他のプ
ロセッサモジュール200′が要求されたブロックをSH
ARED,NON-COPYBACK-INVALID またはCOPYBACK-INVALID状
態で保有している場合、プロセッサモジュール200′
は自体キャッシュ500′に貯蔵されたそのブロックの
状態をNON-COPYBACK-INVALID状態に保持/変更し、自体
キャッシュ500′に貯蔵されたそのブロックのDESTIN
ATION-ID領域を変更してプロセッサモジュール200を
明示するようにする。
【0078】メモリモジュール100はかかかるトラン
ザクションの間、MEMORY-INHIBITラインを調査して、ME
MORY-INHIBIT信号が印加されなかった場合、前記要求に
対いて該当ブロックのコピーを提供する。
【0079】プロセッサモジュール200がメモリモジ
ュール100または他のプロセッサモジュール200′
の中、いずれか一つから要求されたブロックの有効なコ
ピーを受信すると、受信したブロックを自体キャッシュ
500にMODIFIED- 状態に貯蔵し、該当書込み作業を行
う。
【0080】しかし、プロセッサモジュール200内の
キャッシュ500が要求されたブロックをNON-COPYBACK
-INVALID状態で保有している場合、プロセッサモジュー
ル200はそのブロックに対する無効化要求が含まれた
キャッシューキャッシュなど読出し要求を他のプロセッ
サモジュール200′へ伝送する。
【0081】これによって、要求されたブロックのDEST
INATION-ID領域によって明示されたプロセッサモジュー
ル200′は、自体キャッシュ500′に貯蔵されたそ
のブロックの更新されたコピーをプロセッサモジュール
200へ伝送して、前記無効化要求が含まれたキャッシ
ューキャッシュなど読出し要求に応答して、自体キャッ
シュ500′内に貯蔵されたそのブロックの状態をNON-
COPYBACK-INVALID状態に変更し、そのブロックのDESTIN
ATION-ID領域がプロセッサモジュール200を明示する
ように動作する。他のプロセッサモジュール200′内
のもう他のキャッシュ500′が要求されたブロックを
その以外の状態に保有している場合、そのプロセッサモ
ジュール200′は前記無効化要求が含まれたキャッシ
ューキャッシュなど読出し要求に対して、自体キャッシ
ュ500′に貯蔵されたそのブロックの状態をNON-COPY
BACK-INVALID状態に変更し、そのブロックのDESTINATIO
N-ID領域がプロセッサモジュール200を明示するよう
に動作する。
【0082】プロセッサモジュール200は、要求され
たブロックの有効なコピーを受信すると、受信したブロ
ックの状態をMODIFIED状態に自体キャッシュ500に貯
蔵し、所望の書込み作業を行う。
【0083】
【発明の効果】前述したように、本発明の新しい書込み
ー無効化キャッシュシステムは分離型トランザクション
バスを用いた共有メモリマルチプロセッサで不要なメモ
リアクセスを減らすことによって、実質的なメモリアク
セス時間を減らし、より優れるマルチプロセッサ性能を
得ることができる。
【図面の簡単な説明】
【図1】本発明の改善された書込みー無効化キャッシュ
システムを含む共有メモリマルチプロセッサを示す図面
である。
【図2】本発明の改善された書込みー無効化キャッシュ
システムをブロック図形態で示す図面である。
【図3】典型的な共有メモリマルチプロセッサを示した
図面である。
【図4】各プロセッサモジュールにキャッシュが含まれ
た形態の典型的な共有メモリマルチプロセッサを示した
図面である。
【図5】従来の共有メモリマルチプロセッサを示した図
面であって、分離型トランザクションバスを用いたマル
チプロセッサ環境下で既存の書込み無効化キャッシュコ
ヒーレンス方式が用いられる時の問題点を示す図面であ
る。
【符号の説明】
100 メモリモジュール 200、200′ プロセッサモジュール 300 分離型トランザクションバス 400、400′ プロセッサ 500、500′ キャッシュ 510 プロセッサタグキャッシュ 511 比較器 520 バスモニタタグキャッシュ 521 比較器 530 状態情報キャッシュ 540 データキャッシュ 550 キャッシュ制御器 560 バスインタフェース
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平3−288955(JP,A)

Claims (30)

    (57)【特許請求の範囲】
  1. 【請求項1】 分離型トランザクションプロトコル(spl
    it transaction protocol)下で動作するシステムバス
    と、このシステムバスに結合したメモリモジュールと、
    前記システムバスに結合している複数のプロセッサモジ
    ュールとを有する共有メモリマルチプロセッサにおい
    て、 前記プロセッサモジュールは、 プロセッサと、 このプロセッサと前記システムバスとの間に結合し、ブ
    ロックを貯蔵するキャッシュと、 このキャッシュに貯蔵された前記ブロックが無効化状態
    であるときには、前記メモリモジュールが前記無効化状
    態のブロックの更新されたコピーを保有するか否かを表
    す状態情報を備える状態情報貯蔵装置とを含み、前記プ
    ロセッサモジュールは前記プロセッサから前記無効化状
    態のブロックに対するアクセス要求を受信したとき、前
    記状態情報が前記メモリモジュールには前記更新された
    コピーを保有していないことを表す情報である場合には
    前記システムバスを通じて前記複数のプロセッサモジュ
    ールとだけ通信して前記更新されたコピーとアクセスす
    ることを特徴とする共有メモリマルチプロセッサ。
  2. 【請求項2】 前記プロセッサモジュールは前記プロセ
    ッサから前記ブロックに対するアクセス要求を受信した
    とき、前記状態情報が前記メモリモジュールが前記更新
    されたコピーを保有していることを表す情報である場合
    には、前記システムバスを通じて、前記メモリモジュー
    ルおよび前記複数のプロセッサモジュールと通信するこ
    とによって、前記更新されたコピーとアクセスすること
    を特徴とする請求項1記載の共有メモリマルチプロセッ
    サ。
  3. 【請求項3】 前記状態情報は、 前記複数のプロセッサモジュールのうち一つのプロセッ
    サモジュールが前記システムバスを通じて前記ブロック
    を無効化したときには、前記メモリモジュールが前記更
    新されたコピーを保有していないことを表し、 前記一つのプロセッサモジュールが前記システムバスを
    通じて前記更新されたコピーを前記メモリモジュールへ
    コピーバックしたときには、前記メモリモジュールが前
    記更新されたコピーを保有していることを表すことを特
    徴とする請求項1記載の共有メモリマルチプロセッサ。
  4. 【請求項4】 前記一つのプロセッサモジュールは、 前記一つのプロセッサモジュールでキャッシュミスが発
    生しており、前記更新されたコピーがブロック代替(blo
    ck replacement) によって新しいブロックに代替される
    場合、前記更新されたコピーを前記メモリモジュールへ
    コピーバックすることを特徴とする請求項3記載の共有
    メモリマルチプロセッサ。
  5. 【請求項5】 前記キャッシュは書込み−無効化キャッ
    シュコヒーレンス方式下で動作することを特徴とする請
    求項4記載の共有メモリマルチプロセッサ。
  6. 【請求項6】 前記状態情報は、 前記プロセッサモジュールのうちの一つのプロセッサモ
    ジュールが前記システムバスを通じて前記ブロックを無
    効化したときには、前記メモリモジュールが前記更新さ
    れたコピーを保有していないことを表し、 前記一つのプロセッサモジュールが前記システムバスを
    通じて前記更新されたコピーを前記メモリモジュールへ
    コピーバックしたときには、前記メモリモジュールが前
    記更新されたコピーを保有していることを表すことを特
    徴とする請求項2記載の共有メモリマルチプロセッサ。
  7. 【請求項7】 前記一つのプロセッサモジュールは、 前記一つのプロセッサモジュールでキャッシュミスが発
    生し、前記更新されたコピーがブロック代替によって新
    しいブロックに代替される場合、前記更新されたコピー
    を前記メモリモジュールへコピーバックすることを特徴
    とする請求項6記載の共有メモリマルチプロセッサ。
  8. 【請求項8】 前記キャッシュは書込み−無効化キャッ
    シュコヒーレンス下で動作することを特徴とする請求項
    7記載の共有メモリマルチプロセッサ。
  9. 【請求項9】 前記キャッシュは、 前記ブロックを貯蔵するデータキャッシュと、 前記ブロックの物理的アドレスのタグアドレス部分を貯
    蔵するプロセッサタグキャッシュと、 前記プロセッサから一つのブロックに対するアクセス要
    求を受信したときには、前記一つのブロックの物理的ア
    ドレスのタグアドレス部分と前記一つのブロックの物理
    的アドレスのブロックアドレス部分とを比較する比較器
    とを含むことを特徴とする請求項1記載の共有メモリマ
    ルチプロセッサ。
  10. 【請求項10】 前記キャッシュは、 前記タグアドレス部分を貯蔵するバスモニタタグキャッ
    シュと、 前記プロセッサモジュール以外の他のプロセッサモジュ
    ールから一つのブロックに対するアクセス要求を受信し
    たときには、前記一つのブロックの物理的アドレスのタ
    グアドレス部分と前記一つのブロックの物理的アドレス
    のブロックアドレス部分とを比較する第2比較器とを含
    むことを特徴とする請求項9記載の共有メモリマルチプ
    ロセッサ。
  11. 【請求項11】 前記プロセッサは内部キャッシュを含
    むことを特徴とする請求項1記載の共有メモリマルチプ
    ロセッサ。
  12. 【請求項12】 前記複数のプロセッサモジュールは、
    既に設定された数の階層的キャッシュを含むことを特徴
    とする請求項1記載の共有メモリマルチプロセッサ。
  13. 【請求項13】 前記複数のプロセッサモジュールは、
    既に設定された数の回路ボード上で実現され、前記既に
    設定された数は前記複数のプロセッサモジュールの数よ
    り小さいかまたは同じであることを特徴とする請求項1
    記載の共有メモリマルチプロセッサ。
  14. 【請求項14】 前記メモリモジュールが、前記複数の
    プロセッサモジュールの間に分散されていることを特徴
    とする請求項1記載の共有メモリマルチプロセッサ。
  15. 【請求項15】 前記システムバスはアドレスバス、デ
    ータバスおよび制御バスを含み、前記メモリモジュール
    と前記複数のプロセッサモジュールとの間の通信を提供
    することを特徴とする請求項1記載の共有メモリマルチ
    プロセッサ。
  16. 【請求項16】 分離型トランザクションプロトコル下
    で動作するシステムバスと、前記システムバスに結合し
    たメモリモジュールと、前記システムバスに結合してい
    る複数のプロセッサモジュールとを有する共有メモリ多
    重プロセッサにおいて、 前記複数のプロセッサモジュールは、 プロセッサと、 このプロセッサと前記システムバスとの間に結合し、ブ
    ロックを貯蔵するキャッシュと、 このキャッシュに貯蔵された前記ブロックが無効化状態
    であるときには、前記メモリモジュールが前記無効化状
    態のブロックの更新されたコピーを保有するか否かを表
    す状態情報と、前記プロセッサモジュールのうち前記無
    効化状態のブロックを最後に無効化した一つのプロセッ
    サモジュールを示す識別情報とを備える状態情報貯蔵装
    置とを含み、前記プロセッサモジュールは前記プロセッ
    サから前記無効化状態のブロックに対するアクセス要求
    を受信したとき、前記状態情報が前記メモリモジュール
    には前記更新されたコピーを保有していないことを表す
    情報である場合には前記システムバスを通じて前記識別
    情報が示す前記一つのプロセッサモジュールとだけ通信
    して前記更新されたコピーとアクセスすることを特徴と
    する共有メモリマルチプロセッサ。
  17. 【請求項17】 前記プロセッサモジュールは前記プロ
    セッサから前記ブロックに対するアクセス要求を受信し
    たとき、前記状態情報が前記メモリモジュールが前記更
    新されたコピーを保有していることを表す情報である場
    合には、前記システムバスを通じて前記メモリモジュー
    ルおよび前記複数のプロセッサモジュールと通信するこ
    とによって、前記更新されたコピーとアクセスすること
    を特徴とする請求項16記載の共有メモリマルチプロセ
    ッサ。
  18. 【請求項18】 前記状態情報は、 前記複数のプロセッサモジュールのうち一つのプロセッ
    サモジュールが前記システムバスを通じて前記ブロック
    を無効化したときには、前記メモリモジュールが前記更
    新されたコピーを保有していないことを表し、 前記一つのプロセッサモジュールが前記システムバスを
    通じて前記更新されたコピーを前記メモリモジュールへ
    コピーバックしたときには、前記メモリモジュールが前
    記更新されたコピーを保有していることを表すことを特
    徴とする請求項16記載の共有メモリマルチプロセッ
    サ。
  19. 【請求項19】 前記一つのプロセッサモジュールは、 前記一つのプロセッサモジュールでキャッシュミスが発
    生しており、前記更新されたコピーがブロック代替によ
    って新しいブロックに代替される場合、前記更新された
    コピーを前記メモリモジュールへコピーバックすること
    を特徴とする請求項18記載の共有メモリマルチプロセ
    ッサ。
  20. 【請求項20】 前記キャッシュは書込み−無効化キャ
    ッシュコヒーレンス方式下で動作することを特徴とする
    請求項19記載の共有メモリマルチプロセッサ。
  21. 【請求項21】 前記状態情報は、 前記プロセッサモジュールのうちの一つのプロセッサモ
    ジュールが前記システムバスを通じて前記ブロックを無
    効化したときには、前記メモリモジュールが前記更新さ
    れたコピーを保有していないことを表し、 前記一つのプロセッサモジュールが前記システムバスを
    通じて前記更新されたコピーを前記メモリモジュールへ
    コピーバックしたときには、前記メモリモジュールが前
    記更新されたコピーを保有していることを表すことを特
    徴とする請求項17記載の共有メモリマルチプロセッ
    サ。
  22. 【請求項22】 前記一つのプロセッサモジュールは、 前記一つのプロセッサモジュールでキャッシュミスが発
    生し、前記更新されたコピーがブロック代替によって新
    しいブロックに代替される場合、前記更新されたコピー
    を前記メモリモジュールへコピーバックすることを特徴
    とする請求項21記載の共有メモリマルチプロセッサ。
  23. 【請求項23】 前記キャッシュは書込み−無効化キャ
    ッシュコヒーレンス方式下で動作する請求項22記載の
    共有メモリマルチプロセッサ。
  24. 【請求項24】 前記キャッシュは、 前記ブロックを貯蔵するデータキャッシュと、 前記ブロックの物理的アドレスのタグアドレス部分を貯
    蔵するプロセッサタグキャッシュと、 前記プロセッサから一つのブロックに対するアクセス要
    求を受信したときには、前記一つのブロックの物理的ア
    ドレスのタグアドレス部分と前記一つのブロックの物理
    的アドレスのブロックアドレス部分とを比較する比較器
    とを含むことを特徴とする請求項22記載の共有メモリ
    マルチプロセッサ。
  25. 【請求項25】 前記キャッシュは、 前記タグアドレス部分を貯蔵するバスモニタタグキャッ
    シュと、 前記プロセッサモジュール以外の他のプロセッサモジュ
    ールから一つのブロックに対するアクセス要求を受信し
    たときには、前記一つのブロックの物理的アドレスのタ
    グアドレス部分と前記一つのブロックの物理的アドレス
    のブロックアドレス部分とを比較する第2比較器とを含
    むことを特徴とする請求項24記載の共有メモリマルチ
    プロセッサ。
  26. 【請求項26】 前記プロセッサは内部キャッシュを含
    むことを特徴とする請求項16記載の共有メモリマルチ
    プロセッサ。
  27. 【請求項27】 前記複数のプロセッサモジュールは、
    既に設定された数の階層的キャッシュを含むことを特徴
    とする請求項16記載の共有メモリマルチプロセッサ。
  28. 【請求項28】 前記複数のプロセッサモジュールは、
    既に設定された数の回路ボード上で実現され、前記既に
    設定された数は前記複数のプロセッサモジュールの数よ
    り小さいか同じであることを特徴とする請求項16記載
    の共有メモリマルチプロセッサ。
  29. 【請求項29】 前記メモリモジュールが、前記複数の
    プロセッサモジュールの間に分散されていることを特徴
    とする請求項16記載の共有メモリマルチプロセッサ。
  30. 【請求項30】 前記システムバスはアドレスバス、デ
    ータバスおよび制御バスを含み、前記メモリモジュール
    と前記複数のプロセッサモジュールとの間の通信を提供
    することを特徴とする請求項16記載の共有メモリマル
    チプロセッサ。
JP6009374A 1993-01-30 1994-01-31 共有メモリマルチプロセッサ Expired - Lifetime JP2746530B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR930001201 1993-01-30
KR1993-1201 1994-01-21
KR1994-1080 1994-01-21
KR1019940001080A KR0138585B1 (ko) 1993-01-30 1994-01-21 분리형 트랜잭션 버스를 이용한 공유 메모리 다중 프로세서

Publications (2)

Publication Number Publication Date
JPH07152647A JPH07152647A (ja) 1995-06-16
JP2746530B2 true JP2746530B2 (ja) 1998-05-06

Family

ID=26629512

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6009374A Expired - Lifetime JP2746530B2 (ja) 1993-01-30 1994-01-31 共有メモリマルチプロセッサ

Country Status (2)

Country Link
US (1) US5761724A (ja)
JP (1) JP2746530B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918248A (en) * 1996-12-30 1999-06-29 Northern Telecom Limited Shared memory control algorithm for mutual exclusion and rollback
JPH1173370A (ja) * 1997-08-29 1999-03-16 Fujitsu Ltd 情報処理装置
US6738837B1 (en) 2001-02-02 2004-05-18 Cradle Technologies, Inc. Digital system with split transaction memory access
US6801984B2 (en) * 2001-06-29 2004-10-05 International Business Machines Corporation Imprecise snooping based invalidation mechanism
US6922756B2 (en) * 2002-12-19 2005-07-26 Intel Corporation Forward state for use in cache coherency in a multiprocessor system
US7484044B2 (en) * 2003-09-12 2009-01-27 Intel Corporation Method and apparatus for joint cache coherency states in multi-interface caches
US20070150663A1 (en) * 2005-12-27 2007-06-28 Abraham Mendelson Device, system and method of multi-state cache coherence scheme
US7475176B2 (en) * 2006-01-31 2009-01-06 Broadcom Corporation High bandwidth split bus
US20090037661A1 (en) * 2007-08-04 2009-02-05 Applied Micro Circuits Corporation Cache mechanism for managing transient data
US8037024B1 (en) 2008-06-04 2011-10-11 Google Inc. Data propagation in a multi-shard database system
US8868839B1 (en) * 2011-04-07 2014-10-21 Symantec Corporation Systems and methods for caching data blocks associated with frequently accessed files
KR101781769B1 (ko) 2013-11-27 2017-09-25 인텔 코포레이션 서비스가능한 비휘발성 메모리 모듈들을 인에이블시키는 서버 플랫폼 아키텍처들을 위한 방법 및 장치
JP6674085B2 (ja) * 2015-08-12 2020-04-01 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4755930A (en) * 1985-06-27 1988-07-05 Encore Computer Corporation Hierarchical cache memory system and method
US5251308A (en) * 1987-12-22 1993-10-05 Kendall Square Research Corporation Shared memory multiprocessor with data hiding and post-store
US5317716A (en) * 1988-08-16 1994-05-31 International Business Machines Corporation Multiple caches using state information indicating if cache line was previously modified and type of access rights granted to assign access rights to cache line
JPH0680499B2 (ja) * 1989-01-13 1994-10-12 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサ・システムのキャッシュ制御システムおよび方法
US5197146A (en) * 1989-06-21 1993-03-23 Hewlett-Packard Company Method for maintaining cache coherence in a multiprocessor computer system
JP2820752B2 (ja) * 1990-01-19 1998-11-05 日本電信電話株式会社 密結合マルチプロセッサシステムにおけるキャッシュメモリ一致制御方法
JPH03288955A (ja) * 1990-04-06 1991-12-19 Hitachi Ltd データ記憶方法
US5263144A (en) * 1990-06-29 1993-11-16 Digital Equipment Corporation Method and apparatus for sharing data between processors in a computer system
US5303362A (en) * 1991-03-20 1994-04-12 Digital Equipment Corporation Coupled memory multiprocessor computer system including cache coherency management protocols
US5269013A (en) * 1991-03-20 1993-12-07 Digital Equipment Corporation Adaptive memory management method for coupled memory multiprocessor systems
US5265232A (en) * 1991-04-03 1993-11-23 International Business Machines Corporation Coherence control by data invalidation in selected processor caches without broadcasting to processor caches not having the data

Also Published As

Publication number Publication date
JPH07152647A (ja) 1995-06-16
US5761724A (en) 1998-06-02

Similar Documents

Publication Publication Date Title
EP0349122B1 (en) Method and apparatus for filtering invalidate requests
US7017011B2 (en) Coherence controller for a multiprocessor system, module, and multiprocessor system with a multimodule architecture incorporating such a controller
JP2501375B2 (ja) マルチプロセッサシステム
EP1255201B1 (en) Shared memory multiprocessing system employing mixed broadcast snooping and directory based coherency protocols
US5604882A (en) System and method for empty notification from peer cache units to global storage control unit in a multiprocessor data processing system
US5394555A (en) Multi-node cluster computer system incorporating an external coherency unit at each node to insure integrity of information stored in a shared, distributed memory
US6625698B2 (en) Method and apparatus for controlling memory storage locks based on cache line ownership
EP0062165A2 (en) Multiprocessors including private and shared caches
JPH11506852A (ja) 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減
JPH09223118A (ja) スヌープキャッシュメモリ制御システム
JP2746530B2 (ja) 共有メモリマルチプロセッサ
JP2003316753A (ja) マルチプロセッサ装置
JPH10154100A (ja) 情報処理システム及び装置及びその制御方法
US20050160240A1 (en) System and method for blocking data responses
US7159079B2 (en) Multiprocessor system
EP0531003A1 (en) Data processing with bidirectional data bus reservation priority controls
JPS63253448A (ja) マルチ計算機装置
JP2681410B2 (ja) マルチプロセッサ・キャッシュにおける排他性をロックする方法
JP3288261B2 (ja) キャッシュシステム
US5636365A (en) Hierarchical buffer memories for selectively controlling data coherence including coherence control request means
JP2636760B2 (ja) マルチプロセッサシステム
KR0138585B1 (ko) 분리형 트랜잭션 버스를 이용한 공유 메모리 다중 프로세서
JPH03230238A (ja) キャッシュメモリ制御方式
KR0145454B1 (ko) 분산된 공유 메모리를 갖는 다중 프로세서
JPH0822418A (ja) 仮想アドレス空間管理装置

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20080213

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20090213

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20100213

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20100213

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20110213

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20110213

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20120213

Year of fee payment: 14

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

Free format text: PAYMENT UNTIL: 20120213

Year of fee payment: 14

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

Free format text: PAYMENT UNTIL: 20130213

Year of fee payment: 15

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

Free format text: PAYMENT UNTIL: 20140213

Year of fee payment: 16

EXPY Cancellation because of completion of term