KR100319708B1 - Shared memory multi-processor system by employing a direction separated dual ring architecture - Google Patents

Shared memory multi-processor system by employing a direction separated dual ring architecture Download PDF

Info

Publication number
KR100319708B1
KR100319708B1 KR1020000006401A KR20000006401A KR100319708B1 KR 100319708 B1 KR100319708 B1 KR 100319708B1 KR 1020000006401 A KR1020000006401 A KR 1020000006401A KR 20000006401 A KR20000006401 A KR 20000006401A KR 100319708 B1 KR100319708 B1 KR 100319708B1
Authority
KR
South Korea
Prior art keywords
data block
shared memory
cluster
data
stored
Prior art date
Application number
KR1020000006401A
Other languages
Korean (ko)
Other versions
KR20010081224A (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 KR1020000006401A priority Critical patent/KR100319708B1/en
Priority to JP2000111165A priority patent/JP2001222517A/en
Publication of KR20010081224A publication Critical patent/KR20010081224A/en
Application granted granted Critical
Publication of KR100319708B1 publication Critical patent/KR100319708B1/en

Links

Classifications

    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F25REFRIGERATION OR COOLING; COMBINED HEATING AND REFRIGERATION SYSTEMS; HEAT PUMP SYSTEMS; MANUFACTURE OR STORAGE OF ICE; LIQUEFACTION SOLIDIFICATION OF GASES
    • F25BREFRIGERATION MACHINES, PLANTS OR SYSTEMS; COMBINED HEATING AND REFRIGERATION SYSTEMS; HEAT PUMP SYSTEMS
    • F25B39/00Evaporators; Condensers
    • F25B39/02Evaporators
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B66HOISTING; LIFTING; HAULING
    • B66CCRANES; LOAD-ENGAGING ELEMENTS OR DEVICES FOR CRANES, CAPSTANS, WINCHES, OR TACKLES
    • B66C13/00Other constructional features or details
    • B66C13/52Details of compartments for driving engines or motors or of operator's stands or cabins
    • B66C13/54Operator's stands or cabins
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F25REFRIGERATION OR COOLING; COMBINED HEATING AND REFRIGERATION SYSTEMS; HEAT PUMP SYSTEMS; MANUFACTURE OR STORAGE OF ICE; LIQUEFACTION SOLIDIFICATION OF GASES
    • F25BREFRIGERATION MACHINES, PLANTS OR SYSTEMS; COMBINED HEATING AND REFRIGERATION SYSTEMS; HEAT PUMP SYSTEMS
    • F25B39/00Evaporators; Condensers
    • F25B39/04Condensers

Abstract

본 발명은 분산된 공유 메모리 구조의 다중 프로세서 시스템에 관한 것으로, 다수의 클러스터를 서로 연결하는 스누핑을 지원하는 지점간 방향 분리 이중 링을 포함한다. 본 발명의 방향 분리 이중 링은 전단의 이웃하는 클러스터로부터 수신된 데이터 요청 신호를 데이터 블록의 속성에 따라 선택적으로 제 1 방향 또는 제 2 방향을 따라 후단의 이웃하는 클러스터로 전달하는 제 1 방향 및 제 2 방향 링을 구비한다. 따라서, 본 발명은 스누핑 방식으로 클러스터들 사이의 캐쉬 일관성을 유지하면서도 단순히 단일 링 형태로 링 대역폭을 두배로 하는 방법보다 더 좋은 성능을 제공하는 효과가 있다.The present invention relates to a multiprocessor system of distributed shared memory architecture, and includes a point-to-point bidirectional split double ring that supports snooping to connect multiple clusters together. The direction-separated double ring of the present invention provides a first direction and a first direction for transmitting a data request signal received from a neighboring cluster at a front end to a neighboring cluster at a later end along a first direction or a second direction, depending on a property of a data block. It has a two-way ring. Thus, the present invention has the effect of providing better performance than the method of simply doubling the ring bandwidth in the form of a single ring while maintaining cache coherency between clusters in a snooping manner.

Description

방향 분리 이중 링 구조의 분산된 공유 메모리 다중 프로세서 시스템{SHARED MEMORY MULTI-PROCESSOR SYSTEM BY EMPLOYING A DIRECTION SEPARATED DUAL RING ARCHITECTURE}SHARED MEMORY MULTI-PROCESSOR SYSTEM BY EMPLOYING A DIRECTION SEPARATED DUAL RING ARCHITECTURE}

본 발명은 다중 프로세서 시스템에 관한 것으로, 보다 상세하게는 방향 분리 이중 링 구조의 다중 프로세서 시스템 에 관한 것이다.The present invention relates to a multi-processor system, and more particularly to a multi-processor system of a direction separation double ring structure.

일반적으로 다중 프로세서 시스템은 명시적인 메시지 전송(message-passing) 을 이용하여 프로세서간의 통신을 구현하는 분산 메모리 구조(distributed-memory architecture)와 메모리를 공유하여 단일 시스템 이미지를 제공하는 공유 메모리 구조(shared-memory architecture)로 나누어 볼 수 있는데, 현재 공유 메모리 다중 프로세서 시스템의 상호 연결 망 중에서 가장 대중적인 기술은 공유 버스이다. 공유 버스는 구현상의 복잡도가 낮고 비용이 적게 드는 이유로 널리 사용되고 있으나, 성능이 빠르게 향상되고 있는 프로세서의 속도를 따라가지 못하고 있다. 또한 버스의 물리적 특성으로 인한 확장성과 버스 사용량의 증가로 인한 버스 대역폭(bandwidth)에 있어서도 문제점을 갖고 있다.In general, multiprocessor systems share a memory with a distributed-memory architecture that implements interprocessor communication using explicit message-passing, providing a single system image. The most popular technology among the interconnection networks of shared memory multiprocessor systems is the shared bus. Shared buses are widely used for their low implementation complexity and low cost, but they do not keep up with the speed of processors that are rapidly improving performance. In addition, there is a problem in bus bandwidth due to scalability due to the physical characteristics of the bus and increase in bus usage.

이러한 버스 구조 한계를 극복하기 위해서 여러 시도들이 진행되었는데 그 중에서 단방향 지점간 링크를 이용한 IEEE SCI가 표준으로 확정되었다. 최대 4개의 프로세서가 스누핑 방식의 버스에 의해 UMA(Uniform Memory Access) 형태로 묶은 클러스터를 SCI 링크를 이용하여 단 방향 링 구조로 연결하고 디렉토리 방식의 캐쉬 프로토콜을 이용하여 상용화된 시스템이 Tom Lovett 과 Russell Clapp의 'STiNG : A CC-NUMA Computer System for the Commercial Marketplace'(In Proceedings of the 23th International Symposium on Computer Architecture, pp. 308-317, May 1996)등에 기술되어 있다.Several attempts have been made to overcome these limitations of the bus structure. Among them, IEEE SCI using a unidirectional point-to-point link has been established as a standard. Up to four processors are clustered in the form of UMA (Uniform Memory Access) by a snooping bus in a one-way ring structure using SCI links, and commercialized systems using directory-based cache protocols are Tom Lovett and Russell. Clapp's STNG: A CC-NUMA Computer System for the Commercial Marketplace (In Proceedings of the 23th International Symposium on Computer Architecture, pp. 308-317, May 1996).

