JP4868246B2 - Multiprocessor and memory replacement method - Google Patents
Multiprocessor and memory replacement method Download PDFInfo
- Publication number
- JP4868246B2 JP4868246B2 JP2007236085A JP2007236085A JP4868246B2 JP 4868246 B2 JP4868246 B2 JP 4868246B2 JP 2007236085 A JP2007236085 A JP 2007236085A JP 2007236085 A JP2007236085 A JP 2007236085A JP 4868246 B2 JP4868246 B2 JP 4868246B2
- Authority
- JP
- Japan
- Prior art keywords
- cell
- memory
- copy
- snoop
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/082—Associative directories
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
本発明は、本発明は、スパースディレクトリ方式を採用するマルチプロセッサシステムにおけるメモリの動的リプレース方式に関する。 The present invention relates to a dynamic memory replacement method in a multiprocessor system employing a sparse directory method.
スパースディレクトリ方式を採用するマルチプロセッサシステムにおけるメモリの動的リプレースでは、リプレース前のメモリからリプレース後のメモリへデータのコピーが行われる。フルディレクトリ方式が、全メモリについてステータスとキャッシュしているプロセッサを管理するのに対し、スパースディレクトリ方式はメモリの一部についてのみ管理を行う方式である。スパースディレクトリ方式を採用するマルチプロセッサシステムにおける、関連するメモリの動的リプレースの方式について、図2を参照して説明する。図2は、複数のセルから構成されるマルチプロセッサシステムの一例を示す図である。図2において、セル100に備えるメモリ111からセル200に備えるメモリ214へ動的リプレースを行う場合を説明する。セル100、200は、1以上のプロセッサ、1以上のメモリ、及びセルコントローラを備える。
In the dynamic replacement of the memory in the multiprocessor system adopting the sparse directory method, data is copied from the memory before the replacement to the memory after the replacement. The full directory method manages the status and the cached processor for all memories, whereas the sparse directory method manages only a part of the memory. A related memory dynamic replacement method in a multiprocessor system employing a sparse directory method will be described with reference to FIG. FIG. 2 is a diagram illustrating an example of a multiprocessor system including a plurality of cells. A case where dynamic replacement is performed from the
関連する方式では、メモリ間のデータコピー後にコピー先セルコントローラ220のスパースディレクトリを更新する。このため、メモリ間のデータコピー後に一度もアクセスされていないラインに対するアクセスの場合、全プロセッサにスヌープのブロードキャストを行う必要があった。さらに、スパースディレクトリでは全メモリのステータスを管理することができないので、コヒーレンシを保証するために、メモリのデータコピー後にコピー先の全メモリ214を一度リードし、スパースディレクトリを更新する必要があった。
In the related method, the sparse directory of the copy
スパースディレクトリ方式を採用するマルチプロセッサシステムにおけるメモリのデータコピー及びその終了後の動作を図9のフローチャートを使って説明する。 The memory data copy and the operation after the end in the multiprocessor system adopting the sparse directory method will be described with reference to the flowchart of FIG.
まず、コピー元プロセッサ101のメモリ111からコピー先プロセッサ201のメモリ211へのメモリのデータコピーを行う(S1001)。具体的には、次のような動作を行う。プロセッサ102は、システムFWから指示を受け、コピー元プロセッサ101に接続するメモリ111の全ラインを、キャッシュライン毎にリードし、コピー元プロセッサ101のメモリに対してライトを行う。コピー元プロセッサ101は、ライト要求を受けるたびにメモリ111に対して、ライトを行うとともに、コピー先プロセッサ204に接続するメモリ214に対しライトを転送する(ライト要求を行う)。このようにして、メモリのデータコピーを行う。
First, the memory data is copied from the
メモリ111の全ラインのリードおよびライトが完了した後に、システムFWはシステム内のアドレスとメモリの対応を示すレジスタをコピー元のメモリ111からコピー先のメモリ214に変更し、コピー元プロセッサ101とメモリ111をシステムから切り離す(S1002)。次に、システムFWから指示により、システム内の任意のプロセッサは、コピー先プロセッサ204に接続するメモリ214をキャッシュライン毎にリードする(S1003)。コピー先プロセッサ204は、接続する全てのプロセッサ201、202、203とセルコンローラ206に、スヌープを送信する(S1004)。スヌープを受けとったセルコントローラ220は、スパースディレクトリ221にスヌープを受けたラインのステータス情報を保持しているかの判断を行う(S1005)。
After the reading and writing of all the lines of the
スパースディレクトリ221でラインのステータス情報を保持している場合(S1006でYes)、セルコントローラ220は、管理しているステータス情報に基づいてラインをキャッシュしている特定のプロセッサにスヌープを送信し(S1007)、該プロセッサよりスヌープレスポンスを受け取る(S1008)。一方、スパースディレクトリ221でラインのステータス情報を保持していない場合(S1006でNo)、セルコントローラ220は、セル200外の全てのプロセッサに対しスヌープのブロードキャストを行い(S1009)、そのスヌープレスポンスを全て受信する(S1010)。
When the line status information is held in the sparse directory 221 (Yes in S1006), the
次に、セルコントローラ220は、スヌープレスポンスに基づいて、スパースディレクトリ221の更新を行い(S1011)、コピー先プロセッサ204に対し、スヌープレスポンスを送信する(S1012)。コピー先プロセッサ204は、スヌープレスポンスを全て受信し、リクエストを送信したプロセッサにデータを送信する(S1013)。
Next, the
任意のプロセッサは、コピー先メモリ214の全ラインのリードが終了したかを確認し、終了した場合(S1014でYes)、通常の動作に移行し(S1015)、リードしていないラインが残っている場合(S1014でNo)、コピー先メモリ214のキャッシュラインで、リードされていないラインにリードポイントをあわせ、リードを行い(S1016)、ステップS1004からの処理を繰り返す。このようにして、一連の動作をコピー先プロセッサ204のメモリの全キャッシュライン数分行う。
The arbitrary processor confirms whether or not reading of all the lines in the
これにより、セルコントローラ220内のスパースディレクトリ221でセル200外のプロセッサのキャッシュ情報を全て管理する状態になり、プロセッサキャッシュ間コヒーレンシが保証される。また、特許文献1には、分散メモリマルチプロセッサシステムにおけるメモリ移行のためのシステムが開示されている。この技術はメモリの1ラインをコピーする毎に、アクセス先のラインを旧ラインから新ラインへ変更し、変更後のラインのアクセスを旧ラインから新ラインへ転送している。
しかしながら、この関連する方式では、プロセッサキャッシュ間コヒーレンシを保証するため、コピー先メモリの全キャッシュラインをリードし、コピー先セル(上記例ではセル200)外に含まれる全プロセッサにスヌープのブロードキャストを行う必要があった。このため、メモリの動的リプレースの処理時間が長く、またメモリのデータコピー後のリードの間は、他のリクエストのスループットが落ち、性能が低下する問題があった。近年、システムあたりのメモリの容量は増加する傾向にあり、この問題を解決する必要があった。
However, in this related method, in order to guarantee coherency between processor caches, all cache lines in the copy destination memory are read, and snoop broadcast is performed to all processors included outside the copy destination cell (
本発明は、このような事情に鑑みてなされたものであり、スパースディレクトリ方式を採用するマルチプロセッサシステムにおいて、コピー元のスパースディレクトリを用いてコピー先のスパースディレクトリを更新することによって、メモリの動的リプレースの処理を高速化させることを目的とする。 The present invention has been made in view of such circumstances, and in a multiprocessor system employing a sparse directory method, the memory operation is improved by updating the copy destination sparse directory using the copy source sparse directory. The purpose is to speed up the process of automatic replacement.
本発明に係るマルチプロセッサの一態様は、キャッシュメモリを有する1以上のプロセッサと、1以上のメモリとを有するセルを複数備えるマルチプロセッサシステムであって、前記各セルは、他セル内のキャッシュメモリに記録されている自セル内のメモリのデータに関するステータス情報を保持するスパースディレクトリと、コピー元セルとコピー先セルが異なるメモリ間でデータコピーを行う場合、コピー元メモリからコピー先メモリへデータをコピーし、前記コピー元セル内のスパースディレクトリが保持するステータス情報に基づいて、前記コピー先セルのスパースディレクトリを更新するセルコントローラと、を備える。 One aspect of the multiprocessor according to the present invention is a multiprocessor system including a plurality of cells each having one or more processors having a cache memory and one or more memories, wherein each cell is a cache memory in another cell. When copying data between the sparse directory that stores the status information related to the memory data in the own cell and the memory in which the copy source cell and copy destination cell are different, the data is copied from the copy source memory to the copy destination memory. A cell controller that performs copying and updates the sparse directory of the copy destination cell based on status information held in the sparse directory in the copy source cell.
また、本発明に係るメモリのリプレース方法の一態様は、キャッシュメモリを有する1以上のプロセッサと、1以上のメモリとを有するセルを複数備えるマルチプロセッサシステムのメモリリプレース方法であって、他セル内のキャッシュメモリに保持された自セル内のメモリのデータに関するステータス情報を保持し、セルが異なるメモリ間でコピー元メモリからコピー先メモリへデータをコピーし、コピー終了後、前記コピー元メモリへのアクセス先をコピー先メモリへ変更し、前記コピー元セル内のスパースディレクトリが保持するステータス情報に基づいて、前記コピー先セルのスパースディレクトリが保持するステータス情報を更新する。 Another aspect of the memory replacement method according to the present invention is a memory replacement method for a multiprocessor system including a plurality of cells each having one or more processors having a cache memory and one or more memories. Status information regarding the data in the memory in its own cell held in the cache memory of the cell, and copying the data from the copy source memory to the copy destination memory between memories with different cells. The access destination is changed to the copy destination memory, and the status information held in the sparse directory of the copy destination cell is updated based on the status information held in the sparse directory in the copy source cell.
本発明によれば、スパースディレクトリ方式を採用するマルチプロセッサシステムにおいて、コピー元のスパースディレクトリを用いてコピー先のスパースディレクトリを更新することによって、メモリの動的リプレースの処理を高速化させることが可能となる。 According to the present invention, in a multiprocessor system employing a sparse directory system, it is possible to speed up the dynamic replacement process of a memory by updating the copy destination sparse directory using the copy source sparse directory. It becomes.
以下、本発明の実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。各図面において同一の構成または機能を有する構成要素および相当部分には、同一の符号を付し、その説明を省略する。 Hereinafter, embodiments of the present invention will be described with reference to the drawings. For clarity of explanation, the following description and drawings are omitted and simplified as appropriate. In the drawings, components having the same configuration or function and corresponding parts are denoted by the same reference numerals, and description thereof is omitted.
(実施形態1)
本実施形態では、コピー元のスパースディレクトリにコピー元のメモリのキャッシュ状況を反映させ、メモリ間のデータコピー後にコピー元のスパースディレクトリの情報をコピー先のスパースディレクトリへ反映させる一態様を説明する。
(Embodiment 1)
In the present embodiment, an aspect will be described in which the cache state of the copy source memory is reflected in the copy source sparse directory, and the information of the copy source sparse directory is reflected in the copy destination sparse directory after data is copied between the memories.
図1は、本発明の実施形態に係るマルチプロセッサシステムが備えるセルの構成例を示すブロック図である。セル100はマルチプロセッサシステムの一つの単位であり、プロセッサ101、102、103、104、メモリ111、112、113、114、セルコントローラ120を備える。
FIG. 1 is a block diagram illustrating a configuration example of a cell included in a multiprocessor system according to an embodiment of the present invention. The
キャッシュ(キャッシュメモリ)131、132、133、134は、プロセッサ101、102、103、104の内部にメモリのデータを一時的に格納するMESI(Modified Exclusive Shared Invalid)などの一般的なキャッシュプロトコルを採用するキャッシュメモリである。
The cache (cache memory) 131, 132, 133, 134 employs a general cache protocol such as MESI (Modified Exclusive Shared Invalid) that temporarily stores memory data in the
プロセッサ101、102、103、104はメモリ111、112、113、114それぞれと接続され、各メモリのデータの管理を行っている。プロセッサ101〜104とセルコントローラ120は、インタフェース151〜160により、1対1で接続される。
The
メモリ111〜114は各プロセッサからキャッシュライン単位でアクセスされる。1キャッシュラインのビット幅は例えば64バイトで一定であり、メモリアクセスの際に指定されるアドレス(後述する図3のアドレス303)で、キャッシュラインの位置が決定される。
The
セルコントローラ120は、セル100内のメモリ111〜114とセル100外との間のアクセスを制御する。セルコントローラ120は、セル100の外部からのアクセスを受けたときに、メモリ111〜114が任意のプロセッサにキャッシュされているかどうかの情報と、キャッシュされている場合は、そのプロセッサ番号の情報を保持するスパースディレクトリ121を設ける。
The
スパースディレクトリ121は、セル内のメモリ111〜114に関して他セルのプロセッサが保持するキャッシュのステータスを全て管理する。ここで、スパースディレクトリ121は、セル100内のメモリ111〜114の全キャッシュラインより少ないエントリしか持たず、管理可能なエントリ数を越えた時には、他セル内のプロセッサからデータの掃き出しを行わせる機構を有する。
システムFW(Firmware)122は、セルコントローラ120内に設けられ、HW(hardware)の基本的な制御を行うソフトのことである。例えば、今回のメモリ間のデータコピーも、システムFWで制御可能なものの1つということができる。。
The
A system FW (Firmware) 122 is software that is provided in the
なお、図1に示すプロセッサ及びメモリの数は一例を示したものであり、1つのセルに1以上のプロセッサ及びメモリが備えられていればよい。 Note that the number of processors and memories shown in FIG. 1 is an example, and it is sufficient that one cell includes one or more processors and memories.
図2に、図1で示したセル間の接続を示す。図2は、複数のセルから構成されるマルチプロセッサシステムの一例を示す図である。図2では、セル100の他に、セル200、500、550を設けた例を示す。セル200、500、550は、セル100と同様の構成を有するが、図2中では一部省略している。セルコントローラ120、220、520、570はインタフェース251〜256で1対1接続され、セル100、200、500、550間のアクセスを転送する。セル200は、プロセッサ201、202、203、204とメモリ214、セルコントローラ220、セルコントローラ220に設置するスパースディレクトリ221を備える。セル500はプロセッサ501、502、503、504とセルコントローラ520を、セル550はプロセッサ551、552、553、554とセルコントローラ570を備えている。各セル200、500、550は、図1で示したキャッシュ105〜108とメモリ111〜114、スパースディレクトリ121、及びシステムFW122に対応する構成要素が存在するが、説明で使用しないため省略する。
FIG. 2 shows connections between the cells shown in FIG. FIG. 2 is a diagram illustrating an example of a multiprocessor system including a plurality of cells. FIG. 2 shows an example in which
図3は、本発明の実施形態におけるセル間の通信で使用されるパケットのフォーマットを示す図である。パケット300は、フラグ301、リクエストの種類302、アドレス303、キャッシュステータス304、送信先プロセッサ番号305、返信先プロセッサ番号306、及びデータ307から構成される。
FIG. 3 is a diagram showing a format of a packet used in communication between cells in the embodiment of the present invention. The
フラグ301は、ディレクトリ更新中を示すフラグであり、コピー元セルコントローラまたは、コピー先セルコントローラで使用される。フラグ301は、"0"で通常のパケットであることを示し、"1"でディレクトリ更新するための専用パケットであることを示す。コピー元でもコピー先でもないセルコントローラでは、フラグ301の値を持ちまわる。フラグ301は、図4を用いて後述する、コピー元セルコントローラのリクエスト/スヌープ生成回路410で"1"にセットされ、コピー先セルコントローラの第1調停回路402とライトデータ生成回路406でチェックされる。
The
リクエストの種類302は、パケットが要求するリクエストの種類を示すフィールドであり、リード、リードリプライ、ライト、スヌープ、スヌープレスポンスに対応する値が格納される。リードはメモリからデータを読み出し、データを送信することを要求する。リードリプライは、リードに対する返信であり、読み出したデータをリード要求したプロセッサに送信する。スヌープは、リードされたアドレスのステータス情報をもとに、キャッシュしているプロセッサにキャッシュステータス304で示したステータスに変更することを要求する。スヌープレスポンスはスヌープに対する返信であり、スヌープを受信したプロセッサは、アドレスで示されるキャッシュラインのステータスをスヌープで要求されたステータスに変更した後に、スヌープレスポンスを送信する。
The
アドレス303は、メモリのアドレスを示すフィールドであり、どのメモリのどのキャッシュラインへのアクセスかが示される。また、アドレス303は、スパースディレクトリのエントリを決定するためにも使用される。
An
キャッシュステータス304は、アドレス303で特定されたラインのMESIステータスを示すフィールドである。パケットのリクエストの種類302がリードリプライの場合、キャッシュステータス304は、データ307のステータスを示す。リクエストの種類302がスヌープレスポンス、ライトの場合、キャッシュステータス304は、リクエストの送信元のプロセッサが保持する、アドレス303で特定されたキャッシュラインに対するステータスを示す。リクエストの種類302がリードの場合、キャッシュステータス304は、送信元のプロセッサがアドレス303で特定されたラインに要求するステータスを示す。リクエストの種類302がスヌープの場合は送信先のプロセッサにそのラインに対する変更するステータスを示す。
The
送信先プロセッサ番号305は、起因となるリクエスト(スヌープ、リード、ライト)を送信した先の(受信する)プロセッサ番号を示す。つまり、送信先プロセッサ番号305は、リクエストの種類302がスヌープとスヌープレスポンスの場合、アドレス303で特定されたラインをキャッシュしているプロセッサ番号を示し、リードとリードリプライ、ライトの場合、アクセスしたいメモリが接続しているプロセッサ番号を示す。
The transmission
送信先プロセッサ番号305は、起因となるリクエスト(スヌープ、リード、ライト)を送信するプロセッサ番号を示す。つまり、返信先プロセッサ番号306は、リクエストの種類302がスヌープとスヌープレスポンスの場合、アドレスによって示されるメモリが接続するプロセッサ番号を示し、リードとリードリプライ、ライトの場合、リクエストを送信したプロセッサ番号を示す。コピー元セルコントローラ120から発振するスヌープにおける、返信先プロセッサ番号306値については、図4のリクエスト/スヌープ生成回路410後述する。
The transmission
データ307は、データを格納する部分であり、リードリプライとライト、スヌープレスポンスで使用される。
図4に、本発明の実施形態に係るセルコントローラの構成例を示す。図4では、セル100内のセルコントローラ120を一例として示しているが、他のセル内に備えられるセルコントローラも同様の構成・機能を有する。セルコントローラ120は、図1に示したスパースディレクトリ121、システムFW122に加え、状態フラグ401、第1調停回路402、リクエスト格納バッファ403、スヌープレスポンス格納バッファ404、アドレス生成回路405、ライトデータ生成回路(スパースディレクトリライトデータ生成回路)406、ライトコマンド生成回路407、リードポインタ408、セレクタ409、413、リクエスト/スヌープ生成回路(生成部)410、合成回路411、及び第2調停回路412を備える。
FIG. 4 shows a configuration example of the cell controller according to the embodiment of the present invention. In FIG. 4, the
状態フラグ401は、セルコントローラ120が、通常状態であるか、メモリのデータコピー後のコピー元セルコントローラとして動作している状態であるか、あるいは、メモリのデータコピー後のコピー先セルコントローラとして動作している状態であるかを示すフラグである。状態フラグ401は、システムFW122によって設定される。状態フラグ401のビット数は例えば2ビットであり、[00]で通常状態で動作することを示し、[01]でコピー元セルコントローラとして動作することを示し、[10]でコピー先セルコントローラとして動作することを示し、[11]は使用しない。2ビットの情報を第1調停回路402とライトデータ生成回路406、リクエスト/スヌープ生成回路410に出力する。また、アドレス生成回路405とリードポインタ408のセレクタ条件として出力される。
The
第1調停回路402は、セル100内のプロセッサ101〜104からのアクセス、及び、セル100外のセルコントローラ220、520、570からのアクセスを調停し、リクエスト格納バッファ403またはスヌープレスポンス格納バッファに出力する。第1調停回路402は、パケット300を入力し、状態フラグ401が[00]、[01]の場合は、リクエスト格納バッファ403へ出力を行う。第1調停回路402は、状態フラグ401が[10]の場合、パケット内のスパースディレクトリ121更新中を示すフラグ301のチェックを行い、フラグ301が"1"だった場合は、受信したパケットをスヌープレスポンス格納バッファ404に出力し、フラグ301が"1"でない場合は、リクエスト格納バッファ403に出力する。
The
リクエスト格納バッファ403は、現在セルコントローラ120で実行されているリクエストを全て保持している。また、保持しているリクエストに起因して、リクエスト/スヌープ生成回路410からスヌープが送信された場合、該リクエストと同一のエントリでスヌープの情報を保持し、該スヌープのレスポンスを受信する。
The
セルコントローラ120は、スパースディレクトリ121のエントリの読み出しを行う場合、保持したリクエストのアドレス303をアドレス生成回路405に送信し、エントリの特定を行う。スパースディレクトリ121のエントリの更新を行う場合、保持したリクエストのアドレス303をアドレス生成回路405に送信し、ライトデータ生成回路406へアドレスに対応するメモリラインのステータス(キャッシュステータス304とキャッシュするプロセッサ番号)を送信する。プロセッサに接続するメモリの更新が必要な場合、ライトコマンド生成回路407へリクエストの種類302とデータ307を送信する。メモリの更新が必要ない場合、リクエスト/スヌープ生成回路410へパケット内のリクエストの種類302を出力する。
When reading the entry of the
スヌープレスポンス格納バッファ404は、コピー先セルコントローラである時に使用される。スヌープレスポンス格納バッファ404で受信するパケットのリクエストの種類は、スヌープレスポンスのみである。スヌープレスポンス格納バッファ404は、状態フラグ401が[10]のとき、すなわち、セルコントローラ120がメモリのデータコピー後のコピー先セルコントローラとなる場合、かつ、パケット300のフラグ301が"1"のとき、すなわち、スパースディレクトリ更新中の場合、第1調停回路402よりパケットを受信する。このため、スヌープレスポンス格納バッファ404に格納される、スパースディレクトリを更新するスヌープレスポンスを「更新用スヌープレスポンス」ともいう。セルコントローラ120は、受信したスヌープレスポンスの情報を基にして、スパースディレクトリ121の更新を行う。つまり、該スパースディレクトリのエントリを決定するために、アドレス生成回路405にアドレス303を送信し、更新するステータス情報(キャッシュステータス情報)を生成するためにライトデータ生成回路406にアドレスに対応するメモリラインのステータス情報(キャッシュステータス304とキャッシュするプロセッサ番号)を送信する。また、プロセッサに接続するメモリの更新が必要な場合は、ライトコマンド生成回路407へリクエストの種類302とデータ307を送信する。
The snoop
アドレス生成回路405は、リクエスト格納バッファ403またはスヌープレスポンス格納バッファ404より送信されるアドレス303からキーアドレスを作成し、アクセスするスパースディレクトリ121のエントリを決定する。アドレス生成回路405は、状態フラグが[00]、[10]の時に、セレクタ409で選択され、スパースディレクトリをアクセスすることが可能になる。アドレスからキーアドレスを作成する方法はスパースディレクトリの構成に依存して決定する。ここではその方法の詳細には言及しない。決定したエントリのキーアドレスを基に、スパースディレクトリ121にアクセスを行う。
The
ライトデータ生成回路406は、リクエスト格納バッファ403またはスヌープレスポンス格納バッファ404から送られる情報からスパースディレクトリ121へ書き込むデータを生成する。書き込むデータは、ラインをキャッシュするプロセッサ番号、及び、該ラインのキャッシュステータス値、具体的には、ME(Modified Exclusive)、S(Shared)、I(Invalid)のいずれかの値である。本実施形態では、パケット300において、フラグ301が"1"(ディレクトリ更新中を示す)であるかを常時チェックし、"1"でない場合は、常にスパースディレクトリ121のステータス情報を更新する。フラグ301が"1"であり、スパースディレクトリ121にステータス情報が登録されていない場合は、該スパースディレクトリのステータス情報を更新し、ステータス情報が登録されている場合には、ステータス情報の更新は行わない。
The write
ライトコマンド生成回路407は、セル100内のプロセッサ101〜104に接続するメモリ111〜114にデータを書き込む場合、または、他セル200、500、550のプロセッサからのリード要求に対応するデータを送信する場合に、リクエスト格納バッファ403またはスヌープレスポンス格納バッファ404から出力されるパケット300に含まれるリクエストの種類302及びデータ307に基づいてリードリプライ、ライトのコマンドを生成し、合成回路411へ出力する。
The write
リードポインタ408は、スパースディレクトリ121のエントリ数の閾値を示すレジスタと、コピー元セルとして、スパースディレクトリ121を読み出すときのエントリを示すリードカウンタとを備える。リードカウンタの初期値は"0"である。リードポインタ408は、セルコントローラ120の状態フラグ401が[01]にアサートされている(すなわち、メモリのデータコピー後のコピー元セルコントローラである)時に、セレクタ409で選択され、リードカウンタに基づいてスパースディレクトリ121のエントリにアクセスする。また、リードポインタ408は、リクエスト/スヌープ生成回路410からストローブ信号を受信すると、リクエストカウンタを+1("1"インクリメント)し、スパースディレクトリの次エントリの読み込みを開始する。セルコントローラ120は、エントリ数の閾値(レジスタの値)を超えるまで、スパースディレクトリのエントリにアクセスを行う機能を有する。
The
セレクタ409は、状態フラグ401の値によって、セレクトを変更する。状態フラグ401が[00]、[10]のときは、アドレス生成回路405をセレクトし、状態フラグ401が[01]の時はリードポインタ408をセレクトする。ただし、状態フラグ401が[01]の場合でも、メモリ間のデータコピーに関与しないセル100内の他のプロセッサが存在するので、リクエスト格納バッファ403にリクエストが格納されている(セル100内の他のプロセッサからのリクエストか、または、セル100内の他のプロセッサに接続するメモリへのリクエストか、を受信している)場合は、優先してアドレス生成回路405をセレクトすることになる。
The
スパースディレクトリ121は、セル100内のメモリ111〜114に関してライン毎のステータス情報を管理する。ステータス情報は、ラインが他セル内のプロセッサにキャッシュされているかどうかの情報、及び、ラインが他セル内のプロセッサにキャッシュされている場合、キャッシュしているプロセッサ番号を含んだ情報を保持している。また、セル100外のプロセッサがキャッシュするセル内のメモリ111〜114のラインの管理を全て行う。メモリとプロセッサのキャッシュのアドレス・マッピングの方式として、例えばセット・アソシアティブ方式などがあるが、本発明では、アドレスとエントリの対応が取れればどのような方式でもよい。また、スパースディレクトリ121は、アドレス生成回路405より指示されたキーアドレスに対応するエントリへライトデータ生成回路406で生成されたステータス情報を書き込む機能を有する。また、アドレス生成回路405より指示されたキーアドレスに対応するエントリの読み出しを行い、読み出されたアドレスのステータス情報をリクエスト/スヌープ生成回路410と合成回路411とへ出力する機能を有する。また、リードポインタ408のリードカウンタにより指示されたエントリの読み出しを行い、読み出されたアドレス、及び、該アドレスのステータス情報をリクエスト/スヌープ生成回路410に出力する機能を有する。
The
リクエスト/スヌープ生成回路410は、スパースディレクトリ121から受け取るアドレス、該アドレスのステータス情報、及び、リクエスト格納バッファ403またはスヌープレスポンス格納バッファ404から受け取るリクエストの種類302に基づいて、スヌープの必要性を検証する。リクエスト/スヌープ生成回路410は、リクエストの種類302がスヌープ、リードであり、ステータス情報より他セルのプロセッサがキャッシュしていると判明した場合、スヌープリクエストの生成を行い、第2調停回路412に送信する。それと同時に、リクエスト格納バッファ403にスヌープの情報を通知する。リクエストの種類302がスヌープレスポンスの場合、スパースディレクトリ121から受け取る、アドレスに対応するラインのステータス情報(MESI)を付け、プロセッサに送信する。
The request / snoop
また、リクエスト/スヌープ生成回路410は、セルコントローラ120がメモリのデータコピー後のコピー先セルコントローラである時、具体的には、状態フラグ401が[10]にアサートされている時に、スパースディレクトリ121に該リクエストのアドレスに対応するステータス情報を保持していないリクエストやスヌープを受信した場合、セル100外の全プロセッサにスヌープのブロードキャストを行う機構を有し、第2調停回路412に出力する。
Further, the request / snoop
さらに、リクエスト/スヌープ生成回路410は、セルコントローラ120がメモリのデータコピー後のコピー元セルコントローラである時、具体的には、状態フラグ401が[01]にアサートされている時に、スパースディレクトリ121からスヌープ指示があった場合、スヌープパケットの返信先プロセッサ番号306をコピー先セルコントローラに設定し、ディレクトリ更新中を示すフラグ301を"1"にセットしたスヌープを生成する機構を有する。生成したスヌープを第2調停回路412に出力すると同時に、リードポインタ408が保持するリードポインタを+1("1"インクリメント)するために、ストローブ信号をリードポインタ408に送信する。
Further, when the
合成回路411は、ライトコマンド生成回路407で生成されたリードリプライやライトと、スパースディレクトリ121から受け取る、アドレスに対応するラインのステータス情報(MESI)とを合成し、第2調停回路412に出力する。
The synthesizing
第2調停回路412は、リクエスト/スヌープ生成回路410から出力されるスヌープ、リード、スヌープレスポンスの送信と、合成回路411から出力されるリードリプライやライトの送信を調停し、セル100のプロセッサ102、103、104(コピー元メモリと対応するプロセッサを除く)やセル100外のセルコントローラ220、520、550に送信する。
セレクタ413は、リクエスト格納バッファ403とスヌープレスポンス格納バッファ404との出力を選択する。セレクタ413は、状態フラグ401の値を入力し、状態フラグ401が[10]を示すとき、すなわち、コピー先セルのときに、スヌープレスポンス格納バッファ404の出力を優先して選択する構成にしてもよい。
The
The
続いて、図1、図2、及び図5を用いてメモリのデータコピーの動作を説明する。図5は、本実施形態のメモリ間のデータコピーの動作例を示すフローチャートである。ここでは、セル100のメモリ111のデータをセル200のメモリ214へデータコピーする場合の動作を一例として説明する。
Subsequently, the data copy operation of the memory will be described with reference to FIG. 1, FIG. 2, and FIG. FIG. 5 is a flowchart illustrating an operation example of data copying between memories according to the present embodiment. Here, an operation when data in the
メモリ間のデータコピーを行う前に、セルコントローラ120のスパースディレクトリ121で、プロセッサ101に接続するメモリ111のキャッシュ状況をコピー元セル100内のプロセッサ102〜104のキャッシュも含めて管理するために、セル100でプロセッサ101と接続するプロセッサ102、103,104との経路155、156、157をセルコントローラ120経由になるように経路変更する。具体的には、155は152と151、156は153と151、157は154と151へと変更する(S601)。これにより、通常は他セルのプロセッサのキャッシュ情報しか持たないスパースディレクトリ121に、セル内のプロセッサ102、103、104の、メモリ111に関するキャッシュ状況を反映させる。
In order to manage the cache status of the
次に、システムFW122などの指示によって、プロセッサ102(セル100内外のどのプロセッサでもよい)は、コピー元プロセッサ101に接続するメモリ111の全ラインを、キャッシュライン毎にリードし、コピー元プロセッサ101のメモリ111に対してライト(ライト要求)を行う。コピー元プロセッサ101は、ライト要求を受けるたびにメモリ111に対して、ライトを行うとともに、コピー先プロセッサ204に接続するメモリ214に対しライトを転送する(ライト要求を行う)ことによって、メモリのデータコピーをライン毎に全ラインについて行う(S602)。
Next, in response to an instruction from the
システムFW122は、アクセス先の変更と状態フラグ401の設定を行う(S603)。具体的には、システムFW122は、アクセスするメモリが接続するプロセッサをコピー元プロセッサ101からコピー先プロセッサ204に変更し、コピー元プロセッサ101はシステムから切り離す。アクセスを行うプロセッサの変更や、コピー元プロセッサの切り離し方については、本実施形態では、一般的な方式を採用するため、その詳細説明を省略する。コピー完了後にシステムFW122は、セルコントローラ内の状態フラグ401を、コピー元セルコントローラ120について[01]に、コピー先セルコントローラ220について[10]にセットする。
The
コピー元セルコントローラ120は、セルコントローラ120内のスパースディレクトリ121が保持するエントリ毎のステータス情報を確認する(S604)。具体的には、リードポインタ408が保持するリードカウンタが示すエントリのステータス情報を確認する。ステータス情報を基に、コピー元セルコントローラ120のリクエスト/スヌープ生成回路410は、スパースディレクトリのステータス情報を基にメモリ111のデータをキャッシュしているプロセッサを決定し、スヌープパケットの返信先プロセッサ番号306をコピー先セルコントローラ220に変更し、ディレクトリ更新中を示すフラグ301を"1"にセットしたスヌープをキャッシュしている特定のプロセッサに送信する(605)。コピー元セルコントローラ120の詳しい内部動作については後述する。
The copy
スヌープを受信した特定のプロセッサは、自プロセッサ内のキャッシュにスヌープパケットのアドレス303で示されるラインがあるかを確認し、データが最新である場合は、ライトデータつきのスヌープレスポンスを、それ以外の場合は、データなしのスヌープレスポンスを、ディレクトリ更新中を示すフラグ301を持ちまわったまま、コピー先セルコントローラ220に送信する。
The specific processor that received the snoop checks whether there is a line indicated by the
コピー先セルコントローラ220は、該特定のプロセッサよりディレクトリ更新中を示すフラグ301が"1"であるスヌープレスポンスを受け取り(S606)、スヌープレスポンスパケットのアドレス303が示すラインのステータス情報をスパースディレクトリ221で保持しているか判断する(S607)。保持している場合(S607でYes)、スパースディレクトリ221の更新を行うことなくスヌープレスポンスを破棄する(S608)。一方、ステータス情報を保持していない場合(S607でNo)、スパースディレクトリ221の情報を更新する(609)。コピー先セルコントローラ220の詳しい内部動作については後述する。
The copy
コピー元セルコントローラ120は、リードポインタ408のリードカウンタを "1"インクリメントする(S610)。コピー元セルコントローラ120は、リードポインタ408のリードカウンタの値がスパースディレクトリ121のエントリ数を超えているかを判断する(S611)。セルコントローラ120は、エントリ数(リードポインタ408のスパースディレクトリのエントリの閾値を示すレジスタの値)を超えている場合(S611でYes)、状態フラグ401を通常時の動作に移行させる(S612)。エントリ数以下の場合(S611でNo)、セルコントローラ120は、リードポインタ408のリードカウンタが示すスパースディレクトリ121のキャッシュラインのステータス情報を確認し(S613)、ステップS605以降の処理を繰り返す。一連の動作をコピー元セルコントローラ120のスパースディレクトリ121のエントリ数分行う。
The copy
このようにして、経路変更によってコピー元セルコントローラ120は、プロセッサ101に接続するメモリ111にアクセスする全プロセッサのステータス情報をスパースディレクトリ121で保持することになり、スパースディレクトリ121のステータス情報を基にスヌープを送信する。また、コピー先セルのセルコントローラ220は、コピー元セルコントローラ120から送信されたスヌープに対するスヌープレスポンスに基づいて、コピー先セルコントローラ220のスパースディレクトリ221を更新する。これにより、プロセッサキャッシュ間コヒーレンシを保証することができる。
In this way, the copy
ここで、コピー元セルコントローラとコピー先セルコントローラの詳しい内部の動作について、図4、5を用いて説明する。 Here, detailed internal operations of the copy source cell controller and the copy destination cell controller will be described with reference to FIGS.
コピー元セルコントローラ120は、状態フラグ401が[01]にセットされている場合、セレクタ409は、リードポインタ408を選択する。HW(Hardware)によってリクエスト/スヌープ生成回路410は、リードポインタ408のリードカウンタが示すスパースディレクトリ121のエントリをリードする。リードされたエントリのステータス情報を基に、リクエスト/スヌープ生成回路410は、宛先をキャッシュしているプロセッサに、返信先がコピー先セルコントローラ220になるように、パケットの送信先プロセッサ番号305設定し、パケット内のディレクトリ更新中を示す"1"をフラグ301へセットする。生成したパケット300を第2調停回路412に送信する。
The copy
第2調停回路412は、その他のスヌープや、リクエストとで調停を行い、調停で選択されたならばキャッシュしているプロセッサにスヌープを送信する。リクエスト/スヌープ生成回路410は、第2調停回路412に送信すると同時に、リードポインタ408のリードカウンタを"1"インクリメントするために、ストローブ信号を送信し、該ストローブ信号を受け取ったリードポインタ408は、リードカウンタを"1"インクリメントし(S610)、リードポインタ408の値とスパースディレクトリ121のエントリ数を比較し(S611)、リードポインタ408の値が超えている場合(S611でYes)、エントリのリードを終了し、状態フラグを[00]に変更する(S612)。超えていない場合(S612でNo)、スパースディレクトリ121をアクセスする(S613)。
The
コピー先セルコントローラ220は、状態フラグ401が[10]にセットされている場合、第1調停回路402は、パケット内のディレクトリ更新中を示すフラグ301が"1"であるかを確認し、"1"にセットされたパケットをスヌープレスポンス格納バッファ404に格納する。スヌープレスポンス格納バッファ404は格納したパケットについて、アドレス生成回路405にアドレス303を、ライトデータ生成回路406にアドレスに対応するメモリ214のラインのステータス情報(キャッシュステータス304とキャッシュを行うプロセッサ)を出力する。アドレス生成回路405は、アドレス303よりスパースディレクトリ121のエントリ番号を特定するためのキーアドレスを生成する。また、ライトデータ生成回路406は、ステータス情報よりスパースディレクトリ221を更新するためのデータを生成する。
When the
セルコントローラ220は、アドレス生成回路405で生成したキーアドレスでスパースディレクトリ221を引いた(参照した)結果、エントリに登録されている場合(S607でYes)、ライトデータ生成回路406で生成したデータを破棄する。エントリに登録されていない場合(S607でNo)、スパースディレクトリ221を更新する。システムFW122は、コピー元セルコントローラの状態フラグが[00]に落とされたのを確認したら、コピー先セルコントローラの状態フラグも[00]に落として、通常動作に戻る。
When the
次に、セルコントローラ220がコピー先セルコントローラとして動作している時、具体的には状態フラグ401が[10]にアサートされている時に、コピー先プロセッサ204に接続するメモリ214へのアクセスされた場合、あるいは、コピー先プロセッサ204からのスヌープを受信した場合の動作について図6を用いて説明する。図6は、セルコントローラがコピー先セルコントローラとして動作している場合の動作例を示すフローチャートである。
Next, when the
コピー先セルコントローラ220は、セル200外より、コピー先プロセッサ204に接続するメモリ214へのリクエストを受信する(S701)。あるいは、コピー先セルコントローラ220は、コピー先プロセッサ204より、スヌープを受信する(702)。ステップS701またはS702のいずれかが生じると、セルコントローラ220は、アクセスを受けたラインのステータス情報をスパースディレクトリ221で管理を行っているかを確認する(S703)。
The copy
管理している場合(S703でYes)、セルコントローラ220は、ステータス情報に基づいてキャッシュを行っている特定のプロセッサに対し、スヌープを送信し(S704)、その後レスポンスを受信して(S705)、スパースディレクトリの更新を行う(708)。スパースディレクトリ221で管理していない場合(S703でNo)、セル内外の全プロセッサに対し、スヌープのブロードキャストを行い(S706)、スヌープのレスポンスを全て受け取り(S707)、スパースディレクトリ221のステータス情報を更新する(S708)。スパースディレクトリ221の更新が終了したら、セルコントローラ220は、コピー先プロセッサ204に対し、ステップS701でリクエストを受信した場合リクエストを送信し、ステップS702でスヌープを受信した場合スヌープのレスポンスを行う(S709)。
When managing (Yes in S703), the
この動作は、通常状態、すなわち状態フラグ401が[00]にアサートされている時の動作のように、スパースディレクトリ221にステータス情報が管理されていない場合、すぐにスヌープレスポンスやリード要求をアドレスで決定されるメモリが接続されているプロセッサに送信できるのと違い、プロセッサ間キャッシュコヒーレンシを保証するためにスヌープのブロードキャスト(S706)が必要となる。
In this operation, when status information is not managed in the
次に、通常時の動作として、セル100内のプロセッサのリクエストからの動作とセル100外のプロセッサのリクエストからの動作について説明する。図7は、本実施形態のセルコントローラが通常状態において、セル内のプロセッサからリクエストを受けた場合の動作例を示すフローチャートである。図8は、本実施形態のセルコントローラが通常状態において、セル外のプロセッサからリクエストを受けた場合の動作例を示すフローチャートである。
Next, operations from a request from a processor in the
図7を参照して、セル100内のプロセッサ102よりメモリ111へリードのリクエストが発行された場合を一例として説明する。プロセッサ102は、プロセッサ101に接続するメモリ111に対し、リクエストを発行する(S801)。リクエストを受信したプロセッサ101は、セル100内のプロセッサとセルコントローラ120に対し、スヌープのブロードキャストを行う(S802)。スヌープを受信したセルコントローラ120は、スパースディレクトリ121のステータス情報を管理しているかを確認する(S804)。
With reference to FIG. 7, a case where a read request is issued from the
スパースディレクトリ121でステータス情報を保持している場合(S804でYes)、管理しているステータス情報を基にラインをキャッシュしているプロセッサに対し、スヌープを送信し(S805)、該プロセッサより、スヌープレスポンスを受け取る(S806)。受け取った情報を基にセルコントローラ120は、スパースディレクトリ221の書き換えを行い(S807)、リクエストが要求されたプロセッサ101に対してスヌープのレスポンスを行う(S808)。一方、スパースディレクトリ121でステータス情報を保持していない場合(S804でNo)、セルコントローラ120はスヌープレスポンスをすぐにプロセッサ101に返信する(S808)。
When status information is held in the sparse directory 121 (Yes in S804), a snoop is transmitted to the processor that caches the line based on the managed status information (S805), and the snoop is sent from the processor. A response is received (S806). Based on the received information, the
プロセッサ101は、セルコントローラ120からスヌープレスポンスを全て受け取った後、リードのリクエストを発行したプロセッサ102に対して、データを送信する(809)。このようにして、一連のセル内のプロセッサのリクエストからの動作を終了する。
After receiving all the snoop responses from the
次に、図8を参照して、セル100外のプロセッサ201よりメモリ111へリードリクエストが発行された場合を一例として説明する。プロセッサ201は、セルコントローラ220を介して、セルコントローラ120へプロセッサ101と接続するメモリ111へのリクエストを発行する(S901)。リクエストを受信したセルコントローラ120は、スパースディレクトリ121のステータス情報の確認をする(S902)。スパースディレクトリ121でステータス情報を管理しているかを確認する(S903)。
Next, a case where a read request is issued from the
スパースディレクトリ121でステータス情報を保持している場合(S903でYes)、管理している情報を基にラインをキャッシュしているプロセッサに対し、スヌープを送信し(S904)、該プロセッサより、スヌープレスポンスを受け取る(S905)。セルコントローラ120は、受け取った情報を基にスパースディレクトリ121の書き換えを行い(S906)、リクエストが発行されたプロセッサ101に対しリクエストを送信する(S907)。一方、スパースディレクトリ121でステータス情報を保持していない場合(S903でNo)、リクエストをすぐにプロセッサ101に送信する(S907)。
When status information is held in the sparse directory 121 (Yes in S903), a snoop is transmitted to the processor that caches the line based on the managed information (S904), and the snoop response is sent from the processor. Is received (S905). The
リクエストを受信したプロセッサ101は、セル100内のプロセッサ102〜104に対し、スヌープのブロードキャストを行う(S908)。プロセッサ101は、プロセッサ102〜104からスヌープレスポンスを全て受け取った後、セルコントローラ120に対して、データを送信する(S909)。セルコントローラ120は、プロセッサ201にデータを送信する(S910)。このようにして、一連の他セルのプロセッサのリクエストからの動作を終了する。
The
上記ではコピー元セルをセル100とし、コピー先セルをセル200として説明したが、他のメモリ間のデータコピーでも同様に機能することはいうまでもない。
In the above description, the copy source cell is assumed to be the
(その他の実施形態)
上記実施形態では、セルに複数のプロセッサを有する場合を説明したが、セル内に一つのプロセッサとメモリの組み合わせを備える場合であっても本発明を適用することができる。このような場合、図5のステップS601では、セル内のプロセッサがシステムFWの指示を受けてメモリ111へのリードを要求したが、システムFWは、セル外のプロセッサにリード要求の指示を行ってもよい。また、コピー元セル内のプロセッサのキャッシュメモリに保持されるコピー元メモリに関する情報はないため、コピー元セル内のスパースディレクトリへステータス情報を収集する処理は不要となる。
(Other embodiments)
In the above embodiment, the case where a cell has a plurality of processors has been described. However, the present invention can be applied even when a combination of one processor and a memory is provided in a cell. In such a case, in step S601 in FIG. 5, the processor in the cell receives an instruction from the system FW and requests to read to the
以上、説明したように、本発明の好適な実施形態によれば、メモリのデータコピーを行う前に、セル内のローカルプロセッサ間のインタフェースを切断して、コピー元のメモリをリードすることで、コピー元のスパースディレクトリにローカルプロセッサのステータス情報も反映させ、メモリのデータコピー後に、コピー元のスパースディレクトリの情報を使って、コピー先のスパースディレクトリを更新することで、メモリの動的リプレースの処理を高速化することができる。具体的には、コピー元プロセッサが接続するセルコントローラ(例えば、図2のセルコントローラ120)には、該セルコントローラのスパースディレクトリ(例えば図2のスパースディレクトリ121)をエントリ毎にリードをし、スヌープを送信する機構をリクエスト/スヌープ生成回路(例えば、図4のリクエスト/スヌープ生成回路410)に設ける。
As described above, according to the preferred embodiment of the present invention, before the memory data is copied, the interface between the local processors in the cell is disconnected, and the copy source memory is read. Dynamic copy processing of memory by reflecting the status information of the local processor in the copy source sparse directory and updating the copy destination sparse directory using the copy source sparse directory information after copying the memory data. Can be speeded up. Specifically, the cell controller (for example, the
また、コピー先プロセッサ(例えば、図2のプロセッサ204)の接続するセルコントローラ(例えば図2のセルコントローラ220)には、自身が送信していない(コピー元のセルコントローラが送信した)スヌープに対するスヌープレスポンスをスヌープレスポンス格納バッファ(例えば、図4のスヌープレスポンス格納バッファ404)に送信する機構を第1調停回路(例えば、図4の第1調停回路402)に設ける。コピー元セルコントローラが保持するスパースディレクトリのステータス情報に基づき、全プロセッサのキャッシュからデータを掃き出させ、コピー先のスパースディレクトリを更新することによって、コヒーレンシを保証し、かつメモリのラインの一部を管理するスパースディレクトリ(例えば、図2のスパースディレクトリ121)のエントリ数分のスヌープを発行するのみなので、メモリのデータコピー後にスパースディレクトリ(例えば、図2のスパースディレクトリ221)を高速に更新できる。さらに、1ラインのスヌープ数もキャッシュを行っているプロセッサへのスヌープのみに抑えられるので、スヌープによるトラフィックの増加を抑えられる。このようにして、スヌープのブロードキャストの発行数を抑え、メモリの動的リプレースの際に、従来よりも他のリクエストのスループットを低下させることなく処理する。
Further, a snoop for a snoop that is not transmitted to the cell controller (for example, the
また、本発明の好適な実施形態によれば、以下に記載する効果が得られる。
第1の効果は、プロセッサ間キャッシュコヒーレンシの保証をするために、従来はメモリのデータコピー完了後にメモリのキャッシュライン数分を全てリードする必要があった。しかし、本発明では、メモリのキャッシュラインの一部のキャッシュラインを管理するスパースディレクトリの全エントリをリードすればよい。エントリ数がメモリのライン数より格段に少ないために、キャッシュコヒーレンシを保証するためにかかる時間を短縮することができる。
Moreover, according to a preferred embodiment of the present invention, the effects described below can be obtained.
The first effect is that in order to guarantee interprocessor cache coherency, conventionally, it is necessary to read all the number of cache lines in the memory after the data copy of the memory is completed. However, in the present invention, all entries of the sparse directory that manages a part of the cache lines of the memory may be read. Since the number of entries is much smaller than the number of lines in the memory, the time taken to guarantee cache coherency can be reduced.
第2の効果は、従来は、メモリのデータコピー完了後に行うメモリのリードの際にメモリの1キャッシュラインに対し、全プロセッサにスヌープの送信をしていた。しかし本発明では、コピー元セルコントローラのスパースディレクトリを使用することで、1キャッシュラインに対し、特定のプロセッサにのみスヌープを送信すればよいので、トラフィックを減少させることができ、性能低下を抑えることができる。 The second effect is that, conventionally, a snoop is transmitted to all processors for one cache line of the memory when the memory is read after the data copy of the memory is completed. However, in the present invention, by using the sparse directory of the copy source cell controller, it is only necessary to send a snoop to a specific processor for one cache line, so traffic can be reduced and performance degradation can be suppressed. Can do.
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。 In addition, this invention is not limited to embodiment shown above. Within the scope of the present invention, it is possible to change, add, or convert each element of the above-described embodiment to a content that can be easily considered by those skilled in the art.
100、200、500、550 セル
101、102、103、104 プロセッサ
111、112、113、114 メモリ
120 セルコントローラ
121 スパースディレクトリ
122 システムFW
131、132、133、134 キャッシュ
300 パケット
301 フラグ
302 リクエストの種類
303 アドレス
304 キャッシュステータス
305 送信先プロセッサ番号
306 返信先プロセッサ番号
307 データ
401 状態フラグ
402 第1調停回路
403 リクエスト格納バッファ
404 スヌープレスポンス格納バッファ
405 アドレス生成回路
406 ライトデータ生成回路
407 ライトコマンド生成回路
408 リードポインタ
409、413 セレクタ
410 リクエスト/スヌープ生成回路
411 合成回路
412 第2調停回路
100, 200, 500, 550
131, 132, 133, 134
Claims (9)
前記各セルは、
他セル内のキャッシュメモリに記録されている自セル内のメモリのデータに関するステータス情報を保持するスパースディレクトリと、
コピー元セルとコピー先セルが異なるメモリ間でデータコピーを行う場合、コピー元メモリからコピー先メモリへデータをコピーし、前記コピー元セル内のスパースディレクトリが保持するステータス情報に基づいて、前記コピー先セルのスパースディレクトリを更新するセルコントローラと、を備えるマルチプロセッサシステム。 A multiprocessor system comprising a plurality of cells having one or more processors having a cache memory and one or more memories,
Each cell is
A sparse directory that holds status information about the data in the memory in its own cell recorded in the cache memory in another cell;
When copying data between memories in which the copy source cell and the copy destination cell are different, the data is copied from the copy source memory to the copy destination memory, and the copy is performed based on the status information held in the sparse directory in the copy source cell. And a cell controller that updates a sparse directory of the destination cell.
前記セルは、複数のプロセッサを有し、前記データコピーを行う場合、前記接続されたプロセッサが前記セルコントローラを介して自セル内の他のプロセッサへアクセスするようにプロセッサ間を接続し、
前記セルコントローラは、前記コピー元メモリへのアクセスによって、前記自セル内の他のプロセッサがキャッシュメモリに保持する前記コピー元メモリのデータに関するステータス情報を、前記コピー元のスパースディレクトリが保持するステータス情報へ追加することを特徴とする請求項2記載のマルチプロセッサシステム。 The memory is accessed via a connected processor;
The cell includes a plurality of processors, and when the data copy is performed, the connected processors are connected to each other so that the connected processor accesses another processor in the own cell via the cell controller,
The cell controller, when accessing the copy source memory, status information about the data of the copy source memory held in the cache memory by another processor in the own cell, and status information held by the copy source sparse directory The multiprocessor system according to claim 2, further comprising:
前記セルが、通常状態、コピー元セル、及びコピー先セルのいずれであるかを示す状態フラグと、
セル内へのアクセスのリクエストを格納するリクエスト格納バッファと、
前記コピー元セルのセルコントローラが発行したスヌープの返信を更新用スヌープレスポンスとして格納するスヌープレスポンス格納バッファと、
前記リクエスト、及び前記更新用スヌープレスポンスを受信し、状態フラグに基づいて、前記リクエスト格納バッファと前記更新用スヌープレスポンスとのいずれかへ格納する調停回路と、
前記状態フラグがコピー先セルであり、かつ、前記リクエストが前記スパースディレクトリにステータス情報を保持していないメモリラインへのアクセスである場合、スヌープを生成し、全プロセッサへ発行する生成部と、を備え、
前記スパースディレクトリは、前記更新用スヌープレスポンス、及び、前記生成部によって発行されたスヌープについて返信されるスヌープレスポンスに基づいて更新されることを特徴とする請求項2乃至7のいずれか一項に記載のマルチプロセッサシステム。 The cell controller is
A status flag indicating whether the cell is a normal state, a copy source cell, or a copy destination cell;
A request storage buffer for storing requests for access to the cell;
A snoop response storage buffer for storing a snoop response issued by the cell controller of the copy source cell as an update snoop response;
An arbitration circuit that receives the request and the update snoop response and stores the request in either the request storage buffer or the update snoop response based on a status flag;
A generation unit that generates a snoop and issues it to all processors when the status flag is a copy destination cell and the request is an access to a memory line that does not hold status information in the sparse directory; Prepared,
The sparse directory is updated based on the snoop response for update and a snoop response returned for the snoop issued by the generation unit. Multiprocessor system.
他セル内のキャッシュメモリに保持された自セル内のメモリのデータに関するステータス情報を保持し、
セルが異なるメモリ間でコピー元メモリからコピー先メモリへデータをコピーし、
コピー終了後、前記コピー元メモリへのアクセス先をコピー先メモリへ変更し、
前記コピー元セル内のスパースディレクトリが保持するステータス情報に基づいて、前記コピー先セルのスパースディレクトリが保持するステータス情報を更新するメモリリプレース方法。 A memory replacement method for a multiprocessor system comprising a plurality of cells each having one or more processors having a cache memory and one or more memories,
Holds status information about data in the memory in its own cell held in the cache memory in another cell,
Copy data from copy source memory to copy destination memory between memories with different cells,
After copying, change the access destination to the copy source memory to the copy destination memory,
A memory replacement method for updating status information held in a sparse directory in the copy destination cell based on status information held in a sparse directory in the copy source cell.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2007236085A JP4868246B2 (en) | 2007-09-12 | 2007-09-12 | Multiprocessor and memory replacement method |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2007236085A JP4868246B2 (en) | 2007-09-12 | 2007-09-12 | Multiprocessor and memory replacement method |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2009070013A JP2009070013A (en) | 2009-04-02 |
| JP4868246B2 true JP4868246B2 (en) | 2012-02-01 |
Family
ID=40606220
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2007236085A Expired - Fee Related JP4868246B2 (en) | 2007-09-12 | 2007-09-12 | Multiprocessor and memory replacement method |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP4868246B2 (en) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP2618262A1 (en) | 2010-09-13 | 2013-07-24 | Fujitsu Limited | Information processing device and method for controlling information processing device |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6055610A (en) * | 1997-08-25 | 2000-04-25 | Hewlett-Packard Company | Distributed memory multiprocessor computer system with directory based cache coherency with ambiguous mapping of cached data to main-memory locations |
| US6631448B2 (en) * | 1998-03-12 | 2003-10-07 | Fujitsu Limited | Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol |
| US7103728B2 (en) * | 2002-07-23 | 2006-09-05 | Hewlett-Packard Development Company, L.P. | System and method for memory migration in distributed-memory multi-processor systems |
| JP4362454B2 (en) * | 2005-04-07 | 2009-11-11 | 富士通株式会社 | Cache coherence management device and cache coherence management method |
-
2007
- 2007-09-12 JP JP2007236085A patent/JP4868246B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2009070013A (en) | 2009-04-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4230998B2 (en) | Computer system with processor cache for recording remote cache presence information | |
| JP5431525B2 (en) | A low-cost cache coherency system for accelerators | |
| US8291175B2 (en) | Processor-bus attached flash main-memory module | |
| JP3661764B2 (en) | Method and system for providing an eviction protocol in a non-uniform memory access computer system | |
| KR101414384B1 (en) | Processor, information processing apparatus, and arithmetic method | |
| US20080215819A1 (en) | Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of shared memory blocks | |
| US6260117B1 (en) | Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency | |
| JP5550089B2 (en) | Multiprocessor system, node controller, failure recovery method | |
| CN100585572C (en) | Protocol for maintaining cache coherency in CMP | |
| WO2011158320A1 (en) | Multi-core processor system, cache coherency control method, and cache coherency control program | |
| JP4673585B2 (en) | Memory system control apparatus and memory system control method | |
| US6587922B2 (en) | Multiprocessor system | |
| CN108415861B (en) | Apparatus and method for cached content management | |
| JP4507563B2 (en) | Multiprocessor system | |
| JP5212478B2 (en) | Control device, data transfer device, information processing device, arithmetic processing device, and control method for information processing device | |
| CN117059147A (en) | Tracking memory modifications at cache line granularity | |
| JP2004199677A (en) | System for and method of operating cache | |
| JP3068469B2 (en) | Second level cache memory system | |
| JPH09179779A (en) | Computer system and data transfer method | |
| US8015372B2 (en) | Apparatus and method for memory migration in a distributed memory multiprocessor system | |
| JP2009070013A (en) | Multiprocessor and memory replacement method | |
| CN101303669A (en) | Semiconductor device with address translation memory access mechanism | |
| JP2005250830A (en) | Processor and main memory shared multiprocessor | |
| JP4030951B2 (en) | Data duplication apparatus and method | |
| JP3507314B2 (en) | Memory controller and computer system |
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: 20111018 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20111102 |
|
| 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: 20141125 Year of fee payment: 3 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| LAPS | Cancellation because of no payment of annual fees |