KR100371140B1 - Bus snooping apparatus for cache coherency of CC-NUMA and method using thereof - Google Patents

Bus snooping apparatus for cache coherency of CC-NUMA and method using thereof Download PDF

Info

Publication number
KR100371140B1
KR100371140B1 KR10-2000-0004128A KR20000004128A KR100371140B1 KR 100371140 B1 KR100371140 B1 KR 100371140B1 KR 20000004128 A KR20000004128 A KR 20000004128A KR 100371140 B1 KR100371140 B1 KR 100371140B1
Authority
KR
South Korea
Prior art keywords
snooping
bus
signal
memory
processor
Prior art date
Application number
KR10-2000-0004128A
Other languages
Korean (ko)
Other versions
KR20010076773A (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 KR10-2000-0004128A priority Critical patent/KR100371140B1/en
Publication of KR20010076773A publication Critical patent/KR20010076773A/en
Application granted granted Critical
Publication of KR100371140B1 publication Critical patent/KR100371140B1/en

Links

Classifications

    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61MDEVICES FOR INTRODUCING MEDIA INTO, OR ONTO, THE BODY; DEVICES FOR TRANSDUCING BODY MEDIA OR FOR TAKING MEDIA FROM THE BODY; DEVICES FOR PRODUCING OR ENDING SLEEP OR STUPOR
    • A61M5/00Devices for bringing media into the body in a subcutaneous, intra-vascular or intramuscular way; Accessories therefor, e.g. filling or cleaning devices, arm-rests
    • A61M5/178Syringes
    • A61M5/31Details
    • A61M5/32Needles; Details of needles pertaining to their connection with syringe or hub; Accessories for bringing the needle into, or holding the needle on, the body; Devices for protection of needles
    • A61M5/3205Apparatus for removing or disposing of used needles or syringes, e.g. containers; Means for protection against accidental injuries from used needles
    • A61M5/321Means for protection against accidental injuries by used needles
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61MDEVICES FOR INTRODUCING MEDIA INTO, OR ONTO, THE BODY; DEVICES FOR TRANSDUCING BODY MEDIA OR FOR TAKING MEDIA FROM THE BODY; DEVICES FOR PRODUCING OR ENDING SLEEP OR STUPOR
    • A61M5/00Devices for bringing media into the body in a subcutaneous, intra-vascular or intramuscular way; Accessories therefor, e.g. filling or cleaning devices, arm-rests
    • A61M5/178Syringes
    • A61M5/31Details
    • A61M5/32Needles; Details of needles pertaining to their connection with syringe or hub; Accessories for bringing the needle into, or holding the needle on, the body; Devices for protection of needles
    • A61M5/3286Needle tip design, e.g. for improved penetration

Landscapes

  • Health & Medical Sciences (AREA)
  • Engineering & Computer Science (AREA)
  • Heart & Thoracic Surgery (AREA)
  • Vascular Medicine (AREA)
  • Anesthesiology (AREA)
  • Biomedical Technology (AREA)
  • Hematology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Animal Behavior & Ethology (AREA)
  • General Health & Medical Sciences (AREA)
  • Public Health (AREA)
  • Veterinary Medicine (AREA)
  • Environmental & Geological Engineering (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

이 발명은 여러 개의 프로세싱노드가 한 개의 상호연결망에 연결되어 있는 캐시부착식 비균등분포적 메모리접근형 병렬컴퓨터시스템의 캐시일관성을 유지하기 위한 것으로서, 프로세서버스(5)에서 진행되는 버스동작을 다른 노드의 정보를 가진 스누퍼가 감지하여 시스템 전체의 메모리데이터를 일관성 있게 유지할 수 있도록 동작하는 버스스누핑장치 및 방법을 제공하며, 그러한 버스스누핑장치는 프로세서버스(5)와 상호연결인터페이스(14)를 연결하여 프로토콜을 변환하는 프로토콜브릿지(11)와, 프로세서버스의 동작 중에서 캐시일관성에 관련된 신호를 관측하거나 해당 신호를 구동하는 스누핑제어기(20)와, 스누핑제어기(20)가 다른 프로세싱노드의 캐시상태에 맞게 스누핑동작을 수행할 수 있도록 캐시정보를 저장하는 디렉토리(12, 13) 및, 상호연결망(6)에 연결되어 트랜잭션을 송수신하는 상호연결인터페이스(14)를 포함한다.The present invention is to maintain the cache coherence of a cache-attached non-uniformly distributed memory-accessible parallel computer system in which several processing nodes are connected to one interconnection network. Provided are a bus snooping device and a method which are operated by a snooper having the information of a node to maintain a consistent memory data of the whole system, and the bus snooping device connects the processor bus 5 and the interconnection interface 14. A protocol bridge 11 for converting a protocol, a snooping controller 20 for observing or driving a signal related to cache coherence among processor buses, and a snooping controller 20 in a cache state of another processing node. Directories 12 and 13 that store cache information so that snooping can be performed properly; Connected to gyeolmang 6 includes interconnect interface 14 for sending and receiving transactions.

Description

캐시부착식 비균등분포적 메모리접근형 병렬컴퓨터시스템의 캐시일관성을 유지하기 위한 버스스누핑장치 및 방법{Bus snooping apparatus for cache coherency of CC-NUMA and method using thereof}Bus snooping apparatus for cache coherency of CC-NUMA and method using knowledge} for maintaining cache coherency in parallel computer system

이 발명은 병렬컴퓨터시스템의 데이터의 일관성을 유지하는 장치에 관한 것이며, 특히 캐시부착식 비균등분포적 메모리접근형(cache coherent non-uniform memory access : CC-NUMA) 병렬컴퓨터시스템의 다중프로세서에서 진행되는 모든 트랜잭션을 스누핑(snooping)하여 시스템의 전체에 걸쳐 데이터의 일관성을 유지하는 장치에 관한 것이다. 이 발명은 또한 그러한 장치를 이용하여 프로세서버스를 스누핑하는 방법에 관한 것이다.The present invention relates to a device for maintaining the consistency of data in a parallel computer system, and in particular, to a multiprocessor in a cache coherent non-uniform memory access (CC-NUMA) parallel computer system. It relates to a device for snooping every transaction that is made to maintain data consistency throughout the system. The invention also relates to a method of snooping the processor bus using such a device.

컴퓨터에서의 복잡한 연산에 대한 요구는 멀티미디어와 인터넷의 발전에 따라 시간이 갈수록 증대되고 있다. 따라서, 컴퓨터시스템의 구조는 많은 양의 연산을 빠른 시간에 수행할 수 있게 하는 방향으로 발전하고 있다. 이러한 컴퓨터시스템은 비교적 값이 저렴하고 대량으로 구입이 가능한 프로세서들을 수십 내지 수백 개를 상호연결망을 통하여 연결한 다음, 복잡한 수치연산을 여러 개의 프로세서에서 분담처리할 수 있게 구성된다. 이러한 시스템을 병렬컴퓨터시스템이라고 한다.The demands for complex computations on computers have increased over time with the development of multimedia and the Internet. Therefore, the structure of computer systems is evolving in such a way that a large amount of operations can be performed at a short time. Such a computer system is configured to connect tens to hundreds of relatively inexpensive and large-capacity processors through an interconnection network, and then to perform a complex numerical operation on several processors. Such a system is called a parallel computer system.

병렬컴퓨터시스템은 여러 가지 형태로 발전되어 왔는데, 그 중의 메모리공유식 다중프로세서시스템은 모델별로 균등분포적 다중프로세서접근 (uniform multiprocessor access : UMA) 모델, 비균등분포적 메모리접근(non-uniform memory access : NUMA) 모델, 캐시전용 메모리구조(cache-only memory architecture : COMA)로 나뉘어 진다.Parallel computer systems have evolved in many forms, among which memory-sharing multiprocessor systems are uniformly distributed multiprocessor access (UMA) models and non-uniform memory access: NUMA) model and cache-only memory architecture (COMA).

이중에서 NUMA 모델은 메모리 데이터의 위치가 동일하지 않아 이에 대한 접근시간이 동일하지 않은 구조를 가진다. 특히, CC-NUMA 모델은 분산된 공유메모리와 캐시디렉토리를 가지는 구조로 정의되는데, 상용화 한 이러한 구조로는 Standford Dash, MIT Alewife 등이 있다.(Kai. Hwang,Advanced Computer Architecuture, pp.19-24, McGraw-Hill, 1993) 이러한 CC-NUMA 시스템은 병렬컴퓨터시스템의 한 형태로서 최근에 많이 개발되고 있는 시스템이다.Among them, the NUMA model has a structure in which the access time to the memory data is not the same, so the access time is not the same. In particular, the CC-NUMA model is defined as a structure having distributed shared memory and cache directory. Such commercialized structures include Standford Dash and MIT Alewife (Kai. Hwang, Advanced Computer Architecuture , pp.19-24). , McGraw-Hill, 1993). These CC-NUMA systems are a type of parallel computer system and are being developed recently.

또한, 컴퓨터시스템내에서 프로세서의 명령어실행속도와 메모리접근시간 사이의 차이로 인한 문제를 해결하고 프로세서의 성능을 향상시키기 위해 각각의 프로세싱노드가 캐시메모리를 사용하는 것이 제안되었다.(이규호,컴퓨터 시스템, KR Patent Application No. 1999-2342, 한국전자통신연구소, 1991.6.25)In addition, correct the problem caused by the difference between the running speed of the processor instruction and the memory access time in a computer system, and each processing node in order to improve the performance of the processor has been proposed to use a cache memory (yigyuho, computer system , KR Patent Application No. 1999-2342, The Institute of Electronics and Telecommunications, 1991.6.25)

CC-NUMA 시스템은 여러 개의 프로세싱노드가 각자 메모리와 캐시를 가지고 있으면서, 상호연결망을 통해 데이터를 교환할 수 있도록 구성되어 있는 컴퓨터시스템이다.The CC-NUMA system is a computer system in which several processing nodes each have a memory and a cache, and are configured to exchange data through an interconnection network.

한편, 상호연결망을 통해 분산된 메모리들은 시스템 내의 모든 프로세서에 의해 공유되므로, 이러한 메모리들에 저장된 내용에 대해서는 반드시 일관성이 유지되어야 하는데, 각각의 각각의 프로세싱노드가 가지고 있는 케시메모리들로 인해 노드 간의 데이터를 일관성 있게 유지하기가 곤란해진다.On the other hand, since the memory distributed through the interconnection network is shared by all processors in the system, the contents stored in these memories must be kept consistent, because of the cache memory of each processing node. It becomes difficult to keep data consistent.

여러 개의 캐시메모리가 프로세서의 주변 혹은 내부에 위치하고 있는 다중프로세서시스템에서 프로세서들 간의 데이터내용의 일관성을 유지하기 위하여 스누핑기법을 사용하는 것이 제안되어 있다.(신상석, 김성운,다중 프로세서 시스템의 버스 스누핑 제어 장치, KR Patent Application No. 1996-1803, 1996.4.20).There are a number of cache memory is proposed to use the snooping technique in order to maintain the consistency of data information between processors in a multiprocessor system is located in the peripheral or interior of the processor (bus snoop control of sinsangseok, gimseongun, multiprocessor systems Apparatus , KR Patent Application No. 1996-1803, April 20, 1996).

다중프로세서를 사용하는 시스템에서는 메모리가 분산되어 있는 경우가 있으며, 이를 공유하여 사용하기 위해서 분산공유메모리의 캐시제어기법이 사용된다.(김용,분산공유메모리의 캐시일관성 제어방법 및 장치, KR Patent Application No. 1999-026501, 엘지전자주식회사, 1999.4.15)In systems using a multi-processor, and if that is the memory is distributed, the cache control method in a distributed shared memory is used to use to share them. (Kim, Yong, wherein the cache coherency control of a distributed shared memory and the device, KR Patent Application No. 1999-026501, LG Electronics Co., Ltd., 1999.4.15)

이러한 캐시일관성유지방법은 다중경로를 가지는 상호연결망으로 연결된 다중프로세서시스템에서도 적용된다.(Vernop K. Boland,Cache Coherency Method And Apparatus For A Multiple Path Interconnection Network, US Patent No.5,249,283, Dec.24, 1990)This method of maintaining cache coherency is also applied to multiprocessor systems connected by interconnecting networks having multiple paths (Vernop K. Boland, Cache Coherency Method And Apparatus For A Multiple Path Interconnection Network , US Patent No. 5,249,283, Dec. 24, 1990). )

이 발명은 앞서 설명된 비균등적 메모리접근(NUMA)을 수행하는 CC-NUMA 모델을 가지는 병렬컴퓨터시스템에서 사용되는 분산공유메모리의 캐시일관성을 제어하기 위한 프로세서버스의 스누핑장치를 제공하기 위한 것이다.The present invention is to provide a snooping device of a processor bus for controlling cache coherency of distributed shared memory used in a parallel computer system having a CC-NUMA model that performs the above-described non-uniform memory access (NUMA).

이 발명은 캐시를 가진 다중프로세서시스템의 버스스누핑제어장치가 스누핑제어장치 내에 로컬메모리상태와 원격메모리상태를 알 수 있도록 디렉토리를 두어 시스템전역에 걸친 풀맵디렉토리를 가능하게 하려는 것이다.The present invention aims to enable a full map directory throughout the system by placing a directory so that the bus snooping control device of a multiprocessor system with a cache can know the local and remote memory states in the snooping control device.

또한, 이 발명에 따른 버스스누핑제어장치는 프로세서버스 상에서 진행되는 연속적 버스동작을 최대한 지원하여, 펜디드프로토콜버스를 가지는 시스템에서도 동작이 가능하게 하려는 것이다.In addition, the bus snooping control device according to the present invention is to support the continuous bus operation that proceeds on the processor bus to the maximum, to enable the operation even in a system having a fenced protocol bus.

여기에서, 펜디드프로토콜버스라고 함은 프로세서의 파이프라인동작을 지원하기 위해 버스 상에서 구현되는 버스프로토콜을 의미하며, 최근에 발표되는 대부분의 마이크로프로세서는 이러한 펜디드프로토콜을 지원하도록 되어 있다.Here, the "pended protocol bus" means a bus protocol implemented on the bus to support the pipeline operation of the processor, and most of the recently announced microprocessors are intended to support the pending protocol.

도 1은 캐시부착식 비균등분포적 메모리접근형 병렬컴퓨터시스템의 구성을 예시적으로 도시한 블록선도이고,1 is a block diagram illustrating a configuration of a cache-attached non-uniformly distributed memory access parallel computer system by way of example.

도 2는 캐시부착식 비균등분포적 메모리접근형 병렬컴퓨터시스템의 프로세서버스의 스누핑을 위한 장치이며,2 is an apparatus for snooping the processor bus of a cache-attached non-uniformly distributed memory access parallel computer system,

도 3은 프로세서버스스누핑신호의 제어를 설명하기 위한 도면이고,3 is a view for explaining the control of the processor bus snooping signal,

도 4는 프로세서버스를 스누핑하는 과정을 설명하기 위한 흐름도이다.4 is a flowchart illustrating a process of snooping the processor bus.

위와 같은 목적을 달성하기 위한 이 발명에 따르면, 버스스누핑장치가 프로세서버스의 동작 중에서 캐시일관성에 관련된 신호를 관측하거나 해당 신호를 구동하는 스누핑제어기 및, 스누핑제어기가 다른 프로세싱노드의 캐시상태에 맞게 스누핑동작을 수행할 수 있도록 캐시정보를 저장하는 디렉토리를 포함한다.According to the present invention for achieving the above object, a snooping controller for observing a signal related to cache consistency or driving the signal during the operation of the processor bus, and the snooping controller snoops according to the cache state of another processing node. It includes a directory that stores cache information to perform an operation.

상기 스누핑제어기와 상기 디렉토리가 상호연결망 브릿지 내에 제공되며, 상기 상호연결망 브릿지는 프로세서버스와 상호연결인터페이스를 연결하여 프로토콜을 변환하는 프로토콜브릿지 및, 상호연결망에 연결되어 트랜잭션을 송수신하는 상호연결인터페이스를 포함할 수 있다.The snooping controller and the directory are provided in an interconnection network bridge, the interconnection network bridge including a protocol bridge for converting protocols by connecting the processor bus and the interconnection interface, and an interconnection interface connected to the interconnection network to transmit and receive transactions. can do.

상기 스누핑제어기는, 프로세서버스에서 진행되는 트랜잭션을 감시하거나 디렉토리검사를 수행하는 주 제어기와, 프로세서버스에서 트랜잭션이 진행될 때, 캐시일관성의 유지를 위해 프로세서버스 상으로 스누핑 관련 신호를 구동하는 스누핑 신호 제어기와, 프로세서버스에서 진행된 트랜잭션의 내용을 저장하는 스누핑제어 큐와, 지역디렉토리를 제어하는 신호를 구동하는 지역디렉토리제어기와, 원격디렉토리를 제어하는 신호를 구동하는 원격디렉토리제어기와, 상기 스누핑제어 큐에서 출력되는 어드레스 범위가 로컬메모리영역인지 혹은 원격메모리영역인지를 판단하기 위한 메모리영역변환테이블 및, 상기 스누핑신호제어기가 상기 지역디렉토리제어기 및 원격디렉토리제어기로부터 디렉토리상태정보를 받아서 프로세서로 스누핑 관련 신호를 구동할 때 상태정보를 비교하기 위해 사용되는 스누핑테이블을 포함하는 것이 양호하다.The snooping controller includes a main controller for monitoring a transaction in the processor bus or performing a directory check, and a snooping signal controller for driving a snooping-related signal on the processor bus to maintain cache consistency when a transaction is in progress on the processor bus. And a snooping control queue for storing the contents of the transaction in the processor bus, a local directory controller for driving signals for controlling a local directory, a remote directory controller for driving signals for controlling a remote directory, and a snooping control queue in the snooping control queue. A memory area conversion table for determining whether the address range output is a local memory area or a remote memory area, and the snooping signal controller receives directory status information from the local directory controller and the remote directory controller, When driving to include snooping table that is used to compare the state information is good.

상기 지역디렉토리는 다른 프로세싱노드에 의해 자신의 메모리데이터의 공유여부를 표시하는 상태신호를 가지며, 상기 상태신호는 다른 프로세싱노드에 의해 자신의 메모리데이터가 공유되어 있음을 나타내는 신호(S)와, 다른 프로세싱노드가 자신의 메모리에 데이터를 기록했음을 나타내는 신호(M) 및, 다른 프로세싱노드에 의해 접근이 이루어 지지 않았음을 나타내는 신호(I)를 포함할 수 있다.The local directory has a status signal indicating whether or not its memory data is shared by another processing node, and the status signal is different from the signal S indicating that its memory data is shared by another processing node. It may include a signal M indicating that the processing node has written data in its memory, and a signal I indicating that access has not been made by another processing node.

상기 원격디렉토리는 자신이 다른 프로세싱노드의 메모리데이터를 공유했는지의 여부를 표시하는 상태신호를 가지며, 상기 상태신호는 자신이 다른 프로세싱노드의 메모리데이터를 공유하고 있음을 나타내는 신호(S)와, 자신이 다른 프로세싱노드의 메모리에 데이터를 기록했음을 나타내는 신호(M) 및, 자신이 다른 프로세싱노드의 메모리데이터에 접근하지 않았음을 나타내는 신호(I)를 포함할 수 있다.The remote directory has a status signal indicating whether it has shared memory data of another processing node, and the status signal is a signal S indicating that it is sharing memory data of another processing node, and And a signal M indicating that data has been written to the memory of this other processing node, and a signal I indicating that it has not accessed memory data of the other processing node.

상기 주 제어기는 프로세서버스의 트랜잭션의 내용 및 프로세서버스 상에 구동된 스누핑 관련 신호를 상기 스누핑제어 큐에 저장하게 구성되는 것이 양호하다.The main controller is preferably configured to store contents of a transaction of a processor bus and snooping related signals driven on the processor bus in the snooping control queue.

상기 스누핑 관련 신호는, 자신의 프로세서에 의해 요청된 데이터가 다른 프로세서의 캐시에서 수정된 상태로 있는 경우에 구동되는 신호인 HITM#와, 자신의 프로세서에 의해 요청된 데이터가 다른 프로세서의 캐시에서 유효한 상태로 있는 경우에 구동되는 신호인 HIT#와, 상기 상호연결망 브릿지에 의해 메모리접근을 지연시킬 때 사용하는 신호인 DEFER# 및, 메모리장치가 프로세서의 요청에 응답하는 것을 제어하기 위해 사용되는 신호인 TPTCL을 포함할 수 있다.The snooping related signal is a signal that is driven when the data requested by the processor is modified in the cache of another processor, and the data requested by the processor is valid in the cache of the other processor. HIT #, which is a signal driven when it is in the state, DEFER #, which is used to delay memory access by the interconnection bridge, and a signal used to control the memory device responding to a processor request. It may include a TPTCL.

상기 버스스누핑장치가 프로세서버스에서 진행되는 파이프라인드 트랜잭션을 수행하면서 스누핑을 수행할 수 있도록 버스트랜잭션의 내용을 임시보관하는 장치를 부가적으로 포함하는 것이 양호하다.Preferably, the bus snooping device additionally includes a device for temporarily storing the contents of the bus transaction so that the bus snooping device can perform snooping while performing a pipelined transaction performed on the processor bus.

또한, 이 발명에 따라 제공되는 버스스누핑방법은 프로세서버스와 상호연결망간의 프로토콜을 변환하는 단계와, 프로세서버스를 스누핑하여 캐시일관성을 유지시키는 동작을 수행하는 단계와, 스누핑동작을 수행할 수 있도록 버스신호를 래치하고 스누핑동작을 제어하는 단계와, 프로세서버스에서 진행되는 트랜잭션시에 시스템 전체의 캐시일관성 유지를 위해 프로세서버스신호를 발생하는 단계와, 프로세서버스에서 진행되는 파이프라인드 트랜잭션을 수행하면서 스누핑을 수행할 수 있도록 버스트랜잭션의 내용을 임시보관하는 단계와, 메모리테이블을 내장하여 버스트랜잭션이 로컬메모리영역인지 원격메모리영역인지를 판단하는 단계와, 읽혀진 디렉토리의 내용을 빠른 시간에 비교하여 그 결과를 프로세서버스 상에 구동할 수 있도록 스누핑정보를 저장하고 있는 단계와, 로컬메모리의 상태를 가지고 있는 로컬디렉토리를 제어하고 또한 로컬디렉토리의 내용을 읽거나 써 넣는 단계와, 원격메모리의 상태를 가지고 있는 원격디렉토리를 제어하고 또한 원격디렉토리의 내용을 읽거나 써 넣는 단계와, 로컬메모리의 데이터가 여러 노드에 의해 공유되는지 혹은 다른 노드에 데이터가 있는지에 관한 로컬메모리상태를 표시하는 단계와, 원격메모리의 데이터가 여러 노드에 의해 공유되는지 혹은 자신의 노드에 데이터가 있는지에 관한 원격메모리상태를 표시하는 단계 및, 상호연결망과 연결되어 연결망의 프로토콜에 맞게 동작하여 노드간의 정보를 교환하는 단계를 포함한다.In addition, the bus snooping method provided according to the present invention includes the steps of converting a protocol between the processor bus and the interconnection network, performing snooping the processor bus to maintain cache consistency, and performing a bus snooping operation. Latching the signal and controlling the snooping operation; generating a processor bus signal to maintain system-wide cache consistency in a transaction running on the processor bus; and snooping while performing a pipelined transaction running on the processor bus. Temporarily storing the contents of the bus transaction so as to perform the operation, determining whether the bus transaction is a local memory area or a remote memory area by embedding a memory table, and comparing the contents of the read directory in a short time. Can be driven on the processor bus Controlling the steps of storing information, controlling the local directory holding the state of the local memory, reading and writing the contents of the local directory, controlling the remote directory holding the state of the remote memory, and also the contents of the remote directory. Reading and writing data, displaying local memory status as to whether local memory data is shared by multiple nodes or data on other nodes, and whether remote memory data is shared by multiple nodes, or And displaying a remote memory state as to whether there is data in the node of the node, and connecting to the interconnection network and operating in accordance with a protocol of the connection network to exchange information between the nodes.

프로세서버스에서 파이프라인 형태로 연속적으로 진행되는 트랜잭션에 대하여 버스의 성능을 그대로 유지할 수 있게 큐의 구조로 버스스누핑을 수행하는 것이 양호하다.It is preferable to perform bus snooping in a queue structure so that the performance of the bus can be maintained as it is for a continuous transaction in the form of a pipeline on the processor bus.

프로세서의 트랜잭션의 판단 및 스누핑을 신속하게 수행하기 위하여 상기 메모리테이블의 구조를 로컬메모리영역과 원격메모리영역으로 구분하는 것이 양호하다.It is preferable to divide the structure of the memory table into a local memory area and a remote memory area in order to quickly perform processor determination and snooping.

아래에서는 첨부된 도면을 보면서 이 발명에 따른 캐시를 가진 다중프로세서시스템의 버스스누핑제어장치의 양호한 실시예에 대해 상세히 설명하겠다.Hereinafter, a preferred embodiment of a bus snooping control device of a multiprocessor system having a cache according to the present invention will be described in detail with reference to the accompanying drawings.

도 1은 이 발명이 적용되는 이 발명에 따른 캐시를 가진 다중프로세서시스템을 예시적으로 도시한 것이다.1 exemplarily illustrates a multiprocessor system having a cache according to the present invention to which the present invention is applied.

이 시스템은 여러 개의 프로세싱노드가 한 개의 상호연결망(Interconnection Network)에 연결되어 있다. 도 1에는 네 개의 프로세싱노드(2)가 연결되어 있는 모습이다. 각 프로세싱노드는 4개의 프로세서(4)가 단일버스(5)에 연결되어 있으며, 각 노드의 메모리(3)는 노드 내의 버스(5)에 연결되어 있다. 상호연결망 브릿지(1 : interconnection network bridge : INB)는 상호연결망(6)과 프로세서버스 버스(5)를 연결해 주는 역할을 한다.In this system, multiple processing nodes are connected to one interconnection network. 1 shows four processing nodes 2 connected to each other. Each processing node has four processors 4 connected to a single bus 5, and each node's memory 3 is connected to a bus 5 within the node. An interconnection network bridge (INB) serves to connect the interconnection network 6 and the processor bus bus 5.

이 발명에 따른 버스스누핑제어장치는 도 1에 도시된 INB(1)의 내부에 위치하며, 프로세서버스(5)에서 진행되는 버스동작을 다른 노드의 정보를 가진 스누퍼가 감지하여 시스템 전체의 메모리데이터를 일관성 있게 유지할 수 있도록 동작한다.The bus snooping control device according to the present invention is located inside the INB 1 shown in FIG. 1, and a snooper having information of another node senses a bus operation performed on the processor bus 5 so that the memory data of the entire system is detected. It works to keep it consistent.

도 2는 이 발명에 따른 버스스누핑제어장치의 한 실시예가 구현된 INB(1)의 내부구성을 상세히 나타낸 그림이다.2 is a diagram showing in detail the internal structure of the INB 1 in which one embodiment of the bus snooping control device according to the present invention is implemented.

프로세싱노드(2)의 내부에 위치하는 INB(1)는 프로세서에 의해 진행되는 버스트랜잭션을 상호연결망으로 전달하고, 상호연결망에서 전달된 트랜잭션을 버스 쪽으로 전송하는 역할을 수행한다. 즉, 프로세서버스(5)와 상호연결망(6)의 프로토콜이 다르게 진행되기 때문에 이들 프로토콜을 연결하는 기능을 수행한다.The INB 1 located inside the processing node 2 transmits a bus transaction executed by a processor to an interconnect network and transmits a transaction transmitted from the interconnect network to the bus. That is, since the protocols of the processor bus 5 and the interconnection network 6 proceed differently, they function to connect these protocols.

INB(1)는 크게 네개의 모듈로 구성된다.The INB 1 is largely composed of four modules.

프로세서버스(5)와 상호연결인터페이스(14)를 연결하여 프로토콜을 변환하는프로토콜브릿지(11 : protocol bridge : PB), 프로세서버스의 동작 중에서 캐시일관성에 관련된 신호를 관측하거나 해당 신호를 구동하는 스누핑제어기(20 : snooping controller : SC), SC(20)가 다른 프로세싱노드의 캐시상태에 맞게 스누핑동작을 수행할 수 있도록 캐시정보를 저장하는 디렉토리(12, 13) 및, 상호연결망(6)에 연결되어 트랜잭션을 송수신하는 IIF상호연결인터페이스(14 : interconnection interface : IIF)이다.Protocol bridge (11: protocol bridge: PB) that connects the processor bus 5 and the interconnection interface 14 to convert protocols, and a snooping controller for observing or driving signals related to cache coherence among the processor buses. (20: snooping controller: SC), the directory (12, 13) for storing the cache information so that the SC 20 can perform the snooping operation according to the cache state of another processing node, and is connected to the interconnection network (6) An IIF interconnection interface (IIF) for transmitting and receiving transactions.

SC(20)는 크게 7개의 모듈로 구성되는데, 도 2에 나타난 바와 같이 스누핑 주 제어기(21 : main state controller : MSC), 스누핑 신호 제어기(22 : snooping signal controller : SSC), 스누핑제어 큐(23 : snooping control queue : SCQ), 지역디렉토리제어기(24 : local directory controller : LDC), 원격디렉토리제어기(25 : remote directory controller : RDC), 메모리영역변환테이블(26 : memory range translation table : MRTT) 및, 스누핑테이블(27 : snoop table : ST) 등이다.SC 20 is largely composed of seven modules, as shown in FIG. 2, a snooping main controller 21, a snooping signal controller 22, and a snooping control queue 23. : snooping control queue (SCQ), local directory controller (24: local directory controller: LDC), remote directory controller (25: remote directory controller: RDC), memory area translation table (26: memory range translation table: MRTT), A snooping table (27).

MSC(21)는 프로세서버스에서 진행되는 트래잭션을 감시하거나 디렉토리검사를 수행할 수 있도록 프로세서버스의 트랜잭션 내용을 SCQ(23)에 넣는다. 만약에 프로세서버스 상에서 캐시일관성을 유지하기 위한 신호가 구동되면, 이러한 내용을 함께 SCQ(23)에 저장한다.The MSC 21 puts the contents of the transaction on the processor bus into the SCQ 23 so that the transaction on the processor bus or the directory check can be performed. If a signal for maintaining cache coherency on the processor bus is driven, the contents are stored together in the SCQ 23.

SSC(22)는 프로세서버스에서 진행되는 트랜잭션을 LDC(24)와 RDC(25)가 디렉토리 내용을 검사한 후에 알려 주면, 캐시일관성의 유지를 위해 프로세서버스 상으로 스누핑 관련 신호를 구동하는 모듈이다.The SSC 22 is a module that drives snooping related signals on the processor bus in order to maintain cache coherency when the LDC 24 and the RDC 25 check the contents of the directory after the transaction is processed.

이러한 스누핑 관련 신호는 HITM#, HIT#, DEFER#, TPCTL 등이다.Such snooping related signals are HITM #, HIT #, DEFER #, TPCTL and the like.

HITM# 신호는 프로세서에 의해 요청된 데이터가 다른 프로세서의 캐시에 `M' 상태로 있는 경우에 구동되는 신호이고, HIT# 신호는 프로세서에 의해 요청된 데이터가 다른 프로세서의 캐시에 `V'(valid) 상태로 있는 경우에 구동되는 신호로서, 이 신호에 의해 양쪽의 캐시는 `S' 상태로 되며, DEFER# 신호는 INB(1)에 의해 메모리접근을 지연시킬 때 사용한다. 프로세서에 연결된 메모리응답기들이 프로세서의 빠른 동작에 즉시 응답할 수 없는 경우에 이 신호를 사용하여 버스를 점유하지 않는 상태로 메모리접근동작을 진행시킨다.The HITM # signal is a signal that is driven when data requested by a processor is in the `M 'state of another processor's cache, and the HIT # signal is a` V' (valid) signal that is requested by the processor in the cache of another processor. This signal is driven when the system is in the) state, and this signal causes both caches to be in the `S 'state, and the DEFER # signal is used to delay the memory access by the INB (1). If the memory responders connected to the processor cannot immediately respond to the fast operation of the processor, this signal is used to proceed the memory access operation without occupying the bus.

또한, 메모리접근이 완료되면 프로세서버스로 지연응답트랜잭션을 통해서 그 결과를 알려 준다.In addition, when the memory access is completed, the processor bus informs the result of the delay response transaction.

TPTCL 신호는 메모리장치가 프로세서의 요청에 응답하는 것을 제어하기 위해 사용된다. 이 신호는 INB(1)가 스누핑 결과를 확인하여 로컬메모리응답인 경우라도 다른 노드가 그 데이터를 가지고 있는 것이 확인되면, 메모리응답기가 응답하는 것을 막기 위해서 사용한다.The TPTCL signal is used to control the memory device's response to the processor's request. This signal is used to prevent the memory responder from responding when the INB 1 checks the snooping result and confirms that another node has the data even if it is a local memory response.

SCQ(23)는 프로세서버스에서 진행된 트랜잭션의 내용을 저장하는 FIFO(First-In First-Out)구조를 이루는 큐이다. 이러한 큐를 가지면 프로세서버스에서 진행되는 파이프라인드 트랜잭션을 지원하면서, 캐시 관련 동작을 수행할 수 있도록 한다.The SCQ 23 is a queue forming a FIFO (First-In First-Out) structure that stores the contents of a transaction performed on the processor bus. Having such a queue supports pipelined transactions on the processor bus, while allowing cache-related operations to be performed.

LDC(24)는 지역디렉토리(12 : Loc Dir)를 제어하는 신호를 구동하는 모듈이다.The LDC 24 is a module that drives a signal for controlling the local directory 12 (Loc Dir).

`Loc Dir'(12)에는 지역메모리의 공유여부를 표시하는 상태신호가 들어 있다.`Loc Dir '(12) contains status signal indicating whether local memory is shared.

즉, 다른 프로세싱노드에 의해 자신의 메모리가 접근된 경우에는 해당 어드레스를 인덱스로 데이터의 공유상태를 표시한다.In other words, when its memory is accessed by another processing node, the shared state of the data is indicated by indexing the corresponding address.

따라서, 다른 노드에 의해 자신의 메모리데이터가 공유되어 있으면, `S(shared)', 기록된 상태로 있으면 `M(modified)', 다른 노드에 의해 접근이 이루어 지지 않았으면 `I(Ignore)'를 표시해 둔다.Thus, if its memory data is shared by another node, it is `S (shared) ', if it is in a written state,` M (modified)', or if it is not accessed by another node, `I (Ignore) '. Mark it.

따라서, 프로세서에 의해 접근이 요청된 데이터가 다른 노드에 의해 수정이 이루어 졌다면 `Loc Dir'(12)안에는 `M' 상태로 표시가 되어 있고, 이런 경우는 IIF(14)를 통해서 해당 노드로 그 데이터를 전송해 줄 것을 요청한다.Therefore, if the data requested to be accessed by the processor has been modified by another node, it is marked as `M 'in` Loc Dir' (12), in which case the node is accessed via the IIF (14). Request to send data.

RDC(25)는 원격디렉토리(13 : Rem Dir)를 제어하는 신호를 구동하는 모듈이다.The RDC 25 is a module for driving a signal for controlling the remote directory 13 (Rem Dir).

`Rem Dir'(13)는 원격메모리의 공유여부를 표시하는 상태신호가 들어 있다.`Rem Dir '(13) contains status signal indicating whether remote memory is shared.

즉, 다른 프로세싱노드의 메모리데이터를 자신의 노드가 접근한 경우에 해당 어드레스를 인덱스로 데이터의 공유상태를 표시한다.In other words, when a node accesses memory data of another processing node, the shared state of the data is indicated by using the corresponding address as an index.

따라서, 다른 노드의 메모리 내용을 가지고 있기 때문에, 다른 노드에 의해 해당 데이터가 요구되면 이를 다른 노드로 보내 주어야 한다.Therefore, since it has the memory contents of another node, if the data is requested by another node, it must be sent to the other node.

`Loc Dir'과 마찬가지로 `S',`M', `I' 상태로 이루어 진다.Like `Loc Dir ', it consists of` S', `M ', and` I' states.

MRTT(26)은 SCQ에서 출력되는 어드레스를 입력으로 하여, 해당 어드레스 범위가 로컬메모리영역인지, 혹은 원격메모리영역인지를 판단하는 모듈이다. 메모리영역을 판단하여 해당되는 메모리영역의 캐시상태를 가지고 있는 LDC(24)와 RDC(25)로 상태메모리 접근을 요청한다.The MRTT 26 is a module that determines whether the address range is a local memory area or a remote memory area by inputting an address output from the SCQ. The memory region is determined and a state memory access request is made to the LDC 24 and the RDC 25 having the cache state of the corresponding memory region.

ST(27)은 SSC(22)가 LDC(24), RDC(25)의 디렉토리상태정보를 받아서 프로세서로 캐시일관성 관련 신호를 구동하기 위해서 상태정보를 비교할 때 사용되는 테이블이다. 프로세서버스는 버스클럭단위로 움직이며, 보통 한 버스클럭주기 동안에 스누핑을 완료해야 한다. 그러나, 디렉토리의 상태와 버스트랜잭션의 상태는 여러 개의 조합으로 이루어져 이를 한 클럭 안에 비교하는 것이 어렵다. 따라서, 이들 정보를 테이블로 만들어 한 개의 버스클럭주기 동안에 메모리상태정보를 비교할 수 있도록 내부에 스누핑테이블을 둔다.The ST 27 is a table used when the SSC 22 receives directory status information of the LDC 24 and the RDC 25 and compares the status information to drive a cache coherence related signal to the processor. The processor bus moves on a bus clock basis and usually requires snooping to complete during one bus clock cycle. However, the state of a directory and the state of a bus transaction are made up of several combinations, making it difficult to compare them in one clock. Therefore, the information is made into a table and a snooping table is placed inside so that the memory state information can be compared during one bus clock period.

도 3은 MSC(21)의 상태흐름도이다.3 is a state flow diagram of the MSC 21.

프로세서버스는 어드레스가 구동되면서 트랜잭션이 시작된다. 이 때, 버스상에 어드레스가 구동되었음을 알리는 신호가 ADS#이다.The processor bus starts a transaction as the address is driven. At this time, the signal informing that the address has been driven on the bus is ADS #.

MSC(21)는 프로세서버스에서 진행되는 트래잭션을 감시하거나 디렉토리검사를 수행할 수 있도록 프로세서버스의 트랜잭션 내용을 SCQ(23)에 넣는다. 만약에 프로세서버스 상에서 캐시일관성의 유지를 위한 신호가 구동되면, 이러한 내용을 함께 SCQ(23)에 저장한다.The MSC 21 puts the contents of the transaction on the processor bus into the SCQ 23 so that the transaction on the processor bus or the directory check can be performed. If a signal for maintaining cache coherency is driven on the processor bus, the contents are stored together in the SCQ 23.

아이들상태(30 : IDLE)는 사이클이 진행되기를 기다리는 상태이다.The idle state 30 (IDLE) is a state waiting for the cycle to proceed.

프로세서에 의해 사이클이 진행되면 ADS# 신호가 구동되며, 이 신호를 버스 클럭으로 래치한 것이 ADS1 신호이다. 이 신호가 구동되면, 스누핑을 시작해야 하기 때문에 CMPA상태(31)로 상태가 천이된다.As the cycle progresses by the processor, the ADS # signal is driven, which is latched by the bus clock. When this signal is driven, the state transitions to the CMPA state 31 because it must start snooping.

CMPA상태(31)에서는 프로세서버스에 의해 구동된 어드레스신호를 검사하는 단계이다. 어드레스는 로컬메모리영역과 원격메모리영역으로 나뉘어 진다. 로컬메모리영역은 현재의 노드가 가지고 있는 메모리의 영역이며, 원격메모리영역은 다른 노드가 가지고 있는 메모리영역이다. 이 단계에서는 바로 SNRD상태(32)로 상태가 천이된다.In the CMPA state 31, the address signal driven by the processor bus is examined. The address is divided into local memory area and remote memory area. The local memory area is the memory area of the current node, and the remote memory area is the memory area of other nodes. In this step, the state immediately transitions to the SNRD state 32.

SNRD상태(32)에서는 프로세서버스에서 구동된 어드레스가 로컬메모리영역이면 `Loc Dir'(12), 원격메모리영역이면 `Rem Dir'(13) 디렉토리를 읽는 상태이다. 디렉토리를 읽어서 프로세서가 요청한 데이터가 어떤 상태로 있는지를 확인한다. 이 상태에서는 바로 AHTM상태(33)으로 상태가 천이된다.In the SNRD state 32, if the address driven on the processor bus is a local memory area, `Loc Dir '(12), and if the remote memory area is a` Rem Dir' (13) directory is read. Read the directory to see what state the processor requested data is in. In this state, the state immediately transitions to the AHTM state 33.

AHTM상태(32)에서는 캐시일관성의 유지를 위해서 프로세서에서 버스로 스누핑 관련 신호(HITM#, HIT#, DEFER#, TPCTL)를 구동한다.In AHTM state 32, snooping related signals HITM #, HIT #, DEFER #, and TPCTL are driven from the processor to the bus to maintain cache consistency.

HITM# 신호는 캐시라인이 다른 프로세서에 M(Modified) 상태로 있을 경우에 구동된다. 혹은, 다른 노드에 캐시라인을 가지고 있는 경우에는 INB(1)에 의해 구동된다. HIT#는 캐시라인을 S(Shared) 상태로 하기 위해 사용된다. DEFER# 신호는 해당 트랜잭션을 지연시키기 위해 사용된다. 지연이란 트랜잭션이 진행되는 동안에 버스를 잡지 않도록 임시로 트랜잭션이 완료되도록 한다. 버스를 통해 진행된 전송은 임시로 완료되었지만, 연결망을 통해 해당 트랜잭션은 계속 진행되고, 진행된 결과를 나중에 지연응답을 통해서 알려 준다.The HITM # signal is driven when the cacheline is in the M (Modified) state on another processor. Alternatively, when the cache line is in another node, it is driven by the INB 1. HIT # is used to put the cache line to S (Shared) state. The DEFER # signal is used to delay the transaction. Delay allows a transaction to be completed temporarily so that it does not hold the bus while the transaction is in progress. The transfer over the bus was temporarily completed, but the transaction continues through the network, and the result is later communicated with a delay response.

이러한 지연의 유무를 메모리제어기에 알려 주기 위하여 TPCTL 신호가 사용된다.The TPCTL signal is used to inform the memory controller of the presence or absence of such a delay.

OKST상태(34)에서는 버스에서 진행된 스누핑결과를 분석하는 상태이다. 만약에 어떠한 이유로 스누핑이 연장되는 경우에는 AHTM상태(33)로 천이되고, 스누핑은 정상적으로 완료되었으나 이전에 진행된 트랜잭션이 계속 남아 있으면, SNRD상태(32)로 천이된다. 스누핑이 정상적으로 완료되는 시점에 ADS# 신호가 구동되었으면 CMPA상태(31)로 천이된다. 스누핑이 그냥 정상적으로 완료되었으면 IDLE상태(30)로 천이된다.In the OKST state 34, the snooping result performed on the bus is analyzed. If for some reason the snooping is extended, it transitions to the AHTM state 33, and if the snooping has completed normally but the previously advanced transaction still remains, it transitions to the SNRD state 32. If the ADS # signal is driven at the time when snooping is completed normally, the state transitions to the CMPA state 31. If the snooping has just completed normally, it transitions to IDLE state 30.

<그림 4>는 CC-NUMA 시스템에서의 프로세서 버스 스누핑 제어 흐름을 나타낸 것이다.Figure 4 shows the processor bus snooping control flow in the CC-NUMA system.

시스템의 초기화 과정에서 스누핑의 동작을 지정하기 위해 ST(27)에 필요한 내용을 넣고, MRTT(26)을 초기화 한다(40). MRTT(26)는 시스템 내의 모든 노드의 메모리 크기, 전체 시스템의 메모리 크기를 확인하여 그 내용을 적어 넣는다. 이는 프로세서 버스에서 진행되는 트랜잭션이 어떤 노드의 메모리 영역인지를 확인하여 그에 알맞게 스누핑제어가 진행되어야 하기 때문이다. 또한 `Loc Dir'(12)와 `Rem Dir'(13)을 아무 것도 없는 상태인 `Invalid' 상태로 초기화 한다(41).In order to designate the operation of snooping in the initialization process of the system, the necessary contents are put into the ST 27 and the MRTT 26 is initialized (40). The MRTT 26 checks the memory size of all nodes in the system and the memory size of the entire system and writes down the contents. This is because the snooping control should be performed accordingly by checking which node's memory area is the transaction going on the processor bus. It also initializes `Loc Dir '(12) and` Rem Dir' (13) to the `Invalid 'state with nothing (41).

시스템이 동작하면, 프로세서버스(5) 상에서 진행되는 모든 트랜잭션을 SSC(22)가 스누핑하게 되며, 버스 상에서 ADS# 신호가 구동되는지를 확인한다(42). ADS# 신호는 버스전송이 시작되었음을 알리는 신호이다.When the system is operating, the SSC 22 snoops all transactions going on the processor bus 5 and checks if the ADS # signal is driven on the bus (42). The ADS # signal indicates that bus transmission has started.

이 신호가 구동되면, 버스 상의 신호(어드레스, 전송형태) 등을 SCQ(23)에 넣는다(43). 그와 동시에 해당 트랜잭션이 자신의 메모리영역인지를 판단한다(44). 만약 자신의 메모리영역이면 `Loc Dir'(12)의 내용을 읽는다(45).When this signal is driven, a signal (address, transmission type) or the like on the bus is put into the SCQ 23 (43). At the same time, it is determined whether the transaction is its memory area (44). If it is its own memory area, it reads the contents of `Loc Dir '(12) (45).

이는 다른 노드의 메모리에 의해 해당 어드레스의 메모리가 참조(읽거나 쓰여졌느니)되었는지를 확인하기 위함이다. 그리고 버스에서 진행된 트랜잭션이 읽기인지 쓰기인지를 판단한다(47). 읽기 트랜잭션인 경우에는 `Loc Dir'(12)의 내용에 따라서 버스쪽으로 스누핑신호를 구동한다. 즉 `Loc Dir'의 내용이 'I(Invalid)'인 경우는 스누핑제어기는 스누핑신호를 구동하지 않고, `S(Shared)'이면 HIT# 신호를 구동하고, `M(Modified)'이면 DEFER# 신호를 구동한다(49). 또한 노드가 전송이 이루어져야 하는지를 판단한다(50). 즉, `Loc Dir'의 내용이 `M'으로 되어 있으면, 노드간 데이터전송이 이루어져야 하므로, 해당 프로세서에게 트랜잭션의 진행을 잠시 멈추게 한 후에 `지연' 전송을 수행한다(51). 이러한 노드간 전송은 IIF(14)에 의해 데이터전송이 수행한다(51). 버스에서 진행되는 트랜잭션이 자신의 메모리영역이고, 쓰기가 진행되는 경우에는 스누핑신호는 구동되지 않는다(52). 단지, 메모리쓰기를 진행을 확인하고, 다른 노드로 트랜잭션이 진행하는 경우는 없다. 버스에서 진행되는 트랜잭션이 자신의 메모리영역이 아닌 경우는 `Rem Dir'(13)을 읽는다. 이 트랜잭션이 읽기인지 쓰기인지를 확인한다(48). 읽기인 경우에는 DEFER# 신호를 구동하여 프로세서버스 상에서의 트랜잭션을 지연시킨다(53). 그리고, 해당 트랜잭션이 노드간 전송이 필요한지를 확인하여(55), 노드가 전송을 해야 하는 경우는 IIF(14)로 데이터읽기 전송을 요구한다(56).This is to check whether the memory of the corresponding address is referenced (read or written) by the memory of another node. It is then determined whether the transaction progressed on the bus is read or write (47). In the case of a read transaction, the snooping signal is driven toward the bus according to the contents of `Loc Dir '(12). In other words, if the content of `Loc Dir 'is' I (Invalid)', the snooping controller does not drive the snooping signal; if it is` S (Shared) ', it drives the HIT # signal; if `M (Modified)', DEFER # Drive the signal (49). In addition, the node determines whether transmission should be made (50). That is, if the content of `Loc Dir 'is set to` M', data transfer should be performed between nodes, so that the processor stops the transaction for a while and then performs `delayed` transfer (51). This inter-node transfer is performed by the data transfer by the IIF 14 (51). When the transaction proceeds on the bus is its memory area and the write proceeds, the snooping signal is not driven (52). It only checks the progress of the memory write and does not proceed with the transaction to another node. If a transaction on the bus is not in its own memory area, read `Rem Dir '(13). Check if this transaction is read or write (48). In the case of reading, the DEFER # signal is driven to delay the transaction on the processor bus (53). Then, the transaction checks whether the inter-node transfer is necessary (55), and if the node needs to transmit, the data read transmission is requested to the IIF 14 (56).

버스에서 진행되는 트랜잭션이 자신의 메모리영역이 아닌 쓰기 전송은 원래의 노드로 반드시 해당 데이터가 전송되어야 하므로, 이에 해당하는 스누핑신호를 구동하고(54), IIF(14)로 데이터쓰기 전송을 요구한다(57).Since a data transfer in the bus is not a memory area of the bus, the corresponding data must be transmitted to the original node. Therefore, the corresponding snooping signal is driven (54), and a data write transfer is requested to the IIF (14). (57).

위에서는 이 발명에 따른 캐시부착식 비균등분포적 메모리접근형 병렬컴퓨터시스템의 캐시일관성을 유지하기 위한 버스스누핑장치 및 방법을 그 양호한 실시예에 기초하여 설명하였지만, 그 것은 단지 예시적인 것일 뿐이며, 이 발명을 제한하려는 것이 아니다. 이 발명이 속하는 분야에서 숙련된 자에게는 이 발명의 사상을 이탈함이 없이 위 실시예로부터의 변형, 변경 또는 조절이 가능함이 자명할 것이다. 첨부된 특허청구의 범위는 그러한 변형예와 변경예 및 조절예를 모두 포함할 것을 의도한다.In the above, a bus snooping apparatus and method for maintaining cache coherency of a cache-attached non-uniformly distributed memory-accessible parallel computer system according to the present invention has been described based on the preferred embodiments thereof, but it is merely exemplary. It is not intended to limit this invention. It will be apparent to those skilled in the art that modifications, changes, or adjustments can be made from the above embodiments without departing from the spirit of the invention. It is intended that the appended claims cover all such modifications and variations and modifications.

CC-NUMA 병렬컴퓨터시스템은 여러 개의 프로세서를 상호연결망으로 연결하여 많은 작업을 여러 프로세서에 나누어 수행하게 하여 시스템 전체의 성능을 향상시킨다. 이러한 CC-NUMA 병렬컴퓨터시스템은 분산된 메모리들을 서로 데이터일관성이 유지되도록 하는 것이 복잡해지고 비용이 증가하였다. 또한, 각 프로세서들이 내부에 캐시를 가짐에 따라 이러한 캐시일관성도 함께 유지하는 것에 많은 어려움이 있었다.CC-NUMA parallel computer system improves the performance of the whole system by connecting several processors to interconnection network so that many tasks can be divided among several processors. These CC-NUMA parallel computer systems have increased complexity and cost to keep distributed memories data consistent with each other. In addition, as each processor has a cache inside, it has been difficult to maintain such cache consistency.

이 발명은 이러한 CC-NUMA 시스템에서 각 노드들이 가지고 있는 캐시메모리 내용에 대한 일관성의 유지를 하드웨어적으로 구현하여 소프트웨어적인 부담 없이 스스로 캐시의 내용을 일관성 있게 유지시켜 준다.The present invention implements the maintenance of the cache memory contents that each node has in the CC-NUMA system in hardware so that the contents of the cache can be maintained consistently without software burden.

Claims (11)

다수의 프로세싱노드가 상호연결망을 통하여 연결되어 있는 캐시부착식 비균등분포적 메모리접근형 병렬컴퓨터시스템에서 프로세서버스의 동작 중에서 캐시일관성에 관련된 신호를 관측하거나 해당 신호를 구동하는 스누핑제어기와 상기 스누핑제어기가 다른 프로세싱노드의 캐시상태에 맞게 스누핑동작을 수행할 수 있도록 캐시정보를 저장하는 디렉토리를 포함하는 것을 특징으로 하는 버스스누핑장치에 있어서,A snooping controller and a snooping controller for observing or driving a signal related to cache coherence during the operation of a processor bus in a cached non-uniformly distributed memory access parallel computer system in which a plurality of processing nodes are connected through an interconnection network. In the bus snooping device, characterized in that it comprises a directory for storing the cache information so that the snooping operation according to the cache state of another processing node, 상기 스누핑제어기는,The snooping controller, 프로세서버스에서 진행되는 트랜잭션을 감시하거나 디렉토리검사를 수행하는 주 제어기와;A main controller for monitoring a transaction in progress on the processor bus or performing a directory check; 프로세서버스에서 트랜잭션이 진행될 때, 캐시일관성의 유지를 위해 프로세서버스 상으로 스누핑 관련 신호를 구동하는 스누핑 신호 제어기와;A snooping signal controller which drives a snooping related signal onto the processor bus to maintain cache coherency as the transaction progresses on the processor bus; 프로세서버스에서 진행된 트랜잭션의 내용을 저장하는 스누핑제어 큐와,A snooping control queue that stores the contents of transactions made on the processor bus, 지역디렉토리를 제어하는 신호를 구동하는 지역디렉토리제어기와;A local directory controller for driving signals controlling the local directory; 원격디렉토리를 제어하는 신호를 구동하는 원격디렉토리제어기와;A remote directory controller for driving a signal for controlling the remote directory; 상기 스누핑제어 큐에서 출력되는 어드레스 범위가 로컬메모리영역인지 혹은 원격메모리영역인지를 판단하기 위한 메모리영역변환테이블; 및A memory area conversion table for determining whether an address range output from the snooping control queue is a local memory area or a remote memory area; And 상기 스누핑신호제어기가 상기 지역디렉토리제어기 및 원격디렉토리제어기로부터 디렉토리상태정보를 받아서 프로세서로 스누핑 관련 신호를 구동할 때 상태정보를 비교하기 위해 사용되는 스누핑테이블을 포함하는 것을 특징으로 하는 스누핑제어기를 포함하는 버스스누핑장치.And a snooping controller, wherein the snooping signal controller includes a snooping table used to receive directory status information from the local directory controller and the remote directory controller and to compare status information when driving the snooping related signal to a processor. Bus snooping device. 제1항에 있어서,The method of claim 1, 상기 스누핑제어기와 상기 디렉토리는 상기 병렬컴퓨터시스템의 상호연결망 브릿지 내에 제공되며,The snooping controller and the directory are provided in an interconnection network bridge of the parallel computer system; 상기 상호연결망 브릿지는 프로세서버스와 상호연결인터페이스를 연결하여 프로토콜을 변환하는 프로토콜브릿지 및, 상호연결망에 연결되어 트랜잭션을 송수신하는 상호연결인터페이스를 포함하는 것을 특징으로 하는 버스스누핑장치.The interconnect network bridge includes a protocol bridge for converting a protocol by connecting an interconnect interface with a processor bus, and an interconnect interface connected to the interconnect network for transmitting and receiving a transaction. 삭제delete 제1항에 있어서,The method of claim 1, 상기 지역디렉토리는 다른 프로세싱노드에 의해 자신의 메모리데이터의 공유여부를 표시하는 상태신호를 가지며,The local directory has a status signal indicating whether or not its memory data is shared by other processing nodes. 상기 상태신호는 다른 프로세싱노드에 의해 자신의 메모리데이터가 공유되어 있음을 나타내는 신호(S)와, 다른 프로세싱노드가 자신의 메모리에 데이터를 기록했음을 나타내는 신호(M) 및, 다른 프로세싱노드에 의해 접근이 이루어 지지 않았음을 나타내는 신호(I)를 포함하는 것을 특징으로 하는 버스스누핑장치.The status signal is accessed by a signal S indicating that its memory data is shared by another processing node, a signal M indicating that another processing node has written data in its memory, and another processing node. Bus snooping device characterized in that it comprises a signal (I) indicating that this has not been done. 제1항에 있어서,The method of claim 1, 상기 원격디렉토리는 자신이 다른 프로세싱노드의 메모리데이터를 공유했는지의 여부를 표시하는 상태신호를 가지며,The remote directory has a status signal indicating whether or not the remote directory has shared memory data of another processing node, 상기 상태신호는 자신이 다른 프로세싱노드의 메모리데이터를 공유하고 있음을 나타내는 신호(S)와, 자신이 다른 프로세싱노드의 메모리에 데이터를 기록했음을 나타내는 신호(M) 및, 자신이 다른 프로세싱노드의 메모리데이터에 접근하지 않았음을 나타내는 신호(I)를 포함하는 것을 특징으로 하는 버스스누핑장치.The status signal includes a signal S indicating that it is sharing memory data of another processing node, a signal M indicating that it has written data in a memory of another processing node, and a memory of another processing node. A bus snooping device comprising a signal (I) indicating no access to data. 제1항에 있어서,The method of claim 1, 상기 주 제어기는 프로세서버스의 트랜잭션의 내용 및 프로세서버스 상에 구동된 스누핑 관련 신호를 상기 스누핑제어 큐에 저장하게 구성된 것을 특징으로 하는 버스스누핑장치.And the main controller is configured to store contents of a transaction of a processor bus and a snooping related signal driven on the processor bus in the snooping control queue. 제6항에 있어서,The method of claim 6, 상기 스누핑 관련 신호가,The snooping related signal, 자신의 프로세서에 의해 요청된 데이터가 다른 프로세서의 캐시에서 수정된 상태로 있는 경우에 구동되는 신호인 HITM#와,HITM #, a signal that is driven when data requested by your processor remains modified in the cache of another processor, 자신의 프로세서에 의해 요청된 데이터가 다른 프로세서의 캐시에서 유효한 상태로 있는 경우에 구동되는 신호인 HIT#와,HIT #, which is a signal that is driven when data requested by its processor remains valid in the cache of another processor, 상기 상호연결망 브릿지에 의해 메모리접근을 지연시킬 때 사용하는 신호인 DEFER# 및,DEFER #, which is a signal used to delay memory access by the interconnection network bridge, 메모리장치가 프로세서의 요청에 응답하는 것을 제어하기 위해 사용되는 신호인 TPTCL을 포함하는 것을 특징으로 하는 버스스누핑장치.A bus snooping device comprising a TPTCL, which is a signal used to control a memory device responding to a processor request. 제1항에 있어서,The method of claim 1, 상기 버스스누핑장치가 프로세서버스에서 진행되는 파이프라인드 트랜잭션을 수행하면서 스누핑을 수행할 수 있도록 버스트랜잭션의 내용을 임시보관하는 장치를 부가적으로 포함하는 것을 특징으로 하는 버스스누핑장치.And a device for temporarily storing contents of a bus transaction so that the bus snooping device can perform snooping while performing a pipelined transaction running on a processor bus. 다수의 프로세싱노드가 상호연결망을 통하여 연결되어 있는 캐시부착식 비균등분포적 메모리접근형 병렬컴퓨터시스템에서 여러 프로세서의 캐시들의 내용을 일관성 있게 유지하는 버스스누핑방법에 있어서,A bus snooping method for maintaining the contents of caches of several processors in a cache-attached non-uniformly distributed memory access parallel computer system in which a plurality of processing nodes are connected through an interconnection network. 프로세서버스와 상호연결망간의 프로토콜을 변환하는 단계와,Converting the protocol between the processor bus and the interconnection network; 프로세서버스를 스누핑하여 캐시일관성을 유지시키는 동작을 수행하는 단계와,Snooping the processor bus to perform cache coherency; 스누핑동작을 수행할 수 있도록 버스신호를 래치하고 스누핑동작을 제어하는 단계와,Latching a bus signal to control a snooping operation so as to perform a snooping operation; 프로세서버스에서 진행되는 트랜잭션시에 시스템 전체의 캐시일관성 유지를 위해 프로세서버스신호를 발생하는 단계와,Generating a processor bus signal in order to maintain cache coherency of the entire system during a transaction in the processor bus; 프로세서버스에서 진행되는 파이프라인드 트랜잭션을 수행하면서 스누핑을 수행할 수 있도록 버스트랜잭션의 내용을 임시보관하는 단계와,Temporarily preserving the contents of the bus transaction so that snooping can be performed while the pipeline transaction is running on the processor bus; 메모리테이블을 내장하여 버스트랜잭션이 로컬메모리영역인지 원격메모리영역인지를 판단하는 단계와,Determining whether the bus transaction is a local memory area or a remote memory area by embedding a memory table; 읽혀진 디렉토리의 내용을 빠른 시간에 비교하여 그 결과를 프로세서버스 상에 구동할 수 있도록 스누핑정보를 저장하고 있는 단계와,Storing the snooping information so that the contents of the read directory can be compared quickly and the result can be driven on the processor bus; 로컬메모리의 상태를 가지고 있는 로컬디렉토리를 제어하고 또한 로컬디렉토리의 내용을 읽거나 써 넣는 단계와,Controlling the local directory holding the state of local memory and reading or writing the contents of the local directory, 원격메모리의 상태를 가지고 있는 원격디렉토리를 제어하고 또한 원격디렉토리의 내용을 읽거나 써 넣는 단계와,Controlling the remote directory holding the state of the remote memory and reading or writing the contents of the remote directory; 로컬메모리의 데이터가 여러 노드에 의해 공유되는지 혹은 다른 노드에 데이터가 있는지에 관한 로컬메모리상태를 표시하는 단계와,Displaying the local memory status as to whether the data in the local memory is shared by multiple nodes or whether there is data in other nodes; 원격메모리의 데이터가 여러 노드에 의해 공유되는지 혹은 자신의 노드에 데이터가 있는지에 관한 원격메모리상태를 표시하는 단계 및,Displaying the remote memory status as to whether the data in the remote memory is shared by multiple nodes or whether there is data in its own node, and 상호연결망과 연결되어 연결망의 프로토콜에 맞게 동작하여 노드간의 정보를 교환하는 단계를 포함하는 것을 특징으로 하는 버스스누핑방법.A bus snooping method comprising the steps of exchanging information between nodes by being connected to an interconnection network and operating according to a protocol of the connection network. 제9항에 있어서,The method of claim 9, 프로세서버스에서 파이프라인 형태로 연속적으로 진행되는 트랜잭션에 대하여 버스의 성능을 그대로 유지할 수 있게 큐의 구조로 버스스누핑을 수행하는 것을특징으로 하는 버스스누핑방법.A bus snooping method characterized in that bus snooping is performed in a queue structure so that the performance of a bus can be maintained as it is for a transaction that proceeds continuously in a pipeline form on a processor bus. 제9항 또는 제10항에 있어서,The method of claim 9 or 10, 프로세서의 트랜잭션의 판단 및 스누핑을 신속하게 수행하기 위하여 상기 메모리테이블의 구조를 로컬메모리영역과 원격메모리영역으로 구분하는 것을 특징으로 하는 버스스누핑방법.A bus snooping method comprising dividing a structure of the memory table into a local memory area and a remote memory area so as to quickly determine and snoop a transaction of a processor.
KR10-2000-0004128A 2000-01-28 2000-01-28 Bus snooping apparatus for cache coherency of CC-NUMA and method using thereof KR100371140B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2000-0004128A KR100371140B1 (en) 2000-01-28 2000-01-28 Bus snooping apparatus for cache coherency of CC-NUMA and method using thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2000-0004128A KR100371140B1 (en) 2000-01-28 2000-01-28 Bus snooping apparatus for cache coherency of CC-NUMA and method using thereof

Publications (2)

Publication Number Publication Date
KR20010076773A KR20010076773A (en) 2001-08-16
KR100371140B1 true KR100371140B1 (en) 2003-02-07

Family

ID=19642265

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0004128A KR100371140B1 (en) 2000-01-28 2000-01-28 Bus snooping apparatus for cache coherency of CC-NUMA and method using thereof

Country Status (1)

Country Link
KR (1) KR100371140B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101416248B1 (en) * 2007-05-04 2014-07-07 삼성전자 주식회사 Data processing apparatus and data processing method thereof

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4956900B2 (en) * 2005-03-07 2012-06-20 富士通株式会社 Address snoop method and multiprocessor system
CN116962259B (en) * 2023-09-21 2024-02-13 中电科申泰信息科技有限公司 Consistency processing method and system based on monitoring-directory two-layer protocol

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990034359A (en) * 1997-10-29 1999-05-15 구자홍 Cache Identity Controller of Distributed Shared Memory System

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990034359A (en) * 1997-10-29 1999-05-15 구자홍 Cache Identity Controller of Distributed Shared Memory System

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101416248B1 (en) * 2007-05-04 2014-07-07 삼성전자 주식회사 Data processing apparatus and data processing method thereof

Also Published As

Publication number Publication date
KR20010076773A (en) 2001-08-16

Similar Documents

Publication Publication Date Title
US7814279B2 (en) Low-cost cache coherency for accelerators
US7120755B2 (en) Transfer of cache lines on-chip between processing cores in a multi-core system
CN1575455B (en) Distributed read and write caching implementation for optimized input/output applications
KR100465583B1 (en) Non-uniform memory access(numa) data processing system that speculatively forwards a read request to a remote processing node and communication method in the system
KR100194253B1 (en) How to Use Mesh Data Coherency Protocol and Multiprocessor System
US6826653B2 (en) Block data mover adapted to contain faults in a partitioned multiprocessor system
US8037253B2 (en) Method and apparatus for global ordering to insure latency independent coherence
KR100371844B1 (en) Queue-based predictive flow control mechanism
EP1311956B1 (en) Method and apparatus for pipelining ordered input/output transactions in a cache coherent, multi-processor system
US20090240894A1 (en) Method and aparatus for the synchronization of distributed caches
US6463510B1 (en) Apparatus for identifying memory requests originating on remote I/O devices as noncacheable
US6470429B1 (en) System for identifying memory requests as noncacheable or reduce cache coherence directory lookups and bus snoops
US5269005A (en) Method and apparatus for transferring data within a computer system
JP3661764B2 (en) Method and system for providing an eviction protocol in a non-uniform memory access computer system
JPH11506852A (en) Reduction of cache snooping overhead in a multi-level cache system having a large number of bus masters and a shared level 2 cache
JP2000250881A (en) Method and system for avoiding lie block caused by collision of write back in unequal memory access system
JP2000250882A (en) Method and system for avoiding lie block caused by collision of invalid transaction in unequal memory access system
US20070073977A1 (en) Early global observation point for a uniprocessor system
US5987544A (en) System interface protocol with optional module cache
US6226718B1 (en) Method and system for avoiding livelocks due to stale exclusive/modified directory entries within a non-uniform access system
US6336169B1 (en) Background kill system bus transaction to optimize coherency transactions on a multiprocessor system bus
JPH10501914A (en) Shared cache memory device
JPH07152647A (en) Shared memory multiprocessor
KR100371140B1 (en) Bus snooping apparatus for cache coherency of CC-NUMA and method using thereof
US7328310B2 (en) Method and system for cache utilization by limiting number of pending cache line requests

Legal Events

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

Payment date: 20121206

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20131209

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20141229

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20151228

Year of fee payment: 14

FPAY Annual fee payment

Payment date: 20161228

Year of fee payment: 15

FPAY Annual fee payment

Payment date: 20171226

Year of fee payment: 16

LAPS Lapse due to unpaid annual fee