KR0164919B1 - Multi-processor having directory cache in memory module - Google Patents
Multi-processor having directory cache in memory module Download PDFInfo
- Publication number
- KR0164919B1 KR0164919B1 KR1019950002102A KR19950002102A KR0164919B1 KR 0164919 B1 KR0164919 B1 KR 0164919B1 KR 1019950002102 A KR1019950002102 A KR 1019950002102A KR 19950002102 A KR19950002102 A KR 19950002102A KR 0164919 B1 KR0164919 B1 KR 0164919B1
- Authority
- KR
- South Korea
- Prior art keywords
- block
- memory
- memory module
- cache
- request
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
본 발명은 메모리 모듈내에 디렉토리 캐쉬를 포함하는 다중 프로세서에 관한 것으로서, 메모리 모듈내에 디렉토리 캐쉬를 포함하는 다중 프로세서는 분리형 트랜잭션 프로토콜하에서 동작하는 시스템 버스, 상기 시스템 버스에 결합된 적어도 하나 이상의 메모리 모듈과, 각각 상기 시스템 버스에 결합된 다수의 프로세서 모듈을 갖는 공유 메모리 다중 프로세서에 있어서, 상기 메모리 모듈은 메모리와 메모리보다 더 빠른 접근 시간을 제공하는 디렉토리 캐쉬를 분리하여 포함하며, 상기 메모리에 저장된 각 블록들에 대해 그 메모리 블록이 유효한지 여부를 명시하는 상태 정보를 상기 디렉토리 캐쉬에 유지하도록 한다. 따라서, 본 발명의 메모리 모듈내에 디렉토리 캐쉬를 포함하는 다중 프로세서는 메모리 도듈에서의 병목현상을 완화시키며, 빠른 메모리 접근으로 인해 쓰기-무효화 캐쉬 일관성 유지 프로토콜을 구동할 경우에 시스템의 성능을 향상시킬 수 있다.The present invention relates to a multiprocessor comprising a directory cache in a memory module, the multiprocessor comprising a directory cache in a memory module comprising a system bus operating under a separate transaction protocol, at least one memory module coupled to the system bus, In a shared memory multiprocessor having a plurality of processor modules each coupled to the system bus, the memory module separately includes a directory and a directory cache that provides faster access time than the memory, each block stored in the memory. Maintain state information in the directory cache that specifies whether the block of memory is valid. Thus, multiple processors including directory cache in the memory module of the present invention alleviate bottlenecks in memory modules and improve system performance when running write-invalidate cache coherency protocols due to fast memory access. have.
Description
제1도는 전형적인 공유 메모리 다중 프로세서 시스템을 도시한 도면.1 illustrates a typical shared memory multiprocessor system.
제2도는 각 프로세서 모듈에 캐쉬가 포함된 형태의 전형적인 공유 메모리 다중 프로세서 시스템을 도시한 도면.2 illustrates a typical shared memory multiprocessor system in which each processor module includes a cache.
제3도는 종래의 공유 메모리 다중프로세서를 도시한 것으로, 분리형 트랜잭션 버스를 이용한 다중 프로세서 환경하에서 쓰기-무효화 캐쉬 일관성 유지 방식이 사용될 때의 문제점을 예시하는 도면.3 illustrates a conventional shared memory multiprocessor, illustrating a problem when a write-invalidate cache coherency scheme is used under a multiprocessor environment using a separate transaction bus.
제4도는 분리형 트랜잭션 버스를 이용한 다중 프로세서 환경하에서 쓰기-무효화 캐쉬 일관성 유지방식이 사용될 때의 문제점을 타이밍도를 통해 예시하는 도면.4 is a timing diagram illustrating a problem when a write-invalidate cache coherency maintenance scheme is used in a multiprocessor environment using a separate transaction bus.
제5도는 본 발명의 개선된 메모리 모듈을 포함하는 공유 메모리 다중 프로세서 시스템을 예시하는 도면.5 illustrates a shared memory multiprocessor system including an improved memory module of the present invention.
제6도는 본 발명의 디렉토리 캐쉬의 내용을 예시하는 도면.6 illustrates the contents of the directory cache of the present invention.
제7도는 본 발명의 개선된 메모리 모듈을 블록도 형태로 예시하는 도면.7 illustrates, in block diagram form, an improved memory module of the present invention.
제8도는 Synapse N+1 다중 프로세서의 메모리 내용을 예시하는 도면.8 illustrates memory contents of a Synapse N + 1 multiprocessor.
제9도는 본 발명의 개선된 메모리 모듈과 종래의 메모리 모듈이 혼합된 공유 메모리 다중 프로세서 시스템을 예시하는 도면.9 illustrates a shared memory multiprocessor system in which an improved memory module of the present invention and a conventional memory module are mixed.
* 도면의 주요부분에 대한 부호의 설명* Explanation of symbols for main parts of the drawings
100,100' : 메모리 모듈 200,200' : 프로세서 모듈100,100 ': memory module 200,200': processor module
300 ; 분리형 트랜잭션 버스 400,400' : 프로세서300; Detachable transaction bus 400,400 ': processor
500, 500' : 캐쉬 600,600' : 디렉토리 캐쉬500, 500 ': cache 600,600': directory cache
700,700' : 메모리 710 : 데이터 저장 장치700700 ': Memory 710: Data storage device
720 : 메모리 제어기 730 : 메모리-버스 인터페이스720: memory controller 730: memory-bus interface
740 : 작업 버퍼740: working buffer
본 발명은 다중 프로세서(multiprocessor)에 관한 것으로서, 특히, 분리형 트랜잭션 버스(split transaction bus)를 이용한 공유 메모리(shared memory) 다중 프로세서를 위한 메모리 모듈에 관한 것이다.The present invention relates to a multiprocessor, and more particularly, to a memory module for a shared memory multiprocessor using a split transaction bus.
공유 메모리 다중 프로세서 시스템은 시스템 컴퓨팅 파워 및 속도를 증진시키는 매우 경제적인 방법으로, 이는 고성능 마이크로 프로세서들이 공유 메모리 모듈과 공통 버스(common bus)를 통해 경제적으로 상호결합될 수 있다는 사실에 주로 기인한다.Shared memory multiprocessor systems are a very economical way to increase system computing power and speed, largely due to the fact that high performance microprocessors can be economically interconnected via shared memory modules and a common bus.
제1도는 공통 버스에 의해 다수의 프로세서 모듈이 다수의 공유 메모리 모듈과 결합된 전형적인 공유 메모리 다중 프로세서 시스템의 구조를 예시한다.1 illustrates the structure of a typical shared memory multiprocessor system in which multiple processor modules are coupled with multiple shared memory modules by a common bus.
그러나 이러한 시스템의 구성에서는 다음과 같은 두 가지의 근본적인 문제점들이 내재되어 있다. 즉, 다수의 프로세서 모듈이 동시에 공통 버스에 접근(access)하려할 때 발생하는 버스 충돌(bus contention)과 다수의 프로세서 모듈이 하나의 메모리 모듈에 동시에 접근하려할 때 발생하는 메모리 충돌(memory contention)이 그것이다. 이러한 문제들은 메모리 접근시간(memory access time)을 증가시켜서, 결국 다중 프로세서 시스템의 수행 속도(execution time)를 감소시킨다.However, two fundamental problems are inherent in such a system configuration. In other words, bus contention occurs when multiple processor modules try to access a common bus at the same time, and memory contention occurs when multiple processor modules try to access a single memory module at the same time. This is it. These problems increase memory access time, which in turn reduces the execution time of multiprocessor systems.
공통 버스에서의 접근 충돌을 줄이기 위한 하나의 방법은 공통버스가 불필요하게 쉬는 일이 없이 가급적 많은 정보들을 전송하게 하는 것이다. 예를 들면 프로세서 모듈이 메모리모듈에 대한 접근 요청(access request)을 공통 버스를 통해 전송할 때부터 응답(response)을 수신할 때까지 공통 버스를 점유하는 비분리형 트랜잭션 버스(non-split transaction bus)를 사용하기 보다는 메모리 모듈에 대한 접근 요청 전송 과정과 응답 전송 과정을 분리시켜서, 메모리 모듈의 접근 요청 전송 과정과 응답 과정 사이의 공통 버스를 사용하지 않는 동안에 다른 프로세서 모듈이나 메모리 모듈이 그 공통 버스를 사용할 수 있게 하는 분리형 트랜잭션 버스(split transaction-bus)의 사용이 공통 버스에서의 접근 충돌을 줄이는데 이바지할 수 있다. 분리형 트랜잭션 버스에 대한 보다 상세한 설명은, 예를 들어, D. J. Schanin등에 허여된 미합중국 특허 제 5,067,071호에 기술되어 있다.One way to reduce access conflicts on a common bus is to allow the common bus to transmit as much information as possible without unnecessary rest. For example, a non-split transaction bus that occupies the common bus from the processor module sending an access request to the memory module over the common bus to receiving a response. Rather than using an access request transfer process and a response transfer process for a memory module, another processor module or memory module may use the common bus while not using a common bus between the access request transfer process and the response process of the memory module. The use of split transaction-bus, which enables this, can help reduce access conflicts on the common bus. A more detailed description of the separate transaction bus is described, for example, in US Pat. No. 5,067,071 to D. J. Schanin et al.
공통 버스의 대역폭이 증가하더라도, 하나의 메모리 모듈은 한번에 하나의 메모리 접근 요청(memory access request)을 처리할 수 있으므로, 동시에 다수의 프로세서 모듈이 하나의 메모리 모듈에 접근하려 할 때 발생하는 메모리 충돌로 인한 시스템 성능 저하는 여전히 존재한다. 따라서, 공통 버스 접근 충돌과 메모리 접근 충돌을 줄이기 위해서는 가능한한 프로세서 모듈과 메모리 모듈 사이의 트래픽(traffic)을 감소시키는 것이 중요하며, 프로세서 모듈은 프로세서가 자주 사용하리라고 예측되는 메모리 모듈의 블록(block)들을 메모리 모듈보다 용량은 작으나 훨씬 더 빠른 접근 시간을 제공하는 자체 캐쉬에 저장함으로써 공통 버스와 메모리 모듈들에 대한 접근 요청의 횟수를 줄일 수 있다. 제2도에는 모든 프로세서 모듈에 캐쉬가 포함된 공유 메모리 다중 프로세서 시스템의 구성을 도시하였다.Even if the bandwidth of the common bus increases, one memory module can handle one memory access request at a time, resulting in memory conflicts that occur when multiple processor modules attempt to access one memory module at the same time. System degradation due to the present still exists. Therefore, in order to reduce common bus access collisions and memory access collisions, it is important to reduce the traffic between the processor module and the memory module as much as possible, and the processor module is a block of memory modules that the processor is expected to use frequently. The number of access requests to common buses and memory modules can be reduced by storing them in their own caches, which have a smaller capacity than memory modules but provide much faster access times. 2 illustrates a configuration of a shared memory multiprocessor system in which a cache is included in all processor modules.
그러나, 이러한 공유 메모리 다중 프로세서 시스템의 경우, 각 프로세서 모듈은 자체 캐쉬를 사용하므로, 하나의 프로세서 모듈이 자체 캐쉬에 저장된 어떤 블록에 대한 쓰기 작업을 수행하게 되면, 그 쓰기 작업의 결과가 다른 모든 프로세서 모듈들내의 자체 캐쉬에 저장되어 있는 해당 블록들에 반영되어야 하는 소위 캐쉬 일관성 유지 문제(cache coherence problem)가 발생한다. 이러한 캐쉬 일관성 유지 문제를 해결함과 동시에 프로세서 모듈의 버스 및 메모리 접근 요청의 횟수를 줄이기 위해 여러 다양한 캐쉬 일관성 유지 방식이 제안되어 왔다. 이러한 방식 가운데, 공통 버스를 가진 공유 메모리 다중 프로세서 시스템에 가장 널리 사용되는 방식중의 하나가 쓰기-무효화 캐쉬 일관성 유지 방지(write-invalidate cache coherence scheme)이다.However, in such shared-memory multiprocessor systems, each processor module uses its own cache, so if one processor module writes to a block stored in its own cache, the result of that write operation is different for all other processors. There is a so-called cache coherence problem that must be reflected in those blocks that are stored in their own cache in the modules. In order to solve the cache coherence problem and to reduce the number of bus and memory access requests of the processor module, various cache coherency methods have been proposed. Among these schemes, one of the most widely used schemes for shared memory multiprocessor systems with a common bus is a write-invalidate cache coherence scheme.
이러한 쓰기-무효화 캐쉬 일관성 유지 방식에 있어, 프로세서 모듈내의 캐쉬는 내부에 저장된 각 블록에 대해 상태 정보를 유지하며, 이 상태 정보는 적어도 세 개의 가능한 캐쉬 블록 상태(즉, MODIFIED, INVALID 및 SHARED)중의 하나를 표현한다. MODIFIED 상태는 해당 블록이 해당 캐쉬내에서 가장 최근에 변경되었으나, 해당 메모리 모듈은 아직 갱신되지 않았음을 의미한다. INVALID 상태는 해당 블록이 다른 프로세서 모듈에 의해 무효화되었음을 의미한다. SHARED 상태는 해당 블록이 해당 캐쉬내에서 변경되지 않았으며, 다른 프로세서 모듈에 의해 무효화되지도 않았고, 또한 해당 메모리 모듈내에 저장된 해당 블록과 그 내용상 일치한다는 것을 의미한다. 상기 캐쉬 일관성 유지 방식은, 프로세서 모듈내의 프로세서로 부터의 블록 접근 요청에 대해, 일반적으로 다음과 같이 동작한다. 다음의 캐쉬 일관성 유지 방식을 설명함에 있어, 블록 대체라 함은 프로세서 모듈에서 캐쉬 실패가 발생했을 때 자체 캐쉬내에서 대체될 블록을 선정하며, 선정된 블록이 갱신된 상태(예를 들면, MODIFIED 상태)로 존재하였다면 그 블록(즉, 그 블록의 갱신된 사본)을 해당 메모리 모듈로 축출(copy-back)하는 작업이다.In this write-invalidate cache coherence scheme, the cache within the processor module maintains state information for each block stored therein, which state information is stored in at least three possible cache block states (i.e., MODIFIED, INVALID, and SHARED). Express one. The MODIFIED state means that the block has been changed most recently in the cache, but the memory module has not yet been updated. The INVALID state means that the block has been invalidated by another processor module. The SHARED state means that the block has not been altered in the cache, invalidated by another processor module, and is consistent in content with the block stored in the memory module. The cache coherence scheme generally operates as follows for a block access request from a processor in a processor module. In the following cache coherence method, block replacement selects a block to be replaced in its own cache when a cache failure occurs in a processor module, and the selected block is updated (for example, a MODIFIED state). ), It copies the block (ie, an updated copy of that block) to the corresponding memory module.
읽기 적중(read-hit)-상기 프로세서 모듈내의 캐쉬가 읽기 요청된 블록을 SHARED 나 MODIFIED 상태로 보유하고 있는 경우로서, MODIFIED 상태로 보유하고 있으면, 상기 프로세서 모듈은 그 블록에 대한 읽기 작업을 수행한다.Read-hit-A cache in the processor module holds a block that has been requested to be read in the SHARED or MODIFIED state. If the cache is held in the MODIFIED state, the processor module performs a read operation on the block. .
읽기 실패(read-miss)-상기 프로세서 모듈 내의 캐쉬가 읽기 요청된 블록을 보유하고 있지 않거나, 읽기 요청된 불럭을 INVALID 상태로 보유하고 있는 경우(무효화 캐쉬 실패)로서, 그 블록에 보유하고 있지 않다면, 상기 프로세서 모듈은 블록 대체를 먼저 수행하고 다음의 동작을 수행하며, 그렇지 않은 경우 다음의 동작을 즉시 수행한다.Read-miss-if the cache in the processor module does not hold a block that has been requested to read, or has a block that has been requested to be read in an INVALID state (an invalidation cache failure) In this case, the processor module performs block replacement first and performs the following operation. Otherwise, the processor module immediately performs the following operation.
상기 프로세서 모듈은 메모리 모듈과 다른 프로세서 모듈에 그 블록에 대한 브로드캐스트 읽기 요청(broadcast read request)을 전송한다. 다른 프로세서 모듈중 어느 하나가 요청된 블록을 MODIFIED 상태로 보유하고 있을 경우, 그 프로세서 모듈은 상기 브로드캐스트 읽기 요청에 대해 그 블록을 제공하고 메모리 모듈내의 해당 블록을 갱신한다. 다른 프로세서 모듈이 요청된 블록을 MODIFIED 상태로 보유하고 있지 않을 경우, 요청된 블록을 보유하고 있는 메모리 모듈이 상기 브로드캐스트 읽기 요청에 대해 그 블록을 제공한다. 이에 따라, 상기 프로세서 모듈은 요청한 블록을 수신하여 SHARED 상태로 자체 캐쉬에 저장하고, 읽기 작업을 수행한다.The processor module sends a broadcast read request for the block to a memory module and another processor module. If one of the other processor modules holds the requested block in the MODIFIED state, the processor module provides the block for the broadcast read request and updates the corresponding block in the memory module. If another processor module does not hold the requested block in the MODIFIED state, the memory module holding the requested block provides that block for the broadcast read request. Accordingly, the processor module receives the requested block, stores it in its own cache in the SHARED state, and performs a read operation.
쓰기 적중(write-hit)-상기 프로세서 모듈내의 캐쉬가 쓰기 요청된 블록을 SHARED 나 MODIFIED 상태로 보유하고 있는 경우로서, MODIFIED 상태로 보유하고 있으며, 상기 프로세서 모듈은 그 블록에 대한 쓰기 작업을 즉시 수행한다. 상기 프로세서 모듈 내의 캐쉬가 요청된 블록을 SHARED 상태로 보유하고 있을 경우, 상기 프로세서 모듈은 다른 프로세서 모듈에게 그 블록에 대한 무효화 요청(invalidation request)을 전송하여 다른 모든 프로세서 모듈이 그들의 캐쉬내에 저장된 요청된 블록의 사본(copy)을 무효화시키도록 한 후, 자체 캐쉬에 저장된 요청된 블록에 대한 쓰기 작업을 수행하며, 그 캐쉬 블록의 상태를 MODIFIED로 변경한다.Write-hit-A cache in the processor module holds a block in which a write request is made in a SHARED or MODIFIED state, and holds it in a MODIFIED state, and the processor module immediately performs a write operation on the block. do. If the cache in the processor module holds the requested block in the SHARED state, the processor module sends an invalidation request for the block to another processor module so that all other processor modules are stored in their cache. After invalidating a copy of the block, a write operation is performed on the requested block stored in its own cache, and the state of the cache block is changed to MODIFIED.
쓰기 실패(read-miss)-상기 프로세서 모듈 내의 캐쉬가 쓰기 요청된 블럭을 보유하고 있지 않거나, 쓰기 요청된 블록을 INVALID 상태로 보유하고 있는 경우(무효화 캐쉬 실패)로서, 그 블록을 캐쉬에 보유하고 있지 않다면, 상기 프로세서 모듈은 블록 대체를 먼저 수행하고 다음의 동작을 수행하며, 그렇지 않은 경우 다음의 동작을 즉시 수행한다.Read-miss-if the cache in the processor module does not hold a block that has been requested to write, or if a block that has been requested to hold a write requested in the INVALID state (invalid cache failure), holds that block in the cache If not, the processor module performs block replacement first and performs the following operation, otherwise it performs the next operation immediately.
상기 프로세서 모듈은 그 블록에 대한 무효화 요청을 내포한 브로드캐스트 읽기 요청(broadcast read with invalidation request)을 메모리 모듈 및 다른 프로세서 모듈로 전송하여, 다른 모든 프로세서 모듈이 그들의 캐쉬내에 저장된 요청된 블록의 사본을 무효화시킴과 동시에, 다른 프로세서 모듈중의 하나가 요청된 블록의 사본을 MODIFIED 상태로 보유하고 있을 경우, 그 프로세서 모듈이 상기 무효화된 요청을 내포한 브로드캐스트 읽기 요청에 대해 그 블록을 제공한다. 이와 달리, 어느 프로세서 모듈도 요청된 블럭을 MODIFIED 상태로 보유하고 있지 않은 경우, 요청된 블록을 보유하고 있는 메모리 모듈이 상기 무효화 요청을 내포한 브로드캐스트 읽기 요청에 대해 그 블록을 제공한다. 이에 따라, 상기 프로세서 모듈은 요청한 블록을 수신하여 자체 캐쉬에 MODIFIED 상태로 저장하며, 쓰기작업을 수행한다.The processor module sends a broadcast read with invalidation request containing the invalidation request for that block to the memory module and other processor modules so that all other processor modules can copy a copy of the requested block stored in their cache. In addition to invalidating, if one of the other processor modules holds a copy of the requested block in the MODIFIED state, the processor module provides the block for the broadcast read request containing the invalidated request. Alternatively, if neither processor module holds the requested block in the MODIFIED state, the memory module holding the requested block provides the block for the broadcast read request containing the invalidation request. Accordingly, the processor module receives the requested block, stores it in its cache in the MODIFIED state, and performs a write operation.
상술한 쓰기-무효화 캐쉬 일관성 유지 프로토콜의 다양한 변형이, 예를 들어 Per Stenstrom 의 A Survey of Cash Coherence Schemes for Multiprocessors(IEE Computer, June 1990, pp. 12-24), J. Archibald 및 J. L. Baer 의 Cache Coherence Protocols : Evaluation Using A Multiprocessor Simulation Model(ACM Transaction on Computer Systems, Nov. 1986, pp. 273-298) 등에 기술되어 있다.Various variations of the write-invalidate cache coherence protocol described above are described, for example, in Per Stenstrom's A Survey of Cash Coherence Schemes for Multiprocessors (IEE Computer, June 1990, pp. 12-24), J. Archibald and JL Baer. Coherence Protocols: Evaluation Using A Multiprocessor Simulation Model (ACM Transaction on Computer Systems, Nov. 1986, pp. 273-298).
그러나, 상술한 다양한 쓰기-무효화 캐쉬 일관성 유지 프로토콜들을 구동하며, 종래의 메모리 모듈 구조를 가진 제2도에서와 같은 전형적인 공유 메모리 다중 프로세서 시스템도 분리형 트랜잭션 버스를 이용한 다중 프로세서 환경하에서 하기하는 바와 같은 성능 감소 요인이 발생한다.However, typical shared memory multiprocessor systems, such as those in FIG. 2 with the conventional memory module architecture, which drive the various write-invalid cache coherence protocols described above, also perform as described below under a multiprocessor environment using a separate transaction bus. Decrease factors occur.
상술한 바와 같이, 쓰기-무효화 캐쉬 일관성 유지 방식에 있어서 프로세서 모듈은 읽기 실패가 발생할 경우에 해당 블록에 대한 브로드캐스트 읽기 요청을 쓰기 실패가 발생할 경우에 그 블록에 대한 무효화 요청을 내포한 브로드캐스트 읽기 요청을 메모리 모듈과 다른 프로세서 모듈로 전송한다. 또한 분리형 트랜잭션 버스는 메모리 접근요청 및 그에 상응하는 응답 사이에 버스를 양도(release)하여, 그 기간동안 버스가 다른 모듈에 의해 사용될 수 있도록 허용한다.As described above, in the write-invalidate cache coherency maintaining scheme, the processor module reads a broadcast read request for a block when a read failure occurs, and a broadcast read including an invalidation request for the block when a write failure occurs. Send the request to a memory module and another processor module. The separate transaction bus also releases the bus between the memory access request and the corresponding response, allowing the bus to be used by other modules during that period.
이러한 상황에서, 프로세서 모듈 1에서 블록 X에 대한 무효화 캐쉬 실패가 발생하고, 이어서 프로세서 모듈 2에서 다른 블록 Y에 대한 캐쉬 실패가 발생하면, (메모리 모듈이 하나이고, 이 메모리 모듈에 하나의 요청 버퍼(request buffer)가 있다고 가정할 때) 프로세서 모듈 1은 블록 X에 대한 브로드캐스트 읽기 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청을 프로세서 모듈 2는 블록 Y에 대한 브로트케스트 읽기 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청을 메모리 모듈 및 다른 프로세서 모듈로 전송한다. 이에 따라, 메모리 모듈은, 제3도의 예에서 도시된 바와 같이, 블록 X에 대한 브로드캐스트 읽기 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청에 대해 블록 X에 대한 메모리 읽기 동작을 시작하나, 메모리 모듈은 한번에 하나의 메모리 접근 요청을 처리할 수 있기 때문에, 블록 Y에 대한 브로드캐스트 읽기 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청은 요청 버퍼에 저장한다. 따라서, 프로세서 모듈 2로부터의 요청에 대한 처리는 메모리 모듈이 프로세서 모듈 1로 부터의 요청에 대한 응답을 완료하거나, 블록 X를 MODIFIED 상태로 보유하고 있는(즉, 블록 X의 갱신된 사본을 보유하고 있는)다른 프로세서 모듈이 메모리 모듈을 대신하여 블록X를 제공할 것이라는 정보를 메모리 모듈로 전송할 때까지 지연된다.In this situation, if an invalidation cache failure occurs for block X in processor module 1, and then a cache failure occurs for another block Y in processor module 2, then (one memory module and one request buffer in this memory module). processor module 1 implies a broadcast read request for block X or a broadcast read request containing an invalidation request. Processor module 2 implies a broadcast request or invalidation request for block Y. Sends one broadcast read request to a memory module and another processor module. Accordingly, the memory module starts a memory read operation for block X for a broadcast read request for block X or a broadcast read request containing an invalidation request, as shown in the example of FIG. Because a can process only one memory access request at a time, a broadcast read request for block Y or a broadcast read request containing an invalidation request is stored in the request buffer. Thus, processing a request from processor module 2 may result in the memory module completing a response to a request from processor module 1, or holding block X in the MODIFIED state (i.e., holding an updated copy of block X). Delay until the other processor module sends information to the memory module that it will provide block X on behalf of the memory module.
제4도는 위의 작업 과정중 프로세서 모듈 1로부터의 요청에 대해 프로세서 모듈 3이 블록 X를 MODIFIED 상태로 보유하고 있는 경우에 대한 동작을 상용화된 TICOM 다중 프로세서(최창열등의 공유 메모리와 단일 버스로 구성된 다중 프로세서의 하드웨어 성능분석, 한국정보과학회 논문집, Vol. 16, No. 5, pp.,399-409, September 1989. 참조)와 Encore Multimax 다중 프로세서 (Daniel Tabak 의 Multiprocessors, Prentice Hall, 1990., Shanin 등에 허여된 미합중국 특허 제 5,067,071 참조)등에 사용된 분리형 트랜잭션 버스의 타이밍도를 이용하여 예시한 것이다. 상술한 바와 같이 메모리 모듈은 요청된 블록 X 가 다른 프로세서 모듈들의 캐쉬에 어떠한 상태로 저장되어 있는지 알 수 없기 때문에 전송된 브로드캐스트 읽기 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청등에 대해 일단 메모리 접근 작업을 시작하며, 나중에 블록 X를 갱신된 상태로 저장하고 있는 프로세서 모듈 3이 그 블록을 제공할 것이라는 스누핑 결과를 전송하면 처리중인 해당 작업을 중지하고 단계 4에서 다음 요청, 즉 블록 Y에 대한 요청의 처리를 시작하게 된다.4 shows the operation of the case where processor module 3 holds block X in MODIFIED state for a request from processor module 1 during the above operation. Hardware Performance Analysis of Multiple Processors, Vol. 16, No. 5, pp., 399-409, September 1989.) and Encore Multimax multiprocessors (Daniel Tabak's Multiprocessors, Prentice Hall, 1990., Shanin This is illustrated using the timing diagram of the separate transaction bus used in US Pat. No. 5,067,071, et al. As mentioned above, since the memory module does not know what state the requested block X is stored in the cache of other processor modules, the memory access operation is performed once for a broadcast read request or a broadcast read request including an invalidation request. If you later send a snooping result that processor module 3, which is storing block X in an updated state, will provide that block, it stops that task in process and the next request in block 4, the request for block Y, Processing will begin.
그러나, 메모리 모듈이 전송된 블록 X에 대한 브로드캐스트 읽기 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청에 대해 다른 프로세서 모듈중의 하나가 블록 X를 MODIFIED 상태로 보유하고 있으며, 그 프로세서 모듈이 메모리 모듈을 대신하여 블록 X를 제공한다는 것을 제 4도의 단계1에서 미리 알 수 있다면, 메모리 모듈은 블록 Y에 대한 브로드캐스트 읽기 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청에 대한 처리를 제4도의 단계 2에서 지연없이 시작하여 실질적인 메모리 접근 시간을 감소시킬 수 있다.However, one of the other processor modules holds block X in the MODIFIED state for a broadcast read request for a block X to which the memory module has been sent or a broadcast read request containing an invalidation request, and the processor module has a memory module. If it can be known in advance in step 1 of FIG. 4 that block X is provided instead of the memory module, the memory module performs processing for a broadcast read request for block Y or a broadcast read request containing an invalidation request. You can start without delay in order to reduce the actual memory access time.
따라서, 본 발명의 주된 목적은 분리형 트랜잭션 버스를 이용한 다중 프로세서 시스템을 위한 개선된 메모리 모듈을 제공하여, 캐쉬 일관성을 유지함과 동시에 실질적인 메모리 접근 시간을 줄이는 것이다.It is therefore a primary object of the present invention to provide an improved memory module for a multiprocessor system using a separate transaction bus, thereby maintaining cache coherency and reducing the actual memory access time.
상기 목적을 달성하기 위한 본 발명에 따른 메모리 모듈 내에 디렉토리 캐쉬를 포함하는 다중 프로세서는 분리형 트랜잭션 프로토콜하에서 동작하는 시스템 버스, 상기 시스템 버스에 결합된 적어도 하나 이상의 메모리 모듈과, 각각 상기 시스템 버스에 결합된 다수의 프로세서 모듈을 갖는 공유 메모리 다중 프로세서에 있어서, 상기 메모리 모듈은 메모리와 메모리보다 더 빠른 접근 시간을 제공하는 디렉토리 캐쉬를 분리하여 포함하며, 상기 메모리에 저장된 각 블록들에 대해 그 메모리 블록이 유효한지 여부를 명시하는 상태 정보를 상기 디렉토리 캐쉬에 유지한다.A multiprocessor comprising a directory cache in a memory module according to the present invention for achieving the above object is a system bus operating under a separate transaction protocol, at least one memory module coupled to the system bus, and each coupled to the system bus. In a shared memory multiprocessor having a plurality of processor modules, the memory module includes a directory and a directory cache that provides faster access time than the memory, and the memory block is valid for each block stored in the memory. State information specifying whether or not is kept in the directory cache.
이하, 본 발명의 실시예들을 첨부한 도면을 참조하여 상세히 설명한다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.
먼저, 제5도를 참조하면, 본 발명의 개선된 메모리 모듈을 사용한 공유 메모리 다중 프로세서의 예시적인 블록도가 도시되어 있다. 도시되 바와 같이, 공유 메모리 다중 프로세서에는 적어도 하나 이상의 메모리 모듈(100)과 적어도 두 개 이상의 프로세서 모듈(200,200')이 분리형 트랜잭션 버스(300)에 의해 결합되어 있다. 각 프로세서 모듈(200혹은 200')은 프로세서(400 혹은 400') 및 캐쉬(500 혹은 500')를 포함하며, 본 발명의 개선된 메모리 모듈(100 혹은 100')은 디렉토리 캐쉬(600 혹은 600')와 메모리 (700 혹은 700')를 포함한다.First, referring to FIG. 5, an exemplary block diagram of a shared memory multiprocessor using the improved memory module of the present invention is shown. As shown, at least one memory module 100 and at least two processor modules 200 and 200 ′ are coupled to a shared memory multiprocessor by a separate transaction bus 300. Each processor module 200 or 200 'includes a processor 400 or 400' and a cache 500 or 500 ', and the improved memory module 100 or 100' of the present invention is a directory cache 600 or 600 '. ) And memory (700 or 700 ').
이하 본 발명의 실시예를 설명함에 있어, 메모리 모듈(100 혹은 100')은 모두 동일한 구조 및 기능을 가지고 있으므로, 이하 메모리 모듈(100)에 대하여만 상세히 기술한다.In describing the embodiments of the present invention, since the memory modules 100 or 100 'have the same structure and function, only the memory module 100 will be described in detail below.
메모리(700)와 캐쉬(500 혹은 500')에서 데이터는 동일한 크기의 블록으로 분리되어 저장된다. 캐쉬(500 혹은 500')에 저장되어 있는 하나의 블록에 대한 접근은 프로세서(400 혹은 400')로부터 그 블록에 대한 접근 요청과 함께 그 블록의 물리적 주소(physical address)가 전달됨으로써 개시되며, 캐쉬(500 혹은 500')는 저장된 각 캐쉬 블록에 대해, 그 블록의 현재 상태(예를 들어 MODIFIED 나 SHARED, INVALID 상태등)를 나타내는 캐쉬 블록 상태 정보(cache block state information)를 유지한다.In the memory 700 and the cache 500 or 500 ', data is divided into blocks of the same size and stored. Access to a block stored in the cache 500 or 500 'is initiated by passing the block's physical address along with a request for access to the block from the processor 400 or 400'. For each cache block stored (500 or 500 '), cache block state information indicating the current state of the block (e.g., MODIFIED, SHARED, INVALID status, etc.) is maintained.
상술한 바와 같이, 쓰기-무효화 캐쉬 일관성 유지 방식에 있어서 한 프로세서 모듈(200)에서 어떤 블록에 대한 무효화 캐쉬 실패가 발생하면, 그 블록에 대한 브로드캐스트 읽기 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청이 메모리 모듈(100)과 다른 프로세서 모듈들(200')에 전송되며 종래의 메모리 모듈(100)은 그 요청에 대해 해당 블록이 다른 프로세서 모듈들(200')중의 하나에 갱신된 상태(예를 들어 MODIFIED 상태)로 저장되어 있는지 여부를 다른 프로세서 모듈들(200')이 알려줄 때까지 알 수 없기 때문에, 전송된 요청에 대해 대부분의 경우에 프로세서 모듈들(200')중의 어느 하나가 그 블록을 제공함에도 불구하고 그 요청을 처리를 시작하며, 이로 인해 메모리 접근 지연 시간이 증가한다. 그러나, 본 발명에서와 같이, 메모리 모듈(100)이 메모리(700)에 저장된 각 블록에 대해 그 블록이 유효한지 여부, 즉, 프로세서 모듈들(200, 200')중의 어느 하나가 그 블록을 갱신된 상태(예를 들면 MODIFIED 상태)로 저장하고 있는지 여부를 메모리(700)보다 더 빠른 접근 시간을 제공하는 디렉토리 캐쉬(600)에 유지하여, 전송된 요청 대해 디렉토리 캐쉬(600)에 접근하여 해당 블록에 대한 메모리 접근을 시작할 지 여부를 미리 결정한다면, 불필요한 메모리 접근이 제거되어 실질적인 메모리 접근 시간을 줄일 수 있다.As described above, when an invalidation cache failure for a block occurs in one processor module 200 in the write-invalid cache coherence maintaining scheme, a broadcast read request including a broadcast read request or an invalidation request for the block is generated. The memory module 100 and other processor modules 200 'are transmitted to the conventional memory module 100 in a state in which the block is updated to one of the other processor modules 200' in response to the request. For example, it is not known until another processor module 200 'tells whether it is stored in a MODIFIED state, so in most cases one of the processor modules 200' In spite of providing it, it will start processing the request, which increases the memory access latency. However, as in the present invention, whether the block is valid for each block stored in the memory 700, that is, any one of the processor modules 200, 200 'updates the block. The directory cache 600, which provides faster access time than the memory 700, whether or not it is being stored in a closed state (e.g., MODIFIED state), thereby accessing the directory cache 600 for the transmitted request By deciding in advance whether or not to start memory access for a server, unnecessary memory access can be eliminated to reduce the actual memory access time.
이러한 개선을 성취하기 위하여, 본 발명은 메모리 모듈(100)내에 메모리(700)와 메모리(700) 보다 더 빠른 접근 시간을 제공하는 디렉토리 캐쉬(600)를 분리하여 유지하며, 디렉토리 캐쉬(600)는 제6도에서와 같이 메모리(700)에 저장된 각 메모리 블록에 대해 프로세서 모듈(200, 200')의 수에 관계없이 그 블록이 유효한지 여부, 즉 프로세서 모듈(200 혹은 200')이 그 블록을 갱신된 상태(예를 들면, MODIFIED 상태)로 저장하고 있는지 여부를 표시하는 두가지 메모리 블록 상태 정보, 예를 들면 DIRTY 상태와 CLEAN 상태중의 하나를 저장한다.In order to achieve this improvement, the present invention maintains a separate directory cache 600 in the memory module 100 that provides faster access time than the memory 700 and the memory 700, the directory cache 600 is As shown in FIG. 6, for each memory block stored in the memory 700, whether the block is valid regardless of the number of processor modules 200 and 200 ', that is, the processor module 200 or 200' Stores two pieces of memory block state information that indicate whether it is saving in an updated state (eg, MODIFIED state), for example one of the DIRTY state and the CLEAN state.
DIRTY 상태는 메모리(700)에 저장된 해당 메모리 블록이 유효하지 않으며, 프로세서 모듈(200 혹은 200')내의 캐쉬 (500 혹은 500')에 그 블록이 갱신된 상태(예를 들면 MODIFIED 상태)로 저장되어 있음을 의미한다. CLEAN 상태는 DIRTY가 아닌 상태, 즉, 메모리(700)에 저장된 해당 메모리 블록이 아마도 유효할 것이라는 것을 의미한다.In the DIRTY state, the corresponding memory block stored in the memory 700 is not valid and is stored in the cache 500 or 500 'in the processor module 200 or 200' as an updated state (for example, a MODIFIED state). It means that there is. The CLEAN state means that the non-DIRTY state, that is, the corresponding memory block stored in memory 700, is probably valid.
이제 5 도를 다시 살펴보면, 상기 공유 메모리 다중 프로세서의 주요 요소간의 통신은 시스템(300) 상에서 이루어진다. 시스템 버스(300)는 3개의 버스, 즉, 어드레스 버스, 데이터 버스 및 제어 버스를 포함하고, 상술한 바와 같은 분리형 트랜잭션 프로토콜을 사용한다. 제어 버스는 또한 COMMAND, M-INHIBIT 라인을 포함할 수 있다.Referring back to FIG. 5 again, communication between major elements of the shared memory multiprocessor occurs on system 300. System bus 300 includes three buses, an address bus, a data bus, and a control bus, and uses a separate transaction protocol as described above. The control bus may also include COMMAND, M-INHIBIT lines.
COMMAMD 라인은 메모리 모듈(100) 및 프로세서 모듈(200, 200') 사이에 브로드캐스트 읽기 요청, 무효화를 내포한 브로드캐스트 읽기 요청, 무효화 요청, 블록 축출 요청을 포함하는 명령어들을 전송한다.The COMMAMD line transmits instructions including a broadcast read request, a broadcast read request with invalidation, an invalidation request, and a block eviction request between the memory module 100 and the processor module 200, 200 ′.
M-INHIBIT 라인은 캐쉬 실패가 발생한 프로세서 모듈(200)에 의해 전송된 어떤 블록에 대한 브로드캐스트 읽기 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청에 대해 다른 프로세서 모듈(200')이 그 블록을 갱신된 상태(예를 들어 MODIFIED 상태)로 저장하고 있는지 여부를 메모리 모듈(100)에게 알리기 위해 사용된다. 즉, 그 블록을 갱신된 상태로 저장하고 있는 프로세서 모듈(200')이 존재하면, 그 프로세서 모듈(200')은 M-INHIBIT 라인을 통해 M-INHIBIT 신호값을 인가한다. 한편, 메모리 모듈(100)은 M-INHIBIT 라인을 검사하여 M-INHIBIT 신호가 인가되었을 경우 상기 읽기 요청에 대한 처리를 중단할 수 있다.The M-INHIBIT line is updated by another processor module 200 'for a broadcast read request that contains a broadcast read request or invalidation request for a block sent by the processor module 200 where the cache failure occurred. The memory module 100 is used to inform the memory module 100 whether the memory module 100 is stored in the stored state (eg, the MODIFIED state). That is, if there is a processor module 200 'that stores the block in an updated state, the processor module 200' applies the M-INHIBIT signal value through the M-INHIBIT line. Meanwhile, the memory module 100 may stop the processing of the read request when the M-INHIBIT signal is applied by checking the M-INHIBIT line.
이제, 제7도를 살펴보면, 본 발명의 일실시예에 따른 메모리 모듈(100)의 구현예가 블록도 형태로 도시되었다. 도시된 바와 같이 메모리 모듈(100)은 각각의 메모리 블록을 저장하는 데이터 저장 장치(710): 저장된 각각의 메모리 블록에 대해, 상술한 바와 같은 적어도 2개의 메모리 블록 상태중 하나의 상태를 저장하기 위한 디렉토리 캐쉬(600): 메모리 제어기(720): 메모리 제어기(720)의 제어하에 메모리(700) 및 디렉토리 캐쉬(600)를 시스템 버스(300)에 접속하는 메모리-버스 인터페이스(730): 시스템 버스(300)를 통해 전송된 요청을 처리하기에 앞서 일시적으로 보관하거나 시스템(300) 버스로 출력하기 위한 응답을 일시적으로 보관하는 작업 버퍼(740)를 포함한다.Referring now to FIG. 7, an embodiment of a memory module 100 according to an embodiment of the present invention is shown in block diagram form. As shown, the memory module 100 stores a data storage device 710 for storing each memory block: for each of the stored memory blocks, for storing one of at least two memory block states as described above. Directory cache 600: Memory controller 720: Memory-bus interface 730 that connects memory 700 and directory cache 600 to system bus 300 under the control of memory controller 720: System bus ( A job buffer 740 is temporarily stored prior to processing the request sent via 300 or temporarily storing a response for output to the system 300 bus.
어느 한 프로세서 모듈(200 혹은 200')이 어떤 블록에 대한 무효화 요청을 내포한 브로드캐스트 읽기 요청이나 브로드캐스트 읽기 요청, 무효화 요청, 블록 축출 요청등을 시스템 버스(300)을 통해 전송하면, 메모리 제어기(720)의 스누핑 관리부는 메모리-버스 인테페이스(730)를 통해 그 요청과 함께 전송되는 물리적 어드레스를 이용하여 해당 블록에 대한 디렉토리 캐쉬(600) 내의 상태 정보를 검사/변경하며, 요청의 종류와 그 블록에 대한 디렉토리 캐쉬(600)로 부터의 상태 정보에 따라 해당 요청을 무시할 지 여부를 결정한다. 즉, 그 요청이 브로드 캐스트 읽기 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청이고 해당 블록에 대한 대렉토리 캐쉬(600)로 부터의 상태 정보가 DIRTY 일 경우 메모리 제어기 (720)의 스누핑관리부는 그 요청을 무시하여 작업 버퍼(740)에 저장하지 않으며, CLEAN인 경우 기존의 메모리 모듈과 동일하게 동작하여 해당 요청을 작업 버퍼(740)에 저장한다.When a processor module 200 or 200 ′ transmits a broadcast read request, a broadcast read request, an invalidation request, a block eviction request, etc., including an invalidation request for a block, through the system bus 300, a memory controller The snooping management unit 720 checks / modifies the state information in the directory cache 600 for the block using the physical address transmitted with the request through the memory-bus interface 730, and the type and the type of request. Status information from the directory cache 600 for the block determines whether to ignore the request. That is, if the request is a broadcast read request containing a broadcast read request or an invalidation request and the status information from the directory cache 600 for the block is DIRTY, the snooping management unit of the memory controller 720 may request the request. In this case, the operation is performed in the same manner as that of the existing memory module, and the request is stored in the work buffer 740.
메모리 제어기(720)의 메모리 관리부는 프로세서 모듈(200 혹은 200')로부터 전송된 요청이 작업 버퍼(740)에 저장되어 있을 경우, 작업 버퍼(740)에 접근하여 처리해야 할 요청을 해석하고 그 요청의 물리적 어드레스를 이용하여 해당 블럭에 대한 메모리 접근을 수행하는 등의 데이터 저장 장치(710)의 전반적인 동작을 제어 및 동기화시킨다. 메모리 제어기(720)는 또한 메모리 접근 중인 요청이나 작업 버퍼에 저장된 요청에 대해 M-INHIBIT 라인등을 검사하여 해당 요청을 무시하는 등의 일을 수행한다. 또한 요청된 블록을 시스템 버스(300)를 통해 해당 프로세서 모듈(200)로 전송하기 위해 데이터 저장 장치(710)로부터 수신된 해당 블록을 작업 버퍼(740)에 저장하며, 메모리-버스 인터페이스(730)를 통해 해당 블록을 요청한 프로세서 모듈로 전송하는 작업등을 수행한다.When a request sent from the processor module 200 or 200 'is stored in the job buffer 740, the memory manager of the memory controller 720 accesses the job buffer 740, interprets the request to be processed, and requests the request. The overall address of the data storage device 710, such as performing a memory access to the block using the physical address of the control and synchronization. The memory controller 720 also checks the M-INHIBIT line and the like for the request being accessed in the memory or the request stored in the working buffer and ignores the request. In addition, in order to transmit the requested block to the processor module 200 through the system bus 300, the corresponding block received from the data storage device 710 is stored in the working buffer 740, and the memory-bus interface 730 Transmits the block to the requested processor module through the controller.
한편, 본 발명과 유사한 개념이 Synapse N+1 다중 프로세서(Steven J. Frank의 Tightly Coupled Multiprocessor System Speeds Memory-access Times, Electronics, Jan. 1984, James Archibald등의 Cache Coherence Protocols : Evaluation Using A Multiprocessor Simulation Model, ACM Trans. on Computer System, Vol. 4, No. 4, pp 273-298, Nov. 1986 참고)에 사용되었는데 Synapse N+1 다중 프로세서는 하기하는 바와 같이 본 발명과는 많은 차이점을 가지고 있다. 먼저, Synapse N+1 다중 프로세서는 제8도에서 처럼 본 발명과는 달리 디렉토리 캐쉬(600)를 별도로 유지하지 않고 각 메모리 블록내에 한 비트의 태그 비트를 더 유지하여 상술한 DIRTY 또는 CLEAN 에 대한 정보를 저장한다. 따라서, 본 발명이 전송된 요청에 대해 해당 블록에 대한 메모리 접근을 시작할 지 여부를 빠른 디렉토리 캐쉬(600)에 접근하여 결정하여 불필요한 메모리 접근을 방지하는데 반해 이 시스템은 본 발명과는 달리 전송된 요청에 대해 무조건 메모리 접근을 시작하여 접근(access)된 블록의 태그 비트 정보에 따라 접근된 블록을 요청한 프로세서 모듈로 전송할 지 여부를 결정한다. 즉, 본 발명은 메모리 모듈의 구조 및 DIRTY/CLEAN 비트를 유지하는 방법과 목적 및 작용에 있어서 Synapse N+1 다중 프로세서와는 많은 차이를 보인다. 또한, 본 발명이 하기하는 바와 같은 무효화 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청, 무효화 요청, 블록 축출 요청에 대해 디렉토리 캐쉬(600) 상태 정보를 변환/유지하는데 반해 Synapse N+1 다중 프로세서 시스템은 무효화 요청을 사용하지 않으며, 무효화 요청을 내포한 브로드캐스트 읽기 요청이나 브로드캐스트 읽기 요청, 블록 축출 요청에 대해서만 태그 비트를 변환한다.Meanwhile, a concept similar to the present invention is Synapse N + 1 multiprocessor (Tightly Coupled Multiprocessor System Speeds Memory-access Times of Steven J. Frank, Electronics, Jan. 1984, James Archibald et al. Cache Coherence Protocols: Evaluation Using A Multiprocessor Simulation Model , ACM Trans.on Computer System, Vol. 4, No. 4, pp 273-298, Nov. 1986), Synapse N + 1 multiprocessor has many differences from the present invention as described below. First, unlike the present invention, as shown in FIG. 8, the Synapse N + 1 multiprocessor maintains one bit of tag bit in each memory block without maintaining the directory cache 600 separately, thereby providing information on the above-described DIRTY or CLEAN. Save it. Therefore, the present invention determines whether to start the memory access to the corresponding block for the transmitted request by accessing the fast directory cache 600 to prevent unnecessary memory access, whereas the system is different from the present invention. In this case, memory access is started unconditionally to determine whether to transmit the accessed block to the requesting processor module according to the tag bit information of the accessed block. In other words, the present invention differs significantly from the Synapse N + 1 multiprocessor in terms of the structure of the memory module and the method, purpose and operation of retaining the DIRTY / CLEAN bits. In addition, the present invention converts / maintains directory cache 600 state information for a broadcast read request, invalidation request, and block eviction request including an invalidation request or an invalidation request as described below. Does not use an invalidation request, and converts the tag bits only for broadcast read requests, broadcast read requests, and block egress requests that contain invalidation requests.
이하, 본 발명의 일실시예에 따라 디렉토리 캐쉬(600)를 포함하는 메모리 모듈(100)의 예시적인 동작을 상술한 세 개의 캐쉬 블록 상태 정보, 즉, MODIFIED 상태, INVALID 상태, SHARED 상태를 유지하는 상기 쓰기-무효화 캐쉬 일관성 유지 방식의 읽기 적중, 읽기 실패, 쓰기 적중 및 쓰기 실패의 각 경우에 대해 기술한다. 각 경우에 있어 제4도의 프로세서 모듈(200)내의 프로세서(400)가 캐쉬(500)로 어떤 블록에 접근하기 위한 요청을 생성하였다고 가정한다. 또한, 하기의 실시예를 설명함에 있어, 블록 대체라 함은 캐쉬 실패가 발생했을 때, 프로세서 모듈(200)이 자체 캐쉬(500)내에서 대체될 블록을 선정하며, 선정된 블록이 갱신된 상태, 즉 MODIFIED 상태로 존재하였다면 그 블록(즉, 그 블록의 갱신된 사본)을 블록 축출 요청을 통해 해당 메모리 모듈로 축출(copy-back)하는 작업이다. 이때, 본 발명의 메모리 모듈(100)은 블록 축출 요청에 대해 해당 블록에 대한 대렉토리 캐쉬(600)내의 상태 정보를 CLEAN 상태로 변환하며, 해당 메모리 블록을 갱신한다.Hereinafter, an exemplary operation of the memory module 100 including the directory cache 600 according to an embodiment of the present invention maintains three cache block state information, namely, a MODIFIED state, an INVALID state, and a SHARED state. Each case of the read hit, read failure, write hit, and write failure of the write-invalidate cache coherency maintaining scheme will be described. In each case it is assumed that the processor 400 in the processor module 200 of FIG. 4 has made a request to access a block with the cache 500. In addition, in the following embodiments, block replacement means that the processor module 200 selects a block to be replaced in its own cache 500 when a cache failure occurs, and the selected block is updated. In other words, if it exists in the MODIFIED state, the block (ie, an updated copy of the block) is copied to the corresponding memory module through a block eject request. At this time, the memory module 100 of the present invention converts the state information in the directory cache 600 for the block to the CLEAN state in response to the block eviction request, and updates the corresponding memory block.
읽기 적중-상기 프로세서 모듈(200)내의 캐쉬(500)가 읽기 요청된 블록을 SHARED 나 MODIFIED 상태로 보유하고 있는 경우로서, 상기 프로세서 모듈(200)은 메모리 모듈(100)로 어떠한 요청의 전송도 없이 그 블록에 대한 읽기 작업을 수행한다.Read hit-When the cache 500 in the processor module 200 holds a block that has been requested to be read in the SHARED or MODIFIED state, the processor module 200 does not transmit any request to the memory module 100. Read the block.
읽기 실패-상기 프로세서 모듈(200) 내의 캐쉬(500)가 읽기 요청된 블록을 보유하고 있지 않거나, 읽기 요청된 불록을 INVALID 상태로 보유하고 있는 경우로서, 그 블록을 캐쉬(500)에 보유하고 있지 않다면, 상기 프로세서 모듈(200)은 블록 대체를 먼저 수행하고 다음의 동작을 수행하며, 그렇지 않은 경우 다음의 동작을 즉시 수행한다.Read failure-The cache 500 in the processor module 200 does not hold a block that has been requested to read, or holds a block that has been requested to read in an INVALID state, and does not hold the block in the cache 500. If not, the processor module 200 performs block replacement first and performs the following operation, otherwise, immediately performs the next operation.
상기 프로세서 모듈(200)은 메모리 모듈(100)과 다른 프로세서 모듈(200')에 그 블록에 대한 브로드캐스트 읽기 요청(broadcast read request)을 전송한다. 이때, 요청된 블록을 MODIFIED 상태로 저장하고 있는 프로세서 모듈(200')은 메모리 모듈(100)에게 처리중이거나 작업 버퍼에 저장중인 해당 요청을 무시할 것을 알리기 위해 M-INHIBIT 라인에 M-INHIBIT 신호를 인가하며, 그 요청을 전송한 프로세서 모듈(200)에게 해당 요청을 재전송할 것을 지시하는 동시에 블록 축출 요청을 통해 메모리 모듈(100)을 먼저 갱신하거나, 다른 종류의 요청을 사용하여 해당 블록을 프로세서 모듈(200)로 전송하는 동시에 메모리 모듈(100)이 해당 블록에 대한 디렉토리 캐쉬(600)내의 상태 정보를 CLEAN 상태로 변경하고 해당 메모리 블록을 갱신하게 한다. 메모리 모듈(100)은 요청된 블록의 디렉토리 캐쉬(600)내의 상태 정보를 조사하여 그 블록의 상태가 DIRTY 일 경우(다른 프로세서 모듈(200')중 어느 하나가 요청된 블록을 MODIFIED 상태로 보유하고 있는 경우) 그 요청을 무시한다. 하지만 그 블록의 상태가 CLEAN 일 경우 메모리 모듈(100)은 종래의 메모리 모듈의 동작처럼 상기 브로드캐스트 읽기 요청에 대해 그 블록을 제공할 준비를 하며, M-INHIBIT 라인을 조사하여 M-INHIBIT 신호선이 인가되어 있을 경우에 그 요청의 처리를 중단할 수 있다. 요청한 블록을 수신한 상기 프로세서 모듈(200)은 그 블록을 SHARED 상태로 자체 캐쉬(500)에 저장하며, 읽기 작업을 수행한다.The processor module 200 transmits a broadcast read request for the block to the memory module 100 and the other processor module 200 ′. At this time, the processor module 200 ′ storing the requested block in the MODIFIED state sends an M-INHIBIT signal to the M-INHIBIT line to notify the memory module 100 to ignore the request being processed or stored in the working buffer. Authorizes, and instructs the processor module 200 which transmitted the request to retransmit the request, and at the same time updates the memory module 100 through a block eviction request, or updates the block using another kind of request. At the same time, the memory module 100 changes the state information in the directory cache 600 for the block to the CLEAN state and updates the memory block. The memory module 100 examines the state information in the directory cache 600 of the requested block, and if the state of the block is DIRTY (any one of the other processor modules 200 'holds the requested block in the MODIFIED state). If so) ignore the request. However, when the state of the block is CLEAN, the memory module 100 prepares to provide the block for the broadcast read request, as in the operation of the conventional memory module, and examines the M-INHIBIT line to detect the M-INHIBIT signal line. If authorized, the request can be aborted. Upon receiving the requested block, the processor module 200 stores the block in its own cache 500 in the SHARED state and performs a read operation.
쓰기 적중-상기 프로세서 모듈(200)내의 캐쉬(500)가 쓰기 요청된 블록을 SHARED 나 MODIFIED 상태로 보유하고 있는 경우로서, MODIFIED 상태로 보유하고 있으면, 상기 프로세서 모듈(200)은 메모리 모듈(100)로 어떠한 요청의 전송도 없이 그 블록에 대한 쓰기 작업을 수행한다. 상기 프로세서 모듈(200)내의 캐쉬(500)가 요청된 블록을 SHARED 상태로 보유하고 있을 경우, 상기 프로세서 모듈(200)은 다른 프로세서 모듈들(200')과 메모리 모듈(100)에게 그 블록에 대한 무효화 요청을 전송한 후, 자체 캐쉬에 저장된 요청된 블록에 대한 쓰기 작업을 수행하며, 그 캐쉬 블록의 상태를 MODIFIED로 변경한다. 이 요청에 대해 해당 블록을 자체 캐쉬(500')에 저장하고 있는 다른 프로세서 모듈들(200')은 해당 블록의 상태를 INVALID 상태로 변환하며, 메모리 모듈(100)은 해당 블록의 디렉코리 캐쉬(600) 상태 정보를 DIRTY 상태로 변환한다.Write hit-When the cache 500 in the processor module 200 holds a block that has been requested to be written in the SHARED or MODIFIED state, and if it is held in the MODIFIED state, the processor module 200 is the memory module 100. Writes to the block without sending any request. If the cache 500 in the processor module 200 holds the requested block in the SHARED state, the processor module 200 tells the other processor modules 200 'and the memory module 100 about the block. After sending the invalidation request, a write operation is performed on the requested block stored in its own cache, and the state of the cache block is changed to MODIFIED. For this request, the other processor modules 200 'storing the block in its own cache 500' convert the state of the block to the INVALID state, and the memory module 100 stores the directory cache of the block. 600) Convert the state information to the DIRTY state.
쓰기 실패-상기 프로세서 모듈(200) 내의 캐쉬(500)가 쓰기 요청된 블록을 보유하고 있지 않거나, 쓰기요청된 블록을 INVALID 상태로 보유하고 있는 경우로서, 그 블록을 캐쉬(500)에 보유하고 있지 않다면, 상기 프로세서 모듈(200)은 블록 대체를 먼저 수행하고 다음의 동작을 수행하며, 그렇지 않은 경우 다음의 동작을 즉시 수행한다.Write Failed-If the cache 500 in the processor module 200 does not hold a block that has been requested to write, or has a block that has been requested to write in an INVALID state, it does not hold the block in the cache 500. If not, the processor module 200 performs block replacement first and performs the following operation, otherwise, immediately performs the next operation.
상기 프로세서 모듈(200)은 그 블록에 대한 무효화 요청을 내포한 브로드캐스트 읽기 요청을 메모리 모듈(100) 및 다른 프로세서 모듈(200')로 전송한다. 이때, 요청된 블록을 MODIFIED 상태로 저장하고 있는 프로세서 모듈(200')은 그 요청을 전송한 프로세서 모듈(200')에게 해당 블록을 전송하는 동시에 그 블록의 캐쉬 상태를 INVALID 상태로 변환하며, 그 블럭을 SHARED 상태로 저장하고 있는 프로세서 모듈(200')은 그 블럭의 캐쉬 상태를 INVALID 상태로 변환한다. 메모리 모듈(100)은 요청된 블록의 디렉토리 캐쉬(600)내의 상태 정보를 조사하여 그 블록의 상태가 CLEAN 일 경우(다른 프로세서 모듈(200')이 요청된 블록을 MODIFIED 상태로 보유하고 있지 않을 경우) 상기 무효화 요청을 내포한 브로드캐스트 읽기 요청에 대해 그 블록을 제공하는 동시에 그 블록의 디렉토리 캐쉬(600) 상태 정보를 DIRTY 상태로 변화하며, 그 블록의 상태가 DIRTY일 경우(다른 프로세서 모듈(200')중 어느 하나가 요청된 블록을 MODIFIED 상태로 보유하고 있는 경우) 그 요청을 무시한다. 요청한 블록을 수신한 상기 프로세서 모듈(200)은 그 블록을 자체 캐쉬(500)에 MODIFIED 상태로 저장하며, 쓰기작업을 수행한다.The processor module 200 transmits a broadcast read request including an invalidation request for the block to the memory module 100 and the other processor module 200 ′. At this time, the processor module 200 'storing the requested block in the MODIFIED state transmits the block to the processor module 200' which has transmitted the request, and simultaneously converts the cache state of the block into the INVALID state. The processor module 200 ′ storing the block in the SHARED state converts the cache state of the block into the INVALID state. The memory module 100 examines the state information in the directory cache 600 of the requested block, and if the state of the block is CLEAN (the other processor module 200 'does not hold the requested block in the MODIFIED state). If the block is provided for the broadcast read request containing the invalidation request and the directory cache 600 state information of the block is changed to the DIRTY state, and the state of the block is DIRTY (another processor module 200) If any one of the ')' holds the requested block in the MODIFIED state, the request is ignored. Upon receiving the requested block, the processor module 200 stores the block in its cache 500 in the MODIFIED state and performs a write operation.
이하, 본 발명의 또다른 일실시예에 따라 디렉토리 캐쉬(600)를 포함하는 메모리 모듈(100)의 예시적인 동작을 4개의 캐쉬 블록 상태 정보, 즉, MODIFIED 상태, EXCLUSIVE 상태, SHARED 상태, INVALID 상태를 유지하며, 기존의 상용화된 다중 프로세서 시스템에 널리 사용(장성태 등의 개선된 MESI 쓰기-무효화 스누핑 캐쉬 일관성 유지 프로토콜, 정보과학회 논문지 제21권 제11호, pp.2163-2173, 1994년 11월: Shreekant Thakkar 의 The Symmetry Multiprocessor System' ICPP, Vol. I, pp.303-310, August 1988 등에 기술되어 있음)되는 MESI 상기 쓰기-무효화 캐쉬 일관성 유지 방식의 읽기 적중, 읽기 실패, 쓰기 적중 및 쓰기 실패의 각 경우에 대해 기술한다. 상기 캐쉬 상태중에 EXCLUSIVE 상태는 캐쉬에 저장된 해당 해당 블록이 유효하고, 그 블록율 유효한 상태로 저장하고 있는 프로세서 모듈이 없다는 것을 의미하며, 이 상태를 유지하기 위해 시스템 버스상에 Shared 라인을 필요로 한다. Shared 라인은 프로세서 모듈로 부터의 임의의 블록에 대한 브로드캐스트 읽기 요청에 대해 그 블록을 유효한 상태(즉, EXCLUSIVE 상태나 SHARED 상태, DIRTY 상태)로 저장하고 있는 프로세서 모듈이 그 사실을 읽기 요청을 전송한 프로세서 모듈에게 알리기 위해 사용한다. 하기의 실시예를 설명함에 있어, 블록 대체라 함은 캐쉬 실패가 발생했을 때, 프로세서 모듈(200)이 자체 캐쉬(500)내에서 대체될 블록을 선정하며, 선정된 블록이 갱신된 상태, 즉 MODIFIED 상태로 존재하였다면 그 블록(즉, 그 블록의 갱신된 사본)을 블록 축출 요청을 통해 해당 메모리 모듈로 축출(copy-back)하는 작업이다. 이때, 본 발명의 메모리 모듈(100)은 블록 축출 요청에 대해 해당 블록에 대한 디렉토리 캐쉬(600)내의 상태 정보를 CLEAN 상태로 변환하며, 메모리 모듈내의 해당 블록을 갱신한다.Hereinafter, an exemplary operation of the memory module 100 including the directory cache 600 according to another embodiment of the present invention is described by four cache block state information, that is, MODIFIED state, EXCLUSIVE state, SHARED state, INVALID state It is widely used in the existing commercialized multiprocessor system (advanced MESI write-invalid snooping cache coherency protocol such as Jang Sung-tae, Journal of KIISE, Vol. 21 No. 11, pp.2163-2173, November 1994 MESIs described in Shreekant Thakkar's The Symmetry Multiprocessor System 'ICPP, Vol. I, pp. 303-310, August 1988) read, invalidation, write hit and write failure of the write-invalidate cache coherence scheme. Each case is described. The EXCLUSIVE state of the cache state means that the corresponding block stored in the cache is valid, and there is no processor module storing the block rate in a valid state. A shared line is required on the system bus to maintain this state. . The shared line sends a read request to a processor module that stores a block in a valid state (that is, an EXCLUSIVE state, SHARED state, or DIRTY state) for a broadcast read request for any block from the processor module. Used to notify one processor module. In the following embodiments, block replacement means that when a cache failure occurs, the processor module 200 selects a block to be replaced in its own cache 500, and the selected block is updated. If it is in the MODIFIED state, the block (ie, an updated copy of the block) is copied to the corresponding memory module through a block evict request. At this time, the memory module 100 of the present invention converts the state information in the directory cache 600 for the block to the CLEAN state in response to the block eviction request, and updates the corresponding block in the memory module.
읽기 적중-상기 프로세서 모듈(200)내의 캐쉬(500)가 읽기 요청된 블록을 SHARED 나 EXCLUSIVE, MODIFIED 상태로 보유하고 있는 경우로서, 상기 프로세서 모듈(200)은 메모리 모듈(100)로 어떠한 요청의 전송도 없이 그 블록에 대한 읽기 작업을 수행한다.Read hit-When the cache 500 in the processor module 200 holds a block in which the read request is in a SHARED, EXCLUSIVE, or MODIFIED state, the processor module 200 transmits any request to the memory module 100. It also reads the block without doing anything.
읽기 실패-상기 프로세서 모듈(200) 내의 캐쉬(500)가 읽기 요청된 블록을 보유하고 있지 않거나, 읽기 요청된 블록을 INVALID 상태로 보유하고 있는 경우로서, 그 블록을 캐쉬(500)에 보유하고 있지 않다면, 상기 프로세서 모듈(200)은 블록 대체를 먼저 수행하고 다음의 동작을 수행하며, 그렇지 않은 경우 다음의 동작을 즉시 수행한다.Read failure-when the cache 500 in the processor module 200 does not hold a block that has been requested to read or when the block that has been read is held in an INVALID state, the block is not held in the cache 500. If not, the processor module 200 performs block replacement first and performs the following operation, otherwise, immediately performs the next operation.
상기 프로세서 모듈(200)은 메모리 모듈(100)과 다른 프로세서 모듈(200')에 그 블록에 대한 브로드캐스트 읽기 요청을 전송한다. 이때, 요청된 블록을 유효한 상태, 즉, MODIFIED 상태나 SHARED 상태, EXCLUSIVE 상태로 저장하고 있는 프로세서 모듈(200')은 shared 라인에 Shared 신호를 인가한다. 그 유효한 블록의 상태가 EXCLUSIVE 상태인 경우 프로세서 모듈(200')은 또한 그 블록의 캐쉬 상태를 SHARED 상태로 변환한다. 그 유효한 블록의 상태가 MODIFIED 상태인 경우 프로세서 모듈(200')은 메모리 모듈(100)에게 처리중이거나 작업 버퍼에 저장중인 해당 요청을 무시할 것을 알리기 위해 M-INHIBIT 라인에 M-INHIBIT 신호를 인가하며, 그 요청을 전송한 프로세서 모듈(200)에게 해당 요청을 재전송할 것을 지시하는 동시에 블록 축출 요청을 통해 메모리 모듈(100)을 먼저 갱신하거나, 다른 종류의 요청을 사용하여 해당 블록을 프로세서 모듈(200)로 전송하는 동시에 메모리 모듈(100)이 저장하고 있는 해당 블록에 대한 디렉토리 캐쉬(600)내의 상태 정보를 CLEAN 상태로 변환하고 해당 블록을 갱신하게 한다. 메모리 모듈(100)은 요청된 블록의 디렉토리 캐쉬(600)내의 상태 정보를 조사하여 그 블록의 상태가 DIRTY 일 경우(다른 프로세서 모듈(200')중 어느 하나가 요청된 블록을 MODIFIED 상태로 보유하고 있는 경우) 그 요청을 무시한다. 하지만 그 블록의 상태가 CLEAN 일 경우(MESI 캐쉬 프로토콜의 경우 하기하는 바와 같이 EXCLUSIVE 상태의 블록에 쓰기 적중인 경우, 해당 프로세서 모듈은 메모리 모듈로 어떠한 요청의 전송도 없이 그 캐쉬 블록의 상태를 MODIFIED 상태로 변환하기 때문에 다른 프로세서 모듈이 그 블록을 MODIFIED 상태로 저장하고 있을 수 있음) 메모리 모듈(100)은 종래의 메모리 모듈의 동작처럼 상기 브로드캐스트 읽기 요청에 대해 그 블록을 제공할 준비를 하며, M-INHIBIT 라인을 조사하여 M-INHIBIT 신호선이 인가되어 있을 경우에 그 요청의 처리를 중단할 수 있다. 요청한 블록을 수신한 상기 프로세서 모듈(200)은 전송한 요청에 대해 Shared 라인에 Shared 신호선이 인가되어 있지 않을 경우에 그 블럭을 EXCLUSIVE 상태로, 그렇지 않을 경우 그 블록을 SHARED 상태로 자체 캐쉬(500)에 저장하며, 읽기 작업을 수행한다.The processor module 200 transmits a broadcast read request for the block to the memory module 100 and the other processor module 200 ′. At this time, the processor module 200 ′ storing the requested block in a valid state, that is, in a MODIFIED state, SHARED state, or EXCLUSIVE state, applies a shared signal to the shared line. If the state of the valid block is the EXCLUSIVE state, the processor module 200 'also converts the cache state of the block to the SHARED state. If the state of the valid block is a MODIFIED state, the processor module 200 'applies an M-INHIBIT signal to the M-INHIBIT line to notify the memory module 100 to ignore the request being processed or stored in the working buffer. Instructing the processor module 200 which has transmitted the request to retransmit the request and updating the memory module 100 first through a block eviction request or by using another type of request to update the block using the processor module 200. At the same time, the memory module 100 converts the state information in the directory cache 600 for the corresponding block stored in the memory module 100 into the CLEAN state and updates the corresponding block. The memory module 100 examines the state information in the directory cache 600 of the requested block, and if the state of the block is DIRTY (any one of the other processor modules 200 'holds the requested block in the MODIFIED state). If so) ignore the request. However, if the state of the block is CLEAN (in the case of the MESI cache protocol, as described below, the write module is hitting the block in the EXCLUSIVE state, the corresponding processor module sends the state of the cache block without sending any request to the memory module. Memory module 100 is ready to provide the block for the broadcast read request, as in the operation of a conventional memory module, M may be storing the block in the MODIFIED state. You can stop the processing of the request if the M-INHIBIT signal line is present by examining the -INHIBIT line. Receiving the requested block, the processor module 200 sends the block to the EXCLUSIVE state when the shared signal line is not applied to the shared line for the transmitted request. Otherwise, the processor module 200 sets the block to the SHARED state. Save to and perform a read operation.
쓰기 적중-상기 프로세서 모듈(200)내의 캐쉬(500)가 쓰기 요청된 블록을 EXCLUSIVE 나 SHARED 또는 MODIFIED 상태로 보유하고 있는 경우로서, MODIFIED 상태로 보유하고 있으면, 상기 프로세서 모듈(200)은 메모리 모듈(100)로 어떠한 요청의 전송도 없이 그 블록에 대한 쓰기 작업을 수행하며, EXCLUSIVE 상태로 보유하고 있으면, 상기 프로세서 모듈(200)은 메모리 모듈(100)로 어떠한 요청의 전송도 없이 그 블록에 대한 쓰기 작업을 수행하며, 그 캐쉬 블록의 상태를 MODIFIED 상태로 변환한다. 상기 프로세서 모듈(200)내의 캐쉬(500)가 요청된 블록을 SHARED 상태로 보유하고 있을 경우, 상기 프로세서 모듈(200)은 다른 프로세서 모듈들(200')과 메모리 모듈(100)에게 그 블록에 대한 무효화 요청을 전송한 후, 자체 캐쉬에 저장된 요청된 블록에 대한 쓰기 작업을 수행하며, 그 캐쉬 블록의 상태를 MODIFIED로 변경한다. 이 요청에 대해 해당 블록을 자체 캐쉬(500')에 저장하고 있는 다른 프로세서 모듈들(200')은 해당 블록의 상태를 INVALID 상태로 변환하며, 메모리 모듈(100)은 해당 블록의 디렉토리 캐쉬(600) 상태 정보를 DIRTY 상태로 변환한다.Write hit-When the cache 500 in the processor module 200 holds a block that has been requested to be written in the EXCLUSIVE, SHARED, or MODIFIED state. If the cache is held in the MODIFIED state, the processor module 200 includes a memory module ( 100) performs a write operation on the block without transmitting any request, and if held in the EXCLUSIVE state, the processor module 200 writes to the block without transmitting any request to the memory module 100. It performs the work and converts the state of the cache block to the MODIFIED state. If the cache 500 in the processor module 200 holds the requested block in the SHARED state, the processor module 200 tells the other processor modules 200 'and the memory module 100 about the block. After sending the invalidation request, a write operation is performed on the requested block stored in its own cache, and the state of the cache block is changed to MODIFIED. The other processor modules 200 'storing the block in its own cache 500' for this request convert the state of the block into the INVALID state, and the memory module 100 stores the directory cache 600 of the block. ) Convert status information to DIRTY state.
쓰기 실패-상기 프로세서 모듈(200) 내의 캐쉬(500)가 쓰기 요청된 블록을 보유하고 있지 않거나, 쓰기 요청된 블록을 INVALID 상태로 보유하고 있는 경우로서, 그 블록을 캐쉬(500)에 보유하고 있지 않다면, 상기 프로세서 모듈(200)은 블록 대체를 먼저 수행하고 다음의 동작을 수행하며, 그렇지 않은 경우 다음의 동작을 즉시 수행한다.Write Failed—The cache 500 in the processor module 200 does not hold a block that has been requested to write, or holds a block that has been requested to be in an INVALID state, and does not hold the block in the cache 500. If not, the processor module 200 performs block replacement first and performs the following operation, otherwise, immediately performs the next operation.
상기 프로세서 모듈(200)은 그 블록에 대한 무효화 요청을 내포한 브로드캐스트 읽기 요청을 메모리 모듈(100) 및 다른 프로세서 모듈(200')로 전송한다. 이때, 요청된 블록을 MODIFIED 상태로 저장하고 있는 프로세서 모듈(200')은 메모리 모듈(100)에게 처리중이거나 작업 버퍼에 저장중인 해당 요청을 무시할 것을 알리기 위해 M-INHIBIT 라인에 M-INHIBIT 신호를 인가하며, 그 요청을 전송한 프로세서 모듈(200)에게 해당 블록을 전송하는 동시에 그 블록의 캐쉬 상태를 INVALID 상태로 변환한다. 그 블록을 EXCLUSIVE 나 SHARED 상태로 저장하고 있는 프로세서 모듈(200')은 그 블록의 캐쉬 상태를 INVALED 상태로 변환한다. 메모리 모듈(100)은 요청된 블록의 디렉토리 캐쉬(600)내의 상태 정보를 조사하여 그 블록의 상태가 DIRTY일 경우(다른 프로세서 모듈(200')중 어느 하나가 요청된 블록을 MODIFIED 상태로 보유하고 있는 경우) 그 요청을 무시한다. 하지만, 그 블록의 상태가 CLEAN 일 경우(MESI 캐쉬 프로토콜의 경우 상술한 바와 같이 EXCLUSIVE 상태의 블록에 쓰기 적중인 경우, 해당 프로세서 모듈은 메모리 모듈로 어떠한 요청의 전송도 없이 그 캐쉬 블록의 상태를 MODIFIED 상태로 변환하기 때문에 다른 프로세서 모듈이 그 블록을 MODIFIED 상태로 저장하고 있을 수 있음) 메모리 모듈(100)은 그 블록의 디렉토리 캐쉬(200) 상태 정보를 DIRTY 상태로 변환/유지하는 동시에 종래의 메모리 모듈의 동작처럼 상기 무효화 요청을 내포한 브로드캐스트 읽기 요청에 대해 그 블록을 제공할 준비를 하며, M-INHIBIT 라인을 조사하여 M-INHIBIT 신호선이 인가되어 있을 경우에 그 요청의 처리를 중단할 수 있다. 요청한 블록을 수신한 상기 프로세서 모듈(200)은 그 블록을 자체 캐쉬(500)에 MODIFIED 상태로 저장하며, 쓰기 작업을 수행한다.The processor module 200 transmits a broadcast read request including an invalidation request for the block to the memory module 100 and the other processor module 200 ′. At this time, the processor module 200 ′ storing the requested block in the MODIFIED state sends an M-INHIBIT signal to the M-INHIBIT line to notify the memory module 100 to ignore the request being processed or stored in the working buffer. The processor transmits the block to the processor module 200 that has transmitted the request, and converts the cache state of the block to the INVALID state. The processor module 200 ', which stores the block in the EXCLUSIVE or SHARED state, converts the cache state of the block into the INVALED state. The memory module 100 examines the state information in the directory cache 600 of the requested block, and when the state of the block is DIRTY (any one of the other processor modules 200 'holds the requested block in the MODIFIED state). If so) ignore the request. However, if the state of the block is CLEAN (when the MESI cache protocol is writing to the block in the EXCLUSIVE state as described above, the processor module MODIFIED the state of the cache block without sending any request to the memory module). (The other processor module may be storing the block in the MODIFIED state because it is converted to the state.) The memory module 100 converts / maintains the directory cache 200 state information of the block to the DIRTY state, and at the same time, the conventional memory module The operation may be prepared to provide the block for the broadcast read request containing the invalidation request, and the processing of the request may be stopped when the M-INHIBIT signal line is authorized by examining the M-INHIBIT line. . Upon receiving the requested block, the processor module 200 stores the block in its cache 500 in the MODIFIED state and performs a write operation.
본 발명의 실시예를 설명함에 있어 메모리 모듈(100,100')이 디렉토리 캐쉬(600)와 모리(100)으로 구성된 경우에 대해서만 설명했으나, 본 발명은 제9도에서처럼 메모리 모듈(100,100')중의 일부가 메모리 (700)만으로 구성된 경우에도 동일하게 적용될 수 있음을 이해하여야 한다. 이 경우 메모리(700)만으로 구성된 메모리 모듈(100)은 기존의 메모리 모듈과 동일하게 동작하여 상술한 실시예들에 있어서 해당 블록이 메모리 모듈내에 CLEAN 상태로 저장되어 있는 경우에 해당된다.In the description of the embodiment of the present invention, only the case where the memory modules 100 and 100 'are configured as the directory cache 600 and the memory 100 is described. However, as shown in FIG. 9, a part of the memory modules 100 and 100' It should be understood that the same may be applied to the case where only the memory 700 is configured. In this case, the memory module 100 composed of only the memory 700 operates in the same manner as the existing memory module, and thus corresponds to a case in which the corresponding block is stored in the CLEAN state in the memory module in the above-described embodiments.
이상에서 살펴본 바와 같이 본 발명의 메모리 모듈내에 디렉토리 캐쉬를 포함하는 다중 프로세서는 메모리 모듈에서의 병목현상을 완화시키며, 빠른 메모리 접근으로 인해 쓰기-무효화 캐쉬 일관성 유지 프로토콜을 구동할 경우에 시스템의 성능을 향상시킬 수 있다.As described above, the multiprocessor including the directory cache in the memory module of the present invention alleviates the bottleneck in the memory module and improves the performance of the system when the write-invalid cache coherency protocol is driven due to the fast memory access. Can be improved.
Claims (5)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019950002102A KR0164919B1 (en) | 1995-02-07 | 1995-02-07 | Multi-processor having directory cache in memory module |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019950002102A KR0164919B1 (en) | 1995-02-07 | 1995-02-07 | Multi-processor having directory cache in memory module |
Publications (2)
Publication Number | Publication Date |
---|---|
KR960032190A KR960032190A (en) | 1996-09-17 |
KR0164919B1 true KR0164919B1 (en) | 1999-01-15 |
Family
ID=19407722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019950002102A KR0164919B1 (en) | 1995-02-07 | 1995-02-07 | Multi-processor having directory cache in memory module |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR0164919B1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100782592B1 (en) | 2006-08-10 | 2007-12-06 | 엠텍비젼 주식회사 | Device having shared memory and method for controlling shared memory |
-
1995
- 1995-02-07 KR KR1019950002102A patent/KR0164919B1/en not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR960032190A (en) | 1996-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5335335A (en) | Multiprocessor cache snoop access protocol wherein snoop means performs snooping operations after host bus cycle completion and delays subsequent host bus cycles until snooping operations are completed | |
KR0163231B1 (en) | Coherency and synchronization mechanisms for i/o channel controller in a data processing system | |
Archibald et al. | Cache coherence protocols: Evaluation using a multiprocessor simulation model | |
US5426765A (en) | Multiprocessor cache abitration | |
JP2819982B2 (en) | Multiprocessor system with cache match guarantee function that can specify range | |
EP0062165B1 (en) | Multiprocessors including private and shared caches | |
EP0288649B1 (en) | Memory control subsystem | |
EP0817073B1 (en) | A multiprocessing system configured to perform efficient write operations | |
US7624236B2 (en) | Predictive early write-back of owned cache blocks in a shared memory computer system | |
US5659710A (en) | Cache coherency method and system employing serially encoded snoop responses | |
US6625698B2 (en) | Method and apparatus for controlling memory storage locks based on cache line ownership | |
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 | |
JPH10254772A (en) | Method and system for executing cache coherence mechanism to be utilized within cache memory hierarchy | |
JPH09223118A (en) | Snoop cache memory control system | |
US5263144A (en) | Method and apparatus for sharing data between processors in a computer system | |
US5511226A (en) | System for generating snoop addresses and conditionally generating source addresses whenever there is no snoop hit, the source addresses lagging behind the corresponding snoop addresses | |
US5678025A (en) | Cache coherency maintenance of non-cache supporting buses | |
US6918009B1 (en) | Cache device and control method for controlling cache memories in a multiprocessor system | |
US5761724A (en) | Write-invalidate cache system for a split transaction bus based shared memory multiprocessor | |
JPH06318174A (en) | Cache memory system and method for performing cache for subset of data stored in main memory | |
US6976128B1 (en) | Cache flush system and method | |
KR102069696B1 (en) | Appartus and method for controlling a cache | |
JPH09179779A (en) | Computer system and data transfer method | |
KR0164919B1 (en) | Multi-processor having directory cache in memory module | |
JPH06282528A (en) | Method and system for transfer of data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20120913 Year of fee payment: 15 |
|
FPAY | Annual fee payment |
Payment date: 20130903 Year of fee payment: 16 |
|
EXPY | Expiration of term |