KR20090053837A - 자기 조화형 데이터를 이용하여 멀티프로세서 시스템의 캐시 코히어런스 오버헤드를 저감시키는 메카니즘 및 방법 - Google Patents

자기 조화형 데이터를 이용하여 멀티프로세서 시스템의 캐시 코히어런스 오버헤드를 저감시키는 메카니즘 및 방법 Download PDF

Info

Publication number
KR20090053837A
KR20090053837A KR1020097006012A KR20097006012A KR20090053837A KR 20090053837 A KR20090053837 A KR 20090053837A KR 1020097006012 A KR1020097006012 A KR 1020097006012A KR 20097006012 A KR20097006012 A KR 20097006012A KR 20090053837 A KR20090053837 A KR 20090053837A
Authority
KR
South Korea
Prior art keywords
cache
data
self
harmonized
copy
Prior art date
Application number
KR1020097006012A
Other languages
English (en)
Inventor
지아오웨이 센
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20090053837A publication Critical patent/KR20090053837A/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/0817Cache consistency protocols using directory methods
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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/082Associative directories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

캐시 코히어런스를 유지하기 위한 시스템(300)은 복수의 캐시(예를 들면, 301) -상기 복수의 캐시중 적어도 제1 캐시와 제2 캐시는 상호접속 네트워크(302)를 통하여 접속되어 있다- 와, 상호접속 네트워크(302)에 접속되어 있고 메모리 어드레스의 데이터를 저장하기 위한 메모리(305)와, 자기 조화형 데이터 예측 메카니즘을 구비한 복수의 코히어런스 엔진(예를 들면, 307)을 구비하고 있고, 여기에서 복수의 코히어런스 엔진 중 제1 코히어런스 엔진은 제1 캐시(예를 들면, 304)와 동작적으로 연관되고 복수의 코히어런스 엔진 중 제2 코히어런스 엔진은 제2 캐시와 동작적으로 연관되며, 제1 캐시는 캐시 미스의 경우에 메모리 어드레스의 데이터를 요구하고 자기 조화형 데이터 예측 메카니즘에 따라서 보통의 데이터 카피와 자기 조화형 데이터 카피 중의 하나를 수신한다.

Description

자기 조화형 데이터를 이용하여 멀티프로세서 시스템의 캐시 코히어런스 오버헤드를 저감시키는 메카니즘 및 방법{MECHANISMS AND METHODS OF USING SELF-RECONCILED DATA TO REDUCE CACHE COHERENCE OVERHEAD IN MULTIPROCESSOR SYSTEMS}
관련 출원의 교차 참조
이 출원은 2006년 10월 2일자 출원한 미국 출원번호 제11/541,911호를 우선권 주장하며, 그 전체 내용은 인용에 의해 여기에 통합된다.
발명의 분야
본 발명은 컴퓨터 시스템 분야에 관한 것으로, 특히 자기 조화형 데이터(self-recondiled data)를 이용하여 공유 메모리 멀티프로세서 시스템의 캐시 코히어런스 오버헤드를 저감시키는 것에 관한 것이다.
전형적으로, 공유 메모리 멀티프로세서 시스템은 캐시 코히어런스 메카니즘을 이용하여 캐시 코히어런스를 보장한다. 캐시 미스가 발생한 경우, 요구 캐시(requesting cache)는 캐시 요구를 메모리 및 그의 모든 피어 캐시에 전송한다. 피어 캐시가 캐시 요구를 수신하면, 피어 캐시는 그 캐시 디렉토리를 검색하여 피요구 데이터(requested data)가 있는지 여부 및 대응 캐시 라인의 상태를 나타내는 캐시 스누프 응답을 발생한다. 만일 피요구 데이터가 피어 캐시에 있으면, 피어 캐 시는 그 데이터를 캐시 대 캐시 전송을 통하여 요구 캐시에 공급할 수 있다. 메모리는 데이터가 어떠한 피어 캐시에 의해서도 공급될 수 없는 경우에 데이터를 공급한다.
도 1을 참조하면, 상호접속 네트워크(102)를 통하여 다수의 노드들이 상호접속되어 있는 예시적인 공유 메모리 멀티프로세서 시스템(100)이 도시되어 있다. 각 노드는 프로세서 코어와 캐시를 구비하고 있다(예를 들면, 노드(101)는 프로세서 코어(103)와 캐시(104)를 구비하고 있다). 상호접속 네트워크에는 메모리(105)와 I/O 장치(106)가 또한 접속되어 있다. 메모리(105)는 다수의 기억부로 물리적으로 분배되어 각 기억부가 노드와 동작적으로 연관되게 할 수 있다. 상호접속 네트워크(102)는 적어도 2가지의 목적으로, 즉 캐시 코히어런스 요구를 캐시 및 메모리에 전송하는 것 및 캐시와 메모리 사이에서 데이터를 전송하는 목적으로 사용된다. 비록 4개의 노드만이 도시되어 있지만, 시스템에는 임의 갯수의 노드가 포함될 수 있다. 또한 각각의 처리 유닛은, 당업자라면 잘 알고 있는 바와 같이, 복수의 캐시로 이루어진 캐시 계층구조(cache hierarchy)를 포함할 수 있다.
캐시 코히어런스를 달성하기 위한 많은 기술이 당업계에 알려져 있다. 다수의 소위 스누피 캐시 코히어런스 프로토콜이 제안되어 있다. MESI 스누피 캐시 코히어런스 프로토콜 및 그 변형체가 공유 메모리 멀티프로세서 시스템에서 널리 사용되어 왔다. 명칭이 제시하고 있는 것처럼, MESI는 4개의 캐시 상태, 즉, 수정(modified; M), 배타적(exclusive; E), 공유(shared; S) 및 무효(invalid; I) 상태를 갖는다. 캐시 라인이 무효 상태에 있으면, 캐시 내의 데이터는 유효하지 않 다. 캐시 라인이 공유 상태에 있으면, 캐시 내의 데이터는 유효하고 다른 캐시에서도 유효일 수 있다. 공유 상태는 데이터가 메모리 또는 다른 캐시로부터 검색될 때 진입되고, 대응 스누프 응답은 데이터가 기타의 캐시들 중 적어도 하나의 캐시에서 유효임을 표시한다. 만일 캐시 라인이 배타적 상태에 있으면, 캐시 내의 데이터는 유효이고 다른 캐시에서는 유효일 수 없다. 또한 캐시 내의 데이터는 메모리에 유지되어 있는 데이터와 관련하여 수정되지 않았다. 배타적 상태는 데이터가 메모리 또는 다른 캐시로부터 검색된 때 진입되고, 대응 스누프 응답은 데이터가 다른 캐시에서 유효하지 않음을 표시한다. 만일 캐시 라인이 수정 상태에 있으면, 그 캐시 내의 데이터는 유효이고 다른 캐시에서는 유효일 수 없다. 또한, 데이터는 저장 동작의 결과로서 수정되었다.
캐시 미스가 발생한 때, 만일 피요구 데이터가 메모리 및 다른 캐시 둘 다에 있으면, 캐시 대 캐시 전송 대기시간(latency)이 메모리 액세스 대기시간보다 더 작을 수 있기 때문에 캐시 대 캐시 전송을 통한 데이터의 공급이 바람직할 것이다. 예를 들어서, IBM® 파워 4 시스템은 MESI 프로토콜을 강화시켜서 공유 캐시 라인의 데이터가 동일한 멀티칩 모듈 내의 다른 캐시에 캐시 대 캐시 전송을 통하여 공급될 수 있게 한다. 또한, 만일 수정된 캐시 라인의 데이터가 다른 캐시에 공급되면, 수정된 데이터는 즉시 메모리에 되쓰기되지 않는다. 가장 최신의 데이터를 가진 캐시는 데이터가 최후로 교체된 때 메모리 갱신의 책임을 가질 수 있다.
캐시 미스는 판독 미스(read miss) 또는 기록 미스(write miss)일 수 있다. 판독 미스는 공유 데이터 카피가 무효 캐시 라인에서 요구된 때 발생한다. 기록 미 스는 배타적 데이터 카피가 무효 또는 공유 캐시 라인에서 요구된 때 발생한다.
본 발명의 설명의 목적으로, 캐시 요구를 발생하는 캐시를 캐시 요구의 "요구 캐시"(requesting cache)라고 부른다. 캐시 요구는 하나 이상의 캐시 및 메모리에 보내질 수 있다. 캐시 요구가 주어진 때, 만일 캐시가 피요구 데이터를 캐시 대 캐시 전송을 통하여 요구 캐시에 공급할 수 있다고 대응 캐시 상태가 표시하면 그 캐시는 "소스 캐시"(sourcing cache)라고 부른다.
전형적인 스누피 캐시 코히어런스에 있어서, 캐시 요구는 시스템 내의 모든 캐시에 방송된다. 이것은 특히 대형 공유 메모리 멀티프로세서 시스템에 있어서 전체 성능, 시스템 확장성 및 전력 소모성에 부정적으로 영향을 미칠 수 있다. 또한 캐시 요구의 무차별적인 방송은 다량의 네트워크 대역폭을 소모할 수 있고, 피어 캐시의 무차별적인 스누핑은 과도한 캐시 스누프 포트를 필요로 할 수 있다. 캐시 요구의 서비스는 멀리 떨어진 캐시가 불필요하게 스누프될 때 많은 시간이 소요될 수 있다는 것에 주목할 필요가 있다.
디렉토리 기반 캐시 코히어런스 프로토콜은 스누프 기반 캐시 코히어런스 프로토콜의 확장성 제한을 극복하기 위해 제안되었다. 전형적인 디렉토리 기반 프로토콜은 메모리 블록이 현재 캐시되고 있는 캐시들을 기록하기 위해 각 메모리 블록에 대한 디렉토리 엔트리로서 디렉토리 정보를 유지한다. 예를 들면, 풀맵(full-map) 디렉토리 구조에 있어서, 각 디렉토리 엔트리는 시스템 내의 각 노드에 대하여 1비트를 포함하고, 이 1비트는 노드가 메모리 블록의 데이터 카피를 갖고 있는지를 표시한다. 데이터가 수정 캐시를 반영하도록 메모리를 갱신하지 않고 노드에 서 수정되었는지 여부를 표시하기 위해 더티 비트(dirty bit)를 사용할 수 있다. 메모리 어드레스가 주어지면, 그 디렉토리 엔트리는 전형적으로 대응 물리 메모리가 상주하는 노드에서 유지된다. 이 노드는 메모리 어드레스의 "홈"(home)이라고 부른다. 캐시 미스가 발생한 때, 요구 캐시는 캐시 요구를 홈에 보내고, 홈은 디렉토리 정보에 따라서 적절한 점대점(point-to-point) 코히어런스 메시지를 발생한다.
캐시 코히어런스 오버헤드를 감소시키면 대규모 공유 메모리 멀티프로세서 시스템의 확장성 및 성능을 개선한다. 계층구조의 공유 메모리 멀티프로세서 시스템은 스누피 기반 및 디렉토리 기반 캐시 코히어런스를 다른 캐시 레벨로 사용할 수 있다. 스누피 기반 캐시 코히어런스를 사용하거나 디렉토리 기반 캐시 코히어런스를 사용하거나에 상관없이, 프로세서가 공유 상태로 캐시되는 어드레스에 기록을 행하려고 할 때, 데이터가 캐시되는 캐시에 전형적으로 무효화 요구 메시지가 전송될 필요가 있다.
스누피 캐시 코히어런스 프로토콜에 있어서, 요구 캐시는 무효화 요구를 모든 캐시에 방송한다. 스누피 캐시 코히어런스 프로토콜은 스누프 필터링 메카니즘으로 더욱 강화되어서 요구 캐시가 상기 스누프 필터링 메카니즘에 따라서 데이터를 캐시하려고 하는 캐시들에 무효화 요구를 멀티캐스트할 필요만이 있게 할 수 있다. 캐시가 무효화 요구를 수신한 때, 캐시는 공유 캐시 라인이 있는 경우 그 공유 캐시 라인을 무효화하고 무효화 확인 응답을 요구 캐시에 되돌려 보낸다. 무효화 확인 응답은 버스 기반 시스템에서 버스 신호 또는 네트워크 기반 시스템에서 점대 점 메시지일 수 있다. 요구 캐시는 무효화 확인 응답이 모두 수신될 때까지 대응 캐시 라인의 배타적 소유권을 획득할 수 없다.
디렉토리 기반 캐시 코히어런스 프로토콜에 있어서, 요구 캐시는 무효화 요구를 대응하는 홈에 보내고, 홈은 무효화 요구를 디렉토리 쇼가 데이터를 포함할 수 있는 캐시에만 멀티캐스트한다. 캐시가 무효화 요구를 수신한 때, 캐시는 공유 캐시 라인이 있는 경우 그 공유 캐시 라인을 무효화하고 무효화 확인 응답을 홈에 되돌려 보낸다. 홈이 무효화 확인 응답을 수신한 때, 홈은 대응 캐시 라인의 배타적 소유권을 공급하게 하는 메시지를 요구 캐시에 보낸다.
공유 메모리 멀티프로세서 시스템은 메모리 액세스 동작의 세만틱(semantic)을 규정하는 메모리 일관성(consistency) 모델을 구현한다. 예시적인 메모리 모델은 순차 일관성, 및 해제 일관성(release consistency)과 같은 각종 이완 메모리(relaxed memory) 모델을 포함한다. 임의의 실행 결과가 모든 프로세서의 연산이 동일 순서로 실행된 경우와 동일하면 시스템은 순차적으로 일치하고, 개별 프로세서 각각의 연산은 이 순서에서 그 프로그램에 의해 지정된 순으로 나타난다.
공유 상태에서 캐시되는 어드레스에 대한 메모리 기록 동작을 위하여, 순차적 일관성은 전형적으로 임의의 후속 메모리 동작이 수행될 수 있기 전에 무효화 확인 응답이 모두 수신되는 것을 필요로 한다. 이와 대조적으로, 이완 메모리 모델은 무효화 동작이 다음 동기화 점 이전에 모두 확인 응답되면 후속 메모리 동작이 수행되는 것을 허용한다. 예를 들면, 해제 일관성은 동기화를 취득 및 해제 동작으로서 분류한다. 다른 프로세서와 관련하여 통상의 로드 또는 저장 액세스가 수행될 수 있기 전에, 이전의 취득 액세스가 모두 수행되어야 한다. 다른 프로세서와 관련하여 해제 액세스가 수행될 수 있기 전에, 이전의 통상 로드 및 저장 액세스가 모두 수행되어야 한다.
무효화 요구 및 확인 응답이 네트워크 대역폭을 소비한다는 것은 명백하다. 한편, 무효화 동작은 또한 과도한 대기시간 오버헤드의 결과를 가져올 수 있다. 대규모 공유 메모리 시스템에서, 무효화 동작의 대기시간은 크게 변할 수 있다. 도 2는 복수의 멀티칩 모듈을 포함하는 예시적인 계층구조 공유 메모리 멀티프로세서 시스템을 도시한 것이다. 각 멀티칩 모듈은 복수의 칩을 포함하고, 각 칩은 복수의 처리 노드를 포함하고 있다. 도시된 바와 같이, 노드 A, B, C 및 D는 동일한 칩(201) 상에 있고, 이 칩(201)은 노드 E 및 F와 함께 동일한 멀티칩 모듈(202) 상에 있다. 노드 G는 다른 멀티칩 모듈상에 있다.
노드 A, B, C, D, E, F 및 G에서 현재 캐시되는 어드레스를 생각하자. 노드 A의 프로세서가 이 어드레스에 기록하려고 하고, 따라서 노드 B, C, D, E, F 및 G에 무효화 요구를 전송한다고 가정한다. 당업자라면 온칩(on-chip) 통신이 전형적으로 칩대칩(chip-to-chip) 통신보다 더 고속이고, 칩대칩 통신이 전형적으로 모듈 대 모듈 통신보다 더 고속이라는 것을 알고 있을 것이다. 따라서, 노드 B, C 및 D에서의 무효화 대기시간이 전형적으로 노드 E 및 F에서의 무효화 대기시간보다 더 작고, 노드 E 및 F에서의 무효화 대기시간이 전형적으로 노드 G에서의 무효화 대기시간보다 더 작다. 이 경우 노드 A가 노드 G로부터의 무효화 확인 응답을 기다리는 것은 비효율적이다.
그러므로, 멀티프로세서 시스템에서 캐시 코히어런스 오버헤드를 저감시키는 메카니즘의 필요성이 대두된다.
본 발명의 일 실시예에 따르면, 캐시 코히어런스를 유지하기 위한 시스템은 복수의 캐시 -복수의 캐시중 적어도 제1 캐시와 제2 캐시는 상호접속 네트워크를 통하여 접속되어 있다- 와, 상호접속 네트워크에 접속되어 있고 메모리 어드레스의 데이터를 저장하기 위한 메모리와, 자기 조화형(self-reconciled) 데이터 예측 메카니즘을 구비한 복수의 코히어런스 엔진을 구비하고 있고, 여기에서 복수의 코히어런스 엔진 중 제1 코히어런스 엔진은 제1 캐시와 동작적으로 연관되고 복수의 코히어런스 엔진 중 제2 코히어런스 엔진은 제2 캐시와 동작적으로 연관되며, 제1 캐시는 캐시 미스의 경우에 메모리 어드레스의 데이터를 요구하고 자기 조화형 데이터 예측 메카니즘에 따라서 보통(regular)의 데이터 카피와 자기 조화형 데이터 카피 중의 하나를 수신한다.
본 발명의 일 실시예에 따르면, 캐시 코히어런스를 유지하기 위한 컴퓨터 구현 방법은 메모리 어드레스에서 캐시 미스를 서비스하기 위해 제1 캐시가 데이터 카피를 요구하는 단계와, 자기 조화형 데이터 예측 메카니즘이 자기 조화형 데이터 예측 결과 -이 예측 결과는 보통의 데이터 카피가 공급되어야 하는지 또는 자기 조화형 데이터 카피가 공급되어야 하는지를 표시하는 것임- 를 발생하는 단계와, 제1 캐시가 자기 조화형 데이터 예측 결과에 따라서 보통의 데이터 카피와 자기 조화형 데이터 카피 중의 하나를 수신하는 단계를 포함한다.
본 발명의 일 실시예에 따르면, 기계에 의해 판독가능하고 기계에 의해 실행되어 캐시 코히어런스를 유지하기 위한 방법 단계들을 수행하게 하는 명령어 프로그램을 구체화하는 프로그램 기억 장치가 제공된다. 상기 방법은 메모리 어드레스에서 캐시 미스를 서비스하기 위해 제1 캐시가 데이터 카피를 요구하는 단계와, 자기 조화형 데이터 예측 메카니즘을 실행시키는 프로세서에 의해 자기 조화형 데이터 예측 결과 -이 예측 결과는 보통의 데이터 카피가 공급되어야 하는지 또는 자기 조화형 데이터 카피가 공급되어야 하는지를 표시하는 것임- 를 발생하는 단계와, 제1 캐시가 자기 조화형 데이터 예측 결과에 따라서 보통의 데이터 카피와 자기 조화형 데이터 카피 중의 하나를 수신하는 단계를 포함한다.
본 발명은 첨부 도면을 참조한 이하의 설명으로부터 더 잘 이해할 수 있을 것이다. 첨부 도면에 있어서, 동일한 참조 부호는 동일한 요소를 표시한다.
도 1은 각 노드가 프로세서 코어와 캐시를 포함하며, 상호접속 네트워크를 통해 상호접속된 복수의 노드를 구비한 예시적인 공유 메모리 멀티프로세서 시스템을 나타내는 도면이다.
도 2는 각 멀티칩 모듈이 복수의 칩을 포함하는 복수의 멀티칩 모듈을 구비한 예시적인 계층구조 공유 메모리 멀티프로세서 시스템을 나타내는 도면이다.
도 3은 각 노드가 자기 조화형 데이터 예측을 지원하는 코히어런스 엔진을 포함하며, 상호접속 네트워크를 통해 상호접속된 복수의 노드를 구비한 공유 메모리 멀티프로세서 시스템을 나타내는 도면이다.
도 4는 본 발명의 실시예에 따라 스누피 캐시 코히어런스를 가진 멀티프로세서 시스템의 예시적인 자기 조화형 데이터 예측 공정을 나타내는 도면이다.
도 5는 본 발명의 실시예에 따라 디렉토리 기반 캐시 코히어런스를 가진 멀티프로세서 시스템의 예시적인 자기 조화형 데이터 예측 공정을 나타내는 도면이다.
도 6은 본 발명의 실시예에 따라서 보통의 공유 상태, 공유-과도 상태 및 공유-과도-투기 상태를 수반하는 캐시 상태 천이도이다.
도 7은 본 발명의 실시예에 따른 시스템도이다.
이하, 본 발명의 예시적인 실시예를 설명한다. 발명의 내용을 명확히 하기 위해, 실제 구현예의 구성 요소들을 모두 이 명세서에서 설명하지는 않는다. 물론, 그러한 실제 구현예의 전개에 있어서, 개발자의 특정 목표, 예를 들면 구현예마다 다를 수 있는 시스템 관련 및 비즈니스 관련 제약들에 따르는 것과 같은 개발자의 특정 목표를 달성하기 위해 여러가지 구현예마다 특정된 결정들은 행하여져야 한다. 더욱이, 그러한 개발 노력은 복잡하고 시간 소모적이지만, 본 발명의 이익을 취하는 당업자를 위하여 행하는 하나의 과정이다.
본 발명이 여러가지의 수정 형태 및 대안 형태로서 나타날 수 있지만, 도면에서는 특정 실시예를 단지 예로서 도시하고 그에 대해서 자세히 설명하겠다. 그러나, 이 특정 실시예의 설명은 여기에서 설명된 특정 형태로 본 발명을 제한하는 의도는 없고, 반대로 본 발명은 발명의 정신 및 범위 내에 속하는 모든 수정예, 등가 예 및 대안예를 망라하는 것으로 이해하여야 한다.
본 발명의 일 실시예에 따르면, 자기 조화형 데이터는 멀티프로세서 시스템에서 캐시 코히어런스 오버헤드를 저감시키기 위해 사용된다. 캐시 라인은 캐시 자신이 데이터의 코히어런스를 유지할 책임이 있으면 자기 조화되고, 데이터가 다른 캐시에서 수정되는 경우 캐시 코히어런스는 무효화 요구를 전송하여 자기 조화형 캐시 라인을 무효화시키지 않고서는 타협될 수 없다.
캐시가 공유 카피를 획득할 필요가 있을 때, 캐시는 보통의 카피 또는 자기 조화형 카피를 획득할 수 있다. 보통의 카피와 자기 조화형 카피의 차이는, 데이터가 다른 캐시에서 나중에 수정되는 경우에 그 캐시는 보통의 카피를 무효화시키기 위해 무효화 요구를 전송할 필요가 있지만, 자기 조화형 카피를 무효화시키기 위해 무효화 요구를 전송할 필요가 없다는 데에 있다. 프로세서에 의해 실행되는 소프트웨어는 보통의 카피를 사용해야 하는지 자기 조화형 카피를 사용해야 하는지를 표시하는 발견적(heuristic) 정보를 제공할 수 있다. 예를 들면, 이러한 발견적 정보는 캐시 미스가 메모리 로드 동작에 의해 야기되는 경우 보통의 카피를 검색해야 하는지 자기 조화형 카피를 검색해야 하는지를 표시하는 메모리 로드 명령과 관련될 수 있다.
대안적으로, 멀티프로세서 시스템의 하위 캐시 코히어런스 프로토콜은 자기 조화형 데이터 예측 메카니즘에 의해 강화될 수 있으며, 자기 조화형 데이터 예측 메카니즘은 요구 캐시가 어드레스의 데이터를 검색할 필요가 있는 때, 요구 캐시에 보통의 카피를 공급해야 하는지 자기 조화형 카피를 공급해야 하는지를 결정한다. 스누피 캐시 코히어런스에서는, 자기 조화형 데이터 예측은 요구 캐시측 또는 소스 캐시측에서 구현될 수 있고, 디렉토리 기반 캐시 코히어런스에서는, 자기 조화형 데이터 예측은 요구 캐시측 또는 홈측에서 구현될 수 있다.
이제 도 3을 참조하면, 복수의 노드들이 상호접속 네트워크(302)를 통하여 상호접속된 공유 메모리 멀티프로세서 시스템(300)이 도시되어 있다. 각 노드는 프로세서 코어, 캐시 및 코히어런스 엔진을 포함하고 있다(예를 들면, 노드(301)는 프로세서 코어(303), 캐시(304) 및 코히어런스 엔진(307)을 포함하고 있다). 또한, 상호접속 네트워크에는 메모리(305)와 입력/출력(I/O) 장치가 접속된다. 각각의 코히어런스 엔진은 대응하는 캐시와 동작적으로 연관되고, 시스템의 캐시 코히어런스를 보장하는 캐시 코히어런스 프로토콜을 구현한다. 코히어런스 엔진은 대응 캐시의 성분으로서 또는 캐시로부터의 별도 모듈로서 구현될 수 있다. 코히어런스 엔진은 단독으로 또는 서로 협력하여 자기 조화형 데이터 예측의 구현예 지원을 제공한다.
스누피 캐시 코히어런스 프로토콜을 사용하는 멀티프로세서 시스템에서, 자기 조화형 데이터는 무효화 요구가 시스템 내의 모든 캐시에 항상 방송될 필요가 없도록 스누피 프로토콜이 적당한 필터링 정보로 증대되는 경우에 사용될 수 있다.
예시적인 자기 조화형 데이터 예측 메카니즘은 소스 캐시측에서 구현된다. 소스 캐시가 공유 카피에 대한 캐시 요구를 수신한 때, 소스 캐시는 (a) 보통의 데이터 카피가 요구 캐시에서 캐시되지 않는다고 스누프 필터링 정보가 나타내는 경우(그리하여 자기 조화형 카피가 공급되면 무효화 동작은 스누프 필터링 정보에 따 라 장래에 회피될 수 있다), (b) 네트워크 대역폭 소모가 캐시 코히어런스 메시지 때문에 높다고 네트워크 트래픽 모니터가 표시하는 경우에 자기 조화형 카피가 공급되어야 한다는 것을 예측한다.
다른 예시적인 자기 조화형 데이터 예측은 요구 캐시측 및 소스 캐시측 둘 다에서 적당한 지원을 통하여 구현된다. 판독 캐시 미스의 경우에, 요구 캐시는 대응 어드레스가 요구 캐시에 없는 경우 자기 조화형 카피가 제공되어야 한다는 것을 예측한다. 요구 캐시는 대응 어드레스가 요구 캐시에서 무효화 상태로 있는 경우에 보통의 카피가 제공되어야 한다는 것을 예측한다. 요구 캐시측의 예측 결과는 요구 캐시로부터 발행된 대응 캐시 요구에 부착된다. 소스 캐시가 캐시 요구를 수신한 때, 소스 캐시는 (a) 보통의 데이터 카피가 요구 캐시에서 캐시되지 않고, (b) 보통의 데이터 카피가 한꺼번에 캐시될 수 있는 다른 캐시들로부터 요구 캐시가 멀리 떨어져 있다고 스누프 필터링 정보가 표시하는 경우 자기 조화형 카피가 제공되어야 한다고 예측한다. 소스 캐시는 자기 조화형 카피가 공급되어야 한다고 요구 캐시측 예측 결과 및 소스 캐시측 예측 결과가 모두 표시하는 경우에 자기 조화형 카피를 공급한다. 소스 캐시가 없으면 메모리는 요구 캐시에 보통의 카피를 공급할 수 있다는 점에 주목한다.
도 4는 소스 캐시로부터 피요구 데이터가 공급되는 경우에 전술한 자기 조화형 데이터 예측 공정을 나타내는 도면이다. 피요구 어드레스가 요구 캐시에 없으면(401), 소스 캐시측의 스누프 필터링 메카니즘은 피요구 어드레스의 보통의 데이터 카피가 요구 캐시에서 캐시되지 않음을 표시하고(402), 소스 캐시측의 스누프 필터링 메카니즘도 또한 요구 캐시가 피요구 어드레스의 보통의 데이터 카피로부터 멀리 떨어져 있음을 표시하며(403), 전체적인 자기 조화형 데이터 예측 결과는 소스 캐시가 자기 조화형 카피를 요구 캐시에 공급해야 하는 것으로 된다(404). 그렇지 않은 경우에, 전체적인 자기 조화형 데이터 예측 결과는 소스 캐시가 보통의 데이터 카피를 요구 캐시에 공급해야 하는 것으로 된다(405).
디렉토리 기반 캐시 코히어런스 프로토콜을 사용하는 멀티프로세서 시스템에서, 자기 조화형 데이터 예측은 요구 캐시측에서 또는 홈측에서 구현될 수 있다. 예시적인 자기 조화형 데이터 예측 메카니즘은 홈측에서 구현된다. 어드레스의 홈이 판독 캐시 요구를 수신한 때, 홈은 홈과 요구 캐시 사이의 통신 대기시간이 대응 디렉토리 정보에 따라서 보통의 데이터 카피가 그때에 캐시될 수 있는 다른 캐시들과 홈 사이의 통신 대기시간보다 훨씬 더 큰 경우 자기 조화형 카피가 공급되어야 한다는 것을 결정한다.
다른 예시적인 자기 조화형 데이터 예측 메카니즘은 요구 캐시측 및 홈측 둘 다에서 적당한 지원을 통하여 구현된다. 판독 캐시 미스의 경우에, 요구 캐시는 대응 어드레스가 요구 캐시에 없는 경우 자기 조화형 카피가 제공되어야 한다는 것을 예측한다. 요구 캐시는 대응 어드레스가 요구 캐시에서 무효화 상태로 있는 경우에 보통의 카피가 제공되어야 한다는 것을 예측한다. 요구 캐시측의 예측 결과는 요구 캐시로부터 홈에 전송된 대응 캐시 요구에 포함된다. 홈이 캐시 요구를 수신한 때, 홈은 홈과 요구 캐시 사이의 통신 대기시간이 대응 디렉토리 정보에 따라서 보통의 데이터 카피가 캐시될 수 있는 다른 캐시들과 홈 사이의 통신 대기시간보다 훨씬 더 큰 경우 자기 조화형 카피가 공급되어야 한다는 것을 예측한다. 마지막으로, 홈은 자기 조화형 카피가 공급되어야 한다고 요구 캐시측 예측 결과 및 홈측 예측 결과가 모두 표시하는 경우에 자기 조화형 카피가 공급되어야 한다고 결정한다.
도 5는 전술한 자기 조화형 데이터 예측 공정을 나타내는 도면이다. 피요구 어드레스가 요구 캐시에 없으면(501), 홈과 요구 캐시 사이의 통신 대기시간이 보통의 데이터 카피가 그때에 캐시될 수 있다고 홈 디렉토리가 표시하는 피어 캐시들과 홈 사이의 통신 대기시간보다 더 크고(502), 전체적인 자기 조화형 데이터 예측 결과는 홈이 자기 조화형 카피를 요구 캐시에 공급해야 하는 것으로 된다(503). 그렇지 않은 경우에, 전체적인 자기 조화형 데이터 예측 결과는 홈이 보통의 데이터 카피를 요구 캐시에 공급해야 하는 것으로 된다(504).
디렉토리 기반 캐시 코히어런스 프로토콜은 제한된 디렉토리 공간을 사용하여 디렉토리 유지의 오버헤드를 저감시키도록 선택할 수 있고, 제한된 수의 캐시 식별자가 디렉토리에 기록될 수 있다. 홈측에서 구현되는 예시적인 자기 조화형 데이터 예측 메카니즘은 제한된 디렉토리 공간이 사용되었고 대응 디렉토리에 기록될 수 있는 추가의 캐시 식별자가 없는 경우에 자기 조화형 카피가 공급되어야 한다고 결정한다. 대안적으로, 홈은 보통의 데이터 카피를 요구 캐시에 공급할 수 있고, 다른 캐시에서 캐시된 보통의 데이터 카피를 자기 조화형 데이터 카피로 다운그레이드할 수 있다(그래서 대응하는 캐시 식별자는 더이상 디렉토리에 기록될 필요가 없다).
본 발명의 예시적인 실시예에서, 캐시 코히어런스 프로토콜은 새로운 캐시 상태로 확장되어 자기 조화형 데이터를 사용할 수 있게 한다. 공유 캐시 라인의 경우에, 보통의 공유(S) 캐시 상태에 추가하여, 우리는 2개의 새로운 캐시 상태, 즉 공유-과도(shared-transient;ST) 상태와 공유-과도-투기(shared-transient-speculative;STS) 상태를 도입한다. 만일 캐시 라인이 보통의 공유 상태에 있으면, 데이터는 보통의 공유 카피이다. 따라서, 만일 데이터가 캐시에서 수정되면, 그 캐시는 무효화 요구를 발행하여 보통의 공유 카피가 제때에 무효화될 수 있도록 할 필요가 있다.
만일 캐시 라인이 공유-과도 상태에 있으면, 데이터는 무효화되지 않는 자기 조화형 공유 카피이고, 데이터는 다른 캐시에서 수정되어야 한다. 공유-과도 상태에 있는 캐시의 데이터는 데이터가 진정으로 최신의 것인지를 보장하기 위해 자기 조화 동작을 수행함이 없이 1회만 사용될 수 있다는 것에 주목하여야 한다. 데이터가 1회만 사용될 수 있다는 것의 정확한 의미는 메모리 모델의 세만틱에 의존한다. 순차적인 일관성에 의해, 데이터는 하나의 판독 동작에 대하여 최신의 것으로 보장되고, 약한 메모리 모델에 의해 데이터는 다음 동기화 점 이전에 판독 동작에 대한 최신의 것으로 보장될 수 있다.
공유-과도 상태에 있는 캐시 라인에 대하여, 일단 캐시 라인의 데이터가 사용되면, 캐시 라인의 캐시 상태는 공유-과도-투기 상태로 된다. 공유-과도-투기 상태는 캐시 라인의 데이터가 최신의 것이거나 구식의 것임을 표시한다. 그 결과, 피어 캐시 또는 메모리가 아닌 캐시 자체는 궁극적으로 데이터 코히어런스를 유지할 책임을 진다. 공유-과도-투기 캐시 라인의 데이터는 투기 데이터(speculative data)로서 사용되어 그 데이터에 접근하는 대응 프로세서가 투기적으로 그 연산을 계속할 수 있게 한다는 점에 주목하여야 한다. 한편, 대응 캐시는 그 피어 캐시 및 메모리에 적당한 코히어런스 메시지를 발행하여 데이터가 다른 곳에서 수정된 경우에 최신의 데이터가 획득되도록 보장할 필요가 있다. 투기 데이터를 이용한 연산은 전형적으로 투기 데이터가 부정확한 것으로 전환된 경우에 복구(roll back)될 필요가 있다.
당업자라면 어드레스의 데이터가 복수의 캐시에서 캐시될 때 데이터는 다른 캐시에서 동시에 보통의 공유 상태, 공유-과도 상태 및 공유-과도-투기 상태로 캐시될 수 있다는 것을 알 것이다. 일반적으로 말해서, 데이터는 만일 캐시된 데이터가 다른 프로세서에 의해 수정되기 전에 1회만 또는 매우 적은 횟수로만 사용되거나, 또는 공유 카피의 무효 대기시간이 다른 공유 카피의 무효 대기시간보다 더 크다면 캐시에서 공유-과도 상태로 캐시된다. 전술한 자기 조화형 데이터 예측 메카니즘은 캐시 미스의 피요구 데이터가 보통의 공유 상태로 캐시되는지 공유-과도 상태로 캐시되어야 하는지를 예측하기 위해 사용될 수 있다.
공유 캐시 라인의 데이터가 수정될 필요가 있을 때, 캐시는 데이터가 보통의 공유 상태로 캐시되는 그들의 피어 캐시에 무효화 요구를 전송할 필요만 있다. 만일 대역폭이 허용되면, 캐시는 데이터가 공유-과도 상태 또는 공유-과도-투기 상태로 캐시되는 피어 캐시들에 무효화 요구를 또한 전송할 수 있다. 이로써 공유-과도 상태 또는 공유-과도-투기 상태로 캐시된 데이터가 신속히 무효화되어 구식 데이터의 투기적 사용을 회피할 수 있다. 공유-과도 및 공유-과도-투기 카피의 무효화 동 작은 확인 응답될 필요가 없다는 점에 주목하여야 한다. 제안된 메카니즘은 공유-과도 또는 공유-과도-투기 캐시에 대한 무효화 요구가 손실된 경우에도 동작한다는 점에도 또한 주목하여야 한다. 순효과(net effect)는 캐시 라인이 제때에 무효화되지 않으므로 일부 구식 데이터가 투기적 실행(이것은 궁극적으로 복구될 것이다)으로 사용될 것이라는 점이다.
공유-과도-투기 상태의 캐시 라인에 있어서, 캐시 상태는 소위 액세스 카운터(A-카운터)로 증대될 수 있으며, A-카운터는 데이터가 캐시된 이후 캐시 라인의 데이터가 액세스된 수를 기록한다. A-카운터는 공유-과도-투기 캐시 라인이 보통의 공유 캐시 라인으로 업그레이드되어야 하는지를 결정하기 위해 사용될 수 있다. 예를 들면, A-카운터는 미리 규정된 제한 3이 있는 2비트 카운터일 수 있다.
프로세서가 공유-과도 캐시 라인으로부터 데이터를 판독할 때, 캐시 상태는 공유-과도-투기 상태로 변화한다(약한 메모리 모델의 경우, 이 상태 변화는 다음의 적당한 동기화 점까지 연기될 수 있다). A-카운터는 0으로 설정된다.
프로세서가 공유-과도-투기 캐시 라인으로부터 데이터를 판독할 때, 프로세서는 데이터를 투기적으로 사용한다. 프로세서는 전형적으로 투기가 부정확으로 전환된 경우 시스템 상태가 복구될 수 있도록 충분한 정보를 유지할 필요가 있다. 캐시는 투기 데이터가 최신의 것인지 여부를 체크하기 위해 적당한 코히어런스 메시지를 전송함으로써 자기 조화 동작을 수행해야 하고, 캐시에 유지되어 있는 투기 데이터가 구식이면 가장 최신의 데이터를 검색한다.
A-카운터가 미리 규정된 한계치 이하이면, 캐시는 공유-과도 판독 요구를 발 행함으로써 자기 조화 동작을 수행한다. 한편, A-카운터는 1만큼 증분된다. 캐시가 데이터를 수신한 때, 캐시는 수신한 데이터를 공유-과도-투기 데이터와 비교한다. 만일 이들이 일치하면, 연산은 계속되고, 캐시 상태는 공유-과도-투기 상태를 유지한다(약한 메모리 모델의 경우, 캐시 상태는 다음 동기화 점까지 공유-과도 상태로 설정될 수 있다). 그러나, 일치하지 않으면, 투기 연산이 복구되고, 수신된 데이터는 공유-과도-투기 상태로 캐시된다(약한 메모리 모델의 경우, 수신된 데이터는 다음 동기화 점까지 공유-과도 상태로 캐시될 수 있다).
반면에, 만일 A-카운터가 미리 규정된 한계치에 도달하면, 캐시는 공유 판독 요구를 발행함으로써 자기 조화 동작을 수행한다. 캐시가 데이터를 수신한 때, 캐시는 수신한 데이터를 공유-과도-투기 데이터와 비교한다. 만일 이들이 일치하면, 캐시 상태는 보통의 공유 상태로 변경되고, 일치하지 않으면 투기적 실행이 복구되고 수신 데이터가 공유 상태로 캐시된다.
도 6은 본 발명의 실시예에 따라서 공유 상태(601), 공유-과도 상태(602) 및 공유-과도-투기 상태(603) 사이에서 천이하는 캐시 상태를 설명하는 캐시 상태 천이도이다. 캐시 라인 상태는 주어진 메모리 어드레스에 대한 데이터를 포함하지 않은 무효 상태(604)에서 시작할 수 있다. 무효 상태는 보통의 데이터 카피가 수신되었는지 또는 자기 조화형 데이터 카피가 수신되었는지에 따라서 공유 상태(601) 또는 공유-과도 상태(602)로 이동할 수 있다. 공유 또는 공유-과도 캐시 라인의 데이터는 코히어런트가 되도록 보장되고, 공유-과도-투기 캐시 라인의 데이터는 투기적으로 코히어런트되고 구식일 수 있다. 공유 상태(601)는 보통의 공유 카피를 자기 조화형 카피로 다운그레이드하는 다운그레이드 동작을 수행함으로써 공유-과도 상태(602)로 이동할 수 있다. 공유-과도 상태(602)는 자기 조화형 카피를 보통의 공유 카피로 업그레이드하는 업그레이드 동작을 수행함으로써 공유 상태(601)로 이동할 수 있다. 공유-과도-투기 상태(603)는 보통의 공유 카피를 수신하기 위한 자기 조화 동작을 수행한 후에 공유 상태(601)로 이동할 수 있다. 공유-과도-투기 상태(603)는 자기 조화형 카피를 수신하기 위한 자기 조화 동작을 수행한 후에 공유-과도 상태(602)로 이동할 수 있다. 공유-과도 상태(602)는 데이터를 사용하였을 때 공유-과도-투기 상태(603)로 이동할 수 있다.
여기에서 설명한 시스템 및 방법은 하드웨어, 소프트웨어, 펌웨어, 특수 용도 프로세서, 또는 이들의 조합 등 여러가지 형태로 구현될 수 있다는 점을 이해하여야 한다. 첨부 도면에 도시된 시스템 구성요소 및 처리 단계들 중 일부는 소프트웨어로 구현되는 것이 바람직하고, 시스템 모듈들간의 접속(또는 방법 단계들의 논리 흐름)은 본 발명을 프로그램하는 방법에 따라서 달라질 수 있다. 여기에서 설명한 내용에 기초해서, 관련 기술에 통상의 지식을 가진 자는 본 발명의 상기 및 유사한 구현예를 생각해 낼 수 있을 것이다.
도 7을 참조하면, 본 발명의 실시예에 따라서, 캐시 코히어런스를 유지하기 위한 방법을 구현하는 컴퓨터 시스템(701)은 여러가지 구성요소 중에서 특히 중앙 처리장치(CPU)(702), 메모리(703) 및 입력/출력(I/O) 인터페이스(704)를 구비하고 있다. 컴퓨터 시스템(701)은 I/O 인터페이스(704)를 통하여 디스플레이(705)에, 및 마우스와 키보드 등의 각종 입력 장치(706)에 결합된다. 지원 회로로는 캐시, 전원 장치, 클럭 회로 및 통신 버스와 같은 회로들이 있을 수 있다. 메모리(703)는 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 디스크 드라이브, 테이프 드라이브 또는 이들의 조합 등을 포함할 수 있다. 캐시 코히어런스를 유지하기 위한 방법은 메모리(703)에 저장되고 CPU(702)에 의해 실행되는 루틴(707)으로서 구현되어 신호원(708)으로부터의 신호를 처리할 수 있다. 이와 같이, 컴퓨터 시스템(601)은 본 발명의 루틴(707)을 실행할 때 특수 용도 컴퓨터 시스템으로 되는 범용 컴퓨터 시스템이다.
컴퓨터 플랫폼(701)은 운영체제 및 마이크로 명령 코드를 또한 포함한다. 여기에서 설명한 각종 공정 및 기능들은 운영체제에 의해 실행되는 마이크로 명령 코드의 일부 또는 응용 프로그램의 일부(또는 이들의 조합)일 수 있다. 또한, 추가적인 데이터 기억 장치 및 프린트 장치와 같은 각종의 다른 주변 장치들이 컴퓨터 플랫폼에 접속될 수 있다.
첨부 도면에 도시된 시스템 구성요소 및 방법 단계들의 일부는 소프트웨어로 구현될 수 있기 때문에, 시스템 구성요소들(또는 처리 단계들)간의 실제 접속은 본 발명을 프로그램하는 방법에 따라서 달라질 수 있다. 여기에서 설명한 본 발명의 내용에 기초해서, 관련 기술에 통상의 지식을 가진 자는 본 발명의 상기 및 유사한 구현예 또는 구성을 생각해 낼 수 있을 것이다.
전술한 특수한 실시예는 단지 설명을 위한 것이고, 본 발명은 여기에서 설명하는 내용의 이익을 취하는 당업자에게 명백한 상이하지만 등가적인 방법으로 수정 및 실시될 수 있다. 또한, 아래의 특허 청구의 범위에서 기술한 것을 제외하고, 여 기에서 설명한 구성 또는 설계의 상세에 대하여 어떠한 제한을 두는 의도는 없다. 그러므로, 전술한 특수한 실시예는 변경 또는 수정될 수 있고, 그러한 모든 변경은 본 발명의 범위 및 정신 내에 속하는 것으로 이해하여야 한다.

Claims (10)

  1. 캐시 코히어런스를 유지하기 위한 시스템에 있어서,
    복수의 캐시 -상기 복수의 캐시중 적어도 제1 캐시와 제2 캐시는 상호접속 네트워크를 통하여 접속되어 있음- 와;
    상호접속 네트워크에 접속되어 있고 메모리 어드레스의 데이터를 저장하기 위한 메모리와;
    자기 조화형 데이터 예측 메카니즘을 구비한 복수의 코히어런스 엔진 -상기 복수의 코히어런스 엔진 중 제1 코히어런스 엔진은 제1 캐시와 동작적으로 연관되고, 상기 복수의 코히어런스 엔진 중 제2 코히어런스 엔진은 제2 캐시와 동작적으로 연관되어 있음- 을 포함하고,
    상기 제1 캐시는 캐시 미스의 경우에 메모리 어드레스의 데이터를 요구하고 자기 조화형 데이터 예측 메카니즘에 따라서 보통의 데이터 카피와 자기 조화형 데이터 카피 중의 하나를 수신하는 것인 시스템.
  2. 제1항에 있어서, 제1 캐시는 메모리 어드레스의 데이터가 제2 캐시에서 수정된 경우 무효화 요구를 수신하지 않은 경우에도 자기 조화형 데이터 카피를 수신하고 자기 조화형 데이터 카피의 캐시 코히어런스를 유지하는 것인 시스템.
  3. 제2항에 있어서, 복수개의 프로세서를 더 포함하고, 상기 복수개의 프로세서 중 제1 프로세서에 의해 실행된 컴퓨터 판독가능 코드는 제1 캐시가 메모리 어드레스의 데이터를 요구한 때, 및 그 메모리 어드레스에 보통의 데이터 카피가 공급되어야 하는지 자기 조화형 데이터 카피가 공급되어야 하는지를 결정하는 정보를 제공하는 것인 시스템.
  4. 제2항에 있어서, 제1 캐시는 메모리 어드레스의 공유 데이터를 가진 캐시 라인을 포함하고, 캐시 라인은 캐시 라인이 최신의 데이터를 포함하는 것을 표시하는 제1 캐시 상태, 캐시 라인이 제한된 용도의 최신 데이터를 포함하는 것을 표시하는 제2 캐시 상태 및 캐시 라인이 투기 연산용의 투기 데이터를 포함하는 것을 표시하는 제3 캐시 상태 중의 하나의 상태에 있을 수 있는 것인 시스템.
  5. 캐시 코히어런스를 유지하기 위한 컴퓨터 구현 방법에 있어서,
    메모리 어드레스에서 캐시 미스를 서비스하기 위해 제1 캐시가 데이터 카피를 요구하는 단계와;
    자기 조화형 데이터 예측 메카니즘이 자기 조화형 데이터 예측 결과 -이 예측 결과는 보통의 데이터 카피가 공급되어야 하는지 또는 자기 조화형 데이터 카피가 공급되어야 하는지를 표시하는 것임- 를 발생하는 단계와;
    제1 캐시가 자기 조화형 데이터 예측 결과에 따라서 보통의 데이터 카피와 자기 조화형 데이터 카피 중의 하나를 수신하는 단계를 포함하는 컴퓨터 구현 방법.
  6. 제5항에 있어서, 제1 캐시에서 자기 조화형 데이터 카피를 수신하는 단계와;
    메모리 어드레스의 데이터가 제2 캐시에서 수정된 경우에 무효화 요구를 수신하지 않은 경우에도 제1 캐시에 의해 자기 조화형 데이터 카피의 캐시 코히어런스를 유지하는 단계를 더 포함하는 컴퓨터 구현 방법.
  7. 제5항에 있어서, 제1 캐시에서 보통의 데이터 카피를 수신한 때 제1 캐시에 의해 보통의 데이터 카피를 제1 캐시 상태의 캐시 라인에 배치하는 단계를 더 포함하는 컴퓨터 구현 방법.
  8. 제7항에 있어서, 제1 캐시에 있는 자기 조화형 데이터 카피에 액세스하는 단계와;
    캐시 라인을 제2 캐시 상태로부터, 제1 캐시가 투기 연산에서 사용가능한 메모리 어드레스용의 투기 데이터를 포함하고 있음을 표시하는 제3 캐시 상태로 변경하는 단계를 더 포함하는 컴퓨터 구현 방법.
  9. 제8항에 있어서, 캐시 라인이 제1 캐시 상태로 업그레이드되어야 하는지, 제2 캐시 상태로 업그레이드되어야 하는지, 또는 제3 캐시 상태로 유지되어야 하는지를 표시하는 자기 조화 요구 예측 결과를 발생하는 단계와;
    제1 캐시가 자기 조화 요구 예측 결과에 따라서 보통의 데이터 카피 또는 자 기 조화형 데이터 카피를 요구하는 캐시 요구를 전송하는 단계와;
    제1 캐시가 보통의 데이터 카피 및 자기 조화형 데이터 카피 중의 하나를 수신하는 단계를 더 포함하는 컴퓨터 구현 방법.
  10. 캐시 코히어런스를 유지하기 위한 방법 단계들을 수행하기 위해 기계에 의해 판독가능하고 기계에 의해 실행되는 명령어 프로그램을 실체적으로 구현하는 프로그램 기억 장치에 있어서, 상기 방법 단계들은,
    메모리 어드레스에서 캐시 미스를 서비스하기 위해 제1 캐시가 데이터 카피를 요구하는 단계와;
    자기 조화형 데이터 예측 메카니즘을 실행하는 프로세서에 의해 자기 조화형 데이터 예측 결과 -이 예측 결과는 보통의 데이터 카피가 공급되어야 하는지 또는 자기 조화형 데이터 카피가 공급되어야 하는지를 표시하는 것임- 를 발생하는 단계와;
    제1 캐시가 자기 조화형 데이터 예측 결과에 따라서 보통의 데이터 카피와 자기 조화형 데이터 카피 중의 하나를 수신하는 단계를 포함하는 것인 프로그램 기억 장치.
KR1020097006012A 2006-10-02 2007-05-22 자기 조화형 데이터를 이용하여 멀티프로세서 시스템의 캐시 코히어런스 오버헤드를 저감시키는 메카니즘 및 방법 KR20090053837A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/541,911 US20080082756A1 (en) 2006-10-02 2006-10-02 Mechanisms and methods of using self-reconciled data to reduce cache coherence overhead in multiprocessor systems
US11/541,911 2006-10-02

Publications (1)

Publication Number Publication Date
KR20090053837A true KR20090053837A (ko) 2009-05-27

Family

ID=38982577

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097006012A KR20090053837A (ko) 2006-10-02 2007-05-22 자기 조화형 데이터를 이용하여 멀티프로세서 시스템의 캐시 코히어런스 오버헤드를 저감시키는 메카니즘 및 방법

Country Status (4)

Country Link
US (1) US20080082756A1 (ko)
EP (1) EP2082324A1 (ko)
KR (1) KR20090053837A (ko)
WO (1) WO2008042471A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8484422B2 (en) 2009-12-08 2013-07-09 International Business Machines Corporation Maintaining data coherence by using data domains
US8255626B2 (en) * 2009-12-09 2012-08-28 International Business Machines Corporation Atomic commit predicated on consistency of watches
US9176912B2 (en) * 2011-09-07 2015-11-03 Altera Corporation Processor to message-based network interface using speculative techniques
GB2503437A (en) 2012-06-26 2014-01-01 Ibm Fetching cache lines into a plurality of caches with different states
US9342411B2 (en) 2012-10-22 2016-05-17 International Business Machines Corporation Reducing memory overhead of highly available, distributed, in-memory key-value caches

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6647469B1 (en) * 2000-05-01 2003-11-11 Hewlett-Packard Development Company, L.P. Using read current transactions for improved performance in directory-based coherent I/O systems
US6598123B1 (en) * 2000-06-28 2003-07-22 Intel Corporation Snoop filter line replacement for reduction of back invalidates in multi-node architectures
AU2002352742A1 (en) * 2001-11-16 2003-06-10 Sun Microsystems, Inc. Coherence message prediction mechanism and multiprocessing computer system employing the same
US7363435B1 (en) * 2005-04-27 2008-04-22 Sun Microsystems, Inc. System and method for coherence prediction
US7716428B2 (en) * 2006-02-28 2010-05-11 International Business Machines Corporation Data processing system, cache system and method for reducing imprecise invalid coherency states

Also Published As

Publication number Publication date
US20080082756A1 (en) 2008-04-03
EP2082324A1 (en) 2009-07-29
WO2008042471A1 (en) 2008-04-10

Similar Documents

Publication Publication Date Title
JP5431525B2 (ja) アクセラレータ用低コストのキャッシュ一貫性を維持するシステム
US11119923B2 (en) Locality-aware and sharing-aware cache coherence for collections of processors
US7620776B2 (en) Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of modified memory blocks
US9170946B2 (en) Directory cache supporting non-atomic input/output operations
US7747826B2 (en) Data processing system and method for efficient communication utilizing an in coherency state
US6629205B2 (en) System and method for increasing the snoop bandwidth to cache tags in a cache memory subsystem
US8806148B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration
US6868481B1 (en) Cache coherence protocol for a multiple bus multiprocessor system
US20070079072A1 (en) Preemptive eviction of cache lines from a directory
US7395376B2 (en) Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of shared memory blocks
US6405290B1 (en) Multiprocessor system bus protocol for O state memory-consistent data
US20070156972A1 (en) Cache coherency control method, chipset, and multi-processor system
JPH07253928A (ja) 2重化キャッシュ・スヌープ機構
JP2014089760A (ja) キャッシュ競合の解決
JP2008525901A (ja) 共有メモリコンピュータシステムにおける、所有されている複数のキャッシュブロックのライトバックの早期予測
US6345341B1 (en) Method of cache management for dynamically disabling O state memory-consistent data
WO2002073417A1 (en) State-based allocation and replacement for improved hit ratio in directory caches
US20040059877A1 (en) Method and apparatus for implementing cache state as history of read/write shared data
US7308538B2 (en) Scope-based cache coherence
KR101072174B1 (ko) 능동적 프리페치들로 향상된 호버 상태를 실시하는 시스템 및 방법
US8732410B2 (en) Method and apparatus for accelerated shared data migration
KR20090053837A (ko) 자기 조화형 데이터를 이용하여 멀티프로세서 시스템의 캐시 코히어런스 오버헤드를 저감시키는 메카니즘 및 방법
US6397303B1 (en) Data processing system, cache, and method of cache management including an O state for memory-consistent cache lines
US6356982B1 (en) Dynamic mechanism to upgrade o state memory-consistent cache lines
US6349368B1 (en) High performance mechanism to support O state horizontal cache-to-cache transfers

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application