KR20070007865A - 효율적인 이홉(two-hop) 캐시 일관성 프로토콜 - Google Patents

효율적인 이홉(two-hop) 캐시 일관성 프로토콜 Download PDF

Info

Publication number
KR20070007865A
KR20070007865A KR1020067022561A KR20067022561A KR20070007865A KR 20070007865 A KR20070007865 A KR 20070007865A KR 1020067022561 A KR1020067022561 A KR 1020067022561A KR 20067022561 A KR20067022561 A KR 20067022561A KR 20070007865 A KR20070007865 A KR 20070007865A
Authority
KR
South Korea
Prior art keywords
node
data
message
peer
home
Prior art date
Application number
KR1020067022561A
Other languages
English (en)
Other versions
KR100880059B1 (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 KR20070007865A publication Critical patent/KR20070007865A/ko
Application granted granted Critical
Publication of KR100880059B1 publication Critical patent/KR100880059B1/ko

Links

Images

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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)

Abstract

본 발명은 홈 노드에서 충돌을 해소하기 위한 멀티 캐시 멀티프로세서 시스템의 분산형 캐시 일관성 프로토콜에 관련된다.
멀티 노드 시스템, 캐시 일관성, 충돌 해소, 디렉토리 방법, 홈 노드

Description

효율적인 이홉(two-hop) 캐시 일관성 프로토콜{AN EFFICIENT TWO-HOP CACHE COHERENCY PROTOCOL}
<관련된 출원들>
본 미국 특허 출원은 이하의 미국 특허 출원:
(1) 2003년 일자로 출원된 "SPECULATIVE DISTRIBUTED CONFLICT RESOLUTION FOR A CACHE COHERENCY PROTOCOL"이라는 제목의 출원 번호 10/XXX,XXX(정리 번호 P13923)
과 관련된다.
<분야>
본 발명은 캐시 메모리들에 관련되고, 더 상세하게는 멀티-캐시 멀티프로세서 시스템의 분산된 충돌 해소에 관련된다.
전자 시스템이 다수의 캐시 메모리를 포함할 때, 가용한 데이터의 유효성이 유지되어야 한다. 이것은 통상적으로 데이터를 캐시 일관성 프로토콜에 따라 다루는 것에 의해 달성된다. 캐시들 및/또는 프로세서들의 개수가 증가함에 따라, 캐시 일관성을 유지하는 것이 복잡해진다.
다수의 구성요소들(예를 들면, 캐시 메모리, 프로세서)이 동일한 데이터 블 록을 요청할 때 다수의 구성요소들 사이의 충돌은 데이터의 유효성을 유지하는 방식으로 해소되어야 한다. 현재의 캐시 일관성 프로토콜들은 통상적으로 충돌 해소를 담당하는 단일 구성요소를 갖는다. 그러나, 시스템의 복잡성이 증가함에 따라, 충돌 해소를 위한 단일 구성요소에 의존하는 것은 전체 시스템 성능을 감소시킬 수 있다.
캐시 일관성을 제공하기 위한 두 가지 기초적인 방법, 스누핑(snooping)(오늘날 종종 SMP(Symmetric MultiProcessing)라 불림) 및 디렉토리들(종종 DSM(Distributed Shared Memory)이 있다. 기본적인 차이점은 캐시 라인의 사본들이 저장된 곳에 대한 정보인 메타 정보(meta-information)에 대한, 배치 및 액세스와 관련이 있다.
캐시들을 스누핑하는 것에 있어서, 정보는 캐시된 사본들 자체와 함께 분산된다. 즉, 임의의 노드가 캐시 라인에 새로운 방식으로 액세스하기 위한 승인을 요청할 때마다 그의 책임을 인식해야 하는 유닛에 의해 캐시 라인의 각각의 유효한 사본이 보유된다. (보통 고정된 위치에 있는) 소정의 장소는 캐시되지 않을 때 데이터가 저장되는 저장소이다. 이러한 위치는 심지어 라인이 캐시될 때도 유효한 사본을 포함할 수 있다. 그러나, 이러한 노드의 위치는 일반적으로 요청 노드들에게 알려지지 않는다 - 요청 노드들은 단순히 요청된 캐시 라인의 주소를 필요한 승인들과 함께 방송(broadcast)하고, 사본을 가질 수 있는 모든 노드는 일관성이 유지되는 것을 보증하기 위해 응답해야 하고, 다른 (피어(peer)) 노드가 응답하지 않으면 캐시되지 않은 사본을 포함하는 노드가 응답한다.
디렉토리 기반 방식들에 있어서, 캐시되지 않은 데이터가 저장되는 고정된 위치 외에, 캐시된 사본들이 어디에 존재하는지를 가리키는 고정된 위치인 디렉토리가 있다. 새로운 방식으로 캐시 라인에 액세스하기 위해, 노드는, 캐시되지 않은 데이터 저장소를 포함하는 일반적으로 동일한 노드인, 디렉토리를 포함하는 노드와 통신하여, 주 저장 사본이 유효할 때 응답 노드가 데이터를 공급할 수 있게 한다. 그러한 노드는 홈 노드(Home node)라고 불린다.
디렉토리는 두 가지 방식으로 분산될 수 있다. 먼저, 주 저장 데이터(캐시되지 않은 저장소)가 종종 노드들 중에 분산되고 그 디렉토리가 동일한 방법으로 분산된다. 두번째로, 라인이 캐시되었는지의 여부와 캐시된 경우 단일 사본이 어디에 존재하는지와 같은 정도의 적은 정보가 홈 노드에 유지되면서 메타 정보 자체가 분산된다. 예를 들면, 캐시된 사본들을 갖는 다른 노드들에 대한 링크들을 유지하는, 캐시된 사본을 포함하는 각 노드와 함께 SCI가 이러한 방식을 사용하여, 완전한 디렉토리를 집합적으로 유지한다.
스누핑 방식들은, 메타 정보가 보유되는 단일한 장소가 없기 때문에, 방송에 의존하고, 따라서 모든 노드들에 각 질의가 통지되어야 하고, 각 노드는 일관성이 유지되고 있다는 것을 보증하기 위한 그의 역할을 담당한다. 이것은, 또 다른 노드가 데이터를 제공하고 있을 때 홈 노드는 응답하지 않는다는 것을 알려주는 중재(intervention) 메시지들을 포함한다.
스누핑 방식들은 응답들이 직접적이고 빠를 수 있다는 장점을 가지지만, 모든 노드가 모든 질의들을 관찰해야 하므로 잘 스케일링되지 않는다. 디렉토리 방 식들은 본래 보다 잘 스케일링 될 수 있지만, 종종 지점 간 통신들에서 세 개의 노드를 수반하는 보다 복잡한 응답들을 요구한다.
본 발명은 유사한 참조번호들이 비슷한 요소들을 나타내는 첨부 도면들에서 한정이 아닌 예로서 예시된다.
도 1은 판독 트랜잭션을 지원하기 위한 프로토콜의 개념적인 예시의 일 실시예를 제공한다.
도 2는 후기입 경쟁 충돌(writeback race conflict)을 지원하기 위한 프로토콜의 개념적인 예시의 일 실시예를 제공한다.
도 3은 두 요청들 사이에서 소유권 요청에 대한 경쟁 충돌을 지원하기 위한 프로토콜의 개념적인 예시의 일 실시예를 제공한다.
도 4는 두 요청들 사이에서 소유권 요청에 대한 지연 충돌을 지원하기 위한 프로토콜의 개념적인 예시의 일 실시예를 제공한다.
도 5는 소스 노드 알고리즘의 방법에 대한 흐름도의 일 실시예이다.
도 6은 홈 노드 알고리즘의 방법에 대한 흐름도의 일 실시예이다.
도 7은 노드의 일 실시예의 블록도이다.
도 8은 멀티프로세서 시스템의 일 실시예이다.
멀티 노드 시스템(multi-node system) 내의 분산형 캐시 일관성 충돌 해소를 위한 기술들이 설명된다. 다음의 기술에서, 설명을 위해, 다수의 특정한 세부사항들이 본 발명의 완전한 이해를 제공하기 위해 제공된다. 그러나 본 기술분야의 당업자에게, 이러한 특정한 세부사항들 없이 본 발명이 실시될 수 있다는 것은 명백할 것이다. 다른 경우들에서, 구조들 및 디바이스들은 본 발명을 모호하게 하는 것을 피하기 위해서 블록도 형태로 도시된다.
이하의 논의는 멀티 노드 시스템 내의 노드들에 관하여 제공된다. 일 실시예에서, 노드는 내부 캐시 메모리, 외부 캐시 메모리 및/또는 외부 메모리를 갖는 프로세서를 포함한다. 대안적인 실시예에서, 노드는 다른 전자 시스템들과 상호 접속된 전자 시스템(예를 들면, 컴퓨터 시스템, 모바일 디바이스)이다. 다른 유형들의 노드 구성도 사용될 수 있다.
이하의 도면들에서 도시된 홈 노드는 요청될 데이터에 대해 홈 노드 역할을 하고, 이것은 요청될 데이터가 캐시되지 않을 때 저장되는 비-캐시 메모리(예를 들면, 주 메모리)와 홈 노드가 연관된다는 것을 의미한다. 예를 들면, 홈 노드는 프로세서, 캐시 메모리 및 RAM(random access memory)이 될 수 있고, 여기서 RAM은 캐시되지 않은 저장 위치를 데이터에 제공한다.
본 발명은 멀티 노드 시스템에서, 분산형 캐시 일관성 충돌 해소를 용이하게 한다. 일 실시예에서, 충돌 해소는 홈 노드에서 해소된다. 하나의 양상에서, 본 발명은 노드들 사이에서 전달되는 메시지들의 개수에 대해 효율적인 충돌 해소 프로토콜을 용이하게 한다. 예를 들면, 노드들은 이하와 같이 분류될 수 있다: 소스 노드, 홈 노드 및 피어 노드(peer node). 본 발명은 소스 노드 및 홈 노드에 대한 프로토콜을 설명한다. 일 실시예에서, 본 발명은 연관된 어플리케이션에 관해 논의되는 피어 노드 프로토콜을 이용한다. 소스 노드에 대한 알고리즘은 도 5와 관련하여 논의될 것이다. 유사하게, 홈 노드에 대한 알고리즘이 도 6과 관련하여 논의될 것이다.
<요청 메시지들>
이하의 메시지들은 요청 노드로부터의 데이터/실행에 대한 요청들이다.
PRIL(Port Read Invalidate Line): 이것은 제공자 노드(provider node)의 데이터 사본이 무효화되는 데이터 세그먼트(segment)의 사본에 대한 요청이다. 이 메시지는 "소유권 요청(request for ownership)"이라고 불릴 수도 있다. 일 실시예에서, PRIL은 홈 노드를 포함하는 모든 노드로 방송된다.
PWL(Port Write Line): 이 메시지는 데이터(예를 들면, 수정된 캐시 라인)가 메모리에 기록되게 하여 후기입 라인(writeback line)이 되게 한다. 이 메시지는 또한 "더티 이빅션(dirty eviction)"이라고 불릴 수도 있다. 일 실시예에서, PWL은 홈 노드로 보내진다.
<응답 메시지들>
이하의 메시지들은 상술한 요청들에 응답하여 피어(즉, 홈 노드가 아닌) 노드들로부터 요청 노드(requesting node)로 보내지는 메시지들이다.
E_DATA(Exclusive Data) - 이 메시지는 응답을 보내는 노드가 요청된 데이터의 배타적 사본을 가질 때 요청(PRIL)에 대한 응답이다. 일 실시예에서, 노드는 데이터의 배타적 사본을 요청 노드로 전달한다.
<홈 노드로의 메시지들>
이들 메시지들은 피어 노드에 의해 홈 노드로 송신된다.
I_ACK(Invalid State Acknowledgement): 이 메시지는 응답을 보내는 노드가 요청된 데이터의 무효 사본을 갖거나 요청된 데이터의 사본을 갖지 않을 때 요청(PRIL, 및 PWL)에 대한 응답이다.
E_ACK(Exclusive State Acknowledgement): 이 메시지는 응답을 보내는 노드가 요청된 데이터의 배타적 사본을 갖거나 요청된 데이터의 사본을 갖지 않을 때 요청(PRIL 및 PWL)에 대한 응답이다.
DACK(Acknowledgement of Data Received): 이 메시지는 요청 노드에 의해 홈 노드로 보내진다.
I_ACK_Conflict: 이 메시지는 요청된 캐시 라인에 대해 함께 계류중인 요청이 있음을 가리킨다.
<홈 노드로부터의 메시지들>
이들 메시지들은 홈 노드에서 피어 및/또는 요청 노드들로 보내진다.
E_CMP(Exclusive Completion): 이 메시지는 요청 노드가 배타적 데이터를 수신했기 때문에 요청 노드의 요청이 배타적 캐시 상태로 완료됨을 가리킨다. 일 실시예에서, 홈 노드는 이 메시지를 발행한 후에 라인을 할당 해제(de-allocate)한다.
I_DATA_CMP(Invalid Data Completion): 이 메시지는 요청 노드로 보내져야 할 요청 데이터를 포함하고 요청 노드의 PRIL 요청이 "무효(Invalid)" 캐시 상태로 종료됨을 가리킨다.
CMP(Completion)- 이 메시지는 수정된 데이터의 메모리에의 후기입의 완료를 가리키기 위해 PWL을 요청한 노드로 보내진다.
I_CMP - 이 메시지는 충돌 상황에 대한 두 노드 중 하나의 노드로 보내져서 충돌 라인이 할당 해제된다는 것을 나타낸다.
XFER_(NodeID) : 이 메시지는 수신 노드가 메시지 내에 가리켜진 노드로 데이터를 전송하도록 한다. 데이터의 현재 소유자가 데이터를 타겟 노드로 전송하는 것을 필요로 하는 충돌 상황에 대해 홈 노드가 통지받는 경우 홈 노드는 이 메시지를 요청된 데이터의 현재 소유자에게 보낸다. 해소되지 않은 충돌 요청이 PRIL 메시지라고 홈 노드가 판정한다면, XFRI 메시지가 XFR 메시지 대신 보내지고, 이것은 데이터 전송을 시작할 때 현재 소유자는 라인을 무효화시켜야 한다는 것을 의미한다.
E_CMP_XFER(NodeID)): E_CMP_XFER는 E_CMP와 XFER 메시지로 만들어진 복합 메시지이다. 그래서, 이 메시지는 이 트랜잭션이 홈 노드에서 행해진 것을 가리키고 수신 노드가 메시지 내에 표시된 노드로 데이터를 전송하게 한다. 데이터의 현재 소유자가 데이터를 타겟 노드로 전송하는 것을 필요로 하는 충돌 상황에 대해 홈 노드가 통지받는 경우 홈 노드는 이 메시지를 요청된 데이터의 현재 소유자에게 보낸다.
홈 노드 및 요청 노드들에 대한 메시지들의 논의가 끝났다.
이하의 논의는 멀티 노드 시스템 내의 노드들에 관하여 제공된다. 일 실시예에서, 노드는 내부 캐시 메모리, 외부 캐시 메모리 및/또는 외부 메모리를 갖는 프로세서를 포함한다. 대안적인 실시예에서, 노드는 다른 전자 시스템들에 상호 접속된 전자 시스템(예를 들면, 컴퓨터 시스템, 모바일 디바이스)이다. 다른 유형들의 노드 구성들도 사용될 수 있다. 이하의 예들에서, 메시지 앞의 숫자는 상대적인 시간을 가리킨다("1"로 시작하는 메시지는 "1.1" 또는 "2" 또는 "3" ... 등으로 시작하는 메시지에 앞서 보내진다.). 예를 들면, 숫자는 두 노드 사이의 대략적인 시간 순서를 표시한다. 그러나, 노드들의 상이한 쌍들 사이에서 타이밍을 판정하는데 그 숫자가 사용될 수 없다. 예를 들면, 노드 A와 B 사이의 "4"는 노드 C와 D 사이의 "2"보다 앞설 수 있다. 또한, 점선으로 나타낸 메시지는 인-오더 홈 채널(in-order home channel)을 가리킨다. 예를 들면, 동일한 요청 노드로부터 제2 메시지 전에 보내진 요청 노드로부터의 제1 메시지가 그러한 순서로 수신되는 것(제1 메시지가 수신 노드에 의해 먼저 수신되고 그 후에 제2 메시지가 수신 노드에 의해 수신됨)을 확실히 하기 위해 유사한 방향의 노드들의 동일한 쌍 사이에 인-오더 홈 채널이 있을 수 있다.
도 1은 판독 트랜잭션을 지원하기 위한 프로토콜의 개념적인 예시의 일 실시예를 제공한다. 이 실시예에서, 복수의 노드 A, B, 및 C는 홈 노드, H에 연결된다. 명백히, 본 발명은 3개의 노드로 한정되지 않고 상이한 수의 노드들을 고려할 수 있다.
일 양상에서, 도면은 판독 트랜잭션을 묘사한다. 처음에, 노드들의 상태는 다음과 같다. 노드 A 및 B는 데이터의 무효 사본을 갖는다. 대조적으로, 노드 C는 데이터의 배타적 사본을 갖는다(이것은 도면에서 노드의 제1 상태로서 묘사되었다 (무효 상태는 I, 배타적인 상태는 E)).
먼저, 요청 노드 A는 PRIL 요청을 노드 B, C 및 홈 노드에 발행한다. 일 실시예에서, PRIL 요청은 인-오더 홈 채널을 이용하여 홈 노드에 전달된다.
둘째로, 노드 C가 노드 A의 PRIL 요청에 E_DATA로 응답하고 데이터의 배타적 사본을 돌려준다. 유사하게, 노드 C가 요청된 데이터의 배타적 사본을 전달했다는 것을 나타내는 E_ACK로 노드 C가 홈 노드에 응답한다. 한편, 노드 B는 요청된 데이터의 무효 사본을 가지고 있다는 것을 나타내는 I_ACK를 전달한다.
결과적으로, 요청 노드가 배타적 데이터를 수신하였기 때문에 홈 노드는 배타적 데이터에 대한 노드 A의 요청의 완료를 나타내는 E_CMP를 노드 A에 발행한다. 일 실시예에서, 홈 노드는 이 메시지를 발행한 후 라인을 할당 해제한다. 따라서, 홈 노드는 다른 노드들로부터의 수신된 메시지들에 기초하여 판독 트랜잭션을 감독하고 제어한다.
도 2는 후기입 경쟁 충돌을 지원하기 위한 프로토콜의 개념적인 예시의 일 실시예를 제공한다. 이 실시예에서, 복수의 노드 A, B, 및 C는 홈 노드 H에 연결된다. 명백하게, 본 발명은 3개의 노드로 한정되지 않고 상이한 수의 노드들을 고려할 수 있다.
일 양상에서, 도면은 후기입 경쟁 충돌을 묘사한다. 처음에, 노드들의 상태는 다음과 같다. 노드 A 및 B는 데이터의 무효 사본을 갖는다. 대조적으로, 노드 C는 데이터의 수정된 사본을 갖는다(이것은 도면에서 노드의 제1 상태로 묘사되었다(무효 상태는 I, 수정된 상태는 M)).
먼저, 요청 노드 A가 노드 B, C 및 홈 노드에 PRIL 요청을 발행한다. 일 실시예에서, PRIL 요청은 인-오더 홈 채널을 이용하여 홈 노드로 전달된다. 한편, 노드 C는 수정된 데이터의 메모리로의 후기입을 위한 PWL 요청을 홈 노드에 발행한다. 일 실시예에서, PRIL 요청은 인-오더 홈 채널을 이용하여 홈 노드에 전달된다. 그래서, C의 PWL(후기입) 요청과 충돌하는, 수정된 데이터에 대한 A의 요청 때문에 후기입 경쟁 충돌이 존재한다. 일 실시예에서, 후기입은 홈 채널로 보내지고 노드 C에서 A의 PRIL 요청을 차단하지 않는다.
둘째로, 노드들 C 및 B는 A의 PRIL 요청에 응답하여 I_ACK 메시지를 발행한다. I_ACK 메시지는 A의 PRIL 요청에 대한 응답으로서 홈 노드에 보내져서, 그들이 요청된 데이터의 무효 사본을 가지고 있거나 요청된 데이터의 사본을 가지고 있지 않다는 것을 나타낸다.
홈 노드는 충돌을 해소할 것이다. 먼저, 홈 노드는 노드들(B 및 C)로부터 I_ACK 메시지들을 수신했을 때 C의 PWL 요청 및 A의 PRIL 요청에 응답한다. 홈 노드는 노드 C에 CMP 메시지로 응답하여 수정된 데이터의 메모리로의 후기입의 완료를 나타낸다. 또한, 홈 노드는 요청된 데이터를 포함하고 노드 A의 PRIL 요청의 완료를 나타내는 I_DATA_CMP 메시지로 노드 A에 응답한다.
도 3은 두 요청 사이에서 소유권 요청에 대한 경쟁 충돌을 지원하기 위한 프로토콜의 개념적인 예시의 일 실시예를 제공한다. 예를 들면, 이 예시는 대략 동시에 발행되는 요청들에 의해 일어나는 공유 라인 충돌을 지원하기 위한 프로토콜을 묘사한다. 먼저, 노드 A가 데이터 블록을 요청하는 PRIL 메시지들을 노드 B 및 C 및 홈 노드(240)에 송신한다. 일 실시예에서, PRIL 메시지는 인-오더 홈 채널을 경유하여 홈 노드로 보내진다. 소정의 짧은 시간 후에, 또는 심지어 동시에, 노드 B는 노드들(A, C 및 홈 노드)로 동일한 데이터 블록을 요청하는 PRIL 메시지들을 보낸다. 일 실시예에서, PRIL 메시지는 인-오더 홈 채널을 경유하여 홈 노드로 보내진다.
곧, 하나는 노드 A로부터의 것이고 하나는 노드 B로부터의 것인 두 개의 경쟁적인 PRIL 요청이 존재한다. 우리는 먼저 이 단락에서 A의 PRIL 요청에 대한 처리를 설명할 것이고, 그 후 다음 단락에서 B의 PRIL 요청에 대한 처리를 설명할 것이다. 노드 A 및 노드 B는 둘 다 I_ACK_Conflict 메시지를 홈 노드에 보내어 요청된 캐시 라인에 대한 함께 계류중인 요청이 있다는 것을 나타낼 것이다.
A의 PRIL 요청에 대해, 노드 C는 E_Data 메시지를 노드 A의 PRIL 요청에 대한 응답으로 노드 A로 보내어 노드 C가 요청된 데이터의 배타적 사본을 가짐을 가리킨다. 또한, 일 실시예에서 노드 C는 노드 A에 데이터의 배타적 사본을 전달한다. 한편, 노드 C는 E_ACK 메시지를 홈 노드에 보내어 요청된 데이터의 배타적 사본을 전달했음을 가리킨다. 일 실시예에서, E_ACK 메시지는 인-오더 홈 채널을 경유하여 홈 노드로 보내진다.
B의 PRIL 요청에 대하여, 데이터의 배타적 사본을 노드 A에 보낸 후에 요청된 데이터를 무효화시켰기 때문에 노드 C는 I_ACK를 홈 노드에 보낸다.
따라서, 홈 노드는 노드 B에 I_CMP 메시지를 발행하고 노드 A에 E_CMP_XFER(B) 메시지를 발행함에 의해 함께 계류중인 PRIL 요청들을 해소한다. E_CMP_XFER(B) 메시지는 수신 노드인 노드 A가 메시지에 표시된 노드인 노드 B에 데이터의 배타적 사본을 전송하게 한다. 데이터의 현재 소유자가 데이터를 타겟 노드, 본 예에서는 노드 B로 전송하는 것을 필요로 하는 충돌 상황에 대해 홈 노드가 통지받는 경우 홈 노드는 이 메시지를 요청된 데이터의 현재 소유자, 본 예에서는 노드 A에 보낸다.
결과적으로, 노드 A는, E_CMP_XFER(B) 메시지를 수신한 후 E_DATA 메시지를 노드 B에 보냄으로써 노드 B에 데이터의 배타적 사본을 전송한다.
도 4는 두 요청 사이에서 소유권 요청에 대한 지연 충돌을 지원하기 위한 프로토콜의 개념적인 예시의 일 실시예를 제공한다. 예를 들면, 노드 A는 데이터 블록을 요청하는 PRIL 메시지를 노드 B, C 및 홈 노드에 송신한다. 노드 B가 A의 PRIL 요청을 수신확인한 후 PRIL 요청을 발행하면 지연 충돌이 일어날 수 있다.
먼저, 요청 노드 A가 노드 B, C 및 홈 노드로 PRIL 요청을 발행한다. 일 실시예에서, PRIL 요청은 인-오더 홈 채널로 홈 노드에 전달된다.
둘째로, 노드 C가 요청된 데이터의 배타적 사본을 전달했다는 것을 가리키기 위해 노드 C가 홈 노드로의 E_ACK로 A의 PRIL에 대해 응답한다. 한편, 노드 B는 A의 PRIL에 I_ACK로 응답하여 요청된 데이터의 무효 사본을 갖고 있다는 것을 가리킨다.
셋째로, 노드 B는 노드들 A, C 및 홈 노드에 대해 PRIL 요청을 발행한다. 일 실시예에서, PRIL 요청은 인-오더 홈 채널을 이용하여 홈 노드로 전달된다.
넷째로, 노드 C는 A의 PRIL 요청에 E_DATA로 응답한다. 또한 노드 C는 B의 PRIL에 홈 노드로의 I_Ack 메시지로 응답한다. 한편, 노드 A는 B의 PRIL에 홈 노드로의 I_Ack_Conflict 메시지로 응답한다.
다섯째로, 홈 노드는 충돌이 있음에도 불구하고 E_CMP를 노드 A로 보낸다. 이상적으로는, 충돌이 검출되었을 때, XFER 메시지가 도 3과 같이 CMP에 첨부된다. 이것은, 홈 노드가 A의 PRIL에 대한 모든 응답들을 수집할 때 충돌에 대한 표시가 없었기 때문에 일어나지 않는다. 충돌 표시자 I_Ack_Conflict(B의 PRIL에 대한 A의 응답)는 여전히 전송되는 중(in flight)이고 홈 노드에 의해 수신되지 못했다. 이 경우, 노드 A가 홈 노드로부터 E_CMP를 수신할 때 DACK 메시지를 홈 노드에 보내어, 노드 A가 라인의 소유자임과 홈 노드가 충돌을 놓쳤고 Xfer 커맨드를 보내는 것이 필요하다는 것을 가리키고, DACK가 인-오더 홈 채널로 보내지기 때문에, 역시 동일한 홈 채널로 보내지는 I_Ack_Conflict를 그 앞으로 밀 것이다. 일 실시예에서, DACK 메시지는 인-오더 홈 채널을 이용하여 홈 노드에 전달된다.
그리하여, 홈 노드는, 먼저 DACK를 수신하고 그 후 노드 B에 I_CMP 메시지를 발행하고 노드 A에 Xfer(B) 메시지를 발행함에 의해 두 요청자 사이의 지연 충돌을 해소한다. XFER(B) 메시지는 수신 노드인 노드 A가 데이터의 배타적 사본을 메시지에 표시된 노드인 노드 B로 전송하도록 한다. 데이터의 현재 소유자가 데이터를 타겟 노드, 본 예에서는 노드 B로 전송하는 것을 필요로 하는 충돌 상황을 홈 노드가 통지받는 경우, 홈 노드는 이 메시지를 요청된 데이터의 현재 소유자, 본 예에서는 노드 A에 보낸다. 결과적으로, 홈 노드로부터 Xfer(B) 메시지를 수신할 때, 노드 A는 노드 B에 E_Data 메시지와 함께 데이터의 배타적 사본을 보낸다.
도 5는 소스 노드 알고리즘의 방법에 대한 흐름도의 일 실시예이다. 상술된 바와 같이, 노드들은 다음과 같이 분류될 수 있다: 소스 노드, 홈 노드 및 피어 노드. 본 발명은 소스 노드에서 사용되는 알고리즘을 설명한다. 일 실시예에서, 본 발명은 연관된 어플리케이션에 관해 논의되는 피어 노드 프로토콜을 이용한다.
도 5는 소스 노드 알고리즘에 대한 하나의 방법을 묘사한다. 예를 들면, 다음의 상황들이 Dack 메시지를 어서트(assert)할 수 있다.
일 실시예에서, Dack를 어서트하기 위한 하나의 상황은 요청된 캐시 라인이 전달 상태, 배타적 상태, 또는 수정된 상태와 같은 소정의 상태에 있고, 적어도 하나의 충돌이 검출되고 전송(Xfr 메시지)없이 완료가 수신되는 것이다.
다른 실시예에서, 충돌 동안 충돌 체인 내의 모든 트랜잭션이 DACK 단계를 거치는 것이 필요하도록 프로토콜이 수정될 수 있다. 다시 말하면, 도 3의 E_CMP_XFER는 E_CMP_Conflict로 변경될 것이다. E_CMP_Conflict(충돌 완료)를 수신할 때, 노드 A는 DACK를 홈 노드에 발행할 것이다. 홈 노드는 DACK를 수신한 후에 XFER를 발행할 것이다. 이것은 충돌 처리 플로우가 도 3 및 4에 대해 상대적으로 유사하게 되도록 하기 때문에 하드웨어 구현을 단순화시킬 수 있다. 그러나 그것은 모든 충돌에 대해 DACK를 이용하여 충돌 해소가 약간 느려진다. 이것은 보통 충돌들의 희귀함 때문에 문제가 되지 않는다.
일 실시예에서, DACK의 어서트와 DACK에 대한 CMP의 수신 사이의 모든 인입 요청들은 차단된다. 이것은 충돌 체인의 끝이 도달되었는지를 홈 노드가 판정하는 것을 용이하게 한다.
일 실시예에서, DACK에 대한 CMP 또는 XFER가 수신되었을 때, 차단 상황은 제거된다. 노드는 피어 노드처럼 행동할 것이다.
도 6은 홈 노드 알고리즘의 방법에 대한 흐름도의 일 실시예이다. 상술한 바와 같이, 노드들은 다음과 같이 분류될 수 있다: 소스 노드, 홈 노드 및 피어 노드. 본 발명은 소스 노드 및 홈 노드에 대한 프로토콜을 설명한다. 일 실시예에서, 본 발명은 연관된 어플리케이션에 관해 논의되는 피어 노드 프로토콜을 이용한다.
도 6은 홈 노드 알고리즘에 대한 하나의 방법을 묘사한다. 예를 들면, 홈 노드 알고리즘은 다른 노드들 사이의 충돌들을 해소하는데 사용될 수 있다.
예를 들면, 일 실시예에서, 이하의 상황들/이벤트들이 충돌을 폐기하는데 사용된다. 홈 노드는 만약
모든 수신 확인 메시지가 수신되고
Xfer 또는 Forward 메시지가 수신되고
Xfer이 보내지거나 Xfer가 충돌 체인의 최종 메시지라면
충돌 요청을 폐기하고(끝내고) 충돌 체인으로부터 충돌자(conflictor)를 제거할 것이다.
또는, 다른 실시예에서, 다음의 상황들/이벤트들이 충돌을 폐기하는데 사용된다.
모든 수신 확인 메시지가 수신되고
모든 충돌들이 발견되고
체인 내의 함께 계류중인 충돌들이 전송 또는 전달의 타겟들이 아니고
Xfer이 보내지거나 Xfer이 충돌 체인의 최종 메시지이다.
또한, 홈 노드 알고리즘은 충돌 메시지들의 형태 및 기록을 감독하고 판정할 수 있다. 예를 들면, 노드로부터의 충돌 메시지들은 원래 트랜잭션의 트랜잭션 ID를 바로 포함할 수 있다. 또는, 다른 실시예에서, 노드로부터의 충돌 메시지들은 원래 트랜잭션의 트랜잭션 ID 및 충돌 트랜잭션의 트랜잭션 ID를 포함할 수 있다. 두 개의 트랜잭션 ID들은 충돌의 링크 리스트를 만드는데 사용될 수 있다. 원래 트랜잭션 및 충돌 트랜잭션 ID들이 둘 다 존재하기 때문에, 충돌 체인은 양쪽 트랜잭션의 개별적인 기록 엔트리에 기록될 수 있다. YAP(특허 번호 ???)과 같이, 본 프로토콜은 전송중인 각 트랜잭션을 저장하기 위해 상당한 기록 테이블을 필요로 한다. 요청이 홈 노드에 도착할 때, 간단히 충돌 체인을 참조하여 느리고 비용이 드는 주소 CAM 없이 모든 충돌을 발견할 수 있다. 예를 들면, C에서 도 2의 홈으로의 I_Ack는 I_Ack_Conflict로 최적화된다. 이 I_Ack_Conflict는 A의 PRIL 트랜잭션 ID(원래) 및 PWL 트랜잭션 ID(충돌자)를 갖는다. A의 PRIL이 홈에 도착할 때, 느리고 비용이 드는 주소 CAM 검색 대신, PWL 기록 엔트리를 찾기 위해 I_Ack_Conflict로부터 기록되는 PWL의 트랜잭션 ID를 간단히 이용할 수 있다.
<분산형 캐시 일관성 충돌 해소를 지원하기 위한 예시적인 시스템들>
도 7은 노드의 일 실시예의 블록도이다. 노드(700)는 단일 프로세서, 캐시 메모리, 메모리 컨트롤러 및 메모리로 도시된다; 그러나, 이러한 구성요소들 중 임의의 것의 임의의 개수가 노드에 포함될 수 있다. 더욱이, 추가적인 및/또는 상이한 구성요소들(예를 들면, 버스 브리지)도 노드에 포함될 수 있다.
프로세서(710)는 본 기술분야에 공지된 임의의 유형의 프로세서일 수 있다. 일 실시예에서, 프로세서(710)는 캐시 메모리(720)를 포함한다. 다른 실시예들에서, 캐시 메모리(720)는 프로세서(710) 외부에 있거나, 또는 프로세서(710)의 내부 또는 외부에 있는 추가적인 캐시 메모리들이 포함될 수 있다.
메모리 컨트롤러(730)는 캐시 메모리(720) 및 메모리(740)와 연결된다. 메모리 컨트롤러(730)는 캐시 메모리(720) 및 메모리(740) 사이의 인터페이스로서 동작한다. 일 실시예에서, 메모리 컨트롤러(730)는 본원에서 설명된 캐시 일관성 프로토콜에 따른 캐시 일관성을 유지한다. 메모리 컨트롤러(730)는 노드 링크들(750)을 경유하여 다른 노드들과 상호작용한다. 다른 실시예에서, 프로세서(710)는 캐시 일관성을 유지하기 위하여 본원에서 설명된 바와 같이 메모리 컨트롤러(730)와 상호작용하고 대안적인 노드 링크들(755)을 경유하여 다른 노드들과 프로세서(710)가 상호작용한다.
일 실시예에서, 노드 링크들(750)은 노드(700)과 상호작용하는 각 노드에 대한 전용 인터페이스를 포함한다. 대안적인 실시예에서, 노드 링크들(750)은 노드(700)과 상호작용하는 노드들의 수와는 다른 다수의 인터페이스를 포함한다. 일 실시예에서, 노드(700)는 다수의 노드를 표현하는 하나 또는 그 이상의 에이전트들과 상호작용한다.
도 8은 멀티프로세서 시스템의 일 실시예이다. 멀티프로세서 시스템(800)은 예를 들면, 컴퓨터 시스템들, 실시간 모니터링 시스템들 등, 다수의 프로세서를 갖는 시스템의 범위를 나타내도록 의도된다. 대안적인 멀티프로세서 시스템들은 보다 많은, 보다 적은 및/또는 상이한 구성요소들을 포함할 수 있다. 어떤 상황들에서, 본원에 설명된 캐시 관리 기술들은 단일 프로세서 및 멀티프로세서 시스템 둘 다에 적용될 수 있다. 멀티프로세서 시스템(800)은 멀티 노드 시스템처럼 동작하도록 구성될 수 있다.
멀티프로세서 시스템(800)은 버스 시스템(810) 또는 정보를 전달하기 위한 다른 통신 디바이스(들)을 포함한다. 버스 시스템(810)은 임의의 수의 버스들 및 연관된 상호 접속 회로, 예를 들면 버스 브리지들을 포함할 수 있다. 프로세서(820)는 정보를 처리하기 위해 버스 시스템(810)과 연결된다. 프로세서(820)는 예를 들면 레벨 제로(L0) 캐시 메모리인 캐시 메모리(822), 및 캐시 컨트롤러(824)를 포함할 수 있다. 일 실시예에서, 프로세서(820)는 임의의 유형의 캐시 메모리가 될 수 있는 캐시(825)와 연결될 수도 있다. 대안적인 실시예에서, 캐시(825)는 버스 시스템(810)과 연결될 수 있다. 다른 유형들의 프로세서-캐시 구성들도 사용될 수 있다.
일 실시예에서, 캐시 컨트롤러(824)가 예를 들면, 프로세서(820) 내부의 버스일 수 있는 캐시 메모리 인터페이스(828)를 경유하여 캐시 메모리(822)와 연결된다. 캐시 컨트롤러는 캐시 인터페이스(826)를 경유하여 캐시 메모리(825)와 연결되고, 캐시 인터페이스는 프로세서(820)와 외부 캐시 메모리 사이의 인터페이스를 제공한다.
멀티프로세서 시스템(800)은 캐시 메모리(832) 및 캐시 컨트롤러(834)를 갖는 프로세서(830)를 더 포함한다. 캐시 컨트롤러(834)는 캐시 인터페이스(838)를 경유하여 캐시 메모리(832)와 연결된다. 유사하게, 캐시 컨트롤러(834)는 캐시 인터페이스(836)를 경유하여 캐시 메모리(835)와 연결된다. 일 실시예에서, 캐시 메모리(835)는 프로세서(830)와 연결된다.
멀티프로세서 시스템(800)이 두 개의 프로세서를 갖는 것으로 예시되었지만, 멀티프로세서 시스템(800)은 임의의 개수의 프로세서들 및/또는 코프로세서들을 포함할 수 있다. 멀티프로세서 시스템(800)은 버스 시스템(810)과 연결된 메모리 시스템(840)을 더 포함한다. 메모리 시스템(840)은 동적(예를 들면 랜덤 액세스 메모리) 및 정적(예를 들면 판독 전용 메모리, CD-ROM, 디스크 저장장치, 플래시 메모리) 메모리 장치들 및 적합한 관련 드라이브들의 임의의 조합을 포함할 수 있다. 메모리 시스템(840)의 메모리 장치들은 멀티프로세서 시스템(800)의 프로세서들에 의해 실행될 정보 및 명령어들을 저장하는데 사용된다. 메모리 시스템(840)은 프로세서들에 의한 명령어들의 실행 동안 일시적인 변수들 또는 다른 중간 정보를 저장하는데 사용될 수도 있다.
명령어들은 자기 디스크, ROM(read-only memory) 집적 회로, CD-ROM, DVD와 같은 정적 또는 원격 저장 디바이스로부터 유선 또는 무선인 원격 접속 등을 경유하여 메모리 시스템(840)에 제공될 수 있다. 대안적인 실시예들에서, 배선에 의한(hard-wired) 회로는 소프트웨어 명령어들을 대신하여 또는 소프트웨어 명령어들과 함께 사용될 수 있다. 그리하여, 일련의 명령어들의 실행은 하드웨어 회로 및 소프트웨어 명령어들의 임의의 특정한 조합으로 한정되지 않는다.
멀티프로세서 시스템(800)은 네트워크에 대한 액세스를 제공하기 위해 LAN(local area network) 및/또는 인터넷과 같은 네트워크 인터페이스(850)를 더 포함한다. 네트워크 인터페이스(850)는, 전자적으로 원격 액세스 가능한(remote electronically-accessible) 매체에 대한 명령어들의 전달을 포함할 수 있는 무선 및/또는 유선 네트워크 인터페이스들을 제공할 수 있다. 전자적으로 액세스 가능한 매체는 전자 디바이스(예를 들면 컴퓨터, 개인 휴대 정보 단말기(personal digital assistant), 휴대폰)에 의해 판독 가능한 형태로 컨텐츠(예를 들면 컴퓨터 실행가능한 명령어들)을 제공(즉, 저장 및/또는 송신)하는 임의의 기구를 포함한다.
예를 들면, 머신-액세스 가능 매체(machine-accessible medium)는 ROM; RAM(random access memory); 자기 디스크 저장 매체; 광 저장 매체; 플래시 메모리 장치들; 전기, 광, 음향 또는 다른 형태의 전파되는 신호들(예를 들면 반송파들, 적외선 신호들, 디지털 신호들)을 포함한다.
멀티프로세서 시스템(800)은 정보를 디스플레이하기 위한 CRT(cathode ray tube) 또는 액정(liquid crystal display)와 같은 디스플레이 디바이스(860)를 포함할 수도 있다. 예를 들면, 영숫자 및 다른 키들을 갖는 키보드를 포함하는 입력 디바이스(들)(870)은, 정보 및 커맨드 선택(command selection)들을 프로세서들(820 및/또는 830)에 전달하기 위해 통상적으로 버스(810)에 연결된다. 다른 유형의 사용자 입력 디바이스는 마우스, 트랙볼, 또는 커서 방향키들과 같은, 방향 정보 및 커맨드 선택들을 프로세서들(820 및 830)에 전달하고 디스플레이 디바이스(860) 상의 커서 움직임을 제어하기 위한 커서 제어 디바이스이다.
본 명세서에서 "일 실시예" 또는 "실시예"에 대한 언급은 그 실시예와 관련되어 기술된 특별한 특징, 구조, 또는 특성이 본 발명의 적어도 일 실시예에 포함된다는 것을 의미한다. 본 명세서의 다양한 장소에서 "일 실시예에서"라는 표현의 출현들은 반드시 모두 동일한 실시예에 관한 것은 아니다.
위의 명세서에서, 본 발명은 특정한 실시예들과 관련하여 기술되었다. 그러나 본 발명의 보다 넓은 사상 및 범위를 벗어나지 않으면서 다양한 수정들 및 변경들이 본 발명에 대해 만들어질 수 있다는 것이 명백할 것이다. 따라서, 본 명세서 및 도면들은 제한적인 의미라기보다는 예시적인 의미로 여겨져야 한다.

Claims (21)

  1. 제1 피어 노드(peer node)로부터, 데이터 블록의 사본에 대한 요청을 멀티 노드 시스템(multi-node system)의 다수의 노드로 송신하는 단계;
    제2 피어 노드로부터, 상기 데이터 블록의 사본을 상기 제1 피어 노드로 송신하고, 수신 확인(acknowledgement)을 홈 노드(home node)로 송신하는 단계; 및
    상기 홈 노드로부터, 상기 제1 피어 노드로부터의 상기 요청의 완료를 가리키는 완료 메시지를 상기 제1 노드로 송신하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    제1 피어 노드로부터, 다수의 노드로 데이터 블록의 사본에 대한 요청을 송신하는 단계는, 상기 제1 노드로부터 상기 홈 노드로 인-오더 홈 채널(in-order home channel)을 경유하여 상기 요청을 송신하는 단계를 포함하는 방법.
  3. 제1항에 있어서,
    상기 제2 피어 노드로부터 상기 제1 피어 노드로 보내진 상기 데이터 블록의 사본은 데이터 블록의 배타적 사본인 방법.
  4. 제1 피어 노드로부터, 데이터 블록의 사본에 대한 요청을 멀티 노드 시스템 의 다수의 노드로 송신하는 단계;
    제2 피어 노드로부터, 상기 데이터 블록의 사본을 상기 제1 피어 노드로 송신하고, 수신 확인을 홈 노드로 송신하는 단계; 및
    상기 홈 노드로부터, 상기 제1 피어 노드로부터의 상기 요청의 완료를 가리키는 완료 메시지를 상기 제1 노드로 송신하고 상기 데이터 블록의 사본과 관련된 캐시 라인을 할당 해제(de-allocating)하는 단계
    를 포함하는 방법.
  5. 제4항에 있어서,
    제1 피어 노드로부터, 데이터 블록의 사본에 대한 요청을 다수의 노드로 송신하는 단계는 상기 요청을 상기 제1 노드로부터 상기 홈 노드로 인-오더 홈 채널을 경유하여 송신하는 단계를 포함하는 방법.
  6. 제4항에 있어서,
    상기 제2 피어 노드로부터 상기 제1 피어 노드로 보내진 상기 데이터 블록의 사본은 데이터 블록의 배타적 사본인 방법.
  7. 홈 노드에 연결되고, 복수의 피어 노드 중에서, 상기 홈 노드에 의해, 충돌들을 해소하는데 적어도 부분적으로 기초하는 캐시 일관성 프로토콜에 의해 감독되는 다수의 피어 노드를 포함하고,
    상기 홈 노드는,
    모든 복수의 수신 확인 메시지들이 수신되고
    전송(Xfer) 메시지 또는 전달(Forward) 메시지가 수신되고
    전송(Xfer) 메시지가 보내지거나 충돌 체인의 최종 메시지인 상황
    이 발생한다면 충돌 요청을 폐기하고 충돌자(conflictor)를 상기 충돌 체인으로부터 제거하는 시스템.
  8. 제7항에 있어서,
    모든 복수의 수신 확인 메시지들이 수신되고
    모든 복수의 충돌이 발견되고
    상기 체인 내의 복수의 함께 계류중인 충돌이 전송 또는 전달의 타겟들이 아니고
    전송(Xfer) 메시지가 보내지거나 상기 충돌 체인의 상기 최종 메시지인 상황
    이 발생한다면 충돌 요청을 폐기하고 상기 충돌자를 상기 충돌 체인으로부터 제거하는 상기 홈 노드를 더 포함하는 시스템.
  9. 제7항에 있어서,
    상기 충돌 메시지는 원래 트랜잭션의 트랜잭션 ID만을 포함하는 시스템.
  10. 제7항에 있어서,
    상기 충돌 메시지는 원래 트랜잭션의 트랜잭션 ID와 충돌 트랜잭션의 트랜잭션 ID를 포함하는 시스템.
  11. 복수의 피어 노드 - 상기 복수의 피어 노드는 홈 노드에 연결됨 - 에 연결되고, 상기 복수의 피어 노드 사이에서, 상기 홈 노드에 의해, 충돌들을 해소하는데 적어도 부분적으로 기초하는 캐시 일관성 프로토콜에 의해 감독되는 적어도 하나의 소스 노드를 포함하고,
    상기 소스 노드는,
    적어도 하나의 캐시 라인의 사본을 요청하고,
    상기 캐시 라인이 전달 상태, 배타적 상태, 또는 수정된 상태 중 어느 하나이고 적어도 하나의 충돌이 검출되고 전송(Xfr) 메시지없이 완료가 수신되는 상황
    이 발생한다면 데이터 수신 확인 메시지를 어서트(assert)하는 시스템.
  12. 제11항에 있어서,
    상기 캐시 일관성 프로토콜은 충돌 동안 충돌 체인 내의 모든 트랜잭션이 데이터 수신 확인 사이클(data acknowledge cycle)을 시작하는 것을 용이하게 하는 시스템.
  13. 제12항에 있어서,
    데이터 수신 확인 사이클은 E_CMP_XFER 메시지를 E_CMP_Conflict 메시지로 변경하는 것을 포함하는 시스템.
  14. 제12항에 있어서,
    데이터 수신 확인 메시지의 어서트(assertion)와 데이터 수신 확인에 대한 완료의 수신 사이에 모든 인입 요청들이 차단되는 상황
    이 발생되면 데이터 수신 확인 메시지를 어서트하는 상기 소스 노드를 더 포함하는 시스템.
  15. 제1 피어 노드로부터, 데이터 블록의 사본에 대한 요청을 멀티 노드 시스템의 다수의 노드로 송신하는 단계; 및
    제2 피어 노드로부터, 메모리에 기록될 상기 데이터 블록의 사본의 수정된 캐시 라인(후기입(writeback) 라인)에 대한 요청을 홈 노드로 송신하는 단계; 및
    상기 제1 피어 노드 및 제2 피어 노드 사이의 상기 후기입 경쟁 충돌(writeback race conflict)을 상기 홈 노드에서 해소하는 단계
    를 포함하는, 후기입 경쟁 충돌을 해소하는 방법.
  16. 제15항에 있어서,
    상기 제2 피어 노드로부터 상기 홈 노드로의 상기 후기입 요청은 인-오더 홈 채널을 경유하여 송신되는 방법.
  17. 제15항에 있어서,
    상기 제2 피어 노드 및 제3 피어 노드는 상기 제1 노드의 요청에 응답하여 I_ACK 메시지를 발생시키는 방법.
  18. 제15항에 있어서
    상기 후기입 경쟁 충돌을 해소하는 단계는,
    상기 홈 노드가,
    상기 수정된 데이터의 메모리로의 상기 후기입의 완료를 가리키는 완료 CMP 메시지로 상기 제2 피어 노드에 응답하고;
    상기 데이터 블록의 사본을 포함하고 상기 제1 피어 노드로부터의 상기 요청의 상기 완료를 가리키는 I_DATA_CMP 메시지로 상기 제1 피어 노드에 응답함
    으로써 상기 충돌을 해소하는 것을 포함하는 방법.
  19. 제1 피어 노드로부터, 데이터 블록의 사본에 대한 요청을 멀티 노드 시스템의 다수의 노드로 송신하는 단계;
    제2 피어 노드로부터, 데이터 블록의 동일한 사본에 대한 요청을 멀티 노드 시스템의 다수의 노드로 송신하는 단계;
    상기 제1 피어 노드와 제2 피어 노드 사이의 상기 경쟁 충돌을 상기 홈 노드에서 해소하는 단계
    를 포함하는, 두 개의 실질적으로 동시인 요청들의 소유권 요청에 대한 경쟁 충돌을 해소하는 방법.
  20. 제19항에 있어서,
    상기 제1 및 제2 피어 노드로부터 상기 홈 노드로의 상기 요청들은 인-오더 홈 채널을 경유하여 송신되는 방법.
  21. 제19항에 있어서,
    상기 경쟁 충돌을 해소하는 단계는,
    상기 요청된 캐시 라인에 대한 함께 계류중인 요청이 있다는 것을 가리키는 I_ACK_Conflict 메시지를 상기 홈 노드에서 상기 제1 및 제2 피어 노드로부터 수신하고;
    제3 피어 노드가 상기 요청된 데이터의 배타적 사본을 가지고 있고 상기 제3 피어 노드가 상기 데이터의 상기 배타적 사본을 상기 제1 피어 노드로 전달한다는 것을 가리키는 E_Data 메시지를 상기 제3 피어 노드로부터 상기 제1 피어 노드 A에 보내고 - 상기 제3 피어 노드는, 상기 제1 피어 노드에 상기 요청된 데이터의 배타적 사본을 전달했다는 것을 가리키는 E_ACK 메시지를 상기 홈 노드로 보냄 - ;
    상기 데이터의 상기 배타적 사본을 상기 제1 피어 노드로 보낸 후에 상기 요청된 데이터를 무효화시켰으므로 상기 제2 피어 노드의 요청에 응답하여 상기 제3 피어 노드로부터 상기 홈 노드로 I_ACK 메시지를 보내는
    것에 의해 상기 홈 노드가 상기 충돌을 해소하는 것을 포함하고,
    상기 제2 피어 노드로 I_CMP 메시지를 발행하고 상기 제1 피어 노드로는 E_CMP_XFER(secondnodeID) 메시지를 발행하는 상기 홈 노드에 의해 상기 경쟁 충돌을 해소하고;
    상기 E_CMP_XFER(secondnodeID) 메시지는 상기 제1 피어 노드가 상기 데이터의 배타적 사본을 상기 제2 피어 노드로 전송하도록 하는 방법.
KR1020067022561A 2004-04-27 2005-04-08 효율적인 이홉(two-hop) 캐시 일관성 프로토콜 KR100880059B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/833,963 US7822929B2 (en) 2004-04-27 2004-04-27 Two-hop cache coherency protocol
US10/833,963 2004-04-27

Publications (2)

Publication Number Publication Date
KR20070007865A true KR20070007865A (ko) 2007-01-16
KR100880059B1 KR100880059B1 (ko) 2009-01-22

Family

ID=34966020

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067022561A KR100880059B1 (ko) 2004-04-27 2005-04-08 효율적인 이홉(two-hop) 캐시 일관성 프로토콜

Country Status (8)

Country Link
US (1) US7822929B2 (ko)
JP (1) JP4789926B2 (ko)
KR (1) KR100880059B1 (ko)
CN (1) CN100377114C (ko)
DE (1) DE112005000974T5 (ko)
GB (2) GB2447119B (ko)
TW (1) TWI274998B (ko)
WO (1) WO2005109206A2 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7512741B1 (en) 2006-01-11 2009-03-31 Intel Corporation Two-hop source snoop based messaging protocol
JP4572169B2 (ja) * 2006-01-26 2010-10-27 エヌイーシーコンピュータテクノ株式会社 マルチプロセッサシステム及びその動作方法
JP4449931B2 (ja) * 2006-03-30 2010-04-14 ブラザー工業株式会社 管理装置、および管理システム
US7941610B2 (en) 2006-04-27 2011-05-10 Hewlett-Packard Development Company, L.P. Coherency directory updating in a multiprocessor computing system
US7836144B2 (en) * 2006-12-29 2010-11-16 Intel Corporation System and method for a 3-hop cache coherency protocol
US8190820B2 (en) * 2008-06-13 2012-05-29 Intel Corporation Optimizing concurrent accesses in a directory-based coherency protocol
US8205045B2 (en) * 2008-07-07 2012-06-19 Intel Corporation Satisfying memory ordering requirements between partial writes and non-snoop accesses
US8250311B2 (en) 2008-07-07 2012-08-21 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses
US10102124B2 (en) * 2011-12-28 2018-10-16 Intel Corporation High bandwidth full-block write commands
US9235519B2 (en) * 2012-07-30 2016-01-12 Futurewei Technologies, Inc. Method for peer to peer cache forwarding
US20140040561A1 (en) * 2012-07-31 2014-02-06 Futurewei Technologies, Inc. Handling cache write-back and cache eviction for cache coherence
US9152501B2 (en) 2012-12-19 2015-10-06 International Business Machines Corporation Write performance in fault-tolerant clustered storage systems
US9727464B2 (en) 2014-11-20 2017-08-08 International Business Machines Corporation Nested cache coherency protocol in a tiered multi-node computer system
US9886382B2 (en) 2014-11-20 2018-02-06 International Business Machines Corporation Configuration based cache coherency protocol selection
US11269773B2 (en) * 2019-10-08 2022-03-08 Arm Limited Exclusivity in circuitry having a home node providing coherency control

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5297269A (en) 1990-04-26 1994-03-22 Digital Equipment Company Cache coherency protocol for multi processor computer system
JPH04261487A (ja) * 1991-02-15 1992-09-17 Sekisui Chem Co Ltd 粘着テープ
US5190386A (en) * 1992-01-28 1993-03-02 Eudy James R Printer with edge strip trimmer
US5463629A (en) 1992-07-13 1995-10-31 Ko; Cheng-Hsu Dynamic channel allocation method and system for integrated services digital network
EP0600626A1 (en) 1992-11-13 1994-06-08 Cyrix Corporation Coherency for write-back cache in a system designed for write-through cache
EP0613151A3 (en) * 1993-02-26 1995-03-22 Tokyo Shibaura Electric Co Semiconductor memory system with flash EEPROM.
JP2819982B2 (ja) 1993-03-18 1998-11-05 株式会社日立製作所 範囲指定可能なキャッシュ一致保証機能を有するマルチプロセッサシステム
JP3183993B2 (ja) 1993-03-31 2001-07-09 株式会社東芝 ディスク制御システム
US5623644A (en) 1994-08-25 1997-04-22 Intel Corporation Point-to-point phase-tolerant communication
US5893160A (en) * 1996-04-08 1999-04-06 Sun Microsystems, Inc. Deterministic distributed multi-cache coherence method and system
US5819296A (en) 1996-10-31 1998-10-06 Veritas Software Corporation Method and apparatus for moving large numbers of data files between computer systems using import and export processes employing a directory of file handles
US6636944B1 (en) 1997-04-24 2003-10-21 International Business Machines Corporation Associative cache and method for replacing data entries having an IO state
US6189043B1 (en) 1997-06-09 2001-02-13 At&T Corp Dynamic cache replication in a internet environment through routers and servers utilizing a reverse tree generation
US6092155A (en) 1997-07-10 2000-07-18 International Business Machines Corporation Cache coherent network adapter for scalable shared memory processing systems
US6085276A (en) * 1997-10-24 2000-07-04 Compaq Computers Corporation Multi-processor computer system having a data switch with simultaneous insertion buffers for eliminating arbitration interdependencies
US6009488A (en) 1997-11-07 1999-12-28 Microlinc, Llc Computer having packet-based interconnect channel
US6460119B1 (en) 1997-12-29 2002-10-01 Intel Corporation Snoop blocking for cache coherency
US6341337B1 (en) 1998-01-30 2002-01-22 Sun Microsystems, Inc. Apparatus and method for implementing a snoop bus protocol without snoop-in and snoop-out logic
US6067611A (en) 1998-06-30 2000-05-23 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that buffers potential third node transactions to decrease communication latency
US6430657B1 (en) 1998-10-12 2002-08-06 Institute For The Development Of Emerging Architecture L.L.C. Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
JP2000132531A (ja) * 1998-10-23 2000-05-12 Pfu Ltd マルチプロセッサ
US6275907B1 (en) 1998-11-02 2001-08-14 International Business Machines Corporation Reservation management in a non-uniform memory access (NUMA) data processing system
US6477535B1 (en) 1998-11-25 2002-11-05 Computer Associates Think Inc. Method and apparatus for concurrent DBMS table operations
US6338122B1 (en) 1998-12-15 2002-01-08 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that speculatively forwards a read request to a remote processing node
US6275905B1 (en) 1998-12-21 2001-08-14 Advanced Micro Devices, Inc. Messaging scheme to maintain cache coherency and conserve system memory bandwidth during a memory read operation in a multiprocessing computer system
US6370621B1 (en) 1998-12-21 2002-04-09 Advanced Micro Devices, Inc. Memory cancel response optionally cancelling memory controller's providing of data in response to a read operation
EP2320322A3 (en) * 1998-12-21 2011-08-03 Advanced Micro Devices, Inc. Conservation of system memory bandwidth and cache coherency maintenance using memory cancel messages
US6263409B1 (en) 1998-12-22 2001-07-17 Unisys Corporation Data processing system and method for substituting one type of request for another for increased performance when processing back-to-back requests of certain types
US6275995B1 (en) * 1999-02-26 2001-08-21 Sweports Limited Hand covering with reversible cleaning membrane
JP4363539B2 (ja) 1999-06-04 2009-11-11 諏訪熱工業株式会社 ボールペン用ボール
US6442597B1 (en) 1999-07-08 2002-08-27 International Business Machines Corporation Providing global coherence in SMP systems using response combination block coupled to address switch connecting node controllers to memory
US6484220B1 (en) 1999-08-26 2002-11-19 International Business Machines Corporation Transfer of data between processors in a multi-processor system
US6405289B1 (en) 1999-11-09 2002-06-11 International Business Machines Corporation Multiprocessor system in which a cache serving as a highest point of coherency is indicated by a snoop response
JP3959914B2 (ja) 1999-12-24 2007-08-15 株式会社日立製作所 主記憶共有型並列計算機及びそれに用いるノード制御装置
US6493809B1 (en) 2000-01-28 2002-12-10 International Business Machines Corporation Maintaining order of write operations in a multiprocessor for memory consistency
US6922755B1 (en) 2000-02-18 2005-07-26 International Business Machines Corporation Directory tree multinode computer system
US6769017B1 (en) 2000-03-13 2004-07-27 Hewlett-Packard Development Company, L.P. Apparatus for and method of memory-affinity process scheduling in CC-NUMA systems
US7062541B1 (en) 2000-04-27 2006-06-13 International Business Machines Corporation System and method for transferring related data objects in a distributed data storage environment
US6640287B2 (en) 2000-06-10 2003-10-28 Hewlett-Packard Development Company, L.P. Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests
US6795900B1 (en) 2000-07-20 2004-09-21 Silicon Graphics, Inc. Method and system for storing data at input/output (I/O) interfaces for a multiprocessor system
US6760728B1 (en) 2000-09-27 2004-07-06 Palmsource, Inc. Method and apparatus for importing and exporting directory and calendar information to and from personal information management applications
US6594733B1 (en) 2000-09-27 2003-07-15 John T. Cardente Cache based vector coherency methods and mechanisms for tracking and managing data use in a multiprocessor system
US6631449B1 (en) 2000-10-05 2003-10-07 Veritas Operating Corporation Dynamic distributed data system and method
DE10052443A1 (de) * 2000-10-23 2002-05-08 Boehringer Werkzeugmaschinen Kombimaschine
US6826591B2 (en) 2000-12-15 2004-11-30 International Business Machines Corporation Flexible result data structure and multi-node logging for a multi-node application system
US6571322B2 (en) 2000-12-28 2003-05-27 International Business Machines Corporation Multiprocessor computer system with sectored cache line mechanism for cache intervention
US6859864B2 (en) * 2000-12-29 2005-02-22 Intel Corporation Mechanism for initiating an implicit write-back in response to a read or snoop of a modified cache line
US6615319B2 (en) * 2000-12-29 2003-09-02 Intel Corporation Distributed mechanism for resolving cache coherence conflicts in a multi-node computer architecture
US6763434B2 (en) 2000-12-30 2004-07-13 International Business Machines Corporation Data processing system and method for resolving a conflict between requests to modify a shared cache line
US6842830B2 (en) 2001-03-31 2005-01-11 Intel Corporation Mechanism for handling explicit writeback in a cache coherent multi-node architecture
US6877026B2 (en) 2001-06-08 2005-04-05 Sun Microsystems, Inc. Bulk import in a directory server
US6901485B2 (en) 2001-06-21 2005-05-31 International Business Machines Corporation Memory directory management in a multi-node computer system
US6691192B2 (en) 2001-08-24 2004-02-10 Intel Corporation Enhanced general input/output architecture and related methods for establishing virtual channels therein
US20030074430A1 (en) 2001-10-05 2003-04-17 Gieseke Eric James Object oriented provisioning server object model
US6785774B2 (en) * 2001-10-16 2004-08-31 International Business Machines Corporation High performance symmetric multiprocessing systems via super-coherent data mechanisms
WO2003075162A1 (en) 2002-02-28 2003-09-12 Silicon Graphics, Inc. Method and system for cache coherence in dsm multiprocessor system without growth of the sharing vector
US6944719B2 (en) 2002-05-15 2005-09-13 Broadcom Corp. Scalable cache coherent distributed shared memory processing system
US7269709B2 (en) 2002-05-15 2007-09-11 Broadcom Corporation Memory controller configurable to allow bandwidth/latency tradeoff
US7209976B2 (en) 2002-07-16 2007-04-24 Jeremy Benjamin Protocol communication and transit packet forwarding routed between multiple virtual routers within a single physical router
US7051163B2 (en) * 2002-10-03 2006-05-23 Hewlett-Packard Development Company, L.P. Directory structure permitting efficient write-backs in a shared memory computer system
US6934814B2 (en) 2002-11-05 2005-08-23 Newisys, Inc. Cache coherence directory eviction mechanisms in multiprocessor systems which maintain transaction ordering
US7209776B2 (en) * 2002-12-03 2007-04-24 Aesculap Ag & Co. Kg Method of determining the position of the articular point of a joint
US6922756B2 (en) * 2002-12-19 2005-07-26 Intel Corporation Forward state for use in cache coherency in a multiprocessor system
JP3944449B2 (ja) 2002-12-19 2007-07-11 株式会社日立製作所 計算機システム、磁気ディスク装置、および、ディスクキャッシュ制御方法
US7917646B2 (en) * 2002-12-19 2011-03-29 Intel Corporation Speculative distributed conflict resolution for a cache coherency protocol
US7130969B2 (en) 2002-12-19 2006-10-31 Intel Corporation Hierarchical directories for cache coherency in a multiprocessor system
US7111128B2 (en) * 2002-12-19 2006-09-19 Intel Corporation Hierarchical virtual model of a cache hierarchy in a multiprocessor system
US6954829B2 (en) * 2002-12-19 2005-10-11 Intel Corporation Non-speculative distributed conflict resolution for a cache coherency protocol
JP4085389B2 (ja) * 2003-12-24 2008-05-14 日本電気株式会社 マルチプロセッサシステム、マルチプロセッサシステムにおける一貫性制御装置及び一貫性制御方法
US8145847B2 (en) * 2004-01-20 2012-03-27 Hewlett-Packard Development Company, L.P. Cache coherency protocol with ordering points
US7818391B2 (en) * 2004-01-20 2010-10-19 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration
US7533134B2 (en) 2004-04-01 2009-05-12 Microsoft Corporation Systems and methods for the propagation of conflict resolution to enforce item convergence (i.e., data convergence)

Also Published As

Publication number Publication date
GB0620090D0 (en) 2006-11-22
CN1690986A (zh) 2005-11-02
JP4789926B2 (ja) 2011-10-12
GB2427730A (en) 2007-01-03
TW200608204A (en) 2006-03-01
DE112005000974T5 (de) 2007-03-29
GB2447119A (en) 2008-09-03
CN100377114C (zh) 2008-03-26
GB0802718D0 (en) 2008-03-26
WO2005109206A3 (en) 2006-02-02
WO2005109206A2 (en) 2005-11-17
US7822929B2 (en) 2010-10-26
GB2447119B (en) 2008-12-03
KR100880059B1 (ko) 2009-01-22
GB2427730B (en) 2008-10-29
JP2007535037A (ja) 2007-11-29
US20070022252A1 (en) 2007-01-25
TWI274998B (en) 2007-03-01

Similar Documents

Publication Publication Date Title
KR100880059B1 (ko) 효율적인 이홉(two-hop) 캐시 일관성 프로토콜
US7434006B2 (en) Non-speculative distributed conflict resolution for a cache coherency protocol
US8171095B2 (en) Speculative distributed conflict resolution for a cache coherency protocol
US6922756B2 (en) Forward state for use in cache coherency in a multiprocessor system
US7360033B2 (en) Hierarchical virtual model of a cache hierarchy in a multiprocessor system
US8205045B2 (en) Satisfying memory ordering requirements between partial writes and non-snoop accesses
KR101061667B1 (ko) 클린 데이터 푸싱 방법, 시스템, 에이전트 및 장치
US7779210B2 (en) Avoiding snoop response dependency
US7506108B2 (en) Requester-generated forward for late conflicts in a cache coherency protocol
KR20050074310A (ko) 캐시 라인 소유권 이전 방법 및 장치
US20080005486A1 (en) Coordination of snoop responses in a multi-processor system
US8972663B2 (en) Broadcast cache coherence on partially-ordered network

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20130104

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140103

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141230

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160104

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170102

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180103

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee