KR20010076773A - 캐시부착식 비균등분포적 메모리접근형병렬컴퓨터시스템의 캐시일관성을 유지하기 위한버스스누핑장치 및 방법 - Google Patents

캐시부착식 비균등분포적 메모리접근형병렬컴퓨터시스템의 캐시일관성을 유지하기 위한버스스누핑장치 및 방법 Download PDF

Info

Publication number
KR20010076773A
KR20010076773A KR1020000004128A KR20000004128A KR20010076773A KR 20010076773 A KR20010076773 A KR 20010076773A KR 1020000004128 A KR1020000004128 A KR 1020000004128A KR 20000004128 A KR20000004128 A KR 20000004128A KR 20010076773 A KR20010076773 A KR 20010076773A
Authority
KR
South Korea
Prior art keywords
snooping
bus
signal
memory
processor
Prior art date
Application number
KR1020000004128A
Other languages
English (en)
Other versions
KR100371140B1 (ko
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/ko
Publication of KR20010076773A publication Critical patent/KR20010076773A/ko
Application granted granted Critical
Publication of KR100371140B1 publication Critical patent/KR100371140B1/ko

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)를 포함한다.

Description

캐시부착식 비균등분포적 메모리접근형 병렬컴퓨터시스템의 캐시일관성을 유지하기 위한 버스스누핑장치 및 방법{Bus snooping apparatus for cache coherency of CC-NUMA and method using thereof}
이 발명은 병렬컴퓨터시스템의 데이터의 일관성을 유지하는 장치에 관한 것이며, 특히 캐시부착식 비균등분포적 메모리접근형(cache coherent non-uniform memory access : CC-NUMA) 병렬컴퓨터시스템의 다중프로세서에서 진행되는 모든 트랜잭션을 스누핑(snooping)하여 시스템의 전체에 걸쳐 데이터의 일관성을 유지하는 장치에 관한 것이다. 이 발명은 또한 그러한 장치를 이용하여 프로세서버스를 스누핑하는 방법에 관한 것이다.
컴퓨터에서의 복잡한 연산에 대한 요구는 멀티미디어와 인터넷의 발전에 따라 시간이 갈수록 증대되고 있다. 따라서, 컴퓨터시스템의 구조는 많은 양의 연산을 빠른 시간에 수행할 수 있게 하는 방향으로 발전하고 있다. 이러한 컴퓨터시스템은 비교적 값이 저렴하고 대량으로 구입이 가능한 프로세서들을 수십 내지 수백 개를 상호연결망을 통하여 연결한 다음, 복잡한 수치연산을 여러 개의 프로세서에서 분담처리할 수 있게 구성된다. 이러한 시스템을 병렬컴퓨터시스템이라고 한다.
병렬컴퓨터시스템은 여러 가지 형태로 발전되어 왔는데, 그 중의 메모리공유식 다중프로세서시스템은 모델별로 균등분포적 다중프로세서접근 (uniform multiprocessor access : UMA) 모델, 비균등분포적 메모리접근(non-uniform memory access : NUMA) 모델, 캐시전용 메모리구조(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 시스템은 병렬컴퓨터시스템의 한 형태로서 최근에 많이 개발되고 있는 시스템이다.
또한, 컴퓨터시스템내에서 프로세서의 명령어실행속도와 메모리접근시간 사이의 차이로 인한 문제를 해결하고 프로세서의 성능을 향상시키기 위해 각각의 프로세싱노드가 캐시메모리를 사용하는 것이 제안되었다.(이규호,컴퓨터 시스템, KR Patent Application No. 1999-2342, 한국전자통신연구소, 1991.6.25)
CC-NUMA 시스템은 여러 개의 프로세싱노드가 각자 메모리와 캐시를 가지고 있으면서, 상호연결망을 통해 데이터를 교환할 수 있도록 구성되어 있는 컴퓨터시스템이다.
한편, 상호연결망을 통해 분산된 메모리들은 시스템 내의 모든 프로세서에 의해 공유되므로, 이러한 메모리들에 저장된 내용에 대해서는 반드시 일관성이 유지되어야 하는데, 각각의 각각의 프로세싱노드가 가지고 있는 케시메모리들로 인해 노드 간의 데이터를 일관성 있게 유지하기가 곤란해진다.
여러 개의 캐시메모리가 프로세서의 주변 혹은 내부에 위치하고 있는 다중프로세서시스템에서 프로세서들 간의 데이터내용의 일관성을 유지하기 위하여 스누핑기법을 사용하는 것이 제안되어 있다.(신상석, 김성운,다중 프로세서 시스템의 버스 스누핑 제어 장치, KR Patent Application No. 1996-1803, 1996.4.20).
다중프로세서를 사용하는 시스템에서는 메모리가 분산되어 있는 경우가 있으며, 이를 공유하여 사용하기 위해서 분산공유메모리의 캐시제어기법이 사용된다.(김용,분산공유메모리의 캐시일관성 제어방법 및 장치, KR Patent Application No. 1999-026501, 엘지전자주식회사, 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)
이 발명은 앞서 설명된 비균형적 메모리접근(NUMA)을 수행하는 CC-NUMA 모델을 가지는 병렬컴퓨터시스템에서 사용되는 분산공유메모리의 캐시일관성을 제어하기 위한 프로세서버스의 스누핑장치를 제공하기 위한 것이다.
이 발명은 캐시를 가진 다중프로세서시스템의 버스스누핑제어장치가 스누핑제어장치 내에 로컬메모리상태와 원격메모리상태를 알 수 있도록 디렉토리를 두어 시스템전역에 걸친 풀맵디렉토리를 가능하게 하려는 것이다.
또한, 이 발명에 따른 버스스누핑제어장치는 프로세서버스 상에서 진행되는 연속적 버스동작을 최대한 지원하여, 펜디드프로토콜버스를 가지는 시스템에서도 동작이 가능하게 하려는 것이다.
여기에서, 펜디드프로토콜버스라고 함은 프로세서의 파이프라인동작을 지원하기 위해 버스 상에서 구현되는 버스프로토콜을 의미하며, 최근에 발표되는 대부분의 마이크로프로세서는 이러한 펜디드프로토콜을 지원하도록 되어 있다.
도 1은 캐시부착식 비균등분포적 메모리접근형 병렬컴퓨터시스템의 구성을 예시적으로 도시한 블록선도이고,
도 2는 캐시부착식 비균등분포적 메모리접근형 병렬컴퓨터시스템의 프로세서버스의 스누핑을 위한 장치이며,
도 3은 프로세서버스스누핑신호의 제어를 설명하기 위한 도면이고,
도 4는 프로세서버스를 스누핑하는 과정을 설명하기 위한 흐름도이다.
위와 같은 목적을 달성하기 위한 이 발명에 따르면, 버스스누핑장치가 프로세서버스의 동작 중에서 캐시일관성에 관련된 신호를 관측하거나 해당 신호를 구동하는 스누핑제어기 및, 스누핑제어기가 다른 프로세싱노드의 캐시상태에 맞게 스누핑동작을 수행할 수 있도록 캐시정보를 저장하는 디렉토리를 포함한다.
상기 스누핑제어기와 상기 디렉토리가 상호연결망 브릿지 내에 제공되며, 상기 상호연결망 브릿지는 프로세서버스와 상호연결인터페이스를 연결하여 프로토콜을 변환하는 프로토콜브릿지 및, 상호연결망에 연결되어 트랜잭션을 송수신하는 상호연결인터페이스를 포함할 수 있다.
상기 스누핑제어기는, 프로세서버스에서 진행되는 트래잭션을 감시하거나 디렉토리검사를 수행하는 주 제어기와, 프로세서버스에서 트랜잭션이 진행될 때, 캐시일관성의 유지를 위해 프로세서버스 상으로 스누핑 관련 신호를 구동하는 스누핑 신호 제어기와, 프로세서버스에서 진행된 트랜잭션의 내용을 저장하는 스누핑제어 큐와, 지역디렉토리를 제어하는 신호를 구동하는 지역디렉토리제어기와, 원격디렉토리를 제어하는 신호를 구동하는 지역디렉토리제어기와, 상기 스누핑제어 큐에서 출력되는 어드레스 범위가 로컬메모리영역인지 혹은 원격메모리영역인지를 판단하기 위한 메모리영역변환테이블 및, 상기 스누핑신호제어기가 상기 지역디렉토리제어기 및 원격디렉토리제어기로부터 디렉토리상태정보를 받아서 프로세서로 스누핑 관련 신호를 구동할 때 상태정보를 비교하기 위해 사용되는 스누핑테이블을 포함하는 것이 양호하다.
상기 지역디렉토리는 다른 프로세싱노드에 의해 자신의 메모리데이터의 공유여부를 표시하는 상태신호를 가지며, 상기 상태신호는 다른 프로세싱노드에 의해 자신의 메모리데이터가 공유되어 있음을 나타내는 신호(S)와, 다른 프로세싱노드가 자신의 메모리에 데이터를 기록했음을 나타내는 신호(M) 및, 다른 프로세싱노드에 의해 접근이 이루어 지지 않았음을 나타내는 신호(I)를 포함할 수 있다.
상기 원격디렉토리는 자신이 다른 프로세싱노드의 메모리데이터를 공유했는지의 여부를 표시하는 상태신호를 가지며, 상기 상태신호는 자신이 다른 프로세싱노드의 메모리데이터를 공유하고 있음을 나타내는 신호(S)와, 자신이 다른 프로세싱노드의 메모리에 데이터를 기록했음을 나타내는 신호(M) 및, 자신이 다른 프로세싱노드의 메모리데이터에 접근하지 않았음을 나타내는 신호(I)를 포함할 수 있다.
상기 주 제어기는 프로세서버스의 트랜잭션의 내용 및 프로세서버스 상에 구동된 스누핑 관련 신호를 상기 스누핑제어 큐에 저장하게 구성되는 것이 양호하다.
상기 스누핑 관련 신호는, 자신의 프로세서에 의해 요청된 데이터가 다른 프로세서의 캐시에서 수정된 상태로 있는 경우에 구동되는 신호인 HITM#와, 자신의 프로세서에 의해 요청된 데이터가 다른 프로세서의 캐시에서 유효한 상태로 있는 경우에 구동되는 신호인 HIT#와, 상기 상호연결망 브릿지에 의해 메모리접근을 지연시킬 때 사용하는 신호인 DEFER# 및, 메모리장치가 프로세서의 요청에 응답하는 것을 제어하기 위해 사용되는 신호인 TPTCL을 포함할 수 있다.
상기 버스스누핑장치가 프로세서버스에서 진행되는 파이프라인드 트랜잭션을 수행하면서 스누핑을 수행할 수 있도록 버스트랜잭션의 내용을 임시보관하는 장치를 부가적으로 포함하는 것이 양호하다.
또한, 이 발명에 따라 제공되는 버스스누핑방법은 프로세서버스와 상호연결망간의 프로토콜을 변환하는 단계와, 프로세서버스를 스누핑하여 캐시일관성을 유지시키는 동작을 수행하는 단계와, 스누핑동작을 수행할 수 있도록 버스신호를 래치하고 스누핑동작을 제어하는 단계와, 프로세서버스에서 진행되는 트랜잭션시에 시스템 전체의 캐시일관성 유지를 위해 프로세서버스신호를 발생하는 단계와, 프로세서버스에서 진행되는 파이프라인드 트랜잭션을 수행하면서 스누핑을 수행할 수 있도록 버스트랜잭션의 내용을 임시보관하는 단계와, 메모리테이블을 내장하여 버스트랜잭션이 로컬메모리영역인지 원격메모리영역인지를 판단하는 단계와, 읽혀진 디렉토리의 내용을 빠른 시간에 비교하여 그 결과를 프로세서버스 상에 구동할 수 있도록 스누핑정보를 저장하고 있는 단계와, 로컬메모리의 상태를 가지고 있는 로컬디렉토리를 제어하고 또한 로컬디렉토리의 내용을 읽거나 써 넣는 단계와, 원격메모리의 상태를 가지고 있는 원격디렉토리를 제어하고 또한 원격디렉토리의 내용을 읽거나 써 넣는 단계와, 로컬메모리의 데이터가 여러 노드에 의해 공유되는지 혹은 다른 노드에 데이터가 있는지에 관한 로컬메모리상태를 표시하는 단계와, 원격메모리의 데이터가 여러 노드에 의해 공유되는지 혹은 자신의 노드에 데이터가 있는지에 관한 원격메모리상태를 표시하는 단계 및, 상호연결망과 연결되어 연결망의 프로토콜에 맞게 동작하여 노드간의 정보를 교환하는 단계를 포함한다.
프로세서버스에서 파이프라인 형태로 연속적으로 진행되는 트랜잭션에 대하여 버스의 성능을 그대로 유지할 수 있게 큐의 구조로 버스스누핑을 수행하는 것이 양호하다.
프로세서의 트랜잭션의 판단 및 스누핑을 신속하게 수행하기 위하여 상기 메모리테이블의 구조를 로컬메모리영역과 원격메모리영역으로 구분하는 것이 양호하다.
아래에서는 첨부된 도면을 보면서 이 발명에 따른 캐시를 가진 다중프로세서시스템의 버스스누핑제어장치의 양호한 실시예에 대해 상세히 설명하겠다.
도 1은 이 발명이 적용되는 이 발명에 따른 캐시를 가진 다중프로세서시스템을 예시적으로 도시한 것이다.
이 시스템은 여러 개의 프로세싱노드가 한 개의 상호연결망(Interconnection Network)에 연결되어 있다. 도 1에는 네 개의 프로세싱노드(2)가 연결되어 있는 모습이다. 각 프로세싱노드는 4개의 프로세서(4)가 단일버스(5)에 연결되어 있으며, 각 노드의 메모리(3)는 노드 내의 버스(5)에 연결되어 있다. 상호연결망 브릿지(1 : interconnection network bridge : INB)는 상호연결망(6)과 프로세서버스 버스(5)를 연결해 주는 역할을 한다.
이 발명에 따른 버스스누핑제어장치는 도 1에 도시된 INB(1)의 내부에 위치하며, 프로세서버스(5)에서 진행되는 버스동작을 다른 노드의 정보를 가진 스누퍼가 감지하여 시스템 전체의 메모리데이터를 일관성 있게 유지할 수 있도록 동작한다.
도 2는 이 발명에 따른 버스스누핑제어장치의 한 실시예가 구현된 INB(1)의 내부구성을 상세히 나타낸 그림이다.
프로세싱노드(2)의 내부에 위치하는 INB(1)는 프로세서에 의해 진행되는 버스트랜잭션을 상호연결망으로 전달하고, 상호연결망에서 전달된 트랜잭션을 버스 쪽으로 전송하는 역할을 수행한다. 즉, 프로세서버스(5)와 상호연결망(6)의 프로토콜이 다르게 진행되기 때문에 이들 프로토콜을 연결하는 기능을 수행한다.
INB(1)는 크게 네개의 모듈로 구성된다.
프로세서버스(5)와 상호연결인터페이스(14)를 연결하여 프로토콜을 변환하는프로토콜브릿지(11 : protocol bridge : PB), 프로세서버스의 동작 중에서 캐시일관성에 관련된 신호를 관측하거나 해당 신호를 구동하는 스누핑제어기(20 : snooping controller : SC), SC(20)가 다른 프로세싱노드의 캐시상태에 맞게 스누핑동작을 수행할 수 있도록 캐시정보를 저장하는 디렉토리(12, 13) 및, 상호연결망(6)에 연결되어 트랜잭션을 송수신하는 IIF상호연결인터페이스(14 : interconnection interface : IIF)이다.
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) 등이다.
MSC(21)는 프로세서버스에서 진행되는 트래잭션을 감시하거나 디렉토리검사를 수행할 수 있도록 프로세서버스의 트랜잭션 내용을 SCQ(23)에 넣는다. 만약에 프로세서버스 상에서 캐시일관성을 유지하기 위한 신호가 구동되면, 이러한 내용을 함께 SCQ(23)에 저장한다.
SSC(22)는 프로세서버스에서 진행되는 트랜잭션을 LDC(24)와 RDC(25)가 디렉토리 내용을 검사한 후에 알려 주면, 캐시일관성의 유지를 위해 프로세서버스 상으로 스누핑 관련 신호를 구동하는 모듈이다.
이러한 스누핑 관련 신호는 HITM#, HIT#, DEFER#, TPCTL 등이다.
HITM# 신호는 프로세서에 의해 요청된 데이터가 다른 프로세서의 캐시에 `M' 상태로 있는 경우에 구동되는 신호이고, HIT# 신호는 프로세서에 의해 요청된 데이터가 다른 프로세서의 캐시에 `V'(valid) 상태로 있는 경우에 구동되는 신호로서, 이 신호에 의해 양쪽의 캐시는 `S' 상태로 되며, DEFER# 신호는 INB(1)에 의해 메모리접근을 지연시킬 때 사용한다. 프로세서에 연결된 메모리응답기들이 프로세서의 빠른 동작에 즉시 응답할 수 없는 경우에 이 신호를 사용하여 버스를 점유하지 않는 상태로 메모리접근동작을 진행시킨다.
또한, 메모리접근이 완료되면 프로세서버스로 지연응답트랜잭션을 통해서 그 결과를 알려 준다.
TPTCL 신호는 메모리장치가 프로세서의 요청에 응답하는 것을 제어하기 위해 사용된다. 이 신호는 INB(1)가 스누핑 결과를 확인하여 로컬메모리응답인 경우라도 다른 노드가 그 데이터를 가지고 있는 것이 확인되면, 메모리응답기가 응답하는 것을 막기 위해서 사용한다.
SCQ(23)는 프로세서버스에서 진행된 트랜잭션의 내용을 저장하는 FIFO(First-In First-Out)구조를 이루는 큐이다. 이러한 큐를 가지면 프로세서버스에서 진행되는 파이프라인드 트랜잭션을 지원하면서, 캐시 관련 동작을 수행할 수 있도록 한다.
LDC(24)는 지역디렉토리(12 : Loc Dir)를 제어하는 신호를 구동하는 모듈이다.
`Loc Dir'(12)에는 지역메모리의 공유여부를 표시하는 상태신호가 들어 있다.
즉, 다른 프로세싱노드에 의해 자신의 메모리가 접근된 경우에는 해당 어드레스를 인덱스로 데이터의 공유상태를 표시한다.
따라서, 다른 노드에 의해 자신의 메모리데이터가 공유되어 있으면, `S(shared)', 기록된 상태로 있으면 `M(modified)', 다른 노드에 의해 접근이 이루어 지지 않았으면 `I(Ignore)'를 표시해 둔다.
따라서, 프로세서에 의해 접근이 요청된 데이터가 다른 노드에 의해 수정이 이루어 졌다면 `Loc Dir'(12)안에는 `M' 상태로 표시가 되어 있고, 이런 경우는 IIF(14)를 통해서 해당 노드로 그 데이터를 전송해 줄 것을 요청한다.
RDC(25)는 원격디렉토리(13 : Rem Dir)를 제어하는 신호를 구동하는 모듈이다.
`Rem Dir'(13)는 원격메모리의 공유여부를 표시하는 상태신호가 들어 있다.
즉, 다른 프로세싱노드의 메모리데이터를 자신의 노드가 접근한 경우에 해당 어드레스를 인덱스로 데이터의 공유상태를 표시한다.
따라서, 다른 노드의 메모리 내용을 가지고 있기 때문에, 다른 노드에 의해 해당 데이터가 요구되면 이를 다른 노드로 보내 주어야 한다.
`Loc Dir'과 마찬가지로 `S',`M', `I' 상태로 이루어 진다.
MRTT(26)은 SCQ에서 출력되는 어드레스를 입력으로 하여, 해당 어드레스 범위가 로컬메모리영역인지, 혹은 원격메모리영역인지를 판단하는 모듈이다. 메모리영역을 판단하여 해당되는 메모리영역의 캐시상태를 가지고 있는 LDC(24)와 RDC(25)로 상태메모리 접근을 요청한다.
ST(27)은 SSC(22)가 LDC(24), RDC(25)의 디렉토리상태정보를 받아서 프로세서로 캐시일관성 관련 신호를 구동하기 위해서 상태정보를 비교할 때 사용되는 테이블이다. 프로세서버스는 버스클럭단위로 움직이며, 보통 한 버스클럭주기 동안에 스누핑을 완료해야 한다. 그러나, 디렉토리의 상태와 버스트랜잭션의 상태는 여러 개의 조합으로 이루어져 이를 한 클럭 안에 비교하는 것이 어렵다. 따라서, 이들 정보를 테이블로 만들어 한 개의 버스클럭주기 동안에 메모리상태정보를 비교할 수 있도록 내부에 스누핑테이블을 둔다.
도 3은 MSC(21)의 상태흐름도이다.
프로세서버스는 어드레스가 구동되면서 트랜잭션이 시작된다. 이 때, 버스상에 어드레스가 구동되었음을 알리는 신호가 ADS#이다.
MSC(21)는 프로세서버스에서 진행되는 트래잭션을 감시하거나 디렉토리검사를 수행할 수 있도록 프로세서버스의 트랜잭션 내용을 SCQ(23)에 넣는다. 만약에 프로세서버스 상에서 캐시일관성의 유지를 위한 신호가 구동되면, 이러한 내용을 함께 SCQ(23)에 저장한다.
아이들상태(30 : IDLE)는 사이클이 진행되기를 기다리는 상태이다.
프로세서에 의해 사이클이 진행되면 ADS# 신호가 구동되며, 이 신호를 버스 클럭으로 래치한 것이 ADS1 신호이다. 이 신호가 구동되면, 스누핑을 시작해야 하기 때문에 CMPA상태(31)로 상태가 천이된다.
CMPA상태(31)에서는 프로세서버스에 의해 구동된 어드레스신호를 검사하는 단계이다. 어드레스는 로컬메모리영역과 원격메모리영역으로 나뉘어 진다. 로컬메모리영역은 현재의 노드가 가지고 있는 메모리의 영역이며, 원격메모리영역은 다른 노드가 가지고 있는 메모리영역이다. 이 단계에서는 바로 SNRD상태(32)로 상태가 천이된다.
SNRD상태(32)에서는 프로세서버스에서 구동된 어드레스가 로컬메모리영역이면 `Loc Dir'(12), 원격메모리영역이면 `Rem Dir'(13) 디렉토리를 읽는 상태이다. 디렉토리를 읽어서 프로세서가 요청한 데이터가 어떤 상태로 있는지를 확인한다. 이 상태에서는 바로 AHTM상태(33)으로 상태가 천이된다.
AHTM상태(32)에서는 캐시일관성의 유지를 위해서 프로세서에서 버스로 스누핑 관련 신호(HITM#, HIT#, DEFER#, TPCTL)를 구동한다.
HITM# 신호는 캐시라인이 다른 프로세서에 M(Modified) 상태로 있을 경우에 구동된다. 혹은, 다른 노드에 캐시라인을 가지고 있는 경우에는 INB(1)에 의해 구동된다. HIT#는 캐시라인을 S(Shared) 상태로 하기 위해 사용된다. DEFER# 신호는 해당 트랜잭션을 지연시키기 위해 사용된다. 지연이란 트랜잭션이 진행되는 동안에 버스를 잡지 않도록 임시로 트랜잭션이 완료되도록 한다. 버스를 통해 진행된 전송은 임시로 완료되었지만, 연결망을 통해 해당 트랜잭션은 계속 진행되고, 진행된 결과를 나중에 지연응답을 통해서 알려 준다.
이러한 지연의 유무를 메모리제어기에 알려 주기 위하여 TPCTL 신호가 사용된다.
OKST상태(34)에서는 버스에서 진행된 스누핑결과를 분석하는 상태이다. 만약에 어떠한 이유로 스누핑이 연장되는 경우에는 AHTM상태(33)로 천이되고, 스누핑은 정상적으로 완료되었으나 이전에 진행된 트랜잭션이 계속 남아 있으면, SNRD상태(32)로 천이된다. 스누핑이 정상적으로 완료되는 시점에 ADS# 신호가 구동되었으면 CMPA상태(31)로 천이된다. 스누핑이 그냥 정상적으로 완료되었으면 IDLE상태(30)로 천이된다.
<그림 4>는 CC-NUMA 시스템에서의 프로세서 버스 스누핑 제어 흐름을 나타낸 것이다.
시스템의 초기화 과정에서 스누핑의 동작을 지정하기 위해 ST(27)에 필요한 내용을 넣고, MRTT(26)을 초기화 한다(40). MRTT(26)는 시스템 내의 모든 노드의 메모리 크기, 전체 시스템의 메모리 크기를 확인하여 그 내용을 적어 넣는다. 이는 프로세서 버스에서 진행되는 트랜잭션이 어떤 노드의 메모리 영역인지를 확인하여 그에 알맞게 스누핑제어가 진행되어야 하기 때문이다. 또한 `Loc Dir'(12)와 `Rem Dir'(13)을 아무 것도 없는 상태인 `Invalid' 상태로 초기화 한다(41).
시스템이 동작하면, 프로세서버스(5) 상에서 진행되는 모든 트랜잭션을 SSC(22)가 스누핑하게 되며, 버스 상에서 ADS# 신호가 구동되는지를 확인한다(42). ADS# 신호는 버스전송이 시작되었음을 알리는 신호이다.
이 신호가 구동되면, 버스 상의 신호(어드레스, 전송형태) 등을 SCQ(23)에 넣는다(43). 그와 동시에 해당 트랜잭션이 자신의 메모리영역인지를 판단한다(44). 만약 자신의 메모리영역이면 `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).
버스에서 진행되는 트랜잭션이 자신의 메모리영역이 아닌 쓰기 전송은 원래의 노드로 반드시 해당 데이터가 전송되어야 하므로, 이에 해당하는 스누핑신호를 구동하고(54), IIF(14)로 데이터쓰기 전송을 요구한다(57).
위에서는 이 발명에 따른 캐시부착식 비균등분포적 메모리접근형 병렬컴퓨터시스템의 캐시일관성을 유지하기 위한 버스스누핑장치 및 방법을 그 양호한 실시예에 기초하여 설명하였지만, 그 것은 단지 예시적인 것일 뿐이며, 이 발명을 제하하려는 것이 아니다. 이 발명이 속하는 분야에서 숙련된 자에게는 이 발명의 사상을 이탈함이 없이 위 실시예로부터의 변형, 변경 또는 조절이 가능함이 자명할 것이다. 첨부된 특허청구의 범위는 그러한 변형예와 변경예 및 조절예를 모두 포함할 것을 의도한다.
CC-NUMA 병렬컴퓨터시스템은 여러 개의 프로세서를 상호연결망으로 연결하여 많은 작업을 여러 프로세서에 나누어 수행하게 하여 시스템 전체의 성능을 향상시킨다. 이러한 CC-NUMA 병렬컴퓨터시스템은 분산된 메모리들을 서로 데이터일관성이 유지되도록 하는 것이 복잡해지고 비용이 증가하였다. 또한, 각 프로세서들이 내부에 캐시를 가짐에 따라 이러한 캐시일관성도 함께 유지하는 것에 많은 어려움이 있었다.
이 발명은 이러한 CC-NUMA 시스템에서 각 노드들이 가지고 있는 캐시메모리 내용에 대한 일관성의 유지를 하드웨어적으로 구현하여 소프트웨어적인 부담 없이 스스로 캐시의 내용을 일관성 있게 유지시켜 준다.

Claims (11)

  1. 다수의 프로세싱노드가 상호연결망을 통하여 연결되어 있는 캐시부착식 비균등분포적 메모리접근형 병렬컴퓨터시스템에서 여러 프로세서의 캐시들의 내용을 일관성 있게 유지하는 버스스누핑장치에 있어서,
    프로세서버스의 동작 중에서 캐시일관성에 관련된 신호를 관측하거나 해당 신호를 구동하는 스누핑제어기 및, 스누핑제어기가 다른 프로세싱노드의 캐시상태에 맞게 스누핑동작을 수행할 수 있도록 캐시정보를 저장하는 디렉토리를 포함하는 것을 특징으로 하는 버스스누핑장치.
  2. 제1항에 있어서,
    상기 스누핑제어기와 상기 디렉토리는 상기 병렬컴퓨터시스템의 상호연결망 브릿지 내에 제공되며,
    상기 상호연결망 브릿지는 프로세서버스와 상호연결인터페이스를 연결하여 프로토콜을 변환하는 프로토콜브릿지 및, 상호연결망에 연결되어 트랜잭션을 송수신하는 상호연결린터페이스를 포함하는 것을 특징으로 하는 버스스누핑장치.
  3. 제1항 또는 제2항에 있어서,
    상기 스누핑제어기는,
    프로세서버스에서 진행되는 트래잭션을 감시하거나 디렉토리검사를 수행하는주 제어기와,
    프로세서버스에서 트랜잭션이 진행될 때, 캐시일관성의 유지를 위해 프로세서버스 상으로 스누핑 관련 신호를 구동하는 스누핑 신호 제어기와,
    프로세서버스에서 진행된 트랜잭션의 내용을 저장하는 스누핑제어 큐와,
    지역디렉토리를 제어하는 신호를 구동하는 지역디렉토리제어기와,
    원격디렉토리를 제어하는 신호를 구동하는 지역디렉토리제어기와,
    상기 스누핑제어 큐에서 출력되는 어드레스 범위가 로컬메모리영역인지 혹은 원격메모리영역인지를 판단하기 위한 메모리영역변환테이블 및,
    상기 스누핑신호제어기가 상기 지역디렉토리제어기 및 원격디렉토리제어기로부터 디렉토리상태정보를 받아서 프로세서로 스누핑 관련 신호를 구동할 때 상태정보를 비교하기 위해 사용되는 스누핑테이블을 포함하는 것을 특징으로 하는 버스스누핑장치.
  4. 제3항에 있어서,
    상기 지역디렉토리는 다른 프로세싱노드에 의해 자신의 메모리데이터의 공유여부를 표시하는 상태신호를 가지며,
    상기 상태신호는 다른 프로세싱노드에 의해 자신의 메모리데이터가 공유되어 있음을 나타내는 신호(S)와, 다른 프로세싱노드가 자신의 메모리에 데이터를 기록했음을 나타내는 신호(M) 및, 다른 프로세싱노드에 의해 접근이 이루어 지지 않았음을 나타내는 신호(I)를 포함하는 것을 특징으로 하는 버스스누핑장치.
  5. 제3항에 있어서,
    상기 원격디렉토리는 자신이 다른 프로세싱노드의 메모리데이터를 공유했는지의 여부를 표시하는 상태신호를 가지며,
    상기 상태신호는 자신이 다른 프로세싱노드의 메모리데이터를 공유하고 있음을 나타내는 신호(S)와, 자신이 다른 프로세싱노드의 메모리에 데이터를 기록했음을 나타내는 신호(M) 및, 자신이 다른 프로세싱노드의 메모리데이터에 접근하지 않았음을 나타내는 신호(I)를 포함하는 것을 특징으로 하는 버스스누핑장치.
  6. 제3항에 있어서,
    상기 주 제어기는 프로세서버스의 트랜잭션의 내용 및 프로세서버스 상에 구동된 스누핑 관련 신호를 상기 스누핑제어 큐에 저장하게 구성된 것을 특징으로 하는 버스스누핑장치.
  7. 제6항에 있어서,
    상기 스누핑 관련 신호가,
    자신의 프로세서에 의해 요청된 데이터가 다른 프로세서의 캐시에서 수정된 상태로 있는 경우에 구동되는 신호인 HITM#와,
    자신의 프로세서에 의해 요청된 데이터가 다른 프로세서의 캐시에서 유효한 상태로 있는 경우에 구동되는 신호인 HIT#와,
    상기 상호연결망 브릿지에 의해 메모리접근을 지연시킬 때 사용하는 신호인 DEFER# 및,
    메모리장치가 프로세서의 요청에 응답하는 것을 제어하기 위해 사용되는 신호인 TPTCL을 포함하는 것을 특징으로 하는 버스스누핑장치.
  8. 제3항에 있어서,
    상기 버스스누핑장치가 프로세서버스에서 진행되는 파이프라인드 트랜잭션을 수행하면서 스누핑을 수행할 수 있도록 버스트랜잭션의 내용을 임시보관하는 장치를 부가적으로 포함하는 것을 특징으로 하는 버스스누핑장치.
  9. 다수의 프로세싱노드가 상호연결망을 통하여 연결되어 있는 캐시부착식 비균등분포적 메모리접근형 병렬컴퓨터시스템에서 여러 프로세서의 캐시들의 내용을 일관성 있게 유지하는 버스스누핑방법에 있어서,
    프로세서버스와 상호연결망간의 프로토콜을 변환하는 단계와,
    프로세서버스를 스누핑하여 캐시일관성을 유지시키는 동작을 수행하는 단계와,
    스누핑동작을 수행할 수 있도록 버스신호를 래치하고 스누핑동작을 제어하는 단계와,
    프로세서버스에서 진행되는 트랜잭션시에 시스템 전체의 캐시일관성 유지를 위해 프로세서버스신호를 발생하는 단계와,
    프로세서버스에서 진행되는 파이프라인드 트랜잭션을 수행하면서 스누핑을 수행할 수 있도록 버스트랜잭션의 내용을 임시보관하는 단계와,
    메모리테이블을 내장하여 버스트랜잭션이 로컬메모리영역인지 원격메모리영역인지를 판단하는 단계와,
    읽혀진 디렉토리의 내용을 빠른 시간에 비교하여 그 결과를 프로세서버스 상에 구동할 수 있도록 스누핑정보를 저장하고 있는 단계와,
    로컬메모리의 상태를 가지고 있는 로컬디렉토리를 제어하고 또한 로컬디렉토리의 내용을 읽거나 써 넣는 단계와,
    원격메모리의 상태를 가지고 있는 원격디렉토리를 제어하고 또한 원격디렉토리의 내용을 읽거나 써 넣는 단계와,
    로컬메모리의 데이터가 여러 노드에 의해 공유되는지 혹은 다른 노드에 데이터가 있는지에 관한 로컬메모리상태를 표시하는 단계와,
    원격메모리의 데이터가 여러 노드에 의해 공유되는지 혹은 자신의 노드에 데이터가 있는지에 관한 원격메모리상태를 표시하는 단계 및,
    상호연결망과 연결되어 연결망의 프로토콜에 맞게 동작하여 노드간의 정보를 교환하는 단계를 포함하는 것을 특징으로 하는 버스스누핑방법.
  10. 제9항에 있어서,
    프로세서버스에서 파이프라인 형태로 연속적으로 진행되는 트랜잭션에 대하여 버스의 성능을 그대로 유지할 수 있게 큐의 구조로 버스스누핑을 수행하는 것을특징으로 하는 버스스누핑방법.
  11. 제9항 또는 제10항에 있어서,
    프로세서의 트랜잭션의 판단 및 스누핑을 신속하게 수행하기 위하여 상기 메모리테이블의 구조를 로컬메모리영역과 원격메모리영역으로 구분하는 것을 특징으로 하는 버스스누핑방법.
KR10-2000-0004128A 2000-01-28 2000-01-28 캐시부착식 비균등분포적 메모리접근형병렬컴퓨터시스템의 캐시일관성을 유지하기 위한버스스누핑장치 및 방법 KR100371140B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2000-0004128A KR100371140B1 (ko) 2000-01-28 2000-01-28 캐시부착식 비균등분포적 메모리접근형병렬컴퓨터시스템의 캐시일관성을 유지하기 위한버스스누핑장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2000-0004128A KR100371140B1 (ko) 2000-01-28 2000-01-28 캐시부착식 비균등분포적 메모리접근형병렬컴퓨터시스템의 캐시일관성을 유지하기 위한버스스누핑장치 및 방법

Publications (2)

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

Family

ID=19642265

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0004128A KR100371140B1 (ko) 2000-01-28 2000-01-28 캐시부착식 비균등분포적 메모리접근형병렬컴퓨터시스템의 캐시일관성을 유지하기 위한버스스누핑장치 및 방법

Country Status (1)

Country Link
KR (1) KR100371140B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100813789B1 (ko) * 2005-03-07 2008-03-13 후지쯔 가부시끼가이샤 어드레스 스누프 방법 및 멀티프로세서 시스템
CN116962259A (zh) * 2023-09-21 2023-10-27 中电科申泰信息科技有限公司 一种基于监听-目录两层协议的一致性处理方法及系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101416248B1 (ko) * 2007-05-04 2014-07-07 삼성전자 주식회사 데이터 처리장치 및 그 데이터 처리방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100253201B1 (ko) * 1997-10-29 2000-04-15 구자홍 분산공유 메모리구조를 갖는 시스템의 캐시 동일성 유지 제어기

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100813789B1 (ko) * 2005-03-07 2008-03-13 후지쯔 가부시끼가이샤 어드레스 스누프 방법 및 멀티프로세서 시스템
CN116962259A (zh) * 2023-09-21 2023-10-27 中电科申泰信息科技有限公司 一种基于监听-目录两层协议的一致性处理方法及系统
CN116962259B (zh) * 2023-09-21 2024-02-13 中电科申泰信息科技有限公司 一种基于监听-目录两层协议的一致性处理方法及系统

Also Published As

Publication number Publication date
KR100371140B1 (ko) 2003-02-07

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
US7469321B2 (en) Software process migration between coherency regions without cache purges
KR100545951B1 (ko) 최적화된 입/출력 애플리케이션을 위한 분산된 판독 및기입 캐싱 구현
US8171230B2 (en) PCI express address translation services invalidation synchronization with TCE invalidation
KR100194253B1 (ko) 메시 데이터 코히어런시 프로토콜 이용 방법 및 멀티프로세서 시스템
EP0533430B1 (en) Multiple processor computer system
KR100371844B1 (ko) 데이타처리시스템
EP1311956B1 (en) Method and apparatus for pipelining ordered input/output transactions in a cache coherent, multi-processor system
US6463510B1 (en) Apparatus for identifying memory requests originating on remote I/O devices as noncacheable
US20090240894A1 (en) Method and aparatus for the synchronization of distributed caches
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
IL142265A (en) Data processing system with uneven access to memory (NUMA) that precedes a call request for a remote processing industry on an approximate basis
JPH11506852A (ja) 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減
JPH10320283A (ja) マルチプロセッサ・データ処理システム内でキャッシュ・コヒーレンシを維持するキャッシュ・コヒーレンシ・プロトコルを提供する方法及び装置
JP2000250882A (ja) 不均等メモリ・アクセス・システム内で無効化トランザクションの衝突によって生じるライブロックを避けるための方法およびシステム
US5987544A (en) System interface protocol with optional module cache
US20070073977A1 (en) Early global observation point for a uniprocessor system
US5765195A (en) Method for distributing interprocessor interrupt requests via cache memory coherency mechanisms
KR100322223B1 (ko) 대기행렬및스누프테이블을갖는메모리제어기
US6098113A (en) Apparatus and method for address translation and allocation for a plurality of input/output (I/O) buses to a system bus
KR100371140B1 (ko) 캐시부착식 비균등분포적 메모리접근형병렬컴퓨터시스템의 캐시일관성을 유지하기 위한버스스누핑장치 및 방법
US7328310B2 (en) Method and system for cache utilization by limiting number of pending cache line requests
EP0533428B1 (en) Method and apparatus for operating a computer system

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