JP3914250B2 - Cache coherence device - Google Patents
Cache coherence device Download PDFInfo
- Publication number
- JP3914250B2 JP3914250B2 JP2006077114A JP2006077114A JP3914250B2 JP 3914250 B2 JP3914250 B2 JP 3914250B2 JP 2006077114 A JP2006077114 A JP 2006077114A JP 2006077114 A JP2006077114 A JP 2006077114A JP 3914250 B2 JP3914250 B2 JP 3914250B2
- Authority
- JP
- Japan
- Prior art keywords
- bus
- cache
- unit
- command
- processor module
- 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; 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
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
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 cache coherence apparatus for a multiprocessor system in which a plurality of processor modules are connected via a system bus, and more particularly, to a multiprocessor system in which a plurality of processor elements with caches are connected to each other via a main memory and an internal shared bus. The present invention relates to a cache coherence apparatus.
近年、コンピュータ装置の処理性能を飛躍的に向上させることが期待できることから、複数のプロセッサを共有バスを介して接続したマルチプロセッサシステムの開発が進められている。マルチプロセッサシステムにあっては、プロセッサにスパースカラ型やVLIW(Very Long Instruction Word) 型を採用することで、プロセッサ単体の処理性能を向上させると同時に、キャッシュ機構の採用が性能向上に大きく寄与する。 In recent years, since it can be expected that the processing performance of a computer apparatus is dramatically improved, development of a multiprocessor system in which a plurality of processors are connected via a shared bus has been advanced. In a multiprocessor system, by adopting a sparse scalar type or a VLIW (Very Long Instruction Word) type as a processor, the processing performance of a single processor is improved, and at the same time, the adoption of a cache mechanism greatly contributes to the performance improvement.
このようなプロセッサのキャッシュ機構としては、プロセッサに一次キャッシュを内蔵させると同時に、外部の主記憶との間に2次キャッシュを設けており、2次キャッシュのヒット率を高めることで、主記憶へのアクセスを低減して性能向上を図る。 As a cache mechanism of such a processor, a primary cache is built in the processor, and at the same time, a secondary cache is provided between the main cache and an external main memory. To improve performance by reducing access.
更に、複数のプロセッサに対する共有メモリとして、単独のメモリユニットを設けず、所定数のプロセッサ単位にその主記憶として機能するローカルメモリを分散配置し、このローカルメモリに共有メモリ領域を分散配置し、システム規模に応じたローカルメモリユニットの数により共有メモリを柔軟に構築できるようにしている。 Further, as a shared memory for a plurality of processors, a single memory unit is not provided, a local memory functioning as a main memory is distributed in a predetermined number of processors, and a shared memory area is distributed in this local memory. The shared memory can be flexibly constructed by the number of local memory units corresponding to the scale.
図65は従来の典型的なマルチプロセッサシステムを示す。このシステムは、例えば2台のプロセッサモジュール1000−1,1000−2を有する。プロセッサモジュール1000−1,1000−2は同一構成であり、例えばプロセッサモジュール1000−1を例にとると、プロセッサエレメント1100−1,1100−2、キャッシュユニット1200−1,1200−2、共通バス1300−1及びローカルストレージユニット1400−1で構成される。 FIG. 65 shows a typical conventional multiprocessor system. This system has, for example, two processor modules 1000-1 and 1000-2. The processor modules 1000-1 and 1000-2 have the same configuration. For example, when the processor module 1000-1 is taken as an example, the processor elements 1100-1 and 1100-2, cache units 1200-1 and 1200-2, and a common bus 1300 are used. -1 and local storage unit 1400-1.
プロセッサエレメント1100−1,1100−2は、一次キャッシュを内蔵しており、外部に2次キャッシュとしてのキャッシュユニット1200−1,1200−2を設けている。ローカルストレージユニット1400−1は、プロセッサエレメント1100−1,1100−2に固有の物理空間を割り当てることで各々の主記憶として機能し、同時に、プロセッサモジュール1000−1,1000−2の全てのプロセッサエレメント1100−1〜1100−4に共有される共有メモリ空間を割り当てている。 The processor elements 1100-1 and 1100-2 incorporate a primary cache, and cache units 1200-1 and 1200-2 as secondary caches are provided outside. The local storage unit 1400-1 functions as a main memory by assigning a unique physical space to the processor elements 1100-1, 1100-2, and at the same time, all the processor elements of the processor modules 1000-1, 1000-2. A shared memory space shared by 1100-1 to 1100-4 is allocated.
プロセッサモジュール1000−2側も同様に、プロセッサエレメント1100−3,1100−4、キャッシュユニット1200−3,1200−4、共通バス1300−2及びローカルストレージユニット1400−2で構成される。プロセッサモジュール1000−1,1000−2の共通バス1300−1,1300−2は、モジュール筐体のバックパネルを経由して接続された1つのバスとして動作する。 Similarly, the processor module 1000-2 side includes processor elements 1100-3 and 1100-4, cache units 1200-3 and 1200-4, a common bus 1300-2, and a local storage unit 1400-2. The common buses 1300-1 and 1300-2 of the processor modules 1000-1 and 1000-2 operate as one bus connected via the back panel of the module housing.
複数のプロセッサ1100−1〜1100−4に設けたキャッシュユニット1200−1〜1200−4のキャッシュ制御は、あるプロセッサエレメントで読出アクセスがあり、ミスヒットであれば、対応するローカルストレージのアクセスで読出アドレスのコピー値をキャッシュに転送して応答する。 The cache control of the cache units 1200-1 to 1200-4 provided in the plurality of processors 1100-1 to 1100-4 is read access by a certain processor element. Responds by transferring a copy of the address to the cache.
またプロセッサの書込アクセスでキャッシュがミスヒットになると、対応するローカルストレージのコピー値をキャッシュに転送して上書きする。このとき主記憶の値と上書きされたキャッシュのコピー値は異なることから、キャッシュ上の最新値を主記憶に転送して旧い値を更新するコピーバックによりキャッシュコヒーレンスが実現される。 Further, when the cache is miss-hit by the write access of the processor, the corresponding local storage copy value is transferred to the cache and overwritten. At this time, since the value in the main memory is different from the copy value in the overwritten cache, cache coherence is realized by copy back in which the latest value on the cache is transferred to the main memory and the old value is updated.
また、あるローカルストレージの値を複数のキャッシュにコピーしている場合には、書込アクセスがあったキャッシュ以外の他のキュッシュ上のコピー値を無効化した後に、アクセス元のキャッシュ上のコピー値を更新して最新値とし、その後にローカルストレージにコピーバックすることで、キャッシュコヒーレンスが実現される。
しかしながら、図65のマルチプロセッサシステムにあっては、全てのプロセッサエレメント、キャッシュユニット及びローカルストレージを1つのバスに接続する構成をとっているため、次の問題があった。 However, the multiprocessor system shown in FIG. 65 has the following problem because all processor elements, cache units, and local storage are connected to one bus.
まずキャッシュコヒーレンスを実現するために、読出又は書込アクセスを発生したプロセッサエレメントのキャッシュユニットとアクセスアドレスをもつローカルストレージユニットの間で命令及びデータの転送を行う。このため、複数のプロセッサエレメントでコヒーレンスを実現するためのバス転送要求が競合し、共通バスの負荷がプロセッサ数に応じて増加し、高速処理ができない。 First, in order to realize cache coherence, instructions and data are transferred between a cache unit of a processor element that has generated a read or write access and a local storage unit having an access address. For this reason, bus transfer requests for realizing coherence among a plurality of processor elements compete with each other, the load on the common bus increases according to the number of processors, and high-speed processing cannot be performed.
勿論、共通バスを複数設けることで、バス負荷を下げることはできるが、プロセッサ数が10台,20台と増加すると、対応できなくなる。 Of course, by providing a plurality of common buses, the bus load can be reduced. However, when the number of processors increases to 10 or 20, it cannot be handled.
またプロセッサモジュール1000−1,1000−2は、モジュール筐体単位に構築されている。このため共通バス1300−1,1300−2は、筐体のバックパネルを経由してコネクタでケーブル接続される。このためバスの線路長が長くなり、電気的な特性によりバスのクロック周波数を上げることができない。 The processor modules 1000-1 and 1000-2 are constructed in module housing units. For this reason, the common buses 1300-1 and 1300-2 are cable-connected by connectors via the back panel of the housing. For this reason, the line length of the bus becomes long, and the clock frequency of the bus cannot be increased due to electrical characteristics.
例えばモジュール内のバスだけであればクロック周波数を60MHzとできるものが、バックパネルを共有したバス接続では、40MHzに下がってしまう。本発明は、このような従来の問題点に鑑みてなされたもので、プロセッサモジュールの内部と外部に共通バスを設けた2階層の共通バス構造により、各プロセッサモジュールに内蔵した複数のプロセッサのキャッシュと各モジュールに1つ設けたローカルストレージ間でのキャッシュコヒーレンスを効率良く実現して処理性能を高めたキャッシュコヒーレンス装置を提供することを目的とする。 For example, if only the bus in the module is used, the clock frequency can be set to 60 MHz, but if the bus connection sharing the back panel is used, the clock frequency is reduced to 40 MHz. The present invention has been made in view of such a conventional problem, and a cache of a plurality of processors built in each processor module is provided by a two-level common bus structure in which a common bus is provided inside and outside the processor module. An object of the present invention is to provide a cache coherence device that efficiently realizes cache coherence between local storages provided in each module and improves processing performance.
またマルチプロセッサシステムにおいて、特に性能に大きな影響を及ぼすのがシステムバスである。システムバスはデータ転送速度と、バスサイクルの中でデータ転送に使われるサイクルの割合であるバス使用効率を高めなければならない。さもなければシステムバスがボトルネックとなり、プロセッサ数を増やしても性能が向上しなくなる。 In a multiprocessor system, the system bus has a great influence on the performance. The system bus must increase the data transfer rate and the bus use efficiency, which is the ratio of cycles used for data transfer in the bus cycle. Otherwise, the system bus becomes a bottleneck, and performance will not improve even if the number of processors is increased.
データ転送速度を向上するためにはデータバスの幅を拡げたり、信号振幅の小さいインタフェースの採用でバスの動作周波数を上げるのが一般的である。またバス使用効率を高めるためには、メモリアクセスなどの要求を出してから応答を受け取るまでの間、他のバスユニットに使用権を譲るスプリット型転送方式の採用があげられる。 In order to improve the data transfer speed, it is common to increase the bus operating frequency by increasing the width of the data bus or adopting an interface with a small signal amplitude. In order to increase the bus use efficiency, a split type transfer method in which the use right is transferred to another bus unit from when a request such as memory access is issued until a response is received can be employed.
したがって本発明は、分散共有メモリ型のマルチプロセッサシステムにおいて、キャッシュコヒーレンス維持を効率よく実現し、且つシステムの拡張性を損なうことのないキャッシュコヒーセンス装置の共通バスを提供することを目的とする。
Accordingly, an object of the present invention is to provide a common bus of a cache coherence device that efficiently realizes cache coherence and does not impair the expandability of the system in a distributed shared memory multiprocessor system.
図1は本発明の原理説明図である。 FIG. 1 is a diagram illustrating the principle of the present invention.
まず本発明は、複数のプロセッサ16を備えたプロセッサ群を有する。このプロセッサ群は、図1(A)のように、少なくとも1つ以上のプロセッサで構成される例えば3つのプロセッサモジュール10−1〜10−3に分割される。またプロセッサ群が共有する主記憶が設けられる。主記憶は複数のローカル記憶部28に分割され、各ローカル記憶部8はプロセッサモジュール10−1〜10−3上に配置される。以下の説明では、主記憶にローカル記憶の符号を付す。
First, the present invention has a processor group including a plurality of
プロセッサ16の各々には主記憶28のアクセスを高速化するキャッシュユニット18が設けられる。主記憶28のデータのキャッシュユニット18への登録状態はキャッシュライン単位にディレクトリ記憶部30に記憶される。主記憶28とキャッシュユニット18間は第1共通バス22で接続され、プロセッサモジュール10−1〜10−3の間は第2共通バス12で接続される。主記憶28とキャッシュユニット18間のキャッシュコヒーレンスは、スヌープユニット20による内部コヒーレンス処理部で実現される。また複数のプロセッサモジュール10−1〜10−3の間のキャッシュコヒーレンスは、キャッシュ変換部80による外部コヒーレンス処理部で実現される。
Each of the
キャッシュユニット18は、キャッシュラインを複数のサブラインに分割して管理し、ディレクトリ記憶部30は、キャッシュユニット18上のデータが最新値で主記憶28上のデータが旧値となるダーティ状態である場合のキャッシュ状態をサブライン単位に記憶し、キャッシュユニット上と主記憶上のデータが同じ値になるシェア状態をキャッシュライン単位に記憶する。
The
またディレクトリ記憶部30へのキャッシュ状態の記憶は、プロセッサモジュール単位に行われる。具体的には、プロセッサモジュール10−1〜10−3は、ディレクトリ記憶部30に複数のプロセッサモジュール10−1〜10−3との対応状態を記憶するディレクトリ制御部を有し、このディレクトリ制御部によってディレクトリ記憶部30への登録を複数のプロセッサモジュール単位に指定する。
Further, the cache state is stored in the
複数のプロセッサモジュール10−1〜10−3の各々は、複数のプロセッサ16と、各プロセッサ16毎に設けられたキャッシュユニット18と、主記憶として使用されるローカル記憶28と、主記憶28及びディレクトリ記憶部30を管理するメモリ管理ユニット26と、複数のキャッシュユニット18とメモリ管理ユニット26を接続する第1共通バス22と、複数のプロセッサモジュール10−1〜10−3間を接続する第2共通バス12と、第1共通バス22と第1共通バス12のプロトコル変換を管理するプロトコル管理ユニット24と、プロセッサモジュール10−1〜10−3間を第2共通バス12で結合するモジュール接続ユニット32と、第1共通バス22で特定マシンサイクルに同期させてキャッシュユニット18をスヌープすることによりキャッシュコヒーレンスを実現するスヌープユニット20と、メモリ管理ユニット26に設けられ第2共通バス12によるディレクトリ記憶部30の参照に基づきプロセッサモジュール10−1〜10−3間でのコヒーレンスを実現するキャッシュ変換部80を設けている。
Each of the plurality of processor modules 10-1 to 10-3 includes a plurality of
キャッシュユニット18は、例えば256バイトのキャッシュラインを64バイトのサブラインに分割して管理する。これに対応してディレクトリメモリ30には、キャッシュ上のデータが最新値で主記憶上のデータが旧値となるダーティ状態がサブライン単位に登録される。またキャッシュ上と主記憶上のデータが同じ値になるシェア状態は、キャッシュライン単位に登録される。
The
ディレクトリ記憶部30にキャッシュライン単位に登録されたディレクトリエントリ104は、図1(B)のように、例えばダーティ状態の有無を示す複数のサブラインビットD3〜D0と、シェア状態を複数のプロセッサモジュール毎に示すシェアードマップビットS7〜S0を有する。更にシェアードマップビットS7〜S0のビット位置とプロセッサモジュール10の対応関係を登録する構成レジスタを設け、この構成レジスタによって同一マップビットに複数の複数のプロセッサモジュールのシェア状態を登録可能としている。
As shown in FIG. 1B, the
更に、ディレクトリエントリ104のサブラインビットD3〜D0をセットした場合には、このビットセットに対応して最新値を持つキャッシュユニット18が存在するプロセッサモジュール10の情報(PM−ID)を、主記憶28の特定領域に格納する。またサブラインビットD3〜D0をリセットした場合は、このリセットビットに対応して、最新値が存在するプロセッサモジュール10の情報(PM−ID)を、主記憶28の特定領域に格納する。
Further, when the subline bits D3 to D0 of the
プロセッサ16は、キャッシュラインのサブライン単位に読出アクセス又は書込アクセスを行う。第2共通バスとしてのシステムバス12及び第1共通バスとしてのスヌープバス22は、指令転送と応答転送を分離したスプリット形式により情報を転送する。
The
プロセッサの読出アクセスに対するキャッシュコヒーレンスには、次の読出モード1〜3がある。
The cache coherence for the read access of the processor has the following
[読出モード1]
この読出モード1は、第1のプロセッサモジュール10−1内の任意のプロセッサ16の読出アクセスに対し自己のキャッシュユニット18及びスヌープバス22で接続した他の全てのキャッシュユニット18でミスヒットし、且つ読出アドレスが第1のプロセッサモジュール10−1内の主記憶にあり、更に読出アドレスのデータがリモートとなる第2のプロセッサモジュール10−2内のキャッシュユニット18に最新値をもつダーティ状態で存在する場合である。
[Read mode 1]
This read
この場合、読出アクセスを発生した第1のプロセッサモジュール10−1は、システムバス12に指令を発行して第2のプロセッサモジュール10−2にアクセスし、自己のスヌープバス22を介してダーティ状態にあるキャッシュユニット18から最新値を取得した後に、システムバス12で最新値を第1のプロセッサモジュール10−1に応答する。第1のプロセッサモジュール10−1は、この応答で得られた最新値をアクセス元のキャッシュユニット18に格納して読出アクセスに応答させ、同時に主記憶28に最新値を書き込むことでキャッシュコヒーレントを実現する。
In this case, the first processor module 10-1 that has generated the read access issues a command to the
ここで第1のプロセッサモジュール10−1、主記憶28に最新値を書き込んだ際に、ディレクトリ記憶部30のディレクトリエントリ104をダーティ状態をシェア状態に更新し、またアクセス元のキャッシュユニット18はタグメモリの無効化状態をシェア状態に更新する。
Here, when the latest value is written in the first processor module 10-1 and the
[読出モード2]
この読出モード2は、第1のプロセッサモジュール10−1内の任意のプロセッサ16の読出アクセスに対し自己のキャッシュユニット18及びスヌープバス22で接続した他の全てのキャッシュユニット18でミスヒットし、且つ読出アドレスが第2のプロセッサモジュール10−2内の主記憶28にあり、更に読出アドレスのデータが第3のプロセッサモジュール10−3内のキャッシュユニット18に最新値をもつダーティ状態で存在する場合である。
[Read mode 2]
This read
この場合、第1のプロセッサモジュール10−1は、システムバス12に指令を発行して第2のプロセッサモジュール10−2にアクセスし、第2のプロセッサモジュール10−2はシステムバス12から受領した指令に基づき、システムバス12に指令を発行して第3のプロセッサモジュール10−3にアクセスする。第3のプロセッサモジュール10−3は自己のスヌープバス22によってダーティ状態にあるキャッシュユニット18から最新値を取得した後に、システムバス12で最新値を第1及び第2のプロセッサモジュール10−1,10−2に応答する。
In this case, the first processor module 10-1 issues a command to the
第2のプロセッサモジュール10−2は、応答の受領で得られた最新値を主記憶28に書き込み、また第1のプロセッサモジュール10−1は、応答の受領で得られた最新値をアクセス元のキャッシュユニット18に格納して読出アクセスに応答させる。
The second processor module 10-2 writes the latest value obtained by reception of the response to the
ここで、第2のプロセッサモジュール10−2は、主記憶28に最新値を書き込んだ際にディレクトリ記憶部30のディレクトリエントリ104をダーティ状態をシェア状態に更新する。また第1のプロセッサモジュール10−1のアクセス元のキャッシュユニット18は、タグメモリの無効化状態をシェア状態に更新する。
Here, the second processor module 10-2 updates the
[読出モード3]
この読出モード3は、あるプロセッサモジュール内のキャッシュ間でキャッシュコヒーレンスを実現する。即ち、任意のプロセッサモジュール10−1内の任意のプロセッサ14の読出アクセスに対し自己のキャッシュユニット14はミスヒットしたが、スヌープバス22で接続した他のプロセッサのキャッシュユニットに最新値が存在する場合である。
[Read mode 3]
This read
この場合、両キャッシュユニット間でスヌープバス22を介して最新値の転送を実行してアクセス元のキャッシュユニット14に格納し、読出アクセスに応答させる。この場合のスヌープバス22を使用した最新値の転送はキャッシュサブライン単位で実行される。
In this case, the latest value is transferred between the cache units via the snoop
次にプロセッサの書込アクセスに対するキャッシュコヒーレンスには、次の書込モード1〜5がある。
Next, the cache coherence for the write access of the processor includes the following
[書込モード1]
この書込モード1は、第1のプロセッサモジュール10−1内の任意のプロセッサ16の書込アクセスに対し、自己のキャッシュユニット14及びスヌープバス22で接続した他のキャッシュユニット14に書込権を所有した状態でコピー値が格納されておらずにミスヒットとなり、且つ書込アドレスが第1のプロセッサモジュール10−1内の主記憶28にあり、更に、主記憶28の書込アドレスのコピー値が第1のプロセッサモジュール10−1以外の他の複数のプロセッサモジュール10−2,10−3のキャッシュユニット18にシェア状態で存在する場合である。
[Write mode 1]
In this
この場合、第1のプロセッサモジュール10−1は、シェア状態にある全てのプロセッサモジュール10−2,10−3に対してシステムバス12を使用して無効化指令を発行する。シェア状態にある全てのプロセッサモジュール10−2,10−3は、無効化指令を同時に受理して、無効化に成功した際にシステムバス12を使用して第1のプロセッサモジュールに独立に応答する。
In this case, the first processor module 10-1 issues an invalidation command to all the processor modules 10-2 and 10-3 in the share state using the
第1のプロセッサモジュール10−1は、システムバス12からの全ての応答を受理したことで無効化の成功を認識して、主記憶28の書込アドレスのコピー値をアクセス元のキャッシュユニット18に格納して書込アクセスにより上書きさせる。
The first processor module 10-1 recognizes the success of the invalidation by receiving all the responses from the
ここで、第1のプロセッサモジュール10−1は、無効化の成功を認識してアクセス元のキャッシュユニット18にコピーバックした際に、ディレクトリ記憶部30のディレクトリエントリにおけるシェア状態をダーティ状態に更新する。
Here, when the first processor module 10-1 recognizes the success of the invalidation and copies back to the access
[書込モード2]
この書込モード2は、第1のプロセッサモジュール10−1内の任意のプロセッサ16の書込アクセスに対し自己のキャッシュユニット18及びスヌープバス22で接続した他のキャッシュユニット18にコピー値が書込権を所有した状態で登録されておらずにミスヒットとなり、且つ書込アドレスが第1のプロセッサモジュール10−1内の主記憶28であり、更に主記憶28の書込アドレスのコピー値が第1のプロセッサモジュール10−1を含む複数のプロセッサモジュール10−1〜10−3のキャッシュユニットにシェア状態で存在する場合である。
[Write mode 2]
In this
この場合、第1のプロセッサモジュール10−1は、シェア状態にある全てのプロセッサモジュール10−2,10−3に対してシステムバス12を使用して無効化指令を発行するのと並行して、第1のプロセッサモジュール10−1内のキャッシュユニットにスヌープバス22を使用して無効化指令を発行する。
In this case, the first processor module 10-1 issues an invalidation command to all the processor modules 10-2 and 10-3 in the share state using the
シェア状態にある全てのプロセッサモジュール10−2,10−3は無効化指令を同時に受理して、無効化の成功をシステムバス12を使用して第1のプロセッサモジュール10−1に独立に応答するのと並行して、第1のプロセッサモジュール10−1内のキャッシュユニット18は、スヌープバス22を使用して無効化の成功を応答する。
All the processor modules 10-2 and 10-3 in the shared state simultaneously accept the invalidation command and respond to the first processor module 10-1 independently using the
第1のプロセッサモジュール10−1は、システムバス12からの全ての応答と、自己のスヌープバス22からの応答を受理したことで無効化の成功を認識して、主記憶28の書込アドレスのコピー値をキャッシュユニット18に格納してプロセッサ16の書込アクセスにより上書きさせる。
The first processor module 10-1 recognizes the success of invalidation by receiving all responses from the
この場合にも書込モード1と同様、第1のプロセッサモジュール10−1は、無効化の成功を認識してアクセス元のキャッシュユニットにコピーした際に、ディレクトリ記憶部30のディレクトエントリにおけるシェア状態をダーティ状態に更新する。
Also in this case, as in the
[書込モード3]
この書込モード3は、第1のプロセッサモジュール10−1内のプロセッサ16の書込アクセスに対し自己のキャッシュユニット18及びスヌープバス22を介して接続した他のキャッシュユニット18にコピー値が書込権を所有した状態で登録されておらずにミスヒットとなり、書込アドレスが第2のプロセッサモジュール10−2内の主記憶28にあり、更に主記憶28の書込アドレスのコピー値が第2のプロセッサモジュール10−2以外の他の複数のプロセッサモジュール10−3,10−4のキャッシュユニットにシェア状態で存在する場合である。
[Write mode 3]
In this
この場合、第1のプロセッサモジュール10−1は、システムバス12を使用して第2のプロセッサモジュール10−2に書込所有権の要求指令(ホームコマンド)を発行し、書込所有権の要求指令を受領した第2のプロセッサモジュール10−2は、シェア状態にある他の全てのプロセッサモジュール10−3,10−4に対してシステムバス12を使用して無効化指令(パージコマンド)を発行する。
In this case, the first processor module 10-1 uses the
シェア状態にある全てのプロセッサモジュール10−3,10−4は、無効化指令を同時に受理して、無効化に成功した際にシステムバス12を使用して第2のプロセッサモジュール10−2に独立に応答する。
All the processor modules 10-3 and 10-4 in the shared state receive the invalidation command at the same time, and when succeeding in the invalidation, use the
第2のプロセッサモジュール10−2は全ての無効化の応答を受理したことで無効化の成功を認識すると、第1のプロセッサモジュール10−1に対してシステムバス12を使用して、自己の主記憶28のアクセスアドレスのコピー値を含む書込所有権の移動を応答する。
When the second processor module 10-2 recognizes the success of the invalidation by receiving all the invalidation responses, the second processor module 10-2 uses the
第1のプロセッサモジュール10−1は、書込所有権の応答の受領により得られたコピー値をアクセス元のキュッシュユニット18に格納して、プロセッサ16の書込アクセスで上書きさせる。
The first processor module 10-1 stores the copy value obtained by receiving the write ownership response in the access
ここで、第2のプロセッサモジュール10−1は、無効化の成功を認識して書込所有権を移動した際に、自己のディレクトリ記憶部30のディレクトリエントリにおけるシェア状態をダーティ状態に更新する。
Here, when the second processor module 10-1 recognizes the success of the invalidation and moves the write ownership, the second processor module 10-1 updates the share state in the directory entry of its own
[書込モード4]
この書込モード4は、第1のプロセッサモジュール10−1内の任意のプロセッサの書込アクセスに対し自己のキャッシュユニット18及びスヌープバス22を介して接続した他のキャッシュユニット14にコピー値が書込権を所有した状態で登録されておらずにミスヒットとなり、書込アドレスが第2のプロセッサモジュール10−2内の主記憶28にあり、更に、この主記憶28の書込アドレスのコピー値が第2のプロセッサモジュール10−2を含む複数のプロセッサモジュール10−3,10−4のキャッシュユニット18にシェア状態で存在する場合である。
[Write mode 4]
In this
この場合、第1のプロセッサモジュール10−1は、第2のプロセッサモジュール10−2に書込所有権の要求指令(ホームコマンド)を発行する。書込所有権の要求指令を受領した第2のプロセッサモジュール10−2は、シェア状態にある全てのプロセッサモジュール10−3,10−4に対してシステムバス12を使用して無効化指令(パージコマンド)を発行するのと並行して、自己のシェア状態にあるキャッシュユニット18に対しスヌープバス22を使用して無効化指令を発行する。
In this case, the first processor module 10-1 issues a write ownership request command (home command) to the second processor module 10-2. The second processor module 10-2 that has received the write ownership request command uses the
シェア状態にある全てのプロセッサモジュール10−3,10−4が無効化指令を同時に受理して、無効化の成功をシステムバス12を使用して第2にプロセッサモジュール10−2に独立に応答するのと並行して、第2のプロセッサモジュール10−2のキャッシュユニット18は無効化の成功をスヌープバス22を使用して応答する。
All the processor modules 10-3 and 10-4 in the shared state accept the invalidation command at the same time, and secondly, the success of invalidation is responded independently to the processor module 10-2 using the
第2のプロセッサモジュール10−2は、システムバス12からの全ての無効化成功の応答とスヌープバス22からの無効化成功の応答を受領したことで無効化の成功を認識して、第1のプロセッサモジュール10−1に対してシステムバス12を使用して、自己の主記憶28の書込アドレスのコピー値を含む書込所有権の移動を応答する。
The second processor module 10-2 recognizes the success of invalidation by receiving all the invalidation success responses from the
第1のプロセッサモジュール10−1は、書込所有権の応答の受領で得られたコピー値をアクセス元のキュッシュユニット18に格納して、プロセッサ16の書込アクセスで上書きさせる。
The first processor module 10-1 stores the copy value obtained by receiving the write ownership response in the access
ここで、第2のプロセッサモジュール10−2は、無効化の成功を認識して書込所有権の移動を応答した際に、自己のディレクトリ記憶部30のディレクトリエントリにおけるシェア状態をダーティ状態に更新する。
Here, when the second processor module 10-2 recognizes the success of the invalidation and responds to the transfer of write ownership, the second processor module 10-2 updates the share state in the directory entry of its own
また書込モードにおける無効化指令は、キャッシュサブライン単位で発行する。更に、無効化指令の応答時には、無効化を指令したサブラインが含まれるキャッシュラインの他のサブラインの状態を返送する。 The invalidation command in the write mode is issued for each cache subline. Further, at the time of response to the invalidation command, the state of the other subline of the cache line including the subline commanded for invalidation is returned.
[書込モード5]
この書込モード5は、第1のプロセッサモジュール10−1内の任意のプロセッサ16の書込アクセスに対し自己のキャッシュユニット18及びスヌープバス22で接続した他のキャッシュユニット18にコピー値が書込権を所有した状態で登録されておらずにミスヒットとなり、且つ書込アドレスが第1のプロセッサモジュール10−1の主記憶28にあり、更に主記憶28の書込アドレスの最新値が第2のプロセッサモジュール10−2のキャッシュユニット18に書込権を所有したダーティ状態で存在する場合である。
[Write mode 5]
In this
この場合、第1のプロセッサモジュール10−1は、ダーティ状態にある第2のプロセッサモジュール10−2に対してシステムバス12を使用して書込所有権の要求指令(リモートコマンド)を発行する。第2のメモリモジュール10−2は、書込所有権の要求指令を受理して、キャッシュユニット18の最新値を含む書込所有権の移動をシステムバス12を使用して第1のプロセッサモジュール10−1に応答する。
In this case, the first processor module 10-1 issues a write ownership request command (remote command) to the second processor module 10-2 in the dirty state using the
第1のプロセッサモジュール10−1は、書込所有権の応答により得られた最新値を、アクセス元のキャッシュユニット18に格納してプロセッサ16による書込アクセスで上書きさせる。
The first processor module 10-1 stores the latest value obtained as a result of the write ownership response in the
ここで、第2のプロセッサモジュール10−2のキャッシュユニット18は、書込所有権を移動した際にタグメモリのダーティ状態を無効化状態に更新し、また第1のプロセッサモジュール10−1は書込所有権を受領した際に、自己のディレクトリ記憶部30のディレクトリエントリにおけるダーティ状態を、キャッシュ上に最新値が存在するメモリモジュール10−1の情報に変更したダーティ状態に更新する。
Here, the
[書込モード6]
この書込モード6は、第1のプロセッサモジュール10−1内のプロセッサ16の書込アクセスに対し自己のキャッシュユニット18及びスヌープバス22を介して接続した他のキャッシュユニット18にコピー値が書込権を所有した状態で登録されておらずにミスヒットとなり、書込アドレスが第2のプロセッサモジュール10−2内の主記憶28にあり、更にこの主記憶28の書込アドレスの最新値が第3のプロセッサモジュール10−3のキャッシュユニット18に書込権を所有したダーティ状態で存在する場合である。
[Write mode 6]
In this
この場合、第1のプロセッサモジュール10−1は、第2のプロセッサモジュール10−2にシステムバス12を使用して書込所有権の要求指令を発行する。書込所有権の要求指令を受領した第2のプロセッサモジュール10−2は、第3のプロセッサモジュール10−3に対してシステムバス12を使用して書込所有権の要求指令を発行する。
In this case, the first processor module 10-1 uses the
書込所有権の要求指令を受領した第3のプロセッサモジュール10−3は、キャッシュユニット18の最新値を含む書込所有権をシステムバス12を使用して第1及び第2のプロセッサモジュール10−1,10−2に応答する。
The third processor module 10-3 having received the write ownership request command uses the
第2のプロセッサモジュール10−2は、書込所有権の応答を受領して書込所有権の移動を認識する。また第1のプロセッサモジュール10−1は、書込所有権の受領で得られた最新値をアクセス元のキュッシュユニット18に格納して、プロセッサ16の書込アクセスで上書きさせる。
The second processor module 10-2 receives the write ownership response and recognizes the write ownership transfer. The first processor module 10-1 stores the latest value obtained by receiving the write ownership in the access
ここで、第3のプロセッサモジュール10−3のキャッシュユニット18は、書込所有権を移動した際にタグメモリのダーティ状態を無効化状態に更新する。また第2のプロセッサモジュール10−2は、書込所有権の移動を認識した際に、自己のディレクトリ記憶部30のディレクトリエントリにおけるダーティ状態を、最新値の存在するプロセッサモジュール10−1の情報に変更したダーティ状態に更新する。
Here, the
更に第1のプロセッサモジュール10−1のアクセス元のキャッシュユニット18は、最新値を格納した際に、タグメモリの無効化状態を書込権が存在するダーティ状態に更新する。
Further, the access
[書込モード7]
この書込モード7は、プロセッサモジュール内の複数のキャッシュ間でアクセスする場合である。即ち、第1のプロセッサモジュール10−1内の任意のプロセッサ16の書込アクセスに対し自己のキャッシュユニット18はミスヒットしたが、スヌープバス22を介して接続した他のキャッシュユニット14に書込アドレスの最新値が書込権を所有したダーティ状態で存在する場合である。
[Write mode 7]
This
この場合、スヌープバス22を介してキャッシュユニット18間でデータ転送及び書込所有権の移動を行ってアクセス元のキャッシュユニット18に格納した後に、プロセッサ16の書込アクセスにより上書きさせる。ここで、アクセス先のキャッシュユニット18は書込所有権を移動した後に、タグメモリのダーティ状態を無効化状態に更新する。またアクセス元のキャッシュユニット18は、書込権を獲得した後にタグメモリを無効化状態から書込所有権が存在するダーティ状態に更新する。
In this case, data transfer and transfer of write ownership are performed between the
[キャッシュユニットのアクセス競合処理]
本発明は、プロセッサモジュールのキャッシュユニットに対し、モジュール内部からのアクセスとモジュール外部からのアクセスが競合した場合、次の競合処理を行う。まず先発したモジュールにキャッシュユニットを獲得させて後発のモジュールにリトライの指示を行わせる。更に、先発したモジュールに競合した相手先モジュールとアクセスアドレスを記憶させ、自己のアクセス終了後に競合した相手先モジュール以外からのアクセスコマンドを受けた場合はリトライを指示し、競合した相手先のリトライによるアクセスコマンドを優先的に受け付ける。
[Cache unit access conflict processing]
According to the present invention, when the access from the inside of the module and the access from the outside of the module compete for the cache unit of the processor module, the following contention processing is performed. First, the first module is made to acquire a cache unit, and the second module is instructed to retry. Furthermore, the competing partner module and the access address are stored in the starting module, and when an access command is received from a partner module other than the competing partner module after completion of its own access, a retry is instructed. Accept access commands preferentially.
具体的には、プロセッサモジュール10−2のキャッシュユニット18に対し、モジュール内部のあるプロセッサ16からのアクセスと外部のプロセッサモジュール10−2からのアクセスが競合し、プロセッサ16が先発してキャッシュユニット18を獲得した場合である。
Specifically, for the
この場合、プロセッサ16は、プロセッサモジュール10−1にリトライの指示を行わせ、更に、競合したプロセッサモジュール10−1とアクセスアドレスを記憶し、自己のアクセス終了後に競合したプロセッサモジュール10−1以外からのアクセスコマンドを受けた場合はリトライを指示し、競合した第2プロセッサモジュール10−1のリトライによるアクセスコマンドを優先的に受け付ける。
In this case, the
これにより外部のプロセッサモジュール10−1が、プロセッサモジュール10−2に内蔵している複数のプロセッサ16とのアクセスの競合に負けてリトライを繰り返し、システムバス12のタイムエラーとなってしまうことを未然に防止し、システムバス12を経由したキャッシュコヒーレンスの効率化と高信頼性を向上できる。
As a result, the external processor module 10-1 repeats retries due to access conflicts with the plurality of
またキャッシュユニット18を獲得したモジュールは、自己のアクセス終了後、競合相手先のモジュールからのアクセスが所定時間発生しない場合は、競合相手先とアクセスアドレスの記憶内容を初期化して、競合相手先の優先受付けを解除する。
In addition, if the module that has acquired the
[主記憶に対するコピーバックの書込所有権]
本発明のプロセッサモジュールは、主記憶28に最新データがなく複数のキャッシュユニット18に存在する場合、複数のキャッシュユニットの1つが最新データを主記憶28へコピーバックするための書込所有権を保有している。この状態で、書込所有権を有するキャッシュユニットでプロセッサ16による最新データのリプレースが発生した場合、書込所有権を最新データを保有しているキャッシュユニットに委譲し、最新データを保有するキャッシュユニットが1つになるまで主記憶28への最新データのコピーバックを抑止して行わないようにする。
[Copyback write ownership to main memory]
When there is no latest data in the
これによって、複数のキャッシュユニット18及び主記憶28側のメモリ管理ユニット(ディレクトリ側)26を結合しているスヌープバス22の負担を軽減する。
As a result, the burden on the snoop
書込所有権の委譲は、複数のキャッシュユニットは固有の識別番号#0〜#3をもつことから、最新データをリプレースしたキャッシュユニットの識別番号を基に、予め定めた順番に従って書込所有権を委譲する。
Since the plurality of cache units have unique
また主記憶28を管理するメモリ管理ユニット26は、最新データがキャッシュユニット18に存在し主記憶28のデータがダーティ状態にあることを示す書込所有権を有するが、キャッシュユニット18間で書込所有権の委譲が行われても、メモリ管理ユニット26の書込所有権を他のプロセッサモジュールに移動せずにそのまま維持する。
The
[共有システムバス]
また本発明に従えば、分散共有メモリ型のマルチプロセッサシステムにおいて、キャッシュコヒーレンシ維持を効率よく実現し、且つシステムの拡張性を損なうことのないキャッシュコヒーセンス装置の共通システムバスが提供される。更に、大規模なマルチプロセッサの利用が期待される基幹システムへの使用を考慮した信頼性の高い共有システムバスが提供される。更に、異なったバスとの接続を考慮し、既存のバス資産の有効活用を可能とする共有バスが提供される。
[Shared system bus]
Further, according to the present invention, there is provided a common system bus of a cache coherence device that efficiently realizes cache coherency and does not impair the expandability of the system in a distributed shared memory multiprocessor system. Furthermore, a highly reliable shared system bus is provided in consideration of use in a backbone system that is expected to use a large-scale multiprocessor. Furthermore, in consideration of connection with different buses, a shared bus that enables effective use of existing bus assets is provided.
本発明の共有システムバスとして機能する第2共有バス12は、複数のプロセッサモジュールのバス接続ユニット32とバスアービタ(バス調停ユニット)とを結合して、複数のプロセッサモジュールの間でスプリット型パケット転送によりバスコマンドの転送を行い、バスコマンドに、アクセス要求元(ソースID)を示すソースフィールド、第1のアクセス要求先(第1宛先ID)を示す第1宛先フィールド、及び第2のアクセス要求先(第2宛先ID)を示す第2宛先フィールドの3つを備えたことを特徴とする。
The second shared
ソースフィールド、第1宛先フィールド、及び第2宛先フィールドの3つをもつ本発明のバスコマンドは、リードバスコンドして使用される。リード要求元となる第1プロセッサモジュール10−1は、自己のリード要求の対象データが第2プロセッサモジュール10−2の主記憶28に存在する場合、ソースフィールドに自己のユニットID#1を指定し、第1宛先フィールドに第2プロセッサモジュールのユニットID#2を指定した第1バスコマンドを送出する。この場合、第2宛先フィールドは使用しない。
The bus command of the present invention having three of a source field, a first destination field, and a second destination field is used as a read bus command. The first processor module 10-1 that is the read request source specifies its own
第1バスコマンドを受信した第2プロセッサモジュール10−2は、リード要求の最新データが主記憶28に存在せずに第3プロセッサジュール10−3のキャッシュユニット18に存在する場合、ソースフィールドに自己のユニットID#2を指定し、第1宛先フィールドに最新データをもつ第3プロセッサモジュール10−3のユニットID#3を指定し、更に第2宛先フィールドにアクセス要求元の第1プロセッサモジュール10のユニットID#1を指定した第2バスコマンドを送出する。
The second processor module 10-2 that has received the first bus command, if the latest data of the read request does not exist in the
第2バスコマンドを受信した第3プロセッサモジュール10−3は、ソースフィールドに自己のユニットID#3を指定し、第1宛先フィールドに主記憶28の第2プロセッサモジュール10−2のユニットID#2を指定し、更に第2宛先フィールドにリード要求元の第1プロセッサモジュール10−1のユニットID#1を指定したリプライコマンドを送出して、第1及び第2プロセッサモジュール10−1,10−2に同時にリードデータを応答する。
Receiving the second bus command, the third processor module 10-3 designates its own
この場合、第1プロセッサモジュール10−1は、第2プロセッサモジュール10−2から第3プロセッサモジュール10−3に対し第2バスコマンドが送出された際に、通常のバス転送より時間がかかることから、バス転送のタイムアウトを監視するタイマの設定時間を、第1時間からより長い第2時間に変更する。 In this case, the first processor module 10-1 takes longer than normal bus transfer when the second bus command is sent from the second processor module 10-2 to the third processor module 10-3. The set time of the timer for monitoring the bus transfer timeout is changed from the first time to the longer second time.
更に、第2共有バス12で使用するバスコマンドは、ソースフィールド、第1宛先フィールドおよび第2宛先フィールドの各々を、第2共有バスを示すバス識別子(バスID)とプロセッサモジュール等のユニットを示すユニット識別子(ユニットID)の2つで表現する。これによって複数の第2共有バスをバス間接続ユニットを介して相互に接続した場合、別の第2共有バス内のユニットを指定することができる。
Further, the bus command used in the second shared
また複数のプロセッサモジュールを第2共有バス18で接続したサブシステムを、サブシステム接続ユニットを介して複数結合した拡張システムの場合、バスコマンドにサブシステム間での転送を示すサブシステム拡張識別子を設ける。このサブシステム拡張識別子が有効なときに、バスコマンドの各サブシステム毎のコマンドフィールドを有し、各々ソースフィールド、第1宛先フィールドおよび第2宛先フィールドの各々を指定して、異なるサブシステムのユニットを指定することができるようにする。
Further, in the case of an extended system in which a plurality of subsystems connected by a plurality of processor modules via the second shared
更に、複数のプロセッサモジュールを接続した第2共有バス18に対し、異種のシステムバスをもつサブシステムが異種バス接続ユニットを介して結合された場合、バスコマンドは、異種のシステムバスをエミュレートするコマンドをコマンドフィールドの一部に備え、異種のシステムバス上のユニットを指定できるようにしている。
Further, when a subsystem having a different system bus is coupled to the second shared
バスマスタとしての第1プロセッサモジュール10−1がバススレーブとしての第2プロセッサモジュール10−2へのバスコマンドの転送中に、第2プロセッサモジュール10−2で異常を検出した場合、第2プロセッサモジュール10−2は、エラーリプライバスコマンドを送出して第1プロセッサモジュール10−1にエラー通知する。 When the first processor module 10-1 as the bus master detects an abnormality in the second processor module 10-2 while transferring the bus command to the second processor module 10-2 as the bus slave, the second processor module 10 -2 sends an error reply bus command to notify the first processor module 10-1 of an error.
またバスマスタとしての第1プロセッサモジュール10−1から第2プロセッサモジュール10−2へのバスコマンドのバス転送でバススレーブとして第2プロセッサモジュール10−2が確定するまでは、バスアービタがバス異常を監視しており、バスアービタが異常を検出すると、リプライバスコマンドを送出して第1プロセッサモジュール10−1にエラー通知する。 Also, the bus arbiter monitors the bus abnormality until the second processor module 10-2 is determined as a bus slave by bus transfer of the bus command from the first processor module 10-1 as the bus master to the second processor module 10-2. When the bus arbiter detects an abnormality, it sends a reply bus command to notify the first processor module 10-1 of an error.
このエラーリプライバスコマンドは、検出した異常の原因を分類フィールド、アクセス経路が複数存在する場合にどのアクセス経路で異常が発生したかを示すフィールド、及び検出した異常の種類を示すフィールドを有する。 This error reply bus command has a classification field indicating the cause of the detected abnormality, a field indicating in which access path an abnormality has occurred when there are a plurality of access paths, and a field indicating the type of detected abnormality.
また第2共有バス12で使用するバスコマンドは、第1宛先フィールドおよび第2宛先フィールドの各々に、ソースユニットの動作識別子(アクセスID)を格納するアクセス識別子フィールドを設け、このアクセス識別子フィールドの動作識別子によりバスコマンドを修飾し、バスコマンドの動作モードを変更する。
The bus command used in the second shared
例えばキャッシュコヒーレンスのために、アクセス要求元となる第1プロセッサモジュール10−1からのアクセス先の主記憶28をもつ第2プロセッサモジュール10−2に第1バスコマンドを送出し、第2プロセッサモジュール10−2から最新データをキャッシュユニット18に保有する第3プロセッサモジュール10−3に第2バスコマンドを送出し、最終的に第3プロセッサモジュール10−3からリプライバスコマンドを送出する場合、アクセス識別子を次のように指定する。
For example, for cache coherence, a first bus command is sent to the second processor module 10-2 having the
まず第1プロセッサモジュール10−1は、第2バスコマンドにおける第1宛先フィールドのアクセス識別子フィールドに自己の動作識別子を指定する。第2プロセッサモジュール10−2は、第2バスコマンドにおける第1及び第2宛先フィールドのアクセス識別子フィールドの各々に、第2バスコマンドと同じ動作識別子を指定する。 First, the first processor module 10-1 designates its own operation identifier in the access identifier field of the first destination field in the second bus command. The second processor module 10-2 designates the same operation identifier as that of the second bus command in each of the access identifier fields of the first and second destination fields in the second bus command.
第3プロセッサモジュール10−3は、リプライバスコマンドにおける第1及び第2宛先フィールドのアクセス識別子フィールドの各々に、第2バスコマンドと同じ動作識別子を指定する。そして、第1及び第2プロセッサモジュール10−1,10−2の各々は、リプライバスコマンドの自己の宛先フィールドの動作識別子とバスコマンド送出時に記憶保持した動作識別子との一致を判断して自己のバスコマンドに対するリプライであると判断する。 The third processor module 10-3 designates the same operation identifier as that of the second bus command in each of the access identifier fields of the first and second destination fields in the reply bus command. Each of the first and second processor modules 10-1 and 10-2 determines its own match between the operation identifier of its own destination field of the reply bus command and the operation identifier stored and held when the bus command is transmitted. It is determined that the reply is for the bus command.
このためアクセス要求元の第1プロセッサモジュール10−1は、自己の送出した第1バスコマンドが第2プロセッサモジュール10−2による第2バスコマンドの送出の契機となり、結果として第2バスコマンドに対するリプライコマンドが第3プロセッサモジュールから送出されるが、第1プロセッサモジュールは第2バスコマンドを意識せず、あたかも自己の第1バスコマンドに対するリプライとして受領することができる。 For this reason, the first processor module 10-1 as the access request source sends a reply to the second bus command as a result of the transmission of the second bus command by the second processor module 10-2 by the first bus command sent by itself. The command is sent from the third processor module, but the first processor module is not aware of the second bus command and can receive it as a reply to its own first bus command.
第2共有バス12のハードウェアとしては、データ及びパリティを並列転送するデータバス線と、データバス線とは独立にバスシーケンスの動作を規定するタグ情報線を有し、タグ情報線によるタグ情報の指定により、1回のバス獲得で複数のバスサイクルを継続する。このタグ情報線によるリトライの指定により、バスサイクルの任意のタイミングで実行中のバスシーケンスの無効化を指示することができる。
The hardware of the second shared
またタグ制御線で相互に接続された複数のプロセッサモジュールのバス接続ユニット32とバスアービタは、複数のバス接続ユニットのいずれもバスサイクルを開始していない場合には、バスアービタから各バス接続ユニットに対し個別に出力されるバス使用許可信号(バスグラント信号)とバスアービタから全てのバス接続ユニットに共通に出力されるバス使用開始指示信号(タグバス信号)を同時に受信した特定のバス接続ユニットがバスサイクルを開始する。
Further, the
既に他のバス接続ユニットがバスシーケンスを開始していた場合には、バス使用許可信号を受け取ったバス接続ユニットが、他のバス接続ユニットが出力するバスサイクルの終了信号を検出してバスサイクルを開始する。 If another bus connection unit has already started the bus sequence, the bus connection unit that has received the bus use permission signal detects the bus cycle end signal output by the other bus connection unit and executes the bus cycle. Start.
またバスアービタは、特定タイミングで受理したバス接続ユニットからのバス使用要求が全て処理されるまで、後続のバス使用要求処理を保留する。 The bus arbiter suspends subsequent bus use request processing until all bus use requests from the bus connection units received at the specific timing are processed.
タグ情報線は、通常のバス使用要求信号に使用する第1バス使用要求線と、異常報告等の緊急バス使用要求信号に使用する第2バス使用要求線を有する。バスアービタは、特定タイミングで受理したバス使用要求信号の中で緊急要求信号を出力したバス接続ユニッに優先してバス使用許可を与える。 The tag information line has a first bus use request line used for a normal bus use request signal and a second bus use request line used for an emergency bus use request signal such as an abnormality report. The bus arbiter gives the bus use permission in preference to the bus connection unit that outputs the emergency request signal among the bus use request signals received at the specific timing.
更に、第1及び第2バス使用要求線の信号の組み合わせで、通常のバス使用要求、緊急バス使用要求、バス使用要求無し、及びバス接続ユニット自身の非動作状態の通知を行う。 Furthermore, a combination of signals on the first and second bus use request lines is used to notify a normal bus use request, an emergency bus use request, no bus use request, and a non-operating state of the bus connection unit itself.
[第2ディリレクトリ記憶部]
本発明の別の形態にあっては、メモリ管理ユニット26のディレクトリ記憶部30に加え、バス接続ユニット32は第2ディレクトリ記憶部を設けたことを特徴とする。この第2ディレクトリ記憶部には、他のプロセッサモジュールに対するアクセス要求で応答待ちにある状態をキャッシュライン単位に登録し、他のプロセッサモジュールからのアクセスに対し第2ディレクトリの記憶部の参照で同一キャッシュラインのアクセスを認識した場合、ビジーを応答する。
[Second directory storage unit]
In another embodiment of the present invention, in addition to the
具体的には、リモートとしての第1プロセッサモジュール10−1からライトアクセスを受けたホームとしての第2プロセッサモジュール10−2が、リモートの第3プロセッサモジュール10−3に対し同じキャッシュラインの無効化を要求した場合、リモートに対する無効化要求の完了待ちの状態を第2ディレクトリ記憶部に登録し、他のプロセッサモジュールからの同一キャッシュラインのアクセス要求に対し、第2共有バス12にビジーを応答する。
Specifically, the second processor module 10-2 as the home that has received write access from the first processor module 10-1 as the remote invalidates the same cache line with respect to the remote third processor module 10-3. Is registered in the second directory storage unit, and a busy response is sent to the second shared
このビジー応答は、要求元のプロセッサモジュール内のキャッシュユニットまで伝えてリトライを行わせる。また無効化完了待ちの状態で、ホームの第2プロセッサモジュール10−2に対する他のプロセッサモジュールのアクセス要求で、パス接続ユニット32のバッファフルとなった場合、アクセス要求元のプロセッサモジュールのバス接続ユニットにビジーを応答し、キャッシュユニットまでは伝えずに、第2共有バス32上でのリトライを行わせる。
This busy response is transmitted to the cache unit in the requesting processor module to cause a retry. If the buffer connection of the
このような第2共有バス側の第2ディレクトリ記憶部により、他のプロセッサモジュールのアクセス要求を、メモリ管理ユニット26側まで伝える必要がなく、ビシー応答を高速化できる。
By such a second directory storage unit on the second shared bus side, it is not necessary to transmit an access request of another processor module to the
このような本発明のキャッシュコヒーレント装置によれば次の作用が得られる。まず複数のプロセッサモジュールに設けた複数のキャッシュ付きのプロセッサを内部のスヌープバス(第1共通バス)を介して相互に接続すると共に主記憶と接続する。更に、各プロセッサモジュールは主記憶側をシステムバス(第2共通バス)を介して接続する。この2階層の共通バス構成により、プロセッサモジュール内でのキャッシュコヒーレンスのバス動作と、プロセッサモジュール間でのキャッシュコヒーレンスのバス動作を分離することができる。即ち、内部スヌープバスはモジュール内のプロセッサ数に外部からアクセスする1台のプロセッサを加えたバス負荷で済む。また外部のシステムバスは、プロセッサモジュールの数分のバス負荷で済む。このため、内部および外部の各共通バスの負荷をプロセッサ数が増加しても抑えることができ、高速のキャッシュコヒーレンスを実現して処理性能を向上できる。 According to such a cache coherent device of the present invention, the following operation is obtained. First, a plurality of processors with caches provided in a plurality of processor modules are connected to each other via the internal snoop bus (first common bus) and to the main memory. Furthermore, each processor module connects the main memory side via a system bus (second common bus). With this two-layer common bus configuration, it is possible to separate the cache coherence bus operation within the processor module and the cache coherence bus operation between the processor modules. That is, the internal snoop bus may be a bus load obtained by adding one processor to be accessed from the outside to the number of processors in the module. In addition, the external system bus requires a bus load corresponding to the number of processor modules. Therefore, the load on each of the internal and external common buses can be suppressed even when the number of processors increases, and high-speed cache coherence can be realized to improve processing performance.
また内部のスヌープバスは、プロセッサモジュール外部への接続を必要としないため、線路長を短くして電気的な特性を良好に保つことができ、これによってバスのクロック周波数を高く、内部に設けたプロセッサのキャッシュ間でのキャッシュコヒーレンスを高速処理で実現できる。 Also, since the internal snoop bus does not require connection to the outside of the processor module, the line length can be shortened to maintain good electrical characteristics, thereby increasing the clock frequency of the bus and providing it internally. Cache coherence between processor caches can be realized with high-speed processing.
また外部のシステムバスを使用したプロセッサモジュール間で行われるキャッシュコヒーレンスにあっては、書込アクセスの際には、アクセス元のキャッシュに対し最新値を転送するが、書込アドレスをもつ主記憶へのオーナー(コピーバック)は行わずに、ディレクトリ記憶部のキャッシュ状態のみをダーティ状態(最新値がキュッシュ上に存在し、主記憶には旧い値が存在する状態)に更新して終了する。このため、主記憶へのオーナー(コピーバック)を行わない分、書込アクセス時のキャッシュコヒーレンスを高速に終了できる。 In cache coherence between processor modules using an external system bus, the latest value is transferred to the access source cache at the time of write access, but to the main memory having the write address. No update (copy back) is performed, and only the cache state of the directory storage unit is updated to the dirty state (the state where the latest value exists on the cache and the old value exists in the main memory), and the process ends. For this reason, cache coherence at the time of write access can be completed at a high speed because the owner (copy back) to the main memory is not performed.
この書込アクセスでダーティ状態となった主記憶は、同じアドレスの読出アクセスの際に、最新値をもつキャッシュのプロセッサモジュールからアクセス元のキャッシュが存在するプロセッサモジュールへの転送時に、同時にダーティ状態にある主記憶への転送オーナー(コピーバック)が行われ、読出アクセスとコピーバックによる主記憶更新が並行して行われることで、より高速の読出アクセスのキャッシュコヒーレンスが実現できる。
The main memory that is in a dirty state by this write access is in a dirty state at the time of transfer from the processor module of the cache having the latest value to the processor module in which the access source cache exists in the read access of the same address. Transfer owner (copy back) to a certain main memory is performed, and read access and main memory update by copy back are performed in parallel, so that cache coherence of higher speed read access can be realized.
以上説明してきたように本発明のキャッシュコヒーレンス装置によれば、複数のプロセッサモジュールの各々でキャッシュユニット付きのプロセッサエレメントの複数を内部の共通バスで相互に接続すると共に主記憶を備えたメモリモジュールを接続し、更にメモリモジュール側を外部の共通バスにより他のプロセッサモジュールと相互に接続する2階層の共通バス構成としたことで、プロセッサモジュール内でのキャッシュコヒーレンスのバス動作とプロセッサモジュール間でのキャッシュコヒーレンスのバス動作を分離することができ、処理性能を大幅に向上できる。 As described above, according to the cache coherence device of the present invention, a plurality of processor elements with cache units are connected to each other by an internal common bus in each of the plurality of processor modules, and a memory module having a main memory is provided. In addition, a two-layer common bus configuration in which the memory module side is mutually connected to another processor module by an external common bus is adopted, so that the cache operation of the cache coherence in the processor module and the cache between the processor modules are performed. The coherence bus operation can be separated, and the processing performance can be greatly improved.
また内部の共通バスはモジュール内のプロセッサ数に外部からのアクセスを受け付けるメモリモジュールを加えたアクセス源に対応したバス負荷で済み、バス負荷を軽くしてプロセッサ間での処理性能を向上できる。また外部のシステムバスのバス負荷は相互に接続したプロセッサモジュールの台数で決まり、プロセッサモジュール内に設けているプロセッサエレメントの数に依存しないことから、同様に、外部の共通バスのバス負荷を低減して処理性能を向上できる。 Further, the internal common bus may be a bus load corresponding to an access source including a memory module that accepts external access to the number of processors in the module, and the processing load between the processors can be improved by reducing the bus load. Also, the bus load of the external system bus is determined by the number of processor modules connected to each other and does not depend on the number of processor elements provided in the processor module. Can improve processing performance.
また、内部の共通バスはプロセッサモジュールの外部への接続を必要としないため、線路長を短くして電気的な特性を良好に保つことができ、これによってバスのクロック周波数を高くして、内部接続したプロセッサ間でのキャッシュコヒーレンスの処理性能を、より高速化できる。 In addition, since the internal common bus does not require connection to the outside of the processor module, the line length can be shortened to maintain good electrical characteristics, thereby increasing the bus clock frequency and increasing the internal frequency. The processing performance of cache coherence between connected processors can be further increased.
更に、外部の共通バスを使用したプロセッサモジュール間で行われるキャッシュコヒーレンスにあっては、書込アクセスの際には、アクセス元のキャッシュに対しては最新データを転送するが、書込アドレスをもつ主記憶に対しては最新データのオーナーは行わずに、最新データがキャッシュ側に存在するダーティ状態をセットして処理を終了することで、主記憶に対する最新データのオーナーを行わない分、書込アクセスを高速に終了できる。 Furthermore, in cache coherence performed between processor modules using an external common bus, in the case of write access, the latest data is transferred to the access source cache, but it has a write address. The main data is not owned by the latest data, but the latest data is stored on the cache side, the dirty state is set and the process is terminated, so that the latest data is not owned by the main memory. Access can be completed quickly.
更に、書込アクセスでダーティ状態となった主記憶は、同じアドレスの読出アクセスの際に外部の共通バスからのリプライデータを受領して主記憶に書き込むことで、アクセス元のキャッシュに対する格納と同時に、主記憶が最新データに更新でき、主記憶オーナーと読出アクセス元への転送が同時にできることで、読出アクセスのキャッシュコヒーレンスを、より高速に実現できる。
Further, the main memory that is in a dirty state by the write access receives the reply data from the external common bus and writes it to the main memory at the time of read access of the same address, so that it can be simultaneously stored in the access source cache. Since the main memory can be updated to the latest data and the transfer to the main memory owner and the read access source can be performed simultaneously, cache coherence for the read access can be realized at higher speed.
<目 次>
1.システム構成
2.CPUリードアクセス時のキャッシュコヒーレンス
3.CPUライトアクセス時のキャッシュコヒーレンス
4.キャッシュユニットのアクセス競合処理
5.コピーバックの書込所有権
6.システム共通バス
(1)バス構成
(2)バスアビトレーション動作
(3)バス転送シーケンス
(4)バス間転送
(5)バスコマンド
7.第2ディレクトリメモリ
8.その他
<Contents>
1.
(1) Bus configuration
(2) Bus arbitration operation
(3) Bus transfer sequence
(4) Transfer between buses
(5) Bus command
1.システム構成
図2は本発明のキャッシュコヒーレンス装置が適用されるマルチプロセッサシステムのブロック図である。このシステムは、少なくとも1つのプロセッサエレメントをもつプロセッサ群として例えば5つのプロセッサモジュール10−1〜10−5を有し、プロセッサモジュール10−1〜10−5を2本のシステムバス(第2共通バス)12−1,12−2を介してお互いに接続している。
1. System Configuration FIG. 2 is a block diagram of a multiprocessor system to which the cache coherence device of the present invention is applied. This system includes, for example, five processor modules 10-1 to 10-5 as a processor group having at least one processor element, and the processor modules 10-1 to 10-5 are connected to two system buses (second common buses). ) 12-1 and 12-2 are connected to each other.
プロセッサモジュール10−1〜10−5は、図3のプロセッサモジュール10−1に代表して示すように、例えば4つのプロセッサエレメント14−1〜14−4を有し、スヌープバス22を介してお互いに接続している。プロセッサエレメント14−1〜14−4のそれぞれは、プロセッサ16−1〜16−4、キャッシュユニット18−1〜18−4およびスヌープユニット20−1〜20−4を備える。
The processor modules 10-1 to 10-5 include, for example, four processor elements 14-1 to 14-4 as shown in the representative of the processor module 10-1 in FIG. 3, and are connected to each other via the snoop
メモリモジュール25は、スヌープバス22に接続されると同時に、他のポートよりシステムバス12−1,12−2に接続される。メモリモジュール25はプロトコル管理ユニット24、メモリ管理ユニット26およびモジュール接続ユニット32を備える。プロトコル管理ユニット24は、システムバス12−1,12−2と内部のスヌープバス22との間のプロトコル変換を行う。バス接続ユニット32はメモリモジュール25とシステムバス12−1,12−2の間のバスアクセスを行う。
The
メモリ管理ユニット26には、主記憶として機能するローカルストレージ28と、プロセッサモジュール間でのキャッシュコヒーレンスの実現に使用されるディレクトリメモリ30が接続される。
The
スヌープユニット22−1〜22−4は、スヌープバス22で特定のマシンサイクルに同期させて複数のキャッシュユニット18−1〜18−4をスヌープするスヌーププロトコルに従って、主記憶としてのローカルストレージ28とキャッシュユニット18−1〜18−4の間のキャッシュコヒーレンスを実現する。即ち、スヌープユニット22−1〜22−4は、内部コヒーレンス処理部として機能する。
The snoop units 22-1 to 22-4 are synchronized with the
他のプロセッサモジュールとの間のキャッシュコヒーレンスを実現する外部コヒーレンス処理部としての機能は、メモリ管理ユニット26に設けたキャッシュ変換部80により行われる。キャッシュ変換部80は、システムバス12−1,12−2を使用した他のプロセッサモジュールとの間のやり取りを通じ、ディレクトリメモリ30の参照に基づき、プロセッサモジュール間でのキャッシュコヒーレンスを実現する。
The function as an external coherence processing unit for realizing cache coherence with other processor modules is performed by a
プロセッサエレメント14−1〜14−4は、図4のプロセッサエレメント14−1に代表して示すように、CPU回路16−1には1次キャッシュ36をもつCPU34が設けられ、CPU34の外部には2次キャッシュ38が接続される。2次キャッシュ38の制御部として2次キャッシュ制御モジュール35が設けられ、2次キャッシュ制御モジュール35にはタグメモリ40が接続される。CPU34の1次キャッシュ36はライトスルーで制御され、2次キャッシュ38はコピーバックで制御される。
As represented by the processor element 14-1 in FIG. 4, the processor elements 14-1 to 14-4 are provided with a
2次キャッシュ制御モジュール35は、2次キャッシュ38のデータのアドレスと、そのエントリのキャッシュ状態を示す情報を、タグメモリ40に登録している。ここで2次キャッシュ38は、図5に示すように、キャッシュデータを256バイト他印のデータとして登録している。このためキャッシュ制御モジュール35は、256バイトのアドレス単位でキャッシュ登録を管理する。この2次キャッシュ38上の256バイト単位のデータをキャッシュライン100という。
The secondary
したがって、タグメモリ40の中には256バイト単位のキャッシュライン100のアドレスが保持されている。更に本発明にあっては、256バイトのキャッシュライン100を64バイト単位のサブライン102−1〜102−4に分割して、サブライン102−1〜102−4ごとにキャッシュ状態を保持している。
Therefore, the tag memory 40 holds the address of the
2次キャッシュ38は常にCPU34の1次キャッシュ36を包含するように制御される。スヌープバス22で接続されている例えば図3に示す4つのプロセッサエレメント14−1〜14−4における各キャッシュユニット18−1〜18−4間でのデータのコヒーレンスを保証するため、スヌープバス22によって2次キャッシュ38がスヌープされる。
The
スヌープバス22はパケットプロトコルによるバスで、2次キャッシュ38のスヌープを行うための機構としてスヌープ送受信ユニット42、スヌープバッファ44、コピーバックバッファ46およびプロセッサアクセスユニット48を有する。スヌープバス22には各種のスヌープコマンドが準備されている。スヌープバスはパケットプロトコルであるため、複数のアクセスを同時に進行させることができる。
The snoop
2次キャッシュ38のスヌープは、スヌープバス22に接続されている各プロセッサエレメント14−1〜14−4の2次キャッシュ制御モジュール35で同時に行われ、その結果が同時にスヌープバス22上のプロセッサエレメント固有のキャッシュ状態信号に反映される。このキャッシュ状態信号は、スヌープバスに接続している全てのプロセッサエレメント14−1〜14−4とメモリモジュール25で参照される。
The snoop of the
メモリモジュール25側のスヌープバス22に対するユニットとしては、空間識別ユニット50、スヌープ送受信ユニット52およびスヌープバス送信ユニット60が設けられている。プロセッサエレメント14−1の2次キャッシュ制御モジュール35がキャッシュ状態信号によってキャッシュ状態を表示すると同様に、メモリモジュール25に設けているメモリ管理ユニット26も、主記憶を分割配置したローカルストレージ28の状態を表示するため、メモリ状態信号を持っている。このメモリ状態信号も、スヌープバス22内の全ての2次キャッシュ制御モジュール35に供給される。
As units for the snoop
このようなスヌープバス22上における2次キャッシュ38に関するキャッシュ状態信号と、メモリモジュール25に接続したローカルストレージ28のメモリ状態信号の内容から、プロセッサエレメント14−1〜14−4に設けた2次キャッシュ制御モジュール35のそれぞれは、CPU34のアクセスに対し応答を行うプロセッサエレメントの判定、アクセス対象となったキャッシュデータの最新値を書込権の所有状態で持っている所謂オーナーの決定、各種のスヌープコマンドの成否を判定する。
From the cache status signal related to the
更に、タグメモリ40に保持している2次キャッシュ38のキャッシュ状態の変更を必要に応じて行う。更に、1次キャッシュ36の無効化や2次キャッシュ38からのデータの応答を伴う場合もある。このようなスヌープバス22による一連の動作はパイプラインで制御される。
Further, the cache state of the
2次キャッシュ38のキャッシュ状態信号による表示は、ビジー、ミス、クリーン、ダーティ、エラーの表示がある。ビジー表示は、受信コマンドが処理資源の枯渇で処理できない場合あるいはプロトコル上矛盾をきたすタイミングのときに表示される。ミス、クリーンおよびダーティ表示は、2次キャッシュ38のタグメモリ40のスヌープ結果である。
The display by the cache status signal of the
即ち、ミス表示は、スヌープコマンドのアドレスで2次キャッシュ38をスヌープした結果、そのアドレスのデータを2次キャッシュ38で保持していないミスヒット検出の際に表示される。クリーン表示は、2次キャッシュ38をスヌープした結果、ローカルストレージ28の内容と同じデータを2次キャッシュ38内に保持している場合と、ローカルストレージ28の内容に対し変更が加えられたデータを2次キャッシュ38内に保持している場合である。
That is, the miss display is displayed when a miss hit is detected in which data at the address is not held in the
更にダーティ表示は、2次キャッシュ38をスヌープした結果、ローカルストレージ28の内容に対し変更が加えられた最新データを2次キャッシュ38内に保持している場合であり、ローカルストレージ28へのオーナーによる反映を行う責任を負っていることから、この状態を書込権を所有しているオーナーと呼ぶ。このようにプロセッサエレメント14−1〜14−4間は、スヌープバス22を用いたスヌープ方式によりキャッシュコヒーレンスが保たれる。
Further, the dirty display is a case where the latest data in which the content of the
次にメモリモジュール25側を説明する。メモリモジュール25にはメモリ管理ユニット26が設けられ、メモリ管理ユニット26にメモリバス66を介してローカルストレージ28を接続し、また専用線を介してディレクトリメモリ30を接続している。ローカルストレージ28は4本のメモリバス66ごとに、メモリアクセスユニット68−1〜68−4と主記憶素子としてのSRAM70−1〜70−4を接続している。
Next, the
メモリバス66は32ビット幅のバスであり、2つのバスを同時にアクセスすることで、キャッシュラインにおけるサブラインの64ビット幅に一致する1ワードのデータのアクセスを行う。ローカルストレージ28は、4つのメモリバス66で4グループに分けられており、例えばメモリアクセスユニット68−1,68−2の2グループで1ワードのアクセスを行い、メモリアクセスユニット68−3と68−4で1ワードのアクセスを行うインターリーブ方式でアクセス可能としている。
The
メモリモジュール25は、空間識別ユニット50により、メモリユニット26により接続したローカルストレージ28のメモリ空間を全てのPM10−1〜10−5から参照可能な物理空間にマッピングすることができる。図6は図4の空間識別ユニット50のマッピング機能を示す。まずプロセッサエレメント14−1に設けたCPU34のCPU物理アドレス空間86は、例えば64GB(ギガバイト)のアドレス空間をもつ。
The
このうち先頭の0〜4GBの領域を、CPUで使用する制御レジスタ空間88に割り当てている。また最後の60〜64GBの領域を、CPUのROM空間92に割り当てている。残り4〜60GBの56GB幅の領域は、PM10−1〜10−5に設けている全てのCPU34でアクセス可能な共有空間90としている。CPUで任意の36ビット物理アドレス94を指定したCPUアクセス(読出アクセスまたは書込アクセス)が発生すると、この36ビット物理アドレス94はスヌープコマンドによってスヌープバス22を経由して、メモリ制御モジュール25の空間識別ユニット50に送られる。
Of these, the first 0 to 4 GB area is allocated to the
勿論、空間識別ユニット50にスヌープバス22を介して送られるのは、スヌープバス22で接続しているプロセッサエレメント14−1〜14−4のキャッシュ上に、アクセス対象となった物理アドレス94のキャッシュラインが存在しない場合である。
Of course, what is sent to the
空間識別ユニット50は、制御テーブル95を保持している。制御テーブル95には共有空間90のアドレス4GBから60GBのエントリが設けられ、このアドレスによるエントリに対応してID領域を設けている。対応ID領域には、共有空間90のアドレスが割り当てられたプロセッサモジュールを示す情報としてユニットIDが登録されている。このユニットIDは、物理的には、図2のシステムバス12−1,12−2にプロセッサモジュールを接続することのできるスロット番号を示している。
The
この例にあっては、4GBから24GBのアドレスに対応してユニットID#00〜#07を登録している。対応ID領域には、ユニットIDに加えてプロセッサモジュールの実装と未実装を示す情報も登録されている。この例では、12〜16GBの物理アドレスをもつユニットID=#02のプロセッサモジュールは未実装となっていることがわかる。またユニットID=#00〜#03の4つについては4GB幅のアドレス領域が割り当てられているが、ユニットID=#04〜#03の4つにプロセッサモジュールについては1GB幅のアドレスが割り当てられている。
In this example,
更に、制御テーブル95の対応ID領域には自ホーム情報も格納されている。自ホーム情報とは、CPUアクセスで発行された36ビット物理アドレス94がプロセッサモジュール自身に内蔵したローカルストレージのアドレス空間に存在することを意味する。
Further, own home information is also stored in the corresponding ID area of the control table 95. The own home information means that the 36-bit
このような空間識別ユニット50に対するスヌープバス22からの36ビット物理アドレス94によるアクセスで、生成情報としてホーム情報96、ユニットID98、36ビット物理アドレス94が生成される。ホーム情報96は、アクセスされた物理アドレス94が自ホームか否か、即ち物理アドレス94がアクセスを起こしたプロセッサモジュール自身に存在するか否かを表わす。
By accessing the
ユニットID98は、物理アドレス94が存在するプロセッサモジュールを示す。具体例を説明すると、次のようになる。CPUアクセスにより36ビット物理アドレス94として、16進表示でX´4.D000.0000´が発生したとする。この場合、空間識別ユニット50の制御テーブル95のエントリで対応IDエリアからユニットID=#03が生成され、右側の破線の枠に示すように、ホーム情報96としてPM自身がホームでないことを示す「not Home」、ユニットID=#03、物理アドレス94であるX´4.D000.0000´を生成する。
The unit ID 98 indicates a processor module in which the
再び図4のメモリモジュール25を参照するに、メモリモジュール25はスヌープバス22を通してプロセッサエレメント14−1のCPU34からアクセスされ、またシステムバス12−1(12−2を含む)を通して、他のプロセッサモジュール10−2〜10−5に設けているCPU34からもアクセスされる。
Referring again to the
プロセッサモジュール10−1内に設けたプロセッサエレメント14−1〜14−4のキャッシュ間におけるキャッシュコヒーレンスはスヌープバス22を使用して実現されているのに対し、プロセッサモジュール10−1〜10−5間にあっては、システムバス12−1,12−2を使用したディレクトリ方式でキャッシュコヒーレンスを保っている。このディレクトリ方式によるキャッシュコヒーレンスを実現するため、ディレクトリメモリ32には256バイトのキャッシュライン単位に1エントリが記憶されている。
While cache coherence between the caches of the processor elements 14-1 to 14-4 provided in the processor module 10-1 is realized by using the snoop
このディレクトリエントリは、CPUアクセスで発生した36ビット物理アドレスで選択され、キャッシュラインの状態を表示している。このディレクトリエントリにおけるキャッシュラインの状態表示には、ダーティ、シェアおよびインバリッドの状態がある。 This directory entry is selected by a 36-bit physical address generated by CPU access, and displays the state of the cache line. The state display of the cache line in this directory entry includes a dirty state, a share state, and an invalid state.
ダーティとは、ある2次キャッシュ38上のキャッシュラインが書き替えられて最新データとなっており、キャッシュラインのコピー元となるローカルストレージ28上には旧いデータしかなく、書き替えたプロセッサエレメントが最新データを所有していることを意味する。
Dirty means that the cache line on a certain
シェアとは、キャッシュラインのデータがプロセッサモジュールによって参照されたことを示し、ローカルストレージ28上のデータと同一のデータが2次キャッシュ38に同時に存在している可能性を示す。
The share indicates that the data on the cache line is referred to by the processor module, and indicates the possibility that the same data as the data on the
更にインバリッドとは、キャッシュラインが、どのプロセッサモジュールからも参照されず、また書き替えられていない状態を示す。 Further, “invalid” indicates a state in which the cache line is not referred to by any processor module and is not rewritten.
更に、あるキャッシュラインがダーティの場合、書き替えられた最新データをもつプロセッサモジュールの識別情報がメモリ管理ユニット26に保持される。またキャッシュラインがシェアの場合にも、ローカルストレージ28のデータのコピーをもつプロセッサモジュールの識別情報がメモリ管理ユニット26に保持される。
Further, when a certain cache line is dirty, identification information of the processor module having the rewritten latest data is held in the
図7は、図4のメモリモジュール25に設けたメモリ管理ユニット26の詳細である。図7において、メモリ管理ユニット26には、バスアービタ74、メモリバス60を介してローカルストレージ28を接続したメモリバス制御ユニット76、専用線でディレクトリメモリ30を接続したディレクトリ制御ユニット78が設けられる。
FIG. 7 shows details of the
またメモリ管理ユニット26には、プロセッサモジュール間をディレクトリ方式を使ってキャッシュコヒーレンスを保つため、キャッシュ変換部80が設けられ、ローカルステートマシン81、ホームステートマシン82およびリモートステートマシン83を内蔵している。
In addition, the
本発明のディレクトリ方式を使用したプロセッサモジュール間のキャッシュコヒーレンスの制御にあっては、アクセスを起動したプロセッサモジュールをローカルと呼び、アクセスしたアドレスをローカルストレージにもっているプロセッサモジュールをホームと呼ぶ。また、アクセスしたローカルストレージのアドレスがダーティ状態、即ちローカルストレージのアドレスに旧いデータしかなく他のプロセッサモジュールのキャッシュ上で最新データをキャッシュ上に所有しているプロセッサエレメントが属しているプロセッサモジュールをリモートと呼ぶ。 In the control of cache coherence between processor modules using the directory system of the present invention, the processor module that has started access is called local, and the processor module that has the accessed address in local storage is called home. In addition, the address of the accessed local storage is in a dirty state, that is, the processor module to which the processor element that has the oldest data in the cache of other processor modules and the processor element that owns the latest data in the cache belongs is remote. Call it.
このようなプロセッサモジュールのローカル、ホームおよびリモートの各ステートは、キャッシュ変換部80に設けたローカルステートマシン80、ホームステートマシン82およびリモートステートマシン84の処理動作で実現される。
Such local, home, and remote states of the processor module are realized by processing operations of the
これら3つのステートマシン81,82,83に対応し、図4のメモリモジュール25には、バスアービタ74を経由して、それぞれのステートマシンの処理対象となるコマンドおよびデータを保持するためのバッファキューが設けられている。即ち、ローカルステートマシン80に対応してローカルアクセスバッファキュー54が設けられる。
Corresponding to these three
ローカルアクセスバッファキュー54には、空間識別ユニット50で生成された図6の生成情報であるホーム情報Home、ユニットIDおよび36ビット物理アドレスが格納される。更に、ローカルアクセスバッファキュー54に対してはスヌープ送受信ユニット52より応答割込みINT が与えられ、またローカルアクセスバッファキュー54が一杯になると、フル状態を示す情報Fullをスヌープ送受信ユニット52に返している。
The local
ホームステートマシン82に対応しては、メモリモジュール25にホームアクセスバッファキュー56が設けられる。ホームアクセスバッファキュー56には、システムバス12−1,12−2を使用して発行されたローカルとなったプロセッサモジュールからのアクセスコマンド、所謂ホームコマンドが格納される。リモートステートマシン84に対応しては、リモートアクセスバッファキュー58が設けられる。リモートアクセスバッファキュー58には、ホームとなったプロセッサモジュールからシステムバス12−1,12−2を使用して発行されたアクセスコマンド、所謂リモートコマンドが格納される。
In correspondence with the
ローカルアクセスバッファキュー54に格納するローカルコマンドおよびホームアクセスバッファキュー56に格納するホームコマンドについては、メモリ管理ユニット26に設けているローカルステートマシン80およびホームステートマシン82のそれぞれでローカルストレージ28のアクセスを伴うが、リモートアクセスバッファキュー58のリモートコマンドはプロセッサエレメント14−1の2次キャッシュ38上のキャッシュラインを対象とするアクセスであるため、スヌープバス送信ユニット60によって直接、スヌープバス22に接続されている。
With respect to the local commands stored in the local
次に、図7のメモリ管理ユニット26に設けたディレクトリ制御ユニット78および専用線で接続したディレクトリメモリ30の内容を説明する。
Next, the contents of the
図8は、メモリ管理ユニット26に設けたディレクトリ制御ユニット78に設けられるディレクトリエントリレジスタ104の内容であり、このディレクトリエントリレジスタ104の内容がディレクトリメモリ30に格納されたキャッシュラインごとのディレクトリエントリの読出結果である。したがってディレクトリエントリレジスタ104の内容は、これ即ちディレクトリメモリ30に記憶されたディレクトリエントリデータそのものの説明となる。
FIG. 8 shows the contents of the
ディレクトリエントリレジスタ104は、下位8ビットにシェアードマップビット領域106を割り当てている。このシェアードマップビット領域106は、プロセッサモジュール内の主記憶であるローカルストレージ28のキャッシュラインに対応するデータが参照されて、いずれのプロセッサモジュールの2次キャッシュ上に存在するかを示すビットである。
The
このシェアードマップビット領域106に対しては、図9に示すシェアードマップビット対応レジスタ112が組み合わされ、更に、シェアードマップビット対応レジスタ112には図10のプロセッサモジュール構成レジスタ114が組み合わされる。
The shared
ディレクトリエントリレジスタ104のシェアードマップビット領域106はビットS0〜S7であり、このビットS0〜S7を1にセットすることで、シェアードマップビット対応レジスタ112で示されるプロセッサモジュール上にキャッシュラインのデータがシェア状態で存在することを示す。
The shared
シェアードマップビット対応レジスタ112は例えば16台のプロセッサモジュールのユニットID=#00〜#15に対応するマップビット対応エリアをもっている。これに対しシェアードマップビット領域106は、S0〜S7の8ビットと半分しかない。このため、シェアードマップビット対応レジスタ112にシェアードマップビット領域106のシェアードマップビットを重複して格納することで、シェアードマップビットを複数のプロセッサモジュールについて表現することができ、ディレクトリエントリレジスタ104のビット低減を実現している。
The shared map bit correspondence register 112 has a map bit correspondence area corresponding to unit ID = # 00 to # 15 of 16 processor modules, for example. On the other hand, the shared
更に、シェアードマップビット領域106に格納するシェアードマップビットS0〜S7は、2次キャッシュ上では256バイトのキャッシュラインを4分割した64バイトのキャッシュサブラインごとに保持されている。これに対しシェアードマップビットは1ビットしかないことから、4つのキャッシュサブラインのシェア状態をORによって表わしている。
Further, the shared map bits S0 to S7 stored in the shared
この4つのサブラインのORによるシェアードマップビットの表現は、2次キャッシュのキャッシュコヒーレンスがスヌープ方式で実現されているため、シェア状態のキャッシュラインが存在するプロセッサエレメントを意識することなくアクセスでき、複数のサブラインのOR表現が可能となっている。 The representation of the shared map bit by OR of the four sublines is because the cache coherence of the secondary cache is realized by the snoop method. Sub-line OR expression is possible.
図9のシェアードマップビット対応レジスタ112に対応して設けた図1010のプロセッサモジュール構成レジスタ114には、プロセッサモジュール実装ビット領域116とバスIDビット領域118が設けられている。バスIDビット領域118にはシステムバス12−1,12−2に分けたバスIDが格納されている。各システムバス12−1,12−2は16個のスロットをもっている。したがって最大16台のプロセッサモジュールを実装することができる。
The processor
プロセッサモジュール実装ビット領域116はユニットIDと同じスロット番号#00〜#15に1対1に対応したビット領域をもっており、実装状態でビット1がセットされ、未実装状態でビット0にリセットされている。
The processor module mounting
図11は、ディレクトリエントリレジスタ104、シェアードマップビット対応レジスタ112およびプロセッサモジュール構成レジスタ114の具体的な対応関係を示している。まずプロセッサモジュール構成レジスタ114はプロセッサモジュール実装ビット領域116のみを示しており、ビット1にセットされたユニットIDが実装されたプロセッサモジュールを示している。
FIG. 11 shows a specific correspondence relationship between the
この例ではユニットID=#00,#02,#05,#06,#08,#10,#11,#13にプロセッサモジュールが実装されて、それ以外は未実装となっている。プロセッサモジュール構成レジスタ114の各ビットは、シェアードマップビット対応レジスタ112に1対1に対応している。
In this example, processor modules are mounted on unit IDs = # 00, # 02, # 05, # 06, # 08, # 10, # 11, and # 13, and the others are not mounted. Each bit of the processor
あるプロセッサモジュールのCPUアクセスで、あるプロセッサモジュールの主記億となるローカルストレージのキャッシュラインが参照されて、そのコピーがキャッシュ上に存在するシェア状態が起きると、そのキャッシュラインのディレクトリエントリデータのシェアードマップビット領域106の空きビットが1にセットされ、同時にシェアードマップビット対応レジスタ112のコピーデータがシェア状態で存在するプロセッサモジュールのレジスタ領域、シェアードマップビット領域106のビット1を示すインデックス情報が格納される。
When a CPU access of a certain processor module refers to a cache line of the local storage that is the main storage of a certain processor module, and a shared state occurs in which a copy exists in the cache, shared directory entry data of that cache line is shared The empty bit in the
例えば、シェアードマップビットS6については、シェアードマップビット対応レジスタ112のユニットID=#06と#10に対応したエリアに、それぞれS6を格納している。これによって、シェアードマップビットS6はユニットID=#06および#10の2つのプロセッサモジュールに参照され、それぞれキャッシュ上でシェア状態にあることを表わしている。 For example, for shared map bit S6, S6 is stored in the areas corresponding to unit ID = # 06 and # 10 of shared map bit corresponding register 112, respectively. As a result, the shared map bit S6 is referred to by the two processor modules of unit ID = # 06 and # 10, and indicates that each is in a shared state on the cache.
再び図8のディレクトリエントリレジスタ104を参照するに、シェアードマップビット領域106に続いてはダーティサブラインビット領域108が設けられている。ダーティサブラインビット領域108は256バイトのキャッシュラインを分割した4つのサブラインに対応してビットD0〜D3が割り当てられている。
Referring to the
このダーティサブラインビットD0〜D3は、ビット1にセットすることで、システム内のいずれかのプロセッサモジュールのキャッシュ上に、主記憶としてのローカルストレージ28の旧いデータに対し、書き替えられた最新データが存在することを表わしている。また、ダーティサブラインビット領域108がビット0にリセットされている場合には非ダーティ状態を意味する。
When these dirty subline bits D0 to D3 are set to
この場合には主記憶としてのローカルストレージ28に最新データが存在し、シェアードマップビットS0〜S7で指定されるいずれかのプロセッサモジュール上に、シェア状態でそのコピーデータが存在することを意味する。データサブラインビットD0〜D3に関するプロセッサモジュールの識別情報は、主記憶としてのローカルストレージ28上の特定領域、例えば図6のCPU物理アドレス空間86における制御レジスタ空間88に格納されている。
In this case, it means that the latest data exists in the
図12は、ディレクトリエントリレジスタ104の具体的な内容を示す。まずシェアードマップビット領域は、システムバス12−1,12−2に対応してシェアードマップビット領域106−1と106−2に分けられている。ここで、システムバス12−1側についてのみプロセッサモジュールを実装しており、システムバス12−2側についてはプロセッサモジュールを未実装であった場合には、シェアードマップビット領域106−1側が実装プロセッサモジュール用に使用される。
FIG. 12 shows specific contents of the
シェアードマップビット領域106−1では、シェアードマップビットS3とS4にビット1がセットされている。この場合、図9に示したシェアードマップビット対応レジスタ112による対応で、例えばシェアードマップビットS3はユニットID=#03のプロセッサモジュールのキャッシュラインのデータの全サブラインのシェア情報のORを意味する。また、シェアードマップビットS4が同じく図9のシェアードマップビット対応レジスタ112による対応関係の指定で、例えばユニットID=#04のプロセッサモジュール上のあるプロセッサエレメントのキャッシュ上の全サブラインのシェア状態のORとなる。
In shared map bit area 106-1,
一方、ダーティサブラインビット領域108については、例えばダーティサブラインビットD1とD4がビット1にセットされ、D2とD3がビット0にリセットされている。このダーティサブラインビットD1〜D4に対応して、ローカルストレージ28にはプロセッサモジュール情報格納領域120,122,124,126が設けられている。
On the other hand, for the dirty
例えばダーティサブラインビットD1のプロセッサモジュール情報領域120には、ユニットID=#01のプロセッサモジュールに存在するキャッシュ上にダーティ状態として最新データが存在することを示している。同様に、ビット1にセットされたダーティサブラインビットD4については、プロセッサモジュール情報領域126にユニットID=#02のプロセッサモジュールに存在するキャッシュ上にダーティ状態として最新データが存在することを示している。
For example, the processor
またビット0にリセットされたダーティサブラインビットD2,D3のプロセッサモジュール情報領域122,124については、このキャッシュラインの物理アドレスが存在する主記憶としてのローカルストレージに最新データがあり、いずれかのプロセッサモジュールのキャッシュ上に主記憶の最新データの参照によりコピーデータがシェア状態で存在することを示す。
As for the processor
シェア状態でコピーデータが存在するプロセッサモジュールのユニットIDについては、シェアードマップビット領域106−1のビット1にセットされたシェアードマップビットS3,S4に対する図9のシェアードマップビット対応レジスタ112の参照で得られ、例えばユニットID=#03,#04のプロセッサモジュール上にシェア状態でコピーデータが存在する可能性を示す情報が格納されている。
The unit ID of the processor module in which the copy data exists in the shared state is obtained by referring to the shared map bit corresponding register 112 in FIG. 9 with respect to the shared map bits S3 and S4 set to
またビット0にセットされたダーティサブラインビットD2,D3のプロセッサモジュール情報領域122,124の内容は、シェアード以外に非シェアードが格納される場合もあり、この場合には、対応する主記憶としてのローカルストレージにのみ最新データが存在することを示す。
Further, the contents of the processor
次に、スヌープバス22のパケットを説明する。パケットは起動コマンドと応答コマンドに分類される。起動コマンドと応答コマンドは、基本的に対になっている。パケットはコマンドフェーズとデータフェーズからなる。コマンドフェーズは1クロックである。データフェーズは、コマンドとサイズによって0から8クロックまでの長さをとることができる。
Next, the packet of the snoop
起動コマンドのコマンドフェーズは、パケットの宛先を示す宛先フィールド、パケット処理について補助的な指示を含むフラグフィールド、処理対象のデータサイズを示すサイズフィールド、コマンドの種別を示すタイプフィールド、コマンドの処理対象のアドレスを示すアドレスフィールドから構成される。起動コマンドと応答コマンドの区別はタイプフィールドで識別する。 The command phase of the start command includes a destination field indicating a packet destination, a flag field including an auxiliary instruction for packet processing, a size field indicating a data size to be processed, a type field indicating a command type, and a command processing target It consists of an address field indicating an address. The distinction between the start command and the response command is identified by the type field.
一方、応答コマンドもコマンドフェーズとデータフェーズからなる。コマンドフェーズは1クロックで、データフェーズはコマンドとサイズによって0から8のクロックの長さをとることができる。応答コマンドのコマンドフェーズは、パケットの宛先を示す宛先フィールド、アクセスの成否,エラー要因およびリトライ指示を示すリプライコードフィールド、リプライの種別を示すリプライフィールド、コマンドの種別を示すコマンドフィールド(リプライであることを示す種別情報が格納される)、コマンドの処理対象のアドレスを示すアドレスフィールドから構成される。 On the other hand, the response command also includes a command phase and a data phase. The command phase is 1 clock, and the data phase can take 0 to 8 clocks depending on the command and size. The command phase of the response command includes a destination field indicating the packet destination, a success / failure of access, a reply code field indicating an error factor and a retry instruction, a reply field indicating a reply type, and a command field indicating a command type (reply Is stored in the address field indicating the address of the command processing target.
複数のプロセッサモジュール間を接続するシステムバス12−1,12−2についても、パケットは基本的にスヌープバス22と同じであるが、バスクロックが相違する。即ち、スヌープバスはバスの線路長がモジュール筐体内で済むことから短く、電気的特性が良いので、例えば60MHzのクロック周波数とできる。
Also for the system buses 12-1 and 12-2 connecting the plurality of processor modules, the packet is basically the same as the snoop
これに対しシステムバス12−1,12−2はバックパネルを介して複数のプロセッサモジュール間に接続されるために線路長が長く、電気的特性の制約から例えば40MHzのクロック周波数に抑えられている。このようなスヌープバス22とシステムバス12−1,12−2の間のクロック周波数の相違によるタイミングは、図3のメモリモジュール25に示したプロトコル管理ユニット24によるプロトコル変換機能により調整がとられている。
On the other hand, since the system buses 12-1 and 12-2 are connected between a plurality of processor modules via the back panel, the line length is long, and the clock frequency is suppressed to, for example, 40 MHz due to restrictions on electrical characteristics. . The timing due to the difference in clock frequency between the snoop
図13は、スヌープバス22で使用されるコマンドの種類を、プロセッサ16、スヌープユニット20、メモリ管理ユニット26に分けて示している。
FIG. 13 shows the types of commands used in the snoop
次に、図4のプロセッサエレメント14−1に設けているキャッシュ制御モジュール35側におけるキャッシュ状態の遷移を説明する。まず、2次キャッシュ制御モジュール35のタグメモリ40にキャッシュサブライン単位に保持されるキャッシュ状態には、図14に示す無効状態、シェアードクリーン状態、シェアードモディファイ状態、排他的ダーティ状態、シェアードダーティ状態の5つがある。
Next, the transition of the cache state on the
無効状態INVは2次キャッシュ38上にデータが存在しない非キャッシュ状態である。シェアードクリーン状態SH&Cは、ホームとなるプロセッサモジュールの主記憶であるローカルストレージと同一内容のデータを保持している状態である。シェアードモディファイ状態SH&Mは、ホームとなる主記憶上にあるデータは最新データではない旧いデータであり、自分自身の2次キャッシュには、そのコピーデータが存在し、更に自分のプロセッサモジュール内の他の2次キャッシュ上に排他的ダーティ状態EX&Dにより、システム内で唯一の最新データが存在している状態である。
The invalid state INV is a non-cache state in which no data exists on the
排他的ダーティ状態EX&Dはシステム内で唯一の最新データを保留している状態であり、この場合、書込権を所有した所謂オーナーとなっている。更に、シェアードダーティ状態SH&Dは、ホームとしての主記憶上に最新データがなく、自分のプロセッサモジュール内の2次キャッシュ群に最新データを保留しており、更に、自分のプロセッサモジュール内の2次キャッシュ群にホームの主記憶データのコピーをもったシェアードモディファイ状態SH&Mが存在し、最新データを保留しているキャッシュ制御モジュール自身が書込権を所有してオーナーとなっている場合である。 The exclusive dirty state EX & D is a state in which only the latest data is held in the system. In this case, the exclusive dirty state EX & D is a so-called owner who owns the write right. Further, in the shared dirty state SH & D, there is no latest data on the main memory as a home, the latest data is held in the secondary cache group in the own processor module, and the secondary cache in the own processor module is further stored. This is a case where the group has a shared modified state SH & M having a copy of home main storage data, and the cache control module itself holding the latest data owns the write right and becomes the owner.
図15は図4の2次キャッシュ制御モジュール35におけるキャッシュ状態の遷移を示す。まず初期状態は、ブロック130の無効状態INVである。この状態でプロセッサのリードアクセスによって1次キャッシュ36がミスヒットになると、アクセス要求が2次キャッシュ状態モジュール35に発行される。このとき2次キャッシュ38の該当するキャッシュサブラインが無効状態INVであれば、スヌープバス22へデータを要求するコマンドを送出する。
FIG. 15 shows the transition of the cache state in the secondary
この場合、遷移状態はブロック150のシェアードモディファイ状態SH&Mに遷移するケース1の場合と、ブロック140のシェアードクリーン状態SH&Cに遷移するケース2の場合の2つがある。ケース1の場合、ブロック150のシェアードモディファイ状態(SH&M)は、他のプロセッサエレメントが排他的ダーティ状態EX&Dあるいはシェアードダーティ状態SH&Dで、アクセス対象となったサブラインをキャッシュ上に所有している場合であり、いずれかのプロセッサエレメントのキャッシュ状態信号によってダーティが表示される。
In this case, there are two transition states:
そこで、ダーティが表示されたプロセッサエレメントのキャッシュ制御モジュール35が2次キャッシュ38をアクセスし、データ応答をスヌープバス22に発行する。このとき応答を行ったプロセッサエレメントでキャッシュ状態がブロック160の排他的ダーティ状態EX&Dであった場合には、ブロック170のシェアードダーティ状態SH&Dに遷移する。応答を受け取ったプロセッサエレメントは、キャッシュ状態をブロック150のシェアードモディファイ状態SH&Mへ遷移する。
Therefore, the
一方、ケース2の場合は、プロセッサのリードアクセスの1次キャッシュにおけるミスヒットに対するアクセス要求に対し、他のプロセッサエレメントがブロック140のシェアードクリーン状態SH&Cか或いはブロック130の無効状態INVであった場合であり、キャッシュ状態信号およびメモリモジュール25側のメモリ状態信号はクリーン或いはミスが表示される。クリーン表示を行ったキャッシュ制御モジュール35は、キャッシュ状態信号を参照して、応答を作成すべきか否か判断する。
On the other hand, in the
同様に、メモリ状態信号を参照したメモリモジュール25、即ちメモリモジュール25に設けているメモリ管理ユニット26も、メモリ状態信号を参照して、応答を作成すべきか否か判断する。応答すべきことを検出したモジュールが2次キャッシュ制御モジュール35であれば、2次キャッシュメモリ38にアクセスし、データの応答をスヌープバス22に発行する。応答すべきことを検出したモジュールがメモリモジュール25のメモリ管理ユニット26であれば、主記憶としてのローカルストレージ28へのアクセスを起動し、スヌープバス22に応答データを発行する。
Similarly, the
このようにしてスヌープバス22から応答データを受け取ったアクセス元の2次キャッシュ制御モジュール35は、ブロック130の無効状態INVからブロック140のシェアードクリーン状態SH&Cに遷移する。
The access source secondary
2.CPUリードアクセス時のキャッシュコヒーレンス
次に、図2に示したプロセッサモジュール10−1〜10−5のいずれかのCPUでリードアクセスが発生した場合のキャッシュコヒーレンスの処理を、読出モード1〜3に分けて説明する。
2. Cache Coherence at CPU Read Access Next, cache coherence processing when read access occurs in any of the processor modules 10-1 to 10-5 shown in FIG. I will explain.
(1)読出モード1
図16は読出モード1のキャッシュコヒーレンスのプロトコルを示している。
(1) Read
FIG. 16 shows a cache coherence protocol in
読出モード1は、プロセッサモジュール10−1内の任意のCPUの読出アクセスP−RDに対し、キャッシュユニット群18の中の自己のキャッシュユニットでミスヒットし、且つスヌープバス22で接続した他の全てのキャッシュユニット18でミスヒットした場合である。
In the
この場合には、メモリ管理ユニット26に対し主記憶となるローカルストレージ28をアクセスするためのリモートコマンドとしてコマンドT−CRが発行される。ここで、読出アドレスがプロセッサモジュール10−1のローカルストレージ28にあることでプロセッサモジュール10−1はホームとなり、更にローカルストレージ28のデータがリモートとなるプロセッサモジュール10−2内のキャッシュユニット群のいずれかに最新データをもつダーティ状態で存在していたものとする。
In this case, the command T-CR is issued as a remote command for accessing the
このような場合、読出アクセスを発生したプロセッサモジュール10−1のメモリ管理ユニット26は、システムバス12にリモートコマンド220を発行して、プロセッサモジュール10−2にアクセスする。このリモートコマンド220を受領したプロセッサモジュール10−2のメモリ管理ユニット26は、スヌープバス22を介してダーティ状態Dにあるキャッシュユニットから最新データを取得した後に、システムバス12を使用して最新データをリプライデータ230として、ローカルで且つホームとなっているプロセッサモジュール10−1に応答する。
In such a case, the
プロセッサモジュール10−1は、システムバス12の応答として得られたリプライデータ230をアクセス元のキャッシュユニットにスヌープバス22を介して格納し、CPUの読出アクセスに対するリードデータとして応答させる。同時に、主記憶としてのローカルストレージ28に最新データを書き込むことで、キャッシュコヒーレンスを実現する。ここでリモートコマンド220を受けて最新データの応答を行ったプロセッサモジュール10−2のキャッシュユニットにあっては、ダーティ状態Dをクリーン状態Cに更新する。また、アクセス元のプロセッサモジュール10−1のローカルストレージ28のキャッシュデータを管理しているディレクトリメモリについて、アクセス対象となったキャッシュラインのダーティ状態Dをシェア状態Sに更新する。更に、アクセス元のキャッシュユニットについては、無効状態Iをクリーン状態Cに更新する。
The processor module 10-1 stores the
(2)読出モード2
図17は読出モード2におけるキャッシュコヒーレンスのためのプロトコルを示す。この読出モード2は、任意のCPUの読出アクセスP−RDに対し自己のキャッシュユニットでミスヒットし、且つスヌープバス22で接続した他の全てのキャッシュユニットでミスヒットし、且つ読出アドレスが他のプロセッサモジュール10−2の主記憶であるローカルストレージ28にあり、このローカルストレージ28の読出アドレスのデータが別のプロセッサモジュール10−3のいずれかのキャッシュユニット上に最新データをもつダーティ状態Dで存在する場合である。
(2) Read
FIG. 17 shows a protocol for cache coherence in
この場合、読出アクセスが起きたプロセッサモジュール10−2のメモリ管理ユニット26はローカルとして動作し、システムバス12にホームコマンド240を発行してプロセッサモジュール10−2にアクセスする。プロセッサモジュール10−2は、システムバス12から受領したホームコマンド240に基づき、読出アドレスによるディレクトリメモリの参照でプロセッサモジュール10−3のキャッシュ上にダーティ状態Dで最新データが存在することを認識し、システムバス12にリモートコマンド250を発行してプロセッサモジュール10−3にアクセスする。
In this case, the
プロセッサモジュール10−3は、システム12−2から受領したリモートコマンド250に基づき、メモリ管理ユニット26がリモートとして動作し、スヌープバス22によってダーティ状態Dにあるキャッシュユニットにアクセスして最新データを取得した後、システムバス12を使用して、ホームとしてのプロセッサモジュール10−2およびローカルとしてのプロセッサモジュール10−1のそれぞれにリプライデータ260を応答する。ホームとしてのプロセッサモジュール10−2は、システムバス12の応答により得られたリプライデータ260により主記憶としてのローカルストレージ28の対応データのオーナーを行って、最新データに更新する。
In the processor module 10-3, based on the
同時に、ローカルとしてのプロセッサモジュール10−1にあっては、システムバス12からの応答で受領したリプライデータ260をスヌープバス22を介してアクセス元のキャッシュユニットに転送して2次キャッシュ上に格納し、CPUの読出アクセスに対しリードデータとして応答させる。
At the same time, in the processor module 10-1 as a local, the
ここで、リモートとなったプロセッサモジュール10−3で最新データの応答を行ったキャッシュユニットは、キャッシュ状態をダーティ状態Dからクリーン状態Cに更新する。またホームとなったプロセッサモジュール10−2にあっては、アクセス対象となったキャッシュラインの状態をダーティ状態Dからシェア状態Sに更新する。 Here, the cache unit that has made the response of the latest data in the remote processor module 10-3 updates the cache state from the dirty state D to the clean state C. Further, in the processor module 10-2 that has become the home, the state of the cache line that is the access target is updated from the dirty state D to the share state S.
具体的には、図8のディレクトリエントリレジスタ104のダーティサブラインビット領域108の対応するサブラインビットを1から0にリセットする。また、リモートとしてのプロセッサモジュール10−3およびローカルとしてのプロセッサモジュール10−1にシェア状態でホームにおけるローカルストレージ28のデータと同一データが存在するシェア状態にあることから、シェアードマップビット領域106の対応するシェアードマップビットを1にセットする。
Specifically, the corresponding subline bit in the dirty
更に、ローカルとなったプロセッサモジュール10−1のアクセスが発生したキャッシュユニットにあっては、無効状態Iをクリーン状態Cに遷移させる。 Further, in the cache unit in which the access of the processor module 10-1 that has become local occurs, the invalid state I is transitioned to the clean state C.
(3)読出モード3
図18は読出モード3におけるキャッシュコヒーレンスのプロトコルであり、このモードにあっては、アクセスが発生したモジュールの内部のキャッシュユニット間でのスヌープバス22を使用したキャッシュコヒーレンスが行われる。読出モードには図18(A)と図18(B)の2つのケースがある。
(3) Read
FIG. 18 shows a cache coherence protocol in the
図18(A)はCPUの読出アクセスP−RDが発生したキャッシュユニット18−4が無効状態INVにあってミスヒットとなったが、スヌープバス22で接続された他のキャッシュユニット18−1に最新データがシェアードクリーン状態SH&Cで存在していた場合である。この場合には、キャッシュユニット18−4がスヌープバス22を使用してコマンドT−CRを発行し、キャッシュユニット18−1から該当するサブラインを含むリプライデータ270の応答が行われ、キャッシュユニット18−4上に格納されて、読出アクセスにリードデータとして応答する。
FIG. 18A shows that the cache unit 18-4 in which the CPU read access P-RD has occurred is in the invalid state INV and has become a miss hit, but the other cache unit 18-1 connected by the
このときアクセス元のキャッシュユニット18−4にあっては、無効化状態INVからシェアードクリーン状態SH&Cに遷移し、アクセス先のキャッシュユニット18−1にあってはシェアードクリーン状態SH&Cを維持する。 At this time, the access-source cache unit 18-4 transitions from the invalidation state INV to the shared clean state SH & C, and the access-destination cache unit 18-1 maintains the shared clean state SH & C.
図18(B)は無効化状態INVにあるキャッシュユニット18−4に対するCPUからの読出アクセスP−RDに対し、スヌープバス22で接続したキャッシュユニット18−1に最新データが排他的ダーティ状態EX−Dで存在した場合、即ち書込権を所有した状態で存在した場合である。この場合のキャッシュユニット18−4からのアクセスT−CRに対し、同様にキャッシュユニット18−1から最新データのサブラインを含むリプライデータ280の応答が行われる。
FIG. 18B shows that the latest data is in an exclusive dirty state EX− in the cache unit 18-1 connected by the
この場合、アクセス元のキャッシュユニット18−4は無効化状態INVからシェアードモディファイ状態SH&M、即ち自分のプロセッサモジュール内の他のキャッシュユニットにシェアードダーティ状態で最新データが存在することを示す。またアクセス先のキャッシュユニット18−1にあっては、排他的ダーティ状態EX&Dからシェアードダーティ状態SH&Dに遷移する。 In this case, the access-source cache unit 18-4 indicates that the latest data exists in the shared dirty state SH & M from the invalidation state INV, that is, in the shared dirty state in the other cache units in its own processor module. In the cache unit 18-1 to be accessed, the exclusive dirty state EX & D transitions to the shared dirty state SH & D.
(4)ローカルプロセッサモジュールのリード処理
図19のフローチャートは、図16,図17の読出モード1,2におけるローカルとなったプロセッサモジュールのリード処理である。まずステップS1で、プロセッサエレメントのリードアクセスを受けて、ステップS2で、キャッシュヒットの有無が判定され、キャッシュヒットであれば、ステップS14で、プロセッサエレメントにデータを応答して処理を終了する。
(4) Local Processor Module Read Processing The flowchart of FIG. 19 is the read processing of the processor module that is local in the
キャッシュミスヒットの場合には、ステップS3で、タグメモリ40からキャッシュステータスを取得し、ステップS4で、他のプロセッサエレメントのキャッシュ上に最新データがあるか否かチェックする。他のプロセッサエレメントのキャッシュ上に最新データがあれば、ステップS15に進み、スヌープバス22にコマンドを送出し、ステップS16でリプライデータを受けて、ステップS13で、キャッシュに格納してプロセッサエレメントに応答する。このステップS15〜S17は、図18の読出モード3の処理である。
In the case of a cache miss hit, in step S3, the cache status is acquired from the tag memory 40, and in step S4, it is checked whether or not there is the latest data in the cache of another processor element. If there is the latest data on the cache of another processor element, the process proceeds to step S15, a command is sent to the snoop
一方、ステップS4で他のプロセッサエレメントのキャッシュ上にも最新データがなかった場合には、ステップS5で、ローカルコマンドをスヌープバス22を介してメモリ管理ユニット26に送出する。メモリ管理ユニット26側にあっては、まずステップS6で、図4に示した空間識別ユニット50によりコマンドの物理アドレスからプロセッサモジュール空間を判別する。
On the other hand, if there is no latest data in the cache of another processor element in step S4, a local command is sent to the
ステップS7で、リードアドレスが自分のプロセッサモジュールのローカルストレージ28の主記憶空間であった場合、ステップS8で、自らをホームとしてディレクトリメモリ30のディリクトリエントリからキャッシュステータスを取得する。キャッシュステータスについて、ステップS9で、サブラインがダーティか否かチェックし、ダーティであれば、ステップS10で、リモートプロセッサモジュールに対しシステムバスを介してリモートコマンドを送出する。
If the read address is the main storage space of the
このリモートコマンドに対しステップS11で応答があると、リプライデータをステップS12で主記憶としてのローカルストレージ28に書き込み、ダーティ状態をシェアード状態に更新する。そしてステップS13で、アクセス元のキャッシュユニットに応答し、処理を終了する。ステップS9でサブラインがダーティでなかった場合には、ステップS22で、主記憶としてのローカルストレージ28からデータを読み出してアクセス元のキャッシュユニットに応答し、ステップS23で、主記憶としてのローカルストレージ28のサブラインのシェアードビットをオンする。
If there is a response to the remote command in step S11, the reply data is written in the
またステップS7で、アクセスした物理アドレスが他のプロセッサモジュール空間であった場合には、ステップS18で、システムバスを介してホームとなるプロセッサモジュールに対しホームコマンドを送出する。このホームコマンドの送出に対し、システムバスを介して最新データのリプライがあることから、ステップS19でリプライを判別すると、ステップS20で、アクセスごとのキャッシュに応答して処理を終了する。 If the accessed physical address is another processor module space in step S7, a home command is sent to the home processor module via the system bus in step S18. In response to the sending of the home command, there is a reply of the latest data via the system bus. When the reply is determined in step S19, the process ends in response to the cache for each access in step S20.
(5)ホームプロセッサモジュールのリード処理
図20のフローチャートは、図16,図17の読出モード1,2においてホームとなったプロセッサモジュールのリード処理を示す。まずステップS1で、ホームコマンドを受領する。ホームコマンドは、システムバスを経由して受領する場合と、自分自身がローカルで且つホームとなる場合に自分自身で生成したホームコマンドを受領する場合とがある。
(5) Read Processing of Home Processor Module The flowchart of FIG. 20 shows the read processing of the processor module that has become home in the
ホームコマンドを受領すると、ステップS2で、自分自身をホームとしてディレクトリメモリ30からキャッシュラインのステータスを取得し、ステップS3で、サブラインがダーティか否かチェックする。サブラインがダーティであった場合には、ステップS4で、自分のプロセッサモジュール内のプロセッサエレメントのキャッシュ上に最新データがあるか否かチェックする。
When the home command is received, the status of the cache line is acquired from the
最新データが自分自身のキャッシュ上にあれば、ステップS5でスヌープバス22にコマンドを送出し、ステップS6でリプライを待って、ステップS7でリプライデータを主記憶としてのローカルストレージ28に書き込み、ディレクトリエントリのダーティ状態をシェアード状態に更新する。続いてステップS8で、ローカルプロセッサモジュールに対しリプライデータをシステムバスを使用して送出する。
If the latest data is on its own cache, a command is sent to the snoop
またステップS4で、別のプロセッサモジュール内のプロセッサエレメントのキャッシュ上にダーティ状態の最新データが存在している場合には、ステップS12で、システムバスを介してリモートプロセッサモジュールにリモートコマンドを送出し、ステップS13でリプライを待って、ステップS14で、主記憶としてのローカルストレージ28に最新データを書き込んでディレクトリアントリのダーティ状態をシェアード状態に更新する。
If the latest dirty data exists in the cache of the processor element in another processor module in step S4, a remote command is sent to the remote processor module via the system bus in step S12. In step S13, the reply is waited, and in step S14, the latest data is written in the
一方、ステップS3でサブラインがダーティでなかった場合には、主記憶としてのローカルストレージ28から最新データを読み出して、システムバスを介してローカルプロセッサモジュールにリプライデータを送出し、処理を終了する。
On the other hand, if the subline is not dirty in step S3, the latest data is read from the
(6)リモートプロセッサモジュールのリード処理
図21のフローチャートは、図16,図17の読出モード1,2におけるリモートプロセッサモジュールのリード処理である。まずステップS1で、システムバスを介してリモートコマンドを受領すると、ステップS2で、自分自身をリモートとしてキャッシュユニットにスヌープバスを介してコマンドを送出する。該当するプロセッサエレメントのキャッシュユニットからデータのリプライを受けると、ステップS4で、スヌープバス22からリプライデータを受領し、ステップS5で、システムバスを介してホームプロセッサモジュールおよびローカルプロセッサモジュールにリプライデータを送出する。
(6) Remote Processor Module Read Process The flowchart of FIG. 21 is a remote processor module read process in the
(7)プロセッサエレメントのリード処理
図22のフローチャートはプロセッサエレメント自身のリード処理である。まずステップS1でCPUのリード要求が発生すると、ステップS2でキャッシュヒットの有無を判定し、キャッシュヒットであれば、ステップS12で、キャッシュデータをリードアクセスに対し応答する。
(7) Processor Element Read Process The flowchart of FIG. 22 is a read process for the processor element itself. First, when a CPU read request is generated in step S1, the presence or absence of a cache hit is determined in step S2, and if it is a cache hit, the cache data is responded to the read access in step S12.
キャッシュミスヒットとなった場合には、ステップS3で、キャッシュ制御モジュール35でキャッシュラインのステータスをタグメモリ40から取得し、ステップS4で、他のプロセッサエレメントのキャッシュ上でヒットか否か判定する。この場合、ミスヒットであればステップS13に進み、メモリモジュール20側に対するアクセスで他のプロセッサモジュールに対する処理を行う。
If a cache miss hit occurs, the
ステップS4でキャッシュヒットとなった場合には、ステップS5で、他のプロセッサエレメントのキャッシュ状態はシェアードクリーン状態SH&Cか否かチェックする。シェアードクリーン状態SH&Cであれば、ステップS6で、スヌープバス22にコマンドを送出し、ステップS7で、リプライデータを受領してキャッシュに応答し、ステップS8で、ステータスを無効化状態INVからシェアードクリーン状態SH&Cに更新する。
If a cache hit occurs in step S4, it is checked in step S5 whether the cache state of the other processor element is a shared clean state SH & C. In the shared clean state SH & C, a command is sent to the snoop
一方、他のプロセッサが排他的ダーティ状態EX&Dであった場合には、ステップS9でスヌープバス22にコマンドを送出した後、ステップS10で、リプライデータを受領してキャッシュに応答し、ステップS11で、ステータスをシェアードモディファイ状態SH&Mに更新する。
On the other hand, if the other processor is in the exclusive dirty state EX & D, after sending a command to the snoop
3.CPU書込アクセスに対するキャッシュコヒーレンス
(1)書込モード1
図23は、書込モード1におけるキャッシュコヒーレンスのプロトコルを示す。この書込モード1は、プロセッサモジュール10−1の任意のCPUの書込アクセスP−WTに対し自己のキャッシュユニットでミスヒットし、且つスヌープバス22で接続した他のキャッシュユニットにおいてもミスヒットとなり、且つ書込アドレスがプロセッサモジュール10−1の主記憶であるローカルストレージ28にあり、更に、ローカルストレージ28の書込アドレスのコピーデータが他の複数のプロセッサモジュール10−2,10−3のキャッシュ上にシェア状態で存在する場合である。
3. Cache coherence for CPU write access (1) Write
FIG. 23 shows a cache coherence protocol in the
この場合には、スヌープバス22を介して書込アクセスT−CRIを受けたプロセッサモジュール10−1のメモリ管理ユニット26は、自らをローカルおよびホームとし、キャッシュディレクトリの参照で、シェア状態にある全てのプロセッサモジュール10−2,10−3に対し、システムバス12を使用して無効化指令であるパージコマンド300を発行する。
In this case, the
このパージコマンド300に対し、プロセッサモジュール10−2,10−3はリモートとして動作し、それぞれのメモリ管理ユニット26はスヌープバス22を介してシェア状態Cにあるメモリユニットに対し無効化を要求する。シェア状態にあるキャッシュユニットで無効化に成功すると、プロセッサモジュール10−2,10−3はシステムバス12を使用して独立にパージ応答310,320を行う。このパージ応答310,320には、プロセッサモジュール10−2,10−3における対象となったキャッシュラインのキャッシュステータスが含まれている。
In response to the purge command 300, the processor modules 10-2 and 10-3 operate as remotes, and the respective
ホームとしてのプロセッサモジュール10−1は、システムバス12から全てのパージ応答310,320を受理したことで無効化の成功を認識し、主記憶としてのローカルストレージ28の書込アドレスのコピーデータをアクセス元のキャッシュユニットに格納して、書込アクセスにより上書きさせる。このときホームとしてのプロセッサモジュール10−1にあっては、アクセス対象となったキャッシュラインのディレクトリエントリのシェア状態Sをダーティ状態Dに更新する。
The processor module 10-1 as the home recognizes the success of invalidation by receiving all the
このように書込アクセスにあっては、アクセス元のキャッシュ上で主記憶としてのローカルストレージ28と同一データが上書きにより変更されて最新データとなることで、ローカルストレージ28のデータが旧いデータとなった状態で処理を終了し、ローカルストレージ28の旧いデータの最新データとのコヒーレンスは、既に説明したリードアクセスを通じて行われることになる。
As described above, in the write access, the same data as the
(2)書込モード2
図24は、書込モード2によるキャッシュコヒーレンスのプロトコルを示す。書込モード2は、CPUアクセスが発生したプロセッサモジュール10−1のキャッシュユニットに、スヌープバス22で接続した他のキャッシュユニットに書込権を所有しないシェア状態Cで主記憶としてのローカルストレージ28と同一データが存在している場合であり、それ以外の状態は図23のモード1と同じである。
(2) Write
FIG. 24 shows a cache coherence protocol according to the
この書込モード2にあっては、CPUの書込アクセスP−WTに基づいて、ホームとして動作したメモリ管理ユニット26よりシステムバス12を使用してリモートとしてのプロセッサモジュール10−2,10−3にパージコマンド300を発行すると同時に、これに並行して、同じプロセッサモジュール10内のキャッシュユニット群18に対しパージコマンド325を発行する。
In the
このため、ホームとして動作したプロセッサモジュール10−1のメモリ管理ユニット26は、システムバス12を介してリモートとしてのプロセッサモジュール10−2,10−3からのパージ応答310,320の全ての応答と、自己のスヌープバス22からのパージ応答を受理したことで、無効化の成功を認識し、主記憶としてのローカルストレージ28の最新データのコピーデータをアクセス元のキャッシュユニットに格納して、CPUの書込アクセスにより上書きする。この場合にも、書込モード1と同様、ディレクトリエントリのシェア状態Sはダーティ状態Dに更新される。
For this reason, the
(3)書込モード3
図25は、書込モード3によるキャッシュコヒーレンスのプロトコルを示す。この書込モード3は、プロセッサモジュール10−1のCPUの書込アクセスP−WTに対し、自己のキャッシュユニットおよびスヌープバス22を介して接続したキャッシュユニットを含むキャッシュ群18のいずれにもコピーデータがオーナーを所有した状態で登録されておらず、ミスヒットになり、書込アドレスがプロセッサモジュール10−2の主記憶であるローカルストレージ28にあり、更にローカルストレージ28の最新データのコピーデータがプロセッサモジュール10−2以外の他の複数のプロセッサモジュール10−3,10−4にシェア状態Cで存在する場合である。
(3) Write
FIG. 25 shows a cache coherence protocol according to the
この場合、ローカルとしてのプロセッサモジュール10のメモリ管理ユニット26は、システムバス12を使用してホームとしてのプロセッサモジュール10−2に書込所有権の要求指令、所謂ホームコマンド330を発行する。書込所有権の要求指令であるホームコマンド330を受領したプロセッサモジュール10−2は、シェア状態にある他のプロセッサモジュール10−3,10−4に対し、システムバス12を使用して無効化指令としてのパージコマンド340を発行する。
In this case, the
プロセッサモジュール10−3,10−4は、パージコマンド340を受理すると、スヌープバス22を介して、シェア状態にあるキャッシュ群18の中のキャッシュユニットに対し無効化を指令し、無効化に成功すると、システムバス12を使用してホームとしてのプロセッサモジュール10−2に独立にパージ応答350,360を返す。
When the processor modules 10-3 and 10-4 receive the purge command 340, the processor modules 10-3 and 10-4 instruct the cache unit in the
ホームとしてのプロセッサモジュール10−2は、全てのパージ応答350,360を受理したことで無効化の成功を認識すると、ローカルとしてのプロセッサモジュール10−1に対し、システムバス12を使用して自分自身の主記憶であるローカルストレージ28の最新データのコピーデータを含む書込所有権の移動を応答する。
When the processor module 10-2 as the home recognizes the success of the invalidation by accepting all the
ローカルのプロセッサモジュール10−1は、システムバス12より書込所有権の応答であるリプライデータ370の受領により得られたコピーデータをアクセス元のキャッシュユニットに格納し、CPUの書込アクセスにより上書きさせる。ここで、無効化の成功を認識して書込所有権の移動を行ったホームとしてのプロセッサモジュール10−2のメモリ管理ユニットは、ディレクトリエントリのシェア状態Sをダーティ状態Dに更新する。またプロセッサモジュール10−1のアクセス元のキャッシュユニットにあっては、書込アクセスの終了でキャッシュ状態を書込権を所有したダーティ状態Dに更新する。
The local processor module 10-1 stores the copy data obtained by receiving the reply data 370, which is a response to write ownership from the
(4)書込モード4
図26は、書込モード4によるキャッシュコヒーレンスのプロトコルを示す。書込モード4は、ローカルとして動作するプロセッサモジュール10−1におけるCPUの書込アクセスP−WTに対し、自己のキャッシュユニットがミスヒットで、且つスヌープバス22を介して接続した他のキャッシュユニットにもコピーデータが書込権を所有した状態で登録されておらずにミスヒットとなり、書込アドレスがプロセッサモジュール10−2の主記憶であるローカルストレージ28にあり、更にローカルストレージ28の最新データのコピーデータがプロセッサモジュール10−2を含む複数のプロセッサモジュール10−3,10−4のキャッシュユニットにシェア状態Cで存在する場合である。
(4) Write
FIG. 26 shows a cache coherence protocol according to the
この場合には、書込アクセスが発生したローカルとしてのプロセッサモジュール10−1のメモリ管理ユニット26が、ホームとしてプロセッサモジュール10−2に対しシステムバス12を使用して書込所有権の要求指令であるホームコマンド370を発行する。この書込所有権要求指令となるホームコマンド370を受領したプロセッサモジュール10−2のメモリ管理ユニット26は、シェア状態にある全てのプロセッサモジュール10−3,10−4に対し、システムバス12を使用して無効化指令としてのパージコマンド380を発行する。
In this case, the
このパージコマンド380の発行に並行して更に、メモリ管理ユニット26は、自己のシェア状態にあるキャッシュ群18の中のキャッシュユニットに対しスヌープバス22を使用して無効化指令としてのパージコマンド410を発行する。
In parallel with the issuance of the purge command 380, the
キャッシュ上でシェア状態Cにある全てのプロセッサモジュール10−3,10−4はリモートとして動作し、パージコマンド340を同時に受理して、スヌープバス22を介してキャッシュ群18側に無効化を指令し、無効化に成功すると、システムバス12を使用して、プロセッサモジュール10−2に独立にパージ応答350,360を返す。これに並行してプロセッサモジュール10−2のシェア状態Cにあるキャッシュユニットからは、無効化の成功がスヌープバス22を使用して応答される。
All the processor modules 10-3 and 10-4 in the shared state C on the cache operate as remote, accept the purge command 340 at the same time, and command invalidation to the
ホームとなるプロセッサモジュール10−2は、システムバス12からの全ての無効化成功のパージ応答350,360と、スヌープバス22からの無効化成功の応答を受領したことで、無効化の成功を認識して、システムバス12を使用してローカルのプロセッサモジュール10−1に対し自分の主記憶であるローカルストレージ28の最新データのコピーデータを含む書込所有権の移動をリプライデータ430として応答する。
The home processor module 10-2 recognizes the success of invalidation by receiving all the invalidation
プロセッサモジュール10−1は、システムバス12から書込所有権の応答の受領で得られたコピーデータをアクセス元のキャッシュユニットに格納して、CPUの書込アクセスにより上書きさせる。ここでプロセッサモジュール10−2は、無効化の成功を認識して書込所有権の移動を応答した際に、自己のディレクトリエントリのシェア状態Sをダーティ状態Dに更新する。
The processor module 10-1 stores the copy data obtained by receiving the write ownership response from the
(5)書込モード5
図27は、書込モード5によるキャッシュコヒーレンスのプロトコルを示す。この書込モード5は、プロセッサモジュール10−1のCPUの書込アクセスP−WTに対し自己のキャッシュユニットおよびスヌープバス22で接続した他のキャッシュユニットのキャッシュ群18にコピーデータが書込権を所有した状態で登録されておらずにミスヒットとなり、且つ書込アドレスがプロセッサモジュール10−1の主記憶であるローカルストレージ28にあり、更にローカルストレージ28の書込アドレスの最新データがプロセッサモジュール10−2のキャッシュユニットに書込権を所有したダーティ状態Dで存在する場合である。
(5) Write
FIG. 27 shows a cache coherence protocol according to the
この場合、ローカルおよびホームとしてのプロセッサモジュール10−1は、ダーティ状態Dにあるプロセッサモジュール10−2に対し、システムバス12を使用して、書込所有権の要求指令となるリモートコマンド440を発行する。プロセッサモジュール10−2は、システムバス12から書込所有権の要求指令であるリモートコマンド440を受理して、キャッシュユニット上のシェア状態Dの最新データを含む書込所有権の移動を示すリプライデータ450をシステムバス12を使用してプロセッサモジュール10−1に応答する。
In this case, the local and home processor module 10-1 issues a remote command 440 serving as a write ownership request command to the processor module 10-2 in the dirty state D using the
プロセッサモジュール10−1は、リプライデータ450による書込所有権の応答で得られた最新データをアクセス元のキャッシュユニットに格納して、CPUによる書込アクセスで上書きさせる。 The processor module 10-1 stores the latest data obtained in response to the write ownership by the reply data 450 in the access source cache unit, and overwrites it with the write access by the CPU.
ここでプロセッサモジュール10−2の書込所有権を移動したキャッシュユニットにあっては、ダーティ状態Dを無効化状態Iに更新する。またプロセッサモジュール10−1のメモリ管理ユニット26は、書込所有権を受領した際にディレクトリエントリのダーティ状態Dを自分のキャッシュ上に最新データが存在するダーティ状態D´に更新する。
Here, in the cache unit to which the write ownership of the processor module 10-2 has been transferred, the dirty state D is updated to the invalidated state I. Further, when the
(6)書込モード6
図28は、書込モード6によるキャッシュコヒーレンスのプロトコルを示す。この書込モード6は、プロセッサモジュール10−1のCPUによる書込アクセスP−WTに対し、自己のキャッシュユニットおよびスヌープバス22で接続した他のキャッシュユニットを含むキャッシュ群18にコピーデータが書込権を所有した状態で登録されておらずに、ミスヒットとなり、書込アドレスがプロセッサモジュール10−2の主記憶であるローカルストレージ28にあり、更にローカルストレージ28の書込アドレスの最新データがプロセッサモジュール10−3のキャッシュユニットに書込権を所有したダーティ状態Dで存在する場合である。
(6) Write
FIG. 28 shows a cache coherence protocol according to the
この場合に、ローカルとしてのプロセッサモジュール10−1のメモリ管理ユニット26は、システムバス12を使用して、書込所有権の要求指令となるホームコマンド460を発行する。ホームコマンド460を受領したホームとなるプロセッサモジュール10−2のメモリ管理ユニット26は、リモートとなるプロセッサモジュール10−3に対し、システムバス12を使用して、同じく書込所有権の要求指令であるリモートコマンド470を発行する。
In this case, the
リモートコマンド470を受領したプロセッサモジュール10−3は、ダーティ状態Dにあるキャッシュユニットの最新データを含む書込所有権を、システムバス12を使用して、リプライデータ480としてホームであるプロセッサモジュール10−2およびローカルであるプロセッサモジュール10−1に応答する。
The processor module 10-3 that has received the
ホームであるプロセッサモジュール10−2は、書込所有権の応答であるリプライデータ480を受領して、書込所有権の移動を認識する。またローカルとなるプロセッサモジュール10−1は、リプライデータ480による書込所有権の受領で得られた最新データをアクセス元のキャッシュユニットに格納して、CPUの書込アクセスで上書きさせる。
The home processor module 10-2 receives the
ここで、リモートとなるプロセッサモジュール10−3のキャッシュユニットにあっては、ダーティ状態Dを書込所有権を移動した際に無効化状態Iに更新する。またホームとなるプロセッサモジュール10−2は、書込所有権の移動を確認した際に、ディレクトリエントリのダーティ状態Dを最新データが存在するプロセッサモジュール10−1の情報に変更したダーティ状態D´に更新する。 Here, in the cache unit of the remote processor module 10-3, the dirty state D is updated to the invalidation state I when the write ownership is transferred. Further, when the home processor module 10-2 confirms the transfer of the write ownership, the dirty state D of the directory entry is changed to the dirty state D ′ which is changed to the information of the processor module 10-1 in which the latest data exists. Update.
更に、ローカルとなるプロセッサモジュール10−1のアクセス元のキャッシュユニットにあっては、最新データを格納した後に、書込権を所有しているダーティ状態Dに更新する。 Further, in the access source cache unit of the local processor module 10-1, after the latest data is stored, the cache unit is updated to the dirty state D having the write right.
(7)書込モード7
図29は、書込モード7によるキャッシュコヒーレンスのプロトコルを示す。この書込モード7は、プロセッサモジュール10−1内の複数のキャッシュユニット間でアクセスする場合である。即ち、プロセッサモジュール10−1内のCPUの書込アクセスP−WTに対し、自己のキャッシュユニット18−4はミスヒットしたが、スヌープバス22を介して接続した他のキャッシュユニット18−1に書込アドレスの最新データが書込権を所有したダーティ状態、即ち排他的ダーティ状態EX&Dで存在する場合である。
(7) Write
FIG. 29 shows a cache coherence protocol according to the
この場合、アクセス元のキャッシュユニット18−4はスヌープバス22を介してコマンドT−CRIを発行し、これに応答してキャッシュユニット18−1は最新のキャッシュサブラインのデータを含むリプライデータ490を応答し、キャッシュユニット18−4に格納した後に、書込アクセスにより上書きさせる。
In this case, the access-source cache unit 18-4 issues a command T-CRI via the snoop
ここで、アクセス先のキャッシュユニット18−1にあっては、書込所有権を移動した後に無効化状態INVに更新される。またアクセス元のキャッシュユニット18−4は、書込権を獲得した後に無効化状態INVから書込権を所有するダーティ状態である排他的ダーティ状態EX&Dに更新される。 Here, in the cache unit 18-1 to be accessed, the write ownership is transferred and then updated to the invalidation state INV. Further, after acquiring the write right, the access source cache unit 18-4 is updated from the invalidation state INV to the exclusive dirty state EX & D which is a dirty state in which the write right is owned.
(8)書込アクセスのプロセッサライト処理
図30のフローチャートは、書込アクセスに伴うキャッシュコヒーレンスでローカルとなったプロセッサモジュールのライト処理である。ステップS1で、プロセッサエレメントのライトアクセスが発生すると、ステップS2で、2次キャッシュ38のキャッシュヒットが判定され、キャッシュヒットであれば、ステップS14で、キャッシュ上にデータを上書きする。
(8) Processor Write Processing for Write Access The flowchart in FIG. 30 is a write processing for the processor module that has become local due to cache coherence associated with write access. When a processor element write access occurs in step S1, a cache hit of the
キャッシュミスヒットであればタグメモリ40からキャッシュステータスを取得し、スヌープバス22で取得した他のキャッシュユニットに最新データがあるか否かステップS4でチェックする。他のキャッシュ上に最新データがあれば、ステップS15で他のプロセッサエレメントにコマンドを送出し、ステップS16でリプライを待ち、ステップS17で、最新のリプライデータに上書きを行って、書込アクセスを終了する。
If it is a cache miss hit, the cache status is acquired from the tag memory 40, and it is checked in step S4 whether there is the latest data in another cache unit acquired by the
ステップS14で、スヌープバス22で接続した他のプロセッサエレメントのキャッシュ上に最新データがなかった場合には、ステップS5で、ローカルコマンドをスヌープバス22を介してメモリ管理ユニット26に送出し、ステップS6で、空間識別ユニット50からプロセッサモジュール空間を判別し、ステップS7で、自分自身のプロセッサモジュール空間か否か判断する。
If there is no latest data in the cache of another processor element connected by the
自分自身のプロセッサモジュール空間であれば、ステップS8で、自分自身をホームとしてディレクトリメモリ30からキャッシュラインのステータスを見るためにディレクトリエントリを取得する。ステップS9で、ディレクトリエントリのサブラインはダーティか否かチェックし、ダーティであれば、ステップS10で、リモートとなるプロセッサモジュールにシステムバス12を介してパージを要求する。
If it is the processor module space of its own, in step S8, the directory entry is acquired from the
このパージ要求に対しステップS11で応答があれば、ディレクトリエントリの別のサブラインにダーティをセットし、キャッシュステータスを更新する。そしてステップS13で、プロセッサエレメントのアクセス元のキャッシュ上でリプライデータを上書きし、無効化状態INVを書込所有権付きのダーティ状態EX&Dに更新する。 If there is a response to this purge request in step S11, dirty is set in another subline of the directory entry, and the cache status is updated. In step S13, the reply data is overwritten on the access source cache of the processor element, and the invalidation state INV is updated to the dirty state EX & D with write ownership.
一方、ステップS9で、ディレクトリエントリのサブラインがダーティではなくシェアであった場合には、ステップS21で、リモートプロセッサモジュールにパージを要求し、ステップS22でリプライを待って、ステップS23で、ディレクトリエントリのシェア状態Sをダーティ状態Dに更新するキャッシュステータスの更新を行い、最終的に、ステップS24で、キャッシュデータに上書きを行って無効化状態INVからシェアードダーティ状態SH&Dに更新する。 On the other hand, if the subline of the directory entry is not dirty but a share in step S9, a purge is requested to the remote processor module in step S21, a reply is waited in step S22, and the directory entry is checked in step S23. The cache status is updated to update the shared state S to the dirty state D. Finally, in step S24, the cache data is overwritten to update from the invalidated state INV to the shared dirty state SH & D.
このステップS8〜S13およびステップS21〜S24は、ローカルプロセッサモジュールが同時にホームプロセッサモジュールとなった場合の処理である。 Steps S8 to S13 and steps S21 to S24 are processes when the local processor module simultaneously becomes the home processor module.
一方、ステップS7で、アクセス空間が自分自身のプロセッサモジュール空間でなかった場合には、ステップS18で、他のプロセッサモジュールに対しホームコマンドを送出し、ステップS19で、最新データのリプライを待って、ステップS20で、リプライデータをキャッシュ上で上書きして無効化状態INVから排他的ダーティ状態EX&Dに更新する。これはホームコマンドにより書込所有権の移動を伴うものである。 On the other hand, if the access space is not its own processor module space in step S7, a home command is sent to another processor module in step S18, and a reply of the latest data is waited in step S19. In step S20, the reply data is overwritten on the cache and updated from the invalidation state INV to the exclusive dirty state EX & D. This is accompanied by transfer of write ownership by the home command.
図31のフローチャートは、書込アクセスによるキャッシュコヒーレンスでホームプロセッサモジュールとなった場合のライト処理である。ステップS1でホームコマンドを受領すると、ステップS2で、自分自身をホームとしてディレクトリメモリ30からキャッシュステータスとしてのディレクトリエントリを取得する。
The flowchart in FIG. 31 shows a write process when the home processor module is obtained by cache coherence by write access. When a home command is received in step S1, a directory entry as a cache status is acquired from the
ステップS3で、ディレクトリエントリのサブラインを参照してダーティか否かチェックし、ダーティであれば、ステップS4で、ダーティ状態の最新データの存在が自分自身のプロセッサモジュールのキャッシュ上か否かチェックする。自分自身のキャッシュ上であれば、ステップS5で、スヌープバス22を介してパージを要求し、ステップS6のリプライを待って新データを、ステップS7で、主記憶としてのローカルストレージ28のキャッシュ状態であるディレクトリエントリの新たなサブラインをダーティ状態にセットし、ステップS8で、ローカルプロセッサモジュールに最新データをリプライデータとして送出する。
In step S3, it is checked whether it is dirty by referring to the subline of the directory entry. If it is dirty, it is checked in step S4 whether the latest data in the dirty state is on the cache of its own processor module. If it is on its own cache, a purge is requested via the snoop
ステップS4で、ダーティ状態の最新データが他のプロセッサモジュールのキャッシュ上に存在する場合には、ステップS9で、リモートプロセッサモジュールに対しパージを要求し、ステップS10でリプライを待って、ステップS11に進み、ディレクトリエントリにおける新サブラインのダーティをセットする。 If the latest dirty data is present in the cache of another processor module in step S4, a purge is requested to the remote processor module in step S9, a reply is waited in step S10, and the process proceeds to step S11. Set the new subline's dirty in the directory entry.
一方、ステップS3で、ディレクトリエントリのサブラインがダーティでなくシェア状態であった場合には、ステップS12で、自分自身のプロセッサモジュール内のキャッシュ上か否かチェックする。自分自身のキャッシュ上でなければ、ステップS13で、リモートプロセッサモジュールにパージを要求し、ステップS14でリプライを待って、ステップS15で、主記憶としてのローカルストレージから最新データとしてのリプライデータを読み出してローカルプロセッサモジュールに送出し、キャッシュディレクトリをダーティ状態Dからシェア状態Sに更新する。 On the other hand, if the subline of the directory entry is not dirty but is in a shared state in step S3, it is checked in step S12 whether it is on the cache in its own processor module. If it is not in its own cache, it requests purge to the remote processor module in step S13, waits for a reply in step S14, and reads the reply data as the latest data from the local storage as the main memory in step S15. The cache directory is updated from the dirty state D to the share state S.
またステップS2で、自分自身のプロセッサモジュール内のキャッシュ上にシェア状態が存在するときには、ステップS16で、スヌープバス22を介してパージを要求し、ステップS17でリプライを待って、ステップS18に進み、ディレクトリエントリのシェア状態をダーティ状態に更新する。そしてステップS19で、主記憶としてのローカルストレージ28の最新データをローカルプロセッサモジュールにリプライデータとして送出する。
In step S2, when there is a shared state on the cache in its own processor module, in step S16, a purge is requested via the snoop
図32のフローチャートは、書込アクセスにおいてリモートプとなるロセッサモジュールのライト処理である。リモートプロセッサモジュールのライト処理にあっては、まずステップS1で、システムバス12からリモートコマンド、即ち書込所有権の要求指令を受領すると、ステップS2で、スヌープバス22にコマンドを送出し、ステップS3で、スヌープバス22からのリプライを待ち、ローカルプロセッサモジュールおよびホームプロセッサモジュールに対し、ステップS4で、書込所有権の移動を応答するコマンドと最新データをリプライデータとして送出する。
The flowchart in FIG. 32 shows a write process of the processor module that is a remote controller in the write access. In the write processing of the remote processor module, when a remote command, that is, a write ownership request command is received from the
図33は、書込アクセスが発生した際のプロセッサエレメントのライト処理のフローチャートである。まずステップS1でライト要求が発生すると、ステップS2で、自分自身のキャッシュユニットおよびスヌープバス22で接続した他のキャッシュユニットに書込権を所有した最新データが存在するか否かチェックする。
FIG. 33 is a flowchart of the write process of the processor element when a write access occurs. First, when a write request is generated in step S1, it is checked in step S2 whether or not the latest data having the write right exists in its own cache unit and other cache units connected by the
他のキャッシュ上に存在すれば、ステップS9で、アクセス元に転送してキャッシュデータの上書きを行い、読出時のキャッシュユニットでキャッシュヒットとなるか否か、ステップS2でチェックする。キャッシュヒットであれば、ステップS9に進み、キャッシュデータにライト要求によるデータを上書きし、自分自身のキャッシュ状態を同じ書込所有権付きの排他的ダーティ状態EX&D´に送信する。 If it exists in another cache, in step S9, it is transferred to the access source and the cache data is overwritten, and it is checked in step S2 whether or not a cache hit occurs in the cache unit at the time of reading. If it is a cache hit, the process proceeds to step S9, where the cache data is overwritten with the data by the write request, and its own cache state is transmitted to the exclusive dirty state EX & D ′ with the same write ownership.
自分自身のキャッシュユニットに書込権を所有した状態で最新データが存在しなかった場合には、ステップS3に進み、キャッシュ制御モジュール35でタグメモリ40を参照して、キャッシュラインのステータスを取得し、他のプロセッサエレメントのキャッシュ上に書込権を所有した状態で最新データが存在するか否かチェックする。
If the latest data does not exist while owning the write right in the own cache unit, the process proceeds to step S3 and the
存在すればヒットと判定し、ステップS5で、スヌープバス22にコマンドを送出し、書込所有権の要求指令を行う。ステップS6でリプライがあると、アクセス元のキャッシュ上にリプライデータを格納して上書きし、ステップS8で、キャッシュステータスを無効状態INVから排他的ダーティ状態EX&Dに更新する。
If it exists, it is determined to be a hit, and in step S5, a command is sent to the snoop
ステップS4で、他のプロセッサエレメントに書込所有権が存在した状態で最新データがない場合には、ステップS10に進み、他のプロセッサモジュールに対するアクセス処理となり、これは図30のローカルプロセッサモジュールのライト処理を起動することになる。
In step S4, when there is no latest data in the state where the write ownership exists in the other processor element, the process proceeds to step S10, and the access process to the other processor module is performed, which is the write of the local processor module in FIG. The process will be started.
4.キャッシュユニットのアクセス競合処理
本発明のキャッシュコヒーレンス装置にあっては、複数のプロセッサモジュールの各々のプロセッサエレメント毎に設けたキャッシュユニットは、モジュール内のプロセッサエレメント及び外部のプロセッサモジュールのアクセス対象となり、このため特定のキャッシュユニットにアクセスが集中する可能性がある。
4). Cache unit access contention processing In the cache coherence device of the present invention, a cache unit provided for each processor element of a plurality of processor modules is an access target of a processor element in the module and an external processor module. Therefore, access may concentrate on a specific cache unit.
例えばリモートのプロセッサモジュール内のプロセッサエレメントとキャッシュユニット間でデータ授受が行われているとき、外部のホームとして機能するプロセッサモジュールからのリモートコマンドがスヌープバスに現れたとき、後発のリモートコマンドは、先発したキャッシュ制御によってリトライが指示される。これは、先発のコマンドによって、キャッシュ状態が遷移過渡期にあるため、リモートコマンドへの対処が決定できないからである。 For example, when data is being exchanged between a processor element and a cache unit in a remote processor module, when a remote command from the processor module functioning as an external home appears on the snoop bus, the subsequent remote command is Retry is instructed by the cache control. This is because the response to the remote command cannot be determined because the cache state is in the transition transition period due to the first command.
このように、リモートのプロセッサモジュール内でのデータの授受が際限なく続いた場合、リモートコマンドを送出したホームのプロセッサモジュールは、リトライを繰り返す場合がある。このときシステムバスに対するバス接続ユニットでは、アクセス応答の時間監視を行っており、リトライの繰り返しがバスタイムアウトの引金になる。 As described above, when data transmission / reception in the remote processor module continues indefinitely, the home processor module that has transmitted the remote command may repeat the retry. At this time, the bus connection unit for the system bus monitors the time of access response, and repetition of the retry triggers the bus timeout.
図34において,プロセッサモジュール10−1は,アクセス対象となるデータのアドレスを主記憶28に持つことからホームとして機能する。この主記憶28のアクセスアドレスのデータは最新データでないことから,ディレクトリを管理するメモリ管理ユニット26はダーティ状態Dを登録している。このアクセスアドレスのデータの最新データは、プロセッサモジュール10−2のキャッシュユニット群18における4番目のプロセッサエレメントPE#3のキャッシュユニットに排他的ダーティ状態EX&Dで保持されている。
In FIG. 34, the processor module 10-1 functions as a home because the
この状態でプロセッサモジュール10−1の第4プロセッサエレメントPE#3でライトコマンドP−WTが発生し、またプロセッサモジュール10−2の第1プロセッサモジュールPE#0で同じアドレスに対するライトコマンドP−WTが発生したとする。
In this state, a write command P-WT is generated in the fourth processor
プロセッサモジュール10−2にあっては、第1プロセッサエレメントPE#1の発生したライトアクセスに基づき、キャッシュユニット18−1からスヌープバス22に、aのようにコヒーレントライト&インバリデートのCRIコマンドが発行される。この場合、第4プロセッサエレメントPE#3のキャッシュユニット18−4にアクセスアドレスのデータが排他的ダーティ状態EX&Dで記録されているため、cのように第4プロセッサエレメントPE#3のキャッシュユニットから第1プロセッサエレメントPE#0に対しデータが供給される。
In the processor module 10-2, based on the write access generated by the first processor
このようなプロセッサモジュール10−2内におけるアクセスに並行して、プロセッサモジュール10−1の第4プロセッサエレメントPE#3のライトアクセスに基づき、システムバス12にリモートコマンド220が送出され、bのようにリモートとなるプロセッサモジュール10−2のスヌープバス22にリモートコマンドが現れる。
In parallel with the access in the processor module 10-2, the
このときa,cに示した内部のプロセッサエレメントPE#0,#3の間のアクセスが終了していれば問題ないが、アクセス中にリモートコマンドが現れるとバスビジーとなって、プロセッサモジュール10−1に対しシステムバス12を介してリトライを指示するためのリプライコマンド230がeのように送出される。
At this time, there is no problem if the access between the internal processor
このため、リプライコマンド230を受けたプロセッサモジュール10−1は、再度リモートコマンド220をプロセッサモジュール10−2に送出するリトライ動作を行うが、このときのプロセッサモジュール10−2の内部のアクセスによりスヌープバス22がビジーであると、再度リプライコマンド230によるリトライとなり、リトライが際限なく続く可能性がある。
For this reason, the processor module 10-1 that has received the
図35は、リモートコマンドに対するリトライ指示が繰り返されるプロセッサモジュール10−2の処理のタイムチャートである。 FIG. 35 is a time chart of processing of the processor module 10-2 in which a retry instruction for a remote command is repeated.
図35のタイムチャートにあっては、横軸にバスクロックサイクルの処理タイミングを示し、縦軸にスヌープバス22の使用中のプロセッサエレメント、プロセッサエレメントPE#0〜#3ごとのビジー期間、更に各プロセッサエレメント#0〜#3に対応したキャッシュステータス信号CST0〜3を示している。
In the time chart of FIG. 35, the horizontal axis represents the processing timing of the bus clock cycle, the vertical axis represents the processor element in use of the snoop
まずaのように、第1プロセッサエレメントPE#0のライトコマンドの発行に伴い、スヌープバス22がプロセッサエレメントPE#0で占有され、コヒーレント&インバリデートのCRTコマンドが送出される。このCRTコマンドに伴い、アクセス先のプロセッサエレメントPE#0のビジー状態が設定される。アクセス先となるプロセッサエレメントPE#0のビジー期間中に、bのように、外部のプロセッサエレメント10−1からのリモートコマンド#RのCRIコマンドが現われると、アクセス先のプロセッサエレメントPE#0はビジー状態にあることからビジー応答となり、例えば4サイクル後のdのタイミングでリモートコマンド#Rに対するビジー応答のリプライコマンドがプロセッサモジュール10−1に送出される。
First, as shown in a, with the issuance of the write command of the first processor
一方、bのリモートコマンド#RのCRIコマンドの後にプロセッサエレメントPE#3からデータトランスファのDTコマンドが現われ、CRIコマンドを受けたプロセッサエレメントPE#0から要求元のプロセッサエレメントPE#3に対するデータ転送が行われる。このcのDTコマンドに基づくデータ転送の終了後に、eのように、プロセッサエレメントPE#1のCRIコマンドがスヌープバス22に現われ、このアクセス要求先がビジーリプライとなったリモートコマンド#Rと同じプロセッサエレメント#0であったとすると、再びプロセッサエレメントPE#0がビジー状態となる。
On the other hand, a data transfer DT command appears from the processor
このため、eのリモートコマンドに対するビジーリプライに基づいてプロセッサモジュール10−1から、fのようにリモートコマンド#Rのリトライがスヌープバス上に現われても、アクセス要求先となるプロセッサエレメント#0はビジー状態にあるため、hのように、リモートコマンド#Rに対するビジーリプライとなる。
Therefore, even if the retry of the remote command #R appears on the snoop bus from the processor module 10-1 based on the busy reply to the remote command of e as in f, the
そして、このようなリモートコマンド#Rに対するアクセス要求先のプロセッサエレメント#0のビジー状態によるリトライ指示が際限なく繰り返され、結局はプロセッサモジュール10−1からのアクセスがバスタイムアウトとなってエラー終了してしまう。
Then, the retry instruction due to the busy state of the
このような特定のキャッシュユニットにおけるアクセスの競合に対し本発明にあっては、プロセッサモジュールの各プロセッサエレメントの中に、自己のアクセス処理中にリモートコマンドを受けてリトライの指示を行ったことを記憶するフラグと、そのときのアクセスアドレスを保持するアドレスレジスタを設ける。 In the present invention against such access conflicts in a specific cache unit, each processor element of the processor module stores information indicating that a remote command was received and a retry instruction was issued during its own access processing. And an address register for holding the access address at that time.
そして、リモートコマンドに対するリトラスの指示を行ったことを示すフラグが有効な期間の間は、アドレスレジスタにセットしたアクセスアドレスと同じリモートコマンド以外のアクセス要求は全て受け付けずにリトライを指示するように構成する。 In addition, during the period when the flag indicating that the retras instruction for the remote command has been issued is valid, the access request other than the same remote command as the access address set in the address register is not accepted and the retry is instructed. To do.
このため、プロセッサモジュールのスヌープバス22上で内部的なアクセス中にリモートコマンドによるアクセスが競合した場合、1回はリトライ指示となるが、2回目のリトライによるリモートコマンドについては、他のアクセスが一切拒否されている。このため、2回目のリモートコマンドによるアクセスを優先的に受け付けた処理を行うことができる。
For this reason, if access by a remote command conflicts during internal access on the snoop
図36は、プロセッサエレメントにリモートコマンドのアクセスを優先させるためのフラグ及びアドレスレジスタを設けた場合の本発明による処理動作のタイムチャートである。 FIG. 36 is a time chart of the processing operation according to the present invention when the processor element is provided with a flag and an address register for giving priority to remote command access.
図36において、aのようにプロセッサエレメントPE#0のライトアクセスによるCRTコマンドがスヌープバス22に現われたならば、このCRTコマンドを発行したプロセッサエレメントPE#0において、bのように、プロセッサエレメントPE#3側のアクセス対象となるアドレスをレジスタに格納する。
In FIG. 36, if a CRT command by write access of the processor
プロセッサエレメントPE#0のCRIコマンドに伴うプロセッサエレメントPE#0のビジー期間中に、cのようにリモートコマンド#RのCRIコマンドが現われると、dのようにリモートコマンド#Rに対するリトライ指示を行ったことを示すフラグをセットする。
When the CRI command of the remote command #R appears during the busy period of the processor
この第1回目のリモートコマンド#Rについては、図35と同様、fでビジーリプライによるリトライ指示となる。続いてeのアクセス要求先のプロセッサエレメントPE#3からのデータ転送が行われ、スヌープバス22の使用が解除された後に、fのように別のプロセッサエレメントPE#1から同じプロセッサエレメントPE#3の同一アドレスに対しCRIコマンドが発行されたとする。
The first remote command #R is a retry instruction by busy reply at f as in FIG. Subsequently, after data transfer from the access request destination processor
これに対し、1回目のリモートコマンド#Rに対しリトライ指示を行ったプロセッサエレメントPE#0は、リモートコマンドに対しリトライ指示を行ったことを示すフラグのセット状態と、そのときのアクセスアドレスを記憶保持していることから、fのプロセッサエレメントPE#1のCRIコマンドに対しgでバスビジーとなり、hでプロセッサエレメントPE#1に対するビジーリプライによってリトライを指示し、アクセス要求を拒否する。
On the other hand, the processor
続いてiでリトライによるリモートコマンド#Rが現われると、このときアクセス要求先のプロセッサエレメントPE#0は空き状態にあることから、リモートコマンド#RのCRIコマンドによる処理が受け入れられ、リモート側に対するデータ転送に入る。このデータ転送を開始すると、その後のタイミングで、(10)に示すように、プロセッサエレメント#0に記憶されていたフラグ及びアクセスアドレスは順次初期化されて解除され、リトライを行ったリモートコマンド#Rに対する優先受付けを解除することになる。
Subsequently, when a remote command #R by retry appears at i, the processor
尚、図36のタイムチャートは外部のプロセッサモジュールからのリモートコマンドと内部のプロセッサエレメントのアクセスコマンドの競合を例にとっているが、内部のプロセッサエレメント同士のアクセスコマンドの競合についても同様な処理により、後続したアクセスコマンドは1回リトライとなるが、2回目については優先的に受け入れられ、スヌープバス22上におけるキャッシュコヒーレントのためのアクセス競合を適切に調整することができる。
The time chart of FIG. 36 shows an example of the conflict between the remote command from the external processor module and the access command of the internal processor element. The access command is retried once, but the second is preferentially accepted, and the access contention for cache coherency on the snoop
5.コピーバックの書込所有権
図37は、プロセッサモジュール10−1のキャッシュユニットのいずれかで保有している最新データを、最新データのリプレースが発生した際に分散型の主記憶としてのローカルストレージ28にコピーバックするための書込所有権の移動に関する制御手順の説明図である。
5. Copyback Write Ownership FIG. 37 shows
いまプロセッサモジュール10−1において、分散型主記憶としてのローカルストレージ28のデーダか最新データでなく、スヌープバス22でメモリ管理ユニット26に接続された4つのキャッシュユニットの内のキャッシュユニット18−1,18−4に存在していたとする。更に同じ最新データを共有しているキャッシュユニット18−1,18−4の内、キャッシュユニット18−1が、最新データをローカルストレージ28にコピーバックする書込所有権を保有していたとする。
Now, in the processor module 10-1, not the data of the
この時のキャッシュ状態は、最新データ及び書込所有権を保有したキャッシュユニット18−1がシェアードダーティ状態EX&Dで表わされ、最新データを保有するが書込所有権はもたないキャッシュユニット18−4がシェアードモディファイ状態SH&Mで現わされる。更にメモリ管理ユニット26にあっては、ローカルストレージ28の対象データがダーティ状態Dにあることを表わしている。ここでローカルストレージ28へのコピーバックのための書込所有権を保有しているキャッシュユニット18−1をオーナーという。
The cache state at this time is represented by the shared dirty state EX & D in which the cache unit 18-1 having the latest data and the write ownership has the latest data but has no write ownership. 4 appears in the shared modify state SH & M. Further, the
このような図37のプロセッサモジュール10−1におけるキャッシュ状態で、オーナーとして書込所有権を保有しているキャッシュユニット18−1の最新データがプロセッサの動作によりデータ破棄等でリプレースされたとする。このリプレースに伴い、スヌープバス22にはリプレースコマンドP−RPが発生する。また書込所有権を保有していたキャッシュユニット18−1は無効状態INVに遷移する。
In the cache state in the processor module 10-1 of FIG. 37, it is assumed that the latest data of the cache unit 18-1 having the write ownership as the owner is replaced by data discard or the like by the operation of the processor. Along with this replacement, a replace command P-RP is generated on the snoop
一方、最新データを保有しているが書込所有権を保有していないキャッシュユニット18−4は、スヌープバス22に表われたリプレースコマンドP−RPに基づき、書込所有権の委譲を受けてオーナーとなり、シェアードダーティ状態EX&Dに遷移する。このため、メモリユニット18−1で最新データのリプレースが行われても、書込所有権は別のキャッシュユニット18−4に移り、最新データのローカルストレージ28に対するコピーバックはこの時点では行われない。
On the other hand, the cache unit 18-4 that holds the latest data but does not have the write ownership receives the transfer of the write ownership based on the replace command P-RP shown in the snoop
書込所有権が移った後にキャッシュユニット18−4で同様なプロセッサ動作によるリプレースが起きると、この場合には他のメモリユニットに書込所有権を移すことができないことから、ローカルストレージ28に対する最新データのコピーバックが行われる。 If the replacement by the same processor operation occurs in the cache unit 18-4 after the write ownership is transferred, the write ownership cannot be transferred to another memory unit in this case. Data is copied back.
またキャッシュユニット18−1からキャッシュユニット18−4に書込所有権を委譲した際に、メモリ管理ユニット26にあっては、書込所有権の委譲の対象となったデータについてダーティ状態Dを保有しているが、書込所有権がキャッシュユニット18−1,18−4間で行われても、このダーティ状態はそのまま維持する。
Further, when the write ownership is transferred from the cache unit 18-1 to the cache unit 18-4, the
メモリ管理ユニット26のダーティ状態は、最新データをもつキャッシュラインが別のプロセッサモジュールに移って初めて移動することになる。またローカルストレージ28に対する最新データのコピーバックが行われると、ダーティ状態Dはクリーン状態Cに遷移する。
The dirty state of the
図37は、4つのキャッシュユニット18−1〜18−4の内の2つにローカルストレージ28の最新データが保有されている場合を例にとっているが、3つまたは4つのキャッシュユニットに最新データが保有されている場合には、書込所有権を委譲するキャッシュユニットが複数となるため、この場合には例えば図38に示す予め定めた順番に従った書込所有権の委譲が行われる。
FIG. 37 shows an example in which the latest data of the
図38は、キャッシュユニット18−1〜18−4の識別番号を#0〜#3として表わし、書込所有権を保有してリプレースしたキャッシュユニットをインデックスとして残りの3つのキャッシュユニットに対する書込所有権を移す順番を示している。 FIG. 38 shows the identification numbers of the cache units 18-1 to 18-4 as # 0 to # 3, and the write ownership to the remaining three cache units is indexed with the cache unit replaced with the write ownership. It shows the order in which rights are transferred.
例えばキャッシュユニット#0が書込所有権を有し、他のキャッシュユニット#1〜#3の3つが最新データを保有していた場合には、キャッシュユニット#0のリプレースが起きると書込所有権を移す優先度は#1,#2,#3の順番に優先度が決まっている。このため、最も優先度の高いキャッシュユニット#1に書込所有権を委譲する。そして次はキャッシュユニット#2、そして最後はキャッシュユニット#3となる。勿論、書込所有権を移すキャッシュユニットの順番は図38のユニット識別番号以外にも適宜に定めることができる。
For example, if
6.システム共通バス
(1)バス構成
図39は、図3の本発明によるキャッシュコヒーレンス装置を基幹としたサブシステムの構成図である。図39において、サブシステム500−1は基本システム501として例えば5つのプロセッサモジュール10−1〜10−5を、第2共有バスとしてのシステムバス12により接続している。システムバス12にはバス調停を行うバスアービタ502が設けられる。
6). System Common Bus (1) Bus Configuration FIG. 39 is a block diagram of a subsystem based on the cache coherence device according to the present invention of FIG. In FIG. 39, the subsystem 500-1 connects, for example, five processor modules 10-1 to 10-5 as a basic system 501 by a
このような基本システム501に対し、例えばプロセッサモジュール510−1〜510−3の3台をバスアービタ503を備えたシステムバス12−10に接続した拡張システム506を接続している。基本システム501に対し拡張システム506は、同じ構成のバスアービタ及びプロセッサモジュールを使用している。更に基本システム501のシステムバス12に対しては、異種バス拡張ユニット540を介して異種システム505を接続している。異種システム505はシステムバス542により適宜の処理ユニット544−1〜544−3を接続している。異種サブシステム505は、本発明によるキャッシュコヒーレンス装置を実現する基本システム501,拡張システム506とは全く異なったシステムであり、例えば外部記憶装置に対するI/Oシステムを構成している。
For example, an expansion system 506 in which three processor modules 510-1 to 510-3 are connected to a system bus 12-10 having a
このようなサブシステム500−1に対しては、同じ構成をもつ別のサブシステム500−2を拡張することができる。サブシステム500−1は、サブシステム間接続ユニット512により拡張したサブシステム500−2と接続することができる。サブシステム500−2側もサブシステム500−1側と同様、サブシステム間接続ユニットを介して自己のシステムバスと接続している。
For such a subsystem 500-1, another subsystem 500-2 having the same configuration can be expanded. The subsystem 500-1 can be connected to the subsystem 500-2 expanded by the
ここで基本ユニット501のシステムバス12に対しては、最大で例えば16台のモジュールもしくはユニットを接続することができる。この実施形態では、システムバスに5台のプロセッサモジュール10−1〜10−5、サブシステム間接続ユニット512、異種バス拡張ユニット540及びバスアービタ502の8台を接続している。
Here, for example, up to 16 modules or units can be connected to the
システムバス12に接続可能なモジュールもしくはユニットに対しては、ユニットID#0〜#15が割り当てられる。例えばプロセッサモジュール10−1〜10−5にはユニットID(UID)#0〜#4が割り当てられ、サブシステム間接続ユニット512にはユニットID#6が割り当てられ、異種バス拡張ユニット510にはユニットID#8が割り当てられ、更にバスアービタ502にはユニットID#16が割り当てられている。
残りのユニットIDは空きとなっている。なおバス拡張ユニット504は単なるシステムバス12間のインタフェースであり、ユニットIDの指定は不要である。
The remaining unit IDs are empty. Note that the
バス拡張ユニット504を介して接続した拡張システム506のシステムバス12−10に接続しているバスアービタ502及びプロセッサモジュール510−1〜510−3についても、システムバス12−10に固有な16個のユニットIDが適宜に割り当てられている。更に異種サブシステム505については、基本システム501や拡張システム506とは全く異なった異種システム固有のユニットID#A,#B,#Cが割り当てられている。
The
図40は、図39の基本システム501に設けているシステムバス12の信号線の構成である。図4040において、プロセッサモジュール12−1〜12−5とバスアービタ502の間は、基本的にはバスデータ線507とタグ制御線509で構成される。
FIG. 40 shows a configuration of signal lines of the
バスデータ線507には共通データバス線514とデータパリティ線516が含まれる。共通データバス線514は例えば128回線で構成され、1バイトを8ビットとすると16バイトのビットデータを並列転送することができる。データパリティ線516は16回線であり、1バイトのデータパリティを転送する。 The bus data line 507 includes a common data bus line 514 and a data parity line 516. The common data bus line 514 is composed of, for example, 128 lines, and if 1 byte is 8 bits, 16 bytes of bit data can be transferred in parallel. The data parity line 516 is 16 lines and transfers 1-byte data parity.
タグ制御線は、バスリクエスト線520、緊急バスリクエスト線522、バスグラント線524、バスID線526、ユニットID線528、ホルト線530、マスタ権切替線532、インストール線534、ディスコネクト通知線536及びクロック線538で構成される。
The tag control lines are bus request line 520, emergency bus request line 522, bus grant line 524, bus ID line 526,
このような図40のデータバス12の構成を更に詳細に説明すると次のようになる。まず共通データバス線514及びデータパリティ線516は、全てのプロセッサモジュール12−1〜12−5とバスアービタ502に共通に接続され、データ128ビット(16バイト),パリティ16ビット(1バイト)の並列伝送を双方向に行ってデータを授受する。
The configuration of the
共通タグバス線518は4回線で構成され、全てのプロセッサモジュール12−1〜12−5とバスアービタ502に共通接続される。この共通タグバス線518の信号を参照することにより、そのときのバスサイクルの共通データバス線514上のデータの種類を知ることができる。共通タグバス線518で示される共通データバス線128上のデータの種類は図41のようになる。
The common tag bus line 518 is composed of four lines and is commonly connected to all the processor modules 12-1 to 12-5 and the
図41において、タグバスコード(TBコード)は、3ビットのコードにより共通データバス線514の各バスクロックサイクルにおける動作を指定している。この共通タグバス線518の信号状態は、プロセッサモジュール12−1〜12−5における送信元となるバスマスタ及び宛先となるバススレーブ、更にバスアービタ502によって参照され、後の説明で明らかにするバスクラント(使用許可)の切替え、バスサイクルの切替え、及びデータ受信の制御を行う。
In FIG. 41, a tag bus code (TB code) designates an operation in each bus clock cycle of the common data bus line 514 by a 3-bit code. The signal state of the common tag bus line 518 is referred to by the bus master serving as the transmission source and the bus slave serving as the destination in the processor modules 12-1 to 12-5, and further by the
図41のタグバスコード0番は、コマンド終結とバス使用権の継続を意味する。タグバスコード1番はコマンド終結とバス使用権の開放を意味する。タグバスコード2番はコマンドの継続を意味する。タグバスコード3番はリトライ(無効化)とバス使用権の開放を意味する。タグバスコード4番はシングルワードコマンドとバス使用権の継続を意味する。タグバスコード5番はシングルワードコマンドとバス使用権の開放を意味する。タグバスコード6番はマルチワードコマンドの開始、必要ならばバス使用権の継続を意味する。タグバスコード7番はアイドルサイクルを意味する。 The tag bus code No. 0 in FIG. 41 means the end of the command and the continuation of the bus use right. The tag bus code No. 1 means the end of the command and the release of the right to use the bus. Tag bus code No. 2 means continuation of the command. The tag bus code No. 3 means retry (invalidation) and release of the bus use right. Tag bus code No. 4 means a single word command and continuation of the right to use the bus. The tag bus code No. 5 means a single word command and release of the bus use right. The tag bus code No. 6 means the start of a multiword command and, if necessary, the continuation of bus usage rights. The tag bus code No. 7 means an idle cycle.
ここでシングルワードコマンドとは、1バスクロックサイクルでパケット転送を終了するコマンドである。これに対しマルチワードコマンドとは、複数のバスクロックサイクルでのパケット転送を必要とするコマンドである。またバス使用権の開放とは、これを示すタグバスコードのバスサイクルでバス使用権を放棄し、他のバス使用要求者にバスを開放することを示す。 Here, the single word command is a command for ending packet transfer in one bus clock cycle. On the other hand, a multiword command is a command that requires packet transfer in a plurality of bus clock cycles. The release of the bus use right means that the bus use right is abandoned in the bus cycle of the tag bus code indicating this, and the bus is released to other bus use requesters.
またバス使用権の継続とは、タグバスコードが示すバスサイクルの次のサイクルも継続してバスを使用することを示す。更にリトライとは、タグバスコードが示すバスサイクル(バスコマンド)を強制終了してリトライすることを示す。このときバススレーブは、リトライ指示されたバスコマンドを破棄する。またリトライを実行するか否かはシステムのインプリメントに依存している。更にまたアイドルサイクルとは、如何なるユニットもバスを使用していないときの状態を示す。このときバススレーブ側は、アイドルサイクルとなるバスサイクルは無視することになる。 The continuation of the bus use right indicates that the bus is continuously used in the next cycle of the bus cycle indicated by the tag bus code. Further, the retry indicates that the bus cycle (bus command) indicated by the tag bus code is forcibly terminated to retry. At this time, the bus slave discards the bus command instructed to retry. Whether or not to execute a retry depends on the implementation of the system. Furthermore, the idle cycle indicates a state when no unit is using the bus. At this time, the bus slave side ignores the bus cycle which is an idle cycle.
次に図40のバスリクエスト線520と緊急バスリクエスト線522を説明する。バスリクエスト線520及び緊急バスリクエスト線522はそれぞれ15の信号線で構成され、プロセッサモジュール12−1〜12−5とバスアービタ502との間で1対1に接続され、プロセッサモジュール12−1〜12−5側からバスアービタ502に対しバス転送要求を行う。
Next, the bus request line 520 and the emergency bus request line 522 in FIG. 40 will be described. The bus request line 520 and the emergency bus request line 522 are each composed of 15 signal lines, and are connected one-to-one between the processor modules 12-1 to 12-5 and the
通常の転送要求については、バスリクエスト線520のみによる転送要求が行われる。これに対し異常検出等の緊急時にあっては、バスリクエスト線520と緊急バスリクエスト線522の両方を使用した転送要求が行われる。 For a normal transfer request, a transfer request is made only by the bus request line 520. In contrast, in an emergency such as abnormality detection, a transfer request using both the bus request line 520 and the emergency bus request line 522 is made.
図42は、バスリクエスト線520と緊急バスリクエスト線522の組合せによるバスアービタ502に対する要求事項を示す。まずバスリクエストBRQと緊急バスリクエストBREが共にLレベルの場合には、ユニットID#Nのスロットのユニットが非動作状態にあることを示す。
FIG. 42 shows requirements for the
次の緊急バスリクエストBREのみがHレベルとなった場合はバス要求なしであり、現在バスリクエストを行っていないユニットが緊急バスリクエストのみをアサートした場合である。 When only the next emergency bus request BRE becomes H level, there is no bus request, and the unit not currently making a bus request asserts only the emergency bus request.
3番目のバスリクエストBRQのみがHレベルとなるのは通常のバス要求であり、緊急バスリクエスト以外の通常のバス要求である。4番目のバスリクエストBRQ及び緊急バスリクエストBREの両方がHレベルとなるのは緊急バス要求であり、バススレーブがエラーを検出したときに、エラーリプライのためのバス獲得のためにこの要求を行う。 It is a normal bus request that only the third bus request BRQ becomes H level, and a normal bus request other than the emergency bus request. It is an emergency bus request that both the fourth bus request BRQ and the emergency bus request BRE become H level, and when a bus slave detects an error, this request is made to acquire a bus for error reply. .
再び図40を参照するに、次のバスグラント線524はバスアービタ502と各プロセッサモジュール12−1〜12−5との間で1対1に接続され、バスアービタ502がバスグラント線524の信号をHレベルとすることで、バスの使用許可を与えたことを示す。
Referring to FIG. 40 again, the next bus grant line 524 is connected one-to-one between the
バスID線526は、プロセッサモジュール12−1〜12−5及びバスアービタ502が接続されているシステムバス12の番号を設定している。同じシステムバスに接続されているユニットは全て同じ値が設定される。図39のシステム構成にあっては、基本システム501のシステムバス102にバスID#1が設定される。これに対し、バス拡張ユニット504を介して接続した拡張システム506のシステムバス12−10にはバスID#2が設定される。
The bus ID line 526 sets the number of the
次に図40のユニットID線528を説明する。ユニットID線528は、バスアービタ502及びプロセッサモジュール12−1〜12−5のバス上での識別番号を設定する。図39にあっては、プロセッサモジュール10−1〜10−5にユニットID#1〜#5を設定し、バスアービタ502にユニットID#16を設定している。
Next, the
このため、バスID線526とユニットID線528によるバスIDとユニットIDの組合せでシステム全体におけるプロセッサモジュール12−1〜12−5及びバスアービタ502の番号が一意に決まる。
For this reason, the numbers of the processor modules 12-1 to 12-5 and the
次に図40のホルト線530とマスタ権切替線532を説明する。ホルト線530はバスアービタ502からプロセッサモジュール12−1〜12−5を含む全ユニットに例えば9通りに接続され、ホルト線530をHレベルとすることでバスアービタ502が自分自身の故障を検出して停止状態にあることを示す。
Next, the halt line 530 and the master right switching line 532 in FIG. 40 will be described. The halt line 530 is connected from the
マスタ権切替線532はバスアービタ5−2からプロセッサモジュール12−1〜12−5を含む全ユニットに共通に接続され、ホルト線530と共にバスの調停処理に使用される。このホルト線530とマスタ権切替線532の信号の組合せによるバス調停処理は、図43のようになる。 The master right switching line 532 is commonly connected to all units including the processor modules 12-1 to 12-5 from the bus arbiter 5-2, and is used together with the halt line 530 for bus arbitration processing. The bus arbitration processing by the combination of the signals of the halt line 530 and the master right switching line 532 is as shown in FIG.
図43において、まずホルトHLTがHレベルでマスタ権切替MFC(MasterForce Change) がLレベルの状態は、バスアービタ502の非実装を意味する。次のホルトHLT及びマスタ権切替MFCの両方がHレベルの場合には、バスアービタ502のホルト即ちバスアービタ502の自己診断等でエラーとなり、バスアービタ502が停止状態にあることを通知する。
In FIG. 43, when the halt HLT is at the H level and the master right switching MFC (MasterForce Change) is at the L level, the
3番目のホルトHLT及びマスタ権切替MFCが共にLレベルの場合はバスグラントGBRの通常切替であり、バスアービタ502がバス要求を保持しているときにバスサイクルの終了を検出した場合のバスグラントGBRを切り替えるタイミングを意味する。最後のホルトHLTがLレベルでバス権切替MFCがHレベルの状態はバスグラントGBRの強制切替えであり、バスアービタ502がバス要求を保持しており、且つそのバスが未使用の場合のバスグラント切替タイミングを与える。
When both the third halt HLT and the master right switching MFC are at the L level, the bus grant GBR is normally switched. When the
再び図40を参照するに、インストール線534はプロセッサモジュール12−1〜12−5を含む各ユニットとバスアービタ502の間で1対1に接続され、Lレベルにセットすることでバスアービタ502に対しユニットが実装されていることを通知する。
Referring again to FIG. 40, the installation line 534 is connected one-to-one between each unit including the processor modules 12-1 to 12-5 and the
ディスコネクト通知線536は、プロセッサモジュール12−1〜12−5を含む各ユニットとバスアービタ502との間で1他1に接続される。ディスコネクト通知線536をLレベルにすることで、バスアービタ502に対しユニットがシステムバス12から切り離された状態にあることを通知する。
The disconnect notification line 536 is connected to the other one between each unit including the processor modules 12-1 to 12-5 and the
(2)バスアビトレーション動作
次に図40のバスデータ線507とタグ制御線509で構成されるシステムバス12のバスアビトレーション動作を説明する。本発明のシステムバスのバスアビトレーション動作としては、ファーストモードとセーフティモードの2つのモードがある。また優先バスアビトレーションとしてバススレーブが優先バスアビトレーションを要求する場合と、バスアービタが優先バスアビトレーションを要求する場合とに分けられる。
(2) Bus Arbitration Operation Next, the bus arbitration operation of the
図44は、ファーストモードによるアビトレーションのタイムチャートであり、横軸のバスクロックサイクルT1,T2,T3,・・・に対し縦軸方向にバスアービタ502の内部動作とシステムバス12上のインタフェース信号に分けて示している。バスアービタ502の内部動作としては、バスリクエストのホールド動作である。システムバス12上のインタフェース信号としては、バスリクエスト、バスグラント、タグバス及びデータバスを示している。
FIG. 44 is a time chart of the arbitration in the first mode. The internal operation of the
まずサイクルT1で、ユニットID#0,#1からaに示すように、バスリクエスト信号の1サイクルのアサートが行われたとする。このときデータバスはアイドル状態にあることから、バスアービタ502は全てのバス要求元からのバスリクエストの立上がりを監視している。
First, in cycle T1, it is assumed that one cycle of bus request signal is asserted as indicated by
aのようにユニットID#0,#1の2つのバスリクエスト信号がアサートされると、次のサイクルT2でbに示すように全てのリクエスト要求をホールドする。ここで複数のバスリクエストがあった場合には、ユニットIDの番号の若い方が優先順位が高いものとする。
When two bus request signals of
このためバスアービタ502は、アイドル状態からの優先順位の高いユニットID#0に対するバスグラント信号を、cに示すように、マスタ権切替信号と共にアサートする。続いてバスアービタ502は、次のサイクルT3で、バスの使用権を許可したユニットID#0のバスリクエストのホールド要求を破棄すると同時に、他のホールド要求があればバスグラント信号を切り替える。
For this reason, the
このときユニットID#1のホールド要求があることから、バスリクエスト信号をユニットID#1に切り替える。このようにバスアービタ502からのバスグラント信号及びマスタ権切替信号により許可を受けたバスマスタとしてのユニットID#0は、次のサイクルT3からデータ転送を開始する。このサイクルT3からはタグバス信号が図41に示したタグバスコード010,100または110(CC,SC&C,MC&S)のいずれかを示す。この場合には、複数のバスクロックサイクルでデータを送ることから、タグバスコードは110(MC&S)のマルチワードコマンドの開始となる。
At this time, since there is a hold request for
このようなサイクルT3からのデータ転送中にバスシーケンスが、例えばサイクルT5に示すようにタグバスによって終了ENDを示すと、dのように、このときのバスグラント信号に従ってバスマスタがユニットID#1に切り替わり、次のサイクルT6から、バスマスタとなったユニットID#1からのデータ転送を開始する。ここでデータ転送終了を示すタグバスのタグバスコードは、図41の001,011,101(CE&E,リトライ,SC&E)のいずれかとなる。
During the data transfer from cycle T3, if the bus sequence indicates end END by the tag bus as shown in cycle T5, for example, as shown in d, the bus master is switched to
一方、バスアービタ502はサイクルT2で一旦保持したユニットID#1からのバスリクエストの処理中に、例えばサイクルT3,T4のように他のユニットID#0,#2からのバスリクエストの立上がりを検出すると、それぞれのバスリクエストを別途記憶する。そしてサイクルT5のように、ホールド要求がないときのタグバスによる終了通知のタイミングで、eのように、ユニットID#0,#2の新たなバスリクエストをホールドする。
On the other hand, when the
更にサイクルT4のユニットID#0からの2回目のバスリクエストはシングルコマンドであり、このためサイクルT8でユニットID#1のデータ転送が終了すると、次のサイクルT9で、サイクルT3で出された下位のユニットID#2のバスリクエストに先行してユニットID#0のシングルコマンドのデータ転送を行う。このシングルコマンドのデータ転送は同時に転送終了を意味することから、ユニットID#1がサイクルT6で行ったバスリクエストのホールドをサイクルT10のfのように行う。
Further, the second bus request from the
図44のファーストモードのバスアビトレーションにあっては、バスアービタ502にバスリクエストがホールドされている限り、データバスに空きサイクルを生ずることなく連続的にバス転送が行われ、空きサイクルを発生しないことでバス転送速度を高めることができる。
In the fast mode bus arbitration shown in FIG. 44, as long as a bus request is held in the
図45は本発明のバスアビトレーションにおけるセーフティモードのタイムチャートである。このセーフティモードのタイムチャートにあっても、図44のファーストモードと同様なユニットID#0〜#2によるバスリクエストが行われた場合を例にとっている。
FIG. 45 is a time chart of the safety mode in the bus arbitration of the present invention. Even in the time chart of this safety mode, the case where a bus request by
セーフティモードにあっては、バスアービタ502からのバスグラント信号とマスタ権切替信号のアサートによりバスマスタとしてのユニットIDが許可を受けた後に、1サイクルのアイドルサイクルを置いてデータ転送を開始するようにしている。
In the safety mode, after the unit ID as the bus master is permitted by asserting the bus grant signal and the master right switching signal from the
即ち、サイクルT1におけるaのバスリクエストに対し、サイクルT2でbのようにバスアービタ502のバスリクエストのホールドが行われ、優先順位の高いユニットID#0に対するバスグラント信号と更にマスタ切替信号をcのようにアサートすると、次のサイクルT3をアイドルサイクルとした後、サイクルT4よりデータ転送を開始する。
That is, the bus request of the
このサイクルT3のアイドルサイクルはタグバスの過渡状態を安定化させるための期間であり、このアイドルサイクルにおいて全てのユニットはタグバスの値を無視する。サイクルT6でユニットID#0のバスマスタによるデータ転送が終了して、そのときのユニットID#1のバスグラント信号によるデータ転送についても、サイクルT7の1サイクルのアイドル期間を設けた後に、fのようにデータ転送を開始している。
The idle cycle of the cycle T3 is a period for stabilizing the transient state of the tag bus. In this idle cycle, all units ignore the value of the tag bus. In the cycle T6, the data transfer by the bus master of the
このようにバスアービタ502からデータ転送の許可を受けてデータ転送開始までの間に1サイクルのアイドル期間を置く以外の動作は、図44のファーストモードと同じである。
The operations other than the one-cycle idle period between the time when data transfer permission is received from the
図46は、バススレーブがデータ転送中にエラーを検出した場合のエラーリプライ動作のための優先バスアビトレーションのタイムチャートである。いまサイクルT1に示すように、ユニットID#0〜#2の3つのユニットからのバスリクエストがアイドル状態で同時に行われ、次のサイクルT2でバスアービタ502に全てのバスリクエストがホールドされると、優先順位の最も高いユニットID#0に対しバスアービタ502よりバスグラント信号が出力される。
FIG. 46 is a time chart of priority bus arbitration for error reply operation when the bus slave detects an error during data transfer. As shown in cycle T1, bus requests from three units of
同時にマスタ権切替信号もアサートされることで、サイクルT3よりバスマスタとなったユニットID#0からバススレーブとしての例えばユニットID#3に対しデータ転送が開始される。このデータ転送中のサイクルT4でバススレーブとなるユニットID#3でエラーを検出したとすると、バスアービタ502に対しユニットID#3からバスリクエスト信号及び緊急バスリクエスト信号の両方がaのように出力される。
At the same time, the master right switching signal is also asserted, whereby data transfer is started from
サイクルT6のバスリクエスト信号及び緊急バスリクエスト信号を受けたバスアービタ502は、バスリクエストを最優先でホールドすると同時に、bのように、バスを早期に切り替えるためにバスグラントを、エラー検出を行ったユニットID#3に切り替える。このためサイクルT8でデータ転送が終了すると、このときバスグラント信号が有効となっているエラー検出を行ったバススレーブとしてのユニットID#3をバスマスタに切り替え、サイクルT9で、cのように、エラーを検出したバスマスタのユニットID#3からエラーリプライを行わせる。
The
このときバスアービタ502内の最優先のホールド要求は破棄され、次のサイクルT10からは通常のアビトレーションを続行する。ここで、バススレーブ側で検出するエラーには物理バッファフル等のブロック検出も含まれている。このようにバス転送中にバススレーブ側でエラー検出が行われると、次のバス転送に切り替える前に強制的にエラー検出を行ったバススレーブがバスマスタに切り替わってエラーリプライを行うことができ、バス転送中のエラーを迅速に検出してリトライ等の対応処置をとることができる。
At this time, the highest priority hold request in the
図47は、バススレーブ側が確定する前のバス転送中に起きたエラーをバスアービタ502で検出した場合のエラーリプライのための優先バスアビトレーションのタイムチャートである。即ち本発明のバス転送にあっては、スプリット型のパケット転送を採用しており、パケットの第1ワードとしてコマンドワードを転送するため、コマンドワードの宛先フィールドの解読が終了しないとバススレーブが確定しない。
FIG. 47 is a time chart of priority bus arbitration for error reply when the
このバススレーブが確定するまではバスアービタ502でバス転送のエラーを監視し、エラーを検出するとスレーブの代わりにバスアービタ502がエラーリプライを行うようになる。
Until the bus slave is determined, the
図47にあっては、サイクルT1のユニットT1のユニットID#0〜#2からのバスリクエストがあると、サイクルT2で全てバスアービタ502がホールドする。そして優先順位の最も高いユニットID#0について、バスグラント信号を有効とすると共にマスタ権切替信号をアサートし、次のサイクルT3からデータ転送を開始する。
In FIG. 47, when there is a bus request from the
このサイクルT2において、バスアービタ502はaのように、バス使用許可を与えたバスマスタを示すユニットID#0のバスマスタフラグをもっており、このバスマスタフラグをユニットID#0のサイクルT3〜T8に亘るバスサイクル期間中ホールドしておく。
In this cycle T2, the
バスマスタであるユニットID#0からのデータ転送中のサイクルT5で、bのようにアービタ502がエラーを検出した場合、例えばパケットヘッダのパリティエラーを検出した場合、そのエラー内容を保持すると同時にバスアービタ502の内部に自分自身の緊急バス要求フラグをcのようにセットする。尚、エラー検出が行われたサイクルT5は、バスマスタとしてのユニットID#01が、連続した複数のバスコマンドを転送中にエラーを検出した例である。
When the
続いてバスアービタ502は、自分自身のセットした緊急要求バスフラグcにより、現在ホールドしている他のバスリクエストをマスクし、ホールド中のバスリクエストについてバスグラントをアサートしないようにする。そしてサイクルT8でバスマスタをユニットID#0としたデータ転送を検出すると、このバスマスタ切替タイミングでバスアービタ502自身がバスマスタとなって、dのようにサイクルT9でエラーリプライを転送する。
Subsequently, the
即ち、バス上には現われないバスアービタ502の内部でのアビトレーションにより、バスアービタ502自身がバスマスタとなってエラーリプライを行うことになる。このようなバスアービタ502のエラーリプライが済むと、同時にバスアービタ502内でセットした緊急バス要求フラグ及びバスマスタフラグが破棄され、次のバスマスタとしてのユニットID#1への切替えがバスグラントにより行われ、次のサイクルT10から通常のアビトレーションを実行する。
That is, due to the arbitration within the
(3)バス転送シーケンス
次に図40のシステムバス12上におけるバスコマンド及びデータの転送シーケンスを説明する。図48はユニット#1からユニット#2にメモリの読出要求を行うときの転送シーケンスである。ここで読出要求元のユニット#1をソースユニットとし、読出要求先のユニット#2を宛先ユニット(ディストネーションユニット)とする。
(3) Bus Transfer Sequence Next, a bus command and data transfer sequence on the
まず要求元のユニット#1は、コマンド内容、要求元、要求先、転送バイト数及びアクセスアドレスを指定したパケットヘッダを、バスコマンドとして送信する。このパケットヘッダはバスコマンドの第1ワードを構成する。具体的には、ユニット#1はパケットヘッダのコマンドフィールドにメモリリードを指定し、ソースフィールドに要求元となる自分自身のユニットID#1を指定し、宛先フィールドに要求先のユニットID#2を指定する。
First, the request
更に転送バイト数を示すサイドのフィールドに16バイトを指定し、更にアドレスフィールドにアクセスアドレスを指定したパケットヘッダを作成して送信する。本発明のバス転送にあっては、パケットヘッダとして送信されるバスコマンドの第1ワードには、要求元を示すソースフィールド、要求先を示す宛先フィールドに加え、第2の要求先を示す第2宛先フィールドが設けられている。 Further, 16 bytes are designated in the side field indicating the number of transfer bytes, and a packet header in which the access address is designated in the address field is generated and transmitted. In the bus transfer according to the present invention, the first word of the bus command transmitted as the packet header includes the second field indicating the second request destination in addition to the source field indicating the request source and the destination field indicating the request destination. A destination field is provided.
ここで、通常使用される宛先フィールドは、以下、第1宛先フィールドという。尚、第1宛先フィールドは、第2宛先フィールドの指定がない場合には単に宛先フィールドという場合もある。このパケットヘッダとして送出されるバスコマンドの第1ワードのソースフィールド、第1宛先フィールド及び第2宛先フィールドをもつバスコマンドの詳細は、後の説明で明らかにされる。 Here, the normally used destination field is hereinafter referred to as a first destination field. Note that the first destination field may be simply referred to as a destination field when the second destination field is not designated. Details of the bus command having the source field, the first destination field, and the second destination field of the first word of the bus command transmitted as the packet header will be made clear in the following description.
図48のメモリリードの転送シーケンスにあっては、宛先は1つであることから、ユニット#1から送出されるパケットヘッダは第1宛先フィールドに読出要求先ユニットID#2を指定しているだけである。システムバスはユニット#1からのパケットヘッダの送信が終了すると開放され、次に割り当てられたユニットにバス使用権が移る。
In the memory read transfer sequence of FIG. 48, since there is only one destination, the packet header transmitted from
読出要求先となるユニット#2にあっては、システムバス上の転送パケットを受信してその宛先フィールドのIDを識別しており、自分自身が指定されたパケットであればそれを受信し、受信パケットで指定された処理即ちユニット#1からのパケットヘッダで指定されたメモリのリード処理を開始する。ユニット#2において、要求されたリードデータが準備できたならば、bに示すリプライバスコマンドとデータを作成して返送する。
In
このリプライバスコマンドの第1ワードは、ソースフィールドに自分自身のユニットID#2を指定し、宛先フィールドに要求元のユニットID#1を指定し、コマンドフィールドはリプライコマンドであることを指定し、更に必要に応じたステータス情報を付加して送出する。リプライバスコマンドのパケットヘッダである第1ワードの送出が済むと、続けて指定バイト数16バイト分のデータを返送する。この実施例において、データバス幅は16バイトであることから、2ワードのリプライバスコマンドは2バスサイクルで転送を終了する。
The first word of this reply bus command specifies its own
図49は、本発明のシステムバスにおけるメモリライトの転送シーケンスである。まず書込要求元のユニット#1は、書込要求先となるユニット#2に対しバスコマンドの第1ワードとなるパケットヘッダを作成して転送し、パケットヘッダに続いて例えば32バイトデータを書き込む場合には、16バイト単位に分けて2ワードのデータパケットを転送する。
FIG. 49 shows a memory write transfer sequence in the system bus of the present invention. First, the write request
第1ワード目のパケットヘッダには、ソースフィールドを自分自身のユニットID#1とし、宛先フィールドを書込相手先のユニットID#2とし、コマンドフィールドにメモリライトを指定し、更にアドレスフィールドに32バイトアドレスを指定して、バスに送出する。
In the packet header of the first word, the source field is the
書込要求先のユニット#2にあっては、宛先フィールドで自分自身のユニットID#2を指定したパケットであればそのパケットを受信し、コマンドフィールドで指定された書込処理を開始する。書込処理が終了すると、bのように、書込要求元のユニット#1に対するリプライバスコマンドを作成して処理のステータスを返送する。
In the write request
即ち、リプライバスコマンドはソースフィールドを自分自身のユニットID#2、宛先フィールドを書込要求元のユニットID#1、コマンドフィールドをリプライとし、更にステータスフィールドに例えば書込正常を示すステータスをセットして返送するようになる。
That is, in the reply bus command, the source field is its own
図50は、システムバスに接続している複数のユニットを同時に指定してデータを転送するブロードキャストの転送シーケンスである。この例では、ユニット#1がキャッシュコヒーレントのためのキャッシュインバリデートのバスコマンドを、ユニット#2,#3,#4にブロードキャストコマンドとして転送した場合である。
FIG. 50 shows a broadcast transfer sequence in which a plurality of units connected to the system bus are simultaneously specified to transfer data. In this example,
まずキャッシュインバリデートの要求元のユニット#1は、ブロードキャストバスコマンドのパケットヘッダにつき、ソースフィールドに要求元のユットID#1を指定し、ブロードキャストフィールドに要求先となるユニット#2,#3,#4の3つを指定する。更にコマンドフィールドにキャッシュインバリデートを指定し、更にアクセスアドレスを指定して送出する。
First, the
キャッシュインバリデートの要求先となるユニット#2,#3,#4のそれぞれは、要求元のユニット#1からのブロードキャストバスコマンドを受信し、ブロードキャストフィールドに自己の指定があればそれを受信し、指定されたキャッシュインバリデートの処理を開始する。キャッシュインバリデート処理が完了すると、完了した順番に要求元のユニット#1に対しリプライバスコマンドを送出する。
Each of the
この例では、ユニット#2,#4,#3の順番にキャッシュインバリデート処理を終了してリプライバスコマンドを返送している。例えば最初のユニット#2にあっては、ソースフィールドを自分自身のユニットID#2とし、宛先フィールドを要求元のユニットID#1とし、コマンドフィールドでリプライを指定し、更にステータスフィールドにキャッシュインバリデートの処理結果をセットして返送する。ユニット#4,#3についても同様である。
In this example, the cache invalidation process is completed in the order of
要求元のユニット#1は全ての要求先のユニット#2,#3,#4からのリプライバスコマンドを受領し、そのステータス情報からキャッシュインバリデートの成功を認識すると、次の処理に移行する。図51は、図39において基本システム501のユニットから拡張システム506のユニットとの間でバス転送を行う場合の転送シーケンスである。図51にあっては、基本システムにおけるシステムバス1のユニット#1からバス拡張ユニット504を介して拡張システムのシステムバス#2のユニット#3にリード要求を行った場合の転送シーケンスである。
The request
まずシステムバス#1のユニット#1は、aのように、システムバス#2のユニット#3を要求先とするバスコマンドを作成して送出する。このユニット#1からのバスコマンドは、ソーススフィールドに要求元のシステムバスを示すバスID#1とユニット#1を示すユニットID#1を指定している。また宛先フィールドには相手先のシステムバスを示すバスID#2と相手先のユニットを示すユニットID#3を指定している。
First, the
これ以外の点は、同じシステムバス上のバスコマンドと同様、コマンドフィールドにメモリリードを指定し、更に転送バイト数を指定して送信する。バス拡張ユニット504は、ユニット#1からのバスコマンドを受信し、このバスコマンドの宛先フィールドのバスID#2が、自分自身が接続拡張しているバスであることを認識すると、そのバスコマンドを受理し、システムバス#2に対し同じバスコマンドをbのように発行する。
Except for this point, memory read is designated in the command field, and the number of transfer bytes is designated and transmitted in the same manner as a bus command on the same system bus. When the
システムバス#2のユニット#3にあっては、宛先フィールドのユニットIDが自己のユニットID#3であることを認識すると、そのバスコマンドを受信してリード処理を行い、リードデータが準備できたならば、cのように、コマンドを第1ワード、データを第2ワードとするリプライバスコマンドを送信する。
When
このリプライバスコマンドについても、ソースフィールドにシステムバスのID#2と自分自身のユニットID#3を指定し、宛先フィールドについては別のシステムバスのバスID#1とユニットID#1を指定し、更にコマンドフィールドにリプライを指定し、更にリード結果のステータスを付けて送信する。リプライバスコマンドの1ワード目の送信が済むと、次の2ワード目の16バイトデータのパケットを送信する。
Also for this reply bus command, the system
バス拡張ユニット504はcのリプライコマンドを受信し、その宛先フィールドのバスID#1から自分自身が接続拡張しているシステムバス#1であることを認識すると、同じリプライコマンドをシステムバス#1に転送する。システムバス#1のユニット#1は、このリプライコマンドから自分自身の宛先ユニットID#1を認識するとリプライバスコマンドを受信し、次の2ワード目の16バイトのリードデータを受信して処理を終了する。
When the
図52は、図39におけるサブシステム500−1とサブシステム500−2の間のサブシステム間接続ユニット512を経由したバス転送のシーケンスである。
FIG. 52 is a sequence of bus transfer via the
図52にあっては、サブシステム#1のユニット#1から別のサブシステム#2のユニット#3にリード要求を行った場合である。まず要求元となるサブシステム#1のユニット#1は、aのように、リード要求のためのバスコマンドを送出する。このバスコマンドはパケットヘッダを2つ使用した2ワードのバスコマンドで構成される。
In FIG. 52, a read request is made from
まずバスコマンドの第1ワード目には、拡張サブシステム#2のアクセスを指定するための識別子、即ちサブシステム拡張識別子EXの指定を行う。続いてソースフィールドにサブシステム#1のバスID#1とユニットID#1をセットし、サブシステム#2に対するサブシステム間接続ユニット512のユニットID#6を宛先フィールドで指定する。
First, in the first word of the bus command, an identifier for designating access of the
更にコマンドフィールドにはメモリリードを指定し、アドレスフィールドにはアクセスアドレスを指定し、更に図示しないサイズフィールドに転送バイト数を指定する。次の2ワード目はシステムバス拡張識別子EXの指定で付加された拡張バスコマンドであり、ソースフィールドに要求元のサブシステムID#1、バスID#1及びユニットID#1が指定される。
Further, memory read is designated in the command field, an access address is designated in the address field, and the number of transfer bytes is designated in a size field (not shown). The next second word is an extended bus command added by specifying the system bus extension identifier EX, and the requesting
また宛先フィールドには、要求先のサブシステムID#2、要求先のバスID#2及び要求先のユニットID#3が指定される。この2ワードとなるバスコマンドがシステムバスに送出されると、サブシステム間接続ユニット512において、第1ワード目の宛先フィールドのユニットID#6を認識し、バスコマンドの第1ワード及び第2ワードを受信する。
In the destination field, the requested
そしてサブシステム#2側に設けているサブシステム間接続ユニット513に対し、同じバスコマンドをそのまま転送する。この転送制御はバスコマンドの第2ワード目の各IDにより定まる。サブシステム#1のサブシステム間接続ユニット512からのバスコマンドを受信したサブシステム#2のサブシステム間接続ユニット513は、バスコマンドの第1ワード目のソースフィールドにおけるユニットIDを自分自身のユニットID#7の指定に変更すると共に、宛先フィールドを第2ワードから解読したユニットID#3の指定に変更してシステムバス#2に送出する。バスコマンドの第2ワード目はそのまま送出する。
Then, the same bus command is transferred as it is to the inter-subsystem connection unit 513 provided on the
システムバス#2のユニット#3は、サブシステム間接続ユニット513から送出されたバスコマンドの第1ワード目の受信で宛先フィールドのユニットIDが自分自身のユニットID#3であることを認識すると、このコマンドを受信し、更に第2ワード目も受信する。そして第1ワード目のコマンドフィールドにより指定されたメモリリードを、指定されたアクセスアドレスについて行う。
When
リードデータが準備できると、dに示すようにリプライバスコマンドを送出する。このリプライバスコマンドは、第1ワード目のソースフィールドにサブシステム識別子EXをセットし、更にバスID#2及びユニットID#3をセットし、宛先フィールドはサブシステム間接続ユニット513のユニットID#7を指定する。もちろんコマンドフィールドはリプライを指定し、図示しないステータスもセットする。
When the read data is prepared, a reply bus command is sent as shown in d. In this reply bus command, the subsystem identifier EX is set in the source field of the first word, the
リプライバスコマンドの第2ワード目は、ソースフィールドにサブシステムID#2、システムバスID#2及びユニットID#3を指定し、宛先フィールドについては要求元となるサブシステムID#1、システムバスID#1及びユニットID#1を指定する。そして第3ワード目がリードデータとなる16バイトデータである。
The second word of the reply bus command designates
サブシステム間接続ユニット513は、ユニット#3から送出されたリプライバスコマンドの第1ワード目の宛先フィールドから自己のユニットID#7を認識すると、このバスコマンドを受信し、eのように、サブシステム間インタフェースを介してサブシステム#1のサブシステム間接続ユニット512にリプライバスコマンドの第1ワード、第2ワード、第3ワードを転送する。
When the inter-subsystem connection unit 513 recognizes its
サブシステム#1のサブシステム間接続ユニット512は、リプライバスコマンドの第1ワードのソースフィールドのユニットIDを自分自身のユニットID#6の指定に変更すると共に、宛先フィールドを要求元のユニットID#1に変更してシステムバス#1に送出する。
The
このソースフィールド及び宛先フィールドのユニットIDの変更は、受信したリプライバスコマンドの第2ワード目を参照することで指定変更できる。リプライバスコマンドの第2ワード目は、そのまま送出する。第2ワード目の16バイトデータについても、そのまま転送する。 The unit ID of the source field and the destination field can be changed by referring to the second word of the received reply bus command. The second word of the reply bus command is sent as it is. The 16-byte data of the second word is also transferred as it is.
サブシステム#1のユニット#1は、リプライバスコマンドの第1ワードの宛先フィールドから自己のユニットIDを認識すると、このバスコマンドの受信を開始し、第3ワードまで受信して処理を終了する。
When the
図53は、本発明のシステムバスのバス幅を8バイトバスとした場合の転送シーケンスである。図40のシステムバスにあっては、共通データバス線514を128本とすることで16バイト転送を行っているが、システムによっては半分の8バイトバスを使用する場合もある。このように8バイトシステムバスを使用した場合には、今まで説明した16バイト幅の1クロックサイクルでのバス転送は2バスクロック分の転送を行うことになる。 FIG. 53 shows a transfer sequence when the bus width of the system bus of the present invention is an 8-byte bus. In the system bus of FIG. 40, 16 bytes are transferred by setting 128 common data bus lines 514. However, depending on the system, a half 8-byte bus may be used. When the 8-byte system bus is used in this way, the bus transfer in one clock cycle having a 16-byte width described so far is performed for two bus clocks.
図53は、8バイトバスを使用した場合のユニット#1からユニット#2にリード要求を行った場合の転送シーケンスである。ユニット#1は、16バイトのバスコマンドを8バイト単位の第1ワードと第2ワードに分けてシステムバスに送出する。8バイトバスコマンドの第1ワードには、ソースフィールド、宛先フィールド、コマンドフィールド及びサイドフィールドのそれぞれが設けられている。第2ワード目はアドレスフィールドである。
FIG. 53 shows a transfer sequence when a read request is made from
このような8バイトの2ワードで構成されるバスコマンドがシステムバスに送出されると、要求先のユニット#2はバスコマンドの第1ワード目の宛先ユニットID#2を認識してバスコマンドを受信し、第2ワード目で指定されたアクセスアドレスについてメモリのリード動作を行う。リードデータが準備できると、bのようにリプライバスコマンドを送出する。リプライバスコマンドは、8バイトの第1ワードがパケットヘッダとなり、その後ろに8バイトずつ分けた合計16バイトの2ワードを付加して送出する。
When such a bus command consisting of 2 words of 8 bytes is sent to the system bus, the requested
図54は、図39のサブシステム500−1における基本システム501と異種サブシステム505との間のバス転送シーケンスである。 FIG. 54 shows a bus transfer sequence between the basic system 501 and the heterogeneous subsystem 505 in the subsystem 500-1 of FIG.
図51において、基本システムのシステムバス#1は異種バス拡張ユニット540を介して異種システムバス#2に接続される。異種バス拡張ユニット540には、システムバス#1側のコマンドを異種システムバス#2側のコマンドに変換するコマンド変換機能が設けられている。
In FIG. 51, the
いま、システムバス#1のユニット#1から異種システムバス#2のユニット#Bに対しアクセス要求を行うものとする。ユニット#1はバスコマンドとして2ワードのパケットをパケットヘッダとして送出する。このバスコマンドの第1ワード目にはソースフィールドでバスID#1及びユニットID#1を指定し、また宛先フィールドにバスID#1と異種バス拡張ユニット540のユニットID#8を指定している。
Assume that an access request is made from
更にコマンドフィールドには、異種システムバス#2のコマンド体系に変換するためのエミュレーション識別子EMが指定されている。第2ワード目は異種システムバス#2に適合したバスコマンドであり、ソースフィールドに異種システムバス#2空間における異種バス拡張ユニット540のユニットid#1が指定され、宛先フィールドには異種システムバス#2のユニットIDuid#Bが指定されている。
Further, an emulation identifier EM for conversion to the command system of the heterogeneous
このシステムバス#1のユニット#1から送出された2ワードのバスコマンドは、異種バス拡張ユニット54において、第1ワード目の宛先フィールドから自己のユニットID#8を認識することで受信される。異種バス拡張ユニット540自身が接続拡張している異種システムバス#2に対するエミュレーションコマンドであることを認識すると、コマンド依存フィールドとなる第2ワードのみを異種システムバス#2にbのように送出する。
The 2-word bus command sent from the
異種システムバス#2のユニット#Bは、その宛先フィールドのuid#Bから自己の宛先を認識して受信し、コマンドフィールドで指定された処理を実行し、処理が済むと、cに示すリプライコマンドを送出する。ユニット#Bからのリプライコマンドは第1ワードのソースフィールドにユニットid#Bを指定し、宛先フィールドに異種バス拡張ユニット540のユニットid#1を指定し、更に2ワード目にステータスやその他必要なデータを転送する。
The unit #B of the heterogeneous
異種バス拡張ユニット540は、ユニット#Bからのリプライバスコマンドの第1ワード目から自分自身が接続しているシステムバス#1に対するリプライコマンドであることを認識すると、このリプライコマンドを受理して、dのようにシステムバス#1側に同様なリプライバスコマンドを送出する。
When the heterogeneous
このリプライバスコマンドの第1ワードはソースフィールドによりシステムバスID#1と異種バス拡張ユニット540のユニットID#8を指定し、宛先フィールドに要求元のシステムバスID#1のユニットID#1を指定している。第2ワード目及び第3ワード目は、異種システムバス#2のユニット#Bから送出されたバスコマンドがそのまま付加される。
The first word of this reply bus command specifies the system
このような異種バス拡張ユニット540による簡単なバスコマンドの変換により、異なるバスシステムのユニット間でのデータ転送が可能となる。またエミュレーションバスコマンドで使用するそれぞれのバス上におけるユニットIDは、各々のバス上で一意であればよく、拡張された異種システムバス上のIDも異種バス拡張ユニット540を含めて一意となる。
By such simple bus command conversion by the different
(5)バスコマンド
図55は、本発明のキャッシュコヒーレンス装置のシステムバス12のバス転送に使用するバスコマンドの基本的なコマンドフォーマットである。
(5) Bus Command FIG. 55 shows a basic command format of a bus command used for bus transfer of the
図55において、1バイトを8ビットとすると、基本バスコマンドは16バイト長で構成される。図55にあっては、コマンドフィールドを4バイト(32ビット)幅に分けて示している。 In FIG. 55, if one byte is 8 bits, the basic bus command is composed of 16 bytes. In FIG. 55, the command field is divided into 4 bytes (32 bits).
基本バスコマンドは、先頭の基本バイト部分にソースフィールド552、第1宛先フィールド560及び第2宛先フィールド564を設けている。ソースフィールド552にはアクセス要求元の情報を指定する。第1宛先フィールド560には、ソースフィールドの要求元からアクセス要求を行う相手先の情報が指定される。第2宛先フィールド564には、ソースフィールド552と第1宛先フィールド560以外に、アクセスを行う別の相手先の情報が指定される。
The basic bus command has a
具体的には、例えば図17に示した本発明のキャッシュコヒーレンス装置における読出モード2における処理動作を例にとると、次のようになる。図17は、アクセス要求元であるローカルのプロセッサモジュール10−1からアクセス対象となる主記憶を保持しているホームとなるプロセッサモジュール10−2に対しリード要求を行ったが、主記憶28に最新のデータが存在しておらず、リモートとなるプロセッサモジュール10−3のキャッシュユニットに最新データが存在している場合の処理である。
Specifically, for example, the processing operation in the
このようなリード処理にあって、まずローカルのプロセッサモジュール10−1からホームのプロセッサモジュール10−2にリード要求を行う場合には、図55のソースフィールド552にローカルのユニットIDを指定し、第1宛先フィールド560はホームのユニットIDを指定する。このとき第2宛先フィールド564は使用しない。
In such a read process, when a read request is first made from the local processor module 10-1 to the home processor module 10-2, a local unit ID is designated in the
次にホームのプロセッサモジュール10−2からリモートのプロセッサモジュール10−3にリード要求を行う場合には、ソースフィールド552はホームIDとし、第1宛先フィールド560はリモートIDとし、更に第2宛先フィールド564に最初のアクセス要求元であるローカルIDを指定する。
Next, when a read request is made from the home processor module 10-2 to the remote processor module 10-3, the
更に、リモートのプロセッサモジュール10−3からリプライデータ260を送出する際には、図55のソースフィールド552にリモートIDを指定し、第1宛先フィールド560は要求元であるホームIDを指定し、更に第2宛先フィールド564には最初の要求元であるローカルIDを指定する。具体的には、リモートのプロセッサモジュール10−3で受信したバスコマンドと同じ情報をそのままセットしてリプライコマンドとしてのリプライデータを260を送出すればよい。
Furthermore, when sending the
このように本発明のキャッシュコヒーレンス装置でローカル、ホーム、リモートとなる3つのプロセッサモジュール間でのデータ転送を必要とするリードアクセスにおいて、図55におけるソースフィールド552、第1宛先フィールド560及び第2宛先フィールド564のコマンドフォーマットが意味をもつことになる。
As described above, in the read access that requires data transfer between the three processor modules that are local, home, and remote in the cache coherence device of the present invention, the
図55の基本バスコマンドにおいて、ソースフィールド552は実際にはソースバスIDフィールドとソースユニットIDフィールドに分けられている。ソースバスIDフィールドをもつことで、異なるシステムバス間でのデータ転送が可能となる。同様に、第1宛先フィールド560及び第2宛先フィールド564についても、宛先バスIDフィールドと宛先ユニットIDフィールドがそれぞれ設けられている。更に、第1宛先フィールド560と第2宛先フィールド564にはアクセスIDフィールドが設けられている。
In the basic bus command of FIG. 55, the
第1宛先フィールド560のアクセスIDフィールドは、スプリット転送でのバスアクセスの多重動作を行うための動作識別ID番号を指定するフィールドであり、コマンドあるいはコマンド群に対して有効である。このアクセスIDフィールドによる動作識別ID番号の用途は、複数のバスアクセスポートの同時動作や単一のDMAポートのパイプライン動作等であり、1ユニット当たり16種類までの多重動作が指定できる。
The access ID field of the
第2宛先フィールド564の指定がない通常のバスコマンドにおいては、第1宛先フィールド560のIDフィールドにはソースユニットの任意の動作識別ID番号を指定すればよい。この場合、ソースユニットにおいてはアクセスユニットIDと同じ動作識別ID番号を記憶しており、リプライコマンドを受信した際に第1宛先フィールド560のアクセスIDフィールドとソースユニットに記憶している動作識別ID番号を比較し、一致したならば、自分自身が発行したバスコマンドに対するリプライコマンドであると判断する。
In a normal bus command in which the second destination field 564 is not specified, an arbitrary operation identification ID number of the source unit may be specified in the ID field of the
一方、図17の読出モード2におけるリード処理で、ホームのプロセッサモジュール10−2からの第2バスコマンド及びリモートのプロセッサモジュール10−3からのリプライコマンドのように、第2宛先フィールド564が指定されているときには、ソースユニット自身がバスコマンド送出の際に記憶している動作識別ID番号とリプライコマンドにおける第2宛先フィールド564のアクセスIDフィールドを比較し、一致したならば、自分自身が発行したバスコマンドに対するリプライが第1宛先フィールド560で指定されたリプライコマンドと判断する。
On the other hand, in the read process in the
具体的には、図17においてローカルのプロセッサモジュール10−1はホームのプロセッサモジュール10−2に送出したバスコマンドに対するリプライコマンドを待っているが、実際にはホームのプロセッサモジュール10−2からリモートのプロセッサモジュール10−3に送出した第2バスコマンドに対するリプライコマンドがホームのプロセッサモジュール10−2ではなくリモートのプロセッサモジュール10−3から返送されてくる。 Specifically, in FIG. 17, the local processor module 10-1 is waiting for a reply command for the bus command sent to the home processor module 10-2. A reply command corresponding to the second bus command sent to the processor module 10-3 is returned from the remote processor module 10-3 instead of the home processor module 10-2.
このときに第2宛先フィールド564のアクセスIDフィールドをローカルのプロセッサモジュール10−1でバスコマンド送出時に記憶した動作識別ID番号と比較して、一致すれば、これはホームのプロセッサモジュール10−2に対する自分自身の送出したバスコマンドに対するリプライコマンドと見做してリプライコマンドを受信することになる。 At this time, the access ID field of the second destination field 564 is compared with the operation identification ID number stored at the time of sending the bus command in the local processor module 10-1, and if they match, this corresponds to the home processor module 10-2. The reply command is received as if it were a reply command for the bus command sent by itself.
この結果、本来の要求元であるローカルのプロセッサモジュール10−1は、リモートのプロセッサモジュール10−3を意識することなく、ホームとなるプロセッサモジュール10−2の主記憶28には存在せずリモートのプロセッサモジュール10−3のキャッシュユニットに存在する最新データを受領することができる。
As a result, the local processor module 10-1 which is the original request source does not exist in the
このときローカルのプロセッサモジュール10−1にあっては、リプライデータの受信時間を監視するバスタイマとしてホームのプロセッサモジュール10−2からのリプライを考慮した時間T1(第1時間)を設定しているが、ホームのプロセッサモジュール10−2からリモートのプロセッサモジュール10−3に対する第2のバスコマンドの送出によるリプライであることから、ローカルのプロセッサモジュール10−1におけるバスタイムアウトの監視タイマの時間を、リモートのプロセッサモジュール10−3を考慮した、より長い時間T2(第2時間)に変更して、バス転送のタイムアウトを監視する。 At this time, in the local processor module 10-1, a time T1 (first time) considering the reply from the home processor module 10-2 is set as a bus timer for monitoring the reception time of reply data. Since the reply is made by sending the second bus command from the home processor module 10-2 to the remote processor module 10-3, the time of the bus timeout monitoring timer in the local processor module 10-1 is The bus transfer time-out is monitored by changing to a longer time T2 (second time) in consideration of the processor module 10-3.
このバスタイムアウトカウンタの時間変更は、ローカルのプロセッサモジュール10−1でホームからリモートに送出されるリモートコマンド250の送出を監視して行えばよい。もちろん、図40に示したタグ情報線509を利用した時間変更を行うことも可能である。
The time change of the bus time-out counter may be performed by monitoring the sending of the
更に図17のリモートとなるプロセッサモジュール10−3からのリプライデータ260であるリプライコマンドの返送については、リプライコマンドの契機となったホームとなるプロセッサモジュール10−2からのリモートコマンド250であるバスコマンドの第1宛先フィールド560におけるアクセスIDフィールドの動作識別ID番号をそのまま指定することになる。
Further, for the return of the reply command as
図55の基本バスコマンドは、先頭にサブシステム拡張指定フラグ550を設けている。このサブシステム拡張指定フラグ550は、図52のように、異なったサブシステムのユニット間でデータ転送を行う場合に1にセットされ、これにより図55の基本バスコマンドに加えて、図62に示すサブシステム拡張用のバスコマンドの第2ワード目が作成される。このサブシステム拡張用の第2ワード目については後の説明で明らかにする。 The basic bus command in FIG. 55 has a subsystem expansion designation flag 550 at the head. This subsystem expansion designation flag 550 is set to 1 when data is transferred between units of different subsystems as shown in FIG. 52. As a result, in addition to the basic bus command of FIG. The second word of the bus command for subsystem expansion is created. The second word for subsystem expansion will be clarified later.
図55の基本バスコマンドにおいて、ソースフィールド552と第1宛先フィールド560の境界部分にはブロードキャスト指定フラグ558が設けられ、ブロードキャストバスコマンドとして使用する際に1にセットされる。また第2宛先フィールド564の先頭部分には第2宛先指定フラグ562が設けられ、第2宛先フィールド564を使用する際に1にセットされる。
In the basic bus command of FIG. 55, a
基本バスコマンドの2行目となる5〜8バイト部分には、コマンドフィールド566、サイズフィールド568及びフラグフィールド570が設けられる。コマンドフィールド566には、リードコマンド、ライトコマンド、リプライコマンド、ブロードキャストコマンド等のコマンド識別コードが設定される。次のサイドフィールド568にはデータ転送サイズが設定される。
A
リード系のバスコマンドではリプライコマンドで返送するデータサイズを指定し、ライト系のバスコマンドではバスコマンドに後続する書込データのデータサイズを指定する。次のフラグフィールド570には、コマンドの修飾フラグや属性フラグが必要に応じて設けられる。最後のコマンドパラメータフィールド572は、コマンドフィールド566のコマンド種別に依存した例えばアクセスアドレス等が指定される。
In the read bus command, the data size returned by the reply command is specified, and in the write bus command, the data size of the write data following the bus command is specified. In the next flag field 570, a command modification flag and an attribute flag are provided as necessary. The last
図56は、本発明で使用するブロードキャストバスコマンドのコマンドフォーマットである。ブロードキャストバスコマンドは、ソースフィールド552に続いて設けた第1宛先フィールド560について、図5555の基本バスコマンドにおける宛先ユニットIDの代わりに16ビット幅のブロードキャスト宛先マップフィールド574を設けている。
FIG. 56 shows a command format of a broadcast bus command used in the present invention. In the broadcast bus command, for the
本発明のシステムバス12は最大で16ユニットを接続することができるので、ブロードキャスト宛先マップフィールド574はビット対応によりブロードキャストコマンドの相手先となるユニットをビット対応で指定することができる。プロードコースバスコマンドもブロードキャストバスコマンドと同じフォーマットをもつ。
Since a maximum of 16 units can be connected to the
図57は、本発明のシステムバスで使用される基本リプライ用及びエラーリプライ用のバスコマンドのコマンドフォーマットである。この基本リプライ及びエラーリプライ用のバスコマンドは、第2行目の部分にリプライタイプ574、エラーレベル576、エラータイプ578、エラーコード580の各フィールドを設けたことを特徴とする。それ以外の構造は図55の基本バスコマンドと同じである。なお最後のコマンドパラメータ572のフィールドは使用していない。
FIG. 57 is a command format of basic reply and error reply bus commands used in the system bus of the present invention. This basic reply and error reply bus command is characterized in that fields of a
リプライタイプフィールド574には、リプライを要求したソースユニットが発行したバスコマンドのコマンドコードが指定される。またリプライコマンドの付加情報のフォーマットやデータの有無は、このリプライタイプフィールド574のコマンドコードによって決められる。
In the
次のエラーレベルフィールド576は、エラーリプライバスコマンドとして使用する際にエラーレベルが格納される。また次のエラータイプフィールド578には、エラー返信時のエラーの分類を示すエラータイプが通知される。更にエラーコードフィールド580には、エラー返信時にエラーの詳細な要因が通知される。
The next
図59は図57のエラータイプフィールド578の例であり、ソフトウェアエラー、システム構成エラー、ハードウェアエラー、バスエラーの分類情報がエラー検出に基づいてセットされる。図60は図57のエラーレベルフィールド576によるエラーの詳細分類をエラータイプと組み合わせて示している。
FIG. 59 is an example of the
ここで図60R>0の「nnn」は、エラーの種別によって異なる。また「xx」は、00でソース(ローカル)、01で第1宛先(ホーム)、10で第2宛先(リモート)、11で第1宛先(ホーム)のミラーユニットを表わす。また「r」は、0でライト、1でリードとなる。 Here, “nnn” in FIG. 60R> 0 differs depending on the type of error. “Xx” represents a mirror unit of 00 as a source (local), 01 as a first destination (home), 10 as a second destination (remote), and 11 as a first destination (home). “R” is 0 for writing and 1 for reading.
尚、図56に示したブロードキャストバスコマンドは、図23の書込モード1、図24の書込モード2、図25の書込モード3、図26の書込モード4等におけるキャッシュインバリデードのためのバスコマンドとして使用される。
The broadcast bus command shown in FIG. 56 is for cache invalidation in the
図58は、本発明のシステムバスで使用されるキャッシュステータスリプライバスコマンドのコマンドフォーマットである。このキャッシュステータスリプライコマンドにあっては、ソースフィールド552,第1宛先フィールド560に続いて、キャッシュサブラインステータスフィールド582−1を設け、更に2行目の最後の4ビットに同じくキャッシュサブラインステータスフィールド582−2を設けている。
FIG. 58 is a command format of a cache status reply bus command used in the system bus of the present invention. In this cache status reply command, a cache subline status field 582-1 is provided following the
本発明のキャッシュコヒーレンス装置にあっては、64バイトのキャッシュラインを16バイト単位のキャッシュサブラインに分けている。そこで、キャッシュサブラインを#0〜#3で表わし、キャッシュサブラインステータス582−1,582−2の組合せで各サブラインを3ビットずつ割り当て、キャッシュバスコマンドに対するリプライバスコマンドにより、アクセス対象となったキャッシュサブラインの現在の状態を表示する。 In the cache coherence device of the present invention, the 64-byte cache line is divided into 16-byte cache sublines. Therefore, the cache sublines are represented by # 0 to # 3, and each subline is assigned 3 bits by a combination of the cache subline statuses 582-1 and 582-2, and the cache subline to be accessed by the reply bus command for the cache bus command is assigned. Displays the current state of.
即ち、キャッシュサブラインステータスフィールド582−1にはサブラインID#0〜#3のビット0、ビット1の2ビットがそれぞれ割り当てられ、2行目の最後のキャッシュサブラインステータスフィールド582−2にビット2の第3ビット目が割り当てられている。このキャッシュサブラインステータスフィールド582−1,582−2によるキャッシュサブライン状態は、図61に示すようになる。
That is,
図62は、図55のサブシステムバス拡張識別フラグ550を1にセットした際にバスコマンドの第2ワードとして作成されるサブシステム拡張バスコマンドのコマンドフォーマットである。このサブシステム拡張バスコマンドは1行目にソースシステムフィールド586を設け、ソースユニットを設けているソースシステムID、ソースバスID及びソースユニットIDの各フィールドを指定する。 FIG. 62 shows a command format of the subsystem expansion bus command created as the second word of the bus command when the subsystem bus expansion identification flag 550 of FIG. 55 is set to 1. This subsystem expansion bus command provides a source system field 586 on the first line, and specifies the source system ID, source bus ID, and source unit ID fields in which the source unit is provided.
2行目については、サブシステム第1宛先フィールド558が設けられ、宛先システムID、宛先バスID、宛先ユニットIDの各フィールドを設けている。続いてサブシステム第2宛先フィールド590が設けられ、同様に宛先システムID、宛先バスID、宛先ユニットIDの各フィールドを設けている。また第2宛先指定フラグ592もセットされる。このような図62のサブシステム拡張バスコマンドを図55の基本バスコマンドの第1ワードに対し第2ワードとして組み合わせることで、図52に示した複数のサブシステムのユニット間でのデータ転送を行うことができる。
For the second row, a subsystem
このように本発明のキャッシュコヒーレンス装置で使用する第2共通バスとしてのシステムバス12は、ディレクトリ方式に従った分散共有メモリ型のマルチプロセッサシステムにおいて、キャッシュコヒーレンスを効率良く実現するための共通バスを提供することができ、ディレクトリ方式の拡張性を損うことのない共通バスが提供できる。
As described above, the
またシステムバス単位に構築されるサブシステムを複数結合した大規模なマルチプロセッサシステムへの拡張を考慮した信頼性の高い共通バスが提供できる。更に、異なったバスとの接続を考慮していることから、既存のバス資産の有効活用を可能とする共通バスが提供できる。
In addition, it is possible to provide a highly reliable common bus considering expansion to a large-scale multiprocessor system in which a plurality of subsystems constructed in units of system buses are combined. Furthermore, since consideration is given to connection with different buses, a common bus that enables effective use of existing bus assets can be provided.
7.第2ディレクトリメモリ
図63は、本発明の他の実施形態であり、プロセッサモジュールのシステムバスに対するバス接続ユニットに第2ディレクトリメモリを設けたことを特徴とする。
7). Second Directory Memory FIG. 63 is another embodiment of the present invention and is characterized in that a second directory memory is provided in the bus connection unit for the system bus of the processor module.
図63は、プロセッモジュール10−1がローカルとしてホームのプロセッサモジュール10−2の主記憶28に対しホームコマンド600を発行して書込アクセスを行い、ホームからリモートとしてのプロセッサモジュール10−3,10−4にキャッシュインバリデートのリモートコマンド602を発行した場合を示している。
63, the processor module 10-1 issues a
プロセッサモジュール10−1〜10−4の各々は、メモモリ管理ユニット26に対し分散主記憶としてのローカルストレージ28とディレクトリメモリ30を設けており、これは図3の実施形態と同じである。これに加え図63の実施形態では、バス接続ユニット32に第2ディレクトリメモリ31を設けている。この第2ディレクトリメモリ31に対しディレクトリメモリ30を第1ディレクトリメモリと呼ぶ。
Each of the processor modules 10-1 to 10-4 is provided with a
第2ディレクトリメモリ31は、自己のローカルストレージ28に存在するキャッシュライン単位のデータにつき、そのデータがシスムテバス上で他のバスコマンドによりアクセス状態を登録している。この登録内容としては、例えば、リモートコマンドによるキャッシュインバリデート待ちがある。図63のプロセッサモジュール10−2は、ホームとしてプロセッサモジュール10−3,10−4にキャッシュインパリデータのリモートコマンド602を発行しており、コマンド応答を待っている。このときプロセッサモジュール10−2の第2ディレクトリメモリ31の該当するキャッシュラインについては、リモートからのキャッシュインバリデートの応答待ちが登録されている。
The
この状態で、例えばプロセッサモジュール10−3の2番目キャッシュユニット側から、同じキャッシュラインを対象にライトアクスセのホームコマンド608が発行されたとする。このホームコマンド602に対しバス接続ユニット32は第2ディレクトリメモリ31を参照してキャッシュインバリデートの完了待ちにあることをメモリ管理ユニット26に送ることなく直ちに認識し、ビジー応答をリプライコマンドで返す。
In this state, for example, a write
この場合、システムバス12上でのリトライとすることは無駄になるので、アクセス元のキャッシュユニットまでビジーを通知し、リトライを行わせる。このように第2ディレクトリメモリ31の参照でリモートコマンドによるアクセス不能な状態が判るので、メモリ管理ユニット26側でアクセス不能を判断してビシーを応答する場合に比べ、処理を高速化できる。
In this case, since retrying on the
リモートのプロセッサモジュール10−3,10−4でキャッシュインバリデートが完了してリプライコマンドが帰されると、第2ディレクトリメモリ31の登録は削除され、プロセッモジュール10−3からのリトライによるリモートコマンド602が受け入れられる。
When the cache invalidation is completed in the remote processor modules 10-3 and 10-4 and the reply command is returned, the registration of the
図64は、図63のホームのキャッシュインバリデートの完了待ちの状態にあるホームとしてのプロセッサモジュール10−2に対し、他のプロセッサモジュールからホームコマンド606が複数発行され、バス接続ユニット32のバッファがフルとなった場合である。このバッファフルの状態で、プロセッサモジュール10−3からリモートコマンド602が発行されたとすると、第2ディレクトリメモリ31を参照することなく、直ちにバッファフルのビジー応答を返す。
In FIG. 64, a plurality of home commands 606 are issued from other processor modules to the processor module 10-2 as a home waiting for completion of the cache invalidation of the home in FIG. This is when it becomes full. If a
この場合、アクセス要求元のキャッシュユニットまでバッファフルのビジー応答を返すと、スヌープバス22やキャッシュユニットがリトライ動作に忙殺されることから、システムバス12上でのリモートコマンドのリトライとする。
In this case, when a buffer full busy response is returned to the access request source cache unit, the snoop
8.その他
図4のプロセッサエレメント14−1に設けた2次キャッシュ制御モジュール35は、2次キャッシュ38のキャッシュデータをLRUで管理しており、新たなキャッシュデータのオーナーで2次キャッシュ38がオーバフローすると、キャッシュデータのLRU追出し処理が行われる。このLRU追い出し処理は、追い出し対象となったキャッシュラインが書込権を所有した排他的ダーティ状態、即ちオーナーであった場合には、メモリモジュール25に対しスヌープバス22を介してコピーバックコマンドを発行し、ホームとなるプロセッサモジュールのローカルストレージ28に、追い出されたキャッシュデータを格納する。
8). Others The secondary
一方、書込所有権が存在した排他的ダーティ状態EX&DのキャッシュラインのLRU追い出しの際に、他のスヌープバスを介して接続した他のキャッシュ上にシェアードモディファイ状態でキャッシュデータが存在する場合には、追い出されたキャッシュデータを消した後、他のキャッシュユニットにリプライコマンドRPを送って、シェアードモディファイ状態SH&Mから排他的ダーティ状態EX&Dに切り替えて書込所有権を移す。この場合には、LRUで追い出されたキャッシュデータのローカルストレージ28へのオーナーは不要である。
On the other hand, when LRU eviction of a cache line in the exclusive dirty state EX & D in which write ownership exists, if cache data exists in a shared modified state on another cache connected via another snoop bus After deleting the evicted cache data, a reply command RP is sent to the other cache units to switch from the shared modify state SH & M to the exclusive dirty state EX & D and transfer the write ownership. In this case, the owner of the cache data evicted by the LRU to the
尚、上記の実施例は、1つのプロセッサモジュールに4つのプロセッサエレメントを設けた場合を例にとっているが、プロセッサモジュールには少なくとも1台のプロセッサエレメントが設けられればよい。また、プロセッサエレメントの数は必要に応じて適宜に設けることができる。更に、システムバスで接続されるプロセッサモジュールの実施例に限定されず、2以上であれば任意の数のプロセッサモジュールを接続できる。
In the above embodiment, the case where four processor elements are provided in one processor module is taken as an example, but it is sufficient that at least one processor element is provided in the processor module. Further, the number of processor elements can be appropriately provided as necessary. Furthermore, the embodiment is not limited to the embodiment of the processor module connected by the system bus, and any number of processor modules can be connected as long as it is two or more.
10,10−1〜10−5:プロセッサモジュール(PM)
12,12−1,12−2:システムバス(第1共通バス)
14,14−1〜14−4:プロセッサエレメント(PE)
16,16−1〜16−4:CPU回路
18,18−1〜18−4:キャッシュユニット(キャッシュ)
20,20−1〜20−4:スヌープユニット
22:スヌープバス(第1共通バス)
24:プロトコル管理ユニット
25:メモリモジュール
26:メモリ管理ユニット
28:ローカルストレージ(分割配置された主記憶)
30:ディレクトリメモリ
31:第2ディレクトリメモリ
32:モジュール接続ユニット
34:CPU
35:2次キャッシュ制御モジュール
36:1次キャッシュ
38:2次キャッシュ
40:タグメモリ
42,52:スヌープ送受信ユニット
44:スヌープバッファ
46:コピーバックバッファ
48:プロセッサアクセス制御ユニット
50:空間制御ユニット
54:ローカルアクセスバッファキュー
56:ホームアクセスバッファキュー
58:リモートアクセスバッファキュー
62:バス受信ユニット
64:バス送信ユニット
66:メモリバス
68−1〜68−4:メモリアクセスコントローラ
70−1〜70−4:SRAM
74:バスアービタ
76:メモリバス制御ユニット
78:ディレクトリ制御ユニット
80:キャッシュ変換部
81:ローカルステートマシン
82:ホームステートマシン
83:リモートステートマシン
86:CPU物理アドレス空間
88:制御レジスタ空間
90:ROM空間
94:36ビット物理アドレス
95:制御テーブル
96:ホーム情報
98:ユニットID
100:キャッシュライン
102−1〜102−4:キャッシュサブライン(サブライン)
104:ディレクトリエントリレジスタ
106:シェアードマップビット対応レジスタ
108:プロセッサモジュール構成レジスタ
120,122,124,128:キャッシュステータス格納エリア
500−1,500−2:サブシスタム
501:基本システム
502,503:バスアービタ
504:バス拡張ユニット
505:異種システム
506:拡張システム
507:データバス線
509:タグ制御線
510−1〜510−3:プロセッサモジュール
512:サブシステム間接続ユニット
514:共通データバス線(DB)
516:データバリティ線(DP)
518:共通タグバス線(TB)
520:バスリクエスト線(BRQ)
522:緊急バスリクエスト線(BRE)
524:バスグラント線(BGR)
526:バスID線(BID)
528:ユニットID線(UID)
530:ホルト線(HLT)
532:マスタ権切替線(MFC:Master Force Change))
534:インストール線(INST)
536:ディスコネクト線(DCON)
538:クロック線(CLK)
550:システムバス拡張指定フラグ
552:ソースフィールド
558:ブロードキャスト指定フラグ
560:第1宛先フィールド
562:第2宛先指定フラグ
564:第2宛先フィールド
566:コマンドフィールド
568:サイズフィールド
570:フラグフィールド
572:コマンドパラメータフィールド
574:ブロードキャスト宛先マップフィールド
575:リプライタイプフィールド
576:エラーレベルフィールド
578:エラータイプフィールド
580:エラーコードフィールド
582−1,582−2:キャッシュサブライステータスフィールド
586:ソースシステムフィールド
588:サブシステム第1宛先フィールド
590:サブシステム第2宛先フィールド
592:第2宛先指定フラグ
10, 10-1 to 10-5: Processor module (PM)
12, 12-1, 12-2: System bus (first common bus)
14, 14-1 to 14-4: Processor element (PE)
16, 16-1 to 16-4:
20, 20-1 to 20-4: Snoop unit 22: Snoop bus (first common bus)
24: Protocol management unit 25: Memory module 26: Memory management unit 28: Local storage (main storage divided)
30: Directory memory 31: Second directory memory 32: Module connection unit 34: CPU
35: secondary cache control module 36: primary cache 38: secondary cache 40:
74: Bus arbiter 76: Memory bus control unit 78: Directory control unit 80: Cache conversion unit 81: Local state machine 82: Home state machine 83: Remote state machine 86: CPU physical address space 88: Control register space 90: ROM space 94 : 36-bit physical address 95: Control table 96: Home information 98: Unit ID
100: Cache lines 102-1 to 102-4: Cache subline (subline)
104: Directory entry register 106: Shared map bit correspondence register 108: Processor
516: Data validity line (DP)
518: Common tag bus line (TB)
520: Bus request line (BRQ)
522: Emergency bus request line (BRE)
524: Bus Grant Line (BGR)
526: Bus ID line (BID)
528: Unit ID line (UID)
530: Holt wire (HLT)
532: Master Force Change Line (MFC: Master Force Change)
534: Installation line (INST)
536: Disconnect line (DCON)
538: Clock line (CLK)
550: System bus extension designation flag 552: Source field 558: Broadcast designation flag 560: First destination field 562: Second destination designation flag 564: Second destination field 566: Command field 568: Size field 570: Flag field 572: Command Parameter field 574: Broadcast destination map field 575: Reply type field 576: Error level field 578: Error type field 580: Error code field 582-1, 582-2: Cache subsystem status field 586: Source system field 588: Subsystem First destination field 590: Subsystem second destination field 592: Second destination designation flag
Claims (3)
前記プロセッサ群に共有される主記憶と、
前記複数のプロセッサ毎に設けられ、前記主記憶のアクセスを高速化するキャッシュユニットと、
前記主記憶のデータの前記キャッシュユニットへの登録状態をキャッシュライン単位に記憶するディレクトリ記憶部と、
前記主記憶とキャッシュユニット間を接続する第1共通バスと、
前記複数のプロセッサ群の間を接続する第2共通バスと、
前記主記憶とキャッシュユニット間のキャッシュコヒーレンスを実現する内部コヒーレンス処理部と、
前記複数のプロセッサ群の間のキャッシュコヒーレンスを実現する外部コヒーレンス処理部とを有し、
前記キャッシュユニットは、前記キャッシュラインを複数のサブラインに分割して管理し、
前記ディレクトリ記憶部は、前記キャッシュユニット上のデータが最新値で前記主記憶上のデータが旧値となるダーティ状態である場合のキャッシュ状態を前記サブライン単位に記憶し、前記キャッシュユニット上と主記憶上のデータが同じ値になるシェア状態を前記キャッシュライン単位に記憶し、
前記複数のプロセッサ群は、少なくとも1つ以上のプロセッサで構成されるプロセッサモジュールに分割され、前記ディレクトリ記憶部へのキャッシュ状態の記憶を前記プロセッサモジュール単位に行うとともに、
前記主記憶に最新データがなく複数のキャッシュユニットに存在し、該複数のキャッシュユニットの1つが該最新データの前記主記憶へコピーバックのための書込所有権を保有している場合には、
前記書込所有権を有するキャッシュユニットで前記最新データのリプレースが発生した際に、該書込所有権を前記最新データを保有しているキャッシュユニットに委譲し、最新データを保有するキャッシュユニットが1つになるまで前記主記憶への最新データのコピーバックを抑止することを特徴とするキャッシュコヒーレンス装置。
Multiple processors,
Main memory shared by the processor group;
A cache unit that is provided for each of the plurality of processors and that speeds up access to the main memory;
A directory storage unit that stores a registration state of the data in the main memory in the cache unit in units of cache lines;
A first common bus connecting the main memory and the cache unit;
A second common bus for connecting the plurality of processor groups;
An internal coherence processing unit for realizing cache coherence between the main memory and the cache unit;
An external coherence processing unit for realizing cache coherence between the plurality of processor groups,
The cache unit manages the cache line by dividing it into a plurality of sublines,
The directory storage unit stores a cache state in units of sublines when the data on the cache unit is the latest value and the data on the main memory is the old value, and the cache unit and the main memory are stored. Store the share state where the above data is the same value in the cache line unit,
The plurality of processor groups are divided into processor modules including at least one processor, and the cache state is stored in the directory storage unit in units of the processor modules.
When there is no latest data in the main memory and there are a plurality of cache units, and one of the plurality of cache units has write ownership for copying back the main data to the main memory,
When the replacement of the latest data occurs in the cache unit having the write ownership, the write ownership is transferred to the cache unit that holds the latest data, and the cache unit that holds the latest data is 1 A cache coherence device characterized in that copy back of the latest data to the main memory is suppressed until it is connected.
2. The plurality of cache units have a unique identification number, and the write ownership is transferred according to a predetermined order based on an identification number of a cache unit in which the latest data is replaced. Cash coherence device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006077114A JP3914250B2 (en) | 1995-03-20 | 2006-03-20 | Cache coherence device |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6050095 | 1995-03-20 | ||
JP2006077114A JP3914250B2 (en) | 1995-03-20 | 2006-03-20 | Cache coherence device |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25052795A Division JP3872118B2 (en) | 1995-03-20 | 1995-09-28 | Cache coherence device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006179033A JP2006179033A (en) | 2006-07-06 |
JP3914250B2 true JP3914250B2 (en) | 2007-05-16 |
Family
ID=36732997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006077114A Expired - Fee Related JP3914250B2 (en) | 1995-03-20 | 2006-03-20 | Cache coherence device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3914250B2 (en) |
-
2006
- 2006-03-20 JP JP2006077114A patent/JP3914250B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2006179033A (en) | 2006-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3872118B2 (en) | Cache coherence device | |
CA2051029C (en) | Arbitration of packet switched busses, including busses for shared memory multiprocessors | |
CA2051222C (en) | Consistent packet switched memory bus for shared memory multiprocessors | |
US5265235A (en) | Consistency protocols for shared memory multiprocessors | |
KR100348947B1 (en) | Non-uniform memory access(numa) data processing system that speculatively issues requests on a node interconnect | |
US6014690A (en) | Employing multiple channels for deadlock avoidance in a cache coherency protocol | |
US5276852A (en) | Method and apparatus for controlling a processor bus used by multiple processor components during writeback cache transactions | |
US6085276A (en) | Multi-processor computer system having a data switch with simultaneous insertion buffers for eliminating arbitration interdependencies | |
EP0911731B1 (en) | Order supporting mechanisms for use in a switch-based multi-processor system | |
KR100465583B1 (en) | Non-uniform memory access(numa) data processing system that speculatively forwards a read request to a remote processing node and communication method in the system | |
US6101420A (en) | Method and apparatus for disambiguating change-to-dirty commands in a switch based multi-processing system with coarse directories | |
KR100324975B1 (en) | Non-uniform memory access(numa) data processing system that buffers potential third node transactions to decrease communication latency | |
US6108752A (en) | Method and apparatus for delaying victim writes in a switch-based multi-processor system to maintain data coherency | |
EP0911736A1 (en) | Low occupancy protocol for managing concurrent transactions with dependencies | |
KR100387541B1 (en) | Method and system for resolution of transaction collisions to achieve global coherence in a distributed symmetric multiprocessor system | |
JP2001147903A (en) | Scalable shared memory multiprocessor computer system having efficient bus mechanism and repeat chip structure having coherence control | |
JPH04271452A (en) | Multiprocessor system | |
JPH10187645A (en) | Multiprocess system constituted for storage in many subnodes of process node in coherence state | |
JPH06243035A (en) | Generalized shared memory in cluster architecture for computer system | |
CA2051209C (en) | Consistency protocols for shared memory multiprocessors | |
JP2000250883A (en) | Method and system for avoiding loss of data caused by cancel of transaction in unequal memory access system | |
US7797495B1 (en) | Distributed directory cache | |
JP4361909B2 (en) | Cache coherence device | |
JP4424619B2 (en) | Information processing device | |
JP4361910B2 (en) | Cache coherence device |
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: 20070109 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070201 |
|
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: 20110209 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110209 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120209 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130209 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140209 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |