KR20160086758A - 프로그래머블 로드 리플레이 억제 메커니즘 - Google Patents
프로그래머블 로드 리플레이 억제 메커니즘 Download PDFInfo
- Publication number
- KR20160086758A KR20160086758A KR1020157032423A KR20157032423A KR20160086758A KR 20160086758 A KR20160086758 A KR 20160086758A KR 1020157032423 A KR1020157032423 A KR 1020157032423A KR 20157032423 A KR20157032423 A KR 20157032423A KR 20160086758 A KR20160086758 A KR 20160086758A
- Authority
- KR
- South Korea
- Prior art keywords
- load
- core
- microcommand
- bus
- replay
- Prior art date
Links
- 230000007246 mechanism Effects 0.000 title description 12
- 238000000034 method Methods 0.000 claims description 37
- 230000001419 dependent effect Effects 0.000 claims description 28
- 230000002401 inhibitory effect Effects 0.000 claims 1
- 230000015654 memory Effects 0.000 abstract description 34
- 238000010586 diagram Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 9
- 230000008707 rearrangement Effects 0.000 description 9
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 8
- 230000001133 acceleration Effects 0.000 description 7
- 238000001514 detection method Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 4
- 239000003638 chemical reducing agent Substances 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004883 computer application Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 241001590553 Nomis Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011982 device technology Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000012776 electronic material Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000001459 lithography Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000010200 validation analysis 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- 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/3824—Operand accessing
-
- 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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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
- 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/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Microcomputers (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
제 1 및 제 2 예약 스테이션을 포함하는 장치. 로드 마이크로 명령어가 온-코어 캐시 메모리와는 다른 규정된 리소스로부터 오퍼랜드를 검색하도록 지시된 특정 로드 마이크로 명령어라면, 제 1 예약 스테이션은 로드 마이크로 명령어를 디스패치하고, 홀드 버스 상에 나타낸다. 제 2 예약 스테이션은 홀드 버스에 결합되고, 제 1 로드 마이크로 명령어의 디스패치에 이어서 다수의 클록 사이클 후에 실행 동안 로드 마이크로 명령어에 의존해서 하나 이상의 더 새로운 마이크로 명령어를 디스패치하고, 그리고 로드 마이크로 명령어가 특정 로드 마이크로 명령어임이 홀드 버스 상에 나타나면, 로드 마이크로 명령어가 상기 오퍼랜드를 검색할 때까지 제 2 예약 스테이션은 하나 이상의 더 새로운 마이크로 명령어의 디스패치를 정지하도록 구성된다. 복수의 비코어 리소스는 시작 시에, 복수의 특정 로드 명령어를 결정하도록 퓨즈 어레이에 접근하는, 비순차 프로세서에 대응하는 복수의 특정 로드 명령어를 저장하도록 구성된 퓨즈 어레이를 포함한다.
Description
관련 출원에 대한 상호 참조
본 출원은 각각이 공통 양수인 및 공통 발명자를 갖는 다음의 공동-계류중인 특허 출원에 관련된다.
본 발명은 일반적으로 마이크로일렉트로닉스의 분야, 그리고 특히 비순차 프로세서에서 로드 리플레이를 감소시키는 파워 절약 메커니즘에 관한 것이다.
집적 디바이스 기술은 지난 40년 동안 기하급수적으로 진보했다. 더 구체적으로 4-비트로 시작하는 마이크로프로세서 필드, 단일 명령어, 10-마이크로미터 디바이스에 관한 것이고, 반도체 제조 기술에서 진보는 설계자가 아키텍쳐 및 밀도의 관점에서 더 복잡한 디바이스를 더 많이 제공하는 것을 가능하게 했다. 80년대와 90년대에 단일 다이 상에 수백만 트랜지스터를 포함하는 소위 파이프라인 마이크로프로세서 및 슈퍼스칼라 마이크로프로세서가 개발되었다. 그리고 이제 20년 후에, 단일 다이 상에 수십억 개의 트랜지스터를 갖고 데이터의 처리를 위해 다중 마이크로프로세서 코어를 포함하는 64-비트, 32-나노미터 디바이스가 생산될 것이다.
오늘날 다중코어 프로세서에서 명령어 병행성의 사용에 더해서, 비순차 실행 메커니즘 역시 일반적이다. 비순차 실행 원칙에 따라서, 명령어는 실행 유닛에 의한 실행 동안 예약 스테이션에서 대기되고, 더 오래된 명령어의 실행의 결과로서 오퍼랜드 상에 대기하는 명령어들만이 예약 스테이션에 유지되고; 오퍼랜드 상에 대기하지 않는 명령어는 실행 동안 디스패치된다. 실행에 이어서, 결과가 대기되고 적절한 순서로, 일반적으로 퇴거 상태로 불리는 프로세서 단계에서 레지스터에 되돌려진다. 그렇기 때문에, 명령어는 원래 프로그램 순서를 벗어나 실행된다.
비순차 실행은 그렇지 않으면 대기할 수 있는 실행 유닛이 더 오래된 명령어가 오퍼랜드를 기다리는 동안 더 새로운 명령어를 실행하도록 사용될 수 있기 때문에 현저한 처리율 개선을 제공한다. 그럼에도, 해당 기술분야의 당업자는 명령어가 항상 성공적으로 실행하지 않고, 결과적으로, 주어진 명령어가 성공적으로 실행하지 않을 때, 그 명령어 및 그 명령어보다 더 새로운 모든 명령어가 다시 실행되어야 한다는 것을 인지할 것이다. 오늘날의 프로세서에서의 메커니즘이 필수적으로 현재 실행을 정지시켜야 하고, 기계 상태를 명령어가 비성공적으로 실행되기 직전의 지점으로 복구시키며, 비성공적으로 실행된 명령어의 디스패치 전에 디스패치되거나 디스패치되지 않을 수 있는 모든 더 새로운 명령어를 따라 비성공적으로 실행된 명령어를 반복할 수 있기 때문에, 이러한 개념은 "리플레이"로서 알려져 있다.
그러나 리플레이는 예외적인 경우이고, 리플레이의 성능 효과는 매우 자주 미미하다. 그러나, 오퍼랜드가 이용가능할 때까지 예약 스테이션에서 명령어를 유지하는 성능 효과가 현저하고, 마이크로프로세서 설계자는 오퍼랜드가 실행 직전에 이용가능하게 될 높은 가능성이 있을 때 특정 명령어가 디스패치되는 것을 허용하는 가속화 기법을 개발했다. 이들 특정 명령어는 디스패치될 뿐만아니라, 메커니즘은 제때에 요구되는 오퍼랜드를 제공하도록 제 위치에 놓인다.
본 출원은 온-코어 캐시 메모리에 잔류할 높은 가능성이 있는 것으로 추정되는 오퍼랜드를 요구하는 더 새로운 명령어가 실행이 캐시로부터 오퍼랜드의 검색으로 유도하는 로드 명령어의 디스패치 후에 특정 수의 클록 사이클에 이어서 디스패치되는 하나의 그러한 가속화 기법을 다룬다. 따라서, 로드 명령어가 디스패치될 때, 오퍼랜드 상에 대기하는 더 새로운 명령어는 특정 수의 클록 사이클이 발생될 때까지 각각의 예약 스테이션에 정지되고, 그런 후에 더 새로운 명령어는 요구되는 오퍼랜드가 이용가능하게 되는 높은 확실성으로 실행 동안 디스패치된다.
오퍼랜드를 얻기 위한 특정 수의 사이클보다 더 오래 걸릴 다수의 로드 명령어가 있다는 것이 분명함에도, 위에 언급된 가속화 기법의 이용으로부터 초래하는 성능 개선은 매우 상당해서 마이크로프로세서 아키텍쳐는 일반적으로 보드를 가로질러 모든 로드 명령어에 그 기법을 적용하고(예, I/O로부터 로드, 붙잡을 수 없는 로드, 인터럽트 레지스터로부터 로드, 특수한 로드 등), 따라서 오퍼랜드가 이용가능할 수 있다는 기대에서 디스패치된 모든 더 새로운 명령어의 리플레이를 요구한다. 이러한 로드 가속화로 기법으로부터 초래하는 더 많은 성능 개선은 드문 리플레이에 의해 발생된 성능 페널티를 상충한다.
그러나 멀티-코어 프로세서 기술이 향상되어감에 따라서, 설계자는 이제 드물게 접근되는, 레벨 2(L2) 캐시, 인터럽트 제어기, 퓨즈 어레이 등과 같은, 특정 프로세서 리소스가 코어의 각각 내에 복제되기보다는 멀티-코어 프로세서 다이의 공통 영역에서의 배치에 더 잘 적합하다는 것을 발견할 것이다. 그렇기 때문에, 위에 언급된 이들과 같은 리소스는 프로세서 코어에 의해 공유된다. 해당 기술분야의 당업자는 오프-코어 리소스(퓨즈 어레이로 불림)로부터 오퍼랜드를 로드하는 것이 온-코어 리소스(L1 캐시로 불림)로부터 로드하기 위해 요구되는 것보다 실질적으로 더 오래 걸린다는 것을 인지할 것이다. 그리고 위의 가속화 기법 하에 디스패치된 더 새로운 명령어의 리플레이를 수행해야만 하는 결과로서 발생된 성능 페널티가 상당하지 않음에도, 많은 수의 명령어가 반복될 것임이 사실상 확실한 조건 하에 실행되기 때문에 파워 이용 효과가 두드러진다는 것이 본 발명자에 의해 관찰되었다. 그리고 이들 명령어의 최초 실행은 필수적으로 파워를 낭비하고, 따라서 배터리 수명, 열 분포, 및 신뢰성의 관점에서 불리하다.
그러므로 필요한 것은 요구되는 리플레이의 수를 감소시키는 것에 의해 프로세서에서 파워가 절약되는 것을 가능하게 하는 장치 및 방법이다.
덧붙여, 필요한 것은 프로세서를 위해 파워 절약을 초래하는 비순차 프로세서에서 로드 리플레이 감소 메커니즘이다.
다른 출원 가운데, 본 발명은 위에 언급된 문제를 해결하는 것에 관한 것이고 선행 기술의 다른 문제, 불리함, 및 제한을 다룬다.
본 발명의 일 측면은 비순차 프로세서에서 리플레이를 감소시키기 위한 장치를 고려하는 것이다. 장치는 제 1 예약 스테이션 및 제 2 예약 스테이션을 포함한다. 제 1 예약 스테이션은 제 1 로드 마이크로 명령어를 디스패치하도록 구성되고, 제 1 로드 마이크로 명령어가 온-코어 캐시 메모리와는 다른 규정된 리소스로부터 오퍼랜드를 검색하도록 지시된 특정 로드 마이크로 명령어라면, 홀드 버스를 검출하고 나타내도록 구성된다. 제 2 예약 스테이션이 홀드 버스에 결합되고, 제 1 로드 마이크로 명령어의 디스패치에 이어서 제 1 수의 클록 사이클 후에 실행 동안 제 1 로드 마이크로 명령어에 따라 하나 이상의 더 새로운 마이크로 명령어를 디스패치하도록 구성되고, 그리고 제 1 로드 마이크로 명령어가 특정 로드 마이크로 명령어인 것이 홀드 버스에 나타나면, 제 2 예약 스테이션은 제 1 로드 마이크 명령어가 오퍼랜드를 검색할 때까지 하나 이상의 더 새로운 마이크로 명령어의 디스패치를 정지하도록 구성된다. 복수의 비코어 리소스는 시작 시에, 복수의 특정 로드 명령어를 결정하도록 퓨즈 어레이에 접근하는 비순차 프로세서에 대응하는 복수의 특정 로드 명령어를 저장하도록 구성된, 퓨즈 어레이를 포함한다.
본 발명의 또 다른 측면은 리플레이를 감소시키기 위한 장치를 이해한다. 장치는 복수의 코어를 갖는 멀티-코어 프로세서를 포함한다. 각각의 복수 코어는 제 1 예약 스테이션 및 제 2 예약 스테이션을 포함한다. 제 1 예약 스테이션은 제 1 로드 마이크로 명령어를 디스패치하도록 구성되고, 제 1 로드 마이크로 명령어가 온-코어 캐시 메모리와는 다른 규정된 리소스로부터 오퍼랜드를 검색하도록 지시된 특정 로드 마이크로 명령어라면 홀드 버스를 검출하고 나타내도록 구성된다. 제 2 예약 스테이션은 홀드 버스에 결합되고, 제 1 로드 마이크로 명령어의 디스패치에 이어서 제 1 수의 클록 사이클 후에 실행 동안 제 1 로드 마이크로 명령어에 따라 하나 이상의 더 새로운 마이크로 명령어를 디스패치하도록 구성되고, 그리고 제 1 로드 마이크로 명령어가 특정 로드 마이크로 명령어임이 홀드 버스 상에 나타나면, 제 2 예약 스테이션은 제 1 로드 마이크로 명령어가 오퍼랜드를 검색할 때까지 하나 이상의 더 새로운 마이크로 명령어의 디스패치를 정지하도록 구성된다. 복수의 비코어 리소스는 시작 시에, 복수의 특정 로드 명령어를 결정하도록 퓨즈 어레이에 접근하는 멀티-코어 프로세서에 대응하는 복수의 특정 로드 명령어를 저장하도록 구성된, 퓨즈 어레이를 포함한다.
본 발명의 또 다른 측면은 비순차 프로세서에서 리플레이를 감소시키기 위한 방법을 고려한다. 그 방법은: 비순차 프로세서에 대응하는 복수의 특정 로드 명령어를 저장하도록 구성된, 퓨즈 어레이를 포함하는, 복수의 비코어 리소스를 배치하는 단계; 제 1 예약 스테이션을 통해, 제 1 로드 마이크로 명령어를 디스패치하고, 제 1 로드 마이크로 명령이 온-코어 캐시 메모리와는 다른 규정된 리소스로부터 오퍼랜드를 검색하도록 지시된 특정 로드 마이크로 명령어라면, 홀드 버스 상에 검출하고 나타내는 단계; 및 홀드 버스에 결합된 제 2 예약 스테이션을 통해, 제 1 로드 마이크로 명령어의 디스패치에 이어서 제 1 수의 클록 사이클 후에 실행 동안 제 1 로드 마이크로 명령어에 따라서 하나 이상의 더 새로운 마이크로 명령어를 디스패치하는 단계를 포함하고, 그리고 제 1 로드 마이크로 명령어가 특정 로드 마이크로 명령어인 것이 홀드 버스 상에 나타나면, 제 1 로드 마이크로 명령어가 오퍼랜드를 검색할 때까지 하나 이상의 더 새로운 마이크로 명령어의 디스패치를 정지시킨다.
산업적 이용가능성에 관해서, 본 발명은 범용 또는 특수 목적 컴퓨팅 디바이스에 사용될 수 있는 마이크로프로세서 내에 실행된다. 본 발명은 비순차 프로세서에서 로드 리플레이를 감소시키는 파워 절약 메커니즘을 제공한다.
본 발명의 이러한 그리고 다른 목적, 특징, 및 이점이 다음의 설명, 및 첨부된 도면에 관련해서 더 잘 이해될 것이고, 여기서:
도 1은 코어의 각각의 외부에 배치된 공통 리소스를 사용하는 오늘날의 멀티-코어 프로세서를 도시하는 블록도이고;
도 2는 도 1의 오늘날의 코어의 각각에서 예시적인 코어 단계를 도시하는 블록도이며;
도 3은 비코어 리소스로부터 로드를 위한 파워 절약 메커니즘을 갖는 본 발명에 따른 멀티-코어 프로세서를 도시하는 블록도이고;
도 4는 도 3의 코어의 각각에서 예시적인 코어 단계를 나타내는 블록도이며;
도 5는 도 4의 비코어 정지 부재의 세부사항을 도시하는 블록도이고;
도 6은 도 4의 예약 스테이션의 각각의 세부사항을 나타내는 블록도이며; 그리고
도 7은 도 4의 비코어 미스 부재의 세부사항을 나타내는 블록도이다.
도 1은 코어의 각각의 외부에 배치된 공통 리소스를 사용하는 오늘날의 멀티-코어 프로세서를 도시하는 블록도이고;
도 2는 도 1의 오늘날의 코어의 각각에서 예시적인 코어 단계를 도시하는 블록도이며;
도 3은 비코어 리소스로부터 로드를 위한 파워 절약 메커니즘을 갖는 본 발명에 따른 멀티-코어 프로세서를 도시하는 블록도이고;
도 4는 도 3의 코어의 각각에서 예시적인 코어 단계를 나타내는 블록도이며;
도 5는 도 4의 비코어 정지 부재의 세부사항을 도시하는 블록도이고;
도 6은 도 4의 예약 스테이션의 각각의 세부사항을 나타내는 블록도이며; 그리고
도 7은 도 4의 비코어 미스 부재의 세부사항을 나타내는 블록도이다.
본 발명의 예시적인 그리고 도시하는 실시예가 아래에 설명된다. 해당 기술분야의 당업자는 임의의 그러한 실제 실시예의 전개에서, 다수의 실행 특정 결정이 하나의 실행에서 또 다른 실행으로 변하는, 시스템 관련된 및 비지니스 관련된 제한을 따르는 바와 같이, 특정 목표를 달성하도록 이루어진다는 것을 인지할 것이기 때문에, 명백함의 관점에서, 실제 실행의 모든 특징이 본 명세서에 설명되지 않는다. 또한, 그러한 개발 노력은 복잡하고 시간 소모적이지만, 그럼에도 본 개시의 혜택을 갖는 해당 기술분야의 당업자가 맡는 과정일 수 있다는 것이 인지될 것이다. 바람직한 실시예에 대한 다양한 수정이 해당 기술분야의 당업자에게 명백할 것이고, 여기에 정의된 일반적인 원칙이 다른 실시예에 적용될 수 있다. 그러므로, 본 발명은 여기에 도시되거나 설명된 특정 실시예로 한정되도록 의도되지 않지만, 여기 개시된 원칙 및 신규한 특징에 일치하는 가장 넓은 범위에 부합해야 한다.
본 발명은 이제 첨부된 도면을 참조하여 설명될 것이다. 다양한 구조, 시스템, 및 디바이스는 설명의 목적을 위해서만 그리고 해당기술분야에 공지된 세부사항으로 본 발명을 모호하게 하지 않도록 도면에 개략적으로 나타난다. 그럼에도, 첨부된 도면은 본 발명의 도시적인 실시예를 설명하고 나타내도록 포함된다. 여기 사용된 단어 및 어구는 해당 기술분야의 당업자에 의해 이들 단어 및 어구의 이해에 일치하는 의미를 갖는 것으로 이해되고 해석되어야만 한다. 용어 또는 어구의 특별한 정의(즉, 해당기술분야의 당업자에 의해 이해되는 통상의 관례적인 의미와는 다른 정의)는 여기 용어 또는 어구의 일관된 사용에 의해 포함되도록 의도된다. 용어 또는 어구가 특별한 의미(즉, 당업자에 의해 이해되는 바와 다른 의미)를 갖도록 의도되는 한에는, 그러한 특별한 정의는 용어 또는 어구에 관한 특별한 정의를 직접적으로 그리고 분명히 제공하는 정의 방식으로 명세서에서 강조하여 제시될 것이다.
정의
집적 회로(IC): 반도체 물질, 일반적으로 실리콘의 작은 피스 상에 제조된 전자 회로의 셋트. IC는 또한 칩, 마이크로칩, 또는 다이로서 언급된다.
중앙 처리 장치(CPU): 산술 연산, 논리 연산, 및 입력/출력 연산을 포함하는 데이터 상에 연산을 수행하는 것에 의해 컴퓨터 프로그램(또한 "컴퓨터 응용" 또는 "응용"으로 공지됨)의 명령어를 실행하는 전자 회로(즉, "하드웨어").
마이크로프로세서: 단일 집적 회로 상에 CPU로서 기능하는 전자 디바이스. 마이크로프로세서는 입력으로서 디지털 데이터를 수신하고, 메모리(온-다이 또는 오프-다이)로부터 불러낸 명령어에 따라 데이터를 처리하며, 그리고 출력으로서 명령어에 의해 규정된 연산의 결과를 발생시킨다. 범용 마이크로프로세서는 데스크탑, 모바일, 또는 태블릿 컴퓨터에서 사용될 수 있고, 그리고 계산, 텍스트 편집, 멀티미디어 디스플레이, 및 인터넷 브라우징과 같은 용도로 사용된다. 마이크로프로세서는 또한 어플라이언스, 휴대폰, 스마트폰, 및 산업적 제어 디바이스를 포함하는 다양한 디바이스를 제어하기 위해 임베디드된 시스템에 배치될 수 있다.
멀티-코어 프로세서 : 또한 멀티-코어 마이크로프로세서로서 공지된, 멀티-코어 프로세서는 단일 집적 회로 상에 제조된 다중 CPU("코어")를 갖는 마이크로프로세서이다.
명령어 셋트 아키텍쳐 ( ISA ) 또는 명령어 셋트 : 데이터 타입, 명령어, 레지스터, 어드레싱 모드, 메모리 아키텍쳐, 인터럽트 및 예외 핸들링, 및 입력/출력을 포함하는 프로그래밍에 관련된 컴퓨터 아키텍쳐의 일부. ISA는 연산코드의 셋트(즉, 기계 언어 명령어) 및 특정 CPU에 의해 실행된 원시 커맨드의 사양을 포함한다.
x86-호환 마이크로프로세서: x86 ISA에 따라 프로그램된 컴퓨터 어플리케이션을 실행할 수 있는 마이크로프로세서.
마이크로코드 : 복수의 마이크로 명령어를 언급하도록 사용된 용어. 마이크로 명령어(또한 "원시 명령어"로 언급됨)는 마이크로프로세서 서브-유닛이 실행하는 레벨에서 명령어이다. 예시적인 서브유닛은 정수 유닛, 부동소수점 유닛, 멀티미디어(MMX) 유닛, 및 로드/저장 유닛을 포함한다. 예를 들어, 마이크로 명령어는 명령어 축약형 셋트 컴퓨터(RISC) 마이크로프로세서에 의해 직접 실행된다. x86-호환 마이크로프로세서와 같은 복잡한 명령어 셋트 컴퓨터(CISC) 마이크로프로세서에 있어서, x86 명령어는 연관된 마이크로 명령어로 변환되고, 연관된 마이크로 명령어는 서브-유닛 또는 CISC 마이크로프로세서 내의 서브-유닛에 의해 직접 실행된다.
퓨즈: 필라멘트를 가로질러 전압을 그리고/또는 필라멘트를 통해 전류를 인가하는 것에 의해 선택 위치에서 차단될 수 있는 일반적으로 필라멘트로서 배열된 도전성 구조. 퓨즈는 모든 잠재적 프로그래머블 영역에서 필라멘트를 생성하기 위한 공지된 제조 기법을 사용하여 다이 토포그래피를 가로질러 특정된 영역에 증착될 수 있다. 퓨즈 구조는 다이 상에 배치된 대응하는 디바이스의 요구된 프로그램가능성을 제공하기 위해 제조에 이어서 블로우된다(또는 블로우되지 않는다).
비코어 리소스로부터 로드 동작을 수행하는 오늘날의 멀티-코어 프로세서 내에 사용된 멀티-코어 프로세서 및 연관된 기법에서 로드 메커니즘에 관한 위의 배경기술 논의의 관점에서, 오늘날의 기법의 제한 및 불리함에 관한 논의는 도 1-2를 참조하여 제시될 것이다. 이에 이어서, 본 발명의 논의는 도 3-7을 참조하여 제시될 것이다.
도 1로 돌아가서, 코어(101)의 각각의 외부에 배치된 공통 리소스를 사용하는 오늘날의 멀티-코어 프로세서를 도시하는 블록도(100)가 제시된다. 다이어그램(100)은 4개의 프로세서 코어(101)가 배치된 디바이스 다이(110)를 나타낸다. 본 발명자는 명백함의 목적을 위해, 쿼드-코어(즉, 4개의 코어(101)) 멀티-코어 마이크로프로세서가 여기에 설명될 것이고, 그러나, 본 발명의 원칙 및 특징이 다른 수의 코어(101)를 갖는 멀티-코어 마이크로프로세서에 적용될 수 있다.
해당 기술분야의 당업자는 디자인 및/또는 비지니스 관련된 이유 때문에, 설계자가 코어(101) 가운데 특정 프로세서 리소스를 공유하도록 선택할 수 있다는 것을 인지할 것이다. 성능 동기 때문에, 이들 공유된 리소스는 코어(101)와 동일한 다이(110) 상에 일반적으로 배치되고, 그들은 고속 버스(111-114)를 통해 코어(101)의 각각에 의해 접근된다. 따라서, 다이어그램(100)은 L2 캐시(103), 랜덤 액세스 메모리(RAM)(104), 버스 유닛(105), 입력/출력 유닛(106), 향상된 프로그래머블 인터럽트 제어기(APIC)(107), 및 퓨즈 어레이(108)와 같은 예시적인 공유된 리소스를 나타낸다. 집합적으로, 코어(101)와 동일한 다이(110) 상에 배치되지만, 코어(101)의 외부에 있는 이들 공유된 리소스(103-108)는 이후에 비코어 리소스(102)로서 언급될 것이다. 따라서, 버스 B1(111)은 비코어(102)로의 코어1(101) 접근을 가능하게 한다. 버스 B2(112)는 비코어(102)로의 코어2(101) 접근을 가능하게 한다. 버스 B3(113)는 비코어(102)로의 코어3(101) 접근을 가능하게 한다. 그리고 버스 B4(114)는 비코어(102)로의 코어4(101) 접근을 가능하게 한다. 일반적인 구성에서, 멀티-코어 프로세서는 시스템 메모리(메모리 버스 MEM을 통해 접근됨), 입력/출력 부재(버스 I/O를 통해 접근됨), 및 시스템 제어 부재(버스 CTRL을 통해 접근됨)와 같은 디바이스 다이(110)의 외부의 다른 부재에 결합된다.
동작에서, 운영 체제 제어 하에, 코어(101)의 각각은 시스템 메모리로부터 불러온 연관된 명령어를 실행할 수 있고, 의도된 어플리케이션에 대응하는 오퍼랜드 상에 연산을 수행할 것이다. 하나 이상의 코어(101)는 하나 이상의 비코어 리소스(102)에 대한 접근을 요구할 수 있고 대응하는 버스 B1-B4를 통해 제어된 방식으로 하나 이상의 비코어 리소스(102)에 접근할 것이다. 예를 들어, 파워 시작 동안, 하나 이상의 코어(101)는 구성 파라미터를 검색하도록 퓨즈 어레이(108)로부터 로드 동작을 수행할 수 있거나, 또는 패치 정보를 검색하도록 RAM(104)으로부터 로드를 수행할 수 있다. 정상 동작 동안, 코어(101)는 온-코어 캐시(예, L1 캐시)에 존재하지 않는 메모리 오퍼랜드를 판독하고/작성하도록 L2 캐시(103)에 접근할 수 있다. 코어(101)는 시스템 메모리로부터 판독하고/그것에 작성하도록 버스 유닛(105)에 접근할 수 있거나, 또는 I/O 버스를 통해 I/O 동작을 수행하도록 I/O 유닛(106)을 사용할 수 있다. 코어(101)는 또한 인터럽트 동작을 수행하도록 APIC(107)에 접근할 수 있다.
이제 도 2에 대해 언급하면서, 도 1의 오늘날의 코어(101)의 각각에서 예시적인 코어 단계를 나타내는 블록도가 제시된다. 다이어그램은 다이(110) 상에 배치된 프로세서 코어(201)를 나타낸다. 코어(201)는 버스(241)를 통해 변환기 단계(212)에 결합된 페치 단계(211)를 포함한다. 변환기 단계(212)는 버스(242)를 통해 재명명 단계(213)에 결합된다. 재명명 단계(213)는 버스(243)를 통해 리플레이 mux 단계(214)에 결합된다. 리플레이 mux(214)는 예약 버스(244)를 통해 복수의 예약 스테이션 RS1-RSN 221.1-221.N 및 로드 예약 스테이션 RSL 221.L에 결합된다. 예약 스테이션 RS1-RSN, RSL의 각각은 대응하는 디스패치 버스 252.1-251.N, 251.L을 통해 대응하는 실행 유닛 EU1-EUN 222.1-222.N, EUL 222.L에 결합된다. 예약 스테이션 RS1-RSN, RSL은 레지스터 버스(245)를 통해 레지스터 파일(226)에 결합된다.
본 발명자는 실행 유닛 EUL의 외부에, 나머지 실행 유닛 EU1-EUN은 정수 유닛, 부동 소수점 유닛, 멀티미디어 유닛, 및 저장 유닛과 같은 오늘날의 슈퍼스칼라 프로세서에 일반적인 유닛을 포함할 수 있다. 본 출원은 도 1을 참조하여 위에 설명된 바와 같이, 1차 함수가 시스템 메모리, 시스템 I/O, 및 비코어 리소스(230)와 같은 다양한 리소스로부터 오퍼랜드를 로드하는 것인 로드 유닛 222.L로서 도시된 실행 유닛 EUL에 관한 것이다.
따라서, 로드 유닛 EUL이 버스(254)를 통해 L1 캐시(223)에 그리고 버스(256)를 통해 비코어(230)에 결합된다. 대개의 메모리 오퍼랜드에 있어서, 로드 유닛 222.L이 L1 캐시(223)에 처음 접근한다. 로드가 L1 캐시(223)에서 놓친다면, 그때 로드 유닛 222.L은 비코어(230)에서 L2 캐시에 접근해야만 한다. 실행 유닛 EU1-EUN, EUL은 또한 버스(252)를 통해 재배열 버퍼(224)에 결합된다. 부가적으로, 로드 유닛 EUL은 버스 미스(253)를 통해 재배열 버퍼(224)에 결합된다. 재배열 버퍼(224)는 버스 리플레이(258)를 통해 리플레이 mux(214)에 그리고 버스(257)를 통해 퇴거 유닛(225)에 결합된다. 퇴거 유닛(225)은 라이트백 WB 버스(255)를 통해 레지스터 파일(226)에 결합된다.
도 2에 도시된 코어 단계는 단지 오늘날의 슈퍼스칼라 또는 "비순차" 프로세서 코어(201)의 예시이고, 본 발명을 명백히 교시하는 목적을 위해 제시된다. 해당 기술분야의 당업자는 프로세서 코어 단계가 아키텍쳐 및 의도된 어플리케이션에 따라 변할 수 있다는 것을 인지할 것이다.
동작에서, 프로그램 명령어(미도시)는 페치 유닛(211)에 의해 메모리로부터 불려진다. x86-호환 프로세서 코어(201)에서, 이들 프로그램 명령어는 x86 ISA로 거동한다. 프로그램 명령어는 버스(241) 상의 변환기(212)에 순차로 제공된다. 변환기(212)는 프로그램 명령어에 의해 특정된 동작을 수행하기 위해 대응하는 실행 유닛 EU1-EUN, EUL에서 하위 동작을 지시하는 하나 이상의 마이크로 명령어로 프로그램 명령어를 변환한다. 그런 후에 마이크로 명령어가 버스(242) 상의 재명명 유닛(213)에 제공되고, 마이크로 명령어의 일부에 특정된 아키텍쳐적 레지스터(즉, 오퍼랜드 레지스터 위치)는 독립적인 마이크로 스트림에 대한 실행 병행성을 증가시키기 위해 프로세서 코어(201)에서 하드웨어 레지스터(미도시)에 재매핑된다. 재명명 유닛(213)은 또한 일련의 프로그램 순서에 따라 마이크로 명령어의 각각을 태그하고, 마이크로 명령어에서 소스 및 목적지 오퍼랜드 필드 역시 하나 이상의 오퍼랜드에 따라 더 새로운 마이크로 명령어의 태그로 태그된다. 그런 후에 재명명 마이크로 명령어는 버스(243) 상에 리플레이 mux(214)에 제공된다.
리플레이 mux(214)는 비순차 프로세서 코어(201)에서 여러 함수를 수행한다. 처음에, mux(214)는 실행 동안 적절한 실행 유닛 EU1-EUN, EUL을 결정하도록 재명명 마이크로 명령어의 각각에서 연산코드를 판독한다. 예를 들어, 재명명 정수 마이크로 명령어는 소위, EU1에 의해 실행될 수 있다. 부동 소수점 마이크로 명령어는 EU2에 의해 실행될 수 있다. 본 출원에 관련해서, 재명명 로드 마이크로 명령어는 로드 실행 유닛 EUL에 의해 실행될 수 있다. 따라서, 리플레이 mux(214)는 대응하는 실행 유닛 EU1-EUN, EUL에 디스패치를 대기하도록 하나 이상의 재명명 마이크로 명령어를 하나 이상의 예약 스테이션 RS1-RSN1, RSL에 제공한다.
예약 스테이션 RS1-RSN, RSL의 각각은 동작 동안 대기된 재명명 마이크로 명령어에 의해 요구된 오퍼랜드를 판독하도록 레지스터 파일(226)에 접근한다. 더 오래된 재명명 마이크로 명령어(즉, 재명명 마이크로 명령어는 더 오래된 재명명 마이크로 명령어를 따르지 않는다)의 태그로 태그되지 않은 재명명 마이크로 명령어는 실행 동안 대응하는 실행 유닛 EU1-EUN, EUL에 즉시 디스패치된다. 의존적 재명명 마이크로 명령어(즉, 아직 실행을 완료하지 않은 더 오래된 재명명 마이크로 명령어의 태그를 포함하는 재명명 마이크로 명령어)는 일반적으로 태그된 의존적 오퍼랜드가 이용가능한 시간까지 예약 스테이션 RS1-RSN, RSL에 의해 유지된다. 태그된 의존적 오퍼랜드가 이용가능할 때, 그들은 의존적 재명명 마이크로 명령어에 제공되고, 마이크로 명령어는 실행 동안 대응하는 실행 유닛 EU1-EUN, EUL에 디스패치된다. 실행 유닛 EU1-EUN, EUL은 또한 그들이 마이크로 명령어를 실행하지 않을 때 파워 절약 기능을 수행할 수 있다. 일반적으로, 실행 유닛 EU1-EUN, EUL의 내부의 클록은 상당한 파워를 절약하는 마이크로 명령어를 실행하지 않을 때 정지된다.
재명명 마이크로 명령어 및 결과는 버스(252)를 통해 재배열 버퍼(224)에 제공된다. 모든 재배열 버퍼 위치는 프로그램 순서로 다시 재명명 마이크로 명령어의 비순차 실행으로부터 초래한다. 즉, 재명명 프로그램된 레지스터로부터의 결과는 대응하는 아키텍쳐 레지스터에 다시 재매핑되고 결과는 실행의 특정 프로그램 순서에 따라 아키텍쳐 레지스터에서 진입을 위해 대기된다. 적절한 결과로 성공적으로 실행을 완료한 마이크로 명령어가 버스(257) 상의 퇴거 유닛(225)에 제공된다. 이들 퇴거된 마이크로 명령어의 결과는 WB 버스(255) 상의 레지스터 파일(226)에 다시 작성된다.
해당 기술분야의 당업자가 인지할 바와 같이, 프로그램 예외, 일반적인 인터럽트, I/O 인터럽트, 분기 예외, 및 그와 유사한 것과 같은 그러나 그들로 한정되지 않는 재명명 마이크로 명령어를 비성공적으로 실행하게 할 수 있는 다수의 조건이 있다. 재명명 버퍼가 성공적으로 실행되지 않는다고 재배열 버퍼가 결정할 때, 그때 실행 동안 디스패치된 모든 더 새로운 재명명 마이크로 명령어에 따라 재실행되어야만 한다("리플레이된다"). 따라서, 재배열 버퍼(224)는 리플레이 버스(258) 상에 성공적으로 실행된 재명명 마이크로 명령어의 태그를 제공하는 것에 의해 리플레이 이벤트를 시작한다.
비성공적으로 실행된 재명명 마이크로 명령어 태그가 리플레이 mux(214)에 제공될 때, 응답해서 리플레이 mux(214)는 태그가 리플레이(258) 상에 제공된 재명명 마이크로 명령어에서 시작하는 재명명 마이크로 명령어의 실행으로 거동하도록 기계 상태를 복구한다.
해당 기술분야의 당업자는 또한 성능을 개선하기 위해서, 마이크로프로세서 설계자는 종종 명령어를 실행하는 방법에 대해 가정한다는 것을 인지할 것이다. 예를 들어, 현저한 백분율의 분기가 취해지지 않을 것임이 해당 기술분야에 공지되어 있다. 따라서, 페치 유닛(211)은 그 가정에 따라 실행 동안 명령어를 대기하도록 구성될 수 있다. 분기가 취해지지 않는다면, 그때 전체 실행 속도가 개선된다. 분기가 취해지면, 그때 분기보다 더 오래된 모든 명령어가 취해진 프로그램 경로로부터의 명령어로 대체되어야만 한다.
마이크로프로세서 설계자가 하는 또 다른 가정은 로드 마이크로 명령어가 클록 사이클의 특정된 수에서 L1 캐시(223)를 히트한다는 것이고, 이러한 가정은 L1 캐시 히트 통계, 소위 L1 캐시(223)에 접근하는 설계에 따라 요구된 클록 사이클의 수에 따라, 90퍼센트 히트율에 기반한다. 본 어플리케이션의 목적을 위해, L1 캐시(223)에 접근하는 4개의 클록 사이클이 걸리지만, 그러나 그러한 수는 산업적 목적을 위해 선택된다. 다른 수의 클록 사이클이 고려된다.
따라서, 예약 스테이션 RS1-RSN은 태그가 더 오래된 로드 명령어의 디스패치 후에 4개의 클록 사이클까지 더 오래된 로드 마이크로 명령어에 대응하는 재명명 마이크로 명령어를 정지시키고, 그런 후에 더 오래된 로드 마이크로 명령어가 4개의 클록 사이클 내의 L1 캐시(223)에 히트할 것이고 태그된 오퍼랜드가 준비될 것이라는 가정 하에 대응하는 실행 유닛 EU1-EUN에 재명명 마이크로 명령어를 디스패치하는 로직을 포함할 수 있다. 도 2에 미도시됨에도, 실행 유닛 EU1-EUN, EUL은 또한 로드 동작으로부터 이용가능할 수 있는 오퍼랜드에 접근할 수 있고 실행 하에 이들 오퍼랜드를 현재 마이크로 명령어에 제공한다. L1 캐시(223)에서 히트하는 로드에 대해, 그렇지 않으면 제공될 수 있는 것보다 훨씬 더 빠르게 완료를 통해 실행하는 디스패치된 의존적 더 새로운 마이크로 명령어에 제공된다. 그러나 L1 캐시에서 놓친 로드에 대해(90퍼센트 히트율 가정에 따라 대략적으로 10퍼센트의 시간), 로드의 성공적인 완료 후에, 히트의 가정 하에 디스패치된 모든 의존적인 더 새로운 마이크로 명령어가 리플레이되어야만 한다. 따라서, L1 캐시(232)에서 미스 시에, 로드 실행 유닛 EUL은 더 새로운 의존적인 명령어의 리플레이를 시작하는 버스 미스(253) 상의 놓친 로드 명령어의 태그를 나타내는 것에 의해 그러한 것을 재배열 버퍼(224)에 알릴 것이다.
그러한 방식은 대개의 오늘날의 캐시(223)가 매우 효과적이기 때문에, 성능 관점에서 굉장히 효과적이고, 따라서 추정된 캐시 접근 수의 클록 사이클(예, 4개의 클록 사이클)에 기반해서 로드 명령어의 디스패치 후에 다수의 클록 사이클 동안 로드 마이크로 명령어로부터 의존하는 모든 마이크로 명령어를 정지시키는 것이 관례이다. 의존적 마이크로 명령어는 각각의 예약 스테이션 RS1-RSN에서 정지되고, 그런 후에 로드 마이크로 명령어에 특정된 오퍼랜드가 L1 캐시(223)로부터 이용가능하다는 것이 가정될 때 디스패치된다. 일반적으로, 이러한 가속화 방식은 L1 캐시(223)와는 다른 리소스에 접근하는 로드 명령어를 포함하는, 모든 로드 명령어에 대해 사용된다. 이들 타입의 로드 명령어가 메모리 로드 명령어와 상대적으로 드물게 비교되기 때문에, 메모리와 다른 리소스에 접근하는 로드 명령어의 리플레이와 연관된 성능 효과가 일반적으로 허용된다. 그러한 바와 같이, 로드 마이크로 명령어가 성공적으로 실행하는(즉, "해소하는") 특정된 수의 클록 사이클(본 실시예에서 4개의 클록 사이클)보다 더 오래 걸릴 때, 그때 로드 실행 유닛 EUL은 버스 미스 상에 미스를 선언할 것이고, 따라서 로드의 완료 후에 의존적 더 새로운 마이크로 명령어가 반복되게 한다.
위의 기법은 지난 수년 동안 슈퍼스칼라 프로세서(201)의 성능을 개선하도록 잘 역할했지만, 본 발명자는 추가적인 도전이 도 1에 도시된 바와 같이, 멀티-코어 프로세서 구성에 적응될 때 나타난다는 것을 발견했다. 더 구체적으로, L1 캐시(223)로의 접근에 의해 지배된 구성에서 매우 효과적인 그러한 방식은 비코어 리소스(230)로의 접근 시간이 오늘날의 L1 캐시(223)의 것들과 비교될 때 매우 느리기 때문에, 비코어 리소스(230)로의 접근을 더 많이 이용하는 멀티-코어 프로세서 구성에 적용될 때 파워는 매우 효과적이지 않다.
이것이 의미하는 것은 퓨즈 어레이(108), 버스 유닛(105)(붙잡을 수 없는 로드에 있어서), APIC(107), I/O 유닛(106), 및 아마도 L2 캐시(103) 및 RAM(104)과 같은 비코어 리소스(230)에 구체적으로 지시된 임의의 로드 마이크로 명령어가 비코어 리소스(230)로부터 이들 로드의 태그를 갖는 의존적 더 새로운 마이크로 명령어의 리플레이를 초래할 것이라는 점이다. 그리고 본 발명자는 대단한 성능 히트는 아니지만, 로드 마이크로 명령어-반복되도록 보장됨-가 실행 유닛 EU1-EUN으로 디스패치될 수 있고, 따라서 그렇지 않으면 파워 관리 메커니즘에 의해 절약될 수 있는 파워를 사용하기 때문에, 이들 의존적 더 새로운 마이크로 명령어의 낭비된 최초 실행이 현저한 파워 소비를 초래한다는 것을 발견했다.
본 발명은 이제 도 3-7을 참조하여 논의되는 신규한 방식에 따라 로드 리플레이의 수를 감소시키는 것에 의해 비순차 멀티-코어 프로세서에서 파워를 절약하기 위한 장치 및 방법을 제공하는 것에 의해, 오늘날 로드 메커니즘 및 다른 것들의 위에 언급된 제한을 극복한다.
이제 도 3을 참조하여, 비코어 리소스로부터 로드를 위한 파워 절약 메커니즘을 갖는 본 발명에 따른 멀티-코어 프로세서를 특징으로 하는 블록도(300)가 제시된다. 다이어그램(300)은 4개의 프로세서 코어(301)가 배치된 디바이스 다이(310)를 나타낸다. 4개의 코어(301)는 본 발명을 명백하게 교시하는 목적을 위해서만 도시되고, 아래에 논의된 원칙 및 세부사항은 비코어 리소스로부터의 특정 로드 동작을 위한 접근 시간이 온-코어 캐시 접근을 위한 것보다 더 긴 임의의 수의 코어(301)를 갖는 프로세서에 적용될 수 있다는 것이 언급된다.
도 1의 다중-코어 프로세서와 같은, 본 발명에 따라 멀티-코어 프로세서는 일반적으로 코어(301)와 동일한 다이(310) 상에 배치된 비코어 리소스(302)일 수 있으며, 그리고 그들은 고속 버스(311-314)를 통해 코어(310)의 각각에 의해 접근된다. 따라서, 다이어그램(300)은 L2 캐시(303), 랜덤 액세스 메모리(RAM)(304), 버스 유닛(305), 입력/출력 유닛(306), APIC(307), 및 퓨즈 어레이(308)와 같은 그들로 한정되지 않는 예시적인 공유된 리소스를 나타낸다. 따라서, 버스 B1(311)은 비코어(302)로의 코어1(301) 접근을 가능하게 한다. 버스 B2(312)는 비코어(302)로의 코어2(301) 접근을 가능하게 한다. 버스 B3(313)는 비코어(302)에 대한 코어3(301) 접근을 가능하게 한다. 그리고 버스 B4(314)는 비코어(302)로의 코어4(301) 접근을 가능하게 한다. 일반적인 구성에서, 멀티-코어 프로세서가 시스템 메모리(메모리 버스 MEM을 통해 접근됨), 입력/출력 부재(버스 I/O를 통해 접근됨), 및 시스템 제어 부재(버스 CTRL을 통해 접근됨)와 같은 그러나 그들로 한정되지 않는 디바이스 다이(310)의 외부의 다른 부재(미도시)에 결합된다. 제어 부재는 PCI-e 부재, PCI 부재, USB 부재, 그래픽 어댑터, 코-프로세서, 및 인터-프로세서 통신 부재를 포함할 수 있지만, 그들로 한정되지 않는다.
도 1의 멀티-코어 프로세서와는 반대로, 본 발명에 따른 멀티-코어 프로세서는 코어(301)의 각각 내의 리플레이 리듀서 부재(320)를 포함한다. 일 실시예에서, 리플레이 리듀서(320)는 로드를 해소할 때까지 디스패치된 것으로부터 모든 더 새로운 의존적인 마이크로 명령어를 정지시키도록, 그리고 그렇지 않으면 리플레이 이벤트를 초래할 수 있는 임의의 표식 중 확인을 억제하도록 온-코어 캐시 메모리(미도시)와는 다른 리소스에 지시된 로드를 검출하도록 구성된다. 따라서, 코어(301) 내의 하나 이상의 실행 유닛(미도시)이 더 새로운 의존적 마이크로 명령어의 디스패치를 정지시키는 결과로서 파워 관리 모드에 진입하고, 따라서 그렇지 않으면 낭비될 수 있는 다이(310) 상의 파워를 절약할 수 있다.
동작에서, 운영 체제 제어 하의 코어(301)의 각각은 시스템 메모리로부터 불러낸 연관된 명령어를 실행하고, 의도된 어플리케이션에 대응하는 오퍼랜드 상에 동작을 수행할 것이다. 하나 이상의 코어(301)는 하나 이상의 비코어 리소스(302)로의 접근을 요구할 수 있고 대응하는 버스 B1-B4를 통해 제어된 방식으로 하나 이상의 비코어 리소스(302)에 접근할 것이다. 예를 들어, 파워 시작 동안, 하나 이상의 코어(301)는 구성 파라미터를 검색하도록 퓨즈 어레이(308)로부터 로드 동작을 수행할 수 있거나, 또는 마이크로코드 패치 및/또는 다른 구성 정보를 검색하도록 RAM(304)으로부터 로드를 수행할 수 있다. 정상 동작 동안, 코어(301)는 온-코어 캐시(예, L1 캐시)에 존재하지 않는 시스템 메모리로부터 캐시될 수 있는 메모리 오퍼랜드를 판독/작성하도록 L2 캐시(303)에 접근할 수 있다. 코어(301)는 시스템 메모리로부터 판독하고/그것에 작성하도록 버스 유닛(305)에 접근할 수 있거나, 또는 I/O 버스를 통해 I/O 동작을 수행하는 I/O 유닛(306)을 사용할 수 있다. 코어(302)는 제어 부재로부터/그것에 제어 데이터를 판독하고/작성하는 버스 유닛(305)에 접근할 수 있다. 코어(301)는 또한 인터럽트 동작을 수행하는 APIC(307)에 접근할 수 있다.
의존적인 더 새로운 마이크로 명령어 스트림의 리플레이를 초래하는, 비코어(302)로부터의 이들 로드의 결과로서 미스를 자동적으로 선언하기보다는, 리플레이 리듀서(320)는 로드를 해소할 때까지 의존적인 더 새로운 마이크로 명령어 스트림의 실행을 정지시킬 것이고, 따라서 실행 유닛 파워 관리 함수가 사용되는 것을 가능하게 한다. 일 실시예에서, 리플레이 리듀서(320)는 또한 비코어 리소스(302)에 구체적으로 지시되지 않지만, 그렇지 않으면 미스 지시를 야기하도록 보장된 다른 타입의 로드를 검출할 수 있다. 이들 다른 타입의 로드는 I/O 로드, 특정한 수의 사이클을 요구하는 로드, 제 2 레벨 어드레스 변환(즉, 내포된 페이징, x86 확장된 페이지 테이블 로드)과 연관된 이들과 같은 페이지 테이블 워크를 요구하는 것으로 공지된 로드, x86 특수 버스 사이클(예, 셧다운, 홀트, 플러쉬 등)의 실행으로부터 초래하는 로드, 및 붙잡을 수 없는 메모리 스페이스를 해소하거나 결합 공간을 작성하는 것으로 공지된 로드를 포함할 수 있지만, 그들로 한정되지 않는다. 다른 실시예는 완료하는 특정 수의 클록 사이클보다 더 오래 걸릴 상당한 가능성이 있는 임의의 타입의 로드 동작의 검출을 심사숙고한다.
도 4로 돌아가서, 도 3의 코어(301)의 각각에서 예시적인 코어 단계를 나타내는 블록도(400)가 제시된다. 다이어그램은 다이(310) 상에 배치된 프로세서 코어(401)를 나타낸다. 코어(401)는 버스(441)를 통해 변환기 단계(412)에 결합된 페치 단계(411)를 포함한다. 변환기 단계(412)는 버스(442)를 통해 재명명 단계(413)에 결합된다. 재명명 단계(413)는 버스(443)를 통해 리플레이 mux 단계(414)에 결합된다. 리플레이 mux(414)는 예약 및 홀드 버스 홀디(444)를 통해 복수의 예약 스테이션 RS1-RSN 421.1-421.N 및 향상된 로드 예약 스테이션 ERSL 421.L에 결합된다. 예약 스테이션 ERSL은 비코어 정지 부재(461)를 포함한다. 예약 스테이션 RS1-RSN, ERSL의 각각은 대응하는 디스패치 버스 451.1-451.N, 451.L을 통해 대응하는 실행 유닛 EU1-EUN 422.1-422.N, EUL 422.L에 결합된다. 예약 스테이션 RS1-RSN, ERSL은 레지스터 버스(445)를 통해 레지스터 파일(426)에 결합된다.
실행 유닛 EUL을 제외하고, 재명명 실행 유닛 EU1-EUN은 정수 유닛, 부동소수점 유닛, 멀티미디어 유닛, 및 저장 유닛과 같은 오늘날의 슈퍼스칼라 프로세서에 일반적인 유닛을 포함할 수 있다. 실행 유닛 EUL은 1차 함수가 도 3을 참조하여 위에 설명된 바와 같이 시스템 메모리, 시스템 I/O, 및 비코어 리소스(430)를 포함하지만, 그들로 한정되지 않는 다양한 리소스로부터 오퍼랜드를 로드하는 로드 유닛 422.L이다. 실행 유닛 EUL은 부가적으로 언미스 부재 UMISS(462)를 포함한다.
따라서, 로드 유닛 EUL은 버스(454)를 통해 L1 캐시(423)에 그리고 버스(456)를 통해 비코어(430)에 결합된다. 메모리 오퍼랜드에 있어서, 로드 유닛 422.L은 처음에 L1 캐시(423)에 접근한다. 로드가 L1 캐시(423)에서 놓친다면, 그때 로드 유닛 422.L은 비코어(430)에서 L2 캐시(미도시)에 접근해야만 한다. 실행 유닛 EU1-EUN, EUL은 또한 버스(452)를 통해 재배열 버퍼(424)에 결합된다. 부가적으로, 로드 유닛 EUL은 버스 미스(452)를 통해 재배열 버퍼(424)에 결합된다. 재배열 버퍼(424)는 버스 리플레이(458)를 통해 리플레이 mux(414)에, 버스(457)를 통해 퇴거 유닛(425)에, 그리고 홀디 버스(444)를 통해 예약 스테이션 RS1-RSN, ERSL에 결합된다. 퇴거 유닛(425)은 라이트백 WB 버스(455)를 통해 레지스터 파일(426)에 결합된다.
도 4에 도시된 코어 단계는 그들이 오늘날 비순차 프로세서 코어 내의 이들의 예시이기 때문에 본 발명의 측면을 분명히 교시하기 위해 예시로서 제시된다는 것이 언급되지만, 해당 기술분야의 당업자가 아키텍쳐 및 의도된 어플리케이션에 따라 요구될 수 있는 다른 프로세서 코어 단계 구성에 대해 여기 설명된 본 발명의 측면 및 특징을 적응할 수 있다는 것이 언급된다.
동작에서, 프로그램 명령어(미도시)는 페치 유닛(411)에 의해 메모리(미도시)로부터 불려나온다. x86-호환 프로세서 코어(401)에서, 이들 프로그램 명령어는 x86 ISA로 거동한다. 프로그램 명령어는 버스(441) 상의 변환기(412)에 순차로 제공된다. 변환기(412)는 프로그램 명령어에 의해 특정된 동작을 수행하기 위해 대응하는 실행 유닛 EU1-EUN, EUL에서 하위-동작을 지시하는 하나 이상의 마이크로 명령어로 프로그램 명령어를 변환한다. 마이크로 명령어는 그런 후에 버스(442) 상에 재명명 유닛(413)에 제공되고, 마이크로 명령어의 일부에 특정된 아키텍쳐 레지스터(즉, 오퍼랜드 레지스터 위치)가 독립적인 마이크로 명령어 스트림에 대해 실행 병행성을 증가시키기 위해 프로세서 코어(401)에서 하드웨어 레지스터(미도시)에 재매핑된다. 재명명 유닛(413)은 또한 일련의 프로그램 순서에 따라 마이크로 명령어의 각각을 태그하고, 마이크로 명령어에서 소스 및 목적지 오퍼랜드 필드 역시 하나 이상의 오퍼랜드가 의존하는 더 새로운 마이크로 명령어의 태그로 태그된다. 그런 후에 재명명 마이크로 명령어가 버스(443) 상의 리플레이 mux(414)에 제공된다.
리플레이 mux(414)는 실행 동안 적절한 실행 유닛 EU1-EUN, EUL을 결정하는 재명명 마이크로 명령어의 각각에 연산코드를 판독하고, 특히 재명명 로드 마이크로 명령어는 로드 실행 유닛 EUL에 의해 실행된다. 따라서, 리플레이 mux(414)는 대응하는 실행 유닛 EU1-EUN, EUL로의 디스패치를 대기하도록 하나 이상의 재명명 마이크로 명령어를 하나 이상의 예약 스테이션 RS1-RSN1, ERSL에 제공한다.
예약 스테이션 RS1-RSN, ERSL의 각각은 동작 동안 대기된 재명명 마이크로 명령어에 의해 요구된 오퍼랜드를 판독하도록 레지스터 파일(426)에 접근한다. 더 새로운 재명명 마이크로 명령어로 태그되지 않은 재명명 마이크로 명령어(즉, 재명명 마이크로 명령어는 더 오래된 재명명 마이크로 명령어에 의존하지 않는다)는 실행 동안 대응하는 실행 유닛 EU1-EUN, EUL에 즉시 디스패치된다. 아래 설명될 것을 제외하고, 의존적 더 새로운 재명명 마이크로 명령어(즉, 실행이 아직 완료되지 않은 더 오래된 재명명 마이크로 명령어의 태그를 포함하는 재명명 마이크로 명령어)는 일반적으로 태그된 의존적 오퍼랜드와 같은 시간이 이용가능할 때까지 예약 스테이션 RS1-RSN, ERSL에 의해 유지된다. 태그된 의존적 오퍼랜드가 이용가능할 때, 그들은 의존적 더 새로운 재명명 마이크로 명령어에 제공되고, 더 새로운 마이크로 명령어는 실행 동안 대응하는 실행 유닛 EU1-EUN, EUL에 디스패치된다. 실행 유닛 EU1-EUN, EUL은 또한 그들이 마이크로 명령어를 실행하지 않을 때 파워 절약 기능을 수행할 수 있다. 실행 유닛 EU1-EUN, EUL의 내부의 클록은 그들이 상당한 파워를 절약하는 마이크로 명령어를 실행하지 않을 때 정지된다.
재명명 마이크로 명령어 및 그들의 결과는 버스(452)를 통해 재배열 버퍼(424)에 제공된다. 재배열 버퍼(424)는 재명명 마이크로 명령어의 비순차 실행으로부터의 결과를 프로그램 순서에 다시 위치시킨다. 즉, 재명명 프로그램된 레지스터로부터의 결과가 대응하는 아키텍쳐 레지스터에 다시 재매핑되고 그 결과는 실행의 특정 프로그램 순서에 따라 아키텍쳐 레지스터에 진입을 위해 대기된다. 적절한 결과로 성공적으로 완료된 실행을 갖는 마이크로 명령어가 버스(457) 상에 퇴거 유닛(425)에 제공된다. 이들 퇴거된 마이크로 명령어의 결과는 WB 버스(455) 상의 레지스터 파일(426)에 다시 작성된다.
재배열 버퍼(424)는 재명명 마이크로 명령어가 성공적으로 실행하지 않는다는 것을 결정할 때, 그때 그것은 실행 동안 디스패치된 모든 더 새로운 의존적 재명명 마이크로 명령어에 따라 반복되어야만 한다. 따라서, 재배열 버퍼(424)는 리플레이 버스(458) 상의 성공적으로 실행된 재명명 마이크로 명령어의 태그를 제공하는 것에 의해 리플레이 이벤트를 시작한다.
성공적으로 실행된 재명명 마이크로 명령어 태그가 리플레이 mux(414)에 제공될 때, 응답해서 리플레이 mux(414)는 태그가 리플레이(458) 상에 제공되는 재명명 마이크로 명령어에서 시작하는 재명명 마이크로 명령어의 실행으로 거동하도록 기계 상태를 복구한다.
아래에 설명되는 것을 제외하고, 본 발명은 로드 마이크로 명령어가 디스패치된 후에 특정 수의 클록 사이클 동안 더 새로운 로드 마이크로 명령어에 따라 마이크로 명령어를 정지하도록 구성된 예약 스테이션 RS1-RSN을 포함하고, 로드 마이크로 명령어가 특정 수의 클록 사이클에서 L1 캐시(423)에서 히트할 것임을 가정한다. 일 실시예에서, 특정 수의 클록 사이클은 4개의 클록 사이클이다. 다른 수의 클록 사이클이 고려된다.
따라서, 아래에 설명된 것을 제외하고, 예약 스테이션 RS1-RSN은 태그가 더 오래된 로드 명령어의 디스패치 후에 4개의 클록 사이클까지 더 오래된 로드 마이크로 명령어에 대응하는 재명명 마이크로 명령어를 정지시키고, 그런 후에 로드 마이크로 명령어가 4개의 클록 사이클 내의 L1 캐시(423)에 히트하고 태그된 오퍼랜드가 준비될 것이라는 가정 하에 대응하는 실행 유닛 EU1-EUN에 재명명 더 새로운 마이크로 명령어를 디스패치하는 로직을 포함한다. 도 4에 도시되지 않음에도, 실행 유닛 EU1-EUN, EUL 역시 로드 동작으로부터 이용가능해진 오퍼랜드에 접근할 수 있고 그 안에 실행하는 마이크로 명령어에 이들 오퍼랜드를 제공할 수 있다. L1 캐시(423)에서 히트하는 로드와 같은, 특정 수의 사이클보다 적게 완료하는 로드에 있어서, 오퍼랜드는 그렇지 않으면 제공될 수 있는 훨씬 더 빠른 완료를 통해 실행하는, 디스패치된 의존적 더 새로운 마이크로 명령어에 제공된다. 그리고 로드의 성공적인 완료 후에, L1에서 놓친 이들과 같은, 특정 수의 클록 사이클보다 오래 걸리는 로드에 있어서, 히트의 가정 하에 디스패치된 모든 의존적인 더 새로운 마이크로 명령어가 반복되어야만 한다. 따라서, L1 캐시(423)에서 미스 시에, 로드 실행 유닛 EUL은 더 새로운 명령어의 리플레이를 시작하기 위한 버스 미스(453) 상의 미스 로드 명령어의 태그를 나타내는 것에 의해 그러한 것을 재배열 버퍼(424)에 알릴 것이다.
그러나 본 발명은 또한 오퍼랜드가 이용가능할 때까지 하나 이상의 로드 마이크로 명령어 타입의 마이크로 명령어에 따라 더 새로운 마이크로 명령어를 정지시키는 것에 의해 하나 이상의 실행 유닛 EU1-EUN에서 파워 절약을 실행하기 위해 하나 이상의 로드 마이크로 명령어 타입을 검출하는 향상된 로드 예약 스테이션 ERSL 421.L에서 비코어 정지 로직(461)을 포함하는 것에 의해 위의 가속 방식에 예외를 제공한다. 언미스 로직(462)은 또한 하나 이상의 로드 마이크로 명령어 타입이 오퍼랜드를 얻기 위해 특정 수의 클록 사이클보다 더 오래 걸릴 때 버스 미스(453) 상의 미스의 확인을 억제하기 위해 하나 이상의 로드 마이크로 명령어 타입을 검출한다. 그렇게 하는 것에 의해, 하나 이상의 로드 마이크로 명령어 타입의 마이크로 명령어가 실행을 완료하도록 허용되고, 하나 이상의 마이크로 명령어 타입의 마이크로 명령어에 따라 이들 더 새로운 마이크로 명령어의 리플레이는 이들 더 새로운 의존적인 마이크로 명령어가 예약 RS1-RSN에 정지되기 때문에 요구되지 않는다. 하나의 실시예에서, 예약 스테이션 RS1-RSN, ERSL은 더 새로운 의존적 마이크로 명령어의 정지를 시작하기 위해 버스 홀디(444)를 통해 서로에 그리고 재배열 버퍼(424)에 하나 이상의 마이크로 명령어 타입의 검출된 마이크로 명령어와 연관된 정보(예, 태그)를 전달한다. 하나 이상의 로드 마이크로 명령어 타입의 마이크로 명령어가 실행을 완료할 때, 재배열 버퍼(424)는 예약 스테이션 RS1-RSN이 홀디(444) 상에 완료한 하나 이상의 로드 마이크로 명령어 타입의 마이크로 명령어의 태그를 제공하는 것에 의해 디스패치를 위해 정지된 더 새로운 의존적 마이크로 명령어를 해제하도록 지시한다.
유리하게, 본 발명은 시스템 메모리로부터 캐시된 오퍼랜드에 대응하는 로드마이크로 명령어에 관련된 효과적인 성능을 제공하고, 실질적으로 하나 이상의 마이크로 명령어 타입의 로드 마이크로 명령어와 연관된 리플레이의 수를 감소시키며, 따라서 그들이 실행된 의존성 정지로 인해 비워짐에 따라 실행 유닛 EU1-EUN이 파워 절약 모드에 진입하는 것을 가능하게 한다.
따라서, 예를 들어, 구체적으로 퓨즈 어레이(308)와 같은 비코어 리소스(430), 버스 유닛(305), APIC(307), I/O 유닛(306), L2 캐시(303) 및 RAM(304)에 구체적으로 지시된 로드 마이크로 명령어는 비코어 리소스(430)로부터 이들 로드의 태그를 갖는 더 새로운 의존적 마이크로 명령어의 리플레이를 초래하지 않을 것이다.
일 실시예에서, 하나 이상의 로드 마이크로 명령어 타입은 I/O 로드, 특정 수의 사이클을 요구하는 로드, 페이지 테이블 워크를 요구하도록 공지된 시스템 메모리로부터의 로드, x86 특수 버스 사이클(예, 셧다운, 홀트, 플러쉬 등)의 실행을 초래하는 로드, 붙잡을 수 없는 메모리 공간을 해소하는 것으로 공지된 로드, 및 작성 결합 메모리 공간을 해소하는 것으로 공지된 로드를 포함하지만 그들로 한정되지 않는 다른 타입의 로드를 따라 특정된 비코어 리소스(430)로부터의 로드를 포함할 수 있다. 다른 실시예는 완료할 특정 수의 클록 사이클보다 더 오래 걸릴 상당한 가능성이 있는 임의 타입의 로드 동작의 검출을 심사숙고한다.
일 실시예에서, 비코어 정지 부재(461) 및 언미스 부재(462)는 정해진 로드 마이크로 명령어 타입의 검출을 위해 본 발명에 따라 프로세서 코어(401)의 시작(예, 파워 업 또는 리셋) 시에 구성될 수 있다. 정해진 로드 마이크로 명령어 타입은 퓨즈 어레이(308)에서 특정된 위치로부터 시작 시에 판독될 수 있다. 또 다른 실시예에서, 코어(401)의 각각은 코어(401)의 각각과 연관된 타입이 퓨즈 어레이(308)에서 대응하는 위치에 프로그램될 수 있는 퓨즈 어레이(308)에서 프로그래밍을 통해 다른 타입의 정해진 로드 마이크로 명령어를 검출하도록 구성될 수 있다. 또 다른 실시예에서, 정해진 로드 마이크로 명령어 타입은 다중-코어 디바이스(310)에 JTAG(Joint Test Action Group) 인터페이스(미도시)를 통해 파워 업 또는 리셋 시에 RAM(304)에 프로그램될 수 있고, 지정된 로드 마이크로 명령어 타입은 RAM(304)에서 특정된 위치로부터 이어지는 시작 시에 판독된다.
이제 도 5에 관해 언급하면서, 도 4의 비코어 정지 부재(461)의 세부사항을 도시하는 블록도(500)가 제시된다. 정지 부재(461)는 비코어 로드 연산코드 검출 로직(501)에 결합된 마이크로 명령어 레지스터(510)를 포함한다. 마이크로 명령어 레지스터(510)는 마이크로 명령어 태그 필드 OP 태그(511), 연산코드 필드 마이크로 OP(512), 소스 A 필드 SRC A(513), 태그 A 필드 태그 A(514), 소스 B 필드 SRC B(515), 태그 B 필드 B(516), 소스 C 필드 SRC C(517), 및 태그 C 필드 태그 C(518)를 포함한다. 검출 로직(501)은 버스(444)에 결합된 홀드 신호 홀디를 발생시킨다.
해당 기술분야의 당업자가 인지할 바와 같이, x86 ISA와 같은 오늘날의 ISA는 직접, 간접, 중간, 및 관련을 포함하지만, 그들로 한정되지 않는 다수의 다른 오퍼랜드 어드레싱 모드를 제공한다. 결과적으로, 하나 이상의 소스 필드 SRC A-C는 오퍼랜드를 포함할 수 있고, 하나 이상은 오퍼랜드의 위치(결과의 목적지를 포함)를 특정할 수 있다. 결과적으로, 정지 부재(461)의 동작은 다수의 ISA에 본 발명의 더 넓은 적용을 허용하도록 소스 필드 SRC A-C의 내용에 관한 일반적 관점에서 설명될 것이다.
동작적으로, 마이크로 명령어가 리플레이 mux(414)에 의해 제공되기 때문에, 로드 마이크로 명령어는 마이크로 명령어 레지스터(510)에 도입된다. OP 태그는 레지스터(510)에 현재의 마이크로 명령어의 태그를 갖고, 마이크로 OP는 연산코드를 가진다. 태그 A의 내용은 SRC A의 내용에 따른 더 오래된 마이크로 명령어의 태그를 포함할 수 있다. 태그 B의 내용은 SRC B의 내용에 따라 더 오래된 마이크로 명령어의 태그를 포함할 수 있다. 태그 C의 내용은 SRC C의 내용에 따라 더 오래된 마이크로 명령어의 태그를 포함할 수 있다. 검출 로직(501)은 마이크로 OP의 내용을 판독하도록 구성된다. 마이크로 OP가 정지될 레지스터(510)에서의 현재의 마이크로 명령어에 따라 다른 예약 스테이션 RS1-RSN에서 더 새로운 마이크로 명령어를 야기할 위에 설명된 규정된 로드 연산코드 중 하나를 포함하지 않는다면, 그때 검출 로직(501)은 홀디 Y를 부인하고, 따라서 더 새로운 마이크로 명령어가 절차에 따라 디스패치될 수 있는 RS1-RSN을 나타낸다. 그러나, 마이크로 OP가 정지될 레지스터(510)에서의 현재의 마이크로 명령어에 따라 다른 예약 스테이션 RS1-RSN에서 더 새로운 마이크로 명령어를 야기할 위에 설명된 규정된 로드 연산코드 중 하나를 포함한다면, 그때 검출 로직(501)은 홀디 Y를 확인하고 버스(444) 상에 OP 태그의 내용을 위치시키고, 따라서 이들 더 새로운 의존적 마이크로 명령어는 레지스터(510)에서 현재 마이크로 명령어에 의해 규정된 로드가 완료되고 로드의 결과가 더 새로운 의존적 마이크로 명령어에 제공될 때까지 정지되어야만 하는 RS1-RSN을 나타낸다. 로드가 완료될 때, 재배열 버퍼(424)는 홀디 Y를 부인할 것이고, 따라서 정지를 해제한다.
도 6으로 돌아가서, 도 4의 예약 스테이션 RS1-RSN의 각각의 세부사항을 나타내는 블록도가 제시된다. 예약 스테이션은 의존성 확인 로직(601)에 결합된 마이크로 명령어 레지스터(610)를 포함한다. 마이크로 명령어 레지스터(510)는 마이크로 명령어 태그 필드 OP 태그(611), 연산코드 필드 마이크로 OP(612), 소스 A 필드 SRC A(613), 태그 A 필드 A(614), 소스 B 필드 SRC B(615), 태그 B 필드 태그 B(616), 소스 C 필드 SRC C(617), 및 태그 C 필드 태그 C(618)를 포함한다. 의존성 확인 로직(601)은 준비 신호 레디 및 버스(444)에 결합된 모니터 홀드 신호 홀디를 발생시킨다.
레지스터(610)에서 필드(611-618)의 내용은 유사 명명된 필드에 대해 도 5를 참조하여 위에 설명된 바와 동일하다. 확인 로직(601)은 추가로 소스 태그 필드 태그 A-C의 내용을 판독하도록 구성된다. 태그 필드 태그 A-C 중 어느 하나의 내용이 확인될 때 홀디 상에 있는 태그와 일치한다면, 그때 레지스터(610) 내의 마이크로 명령어는 의존하는 로드 마이크로 명령어가 완료하는 시간까지 레지스터(610) 내의 마이크로 명령어가 정지되고, 로드를 통해 얻어진 오퍼랜드는 대응하는 소스 필드 SRC A-C에 제공되며, 그리고 재배열 버퍼(424)는 홀디를 부인한다. 홀디 Y가 부인될 때, 확인 로직(601)은 레지스터(610)에서 마이크로 명령어가 대응하는 실행 유닛 EU1-EUN에 디스패치될 준비가 됨을 나타내는 레디를 확인한다.
태그 필드 태그 A-C의 내용이 확인될 때 홀디 상에 있는 태그에 일치하지 않는다면, 그때 확인 로직(601)은 레지스터(610)에서 마이크로 명령어가 대응하는 실행 유닛 EU1-EUN에 디스패치될 준비가 되어 있다는 것을 나타내는, 레디를 확인한다.
이제 도 7에 대해 언급하면서, 도 4의 비코어 미스 부재(462)의 세부사항을 나타내는 블록도(700)가 제시된다. 비코어 미스 부재(462)는 로드 미스 억제 로직(701)에 결합된 마이크로 명령어 레지스터(710)를 포함한다. 마이크로 명령어 레지스터(710)는 마이크로 명령어 태그 필드 OP 태그(711), 연산코드 필드 마이크로 OP(712), 소스 A 필드 SRC A(713), 태그 A 필드 태그 A(714), 소스 B 필드 SRC B(715), 태그 B 필드 태그 B(716), 소스 C 필드 SRC C(717), 및 태그 C 필드 태그 C(718)를 포함한다. 미스 억제 로직(501)은 노 미스 신호 노미스를 발생시킨다.
레지스터(710)에서 필드(711-718)의 내용은 유사 명명된 필드를 위한 도 5-6을 참조하여 위에 설명된 바와 동일하다. 억제 로직(701)은 마이크로 OP의 내용을 판독하도록 구성된다. 마이크로 OP가 더 새로운 의존적 마이크로 명령어가 정지되게 하는 위에 설명된 규정된 로드 연산코드 중 하나를 포함하지 않는다면, 그때 로드 미스 억제 로직(701)는 정상 로드 명령어 실행 프로토콜에 따라서 신호 미스의 상태를 관리하도록 대응하는 로드 실행 유닛 EUL 422.L에 알리는 신호 노미스를 부인한다. 마이크로 OP가 규정된 연산코드 중 하나를 포함한다면, 그때 억제 로직(701)이 레지스터(710)에서 마이크로 명령어의 실행 동안 미스의 확인을 억제하도록 대응하는 로드 실행 유닛 EUL 422.L에 알리는 노미스를 확인한다.
본 발명에 따라 위에 설명된 부재는 여기 논의된 기능 및 동작을 수행하도록 구성된다. 본 발명의 부재는 로직, 회로, 디바이스, 또는 마이크로코드(즉, 마이크로 명령어 또는 원시 명령어), 또는 로직의 조합, 회로, 디바이스, 또는 마이크로코드, 또는 언급된 바와 같이 본 발명에 따라 기능 및 동작을 실행하도록 사용된 등가 부재를 포함한다. 이들 동작 및 기능을 수행하도록 사용된 부재는 멀티-코어 마이크로프로세서 내의 다른 기능 및/또는 동작을 수행하도록 사용된 다른 회로, 마이크로코드 등과 공유될 수 있다.
본 발명의 부분 및 대응하는 세부적인 설명이 소프트웨어, 또는 알고리즘 및 컴퓨터 메모리 내의 데이터 비트 상의 동작의 심볼 표현의 관점에서 제시된다. 이들 설명 및 표현은 해당기술분야의 통상의 기술자가 해당기술분야의 다른 통상의 기술자에게 연구의 요지를 효과적으로 전달하는 것에 의한 것이다. 용어가 여기에 사용되는 바와 같고 그것이 일반적으로 사용되는 바와 같은, 알고리즘은 요구되는 결과로 유도하는 단계의 자가-충족적 시퀀스인 것으로 간주된다. 단계는 물리적 양의 물리적 조작을 요구하는 이들이다. 일반적으로, 필수적이지 않음에도, 이들 양은 저장되고, 전달되며, 비교되고, 그렇지 않으면 조작될 수 있는 광학, 전기, 또는 자기 신호의 형태를 취한다. 그것은 원칙적으로, 비트, 값, 부재, 심볼, 특징, 용어, 수, 또는 그와 유사한 것과 같은 이들 신호를 언급하도록 공통 사용하는 이유 때문에 때때로 편리하다.
그러나 모든 이들 그리고 유사한 용어가 적절한 물리적 양과 연관되어야만 하고 단지 이들 양에 적용된 편리한 라벨일 뿐임을 유념해야 한다. 달리 구체적으로 언급되거나 논의로부터 명백한 바와 같지 않다면, "처리하는" 또는 "컴퓨팅" 또는 "계산하는" 또는 "결정하는" 또는 "디스플레이하는" 또는 그와 유사한 것과 같은 용어는 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 그러한 정보 저장소, 전달, 또는 디스플레이 디바이스 내의 물리적 양으로서 유사하게 표현된 다른 데이터로의 컴퓨터 시스템의 레지스터 및 메모리 내의 물리적, 전자량으로 표현된 데이터를 조작하고 변형하는 컴퓨터 시스템, 마이크로프로세서, 중앙처리장치, 또는 유사한 전자 컴퓨팅 디바이스의 작동 및 프로세스를 말한다.
본 발명의 소프트웨어 실행된 측면은 일반적으로 프로그램 저장 매체의 일부 형태 상에 인코딩되거나 전달 매체의 일부 타입을 통해 실행된다. 프로그램 저장 매체는 전자(예, 판독 전용 메모리, 플래쉬 판독 전용 메모리, 전기적으로 프로그래머블 판독 전용 메모리), 랜덤 액세스 메모리 자기(예, 플로피 디스크 또는 하드 드라이브) 또는 광학(예, 컴팩트 디스크 판독 전용 메모리, 또는 "CD ROM")일 수 있고, 그리고 판독 전용 또는 랜덤 액세스일 수 있다. 유사하게, 전달 매체는 금속 트레이스, 연선 페어, 동축 케이블, 광섬유, 또는 당업자에게 공지된 일부 다른 적절한 송신 매체일 수 있다. 본 발명은 임의의 주어진 실행의 이들 측면에 의해 한정되지 않는다.
위에 논의된 특정 실시예는 설명적으로만 도시되며, 해당 기술분야의 당업자는 본 발명의 동일한 목적을 실행하기 위해 다른 구조를 설계하거나 수정하기 위한 토대로서 개시된 개념 및 특정 실시예를 용이하게 사용할 수 있고, 다양한 수정, 대체 및 대안이 첨부된 청구항에 의해 제시된 바와 같이 본 발명의 범위로부터 벗어나지 않고 여기 이루어질 수 있다는 것을 인지할 것이다.
Claims (21)
- 비순차 프로세서에서 리플레이를 감소시키기 위한 장치로서, 상기 장치는:
제 1 로드 마이크로 명령어를 디스패치하도록 구성되고, 상기 제 1 로드 마이크로 명령어가 복수의 비코어 리소스 중 하나에 지시된 복수의 특정 로드 명령어 중 하나라면, 홀드 버스 상에 검출하고 나타내도록 구성된, 제 1 예약 스테이션;
상기 제 1 로드 마이크로 명령어의 디스패치에 이어서 제 1 수의 클록 사이클 후에 실행 동안 상기 제 1 로드 마이크로 명령어에 따라 하나 이상의 더 새로운 마이크로 명령어를 디스패치하도록 구성된 상기 홀드 버스에 결합된 제 2 예약 스테이션을 포함하고, 그리고 상기 제 1 로드 마이크로 명령어가 상기 복수의 특정 로드 명령어 중 하나임이 상기 홀드 버스 상에 나타나면, 상기 제 2 예약 스테이션은 상기 제 1 로드 마이크로 명령어가 상기 오퍼랜드를 검색할 때까지 상기 하나 이상의 더 새로운 마이크로 명령어의 디스패치를 정지하도록 구성되고; 그리고
상기 복수의 비코어 리소스는:
시작 시에, 상기 복수의 특정 로드 명령어를 결정하도록 상기 퓨즈 어레이에 접근하는 상기 비순차 프로세서에 대응하는 상기 복수의 특정 로드 명령어를 저장하도록 구성된 퓨즈 어레이를 포함하는 것을 특징으로 하는 장치. - 제 1항에 있어서,
상기 비순차 프로세서는 멀티-코어 프로세서를 포함하고, 그리고 상기 멀티-코어 프로세서 내의 각각의 코어는 상기 제 1 및 제 2 예약 스테이션을 포함하는 것을 특징으로 하는 장치. - 제 2항에 있어서,
상기 복수의 비코어 리소스 중 하나는 상기 퓨즈 어레이를 포함하고, 그리고 상기 퓨즈 어레이는 상기 각각의 코어와 동일한 다이 상에 배치되지만, 상기 각각의 코어의 외부에 배치되는 것을 특징으로 하는 장치. - 제 2항에 있어서,
상기 복수의 비코어 리소스 중 하나는 상기 멀티-코어 프로세서와 동일한 다이 상에 배치되지 않고, 그리고 상기 복수의 비코어 리소스 중 하나는 각각의 코어와 동일한 다이 상에 배치된 버스 유닛을 통해 접근되지만, 상기 각각의 코어의 외부에 배치되는 것을 특징으로 하는 장치. - 제 1항에 있어서,
상기 제 1 로드 마이크로 명령어를 수신하고 실행하도록 구성되고, 그리고 어떠한 마이크로 명령어도 실행 동안 수신되지 않는다면 파워 절약 상태에 진입하도록 구성된 상기 제 1 예약 스테이션에 결합된 로드 실행 로직을 더 포함하는 것을 특징으로 하는 장치. - 제 5항에 있어서,
상기 제 1 로드 마이크로 명령어가 상기 특정 로드 마이크로 명령어가 아니라면, 상기 로드 실행 로직은 상기 제 1 로드 마이크로 명령어가 상기 제 1 수의 클록 사이클에서 성공적으로 실행하는 것을 실패하는지를 미스 버스 상에 나타내고, 따라서 상기 하나 이상의 더 새로운 마이크로 명령어의 리플레이를 시작하는 것을 특징으로 하는 장치. - 제 6항에 있어서,
상기 제 1 로드 마이크로 명령어가 상기 특정 로드 마이크로 명령어라면, 상기 로드 실행 로직은 상기 제 1 수보다 많은 클록 사이클이 성공적으로 실행하도록 요구된다면 상기 제 1 로드 마이크로 명령어가 성공적으로 실행하는 것을 실패했다고 나타내지 않고, 따라서 상기 하나 이상의 더 새로운 마이크로 명령어의 리플레이를 억제하는 것을 특징으로 하는 장치. - 리플레이를 감소시키기 위한 장치로서, 상기 장치는:
복수의 코어를 포함하는, 멀티-코어 프로세서, 상기 복수의 코어의 각각은:
제 1 로드 마이크로 명령어를 디스패치하도록 구성되고, 그리고 상기 제 1 로드 마이크로 명령어가 복수의 비코어 리소스 중 하나에 지시된 복수의 특정 로드 명령어 중 하나라면, 홀드 버스 상에 검출하고 나타내도록 구성된 제 1 예약 스테이션;
상기 제 1 로드 마이크로 명령어의 디스패치에 이어서 제 1 수의 클록 사이클 후에 실행 동안 상기 제 1 로드 마이크로 명령어에 의존하는 하나 이상의 더 새로운 마이크로 명령어를 디스패치하도록 구성된 상기 홀드 버스에 결합된 제 2 예약 스테이션을 포함하고, 그리고 상기 제 1 로드 마이크로 명령어가 상기 복수의 특정 로드 명령어 중 하나임이 상기 홀드 버스 상에 나타나면, 상기 제 1 로드 마이크로 명령어가 상기 오퍼랜드를 검색할 때까지 상기 제 2 예약 스테이션은 상기 하나 이상의 더 새로운 마이크로 명령어의 디스패치를 정지하도록 구성되고; 그리고
상기 복수의 비코어 리소스는:
시작 시에, 상기 복수의 특정 로드 명령어를 결정하도록 상기 퓨즈 어레이에 접근하는 상기 멀티-코어 프로세서에 대응하는 상기 복수의 특정 로드 명령어를 저장하도록 구성된 퓨즈 어레이를 포함하는 것을 특징으로 하는 장치. - 제 8항에 있어서,
상기 멀티-코어 프로세서는 x86-호환 멀티-코어 프로세서를 포함하는 것을 특징으로 하는 장치. - 제 8항에 있어서,
상기 복수의 비코어 리소스 중 하나는 상기 퓨즈 어레이를 포함하고, 그리고 상기 퓨즈 어레이는 상기 멀티-코어 프로세서와 동일한 다이 상에 배치되지만, 상기 복수의 코어의 각각의 외부에 배치되는 것을 특징으로 하는 장치. - 제 8항에 있어서,
상기 복수의 비코어 리소스 중 하나는 상기 멀티-코어 프로세서와 동일한 다이 상에 배치되지 않고, 그리고 상기 복수의 비코어 리소스 중 하나는 상기 복수의 코어의 각각과 동일한 다이 상에 배치된 버스 유닛을 통해 접근되지만, 상기 복수의 코어의 각각의 외부에 배치되는 것을 특징으로 하는 장치. - 제 8항에 있어서,
상기 복수의 코어의 각각은:
상기 제 1 로드 마이크로 명령어를 수신하고 실행하도록 구성되고, 그리고 어떠한 마이크로 명령어도 실행 동안 수신되지 않는다면 파워 절약 상태에 진입하도록 구성된 상기 제 1 예약 스테이션에 결합된, 로드 실행 로직을 더 포함하는 것을 특징으로 하는 장치. - 제 12항에 있어서,
상기 제 1 로드 마이크로 명령어가 상기 특정 로드 마이크로 명령어가 아니라면, 상기 로드 실행 로직은 상기 제 1 수보다 많은 클록 사이클이 성공적으로 실행하도록 요구될 때 상기 제 1 로드 마이크로 명령어가 성공적으로 실행하는 것을 실패했다고 미스 버스 상에 나타내고, 따라서 상기 하나 이상의 더 새로운 마이크로 명령어의 리플레이를 시작하는 것을 특징으로 하는 장치. - 제 13항에 있어서,
상기 제 1 로드 마이크로 명령어가 상기 특정 로드 마이크로 명령어라면, 상기 로드 실행 로직은 상기 제 1 수보다 많은 클록 사이클이 성공적으로 실행하도록 요구될 때 상기 제 1 로드 마이크로 명령어가 성공적으로 실행하는 것을 실패했다고 나타내지 않고, 따라서 상기 하나 이상의 더 새로운 마이크로 명령어의 리플레이를 억제하는 것을 특징으로 하는 장치. - 비순차 프로세서에서 리플레이를 감소시키기 위한 방법으로서, 상기 방법은:
상기 비순차 프로세서에 대응하는 복수의 특정 로드 명령어를 저장하도록 구성된, 퓨즈 어레이를 포함하는, 복수의 비코어 리소스를 배치하는 단계;
시작 시에, 상기 복수의 특정 로드 명령어를 결정하도록 상기 퓨즈 어레이에 접근하는 단계;
제 1 예약 스테이션을 통해, 제 1 로드 마이크로 명령어를 디스패치하고, 그리고 상기 제 1 로드 마이크로 명령어가 상기 복수의 비코어 리소스 중 하나에 지시된 상기 복수의 특정 로드 명령어 중 하나라면, 홀드 버스 상에 검출하고 나타내는 단계; 및
상기 홀드 버스에 결합된 제 2 예약 스테이션을 통해, 상기 제 1 로드 마이크로 명령어의 디스패치에 이어서 제 1 수의 클록 사이클 후에 실행 동안 상기 제 1 로드 마이크로 명령어에 따라서 하나 이상의 더 새로운 마이크로 명령어를 디스패치하고, 그리고 상기 제 1 로드 마이크로 명령어가 상기 복수의 특정 로드 마이크로 명령어 중 하나임이 상기 홀드 버스 상에 나타나면, 상기 제 1 로드 마이크로 명령어가 상기 오퍼랜드를 검색할 때까지 상기 하나 이상의 더 새로운 마이크로 명령어의 디스패치를 정지시키는 단계를 포함하는 것을 특징으로 하는 방법. - 제 15항에 있어서,
상기 비순차 프로세서는 멀티-코어 프로세서를 포함하고, 그리고 상기 멀티-코어 프로세서 내의 각각의 코어는 상기 제 1 및 제 2 예약 스테이션을 포함하는 것을 특징으로 하는 방법. - 제 16항에 있어서,
상기 복수의 비코어 리소스 중 하나는 상기 퓨즈 어레이를 포함하고, 그리고 상기 퓨즈 어레이는 상기 각각의 코어와 동일한 다이 상에 배치되지만, 상기 각각의 코어의 외부에 배치되는 것을 특징으로 하는 방법. - 제 16항에 있어서,
상기 복수의 비코어 리소스 중 하나는 상기 멀티-코어 프로세서와 동일한 다이 상에 배치되지 않고, 그리고 상기 복수의 비코어 리소스 중 하나는 각각의 코어와 동일한 다이 상에 배치된 버스 유닛을 통해 접근되지만, 상기 각각의 코어의 외부에 배치되는 것을 특징으로 하는 방법. - 제 15항에 있어서,
상기 제 1 예약 스테이션에 결합된 로드 실행 로직을 통해, 상기 제 1 로드 마이크로 명령어를 수신하고 실행하며, 그리고 어떠한 마이크로 명령어도 실행 동안 수신되지 않는다면 파워 절약 상태에 진입하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 제 19항에 있어서,
상기 제 1 로드 마이크로 명령어가 상기 특정 로드 마이크로 명령어가 아니라면, 상기 제 1 수보다 많은 클록 사이클이 성공적으로 실행하도록 요구될 때 상기 제 1 로드 마이크로 명령어가 성공적으로 실행하는 것을 실패했다고 미스 버스 상에 나타내고, 따라서 상기 하나 이상의 더 새로운 마이크로 명령어의 리플레이를 시작하는 것을 특징으로 하는 방법. - 제 20항에 있어서,
상기 제 1 로드 마이크로 명령어가 상기 특정 로드 마이크로 명령어라면, 상기 제 1 수보다 많은 클록 사이클이 성공적으로 실행하도록 요구될 때 상기 제 1 로드 마이크로 명령어가 성공적으로 실행하는 것을 실패했다고 나타내지 않고, 따라서 상기 하나 이상의 더 새로운 마이크로 명령어의 리플레이를 억제하는 것을 특징으로 하는 방법.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2014/003218 WO2016097804A1 (en) | 2014-12-14 | 2014-12-14 | Programmable load replay precluding mechanism |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160086758A true KR20160086758A (ko) | 2016-07-20 |
KR101820221B1 KR101820221B1 (ko) | 2018-02-28 |
Family
ID=55719855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157032423A KR101820221B1 (ko) | 2014-12-14 | 2014-12-14 | 프로그래머블 로드 리플레이 억제 메커니즘 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10114794B2 (ko) |
KR (1) | KR101820221B1 (ko) |
CN (2) | CN105511839B (ko) |
TW (1) | TWI616814B (ko) |
WO (1) | WO2016097804A1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170329607A1 (en) * | 2016-05-16 | 2017-11-16 | International Business Machines Corporation | Hazard avoidance in a multi-slice processor |
US10528353B2 (en) | 2016-05-24 | 2020-01-07 | International Business Machines Corporation | Generating a mask vector for determining a processor instruction address using an instruction tag in a multi-slice processor |
US10467008B2 (en) | 2016-05-31 | 2019-11-05 | International Business Machines Corporation | Identifying an effective address (EA) using an interrupt instruction tag (ITAG) in a multi-slice processor |
CN112148536A (zh) | 2019-06-26 | 2020-12-29 | 北京百度网讯科技有限公司 | 检测深度学习芯片的方法、装置、电子设备和计算机存储介质 |
Family Cites Families (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6735685B1 (en) | 1992-09-29 | 2004-05-11 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
US5636374A (en) | 1994-01-04 | 1997-06-03 | Intel Corporation | Method and apparatus for performing operations based upon the addresses of microinstructions |
US5649138A (en) | 1996-01-04 | 1997-07-15 | Advanced Micro Devices | Time dependent rerouting of instructions in plurality of reservation stations of a superscalar microprocessor |
US5809275A (en) | 1996-03-01 | 1998-09-15 | Hewlett-Packard Company | Store-to-load hazard resolution system and method for a processor that executes instructions out of order |
US6163838A (en) | 1996-11-13 | 2000-12-19 | Intel Corporation | Computer processor with a replay system |
US7200737B1 (en) | 1996-11-13 | 2007-04-03 | Intel Corporation | Processor with a replay system that includes a replay queue for improved throughput |
US5958041A (en) | 1997-06-26 | 1999-09-28 | Sun Microsystems, Inc. | Latency prediction in a pipelined microarchitecture |
US5889679A (en) | 1997-07-15 | 1999-03-30 | Integrated Device Technology, Inc. | Fuse array control for smart function enable |
US6678810B1 (en) | 1999-12-30 | 2004-01-13 | Intel Corporation | MFENCE and LFENCE micro-architectural implementation method and system |
US6651161B1 (en) * | 2000-01-03 | 2003-11-18 | Advanced Micro Devices, Inc. | Store load forward predictor untraining |
US6549985B1 (en) | 2000-03-30 | 2003-04-15 | I P - First, Llc | Method and apparatus for resolving additional load misses and page table walks under orthogonal stalls in a single pipeline processor |
US7065632B1 (en) | 2000-04-07 | 2006-06-20 | Ip First Llc | Method and apparatus for speculatively forwarding storehit data in a hierarchical manner |
US6981129B1 (en) | 2000-11-02 | 2005-12-27 | Intel Corporation | Breaking replay dependency loops in a processor using a rescheduled replay queue |
EP1332429B1 (en) * | 2000-11-06 | 2011-02-09 | Broadcom Corporation | Reconfigurable processing system and method |
US7203817B2 (en) | 2001-09-24 | 2007-04-10 | Broadcom Corporation | Power consumption reduction in a pipeline by stalling instruction issue on a load miss |
US6810466B2 (en) | 2001-10-23 | 2004-10-26 | Ip-First, Llc | Microprocessor and method for performing selective prefetch based on bus activity level |
US6952764B2 (en) | 2001-12-31 | 2005-10-04 | Intel Corporation | Stopping replay tornadoes |
US20060248319A1 (en) | 2002-02-05 | 2006-11-02 | Sun Microsystems, Inc. | Validating branch resolution to avoid mis-steering instruction fetch |
US6934830B2 (en) | 2002-09-26 | 2005-08-23 | Sun Microsystems, Inc. | Method and apparatus for reducing register file access times in pipelined processors |
US7111153B2 (en) | 2003-09-30 | 2006-09-19 | Intel Corporation | Early data return indication mechanism |
US7284117B1 (en) | 2003-11-04 | 2007-10-16 | Advanced Micro Devices, Inc. | Processor that predicts floating point instruction latency based on predicted precision |
TWI232457B (en) | 2003-12-15 | 2005-05-11 | Ip First Llc | Early access to microcode ROM |
JP4952580B2 (ja) | 2005-04-21 | 2012-06-13 | 富士通株式会社 | プロセッサ装置 |
JP4837305B2 (ja) | 2005-05-10 | 2011-12-14 | ルネサスエレクトロニクス株式会社 | マイクロプロセッサ及びマイクロプロセッサの制御方法 |
JP2006146953A (ja) | 2006-01-04 | 2006-06-08 | Nec Electronics Corp | プロセッサ、システムlsi、システムlsiの設計方法、及び、それを記録した記録媒体 |
US8812822B2 (en) | 2006-02-09 | 2014-08-19 | International Business Machines Corporation | Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss |
US7721071B2 (en) | 2006-02-28 | 2010-05-18 | Mips Technologies, Inc. | System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor |
US7577825B2 (en) | 2006-02-28 | 2009-08-18 | Intel Corporation | Method for data validity tracking to determine fast or slow mode processing at a reservation station |
US20080005504A1 (en) | 2006-06-30 | 2008-01-03 | Jesse Barnes | Global overflow method for virtualized transactional memory |
US7502914B2 (en) | 2006-07-31 | 2009-03-10 | Advanced Micro Devices, Inc. | Transitive suppression of instruction replay |
JPWO2008029450A1 (ja) | 2006-09-05 | 2010-01-21 | 富士通株式会社 | 分岐予測ミスリカバリ機構を有する情報処理装置 |
US7647518B2 (en) | 2006-10-10 | 2010-01-12 | Apple Inc. | Replay reduction for power saving |
US8838663B2 (en) | 2007-03-30 | 2014-09-16 | Intel Corporation | Method and apparatus for performing multiplicative functions |
US7827390B2 (en) | 2007-04-10 | 2010-11-02 | Via Technologies, Inc. | Microprocessor with private microcode RAM |
JP5104863B2 (ja) | 2007-06-20 | 2012-12-19 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US7861066B2 (en) * | 2007-07-20 | 2010-12-28 | Advanced Micro Devices, Inc. | Mechanism for predicting and suppressing instruction replay in a processor |
US8190864B1 (en) | 2007-10-25 | 2012-05-29 | Oracle America, Inc. | APIC implementation for a highly-threaded x86 processor |
US9311085B2 (en) | 2007-12-30 | 2016-04-12 | Intel Corporation | Compiler assisted low power and high performance load handling based on load types |
GB2457303A (en) | 2008-02-11 | 2009-08-12 | Linear Algebra Technologies | Randomly accessing elements of compressed matrix data by calculating offsets from non-zero values of a bitmap |
US7937561B2 (en) | 2008-04-03 | 2011-05-03 | Via Technologies, Inc. | Merge microinstruction for minimizing source dependencies in out-of-order execution microprocessor with variable data size macroarchitecture |
US7937563B2 (en) | 2008-05-27 | 2011-05-03 | Advanced Micro Devices, Inc. | Voltage droop mitigation through instruction issue throttling |
US20090327657A1 (en) | 2008-06-25 | 2009-12-31 | Zeev Sperber | GENERATING AND PERFORMING DEPENDENCY CONTROLLED FLOW COMPRISING MULTIPLE MICRO-OPERATIONS (uops) |
US8566565B2 (en) * | 2008-07-10 | 2013-10-22 | Via Technologies, Inc. | Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications |
CN101526895B (zh) | 2009-01-22 | 2011-01-05 | 杭州中天微系统有限公司 | 基于指令双发射的高性能低功耗嵌入式处理器 |
CN101477454A (zh) | 2009-01-22 | 2009-07-08 | 浙江大学 | 嵌入式处理器的乱序执行控制装置 |
CN101853150B (zh) | 2009-05-29 | 2013-05-22 | 威盛电子股份有限公司 | 非循序执行的微处理器及其操作方法 |
US20100306509A1 (en) | 2009-05-29 | 2010-12-02 | Via Technologies, Inc. | Out-of-order execution microprocessor with reduced store collision load replay reduction |
CN101847094A (zh) | 2009-05-29 | 2010-09-29 | 威盛电子股份有限公司 | 非循序执行的微处理器及其操作方法 |
US8443175B2 (en) | 2009-07-10 | 2013-05-14 | Via Technologies, Inc. | Microprocessor with first processor for debugging second processor |
US8386755B2 (en) | 2009-07-28 | 2013-02-26 | Via Technologies, Inc. | Non-atomic scheduling of micro-operations to perform round instruction |
CN101894009B (zh) | 2009-08-07 | 2013-05-22 | 威盛电子股份有限公司 | 乱序执行的微处理器以及相关执行指令的方法 |
US8332618B2 (en) * | 2009-08-07 | 2012-12-11 | Via Technologies, Inc. | Out-of-order X86 microprocessor with fast shift-by-zero handling |
US8533438B2 (en) | 2009-08-12 | 2013-09-10 | Via Technologies, Inc. | Store-to-load forwarding based on load/store address computation source information comparisons |
US20110078350A1 (en) | 2009-09-30 | 2011-03-31 | Via Technologies, Inc. | Method for generating multiple serial bus chip selects using single chip select signal and modulation of clock signal frequency |
CN101710272B (zh) | 2009-10-28 | 2012-09-05 | 龙芯中科技术有限公司 | 指令调度装置和方法 |
US9104399B2 (en) | 2009-12-23 | 2015-08-11 | International Business Machines Corporation | Dual issuing of complex instruction set instructions |
US8918625B1 (en) | 2010-11-24 | 2014-12-23 | Marvell International Ltd. | Speculative scheduling of memory instructions in out-of-order processor based on addressing mode comparison |
JP5625903B2 (ja) | 2010-12-29 | 2014-11-19 | 富士通株式会社 | 演算処理装置および演算処理方法 |
US8639884B2 (en) * | 2011-02-28 | 2014-01-28 | Freescale Semiconductor, Inc. | Systems and methods for configuring load/store execution units |
CN103765401B (zh) * | 2011-04-07 | 2017-04-12 | 威盛电子股份有限公司 | 一种将有条件加载/存储指令编译成可变数目微指令的微处理器 |
US8862861B2 (en) | 2011-05-13 | 2014-10-14 | Oracle International Corporation | Suppressing branch prediction information update by branch instructions in incorrect speculative execution path |
KR102082242B1 (ko) | 2011-09-06 | 2020-02-27 | 인텔 코포레이션 | 전력 효율적 프로세서 아키텍처 |
US9009449B2 (en) | 2011-11-10 | 2015-04-14 | Oracle International Corporation | Reducing power consumption and resource utilization during miss lookahead |
WO2013147852A1 (en) | 2012-03-30 | 2013-10-03 | Intel Corporation | Instruction scheduling for a multi-strand out-of-order processor |
US9128725B2 (en) | 2012-05-04 | 2015-09-08 | Apple Inc. | Load-store dependency predictor content management |
US9645819B2 (en) | 2012-06-15 | 2017-05-09 | Intel Corporation | Method and apparatus for reducing area and complexity of instruction wakeup logic in a multi-strand out-of-order processor |
GB2503438A (en) | 2012-06-26 | 2014-01-01 | Ibm | Method and system for pipelining out of order instructions by combining short latency instructions to match long latency instructions |
US10241797B2 (en) | 2012-07-17 | 2019-03-26 | Advanced Micro Devices, Inc. | Replay reduction by wakeup suppression using early miss indication |
US9582276B2 (en) | 2012-09-27 | 2017-02-28 | Apple Inc. | Processor and method for implementing barrier operation using speculative and architectural color values |
US9582287B2 (en) | 2012-09-27 | 2017-02-28 | Intel Corporation | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions |
US10235180B2 (en) | 2012-12-21 | 2019-03-19 | Intel Corporation | Scheduler implementing dependency matrix having restricted entries |
US20140189328A1 (en) | 2012-12-27 | 2014-07-03 | Tomer WEINER | Power reduction by using on-demand reservation station size |
GB2514956B (en) | 2013-01-21 | 2015-04-01 | Imagination Tech Ltd | Allocating resources to threads based on speculation metric |
US9256428B2 (en) | 2013-02-06 | 2016-02-09 | International Business Machines Corporation | Load latency speculation in an out-of-order computer processor |
US9116817B2 (en) | 2013-05-09 | 2015-08-25 | Apple Inc. | Pointer chasing prediction |
KR20140139923A (ko) | 2013-05-28 | 2014-12-08 | 한국전자통신연구원 | 멀티코어 프로세서 및 멀티코어 프로세서 시스템 |
US9715389B2 (en) | 2013-06-25 | 2017-07-25 | Advanced Micro Devices, Inc. | Dependent instruction suppression |
US9606806B2 (en) | 2013-06-25 | 2017-03-28 | Advanced Micro Devices, Inc. | Dependence-based replay suppression |
US9483273B2 (en) | 2013-07-16 | 2016-11-01 | Advanced Micro Devices, Inc. | Dependent instruction suppression in a load-operation instruction |
US9489206B2 (en) | 2013-07-16 | 2016-11-08 | Advanced Micro Devices, Inc. | Dependent instruction suppression |
GB2510655B (en) | 2013-07-31 | 2015-02-25 | Imagination Tech Ltd | Prioritizing instructions based on type |
US8879345B1 (en) | 2013-08-21 | 2014-11-04 | Via Technologies, Inc. | Microprocessor mechanism for decompression of fuse correction data |
TWI571797B (zh) | 2013-08-21 | 2017-02-21 | 上海兆芯集成電路有限公司 | 組態資料的處理裝置及方法 |
US9495159B2 (en) | 2013-09-27 | 2016-11-15 | Intel Corporation | Two level re-order buffer |
US9389863B2 (en) | 2014-02-10 | 2016-07-12 | Via Alliance Semiconductor Co., Ltd. | Processor that performs approximate computing instructions |
US9710268B2 (en) | 2014-04-29 | 2017-07-18 | Apple Inc. | Reducing latency for pointer chasing loads |
-
2014
- 2014-12-14 WO PCT/IB2014/003218 patent/WO2016097804A1/en active Application Filing
- 2014-12-14 KR KR1020157032423A patent/KR101820221B1/ko active IP Right Grant
- 2014-12-14 US US14/889,253 patent/US10114794B2/en active Active
-
2015
- 2015-11-20 TW TW104138420A patent/TWI616814B/zh active
- 2015-12-01 CN CN201510866716.4A patent/CN105511839B/zh active Active
- 2015-12-14 CN CN201510930120.6A patent/CN105573721B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105573721B (zh) | 2019-03-01 |
TWI616814B (zh) | 2018-03-01 |
TW201621638A (zh) | 2016-06-16 |
CN105573721A (zh) | 2016-05-11 |
US10114794B2 (en) | 2018-10-30 |
CN105511839B (zh) | 2019-04-05 |
KR101820221B1 (ko) | 2018-02-28 |
WO2016097804A1 (en) | 2016-06-23 |
US20160170766A1 (en) | 2016-06-16 |
CN105511839A (zh) | 2016-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI559223B (zh) | 用以改善在處理器中重新執行載入之裝置與方法 | |
KR101820221B1 (ko) | 프로그래머블 로드 리플레이 억제 메커니즘 | |
KR101822726B1 (ko) | 로드 리플레이를 억제하는 메커니즘 | |
TWI559131B (zh) | 用以改善在處理器中重新執行載入之裝置與方法 | |
EP3032405B1 (en) | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor | |
US9915998B2 (en) | Power saving mechanism to reduce load replays in out-of-order processor | |
KR101819315B1 (ko) | 비순차 프로세서에서 작성 결합 메모리 공간 접근에 따라 로드 리플레이를 억제하기 위한 장치 및 방법 | |
KR101819316B1 (ko) | 비순차 프로세서에서 캐시 불가의존 로드 리플레이를 억제하는 메커니즘 | |
KR101837817B1 (ko) | 비순차 프로세서에서 페이지 워크에 따라 로드 리플레이를 억제하는 메커니즘 | |
TW201633057A (zh) | 用以改善在處理器中重新執行載入之裝置與方法 | |
KR101819314B1 (ko) | 비순차 프로세서에서 오프다이 제어 부재 접근에 따라 로드 리플레이를 억제하는 장치 | |
TWI588741B (zh) | 用以改善在處理器中重新執行載入之裝置與方法 | |
TWI581182B (zh) | 用以改善在處理器中重新執行載入之裝置與方法 | |
KR101837816B1 (ko) | 비순차 프로세서에서 i/o의존 로드 리플레이를 불가능하게 하는 메커니즘 | |
US20160170754A1 (en) | Load replay precluding mechanism | |
US20160170751A1 (en) | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor | |
US20160170756A1 (en) | Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor | |
US10083038B2 (en) | Mechanism to preclude load replays dependent on page walks in an out-of-order processor | |
US9804845B2 (en) | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor | |
US9740271B2 (en) | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor | |
US20160170761A1 (en) | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor | |
US20160170760A1 (en) | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right |