KR0145454B1 - Multi-processor having distributed shared memory - Google Patents

Multi-processor having distributed shared memory

Info

Publication number
KR0145454B1
KR0145454B1 KR1019940037241A KR19940037241A KR0145454B1 KR 0145454 B1 KR0145454 B1 KR 0145454B1 KR 1019940037241 A KR1019940037241 A KR 1019940037241A KR 19940037241 A KR19940037241 A KR 19940037241A KR 0145454 B1 KR0145454 B1 KR 0145454B1
Authority
KR
South Korea
Prior art keywords
block
cache
local
module
processor
Prior art date
Application number
KR1019940037241A
Other languages
Korean (ko)
Other versions
KR960025061A (en
Inventor
전주식
장성태
Original Assignee
전주식
장성태
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 전주식, 장성태 filed Critical 전주식
Priority to KR1019940037241A priority Critical patent/KR0145454B1/en
Publication of KR960025061A publication Critical patent/KR960025061A/en
Application granted granted Critical
Publication of KR0145454B1 publication Critical patent/KR0145454B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • 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/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories

Abstract

본 발명은 공유 시스템 버스(system bus), 상기 시스템 버스에 결합된 적어도 하나 이상의 시스템 모듈(system module)을 갖는 분산 공유 메모리 다중 프로세서(distributed shared memory multiprocessor)에 관한 것으로, 본 다중 프로세서에 있어, 각각의 시스템 모듈은 지역 메모리 모듈과 지역 프로세서 모듈을 포함하고 지역 프로세서 모듈은 프로세서와 캐쉬를 포함하며, 또한 지역 프로세서 모듈은 상기 지역 메모리 모듈내에 저장된 각 블록들에 대해 그 블록이 유효한지 여부를 명시하는 상태 정보를 구비하는 상태 정보 저장 장치를 포함한다. 이러한 분산 공유 메모리 다중 프로세서에 의하면 공유 시스템 버스에 대한 접근 병목현상이 완화되며, 빠른 메모리 접근으로 인해 프로세서의 단위 시간당 처리량이 증가하고 메모리 접근이 신속하여 진다.The present invention relates to a distributed shared memory multiprocessor having a shared system bus and at least one system module coupled to the system bus. The system module of s includes a local memory module and a local processor module, the local processor module includes a processor and a cache, and the local processor module specifies whether the block is valid for each block stored in the local memory module. And a state information storage device having state information. With this distributed shared memory multiprocessor, access bottlenecks on shared system buses are alleviated, and fast memory access increases processor throughput per unit time and speeds up memory access.

Description

분산된 공유 메모리를 갖는 다중 프로세서Multiple processors with distributed shared memory

제1도는 전형적인 공유 메모리 다중 프로세서를 예시한 도면1 illustrates an exemplary shared memory multiprocessor.

제2도는 각 프로세서 모듈에 캐쉬가 포함된 형태의 전형적인 공유 메모리 다중 프로세서를 예시한 도면Figure 2 illustrates a typical shared memory multiprocessor with a cache included in each processor module.

제3도는 분산된 공유 메모리 다중 프로세서를 예시한 도면3 illustrates a distributed shared memory multiprocessor.

제4도 본 발명의 개선된 쓰기-무효화 캐쉬 시스템을 포함하는 분산된 공유 메모리 다중 프로세서를 예시하는 도면4 illustrates a distributed shared memory multiprocessor including an improved write-invalidate cache system of the present invention.

제5도는 제4도의 개선된 쓰기 무효화 캐쉬 시스템내에 포함된 디렉토리 캐쉬의 내용을 예시하는 도면FIG. 5 illustrates the contents of the directory cache included in the improved write invalidation cache system of FIG.

제6도는 본 발명의 개선된 쓰기-무효화 캐쉬 시스템을 블록도 형태로 예시하는 도면Figure 6 illustrates in block diagram form an improved write-invalidate cache system of the present invention.

제7도는 시스테 모듈이 지역 메모리 모듈만을 포함하여 구성될 수 있는 본 발명의 개선된 쓰기-무효화 캐쉬 시스템을 포함하는 분산된 공유 메모리 다중 프로세서의 다른 실시예를 예시하는 도면FIG. 7 illustrates another embodiment of a distributed shared memory multiprocessor including an improved write-invalidate cache system of the present invention in which a cyste module may be configured to include only local memory modules.

제8도는 시스템 모듈이 지역 프로세서 모듈만을 포함하여 구성될 수 있는 본 발명의 쓰기-무효화 캐쉬 시스템을 포함하는 분산된 공유 메모리 다중 프로세서의 또 다른 실시예를 예시하는 도면FIG. 8 illustrates another embodiment of a distributed shared memory multiple processor comprising a write-invalidate cache system of the present invention in which the system module may comprise only local processor modules.

제9도는 시스템 모듈이 지역 메모리 모듈 또는 지역 프로세서 모듈만을 포함하여 구성될 수 있는 본 발명의 개선된 쓰기-무효화 캐쉬 시스템을 포함하는 분산된 공유 메모리 다중 프로세서의 또 다른 실시예를 예시하는 도면9 illustrates another embodiment of a distributed shared memory multiprocessor including an improved write-invalidate cache system of the present invention in which the system module may comprise only a local memory module or a local processor module.

*도면의 주요부분에 대한 부호의 설명* Explanation of symbols for main parts of the drawings

100,100':지역 메모리 모듈 200,200':지역 프로세서 모듈100,100 ': Local memory module 200,200': Regional processor module

300,300':시스테 모듈 400:공유 버스300,300 ': cyste module 400: shared bus

500,500':프로세서 600,600':캐쉬500,500 ': Processor 600,600': Cache

610:프로세서 태그 캐쉬 611:비교기610: processor tag cache 611: comparator

620:버스 모니터 태그 캐쉬 621:비교기620: Bus monitor tag cache 621: Comparator

630:상태 정보 캐쉬 640:데이타 캐쉬630: state information cache 640: data cache

650:프로세서 디렉토리 캐쉬 660:캐쉬 제어기650: processor directory cache 660: cache controller

670:프로세서-버스 인터페이스670: processor-bus interface

본 발명은 다중 프로세서(multiprocessor)에 관한 것으로서, 특히, 분산된 공유 메모리(distributed shared memory)다중 프로세서를 위한 새로운 캐쉬 시스템(cache system)에 관한 것이다.TECHNICAL FIELD The present invention relates to multiprocessors and, more particularly, to a new cache system for distributed shared memory multiple processors.

공유 메모리 다중 프로세서는 시스템 컴퓨팅 파워 및 속도를 증진시키는 매우 경제적인 방법으로, 이는 고성능 마이크로 프로세서들이 공유 메모리 모듈과 공유 버스(common bus)를 통해 경제적으로 상호 결합될 수 있다는 사실에 주로 기인한다. 제1도는 공유 버스에 의해 다수의 프로세서 모듈이 다수의 공유 메모리 모듈과 결합된 전형적인 공유 메모리 다중 프로세서의 구조를 예시한다.Shared memory multiprocessors 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. Figure 1 illustrates the structure of a typical shared memory multiprocessor in which a plurality of processor modules are coupled with a plurality of shared memory modules by a shared bus.

그러나 이러한 시스템의 구성에서는 다음과 같은 두가지의 근본적인 문제점이 내재되어 있다. 즉, 다수의 프로세서 모듈이 동시에 공유 버스에 접근(access)하려할 때 발생하는 버스 충돌(bus conteniton)과 다수의 프로세서 모듈이 하나의 메모리 모듈에 동시에 접근하려할 때 발생하는 메모리 충돌(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 attempt to access a shared bus at the same time, and memory contention occurs when multiple processor modules attempt to access a memory module at the same time. This is it. These problems increase memory access time, which in turn reduces the execution time of multiple processors.

따라서, 공유 버스 접근 충돌과 메모리 접근 충돌의 횟수를 줄이기 위해서는 가능한한 프로세서 모듈과 메모리 모듈 사이의 트래픽(traffic)을 감소시키는 것이 중요하며, 프로세서 모듈은 프로세서가 자주 사용하리라고 예측되는 메모리 모듈의 블록(block)들 메모리 모듈보다 용량은 작으나 훨씬 더 빠른 접근 시간을 제공하는 자체캐쉬에 저장함으로써 공유 버스와 메모리 모듈에 대한 접근 요청의 횟수를 줄일 수 있다. 제2도에는 모든 프로세서 모듈에 캐쉬가 포함된 공유 메모리 다중 프로세서의 구성을 예시하였다.Therefore, in order to reduce the number of shared 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. Blocks can reduce the number of access requests to the shared bus and memory module by storing it in its own cache, which has a smaller capacity than the memory module but provides much faster access times. 2 illustrates a configuration of a shared memory multiprocessor including a cache in all processor modules.

그러나, 이러한 공유 메모리 다중 프로세서의 경우, 각 프로세서 모듈은 자체 캐쉬를 사용하므로, 하나의 프로세서 모듈이 자체 캐쉬에 저장된 어떤 블록에 대한 쓰기 작업을 수행하게 되면, 그 쓰기 작업의 결과가 다른 모든 프로세서 모듈내의 자체 캐쉬에 저장되어 있는 해당 블록에 반영되어야 하는 소위 캐쉬 일관성 유지 문제(cache coherence problem)가 발생한다. 이러한 캐쉬 일관성 유지 문제를 해결함과 동시에 프로세서 모듈의 버스 및 메모리 접근 요청의 횟수를 줄이기 위해 다양한 캐쉬 일관성 유지 방식이 제안되어 왔다. 이러한 방식 가운데, 공유 메모리 다중 프로세서에 가장 널리 사용되는 방식중의 하나를 예를 들면 쓰기-무효화 캐쉬 일관성 유지 방식(write-invalidate cache coherence scheme)이다.However, in the case of such shared memory multiprocessors, each processor module uses its own cache, so if one processor module writes to a block stored in its own cache, the result of the write operation is different for all other processor modules. There is a so-called cache coherence problem that must be reflected in the corresponding blocks stored in its own cache. Various cache coherence methods have been proposed to solve the cache coherency problem and to reduce the number of bus and memory access requests of the processor module. Among these schemes, one of the most widely used schemes for shared memory multiprocessors is, for example, a write-invalidate cache coherence scheme.

이러한 쓰기-무효화 캐쉬 일관성 유지 방식에 있어, 프로세서 모듈내의 캐쉬는 내부에 저장된 각 블록에 대해 상태 정보를 유지하며, 이 상태 정보는 적어도 세 개의 가능한 캐쉬 블록 상태(즉, MODIFIED, INVALID 및 SHARED)중의 하나를 표현한다. MODIFIED상태는 블록이 캐쉬내에서 가장 최근에 변경되었으나, 해당 메모리 모듈에서 아직 갱신되지 않았음을 의미한다. MODIFIED상태의 블록이 차후에 설명될 블록 대체(block replacement)절차에 따라 새로운 블록으로 대체될 경우, 그 블록은 해당 메모리 모듈로 축출(copied-back)되어야 한다. INVALID 상태는 블록이 다른 프로세서 모듈에 의해 갱신되어 무효화되었음을 의미한다. SHARED상태는 블록이 캐쉬내에서 변경되지 않았으며, 다른 프로세서 모듈에 의해 무효화되지도 않았고, 또한 해당 메모리 모듈내에 저장된 블록과 그 내용상 일치한다는 것을 의미한다. 이러한 캐쉬 일관성 유지 방식은, 프로세서 모듈내의 프로세서로 부터의 블록 접근 요청에 대해, 일반적으로 다음과 같이 동작한다.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 was most recently changed in the cache but not yet updated in the memory module. When a block in the MODIFIED state is replaced with a new block according to a block replacement procedure described later, the block must be copied back to the corresponding memory module. The INVALID state means that the block has been updated and invalidated by another processor module. The SHARED state means that the block has not changed in the cache, has not been invalidated by another processor module, and is consistent in content with the block stored in that memory module. This cache coherency scheme generally works for block access requests from processors in a processor module as follows.

읽기 적중(read-hit)-프로세서 모듈내의 캐쉬가 읽기 요청된 블록을 SHARED나 MODIFIED상태로 보유하고 있는 경우로서, 이 경우 프로세서 모듈은 그 블록에 대한 읽기 작업을 수행한다.Read-hit-A cache in a processor module holds a block that has been requested to be read, either in the SHARED or MODIFIED state, in which case the processor module reads the block.

읽기 실패(read-miss)-프로세서 모듈내의 캐쉬가 읽기 요청된 블록을 보유하고 있지 않거나, 읽기 요청된 블록을 INVALID 상태로 보유하고 있는 경우로서, 이 경우 프로세서 모듈은 메모리 모듈과 다른 프로세서 모듈에 그 블록에 대한 브로드캐스트 읽기 요청(broadcast read request)을 전송한다. 다른 프로세서 모듈중 어느 하나가 요청된 블록을 MODIFIED 상태로 보유하고 있을 경우, 그 프로세서 모듈은 상기 브로드캐스트 읽기 요청에 대해 그 블록을 제공한다. 다른 프로세서 모듈이 요청된 블록을 MODIFIED상태로 보유하고 있지 않을 경우, 요청된 블록을 보유하고 있는 메모리 모듈이 상기 브로드캐스트 읽기 요청에 대해 그 블록을 제공한다. 이에 따라, 프로세서 모듈은 요청한 블록을 수신하여 SHARED상태로 자체 캐쉬에 저장하며, 읽기 작업을 수행한다.Read-miss-The cache in a processor module does not hold a block that has been requested to read, or holds a block that has been read in an INVALID state, in which case the processor module is attached to a processor module other than the memory module. Send a broadcast read request for the block. 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. If another processor module does not hold the requested block in the MODIFIED state, the memory module holding the requested block provides the 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-The cache in a processor module holds a block for which a write request has been made in the SHARED or MODIFIED state. If the cache is held in the MODIFIED state, the processor module immediately performs a write operation on the block. If a cache in a processor module holds a requested block in the SHARED state, the processor module sends an invalidation request for that block to all other processor modules so that all other processor modules can access the requested block stored in their cache. After the copy is invalidated, 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.

쓰기 실패(write-miss)-프로세서 모듈내의 캐쉬가 쓰기 요청된 블록을 보유하고 있지 않거나, 쓰기 요청된 블록을 INVALID상태로 보유하고 잇는 경우로서, 프로세서 모듈은 그 블록에 대한 무효화 요청을 내포한 브로드캐스트 읽기 요청(broadcast read with invalidation request)을 메모리 모듈 및 다른 프로세서 모듈로 전송하여, 다른 모든 프로세서 모듈이 그들의 캐쉬내에 저장된 요청된 블록의 사본을 무효화시도록 함과 동시에, 다른 프로세서 모듈중의 하나가 요청된 블록을 MODIFIED상태로 보유하고 있을 경우 그 프로세서 모듈이 상기 무효화 요청을 내포한 브로드캐스트 읽기 요청에 대해 그 블록을 제공하도록 한다. 이와 달리, 어느 프로세서 모듈도 요청도니 블록을 MODIFIED상태로 보유하고 있지 않은 경우, 요청된 블록을 보유하고 있는 메모리 모듈이 상기 무효화 요청을 내포한 브로드캐스트 읽기 요청에 대해 그 블록을 제공한다. 이에 따라, 상기 프로세서 모듈은 요청한 블록을 수신하여 자체 캐쉬에 MODIFIED상태로 저장하며, 쓰기 작업을 수행한다.Write-miss-If the cache in the processor module does not hold a block that has been requested to write, or holds a block that has been requested to be written in the INVALID state, the processor module may send a broadcast containing an invalidation request for that block. Sends a broadcast read with invalidation request to memory modules and other processor modules, allowing all other processor modules to invalidate a copy of the requested block stored in their cache, while one of the other processor modules requests If the block is held in the MODIFIED state, the processor module provides the block for the broadcast read request including the invalidation request. Alternatively, if neither processor module holds the request or 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 Cache Coherence Schemes for Multprocessors(IEEE Computer, June 1990, pp.12-24), J. Archibald 및 J. L. Baer의 Cache Coherence Protocols:Evaluation Using A Multiprocessor Simulation Model(ACM Transactions 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 Cache Coherence Schemes for Multprocessors (IEEE Computer, June 1990, pp. 12-24), J. Archibald and JL Baer. Cache Coherence Protocols: Evaluation Using A Multiprocessor Simulation Model (ACM Transactions on Computer Systems, Nov. 1986, pp. 273-298).

그러나, 상술한 다양한 쓰기-무효화 캐쉬 일관성 유지 프로토콜을 채택하는 제2도에서와 같은 전형적인 공유 메모리 다중 프로세서도 하나의 블록에 대한 캐쉬 실패가 발생할 경우에 그 블록에 대한 브로드캐스트 읽기 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청을 공유 버스를 통해 메모리 모듈 및 다른 프로세서 모듈로 전송해야만 한다. 따라서, 공유 메모리 및 공유 버스에 병목 현상이 발생할 수 있다.However, a typical shared memory multiprocessor, such as in FIG. 2 employing the various write-invalid cache coherence protocols described above, may also request a broadcast read or invalidate request for a block if a cache fails for that block. Embedded broadcast read requests must be sent over the shared bus to memory modules and other processor modules. Thus, bottlenecks can occur in shared memory and shared buses.

제3도에 예시된 공유 메모리 다중 프로세서는 공유 메모리 다중 프로세서의 장점을 그대로 유지하면서 상술한 캐쉬 실패에 의해 생성되는 공유 버스와 공유 메모리에서의 병목 현상을 완화시킬 수 있다고 알려져 있다. 제3도에 도시된 바와 같이 분산된 공유 메모리 다중 프로세서에서 각각의 시스템 모듈은 상술한 프로세서 모듈과 공유 메모리 모듈이 하나의 시스템 모듈로 통합된 형태이다.(이하 시스템 모듈내에 있는 각 프로세서 모듈과 메모리 모듈은 각각 지역 프로세서 모듈, 지역 메모리 모듈이라 표현하며, 제2도에서 같은 전형적인 공유 메모리 다중 프로세서를 집중된(centralized)공유 메모리 다중 프로세서라 표현한다.)The shared memory multiprocessor illustrated in FIG. 3 is known to mitigate bottlenecks in shared memory and shared buses created by the cache failure described above while retaining the advantages of the shared memory multiprocessor. As shown in FIG. 3, in the distributed shared memory multiprocessor, each system module is a form in which the above-described processor module and the shared memory module are integrated into one system module (hereinafter, each processor module and memory in the system module). Each module is referred to as a local processor module and a local memory module, and the same typical shared memory multiprocessor in FIG. 2 is referred to as a centralized shared memory multiprocessor.)

이러한 분산된 공유 메모리 다중 프로세서는, 어느 메모리 모듈내에 저장된 블록에 접근해도 균등한 메모리 접근(Uniform Memory Access)시간을 제공하는 집중된 공유 메모리 다중 프로세서와는 대조적으로, 시스템 모듈이 자체 지역 메모리 모듈내에 저장된 블록에 접근하는 시간이 다른 시스템 모듈의 지역 메모리 모듈에 저장된 블록에 접근하는 시간에 비해 적게 걸리는 비균등 메모리 접근(Non Uniform Memory Access)시간을 제공할 수 있으며, 다음과 같은 관점에서 상술한 집중된 공유 메모리 다중 프로세서에서 발생하는 공유 메모리 및 공유 버스에서의 병목현상을 완화시킬 수 있다.This distributed shared memory multiprocessor, in contrast to a centralized shared memory multiprocessor, provides uniform memory access time for any block stored in any memory module, the system module is stored in its own local memory module. It is possible to provide non-uniform memory access time that takes less time to access a block stored in a local memory module of another system module than the time of accessing the block. Memory Bottlenecks in shared memory and on shared buses can be mitigated.

첫째, 집중된 공유 메모리 다중 프로세서에서 캐쉬 실패가 발생한 프로세서 모듈은 그 블록에 대한 접근 요청을 공유 버스를 통해 메모리 모듈과 다른 프로세서 모듈로 전송해야 하는데 반해, 분산된 공유 메모리 다중 프로세서에서 캐쉬 실패가 발생한 지역 프로세서 모듈은 그 블록이 자체 시스템 모듈내의 지역 메모리 모듈에 저장되어 있을 경우, 공유 버스를 사용하지 않고 자체 지역 메모리 모듈에게 그 요청을 전송하여 공유 버스에 대한 접근 병목 현상을 줄일 수 있다. 또한, 지역 메모리 모듈도 자체 시스템 모듈내의 지역 프로세서 모듈이 요청한 블록을 공유 버스를 사용하지 않고 그 지역 프로세서 모듈에게 전송할 수 있기 때문에 공유 버스에 대한 접근 병목 현상을 줄일 수 있다.First, a processor module with a cache failure in a centralized shared memory multiprocessor must send a request for access to the block to a memory module and another processor module through a shared bus. If the block is stored in a local memory module in its own system module, the processor module can reduce the access bottleneck on the shared bus by sending the request to its local memory module without using the shared bus. In addition, since the local memory module can transmit a block requested by the local processor module in its system module to the local processor module without using the shared bus, the access bottleneck on the shared bus can be reduced.

둘째, 전술한 바와 같이 캐쉬 실패가 발생한 지역 프로세서 모듈은 블록이 자체 시스템 모듈의 지역 메모리 모듈에 저장되어 있을 경우, 공유 버스를 사용하지 않고 그 지역 메모리 모듈에게 그 블록에 대한 접근 요청을 전송하고, 그 지역 메모리 모듈이 요청한 블록을 기다리는 시간이 집중된 공유 메모리 다중 프로세서 보다 줄어들어 프로세서의 시간당 처리량이 증가할 수 있다.Second, as described above, when a cache failure occurs, the local processor module transmits a request for access to the block to the local memory module without using the shared bus when the block is stored in the local memory module of the system module. The time spent waiting for the block requested by the local memory module is reduced compared to the centralized shared memory multiprocessor, which can increase the processor's hourly throughput.

그러나, 상기 분산된 공유 메모리 다중 프로세서는 상기 장점을 제공할 수 있는 구조임에도 불구하고 종래의 쓰기-무효화 캐쉬 일관성 유지 프로토콜들을 채택할 경우, 하기하는 바와 같이 상술한 장점들을 충분히 제공하지 못한다.However, even though the distributed shared memory multiprocessor is a structure capable of providing the above advantages, when the conventional write-invalidate cache coherence protocols are adopted, the above-described advantages are not sufficiently provided.

즉, 분산된 공유 메모리 다중 프로세서에 종래의 쓰기-무효화 캐쉬 일관성 유지 방식을 채택할 경우, 캐쉬 실패가 발생한 지역 프로세서 모듈은 그 블록이 다른 지역 프로세서 모듈내의 캐쉬에 갱신된 상태(예를들어 MODIFIED상태)로 저장되어 있는지 여부를 미리 알 수 없기 때문에, 공유 버스를 통해 그 블록에 대한 브로드캐스트 읽기 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청을 다른 시스템 모듈들내의 지역 프로세서 모듈과 지역 메모리 모듈로 전송해야만 한다. 즉, 캐쉬 실패가 발생한 지역 프로세서 모듈은 그 블록이 자체 메모리 모듈내에 저장되어 있고 다른 시스템 모듈들의 지역 프로세서 모듈내의 캐쉬에 갱신된 상태로 저장되어 있지 않음을 미리 알 수 있다면, 공유 버스를 사용하지 않고 자체 지역 메모리 모듈에게 그 블록에 대한 요청을 직접 전송할 수 있음에도 불구하고 공유 버스를 사용하여 그 블록에 대한 브로드캐스트 읽기 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청을 다른 시스템 모듈들의 지역 프로세서 모듈과 지역 메모리 모듈로 전송해야만 한다. 따라서, 종래의 쓰기-무효화 캐쉬 일관성 유지 방식들이 분산된 공유 메모리 다중 프로세서에 채택되어 사용되면, 상술한 분산된 공유 메모리 다중 프로세서의 장점을 충분히 발휘할 수가 없다.In other words, if the conventional write-invalidate cache coherency maintaining scheme is adopted for distributed shared memory multiprocessors, the local processor module in which the cache failure occurs is updated with a cache in another local processor module (for example, the MODIFIED state). Is not known in advance, so it is possible to send a broadcast read request for the block or a broadcast read request containing an invalidation request to the local processor module and local memory module in other system modules via the shared bus. must do it. That is, if a local processor module having a cache failure can know in advance that the block is stored in its own memory module and not updated in the cache in the local processor module of other system modules, the local processor module does not use the shared bus. Although you can send a request for that block directly to your local memory module, you can use the shared bus to send a broadcast read request for that block, including a broadcast read request or an invalidation request. It must be transferred to the memory module. Thus, if conventional write-invalidate cache coherence schemes are adopted and used in a distributed shared memory multiprocessor, the advantages of the distributed shared memory multiprocessor described above may not be fully exploited.

그러나, 캐쉬 실패가 발생한 지역 프로세서 모듈이 그 블록이 자체 지역 메모리 모듈내에 저장되어 있고 다른 시스템 모듈들의 지역 프로세서 모듈내의 캐쉬에 갱신된 상태로 저장되어 있지 않음을 판단할 수 있다면, 그 지역 프로세서 모듈은 해당 블록에 대한 브로드캐스트 읽기 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청을 다른 시스템 모듈의 지역 프로세서 모듈과 메모리 모듈로 전송할 필요가 없으므로, 자체 시스템 모듈 지역 메모리 모듈로만 그 읽기 요청을 전송하여 상술한 장점을 제공할 수 있다.However, if the local processor module where the cache failure occurred can determine that the block is stored in its own local memory module and not updated in the cache in the local processor module of other system modules, the local processor module Since it is not necessary to send a broadcast read request for a corresponding block or a broadcast read request including an invalidation request to a local processor module and a memory module of another system module, the read request is transmitted only to its own system module local memory module. Can provide advantages.

따라서, 본 발명의 주된 목적은 공유 버스를 갖는 분산된 공유 메모리 다중 프로세서를 위한 개선된 쓰기-무효화 캐쉬 시스템을 제공하여 캐쉬 일관성을 유지함과 동시에 상술한 분산된 공유 메모리 다중 프로세서의 장점인 공유 버스와 공유 메모리에 대한 접근 병목 현상의 완화와 빠른 메모리 접근 시간을 제공하자 함이다.Accordingly, a primary object of the present invention is to provide an improved write-invalidate cache system for a distributed shared memory multiprocessor with a shared bus, while maintaining cache coherency and at the same time the shared bus, which is an advantage of the distributed shared memory multiprocessor described above. The goal is to alleviate access bottlenecks on shared memory and provide faster memory access times.

상기 목적을 달성하기 위한 본 발명에 따른 분산된 공유 메모리를 갖는 다중 프로세서는 공유 시스템 버스와, 각각 지역 프로세서 모듈과 지역 메모리 모듈을 구비하며 상기 시스템 버스에 결합된 적어도 둘 이상의 시스템 모듈을 포함하는 분산된 공유 메모리 다중 프로세서에 있어서, 상기 지역 프로세서 모듈은 상기 지역 메모리 모듈내에 포함된 각각의 블록에 대해, 그 블록이 상기 지역 메모리 모듈내에서 유효한 상태로 저장되어 있는 지의 여부를 나타내는 상태 정보를 유지하는 디렉토리 캐쉬를 더 포함하는 것을 특징으로 한다.A multiprocessor having a distributed shared memory according to the present invention for achieving the above object is a distributed system comprising a shared system bus, at least two system modules each having a local processor module and a local memory module coupled to the system bus. In the shared memory multiprocessor, the local processor module maintains, for each block included in the local memory module, state information indicating whether the block is stored in a valid state in the local memory module. It further comprises a directory cache.

이하, 본 발명의 실시예들을 첨부한 도면을 참조하여 상세히 설명한다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.

먼저, 제4도를 참조하면, 본 발명의 개선된 쓰기-무효화 캐쉬 시스템을 사용한, 본 발명의 일실시예에 따른 분산된 공유 메모리 다중 프로세서의 예시적인 블록도가 개략적으로 도시되어 있다. 도시된 바와 같이, 분산된 공유 메모리 다중 프로세서에는, 통상의 분산된 공유 메모리 다중 프로세서에서와 마찬가지로, 적어도 두 개 이상의 시스템 모듈(300,300')이 공유 버스(400)에 의해 결합되어 있으며, 각 시스템 모듈은 지역 프로세서 모듈(200혹은 200')과 지역 메모리 모듈(100혹은 100')을 포함할 수 있으며, 지역 프로세서 모듈(200혹은 200')은 프로세서(500혹은 500') 및 캐쉬(600혹은 600')를 포함한다. 지역 메모리 모듈(100혹은 100')과 캐쉬(600혹은 600')에서 데이터는 동일한 크기의 블록으로 분리되어 저장된다. 캐쉬(600혹은 600')에 저장되어 있는 하나의 블록에 대한 접근은 프로세서(500혹은 500')로 부터 그 블록에 대한 접근 요청과 함께 그 블록의 물리적 주소(physical address)가 전달됨으로써 개시된다. 캐쉬(600혹은 600')는 동일한 구조 및 기능을 갖고 있으므로, 이하 캐쉬(600)에 대해서만 상세히 기술한다. 또한, 이하, 발명의 실시예를 설명함에 있어, 캐쉬(600)가 하기하는 바와같은 직접 매핑(direct mapping)방식을 사용하는 경우에 대해 설명할 것이나, 본 발명은 캐쉬(600)가 다른 매핑 방식, 예를들면, n-방향 세트 어소시어티브 매핑(n-way set-associative mapping)(Mano. M. M. Computer System Architecture, Prentice Hall, 1다 93참조)등을 사용한 경우에도 동일하게 적용될 수 있음을 이해하여야 한다.)First, referring to FIG. 4, an exemplary block diagram of a distributed shared memory multiple processor in accordance with an embodiment of the present invention, using the improved write-invalidate cache system of the present invention, is shown schematically. As shown, in a distributed shared memory multiprocessor, at least two or more system modules 300, 300 'are coupled by a shared bus 400, as in conventional distributed shared memory multiprocessors, each system module. May include a local processor module 200 or 200 'and a local memory module 100 or 100', and the local processor module 200 or 200 'may include a processor (500 or 500') and a cache (600 or 600 '). ). In the local memory module 100 or 100 'and the cache 600 or 600', data is divided into blocks of the same size and stored. Access to a block stored in the cache 600 or 600 'is initiated by passing the block's physical address along with a request for access to the block from the processor 500 or 500'. Since the cache 600 or 600 'has the same structure and function, only the cache 600 will be described in detail below. In addition, in the following description of an embodiment of the present invention, a case in which the cache 600 uses a direct mapping method as described below will be described. However, the present invention provides a mapping method in which the cache 600 is different. It is understood that the same applies to the use of, for example, n-way set-associative mapping (Mano.MM Computer System Architecture, Prentice Hall, 193). shall.)

블록의 물리적 어드레스가 n비트로 주어졌을 때, 이중, 예를들어, 하위 k비트는 캐쉬(600)내의 블록에 접근하기 위해 사용된다. 이러한 하위 k비트 부분은 블럭 어드레스라고 하며, 나머지 상위 n-k비트 부분은 태그 어드레스라 한다. 캐쉬(600)내의 각 블록은 데이터와 이에 연관된 태그 어드레스로 구성된다. 따라서, 하나의 블록이 캐쉬(600)내에 새로이 저장되는 경우, 데이터와 태그 어드레스가 함께 저장된다. 이 경우, 프로세서(500)로부터, 하나의 블록에 대한 접근 요청과 함께 그 블록의 물리적 어드레스가 캐쉬(600)에 도착하면, 물리적 어드레스의 블럭 어드레스부분은 캐쉬(600)내의 블럭에 접근하기 위해 사용되고, 물리적 어드레스의 태그 어드레스부분은 블록 어드레스부분에 의해 접근된 캐쉬(600)내의 블럭의 태그 어드레스 비트와 비교하기 위해 사용된다. 상기 물리적 어드레스의 태그 어드레스 부분과 상기 캐쉬로 부터의 태그 어드레스 비트가 일치하면, 캐쉬(600)는 그 블록을 보유하고 있음을 의미한다.When the physical address of a block is given n bits, double, eg, lower k bits, are used to access the block in cache 600. This lower k-bit part is called a block address, and the remaining upper n-k bit parts are called a tag address. Each block in cache 600 consists of data and tag addresses associated with it. Thus, when one block is newly stored in the cache 600, the data and the tag address are stored together. In this case, when the physical address of the block arrives at the cache 600 with a request for access to one block from the processor 500, the block address portion of the physical address is used to access the block in the cache 600. The tag address portion of the physical address is used to compare the tag address bits of the block in the cache 600 accessed by the block address portion. If the tag address portion of the physical address matches the tag address bits from the cache, then the cache 600 holds the block.

또한, 캐쉬(600)는 저장된 각 캐쉬 블록에 대해, 그 블록의 현재 상태(예를들어, MODIFIED나 SHARED, INVALID상태등)를 나타내는 캐쉬 블록 상태 정보(cache block state information)를 유지하여, 상술한 바와같은 캐쉬 일관성 유지 문제를 해결한다.In addition, the cache 600 maintains cache block state information indicating the current state (for example, MODIFIED, SHARED, INVALID state, etc.) of the block for each cache block stored, and thus, It solves the problem of maintaining cache coherency.

상술한 바와 같이, 분산된 공유 메모리 다중 프로세서가 종래의 쓰기-무효화 캐쉬 일관성 유지 방식만을 단순히 채택하면, 지역 프로세서 모듈에서 하나의 블록에 대한 캐쉬 실패가 발생할 경우, 그 블록이 자체 지역 메모리 모듈에 저장되어 있고 다른 지역 프로세서 모듈내의 캐쉬에 그 블록이 갱신된 상태로 저장되어 있지 않더라도 그 블록에 대한 브로드캐스트 읽기 요청이 공유 버스를 통해 다른 시스템 모듈내의 지역 메모리 모듈과 지역 프로세서 모듈에 전송되어야 한다. 따라서, 이러한 분산된 공유 메모리 다중 프로세서는 성능의 향상이 이루어질 수 없다. 그러나, 본 발명의 분산된 공유 메모리 다중 프로세서는 어느 지역 프로세서 모듈에서 캐쉬 실패가 발생했을 때, 그 지역 프로세서 모듈이 그 모듈을 내포한 시스템 모듈내의 지역 메모리 모듈에 그 블럭이 저장되어 있고 다른 지역 프로세서 모듈이 그 블록을 갱신된 상태(예를들어 MODIFIED상태)로 저장하고 있지 않는 경우를 판단할 수 있으며, 이렇게 판단된 경우에, 브로드캐스트 읽기 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청을 공유 버스를 통해 다른 시스템 모듈내의 지역 메모리 모듈과 지역 프로세서 모듈에 전송하지 않고 그 블록에 대한 요청을 자체 지역 메모리 모듈로만 전송하기 때문에 공유 버스에 대한 접근 병목 현상을 완화시키며, 빠른 메모리 접근으로 인해 단위시간당 프로세서의 처리량을 증가시키고 분산된 공유 메모리 다중 프로세서의 장점을 잘 발휘할 수 있다.As described above, if a distributed shared memory multiprocessor simply adopts a conventional write-invalidate cache coherence scheme, if a cache failure for one block occurs in a local processor module, the block is stored in its own local memory module. Even if the block is not updated and stored in the cache in another local processor module, a broadcast read request for that block must be sent to the local memory module and the local processor module in the other system module via the shared bus. Therefore, such a distributed shared memory multiprocessor cannot improve performance. However, in the distributed shared memory multiprocessor of the present invention, when a cache failure occurs in a local processor module, the block is stored in a local memory module in a system module in which the local processor module includes the module and the other local processor. You can determine when the module is not storing the block in an updated state (for example, in the MODIFIED state), and if so, a broadcast read request that contains a broadcast read request or an invalidation request. By sending requests for the block to its own local memory module instead of sending it to local memory modules and local processor modules in other system modules, it alleviates access bottlenecks on shared buses. Increased throughput and distributed shared notes It may well demonstrate the advantage of multiple processors.

어느 지역 프로세서 모듈에서 캐쉬 실패가 발생했을 때, 그 지역 프로세서 모듈이 그 모듈을 내포한 시스템 모듈내의 지역 메모리 모듈에 그 블록이 저장되어 있고 다른 지역 프로세서 모듈이 그 블록을 갱신된 상태(예를들어 MODIFIED상태)로 저장하고 있는지 여부의 판단 능력을 제공하기 위해, 본 발명의 캐쉬 시스템(600)은 제5도에서와 같이 프로세서 디렉토리 캐쉬(650)에 자체 지역 메모리 모듈(100)에 저장된 모든 메모리 블록에 대해 각 블록이 유효한지, 즉 다른 지역 프로세서 모듈(200,200')내의 캐쉬(600,600')에 갱신된 상태로 저장되어 있지 않는 지의 여부를 표시하는 적어도 두가지의 메모리 블록 상태 정보 예를들면 DIRTY상태와 CLEAN상태를 구별하여 유지한다.When a cache failure occurs in a local processor module, the block is stored in a local memory module within the system module that the local processor module implies, and another local processor module has updated the block (for example, In order to provide the ability to determine whether it is being stored in a MODIFIED state, the cache system 600 of the present invention, as shown in FIG. 5, stores all memory blocks stored in its local memory module 100 in the processor directory cache 650. For at least two memory block state information indicating whether each block is valid, i.e. not stored in the cache 600,600 'in another local processor module 200,200', e.g. Keep the CLEAN status distinct.

DIRTY상태는 지역 메모리 모듈(100)내에 저장된 해당 메모리 블록이 유효하지 않으며, 지역 프로세서 모듈(200,200')내의 캐쉬(600')에 그 블록이 갱신된 상태(예를들면 MODIFIED상태)로 저장되어 있음을 의미한다. CLEAN상태는 지역 메모리 모듈(100)내에 저장된 해당 메모리 블록이 유효하며, 지역 프로세서 모듈(200,200')내의 캐쉬(600')에 그 블록이 갱신된 상태(예를들면 MODIFIED상태)로 저장되어 있지 않음을 의미한다.In the DIRTY state, the corresponding memory block stored in the local memory module 100 is not valid, and the block is updated in the cache 600 'in the local processor module 200 and 200' (for example, the MODIFIED state). Means. In the CLEAN state, the corresponding memory block stored in the local memory module 100 is valid, and the block is not stored in the cache 600 'in the local processor module 200 or 200' as an updated state (for example, the MODIFIED state). Means.

물론, 본 발명의 캐쉬 시스템(600)은 프로세서(500)로 부터, 또는 다른 프로세서(500')로 부터 시스템 버스(400)를 통해 접근 요청된 블록이 자체 지역 메모리(100)모듈내의 영역에 해당하는지 여부를 판다할 능력을 갖는다.Of course, the cache system 600 of the present invention corresponds to the area within the local memory 100 module, the block requested to access from the processor 500 or from the other processor 500 'through the system bus 400. Have the ability to judge whether or not

제6도를 살펴보면, 본 발명에 따른 캐쉬(600)의 구현예가 블록도 형태로 도시되었다. 도시된 바와 같이, 캐쉬(600)는 각각의 캐쉬(600)내에 저장된 블록의 태그 어드레스를 보유한 프로세서 태그 캐쉬(processor tag cache)(610) 및 버스 모니터 태그 캐쉬(bus monitor tag cache)(620); 각각 프로세서 태그 캐쉬(610) 및 버스 모니터 태그 캐쉬(620)에 결합된 두 개의 비교기(611)(621); 저장된 각각의 캐쉬 블럭에 대해, 그 블록의 상태를 저장하기 위한 상태 정보 캐쉬(630); 캐쉬 블록을 저장하는 데이터 캐쉬(640); 지역 메모리 모듈(100)내에 저장된 각각의 메모리 블록에 대해, 상술한 바와 같은 최소한 2개의 메모리 블록 상태중 하나의 상태를 저장하기 위한 프로세서 디렉토리 캐쉬(650); 캐쉬 제어기(660); 프로세서(500) 및 캐쉬(600)를 시스템 버스(400)에 접속하는 프로세서-버스 인터페이스(670)를 포함한다.6, an embodiment of the cache 600 according to the present invention is shown in block diagram form. As shown, the cache 600 includes a processor tag cache 610 and a bus monitor tag cache 620 that hold tag addresses of blocks stored in each cache 600; Two comparators 611 and 621 coupled to the processor tag cache 610 and the bus monitor tag cache 620 respectively; For each cache block stored, a state information cache 630 for storing the state of the block; A data cache 640 that stores a cache block; For each memory block stored in local memory module 100, a processor directory cache 650 for storing one of at least two memory block states as described above; Cache controller 660; A processor-bus interface 670 that connects the processor 500 and cache 600 to the system bus 400.

프로세서(500)가 하나의 블록에 대한 접근 요청과 그 블록의 물리적 어드레스를 캐쉬(600)에 전송하면, 블럭 어드레스라고 표현된 상기 물리적 어드레스의 부분이 프로세서 태그 캐쉬(610), 상태 정보 캐쉬(630) 및 데이터 캐쉬(640)를 접근하는데 사용되며, 물리적 어드레스 전체가 프로세서 디렉토리 캐쉬(650)를 접근하는데 사용된다. 비교기(611)는 프로세서 태그 캐쉬(610)로 부터의 태그 어드레스와, 태그 어드레스라고 표현된 상기 물리적 어드레스의 또다른 부분을 입력으로 제공받아 비교 동작을 수행한다. 비교기(611)내에서 이들 두 개의 입력이 일치하면 캐쉬(600)는 요청된 블록을 보유하고 있음을 의미한다. 만일, 그 블록의 물리적 주소가 자체 지역 메모리 영역에 해당할 경우, 프로세서 디렉토리 캐쉬(650)로 부터의 상태 정보는 자체 지역 메모리 모듈(100)내에 저장된 해당 블록이 DIRTY상태인지 CLEAN상태인지 여부를 명시한다.When the processor 500 transmits an access request for one block and the physical address of the block to the cache 600, the portion of the physical address represented by the block address is the processor tag cache 610 and the status information cache 630. ) And the data cache 640, and the entire physical address is used to access the processor directory cache 650. The comparator 611 receives a tag address from the processor tag cache 610 and another part of the physical address expressed as a tag address as input and performs a comparison operation. If these two inputs match in comparator 611, then cache 600 holds the requested block. If the physical address of the block corresponds to its own local memory area, the status information from the processor directory cache 650 specifies whether the block stored in its local memory module 100 is in the DIRTY state or the CLEAN state. do.

캐쉬 제어기(660)는, 비교기(611)로 부터의 상술한 입력들의 일치 여부에 관한 정보와 상태 정보 캐쉬(630) 및 프로세서 디렉토리 캐쉬(650)로 부터의 상태 정보를 제공받고, 프로세서(500)로 부터의 요청 및/또는 시스템 버스(400)로 부터의 명령어에 응답하여, 그 블록에 대한 상태 정보 캐쉬(630)와 프로세서 디렉토리 캐쉬(650)의 상태 정보를 검사/변경하고, 하기하는 바와 같은 COMMAND, MODIFY라인등을 검사/변경하고, 캐쉬(600)의 전반적인 동작을 제어 및 동기화시킨다.The cache controller 660 is provided with information on whether the above-described inputs from the comparator 611 match the state information from the state information cache 630 and the processor directory cache 650, and the processor 500. In response to a request from and / or an instruction from the system bus 400, the state information cache 630 and the state information of the processor directory cache 650 for that block are checked / changed, as shown below. Check / change COMMAND, MODIFY lines, etc., and control and synchronize the overall operation of cache 600.

이제 제4도를 다시 살펴보면, 상기 분산된 공유 메모리 다중 프로세서의 주요 요소간의 통신은 시스템 버스(400)상에서 이루어 진다. 시스템 버스(400)는 3개의 버스, 즉, 어드레스 버스, 데이터 버스 및 제어버스를 포함한다. 제어 버스는 또한 COMMAND, MODIFY라인을 포함할 수 있다.Referring back to FIG. 4, communication between major elements of the distributed shared memory multiprocessor is accomplished on system bus 400. As shown in FIG. The system bus 400 includes three buses, an address bus, a data bus and a control bus. The control bus may also include COMMAND and MODIFY lines.

COMMAND라인은 지역 메모리 모듈(100,100') 및 지역 프로세서 모듈(200,200')사이에 브로드캐스트 읽기 요청(broadcast read request), 차후에 보다 상세히 설명될 무효화 요청(invalidation request), 무효화 요청을 내포한 브로드캐스트 읽기 요청(broadcast read with invalidation request)을 포함하는 명령어들을 전송한다.The COMMAND line is a broadcast read request between a local memory module 100, 100 'and a local processor module 200, 200', an invalidation request that will be described in more detail later, and a broadcast read containing an invalidation request. Send commands that include a broadcast read with invalidation request.

MODIFY라인은 어느 한 프로세서 모듈에 의해 전송된 브로드캐스트 읽기 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청에 대해 그 블록을 자체 캐쉬에 저장하고 있는 다른 지역 프로세서 모듈이 그 블록을 갱신된 상태(예를들면 MODIFIED상태)로 저장하고 있을 경우 그 요청을 전송한 지역 프로세서 모듈과 그 블록을 저장하고 있는 지역 메모리 모듈에게 그 사실을 알리기 위해 사용된다. 예를들어, 어느 한 지역 프로세서 모듈이 어떤 블럭에 대한 캐쉬 실패로 인해, 지역 메모리 모듈과 다른 지역 프로세서 모듈로 브로드캐스트 읽기 요청을 전송하면, 다른 지역 프로세서 모듈은 그의 캐쉬내에 보유한 그 블록의 캐쉬 상태 정보에 따라 MODIFY라인상에 해당 신호를 인가(assert)한다. 그후, 그 요청을 전송한 지역 프로세서 모듈은 MODIFY라인을 검사하여 다른 지역 프로세서 모듈에 대항 블록이 갱신된 상태(예를들면 MODIFIED상태)로 존재하는지 여부를 판단할 수 있다. 또한, 그 블록을 저장하고 있는 지역 메모리 모듈은 MODIFY라인을 검사하여 MODIFY신호가 인가되었을 경우 상기 브로드캐스트 읽기 요청이나 무효화 요청을 내포한 브로드캐스트 읽기 요청에 대한 처리를 중단할 수 있다.The MODIFY line is a state in which the block is updated by another local processor module that stores the block in its cache for a broadcast read request sent by one processor module or a broadcast read request that contains an invalidation request. For example, it is used to inform the local processor module that sent the request and the local memory module that stores the block if the data is stored in the MODIFIED state. For example, if a local processor module sends a broadcast read request to a local memory module and another local processor module due to a cache failure for a block, the other local processor module may cache the state of that block in its cache. According to the information, the corresponding signal is asserted on the MODIFY line. The local processor module sending the request can then examine the MODIFY line to determine whether the block against the other local processor module is in an updated state (eg, MODIFIED state). In addition, the local memory module storing the block may stop the processing of the broadcast read request including the broadcast read request or the invalidation request when the MODIFY signal is applied by checking the MODIFY line.

이하, 본 발명의 일실시예에 따라 캐쉬(600 및 600')를 포함하는 시스템 모듈(300 및 300')의 예시적인 동작이 읽기 적중, 읽기 실패, 쓰기 적중 및 쓰기 실패의 각 경우에 대하여 기술될 것이다. 하기의 설명에 있어 시스템 모듈(300)내의 지역 프로세서 모듈(200)내에 포함된 프로세서(500)가 캐쉬(600)로 하나의 블록에 대한 읽기, 쓰기 요청을 발생하였다고 가정한다. 또한 이러한 설명에 있어 불럭 대체라 함은 지역 프로세서 모듈(200)내에 포함된 캐쉬(600)내에서 대체될 블록을 선정하고, 만일 선정된 블록이 갱신된 상태, 즉, MODIFIED상태일 경우에 그 블록(즉, 그 블록의 갱신된 사본)을 해당 지역 메모리 모듈(100혹은 100')로 축출하는 작업이다. 이때, 그 블록이 자체 지역 메모리 모듈(100)에 저장되어 있을 경우, 지역 프로세서 모듈(200)은 공유 버스(400)를 사용하지 않고 그 블록을 자체 지역 메모리 모듈(100)로 축출하며, 프로세서 디렉토리 캐쉬(650)내의 그 블록의 상태를 CLEAN으로 변경한다. 만일, 그 블록이 자체 지역 메모리 모듈(100)에 저장되어 있지 않을 경우, 지역 프로세서 모듈(200)은 공유 버스(400)를 사용하여 그 블록을 해당 시스템 모듈(300')내의 지역 메모리 모듈(100')로 전송하며, 그 시스템 모듈(300')내의 지역 프로세서 모듈(200')은 프로세서 디렉토리 캐쉬(650)내의 그 블록의 상태를 CLEAN으로 변경한다.Hereinafter, exemplary operations of system modules 300 and 300 'including caches 600 and 600' in accordance with one embodiment of the present invention are described for each case of read hits, read failures, write hits, and write failures. Will be. In the following description, it is assumed that the processor 500 included in the local processor module 200 in the system module 300 generates a read and write request for one block to the cache 600. Also, in this description, block replacement selects a block to be replaced in the cache 600 included in the local processor module 200, and if the selected block is in the updated state, that is, the MODIFIED state, the block is replaced. (I.e., an updated copy of that block) to the local memory module 100 or 100 '. At this time, if the block is stored in its own local memory module 100, the local processor module 200 evicts the block into its own local memory module 100 without using the shared bus 400, and the processor directory. Change the state of that block in cache 650 to CLEAN. If the block is not stored in its local memory module 100, the local processor module 200 uses the shared bus 400 to transfer the block to the local memory module 100 in the corresponding system module 300 ′. Local processor module 200 'in the system module 300' changes the state of the block in the processor directory cache 650 to CLEAN.

읽기 적중-지역 프로세서 모듈(200)내의 캐쉬(600)가 읽기 요청된 블록을 유효한 상태, 즉, MODIFIED혹은 SHARED상태의 어느 한 상태로 보유하고 있는 경우로서, 캐쉬(600)는 그 블록을 프로세서(500)에게 전달한다.In the case where the cache 600 in the read hit-local processor module 200 holds a block in which the read request is valid, that is, in a MODIFIED or SHARED state, the cache 600 stores the block in the processor ( 500).

읽기 실패-지역 프로세서 모듈(200)내의 캐쉬(600)가 읽기 요청된 블록을 보유하고 있지 않거나 INVALID상태로 보유하고 있는 경우로서, 그 블록을 캐쉬(600)에 보유하고 있지 않다면, 지역 프로세서 모듈(200)은 블록 대체를 먼저 수행하고 하기에는 동작을 수행하며, INVALID상태로 보유하고 있는 경우에는 하기하는 동작을 즉시 수행한다.If the cache 600 in the read failure-local processor module 200 does not hold a block that has been requested to be read or is in the INVALID state, and does not hold the block in the cache 600, the local processor module ( 200) performs block replacement first and then performs an operation, and if it is held in an INVALID state, the following operation is performed immediately.

프로세서(500)가 요청한 블록이 자체 지역 메모리 모듈(100)내에 저장되어 있지 않거나, 프로세서(500)가 요청한 블록이 자체 지역 메모리 모듈(100)내에 저장되어 있고 프로세서 디렉토리 캐쉬(650)로 부터의 그 블록의 상태가 DIRTY인 경우, 지역 프로세서 모듈(200)은 다른 시스템 모듈(300')들내의 지역 프로세서 모듈(200')들 및 지역 메모리 모듈(100')들로 그 블록에 대한 브로드캐스트 읽기 요청을 전송한다. 다른 지역 프로세서 모듈(200')들중 어느 하나가 요청된 블록을 MODIFIED상태로 보유하고 있는 경우, 그 지역 프로세서 모듈(200')은 MODIFY신호를 MODIFY신호선에 인가하고, 상기 브로드캐스트 읽기 요청에 대해 자체 캐쉬(600')에 저장된 그 블록의 사본을 제공함으로써 응답하고, 자체 캐쉬(600')에 저장된 그 블록의 상태를 SHARED상태로 변경한다. 이때, 요청된 블록을 저장하고 있는 해당 지역 메모리 모듈(100')은 이러한 트랜잭션 동안 MODIFY라인을 조사하여, MODIFY신호가 인가되어 있지 않은 경우, 상기 읽기 요청에 대해 그 블록의 사본을 제공한다. 그렇지 않은 경우 그 지역 메모리 모듈(100')은 MODIFY신호를 인가한 지역 프로세서 모듈(200')이 전송하는 그 블록의 유효한 사본을 수신하여 메모리를 갱신한다. 또한, 상술한 과정을 통해 지역 프로세서 모듈(200)이 다른 지역 메모리 모듈(100')들이나 다른 지역 프로세서 모듈(200')들중 어느 하나로 부터 요청된 블록의 유효한 사본을 시스템 버스(400)를 요청할 필요없이 자체 지역 프로세서 모듈(200)에게 전송한다. 프로세서 모듈(200)이 요청된 블럭의 유효한 사본을 시스템 버스(400)를 요청할 필요없이 자체 지역 프로세서 모듈(200)에게 전송한다. 프로세서 모듈(200)이 요청된 블럭의 유효한 사본을 수신하면, 수신한 블록을 SHARED상태로 자체 캐쉬(600)에 저장하고 해당 읽기 작업을 수행하며, 자체 지역 메모리 모듈(100')에 그 블록을 보유하고 있는 지역 프로세서 모듈(200')은 프로세서 디렉토리 캐쉬(650')내에 저장된 그 메모리 블록의 상태를 CLEAN상태로 변환/유지한다.The block requested by the processor 500 is not stored in its own local memory module 100, or the block requested by the processor 500 is stored in its own local memory module 100, and its block from the processor directory cache 650. If the state of the block is DIRTY, the local processor module 200 requests a broadcast read for that block to the local processor modules 200 'and the local memory modules 100' in other system modules 300 '. Send it. If any one of the other local processor modules 200 'holds the requested block in the MODIFIED state, the local processor module 200' applies a MODIFY signal to the MODIFY signal line and, in response to the broadcast read request, It responds by providing a copy of the block stored in its own cache 600 'and changes the state of that block stored in its own cache 600' to the SHARED state. At this time, the local memory module 100 ′ storing the requested block examines the MODIFY line during this transaction, and provides a copy of the block for the read request if the MODIFY signal is not applied. Otherwise, the local memory module 100 'receives a valid copy of the block transmitted by the local processor module 200' that has applied the MODIFY signal and updates the memory. In addition, through the above-described process, the local processor module 200 requests the system bus 400 for a valid copy of the requested block from any one of the other local memory modules 100 'or the other local processor modules 200'. It transmits to its own local processor module 200 without the need. The processor module 200 sends a valid copy of the requested block to its local processor module 200 without having to request the system bus 400. When the processor module 200 receives a valid copy of the requested block, the processor module 200 stores the received block in its own cache 600 in the SHARED state, performs a corresponding read operation, and stores the block in its local memory module 100 '. The retaining local processor module 200 'converts / maintains the state of the memory block stored in the processor directory cache 650' to the CLEAN state.

한편, 프로세서(500)가 요청한 블록이 자체 지역 메모리 모듈(100)내에 저장되어 있고 프로세서 디렉토리 캐쉬(650)로 부터의 해당 메모리 블록의 상태가 CLEAN인 경우, 지역 프로세서 모듈(200)은 시스템 버스(400)를 요청할 필요없이 자체 지역 메모리 모듈(100)에게 그 블록에 대한 읽기 요청을 전송한다. 이에 따라, 자체 지역 메모리 모듈(100)도 해당 블록의 사본을 시스템 버스(400)를 요청할 필요없이 자체 지역 프로세서 모듈(200)에게 전송한다. 프로세서 모듈(200)이 요청된 블록의 유효한 사본을 수신하면, 수신한 블록을 SHARED상태로 자체 캐쉬(600)에 저장하며 해당 읽기 작업을 수행한다.On the other hand, if the block requested by the processor 500 is stored in its own local memory module 100 and the state of the corresponding memory block from the processor directory cache 650 is CLEAN, the local processor module 200 is configured as a system bus ( The read request for the block is transmitted to the local memory module 100 without the need for requesting 400). Accordingly, the own local memory module 100 also transmits a copy of the block to its own local processor module 200 without having to request the system bus 400. When the processor module 200 receives a valid copy of the requested block, the processor module 200 stores the received block in its own cache 600 in the SHARED state and performs a corresponding read operation.

쓰기 적중-지역 프로세서 모듈(200)내의 캐쉬(600)가 쓰기 요청된 블록을 유효한 상태, 즉, MODIFIED혹은 SHARED상태의 어느 한 상태로 보유하고 있는 경우로서, 요청된 블록을 MODIFIED상태로 보유하고 있는 경우, 지역 프로세서 모듈(200)은 쓰기 작업을 즉시 수행한다.The cache 600 in the write hit-local processor module 200 holds a block in which the write request is in a valid state, that is, in a MODIFIED or SHARED state, and holds the requested block in the MODIFIED state. If so, the local processor module 200 immediately performs the write operation.

지역 프로세서 모듈(200)내의 캐쉬(600)가 요청된 블록을 SHARED상태로 보유하고 있는 경우, 지역 프로세서 모듈(200)은 모든 다른 시스템 모듈(300')들의 지역 프로세서 모듈(200')들에게 그 블록에 대한 무효화 요청을 전송하여, 다른 시스템 모듈(300')들의 지역 프로세서 모듈(200')들이 그들이 보유한 요청된 블록의 사본의 상태를 INVALID상태로 변경하도록 하며, 자체 지역 메모리 모듈(100혹은 100')에 그 블록을 보유하고 있는 지역 프로세서 모듈(200혹은 200')은 프로세서 디렉토리 캐쉬(650혹은 650')내에 저장된 그 메모리 블록의 상태를 DIRTY상태로 변환/유지한다. 이들 사본이 모두 무효화된 후, 무효화 요청을 전송한 지역 프로세서 모듈(200)은 해당 블록에 대한 쓰기 작업을 수행하며 그 블록의 상태를 MODIFIED상태로 변경한다.If the cache 600 in the local processor module 200 holds the requested block in the SHARED state, the local processor module 200 tells the local processor modules 200 'of all other system modules 300'. Sends an invalidation request for the block, causing the local processor modules 200 'of the other system modules 300' to change the state of the copy of the requested block they have to the INVALID state, and the local memory module (100 or 100). The local processor module 200 or 200 holding the block at ") converts / maintains the state of the memory block stored in the processor directory cache 650 or 650 'to the DIRTY state. After all of these copies have been invalidated, the local processor module 200 which sent the invalidation request performs a write operation on the corresponding block and changes the state of the block to the MODIFIED state.

쓰기 실패-지역 프로세서 모듈(200)내의 캐쉬(600)가 쓰기 요청된 블록을 보유하고 있지 않거나 INVALID상태로 보유하고 있는 경우로서, 그 블록을 캐쉬(600)에 보유하고 있지 않다면, 지역 프로세서 모듈(200)은 블록 대체를 먼저 수행하고 하기하는 동작을 수행하며, INVALID상태로 보유하고 있는 경우에는 하기하는 동작을 즉시 수행한다.If the cache 600 in the write failure-local processor module 200 does not hold the block that has been requested to be written or holds the INVALID state, and does not hold the block in the cache 600, the local processor module ( 200) performs block replacement first and then performs the operation, and if it is held in the INVALID state, performs the following operation immediately.

프로세서(500)가 요청한 블록이 자체 지역 메모리 모듈(100)내에 저장되어 있지 않다면, 지역 프로세서 모듈(200)은 다른 시스템 모듈(300')들의 지역 지역 프로세서 모듈(200')들 및 지역 메모리 모듈(100')들로 그 블록에 대한 무효화 요청을 내포한 브로드캐스트 읽기 요청을 전송한다. 다른 지역 프로세서 모듈(200')들중 어느 하나가 요청된 블록을 MODIFIED상태로 보유하고 있는 경우, 그 지역 프로세서 모듈(200')은 MODIFY신호를 MODIFY신호선에 인가하고, 상기 무효화 요청을 내포한 브로드캐스트 읽기 요청에 대해 자체 캐쉬(600')에 저장된 그 블록의 사본을 제공함으로써 응답하며, 자체 캐쉬(600')에 저장된 그 블록의 상태를 INVALID상태로 변경한다. 지역 메모리 모듈(100')에 그 블록을 보유하고 있는 시스템 모듈(300')의 지역 프로세서 모듈(200')은 또한 자체 프로세서 디렉토리 캐쉬(650')에 저장된 그 메모리 블록의 상태를 DIRTY상태로 변환/유지하며, 그 지역 메모리 모듈(100')은 이러한 트랜잭션 동안 MODIFY라인을 조사하여, MODIFY신호가 인가되어 있지 않은 경우, 상기 무효화 요청을 내포한 브로드캐스트 읽기 요청에 대해 그 블록의 사본을 제공한다. 상술한 과정을 통해 지역 프로세서 모듈(200)이 다른 지역 메모리 모듈(100')들이나 다른 지역 프로세서 모듈(200')들중 어느 하나로 부터 요청된 블록의 유효한 사본을 수신하면, 수신한 블록을 MODIFIED상태로 자체 캐쉬(600)에 저장하며 해당 읽기 작업을 수행한다.If the block requested by the processor 500 is not stored in its own local memory module 100, the local processor module 200 may be configured to include the local local processor module 200 ′ and the local memory module ( 100 ') sends a broadcast read request containing an invalidation request for that block. If any one of the other local processor modules 200 'holds the requested block in the MODIFIED state, the local processor module 200' applies a MODIFY signal to the MODIFY signal line and broadcasts the invalidation request. Respond to the cast read request by providing a copy of the block stored in its own cache 600 'and change the state of the block stored in its own cache 600' to the INVALID state. The local processor module 200 'of the system module 300' that holds the block in the local memory module 100 'also converts the state of the memory block stored in its processor directory cache 650' to the DIRTY state. Local memory module 100 'examines the MODIFY line during this transaction and, if the MODIFY signal is not present, provides a copy of the block for the broadcast read request containing the invalidation request. . When the local processor module 200 receives a valid copy of the requested block from one of the other local memory modules 100 'or the other local processor modules 200' through the above-described process, the received processor blocks the MODIFIED state. The cache is stored in its own cache 600 and the read operation is performed.

만일, 프로세서(500)가 요청한 블록이 자체 지역 메모리 모듈(100)내에 저장되어 있고 프로세서 디렉토리 캐쉬(650)로 부터의 그 메모리 블록의 상태가 DIRTY인 경우, 지역 프로세서 모듈(200)은 (종래의 캐쉬 일관성 유지 방식에 있어 무효화 요청을 내포한 브로드캐스트 읽기 요청을 자체 지역 메모리 모듈(100)과 다른 시스템 모듈(300')들내의 지역 메모리 모듈(100')들 및 지역 프로세서 모듈(200')들로 전송하는 대신)그 블록에 대한 무효화 요청을 내포한 브로드캐스트 읽기 요청을 자체 지역 메모리 모듈(200)과 다른 시스템 모듈(300')들의 지역 메모리 모듈(100')들 및 지역 프로세서 모듈(200')들로 전송하는 대신) 그 블럭에 대한 무효화 요청을 내포한 캐쉬-캐쉬들 읽기 요청을 다른 시스템 모듈(300')들내의 지역 프로세서 모듈(200')들로만 전송한다. 이에 따라, 요청된 블록을 MODIFIED상태로 보유하고 있는 지역 프로세서 모듈(200')은 자체 캐쉬(600')에 저장된 그 블록의 사본을 지역 프로세서 모듈(200)로 전송하여 상기 무효화 요청을 내포한 캐쉬-캐쉬들 읽기 요청에 응답하며, 자체 캐쉬(600')에 저장된 그 블록의 상태를 INVALID상태로 변환한다. 지역 프로세서 모듈(200)이 요청된 블록의 유효한 사본을 수신하면, 수신한 블록을 MODIFIED상태로 자체 캐쉬(600)에 저장하며 해당 쓰기 작업을 수행한다.If the block requested by the processor 500 is stored in its own local memory module 100 and the state of the memory block from the processor directory cache 650 is DIRTY, then the local processor module 200 (the conventional In the cache coherence scheme, a broadcast read request including an invalidation request may include local memory modules 100 'and local processor modules 200' in its own local memory module 100 and other system modules 300 '. Broadcast read requests, including invalidation requests for the block, to the local memory module 100 'and the local processor module 200' of its own local memory module 200 and other system modules 300 '. Send cache-caches read request containing the invalidation request for that block only to local processor modules 200 'in other system modules 300'. Accordingly, the local processor module 200 'which holds the requested block in the MODIFIED state transmits a copy of the block stored in its own cache 600' to the local processor module 200 to include the invalidation request. Respond to a cache read request and convert the state of the block stored in its cache 600 'to the INVALID state. When the local processor module 200 receives a valid copy of the requested block, the local processor module 200 stores the received block in its cache 600 in the MODIFIED state and performs a corresponding write operation.

한편, 프로세서(500)가 요청한 블록이 자체 지역 메모리 모듈(100)내에 저장되어 있고 프로세서 디렉토리 캐쉬(650)로 부터의 그 메모리 블록의 상태가 CLEAN인 경우, 지역 프로세서 모듈(200)은 다른 모든 시스템 모듈(300')들의 지역 프로세서 모듈(200')들에게 그 블록에 대한 무효화 요청을 전송하여 다른 지역 프로세서 모듈(200')들이 그들이 보유한 요청된 블록의 사본의 상태를 INVALID상태로 변경하도록 하며, 자체 지역 메모리 모듈(100)에게 그 블록에 대한 읽기 요청을 전송한다.On the other hand, if the block requested by the processor 500 is stored in its own local memory module 100 and the state of the memory block from the processor directory cache 650 is CLEAN, the local processor module 200 is configured for all other systems. Sends an invalidation request for the block to the local processor modules 200 'of the modules 300' so that other local processor modules 200 'change the state of the copy of the requested block they have to the INVALID state, The local memory module 100 transmits a read request for the block.

이에 따라, 지역 메모리 모듈(100)은 그 블록의 사본을 시스템 버스(400)를 요청할 필요없이 자체 지역 프로세서 모듈(200)에게 전송한다. 지역 프로세서 모듈(200)이 요청된 블록의 유효한 사본을 수신하면, 수신한 블록을 MODIFIED상태로 자체 캐쉬(600)에 저장하는 동시에 프로세서 디렉토리 캐쉬(650)내의 그 블록의 상태를 DIRTY상태로 변환하며, 해당 쓰기 작업을 수행한다.Accordingly, the local memory module 100 transmits a copy of the block to its own local processor module 200 without having to request the system bus 400. When the local processor module 200 receives a valid copy of the requested block, it stores the received block in its cache 600 in the MODIFIED state and simultaneously converts the state of the block in the processor directory cache 650 into the DIRTY state. , The corresponding write operation is performed.

상술한 본 발명의 개선된 일실시예로서, 캐쉬 시스템(600)은 각 캐쉬 블록을 위해 다음과 같은 4가지의 캐쉬 블록 상태를 포함할 수 있다. 즉, MODIFIED상태, MODIFIED-SHARED상태, SHARED상태, INVALID상태가 그들이며, MODIFIED상태와 MODIFIED-SHARED상태, SHARED상태는 모두 유효한 캐쉬 블록 상태를 의미한다.As an improved embodiment of the present invention described above, the cache system 600 may include the following four cache block states for each cache block. That is, the MODIFIED state, MODIFIED-SHARED state, SHARED state, and INVALID state are them, and the MODIFIED state, MODIFIED-SHARED state, and SHARED state are all valid cache block states.

MODIFIED상태 및 MODIFIED-SHARED상태는 그 블록이 캐쉬(600)내에서 가장 최근에 갱신되었음(즉, 캐쉬(600)가 해당 블록의 갱신된 사본을 보유하고 있음)과, 그 블록을 저장하고 있는 지역 메모리 모듈(100혹은 100')내의 것과 일치하지 않음을 의미한다. MODIFIED상태는 또한 다른 캐쉬(600')에는 그 블록이 유효한 상태로 존재하지 않음을 각각 의미한다. SHARED상태는 그 블록의 상태가 단지 유효함만을 나타낸다. 이 경우 MODIFIED상태나 MODIFIED-SHARED상태로 해당 블록을 보유한 지역 프로세서 모듈(200)이 해당 블록의 소유자가 되며, 따라서, 다른 지역 프로세서 모듈(200')들로부터 그 블록에 대한 접근 요청 수신시 그에 대한 응답을 할 책임이 있다.The MODIFIED state and the MODIFIED-SHARED state indicate that the block was most recently updated in cache 600 (that is, cache 600 holds an updated copy of that block) and the area in which the block is stored. It does not match that in the memory module 100 or 100 '. The MODIFIED state also means that the block does not exist in a valid state in another cache 600 ', respectively. The SHARED state indicates that the state of the block is only valid. In this case, the local processor module 200 having the block in the MODIFIED state or the MODIFIED-SHARED state becomes the owner of the block, and thus, upon receiving an access request for the block from other local processor modules 200 ', Responsible for the response.

이하, 본 발명의 개선된 일실시예에 따라 캐쉬(600 및 600')를 포함하는 시스템 모듈(300 및 300')의 예시적인 동작이 읽기 적중, 읽기 실패, 쓰기 적중 및 쓰기 실패의 각 경우에 대하여 기술될 것이다. 하기의 설명에 있어 시스템 모듈(300)내의 지역 프로세서 모듈(200)내에 포함된 프로세서(500)가 캐쉬(600)로 하나의 블록에 대한 읽기, 쓰기 요청을 발생하였다고 가정한다. 또한, 이러한 설명에 있어, 블록 대체라 함은 지역 프로세서 모듈(200)내에 포함된 캐쉬(600)가 요청된 블록을 보유하고 있지 않을 때 캐쉬(600)내에서 대체될 블록을 선정하고, 만일 선정된 블록이 갱신된 상태, 즉, MODIFIED-SHARED상태이거나 MODIFIED상태인 경우에 그 블록(즉, 그 블록의 갱신된 사본)을 해당 지역 메모리 모듈(100 혹은 100')로 축출하는 작업이다. 이때, 그 블록이 자체 지역 메모리 모듈(100)에 저장되어 있을 경우, 지역 프로세서 모듈(200)은 공유 버스(400)를 사용하지 않고 그 블록을 자체 지역 메모리 모듈(100)로 축출하며, 프로세서 디렉토리 캐쉬(650)내의 그 블록의 상태를 CLEAN으로 변경한다. 만일, 그 블록이 자체 지역 메모리 모듈(100)에 저장되어 있지 않을 경우, 지역 프로세서 모듈(200)은 공유 버스(400)를 사용하여 그 블록을 해당 시스템 모듈(300')내의 지역 메모리 모듈(100')로 전송하며, 그 시스템 모듈(300')내의 지역 프로세서 모듈(200')은 프로세서 디렉토리 캐쉬(650')내의 그 블록의 상태를 CLEAN으로 변경한다.Hereinafter, exemplary operations of system modules 300 and 300 'comprising caches 600 and 600' in accordance with an improved embodiment of the present invention are described in each case of read hits, read failures, write hits and write failures. Will be described. In the following description, it is assumed that the processor 500 included in the local processor module 200 in the system module 300 generates a read and write request for one block to the cache 600. Also, in this description, block replacement selects a block to be replaced in the cache 600 when the cache 600 included in the local processor module 200 does not hold the requested block, and if selected, When a block is updated, that is, in a MODIFIED-SHARED state or in a MODIFIED state, the block (i.e., an updated copy of the block) is evicted to the local memory module 100 or 100 '. At this time, if the block is stored in its own local memory module 100, the local processor module 200 evicts the block into its own local memory module 100 without using the shared bus 400, and the processor directory. Change the state of that block in cache 650 to CLEAN. If the block is not stored in its local memory module 100, the local processor module 200 uses the shared bus 400 to transfer the block to the local memory module 100 in the corresponding system module 300 ′. Local processor module 200 'in system module 300' changes the state of the block in processor directory cache 650 'to CLEAN.

읽기 적중-지역 프로세서 모듈(200)내의 캐쉬(600)가 읽기 요청된 블록을 유효한 상태, 즉, MODIFIED, MODIFIED-SHARED혹은 SHARED상태의 어느 한 상태로 보유하고 있는 경우로서, 캐쉬(600)는 그 블록을 프로세서(500)에게 전달한다.If the cache 600 in the read hit-local processor module 200 holds a block that has been requested to be read, that is, in any of the states MODIFIED, MODIFIED-SHARED, or SHARED, the cache 600 is Deliver the block to the processor 500.

읽기 실패-지역 프로세서 모듈(200)내의 캐쉬(600)가 읽기 요청된 블록을 보유하고 있지 않거나 INVALID상태로 보유하고 있는 경우로서, 그 블록을 캐쉬(600)에 보유하고 있지 않다면, 지역 프로세서 모듈(200)은 블록 대체를 먼저 수행하고 하기하는 동작을 수행하며, INVALID상태로 보유하고 있는 경우에는 하기하는 동작을 즉시 수행한다.If the cache 600 in the read failure-local processor module 200 does not hold a block that has been requested to be read or is in the INVALID state, and does not hold the block in the cache 600, the local processor module ( 200) performs block replacement first and then performs the operation, and if it is held in the INVALID state, performs the following operation immediately.

프로세서(500)가 요청한 블록이 자체 지역 메모리 모듈(100)내에 저장되어 있지 않다면, 지역 프로세서 모듈(200)은 다른 모든 시스템 모듈(300')들의 지역 프로세서 모듈(200')들 및 지역 메모리 모듈(100')들로 그 블록에 대한 브로드캐스트 읽기 요청을 전송한다. 다른 지역 프로세서 모듈(200')들중 어느 하나가 요청된 블록을 MODIFIED나 MODIFIED-SHARED상태로 보유하고 있는 경우, 그 지역 프로세서 모듈(200')은 MODIFY신호를 MODIFY신호선에 인가하고, 상기 브로드캐스트 읽기 요청에 대해 자체 캐쉬(600')에 저장된 그 블록의 사본을 제공함으로써 응답하며, 자체 캐쉬(600')에 저장된 그 블록의 상태를 MODIFIED-SHARED상태로 변경/유지한다. 이때, 요청된 블록을 저장하고 있는 해당 지역 메모리 모듈(100')은 이러한 트랜잭션 동안 MODIFY라인을 조사하여, MODIFY신호가 인가되어 있지 않은 경우, 상기 읽기 요청에 대해 그 블록의 사본을 제공한다. 그렇지 않을 경우 그 지역 메모리 모듈(100')은 MODIFY신호를 인가한 지역 프로세서 모듈(200')이 전송하는 그 블록의 유효한 사본을 수신하여 메모리를 갱신한다. 상술한 과정을 통해 지역 프로세서 모듈(200)이 다른 지역 메모리 모듈(100')들이나 다른 지역 프로세서 모듈(200')들중 어느 하나로 부터 요청된 블록의 유효한 사본을 수신하면, 수신한 블록을 SHARED상태로 자체 캐쉬(600)에 저장하며 해당 읽기 작업을 수행하며, 자체 지역 메모리 모듈(100')에 그 블록을 보유하고 있는 지역 프로세서 모듈(200')은 프로세서 디렉토리 캐쉬(650')내에 저장된 그 메모리 블록의 상태를 CLEAN상태로 변환/유지한다.If the block requested by the processor 500 is not stored in its own local memory module 100, the local processor module 200 may be configured as the local processor module 200 ′ and the local memory module (s) of all other system modules 300 ′. 100 ') to send a broadcast read request for that block. If any one of the other local processor modules 200 'holds the requested block in the MODIFIED or MODIFIED-SHARED state, the local processor module 200' applies a MODIFY signal to the MODIFY signal line and broadcasts the broadcast. Responds by providing a copy of the block stored in its own cache 600 'for a read request, and changes / maintains the state of the block stored in its own cache 600' to a MODIFIED-SHARED state. At this time, the local memory module 100 ′ storing the requested block examines the MODIFY line during this transaction, and provides a copy of the block for the read request if the MODIFY signal is not applied. Otherwise, the local memory module 100 'receives the valid copy of the block transmitted by the local processor module 200' which has applied the MODIFY signal and updates the memory. When the local processor module 200 receives a valid copy of the requested block from any one of the other local memory modules 100 'or the other local processor modules 200' through the above-described process, the received block is in the SHARED state. The local processor module 200 ', which stores the data in its own cache 600 and performs the read operation, and holds the block in its own local memory module 100', has its memory stored in the processor directory cache 650 '. Convert / maintain block state to CLEAN state.

만일, 프로세서(500)가 요청한 블록이 자체 지역 메모리 모듈(100)내에 저장되어 있고 프로세서 디렉토리 캐쉬(650)로 부터의 그 메모리 블록의 상태가 DIRTY인 경우, 지역 프로세서 모듈(200)은 (종래의 캐쉬 일관성 유지 방식에 있어 브로드캐스트 읽기 요청을 자체 지역 메모리 모듈(100)과 다른 시스템 모듈(300')들의 지역 프로세서 모듈(200')들 및 지역 메모리 모듈(100')들로 전송하는 대신)그 블록에 대한 캐쉬-캐쉬들 읽기 요청을 모든 다른 시스템 모듈(300')들의 지역 프로세서 모듈(200')들로 전송한다. 이에 따라, 요청된 블록을 MODIFIED상태나 MODIFIED-SHARED상태로 보유하고 있는 지역 프로세서 모듈(200')은 자체 캐쉬(600')에 저장된 그 블록의 사본을 지역 프로세서 모듈(200')로 전송하여 상기 캐쉬-캐쉬들 읽기 요청에 응답하며, 자체 캐쉬(600')에 저장된 그 블록의 상태를 MODIFIED-SHARED상태로 변환/유지한다. 지역 프로세서 모듈(200)이 요청된 블록의 유효한 사본을 수신하면, 수신한 블록을 SHARED상태로 자체 캐쉬(600)에 저장하며 해당 읽기 작업을 수행한다.If the block requested by the processor 500 is stored in its own local memory module 100 and the state of the memory block from the processor directory cache 650 is DIRTY, then the local processor module 200 (the conventional In the cache coherence scheme, instead of sending a broadcast read request to local processor modules 200 'and local memory modules 100' of its own local memory module 100 and other system modules 300 ') A cache-caches read request for the block is sent to the local processor modules 200 'of all other system modules 300'. Accordingly, the local processor module 200 'holding the requested block in the MODIFIED state or the MODIFIED-SHARED state transmits a copy of the block stored in its cache 600' to the local processor module 200 '. Responds to a cache-caches read request and converts / maintains the state of the block stored in its cache 600 'to the MODIFIED-SHARED state. When the local processor module 200 receives a valid copy of the requested block, the local processor module 200 stores the received block in its cache 600 in the SHARED state and performs a corresponding read operation.

한편, 프로세서(500)가 요청한 블록이 자체 지역 메모리 모듈(100)내에 저장되어 있고 프로세서 디렉토리 캐쉬(650)로 부터의 그 메모리 블록의 상태가 CLEAN인 경우, 지역 프로세서 모듈(200)은 시스템 버스(400)를 요청할 필요없이 자체 지역 메모리 모듈(100)에게 그 블록에 대한 읽기 요청을 전송한다. 이에 따라, 지역 메모리 모듈(100)도 해당 블록의 사본을 시스템 버스(400)를 요청할 필요없이자체 지역 프로세서 모듈(200)에게 전송한다. 프로세서 모듈(200)이 요청된 블럭의 유효한 사본을 수신하면, 수신한 블록을 SHARED상태로 자체 캐쉬(600)에 저장하며 해당 읽기 작업을 수행한다.On the other hand, if the block requested by the processor 500 is stored in its own local memory module 100, and the state of the memory block from the processor directory cache 650 is CLEAN, the local processor module 200 is a system bus ( The read request for the block is transmitted to the local memory module 100 without the need for requesting 400). Accordingly, the local memory module 100 also transmits a copy of the block to its own local processor module 200 without having to request the system bus 400. When the processor module 200 receives a valid copy of the requested block, the processor module 200 stores the received block in its cache 600 in the SHARED state and performs a corresponding read operation.

쓰기 적중-지역 프로세서 모듈(200)내의 캐쉬(600)가 쓰기 요청된 블록을 유효한 상태, 즉, MODIFIED, MODIFIED-SHARED혹은 SHARED상태의 어느 한 상태로 보유하고 있는 경우로서, 요청된 블록을 MODIFIED상태로 보유하고 있는 경우, 지역 프로세서 모듈(200)은 쓰기 작업을 즉시 수행한다.When the cache 600 in the write hit-local processor module 200 holds a block in which the write request is valid, that is, MODIFIED, MODIFIED-SHARED, or SHARED state, the requested block is MODIFIED. If so, the local processor module 200 immediately performs a write operation.

지역 프로세서 모듈(200)내의 캐쉬(600)가 요청된 블록을 MODIFIED-SHARED혹은 SHARE 중 어느 하나의 상태로 보유하고 있는 경우, 지역 프로세서 모듈(200)은 모든 다른 시스템 모듈(300')들의 지역 프로세서 모듈(200')들에게 그 블록에 대한 무효화 요청을 전송하여, 다른 시스템 모듈(300')들내의 지역 프로세서 모듈(200')들이 그들이 보유한 요청된 블록의 사본의 상태를 INVALID상태로 변경하도록 하며, 자체 지역 메모리 모듈(100혹은 100')에 그 블록을 보유하고 있는 지역 프로세서 모듈(200혹은 200')은 프로세서 디렉토리 캐쉬(650혹은 650')내에 저장된 그 메모리 블록의 상태를 DIRTY상태로 변환/유지한다. 이들 사본이 모두 무효화된 후, 무효화 요청을 전송한 지역 프로세서 모듈(200)은 해당 블록에 대한 쓰기 작업을 수행하며 그 블록의 상태를 MODIFIED상태로 변경한다.If the cache 600 in the local processor module 200 holds the requested block in either MODIFIED-SHARED or SHARE state, the local processor module 200 is the local processor of all other system modules 300 '. Send the invalidation request for the block to the modules 200 'so that the local processor modules 200' in the other system modules 300 'change the state of the copy of the requested block they hold to the INVALID state. The local processor module 200 or 200 ', which holds the block in its own local memory module 100 or 100', converts the state of the memory block stored in the processor directory cache 650 or 650 'to the DIRTY state. Keep it. After all of these copies have been invalidated, the local processor module 200 which sent the invalidation request performs a write operation on the corresponding block and changes the state of the block to the MODIFIED state.

쓰기 실패-지역 프로세서 모듈(200)내의 캐쉬(600)가 쓰기 요청된 블록을 보유하고 있지 않거나 INVALID상태로 보유하고 있는 경우로서, 그 블록을 캐쉬(600)에 보유하고 있지 않다면, 지역 프로세서 모듈(200)은 블록 대체를 먼저 수행하고 하기하는 동작을 수행하며, INVALID상태로 보유하고 있는 경우에는 하기하는 동작을 즉시 수행한다.If the cache 600 in the write failure-local processor module 200 does not hold the block that has been requested to be written or holds the INVALID state, and does not hold the block in the cache 600, the local processor module ( 200) performs block replacement first and then performs the operation, and if it is held in the INVALID state, performs the following operation immediately.

프로세서(500)가 요청한 블록이 자체 지역 메모리 모듈(100)내에 저장되어 있지 않다면, 지역 프로세서 모듈(200)은 다른 시스템 모듈(300')들의 지역 지역 프로세서 모듈(200')들 및 지역 메모리 모듈(100')들로 그 블록에 대한 무효화 요청을 내포한 브로드캐스트 읽기 요청을 전송한다. 다른 지역 프로세서 모듈(200')들중 어느 하나가 요청된 블록을 MODIFIED나 MODIFIED-SHARED상태로 보유하고 있는 경우, 그 지역 프로세서 모듈(200')은 MODIFY신호를 MODIFY신호선에 인가하고, 상기 무효화 요청을 내포한 브로드캐스트 읽기 요청에 대해 자체 캐쉬(600')에 저장된 그 블록의 사본을 제공함으로써 응답하며, 자체 캐쉬(600')에 저장된 그 블록의 상태를 INVALID상태로 변경한다. 지역 메모리 모듈(100')에 그 블록을 보유하고 있는 시스템 모듈(300')의 지역 프로세서 모듈(200')은 또한 자체 프로세서 디렉토리 캐쉬(650')에 저장된 그 메모리 블록의 상태를 DIRTY상태로 변환/유지하며, 그 지역 메모리 모듈(100')은 이러한 트랜잭션 동안 MODIFY라인을 조사하여, MODIFY신호가 인가되어 있지 않은 경우, 상기 무효화 요청을 내포한 읽기 요청에 대해 그 블록의 사본을 제공한다. 상술한 과정을 통해 지역 프로세서 모듈(200)이 다른 지역 메모리 모듈(100')들이나 다른 지역 프로세서 모듈(200')들중 어느 하나로 부터 요청된 블록의 유효한 사본을 수신하면, 수신한 블록을 MODIFIED상태로 자체 캐쉬(600)에 저장하며 해당 쓰기 작업을 수행한다.If the block requested by the processor 500 is not stored in its own local memory module 100, the local processor module 200 may be configured to include the local local processor module 200 ′ and the local memory module ( 100 ') sends a broadcast read request containing an invalidation request for that block. If any of the other local processor modules 200 'holds the requested block in the MODIFIED or MODIFIED-SHARED state, the local processor module 200' applies a MODIFY signal to the MODIFY signal line and requests the invalidation. Responds by providing a copy of the block stored in its own cache 600 'for a broadcast read request containing a, and changes the state of that block stored in its own cache 600' to an INVALID state. The local processor module 200 'of the system module 300' that holds the block in the local memory module 100 'also converts the state of the memory block stored in its processor directory cache 650' to the DIRTY state. / Maintain, the local memory module 100 'examines the MODIFY line during this transaction and, if the MODIFY signal is not authorized, provides a copy of the block for the read request containing the invalidation request. When the local processor module 200 receives a valid copy of the requested block from one of the other local memory modules 100 'or the other local processor modules 200' through the above-described process, the received processor blocks the MODIFIED state. The cache is stored in its own cache 600 and the corresponding write operation is performed.

만일, 프로세서(500)가 요청한 블록이 자체 지역 메모리 모듈(100)내에 저장되어 있고 프로세서 디렉토리 캐쉬(650)로 부터의 해당 메모리 블록의 상태가 DIRTY인 경우, 지역 프로세서 모듈(200)은 (종래의 캐쉬 일관성 유지 방식에 있어 무효화 요청을 내포한 브로드캐스트 읽기 요청을 자체 지역 메모리 모듈(100)과 다른 시스템 모듈(300')들의 지역 메모리 모듈(100')들 및 지역 프로세서 모듈(200')들로 전송하는 대신) 그 블럭에 대한 무효화 요청을 내포한 캐쉬-캐쉬들 읽기 요청을 다른 모든 시스템 모듈(300')들내의 지역 프로세서 모듈(200')들로만 전송한다. 이에 따라, 요청된 블록을 MODIFIED나 MODIFIED-SHARED상태로 보유하고 있는 지역 프로세서 모듈(200')은 자체 캐쉬(600')에 저장된 그 블록의 사본을 지역 프로세서 모듈(200)로 전송하여 상기 무효화 요청을 내포한 캐쉬-캐쉬들 읽기 요청에 응답하며, 자체 캐쉬(600')에 저장된 그 블록의 상태를 INVALID상태로 변환한다. 지역 프로세서 모듈(200)이 요청된 블록의 유효한 사본을 수신하면, 수신한 블록을 MODIFIED상태로 자체 캐쉬(600)에 저장하며 해당 쓰기 작업을 수행한다.If the block requested by the processor 500 is stored in its own local memory module 100 and the state of the corresponding memory block from the processor directory cache 650 is DIRTY, the local processor module 200 (the conventional In the cache coherence scheme, a broadcast read request including an invalidation request is transferred to local memory modules 100 'and local processor modules 200' of its own local memory module 100 and other system modules 300 '. Instead of sending), a cache-caches read request containing an invalidation request for that block is sent only to the local processor module 200 'in all other system modules 300'. Accordingly, the local processor module 200 'holding the requested block in the MODIFIED or MODIFIED-SHARED state transmits a copy of the block stored in its own cache 600' to the local processor module 200 to request the invalidation. Responds to a cache-cache read request, which converts the state of the block stored in its cache 600 'to the INVALID state. When the local processor module 200 receives a valid copy of the requested block, the local processor module 200 stores the received block in its cache 600 in the MODIFIED state and performs a corresponding write operation.

한편, 프로세서(500)가 요청한 블록이 자체 지역 메모리 모듈(100)내에 저장되어 있고 프로세서 디렉토리 캐쉬(650)로 부터의 그 메모리 블록의 상태가 CLEAN인 경우, 지역 프로세서 모듈(200)은 다른 모든 시스템 모듈(300')들의 지역 프로세서 모듈(200')들에게 그 블록에 대한 무효화 요청을 전송하여 다른 지역 프로세서 모듈(200')들이 그들이 보유한 요청된 블록의 사본의 상태를 INVALID상태로 변경하도록 하며, 자체 지역 메모리 모듈(100)에게 그 블록에 대한 읽기 요청을 전송한다.On the other hand, if the block requested by the processor 500 is stored in its own local memory module 100 and the state of the memory block from the processor directory cache 650 is CLEAN, the local processor module 200 is configured for all other systems. Sends an invalidation request for the block to the local processor modules 200 'of the modules 300' so that other local processor modules 200 'change the state of the copy of the requested block they have to the INVALID state, The local memory module 100 transmits a read request for the block.

이에 따라, 지역 메모리 모듈(100)은 그 블록의 사본을 시스템 버스(400)를 요청할 필요없이 자체 지역 프로세서 모듈(200)에게 전송한다. 지역 프로세서 모듈(200)이 요청된 블록의 유효한 사본을 수신하면, 수신한 블록을 MODIFIED상태로 자체 캐쉬(600)에 저장하는 동시에 프로세서 디렉토리 캐쉬(650)내의 그 블록의 상태를 DIRTY상태로 변환하며, 해당 쓰기 작업을 수행한다.Accordingly, the local memory module 100 transmits a copy of the block to its own local processor module 200 without having to request the system bus 400. When the local processor module 200 receives a valid copy of the requested block, it stores the received block in its cache 600 in the MODIFIED state and simultaneously converts the state of the block in the processor directory cache 650 into the DIRTY state. , The corresponding write operation is performed.

본 발명의 실시예를 설명함에 있어 시스템 모듈(300,300')이 지역 메모리 모듈(100,100')와 지역 프로세서 모듈(200,200')로 구성된 경우에 대해 설명했으나, 본 발명은 시스템 모듈(300,300')이 다른 방식, 예를들면, 제7도에 도시된 바와 같이 시스템 모듈중의 일부가 메모리 모듈, 즉, 지역 메모리 모듈만을 포함한 경우와 제8도에 도시된 바와 같이 시스템 모듈중의 일부가 프로세서 모듈, 즉, 지역 프로세서 모듈만을 포함한 경우에 대해서도 동일하게 적용될 수 있음을 이해하여야 한다.In the embodiment of the present invention, the case in which the system modules 300 and 300 'are composed of the local memory modules 100 and 100' and the local processor modules 200 and 200 'has been described. However, the present invention is different from the system modules 300 and 300'. Scheme, for example, when some of the system modules include only memory modules, i.e., local memory modules, as shown in FIG. 7, and some of the system modules, as shown in FIG. It should be understood that the same applies to the case of including only the local processor module.

이 경우, 지역 메모리 모듈만으로 구성된 시스템 모듈은 단지 공유 메모리 모듈로만 동작한다. 지역 프로세서 모듈로만 구성된 시스템 모듈은 지역 메모리 모듈을 포함하지 않기 때문에 프로세서 디렉토리 캐쉬가 필요없으며, 캐쉬 실패가 발생했을 경우는 상술한 실시예들에 있어 해당 블록이 지역 메모리 모듈에 저장되어 있지 않은 경우에 해당된다.In this case, a system module consisting only of local memory modules operates only as a shared memory module. Since a system module configured only with a local processor module does not include a local memory module, a processor directory cache is not needed, and if a cache failure occurs, in the above-described embodiments, a corresponding block is not stored in the local memory module. Yes.

제9도는 본 발명의 개선된 쓰기-무효화 캐쉬 시스템을 사용한 분산된 공유 메모리 다중 프로세서의 또다른 예를 예시한 블록도로서, 지역 프로세서 모듈과 지역 메모리 모듈로 구성된 시스템 모듈과 지역 프로세서 모듈만으로 구성된 시스템 모듈, 지역 메모리 모듈만으로 구성된 시스템 모듈이 혼합된 경우를 예시한다.FIG. 9 is a block diagram illustrating another example of a distributed shared memory multiprocessor using the improved write-invalidate cache system of the present invention, a system consisting of a local processor module and a local memory module and a system consisting of only a local processor module. A case where a system module composed of only modules and local memory modules is mixed is illustrated.

이상에서 살펴본 바와 같이, 본 발명의 새로운 쓰기-무효화 캐쉬 시스템은 분산된 공유 메모리 다중 프로세서에서 공유 버스에 대한 접근 병목현상을 완화시키며, 빠른 메모리 접근으로 인해 프로세서의 단위 시간당 처리량이 증가하고 신속한 메모리 접근을 도모할 수 있다. 또한, 캐쉬 실패가 발생했을 때 해당 블록이 자체 지역 메모리 모듈내에 저장되어 있고 그 메모리 블록의 상태가 DIRTY인 경우 해당 블록에 대한 캐쉬-캐쉬들 읽기 요청이나 무효화 요청을 내포한 캐쉬-캐쉬들 읽기 요청을 다른 지역 프로세서 모듈로만 전송(즉, 다른 지역 메모리 모듈은 그 요청을 무시)할 수 있기 때문에 불필요한 메모리 접근 충돌도 줄일 수 있다.As described above, the novel write-invalidate cache system of the present invention alleviates the bottleneck of access to the shared bus in the distributed shared memory multiprocessor, and increases the processor's throughput per unit time and speeds up the memory due to the fast memory access. Can be planned. In addition, when a cache failure occurs, if the block is stored in its own local memory module and the state of the memory block is DIRTY, a cache-cache read request including a cache-cache read or invalidation request for the block. Can only be sent to other local processor modules (ie other local memory modules ignore the request), thus reducing unnecessary memory access conflicts.

Claims (15)

공유 시스템 버스와, 각각 지역 프로세서 모듈과 지역 메모리 모듈을 구비하며 상기 시스템 버스에 결합된 적어도 둘 이상의 시스템 모듈을 포함하는 분산된 공유 메모리 다중 프로세서에 있어서, 상기 지역 프로세서 모듈은 상기 지역 메모리 모듈내에 포함된 각각의 블록에 대해, 그 블록이 상기 지역 메모리 모듈내에서 유효한 상태로 저장되어 있는 지의 여부를 나타내는 정보를 유지하는 디렉토리 캐쉬를 더 포함하는 것을 특징으로 하는 분산된 공유 메모리를 갖는 다중 프로세서.12. A distributed shared memory multiprocessor comprising a shared system bus and at least two system modules each having a local processor module and a local memory module coupled to the system bus, wherein the local processor module is contained within the local memory module. For each of the blocks that are included, further comprising a directory cache that holds information indicating whether the block is stored in a valid state within the local memory module. 제1항에 있어서, 상기 지역 프로세서 모듈은 자체 프로세서와 캐쉬를 가지며, 상기 각 블록에 대한 캐쉬 읽기 실패가 발생하였을 때 상기 디렉토리 캐쉬내의 상태 정보가 상기 각 블록이 상기 지역 메모리 모듈내에서 유효한 상태로 저장되어 있음을 나타내는 경우, 상기 시스템 버스를 사용할 필요없이 직접 상기 지역 메모리 모듈과 통신하므로써 상기 블록에 접근하는 분산된 공유 메모리를 갖는 다중 프로세서.The local processor module of claim 1, wherein the local processor module has its own processor and a cache, and when the cache read failure for each block occurs, the state information in the directory cache is set to be valid in the local memory module. A distributed processor with shared memory accessing the block by directly communicating with the local memory module without indicating the need to use the system bus. 제1항에 있어서, 상기 지역 프로세서 모듈은 자체 프로세서와 캐쉬를 가지며, 상기 각 블록에 대한 캐쉬 쓰기 실패가 발생하였을 때, 상기 디렉토리 캐쉬내의 상태 정보가 상기 각 블록이 상기 지역 메모리 모듈내에서 유효한 상태로 저장되어 있음을 나타내는 경우, 상기 시스템 버스를 통해 상기 각 블록에 대한 무효화 요청을 상기 적어도 둘 이상의 시스템 모듈내의 다른 지역 프로세서 모듈에 전송하며 상기 지역 메모리 모듈과 통신하므로써 상기 각 블록에 접근하는 분산된 공유 메모리를 갖는 다중 프로세서.The local processor module of claim 1, wherein the local processor module has its own processor and a cache, and when a cache write failure for each block occurs, status information in the directory cache is valid for each block in the local memory module. Distributed to access each block by communicating with the local memory module via the system bus to transmit an invalidation request for each block to the other local processor modules in the at least two system modules. Multiple processors with shared memory. 제1항에 있어서, 상기 지역 프로세서 모듈은 자체 프로세서와 캐쉬를 가지며, 상기 각 블록에 대한 캐쉬 읽기 실패 혹은 쓰기 실패가 발생하였을 때, 상기 디렉토리 캐쉬내의 상태 정보가 상기 각 블록이 상기 지역 메모리 모듈내에서 유효한 상태로 저장되어 있음을 나타내는 경우, 상기 지역 메모리 모듈과의 통신없이 상기 시스템 버스를 통해 상기 적어도 둘 이상의 시스템 모듈내의 다른 프로세서 모듈과 통신함으로써 상기 각 블록에 접근하는 분산된 공유 메모리를 갖는 다중 프로세서.The local processor module of claim 1, wherein the local processor module has its own processor and a cache, and when a cache read or write failure for each block occurs, status information in the directory cache is stored in the local memory module. Indicates that it is stored in a valid state, the multiple having distributed shared memory accessing each block by communicating with other processor modules in the at least two system modules via the system bus without communicating with the local memory module. Processor. 제2항 또는 제4항중 어느 한 항에 있어서, 상기 디렉토리 캐쉬내의 상태 정보는, 상기 적어도 둘 이상의 시스템 모듈내의 하나의 프로세서 모듈로 부터 상기 시스템 버스를 통해 상기 각 블록에 대한 무효화 요청이나 무효화을 내포한 브로드캐스트 읽기 요청을 수신하였을 때, 상기 각 블록이 상기 지역 메모리 모듈내에서 유효한 상태로 저장되어 있지 않음을 나타내는 분산된 공유 메모리를 갖는 다중 프로세서.5. The method according to any one of claims 2 and 4, wherein the state information in the directory cache implies an invalidation request or invalidation for each block from the one processor module in the at least two system modules via the system bus. And, upon receiving a broadcast read request, having distributed shared memory indicating that each block is not stored in a valid state within the local memory module. 제1항에 있어서, 상기 지역 프로세서 모듈은 자체 프로세서와 캐쉬를 가지며, 상기 각 자체 캐쉬내에서 캐쉬 읽기 실패 혹은 캐쉬 쓰기 실패가 발생하여 상기 자체 캐쉬내에서 하나의 블록이 대체되어야 할 때, 상기 대체되어야 하는 블록이 상기 자체 캐쉬내에서 갱신된 상태로 저장되어 있고 상기 지역 메모리 모듈의 영역에 속할 경우, 상기 대체되어야 할 블록을 상기 시스템 버스를 사용하지 않고 상기 지역 메모리 모듈로 축출하는 분산된 공유 메모리를 갖는 다중 프로세서.2. The local processor module of claim 1, wherein the local processor module has its own processor and cache, and when a cache read failure or a cache write failure occurs in each of its own caches, one block in the own cache has to be replaced. Distributed shared memory which evicts the block to be replaced to the local memory module without using the system bus when the block to be stored is stored in the updated state in the own cache and belongs to the area of the local memory module With multiple processors. 제6항에 있어서, 상기 디렉토리 캐쉬내의 상태 정보는 상기 축출된 블록이 상기 지역 메모리 모듈내에서 유효한 상태로 저장하고 있음을 나타내는 분산된 공유 메모리를 갖는 다중 프로세서.7. The multiprocessor of claim 6, wherein the state information in the directory cache indicates that the evicted block is stored in a valid state in the local memory module. 제1항에 있어서, 상기 지역 프로세서 모듈은 자체 프로세서와 캐쉬를 가지며, 상기 자체 캐쉬내에서 캐쉬 읽기 실패 혹은 캐쉬 쓰기 실패가 발생하여 상기 자체 캐쉬내에서 하나의 블록이 대체되어야 할 때, 상기 대체되어야 하는 블록이 상기 자체 캐쉬내에서 갱신된 상태로 저장되어 있고 상기 지역 메모리 모듈의 영역에 속하지 않는 경우, 상기 대체되어야 할 블록을 상기 시스템 버스를 사용하여 상기 적어도 둘 이상의 시스템 모듈내의 다른 지역 메모리 모듈로 축출하는 분산된 공유 메모리를 갖는 다중 프로세서.2. The local processor module of claim 1, wherein the local processor module has its own processor and cache and should be replaced when a cache read failure or cache write failure occurs in the own cache so that a block within the own cache has to be replaced. If a block is stored in an updated state in its own cache and does not belong to the area of the local memory module, the block to be replaced is transferred to another local memory module in the at least two system modules using the system bus. Multiple processors with distributed shared memory to evict. 제1항에 있어서, 상기 적어도 둘 이상의 시스템 모듈내의 상기 다른 지역 메모리 모듈과 연관된 지역 프로세서 모듈내의 디렉토리 캐쉬내의 상태 정보는 상기 축출된 블록이 상기 다른 지역 메모리 모듈내에서 유효한 상태로 저장하고 있음을 나타내는 분산된 공유 메모리를 갖는 다중 프로세서.2. The system of claim 1, wherein status information in a directory cache in a local processor module associated with the other local memory module in the at least two system modules indicates that the evicted block is stored in a valid state within the other local memory module. Multiple processors with distributed shared memory. 제1항에 있어서, 상기 프로세서는 내부 캐쉬(internal cache)를 포함하는 분산된 공유 메모리를 갖는 다중 프로세서.The multiprocessor of claim 1, wherein the processor has a distributed shared memory including an internal cache. 제1항에 있어서, 상기 각각의 지역 프로세서 모듈은 사전 결정된 수의 계층적 캐쉬(hierachical cache)를 포함하는 분산된 공유 메모리를 갖는 다중 프로세서.2. The multiple processor of claim 1, wherein each local processor module has a distributed shared memory comprising a predetermined number of hierarchical caches. 제1항에 있어서, 상기 적어도 둘 이상의 시스템 모듈중 일부는 지역 메모리 모듈만을 포함하는 분산된 공유 메모리를 갖는 다중 프로세서.The multiprocessor of claim 1, wherein some of the at least two system modules have distributed shared memory comprising only local memory modules. 제1항에 있어서, 상기 적어도 둘 이상의 시스템 모듈중 일부는 지역 프로세서 모듈만을 포함하는 분산된 공유 메모리를 갖는 다중 프로세서.The multiprocessor of claim 1, wherein some of the at least two system modules comprise distributed shared memory that includes only local processor modules. 제1항에 있어서, 상기 적어도 둘 이상의 시스템 모듈중 일부는 지역 메모리 모듈만을 포함하고 상기 적어도 둘 이상의 시스템 모듈중 다른 일부는 지역 프로세서 모듈만을 포함하는 분산된 공유 메모리를 갖는 다중 프로세서.The multiprocessor of claim 1, wherein some of the at least two system modules include only local memory modules and other portions of the at least two system modules include only local processor modules. 제1항에 있어서, 상기 적어도 하나의 시스템 모듈이 프로세서와 캐쉬로만 구성된 지역 메모리 모듈만을 포함하는 분산된 공유 메모리를 갖는 다중 프로세서.2. The multiprocessor of claim 1 wherein the at least one system module comprises distributed shared memory comprising only a local memory module consisting solely of a processor and a cache.
KR1019940037241A 1994-12-27 1994-12-27 Multi-processor having distributed shared memory KR0145454B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019940037241A KR0145454B1 (en) 1994-12-27 1994-12-27 Multi-processor having distributed shared memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019940037241A KR0145454B1 (en) 1994-12-27 1994-12-27 Multi-processor having distributed shared memory

Publications (2)

Publication Number Publication Date
KR960025061A KR960025061A (en) 1996-07-20
KR0145454B1 true KR0145454B1 (en) 1998-08-17

Family

ID=19403822

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019940037241A KR0145454B1 (en) 1994-12-27 1994-12-27 Multi-processor having distributed shared memory

Country Status (1)

Country Link
KR (1) KR0145454B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100441742B1 (en) * 2002-07-26 2004-07-23 (주)엔텔스 A method for controlling inter-process communication data using an information exchange bus and the system thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100441742B1 (en) * 2002-07-26 2004-07-23 (주)엔텔스 A method for controlling inter-process communication data using an information exchange bus and the system thereof

Also Published As

Publication number Publication date
KR960025061A (en) 1996-07-20

Similar Documents

Publication Publication Date Title
US5740400A (en) Reducing cache snooping overhead in a multilevel cache system with multiple bus masters and a shared level two cache by using an inclusion field
JP3737834B2 (en) Dual cache snoop mechanism
US5325504A (en) Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system
US5155824A (en) System for transferring selected data words between main memory and cache with multiple data words and multiple dirty bits for each address
US6760819B2 (en) Symmetric multiprocessor coherence mechanism
US7305523B2 (en) Cache memory direct intervention
US6625698B2 (en) Method and apparatus for controlling memory storage locks based on cache line ownership
US5561779A (en) Processor board having a second level writeback cache system and a third level writethrough cache system which stores exclusive state information for use in a multiprocessor computer system
US20040073740A1 (en) System and method for increasing the snoop bandwidth to cache tags in a cache memory sybsystem
US20030135669A1 (en) DMA controller and coherency-tracking unit for efficient data transfers between coherent and non-coherent memory spaces
US6266743B1 (en) Method and system for providing an eviction protocol within a non-uniform memory access system
US20060236039A1 (en) Method and apparatus for synchronizing shared data between components in a group
US11789868B2 (en) Hardware coherence signaling protocol
US7117312B1 (en) Mechanism and method employing a plurality of hash functions for cache snoop filtering
US7325102B1 (en) Mechanism and method for cache snoop filtering
US5987544A (en) System interface protocol with optional module cache
KR100322223B1 (en) Memory controller with oueue and snoop tables
JPH05324468A (en) Hierarchical cache memory
JPH07152647A (en) Shared memory multiprocessor
US20040193809A1 (en) Reducing latency of a snoop tenure
WO1997004392A1 (en) Shared cache memory device
KR0145454B1 (en) Multi-processor having distributed shared memory
US20020087791A1 (en) Multiprocessor computer system with sectored cache line system bus protocol mechanism
US6553462B2 (en) Multiprocessor computer system with sectored cache line mechanism for load and store operations
JPH03230238A (en) Cache memory control system

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20090401

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee