KR101529036B1 - 데이터 없이 추론적 소유권에 대한 지원 - Google Patents

데이터 없이 추론적 소유권에 대한 지원 Download PDF

Info

Publication number
KR101529036B1
KR101529036B1 KR1020137019956A KR20137019956A KR101529036B1 KR 101529036 B1 KR101529036 B1 KR 101529036B1 KR 1020137019956 A KR1020137019956 A KR 1020137019956A KR 20137019956 A KR20137019956 A KR 20137019956A KR 101529036 B1 KR101529036 B1 KR 101529036B1
Authority
KR
South Korea
Prior art keywords
state
cache line
processor
cache
logic
Prior art date
Application number
KR1020137019956A
Other languages
English (en)
Other versions
KR20140003515A (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 KR20140003515A publication Critical patent/KR20140003515A/ko
Application granted granted Critical
Publication of KR101529036B1 publication Critical patent/KR101529036B1/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
    • 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
    • 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
    • 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

캐시 메모리의 부분에 대한 SRFOWD(Speculative Request For Ownership Without Data)를 포함하는 멀티 코어 프로세서에 대한 향상된 캐시 일관성 프로토콜을 제공하기 위한 기술이 설명된다. SRFOWD로, 확인 메시지만이 요청하는 코어에 대한 응답으로 제공될 수 있다. 영향을 받은 캐시 라인의 내용은 응답의 일부일 필요가 없다. 향상된 캐시 일관성 프로토콜은 현재 캐시 라인의 유효 사본이 요청하는 코어에 의한 잘못된 추론의 경우에 존재하는 것을 보장할 수 있다. 따라서, 캐시 라인의 현재 사본의 소유자는 캐시 라인의 이전의 내용의 사본을 유지할 수 있다. 캐시 라인의 이전의 내용은 요청하는 코어에 의한 추론이 정확한 것으로 나타날 경우에는 폐기될 수 있다. 그렇지 않으면, 요청하는 코어에 의한 잘못된 추론의 경우에, 캐시 라인의 이전의 내용은 유효 상태로 다시 설정될 수 있다.

Description

데이터 없이 추론적 소유권에 대한 지원{SUPPORT FOR SPECULATIVE OWNERSHIP WITHOUT DATA}
본 명세서에 설명된 실시예는 일반적으로 프로세서의 동작에 관한 것이다. 특히, 일부 실시예는 멀티 코어 프로세서의 메모리 계층구조의 캐시 일관성에 관한 것이다.
멀티 코어 프로세서에서, 캐시 일관성은 캐시 메모리에 저장된 데이터의 일관성을 나타낸다. 멀티 코어 프로세서 시스템에서 처리 코어와 같은 엔티티가 캐시를 유지하면, 일관성 없는 데이터에 관한 문제가 생길 수 있다. 제 1 처리 코어가 이전의 판독으로부터 캐시 라인의 사본을 가지며 제 2 처리 코어가 변경에 대한 어떤 통지 없이 캐시 라인을 변경하면, 제 1 처리 코어는 무효 캐시 라인에 맡겨질 수 있다. 캐시 일관성은 그러한 충돌을 관리하며 캐시 메모리 일관성을 유지하도록 의도된다.
멀티 코어 프로세서 시스템에서, MSI(Modified Shared Invalid) 프로토콜과 같은 기본 캐시 일관성 프로토콜은 캐시 일관성을 유지하는 데 사용된다. 다른 캐시 일관성 프로토콜과 마찬가지로, 프로토콜 이름의 문자는 캐시 라인이 있을 수 있는 가능한 상태를 식별한다. MSI 프로토콜에 대해서는, 캐시 내부에 포함된 각 블록(예를 들어, 라인)은 3개의 가능한 상태 중 하나를 가질 수 있다:
Figure 112013067932083-pct00001
수정: 블록은 캐시에서 수정되었다. 캐시의 데이터는 이때 보조 저장소(backing store)(예를 들어, 메모리)와 일치하지 않는다. 수정된 상태의 블록을 가진 캐시는 축출(evict)될 때 블록을 보조 저장소에 기록할 책임이 있다.
Figure 112013067932083-pct00002
공유: 이러한 블록은 적어도 하나의 캐시에서 수정되지 않고 존재한다. 캐시는 보조 저장소에 기록하지 않고 데이터를 축출할 수 있다.
Figure 112013067932083-pct00003
무효: 이러한 블록은 무효이며, 블록이 이러한 캐시에 저장되어야 할 경우에 메모리 또는 다른 캐시로부터 인출되어야 한다.
이러한 일관성 상태는 처리 코어, 캐시 및 보조 저장소 사이의 통신을 통해 유지된다. 예를 들면, 코어가 기록 동작을 수행하기 위해 캐시 라인과 같은 캐시의 일부를 필요로 할 때, 코어는 캐시 라인에 대한 RFO(Request For Ownership)를 수행할 수 있다. 대응해서, 현재 캐시 라인을 소유한 엔티티는 요청된 캐시 라인 내에 포함된 데이터를 포함하며 자신의 사본을 무효화하는 확인으로 응답한다.
그러나, 코어가 전체 캐시 라인에 기록할 경우에, 코어는 중복 기록(overwrite)할 계획인 캐시 라인의 현재 내용을 수신할 필요가 없다. 이 경우에 캐시 라인의 내용을 수신하는 것은 자원을 낭비하며 멀티 코어 프로세서의 처리 코어를 연결하는 상호 연결 네트워크에서 트래픽 경합(increases traffic contention)을 증가시킨다.
코어가 전체 캐시 라인에 기록할 것을 보장하는 것은 전체 캐시 라인이 기록되기 전에 발생할 수 있는 잠재적인 예외, 인터럽트 또는 다른 동적 이벤트로 인해 어렵다. 이와 같이, 현재의 프로세서는 데이터 없는 소유권에 대한 캐시 라인을 요청할 때에 매우 신중하며, 이러한 최적화를 매우 드물게 적용한다. 그러나, 일종의 추론적(speculative) 지원(예를 들어, 트랜잭션 메모리)을 포함하는 프로세서는 이러한 최적화의 보다 적극적인 사용에 매우 적합하다. 아울러, 일종의 분석/최적화 논리(예를 들어, 동적 이진 변환/최적화에 대한 지원)를 포함하는 프로세서가 이러한 최적화를 더욱더 활용할 수 있다.
도 1은 향상된 캐시 일관성 프로토콜을 수행하기 위해 사용 가능한 멀티 코어 프로세서의 예시적인 환경(100)을 도시한다.
도 2는 향상된 캐시 일관성 프로토콜의 예시적인 캐시 상태를 도시한다.
도 3은 향상된 캐시 일관성 프로토콜의 예시적인 프로세서의 동작을 도시한다.
도 4는 향상된 캐시 일관성 프로토콜의 예시적인 언코어(uncore) 트랜잭션을 도시한다.
도 5는 멀티 코어 프로세서의 언코어의 관점에서의 예시적인 상태 천이를 도시한다.
도 6은 멀티 코어 프로세서의 코어 프로세서의 관점에서의 예시적인 상태 천이를 도시한다.
도 7은 향상된 캐시 일관성 프로토콜에 대한 예시적인 방법을 도시한 흐름도이다.
도 8은 향상된 캐시 일관성 프로토콜에 대한 예시적인 방법을 도시한 흐름도이다.
도 9는 향상된 캐시 일관성 프로토콜에 대한 예시적인 방법을 도시한 흐름도이다.
도 10은 다중 멀티 코어 프로세서를 통해 향상된 캐시 일관성 프로토콜을 수행하기 위해 사용 가능한 예시적인 환경(1000)을 도시한다.
본 개시는 캐시 라인과 같은 캐시 메모리의 부분에 대한 SRFOWD(Speculative Request For Ownership Without Data)를 포함하는 향상된 캐시 일관성 프로토콜의 샘플 실시예를 설명한다. 현재 RFO와는 달리, SRFOWD로는 확인 메시지만이 응답으로 제공될 수 있다. 영향을 받는 캐시 라인의 내용이 응답의 일부가 되도록 요구되지 않는다. 이것은 중복 기록되는 데이터를 전송하는 자원을 낭비하는 것을 방지하여, 멀티 코어 프로세서의 상호 연결 네트워크에서 트래픽 경합을 줄여준다.
본 명세서에 개시된 바와 같이, 다양한 실시예에서, 멀티 코어 프로세서의 코어는 저장 오퍼레이션(store operation)의 세트가 캐시 라인과 같은 캐시의 전체 부분을 중복 기록할 수 있음을 감지(예를 들어, 추론)할 때 SRFOWD를 전송할 수 있다. 그러나, 요청의 추론적 특성으로 인해, 캐시 라인의 현재 사본을 무효화하는 대신에, 향상된 캐시 일관성 프로토콜은 현재 캐시 라인의 유효한 사본이 요청하는 코어에 의해 잘못된 추론(misspeculation)의 경우에 존재한다는 것을 보장할 수 있다. 따라서, 캐시 라인의 현재 사본의 소유자는 캐시 라인의 이전의 내용의 사본을 유지할 수 있다. 캐시 라인의 이전 내용은 요청하는 코어에 의한 추론이 정확한 것으로 밝혀질 경우에는 폐기될 수 있다. 그렇지 않으면, 요청하는 코어에 의한 잘못된 추론의 경우에, 캐시 라인의 이전 내용은 유효한 상태로 다시 설정될 수 있다.
예시적인 시스템 아키텍처
도 1은 향상된 또는 확장된 캐시 일관성 프로토콜을 수행하기 위해 사용 가능한 예시적인 환경(100)을 도시한다. 프로세서(102)는 하나 이상의 처리 코어(104(1) 내지 104(N))를 갖는 멀티 코어 프로세서(예를 들어, 단일 집적 회로 다이 상의 멀티 코어 프로세서)를 포함할 수 있으며, 각 코어는 향상된 캐시 일관성 프로토콜의 적어도 일부를 구현하는 논리를 갖는다.
코어(104(1))는 관련된 코어 캐시(106(1))를 가질 수 있다. 캐시(106(1))는 예를 들어 레벨 1(L1) 캐시 등과 같은 프로세서 코어(104(1))에 의해 직접 액세스 가능한 캐시 메모리를 포함할 수 있다. 실시예에서, 캐시(106(1))는 코어(104(1))의 일부로 간주될 수 있다. 도 1에서 예시를 위해, 캐시(106(1))가 단일의 캐시로 예시되지만, 그것은 또한 코어(104(1)) 내에 다수의 캐시를 포함할 수 있다.
코어(104(1))와 유사한 방식으로, 코어(104(N))는 관련된 캐시(106(N))를 가질 수 있다. 캐시(106(1))와 마찬가지로, 캐시(106(N))는 예를 들어 L1 캐시 등과 같은 코어(104(N))에 의해 직접 액세스 가능한 캐시 메모리를 포함할 수 있다. 실시예에서, 캐시(106(N))는 코어(104(N))의 부분으로 간주될 수 있다. 도 1에서 예시를 위해, 캐시(106(N))가 단일의 캐시로 예시되지만, 그것은 또한 코어(104(N)) 내에 다수의 캐시를 포함할 수 있다.
프로세서(102)는 또한 언코어(108)를 포함할 수 있다. 언코어(108)는 코어에 있지 않지만 코어(104(1)-104(N))의 기능을 수행하는 데 필수적인 하드웨어 구성 요소를 포함할 수 있다. 실시예에서, 언코어(108)는 또한 코어(104(1)-104(N))를 포함하는 단일의 집적 회로 다이 상의 멀티 코어 칩의 부분일 수 있다.
일례로서, 언코어(108)는 코어 상호 연결 네트워크(110), 언코어 캐시(112), (프로세서(102) 외부에 있을 수 있는 메모리(116)로의 액세스를 제어하는) 메모리 제어기(114)뿐만 아니라 다른 언코어 장치(118)를 포함할 수 있지만, 이에 제한되지 않는다. 캐시(112)는 예를 들어 L2 캐시, L3 캐시 등과 같은 코어(104(1)-104(N)) 중 적어도 하나에 의해 액세스 가능한 캐시 메모리를 포함할 수 있다. 도 1에서 예시를 위해, 캐시(112)는 언코어(108) 내에서 단일의 캐시로 예시된다. 그러나, 캐시(112)는 또한 언코어(108) 내에 분산된 다수의 캐시, 언코어(108) 외부의 하나 이상의 캐시, 프로세서(102) 외부의 하나 이상의 캐시 등을 포함할 수 있다.
프로세서(102) 내의 각 캐시 메모리는 시스템의 다른 에이전트와 통신하며, 예를 들어 코어(104(1)-104(N))에 의해 상호 연결 네트워크(110)를 통해 캐시 일관성 프로토콜(126)의 구현뿐만 아니라 캐시 메모리 액세스를 촉진하기 위해 관련된 상호 연결 인터페이스 제어기를 가질 수 있다. 예를 들면, 상호 연결 인터페이스 제어기(120(1))는 상호 연결 네트워크(110)에 대한 캐시(106(1))의 연결을 촉진하기 위해 캐시(106(1))에 부착된다. 마찬가지로, 상호 연결 인터페이스 제어기(120(N))는 캐시(106(N))에 부착되며, 상호 연결 인터페이스 제어기(124)는 상호 연결 네트워크(110)에 대한 관련된 캐시의 연결을 촉진하기 위해 캐시(112)에 부착된다. 일례로서, 상호 연결 인터페이스 제어기(120(1))는 캐시 일관성 프로토콜(126)을 촉진하기 위해 코어(104(1))와 언코어(108) 사이의 메시징 및 메시지 변환을 제공할 수 있다. 마찬가지로, 상호 연결 인터페이스 제어기(120(N))는 캐시 일관성 프로토콜(126)을 촉진하기 위해 코어(104(N))와 언코어(108) 사이의 메시징 및 메시지 변환을 제공할 수 있다. 이와 같이, 상호 연결 인터페이스 제어기(120(1)-120(N)) 및 (124)는 코어(104(1)-104(N))와 언코어(108) 사이의 활동 또는 동작을 관찰할 수 있으며, 또는 이러한 동작에 응답할 수 있다.
상호 연결 네트워크(110)는 코어(104(1)-104(N))와 언코어(108) 사이의 메시징 및 데이터 전송뿐만 아니라 캐시(112)와 같은 언코어(108)의 구성 요소를 위해 제공하는 버스형 상호 연결 네트워크 능력을 구현할 수 있다.
본 명세서에 설명된 바와 같이, 다수의 코어가 캐시 메모리의 여러 블록 또는 라인의 소유권 또는 이러한 라인으로의 액세스를 원할 수 있으므로, 일치하지 않는 데이터에는 문제가 발생할 수 있다. 따라서, 프로세서(102)는 특정 캐시 라인과 같은 캐시 메모리의 부분의 유효성 및 가용성을 보장하기 위해 캐시 일관성 프로토콜(126)과 같은 향상된 캐시 일관성 프로토콜을 구현할 수 있다.
일례로서, 캐시 일관성 프로토콜(126)의 실시예에서, 코어(104(1))는 특정 주소 또는 인덱스를 가진 캐시 라인과 같은 캐시 메모리의 부분에 대한 SRFOWD(Speculative Request For Ownership Without Data) 동작을 수행할 수 있다. 그 후, 이러한 SRFOWD 동작은 상호 연결 인터페이스 제어기(120(1))에 의해 언코어 메시지로 변환될 수 있으며, 언코어 메시지는 상호 연결 네트워크(110)를 통해 상호 연결 인터페이스 제어기(120(1))에 의해 코어(104) 중 다른 코어로 전송된다. 요청된 캐시 라인은 현재 예를 들어 코어(104(N))에 의해 소유되고, 수정된 상태에서 코어(104(N))의 캐시 메모리(106(N))에 상주할 수 있다. 그 다음, 코어(104(N))는 다른 (예를 들어, 원격 로깅된) 상태로 태깅된 현재 캐시 라인의 사본 또는 버전을 유지하면서 코어(104(1))에 대한 요청된 캐시 라인의 소유권을 승인할 수 있다. 그 후, 코어(104(N))는 캐시 라인의 어떤 데이터 내용을 코어(104(1))에 제공하지 않으면서 현재 캐시 라인의 소유권의 확인을 코어(104(1))에 제공할 수 있다. 그 다음, 코어(104(1))는 예를 들어 캐시(106(1))에서 요청된 캐시 라인의 소유권을 획득할 수 있다. 실시예에서, 코어(104(1))는 코어(104(1))가 전체 캐시 라인의 완전한 기록을 수행할 것을 추론하는 방식으로 SRFOWD 동작을 수행할 수 있다. 실시예에서, 코어(104(1))가 전체 캐시 라인의 완전한 기록을 잘못 추론한 경우, 코어(104(N))는 현재 캐시 라인의 사본 또는 버전을 유효한 상태로 천이할 수 있다. 실시예에서, 코어(104(1))가 전체 캐시 라인의 기록을 성공적으로 완료하면, 코어(104(N))는 현재 캐시 라인의 사본 또는 버전을 무효한 상태로 천이할 수 있다.
다른 예로서, 캐시 일관성 프로토콜(126)의 실시예에서, 코어(104(1))는 공유 상태에서 캐시(112)에 상주하는 캐시 라인에 대한 RFO(Request for Ownership) 또는 SRFOWD를 수행할 수 있다. 코어(104) 중 다른 코어는 공유 상태에서 요청된 캐시 라인을 예를 들어 관련된 캐시(106)에 보유할 수 있다. 이러한 예에서, 상호 연결 인터페이스 제어기(120(1))는 코어(104(1))로부터의 RFO 또는 SRFOWD 동작을 관련된 언코어 메시지로 변환할 수 있으며, 이러한 언코어 메시지는 상호 연결 네트워크(110)를 통해 전송되어 코어(104) 중 다른 코어가 캐시 라인의 사본을 폐기하거나 무효화하도록 한다. 그 다음, 실시예에서, 코어(104(1))는 소유권을 취해 캐시 라인을 다른 (예를 들어, 추론적) 상태로 태깅할 수 있다.
다른 예로서, 캐시 일관성 프로토콜(126)의 실시예에서, 코어(104(1))는 수정된 상태에서 캐시(106(1))에 상주하는 캐시 라인에 대한 RFO(Request for Ownership) 또는 SRFOWD를 수행할 수 있다. 이러한 예에서, 동작은 코어(104(1))가 다른 (예를 들어, 로깅된) 상태로 캐시 라인을 태깅하며, 다른 (예를 들어, 추론적) 상태로 요청된 캐시 라인의 새로운 사본 또는 버전을 생성하도록 할 것이다.
도 1에서 예시를 위해, 캐시 일관성 프로토콜(126)은 언코어(108) 및 코어(104(1)-104(N))의 외부에 있는 것으로 도시된다. 그러나, 다양한 실시예에서, 캐시 일관성 프로토콜(126)은 전체 또는 부분적으로 언코어(108), 코어(104(1)-104(N)) 및/또는 프로세서(102)의 어떤 다른 부분의 어떤 조합 내에서 전체 또는 부분적으로 구현될 수 있다.
예로서, 캐시 일관성 프로토콜(126) 내용 및 캐시 라인의 상태(예를 들어, 캐시의 64 바이트 블록)의 제어 또는 수정을 촉진하는 데 사용될 수 있다. 캐시 일관성 프로토콜(126)은 코어(104(1)-104(N)), 언코어(108), 상호 연결 인터페이스 제어기(120(1)-120(N)) 및 (124) 등과 관련된 다양한 메시지 또는 요청(예를 들어, 동작)에 응답하는 데 사용될 수 있다. 캐시 일관성 프로토콜(126)은 또한 코어(104(1)-104(N)) 및/또는 언코어(108) 중 적어도 하나와 관련된 동작에 대응하는 캐시의 현재 상태(예를 들어, 캐시 라인의 상태)와 관련된 다양한 상태 천이를 제어할 수 있다. 실시예에서, 코어 프로세서(104(1)-104(N)) 중 하나 이상은 캐시 일관성 프로토콜(126)에 영향을 미칠 수 있는 동작을 수행할 수 있다. 이러한 동작은 예를 들어 상호 연결 인터페이스 제어기를 통해 캐시 일관성 프로토콜(126)에 의해 캐시 라인과 같은 캐시의 부분의 상태 천이를 초래할 수 있는 언코어(108)를 통해 트랜잭션, 요청 및/또는 메시지로 변환될 수 있다. 상호 인터페이스 제어기(120)는 관련된 코어(104)로부터의 메시지 또는 동작을 변환하며, 동시, 동기 또는 비동기 방식으로 언코어 메시지를 코어(104) 중 적어도 하나에 제공할 수 있다. 다른 실시예에서, 캐시 일관성 프로토콜(126)은 언코어 메시지를 코어(104) 중 하나 이상에 제공하지 않도록 결정, 감지하거나 구성될 수 있다.
추가적으로, 실시예에서, 코어 프로세서(104(1)-104(N)) 중 하나 이상은 언코어(108)의 상호 작용 없이 캐시 라인의 상태 천이를 초래할 수 있는 캐시 일관성 프로토콜(126)과 함께 동작을 수행함으로써, 상호 연결 인터페이스 제어기가 어떤 언코어 메시지를 어떤 코어(104)로 송신할 수 없도록 할 수 있다.
일반적인 캐시 일관성 프로토콜의 일부 예는 MSI(Modified, Shared and Invalid), MESI(Modified, Exclusive, Shared and Invalid), MOSI(Modified, Owned, Shared and Invalid), MOESI(Modified, Owned, Exclusive, Shared and Invalid), MERSI(Modified, Exclusive, Read Only or Recent, Shared and Invalid), MESIF(Modified, Exclusive, Shared, Invalid and Forward), Synapse, Berkeley, Firefly, Dragon 등을 포함한다.
본 명세서에 설명된 바와 같이, 캐시 일관성 프로토콜(126)의 실시예는 일반적인 캐시 일관성 프로토콜에 대한 확장, 개선, 변경 및/또는 수정을 제공할 수 있다. 이러한 확장, 개선, 변경 및/또는 수정의 몇몇 장점은 몇 가지만 말하자면 멀티 코어 프로세서의 상호 연결 네트워크에서 감소된 캐시 미스, 감소된 트래픽 및 트래픽 경합을 포함할 수 있으며, 실패한 트랜잭션의 효율적인 롤백을 포함할 수 있다. 이러한 장점뿐만 아니라 다른 장점은 멀티 코어 프로세서의 속도, 성능 및/또는 효율성을 향상시킬 수 있다.
예시적인 캐시 라인 상태
도 2는 향상된 캐시 일관성 프로토콜, 예를 들어 캐시 일관성 프로토콜(126)의 실시예에서 캐시 상태(202)의 예를 도시한다. 단순화하기 위해, 도 2는 예를 들어 MSI 캐시 일관성 프로토콜의 확장을 나타내는 캐시 상태(202)를 도시한다. 그러나, 도 2에서 단독 또는 어떤 특징의 조합으로 예시된 상태는 MESI, MO SI, MOESI, MERSI, MESIF, write-once, Synapse, Berkeley, Firefly, Dragon 등과 같은 다른 캐시 일관성 프로토콜을 확장하는 데 쉽게 적용될 수 있다.
캐시 상태(202)는 캐시의 부분의 다양한 예시적인 상태와 관련된다. 실시예에서, 캐시의 부분은 정수의 바이트를 포함하는 캐시의 라인 또는 블록을 포함할 수 있다. 다른 실시예에서, 캐시의 부분은 비정수의 바이트 또는 정수의 비트를 가진 캐시 라인 또는 블록을 포함할 수 있다.
단순함을 위해, 특정 캐시 상태(202)를 가질 수 있는 캐시의 부분은 캐시 라인으로 지칭될 것이다. 예로서, 캐시의 부분은 어떤 캐시(106(1)-106(N)) 또는 캐시(112)에서의 캐시 라인일 수 있다.
도 2는 Shared(SH)(204), Modified(M)(206), Invalid(I)(208), Observed(O)(210), Speculative(S)(212), Logged(L)(214) 및 Remote Logged(RL)(216)를 포함하도록 캐시 라인(202) 중 하나의 캐시 라인의 예를 도시한다.
SH(204)는 공유 상태의 예이다. 상태 SH(204)의 캐시 라인은 공유 및 비수정된 상태에서 존재(예를 들어, 유효)할 수 있다. 상태 SH(204)는 캐시가 캐시 라인의 최신 버전을 포함하며 캐시 라인이 또한 공유 상태에서 다른 코어의 캐시 메모리에 존재할 수 있다는 것을 나타낼 수 있다. 상태 SH(204)의 캐시 라인은 이러한 캐시 라인이 다수의 캐시에 저장되며 메모리(116)와 같은 메인 메모리에서 캐시 라인의 사본과 일치한다는 것을 의미하는 "클린(clean)"하다는 것을 나타낼 수 있다. 상태 SH(204)의 캐시 라인은 언제든지 폐기될 수 있다. 예로서, 코어(104)는 먼저 캐시 라인의 소유권을 요청하지 않고 캐시 라인을 상태 SH(204)에 기록할 수 없다.
M(206)은 수정된 상태의 예이다. 상태 M(206)의 캐시 라인은 캐시 라인의 오래된 버전을 포함하도록 수정된 상태에 존재할 수 있다. 예를 들면, 상태 M(206)의 캐시 라인은 메인 메모리의 관련된 값에서 수정되었음을 의미하는 더티(dirty)로 간주될 수 있다. 상태 M(206)의 캐시 라인을 포함하는 캐시는 (더 이상 유효하지 않은) 메인 메모리 상태의 어떤 다른 판독을 허용하기 전에 미래의 어떤 시간에 캐시 라인의 데이터를 다시 메인 메모리에 기록하는 데 필요할 수 있다. 예로서, 코어(104)가 캐시 라인의 소유권을 요청할 수 있고, 소유권에 대한 요청이 승인된 다음, 코어(104)는 캐시 라인을 업데이트한다. 코어(104)가 캐시 라인을 업데이트하면, 캐시 라인은 상태 M(206)에 있을 수 있다. 이러한 캐시 라인이 캐시 메모리(106) 중 하나에서 수정된 상태 M(206)에 있는 경우에 다른 코어(104)는 캐시 라인의 클린 또는 더티 사본을 가질 수 없다.
I(208)는 캐시 라인이 무효인 것으로 간주되는 무효 상태의 예이다. 상태 I(208)의 캐시 라인은 유효하지 않거나 캐시에 더 이상 존재하지 않는 캐시 라인으로 간주될 수 있다.
O(210)는 관찰된 상태의 예이다. 예를 들면, 상태 O(210)는 캐시 라인이 코어(104)에 의해 추론적으로 판독되었다는 것을 의미할 수 있다. 메인 메모리(또는 다른 코어에 의해 공유되는 캐시 메모리)는 상태 O(210)에서 캐시 라인의 최신 버전을 포함할 수 있다. 예를 들면, 캐시 라인은 추론적 판독 동작으로 코어(104)에 의해 판독되거나 로드된 후에 상태 O(210)로 표시될 수 있다. 실시예에서, 커밋 또는 롤백(commit or rollback)이 상태 O(210)로 캐시 라인에서 수행되는 경우, 캐시 라인은 공유 상태 SH(204)로 천이할 수 있다.
S(212)는 추론적 상태의 예이다. 예를 들면, 상태 S(212)는 특정 캐시의 캐시 라인이 존재(예를 들어, 유효)하며 추론적으로 수정되었음(또는 수정될 것)을 의미할 수 있다. 메인 메모리는 캐시 라인의 오래된 버전을 포함할 수 있다. 반면에, 다른 캐시 메모리(106)는 캐시 라인의 유효한 사본을 갖지 않는다. 이에 대한 예외는 유일한 하나의 다른 캐시(106)가 아래에서 논의되는 Remote Logged 상태에서 캐시 라인의 이전의 내용을 가진 사본을 포함할 수 있다는 것이다. 예로서, 상태 S(212)는 상태 S(212)가 추론적 로드(예를 들어, 판독) 대신에 추론적 저장(예를 들어, 기록)을 포함할 수 있다는 것을 제외하고 상태 O(210)에 상응할 수 있다. 실시예에서, 추론적 상태 S(212)의 캐시 라인은 커밋을 수행할 시에 수정된 상태 M(206)로 천이하는 반면에, 그것은 롤백할 시에는 무효 상태 I(208)로 천이한다.
L(214)은 로깅된 상태의 예이다. 실시예에서, 상태 L(214)의 캐시 라인은 상태 S(212)의 캐시 라인의 대응하는 추론적 버전의 이전의 사본 또는 버전일 수 있다.
실시예에서, 로깅된 상태 L(214)는 수정된 상태 M(206)의 캐시 라인이 예를 들어 수정된 상태 M(206)의 라인을 소유한 동일한 코어에 의해 트랜잭션 내에 기록될 때 사용될 수 있다. 이 경우에, 영향을 받은 캐시 라인은 로깅된 상태 L(214)로 이동되며, 캐시 라인의 사본은 추론적 상태 S(212)에 생성되며 태깅된다. 그 후, 캐시 라인의 이러한 추론적 사본은 트랜잭션 내에서 기록 동작에 의해 업데이트될 수 있다. 트랜잭션이 커밋하면(즉, 트랜잭션이 성공적이면), 추론적 상태 S(212)의 라인은 수정된 상태 M(206)으로 이동될 수 있으며, 로깅된 상태 L(214)의 라인은 폐기될 수 있다(무효 상태(208)로 이동될 수 있다). 반면에, 트랜잭션이 롤백하면(즉, 트랜잭션이 성공적이지 않으면), 추론적 상태 S(212)의 라인은 폐기될 수 있으며(즉, 무효 상태 I(208)로 이동될 수 있으며), 로깅된 상태 L(214)의 캐시 라인은 캐시 라인의 이전의 내용을 복구하기 위해 수정된 상태 M(206)로 다시 이동될 수 있다. 실시예에서, 추론적 상태 S(212)의 캐시 라인은 항상 롤백의 경우에 상태를 복구하기 위해 시스템 어딘가에 이전 내용을 가진 클린 사본을 갖는다. 예를 들면, 이전의 내용은 다른 캐시(106)에 원격 로드된 동일한 캐시(106)의 로깅된 상태 L(214)에 있을 수 있으며, 이는 캐시(112) 또는 메인 메모리의 사본을 갖는다.
RL(216)은 원격 로깅된 상태의 예이다. 실시예에서, 상태 RL(216)의 캐시 라인은 다른 코어에 의해 완전히 업데이트되도록 요청된 캐시 라인의 이전의 사본의 버전이다.
실시예에서, 코어(104(1))는 예를 들어 트랜잭션을 실행하는 부분으로 전체 캐시 라인을 중복 기록하는 것을 감지(예를 들어, 추론)할 수 있다. 코어(104(1))는 SRFOWD를 수행하며, 예를 들어 수정된 상태 M(206)의 라인을 가진 코어(104(N))로부터 캐시 라인의 소유권을 획득할 수 있다. 그 후, 코어(104(N))는 원격 로깅된 상태(216)의 캐시 라인의 현재 사본을 유지할 수 있다. 코어(104(1))가 트랜잭션을 완료할 수 없는 경우, 코어(104(N))는 원격 로깅된 상태(216)로 표시된 캐시 라인을 유효한 상태(예를 들어, 수정된 상태 M(206))로 복원할 수 있다. 코어(104(1))가 트랜잭션을 성공적으로 완료하면, 코어(104(N))는 무효 상태(208)로 이동함으로써 원격 로깅된 상태(216)의 캐시 라인을 폐기할 수 있다.
따라서, 상술한 예시적인 상태를 이용하여, 예시적인 환경(100)은 위반(violation)을 감지하는 메커니즘을 갖고, 캐시 라인의 이전의 내용을 복구하도록 지원할 것이다.
예시적인 프로세서 동작
도 3은 캐시 일관성 프로토콜(126)의 지원으로 수행될 수 있는 프로세서 동작(302)을 가진 예시적인 환경(300)을 도시한다. 예를 들면, 프로세서 동작(302)은 캐시 일관성 프로토콜(126)에 영향을 미치도록 프로세서 코어(104(1)-104(N)) 중 하나 이상에 의해 수행될 수 있다.
예시적인 프로세서 동작(302)은 PRd(Processor Read)(304), PWr(Processor Write)(306), PCo(Processor Commit)(308), PRo(Processor Rollback)(310) 및 PSCWr(Processor Speculative Complete Write)(312)를 포함할 수 있다. 실시예에서, 예시적인 프로세서 동작(302)은 프로세서 코어(104) 중 하나 이상에 의해 수행될 수 있다. 실시예에서, 예시적인 프로세서 동작(302)은 프로세서 코어에 의해 트랜잭션을 실행하는 동안에 수행될 수 있다. 그러나, 대안적인 실시예에서, 예시적인 프로세서 동작(302)은 트랜잭션 내부, 트랜잭션 외부, 또는 트랜잭션 내부 및 외부의 조합에서 수행될 수 있다. 다음의 설명에서, 명확성을 위해 이러한 동작은 트랜잭션 내부에서 실행된다고 가정한다. 따라서, 실시예에서, PRd(Processor Read)(304), PWr(Processor Write)(306) 및 PSCWr(Processor Speculative Complete Write)(312)은 트랜잭션의 추론적 특성으로 인한 추론적 동작이다. 당업자는 트랜잭션 외부에서 실행되는 프로세서 동작에 대한 동작을 설명하는 데 필요한 확장을 쉽게 생각해 낼 수 있다.
동작 PRd(Processor Read)(304)은 프로세서 코어가 메모리 위치를 판독하는 로드 명령어를 실행하였음을 나타낸다. 관련된 캐시 라인의 상태에 따라, 캐시 일관성 프로토콜(126)은 통지받을 필요가 있을 수 있다. PRd(304)는 프로세서 코어가 판독 명령어를 실행하였음을 캐시 일관성 프로토콜(126)에 통지하는 데 사용될 수 있다.
동작 PWr(Processor Write)(306)은 프로세서 코어가 메모리 위치로 기록하는 저장 명령어를 실행하였음을 나타낸다. 관련된 캐시 라인의 상태에 따라, 캐시 일관성 프로토콜(126)은 통지받을 필요가 있을 수 있다. PWr(306)은 프로세서 코어가 기록 명령어를 실행하였음을 캐시 일관성 프로토콜(126)에 통지하는 데 사용될 수 있다.
동작 PCo(Processor Commit)(308)은 프로세서 코어가 현재 실행된 트랜잭션을 커밋하는 것을 나타낸다. PCo(308)는 프로세서 코어가 커밋 명령어를 실행하였음을 캐시 일관성 프로토콜(126)에 통지하는 데 사용될 수 있다.
동작 PRo(Processor Rollback)(310)은 프로세서 코어가 현재 실행된 트랜잭션을 롤백할 수 있음을 나타낸다. PRO(310)는 프로세서 코어가 롤백 명령어를 실행하였음을 캐시 일관성 프로토콜(126)에 통지하는 데 사용될 수 있다. 예로서, 인터럽트, 메모리 위반 또는 어떤 다른 이벤트는 프로세서 코어가 트랜잭션의 실행을 완료하지 못하도록 할 수 있다. 이 경우에, 프로세서는 트랜잭션이 성공하지 못하였음을 다른 코어에 통지할 필요가 있다. 이러한 다른 코어 중 하나 이상은 트랜잭션과 관련된 캐시 라인의 이전의 사본을 보유할 수 있으며, 이와 같이 이는 이에 따라 이전의 캐시 라인 사본을 동작하고 롤백할 필요가 있을 수 있다.
동작 PSCWr(Processor Speculative Complete Write)(312)은 프로세서 코어가 전체 캐시 라인과 같은 캐시의 부분을 중복 기록할 예정임(즉, 캐시 라인에 추론적으로 기록함)을 추론하는 것을 나타낸다. 이와 같이, 다른 코어는 이러한 동작에 대해 통지받을 필요가 있을 수 있다. PSCWr(312)은 프로세서 코어가 추론적인 완료 기록 명령어를 실행하였음을 캐시 일관성 프로토콜(126)에 통지하는 데 사용될 수 있다. 실시예에서, 동작 PSCWr(312)은 SRFOWD(Speculative Request For Ownership Without Data)에 상응한다.
예로서, 프로세서 코어는 완료 캐시 라인을 기록할 것임을 추론할 수 있다. 이 경우에, 프로세서 코어는 예를 들어 동작 PSCWr(312)의 형식으로 캐시 라인에 대한 데이터 없는 소유권에 대한 추론적 요청을 전송할 수 있다. 실시예에서, 그 후, 필요하다면, 캐시 일관성 프로토콜(126)은 이러한 동작을 코어(104)에 통지하기 위해 언코어(108)에서 관련된 메시지의 생성을 촉진할 수 있다.
예시적인 언코어 트랜잭션
도 4는 캐시 일관성 프로토콜(126)의 지원으로 수행될 수 있는 언코어 트랜잭션(402)을 가진 예시적인 환경(400)을 도시한다. 예로서, 프로세서 동작(302)은 언코어(108)를 통해 발생하는 언코어 트랜잭션(402)으로 변환될 수 있다.
예시적인 언코어 트랜잭션(402)은 URd(Uncore Read)(404), UWr(Uncore Write)(406), UCo(Uncore Commit)(408), URo(Uncore Rollback)(410), USCWr(Uncore Speculative Complete Write)(412) 및 data(Data)(414)를 포함할 수 있다.
URd(Uncore Read)(404)는 캐시 라인이 판독되었거나 판독될 예정임을 다른 코어에 통지한다. 캐시 라인의 상태에 따라, 프로세서에 의해 실행된 PRD(304) 동작은 언코어(108)를 통해 URD(404) 메시지를 생성할 수 있다.
UWr(Uncore Write)(406)은 캐시 라인이 기록되었거나 기록될 예정임을 다른 코어에 통지한다. 캐시 라인의 상태에 따라, PWr(306) 동작은 언코어를 통해 UWr 메시지를 생성할 수 있다.
UCo(Uncore Commit)(408)은 예를 들어 코어가 트랜잭션을 커밋함을 다른 코어에 통지한다. UCo(408) 메시지는 커밋을 수행하는 코어의 식별자(ID)를 포함할 수 있다.
URo(Uncore Rollback)(410)은 예를 들어 코어가 트랜잭션을 롤백함을 다른 코어에 통지한다. 이러한 메시지는 롤백을 수행하는 코어의 ID를 포함할 수 있다.
USCWr(Uncore Speculative Complete Write)(412)은 프로세서가 추론적 방식으로 데이터 없는 소유권에 대한 캐시 라인을 요청함을 다른 코어에 통지한다. 캐시 라인의 상태에 따라, 코어에 의해 실행된 동작 PSCWr(312)은 언코어를 통해 USCWr(412) 메시지를 전송한다는 것을 의미할 수 있다. 이러한 메시지는 SRFOWD 동작을 수행하는 코어의 ID를 포함할 수 있다.
data(Data)(414)는 코어 중 하나(또는 메인 메모리)가 예를 들어 캐시 라인의 내용으로 응답하는 언코어 트랜잭션이다.
예시적인 캐시 일관성 상태 천이
도 5는 예를 들어 언코어(108)에서 상호 연결 인터페이스 제어기(120)의 관점에서 캐시 일관성 프로토콜(126)의 캐시 상태(202)의 상태 천이(502-538)를 보여주는 예시적인 환경(500)을 도시한다. 각 상태 천이(502-538)는 언코어(108)에서 관찰된 메시지(즉, 메시지/응답 쌍의 제 1 구성 요소), 및 있다면, 상응하는 상태 천이에 의해 생성되는 응답(즉, 메시지/응답 쌍의 제 2 구성 요소)으로 식별될 수 있다.
표 1은 도 5의 상태 천이(502-538)와 관련된 언코어 메시지/응답 쌍 사이의 예시적인 관련을 도시한다.
Figure 112013067932083-pct00004
Figure 112013067932083-pct00005
도 5에서, 각 상태 천이(502-538)는 언코어(108)에서 관찰된 메시지(예를 들어, 메시지/응답 쌍의 메시지 부분) 및 관련된 응답(예를 들어, 메시지/응답 쌍의 응답 부분)으로 식별될 수 있다.
이를 예시하기 위해, 도 5의 상태 천이(530)(즉, 상태 M(206)에서 상태 RL(216)로의 천이)는 표 1에서 다음의 언코어 메시지/응답 쌍과 관련된다:
Figure 112013067932083-pct00006
USCWr 412/-
이러한 언코어 메시지/응답 쌍에서, USCWr(즉, Uncore Speculative Complete Write)(412)은 언코어에서 관찰된 메시지이지만, 상태 천이(530)에 의해 생성되는 언코어 메시지/응답 쌍의 응답 부분은 언코어(108)에서 "아무 것도 하지 않는다(do nothing else)"는 것을 의미하는 "-"로 나타낸다.
예로서, 상태 천이(530)에서, USCWr(412)은 코어 프로세서(104) 중 하나 이상에 의해 언코어(108)에서 관찰된 메시지일 수 있다. 이러한 USCWr(412) 메시지는 코어 프로세서가 예를 들어 트랜잭션의 실행의 부분으로 완료 캐시 라인에 기록할 수 있음을 "추론"하는 것을 나타내는 PSCWr(Processor Speculative Complete Write)(312) 동작을 실행하는 코어 프로세서(104) 중 하나에 응답할 수 있다. 캐시 라인이 현재 기록을 실행하는 코어와 다른 코어의 캐시에서 수정된 상태 M(206)에 있다고 가정하면, 캐시 라인의 상태는 원격 로깅된 상태 RL(216)로 천이할 것이다. 이러한 상태 천이(530)에 대한 응답은 상태 천이(530)에 대한 응답이 아무 것도 하지 않을 수 있다는 것을 의미하는 "-"로 표 1에 표시된다.
실시예에서, 상태 천이(530)에 대해, 캐시 라인의 소유권을 갖는 제 1 처리 코어는 캐시 라인의 사본을 만들고, 제 2 처리 코어와 관련된 메시지 USCWr(412)의 관찰에 대응하여 캐시 라인을 상태 RL(216)로 태깅할 수 있다. 제 1 처리 코어는 또한 제 2 처리 코어의 식별자(ID)를 상태 RL(216)의 캐시 라인과 관련시킬 수 있다. 제 1 코어는 또한 캐시 라인 사본의 어떤 데이터 없이 확인함으로써 제 2 코어에 대한 캐시 라인의 소유권을 포기하며 캐시 라인 사본을 상태 RL(216)에 유지할 수 있다.
다른 예로서, 도 5에서 상태 천이(512)(즉, 상태 RL(216)에서 상태 M RL(216)로의 천이)는 표 1에서 다음의 언코어 메시지/응답 쌍과 관련된다:
Figure 112013067932083-pct00007
URo 410/-
이러한 언코어 메시지/응답 쌍에서, URo(즉, Uncore Rollback)(410)은 언코어에서 관찰된 메시지이지만, 상태 천이(512)에 의해 생성되는 언코어 메시지/응답 쌍의 응답 부분은 "아무 것도 하지 않는다" 응답을 의미하는 "-"에 의해 나타낸다. 따라서, 상태 천이(512)는 상태 RL(216)의 캐시 라인이 캐시 라인과 관련되고 언코어(108)을 통해 관찰되는 언코어 메시지 URo(410)에 대응하여 상태 M(206)으로 천이할 것이다.
따라서, 실시예에서, 제 2 코어의 ID와 관련된 상태 RL(216)의 캐시 라인의 사본을 유지하는 제 1 코어는 언코어(108)를 통해 제 2 코어와 관련된 URo(즉, Uncore Rollback)(410) 메시지를 관찰할 시에 캐시 라인의 사본을 다시 상태 M(206)으로 이동할 수 있다.
다른 예로서, 도 5에서, 상태 천이(524)는 공유 상태 SH(204)에서 무효 상태 I(208)로의 천이를 나타낸다. 표 1에서, 상태 천이(524)는 다음과 같은 언코어 메시지/응답 쌍과 관련된다:
Figure 112013067932083-pct00008
UWr 406/-
Figure 112013067932083-pct00009
USCWr 412/-
그래서, 도 5의 상태 천이(524)는 표 1에서 대응하여 아무 것도 하지 않는("-"에 의해 나타냄) UWr(즉, Uncore Write)(406) 트랜잭션, 또는 대응하여 아무 것도 하지 않는 USCWr(즉, Uncore Speculative Complete Write)(412) 트랜잭션 중 어느 하나와 관련된다.
따라서, 이러한 예에서, 언코어(108)를 통해 트랜잭션 UWr(406) 또는 USCWr(412) 중 하나를 관찰하는 공유 상태 SH(212)의 캐시 라인을 보유한 코어 프로세서는 캐시 라인을 무효 상태 I(208)로 이동하여, 이러한 상태 천이(524)에 대응하여 추가적인 동작을 취하지 않을 수 있다.
다른 예로서, 도 5에서, 상태 천이(504)는 로깅된 상태 L(214)에서 원격 로깅된 상태 RL(216)로의 천이를 나타낸다. 표 1에서, 상태 천이(504)는 다음과 같은 언코어 메시지/응답 쌍과 관련된다:
Figure 112013067932083-pct00010
USCWr 412/URo 410
도 5의 상태 천이(504)는 표 1에서 USCWr(즉, Uncore Speculative Complete Write)(412) 트랜잭션, 및 상태 천이(504)에 대응하여 생성된 URO(즉, Uncore Rollback)(410) 응답과 관련된다.
상태 천이(504)에 대한 실시예에서, 제 1 코어는 로깅된 상태 L(214)의 캐시 라인뿐만 아니라 추론적 상태 S(212)의 관련된 새로운 캐시 라인을 보유할 수 있으며, 이는 제 1 코어에 의해 업데이트하기 위해 사용된다. 제 2 코어는 로깅된 상태 L(214)의 캐시 라인에 대해 데이터 없이 소유권에 대한 추론적 요청을 수행할 수 있다(예를 들어, 동작 PSCWr(312)을 실행할 수 있다). 제 1 코어는 제 2 코어의 요청과 관련된 USCWr(412) 메시지를 감지하고, 로깅된 상태 L(214)의 캐시 라인을 원격 로깅된 상태 RL(216)로 이동하며, 추론적 상태 S(212)의 캐시 라인의 새로운 버전을 무효 상태 I(208)로 이동할 수 있다. 롤백 메시지 URo(410)는 상태 천이(504)에 대한 응답으로 생성될 수 있고, 두 코어에서 실행되는 트랜잭션의 충돌이 감지되었기 때문에 제 1 코어가 롤백을 수행하였음을 다른 코어에 통신할 수 있다.
다른 예로서, 도 5에서, 상태 천이(514)는 로깅된 상태 L(214)에서 공유된 상태 SH(204)로의 천이를 나타낸다. 표 1에서, 상태 천이(514)는 다음과 같은 언코어 메시지/응답 쌍과 관련된다:
Figure 112013067932083-pct00011
URd 404/URo 410+data 414
도 5의 상태 천이(514)는 표 1에서 URd(즉, Uncore Read)(404) 트랜잭션, 및 상태 천이(514)에 대응하여 생성된 URo(즉, Uncore Rollback)(410) 플러스 data(414) 응답과 관련된다.
상태 천이(514)에 대한 실시예에서, 제 1 코어는 로깅된 상태 L(214)의 캐시 라인뿐만 아니라 추론적 상태 S(212)의 관련된 새로운 캐시 라인을 보유할 수 있으며, 이는 제 1 코어에 의해 업데이트하기 위해 사용된다. 제 2 코어는 로깅된 상태 L(214)의 캐시 라인에 대한 판독을 수행할 수 있다(예를 들어, 동작 PRd(304)을 실행할 수 있다). 제 1 코어는 제 2 코어의 판독과 관련된 URd(404) 메시지를 감지하고, 로깅된 상태 L(214)의 캐시 라인을 공유된 상태 SH(204)로 이동하며, 추론적 상태 S(212)의 캐시 라인의 새로운 버전을 무효 상태 I(208)로 이동할 수 있다. data(즉, 판독에 의해 요청된 data(414))와 함께 롤백 메시지 URo(410)는 상태 천이(514)에 대한 응답으로 생성될 수 있으며, 실행된 트랜잭션의 충돌이 감지되었기 때문에 제 1 코어가 롤백을 수행하였음을 다른 코어에 전달할 수 있다.
다른 예로서, 도 5에서, 상태 천이(508)는 로깅된 상태 L(214)에서 무효 상태 I(208)로의 천이를 나타낸다. 표 1에서, 상태 천이(508)는 다음과 같은 언코어 메시지/응답 쌍과 관련된다:
Figure 112013067932083-pct00012
UWr 406/URo 410+data 414
도 5의 상태 천이(508)는 표 1에서 UWr(즉, Uncore Write)(406) 트랜잭션, 및 상태 천이(508)에 대응하여 생성된 URo(즉, Uncore Rollback)(410) 플러스 data(414) 응답과 관련된다.
상태 천이(508)에 대한 실시예에서, 제 1 코어는 로깅된 상태 L(214)의 캐시 라인뿐만 아니라 추론적 상태 S(212)의 관련된 새로운 캐시 라인을 보유할 수 있으며, 이는 제 1 코어에 의해 업데이트하기 위해 사용된다. 제 2 코어는 로깅된 상태 L(214)의 캐시 라인에 대한 기록을 수행할 수 있다(예를 들어, 동작 PWr(306)을 실행할 수 있다). 제 1 코어는 제 2 코어의 기록과 관련된 UWr(406) 메시지를 감지하고, 로깅된 상태 L(214)의 캐시 라인을 무효 상태 I(208)로 이동하며, 추론적 상태 S(212)의 캐시 라인의 새로운 버전을 무효 상태 I(208)로 이동할 수 있다. data(즉, 기록에 의해 요청된 data(414))와 함께 롤백 메시지 URo(410)는 상태 천이(508)에 대한 응답으로 생성될 수 있으며, 실행된 트랜잭션의 충돌이 감지되었기 때문에 제 1 코어가 롤백을 수행하였음을 다른 코어에 전달할 수 있다.
다른 예로서, 도 5에서, 상태 천이(526)는 관찰된 상태 O(210)에서 무효 상태 I(208)로의 천이를 나타낸다. 표 1에서, 상태 천이(526)는 다음과 같은 언코어 메시지/응답 쌍과 관련된다:
Figure 112013067932083-pct00013
UWr 406/URo 410
Figure 112013067932083-pct00014
USCWr 412/URo 410
상태 천이(526)에 대한 실시예에서, 제 1 코어는 관찰된 상태 O(210)의 캐시 라인을 보유할 수 있다. 제 2 코어는 관찰된 상태 O(210)의 캐시 라인에 대한 기록(예를 들어, 실행 동작 PWr(306)) 또는 추론적 기록(예를 들어, 실행 동작 PSCWr(312))을 수행할 수 있다. 제 1 코어는 제 2 코어의 기록과 관련된 UWr(406) 또는 USCWr(412) 메시지를 감지하며, 관찰된 상태 O(210)의 캐시 라인을 무효 상태 I(208)로 이동할 수 있다. 롤백 메시지 URo(410)는 상태 천이(526)에 대한 응답으로 생성될 수 있고, 실행된 트랜잭션의 충돌이 감지되었기 때문에 제 1 코어가 롤백을 수행하였음을 다른 코어에 통신할 수 있다.
위에서 다루지 못한 상태 천이(502-538) 중 다른 상태 천이는 상기 예에서 설명된 바와 유사한 방식으로 해석될 수 있다.
도 6은 예로서 처리 코어(104) 중 하나 이상과 같이 코어 프로세서의 관점에서 캐시 일관성 프로토콜(126)의 캐시 상태(202)의 상태 천이(602-640)를 보여주는 예시적인 환경(600)을 도시한다. 각 상태 천이(602-640)는 코어 프로세서에 의해 실행된 코어 프로세서 동작(즉, 프로세서 동작/응답 쌍의 제 1 구성 요소), 및 있다면, 대응하는 상태 천이에 대응하여 언코어에서 생성되는 응답 메시지(즉, 프로세서 동작/응답 쌍의 제 2 구성 요소)로 식별될 수 있다.
표 2는 도 6의 상태 천이(602-640)와 관련된 프로세서 동작/응답 메시지 쌍 사이의 예시적인 관련을 도시한다.
Figure 112013067932083-pct00015
Figure 112013067932083-pct00016
도 6에서, 각 상태 천이(602-640)는 프로세서 동작(예를 들어, 프로세서 동작/응답 쌍의 동작 부분), 및 있다면 언코어에서 생성된 응답 메시지(예를 들어, 프로세서 동작/응답 쌍의 응답 부분)로 식별될 수 있다.
예로서, 도 6의 상태 천이(620)(즉, 상태 M(206)에서 상태 L(214)로의 천이)는 표 2에서 다음의 프로세서 동작/응답 쌍과 관련된다:
Figure 112013067932083-pct00017
PSCWr 312/-
Figure 112013067932083-pct00018
PWr 306/-
이러한 프로세서 동작/응답 쌍에서, PSCWr(즉, Processor Speculative Complete Write)(312) 및 PWr(즉, Processor Write)(306)은 코어 프로세서에 의해 수행될 수 있는 프로세서 동작/응답 쌍의 동작이지만, 상태 천이(620)에 의해 생성되는 프로세서 동작/응답 쌍의 각각의 응답 부분은 "아무 것도 하지 않는(do nothing)" 것을 의미하는 "-"에 의해 나타낸다.
도 6의 상태 천이(620)의 실시예에서, 코어 프로세서(104)는 캐시 라인과 관련된 PSCWr(312) 동작을 실행할 수 있다. 이러한 동작은 코어 프로세서가 예를 들어 트랜잭션을 성공적으로 완료함으로써 전체 캐시 라인에 기록할 수 있음을 추론하는 것을 나타낼 수 있다.
도 6에서 상태 천이(620)에 도시된 바와 같이, 캐시 라인이 기록을 실행하는 코어(104)의 캐시(106)에서 수정된 상태 M(206)에 있다고 가정하면, 캐시 라인은 로깅된 상태 L(214)로 천이한다. 이러한 천이에 대한 응답은 표 2에서 상태 천이(620)에 대한 응답이 아무 것도 하지 않을 수 있음을 의미하는 "-"로 나타낸다. 이것은 동작이 기록을 실행하는 코어 내에서 국부적으로 해결되었기 때문에 동작에 대한 응답으로 다른 에이전트에 통지하기 위해 언코어를 통해 메시지를 전송할 필요가 없다는 것을 의미한다.
실시예에서, 코어 프로세서는 또한 추론적 상태 S(212)에 태깅된 캐시 라인의 사본을 생성하면서 캐시 라인을 상태 L(214)로 이동할 수 있다. 그 후, 코어 프로세서는 상태 L(214)에 로깅된 원래의 캐시 라인을 유지하면서 추론적 상태 S(212)의 캐시 라인의 사본에 기록을 수행할 수 있다. 다른 실시예에서, 코어 프로세서는 코어 프로세서가 추론하는 트랜잭션을 실행하는 부분이 전체 캐시 라인에 기록함에 따라 추론적 상태 S(212)의 캐시 라인의 사본에 기록을 수행할 수 있다.
다른 예로서, 도 6에서, 상태 천이(610)는 로깅된 상태 L(214)에서 수정된 상태 M(206)로의 천이를 나타낸다. 표 2에서, 상태 천이(610)는 다음과 같은 프로세서 동작/응답 쌍과 관련되어 있다:
Figure 112013067932083-pct00019
PRo 310/-
그래서, 도 6의 상태 천이(610)는 표 2에서 PRo(즉, Processor Rollback) 동작, 및 ("-"로 나타내는) 아무것도 하지 않는 응답과 관련된다. 실시예에서, 코어 프로세서는 로깅된 상태 L(214)의 캐시 라인을 생성한 트랜잭션을 완료 할 수 없음을 감지하고, PRo(310) 동작을 실행할 수 있다. 그 후, 이것은 상태 천이(610)가 발생할 수 있도록 하며, 이에 의해 상태 L(214)의 캐시 라인이 수정된 상태 M(206)로 롤백된다.
다른 예로서, 도 6에서, 상태 천이(630)는 추론적 상태 S(212)에서 수정된 상태 M(206)으로의 천이를 나타낸다. 표 2에서, 상태 천이(630)는 다음과 같은 프로세서 동작/응답 쌍과 관련되어 있다:
Figure 112013067932083-pct00020
PCo 308/UCo 408
그래서, 도 6의 상태 천이(630)는 표 2에서 PCo(즉, Processor Commit)(308) 동작, 및 언코어를 통해 생성된 UCo(즉, Uncore Commit)(408) 응답 메시지와 관련된다.
실시예에서, 코어 프로세서는 상태 S(212)에 태깅된 캐시 라인에 대한 커밋 동작 PCo(308)를 실행할 수 있으며, 이는 캐시 라인이 상태 천이(630)의 부분으로 상태 S(212)에서 상태 M(206)으로 이동되도록 한다. 다른 실시예에서, 코어 프로세서는 트랜잭션의 성공적인 완료의 감지에 대응하여 상태 S(212)에 태깅된 캐시 라인에 영향을 미치는 커밋 동작 PCo(308)를 실행할 수 있으며, 이는 캐시 라인이 상태 천이(630)의 부분으로 상태 S(212)에서 상태 M(206)으로 이동되도록 한다. 또 다른 실시예에서, 코어 처리 유닛은 상태 S(212)에 태깅된 캐시 라인의 원래의 사본을 로깅된 상태 L(214)에 유지할 수 있다.
다른 예로서, 도 6에서, 상태 천이(616)는 추론적 상태 S(212)에서 무효 상태 I(208)로의 천이를 나타낸다. 표 2에서, 상태 천이(616)는 다음과 같은 프로세서 동작/응답 쌍과 관련되어 있다:
Figure 112013067932083-pct00021
PRo 310/URo 410
그래서, 도 6의 상태 천이(616)는 표 2에서 PRo(즉, Processor Rollback)(310) 동작, 및 언코어(108)와 같은 언코어를 통해 생성된 URo(즉, Uncore Rollback)(410) 응답 메시지와 관련된다.
실시예에서, 코어 프로세서는 상태 S(212)에 태깅된 캐시 라인에 대한 롤백 동작 PRo(310)를 실행할 수 있으며, 이는 캐시 라인이 상태 천이(616)의 부분으로 상태 S(212)에서 상태 I(208)로 이동되도록 한다. 다른 실시예에서, 코어 프로세서는 트랜잭션이 성공적으로 완료하지 않을 것이라는 감지에 대응하여 상태 S(212)에 태깅된 캐시 라인에 영향을 미치는 롤백 동작 PRo(310)를 실행할 수 있으며, 이는 캐시 라인이 상태 천이(616)의 부분으로 상태 S(212)에서 상태 I(208)로 이동되도록 한다. 또 다른 실시예에서, 코어 프로세서는 상태 S(212)에 태깅된 캐시 라인의 원래의 사본을 로깅된 상태 L(214)에 유지할 수 있음으로써, 상태 S(212)에 태깅된 캐시 라인이 폐기될 때, 캐시 라인의 원래의 사본은 여전히 로깅된 상태 L(214)에 있도록 한다. 이 경우에, 로깅된 상태 L(214)의 이러한 사본은 상술한 바와 같이 수정된 상태 M(206)로 천이한다.
다른 예로서, 도 6에서, 상태 천이(608)는 로깅된 상태 L(214)에서 무효 상태 I(208)로의 천이를 나타낸다. 표 2에서, 상태 천이(608)는 다음과 같은 프로세서 동작/응답 쌍과 관련되어 있다:
Figure 112013067932083-pct00022
PCo 308/-
그래서, 도 6의 상태 천이(608)는 표 2에서 PCo(즉, Processor Commit)(308) 동작, 및 ("-"로 나타내는) 아무것도 하지 않는 응답과 관련된다.
실시예에서, 코어 프로세서는 상태 L(214)에 태깅된 캐시 라인에 대한 커밋 동작 PCo(308)를 실행할 수 있으며, 이는 캐시 라인이 상태 천이(608)의 부분으로 상태 L(214)에서 상태 I(208)로 이동되도록 한다. 다른 실시예에서, 코어 프로세서는 트랜잭션의 성공적인 완료의 감지에 대응하여 상태 L(214)에 태깅된 캐시 라인에 영향을 미치는 커밋 동작 PCo(308)를 실행할 수 있으며, 이는 캐시 라인이 상태 천이(608)의 부분으로 상태 L(214)에서 상태 I(208)로 이동되도록 한다.
다른 예로서, 도 6에서, 상태 천이(624)는 공유된 상태 SH(204)에서 추론적 상태 S(212)로의 천이를 나타낸다. 표 2에서, 상태 천이(624)는 다음과 같은 프로세서 동작/응답 쌍과 관련되어 있다:
Figure 112013067932083-pct00023
PWr 306/UWr 406
Figure 112013067932083-pct00024
PSCWr 312/USCWr 412
그래서, 도 6의 상태 천이(624)는 표 2에서 PWr(즉, Processor Write)(306) 동작, 및 UWr(즉, Uncore Write)(406) 응답, 또는 PSCWr(즉, Processor Speculative Complete Write)(312) 동작, 및 USCWr(즉, Uncore Speculative Complete Write)(412) 응답과 관련되어 있다.
실시예에서, 코어 프로세서는 상태 SH(204)에 태깅된 캐시 라인에 대한 추론적 기록을 실행할 수 있으며(예를 들어 추록적으로 기록할 수 있으며), 이는 캐시 라인이 상태 천이(624)의 부분으로 상태 SH(204)에서 추론적 상태 S(212)로 이동되도록 한다.
위에서 다루어지지 않은 상태 천이(602-640) 중 다른 상태 천이는 위의 예에서 설명된 바와 유사한 방식으로 해석될 수 있다.
도 5 및 6은 프로세서 동작(도 6)에 대해서는 실선 및 언코어 트랜잭션(도 5)에 대해서는 점선으로 함께 도시될 수 있다. 도 5 및 6은 명확성을 위해 여기에서 분할되었다.
도 1-6은 캐시 일관성 프로토콜(126)의 다양한 실시예를 설명하는 데 사용되었다는 것을 주목한다. 그러나, 이러한 실시예는 추가적인 대안적 실시예가 있기 때문에 캐시 일관성 프로토콜(126)의 범위를 제한하도록 의도되지 않는다.
대안적 실시예의 예로서, 코어는 항상 현재 트랜잭션이 커밋 또는 롤백하는지의 여부를 다른 코어에 통지하는 데 필요하지는 않을 수 있다. 예로서, 제 1 코어는 다른 코어가 상태 RL(216)의 캐시 라인을 무효화하도록 하기 위해 커밋 또는 롤백을 수행하고, 제 1 코어의 코어 ID로 태깅된 것을 다른 코어에 통지할 필요가 있을 수 있다. 따라서, PCo(308) 또는 PRo(310) 동작을 실행하는 코어는 이전에 USCWr(412) 메시지가 예를 들어 캐시 라인을 포함하는 현재의 트랜잭션 동안에 언코어를 통해 전송되도록 하였을 경우에만 생성되는 UCo(408) 또는 URo(410) 메시지를 가질 필요가 있을 수 있다. 따라서, 커밋 및 롤백 메시지를 선택적으로 필터링함으로써, 커밋 및 롤백 트랜잭션은 언코어를 통해 방지될 수 있다.
추가적으로, 캐시 라인에 관한 SRFOWD(Speculative Request For Ownership Without Data) 트랜잭션의 추론적 특성은 처리 코어가 트랜잭션이 커밋하는지의 여부가 확실하지 않을 수 있다는 것을 의미할 수 있다. 예로서, 처리 코어는 트랜잭션이 성공적으로 완료할 경우에 전체 캐시 라인이 업데이트될 것을 확실히 알 수 있다. 그러나, 실시예에서, 캐시 일관성 프로토콜(126)은 달리 성공적인 트랜잭션이 전체 캐시 라인을 업데이트하는 데 실패할 때 롤백(예를 들어, URo(410))을 강제로 행함으로서 확장될 수 있다. 다시 말하면, 관련된 트랜잭션이 성공적으로 완료하고, 처리 코어가 커밋을 수행할지라도, 롤백은 USCWr(412) 트랜잭션을 통해 요청된 캐시 라인에 대한 부분 기록의 경우에 생성될 수 있다. 대안적인 실시예에서, 캐시 일관성 프로토콜(126)은 달리 성공적인 트랜잭션이 예를 들어 트랜잭션의 부분으로 처리 코어에 의해 데이터 없는 소유권에 대해 추론적으로 요청된 모든 캐시 라인을 전체적으로 업데이트하는 데 실패할 때에 발생할 롤백을 강제로 행함으로써 확장될 수 있다.
도 5의 상태 트랜잭션(518)에 도시된 바와 같이, 다른 대안적인 실시예의 예로서, 공유된 상태 SH(204)의 캐시 라인은 다른 코어가 언코어(108)를 통해 USCWr(412) 트랜잭션을 행할 때 상태 트랜잭션(524)에서 무효 상태 I(208)로 이동될 수 있다. 그러나, 대안적인 실시예에서, 캐시 라인은 (도시되지 않은) 공유된 로그 상태라 하는 새로운 상태로 이동될 수 있다. 그 다음, 다른 코어가 관련된 트랜잭션을 커밋하는 경우, 공유된 로그 상태에서 관련된 캐시 라인은 무효 상태 I(208)로 이동될 수 있다. 다른 코어가 트랜잭션을 롤백하는 경우, 공유된 로그 라인은 공유된 상태 SH(204)로 다시 이동될 수 있다. 이것은 공유된 로깅된 상태에서 캐시 라인을 소유한 코어가 롤백의 경우에 별도의 언코어 트랜잭션을 필요로 하지 않고 캐시 라인에 액세스하도록 한다.
다른 예로서, 코어(104)가 언코어(108)를 통해 언코어 트랜잭션(402)을 생성시킬 때, 다른 코어(104)는 즉시 트랜잭션을 관찰하고 서비스할 수 있다. 예를 들면, 도 6의 상태 트랜잭션(614)에 도시된 바와 같이, 원격 로깅된 상태 RL(216)의 캐시 라인을 통해 PRd(304) 동작을 실행하는 코어(104)는 캐시 라인이 수정된 상태 M(206)로 즉시 천이하도록 할 수 있다. 그러나, 대안적인 실시예에서, 이러한 천이는 즉시 행해지지 않을 수 있다. 코어(104)는 "자기 스누핑(self-snooped)"될 수 있다(예를 들면, 코어는 언코어를 통해 동일한 관련된 메시지를 수신할 수 있다). 예로서, 제 1 처리 코어(104)가 상태 RL(216)의 캐시 라인을 통해 PRd(304) 동작을 실행하는 경우, URd(404) 메시지는 언코어(108)를 통해 전송될 수 있지만, 메시지는 캐시 라인을 상태 RL(216)에 있게 할 수 있다. 자신의 URd(404) 메시지를 수신하면, 도 5의 상태 천이(522)에 도시된 바와 같이, 제 1 처리 코어(104)는 언코어를 통해 대응하는 캐시 라인 데이터를 전송하고(예를 들어, 메인 메모리(116) 또는 모든 코어에 의해 공유된 캐시 메모리를 업데이트하고), 캐시 라인을 공유된 상태 SH(204)로 천이함으로써 진행할 수 있다.
다른 예로서, 코어(104)는 상술한 바와 같이 트랜잭션 내에서 프로세서 동작(302)과 같은 동작을 실행할 수 있다. 그러나, 대안적인 실시예에서, 코어(104)는 트랜잭션 내에서 실행된 판독과 트랜잭션 외부에서 실행된 판독을 구별할 수 있다. 따라서, 새로운 프로세서 동작은 예를 들어 트랜잭션 내에서 판독을 위한 PRd(processor speculative read) 동작, 및 트랜잭션 외부에서 프로세서 판독을 위한 PURd(processor un-transactional read) 동작으로 정의될 수 있으며, 후자는 비추론적인 판독 동작이다. 이는 기록 및 완료 라인 기록에 적용할 수 있다. 따라서, 새로운 프로세서 동작은 예를 들어 트랜잭션 내에서 추론적인 기록을 위한 PWr(processor speculative write) 동작, 비추론적인 기록 동작이고, 트랜잭션 외부에서 프로세서 기록을 위한 PUWr(processor un-transactional write) 동작, 트랜잭션 내에서 완료 추론적인 기록을 위한 PSCWr(processor speculative complete write) 동작, 및 트랜잭션 외부에서 프로세서 기록을 위한 PUCWr(processor complete un-transactional write) 동작으로 정의될 수 있으며, PCWr은 "데이터 없는 소유권에 대한 요청"을 생성하는 동작과 유사하다. 이 경우에 상태 사이의 천이는 쉽게 확장될 수 있다.
예시적인 프로토콜 동작
도 7-9는 본 명세서에 설명되는 확장된 캐시 일관성 프로토콜의 여러 양태를 도시한 예시적인 흐름도이다.
도 7은 코어 처리 유닛이 캐시 라인과 같은 캐시 메모리의 부분에 추론적으로 기록하는 캐시 일관성 프로토콜의 양태를 포함하는 예시적인 방법(700)을 도시한 흐름도이다.
702에서, 코어(104) 중 하나와 같은 처리 코어는 캐시 메모리에 대한 추론적 기록을 수행한다. 실시예에서, 처리 코어는 전체 캐시 라인을 기록할 것을 추론할 수 있다. 다른 실시예에서, 처리 코어는 트랜잭션을 실행하는 부분으로 수정된 상태 M(206)의 전체 캐시 라인에 기록할 것을 추론할 수 있다. 예로서, 처리 코어는 처리 코어가 현재 트랜잭션이 커밋하는지의 여부를 현재 보장할 수 없기 때문에 전체 캐시 라인을 기록할 것을 추론할 수 있다.
704에서, 처리 코어는 캐시 라인을 로깅된 상태 L(214)와 같은 로깅된 상태로 천이한다. 예로서, 처리 코어가 수정된 상태 M(206)의 라인을 가지며 PWr(306) 또는 PSCWr(312) 동작을 실행할 때, 캐시 라인은 로컬 트랜잭션을 위한 캐시 라인의 이전의 사본임을 나타내기 위해 로깅된 상태 L(214)로 이동된다.
706에서, 처리 코어는 새로운 캐시 라인을 생성하며 새로운 캐시 라인을 추론적 상태로 태깅한다. 실시예에서, 처리 코어가 PWr(306) 동작을 실행하면, 새로운 캐시 라인은 추론적 상태 S(212)에서 생성되며, 트랜잭션 내에서 저장 명령어에 의해 업데이트되는 캐시 라인의 새로운 사본일 수 있다. PSCWr(312) 동작을 실행하는 처리 코어의 경우에, 새로운 캐시 라인은 추론적 상태 S(212)에서 생성되며, 트랜잭션 내에서 저장 명령어에 의해 업데이트되는 캐시 라인의 새로운 버전일 수 있다. 실시예에서, 처리 코어는 어떤 업데이트(예를 들어, 저장, 기록)를 추론적 상태 S(212)의 캐시 라인과 같은 새로운 부분으로 지시할 수 있다. 이 경우에 PWr(306)과 PSCWr(312) 동작 사이의 차이는 처리 코어가 PSCWr(312) 동작을 실행하는 경우에, 새로운 캐시 라인이 캐시 라인의 사본일 필요가 없다는 것이다. 그러나, 다른 실시예에서, 새로운 캐시 라인은 캐시 라인의 새로운 비천이 캐시 라인의 사본일 수 있도록 캐시 라인의 사본일 수 있다.
예로서, 처리 코어가 PWr(306) 또는 PSCWr(312) 동작을 공유 상태 S(212)에 있는 캐시 라인으로 실행하면, 이것은 UWr(406) 또는 USCWr(412) 트랜잭션이 제각기 언코어를 통해 전송되며 캐시 라인을 추론적 상태 S(212)로 이동하도록 할 수 있다.
708에서, 처리 코어는 PCo(308)와 같은 커밋 동작을 실행할 수 있다. 실시예에서, 처리 코어는 트랜잭션이 성공적일 경우에 PCo(308)를 수행할 수 있다. 이것은 처리 코어의 식별자(즉, ID)를 가진 UCo(408) 트랜잭션이 언코어(108)를 통해 전송되도록 할 수 있다. 710에서, 캐시 라인은 다른 유효 상태(예를 들어, M(206))로 이동된다. 예로서, 커밋 동작에 대응하여, 캐시 라인은 추론적 상태 S(212)에서 수정된 상태 M(206)으로 이동할 수 있다. 결과적으로, 로깅된 상태에 태깅된 캐시 라인은 더 이상 유지될 필요가 없을 수 있다. 따라서, 712에서, 처리 코어는 로깅된 상태에 태깅된 캐시 라인을 예를 들어 무효 상태 I(208)로 태깅함으로써 폐기할 수 있다.
처리 코어가 708에서 커밋 동작을 수행하지 않는 경우, 714에서 처리 코어는 PRo(310)와 같은 롤백 동작을 실행할 수 있다. 실시예에서, 트랜잭션이 성공적이지 못하면, 처리 코어는 롤백 동작을 실행할 수 있다. 롤백 동작은 언코어(108)를 통해 전송되는 처리 코어의 ID와 함께 URo(410)와 같은 롤백 메시지를 생성할 수 있다. 롤백 동작에 대응하여, 716에서 처리 코어는 로깅된 상태에 태깅된 캐시 라인의 상태를 다른 유효 상태로 변경할 수 있다. 예로서, 처리 코어는 로깅된 상태 L(214)에 태깅된 캐시 라인의 상태를 수정된 상태 M(206)으로 변경할 수 있다. 718에서, 롤백 동작에 대응하여, 처리 코어는 추론적 상태에 태깅된 새로운 캐시 라인을 예를 들어 무효 상태 I(208)로 태깅함으로써 폐기할 수 있다.
도 8은 처리 코어가 캐시 라인에 대한 데이터 없는 소유권에 대한 추론적 요청을 수행하는 캐시 일관성 프로토콜의 양태를 포함하는 예시적인 방법(800)을 도시한 흐름도이다.
802에서, 실시예에서, 처리 코어는 캐시 라인에 대한 데이터 없이 소유권을 요청하는 PSCWr(312) 동작을 실행할 수 있다. PSCWr(312) 동작은 처리 코어의 ID를 포함하는 USCWr(412) 메시지가 언코어(108)를 통해 전송되도록 할 수 있다. 예로서, 처리 코어는 전체 캐시 라인과 같은 캐시 메모리의 부분에 기록할 것을 추론할 수 있다. 프로세서가 전체 캐시 라인을 중복 기록할 것을 추론하므로, 프로세서가 캐시 라인과 관련된 어떤 데이터를 수신할 필요가 없다. 따라서, 요청된 캐시 라인을 소유하는 어떤 엔티티(예를 들어, 소유자 코어)는 캐시 라인과 관련된 어떤 데이터를 처리 코어로 전송할 필요가 없다. 따라서, 실시예에서, PSCWr(312) 동작을 실행하는 처리 코어는 제공되는 캐시 라인에 포함된 데이터 없이 캐시 라인에 대한 소유권을 요청한다.
804에서, 처리 코어는 캐시 라인의 소유권에 대한 확인을 감지하며, 여기서, 확인은 OC(Owner Core)에서 나오는 캐시 라인으로부터의 어떤 데이터를 포함하지 않는다. 추가적으로, OC는 원격 로깅된 상태 RL(216)에 태깅된 캐시 라인의 사본을 만든다. 예로서, 현재 캐시 라인을 소유한 OC, 예를 들어 다른 처리 코어(104)는, 처리 코어에 의해 실행되는 PSCWr(312) 동작에 대응하여, 소유권에 대한 요청에 대응하여 캐시 라인의 처리 코어 소유권을 승인하는 확인만을 반환한다. 언코어(108)를 통해 감지되는 USCWr(412) 메시지에 대응하여 다른 방법으로 언급된다. 현재 캐시 라인을 소유한 OC는 단지 USCWr(412) 메시지의 ID를 가진 처리 코어로 확인을 반환하며, 요청된 캐시 라인의 처리 코어 소유권을 승인한다. 이러한 확인에는 캐시 라인으로부터이 어떤 데이터 내용이 존재하지 않는다.
806에서, 처리 코어는 상태 S(212)와 같은 추론적 상태로 태깅된 새로운 캐시 라인을 생성할 수 있다. 새로운 캐시 라인은 캐시 라인의 새로운 사본 또는 새로운 버전 중 하나일 수 있다.
808에서, 처리 코어는 커밋 또는 롤백을 수행하는지가 판단된다. 실시예에서, 처리 코어는 PCo(308)를 실행함으로써 트랜잭션을 커밋하거나, Pro(310)를 실행함으로써 트랜잭션을 롤백할 수 있다.
808에서 처리 코어가 커밋을 수행하면, 810에서 처리 코어는 다른 유효 상태로 새로운 캐시 라인을 태깅할 수 있다. 예로서, 처리 코어는 새로운 캐시 라인을 추론적 상태 S(212)에서 수정된 상태 M(206)로 변경할 수 있다. 812에서 처리 코어는 상호 연결 네트워크(110)를 통해 관련된 코어 ID로 커밋 메시지를 전송한다. 814에서 OC는 예를 들어 캐시 라인의 상태를 I(208)로 변경함으로써 원격 로깅된 상태에 태깅된 캐시 라인을 폐기한다.
다른 한편으로, 808에서 처리 코어가 롤백을 수행하면, 816에서 처리 코어는 이전에 추론적 상태에 태깅된 새로운 캐시 라인을 무효 상태로 태깅할 수 있다. 818에서 처리 코어는 상호 연결 네트워크(110)를 통해 관련된 코어 ID로 롤백 메시지를 전송한다. 820에서 OC는 상태 RL(216)에 보유된 캐시 라인을 유효 상태(예를 들어, M(206))로 태깅한다.
도 9는 처리 코어가 캐시 라인에 대한 데이터 없는 소유권에 대한 추론적 요청을 감지하는 캐시 일관성 프로토콜의 양태를 포함하는 예시적인 방법(900)을 도시한 흐름도이다.
902에서, 실시예에서, 제 1 처리 코어는 언코어(108)를 통해 캐시 라인에 대한 데이터 없이 소유권을 요청하는 제 2 처리 코어의 id를 포함하는 메시지 USCWr(412)을 감지할 수 있다. 예로서, 요청하는 제 2 처리 코어는 전체 캐시 라인에 대해 데이터 없이 소유권을 요청하는 동작 PSCWr(312)을 실행할 수 있다. 요청하는 제 2 처리 코어가 전체 캐시 라인을 중복 기록할 것을 추론하므로, 제 1 처리 코어가 캐시 라인과 관련된 어떤 데이터를 전송할 필요가 없다.
904에서, 제 1 처리 코어(104)와 같이 요청된 캐시 라인(수정된 상태 M(206))을 소유한 엔티티는 요청된 캐시 라인의 백업 사본을 만들며, 그것을 요청하는 제 2 처리 코어의 id와 함께 상태 RL(216)과 같은 원격 로깅된 상태에 태깅한다.
906에서, 제 1 처리 코어는 캐시 라인의 소유권에 대한 확인을 제 2 처리 코어에 제공한다. 실시예에서, 확인은 캐시 라인에 포함된 어떤 데이터 없이 제 1 처리 코어에 의해 제 2 처리 코어에 제공된다. 이 점에서, 캐시 라인의 소유권은 요청하는 엔티티로 전달한다. 예로서, 확인은 캐시 라인에 포함된 어떠한 데이터 없이 언코어(108)를 통해 감지된 메시지 USCWr(412)의 id에서 제 2 처리 코어에 제공된다.
908에서, 제 1 처리 코어는 제 2 처리 코어가 요청된 캐시 라인과 관련된 커밋 또는 롤백을 수행하였는지를 감지한다. 908에서 제 1 처리 코어가 제 2 처리 코어가 커밋을 수행하였음을 감지하면, 910에서 제 1 처리 코어는 예를 들어 상태를 RL(216)에서 무효 상태 I(208)로 변경함으로써 백업 사본을 폐기한다.
다른 한편으로, 908에서 제 1 처리 코어가 제 2 처리 코어가 요청된 캐시 라인과 관련된 롤백을 수행하였음을 감지하면, 912에서 제 1 처리 코어는 캐시 라인의 백업 사본을 다른 유효 상태로 태깅한다. 예로서, 제 1 처리 코어는 캐시 라인의 백업 사본의 상태를 RL(216)에서 상태 M(206) 또는 어떤 다른 유효 상태로 변경할 수 있다.
(도 9에 도시되지 않은) 다른 실시예의 예로서, 제 1 처리 코어는 예를 들어 추론적 방식으로 캐시 라인에 대해 데이터 없이 소유권을 요청하는 제 3 처리 코어의 ID를 포함하는 제 2 USCWr(412) 메시지를 감지할 수 있다. 이러한 예에서, 제 1 처리 코어는 원격 로깅된 상태 RL(216)의 캐시 라인을 유지하며 제 3 처리 코어의 id를 기록할 것이다. 제 2 처리 코어는 언코어(108)를 통해 제 2 USCWr(412) 메시지를 관찰하며 도 5에서 상태 천이(518)에 도시된 바와 같이 추론적 상태 S(212)의 관련된 캐시 라인을 무효 상태 I(208)로 이동함으로써 트랜잭션을 롤백할 것이며, 관련된 URo(410) 메시지는 언코어(108)를 통해 전송될 것이다.
도 10은 다중 멀티 코어 프로세서를 포함하는 향상 또는 확장된 캐시 일관성 프로토콜을 수행하기 위해 사용 가능한 예시적인 환경(1000)을 도시한다. 환경(1000)에서, 본 명세서에 설명된 바와 같은 캐시 일관성 프로토콜(126)은 다중 프로세서(102(1)-102(N))를 통해 캐시 일관성을 제공하도록 확장될 수 있으며, N은 1보다 큰 정수이다.
발명 대상이 구조적 특징 및/또는 방법론적 동작에 특정한 언어로 설명되었지만, 첨부된 청구범위에서 정의된 발명 대상은 반드시 상술한 특정 특징 또는 동작에 한정되는 것은 아니라는 점이 이해되어야 한다. 오히려, 상술한 특정 특징 및 동작은 청구범위를 구현하는 예시적인 형식으로 개시되어 있다.
예를 들면, 상술한 장치 또는 프로세서의 모든 선택적 특징은 또한 본 명세서에 설명된 방법 또는 프로세스에 관해 구현될 수 있다. 예의 세부 사항은 하나 이상의 실시예에서 어디서나 이용될 수 있다.

Claims (20)

  1. 처리 코어를 포함하되, 상기 처리 코어는
    캐시 메모리의 부분에 대한 데이터 없이 소유권에 대한 추론적 요청을 수행하는 논리와,
    상기 캐시 메모리의 부분에 추론적으로 기록하는 논리와,
    상기 캐시 메모리의 부분의 사본을 생성하는 논리와,
    상기 캐시 메모리의 부분의 사본을 업데이트하는 논리를 갖는
    프로세서.
  2. 제 1 항에 있어서,
    상기 처리 코어는 상기 사본을 추론적 상태로 태깅하는 논리를 갖는
    프로세서.
  3. 제 1 항에 있어서,
    상기 처리 코어는 상기 사본과 관련된 커밋(a commit)을 실행하는 논리를 갖는
    프로세서.

  4. 제 3 항에 있어서,
    상기 처리 코어는 부분적으로 상기 커밋에 기초하여 상기 사본을 다른 유효 상태로 태깅하는 논리를 갖는
    프로세서.
  5. 제 4 항에 있어서,
    상기 처리 코어는 부분적으로 상기 커밋에 기초하여 상기 캐시 메모리의 부분을 폐기하는 논리를 갖는
    프로세서.
  6. 제 1 항에 있어서,
    상기 처리 코어는 로깅된 상태에서 상기 캐시 메모리의 부분을 태깅하는 논리를 갖는
    프로세서.
  7. 캐시 라인에 대한 데이터 없이 소유권에 대한 추론적 요청을 수행하는 논리를 갖는 처리 코어를 포함하는
    프로세서.
  8. 제 7 항에 있어서,
    상기 처리 코어는 상기 캐시 라인으로부터의 데이터 없이 상기 캐시 라인의 소유권에 대한 확인을 감지하는 논리를 갖는
    프로세서.
  9. 제 7 항에 있어서,
    상기 처리 코어는
    상기 캐시 라인을 로깅된 상태로 태깅하는 논리와,
    상기 캐시 라인의 새로운 버전을 생성하는 논리와,
    상기 새로운 버전을 추론적 상태로 태깅하는 논리를 갖는
    프로세서.
  10. 제 9 항에 있어서,
    상기 처리 코어는 상기 새로운 버전에 기록을 수행하는 논리를 갖는
    프로세서.
  11. 제 9 항에 있어서,
    상기 처리 코어는
    상기 새로운 버전과 관련된 커밋을 수행하는 논리와,
    상기 새로운 버전의 상기 추론적 상태를 유효 상태로 변경하는 논리와,
    상기 캐시 라인의 상기 로깅된 상태를 무효 상태로 변경하는 논리를 갖는
    프로세서.
  12. 제 9 항에 있어서,
    상기 처리 코어는
    상기 로깅된 상태의 상기 캐시 라인과 관련된 롤백(a rollback)을 수행하는 논리와,
    상기 새로운 버전의 상태를 무효 상태로 변경하는 논리와,
    상기 로깅된 상태에서의 상기 캐시 라인의 상태를 유효 상태로 변경하는 논리를 갖는
    프로세서.
  13. 제 7 항에 있어서,
    데이터 없이 소유권에 대한 추론적 요청의 감지에 대응하여 상기 캐시 라인의 유효 사본의 백업 사본을 생성하는 논리를 갖는 상기 캐시 라인의 유효 사본을 보유한 하나 이상의 다른 처리 코어를 더 포함하는
    프로세서.
  14. 제 13 항에 있어서,
    상기 하나 이상의 다른 처리 코어는 상기 프로세서의 언코어(a uncore)를 통해 데이터 없이 소유권에 대한 상기 추론적 요청을 감지하는 논리를 갖는
    프로세서.
  15. 제 13 항에 있어서,
    상기 하나 이상의 다른 처리 코어는
    상기 백업 사본을 원격 로깅된 상태로 태깅하는 논리와,
    상기 백업 사본을 상기 처리 코어의 식별자로 태깅하는 논리를 갖는
    프로세서.
  16. 제 13 항에 있어서,
    상기 하나 이상의 다른 처리 코어는
    상기 캐시 라인과 관련된 커밋 및 상기 처리 코어의 식별자를 감지하는 논리와,
    상기 커밋에 부분적으로 기초하여 상기 백업 사본을 폐기하는 논리를 갖는
    프로세서.
  17. 처리 코어를 포함하되, 상기 처리 코어는
    캐시 라인에 대한 데이터 없이 소유권에 대한 추론적 요청을 감지하는 논리와,
    상기 캐시 라인의 사본을 생성하는 논리를 갖는
    프로세서.
  18. 제 17 항에 있어서,
    상기 처리 코어는 상기 사본을 원격 로깅된 상태로 태깅하는 논리를 갖는
    프로세서.
  19. 제 17 항에 있어서,
    상기 처리 코어는
    상기 캐시 라인과 관련된 롤백 동작을 감지하는 논리와,
    상기 사본을 다른 유효 상태로 태깅하는 논리를 갖는
    프로세서.
  20. 제 17 항에 있어서,
    상기 처리 코어는
    상기 캐시 라인과 관련된 커밋 동작을 감지하는 논리와,
    상기 사본을 무효 상태로 태깅하는 논리를 갖는
    프로세서.
KR1020137019956A 2011-12-29 2011-12-29 데이터 없이 추론적 소유권에 대한 지원 KR101529036B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/067865 WO2013101078A1 (en) 2011-12-29 2011-12-29 Support for speculative ownership without data

Publications (2)

Publication Number Publication Date
KR20140003515A KR20140003515A (ko) 2014-01-09
KR101529036B1 true KR101529036B1 (ko) 2015-06-16

Family

ID=48698314

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137019956A KR101529036B1 (ko) 2011-12-29 2011-12-29 데이터 없이 추론적 소유권에 대한 지원

Country Status (7)

Country Link
US (1) US20130268735A1 (ko)
EP (1) EP2798469A1 (ko)
JP (1) JP5771289B2 (ko)
KR (1) KR101529036B1 (ko)
CN (1) CN103403673A (ko)
TW (1) TWI620064B (ko)
WO (1) WO2013101078A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180054486A1 (en) * 2009-10-29 2018-02-22 International Business Machines Corporation Speculative Requests
US9817693B2 (en) * 2014-03-14 2017-11-14 International Business Machines Corporation Coherence protocol augmentation to indicate transaction status
US10514920B2 (en) * 2014-10-20 2019-12-24 Via Technologies, Inc. Dynamically updating hardware prefetch trait to exclusive or shared at program detection
CN104991868B (zh) * 2015-06-09 2018-02-02 浪潮(北京)电子信息产业有限公司 一种多核处理器系统和缓存一致性处理方法
GB2539641B (en) * 2015-06-11 2019-04-03 Advanced Risc Mach Ltd Coherency between a data processing device and interconnect
JP2018156375A (ja) * 2017-03-17 2018-10-04 キヤノン株式会社 画像形成装置及びその制御方法、並びにプログラム
US10282298B2 (en) 2017-06-13 2019-05-07 Microsoft Technology Licensing, Llc Store buffer supporting direct stores to a coherence point
US10303603B2 (en) 2017-06-13 2019-05-28 Microsoft Technology Licensing, Llc Low power multi-core coherency
US11995008B2 (en) * 2021-06-22 2024-05-28 Advanced Micro Devices, Inc. Memory controller with hybrid DRAM/persistent memory channel arbitration
KR102422253B1 (ko) 2022-01-06 2022-07-18 주식회사 이림이엔씨 건물의 위생 배관 시공방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005148771A (ja) * 2002-06-28 2005-06-09 Sun Microsyst Inc コンピュータ・システム内でキャッシュ整合性を維持するためのメカニズム
WO2010077885A2 (en) * 2008-12-30 2010-07-08 Intel Corporation Extending cache coherency protocols to support locally buffered data
US20110219188A1 (en) * 2010-01-08 2011-09-08 International Business Machines Corporation Cache as point of coherence in multiprocessor system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838943A (en) * 1996-03-26 1998-11-17 Advanced Micro Devices, Inc. Apparatus for speculatively storing and restoring data to a cache memory
US6487643B1 (en) * 2000-09-29 2002-11-26 Intel Corporation Method and apparatus for preventing starvation in a multi-node architecture
US6772298B2 (en) * 2000-12-20 2004-08-03 Intel Corporation Method and apparatus for invalidating a cache line without data return in a multi-node architecture
US7139876B2 (en) * 2003-01-16 2006-11-21 Ip-First, Llc Microprocessor and apparatus for performing fast speculative pop operation from a stack memory cache
US7284097B2 (en) * 2003-09-30 2007-10-16 International Business Machines Corporation Modified-invalid cache state to reduce cache-to-cache data transfer operations for speculatively-issued full cache line writes
US7409503B2 (en) * 2004-01-13 2008-08-05 Hewlett-Packard Development Company, L.P. Register file systems and methods for employing speculative fills
US7404041B2 (en) * 2006-02-10 2008-07-22 International Business Machines Corporation Low complexity speculative multithreading system based on unmodified microprocessor core
US8271735B2 (en) * 2009-01-13 2012-09-18 Oracle America, Inc. Cache-coherency protocol with held state
US8521961B2 (en) * 2009-08-20 2013-08-27 International Business Machines Corporation Checkpointing in speculative versioning caches
US8255626B2 (en) * 2009-12-09 2012-08-28 International Business Machines Corporation Atomic commit predicated on consistency of watches

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005148771A (ja) * 2002-06-28 2005-06-09 Sun Microsyst Inc コンピュータ・システム内でキャッシュ整合性を維持するためのメカニズム
WO2010077885A2 (en) * 2008-12-30 2010-07-08 Intel Corporation Extending cache coherency protocols to support locally buffered data
US20110219188A1 (en) * 2010-01-08 2011-09-08 International Business Machines Corporation Cache as point of coherence in multiprocessor system

Also Published As

Publication number Publication date
WO2013101078A1 (en) 2013-07-04
WO2013101078A8 (en) 2013-09-06
JP2014503929A (ja) 2014-02-13
US20130268735A1 (en) 2013-10-10
EP2798469A1 (en) 2014-11-05
JP5771289B2 (ja) 2015-08-26
KR20140003515A (ko) 2014-01-09
TWI620064B (zh) 2018-04-01
TW201342060A (zh) 2013-10-16
CN103403673A (zh) 2013-11-20

Similar Documents

Publication Publication Date Title
KR101529036B1 (ko) 데이터 없이 추론적 소유권에 대한 지원
JP5575870B2 (ja) 部分読出と非スヌープアクセスとの間のメモリ順序付け要件の充足
KR101639672B1 (ko) 무한 트랜잭션 메모리 시스템 및 그 동작 방법
CN104375958B (zh) 高速缓存存储器管理事务性存储器访问请求
US9471503B2 (en) Demote instruction for relinquishing cache line ownership
US7350034B2 (en) Architecture support of best-effort atomic transactions for multiprocessor systems
KR100567099B1 (ko) L2 디렉토리를 이용한 멀티프로세서 시스템의 가-저장촉진 방법 및 장치
US8321634B2 (en) System and method for performing memory operations in a computing system
US9170946B2 (en) Directory cache supporting non-atomic input/output operations
AU769972B2 (en) Multiprocessing system employing pending tags to maintain cache coherence
KR100267029B1 (ko) 메모리갱신이력보존장치를구비한컴퓨터시스템
US7003635B2 (en) Generalized active inheritance consistency mechanism having linked writes
IL131924A (en) Reservation management in a non-uniform memory access (numa) data processing system
JPH1078918A (ja) チェックポイント処理加速装置および同装置を適用した計算機システム
US10621103B2 (en) Apparatus and method for handling write operations
US10169103B2 (en) Managing speculative memory access requests in the presence of transactional storage accesses
US20150331798A1 (en) Managing memory transactions in a distributed shared memory system supporting caching above a point of coherency
US7912998B2 (en) DMA access systems and methods
JP3833760B2 (ja) 計算機システム及びメモリ状態復元装置
JP6631317B2 (ja) 演算処理装置、情報処理装置および情報処理装置の制御方法
Hechtman et al. The limits of concurrency in cache coherence
JP6493187B2 (ja) 情報処理装置、演算処理装置および情報処理装置の制御方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee