KR101168544B1 - 원격 아토믹 실행의 적응적 처리 방법, 장치 및 시스템 - Google Patents

원격 아토믹 실행의 적응적 처리 방법, 장치 및 시스템 Download PDF

Info

Publication number
KR101168544B1
KR101168544B1 KR1020100060789A KR20100060789A KR101168544B1 KR 101168544 B1 KR101168544 B1 KR 101168544B1 KR 1020100060789 A KR1020100060789 A KR 1020100060789A KR 20100060789 A KR20100060789 A KR 20100060789A KR 101168544 B1 KR101168544 B1 KR 101168544B1
Authority
KR
South Korea
Prior art keywords
core
remote
execution
instruction
contention
Prior art date
Application number
KR1020100060789A
Other languages
English (en)
Other versions
KR20110000533A (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 KR20110000533A publication Critical patent/KR20110000533A/ko
Application granted granted Critical
Publication of KR101168544B1 publication Critical patent/KR101168544B1/ko

Links

Images

Classifications

    • 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
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

일 실시예에 있어서, 방법은, 프로세서 코어에서 복호화될 명령어를 수신하는 단계와, 경합이 예측되는지에 근거하여 다수의 동작 중 하나로 명령어를 동적으로 처리하는 단계를 포함한다. 비경합이 예측되는 경우 코어에서 명령어가 실행되고, 경합이 예측되는 경우 명령어와 연관된 데이터가 마샬링되어, 실행을 위한 선택 원격 에이전트에 송신된다. 다른 실시예도 설명 및 청구된다.

Description

원격 아토믹 실행의 적응적 처리 방법, 장치 및 시스템{ADAPTIVELY HANDLING REMOTE ATOMIC EXECUTION}
다양한 ISA(instruction set architecture)에 있어서, 소위 아토믹 시퀀스(atomic sequence)를 처리하기 위한 명령어가 존재한다. 아토믹 시퀀스에 있어서, 에이전트는 실행이 완료될 때까지 에이전트가 데이터의 소유권을 확실히 독점하는 방식으로 데이터에 대한 조작을 실행한다. 일반적으로 이것은 록(lock) 변수가 데이터와 연관된 록킹(locking) 시퀀스에 의해 구현되어, 에이전트가 조작될 데이터를 액세스하기 전에 록 변수에 가장 먼저 독점 액세스를 획득하여 조작 중에 해당 데이터를 다른 에이전트가 액세스하는 것을 방지할 수 있다.
경합 아토믹, 즉, 국부 조작 또는 원격 실행을 처리하는 데는 2개의 일반적인 방법이 있다. 첫번째 방법은 아토믹 조작을 실행하기에 빠르지만, 경합 데이터에 대해 낮은 대역폭을 얻는 캐시라인 바운싱(bouncing) 및 일관성(coherence)으로 인하여, 높은 부가 비용이 든다. 두번째 방법은 아토믹 조작을 위한 열악한 레이턴시를 갖지만 경합 데이터에 대해 높은 대역폭을 갖는다.
(임계 영역 또는 다른 구성을 통한) 아토믹 시퀀스에서의 온-다이 경합은 일반적으로 프로그래머가 명시적으로 관리하도록 되어있다. 원본 프로그램의 세심한 계측에 의해, 아토믹 조작의 단위가 감소되어, 경합이 최소화될 수 있다.
그러나, 그러한 성능 조정 노력은 대개 한 부류의 머신(machine)으로부터 다른 부류의 머신으로 크기를 가변할 수 없다. 또한, 세심한 계측은, 아토믹 조작으로 이루어지는 개발 코드에 대해 프로그래머에게 과도한 주의가 요구되어, 일반적으로 과도한 프로그래머 노력이 요구되고, 다른 장치에 그 규모가 적절하지 않다. 예를 들어, 2개의 코어를 구비하는 프로세서에서 경합을 피할 수 있는 프로그래머 기입 코드가, 각기 다수의 쓰레드를 실행할 수 있는 다수의 코어가 존재하는 매니 코어 구현에 적절한 규모가 아닐 수 있다.
도 1은 본 발명의 일 실시예에 따른 예측기의 블록도,
도 2는 본 발명의 일 실시예에 따른 경합 예측에 근거하여 명령어를 처리하는 흐름도,
도 3은 본 발명의 일 실시예에 따른 경합 태그 벡터의 블록도,
도 4a는 본 발명의 일 실시예에 따른 조작의 원격 실행을 처리하는 흐름도,
도 4b는 본 발명의 일 실시예에 따라 디렉토리에서 원격 실행을 처리하는 흐름도,
도 4c-도 4e는 본 발명의 일 실시예에 따라 소유자 코어에서 원격 실행을 처리하는 흐름도,
도 5는 본 발명의 일 실시예에 따른 프로세서의 블록도,
도 6은 본 발명의 일 실시예에 따른 시스템의 블록도.
여러 실시예에 있어서, 투명 미세 구조 메카니즘은 경합 아토믹 조작(예를 들어, LOCK 부가(prefixed) 명령어)을 동적으로 검출하고 최적화할 수 있다. 구체적으로는, 실시예는, 프로그래머, 운영 시스템 및 ISA(instruction set architecture)에게 투명한 방식으로, 록이 프로그램 실행 전체에 걸쳐 경합 레벨의 변경을 겪음에 따라 모드간에 적응적으로 전환할 수 있다.
일 구현에 있어서, 다음 구성요소가 동적 록 조작을 실현하는 데 이용될 수 있다. (1) 예측에 근거하여 경합 동작을 동적으로 인식하는 메카니즘, (2) 명령어 부호화 중에 임의의 주어진 명령어에 대한 경합/비경합 동작 사이를 전환하여, 가장 효율적인 실행을 선택하는 메카니즘, (3) 피드백을 제공하여 예측기 시스템을 갱신하는 메카니즘, 및 (4) 아토믹 조작의 프록시 실행을 위한 메카니즘.
명령어 복호화시에, EIP(program counter)는 경합 예측기에 대한 검색값으로서 이용될 수 있다. 일 실시예에 있어서, 예측기는 명령어의 조작이 경합될지 여부를 예측하는 테이블일 수 있다. 일 실시예에 있어서, 예측은 모든 명령어에 대해 제시될 수 있지만, 어떤 특정한 명령어만 예측을 이용할 것이다. 일 예로서, IA(Intel Architecture) 플랫폼에 있어서, 이들 명령어는 교환(xchg), 교환-부가(xadd), 증가(inc), 및 감소(dec)와 같은 LOCK 부가(LOCK-prefixed) 명령어일 수 있다. 테이블을 액세스하기 위해, 코어가 하나 이상의 하드웨어 콘텍스트(context)를 지원하는 경우, EIP는 예측기 테이블에 인덱스를 생성하여 하드웨어 쓰레드 식별자(ID) 비트와 연관되도록 해시(hash)될 수 있다. 이 테이블은 조작이 경합될지 여부에 대한 예상을 판정하기 위해 참조될 것이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 예측기의 블록도가 도시되어 있다. 도 1에 도시된 바와 같이, 예측기(10)는 프로세서 코어와 연관된 캐시 메모리의 전용 기억 장치에 위치할 수 있는 테이블의 형태를 취할 수 있다. 도 1의 실시예에 있어서, 예측기(10)는 예측을 제공하는 하나 이상의 비트를 각기 저장하는 복수의 엔트리를 포함할 수 있다. 일 실시예에 있어서, 각 엔트리는 경합의 존재 또는 부재를 나타내는 단일 비트를 저장할 수 있다(예를 들어, 경합을 나타내는 설정 상태와 비경합을 나타내는 리셋 상태). 그러나, 일 실시예에 있어서, 예측을 나타내는 MSB(most significant bit)와, 포화 카운터로서 동작하는 기타 비트를 갖는 다수의 비트가 존재할 수 있다. 도 1에 도시한 실시예에 있어서, 예측기(10)는, 예측기(10)를 인덱싱 및 액세싱하는 다른 방법이 실현될 수 있더라도, 쓰레드(thread) 식별자(18)의 비트와 함께, 프로그램 카운터(15)의 해시된 비트의 서브 세트일 수 있는 프로그램 카운터의 적어도 몇 비트의 연쇄(concatenation)에 의해 얻어질 수 있는 인덱스(20)를 이용하여 액세스될 수 있다.
예측기 테이블에 의해 제공되는 예측에 근거하여, 코어는 지정된 명령어를 주어진 방식으로 처리할 수 있다. 일 실시예에 있어서, 예측은 적절한 명령어 실행을 판정하는 데 이용될 수 있다. 예를 들어, 예측은 명령어를 처리하는 중에 코어에 의해 이용되는 스티어 마이크로코드 프로그래밍(steer micro-code programming)(또는 등가물)일 수 있다. 본 명세서에서 설명하는 실시예는 명령어 복호화기가 어떤 모드를 이용할지를 판정하는 파이프라인에 관한 것인(그래서 이용가능한 메모리 오퍼랜드의 어드레스가 없는) 점에 유의해야 한다. 그러나, 다른 실시예에 있어서, 파이프라인은 말미에 예를 들어 마이크로코드로 경합/비경합 결정을 작성할 수 있다. 그러한 실시예에 있어서, 예측기는 명령어 복호화기 내가 아니라 파이프 라인의 말미에 위치할 수 있다. 그 대신, 파이프라인은 오퍼랜드의 어드레스를 가질 수 있고, 그 값을 예측기 테이블에 대한 해시에 포함할 수 있다.
도 2를 참조하면, 본 발명의 일 실시예에 따라 경합 예측에 근거하여 명령어의 복호화와, 상이한 명령어 실행 동작들 사이의 전환을 처리하는 흐름도가 도시되어 있다. 도 2에 도시된 바와 같이, 방법(100)은 프로세서의 코어에서 명령어를 복호화하는 중에 실행이 개시될 수 있다. 도시된 바와 같이, 방법(100)은 복호화될 다음 명령어에 대한 다음 명령어 포인터를 산출함으로써 개시될 수 있다(블록 110). 이 다음 명령어는 페칭될(fetched) 수 있다(블록 115). 예를 들어, 명령어는 명령어 캐시로부터 페칭되거나, 또는 명령어 캐시에 미리 준비되어 있지 않은 경우, 메모리 계층(hierarchy)의 다른 부분으로부터 획득될 수 있다. 명령어의 페칭과 동시에, 예측기의 검색(lookup)도 발생할 수 있다(블록 120). 산출된 EIP를 이용하여 인덱스를 생성해서, 경합 예측기를 액세스하는 데 이용하여, 해당 명령어에 관한 예측을 얻는다.
계속 도 2를 참조하면, 명령어가 페칭될 때, 복호화 중에 명령어가 사전 결정된 유형의 조작인지 판정할 수 있다(다이아몬드 125). 그러한 조작은 ISA의 몇몇 또는 모든 LOCK 접두어가 붙은 조작이 해당될 수 있지만, 이와 관련하여 본 발명의 범주가 제한되는 것은 아니다. 명령어가 사전 결정된 유형이 아닌 경우, 예측 정보는 무시되고, 획득된 정보의 정규 실행이 일어날 수 있다(블록 130). 비경합(NC : no contention) 예측인 경우, 복호화기는 마이크로코드 또는 조작의 마이크로 조작(uops : micro-operations)을 마련하여 명령어의 기존 ISA 정의 동작에 따라 코어 상에서 국부적으로 실행될 수 있다. 캐시 컨트롤러와 같은 일관성 엔진 등이 명령어의 실행을 위한 데이터를 획득하는 데 이용될 수 있다. 따라서, 명령어는 복호화되고, 획득된 명령어에 대한 소스(source)가 요구될 수 있으며, 명령어는 실행되고나서 퇴거(retire)될 수 있다.
한편, 이들 특정 조작 중 하나에 맞닥뜨릴 때, 패칭된 명령어(예를 들어, LOCK형 명령어)와 예측 사이의 경합이 발생될 수 있는 블록(135)으로 제어가 이행된다. 이어서 다이아몬드(140)에서 경합이 예측되는지를 판정할 수 있다. 이 예측은 획득된 예측기의 출력에 근거한 것일 수 있다. 그러한 경합이 예측되지 않는 경우, 명령어가 복호화되는 코어에서 명령어가 국부적으로 실행될 수 있는 블록(145)으로 이행한다. 그러한 실행은 상술한 바와 같이 될 수 있다.
그 대신에 경합이 예측되는 경우, 명령어와 연관된 여러 데이터가 마샬링될 수 있는 블록(150)으로 제어가 이행된다. 그래서 예측기가 경합이 예상되는 것을 나타낼 때, 다른 동작을 채용한다. 국부 조작을 수행하는 대신에, 복호화기는 명령어 동작에 관한 대체 방안을 채용한다. 이 대체 방안은 실행될 조작에 대해 요구되는 로컬값을 모은다(데이터 마샬링). 이 마샬링된 데이터는 명령어의 원격 실행을 위해 선택된 위치로 명령어와 함께 발행된다(블록 155). 일 실시예에 있어서, 이 요청은, 실행을 위해 선택된 위치로 수행될 조작(예를 들어, xadd, inc, dec, xchg)과 마샬링된 데이터 둘다 송신하는, RAE(remote atomic execute)라고 불리는 일관성 프로토콜 메시지 유형일 수 있다. 표 1에는 RAE 메시지 패킷의 예가 도시되어 있다.
Figure 112010041175317-pat00001
표 1에 도시된 바와 같이, RAE 메시지 패킷은 원격으로 수행될 요청 조작인 조작 필드, 조작하기 위한 소스 데이터와 연관된 어드레스 필드, 조작에서 이용하기 위해 마샬링된 발신 코어(originating core)로부터의 로컬 데이터에 해당할 수 있는 다수의 값, 작동의 실행과 관련하여 이용하기 위한 플래그 정보를 포함할 수 있고, 발신 코어의 제어 레지스터로부터 얻을 수 있는 플래그 필드와, 메시지를 소정의 패킷 폭으로 패딩하는 복수의 패드 비트를 포함할 수 있는 패딩 필드를 포함하는 다양한 필드를 포함할 수 있다. 물론 다른 예도 가능하다.
여러 실시예에 있어서, 선택된 위치는 변경될 수 있다. 몇몇 실시예에 있어서, 선택된 위치는, 메모리 컨트롤러 또는 디렉토리의 로직과 같은 프로세서의 다른 구성 요소와 연관된 그러한 요청 또는 로직을 위한 프로세서의 전용 코어와 같은, 원격 실행 요청을 처리하는 전용 위치일 수 있다. 또 다른 실시예에서, 선택된 위치는 명령어에 관한 소스 데이터에 대한 소유자 코어에 해당할 수 있다.
결국, 발신 코어는 원격 실행의 결과를 수신할 수 있다(블록 160). 또한, 예측 갱신을 포함하는 명령어와 연관된 상태 정보도 수신될 수 있다. 이 정보에 근거하여, 발신 코어는 예측기 갱신과 함께 여러 레지스터, 플래그 등을 갱신할 수 있다. 따라서, 조작 결과는 이 조작을 실행하는 원격 노드에 의해 발신 노드에 대한 프록시로서 반환되고, 캐시라인이 경합중이라고 간주할 수 있는지 여부를 나타내는 부가 상태가 반환될 수 있다. 후자의 경우, 로컬 코어가 그에 맞춰 그의 예측기 테이블을 갱신하고, 향후 조작의 실행은 비경합 동작으로 일어날 것이다. 도 2의 실시예에서 이 특정 구현에 대해 나타내었지만, 본 발명의 범주는 이것으로 한정되지 않는다.
조작의 원격 실행이 완료되어 결과가 반환 될때까지, 하드웨어 콘텍스트를 멈추는, 미스 투 캐시(miss-to-cache)와 마찬가지로 발신 코어 상에서 원격 실행이 실행될 수 있다는 점에 유의해야 한다. 일 실시예에 있어서, 이 멈춰있는 동안 다른 쓰레드를 이용할 수 있도록 쓰레드 전환이 수행되어, 진척시킬 수 있다.
따라서, 피드백은 예측기 테이블을 정확하게 유지하는 데 이용될 수 있다. 소유권을 추적하도록 태그 디렉토리를 구현하는 대신에 감시(snooping) 동작에 의존하는 시스템과 관련하여, 오라클 레벨(oracle-level)의 피드백을 제공하는 데 이용되는 테이블이 각 코어에서 실행될 수 있다. 태그 디렉토리를 구현하는 시스템에 관하여, 피드백을 제공하는 데 이용되는 테이블은 태그 디렉토리/디렉토리들에 존재할 수 있다. 효율적인 조작을 가능하게 하기 위하여, 저장 조작과 LOCK 기반 조작 사이의 RFO(Read-For-Ownership) 요청이 구별될 수 있다. 다수의 코어(단일 코어가 아님)로부터 너무 빈번하게 발생하는 RFO-Lock 조작은 아토믹 시퀀스에서 경합의 징후이다. 일 실시예에 있어서, 일관성 컨트롤러는 코어가 주어진 기간동안 RFO-Lock 요청 또는 RAE 이벤트를 실행하는(exercise) 비트 벡터를 유지할 수 있다. 이 기간은 대략 프로세서의 500 클럭 사이클과 1000 클럭 사이클 사이일 수 있지만, 이것으로 본 발명의 범주가 한정되는 것은 아니다.
히스테리시스를 제공하기 위해, 이중 비트 벡터 형태가 이용될 수 있다. 이 구현에 있어서, 시스템 내의 모든 코어는 경합 벡터에서, "현재" 단계(phase)에 대한 1 비트와 "이전" 단계에 대한 1 비트의 2비트로 모든 캐시라인에 대해 응답한다. 도 3을 참조하면, 본 발명의 일 실시예에 따른 경합 벡터의 블록도가 도시되어 있다. 도 3에 도시된 바와 같이, 각 캐시라인은 디렉토리(200) 내에 엔트리(205)를 포함할 수 있다. 도시된 바와 같이, 각 엔트리는 캐시라인 태그(206)와 경합 벡터(208)를 포함한다. 경합 벡터(208) 내에서 각 코어는 2 비트, 즉 제 1 비트(2090) 및 제 2 비트(2091)에 의해 나타낼 수 있다. 도 3에 도시된 실시예에서, 비트(2091)는 리셋 단계 비트인 반면, 비트(2090)는 현재 카운팅 단계 비트에 해당할 수 있다. 제 1 기간 동안, 아토믹 조작으로 캐시라인에 액세스를 시도하는 모든 코어는 그 캐시라인 상의 그 코어에 관해 현재 카운팅 단계 비트(2090)를 설정할 것이다. 클록 틱(clock tick)마다, 타이머(예를 들어, 글로벌 카운트다운 타이머(210))가 1씩 감소되어, 겹치지 않고(without wrap-around) 0값으로 클램프(clamp)될 수 있다. 타이머(210)가 0에 도달하면, "리셋 단계" 비트(2091)가 모든 코어에 대해 모든 캐시라인 상에서 소거(clear)된다. 제 2 기간 동안 카운팅 단계는 최근에 클리어된 비트로 설정되는 반면, 현재 카운팅 단계는 반대로 설정된다. 즉, 이 다음 카운팅 단계 동안, 비트(2090)보다 비트(2091)의 설정으로 인해 아토믹 조작을 수행하는 코어가 탐색될 것이다. 이 대체 2비트 리셋 방안을 이용함으로써, 경합 이력이 유지되는 반면, 프로그램 동작을 관측하는 창은 동적인 적응을 가능하게 하는, 카운트다운 타이머값의 2배로 한정된다.
하나 이상의 코어가 엔트리에서 0이 아닌 카운트를 가질때마다, 경합 피드백이 제공된다. 캐시라인을 검색할 때, 최근에 아토믹용 캐시라인의 사용을 코어가 요청했는지를 나타내도록, 각 코어의 2비트값(2090, 2091)은 논리적으로 모두 OR'd 연산된다. 이력 기간 중에 하나 이상의 코어가 그러한 요청을 한 경우, 엔트리에 해당하는 캐시라인은 경합으로서 예측되고, 그렇지 않은 경우에는 비경합으로서 예측된다.
경합을 정확하게 반영하기 위해, 모든 RFO-Lock 및 RAE 메시지를 디렉토리 내에 있을 수 있는 이 이력에 로그하는 상태 머신으로 송신한다. 발신(orginator) 노드는 예측기 피드백 응답 메시지를 예상하여, 그 로컬 예측기 테이블을 적절하게 갱신할 것이다. 일 실시예에 있어서, 이 갱신은, EIP(originating program counter) 및 링 메시지 시퀀스 번호를 이용하여, 액세스될 수 있는 테이블 내의 모든 인플라이트 RFO-Lock/RAE 조작을 저장한 발신 코어에 의해 일어난다. 해당 응답 피드백 시퀀스 번호가 반환되면, EIP는 다시 예측기 테이블에 대한 인덱스로서 이용될 것이다. 피드백이 경합 예측을 위한 것이면, 예측기 테이블은 C(경합) 예측에 해당하는 로직 값으로 설정할 것이고, 그렇지 않으면 NC를 나타내는 0값으로 설정된다.
RFO-Lock 또는 RAE 조작을 위한 발신 노드가 잘못된 유형의 요청(예를 들어, NC가 예상되지만 C임)을 생성한 경우에, 응답 피드백은 발신 코어에게 정확한 조작으로 발신 명령어를 재개하도록 나타낼 것이다. 즉, 발신 노드가 비경합이 예상되는 RFO-Lock을 송신한 경우, 피드백은 로컬 예측기 테이블을 갱신하고, 명령어를 경합으로서 재발행/재개하도록 발신 노드에 나타내고, 발신 노드는 재개 중에 프록시 에이전트에게 교정된 RAE 요청을 송신할 것이다. 몇몇 실시예에서, RFO-Lock는 포워딩에 이해 록 조작을 즉시 프록시 실행하도록 불충분한 정보를 전달하고, RAE 요청은 발신 코어로 돌아와 캐시라인을 처리할 수 없기 때문에, 그러한 재개가 수행될 수 있다. 그러나, 다른 실시예는 재개하게 하는 의미를 충분히 전달하도록 RFO-Lock 및 RAE 메시지를 병합할 수 있다. C가 예상되지만 사실상 라인이 NC인 오예측의 경우, 원격 프록시 실행은 정규적으로 실행되지만, 예측기에 대한 피드백은 NC로 반환되어 로컬 예측기 테이블의 갱신을 가능하게 할 것이다.
경합 아토믹 실행 동작인 경우, 소유자/태그 디렉토리는 마샬링된 데이터를 대상 캐시라인을 가져야 하는 선택된 위치에 적절한 변경(M) 또는 독점(E) 상태로 포워딩할 것이다. 이 원격 노드는 예를 들어 ALU(arithmetic logic unit)에서 예측기 정확성 갱신 뿐만 아니라 적절한 값 및/또는 상태 플래그를 발신 노드로 반환하는 요청된 조작을 수행할 것이다.
도 4a를 참조하면, 본 발명의 일 실시예에 따라 조작의 프록시 실행을 처리하는 흐름도가 도시되어 있다. 도시된 바와 같이, 원격 실행은, 전용 코어, 메모리 컨트롤러 또는 원격 실행 조작에 이용될 데이터와 관련된 코어 등과 같은 다양한 위치에서 수행될 수 있다. 도 4a는 원격 실행이 메모리 컨트롤러에서 이루어지는 구현에 관한 것이다. 도시된 바와 같이, 이 방법에서는 2개의 상이한 진입 지점이 존재한다. 진입 지점(305)에서, 원격 실행 요청이 도달한다. 이 요청은 발신 노드(예를 들어, 발신 코어)로 부터 직접 수신될 수 있다. 이 요청에 대해 요청 큐(Queue)(330)에서 슬롯 번호가 할당될 수 있다(블록 310). 따라서, 이 요청은, 실행 준비가 되어 있지 않은 것을 나타내는 플래그와 함께, 요청 큐에 저장될 수 있다(블록 315). 조작과 연관된 캐시라인이 경합되는지 여부를 판정하여, 캐시라인의 소유권을 요청하면, 블록(320)이 실행된다.
도 4a에 더 도시된 바와 같이, 방법(300)으로의 다른 진입 지점은, 캐시라인 상태가 갱신될 때 및/또는 소유권에 대한 요청이 도달할 때, 태그 디렉토리를 경유하여 이루어질 수 있다(블록 350). 그러한 요청이 원격 실행 요청에 해당될 때, 디렉토리는 준비(ready)로서 요청을 플래그하고, 더욱이 요청 큐(330)의 해당 엔트리에 존재하기도 하는 예측 상태를 설정할 수 있다(블록 355).
도 4a에 더 도시된 바와 같이, 요청 큐(330)의 엔트리가 액세스되어 소정의 엔트리가 준비되었는지를 판정한다(다이아몬드 360). 그러한 준비 판정은 이 준비 플래그 상태에 근거할 수 있다. 요청이 준비되어 있는 경우, 해당 엔트리가 추출되어(블록 365), 요청과 연관된 캐시라인이 변경 또는 독점 상태로 유지되는지를 판정할 수 있다(다이아몬드 370). 만일 아닌 경우, 메모리 컨트롤러가 캐시라인의 올바른 소유자가 아니라는 점을 나타내기 때문에, 엔트리는 미준비(not ready)로서 플래그될 수 있다. 따라서, 블록 320으로 돌아가는 제어 경로는 캐시라인의 소유권을 탐색한다. 이 방식에서, 태그 디렉토리가 블록(350)을 통해 갱신된 소유권 상태를 갱신할 때, 조작이 재개될 수 있다.
계속 도 4a를 참조하면, 그 대신에 다이아몬드(370)에서 캐시라인이 변경 또는 독점 상태에 있다고 판정되는 경우, 요청이 국부적으로 실행될 수 있는 블록(380)으로 제어가 이행한다. 즉, 이 요청은 캐시라인으로부터 얻어진 데이터와 함께 원격 실행 요청으로 수신된 정보에 근거하여 실행될 수 있다. 이어서 응답이 발신 노드와 연관된 예측기에 대한 결과 및 갱신을 둘다 포함하는 경우, 메모리 컨트롤러는 응답을 준비할 수 있다. 이 응답은 블록(390)으로 송신될 수 있다. 도 4a의 실시예에서의 이 특정한 구현으로 도시되어 있지만, 본 발명의 범주는 이것으로 한정되는 것은 아니다.
그래서, 예측이 정확한 경우 적절한 동작이 실행된다. 그 대신에 경합 동작이 예상되지 않아야 할 때 경합 동작이 예상되는 것을 나타내는 오예측이 일어나는 경우, 이 조작의 실행 중에 발신 코어가 회복될 것이다. 발신 코어는 원격 아토믹 실행에 대한 캐시라인 소유자에게 요청을 생성할 것이다. 원격 에이전트는 캐시라인이 여전히 경합 중에 있는지를 자동적으로 확인하여, 디렉토리의 예측기 피드백을 수집할 것이다. 디렉토리로부터의 응답에 따라, 에이전트는 요청 조작을 실행할 것이다. 원격 에이전트는 발신 코어에 응답하는 디렉토리 피드백을 조작의 결과(및 플래그)와 함께 제공한다.
조작이 경합되어야 할 때 NC를 나타내는 오예측이 일어나면, 3개의 시나리오 중 하나가 발행한다. (a) 캐시 라인이 M 또는 E 상태로 국부적으로 존재한다. (b) 캐시라인이 공유(S) 상태로 국부적으로 존재한다. (c) 캐시라인이 이 코어에 국부적으로 위치하지 않는다. (a)의 경우, 이 코어가 데이터의 사실상의 소유자이고, 아토믹 조작은 시스템 또는 다른 코어에 변화를 일으키지 않고(perturbation : 섭동(攝動)) 국부적으로 실행될 수 있다. (b)의 경우, 이 코어가 RFO-Lock 요청을 소유자/태그 디렉토리에 송신하면, 피드백은 경합 상태로 돌아갈 것이고, 실행중인 (도 2의) 경합 경로로 조작이 다시 이루어질 것이다. (c)의 경우, RFO-Lock 요청이 생성되어 코어로 캐시라인을 가져올 때, (b)에서와 동일한 피드백 및 응답의 시퀀스가 발생될 것이다.
원격 실행 동작이 메모리 컨트롤러(MC : memory control) 내측에서 처리되는 실시예에 있어서, 일관성 프로토콜이 MC를 지원할 수 있다. 또한, MC는 로컬 캐시, ALU 및 상태 머신을 포함할 수 있다. 다수의 코어가 원격 실행에 대해 경합하여 캐시라인 바운싱(bouncing)이 일어날 수 있는 경쟁 상태를 피하기 위해, 부가 정보가 태그 디렉토리 엔트리와 연관될 수 있다. 구체적으로는, 태그 디렉토리가 각 캐시라인 태그에 상태 비트를 포함하여, 원격 실행 조작이 그 캐시 라인에 대해 인플라이트인 것을 나타낼 수 있다. 코어가 캐시라인에 대해 원격 실행을 요청할 때, 태그 디렉토리에 RFO-Lock 메시지로 "Who Owns CL <addr>"을 생성할 것이다. 태그 디렉토리는 엔트리의 태그 부분에서 "RemoteExechInFlight" 식별자를 설정하여, 요청된 캐시라인의 현재 캐시라인 소유자에 대해 응답한다. 발신 코어는, 조작을 수행하여 적절한 결과로 요청 코어에게 응답하도록, RAE를 수행하는 소유자 코어에게 직접 요청할 것이다. 캐시라인 소유자로부터의 결과를 수신하면, 요청 코어는 RAE가 제공되었다는 것을 태그 디렉토리에게 통지할 것이다. 일 실시예에 있어서, 태그 디렉토리는 non-RFO-Lock(원격 실행) 요청이 동일한 캐시라인에 도달할 때까지 다수의 RAE 요청이 동시에(유보중인 총수를 추척) 인플라이트되게 할 수 있다. 그러한 요청을 수신하면, 그 후에 도달하는 모든 요청은 인플라이트 원격 실행 이벤트가 시스템으로부터 퇴출될 때까지 억제된다. 이어서 non-RFO-Lock 조작의 실행이 신규순으로 다시 시작된다.
그 다음, 발신 코어가 "Who Owns CL <addr>"을 요청하여 태그 디렉토리에 의해 보고된 이 소유자에게 RAE가 도달할 수 있는 시간과, 소유자가 캐시 계층(hierarchy)으로부터 캐시 라인을 퇴거할 수 있는 사이에 사소한(minor) 경합 상태가 생길 수 있다. 이 상태를 해소하기 위해, 일 실시예에 있어서 추가 홉(hop)이 통신 경로에서 부가될 수 있다. 즉, 태그 디렉토리는 현재 소유자에게 원격 실행 요청이 도달할 예정임을 통지한다. 소유자가 누구인지 요청 코어에 응답하기 전에, 수신 확인될 통지를 대기할 것이다. 이 "임박한 원격 실행" 메시지와 실제 RAE 메시지 사이의 시간 동안, 현재 소유자는 목표 캐시라인을 퇴거할 수 없다.
도 4b를 참조하면, 본 발명의 일 실시예에 따라 디렉토리에서 원격 실행을 처리하기 위한 흐름도가 도시되어 있다. 전반적으로, 흐름은 도 4a와 관련하여 상술한 바와 유사할 수 있다. 그러나, 방법(301)의 처리에 여러 가지 변경이 있다. 구체적으로는, 원격 실행 요청을 수신하면, 원격 실행 요청이 처리될 때까지, 예를 들어, 디렉토리 엔트리의 태그 부분의 인플라이트(in-flight) 지시자를 통해 해당 캐시라인을 '차단(blocked)'으로서 플래그할 수 있다. 다음에, 디렉토리는 캐시 라인을 변경/독점 상태로 디렉토리에서 유지할지를 결정한다(다이아몬드 308). 유지하지 않는 경우, 요청 큐 내의 슬롯 할당과 요청 저장에 대해 도 4a와 관련하여 상술한 절차를 수행한다. 블록(316)에 더 도시된 바와 같이, 디렉토리는 해당 캐시라인을 유지하는 임의의 코어에게 퇴거를 송신할 수 있다(블록 316). 다른 관점에 있어서, 디렉토리에서 다시 상태 정보 및/또는 소유권을 수신하는 것과 관련하여, "준비"로서 요청을 플래그하고, 요청을 국부적으로 실행하고, 응답을 준비하여, 예측 갱신과 함께 결과를 송신하도록 수행되는 조작이, 도 4a와 관련하여 상술한 바와 같이 일어날 수 있다.
또 다른 실시예에 있어서, 원격 실행은, 요청과 연관된 캐시라인의 현재 소유 코어에 의해 처리될 수 있다. 도 4c~도 4e에는, 요청 코어(도 4c), 디렉토리(도 4d), 및 소유자 코어(도 4e)에서 그러한 조작이 처리되는 흐름도가 도시되어 있다. 도 4c에 도시된 바와 같이, 방법(302)은 원격 실행에 대한 요청을 처리하는 것에 관하여 상기 도 2에서 설명한 바와 같이 각종 조작을 구현할 수 있다. 도시된 바와 같이, 경합이 예측될 때(다이아몬드 140), 요청 코어는 데이터를 마샬링하고(블록 150), 누가 캐시라인을 소유하고 있는지 판정하도록 디렉토리에 요청하고, 원격 실행 큐에서 해당 플래그를 설정한다(블록 152). 예측 갱신 뿐만 아니라 캐시라인 소유자를 나타내는 디렉토리로부터의 메시지를 수신함에 따라, 요청 코어가 소유자가 되었는지를 판정할 수 있다(다이아몬드 175). 만일 그러면, 실행은 국부적으로 일어날 수 있다(블록 180). 그렇지 않으면, 원격 실행 큐 내의 엔트리가 로딩되어 해당 플래그가 설정될 수 있다(블록 182, 183). 따라서, 이 지점에서, 요청 코어는 소유 코어에게 원격 실행 요청을 발행할 수 있다(블록 155). 결과를 수신하면(블록 160), 요청 코어는 결과를 처리하고(블록 165), 원격 실행 큐 내의 해당 엔트리를 소거하며(clear)(블록 168), 원격 실행이 완료되었다는 것을 디렉토리에 통지한다(블록 170).
도 4d를 참조하면, 디렉토리에서 원격 실행 요청이 처리되는 흐름이 도시되어 있다. 요청 코어로부터 메시지를 수신하여 캐시라인의 소유자를 판정함으로써, 방법(250)이 개시된다(블록 255). 이어서 캐시라인이 '차단'으로서 플래그되어 있는지 판정될 수 있다(다이아모드 258). '차단'으로서 플래그되어 있지 않으면, 캐시라인은 원격 실행 요청에 대해 인플라이트로서 플래그될 수 있다(블록 260). 따라서, 디렉토리는 문의에 응답하여, 요청 코어에 예측기 갱신과 함께 소유자 정보를 제공할 수 있다(블록 262). 다이아몬드(258)에서 캐시라인이 차단(blocking)되는지 판정하는 대신에, 요청 FIFO(first-in first-out) 큐(280) 내의 요청에 대해 슬롯 번호가 할당될 수 있는 블록(265)으로 제어가 이행된다. 따라서, 요청은 해당 FIFO 엔트리에 저장되고, "미준비(not ready)"로서 플래그된다(블록 268).
나중에, 디렉토리는 요청 FIFO 내의 임의의 엔트리가 준비되었는지를 판정할 수 있다(다이아몬드 270). 만일 엔트리가 준비되어 있는 경우, 그 엔트리가 추출되고(블록 272), 요청이 처리된다(블록 275).
원격 실행 요청이 결정될 때까지, 다른 메시지가 도착하는 것이 가능하다(블록 281). 그러면 디렉토리는 캐시라인이 이미 유보중인 인플라이트 원격 실행 요청을 갖는지 판정할 수 있다(다이아몬드 282). 그렇지 않으면, 요청은 처리될 수 있다(블록 275). 그러면, 캐시라인 소유자가 소유권을 다시 획득하도록 요청하는지를 판정할 수 있다. 만일 그러면, 요청은 블록(275)에서 처리될 수 있다. 그렇지 않으면, 블록(285)에서 해당 캐시라인이 "차단(blocked)"으로 플래그되고, 블록(265)으로 제어가 이행될 수 있다.
블록(290)에서 원격 실행 시퀀스가 종료되면, 디렉토리는 캐시라인을 요청 코어로부터의 원격 실행 요청 인플라이트를 갖고 있지 않다고 플래그 하고, 그 캐시라인에 대해 유보중인 다른 인플라이트 요청이 없으면, 인플라이트 플래그를 소거할 수 있다(블록 295).
도 4e를 참조하면, 본 발명의 일 실시예에 따라 소유자 코어에서 원격 실행 요청이 처리되는 흐름도가 도시되어 있다. 도시된 바와 같이, 방법(303)의 전반적인 흐름은 도 4a 및 도 4b에 관한 상술한 설명과 마찬가지이다. 원격 실행 요청이 도착했을 때(블록 305), 캐시라인이 변경/독점 상태로 유지될지 판정할 수 있다(다이아모드 308). 만약 그렇다면, 요청을 국부적으로 실행하여, 응답을 준비하고, 그 결과를 요청 코어로 반송할 수 있다(블록 380, 385, 390).
한편, 캐시라인이 변경 또는 독점 상태로 유지되지 않는 경우, 요청 큐(330) 내의 슬롯이 할당될 수 있는 블록(310)으로 제어가 이행되어, 요청이 미준비 플래그와 함께 저장되고(블록 315), 디렉토리에 소유권에 대한 요청이 이루어진다(블록 317). 캐시라인 상태 및/또는 소유권을 제공하는 디렉토리로부터 메시지를 수신하면(블록 350), 해당 요청은 '준비'로서 플래그될 수 있고, 예측기 상태는 그에 따라 갱신된다(블록 357). 따라서, 이 요청은 준비되어, 국부 실행을 위해 블록(365)에서 추출될 수 있다. 도 4a-도 4e의 실시예에서 이들 특정 조작에 관해 도시되었지만, 본 발명의 일 실시예에 따른 원격 실행은 다른 실시예에서 다른 방식으로 처리될 수 있다는 점을 이해해야 한다.
실시예들이 다양한 멀티 코어 프로세서에서 구현될 수 있다. 몇몇 실시예는 예를 들어 코어의 수가 16 또는 32 보다 크거나 또는 그 이상의 코어일 수 있는 매니(many) 코어 프로세서에서 구현될 수 있지만, 그것으로 본 발명의 범주가 한정되는 것은 아니다.
도 5를 참조하면, 본 발명의 일 실시예에 따른 프로세서(400)의 블록도가 도시되어 있다. 도 5에 도시된 바와 같이, 프로세서(400)는 복수의 코어(410a-410n)를 포함하는 매니 코어 프로세서일 수 있다. 여러 실시예에 있어서, 각 코어는 아웃오브오더 파이프라인(out-of-other pipeline)을 갖는 멀티 쓰레드 와이드 SIMD(single instruction multiple data)일 수 있다. 그러한 코어의 일 예(410a)가 도 5에 더욱 상세하게 도시되어 있다. 도시된 바와 같이, 코어(410a)는, ALUs(arithmetic logic units), 플로팅 포인트 유닛 등을 포함하는 상이한 조작을 수행하도록 다양한 구조를 포함할 수 있는 하나 이상의 실행 유닛(414)에서 비순차 실행을 위해, 명령어를 페칭하고 그것을 준비할 수 있는 프론트 엔드(FE : front end) 유닛(412)을 포함한다. FE 유닛(412)은 경합 예측에 따라 상이한 방식으로 임의의 명령어, 즉, 록(lock) 명령어의 수행을 제어할 수 있는 로직(411)을 포함한다는 점에 유의해야 한다. 그러한 예측은 캐시 메모리(416)의 일부인 예측기(예를 들어, 본 발명의 실시예에 따른 경합 예측기)에 의해 제공될 수 있다. 예를 들어, 캐시(416)는 몇몇 실시예에서 명령어 캐시 및 데이터 캐시로 나뉠 수 있는 온다이 로컬 캐시(on-die local cache)일 수 있다. 예측기(417)에 의해 제공되는 예측에 근거하여, 로직(411)은 록 조작이 종래 기술에서와 같이 실행 유닛(414)에서 처리되게 하거나, 경합이 예측될 때에는 본 발명의 일 실시예에 따라 동일한 명령어가 프록시 실행을 위한 다른 코어(410) 또는 다른 위치로 송신되도록 할 수 있다. 도 5에 도시된 바와 같이, 코어(410)는 실행 유닛(414)에서 처리되는 다양한 명령어의 결과를 수신하여 그것을 프로그램 순으로 재배열하는 퇴거 로직(retirement logic)(418)을 더 포함한다. 도 5의 실시예에서 도시된 높은 레벨의 관점에서 나타내었지만, 본 발명의 범주가 그것으로 한정되지 않는다는 점을 이해해야 한다.
도 5를 참조하면, 멀티 코어에 더하여, 프로세서(400)는 여러 코어의 개별 국부 캐시에서 이용 가능한 것보다 더 큰 스토리지를 위해 제공하는 레벨 2(L2) 캐시와 같은 추가 캐시 메모리(420)를 포함할 수 있다. 도시된 바와 같이, 코어는 링(425)을 통해 함께 결합될 수 있다. 또한, 해당 코어에 각기 연관된 복수의 분산 디렉토리부(415a-415n) 형태의 분산 디렉토리를 이용하여 일관성(coherency)을 유지할 수 있다. 물론, 프로세서(400)의 다른 구성 요소도 그와 함께 연관된 분산 디렉토리 부분을 가질 수 있다.
프로세서(400)에 결합된 메모리와 통신할 수 있도록, 메모리 컨트롤러(440)가 제공될 수 있다. 또한, 여러 시스템 구성요소에 대한 인터페이스를 제공하도록, 시스템 인터페이스(450)가 마련될 수 있으며, 이 시스템 인터페이스는 일 실시예에 있어서 점대점 접속을 위해 제공될 수 있지만, 이것으로 본 발명의 범주가 한정되지는 않는다. 또한, 디스플레이 인터페이스(460)는 프로세서(400)로부터 컴퓨터 시스템, 소형 장치, 이동 단말 등의 표시 장치일 수 있는 내장(attached) 표시 장치로 직접 링크를 제공한다. 도 5에 도시된 실시예에 있어서, 프로세서(400)는 어떤 조작을 처리하기 위한 부가 전용 로직 유닛을 더 포함할 수 있다. 예를 들어, 고정 기능 유닛(435)은 특수(specialized) 그래픽 또는 물리적 처리와 같은 특정 조작을 수행하도록 역할이 부여될 수 있다. 마찬가지로, 다른 조작도 가능하지만, 그래픽 로직(430)은 텍스쳐링과 같은 특수 그래픽 기능을 수행할 수 있다. 도 5에 도시된 실시예에서 온 칩 캐시 및 디렉토리를 갖는 멀티 코어 프로세서인 것으로서 도시되어 있지만, 다른 실시예는, 각기 하나 이상의 코어 및 다른 방식으로 구현되는 디렉토리(예를 들어 전용 디렉토리 또는 분산 디렉토리를 통해)를 갖는 다수의 프로세서를 구비하는 시스템과 함께 이용될 수 있으며, 본 발명의 범주는 이것으로 한정되는 것은 아니다. 또한, 디렉토리 메카니즘을 이용하는 대신에 감시 기반(snoop-based) 시스템을 이용하여 일관성을 유지하는 시스템에서 실시예가 구현될 수 있다.
따라서, 실시예는 임의로 주어진 미세 구조 구현에 동적으로 조절하는 방식으로 경합을 보다 양호하게 관리하게 할 수 있다. 요구되는 추가 프로그래머 부담이 없고, 생성되는 임의의 툴체인(toolchain)을 지원하는 문제도 없다. 즉, 프로그래머, 컴파일러 또는 다른 엔티티가 프로그램 또는 그의 동작을 분석하거나 또는 그의 동작이 록 조작이 경합될 것으로 예상되는 지를 판정하여 그러한 조작에 대한 실행 동작을 사전에 결정할 필요가 없다. 대신에, 실시예는 명령어 복호화 중에 경합이 존재하는지를 동적으로 판정하고, 그러한 경합의 예측에 근거하여 다수의 실행 동작으로부터 동적으로 선택할 수 있다. 따라서, 신규 명령어 또는 정규 명령어에 대한 특정 접두 플래그, 즉, ISA의 제 2 명령어 세트("atomic_inc" 조작 등)가 경합되는 록에 대해 실행될 필요가 없다.
실시예는 여러 상이한 시스템 유형으로 구현될 수 있다. 도 6을 참조하면, 본 발명의 일 실시예에 따른 시스템의 블록도가 도시되어 있다. 도 6에 도시된 바와 같이, 멀티프로세서 시스템(500)은 점대점 상호 접속 시스템으로서, 점대점 상호 접속(550)을 통해 결합된 제 1 프로세서(570)와 제 2 프로세서(580)를 포함한다. 도 6에 도시된 바와 같이, 프로세서(570) 및 프로세서(580)의 각각은, 비록 위치적으로 더 많은 코어가 프로세서에 존재할 수 있지만, 제 1 및 제 2 프로세서 코어(즉, 프로세서 코어(574a , 574b) 및 프로세서 코어(584a, 584b))를 포함하는 멀티코어 프로세서 일 수 있다. 프로세서 코어는 상이한 쓰레드를 실행할 수 있고, 명령어와 연관된 경합의 예측에 근거하여, 상이한 동작으로 임의의 명령어를 동적으로 처리할 수 있다.
계속 도 6을 참조하면, 제 1 프로세서(570)는 메모리 컨트롤러 허브(MCH : memory controller hub)(572) 및 점대점(P-P : point-to-point) 인터페이스(576, 578)를 더 포함한다. 마찬가지로, 제 2 프로세서(580)는 MCH(582) 및 P-P 인터페이스(586, 588)를 포함한다. 도 6에 도시된 바와 같이, MCH(572, 582)는 개별 메모리, 즉 메모리(532) 및 메모리(534)에 프로세서를 결합하며, 이 개별 메모리는 개별 프로세서에 국부적으로 부착된 주 메모리(예를 들어, DRAM : dynamic random access memory)의 일부 일 수 있다. 제 1 프로세서(570) 및 제 2 프로세서(580)는 각기 P-P 상호 접속(552, 554)을 통해 칩셋(590)에 결합될 수 있다. 도 6에 도시된 바와 같이, 칩셋(590)은 P-P 인터페이스(594, 598)를 포함한다.
또한, 칩셋(590)은 인터페이스(592)를 포함하여, P-P 상호 접속(539)에 의해 고성능 그래픽 엔진(538)과 칩셋(590)을 결합한다. 차례로, 칩셋(590)은 인터페이스(596)를 통해 제 1 버스(516)에 결합될 수 있다. 도 6에 도시된 바와 같이, 여러 입출력(I/O) 장치(514)가 제 1 버스(516)를 제 2 버스(520)에 결합하는 버스 브리지(518)와 함께, 제 1 버스(516)에 결합될 수 있다. 일 실시예에 있어서, 제 2 버스(520)에는 키보드/마우스(522), 통신 장치(526) 및, 디스크 드라이버 또는 코드(530)를 포함할 수 있는 기타 대용량 저장 장치와 같은 데이터 저장 유닛(528)을 포함하는 여러 장치가 결합될 수 있다. 또한, 제 2 버스(520)에는 오디오 I/O(524)가 결합될 수 있다.
실시예들은 코드로 구현되어, 명령어를 수행하는 시스템을 프로그래밍하는 데 이용될 수 있는 명령어를 구비하는 저장 매체 상에 저장될 수 있다. 이 저장 매체는, 플로피 디스크, 광학 디스크, SSD(solid state drive), CD-ROM(compact disk read-only memory), CD-RW(compact disk rewritable), 광자기 디스크, ROM(read-only memory)와 같은 반도체 장치, DRAM(dynamic random access memory), SRAM(static random access memory)와 같은 RAM(random access memory), EPROM(erasable programmable read-only memory), 플래시 메모리, EEPROM(electrically erasable programmable read-only memory), 자기 또는 광학 카드, 또는 전자적 명령어를 저장하기에 적합한 임의의 다른 유형의 매체를 포함하는 소정 유형의 디스크를 포함할 수 있지만, 이것으로 제한되는 것은 아니다.
제한된 수의 실시예에 관하여 본 발명을 설명했지만, 당업자라면 그들로부터 다양하게 수정 및 변형 가능할 수 있음을 알 것이다. 첨부된 특허청구범위는 본 발명의 진정한 사상 및 범주 내에서 모든 그러한 수정 및 변형을 포괄하고자 하는 것이다.
400 : 프로세서 410a-410n : 코어
411 : 로직 412 : 프론트 엔드 유닛
414 : 실행 유닛 416 : 캐시 메모리
417 : 예측기 418 : 퇴거 로직

Claims (20)

  1. 프로세서의 제 1 코어에서 복호화될 제 1 명령어를 수신하고, 상기 제 1 명령어에 대해 경합이 예측되는지를 판정하는 단계와,
    경합이 예측되지 않는 경우, 상기 제 1 코어에서 상기 제 1 명령어를 실행하는 단계와, 경합이 예측되면 상기 제 1 코어에서 상기 제 1 명령어와 연관된 데이터를 마샬링(marshaling)하여 상기 제 1 명령어를 실행하기 위해 상기 프로세서의 선택된 원격 에이전트에 상기 마샬링된 데이터와 함께 원격 실행 요청을 송신하는 단계를 포함하는, 다수의 동작(behavior) 중 하나를 사용하여 상기 제 1 명령어를 동적으로 처리하는 단계를 포함하는
    원격 아토믹 실행의 적응적 처리 방법.
  2. 제 1 항에 있어서,
    상기 제 1 명령어가 상기 제 1 코어에서 실행되는지 또는 상기 선택된 원격 에이전트에서 실행되는지의 여부는 사용자 및 운영 시스템에 대해 투명한(transparent)
    원격 아토믹 실행의 적응적 처리 방법.
  3. 제 1 항에 있어서,
    상기 제 1 명령어의 복호화시, 상기 제 1 명령어를 상기 제 1 코어에서 실행할지 또는 상기 선택된 원격 에이전트에서 실행할지를 상기 경합이 예측되는지의 여부에 근거하여 판정하는 단계를 더 포함하는
    원격 아토믹 실행의 적응적 처리 방법.
  4. 제 1 항에 있어서,
    상기 제 1 명령어가 선택된 유형이 아닌 경우, 상기 경합 예측을 무시하는 단계를 더 포함하는
    원격 아토믹 실행의 적응적 처리 방법.
  5. 제 4 항에 있어서,
    상기 제 1 코어로부터 디렉토리로 요청을 송신하여 상기 제 1 명령어와 연관된 데이터의 소유자를 판정하는 단계를 더 포함하되,
    상기 요청은 상기 디렉토리에 상기 제 1 코어가 원격 실행을 요청하는 것임을 나타내고,
    상기 디렉토리는 상기 데이터와 연관된 상기 디렉토리의 엔트리를 갱신하여 상기 제 1 코어에 의한 상기 데이터의 액세스를 나타내고, 인플라이트(in-flight) 지시자를 갱신하여 상기 원격 실행 요청이 진행중임을 나타내는
    원격 아토믹 실행의 적응적 처리 방법.
  6. 제 5 항에 있어서,
    상기 제 1 코어에서 상기 디렉토리로부터 메시지를 수신하여 상기 데이터의 소유자 코어를 나타내는 단계를 더 포함하는
    원격 아토믹 실행의 적응적 처리 방법.
  7. 제 6 항에 있어서,
    상기 디렉토리로부터의 상기 메시지에 응답하여, 상기 제 1 코어로부터 상기 데이터의 상기 소유자 코어에게 상기 원격 실행 요청을 송신하는 단계를 더 포함하는
    원격 아토믹 실행의 적응적 처리 방법.
  8. 제 5 항에 있어서,
    상기 디렉토리 엔트리를 갱신하는 것은, 벡터(vector)의 상기 제 1 코어와 연관된 코어 필드의 제 1 지시자를, 아토믹 조작(atomic operation)을 통한 상기 데이터의 액세스를 나타내도록 설정하는 것을 포함하는
    원격 아토믹 실행의 적응적 처리 방법.
  9. 제 8 항에 있어서,
    타이머가 만료되면, 상기 디렉토리에서 상기 벡터의 코어 필드의 복수의 지시자가 설정되어 있는지를 판정하고, 그럴 경우 예측 피드백 값을 갱신하여 경합을 반영시키는
    원격 아토믹 실행의 적응적 처리 방법.
  10. 제 9 항에 있어서,
    상기 원격 실행 요청의 결과 및 상기 예측에 관한 갱신을 상기 제 1 코어에서 수신하는 단계와,
    상기 제 1 명령어에 해당하는 상기 제 1 코어의 예측기의 엔트리를 갱신하는 단계를 더 포함하는
    원격 아토믹 실행의 적응적 처리 방법.
  11. 복수의 코어를 구비하는 멀티 코어 프로세서를 포함하는 원격 아토믹 실행의 적응적 처리 장치로서,
    상기 코어 각각은
    명령어를 복호화하고 상기 명령어에 대해 경합이 예측되는지를 판정하는 프론트 엔드와,
    경합이 예측되지 않는 경우 국부적으로 상기 명령어를 실행하고, 경합이 예측되는 경우, 상기 명령어와 연관된 데이터를 마샬링하여 상기 명령어를 실행하기 위해 상기 프로세서의 선택된 원격 에이전트에 상기 마샬링된 데이터와 함께 원격 실행 요청을 송신하는 실행 로직과,
    엔트리와 연관된 명령어가 실행중에 경합될지에 관한 예측을 각각 저장하는 복수의 엔트리를 구비하는 예측기를 포함하는
    원격 아토믹 실행의 적응적 처리 장치.
  12. 제 11 항에 있어서,
    상기 멀티 코어 프로세서의 하나 이상의 코어에 존재하는 캐시라인(cacheline)에 관한 태그 정보를 각각 저장하는 복수의 엔트리를 구비하는 디렉토리를 더 포함하되,
    각 엔트리는 코어와 각각 연관된 복수의 코어 필드를 갖는 경합 벡터를 더 포함하고,
    각 코어 필드는, 시구간 내의 상기 연관 코어에 의한 아토믹 조작을 통해 상기 캐시라인의 액세스를 각각 나타내는 제 1 지시자 및 제 2 지시자를 포함하는
    원격 아토믹 실행의 적응적 처리 장치.
  13. 제 12 항에 있어서,
    각 디렉토리 엔트리는 인플라이트 지시자를 저장하는 태그부를 더 포함하여, 상기 캐시라인(cacheline)과 연관된 원격 실행 요청이 진행중인 것을 나타내는
    원격 아토믹 실행의 적응적 처리 장치.
  14. 제 12 항에 있어서,
    상기 코어는 상기 디렉토리로 제 1 메시지를 송신하여 상기 명령어와 연관된 데이터의 소유자를 판정해서, 상기 코어가 원격 실행을 요청하는 것을 나타내는
    원격 아토믹 실행의 적응적 처리 장치.
  15. 제 14 항에 있어서,
    상기 코어는, 상기 디렉토리로부터의 응답 메시지의 수신에 응답하여, 상기 데이터의 소유자에게 상기 원격 실행 요청 및 상기 마샬링된 데이터를 포함하는 제 2 메시지를 송신하는
    원격 아토믹 실행의 적응적 처리 장치.
  16. 제 15 항에 있어서,
    상기 코어는, 상기 원격 실행 요청의 결과와 상기 예측에 관한 갱신을 수신하여, 상기 명령어에 해당하는 상기 예측기의 엔트리를 갱신하는
    원격 아토믹 실행의 적응적 처리 장치.
  17. 제 11 항에 있어서,
    상기 선택된 원격 에이전트는 상기 멀티 코어 프로세서의 메모리 컨트롤러이며, 상기 메모리 컨트롤러는 실행 로직을 포함하는
    원격 아토믹 실행의 적응적 처리 장치.
  18. 원격 아토믹 실행의 적응적 처리 시스템으로서,
    프로세서와,
    상기 시스템의 캐시에 저장된 캐시라인에 관한 태그 정보를 각각 저장하는 복수의 엔트리를 구비하는 디렉토리 - 각 엔트리는 코어와 각각 연관된 복수의 코어 필드를 구비하는 경합 벡터를 더 포함하고, 각 코어 필드는 시구간 내의 상기 연관된 코어에 의한 아토믹 조작을 통해 캐시라인의 액세스를 각각 나타내는 제 1 지시자 및 제 2 지시자를 포함함 - 와,
    상기 디렉토리 및 상기 프로세서에 연결되는 DRAM(dynamic random access memory)을 포함하되,
    상기 프로세서는
    명령어를 복호화하고 상기 명령어에 대해 경합이 예측되는지를 판정하는 프론트 엔드와,
    경합이 예측되지 않는 경우 국부적으로 상기 명령어를 실행하고, 경합이 예측되는 경우 상기 명령어와 연관된 데이터를 마샬링하고 상기 명령어를 실행하기 위해 상기 프로세서의 선택된 원격 에이전트에 상기 마샬링된 데이터와 함께 원격 실행 요청을 송신하는 동적 실행 로직과,
    복수의 엔트리와 연관된 명령어가 실행 중에 경합되는지 여부에 관한 예측을 각각 저장하는 복수의 엔트리를 구비하는 예측기를 포함하는
    원격 아토믹 실행의 적응적 처리 시스템.
  19. 제 18 항에 있어서,
    상기 프로세서는 상기 디렉토리로 제 1 메시지를 송신하여, 상기 명령어와 연관된 데이터의 소유자를 판정하고, 상기 프로세서가 원격 실행을 요청하는 것을 나타내는
    원격 아토믹 실행의 적응적 처리 시스템.
  20. 제 19 항에 있어서,
    상기 프로세서는, 상기 디렉토리로부터의 응답 메시지의 수신에 응답하여, 상기 데이터의 소유자에 해당하는 상기 선택된 원격 에이전트에게 제 2 메시지를 송신하고,
    상기 제 2 메시지는 상기 원격 실행 요청 및 상기 마샬링된 데이터를 포함하고,
    상기 프로세서는 상기 원격 실행 요청의 결과 및 상기 예측에 관한 갱신을 수신하고, 상기 명령어에 해당하는 상기 예측기의 엔트리를 갱신하는
    원격 아토믹 실행의 적응적 처리 시스템.
KR1020100060789A 2009-06-26 2010-06-25 원격 아토믹 실행의 적응적 처리 방법, 장치 및 시스템 KR101168544B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/492,652 US8533436B2 (en) 2009-06-26 2009-06-26 Adaptively handling remote atomic execution based upon contention prediction
US12/492,652 2009-06-26

Publications (2)

Publication Number Publication Date
KR20110000533A KR20110000533A (ko) 2011-01-03
KR101168544B1 true KR101168544B1 (ko) 2012-07-27

Family

ID=43382048

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100060789A KR101168544B1 (ko) 2009-06-26 2010-06-25 원격 아토믹 실행의 적응적 처리 방법, 장치 및 시스템

Country Status (4)

Country Link
US (1) US8533436B2 (ko)
KR (1) KR101168544B1 (ko)
CN (1) CN101937331B (ko)
BR (1) BRPI1001929A2 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55148837A (en) * 1979-05-09 1980-11-19 Toto Ltd Faucet
US8788794B2 (en) 2010-12-07 2014-07-22 Advanced Micro Devices, Inc. Programmable atomic memory using stored atomic procedures
US9122476B2 (en) 2010-12-07 2015-09-01 Advanced Micro Devices, Inc. Programmable atomic memory using hardware validation agent
US8793471B2 (en) 2010-12-07 2014-07-29 Advanced Micro Devices, Inc. Atomic program verification
US10007523B2 (en) 2011-05-02 2018-06-26 International Business Machines Corporation Predicting cache misses using data access behavior and instruction address
US8832505B2 (en) 2012-06-29 2014-09-09 Intel Corporation Methods and apparatus to provide failure detection
US9792252B2 (en) 2013-05-31 2017-10-17 Microsoft Technology Licensing, Llc Incorporating a spatial array into one or more programmable processor cores
CN104216684B (zh) * 2013-06-04 2017-05-31 阿里巴巴集团控股有限公司 一种多核并行系统及其数据处理方法
GB2518613A (en) 2013-09-25 2015-04-01 Ibm Multiple core processing with high throughput atomic memory operations
US9471397B2 (en) 2014-10-03 2016-10-18 International Business Machines Corporation Global lock contention predictor
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US9720693B2 (en) 2015-06-26 2017-08-01 Microsoft Technology Licensing, Llc Bulk allocation of instruction blocks to a processor instruction window
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10127153B1 (en) 2015-09-28 2018-11-13 Apple Inc. Cache dependency handling
US20200401412A1 (en) * 2019-06-24 2020-12-24 Intel Corporation Hardware support for dual-memory atomic operations
US20200242042A1 (en) * 2020-03-26 2020-07-30 Jonas Svennebring System, Apparatus and Method for Performing a Remote Atomic Operation Via an Interface
US11119767B1 (en) 2020-06-19 2021-09-14 Apple Inc. Atomic operation predictor to predict if an atomic operation will successfully complete and a store queue to selectively forward data based on the predictor

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11161535A (ja) * 1997-09-28 1999-06-18 Kodak Ltd 共有データ環境でのデータ競合解決方法
JP2004504657A (ja) * 2000-05-09 2004-02-12 サン・マイクロシステムズ・インコーポレイテッド 分散コンピューティング環境でのセキュア・メッセージングを用いるリモート・メソッド・コール

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5161227A (en) 1989-11-13 1992-11-03 International Business Machines Corporation Multilevel locking system and method
US6032242A (en) 1997-10-15 2000-02-29 Industrial Technology Research Institute Methods and systems for generating alternate and zigzag address scans based on feedback addresses of alternate and zigzag access patterns
US6182210B1 (en) 1997-12-16 2001-01-30 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6651088B1 (en) 1999-07-20 2003-11-18 Hewlett-Packard Development Company, L.P. Method for reducing coherent misses in shared-memory multiprocessors utilizing lock-binding prefetchs
US6678772B2 (en) 2000-12-19 2004-01-13 International Businesss Machines Corporation Adaptive reader-writer lock
US6950945B2 (en) 2001-06-21 2005-09-27 International Business Machines Corporation Apparatus and method for intersystem lock optimization
US7159220B2 (en) 2001-09-28 2007-01-02 Intel Corporation Flexible acceleration of java thread synchronization on multiprocessor computers
US7120762B2 (en) 2001-10-19 2006-10-10 Wisconsin Alumni Research Foundation Concurrent execution of critical sections by eliding ownership of locks
US7529914B2 (en) 2004-06-30 2009-05-05 Intel Corporation Method and apparatus for speculative execution of uncontended lock instructions
US7516313B2 (en) 2004-12-29 2009-04-07 Intel Corporation Predicting contention in a processor
US20070124728A1 (en) * 2005-11-28 2007-05-31 Mark Rosenbluth Passing work between threads
US8190859B2 (en) 2006-11-13 2012-05-29 Intel Corporation Critical section detection and prediction mechanism for hardware lock elision

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11161535A (ja) * 1997-09-28 1999-06-18 Kodak Ltd 共有データ環境でのデータ競合解決方法
JP2004504657A (ja) * 2000-05-09 2004-02-12 サン・マイクロシステムズ・インコーポレイテッド 分散コンピューティング環境でのセキュア・メッセージングを用いるリモート・メソッド・コール

Also Published As

Publication number Publication date
US8533436B2 (en) 2013-09-10
KR20110000533A (ko) 2011-01-03
CN101937331B (zh) 2015-05-06
CN101937331A (zh) 2011-01-05
US20100332801A1 (en) 2010-12-30
BRPI1001929A2 (pt) 2014-02-18

Similar Documents

Publication Publication Date Title
KR101168544B1 (ko) 원격 아토믹 실행의 적응적 처리 방법, 장치 및 시스템
US10248570B2 (en) Methods, systems and apparatus for predicting the way of a set associative cache
US8078831B2 (en) Method and apparatus for affinity-guided speculative helper threads in chip multiprocessors
US9250914B2 (en) Method and apparatus for selecting cache locality for atomic operations
CN110865968B (zh) 多核处理装置及其内核之间数据传输方法
US6880073B2 (en) Speculative execution of instructions and processes before completion of preceding barrier operations
US8321634B2 (en) System and method for performing memory operations in a computing system
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US6151662A (en) Data transaction typing for improved caching and prefetching characteristics
US8539485B2 (en) Polling using reservation mechanism
US7213126B1 (en) Method and processor including logic for storing traces within a trace cache
US7162613B2 (en) Mechanism for processing speculative LL and SC instructions in a pipelined processor
US7363435B1 (en) System and method for coherence prediction
WO2002082278A1 (en) Cache write bypass system
US20160055083A1 (en) Processors and methods for cache sparing stores
CN117421259A (zh) 用飞行中预取服务于cpu需求请求
JP2012168930A (ja) 並列コンピュータ・システムの性能を改良するための装置、方法及びコンピュータ・プログラム
US7203821B2 (en) Method and apparatus to handle window management instructions without post serialization in an out of order multi-issue processor supporting multiple strands
Lange et al. MARC II: A parametrized speculative multi-ported memory subsystem for reconfigurable computers
CN106557304B (zh) 用于预测子程序返回指令的目标的取指单元
EP4020225A1 (en) Adaptive remote atomics
JP2006031710A (ja) データ処理システム、方法およびキャッシュシステム
US20050289300A1 (en) Disable write back on atomic reserved line in a small cache system
CN111078620A (zh) 具有软件-硬件共同管理的高速缓存系统的多核处理器
US20140229677A1 (en) Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses

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

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee