KR102199342B1 - 스토어 리플레이 정책 - Google Patents
스토어 리플레이 정책 Download PDFInfo
- Publication number
- KR102199342B1 KR102199342B1 KR1020157010983A KR20157010983A KR102199342B1 KR 102199342 B1 KR102199342 B1 KR 102199342B1 KR 1020157010983 A KR1020157010983 A KR 1020157010983A KR 20157010983 A KR20157010983 A KR 20157010983A KR 102199342 B1 KR102199342 B1 KR 102199342B1
- Authority
- KR
- South Korea
- Prior art keywords
- store
- replay
- state
- command
- cache line
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 36
- 230000004044 response Effects 0.000 claims abstract description 15
- 238000004519 manufacturing process Methods 0.000 claims abstract description 12
- 239000004065 semiconductor Substances 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 7
- 238000012545 processing Methods 0.000 description 26
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 17
- 229910052710 silicon Inorganic materials 0.000 description 17
- 239000010703 silicon Substances 0.000 description 17
- 230000008901 benefit Effects 0.000 description 9
- 239000000872 buffer Substances 0.000 description 8
- 238000013500 data storage Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000007704 transition Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30065—Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache 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
기술분야
본 명세서에 제공된 실시예는 일반적으로 컴퓨팅 시스템 및 프로세싱 장치와 관련되며, 더 구체적으로 프로세싱 장치에서 캐싱 가능 스토어 리플레이 정책을 구현하기 위한 방법 및 장치와 관련된다.
관련 기술의 기재
명령을 실행하고 데이터를 프로세싱하는 전기 회로 및 장치가 더 빠르고 더 복잡해지도록 진화했다. 현대의 데이터 프로세서 아키텍처(가령, 멀티-코어 프로세서)의 증가된 성능 및 저전력 수요에 의해, 새 데이터(즉, 캐싱 가능 스토어(cacheable store))를 데이터 캐시에 커밋(commit)(즉, 쓰기)하는 것이 점점 더 복잡해졌다. 문제적 상태, 가령, 경합(contention) 및 라이브-락(live-lock) 상태뿐 아니라 전력 소모 이벤트, 가령, 서로 다른 프로세서 코어에 의해 캐시 라인이 반복적으로 획득되는 것을 피하면서, 새 데이터를 효율적으로 커밋할 수 있는 프로세서를 설계하는 것이 특히 난제이다.
일부 이전 솔루션에서, 단순히 캐싱 가능 스토어가 시스템에서 가장 오래된 캐싱 가능 스토어가 되기를 기다린 후 캐시 라인의 획득 및 캐싱 가능 스토어의 커밋이 시도됐었다. 또 다른 경우, 캐싱 가능 스토어가 퇴장된 후 라인의 획득 및 캐싱 가능 스토어의 커밋이 시도됐으며, 특정 횟수의 시도 이후에는, 캐싱 가능 스토어의 획득 및 커밋의 추가 시도가 캐싱 가능 스토어가 시스템에서 가장 오래된 캐싱 가능 스토어가 된 후에야 수행되도록 카운터(counter)가 구현되었다. 그러나 이들 이전 솔루션은 열악한 성능과 비효율적인 전력 이용율의 문제점을 갖고 있다.
본 명세서에 제공된 실시예가 앞서 기재된 기존 기술에 내재된 문제들을 제거하거나 완화한다.
일부 실시예에서, 하나의 방법이 제공된다. 상기 방법은 캐싱 가능 스토어를 실행하는 단계를 포함하다. 상기 방법의 일부 실시예는 캐시 라인(들)의 상태 및 스토어 명령의 실행 페이즈에 의해 지시되는 스토어 명령의 상태를 기초로 하여 하나 이상의 캐시 라인을 재-획득하기 위해 스토어 명령을 리플레이할지 여부를 결정하는 단계를 포함한다. 상기 스토어 명령은 스토어 명령을 리플레이한다는 결정에 응답하여 리플레이된다. 캐시 라인(들)의 상태 및 스토어 명령의 실행 페이즈에 의해 지시되는 스토어 명령의 상태를 기초로 하여 하나 이상의 캐시 라인을 재-획득하기 위해 스토어 명령을 리플레이할지 여부를 결정하도록 설정 가능한 스토어 큐(SQ)를 포함하는 장치가 제공된다. 상기 장치를 제조하기 위해 제조 설비를 적합화하기 위한 컴퓨터 판독형 저장 장치가 제공된다.
첨부된 도면과 함께 다음의 설명을 참조하여 본 명세서의 실시예가 이해될 수 있으며, 여기서 도면부호의 최좌측의 유의미한 숫자(들)은 각각의 도면 부호가 처음 등장한 도면을 나타낸다.
도 1은 일부 실시예에 따라, 컴퓨터 시스템의 단순화된 블록도를 개략적으로 도시한다.
도 2는 일부 실시예에 따라, 중앙 처리 장치(CPU) 및 스토어 큐(SQ) 회로를 포함하는 회로의 단순화된 블록도를 도시한다.
도 3은 일부 실시예에 따라, 도 2에 도시된 바와 같은 하나 이상의 회로를 포함하는 실리콘 다이/칩을 나타낸다.
도 4는 일부 실시예에 따라, 제조 설비에서 생성될 수 있는 하나 이상의 다이/칩을 포함하는 실리콘 웨이퍼를 나타낸다.
도 5는 일부 실시예에 따라, 컴퓨터 프로세서의 맥락에서 도 2의 스토어 큐(SQ) 회로의 단순화된 블록도를 도시한다.
도 6은 일부 실시예에 따라, 캐싱 가능 스토어의 실행의 단순화된 타임라인을 도시한다.
도 7은 일부 실시예에 따라, 리플레이 정책에 따라 캐싱 가능 스토어를 실행하는 것을 나타내는 흐름도를 도시한다.
도 8은 도 5에 도시된 스토어 큐로 구현될 수 있는 상태 머신의 하나의 예시의 개념을 도시한다.
본 명세서의 실시예가 다양한 수정 및 대안 형태로 가능하지만, 이들의 구체적 실시예가 도면에서 예시로서 도시되었고 본 명세서에서 상세히 기재된다. 그러나 본 명세서의 구체적 실시예의 기재는 개시된 실시예를 개시된 특정 형태로 한정하려는 것이 아니며, 오히려, 특허청구범위에 의해 규정되는 개시된 실시예의 범위 내에 속하는 모든 변경, 균등, 및 대안적 형태를 포함하는 것으로 이해되어야 한다.
도 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 (17)
- 적어도 하나의 캐시 라인의 상태에 의해 지시되는 스토어 명령(store instruction)의 상태, 상기 스토어 명령의 실행 페이즈(execution phase), 및 상기 스토어 명령에 대한 적어도 하나의 이전 리플레이가 상기 스토어 명령이 커밋될 수 있게 하는 쓰기가능 상태(writeable state)에 더 가까워지도록 상기 적어도 하나의 캐시 라인의 상태를 수정하였는지의 여부에 대한 결정에 기초하여, 상기 적어도 하나의 캐시 라인을 재-획득(re-acquire)하기 위해 스토어 명령을 리플레이할지 여부를 결정하는 단계; 및
스토어 명령을 리플레이한다는 결정에 응답하여 상기 스토어 명령을 리플레이하는 단계
를 포함하는 것을 특징으로 하는 방법. - 제1항에 있어서,
상기 스토어 명령의 상태들은 상기 쓰기가능 상태, 상기 스토어 명령에 대한 상기 적어도 하나의 캐시 라인이 캐시 내에 있지 않지만 획득 과정 중인 보류(pending) 상태, 또는 상기 스토어 명령에 대한 상기 적어도 하나의 캐시 라인이 캐시 내에 있지 않고 획득 과정 중이 아닌 리플레이 상태를 포함하는 것을 특징으로 하는 방법. - 제1항에 있어서,
상기 스토어 명령을 리플레이할지 여부를 결정하는 단계는,
상기 실행 페이즈 동안 상기 쓰기가능 상태에 더 가까워지도록 상기 적어도 하나의 캐시 라인의 상태를 수정하는 상기 스토어 명령의 굿-리플레이들(good-replays)의 설정가능한 횟수에 기초하여, 상기 스토어 명령을 리플레이할지 여부를 결정하는 단계를 포함하는 것을 특징으로 하는 방법. - 제3항에 있어서,
상기 스토어 명령이 완료됐지만 아직 퇴장(retire)되지 않았고 그리고 상기 스토어 명령의 완료 이후에 상기 스토어 명령이 설정가능한 횟수의 리플레이들을 수행하지 않았다는 결정에 응답하여, 상기 스토어 명령을 리플레이하는 단계를 포함하는 것을 특징으로 하는 방법. - 제4항에 있어서,
상기 스토어 명령이 퇴장됐지만 상기 스토어 명령은 아직 스토어 큐(store queue) 내에서 가장 오래된 스토어 명령이 아니며 그리고 상기 스토어 명령이 퇴장된 이후에 상기 쓰기가능 상태에 더 가까워지도록 상기 적어도 하나의 캐시 라인의 상태를 수정하는 리플레이를 상기 스토어 명령이 수행하지 않았다는 결정에 응답하여, 상기 스토어 명령을 리플레이하는 단계를 포함하는 것을 특징으로 하는 방법. - 제5항에 있어서,
상기 스토어 명령이 상기 스토어 큐 내에서 가장 오래된 스토어 명령이지만 상기 스토어 명령은 아직 커밋(commit)되지 않았다는 결정에 응답하여 상기 적어도 하나의 캐시 라인이 상기 쓰기가능 상태에 있을 때까지 상기 스토어 명령을 리플레이하는 단계를 포함하는 것을 특징으로 하는 방법. - 제4항에 있어서,
상기 스토어 명령을 리플레이하는 단계는, 균등(fairness) 알고리즘, 라운드-로빈 중재(round-robin arbitration), 에이지-기반 중재(age-based arbitration)를 이용하여, 리플레이될 자격이 있는 복수의 스토어 명령들 중에서 스토어 명령을 선택하는 단계를 포함하는 것을 특징으로 하는 방법. - 장치로서,
적어도 하나의 캐시 라인의 상태에 의해 지시되는 스토어 명령의 상태, 상기 스토어 명령의 실행 페이즈, 및 상기 스토어 명령에 대한 적어도 하나의 이전 리플레이가 상기 스토어 명령이 커밋될 수 있게 하는 쓰기가능 상태에 더 가까워지도록 상기 적어도 하나의 캐시 라인의 상태를 수정하였는지의 여부에 대한 결정에 기초하여, 상기 적어도 하나의 캐시 라인을 재-획득(re-acquire)하기 위해 스토어 명령을 리플레이할지 여부를 결정하도록 구성된 스토어 큐 회로(store queue circuitry)를 포함하는 것을 특징으로 하는 장치. - 제8항에 있어서,
상기 스토어 큐 회로는 상태 머신을 포함하고, 상기 상태 머신은 상기 스토어 명령의 상태를 결정하며, 상기 스토어 명령의 상태들은 상기 쓰기가능 상태, 상기 스토어 명령에 대한 상기 적어도 하나의 캐시 라인이 캐시 내에 있지 않지만 획득 과정 중인 보류(pending) 상태, 또는 상기 스토어 명령에 대한 상기 적어도 하나의 캐시 라인이 캐시 내에 있지 않고 획득 과정 중이 아닌 리플레이 상태를 포함하는 것을 특징으로 하는 장치. - 제8항에 있어서,
상기 스토어 큐 회로는, 상기 실행 페이즈 동안 상기 쓰기가능 상태에 더 가까워지도록 상기 적어도 하나의 캐시 라인의 상태를 수정하는 상기 스토어 명령의 리플레이들의 설정가능한 횟수에 기초하여, 상기 스토어 명령을 리플레이할지 여부를 결정하는 것을 특징으로 하는 장치. - 제10항에 있어서,
리플레이 로직을 더 포함하며, 상기 리플레이 로직은, 상기 스토어 명령이 완료됐지만 아직 퇴장(retire)되지 않았다는 상기 스토어 큐 회로의 결정 및 상기 스토어 명령의 완료 이후에 상기 스토어 명령의 설정가능한 횟수의 리플레이들을 상기 리플레이 로직이 수행하지 않았음에 응답하여, 상기 스토어 명령을 리플레이하도록 구성되는 것을 특징으로 하는 장치. - 제11항에 있어서,
상기 리플레이 로직은, 상기 스토어 명령이 퇴장됐지만 상기 스토어 명령은 아직 상기 스토어 큐 회로 내의 스토어 큐(store queue)에서 가장 오래된 스토어 명령이 아니라는 상기 스토어 큐 회로의 결정 그리고 상기 스토어 명령이 퇴장된 이후에 상기 쓰기가능 상태에 더 가까워지도록 상기 적어도 하나의 캐시 라인의 상태를 수정한 스토어 명령의 굿-리플레이를 상기 리플레이 로직이 수행하지 않았음에 응답하여, 상기 스토어 명령을 리플레이하는 것을 특징으로 하는 장치. - 제12항에 있어서,
상기 리플레이 로직은, 상기 스토어 명령이 상기 스토어 큐 내에서 가장 오래된 스토어 명령이지만 상기 스토어 명령이 아직 커밋(commit)되지 않았다는 상기 스토어 큐 회로의 결정에 응답하여 상기 적어도 하나의 캐시 라인이 상기 쓰기가능 상태에 있을 때까지 상기 스토어 명령을 리플레이하는 것을 특징으로 하는 장치. - 제11항에 있어서,
균등 알고리즘, 라운드-로빈 중재, 에이지-기반 중재를 이용하여, 리플레이될 자격이 있는 복수의 스토어 명령들 중에서 스토어 명령을 선택하도록 구성된 중재 유닛 및 멀티플렉서를 더 포함하는 것을 특징으로 하는 장치. - 명령들을 포함하는 비일시적인 컴퓨터 판독가능 기록매체로서, 상기 명령들은 실행될 때 반도체 디바이스를 제조하는데 이용되는 제조 프로세스를 구현하며, 상기 반도체 디바이스는,
적어도 하나의 캐시 라인의 상태에 의해 지시되는 스토어 명령의 상태, 상기 스토어 명령의 실행 페이즈, 및 상기 스토어 명령에 대한 적어도 하나의 이전 리플레이가 상기 스토어 명령이 커밋될 수 있게 하는 쓰기가능 상태에 더 가까워지도록 상기 적어도 하나의 캐시 라인의 상태를 수정하였는지의 여부에 대한 결정에 기초하여, 상기 적어도 하나의 캐시 라인을 재-획득(re-acquire)하기 위해 스토어 명령을 리플레이할지 여부를 결정하도록 구성된 스토어 큐 회로(store queue circuitry)를 포함하는 것을 특징으로 하는 비일시적인 컴퓨터 판독가능 기록매체. - 제15항에 있어서,
상기 반도체 디바이스는, 상기 스토어 명령이 리플레이될 자격이 있다는 상기 스토어 큐 회로의 결정에 응답하여 상기 스토어 명령을 리플레이하도록 구성된 리플레이 로직을 더 포함하는 것을 특징으로 하는 비일시적인 컴퓨터 판독가능 기록매체. - 제16항에 있어서,
상기 반도체 디바이스는, 균등 알고리즘, 라운드-로빈 중재, 에이지-기반 중재를 이용하여, 리플레이될 자격이 있는 복수의 스토어 명령들 중에서 스토어 명령을 선택하도록 구성된 중재 유닛 및 멀티플렉서를 더 포함하는 것을 특징으로 하는 비일시적인 컴퓨터 판독가능 기록매체.
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 KR20150082239A (ko) | 2015-07-15 |
KR102199342B1 true 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)
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 (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 (18)
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 |
GB0407384D0 (en) * | 2004-03-31 | 2004-05-05 | Ignios Ltd | Resource management in a multicore processor |
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 |
US20070186049A1 (en) * | 2006-02-03 | 2007-08-09 | International Business Machines Corporation | Self prefetching L2 cache mechanism for instruction lines |
US20070186050A1 (en) * | 2006-02-03 | 2007-08-09 | International Business Machines Corporation | Self prefetching L2 cache mechanism for data 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 | 杭州中天微系统有限公司 | 非阻塞发射和执行的存储器访问执行装置 |
-
2012
- 2012-11-02 US US13/667,095 patent/US9361103B2/en active Active
-
2013
- 2013-10-31 EP EP13795046.5A patent/EP2915039B1/en active Active
- 2013-10-31 CN CN201380057123.2A patent/CN104756070B/zh active Active
- 2013-10-31 KR KR1020157010983A patent/KR102199342B1/ko active IP Right Grant
- 2013-10-31 JP JP2015540790A patent/JP6196315B2/ja active Active
- 2013-10-31 WO PCT/US2013/067848 patent/WO2014071059A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
---|---|
EP2915039B1 (en) | 2019-08-21 |
US20140129776A1 (en) | 2014-05-08 |
EP2915039A1 (en) | 2015-09-09 |
KR20150082239A (ko) | 2015-07-15 |
WO2014071059A1 (en) | 2014-05-08 |
JP6196315B2 (ja) | 2017-09-13 |
CN104756070B (zh) | 2017-11-24 |
CN104756070A (zh) | 2015-07-01 |
JP2015533442A (ja) | 2015-11-24 |
US9361103B2 (en) | 2016-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11379234B2 (en) | Store-to-load forwarding | |
US9448936B2 (en) | Concurrent store and load operations | |
US8713263B2 (en) | Out-of-order load/store queue structure | |
US10303480B2 (en) | Unified store queue for reducing linear aliasing effects | |
US7831812B2 (en) | Method and apparatus for operating an age queue for memory request operations in a processor of an information handling system | |
US8713259B2 (en) | Method and apparatus for reacquiring lines in a cache | |
US9213640B2 (en) | Promoting transactions hitting critical beat of cache line load requests | |
US8453161B2 (en) | Method and apparatus for efficient helper thread state initialization using inter-thread register copy | |
US20140129806A1 (en) | Load/store picker | |
US20140375658A1 (en) | Processor Core to Graphics Processor Task Scheduling and Execution | |
US20130262780A1 (en) | Apparatus and Method for Fast Cache Shutdown | |
US20130346683A1 (en) | Cache Sector Dirty Bits | |
US9335999B2 (en) | Allocating store queue entries to store instructions for early store-to-load forwarding | |
US9104593B2 (en) | Filtering requests for a translation lookaside buffer | |
US20120110304A1 (en) | Pipelined serial ring bus | |
US8595468B2 (en) | Reverse simultaneous multi-threading | |
US9189417B2 (en) | Speculative tablewalk promotion | |
US9286233B2 (en) | Oldest operation translation look-aside buffer | |
KR102199342B1 (ko) | 스토어 리플레이 정책 | |
JP7092783B2 (ja) | ペンディング中のロード及びストアの個別トラッキング | |
CN111095228A (zh) | 具有一个存储器通道的第一启动 | |
US10747535B1 (en) | Handling non-cacheable loads in a non-coherent processor | |
US20210132985A1 (en) | Shadow latches in a shadow-latch configured register file for thread storage |
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 |