JP4361909B2 - Cache coherence device - Google Patents

Cache coherence device Download PDF

Info

Publication number
JP4361909B2
JP4361909B2 JP2006077052A JP2006077052A JP4361909B2 JP 4361909 B2 JP4361909 B2 JP 4361909B2 JP 2006077052 A JP2006077052 A JP 2006077052A JP 2006077052 A JP2006077052 A JP 2006077052A JP 4361909 B2 JP4361909 B2 JP 4361909B2
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
Application number
JP2006077052A
Other languages
Japanese (ja)
Other versions
JP2006209797A (en
Inventor
章 河部本
直宏 柴田
俊之 牟田
貴之 島村
博英 菅原
潤治 西岡
崇諭 佐々木
聡 篠原
陽象 中山
潤 桜井
宏明 石畑
健志 堀江
俊幸 清水
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
PFU Ltd
Original Assignee
Fujitsu Ltd
PFU Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd, PFU Ltd filed Critical Fujitsu Ltd
Priority to JP2006077052A priority Critical patent/JP4361909B2/en
Publication of JP2006209797A publication Critical patent/JP2006209797A/en
Application granted granted Critical
Publication of JP4361909B2 publication Critical patent/JP4361909B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache 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)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance 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.

また、あるローカルストレージの値を複数のキャッシュにコピーしている場合には、書込アクセスがあったキャッシュ以外の他のキュッシュ上のコピー値を無効化した後に、アクセス元のキャッシュ上のコピー値を更新して最新値とし、その後にローカルストレージにコピーバックすることで、キャッシュコヒーレンスが実現される。
特開平6−259384号公報 特開平5−100952号公報
If a local storage value is copied to multiple caches, the copy value on the cache other than the cache that was accessed for write access is invalidated, and then the copy value on the access source cache is invalidated. Is updated to the latest value, and then copied back to the local storage to realize cache coherence.
JP-A-6-259384 Japanese Patent Laid-Open No. 5-100952

しかしながら、図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 processors 16. As shown in FIG. 1A, this processor group is divided into, for example, three processor modules 10-1 to 10-3 configured by at least one processor. A main memory shared by the processor group is provided. The main memory is divided into a plurality of local storage units 28, and each local storage unit 8 is arranged on the processor modules 10-1 to 10-3. In the following description, the main memory is labeled with a local memory.

プロセッサ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 processors 16 is provided with a cache unit 18 that speeds up access to the main memory 28. The registration state of data in the main memory 28 in the cache unit 18 is stored in the directory storage unit 30 in units of cache lines. The main memory 28 and the cache unit 18 are connected by a first common bus 22, and the processor modules 10-1 to 10-3 are connected by a second common bus 12. Cache coherence between the main memory 28 and the cache unit 18 is realized by an internal coherence processing unit by the snoop unit 20. Further, cache coherence between the plurality of processor modules 10-1 to 10-3 is realized by an external coherence processing unit by the cache conversion unit 80.

キャッシュユニット18は、キャッシュラインを複数のサブラインに分割して管理し、ディレクトリ記憶部30は、キャッシュユニット18上のデータが最新値で主記憶28上のデータが旧値となるダーティ状態である場合のキャッシュ状態をサブライン単位に記憶し、キャッシュユニット上と主記憶上のデータが同じ値になるシェア状態をキャッシュライン単位に記憶する。   The cache unit 18 manages the cache line by dividing it into a plurality of sublines, and the directory storage unit 30 is in a dirty state where the data on the cache unit 18 is the latest value and the data on the main memory 28 is the old value. Are stored in units of sublines, and a share state in which the data on the cache unit and the main memory have the same value is stored in units of cache lines.

またディレクトリ記憶部30へのキャッシュ状態の記憶は、プロセッサモジュール単位に行われる。具体的には、プロセッサモジュール10−1〜10−3は、ディレクトリ記憶部30に複数のプロセッサモジュール10−1〜10−3との対応状態を記憶するディレクトリ制御部を有し、このディレクトリ制御部によってディレクトリ記憶部30への登録を複数のプロセッサモジュール単位に指定する。   Further, the cache state is stored in the directory storage unit 30 in units of processor modules. Specifically, each of the processor modules 10-1 to 10-3 has a directory control unit that stores a corresponding state of the plurality of processor modules 10-1 to 10-3 in the directory storage unit 30, and this directory control unit The registration to the directory storage unit 30 is designated for a plurality of processor modules.

複数のプロセッサモジュール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 processors 16, a cache unit 18 provided for each processor 16, a local memory 28 used as a main memory, a main memory 28, and a directory. A memory management unit 26 that manages the storage unit 30, a first common bus 22 that connects the plurality of cache units 18 and the memory management unit 26, and a second common that connects the plurality of processor modules 10-1 to 10-3. The bus 12, the protocol management unit 24 that manages the protocol conversion of the first common bus 22 and the first common bus 12, and the module connection unit 32 that couples the processor modules 10-1 to 10-3 with the second common bus 12. The cache unit 18 is synchronized with a specific machine cycle on the first common bus 22 Coherence is realized between the processor modules 10-1 to 10-3 based on the reference of the directory storage unit 30 provided in the memory management unit 26 and the second common bus 12 provided in the memory management unit 26 and the cache coherence by knoop. A cache conversion unit 80 is provided.

キャッシュユニット18は、例えば256バイトのキャッシュラインを64バイトのサブラインに分割して管理する。これに対応してディレクトリメモリ30には、キャッシュ上のデータが最新値で主記憶上のデータが旧値となるダーティ状態がサブライン単位に登録される。またキャッシュ上と主記憶上のデータが同じ値になるシェア状態は、キャッシュライン単位に登録される。   The cache unit 18 manages, for example, a 256-byte cache line by dividing it into 64-byte sublines. Correspondingly, a dirty state in which the data on the cache is the latest value and the data on the main memory is the old value is registered in the directory memory 30 in units of sublines. A share state in which the data on the cache and the main memory have the same value is registered in units of cache lines.

ディレクトリ記憶部30にキャッシュライン単位に登録されたディレクトリエントリ104は、図1(B)のように、例えばダーティ状態の有無を示す複数のサブラインビットD3〜D0と、シェア状態を複数のプロセッサモジュール毎に示すシェアードマップビットS7〜S0を有する。更にシェアードマップビットS7〜S0のビット位置とプロセッサモジュール10の対応関係を登録する構成レジスタを設け、この構成レジスタによって同一マップビットに複数の複数のプロセッサモジュールのシェア状態を登録可能としている。   As shown in FIG. 1B, the directory entry 104 registered in the directory storage unit 30 for each cache line includes, for example, a plurality of subline bits D3 to D0 indicating the presence / absence of a dirty state, and a shared state for each of a plurality of processor modules. The shared map bits S7 to S0 shown in FIG. Further, a configuration register for registering the correspondence between the bit positions of the shared map bits S7 to S0 and the processor module 10 is provided, and the shared state of a plurality of processor modules can be registered in the same map bit by this configuration register.

更に、ディレクトリエントリ104のサブラインビットD3〜D0をセットした場合には、このビットセットに対応して最新値を持つキャッシュユニット18が存在するプロセッサモジュール10の情報(PM−ID)を、主記憶28の特定領域に格納する。またサブラインビットD3〜D0をリセットした場合は、このリセットビットに対応して、最新値が存在するプロセッサモジュール10の情報(PM−ID)を、主記憶28の特定領域に格納する。   Further, when the subline bits D3 to D0 of the directory entry 104 are set, information (PM-ID) of the processor module 10 in which the cache unit 18 having the latest value corresponding to this bit set exists is stored in the main memory 28. Store in a specific area. When the subline bits D3 to D0 are reset, the information (PM-ID) of the processor module 10 having the latest value is stored in a specific area of the main memory 28 corresponding to the reset bit.

プロセッサ16は、キャッシュラインのサブライン単位に読出アクセス又は書込アクセスを行う。第2共通バスとしてのシステムバス12及び第1共通バスとしてのスヌープバス22は、指令転送と応答転送を分離したスプリット形式により情報を転送する。   The processor 16 performs read access or write access for each subline of the cache line. The system bus 12 as the second common bus and the snoop bus 22 as the first common bus transfer information in a split format in which command transfer and response transfer are separated.

プロセッサの読出アクセスに対するキャッシュコヒーレンスには、次の読出モード1〜3がある。   The cache coherence for the read access of the processor has the following read modes 1 to 3.

[読出モード1]
この読出モード1は、第1のプロセッサモジュール10−1内の任意のプロセッサ16の読出アクセスに対し自己のキャッシュユニット18及びスヌープバス22で接続した他の全てのキャッシュユニット18でミスヒットし、且つ読出アドレスが第1のプロセッサモジュール10−1内の主記憶にあり、更に読出アドレスのデータがリモートとなる第2のプロセッサモジュール10−2内のキャッシュユニット18に最新値をもつダーティ状態で存在する場合である。
[Read mode 1]
This read mode 1 is a miss hit in its own cache unit 18 and all other cache units 18 connected by the snoop bus 22 for read access of any processor 16 in the first processor module 10-1, and The read address is in the main memory in the first processor module 10-1, and the data of the read address exists in the dirty state having the latest value in the cache unit 18 in the second processor module 10-2 to be remote. Is the case.

この場合、読出アクセスを発生した第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 system bus 12 to access the second processor module 10-2, and enters the dirty state via its own snoop bus 22. After obtaining the latest value from a certain cache unit 18, the latest value is returned to the first processor module 10-1 via the system bus 12. The first processor module 10-1 realizes cache coherence by storing the latest value obtained by this response in the cache unit 18 of the access source and responding to the read access, and simultaneously writing the latest value in the main memory 28. To do.

ここで第1のプロセッサモジュール10−1、主記憶28に最新値を書き込んだ際に、ディレクトリ記憶部30のディレクトリエントリ104をダーティ状態をシェア状態に更新し、またアクセス元のキャッシュユニット18はタグメモリの無効化状態をシェア状態に更新する。   Here, when the latest value is written in the first processor module 10-1 and the main memory 28, the directory entry 104 of the directory storage unit 30 is updated to the shared state, and the access-source cache unit 18 is updated to the tag. Update the memory invalidation state to the shared state.

[読出モード2]
この読出モード2は、第1のプロセッサモジュール10−1内の任意のプロセッサ16の読出アクセスに対し自己のキャッシュユニット18及びスヌープバス22で接続した他の全てのキャッシュユニット18でミスヒットし、且つ読出アドレスが第2のプロセッサモジュール10−2内の主記憶28にあり、更に読出アドレスのデータが第3のプロセッサモジュール10−3内のキャッシュユニット18に最新値をもつダーティ状態で存在する場合である。
[Read mode 2]
This read mode 2 is a miss hit in its own cache unit 18 and all other cache units 18 connected by the snoop bus 22 for read access of any processor 16 in the first processor module 10-1, and When the read address is in the main memory 28 in the second processor module 10-2 and the data of the read address exists in the dirty state having the latest value in the cache unit 18 in the third processor module 10-3. is there.

この場合、第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 system bus 12 to access the second processor module 10-2, and the second processor module 10-2 receives the command received from the system bus 12. Based on the above, a command is issued to the system bus 12 to access the third processor module 10-3. After the third processor module 10-3 obtains the latest value from the cache unit 18 in the dirty state by its own snoop bus 22, the third processor module 10-3 obtains the latest value on the system bus 12 by the first and second processor modules 10-1, 10 -2.

第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 main memory 28, and the first processor module 10-1 stores the latest value obtained by reception of the response of the access source. Stored in the cache unit 18 to respond to read access.

ここで、第2のプロセッサモジュール10−2は、主記憶28に最新値を書き込んだ際にディレクトリ記憶部30のディレクトリエントリ104をダーティ状態をシェア状態に更新する。また第1のプロセッサモジュール10−1のアクセス元のキャッシュユニット18は、タグメモリの無効化状態をシェア状態に更新する。   Here, the second processor module 10-2 updates the directory entry 104 of the directory storage unit 30 to the shared state when the latest value is written in the main memory 28. The cache unit 18 that is the access source of the first processor module 10-1 updates the invalidation state of the tag memory to the share state.

[読出モード3]
この読出モード3は、あるプロセッサモジュール内のキャッシュ間でキャッシュコヒーレンスを実現する。即ち、任意のプロセッサモジュール10−1内の任意のプロセッサ14の読出アクセスに対し自己のキャッシュユニット14はミスヒットしたが、スヌープバス22で接続した他のプロセッサのキャッシュユニットに最新値が存在する場合である。
[Read mode 3]
This read mode 3 realizes cache coherence between caches in a certain processor module. That is, when the cache unit 14 of the own processor has a miss-hit for the read access of the arbitrary processor 14 in the arbitrary processor module 10-1, the latest value exists in the cache unit of another processor connected by the snoop bus 22. It is.

この場合、両キャッシュユニット間でスヌープバス22を介して最新値の転送を実行してアクセス元のキャッシュユニット14に格納し、読出アクセスに応答させる。この場合のスヌープバス22を使用した最新値の転送はキャッシュサブライン単位で実行される。   In this case, the latest value is transferred between the cache units via the snoop bus 22 and stored in the access source cache unit 14 to respond to the read access. In this case, transfer of the latest value using the snoop bus 22 is executed in units of cache sublines.

次にプロセッサの書込アクセスに対するキャッシュコヒーレンスには、次の書込モード1〜5がある。   Next, the cache coherence for the write access of the processor includes the following write modes 1 to 5.

[書込モード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 write mode 1, write access is granted to the cache unit 14 of the first processor module 10-1 and the other cache unit 14 connected by the snoop bus 22 with respect to the write access of the arbitrary processor 16. The copy value is not stored in the possessed state, resulting in a miss-hit, the write address is in the main memory 28 in the first processor module 10-1, and the copy value of the write address in the main memory 28 Is in a shared state in the cache units 18 of the plurality of processor modules 10-2 and 10-3 other than the first processor module 10-1.

この場合、第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 system bus 12. All the processor modules 10-2 and 10-3 in the shared state simultaneously receive the invalidation command, and respond to the first processor module independently using the system bus 12 when the invalidation is successful. .

第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 system bus 12, and sends the copy value of the write address of the main memory 28 to the cache unit 18 of the access source. Store and overwrite by write access.

ここで、第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 source cache unit 18, the first processor module 10-1 updates the share state in the directory entry of the directory storage unit 30 to the dirty state. .

[書込モード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 write mode 2, the copy value is written to the cache unit 18 of the first processor module 10-1 and the other cache unit 18 connected by the snoop bus 22 for the write access of the arbitrary processor 16. The right is not registered in the state where the right is registered and a miss occurs, the write address is the main memory 28 in the first processor module 10-1, and the copy value of the write address in the main memory 28 is the first value. This is a case where the cache units of the plurality of processor modules 10-1 to 10-3 including one processor module 10-1 exist in a shared state.

この場合、第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 system bus 12 in parallel. An invalidation command is issued to the cache unit in the first processor module 10-1 using the snoop bus 22.

シェア状態にある全てのプロセッサモジュール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 system bus 12 to the success of the invalidation. In parallel, the cache unit 18 in the first processor module 10-1 responds with a successful invalidation using the snoop bus 22.

第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 system bus 12 and responses from its own snoop bus 22, and sets the write address of the main memory 28. The copy value is stored in the cache unit 18 and overwritten by the write access of the processor 16.

この場合にも書込モード1と同様、第1のプロセッサモジュール10−1は、無効化の成功を認識してアクセス元のキャッシュユニットにコピーした際に、ディレクトリ記憶部30のディレクトエントリにおけるシェア状態をダーティ状態に更新する。   Also in this case, as in the write mode 1, the first processor module 10-1 recognizes the success of the invalidation and copies it to the access source cache unit. Is updated to a dirty state.

[書込モード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 write mode 3, the copy value is written to the other cache unit 18 connected via the own cache unit 18 and the snoop bus 22 for the write access of the processor 16 in the first processor module 10-1. The right is not registered in the state where the right is registered and a miss occurs, the write address is in the main memory 28 in the second processor module 10-2, and the copy value of the write address in the main memory 28 is the second. This is a case where the cache modules of the plurality of processor modules 10-3 and 10-4 other than the processor module 10-2 exist in a shared state.

この場合、第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 system bus 12 to issue a write ownership request command (home command) to the second processor module 10-2, thereby requesting the write ownership. The second processor module 10-2 that has received the command issues an invalidation command (purge command) to the other processor modules 10-3 and 10-4 in the shared state using the system bus 12. To do.

シェア状態にある全てのプロセッサモジュール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 system bus 12 to be independent of the second processor module 10-2. Respond to.

第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 system bus 12 for the first processor module 10-1 to determine the main processor module 10-1. A write ownership transfer including the copy value of the access address of the storage 28 is responded.

第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 source cache unit 18 and overwrites it with the write access of the processor 16.

ここで、第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 directory storage unit 30 to the dirty state.

[書込モード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 write mode 4, a copy value is written to the other cache unit 14 connected via the own cache unit 18 and the snoop bus 22 for the write access of any processor in the first processor module 10-1. The registered address is not registered in the state of possessing the right to write, and a miss occurs, the write address is in the main memory 28 in the second processor module 10-2, and a copy value of the write address in the main memory 28 Is in a shared state in the cache units 18 of the plurality of processor modules 10-3 and 10-4 including the second processor module 10-2.

この場合、第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 system bus 12 to invalidate the command (purge) to all the processor modules 10-3 and 10-4 in the share state. In parallel with issuing the command (command), an invalidation command is issued using the snoop bus 22 to the cache unit 18 in its own share state.

シェア状態にある全てのプロセッサモジュール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 system bus 12. In parallel with this, the cache unit 18 of the second processor module 10-2 responds to the invalidation success using the snoop bus 22.

第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 system bus 12 and the invalidation success response from the snoop bus 22, and receives the first invalidation response. The system bus 12 is used to respond to the processor module 10-1 about the transfer of write ownership including the copy value of the write address of its own main memory 28.

第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 source cache unit 18 and overwrites it with the write access of the processor 16.

ここで、第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 directory storage unit 30 to the dirty state. To do.

また書込モードにおける無効化指令は、キャッシュサブライン単位で発行する。更に、無効化指令の応答時には、無効化を指令したサブラインが含まれるキャッシュラインの他のサブラインの状態を返送する。   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 write mode 5, the copy value is written to the cache unit 18 of the first processor module 10-1 and the other cache unit 18 connected by the snoop bus 22 for the write access of the arbitrary processor 16. The right is not registered in the state of possessing the right and a miss occurs, the write address is in the main memory 28 of the first processor module 10-1, and the latest value of the write address in the main memory 28 is the second value. This is a case where the cache unit 18 of the processor module 10-2 exists in a dirty state having the write right.

この場合、第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 system bus 12. The second memory module 10-2 accepts the write ownership request command and uses the system bus 12 to transfer the write ownership including the latest value of the cache unit 18 to the first processor module 10. Responds to -1.

第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 cache unit 18 that is the access source, and overwrites it with the write access by the processor 16.

ここで、第2のプロセッサモジュール10−2のキャッシュユニット18は、書込所有権を移動した際にタグメモリのダーティ状態を無効化状態に更新し、また第1のプロセッサモジュール10−1は書込所有権を受領した際に、自己のディレクトリ記憶部30のディレクトリエントリにおけるダーティ状態を、キャッシュ上に最新値が存在するメモリモジュール10−1の情報に変更したダーティ状態に更新する。   Here, the cache unit 18 of the second processor module 10-2 updates the dirty state of the tag memory to the invalid state when the write ownership is transferred, and the first processor module 10-1 When the ownership is received, the dirty state in the directory entry of its own directory storage unit 30 is updated to the dirty state changed to the information of the memory module 10-1 having the latest value on the cache.

[書込モード6]
この書込モード6は、第1のプロセッサモジュール10−1内のプロセッサ16の書込アクセスに対し自己のキャッシュユニット18及びスヌープバス22を介して接続した他のキャッシュユニット18にコピー値が書込権を所有した状態で登録されておらずにミスヒットとなり、書込アドレスが第2のプロセッサモジュール10−2内の主記憶28にあり、更にこの主記憶28の書込アドレスの最新値が第3のプロセッサモジュール10−3のキャッシュユニット18に書込権を所有したダーティ状態で存在する場合である。
[Write mode 6]
In this write mode 6, the copy value is written to the other cache unit 18 connected via the own cache unit 18 and the snoop bus 22 for the write access of the processor 16 in the first processor module 10-1. The right address is not registered and a miss occurs, and the write address is in the main memory 28 in the second processor module 10-2, and the latest value of the write address in the main memory 28 is the first value. This is a case where the cache unit 18 of the third processor module 10-3 exists in a dirty state having the write right.

この場合、第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 system bus 12 to issue a write ownership request command to the second processor module 10-2. The second processor module 10-2 that has received the write ownership request command issues a write ownership request command to the third processor module 10-3 using the system bus 12.

書込所有権の要求指令を受領した第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 system bus 12 to transfer the write ownership including the latest value of the cache unit 18 to the first and second processor modules 10-. Responds to 1,10-2.

第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 source cache unit 18 and overwrites it with the write access of the processor 16.

ここで、第3のプロセッサモジュール10−3のキャッシュユニット18は、書込所有権を移動した際にタグメモリのダーティ状態を無効化状態に更新する。また第2のプロセッサモジュール10−2は、書込所有権の移動を認識した際に、自己のディレクトリ記憶部30のディレクトリエントリにおけるダーティ状態を、最新値の存在するプロセッサモジュール10−1の情報に変更したダーティ状態に更新する。   Here, the cache unit 18 of the third processor module 10-3 updates the dirty state of the tag memory to the invalidated state when the write ownership is transferred. Further, when the second processor module 10-2 recognizes the transfer of the write ownership, the second processor module 10-2 changes the dirty state in the directory entry of its own directory storage unit 30 to the information of the processor module 10-1 having the latest value. Update to the changed dirty state.

更に第1のプロセッサモジュール10−1のアクセス元のキャッシュユニット18は、最新値を格納した際に、タグメモリの無効化状態を書込権が存在するダーティ状態に更新する。   Further, the access source cache unit 18 of the first processor module 10-1 updates the invalidation state of the tag memory to the dirty state where the write right exists when the latest value is stored.

[書込モード7]
この書込モード7は、プロセッサモジュール内の複数のキャッシュ間でアクセスする場合である。即ち、第1のプロセッサモジュール10−1内の任意のプロセッサ16の書込アクセスに対し自己のキャッシュユニット18はミスヒットしたが、スヌープバス22を介して接続した他のキャッシュユニット14に書込アドレスの最新値が書込権を所有したダーティ状態で存在する場合である。
[Write mode 7]
This write mode 7 is a case where access is made between a plurality of caches in the processor module. That is, the cache unit 18 of the first processor module 10-1 has a miss-hit for the write access of any processor 16, but the write address is transferred to the other cache unit 14 connected via the snoop bus 22. Is the case where the latest value exists in a dirty state where the write right is owned.

この場合、スヌープバス22を介してキャッシュユニット18間でデータ転送及び書込所有権の移動を行ってアクセス元のキャッシュユニット18に格納した後に、プロセッサ16の書込アクセスにより上書きさせる。ここで、アクセス先のキャッシュユニット18は書込所有権を移動した後に、タグメモリのダーティ状態を無効化状態に更新する。またアクセス元のキャッシュユニット18は、書込権を獲得した後にタグメモリを無効化状態から書込所有権が存在するダーティ状態に更新する。   In this case, data transfer and transfer of write ownership are performed between the cache units 18 via the snoop bus 22 and stored in the access source cache unit 18, and then overwritten by the write access of the processor 16. Here, the cache unit 18 to be accessed updates the dirty state of the tag memory to the invalidated state after transferring the write ownership. Further, after acquiring the write right, the access source cache unit 18 updates the tag memory from the invalidated state to the dirty state where the write ownership exists.

[キャッシュユニットのアクセス競合処理]
本発明は、プロセッサモジュールのキャッシュユニットに対し、モジュール内部からのアクセスとモジュール外部からのアクセスが競合した場合、次の競合処理を行う。まず先発したモジュールにキャッシュユニットを獲得させて後発のモジュールにリトライの指示を行わせる。更に、先発したモジュールに競合した相手先モジュールとアクセスアドレスを記憶させ、自己のアクセス終了後に競合した相手先モジュール以外からのアクセスコマンドを受けた場合はリトライを指示し、競合した相手先のリトライによるアクセスコマンドを優先的に受け付ける。
[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, and the competing partner is retried Accept access commands preferentially.

具体的には、プロセッサモジュール10−2のキャッシュユニット18に対し、モジュール内部のあるプロセッサ16からのアクセスと外部のプロセッサモジュール10−2からのアクセスが競合し、プロセッサ16が先発してキャッシュユニット18を獲得した場合である。   Specifically, for the cache unit 18 of the processor module 10-2, an access from a processor 16 inside the module and an access from an external processor module 10-2 compete, and the processor 16 starts the cache unit 18 first. Is obtained.

この場合、プロセッサ16は、プロセッサモジュール10−1にリトライの指示を行わせ、更に、競合したプロセッサモジュール10−1とアクセスアドレスを記憶し、自己のアクセス終了後に競合したプロセッサモジュール10−1以外からのアクセスコマンドを受けた場合はリトライを指示し、競合した第2プロセッサモジュール10−1のリトライによるアクセスコマンドを優先的に受け付ける。   In this case, the processor 16 instructs the processor module 10-1 to retry, further stores the competing processor module 10-1 and the access address, and from other than the competing processor module 10-1 after its own access ends. When the access command is received, a retry is instructed, and the access command by the retry of the competing second processor module 10-1 is preferentially received.

これにより外部のプロセッサモジュール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 processors 16 built in the processor module 10-2, resulting in a time error of the system bus 12. Therefore, the efficiency and high reliability of the cache coherence via the system bus 12 can be improved.

またキャッシュユニット18を獲得したモジュールは、自己のアクセス終了後、競合相手先のモジュールからのアクセスが所定時間発生しない場合は、競合相手先とアクセスアドレスの記憶内容を初期化して、競合相手先の優先受付けを解除する。   In addition, if the module that has acquired the cache unit 18 does not access from the competitor module for a predetermined time after the end of its own access, the memory contents of the competitor and the access address are initialized, Cancel priority acceptance.

[主記憶に対するコピーバックの書込所有権]
本発明のプロセッサモジュールは、主記憶28に最新データがなく複数のキャッシュユニット18に存在する場合、複数のキャッシュユニットの1つが最新データを主記憶28へコピーバックするための書込所有権を保有している。この状態で、書込所有権を有するキャッシュユニットでプロセッサ16による最新データのリプレースが発生した場合、書込所有権を最新データを保有しているキャッシュユニットに委譲し、最新データを保有するキャッシュユニットが1つになるまで主記憶28への最新データのコピーバックを抑止して行わないようにする。
[Copyback write ownership to main memory]
When there is no latest data in the main memory 28 and the cache modules 18 exist in the plurality of cache units 18, the processor module of the present invention has write ownership for one of the plurality of cache units to copy the latest data back to the main memory 28. is doing. In this state, when the latest data is replaced by the processor 16 in the cache unit having write ownership, the write ownership is transferred to the cache unit holding the latest data, and the cache unit holding the latest data Until the number becomes one, copy back of the latest data to the main memory 28 is suppressed and is not performed.

これによって、複数のキャッシュユニット18及び主記憶28側のメモリ管理ユニット(ディレクトリ側)26を結合しているスヌープバス22の負担を軽減する。   As a result, the burden on the snoop bus 22 connecting the plurality of cache units 18 and the memory management unit (directory side) 26 on the main memory 28 side is reduced.

書込所有権の委譲は、複数のキャッシュユニットは固有の識別番号#0〜#3をもつことから、最新データをリプレースしたキャッシュユニットの識別番号を基に、予め定めた順番に従って書込所有権を委譲する。   Since the plurality of cache units have unique identification numbers # 0 to # 3, the write ownership transfer is performed according to a predetermined order based on the identification number of the cache unit in which the latest data is replaced. Delegate.

また主記憶28を管理するメモリ管理ユニット26は、最新データがキャッシュユニット18に存在し主記憶28のデータがダーティ状態にあることを示す書込所有権を有するが、キャッシュユニット18間で書込所有権の委譲が行われても、メモリ管理ユニット26の書込所有権を他のプロセッサモジュールに移動せずにそのまま維持する。   The memory management unit 26 that manages the main memory 28 has the write ownership indicating that the latest data exists in the cache unit 18 and the data in the main memory 28 is in a dirty state. Even if the ownership transfer is performed, the write ownership of the memory management unit 26 is maintained without being transferred to another processor module.

[共有システムバス]
また本発明に従えば、分散共有メモリ型のマルチプロセッサシステムにおいて、キャッシュコヒーレンシ維持を効率よく実現し、且つシステムの拡張性を損なうことのないキャッシュコヒーセンス装置の共通システムバスが提供される。更に、大規模なマルチプロセッサの利用が期待される基幹システムへの使用を考慮した信頼性の高い共有システムバスが提供される。更に、異なったバスとの接続を考慮し、既存のバス資産の有効活用を可能とする共有バスが提供される。
[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 bus 12 functioning as a shared system bus of the present invention combines a bus connection unit 32 of a plurality of processor modules and a bus arbiter (bus arbitration unit), and performs split packet transfer between the plurality of processor modules. The bus command is transferred, and a source field indicating an access request source (source ID), a first destination field indicating a first access request destination (first destination ID), and a second access request destination ( Three second destination fields indicating a second destination ID) are provided.

ソースフィールド、第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 unit ID # 1 in the source field when the target data of its own read request exists in the main memory 28 of the second processor module 10-2. The first bus command specifying the unit ID # 2 of the second processor module in the first destination field is transmitted. In this case, the second destination field is not used.

第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 main memory 28 but exists in the cache unit 18 of the third processor module 10-3, Unit ID # 2 of the third processor module 10-3 having the latest data in the first destination field, and the unit ID # 3 of the first processor module 10 of the access request source in the second destination field. A second bus command designating unit ID # 1 is transmitted.

第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 unit ID # 3 in the source field, and unit ID # 2 of the second processor module 10-2 in the main memory 28 in the first destination field. And a reply command in which the unit ID # 1 of the first processor module 10-1 as the read request source is specified in the second destination field, and the first and second processor modules 10-1, 10-2 are transmitted. Simultaneously with read data.

この場合、第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 bus 12 indicates a source field, a first destination field, and a second destination field, a bus identifier (bus ID) indicating the second shared bus, and a unit such as a processor module. It is expressed by two unit identifiers (unit IDs). As a result, when a plurality of second shared buses are connected to each other via the inter-bus connection unit, a unit in another second shared bus can be designated.

また複数のプロセッサモジュールを第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 bus 18 are coupled via a subsystem connection unit, a subsystem extension identifier indicating transfer between subsystems is provided in the bus command. . When this subsystem extension identifier is valid, it has a command field for each subsystem of the bus command, and designates each of the source field, the first destination field, and the second destination field, and a unit of a different subsystem. Can be specified.

更に、複数のプロセッサモジュールを接続した第2共有バス18に対し、異種のシステムバスをもつサブシステムが異種バス接続ユニットを介して結合された場合、バスコマンドは、異種のシステムバスをエミュレートするコマンドをコマンドフィールドの一部に備え、異種のシステムバス上のユニットを指定できるようにしている。   Further, when a subsystem having a different system bus is coupled to the second shared bus 18 to which a plurality of processor modules are connected via a different bus connection unit, the bus command emulates a different system bus. A command is provided in a part of the command field so that units on different system buses can be specified.

バスマスタとしての第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 bus 12 is provided with an access identifier field for storing the operation identifier (access ID) of the source unit in each of the first destination field and the second destination field, and the operation of this access identifier field. The bus command is modified by the identifier, and the operation mode of the bus command is changed.

例えばキャッシュコヒーレンスのために、アクセス要求元となる第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 main memory 28 of the access destination from the first processor module 10-1 as the access request source, and the second processor module 10 -2 to send the second bus command to the third processor module 10-3 having the latest data in the cache unit 18 and finally send the reply bus command from the third processor module 10-3, the access identifier is Specify as follows.

まず第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 bus 12 includes a data bus line that transfers data and parity in parallel, and a tag information line that defines the operation of the bus sequence independently of the data bus line. In this way, a plurality of bus cycles are continued with one bus acquisition. By specifying the retry by the tag information line, it is possible to instruct invalidation of the bus sequence being executed at an arbitrary timing of the bus cycle.

またタグ制御線で相互に接続された複数のプロセッサモジュールのバス接続ユニット32とバスアービタは、複数のバス接続ユニットのいずれもバスサイクルを開始していない場合には、バスアービタから各バス接続ユニットに対し個別に出力されるバス使用許可信号(バスグラント信号)とバスアービタから全てのバス接続ユニットに共通に出力されるバス使用開始指示信号(タグバス信号)を同時に受信した特定のバス接続ユニットがバスサイクルを開始する。   Further, the bus connection unit 32 and the bus arbiter of the plurality of processor modules connected to each other by the tag control line, when none of the plurality of bus connection units starts a bus cycle, from the bus arbiter to each bus connection unit. A specific bus connection unit that receives a bus use permission signal (bus grant signal) that is output individually and a bus use start instruction signal (tag bus signal) that is output in common to all bus connection units from the bus arbiter simultaneously performs a bus cycle. Start.

既に他のバス接続ユニットがバスシーケンスを開始していた場合には、バス使用許可信号を受け取ったバス接続ユニットが、他のバス接続ユニットが出力するバスサイクルの終了信号を検出してバスサイクルを開始する。   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 directory storage unit 30 of the memory management unit 26, the bus connection unit 32 is provided with a second directory storage unit. In this second directory storage unit, a state of waiting for a response to an access request to another processor module is registered in units of cache lines, and the same cache is accessed by referring to the storage unit of the second directory for accesses from other processor modules. If it recognizes line access, it responds busy.

具体的には、リモートとしての第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 bus 12 in response to an access request for the same cache line from another processor module. .

このビジー応答は、要求元のプロセッサモジュール内のキャッシュユニットまで伝えてリトライを行わせる。また無効化完了待ちの状態で、ホームの第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 path connection unit 32 is full due to an access request from another processor module to the home second processor module 10-2 while waiting for the completion of invalidation, the bus connection unit of the processor module that is the access request source Is sent to the second shared bus 32 without being transmitted to the cache unit.

このような第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 memory management unit 26 side, and the Vichy response can be speeded up.

このような本発明のキャッシュコヒーレント装置によれば次の作用が得られる。まず複数のプロセッサモジュールに設けた複数のキャッシュ付きのプロセッサを内部のスヌープバス(第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. Similarly, the bus load on 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, the latest data is transferred to the access source cache at the time of write access, 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. System configuration 2. Cache coherence at CPU read access 3. Cache coherence at CPU write access 4. Cache unit access contention processing 5. Copyback write ownership System common bus
(1) Bus configuration
(2) Bus arbitration operation
(3) Bus transfer sequence
(4) Transfer between buses
(5) Bus command Second directory memory 8. Other

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 bus 22. Connected to. Each of the processor elements 14-1 to 14-4 includes processors 16-1 to 16-4, cache units 18-1 to 18-4, and snoop units 20-1 to 20-4.

メモリモジュール25は、スヌープバス22に接続されると同時に、他のポートよりシステムバス12−1,12−2に接続される。メモリモジュール25はプロトコル管理ユニット24、メモリ管理ユニット26およびモジュール接続ユニット32を備える。プロトコル管理ユニット24は、システムバス12−1,12−2と内部のスヌープバス22との間のプロトコル変換を行う。バス接続ユニット32はメモリモジュール25とシステムバス12−1,12−2の間のバスアクセスを行う。   The memory module 25 is connected to the snoop bus 22 and simultaneously connected to the system buses 12-1 and 12-2 from other ports. The memory module 25 includes a protocol management unit 24, a memory management unit 26, and a module connection unit 32. The protocol management unit 24 performs protocol conversion between the system buses 12-1 and 12-2 and the internal snoop bus 22. The bus connection unit 32 performs bus access between the memory module 25 and the system buses 12-1 and 12-2.

メモリ管理ユニット26には、主記憶として機能するローカルストレージ28と、プロセッサモジュール間でのキャッシュコヒーレンスの実現に使用されるディレクトリメモリ30が接続される。   The memory management unit 26 is connected to a local storage 28 that functions as a main memory and a directory memory 30 that is used to realize cache coherence between processor modules.

スヌープユニット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 local storage 28 as the main memory and the cache according to the snoop protocol that synchronizes the cache units 18-1 to 18-4 with the snoop bus 22 in synchronization with a specific machine cycle. The cache coherence between the units 18-1 to 18-4 is realized. That is, the snoop units 22-1 to 22-4 function as an internal coherence processing unit.

他のプロセッサモジュールとの間のキャッシュコヒーレンスを実現する外部コヒーレンス処理部としての機能は、メモリ管理ユニット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 cache conversion unit 80 provided in the memory management unit 26. The cache conversion unit 80 realizes cache coherence between the processor modules based on the reference of the directory memory 30 through exchanges with other processor modules using the system buses 12-1 and 12-2.

プロセッサエレメント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 CPU 34 having a primary cache 36 in the CPU circuit 16-1, and are external to the CPU 34. A secondary cache 38 is connected. A secondary cache control module 35 is provided as a control unit for the secondary cache 38, and a tag memory 40 is connected to the secondary cache control module 35. The primary cache 36 of the CPU 34 is controlled by write through, and the secondary cache 38 is controlled by copy back.

2次キャッシュ制御モジュール35は、2次キャッシュ38のデータのアドレスと、そのエントリのキャッシュ状態を示す情報を、タグメモリ40に登録している。ここで2次キャッシュ38は、図5に示すように、キャッシュデータを256バイト他印のデータとして登録している。このためキャッシュ制御モジュール35は、256バイトのアドレス単位でキャッシュ登録を管理する。この2次キャッシュ38上の256バイト単位のデータをキャッシュライン100という。   The secondary cache control module 35 registers the data address of the secondary cache 38 and information indicating the cache state of the entry in the tag memory 40. Here, as shown in FIG. 5, the secondary cache 38 registers the cache data as data of 256-byte other mark. Therefore, the cache control module 35 manages cache registration in units of 256-byte addresses. The 256-byte data on the secondary cache 38 is referred to as a cache line 100.

したがって、タグメモリ40の中には256バイト単位のキャッシュライン100のアドレスが保持されている。更に本発明にあっては、256バイトのキャッシュライン100を64バイト単位のサブライン102−1〜102−4に分割して、サブライン102−1〜102−4ごとにキャッシュ状態を保持している。   Therefore, the tag memory 40 holds the address of the cache line 100 in units of 256 bytes. Further, in the present invention, the 256-byte cache line 100 is divided into 64-byte units of sublines 102-1 to 102-4, and the cache state is held for each of the sublines 102-1 to 102-4.

2次キャッシュ38は常にCPU34の1次キャッシュ36を包含するように制御される。スヌープバス22で接続されている例えば図3に示す4つのプロセッサエレメント14−1〜14−4における各キャッシュユニット18−1〜18−4間でのデータのコヒーレンスを保証するため、スヌープバス22によって2次キャッシュ38がスヌープされる。   The secondary cache 38 is always controlled to include the primary cache 36 of the CPU 34. In order to guarantee the coherence of data between the cache units 18-1 to 18-4 in the four processor elements 14-1 to 14-4 shown in FIG. 3, for example, connected by the snoop bus 22, the snoop bus 22 The secondary cache 38 is snooped.

スヌープバス22はパケットプロトコルによるバスで、2次キャッシュ38のスヌープを行うための機構としてスヌープ送受信ユニット42、スヌープバッファ44、コピーバックバッファ46およびプロセッサアクセスユニット48を有する。スヌープバス22には各種のスヌープコマンドが準備されている。スヌープバスはパケットプロトコルであるため、複数のアクセスを同時に進行させることができる。   The snoop bus 22 is a bus based on a packet protocol, and has a snoop transmission / reception unit 42, a snoop buffer 44, a copy back buffer 46, and a processor access unit 48 as a mechanism for snooping the secondary cache 38. Various snoop commands are prepared for the snoop bus 22. Since the snoop bus is a packet protocol, multiple accesses can proceed simultaneously.

2次キャッシュ38のスヌープは、スヌープバス22に接続されている各プロセッサエレメント14−1〜14−4の2次キャッシュ制御モジュール35で同時に行われ、その結果が同時にスヌープバス22上のプロセッサエレメント固有のキャッシュ状態信号に反映される。このキャッシュ状態信号は、スヌープバスに接続している全てのプロセッサエレメント14−1〜14−4とメモリモジュール25で参照される。   The snoop of the secondary cache 38 is simultaneously performed by the secondary cache control module 35 of each processor element 14-1 to 14-4 connected to the snoop bus 22, and the result is simultaneously assigned to the processor element on the snoop bus 22. This is reflected in the cache status signal. This cache status signal is referred to by all the processor elements 14-1 to 14-4 and the memory module 25 connected to the snoop bus.

メモリモジュール25側のスヌープバス22に対するユニットとしては、空間識別ユニット50、スヌープ送受信ユニット52およびスヌープバス送信ユニット60が設けられている。プロセッサエレメント14−1の2次キャッシュ制御モジュール35がキャッシュ状態信号によってキャッシュ状態を表示すると同様に、メモリモジュール25に設けているメモリ管理ユニット26も、主記憶を分割配置したローカルストレージ28の状態を表示するため、メモリ状態信号を持っている。このメモリ状態信号も、スヌープバス22内の全ての2次キャッシュ制御モジュール35に供給される。   As units for the snoop bus 22 on the memory module 25 side, a space identification unit 50, a snoop transmission / reception unit 52, and a snoop bus transmission unit 60 are provided. Similarly to the case where the secondary cache control module 35 of the processor element 14-1 displays the cache status by the cache status signal, the memory management unit 26 provided in the memory module 25 also indicates the status of the local storage 28 in which the main memory is divided and arranged. It has a memory status signal for display. This memory status signal is also supplied to all the secondary cache control modules 35 in the snoop bus 22.

このようなスヌープバス22上における2次キャッシュ38に関するキャッシュ状態信号と、メモリモジュール25に接続したローカルストレージ28のメモリ状態信号の内容から、プロセッサエレメント14−1〜14−4に設けた2次キャッシュ制御モジュール35のそれぞれは、CPU34のアクセスに対し応答を行うプロセッサエレメントの判定、アクセス対象となったキャッシュデータの最新値を書込権の所有状態で持っている所謂オーナーの決定、各種のスヌープコマンドの成否を判定する。   From the cache status signal related to the secondary cache 38 on the snoop bus 22 and the contents of the memory status signal of the local storage 28 connected to the memory module 25, the secondary cache provided in the processor elements 14-1 to 14-4 is provided. Each of the control modules 35 determines the processor element that responds to the access of the CPU 34, determines the so-called owner having the latest value of the cache data to be accessed in the possession state of the write right, and various snoop commands Determine success or failure.

更に、タグメモリ40に保持している2次キャッシュ38のキャッシュ状態の変更を必要に応じて行う。更に、1次キャッシュ36の無効化や2次キャッシュ38からのデータの応答を伴う場合もある。このようなスヌープバス22による一連の動作はパイプラインで制御される。   Further, the cache state of the secondary cache 38 held in the tag memory 40 is changed as necessary. Further, the primary cache 36 may be invalidated and a data response from the secondary cache 38 may be involved. A series of operations by such a snoop bus 22 is controlled by a pipeline.

2次キャッシュ38のキャッシュ状態信号による表示は、ビジー、ミス、クリーン、ダーティ、エラーの表示がある。ビジー表示は、受信コマンドが処理資源の枯渇で処理できない場合あるいはプロトコル上矛盾をきたすタイミングのときに表示される。ミス、クリーンおよびダーティ表示は、2次キャッシュ38のタグメモリ40のスヌープ結果である。   The display by the cache status signal of the secondary cache 38 includes busy, miss, clean, dirty, and error. The busy display is displayed when the received command cannot be processed due to the exhaustion of processing resources or when the protocol causes a contradiction. Miss, clean and dirty indications are snoop results of the tag memory 40 of the secondary cache 38.

即ち、ミス表示は、スヌープコマンドのアドレスで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 secondary cache 38 as a result of snooping the secondary cache 38 with the address of the snoop command. In the clean display, as a result of snooping the secondary cache 38, the same data as the contents of the local storage 28 is held in the secondary cache 38, and the data in which the contents of the local storage 28 are changed are 2 This is a case where it is held in the next cache 38.

更にダーティ表示は、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 local storage 28 is changed is retained in the secondary cache 38 as a result of snooping the secondary cache 38, and is changed by the owner of the local storage 28. This state is called the owner who has the write right because it is responsible for the reflection. Thus, cache coherence is maintained between the processor elements 14-1 to 14-4 by the snoop method using the snoop bus 22.

次にメモリモジュール25側を説明する。メモリモジュール25にはメモリ管理ユニット26が設けられ、メモリ管理ユニット26にメモリバス66を介してローカルストレージ28を接続し、また専用線を介してディレクトリメモリ30を接続している。ローカルストレージ28は4本のメモリバス66ごとに、メモリアクセスユニット68−1〜68−4と主記憶素子としてのSRAM70−1〜70−4を接続している。   Next, the memory module 25 side will be described. A memory management unit 26 is provided in the memory module 25, and a local storage 28 is connected to the memory management unit 26 via a memory bus 66, and a directory memory 30 is connected to the memory module 25 via a dedicated line. The local storage 28 is connected to the memory access units 68-1 to 68-4 and the SRAMs 70-1 to 70-4 as main memory elements for every four memory buses 66.

メモリバス66は32ビット幅のバスであり、2つのバスを同時にアクセスすることで、キャッシュラインにおけるサブラインの64ビット幅に一致する1ワードのデータのアクセスを行う。ローカルストレージ28は、4つのメモリバス66で4グループに分けられており、例えばメモリアクセスユニット68−1,68−2の2グループで1ワードのアクセスを行い、メモリアクセスユニット68−3と68−4で1ワードのアクセスを行うインターリーブ方式でアクセス可能としている。   The memory bus 66 is a 32-bit width bus, and by accessing the two buses simultaneously, one word of data corresponding to the 64-bit width of the sub-line in the cache line is accessed. The local storage 28 is divided into four groups by four memory buses 66. For example, two groups of memory access units 68-1 and 68-2 access one word, and the memory access units 68-3 and 68- 4 enables access by an interleave method in which one word is accessed.

メモリモジュール25は、空間識別ユニット50により、メモリユニット26により接続したローカルストレージ28のメモリ空間を全てのPM10−1〜10−5から参照可能な物理空間にマッピングすることができる。図6は図4の空間識別ユニット50のマッピング機能を示す。まずプロセッサエレメント14−1に設けたCPU34のCPU物理アドレス空間86は、例えば64GB(ギガバイト)のアドレス空間をもつ。   The memory module 25 can map the memory space of the local storage 28 connected by the memory unit 26 to a physical space that can be referred to by all the PMs 10-1 to 10-5 by the space identification unit 50. FIG. 6 shows the mapping function of the space identification unit 50 of FIG. First, the CPU physical address space 86 of the CPU 34 provided in the processor element 14-1 has, for example, an address space of 64 GB (gigabytes).

このうち先頭の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 control register space 88 used by the CPU. The last 60 to 64 GB area is allocated to the ROM space 92 of the CPU. The remaining 4 to 60 GB 56 GB area is a shared space 90 accessible by all the CPUs 34 provided in the PMs 10-1 to 10-5. When a CPU access (read access or write access) designating an arbitrary 36-bit physical address 94 occurs in the CPU, the 36-bit physical address 94 is sent to the space of the memory control module 25 via the snoop bus 22 by a snoop command. It is sent to the identification unit 50.

勿論、空間識別ユニット50にスヌープバス22を介して送られるのは、スヌープバス22で接続しているプロセッサエレメント14−1〜14−4のキャッシュ上に、アクセス対象となった物理アドレス94のキャッシュラインが存在しない場合である。   Of course, what is sent to the space identification unit 50 via the snoop bus 22 is the cache of the physical address 94 to be accessed on the cache of the processor elements 14-1 to 14-4 connected by the snoop bus 22. This is the case when the line does not exist.

空間識別ユニット50は、制御テーブル95を保持している。制御テーブル95には共有空間90のアドレス4GBから60GBのエントリが設けられ、このアドレスによるエントリに対応してID領域を設けている。対応ID領域には、共有空間90のアドレスが割り当てられたプロセッサモジュールを示す情報としてユニットIDが登録されている。このユニットIDは、物理的には、図2のシステムバス12−1,12−2にプロセッサモジュールを接続することのできるスロット番号を示している。   The space identification unit 50 holds a control table 95. The control table 95 is provided with entries from 4 GB to 60 GB in the shared space 90, and an ID area is provided corresponding to the entry by this address. In the corresponding ID area, a unit ID is registered as information indicating the processor module to which the address of the shared space 90 is assigned. This unit ID physically indicates a slot number in which a processor module can be connected to the system buses 12-1 and 12-2 in FIG.

この例にあっては、4GBから24GBのアドレスに対応してユニットID#00〜#07を登録している。対応ID領域には、ユニットIDに加えてプロセッサモジュールの実装と未実装を示す情報も登録されている。この例では、12〜16GBの物理アドレスをもつユニットID=#02のプロセッサモジュールは未実装となっていることがわかる。またユニットID=#00〜#03の4つについては4GB幅のアドレス領域が割り当てられているが、ユニットID=#04〜#03の4つにプロセッサモジュールについては1GB幅のアドレスが割り当てられている。   In this example, unit IDs # 00 to # 07 are registered corresponding to addresses from 4 GB to 24 GB. In the corresponding ID area, information indicating mounting and non-mounting of the processor module is registered in addition to the unit ID. In this example, it can be seen that the processor module of unit ID = # 02 having a physical address of 12 to 16 GB is not mounted. In addition, an address area having a 4 GB width is assigned to four unit ID = # 00 to # 03, but an address having a 1 GB width is assigned to a processor module to four unit ID = # 04 to # 03. Yes.

更に、制御テーブル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 physical address 94 issued by the CPU access exists in the address space of the local storage built in the processor module itself.

このような空間識別ユニット50に対するスヌープバス22からの36ビット物理アドレス94によるアクセスで、生成情報としてホーム情報96、ユニットID98、36ビット物理アドレス94が生成される。ホーム情報96は、アクセスされた物理アドレス94が自ホームか否か、即ち物理アドレス94がアクセスを起こしたプロセッサモジュール自身に存在するか否かを表わす。   By accessing the space identification unit 50 from the snoop bus 22 using the 36-bit physical address 94, home information 96, a unit ID 98, and a 36-bit physical address 94 are generated as generation information. The home information 96 indicates whether or not the accessed physical address 94 is its own home, that is, whether or not the physical address 94 exists in the processor module itself that caused the access.

ユニット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 physical address 94 exists. A specific example will be described as follows. As a 36-bit physical address 94 by CPU access, X'4. It is assumed that D00000.000 ′ has occurred. In this case, the unit ID = # 03 is generated from the corresponding ID area in the entry of the control table 95 of the space identification unit 50, and as indicated by the broken line on the right side, the home information 96 indicates that the PM itself is not home. not Home ", unit ID = # 03, physical address 94 X'4. D0000.0000 ′ is generated.

再び図4のメモリモジュール25を参照するに、メモリモジュール25はスヌープバス22を通してプロセッサエレメント14−1のCPU34からアクセスされ、またシステムバス12−1(12−2を含む)を通して、他のプロセッサモジュール10−2〜10−5に設けているCPU34からもアクセスされる。   Referring again to the memory module 25 of FIG. 4, the memory module 25 is accessed from the CPU 34 of the processor element 14-1 through the snoop bus 22, and other processor modules through the system bus 12-1 (including 12-2). It is also accessed from the CPU 34 provided in 10-2 to 10-5.

プロセッサモジュール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 bus 22, there is no cache between the processor modules 10-1 to 10-5. In other words, cache coherence is maintained in a directory system using the system buses 12-1 and 12-2. In order to realize the cache coherence by this directory system, the directory memory 32 stores one entry for each 256-byte cache line.

このディレクトリエントリは、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 secondary cache 38 is rewritten to become the latest data, and there is only old data on the local storage 28 from which the cache line is copied, and the rewritten processor element is the latest. Means you own the data.

シェアとは、キャッシュラインのデータがプロセッサモジュールによって参照されたことを示し、ローカルストレージ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 local storage 28 exists in the secondary cache 38 at the same time.

更にインバリッドとは、キャッシュラインが、どのプロセッサモジュールからも参照されず、また書き替えられていない状態を示す。   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 memory management unit 26. Even when the cache line is shared, the identification information of the processor module having a copy of the data in the local storage 28 is held in the memory management unit 26.

図7は、図4のメモリモジュール25に設けたメモリ管理ユニット26の詳細である。図7において、メモリ管理ユニット26には、バスアービタ74、メモリバス60を介してローカルストレージ28を接続したメモリバス制御ユニット76、専用線でディレクトリメモリ30を接続したディレクトリ制御ユニット78が設けられる。   FIG. 7 shows details of the memory management unit 26 provided in the memory module 25 of FIG. 7, the memory management unit 26 includes a bus arbiter 74, a memory bus control unit 76 connected to the local storage 28 via the memory bus 60, and a directory control unit 78 connected to the directory memory 30 via a dedicated line.

またメモリ管理ユニット26には、プロセッサモジュール間をディレクトリ方式を使ってキャッシュコヒーレンスを保つため、キャッシュ変換部80が設けられ、ローカルステートマシン81、ホームステートマシン82およびリモートステートマシン83を内蔵している。   In addition, the memory management unit 26 is provided with a cache conversion unit 80 for maintaining cache coherence between the processor modules using a directory system, and includes a local state machine 81, a home state machine 82, and a remote state machine 83. .

本発明のディレクトリ方式を使用したプロセッサモジュール間のキャッシュコヒーレンスの制御にあっては、アクセスを起動したプロセッサモジュールをローカルと呼び、アクセスしたアドレスをローカルストレージにもっているプロセッサモジュールをホームと呼ぶ。また、アクセスしたローカルストレージのアドレスがダーティ状態、即ちローカルストレージのアドレスに旧いデータしかなく他のプロセッサモジュールのキャッシュ上で最新データをキャッシュ上に所有しているプロセッサエレメントが属しているプロセッサモジュールをリモートと呼ぶ。   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 local state machine 80, the home state machine 82, and the remote state machine 84 provided in the cache conversion unit 80.

これら3つのステートマシン81,82,83に対応し、図4のメモリモジュール25には、バスアービタ74を経由して、それぞれのステートマシンの処理対象となるコマンドおよびデータを保持するためのバッファキューが設けられている。即ち、ローカルステートマシン80に対応してローカルアクセスバッファキュー54が設けられる。   Corresponding to these three state machines 81, 82, and 83, the memory module 25 of FIG. 4 has a buffer queue for holding commands and data to be processed by each state machine via the bus arbiter 74. Is provided. That is, a local access buffer queue 54 is provided corresponding to the local state machine 80.

ローカルアクセスバッファキュー54には、空間識別ユニット50で生成された図6の生成情報であるホーム情報Home、ユニットIDおよび36ビット物理アドレスが格納される。更に、ローカルアクセスバッファキュー54に対してはスヌープ送受信ユニット52より応答割込みINT が与えられ、またローカルアクセスバッファキュー54が一杯になると、フル状態を示す情報Fullをスヌープ送受信ユニット52に返している。   The local access buffer queue 54 stores home information Home, unit ID, and 36-bit physical address, which are generation information of FIG. 6 generated by the space identification unit 50. Further, a response interrupt INT is given to the local access buffer queue 54 from the snoop transmission / reception unit 52. When the local access buffer queue 54 is full, information Full indicating the full state is returned to the snoop transmission / reception unit 52.

ホームステートマシン82に対応しては、メモリモジュール25にホームアクセスバッファキュー56が設けられる。ホームアクセスバッファキュー56には、システムバス12−1,12−2を使用して発行されたローカルとなったプロセッサモジュールからのアクセスコマンド、所謂ホームコマンドが格納される。リモートステートマシン84に対応しては、リモートアクセスバッファキュー58が設けられる。リモートアクセスバッファキュー58には、ホームとなったプロセッサモジュールからシステムバス12−1,12−2を使用して発行されたアクセスコマンド、所謂リモートコマンドが格納される。   In correspondence with the home state machine 82, a home access buffer queue 56 is provided in the memory module 25. The home access buffer queue 56 stores an access command issued from the local processor module using the system buses 12-1 and 12-2, a so-called home command. Corresponding to the remote state machine 84, a remote access buffer queue 58 is provided. The remote access buffer queue 58 stores an access command issued from the processor module serving as a home using the system buses 12-1 and 12-2, a so-called remote command.

ローカルアクセスバッファキュー54に格納するローカルコマンドおよびホームアクセスバッファキュー56に格納するホームコマンドについては、メモリ管理ユニット26に設けているローカルステートマシン80およびホームステートマシン82のそれぞれでローカルストレージ28のアクセスを伴うが、リモートアクセスバッファキュー58のリモートコマンドはプロセッサエレメント14−1の2次キャッシュ38上のキャッシュラインを対象とするアクセスであるため、スヌープバス送信ユニット60によって直接、スヌープバス22に接続されている。   With respect to the local commands stored in the local access buffer queue 54 and the home commands stored in the home access buffer queue 56, the local state machine 80 and the home state machine 82 provided in the memory management unit 26 each access the local storage 28. However, since the remote command of the remote access buffer queue 58 is an access intended for the cache line on the secondary cache 38 of the processor element 14-1, it is directly connected to the snoop bus 22 by the snoop bus transmission unit 60. Yes.

次に、図7のメモリ管理ユニット26に設けたディレクトリ制御ユニット78および専用線で接続したディレクトリメモリ30の内容を説明する。   Next, the contents of the directory control unit 78 provided in the memory management unit 26 of FIG. 7 and the contents of the directory memory 30 connected by a dedicated line will be described.

図8は、メモリ管理ユニット26に設けたディレクトリ制御ユニット78に設けられるディレクトリエントリレジスタ104の内容であり、このディレクトリエントリレジスタ104の内容がディレクトリメモリ30に格納されたキャッシュラインごとのディレクトリエントリの読出結果である。したがってディレクトリエントリレジスタ104の内容は、これ即ちディレクトリメモリ30に記憶されたディレクトリエントリデータそのものの説明となる。   FIG. 8 shows the contents of the directory entry register 104 provided in the directory control unit 78 provided in the memory management unit 26, and the contents of the directory entry register 104 are read out for each cache line stored in the directory memory 30. It is a result. Therefore, the contents of the directory entry register 104 explain the directory entry data itself stored in the directory memory 30.

ディレクトリエントリレジスタ104は、下位8ビットにシェアードマップビット領域106を割り当てている。このシェアードマップビット領域106は、プロセッサモジュール内の主記憶であるローカルストレージ28のキャッシュラインに対応するデータが参照されて、いずれのプロセッサモジュールの2次キャッシュ上に存在するかを示すビットである。   The directory entry register 104 assigns the shared map bit area 106 to the lower 8 bits. The shared map bit area 106 is a bit indicating which processor module exists in the secondary cache by referring to the data corresponding to the cache line of the local storage 28 which is the main memory in the processor module.

このシェアードマップビット領域106に対しては、図9に示すシェアードマップビット対応レジスタ112が組み合わされ、更に、シェアードマップビット対応レジスタ112には図10のプロセッサモジュール構成レジスタ114が組み合わされる。   The shared map bit area 106 is combined with the shared map bit corresponding register 112 shown in FIG. 9, and the shared map bit corresponding register 112 is combined with the processor module configuration register 114 shown in FIG.

ディレクトリエントリレジスタ104のシェアードマップビット領域106はビットS0〜S7であり、このビットS0〜S7を1にセットすることで、シェアードマップビット対応レジスタ112で示されるプロセッサモジュール上にキャッシュラインのデータがシェア状態で存在することを示す。   The shared map bit area 106 of the directory entry register 104 is bits S0 to S7. By setting these bits S0 to S7 to 1, the cache line data is shared on the processor module indicated by the shared map bit corresponding register 112. Indicates that it exists in a state.

シェアードマップビット対応レジスタ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 map bit area 106 has only half of 8 bits of S0 to S7. Therefore, by storing the shared map bit in the shared map bit area 106 in the shared map bit corresponding register 112 in duplicate, the shared map bit can be expressed for a plurality of processor modules, and the bit of the directory entry register 104 is reduced. Is realized.

更に、シェアードマップビット領域106に格納するシェアードマップビットS0〜S7は、2次キャッシュ上では256バイトのキャッシュラインを4分割した64バイトのキャッシュサブラインごとに保持されている。これに対しシェアードマップビットは1ビットしかないことから、4つのキャッシュサブラインのシェア状態をORによって表わしている。   Further, the shared map bits S0 to S7 stored in the shared map bit area 106 are held for each 64-byte cache subline obtained by dividing the 256-byte cache line into four on the secondary cache. On the other hand, since the shared map bit has only one bit, the shared state of the four cache sublines is represented by OR.

この4つのサブラインのORによるシェアードマップビットの表現は、2次キャッシュのキャッシュコヒーレンスがスヌープ方式で実現されているため、シェア状態のキャッシュラインが存在するプロセッサエレメントを意識することなくアクセスでき、複数のサブラインのOR表現が可能となっている。   In the expression of the shared map bit by OR of these four sublines, since the cache coherence of the secondary cache is realized by the snoop method, it can be accessed without being aware of the processor element in which the cache line in the shared state exists. 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 module configuration register 114 of FIG. 1010 provided corresponding to the shared map bit correspondence register 112 of FIG. 9 is provided with a processor module mounting bit area 116 and a bus ID bit area 118. The bus ID bit area 118 stores bus IDs divided into system buses 12-1 and 12-2. Each system bus 12-1, 12-2 has 16 slots. Therefore, a maximum of 16 processor modules can be mounted.

プロセッサモジュール実装ビット領域116はユニットIDと同じスロット番号#00〜#15に1対1に対応したビット領域をもっており、実装状態でビット1がセットされ、未実装状態でビット0にリセットされている。   The processor module mounting bit area 116 has a bit area corresponding to the same slot number # 00 to # 15 as the unit ID, and bit 1 is set in the mounted state and reset to bit 0 in the unmounted state. .

図11は、ディレクトリエントリレジスタ104、シェアードマップビット対応レジスタ112およびプロセッサモジュール構成レジスタ114の具体的な対応関係を示している。まずプロセッサモジュール構成レジスタ114はプロセッサモジュール実装ビット領域116のみを示しており、ビット1にセットされたユニットIDが実装されたプロセッサモジュールを示している。   FIG. 11 shows a specific correspondence relationship between the directory entry register 104, the shared map bit correspondence register 112, and the processor module configuration register 114. First, the processor module configuration register 114 indicates only the processor module mounting bit area 116, and indicates a processor module in which the unit ID set in bit 1 is mounted.

この例ではユニット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 module configuration register 114 corresponds to the shared map bit correspondence register 112 on a one-to-one basis.

あるプロセッサモジュールの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 map bit area 106 is set to 1, and at the same time, the index information indicating the register area of the processor module in which the copy data of the shared map bit corresponding register 112 exists in the shared state and the bit 1 of the shared map bit area 106 is stored. 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 directory entry register 104 in FIG. 8 again, a dirty subline bit area 108 is provided after the shared map bit area 106. In the dirty subline bit area 108, bits D0 to D3 are allocated corresponding to four sublines obtained by dividing a 256-byte cache line.

このダーティサブラインビットD0〜D3は、ビット1にセットすることで、システム内のいずれかのプロセッサモジュールのキャッシュ上に、主記憶としてのローカルストレージ28の旧いデータに対し、書き替えられた最新データが存在することを表わしている。また、ダーティサブラインビット領域108がビット0にリセットされている場合には非ダーティ状態を意味する。   When these dirty subline bits D0 to D3 are set to bit 1, the latest data rewritten with respect to the old data in the local storage 28 as the main memory is stored in the cache of any processor module in the system. It shows that it exists. When the dirty subline bit area 108 is reset to bit 0, it means a non-dirty state.

この場合には主記憶としてのローカルストレージ28に最新データが存在し、シェアードマップビットS0〜S7で指定されるいずれかのプロセッサモジュール上に、シェア状態でそのコピーデータが存在することを意味する。データサブラインビットD0〜D3に関するプロセッサモジュールの識別情報は、主記憶としてのローカルストレージ28上の特定領域、例えば図6のCPU物理アドレス空間86における制御レジスタ空間88に格納されている。   In this case, it means that the latest data exists in the local storage 28 as the main memory, and the copy data exists in a shared state on any of the processor modules specified by the shared map bits S0 to S7. The identification information of the processor module regarding the data subline bits D0 to D3 is stored in a specific area on the local storage 28 as the main memory, for example, the control register space 88 in the CPU physical address space 86 of FIG.

図12は、ディレクトリエントリレジスタ104の具体的な内容を示す。まずシェアードマップビット領域は、システムバス12−1,12−2に対応してシェアードマップビット領域106−1と106−2に分けられている。ここで、システムバス12−1側についてのみプロセッサモジュールを実装しており、システムバス12−2側についてはプロセッサモジュールを未実装であった場合には、シェアードマップビット領域106−1側が実装プロセッサモジュール用に使用される。   FIG. 12 shows specific contents of the directory entry register 104. First, the shared map bit area is divided into shared map bit areas 106-1 and 106-2 corresponding to the system buses 12-1 and 12-2. Here, when the processor module is mounted only on the system bus 12-1 side and the processor module is not mounted on the system bus 12-2 side, the shared map bit area 106-1 side is mounted processor module. Used for.

シェアードマップビット領域106−1では、シェアードマップビットS3とS4にビット1がセットされている。この場合、図9に示したシェアードマップビット対応レジスタ112による対応で、例えばシェアードマップビットS3はユニットID=#03のプロセッサモジュールのキャッシュラインのデータの全サブラインのシェア情報のORを意味する。また、シェアードマップビットS4が同じく図9のシェアードマップビット対応レジスタ112による対応関係の指定で、例えばユニットID=#04のプロセッサモジュール上のあるプロセッサエレメントのキャッシュ上の全サブラインのシェア状態のORとなる。   In shared map bit area 106-1, bit 1 is set in shared map bits S3 and S4. In this case, the shared map bit correspondence register 112 shown in FIG. 9 corresponds to, for example, the shared map bit S3 means OR of the share information of all the sublines of the cache line data of the processor module of unit ID = # 03. Similarly, the shared map bit S4 is designated by the shared map bit corresponding register 112 in FIG. 9, and for example, the OR of the shared state of all sublines on the cache of a certain processor element on the processor module of unit ID = # 04 Become.

一方、ダーティサブラインビット領域108については、例えばダーティサブラインビットD1とD4がビット1にセットされ、D2とD3がビット0にリセットされている。このダーティサブラインビットD1〜D4に対応して、ローカルストレージ28にはプロセッサモジュール情報格納領域120,122,124,126が設けられている。   On the other hand, for the dirty subline bit area 108, for example, dirty subline bits D1 and D4 are set to bit 1 and D2 and D3 are reset to bit 0. Corresponding to the dirty subline bits D1 to D4, the local storage 28 is provided with processor module information storage areas 120, 122, 124, and 126.

例えばダーティサブラインビットD1のプロセッサモジュール情報領域120には、ユニットID=#01のプロセッサモジュールに存在するキャッシュ上にダーティ状態として最新データが存在することを示している。同様に、ビット1にセットされたダーティサブラインビットD4については、プロセッサモジュール情報領域126にユニットID=#02のプロセッサモジュールに存在するキャッシュ上にダーティ状態として最新データが存在することを示している。   For example, the processor module information area 120 of the dirty subline bit D1 indicates that the latest data exists in the dirty state on the cache existing in the processor module with the unit ID = # 01. Similarly, the dirty subline bit D4 set to bit 1 indicates that the latest data exists in the processor module information area 126 as a dirty state in the cache existing in the processor module of unit ID = # 02.

またビット0にリセットされたダーティサブラインビットD2,D3のプロセッサモジュール情報領域122,124については、このキャッシュラインの物理アドレスが存在する主記憶としてのローカルストレージに最新データがあり、いずれかのプロセッサモジュールのキャッシュ上に主記憶の最新データの参照によりコピーデータがシェア状態で存在することを示す。   As for the processor module information areas 122 and 124 of the dirty subline bits D2 and D3 reset to bit 0, the latest data is stored in the local storage as the main memory where the physical address of the cache line exists, and any of the processor modules Indicates that the copy data exists in the shared state by referring to the latest data in the main memory.

シェア状態でコピーデータが存在するプロセッサモジュールのユニット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 bit 1 of the shared map bit area 106-1. For example, information indicating the possibility that copy data exists in a shared state is stored on the processor modules of unit ID = # 03 and # 04.

またビット0にセットされたダーティサブラインビットD2,D3のプロセッサモジュール情報領域122,124の内容は、シェアード以外に非シェアードが格納される場合もあり、この場合には、対応する主記憶としてのローカルストレージにのみ最新データが存在することを示す。   Further, the contents of the processor module information areas 122 and 124 of the dirty subline bits D2 and D3 set to bit 0 may be stored as non-shared in addition to shared. In this case, the local memory as the corresponding main memory may be stored. Indicates that the latest data exists only in the storage.

次に、スヌープバス22のパケットを説明する。パケットは起動コマンドと応答コマンドに分類される。起動コマンドと応答コマンドは、基本的に対になっている。パケットはコマンドフェーズとデータフェーズからなる。コマンドフェーズは1クロックである。データフェーズは、コマンドとサイズによって0から8クロックまでの長さをとることができる。   Next, the packet of the snoop bus 22 will be described. Packets are classified into start commands and response commands. The start command and the response command are basically a pair. A packet consists of a command phase and a data phase. The command phase is 1 clock. The data phase can take a length from 0 to 8 clocks depending on the command and size.

起動コマンドのコマンドフェーズは、パケットの宛先を示す宛先フィールド、パケット処理について補助的な指示を含むフラグフィールド、処理対象のデータサイズを示すサイズフィールド、コマンドの種別を示すタイプフィールド、コマンドの処理対象のアドレスを示すアドレスフィールドから構成される。起動コマンドと応答コマンドの区別はタイプフィールドで識別する。   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 bus 22, but the bus clock is different. That is, the snoop bus is short because the bus line length is sufficient in the module housing, and has good electrical characteristics. For example, the clock frequency can be 60 MHz.

これに対しシステムバス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 bus 22 and the system buses 12-1 and 12-2 is adjusted by the protocol conversion function by the protocol management unit 24 shown in the memory module 25 of FIG. Yes.

図13は、スヌープバス22で使用されるコマンドの種類を、プロセッサ16、スヌープユニット20、メモリ管理ユニット26に分けて示している。   FIG. 13 shows the types of commands used in the snoop bus 22 separately for the processor 16, the snoop unit 20, and the memory management unit 26.

次に、図4のプロセッサエレメント14−1に設けているキャッシュ制御モジュール35側におけるキャッシュ状態の遷移を説明する。まず、2次キャッシュ制御モジュール35のタグメモリ40にキャッシュサブライン単位に保持されるキャッシュ状態には、図14に示す無効状態、シェアードクリーン状態、シェアードモディファイ状態、排他的ダーティ状態、シェアードダーティ状態の5つがある。   Next, the transition of the cache state on the cache control module 35 side provided in the processor element 14-1 of FIG. 4 will be described. First, cache states held in the tag memory 40 of the secondary cache control module 35 in units of cache sublines include the invalid state, shared clean state, shared modify state, exclusive dirty state, and shared dirty state shown in FIG. There is one.

無効状態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 secondary cache 38. The shared clean state SH & C is a state in which data having the same content as the local storage that is the main memory of the processor module serving as the home is held. In the shared modified state SH & M, the data on the main memory that is the home is old data that is not the latest data, the copy data exists in its own secondary cache, and other data in its own processor module This is a state in which only the latest data exists in the system due to the exclusive dirty state EX & D on the secondary cache.

排他的ダーティ状態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 cache control module 35 of FIG. First, the initial state is the invalid state INV of the block 130. In this state, when the primary cache 36 becomes a miss hit due to the read access of the processor, an access request is issued to the secondary cache state module 35. At this time, if the corresponding cache subline of the secondary cache 38 is in the invalid state INV, a command requesting data is sent to the snoop bus 22.

この場合、遷移状態はブロック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: Case 1 in which the block 150 transitions to the shared modify state SH & M and Case 2 in which the block 140 transitions to the shared clean state SH & C. In case 1, the shared modified state (SH & M) of the block 150 is a case where another processor element is in the exclusive dirty state EX & D or the shared dirty state SH & D and owns the accessed subline on the cache. Dirty is indicated by the cache status signal of any processor element.

そこで、ダーティが表示されたプロセッサエレメントのキャッシュ制御モジュール35が2次キャッシュ38をアクセスし、データ応答をスヌープバス22に発行する。このとき応答を行ったプロセッサエレメントでキャッシュ状態がブロック160の排他的ダーティ状態EX&Dであった場合には、ブロック170のシェアードダーティ状態SH&Dに遷移する。応答を受け取ったプロセッサエレメントは、キャッシュ状態をブロック150のシェアードモディファイ状態SH&Mへ遷移する。   Therefore, the cache control module 35 of the processor element displaying the dirty accesses the secondary cache 38 and issues a data response to the snoop bus 22. At this time, in the processor element which has made a response, when the cache state is the exclusive dirty state EX & D of the block 160, the state transits to the shared dirty state SH & D of the block 170. The processor element that has received the response transitions the cache state to the shared modify state SH & M in block 150.

一方、ケース2の場合は、プロセッサのリードアクセスの1次キャッシュにおけるミスヒットに対するアクセス要求に対し、他のプロセッサエレメントがブロック140のシェアードクリーン状態SH&Cか或いはブロック130の無効状態INVであった場合であり、キャッシュ状態信号およびメモリモジュール25側のメモリ状態信号はクリーン或いはミスが表示される。クリーン表示を行ったキャッシュ制御モジュール35は、キャッシュ状態信号を参照して、応答を作成すべきか否か判断する。   On the other hand, in the case 2, the other processor element is in the shared clean state SH & C in block 140 or the invalid state INV in block 130 in response to an access request for a miss hit in the primary cache of the read access of the processor. Yes, the cache status signal and the memory status signal on the memory module 25 side indicate clean or miss. The cache control module 35 that has performed the clean display refers to the cache status signal and determines whether or not a response should be created.

同様に、メモリ状態信号を参照したメモリモジュール25、即ちメモリモジュール25に設けているメモリ管理ユニット26も、メモリ状態信号を参照して、応答を作成すべきか否か判断する。応答すべきことを検出したモジュールが2次キャッシュ制御モジュール35であれば、2次キャッシュメモリ38にアクセスし、データの応答をスヌープバス22に発行する。応答すべきことを検出したモジュールがメモリモジュール25のメモリ管理ユニット26であれば、主記憶としてのローカルストレージ28へのアクセスを起動し、スヌープバス22に応答データを発行する。   Similarly, the memory module 25 that refers to the memory status signal, that is, the memory management unit 26 provided in the memory module 25 also refers to the memory status signal and determines whether or not a response should be created. If the module that has detected that it should respond is the secondary cache control module 35, it accesses the secondary cache memory 38 and issues a data response to the snoop bus 22. If the module that has detected that it should respond is the memory management unit 26 of the memory module 25, it activates access to the local storage 28 as the main memory and issues response data to the snoop bus 22.

このようにしてスヌープバス22から応答データを受け取ったアクセス元の2次キャッシュ制御モジュール35は、ブロック130の無効状態INVからブロック140のシェアードクリーン状態SH&Cに遷移する。
The access source secondary cache control module 35 that has received the response data from the snoop bus 22 in this way makes a transition from the invalid state INV of the block 130 to the shared clean state SH & C of the block 140.

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は、プロセッサモジュール10−1内の任意のCPUの読出アクセスP−RDに対し、キャッシュユニット群18の中の自己のキャッシュユニットでミスヒットし、且つスヌープバス22で接続した他の全てのキャッシュユニット18でミスヒットした場合である。
(1) Read mode 1
FIG. 16 shows a cache coherence protocol in read mode 1.
In the read mode 1, any other CPU read access P-RD in the processor module 10-1 misses in its own cache unit in the cache unit group 18 and is connected by the snoop bus 22. This is a case where a miss hit occurs in the cache unit 18.

この場合には、メモリ管理ユニット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 local storage 28 which is the main memory to the memory management unit 26. Here, since the read address is in the local storage 28 of the processor module 10-1, the processor module 10-1 becomes home, and any of the cache unit groups in the processor module 10-2 in which the data of the local storage 28 is remote. Suppose that it existed in a dirty state with the latest data.

このような場合、読出アクセスを発生したプロセッサモジュール10−1のメモリ管理ユニット26は、システムバス12にリモートコマンド220を発行して、プロセッサモジュール10−2にアクセスする。このリモートコマンド220を受領したプロセッサモジュール10−2のメモリ管理ユニット26は、スヌープバス22を介してダーティ状態Dにあるキャッシュユニットから最新データを取得した後に、システムバス12を使用して最新データをリプライデータ230として、ローカルで且つホームとなっているプロセッサモジュール10−1に応答する。   In such a case, the memory management unit 26 of the processor module 10-1 that has generated the read access issues a remote command 220 to the system bus 12 to access the processor module 10-2. The memory management unit 26 of the processor module 10-2 that has received this remote command 220 acquires the latest data from the cache unit in the dirty state D via the snoop bus 22, and then uses the system bus 12 to acquire the latest data. The reply data 230 is returned to the local and home processor module 10-1.

プロセッサモジュール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 reply data 230 obtained as a response of the system bus 12 in the access source cache unit via the snoop bus 22, and makes it respond as read data for the read access of the CPU. At the same time, cache coherence is realized by writing the latest data to the local storage 28 as the main memory. Here, in the cache unit of the processor module 10-2 that has received the remote command 220 and responded to the latest data, the dirty state D is updated to the clean state C. Further, for the directory memory that manages the cache data of the local storage 28 of the access source processor module 10-1, the dirty state D of the cache line that is the access target is updated to the share state S. Further, the invalid state I is updated to the clean state C for the access source cache unit.

(2)読出モード2
図17は読出モード2におけるキャッシュコヒーレンスのためのプロトコルを示す。この読出モード2は、任意のCPUの読出アクセスP−RDに対し自己のキャッシュユニットでミスヒットし、且つスヌープバス22で接続した他の全てのキャッシュユニットでミスヒットし、且つ読出アドレスが他のプロセッサモジュール10−2の主記憶であるローカルストレージ28にあり、このローカルストレージ28の読出アドレスのデータが別のプロセッサモジュール10−3のいずれかのキャッシュユニット上に最新データをもつダーティ状態Dで存在する場合である。
(2) Read mode 2
FIG. 17 shows a protocol for cache coherence in read mode 2. In this read mode 2, a read access P-RD of any CPU is missed in its own cache unit and missed in all other cache units connected by the snoop bus 22, and the read address is other than It exists in the local storage 28 which is the main memory of the processor module 10-2, and the data at the read address of the local storage 28 exists in a dirty state D having the latest data on any cache unit of another processor module 10-3. This is the case.

この場合、読出アクセスが起きたプロセッサモジュール10−2のメモリ管理ユニット26はローカルとして動作し、システムバス12にホームコマンド240を発行してプロセッサモジュール10−2にアクセスする。プロセッサモジュール10−2は、システムバス12から受領したホームコマンド240に基づき、読出アドレスによるディレクトリメモリの参照でプロセッサモジュール10−3のキャッシュ上にダーティ状態Dで最新データが存在することを認識し、システムバス12にリモートコマンド250を発行してプロセッサモジュール10−3にアクセスする。   In this case, the memory management unit 26 of the processor module 10-2 in which the read access has occurred operates as a local and issues a home command 240 to the system bus 12 to access the processor module 10-2. Based on the home command 240 received from the system bus 12, the processor module 10-2 recognizes that the latest data exists in the dirty state D in the cache of the processor module 10-3 by referring to the directory memory by the read address, A remote command 250 is issued to the system bus 12 to access the processor module 10-3.

プロセッサモジュール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 remote command 250 received from the system 12-2, the memory management unit 26 operates as a remote and accesses the cache unit in the dirty state D by the snoop bus 22 and acquires the latest data. Thereafter, the system bus 12 is used to reply the reply data 260 to each of the processor module 10-2 as the home and the processor module 10-1 as the local. The processor module 10-2 as the home performs the owner of the corresponding data in the local storage 28 as the main memory by using the reply data 260 obtained by the response of the system bus 12, and updates it to the latest data.

同時に、ローカルとしてのプロセッサモジュール10−1にあっては、システムバス12からの応答で受領したリプライデータ260をスヌープバス22を介してアクセス元のキャッシュユニットに転送して2次キャッシュ上に格納し、CPUの読出アクセスに対しリードデータとして応答させる。   At the same time, in the processor module 10-1 as a local, the reply data 260 received as a response from the system bus 12 is transferred to the access source cache unit via the snoop bus 22 and stored in the secondary cache. Then, it responds as read data to the CPU read access.

ここで、リモートとなったプロセッサモジュール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 subline bit area 108 of the directory entry register 104 in FIG. 8 is reset from 1 to 0. In addition, since the processor module 10-3 as a remote and the processor module 10-1 as a local are in a shared state where the same data as the data of the local storage 28 in the home exists in the shared state, the correspondence of the shared map bit area 106 Set the shared map bit to 1

更に、ローカルとなったプロセッサモジュール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 mode 3
FIG. 18 shows a cache coherence protocol in the read mode 3. In this mode, cache coherence using the snoop bus 22 is performed between the cache units inside the module in which the access has occurred. There are two cases of the reading mode, FIG. 18A and FIG.

図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 snoop bus 22 has This is a case where the latest data exists in the shared clean state SH & C. In this case, the cache unit 18-4 uses the snoop bus 22 to issue a command T-CR, the reply of the reply data 270 including the corresponding subline is performed from the cache unit 18-1, and the cache unit 18- 4 and responds to read access as read data.

このときアクセス元のキャッシュユニット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 snoop bus 22 in response to the read access P-RD from the CPU to the cache unit 18-4 in the invalidated state INV. This is a case where it exists in D, that is, a case where it exists in a state where the write right is owned. In response to the access T-CR from the cache unit 18-4 in this case, the reply data 280 including the subline of the latest data is similarly sent from the cache unit 18-1.

この場合、アクセス元のキャッシュユニット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 read modes 1 and 2 of FIGS. First, at step S1, the processor element receives a read access, and at step S2, it is determined whether or not there is a cache hit.

キャッシュミスヒットの場合には、ステップ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 bus 22, the reply data is received at step S16, and it is stored in the cache at step S13 and responds to the processor element. To do. Steps S15 to S17 are processing in the reading mode 3 in FIG.

一方、ステップ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 memory management unit 26 via the snoop bus 22 in step S5. On the memory management unit 26 side, first, in step S6, the space identification unit 50 shown in FIG. 4 determines the processor module space from the physical address of the command.

ステップS7で、リードアドレスが自分のプロセッサモジュールのローカルストレージ28の主記憶空間であった場合、ステップS8で、自らをホームとしてディレクトリメモリ30のディリクトリエントリからキャッシュステータスを取得する。キャッシュステータスについて、ステップS9で、サブラインがダーティか否かチェックし、ダーティであれば、ステップS10で、リモートプロセッサモジュールに対しシステムバスを介してリモートコマンドを送出する。   If the read address is the main storage space of the local storage 28 of the processor module in step S7, the cache status is acquired from the directory entry in the directory memory 30 in step S8 with the read address as the home. The cache status is checked in step S9 to see if the subline is dirty. If it is dirty, a remote command is sent to the remote processor module via the system bus in step S10.

このリモートコマンドに対しステップ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 local storage 28 as the main memory in step S12, and the dirty state is updated to the shared state. In step S13, the response is made to the access source cache unit, and the process ends. If the subline is not dirty in step S9, in step S22, data is read from the local storage 28 as the main memory and responded to the access source cache unit, and in step S23, the local storage 28 as the main memory is read. Turn on the shared bit of the subline.

またステップ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 read modes 1 and 2 of FIGS. First, in step S1, a home command is received. The home command may be received via the system bus, or may be received by the home command generated by itself when it is local and home.

ホームコマンドを受領すると、ステップS2で、自分自身をホームとしてディレクトリメモリ30からキャッシュラインのステータスを取得し、ステップS3で、サブラインがダーティか否かチェックする。サブラインがダーティであった場合には、ステップS4で、自分のプロセッサモジュール内のプロセッサエレメントのキャッシュ上に最新データがあるか否かチェックする。   When the home command is received, the status of the cache line is acquired from the directory memory 30 using itself as the home in step S2, and it is checked in step S3 whether the subline is dirty. If the subline is dirty, it is checked in step S4 whether or not there is the latest data on the cache of the processor element in the own processor module.

最新データが自分自身のキャッシュ上にあれば、ステップS5でスヌープバス22にコマンドを送出し、ステップS6でリプライを待って、ステップS7でリプライデータを主記憶としてのローカルストレージ28に書き込み、ディレクトリエントリのダーティ状態をシェアード状態に更新する。続いてステップS8で、ローカルプロセッサモジュールに対しリプライデータをシステムバスを使用して送出する。   If the latest data is on its own cache, a command is sent to the snoop bus 22 at step S5, a reply is waited at step S6, the reply data is written to the local storage 28 as the main memory at step S7, and a directory entry is entered. Update the dirty state to shared state. In step S8, reply data is sent to the local processor module using the system bus.

またステップ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 local storage 28 as the main memory to update the dirty state of the directory entry to the shared state.

一方、ステップS3でサブラインがダーティでなかった場合には、主記憶としてのローカルストレージ28から最新データを読み出して、システムバスを介してローカルプロセッサモジュールにリプライデータを送出し、処理を終了する。   On the other hand, if the subline is not dirty in step S3, the latest data is read from the local storage 28 as the main memory, the reply data is sent to the local processor module via the system bus, and the process is terminated.

(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 read modes 1 and 2 of FIGS. First, in step S1, when a remote command is received via the system bus, in step S2, the command is sent to the cache unit via the snoop bus by making itself remote. When a reply is received from the cache unit of the corresponding processor element, the reply data is received from the snoop bus 22 in step S4, and the reply data is sent to the home processor module and the local processor module via the system bus in step S5. To do.

(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 cache control module 35 acquires the status of the cache line from the tag memory 40 in step S3, and in step S4, it is determined whether or not there is a hit in the cache of another processor element. In this case, if it is a miss hit, the process proceeds to step S13, and processing for another processor module is performed by accessing the memory module 20 side.

ステップ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 bus 22 in step S6, reply data is received and responded to the cache in step S7, and the status is changed from the invalidation state INV to the shared clean state in step S8. Update to SH & C.

一方、他のプロセッサが排他的ダーティ状態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 bus 22 in step S9, the reply data is received and responded to the cache in step S10, and in step S11, The status is updated to the shared modified state SH & M.

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 mode 1
FIG. 23 shows a cache coherence protocol in the write mode 1. In this write mode 1, a write access P-WT of an arbitrary CPU of the processor module 10-1 misses in its own cache unit, and also misses in other cache units connected by the snoop bus 22. The write address is in the local storage 28 which is the main memory of the processor module 10-1, and the copy data of the write address in the local storage 28 is cached in the other processor modules 10-2 and 10-3. It is a case where it exists in a share state above.

この場合には、スヌープバス22を介して書込アクセスT−CRIを受けたプロセッサモジュール10−1のメモリ管理ユニット26は、自らをローカルおよびホームとし、キャッシュディレクトリの参照で、シェア状態にある全てのプロセッサモジュール10−2,10−3に対し、システムバス12を使用して無効化指令であるパージコマンド300を発行する。   In this case, the memory management unit 26 of the processor module 10-1 that has received the write access T-CRI via the snoop bus 22 makes itself local and home, and is in a shared state by referring to the cache directory. A purge command 300 that is an invalidation command is issued to the processor modules 10-2 and 10-3 using the system bus 12.

このパージコマンド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 memory management units 26 request invalidation of the memory units in the shared state C via the snoop bus 22. If the cache unit in the shared state is successfully invalidated, the processor modules 10-2 and 10-3 perform purge responses 310 and 320 independently using the system bus 12. The purge responses 310 and 320 include the cache status of the target cache line in the processor modules 10-2 and 10-3.

ホームとしてのプロセッサモジュール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 purge responses 310 and 320 from the system bus 12, and accesses the copy data of the write address of the local storage 28 as the main memory. Stored in the original cache unit and overwritten by write access. At this time, in the processor module 10-1 as the home, the share state S of the directory entry of the cache line to be accessed is updated to the dirty state D.

このように書込アクセスにあっては、アクセス元のキャッシュ上で主記憶としてのローカルストレージ28と同一データが上書きにより変更されて最新データとなることで、ローカルストレージ28のデータが旧いデータとなった状態で処理を終了し、ローカルストレージ28の旧いデータの最新データとのコヒーレンスは、既に説明したリードアクセスを通じて行われることになる。   As described above, in the write access, the same data as the local storage 28 as the main storage is changed by overwriting on the access source cache to become the latest data, so that the data in the local storage 28 becomes old data. In this state, the process ends, and the coherence of the old data in the local storage 28 with the latest data is performed through the read access described above.

(2)書込モード2
図24は、書込モード2によるキャッシュコヒーレンスのプロトコルを示す。書込モード2は、CPUアクセスが発生したプロセッサモジュール10−1のキャッシュユニットに、スヌープバス22で接続した他のキャッシュユニットに書込権を所有しないシェア状態Cで主記憶としてのローカルストレージ28と同一データが存在している場合であり、それ以外の状態は図23のモード1と同じである。
(2) Write mode 2
FIG. 24 shows a cache coherence protocol according to the write mode 2. In the write mode 2, the cache unit of the processor module 10-1 in which the CPU access has occurred, the local storage 28 as the main storage in the share state C in which the other cache units connected by the snoop bus 22 do not have the write right This is a case where the same data exists, and the other states are the same as in mode 1 of FIG.

この書込モード2にあっては、CPUの書込アクセスP−WTに基づいて、ホームとして動作したメモリ管理ユニット26よりシステムバス12を使用してリモートとしてのプロセッサモジュール10−2,10−3にパージコマンド300を発行すると同時に、これに並行して、同じプロセッサモジュール10内のキャッシュユニット群18に対しパージコマンド325を発行する。   In the write mode 2, the processor modules 10-2 and 10-3 as remote units using the system bus 12 from the memory management unit 26 operating as a home based on the write access P-WT of the CPU. At the same time, the purge command 325 is issued to the cache unit group 18 in the same processor module 10 at the same time.

このため、ホームとして動作したプロセッサモジュール10−1のメモリ管理ユニット26は、システムバス12を介してリモートとしてのプロセッサモジュール10−2,10−3からのパージ応答310,320の全ての応答と、自己のスヌープバス22からのパージ応答を受理したことで、無効化の成功を認識し、主記憶としてのローカルストレージ28の最新データのコピーデータをアクセス元のキャッシュユニットに格納して、CPUの書込アクセスにより上書きする。この場合にも、書込モード1と同様、ディレクトリエントリのシェア状態Sはダーティ状態Dに更新される。   For this reason, the memory management unit 26 of the processor module 10-1 operating as a home has all the responses of the purge responses 310 and 320 from the processor modules 10-2 and 10-3 as remote via the system bus 12, Receiving the purge response from its own snoop bus 22 recognizes the success of the invalidation, stores the copy data of the latest data in the local storage 28 as the main memory in the cache unit of the access source, and writes the CPU Overwrite by access. Also in this case, the share state S of the directory entry is updated to the dirty state D as in the write mode 1.

(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 mode 3
FIG. 25 shows a cache coherence protocol according to the write mode 3. In the write mode 3, the copy data is copied to any of the cache group 18 including the cache unit connected via the snoop bus 22 and the own cache unit with respect to the write access P-WT of the CPU of the processor module 10-1. Is not registered in the state where the owner is owned, becomes a miss hit, the write address is in the local storage 28 which is the main memory of the processor module 10-2, and the copy data of the latest data in the local storage 28 is the processor. This is a case where a plurality of processor modules 10-3 and 10-4 other than the module 10-2 exist in the share state C.

この場合、ローカルとしてのプロセッサモジュール10のメモリ管理ユニット26は、システムバス12を使用してホームとしてのプロセッサモジュール10−2に書込所有権の要求指令、所謂ホームコマンド330を発行する。書込所有権の要求指令であるホームコマンド330を受領したプロセッサモジュール10−2は、シェア状態にある他のプロセッサモジュール10−3,10−4に対し、システムバス12を使用して無効化指令としてのパージコマンド340を発行する。   In this case, the memory management unit 26 of the processor module 10 as a local uses the system bus 12 to issue a write ownership request command, a so-called home command 330, to the processor module 10-2 as a home. The processor module 10-2 that has received the home command 330 that is a write ownership request command uses the system bus 12 to invalidate the other processor modules 10-3 and 10-4 that are in the shared state. The purge command 340 is issued.

プロセッサモジュール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 cache group 18 in the shared state via the snoop bus 22 and succeed in the invalidation. The purge responses 350 and 360 are independently returned to the processor module 10-2 as the home using the system bus 12.

ホームとしてのプロセッサモジュール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 purge responses 350 and 360, the processor module 10-2 as the home uses the system bus 12 itself to recognize the success of the invalidation. Response of transfer of write ownership including the copy data of the latest data in the local storage 28 which is the main memory of the main storage.

ローカルのプロセッサモジュール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 system bus 12, in the cache unit of the access source, and overwrites it by the write access of the CPU. . Here, the memory management unit of the processor module 10-2 as the home that recognized the success of the invalidation and moved the write ownership, updates the share state S of the directory entry to the dirty state D. Further, in the access source cache unit of the processor module 10-1, the cache state is updated to the dirty state D having the write right at the end of the write access.

(4)書込モード4
図26は、書込モード4によるキャッシュコヒーレンスのプロトコルを示す。書込モード4は、ローカルとして動作するプロセッサモジュール10−1におけるCPUの書込アクセスP−WTに対し、自己のキャッシュユニットがミスヒットで、且つスヌープバス22を介して接続した他のキャッシュユニットにもコピーデータが書込権を所有した状態で登録されておらずにミスヒットとなり、書込アドレスがプロセッサモジュール10−2の主記憶であるローカルストレージ28にあり、更にローカルストレージ28の最新データのコピーデータがプロセッサモジュール10−2を含む複数のプロセッサモジュール10−3,10−4のキャッシュユニットにシェア状態Cで存在する場合である。
(4) Write mode 4
FIG. 26 shows a cache coherence protocol according to the write mode 4. In the write mode 4, the cache access to the CPU in the processor module 10-1 operating as the local is P-WT, and the cache unit of the processor module 10-1 is in a miss-hit and connected to another cache unit connected via the snoop bus 22. However, the copy data is not registered in the state of possessing the write right and becomes a miss hit, the write address is in the local storage 28 which is the main memory of the processor module 10-2, and the latest data in the local storage 28 is also stored. This is a case where copy data exists in the cache state of the plurality of processor modules 10-3 and 10-4 including the processor module 10-2 in the share state C.

この場合には、書込アクセスが発生したローカルとしてのプロセッサモジュール10−1のメモリ管理ユニット26が、ホームとしてプロセッサモジュール10−2に対しシステムバス12を使用して書込所有権の要求指令であるホームコマンド370を発行する。この書込所有権要求指令となるホームコマンド370を受領したプロセッサモジュール10−2のメモリ管理ユニット26は、シェア状態にある全てのプロセッサモジュール10−3,10−4に対し、システムバス12を使用して無効化指令としてのパージコマンド380を発行する。   In this case, the memory management unit 26 of the processor module 10-1 as the local where the write access has occurred uses the system bus 12 as a home to issue a request command for write ownership to the processor module 10-2. A certain home command 370 is issued. The memory management unit 26 of the processor module 10-2 that has received the home command 370 serving as the write ownership request command uses the system bus 12 for all the processor modules 10-3 and 10-4 in the shared state. Then, a purge command 380 as an invalidation command is issued.

このパージコマンド380の発行に並行して更に、メモリ管理ユニット26は、自己のシェア状態にあるキャッシュ群18の中のキャッシュユニットに対しスヌープバス22を使用して無効化指令としてのパージコマンド410を発行する。   In parallel with the issuance of the purge command 380, the memory management unit 26 uses the snoop bus 22 to issue a purge command 410 as an invalidation command to the cache units in the cache group 18 in its own share state. Issue.

キャッシュ上でシェア状態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 cache group 18 side via the snoop bus 22. If the invalidation is successful, the system bus 12 is used to independently return purge responses 350 and 360 to the processor module 10-2. In parallel with this, from the cache unit in the share state C of the processor module 10-2, success of invalidation is responded using the snoop bus 22.

ホームとなるプロセッサモジュール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 success purge responses 350 and 360 from the system bus 12 and the invalidation success response from the snoop bus 22. Then, using the system bus 12, the write ownership transfer including the copy data of the latest data in the local storage 28, which is its own main memory, is returned as reply data 430 to the local processor module 10-1.

プロセッサモジュール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 system bus 12 in the cache unit of the access source, and overwrites it by the write access of the CPU. Here, the processor module 10-2 updates the share state S of its own directory entry to the dirty state D when it recognizes the success of the invalidation and responds to the transfer of the write ownership.

(5)書込モード5
図27は、書込モード5によるキャッシュコヒーレンスのプロトコルを示す。この書込モード5は、プロセッサモジュール10−1のCPUの書込アクセスP−WTに対し自己のキャッシュユニットおよびスヌープバス22で接続した他のキャッシュユニットのキャッシュ群18にコピーデータが書込権を所有した状態で登録されておらずにミスヒットとなり、且つ書込アドレスがプロセッサモジュール10−1の主記憶であるローカルストレージ28にあり、更にローカルストレージ28の書込アドレスの最新データがプロセッサモジュール10−2のキャッシュユニットに書込権を所有したダーティ状態Dで存在する場合である。
(5) Write mode 5
FIG. 27 shows a cache coherence protocol according to the write mode 5. In this write mode 5, the copy data has the right to write to the cache group 18 of the other cache unit connected by the snoop bus 22 and the own cache unit with respect to the write access P-WT of the CPU of the processor module 10-1. It is not registered in the possessed state and becomes a miss hit, the write address is in the local storage 28 which is the main memory of the processor module 10-1, and the latest data of the write address in the local storage 28 is further stored in the processor module 10. -2 in the dirty state D in which the write right is owned by the cache unit.

この場合、ローカルおよびホームとしてのプロセッサモジュール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 system bus 12. To do. The processor module 10-2 receives a remote command 440 that is a write ownership request command from the system bus 12, and receives reply data indicating the transfer of write ownership including the latest data in the share state D on the cache unit. 450 responds to the processor module 10-1 using the system bus 12.

プロセッサモジュール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 memory management unit 26 of the processor module 10-1 receives the write ownership, it updates the dirty state D of the directory entry to the dirty state D ′ in which the latest data exists in its own cache.

(6)書込モード6
図28は、書込モード6によるキャッシュコヒーレンスのプロトコルを示す。この書込モード6は、プロセッサモジュール10−1のCPUによる書込アクセスP−WTに対し、自己のキャッシュユニットおよびスヌープバス22で接続した他のキャッシュユニットを含むキャッシュ群18にコピーデータが書込権を所有した状態で登録されておらずに、ミスヒットとなり、書込アドレスがプロセッサモジュール10−2の主記憶であるローカルストレージ28にあり、更にローカルストレージ28の書込アドレスの最新データがプロセッサモジュール10−3のキャッシュユニットに書込権を所有したダーティ状態Dで存在する場合である。
(6) Write mode 6
FIG. 28 shows a cache coherence protocol according to the write mode 6. In this write mode 6, copy data is written to the cache group 18 including its own cache unit and other cache units connected by the snoop bus 22 with respect to the write access P-WT by the CPU of the processor module 10-1. The right address is not registered and a miss hit occurs, the write address is in the local storage 28 which is the main memory of the processor module 10-2, and the latest data of the write address in the local storage 28 is the processor. This is a case where the cache unit of the module 10-3 exists in the dirty state D having the write right.

この場合に、ローカルとしてのプロセッサモジュール10−1のメモリ管理ユニット26は、システムバス12を使用して、書込所有権の要求指令となるホームコマンド460を発行する。ホームコマンド460を受領したホームとなるプロセッサモジュール10−2のメモリ管理ユニット26は、リモートとなるプロセッサモジュール10−3に対し、システムバス12を使用して、同じく書込所有権の要求指令であるリモートコマンド470を発行する。   In this case, the memory management unit 26 of the processor module 10-1 as a local uses the system bus 12 to issue a home command 460 serving as a write ownership request command. The memory management unit 26 of the processor module 10-2 serving as the home that has received the home command 460 uses the system bus 12 to issue a request for writing ownership to the processor module 10-3 serving as the remote. A remote command 470 is issued.

リモートコマンド470を受領したプロセッサモジュール10−3は、ダーティ状態Dにあるキャッシュユニットの最新データを含む書込所有権を、システムバス12を使用して、リプライデータ480としてホームであるプロセッサモジュール10−2およびローカルであるプロセッサモジュール10−1に応答する。   The processor module 10-3 that has received the remote command 470 uses the system bus 12 as a reply data 480 to give home ownership of the write ownership including the latest data of the cache unit in the dirty state D to the processor module 10- 2 and respond to the local processor module 10-1.

ホームであるプロセッサモジュール10−2は、書込所有権の応答であるリプライデータ480を受領して、書込所有権の移動を認識する。またローカルとなるプロセッサモジュール10−1は、リプライデータ480による書込所有権の受領で得られた最新データをアクセス元のキャッシュユニットに格納して、CPUの書込アクセスで上書きさせる。   The home processor module 10-2 receives the reply data 480 as a response to the write ownership, and recognizes the transfer of the write ownership. The local processor module 10-1 stores the latest data obtained by receiving the write ownership by the reply data 480 in the access source cache unit, and overwrites it by the CPU write access.

ここで、リモートとなるプロセッサモジュール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 mode 7
FIG. 29 shows a cache coherence protocol according to the write mode 7. This write mode 7 is a case where access is made between a plurality of cache units in the processor module 10-1. That is, for the write access P-WT of the CPU in the processor module 10-1, the own cache unit 18-4 has a miss-hit, but the write is written to another cache unit 18-1 connected via the snoop bus 22. This is a case where the latest data of the embedded address exists in the dirty state in which the write right is owned, that is, in the exclusive dirty state EX & D.

この場合、アクセス元のキャッシュユニット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 bus 22, and in response to this, the cache unit 18-1 responds with reply data 490 including the latest cache subline data. After being stored in the cache unit 18-4, it is overwritten by write access.

ここで、アクセス先のキャッシュユニット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 secondary cache 38 is determined in step S2, and if it is a cache hit, data is overwritten on the cache in step S14.

キャッシュミスヒットであればタグメモリ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 snoop bus 22. If there is the latest data in another cache, a command is sent to another processor element in step S15, a reply is waited in step S16, the latest reply data is overwritten in step S17, and the write access is terminated. To do.

ステップS14で、スヌープバス22で接続した他のプロセッサエレメントのキャッシュ上に最新データがなかった場合には、ステップS5で、ローカルコマンドをスヌープバス22を介してメモリ管理ユニット26に送出し、ステップS6で、空間識別ユニット50からプロセッサモジュール空間を判別し、ステップS7で、自分自身のプロセッサモジュール空間か否か判断する。   If there is no latest data in the cache of another processor element connected by the snoop bus 22 in step S14, a local command is sent to the memory management unit 26 via the snoop bus 22 in step S5, and step S6. Thus, the processor module space is determined from the space identification unit 50, and it is determined in step S7 whether or not it is its own processor module space.

自分自身のプロセッサモジュール空間であれば、ステップ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 directory memory 30 to see the status of the cache line with itself as the home. In step S9, it is checked whether or not the subline of the directory entry is dirty. If it is dirty, a purge is requested to the remote processor module via the system bus 12 in step S10.

このパージ要求に対しステップ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 directory memory 30 with itself as a home in step S2.

ステップ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 bus 22 in step S5, the new data is waited for a reply in step S6, and the cache is stored in the local storage 28 as the main memory in step S7. A new subline of a directory entry is set to a dirty state, and the latest data is sent as reply data to the local processor module in step S8.

ステップ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 bus 22, and in step S17, a reply is waited, and the flow proceeds to step S18. Update the directory entry share status to dirty. In step S19, the latest data in the local storage 28 as the main memory is sent as reply data to the local processor module.

図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 system bus 12 in step S1, a command is sent to the snoop bus 22 in step S2, and step S3. Then, a reply from the snoop bus 22 is awaited, and in step S4, a command for responding to the transfer of write ownership and the latest data are sent as reply data to the local processor module and the home processor module.

図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 snoop bus 22.

他のキャッシュ上に存在すれば、ステップ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 cache control module 35 refers to the tag memory 40 to acquire the cache line status. Then, it is checked whether or not the latest data exists in a state where the write right is owned on the cache of another processor element.

存在すればヒットと判定し、ステップ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 bus 22, and a write ownership request command is issued. If there is a reply in step S6, the reply data is stored and overwritten on the access source cache, and in step S8, the cache status is updated from the invalid state INV to the exclusive dirty state EX & D.

ステップ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. 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 main memory 28 has an address of data to be accessed. Since the data at the access address in the main memory 28 is not the latest data, the memory management unit 26 that manages the directory registers the dirty state D. The latest data of the access address data is held in the exclusive dirty state EX & D in the cache unit of the fourth processor element PE # 3 in the cache unit group 18 of the processor module 10-2.

この状態でプロセッサモジュール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 element PE # 3 of the processor module 10-1, and a write command P-WT for the same address is generated in the first processor module PE # 0 of the processor module 10-2. Suppose that it occurred.

プロセッサモジュール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 element PE # 1, the coherent write & invalidate CRI command is issued from the cache unit 18-1 to the snoop bus 22 as shown in a. Is done. In this case, since the data of the access address is recorded in the exclusive dirty state EX & D in the cache unit 18-4 of the fourth processor element PE # 3, the data from the cache unit of the fourth processor element PE # 3 is Data is supplied to one processor element PE # 0.

このようなプロセッサモジュール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 remote command 220 is sent to the system bus 12 based on the write access of the fourth processor element PE # 3 of the processor module 10-1, as shown in b. A remote command appears on the snoop bus 22 of the remote processor module 10-2.

このときa,cに示した内部のプロセッサエレメントPE#0,#3の間のアクセスが終了していれば問題ないが、アクセス中にリモートコマンドが現れるとバスビジーとなって、プロセッサモジュール10−1に対しシステムバス12を介してリトライを指示するためのリプライコマンド230がeのように送出される。   At this time, there is no problem if the access between the internal processor elements PE # 0 and # 3 shown in a and c is completed, but if a remote command appears during the access, the bus becomes busy and the processor module 10-1 In response to this, a reply command 230 for instructing a retry is transmitted via the system bus 12 as e.

このため、リプライコマンド230を受けたプロセッサモジュール10−1は、再度リモートコマンド220をプロセッサモジュール10−2に送出するリトライ動作を行うが、このときのプロセッサモジュール10−2の内部のアクセスによりスヌープバス22がビジーであると、再度リプライコマンド230によるリトライとなり、リトライが際限なく続く可能性がある。   For this reason, the processor module 10-1 that has received the reply command 230 performs a retry operation for sending the remote command 220 to the processor module 10-2 again. The snoop bus is accessed by the internal access of the processor module 10-2 at this time. If 22 is busy, the retry command 230 will be retried again, and the retry may continue indefinitely.

図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 bus 22, the busy period for each of the processor elements PE # 0 to PE # 3, and each Cache status signals CST0 to CST3 corresponding to the processor elements # 0 to # 3 are shown.

まず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 element PE # 0, the snoop bus 22 is occupied by the processor element PE # 0, and a coherent and invalidated CRT command is transmitted. In accordance with this CRT command, the busy state of the access target processor element PE # 0 is set. If the CRI command of the remote command #R from the external processor element 10-1 appears during the busy period of the processor element PE # 0 as the access destination as shown in b, the processor element PE # 0 as the access destination is busy. Since it is in the state, it becomes a busy response, and a reply command of a busy response to the remote command #R is sent to the processor module 10-1 at the timing d after 4 cycles, for example.

一方、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 element PE # 3 after the CRI command of the remote command #R of b, and data transfer from the processor element PE # 0 receiving the CRI command to the requesting processor element PE # 3 is performed. Done. After the data transfer based on the DT command of c is completed, the CRI command of the processor element PE # 1 appears on the snoop bus 22 as shown in e, and the same processor as the remote command #R whose access request destination is the busy reply. If it is the element # 0, the processor element PE # 0 is again busy.

このため、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 processor element # 0 that is the access request destination is busy. Since it is in the state, it becomes a busy reply to the remote command #R as in h.

そして、このようなリモートコマンド#Rに対するアクセス要求先のプロセッサエレメント#0のビジー状態によるリトライ指示が際限なく繰り返され、結局はプロセッサモジュール10−1からのアクセスがバスタイムアウトとなってエラー終了してしまう。   Then, the retry instruction due to the busy state of the processor element # 0 that is the access request destination for the remote command #R is repeated indefinitely. Eventually, the access from the processor module 10-1 is terminated due to a bus timeout. End up.

このような特定のキャッシュユニットにおけるアクセスの競合に対し本発明にあっては、プロセッサモジュールの各プロセッサエレメントの中に、自己のアクセス処理中にリモートコマンドを受けてリトライの指示を行ったことを記憶するフラグと、そのときのアクセスアドレスを保持するアドレスレジスタを設ける。   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 bus 22 of the processor module, a retry instruction is given once, but no other access is made for the remote command by the second retry. It has been rejected. Therefore, it is possible to perform processing that preferentially accepts access by the second remote command.

図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 element PE # 0 appears on the snoop bus 22 as shown in a, the processor element PE # 0 that issued this CRT command uses the processor element PE as shown in b. The address to be accessed on the # 3 side is stored in the register.

プロセッサエレメント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 element PE # 0 accompanying the CRI command of the processor element PE # 0, a retry instruction is issued to the remote command #R as shown by d Set a flag to indicate

この第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 element PE # 3 is performed and the use of the snoop bus 22 is released, the same processor element PE # 3 is sent from another processor element PE # 1 as in f. Assume that a CRI command is issued to the same address.

これに対し、1回目のリモートコマンド#Rに対しリトライ指示を行ったプロセッサエレメントPE#0は、リモートコマンドに対しリトライ指示を行ったことを示すフラグのセット状態と、そのときのアクセスアドレスを記憶保持していることから、fのプロセッサエレメントPE#1のCRIコマンドに対しgでバスビジーとなり、hでプロセッサエレメントPE#1に対するビジーリプライによってリトライを指示し、アクセス要求を拒否する。   On the other hand, the processor element PE # 0 that has given the retry instruction to the first remote command #R stores the set state of the flag indicating that the retry instruction has been issued to the remote command and the access address at that time. Therefore, the bus is busy with g for the CRI command of the processor element PE # 1 of f, the retry is instructed by busy reply to the processor element PE # 1, and the access request is rejected.

続いてiでリトライによるリモートコマンド#Rが現われると、このときアクセス要求先のプロセッサエレメントPE#0は空き状態にあることから、リモートコマンド#RのCRIコマンドによる処理が受け入れられ、リモート側に対するデータ転送に入る。このデータ転送を開始すると、その後のタイミングで、(10)に示すように、プロセッサエレメント#0に記憶されていたフラグ及びアクセスアドレスは順次初期化されて解除され、リトライを行ったリモートコマンド#Rに対する優先受付けを解除することになる。   Subsequently, when a remote command #R by retry appears at i, the processor element PE # 0 of the access request destination is in an empty state at this time, so the processing by the CRI command of the remote command #R is accepted, and data for the remote side is received. Enter transfer. When this data transfer is started, as shown in (10), the flag and access address stored in the processor element # 0 are sequentially initialized and released at a later timing, and the remote command #R that has been retried. Priority acceptance for will be canceled.

尚、図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 bus 22 can be adjusted appropriately.

5.コピーバックの書込所有権
図37は、プロセッサモジュール10−1のキャッシュユニットのいずれかで保有している最新データを、最新データのリプレースが発生した際に分散型の主記憶としてのローカルストレージ28にコピーバックするための書込所有権の移動に関する制御手順の説明図である。
5. Copyback Write Ownership FIG. 37 shows local storage 28 as distributed main storage when the latest data held in any of the cache units of the processor module 10-1 is replaced with the latest data. It is explanatory drawing of the control procedure regarding the transfer of the write ownership for copying back to (1).

いまプロセッサモジュール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 local storage 28 as the distributed main memory or the latest data, but the cache units 18-1, 18-1 of the four cache units connected to the memory management unit 26 by the snoop bus 22; Suppose that it exists in 18-4. Further, it is assumed that the cache unit 18-1 among the cache units 18-1 and 18-4 sharing the same latest data has the write ownership for copying back the latest data to the local storage 28.

この時のキャッシュ状態は、最新データ及び書込所有権を保有したキャッシュユニット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 memory management unit 26 indicates that the target data in the local storage 28 is in the dirty state D. Here, the cache unit 18-1 having the write ownership for copy back to the local storage 28 is referred to as an owner.

このような図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 bus 22. Further, the cache unit 18-1 having the write ownership transitions to the invalid state INV.

一方、最新データを保有しているが書込所有権を保有していないキャッシュユニット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 bus 22. Becomes the owner and transitions to the shared dirty state EX & D. For this reason, even if the latest data is replaced in the memory unit 18-1, the write ownership is transferred to another cache unit 18-4, and the copy back of the latest data to the local storage 28 is not performed at this time. .

書込所有権が移った後にキャッシュユニット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 memory management unit 26 holds the dirty state D for the data to which the write ownership is transferred. However, even if the write ownership is performed between the cache units 18-1 and 18-4, this dirty state is maintained as it is.

メモリ管理ユニット26のダーティ状態は、最新データをもつキャッシュラインが別のプロセッサモジュールに移って初めて移動することになる。またローカルストレージ28に対する最新データのコピーバックが行われると、ダーティ状態Dはクリーン状態Cに遷移する。   The dirty state of the memory management unit 26 is moved only when the cache line having the latest data is moved to another processor module. When the latest data is copied back to the local storage 28, the dirty state D transitions to the clean state C.

図37は、4つのキャッシュユニット18−1〜18−4の内の2つにローカルストレージ28の最新データが保有されている場合を例にとっているが、3つまたは4つのキャッシュユニットに最新データが保有されている場合には、書込所有権を委譲するキャッシュユニットが複数となるため、この場合には例えば図38に示す予め定めた順番に従った書込所有権の委譲が行われる。   FIG. 37 shows an example in which the latest data of the local storage 28 is held in two of the four cache units 18-1 to 18-4, but the latest data is stored in three or four cache units. If it is held, there are a plurality of cache units to which the write ownership is delegated. In this case, for example, the write ownership is delegated according to a predetermined order shown in FIG.

図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 cache unit # 0 has write ownership and the other three cache units # 1 to # 3 have the latest data, write ownership when cache unit # 0 is replaced The priorities for shifting are determined in the order of # 1, # 2, and # 3. For this reason, the write ownership is delegated to the cache unit # 1 having the highest priority. The next is cache unit # 2, and the last is cache unit # 3. Of course, the order of the cache units to which the write ownership is transferred can be determined as appropriate in addition to the unit identification numbers in FIG.

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 system bus 12 as a second shared bus. The system bus 12 is provided with a bus arbiter 502 that performs bus arbitration.

このような基本システム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 bus arbiter 503 is connected to the basic system 501. In contrast to the basic system 501, the extended system 506 uses the bus arbiter and the processor module having the same configuration. Further, the heterogeneous system 505 is connected to the system bus 12 of the basic system 501 via the heterogeneous bus expansion unit 540. The heterogeneous system 505 is connected to appropriate processing units 544-1 to 544-3 by a system bus 542. The heterogeneous subsystem 505 is a system that is completely different from the basic system 501 and the expansion system 506 that implement the cache coherence device according to the present invention, and constitutes, for example, an I / O system for an external storage device.

このようなサブシステム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 inter-subsystem connection unit 512. Similarly to the subsystem 500-1 side, the subsystem 500-2 side is also connected to its own system bus via an inter-subsystem connection unit.

ここで基本ユニット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 system bus 12 of the basic unit 501. In this embodiment, eight processor modules 10-1 to 10-5, inter-subsystem connection unit 512, heterogeneous bus expansion unit 540, and bus arbiter 502 are connected to the system bus.

システムバス12に接続可能なモジュールもしくはユニットに対しては、ユニットID#0〜#15が割り当てられる。例えばプロセッサモジュール10−1〜10−5にはユニットID(UID)#0〜#4が割り当てられ、サブシステム間接続ユニット512にはユニットID#6が割り当てられ、異種バス拡張ユニット510にはユニットID#8が割り当てられ、更にバスアービタ502にはユニットID#16が割り当てられている。   Unit IDs # 0 to # 15 are assigned to modules or units connectable to the system bus 12. For example, unit IDs (UID) # 0 to # 4 are assigned to the processor modules 10-1 to 10-5, a unit ID # 6 is assigned to the inter-subsystem connection unit 512, and a unit is assigned to the heterogeneous bus expansion unit 510. ID # 8 is assigned, and unit ID # 16 is assigned to the bus arbiter 502.

残りのユニットIDは空きとなっている。なおバス拡張ユニット504は単なるシステムバス12間のインタフェースであり、ユニットIDの指定は不要である。   The remaining unit IDs are empty. Note that the bus expansion unit 504 is merely an interface between the system buses 12, and it is not necessary to specify a unit ID.

バス拡張ユニット504を介して接続した拡張システム506のシステムバス12−10に接続しているバスアービタ502及びプロセッサモジュール510−1〜510−3についても、システムバス12−10に固有な16個のユニットIDが適宜に割り当てられている。更に異種サブシステム505については、基本システム501や拡張システム506とは全く異なった異種システム固有のユニットID#A,#B,#Cが割り当てられている。   The bus arbiter 502 and the processor modules 510-1 to 510-3 connected to the system bus 12-10 of the expansion system 506 connected via the bus expansion unit 504 are also 16 units unique to the system bus 12-10. An ID is appropriately assigned. Further, the heterogeneous subsystems 505 are assigned unit IDs #A, #B, and #C unique to the heterogeneous systems that are completely different from the basic system 501 and the extended system 506.

図40は、図39の基本システム501に設けているシステムバス12の信号線の構成である。図4040において、プロセッサモジュール12−1〜12−5とバスアービタ502の間は、基本的にはバスデータ線507とタグ制御線509で構成される。   FIG. 40 shows a configuration of signal lines of the system bus 12 provided in the basic system 501 of FIG. In FIG. 4040, the processor modules 12-1 to 12-5 and the bus arbiter 502 are basically composed of a bus data line 507 and a tag control line 509.

バスデータ線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, unit ID line 528, halt line 530, master right switching line 532, installation line 534, disconnect notification line 536. And a clock line 538.

このような図40のデータバス12の構成を更に詳細に説明すると次のようになる。まず共通データバス線514及びデータパリティ線516は、全てのプロセッサモジュール12−1〜12−5とバスアービタ502に共通に接続され、データ128ビット(16バイト),パリティ16ビット(1バイト)の並列伝送を双方向に行ってデータを授受する。   The configuration of the data bus 12 of FIG. 40 will be described in detail as follows. First, the common data bus line 514 and the data parity line 516 are connected in common to all the processor modules 12-1 to 12-5 and the bus arbiter 502, and parallel data 128 bits (16 bytes) and parity 16 bits (1 byte). Send and receive data through two-way transmission.

共通タグバス線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 bus arbiter 502. By referring to the signal of the common tag bus line 518, the type of data on the common data bus line 514 in the current bus cycle can be known. The types of data on the common data bus line 128 indicated by the common tag bus line 518 are as shown in FIG.

図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 bus arbiter 502, and will be clarified in the following description. ), Bus cycle switching, and data reception control.

図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 termination of the command and release of the bus use right. 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 bus arbiter 502, and the processor modules 12-1 to 12-12. A bus transfer request is made to the bus arbiter 502 from the −5 side.

通常の転送要求については、バスリクエスト線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 bus arbiter 502 by a combination of the bus request line 520 and the emergency bus request line 522. First, when both the bus request BRQ and the emergency bus request BRE are at the L level, it indicates that the unit of the slot with the unit ID #N is in an inoperative state.

次の緊急バスリクエスト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 bus arbiter 502 and each of the processor modules 12-1 to 12-5, and the bus arbiter 502 sends the signal of the bus grant line 524 to H. A level indicates that the use of the bus has been granted.

バス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 system bus 12 to which the processor modules 12-1 to 12-5 and the bus arbiter 502 are connected. The same value is set for all units connected to the same system bus. In the system configuration of FIG. 39, the bus ID # 1 is set to the system bus 102 of the basic system 501. On the other hand, the bus ID # 2 is set to the system bus 12-10 of the expansion system 506 connected via the bus expansion unit 504.

次に図40のユニットID線528を説明する。ユニットID線528は、バスアービタ502及びプロセッサモジュール12−1〜12−5のバス上での識別番号を設定する。図39にあっては、プロセッサモジュール10−1〜10−5にユニットID#1〜#5を設定し、バスアービタ502にユニットID#16を設定している。   Next, the unit ID line 528 in FIG. 40 will be described. The unit ID line 528 sets identification numbers on the bus of the bus arbiter 502 and the processor modules 12-1 to 12-5. In FIG. 39, unit IDs # 1 to # 5 are set for the processor modules 10-1 to 10-5, and unit ID # 16 is set for the bus arbiter 502.

このため、バス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 bus arbiter 502 in the entire system are uniquely determined by the combination of the bus ID and the unit ID by the bus ID line 526 and the unit ID line 528.

次に図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 bus arbiter 502 to all units including the processor modules 12-1 to 12-5, for example, in nine ways. By setting the halt line 530 to the H level, the bus arbiter 502 detects its own failure and stops. Indicates that it is in a state.

マスタ権切替線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 bus arbiter 502 is not mounted. When both the next halt HLT and the master right switching MFC are at the H level, an error occurs in the halt of the bus arbiter 502, that is, the self-diagnosis of the bus arbiter 502, and the bus arbiter 502 is notified that it is in a stopped state.

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 bus arbiter 502 holds the bus request, the bus grant GBR is detected. It means the timing to switch. When the last halt HLT is L level and the bus right switch MFC is H level, the bus grant GBR is forcibly switched. The bus grant switch when the bus arbiter 502 holds a bus request and the bus is not used. Give timing.

再び図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 bus arbiter 502, and is set to the L level to unit the bus arbiter 502. Notify that is implemented.

ディスコネクト通知線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 bus arbiter 502. By setting the disconnect notification line 536 to the L level, the bus arbiter 502 is notified that the unit is disconnected from the system bus 12.

(2)バスアビトレーション動作
次に図40のバスデータ線507とタグ制御線509で構成されるシステムバス12のバスアビトレーション動作を説明する。本発明のシステムバスのバスアビトレーション動作としては、ファーストモードとセーフティモードの2つのモードがある。また優先バスアビトレーションとしてバススレーブが優先バスアビトレーションを要求する場合と、バスアービタが優先バスアビトレーションを要求する場合とに分けられる。
(2) Bus Arbitration Operation Next, the bus arbitration operation of the system bus 12 composed of the bus data line 507 and the tag control line 509 in FIG. 40 will be described. The bus arbitration operation of the system bus according to the present invention includes two modes, a first mode and a safety mode. The priority bus arbitration is divided into a case where a bus slave requests priority bus arbitration and a case where a bus arbiter requests priority bus arbitration.

図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 bus arbiter 502 and the interface signal on the system bus 12 in the vertical axis direction with respect to the bus clock cycles T1, T2, T3,. They are shown separately. The internal operation of the bus arbiter 502 is a bus request hold operation. As interface signals on the system bus 12, a bus request, a bus grant, a tag bus, and a data bus are shown.

まずサイクル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 unit IDs # 0 and # 1 to a. At this time, since the data bus is in an idle state, the bus arbiter 502 monitors the rise of bus requests from all bus request sources.

aのようにユニットID#0,#1の2つのバスリクエスト信号がアサートされると、次のサイクルT2でbに示すように全てのリクエスト要求をホールドする。ここで複数のバスリクエストがあった場合には、ユニットIDの番号の若い方が優先順位が高いものとする。   When two bus request signals of unit IDs # 0 and # 1 are asserted as in a, all request requests are held as shown in b in the next cycle T2. Here, when there are a plurality of bus requests, it is assumed that the lower unit ID number has a higher priority.

このためバスアービタ502は、アイドル状態からの優先順位の高いユニットID#0に対するバスグラント信号を、cに示すように、マスタ権切替信号と共にアサートする。続いてバスアービタ502は、次のサイクルT3で、バスの使用権を許可したユニットID#0のバスリクエストのホールド要求を破棄すると同時に、他のホールド要求があればバスグラント信号を切り替える。   For this reason, the bus arbiter 502 asserts the bus grant signal for the unit ID # 0 having a higher priority from the idle state together with the master right switching signal as shown in c. Subsequently, in the next cycle T3, the bus arbiter 502 discards the hold request for the bus request of the unit ID # 0 permitted to use the bus, and at the same time switches the bus grant signal if there is another hold request.

このときユニット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 unit ID # 1, the bus request signal is switched to unit ID # 1. As described above, the unit ID # 0 as the bus master that has been permitted by the bus grant signal and the master right switching signal from the bus arbiter 502 starts data transfer from the next cycle T3. From this cycle T3, the tag bus signal indicates one of the tag bus codes 010, 100 or 110 (CC, SC & C, MC & S) shown in FIG. In this case, since data is sent in a plurality of bus clock cycles, the tag bus code is the start of a 110 (MC & S) multiword command.

このようなサイクル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 unit ID # 1 according to the bus grant signal at this time. From the next cycle T6, data transfer from the unit ID # 1 that has become the bus master is started. Here, the tag bus code of the tag bus indicating the end of data transfer is one of 001, 011, 101 (CE & E, retry, SC & E) in FIG.

一方、バスアービタ502はサイクルT2で一旦保持したユニットID#1からのバスリクエストの処理中に、例えばサイクルT3,T4のように他のユニットID#0,#2からのバスリクエストの立上がりを検出すると、それぞれのバスリクエストを別途記憶する。そしてサイクルT5のように、ホールド要求がないときのタグバスによる終了通知のタイミングで、eのように、ユニットID#0,#2の新たなバスリクエストをホールドする。   On the other hand, when the bus arbiter 502 detects the rise of the bus request from the other unit IDs # 0 and # 2 during the processing of the bus request from the unit ID # 1 once held in the cycle T2, for example, the cycles T3 and T4. Each bus request is stored separately. Then, as shown in e, new bus requests of unit IDs # 0 and # 2 are held at the timing of completion notification by the tag bus when there is no hold request as in cycle T5.

更にサイクル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 unit ID # 0 of the cycle T4 is a single command. Therefore, when the data transfer of the unit ID # 1 is completed in the cycle T8, the lower order issued in the cycle T3 is performed in the next cycle T9. Prior to the bus request of unit ID # 2, data transfer of a single command of unit ID # 0 is performed. Since the data transfer of the single command means the end of the transfer at the same time, the bus request held by the unit ID # 1 in cycle T6 is held as shown in f of cycle T10.

図44のファーストモードのバスアビトレーションにあっては、バスアービタ502にバスリクエストがホールドされている限り、データバスに空きサイクルを生ずることなく連続的にバス転送が行われ、空きサイクルを発生しないことでバス転送速度を高めることができる。   In the fast mode bus arbitration shown in FIG. 44, as long as a bus request is held in the bus arbiter 502, the bus transfer is continuously performed without generating an empty cycle on the data bus, and no empty cycle is generated. Can increase the bus transfer speed.

図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 unit IDs # 0 to # 2 similar to the first mode of FIG. 44 is made is taken as an example.

セーフティモードにあっては、バスアービタ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 bus arbiter 502, the data transfer is started after one idle cycle. Yes.

即ち、サイクルT1におけるaのバスリクエストに対し、サイクルT2でbのようにバスアービタ502のバスリクエストのホールドが行われ、優先順位の高いユニットID#0に対するバスグラント信号と更にマスタ切替信号をcのようにアサートすると、次のサイクルT3をアイドルサイクルとした後、サイクルT4よりデータ転送を開始する。   That is, the bus request of the bus arbiter 502 is held for the bus request a in cycle T1 as in b in cycle T2, and the bus grant signal for the higher priority unit ID # 0 and further the master switching signal are set to c. In this way, after the next cycle T3 is set as an idle cycle, data transfer is started from cycle T4.

このサイクル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 unit ID # 0 is completed, and for the data transfer by the bus grant signal of the unit ID # 1 at that time, after providing an idle period of one cycle of the cycle T7, as shown in f Data transfer has started.

このようにバスアービタ502からデータ転送の許可を受けてデータ転送開始までの間に1サイクルのアイドル期間を置く以外の動作は、図44のファーストモードと同じである。   The operations other than the one-cycle idle period between the time when data transfer permission is received from the bus arbiter 502 and the start of data transfer are the same as in the fast mode of FIG.

図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 unit IDs # 0 to # 2 are simultaneously made in an idle state. When all bus requests are held in the bus arbiter 502 in the next cycle T2, priority is given. A bus grant signal is output from the bus arbiter 502 to the unit ID # 0 having the highest rank.

同時にマスタ権切替信号もアサートされることで、サイクル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 unit ID # 0, which has become a bus master from cycle T3, to unit ID # 3 as a bus slave, for example. If an error is detected in unit ID # 3, which is a bus slave, in cycle T4 during this data transfer, both a bus request signal and an emergency bus request signal are output from unit ID # 3 to bus arbiter 502 as a. The

サイクルT6のバスリクエスト信号及び緊急バスリクエスト信号を受けたバスアービタ502は、バスリクエストを最優先でホールドすると同時に、bのように、バスを早期に切り替えるためにバスグラントを、エラー検出を行ったユニットID#3に切り替える。このためサイクルT8でデータ転送が終了すると、このときバスグラント信号が有効となっているエラー検出を行ったバススレーブとしてのユニットID#3をバスマスタに切り替え、サイクルT9で、cのように、エラーを検出したバスマスタのユニットID#3からエラーリプライを行わせる。   The bus arbiter 502 that has received the bus request signal and the emergency bus request signal in cycle T6 holds the bus request with the highest priority, and at the same time, as in b, a unit that performs error detection for the bus grant to switch the bus early. Switch to ID # 3. Therefore, when the data transfer is completed in cycle T8, the unit ID # 3 as the bus slave that has detected the error for which the bus grant signal is valid at this time is switched to the bus master, and in cycle T9, as shown in c, an error occurs. The error reply is performed from the unit ID # 3 of the bus master that detected the error.

このときバスアービタ502内の最優先のホールド要求は破棄され、次のサイクルT10からは通常のアビトレーションを続行する。ここで、バススレーブ側で検出するエラーには物理バッファフル等のブロック検出も含まれている。このようにバス転送中にバススレーブ側でエラー検出が行われると、次のバス転送に切り替える前に強制的にエラー検出を行ったバススレーブがバスマスタに切り替わってエラーリプライを行うことができ、バス転送中のエラーを迅速に検出してリトライ等の対応処置をとることができる。   At this time, the highest priority hold request in the bus arbiter 502 is discarded, and normal arbitration is continued from the next cycle T10. Here, errors detected on the bus slave side include block detection such as physical buffer full. When error detection is performed on the bus slave side during bus transfer in this way, the bus slave that forcibly detected the error before switching to the next bus transfer can switch to the bus master and perform error reply. It is possible to quickly detect an error during transfer and take a countermeasure such as retry.

図47は、バススレーブ側が確定する前のバス転送中に起きたエラーをバスアービタ502で検出した場合のエラーリプライのための優先バスアビトレーションのタイムチャートである。即ち本発明のバス転送にあっては、スプリット型のパケット転送を採用しており、パケットの第1ワードとしてコマンドワードを転送するため、コマンドワードの宛先フィールドの解読が終了しないとバススレーブが確定しない。   FIG. 47 is a time chart of priority bus arbitration for error reply when the bus arbiter 502 detects an error that has occurred during bus transfer before the bus slave side determines. That is, in the bus transfer of the present invention, split-type packet transfer is adopted, and the command word is transferred as the first word of the packet. Therefore, if the decoding of the destination field of the command word is not completed, the bus slave is determined. do not do.

このバススレーブが確定するまではバスアービタ502でバス転送のエラーを監視し、エラーを検出するとスレーブの代わりにバスアービタ502がエラーリプライを行うようになる。   Until the bus slave is determined, the bus arbiter 502 monitors a bus transfer error, and when an error is detected, the bus arbiter 502 performs error reply instead of the slave.

図47にあっては、サイクルT1のユニットT1のユニットID#0〜#2からのバスリクエストがあると、サイクルT2で全てバスアービタ502がホールドする。そして優先順位の最も高いユニットID#0について、バスグラント信号を有効とすると共にマスタ権切替信号をアサートし、次のサイクルT3からデータ転送を開始する。   In FIG. 47, when there is a bus request from the unit IDs # 0 to # 2 of the unit T1 in the cycle T1, the bus arbiter 502 is all held in the cycle T2. For the unit ID # 0 having the highest priority, the bus grant signal is validated and the master right switching signal is asserted, and data transfer is started from the next cycle T3.

このサイクルT2において、バスアービタ502はaのように、バス使用許可を与えたバスマスタを示すユニットID#0のバスマスタフラグをもっており、このバスマスタフラグをユニットID#0のサイクルT3〜T8に亘るバスサイクル期間中ホールドしておく。   In this cycle T2, the bus arbiter 502 has a bus master flag of unit ID # 0 indicating the bus master that has given permission to use the bus, as in a, and this bus master flag is used for the bus cycle period extending from cycle T3 to T8 of unit ID # 0. Hold inside.

バスマスタであるユニットID#0からのデータ転送中のサイクルT5で、bのようにアービタ502がエラーを検出した場合、例えばパケットヘッダのパリティエラーを検出した場合、そのエラー内容を保持すると同時にバスアービタ502の内部に自分自身の緊急バス要求フラグをcのようにセットする。尚、エラー検出が行われたサイクルT5は、バスマスタとしてのユニットID#01が、連続した複数のバスコマンドを転送中にエラーを検出した例である。   When the arbiter 502 detects an error as in b in cycle T5 during data transfer from the unit ID # 0 as the bus master, for example, when detecting a parity error in the packet header, the bus arbiter 502 holds the error content and at the same time. Set its own emergency bus request flag as shown in c. The cycle T5 in which the error detection is performed is an example in which the unit ID # 01 as the bus master detects an error while transferring a plurality of continuous bus commands.

続いてバスアービタ502は、自分自身のセットした緊急要求バスフラグcにより、現在ホールドしている他のバスリクエストをマスクし、ホールド中のバスリクエストについてバスグラントをアサートしないようにする。そしてサイクルT8でバスマスタをユニットID#0としたデータ転送を検出すると、このバスマスタ切替タイミングでバスアービタ502自身がバスマスタとなって、dのようにサイクルT9でエラーリプライを転送する。   Subsequently, the bus arbiter 502 masks other currently held bus requests by the emergency request bus flag c set by itself, and does not assert the bus grant for the bus request being held. When data transfer with the bus master as unit ID # 0 is detected in cycle T8, the bus arbiter 502 itself becomes the bus master at this bus master switching timing, and an error reply is transferred in cycle T9 as in d.

即ち、バス上には現われないバスアービタ502の内部でのアビトレーションにより、バスアービタ502自身がバスマスタとなってエラーリプライを行うことになる。このようなバスアービタ502のエラーリプライが済むと、同時にバスアービタ502内でセットした緊急バス要求フラグ及びバスマスタフラグが破棄され、次のバスマスタとしてのユニットID#1への切替えがバスグラントにより行われ、次のサイクルT10から通常のアビトレーションを実行する。
That is, due to the arbitration within the bus arbiter 502 that does not appear on the bus, the bus arbiter 502 itself becomes the bus master and performs error reply. When such an error reply of the bus arbiter 502 is completed, the emergency bus request flag and the bus master flag set in the bus arbiter 502 are discarded at the same time, and the switching to the unit ID # 1 as the next bus master is performed by the bus grant. Normal arbitration is executed from cycle T10.

(3)バス転送シーケンス
次に図40のシステムバス12上におけるバスコマンド及びデータの転送シーケンスを説明する。図48はユニット#1からユニット#2にメモリの読出要求を行うときの転送シーケンスである。ここで読出要求元のユニット#1をソースユニットとし、読出要求先のユニット#2を宛先ユニット(ディストネーションユニット)とする。
(3) Bus Transfer Sequence Next, a bus command and data transfer sequence on the system bus 12 in FIG. 40 will be described. FIG. 48 shows a transfer sequence when a memory read request is made from unit # 1 to unit # 2. Here, the read request source unit # 1 is a source unit, and the read request destination unit # 2 is a destination unit (destination unit).

まず要求元のユニット#1は、コマンド内容、要求元、要求先、転送バイト数及びアクセスアドレスを指定したパケットヘッダを、バスコマンドとして送信する。このパケットヘッダはバスコマンドの第1ワードを構成する。具体的には、ユニット#1はパケットヘッダのコマンドフィールドにメモリリードを指定し、ソースフィールドに要求元となる自分自身のユニットID#1を指定し、宛先フィールドに要求先のユニットID#2を指定する。   First, the request source unit # 1 transmits, as a bus command, a packet header specifying the command contents, the request source, the request destination, the number of transfer bytes, and the access address. This packet header constitutes the first word of the bus command. Specifically, unit # 1 designates memory read in the command field of the packet header, designates its own unit ID # 1 as the request source in the source field, and designates unit ID # 2 of the request destination in the destination field. specify.

更に転送バイト数を示すサイドのフィールドに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 unit # 1 only specifies the read request destination unit ID # 2 in the first destination field. It is. The system bus is released when transmission of the packet header from unit # 1 is completed, and the right to use the bus is transferred to the next assigned unit.

読出要求先となるユニット#2にあっては、システムバス上の転送パケットを受信してその宛先フィールドのIDを識別しており、自分自身が指定されたパケットであればそれを受信し、受信パケットで指定された処理即ちユニット#1からのパケットヘッダで指定されたメモリのリード処理を開始する。ユニット#2において、要求されたリードデータが準備できたならば、bに示すリプライバスコマンドとデータを作成して返送する。   In unit # 2, which is the read request destination, the transfer packet on the system bus is received and the ID of the destination field is identified. If the packet itself is designated, it is received and received. The process designated by the packet, that is, the memory read process designated by the packet header from unit # 1 is started. When the requested read data is ready in unit # 2, the reply bus command and data shown in b are created and returned.

このリプライバスコマンドの第1ワードは、ソースフィールドに自分自身のユニットID#2を指定し、宛先フィールドに要求元のユニットID#1を指定し、コマンドフィールドはリプライコマンドであることを指定し、更に必要に応じたステータス情報を付加して送出する。リプライバスコマンドのパケットヘッダである第1ワードの送出が済むと、続けて指定バイト数16バイト分のデータを返送する。この実施例において、データバス幅は16バイトであることから、2ワードのリプライバスコマンドは2バスサイクルで転送を終了する。   The first word of this reply bus command specifies its own unit ID # 2 in the source field, specifies the requesting unit ID # 1 in the destination field, specifies that the command field is a reply command, Furthermore, status information is added as necessary and transmitted. When the first word, which is the packet header of the reply bus command, has been sent, the data for the designated number of bytes of 16 bytes is returned. In this embodiment, since the data bus width is 16 bytes, a 2-word reply bus command completes transfer in two bus cycles.

図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 source unit # 1 creates and transfers a packet header as the first word of the bus command to the write request destination unit # 2, and writes, for example, 32-byte data following the packet header. In this case, a 2-word data packet is transferred in units of 16 bytes.

第1ワード目のパケットヘッダには、ソースフィールドを自分自身のユニットID#1とし、宛先フィールドを書込相手先のユニットID#2とし、コマンドフィールドにメモリライトを指定し、更にアドレスフィールドに32バイトアドレスを指定して、バスに送出する。   In the packet header of the first word, the source field is the unit ID # 1 of itself, the destination field is the unit ID # 2 of the write partner, the memory write is specified in the command field, and the address field is 32. Specify byte address and send to bus.

書込要求先のユニット#2にあっては、宛先フィールドで自分自身のユニットID#2を指定したパケットであればそのパケットを受信し、コマンドフィールドで指定された書込処理を開始する。書込処理が終了すると、bのように、書込要求元のユニット#1に対するリプライバスコマンドを作成して処理のステータスを返送する。   In the write request destination unit # 2, if the packet specifies its own unit ID # 2 in the destination field, the packet is received and the writing process specified in the command field is started. When the write process is completed, a reply bus command for the write request source unit # 1 is created and the process status is returned as shown in b.

即ち、リプライバスコマンドはソースフィールドを自分自身のユニットID#2、宛先フィールドを書込要求元のユニットID#1、コマンドフィールドをリプライとし、更にステータスフィールドに例えば書込正常を示すステータスをセットして返送するようになる。     That is, in the reply bus command, the source field is its own unit ID # 2, the destination field is the unit ID # 1 of the write request source, the command field is reply, and further, for example, a status indicating normal writing is set in the status field. Will be returned.

図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, unit # 1 transfers a cache invalidation bus command for cache coherent to units # 2, # 3, and # 4 as a broadcast command.

まずキャッシュインバリデートの要求元のユニット#1は、ブロードキャストバスコマンドのパケットヘッダにつき、ソースフィールドに要求元のユットID#1を指定し、ブロードキャストフィールドに要求先となるユニット#2,#3,#4の3つを指定する。更にコマンドフィールドにキャッシュインバリデートを指定し、更にアクセスアドレスを指定して送出する。   First, the request unit # 1 of the cache invalidation specifies the requesting unit ID # 1 in the source field and the requesting units # 2, # 3, # in the broadcast field for the packet header of the broadcast bus command. Specify 3 of 4. Furthermore, the cache invalidate is designated in the command field, and the access address is designated and transmitted.

キャッシュインバリデートの要求先となるユニット#2,#3,#4のそれぞれは、要求元のユニット#1からのブロードキャストバスコマンドを受信し、ブロードキャストフィールドに自己の指定があればそれを受信し、指定されたキャッシュインバリデートの処理を開始する。キャッシュインバリデート処理が完了すると、完了した順番に要求元のユニット#1に対しリプライバスコマンドを送出する。   Each of the units # 2, # 3, and # 4, which are cache invalidation request destinations, receives the broadcast bus command from the request source unit # 1, and receives it if the broadcast field has its own designation. Start processing the specified cache invalidate. When the cache invalidation processing is completed, reply bus commands are sent to the request source unit # 1 in the order of completion.

この例では、ユニット#2,#4,#3の順番にキャッシュインバリデート処理を終了してリプライバスコマンドを返送している。例えば最初のユニット#2にあっては、ソースフィールドを自分自身のユニットID#2とし、宛先フィールドを要求元のユニットID#1とし、コマンドフィールドでリプライを指定し、更にステータスフィールドにキャッシュインバリデートの処理結果をセットして返送する。ユニット#4,#3についても同様である。   In this example, the cache invalidation process is completed in the order of units # 2, # 4, and # 3, and a reply bus command is returned. For example, in the first unit # 2, the source field is its own unit ID # 2, the destination field is the requesting unit ID # 1, the reply is specified in the command field, and the cache invalidation is further specified in the status field. Set the processing result of and return it. The same applies to units # 4 and # 3.

要求元のユニット#1は全ての要求先のユニット#2,#3,#4からのリプライバスコマンドを受領し、そのステータス情報からキャッシュインバリデートの成功を認識すると、次の処理に移行する。図51は、図39において基本システム501のユニットから拡張システム506のユニットとの間でバス転送を行う場合の転送シーケンスである。図51にあっては、基本システムにおけるシステムバス1のユニット#1からバス拡張ユニット504を介して拡張システムのシステムバス#2のユニット#3にリード要求を行った場合の転送シーケンスである。   The request source unit # 1 receives the reply bus command from all the request destination units # 2, # 3, and # 4, and recognizes the success of the cache invalidation from the status information, and proceeds to the next processing. FIG. 51 shows a transfer sequence when bus transfer is performed between the unit of the basic system 501 and the unit of the extended system 506 in FIG. FIG. 51 shows a transfer sequence when a read request is made from the unit # 1 of the system bus 1 in the basic system to the unit # 3 of the system bus # 2 of the expansion system via the bus expansion unit 504.

まずシステムバス#1のユニット#1は、aのように、システムバス#2のユニット#3を要求先とするバスコマンドを作成して送出する。このユニット#1からのバスコマンドは、ソーススフィールドに要求元のシステムバスを示すバスID#1とユニット#1を示すユニットID#1を指定している。また宛先フィールドには相手先のシステムバスを示すバスID#2と相手先のユニットを示すユニットID#3を指定している。   First, the unit # 1 of the system bus # 1 creates and sends a bus command to which the unit # 3 of the system bus # 2 is a request destination as shown in a. The bus command from the unit # 1 specifies the bus ID # 1 indicating the request source system bus and the unit ID # 1 indicating the unit # 1 in the source field. In the destination field, a bus ID # 2 indicating the destination system bus and a unit ID # 3 indicating the destination unit are specified.

これ以外の点は、同じシステムバス上のバスコマンドと同様、コマンドフィールドにメモリリードを指定し、更に転送バイト数を指定して送信する。バス拡張ユニット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 bus expansion unit 504 receives the bus command from the unit # 1 and recognizes that the bus ID # 2 in the destination field of the bus command is a bus that is connected and expanded, the bus expansion unit 504 receives the bus command. The same bus command is issued to the system bus # 2 as shown in b.

システムバス#2のユニット#3にあっては、宛先フィールドのユニットIDが自己のユニットID#3であることを認識すると、そのバスコマンドを受信してリード処理を行い、リードデータが準備できたならば、cのように、コマンドを第1ワード、データを第2ワードとするリプライバスコマンドを送信する。   When unit # 3 of system bus # 2 recognizes that the unit ID of the destination field is its own unit ID # 3, the bus command is received, read processing is performed, and read data is ready Then, as in c, a reply bus command having the command as the first word and the data as the second word is transmitted.

このリプライバスコマンドについても、ソースフィールドにシステムバスのID#2と自分自身のユニットID#3を指定し、宛先フィールドについては別のシステムバスのバスID#1とユニットID#1を指定し、更にコマンドフィールドにリプライを指定し、更にリード結果のステータスを付けて送信する。リプライバスコマンドの1ワード目の送信が済むと、次の2ワード目の16バイトデータのパケットを送信する。   Also for this reply bus command, the system field ID # 2 and own unit ID # 3 are specified in the source field, and the bus ID # 1 and unit ID # 1 of another system bus are specified in the destination field. Further, a reply is specified in the command field, and the status of the read result is further added and transmitted. When transmission of the first word of the reply bus command is completed, a packet of 16 bytes data of the next second word is transmitted.

バス拡張ユニット504はcのリプライコマンドを受信し、その宛先フィールドのバスID#1から自分自身が接続拡張しているシステムバス#1であることを認識すると、同じリプライコマンドをシステムバス#1に転送する。システムバス#1のユニット#1は、このリプライコマンドから自分自身の宛先ユニットID#1を認識するとリプライバスコマンドを受信し、次の2ワード目の16バイトのリードデータを受信して処理を終了する。   When the bus expansion unit 504 receives the reply command c and recognizes from the bus ID # 1 in the destination field that it is the system bus # 1 that is connected and expanded, it sends the same reply command to the system bus # 1. Forward. When unit # 1 of system bus # 1 recognizes its own destination unit ID # 1 from this reply command, it receives the reply bus command, receives the 16-byte read data of the next second word, and ends the processing. To do.

図52は、図39におけるサブシステム500−1とサブシステム500−2の間のサブシステム間接続ユニット512を経由したバス転送のシーケンスである。   FIG. 52 is a sequence of bus transfer via the inter-subsystem connection unit 512 between the subsystem 500-1 and the subsystem 500-2 in FIG.

図52にあっては、サブシステム#1のユニット#1から別のサブシステム#2のユニット#3にリード要求を行った場合である。まず要求元となるサブシステム#1のユニット#1は、aのように、リード要求のためのバスコマンドを送出する。このバスコマンドはパケットヘッダを2つ使用した2ワードのバスコマンドで構成される。   In FIG. 52, a read request is made from unit # 1 of subsystem # 1 to unit # 3 of another subsystem # 2. First, the unit # 1 of the subsystem # 1, which is the request source, sends out a bus command for a read request as indicated by a. This bus command is composed of a 2-word bus command using two packet headers.

まずバスコマンドの第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 extended subsystem # 2, that is, a subsystem extension identifier EX is designated. Subsequently, the bus ID # 1 and the unit ID # 1 of the subsystem # 1 are set in the source field, and the unit ID # 6 of the inter-subsystem connection unit 512 for the subsystem # 2 is designated in the destination field.

更にコマンドフィールドにはメモリリードを指定し、アドレスフィールドにはアクセスアドレスを指定し、更に図示しないサイズフィールドに転送バイト数を指定する。次の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 subsystem ID # 1, bus ID # 1, and unit ID # 1 are specified in the source field.

また宛先フィールドには、要求先のサブシステムID#2、要求先のバスID#2及び要求先のユニットID#3が指定される。この2ワードとなるバスコマンドがシステムバスに送出されると、サブシステム間接続ユニット512において、第1ワード目の宛先フィールドのユニットID#6を認識し、バスコマンドの第1ワード及び第2ワードを受信する。   In the destination field, the requested subsystem ID # 2, the requested bus ID # 2, and the requested unit ID # 3 are specified. When this two-word bus command is sent to the system bus, the inter-subsystem connection unit 512 recognizes the unit ID # 6 of the destination field of the first word, and the first and second words of the bus command. Receive.

そしてサブシステム#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 subsystem # 2 side. This transfer control is determined by each ID of the second word of the bus command. The inter-subsystem connection unit 513 of the sub-system # 2 that has received the bus command from the inter-subsystem connection unit 512 of the sub-system # 1 sets its unit ID in the source field of the first word of the bus command as its own unit ID. While changing to designation of # 7, the destination field is changed to designation of unit ID # 3 decoded from the second word and sent to system bus # 2. The second word of the bus command is sent as it is.

システムバス#2のユニット#3は、サブシステム間接続ユニット513から送出されたバスコマンドの第1ワード目の受信で宛先フィールドのユニットIDが自分自身のユニットID#3であることを認識すると、このコマンドを受信し、更に第2ワード目も受信する。そして第1ワード目のコマンドフィールドにより指定されたメモリリードを、指定されたアクセスアドレスについて行う。   When unit # 3 of system bus # 2 recognizes that the unit ID of the destination field is its own unit ID # 3 upon reception of the first word of the bus command sent from inter-subsystem connection unit 513, This command is received, and the second word is also received. Then, the memory read designated by the command field of the first word is performed for the designated access address.

リードデータが準備できると、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 bus ID # 2 and the unit ID # 3 are set, and the destination field is the unit ID # 7 of the inter-subsystem connection unit 513. Is specified. Of course, the command field designates reply and sets a status (not shown).

リプライバスコマンドの第2ワード目は、ソースフィールドにサブシステムID#2、システムバスID#2及びユニットID#3を指定し、宛先フィールドについては要求元となるサブシステムID#1、システムバスID#1及びユニットID#1を指定する。そして第3ワード目がリードデータとなる16バイトデータである。   The second word of the reply bus command designates subsystem ID # 2, system bus ID # 2 and unit ID # 3 in the source field, and subsystem ID # 1 and system bus ID as the request source for the destination field. Specify # 1 and unit ID # 1. The third word is 16-byte data serving as read data.

サブシステム間接続ユニット513は、ユニット#3から送出されたリプライバスコマンドの第1ワード目の宛先フィールドから自己のユニットID#7を認識すると、このバスコマンドを受信し、eのように、サブシステム間インタフェースを介してサブシステム#1のサブシステム間接続ユニット512にリプライバスコマンドの第1ワード、第2ワード、第3ワードを転送する。   When the inter-subsystem connection unit 513 recognizes its unit ID # 7 from the destination field of the first word of the reply bus command sent from the unit # 3, it receives this bus command, The first word, the second word, and the third word of the reply bus command are transferred to the inter-subsystem connection unit 512 of the sub-system # 1 through the inter-system interface.

サブシステム#1のサブシステム間接続ユニット512は、リプライバスコマンドの第1ワードのソースフィールドのユニットIDを自分自身のユニットID#6の指定に変更すると共に、宛先フィールドを要求元のユニットID#1に変更してシステムバス#1に送出する。   The inter-subsystem connection unit 512 of the subsystem # 1 changes the unit ID of the source field of the first word of the reply bus command to the designation of its own unit ID # 6, and changes the destination field to the requesting unit ID #. Change to 1 and send to system bus # 1.

このソースフィールド及び宛先フィールドのユニット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 unit # 1 of the subsystem # 1 recognizes its unit ID from the destination field of the first word of the reply bus command, it starts receiving the bus command, receives up to the third word, and ends the processing.

図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 unit # 1 to unit # 2 when an 8-byte bus is used. Unit # 1 divides the 16-byte bus command into a first word and a second word in 8-byte units and sends them to the system bus. A source field, a destination field, a command field, and a side field are provided in the first word of the 8-byte bus command. The second word is an address field.

このような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 unit # 2 recognizes the destination unit ID # 2 of the first word of the bus command and sends the bus command. The memory read operation is performed for the access address specified by the second word. When the read data is prepared, a reply bus command is transmitted as shown in b. The reply bus command is sent with the first word of 8 bytes serving as a packet header, followed by 2 words of 16 bytes in total divided by 8 bytes.

図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 system bus # 1 of the basic system is connected to the heterogeneous system bus # 2 via the heterogeneous bus expansion unit 540. The heterogeneous bus expansion unit 540 is provided with a command conversion function for converting a command on the system bus # 1 side into a command on the heterogeneous system bus # 2 side.

いま、システムバス#1のユニット#1から異種システムバス#2のユニット#Bに対しアクセス要求を行うものとする。ユニット#1はバスコマンドとして2ワードのパケットをパケットヘッダとして送出する。このバスコマンドの第1ワード目にはソースフィールドでバスID#1及びユニットID#1を指定し、また宛先フィールドにバスID#1と異種バス拡張ユニット540のユニットID#8を指定している。   Assume that an access request is made from unit # 1 of system bus # 1 to unit #B of heterogeneous system bus # 2. Unit # 1 sends a 2-word packet as a packet header as a bus command. In the first word of this bus command, the bus ID # 1 and the unit ID # 1 are specified in the source field, and the bus ID # 1 and the unit ID # 8 of the heterogeneous bus expansion unit 540 are specified in the destination field. .

更にコマンドフィールドには、異種システムバス#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 system bus # 2 is specified in the command field. The second word is a bus command suitable for the heterogeneous system bus # 2, the unit id # 1 of the heterogeneous bus expansion unit 540 in the heterogeneous system bus # 2 space is designated as the source field, and the heterogeneous system bus # is designated as the destination field. 2 unit ID uid # B is designated.

このシステムバス#1のユニット#1から送出された2ワードのバスコマンドは、異種バス拡張ユニット54において、第1ワード目の宛先フィールドから自己のユニットID#8を認識することで受信される。異種バス拡張ユニット540自身が接続拡張している異種システムバス#2に対するエミュレーションコマンドであることを認識すると、コマンド依存フィールドとなる第2ワードのみを異種システムバス#2にbのように送出する。   The 2-word bus command sent from the unit # 1 of the system bus # 1 is received by the heterogeneous bus expansion unit 54 by recognizing its own unit ID # 8 from the destination field of the first word. When it is recognized that the heterogeneous bus expansion unit 540 itself is an emulation command for the heterogeneous system bus # 2 that is connected and expanded, only the second word that is a command dependent field is sent to the heterogeneous system bus # 2 as shown by b.

異種システムバス#2のユニット#Bは、その宛先フィールドのuid#Bから自己の宛先を認識して受信し、コマンドフィールドで指定された処理を実行し、処理が済むと、cに示すリプライコマンドを送出する。ユニット#Bからのリプライコマンドは第1ワードのソースフィールドにユニットid#Bを指定し、宛先フィールドに異種バス拡張ユニット540のユニットid#1を指定し、更に2ワード目にステータスやその他必要なデータを転送する。   The unit #B of the heterogeneous system bus # 2 recognizes and receives its own destination from the uid # B of the destination field, executes the processing specified in the command field, and when the processing is completed, the reply command shown in c Is sent out. The reply command from unit #B designates unit id #B in the source field of the first word, designates unit id # 1 of the heterogeneous bus expansion unit 540 in the destination field, and further, status and other necessary items in the second word Transfer data.

異種バス拡張ユニット540は、ユニット#Bからのリプライバスコマンドの第1ワード目から自分自身が接続しているシステムバス#1に対するリプライコマンドであることを認識すると、このリプライコマンドを受理して、dのようにシステムバス#1側に同様なリプライバスコマンドを送出する。   When the heterogeneous bus expansion unit 540 recognizes that it is a reply command for the system bus # 1 to which it is connected from the first word of the reply bus command from unit #B, it accepts this reply command, A similar reply bus command is sent to the system bus # 1 side as shown in d.

このリプライバスコマンドの第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 bus ID # 1 and the unit ID # 8 of the heterogeneous bus expansion unit 540 by the source field, and specifies the unit ID # 1 of the system bus ID # 1 of the request source in the destination field. is doing. The bus command transmitted from the unit #B of the heterogeneous system bus # 2 is added as it is to the second word and the third word.

このような異種バス拡張ユニット540による簡単なバスコマンドの変換により、異なるバスシステムのユニット間でのデータ転送が可能となる。またエミュレーションバスコマンドで使用するそれぞれのバス上におけるユニットIDは、各々のバス上で一意であればよく、拡張された異種システムバス上のIDも異種バス拡張ユニット540を含めて一意となる。
By such simple bus command conversion by the different bus expansion unit 540, it is possible to transfer data between units of different bus systems. Further, the unit ID on each bus used in the emulation bus command only needs to be unique on each bus, and the ID on the expanded heterogeneous system bus including the heterogeneous bus expansion unit 540 is also unique.

(5)バスコマンド
図55は、本発明のキャッシュコヒーレンス装置のシステムバス12のバス転送に使用するバスコマンドの基本的なコマンドフォーマットである。
(5) Bus Command FIG. 55 shows a basic command format of a bus command used for bus transfer of the system bus 12 of the cache coherence device of the present invention.

図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 source field 552, a first destination field 560, and a second destination field 564 in the first basic byte portion. In the source field 552, access request source information is designated. In the first destination field 560, information on the destination of the access request from the source field requester is designated. In the second destination field 564, in addition to the source field 552 and the first destination field 560, information on another destination to be accessed is designated.

具体的には、例えば図17に示した本発明のキャッシュコヒーレンス装置における読出モード2における処理動作を例にとると、次のようになる。図17は、アクセス要求元であるローカルのプロセッサモジュール10−1からアクセス対象となる主記憶を保持しているホームとなるプロセッサモジュール10−2に対しリード要求を行ったが、主記憶28に最新のデータが存在しておらず、リモートとなるプロセッサモジュール10−3のキャッシュユニットに最新データが存在している場合の処理である。   Specifically, for example, the processing operation in the read mode 2 in the cache coherence device of the present invention shown in FIG. 17 is as follows. In FIG. 17, a read request is issued from the local processor module 10-1 that is the access request source to the home processor module 10-2 that holds the main memory to be accessed. Is the process when the latest data exists in the cache unit of the remote processor module 10-3.

このようなリード処理にあって、まずローカルのプロセッサモジュール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 source field 552 of FIG. The 1 destination field 560 specifies the home unit ID. At this time, the second destination field 564 is not used.

次にホームのプロセッサモジュール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 source field 552 is set as the home ID, the first destination field 560 is set as the remote ID, and the second destination field 564 is further set. The local ID which is the first access request source is specified in.

更に、リモートのプロセッサモジュール10−3からリプライデータ260を送出する際には、図55のソースフィールド552にリモートIDを指定し、第1宛先フィールド560は要求元であるホームIDを指定し、更に第2宛先フィールド564には最初の要求元であるローカルIDを指定する。具体的には、リモートのプロセッサモジュール10−3で受信したバスコマンドと同じ情報をそのままセットしてリプライコマンドとしてのリプライデータを260を送出すればよい。   Furthermore, when sending the reply data 260 from the remote processor module 10-3, the remote ID is specified in the source field 552 of FIG. 55, the home ID that is the request source is specified in the first destination field 560, and The second destination field 564 specifies the local ID that is the first request source. Specifically, the same information as the bus command received by the remote processor module 10-3 may be set as it is, and the reply data 260 as the reply command may be sent out.

このように本発明のキャッシュコヒーレンス装置でローカル、ホーム、リモートとなる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 source field 552, the first destination field 560, and the second destination in FIG. The command format in field 564 will be meaningful.

図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 source field 552 is actually divided into a source bus ID field and a source unit ID field. By having the source bus ID field, data transfer between different system buses becomes possible. Similarly, a destination bus ID field and a destination unit ID field are also provided for the first destination field 560 and the second destination field 564, respectively. Further, an access ID field is provided in the first destination field 560 and the second destination field 564.

第1宛先フィールド560のアクセスIDフィールドは、スプリット転送でのバスアクセスの多重動作を行うための動作識別ID番号を指定するフィールドであり、コマンドあるいはコマンド群に対して有効である。このアクセスIDフィールドによる動作識別ID番号の用途は、複数のバスアクセスポートの同時動作や単一のDMAポートのパイプライン動作等であり、1ユニット当たり16種類までの多重動作が指定できる。   The access ID field of the first destination field 560 is a field for designating an operation identification ID number for performing a bus access multiplexing operation in split transfer, and is effective for a command or a command group. The use of the operation identification ID number by this access ID field is simultaneous operation of a plurality of bus access ports, pipeline operation of a single DMA port, etc., and up to 16 types of multiplex operations can be designated per unit.

第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 first destination field 560. In this case, the source unit stores the same operation identification ID number as the access unit ID, and when the reply command is received, the access ID field of the first destination field 560 and the operation identification ID number stored in the source unit. If they match, it is determined that it is a reply command for the bus command issued by itself.

一方、図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 read mode 2 of FIG. 17, the second destination field 564 is specified like the second bus command from the home processor module 10-2 and the reply command from the remote processor module 10-3. When the source unit itself sends the bus command, the operation identification ID number stored in the bus command is compared with the access ID field of the second destination field 564 in the reply command. It is determined that the reply to the command is the reply command specified in the first destination field 560.

具体的には、図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 main memory 28 of the home processor module 10-2 and is not aware of the remote processor module 10-3. The latest data existing in the cache unit of the processor module 10-3 can be received.

このときローカルのプロセッサモジュール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 remote command 250 sent from the home to the remote by the local processor module 10-1. Of course, it is also possible to change the time using the tag information line 509 shown in FIG.

更に図17のリモートとなるプロセッサモジュール10−3からのリプライデータ260であるリプライコマンドの返送については、リプライコマンドの契機となったホームとなるプロセッサモジュール10−2からのリモートコマンド250であるバスコマンドの第1宛先フィールド560におけるアクセスIDフィールドの動作識別ID番号をそのまま指定することになる。   Further, for the return of the reply command as reply data 260 from the remote processor module 10-3 in FIG. 17, the bus command as the remote command 250 from the home processor module 10-2 triggered by the reply command. The operation identification ID number of the access ID field in the first destination field 560 is designated as it is.

図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 broadcast designation flag 558 is provided at the boundary between the source field 552 and the first destination field 560, and is set to 1 when used as a broadcast bus command. A second destination designation flag 562 is provided at the head of the second destination field 564 and is set to 1 when the second destination field 564 is used.

基本バスコマンドの2行目となる5〜8バイト部分には、コマンドフィールド566、サイズフィールド568及びフラグフィールド570が設けられる。コマンドフィールド566には、リードコマンド、ライトコマンド、リプライコマンド、ブロードキャストコマンド等のコマンド識別コードが設定される。次のサイドフィールド568にはデータ転送サイズが設定される。   A command field 566, a size field 568, and a flag field 570 are provided in the 5th to 8th byte portions of the second line of the basic bus command. In the command field 566, command identification codes such as a read command, a write command, a reply command, and a broadcast command are set. A data transfer size is set in the next side field 568.

リード系のバスコマンドではリプライコマンドで返送するデータサイズを指定し、ライト系のバスコマンドではバスコマンドに後続する書込データのデータサイズを指定する。次のフラグフィールド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 command parameter field 572 specifies, for example, an access address depending on the command type of the command field 566.

図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 first destination field 560 provided following the source field 552, a 16-bit wide broadcast destination map field 574 is provided instead of the destination unit ID in the basic bus command of FIG.

本発明のシステムバス12は最大で16ユニットを接続することができるので、ブロードキャスト宛先マップフィールド574はビット対応によりブロードキャストコマンドの相手先となるユニットをビット対応で指定することができる。プロードコースバスコマンドもブロードキャストバスコマンドと同じフォーマットをもつ。   Since a maximum of 16 units can be connected to the system bus 12 of the present invention, the broadcast destination map field 574 can specify the unit that is the counterpart of the broadcast command by bit correspondence. The broad course bus command has the same format as the broadcast bus command.

図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 reply type 574, an error level 576, an error type 578, and an error code 580 are provided in the second line portion. The other structure is the same as the basic bus command of FIG. The last command parameter 572 field is not used.

リプライタイプフィールド574には、リプライを要求したソースユニットが発行したバスコマンドのコマンドコードが指定される。またリプライコマンドの付加情報のフォーマットやデータの有無は、このリプライタイプフィールド574のコマンドコードによって決められる。   In the reply type field 574, the command code of the bus command issued by the source unit that requested the reply is specified. The format of the additional information of the reply command and the presence / absence of data are determined by the command code in the reply type field 574.

次のエラーレベルフィールド576は、エラーリプライバスコマンドとして使用する際にエラーレベルが格納される。また次のエラータイプフィールド578には、エラー返信時のエラーの分類を示すエラータイプが通知される。更にエラーコードフィールド580には、エラー返信時にエラーの詳細な要因が通知される。   The next error level field 576 stores an error level when used as an error reply bus command. In the next error type field 578, an error type indicating the error classification at the time of error reply is notified. Further, the error code field 580 is notified of the detailed cause of the error when the error is returned.

図59は図57のエラータイプフィールド578の例であり、ソフトウェアエラー、システム構成エラー、ハードウェアエラー、バスエラーの分類情報がエラー検出に基づいてセットされる。図60は図57のエラーレベルフィールド576によるエラーの詳細分類をエラータイプと組み合わせて示している。   FIG. 59 is an example of the error type field 578 of FIG. 57, and software error, system configuration error, hardware error, and bus error classification information is set based on error detection. FIG. 60 shows the detailed classification of errors by the error level field 576 of FIG. 57 in combination with the error type.

ここで図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 write mode 1 of FIG. 23, the write mode 2 of FIG. 24, the write mode 3 of FIG. 25, the write mode 4 of FIG. Used as a bus command.

図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 source field 552 and the first destination field 560, and the cache subline status field 582 is also added to the last 4 bits of the second line. 2 is provided.

本発明のキャッシュコヒーレンス装置にあっては、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. 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, bit 0 and bit 1 of subline IDs # 0 to # 3 are assigned to the cache subline status field 582-1, respectively, and the second cache subline status field 582-2 in the second row is assigned the second bit of bit 2. The third bit is assigned. The cache subline state by the cache subline status fields 582-1 and 582-2 is as shown in FIG.

図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 first destination field 558 is provided, and each field of a destination system ID, a destination bus ID, and a destination unit ID is provided. Subsequently, a subsystem second destination field 590 is provided, and similarly, fields of a destination system ID, a destination bus ID, and a destination unit ID are provided. A second destination designation flag 592 is also set. 62 is combined as the second word with respect to the first word of the basic bus command of FIG. 55 to transfer data between the units of the plurality of subsystems shown in FIG. be able to.

このように本発明のキャッシュコヒーレンス装置で使用する第2共通バスとしてのシステムバス12は、ディレクトリ方式に従った分散共有メモリ型のマルチプロセッサシステムにおいて、キャッシュコヒーレンスを効率良く実現するための共通バスを提供することができ、ディレクトリ方式の拡張性を損うことのない共通バスが提供できる。   As described above, the system bus 12 as the second common bus used in the cache coherence apparatus of the present invention is a common bus for efficiently realizing cache coherence in a distributed shared memory multiprocessor system according to the directory system. It is possible to provide a common bus that does not impair the expandability of the directory system.

またシステムバス単位に構築されるサブシステムを複数結合した大規模なマルチプロセッサシステムへの拡張を考慮した信頼性の高い共通バスが提供できる。更に、異なったバスとの接続を考慮していることから、既存のバス資産の有効活用を可能とする共通バスが提供できる。
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, it is possible to provide a common bus that enables effective use of existing bus assets.

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 home command 600 to the main memory 28 of the home processor module 10-2 as a local to perform write access, and the processor modules 10-3 and 10 as remote from the home. -4 shows a case where a cache invalidate remote command 602 is issued.

プロセッサモジュール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 local storage 28 and a directory memory 30 as a distributed main memory for the memory management unit 26, which is the same as the embodiment of FIG. In addition to this, the second directory memory 31 is provided in the bus connection unit 32 in the embodiment of FIG. The directory memory 30 is called a first directory memory with respect to the second directory memory 31.

第2ディレクトリメモリ31は、自己のローカルストレージ28に存在するキャッシュライン単位のデータにつき、そのデータがシスムテバス上で他のバスコマンドによりアクセス状態を登録している。この登録内容としては、例えば、リモートコマンドによるキャッシュインバリデート待ちがある。図63のプロセッサモジュール10−2は、ホームとしてプロセッサモジュール10−3,10−4にキャッシュインパリデータのリモートコマンド602を発行しており、コマンド応答を待っている。このときプロセッサモジュール10−2の第2ディレクトリメモリ31の該当するキャッシュラインについては、リモートからのキャッシュインバリデートの応答待ちが登録されている。   The second directory memory 31 registers the access state of data in cache line units existing in its own local storage 28 by another bus command on the system bus. As this registered content, for example, there is a cache invalidation waiting by a remote command. The processor module 10-2 in FIG. 63 issues a remote command 602 of cache impari data to the processor modules 10-3 and 10-4 as a home, and is waiting for a command response. At this time, for the corresponding cache line in the second directory memory 31 of the processor module 10-2, waiting for a cache invalidation response from the remote is registered.

この状態で、例えばプロセッサモジュール10−3の2番目キャッシュユニット側から、同じキャッシュラインを対象にライトアクスセのホームコマンド608が発行されたとする。このホームコマンド602に対しバス接続ユニット32は第2ディレクトリメモリ31を参照してキャッシュインバリデートの完了待ちにあることをメモリ管理ユニット26に送ることなく直ちに認識し、ビジー応答をリプライコマンドで返す。   In this state, for example, a write access home command 608 is issued for the same cache line from the second cache unit side of the processor module 10-3. In response to this home command 602, the bus connection unit 32 refers to the second directory memory 31 and immediately recognizes that it is waiting for completion of cache invalidation without sending it to the memory management unit 26, and returns a busy response as a reply command.

この場合、システムバス12上でのリトライとすることは無駄になるので、アクセス元のキャッシュユニットまでビジーを通知し、リトライを行わせる。このように第2ディレクトリメモリ31の参照でリモートコマンドによるアクセス不能な状態が判るので、メモリ管理ユニット26側でアクセス不能を判断してビシーを応答する場合に比べ、処理を高速化できる。   In this case, since retrying on the system bus 12 is useless, the busy unit is notified of the busy and the retry is performed. As described above, the state inaccessible by the remote command can be determined by referring to the second directory memory 31. Therefore, the processing speed can be increased as compared with the case where the memory management unit 26 determines inaccessibility and responds with Vichy.

リモートのプロセッサモジュール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 second directory memory 31 is deleted, and the remote command 602 by the retry from the processor module 10-3 is issued. Accepted.

図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 remote command 602 is issued from the processor module 10-3 in this buffer full state, a buffer full busy response is immediately returned without referring to the second directory memory 31.

この場合、アクセス要求元のキャッシュユニットまでバッファフルのビジー応答を返すと、スヌープバス22やキャッシュユニットがリトライ動作に忙殺されることから、システムバス12上でのリモートコマンドのリトライとする。
In this case, when a buffer full busy response is returned to the access request source cache unit, the snoop bus 22 and the cache unit are busy with the retry operation, so the remote command is retried on the system bus 12.

8.その他
図4のプロセッサエレメント14−1に設けた2次キャッシュ制御モジュール35は、2次キャッシュ38のキャッシュデータをLRUで管理しており、新たなキャッシュデータのオーナーで2次キャッシュ38がオーバフローすると、キャッシュデータのLRU追出し処理が行われる。このLRU追い出し処理は、追い出し対象となったキャッシュラインが書込権を所有した排他的ダーティ状態、即ちオーナーであった場合には、メモリモジュール25に対しスヌープバス22を介してコピーバックコマンドを発行し、ホームとなるプロセッサモジュールのローカルストレージ28に、追い出されたキャッシュデータを格納する。
8). Others The secondary cache control module 35 provided in the processor element 14-1 of FIG. 4 manages the cache data of the secondary cache 38 with LRU, and when the secondary cache 38 overflows with the owner of new cache data, Cache data LRU eviction processing is performed. This LRU eviction process issues a copyback command to the memory module 25 via the snoop bus 22 when the cache line targeted for eviction is in an exclusive dirty state where the write right is owned, that is, the owner. Then, the evicted cache data is stored in the local storage 28 of the processor module serving as the home.

一方、書込所有権が存在した排他的ダーティ状態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, 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 local storage 28 is unnecessary.

尚、上記の実施例は、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.

本発明の原理説明図Principle explanatory diagram of the present invention 本発明のマルチプロセッサモジュール構成のブロック図Block diagram of multiprocessor module configuration of the present invention 図2のプロセッサモジュールの内部構成のブロック図Block diagram of the internal configuration of the processor module of FIG. 図3のプロセッサモジュールの内部構成の詳細ブロック図Detailed block diagram of internal configuration of processor module of FIG. 本発明のキャッシュラインの説明図Explanatory drawing of the cash line 図3の空間識別ユニットの機能説明図Functional explanatory diagram of the space identification unit of FIG. 図4のメモリ管理ユニットのブロック図Block diagram of the memory management unit of FIG. ディレクトリエントリレジスタの説明図Illustration of directory entry register シェアードマップビット対応レジスタの説明図Explanation of shared map bit compatible register プロセッサモジュール構成レジスタの説明図Explanation of processor module configuration register ディレクトリエントリレジスタ、シェアードマップビット対応レジスタ及びプロセッサモジュール構成レジスタの具体例の説明図Illustration of specific examples of directory entry register, shared map bit compatible register and processor module configuration register ディレクトリエントリレジスタの具体例の説明図Illustration of a specific example of the directory entry register 図4のスヌープバスに対するコマンド説明図Command explanatory diagram for the snoop bus of FIG. 図4のキャッシュユニットのキャッシュ状態の説明図Explanatory drawing of the cache state of the cache unit of FIG. 図4のキャッシュユニットのキャッシュ遷移状態の説明図Explanatory drawing of the cache transition state of the cache unit of FIG. 本発明の読出モード1における処理動作の説明図Explanatory drawing of processing operation in read mode 1 of the present invention 本発明の読出モード2における処理動作の説明図Explanatory drawing of processing operation in read mode 2 of the present invention 本発明の読出モード3における処理動作の説明図Explanatory drawing of processing operation in read mode 3 of the present invention 本発明のローカルプロセッサモジュールのリード処理のフローチャートFlowchart of read processing of local processor module of the present invention 本発明のホームプロセッサモジュールのリード処理のフローチャートFlow chart of read processing of home processor module of the present invention 本発明のリモートプロセッサモジュールのリード処理のフローチャートFlowchart of read processing of remote processor module of the present invention 本発明のプロセッサエレメントのリード処理のフローチャートFlowchart of processor element read processing of the present invention 本発明の書込モード1における処理動作の説明図Explanatory drawing of processing operation in writing mode 1 of the present invention 本発明の書込モード2における処理動作の説明図Explanatory drawing of processing operation in writing mode 2 of the present invention 本発明の書込モード3における処理動作の説明図Explanatory drawing of processing operation in write mode 3 of the present invention 本発明の書込モード4における処理動作の説明図Explanatory drawing of processing operation in writing mode 4 of the present invention 本発明の書込モード5における処理動作の説明図Explanatory drawing of processing operation in writing mode 5 of the present invention 本発明の書込モード6における処理動作の説明図Explanatory drawing of processing operation in writing mode 6 of the present invention 本発明の書込モード7における処理動作の説明図Explanatory drawing of processing operation in writing mode 7 of the present invention 本発明のローカルプロセッサモジュールのライト処理のフローチャートFlow chart of write processing of local processor module of the present invention 本発明のホームプロセッサモジュールのライト処理のフローチャートFlow chart of write processing of home processor module of the present invention 本発明のリモートプロセッサモジュールのライト処理のフローチャートFlowchart of write processing of remote processor module of the present invention 本発明のプロセッサのライト処理のフローチャートFlow chart of write processing of processor of the present invention キャッシュユニットに対する内部コマンドと外部のリモートコマンドが競合してリトライの繰り返しとなる動作の説明図Explanatory diagram of operations in which internal command for cache unit and external remote command conflict and repeat retry 図2のリトライ繰り返しの具体例のタイムチャートTime chart of specific example of retry retry in FIG. リモートコマンドに対するリトライ指示を1回として優先的に受け付ける本発明の処理のタイムチャートTime chart of processing of the present invention that preferentially accepts a retry instruction for a remote command as one time プロセッサモジュールのキャッシュユニット間で行う書込所有権(オーナー)の委譲の説明図Explanatory drawing of delegation of write ownership (owner) between cache modules of processor modules 書込所有権を委譲する順番の説明図Explanatory diagram of the order to transfer write ownership 図3のキャッシュコヒーレンス装置を基幹に拡張したシステム構成の説明図Explanatory diagram of a system configuration in which the cache coherence device of FIG. 図39のシステムバスの線路構成の説明図39 is an explanatory diagram of the line configuration of the system bus in FIG. 図40のタグバス線によるタグバスコードの説明図Explanatory drawing of tag bus code by tag bus line of FIG. 図40のリクエトスト線と緊急リクエスト線の組合わせによる制御内容の説明図Explanatory drawing of control contents by combination of request line and emergency request line of FIG. 図40のホルト線とマスタ権切替線の組合せによる制御内容の説明図Explanatory drawing of control contents by combination of halt line and master right switching line in FIG. 図40のシステムバスのファーストモードでのバスアビトレーションのタイムチャートTime chart of bus arbitration in fast mode of system bus in FIG. 図40のシステムバスのセーフティモードでのバスアビトレーションのタイムチャートTime chart of bus arbitration in safety mode of system bus in FIG. 図40のシステムバスのバススレーブでエラーを検出した際の優先バスアビトレーションのタイムチャートTime chart of priority bus arbitration when an error is detected in the bus slave of the system bus in FIG. 図40のシステムバスのバスアービタでエラーを検出した際の優先バスアビトレーションのタイムチャートTime chart of priority bus arbitration when an error is detected by the bus arbiter of the system bus in FIG. 図39のシステムバスのメモリリードの転送シーケンスのタイムチャート39 is a time chart of the memory bus transfer sequence of the system bus in FIG. 図39のシステムバスのメモリライトの転送シーケンスのタイムチャート39 is a time chart of the memory bus transfer sequence of the system bus in FIG. 図39のシステムバスのブロードキャスト/ブロードコールの転送シーケンスのタイムチャートTime chart of system bus broadcast / broad call transfer sequence of FIG. 図39のシステムバス間の転送シーケンスのタイムチャートTime chart of transfer sequence between system buses in FIG. 図39のサブシステムバス間の転送シーケンスのタイムチャートTime chart of transfer sequence between subsystem buses in FIG. 図39のシステムバスを8バイトバスとした場合の転送シーケンスのタイムチャートTime chart of transfer sequence when the system bus in FIG. 39 is an 8-byte bus 図39のシステムバスと異種システムバス間の転送シーケンスのタイムチャートTime chart of transfer sequence between system bus of FIG. 39 and different system bus 図39のシステムバスの基本的なバスコマンドのフォーマット説明図39 is a diagram illustrating the basic bus command format of the system bus in FIG. 図39のシステムバスのブロードキャストバスコマンドのフォーマット説明図39 is a format explanatory diagram of the broadcast bus command of the system bus in FIG. 図39のシステムバスの基本的なリプライ/エラーバスコマンドのフォーマット説明図39 is a format explanatory diagram of a basic reply / error bus command of the system bus in FIG. 図39のシステムバスのキャッシュステータスバスコマンドのフォーマット説明図39 is a format explanatory diagram of the cache status bus command of the system bus in FIG. 図57のエラーバスコマンドで指定するエラータイプの説明図Explanatory diagram of error type specified by error bus command in FIG. 図57のエラーバスコマンドで指定するエラーレベルをエラータイプと共に示した説明図Explanatory drawing showing the error level specified with the error bus command in FIG. 57 together with the error type 図58のキャッシュステータスバスコマンドで指定するキャッシュステータスの説明図Explanatory drawing of the cache status specified by the cache status bus command of FIG. 図39のサブシステムバス間のバス転送時に基本バスコマンドに付加して使用される拡張バスコマンドのフォーマット説明図39 is an explanatory diagram of the format of an extended bus command used in addition to the basic bus command during bus transfer between subsystem buses in FIG. バス接続ユニットに第2ディレクトリメモリを設けた実施形態のライトアクセス説明図Write access explanatory diagram of the embodiment in which the second directory memory is provided in the bus connection unit 図63のキャッシュインバリデートの完了待ちでホームへのアクセス要求がバッファフルとなった場合のアクセス説明図Explanation of access when home access request becomes buffer full waiting for completion of cache invalidation in FIG. 従来のマルチプロセッサシステムのブロック図Block diagram of a conventional multiprocessor system

符号の説明Explanation of symbols

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: CPU circuit 18, 18-1 to 18-4: Cache unit (cache)
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: tag memory 42, 52: snoop transmission / reception unit 44: snoop buffer 46: copyback buffer 48: processor access control unit 50: space control unit 54: Local access buffer queue 56: Home access buffer queue 58: Remote access buffer queue 62: Bus reception unit 64: Bus transmission unit 66: Memory bus 68-1 to 68-4: Memory access controller 70-1 to 70-4: SRAM
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 module configuration register 120, 122, 124, 128: Cache status storage area 500-1, 500-2: Subsystem 501: Basic system 502, 503: Bus arbiter 504: Bus expansion unit 505: heterogeneous system 506: expansion system 507: data bus line 509: tag control lines 510-1 to 510-3: processor module 512: inter-subsystem connection unit 514: common data bus line (DB)
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 (2)

複数のプロセッサモジュールを備え、
前記プロセッサモジュールのそれぞれは1つ以上のプロセッサと1つ以上のキャッシュユニットと主記憶とディレクトリ記憶部を備え、
前記プロセッサのそれぞれには対応する前記キャッシュユニットが存在し、
前記主記憶は自プロセッサモジュール内の前記プロセッサと他プロセッサモジュール内の前記プロセッサとにアクセスされるものであり、
第1のプロセッサモジュール内の第1のプロセッサに対応する第1のキャッシュユニットに対して、前記第1のプロセッサモジュール内の第2のプロセッサからのアクセスが先行し、前記第1のキャッシュユニットに対する第2のプロセッサモジュールからのアクセスが後続して、2つのアクセスが競合した場合には、前記第2のプロセッサは、前記第2のプロセッサモジュールにリトライを指示し、更に、前記第2のプロセッサモジュールを識別する情報とアクセスアドレスを記憶し、自己のアクセスの終了後には、前記第2のプロセッサモジュール以外からのアクセスコマンドを受けた場合にはリトライを指示し、前記第2のプロセッサモジュールのリトライによるアクセスコマンドを優先的に受け付けるものである、
キャッシュコヒーレンス装置。
With multiple processor modules ,
Each of the processor modules includes one or more processors, one or more cache units, a main memory, and a directory memory.
Each of the processors has a corresponding cache unit,
The main memory is accessed by the processor in its own processor module and the processor in another processor module,
The first cache unit corresponding to the first processor in the first processor module is preceded by an access from the second processor in the first processor module, and the first cache unit corresponding to the first cache unit. When the access from the two processor modules follows and the two accesses conflict, the second processor instructs the second processor module to retry, and the second processor module Information to be identified and an access address are stored, and when an access command is received from a device other than the second processor module after completion of its own access, a retry is instructed, and access by retry of the second processor module The command is received preferentially.
Cache coherence device.
前記第2のプロセッサは、自己のアクセスの終了後、前記第2のプロセッサモジュールからのアクセスが所定時間発生しない場合、記憶していた前記第2のプロセッサモジュールを識別する情報と前記アクセスアドレスの記憶内容を初期化して前記第2のプロセッサモジュールに対する優先受付を解除するものである、
請求項1記載のキャシュコヒーレンス装置。
When the access from the second processor module does not occur for a predetermined time after the end of its own access, the second processor stores the stored information for identifying the second processor module and the access address. Initializing the contents and canceling the priority reception for the second processor module.
The cache coherence device according to claim 1.
JP2006077052A 1995-03-20 2006-03-20 Cache coherence device Expired - Fee Related JP4361909B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006077052A JP4361909B2 (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
JP2006077052A JP4361909B2 (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
JP2006209797A JP2006209797A (en) 2006-08-10
JP4361909B2 true JP4361909B2 (en) 2009-11-11

Family

ID=36966491

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006077052A Expired - Fee Related JP4361909B2 (en) 1995-03-20 2006-03-20 Cache coherence device

Country Status (1)

Country Link
JP (1) JP4361909B2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10540292B2 (en) 2016-06-08 2020-01-21 Google Llc TLB shootdowns for low overhead
EP3255550B1 (en) * 2016-06-08 2019-04-03 Google LLC Tlb shootdowns for low overhead
JP7318203B2 (en) * 2018-12-12 2023-08-01 富士通株式会社 Arithmetic processing device and method of controlling arithmetic processing device

Also Published As

Publication number Publication date
JP2006209797A (en) 2006-08-10

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
US5276852A (en) Method and apparatus for controlling a processor bus used by multiple processor components during writeback cache transactions
KR100348947B1 (en) Non-uniform memory access(numa) data processing system that speculatively issues requests on a node interconnect
EP0911731B1 (en) Order supporting mechanisms for use in a switch-based multi-processor system
US6085276A (en) Multi-processor computer system having a data switch with simultaneous insertion buffers for eliminating arbitration interdependencies
KR100324975B1 (en) Non-uniform memory access(numa) data processing system that buffers potential third node transactions to decrease communication latency
US6101420A (en) Method and apparatus for disambiguating change-to-dirty commands in a switch based multi-processing system with coarse directories
EP0817073B1 (en) A multiprocessing system configured to perform efficient write operations
US6108752A (en) Method and apparatus for delaying victim writes in a switch-based multi-processor system to maintain data coherency
US6832282B2 (en) System and method for providing forward progress and avoiding starvation and livelock in a multiprocessor computer system
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
JPH11506852A (en) Reduction of cache snooping overhead in a multi-level cache system having a large number of bus masters and a shared level 2 cache
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
US20040111565A1 (en) High speed memory cloner with extended cache coherency protocols and responses
US7797495B1 (en) Distributed directory cache
JP4361909B2 (en) Cache coherence device
JP4361910B2 (en) Cache coherence device
JP4424619B2 (en) Information processing device

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090519

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090526

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090702

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: 20090721

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090813

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: 20120821

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120821

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130821

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees