JP2014191622A - 処理装置 - Google Patents
処理装置 Download PDFInfo
- Publication number
- JP2014191622A JP2014191622A JP2013067130A JP2013067130A JP2014191622A JP 2014191622 A JP2014191622 A JP 2014191622A JP 2013067130 A JP2013067130 A JP 2013067130A JP 2013067130 A JP2013067130 A JP 2013067130A JP 2014191622 A JP2014191622 A JP 2014191622A
- Authority
- JP
- Japan
- Prior art keywords
- address
- request
- history table
- node
- coherent read
- 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.)
- Pending
Links
Images
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
- 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/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
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)
Abstract
【課題】キャッシュコヒーレンシを保ちながら処理能力を向上させることができる処理装置を提供することを課題とする。
【解決手段】キャッシュコントローラ(21)は、他の処理装置から無効化要求が入力されると、無効化履歴テーブル(41)に無効化要求が持つ無効化要求アドレス及び無効化要求を出力した他の処理装置の識別子の組みを登録する。中央処理単位(11)がキャッシュメモリ(31)に記憶されていない第1のアドレスのデータをリードしようとすると、キャッシュコントローラは、第1のアドレスが無効化履歴テーブルに登録されている場合には、第1のアドレスに対応する無効化要求を出力した他の処理装置の識別子が示す他の処理装置に第1のアドレスを含むコヒーレントリード要求を出力し、第1のアドレスが無効化履歴テーブルに登録されていない場合には、すべての他の処理装置に第1のアドレスを含むコヒーレントリード要求を出力する。
【選択図】図1
【解決手段】キャッシュコントローラ(21)は、他の処理装置から無効化要求が入力されると、無効化履歴テーブル(41)に無効化要求が持つ無効化要求アドレス及び無効化要求を出力した他の処理装置の識別子の組みを登録する。中央処理単位(11)がキャッシュメモリ(31)に記憶されていない第1のアドレスのデータをリードしようとすると、キャッシュコントローラは、第1のアドレスが無効化履歴テーブルに登録されている場合には、第1のアドレスに対応する無効化要求を出力した他の処理装置の識別子が示す他の処理装置に第1のアドレスを含むコヒーレントリード要求を出力し、第1のアドレスが無効化履歴テーブルに登録されていない場合には、すべての他の処理装置に第1のアドレスを含むコヒーレントリード要求を出力する。
【選択図】図1
Description
本発明は、処理装置に関し、特にキャッシュメモリのコヒーレンス技術に関する。
コンピュータを用いた情報処理システムの性能を向上する手段として複数のプロセシングユニット(CPU)を用いた並列処理システムが知られている。並列処理システムでは、各CPUが備えるキャッシュメモリの内容の同一性を保つ必要がある。このことをキャッシュコヒーレンシと呼ぶが、キャッシュコヒーレンシを効率的に保つ手法をいくつか説明する。
共通バスを流れるアクセス要求に含まれるアドレスを格納するヒストリーテーブルと、ヒストリーテーブル制御回路とを備えるキャッシュシステムが知られている(例えば、特許文献1参照)。ヒストリーテーブル制御回路は、受け取ったアクセス要求のアドレスがテーブルに格納されているか否かを判定し、該アドレスがテーブルに格納されている場合には、該アクセス要求に関するキャッシュ制御回路の動作を抑止し、該アドレスがテーブルに格納されていない場合には、キャッシュ制御回路に、該アクセス要求に関する動作を行わせる。
また、キャッシュライン以上の大きさを有する、主記憶の複数の領域の各々について、それぞれに属するデータを各プロセッサユニットがキャッシングしているか否かを示す情報が記憶されるマルチキャストテーブルが知られている(例えば、特許文献2参照)。他のプロセッサユニットに送付すべきコヒーレント処理要求の送付先をこのテーブルに記憶された情報に基づいて制限し、相互結合網によりこの要求を制限された送付先に部分放送する。送付先のプロセッサユニットは、その要求が指定するデータのキャッシュ状態を返送するときにそのプロセッサユニットでのそのデータが含まれる特定のメモリ領域に関するそのプロセッサユニットでのキャッシング状況を併せて返送する。要求元プロセッサユニットは、この返送に基づいてマルチキャストテーブルを更新する。
プロセシング・ユニット(CPU)とCPUに付随するキャッシュメモリからなる処理装置(ノード)が複数相互に接続された並列処理システムにおいて、各ノードで共有されるデータは各キャッシュメモリ上で同一である必要がある。キャッシュメモリの同一性のことをキャッシュコヒーレンシという。キャッシュコヒーレンシを保つためのアルゴリズムとしてスヌープ方式がある。スヌープ方式では、キャッシュコヒーレンシを保つために、1つのノードが他の全てのノードに種々のスヌープ要求を出力する。しかし、ノードが無条件にすべての他のノードに要求を出力すると、ノード間を接続する相互結合網上のデータが輻輳し、処理システムの処理能力が低下してしまう。これはノードの数が増えれば増えるほど顕著である。また、スヌープ要求を受けた他のキャッシュはその応答の動作のため、本来のCPUからの要求に遅延を来し、処理性能の低下を招いていた。
1つの側面では、本発明の目的は、キャッシュコヒーレンシを保ちながら処理能力を向上させることができる処理装置を提供することである。
処理装置は、メインメモリのデータの一部のコピーを記憶するキャッシュメモリと、前記キャッシュメモリに対してデータをアクセスする中央処理単位と、前記キャッシュメモリを制御するキャッシュコントローラと、無効化履歴テーブルとを有し、前記キャッシュコントローラは、他の処理装置から無効化要求が入力されると、前記無効化履歴テーブルに前記無効化要求が持つ無効化要求アドレス及び前記無効化要求を出力した前記他の処理装置の識別子の組みを登録し、前記中央処理単位が前記キャッシュメモリに記憶されていない第1のアドレスのデータをリードしようとすると、前記キャッシュコントローラは、前記第1のアドレスが前記無効化履歴テーブルに登録されている場合には、前記第1のアドレスに対応する前記無効化要求を出力した前記他の処理装置の識別子が示す前記他の処理装置に前記第1のアドレスを含むコヒーレントリード要求を出力し、前記第1のアドレスが前記無効化履歴テーブルに登録されていない場合には、すべての他の処理装置に前記第1のアドレスを含むコヒーレントリード要求を出力する。
また、処理装置は、メインメモリのデータの一部のコピーを記憶するキャッシュメモリと、前記キャッシュメモリに対してデータをアクセスする中央処理単位と、前記キャッシュメモリを制御するキャッシュコントローラと、コヒーレントリード履歴テーブルとを有し、前記キャッシュコントローラは、他の処理装置からコヒーレントリード要求が入力されると、前記コヒーレントリード履歴テーブルに前記コヒーレントリード要求が持つコヒーレントリード要求アドレス及び前記コヒーレントリード要求を出力した前記他の処理装置の識別子の組みを登録し、前記中央処理単位が前記キャッシュメモリの第2のアドレスのデータを書き換えようとすると、前記キャッシュコントローラは、前記第2のアドレスが前記コヒーレントリード履歴テーブルに登録されている場合には、前記コヒーレントリード履歴テーブルに登録されている前記第2のアドレスに対応する前記他の処理装置の識別子が示す前記他の処理装置に前記第2のアドレスを含む無効化要求を出力し、前記第2のアドレスが前記コヒーレントリード履歴テーブルに登録されていない場合には、すべての他の処理装置に前記第2のアドレスを含む無効化要求を出力する。
無効化履歴テーブルに登録されている他の処理装置にのみコヒーレントリード要求を出力すること、又はコヒーレントリード履歴テーブルに登録されている他の処理装置のみに無効化要求を出力することにより、複数の処理装置が無条件にすべての他の処理装置にコヒーレントリード要求又は無効化要求を出力することが少なくなり、相互結合網上のデータ輻輳が低下し性能が向上する。また、キャッシュメモリは、コヒーレントリード要求又は無効化要求を受ける回数が減り、本来の中央処理単位からのリード・ライト要求に専念することができ、処理性能向上に寄与する。
図1及び図2は、実施形態による処理システムの構成例を示す図である。処理システムは、第1〜第6のノード1〜6と、スイッチSW12〜SW67と、メインメモリ51と、メインメモリコントローラ52と、スイッチ制御部53と、レジスタR12〜R67とを有する。図2のノード1〜6及びスイッチSW12〜SW67は、図1のノード1〜6及びスイッチSW12〜SW67と同じものである。
第1のノード1は、第1の処理装置であり、第1の中央演算処理装置(CPU:Central Processing Unit)11と、第1のキャッシュコントローラ21と、第1のキャッシュメモリ31と、第1の履歴テーブル41とを有する。
第2のノード2は、第2の処理装置であり、第2のCPU12と、第2のキャッシュコントローラ22と、第2のキャッシュメモリ32と、第2の履歴テーブル42とを有する。
第3のノード3は、第3の処理装置であり、第3のCPU13と、第3のキャッシュコントローラ23と、第3のキャッシュメモリ33と、第3の履歴テーブル43とを有する。
第4のノード4は、第4の処理装置であり、第4のCPU14と、第4のキャッシュコントローラ24と、第4のキャッシュメモリ34と、第4の履歴テーブル44とを有する。
第5のノード5は、第5の処理装置であり、第5のCPU15と、第5のキャッシュコントローラ25と、第5のキャッシュメモリ35と、第5の履歴テーブル45とを有する。
第6のノード6は、第6の処理装置であり、第6のCPU16と、第6のキャッシュコントローラ26と、第6のキャッシュメモリ36と、第6の履歴テーブル46とを有する。
メインメモリ51は、各CPUが処理を実施するための命令及び各CPUが処理するためのデータあるいは処理した結果のデータを記憶する。メインメモリコントローラ52は、各ノードから要求に応じてメインメモリ51の制御を行う。キャッシュメモリ31〜36は、それぞれ、メインメモリ51に記憶されている一部のアドレスのデータのコピーを記憶する。CPU11〜16は、中央処理単位(プロセッサ)であり、それぞれ、メインメモリ51又はキャッシュメモリ31〜36に対してデータをアクセスする。キャッシュコントローラ21〜26は、それぞれ、キャッシュメモリ31〜36を制御する。
スイッチSW12〜SW67は、第1〜第6のノード1〜6を相互に接続する相互結合網を形成するためのスイッチである。スイッチSW12は、第1のノード1及び第2のノード2を相互に接続可能である。スイッチSW13は、第1のノード1及び第3のノード3を相互に接続可能である。スイッチSW14は、第1のノード1及び第4のノード4を相互に接続可能である。スイッチSW15は、第1のノード1及び第5のノード5を相互に接続可能である。スイッチSW16は、第1のノード1及び第6のノード6を相互に接続可能である。スイッチSW17は、第1のノード1及びメインメモリコントローラ52を相互に接続可能である。
スイッチSW23は、第2のノード2及び第3のノード3を相互に接続可能である。スイッチSW24は、第2のノード2及び第4のノード4を相互に接続可能である。スイッチSW25は、第2のノード2及び第5のノード5を相互に接続可能である。スイッチSW26は、第2のノード2及び第6のノード6を相互に接続可能である。スイッチSW27は、第2のノード2及びメインメモリコントローラ52を相互に接続可能である。
スイッチSW34は、第3のノード3及び第4のノード4を相互に接続可能である。スイッチSW35は、第3のノード3及び第5のノード5を相互に接続可能である。スイッチSW36は、第3のノード3及び第6のノード6を相互に接続可能である。スイッチSW37は、第3のノード3及びメインメモリコントローラ52を相互に接続可能である。
スイッチSW45は、第4のノード4及び第5のノード5を相互に接続可能である。スイッチSW46は、第4のノード4及び第6のノード6を相互に接続可能である。スイッチSW47は、第4のノード4及びメインメモリコントローラ52を相互に接続可能である。
スイッチSW56は、第5のノード5及び第6のノード6を相互に接続可能である。スイッチSW57は、第5のノード5及びメインメモリコントローラ52を相互に接続可能である。
スイッチSW67は、第6のノード6及びメインメモリコントローラ52を相互に接続可能である。
スイッチ制御部53は、第1〜第6のノード1〜6の要求に応じて、レジスタR12〜R67に対して、クロック信号CKに同期して、データDinを書き込む。スイッチSW12〜SW67は、それぞれ、レジスタR12〜R67に書き込まれたデータに応じて、オン又はオフする。
図2はスイッチ制御のブロック図である。各ノード1〜6から発せられたスイッチ制御信号をスイッチ制御部53は受けて、各スイッチSW12〜67と対にあるレジスタR12〜R67へ各スイッチの制御情報のオン/オフを書き込む。各スイッチは例えば“1”を書き込めばオンであり、“0”を書き込めばオフとなる。
図3は、図1の各キャシュメモリ31〜36の構成例を示す図である。キャッシュメモリ31〜36は、メインメモリ51に対して高速小容量のメモリであり、通常メインメモリの1部のコピーがキャッシュメモリに記憶されている。キャッシュメモリ31〜36を設けることにより、CPU11〜16はデータに対して高速にアクセスすることができる。図3ではダイレクトマップ方式、MESIプロトコルのキャッシュメモリを図示している。各キャシュメモリ31〜36は、タグ304及びデータ303の一つ又は複数の組みを記憶する。タグ304は、アドレス301及びステータス302を有する。データ303の1ラインには通常、メインメモリ51の数ワード分のデータが記憶できる。タグ304とデータ303の1ライン分を1エントリと呼称する。キャッシュメモリのアドレス入力はCPUの下位アドレスADD1に接続され、CPUの下位アドレスADD1が決定するとキャッシュメモリの1エントリ分のデータが読み出される。ステータス302は、無効状態I、共有状態S、排他状態E及び変更済み状態Mのうちのいずれか1つの状態を示す。
無効状態Iは、それに対応するアドレス301のデータ303が無効であることを示す。第1のキャッシュメモリ31及び第2のキャッシュメモリ32が同一のアドレス301の同一のデータ303を記憶している場合に、第1のキャッシュメモリ31のそのアドレス301のデータ303が変更されたときには、キャッシュコヒーレンシを保つ必要がある。その場合、第2のキャッシュメモリ32のそのアドレス301のデータ303は古いデータであることを示すために、第2のキャッシュメモリ32のそのアドレス301のデータ303に対応するステータス302を無効状態Iにする。
共有状態Sは、複数のキャッシュメモリが同一のアドレス301の同一のデータ303を共有している状態を示す。例えば、キャッシュメモリ31〜36の中で複数のキャッシュメモリが同一のアドレス301の同一のデータ303を記憶している場合には、その同一のアドレス301の同一のデータ303を記憶している複数のキャッシュメモリのステータス302はすべて共有状態Sになる。
排他状態Eは、1個のキャッシュメモリだけがそのアドレス301のデータ303を記憶している状態を示す。例えば、キャッシュメモリ31〜36の中で1個のキャッシュメモリだけがそのアドレス301のデータ303を記憶している場合には、そのキャッシュメモリのステータス302は排他状態Eになる。
変更済み状態Mは、中央演算処理装置がキャッシュメモリ内のそのアドレス301のデータ303を変更した状態であることを示す。例えば、CPU11がキャッシュメモリ31内のアドレス301のデータ303を書き換えた場合には、キャッシュメモリ31内のそのアドレス301のデータ303に対応するステータス302を変更済み状態Mになる。この状態では、キャッシュメモリ31内のデータ302とメインメモリ51内のデータとは、異なるデータになっている。
まず、無効化要求について説明する。上記のように、例えば、第1のキャッシュメモリ31及び第2のキャッシュメモリ32が同一のアドレス301の同一のデータ303を記憶している場合に、第1のキャッシュメモリ31及び第2のキャッシュメモリ32のそのアドレス301のデータ303に対応するステータス302は共に共有状態Sである。この状態で、第1のCPU11が第1のキャッシュメモリ31内のそのアドレス301のデータ303を書き換えようとすると、キャッシュコヒーレンシを保つため、すべての他のノード2〜6に、そのアドレス情報を含む無効化要求を出力する。第2のノード2では、その入力した無効化要求のアドレス情報でキャッシュメモリ32を読み出すと、同じアドレスがアドレス301に、同じデータがデータ303に存在し、ステータスは共有状態Sを出力しキャッシュヒットとなる、この場合第1のノード1からの無効化要求に従い、第2のキャッシュメモリ32内のそのアドレス301のデータ303に対応するステータス302を無効状態Iにする。また、ノード3〜6は、その入力した無効化要求のアドレス情報でキャッシュメモリ32を読み出すが、無効化要求のアドレス301のデータ303がキャッシュメモリ33〜36に存在しないため無効化の処理は行わないが、各キャッシュメモリへのアクセスが生じその期間はCPUからのアクセスが待たされる。また上記のように、第1のノード1は、すべての他のノード2〜6に対して、オン状態のスイッチSW12〜SW16を介して、同一の無効化要求を出力する。この場合、全てのスイッチパスが占有されるため、他のノード間のあるいはメインメモリとの通信が阻害され、バスがスイッチファブリック型であることの利点が半減し、処理システムの性能が低下してしまう。
本実施形態では、図1の履歴テーブル41〜46を設けることにより、第1のノード1は、すべての他のノード2〜6に無効化要求を出力するのではなく、スイッチSW12のみオンにし、必要な1個の他のノード2に対してのみ無効化要求を出力することにより、スイッチSW34〜SW67はフリーとなり、他のノード間のあるいはメインメモリとの通信が確保できること、またキャッシュメモリ33〜36に対しても全くアクセスしないため、各CPUからキャッシュメモリへのアクセスを阻害することがないことによって、処理システムの性能を向上させる。
次に、コヒーレントリード要求について説明する。例えば、第1のCPU11があるアドレスのデータのリード要求をした場合に、そのアドレスのデータが第1のキャッシュメモリ31に存在せずにミスヒットした場合を考える。その場合、メインメモリ51内のそのアドレスのデータが最新のデータとは限らない。すなわち、第2のノード2がメインメイン51のあるアドレスのデータを読み出し、そのデータを第2のキャッシュメモリ32に書き込み、その後、CPU12がキャッシュメモリ32内のそのデータを書き換える場合がある。その場合、第2のキャッシュメモリ32内のそのアドレスのデータに対応するステータス32は変更済み状態Mになる。この場合、第2のキャッシュメモリ32内のデータが最新であり、メインメモリ51内のデータとは一致しない。そこで、第1のノード1は、キャッシュコヒーレンシを保つため、一般的には全ての他のノード2〜6に、そのアドレスに対しコヒーレントリード要求を出力する。その場合、第2のノード2は、その入力したコヒーレントリード要求のアドレスのデータに対応するステータス302が変更済み状態Mであるので、第2のキャッシュメモリ32内のそのアドレスの最新のデータをメインメモリ51に書き戻し、第1のノード1は、メインメモリ51内のそのアドレスの最新のデータを読み出し、キャッシュメモリ31に書き込む。また、ノード3〜6は、その入力したコヒーレントリード要求のアドレスのデータがキャッシュメモリ33〜36に存在しないが、コヒーレントリード要求により各キャッシュメモリへのアクセスが生じ、その期間はCPUからのアクセスが待たされる。上記のように、第1のノード1は、すべての他のノード2〜6に対して、オン状態のスイッチSW12〜SW16を介して、同一のコヒーレントリード要求を出力する。この場合、全てのスイッチパスが占有されるため、他のCPU間のあるいはメインメモリとの通信が阻害され、バスがスイッチファブリック型であることの利点が半減し、処理システムの性能が低下してしまう。
本実施形態では、図1の履歴テーブル41〜46を設けることにより、第1のノード1は、すべての他のノード2〜6にコヒーレントリード要求を出力するのではなく、スイッチSW12のみオンにし、必要な1個の他のノード2に対してのみ出力することにより、スイッチSW34〜SW67はフリーとなり、他のノード間、あるいはメインメモリとの通信が確保できること、またキャッシュメモリ33〜36に対しても全くアクセスしないため各CPUからキャッシュメモリへのアクセスを阻害することがないことによって、処理システムの性能を向上させる。
本実施形態での例を以下詳述する。図1の各履歴テーブル41〜46は図4の無効化履歴部と図5のコヒーレントリード履歴部よりなる。図4の無効化履歴部は、無効化履歴テーブルIHT、比較器404及び論理積(AND)回路405で構成される。タグ部401は図3のキャッシュメモリのアドレス301と同様に上位アドレスADD2を記憶し、無効ビット402は“0”の時はこの無効化履歴テーブルIHTのラインは無効であることを示し、“1”の時は有効であることを示す。ノード番号403はどのノードから無効化要求を受けたかを示し、ノード番号を記憶している。図5のコヒーレントリード履歴部は、コヒーレントリード履歴テーブルRHT、比較器504及び論理積(AND)回路505で構成される。タグ部501は図3のキャッシュメモリのアドレス301と同様に上位アドレスADD2を記憶し、リードビット502は“0”の時はこのコヒーレントリード履歴テーブルRHTのラインは無効であることを示し、“1”の時は有効であることを示す。ノード番号503はどのノードからコヒーレントリード要求を受けたかを示し、ノード番号を記憶している。各履歴テーブルは初期化時には無効、つまり無効ビット402及びリードビット502が“0”となっている。比較器504は、無効化履歴テーブルRHTにより出力されたタグ501と上位アドレスADD2とを比較し、両者が一致すれば「1」を出力し、両者が一致しなければ「0」を出力する。論理積回路505は、比較器504の出力値と、コヒーレントリード履歴テーブルRHTにより出力されるリードビット502との論理積値を、リードステートRSとして出力する。
図10は、コヒーレントリード履歴部の他の実施形態を示す図である。コヒーレントリード履歴部はタグ部901、ノードマップ部902、コヒーレントリード履歴テーブル、比較器904及び論理積(AND)回路905、論理和(OR)回路906で構成される。タグ部901は図3のキャッシュメモリのアドレス301と同様に上位アドレスADD2を記憶し、ノードマップ部902は“0”の時はこのビット位置に相当するノードからコヒーレントリード要求は来ていないことを示し、“1”の時はこのビット位置に相当するノードからコヒーレントリード要求があったことを示す。論理和回路906はノードマップ部902の各有効ノードビットRNの論理和を出力し、どれかのノードビットが“1”であればその出力は“1”になる。タグ部901の出力と上位アドレスADD2が比較器904で比較され、一致すれば、その出力は“1”となる。論理積回路905は、論理和回路906の出力と比較器904の出力との論理積値を、リードステートRSとして出力する。リードステートRSが“1”である時は、ノードマップ部902からの出力ノードビットが有効であることを示している。
図8及び図9は、動作前の各キャッシュメモリのステータス、無効化履歴テーブルIHT、コヒーレントリード履歴テーブルRHTの状態から、読み出し/書き込み動作を行った場合のスヌーピング、データの流れを示すとともに、動作後の状態を表している。以下、本実施形態における重要な部分について、図1〜図5を参照しながら説明する。なお、下記のかっこ付き番号の説明は、図8及び図9の“説明”で示す番号に対応する。
(1)他ノードからインバリデート要求を受けた場合
第1のノード1において、CPU11から書き込み命令が実施されキャッシュメモリ31のステータスが共有(Shared)であり、履歴テーブル41内のRHT=“0”の無効である場合、第1のノード1は各ノードへ無効化要求をブロードキャストする。もし第2のノード2内のキャッシュメモリ32がデータを共有しており、Status=Sharedであると、キャッシュメモリ32内のStatusを無効化(Invalidate)するとともに、履歴テーブル42内の無効化履歴テーブルIHTに対して、下位アドレスADD1で選択したラインに上位アドレスADD2をタグ部401へ、値「1」を無効ビット402へ、ノード番号403へノード番号“1”を含む無効化履歴情報を登録する。また、この例の場合、他のノード3〜6へ無効化要求はミスヒットとなるので、履歴テーブル43〜46内の無効化履歴テーブルへの書き込みは行わない。そして、キャッシュコントローラ21はキャッシュメモリ31のデータが書き換えるとともに、キャッシュメモリ31内のStatusをModifiedに変更する。
第1のノード1において、CPU11から書き込み命令が実施されキャッシュメモリ31のステータスが共有(Shared)であり、履歴テーブル41内のRHT=“0”の無効である場合、第1のノード1は各ノードへ無効化要求をブロードキャストする。もし第2のノード2内のキャッシュメモリ32がデータを共有しており、Status=Sharedであると、キャッシュメモリ32内のStatusを無効化(Invalidate)するとともに、履歴テーブル42内の無効化履歴テーブルIHTに対して、下位アドレスADD1で選択したラインに上位アドレスADD2をタグ部401へ、値「1」を無効ビット402へ、ノード番号403へノード番号“1”を含む無効化履歴情報を登録する。また、この例の場合、他のノード3〜6へ無効化要求はミスヒットとなるので、履歴テーブル43〜46内の無効化履歴テーブルへの書き込みは行わない。そして、キャッシュコントローラ21はキャッシュメモリ31のデータが書き換えるとともに、キャッシュメモリ31内のStatusをModifiedに変更する。
(2)他ノードからコヒーレントリード要求を受けた場合
第1のCPU11があるアドレスのデータのリード要求をした場合に、そのアドレスのデータが第1のキャッシュメモリ31に存在せずにミスヒットし、履歴テーブル41内の無効化履歴テーブルも無効IS=0であった場合、コヒーレントリード要求を各ノードに発する。
第1のCPU11があるアドレスのデータのリード要求をした場合に、そのアドレスのデータが第1のキャッシュメモリ31に存在せずにミスヒットし、履歴テーブル41内の無効化履歴テーブルも無効IS=0であった場合、コヒーレントリード要求を各ノードに発する。
(2−1)コヒーレントリード要求を受けた各ノード内のキャッシュメモリ32〜36のうちヒットしないものは、ミスヒットであり、コヒーレントリード履歴テーブルへのアクセスはしない。
(2−2)コヒーレントリード要求を受けた各キャッシュメモリ32〜36のうちどれかがヒットしたとき、例えばキャッシュメモリ32がStatus=Exclusiveでヒットすれば、キャッシュメモリ32のStatusをSharedに変更し、履歴テーブル42内のコヒーレントリード履歴テーブルに下位アドレスADD1で以下の情報を書き込む。[1]タグ部501へ上位アドレスADD2を、[2]リードビット部502に“1”を、[3]ノード番号部503にコヒーレントリード要求を発したノードの番号を書き込む。次に、要求ノードに対しヒットした旨を報告し、リードデータはメインメモリ51より読み出され、要求ノードに送られる。要求側ノード内のキャッシュメモリのStatusはSharedになる。
(2−3)コヒーレントリード要求を受けた各キャッシュメモリ32〜36のうちどれかがヒットしたとき、例えばキャッシュメモリ32がStatus=Modifiedでヒットすれば、キャッシュメモリ32のStatusをSharedに変更し、履歴テーブル42内のコヒーレントリード履歴テーブルに下位アドレスADD1で以下の情報を書き込む。[1]タグ部501へ上位アドレスADD2を、[2]リードビット部502に“1”を、[3]ノード番号部503にコヒーレントリード要求を発したノードの番号を書き込む。次に、要求ノードに対しヒットした旨を報告し、キャッシュメモリ32より読み出したデータはメインメモリ51に書き戻すと共に、要求元ノードに送られる。要求元ノード内のキャッシュメモリのStatusもSharedになる。
(2−4)コヒーレントリード要求を受けた各キャッシュメモリ32〜36のうちどれかがヒットしたとき、例えばキャッシュメモリ32及び33がデータを共有していれば、両キャッシュメモリでStatus=Sharedでヒットする。この場合、両履歴テーブル42内のコヒーレントリード履歴テーブルに下位アドレスADD1でリードヒット部502に対し“0”を書き込み無効に変更する。これは、図5では履歴テーブル内のコヒーレントリード履歴テーブル503には1つのノード番号しか記憶することができない、つまり、コヒーレントリード履歴テーブルが有効なときはコヒーレントリード要求は要求元のノードから他の1つノードにのみ発することなる。よって、3つ以上のノードでデータを共有し、共有しているどれか1つのノードより他のノードへ無効化要求を出す場合は、2つのノードへ要求を発しなければならないが、図5ではその機能はないので、ブロードキャストつまり全ノードに向けて発するようにしなければならない。よって、コヒーレントリード履歴テーブルを無効化するように書き込みを行う。勿論、コヒーレントリード履歴テーブルを拡張し、2つのノード番号を記憶できるようにすれば、3つのノードでデータを共有する場合でも、本実施形態の効力を発揮することができる。さらに、それを拡張したのが図10の実施形態である。図10の例では、コヒーレントリード要求を発した全てのノードを記憶するため、コヒーレントリード履歴テーブルRHTにノードマップ部902を設け、この各ビットが各ノードと一対一で対応しており、2つ以上のノードからコヒーレントリード要求を受けてもどのノードから要求をうけたか全て記憶することができる。次に、要求ノードに対しヒットした旨を報告し、リードデータはメインメモリ51より読み出され、要求ノードに送られる。要求側ノード内のキャッシュメモリのStatusはSharedになる。
(3)ノードがコヒーレントリード要求を発する場合
ノード1内のCPU11がキャッシュメモリ31を読み出したとき、キャッシュメモリ31内に必要なデータが無い、つまりキャッシュメモリのStatusが無効あるいはミスヒットであるとき、キャッシュコントローラ21は履歴テーブル内の無効化テーブルIHTを、キャッシュメモリ31をアクセスしたのと同じアドレスで読み出しを行う。無効化履歴テーブルIHTは、下位アドレスADD1に対応する上位アドレスを示すタグ部401、無効ビット402及びノード番号403を出力する。無効化履歴テーブルIHTに無効化履歴情報が登録されていれば、無効ビット402は値「1」である。ノード番号403は、例えば第2のノード2の番号がノード番号INとして出力される。比較器404は、無効化履歴テーブルIHTにより出力されたタグ部401と上位アドレスADD2とを比較し、両者が一致すれば「1」を出力し、両者が一致しなければ「0」を出力する。論理積回路405は、比較器404の出力値と、無効化履歴テーブルIHTにより出力される無効ビット402との論理積値を、無効ステートISとして出力する。
ノード1内のCPU11がキャッシュメモリ31を読み出したとき、キャッシュメモリ31内に必要なデータが無い、つまりキャッシュメモリのStatusが無効あるいはミスヒットであるとき、キャッシュコントローラ21は履歴テーブル内の無効化テーブルIHTを、キャッシュメモリ31をアクセスしたのと同じアドレスで読み出しを行う。無効化履歴テーブルIHTは、下位アドレスADD1に対応する上位アドレスを示すタグ部401、無効ビット402及びノード番号403を出力する。無効化履歴テーブルIHTに無効化履歴情報が登録されていれば、無効ビット402は値「1」である。ノード番号403は、例えば第2のノード2の番号がノード番号INとして出力される。比較器404は、無効化履歴テーブルIHTにより出力されたタグ部401と上位アドレスADD2とを比較し、両者が一致すれば「1」を出力し、両者が一致しなければ「0」を出力する。論理積回路405は、比較器404の出力値と、無効化履歴テーブルIHTにより出力される無効ビット402との論理積値を、無効ステートISとして出力する。
無効化履歴テーブルIHTにそのアドレスの無効化履歴情報が登録されている場合には、無効ステートISが「1」になり、登録されているノード番号INが有効と判断される。これに対し、無効化履歴テーブルIHTにそのアドレスの無効化履歴情報が登録されていない場合には、無効ステートISが「0」になる。
キャッシュコントローラ21は、履歴テーブルの出力、無効ステートISが“1”であった場合、ノード番号INが示す番号、例えば“2”であれば2番のノードに対してのみ、そのアドレスを含むコヒーレントリード要求を出力するべく、スイッチSW12のみオンにし、コヒーレントリードを実行する。よって、全てのスイッチパスがこのコヒーレントリードのみに占有されなくなり、処理システムの性能を向上させることができる。また、必要なデータを有していないノード内のキャッシュメモリに対するコヒーレントリードが発生しなくなり、CPUのアクセスを遅延させる原因を減少させることができる。
なぜノード2のみにコヒーレントリード要求を出せば良いのかを説明する。ノード1及び2がデータを共有していた場合、ノード2がこのデータを書き換えようとすると、他のノード1、3〜6へ無効化要求を発する。ノード1内ではこの無効化要求がヒットするので、(1)で述べたように、当該キャッシュラインを無効化するとともに、無効化履歴テーブルにこの情報の無効化アドレス及びノード番号を書き込んでおく。その後、ノード1内で当該キャッシュラインを読み出そうとすると、既に無効化されているのでキャッシュミスとなるが、このキャッシュラインを無効化したノードは、無効化履歴テーブルを読み出せば、1番のノードであることがわかる。つまり過去にデータを共有していたノード1が、今必要としているデータを有している可能性が高いことがわかる。よって1番のノードにのみコヒーレントリード要求を発するだけでよいことがわかる。もしノード1にデータが無い場合は、他の全てのノードへコヒーレントリード要求を発する。
キャッシュコントローラ21は、履歴テーブルの出力の無効ステートISが“0”であった場合には、すべての他のノード2〜6にそのアドレスを含むコヒーレントリード要求を出力する。
(4)ノードが無効化要求を出す場合
例えば、ノード1とノード2があるアドレスのデータを共有していて、ノード1内のCPU11が当該アドレスにデータの書き込みを実行しようとすると、キャッシュメモリ31を読み出し、Sharedでヒットする。その場合、キャッシュコントローラ21は履歴テーブル41内のコヒーレントリード履歴テーブルを、キャッシュメモリをアクセスした同じアドレスで読み出す。コヒーレントリード履歴テーブルの出力であるリードビット502が“1”の有効であり、タグ部501のデータと入力された上位アドレスADD2が一致するとヒット(RS=“1”)となり、ノード番号部503のデータRNが有効であることを示す。RS=“1”の有効であるときは、キャッシュコントローラ21は、データRNで示す番号=2のノードにのみ無効化要求を発すべく、スイッチSW12のみオンにし、無効化要求を発行する。よって、全てのスイッチパスがこの無効化要求のみに占有されなくなり、処理システムの性能を向上させることができる。無効化要求を受けたノード2内では当該キャッシュラインを無効化すると共に無効化履歴テーブルに対してその情報を書き込む。また、データを共有していないノード内のキャッシュメモリに対する無効化のためのアクセスが発生しなくなり、CPUのアクセスを遅延させる原因を減少させることができる。無効化を実施後、ノード1内でキャッシュメモリ31のデータを書き換え、StatusをModifiedに変更する。
例えば、ノード1とノード2があるアドレスのデータを共有していて、ノード1内のCPU11が当該アドレスにデータの書き込みを実行しようとすると、キャッシュメモリ31を読み出し、Sharedでヒットする。その場合、キャッシュコントローラ21は履歴テーブル41内のコヒーレントリード履歴テーブルを、キャッシュメモリをアクセスした同じアドレスで読み出す。コヒーレントリード履歴テーブルの出力であるリードビット502が“1”の有効であり、タグ部501のデータと入力された上位アドレスADD2が一致するとヒット(RS=“1”)となり、ノード番号部503のデータRNが有効であることを示す。RS=“1”の有効であるときは、キャッシュコントローラ21は、データRNで示す番号=2のノードにのみ無効化要求を発すべく、スイッチSW12のみオンにし、無効化要求を発行する。よって、全てのスイッチパスがこの無効化要求のみに占有されなくなり、処理システムの性能を向上させることができる。無効化要求を受けたノード2内では当該キャッシュラインを無効化すると共に無効化履歴テーブルに対してその情報を書き込む。また、データを共有していないノード内のキャッシュメモリに対する無効化のためのアクセスが発生しなくなり、CPUのアクセスを遅延させる原因を減少させることができる。無効化を実施後、ノード1内でキャッシュメモリ31のデータを書き換え、StatusをModifiedに変更する。
なぜノード2のみに無効化要求を発すれば良いかを説明する。この例の前提として、ノード1とノード2がデータを共有と書いたが、共有する前では、例えばまずノード1内のキャッシュメモリ31があるアドレスのデータを既にメインメモリ51から読み込んできており、その後、ノード2で同一アドレスのデータが必要になると、ノード2はコヒーレントリード要求でデータを取り込むが、その時、ノード1はこのコヒーレントリードに応答して、キャッシュメモリ31のStatusをSharedにするとともに、履歴テーブル41内のコヒーレントリード履歴テーブルに対し、(2)で説明したように当該アドレス及びノード番号“2”の情報を書き込む。つまり、ノード1内では当該アドレスのデータを、どのノード2と共有しているのがわかっている。よって、ノード1が当該アドレスに対し無効化要求発する場合、ノード2に対してのみ発すれば良いことがわかる。
コヒーレントリード履歴テーブルの例として図10を用いて説明すると、例えば、ノード1、2、3があるアドレスのデータを共有していて、ノード1内のCPU11が当該アドレスにデータの書き込みを実行しようとすると、キャッシュメモリ31を読み出し、Sharedでヒットする。その場合、キャッシュコントローラ21は履歴テーブル41内のコヒーレントリード履歴テーブルを、キャッシュメモリをアクセスした同じアドレスで読み出す。コヒーレントリード履歴テーブルの出力であるタグ部501のデータと入力された上位アドレスADD2が一致し、ノードビット部のどれかが“1”であればヒット(RS=“1”)となり、ノードビット部502のデータRNが有効であることを示す。RS=“1”の有効であるときは、キャッシュコントローラ21は、データRNで示すビット=2と3のノードにのみ無効化要求を発すべく、スイッチSW12及びSW13のみオンにし、無効化要求を発行する。
キャッシュコントローラ21は履歴テーブル41の出力RS=“0”である時はコヒーレントリード要求を全てのノードへ発する。
図6は、CPUがキャッシュリード・ミスヒット時の処理を示すフローチャートである。キャッシュヒットすればキャッシュメモリの内容をCPUが読み込んで終了である。キャッシュミスヒット時、第2のノード2の処理を例に説明するが、他のノード1,3〜6も第2のノード2と同様の処理を行う。第2のCPU12があるアドレスのデータのリード要求をした場合に、そのアドレスのデータが第2のキャッシュメモリ32に存在せずにミスヒットした場合、図6の処理を行う。
ステップS601では、第2のキャッシュコントローラ22は、上記のリード要求のアドレスのうちの下位アドレスADD1を入力アドレスとして自己の無効化履歴テーブルIHTを読み出す。また上位アドレスADD2は自己の比較器404の片側の入力となる。無効化履歴テーブルIHTは、下位アドレスADD1を入力アドレスとして、タグ部401、無効ビット402及びノード番号403を出力する。無効化履歴テーブルIHTにそのアドレスの無効化履歴情報が登録されている場合には、無効ステートISが「1」になり、登録されているノード番号INが有効となる。ステップS602に進む。これに対し、無効化履歴テーブルIHTにそのアドレスの無効化履歴情報が登録されていない場合には、無効ステートISが「0」になり、ステップS604に進む。
ステップS602では、第2のキャッシュコントローラ22は、ノード番号INが示す例えば第1のノード1にのみ、ユニキャストで、コヒーレントリード要求を出力する。
次に、ステップS603では、コヒーレントリード要求を受けたノード11においてキャッシュメモリがミスヒットである場合には、ノード2内のキャッシュコントローラ22はノード1内に必要とするデータあろうと判断したが、そこにはデータが無かったことになる。このようなことは、キャッシュメモリ31の容量が小さいため他のアドレスのデータが必要となり、書き換えられてしまった場合に発生する。この場合、ステップS604に進む。また、キャッシュコントローラ22は、ノード1からの回答がキャッシュヒットであった場合には、ステップS608に進む。
ステップS604では、キャッシュコントローラ22は、すべての他のノード1,3〜6に含むコヒーレントリード要求を、ブロードキャストで出力する。なお、上記のステップS602を通過した場合には、ステップS602で、既にコヒーレントリード要求を出力したノードについては、再度、コヒーレントリード要求を出力しなくてよい。
次に、ステップS605では、キャッシュコントローラ22が発したコヒーレントリード要求に対し、他のノード1,3〜6全てがキャッシュミスヒットである場合には、ステップS606に進む。他のノード1,3〜6の内1つでもキャッシュヒットがあれば、ステップS608に進む。
ステップS606では、ノード2が必要とするデータは他のノード内に無いことわかったので、要求元のキャッシュコントローラ22は、そのアドレスのデータをメインメモリコントローラ52を通じてメインメモリ51から読み出す。
次に、ステップS607では、要求元のキャッシュコントローラ22は、メインメモリから読み出したデータをそのアドレスに対応するキャッシュメモリ32にデータを書き込むとともにCPU12はそのデータを取り込む。キャッシュメモリ32のステータスを排他状態Eする。以上で、リード処理が終了する。
ステップS608以下では、ノード2よりのコヒーレントリード要求に対し、キャッシュヒットしたノードのみが対象となる。ヒットしなったノードは終了となる。
ステップS608では、キャッシュコントローラ21,23〜26は、それぞれ、そのステータス302が排他状態Eである場合にはステップS609に進み、そのステータス302が共有状態Sである場合にはステップS611に進み、そのステータス302が変更済み状態Mである場合にはステップS614に進む。
ステップS609では、ノード1,3〜6のキャッシュコントローラ21,23〜26は、キャッシュメモリ31,33〜36内のコヒーレントリード要求のあったアドレスに対応するキャッシュラインのステータス302を共有状態Sに変更する。
次に、ステップS610では、ノード1,3〜6のキャッシュコントローラ21,23〜26は、コヒーレントリード履歴テーブルRHTに対して、コヒーレントリード要求を発したノード2のアドレスの下位アドレスADD1を入力アドレスとして、上位アドレス(タグ)501、値「1」のリードビット502、及び要求元のノード2のノード番号503を登録する。その後、ステップS612に進む。
ステップS611では、ノード1,3〜6のキャッシュコントローラ21,23〜26は、コヒーレントリード履歴テーブルRHTに対して、コヒーレントリード要求を発したノード2のアドレスの下位アドレスADD1を入力アドレスとしてリードビット502を「0」にして無効にする。その後、ステップS612に進む。
ステップS612では、要求元のキャッシュコントローラ22は、リードしようとする最新のデータがメインメモリにあると判断し、必要とするアドレスのデータをメインメモリ51から読み出す。その後、ステップS613に進む。
ステップS614では、ノード1,3〜6のキャッシュコントローラ21,23〜26は、キャッシュメモリ31,33〜36内のコヒーレントリード要求のあったアドレスに対応するキャッシュラインのステータス302を共有状態Sに変更する。
次に、ステップS615では、ノード1,3〜6のキャッシュコントローラ21,23〜26は、コヒーレントリード履歴テーブルRHTに対して、コヒーレントリード要求を発したノード2のアドレスの下位アドレスADD1を入力アドレスとして、上位アドレス(タグ)501、値「1」のリードビット502、及び要求元のノード2のノード番号503を登録する。
次に、ステップS616では、コヒーレントリードされたキャッシュメモリのステータスがM、つまり最新のデータがキャッシュメモリ31,33〜36のいずれかに存在することを意味するので、そのデータが存在するノード1,3〜6のキャッシュコントローラ21,23〜26は、キャッシュメモリ31,33〜36か読み出したデータを、メインメモリ51に書き戻す。それとともに、そのデータを要求元のノード2に返送する。その後、ステップS613に進む。
ステップS613では、要求元のキャッシュコントローラ22は、取得した最新のデータを、キャッシュメモリ32に書き込む。それと同時に、CPU12は、そのデータを取り込む。そして当該のキャッシュラインのステータス302は共有状態Sになる。以上で、リード処理が終了する。
図7は、第1のノード1の書き込み処理を示すフローチャートである。なお、このフローチャートはCPUがライトしようとしたアドレスに対しキャッシュヒットした時のみの図である。以下、ノード1の処理を例に説明するが、他のノード2〜6も第1のノード1と同様の処理を行う。第1のCPU11が自己のキャッシュメモリ31内のあるアドレスのデータのライト要求をした場合、図7の処理を行う。
ステップS701では、キャッシュコントローラ21は、自己のキャッシュメモリ31内の書き込みしようとしたアドレスがキャッシュラインにヒットし対応するステータス302が変更済み状態M又は排他状態Eである場合にはステップS705に進み、共有状態Sである場合にはステップS702に進む。なお、そのステータス302が無効状態Iである、あるいはミスヒットの場合には、図6で示すリードミスの処理を行い、その後図7の処理を行う。
ステップS702では、キャッシュコントローラ21は、上記のライト要求のアドレスのうちの下位アドレスADD1をアドレス入力としてコヒーレントリード履歴テーブルRHTに読み出し、リードビット502が“1”の有効であり、上位アドレスADD2とタグ部501を比較器504で比較し、一致すればRS=1となり、ノード番号503の出力RNが有効であることを示す。つまり、コヒーレントリード履歴テーブルRHTにそのアドレスのコヒーレントリード履歴情報が登録されている場合には、リードステートRSが「1」になり、登録されているノード番号RNが有効となり、ステップS703に進む。これに対し、コヒーレントリード履歴テーブルRHTにそのアドレスのコヒーレントリード履歴情報が登録されていない場合には、リードステートRSが「0」になり、ステップS706に進む。
ステップS703では、キャッシュコントローラ21は、ノード番号RNが示す例えば第2のノード2にのみに対し、ユニキャストで、無効化要求を出力する。その後、ステップS704に進む。
ステップS706では、キャッシュコントローラ21は、すべての他のノード2〜6に無効化要求を、ブロードキャストで出力する。その後、ステップS704に進む。
ステップS704では、無効化要求を出したキャッシュコントローラ21に対しキャッシュヒットしなかったノードでは何もせず、ステップS705に進み、ヒットしたノード、例えば第2のキャッシュコントローラ22では、ステップS707に進む。
ステップS707では、ノード2〜6のキャッシュコントローラ22〜26は、自己のキャッシュメモリ32〜36内の無効化要求のあったキャッシュラインに対応するステータス302を無効状態Iに変更する。
次に、ステップS708では、ノード2〜6のキャッシュコントローラ22〜26は、自己の無効化履歴テーブルIHTに対して、上記の無効化要求のアドレスの下位アドレスADD1をアドレス入力として、上位アドレス(タグ)401、値「1」の無効ビット402及び要求元の第1のノード1をノード番号部403に登録する。その後、ステップS705に進む。
ステップS705では、要求元の第1のCPU11は、自己のキャシュメモリ31に対して、上記のライト要求に従い、そのデータをデータ部303に書き込むとともに、変更済み状態Mにステータス302を変更する。以上で、ライト処理が終了する。
なお、図1では、スイッチSW12〜SW67を用いた相互結合網を例に説明したが、リングバスや共通バスといった他の相互結合網でもよい。また、本実施形態ではキャッシュメモリの構成がダイレクトマップ方式としたがセットアソシアティブ方式とした場合は、そのウェイ数に応じた履歴テーブルを用意すれば対応できる。また、書き込みはライトバック方式としたがライトスルー方式でも問題ない。また、本実施形態での図3のステータス302は、無効状態I、共有状態S、排他状態E及び変更済み状態Mのうちのいずれを示す、いわゆるMESI型の例で説明したが、MOESIといった他の方式ものでもよい。
本実施形態では、複数のCPUが相互に関連して情報処理を行う処理システムにおいて、スヌープ要求を受けるべきCPUを特定化することにより、複数のCPUが無条件にすべての他のCPUにスヌープ要求を出力することが少なくなり、相互結合網上のデータ輻輳が低下することで見かけ上相互結合網の性能が向上する。また、キャッシュメモリは、スヌープ要求を受ける回数が減り、本来のCPUからの要求に専念することができ、処理性能向上に寄与する。
上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
1〜6 ノード
11〜16 中央演算処理装置
21〜26 キャッシュコントローラ
31〜36 キャッシュメモリ
41〜46 履歴テーブル
51 メインメモリ
52 メインメモリコントローラ
11〜16 中央演算処理装置
21〜26 キャッシュコントローラ
31〜36 キャッシュメモリ
41〜46 履歴テーブル
51 メインメモリ
52 メインメモリコントローラ
Claims (5)
- メインメモリのデータの一部のコピーを記憶するキャッシュメモリと、
前記キャッシュメモリに対してデータをアクセスする中央処理単位と、
前記キャッシュメモリを制御するキャッシュコントローラと、
無効化履歴テーブルとを有し、
前記キャッシュコントローラは、他の処理装置から無効化要求が入力されると、前記無効化履歴テーブルに前記無効化要求が持つ無効化要求アドレス及び前記無効化要求を出力した前記他の処理装置の識別子の組みを登録し、
前記中央処理単位が前記キャッシュメモリに記憶されていない第1のアドレスのデータをリードしようとすると、前記キャッシュコントローラは、前記第1のアドレスが前記無効化履歴テーブルに登録されている場合には、前記第1のアドレスに対応する前記無効化要求を出力した前記他の処理装置の識別子が示す前記他の処理装置に前記第1のアドレスを含むコヒーレントリード要求を出力し、前記第1のアドレスが前記無効化履歴テーブルに登録されていない場合には、すべての他の処理装置に前記第1のアドレスを含むコヒーレントリード要求を出力することを特徴とする処理装置。 - 前記キャッシュコントローラは、前記無効化履歴テーブルに登録されている前記第1のアドレスに対応する前記無効化要求を出力した前記他の処理装置の識別子が示す前記他の処理装置に前記第1のアドレスを含むコヒーレントリード要求を出力した結果、前記他の処理装置から前記第1のアドレスのデータが無効状態である旨を入力した場合には、すべての他の処理装置に対し前記第1のアドレスを含むコヒーレントリード要求を出力することを特徴とする請求項1記載の処理装置。
- メインメモリのデータの一部のコピーを記憶するキャッシュメモリと、
前記キャッシュメモリに対してデータをアクセスする中央処理単位と、
前記キャッシュメモリを制御するキャッシュコントローラと、
コヒーレントリード履歴テーブルとを有し、
前記キャッシュコントローラは、他の処理装置からコヒーレントリード要求が入力されると、前記コヒーレントリード履歴テーブルに前記コヒーレントリード要求が持つコヒーレントリード要求アドレス及び前記コヒーレントリード要求を出力した前記他の処理装置の識別子の組みを登録し、
前記中央処理単位が前記キャッシュメモリの第2のアドレスのデータを書き換えようとすると、前記キャッシュコントローラは、前記第2のアドレスが前記コヒーレントリード履歴テーブルに登録されている場合には、前記コヒーレントリード履歴テーブルに登録されている前記第2のアドレスに対応する前記他の処理装置の識別子が示す前記他の処理装置に前記第2のアドレスを含む無効化要求を出力し、前記第2のアドレスが前記コヒーレントリード履歴テーブルに登録されていない場合には、すべての他の処理装置に前記第2のアドレスを含む無効化要求を出力することを特徴とする処理装置。 - 前記コヒーレントリード履歴テーブルに既にコヒーレントリード要求アドレス及び前記他の処理装置の識別子の組みを登録済であり、さらに他の処理装置より同一アドレスで前記コヒーレントリード履歴テーブルに対し登録要求があった場合、前記コヒーレントリード履歴テーブルの前記同一アドレスのデータ登録を無効にすることを特徴とする請求項3記載の処理装置。
- メインメモリのデータの一部のコピーを記憶するキャッシュメモリと、
前記キャッシュメモリに対してデータをアクセスする中央処理単位と、
前記キャッシュメモリを制御するキャッシュコントローラと、
コヒーレントリード履歴テーブルとを有し、
前記キャッシュコントローラは、他の処理装置からコヒーレントリード要求が入力されると、前記コヒーレントリード履歴テーブルに前記コヒーレントリード要求が持つコヒーレントリード要求アドレス及び前記コヒーレントリード要求を出力した前記他の処理装置に相当するビットに対し、コヒーレントリード要求があったことを示すように変更し、
前記キャッシュコントローラは、前記中央処理単位が前記キャッシュメモリの第3のアドレスのデータを書き換える要求を入力すると、前記第3のアドレスが前記コヒーレントリード履歴テーブルに登録されている場合には、前記コヒーレントリード履歴テーブルにコヒーレントリード要求があったことを示すビット位置に相当する他の処理装置に対し、前記第3のアドレスを含む無効化要求を出力し、前記第3のアドレスが前記コヒーレントリード履歴テーブルに登録されていない場合には、すべての他の処理装置に前記第3のアドレスを含む無効化要求を出力することを特徴とする処理装置。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013067130A JP2014191622A (ja) | 2013-03-27 | 2013-03-27 | 処理装置 |
TW103104431A TWI550506B (zh) | 2013-03-27 | 2014-02-11 | 處理裝置 |
US14/181,756 US20140297963A1 (en) | 2013-03-27 | 2014-02-17 | Processing device |
KR1020140018736A KR101529003B1 (ko) | 2013-03-27 | 2014-02-18 | 처리 장치 |
CN201410064639.6A CN104077236A (zh) | 2013-03-27 | 2014-02-25 | 处理设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013067130A JP2014191622A (ja) | 2013-03-27 | 2013-03-27 | 処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014191622A true JP2014191622A (ja) | 2014-10-06 |
Family
ID=51598504
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013067130A Pending JP2014191622A (ja) | 2013-03-27 | 2013-03-27 | 処理装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20140297963A1 (ja) |
JP (1) | JP2014191622A (ja) |
KR (1) | KR101529003B1 (ja) |
CN (1) | CN104077236A (ja) |
TW (1) | TWI550506B (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021515287A (ja) * | 2018-02-23 | 2021-06-17 | マイクロソフト テクノロジー ライセンシング,エルエルシー | 上位レベルキャッシュへの要求によるキャッシュへのインフラックスのログ記録 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170192886A1 (en) * | 2014-07-31 | 2017-07-06 | Hewlett Packard Enterprise Development Lp | Cache management for nonvolatile main memory |
US9934154B2 (en) * | 2015-12-03 | 2018-04-03 | Samsung Electronics Co., Ltd. | Electronic system with memory management mechanism and method of operation thereof |
US10180919B1 (en) * | 2015-12-29 | 2019-01-15 | Amazon Technologies, Inc. | Broadcasting reads to multiple modules |
US10185671B1 (en) * | 2015-12-29 | 2019-01-22 | Amazon Technologies, Inc. | Broadcasting writes to multiple modules |
US11138121B2 (en) * | 2017-11-20 | 2021-10-05 | Samsung Electronics Co., Ltd. | Systems and methods for efficient cacheline handling based on predictions |
DE102018005618B4 (de) * | 2018-07-17 | 2021-10-14 | WAGO Verwaltungsgesellschaft mit beschränkter Haftung | Vorrichtung zur gepufferten Übertragung von Daten |
US20230280940A1 (en) * | 2022-03-01 | 2023-09-07 | Micron Technology, Inc. | Memory controller for managing raid information |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09293060A (ja) * | 1996-04-24 | 1997-11-11 | Hitachi Ltd | キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム |
JPH09311820A (ja) * | 1996-03-19 | 1997-12-02 | Hitachi Ltd | マルチプロセッサシステム |
US6038644A (en) * | 1996-03-19 | 2000-03-14 | Hitachi, Ltd. | Multiprocessor system with partial broadcast capability of a cache coherent processing request |
US6526481B1 (en) * | 1998-12-17 | 2003-02-25 | Massachusetts Institute Of Technology | Adaptive cache coherence protocols |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09212465A (ja) * | 1996-01-31 | 1997-08-15 | Toshiba Corp | メモリ割り当て装置 |
US6032228A (en) * | 1997-11-26 | 2000-02-29 | International Business Machines Corporation | Flexible cache-coherency mechanism |
US6725341B1 (en) * | 2000-06-28 | 2004-04-20 | Intel Corporation | Cache line pre-load and pre-own based on cache coherence speculation |
US20040199727A1 (en) * | 2003-04-02 | 2004-10-07 | Narad Charles E. | Cache allocation |
US8108908B2 (en) * | 2008-10-22 | 2012-01-31 | International Business Machines Corporation | Security methodology to prevent user from compromising throughput in a highly threaded network on a chip processor |
-
2013
- 2013-03-27 JP JP2013067130A patent/JP2014191622A/ja active Pending
-
2014
- 2014-02-11 TW TW103104431A patent/TWI550506B/zh not_active IP Right Cessation
- 2014-02-17 US US14/181,756 patent/US20140297963A1/en not_active Abandoned
- 2014-02-18 KR KR1020140018736A patent/KR101529003B1/ko not_active IP Right Cessation
- 2014-02-25 CN CN201410064639.6A patent/CN104077236A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09311820A (ja) * | 1996-03-19 | 1997-12-02 | Hitachi Ltd | マルチプロセッサシステム |
US6038644A (en) * | 1996-03-19 | 2000-03-14 | Hitachi, Ltd. | Multiprocessor system with partial broadcast capability of a cache coherent processing request |
JPH09293060A (ja) * | 1996-04-24 | 1997-11-11 | Hitachi Ltd | キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム |
US5987571A (en) * | 1996-04-24 | 1999-11-16 | Hitachi, Ltd. | Cache coherency control method and multi-processor system using the same |
US6526481B1 (en) * | 1998-12-17 | 2003-02-25 | Massachusetts Institute Of Technology | Adaptive cache coherence protocols |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021515287A (ja) * | 2018-02-23 | 2021-06-17 | マイクロソフト テクノロジー ライセンシング,エルエルシー | 上位レベルキャッシュへの要求によるキャッシュへのインフラックスのログ記録 |
JP7334163B2 (ja) | 2018-02-23 | 2023-08-28 | マイクロソフト テクノロジー ライセンシング,エルエルシー | 上位レベルキャッシュへの要求によるキャッシュへのインフラックスのログ記録 |
Also Published As
Publication number | Publication date |
---|---|
KR101529003B1 (ko) | 2015-06-15 |
CN104077236A (zh) | 2014-10-01 |
TWI550506B (zh) | 2016-09-21 |
KR20140118727A (ko) | 2014-10-08 |
TW201447748A (zh) | 2014-12-16 |
US20140297963A1 (en) | 2014-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2014191622A (ja) | 処理装置 | |
US9665486B2 (en) | Hierarchical cache structure and handling thereof | |
US9792210B2 (en) | Region probe filter for distributed memory system | |
US8799588B2 (en) | Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration | |
KR101497002B1 (ko) | 스누프 필터링 메커니즘 | |
US20020009095A1 (en) | Multicast decomposition mechanism in a hierarchically order distributed shared memory multiprocessor computer system | |
US11314644B2 (en) | Cache size change | |
US10810133B1 (en) | Address translation and address translation memory for storage class memory | |
US6973545B2 (en) | System with a directory based coherency protocol and split ownership and access right coherence mechanism | |
US20050010615A1 (en) | Multi-node computer system implementing memory-correctable speculative proxy transactions | |
US7159079B2 (en) | Multiprocessor system | |
EP1611513B1 (en) | Multi-node system in which global address generated by processing subsystem includes global to local translation information | |
CN115203071A (zh) | 默认共享状态缓存一致性协议的应用 | |
US9983994B2 (en) | Arithmetic processing device and method for controlling arithmetic processing device | |
US20040268057A1 (en) | Multi-node system with global access states | |
US6970979B2 (en) | System with virtual address networks and split ownership and access right coherence mechanism | |
US6970980B2 (en) | System with multicast invalidations and split ownership and access right coherence mechanism | |
US7360029B2 (en) | Multi-node computer system in which interfaces provide data to satisfy coherency transactions when no owning device present in modified global access state node | |
US20110138101A1 (en) | Maintaining data coherence by using data domains | |
JP5574039B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US20040260887A1 (en) | Multi-node computer system implementing speculative proxy transactions | |
US20170300414A1 (en) | Delayed Write Through Cache (DWTC) and Method for Operating the DWTC |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20151106 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160630 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160719 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20170207 |