JP3007872B2 - マルチプロセッサ・データ処理システム内でキャッシュ・コヒーレンシを維持するキャッシュ・コヒーレンシ・プロトコルを提供する方法及び装置 - Google Patents

マルチプロセッサ・データ処理システム内でキャッシュ・コヒーレンシを維持するキャッシュ・コヒーレンシ・プロトコルを提供する方法及び装置

Info

Publication number
JP3007872B2
JP3007872B2 JP10100946A JP10094698A JP3007872B2 JP 3007872 B2 JP3007872 B2 JP 3007872B2 JP 10100946 A JP10100946 A JP 10100946A JP 10094698 A JP10094698 A JP 10094698A JP 3007872 B2 JP3007872 B2 JP 3007872B2
Authority
JP
Japan
Prior art keywords
cache
state
level
line
upstream
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
JP10100946A
Other languages
English (en)
Other versions
JPH10320283A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH10320283A publication Critical patent/JPH10320283A/ja
Application granted granted Critical
Publication of JP3007872B2 publication Critical patent/JP3007872B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的にはキャッ
シュ・コヒーレンシを維持する方法及び装置に関し、特
に、データ処理システム内でキャッシュ・コヒーレンシ
を維持する方法及び装置に関し、さらに、マルチプロセ
ッサ・データ処理システム内でキャッシュ・コヒーレン
シを維持するキャッシュ・コヒーレンシ・プロトコルを
提供する方法に関する。
【0002】
【従来の技術】対称型マルチプロセッサ(SMP)・デ
ータ処理システムの処理装置は、一般にはすべて同一で
ある、すなわち、すべて命令及びプロトコルの共通セッ
トまたは共通サブセットを利用して動作し、一般には同
じアーキテクチャを有する。処理装置はそれぞれ、プロ
グラム命令を実行するため複数のレジスタ及び実行装置
を有するプロセッサ・コアを含む。各処理装置に、高速
メモリを利用して実現される命令キャッシュやデータ・
キャッシュ等の、1次キャッシュ(レベル1キャッシ
ュ、またはL1キャッシュともいう)を持たせることが
できる。また各処理装置に、先に述べたような1次キャ
ッシュをサポートするために、通常は2次キャッシュま
たはレベル2(L2)キャッシュと呼ばれるキャッシュ
を追加することもできる。
【0003】SMP環境で重要なことは、個々のメモリ
位置に対する読取りまたは書込みの動作がすべてのプロ
セッサについてある順序で直列化されるように、メモリ
・コヒーレンシ機構を提供することである。言い換える
と、すべての処理装置が、所与のメモリ位置への読取り
または書込みの動作が所与の順序で行われることを監視
する。
【0004】キャッシュについては、当業者には周知の
キャッシュ・コヒーレンシを実現するプロトコル及び手
法はいくつかある。当然のように、これらのプロトコル
はいずれも、所与の時点でキャッシュ・ラインへの書込
みを1台の処理装置にのみ許可する。この要件のため、
処理装置は、キャッシュ・ラインへの書込みを行おうと
するときは、最初に他のすべての処理装置に、キャッシ
ュ・ラインへの書込みを行おうとするその意図を通知
し、書込み動作を行う前に、他のすべての処理装置から
許可を得なければならない。
【0005】さまざまな処理装置の間で通信を実現する
ためには、要求側処理装置が、相互接続部(バス等)を
通して、キャッシュ・ラインの読取りまたは書込みの意
図を示すメッセージを渡す必要がある。相互接続部にリ
クエストが出されると、他の処理装置はすべてこれを"
スヌープ"(すなわち監視)し、それらのキャッシュの
状態により、要求された動作を進めることができるかど
うか、できる場合はどのような条件下でできるかを判断
する。キャッシュ・コヒーレンシを維持するために、ス
ヌープ及びフォローアップの動作により許可されねばな
らないバス・トランザクションがいくつかある。スヌー
プ動作は、あるバス信号の活動化により生成された有効
なスヌープ・リクエストの受信によってトリガされる。
命令処理は、スヌープ・ヒットが生じ、問題のキャッシ
ュ・ラインのコヒーレンシを解決するためキャッシュ・
スヌープを追加する必要があるかどうかをスヌープ状態
機械が確認したときにのみ、割込みを受ける。
【0006】この種の通信が必要になるのは、最新の有
効な情報のコピーがシステム・メモリからシステム内の
キャッシュに移動している可能性があるからである。実
際、正しいバージョンの情報は、システム・メモリ、シ
ステム内のキャッシュの1つ、または両方に存在する可
能性がある。従って、正しいバージョンがシステム内の
他のキャッシュにある場合は、システム・メモリではな
く、キャッシュから正しい値を取得することが重要であ
る。
【0007】システム内でキャッシュ・コヒーレンシを
実現するために、状態ビット・フィールドにより、キャ
ッシュ・ラインの現在の状態が指示される。この状態情
報は次に、汎用相互接続部及びキャッシュ間接続でのメ
ッセージ・トラフィックを減らすため、キャッシュ・コ
ヒーレンシ・プロトコルで、ある最適化を可能にするた
めに利用される。このメカニズムの1つの例として、処
理装置は、読取りを行うとき、読取りを後で再試行しな
ければならないかどうかを示すメッセージを受け取る。
読取り動作が再試行されない場合、通常、メッセージ
は、有効でアクティブな情報のコピーが他の処理装置に
もあるかどうかを当該処理装置が確認できるようにする
情報も含む(これは他の最下位レベル・キャッシュが再
試行しない読取りについて"共用"または"非共用"の指示
を、それら最下位レベル・キャッシュによって与えるこ
とによって実現される)。従って処理装置は、システム
内の他のプロセッサが情報のコピーを有するかどうかを
確認することができる。他の処理装置が情報のアクティ
ブなコピーを有さない場合は、読取り側処理装置はキャ
ッシュ・ラインの状態ビット・フィールドを"排他"とマ
ークする。キャッシュ・ラインが排他とマークされた場
合、処理装置は最初にシステム内の他の処理装置と通信
することなく、後でキャッシュ・ラインの書込みを行う
ことができる。なぜなら、他の処理装置は同じ情報のコ
ピーを有さないからである。従って処理装置が最初にキ
ャッシュ・ラインの読取りまたは書込みの意図を相互接
続部を介して通信することなく、その意図した動作を行
うことは可能であるが、これは、他のプロセッサが同じ
情報に関心を持たないことがコヒーレンシ・プロトコル
によって保証された時に限られる。
【0008】キャッシュ・ブロックへのアクセスをさら
に改良することは、"介入"と呼ばれる手順を利用するこ
とによって可能である。この介入手順では、キャッシュ
がメモリ・ブロックに対して制御権を有し、そのブロッ
クのデータまたは命令を、値を要求する他のキャッシュ
に直接提供することができる(読取り型動作のとき)。
言い換えると介入手順は、最初にデータまたは命令をシ
ステム・メモリに書込み、次に要求側プロセッサにシス
テム・メモリから再び読戻させる必要性を回避してい
る。介入は、状態が変更または排他であるキャッシュ・
ラインに値を有するキャッシュによってのみ実行でき
る。これら両方の状態では、有効な値のコピーを有する
キャッシュ・ラインは1つしかないので、最初にシステ
ム・メモリに書込む必要なく、値をバスを通して供給す
ることは簡単なことである。介入手順は、従ってシステ
ム・メモリに書込み、読取るという長いプロセス(通常
はバス動作3回及びメモリ動作2回を伴う)を避けるこ
とによって処理を高速化する。従って介入手順により待
ち時間が改良されるだけでなく、バス帯域幅が増加す
る。
【0009】従来技術のキャッシュ・コヒーレンシ・プ
ロトコルは、データまたは命令が2つ以上のキャッシュ
によって共用状態に保たれているときの介入を考慮して
いない。これは一般には、情報を供給するキャッシュを
決定するのが難しいからである。共用キャッシュ状態で
の介入は、システムが共用応答をすべて集めた後、情報
を供給するキャッシュを(例えば任意に)選択する場合
は行える。しかしながらこのアプローチは、最初にシス
テム・メモリに書込み、つぎに読取るプロセスに比べて
高速ではないので、利点はない。また命令は(データと
は対照的に)書込まれることは決してないので、有効な
命令を含むキャッシュ・ブロックの状態はどのブロック
でも常に共用であり、よって命令は介入という方法によ
っては供給できない。
【0010】そのため、共用状態でのデータの効率的介
入を考慮したキャッシュ・コヒーレンシを維持する、改
良されたキャッシュ・コヒーレンシ・プロトコルを考案
することが望ましい。さらに、このような改良されたキ
ャッシュ・コヒーレンシ・プロトコルにより、所与のキ
ャッシュ・レベルの上流で、そのレベルでは未定義なま
ま、キャッシュ・ラインが割当てられていて有効である
ことの指示を与えることが、セクタ化されたキャッシュ
に関して不要なバス動作を避けるために求められる。
【0011】
【発明が解決しようとする課題】本発明の目的は、キャ
ッシュ・コヒーレンシを維持する改良された方法及び装
置を提供することである。
【0012】本発明の他の目的は、データ処理システム
内でキャッシュ・コヒーレンシを維持する改良された方
法及び装置を提供することである。
【0013】本発明の他の目的は、マルチプロセッサ・
データ処理システム内でキャッシュ・コヒーレンシを維
持するキャッシュ・コヒーレンシ・プロトコルを実現す
る改良された方法及び装置を提供することである。
【0014】
【課題を解決するための手段】本発明の方法及び装置に
従い、各プロセッサは少なくとも第1レベル・キャッシ
ュ及び第2レベル・キャッシュのキャッシュ階層を有す
る。第1レベル・キャッシュは第2レベル・キャッシュ
の上流である。第1レベル・キャッシュ及び第2レベル
キャッシュの各々はそれぞれ複数のキャッシュ・ライ
ンを含み、第2レベル・キャッシュ内の各キャッシュ・
ラインそれぞれ関連して、変更状態、排他状態、共用
状態、無効状態、最近読取り状態、及び上流未定義状態
を含む、少なくとも6つの異なる状態を識別するため用
いられる状態ビット・フィールドが設けられる。最も
近アクセスされた情報のコピーを第2レベル・キャッシ
ュ内のキャッシュ・ラインへ格納する動作に応答して
当該キャッシュ・ラインの状態が無効状態から最近読取
り状態に遷移する。ライン充填動作なしでの第1レベル
・キャッシュのキャッシュ・ラインの情報変更に応答
して、当該キャッシュ・ラインに対応する第2レベル・
キャッシュ内のキャッシュ・ラインの状態が無効状態か
ら上流未定義状態に遷移する。
【0015】本発明のすべての目的、機構及び利点が、
以下の詳細な説明で明らかになろう。
【0016】
【発明の実施の形態】本発明は、キャッシュ・メモリを
有する任意のデータ処理システムで実現することができ
る。また本発明の特徴は、1次キャッシュ及び2次キャ
ッシュを有するさまざまなデータ処理システムに適用で
きる。
【0017】各図、特に図1を参照する。本発明を適用
できるマルチプロセッサ・データ処理システム10のブ
ロック図が示してある。マルチプロセッサ・データ処理
システム10には複数の処理装置があるが、そのうち2
つが示してある。処理装置11a及び11bは、それぞ
れプロセッサ・コア12、オンチップ命令キャッシュ1
3、オンチップ・データ・キャッシュ14、及び2次キ
ャッシュ15を含みうる。処理装置11a及び11bは
また、それぞれさまざまな周辺装置に接続される。周辺
装置は、入出力(I/O)装置18、システム・メモリ
19、及び基本的には初期プログラム・ロードの際に周
辺装置の1つからオペレーティング・システムを探し出
してロードするためのファームウェア17等である。処
理装置11a及び11bは、バス16を含むさまざまな
手段を介してこれらの周辺装置と通信できる。当業者に
は明らかなように、システム10には、図示していない
が、モデム、プリンタ等の周辺装置に接続するためのシ
リアル・ポート及びパラレル・ポート等、多数のコンポ
ーネントを追加できる。
【0018】図2を参照する。従来技術による、マルチ
プロセッサ・データ処理システムのキャッシュ・コヒー
レンシ・プロトコルの状態図が示してある。従来技術の
この"MESI"プロトコルでは、キャッシュ・ラインは
4つの状態、つまり変更(M)、排他(E)、共用
(S)、無効(I)のいずれかになる。キャッシュ・ラ
インはそれぞれ、これら4つの状態の1つを示すため、
一般には2つの状態ビットを有する。状態は、エントリ
の初期状態、及び要求側プロセッサが求めるアクセスの
タイプに応じて変化し得、要求側プロセッサのキャッシ
ュ・ラインのエントリに対して特定の状態がセットされ
る。例えば、キャッシュ・ラインが変更状態にあると
き、アドレスされたラインは、データ処理システム内で
変更されたキャッシュ・ラインを有するキャッシュでの
み有効であり、変更された値はシステム・メモリに書戻
されていない。キャッシュ・ラインが排他状態にあると
きは、指示されたキャッシュ・ラインにしか存在せず、
値はシステム・メモリのそれと一致している。キャッシ
ュ・ラインが共用状態にある場合は、キャッシュ・ライ
ンはそのキャッシュと、データ処理システム内の他の少
なくとも1つのキャッシュで有効である。共用キャッシ
ュ・ラインの値はシステム・メモリのそれと一致してい
る。最後に、キャッシュ・ラインが無効状態にあると
き、これはアドレスされたメモリ位置がキャッシュに存
在しないことを示す。キャッシュ・ラインが変更、排
他、共用、または無効のどの状態にある場合でも、図2
に示すように、バス・トランザクションに応じて、さま
ざまな状態の間を遷移することができる。例えば排他状
態にあるキャッシュ・ラインは他の3つの状態のどれに
も遷移できるが、キャッシュ・ラインが排他状態になる
のは無効状態または変更状態からだけである。
【0019】図3を参照する。本発明の好適な実施例に
従った、マルチプロセッサ・データ処理システムのキャ
ッシュ・コヒーレンシ・プロトコルの状態図が示してあ
る。このプロトコルは、変更、排他、共用、及び無効と
いう4つの同じ状態を含んでいる点で図2の従来技術の
MESIプロトコルと似ているが、さらに最近読取り
(R)、上流未定義(U)と新たに2つの状態を含む。
【0020】1.最近読取り状態 最近読取り状態は、普通は共用状態にある最も最近参照
されたブロックの指示を与えるため用いられる。言い換
えると、2つ以上のキャッシュが命令の有効なコピーを
有するとき、それらのキャッシュは、最近アクセスされ
たキャッシュを除いて、すべて共用状態にある。最も最
近アクセスされたそのキャッシュは最近読取り状態にな
る。
【0021】従来技術のMESIプロトコルと同様、M
−E−S−Iの4つの状態は、エントリの初期状態、及
び要求側プロセッサが求めたアクセスのタイプにもとづ
いて変化し得る。これら4つの状態が変化する様子は、
一般的には従来技術のMESIプロトコルと同一であ
る。次に例外を示す。
【0022】表1に、"ミス"が生じた場合の、読取り型
動作のマスタ・キャッシュ状態遷移を示す。
【表1】
【0023】最近読取り状態になるのは、"読取りミス"
・バス動作(表1の1行目)のためであり、その際、コ
ヒーレンシ応答は共用介入(ShrI)、共用(Sh
r)、または変更(Mod)である。コヒーレンシ応答
が"読取りミス"動作で変更の場合、変更されたキャッシ
ュは、命令をシステム・メモリにも送るので「変更」で
はなくなる。RWITM(変更予定読取り)の"ミス"状
況では、コヒーレンシ応答がShrI、Shr、Mo
d、またはNull(表1の2行目)の場合は変更状態
になる。RWITMの場合は命令ではなくデータにのみ
当てはまる。なぜなら通常は命令は変更されないからで
ある。"読取りミス"動作でコヒーレンシ応答がない(N
ull)場合(表1の3行目)、従来技術のMESIプ
ロトコルのように排他状態になる。
【0024】表2に、読取り型動作について、スヌーパ
として働くときに、バス・トランザクションがキャッシ
ュに与える影響の1つの例を示す。
【表2】
【0025】排他または最近のいずれの開始状態でも
(表2の1、2及び4行目)、キャッシュは共用介入コ
ヒーレンシ応答を転送する。これはつまりキャッシュが
その命令のコピーを介入手順により(つまりシステム・
メモリからの関与なく、要求側プロセッサに直接)供給
することを意味する。命令が供給されるときは、次の状
態は、読取り"ヒット"状況では共用(表2の1及び2行
目)に、"RWITMヒット"動作(表2の4行目)では
無効になる。開始状態が変更である場合は(表2の3及
び5行目)、プログラム命令は通常は変更されないので
これもまた命令の場合には当てはまらないが、バス動作
が"RWITM"だった場合は、コヒーレンシ応答は「変
更」になり、介入はまだ生じる。言い換えると、キャッ
シュ・ブロック内のデータはシステム・メモリに書込ま
れ、表2の3行目に示してある場合でのみ、要求側プロ
セッサによってシステム・メモリから読取られる。
【0026】先に述べたように、表1及び表2に示して
いない状態及び動作については、遷移及びコヒーレンシ
応答は従来技術のMESIプロトコルに従って実行され
るが、1つ資格がある。すなわちキャッシュ・エントリ
は、書込み動作を受ける最近読取り状態になることがで
き、そのエントリは、共用エントリが書込み動作を受け
るときと同様に変更状態に遷移する。
【0027】さらに、エントリは決して無効状態から共
用状態に遷移しない(その代わりに、最近読取り状態に
遷移する)。エントリは決して排他状態から最近読取り
状態に遷移しない(共用状態に遷移する)。エントリは
決して最近読取り状態から排他状態に遷移しない(共用
エントリが排他状態に遷移しないのと同じ)。最後に、
エントリは決して変更状態から最近読取り状態に遷移し
ない(共用状態に遷移する。要求側プロセッサのキャッ
シュのエントリは最近読取り状態に遷移する)。
【0028】最近読取り状態では、ブロックの所有権
は、命令を最後に読取ったキャッシュに移行する。これ
には、最も最近使用された状態にとどまり、よって、L
RUキャッシュ置換方式が採用された場合に割当て解除
される機会が少ないという利点が加わる。最近読取り状
態にはまた、キャッシュされたI/Oステータス位置を
最も最近読取ったプロセッサ/キャッシュに割込みをか
ける高機能入出力(I/O)コントローラ等、他のアプ
リケーションに用いられるという利点もある。なぜな
ら、このプロセッサ/キャッシュはI/Oデバイス・ド
ライバ・コードをキャッシュした可能性が最大であり、
従って、コードをそのキャッシュにフェッチする必要の
ある他のプロセッサよりも高速にコードを実行できるか
らである。
【0029】2.上流未定義状態 L1等の上流キャッシュは、最初に、関連する古いデー
タをシステム・メモリからフェッチすることなく、キャ
ッシュ・ラインのそのデータを(ゼロ化により)変更し
ようとすることがある。この動作は、新しいプロセスに
メモリ領域を再割当てするとき、一般に行われる。それ
に応じて、下位レベル・キャッシュもまた、対応するキ
ャッシュ・ラインを割当ててゼロ化する必要がある。こ
の手順を実現する従来の方法は、キャッシュ・ラインを
システム・メモリから読取り、次に上流レベル・キャッ
シュのキャッシュ・ラインに対応した部分をゼロ化する
ことである。言うまでもなく、このアプローチでは、ど
のようにしろ再割当てされる予定のデータをシステム・
メモリから読取ることを避けるという目的が損なわれ
る。さらに、かなり短い時間内では、プロセッサが、下
位レベル・キャッシュのキャッシュ・ラインの残りの部
分に相当する他のキャッシュ・ラインを割当ててゼロ化
する可能性がある(下位レベル・キャッシュはこれを想
定できないが)。従って第1の問題は、上流レベル・キ
ャッシュでは有効であるが下位レベル・キャッシュでは
まだ有効ではないセクタを追跡することである。
【0030】例えば、2つのセクタを有するセクタ化さ
れたキャッシュでは、(1)2つのセクタのうち第1セ
クタ("奇数"セクタ)が変更される、(2)2つのセク
タの第2セクタ("偶数"セクタ)が変更される、(3)
いずれのセクタも変更されない(キャッシュ可能なライ
トスルー動作の結果、両方とも共用される)、という3
つの可能なケースに起因する3つの上流未定義状態があ
る。これらの状態の最初のものは、" MI "、2つ目
は" IM "、3つ目は"USS"と呼ばれる。この2セク
タのキャッシュ例では、各キャッシュ・ラインに、ライ
ンの状態を示す3ビットが使用できる。キャッシュ・ラ
インにセクタが3つ以上与えられた場合、追加される状
態のため、キャッシュ・ラインにビットを追加する必要
がある。
【0031】表3に上流レベル・キャッシュ(L1)の
動作に伴うキャッシュ遷移を示す。
【表3】
【0032】表3の最初のエントリでは、L1キャッシ
ュのキャッシュ・ライン内の偶数セクタ(第2セクタ)
で書込み型動作の割当てゼロ化動作(DCBZ)が実行
されるとき、対応する無効状態の下位レベル・キャッシ
ュは"UIM"状態に遷移する。つまり第2セクタだけが変
更されたと指示される。表3の第2エントリでは、DC
BZ動作がL1キャッシュのキャッシュ・ライン内の奇
数セクタ(第1セクタ)で実行されるとき、対応する無
効状態の下位レベル・キャッシュは"UMI"状態に遷移す
る。つまり第1セクタだけが変更されたと指示される。
【0033】キャッシュ・ラインの奇数セクタが先にD
CBZ動作を経ており、且つ対応する下位レベル・キャ
ッシュが"UMI"状態にあるときに、DCBZ動作が同
じキャッシュ・ラインの偶数セクタで実行された場合
(表3の第エントリ)か、またはキャッシュ・ライン
の偶数セクタが先にDCBZ動作を経ており、且つ対応
する下位レベル・キャッシュが"UIM"状態にあるとき
に、DCBZ動作が同じキャッシュ・ラインの奇数セク
タで実行された場合(表3の第4エントリ)は、下位レ
ベル・キャッシュは変更状態への状態遷移を経て、ライ
ン全体が変更されたことを示す。しかし、所与のライン
でDCBZ動作が先に1回しか行われておらず、下位レ
ベル・キャッシュのそのラインが"UIM"状態または"
MI"状態であり、他の無効ラインは"読取り"または"
変更予定読取り"(RWITM)動作の対象になってい
る場合は、下位レベル・キャッシュ・ラインは無効状態
に遷移し、変更されたセクタは上流レベル・キャッシュ
からフラッシュされる(表3の第5エントリ)
【0034】表3の第6エントリで、対象ブロックに対
してL1"ヒット"が起こり、下位レベル・キャッシュ
は"USS"状態にある場合、それらはその状態にとどま
る。つまり有効であるかのように扱われるがキャッシュ
はされない。キャッシュ可能/ライトスルーの読取り動
作がブロックで実行され(表3の第7エントリ)、下位
レベル・キャッシュの対応するブロックが無効状態にあ
る場合は、それらは"USS"状態への遷移を経る。最後
に、表3の第8エントリに示してあるように、上に指定
していない他のすべてのL1動作はノーマル遷移を経
る。つまり従来技術のMESIプロトコルに従う。
【0035】表4にシステム・バス・スヌープ済みトラ
ンザクションが、上流未定義状態の1つにあるキャッシ
ュにどのように影響を与えるかを示す。
【表4】
【0036】上流未定義状態の1つでは、キャッシュ
は、それが処理を行い、スヌープを上流に転送して正し
い動作を確認しなければならないことを認識する。表4
は、上流未定義状態の1つに対してスヌープ・ヒットが
起こる、まれな例だけを示している。これらの状況で
は、下位レベル・キャッシュは上流キャッシュの内容を
フラッシュし、無効状態に遷移し、"再試行"応答を発行
する。ただし読取りスヌープ・ヒットが"USS"状態に対
して生じた場合は例外で、その場合のコヒーレンシ応答
は共用である。
【0037】上述の上流未定義状態を利用すると、不要
なバス動作を実行せず、キャッシュ可能ライトスルー動
作を効率よくサポートして、上流レベル・キャッシュで
有効なセクタを追跡することに関係した前述の問題の両
方が解決される。その結果、メモリ帯域幅が増加し、ア
ドレス帯域幅の制限から解放される他に、バイト書込み
機能が得られる。簡素化のため、図3には1つの上流未
定義状態しか示していないが、当業者には明らかなよう
に、上流未定義状態の数は、キャッシュ・ライン内のセ
クタの数に依存する。
【0038】ここで説明しているとおり、本発明は、マ
ルチプロセッサ・データ処理システム内でキャッシュ・
コヒーレンシを維持するキャッシュ・コヒーレンシ・プ
ロトコルを実現する改良された方法を提供する。
【0039】本発明は、好適な実施例を参照して述べら
れたが、本発明の趣旨及び範囲を逸脱することなく、様
々な形態の変更が実施され得ることが、当業者には理解
できよう。
【0040】
【0041】
【図面の簡単な説明】
【図1】本発明を適用できるマルチプロセッサ・データ
処理システムのブロック図である。
【図2】従来技術による、マルチプロセッサ・データ処
理システムのキャッシュ・コヒーレンシ・プロトコルを
示す状態図である。
【図3】本発明の好適な実施例に従った、マルチプロセ
ッサ・データ処理システムのキャッシュ・コヒーレンシ
・プロトコルを示す状態図である。
【符号の説明】
10 マルチプロセッサ・データ処理システム 11a、11b 処理装置 12 プロセッサ・コア 13 オンチップ命令キャッシュ 14 オンチップ・データ・キャッシュ 15 2次キャッシュ 16 バス 17 ファームウェア 18 入出力装置 19 システム・メモリ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョン・スティーブン・ドッドソン アメリカ合衆国78660、テキサス州フェ ラガービル、ベル・ロック・サークル 1205 (56)参考文献 特開 平9−223118(JP,A) 特開 平10−21205(JP,A) 特開 平2−253356(JP,A) 特開 平4−174042(JP,A) 特開 平6−35801(JP,A) 特開 平2−188849(JP,A) 高橋義造編、「並列処理機構」、丸善 株式会社、平成元年8月25日、p.186 −199 寺沢拓也・井上敬介・黒澤飛斗矢・天 野英晴、「オンチップマルチプロセッサ のキャッシュメモリの検討」、電子情報 通信学会技術研究報告、社団法人電子情 報通信学会、1995年4月28日、第95巻、 第21号、(CPSY95−11〜22)、p. 47−54 (58)調査した分野(Int.Cl.7,DB名) G06F 12/08 - 12/12

Claims (6)

    (57)【特許請求の範囲】
  1. 【請求項1】各プロセッサに少なくとも第1レベル・キ
    ャッシュと第2レベル・キャッシュとのキャッシュ階層
    があり、前記第1レベル・キャッシュは前記第2レベル
    ・キャッシュの上流であり、前記第1レベル・キャッシ
    及び前記第2レベル・キャッシュの各々はそれぞれ複
    数のキャッシュ・ラインを含前記第2レベル・キャ
    ッシュ内の前記複数のキャッシュ・ラインの各々にそれ
    ぞれ関連付けられ、当該関連するキャッシュ・ラインの
    変更状態、排他状態、共用状態、無効状態、最近読取り
    状態、及び上流未定義状態を含む複数の状態を識別する
    ために用いられる状態ビット・フィールドを備え、前記
    上流未定義状態により、前記第1レベル・キャッシュ内
    のキャッシュ・ラインには有効な情報が格納されている
    が、当該キャッシュ・ラインに対応する前記第2レベル
    ・キャッシュ内のキャッシュ・ラインには有効な情報が
    格納されていないことを表示するようにしたマルチプロ
    セッサ・データ処理システム内で、キャッシュ・コヒー
    レンシを維持するキャッシュ・コヒーレンシ・プロトコ
    ルを提供する方法であって、最も 最近アクセスされた情報のコピーを前記第2レベル
    ・キャッシュ内のキャッシュ・ラインへ格納する動作
    応答して、当該キャッシュ・ラインの状態を前記無効状
    態から前記最近読取り状態へ遷移するステップと、 ライン充填動作なしでの前記第1レベル・キャッシュ
    のキャッシュ・ラインの情報変更に応答して、当該キャ
    ッシュ・ラインに対応する前記第2レベル・キャッシュ
    内のキャッシュ・ラインの状態を前記無効状態から前記
    上流未定義状態に遷移するステップと、 を含む、前記方法。
  2. 【請求項2】前記最近読取り状態から前記無効状態、前
    記変更状態、または前記共用状態に遷移するステップを
    含む、請求項1記載の方法。
  3. 【請求項3】前記変更状態から前記共用状態に遷移する
    ステップを含む、請求項1記載の方法。
  4. 【請求項4】各プロセッサに少なくとも第1レベル・キ
    ャッシュと第2レベル・キャッシュとのキャッシュ階層
    があり、前記第1レベル・キャッシュは前記第2レベル
    ・キャッシュの上流であり、前記第1レベル・キャッシ
    ュ及び前記第2レベル・キャッシュの各々はそれぞれ複
    数のキャッシュ・ラインを含んでいる、マルチプロセッ
    サ・データ処理システム内でキャッシュ・コヒーレンシ
    を維持するキャッシュ・コヒーレンシ・プロトコルを有
    するキャッシュ・メモリであって、前記第2レベル・キャッシュ内の 前記複数のキャッシュ
    ・ラインの各々それぞれ関連付けられ、当該関連する
    キャッシュ・ラインの変更状態、排他状態、共用状態、
    無効状態、最近読取り状態、及び上流未定義状態を含む
    複数の状態を識別するために用いられる状態ビット・フ
    ィールドを備え、 前記上流未定義状態は、前記第1レベル・キャッシュ内
    のキャッシュ・ラインには有効な情報が格納されている
    が、当該キャッシュ・ラインに対応する前記第2レベル
    ・キャッシュ内のキャッシュ・ラインには有効な情報が
    格納されていないことを表示し、 さらに、最も 最近アクセスされた情報のコピーを前記第
    2レベル・キャッシュ内のキャッシュ・ラインへ格納す
    る動作に応答して、当該キャッシュ・ラインの状態を
    記無効状態から前記最近読取り状態へ遷移するための手
    段と、 ライン充填動作なしでの前記第1レベル・キャッシュ
    のキャッシュ・ラインの情報変更に応答して、当該キャ
    ッシュ・ラインに対応する前記第2レベル・キャッシュ
    内のキャッシュ・ラインの状態を前記無効状態から前記
    上流未定義状態へ遷移するための手段とを備えた、前記
    キャッシュ・メモリ。
  5. 【請求項5】前記最近読取り状態から前記無効状態、前
    記変更状態、または前記共用状態に遷移するための手段
    を含む、請求項4記載のキャッシュ・メモリ。
  6. 【請求項6】前記変更状態から前記共用状態へ遷移する
    ための手段を含む、請求項4記載のキャッシュ・メモ
    リ。
JP10100946A 1997-04-14 1998-04-13 マルチプロセッサ・データ処理システム内でキャッシュ・コヒーレンシを維持するキャッシュ・コヒーレンシ・プロトコルを提供する方法及び装置 Expired - Fee Related JP3007872B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/839,543 US5943684A (en) 1997-04-14 1997-04-14 Method and system of providing a cache-coherency protocol for maintaining cache coherency within a multiprocessor data-processing system
US08/839543 1997-04-14

Publications (2)

Publication Number Publication Date
JPH10320283A JPH10320283A (ja) 1998-12-04
JP3007872B2 true JP3007872B2 (ja) 2000-02-07

Family

ID=25280015

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10100946A Expired - Fee Related JP3007872B2 (ja) 1997-04-14 1998-04-13 マルチプロセッサ・データ処理システム内でキャッシュ・コヒーレンシを維持するキャッシュ・コヒーレンシ・プロトコルを提供する方法及び装置

Country Status (3)

Country Link
US (1) US5943684A (ja)
JP (1) JP3007872B2 (ja)
KR (1) KR100273039B1 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6115795A (en) * 1997-08-06 2000-09-05 International Business Machines Corporation Method and apparatus for configurable multiple level cache with coherency in a multiprocessor system
US6108764A (en) * 1998-12-17 2000-08-22 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system with multiple caches concurrently holding data in a recent state from which data can be sourced by shared intervention
US6115804A (en) * 1999-02-10 2000-09-05 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that permits multiple caches to concurrently hold data in a recent state from which data can be sourced by shared intervention
US6192452B1 (en) * 1999-02-26 2001-02-20 International Business Machines Corporation Method and system for avoiding data loss due to cancelled transactions within a non-uniform memory access system
US6442597B1 (en) * 1999-07-08 2002-08-27 International Business Machines Corporation Providing global coherence in SMP systems using response combination block coupled to address switch connecting node controllers to memory
US6516404B1 (en) 1999-07-30 2003-02-04 International Business Machines Corporation Data processing system having hashed architected processor facilities
US6446165B1 (en) * 1999-07-30 2002-09-03 International Business Machines Corporation Address dependent caching behavior within a data processing system having HSA (hashed storage architecture)
US6598118B1 (en) * 1999-07-30 2003-07-22 International Business Machines Corporation Data processing system with HSA (hashed storage architecture)
US6658556B1 (en) 1999-07-30 2003-12-02 International Business Machines Corporation Hashing a target address for a memory access instruction in order to determine prior to execution which particular load/store unit processes the instruction
US6823471B1 (en) 1999-07-30 2004-11-23 International Business Machines Corporation Method for providing high availability within a data processing system via a reconfigurable hashed storage subsystem
US6449691B1 (en) * 1999-07-30 2002-09-10 International Business Machines Corporation Asymmetrical cache properties within a hashed storage subsystem
US6519685B1 (en) 1999-12-22 2003-02-11 Intel Corporation Cache states for multiprocessor cache coherency protocols
US6457104B1 (en) * 2000-03-20 2002-09-24 International Business Machines Corporation System and method for recycling stale memory content in compressed memory systems
US6356983B1 (en) * 2000-07-25 2002-03-12 Src Computers, Inc. System and method providing cache coherency and atomic memory operations in a multiprocessor computer architecture
FR2832859B1 (fr) * 2001-11-28 2004-01-09 Commissariat Energie Atomique Generateur electrochimique au lithium comprenant au moins une electrode bipolaire avec substrats conducteurs en aluminium ou alliage d'aluminium
US7100001B2 (en) 2002-01-24 2006-08-29 Intel Corporation Methods and apparatus for cache intervention
US6983348B2 (en) * 2002-01-24 2006-01-03 Intel Corporation Methods and apparatus for cache intervention
KR100434055B1 (ko) * 2002-04-27 2004-06-04 엘지전자 주식회사 이동통신 시스템의 캐시 일관성 유지 방법
US20040153611A1 (en) * 2003-02-04 2004-08-05 Sujat Jamil Methods and apparatus for detecting an address conflict
US6988173B2 (en) * 2003-05-12 2006-01-17 International Business Machines Corporation Bus protocol for a switchless distributed shared memory computer system
US7085898B2 (en) 2003-05-12 2006-08-01 International Business Machines Corporation Coherency management for a “switchless” distributed shared memory computer system
US7287126B2 (en) * 2003-07-30 2007-10-23 Intel Corporation Methods and apparatus for maintaining cache coherency
US7284097B2 (en) * 2003-09-30 2007-10-16 International Business Machines Corporation Modified-invalid cache state to reduce cache-to-cache data transfer operations for speculatively-issued full cache line writes
US7388588B2 (en) * 2004-09-09 2008-06-17 International Business Machines Corporation Programmable graphics processing engine
US7484041B2 (en) * 2005-04-04 2009-01-27 Kabushiki Kaisha Toshiba Systems and methods for loading data into the cache of one processor to improve performance of another processor in a multiprocessor system
US20060236039A1 (en) * 2005-04-19 2006-10-19 International Business Machines Corporation Method and apparatus for synchronizing shared data between components in a group
CN105808454A (zh) * 2014-12-31 2016-07-27 北京东土科技股份有限公司 一种多端口访问共享缓存的方法及装置
US9684603B2 (en) * 2015-01-22 2017-06-20 Empire Technology Development Llc Memory initialization using cache state
US9792147B2 (en) * 2015-07-02 2017-10-17 International Business Machines Corporation Transactional storage accesses supporting differing priority levels

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4648030A (en) * 1983-09-22 1987-03-03 Digital Equipment Corporation Cache invalidation mechanism for multiprocessor systems
CA2044689A1 (en) * 1990-06-15 1991-12-16 Roger E. Tipley Multilevel inclusion in multilevel cache hierarchies
JP3009430B2 (ja) * 1990-07-09 2000-02-14 キヤノン株式会社 プロセッサおよびそのキャッシュメモリ制御方法
US5375216A (en) * 1992-02-28 1994-12-20 Motorola, Inc. Apparatus and method for optimizing performance of a cache memory in a data processing system
US5671391A (en) * 1994-01-10 1997-09-23 Ncr Corporation Coherent copyback protocol for multi-level cache memory systems
US5715428A (en) * 1994-02-28 1998-02-03 Intel Corporation Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system
US5680576A (en) * 1995-05-05 1997-10-21 Silicon Graphics, Inc. Directory-based coherence protocol allowing efficient dropping of clean-exclusive data
US5809560A (en) * 1995-10-13 1998-09-15 Compaq Computer Corporation Adaptive read-ahead disk cache
US5802572A (en) * 1996-03-15 1998-09-01 International Business Machines Corporation Write-back cache having sub-line size coherency granularity and method for maintaining coherency within a write-back cache
US5721867A (en) * 1996-04-01 1998-02-24 International Business Machines Corporation Method and apparatus for executing single beat write store instructions during a cache store linefill operation

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
寺沢拓也・井上敬介・黒澤飛斗矢・天野英晴、「オンチップマルチプロセッサのキャッシュメモリの検討」、電子情報通信学会技術研究報告、社団法人電子情報通信学会、1995年4月28日、第95巻、第21号、(CPSY95−11〜22)、p.47−54
高橋義造編、「並列処理機構」、丸善株式会社、平成元年8月25日、p.186−199

Also Published As

Publication number Publication date
KR100273039B1 (ko) 2000-12-01
JPH10320283A (ja) 1998-12-04
US5943684A (en) 1999-08-24
KR19980079610A (ko) 1998-11-25

Similar Documents

Publication Publication Date Title
JP3007872B2 (ja) マルチプロセッサ・データ処理システム内でキャッシュ・コヒーレンシを維持するキャッシュ・コヒーレンシ・プロトコルを提供する方法及び装置
JP3888769B2 (ja) データ供給方法及びコンピュータ・システム
JP3627037B2 (ja) キャッシュ・コヒーレンシを維持する方法及びコンピュータ・システム
KR100274771B1 (ko) Smp 버스의 공유 상태에서의 캐시 라인들의 공유 개입 방법
KR100293136B1 (ko) Smp버스의최근판독상태에서의캐시라인들의공유개입방법
US5325504A (en) Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system
JP5116418B2 (ja) マルチプロセッサ・データ処理システムにおいて、データを処理する方法、マルチプロセッサ・データ処理システムのための処理ユニット、およびデータ処理システム
JP2982868B2 (ja) メモリ待ち時間を短縮する方法およびコンピュータ・システム
US6345342B1 (en) Cache coherency protocol employing a read operation including a programmable flag to indicate deallocation of an intervened cache line
US5706463A (en) Cache coherent computer system that minimizes invalidation and copyback operations
US6571322B2 (en) Multiprocessor computer system with sectored cache line mechanism for cache intervention
US6981106B1 (en) System and method for accelerating ownership within a directory-based memory system
US5963974A (en) Cache intervention from a cache line exclusively holding an unmodified value
JP3714617B2 (ja) キャッシュ階層で首尾一貫性を維持する方法、コンピュータ・システム、及び処理ユニット
US6321306B1 (en) High performance multiprocessor system with modified-unsolicited cache state
JPH09259036A (ja) ライトバックキャッシュおよびライトバックキャッシュ内で整合性を維持する方法
US5850534A (en) Method and apparatus for reducing cache snooping overhead in a multilevel cache system
US5943685A (en) Method of shared intervention via a single data provider among shared caches for SMP bus
US5996049A (en) Cache-coherency protocol with recently read state for data and instructions
US7464227B2 (en) Method and apparatus for supporting opportunistic sharing in coherent multiprocessors
US6658536B1 (en) Cache-coherency protocol with recently read state for extending cache horizontally
EP0976047A1 (en) Read operations in multiprocessor computer system
US6484241B2 (en) Multiprocessor computer system with sectored cache line system bus protocol mechanism
US7234028B2 (en) Power/performance optimized cache using memory write prevention through write snarfing
US6553462B2 (en) Multiprocessor computer system with sectored cache line mechanism for load and store operations

Legal Events

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