KR20150082239A - 스토어 리플레이 정책 - Google Patents

스토어 리플레이 정책 Download PDF

Info

Publication number
KR20150082239A
KR20150082239A KR1020157010983A KR20157010983A KR20150082239A KR 20150082239 A KR20150082239 A KR 20150082239A KR 1020157010983 A KR1020157010983 A KR 1020157010983A KR 20157010983 A KR20157010983 A KR 20157010983A KR 20150082239 A KR20150082239 A KR 20150082239A
Authority
KR
South Korea
Prior art keywords
store
replay
store instruction
state
instruction
Prior art date
Application number
KR1020157010983A
Other languages
English (en)
Other versions
KR102199342B1 (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 KR20150082239A publication Critical patent/KR20150082239A/ko
Application granted granted Critical
Publication of KR102199342B1 publication Critical patent/KR102199342B1/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • 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

Landscapes

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

Abstract

캐싱 가능 스토어를 실행하기 위한 방법이 제공된다. 상기 방법은 상기 캐시 라인(들)의 상태 및 스토어 명령의 실행 페이즈를 기초로 하여 하나 이상의 캐시 라인(130)을 재-획득하도록 스토어 명령을 리플레이할지 여부를 결정하는 단계를 포함한다. 상기 스토어 명령은 스토어 명령을 리플레이한다는 결정에 응답하여 리플레이된다. 캐시 라인(들)의 상태 및 스토어 명령의 실행 페이즈를 기초로 하여 하나 이상의 캐시 라인을 재-획득하기 위해 스토어 명령을 리플레이할지 여부를 결정하도록 설정 가능한 스토어 큐(SQ)(135)를 포함하는 장치가 제공된다. 상기 장치를 제조하도록 제조 설비를 적합화하기 위한 컴퓨터 판독형 저장 장치가 제공된다.

Description

스토어 리플레이 정책{STORE REPLAY POLICY}
기술분야
본 명세서에 제공된 실시예는 일반적으로 컴퓨팅 시스템 및 프로세싱 장치와 관련되며, 더 구체적으로 프로세싱 장치에서 캐싱 가능 스토어 리플레이 정책을 구현하기 위한 방법 및 장치와 관련된다.
관련 기술의 기재
명령을 실행하고 데이터를 프로세싱하는 전기 회로 및 장치가 더 빠르고 더 복잡해지도록 진화했다. 현대의 데이터 프로세서 아키텍처(가령, 멀티-코어 프로세서)의 증가된 성능 및 저전력 수요에 의해, 새 데이터(즉, 캐싱 가능 스토어(cacheable store))를 데이터 캐시에 커밋(commit)(즉, 쓰기)하는 것이 점점 더 복잡해졌다. 문제적 상태, 가령, 경합(contention) 및 라이브-락(live-lock) 상태뿐 아니라 전력 소모 이벤트, 가령, 서로 다른 프로세서 코어에 의해 캐시 라인이 반복적으로 획득되는 것을 피하면서, 새 데이터를 효율적으로 커밋할 수 있는 프로세서를 설계하는 것이 특히 난제이다.
일부 이전 솔루션에서, 단순히 캐싱 가능 스토어가 시스템에서 가장 오래된 캐싱 가능 스토어가 되기를 기다린 후 캐시 라인의 획득 및 캐싱 가능 스토어의 커밋이 시도됐었다. 또 다른 경우, 캐싱 가능 스토어가 퇴장된 후 라인의 획득 및 캐싱 가능 스토어의 커밋이 시도됐으며, 특정 횟수의 시도 이후에는, 캐싱 가능 스토어의 획득 및 커밋의 추가 시도가 캐싱 가능 스토어가 시스템에서 가장 오래된 캐싱 가능 스토어가 된 후에야 수행되도록 카운터(counter)가 구현되었다. 그러나 이들 이전 솔루션은 열악한 성능과 비효율적인 전력 이용율의 문제점을 갖고 있다.
본 명세서에 제공된 실시예가 앞서 기재된 기존 기술에 내재된 문제들을 제거하거나 완화한다.
일부 실시예에서, 하나의 방법이 제공된다. 상기 방법은 캐싱 가능 스토어를 실행하는 단계를 포함하다. 상기 방법의 일부 실시예는 캐시 라인(들)의 상태 및 스토어 명령의 실행 페이즈에 의해 지시되는 스토어 명령의 상태를 기초로 하여 하나 이상의 캐시 라인을 재-획득하기 위해 스토어 명령을 리플레이할지 여부를 결정하는 단계를 포함한다. 상기 스토어 명령은 스토어 명령을 리플레이한다는 결정에 응답하여 리플레이된다. 캐시 라인(들)의 상태 및 스토어 명령의 실행 페이즈에 의해 지시되는 스토어 명령의 상태를 기초로 하여 하나 이상의 캐시 라인을 재-획득하기 위해 스토어 명령을 리플레이할지 여부를 결정하도록 설정 가능한 스토어 큐(SQ)를 포함하는 장치가 제공된다. 상기 장치를 제조하기 위해 제조 설비를 적합화하기 위한 컴퓨터 판독형 저장 장치가 제공된다.
첨부된 도면과 함께 다음의 설명을 참조하여 본 명세서의 실시예가 이해될 수 있으며, 여기서 도면부호의 최좌측의 유의미한 숫자(들)은 각각의 도면 부호가 처음 등장한 도면을 나타낸다.
도 1은 일부 실시예에 따라, 컴퓨터 시스템의 단순화된 블록도를 개략적으로 도시한다.
도 2는 일부 실시예에 따라, 중앙 처리 장치(CPU) 및 스토어 큐(SQ) 회로를 포함하는 회로의 단순화된 블록도를 도시한다.
도 3은 일부 실시예에 따라, 도 2에 도시된 바와 같은 하나 이상의 회로를 포함하는 실리콘 다이/칩을 나타낸다.
도 4는 일부 실시예에 따라, 제조 설비에서 생성될 수 있는 하나 이상의 다이/칩을 포함하는 실리콘 웨이퍼를 나타낸다.
도 5는 일부 실시예에 따라, 컴퓨터 프로세서의 맥락에서 도 2의 스토어 큐(SQ) 회로의 단순화된 블록도를 도시한다.
도 6은 일부 실시예에 따라, 캐싱 가능 스토어의 실행의 단순화된 타임라인을 도시한다.
도 7은 일부 실시예에 따라, 리플레이 정책에 따라 캐싱 가능 스토어를 실행하는 것을 나타내는 흐름도를 도시한다.
도 8은 도 5에 도시된 스토어 큐로 구현될 수 있는 상태 머신의 하나의 예시의 개념을 도시한다.
본 명세서의 실시예가 다양한 수정 및 대안 형태로 가능하지만, 이들의 구체적 실시예가 도면에서 예시로서 도시되었고 본 명세서에서 상세히 기재된다. 그러나 본 명세서의 구체적 실시예의 기재는 개시된 실시예를 개시된 특정 형태로 한정하려는 것이 아니며, 오히려, 특허청구범위에 의해 규정되는 개시된 실시예의 범위 내에 속하는 모든 변경, 균등, 및 대안적 형태를 포함하는 것으로 이해되어야 한다.
본 발명의 예시적 실시예가 이하에서 기재된다. 명료성의 관점에서, 본 명세서에서 실제 구현예의 모든 특징부가 기재된 것은 아니다. 물론, 구현예 별로 상이할 수 있는 개발자의 특정 목표, 가령, 시스템 관련 및/또는 비즈니스 관련 제약사항과의 호환을 달성하기 위해 이러한 실제 실시예의 개발에서 많은 구현예 특정적 결정이 이뤄질 수 있음이 자명할 것이다. 덧붙여, 이러한 개발 노력이 복잡하고 시간 소모적일 수 있지만, 그럼에도, 본 발명의 혜택을 갖는 해당 분야의 통상의 기술자에게 일상적인 일일 수 있음이 자명할 것이다.
지금부터 본 발명의 실시예는 첨부된 도면을 참조하여 기재될 것이다. 도면에서 다양한 구조, 연결, 시스템 및 장치가, 해당 분야의 통상의 기술자에게 잘 알려진 세부사항으로 개시된 주제를 모호하게 하지 않도록 단지 설명 목적으로만 개략적으로 도시된다. 그럼에도, 첨부된 도면은 본 발명의 실시예의 예시를 기술 및 설명하도록 포함된다. 본 명세서에서 사용되는 단어와 구문은 이들 단어 및 구문의 관련 분야의 통상의 기술자가 이해하는 바와 일치하는 의미를 갖도록 이해되고 해석되어야 한다. 용어나 구문의 어떠한 특수한 정의, 즉, 해당 분야의 통상의 기술자가 이해하는 일상적이고 관습적인 의미와 상이한 정의도 본 명세서의 용어나 구문의 일관된 용법에 의해 암시되는 것으로 의도되지 않는다. 용어 또는 구문이 특수 의미, 즉, 숙련된 기술자가 이해하는 것과 다른 의미를 갖는 것으로 의도될 때, 이러한 특수 정의는, 용어나 구문에 대한 특수 정의를 직접적으로 그리고 명료하게 제공하는 정의적 방식으로 명세서에서 명시적으로 나타날 것이다.
본 명세서에서 사용될 때, 용어 "실질적으로(substantially)" 및 "대략(approximately)"은 85%, 90%, 95%, 98% 및/또는 99% 내를 의미할 수 있다. 일부 경우, 해당 분야의 통상의 기술자가 이해할 바와 같이, "실질적으로" 및 "대략"의 용어는 차이가, 지각할 수 있을 때, 무시할만한 즉, 무시되기에 충분히 작을 수 있음을 가리킬 수 있다. 덧붙여, "대략"이라는 용어는, 하나의 값이 또 다른 값과 대략 동일하다는 맥락에서 사용될 때, 상기 값들이 서로 "약(about)" 동일함을 의미할 수 있다. 예를 들어, 측정될 때, 값들은 해당 분양의 통상의 기술자에 의해 동일한 것으로 판단되기에 충분히 유사할 수 있다.
본 명세서에서 언급될 때, 데이터는 다양한 데이터 저장 구조, 비-제한적 예를 들면, 큐, 메모리, 캐시, 버퍼, 레지스터, 플립-플롭, 및/또는 이들과 유사한 것에 "유지(maintain)" "보유(hold)", "유지(keep)" 및/또는 "저장(store)"될 수 있다. 본 명세서에서 "유지", "보유", "유지" 및/또는 "저장"은 동의어로서 상호교환 가능하게 사용될 수 있다.
본 명세서에서 언급될 때, "캐싱 가능 스토어(cacheable store)"는 프로세싱 장치(가령, 싱글-코어 및 멀티-코어 마이크로프로세서(CPU) 및 그래픽 프로세서(GPU), 또는 이들 각자의 개별 프로세싱 코어)의 캐시(가령, L1 데이터 캐시 또는 L2 데이터 캐시, 그러나 이에 한정되지 않음)에 저장될 하나 이상의 데이터 그룹 또는 데이터 요소 그룹일 수 있다. 본 명세서에서 언급될 때, "캐싱 가능 스토어"는 저장될 캐시에 커밋(commit)되거나 써질(write) 수 있다. 본 명세서에 기재될 때, "캐싱 가능 스토어"는 캐시 내에 저장되기까지 1회 이상 실행될 수 있다. 캐싱 가능한 스토어의 캐시 라인을 획득하기 위한 다음 번 실행이 "리플레이(replay)" 또는 "재-실행(re-execution)"이라고 지칭될 수 있다. 또한 본 발명의 혜택을 얻는 분야의 종사자에게 자명할 바와 같이, 캐싱 가능 스토어의 실행은, CPU 등의 실행 파이프라인을 통해 캐싱 가능 스토어가 선택되고 프로세싱되는 동안 "픽(pick)"이라고 지칭될 수도 있다.
일반적으로 본 명세서에 제공된 실시예는 프로세싱 장치에서 캐싱 가능 스토어 리플레이 정책을 구현하기 위한 방법 및 장치와 관련된다. 앞서 언급된 바와 같이, 프로세싱 장치(가령, 싱글-코어 및 멀티-코어 마이크로프로세서(CPU) 및 그래픽 프로세서(GPU), 또는 이들 각자의 개별 프로세싱 코어)가 캐싱 가능 스토어를 실행하여 새 데이터를 캐시에 쓸 수 있다. 이를 위해, 캐싱 가능 스토어는 이의 캐시 라인이 캐시(가령, 데이터 캐시) 내에 있고 쓰기 가능 상태가 될 것을 요구할 수 있다. 그러나 캐싱 가능 스토어가 실행을 시작했을 때 존재했던 캐시 라인이 캐싱 가능 스토어가 새 데이터를 캐시에 씀으로써 상기 캐시 라인을 커밋하려 시도할 때 캐시 내에 있지 않을 수 있다. 예를 들어, 캐싱 가능 스토어의 상기 캐시 라인이 캐싱 가능 스토어의 실행 동안 캐시로부터 다른 CPU, 다른 CPU 코어, 및/또는 시스템 내 그 밖의 다른 장치에 의해, 탐색(probe)될 수 있다. 데이터를 캐시에 쓰기 위해, 상기 캐싱 가능 스토어는 캐시 라인을 재-획득하도록 요구될 수 있다 - 이 것이 리플레이 수행이라고 알려져 있다. 캐싱 가능 스토어의 초기 실행 또는 리플레이 동안, 상기 캐싱 가능 스토어는 캐싱 가능 스토어의 다양한 상태 및/또는 속성, 가령, 이의 데이터, 이의 메모리 주소, 실행 또는 리플레이의 결과, 및/또는 이들과 유사한 것이 추적될 수 있는 스토어 큐(store queue)(SQ)에 유지될 수 있다. 덧붙여, 캐싱 가능 스토어의 리플레이는 본 명세서에서 추가로 상세히 언급될 하나 이상의 리플레이 정책(replay policy)에 따라 수행될 수 있다.
본 명세서에 기재된 실시예는 시스템 경합 인자들에 대항하여 캐시 라인의 이른 획득의 균형을 유지하는 리플레이 정책에 따라 실행 및 리플레이를 수행함으로써 효율적인 실행 및 리플레이를 가능하게 한다. 일부 실시예에서 특정 리플레이 정책은, 캐싱 가능 스토어의 실행의 다양한 페이즈(phase)와 관련 또는 이에 따라 달라진다. 일부 실시예에서, 시스템은 캐시 라인의 상태 및 스토어의 실행 단계를 기초로 하여 스토어에 대해 적어도 하나의 캐시 라인을 재-획득하기 위해 스토어를 리플레이할 것인지 여부를 결정한다. 예를 들어, 시스템은 스토어가 완료되었는지, 또는 퇴장(retire)되었는지, 또는 스토어 큐 내 가장 오래된 스토어가 되었는지에 따라 스토어를 리플레이할 것인지 여부를 결정할 수 있다. 또한 시스템은 스토어의 적어도 하나의 이전 리플레이의 적어도 하나의 결과를 기초로 하여 스토어를 리플레이할 것인지 여부를 결정할 수 있다. 예를 들어, 리플레이는 캐시 라인의 상태가 스토어가 커밋될 수 있게 하는 쓰기 가능 상태에 더 가까운 상태로 변할 때 "굿 리플레이"라고 특징지어질 수 있다. 리플레이는 캐시 라인의 상태가 쓰기 가능 상태에 더 가까운 상태로 변하지 않을 때 "배드 리플레이"라고 특징지어질 수 있다. 스토어는 설정 가능한 횟수의 굿 리플레이를 가질 때까지 리플레이될 수 있다. 또는, 스토어는 필요한 만큼 자주 리플레이될 수 있는데, 가령, 캐시 라인이 쓰기 가능 상태에 있을 때까지 리플레이될 수 있다. 그러나 스토어를 리플레이할지 여부를 결정하기 위해 그 밖의 다른 정책이 대안적으로 사용될 수 있다.
이제 도 1을 살펴보면, 일부 실시예에 따라 컴퓨터 시스템(100)의 블록도가 도시된다. 다양한 실시예에서, 컴퓨터 시스템(100)은 개인 컴퓨터, 랩톱 컴퓨터, 핸드헬드 컴퓨터, 태블릿 컴퓨터, 모바일 장치, 전화기, 개인 데이터 보조기("PDA"), 서버, 메인프레임, 작업 단말기, 음악 재생기, 스마트 텔레비전, 및/또는 이들과 유사한 것일 수 있으며, 이들 모두 총체적으로 프로세싱 장치라고 지칭될 수 있다. 컴퓨터 시스템(100)은 컴퓨터 마더보드, 회로 기판 또는 인쇄 회로 기판, 데스크톱 컴퓨터 외장 및/또는 타워, 랩톱 컴퓨터 베이스, 서버 외장, 모바일 장치의 일부분, 개인 데이터 보조기(PDA), 또는 이들과 유사한 것일 수 있는 메인 구조(110)를 포함한다. 일부 실시예에서, 메인 구조물(110)은 그래픽 카드(120)를 포함한다. 그래픽 카드(120)는 Advanced Micro Devices ("AMD")사의 Radeon™ 그래픽 카드 또는 메모리를 이용하는 그 밖의 다른 그래픽 카드일 수 있다. 상기 그래픽 카드(120)는 주변구성요소 상호연결(Peripheral Component Interconnect)("PCI") 버스(도시되지 않음), PCI-익스프레스(PCI-Express) 버스(도시되지 않음), 가속 그래픽 포트(Accelerated Graphics Port)("AGP") 버스(도시되지 않음), 또는 그 밖의 다른 임의의 컴퓨터 시스템 연결 상에서 연결될 수 있다. 본 발명의 실시예는 메인 컴퓨터 구조(110)로의 그래픽 카드(120)의 연결가능성에 의해 제한되지 않음이 자명하다. 일부 실시예에서, 컴퓨터 시스템(100)은 운영 체제, 가령, Linux®, UNIX®, Windows®, Mac OS® 및/또는 이들과 유사한 것을 실행시킨다. 하나 이상의 실시예에서, 컴퓨터 시스템(100)은 다양한 동작 동안 컴퓨터 시스템(100)에 의해 사용되는 값을 저장하도록 적합화된 하나 이상의 시스템 레지스터(도시되지 않음)를 포함할 수 있다.
일부 실시예에서, 상기 그래픽 카드(120)는 그래픽 데이터를 프로세싱하는 데 사용되는 프로세싱 장치, 가령, 그래픽 처리 장치(GPU)(125)를 포함한다. 상기 GPU(125)는 하나 이상의 내장/비-내장형 메모리, 가령, 하나 이상의 캐시(130)를 포함할 수 있다. GPU 캐시(130)는 L1, L2, 그 이상의 레벨, 그래픽 특정/관련형, 명령(instruction), 데이터 및/또는 이들과 유사한 유형의 캐시일 수 있다. 다양한 실시예에서, 내장형 메모리(들)은 내장형 랜덤 액세스 메모리("RAM"), 내장형 정적 랜덤 액세스 메모리("SRAM"), 또는 내장형 동적 랜덤 액세스 메모리("DRAM")일 수 있다. 일부 실시예에서, 메모리(들)는 GPU(125)에 내장되는 것에 추가로, 또는 이를 대신하여 그래픽 카드(120) 상에 있을 수 있고, 예시로는 도 1에 도시된 바와 같은 그래픽 카드(120) 상의 DRAM(155)이 있다. 다양한 실시예에서, 상기 그래픽 카드(120)는 회로 기판 또는 인쇄 회로 기판 또는 딸 카드(daughter card) 등으로 지칭될 수 있다.
일부 실시예에서, 컴퓨터 시스템(100)은 노스브리지(northbridge)(145)로 연결될 수 있는 프로세싱 장치, 가령, 중앙 처리 장치("CPU")(140)를 포함한다. 다양한 실시예에서, CPU(140)는 싱글-코어 또는 멀티-코어 프로세서이거나 단일 다이/칩 상의 하나 이상의 CPU 코어 및 GPU 코어의 조합(가령, AMD Fusion™ APU 장치)일 수 있다. 상기 CPU(140)는 x86 유형 아키텍처, RISC 유형 아키텍처, 및/또는 이들과 유사한 것을 가질 수 있다. 일부 실시예에서, CPU(140)는 하나 이상의 캐시(130), 비-제한적 예를 들면, L1, L2, 레벨 3 이상, 데이터, 명령 및/또는 그 밖의 다른 캐시 유형을 포함한다. 일부 실시예에서, 상기 CPU(140)는 파이프-라이닝된 프로세서이다. 상기 CPU(140) 및 노스브리지(145)는 마더보드(도시되지 않음) 또는 컴퓨터 시스템(100)의 그 밖의 다른 일부 구조물 상에 하우징될 수 있다. 일부 실시예에서, 노스브리지(145) 또는 그 밖의 다른 일부 컴퓨터 시스템 연결을 통해 그래픽 카드(120)는 CPU(140)로 연결됨이 고려된다. 예를 들어, CPU(140), 노스브리지(145), GPU(125)는 단일 패키지 내에 포함되거나 단일 다이 또는 "칩"(도시되지 않음)의 일부로서, 또는 패키지들의 조합으로서 포함될 수 있다. 메인 구조물(110)의 형성 부분으로서 도시되는 다양한 구성요소의 배열을 변경하는 일부 실시예가 또한 고려된다. 일부 실시예에서, 노스브리지(145)는 시스템 RAM(또는 DRAM)(155)으로 연결될 수 있고, 일부 실시예에서, 시스템 RAM(155)은 CPU(140)로 직접 연결될 수 있다. 상기 시스템 RAM(155)은 종래 기술에서 알려진 임의의 RAM 유형일 수 있으며 하나 이상의 메모리 모듈을 포함할 수 있고, RAM(155)의 유형은 본 명세서의 실시예를 한정하지 않는다. 예를 들어, RAM(155)은 하나 이상의 DIMM을 포함할 수 있다. 본 명세서에서 언급될 때, 메모리는 RAM 유형, 캐시 또는 본 명세서에서 언급되는 그 밖의 다른 임의의 데이터 저장 구조일 수 있다.
일부 실시예에서, 노스브리지(145)는 사우스브리지(southbridge)(150)로 연결된다. 일부 실시예에서, 상기 노스브리지(145) 및 사우스브리지(150)는 컴퓨터 시스템(100) 내 동일한 칩 상에 위치한다. 일부 실시예에서, 노스브리지(145)와 사우스브리지(150)는 상이한 칩들 상에 위치한다. 일부 실시예에서, 사우스브리지(150)는 컴퓨터 시스템(100) 내 임의의 곳의 그 밖의 다른 임의의 I/O 인터페이스(131)에 추가로 하나 이상의 I/O 인터페이스(131)를 가진다. 다양한 실시예에서, 상기 사우스브리지(150)는 데이터 연결 또는 버스(199)를 이용해 하나 이상의 데이터 저장 유닛(160)으로 연결될 수 있다. 상기 데이터 저장 유닛(160)은 하드 드라이브, 솔리드 상태 드라이브, 자기 테이프 또는 데이터를 저장하기 위해 사용되는 그 밖의 다른 임의의 쓰기 가능 매체일 수 있다. 일부 실시예에서, 데이터 저장 유닛 중 하나 이상이 USB 저장 유닛이고 데이터 연결(199)은 USB 버스/연결이다. 덧붙여, 데이터 저장 유닛(160)은 하나 이상의 I/O 인터페이스(131)를 포함할 수 있다. 다양한 실시예에서, 중앙 처리 장치(140), 노스브리지(145), 사우스브리지(150), 그래픽 처리 장치(125), DRAM(155) 및/또는 내장형 RAM이 컴퓨터 칩 또는 실리콘-기반 컴퓨터 칩이거나, 컴퓨터 칩 또는 실리콘-기반 컴퓨터 칩의 일부일 수 있다. 하나 이상의 실시예에서, 컴퓨터 시스템(100)의 다양한 구성요소가 하나의 버스(195) 또는 둘 이상의 버스(195)와 동작 가능하게, 전기적으로, 및/또는 물리적으로 연결 또는 링크될 수 있다.
일부 실시예에서, 컴퓨터 시스템(100)은 스토어 큐(store queue)(SQ) 회로(135)를 포함할 수 있다. 일부 실시예에서, 상기 SQ 회로(135)는 스토어 큐(SQ) 및 컴퓨터 시스템(100), CPU(140), GPU(125) 및/또는 이들 각자의 코어(들)에서 캐싱 가능 스토어를 실행 및 리플레이하기 위한 기능을 제공하도록 적합화되거나 구성된 관련 구성요소를 포함한다. 일부 실시예에서, 실행 및 리플레이를 결정 및 수행하기 위한 기능을 제공하도록 적합화된 구성요소가 그 밖의 다른 시스템 블록, 가령, 퇴장 유닛(retirement unit), 재-순서화 버퍼(re-order buffer)(ROB) 유닛, 미스된 주소 버퍼(missed address buffer)(MAB), 변환 색인 버퍼(translation look-aside buffer)(TLB), 로드-스토어(load-store)(LS) 유닛, 주소 생성 유닛(address generation unit)(AGU), 및/또는 이들과 유사한 것), 또는 SQ 회로(135)와 그 밖의 다른 시스템 블록의 조합 내에 위치한다. SQ 회로(135)의 구성요소가 이하 도 5에서 더 상세히 언급된다. 상기 SQ 회로(135)는 실리콘 다이/칩을 포함할 수 있고 소프트웨어, 하드웨어 및/또는 펌웨어 구성요소를 포함할 수 있다. 일부 실시예에서, 상기 SQ 회로(135)는 실리콘 다이 패키지 또는 전자 구성요소 패키지로 패키징된다. 일부 실시예에서, 상기 SQ 회로(135)는 기존 컴퓨터 구성요소에 포함되는 회로, 비-제한적 예를 들면, CPU(140), 노스브리지(145), 그래픽 카드(120) 및/또는 GPU(125)(또는 이들 구성요소 각자의 코어)이다. 일부 실시예에서, SQ 회로(135)는 CPU(140), GPU(125), 노스브리지(145), RAM/DRAM(155) 및/또는 이들 각자의 연결(195)과 통신 가능하게 연결된다. 본 명세서에서 사용될 때, 용어 "SQ 회로" 또는 "SQ" (가령, SQ 회로(135))는 물리적 SQ 칩 또는 컴퓨터 구성요소에 포함되는 SQ 회로, SQ 회로(135)의 회로, 또는 SQ에 의해 구현되는 기능부를 지칭하도록 사용될 수 있다. 상기 SQ 회로(135)는 프로세싱 장치의 일부분으로서 기능하거나 및/또는 프로세싱 장치의 일부분으로 일컬어질 수 있다. 일부 실시예에서, GPU(125), CPU(140), the SQ 회로(135) 및/또는 이들과 각각 연관된 임의의 하드웨어/소프트웨어 컴퓨터(100) 유닛의 일부 조합이 총체적으로 프로세싱 장치로 기능하거나 및/또는 총체적으로 프로세싱 장치라고 일컬어질 수 있다. 일부 실시예에서, CPU(140) 및 SQ 회로(135), GPU(125) 및 SQ 회로(135), 또는 CPU(140), 노스브리지(145) 및 SQ 회로(135) 및 이들 각자의 상호연결부가 프로세싱 장치로 기능할 수 있다. 일부 실시예에서, 컴퓨터 시스템(100)은 하나 이상의 디스플레이 유닛(170), 입력 장치(180), 출력 장치(185) 및/또는 그 밖의 다른 주변 장치(190)로 연결된다. 다양한 실시예에서, 본 발명의 실시예의 범위에 영향을 미치지 않고, 이들 요소는 컴퓨터 시스템(100) 내부 또는 외부에 있을 수 있으며, 유선 또는 무선 연결될 수 있다. 디스플레이 유닛(170)은 내부 또는 외부 모니터, 텔레비전 스크린, 핸드헬드 장치 디스플레이 등일 수 있다. 상기 입력 장치(180)는 키보드, 마우스, 트랙-볼, 스타일러스, 마우스 패드, 마우스 버튼, 조이스틱, 스캐너 등 중 임의의 하나일 수 있다. 상기 출력 장치(185)는 모니터, 프린터, 플로터(plotter), 복사기 또는 그 밖의 다른 출력 장치 중 임의의 하나일 수 있다. 주변 장치(190)는 컴퓨터에 연결될 수 있는 그 밖의 다른 임의의 장치: 대응하는 물리적 디지털 매체에 읽기 및/또는 쓰기할 수 있는 CD/DVD 드라이브, 전역 직렬 버스(universal serial bus)("USB") 장치, 비휘발성 메모리, 집 드라이브(Zip Drive), 외부 플로피 드라이브, 외부 하드 드라이브, 전화기 및/또는 광대역 모뎀, 라우터/게이트웨이, 액세스 포인트 및/또는 이들과 유사한 것일 수 있다. 일부 실시예에서, 본 명세서에 기재된 입력, 출력, 디스플레이 및 주변 장치/유닛은 USB 연결을 가질 수 있다. 본 명세서에 컴퓨터 시스템(100)의 특정 예시적 양태가 기재되지 않는 한, 해당 분야의 통상의 기술자에게 자명한 바와 같이 본 발명의 실시예의 사상 및 범위를 제한하지 않으면서, 이러한 예시적 양태는 다양한 실시예에 포함될 수도 있고 포함되지 않을 수도 있다.
이제 도 2를 참조하면, 일부 실시예에 따라 예시적 SQ 회로(135), CPU(140) 및/또는 노스브리지(145)의 블록도가 도시된다. 일부 실시예에서, SQ 회로(135), CPU(140) 및/또는 노스브리지(145)는 하나 이상의 캐시(130)를 포함한다. 일부 실시예에서, 상기 SQ 회로(135), CPU(140) 및/또는 노스브리지(145)는 L1, L2 또는 그 밖의 다른 레벨 캐시(130)를 포함한다. SQ 회로(135), CPU(140) 및/또는 노스브리지(145) 및/또는 하나 이상의 캐시(130)의 특정 예시적 양태가 본 명세서에 기재되어 있지 않은 한, 해당 분야의 통상의 기술자에게 자명할 바와 같이 본 발명의 실시예의 범위를 제한하지 않으면서, 이러한 예시적 양태는 다양한 실시예에 포함될 수도 있고 포함되지 않을 수도 있다.
이제 도 3을 참조하면, 일부 실시예에서, SQ 회로(135), CPU(140) 및/또는 노스브리지(145) 및 캐시(들)(130)가 실리콘 칩/다이(340) 상에 및/또는 컴퓨터 시스템(100) 구성요소, 가령, 도 1에 도시된 것들 상에 위치할 수 있다. 실리콘 칩(들)(340)은 마더보드(가령, 110) 또는 컴퓨터 시스템(100)의 그 밖의 다른 구조물 상에 하우징될 수 있다. 일부 실시예에서, 각각의 실리콘 칩/다이(340) 상에 둘 이상의 SQ 회로(135), CPU(140) 및/또는 노스브리지(145) 및/또는 캐시(130)가 존재할 수 있다. 앞서 언급된 바와 같이, SQ 회로(135), CPU(140) 및/또는 노스브리지(145)의 다양한 실시예가 다양한 전자 장치에서 사용될 수 있다.
이제 일부 실시예에 따라 도 4를 참조하면, 그리고 앞서 기재된 바와 같이, SQ 회로(135), CPU(140) 및/또는 노스브리지(145) 중 하나 이상이 실리콘 다이/칩(340)(또는 컴퓨터 칩) 상에 포함될 수 있다. 실리콘 다이/칩(340)은 SQ 회로(135), CPU(140) 및/또는 노스브리지(145)의 하나 이상의 서로 다른 구성을 포함할 수 있다. 상기 실리콘 칩(340)은 제조 설비(또는 "팹(fab)")(390)에서 실리콘 웨이퍼(330) 상에서 생성될 수 있다. 즉, 실리콘 웨이퍼(330) 및 실리콘 다이/칩(340)은 팹(390)의 산출물 또는 제품이라고 지칭될 수 있다. 상기 실리콘 다이/칩(340)은 전자 장치, 가령, 본 명세서에서 앞서 기재된 것에서 사용될 수 있다.
이제 도 5를 참조하면, 일부 실시예에 따라, SQ 회로(135) 및 이에 수반되는 회로의 그래픽 표현이 도시된다. 다양한 실시예에서, 수반되는 회로(가령, 스토어 큐(SQ)(410), 선택 유닛(430), 리플레이 유닛(440), 중재 유닛(arbitration unit)(475) 등뿐 아니라 이들 각자의 상호연결부(interconnection))는 SQ 회로(135)의 일부로서 포함될 수 있고 그렇게 지칭될 수 있다. 일부 실시예에서, SQ 회로(135)는 CPU(140), GPU(125), 및/또는 이들 각자의 코어(들)의 일부일 수 있다. 상기 SQ 회로(135)는 캐시(130)(가령, L1 데이터 캐시 및/또는 및 L2 데이터 캐시), TLB(485), 및 재-순서화 버퍼(495)(ROB)로 통신 가능하게 연결될 수 있다. 캐시(130), TLB(485), 및 ROB(495)뿐 아니라 캐싱 가능 스토어의 실행과 관련된 추가 CPU(140) 및/또는 GPU(125) 구성요소(도시되지 않음)가 본 명세서에 상세히 기재되지 않지만, 본 발명으로부터 혜택을 얻는 분야의 통상의 기술자에 의해 일반적으로 이해될 것이다.
일부 실시예에서, SQ 회로(135)는 스토어 큐(SQ)(410)를 포함할 수 있다. 상기 SQ(410)는 이의 실행 동안 하나 이상의 캐싱 가능 스토어를 보유 또는 유지하도록 구성된 하나 이상의 엔트리(413a-n)를 포함할 수 있다. 상기 SQ(410)는 엔트리(413a-n)가 선택 유닛(430)의 입력에 각각 연결될 수 있도록 하는 방식으로 선택 유닛(430)에 연결될 수 있고, 선택 유닛(430)의 제어 및 이에 의해 수행되는 선택은 중재 유닛(475)으로부터 수신된 입력 신호에 응답하여 수행될 수 있다. 각각의 SQ 엔트리(413a-n)는 하나 이상의 상태 유닛(415a-n), 하나 이상의 페이즈 유닛(420a-n), 하나 이상의 리플레이 결과 유닛(423a-n), 및 하나 이상의 리플레이 정책 유닛(425a-n)을 포함할 수 있다. 도 5에 도시된 바와 같이, 상태 유닛(415a-n), 페이즈 유닛(420a-n), 및 리플레이 결과 유닛(423a-n)은 각자의 리플레이 정책 유닛(425a-n)으로 연결될 수 있고, 이들 각자의 데이터를 여기로 제공하도록 구성될 수 있다.
상태 유닛(415)은 캐싱 가능 스토어와 연관된 현재 및/또는 과거 상태 데이터를 유지하도록 구성될 수 있다. 일부 실시예에서, 캐싱 가능 스토어의 상태가 스토어가 쓰려고 의도한 캐시 라인(또는 라인들)의 상태에 의해 결정된다. 예를 들어, 상태가 캐시 라인이 쓰기 가능하거나, 필(fill) 중이거나, 미확인 상태여서 대응하는 캐싱 가능 스토어가 리플레이될 필요가 있음을 지시할 수 있다. 쓰기 가능 상태에서, 캐싱 가능 스토어의 캐시 라인은 쓰기 가능 상태에서 L1 데이터 캐시에 존재한다. 필 보류 상태(fill pending state)에서, 스토어의 캐시 라인은 현재 쓰기 가능 상태로 존재하지 않고, 캐시 라인은 획득 중이다. 예를 들어, 캐싱 가능 스토어의 캐시 라인이 캐시(130)에서 쓰기 가능 상태로 존재하지 않을 수 있으며, 미스 주소 버퍼(miss address buffer)(MAB)(499)가 캐시 라인을 획득하도록 할당되었을 수 있다. 미확인 상태(unknown state)에서, 현재 스토어의 캐시 라인이 쓰기 가능 상태로 존재하지 않으며, 아마도 캐싱 가능 스토어가 캐시 라인이 쓰기 가능하다고 알지 못하기 때문에, 활발히 획득 중이 아니다. 예를 들어, 캐싱 가능 스토어의 캐시 라인은 캐시(130)에서 쓰기 가능 상태로 존재하지 않을 수 있으며 미스 주소 버퍼(MAB)(499)가 캐시 라인을 획득하도록 할당되지 않았을 수 있다. 이 상태에서, 캐싱 가능 스토어가 리플레이될 필요가 없을 수 있다. 상태는 리플레이 또는 탐색(424)으로부터 업데이트될 수 있다. 상태(415)의 예시가 일부 실시예에 따라 캐싱 가능 스토어의 상태를 결정하도록 사용되는 상태 머신을 구현할 수 있다.
도 8은 도 5에 도시된 상태 유닛(415)에서 구현될 수 있는 상태 머신(700)의 하나의 예시를 개념적으로 도시한다. 상태 머신(700)은 쓰기 가능 상태(705), 보류 상태(710), 및 리플레이 상태(715)를 포함한다. 쓰기 가능 상태(705)인 캐싱 가능 스토어는 캐싱 가능 스토어와 연관된 캐시 라인의 탐색(probe)에 응답하여 리플레이 상태(715)로 전이(transition)(720)될 수 있다. 보류 상태(710)인 캐싱 가능 스토어는 캐싱 가능 스토어와 연관된 캐시 라인의 성공적인 필(fill)에 응답하여 쓰기 가능 상태(705)로 전이(725)될 수 있다. 필 보류 상태(710)인 캐싱 가능 스토어는 쓰기 가능 캐시 라인을 반환하지 않는 필 반환(fill return)에 응답하여 상기 리플레이 상태(715)로 전이(730)될 수 있다. 리플레이 상태(715)인 캐싱 가능 스토어는 캐싱 가능 스토어의 리플레이의 결과에 따라 쓰기 가능 상태(705), 보류 상태(710), 또는 리플레이 상태(715)로 전이(735, 740, 또는 745)될 수 있다. 리플레이 상태(715)로부터 쓰기 가능 상태(705) 또는 보류 상태(710)로의 전이(735 또는 740)를 야기하는 리플레이는 캐싱 가능 스토어를 이의 이전 상태보다 더 나은 상태로 만들었기 때문에(가령, 캐싱 가능 스토어가 커밋되는 것에 더 가까워질 수 있기 때문에), "굿 리플레이(good replay)"라고 지칭될 수 있다. "배드 리플레이(bad replay)"는 캐싱 가능 스토어를 이의 이전 상태보다 더 나은 상태로 만들지 않는다(가령, 캐싱 가능 스토어는 커밋되는 것에 더 가까워지지 않을 수 있다). 리플레이가 "배드 리플레이"를 야기한 경우, 캐싱 가능 스토어에 대해 다음 리플레이가 요구 및/또는 수행될 수 있다.
다시 도 5를 참조하면, 페이즈 유닛(phase unit)(420)이 캐싱 가능 스토어와 연관된 현재 실행 페이즈를 유지하도록 구성될 수 있다. 캐싱 가능 스토어의 실행과 연관된 서로 다른 페이즈가 이하에서 도 6과 연관하여 더 상세히 기재된다. 리플레이 결과 유닛(423)이, 앞서 예시로서 기재된 바와 같이, 캐싱 가능 스토어의 실행과 연관된 하나 이상의 리플레이 결과를 유지하도록 구성될 수 있다. 리플레이가 완료되는 중에 및/또는 후에, 상태 유닛(415), 페이즈 유닛(420), 및 리플레이 결과 유닛(423) 내 데이터가 리플레이 결과(들) 및/또는 캐싱 가능 스토어의 실행과 관련된 그 밖의 다른 정보에 따라 업데이트될 수 있다. 업데이트된 데이터는, 가령, SQ 회로(135)의 요소에 의해, TLB(485)에 의해, 캐시(130)에 의해, 로드-스토어 유닛(load-store unit)(가령, LS/AGU(498))에 의해, 또는 프로세서(가령, CPU(140)/GPU(125)/코어(들)) 또는 시스템(가령, 컴퓨터 시스템(100)) 내 그 밖의 다른 임의의 적절한 요소에 의해, SQ(410)로 전송될 수 있다.
다시 도 5를 참조하여 하나 이상의 실시예에서, 리플레이 정책 유닛(425)이 캐싱 가능 스토어의 리플레이 또는 재-실행을 수행하기 위한 리플레이 정책을 저장하도록 구성될 수 있다. 상태 유닛(415a-n), 페이즈 유닛(420a-n), 및 리플레이 결과 유닛(423a-n)으로부터의 데이터가 각자의 리플레이 정책 유닛(425a-n)으로 제공될 수 있으며, 여기서 리플레이 정책 유닛(425a-n)에 의해 상기 데이터가 사용되어 본 명세서에 기재된 리플레이 정책에 따라 특정 엔트리(413)와 연관된 캐싱 가능 스토어가 리플레이 또는 재-실행될 자격이 있는지 여부를 결정할 수 있다. 캐싱 가능 스토어가 리플레이 자격이 있다고 결정된 경우, 상기 리플레이 정책 유닛(들)(425)은 이 결정을 지시하는 신호를 선택 유닛(430)으로 출력할 수 있고, 선택 유닛(430)을 이용해 결정이 이뤄진 엔트리(413)와 연관된 캐싱 가능 스토어가 선택될 수 있다.
하나 이상의 SQ 엔트리(413a-n)에 의해 (하나 이상의 캐싱 가능 스토어 리플레이 정책을 구현하도록 구성된) 단일 리플레이 정책 유닛(425a)이 사용될 수 있음이 이해되어야 한다. 즉, 하나 이상의 엔트리(413a-n) 각각이 자신의 고유 리플레이 정책 유닛(425a)을 갖거나 리플레이 정책 유닛(425a)을 하나 이상의 다른 엔트리(413a-n)와 공유할 수 있다. 또한 복수의 리플레이 정책 유닛(425a-n)이 하나 이상의 서로 다른 리플레이 정책을 동시에 구현할 수 있음이 고려된다. 하나 이상의 실시예에서, 구현되는 하나 이상의 리플레이 정책은 시스템 소프트웨어 의해 선택 가능하거나, 리플레이 정책 유닛(425a-n)으로 하드와이어링(hardwire)될 수 있거나, 본 발명으로부터 혜택을 얻는 해당 분야의 통상의 기술자에게 자명할 그 밖의 다른 방식으로 구현될 수 있다. 다양한 실시예에 따라, 설계 및/또는 동작 고려사항에 따라, 시스템 부트(system boot) 시에, 동적으로, 그 밖의 다른 적절한 때에, 하나 이상의 리플레이 정책이 변경될 수 있다.
하나 이상의 실시예에 따라, SQ(410)가 오정렬된 캐싱 가능 스토어(즉, 캐시 라인 경계를 횡단하는 캐싱 가능 스토어)를 유지하도록 구성될 수 있다. 이러한 경우, SQ(410)는 각각의 엔트리(413a-n)와 그룹지어지는 복제 엔트리(duplicate entry)(413a2-n2)(도시되지 않음)를 포함하여, 각각의 엔트리(413)의 저장 용량을 효과적으로 증배할 수 있다(가령, 오정렬된 캐싱 가능 스토어의 각각의 절반에 대해 각각 엔트리(413a) 및 엔트리(413a2)). 오정렬된 캐싱 가능 스토어의 실행이 본 명세서에서 정렬된(정상적인) 캐싱 가능 스토어와 관련하여 기재된 것과 조화되는 방식으로 이뤄질 수 있다. 오정렬된 캐싱 가능 스토어의 각각의 절반이 함께, 독립적으로, 실질적으로 병렬로, 또는 겹치는 방식으로, 실행 및/또는 리플레이될 수 있다. 마찬가지로, 각각의 절반에 대한 커밋이 동시에, 또는 겹치지 않는 간격 또는 사이클로 수행될 수 있다.
선택 유닛(430)은 하나 이상의 선택 가능 입력을 갖는 멀티플렉서이거나 이를 포함할 수 있거나, 선택 신호를 기초로 하여 SQ(410)로부터 입력을 선택하도록 구성된 회로일 수 있다. 일부 실시예에서, 중재 유닛(475)에 의해 선택 신호가 선택 유닛(430)으로 제공된다. 중재 유닛(475)은 하나 이상의 중재 알고리즘, 비-제한적 예를 들면, 균등 알고리즘(fairness algorithm)(가령, 라운드-로빈 중재), 에이지(age)-기반 중재, 또는 구현 특정 알고리즘을 기초로 선택 신호를 제공할 수 있다. 일부 실시예에서, 하나 이상이 중재 알고리즘은 시스템 소프트웨어에 의해 선택 가능하거나 중재 유닛(475)으로 하드와이어링되거나, 본 발명으로부터 혜택을 얻는 해당 분야의 통상의 기술자에게 자명할 그 밖의 다른 방식으로 구현될 수 있다. 다양한 실시예에 따라, 하나 이상의 중재 알고리즘은, 설계 및/또는 동작 고려사항에 따라, 시스템 부트에서, 동적으로, 또는 그 박의 다른 적절한 때에 변경될 수 있다.
리플레이 로직 유닛(440)은 캐싱 가능 스토어의 실행 및/또는 리플레이를 수행 및/또는 촉진시키기 위한 로직에 의해 구성될 수 있다. 다양한 실시예에서, 이는 본 명세서에 기재된 하나 이상의 리플레이 정책에 따라 수행될 수 있다. 상기 리플레이 로직 유닛(440)은 선택 유닛(430)으로부터 입력(가령, 실행 및/또는 리플레이될 캐싱 가능 스토어)을 수신할 수 있다. 이하에서 더 상세히 언급될 바와 같이, 리플레이 로직 유닛(440)은 캐시(130), MAB(499) 및/또는 ROB(495)뿐 아니라 프로세서(가령, CPU(140)/GPU(125)/코어(들)) 또는 시스템(가령, 컴퓨터 시스템(100)) 내 그 밖의 다른 적절한 요소와 통신하도록 더 구성될 수 있다.
이제 도 6을 참조하면, 하나 이상의 실시예에서의 캐싱 가능 스토어의 실행의 단순화된 타임라인이 도시된다. 캐싱 가능 스토어의 실행은 하나 이상의 페이즈를 포함할 수 있다. 페이즈는 실행 동안 서로 다른 이벤트에 의해 정의될 수 있는 실행의 부분일 수 있다. 페이즈에 의한 예시적 실행이 하나의 실시예에 따라 이하에서 기재되며, 이에 한정되는 것은 아니다. 캐싱 가능 스토어가 로드-스토어 유닛(가령, LS/AGU(498))으로 최초 디스패치될 때 캐싱 가능 스토어의 실행이 페이즈 1(510)에서 시작할 수 있다. 페이즈 1(510) 동안, 예를 들어, 주소 생성 유닛(AGU)(도시되지 않음)에 의해 캐싱 가능 스토어는 이의 선형 주소(linear address)가 생성되기를 기다릴 수 있다. 페이즈 2(520)가 캐싱 가능 스토어가 주소를 가질 때 시작될 수 있고 캐싱 가능 스토어가 ROB(495)로 완료를 신호할 때까지 유지될 수 있다. 페이즈 2(520) 동안, 캐싱 가능 스토어는 캐싱 가능 스토어가 자신의 연관된 캐시 라인이 존재하는지 여부를 결정할 때인 자신의 "초기 픽(initial pick)"을 가질 수 있다. 페이즈 3(530)이 TLB(485) 검색의 완료 후 시작될 수 있고 ROB(495)가 캐싱 가능 스토어가 퇴장했음을 지시할 때까지 지속될 수 있다. 페이즈 3(530) 동안, 캐싱 가능 스토어는 여전히 추론적(speculative)이라고 여겨질 수 있다. 페이즈 4(540)가 캐싱 가능 스토어의 퇴장과 캐싱 가능 스토어가 시스템에서 절대적으로 가장 오래된 캐싱 가능 스토어가 될 때 사이에 발생할 수 있다. SQ(410)는, 앞서 기재된 바와 같이, 이 사후-퇴장 상태(post-retire state)에서(가령, 페이즈 4(540)의 시작 이후) 여러 캐싱 가능 스토어를 보유 또는 유지하도록 구성될 수 있으며, 아키텍처상 이유로, 캐싱 가능 스토어는 순서대로 커밋되도록 요구될 수 있다. 이러한 목적으로, 페이즈 4(540) 동안, 캐싱 가능 스토어는 자신이 시스템에서 가장 오래된 캐싱 가능 스토어가 될 때까지 기다릴 수 있다. 시스템에 더 오래된 어떠한 캐싱 가능 스토어도 존재하지 않는다면, 캐싱 가능 스토어는 페이즈 3(530)에서 페이즈 5(550)로 바로 스킵할 수 있다. 페이즈 5(550)는 캐싱 가능 스토어가 가장 오래된 캐싱 가능 스토어가 되면 시작될 수 있고, 캐싱 가능 스토어가 커밋될 때까지(캐시에 데이터를 쓸 때까지) 지속될 수 있으며, 이 시점에서, 상기 캐싱 가능 스토어는 SQ(410)로부터 삭제될 수 있다.
도 6에 도시된 타임라인은 반드시 실제 비율로 그려진 것이 아니며 실행 또는 리플레이의 서로 다른 페이즈들은 도시된 것보다 더 짧거나 더 길 수 있음을 알아야 한다. 그러나 일부 실시예에서 페이즈의 상대적 지속시간은 도 6에 도시된 것과 대략 동일할 수 있다. 덧붙여, 프로세서의 아키텍처 규칙 및 요건에 따라서 실행의 서로 다른 페이즈들은 스킵되거나 반복될 수 있다.
이제 도 7을 참조하면, 일부 실시예에서의 캐싱 가능 스토어의 실행 및 리플레이를 도시하는 예시적 흐름도(600)가 도시된다. 도 7에 도시된 바와 같은, 캐싱 가능 스토어의 실행 및 리플레이는 본 명세서에 기재된 실시예 및 리플레이 정책에 따라 수행될 수 있다. 덧붙여, 앞서 언급된 바와 같이, 본 발명으로부터 혜택을 얻는 해당 분야의 통상의 기술자라면 본 명세서에 기재된 흐름 및 실시예가 수정되어 오정렬된 캐싱 가능 스토어도 수용할 수 있음을 알 것이다.
(602)에서, 실행을 위해 프로세싱 장치에 캐싱 가능 스토어가 수신될 수 있다. 상기 캐싱 가능 스토어는 도 5에 기재된 SQ(410) 및/또는 캐싱 가능 스토어의 실행을 수행하기 위해 필요한 프로세싱 장치의 그 밖의 다른 요소에 수신될 수 있다. 일부 실시예에서, SQ(410)는 프로세싱 장치 또는 프로세싱 장치 실행 파이프라인을 통한 이의 실행 동안 캐싱 가능 스토어를 보유 또는 유지할 수 있다. (605)에서, 캐싱 가능 스토어의 실행이 시작될 수 있고 흐름은 (610)으로 진행될 수 있으며 여기서, 캐싱 가능 스토어가 로드-스토어 유닛(가령, LS/AGU 유닛(498))으로 디스패치될 수 있으며, (615)에서 주소 생성 유닛(가령, LS/AGU 유닛(498))에 의해 캐싱 가능 스토어의 선형 주소가 생성될 수 있다. 흐름이 (620)으로 진행될 수 있으며, 여기서, 가령 SQ(410)에 의해 선형 주소가 수신된다. (625)에서, TLB가 TLB 엔트리가 캐싱 가능 스토어의 선형 주소에 대해 존재하는지 여부를 결정할 수 있다. (630)에서 TLB 검색이 완료되면, 실행 흐름이 (635)으로 진행될 수 있으며, 여기서 ROB(가령, ROB(495))가 캐싱 가능 스토어가 퇴장됐음을 지시할 수 있다. 또는 (630)으로부터, 흐름이 (675a)로 진행될 수 있으며, 여기서 본 명세서에 기재된 다양한 리플레이 정책에 따라 하나 이상의 리플레이가 수행될 수 있다. 일부 실시예에서, (675a)에서의 리플레이(들)는 (페이즈 2에서의) 이들의 초기 픽이 배드 리플레이임에 응답하여, 이들이 설정 가능한 횟수의 굿 리플레이를 수행했을 때까지 반복될 수 있다. 예를 들어, 이 페이즈에서의 스토어는 이들이 한 번의 굿 리플레이를 수행할 때까지 리플레이될 수 있다. 한 번의 굿 리플레이를 수행한 후, 스토어는 퇴장할 때까지 다시 리플레이되지 못할 수 있다.
(675a)로부터, 흐름은 캐싱 가능 스토어의 퇴장에 대한 (635)로 진행될 수 있다.
(635)로부터, 흐름은 (640)로 진행될 수 있으며, 여기서 캐싱 가능 스토어가 자신이 시스템에서 가장 오래된 캐싱 가능 스토어일 때까지 기다린다. 또는 (635)로부터, 흐름은 (675b)로 진행될 수 있으며, 여기서 한 번 이상의 리플레이가 수행될 수 있다. 일부 실시예에서, (675b)에서 스토어가 퇴장하기 전에 시도된 리플레이에 대한 어떠한 리플레이 결과와도 무관하게, 리플레이(들)는 설정 가능한 횟수의 굿 리플레이를 수행할 때까지 반복될 수 있다. 예를 들어, 이 페이즈에서의 스토어는 한 번의 굿 리플레이를 수행할 때까지 리플레이될 수 있다. 한 번의 굿 리플레이를 수행한 후, 스토어는 스토어 큐에서 가장 오래된 스토어가 될 때까지 다시 리플레이되지 못할 수 있다.
(675b)로부터, 흐름은 (640)으로 진행될 수 있으며, 여기서 캐싱 가능 스토어는 자신이 시스템에서 가장 오래된 캐싱 가능 스토어일 때까지 기다린다.
(640)로부터, 캐싱 가능 스토어가 가장 오래된 캐싱 가능 스토어일 때, 흐름이 (645)로 진행될 수 있으며, 여기서 캐싱 가능 스토어와 연관된 데이터가 캐시(가령, 캐시(130))에 커밋되거나 써진다. 또는, (640)으로부터, 흐름이 (675c)로 진행될 수 있으며, 여기서, 하나 이상의 리플레이가 수행될 수 있다. 일부 실시예에서, (675c)에서의 리플레이(들)이 필요한 만큼 자주 반복되는데, 가령, 캐시 라인이 쓰기 가능 상태일 때까지 반복된다. (675c)로부터, 흐름이 (645)로 진행될 수 있으며, 여기서 캐싱 가능 스토어와 연관된 데이터는 캐시에 커밋되거나 써진다. 그 밖의 다른 캐싱 가능 스토어가 존재하지 않는 경우, 흐름은 (640)에서 캐싱 가능 스토어가 가장 오래된 캐싱 가능 스토어가 되기를 기다리지 않고 (635)에서 (645)로 진행될 수 있음을 알아야 한다. 앞서 기재된 바와 같이, (640)을 스킵할 때, 흐름이 (645)로 계속 하기 전에 (675d)로 진행될 수 있다. (675d)에서, 본 명세서에 기재된 다양한 리플레이 정책 또는 그 밖의 다른 리플레이 정책에 따라 하나 이상의 리플레이가 수행될 수 있다. (675c)에서의 리플레이(들)은 리플레이 정책에 의해 요구되는 바대로 반복될 수 있다. (645)로부터, 데이터가 캐시에 커밋되면, 흐름이 (650)으로 진행될 수 있으며, 여기서 캐싱 가능 스토어가 SQ(가령, SQ(410))로부터 삭제된다.
일부 실시예에서, 스토어 큐 내 저장 정보, 가령, 비트 또는 레지스터를 이용해 리플레이 정책의 양태가 구성될 수 있다. 예를 들어, 리플레이(675a-d) 동안 허용된 설정 가능한 횟수의 리플레이가 하나 이상의 비트 또는 레지스터에 저장될 수 있다. 리플레이의 설정 가능한 횟수는 리플레이(675a-d) 각각에 대해 동일하거나 하나 이상의 리플레이(675a-d)에 대해 상이할 수 있다. 비트 또는 레지스터가 소프트웨어에 의해 읽히거나 수정될 수 있도록 소프트웨어 가시적(software visible)이 될 수 있다. 본 발명으로부터 혜택을 얻는 해당 분야의 통상의 기술자라면 본 명세서에 기재된 리플레이(675a-d)가 예시로서 의도된 것임을 또한 알아야 한다. 대안적 실시예가 하나 이상의 캐시 라인의 상태 및 스토어의 실행 페이즈에 의해 지시되는 스토어의 상태를 기초로 스토어 명령(store instruction)을 리플레이할지 여부를 결정하기 위해 그 밖의 다른 리플레이 정책을 사용할 수 있다.
도 7에 도시된 요소들은 앞서 기재된 순서로 한정되지 않을 수 있음이 고려된다. 일부 실시예에 따르면, 본 명세서에 제공된 실시예의 사상 및 범위 내에서 도 7에 도시된 요소들은 순차적으로, 병렬로, 또는 교대하는 순서(들)로 수행될 수 있다. 본 명세서에 제공된 하나 이상의 실시예에 따라 흐름도들은 전체적으로 또는 부분적으로 수행될 수 있음이 또한 고려된다. 즉, 도면에 도시된 흐름도는 하나 이상의 실시예에서 기재된 모든 요소를 반드시 수행해야 하는 것은 아니다. 도 7에 도시된 방법의 일부 실시예는 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 일시적 또는 비-일시적 컴퓨터 판독형 매체가 실행될 때 본 명세서에 기재된 방법의 일부 실시예를 구현 또는 실행하도록 프로세싱 시스템을 구성할 수 있는 명령을 저장하기 위해 사용될 수 있다. 예를 들어, 본 명세서에 기재된 방법의 일부 실시예를 나타내는 인코딩된 명령이 비-일시적 컴퓨터 판독형 저장 장치, 가령, 데이터 저장 유닛, RAM, 가령, 내장형 RAM, SRAM 또는 DRAM, 캐시, 컴팩트 디스크, DVD, 솔리드 스테이트 저장 장치 또는 그 밖의 다른 저장 매체 상에 저장될 수 있다.
덧붙여, 일부 실시예에서, 초대규모 집적(very large scale integration)(VLSI) 회로, 가령, 반도체 제품 및 장치 및/또는 그 밖의 다른 유형의 반도체 장치를 설계하고 제작하는 과정에서 서로 다른 유형의 하드웨어 기술 언어(hardware descriptive language)(HDL)가 사용될 수 있다. HDL의 일부 예시는 VHDL 및 Verilog/Verilog-XL가 있지만, 언급되지 않은 그 밖의 다른 HDL 포맷도 사용될 수 있다. 하나의 실시예에서, HDL 코드(가령, 레지스터 전송 레벨(register transfer level)(RTL) 코드/데이터)가 GDS 데이터, GDSII 데이터 등을 생성하도록 사용될 수 있다. 예를 들어, GDSII 데이터는 기술적 파일 포맷(descriptive file format)이며, 반도체 제품 또는 장치의 3차원 모델을 나타내기 위해 여러 다른 실시예에서 사용될 수 있다. 이러한 모델은 반도체 제조 설비에 의해 반도체 제품 및/또는 장치를 만들기 위해 사용될 수 있다. 상기 GDSII 데이터는 데이터베이스 또는 그 밖의 다른 프로그램 저장 구조로서 저장될 수 있다. 이 데이터는 또한 컴퓨터 판독형 저장 장치(가령, 데이터 저장 유닛(160), RAM(155)(가령, 내장형 RAM, SRAM 및/또는 DRAM), 캐시(130), 컴팩트 디스크, DVD, 솔리드 스테이트 저장 장치 및/또는 이들과 유사한 것) 상에 저장될 수 있다. 일부 실시예에서, GDSII 데이터(또는 그 밖의 다른 유사한 데이터)가 (가령, 마스크 작업을 이용함으로써) 제조 설비를 설정하도록 적합화되어 본 명세서에 기재된 다양한 양태를 구현할 수 있는 장치를 만들 수 있다. 다시 말하면, 다양한 실시예에서, 이 GDSII 데이터(또는 그 밖의 다른 유사한 데이터)가 컴퓨터, 프로세서 또는 제어기 내에 프로그램될 수 있으며, 그 후 컴퓨터, 프로세서 또는 제어기가 반도체 제조 설비(또는 팹(fab))의 동작을 전체적으로 또는 부분적으로 제어하여 반도체 제품 및 장치를 만들 수 있다. 예를 들어, 하나의 실시예에서, GDSII 데이터(또는 그 밖의 다른 유사한 데이터)를 이용해 하나 이상의 CPU(140), GPU(125), SQ 회로(135), 하드웨어 상태 머신 및/또는 알고리즘(도시되지 않음), 캐시(130) 및/또는 이들과 유사한 것을 포함하는 실리콘 웨이퍼가 생성될 수 있다.
다양한 실시예가 다양한 프로세서 또는 캐싱 가능 스토어 리플레이와 연관된 SQ 회로에 대해 기재될 수 있지만, 본 명세서에 기재된 실시예는 가령, 본 발명으로부터 혜택을 얻는 해당 분야의 통상의 기술자에게 자명할 프로세싱 장치를 포함하는 다양한 장치에서, 다양한 적용예를 가질 수 있다.
앞서 개시된 특정 실시예는 예시에 불과하며, 본 명세서의 실시예는 본 명세서의 설명으로부터 혜택을 얻는 분야의 기술자에게 자명할 상이하지만 균등한 방식으로 수정되고 실시될 수 있다. 덧붙여, 이하의 특허청구범위에 기재된 바가 아니라 본 명세서에 나타난 구성 또는 설계의 상세사항으로 한정하려는 의도가 아니다. 따라서 개시된 실시예는 변경 또는 수정될 수 있으며 이러한 모든 변동이 개시된 실시예의 범위 내에 있는 것으로 간주됨이 자명하다.
따라서 본 명세서에서 추구하는 보호범위는 이하의 특허청구범위에서 제공된다.

Claims (15)

  1. 적어도 하나의 캐시 라인의 상태 및 스토어 명령(store instruction)의 실행 페이즈(execution phase)의 상태에 의해 지시되는 스토어 명령의 상태를 기초로 상기 적어도 하나의 캐시 라인을 재-획득(re-acquire)하기 위해 스토어 명령을 리플레이할지 여부를 결정하는 단계, 및
    스토어 명령을 리플레이한다는 결정에 응답하여 상기 스토어 명령을 리플레이하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 스토어 명령을 리플레이할지 여부를 결정하는 단계는 상기 스토어 명령의 적어도 하나의 이전 리플레이의 적어도 하나의 결과를 기초로 하여 상기 스토어 명령을 리플레이할지 여부를 결정하는 단계를 포함하는, 방법.
  3. 제2항에 있어서, 상기 스토어 명령의 상기 적어도 하나의 이전 리플레이의 상기 적어도 하나의 결과가 상기 적어도 하나의 캐시 라인의 상태를 상기 스토어 명령이 커밋될 수 있게 하는 쓰기 가능 상태에 가깝게 수정한 굿 리플레이(good replay)였는지 또는 상기 적어도 하나의 캐시 라인의 상태를 상기 쓰기 가능 상태에 가깝게 수정하지 않은 배드 리플레이(bad replay)였는지 여부를 결정하는 단계를 포함하는, 방법.
  4. 제3항에 있어서, 상기 스토어 명령을 리플레이할지 여부를 결정하는 단계는 실행 페이즈 동안 상기 스토어 명령의 굿 리플레이의 설정 가능한 횟수를 기초로 상기 스토어 명령을 리플레이할지 여부를 결정하는 단계를 포함하는, 방법.
  5. 제4항에 있어서, 상기 스토어 명령이 완료됐지만 아직 퇴장(retire)되지 않았고 상기 스토어 명령은 상기 스토어 명령의 완료 후 설정 가능한 횟수의 굿 리플레이를 수행하지 않았다는 결정에 응답하여, 스토어 명령을 리플레이하는 단계를 포함하는, 방법.
  6. 제5항에 있어서, 상기 스토어 명령이 퇴장됐지만 상기 스토어 명령은 아직 스토어 큐(store queue) 내에서 가장 오래된 스토어 명령이 아니고 상기 스토어 명령은 상기 스토어 명령이 퇴장된 이후로 굿 리플레이를 수행하지 않았다는 결정에 응답하여, 스토어 명령을 리플레이하는 단계를 포함하는, 방법.
  7. 제6항에 있어서, 상기 스토어 명령이 상기 스토어 큐 내에서 가장 오래된 스토어 명령이지만 상기 스토어 명령은 아직 커밋(commit)되지 않았다는 결정에 응답하여 상기 적어도 하나의 캐시 라인이 쓰기 가능 상태에 있을 때까지 상기 스토어 명령을 리플레이하는 단계를 포함하는, 방법.
  8. 적어도 하나의 캐시 라인의 상태 및 스토어 명령의 실행 페이즈에 의해 지시되는 스토어 명령의 상태를 기초로 하여 적어도 하나의 캐시 라인을 재-획득하기 위해 스토어 명령을 리플레이할지 여부를 결정하도록 설정 가능한 스토어 큐 회로(store queue circuitry)
    를 포함하는, 장치.
  9. 제8항에 있어서, 상기 스토어 큐 회로는 상기 스토어 명령의 적어도 하나의 이전 리플레이의 적어도 하나의 결과를 기초로 하여 상기 스토어 명령을 리플레이할지 여부를 결정하도록 설정 가능한, 장치.
  10. 제9항에 있어서, 상기 스토어 큐 회로는 상기 스토어 명령의 상기 적어도 하나의 이전 리플레이의 상기 적어도 하나의 결과가 상기 적어도 하나의 캐시 라인의 상태를 상기 스토어 명령이 커밋될 수 있게 하는 쓰기 가능 상태에 가깝게 수정한 굿 리플레이(good replay)였는지 또는 상기 적어도 하나의 캐시 라인의 상태를 상기 쓰기 가능 상태에 가깝게 수정하지 않은 배드 리플레이(bad replay)였는지 여부를 결정하도록 설정 가능한, 장치.
  11. 제10항에 있어서, 상기 스토어 큐 회로는 스토어 명령의 상태를 결정하도록 설정 가능한 상태 머신을 포함하고, 상기 스토어 명령의 상태는 쓰기 가능 상태, 상기 스토어 명령에 대한 상기 적어도 하나의 캐시 라인이 캐시 내에 있지 않지만 획득 과정 중인 보류 상태, 또는 상기 스토어 명령에 대한 상기 적어도 하나의 캐시 라인이 캐시 내에 있지 않고 획득 과정 중이 아닌 리플레이 상태를 포함하는, 장치.
  12. 제10항에 있어서, 상기 스토어 큐 회로는 실행 페이즈 동안 상기 스토어 명령의 굿 리플레이의 설정 가능 횟수를 기초로 상기 스토어 명령을 리플레이할지 여부를 결정하도록 설정 가능한, 장치.
  13. 제12항에 있어서, 상기 스토어 명령이 완료됐지만 아직 퇴장되지 않았고 리플레이 로직이 스토어 명령의 완료 후 상기 스토어 명령의 설정 가능 횟수의 굿 리플레이를 수행하지 않았다는 스토어 큐 회로의 결정에 응답하여, 상기 스토어 명령을 리플레이하도록 설정 가능한 리플레이 로직을 포함하는, 장치.
  14. 제13항에 있어서, 상기 스토어 명령이 은퇴됐지만 상기 스토어 명령은 아직 스토어 큐 회로의 스토어 큐 내에서 가장 오래된 스토어 명령이 아니며 상기 리플레이 로직이 상기 스토어 명령이 은퇴된 이후로 스토어 명령의 굿 리플레이를 수행하지 않았다는 스토어 큐 회로의 결정에 응답하여 스토어 명령을 리플레이하도록 리플레이 로직은 설정 가능한, 장치.
  15. 제14항에 있어서, 상기 스토어 명령이 스토어 큐 내에서 가장 오래된 스토어 명령이지만 스토어 명령은 아직 커밋되지 않았다는 스토어 큐 회로의 결정에 응답하여 상기 적어도 하나의 캐시 라인이 쓰기 가능 상태가 될 때까지 상기 스토어 명령을 리플레이하도록 상기 리플레이 로직은 설정 가능한, 장치.
KR1020157010983A 2012-11-02 2013-10-31 스토어 리플레이 정책 KR102199342B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/667,095 US9361103B2 (en) 2012-11-02 2012-11-02 Store replay policy
US13/667,095 2012-11-02
PCT/US2013/067848 WO2014071059A1 (en) 2012-11-02 2013-10-31 Store replay policy

Publications (2)

Publication Number Publication Date
KR20150082239A true KR20150082239A (ko) 2015-07-15
KR102199342B1 KR102199342B1 (ko) 2021-01-06

Family

ID=49627054

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157010983A KR102199342B1 (ko) 2012-11-02 2013-10-31 스토어 리플레이 정책

Country Status (6)

Country Link
US (1) US9361103B2 (ko)
EP (1) EP2915039B1 (ko)
JP (1) JP6196315B2 (ko)
KR (1) KR102199342B1 (ko)
CN (1) CN104756070B (ko)
WO (1) WO2014071059A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11392380B2 (en) 2019-12-28 2022-07-19 Intel Corporation Apparatuses, methods, and systems to precisely monitor memory store accesses

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070022034A (ko) * 2004-03-31 2007-02-23 코웨어, 인코포레이티드 멀티코어 아키텍처내의 리소스 관리
KR100933820B1 (ko) * 2006-02-07 2009-12-24 인텔 코오퍼레이션 메모리 속성들을 사용하기 위한 기술
US20120124296A1 (en) * 2010-11-17 2012-05-17 Bryant Christopher D Method and apparatus for reacquiring lines in a cache

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265233A (en) * 1991-05-17 1993-11-23 Sun Microsystems, Inc. Method and apparatus for providing total and partial store ordering for a memory in multi-processor system
WO1998002804A1 (en) * 1996-07-16 1998-01-22 Advanced Micro Devices, Inc. Load/store unit and method for non-blocking completion of loads in a superscalar microprocessor
US6163838A (en) * 1996-11-13 2000-12-19 Intel Corporation Computer processor with a replay system
US6678807B2 (en) * 2000-12-21 2004-01-13 Intel Corporation System and method for multiple store buffer forwarding in a system with a restrictive memory model
JP3727244B2 (ja) * 2001-01-30 2005-12-14 Necエレクトロニクス株式会社 キャッシュシステムの制御回路
US6842831B2 (en) * 2002-04-25 2005-01-11 Intel Corporation Low latency buffer control system and method
US6901483B2 (en) * 2002-10-24 2005-05-31 International Business Machines Corporation Prioritizing and locking removed and subsequently reloaded cache lines
US20040163082A1 (en) * 2003-02-13 2004-08-19 Marc Tremblay Commit instruction to support transactional program execution
US7321964B2 (en) * 2003-07-08 2008-01-22 Advanced Micro Devices, Inc. Store-to-load forwarding buffer using indexed lookup
US9286346B2 (en) * 2005-02-18 2016-03-15 International Business Machines Corporation Replication-only triggers
US8082396B2 (en) * 2005-04-28 2011-12-20 International Business Machines Corporation Selecting a command to send to memory
US7882339B2 (en) * 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US20070186050A1 (en) * 2006-02-03 2007-08-09 International Business Machines Corporation Self prefetching L2 cache mechanism for data lines
US20070186049A1 (en) * 2006-02-03 2007-08-09 International Business Machines Corporation Self prefetching L2 cache mechanism for instruction lines
US7472260B2 (en) 2006-10-10 2008-12-30 P.A. Semi, Inc. Early retirement of store operation past exception reporting pipeline stage in strongly ordered processor with load/store queue entry retained until completion
US8782348B2 (en) * 2008-09-09 2014-07-15 Via Technologies, Inc. Microprocessor cache line evict array
CN102662634B (zh) * 2012-03-21 2014-10-29 杭州中天微系统有限公司 非阻塞发射和执行的存储器访问执行装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070022034A (ko) * 2004-03-31 2007-02-23 코웨어, 인코포레이티드 멀티코어 아키텍처내의 리소스 관리
KR100933820B1 (ko) * 2006-02-07 2009-12-24 인텔 코오퍼레이션 메모리 속성들을 사용하기 위한 기술
US20120124296A1 (en) * 2010-11-17 2012-05-17 Bryant Christopher D Method and apparatus for reacquiring lines in a cache

Also Published As

Publication number Publication date
CN104756070A (zh) 2015-07-01
JP2015533442A (ja) 2015-11-24
JP6196315B2 (ja) 2017-09-13
CN104756070B (zh) 2017-11-24
US9361103B2 (en) 2016-06-07
WO2014071059A1 (en) 2014-05-08
EP2915039B1 (en) 2019-08-21
US20140129776A1 (en) 2014-05-08
EP2915039A1 (en) 2015-09-09
KR102199342B1 (ko) 2021-01-06

Similar Documents

Publication Publication Date Title
US9448936B2 (en) Concurrent store and load operations
US8713263B2 (en) Out-of-order load/store queue structure
US8713259B2 (en) Method and apparatus for reacquiring lines in a cache
US9262322B2 (en) Method and apparatus for storing a processor architectural state in cache memory
US8904073B2 (en) Coherence processing with error checking
US20140129806A1 (en) Load/store picker
US20140375658A1 (en) Processor Core to Graphics Processor Task Scheduling and Execution
US20150121010A1 (en) Unified store queue
US20140108766A1 (en) Prefetching tablewalk address translations
US20160231933A1 (en) Memory page access detection
US20130262780A1 (en) Apparatus and Method for Fast Cache Shutdown
US9256544B2 (en) Way preparation for accessing a cache
US20130346683A1 (en) Cache Sector Dirty Bits
US8645588B2 (en) Pipelined serial ring bus
US9335999B2 (en) Allocating store queue entries to store instructions for early store-to-load forwarding
US9189417B2 (en) Speculative tablewalk promotion
US9286233B2 (en) Oldest operation translation look-aside buffer
US10866892B2 (en) Establishing dependency in a resource retry queue
KR102199342B1 (ko) 스토어 리플레이 정책
US20230011446A1 (en) Writeback Hazard Elimination
KR20230069927A (ko) 스케일러블 인터럽트들
JP7092783B2 (ja) ペンディング中のロード及びストアの個別トラッキング
US10747535B1 (en) Handling non-cacheable loads in a non-coherent processor
US20120079208A1 (en) Probe speculative address file

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant