KR100308323B1 - 공유된 개입 지원을 가지는 비균등 메모리 액세스 데이터처리 시스템 - Google Patents

공유된 개입 지원을 가지는 비균등 메모리 액세스 데이터처리 시스템 Download PDF

Info

Publication number
KR100308323B1
KR100308323B1 KR1019990058293A KR19990058293A KR100308323B1 KR 100308323 B1 KR100308323 B1 KR 100308323B1 KR 1019990058293 A KR1019990058293 A KR 1019990058293A KR 19990058293 A KR19990058293 A KR 19990058293A KR 100308323 B1 KR100308323 B1 KR 100308323B1
Authority
KR
South Korea
Prior art keywords
processor
cache
cache line
node
layer
Prior art date
Application number
KR1019990058293A
Other languages
English (en)
Other versions
KR20000052493A (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 포만 제프리 엘
Publication of KR20000052493A publication Critical patent/KR20000052493A/ko
Application granted granted Critical
Publication of KR100308323B1 publication Critical patent/KR100308323B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration

Abstract

비균등 메모리 액세스(Non-Uniform Memory Access; NUMA) 컴퓨터 시스템은 서로 연결된 제1 처리 노드 및 제2 처리 노드를 포함한다. 제1 처리 노드는 시스템 메모리와, 각각 연관된 캐시 계층을 가지는 제1 처리기 및 제2 처리기를 포함한다. 제2 처리 노드는 적어도 제3 처리기와 시스템 메모리를 포함한다. 제1 처리기의 캐시 계층이 캐시 라인의 비변경된 복사본을 보유하고 제3 처리기로부터 캐시 라인에 대한 요구를 수신하는 경우, 제1 처리기의 캐시 계층은 요구한 캐시 라인을 제3 처리기에 제공하고 캐시 라인 복사본을 최근의 일관성 상태로 유지하며, 이 상태로부터 제1 처리기의 캐시 계층은 이후 요구에 따라 캐시 라인을 제공할 수 있다.

Description

공유된 개입 지원을 가지는 비균등 메모리 액세스 데이터 처리 시스템 {NON-UNIFORM MEMORY ACCESS (NUMA) DATA PROCESSING SYSTEM HAVING SHARED INTERVENTION SUPPORT}
본 발명은 일반적으로 데이터 처리 방법 및 시스템에 관한 것으로서, 특히, 비균등 메모리 액세스(Non-uniform memory access; NUMA) 데이터 처리 시스템 내에서의 데이터 처리에 관한 것이다. 보다 구체적으로, 본 발명은 공유된 개입에 의하여 요구된 데이터를 공급하는 NUMA 데이터 처리 시스템에서의 NUMA 데이터 처리 시스템 및 방법에 관한 것이다.
탠덤 방식으로 연결된 복수의 개별 프로세서들의 처리 능력을 이용하여 컴퓨터 성능을 향상시킬 수 있다는 것은 잘 알려진 컴퓨터 기술이다. 다중 처리기 (multi-processor; MP) 컴퓨터 시스템은 다수의 상이한 토폴로지(topology)를 사용하여 설계될 수 있으며, 그러한 여러가지 설계들 중 어떤 것은 각 애플리케이션 성능 요구 사항과 소프트웨어 환경에 따라 특정 애플리케이션에 보다 더 적합할 수 있다. 가장 보편적인 MP 컴퓨터 토폴로지 중의 하나인 대칭적 다중 처리기 (symmetric multi-processor; SMP) 구성에서 다수의 처리기들은 시스템 메모리와 입출력 서브시스템 등과 같은 공통 자원(common resource)을 공유하고, 상기 공통 자원들은 전형적으로 공유 시스템 인터커넥트(shared system interconnect)에 연결되어 있다. 이와 같은 컴퓨터 시스템들은 대칭적이라 칭해지는데, 그 이유는 SMP 컴퓨터 시스템의 모든 처리기들은 이상적으로 공유 시스템 메모리에 저장된 데이터에 대하여 동일한 액세스 레이턴시(access latency)를 가지기 때문이다.
비록 SMP 컴퓨터 시스템이 상대적으로 단순한 처리기(inter-processor) 사이의 통신과 데이터 공유 방법론들의 사용을 허용하지만, SMP 컴퓨터 시스템은 제한된 확장성을 갖는다. 환언하면, 통상의 SMP 컴퓨터 시스템의 성능이 확장을 통하여 향상될 수 있다고 기대되더라도 (즉, 처리기등의 추가), 고유 버스, 메모리, 및 입출력 대역폭의 제한때문에 상기 공유 자원의 사용이 최적화되는 구현 가능한 크기 이상으로 SMP를 확장하게 되면 확장에 따르는 잇점이 줄어든다. 따라서, 시스템의 확장성이 증가함에 따라, SMP 토폴로지 자체는 대역폭 제한, 특히 시스템 메모리에 있어서 어느 정도 손실을 보게 된다. 또한 SMP 컴퓨터 시스템은 제조 효율적인 면에서 보더라도 확장성이 좋지 않다. 예를 들어, 몇몇 컴포넌트들이 단일처리기와 작은 규모의 SMP 컴퓨터 시스템에 사용할 수 있게 최적화되더라도, 그러한 컴포넌트들은 큰 규모의 SMP 컴퓨터 시스템에 사용하기에는 종종 비효율적일 수 있다. 역으로, 큰 규모의 SMP 컴퓨터 시스템용으로 설계된 컴포넌트들은 비용 측면에서 볼 때 작은 시스템에서 사용하기에는 실용적이지 못하다.
결국, NUMA로 알려진 MP 컴퓨터 시스템 토폴로지가 다소 복잡하기는 하지만 SMP 컴퓨터 시스템의 여러가지 제한성을 해결하는 대체 설계법으로 출현하였다. 전형적인 NUMA 컴퓨터 시스템은 상호 연결된 다수의 노드를 포함하며, 각각의 노드는 하나 이상의 처리기와 하나의 로컬 '시스템' 메모리를 포함한다. 그와 같은 컴퓨터 시스템들은, 각각의 처리기가 원거리 노드에 있는 시스템 메모리에 저장된 데이터에 관한 것보다 로컬 노드에 있는 시스템 메모리에 저장된 데이터에 대하여 더 낮은 액세스 레이턴시를 갖기 때문에, 비균등 메모리 액세스를 갖는다고 한다. NUMA 시스템은, 데이터 일관성이 서로 다른 노드에 있는 캐시 사이에서 유지되는지의 여부에 따라, 비일관성 또는 캐시 일관성으로 분류된다. 캐시 일관성(cache coherency) NUMA (CC-NUMA) 시스템이 복잡한 것은, 하드웨어가 각 노드에 있는 캐시 메모리와 시스템 메모리의 여러가지 레벨 사이뿐 만 아니라 서로 다른 노드에 있는 캐시와 시스템 메모리 사이에 있는 데이터 일관성을 유지하기 위하여 추가로 통신을 필요로 하는 데에 주로 기인한다. 그러나, NUMA 컴퓨터 시스템에 있는 각각의 노드는 보다 작은 SMP 시스템으로 구현될 수 있기 때문에, NUMA 컴퓨터 시스템은 종래 SMP 컴퓨터 시스템들의 확장성 한계를 극복한다. 따라서, 각 노드에 있는 공유 컴포넌트들은 단 몇 개의 처리기만의 사용을 위하여 최적화될 수 있고, 전체 시스템은 비교적 낮은 레이턴시를 유지하면서도 큰 확장 병행성의 효용성에 따르는 이익을 얻을 수 있다.
CC-NUMA 컴퓨터 시스템에 대한 주 관심사는, 노드를 연결시키는 인터커넥트를 통하여 전송되는 통신 트랜잭션(transaction)과 연관된 레이턴시가 있다. 특히, 가장 통상적인 트랜잭션인 판독 트랜잭션은 원거리 시스템 메모리에 상주하는 데이터를 향할 때, 로컬 시스템 메모리에 상주하는 데이터를 향하는 판독 트랜잭션과 비교하여 2 배의 레이턴시를 가질 수 있다. 로컬 인터커넥트에 전송된 판독 트랜잭션과 대비하여 노드 인터커넥트에 전송된 판독 트랜잭션과 연관된 레이턴시가 비교적 높기 때문에, 상기와 같은 원거리 판독 트랜잭션을 감소시키고 노드 인터커넥트를 거쳐 전달된 판독 트랜잭션의 수를 감소시키는 것이 유용하고 바람직하다.
본 발명의 목적은 공유 개입을 지원하여 비균등 메모리 액세스 (NUMA) 컴퓨터 시스템에 있는 판독 요구의 개수와 레이턴시를 줄이는 것이다.
도 1은 본 발명에 따른 NUMA 컴퓨터 시스템의 실시예를 예시하는 도면.
도 2는 도 1에 도시한 노드 제어기의 상세 블록도.
도 3은 원거리 처리 노드로부터 수신된 판독 요구에서 요구된 캐시 라인이 공유 개입에 의하여 목적 처리 노드에서 제공되는 NUMA 컴퓨터 시스템의 예시적인 처리 시나리오에 대한 도면.
NUMA 컴퓨터 시스템은 서로 연결된 제1 처리 노드와 제2 처리 노드를 포함한다. 제1 처리 노드는 시스템 메모리와, 각각 연관된 캐시 계층(associated cache hierarchy)을 가지는 제1 및 제2 처리기를 포함한다. 제2 처리 노드는 적어도 제3 처리기와 시스템 메모리를 포함한다. 제1 처리기의 캐시 계층이 캐시 라인의 비변경 복사본(unmodified copy)을 보유하고 제3 처리기로부터 캐시 라인에 대한 요구를 수신하는 경우, 제1 처리기의 캐시 계층은 요구된 캐시 라인을 제3 처리기에 제공하고 캐시 라인의 복사본을 최근 일관성 상태(Recent coherency state)로 유지하며, 이 상태로부터 제1 처리기의 캐시 계층은 이후 요구에 따라 캐시 라인을 제공할 수 있다.
이하에서는 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다.
시스템 개요
다수의 도면 특히 도 1에 본 발명에 따른 NUMA 컴퓨터 시스템의 실시예가 예시되어 있다. 예시한 실시예는 예를 들어 워크스테이션, 서버, 또는 메인프레임 컴퓨터로 구현할 수 있다. 예시한 것과 같이, NUMA 컴퓨터 시스템(6)은 노드 인터커넥트(22)에 의하여 상호 연결된 다수(N≥2)의 처리 노드(8a-8n)를 포함한다. 각각의 처리 노드(8a-8n)는 M 개(M≥0)의 처리기(10), 로컬 인터커넥트(16), 및 메모리 제어기(17)를 통하여 액세스되는 시스템 메모리(18)를 포함한다. (필수적인 것은 아니지만) 바람직하게 처리기들(10a-10m)은 동형이며 뉴욕 아몽크 소재의 International Business Machine(IBM)사의 파워PC 계열의 처리기를 포함할 수 있다. 전체가 처리기 코어(12)라 표시된 레지스터, 인스트럭션 플로우 로직, 및 프로그램 인스트럭션을 실행하는 실행 유니트에 더하여, 각각의 처리기(10a-10m)는 시스템 메모리(18)로부터 연관 처리기 코어(12)로 데이터를 전송하는데 사용되는 온칩(on-chip) 캐시 계층을 추가로 포함한다. 각각의 캐시 계층(14)은 적어도 제1 레벨의 캐시를 포함하는데, 예를 들어, 각각 8-32 킬로바이트(KB)와 1-16 메가바이트(MB)의 저장 능력을 가지는 제1 레벨(L1)의 캐시와 제2 레벨(L2)의 캐시를 포함할 수 있다. 통상적으로, 상기와 같은 캐시들은 선택된 캐시 라인 대체 계획과 일관성 프로토콜을 구현하는 캐시 제어기에 의하여 관리된다. 본 개시에서, 각각의 처리기(10)와 그와 연관된 캐시 계층(14)은 하나의 스누퍼(snooper)로 간주된다.
각각의 처리 노드(8a-8n)는 로컬 인터커넥트(16)와 노드 인터커넥트(22) 사이에 연결된 노드 제어기(20)를 추가로 포함한다. 각각의 노드 제어기(20)는 적어도 2 개의 기능을 수행함으로서 원격 처리 노드(8)에 대한 로컬 에이전트 구실을 한다. 첫째, 각각의 노드 제어기(20)는 연관된 로컬 인터커넥트(16)를 스누핑하고, 로컬 통신 트랜잭션(가령, 판독 요구)이 원격 처리 노드(8)에 용이하게 전달되도록 한다. 둘째, 각각의 노드 제어기(20)는 노드 인터커넥트(22)에 있는 통신 트랜잭션을 스누핑하고 연관된 로컬 인터커넥트(16)에 있는 관련 통신 트랜잭션을 마스터링한다. 각 로컬 인터커넥트(16)에서의 통신은 중재기(arbiter: 24)에 의하여 제어된다. 중재기(24)는, 하기에 추가로 언급된 것과 같이, 처리기(10)에 의하여 발생된 버스 요구 신호에 기초하여 로컬 인터커넥트(16)에 대한 액세스를 통제하고, 로컬 인터커넥트(16)에 있는 스누핑된 통신 트랜잭션에 대한 일관성 응답을 컴파일한다.
로컬 인터커넥트(16)는 메자닌(mezzanine) 버스 브리지(26)를 통하여 메자닌 버스(30)에 연결되고, 상기 버스는, 예를 들어, PCI(Peripheral Component Interconnect) 로컬 버스로 구현될 수 있다. 메자닌 버스 브리지(26)는 저(low) 레이턴시 경로와 고(high) 대역폭 경로를 공급하는데, 상기 저 레이턴시 경로를 통하여 처리기(10)는 버스 메모리 및/또는 입출력 어드레스 공간에 매핑(mapping)되는 입출력 디바이스(32)와 저장 디바이스(34) 중 임의의 디바이스에 직접 액세스하고, 상기 고 대역폭 경로를 통하여 입출력 디바이스(32)와 저장 디바이스(34)는 시스템 메모리(18)에 액세스 할 수 있다. 예를 들어, 입출력 디바이스(32)는 디스플레이 디바이스, 키보드, 그래피컬 포인터, 및 외부 네트워크 또는 부속 디바이스(attached device)에 연결하기 위한 직렬 및 병렬 포트를 포함할 수 있다. 한편, 저장 디바이스(34)는 운영 체제와 응용 소프트웨어를 비휘발적으로 저장하는 광 디스크 또는 자기 디스크를 포함할 수 있다.
메모리 구조
NUMA 컴퓨터 시스템(6)의 모든 처리기(10)는 하나의 물리적 메모리 공간을 공유하는데, 이는 각각의 물리적 어드레스가 하나의 시스템 메모리(18)에 있는 오직 하나의 위치와 연관되어 있다는 것을 의미한다. 따라서, 일반적으로 NUMA 컴퓨터 시스템(6)의 어떤 처리기(10)라도 일반적으로 액세스 할 수 있는 시스템 메모리의 전체 콘텐트는 시스템 메모리(18) 사이에서 파티션된 것으로 볼 수 있다. 예를 들어, 4 개의 처리 노드(8)를 가지는 본 발명의 실시예에서 NUMA 컴퓨터 시스템은 범용 메모리 영역과 예약 영역을 포함하여 16 기가바이트(GB)의 물리적 어드레스 공간을 가질 수 있다. 범용 메모리 영역은 500 MB의 세그먼트들로 나누어지고, 4 개의 처리 노드(8) 각각은 4번째 세그먼트마다 할당된다. 대략 2 GB를 포함할 수 있는 예약 영역은 시스템 제어, 주변 메모리, 및 처리 노드(8) 각각에 할당되는 입출력 영역을 포함한다.
본 발명의 설명을 위하여, 시스템 메모리(18)에 특정 데이터를 저장하는 처리 노드(8)를 해당 데이터의 홈 노드(home node)라 하고, 역으로, 기타 처리노드(8a-8n)들을 특정 테이터에 관하여 원격 노드(remote node)라 한다.
메모리 일관성
각 시스템 메모리(18)에 저장된 데이터는 NUMA 컴퓨터 시스템(6) 내의 어떤 처리기(10)에 의해서도 요구 받고, 액세스되고, 변경될 수 있기 때문에, NUMA 컴퓨터 시스템(6)은 캐시 일관성 프로토콜을 구현하여 동일한 처리 노드에 있는 캐시 사이의 일관성과 서로 다른 처리 노드에 있는 캐시 사이의 일관성을 유지시키도록 한다. 따라서, NUMA 컴퓨터 시스템(6)은 CC-NUMA 컴퓨터 시스템으로 분류된다. 구현된 특정 캐시 일관성 프로토콜은 구현물에 종속적이지만, 본 발명의 실시예에서는 잘 알려진 변경(Modified), 배타(Exclusive), 공유(Shared), 및 무효(Invalid) (MESI) 프로토콜에 5번째의 최근(Recent) 상태를 포함시킨 변형된 형태를 포함한다. 이후로 다음과 같이 가정한다, 즉, 캐시 계층(14)과 중재기(24)는 종래의 R-MESI 프로토콜을 구현하고, 노드 제어기(20)는 M, S, I 상태를 인식하고 E 상태는 M 상태에 통합(merge)되었다고 간주하고 R 상태는 S 상태에 통합되었다고 간주한다. 즉, 데이터가 실제로 변경되었는지에 상관없이, 노드 제어기(20)는 원격 캐시에 의하여 배타적으로 보유된 데이터가 변경되었다고 가정하고, 원격으로 보유된 데이터에 대해 S와 R 상태를 구분하지 않는다.
인터커넥트 구조
로컬 인터커넥트(16)와 노드 인터커넥트(22)는 각각 임의의 버스 기반의 동보(broadcast) 구조, 스위치 기반의 동보 구조, 또는 스위치 기반의 비동보 구조를 하여 구현될 수 있다. 그러나, 본 실시예에서, 적어도 노드 인터커넥트(22)는 IBM사가 개발한 6xx 통신 프로토콜에 의하여 통제되는 스위치 기반의 비동보 인터커넥트로 구현된다. 로컬 인터커넥트(16)와 노드 인터커넥트(22)는 트랜잭션이 나누어지는 것을 허용하는데, 이것은 통신 트랜잭션을 포함하는 데이터 유지(tenure)와 어드레스 사이에 어떤 고정된 시간 관계도 존재하지 않는다는 것과, 데이터 패킷은 연관된 어드레스 패킷과 다르게 요구될 수 있다는 것을 의미한다. 통신 트랜잭션을 파이프라이닝(pipelining)함으로서 로컬 인터커넥트(16)와 노드 인터커넥트(22)의 사용이 바람직하게 향상되며, 이로 인하여 각각의 수신측으로부터 일관성 응답을 수신하는 이전 통신 트랜잭션의 마스터 이전에 후속 통신 트랜잭션이 제공된다.
구현된 인터커넥트 구조의 타입 또는 타입들에 상관 없이, 적어도 3 가지 타입의 '패킷(여기에서 패킷은 일반적으로 정보의 개별 유니트를 일컫는다.)' -어드레스, 데이터, 및 일관성 응답- 이 노드 인터커넥트(22)를 통하여 처리 노드(8) 사이에 정보를 전송하고 로컬 인터커넥트(16)를 통하여 스누퍼 사이에 정보를 전달하기 위하여 사용된다. 표 1과 표 2에 어드레스와 데이터 패킷에 관련된 필드 및 정의에 대한 요약이 설명된다.
필드 명 설명
어드레스<0:7> 일관성, 라이트 스루(write thru), 및 방지용 통신 트랜잭션의 특성을 정의하는 변경자
어드레스<8:15> 통신 트랜잭션 내의 모든 패킷을 식별하기 위하여 사용되는 태그
어드레스<16:63> 요구에 있는 물리적, 가상적 또는 입출력 어드레스를 가리키는 어드레스 부분
A패리티<0:2> 어드레스 비트<0:63>에 대한 패리티를 가리킨다.
TDescriptors 통신 트랜잭션의 크기와 타입을 가리킨다.
필드 명 설명
데이터<0:127> 판독 및 기록 트랜잭션용 위한 데이터
데이터 패리티<0:15> 데이터 라인<0:127>에 대한 패리티를 가리킨다.
DTag<0:7> 데이터 패킷을 어드레스 패킷과 매칭시키는데 사용되는 태그
DValid<0:1> 유효한 정보가 데이터와 DTag 필드에 있는지 가리킨다.
표 1과 표 2에 나타났듯이, 수취 노드 또는 스누퍼가 각각의 패킷이 속하는 통신 트랜잭션을 결정하도록 하기 위해, 통신 트랜잭션의 패킷 각각은 트랜잭션 태그에 의하여 식별된다. 당업자는, 추가 플로우 제어 로직 및 이와 연관된 플로우 제어 신호들이 한정된 통신 자원의 사용을 조절하는데 사용될 수 있다는 것을 안다.
각각의 처리 노드(8)에서, 상태 및 일관성 응답은 각각의 스누퍼와 로컬 중재기(24) 사이에서 통신된다. 상태와 일관성 통신에 사용되는 로컬 인터커넥트 (16)에 있는 신호 라인들이 다음의 표 3에 요약되어 있다.
신호명 설명
AStatOut<0:1> 각각의 버스 수신기에 의하여 가정된 인코딩된 신호로서 흐름 제어 또는 오류 정보를 중재기에 나타낸다.
AStatIn<0:1> 버스 수신기에 의하여 가정된 AStatOut 신호들을 대조(tally)하는 데 따라 중재기에 의하여 가정된 인코딩된 신호.
ARespOut<0:2> 각각의 버스 수신기에 의하여 가정된 인코딩된 신호로서 중재기에 일관성 정보를 나타낸다.
ARespIn<0:2> 버스 수신기에 의하여 가정된 ARespOut 신호들을 대조하는 데 따라 중재기에 의하여 가정된 인코딩된 신호.
바람직하게, 로컬 인터커넥트(16)의 AResp 및 AStat 라인을 통하여 전송된 상태 및 일관성 응답은, 연관된 어드레스 패킷과 고정되고 프로그램 가능한 타이밍 관계를 갖는다. 예를 들어, AStatOut 보트(vote)는 각각의 스누퍼가 로컬 인터커넥트(16)에 전송된 어드레스 패킷을 성공적으로 수신하였는지 여부를 사전에 미리나타내는 표시를 제공하며, 어드레스 패킷의 수신 이후의 제2 주기에 요구된다. 중재기(24)는 AStatOut 보트(vote)를 컴파일하고, 고정되고 프로그램 가능한 수의주기 이후에 (가령 1 주기) AStatIn 보트를 발행한다. 가능한 AStat 보트가 다음 표 4에 요약되어 있다.
AStat 보트(vote) 의미
널(Null) 아이들(idle)
애크(Ack) 스누퍼에 의해 수납된 트랜잭션
오류(Error) 트랜잭션에서 검출된 패리티 오류
재시도(Retry) 통상, 플로우 제어용 재시도 트랜잭션
AStatIn 기간 이후에, ARespOut 보트는 고정된 프로그램 가능한 수의 주기(가령, 2 주기) 이후 요구된다. 또한 중재기(24)는 바람직하게는 다음 주기에 각 스누퍼의 ARespOut 보트를 컴파일하고 ARespIn 보트를 전달한다. 가능한 AResp 보트는 바람직하게 표 5에 나타난 일관성 응답을 포함한다.
일관성 응답 의미
재시도 요구 소스는, 대개 흐름 제어의 이유로 트랜잭션을 재시도해야 한다.
변경된 개입 라인은 캐시에서 변경되고 캐시에서 요구기로 제공될 것이다.
공유된 개입 라인은 캐시에서 변경되지 않고 (공유 가능하며), 캐시에서 요구기로 제공될 것이다.
공유(Shared) 라인은 캐시에서 공유 상태를 유지한다.
널(Null) 라인은 캐시에서 무효하다(invalid).
리런(ReRun) 스누핑된 요구는 레이턴시가 길고, 요구 소스는 인스트럭션을 받아 추후에 트랜잭션을 재발행한다.
리런(ReRun) AResp 보트는 대개 노드 제어기(20)에 의하여 발행되고, 스누핑된 요구가 긴 레이턴시를 가지며 (가령, 요구는 처리기(10) 또는 시스템 메모리 (18)에 의해 원격 처리 노드(8)에서 서비스 될 것이다.), 요구 소스는 추후에 트랜잭션을 재발행하도록 인스트럭트될 것임을 나타낸다. 따라서, 재시도 Aresp 보트와 대비되어, 리런은 리런을 보트한 트랜잭션의 수취자(recipient)가 (트랜잭션의 발기자(originator)가 아님.) 통신 트랜잭션이 추후에 재발행되도록 하는데 책임을 지도록 한다.
노드 제어기
도 2는 도 1의 NUMA 컴퓨터 시스템(6)에서 노드 제어기(20)의 상세 블록도를 예시한다. 도 2에 도시한 대로, 로컬 인터커넥트(16)와 노드 인터커넥트(22) 사이에 연결된 각각의 노드 제어기(20)는 트랜잭션 수신 유니트(transaction receive unit; TRU)(40), 트랜잭션 송신 유니트(transaction send unit; TSU)(42), 데이터 수신 유니트(data receive unit; DRU)(44), 및 데이터 송신 유니트(data send unit; DSU)(46)를 포함한다. 예를 들어, 트랜잭션 수신 유니트(TRU)(40), 트랜잭션 송신 유니트(TSU)(42), 데이터 수신 유니트(DRU)(44), 및 데이터 송신 유니트 (DSU)(46)는 필드 프로그래머블 게이트 어레이(field programmable gate array; FPGA) 또는 응용 주문형 집적회로(application specific integrated circuit; ASIC)로 구현 가능하다. 나타낸 바와 같이, 노드 제어기(20)를 통과하는 어드레스와 데이터 경로는 2 분할되며, 어드레스 패킷 및 일관성 패킷은 트랜잭션 수신 유니트(TRU)(40)와 트랜잭션 송신 유니트(TSU)(42)에 의하여 처리되고, 데이터 패킷은 데이터 수신 유니트(DRU)(44)와 데이터 송신 유니트(DSU)(46)에 의하여 처리된다.
노드 인터커넥트(22)의 트랜잭션 플로우 오프(off)를 나타도록 지정된 트랜잭션 수신 유니트(TRU)(40)는 노드 인터커넥트(22)로부터 어드레스 및 일관성 패킷을 받아들이고, 로컬 인터커넥트(16)에 트랜잭션을 발행하고, 응답을 트랜잭션 송신 유니트(TSU)(42)에 보낼 책임이 있다. 트랜잭션 수신 유니트(TRU)(40)는 응답 멀티플렉서(mux: 52)를 포함하는데, 이 응답 멀티플렉서는 노드 인터커넥트(22)로부터 패킷을 수신하고, 선택된 패킷을 버스 마스터(54)와, 트랜잭션 송신 유니트 (TSU)(42)의 일관성 응답 로직(56)에 통과시킨다. 응답 멀티플렉서(52)로부터 어드레스 패킷을 수신한 후, 버스 마스터(54)는 로컬 인터커넥트(16)에 통신 트랜잭션을 착수할 수 있고, 이 통신 트랜잭션의 타입은 수신된 어드레스 패킷에 의하여 나타난 통신 트랜잭션의 타입과 동일하거나 다르다.
트랜잭션 송신 유니트(TSU)(42)는 이름이 뜻하는 바와 같이 노드 인터커넥트 (22)로 흐르는 트랜잭션용 도관(conduit)이고, 노드 인터커넥트(22)로 제공된 완료되어야 할 통신 트랜잭션의 특성을 임시 저장하는 다중 엔트리 펜딩 버퍼(60)를 포함한다. 펜딩 버퍼(60)의 엔트리에 저장된 트랜잭션 특성은 바람직하게 적어도 트랜잭션의 어드레스 (태그를 포함), 트랜잭션의 타입, 및 예상되는 일관성 응답의 수를 포함한다. 각각의 펜딩 버퍼 엔트리는 연관된 상태를 가지고 있고, 이것은 펜딩 버퍼 엔트리가 삭제될 수 있음을 가리키는 널(Null), 또는 트랜잭션이 아직 펜딩 중임을 가리키는 리런으로 설정될 수 있다. 트랜잭션 송신 유니트(TSU)(42)는 어드레스 패킷을 노드 인터커넥트(22)에 제공하는 것 외에, 트랜잭션 수신 유니트(TRU)(40)와 상호 작용하여 메모리 요구 트랜잭션을 처리하고 데이터 수신 유니트 (DRU)(44) 및 데이터 송신 유니트(DSU)(46)에 명령을 발행하여 로컬 인터커넥트 (16)와 노드 인터커넥트(22) 사이의 데이터 전송을 제어한다. 트랜잭션 송신 유니트(TSU)(42)는 또한 일관성 응답 로직(56)을 사용하여 노드 인터커낵트(22)용으로 선택된 (가령 MSI) 일관성 프로토콜을 구현하고, 디렉토리 제어 로직(58)을 사용하여 일관성 디렉토리(50)를 유지시킨다.
일관성 디렉토리(50)는, 로컬 처리 노드가 홈(home) 노드인 원격 노드의 캐시와 일치된(checked out) 데이터(가령, 캐시 라인)의 시스템 메모리 어드레스의 표시(indication)를 저장한다. 각각의 캐시 라인에 대한 어드레스의 표시는, 캐시 라인의 복사본과 캐시 라인의 일관성 상태를 가지는 각각의 원격 처리 노드의 식별자(identifier)와 연관되어 저장된다. 일관성 디렉토리(50)의 엔트리에 대한 가능한 일관성 상태가 표 6에 요약되어 있다.
일관성 디렉토리 상태 로컬 캐시에서 가능한 상태 원격 캐시에서 가능한 상태 의미
변경(Modified; M) I M, E, 또는 I 캐시 라인은 홈 노드의 시스템 메모리에 대하여 원격 노드에서 변경될 수 있다.
공유(Shared; S) R, S, 또는 I R, S, 또는 I 캐시 라인은 원격 노드에서 비배타적으로 보유될 수 있다.
무효(Invalid;I) R, M, E, S, 또는 I I 캐시 라인은 어떤 원격 노드에 의해서도 보유되지 않는다.
펜딩 공유 (Pending-Shared) R, S, 또는 I R, S, 또는 I 캐시 라인은 원격 노드에서 무효화되는 과정에 있다.
펜딩 변경 (Pending-Modified) I M, E, 또는 I 원거리에서 변경될 수 있는 캐시 라인은 홈 노드의 시스템 메모리로 기록되고, 원격 노드에서 무효화가 가능하다.
표 6에 나타낸 바와 같이, 원격 처리 노드에 의하여 보유되는 캐시 라인의 일관성 상태에 대한 지식은 부정확하다. 상기와 같은 부정확성은, 홈 노드의 노드제어기(20)에 통보할 필요 없이 원격 노드에서 보유된 캐시 라인이 R, S, 또는 E에서 I로 변환되거나 또는, E에서 M으로 변환될 수 있는데 기인한다.
판독 요구 처리
처리기 판독 요구의 레이턴시를 감소시키기 위하여, 본 발명은 NUMA 컴퓨터 시스템(6)에서 공유 개입, 즉, 비변경 상태(가령, E 또는 M)로 데이터를 보유하고 있는 캐시에 의한 판독 요구에 응하는 데이터 제공을 지원한다. NUMA 컴퓨터 시스템(6)의 다수의 캐시는 비변경된 동일 캐시 라인을 동시에 보유할 수 있기 때문에, 어떤 캐시가 공유 개입에 의하여 캐시 라인을 제공할지를 조정하기 위한 일련의 메커니즘이 필요하다. 이 메커니즘은 R(Recent) 캐시 일관성 상태이다. 본 발명에 따라, 특정 처리 노드(8)에 있는 오직 하나의 캐시 계층(14)만이 어느 일 시점에서 특정 캐시 라인을 R 상태로 보유할 수 있다. 그러나, 다수의 처리 노드(8)에 있는 캐시 계층(14)은 R 상태에 있는 동일한 캐시 라인을 동시에 보유할 수 있다.
표 7은 판독 미스(miss) 다음에 로컬 인터커넥트(16)에 판독 요구를 발행하는 캐시 계층(14)에서의 상태 전이를 요약한 것이다.
마스터 상태 전이 ARespIn 보트 수신 데이터 소스
I→R 공유 시스템 메모리 또는 노드 제어기
I→E 널(Null) 시스템 메모리 또는 노드 제어기
I→R 공유 개입 스누퍼
I→R 변경된 개입 스누퍼
상기와 같이, 캐시 계층(14)이 ARespIn 공유 일관성 보트를 수신하는 경우, 캐시 계층(14)의 캐시 제어기는, 동일한 처리 노드(8)의 다른 스누퍼는 R 또는 M 상태의 요구된 캐시 라인을 보유하지 않는 것과, 요구된 캐시 라인은 로컬 시스템메모리(18) 또는 원격 시스템 메모리(18)에 의하여 노드 제어기(20)를 통하여 공급된다는 것을 '안다'. 따라서, 요구하는 캐시 계층(14)이 로컬 인터커넥트(16)를 통하여 요구된 캐시 라인을 수신하면, 캐시 계층(14)의 캐시 제어기는 요구된 캐시 라인을 캐싱하고, 일관성 상태를 Recent 상태로 설정하는데, 이것은 요구된 캐시 라인을 보유하는 다수의 로컬 캐시 계층(14) 중 요구하는 캐시 계층(14)이 공유 개입에 의하여 요구된 캐시 라인을 제공하는데 책임이 있음을 의미한다.
요구하는 캐시 계층(14)이 판독 요구에 따른 응답으로 ARespIn 널 일관성 보트를 수신하는 경우, 요구하는 캐시 계층(14)의 캐시 제어기는, 로컬 캐시 계층(14)이 요구된 캐시 라인의 복사본을 저장하지 않는 것과, 요구된 캐시 라인이 로컬 시스템 메모리(18) 또는 원격 시스템 메모리에 의하여 노드 제어기(20)를 통하여 제공되는 것을 '안다'. 요구된 캐시 라인이 요구하는 캐시 계층(14)에 의하여 수신되면, 요구된 캐시 라인은 배타적(Exclusive) 상태로 캐싱된다.
요구하는 캐시 계층(14)이 ARespIn 공유 개입 또는 변경된 개입 보트를 수신하면, 요구하는 처리기(10)의 캐시 제어기는, 요구된 캐시 라인이 동일한 처리 노드(10)에 있는 또 다른 스누퍼에 의하여 제공되고, 요구된 캐시 라인을 수신하면 그것을 R 상태에 저장한다는 것을 '안다'.
판독 요구의 수신에 따른 스누퍼의 캐시 계층의 상태 전이가 표 8에 요약되어 있다. 중요한 점은, 캐시 라인의 일관성 상태에 대한 판독 요구의 영향력은, 판독 요구가 로컬 처리기(10)로부터 수신되었는지 또는 원격 처리 노드(8)에 있는 처리기(10)로부터 로컬 노드 제어기(20)를 통하여 수신되었는지에 달려있다. 판독요구의 소스에 관한 정보는 여러가지 방법으로 스누핑 처리기(10)에 전달될 수 있다. 예를 들어, 노드 제어기(20)는 '원격 요구' 신호를 각 처리기(10)의 캐시 계층(14)에 공급할 수 있는데, 이 신호는 노드 제어기(20)가 원격 처리 노드(8)로부터 판독 요구를 로컬 인터커넥트(16) 상에 제공하였을 때를 가리킨다. 이와 같은 '원격 요구' 신호는 노드 제어기(20)에 의하여 로컬 인터커넥트(16) 상의 판독 요구 트랜잭션 내에 정의된 필드(가령, 트랜잭션 타입)에 삽입되거나, 또는 노드 제어기(20)를 각각의 처리기(10)에 연결시키는 분리된 신호 라인을 통하여 전송될 수 있다.
스누퍼 상태 또는 상태 전이 스누퍼 ARespOut 보트 판독 요구 소스
I 널(Null) 로컬 처리기 또는 노드 제어기
E→S 공유 개입 로컬 처리기
M→S 변경 개입 로컬 처리기
S 공유 로컬 처리기 또는 노드 제어기
R→S 공유 개입 로컬 처리기
E→R 공유 개입 노드 제어기
M→R 변경 개입 노드 제어기
R 공유 개입 노드 제어기
표 8에 도시한 것과 같이, 캐시 계층(14)이 로컬 처리기에 의하여 발행된 판독 요구를 스누핑하고(가령, '원격 요구' 신호는 가정되지 않는다.) 요구된 캐시 라인을 배타적(Exclusive) 상태 또는 최근(Recent) 상태로 보유하는 경우, 스누핑 캐시 계층(14)은 공유 개입 ARespOut 보트를 공급하고, 중재기(24)로부터 공유 개입 ARespOut 보트에 응답하여 로컬 인터커넥트(16)에 요구된 캐시 라인을 제공하고, 요구된 캐시 라인의 복사본의 일관성 상태를 공유 상태로 갱신한다. 이와 유사하게, 캐시 계층(14)이 로컬 처리기(10)에 의하여 발행된 판독 요구를 스누핑하고 요구된 캐시 라인을 변경된(M) 상태로 보유하는 경우, 스누핑 캐시 계층 (14)은 변경된(M) 개입 ARespOut 보트를 제공하고, 변경된 개입 ARespOut 보트 수신에 응답하여 요구된 캐시 라인을 로컬 인터커넥트(16)에 제공하고, 요구된 캐시 라인의 복사본의 일관성 상태를 공유(S) 상태로 갱신한다. 한편, 스누핑 캐시 계층(14)이 로컬 또는 원격 처리기(10)에 의하여 요구된 캐시 라인을 공유(S) 또는 무효(I) 상태로 보유하는 경우, 스누핑 캐시 계층(14)은 적절한 ARespOut 보트(가령, 공유 또는 널)를 공급하지만 데이터를 제공하지는 않는다.
표 8에 도시한 나머지 3 가지 경우는 캐시 라인의 홈 노드 또는 원격 노드에 있는 스누핑 캐시 계층(14)이 캐시 라인에 대한 판독 요구를 로컬 노드 제어기(20)를 통하여 원격 처리 노드(8)로부터 수신할 때 발생한다. 언급한 바와 같이, 판독 요구는 '원격 요구' 신호에 의하여 식별된다. 그와 같은 판독 요구의 수신에 응답하여 스누핑 캐시 계층(14)은 적절한 ARespOut 보트 즉, 요구된 캐시 라인이 배타적(E) 또는 최근(R) 상태에 보유되면, 공유(S) 개입을 공급하고, 요구된 캐시 라인이 변경된(M) 상태에 보유되면 변경된(M) 개입을 공급한다. 이어서, 그 후 (ARespOut 공유 개입 보트가 주어진 경우) ARespIn 공유 개입 신호 또는 (ARespOut 변경된 개입 보트가 주어진 경우) ArespIn 변경된 개입 신호의 수신에 응답하여 스누핑 캐시 계층(14)은 요구된 캐시 라인을 로컬 인터커넥트(16)에 제공한다. 추가로, 스누핑 캐시 계층(14)에서 요구된 캐시 라인의 일관성 상태는, 배타적(E) 또는 변경된(M) 상태인 경우, 최근(R) 상태로 갱신되고, 이미 최근(R) 상태로 설정되었다면 변하지 않는다. 스누핑 캐시 계층(14)에 의하여 로컬 인터커넥트(16)에 제공된 캐시 라인은 로컬 제어기(20)에 의하여 수신되며, 로컬 제어기(20)는 캐시 라인을 노드 인터커넥트(22)를 통하여, 요구하는 처리 노드(8)의 노드 제어기에 전송한다.
표 7과 표 8에 도시되지 않은 상태와 동작에 대한 일관성 상태 변환과 일관성 응답은 최근(R) 상태를 공유(S) 상태처럼 취급하여 종래 MESI 프로토콜에 따라 수행된다.
도 3(A) 및 도 3(B)를 참조하면, NUMA 컴퓨터 시스템(6)의 예시적인 처리 시나리오가 도시되어 있는데, 원격 처리 노드(8)로부터 수신된 판독 요구에 요구된 캐시 라인은 공유 개입에 의하여 목적 처리 노드에 제공된다. 간결함을 위하여, NUMA 컴퓨터 시스템(6)의 단순화한 실시예는 예시한 대로 2 개의 처리 노드 (8a)(8b)를 포함하며, 그 각각은 2 개의 처리기(10a)(10b)를 포함한다.
도 3(A)에 도시한 바와 같이, 처리 노드(8b)의 처리기(10b)는 처리 노드(8a)를 홈(home) 노드로 가지는 캐시 라인을 자신의 캐시 계층(14)에 우선 요구한다. 캐시 계층(14)의 요구 미스에 응답하여 처리기(10b)는 상기 캐시 라인에 대한 판독 요구를 자신의 로컬 인터커넥트(16)에 제공한다. 처리기(10a)는 상기 판독 요구를 스누핑하고 널 ARespOut 보트에 응답하여, 처리기(10a)의 캐시 계층(14)은 요구된 캐시 라인의 복사본을 저장하지 않음을 표시하고, 노드 제어기(20)는 ARespOut 리런(ReRun)을 보팅(vote)한다. 중재기(예시되지 않음.)가 ARespOut 보트를 컴파일하고 ARespIn 리런을 보팅하면, 노드 제어기(20)는 노드 인터커넥트(22)를 통하여 홈 노드(즉, 처리 노드(8a))에 판독 요구를 전송한다.
전송된 판독 요구을 수신한 처리 노드(8a)의 노드 제어기(20)는 판독 요구를 '원격 요구' 신호와 함께 처리 노드(8a)의 로컬 인터커넥트에 전송한다. 처리기 (10b)의 캐시 계층(14)은 요구된 캐시 라인의 복사본을 최근(R) 상태에 저장하기 때문에, 처리기(10b)는 ARespOut 공유 개입 보트를 공급한다. 도3(B)에 도시한 바와 같이, 중재기로부터 ARespIn 공유 개입 보트의 수신에 응답하여 처리기 (10b)는 이어서 요구된 캐시 라인을 로컬 인터커넥트(16)에 공유 개입에 의하여 제공한다. 그러나, 처리기(10b)는 노드 제어기(20)에 의하여 판독 요구가 처리 노드(8b)로부터 전송된 '원격 요구'라고 통지 받았기 때문에, 처리기(10b)의 캐시 계층(14)은 요구된 캐시 라인을 최근(R) 상태로 유지한다.
요구된 캐시 라인을 포함하는 데이터 트랜잭션은 처리 노드(8a)의 노드 제어기(20)에 의하여 수신되고 노드 인터커넥트(22)를 통하여 처리 노드(8b)의 노드 제어기(20)로 전송된다. 처리 노드(8a)의 일관성 디렉토리(50)는, 캐시 라인의 일관성 상태를 불명확한 공유(S) 상태로 갱신하여 캐시 라인이 처리 노드(8b)에 비배타적으로 '확인(checked out)'되었다고 기록한다. 요구된 캐시 라인은 처리 노드 (8b)의 노드 제어기(20)에 의하여 처리기(10b)로 공급되고, 처리기(10b)는 요구된 캐시 라인을 최근(R) 상태로 저장한다. 이와 같은 방법으로, 처리 노드(8a)(8b) 각각의 처리기(10b)는 이어서 캐시 라인에 대한 로컬 및 원격 요구를 계속 서비스한다.
상기 언급한 바와 같이, 본 발명은 노드 간의 판독 요구의 수와 데이터의 공유 개입을 지원하여 판독 요구의 레이턴시를 효과적으로 감소시킨다. 본 발명에따르면, 각각의 처리 노드는 동일한 캐시 라인을 비배타적 최근(R) 상태로 보유하는 스누퍼(가령, 캐시 계층)를 가질 수 있다. 스누퍼는 최근 상태에서 캐시 라인을 제공할 수 있다. 스누퍼가 원격 처리기의 판독 요구에 따라 최근(R), 배타적(E), 또는 변경된(M) 상태로 보유된 캐시 라인의 일관성 상태를 공유(S) 상태로 갱신하는 것을 방지하기 위해, 각각의 스누퍼는 원격 요구 신호에 의하여 그와 같은 요구를 통보 받는다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있다.
본 발명은 데이터의 공유 개입을 지원하여 노드 간의 판독 요구를 효과적으로 감소시키고 판독 요구의 레이턴시를 감소시킨다.

Claims (12)

  1. 서로 연결된 제1 처리 노드 및 제2 처리 노드 - 여기에서 제1 처리 노드는 시스템 메모리와 각각이 연관된 캐시 계층(cache hierarchy)을 가지는 제1 처리기 및 제2 처리기를 포함하고, 제2 처리 노드는 적어도 제3 처리기 및 시스템 메모리를 포함함 -
    를 포함하며,
    상기 제1 처리기의 캐시 계층이 캐시 라인의 비변경 복사본을 보유하고 상기 제3 처리기로부터 상기 캐시 라인에 대한 요구를 수신하는 경우, 상기 제1 처리기의 캐시 계층은 상기 캐시 라인이 상기 제3 처리기의 소스가 되도록 하며, 상기 캐시 라인의 복사본을 상기 제1 처리기의 캐시 계층이 상기 캐시 라인의 소스가 될 수 있는 최근 일관성(Recent coherency) 상태로 유지하는
    컴퓨터 시스템.
  2. 제1항에 있어서,
    상기 제1 처리기의 캐시 계층이 캐시 라인의 변경된 복사본을 보유하고 상기 제3처리기로부터 상기 캐시 라인에 대한 요구를 수신하는 경우, 상기 제1 처리기의 캐시 계층은 상기 캐시 라인이 상기 제3 처리기의 소스가 되도록 상기 캐시 라인의 복사본을 상기 최근 일관성 상태로 유지하는 컴퓨터 시스템.
  3. 제1항에 있어서,
    상기 제1 처리 노드 및 제2 처리 노드는 노드 인터커넥트에 의하여 연결되며;
    상기 제1 처리 노드는 상기 노드 인터커넥트와 제1 처리기 사이에 위치하는 노드 제어기를 포함하고, 상기 노드 제어기는 상기 요구가 다른 처리 노드로부터 오는 것임을 나타내는 표시(indication)와 함께 상기 제1 처리기에 상기 요구를 전송하는
    컴퓨터 시스템.
  4. 제1항에 있어서,
    상기 요구를 수신하기 전에, 상기 제1 처리기의 캐시 계층은 상기 캐시 라인의 비변경된 복사본을 배타적(Exclusive) 상태와 최근(Recent) 상태 중의 하나인 일관성 상태와 연관시키는 컴퓨터 시스템.
  5. 제1항에 있어서,
    상기 제 2 처리 노드는 상기 제3 처리기와 연관된 캐시 계층을 포함하며, 상기 제1 처리기의 캐시 계층과 상기 제 3 처리기의 캐시 계층이 상기 캐시 라인의 복사본을 최근(R) 상태로 동시에 보유하도록 상기 제1 처리기의 캐시 계층이 소스인 상기 캐시 라인의 수신에 응답하여 상기 캐시 계층이 상기 캐시 라인의 복사본을 최근(R) 상태로 저장하는 컴퓨터 시스템.
  6. 제1항에 있어서,
    상기 요구가 판독 요구인 컴퓨터 시스템.
  7. 서로 연결된 제1 처리 노드 및 제2 처리 노드 - 여기에서 제1 처리 노드는 시스템 메모리와 각각이 연관된 캐시 계층(cache hierarchy)을 가지는 제1 처리기 및 제2 처리기를 포함하고, 제2 처리 노드는 적어도 제3 처리기 및 시스템 메모리를 포함함 - 를 포함는 컴퓨터 시스템의 통신 방법에 있어서,
    상기 제1 처리기의 캐시 계층에서 상기 제 1 처리기의 캐시 계층이 복사본을 보유하고 있는 캐시 라인에 대한 요구를 상기 제3 처리기로부터 수신하는 단계; 및
    상기 요구된 캐시 라인의 비변경된 복사본이 상기 제1 처리기의 캐시 계층에 보유되는 경우, 상기 캐시 라인이 상기 제1 처리기의 캐시 계층으로부터 상기 제3 처리기의 소스가 되도록 하고, 상기 제1 처리기의 캐시 계층에 있는 상기 캐시 라인의 복사본을 상기 제1 처리기의 캐시 계층이 상기 캐시 라인의 소스가 될 수 있는 최근(R) 일관성 상태로 유지하는 단계
    를 포함하는 컴퓨터 시스템 통신 방법.
  8. 제7항에 있어서,
    상기 요구된 캐시 라인의 변경된 복사본이 상기 제1 처리기의 캐시 계층에 보유되는 경우, 상기 캐시 라인이 상기 제1 처리기의 캐시 계층으로부터 상기 제3처리기의 소스가 되도록 하고, 상기 제1 처리기의 캐시 계층에 있는 캐시 라인의 상기 복사본을 상기 제1 처리기의 캐시 계층이 상기 캐시 라인의 소스가 될 수 있는 최근(R) 일관성 상태로 유지하는 단계
    를 추가로 포함하는 컴퓨터 시스템 통신 방법.
  9. 제7항에 있어서,
    상기 제1 처리 노드 및 제2 처리 노드는 노드 인터커넥트에 의하여 연결되고, 상기 제1 처리 노드는 상기 노드 인터커넥트와 상기 제1 처리기 사이에 위치하는 노드 제어기를 포함하고,
    상기 통신 방법은,
    상기 노드 제어기가 상기 요구를 수신하고, 상기 요구가 또 다른 처리 노드로부터 온다는 것을 나타내는 표시(indication)와 함께 상기 요구를 상기 노드 제어기로부터 상기 제1 처리기로 전송하는 단계를 추가로 포함하는
    컴퓨터 시스템 통신 방법.
  10. 제7항에 있어서,
    상기 요구를 수신하기 전에, 상기 캐시 라인의 비변경된 복사본을 상기 제1 처리기의 캐시 계층의 배타적(Exclusive) 상태와 최근(Recent) 상태 중 하나인 일관성 상태와 연관시키는 단계를 추가로 포함하는 컴퓨터 시스템 통신 방법.
  11. 제7항에 있어서,
    상기 제2 처리 노드는 상기 제3 처리기와 연관된 캐시 계층을 포함하며,
    상기 통신 방법은 상기 제1 처리기의 캐시 계층이 소스가 되는 캐시 라인의 수신에 응답하여, 상기 제1 처리기의 캐시 계층과 상기 제3 처리기의 캐시 계층이 모두 상기 캐시 라인의 복사본을 상기 최근(R) 상태로 동시에 보유하도록 상기 제3 처리기의 캐시 계층에 상기 캐시 라인의 복사본을 상기 최근(R) 상태로 저장하는 단계
    를 추가로 포함하는 컴퓨터 시스템 통신 방법.
  12. 제7항에 있어서,
    상기 요구를 수신하는 단계가 판독 요구를 수신하는 단계를 포함하는 컴퓨터 시스템 통신 방법.
KR1019990058293A 1998-12-17 1999-12-16 공유된 개입 지원을 가지는 비균등 메모리 액세스 데이터처리 시스템 KR100308323B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/213,997 1998-12-17
US9/213,997 1998-12-17
US09/213,997 US6108764A (en) 1998-12-17 1998-12-17 Non-uniform memory access (NUMA) data processing system with multiple caches concurrently holding data in a recent state from which data can be sourced by shared intervention

Publications (2)

Publication Number Publication Date
KR20000052493A KR20000052493A (ko) 2000-08-25
KR100308323B1 true KR100308323B1 (ko) 2001-11-14

Family

ID=22797377

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990058293A KR100308323B1 (ko) 1998-12-17 1999-12-16 공유된 개입 지원을 가지는 비균등 메모리 액세스 데이터처리 시스템

Country Status (6)

Country Link
US (1) US6108764A (ko)
JP (1) JP3661761B2 (ko)
KR (1) KR100308323B1 (ko)
CN (1) CN1244055C (ko)
CA (1) CA2291401C (ko)
TW (1) TW533353B (ko)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6546429B1 (en) * 1998-09-21 2003-04-08 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that holds and reissues requests at a target processing node in response to a retry
US6266743B1 (en) * 1999-02-26 2001-07-24 International Business Machines Corporation Method and system for providing an eviction protocol within a non-uniform memory access system
US6421775B1 (en) * 1999-06-17 2002-07-16 International Business Machines Corporation Interconnected processing nodes configurable as at least one non-uniform memory access (NUMA) data processing system
US6591348B1 (en) * 1999-09-09 2003-07-08 International Business Machines Corporation Method and system for resolution of transaction collisions to achieve global coherence in a distributed symmetric multiprocessor system
US6591341B1 (en) * 2000-03-31 2003-07-08 Intel Corporation Multilevel cache system and method having a merged tag array to store tags for multiple data arrays
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US20020087765A1 (en) * 2000-12-29 2002-07-04 Akhilesh Kumar Method and system for completing purge requests or the like in a multi-node multiprocessor system
KR100413686B1 (ko) * 2001-07-14 2003-12-31 삼성전자주식회사 모니터의 절전 장치 및 그 제어 방법
US7620954B2 (en) * 2001-08-08 2009-11-17 Hewlett-Packard Development Company, L.P. Mechanism for handling load lock/store conditional primitives in directory-based distributed shared memory multiprocessors
US7302505B2 (en) * 2001-12-24 2007-11-27 Broadcom Corporation Receiver multi-protocol interface and applications thereof
US6922783B2 (en) * 2002-01-16 2005-07-26 Hewlett-Packard Development Company, L.P. Method and apparatus for conserving power on a multiprocessor integrated circuit
US7003631B2 (en) * 2002-05-15 2006-02-21 Broadcom Corporation System having address-based intranode coherency and data-based internode coherency
US6993631B2 (en) * 2002-05-15 2006-01-31 Broadcom Corporation L2 cache maintaining local ownership of remote coherency blocks
US7155572B2 (en) * 2003-01-27 2006-12-26 Advanced Micro Devices, Inc. Method and apparatus for injecting write data into a cache
US8578130B2 (en) * 2003-03-10 2013-11-05 International Business Machines Corporation Partitioning of node into more than one partition
US7334089B2 (en) * 2003-05-20 2008-02-19 Newisys, Inc. Methods and apparatus for providing cache state information
US7216205B2 (en) 2004-01-12 2007-05-08 Hewlett-Packard Development Company, L.P. Cache line ownership transfer in multi-processor computer systems
US7788452B2 (en) * 2004-01-20 2010-08-31 International Business Machines Corporation Method and apparatus for tracking cached addresses for maintaining cache coherency in a computer system having multiple caches
US7457922B2 (en) * 2004-11-20 2008-11-25 International Business Machines Corporation Cache line placement prediction for multiprocessor non-uniform cache architecture systems
US8010682B2 (en) * 2004-12-28 2011-08-30 International Business Machines Corporation Early coherency indication for return data in shared memory architecture
US7461209B2 (en) 2005-12-06 2008-12-02 International Business Machines Corporation Transient cache storage with discard function for disposable data
JP4409619B2 (ja) 2006-02-24 2010-02-03 富士通株式会社 情報処理装置、制御装置および制御方法
EP1988464B1 (en) 2006-02-24 2018-11-21 Fujitsu Ltd. Snoop control method and information processing device
WO2007099583A1 (ja) 2006-02-28 2007-09-07 Fujitsu Limited システムコントローラおよびキャッシュ制御方法
US8606997B2 (en) * 2008-12-23 2013-12-10 Oracle America, Inc. Cache hierarchy with bounds on levels accessed
US8806122B2 (en) 2011-05-23 2014-08-12 International Business Machines Corporation Caching data in a storage system having multiple caches including non-volatile storage cache in a sequential access storage device
US8793436B2 (en) 2011-05-23 2014-07-29 International Business Machines Corporation Cache management of tracks in a first cache and a second cache for a storage
US8799578B2 (en) * 2011-05-23 2014-08-05 International Business Machines Corporation Managing unmodified tracks maintained in both a first cache and a second cache
EP2568386A4 (en) * 2011-09-30 2013-07-24 Huawei Tech Co Ltd PROCESS FOR CACHE ACCESS AND FICTIVE CACHE AGENT
US9552297B2 (en) 2013-03-04 2017-01-24 Dot Hill Systems Corporation Method and apparatus for efficient cache read ahead
US9684455B2 (en) 2013-03-04 2017-06-20 Seagate Technology Llc Method and apparatus for sequential stream I/O processing
US9053038B2 (en) 2013-03-05 2015-06-09 Dot Hill Systems Corporation Method and apparatus for efficient read cache operation
US8930619B2 (en) * 2012-05-29 2015-01-06 Dot Hill Systems Corporation Method and apparatus for efficiently destaging sequential I/O streams
US9158687B2 (en) 2013-03-04 2015-10-13 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
US9152563B2 (en) 2013-03-04 2015-10-06 Dot Hill Systems Corporation Method and apparatus for processing slow infrequent streams
US9298623B2 (en) 2013-09-26 2016-03-29 Globalfoundries Inc. Identifying high-conflict cache lines in transactional memory computing environments
US9292444B2 (en) 2013-09-26 2016-03-22 International Business Machines Corporation Multi-granular cache management in multi-processor computing environments
US9329890B2 (en) 2013-09-26 2016-05-03 Globalfoundries Inc. Managing high-coherence-miss cache lines in multi-processor computing environments
US9086974B2 (en) * 2013-09-26 2015-07-21 International Business Machines Corporation Centralized management of high-contention cache lines in multi-processor computing environments
US9298626B2 (en) 2013-09-26 2016-03-29 Globalfoundries Inc. Managing high-conflict cache lines in transactional memory computing environments
US9925492B2 (en) * 2014-03-24 2018-03-27 Mellanox Technologies, Ltd. Remote transactional memory
US10643700B2 (en) 2015-10-29 2020-05-05 Micron Technology, Inc. Apparatuses and methods for adjusting write parameters based on a write count
SG11201803730TA (en) 2015-11-04 2018-06-28 Samsung Electronics Co Ltd Systems and methods for implementing coherent memory in a multiprocessor system
US10642780B2 (en) 2016-03-07 2020-05-05 Mellanox Technologies, Ltd. Atomic access to object pool over RDMA transport network
US10552367B2 (en) 2017-07-26 2020-02-04 Mellanox Technologies, Ltd. Network data transactions using posted and non-posted operations
US10372638B2 (en) 2017-10-20 2019-08-06 Hewlett Packard Enterprise Development Lp Interconnect agent
US10713169B2 (en) 2018-01-17 2020-07-14 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US10579527B2 (en) 2018-01-17 2020-03-03 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US10387310B2 (en) 2018-01-17 2019-08-20 International Business Machines Corporation Remote node broadcast of requests in a multinode data processing system
US10613996B2 (en) * 2018-05-03 2020-04-07 Arm Limited Separating completion and data responses for higher read throughput and lower link utilization in a data processing network
US11068407B2 (en) 2018-10-26 2021-07-20 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction
US10884740B2 (en) 2018-11-08 2021-01-05 International Business Machines Corporation Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads
US11119781B2 (en) 2018-12-11 2021-09-14 International Business Machines Corporation Synchronized access to data in shared memory by protecting the load target address of a fronting load
US11106608B1 (en) 2020-06-22 2021-08-31 International Business Machines Corporation Synchronizing access to shared memory by extending protection for a target address of a store-conditional request
US11693776B2 (en) 2021-06-18 2023-07-04 International Business Machines Corporation Variable protection window extension for a target address of a store-conditional request

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5673413A (en) * 1995-12-15 1997-09-30 International Business Machines Corporation Method and apparatus for coherency reporting in a multiprocessing system
US5893144A (en) * 1995-12-22 1999-04-06 Sun Microsystems, Inc. Hybrid NUMA COMA caching system and methods for selecting between the caching modes
US5878268A (en) * 1996-07-01 1999-03-02 Sun Microsystems, Inc. Multiprocessing system configured to store coherency state within multiple subnodes of a processing node
US5940864A (en) * 1997-04-14 1999-08-17 International Business Machines Corporation Shared memory-access priorization method for multiprocessors using caches and snoop responses
US5963974A (en) * 1997-04-14 1999-10-05 International Business Machines Corporation Cache intervention from a cache line exclusively holding an unmodified value
US5943685A (en) * 1997-04-14 1999-08-24 International Business Machines Corporation Method of shared intervention via a single data provider among shared caches for SMP bus
US5943684A (en) * 1997-04-14 1999-08-24 International Business Machines Corporation Method and system of providing a cache-coherency protocol for maintaining cache coherency within a multiprocessor data-processing system
US5940856A (en) * 1997-04-14 1999-08-17 International Business Machines Corporation Cache intervention from only one of many cache lines sharing an unmodified value

Also Published As

Publication number Publication date
CA2291401A1 (en) 2000-06-17
JP2000227908A (ja) 2000-08-15
JP3661761B2 (ja) 2005-06-22
US6108764A (en) 2000-08-22
KR20000052493A (ko) 2000-08-25
CA2291401C (en) 2005-04-26
CN1264080A (zh) 2000-08-23
CN1244055C (zh) 2006-03-01
TW533353B (en) 2003-05-21

Similar Documents

Publication Publication Date Title
KR100308323B1 (ko) 공유된 개입 지원을 가지는 비균등 메모리 액세스 데이터처리 시스템
US6115804A (en) Non-uniform memory access (NUMA) data processing system that permits multiple caches to concurrently hold data in a recent state from which data can be sourced by shared intervention
EP1153349B1 (en) Non-uniform memory access (numa) data processing system that speculatively forwards a read request to a remote processing node
US6546429B1 (en) Non-uniform memory access (NUMA) data processing system that holds and reissues requests at a target processing node in response to a retry
US6067603A (en) Non-uniform memory access (NUMA) data processing system that speculatively issues requests on a node interconnect
US7581068B2 (en) Exclusive ownership snoop filter
US6631448B2 (en) Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol
US6275907B1 (en) Reservation management in a non-uniform memory access (NUMA) data processing system
KR100324975B1 (ko) 잠재적인 제3 노드 트랜잭션을 버퍼에 기록하여 통신 대기시간을 감소시키는 비균일 메모리 액세스(numa) 데이터 프로세싱 시스템
JP3629511B2 (ja) 不均等メモリ・アクセス・システムにおいてトランザクションのキャンセルによるデータ損失を避けるための方法およびシステム
US8504779B2 (en) Memory coherence directory supporting remotely sourced requests of nodal scope
US6266743B1 (en) Method and system for providing an eviction protocol within a non-uniform memory access system
KR101072174B1 (ko) 능동적 프리페치들로 향상된 호버 상태를 실시하는 시스템 및 방법
US6085293A (en) Non-uniform memory access (NUMA) data processing system that decreases latency by expediting rerun requests
US10613980B2 (en) Coherence protocol providing speculative coherence response to directory probe

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

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee