KR20180059857A - 노출된 캐시 스톨들에서 효과적인 클록 스케일링을 위한 방법 및 장치 - Google Patents

노출된 캐시 스톨들에서 효과적인 클록 스케일링을 위한 방법 및 장치 Download PDF

Info

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
Application number
KR1020187011632A
Other languages
English (en)
Inventor
쉬밤 프리야다르쉬
아닐 크리쉬나
라구람 다모다란
제프리 토드 브리지스
토마스 필립 스피어
로드니 웨인 스미스
케이트 앨런 보우맨
데이비드 조셉 윈스턴 한스퀸
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20180059857A publication Critical patent/KR20180059857A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3855
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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는 실시예가 애플리케이션을 발견할 수 있는 전자 디바이스를 예시한다.
[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)

  1. 프로세서로서,
    레지스터를 갖는 레지스터 파일;
    파이프라인(pipeline) ― 다른 최종 레벨 캐시 미스를 야기한 다른 미해결(outstanding) 로드 명령들이 상기 파이프라인에 존재하지 않는 동안 최종 레벨 캐시 미스를 야기하는 로드 명령을 검출 시에, 상기 파이프라인은 상기 레지스터에 상기 로드 명령의 식별정보(identification)를 저장하고, 상기 레지스터의 콘텐츠가 유효하다는 것을 표시하도록 상기 레지스터의 필드를 세팅함 ― ; 및
    상기 레지스터 파일 및 상기 파이프라인에 커플링되는 상태 머신을 포함하고,
    상기 상태 머신은 상기 파이프라인이 상기 레지스터에 상기 식별정보를 저장하는 것에 대한 응답으로 초기 상태로부터 제 1 상태로 트랜지션(transition)하고, 상기 상태 머신은 상기 로드 명령이 상기 파이프라인에서 가장 오래된 로드 명령이라는 것에 대한 응답으로 상기 제 1 상태로부터 제 2 상태로 트랜지션하고, 상기 상태 머신은, 상기 상태 머신이 상기 제 2 상태로 트랜지션한 이래로 상기 프로세서가 M개의 연속적인 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로 상기 제 2 상태로부터 저주파수 상태로 트랜지션하며, 여기서 M은 정수이고,
    상기 프로세서는 상기 상태 머신이 상기 초기, 제 1 또는 제 2 상태들에 있을 때 제 1 클록 주파수에서 동작하고, 상기 상태 머신이 상기 저주파수 상태에 있을 때 제 2 클록 주파수에서 동작하며, 상기 제 1 클록 주파수는 상기 제 2 클록 주파수보다 더 높은,
    프로세서.
  2. 제1항에 있어서,
    상기 상태 머신은, 상기 로드 명령에 대한 메모리 리턴 또는 파이프라인 플러시(pipeline flush)에 대한 응답으로 상기 저주파수 상태로부터 상기 초기 상태로 트랜지션하는,
    프로세서.
  3. 제1항에 있어서,
    상기 상태 머신은, 상기 로드 명령에 대한 메모리 리턴, 파이프라인 플러시, 또는 상기 상태 머신이 상기 초기 상태로부터 상기 제 1 상태로 트랜지션한 이래로 상기 프로세서가 N1개의 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로, 상기 제 1 상태로부터 상기 초기 상태로 트랜지션하고, 여기서 N1은 정수인,
    프로세서.
  4. 제1항에 있어서,
    상기 상태 머신은, 상기 로드 명령에 대한 메모리 리턴, 파이프라인 플러시, 또는 상기 상태 머신이 상기 제 2 상태로 트랜지션한 이래로 상기 프로세서가 N2개의 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로, 상기 제 2 상태로부터 상기 초기 상태로 트랜지션하고, 여기서 N2는 정수인,
    프로세서.
  5. 제4항에 있어서,
    상기 상태 머신은, 상기 로드 명령에 대한 메모리 리턴, 파이프라인 플러시, 또는 상기 상태 머신이 상기 초기 상태로부터 상기 제 1 상태로 트랜지션한 이래로 상기 프로세서가 N1개의 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로, 상기 제 1 상태로부터 상기 초기 상태로 트랜지션하고, 여기서 N1은 정수인,
    프로세서.
  6. 제1항에 있어서,
    상기 파이프라인은 상기 상태 머신이 상기 초기 상태로 리턴할 때 상기 레지스터의 콘텐츠가 유효하지 않다는 것을 표시하도록 상기 필드를 세팅하는,
    프로세서.
  7. 제1항에 있어서,
    상기 파이프라인은, 상기 레지스터의 콘텐츠가 유효하지 않다는 것을 상기 필드가 표시하는 경우, 상기 로드 명령의 식별정보를 상기 레지스터에 저장하는,
    프로세서.
  8. 제1항에 있어서,
    상기 레지스터 파일은 적어도 하나의 미스 상태 핸들링 레지스터(miss status handling register)를 포함하고,
    상기 파이프라인은 상기 적어도 하나의 미스 상태 핸들링 레지스터가 유효하지 않은 콘텐츠를 갖는 경우, 상기 로드 명령의 식별정보를 상기 레지스터에 저장하는,
    프로세서.
  9. 제1항에 있어서,
    상기 레지스터 파일은 초기 값을 갖는 캐시 미스 리턴 카운터(cache miss return counter)를 포함하고,
    상기 파이프라인은 각각의 캐시 미스에 대해 상기 캐시 미스 리턴 카운터를 증분시키고 각각의 메모리 리턴에 대해 상기 캐시 미스 리턴 카운터를 감소시키고;
    상기 파이프라인은 상기 캐시 미스 리턴 카운터가 상기 초기 값을 갖는 경우, 상기 로드 명령의 식별정보를 상기 레지스터에 저장하는,
    프로세서.
  10. 프로세서로서,
    레지스터를 갖는 레지스터 파일;
    파이프라인 ― 다른 최종 레벨 캐시 미스를 야기한 다른 미해결 로드 명령들이 상기 파이프라인에 존재하지 않는 동안 최종 레벨 캐시 미스를 야기하는 로드 명령을 검출 시에, 상기 파이프라인은 상기 레지스터에 상기 로드 명령의 식별정보를 저장하고, 상기 레지스터의 콘텐츠가 유효하다는 것을 표시하도록 상기 레지스터의 필드를 세팅함 ― ; 및
    상기 레지스터 파일 및 상기 파이프라인에 커플링되는 상태 머신을 포함하고,
    상기 상태 머신은 상기 파이프라인이 상기 레지스터에 상기 식별정보를 저장하는 것에 대한 응답으로 초기 상태로부터 제 1 상태로 트랜지션하고, 상기 상태 머신은, 상기 상태 머신이 상기 제 1 상태로 트랜지션한 이래로 상기 프로세서가 M개의 연속적인 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로 상기 제 1 상태로부터 저주파수 상태로 트랜지션하며, 여기서 M은 정수이고,
    상기 프로세서는 상기 상태 머신이 상기 초기 상태 또는 상기 제 1 상태에 있을 때 제 1 클록 주파수에서 동작하고, 상기 상태 머신이 상기 저주파수 상태에 있을 때 제 2 클록 주파수에서 동작하며, 상기 제 1 클록 주파수는 상기 제 2 클록 주파수보다 더 높은,
    프로세서.
  11. 제10항에 있어서,
    상기 상태 머신은, 상기 로드 명령에 대한 메모리 리턴 또는 파이프라인 플러시에 대한 응답으로 상기 저주파수 상태로부터 상기 초기 상태로 트랜지션하는,
    프로세서.
  12. 제10항에 있어서,
    상기 상태 머신은, 상기 로드 명령에 대한 메모리 리턴, 파이프라인 플러시, 또는 상기 상태 머신이 상기 초기 상태로부터 상기 제 1 상태로 트랜지션한 이래로 상기 프로세서가 N 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로, 상기 제 1 상태로부터 상기 초기 상태로 트랜지션하고, 여기서 N은 정수인,
    프로세서.
  13. 제10항에 있어서,
    상기 파이프라인은 상기 상태 머신이 상기 초기 상태로 리턴할 때 상기 레지스터의 콘텐츠가 유효하지 않다는 것을 표시하도록 상기 필드를 세팅하는,
    프로세서.
  14. 제10항에 있어서,
    상기 파이프라인은, 상기 레지스터의 콘텐츠가 유효하지 않다는 것을 상기 필드가 표시하는 경우, 상기 로드 명령의 식별정보를 상기 레지스터에 저장하는,
    프로세서.
  15. 제10항에 있어서,
    상기 레지스터 파일은 적어도 하나의 미스 상태 핸들링 레지스터를 포함하고,
    상기 파이프라인은 상기 적어도 하나의 미스 상태 핸들링 레지스터가 유효하지 않은 콘텐츠를 갖는 경우, 상기 로드 명령의 식별정보를 상기 레지스터에 저장하는,
    프로세서.
  16. 제10항에 있어서,
    상기 레지스터 파일은 초기 값을 갖는 캐시 미스 리턴 카운터를 포함하고,
    상기 파이프라인은 각각의 캐시 미스에 대해 상기 캐시 미스 리턴 카운터를 증분시키고 각각의 메모리 리턴에 대해 상기 캐시 미스 리턴 카운터를 감소시키고;
    상기 파이프라인은 상기 캐시 미스 리턴 카운터가 상기 초기 값을 갖는 경우, 상기 로드 명령의 식별정보를 상기 레지스터에 저장하는,
    프로세서.
  17. 디스패치 스톨(dispatch stall)들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법으로서,
    상기 프로세서는 명령들을 실행하기 위한 파이프라인을 포함하고, 상기 방법은,
    다른 최종 레벨 캐시 미스를 야기한 다른 미해결 로드 명령들이 상기 파이프라인에 존재하지 않는 동안 최종 레벨 캐시 미스를 야기하는 로드 명령의 식별정보를, 상기 프로세서의 레지스터에 저장하고, 상기 레지스터의 콘텐츠가 유효하다는 것을 표시하도록 상기 레지스터의 필드를 세팅하는 단계;
    상기 파이프라인이 상기 레지스터에 상기 식별정보를 저장하는 것에 대한 응답으로 초기 상태로부터 제 1 상태로 상기 프로세서를 트랜지션하는 단계;
    상기 로드 명령이 상기 파이프라인에서 가장 오래된 로드 명령이라는 것에 대한 응답으로 상기 제 1 상태로부터 제 2 상태로 상기 프로세서를 트랜지션하는 단계;
    상기 프로세서가 상기 제 2 상태로 트랜지션한 이래로 상기 프로세서가 M개의 연속적인 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로 상기 제 2 상태로부터 저주파수 상태로 상기 프로세서를 트랜지션하는 단계 ― 여기서 M은 정수임 ― ;
    상기 초기, 제 1 또는 제 2 상태들에 있을 때 제 1 클록 주파수에서 상기 프로세서를 동작시키는 단계; 및
    상기 저주파수 상태에 있을 때 제 2 클록 주파수에서 상기 프로세서를 동작시키는 단계를 포함하고,
    상기 제 1 클록 주파수는 상기 제 2 클록 주파수보다 높은,
    디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법.
  18. 제17항에 있어서,
    상기 로드 명령에 대한 메모리 리턴 또는 파이프라인 플러시에 대한 응답으로 상기 저주파수 상태로부터 상기 초기 상태로 상기 프로세서를 트랜지션하는 단계;
    상기 로드 명령에 대한 메모리 리턴, 파이프라인 플러시, 또는 상기 초기 상태로부터 상기 제 1 상태로 트랜지션한 이래로 상기 프로세서가 N1개의 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로, 상기 제 1 상태로부터 상기 초기 상태로 상기 프로세서를 트랜지션하는 단계 ― 여기서 N1은 정수임 ― ;
    상기 로드 명령에 대한 메모리 리턴, 파이프라인 플러시, 또는 상기 제 1 상태로부터 상기 제 2 상태로 트랜지션한 이래로 상기 프로세서가 N2개의 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로, 상기 제 2 상태로부터 상기 초기 상태로 상기 프로세서를 트랜지션하는 단계 ― 여기서 N2는 정수임 ― ; 및
    상기 초기 상태로 리턴할 때 상기 레지스터의 콘텐츠가 유효하지 않다는 것을 표시하도록 상기 필드를 세팅하는 단계를 더 포함하는,
    디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법.
  19. 제17항에 있어서,
    상기 로드 명령의 식별정보를 레지스터에 저장하는 단계는 상기 레지스터의 콘텐츠가 유효하지 않다는 것을 상기 필드가 표시하는 경우 발생하는,
    디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법.
  20. 제17항에 있어서,
    상기 프로세서는 적어도 하나의 미스 상태 핸들링 레지스터를 포함하고, 상기 로드 명령의 식별정보를 상기 프로세서의 레지스터에 저장하는 단계는, 상기 적어도 하나의 미스 상태 핸들링 레지스터들 중 어느 것도 유효한 콘텐츠를 갖지 않는 경우 발생하는,
    디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법.
  21. 제17항에 있어서,
    상기 레지스터 파일은 초기 값을 갖는 캐시 미스 리턴 카운터를 포함하고, 상기 방법은,
    각각의 캐시 미스에 대해 상기 캐시 미스 리턴 카운터를 증분시키는 단계; 및
    각각의 메모리 리턴에 대해 상기 캐시 미스 리턴 카운터를 감소시키는 단계를 더 포함하고
    상기 로드 명령의 식별정보를 상기 프로세서의 레지스터에 저장하는 단계는, 상기 캐시 미스 리턴 카운터가 상기 초기 값을 갖는 경우 발생하는,
    디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법.
  22. 디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법으로서,
    상기 프로세서는 명령들을 실행하기 위한 파이프라인을 포함하고, 상기 방법은,
    다른 최종 레벨 캐시 미스를 야기한 다른 미해결 로드 명령들이 상기 파이프라인에 존재하지 않는 동안 최종 레벨 캐시 미스를 야기하는 로드 명령의 식별정보를, 상기 프로세서의 레지스터에 저장하고, 상기 레지스터의 콘텐츠가 유효하다는 것을 표시하도록 상기 레지스터의 필드를 세팅하는 단계;
    상기 파이프라인이 상기 레지스터에 상기 식별정보를 저장하는 것에 대한 응답으로 초기 상태로부터 제 1 상태로 상기 프로세서를 트랜지션하는 단계;
    상기 제 1 상태에 진입한 이래로 상기 프로세서가 M개의 연속적인 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로 상기 제 1 상태로부터 저주파수 상태로 상기 프로세서를 트랜지션하는 단계 ― 여기서 M은 정수임 ― ;
    상기 초기 상태 또는 상기 제 1 상태에 있을 때 제 1 클록 주파수에서 상기 프로세서를 동작시키는 단계; 및
    상기 저주파수 상태에 있을 때 제 2 클록 주파수에서 상기 프로세서를 동작시키는 단계를 포함하고,
    상기 제 1 클록 주파수는 상기 제 2 클록 주파수보다 높은,
    디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법.
  23. 제22항에 있어서,
    상기 로드 명령에 대한 메모리 리턴 또는 파이프라인 플러시에 대한 응답으로 상기 저주파수 상태로부터 상기 초기 상태로 상기 프로세서를 트랜지션하는 단계;
    상기 로드 명령에 대한 메모리 리턴, 파이프라인 플러시, 또는 상기 초기 상태로부터 상기 제 1 상태로 트랜지션한 이래로 상기 프로세서가 N개의 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로, 상기 제 1 상태로부터 상기 초기 상태로 상기 프로세서를 트랜지션하는 단계 ― 여기서 N은 정수임 ― ; 및
    상기 초기 상태로 리턴할 때 상기 레지스터의 콘텐츠가 유효하지 않다는 것을 표시하도록 상기 필드를 세팅하는 단계를 더 포함하는,
    디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법.
  24. 제22항에 있어서,
    상기 로드 명령의 식별정보를 레지스터에 저장하는 단계는 상기 레지스터의 콘텐츠가 유효하지 않다는 것을 상기 필드가 표시하는 경우 발생하는,
    디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법.
  25. 제22항에 있어서,
    상기 프로세서는 적어도 하나의 미스 상태 핸들링 레지스터를 포함하고, 상기 로드 명령의 식별정보를 상기 프로세서의 레지스터에 저장하는 단계는, 상기 적어도 하나의 미스 상태 핸들링 레지스터들이 유효하지 않은 콘텐츠를 갖는 경우 발생하는,
    디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법.
  26. 제22항에 있어서,
    상기 레지스터 파일은 초기 값을 갖는 캐시 미스 리턴 카운터를 포함하고, 상기 방법은,
    각각의 캐시 미스에 대해 상기 캐시 미스 리턴 카운터를 증분시키는 단계; 및
    각각의 메모리 리턴에 대해 상기 캐시 미스 리턴 카운터를 감소시키는 단계를 더 포함하고,
    상기 로드 명령의 식별정보를 상기 프로세서의 레지스터에 저장하는 단계는 상기 캐시 미스 리턴 카운터가 상기 초기 값을 갖는 경우 발생하는,
    디스패치 스톨들 동안 프로세서의 프로세서 클록 주파수를 스케일링하는 방법.
  27. 프로세서로서,
    레지스터;
    명령들을 실행하기 위한 파이프라인;
    다른 최종 레벨 캐시 미스를 야기한 다른 미해결 로드 명령들이 상기 파이프라인에 존재하지 않는 동안 최종 레벨 캐시 미스를 야기하는 로드 명령의 식별정보를, 상기 프로세서의 레지스터에 저장하고, 상기 레지스터의 콘텐츠가 유효하다는 것을 표시하도록 상기 레지스터의 필드를 세팅하기 위한 수단;
    상기 파이프라인이 상기 레지스터에 상기 식별정보를 저장하는 것에 대한 응답으로 초기 상태로부터 제 1 상태로 트랜지션하기 위한 수단;
    상기 로드 명령이 상기 파이프라인에서 가장 오래된 로드 명령이라는 것에 대한 응답으로 상기 제 1 상태로부터 제 2 상태로 트랜지션하기 위한 수단;
    상기 프로세서가 상기 제 2 상태에 진입한 이래로 상기 프로세서가 M개의 연속적인 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로 상기 제 2 상태로부터 저주파수 상태로 트랜지션하기 위한 수단 ― 여기서 M은 정수임 ― ;
    상기 초기, 제 1 또는 제 2 상태들에 있을 때 제 1 클록 주파수에서 상기 프로세서를 동작시키기 위한 수단; 및
    상기 저주파수 상태에 있을 때 제 2 클록 주파수에서 상기 프로세서를 동작시키기 위한 수단을 포함하고,
    상기 제 1 클록 주파수는 상기 제 2 클록 주파수보다 높은,
    프로세서.
  28. 프로세서로서,
    레지스터;
    명령들을 실행하기 위한 파이프라인;
    다른 최종 레벨 캐시 미스를 야기한 다른 미해결 로드 명령들이 상기 파이프라인에 존재하지 않는 동안 최종 레벨 캐시 미스를 야기하는 로드 명령의 식별정보를, 상기 프로세서의 레지스터에 저장하고, 상기 레지스터의 콘텐츠가 유효하다는 것을 표시하도록 상기 레지스터의 필드를 세팅하기 위한 수단;
    상기 파이프라인이 상기 레지스터에 상기 식별정보를 저장하는 것에 대한 응답으로 초기 상태로부터 제 1 상태로 트랜지션하기 위한 수단;
    상기 프로세서가 상기 제 1 상태에 진입한 이래로 상기 프로세서가 M개의 연속적인 프로세서 클록 사이클들에 걸쳐 동작하는 것에 대한 응답으로 상기 제 1 상태로부터 저주파수 상태로 트랜지션하기 위한 수단 ― 여기서 M은 정수임 ― ;
    상기 초기 상태 또는 상기 제 1 상태에 있을 때 제 1 클록 주파수에서 상기 프로세서를 동작시키기 위한 수단; 및
    상기 저주파수 상태에 있을 때 제 2 클록 주파수에서 상기 프로세서를 동작시키기 위한 수단을 포함하고,
    상기 제 1 클록 주파수는 상기 제 2 클록 주파수보다 높은,
    프로세서.

KR1020187011632A 2015-09-25 2016-08-25 노출된 캐시 스톨들에서 효과적인 클록 스케일링을 위한 방법 및 장치 KR20180059857A (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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) 分岐予測方法