상술한 시스템을 더욱 개선한 것으로, 도 1에 도시된 바와 같이, 최대 4개의 프로세서가 스누핑 방식의 버스에 의해 UMA 형태로 묶인 클러스터를 SCI 링크를 이용하여 단방향 링 구조로 연결한 시스템을 스누핑 방식의 캐쉬 프로토콜을 이용하여 구현한 다중 프로세서 시스템이 정성우, 장성태, 전주식의 'PANDA : Ring-Based Multiprocessor System using New Snooping Protocol'(In The Proceeding of ICPADS '98, pp. 10-17, Dec. 1998)(1997년 8월 22일 출원된 특허출원 제 97-40083 호 참조할 것)에 개시되어 있으며, 도 1에 도시된 시스템은 상술한 바와 같이 디렉토리 캐쉬 일관성 유지 방법을 사용한 종래 기술의 시스템에 비하여 성능이 훨씬 우수함이 발표된 바 있다.As a further improvement of the above-described system, as shown in FIG. A multiprocessor system implemented using the cache protocol was developed by Jung Sung-woo, Jang Sung-tae, and Jeon-Sik's 'PANDA: Ring-Based Multiprocessor System using New Snooping Protocol' (In The Proceeding of ICPADS '98, pp. 10-17, Dec. 1998) ( (See Patent Application No. 97-40083, filed Aug. 22, 1997), and the system shown in FIG. 1 performs as compared to prior art systems using the directory cache coherence method as described above. Much superior has been announced.

그러나, 프로세서와 지역 버스의 클럭 속도가 계속 향상됨에 따라 이러한 사양의 프로세서와 지역 버스를 채택한 클러스터링 기반 다중프로세서 시스템에서 도 1에서 기술한 기존의 SCI 기반 단방향 지점간 링크를 이용한 시스템이 대역폭의 한계에 의한 성능과 확장성의 문제가 야기되어 상술한 도 1의 시스템에서 단일 지점간 링크 대역폭의 확장이 필요하게 되었다.However, as the clock speeds of processors and local buses continue to improve, the existing SCI-based one-way point-to-point links described in FIG. Due to the performance and scalability problems, the single point-to-point link bandwidth expansion is required in the system of FIG.

단순하게 두 배의 대역폭을 가진 링크를 사용하는 방법도 있겠지만, 현재 두 배 증가된 대역폭을 지닌 새로운 링크의 개발 및 이의 상용화된 제품의 적용이 단시일 내에 불가능하기 때문에 링크를 이중으로 구성하여 단일 링크에서의 전송량을 두 링크를 통해 전송할 필요성이 제기된다.There may be a simpler way to use a link with twice the bandwidth, but it is currently impossible to develop a new link with twice the bandwidth and apply its commercialized product in a short time. The need arises to transmit the amount of traffic over both links.

그러므로, 본 발명은 스누핑 방식으로 클러스터들 사이의 캐쉬 일관성을 유지하면서도 단순히 단일 링 형태로 링 대역폭을 두배로 하는 방법보다 더 좋은 성능을 보일 수 있는 방향 분리 이중 링 구조의 분산된 공유 메모리 다중 프로세서 시스템을 제공하는 것을 그 목적으로 한다.Therefore, the present invention provides a distributed shared memory multiprocessor system in a direction-separated double ring structure that can achieve better performance than simply doubling the ring bandwidth in the form of a single ring while maintaining cache coherency between clusters in a snooping manner. To provide that purpose.

상술한 목적을 달성하기 위한 본 발명에 따른 분산된 공유 메모리 구조의 다중 프로세서 시스템은: 다수의 클러스터와, 상기 다수의 클러스터를 서로 연결하며, 스누핑을 지원하는 지점간 방향 분리 이중 링을 포함하며;A multiprocessor system of distributed shared memory architecture according to the present invention for achieving the above object includes: a plurality of clusters and a point-to-point bidirectional split double ring that connects the plurality of clusters to each other and supports snooping;

각각의 상기 클러스터는 전단의 이웃하는 클러스터로부터 발생된 데이터 요청 신호에 대응하는 명령어나 데이터를 포함하는 데이터 블록이 자신의 클러스터내에 유효한 상태로 저장되어 있는 지를 스누핑하여, 상기 데이터 블록이 유효한 상태로 저장되어 있을 때, 상기 데이터 블록을 상기 데이터 요청 클러스터에게 제공하며, 상기 요청된 데이터 블록이 자신의 클러스터내에 유효한 상태로 저장되어 있지 않을 때, 상기 데이터 요청 신호를 후단의 이웃하는 클러스터로 전달하며;Each of the clusters snoops whether a data block containing instructions or data corresponding to a data request signal generated from a neighboring cluster in the preceding stage is stored in a valid state in its cluster, and the data block is stored in a valid state. Provide the data block to the data request cluster, when the requested data block is not stored in a valid state in its cluster, and forward the data request signal to a subsequent neighboring cluster;

상기 방향 분리 이중 링은 상기 데이터 요청 신호를 상기 데이터 블록의 속성에 따라 선택적으로 제 1 방향 또는 제 2 방향을 따라 상기 후단의 이웃하는 클러스터로 전달하는 제 1 방향 및 제 2 방향 링을 구비하는 것을 특징으로 한다.The direction-separated double ring may include a first direction and a second direction ring for selectively transmitting the data request signal to the neighboring cluster at the rear end in a first direction or a second direction according to an attribute of the data block. It features.

본 발명의 바람직한 실시예에 따른 각각의 상기 클러스터는: 다수개의 프로세서; 지역 공유 메모리; 원격 캐쉬; 상기 클러스터내 프로세서로부터의 데이터 요청 신호에 응답하여 상기 데이터 블록이 상기 원격 캐쉬 또는 상기 지역공유 메모리에 유효한 상태로 저장되어 있는 지를 검색하여, 상기 원격 캐쉬 또는 지역 공유 메모리에 유효한 상태로 저장되어 있을 때, 그로부터 검색된 해당하는 데이터 블록을 상기 프로세서로 전달하고, 상기 원격 캐쉬 또는 지역 공유 메모리에 유효한 상태로 저장되어 있지 않을 때 상기 데이터 요청 신호를 상기 후단의 이웃하는 클러스터에 제공하는 노드 제어기; 상기 노드 제어기와 상기 방향 분리 이중 링 사이에서 인터페이스되어 각각의 상기 클러스터들을 방향 분리 이중 링에 연결하는 데이터 패스로 작용하며, 상기 노드 제어기를 통하여 전달되는 상기 프로세서로부터의 데이터 요청 신호를 상기 데이터 블록의 속성에 따라 선택적으로 제 1 또는 제 2 방향 링을 통하여 상기 후단의 이웃하는 클러스터로 전달하고 상기 데이터 블록을 상기 노드 제어기로 제공하는 링크 제어기; 상기 프로세서와 지역 공유 메모리 및 노드 제어기를 상호 연결하는 지역 시스템 버스를 포함하는 것을 특징으로 한다.Each said cluster according to a preferred embodiment of the present invention comprises: a plurality of processors; Local shared memory; Remote cache; In response to a data request signal from a processor in the cluster, if the data block is stored in the remote cache or the local shared memory in a valid state, and is stored in the remote cache or the local shared memory in a valid state. A node controller for delivering the corresponding data block retrieved therefrom to the processor and providing the data request signal to the next neighboring cluster when it is not stored in the remote cache or local shared memory in a valid state; Interworking between the node controller and the directional detached double ring to serve as a data path connecting each of the clusters to a directional detached double ring, the data request signal from the processor being transmitted through the node controller to the data block. A link controller that selectively passes the first or second directional ring to the next neighboring cluster and provides the data block to the node controller according to an attribute; And a local system bus that interconnects the processor with a local shared memory and a node controller.

도 1은 종래 기술의 스누핑 방식의 단일 링을 사용한 분산된 공유 메모리 다중 프로세서 시스템에 대한 구성도1 is a block diagram of a distributed shared memory multiprocessor system using a single ring of a prior art snooping method.

도 2는 본 발명에 따른 방향 분리 이중 링을 사용한 분산된 공유 메모리 다중 프로세서 시스템에 대한 일실시예를 나타내는 전체 구성도Figure 2 is an overall configuration diagram showing an embodiment of a distributed shared memory multiprocessor system using a direction-oriented double ring in accordance with the present invention

도 3a 및 도 3b는 도 2에 도시된 본 발명에 따른 다중 프로세서 시스템의 본 발명의 일실시예에 대한 동작을 설명하기 위한 도면3A and 3B are views for explaining the operation of an embodiment of the present invention of the multiprocessor system according to the present invention shown in FIG.

도 4a, 4b, 4c 및 4d는 본 발명의 방향 분리 이중 링을 사용한 분산된 공유 메모리 다중 프로세서 시스템의 클러스터에 대한 다른 실시예를 나타내는 구성도.4A, 4B, 4C, and 4D are schematic diagrams illustrating another embodiment of a cluster of distributed shared memory multiprocessor systems using directional split dual rings of the present invention.

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

100A, 100B : 프로세서 130 : 링크 버스100A, 100B: Processor 130: Link Bus

140 : 지역 시스템 버스 150 : 노드 제어기140: local system bus 150: node controller

160A, 160B : 링크 제어기 170 : 원격 캐쉬160A, 160B: Link Controller 170: Remote Cache

172A, 172B : 원격 태그 캐쉬 176 : 원격 데이터 캐쉬172A, 172B: Remote Tag Cache 176: Remote Data Cache

180 : I/O 브릿지 300 : 지역 공유 메모리180: I / O bridge 300: local shared memory

310 : 데이터 메모리 320A, 320B : 메모리 디렉토리310: data memory 320A, 320B: memory directory

500A 내지 500H : 클러스터 510A, 510B : 방향 분리 이중 링500A to 500H: Cluster 510A, 510B: Directional split double ring

이하, 본 발명은 첨부된 도면을 참조하여 다음과 같이 상세히 설명될 것이다.Hereinafter, the present invention will be described in detail with reference to the accompanying drawings.

도 2를 참조하면, 본 발명의 일실시예에 따른 스누핑을 지원하는 지점간(point-to-point) 방향 분리 이중 링으로 연결된 분산 공유 메모리 구조의 다중 프로세서 시스템이 도시된다.Referring to FIG. 2, shown is a multiprocessor system of distributed shared memory architecture coupled with point-to-point directional split dual rings that support snooping in accordance with one embodiment of the present invention.

본 발명의 다중 프로세서 시스템은 다수의 클러스터(500A 내지 500H)를 포함하며, 각각의 클러스터(500A 내지 500H)는 스누핑을 지원하는 지점간 방향 분리 이중 링(510A, 510B)으로 연결되어 있다. 본 발명에 있어서, 방향 분리 이중 링이라는 용어는 클러스터로부터의 데이터 요청 신호 또는 그에 해당하는 검색된 데이터 블록을 가장 가까운 경로를 갖는 제 1 방향 또는 상기 제 1 방향과 반대인 제 2 방향으로 전달하도록 구성된 양방향 분리 가능한 이중 링을 의미한다. 방향 분리 이중 링(510A, 510B)은 어느 클러스터의 데이터 요청 신호와 그 데이터 요청 신호에 따라 해당하는 클러스터로부터 검색된 데이터 블록을 그 데이터 블록의 속성에 따라 각기 제 1 방향 또는 제 2 방향으로 전달하는 제 1 방향 링(510A) 및 제 2 방향 링(510B)으로 구성된다. 제 1 방향 링(510A) 또는 제 2 방향 링(510B)의 분류 기준이 되는 데이터 블록의 속성은 하기 설명되는 바와 같이 클러스터로부터 요청된 데이터를 포함하는 데이터 블록이 짝수 메모리 번지에 저장된 데이터 블록인지 또는 홀수 메모리 번지에 저장된 데이터 블록인지에 따라 결정된다.The multiprocessor system of the present invention includes a plurality of clusters 500A-500H, each cluster 500A-500H being connected to a point-to-point split double ring 510A, 510B that supports snooping. In the present invention, the term directional split double ring is bidirectional configured to transmit a data request signal from a cluster or a corresponding retrieved data block in a first direction having a closest path or in a second direction opposite to the first direction. Means a detachable double ring. The direction-separated double rings 510A and 510B transmit data blocks retrieved from the cluster according to the data request signal of the cluster and the data request signal in the first direction or the second direction according to the attributes of the data blocks, respectively. It consists of a one-way ring 510A and a second directional ring 510B. The attribute of the data block that is the classification criterion of the first directional ring 510A or the second directional ring 510B is whether the data block containing the data requested from the cluster is a data block stored at an even memory address, or as described below. This is determined by the data block stored in the odd memory address.

도 2의 좌측을 참조하면, 서로 동일한 구성을 갖는 다수개의 클러스터들(500A 내지 500H)중의 어느 하나의 클러스터, 예로 클러스터(500A)의 구성이 보다 상세히 도시된다. 도시된 바와 같이, 클러스터(500A)는 캐쉬를 내장하고 있는 다수개의 프로세서(100A 내지 100B)와 지역 공유 메모리(300), 다수개의 I/O 브릿지(180), 노드 제어기(150), 링크 제어기(160) 및 원격 캐쉬(RAC: Remote Access Cache)(170)를 포함하며, 프로세서(100A 내지 100B)와 지역 공유 메모리(300), I/O 브릿지(180) 및 노드 제어기(150)는 지역 시스템 버스(140)를 통해 연결된다. 또한, 한 쌍의 링크 제어기(160A, 160B)로 구성된 링크 제어기(160)는 링크 버스(130)를 통해 노드 제어기(150)와 연결되며, 각 클러스터(500A 내지 500H)를 방향 분리 이중 링(510A, 510B)에 연결하는 기능을 수행한다.Referring to the left side of FIG. 2, the configuration of any one cluster among clusters 500A to 500H having the same configuration as each other, for example, the cluster 500A is illustrated in more detail. As shown, the cluster 500A includes a plurality of processors (100A to 100B) having a cache, a local shared memory (300), a plurality of I / O bridges (180), a node controller (150), a link controller ( 160 and Remote Access Cache (RAC) 170, wherein the processors 100A to 100B and local shared memory 300, I / O bridge 180, and node controller 150 are local system buses. Connected via 140. In addition, the link controller 160 composed of a pair of link controllers 160A and 160B is connected to the node controller 150 through the link bus 130, and each cluster 500A to 500H is directionally separated from the double ring 510A. , 510B).

노드 제어기(150)는 클러스터(500A)의 프로세서(100A 내지 100B)로부터의 데이터 요청 신호에 대응하는 명령어나 데이터를 포함하는 블록(이하 데이터 블록이라 지칭함)이 원격 캐쉬(170) 또는 클러스터(500A)내의 지역 공유 메모리(300)에 유효한 상태로 저장되어 있는지를 검색한다. 검색 결과, 원격 캐쉬(170)에 유효한 상태로 저장되어 있을 경우, 노드 제어기(150)는 원격 캐쉬(170)에 저장된 해당 데이터 블록을 프로세서(100A 내지 100B)에 제공하지만, 원격 캐쉬(170)에 저장되어 있지 않고 지역 공유 메모리(300)에 유효한 상태로 저장되어 있을 경우에는 지역 공유 메모리(300)가 그 데이터 블록을 제공하게 한다. 만일, 원격 캐쉬(170)나 지역 공유 메모리(300)에 그 데이터 블록이 유효한 상태로 저장되어 있지 않을 경우, 요청한 데이터를 포함하는 블록이 홀수 블록이면 그 요청을 제 1 링크 제어기(160A)를 통해 제 1 방향 링(510A)으로 전송한다. 만일 요청한 데이터를 포함하는 블록이 짝수 블록이면 그 짝수 블록에 대한 요청을 제 2 링크 제어기(160B)를 통해 제 2 방향 링(510B)으로 전송한다(이하, 홀수 블록에 대한 요청을 전송하는 링을 제 1 방향 링 또는 홀수 링(510A), 짝수 블록에 대한 요청을 전송하는 링을 제 2 방향 링 또는 짝수 링(510B), 홀수 링(510A)과 인터페이스하는 링크 제어기를 제 1 또는 홀수 링크 제어기(160A), 짝수 링(510B)과 인터페이스하는 링크 제어기를 제 2 또는 짝수 링크 제어기(160B)라고 지칭한다.) 이렇게 노드 제어기(150)는 홀수 링크 제어기(160A)와 짝수 링크 제어기(160B)를 통해 다른 클러스터(500B 내지 500H)들로, 그 블록에 대한 요청 신호를 전송하도록 하는 작용을 한다.The node controller 150 may include a remote cache 170 or a cluster 500A including a block (hereinafter, referred to as a data block) that includes instructions or data corresponding to a data request signal from the processors 100A to 100B of the cluster 500A. Search whether it is stored in the local shared memory 300 in the valid state. As a result of the search, if it is stored in the remote cache 170 in a valid state, the node controller 150 provides the corresponding data block stored in the remote cache 170 to the processors 100A to 100B, but not to the remote cache 170. When not stored and stored in the local shared memory 300 in a valid state, the local shared memory 300 causes the data block to be provided. If the data block is not stored in the remote cache 170 or the local shared memory 300 in a valid state, if the block including the requested data is an odd block, the request is transmitted through the first link controller 160A. Transmit to first directional ring 510A. If the block containing the requested data is an even block, a request for the even block is transmitted to the second directional ring 510B through the second link controller 160B (hereinafter, referred to as a ring for transmitting a request for odd blocks). A link controller for interfacing a first directional ring or an odd ring 510A, a ring for transmitting a request for an even block with a second directional ring or an even ring 510B, an odd ring 510A, or a first or odd link controller ( 160A), the link controller that interfaces with the even ring 510B is referred to as a second or even link controller 160B.) The node controller 150 is thus connected via the odd link controller 160A and the even link controller 160B. Other clusters 500B-500H serve to send a request signal for that block.

다시 말해서, 노드 제어기(150)는 홀수 링크 제어기(160A)나 짝수 링크 제어기(160B)를 통해 다른 클러스터(500B 내지 500H)들로부터 데이터 블록 요청 신호가 입력되면, 그 요청 신호에 대응하는 데이터 블록이 자신의 원격 캐쉬(170)나 지역 공유 메모리(300)에 유효한 상태로 저장되어 있는지를 검색한다. 이때, 검색 결과 원격 캐쉬(170)에 유효한 상태로 저장되어 있을 경우, 그 블록을 요청한 클러스터(500B 내지 500H)에 가장 가까운 경로를 갖는 홀수 링(510A) 또는 짝수 링(510B)을 통해 그 요청 신호를 발생한 다른 클러스터(500B 내지 500H)에 원격 캐쉬(170)에 저장된 해당 데이터 블록이 전송되도록 한다. 만일, 검색결과 지역 공유 메모리(300)에 유효한 데이터가 저장되어 있다고 검색되면, 노드 제어기(150)는 지역 시스템 버스(140)를 통해 그 블록에 대한 요청을 전송하여 지역 공유 메모리(300)로부터 해당 데이터 블록을 제공받아, 그 블록을 요청한 클러스터(500B 내지 500H)에 가장 가까운 경로를 갖는 홀수 링(510A) 또는 짝수 링(510B)을 통해 요청 신호를 발생한 다른 클러스터(500B 내지 500H)에게 해당 데이터 블록이 전송되도록 한다.In other words, when the node controller 150 receives the data block request signal from the other clusters 500B to 500H through the odd link controller 160A or the even link controller 160B, the data block corresponding to the request signal is received. Search whether it is stored in its remote cache 170 or local shared memory 300 in a valid state. At this time, if the search result is stored in the valid state in the remote cache 170, the request signal through the odd ring 510A or even ring 510B having the path closest to the cluster (500B to 500H) requesting the block. The corresponding data block stored in the remote cache 170 is transmitted to the other clusters 500B to 500H. If it is found that valid data is stored in the local shared memory 300, the node controller 150 transmits a request for the block through the local system bus 140 to the corresponding node from the local shared memory 300. The data block is provided to the other clusters 500B to 500H that have received the request signal through the odd ring 510A or the even ring 510B having the path closest to the clusters 500B to 500H that requested the block. To be transmitted.

또한, 본 발명에 따르면, 각각의 클러스터(500A 내지 500H)는 지역 공유 메모리(300)에 저장된 데이터 블록에 대한 상태 정보를 저장하는 메모리 디렉토리(320)를 더 포함한다. 메모리 디렉토리(320)는 노드 제어기(150)가 프로세서(100A 내지 100B)로부터 요청된 데이터 블록이 지역 공유 메모리(300)에 어떠한상태로 저장되어 있는지를 효과적으로 검색하고 다른 클러스터(500B 내지 500H)들로부터 요청된 데이터 블록이 자신의 지역 공유 메모리(300)에 어떠한 상태로 저장되어 있는지를 효과적으로 검색하게 한다. 더욱 바람직하기로는 메모리 디렉토리(320)는 도 2에 도시된 바와 같이 독립적인 두 개의 메모리 디렉토리(320A, 320B)로 구성되어, 지역 시스템 버스(140)를 통해 연결된 프로세서(100A 내지 100B)로부터의 지역 공유 메모리(300) 접근 요구와 링크 제어기(160A, 160B)를 통해 이웃 클러스터(500B 내지 500H)로부터의 지역 공유 메모리(300) 접근 요구를 병렬적으로 처리할 수 있다.In addition, according to the present invention, each cluster 500A to 500H further includes a memory directory 320 that stores state information about data blocks stored in the local shared memory 300. The memory directory 320 allows the node controller 150 to effectively retrieve the state in which the data blocks requested from the processors 100A to 100B are stored in the local shared memory 300 and from other clusters 500B to 500H. It effectively searches for the state in which the requested data block is stored in its local shared memory 300. More preferably, memory directory 320 is comprised of two independent memory directories 320A, 320B, as shown in FIG. 2, to provide locality from processors 100A to 100B connected via local system bus 140. The shared memory 300 access request and the link controllers 160A and 160B may process the local shared memory 300 access request from neighbor clusters 500B to 500H in parallel.

각각의 링크 제어기(160A, 160B)는 클러스터(500A)를 방향 분리 이중 링(510A, 520B)에 연결하는 데이터 패스(path) 기능을 수행한다. 링크 제어기(160A, 160B)는 노드 제어기(150)로부터의 요청 신호나 데이터 블록을 패킷으로 구성하여 홀수 링(510A)이나 짝수 링(510B)을 통해 다른 클러스터들(500B 내지 500H)로 전송하고, 홀수 링(510A)이나 짝수 링(510B)을 통해 다른 클러스터(500B 내지 500H)에서 전송되어 오는 요청 신호나 데이터 블록을 선별하여 노드 제어기(150)에게 전달할 뿐 아니라, 패킷 전송에 필요한 모든 흐름제어를 책임진다. 또한 링크 제어기(160A, 160B)는 전송되어 오는 요청 신호가 방송 패킷이면, 그 요청 신호를 스누핑을 위해 노드 제어기(150)로 전송할 뿐만 아니라 전송받은 패킷을 이웃 클러스터(500B 또는 500H)에게 바이패스(bypass)하는 역할을 수행한다. 보다 상세히 말해서, 링크 제어기(160A, 160B)는 홀수 링(510A)을 통해 이웃 클러스터(500H)로부터 전송되어 온 방송 요청은 홀수 링(510A)을 통해 또 다른 이웃 클러스터(500B)로 바이패스하며, 짝수 링(510B)을 통해 이웃 클러스터(500B)로부터 전송되어 온 방송 요청은 짝수 링(510B)을 통해 또 다른 이웃 클러스터(500H)로 바이패스한다.Each link controller 160A, 160B performs a data path function that connects the cluster 500A to directional split dual rings 510A, 520B. The link controllers 160A and 160B construct a request signal or data block from the node controller 150 into packets and transmit the packets to the other clusters 500B to 500H through the odd ring 510A or the even ring 510B. Through the odd ring 510A or the even ring 510B, not only the request signal or data block transmitted from the other clusters 500B to 500H is selected and transmitted to the node controller 150, but also all the flow control necessary for packet transmission is transmitted. Responsible. In addition, if the request signal being transmitted is a broadcast packet, the link controllers 160A and 160B not only transmit the request signal to the node controller 150 for snooping but also bypass the received packet to the neighbor cluster 500B or 500H. It bypasses the role. More specifically, the link controllers 160A and 160B bypass the broadcast request transmitted from the neighbor cluster 500H through the odd ring 510A to another neighbor cluster 500B through the odd ring 510A. The broadcast request transmitted from the neighbor cluster 500B through the even ring 510B is bypassed to another neighbor cluster 500H through the even ring 510B.

한편, 클러스터(500A)내의 원격 캐쉬(170)는 자신을 제외한 다른 클러스터들(500B 내지 500H)내의 지역 공유 메모리(이하, 원격 공유 메모리라 지칭한다)의 영역에 해당하는 데이터 블록만 캐슁하는 캐쉬로서, 지역 시스템 버스(140)에 연결된 프로세서(100A, 100B)로부터의 원격 공유 메모리 영역에 해당하는 데이터 블록에 대한 요청의 경우, 그 블록을 원격 캐쉬(170)에 할당하며, 지역 공유 메모리(300) 영역의 블록은 캐슁하지 않는다. 클러스터(500A)의 원격 캐쉬(170)는 다른 클러스터들(500B 내지 500H)내의 원격 공유 메모리 영역에 해당하는 데이터 블록만을 캐슁함으로써 상대적으로 작고 빨리 동작하도록 구성하는 것이 가능하다.Meanwhile, the remote cache 170 in the cluster 500A is a cache that caches only data blocks corresponding to an area of local shared memory (hereinafter referred to as remote shared memory) in the other clusters 500B to 500H except itself. In the case of a request for a data block corresponding to a remote shared memory area from the processors 100A and 100B connected to the local system bus 140, the block is allocated to the remote cache 170 and the local shared memory 300 is allocated. Blocks in the area are not cached. The remote cache 170 of the cluster 500A can be configured to operate relatively small and fast by caching only data blocks corresponding to the remote shared memory area in the other clusters 500B to 500H.

원격 캐쉬(170)는 클러스터(500A)내의 프로세서(100A 내지 100B)에 있는 캐쉬들과, 다른 클러스터들(500B 내지 500H)내의 원격 공유 메모리부의 메모리 영역에 대해 MLI 성질(Multi-Level Inclusion Property)을 만족시키기 때문에 다른 클러스터(500B 내지 500H)들로부터의 원격 공유 메모리 참조 요청 신호에 대해 스누핑 여과(Snoop filtering)의 기능을 가진다. 여기서 MLI 성질은 하위 계층의 캐쉬에 유효한 상태로 저장된 데이터 블록은 상위 계층의 캐쉬에도 항상 유효한 상태로 저장되어 있어야 하는 성질을 의미하며, 이를 위해 상위 계층의 캐쉬 블록이 대체(replacement)될 경우 해당 블록이 어떠한 하위 계층의 캐쉬에도 유효한 상태로 존재하지 않아야 함을 보장해야 한다.The remote cache 170 applies MLI property (Multi-Level Inclusion Property) to the caches in the processors 100A to 100B in the cluster 500A and the memory area of the remote shared memory portion in the other clusters 500B to 500H. As it satisfies, it has the function of Snoop filtering on the remote shared memory reference request signal from other clusters 500B to 500H. In this case, the MLI property means that a data block stored in the cache of the lower layer is always stored in the cache of the upper layer. Therefore, when the cache block of the upper layer is replaced, the corresponding block is replaced. You must ensure that no cache in any of these lower layers is present in a valid state.

따라서, 원격 캐쉬(170)는 클러스터(500A)의 프로세서(100A 내지 100B) 내부 캐쉬에 유효한 상태로 저장된 원격 데이터 블록들을 저장하게 되며, 다른 클러스터(500B 내지 500H)들로부터의 원격 공유 메모리 참조 요청 신호에 대해 원격 캐쉬(170)에 해당 데이터 블록이 유효한 상태로 저장되어 있지 않으면, 지역 시스템 버스(140)로 해당 데이터 블록에 대한 요청을 전송할 필요가 없는 스누핑 여과 기능을 담당하게 되는 것이다.Accordingly, the remote cache 170 stores the remote data blocks stored in a valid state in the internal cache of the processors 100A to 100B of the cluster 500A, and the remote shared memory reference request signal from the other clusters 500B to 500H. If the data block is not stored in the remote cache 170 in a valid state, the local system bus 140 is responsible for the snooping filtering function that does not need to send a request for the data block.

이때, 바람직하기로는 원격 캐쉬(170)를 도 2에 도시된 바와 같이 데이터 블록의 내용을 저장하는 원격 데이터 캐쉬(176)와, 데이터 블록의 상태 및 주소의 일부분을 저장하는 원격 태그 캐쉬(172)로 구성하여, 원격 데이터 캐쉬(176)에 저장된 데이터 블록의 상태를 갱신하거나, 필요한 경우 해당 데이터 블록을 제공하기 용이하게 한다. 더욱 바람직하게, 원격 데이터 블록에 대한 주소와 이러한 상태를 저장하는 원격 태그 캐쉬(172)는 독립적인 두 개의 원격 태그 캐쉬(172A, 172B)로 구성되어, 지역 시스템 버스(140)를 통해 연결된 프로세서(100A 내지 100B)로부터의 원격 캐쉬(170) 접근 요구와 링크 제어기(160A, 160B)를 통해 이웃 클러스터(500B 내지 500H)로부터의 원격 캐쉬(170) 접근 요구를 병렬적으로 처리할 수 있도록 한다.In this case, the remote cache 170 preferably stores the contents of the data block as shown in FIG. 2, and the remote tag cache 172 stores a part of the state and address of the data block. In this case, the data block stored in the remote data cache 176 may be updated, or the data block may be easily provided if necessary. More preferably, the remote tag cache 172 storing the address and the state for the remote data block is comprised of two independent remote tag caches 172A and 172B, which are connected to the local system bus 140 by a processor ( Remote cache 170 access requests from 100A to 100B and remote cache 170 access requests from neighboring clusters 500B to 500H may be handled in parallel via link controllers 160A and 160B.

상술한 바와 같이 구성된 본 발명의 방향 분리 이중 링 구조의 분산된 공유 메모리 다중 프로세서 시스템의 동작은 도 3을 참조하여 다음과 같이 상세히 설명된다. 본 발명에 따른 방향 분리 이중 링 구조의 다중 프로세서 시스템의 동작을설명함에 있어 원격 캐쉬(170)에 저장된 데이터 블록이 다음 4 가지의 상태, 즉, '갱신(Modified)', '갱신-공유(Modified-Shared)', '공유(Shared)', '무효(Invalid)' 상태중의 하나를 가지는 경우에 대해 서술한다.The operation of the distributed shared memory multiprocessor system of the direction-separated dual ring structure of the present invention configured as described above is described in detail as follows with reference to FIG. In describing the operation of the multi-processor system of the directional split dual ring structure according to the present invention, the data block stored in the remote cache 170 has the following four states: 'Modified' and 'Modified'. -Shared ',' Shared ',' Invalid 'state.

* 갱신 : 데이터 블록이 유효하고 갱신되었으며, 유일하게 유효한 복사본.* Update: The data block is valid and updated, the only valid copy.

* 갱신-공유 : 데이터 블록이 유효하고 갱신되었으며, 다른 원격 캐쉬가 그 데이터 블록을 공유하고 있을 수 있음.Update-Shared: The data block is valid and updated, and another remote cache may be sharing the data block.

* 공유 : 데이터 블록이 유효하고 다른 원격 캐쉬가 데이터 블록을 공유하고 있을 수 있음.* Share: The data block is valid and another remote cache may be sharing the data block.

* 무효 : 데이터 블록이 유효하지 않음.* Invalid: The data block is invalid.

또한, 본 발명에 따른 다중 프로세서 시스템의 동작을 설명함에 있어 지역 시스템 버스(140)를 통해 전송된 지역 공유 메모리(300) 접근 요청에 대한 캐쉬 일관성 트래픽을 최소화하고 이중 링(510A, 510B)으로의 불필요한 트랜잭션을 줄이며, 지역 시스템 버스(140)로부터의 요구를 처리하고, 이중 링(510A, 510B)으로부터의 스누핑 요구에 대해 스누핑 결과를 생성하기 위해 메모리 디렉토리(320A, 320B)가 C, S, G의 3가지 상태를 유지하는 경우에 대해 서술한다.In addition, in describing the operation of the multiprocessor system according to the present invention, the cache coherency traffic for the local shared memory 300 access request transmitted through the local system bus 140 is minimized and the dual ring 510A, 510B is transferred to the dual ring 510A, 510B. Memory directories 320A, 320B are C, S, G to reduce unnecessary transactions, handle requests from local system bus 140, and generate snooping results for snooping requests from dual rings 510A, 510B. It describes the case of maintaining three states of.

* C(Clean) : 해당 데이터 블록이 다른 클러스터의 원격 캐쉬에 유효한 상태로 저장되어 있지 않음.* C (Clean): The data block is not stored in a valid state in the remote cache of another cluster.

* S(Shared) : 해당 데이터 블록이 유효하고 다른 클러스터의 원격 캐쉬에 갱신되지 않은 유효한 상태로 저장되어 있을 수 있음.* S (Shared): The data block is valid and may be stored in a valid state that is not updated in the remote cache of another cluster.

* G(Gone) : 해당 데이터 블록이 유효하지 않으며, 다른 클러스터의 원격 캐쉬에 갱신된 유효한 상태로 저장되어 있음.* G (Gone): The data block is not valid and is stored in the updated valid state in the remote cache of another cluster.

한편, 각 클러스터(500A 내지 500H)를 연결해주는 방향 분리 이중 링(510A, 510B)상의 모든 통신은 패킷을 통해 이루어지며 패킷들은 요청 신호에 상응하는 요청 패킷, 응답 신호에 상응하는 응답 패킷, 인식 신호에 상응하는 인식 패킷으로 분류될 수 있다. 요청 패킷은 이중 링(510A, 510B)으로의 트랜잭션을 필요로 하는 클러스터에 의해 발송되는 패킷으로 방송 패킷(broadcast packet)과 단일전송 패킷(unicast packet)으로 구분될 수 있으며 방송 패킷만이 다른 클러스터들에 의해 스누핑 된다.On the other hand, all the communication on the direction-separated double ring (510A, 510B) connecting each cluster (500A to 500H) is made through a packet, the packets are a request packet corresponding to the request signal, a response packet corresponding to the response signal, a recognition signal Can be classified into a recognition packet corresponding to The request packet is a packet sent by a cluster requiring a transaction to the dual rings 510A and 510B. The request packet may be divided into a broadcast packet and a unicast packet. Is snooped by.

응답 패킷은 요청 패킷을 수신한 응답 클러스터가 요청에 대한 응답으로 생성하는 패킷으로 언제나 단일 전송되며, 인식 패킷은 단일전송 패킷에 대한 인식으로 수신 클러스터에 의해 생성되어 발송 클러스터로 단일 전송된다. 단일전송 패킷을 전송한 클러스터는 패킷 전송 후 이 패킷에 대한 인식 패킷이 도착할 때까지 전송 패킷에 대한 정보를 유지하며, 인식 패킷이 도착하기 전에 동일한 블록에 대한 요청을 다른 클러스터로부터 수신하였을 경우 필요에 따라 그 클러스터로 재시도 요구 패킷을 단일 전송한다.A response packet is always sent in a single packet generated by the response cluster that receives the request packet in response to the request, and an acknowledgment packet is generated by the receiving cluster in recognition of the single transmission packet and transmitted to the sending cluster. A cluster that transmits a single transport packet maintains information about the transport packet after the packet is transmitted until an acknowledgment packet arrives. If a request for the same block is received from another cluster before the acknowledgment packet arrives, Therefore, a single retry request packet is sent to the cluster.

도 3a 및 도 3b에서, 클러스터(500A)의 한 프로세서(100A)로부터의 메모리 읽기 참조 요청에 대해 해당하는 데이터 블록이 원격 공유 메모리 영역에 해당하고 원격 캐쉬(170)에 유효한 상태로 저장되어 있지 않을 경우에, 클러스터(500A)는 방향 분리 이중 링(510A 또는 510B)을 통해 다른 클러스터(500B 내지 500H)들로 그 블록에 대한 읽기 요청 패킷을 방송한다. 또한, 해당 데이터 블록이클러스터(500A)의 지역 공유 메모리(300) 영역에 해당하지만 그 지역 공유 메모리(300)에 유효한 상태로 저장되어 있지 않을 경우에도 클러스터(500A)는 방향 분리 이중 링(510A, 510B)을 통해 다른 클러스터(500B 내지 500H)들로 그 블록에 대한 읽기 요청 패킷을 방송한다. 이때 요청한 블록이 홀수 블록이면 홀수 링크 제어기(160A)(도 2 참조)를 경유하여 홀수 링(510A)을 통해 그 블록에 대한 읽기 방송 요청을 전송하며, 짝수 블록일 경우에는 짝수 링 제어기(160B)(도 2 참조)를 경유하여 짝수 링(510B)을 통해 그 블록에 대한 읽기 방송 요청을 전송한다.3A and 3B, for a memory read reference request from one processor 100A of cluster 500A, the corresponding data block corresponds to the remote shared memory region and is not stored in the remote cache 170 in a valid state. In the case, cluster 500A broadcasts a read request packet for that block to other clusters 500B through 500H via directional split dual ring 510A or 510B. In addition, even if the corresponding data block corresponds to the area of the local shared memory 300 of the cluster 500A, but is not stored in the valid state of the local shared memory 300, the cluster 500A may use the direction-separated double ring 510A, 510B broadcasts the read request packet for that block to other clusters 500B-500H. At this time, if the requested block is an odd block, a read broadcast request for the block is transmitted through the odd ring controller 510A via the odd link controller 160A (see FIG. 2). In the case of the even block, the even ring controller 160B is used. A read broadcast request for the block is transmitted through the even ring 510B via (see FIG. 2).

이에 따라, 홀수 블록에 대한 읽기 방송 요청 패킷은 도 3a과 같이 홀수 링(510A)을 따라 클러스터(500B)에서부터 클러스터(500H)측으로 순차적으로 순회(본 발명에서는 왼쪽 방향으로 순회)하게 되며, 짝수 블록에 대한 읽기 방송 요청 패킷은 짝수 링(510B)을 따라 클러스터(500H)에서부터 클러스터(500B)측으로 순차적으로 순회(본 발명에서는 오른쪽 방향으로 순회)하게 된다. 요청 패킷이 홀수 링(510A)이나 짝수 링(510B)을 순회하는 동안, 각 클러스터(500B 내지 500H)는 이 읽기 방송 요청 패킷에 대해 내부의 원격 태그 캐쉬나 메모리 디렉토리를 조사하여 해당 데이터 블록이 어떠한 상태로 저장되어 있는지 등에 대한 스누핑을 수행하는 동시에 그 읽기 방송 요청 패킷을 상술한 바와 같이 인접한 이웃 클러스터로 바이패스한다.Accordingly, the read broadcast request packet for the odd block is sequentially traversed from the cluster 500B to the cluster 500H side along the odd ring 510A as shown in FIG. The read broadcast request packet is sequentially traversed from the cluster 500H to the cluster 500B along the even ring 510B (in the present invention, to the right). While the request packet traverses the odd ring 510A or even ring 510B, each cluster 500B through 500H examines the internal remote tag cache or memory directory for this read broadcast request packet so It snoops on whether it is stored in a state, and at the same time bypasses the read broadcast request packet to an adjacent neighbor cluster as described above.

예를 들어, 클러스터(500D)에서 내부를 스누핑한 결과 해당 데이터 블록이 원격 캐쉬에 수정된 상태(예를 들어, '갱신'이나 '갱신-공유'상태)로 저장되어 있을 경우(이 경우에 그 블록을 지역 공유 메모리에 유효한 상태로 저장하고 있는 클러스터는 존재하지 않는다), 클러스터(500D)는 자신이 그 요청 패킷에 대한 응답의 책임을 가진다고 판단하여, 요청한 데이터 블록을 포함하는 응답 패킷을 그 요청 패킷을 생성한 클러스터(500A)로 단일 전송하는 동시에 해당 블록의 원격 캐쉬의 상태를 '갱신-공유'나 갱신되지 않은 유효한 상태(예를 들어 '공유' 상태)로 변환한다. 해당 데이터 블록이 지역 공유 메모리에 유효한 상태로 저장되어 있으면, 클러스터(500D)는 자신이 그 요청 패킷에 대한 응답의 책임을 가진다고 판단하여, 요청한 데이터 블록을 포함하는 응답 패킷을 그 요청 패킷을 생성한 클러스터(500A)로 단일 전송한다. 이렇게 자신이 요청 패킷에 대한 응답의 책임이 있다고 판단한 클러스터(500D)(이하 소유권을 가진 클러스터라고 칭함)는 응답 패킷을 요청한 클러스터(500A)에 가장 가까운 경로를 갖는 홀수 링(510A)이나 짝수 링(510B)을 통해 전송한다. 도 3a의 경우 클러스터(500D)는 가까운 경로를 갖는 짝수 링(510B)을 통해 응답 패킷을 전송하며, 도 3b의 경우도 클러스터(500D)는 가까운 경로를 갖는 짝수 링(510B)을 통해 응답 패킷을 전송한다.For example, if the result of snooping inside the cluster 500D is that data block is stored in the remote cache in a modified state (for example, 'update' or 'update-shared') (in this case, There is no cluster that stores the block in the local shared memory in a valid state.), The cluster 500D determines that it is responsible for the response to the request packet, and sends the response packet including the requested data block to the request. A single packet is transmitted to the cluster 500A that generates the packet, and at the same time, the state of the remote cache of the block is converted into a 'update-shared' or an unupdated valid state (for example, a 'shared' state). If the data block is stored in the local shared memory in a valid state, the cluster 500D determines that it is responsible for the response to the request packet, and generates a request packet with the response packet including the requested data block. Single transmission to cluster 500A. Thus, the cluster 500D (hereinafter referred to as a cluster having ownership) which is determined to be responsible for the response to the request packet is an odd ring (510A) or an even ring (which has the path closest to the cluster 500A that requested the response packet). 510B). In the case of FIG. 3A, the cluster 500D transmits a response packet through an even ring 510B having a close path, and in FIG. 3B, the cluster 500D transmits a response packet through an even ring 510B having a close path. send.

이때, 앞선 읽기 방송 요청 패킷은 이중 링(510A 또는 510B)을 순회한 후 클러스터(500A)에 의해 제거된다. 한편, 클러스터(500A)는 클러스터(500D)로부터 응답 패킷을 받으면, 다시 응답 패킷을 전송한 클러스터(500D)에게 가장 가까운 경로를 갖는 이중 링(510A 또는 510B)을 통해 인식 패킷을 단일 전송(도 3a 및 도 3b에서는 홀수 링(510A)을 통해 단일 전송)하는 동시에, 클러스터(500A)의 지역 시스템 버스(140)를 통해 그 요청을 생성한 프로세서(100A)로 해당 데이터 블록을 전송한다. 또한, 요청 신호에 대응하는 데이터 블록이 원격 공유 메모리부의 메모리 영역에 해당하면 원격 캐쉬(170)에 해당 데이타 블록을 유효한 상태로 저장하며, 자신의 지역 공유 메모리(300)의 메모리 영역에 해당하면 지역 공유 메모리(300)에 그 블록을 저장하는 동시에 메모리 디렉토리의 상태를 다른 클러스터가 그 블록을 공유하고 있음을 의미하는 상태(예를 들어, 'S' 상태)로 갱신한다.At this time, the preceding read broadcast request packet is removed by the cluster 500A after iterating through the double ring 510A or 510B. On the other hand, when the cluster 500A receives the response packet from the cluster 500D, the cluster 500A transmits a single recognition packet through a double ring 510A or 510B having a path closest to the cluster 500D that transmitted the response packet again (FIG. 3A). And a single transmission through the odd ring 510A) and the corresponding data block to the processor 100A that generated the request via the local system bus 140 of the cluster 500A. In addition, if the data block corresponding to the request signal corresponds to the memory area of the remote shared memory unit, the data block is stored in the remote cache 170 in a valid state, and if the data block corresponds to the memory area of the local shared memory 300 of the local area, The block is stored in the shared memory 300 and the state of the memory directory is updated to a state (for example, an 'S' state) that means that another cluster is sharing the block.

한편, 도 3a 및 도 3b에서, 클러스터(500A)의 한 프로세서(100A)로부터의 메모리 쓰기 참조 요청에 대해 클러스터(500A)가 해당 데이터 블록을 원격 캐쉬(170)나 지역 공유 메모리(300)에 유효한 상태로 저장하고 있지 않을 경우에, 클러스터(500A)는 방향 분리 이중 링(510A 또는 510B)을 통해 다른 클러스터(500B 내지 500H)들로 그 블록에 대한 쓰기 요청 패킷을 방송한다. 이때 요청한 블록이 홀수 블록이면 도 3a과 같이 홀수 링(510A)을 통해 그 블록에 대한 쓰기 방송 요청을 전송하며, 짝수 블록일 경우 도 3b와 같이 짝수 링(510B)을 통해 그 블록에 대한 쓰기 방송 요청을 전송한다. 쓰기 방송 요청 패킷이 링 버스를 순회하는 동안 각 클러스터(500B 내지 500H)는 이 요청 패킷에 대해 원격 태그 캐쉬나 메모리 디렉토리를 조사하여 해당 데이터 블록이 어떠한 상태로 저장되어 있는지 등에 대한 스누핑을 수행하는 동시에 그 요청 패킷을 상술한 바와 같이 이웃 클러스터로 바이패스한다.Meanwhile, in FIGS. 3A and 3B, for a memory write reference request from one processor 100A of the cluster 500A, the cluster 500A applies the data block to the remote cache 170 or the local shared memory 300. If not storing in state, cluster 500A broadcasts a write request packet for that block to other clusters 500B through 500H via directional split dual ring 510A or 510B. At this time, if the requested block is an odd block, a write broadcast request for the block is transmitted through the odd ring 510A as shown in FIG. 3A. If the even block is an even block, write broadcast for the block is shown through the even ring 510B as shown in FIG. 3B. Send the request. While the write broadcast request packet traverses the ring bus, each cluster 500B-500H examines the remote tag cache or memory directory for this request packet, while snooping as to how the data block is stored, etc. The request packet is bypassed to the neighbor cluster as described above.

예를 들어, 클러스터(500D)에서 내부를 스누핑한 결과 해당 데이터 블록이 원격 캐쉬에 수정된 상태(예를 들어, '갱신'이나 '갱신-공유' 상태)로 저장되어 있거나(이 경우에 그 블록을 지역 공유 메모리에 유효한 상태로 저장하고 있는 클러스터는 존재하지 않는다), 그 데이터 블록이 지역 공유 메모리에 유효한 상태로 저장되어 있으면, 클러스터(500D)는 자신이 요청 패킷에 대한 응답의 책임을 가진다고 판단하여 요청한 데이터 블록을 포함하는 응답 패킷을 요청한 클러스터(500A)에 가장 가까운 경로를 갖는 홀수 링(510A)이나 짝수 링(510B)을 통해 전송한다. 도 3a의 경우 클러스터(500D)는 가까운 경로를 갖는 짝수 링(510B)을 통해 응답 패킷을 전송하며, 도 3b의 경우에도 클러스터(500D)는 가까운 경로를 갖는 짝수 링(510B)을 통해 응답 패킷을 전송한다. 이때, 클러스터(500D)는 해당 데이터 블록을 저장하고 있는 원격 캐쉬의 상태를 무효화된 상태(예를 들어, '무효')로 하거나 메모리 디렉토리의 상태를 무효화된 상태(예를 들어, 'G' 상태)로 갱신하며, 앞선 쓰기 방송 요청 패킷은 이중 링(510A 또는 510B)을 순회한 후 클러스터(500A)에 의해 제거되며, 스누핑 결과 해당 데이터 블록을 원격 캐쉬에 수정되지 않은 유효한 상태(예를 들어 '공유' 상태)로 저장하고 있는 클러스터는 그 블록의 원격 캐쉬 상태를 무효화된 상태(예를 들어 '무효' 상태)로 변경한다.For example, as a result of snooping inside the cluster 500D, the data block is stored in the remote cache in a modified state (eg, 'update' or 'update-shared') (in this case, the block). No cluster exists in the local shared memory), and if the data block is stored in the local shared memory in a valid state, the cluster 500D determines that it is responsible for responding to the request packet. A response packet including the requested data block is transmitted through an odd ring 510A or an even ring 510B having a path closest to the requested cluster 500A. In the case of FIG. 3A, the cluster 500D transmits a response packet through an even ring 510B having a close path, and even in FIG. 3B, the cluster 500D transmits a response packet through an even ring 510B having a close path. send. At this time, the cluster 500D may invalidate the state of the remote cache storing the corresponding data block (eg, 'invalid') or invalidate the state of the memory directory (eg, the 'G' state). ), The preceding write broadcast request packet is traversed through the dual ring (510A or 510B) and then removed by the cluster 500A, and the snooping resulted in a valid state in which the data block was not modified in the remote cache (e.g. " A cluster storing a "shared" state changes the block's remote cache state to an invalid state (for example, a 'invalid' state).

클러스터(500A)는 클러스터(500D)로부터 응답 패킷을 받으면, 다시 응답 패킷을 전송한 클러스터(500D)에게 가장 가까운 경로를 갖는 이중 링(510A 또는 510B)을 통해 인식 패킷을 단일 전송(도 3a와 도 3b에서는 홀수 링(510A)을 통해 단일 전송)하는 동시에, 클러스터(500A)의 지역 시스템 버스(140)를 통해 그 요청을 생성한 프로세서(100A)로 해당 데이터 블록을 전송한다. 또한, 요청한 데이터 블록이 원격 공유 메모리부의 메모리 영역에 해당하면 원격 캐쉬(170)에 그 블록을 수정된 유효한 상태(예를 들면 '갱신' 상태)로 저장하며, 지역 공유 메모리(300)의 메모리 영역에 해당하면 지역 공유 메모리(300)에 그 블록을 저장하는 동시에 메모리 디렉토리(320)의 상태를 클러스터(500A)의 원격 캐쉬(170)가 그 블록을 공유하고 있지 않음을 의미하는 상태(예를 들어, 'C' 상태)로 갱신한다.When the cluster 500A receives the response packet from the cluster 500D, the cluster 500A transmits a single acknowledgment packet through the double ring 510A or 510B having the path closest to the cluster 500D that transmitted the response packet again (FIGS. 3A and 3A). In 3b, the data block is transmitted to the processor 100A which generated the request through the local system bus 140 of the cluster 500A while performing a single transmission through the odd ring 510A. In addition, if the requested data block corresponds to a memory area of the remote shared memory unit, the block is stored in the remote cache 170 in a modified valid state (eg, an 'update' state), and the memory area of the local shared memory 300 is stored. In this case, the block is stored in the local shared memory 300 and the status of the memory directory 320 is not changed by the remote cache 170 of the cluster 500A. , 'C' state).

한편, 도 3에서 클러스터(500A)의 한 프로세서(100A)로부터의 메모리 쓰기 참조 요청이나 무효화 요청에 대해 클러스터(500A)가 해당 블록을 원격 캐쉬(170)에 소유권을 갖지 않은 유효한 상태(예를 들어 '공유' 상태)로 저장하고 있을 경우 상술한 클러스터(500A)가 해당 데이터 블록을 원격 캐쉬(170)나 지역 공유 메모리(300)에 유효한 상태로 저장하고 있지 않을 경우와 동일하게 동작한다.Meanwhile, in FIG. 3, in a memory write reference request or invalidation request from one processor 100A of the cluster 500A, the cluster 500A does not have ownership of the block in the remote cache 170 (for example, In the case of storing in the 'shared' state, the cluster 500A is operated in the same manner as the case in which the corresponding data block is not stored in the remote cache 170 or the local shared memory 300 in a valid state.

한편, 도 3에서 클러스터(500A)의 한 프로세서(100A)로부터의 메모리 쓰기 참조 요청이나 무효화 요청에 대해 클러스터(500A)가 지역 공유 메모리(300)에 그 블록을 유효한 상태로 저장하고 있거나 해당 블록을 원격 캐쉬(170)에 '갱신'이나 '갱신-공유' 상태로 저장하고 있는 경우, 즉 그 블록에 대한 소유권을 가지고 있는 경우, 그 클러스터(500A)는 이웃 클러스터(500B 내지 500H)들로 방향 분리 이중 링(510A 또는 510B)을 통해 무효화 요청 패킷을 방송한다. 이때 요청한 블록이 홀수 블록이면 도 3a와 같이 홀수 링(510A)을 통해 그 블록에 대한 무효화 요청을 방송하며, 짝수 블록일 경우 도 3b와 같이 짝수 링(510B)을 통해 그 블록에 대한 무효화 요청을 방송한다. 요청 패킷이 링을 순회하는 동안 각 클러스터(500B 내지 500H)는 이 요청 패킷에 대해 내부의 원격 태그 캐쉬나 메모리 디렉토리를 조사하여 해당 데이터 블록이 어떠한 상태로 저장되어 있는지 등에 대한 스누핑을 수행하는 동시에 그 요청 패킷을 인접한 이웃 클러스터로 상술한 바와 같은 방식으로 바이패스한다. 이때, 앞선 방송 요청 패킷은 링 버스를 순회한 후 클러스터(500A)에의해 제거되며, 스누핑 결과 해당 데이터 블록을 원격 캐쉬에 수정되지 않은 유효한 상태(예를 들어 '공유' 상태)로 저장하고 있는 클러스터들은 그 데이터 블록의 원격 캐쉬 상태를 무효화된 상태(예를 들어 '무효' 상태)로 변경한다. 클러스터(500A)는 해당 데이터 블록이 원격 공유 메모리부의 메모리 영역에 해당하면 원격 캐쉬(170)에 저장되어 있는 해당 블록의 상태를 수정된 상태(예를 들어, '갱신' 상태)로 변환하며, 지역 공유 메모리의 메모리 영역에 해당하면 그 블록의 메모리 디렉토리의 상태를 다른 클러스터의 원격 캐쉬가 그 블록을 공유하고 있지 않음을 의미하는 상태(예를 들어, 'C' 상태)로 갱신한다.Meanwhile, in FIG. 3, for a memory write reference request or invalidation request from one processor 100A of the cluster 500A, the cluster 500A stores the block in the local shared memory 300 in a valid state or stores the block. If the remote cache 170 is stored in an 'update' or 'update-shared' state, that is, if it has ownership of the block, then the cluster 500A is oriented to neighbor clusters 500B to 500H. The invalidation request packet is broadcast through the double ring 510A or 510B. At this time, if the requested block is an odd block, the invalidation request for the block is broadcast through the odd ring 510A as shown in FIG. 3A. If the even block is an even block, the invalidation request for the block is performed through the even ring 510B as shown in FIG. 3B. Broadcast. While the request packet traverses the ring, each cluster 500B-500H examines the internal remote tag cache or memory directory for this request packet, while snooping as to how the data block is stored, and so on. Bypass request packets to adjacent neighbor clusters in the manner described above. At this time, the preceding broadcast request packet is removed by the cluster 500A after iterating through the ring bus, and the cluster storing the data block in a valid state (for example, 'shared' state) in the remote cache as a result of snooping. Change the remote cache state of the data block to an invalid state (eg, an 'invalid' state). The cluster 500A converts the state of the block stored in the remote cache 170 into a modified state (for example, an 'update' state) when the data block corresponds to a memory area of the remote shared memory unit. If it corresponds to a memory area of shared memory, it updates the state of the block's memory directory to a state (eg, a 'C' state) that means that the remote cache of another cluster does not share the block.

클러스터(500A)의 원격 캐쉬(170)에서의 데이터 블록 대체로 인해 축출될 데이터 블록의 상태가 수정된 상태(예를 들면, '갱신'이나 '갱신-공유' 상태)일 경우에, 클러스터(500A)는 축출될 데이터 블록이 원래 저장되어 있어야 할 공유 메모리 영역을 구비한 클러스터, 예를 들어 클러스터(500D)에 가장 가까운 경로를 갖는 이중 링(510A 또는 510B)을 통해 축출된 블록을 포함하는 패킷을 단일 전송한다. 그러면, 클러스터(500D)는 해당 요청 패킷에 대해 자신의 데이터 메모리와 메모리 디렉토리를 갱신하며, 데이터 블록 축출 요청에 대한 인식 패킷을 그 요청 패킷을 생성한 클러스터(500A)로 가장 가까운 경로를 갖는 이중 링(510A 또는 510B)을 통해 단일 전송한다.If the state of the data block to be evicted due to data block replacement in the remote cache 170 of the cluster 500A is in a modified state (eg, 'update' or 'update-shared' state), the cluster 500A A single packet containing a block evicted through a double ring 510A or 510B having a path closest to the cluster 500D, for example a cluster with a shared memory area in which the data block to be evicted should be originally stored send. The cluster 500D then updates its data memory and memory directory for that request packet, and a double ring having a path closest to the acknowledgment packet for the data block eviction request to the cluster 500A that generated the request packet. Single transmission over 510A or 510B.

도 4a, 도 4b, 도 4c 및 도 4d를 참조하면, 본 발명에 따른 방향 분리 이중 링 구조의 다중 프로세서 시스템에서 사용되는 클러스터의 각기 다른 실시예가 도시된다.4A, 4B, 4C, and 4D, different embodiments of clusters used in a multi-processor system of directional split dual ring structures according to the present invention are shown.

도 4a에 도시된 클러스터들(500A 내지 500H) 또는 그중 일부의 클러스터는 도 2에서 설명된 홀수 링크 제어기(160A)와 짝수 링크 제어기(160B)가 링크 버스(130)를 통해 노드 제어기(150)에 연결된 것이 아니라, 각각의 링크 제어기(160A, 160B)가 노드 제어기(150)에 직접 연결된 것을 제외하고는 전체적인 구성과 동작은 도 2와 실질적으로 동일하므로 그에 대한 상세한 설명은 생략한다.The clusters 500A-500H, or some of the clusters, shown in FIG. 4A have an odd link controller 160A and even link controller 160B described in FIG. 2 connected to the node controller 150 via the link bus 130. The overall configuration and operation are substantially the same as those of FIG. 2 except that each link controller 160A, 160B is directly connected to the node controller 150, and thus detailed description thereof will be omitted.

마찬가지로, 도 4b에 도시된 클러스터들(500A 내지 500H) 또는 그중 일부의 클러스터는 도 2에 도시된 클러스터와 달리 디렉토리 캐쉬(320)와 지역 공유 메모리(300)가 제외되고, 하나 이상의 프로세서와 원격 캐쉬만을 내포한 구성을 가지며; 도 4c에 도시된 클러스터들(500A 내지 500H) 또는 그중 일부의 클러스터는 도 2에 도시된 클러스터와 달리 원격 캐쉬(170)가 없는 대신 지역 공유 메모리 모듈(300)만을 포함한 구성을 가지며; 도 4d에 도시된 각각의 클러스터(500A 내지 500H)는 도 2와 달리 지역 시스템 버스(140)가 아닌 임의의 상호 연결망(190), 예를 들면, 링, 크로스바 스위치 등으로 연결된 구성을 갖는다. 이와 관련하여, 도 4a 내지 도 4d에 도시된 클러스터의 전반적인 구성과 동작은 도 2에 도시되고 그와 관련하여 설명된 바와 실질적으로 동일하므로 그에 대한 상세한 설명은 생략한다.Similarly, clusters 500A-500H or some of the clusters shown in FIG. 4B, unlike the clusters shown in FIG. 2, exclude directory cache 320 and local shared memory 300, and include one or more processors and remote caches. Has a configuration containing only bays; The clusters 500A-500H or some of the clusters shown in FIG. 4C have a configuration that includes only the local shared memory module 300 instead of the remote cache 170, unlike the cluster shown in FIG. 2; Each cluster 500A-500H shown in FIG. 4D has a configuration that is connected to any interconnect network 190, such as a ring, crossbar switch, etc., rather than the local system bus 140, unlike FIG. In this regard, the overall configuration and operation of the clusters shown in FIGS. 4A-4D are substantially the same as those shown in FIG. 2 and described in connection with them, and thus detailed descriptions thereof will be omitted.

상술한 본 발명의 실시예에 있어서, 원격 캐쉬가 '갱신'과 '갱신-공유', '공유', '무효'를 갖는 경우에 대해 설명했으나, 본 발명이 원격 캐쉬가 변형된 다른 상태를 갖는 경우를 포함한 다양한 경우에도 동일하게 적용될 수 있으며, 본 발명의 실시예에 있어서 지역 공유 메모리를 위한 디렉토리가 'C', 'S', 'G'의 상태를 유지하는 경우에 대해 설명했으나 본 발명은 디렉토리가 변형된 다양한 다른 상태를 갖는 경우에도 동일하게 적용될 수 있음을 이해해야 한다.In the above-described embodiment of the present invention, a case in which the remote cache has 'update' and 'update-share', 'share', and 'invalid' has been described, but the present invention has a different state in which the remote cache is modified. The same may be applied to various cases including the case. In the exemplary embodiment of the present invention, the case where the directory for the local shared memory maintains the states of 'C', 'S', and 'G' has been described. It is to be understood that the same applies if the directory has various other states that are modified.

상술한 본 발명의 실시예에 있어서 방송 요청 패킷에 대한 응답 패킷과 인식 패킷이 최단 경로를 갖는 홀수 링(160A) 또는 짝수 링(160B)을 통해 전송되는 경우에 대해 설명했으나, 본 발명이 홀수 링(160A)을 통해 전송된 방송 요청에 대한 응답 패킷과 인식 패킷은 홀수 링(160A)으로 짝수 링(160B)을 통해 전송된 방송 요청에 대한 응답 패킷과 인식 패킷은 짝수 링(160B)으로 전송되는 경우와 홀수 링(160A) 또는 짝수 링(160B)의 임의의 순차로 전송되는 경우에도 동일하게 동작할 수 있음은 자명하다.In the above-described embodiment of the present invention, the case in which the response packet and the acknowledgment packet to the broadcast request packet are transmitted through the odd ring 160A or the even ring 160B having the shortest path has been described. The response packet and the acknowledgment packet for the broadcast request transmitted through the 160A are transmitted to the odd ring 160A, and the response packet and the acknowledgment packet for the broadcast request transmitted through the even ring 160B are transmitted to the even ring 160B. It is apparent that the same operation may be performed with the case and transmitted in any sequence of odd ring 160A or even ring 160B.

또한, 상술한 본 발명의 실시예에 있어서 모든 클러스터가 복수개의 프로세서와 I/O 시스템, 단일 시스템 버스를 사용하는 경우에 대해 설명했으나, 일부 또는 전부의 클러스터가 도 4b에 도시된 바와 같이 하나 이상의 프로세서와 원격 캐쉬만을 내포한 경우나 도 4c에 도시된 바와 같이 지역 공유 메모리 모듈만을 포함한 경우, 클러스터가 임의의 상호 연결망으로 연결된 도 4d의 경우에도 본 발명이 동일하게 적용될 수 있음은 자명하다.In addition, in the above-described embodiment of the present invention, a case has been described in which all clusters use a plurality of processors, an I / O system, and a single system bus, but some or all of the clusters are shown in FIG. 4B. When only the processor and the remote cache are included or as shown in FIG. 4C, only the local shared memory module is included, it is obvious that the present invention can be equally applied to the case of FIG. 4D in which the cluster is connected to any interconnection network.

이상 설명한 바와 같이 본 발명은 스누핑 방식으로 클러스터들 사이의 캐쉬 일관성을 유지하면서도 단순히 단일 링 형태로 링 대역폭을 두배로 하는 방법보다 더 좋은 성능을 제공하는 효과가 있다.As described above, the present invention has the effect of providing better performance than the method of simply doubling the ring bandwidth in the form of a single ring while maintaining cache coherency between clusters by a snooping method.

Claims (13)

분산된 공유 메모리 구조의 다중 프로세서 시스템에 있어서,In a multiprocessor system with a distributed shared memory structure, 다수의 클러스터;Multiple clusters; 상기 다수의 클러스터를 서로 연결하며, 스누핑을 지원하는 지점간 방향 분리 이중 링을 포함하며,Connecting the plurality of clusters to each other and including a point-to-point split double ring supporting snooping; 각각의 상기 클러스터는 전단의 이웃하는 클러스터로부터 발생된 데이터 요청 신호에 대응하는 명령어나 데이터를 포함하는 데이터 블록이 자신의 클러스터내에 유효한 상태로 저장되어 있는 지를 스누핑하여, 상기 데이터 블록이 유효한 상태로 저장되어 있을 때, 상기 데이터 블록을 상기 데이터 요청 클러스터에게 제공하며, 상기 요청된 데이터 블록이 자신의 클러스터내에 유효한 상태로 저장되어 있지 않을 때, 상기 데이터 요청 신호를 후단의 이웃하는 클러스터로 전달하며;Each of the clusters snoops whether a data block containing instructions or data corresponding to a data request signal generated from a neighboring cluster in the preceding stage is stored in a valid state in its cluster, and the data block is stored in a valid state. Provide the data block to the data request cluster, when the requested data block is not stored in a valid state in its cluster, and forward the data request signal to a subsequent neighboring cluster; 상기 방향 분리 이중 링은 상기 데이터 요청 신호를 상기 데이터 블록의 속성에 따라 선택적으로 제 1 방향 또는 제 2 방향을 따라 상기 후단의 이웃하는 클러스터로 전달하는 제 1 방향 및 제 2 방향 링을 구비하는 것을 특징으로 하는 방향 분리 이중 링을 이용한 분산된 공유 메모리 구조의 다중 프로세서 시스템.The direction-separated double ring may include a first direction and a second direction ring for selectively transmitting the data request signal to the neighboring cluster at the rear end in a first direction or a second direction according to an attribute of the data block. A multiprocessor system with distributed shared memory architecture using directional split double rings. 제 1 항에 있어서, 각각의 상기 클러스터는:The method of claim 1, wherein each of said clusters is: 다수개의 프로세서;A plurality of processors; 지역 공유 메모리;Local shared memory; 상기 클러스터내 프로세서로부터의 데이터 요청 신호에 응답하여 상기 데이터 블록이 상기 지역공유 메모리에 유효한 상태로 저장되어 있는 지를 검색하여, 상기 지역 공유 메모리에 유효한 상태로 저장되어 있을 때, 그로부터 검색된 해당하는 데이터 블록을 상기 프로세서로 전달하고, 상기 원격 캐쉬 또는 지역 공유 메모리에 유효한 상태로 저장되어 있지 않을 때 상기 데이터 요청 신호를 상기 후단의 이웃하는 클러스터에 제공하는 노드 제어기;Responsive to the data request signal from the processor in the cluster, searching whether the data block is stored in the local shared memory in a valid state, and when the data block is stored in the local shared memory in a valid state, the corresponding data block retrieved therefrom A node controller for delivering a data request signal to a neighboring cluster at a later stage when it is not stored in a valid state in the remote cache or a local shared memory; 상기 노드 제어기와 상기 방향 분리 이중 링 사이에서 인터페이스되어 각각의 상기 클러스터들을 방향 분리 이중 링에 연결하는 데이터 패스로 작용하며, 상기 노드 제어기를 통하여 전달되는 상기 프로세서로부터의 데이터 요청 신호를 상기 데이터 블록의 속성에 따라 선택적으로 제 1 및 제 2 방향 링을 통하여 상기 후단의 이웃하는 클러스터로 전달하고 및 상기 데이터 요청 신호에 따라 상기 노드 제어기에 의해 검색된 데이터 블록을 상기 노드 제어기로 제공하는 링크 제어기;Interworking between the node controller and the directional detached double ring to serve as a data path connecting each of the clusters to a directional detached double ring, the data request signal from the processor being transmitted through the node controller to the data block. A link controller for selectively passing the first and second directional rings to the neighboring cluster at the rear end according to an attribute and providing the node controller with a data block retrieved by the node controller according to the data request signal; 상기 프로세서와 지역 공유 메모리 및 노드 제어기를 상호 연결하는 상호 연결망을 포함하는 것을 특징으로 하는 방향 분리 이중 링을 이용한 분산된 공유 메모리 구조의 다중 프로세서 시스템.And a interconnection network interconnecting the processor, a local shared memory, and a node controller. 제 1 항에 있어서, 각각의 상기 클러스터는:The method of claim 1, wherein each of said clusters is: 다수개의 프로세서;A plurality of processors; 원격 캐쉬;Remote cache; 상기 클러스터내 프로세서로부터의 데이터 요청 신호에 응답하여 상기 데이터 블록이 상기 원격 캐쉬에 유효한 상태로 저장되어 있는 지를 검색하여, 상기 원격 캐쉬에 유효한 상태로 저장되어 있을 때, 그로부터 검색된 해당하는 데이터 블록을 상기 프로세서로 전달하고, 상기 원격 캐쉬에 유효한 상태로 저장되어 있지 않을 때 상기 데이터 요청 신호를 상기 후단의 이웃하는 클러스터에 제공하는 노드 제어기;Responsive to a data request signal from a processor in the cluster, searching whether the data block is stored in the remote cache in a valid state, and when the data block is stored in the remote cache in a valid state, retrieves the corresponding data block retrieved therefrom. A node controller for delivering to said processor and providing said data request signal to said next neighboring cluster when it is not stored in said remote cache in a valid state; 상기 노드 제어기와 상기 방향 분리 이중 링 사이에서 인터페이스되어 각각의 상기 클러스터들을 방향 분리 이중 링에 연결하는 데이터 패스로 작용하며, 상기 노드 제어기를 통하여 전달되는 상기 프로세서로부터의 데이터 요청 신호를 상기 데이터 블록의 속성에 따라 선택적으로 제 1 및 제 2 방향 링을 통하여 상기 후단의 이웃하는 클러스터로 전달하고 및 상기 데이터 요청 신호에 따라 상기 노드 제어기에 의해 검색된 데이터 블록을 상기 노드 제어기로 제공하는 링크 제어기;Interworking between the node controller and the directional detached double ring to serve as a data path connecting each of the clusters to a directional detached double ring, the data request signal from the processor being transmitted through the node controller to the data block. A link controller for selectively passing the first and second directional rings to the neighboring cluster at the rear end according to an attribute and providing the node controller with a data block retrieved by the node controller according to the data request signal; 상기 프로세서와 지역 공유 메모리 및 노드 제어기를 상호 연결하는 상호 연결망을 포함하는 것을 특징으로 하는 방향 분리 이중 링을 이용한 분산된 공유 메모리 구조의 다중 프로세서 시스템.And a interconnection network interconnecting the processor, a local shared memory, and a node controller. 제 1 항에 있어서, 각각의 상기 클러스터는:The method of claim 1, wherein each of said clusters is: 다수개의 프로세서;A plurality of processors; 지역 공유 메모리;Local shared memory; 원격 캐쉬;Remote cache; 상기 클러스터내 프로세서로부터의 데이터 요청 신호에 응답하여 상기 데이터 블록이 상기 원격 캐쉬 또는 상기 지역공유 메모리에 유효한 상태로 저장되어 있는 지를 검색하여, 상기 원격 캐쉬 또는 지역 공유 메모리에 유효한 상태로 저장되어 있을 때, 그로부터 검색된 해당하는 데이터 블록을 상기 프로세서로 전달하고, 상기 원격 캐쉬 또는 지역 공유 메모리에 유효한 상태로 저장되어 있지 않을 때 상기 데이터 요청 신호를 상기 후단의 이웃하는 클러스터에 제공하는 노드 제어기;In response to a data request signal from a processor in the cluster, if the data block is stored in the remote cache or the local shared memory in a valid state, and is stored in the remote cache or the local shared memory in a valid state. A node controller for delivering the corresponding data block retrieved therefrom to the processor and providing the data request signal to the next neighboring cluster when it is not stored in the remote cache or local shared memory in a valid state; 상기 노드 제어기와 상기 방향 분리 이중 링 사이에서 인터페이스되어 각각의 상기 클러스터들을 방향 분리 이중 링에 연결하는 데이터 패스로 작용하며, 상기 노드 제어기를 통하여 전달되는 상기 프로세서로부터의 데이터 요청 신호를 상기 데이터 블록의 속성에 따라 선택적으로 제 1 및 제 2 방향 링을 통하여 상기 후단의 이웃하는 클러스터로 전달하고 및 상기 데이터 요청 신호에 따라 상기 노드 제어기에 의해 검색된 데이터 블록을 상기 노드 제어기로 제공하는 링크 제어기;Interworking between the node controller and the directional detached double ring to serve as a data path connecting each of the clusters to a directional detached double ring, the data request signal from the processor being transmitted through the node controller to the data block. A link controller for selectively passing the first and second directional rings to the neighboring cluster at the rear end according to an attribute and providing the node controller with a data block retrieved by the node controller according to the data request signal; 상기 프로세서와 지역 공유 메모리 및 노드 제어기를 상호 연결하는 상호 연결망을 포함하는 것을 특징으로 하는 방향 분리 이중 링을 이용한 분산된 공유 메모리 구조의 다중 프로세서 시스템.And a interconnection network interconnecting the processor, a local shared memory, and a node controller. 제 2 항 또는 제 4 항에 있어서, 상기 클러스터는:The method of claim 2 or 4, wherein the cluster is: 상기 노드 제어기가 프로세서로부터 요청된 데이터 블록이 상기 지역 공유 메모리에 어떠한 상태로 저장되어 있는지를 검색하고 다른 클러스터들로부터 요청된 데이터 블록이 자신의 지역 공유 메모리에 어떠한 상태로 저장되어 있는지를 검색하도록, 상기 지역 공유 메모리에 저장된 데이터 블록에 대한 상태 정보를 저장하는 메모리 디렉토리를 더 포함하는 것을 특징으로 하는 방향 분리 이중 링을 이용한 분산된 공유 메모리 구조의 다중 프로세서 시스템.So that the node controller retrieves in what state the data block requested from the processor is stored in the local shared memory and in what state the requested data block from other clusters is stored in its local shared memory, And a memory directory for storing state information about data blocks stored in the local shared memory. 제 5 항에 있어서, 상기 메모리 디렉토리는 상기 상호 연결망을 통하여 연결된 프로세서로부터의 지역 공유 메모리로의 접근 요구와 상기 링크 제어기를 통해 이웃하는 클러스터들로부터의 지역 공유 메모리로의 접근 요구를 병렬적으로 처리할 수 있도록 독립적인 두개의 메모리 디렉토리로 구성된 것을 특징으로 하는 방향 분리 이중 링을 이용한 분산된 공유 메모리 구조의 다중 프로세서 시스템.6. The memory directory of claim 5, wherein the memory directory processes in parallel a request for access to a local shared memory from a processor connected through the interconnect network and a request for access to a local shared memory from neighboring clusters through the link controller. A multiprocessor system with a distributed shared memory structure using directional split double rings, characterized by two independent memory directories. 제 3 항 또는 제 4 항에 있어서, 상기 원격 캐쉬는:The method of claim 3 or 4, wherein the remote cache is: 데이터 블록의 내용을 저장하는 원격 데이터 캐쉬;A remote data cache for storing the contents of the data block; 상기 노드 제어기가 상기 원격 데이터 캐쉬에 저장된 상기 데이터 블록의 상태를 갱신하거나 필요한 경우 해당 데이터 블록을 제공하기 용이하게 하도록 데이터 블록의 상태 및 주소의 일부분을 저장하는 원격 태그 캐쉬로 구성되는 것을 특징으로 하는 방향 분리 이중 링을 이용한 분산된 공유 메모리 구조의 다중 프로세서 시스템.And a remote tag cache for storing a portion of the state and address of the data block so that the node controller can easily update the state of the data block stored in the remote data cache or provide the data block if necessary. Multiprocessor system with distributed shared memory structure using directional split double ring. 제 7 항에 있어서, 상기 원격 태그 캐쉬는 상기 상호 연결망을 통해 연결된 프로세서들로부터의 원격 캐쉬 접근 요구와 상기 링크 제어기를 통하여 이웃하는클러스터들로부터의 원격 캐쉬 접근 요구를 병렬적으로 처리하는 독립적인 두개의 원격 태그 캐쉬로 구성된 것을 특징으로 하는 방향 분리 이중 링을 이용한 분산된 공유 메모리 구조의 다중 프로세서 시스템.8. The remote tag cache of claim 7, wherein the remote tag cache is independent of the remote cache access request from the processors connected through the interconnection network and the remote cache access request from neighboring clusters through the link controller. Multi-processor system of a distributed shared memory structure using a direction-separated double ring, characterized in that consisting of a remote tag cache. 제 2 항, 제 3 항 또는 제 4 항에 있어서, 상기 클러스터는 상기 노드 제어기와 상기 링크 제어기를 인터페이스하는 링크 버스를 더 포함하는 것을 특징으로 하는 방향 분리 이중 링을 이용한 분산된 공유 메모리 구조의 다중 프로세서 시스템.5. The distributed shared memory structure of claim 2, 3 or 4, wherein the cluster further comprises a link bus for interfacing the node controller with the link controller. Processor system. 제 9 항에 있어서, 상기 링크 제어기는 상기 방향 분리 이중 링의 제 1 및 제 2 방향 링에 각기 연결된 제 1 및 제 2 링크 제어기를 구비하며,10. The apparatus of claim 9, wherein the link controller includes first and second link controllers, respectively, connected to first and second directional rings of the directional split double ring, 각각의 상기 제 1 및 제 2 링크 제어기는 상기 데이터 블록의 속성에 따라 상기 데이터 요청 신호를 대응하는 제 1 및 제 2 방향 링으로 전달하는 것을 특징으로 하는 방향 분리 이중 링을 이용한 분산된 공유 메모리 구조의 다중 프로세서 시스템.Each of the first and second link controllers transmits the data request signal to corresponding first and second directional rings according to attributes of the data block. Multiprocessor system. 제 10 항에 있어서, 상기 각각의 제 1 및 제 2 링크 제어기는 상기 노드 제어기로부터의 데이터 요청 신호 및 상기 데이터 블록을 패킷으로 구성하여 상기 방향 분리 이중 링을 통하여 이웃 클러스터들로 전송하고, 상기 방향 분리 이중 링을 통하여 다른 클러스터들에서 전송되어 오는 요청신호나 데이터 블록을 선별하여 상기 노드 제어기에 전달하며, 상기 패킷의 전송에 필요한 모든 흐름 제어를 책임지는 것을 방향 분리 이중 링을 이용한 분산된 공유 메모리 구조의 다중 프로세서 시스템.12. The apparatus of claim 10, wherein each of the first and second link controllers configures a data request signal from the node controller and the data block into packets to transmit to the neighbor clusters through the direction separation double ring. Distributed shared memory using a directional split double ring to select and send a request signal or data block transmitted from other clusters to the node controller through a split double ring, and to be responsible for all flow control required for the transmission of the packet. Multiprocessor system of architecture. 제 1 항, 제 2 항, 제 3 항, 제 4 항 또는 제 10 항 중의 어느 한 항에 있어서, 상기 데이터 블록의 속성은 상기 데이터 블록이 저장된 상기 캐쉬 또는 지역 공유 메모리의 홀수 데이터 번지 또는 짝수 데이터 번지인 것을 특징으로 하는 방향 분리 이중 링을 이용한 분산된 공유 메모리 구조의 다중 프로세서 시스템.11. The method according to any one of claims 1, 2, 3, 4 or 10, wherein an attribute of the data block is an odd data address or even data of the cache or local shared memory in which the data block is stored. A multiprocessor system with a distributed shared memory structure using directional separation double rings, characterized in that the address. 제 2 항, 제 3 항 또는 제 4 항에 있어서, 상기 상호 연결망은 지역 시스템 버스, 링 또는 크로스 바 스위치인 것을 특징으로 하는 방향 분리 이중 링을 이용한 분산된 공유 메모리 구조의 다중 프로세서 시스템.5. The multiprocessor system of claim 2, 3 or 4, wherein the interconnection network is a local system bus, a ring or a cross bar switch.
KR1020000006401A 2000-02-11 2000-02-11 Shared memory multi-processor system by employing a direction separated dual ring architecture KR100319708B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020000006401A KR100319708B1 (en) 2000-02-11 2000-02-11 Shared memory multi-processor system by employing a direction separated dual ring architecture
JP2000111165A JP2001222517A (en) 2000-02-11 2000-04-12 Distributed shared memory multiplex processor system having direction-separated duplex ring structure

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020000006401A KR100319708B1 (en) 2000-02-11 2000-02-11 Shared memory multi-processor system by employing a direction separated dual ring architecture

Publications (2)

Publication Number Publication Date
KR20010081224A KR20010081224A (en) 2001-08-29
KR100319708B1 true KR100319708B1 (en) 2002-01-09

Family

ID=19645571

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000006401A KR100319708B1 (en) 2000-02-11 2000-02-11 Shared memory multi-processor system by employing a direction separated dual ring architecture

Country Status (2)

Country Link
JP (1) JP2001222517A (en)
KR (1) KR100319708B1 (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8224639B2 (en) 2004-03-29 2012-07-17 Sony Computer Entertainment Inc. Methods and apparatus for achieving thermal management using processing task scheduling
US7398482B2 (en) * 2005-07-28 2008-07-08 International Business Machines Corporation Modular design method and apparatus
US7664608B2 (en) 2006-07-14 2010-02-16 Hitachi High-Technologies Corporation Defect inspection method and apparatus
JP4928862B2 (en) 2006-08-04 2012-05-09 株式会社日立ハイテクノロジーズ Defect inspection method and apparatus
JP4823929B2 (en) * 2007-01-25 2011-11-24 シャープ株式会社 Multiple bus interface module and multiple bus system
KR101061187B1 (en) * 2009-06-22 2011-08-31 한양대학교 산학협력단 Bus system and its control unit
WO2012077400A1 (en) * 2010-12-09 2012-06-14 インターナショナル・ビジネス・マシーンズ・コーポレーション Multicore system, and core data reading method

Also Published As

Publication number Publication date
KR20010081224A (en) 2001-08-29
JP2001222517A (en) 2001-08-17

Similar Documents

Publication Publication Date Title
KR100548908B1 (en) Method and apparatus for centralized snoop filtering
US6253292B1 (en) Distributed shared memory multiprocessor system based on a unidirectional ring bus using a snooping scheme
US6615319B2 (en) Distributed mechanism for resolving cache coherence conflicts in a multi-node computer architecture
US6631448B2 (en) Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol
US7457924B2 (en) Hierarchical directories for cache coherency in a multiprocessor system
EP1255201B1 (en) Shared memory multiprocessing system employing mixed broadcast snooping and directory based coherency protocols
Ziakas et al. Intel® quickpath interconnect architectural features supporting scalable system architectures
JP4712974B2 (en) Flexible probe / probe response path control for coherency maintenance
JP3686221B2 (en) Computer system for maintaining cache coherency
US6859864B2 (en) Mechanism for initiating an implicit write-back in response to a read or snoop of a modified cache line
JP2006190240A (en) Information processor
US7222220B2 (en) Multiprocessing system employing address switches to control mixed broadcast snooping and directory based coherency protocols transparent to active devices
GB2447119A (en) Resolving data request conflicts among a plurality of peer nodes using a home node
JP5050028B2 (en) Server device
EP0817064B1 (en) Methods and apparatus for a directory less memory access protocol in a distributed shared memory computer system
JP2006505868A (en) Method and apparatus for multi-cluster locking
KR100319708B1 (en) Shared memory multi-processor system by employing a direction separated dual ring architecture
US7506108B2 (en) Requester-generated forward for late conflicts in a cache coherency protocol
US20050262250A1 (en) Messaging protocol
KR100281465B1 (en) Distributed shared memory multiprocessor system
Deshpande et al. Cache coherence in centralized shared memory and distributed shared memory architectures

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

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20121221

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee