KR20050085848A - 멀티프로세서 시스템 내에서의 캐시 일관성에서 사용하기위한 전송 상태 - Google Patents

멀티프로세서 시스템 내에서의 캐시 일관성에서 사용하기위한 전송 상태 Download PDF

Info

Publication number
KR20050085848A
KR20050085848A KR1020057011620A KR20057011620A KR20050085848A KR 20050085848 A KR20050085848 A KR 20050085848A KR 1020057011620 A KR1020057011620 A KR 1020057011620A KR 20057011620 A KR20057011620 A KR 20057011620A KR 20050085848 A KR20050085848 A KR 20050085848A
Authority
KR
South Korea
Prior art keywords
copy
node
data
data segment
request
Prior art date
Application number
KR1020057011620A
Other languages
English (en)
Other versions
KR100634932B1 (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 KR20050085848A publication Critical patent/KR20050085848A/ko
Application granted granted Critical
Publication of KR100634932B1 publication Critical patent/KR100634932B1/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
    • 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
    • G06F12/0822Copy directories
    • 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/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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

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)

Abstract

본 발명에서 설명된 것은 5가지 상태(MESIF): 즉, 변경(M) 상태, 배타적(E) 상태, 공유(S) 상태, 무효(I) 상태 및 전송(F) 상태를 갖는 캐시 일관성 프로토콜이다. MESIF 캐시 일관성 프로토콜은 추가 카피가 이루어질 수 있는 데이터의 단일 카피를 지정하는 전송(F) 상태를 포함한다. F 상태의 캐시 라인은 캐시 라인의 카피 요청에 응답하기 위해 사용된다. 한 실시예에서, 새로 작성된 카피는 F 상태로 놓이고, 이전에 F 상태인 캐시 라인은 공유(S) 상태 또는 무효(I) 상태로 놓인다. 그러므로, 캐시 라인이 공유되면, 하나의 공유된 카피는 F 상태로 있고, 캐시 라인의 나머지 카피는 S 상태로 있는다.

Description

멀티프로세서 시스템 내에서의 캐시 일관성에서 사용하기 위한 전송 상태{FORWARD STATE FOR USE IN CACHE COHERENCY IN A MULTIPROCESSOR SYSTEM}
<관련출원>
본 미합중국 특허 출원은 동시에 출원된 다음의 미합중국 특허 출원과 관련된다:
(1) "Speculative Distributed Conflict Resolution for a Cache Coherency Protocol"이란 발명의 명칭으로 2002년 출원된 출원번호 제10/XXX,XXX(Docket No.P13923);
(2) "Hierarchical Directories for Cache Coherency in a Multiprocessor System"이란 발명의 명칭으로 2002년 출원된 출원번호 제10/XXX,XXX(Docket No.P13984);
(3) "Hierarchical Virtual Model of a Cache Hierarchy in a Multiprocessor System"이란 발명의 명칭으로 2002년 출원된 출원번호 제10/XXX,XXX(Docket No.P13985);
(4) "Non-Speculative Distributed Conflict Resolution for a Cache Coherency Protocol"이란 발명의 명칭으로 2002년 출원된 출원번호 제10/XXX,XXX(Docket No.P13986).
본 발명은 캐시 메모리에 관한 것이다. 더욱 구체적으로, 본 발명은 멀티프로세서 시스템 내에서의 캐시 일관성 프로토콜에서 사용하기 위한 전송(Forward; F) 상태에 관한 것이다.
대부분의 캐시 일관성 프로토콜은 임의 수의 시스템 컴포넌트들(예를 들어, 프로세서들) 사이에서 데이터가 공유될 수 있는 공유 상태를 갖는다. 공유(Shared; S) 상태는 한 시스템 컴포넌트가 데이터의 판독-전용 카피를 요청하고, 그 데이터가 다른 시스템 컴포넌트 내에 배타적(Exclusive; E) 상태로 이미 존재해 있을 때 발생한다. 요청하는 시스템 컴포넌트 및 데이터의 카피를 갖고있는 시스템 컴포넌트는 각각 데이터를 공유 상태로 표시한다. 데이터가 공유 상태로 있으면, 그 데이터는 그 데이터의 판독 전용 카피를 요청하는 시스템 컴포넌트에 의해 자유롭게 카피될 수 있다.
버스 기반 멀티프로세서 시스템에서, 캐시 일관성 프로토콜은 일반적으로 시스템 컴포넌트가 공유 데이터를 요청 시스템 컴포넌트에 제공할 수 없게 한다. 그 대신에, 데이터는 메모리 시스템으로부터 직접 검색된다. 디렉토리 기반 캐시 일관성 프로토콜에서, 메모리 시스템은 또한 공유 카피를 요청 시스템 컴포넌트에 제공한다. 캐시 라인 상태들(따라서, 데이터 상태들)의 디렉토리는 시스템 컴포넌트들과 메모리 사이에 위치하고 있으므로, 데이터는 메모리로부터 검색되어, 요청 시스템 컴포넌트로 보내진다.
공유 상태는, 시스템 컴포넌트들 사이에서 점-대-점 상호접속 네트워크를 사용하는 멀티프로세서 시스템에서, 특히 캐시 라인 상태들을 추적하기 위한 디렉토리에 의존하지 않을 때, 여러가지 문제를 일으킬 수 있다. 그러한 시스템 내의 문제를 제한하기 위해, 종래의 솔루션은 시스템 컴포넌트로부터의 요청이 메모리 시스템으로 직접 라우팅된 후, 메모리 시스템이 데이터(캐시 라인) 상태를 결정하기 위해 그 요청을 방송하고, 그외 다른 시스템 컴포넌트로부터의 응답을 모으며, 그 요청이 수행될 때 데이터가 어떤 상태가 되어야 하는지를 결정하는 것을 담당할 것을 제안한다. 이들 프로토콜은 복귀될 데이터에 대한 다음의 4 홉(hop)을 초래한다: 1) 메모리에 대한 요청자(requestor), 2) 그외 다른 시스템 컴포넌트들에 대한 메모리 방송 요청, 3) 메모리 시스템에 대한 시스템 컴포넌트들 응답, 및 4) 요청자로의 메모리 시스템의 데이터 전송.
완전히 접속된 점-대-점 시스템에서의 요청 수행과 관련된 대기시간을 낮추기 위해, 요청 시스템 컴포넌트는 자신의 요청을 메모리 시스템 뿐만 아니라 다른 모든 시스템 컴포넌트들에게 방송할 수 있다. 다른 시스템 컴포넌트가 공유 상태의 데이터를 가지면, 데이터를 요청자에게 직접 전달할 수 있다. 다수의 시스템 컴포넌트가 동시에 동일한 데이터를 요청하고, 다수의 다른 시스템 컴포넌트가 공유 상태의 데이터를 가질 때 복잡한 일이 발생한다. 요청자 시스템 컴포넌트는 잠재적으로 다수의 데이터 복귀를 처리해야 한다. 하나 이상의 시스템 컴포넌트가 공유 데이터를 변경할 권리를 요청할 때 더 많은 문제들이 발생한다.
시스템 컴포넌트들 중의 한 컴포넌트가 데이터를 변경하고 싶어할 때, 그 컴포넌트는 요청된 데이터를 변경하기 위해 나머지 시스템으로부터 사용권한(permission)을 요청하는 "RFO(request-for-ownership)"를 발행해야 한다. RFO가 승인된 후, 데이터 상태는 공유 상태로부터, 데이터가 변경되었다는 것을 나타내는 다른 상태(예를 들어, 변경 상태)로 변경된다.
예시적으로 나타내기 위해, 도 1a 및 1b는 종래의 캐시 일관성 프로토콜을 갖는 4개의 노드 시스템의 개념도이다. 도 1b의 예에서, 점선은 이전에 보낸 메시지를 나타내고, 실선은 설명되고 있는 메시지를 나타낸다. 이 시스템에서는, 단지 4개의 종래의 캐시 라인 상태, 즉 변경 상태(M), 배타적 상태(E), 공유 상태(S) 및 무효 상태(I)가 사용된다. 이것은 MESI 캐시 일관성 프로토콜로 공지되어 있다. 노드(110, 120 및 130)는 요청된 데이터(예를 들어, 캐시 라인)의 카피를 캐시 메모리 내에 저장하는 피어 노드이다. 홈 노드(140)는 메모리 내에 데이터의 오리지널 카피를 저장하거나, 또는 변경이 메모리로 다시 기입될 때 데이터의 변경된 버전을 저장한다. 즉, 홈 노드(140)는 데이터의 캐시되지 않은 카피를 담당한다. 도 1a의 예에서, 노드(120 및 130)는 캐시 메모리 내에 저장된 요청된 데이터의 카피들을 갖고, 그 데이터는 공유(S) 상태이다.
피어 노드(110)가 데이터를 변경할 권리를 요청하는 RFO를 발행할 때, 피어 노드(110)는 RFO를 시스템의 다른 노드들에게 방송한다. 도 1b에 도시된 바와 같이, 노드(120 및 130)는 요청된 데이터의 카피를 제공함으로써 피어 노드(110)로부터의 요청에 응답한다. 두개의 노드(120 및 130)가 요청된 데이터의 카피들을 제공할 수 있기 때문에, 피어 노드(110)는 요청된 데이터의 다수의 카피를 수신하고 조정할 수 있어야 된다. 이것은 피어 노드(110)의 설계에 복잡도를 추가한다. 시스템 내의 노드의 수가 증가함에 따라, 이 요구사항은 복잡도를 더욱 증가시키고, 이러한 복잡도 증가는 시스템 설계의 비용 및 어려움을 증가시킨다.
다수의 요청하는 노드가, 예를 들어 3개 이상의 노드로부터 요청된 데이터의 카피를 각각 수신하는 더욱 복잡한 상황이 또한 있을 수 있다. 그러므로, 각각의 노드는 적절한 시스템 기능을 보장하기 위해 요청된 데이터의 다수의 충돌 카피들을 해결할 수 있어야 된다.
본 발명은 유사한 참조번호가 유사한 구성요소를 나타내는 첨부된 도면에 예시적으로 나타내고자 하는 것이지, 제한하고자 하는 것은 아니다.
도 1a 및 1b는 종래의 캐시 일관성 프로토콜을 갖는 4개의 노드 시스템을 개념적으로 도시한 도면.
도 2a 및 2b는 전송(Forward) 상태를 사용한, 홈 노드에서 요청 노드로의 데이터 전송을 개념적으로 도시한 도면.
도 3a 내지 3c는 전송 상태를 사용한 피어 노드들 간의 데이터 전송을 개념적으로 도시한 도면.
도 4는 전송 상태를 사용하여 데이터 카피를 제공하는 기술의 한 실시예에 대응하는 흐름도.
도 5는 한 노드에 관한 한 실시예의 블록도.
도 6은 멀티프로세서 시스템의 한 실시예를 도시한 도면.
멀티-노드 시스템에서의 캐시 일관성을 위한 전송(F) 상태의 사용이 설명된다. F 상태는, 요청하는 시스템 컴포넌트에서 수신된 다수의 데이터 카피가 판독 전용 요청이거나 소유를 위한 판독 요청이거나 상관없이, 공유 데이터가 현재의 소유 시스템 컴포넌트에서 요청 시스템 컴포넌트로 전송될 수 있게 한다.
F 상태는, O(Owner) 상태의 데이터를 갖는 시스템 컴포넌트가 시스템 내에서 유일하게 갱신된 데이터 값을 갖는다는 점에서 MOESI(Modified, Owner, Exclusive, Shared 및 Invalid)로 공지되어 있는 종래의 캐시 일관성 프로토콜에서의 O 상태와 다르다. 게다가, 그것은 메모리 시스템 내의 카피와 일치하지 않는다. 이것은 시스템 컴포넌트가 소유 데이터의 퇴출 시에, 메모리 시스템 내에 다시 저장되도록 그 데이터를 보내도록 한다. F 상태는 데이터 값이 메모리 시스템 내의 카피와 일치한다는 것을 나타낸다. 시스템 컴포넌트가 F 상태의 데이터를 퇴출하면, 컴포넌트는 데이터를 메모리 시스템 내로 다시 저장하지 않고 단순히 데이터를 제거할 수 있다.
다음 설명에서는, 설명을 위해, 다양한 특정 상세가 본 발명의 완전한 이해를 제공하기 위해 설명된다. 그러나, 본 분야에 숙련된 기술자라면 본 발명이 소정의 이들 특정 상세가 없어도 실시될 수 있다는 것을 명백히 알 수 있을 것이다. 다른 경우에, 구조들 및 장치들은 본 발명을 불명료하지 않게 하기 위해 블록도 형태로 도시된다.
다음 설명에서는, 5개의 상태(Modified, Exclusive, Shared, Invalid, Forward)를 포함하고, MESIF 프로토콜이라고도 칭해지는 캐시 일관성 프로토콜이 설명된다. 대안적인 실시예에서, 전송(Forward) 상태는 MESI 상태 이외에 및/또는 MESI 상태에 추가하여 사용될 수 있다. 즉, 그 중의 하나가 전송 상태인 5개의 상태가 반드시 필요한 것은 아니다.
캐시 일관성 프로토콜을 제공하기 위해, 몇몇 캐시 일관성 프로토콜 메시지 유형이 설명된다. 예비적으로, 캐시 일관성에 사용된 메시지의 요약이 아래에 제공된다. 설명된 모든 메시지가 F 상태를 갖는 일관성 프로토콜을 제공하기 위해 요구되는 것은 아니지만, 메시지 그룹은 F 상태를 갖는 캐시 일관성 프로토콜을 제공하기 위해 사용될 수 있다.
요청 메시지
다음 메시지는 요청하는 노드(시스템 컴포넌트)로부터의 데이터/액션에 대한 요청이다. 이들 메시지는 시스템의 모든 노드들에게 방송된다.
PRL(Port Read Line) : 이것은, 예를 들어 캐시 라인과 같은 데이터 세그먼트의 카피에 대한 요청이다.
PRIL(Port Read Invalidate Line) : 이것은 제공자 노드의 데이터 카피가 무효화되는 경우에 데이터 세그먼트의 카피에 대한 요청이다. 이것은 "RFO(request-for-ownership)" 유형 메시지이다.
PWL(Port Write Line) : 이 메시지는 데이터(예를 들어, 변경된 캐시 라인)가 메모리에 기입되게 한다. 이 메시지는 또한 "더티 에빅션(dirty eviction)"으로 칭해질 수도 있다.
응답 메시지
다음 메시지는 상술된 요청에 응답하여 피어(즉, 비-홈(Non-Home)) 노드들로부터 요청 노드로 보낸 메시지이다. 홈 노드는 요청된 캐시 라인에 대응하는 메모리 시스템을 포함하는 노드이다.
IACK(Invalid State Acknowledgement) : 이 메시지는 응답을 보내는 노드가 요청된 데이터의 무효 카피를 갖거나 요청된 데
이터의 어떤 카피도 갖지 않을 때의 요청(PRL, PRIL, PWL)에 대한 응답이다.
SACK(Shared State Acknowledgement) : 이 메시지는 응답을 보내는 노드가 요청된 데이터의 카피를 공유 상태로 갖고있고
보유할 때의 요청에 대한 응답이다.
DACK(Acknowledgement of Data Received) : 이 메시지는 요청된 데이터의 수신을 확인 응답한다.
충돌(Conflict) : 이 메시지는 요청된 캐시 라인에 대해 동시 계류중
인 요청이 있다는 것을 나타낸다.
홈 노드로의 메시지
이들 메시지는 피어 노드에 의해 홈 노드로 전송된다.
판독(충돌) : 이 메시지는 홈 노드로부터 데이터를 요청하고, 만일
있다면, 모든 충돌을 열거한다.
CNCL(충돌) : 이 메시지는 피어 노드 내의 히트(hit)에 응답하여 홈
노드로 보내지고, 만일 있다면, 모든 충돌을 열거한다. 이 메시지는 홈
노드의 프리페치(prefetch) 동작을 삭제한다.
홈 노드로부터의 메시지
이들 메시지는 홈 노드로부터 피어 및/또는 요청 노드로 보내진다.
데이터 : 이 메시지는 요청된 데이터를 포함하고, 요청 노드에
의해 사용될 데이터의 상태(M/E/F/S)를 나타낼 수 있다.
ACK(Acknowledge) : 이 메시지는 요청된 데이터가 요청 노드로 보내졌다
는 것을 나타낸다.
대기 : 이 메시지는 수신하는 노드가 추가 메시지를 보내기 전에 인입 데이터를 기다리게 한다.
XFR(Transfer) : 이 메시지는 수신하는 노드가 메시지 내에 표시된 노드로
데이터를 전송하게 한다.
MESIF 캐시 일관성 프로토콜의 개요
본원에 설명된 것은 5개의 상태: 변경 상태, 배타적 상태, 공유 상태, 무효 상태 및 전송 상태(MESIF)를 갖는 캐시 일관성 프로토콜이다. MESIF 캐시 일관성 프로토콜은 추가 카피가 이루어질 수 있는 데이터의 단일 카피를 지정하는 전송(F) 상태를 포함한다. F 상태의 캐시 라인은 캐시 라인의 카피에 대한 요청에 응답하기 위해 사용된다. 한 실시예에서, 새로 작성된 카피는 F 상태로 놓이고, 다른 시스템 컴포넌트(비-홈 노드) 내에서 이전에 F 상태로 있는 캐시 라인은 공유(S) 상태 또는 무효(I) 상태로 놓인다. 그러므로, 캐시 라인이 공유되면, 한 시스템 컴포넌트 내의 하나의 공유된 카피는 F 상태로 있고, 그외 다른 시스템 컴포넌트 내의 캐시 라인의 나머지 카피들은 S 상태로 있는다.
본원에 설명된 MESIF 프로토콜은 본질적으로 단일의 직렬화 버스의 제한이 없는 스누핑(snooping) 프로토콜이기 때문에 새로운 것이다. 스누핑 캐시 프로토콜과 같이, MESIF는 일관성을 유지하기 위해 데이터의 캐시된 카피를 갖는 노드에 의존한다. 동기, 중앙 집중식 방송보다 점-대-점 링크의 사용은 이벤트들이 다른 노드의 시점(viewpoint)과 다른 순서로 발생하는 것처럼 보인다는 점에서 타임-워프(time-warp)의 문제를 끌어들인다. MESIF 프로토콜은 정확하게 타임-워프를 처리하여, 잠재적인 에러들이 발생할 수 있는 때를 인식하고, 확실하게 그 에러들이 정확하게 처리되게 한다. 홈 노드의 개념은 원래 캐시되지 않은 카피가 존재하는 곳을 결정하기 위한 것이지만, 홈 노드는 충돌 및 타임-워프 문제를 해결하기 위해 (중요한 경로 상에 있지 않는) 모든 트랜잭션(transaction)에 관여할 수 있다. 이 방식의 동시-방송 특성으로 인해, MESIF는 스누핑 프로토콜과 관련된 낮은 대기시간을 달성하여, 대개는 최소 가능 대기시간으로: 즉, 단일 왕복주행 요청-응답으로 데이터의 캐시가능한 카피를 획득한다.
타임-워프 문제에 대해 무시하면, 시스템 내에 유일한 캐시된 카피가 있을 때에 2-홉(hop) 액세스를 달성하는 것이 가능하다. F 상태의 도입은 이 능력을 다수의 카피가 존재하는 일반적인 경우로 확대한다. 본질적으로, F 상태는 다수의 노드가 응답 가능할 때 어떤 노드가 응답해야 하는지를 결정하는 "동등한 노드들 중의 대표적인 노드(first-among-equals)"를 설정한다.
MESIF 프로토콜은 홈 노드 뿐만 아니라 모든 피어 노드에게 초기 요청을 방송하는 것을 수반한다. 카피가 상태 E, F 또는 M으로 캐시되면, 그것은 응답 내에 포함된다. 그 다음, 제2 메시지가 홈 노드로 보내져서, 요청이 충족되었다는 것을 알린다. 요청된 라인이 캐시되지 않거나, S 상태의 카피만이 존재하면, 홈 노드로 보내진 제2 요청은 홈 노드가 자신의 메모리로부터 이미 페치되어 있을 수 있는 이전의 요청을 확인하기 위해 사용된다. 어느 경우든, 홈 노드는 동기화 및 충돌 해소를 위해 제2 요청에(그리고, 제1 요청에, 이들 요청은 때때로 결합될 수도 있음) 응답해야 한다. 홈 노드는 하나 이상의 캐시를 가질 수 있으므로, 임의의 다른 노드처럼 초기 요청에 응답할 수 있다는 것에 주의하라.
모든 응답을 기다리기 보다는 데이터가 도달하자마자 그 데이터를 노드가 사용할 수 있게 함으로써 복잡한 일이 생긴다. 그러므로, 데이터의 카피를 수신하는 노드는 수신 즉시 내부에서 데이터를 사용하도록 허용되지만, 그 노드가 홈으로부터 확인을 받을 때까지는 데이터의 사용은 나머지 시스템에게 보이게 하는 효과를 얻지 못할 수 있다. 확인은 또한 그 노드가 자신의 카피를 다른 노드에게 전송해야 하고, 형편에 따라서는 그 노드를 자신의 캐시로부터 퇴출시키는 명령어를 포함할 수 있다.
한 노드가 캐시된 데이터를 공급함으로써 다른 노드로부터의 요청에 응답할 때, 그 노드가 데이터를 전송했다는 사실을 수신확인하는 응답을 그 노드가 홈 노드로부터 수신할 때까지 그 노드는 동일한 캐시 라인에 대해 수신하는 다른 모든 요청을 연기하여, 모든 노드가 (아마도 기입가능한) 캐시 라인의 동일한 전송 순서를 관측하는 것을 보장한다.
홈 노드는 캐시되지 않은 데이터를 위한 저장소이지만, 홈 노드는 또한 요청을 생성하는 프로세서를 가질 수 있고, 하나 이상의 캐시를 포함할 수 있다. 임의의 다른 노드와 마찬가지로, 홈 노드 프로세서가 미스(miss)할 때, 홈 노드는 다른 모든 (피어) 노드들에게 요청을 방송해야 하고, 홈 노드는 홈 노드에 대해 도달하는 임의의 다른 요청과 같이 그 요청을 내부적으로 처리해야 한다. 이것은 홈 노드가 명백하게 메시지를 자신(홈 노드)에게 보내지 않는 특별한 경우라는 것에 주의하라. 또한, 외부 요청이 국부적으로 캐시되는 데이터에 대해 도달할 때, 홈 노드는 홈 노드로부터의 나중의 응답이 불명료하지 않다는 것을 보장하는 방식으로 응답해야 한다. 즉, 홈 노드는 데이터를 공급함으로써 초기 요청에 응답할 수 있지만, 홈 노드는 또한 제2 요청에 대해 홈 노드로서 응답해야 한다.
프로토콜의 변형은 홈 노드가 이 데이터의 유효 여부를 모른 채(데이터의 유효 여부는 요청 노드에게 일임함) 캐시되지 않은 데이터 카피로 응답할 수 있게 하고, 홈 노드로부터의 제2 응답이 데이터가 부적절하게 공급된 경우를 골라낼 수 있게 한다.
전송 상태의 개요
한 실시예에서, 전송 상태는 요청이 비동기식으로 방송되는 시스템에서 사용되는데, 이는 응답이 시스템 내의 모든 노드에 의해 관찰될 수 없다는 것과, (예를 들어, 홈 노드에 의해) 유효 카피가 메모리 내에 저장되기 때문에 F 상태로 저장된 데이터를 갖는 노드가 유일한 카피를 가질 수 없다는 것을 의미한다. 그러므로, O(Owned) 상태의 데이터가 데이터의 유일한 유효 카피인 MOESI 프로토콜의 O 상태와 달리, F 상태의 데이터는 드롭되거나(drop) 원한다면 S 상태로 될 수 있다.
F 상태는 메모리 내에 요청된 데이터의 유효 카피가 존재하는 상황에서 "동등한 것 중의 대표(first among equals)" 개념으로 설명될 수 있다. 이전의 프로토콜(예를 들어, MOESI 및 SCI)은 이러한 상황을 제공하지 않는다. MOESI 프로토콜은 유효 카피가 메모리 내에 유지되지 않기 때문에 소유된 카피를 유지한다. 소유된 카피는 메모리 내의 카피를 갱신함으로써만 제거될 수 있다. SCI 프로토콜은 처리될 디렉토리 노드에 요청이 보내지기 때문에 방송 프로토콜(broadcast protocol)이 아니다.
도 2a 및 2b는 전송(Forward) 상태를 사용한, 홈 노드에서 2개의 피어 노드 각각으로의 데이터 전송을 도시한 개념도이다. 도 2a 및 2b 뿐만 아니라 도 3a 내지 3c의 예에서, 점선은 이전에 보낸 메시지를 나타내고, 실선은 설명되고 있는 메시지를 나타낸다. 도면을 더욱 명확하게 하기 위해, 메시지 세트(예를 들어, PRIL 및 대응하는 IACK)가 해결될 때, 이 메시지를 나타내는 라인들은 더 이상 도면에 포함되지 않는다.
다음 설명은 멀티-노드 시스템 내의 노드들과 관련하여 제공된다. 한 실시예에서, 비-홈 노드는 내부 캐시 메모리 및/또는 외부 캐시 메모리를 갖는 프로세서를 포함한다. 대안적인 실시예에서, 비-홈 노드는 다른 전자 시스템과 상호접속된 전자 시스템(예를 들어, 컴퓨터 시스템, 이동 장치)이다. 또 다른 실시예에서, 각각의 그리고 모든 노드는 내부 캐시 메모리 및 인접한 메모리 시스템을 갖는 프로세서일 수 있다. 상술된 마지막 실시예에서, 노드는 요청된 데이터가 노드의 메모리 시스템 내에 돌아올 때 요청에 대한 홈 노드로서 작용할 수 있다.
도 2a는 요청된 데이터 세트(예를 들어, 캐시 라인)가 홈 노드(240)에 의해서만 저장되는 멀티-노드 시스템을 도시한 것이다. 이러한 상황은, 예를 들어, 데이터 세트가 처음으로 액세스될 때 발생할 수 있다. 데이터는 홈 노드(240)와 관련된 메모리 내에 저장되고, 노드(210, 220 및 230) 중의 임의의 노드와 관련된 캐시 메모리 내에는 저장되지 않는다. 피어 노드(230)는 PRL 메시지를 시스템의 모든 노드에 방송함으로써 데이터 블록을 요청한다. 피어 노드(230)는 다른 유형의 메시지, 예를 들어 PRIL 메시지를 사용하여 데이터 블록을 요청할 수 있다.
도 2b는 피어 노드(230)에 의한 데이터 요청의 응답에 관한 도 2a의 멀티-노드 시스템을 도시한 것이다. 노드(210 및 220)는 IACK 메시지를 피어 노드(230)에게 보내서 노드(210 및 220)의 캐시 메모리가 요청된 데이터의 유효 카피를 포함하지 않는다는 것을 나타낸다. 홈 노드(240)는 요청된 데이터를 피어 노드(230)에게 DataE 메시지로 보낸다. DataE 메시지는 요청된 데이터가 피어 노드(230)에서 E 상태로 저장되어야 한다는 것을 피어 노드(230)에게 나타낸다.
다른 피어 노드, 예를 들어 피어 노드(220)가 동일한 캐시 라인에 후속적인 요청을 할 때, 피어 노드(230)는 피어 노드(220)로부터의 PRL 요청에 (홈 노드(240)에 의해 제공된 DataE 메시지보다 오히려) DataF 메시지로 응답함으로써 캐시 라인을 바로 피어 노드(220)에 제공한다. 피어 노드(230)는 캐시 라인의 자신의 카피를 공유 상태(S)로 변환한다. 더욱이, 피어 노드(220)는 피어 노드(230)로부터의 DataF 메시지와 함께 피어 노드(210)로부터의 응답을 수신하면, CNCL() 메시지를 홈 노드(240)에 보낸다. 그 다음, 홈 노드(240)는 ACK 메시지를 피어 노드(220)에게 보내어, 피어 노드(220)가 캐시 라인을 F 상태로 유지할 수 있게 한다. 그 다음, 피어 노드(220)는 동일한 캐시 라인에 대한 후속적인 요청에 DataF로 응답할 수 있다.
한 실시예에서, F 상태의 데이터 카피는 후속적으로 요청하는 노드에 추가 카피를 제공하기 위해 사용된 카피이다. 그러므로, F 상태의 데이터는 데이터 카피에 대한 장래의 요청에 응답하기 위해 사용된다. 새로 작성된 데이터 카피는 F 상태로 놓이게 되고, 이전에 F 상태인 데이터 카피는 S 상태로 놓인다. 즉, 데이터가 공유되면, 하나의 공유된 카피는 F 상태로 있고, 나머지 데이터 카피는 만약 있다면 S 상태로 있는다. 대안적으로, 요청된 데이터의 카피의 소스는 F 상태로 유지되고, 새로운 카피는 S 상태로 저장된다.
F 상태인 데이터의 단일 카피는 최소한 2가지 장점을 제공한다. 첫째, 캐시-대-캐시 응답은 전형적으로 메모리-대-캐시 응답보다 빠르다. 그러므로, 단일 지정되면, 요청하는 노드에 카피를 제공하기 위해 사용되는 데이터의 캐시된 카피는 멀티-노드 시스템의 전체 성능을 증가시킬 수 있다.
둘째, F 상태는 S 상태에서 변경(M) 상태로의 데이터 변화를 단순화한다. F 상태인 단 하나의 데이터 카피만이 있기 때문에, 이것은 요청들의 충돌을 해소하기 위한 단일 점(single point)으로 고려해두고, 변화를, 다른 모든 카피를 무효로 하는 변화로 축소시킨다. 용장(redundant) 카피를 제공하기 위해 F 상태의 카피를 사용하면, 이 기간 동안 카피의 확산을 금지하는 것이 더욱 간단해진다.
도 3a 내지 3c는 전송 상태를 사용하는 피어 노드들 사이의 데이터 전송을 도시한 개념도이다. 도 3a는 (예를 들어, 도 2a 및 2b에 도시된 바와 같이) 사전에 요청되고 현재 F 상태로 피어 노드(230) 내에 저장된 데이터를 요청하는 피어 노드(210)를 도시한 것이다. 데이터를 요청하기 위해, 피어 노드(210)는 시스템의 다른 노드들에게 PRL 메시지를 방송한다(피어 노드(210)는 또한 PRL 메시지를 노드들의 서브셋에 전송할 수 있다). 피어 노드(220)는 IACK 메시지로 응답하여, 피어 노드(220)가 요청된 데이터의 유효 카피를 갖고있지 않다는 것을 나타낸다. 피어 노드(230)는 데이터 카피를 피어 노드(210)에 제공하고, 피어 노드(210)에게 데이터가 F 상태로 저장되어야 한다는 것을 나타내기 위해, DataF 메시지로 응답한다. 다른 실시예에서, 피어 노드(230)에 의해 저장된 요청된 데이터의 카피는 S 상태로 놓이게 된다.
도 3b는 피어 노드(230)로부터의 요청 데이터 카피의 수신에 응답하는 피어 노드(210)로부터의 메시지를 도시한 것이다. 피어 노드(210)는 피어 노드(220 및 230)로부터 모든 응답을 수신하면, CNCL() 메시지를 홈 노드(240)에 보내서, 홈 노드(240)가 피어 노드(210)로부터의 PRL 메시지에 응답하여 시작된 동작의 페치를 정지하게 하고, PRL 메시지에 관하여 알려진 어떤 충돌도 없다는 것을 나타낸다. 그 다음, 홈 노드(240)는 ACK 메시지를 노드(210)에 보낸다.
도 3c는 피어 노드(230)에서 피어 노드(220)로의 데이터 전송을 종결하는 홈 노드(240)로부터의 최종 메시지를 도시한 것이다. 한 실시예에서, 피어 노드(210)는 일단 ACK 메시지를 수신하면, DACK 메시지를 피어 노드(230)에 보내서, 피어 노드(210)가 요청된 데이터를 피어 노드(230)로부터 수신했다는 것을 나타낸다. 대안적인 실시예에서는, 피어 노드(210)가 DACK 메시지를 노드(230)에 보내게 하기 보다는, 홈 노드(240)가 DACK 메시지를 피어 노드(230)에 보낼 수 있다. 대안적인 실시예에서, 피어 노드(210)로부터의 CNCL() 메시지는, 어떤 피어 노드가 DACK 메시지를 수신할 것인지를 홈 노드(240)가 추적할 수 있도록 피어 노드(210)가 피어 노드(230)로부터 데이터를 수신했다는 것을 나타내는 정보를 포함한다.
도 2a 및 2b 및 도 3a 내지 3c의 예는 4개의 노드 시스템과 관련하여 설명되었지만, 본원에 설명된 기술은 임의의 크기의 멀티-노드 시스템에 적용가능하다. 도 2a 및 2b 및 도 3a 내지 3c의 노드들은 데이터를 저장하고 데이터의 카피를 요청할 수 있는 임의 유형의 컴포넌트를 나타내고자 한 것이다. 예를 들어, 노드는 멀티프로세서 컴퓨터 시스템 내의 캐시 메모리일 수 있고, 또는 노드는 네트워크 내의 컴퓨터 시스템일 수 있으며, 또는 노드는 더욱 복잡한 시스템 내의 하나 이상의 프로세서들 및/또는 캐시 메모리들의 그룹일 수 있다.
프로세스 흐름의 한 실시예
도 4는 전송 상태를 사용하여 데이터 카피를 제공하는 기술의 한 실시예에 대응하는 흐름도이다. 한 실시예에서, 노드가 데이터를 요청할 때, 요청하는 노드는 데이터 요청(예를 들어, PRIL 메시지)을 시스템의 다른 모든 노드에게 방송한다(410). 대안적인 실시예에서, 요청은 시스템 내의 노드들의 서브셋에 전송되거나, 또는 네트워크 접속을 통해 다른 노드들에게 전송될 수 있다.
응답 메시지는 시스템 내의 다른 노드들로부터 수신된다(415). 상술된 바와 같이, 응답 메시지는 몇가지 형태를 취할 수 있다. 요청하는 노드는 요청된 데이터의 유효 카피를 갖지 않는 시스템 내의 노드들로부터 하나 이상의 xACK(예를 들어, IACK, SACK) 메시지를 수신할 것이다. 요청하는 노드는 또한 홈 노드로부터, 또는 F 상태인 요청된 데이터의 카피를 갖는 피어 노드로부터 DATAx(예를 들어, DataF, DataM) 메시지를 수신할 것이다.
모든 응답이 수신되었으면(420), 요청하는 노드는 식별된 충돌 리스트를 갖는 CANCEL 메시지 또는 READ 메시지를 홈 노드에 보낸다(425). ACK 메시지가 홈 노드로부터 수신되면(430), 데이터는 DATA 메시지에 의해 표시된 상태로 저장된다. ACK 메시지보다 오히려 XFER 메시지가 홈 노드로부터 수신되면(440), 요청하는 노드는 홈 노드로부터의 XFER 메시지를 처리한다.
XFER 메시지에 응답하여, 요청하는 노드는 DATA 메시지를 XFER 메시지에 의해 표시된 노드로 보낸다(445). XFER 메시지가 데이터가 무효화되어야 한다는 것을 나타내면(450), 요청하는 노드는 보유된 데이터 카피를 무효화한다(455). XFER 메시지가 요청 노드로 하여금 데이터 카피를 무효화하지 않게 하면(450), 요청 노드는 데이터를 S 상태로 저장한다(460).
노드의 예시적인 실시예
도 5는 노드의 한 실시예의 블록도이다. 노드(500)는 단일 프로세서, 캐시 메모리, 메모리 제어기 및 메모리를 사용하여 도시되지만; 임의 수의 임의의 컴포넌트가 노드 내에 포함될 수 있다. 더 나아가, 추가적인 및/또는 상이한 컴포넌트(예를 들어, 버스 브리지)가 또한 노드 내에 포함될 수 있다.
프로세서(510)는 본 분야에 알려진 임의 유형의 프로세서일 수 있다. 한 실시예에서, 프로세서(510)는 캐시 메모리(520)를 포함한다. 대안적인 실시예에서는, 캐시 메모리(520)는 프로세서(510)의 외부에 있고/있거나, 추가 캐시 메모리가 프로세서(510)의 내부 또는 외부에 포함될 수 있다.
메모리 제어기(530)는 캐시 메모리(520) 및 메모리(540)와 연결된다. 메모리 제어기(530)는 프로세서(510), 캐시 메모리(520) 및 메모리(540) 사이의 인터페이스로서 동작한다. 한 실시예에서, 메모리 제어기(530)는 본원에서 설명된 캐시 일관성 프로토콜에 따라 캐시 일관성을 유지한다. 메모리 제어기(530)는 노드 링크(550)를 통해 그외 다른 노드들과 상호작용한다. 대안적인 실시예에서, 프로세서(510)는 본원에서 설명된 캐시 일관성을 유지하기 위해 메모리 제어기(530)와 상호작용하고, 프로세서(510)는 대안적인 노드 링크(555)를 통해 그외 다른 노드들과 상호작용한다.
멀티프로세서 시스템의 예시적인 실시예
도 6은 멀티프로세서 시스템의 한 실시예이다. 멀티프로세서 시스템은 다중 프로세서들, 예를 들어 컴퓨터 시스템, 실시간 모니터링 시스템 등을 갖는 시스템의 범위를 나타내고자 한 것이다. 대안적인 멀티프로세서 시스템은 더 많거나, 더 적거나, 및/또는 상이한 컴포넌트들을 포함할 수 있다. 소정의 상황에서, 본원에서 설명된 캐시 관리 기술은 단일 프로세서와 멀티프로세서 시스템 둘다에 적용될 수 있다. 멀티프로세서 시스템(600)은 멀티-노드 시스템으로서 동작하도록 구성될 수 있다.
멀티프로세서 시스템(600)은 버스 시스템(610) 또는 정보를 통신하는 그외 다른 통신 장치(들)을 포함한다. 버스 시스템(610)은 임의 수의 버스 및 관련된 상호접속 회로, 예를 들어 버스 브리지를 포함할 수 있다. 프로세서(620)는 버스 시스템(610)과 연결되어 정보를 처리한다. 프로세서(620)는 캐시 메모리(622), 예를 들어 레벨 제로(0) 캐시 메모리, 및 캐시 제어기(624)를 포함할 수 있다. 한 실시예에서, 프로세서(620)는 또한 임의 유형의 캐시 메모리일 수 있는 캐시(625)와 연결된다. 대안적인 실시예에서, 캐시(625)는 버스 시스템(610)과 연결될 수 있다. 그외 다른 유형의 프로세서-캐시 구성이 또한 사용될 수 있다.
한 실시예에서, 캐시 제어기(624)는, 예를 들어 프로세서(620)의 내부 버스일 수 있는 캐시 메모리 인터페이스(628)를 통해 캐시 메모리(622)와 연결된다. 캐시 제어기는 프로세서(620)와 외부 캐시 메모리 사이에 인터페이스를 제공하는 캐시 인터페이스(626)를 통해 캐시 메모리(625)와 연결된다.
멀티프로세서 시스템(600)은 캐시 메모리(632) 및 캐시 제어기(634)를 갖는 프로세서(630)를 더 포함한다. 캐시 제어기(634)는 캐시 인터페이스(638)를 통해 캐시 메모리(632)와 연결된다. 이와 마찬가지로, 캐시 제어기(634)는 캐시 인터페이스(636)를 통해 캐시 메모리(635)와 연결된다. 한 실시예에서, 캐시 메모리(635)는 프로세서(630)와 연결된다.
멀티프로세서 시스템(600)이 2개의 프로세서로 도시되었지만, 멀티프로세서 시스템(600)은 임의 수의 프로세서 및/또는 코프로세서를 포함할 수 있다. 멀티프로세서 시스템(600)은 버스 시스템(610)과 연결된 메모리 시스템(640)을 더 포함한다. 메모리 시스템(640)은 동적(예를 들어, 랜덤 액세스 메모리) 및 정적(예를 들어, 판독 전용 메모리, CD-ROM, 디스크 저장장치, 플래시 메모리) 메모리 장치 및 관련된 드라이브의 적절한 소정의 조합을 포함할 수 있다. 메모리 시스템(640)의 메모리 장치는 멀티프로세서 시스템(600)의 프로세서에 의해 실행될 정보 및 명령어를 저장하기 위해 사용된다. 메모리 시스템(640)은 또한 프로세서들에 의한 명령어의 실행 중에 일시적인 변수 또는 그외 다른 중간 정보를 저장하기 위해 사용될 수 있다.
명령어는 자기 디스크, 판독 전용 메모리(ROM) 집적 회로, CD-ROM, DVD와 같은 정적 또는 원격 저장 장치로부터 유선 또는 무선 등의 원격 접속을 통해 메모리 시스템(640)에 제공될 수 있다. 대안적인 실시예에서는, 하드와이어(hard-wired) 회로가 소프트웨어 명령어 대신에 또는 소프트웨어 명령어와 결합하여 사용될 수 있다. 그러므로, 명령어 시퀀스의 실행은 하드웨어 회로와 소프트웨어 명령어의 임의의 특정 결합에 제한되지 않는다.
멀티프로세서 시스템(600)은 근거리망(LAN) 및/또는 인터넷과 같은 네트워크에 액세스를 제공하기 위해 네트워크 인터페이스(650)를 더 포함한다. 네트워크 인터페이스(650)는 원격의 전자적으로 액세스가능한 매체에 대한 명령어의 통신을 포함할 수 있는 무선 및/또는 유선 네트워크 인터페이스를 제공할 수 있다. 전자적으로 액세스가능한 매체는 전자 장치(예를 들어, 컴퓨터, 퍼스널 디지털 어시스턴트, 셀룰러 폰)에 의해 판독가능한 형태로 내용(예를 들어, 컴퓨터 실행가능 명령어)을 제공하는(즉, 저장 및/또는 전송하는) 임의의 메카니즘을 포함한다.
예를 들어, 기계-액세스가능 매체는 판독 전용 메모리(ROM); 랜덤 액세스 메모리(RAM); 자기 디스크 저장 매체; 광학 저장 매체; 플래시 메모리 장치; 전기, 광학, 음향 또는 다른 형태의 전파 신호(예를 들어, 반송파, 적외선 신호, 디지털 신호)를 포함한다.
멀티프로세서 시스템(600)은 또한 정보를 표시하기 위해 브라운관(CRT) 또는 액정 디스플레이(LCD)와 같은 표시 장치(660)를 포함할 수 있다. 예를 들어, 영숫자 및 그외 다른 키를 갖는 키보드를 포함하는 입력 장치(들)(670)은 전형적으로 정보 및 커맨드 선택을 프로세서(620 및/또는 630)에 통신하기 위해 버스(610)에 연결된다. 다른 유형의 사용자 입력 장치는 방향 정보 및 커맨드 선택을 프로세서(620 및 630)에 통신하고 표시 장치(660) 상의 커서 이동을 제어하기 위한, 마우스, 트랙볼 또는 커서 방향 키와 같은 커서 제어 장치이다.
결론
명세서에서 "한 실시예" 또는 "실시예"라고 하는 언급은 그 실시예와 관련하여 설명된 특별한 특징, 구조 또는 특성이 본 발명의 최소한 한 실시예에 포함된다는 것을 의미한다. 명세서의 여러 곳에서 나오는 "한 실시예에서"라는 표현은 반드시 모두가 동일한 실시예를 칭하는 것은 아니다.
상기 명세서에서, 본 발명은 특정 실시예와 관련하여 설명되었다. 그러나, 본 발명의 보다 광범위한 정신 및 범위를 벗어나지 않고서 여러가지 변경 및 변형이 이루어질 수 있다는 것을 명백하게 알 수 있을 것이다. 따라서, 명세서 및 도면은 제한적이기보다는 오히려 예시적인 것으로 간주될 수 있다. F 상태는 버스 기반의 멀티프로세서 시스템에서 사용될 수 있다.

Claims (34)

  1. 다수의 캐시 메모리들을 갖고있는 시스템 내의 하나 이상의 캐시 메모리 내에 데이터 블록을 저장하는 단계;
    상기 데이터 블록의 카피에 대한 방송 요청에 응답하기 위해 사용될 카피로서 상기 데이터 블록의 단일 캐시 카피(single cached copy)를 지정하는 단계; 및
    상기 데이터 블록의 상기 지정된 카피를 저장하는 캐시 메모리에 상기 데이터 블록의 카피를 제공함으로써 상기 데이터 블록에 대한 상기 방송 요청에 응답하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 요청은 수신하는 캐시 메모리들 내의 캐시 동작들에 관하여 비동기로 방송되는 방법.
  3. 제1항에 있어서,
    요청하는 캐시 메모리에 응답으로서 제공된 상기 데이터 블록의 상기 카피를 저장하는 단계를 더 포함하고, 상기 요청하는 캐시 메모리에 의해 저장된 상기 데이터 블록의 상기 카피는 상기 데이터 블록의 카피에 대한 장래의 요청에 응답하기 위해 사용될 단일 캐시 카피로서 지정되는 방법.
  4. 제1항에 있어서,
    상기 데이터 블록은 캐시 라인을 포함하는 방법.
  5. 제1항에 있어서,
    상기 데이터 블록의 상기 지정된 카피를 저장하는 상기 캐시 메모리에 상기 데이터 블록의 카피를 제공함으로써 상기 데이터 블록에 대한 요청에 응답하는 단계는,
    상기 데이터 블록에 대한 요청을 수신하는 단계;
    상기 데이터 블록의 카피가 로컬 캐시 메모리 내에 저장되는지의 여부를 판정하는 단계;
    상기 데이터 블록의 카피가 상기 로컬 캐시 메모리 내에 저장되면, 상기 저장된 데이터 블록이 상기 데이터 블록의 상기 지정된 카피인지의 여부를 판정하는 단계; 및
    상기 저장된 데이터 블록이 상기 데이터 블록의 상기 지정된 카피이면 요청하는 캐시 메모리에 상기 데이터 블록의 카피를 전송하는 단계
    를 포함하는 방법.
  6. 요청하는 노드로부터 멀티-노드 시스템의 하나 이상의 노드들로 데이터 세그먼트의 카피에 대한 요청을 전송하는 단계 - 상기 요청을 수신하는 상기 노드들 중의 한 노드는 비-캐시(non-cache) 메모리 내에 상기 데이터 세그먼트를 저장하는 홈 노드이고, 비-홈(non-home) 노드들은 각각의 피어 노드들과 관련된 캐시 메모리들 내에, 만일 있다면, 카피를 저장하는 상기 요청 노드에 대한 피어 노드들임 - ;
    어떤 피어 노드들도 상기 데이터 세그먼트의 공유가능한 카피를 저장하지 않으면 상기 홈 노드로부터 상기 데이터 세그먼트의 카피를 제공하는 단계; 및
    상기 데이터 세그먼트의 카피를 전송 상태로 저장하는 상기 피어 노드로부터 상기 데이터 세그먼트의 카피를 제공하는 단계
    를 포함하고,
    다수의 피어 노드들에 의해 저장된 상기 데이터 세그먼트의 다수의 카피들 중의 단 하나의 카피는 전송 상태(forward state)로 지정되는 방법.
  7. 제6항에 있어서,
    상기 지정된 피어 노드가 상기 데이터 세그먼트의 카피를 저장하기 위한 유일한 피어 노드이면, 상기 데이터 세그먼트의 카피를 갖고있는 지정된 피어 노드로부터 상기 데이터 세그먼트의 카피를 제공하는 단계를 더 포함하는 방법.
  8. 제6항에 있어서,
    상기 요청하는 노드에 제공된 상기 데이터 세그먼트의 상기 카피를 상기 전송 상태인 것으로 지정하는 단계; 및
    상기 전송 상태인 상기 피어 노드로부터의 상기 데이터 세그먼트의 상기 카피를 상기 요청하는 노드로부터의 상기 데이터 세그먼트 요청에 응답하여 공유 상태인 것으로 지정하는 단계
    를 더 포함하는 방법.
  9. 제6항에 있어서,
    상기 요청하는 노드로부터의 상기 멀티-노드 시스템의 하나 이상의 노드들로 상기 데이터 세그먼트의 카피에 대한 상기 요청을 전송하는 단계는 상기 멀티-노드 시스템의 모든 비-요청(non-requesting) 노드에 상기 요청을 방송하는 단계를 포함하는 방법.
  10. 제6항에 있어서,
    상기 요청하는 노드로부터 상기 멀티-노드 시스템의 하나 이상의 노드들로 상기 데이터 세그먼트의 카피에 대한 상기 요청을 전송하는 단계는 상기 멀티-노드 시스템의 모든 비-요청 노드의 서브셋에 상기 요청을 전송하는 단계를 포함하는 방법.
  11. 제6항에 있어서,
    상기 데이터 세그먼트는 캐시 라인을 포함하는 방법.
  12. 제6항에 있어서,
    상기 데이터 세그먼트는 캐시 라인보다 작은 데이터 블록을 포함하는 방법.
  13. 제6항에 있어서,
    상기 데이터 세그먼트는 캐시 라인보다 큰 데이터 블록을 포함하는 방법.
  14. 데이터 세그먼트의 오리지널 카피를 저장하기 위해 메모리 시스템과 연결된 홈 노드; 및
    버스 시스템을 통해 상기 홈 노드와 연결되고, 캐시 메모리들을 갖고있는 다수의 피어 노드
    를 포함하고,
    상기 데이터 세그먼트의 카피를 요청하는 요청 피어 노드에 의한 요청에 응답하여, 비-요청 피어 노드가 전송 상태의 상기 데이터 세그먼트의 카피를 갖고 있으면, 상기 비-요청 피어 노드가 상기 데이터 세그먼트의 카피를 제공하고, 어떤 비-요청 피어 노드도 상기 전송 상태의 상기 데이터 세그먼트의 카피를 갖고 있지 않으면, 상기 홈 노드가 상기 데이터 세그먼트의 카피를 제공하며, 또한 상기 데이터 세그먼트의 하나 이상의 캐시된 카피들 중의 단 하나의 카피만이 상기 요청 이전에 상기 전송 상태로 있는 시스템.
  15. 제14항에 있어서,
    상기 데이터 세그먼트는 캐시 라인을 포함하는 시스템.
  16. 제14항에 있어서,
    상기 데이터 세그먼트는 캐시 라인보다 작은 데이터 블록을 포함하는 시스템.
  17. 제14항에 있어서,
    상기 데이터 세그먼트는 캐시 라인보다 큰 데이터 블록을 포함하는 시스템.
  18. 제14항에 있어서,
    상기 요청 피어 노드는 상기 데이터 세그먼트에 대한 상기 요청을 상기 홈 노드 및 각각의 상기 비-요청 피어 노드에 방송하는 시스템.
  19. 제14항에 있어서,
    상기 요청 피어 노드는 상기 데이터 세그먼트에 대한 상기 요청을 각각의 상기 비-요청 피어 노드 및 상기 홈 노드의 서브셋에 전송하는 시스템.
  20. 캐시 메모리 제어기;
    상기 캐시 메모리 제어기와 연결되고, 상기 캐시 메모리 제어기가 캐시 메모리와 상호작용할 수 있게 하는 캐시 메모리 인터페이스; 및
    상기 캐시 메모리 제어기와 연결되고, 상기 캐시 메모리 제어기가 시스템의 다른 컴포넌트들과 상호작용할 수 있게 하는 시스템 인터페이스
    를 포함하고,
    상기 캐시 메모리 제어기는, 데이터 세그먼트가 사용될 것이고 상기 데이터 세그먼트의 유효 카피가 상기 캐시 메모리 내에 저장되지 않을 때 상기 데이터 세그먼트에 대한 요청을 상기 시스템 인터페이스를 통해 전송하고, 또한 상기 요청된 데이터 세그먼트의 카피가 수신될 때, 상기 캐시 메모리 제어기는 상기 요청된 데이터의 상기 카피가 상기 캐시 메모리 내에 저장되고 전송 상태로 지정될 수 있게 하며, 또한 상기 데이터 세그먼트의 카피 요청이 상기 시스템 인터페이스를 통해 수신될 때, 상기 캐시 메모리 제어기는 상기 저장된 카피가 상기 전송 상태로 있으면, 상기 데이터 세그먼트의 카피가 전송될 수 있게 하는 장치.
  21. 제20항에 있어서,
    상기 데이터 세그먼트는 캐시 라인을 포함하는 장치.
  22. 제20항에 있어서,
    상기 캐시 메모리 제어기는 상기 데이터 세그먼트에 대한 상기 요청이 멀티-노드 시스템의 각 노드에 방송될 수 있게 하는 장치.
  23. 제20항에 있어서,
    상기 캐시 메모리 제어기는 상기 데이터 세그먼트에 대한 상기 요청이 멀티-노드 시스템의 노드들의 서브셋에 방송될 수 있게 하는 장치.
  24. 제20항에 있어서,
    상기 캐시 메모리 제어기와 외부 메모리 사이의 상호작용을 허용하도록 상기 캐시 메모리 제어기와 연결된 메모리 인터페이스를 더 포함하고, 상기 외부 메모리가 홈 노드로 지정되는 데이터 세그먼트의 카피 요청에 응답하여, 상기 캐시 메모리 제어기는 상기 데이터 세그먼트가 상기 외부 메모리로부터 검색되고 상기 네트워크 인터페이스를 통해 요청 노드로 전송될 수 있게 하는 장치.
  25. 기계 판독가능 명령어들을 제공하기 위한 기계 액세스가능 매체를 포함하는 제품에 있어서, 실행시에 하나 이상의 전자 시스템이,
    다수의 캐시 메모리들을 갖고있는 시스템 내의 하나 이상의 캐시 메모리 내에 데이터 블록을 저장하게 하고;
    상기 데이터 블록의 카피들에 대한 요청들에 응답하기 위해 사용될 카피로서 상기 데이터 블록의 단일 캐시 카피를 지정하게 하고;
    상기 데이터 블록의 상기 지정된 카피를 저장하는 상기 캐시 메모리에 상기 데이터 블록의 카피를 제공함으로써 상기 데이터 블록에 대한 요청에 응답하게 하는
    명령어들을 포함하는 것을 특징으로 하는 제품.
  26. 제25항에 있어서,
    실행시에 상기 하나 이상의 전자 시스템이,
    요청하는 캐시 메모리에 응답으로서 제공된 상기 데이터 블록의 상기 카피를 저장하게 하는 명령어를 더 포함하고, 상기 요청하는 캐시 메모리에 의해 저장된 상기 데이터 블록의 상기 카피는 상기 데이터 블록의 카피에 대한 장래의 요청들에 응답하기 위해 사용될 단일 캐시 카피로서 지정되는 제품.
  27. 제25항에 있어서,
    상기 데이터 블록은 캐시 라인을 포함하는 제품.
  28. 제25항에 있어서,
    상기 하나 이상의 전자 시스템이, 상기 데이터 블록의 상기 지정된 카피를 저장하는 상기 캐시 메모리에 상기 데이터 블록의 카피를 제공함으로써 상기 데이터 블록에 대한 요청에 응답하게 하는 상기 명령어들은, 실행시에 상기 하나 이상의 전자 시스템이,
    상기 데이터 블록에 대한 요청을 수신하게 하고;
    상기 데이터 블록의 카피가 로컬 캐시 메모리 내에 저장되는지의 여부를 판정하게 하고;
    상기 데이터 블록의 카피가 상기 로컬 캐시 메모리 내에 저장되면, 상기 저장된 데이터 블록이 상기 데이터 블록의 상기 지정된 카피인지의 여부를 판정하게 하고;
    상기 저장된 데이터 블록이 상기 데이터 블록의 상기 지정된 카피이면 요청하는 캐시 메모리에 상기 데이터 블록의 카피를 전송하게 하는
    명령어들을 포함하는 제품.
  29. 기계 판독가능 명령어들을 제공하기 위한 기계 액세스가능 매체를 포함하는 제품에 있어서, 실행시에 하나 이상의 전자 시스템이,
    요청하는 노드로부터 멀티-노드 시스템의 하나 이상의 노드들로 데이터 세그먼트의 카피에 대한 요청을 전송하게 하고 - 상기 요청을 수신하는 상기 노드들 중의 한 노드는 비-캐시 메모리 내에 상기 데이터 세그먼트를 저장하는 홈 노드이고, 비-홈 노드는 각각의 피어 노드들과 관련된 캐시 메모리들 내에, 만일 있다면, 카피를 저장하는 상기 요청 노드에 대한 피어 노드들임 - ;
    어떤 피어 노드들도 상기 데이터 세그먼트의 공유가능한 카피를 저장하지 않으면 상기 홈 노드로부터 상기 데이터 세그먼트의 카피를 제공하게 하고; 및
    상기 데이터 세그먼트의 카피를 전송 상태로 저장하는 상기 피어 노드로부터 상기 데이터 세그먼트의 카피를 제공하게 하는
    명령어들을 포함하고,
    다수의 피어 노드들에 의해 저장된 상기 데이터 세그먼트의 다수의 카피들 중의 단 하나의 카피는 전송 상태로 지정되는 제품.
  30. 제29항에 있어서,
    실행시에 상기 하나 이상의 전자 시스템이, 지정된 피어 노드가 상기 데이터 세그먼트의 카피를 저장하기 위한 유일한 피어 노드이면, 상기 데이터 세그먼트의 카피를 갖고있는 상기 지정된 피어 노드로부터 상기 데이터 세그먼트의 카피를 제공하게 하는 명령어들을 더 포함하는 제품.
  31. 제29항에 있어서,
    실행시에 상기 하나 이상의 전자 시스템이,
    상기 요청하는 노드에 제공된 상기 데이터 세그먼트의 상기 카피를 상기 전송 상태인 것으로 지정하게 하고;
    상기 전송 상태인 상기 피어 노드로부터의 상기 데이터 세그먼트의 상기 카피를 상기 요청하는 노드로부터의 상기 데이터 세그먼트 요청에 응답하여 공유 상태인 것으로 지정하게 하는
    명령어들을 더 포함하는 제품.
  32. 제29항에 있어서,
    상기 하나 이상의 전자 시스템이, 상기 요청하는 노드로부터 상기 멀티-노드 시스템의 하나 이상의 노드들로 상기 데이터 세그먼트의 카피에 대한 상기 요청을 전송하게 하는 상기 명령어들은 실행시에 상기 하나 이상의 전자 시스템이, 상기 멀티-노드 시스템의 모든 비-요청 노드에 상기 요청을 방송하게 하는 명령어들을 포함하는 제품.
  33. 제29항에 있어서,
    상기 하나 이상의 전자 시스템이, 상기 요청하는 노드로부터 상기 멀티-노드 시스템의 하나 이상의 노드들로 상기 데이터 세그먼트의 카피에 대한 상기 요청을 전송하게 하는 상기 명령어들은, 실행시에 상기 하나 이상의 전자 시스템이, 상기 멀티-노드 시스템의 모든 비-요청 노드의 서브셋에 상기 요청을 전송하게 하는 명령어들을 포함하는 제품.
  34. 제29항에 있어서,
    상기 데이터 세그먼트는 캐시 라인을 포함하는 제품.
KR1020057011620A 2002-12-19 2003-12-03 멀티프로세서 시스템 내에서의 캐시 일관성에서 사용하기위한 전송 상태 KR100634932B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/325,069 US6922756B2 (en) 2002-12-19 2002-12-19 Forward state for use in cache coherency in a multiprocessor system
US10/325,069 2002-12-19

Publications (2)

Publication Number Publication Date
KR20050085848A true KR20050085848A (ko) 2005-08-29
KR100634932B1 KR100634932B1 (ko) 2006-10-18

Family

ID=32593643

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057011620A KR100634932B1 (ko) 2002-12-19 2003-12-03 멀티프로세서 시스템 내에서의 캐시 일관성에서 사용하기위한 전송 상태

Country Status (7)

Country Link
US (1) US6922756B2 (ko)
EP (1) EP1573556A2 (ko)
JP (3) JP2006510119A (ko)
KR (1) KR100634932B1 (ko)
CN (2) CN1729458B (ko)
AU (1) AU2003294560A1 (ko)
WO (1) WO2004061678A2 (ko)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8185602B2 (en) 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US20050160238A1 (en) * 2004-01-20 2005-07-21 Steely Simon C.Jr. System and method for conflict responses in a cache coherency protocol with ordering point migration
US8176259B2 (en) * 2004-01-20 2012-05-08 Hewlett-Packard Development Company, L.P. System and method for resolving transactions in a cache coherency protocol
US8145847B2 (en) * 2004-01-20 2012-03-27 Hewlett-Packard Development Company, L.P. Cache coherency protocol with ordering points
US7620696B2 (en) * 2004-01-20 2009-11-17 Hewlett-Packard Development Company, L.P. System and method for conflict responses in a cache coherency protocol
US7395374B2 (en) * 2004-01-20 2008-07-01 Hewlett-Packard Company, L.P. System and method for conflict responses in a cache coherency protocol with ordering point migration
US8090914B2 (en) * 2004-01-20 2012-01-03 Hewlett-Packard Development Company, L.P. System and method for creating ordering points
US8468308B2 (en) * 2004-01-20 2013-06-18 Hewlett-Packard Development Company, L.P. System and method for non-migratory requests in a cache coherency protocol
US7769959B2 (en) 2004-01-20 2010-08-03 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration to memory
US7818391B2 (en) 2004-01-20 2010-10-19 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration
US7822929B2 (en) * 2004-04-27 2010-10-26 Intel Corporation Two-hop cache coherency protocol
US20060143384A1 (en) * 2004-12-27 2006-06-29 Hughes Christopher J System and method for non-uniform cache in a multi-core processor
US7788240B2 (en) * 2004-12-29 2010-08-31 Sap Ag Hash mapping with secondary table having linear probing
US7437518B2 (en) * 2005-09-07 2008-10-14 Intel Corporation Hiding conflict, coherence completion and transaction ID elements of a coherence protocol
US7620694B2 (en) * 2005-09-27 2009-11-17 Intel Corporation Early issue of transaction ID
US20070073979A1 (en) * 2005-09-29 2007-03-29 Benjamin Tsien Snoop processing for multi-processor computing system
US20070150664A1 (en) * 2005-12-28 2007-06-28 Chris Dombrowski System and method for default data forwarding coherent caching agent
US7543115B1 (en) 2006-01-11 2009-06-02 Intel Corporation Two-hop source snoop based cache coherence protocol
US7512741B1 (en) 2006-01-11 2009-03-31 Intel Corporation Two-hop source snoop based messaging protocol
JP5168800B2 (ja) * 2006-03-08 2013-03-27 富士通株式会社 マルチプロセッサシステム
US7506108B2 (en) * 2006-06-30 2009-03-17 Intel Corporation Requester-generated forward for late conflicts in a cache coherency protocol
US7536515B2 (en) * 2006-06-30 2009-05-19 Intel Corporation Repeated conflict acknowledgements in a cache coherency protocol
US7721050B2 (en) * 2006-06-30 2010-05-18 Intel Corporation Re-snoop for conflict resolution in a cache coherency protocol
US7774551B2 (en) * 2006-10-06 2010-08-10 Hewlett-Packard Development Company, L.P. Hierarchical cache coherence directory structure
US8495272B2 (en) * 2006-11-29 2013-07-23 International Business Machines Corporation Method to save bus switching power and reduce noise in an engineered bus
US8131940B2 (en) * 2007-03-31 2012-03-06 Intel Corporation Methods and apparatuses to support memory transactions using partial physical addresses
FR2927437B1 (fr) 2008-02-07 2013-08-23 Bull Sas Systeme informatique multiprocesseur
WO2009130671A1 (en) * 2008-04-22 2009-10-29 Nxp B.V.Accomp. Pdoc Multiprocessing circuit with cache circuits that allow writing to not previously loaded cache lines
US8706974B2 (en) * 2008-04-30 2014-04-22 Freescale Semiconductor, Inc. Snoop request management in a data processing system
US8423721B2 (en) * 2008-04-30 2013-04-16 Freescale Semiconductor, Inc. Cache coherency protocol in a data processing system
US8762652B2 (en) * 2008-04-30 2014-06-24 Freescale Semiconductor, Inc. Cache coherency protocol in a data processing system
US8190820B2 (en) * 2008-06-13 2012-05-29 Intel Corporation Optimizing concurrent accesses in a directory-based coherency protocol
US8250311B2 (en) 2008-07-07 2012-08-21 Intel Corporation Satisfying memory ordering requirements between partial reads and non-snoop accesses
US8205045B2 (en) * 2008-07-07 2012-06-19 Intel Corporation Satisfying memory ordering requirements between partial writes and non-snoop accesses
US8111615B2 (en) 2008-07-07 2012-02-07 Intel Corporation Dynamic update of route table
US9189424B2 (en) * 2011-05-31 2015-11-17 Hewlett-Packard Development Company, L.P. External cache operation based on clean castout messages
US10204049B2 (en) * 2012-01-06 2019-02-12 Intel Corporation Value of forward state by increasing local caching agent forwarding
US9235519B2 (en) 2012-07-30 2016-01-12 Futurewei Technologies, Inc. Method for peer to peer cache forwarding
CN102902631B (zh) * 2012-09-18 2015-04-15 杭州中天微系统有限公司 一种避免读缺失时数据回写的多处理器核间传输方法
WO2014065880A1 (en) * 2012-10-22 2014-05-01 Robert Beers Coherence protocol tables
US10268583B2 (en) 2012-10-22 2019-04-23 Intel Corporation High performance interconnect coherence protocol resolving conflict based on home transaction identifier different from requester transaction identifier
CN103294612B (zh) * 2013-03-22 2014-08-13 浪潮电子信息产业股份有限公司 在多级缓存一致性域系统局部域构造Share-F状态的方法
CN104714901B (zh) * 2015-03-13 2018-07-03 浪潮集团有限公司 一种基于计数器的粗结构目录设计方法
CN104991868B (zh) * 2015-06-09 2018-02-02 浪潮(北京)电子信息产业有限公司 一种多核处理器系统和缓存一致性处理方法
CN105446840B (zh) * 2015-11-24 2019-02-12 无锡江南计算技术研究所 一种Cache一致性极限测试方法
US10795817B2 (en) * 2018-11-16 2020-10-06 Western Digital Technologies, Inc. Cache coherence for file system interfaces
US11544193B2 (en) 2020-09-11 2023-01-03 Apple Inc. Scalable cache coherency protocol

Family Cites Families (17)

* 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
JP2746530B2 (ja) * 1993-01-30 1998-05-06 洲 植 全 共有メモリマルチプロセッサ
JP3183993B2 (ja) * 1993-03-31 2001-07-09 株式会社東芝 ディスク制御システム
US5530932A (en) * 1994-12-23 1996-06-25 Intel Corporation Cache coherent multiprocessing computer system with reduced power operating features
US5787478A (en) * 1997-03-05 1998-07-28 International Business Machines Corporation Method and system for implementing a cache coherency mechanism for utilization within a non-inclusive cache memory hierarchy
US5946709A (en) * 1997-04-14 1999-08-31 International Business Machines Corporation Shared intervention protocol for SMP bus using caches, snooping, tags and prioritizing
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
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
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
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
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
JP4363539B2 (ja) * 1999-06-04 2009-11-11 諏訪熱工業株式会社 ボールペン用ボール
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
US7124252B1 (en) * 2000-08-21 2006-10-17 Intel Corporation Method and apparatus for pipelining ordered input/output transactions to coherent memory in a distributed memory, cache coherent, multi-processor system
US6826619B1 (en) * 2000-08-21 2004-11-30 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6571322B2 (en) * 2000-12-28 2003-05-27 International Business Machines Corporation Multiprocessor computer system with sectored cache line mechanism for cache intervention
US6615319B2 (en) * 2000-12-29 2003-09-02 Intel Corporation Distributed mechanism for resolving cache coherence conflicts in a multi-node computer architecture

Also Published As

Publication number Publication date
JP2013058225A (ja) 2013-03-28
US6922756B2 (en) 2005-07-26
CN101127009A (zh) 2008-02-20
JP2006510119A (ja) 2006-03-23
AU2003294560A1 (en) 2004-07-29
US20040123046A1 (en) 2004-06-24
EP1573556A2 (en) 2005-09-14
CN101127009B (zh) 2012-01-11
CN1729458A (zh) 2006-02-01
JP2009064471A (ja) 2009-03-26
KR100634932B1 (ko) 2006-10-18
WO2004061678A3 (en) 2005-02-03
CN1729458B (zh) 2012-02-22
WO2004061678A2 (en) 2004-07-22

Similar Documents

Publication Publication Date Title
KR100634932B1 (ko) 멀티프로세서 시스템 내에서의 캐시 일관성에서 사용하기위한 전송 상태
US7434006B2 (en) Non-speculative distributed conflict resolution for a cache coherency protocol
US7917646B2 (en) Speculative distributed conflict resolution for a cache coherency protocol
US7234029B2 (en) Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US7360033B2 (en) Hierarchical virtual model of a cache hierarchy in a multiprocessor system
US7376793B2 (en) Cache coherence protocol with speculative writestream
KR100880059B1 (ko) 효율적인 이홉(two-hop) 캐시 일관성 프로토콜
US8806147B2 (en) System and method for creating ordering points
US7240165B2 (en) System and method for providing parallel data requests
JP2007257637A (ja) アクセラレータ用低コストのキャッシュ一貫性を維持する方法及びシステム
KR101061667B1 (ko) 클린 데이터 푸싱 방법, 시스템, 에이전트 및 장치
US6269428B1 (en) Method and system for avoiding livelocks due to colliding invalidating transactions within a non-uniform memory access system
US7506108B2 (en) Requester-generated forward for late conflicts in a cache coherency protocol

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

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20131001

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140930

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20151002

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee