JP3550092B2 - キャッシュ装置及び制御方法 - Google Patents

キャッシュ装置及び制御方法 Download PDF

Info

Publication number
JP3550092B2
JP3550092B2 JP2000587273A JP2000587273A JP3550092B2 JP 3550092 B2 JP3550092 B2 JP 3550092B2 JP 2000587273 A JP2000587273 A JP 2000587273A JP 2000587273 A JP2000587273 A JP 2000587273A JP 3550092 B2 JP3550092 B2 JP 3550092B2
Authority
JP
Japan
Prior art keywords
state
cache
data
request
processor
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
JP2000587273A
Other languages
English (en)
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.)
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
Application granted granted Critical
Publication of JP3550092B2 publication Critical patent/JP3550092B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

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

Description

【技術分野】
本発明は、マルチプロセッサシステムでキャッシュメモリを管理するキャッシュ装置及び制御方法に関し、特に、有効性のはっきりしないデータのキャッシュメモリでの保持を可能にしてプロセッサに投機的に処理させるキャッシュ装置及び制御方法に関する。
【背景技術】
一般的に、計算機システムの主記憶へのアクセス時間は、プロセッサの動作速度に比べ非常に遅い。そのため、主記憶へのアクセスが発生すると、プロセッサは主記憶から送られるデータを待つことになる。キャッシュ装置は、主記憶に比べて小容量だが高速に動作するメモリであり、プロセッサと主記憶の間に配置され、見かけ上の主記憶アクセス時間を短縮し、プロセッサのデータ待ち時間を短くする。
図1はキャッシュ装置に設けたキャッシュメモリのテーブル構造であり、記憶単位となるキャッシュライン122には、タグ124とデータ130で構成され、タグ124には状態タグ126とアドレスタグ128が付いている。
プロセッサから読出要求を受けると、キャッシュメモリは要求アドレスとアドレス値の一致するアドレスタグ128を持ったキャッシュラインを探す。アドレス値の一致するキャッシュラインが存在しない場合は、キャッシュミスとなる。アドレス値の一致するキャッシュラインが存在したとしても、そのキャッシュラインに保持されているデータの有効性が状態タグ126から無効であれば、キャッシュミスとなる。キャッシュミスの場合には、主記憶もしくは他キャッシュメモリへのアクセスが必要となる。
アドレスタグ128のアドレス値の一致するキャッシュラインが存在し、かつ、そのキャッシュラインに保持されているデータの有効性が状態タグ126から有効であれば、キャッシュヒットとなる。キャッシュヒットの場合には、主記憶もしくは他のキャッシュへのアクセスが不要なので、プロセッサのデータ待ち時間は短くて済む。
このように、キャッシュメモリ装置では、要求アドレスとアドレス値の一致するキャッシュラインが存在する場合には、そのキャッシュラインに保持されているデータの有効性が有効であるか無効であるかにより、主記憶もしくは他キャッシュメモリへのアクセスが必要かどうか、プロセッサのデータ待ち時間が短くて済むかどうか、が決まる。
一方、マルチプロセッサシステムでは、プロセッサ毎にキャッシュ装置を持っていることが多い。プロセッサ毎に設けたキャッシュメモリ上のデータは、キャッシュメモリ間に亘ってそのデータの正しさ、即ちデータの一貫性を保つ必要がある。データの一貫性を保つため、キャッシュコヒーレンスプロトコルと呼ばれるキャッシュメモリ間のデータの整合性を保つ規則に従って、キャッシュメモリは管理される。これによりキャッシュメモリ上のデータへのアクセスが可能となっている。
マルチプロセッサシステムにおいて、キャッシュメモリ間に亘ってデータの一貫性を保つ様子を、無効化型キャッシュコヒーレンスプロトコルとして知られたMESIプロトコルを使用したキャッシュ装置を例に説明する。
図2(A)は、MESIプロトコルのリード要求に対する状態遷移であり、図2(B)は、MESIプロトコルのライト要求に対する状態遷移である。この状態繊維の記号は次の内容を表わす。
M:変更(Modified) であり、複数のキャッシュの1つにのみ有効データが保持されており、かつ、データは変更されており、主記憶のそれと値が同じであることが保証されない。
E:排他(Exclusive) であり、複数のキャッシュの1つにのみ有効データが保持されている。
S:共有(Shared)であり、複数のキャッシュ上に同じデータが保持されている。
I:無効(Invalid)であり、キャッシュ上のデータは無効である。
self : 自己のプロセッサからの要求を処理した場合である。
other : 他のキャッシュ装置からの要求を処理した場合である。
self-if copy:
リード要求に対し無効状態にあり、他のキャッシュが、そのデータを保持している場合。
self-if no copy:
リード要求に対し無効状態にあり、どのキャッシュも、そのデータを保持していない場合。
ここで、キャッシュ上に、データが存在しないという状態は、キャッシュ上にデータが無効I状態で保持されていることと意味的に等価なので、便宜上、無効I状態とは、
▲1▼キャッシュ上にそのデータが無効I状態で保持されている場合と、
▲2▼キャッシュ上にそのデータが存在しない場合
の両方を指すものとする。
同様に、キャッシュ上にデータが存在しないという表現は、
▲1▼キャッシュ上に、本当に、そのデータが存在しない場合と、
▲2▼キャッシュ上に、そのデータが無効I状態で保持されている場合
の両方を指すものとする。
図3(A)は、マルチプロセッサシステムのキャッシュ装置であり、プロセッサ102−1,102−2のそれぞれにキャッシュ装置100−1,100−2が設けられ、バス104により主記憶106と共に共通接続されている。
いま図3(A)のように、キャッシュ装置100−1,100−2のキャッシュメモリ上に、あるキャッシュラインにデータが共有S(Shared)状態で保持されているとする。ここで、図3(B)のように、プロセッサ102−1からキャッシュ装置100−1のデータへの書込要求が発生した場合、キャッシュ装置100−1のデータを変更し、共有S状態を変更M状態とする。しかし、キャッシュ装置100−1のデータを変更するだけでは、キャッシュ装置100−1,100−2間のデータの一貫性が保てない。そのため、キャッシュ装置100−2の共有S状態を無効I状態に変更する無効化操作を行った後、キャッシュメモリ100−1のデータを変更する操作が必要となる。
その後、図3(C)のように、プロセッサ102−2が変更したデータに対し読出要求を行うと、図3(B)のプロセッサ102−1の書込要求によりキャッシュ装置100−2のデータは無効I状態に無効化されているので、その後に発生したプロセッサ102−2の読出要求はキャッシュミスとなる。
一般に、キャッシュラインのブロックサイズは、プロセッサの扱うデータサイズよりサイズが大きい。仮に、キャッシュブロックサイズを2ワード、プロセッサの扱うデータサイズを半分の1ワードとする。ここで図4(A)のように、キャッシュ装置100−1,100−2が、キャッシュライン122−1,122−2にある同じデータ、例えば、先頭1ワード部分のデータが“12”、後方1ワード部分のデータが“34”である2ワード帳のデータを保持していたとする。。この状態で図4(B)のように、プロセッサ102−1の書込要求がキャッシュライン122−1の先頭1ワード部分のデータへの書込要求が発生し、値が“12”から“56”に書き替えられたとする。このときキャッシュ装置100−1,100−2のキャッシュメモリには、キャッシュライン122−1,122−2単位で状態が管理されるので、キャッシュ装置100−2のキャッシュライン122−2のデータは、2ワード分の全てが無効Iへの状態遷移で無効化される。
次に図4(C)のように、プロセッサ102−1のキャッシュ装置100−2におけるキャッシュライン122−2の読出要求が、後ろ1ワード部分のデータへの読出要求であったとする。この場合、キャッシュ装置100−1,100−2におけるキャッシュライン122−1,122−2の後ろ1ワード部分に保持されているデータの値は“34”と同じであるにも関わらず、キャッシュライン122−2は状態は無効Iのためキャッシュミスとなり、主記憶もしくは他キャッシュへのアクセスが発生し、プロセッサ102−2はデータ待ちになる。いわゆるいわつりの共有(false sharing )によるキャッシュミスである。このようなキャッシュミスを発生させてしまう無効化操作を「好ましくない無効化操作」と呼ぶことにする。
一方、図5(A)のように、あるデータがプロセッサ102−1のキャッシュ装置100−1に排他Eの状態で保持されており、プロセッサ102−2のキャッシュ装置100−2には存在しないか又は無効Iの状態でデータが保持されていたとする。ここで、図5(B)のように、プロセッサ102−2からキャッシュ装置100−2のデータへの読出要求が発生すると、キャッシュ装置100−1に排他Eの状態で保持しているデータを、キャッシュ装置100−2に転送してプロセッサ102−2に提供し、この結果、キャッシュ装置100−1,100−2で共有されることになる。従って、データをキャッシュ装置100−1もしくは主記憶から100−2へデータを転送する操作と、キャッシュ装置100−1の排他Eの状態から共有Sの状態に変える操作が必要となる。
このようにプロセッサ102−2の読出要求で、キャッシュ装置100−1の状態が排他Eの状態から共有Sの状態に変わった後に、図5(C)のように、プロセッサ102−1が書込要求を行うと、キャッシュ装置100−2の状態を共有Sの状態から無効Iの状態に変える無効化操作が必要となり、無効化後にキャッシュ装置100−1の状態を共有Sから変更Mに変える。
近年のプロセッサは、条件分岐を動的又は静的に予測し、投機的に命令を実行する機能を備えており、その結果、投機的な読出要求を出す。投機的な読出命令の実行は予測に基づく命令実行であるので、その予測が正しければ良いが、誤りであればその投機的な実行結果は破棄される。つまり、投機的に実行された読出要求により読み出されたデータは、利用されない可能性がある。
図5(B)のプロセッサ102−2の読出要求が、もし誤った予測に基づく読出要求であったとしても、プロセッサ102−2の読出要求によりキャッシュ装置100−1の状態を排他Eから共有Sに変える操作が実行されてしまう。そのため、図5(C)のように、その後に発生するプロセッサ102−1の書込要求では、本質的には必要のない共有Sの状態にあるキャッシュ装置100−2のデータの状態を無効Iに変える無効化操作が必要となる。この読出データが結果的に利用されない読出要求の実行でキャッシュメモリの状態を共有Sに変えしてまう操作を、「好ましくない読出操作」と呼ぶこととする。
【発明の開示】
本発明に従えば、「好ましくない無効化操作」により発生するキャッシュミスを減らし、プロセッサのデータ待ち時間を短くするキャッシュ装置及び制御方法が提供される。
また本発明に従えば、「好ましくない読出操作」により必要となる無効化操作を減らしてプロセッサのデータ待ち時間を短くするキャッシュ装置及び制御方法が提供される。
本発明は、複数のプロセッサ毎に設けられ、相互にバス接続されると共に主記憶とバス接続されたキャッシュ装置に於いて、主記憶の一部のデータをキャッシュライン単位に保持すると共にキャッシュラインに保持したデータの状態を
▲1▼有効
▲2▼無効
▲3▼不明
の3種類の状態で区別するキャッシュメモリと、自己のプロセッサ又は他のキャッシュ装置から処理要求を受けた際に、該当するキャッシュラインに保持しているデータを有効、無効、又は不明の状態に応じて処理すると共に、処理後に該当するキャッシュラインの保持データの状態をキャッシュコヒーレンスを確保するめに定めた所定の状態に遷移させるキャッシュコントローラとを備えたことを特徴とする。
このように本発明では、データの有効性が有効であるか無効であるか確かではないデータを、有効性の不明なデータとしてキャッシュラインに保持することを許す。そして、「好ましくない無効化操作」を「弱い無効化操作(ウィーク・インバリデイト weak -invalidate)」により処理し、また「好ましくない読出操作」を「弱いリード操作(ウィークリート;weak-read)」により処理することで問題を解決する。
「弱い無効化操作」は、キャッシュラインを無効化する代わりに、キャッシュライン上のデータを有効性の不明なデータとして保持し続けることを許す。例えばキャッシュコヒーレンスのためのMESIプロトコルの「好ましくない無効化操作」では、共有Sの状態にある2つのキャッシュメモリデータの一方に書込要求が発生すると、他方のキャッシュメモリのデータは無効化されてしまうが、本発明の「弱い無効化操作」では、無効化されずに有効性の不明なデータとして保持され続ける。このため「好ましくない無効化操作」ではプロセッサの読出要求でキャッシュミスとなるが、本発明の「弱い無効化操作」ではキャッシュメモリは有効性の不明なデータを保持しているため、読出要求に対し投機データとしてプロセッサに供給できる。このような本発明の「弱い無効化操作」は、MESIプロトコルに不明Uの状態を加えたMESIUプロトコルということができる。
本発明の「弱い読出操作」は、本発明の「弱い無効化操作」を実現するMESIUプロトコルに従ったキャッシュ管理制御において、プロセッサがキャッシュメモリに保持された有効性が不明なデータを投機データとして提供を許可するウィークリード要求が生じた時に実行される。この場合、読出要求を受けたキャッシュ装置は、他のキャッシュ装置に保持している有効データを読出転送して要求元に応答して自分にコピーする。このとき本発明の「弱い読出操作」では、他のキャッシュメモリから転送したデータを、有効なデータとしてではなく、有効性の不明なデータとして扱う。
即ち、MESIプロトコルの「好ましくない読出操作」では、無効Iの状態にあるキャッシュメモリのデータは排他Eの状態にある他のキャッシュメモリから転送した場合、各々共有Sの状態に変更される。しかし、本発明の「弱い読出操作」で処理した場合は、他のキャッシュメモリのデータは排他Eの状態のまま変更されず、読出対象のキャッシュメモリに転送されたデータは有効性の不明なデータ、即ち不明Uの状態のデータとして保持される。従って、その後、に排他Eの状態にある他のキャッシュデータに書込要求があっても、同じデータを不明Uの状態で保持しているキャッシュメモリの無効化操作は必要なくなる。
本発明の弱い読出操作は、プロセッサがキャッシュメモリに保持された有効性が不明なデータを投機データとして提供を許可するウィークリード要求が生じた時とする以外に、キャッシュ装置の機能として固定設定してもよい。
本発明の別の形態にあっては、複数のプロセッサ毎に設けられ、相互にバス接続すると共に主記憶とバス接続されたキャッシュ装置に於いて、主記憶の一部のデータをキャッシュライン単位に保持すると共にキャッシュラインに保持したデータの状態を
▲1▼有効
▲2▼不明
の2種類の状態で区別するキャッシュメモリと、自己のプロセッサ又は他のキャッシュ装置から処理要求を受けた際に、該当するキャッシュラインに保持しているデータを有効又は不明の状態に応じて処理すると共に、処理後に該当するキャッシュラインの保持データの状態をキャッシュコヒーレンスを確保するめに定めた所定の状態に遷移させるキャッシュコントローラとを備えたことを特徴とする。
この場合にも、データの有効性が有効であるかが確かではないデータを、有効性の不明なデータとしてキャッシュラインに保持することを許す。そして、同様にして「好ましくない無効化操作」を「弱い無効化操作(weak-invalidate)」により処理し、また「好ましくない読出操作」を「弱いリード操作(weak-read)」により処理することで問題を解決する。これは本発明のMESIUプロトコルから無効Iの状態を除いたMESUプロトコルということができる。
キャッシュコントローラは、有効性の不明なデータを保持しているキャッシュラインへの読出要求が発生した際に、投機データの要求元への提供許可か提供禁止かを判定し、提供許可を判定した場合は、有効性の不明なデータを投機データとして要求元に提供し、提供禁止を判定した場合は、他のキャッシュ装置又は主記憶から有効データを入手して要求元に提供させる。
キャッシュコントローラは、投機データを要求元に提供した後、要求元から投機データの有効性確認要求が発生した際に、投機データの本当の有効性を確認して確認の結果を要求元に通知する。
またキャッシュコントローラは、投機データを要求元に提供すると同時に、投機データの本当の有効性を確認して確認の結果を記憶し、要求元から前記投機データの有効性の確認要求が発生した際に、記憶しておいた有効性の確認結果を要求元に通知するようにしてもよい。
更に、キャッシュコントローラは、投機データを要求元に提供すると同時に、投機データの本当の有効性を自分自身で確認し、確認結果を要求元に通知するようにしてもよい。
キャッシュコントローラは、確認結果から投機データが有効であった場合は、要求元のプロセッサに確認結果を通知して投機データに基づく命令の実行結果を承認させ、一方、確認結果から投機データが無効であった場合は、要求元のプロセッサに確認結果を通知して投機データに基づく命令の実行結果を破棄させる。このように有効性の不明なデータを保持することができる本発明のキャッシュ装置により、プロセッサに投機的にデータを供給することが可能となり、投機データの提供でキャッシュミスを低減し、プロセッサの待ち時間を短縮してキャッシュ性能を向上させる。
キャッシャコントローラは、主記憶の予め定めた特定アドレスをもつ有効性の不明なデータを保持しているキャッシュラインへの読出要求が発生した時は、投機データとしての要求元への提供を禁止し、主記憶の特定アドレス以外のアドレスをもつ有効性の不明なデータを保持しているキャッシュラインへの読出要求が発生した時は、投機データとしての要求元への提供を許可する。
またキャッシャコントローラは、プロセッサの投機データを禁止する命令の実行で生成した読出要求を有効性の不明なデータの保持しているキャッシュラインに受けた時は、投機データとしての要求元への提供を禁止し、プロセッサの投機データを許容する命令の実行、例えば分岐予測の結果、生成された読出要求を、有効性の不明なデータの保持しているキャッシュラインに受けた時は、投機データとしての要求元への提供を許可する。このように投機的な読出要求か否かを、主記憶のアドレスまたはプロセッサ実行命令から識別し、プロセッサの投機的な命令実行と投機的でない通常の命令実行を区別したキャッシュ管理制御を行う。
キャッシュコントローラは、キャッシュラインの保持データの状態を、有効を示す変更M、排他E及び共有Sと無効Iの4状態で区別するキャッシュコヒーレンスのMESIプロトコルに、データの有効性が不明であることを示す状態Uを加えた5状態で区別するキャッシュコヒーレンスのMESIUプロトコルとする。このMESIUプロトコルが、前述したように本発明の「弱い無効化操作」を実現する。
キャッシュコントローラは、キャッシュラインの保持データに対するリード要求を処理した場合、MESIUプロトコルに基づき次のように処理する。
▲1▼変更Mの状態で、自己のプロセッサの読出要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置からの読出要求であれば共有Sに状態遷移する。
▲2▼排他Eの状態で、自己のプロセッサの読出要求であれば同じ排他Eに状態遷移し、他のキャッシュ装置からの読出要求であれば共有Sに状態遷移する。
▲3▼共有Sの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置からの読出要求であれば同じ共有Sに状態遷移する。
▲4▼無効Iの状態で、自己のプロセッサの読出要求で、他キャッシュ装置が該当ラインを保持していない場合は排他Eに状態遷移し、他のキャッシュ装置が、該当ラインを保持している場合は共有Sに状態遷移し、更に他のキャッシュ装置で読出要求であれば同じ無効Iに状態遷移する。
▲5▼不明Uの状態で、自己のプロセッサの読出要求により主記憶からデータをコピーした場合は排他Eに状態遷移し、他のキャッシュ装置からコピーした場合は共有Sに状態遷移し、更に他のキャッシュ装置の読出要求であれば同じ不明Uに状態遷移する。
また、キャッシュコトローラは、キャッシュラインの保持データに対するライト要求を処理した場合には、MESIUプロトコルに基づき次のように処理する。
▲1▼変更Mの状態で、自己のプロセッサの書込要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば不明Uに状態遷移する。
▲2▼排他Eの状態で、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば不明Uに状態遷移する。
▲3▼共有Sの状態で、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば不明Uに状態遷移する。
▲4▼無効Iの状態で、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば同じ無効Iに状態遷移する。
▲5▼不明Uの状態で、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば同じ不明Uに状態遷移する。
キャッシュコントローラは、不明Uの状態で保持したデータの提供を許すプロセッサからのウィークリード要求(弱い読出要求)を処理した場合、ウィークリードでのキャッシュコヒーレンスのためのMESIUプロトコルに基づき次のように処理する。
▲1▼変更Mの状態で、自己のプロセッサの弱い読出要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置からの弱い読出要求であれば排他Eに状態遷移する。
▲2▼排他Eの状態で、自己のプロセッサの弱い読出要求又は他のキャッシュ装置からの弱い読出要求であれば同じ排他Eに状態遷移する。
▲3▼共有Sの状態で、自己のプロセッサの弱い読出要求又は他のキャッシュ装置からの弱い読出要求であれば同じ共有Sに状態遷移する。
▲4▼無効Iの状態で、自己のプロセッサの弱い読出要求で、他キャッシュ装置が該当ラインを保持していない場合は排他Eに状態遷移し、他のキャッシュ装置が、該当ラインを保持している場合は不明Uに状態遷移し、更に他のキャッシュ装置の弱い読出要求であれば同じ無効Iに状態遷移する。
▲5▼不明Uの状態で、自己のプロセッサの弱い読出要求又は他のキャッシュ装置の弱い読出要求であれば同じ不明Uに状態遷移する。
このウィークリード要求を実現するMESIUプロトコルは、プロセッサからウィークリード要求を受けた際に実行せずに、キャッシュコントローラで固定設定してもよい。
キャッシュコントローラは、キャッシュラインの保持データの状態を、有効を示す変更、排他及び共有の3状態で区別するMESプロトコルに、データの有効性が不明であることを示す状態Uを加えた4状態で区別するMESUプロトコルを備える。
キャッシュコントローラは、キャッシュラインの保持データに対するリード要求を処理した場合、このMESUプロトコルに基づき次のように処理する。
▲1▼変更Mの状態で、自己のプロセッサの読出要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置からの読出要求であれば共有Sに状態遷移する。
▲2▼排他Eの状態で、自己のプロセッサの読出要求であれば同じ排他Eに状態遷移し、他のキャッシュ装置からの読出要求であれば共有Sに状態遷移する。
▲3▼共有Sの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置からの読出要求であれば同じ共有Sに状態遷移する。
▲4▼不明Uの状態で、自己のプロセッサの読出要求で、他キャッシュ装置が該当ラインを保持していない場合は排他Eに状態遷移し、他のキャッシュ装置が、該当ラインを保持している場合は共有Sに状態遷移し、更に他のキャッシュ装置からの読出要求であれば同じ不明Uに状態遷移する。
またキャッシュコントローラは、キャッシュラインの保持データに対するライト要求を処理した場合、MESUプロトコルに基づき次のように処理する。
▲1▼変更Mの状態で、自己のプロセッサの書込要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば不明Uに状態遷移する。
▲2▼排他Eの状態で、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば不明Uに状態遷移する。
▲3▼共有Sの状態で、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば同じ不明Uに状態遷移する。
▲4▼不明Uで、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば同じ不明Uに状態遷移する。
またキャッシュコントローラは、キャッシュラインに不明Uの状態で保持した投機データの提供を許可するプロセッサからのウィークリード要求(弱い読出要求)命令を処理した場合、MESUプロトコルに基づき次の処理を行う。
▲1▼変更Mの状態で、自己のプロセッサの読出要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置からの読出要求であれば排他Eに状態遷移する。
▲2▼排他Eの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置からの読出要求であれば同じ排他Eに状態遷移する。
▲3▼共有Sの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置からの読出要求であれば同じ共有Sに状態遷移する。
▲4▼不明Uの状態で、自己のプロセッサの読出要求で、他キャッシュ装置が該当ラインを保持していない場合は排他Eに状態遷移し、他のキャッシュ装置が、該当ラインを保持している場合又は他のキャッシュ装置の読出要求であれば同じ不明Uに状態遷移する。
このウィークリード要求を実現するMESUプロトコルについても、プロセッサからウィークリード要求を受けた際に実行する以外に、キャッシュコントローラでMESUプロトコルを固定設定してもよい。
一方、本発明は、複数のプロセッサ毎に設けたキャッシュ装置を相互にバス接続すると共に主記憶とバス接続したキャッシュ制御方法を提供する。
このキャッシュ制御方法は、
▲1▼主記憶の一部のデータをキャッシュメモリ上でキャッシュライン単位に保持すると共に前記キャッシュラインに保持したデータの状態を有効、無効、及び不明の3種類の状態で区別し、
▲2▼自己のプロセッサ又は他のキャッシュ装置から処理要求を受けた際に、該当するキャッシュラインに保持しているデータを有効、無効、又は不明の状態に応じて処理し(MESUIプロトコル)、
▲3▼要求の処理後に該当するキャッシュラインの保持データの状態をキャッシュコヒーレンスを確保するために定めた所定の状態に遷移させることを特徴とする。
また本発明のキャッシュ制御方法の別の形態にあっては、
▲1▼主記憶の一部のデータをキャッシュメモリ上でキャッシュライン単位に保持すると共に前記キャッシュラインに保持したデータの状態を有効及び不明の2種類で区別し、
▲2▼自己のプロセッサ又は他のキャッシュ装置から処理要求を受けた際に、該当するキャッシュラインに保持しているデータを有効又は不明の状態に応じて処理し(MESUプロトコル)、
▲3▼要求の処理後に該当するキャッシュラインの保持データの状態をキャッシュコヒーレンスを維持するために定めた所定の状態に遷移させる。
この本発明によるキャッシュ制御方法の詳細は、装置構成の場合と基本的に同じになる。
【図面の簡単な説明】
図1はキャッシュメモリのテーブル構造の説明図
図2はMESIプロトコルの状態遷移図
図3はMESIプロトコルにおける好ましくない無効化操作を招くキャッシュ動作の説明図
図4は図3の好ましくない無効化操作におけるキャッシュラインの説明図
図5はMESIプロトコルにおける好ましくない読出操作を招くキャッシュ動作の説明図
図6は本発明のキャッシュ装置が使用されるマルチプロセッサシステムのブロック図
図7は本発明のキャッシュ装置の機能ブロック図
図8はキャッシュ保持データを不明として扱う本発明の弱い無効化操作及び弱い読出操作を実現するMUSIUプロトコルの状態遷移図
図9は図8のMUSIUプロトコルの状態遷移表の説明図
図10は図3の好ましくない無効化操作の問題を解消する本発明の弱い無効化操作の説明図
図11は図5の好ましくない読出操作の問題を解消する本発明の弱い読出操作の説明図
図12は本発明の弱い読出操作の他の動作形態の説明図
図13は図7のキャッシュコントローラによる本発明のキャッシュ管理制御の第1実施形態のフローチャート
図14は図13で投機データを要求元に提供した後に実行する確認要求処理のフローチャート
図15は図14の投機データの有効性確認のフローチャート
図16は図14の投機データの他の有効性確認のフローチャート
図17は図7のキャッシュコントローラによる本発明のキャッシュ管理制御の第2実施形態のフローチャート
図18は図17で投機データを要求元に提供した後に実行する確認要求処理のフローチャート
図19は図7のキャッシュコントローラによる本発明のキャッシュ管理制御の第3実施形態のフローチャート
図20はキャッシュ保持データを不明として扱う本発明の弱い無効化操作及び弱い読出操作を実現するMESUプロトコルの状態遷移図
図21は図20のMESUプロトコルの状態遷移表の説明図
図22は図20のMESUプロトコルを使用したキャッシュコントローラによる本発明のキャッシュ管理制御の第4実施形態のフローチャート
図23は図22で投機データを要求元に提供した後に実行する確認要求処理のフローチャート
図24は図20のMESUプロトコルを使用したキャッシュコントローラによる本発明のキャッシュ管理制御の第5実施形態のフローチャート
図25は図20のMESUプロトコルを使用したキャッシュコントローラによる本発明のキャッシュ管理制御の第6実施形態のフローチャート
【発明を実施するための最良の形態】
(装置構成と機能)
図6は本発明のキャッシュ装置および制御方法が適用されたマルチプロセッサシステムのブロック図である。
図6において、本発明のキャッシュ装置10−1,10−2,・・・10−nは、それぞれプロセッサ12−1,12−2,・・・12−nに対応して設けられる。キャッシュ装置10−1〜10−nは、システムバス14により相互に接続され、更にシステムバス14により主記憶16と接続されている。キャッシュ装置10−1〜10−nを接続するシステムバス14としては、例えばスヌープバスを使用する。スヌープバスはキャッシュ装置10−1〜10−nのいずれかでプロセッサ12−1〜12−nから処理要求があった際に、処理要求に該当するキャッシュラインに保持しているデータの状態をスヌープ制御線の状態信号により直ちに取得できるバスである。
図7は、本発明のキャッシュ装置10の機能ブロック図である。キャッシュ装置10は、キャッシュコントローラ18とキャッシュメモリ20で構成される。キャッシュメモリ20は、複数のキャッシュライン22単位にデータを保持しており、各キャッシュライン22はタグ24とデータ30を含み、タグ24は状態タグ26のアドレスタグ28を備える。キャッシュメモリ20の状態タグ26につき本発明にあっては、保持データの状態として有効及び無効に加えて、有効性の不明なデータを保持することができる。
キャッシュコントローラ18には、キャッシュ制御管理部32、状態管理部34、プロセッサインタフェース36、バスインタフェース38が設けられる。また状態管理部34には、リードプロトコル処理部40、ウィークリードプロトコル処理部42、投機データ確認部44及びライトプロトコル処理部46が設けられる。
キャッシュ制御管理部32は、プロセッサ12から読出要求を受けると、キャッシュメモリ20のタグ24を参照し、要求アドレスとアドレス値の一致するアドレスタグ28をもったキャッシュライン22を検索する。アドレス値の一致するキャッシュラインが存在しない場合にはキャッシュミスとなり、主記憶16もしくは他のキャッシュ装置から有効データを獲得してプロセッサ12に提供する。
キャッシュ制御管理部32は、要求アドレスに一致するアドレスのキャッシュラインが存在した場合には、そのキャッシュラインの状態タグ26による有効、無効、不明の状態に応じた処理を行う。即ち状態が有効であれば、キャッシュメモリ10上に保持されているデータをプロセッサ12に提供する。無効であれば他のキャッシュ装置または主記憶から有効データを入手してプロセッサ12に応答する。更に不明であれば、プロセッサ12が投機データの提供を許可していることを条件に、キャッシュメモリ20上に有効性が不明な状態で保持しているデータを、投機データとしてプロセッサ12に提供する。
キャッシュ制御管理部32は、プロセッサ12からの書込要求に対しては、キャッシュヒットであればキャッシュメモリ20上の該当するキャッシュラインのデータを更新し、ミスヒットであればキャッシュメモリ20上に新たなキャッシュラインを確保してデータを書き込む。
このようなキャッシュ制御管理部32によるプロセッサ12及びシステムバス14を経由した他のキャッシュ装置からの処理要求に対し、状態管理部34が処理要求を実行した後の該当するキャッシュライン上の状態タグ26の状態遷移制御を行う。状態管理部34によるキャッシュコヒーレンスのための状態遷移制御として、本発明にあっては、図2のMESIプロトコルに更に、有効性の不明なデータの保持を示す不明Uの状態を加えたMESIUプロトコルを適用している。
図8は、図7の状態管理部34で使用されるMESIUプロトコルの状態遷移の説明図である。即ち図8(A)が、リードプロトコル処理部40で処理する読出要求に対するMESIUリードプロトコルの状態遷移である。また図8(B)が、図7のライトプロトコル処理部46によるMESIUライトプロトコルの状態遷移である。この図8(A)及び(B)のMESIUのリードプロトコル及びライトプロトコルは、図3のMESIプロトコルにおける「好ましくない無効化操作」を解消するための本発明による「弱い無効化操作」のキャッシュ管理制御を実現する。
更に図8(C)は、図7のウィークリードプロトコル処理部42で処理されるMESIUウィークリードプロトコルの状態遷移である。このMESIUウィークリードプロトコルは、図5に示したMESIプロトコルにおける「好ましくない読出操作」の問題を解消するための本発明の「弱い読出操作」のキャッシュ管理制御を実現する。
ここで図8(A)(B)(C)の各プロトコルにおいて、状態Mは変更(Modified)、状態Eは排他(Exclusive )、状態Sは共有(Shared)、状態Iは無効(Invalid )を表わし、更に本発明にあっては新たに、有効性の不明なデータ保持の状態として不明(Unknown )を追加している。
また図8(A)のリードで、状態M,E,Sにおける実線の遷移は、自己のプロセッサからリード要求を処理した場合であり、破線は他のキャッシュ装置でリード要求が処理された場合である。また無効Iにあっては他の装置での読出要求は破線のように状態変化を起こさないが、自己のプロセッサからの読出要求にあっては、他キャッシュ装置が該当ラインを保持していない(self-if no copy) の場合には排他Eに状態遷移し、他キャッシュ装置が該当ラインを保持している(self-if copy)の場合には共有Sに状態遷移する。
図8(B)のMESIUライトプロトコルの状態遷移にあっては、状態M,E,S,I,Uのそれぞれについて、自己のプロセッサからの書込要求を処理した場合ついては実線のように遷移し、他のキャッシュ装置で書込要求が処理された場合については破線のように遷移する。図8(C)のMESIUウィークリードプロトコルの破線及び実線の遷移は、図8(A)のMESIUリードプロトコルと同じ意味をもつ。
図9は、図8のMESIUプロトコルの状態遷移表である。この状態遷移表は、縦方向に現在のキャッシュラインに保持したデータの状態を表わし、横方向に次の状態として自己のプロセッサからの要求を「SELF」、他のキャッシュ装置での要求を「OTHER」として、図8(A)(B)(C)のリード、ライト及びウィークリードに分けて状態遷移を表わしている。
このうち、次の状態が「E,S」及び「E,U」に付した(1)(2)は、図8(A)のリードプロトコルにおける現在の状態Iからの実線の「SELF−IF NO COPY」と「SELF−IF−COPY」に対応している。例えば現在の状態Iで次の状態が自己プロセッサからのリード要求の結果遷移する状態「E,S」の(1)については、図8(A)の状態Iのように、他のどのキャッシュ装置が該当するキャッシュラインを保持していない場合は排他Eに遷移し、それ以外の他のキャッシュ装置が該当ラインを保持している場合には共有Sに遷移する。また(2)で示す次の状態「E,U」については、図8(C)の現在の状態Iから次の状態EまたはUへの遷移を表わす。更に図9の(3)で示す次の状態「E,S」への遷移は、図8(A)のリードプロトコルにおける現在の状態Uにおいて自己のプロセッサからリード要求を受けた場合であり、この場合にも、どのキャッシュ装置にも該当するキャッシュラインを保持していないときは排他Eの状態に遷移し、それ以外の他のキャッシュ装置が該当ラインを保持している場合は共有Sに状態遷移する。
(弱い無効化操作と弱い読出操作)
図10は、図8(A)(B)のMESIUプロトコルにより処理で、図3のMESIプロトコルで「好ましくない無効化操作」が生じたと同じプロセッサからの処理要求があったときの本発明による「弱い無効化操作」の動作説明である。
図10(A)は、2つのキャッシュ装置10−1,10−2のあるキャッシュラインについて、同じデータが共有Sの状態で保持されていたとする。この状態で、図10(B)のように、プロセッサ12−1から共有Sの状態で保持しているデータに対しライト要求を受けて処理したとすると、図8(B)のライトプロトコルの状態遷移に従い、キャッシュ装置10−1の状態は共有Sから変更Mに遷移する。同時に、同じデータをキャッシュラインに保持しているキャッシュ装置10−2にあっては、図8(B)のライトプロトコルの状態遷移に従い、他のキャッシュ装置10−1で書込みがあったことから不明Uの状態に遷移する。この図10(A)の2つのキャッシュメモリ10−1,10−2の共有S状態が、図10(B)のように一方のキャッシュ装置10−1に対するプロトコル12−1の書込要求で変更Mに遷移したとき、他のキャッシュ装置10−2の共有Sの状態を図3(B)のように無効Iの状態とせずに不明Uの状態とするのが、本発明の「弱い無効化操作(ウィークインバリデイト)」である。
続いて図10(C)のように、プロセッサ12−2からのリード要求をキャッシュ装置10−2で処理すると、このときのデータは不明Uの状態で保持しており、無効ではないことからキャッシュヒットとなって、不明Uの状態で保持したデータを要求元のプロセッサ12−2に投機的データとして提供する。この場合には図8(A)のリードプロトコルの状態遷移のように、リード要求のあったキャッシュ装置10−2の不明Uの状態は共有Sの状態に遷移し、同時に他のキャッシュ装置10−1の変更Mの状態も共有Sの状態に遷移する。
この図10(A)におけるキャッシュ装置10−1,10−2が共有Sの状態にあるときのいずれか一方、例えばプロセッサ12−1からの書込要求に対し、他のキャッシュ装置10−2のキャッシュラインを無効化せずに不明Uの状態とする弱い無効化操作(ウィークインバリディド)を行うことで、次の図10(C)のようにプロセッサ12−2がリード要求をキャッシュ装置10−2に行ったとき、ミスヒットとならずにキャッシュヒットとして不明Uの状態にあるデータをプロセッサ12−2に投機的データとして提供でき、無効Iの状態では必要だったプロセッサのデータ待ちの時間を短くすることができる。
図11は、図8(C)のウィークリードプロトコルに従った本発明の「弱い読出操作」の動作説明図である。この「弱い読出操作」は、図5のMESIプロトコルにおける「好ましくない読出操作」の問題を解消する。
図11(A)は、2つのキャッシュ装置10−1,10−2のあるキャッシュラインに同じデータが、一方は排他Eの状態で他方は無効Iの状態で保持されていたとする。次に図11(B)のように、プロセッサ12−2が無効Iの状態でキャッシュ装置10−2のキャッシュラインに保持しているデータのリード要求を行うと、このリード要求はウィークリード要求として扱われることを許されている場合にはウィークリード要求としてキャッシュ装置10−2で処理される。即ちキャッシュ装置10−2は、プロセッサからの投機データの提供を許可するウィークリード要求を認識すると、図8(C)のウィークリードプロトコルの状態遷移に従ったウィークリード処理を実行する。ウィークリード処理は、、プロセッサ12−2からのウィークリード要求に対しキャッシュ装置10−2は該当するキャッシュラインのデータが無効Iの状態にあることから、排他Eの状態にあるキャッシュ装置10−1にウィークリードを要求し、有効データの転送を受けてキャッシュラインにコピーし、且つ要求元のプロセッサ12−2に提供する。このとき図5(B)のMESIプロトコルにあってはキャッシュ装置10−1,10−2は共有Sの状態に遷移するが、図11(B)のウィークリードにあっては、キャッシュ装置10−1から転送した有効データをキャッシュ装置10−2上では不明Uの状態で保持し、キャッシュ装置10−1は同じ排他Eの状態を維持する。
このため、図11(C)のように、次にプロセッサ12−1からキャッシュ装置10−1にライト要求があったとき、図5(C)のMESIプロトコルでは他のキャッシュ装置10−2の無効化を必要としたが、図11(C)では、無効化は不要であり、他のキャッシュ装置10−2のキャッシュラインのデータは同じ不明Uの状態が維持される。もちろん、ライト要求のあったキャッシュ装置10−1は排他Eの状態から変更Mの状態に遷移する。
図12は、図8(C)のウィークリードプロトコルの他のキャッシュ動作の例である。図12(A)にあっては、プロセッサ10−1のキャッシュラインのデータは変更Mの状態で保持されており、キャッシュ装置10−2のキャッシュラインの同じデータは無効Iの状態で保持されている。この図12(A)の状態で図12(B)のようにプロセッサ12−2が投機データの提供を許可するウィークリード要求を行うと、キャッシュ装置10−1の有効データをウィークリード要求によりキャッシュ装置10−2に転送してコピーし、且つ要求元のプロセッサ10−2に提供する。そして、ウィークリード要求を受けたキャッシュ装置10−2は無効Iの状態から不明Uの状態に遷移し、同時にデータ転送元であるキャッシュ装置10−1は変更Mの状態から排他Eの状態に遷移する。これは図11(B)と同じ状態への遷移となる。このため図12(C)のように、次にプロセッサ12−1からキャッシュ装置10−1にライト要求があっても、同じデータをキャッシュラインに保持している他のキャッシュ装置10−2の無効化は不要となる。
(MESIUプロトコルのキャッシュ管理制御)
図13は、図8のMESIUプロトコルに従った図7のキャッシュコントローラ18によるキャッシュ管理制御の第1実施形態のフローチャートである。
図13において、プロセッサ12から読出要求があるとキャッシュ管理制御が開始され、まずステップS1で要求アドレスのアドレス値をもつ要求データがキャッシュメモリ20のキャッシュラインに存在するか否かの要求データの所有をチェックする。要求データを所有していれば、ステップS2に進み、キャッシュラインの状態タグ26からデータの有効性をチェックする。状態タグ26に変更M、共有Sまたは排他Eのいずれかの状態が格納されていれば、有効データとしてステップS3に進み、キャッシュメモリ20のキャッシュライン上に保持している有効データを読み出して要求元のプロセッサ12に提供する。ステップS3で有効データを要求元に提供した後の状態制御は、図8(A)のリードプロトコルにおける現在の状態を変更M、共有Sもしくは排他Eとして実線のように遷移することから、同じ状態M,S,Eが維持される。
一方、ステップS2でデータの有効性をチェックしたところ不明U状態であったとすると、ステップS4に進み、プロセッサの読出要求に対する提供データが投機データの許可する要求か否かチェックする。このプロセッサに対し投機データの提供を許可する読出要求か否かのチェックは
▲1▼主記憶16上の投機データの要求元への提供を禁止している特定アドレスか否かを判断、
▲2▼プロセッサ12が投機データを禁止する命令で生成した読出要求か投機データを許容する命令で生成した読出要求かを判断、
のいずれか又は両方とすれば良い。
ステップS4で投機データの提供を許可する読出要求であることが判断されると、ステップS5で、それまでの図8(A)のリードプロトコルから図8(C)のウィークリードプロトコルに切り替え、キャッシュライン上に不明Uの状態で保持しているデータを投機データとして要求元のプロセッサ12に供給する。この投機データの要求元への供給が済むと、キャッシュ装置は図8(C)のウィークリードの遷移状態のように、同じ不明Uの状態を維持する。
このようにステップS5で要求元のプロセッサ12に投機データを供給した場合には、その後に要求元のプロセッサ12から投機データの有効性の確認要求を受けた際に図14のフローチャートの処理を行う。この投機データの有効性確認要求処理にあっては、ステップS1で主記憶や他のキャッシュへアクセスし、ステップS2で投機データの本当の有効性を確認する。ステップS3で本当の有効性から有効であることが判別されると、ステップS4で要求元のプロセッサに投機データが有効データであることを通知する。この投機データが有効であることの通知を受けたプロセッサは、投機データに基づく命令の実行結果を承認し、これに基づく処理を継続する。一方、ステップS3で本当の有効性から投機データが無効であった場合には、ステップS5で無効である旨の確認結果を要求元のプロセッサに通知する。投機データが無効であることの通知を受けた要求元のプロセッサは、投機データに基づく命令の実行結果を破棄する。
図15は、図14のステップS1,S2における投機データの有効性確認の具体的処理のフローチャートである。まずステップS1で主記憶もしくは他のキャッシュ装置をアクセスして有効データを確保する。続いてステップS2で投機データと獲得した有効データを比較し、一致すれば、ステップS3で要求元のプロセッサに投機データは有効であることを通知する。不一致であれば、ステップS4で投機データは無効であることを通知する。
図16は、図14のステップS1,S2の投機データの有効性確認の他の具体的処理のフローチャートである。この有効性確認処理にあっては、ステップS1で他のキャッシュの状態を調べる。このとき図11(C)のように、他のキャッシュ装置10−1に変更Mの状態で有効データが存在するか否かチェックする。もし他のキャッシュ装置上に変更Mの状態で有効データが存在すれば、ステップS4に進み、投機データは無効と判断して要求元のプロセッサに通知する。なぜなら、他のキャッシュ装置が該当ラインを変更Mの状態で保持しているということは、投機データの元となったデータが、既に変更されてしまったことを意味するからである。
一方、ステップS2で他のキャッシュ装置上に、変更Mの状態で有効データが存在しなければ、投機データは有効と判断して、要求元のプロセッサに通知する。なぜなら、他のキャッシュ装置が該当ラインを変更Mの状態で保持していないということは、投機データの元となったデータは変更されておらず、投機データと変わらないことを意味するからである。
再び図13を参照するに、プロセッサ12からの読出要求に対し、ステップS1で要求データを所有していない場合、ステップS2でキャッシュラインの保持データが無効Iの状態にある場合、又は、ステップS6でプロセッサに対する投機データの提供が禁止されていた場合、ステップS6に進み、主記憶16または他のキャッシュ装置にアクセスして、ステップS7で有効データを入手し、ステップS8で有効データを要求元のプロセッサ12に供給する。
ステップS6における他のキャッシュ装置へのアクセスは、他のキャッシュ装置の保持データの状態が変更M、排他Eもしくは共有Sのいずれかの場合であり、他のキャッシュ装置からもしくは主記憶から有効データの転送を受けてコピーした後に要求元のプロセッサに供給する。この場合のキャッシュ装置の状態遷移は、図8(A)のリードプロトコルのように現在の無効Iの状態から共有Sの状態に遷移する。またデータ転送を行った他のキャッシュ装置にあっても、排他Mの状態であれば共有Sの状態に遷移し、排他Eの状態であれば同じく共有Sの状態に遷移し、共有Sの状態であれば同じ状態を維持する。
また他のキャッシュ装置が該当ラインを保持していない場合には、キャッシュ装置は図8(A)のリードプロトコルにおける現在の無効Iの状態から排他E状態に遷移する。
図17は、図8のMESIUプロトコルによるキャッシュ管理制御の第2実施形態のフローチャートである。この第2実施形態にあっては、投機データを要求元のプロセッサに供給した後、要求元のプロセッサからの確認要求を受けることなく、キャッシュ装置自身で投機データの本当の有効性を確認して記憶し、プロセッサから投機データの有効性の確認要求があったときには記憶結果を通知するようにしたことを特徴とする。
図17において、プロセッサ12から読出要求を受けたときのステップS1のキャッシュメモリ20における要求データの所有の有無、ステップS2のデータの有効性によるステップS3の有効データの要求元への供給、またステップS2でキャッシュライン保持データの状態が無効I状態か、あるいはステップS4でプロセッサによる投機データを許可する読出要求でなかった場合のステップS9〜S11の処理については、図13のステップS1〜S3及びステップS6〜S8の処理と同じである。
これに対しステップS4でプロセッサからの読出要求が投機データを許可する読出要求であった場合には、図8(C)のウィークリードプロトコルに従って不明U状態にある保持データを投機データとして要求元のプロセッサに供給した後、ステップS6で主記憶や他のキャッシュ装置にアクセスし、ステップS7で投機データの本当の有効性を確認し、ステップS8で確認結果を記憶する。この場合の投機データの本当の有効性の確認処理も、具体的には図15または図16の投機データ有効性の確認処理フローチャートに従って行われる。
図18は、図17のステップS4〜S8で投機データを要求元に供給して投機データの本当の有効性の確認を行った後にプロセッサから投機データの有効性の確認要求を受けた場合のフローチャートである。この要求元のプロセッサからの投機データ有効性の確認要求を受けると、ステップS1でキャッシュ装置10に既に記憶してある投機データの本当の有効性を示す確認結果を読み出し、ステップS2で本当の有効性が有効であれば、ステップS3で要求元に有効を通知し、投機データに基づく命令の実行結果を承認させる。また無効であれば、ステップS4で要求元のプロセッサ12に投機データの無効を通知し、投機データに基づく命令の実行結果を破棄させる。
図19は、図8のMESIプロトコルによるキャッシュ管理制御の第3実施形態のフローチャートである。この第3実施形態にあっては、プロセッサの読出要求に対し、不明Uの状態にあるデータを投機データとして供給した場合には、プロセッサからの投機データの有効性確認要求を待つことなく、キャッシュ装置自身で投機データの本当の有効性を確認して、結果を要求元のプロセッサに通知するようにしたことを特徴とする。このためプロセッサからの投機データの有効性確認要求は不要となり、プロセッサの負担を軽減する。
図19において、ステップS1〜S4、及びステップS11〜S13の処理は、図17の第2実施形態のステップS1〜S4、及びステップS9〜S11と同じである。またステップS4でプロセッサからの投機データの提供を許可する読出要求を判別した場合のステップS5〜S7の処理も図17の第2実施形態と同じであり、キャッシュ装置自身で投機データを要求元のプロセッサに供給した後、主記憶や他のキャッシュにアクセスして投機データの本当の有効性を確認する。続いてステップS8で投機データの本当の有効性が有効であれば、ステップS9で要求元のプロセッサに有効を通知し、これにより要求元のプロセッサは投機データに基づく命令の実行結果を承認する。また投機データの本当の有効性が無効であれば、ステップS10で同じく要求元のプロセッサに無効を通知し、投機データに基づく命令の実行結果を破棄させる。
(MESUプロトコルとキャッシュ管理制御)
図20は、図7の本発明のキャッシュ装置10で使用されるキャッシュメモリ上に有効性の不明なデータの保存を可能とするキャッシュ管理制御を実現するMESUプロトコルの状態遷移図である。このMESUプロトコルは、図8のMESIUプロトコルから無効Iの状態を取り除いている。
図20(A)は、MESUリードプロトコル、図20(B)はMESUライトプロトコルである。この図20(A)(B)のMESUリードプロトコル及びライトプロトコルによって、図10の本発明による「弱い無効化操作(ウィークインバリディド)」を同様に実現することができる。
図20(C)は、MESUウィークリードプロトコルであり、このMESUウィークリードプロトコルによって、図11に示した本発明の弱い読出操作(ウィークリード操作)と同じキャッシュ管理制御ができる。但し、MESUウィークリードプロトコルの場合、図11(A)のキャッシュ装置10−2の状態が無効Iではなく不明Uとなる点が相違する。この点は図12のMESIUウィークリードプロトコルの他の処理動作についても同様である。
図21は、図20のMESUプロトコルの状態遷移表である。この状態遷移表を図9のMESIUプロトコルの状態遷移表と対比して明らかなように、現在の状態が変更M,排他E及び共有Sについては同じであり、図9の無効Iの状態が除かれ、不明U状態については次の状態が「SELF」で「weak read」のときの(2)の「E,U」への遷移が相違するだけである。
図22は、図20のMESUプロトコルを使用した図7のキャッシュ装置10によるキャッシュ管理制御のフローチャートであり、本発明の第4実施形態となる。このMESUプロトコルに従ったキャッシュ管理制御にあっては、プロセッサ12から読出要求があると、ステップS1でキャッシュメモリ20上にデータが保持されているか否かの要求データの所有の有無をチェックし、要求データが所有されていれば、ステップS2でデータの有効性をチェックし、状態がM,S,Eのいずれかであれば有効として、ステップS3に進み、有効データを要求元のプロセッサ12に供給する。
ステップS2でデータの有効性が不明Uの状態であった場合には、ステップS4に進み、プロセッサが投機データの提供を許可した読出要求か否かチェックする。投機データの許可の読出要求であれば、ステップS5で投機データを要求元のプロセッサに供給する。ステップS5で投機データを要求元のプロセッサに供給した後、プロセッサから投機データの有効性確認要求を受けると、図23のフローチャートの処理を行う。この投機データ有効性確認要求の処理は、図14の第1実施形態の場合と同じである。
再び図22を参照するに、ステップS1でキャッシュメモリ40上に要求データを所有しない場合、あるいはステップS4でプロセッサが投機データの提供を禁止する読出要求であった場合には、ステップS6に進み、主記憶16や他のキャッシュ装置にアクセスし、ステップS7で有効データを入手し、ステップS8で有効データを要求元に供給する。この図22のMESUプロトコルの本発明の第4実施形態となるキャッシュ管理制御は、図13のMESIUプロトコルのステップS2のデータの有効性の判断結果のうちの無効Iの条件分岐を除いた処理である。
図24は、図20のMESUプロトコルを使用した本発明のキャッシュ管理制御の第5実施形態のフローチャートであり、投機データを要求元のプロセッサに供給した後に、キャッシュ装置12自身で投機データの有効性を確認して結果を記憶し、その後の要求元のプロセッサからの投機データ有効性の確認要求に対し、キャッシュ装置に記憶している確認結果に基づいて投機データの本当の有効、無効を通知するようにしたことを特徴とする。この図24の第5実施形態は、図17のMESIUプロトコルのキャッシュ管理制御の第2実施形態のステップS2における無効Iの分岐処理を除いたと同じ処理であり、またステップS5〜S8で投機データを供給した後の投機データの本当の有効性の確認結果の記憶は、図18と同様、要求元のプロセッサからの投機データ有効性の確認要求に対し、記憶した確認結果に基づいた有効または無効の通知を行う。
図25は、図20のMESUプロトコルを使用した本発明のキャッシュ管理制御の第6実施形態のフローチャートであり、投機データを要求元のプロセッサに供給した後、投機データの本当の有効性の確認と確認結果の要求元への通知をキャッシュ装置自身で行うようにしたことを特徴とする。この図25の処理は、図19のMESIUプロトコルにおけるキャッシュ管理制御の第3実施形態のステップS2における無効Iの分岐処理を除いたと同じ処理になる。
尚、上記の実施形態における本発明の「弱い無効化操作(ウィークインバリディド)」及び「弱い読出操作(ウィークリード)」については、説明を簡単にするため2台のキャッシュ装置を例にとっているが、図6に示したように、システムバス14で接続されたn台の任意の数のキャッシュ装置10−1〜10−n間で全く同様に、図8のMESIUプロトコルあるいは図20のMESUプロトコルに従ったキャッシュ管理制御が行われる。
また上記の実施形態での「弱い読出操作(ウィークリード)」は、プロセッサから投機データの提供を許可するウィークリード要求が行われたときに図8(C)又は図20(C)のウィークリードプロトコルに切替えて処理しているが、キャッシュコントローラの立ち上げ時に、図8(C)又は図20(C)のウィークリードプロトコルを固定設定してもよい。この点は、「弱い無効化操作(ウィークインバリディド)」についても同じであり、キャッシュコントローラの立ち上げ時に、図8(A)又は図20(A)のリードプロトコルを固定設定してもよい。餅録、いずれの場合もライトプロトコルは図8(B)又は図20(B)である。
更に、本発明は上記の実施形態に限定されず、本発明の目的と利点を損なわない適宜の変形を含む。
【産業上の利用の可能性】
本発明のキャッシュ装置及びキャッシュ制御方法は、キャッシュ上に有効性の不明なデータを保持することができることにより、プロセッサに投機的にデータを供給することが可能となり、プロセッサが投機的に命令を実行する機会が増える。これにより、プロセッサからの読出要求でキャッシュミスとなり、主記憶もしくは他のキャッシュメモリからのデータを待つ必要のあったケースの一部で、キャッシュヒットにより投機的に命令実行を進行させることが可能となる。このため本発明は、読出要求を行ったプロセッサのデータ待ち時間を短くすることに貢献し、その結果としてマルチプロセッサシステムの性能を向上できる。

Claims (34)

  1. 複数のプロセッサ毎に設けられ、相互にバス接続されると共に主記憶とバス接続されたキャッシュ装置に於いて、
    主記憶の一部のデータをキャッシュライン単位に保持すると共に前記キャッシュラインに保持したデータの状態を有効、無効、及び不明の3種類の状態で区別するキャッシュメモリと、
    自己のプロセッサ又は他のキャッシュ装置から処理要求を受けた際に、該当するキャッシュラインに保持しているデータを、有効、無効、又は不明の状態に応じて処理すると共に、処理後に該当するキャッシュラインの保持データの状態をキャッシュコヒーレンスを確保するめに定めた所定の状態に遷移させるキャッシュコントローラと、
    を備えたことを特徴とするキャッシュ装置。
  2. 複数のプロセッサ毎に設けられ、相互にバス接続されると共に主記憶とバス接続されたキャッシュ装置に於いて、
    主記憶の一部のデータをキャッシュライン単位に保持すると共に前記キャッシュラインに保持したデータの状態を有効及び不明の2種類の状態で区別するキャッシュメモリと、
    自己のプロセッサ又は他のキャッシュ装置から処理要求を受けた際に、該当するキャッシュラインに保持しているデータを有効又は不明の状態に応じて処理すると共に、処理後に該当するキャッシュラインの保持データの状態をキャッシュコヒーレンスを確保するめに定めた所定の状態に遷移させるキャッシュコントローラと、
    を備えたことを特徴とするキャッシュ装置。
  3. 請求の範囲1又は2のキャッシュ装置に於いて、前記キャッシュコントローラは、有効性の不明なデータを保持しているキャッシュラインへの読出要求が発生した際に、投機データの要求元への提供許可か提供禁止かを判定し、提供許可を判定した場合は、前記有効性の不明なデータを投機データとして要求元に提供し、提供禁止を判定した場合は、他のキャッシュ装置又は主記憶から有効データを入手して要求元に提供することを特徴とするキャッシュ装置。
  4. 請求の範囲3のキャッシュ装置に於いて、前記キャッシュコントローラは、前記投機データを要求元に提供した後、前記要求元から前記投機データの有効性確認要求が発生した際に、前記投機データの本当の有効性を確認して確認の結果を要求元に通知するキャッシュ装置。
  5. 請求の範囲3のキャッシュ装置で、前記キャッシュコントローラは、前記投機データを要求元に提供すると同時に、前記投機データの本当の有効性を確認して確認の結果を記憶し、前記要求元から前記投機データの有効性確認要求が発生した際に、記憶しておいた有効性の確認結果を要求元に通知することを特徴とするキャッシュ装置。
  6. 請求の範囲3のキャッシュ装置に於いて、前記キャッシュコントローラは、前記投機データを要求元に提供すると同時に、前記投機データの本当の有効性を確認し、確認結果を要求元に通知することを特徴とするキャッシュ装置。
  7. 請求の範囲3のキャッシュ装置に於いて、前記キャッシュコントローラは、前記確認結果から前記投機データが有効であった場合、前記要求元に確認結果を通知して前記投機データに基づく命令の実行結果を承認させ、前記投機データが無効であった場合、前記要求元に確認結果を通知して前記投機データに基づく命令の実行結果を破棄させることを特徴とするキャッシュ装置。
  8. 請求の範囲3のキャッシュ装置に於いて、前記キャッシュコントローラは、前記主記憶の予め定めた特定アドレスをもつ有効性の不明なデータを保持しているキャッシュラインへの読出要求が発生した時は、投機データとしての要求元への提供を禁止し、前記主記憶の特定アドレス以外のアドレスをもつ有効性の不明なデータを保持しているキャッシュラインへの読出要求が発生した時は、投機データとしての要求元への提供を許可することを特徴とするキャッシュ装置。
  9. 請求の範囲3のキャッシュ装置に於いて、前記キャッシャコントローラは、前記プロセッサの投機データを禁止する命令の実行で生成した読出要求を、有効性の不明なデータの保持しているキャッシュラインに受けた時は、投機データとしての要求元への提供を禁止し、前記プロセッサの投機データを許容する命令の実行で生成した読出要求を、有効性の不明なデータの保持しているキャッシュラインに受けた時は、投機データとしての要求元への提供を許可することを特徴とするキャッシュ装置。
  10. 請求の範囲1のキャッシュ装置に於いて、前記キュッシュコントローラは、前記キャッシュラインの保持データの状態を、有効を表す変更、排他及び共有と無効の4状態で区別するキャッシュコヒーレンスのためのMESIプロトコルに、データの有効性が不明であることを示す状態を加えた5状態で区別するMESIUプロトコルを備えたことを特徴とするキャッシュ装置。
  11. 請求の範囲10のキャッシュ装置に於いて、前記キャッシュコントローラは、前記MESIUプロトコルに基づき、
    (A)キャッシュラインの保持データに対するリード要求を処理した場合、
    ▲1▼変更Mの状態で、自己のプロセッサの読出要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置からの読出要求であれば共有Sに状態遷移し、
    ▲2▼排他Eの状態で、自己のプロセッサの読出要求であれば同じ排他Eに状態遷移し、他のキャッシュ装置からの読出要求であれば共有Sに状態遷移し、
    ▲3▼共有Sの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置からの読出要求であれば同じ共有Sに状態遷移し、
    ▲4▼無効Iの状態で、自己のプロセッサの読出要求により他キャッシュ装置が該当ラインを保持していない場合は排他Eに状態遷移し、他キャッシュ装置が該当ラインを保持している場合は共有Sに状態遷移し、更に他のキャッシュ装置で読出要求であれば同じ無効Iに状態遷移し、
    ▲5▼不明Uの状態で、自己のプロセッサの読出要求により他キャッシュ装置が該当ラインを保持していない場合は排他Eに遷移し、他のキャッシュ装置が該当ラインを保持している場合は共有Sに状態遷移し、更に他のキャッシュ装置の読出要求であれば同じ不明Uに状態遷移し、
    (B)キャッシュラインの保持データに対するライト要求を処理した場合、
    ▲1▼変更Mの状態で、自己のプロセッサの書込要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば不明Uに状態遷移し、
    ▲2▼排他Eの状態で、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば不明Uに状態遷移し、
    ▲3▼共有Sの状態で、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば同じ不明Uに状態遷移し、
    ▲4▼無効Iの状態で、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば同じ無効Iに状態遷移し、
    ▲5▼不明Uの状態で、自己のプロセッサの書込要であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば同じ不明Uに状態遷移する、
    状態制御を行うことを特徴とするキャッシュ装置。
  12. 請求の範囲11のキャッシュ装置に於いて、前記キャッシュコントローラは、前記プロセッサから不明の状態で保持した投機データの提供を許可するウィークリード要求を処理した場合、ウィークリードのMESIUプロトコルに基づき、
    ▲1▼変更Mの状態で、自己のプロセッサの読出要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置からの読出要求であれば排他Eに状態遷移し、
    ▲2▼排他Eの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置からの読出要求であれば同じ排他Eに状態遷移し、
    ▲3▼共有Sの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置からの読出要求であれば同じ共有Sに状態遷移し、
    ▲4▼無効Iの状態で、自己のプロセッサの読出要求により他キャッシュ装置が該当ラインを保持していない場合は排他Eに状態遷移し、他のキャッシュ装置が該当ラインを保持している場合は不明Uに状態遷移し、更に他のキャッシュ装置の読出要求であれば同じ無効Iに状態遷移し、
    ▲5▼不明Uの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置の読出要求であれば同じ不明Uに状態遷移する、
    状態制御を行うことを特徴とするキャッシュ装置。
  13. 請求の範囲12のキャッシュ装置に於いて、前記キャッシュコントローラは、前記ウィークリードMESIUプロトコルのキャッシュ管理制御を固定設定したことを特徴とするキャッシュ装置。
  14. 請求の範囲2のキャッシュ装置に於いて、前記キュッシュコントローラは、前記キャッシュラインの保持データの状態を、有効を示す変更、排他及び共有の3状態で区別するキャッシュコヒーレンスのためのMESプロトコルに、データの有効性が不明であることを示す状態を加えた4状態で区別するMESUプロトコルを備えたことを特徴とするキャッシュ装置。
  15. 請求の範囲14のキャッシュ装置に於いて、前記キャッシュコントローラは、前記MESUプロトコルに基づき、
    (A)キャッシュラインの保持データに対するリード要求を処理した場合、
    ▲1▼変更Mの状態で、自己のプロセッサの読出要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置からの読出要求であれば共有Sに状態遷移し、
    ▲2▼排他Eの状態で、自己のプロセッサの読出要求であれば同じ排他Eに状態遷移し、他のキャッシュ装置からの読出要求であれば共有Sに状態遷移し、
    ▲3▼共有Sの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置からの読出要求であれば同じ共有Sに状態遷移し、
    ▲4▼不明Uの状態で、自己のプロセッサの読出要より他キャッシュ装置が該当ラインを保持していない場合は排他Eに状態遷移し、他のキャッシュ装置が該当ラインを保持している場合は共有Sに状態遷移し、更に他のキャッシュ装置の読出要求であれば同じ不明Uに状態遷移し、
    (B)キャッシュラインの保持データに対するライト要求を処理した場合、
    ▲1▼変更Mの状態で、自己のプロセッサの書込要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば不明Uに状態遷移し、
    ▲2▼排他Eの状態で、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば不明Uに状態遷移し、
    ▲3▼共有Sの状態で、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば同じ不明Uに状態遷移し、
    ▲4▼不明Uで、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば同じ不明Uに状態遷移する、
    繊維制御を行うことを特徴とするキャッシュ装置。
  16. 請求の範囲15のキャッシュ装置に於いて、前記キャッシュコントローラは、前記プロセッサから不明U状態で保持した投機データの提供を許可するウィークリード要求を処理した場合は、ウィークリードのMESUプロトコルに基づき、
    ▲1▼変更Mの状態で、自己のプロセッサの読出要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置からの読出要求であれば排他Eに状態遷移し、
    ▲2▼排他Eの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置からの読出要求であれば同じ排他Eに状態遷移し、
    ▲3▼共有Sの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置からの読出要求であれば同じ共有Sに状態遷移し、
    ▲4▼不明Uの状態で、自己のプロセッサの読出要求により他キャッシュ装置が該当ラインを保持していない場合は排他Eに状態遷移し、他のキャッシュ装置が該当ラインを保持している場合又は他のキャッシュ装置の読出要求であれば同じ不明Uに状態遷移する、
    状態制御を行うことを特徴とするキャッシュ制御装置。
  17. 請求の範囲16のキャッシュ装置に於いて、前記キャッシュコントローラは、前記ウィークリードMESUプロトコルのキャッシュ管理制御を固定設定したことを特徴とするキャッシュ装置。
  18. 複数のプロセッサ毎に設けたキャッシュ装置を相互にバス接続すると共に主記憶とバス接続したキャッシュ制御方法に於いて、
    主記憶の一部のデータをキャッシュメモリ上でキャッシュライン単位に保持すると共に前記キャッシュラインに保持したデータの状態を有効、無効、及び不明の3種類の状態で区別し、
    自己のプロセッサ又は他のキャッシュ装置から処理要求を受けた際に、該当するキャッシュラインに保持しているデータを有効、無効、又は不明の状態に応じて処理し、
    前記要求の処理後に該当するキャッシュラインの保持データの状態をキャッシュコヒーレンスを確保するめに定めた所定の状態に遷移させる、
    を特徴とするキャッシュ制御方法。
  19. 複数のプロセッサ毎に設けたキャッシュ装置を相互にバス接続すると共に主記憶とバス接続したキャッシュ制御方法に於いて、
    主記憶の一部のデータをキャッシュメモリ上でキャッシュライン単位に保持すると共に前記キャッシュラインに保持したデータの状態を有効及び不明の2種類の状態で区別し、
    自己のプロセッサ又は他のキャッシュ装置から処理要求を受けた際に、該当するキャッシュラインに保持しているデータを有効又は不明の状態に応じて処理し、
    前記要求の処理後に該当するキャッシュラインの保持データの状態をキャッシュコヒーレンスを確保するために定めた所定の状態に遷移させる、
    を特徴とするキャッシュ制御方法。
  20. 請求の範囲18又は19のキャッシュ制御方法に於いて、有効性の不明なデータを保持しているキャッシュラインへの読出要求が発生した際に、投機データの要求元への提供許可か提供禁止かを判定し、提供許可を判定した場合は、前記有効性の不明なデータを投機データとして要求元に提供し、提供禁止を判定した場合は、他のキャッシュ装置又は主記憶から有効データを入手して要求元に提供することを特徴とするキャッシュ制御方法。
  21. 請求の範囲20のキャッシュ制御方法に於いて、前記投機データを要求元に提供した後、前記要求元から前記投機データの有効性の確認要求が発生した際に、前記投機データの本当の有効性を確認して確認の結果を要求元に通知するキャッシュ制御方法。
  22. 請求の範囲20のキャッシュ制御方法で、前記投機データを要求元に提供すると同時に、前記投機データの本当の有効性を確認して確認の結果を記憶し、前記要求元から前記投機データの有効性確認要求が発生した際に、記憶しておいた有効性の確認結果を要求元に通知することを特徴とするキャッシュ制御方法。
  23. 請求の範囲20のキャッシュ制御方法に於いて、前記投機データを要求元に提供すると同時に、前記投機データの本当の有効性を確認し、確認結果を要求元に通知することを特徴とするキャッシュ制御方法。
  24. 請求の範囲20のキャッシュ制御方法に於いて、前記確認結果から前記投機データが有効であった場合、前記要求元に確認結果を通知して前記投機データに基づく命令の実行結果を承認させ、前記投機データが無効であった場合、前記要求元に確認結果を通知して前記投機データに基づく命令の実行結果を破棄させることを特徴とするキャッシュ制御方法。
  25. 請求の範囲20のキャッシュ制御方法に於いて、前記主記憶の予め定めた特定アドレスをもつ有効性の不明なデータを保持しているキャッシュラインへの読出要求が発生した時は、投機データとしての要求元への提供を禁止し、前記主記憶の特定アドレス意外のアドレスをもつ有効性の不明なデータを保持しているキャッシュラインへの読出要求が発生した時は、投機データとしての要求元への提供を許可することを特徴とするキャッシュ制御方法。
  26. 請求の範囲20のキャッシュ制御方法に於いて、前記プロセッサの投機データを禁止する命令の実行で生成した読出要求を、有効性の不明なデータの保持しているキャッシュラインに受けた時は、投機データとしての要求元への提供を禁止し、前記プロセッサの投機データを許容する命令の実行で生成した読出要求を、有効性の不明なデータの保持しているキャッシュラインに受けた時は、投機データとしての要求元への提供を許可することを特徴とするキャッシュ制御方法。
  27. 請求の範囲18のキャッシュ制御方法に於いて、前記キャッシュラインの保持データの状態を、友好を示す変更、排他及び共有と無効の4状態で区別するキャッシュコヒーレンスのためのMESIプロトコルに、データの有効性が不明であることを示す状態を加えた5状態で区別するMESIUプロトコルに基づき制御することを特徴とするキャッシュ制御方法。
  28. 請求の範囲27のキャッシュ制御方法に於いて、前記MESIUプロトコルに基づく制御は、
    (A)キャッシュラインの保持データに対するリード要求を処理した場合、
    ▲1▼変更Mの状態で、自己のプロセッサの読出要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置からの読出要求であれば共有Sに状態遷移し、
    ▲2▼排他Eの状態で、自己のプロセッサの読出要求であれば同じ排他Eに状態遷移し、他のキャッシュ装置からの読出要求であれば共有Sに状態遷移し、
    ▲3▼共有Sの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置からの読出要求であれば同じ共有Sに状態遷移し、
    ▲4▼無効Iの状態で、自己のプロセッサの読出要求により他キャッシュ装置が該当データを保持していない場合は排他Eに状態遷移し、他のキャッシュ装置が該当データを保持している場合は共有Sに状態遷移し、更に他のキャッシュ装置で読出要求であれば同じ無効Iに状態遷移し、
    ▲5▼不明Uの状態で、自己のプロセッサの読出要求により主記憶からデータをコピーした場合は排他Eに状態遷移し、他のキャッシュ装置からコピーした場合は共有Sに状態遷移し、更に他のキャッシュ装置の読出要求であれば同じ不明Uに状態遷移し、
    (B)キャッシュラインの保持データに対するライト要求を処理した場合、
    ▲1▼変更Mの状態で、自己のプロセッサの書込要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば不明Uに状態遷移し、
    ▲2▼排他Eの状態で、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば不明Uに状態遷移し、
    ▲3▼共有Sの状態で、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば同じ不明Uに状態遷移し、
    ▲4▼無効Iの状態で、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば同じ無効Iに状態遷移し、
    ▲5▼不明Uの状態で、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば同じ不明Uに状態遷移する、
    ことを特徴とするキャッシュ制御方法。
  29. 請求の範囲28のキャッシュ制御方法に於いて、キャッシュラインに不明状態で保持した投機データの提供を許可する前記プロセッサからのウィークリード要求を処理した場合、ウィークリードMESIUプロトコルに基づく制御として、
    ▲1▼変更Mの状態で、自己のプロセッサの読出要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置からの読出要求であれば排他Eに状態遷移し、
    ▲2▼排他Eの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置からの読出要求であれば同じ排他Eに状態遷移し、
    ▲3▼共有Sの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置からの読出要求であれば同じ共有Sに状態遷移し、
    ▲4▼無効Iの状態で、自己のプロセッサの読出要求により他キャッシュ装置が該当データを保持していない場合は排他Eに状態遷移し、他のキャッシュ装置が該当データを保持している場合は不明Uに状態遷移し、更に他のキャッシュ装置の読出要求であれば同じ無効Iに状態遷移し、
    ▲5▼不明Uの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置の読出要求であれば同じ不明Uに状態遷移する、
    ことを特徴とするキャッシュ制御方法。
  30. 請求の範囲29のキャッシュ制御方法に於いて、前記ウィークリードMESIUプロトコルのキャッシュ管理制御を固定設定したことを特徴とするキャッシュ制御方法。
  31. 請求の範囲19のキャッシュ制御方法に於いて、前記キャッシュラインの保持データの状態を友好を示す変更、排他及び共有の3状態で区別するキャッシュコヒーレンスのためのMESプロトコルに、データの有効性が不明であることを示す状態を加えた4状態で区別するMESUプロトコルに基づいて制御することを特徴とするキャッシュ制御方法。
  32. 請求の範囲31のキャッシュ制御方法に於いて、前記MESUプロトコルに基づく制御として、
    (A)キャッシュラインの保持データに対するリード要求を処理した場合、
    ▲1▼変更Mの状態で、自己のプロセッサの読出要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置からの読出要求であれば共有Sに状態遷移し、
    ▲2▼排他Eの状態で、自己のプロセッサの読出要求であれば同じ排他Eに状態遷移し、他のキャッシュ装置からの読出要求であれば共有Sに状態遷移し、
    ▲3▼共有Sの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置からの読出要求であれば同じ共有Sに状態遷移し、
    ▲4▼不明Uの状態で、自己のプロセッサの読出要求により他キャッシュ装置が該当データを保持していない場合は排他Eに状態遷移し、他のキャッシュ装置が該当データを保持している場合は共有Sに状態遷移し、更に他のキャッシュ装置の読出要求であれば同じ不明Uに状態遷移し、
    (B)キャッシュラインの保持データに対するライト要求を処理した場合、
    ▲1▼変更Mの状態で、自己のプロセッサの書込要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば不明Uに状態遷移し、
    ▲2▼排他Eの状態で、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば不明Uに状態遷移し、
    ▲3▼共有Sの状態で、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば同じ不明Uに状態遷移し、
    ▲4▼不明Uで、自己のプロセッサの書込要求であれば変更Mに状態遷移し、他のキャッシュ装置での書込要求であれば同じ不明Uに状態遷移する、
    ことを特徴とするキャッシュ制御方法。
  33. 請求の範囲31のキャッシュ制御方法に於いて、キャッシュラインに不明状態で保持した投機データの提供を許可する前記プロセッサからのウィークリード要求を処理した場合、ウィークリードMESUプロトコルに基づく制御として、▲1▼変更Mの状態で、自己のプロセッサの読出要求であれば同じ変更Mに状態遷移し、他のキャッシュ装置からの読出要求であれば排他Eに状態遷移し、
    ▲2▼排他Eの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置からの読出要求であれば同じ排他Eに状態遷移し、
    ▲3▼共有Sの状態で、自己のプロセッサの読出要求又は他のキャッシュ装置からの読出要求であれば同じ共有Sに状態遷移し、
    ▲4▼不明Uの状態で、自己のプロセッサの読出要求により他キャッシュ装置が該当ラインを保持していない場合は排他Eに状態遷移し、他のキャッシュ装置が該当ラインを保持している場合又は他のキャッシュ装置の読出要求であれば同じ不明Uに状態遷移する、
    ことを特徴とするキャッシュ制御方法。
  34. 請求の範囲33のキャッシュ制御方法に於いて、前記ウィークリードMESUプロトコルのキャッシュ管理制御を固定設定したことを特徴とするキャッシュ制御方法。
JP2000587273A 1998-12-10 1998-12-10 キャッシュ装置及び制御方法 Expired - Fee Related JP3550092B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP1998/005588 WO2000034882A1 (fr) 1998-12-10 1998-12-10 Antememoire et procede de commande

Publications (1)

Publication Number Publication Date
JP3550092B2 true JP3550092B2 (ja) 2004-08-04

Family

ID=14209582

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000587273A Expired - Fee Related JP3550092B2 (ja) 1998-12-10 1998-12-10 キャッシュ装置及び制御方法

Country Status (3)

Country Link
US (1) US6526480B1 (ja)
JP (1) JP3550092B2 (ja)
WO (1) WO2000034882A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000038077A1 (fr) * 1998-12-18 2000-06-29 Fujitsu Limited Antememoire et procede de commande
US6742086B1 (en) * 2000-08-11 2004-05-25 Unisys Corporation Affinity checking process for multiple processor, multiple bus optimization of throughput
SE0102564D0 (sv) 2001-07-19 2001-07-19 Ericsson Telefon Ab L M Arrangement and method in computor system
WO2003107176A2 (en) * 2002-06-13 2003-12-24 Koninklijke Philips Electronics N.V. Load speculation method
US7225299B1 (en) 2003-07-16 2007-05-29 Transmeta Corporation Supporting speculative modification in a data cache
US7149851B1 (en) * 2003-08-21 2006-12-12 Transmeta Corporation Method and system for conservatively managing store capacity available to a processor issuing stores
JP4673585B2 (ja) 2004-08-05 2011-04-20 富士通株式会社 メモリシステム制御装置およびメモリシステム制御方法
CN106293637B (zh) * 2015-05-28 2018-10-30 华为技术有限公司 数据移动、将数据设置为无效的方法、处理器及系统
CN107506329B (zh) * 2017-08-18 2018-06-19 浙江大学 一种自动支持循环迭代流水线的粗粒度可重构阵列及其配置方法
US10866893B2 (en) * 2018-01-23 2020-12-15 Home Depot Product Authority, Llc Cache coherency engine
US20220113901A1 (en) * 2020-10-12 2022-04-14 Qualcomm Incorporated Read optional and write optional commands
US11947456B2 (en) * 2021-09-30 2024-04-02 Advanced Micro Devices, Inc. Weak cache line invalidation requests for speculatively executing instructions

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5025365A (en) 1988-11-14 1991-06-18 Unisys Corporation Hardware implemented cache coherency protocol with duplicated distributed directories for high-performance multiprocessors
US5623632A (en) 1995-05-17 1997-04-22 International Business Machines Corporation System and method for improving multilevel cache performance in a multiprocessing system
JPH0950400A (ja) 1995-08-10 1997-02-18 Nec Corp マルチプロセッサシステム
US6374330B1 (en) * 1997-04-14 2002-04-16 International Business Machines Corporation Cache-coherency protocol with upstream undefined state

Also Published As

Publication number Publication date
US6526480B1 (en) 2003-02-25
WO2000034882A1 (fr) 2000-06-15

Similar Documents

Publication Publication Date Title
CN108885583B (zh) 高速缓存存储器访问
KR101639672B1 (ko) 무한 트랜잭션 메모리 시스템 및 그 동작 방법
KR100194253B1 (ko) 메시 데이터 코히어런시 프로토콜 이용 방법 및 멀티프로세서 시스템
US6636949B2 (en) System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing
US7549025B2 (en) Efficient marking of shared cache lines
TW591384B (en) Method and system for speculatively invalidating lines in a cache
US7657710B2 (en) Cache coherence protocol with write-only permission
JP4474570B2 (ja) キャッシュコヒーレンシ制御方法
US8799589B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads
JP4119380B2 (ja) マルチプロセッサシステム
US20080046651A1 (en) Victim Cache Using Direct Intervention
US20060184743A1 (en) Cache memory direct intervention
JP2004348734A (ja) 非対称型異種マルチプロセッサ環境でアトミック更新プリミティブを提供するための方法
JP2007199999A (ja) マルチプロセッサシステム及びその動作方法
US20170004004A1 (en) Transactional storage accesses supporting differing priority levels
US10949292B1 (en) Memory interface having data signal path and tag signal path
JP3550092B2 (ja) キャッシュ装置及び制御方法
WO1999035578A1 (en) Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency
US8296520B2 (en) System and method for optimizing neighboring cache usage in a multiprocessor environment
JPH09204403A (ja) 並列計算機
US7912998B2 (en) DMA access systems and methods
JP3757117B2 (ja) キャッシュ装置及び制御方法
JP2007533014A (ja) ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法
US8397029B2 (en) System and method for cache coherency in a multiprocessor system
JP4335298B2 (ja) スヌープ制御方法および情報処理装置

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040330

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040422

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20080430

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090430

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090430

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100430

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110430

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110430

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120430

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130430

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20140430

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees