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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, 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)キャッシュと呼ばれるキャッシュ
を追加することもできる。
ータ処理システムの処理装置は、一般にはすべて同一で
ある、すなわち、すべて命令及びプロトコルの共通セッ
トまたは共通サブセットを利用して動作し、一般には同
じアーキテクチャを有する。処理装置はそれぞれ、プロ
グラム命令を実行するため複数のレジスタ及び実行装置
を有するプロセッサ・コアを含む。各処理装置に、高速
メモリを利用して実現される命令キャッシュやデータ・
キャッシュ等の、1次キャッシュ(レベル1キャッシ
ュ、またはL1キャッシュともいう)を持たせることが
できる。また各処理装置に、先に述べたような1次キャ
ッシュをサポートするために、通常は2次キャッシュま
たはレベル2(L2)キャッシュと呼ばれるキャッシュ
を追加することもできる。
【0003】SMP環境で重要なことは、個々のメモリ
位置に対する読取りまたは書込みの動作がすべてのプロ
セッサについてある順序で直列化されるように、メモリ
・コヒーレンシ機構を提供することである。言い換える
と、すべての処理装置が、所与のメモリ位置への読取り
または書込みの動作が所与の順序で行われることを監視
する。
位置に対する読取りまたは書込みの動作がすべてのプロ
セッサについてある順序で直列化されるように、メモリ
・コヒーレンシ機構を提供することである。言い換える
と、すべての処理装置が、所与のメモリ位置への読取り
または書込みの動作が所与の順序で行われることを監視
する。
【0004】キャッシュについては、当業者には周知の
キャッシュ・コヒーレンシを実現するプロトコル及び手
法はいくつかある。当然のように、これらのプロトコル
はいずれも、所与の時点でキャッシュ・ラインへの書込
みを1台の処理装置にのみ許可する。この要件のため、
処理装置は、キャッシュ・ラインへの書込みを行おうと
するときは、最初に他のすべての処理装置に、キャッシ
ュ・ラインへの書込みを行おうとするその意図を通知
し、書込み動作を行う前に、他のすべての処理装置から
許可を得なければならない。
キャッシュ・コヒーレンシを実現するプロトコル及び手
法はいくつかある。当然のように、これらのプロトコル
はいずれも、所与の時点でキャッシュ・ラインへの書込
みを1台の処理装置にのみ許可する。この要件のため、
処理装置は、キャッシュ・ラインへの書込みを行おうと
するときは、最初に他のすべての処理装置に、キャッシ
ュ・ラインへの書込みを行おうとするその意図を通知
し、書込み動作を行う前に、他のすべての処理装置から
許可を得なければならない。
【0005】さまざまな処理装置の間で通信を実現する
ためには、要求側処理装置が、相互接続部(バス等)を
通して、キャッシュ・ラインの読取りまたは書込みの意
図を示すメッセージを渡す必要がある。相互接続部にリ
クエストが出されると、他の処理装置はすべてこれを"
スヌープ"(すなわち監視)し、それらのキャッシュの
状態により、要求された動作を進めることができるかど
うか、できる場合はどのような条件下でできるかを判断
する。キャッシュ・コヒーレンシを維持するために、ス
ヌープ及びフォローアップの動作により許可されねばな
らないバス・トランザクションがいくつかある。スヌー
プ動作は、あるバス信号の活動化により生成された有効
なスヌープ・リクエストの受信によってトリガされる。
命令処理は、スヌープ・ヒットが生じ、問題のキャッシ
ュ・ラインのコヒーレンシを解決するためキャッシュ・
スヌープを追加する必要があるかどうかをスヌープ状態
機械が確認したときにのみ、割込みを受ける。
ためには、要求側処理装置が、相互接続部(バス等)を
通して、キャッシュ・ラインの読取りまたは書込みの意
図を示すメッセージを渡す必要がある。相互接続部にリ
クエストが出されると、他の処理装置はすべてこれを"
スヌープ"(すなわち監視)し、それらのキャッシュの
状態により、要求された動作を進めることができるかど
うか、できる場合はどのような条件下でできるかを判断
する。キャッシュ・コヒーレンシを維持するために、ス
ヌープ及びフォローアップの動作により許可されねばな
らないバス・トランザクションがいくつかある。スヌー
プ動作は、あるバス信号の活動化により生成された有効
なスヌープ・リクエストの受信によってトリガされる。
命令処理は、スヌープ・ヒットが生じ、問題のキャッシ
ュ・ラインのコヒーレンシを解決するためキャッシュ・
スヌープを追加する必要があるかどうかをスヌープ状態
機械が確認したときにのみ、割込みを受ける。
【0006】この種の通信が必要になるのは、最新の有
効な情報のコピーがシステム・メモリからシステム内の
キャッシュに移動している可能性があるからである。実
際、正しいバージョンの情報は、システム・メモリ、シ
ステム内のキャッシュの1つ、または両方に存在する可
能性がある。従って、正しいバージョンがシステム内の
他のキャッシュにある場合は、システム・メモリではな
く、キャッシュから正しい値を取得することが重要であ
る。
効な情報のコピーがシステム・メモリからシステム内の
キャッシュに移動している可能性があるからである。実
際、正しいバージョンの情報は、システム・メモリ、シ
ステム内のキャッシュの1つ、または両方に存在する可
能性がある。従って、正しいバージョンがシステム内の
他のキャッシュにある場合は、システム・メモリではな
く、キャッシュから正しい値を取得することが重要であ
る。
【0007】システム内でキャッシュ・コヒーレンシを
実現するために、状態ビット・フィールドにより、キャ
ッシュ・ラインの現在の状態が指示される。この状態情
報は次に、汎用相互接続部及びキャッシュ間接続でのメ
ッセージ・トラフィックを減らすため、キャッシュ・コ
ヒーレンシ・プロトコルで、ある最適化を可能にするた
めに利用される。このメカニズムの1つの例として、処
理装置は、読取りを行うとき、読取りを後で再試行しな
ければならないかどうかを示すメッセージを受け取る。
読取り動作が再試行されない場合、通常、メッセージ
は、有効でアクティブな情報のコピーが他の処理装置に
もあるかどうかを当該処理装置が確認できるようにする
情報も含む(これは他の最下位レベル・キャッシュが再
試行しない読取りについて"共用"または"非共用"の指示
を、それら最下位レベル・キャッシュによって与えるこ
とによって実現される)。従って処理装置は、システム
内の他のプロセッサが情報のコピーを有するかどうかを
確認することができる。他の処理装置が情報のアクティ
ブなコピーを有さない場合は、読取り側処理装置はキャ
ッシュ・ラインの状態ビット・フィールドを"排他"とマ
ークする。キャッシュ・ラインが排他とマークされた場
合、処理装置は最初にシステム内の他の処理装置と通信
することなく、後でキャッシュ・ラインの書込みを行う
ことができる。なぜなら、他の処理装置は同じ情報のコ
ピーを有さないからである。従って処理装置が最初にキ
ャッシュ・ラインの読取りまたは書込みの意図を相互接
続部を介して通信することなく、その意図した動作を行
うことは可能であるが、これは、他のプロセッサが同じ
情報に関心を持たないことがコヒーレンシ・プロトコル
によって保証された時に限られる。
実現するために、状態ビット・フィールドにより、キャ
ッシュ・ラインの現在の状態が指示される。この状態情
報は次に、汎用相互接続部及びキャッシュ間接続でのメ
ッセージ・トラフィックを減らすため、キャッシュ・コ
ヒーレンシ・プロトコルで、ある最適化を可能にするた
めに利用される。このメカニズムの1つの例として、処
理装置は、読取りを行うとき、読取りを後で再試行しな
ければならないかどうかを示すメッセージを受け取る。
読取り動作が再試行されない場合、通常、メッセージ
は、有効でアクティブな情報のコピーが他の処理装置に
もあるかどうかを当該処理装置が確認できるようにする
情報も含む(これは他の最下位レベル・キャッシュが再
試行しない読取りについて"共用"または"非共用"の指示
を、それら最下位レベル・キャッシュによって与えるこ
とによって実現される)。従って処理装置は、システム
内の他のプロセッサが情報のコピーを有するかどうかを
確認することができる。他の処理装置が情報のアクティ
ブなコピーを有さない場合は、読取り側処理装置はキャ
ッシュ・ラインの状態ビット・フィールドを"排他"とマ
ークする。キャッシュ・ラインが排他とマークされた場
合、処理装置は最初にシステム内の他の処理装置と通信
することなく、後でキャッシュ・ラインの書込みを行う
ことができる。なぜなら、他の処理装置は同じ情報のコ
ピーを有さないからである。従って処理装置が最初にキ
ャッシュ・ラインの読取りまたは書込みの意図を相互接
続部を介して通信することなく、その意図した動作を行
うことは可能であるが、これは、他のプロセッサが同じ
情報に関心を持たないことがコヒーレンシ・プロトコル
によって保証された時に限られる。
【0008】キャッシュ・ブロックへのアクセスをさら
に改良することは、"介入"と呼ばれる手順を利用するこ
とによって可能である。この介入手順では、キャッシュ
がメモリ・ブロックに対して制御権を有し、そのブロッ
クのデータまたは命令を、値を要求する他のキャッシュ
に直接提供することができる(読取り型動作のとき)。
言い換えると介入手順は、最初にデータまたは命令をシ
ステム・メモリに書込み、次に要求側プロセッサにシス
テム・メモリから再び読戻させる必要性を回避してい
る。介入は、状態が変更または排他であるキャッシュ・
ラインに値を有するキャッシュによってのみ実行でき
る。これら両方の状態では、有効な値のコピーを有する
キャッシュ・ラインは1つしかないので、最初にシステ
ム・メモリに書込む必要なく、値をバスを通して供給す
ることは簡単なことである。介入手順は、従ってシステ
ム・メモリに書込み、読取るという長いプロセス(通常
はバス動作3回及びメモリ動作2回を伴う)を避けるこ
とによって処理を高速化する。従って介入手順により待
ち時間が改良されるだけでなく、バス帯域幅が増加す
る。
に改良することは、"介入"と呼ばれる手順を利用するこ
とによって可能である。この介入手順では、キャッシュ
がメモリ・ブロックに対して制御権を有し、そのブロッ
クのデータまたは命令を、値を要求する他のキャッシュ
に直接提供することができる(読取り型動作のとき)。
言い換えると介入手順は、最初にデータまたは命令をシ
ステム・メモリに書込み、次に要求側プロセッサにシス
テム・メモリから再び読戻させる必要性を回避してい
る。介入は、状態が変更または排他であるキャッシュ・
ラインに値を有するキャッシュによってのみ実行でき
る。これら両方の状態では、有効な値のコピーを有する
キャッシュ・ラインは1つしかないので、最初にシステ
ム・メモリに書込む必要なく、値をバスを通して供給す
ることは簡単なことである。介入手順は、従ってシステ
ム・メモリに書込み、読取るという長いプロセス(通常
はバス動作3回及びメモリ動作2回を伴う)を避けるこ
とによって処理を高速化する。従って介入手順により待
ち時間が改良されるだけでなく、バス帯域幅が増加す
る。
【0009】従来技術のキャッシュ・コヒーレンシ・プ
ロトコルは、データまたは命令が2つ以上のキャッシュ
によって共用状態に保たれているときの介入を考慮して
いない。これは一般には、情報を供給するキャッシュを
決定するのが難しいからである。共用キャッシュ状態で
の介入は、システムが共用応答をすべて集めた後、情報
を供給するキャッシュを(例えば任意に)選択する場合
は行える。しかしながらこのアプローチは、最初にシス
テム・メモリに書込み、つぎに読取るプロセスに比べて
高速ではないので、利点はない。また命令は(データと
は対照的に)書込まれることは決してないので、有効な
命令を含むキャッシュ・ブロックの状態はどのブロック
でも常に共用であり、よって命令は介入という方法によ
っては供給できない。
ロトコルは、データまたは命令が2つ以上のキャッシュ
によって共用状態に保たれているときの介入を考慮して
いない。これは一般には、情報を供給するキャッシュを
決定するのが難しいからである。共用キャッシュ状態で
の介入は、システムが共用応答をすべて集めた後、情報
を供給するキャッシュを(例えば任意に)選択する場合
は行える。しかしながらこのアプローチは、最初にシス
テム・メモリに書込み、つぎに読取るプロセスに比べて
高速ではないので、利点はない。また命令は(データと
は対照的に)書込まれることは決してないので、有効な
命令を含むキャッシュ・ブロックの状態はどのブロック
でも常に共用であり、よって命令は介入という方法によ
っては供給できない。
【0010】そのため、共用状態でのデータの効率的介
入を考慮したキャッシュ・コヒーレンシを維持する、改
良されたキャッシュ・コヒーレンシ・プロトコルを考案
することが望ましい。さらに、このような改良されたキ
ャッシュ・コヒーレンシ・プロトコルにより、所与のキ
ャッシュ・レベルの上流で、そのレベルでは未定義なま
ま、キャッシュ・ラインが割当てられていて有効である
ことの指示を与えることが、セクタ化されたキャッシュ
に関して不要なバス動作を避けるために求められる。
入を考慮したキャッシュ・コヒーレンシを維持する、改
良されたキャッシュ・コヒーレンシ・プロトコルを考案
することが望ましい。さらに、このような改良されたキ
ャッシュ・コヒーレンシ・プロトコルにより、所与のキ
ャッシュ・レベルの上流で、そのレベルでは未定義なま
ま、キャッシュ・ラインが割当てられていて有効である
ことの指示を与えることが、セクタ化されたキャッシュ
に関して不要なバス動作を避けるために求められる。
【0011】
【発明が解決しようとする課題】本発明の目的は、キャ
ッシュ・コヒーレンシを維持する改良された方法及び装
置を提供することである。
ッシュ・コヒーレンシを維持する改良された方法及び装
置を提供することである。
【0012】本発明の他の目的は、データ処理システム
内でキャッシュ・コヒーレンシを維持する改良された方
法及び装置を提供することである。
内でキャッシュ・コヒーレンシを維持する改良された方
法及び装置を提供することである。
【0013】本発明の他の目的は、マルチプロセッサ・
データ処理システム内でキャッシュ・コヒーレンシを維
持するキャッシュ・コヒーレンシ・プロトコルを実現す
る改良された方法及び装置を提供することである。
データ処理システム内でキャッシュ・コヒーレンシを維
持するキャッシュ・コヒーレンシ・プロトコルを実現す
る改良された方法及び装置を提供することである。
【0014】
【課題を解決するための手段】本発明の方法及び装置に
従い、各プロセッサは少なくとも第1レベル・キャッシ
ュ及び第2レベル・キャッシュのキャッシュ階層を有す
る。第1レベル・キャッシュは第2レベル・キャッシュ
の上流である。第1レベル・キャッシュ及び第2レベル
・キャッシュの各々はそれぞれ複数のキャッシュ・ライ
ンを含み、第2レベル・キャッシュ内の各キャッシュ・
ラインにそれぞれ関連して、変更状態、排他状態、共用
状態、無効状態、最近読取り状態、及び上流未定義状態
を含む、少なくとも6つの異なる状態を識別するため用
いられる状態ビット・フィールドが設けられる。最も最
近アクセスされた情報のコピーを第2レベル・キャッシ
ュ内のキャッシュ・ラインへ格納する動作に応答して、
当該キャッシュ・ラインの状態が無効状態から最近読取
り状態に遷移する。ライン充填動作なしでの第1レベル
・キャッシュ内のキャッシュ・ラインの情報変更に応答
して、当該キャッシュ・ラインに対応する第2レベル・
キャッシュ内のキャッシュ・ラインの状態が無効状態か
ら上流未定義状態に遷移する。
従い、各プロセッサは少なくとも第1レベル・キャッシ
ュ及び第2レベル・キャッシュのキャッシュ階層を有す
る。第1レベル・キャッシュは第2レベル・キャッシュ
の上流である。第1レベル・キャッシュ及び第2レベル
・キャッシュの各々はそれぞれ複数のキャッシュ・ライ
ンを含み、第2レベル・キャッシュ内の各キャッシュ・
ラインにそれぞれ関連して、変更状態、排他状態、共用
状態、無効状態、最近読取り状態、及び上流未定義状態
を含む、少なくとも6つの異なる状態を識別するため用
いられる状態ビット・フィールドが設けられる。最も最
近アクセスされた情報のコピーを第2レベル・キャッシ
ュ内のキャッシュ・ラインへ格納する動作に応答して、
当該キャッシュ・ラインの状態が無効状態から最近読取
り状態に遷移する。ライン充填動作なしでの第1レベル
・キャッシュ内のキャッシュ・ラインの情報変更に応答
して、当該キャッシュ・ラインに対応する第2レベル・
キャッシュ内のキャッシュ・ラインの状態が無効状態か
ら上流未定義状態に遷移する。
【0015】本発明のすべての目的、機構及び利点が、
以下の詳細な説明で明らかになろう。
以下の詳細な説明で明らかになろう。
【0016】
【発明の実施の形態】本発明は、キャッシュ・メモリを
有する任意のデータ処理システムで実現することができ
る。また本発明の特徴は、1次キャッシュ及び2次キャ
ッシュを有するさまざまなデータ処理システムに適用で
きる。
有する任意のデータ処理システムで実現することができ
る。また本発明の特徴は、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には、図示していない
が、モデム、プリンタ等の周辺装置に接続するためのシ
リアル・ポート及びパラレル・ポート等、多数のコンポ
ーネントを追加できる。
できるマルチプロセッサ・データ処理システム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つの状態のどれに
も遷移できるが、キャッシュ・ラインが排他状態になる
のは無効状態または変更状態からだけである。
プロセッサ・データ処理システムのキャッシュ・コヒー
レンシ・プロトコルの状態図が示してある。従来技術の
この"MESI"プロトコルでは、キャッシュ・ラインは
4つの状態、つまり変更(M)、排他(E)、共用
(S)、無効(I)のいずれかになる。キャッシュ・ラ
インはそれぞれ、これら4つの状態の1つを示すため、
一般には2つの状態ビットを有する。状態は、エントリ
の初期状態、及び要求側プロセッサが求めるアクセスの
タイプに応じて変化し得、要求側プロセッサのキャッシ
ュ・ラインのエントリに対して特定の状態がセットされ
る。例えば、キャッシュ・ラインが変更状態にあると
き、アドレスされたラインは、データ処理システム内で
変更されたキャッシュ・ラインを有するキャッシュでの
み有効であり、変更された値はシステム・メモリに書戻
されていない。キャッシュ・ラインが排他状態にあると
きは、指示されたキャッシュ・ラインにしか存在せず、
値はシステム・メモリのそれと一致している。キャッシ
ュ・ラインが共用状態にある場合は、キャッシュ・ライ
ンはそのキャッシュと、データ処理システム内の他の少
なくとも1つのキャッシュで有効である。共用キャッシ
ュ・ラインの値はシステム・メモリのそれと一致してい
る。最後に、キャッシュ・ラインが無効状態にあると
き、これはアドレスされたメモリ位置がキャッシュに存
在しないことを示す。キャッシュ・ラインが変更、排
他、共用、または無効のどの状態にある場合でも、図2
に示すように、バス・トランザクションに応じて、さま
ざまな状態の間を遷移することができる。例えば排他状
態にあるキャッシュ・ラインは他の3つの状態のどれに
も遷移できるが、キャッシュ・ラインが排他状態になる
のは無効状態または変更状態からだけである。
【0019】図3を参照する。本発明の好適な実施例に
従った、マルチプロセッサ・データ処理システムのキャ
ッシュ・コヒーレンシ・プロトコルの状態図が示してあ
る。このプロトコルは、変更、排他、共用、及び無効と
いう4つの同じ状態を含んでいる点で図2の従来技術の
MESIプロトコルと似ているが、さらに最近読取り
(R)、上流未定義(U)と新たに2つの状態を含む。
従った、マルチプロセッサ・データ処理システムのキャ
ッシュ・コヒーレンシ・プロトコルの状態図が示してあ
る。このプロトコルは、変更、排他、共用、及び無効と
いう4つの同じ状態を含んでいる点で図2の従来技術の
MESIプロトコルと似ているが、さらに最近読取り
(R)、上流未定義(U)と新たに2つの状態を含む。
【0020】1.最近読取り状態 最近読取り状態は、普通は共用状態にある最も最近参照
されたブロックの指示を与えるため用いられる。言い換
えると、2つ以上のキャッシュが命令の有効なコピーを
有するとき、それらのキャッシュは、最近アクセスされ
たキャッシュを除いて、すべて共用状態にある。最も最
近アクセスされたそのキャッシュは最近読取り状態にな
る。
されたブロックの指示を与えるため用いられる。言い換
えると、2つ以上のキャッシュが命令の有効なコピーを
有するとき、それらのキャッシュは、最近アクセスされ
たキャッシュを除いて、すべて共用状態にある。最も最
近アクセスされたそのキャッシュは最近読取り状態にな
る。
【0021】従来技術のMESIプロトコルと同様、M
−E−S−Iの4つの状態は、エントリの初期状態、及
び要求側プロセッサが求めたアクセスのタイプにもとづ
いて変化し得る。これら4つの状態が変化する様子は、
一般的には従来技術のMESIプロトコルと同一であ
る。次に例外を示す。
−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プ
ロトコルのように排他状態になる。
・バス動作(表1の1行目)のためであり、その際、コ
ヒーレンシ応答は共用介入(ShrI)、共用(Sh
r)、または変更(Mod)である。コヒーレンシ応答
が"読取りミス"動作で変更の場合、変更されたキャッシ
ュは、命令をシステム・メモリにも送るので「変更」で
はなくなる。RWITM(変更予定読取り)の"ミス"状
況では、コヒーレンシ応答がShrI、Shr、Mo
d、またはNull(表1の2行目)の場合は変更状態
になる。RWITMの場合は命令ではなくデータにのみ
当てはまる。なぜなら通常は命令は変更されないからで
ある。"読取りミス"動作でコヒーレンシ応答がない(N
ull)場合(表1の3行目)、従来技術のMESIプ
ロトコルのように排他状態になる。
【0024】表2に、読取り型動作について、スヌーパ
として働くときに、バス・トランザクションがキャッシ
ュに与える影響の1つの例を示す。
として働くときに、バス・トランザクションがキャッシ
ュに与える影響の1つの例を示す。
【表2】
【0025】排他または最近のいずれの開始状態でも
(表2の1、2及び4行目)、キャッシュは共用介入コ
ヒーレンシ応答を転送する。これはつまりキャッシュが
その命令のコピーを介入手順により(つまりシステム・
メモリからの関与なく、要求側プロセッサに直接)供給
することを意味する。命令が供給されるときは、次の状
態は、読取り"ヒット"状況では共用(表2の1及び2行
目)に、"RWITMヒット"動作(表2の4行目)では
無効になる。開始状態が変更である場合は(表2の3及
び5行目)、プログラム命令は通常は変更されないので
これもまた命令の場合には当てはまらないが、バス動作
が"RWITM"だった場合は、コヒーレンシ応答は「変
更」になり、介入はまだ生じる。言い換えると、キャッ
シュ・ブロック内のデータはシステム・メモリに書込ま
れ、表2の3行目に示してある場合でのみ、要求側プロ
セッサによってシステム・メモリから読取られる。
(表2の1、2及び4行目)、キャッシュは共用介入コ
ヒーレンシ応答を転送する。これはつまりキャッシュが
その命令のコピーを介入手順により(つまりシステム・
メモリからの関与なく、要求側プロセッサに直接)供給
することを意味する。命令が供給されるときは、次の状
態は、読取り"ヒット"状況では共用(表2の1及び2行
目)に、"RWITMヒット"動作(表2の4行目)では
無効になる。開始状態が変更である場合は(表2の3及
び5行目)、プログラム命令は通常は変更されないので
これもまた命令の場合には当てはまらないが、バス動作
が"RWITM"だった場合は、コヒーレンシ応答は「変
更」になり、介入はまだ生じる。言い換えると、キャッ
シュ・ブロック内のデータはシステム・メモリに書込ま
れ、表2の3行目に示してある場合でのみ、要求側プロ
セッサによってシステム・メモリから読取られる。
【0026】先に述べたように、表1及び表2に示して
いない状態及び動作については、遷移及びコヒーレンシ
応答は従来技術のMESIプロトコルに従って実行され
るが、1つ資格がある。すなわちキャッシュ・エントリ
は、書込み動作を受ける最近読取り状態になることがで
き、そのエントリは、共用エントリが書込み動作を受け
るときと同様に変更状態に遷移する。
いない状態及び動作については、遷移及びコヒーレンシ
応答は従来技術のMESIプロトコルに従って実行され
るが、1つ資格がある。すなわちキャッシュ・エントリ
は、書込み動作を受ける最近読取り状態になることがで
き、そのエントリは、共用エントリが書込み動作を受け
るときと同様に変更状態に遷移する。
【0027】さらに、エントリは決して無効状態から共
用状態に遷移しない(その代わりに、最近読取り状態に
遷移する)。エントリは決して排他状態から最近読取り
状態に遷移しない(共用状態に遷移する)。エントリは
決して最近読取り状態から排他状態に遷移しない(共用
エントリが排他状態に遷移しないのと同じ)。最後に、
エントリは決して変更状態から最近読取り状態に遷移し
ない(共用状態に遷移する。要求側プロセッサのキャッ
シュのエントリは最近読取り状態に遷移する)。
用状態に遷移しない(その代わりに、最近読取り状態に
遷移する)。エントリは決して排他状態から最近読取り
状態に遷移しない(共用状態に遷移する)。エントリは
決して最近読取り状態から排他状態に遷移しない(共用
エントリが排他状態に遷移しないのと同じ)。最後に、
エントリは決して変更状態から最近読取り状態に遷移し
ない(共用状態に遷移する。要求側プロセッサのキャッ
シュのエントリは最近読取り状態に遷移する)。
【0028】最近読取り状態では、ブロックの所有権
は、命令を最後に読取ったキャッシュに移行する。これ
には、最も最近使用された状態にとどまり、よって、L
RUキャッシュ置換方式が採用された場合に割当て解除
される機会が少ないという利点が加わる。最近読取り状
態にはまた、キャッシュされたI/Oステータス位置を
最も最近読取ったプロセッサ/キャッシュに割込みをか
ける高機能入出力(I/O)コントローラ等、他のアプ
リケーションに用いられるという利点もある。なぜな
ら、このプロセッサ/キャッシュはI/Oデバイス・ド
ライバ・コードをキャッシュした可能性が最大であり、
従って、コードをそのキャッシュにフェッチする必要の
ある他のプロセッサよりも高速にコードを実行できるか
らである。
は、命令を最後に読取ったキャッシュに移行する。これ
には、最も最近使用された状態にとどまり、よって、L
RUキャッシュ置換方式が採用された場合に割当て解除
される機会が少ないという利点が加わる。最近読取り状
態にはまた、キャッシュされたI/Oステータス位置を
最も最近読取ったプロセッサ/キャッシュに割込みをか
ける高機能入出力(I/O)コントローラ等、他のアプ
リケーションに用いられるという利点もある。なぜな
ら、このプロセッサ/キャッシュはI/Oデバイス・ド
ライバ・コードをキャッシュした可能性が最大であり、
従って、コードをそのキャッシュにフェッチする必要の
ある他のプロセッサよりも高速にコードを実行できるか
らである。
【0029】2.上流未定義状態 L1等の上流キャッシュは、最初に、関連する古いデー
タをシステム・メモリからフェッチすることなく、キャ
ッシュ・ラインのそのデータを(ゼロ化により)変更し
ようとすることがある。この動作は、新しいプロセスに
メモリ領域を再割当てするとき、一般に行われる。それ
に応じて、下位レベル・キャッシュもまた、対応するキ
ャッシュ・ラインを割当ててゼロ化する必要がある。こ
の手順を実現する従来の方法は、キャッシュ・ラインを
システム・メモリから読取り、次に上流レベル・キャッ
シュのキャッシュ・ラインに対応した部分をゼロ化する
ことである。言うまでもなく、このアプローチでは、ど
のようにしろ再割当てされる予定のデータをシステム・
メモリから読取ることを避けるという目的が損なわれ
る。さらに、かなり短い時間内では、プロセッサが、下
位レベル・キャッシュのキャッシュ・ラインの残りの部
分に相当する他のキャッシュ・ラインを割当ててゼロ化
する可能性がある(下位レベル・キャッシュはこれを想
定できないが)。従って第1の問題は、上流レベル・キ
ャッシュでは有効であるが下位レベル・キャッシュでは
まだ有効ではないセクタを追跡することである。
タをシステム・メモリからフェッチすることなく、キャ
ッシュ・ラインのそのデータを(ゼロ化により)変更し
ようとすることがある。この動作は、新しいプロセスに
メモリ領域を再割当てするとき、一般に行われる。それ
に応じて、下位レベル・キャッシュもまた、対応するキ
ャッシュ・ラインを割当ててゼロ化する必要がある。こ
の手順を実現する従来の方法は、キャッシュ・ラインを
システム・メモリから読取り、次に上流レベル・キャッ
シュのキャッシュ・ラインに対応した部分をゼロ化する
ことである。言うまでもなく、このアプローチでは、ど
のようにしろ再割当てされる予定のデータをシステム・
メモリから読取ることを避けるという目的が損なわれ
る。さらに、かなり短い時間内では、プロセッサが、下
位レベル・キャッシュのキャッシュ・ラインの残りの部
分に相当する他のキャッシュ・ラインを割当ててゼロ化
する可能性がある(下位レベル・キャッシュはこれを想
定できないが)。従って第1の問題は、上流レベル・キ
ャッシュでは有効であるが下位レベル・キャッシュでは
まだ有効ではないセクタを追跡することである。
【0030】例えば、2つのセクタを有するセクタ化さ
れたキャッシュでは、(1)2つのセクタのうち第1セ
クタ("奇数"セクタ)が変更される、(2)2つのセク
タの第2セクタ("偶数"セクタ)が変更される、(3)
いずれのセクタも変更されない(キャッシュ可能なライ
トスルー動作の結果、両方とも共用される)、という3
つの可能なケースに起因する3つの上流未定義状態があ
る。これらの状態の最初のものは、"U MI "、2つ目
は"U IM "、3つ目は"USS"と呼ばれる。この2セク
タのキャッシュ例では、各キャッシュ・ラインに、ライ
ンの状態を示す3ビットが使用できる。キャッシュ・ラ
インにセクタが3つ以上与えられた場合、追加される状
態のため、キャッシュ・ラインにビットを追加する必要
がある。
れたキャッシュでは、(1)2つのセクタのうち第1セ
クタ("奇数"セクタ)が変更される、(2)2つのセク
タの第2セクタ("偶数"セクタ)が変更される、(3)
いずれのセクタも変更されない(キャッシュ可能なライ
トスルー動作の結果、両方とも共用される)、という3
つの可能なケースに起因する3つの上流未定義状態があ
る。これらの状態の最初のものは、"U MI "、2つ目
は"U 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セクタだけが変更されたと指示される。
ュのキャッシュ・ライン内の偶数セクタ(第2セクタ)
で書込み型動作の割当てゼロ化動作(DCBZ)が実行
されるとき、対応する無効状態の下位レベル・キャッシ
ュは"UIM"状態に遷移する。つまり第2セクタだけが変
更されたと指示される。表3の第2エントリでは、DC
BZ動作がL1キャッシュのキャッシュ・ライン内の奇
数セクタ(第1セクタ)で実行されるとき、対応する無
効状態の下位レベル・キャッシュは"UMI"状態に遷移す
る。つまり第1セクタだけが変更されたと指示される。
【0033】キャッシュ・ラインの奇数セクタが先にD
CBZ動作を経ており、且つ対応する下位レベル・キャ
ッシュが"UMI"状態にあるときに、DCBZ動作が同
じキャッシュ・ラインの偶数セクタで実行された場合
(表3の第3エントリ)か、またはキャッシュ・ライン
の偶数セクタが先にDCBZ動作を経ており、且つ対応
する下位レベル・キャッシュが"UIM"状態にあるとき
に、DCBZ動作が同じキャッシュ・ラインの奇数セク
タで実行された場合(表3の第4エントリ)は、下位レ
ベル・キャッシュは変更状態への状態遷移を経て、ライ
ン全体が変更されたことを示す。しかし、所与のライン
でDCBZ動作が先に1回しか行われておらず、下位レ
ベル・キャッシュのそのラインが"UIM"状態または"
UMI"状態であり、他の無効ラインは"読取り"または"
変更予定読取り"(RWITM)動作の対象になってい
る場合は、下位レベル・キャッシュ・ラインは無効状態
に遷移し、変更されたセクタは上流レベル・キャッシュ
からフラッシュされる(表3の第5エントリ)。
CBZ動作を経ており、且つ対応する下位レベル・キャ
ッシュが"UMI"状態にあるときに、DCBZ動作が同
じキャッシュ・ラインの偶数セクタで実行された場合
(表3の第3エントリ)か、またはキャッシュ・ライン
の偶数セクタが先にDCBZ動作を経ており、且つ対応
する下位レベル・キャッシュが"UIM"状態にあるとき
に、DCBZ動作が同じキャッシュ・ラインの奇数セク
タで実行された場合(表3の第4エントリ)は、下位レ
ベル・キャッシュは変更状態への状態遷移を経て、ライ
ン全体が変更されたことを示す。しかし、所与のライン
でDCBZ動作が先に1回しか行われておらず、下位レ
ベル・キャッシュのそのラインが"UIM"状態または"
UMI"状態であり、他の無効ラインは"読取り"または"
変更予定読取り"(RWITM)動作の対象になってい
る場合は、下位レベル・キャッシュ・ラインは無効状態
に遷移し、変更されたセクタは上流レベル・キャッシュ
からフラッシュされる(表3の第5エントリ)。
【0034】表3の第6エントリで、対象ブロックに対
してL1"ヒット"が起こり、下位レベル・キャッシュ
は"USS"状態にある場合、それらはその状態にとどま
る。つまり有効であるかのように扱われるがキャッシュ
はされない。キャッシュ可能/ライトスルーの読取り動
作がブロックで実行され(表3の第7エントリ)、下位
レベル・キャッシュの対応するブロックが無効状態にあ
る場合は、それらは"USS"状態への遷移を経る。最後
に、表3の第8エントリに示してあるように、上に指定
していない他のすべてのL1動作はノーマル遷移を経
る。つまり従来技術のMESIプロトコルに従う。
してL1"ヒット"が起こり、下位レベル・キャッシュ
は"USS"状態にある場合、それらはその状態にとどま
る。つまり有効であるかのように扱われるがキャッシュ
はされない。キャッシュ可能/ライトスルーの読取り動
作がブロックで実行され(表3の第7エントリ)、下位
レベル・キャッシュの対応するブロックが無効状態にあ
る場合は、それらは"USS"状態への遷移を経る。最後
に、表3の第8エントリに示してあるように、上に指定
していない他のすべてのL1動作はノーマル遷移を経
る。つまり従来技術のMESIプロトコルに従う。
【0035】表4にシステム・バス・スヌープ済みトラ
ンザクションが、上流未定義状態の1つにあるキャッシ
ュにどのように影響を与えるかを示す。
ンザクションが、上流未定義状態の1つにあるキャッシ
ュにどのように影響を与えるかを示す。
【表4】
【0036】上流未定義状態の1つでは、キャッシュ
は、それが処理を行い、スヌープを上流に転送して正し
い動作を確認しなければならないことを認識する。表4
は、上流未定義状態の1つに対してスヌープ・ヒットが
起こる、まれな例だけを示している。これらの状況で
は、下位レベル・キャッシュは上流キャッシュの内容を
フラッシュし、無効状態に遷移し、"再試行"応答を発行
する。ただし読取りスヌープ・ヒットが"USS"状態に対
して生じた場合は例外で、その場合のコヒーレンシ応答
は共用である。
は、それが処理を行い、スヌープを上流に転送して正し
い動作を確認しなければならないことを認識する。表4
は、上流未定義状態の1つに対してスヌープ・ヒットが
起こる、まれな例だけを示している。これらの状況で
は、下位レベル・キャッシュは上流キャッシュの内容を
フラッシュし、無効状態に遷移し、"再試行"応答を発行
する。ただし読取りスヌープ・ヒットが"USS"状態に対
して生じた場合は例外で、その場合のコヒーレンシ応答
は共用である。
【0037】上述の上流未定義状態を利用すると、不要
なバス動作を実行せず、キャッシュ可能ライトスルー動
作を効率よくサポートして、上流レベル・キャッシュで
有効なセクタを追跡することに関係した前述の問題の両
方が解決される。その結果、メモリ帯域幅が増加し、ア
ドレス帯域幅の制限から解放される他に、バイト書込み
機能が得られる。簡素化のため、図3には1つの上流未
定義状態しか示していないが、当業者には明らかなよう
に、上流未定義状態の数は、キャッシュ・ライン内のセ
クタの数に依存する。
なバス動作を実行せず、キャッシュ可能ライトスルー動
作を効率よくサポートして、上流レベル・キャッシュで
有効なセクタを追跡することに関係した前述の問題の両
方が解決される。その結果、メモリ帯域幅が増加し、ア
ドレス帯域幅の制限から解放される他に、バイト書込み
機能が得られる。簡素化のため、図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)
- 【請求項1】各プロセッサに少なくとも第1レベル・キ
ャッシュと第2レベル・キャッシュとのキャッシュ階層
があり、前記第1レベル・キャッシュは前記第2レベル
・キャッシュの上流であり、前記第1レベル・キャッシ
ュ及び前記第2レベル・キャッシュの各々はそれぞれ複
数のキャッシュ・ラインを含み、前記第2レベル・キャ
ッシュ内の前記複数のキャッシュ・ラインの各々にそれ
ぞれ関連付けられ、当該関連するキャッシュ・ラインの
変更状態、排他状態、共用状態、無効状態、最近読取り
状態、及び上流未定義状態を含む複数の状態を識別する
ために用いられる状態ビット・フィールドを備え、前記
上流未定義状態により、前記第1レベル・キャッシュ内
のキャッシュ・ラインには有効な情報が格納されている
が、当該キャッシュ・ラインに対応する前記第2レベル
・キャッシュ内のキャッシュ・ラインには有効な情報が
格納されていないことを表示するようにしたマルチプロ
セッサ・データ処理システム内で、キャッシュ・コヒー
レンシを維持するキャッシュ・コヒーレンシ・プロトコ
ルを提供する方法であって、最も 最近アクセスされた情報のコピーを前記第2レベル
・キャッシュ内のキャッシュ・ラインへ格納する動作に
応答して、当該キャッシュ・ラインの状態を前記無効状
態から前記最近読取り状態へ遷移するステップと、 ライン充填動作なしでの前記第1レベル・キャッシュ内
のキャッシュ・ラインの情報変更に応答して、当該キャ
ッシュ・ラインに対応する前記第2レベル・キャッシュ
内のキャッシュ・ラインの状態を前記無効状態から前記
上流未定義状態に遷移するステップと、 を含む、前記方法。 - 【請求項2】前記最近読取り状態から前記無効状態、前
記変更状態、または前記共用状態に遷移するステップを
含む、請求項1記載の方法。 - 【請求項3】前記変更状態から前記共用状態に遷移する
ステップを含む、請求項1記載の方法。 - 【請求項4】各プロセッサに少なくとも第1レベル・キ
ャッシュと第2レベル・キャッシュとのキャッシュ階層
があり、前記第1レベル・キャッシュは前記第2レベル
・キャッシュの上流であり、前記第1レベル・キャッシ
ュ及び前記第2レベル・キャッシュの各々はそれぞれ複
数のキャッシュ・ラインを含んでいる、マルチプロセッ
サ・データ処理システム内でキャッシュ・コヒーレンシ
を維持するキャッシュ・コヒーレンシ・プロトコルを有
するキャッシュ・メモリであって、前記第2レベル・キャッシュ内の 前記複数のキャッシュ
・ラインの各々にそれぞれ関連付けられ、当該関連する
キャッシュ・ラインの変更状態、排他状態、共用状態、
無効状態、最近読取り状態、及び上流未定義状態を含む
複数の状態を識別するために用いられる状態ビット・フ
ィールドを備え、 前記上流未定義状態は、前記第1レベル・キャッシュ内
のキャッシュ・ラインには有効な情報が格納されている
が、当該キャッシュ・ラインに対応する前記第2レベル
・キャッシュ内のキャッシュ・ラインには有効な情報が
格納されていないことを表示し、 さらに、最も 最近アクセスされた情報のコピーを前記第
2レベル・キャッシュ内のキャッシュ・ラインへ格納す
る動作に応答して、当該キャッシュ・ラインの状態を前
記無効状態から前記最近読取り状態へ遷移するための手
段と、 ライン充填動作なしでの前記第1レベル・キャッシュ内
のキャッシュ・ラインの情報変更に応答して、当該キャ
ッシュ・ラインに対応する前記第2レベル・キャッシュ
内のキャッシュ・ラインの状態を前記無効状態から前記
上流未定義状態へ遷移するための手段とを備えた、前記
キャッシュ・メモリ。 - 【請求項5】前記最近読取り状態から前記無効状態、前
記変更状態、または前記共用状態に遷移するための手段
を含む、請求項4記載のキャッシュ・メモリ。 - 【請求項6】前記変更状態から前記共用状態へ遷移する
ための手段を含む、請求項4記載のキャッシュ・メモ
リ。
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)
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)
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 |
-
1997
- 1997-04-14 US US08/839,543 patent/US5943684A/en not_active Expired - Fee Related
-
1998
- 1998-01-14 KR KR1019980000913A patent/KR100273039B1/ko not_active IP Right Cessation
- 1998-04-13 JP JP10100946A patent/JP3007872B2/ja not_active Expired - Fee Related
Non-Patent Citations (2)
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 |