KR20180059857A - 노출된 캐시 스톨들에서 효과적인 클록 스케일링을 위한 방법 및 장치 - Google Patents
노출된 캐시 스톨들에서 효과적인 클록 스케일링을 위한 방법 및 장치 Download PDFInfo
- Publication number
- KR20180059857A KR20180059857A KR1020187011632A KR20187011632A KR20180059857A KR 20180059857 A KR20180059857 A KR 20180059857A KR 1020187011632 A KR1020187011632 A KR 1020187011632A KR 20187011632 A KR20187011632 A KR 20187011632A KR 20180059857 A KR20180059857 A KR 20180059857A
- Authority
- KR
- South Korea
- Prior art keywords
- processor
- state
- register
- pipeline
- load instruction
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 43
- 230000004044 response Effects 0.000 claims abstract description 34
- 230000007704 transition Effects 0.000 claims description 46
- 230000003247 decreasing effect Effects 0.000 claims 2
- 230000009471 action Effects 0.000 description 10
- 101150015860 MC1R gene Proteins 0.000 description 3
- 102100034216 Melanocyte-stimulating hormone receptor Human genes 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Images
Classifications
-
- 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/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
-
- 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/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- 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/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- 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
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/12—Replacement control
-
- 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, 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G06F9/3855—
-
- 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, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
프로세서의 클록 주파수는 캐시 미스(cache miss)로 인한 디스패치 스톨(dispatch stall)에 대한 응답으로 감소된다. 일 실시예에서, 로드 명령이 가장 오래된 로드 명령이고 디스패치 스톨이 존재하는 연속적인 프로세서 사이클들의 수가 임계치를 초과하는 경우, 그리고 최종 레벨 캐시 미스 이래로 프로세서 사이클들의 총 수가 일정 특정된 수를 초과하지 않는 경우, 최종 레벨 캐시 미스를 야기하는 로드 명령에 대해 프로세서 클록 주파수가 감소된다.
Description
[0001]
실시예들은 프로세서들에 관한 것으로서, 보다 상세하게는, 캐시 미스(cache miss)에 대한 응답으로 프로세서 클록 주파수를 스케일링하는 프로세서 마이크로아키텍처들에 관한 것이다.
[0002]
프로세서의 클록 트리(clock tree)는 프로세서에 의해 소비하는 총 전력의 주요 컴포넌트들을 소비할 수 있다. 예를 들어, 일부 현대의 프로세서 설계들의 경우, 클록 트리 동적 전력이 총 프로세서 코어 전력의 15 % 내지 20 % 만큼 높아질 수 있다는 것이 추정되었다. 프로세서 설계가 완전히 클록 게이팅된다는 것을 가정하면, 이러한 예의 경우, 메모리 서브-시스템으로부터의 데이터를 기다릴 때 프로세서가 활성인지 또는 유휴인지에 관계없이, 프로세서는 실행되는 동안 인식할 수 없는 양의 전력을 항상 소산한다.
[0003]
본 발명의 예시적인 실시예들은 노출된 캐시 스톨(exposed cache stall)들에서 효과적인 클록 스케일링을 위한 시스템들 및 방법에 관한 것이다.
[0004]
첨부 도면들은, 본 발명의 실시예들의 설명을 보조하도록 제시되며, 실시예들의 제한이 아니라 그들의 예시를 위해서만 제공된다.
[0005] 도 1은 일 실시예에 따른 프로세서의 고-레벨 마이크로아키텍처(high-level microarchitecture)이다.
[0006] 도 2는 일 실시예에 따른 상태 머신에 대한 상태도이다.
[0007] 도 3a, 도 3b 및 도 3c는 일 실시예에 따른 후보 로드 명령을 검출하기 위한 흐름도들을 예시한다.
[0008] 도 4는 실시예가 애플리케이션을 발견할 수 있는 전자 디바이스를 예시한다.
[0005] 도 1은 일 실시예에 따른 프로세서의 고-레벨 마이크로아키텍처(high-level microarchitecture)이다.
[0006] 도 2는 일 실시예에 따른 상태 머신에 대한 상태도이다.
[0007] 도 3a, 도 3b 및 도 3c는 일 실시예에 따른 후보 로드 명령을 검출하기 위한 흐름도들을 예시한다.
[0008] 도 4는 실시예가 애플리케이션을 발견할 수 있는 전자 디바이스를 예시한다.
[0009]
본 발명의 실시예들은 다음의 설명 및 관련 도면들에서 개시된다. 본 발명의 범위를 벗어나지 않으면서 대안적인 실시예들이 고안될 수 있다. 부가적으로, 본 발명의 잘-알려진 엘리먼트들은 본 발명의 관련된 세부사항들이 모호하지 않도록, 상세히 설명되지 않거나 또는 생략될 것이다.
[0010]
"예시적인"이란 단어는, "예, 경우 또는 예시로서 기능하는" 것을 의미하도록 본원에서 사용된다. "예시적인" 것으로서 본원에서 설명되는 어떠한 실시예도 다른 실시예들에 비해 바람직하거나 또는 유리한 것으로 해석될 필요는 없다. 유사하게, “본 발명의 실시예들”이란 용어는, 본 발명의 실시예들 전부가 논의된 특징, 이점, 또는 동작 모드를 포함하는 것을 요구하지는 않는다.
[0011]
본원에서 사용된 용어는 특정 실시예들을 설명하려는 목적만을 위한 것이며, 본 발명의 실시예들을 제한하는 것으로 의도되지 않는다. 본원에서 사용되는 바와 같이, 맥락이 명확하게 달리 표시하지 않으면, 단수 형태들은 복수 형태들을 또한 포함하는 것으로 의도된다. 추가로, 용어들 "구비하는", "구비", "포함하는" 및/또는 "포함"이 본원에서 사용될 때, 언급된 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 및/또는 컴포넌트들의 존재를 특정하지만, 하나 또는 그 초과의 다른 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들, 및/또는 이들의 그룹들의 존재 또는 부가를 배제하지 않는다는 것이 이해될 것이다.
[0012]
추가로, 많은 실시예들은, 예를 들어, 컴퓨팅 디바이스의 엘리먼트들에 의해 수행되는 액션들의 시퀀스들의 관점들에서 설명된다. 본원에 설명된 다양한 액션들은, 특정 회로들(예를 들어, ASIC(application-specific integrated circuit)들)에 의해, 하나 또는 그 초과의 프로세서들에 의해 실행되는 프로그램 명령들에 의해, 또는 이 둘 모두의 결합에 의해 수행될 수 있다는 것이 인지될 것이다. 부가적으로, 본원에 설명된 이들 액션들의 시퀀스는, 실행 시에, 연관된 프로세서로 하여금 본원에 설명된 기능을 수행하게 하는 컴퓨터 명령들의 대응하는 세트가 저장된 임의의 형태의 컴퓨터 판독 가능 저장 매체 내에서 완전히 실현되는 것으로 고려될 수 있다. 따라서, 본 발명의 다양한 양상들은 다수의 상이한 형태들로 구현될 수 있으며, 이들 전부는 청구되는 청구 대상의 범위 내에 있는 것으로 고려된다. 부가적으로, 본원에 설명된 실시예들 각각에 대해, 임의의 그러한 실시예들의 대응하는 형태는, 예를 들어, 설명된 액션을 수행 "하도록 구성된 로직"으로서 본원에서 설명될 수 있다.
[0013]
일 실시예에 따른 프로세서는, 시스템 메모리로부터 데이터를 기다리는 동안 자신이 스톨될 가능성이 가장 높은 시기를 식별하고, 그 결과, 데이터가 메모리 서브-시스템(예를 들어, 오프-칩 시스템 메모리)으로부터 리턴되기를 기다리는 동안 자신의 클록 주파수를 스케일 다운(scale down)한다. 캐시 스톨 조건이 해제될 때 프로세서는 전체(full) 클록 주파수로 리턴한다. 이 메커니즘은 성능에 인지할 수 있게 영향을 미치지 않으면서 클록 트리에서 소비되는 전력을 감소시키기 위한 것이다.
[0014]
도 1은 일 실시예에 따른 프로세서(100)의 마이크로아키텍처를 예시한다. 예시의 용이함을 위해 통상적인 프로세서 마이크로아키텍처의 모든 컴포넌트들이 도시되는 것은 아니다. 파이프라인(102)은 명령 캐시(104)로부터 명령들, 예컨대, 로드 명령들 또는 저장 명령들을 페치(fetche)하고, 다양한 명령들을 실행하기 위해 데이터 캐시(106)에 액세스하고, 레지스터 파일(108)의 레지스터에 액세스한다.
[0015]
메모리(110)는 시스템 메모리를 포함할 수 있는 오프-칩 메모리, 명령 캐시(104) 또는 데이터 캐시(106) 보다 높은 레벨에 있는 캐시들, 또는 이들의 임의의 결합을 표현한다. 예를 들어, 메모리(110)는 L2(레벨 2) 캐시, 및 휘발성 및 비-휘발성 메모리 둘 모두를 포함할 수 있는 다른 시스템 메모리 컴포넌트들을 포함하는 메모리 계층(memory hierarchy)을 표현할 수 있다.
[0016]
실시예들은 레지스터 파일(108)에 도시된 3개의 레지스터들, 즉 노출된 로드 레지스터(112)로서 지칭되는 레지스터(112); MSHR(114)(miss status handling register; 114)로서 지칭되는 레지스터(114); 및 캐시 미스 리턴 카운터(116)로서 지칭되는 레지스터(116) 중 하나 또는 그 초과를 사용한다. 실제로, 하나 초과의 MSHR들이 있을 수 있다. 따라서, "MSHR들(114)"이라는 용어는 복수의 미스 상태 핸들링 레지스터들을 표시하기 위해 사용될 수 있다. 상태 머신(118)은 레지스터들(112, 114 및 116)에 액세스하고, 입력 포트(122)에서 캐시 미스 신호 및 입력 포트(124)에서 데이터 리턴 신호를 수신한다. 아래에서 보다 상세히 설명되는 바와 같이, 상태 머신(118)은 상태 머신(118)에 저장된 상태, 레지스터들(112, 114 및 116) 중 하나 또는 그 초과에 저장된 값들 및 캐시 미스 신호 및 데이터 리턴 신호에 의존하여 저주파수 또는 고주파수로 클록(120)을 세팅한다.
[0017]
프로세서(100)는 상태 머신으로 간주될 수 있기 때문에, 아래에서 설명되는 바와 같은 상태 머신(118)의 상태는 또한 프로세서(100)의 가능한 상태들로서 간주될 수 있다.
[0018]
도 2는 일 실시예에 따른 상태 머신(118)에 대한 상태 트랜지션 도면(200)을 예시한다. 도 2에는 4개의 상태들, 즉 상태(202), 상태(204), 상태(206) 및 상태(208)가 도시된다. 또한, 상태들(202, 204 및 206)은 각각 HF0 상태, HF1 상태 및 HF2 상태로서 지칭될 수 있으며, 도 2에서 이와 같이 표현된다. 이러한 상태 지정들에서의 "HF"는 "high frequency"에 대한 약호(mnemonic)이며, 여기서, 추가로 설명되는 바와 같이, 프로세서(100)는, 상태 머신(118)이 상태들(HF0, HF1 및 HF2) 중 임의의 하나에 있을 때 정상 동작 주파수, 즉 비교적 고주파수에서 동작(또는 게이팅)된다. 상태(208)는 또한 LF 상태로서 지칭될 수 있으며, 도 2에서 이와 같이 표현된다. "LF"는 "low frequency"에 대한 약호이며, 여기서, 추가로 설명되는 바와 같이, 프로세서(100)는, 상태 머신(118)이 LF 상태에 있을 때 정상 동작 주파수 미만의 주파수, 즉 비교적 저주파수에서 동작(또는 게이팅)된다.
[0019]
도 1의 클록(120)은 클록 신호를 제공하기 위한 생성기, 또는 하나 또는 그 초과의 클록 주파수들에서 동작하도록 프로세서(100)를 게이팅하기 위한 회로를 표현할 수 있다. 따라서, 실시예들을 설명할 때, 클록(120)을 일정 주파수로 세팅한다는 것에 대한 참조는, 프로세서(100)의 동작 주파수가 조정될 수 있도록 프로세서(100)를 게이팅하는 액션을 또한 포함하는 것으로 이해될 것이다.
[0020]
상태 머신(118)은 상태들(202, 204 또는 206) 중 하나에 있을 때 클록(120)은 고주파수에서 동작되는 반면에, 상태 머신(118)이 상태(208)에 있을 때, 클록(120)은 저주파수에서 동작된다. 초기에, 상태 머신(100)은 HF0 상태에 있고, 따라서 이 상태는 또한 초기 상태로서 지칭될 수 있다. 상태(202)(HF0 또는 초기 상태)로부터 상태(204)(HF1 상태)로의 상태 트랜지션(210)은 후보 로드 명령이 검출될 때 발생한다.
[0021]
후보 로드 명령은 최종 레벨 캐시 미스를 야기하는 로드 명령이어서, 이 로드 명령은 최종 레벨 캐시 미스로 인해 디스패치 스톨(dispatch stall)을 야기하고 있는 더 앞서 실행된 로드 명령의 영향 하에 있지 않다. (디스패치 스톨은 때때로 캐시 스톨로서 지칭된다). 즉, 후보 로드 명령은, 파이프라인 (102)에, 최종 레벨 캐시 미스를 야기한 어떠한 다른 미해결(outstanding) 로드 명령도 없을 때 최종 레벨 캐시 미스를 야기하는 로드 명령이다.. "최종 레벨(last level)" 캐시는, 그 캐시가 메모리(110)에 의해 표현된 메모리 계층에서 가장 높은 레벨을 갖다는 것을 지칭한다. 예를 들어, 메모리(110)의 최종 레벨 캐시는 L2(레벨 2) 캐시일 수 있다. 일부 실시예들에서, 최종 레벨 캐시는 프로세서(100)에 통합될 수 있다. 후보 로드 명령을 검출하기 위한 다른 실시예들은 추후에 설명된다.
[0022]
후보 로드 명령을 검출한 것에 대한 응답으로, 파이프라인(102)은 노출된 로드 레지스터(112)의 필드(126)에 로드 명령 ID(identification)를 저장하고, 노출된 로드 레지스터(112)의 콘텐츠가 유효하다는 것을 표시하도록 노출된 로드 레지스터(112)의 필드(128)를 세팅한다. 필드(128)는 유효 필드 또는 유효 비트로서 지칭될 수 있다. 후보 로드 명령을 검출한 것에 대한 이러한 응답은 상태 트랜지션(210) 다음의 괄호 내에 표시된다.
[0023]
HF1 상태로부터 HF2 상태로의 상태 트랜지션(212)은, 후보 로드 명령이 아직 은퇴(retire)하지 않은 가장 오래된 로드 명령임을 프로세서(100)가 결정하는 것에 대한 응답으로 발생한다. 가장 오래된 로드 명령은 로드 큐(130)에 액세스함으로써 결정될 수 있다. 그러나, HF1 상태로부터 HF0 상태로의 상태 트랜지션(211)에 주의한다. 상태 트랜지션(211)은, 상태 머신(118)이 HF1 상태에 진입한 이래로 클록 사이클들의 수가 도 2에서 N1로서 표시된 임계치를 초과할 때 발생한다. 부가적으로, 상태 트랜지션(211)은, (후보 로드 명령에 의해 요청되는) 데이터가 메모리(110)로부터 리트리브되었음을 입력 포트(124)에서의 데이터 리턴 신호가 표시하는 경우, 또는 파이프라인(102)이 플러시(flush)되는 경우에 발생한다. 따라서, 상태 트랜지션(212)은 상태 머신(118)이 HF0 상태로부터 HF1 상태로 트랜지션한 이래로 N1개의 프로세서 클록 사이클들이 경과한 경우 발생하지 않는다. 즉, 상태 머신(118)이 HF0 상태로부터 HF1 상태로 트랜지션한 이래로 N1개의 프로세서 클록 사이클들이 경과하지 않은 조건이 상태 트랜지션(212)에 대한 필요 조건이다.
[0024]
도 1에서 counter_HF 레지스터로서 지칭되는 레지스터(130)는, 상태 머신(118)이 HF0 상태로부터 HF1 상태로 트랜지션한(즉, 상태 머신(118)이 후보 로드 명령을 검출할 때) 이래로 클록 사이클들의 수를 계속 추적하는데 사용될 수 있다. counter_HF 레지스터는 상태 머신(118)이 HF1 상태에 진입할 때 또는 때때로, 그 이전에 초기화되고, 그 후 각각의 프로세서 클록 사이클 마다 증분된다.
[0025]
HF2 상태로부터 LF 상태로의 상태 트랜지션(214)은 디스패치 스톨 변수(TSTALL)가 M1개의 연속적인 클록 사이클들에 도달했음을 프로세서(100)가 검출한 것에 대한 응답으로 발생한다. 일 실시예에서, 디스패치 스톨 변수(TSTALL)는, 후보 로드 명령이 가장 오래된 로드 명령이 되는 시간부터 카운팅을 시작하며, 여기서 디스패치 스톨 변수(TSTALL)는 프로세서 클록 사이클들의 단위들이다. 즉, 디스패치 스톨 변수(TSTALL)는 상태 머신(118)이 HF2 상태에 진입할 때 또는 때때로, 그 이전에 초기화되고, 그 후 각각의 프로세서 클록 사이클마다 증분되며, 여기서 스톨 변수(TSTALL)가 M1에 도달하는 경우 LF 상태가 진입된다. TSTALL의 값은 레지스터(132)에 저장될 수 있으며, 여기서 예를 들어, 상태 머신(118)은 각각의 디스패치 스톨의 시작 시에 0으로 레지스터(132)의 값을 리셋한다.
[0026]
LF 상태에 진입할 때, 상태 머신(118)은 성능 면에서 인지 가능한 손실 없이 전력 절감을 달성하기 위해 저주파수로 클록(120)을 세팅(또는 프로세서(100)를 게이팅)한다. 그러나, 상태 머신(118)이 HF2 상태에 진입한 이래로 클록 사이클들의 수가 도 2에서 N2로서 표시된 임계치를 초과할 때 발생하는, HF2 상태로부터 HF0 상태로의 상태 트랜지션(213)에 주의한다. 정수(N1)는 정수(N2)와 동일할 필요는 없다. 부가적으로, 상태 트랜지션(213)은, (후보 로드 명령에 의해 요청되는) 데이터가 메모리(110)로부터 리트리브되었음을 입력 포트(124)에서의 데이터 리턴 신호가 표시하는 경우, 또는 파이프라인(102)이 플러시되는 경우에 발생한다.
[0027]
따라서, 상태 트랜지션(214)은 상태 머신(118)이 HF1 상태로부터 HF2 상태로 트랜지션한 이래로 N2개의 프로세서 클록 사이클들이 경과하지 않은 경우에만 발생한다. 전술한 바와 같이, 레지스터(130)는 상태 머신(118)이 HF1 상태로부터 HF2 상태로 트랜지션한 이래로 클록 사이클들의 수를 카운트하는데 사용될 수 있다.
[0028]
LF 상태로부터 HF0 상태로의 상태 트랜지션(218)은, 메모리(110)로부터의 데이터가 로드 명령의 타겟 메모리 위치로부터 리턴되는 메모리 리턴에 대한 응답으로, 또는 파이프라인 플러시가 존재할 때 발생한다. 상태 트랜지션(218)에 대한 응답으로, 필드(128)는 노출된 로드 레지스터(112)의 콘텐츠가 더 이상 유효하지 않음을 표시하기 위해 클리어(clear)된다.
[0029]
다른 실시예에서, HF2 상태는 상태 트랜지션(216)에 대해 점선으로 표시된 바와 같이 스킵될 수 있다. 그러한 실시예에서, 후보 로드 명령은 상태 트랜지션(212)에 의해 표시된 바와 같이 가장 오래된 로드 명령인 것으로 결정될 필요는 없다. 오히려, 상태 머신(118)은 디스패치 스톨 변수(TSTALL)가 M2개의 연속적인 클록 사이클에 도달했음을 검출하는 것에 대한 응답으로, HF1 상태로부터 LF 상태로 직접 트랜지션하며, 여기서 이 경우에, 디스패치 스톨 변수(TSTALL)는 최종 레벨 캐시 미스가 발생할 때 즉, 상태 머신(118)이 HF1 상태에 진입했을 때 카운팅을 시작한다. 정수(M1)는 정수(M2)와 동일할 필요는 없다. 그러나 재차, 상태 트랜지션(216)에 대한 필요 조건은, 상태 머신(118)이 HF0 상태로부터 HF1 상태로 트랜지션한 이래로 프로세서 클록 사이클의 수가 N1을 초과하지 않는다는 것이다.
[0030]
도 3a, 도 3b 및 도 3c는 후보 로드 명령을 검출하기 위한 3개의 실시예들을 예시한다. 도 3a에 예시된 실시예를 참조하면, 로드 명령이 최종 레벨 캐시 미스를 야기한 경우(302), 유효한 콘텐츠를 갖는 MSHR들(114)의 수가 결정된다(304). 그러한 레지스터들의 수가 0인 경우, 로드 명령은 후보 로드 명령(306)인 것으로 선언(declare)된다. 소프트웨어 프로세스가 시작될 때, MSHR들(114)은 그의 콘텐츠가 모두가 무효가 되도록 초기화될 수 있다.
[0031]
도 3b에 예시된 실시예에서, 로드 명령이 최종 레벨 캐시 미스를 야기할 때 캐시 미스 리턴 카운터(116)가 증분되고(308), 최종 레벨 캐시 미스를 야기하는 로드 명령에 대한 타겟 메모리 위치로부터의 데이터가 리턴될 때, 즉, 메모리 리턴이 존재할 때, 캐시 미스 리턴 카운터(116)가 감소된다(310). 액션(312)에서 표시된 바와 같이, 최종 레벨 캐시 미스가 존재하고 캐시 미스 리턴 카운터(116)가 0인 것으로 결정될 때마다, 그 최종 레벨 캐시 미스를 야기하는 로드 명령은 후보 로드 명령인 것으로 선언된다. 이는, 0이 캐시 미스 리턴 카운터(116)의 초기 값이라고 가정한다.
[0032]
도 3c에 예시된 실시예에서, 로드 명령이 액션(314)에 표시된 바와 같은 최종 레벨 캐시 미스를 야기하는 경우, 프로세서(100)는 액션(316)에서 노출된 로드 레지스터(112)를 검사한다. 노출된 로드 레지스터(112)의 콘텐츠가 유효하지 않은 경우, 액션(318)에 표시된 바와 같이, 최종 레벨 캐시 미스를 야기하는 로드 명령은 후보 로드 명령인 것으로 선언된다.
[0033]
실시예들은 단지 몇 개만 예를 들자면, 예를 들어, 셀룰러 전화, 랩톱 또는 컴퓨터 서버와 같은 다수의 디바이스들 또는 인터넷 연결성을 갖는 전력 효율적 기기에 적용될 수 있다. 도 4는 실시예가 적용될 수 있는 전자 디바이스의 예를 예시하며, 여기서 상태 머신(118)을 갖는 프로세서(100)가 버스(402)를 통해 메모리(110)에 커플링된다. 도 4의 특정 예에서, 최종 레벨 캐시는 L2 캐시(404)이다. 도 4에는 또한, 라우터, 액세스 포인트 또는 셀룰러 폰 타워로의 무선 연결성이 실현될 수 있도록 안테나(408)에 커플링되는 모뎀(406)이 도시된다. 사용자 인터페이스(410)는 예를 들어, 터치 감지 스크린 또는 키보드와 같이 사용자가 전자 디바이스와 상호작용할 수 있게 하는 하나 또는 그 초과의 디바이스들을 표현한다.
[0034]
정보 및 신호들이 다양한 상이한 기술들 및 기법들 중 임의의 기술 및 기법을 사용하여 표현될 수 있다는 것을 당업자들은 인지할 것이다. 예를 들어, 위의 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들, 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 자기 입자들, 광학 필드들 또는 광학 입자들, 또는 이들의 임의의 결합에 의해 표현될 수 있다.
[0035]
추가로, 본원에 개시된 실시예들과 관련하여 설명된 다양한 예시적인 로직 블록들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 또는 컴퓨터 소프트웨어 및 하드웨어의 결합으로서 구현될 수 있음을 당업자들은 인지할 것이다. 하드웨어와 소프트웨어의 이러한 상호교환 가능성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 그들의 기능성 관점들에서 일반적으로 위에서 설명되었다. 이러한 기능성이 하드웨어로 구현되는지 또는 소프트웨어로 구현되는지 여부는 전체 시스템에 부과되는 설계 제약들 및 특정 애플리케이션에 의존한다. 당업자들은, 설명된 기능성을 각각의 특정 애플리케이션 마다 다양한 방식들로 구현할 수 있지만, 이러한 구현 결정들이 본 발명의 범위를 벗어나게 하는 것으로 해석되어서는 안 된다.
[0036]
본원에서 개시된 실시예들과 관련하여 설명된 방법들, 시퀀스들 및/또는 알고리즘들은, 전자 하드웨어, 또는 프로세서에 의해 실행되는 컴퓨터 소프트웨어 및 하드웨어의 결합("프로세서"는 다수의 프로세서들 또는 다수의 프로세서 코어들을 포함할 수 있다는 것이 이해됨) 및 전자 회로들로서 구현될 수 있다. 실시예의 부분을 구현하기 위한 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드디스크, 제거 가능 디스크, CD-ROM, 또는 당업계에 알려진 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적인 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고, 저장 매체에 정보를 기록할 수 있도록 프로세서에 커플링된다. 대안으로, 저장 매체는 프로세서에 통합될 수 있다.
[0037]
따라서, 본 발명의 실시예는 노출된 캐시 스톨들에서 효과적인 클록 스케일링을 위한 방법을 구현하는 컴퓨터 판독 가능 매체들을 포함할 수 있다. 따라서, 본 발명은 예시된 예들로 제한되지 않으며, 본원에서 설명된 기능성을 수행하기 위한 임의의 수단이 본 발명의 실시예들에 포함된다.
[0038]
위의 개시는 본 발명의 예시적인 실시예들을 도시하지만, 첨부된 청구항들에 의해 정의되는 본 발명의 범위를 벗어남 없이 본원에서 다양한 변경들 및 수정들이 이루어질 수 있다는 것이 주의되어야 한다. 본원에 설명된 본 발명의 실시예들에 따른 방법 청구항들의 기능들, 단계들 및/또는 액션들이 임의의 특정 순서로 수행될 필요는 없다. 또한, 본 발명의 엘리먼트들이 단수로 설명되거나 청구될 수 있지만, 단수에 대한 제한이 명시적으로 언급되지 않으면 복수가 고려된다.
Claims (28)
- 프로세서로서,
레지스터를 갖는 레지스터 파일;
파이프라인(pipeline) ― 다른 최종 레벨 캐시 미스를 야기한 다른 미해결(outstanding) 로드 명령들이 상기 파이프라인에 존재하지 않는 동안 최종 레벨 캐시 미스를 야기하는 로드 명령을 검출 시에, 상기 파이프라인은 상기 레지스터에 상기 로드 명령의 식별정보(identification)를 저장하고, 상기 레지스터의 콘텐츠가 유효하다는 것을 표시하도록 상기 레지스터의 필드를 세팅함 ― ; 및
상기 레지스터 파일 및 상기 파이프라인에 커플링되는 상태 머신을 포함하고,
상기 상태 머신은 상기 파이프라인이 상기 레지스터에 상기 식별정보를 저장하는 것에 대한 응답으로 초기 상태로부터 제 1 상태로 트랜지션(transition)하고, 상기 상태 머신은 상기 로드 명령이 상기 파이프라인에서 가장 오래된 로드 명령이라는 것에 대한 응답으로 상기 제 1 상태로부터 제 2 상태로 트랜지션하고, 상기 상태 머신은, 상기 상태 머신이 상기 제 2 상태로 트랜지션한 이래로 상기 프로세서가 M개의 연속적인 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로 상기 제 2 상태로부터 저주파수 상태로 트랜지션하며, 여기서 M은 정수이고,
상기 프로세서는 상기 상태 머신이 상기 초기, 제 1 또는 제 2 상태들에 있을 때 제 1 클록 주파수에서 동작하고, 상기 상태 머신이 상기 저주파수 상태에 있을 때 제 2 클록 주파수에서 동작하며, 상기 제 1 클록 주파수는 상기 제 2 클록 주파수보다 더 높은,
프로세서. - 제1항에 있어서,
상기 상태 머신은, 상기 로드 명령에 대한 메모리 리턴 또는 파이프라인 플러시(pipeline flush)에 대한 응답으로 상기 저주파수 상태로부터 상기 초기 상태로 트랜지션하는,
프로세서. - 제1항에 있어서,
상기 상태 머신은, 상기 로드 명령에 대한 메모리 리턴, 파이프라인 플러시, 또는 상기 상태 머신이 상기 초기 상태로부터 상기 제 1 상태로 트랜지션한 이래로 상기 프로세서가 N1개의 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로, 상기 제 1 상태로부터 상기 초기 상태로 트랜지션하고, 여기서 N1은 정수인,
프로세서. - 제1항에 있어서,
상기 상태 머신은, 상기 로드 명령에 대한 메모리 리턴, 파이프라인 플러시, 또는 상기 상태 머신이 상기 제 2 상태로 트랜지션한 이래로 상기 프로세서가 N2개의 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로, 상기 제 2 상태로부터 상기 초기 상태로 트랜지션하고, 여기서 N2는 정수인,
프로세서. - 제4항에 있어서,
상기 상태 머신은, 상기 로드 명령에 대한 메모리 리턴, 파이프라인 플러시, 또는 상기 상태 머신이 상기 초기 상태로부터 상기 제 1 상태로 트랜지션한 이래로 상기 프로세서가 N1개의 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로, 상기 제 1 상태로부터 상기 초기 상태로 트랜지션하고, 여기서 N1은 정수인,
프로세서. - 제1항에 있어서,
상기 파이프라인은 상기 상태 머신이 상기 초기 상태로 리턴할 때 상기 레지스터의 콘텐츠가 유효하지 않다는 것을 표시하도록 상기 필드를 세팅하는,
프로세서. - 제1항에 있어서,
상기 파이프라인은, 상기 레지스터의 콘텐츠가 유효하지 않다는 것을 상기 필드가 표시하는 경우, 상기 로드 명령의 식별정보를 상기 레지스터에 저장하는,
프로세서. - 제1항에 있어서,
상기 레지스터 파일은 적어도 하나의 미스 상태 핸들링 레지스터(miss status handling register)를 포함하고,
상기 파이프라인은 상기 적어도 하나의 미스 상태 핸들링 레지스터가 유효하지 않은 콘텐츠를 갖는 경우, 상기 로드 명령의 식별정보를 상기 레지스터에 저장하는,
프로세서. - 제1항에 있어서,
상기 레지스터 파일은 초기 값을 갖는 캐시 미스 리턴 카운터(cache miss return counter)를 포함하고,
상기 파이프라인은 각각의 캐시 미스에 대해 상기 캐시 미스 리턴 카운터를 증분시키고 각각의 메모리 리턴에 대해 상기 캐시 미스 리턴 카운터를 감소시키고;
상기 파이프라인은 상기 캐시 미스 리턴 카운터가 상기 초기 값을 갖는 경우, 상기 로드 명령의 식별정보를 상기 레지스터에 저장하는,
프로세서. - 프로세서로서,
레지스터를 갖는 레지스터 파일;
파이프라인 ― 다른 최종 레벨 캐시 미스를 야기한 다른 미해결 로드 명령들이 상기 파이프라인에 존재하지 않는 동안 최종 레벨 캐시 미스를 야기하는 로드 명령을 검출 시에, 상기 파이프라인은 상기 레지스터에 상기 로드 명령의 식별정보를 저장하고, 상기 레지스터의 콘텐츠가 유효하다는 것을 표시하도록 상기 레지스터의 필드를 세팅함 ― ; 및
상기 레지스터 파일 및 상기 파이프라인에 커플링되는 상태 머신을 포함하고,
상기 상태 머신은 상기 파이프라인이 상기 레지스터에 상기 식별정보를 저장하는 것에 대한 응답으로 초기 상태로부터 제 1 상태로 트랜지션하고, 상기 상태 머신은, 상기 상태 머신이 상기 제 1 상태로 트랜지션한 이래로 상기 프로세서가 M개의 연속적인 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로 상기 제 1 상태로부터 저주파수 상태로 트랜지션하며, 여기서 M은 정수이고,
상기 프로세서는 상기 상태 머신이 상기 초기 상태 또는 상기 제 1 상태에 있을 때 제 1 클록 주파수에서 동작하고, 상기 상태 머신이 상기 저주파수 상태에 있을 때 제 2 클록 주파수에서 동작하며, 상기 제 1 클록 주파수는 상기 제 2 클록 주파수보다 더 높은,
프로세서. - 제10항에 있어서,
상기 상태 머신은, 상기 로드 명령에 대한 메모리 리턴 또는 파이프라인 플러시에 대한 응답으로 상기 저주파수 상태로부터 상기 초기 상태로 트랜지션하는,
프로세서. - 제10항에 있어서,
상기 상태 머신은, 상기 로드 명령에 대한 메모리 리턴, 파이프라인 플러시, 또는 상기 상태 머신이 상기 초기 상태로부터 상기 제 1 상태로 트랜지션한 이래로 상기 프로세서가 N 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로, 상기 제 1 상태로부터 상기 초기 상태로 트랜지션하고, 여기서 N은 정수인,
프로세서. - 제10항에 있어서,
상기 파이프라인은 상기 상태 머신이 상기 초기 상태로 리턴할 때 상기 레지스터의 콘텐츠가 유효하지 않다는 것을 표시하도록 상기 필드를 세팅하는,
프로세서. - 제10항에 있어서,
상기 파이프라인은, 상기 레지스터의 콘텐츠가 유효하지 않다는 것을 상기 필드가 표시하는 경우, 상기 로드 명령의 식별정보를 상기 레지스터에 저장하는,
프로세서. - 제10항에 있어서,
상기 레지스터 파일은 적어도 하나의 미스 상태 핸들링 레지스터를 포함하고,
상기 파이프라인은 상기 적어도 하나의 미스 상태 핸들링 레지스터가 유효하지 않은 콘텐츠를 갖는 경우, 상기 로드 명령의 식별정보를 상기 레지스터에 저장하는,
프로세서. - 제10항에 있어서,
상기 레지스터 파일은 초기 값을 갖는 캐시 미스 리턴 카운터를 포함하고,
상기 파이프라인은 각각의 캐시 미스에 대해 상기 캐시 미스 리턴 카운터를 증분시키고 각각의 메모리 리턴에 대해 상기 캐시 미스 리턴 카운터를 감소시키고;
상기 파이프라인은 상기 캐시 미스 리턴 카운터가 상기 초기 값을 갖는 경우, 상기 로드 명령의 식별정보를 상기 레지스터에 저장하는,
프로세서. - 디스패치 스톨(dispatch stall)들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법으로서,
상기 프로세서는 명령들을 실행하기 위한 파이프라인을 포함하고, 상기 방법은,
다른 최종 레벨 캐시 미스를 야기한 다른 미해결 로드 명령들이 상기 파이프라인에 존재하지 않는 동안 최종 레벨 캐시 미스를 야기하는 로드 명령의 식별정보를, 상기 프로세서의 레지스터에 저장하고, 상기 레지스터의 콘텐츠가 유효하다는 것을 표시하도록 상기 레지스터의 필드를 세팅하는 단계;
상기 파이프라인이 상기 레지스터에 상기 식별정보를 저장하는 것에 대한 응답으로 초기 상태로부터 제 1 상태로 상기 프로세서를 트랜지션하는 단계;
상기 로드 명령이 상기 파이프라인에서 가장 오래된 로드 명령이라는 것에 대한 응답으로 상기 제 1 상태로부터 제 2 상태로 상기 프로세서를 트랜지션하는 단계;
상기 프로세서가 상기 제 2 상태로 트랜지션한 이래로 상기 프로세서가 M개의 연속적인 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로 상기 제 2 상태로부터 저주파수 상태로 상기 프로세서를 트랜지션하는 단계 ― 여기서 M은 정수임 ― ;
상기 초기, 제 1 또는 제 2 상태들에 있을 때 제 1 클록 주파수에서 상기 프로세서를 동작시키는 단계; 및
상기 저주파수 상태에 있을 때 제 2 클록 주파수에서 상기 프로세서를 동작시키는 단계를 포함하고,
상기 제 1 클록 주파수는 상기 제 2 클록 주파수보다 높은,
디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법. - 제17항에 있어서,
상기 로드 명령에 대한 메모리 리턴 또는 파이프라인 플러시에 대한 응답으로 상기 저주파수 상태로부터 상기 초기 상태로 상기 프로세서를 트랜지션하는 단계;
상기 로드 명령에 대한 메모리 리턴, 파이프라인 플러시, 또는 상기 초기 상태로부터 상기 제 1 상태로 트랜지션한 이래로 상기 프로세서가 N1개의 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로, 상기 제 1 상태로부터 상기 초기 상태로 상기 프로세서를 트랜지션하는 단계 ― 여기서 N1은 정수임 ― ;
상기 로드 명령에 대한 메모리 리턴, 파이프라인 플러시, 또는 상기 제 1 상태로부터 상기 제 2 상태로 트랜지션한 이래로 상기 프로세서가 N2개의 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로, 상기 제 2 상태로부터 상기 초기 상태로 상기 프로세서를 트랜지션하는 단계 ― 여기서 N2는 정수임 ― ; 및
상기 초기 상태로 리턴할 때 상기 레지스터의 콘텐츠가 유효하지 않다는 것을 표시하도록 상기 필드를 세팅하는 단계를 더 포함하는,
디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법. - 제17항에 있어서,
상기 로드 명령의 식별정보를 레지스터에 저장하는 단계는 상기 레지스터의 콘텐츠가 유효하지 않다는 것을 상기 필드가 표시하는 경우 발생하는,
디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법. - 제17항에 있어서,
상기 프로세서는 적어도 하나의 미스 상태 핸들링 레지스터를 포함하고, 상기 로드 명령의 식별정보를 상기 프로세서의 레지스터에 저장하는 단계는, 상기 적어도 하나의 미스 상태 핸들링 레지스터들 중 어느 것도 유효한 콘텐츠를 갖지 않는 경우 발생하는,
디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법. - 제17항에 있어서,
상기 레지스터 파일은 초기 값을 갖는 캐시 미스 리턴 카운터를 포함하고, 상기 방법은,
각각의 캐시 미스에 대해 상기 캐시 미스 리턴 카운터를 증분시키는 단계; 및
각각의 메모리 리턴에 대해 상기 캐시 미스 리턴 카운터를 감소시키는 단계를 더 포함하고
상기 로드 명령의 식별정보를 상기 프로세서의 레지스터에 저장하는 단계는, 상기 캐시 미스 리턴 카운터가 상기 초기 값을 갖는 경우 발생하는,
디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법. - 디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법으로서,
상기 프로세서는 명령들을 실행하기 위한 파이프라인을 포함하고, 상기 방법은,
다른 최종 레벨 캐시 미스를 야기한 다른 미해결 로드 명령들이 상기 파이프라인에 존재하지 않는 동안 최종 레벨 캐시 미스를 야기하는 로드 명령의 식별정보를, 상기 프로세서의 레지스터에 저장하고, 상기 레지스터의 콘텐츠가 유효하다는 것을 표시하도록 상기 레지스터의 필드를 세팅하는 단계;
상기 파이프라인이 상기 레지스터에 상기 식별정보를 저장하는 것에 대한 응답으로 초기 상태로부터 제 1 상태로 상기 프로세서를 트랜지션하는 단계;
상기 제 1 상태에 진입한 이래로 상기 프로세서가 M개의 연속적인 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로 상기 제 1 상태로부터 저주파수 상태로 상기 프로세서를 트랜지션하는 단계 ― 여기서 M은 정수임 ― ;
상기 초기 상태 또는 상기 제 1 상태에 있을 때 제 1 클록 주파수에서 상기 프로세서를 동작시키는 단계; 및
상기 저주파수 상태에 있을 때 제 2 클록 주파수에서 상기 프로세서를 동작시키는 단계를 포함하고,
상기 제 1 클록 주파수는 상기 제 2 클록 주파수보다 높은,
디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법. - 제22항에 있어서,
상기 로드 명령에 대한 메모리 리턴 또는 파이프라인 플러시에 대한 응답으로 상기 저주파수 상태로부터 상기 초기 상태로 상기 프로세서를 트랜지션하는 단계;
상기 로드 명령에 대한 메모리 리턴, 파이프라인 플러시, 또는 상기 초기 상태로부터 상기 제 1 상태로 트랜지션한 이래로 상기 프로세서가 N개의 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로, 상기 제 1 상태로부터 상기 초기 상태로 상기 프로세서를 트랜지션하는 단계 ― 여기서 N은 정수임 ― ; 및
상기 초기 상태로 리턴할 때 상기 레지스터의 콘텐츠가 유효하지 않다는 것을 표시하도록 상기 필드를 세팅하는 단계를 더 포함하는,
디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법. - 제22항에 있어서,
상기 로드 명령의 식별정보를 레지스터에 저장하는 단계는 상기 레지스터의 콘텐츠가 유효하지 않다는 것을 상기 필드가 표시하는 경우 발생하는,
디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법. - 제22항에 있어서,
상기 프로세서는 적어도 하나의 미스 상태 핸들링 레지스터를 포함하고, 상기 로드 명령의 식별정보를 상기 프로세서의 레지스터에 저장하는 단계는, 상기 적어도 하나의 미스 상태 핸들링 레지스터들이 유효하지 않은 콘텐츠를 갖는 경우 발생하는,
디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법. - 제22항에 있어서,
상기 레지스터 파일은 초기 값을 갖는 캐시 미스 리턴 카운터를 포함하고, 상기 방법은,
각각의 캐시 미스에 대해 상기 캐시 미스 리턴 카운터를 증분시키는 단계; 및
각각의 메모리 리턴에 대해 상기 캐시 미스 리턴 카운터를 감소시키는 단계를 더 포함하고,
상기 로드 명령의 식별정보를 상기 프로세서의 레지스터에 저장하는 단계는 상기 캐시 미스 리턴 카운터가 상기 초기 값을 갖는 경우 발생하는,
디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법. - 프로세서로서,
레지스터;
명령들을 실행하기 위한 파이프라인;
다른 최종 레벨 캐시 미스를 야기한 다른 미해결 로드 명령들이 상기 파이프라인에 존재하지 않는 동안 최종 레벨 캐시 미스를 야기하는 로드 명령의 식별정보를, 상기 프로세서의 레지스터에 저장하고, 상기 레지스터의 콘텐츠가 유효하다는 것을 표시하도록 상기 레지스터의 필드를 세팅하기 위한 수단;
상기 파이프라인이 상기 레지스터에 상기 식별정보를 저장하는 것에 대한 응답으로 초기 상태로부터 제 1 상태로 트랜지션하기 위한 수단;
상기 로드 명령이 상기 파이프라인에서 가장 오래된 로드 명령이라는 것에 대한 응답으로 상기 제 1 상태로부터 제 2 상태로 트랜지션하기 위한 수단;
상기 프로세서가 상기 제 2 상태에 진입한 이래로 상기 프로세서가 M개의 연속적인 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로 상기 제 2 상태로부터 저주파수 상태로 트랜지션하기 위한 수단 ― 여기서 M은 정수임 ― ;
상기 초기, 제 1 또는 제 2 상태들에 있을 때 제 1 클록 주파수에서 상기 프로세서를 동작시키기 위한 수단; 및
상기 저주파수 상태에 있을 때 제 2 클록 주파수에서 상기 프로세서를 동작시키기 위한 수단을 포함하고,
상기 제 1 클록 주파수는 상기 제 2 클록 주파수보다 높은,
프로세서. - 프로세서로서,
레지스터;
명령들을 실행하기 위한 파이프라인;
다른 최종 레벨 캐시 미스를 야기한 다른 미해결 로드 명령들이 상기 파이프라인에 존재하지 않는 동안 최종 레벨 캐시 미스를 야기하는 로드 명령의 식별정보를, 상기 프로세서의 레지스터에 저장하고, 상기 레지스터의 콘텐츠가 유효하다는 것을 표시하도록 상기 레지스터의 필드를 세팅하기 위한 수단;
상기 파이프라인이 상기 레지스터에 상기 식별정보를 저장하는 것에 대한 응답으로 초기 상태로부터 제 1 상태로 트랜지션하기 위한 수단;
상기 프로세서가 상기 제 1 상태에 진입한 이래로 상기 프로세서가 M개의 연속적인 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로 상기 제 1 상태로부터 저주파수 상태로 트랜지션하기 위한 수단 ― 여기서 M은 정수임 ― ;
상기 초기 상태 또는 상기 제 1 상태에 있을 때 제 1 클록 주파수에서 상기 프로세서를 동작시키기 위한 수단; 및
상기 저주파수 상태에 있을 때 제 2 클록 주파수에서 상기 프로세서를 동작시키기 위한 수단을 포함하고,
상기 제 1 클록 주파수는 상기 제 2 클록 주파수보다 높은,
프로세서.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/865,092 US20170090508A1 (en) | 2015-09-25 | 2015-09-25 | Method and apparatus for effective clock scaling at exposed cache stalls |
US14/865,092 | 2015-09-25 | ||
PCT/US2016/048628 WO2017052966A1 (en) | 2015-09-25 | 2016-08-25 | Method and apparatus for effective clock scaling at exposed cache stalls |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20180059857A true KR20180059857A (ko) | 2018-06-05 |
Family
ID=56997528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187011632A KR20180059857A (ko) | 2015-09-25 | 2016-08-25 | 노출된 캐시 스톨들에서 효과적인 클록 스케일링을 위한 방법 및 장치 |
Country Status (9)
Country | Link |
---|---|
US (1) | US20170090508A1 (ko) |
EP (1) | EP3353625A1 (ko) |
JP (1) | JP2018528548A (ko) |
KR (1) | KR20180059857A (ko) |
CN (1) | CN108027641A (ko) |
BR (1) | BR112018006083A2 (ko) |
CA (1) | CA2998593A1 (ko) |
TW (1) | TW201712553A (ko) |
WO (1) | WO2017052966A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180314289A1 (en) * | 2017-04-28 | 2018-11-01 | Intel Corporation | Modifying an operating frequency in a processor |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7076681B2 (en) * | 2002-07-02 | 2006-07-11 | International Business Machines Corporation | Processor with demand-driven clock throttling power reduction |
US7051227B2 (en) * | 2002-09-30 | 2006-05-23 | Intel Corporation | Method and apparatus for reducing clock frequency during low workload periods |
DE60327953D1 (de) * | 2003-08-26 | 2009-07-23 | Ibm | Prozessor mit anforderungsgesteuerter taktdrosselung zur leistungsreduzierung |
US7461239B2 (en) * | 2006-02-02 | 2008-12-02 | International Business Machines Corporation | Apparatus and method for handling data cache misses out-of-order for asynchronous pipelines |
CN101631051B (zh) * | 2009-08-06 | 2012-10-10 | 中兴通讯股份有限公司 | 时钟调整装置及方法 |
US9377836B2 (en) * | 2013-07-26 | 2016-06-28 | Intel Corporation | Restricting clock signal delivery based on activity in a processor |
-
2015
- 2015-09-25 US US14/865,092 patent/US20170090508A1/en not_active Abandoned
-
2016
- 2016-08-25 WO PCT/US2016/048628 patent/WO2017052966A1/en active Application Filing
- 2016-08-25 EP EP16770809.8A patent/EP3353625A1/en not_active Withdrawn
- 2016-08-25 KR KR1020187011632A patent/KR20180059857A/ko unknown
- 2016-08-25 CA CA2998593A patent/CA2998593A1/en not_active Abandoned
- 2016-08-25 BR BR112018006083A patent/BR112018006083A2/pt not_active Application Discontinuation
- 2016-08-25 CN CN201680054903.5A patent/CN108027641A/zh active Pending
- 2016-08-25 JP JP2018515048A patent/JP2018528548A/ja active Pending
- 2016-09-08 TW TW105129086A patent/TW201712553A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US20170090508A1 (en) | 2017-03-30 |
CA2998593A1 (en) | 2017-03-30 |
EP3353625A1 (en) | 2018-08-01 |
WO2017052966A1 (en) | 2017-03-30 |
TW201712553A (zh) | 2017-04-01 |
CN108027641A (zh) | 2018-05-11 |
JP2018528548A (ja) | 2018-09-27 |
BR112018006083A2 (pt) | 2018-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8448002B2 (en) | Clock-gated series-coupled data processing modules | |
US9092210B2 (en) | Controlling current transients in a processor | |
TWI620121B (zh) | 具有原生切換機制之非對稱多核心處理器 | |
US9411395B2 (en) | Method and apparatus to control current transients in a processor | |
US8543796B2 (en) | Optimizing performance of instructions based on sequence detection or information associated with the instructions | |
US8806253B2 (en) | Power down of execution units for issued instruction accumulation when issue rate of instructions falls below threshold and at least two are independent | |
KR20120058555A (ko) | 조건부 비-분기 명령들의 비-실행을 예측하기 위한 방법들 및 장치들 | |
JP7301955B2 (ja) | ループ終了予測を用いたプロセッサのループモードの促進又は抑制 | |
KR20160065145A (ko) | 데이터 처리장치 및 추론 벡터 연산의 수행 제어방법 | |
WO2017053111A1 (en) | Method and apparatus for dynamically tuning speculative optimizations based on predictor effectiveness | |
KR20210110598A (ko) | 추론적 실행을 위한 보안 예측기 | |
US20070088965A1 (en) | Processor and methods to reduce power consumption of processor components | |
KR20230093442A (ko) | 프로세서에서 추론적 예측 실패 복구시 리플레이를 위한 제어 독립적(ci) 메모리 데이터 의존적(dd)(cimdd) 명령어들로서 로드 기반 제어 독립적(ci) 레지스터 데이터 독립적(di)(cirdi) 명령어들의 예측 | |
KR20180059857A (ko) | 노출된 캐시 스톨들에서 효과적인 클록 스케일링을 위한 방법 및 장치 | |
CN110235103B (zh) | 基于块的微架构中具有不同特权等级的模式之间的推测性转变 | |
US20230096814A1 (en) | Re-reference indicator for re-reference interval prediction cache replacement policy | |
US11113065B2 (en) | Speculative instruction wakeup to tolerate draining delay of memory ordering violation check buffers | |
US10768937B2 (en) | Using return address predictor to speed up control stack return address verification | |
US8996923B2 (en) | Apparatus and method to obtain information regarding suppressed faults | |
KR20180037980A (ko) | Pat(punt avoidance table)를 사용하는 컴퓨터 프로세서에서 메모리 명령 펀트들의 예측 | |
US20080229074A1 (en) | Design Structure for Localized Control Caching Resulting in Power Efficient Control Logic | |
US11880231B2 (en) | Accurate timestamp or derived counter value generation on a complex CPU | |
US20170083336A1 (en) | Processor equipped with hybrid core architecture, and associated method | |
JPH04112327A (ja) | 分岐予測方法 |