KR20130115090A - 캐시 제어를 위한 방법 및 장치 - Google Patents

캐시 제어를 위한 방법 및 장치 Download PDF

Info

Publication number
KR20130115090A
KR20130115090A KR1020127032300A KR20127032300A KR20130115090A KR 20130115090 A KR20130115090 A KR 20130115090A KR 1020127032300 A KR1020127032300 A KR 1020127032300A KR 20127032300 A KR20127032300 A KR 20127032300A KR 20130115090 A KR20130115090 A KR 20130115090A
Authority
KR
South Korea
Prior art keywords
ways
power
processor
cache
operating point
Prior art date
Application number
KR1020127032300A
Other languages
English (en)
Other versions
KR101673500B1 (ko
Inventor
알렉산더 브랜오버
노먼 엠. 해크
마우리스 비. 스타인맨
존 카라마티아노스
조나단 엠. 오웬
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20130115090A publication Critical patent/KR20130115090A/ko
Application granted granted Critical
Publication of KR101673500B1 publication Critical patent/KR101673500B1/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/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • 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/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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
    • 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/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • 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
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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
    • 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/1028Power efficiency
    • 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

Landscapes

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

Abstract

캐시 사이즈를 동적으로 제어하는 방법 및 장치가 개시된다. 일 실시예에서, 방법은 프로세서의 동작점을 제1동작점으로부터 제2동작점으로 변경하는 단계와, 상기 동작점을 변경한 것에 응답하여 캐시 메모리의 하나 이상의 웨이로부터 전력을 선택적으로 제거하는 단계를 포함한다. 상기 방법은 상기 캐시 메모리의 하나 이상의 웨이로부터 전력을 제거한 것에 후속하여 상기 프로세서에 하나 이상의 명령을 처리하는 단계를 더 포함하며, 상기 처리는 전력이 제거되지 않은 캐시 메모리의 하나 이상의 웨이에 액세스하는 것을 포함한다.

Description

캐시 제어를 위한 방법 및 장치{METHOD AND APPARATUS FOR CACHE CONTROL}
본 발명은 프로세서에 관한 것으로, 보다 상세하게는 프로세서 내 캐시 메모리에 관한 것이다.
캐시 메모리는 컴퓨터 시스템 프로세서의 성능에서 주요 특징이다. 프로세서 기술이 개선되고 성능에 대한 요구가 증가함에 따라 캐시 메모리의 수와 용량이 따라 증가하였다. 일부 프로세서는 캐시 메모리의 단일 레벨 또는 단일 캐시를 가질 수 있는 반면, 다른 프로세서는 다수의 캐시 레벨을 가질 수 있다. 일부 캐시 메모리는 데이터를 저장하는데 사용될 수 있는 반면, 다른 캐시 메모리는 명령을 저장하는데 사용될 수 있으며, 일부는 이들 둘 모두를 저장할 수 있다. 다른 유형의 정보(예를 들어, 어드레스 변환)를 저장하기 위한 캐시 메모리가 또한 일부 프로세서에 사용된다.
캐시 메모리는 프로세서 코어의 실행 유닛에 대한 근접성에 기초하여 레벨에 의해 한정될 수 있다. 예를 들어, 레벨 1(L1) 캐시는 실행 유닛(들)에 가장 가까운 캐시일 수 있고, 레벨 2(L2) 캐시는 실행 유닛(들)에 두 번째 가까운 캐시일 수 있고, 레벨 3(L3) 캐시는 실행 유닛(들)에 세 번째 가까운 캐시일 수 있다. 실행될 명령에 대한 정보(예를 들어, 오퍼런드(operand))에 액세스할 때 실행 유닛은 제일 먼저 L1 캐시에 조회할 수 있다. 이 정보가 L1 캐시에 저장되어 있지 않으면(즉, 캐시 미스(miss)), L2 캐시에 조회할 수 있고, 이와 같이 조회할 수 있다. 이 정보가 임의의 캐시에 저장되어 있지 않으면, 이 정보는 메인 메모리와 같은 다른 저장 매체로부터 또는 디스크 저장 매체로부터 액세스될 수 있다. 메모리 및 디스크 저장 액세스와 연관된 지연시간(latency)이 캐시 액세스와 연관된 지연시간보다 휠씬 더 크므로, 캐시 메모리는 더 많은 데이터 및/또는 명령을 수용하도록 더 커지게 된다. 그러나, 이들 더 큰 캐시 메모리는 더 작은 캐시 메모리보다 더 많은 전력을 소비할 수 있다. 따라서, 일부 프로세서는 프로세서가 휴지 상태(idle)일 때 캐시 메모리의 일부나 전부에 전력을 제거할 수 있다.
캐시 사이즈를 동적으로 제어하는 방법 및 장치가 개시된다. 일 실시예에서, 방법은 프로세서의 동작점(operating point)을 제1동작점으로부터 제2동작점으로 변경시키는 단계; 및 상기 동작점을 변경한 것에 응답하여 캐시 메모리의 하나 이상의 웨이로부터 전력을 선택적으로 제거하는 단계를 포함한다. 상기 방법은 캐시 메모리의 하나 이상의 웨이(way)로부터 전력을 제거한 것에 후속하여 프로세서에 하나 이상의 명령을 처리하는 단계를 더 포함하며, 여기서 상기 처리는 전력이 제거되지 않은 캐시 메모리의 하나 이상의 웨이에 액세스하는 것을 포함한다.
일 실시예에서, 프로세서는 적어도 하나의 실행 유닛, 복수의 웨이를 구비하는 캐시 메모리 및 전력 관리 유닛을 포함한다. 전력 관리 유닛은 프로세서가 동작점을 제1동작점으로부터 제2동작점으로 변경한 것에 응답하여 복수의 웨이의 제1서브세트로부터 전력을 선택적으로 제거하도록 구성된다. 적어도 하나의 실행 유닛은 복수의 웨이의 제1서브세트로부터 전력을 선택적으로 제거한 것에 후속하여 전력이 제거되지 않은 복수의 웨이의 제2서브세트 중 하나 이상의 웨이에 액세스하도록 구성된다.
다른 실시예에서, 방법은 명령을 실행하는 프로세서에 대한 CIPS(committed instructions per second) 값을 결정하는 단계, 임계값과 보호 대역값(guard band value)의 합계를 계산하는 단계 및 상기 CIPS값을 상기 임계값 및 상기 합계와 비교하는 단계를 포함한다. 상기 방법은 CIPS값이 임계값보다 작으면 캐시 메모리의 복수의 웨이의 서브세트로부터 전력을 선택적으로 제거하는 단계, 상기 CIPS값이 합계보다 크다면 복수의 웨이들 각각에 전력이 온(on)되도록 캐시 메모리에서 이전에 전력 다운된 웨이에 전력을 온하는 단계를 더 포함한다. CIPS값이 임계값보다 크거나 합계보다 작으면, 캐시 메모리의 어떠한 추가적인 웨이도 전력 온 또는 전력 오프되지 않는다.
캐시 사이즈를 동적으로 제어하는 방법의 다른 실시예는 제1성능 상태로부터 제2성능 상태로 프로세서의 성능 상태를 변경하는 단계를 포함하며, 여기서 제1성능 상태는 제1전압과 제1클록 주파수에서 프로세서의 코어를 동작시키는 단계를 포함한다. 제2성능 상태는 제1클록 주파수보다 작은 제2클록 주파수와 제1전압보다 작은 제2전압에서 코어를 동작시키는 단계를 포함한다. 상기 방법은 성능 상태를 변경한 것에 응답하여 캐시 메모리의 하나 이상의 웨이로부터 전력을 선택적으로 제거하는 단계, 및 캐시 메모리의 하나 이상의 웨이로부터 전력을 제거한 것에 후속하여 프로세서의 코어에 하나 이상의 명령을 처리하는 단계를 더 포함하며, 상기 처리는 상기 코어가 전력이 제거되지 않은 캐시 메모리의 하나 이상의 웨이에 액세스하는 것을 포함한다.
본 발명의 다른 측면은 첨부 도면을 참조하여 이하 상세한 설명을 판독함으로써 명백하게 될 것이다.
도 1은 프로세서의 일 실시예의 블록도;
도 2는 프로세서의 다른 실시예의 블록도;
도 3은 캐시 메모리의 일 실시예에 연결된 전력 관리 유닛의 일 실시예를 도시하는 블록도;
도 4는 전력 관리 유닛의 일 실시예의 블록도;
도 5는 프로세서의 여러 동작점에 대한 캐시 메모리의 동적 제어를 도시하는 일련의 블록도;
도 6은 동적 캐시 제어 방법의 일 실시예의 흐름도;
도 7은 동적 캐시 제어 방법의 다른 실시예의 흐름도;
도 8은 다중 코어 프로세서의 일 실시예의 블록도;
도 9는 컴퓨터 시스템의 일 실시예의 블록도;
도 10은 캐리어 매체의 일 실시예의 블록도.
본 발명이 여러 변형과 대안적인 형태를 가질 수 있으나, 그 특정 실시예들이 도면에 예를 위해 도시되고 본 명세서에 상세히 설명된다. 그러나, 본 도면과 상세한 설명은 개시된 특정 형태로 본 발명을 제한하려는 것이 아니라, 이와는 반대로 본 발명은 첨부된 청구범위에 한정된 본 발명의 사상과 범위 내에 있는 모든 변형, 균등물 및 대안을 포함하려는 것이라는 것을 이해하여야 할 것이다.
프로세서 실시예의 개요:
도 1은 프로세서(100)의 일 실시예의 블록도이다. 프로세서(100)는 시스템 메모리(200)에 저장된 명령을 실행하도록 구성된다. 많은 이들 명령은 시스템 메모리(200)에 저장된 데이터에 작용한다. 시스템 메모리(200)는 컴퓨터 시스템을 통해 물리적으로 분배될 수 있고 및/또는 하나 이상의 프로세서(100)에 의해 액세스될 수 있다는 것이 주목된다.
도시된 실시예에서, 프로세서(100)는 레벨 1(L1) 명령 캐시(106)와 L1 데이터 캐시(128)를 포함할 수 있다. 프로세서(100)는 명령 캐시(106)에 연결된 프리페치 유닛(prefetch unit)(108)을 포함할 수 있다. 디스패치 유닛(dispatch unit)(104)은 명령 캐시(106)로부터 명령을 수신하고 스케줄러(들)(118)를 디스패치하도록 구성될 수 있다. 하나 이상의 스케줄러(118)는 디스패치 유닛(104)으로부터 디스패치된 동작을 수신하고 하나 이상의 실행 유닛(들)(124)으로 이 동작을 발송(issue)하도록 연결될 수 있다. 실행 유닛(들)(124)은 하나 이상의 정수 유닛(integer unit), 하나 이상의 부동 소수점 유닛(floating point unit) 및 하나 이상의 부하/저장 유닛(load/store unit)을 포함할 수 있다. 실행 유닛(들)(124)에 의해 생성된 결과는 하나 이상의 결과 버스(result bus)(130)에 출력될 수 있다(단일 결과 버스만이 명료화를 위해 여기에 도시되어 있으나, 다수의 결과 버스들이 가능하고 고려된다). 이들 결과는 후속적으로 발송된 명령에 대한 오퍼런드 값으로 사용되고 및/또는 레지스터 파일(register file)(116)에 저장될 수 있다. 퇴거 큐(retire queue)(102)는 스케줄러(들)(118)와 디스패치 유닛(104)에 연결될 수 있다. 퇴거 큐(102)는 각 발송된 동작이 퇴거될 수 있을 때를 결정하도록 구성될 수 있다.
일 실시예에서, 프로세서(100)는 (Intel Architecture-32 또는 IA-32라고도 알려진) x86 아키텍처와 호환되도록 설계될 수 있다. 다른 실시예에서, 프로세서(100)는 64-비트 아키텍처와 호환될 수 있다. 다른 아키텍처와 호환가능한 프로세서(100)의 실시예들이 또한 고려된다.
프로세서(100)는 많은 다른 성분을 더 포함할 수 있다는 것이 주목된다. 예를 들어, 프로세서(100)는 명령 쓰레드(instruction threads)를 실행할 때 브랜치를 추정하도록 구성된 브랜치 추정 유닛(미도시)을 포함할 수 있다. 프로세서(100)는 또한 메모리(200)에 대해 판독과 기록을 제어하도록 구성된 메모리 제어기를 포함할 수 있다.
명령 캐시(instruction cache)(106)는 디스패치 유닛(104)에 의하여 페치되기 위한 명령을 저장할 수 있다. 명령 코드는 프리페치 유닛(108)을 통해 시스템 메모리(200)로부터 코드를 프리페치하는 것에 의해 저장을 위한 명령 캐시(106)에 제공될 수 있다. 명령 캐시(106)는 여러 구성(예를 들어, 세트-연관, 완전-연관 또는 직접 맵핑된)으로 구현될 수 있다.
프로세서(100)는 레벨 2(L2) 캐시(140)를 더 포함할 수 있다. 반면, 명령 캐시(106)는 명령을 저장하는데 사용될 수 있고, 데이터 캐시(128)는 데이터(예를 들어, 오퍼런드)를 저장하는데 사용될 수 있고, L2 캐시(140)는 명령과 데이터를 저장하는데 단일화하여 사용될 수 있다. 여기서 명시적으로 도시되지는 않았으나, 일부 실시예는 레벨 3(L3) 캐시를 더 포함할 수 있다. 일반적으로, 캐시 레벨의 수는 실시예마다 다를 수 있다.
프리페치 유닛(108)은 명령 캐시(106) 내에 저장하기 위한 시스템 메모리(200)로부터 명령 코드를 프리페치할 수 있다. 프리페치 유닛(108)은 다양한 특정 코드 프리페치 기술과 알고리즘을 사용할 수 있다.
디스페치 유닛(104)은 오퍼런드 어드레스 정보, 즉시 데이터(immediate data) 및/또는 변위 데이터(displacement data) 뿐만 아니라 실행 유닛(들)(124)에 의해 실행가능한 동작을 출력할 수 있다. 일부 실시예에서, 디스패치 유닛(104)은 실행 유닛(들)(124) 내에서 실행가능한 동작으로 특정 명령을 디코딩하기 위한 디코딩 회로(미도시)를 포함할 수 있다. 간단한 명령은 단일 동작에 대응할 수 있다. 일부 실시예에서, 더 복잡한 명령은 다수의 동작에 대응할 수 있다. 레지스터의 업데이트를 수반하는 동작을 디코딩할 때 레지스터 파일(116) 내 레지스터 위치는 추론(speculative) 레지스터 상태를 저장하도록 예비될 수 있다(다른 실시예에서, 재정렬 버퍼가 각 레지스터에 대한 하나 이상의 추론 레지스터 상태를 저장하는데 사용될 수 있고 레지스터 파일(116)은 각 레지스터에 대해 전달된(committed) 레지스터 상태를 저장할 수 있다). 레지스터 맵(134)은 레지스터 재명명(renaming)을 용이하게 하기 위하여 소스 및 목적지 오퍼런드의 논리 레지스터 이름(name)을 물리적 레지스터의 수(number)로 변환할 수 있다. 레지스터 맵(134)은 레지스터 파일(116) 내 어느 레지스터들이 현재 할당되고 할당되지 않았는지를 추적할 수 있다.
도 1의 프로세서(100)는 비순차 명령 실행(out of order execution)을 지원할 수 있다. 퇴거 큐(102)는 레지스터 판독 및 기록 동작을 위해 원래의 프로그램 시퀀스를 추적하고, 추론 명령 실행 및 브랜치 미스추정 복구(branch misprediction recovery)를 허용하고, 정확한 예외(exceptions)를 허용할 수 있다. 일부 실시예에서, 퇴거 큐(102)는 추론 레지스터 상태를 위한 데이터 값 저장소(예를 들어, 재정렬 버퍼와 유사한)를 제공하는 것에 의해 레지스터 재명명을 또한 지원할 수 있다. 다른 실시예에서, 퇴거 큐(102)는 재정렬 버퍼와 유사하게 기능할 수 있으나 임의의 데이터 값 저장을 제공하지는 않을 수 있다. 동작이 퇴거됨에 따라, 퇴거 큐(102)는 추론 레지스터 상태를 저장하는데 더 이상 필요치 않는 레지스터 파일(116)에서 레지스터를 할당 해제하고 어느 레지스터가 현재 자유로운지를 나타내는 신호를 레지스터 맵(134)에 제공할 수 있다. 이들 상태를 생성한 동작들이 검증(validated)될 때까지, 레지스터 파일(116) 내에 (또는 대안적인 실시예에서 재정렬 버퍼 내에) 추론 레지스터 상태를 유지하는 것에 의해, 미스추정된 경로를 따라 추론-실행된 동작의 결과는 브랜치 추정이 잘못된 경우 레지스터 파일(116)에서 검증되지 않을 수 있다.
일 실시예에서, 레지스터 파일(116)의 주어진 레지스터가 실행된 명령의 데이터 결과를 저장하도록 구성될 수 있고, 실행된 명령에 의하여 업데이트될 수 있는 하나 이상의 플래그 비트를 또한 저장할 수 있다. 플래그 비트는 (덧셈 또는 곱셈 동작의 결과로서 올림(carry) 또는 오버플로우(overflow) 상황이 존재하는 것을 나타내는) 후속하는 명령을 실행할 때 중요할 수 있는 여러 유형의 정보를 운반할 수 있다. 아키텍처적으로, 플래그 레지스터는 플래그를 저장하는 것으로 한정될 수 있다. 따라서, 주어진 레지스터에의 기록은 논리 레지스터와 플래그 레지스터를 업데이트할 수 있다. 모든 명령이 하나 이상의 플래그를 업데이트할 수 있는 것은 아니라는 것이 주목되어야 한다.
레지스터 맵(134)은 동작을 위해 목적 오퍼런드로 특정된 특정 논리 레지스터(예를 들어, 아키텍처된 레지스터 또는 마이크로아키텍처적으로 특정된 레지스터)에 물리적 레지스터를 할당할 수 있다. 디스패치 유닛(104)은 레지스터 파일(116)이 주어진 동작에서 소스 오퍼런드로 특정된 논리 레지스터에 할당된, 이전에 할당된 물리적 레지스터를 가지는지를 결정할 수 있다. 레지스터 맵(134)은 논리 레지스터에 가장 최근에 할당된 물리적 레지스터에 대한 태그를 제공할 수 있다. 이 태그는 레지스터 파일(116)에서 오퍼런드의 데이터 값에 액세스하거나 결과 버스(130)로 포워드하는 결과를 통해 데이터 값을 수신하는데 사용될 수 있다. 오퍼런드가 메모리 위치에 대응하는 경우, 오퍼런드 값은 (레지스터 파일(116)에 결과 포워드 및/또는 저장을 위해) 부하/저장 유닛(미도시)을 통해 결과 버스에 제공될 수 있다. 오퍼런드 데이터 값은 동작이 하나의 스케줄러(들)(118)에 의해 발송된 때 실행 유닛(들)(124)에 제공될 수 있다. 대안적인 실시예에서, 오퍼런드 값은 (동작이 발송될 때 대응하는 실행 유닛(124)에 제공되는 대신에) 동작이 디스패치될 때 대응하는 스케줄러(118)에 제공될 수 있다.
본 명세서에 사용된 바와 같이, 스케줄러는 동작이 하나 이상의 실행 유닛으로 실행 및 발송 준비 동작 준비가 된 때를 검출하는 디바이스이다. 예를 들어, 예비 스테이션이 하나의 유형의 스케줄러일 수 있다. 실행 유닛마다 독립적인 예비 스테이션이 제공될 수 있고 또는 동작이 발송된 중앙 예비 스테이션이 제공될 수 있다. 다른 실시예에서, 동작을 유지한 중앙 스케줄러가 퇴거 때까지 사용될 수 있다. 각 스케줄러(118)는 실행 유닛(124)으로 발송 대기하는 여러 계류 중인 동작에 대한 동작 정보(예를 들어, 오퍼런드 값, 오퍼런트 태그 및/또는 즉시 데이터 및 동작)를 보유할 수 있다. 일부 실시예에서, 각 스케줄러(118)는 오퍼런드 값 저장을 제공하지 않을 수 있다. 대신, 각 스케줄러는 오퍼런드 값이 (레지스터 파일(116) 또는 결과 버스(130)로부터) 실행 유닛(들)(124)에 의하여 판독되도록 이용가능한 때를 결정하기 위하여 레지스터 파일(116)에 이용가능한 결과와 발송된 동작을 모니터링할 수 있다.
일부 실시예에서, 내부에 도시된 하나 이상의 캐시는 특정 캐시 웨이를 선택적으로 전력 다운(power down) 또는 전력 업(power up)시키는 것에 의해 동작 동안 동적으로 사이즈 재조정(resized)될 수 있다. 프로세서는 주어진 캐시의 일부 웨이들이 전력 다운된 후에도 활성 상태(active state)에서 계속 동작할 수 있다. 나머지 캐시 웨이(즉, 전력이 여전히 제공되는 캐시 웨이)는 하나 이상의 실행 유닛(들)(124)에 의해 명령 실행 동안 액세스될 수 있다. 따라서, 프로세서(100)가 휴지일 때에만 캐시 웨이를 전력 다운하는 대신, 일부 캐시 웨이는 프로세서(100)가 활성 상태에 있는 것을 여전히 허용하면서도 전력 다운될 수 있다. 이것은 프로세서가 계속 활성을 유지하게 하면서 전력 소비를 줄일 수 있다. 전력을 보존하기 위하여 캐시 사이즈를 동적으로 제어하는 프로세서(100) 및 방법의 여러 실시예는 이제 도 2에서 시작하여 보다 상세히 설명된다.
도 2는 프로세서의 다른 실시예의 블록도이다. 도 1에도 포함된 특정 유닛은 여기서 동일한 것으로 지시되며 도 2의 실시예에서 동일하거나 유사한 기능을 수행할 수 있다. 도시된 실시예에서, 프로세서(100)는 전술된 여러 유닛에 더하여, 전력 관리 유닛(150), 성능 상태/모드 제어기(135)(이후 '상태 제어기(135)'라 칭함) 및 메모리 제어기(145)를 포함한다. 클록 제어 회로(136)와 조절가능한 전압 조절기(137)는 또한 도시된 실시예에서 프로세서(100)에 연결된 것으로 도시되어 있으나, 이들 유닛이 온칩에(즉, 프로세서(100)와 동일한 IC 다이 상에) 구현된 실시예도 가능하고 고려된다. 예를 들어, 클록 제어 및 전압 조절/제어 기능은 상태 제어기(135) 내에서 구현될 수 있다.
도시된 실시예에서, 프로세서(100)는 L2 캐시(140)에 연결된 전력 관리 유닛을 포함하고, 그 사이즈는 주어진 시간에 어느 웨이에 전력을 온 할지를 선택적으로 제어하는 것에 의해 동적으로 제어가능하다. L2 캐시(140)의 선택된 웨이는 실행 유닛(들)(124)의 작업부하가 감소할 때 전력 다운될 수 있다. 이와 유사하게, 다수의 캐시 웨이가 전력 다운될 때, L2 캐시(140)의 선택된 웨이는 실행 유닛(들)(124)의 작업부하가 증가하는 경우 전력 온 될 수 있다. L1 캐시가 이와 유사하게 제어가능한 실시예도 가능하고 고려되며 예는 이하에서 상세히 설명된다.
다수의 여러 메트릭 중 하나 이상이 L2 캐시(140)의 특정 웨이들이 전력 다운되는지 여부를 결정할 때 전력 관리 유닛(150)에 의해 사용될 수 있다. 프로세서의 동작점은 메트릭 중 적어도 하나에 의해 한정될 수 있으며 메트릭의 조합에 의해 한정될 수 있다. 도 2의 실시예에서, 프로세서(100)는 여러 성능 상태('P-상태')에서 동작하도록 구성되고, 각 성능 상태는 특정 동작 전압과 특정 동작 주파수에 의해 한정될 수 있다. 프로세서(100)는 전력 절감 모드(예를 들어 배터리 전력으로 동작할 때, 전력을 보존하는 것이 강조되는 경우) 및 성능 모드(성능을 최대화하는 것이 강조되는 경우)에서 동작하도록 더 구성될 수 있다. 아래 표 1은 여러 P-상태와 동작 모드의 조합을 위해 취해질 수 있는 여러 캐시 사이즈 조정 동작을 예시하는 것이다.
Figure pct00001
표 1은 프로세서의 다른 실시예뿐만 아니라 전술된 프로세서(100)의 실시예에 적용될 수 있다. 나아가, 위 표 1에 도시된 특정 구조와는 다른 프로세서 실시예도 가능하고 고려된다. 이 특정 실시예에서, L2 캐시(140)의 모든 웨이는 프로세서(100)가 전력 절감 모드 또는 성능 모드에서 동작하는지에 상관없이 (2개의 최고 동작 전압과 2개의 최고 클록 주파수를 포함하는) P0 및 P1 상태에서 동작할 때 턴온될 수 있다. P2 상태에서 동작할 때 모든 캐시 웨이는 성능 모드에서 동작하는 경우 턴온될 수 있는 반면, 캐시 웨이의 수의 1/2은 전력 절감 모드에서 동작하는 경우 턴오프될 수 있다. 턴온으로 유지되는 캐시 웨이는 내부에 저장된 데이터 및/또는 명령을 검색하기 위해 실행 유닛(들)(124)에 액세스가능할 수 있다. 프로세서(100)가 P3 상태에서 동작할 때 캐시 웨이의 1/4는 전력 절감 모드에 있는 경우 전력 온이 유지될 수 있는 반면, 캐시 웨이의 1/2는 성능 모드에서 전력 온이 될 수 있다. P4와 P5 상태에서, 캐시 웨이의 1/4는 성능 모드에서 동작하는 경우 전력 온이 될 수 있다. 전력 절감 모드에서 동작할 때, 캐시 웨이의 1/4는 P4 상태에 있는 경우 전력 온이 될 수 있는 반면, 캐시는 P5 상태에 있을 때 완전히 전력 다운될 수 있다.
상기 표 1에서 도시된 정보는 전력 관리 유닛(150)에서 저장 구조에 저장될 수 있다. 상태 제어기(135)는 P-상태, 성능 모드, 이들 둘 모두, 및/또는 다른 정보에 관한 정보를 포함할 수 있는 프로세서(100)의 특정 동작점을 나타내는 정보를 전력 관리 유닛(150)에 제공할 수 있다. 전력 관리 유닛(150)은 또한 퇴거 되어야 하는 또는 퇴거된 명령에 관한 정보를 퇴거 큐(102)로부터 수신하도록 연결된다. 전력 관리 유닛(150)은 만약 있는 경우 어떤 캐시 사이즈 조정 동작이 취해지는 지를 결정하기 위하여 상태 제어기(135) 및/또는 퇴거 큐(102)로부터 수신된 정보를 사용할 수 있다. 다른 실시예에서, 전력 관리 유닛(150)은 전술된 다른 유닛의 기능을 포함할 수 있고, 그리하여 외부 소스로부터 이를 검색하는 대신에 동작점과 퇴거된 명령에 관한 정보를 생성할 수 있다.
도시된 실시예에서 상태 제어기(135)는 프로세서(100)의 동작점을 제어하기 위하여 제어 동작을 수행하도록 구성된다. 특히 퇴거 큐(102) 및/또는 실행 유닛(들)(124)으로부터 상태 제어기(135)에 의해 수신된 정보는 프로세서(100)의 작업 부하를 결정하는데 사용될 수 있다. 예를 들어, 상태 제어기(135)는 주어진 시간 간격 동안 퇴거된 명령의 수 및/또는 유형을 추적할 수 있다. 이와 유사하게 제어기(135)는 실행을 위해 발송된 명령의 수와 유형에 관한 정보를 실행 유닛(들)(124)으로부터 수신할 수 있다. 여기서 명시적으로 도시되지는 않았으나, 상태 제어기(135)는 실행되도록 스케줄링된 명령에 대한 정보를 제공할 수 있는 도 1에 도시된 스케줄러(들)(118)에 또한 연결될 수 있다. 여러 실시예에서 상태 제어기(135)는 이 특정 동작점에 관한 정보를 다른 처리 노드(예를 들어, 다중 코어 프로세서에서는 다른 프로세서 코어 및/또는 다중 프로세서 컴퓨터에서는 다른 프로세서)로부터 수신할 수 있다.
여러 소스로부터 상태 제어기(135)에 의해 수신된 정보는 작업부하, 이용가능한 전력, 전력 및 주파수 제한 등과 같은 인자(factors)에 기초하여 프로세서에 대한 적절한 동작점을 결정하는데 사용될 수 있다. 프로세서(100)에 대한 특정 동작점(또는 다중 코어 실시예의 경우에 프로세서(100)의 코어(101))을 결정할 때, 상태 제어기(135)는 상태 변경을 수행하는 여러 동작을 수행할 수 있다. 이 특정 실시예에서, 상태 제어기(135)는 프로세서(100)의 동작점을 변경하기 위해 동작 전압 및/또는 동작 주파수를 변경하도록 클록 제어기(136)와 조절가능한 전압 조절기(137)에 신호를 제공할 수 있다(전술한 바와 같이, 이들 기능은 다른 실시예에서 상태 제어기(135)에 포함될 수 있다). 추가적으로, 신호는 상태 제어기(135)로부터 동작점의 변경에 관한 정보를 전력 관리 유닛(150)에 제공하도록 제공될 수 있다. 나아가, 전력 관리 유닛(150)은 만약 있다면 어느 동작이 L2 캐시(140)의 동적 사이즈 조정에 관해 취해졌는지의 정보를 상태 제어기(135)에 제공할 수 있다.
캐시의 전력 관리:
이제 도 3을 참조하면, 캐시 메모리의 일 실시예에 연결된 전력 관리 유닛의 일 실시예를 도시하는 블록도가 도시된다. 도시된 실시예에서, 전력 관리 유닛(150)은 캐시(140)에 연결된다. 이 특정 예에서, 캐시(140)는 세트당(즉, 그룹당) 2개의 웨이(way)를 가지는 16-웨이 세트 연관 캐시(set associative cache)이다. 그러나, 웨이의 수, 세트(그룹)의 수 또는 그룹당 웨이의 수가 여기에 도시된 것과는 다른 실시예도 가능하고 고려된다. 나아가, 여기에 설명된 여러 방법과 장치 실시예에 사용하기 위해 직접 맵핑된 및 완전 연관 캐시들(direct-mapped and fully associative caches)도 또한 가능하고 고려된다.
도시된 실시예에서, 전력 관리 유닛(150)은 복수의 PMOS(p-유형 금속 산화물 반도체) 트랜지스터(152)들 각각에 연결된다. 도시된 실시예에서 PMOS 트랜지스터(152)는 대응하는 국부 전압 노드(154)로/로부터 전체 전력 노드(VDD)를 연결하거나 연결 해제하는 스위치로 작용한다. 다른 실시예에서, 패스 게이트(passgates)와 같은 디바이스/회로는 여기에 도시된 단일 PMOS 트랜지스터(152) 대신에 사용될 수 있다. 일반적으로, 임의의 적절한 스위칭 디바이스가 국부 전압 노드로부터 전체 전압 노드를 연결하고 연결 해제하도록 구현될 수 있다. 또 전체 접지 노드로/로부터 국부 접지 노드를 연결/연결 해제하는데 스위칭 디바이스를 사용하는 실시예도 가능하고 고려된다는 것이 주목된다. 이 스위칭 디바이스는 국부 전압 노드와 전체 전압 노드를 연결하고 연결 해제하는 스위칭 디바이스와 연관하여 또는 이 스위칭 디바이스에 대한 대안으로 사용될 수 있다.
PMOS 트랜지스터(152)들 각각은 각 게이트 단자가 로우로 구동될 때 턴온될 수 있다. 이 실시예에서 전력 관리 유닛(150)은 도시된 실시예에서 2개의 웨이의 각 그룹에 대해 전력 다운 신호('PwrDn Set 0', 'PwrDn Set 1' 등)를 구동하도록 구성된다. 웨이의 특정 그룹이 전력 다운되는 경우, 대응하는 전력 다운 신호는 전력 관리 유닛(150)에 의해 하이로 구동될 수 있다. 대응하는 PMOS 트랜지스터(152)는 게이트 단자에 하이 신호에 응답하여 작동 해제(deactivated)될 수 있다. PMOS 트랜지스터(152)가 작동 해제될 때, 전체 전력 노드(VDD)로부터 전력은 웨이의 대응하는 그룹에 연결된 국부 전력 노드로부터 연결 해제된다. 따라서, 전력 관리 유닛(150)은 도시된 실시예에서 다른 그룹에 상관없이 그룹 중 어느 하나의 그룹을 선택적으로 전력 다운할 수 있다. 동작점의 변경에 응답하여 다수의 그룹(예를 들어, 총 개수의 1/2)을 전력 다운할 때, 전력 관리 유닛(150)은 인접한 그룹을 전력 다운하고, 비-인접한 그룹을 선택적으로 전력 다운하고. 또는 이들 두 옵션의 조합을 수행할 수 있다.
도 4는 전력 관리 유닛의 일 실시예의 블록도이다. 도시된 실시예에서, 전력 관리 유닛(150)은 여러 소스로부터 정보를 수신하도록 연결되고, 만약 있다면 어느 캐시에서 사이즈 재조정 동작이 취해지는지를 결정하도록 구성된 결정 유닛(156)을 포함한다. 나아가, 결정 유닛(156)은 여러 유닛에 의해 내부적으로 사용될 수 있는 상태의 변경(예를 들어, 캐시 사이즈 재조정 동작)을 나타내는 신호를 제공하도록 구성된다. 외부 소스로부터 정보를 수신하도록 구성된 전력 관리 유닛(150)의 유닛은 이 실시예에서 활동 모니터(164), CIPS(committed instructions per second) 유닛(154), 및 상태 변경 검출기(152) 및 결정 유닛(156)을 포함한다. 통지 유닛(160)과 스위칭 유닛(158)은 전력 관리 유닛(150)의 외부에 있는 유닛에 정보를 제공하도록 구성된다. 나아가, 전력 관리 유닛(150)은 상주기간 타이머(residency timer)(166), 다운 비교기(168) 및 업 비교기(170)를 포함한다.
도시된 실시예에서, 상태 변경 검출기(152)는 동작점 변경을 나타내는 신호를 상태 제어기(135)로부터 수신하도록 연결된다. 동작점 정보는 P-상태, 모드(즉, 전력 절감 모드 또는 성능 모드) 및 프로세서(100)의 동작점에 관한 임의의 다른 관련 정보를 포함할 수 있다. 상태 변경 검출기(152)는 새로운 동작점을 식별하는 정보를 제공할 뿐만 아니라 동작점이 변경된 것을 나타내는 신호 또는 신호들('동작점 변경(Operating Point Change)')을 결정 유닛(156)에 제공할 수 있다.
결정 유닛(156)은 만약 그렇다면 취해질 특정 동작과 함께 캐시 사이즈 재조정 동작이 필요한지 여부를 나타내기 위하여 처리 노드(코어(101) 또는 전체 프로세서(100)일 수 있음)의 상태에 관한 정보를 사용할 수 있다. 나아가, 결정 유닛(156)은 또한 다중 코어 프로세서 실시예 및/또는 다중 프로세서 컴퓨터 시스템에서 다른 처리 노드의 상태에 관한 정보를 사용할 수 있다. 이 시스템은 하나의 노드가 더 적은 전력을 소비하는 상태에 들어갈 때, 다른 노드는 작업 부하 요구를 만족시키기 위해 필요하다면 더 많은 전력을 소비할 수 있도록 처리 노드 중에 전력을 재할당할 수 있다.
결정 유닛(156)이 캐시가 선택된 웨이 또는 세트에 전력 다운 또는 전력 업하는 것에 의해 사이즈 재조정해야 하는 것으로 결정하면, 하나 이상의 신호('캐시 사이즈 재조정(Resize Cache)')가 스위칭 유닛(158)에 송신될 수 있다. 이들 신호를 수신한 것에 응답하여, 스위칭 유닛(158)은 선택된 캐시 웨이 또는 세트에 전력 업 또는 전력 다운을 위한 하나 이상의 신호('Pwr Dn [N:0]')를 생성할 수 있다. 대응하는 예로서 도 3의 실시예를 사용하여, 스위칭 유닛(158)은 PMOS 트랜지스터(152)의 게이트에서 수신될 수 있는 하나 이상의 활성 하이 신호를 선언(assert)하여 이에 의해 캐시 웨이의 대응하는 세트들이 전력 다운되게 할 수 있다. 선택된 캐시 웨이 또는 세트가 전력 업되는 경우, 스위칭 유닛(158)은 활성 로우 신호를 선언 해제(de-assert)하여, 대응하는 PMOS 트랜지스터(152)의 게이트 단자에 로우를 초래하고 이에 따라 캐시 웨이의 대응하는 세트의 활성화와 전력 업을 초래한다. 여기서 이 예는 단지 하나의 가능한 실시예일 뿐, 이러한 신호는 전체 전압 공급 노드 및/또는 접지 노드로 및 이로부터 캐시 웨이/세트를 연결/연결 해제하는데 사용되는 스위칭 디바이스에 따라 활성 하이 또는 활성 로우일 수 있다는 것이 주목된다.
캐시 사이즈를 재조정할 때 결정 유닛(156)은 통지 유닛(160)에 변경 통지('Cache Status Change')를 송신할 수 있다. 이어서, 통지 유닛(160)은 변경의 상세사항(예를 들어, 전력 다운되거나 전력 업된 캐시 웨이 또는 세트의 수), 캐시의 유형(예를 들어, L1, L2, L3 등) 등에 관한 정보를 포함하는 변경을 알리는 정보('Status Change Notify')를 다른 처리 노드에 송신할 수 있다. 다른 실시예에서, 아래 상세히 설명되는 바와 같이, 통지 유닛(160)은 프로세서(100)의 여러 유닛 중에서 전력을 할당하는데 사용될 수 있는 제어기에 캐시의 사이즈 재조정에 관한 정보를 송신할 수 있다.
통지 유닛(160)에 캐시 사이즈 재조정 통지를 송신하는 것에 더하여, 결정 유닛(156)은 상주기간 타이머(166)에 동일한 정보를 더 제공할 수 있다. 상주기간 타이머(166)의 경우에, 정보는 리셋 신호로 사용되는 단일 신호로 감소될 수 있다. 신호를 수신할 때, 상주기간 신호는 실행을 시작할 수 있고, 캐시 사이즈 재조정 이후 현재 시간을 제공할 수 있다. 이 시간은 제1 및 제2시간 임계값과 비교될 수 있다. 이들 임계값은 캐시 사이즈 재조정 동작에 대한 최소 상주기간 요건(minimum residency requirement)을 나타낼 수 있다. 하나의 임계값은 상향 사이즈 재조정 동작(즉, 더 많은 캐시 웨이/세트가 전력 업될 때)을 위한 최소 상주기간을 수립할 수 있는 반면, 다른 임계값은 하향 사이즈 재조정 동작(즉, 더 많은 캐시 웨이/세트가 전력 다운될 때)을 위한 최소 상주기간을 수립할 수 있다.
업 비교기(up comparator)(170)는 추가적인 웨이/세트가 다시 전력 업되기 전에 현재 캐시 사이즈에 대한 최소 상주기간을 수립하는 임계값과 상기 시간 값을 비교할 수 있다. 다운 비교기(168)는 추가적인 웨이/세트가 다시 전력 다운되기 전에 현재 캐시 사이즈에 대한 최소 상주기간을 수립하는 임계값과 상기 시간 값을 비교할 수 있다. 시간 임계값은 일부 경우에 동일할 수 있어서 단일 비교기가 여기에 도시된 2개의 비교기 대신에 사용될 수 있다. 임계값이 프로그래밍가능할 수 있고 및/또는 프로세서 또는 처리 노드의 특정 동작점에 기초하여 변경될 수 있는 실시예들도 또한 가능하고 고려된다. 예를 들어, 배터리에서 동작할 때(또는 전력 절감 모드에서), 상향 사이즈 재조정 동작을 위한 최소 상주기간은 성능 모드에 있을 때보다 더 길 수 있다. 이와 유사하게, 캐시의 하향 사이즈 재조정을 위한 최소 상주기간이 성능 모드에 있을 때보다 전력 절감 모드에서 더 작을 수 있다. 성능 모드에 있을 때에는 그 역이 성립하는데, 최소 상주기간이 상향 사이즈 재조정 동작에 대해서는 더 짧아지고 하향 사이즈 재조정 동작에 대해서는 더 길어진다.
도시된 실시예에서 결정 유닛(156)은 업 비교기(170)로부터 오는 제1신호('Up Res')와, 다운 비교기(168)로부터 오는 제2신호('Down Res')를 수신하도록 연결된다. 이들 신호는 상주기간 타이머(166)로부터 수신된 시간 값이 각 임계값을 초과하는지를 각 비교기가 결정할 때 선언될 수 있다. 결정 유닛(156)은 이들 신호들 중 하나 또는 둘 모두가 선언되지 않은 경우 다른 캐시 사이즈 재조정 동작을 억제할 수 있다. 예를 들어, 추가적인 캐시 웨이/세트를 전력 업을 하는 것에 의해 캐시 사이즈가 재조정되는 것을 초래할 수 있는 동작점 변경이 발생한다면, 사이즈 재조정 동작은 업 비교기(170)가 Up Res 신호를 선언하여 이에 의해 현재 캐시 사이즈에 대한 최소 상주기간이 추가적인 웨이/세트에 전력 온하기 전에 수립된 것을 나타낼 때까지 억제될 수 있다. 이와 유사하게, 추가적인 웨이/세트를 전력 다운하는 것에 의해 캐시 사이즈가 재조정되는 것을 초래할 수 있는 동작점 변경이 발생한다면, 결정 유닛(156)은 다운 비교기(168)가 추가적인 하향 사이즈 재조정 동작에 대한 최소 상주기간이 수립된 것을 나타낼 때까지 캐시 사이즈를 하향 재조정하는 것을 억제할 수 있다. 업 비교기(170)와 다운 비교기(168)에 의해 결정된 상주기간 요건을 사용하는 것에 의해 결정 유닛(156)은 캐시 때리기(thrashing), 즉 캐시의 너무 빈번한 사이즈 재조정을 방지할 수 있다. 이 캐시 때리기는 초과 전력 소비, 전력 공급 잡음의 증가를 초래할 수 있고 프로세서의 컴퓨팅 성능을 저하시킬 수 있다.
도시된 실시예에서, 전력 관리 유닛(150)은 명령 실행 활동을 모니터링하도록 구성된 활동 모니터(164)를 포함한다. 활동 모니터(164)는 실행 유닛(들)(124)(예를 들어, 도 2)으로부터 정보를 수신하도록 연결된다. 실행 유닛(들)(124)으로부터 수신된 정보를 사용하여 활동 모니터는 미리 결정된 시간 간격 동안 대응하는 처리 노드(예를 들어, 이 경우에 코어(101))에 대한 평균 활동을 계산할 수 있다. 활동 모니터(164)는 실행된 명령에 대한 정보, 파이프라인 스톨(pipeline stalls), 또는 실행 유닛(들)의 활동을 나타내는 임의의 다른 유형의 정보를 수신할 수 있다. 이러한 정보는 캐시가 사이즈 재조정될 수 있는지 여부를 결정하는데 유용할 수 있다. 예를 들어, 활동 모니터(164)가 각 시간 간격에서 상당한 양의 시간이 파이프라인 스톨에서 소비되는지를 결정한다면, 캐시 미스(cache miss)와 연관된 추가적인 지연시간이 전체 성능에 큰 영향을 덜 가질 수 있으므로 캐시 사이즈를 하향 조정하는 것이 가능할 수 있다. 한편, 활동 모니터(164)가 상당한 수의 명령이 (상대적으로 전체 파이프라인을 나타내는) 각 간격 동안 실행되고 있는 것으로 결정하면, 캐시 미스로부터 높은 지연시간과 가능한 파이프라인 스톨이 파이프라인 효율에 악영향을 미칠 수 있으므로 캐시 사이즈를 상향 조정하는 것이 바람직할 수 있다.
활동 모니터(164)에 의해 생성된 활동 정보('Average Node Activity')는 결정 유닛(156)에 제공될 수 있고, 캐시 사이즈 재조정에 필요한지 여부를 결정하는데 사용될 수 있다. 일부 실시예에서, 또는 일부 동작 모드에서, 이 정보는 캐시 사이즈 재조정 동작에 대한 필요성을 결정하기 위해 결정 유닛(156)에 의해 배타적으로 사용될 수 있다. 다른 실시예에서, 활동 모니터(164)로부터 수신된 정보는 결정 유닛(156)에 의해 수신된 다른 정보와 연계하여 사용될 수 있다.
전력 관리 유닛(150)은 또한 1초의 간격 동안 레지스터로 결과가 전달(committed)되는 실행된 명령의 수를 나타내는 정보를 수신할 수 있는 CIPS 유닛(154)을 더 포함한다. 전술된 바와 같이, CIPS는 "초당 전달된 명령(committed instructions per second)"이고, 이에 따라 프로세서의 작업부하를 나타낸다. 도시된 실시예에서, CIPS 유닛(154)은 퇴거 큐(예를 들어, 도 1 및 도 2의 퇴거 큐(102))로부터 퇴거 명령에 관한 정보를 수신하도록 연결된다. CIPS 유닛(154)은 미리 결정된 간격에서 퇴거된 명령의 수를 결정할 수 있고, CIPS값을 외삽(extrapolate)하기 위해 이 값을 사용할 수 있다. CIPS값은 이에 따라 명령이 실행되고 실제로 퇴거되는 율(이는 예를 들어 브랜치 미스추정으로 인해 초론적으로 실행되고 퇴거되지 않은 일부 명령과는 대조되는 것임)을 나타낼 수 있다. CIPS값은 다른 값과 연계하여 사용되는 것에 의해 캐시 사이즈 재조정을 수행할지 여부를 결정하기 위해 결정 유닛(156)에 의해 사용가능한 추가적인 정보를 생성할 수 있다. 이 특정 실시예에서, CIPS 유닛(154)은 비교에 기초하여 임계값과 합계값을 사용하여 임계값과 보호 대역(또는 이력)값의 합계를 계산할 수 있다. CIPS 유닛(154)은 제1신호('CIPS > 임계값 + 보호 대역'), 제2신호('CIPS < 임계값') 또는 무(no) 신호를 선언할 수 있다. 결정 유닛(156)은 제1 및 제2신호를 수신하도록 연결되고 이들 신호들 어느 것이 선언되었는지를 주어진 간격 동안 결정할 수 있다. 일 실시예에서, 캐시 사이즈 재조정 동작은 아래 표 2에 기초하여 취해질 수 있다.
Figure pct00002
위 표 2에서, 결정 유닛(156)의 일 실시예가 어떤 동작이 있는지를 결정할 뿐만 아니라 캐시 사이즈 재조정 동작을 수행할지 여부를 결정하는데 P-상태 및 CIPS값을 모두 고려할 수 있다. 이 특정 실시예에서, 각 P-상태는 이 P-상태에 고유한 임계값과 연관된다. 그러나, 단일 임계값이 모든 P-상태에 사용되는 실시예들도 가능하고 고려되고, 추가적인 임계값(예를 들어, 성능 모드에서 동작할 때 주어진 상태에서 제1임계값, 및 전력 절감 모드에서 동작할 때 주어진 상태에서 제2임계값)이 가능한 실시예도 가능하고 고려된다.
이 실시예에서 P-상태 0 및 P-상태 1에서, 캐시 사이즈는 전체 사이즈에 유지될 수 있다. 처리 노드가 P-상태 2에서 동작하는 경우, 결정된 CIPS값은 다른 상태 변경 없이 캐시 사이즈 재조정 동작을 결정하는데 사용될 수 있다. CIPS값이 합계(즉, 임계값 2 + 보호 대역)보다 크면, 캐시는 그 이전의 사이즈에 상관없이 그 전체 사이즈로 사이즈 상향 재조정될 수 있다. 이 경우에, CIPS값은 퇴거된 명령의 하이 율(high rate) 및 이에 따라 하이 또는 컴퓨터 한정된 작업부하를 나타낸다. CIPS값이 임계값(임계값 2)보다 작으면, 캐시는 전체 사이즈 캐시로부터 1/2 캐시로 사이즈 재조정될 수 있다. CIPS값이 임계값보다 크고 합계값보다 작으면, 캐시는 이 예에서 사이즈 재조정되지 않는다. P-상태 3 및 P-상태 4에 대해 캐시 사이즈 재조정 동작을 결정하는 알고리즘은 이 실시예에서 P-상태 2의 것과 유사하고 사용되는 임계값과 사용되는 결과적인 합계값에서 주로 다르다. CIPS 유닛(154)에 의해 사용될 수 있는 알고리즘의 추가적인 실시예는 아래에 보다 상세히 설명된다.
캐시 사이즈 재조정시에, 결정 유닛(156)은 통지 유닛(160)에 변경 통지('Cache Status Change')를 송신할 수 있다. 이어서 통지 유닛(160)은 변경의 상세사항(예를 들어, 전력 다운되거나 전력 업된 캐시 웨이 또는 세트의 수), 캐시의 유형(예를 들어, L1, L2, L3 등) 등에 관한 정보를 포함하는 변경을 알리는 정보('Status Change Notify')를 다른 처리 노드에 송신할 수 있다.
추가적인 인자는 특정 프로그램 또는 명령 시퀀스가 프로세서 한정된 또는 메모리 한정된 것인지 여부의 결정을 더 포함할 수 있다. 컴퓨터 한정된 애플리케이션은 빈번한 캐시 액세스를 요구할 수 있고 지연시간이 허용될 수 없을 수 있고 이에 따라 최대 캐시 사이즈를 가지는 더 높은 성능을 달성할 수 있다. 메모리 한정된 애플리케이션은 더 긴 실행 스톨을 가지는 빈번한 메모리 액세스(캐시에 저장된 정보에 하이 반전을 야기하는)를 수행할 수 있고, 이에 따라 캐시 미스 페널티가 예측되므로 더 긴 지연시간이 허용일 수 있다. 따라서, 메모리 한정된 애플리케이션에서, 캐시 사이즈는 성능에 상당히 영향을 미치지 않고 감소될 수 있다. 이러한 정보는 처리 노드가 구현되는 컴퓨터 시스템에서 실행되는 운영 시스템을 통해 결정 유닛(156)에 제공될 수 있다.
따라서, 전력 관리 유닛(150)의 결정 유닛(156)은 어떤 캐시 사이즈 재조정 동작이 다수의 상이한 인자에 기초하여 수행되는지를 결정할 수 있다. 이들 인자는 P-상태, 동작 모드(전력 절감 모드 또는 성능 모드), CIPS, 평균 활동, 및 다른 처리 노드와 전력 할당에 관한 정보를 포함할 수 있다. 결정 유닛(156)은 이들 인자들 중 단 하나의 인자 또는 이들 인자의 조합에 대한 캐시 사이즈 재조정 정보에 기초하도록 구성될 수 있다.
이제 도 5를 참조하면, 프로세서의 상이한 동작점에 대한 캐시 메모리의 동적 제어를 도시하는 일련의 블록도가 도시된다. 도시된 실시예에서 캐시(140)는 세트 또는 그룹당 4웨이를 구비하는 16웨이 세트-연관 캐시이다. 그러나, 전술된 바와 같이, 직접 맵핑된 및 완전 연관 캐시에서와 같이 상이의 수의 웨이, 그룹 또는 그룹당 웨이를 가지는 실시예도 가능하고 고려된다. 일반적으로, 본 명세서의 개시 내용에 따라 캐시 사이즈 재조정은 주어진 구현예에서 실현가능한 특정 입도(granularity)로 수행될 수 있다.
도시된 예의 (a)에서, 캐시(140)의 모든 웨이들이 ON이다. 이 캐시 사이즈는 캐시(140)가 구현되는 프로세서에 대해 성능 요구량이 하이일 때 사용될 수 있다. 전술된 여러 실시예에 따라, 모든 캐시 웨이는 특히 P-상태 0에서 동작할 때, 성능 모드에서 동작할 때, 하이 CIPS값이 검출될 때 또는 하이 평균 활동 레벨이 검출될 때 온 일 수 있다.
도시된 예의 (b)에서, 16개의 캐시 웨이들 중 8개가 전력 다운되고 나머지 캐시 웨이는 여전히 전력 온이고 액세스가능하다. 상태(a)로부터 상태(b)로 전이는 특정 P-상태에 있을 때(예를 들어, P-상태 2에서 동작할 때), 더 낮은 CIPS 레벨이 검출될 때, 또는 더 낮은 평균 활동 레벨이 검출될 때, 더 낮은 전력 P-상태(예를 들어, P-상태 1로부터 P-상태 2로)의 전이, 성능 모드로부터 전력 절감 모드로의 전이와 연관하여 발생할 수 있다.
(c)에서, 또 다른 캐시 사이즈 재조정 동작이 발생하는데, 이 시간은 8웨이로부터 4웨이로 1/2만큼 웨이에 대한 전력 온의 수를 절감한다. 이 캐시 사이즈 재조정을 트리거하는 이벤트는 전술된 것과 유사할 수 있다. 16개의 총 캐시 웨이들 중에서 12개가 이 예에서 전력 다운되지만, 4개의 웨이들은 여전히 처리 노드의 실행 유닛에 의해 데이터 및/또는 명령에 대해 액세스가능할 수 있다.
(d)에서, 모든 캐시 웨이들이 전력 다운된다. 이 캐시 사이즈 재조정 동작은 최저 차수 P-상태(예를 들어, 전술된 예에서 P-상태 5)에 들어가는 것, 슬리프 모드에 들어가는 것 등에 응답하여 발생할 수 있다.
도 5에 도시된 시퀀스, (a) 내지 (d)는 그 역으로도 수행될 수 있다. 예를 들어, 모든 캐시 웨이들이 전력 오프되는 슬리프 모드를 빠져나가면, 적어도 4개 이상의 캐시 웨이들이 도 5에 도시된 캐시(140)의 실시예에서 전력 온될 수 있다. 평균 활동, CIPS값의 증가, 더 높은 P-상태로 전이(예를 들어, P-상태 3으로부터 P-상태 2로) 또는 전력 절감 모드로부터 성능 모드로 전이는 캐시(140) 사이즈를 상향 재조정하기 위하여 캐시 웨이들에 전력 온을 트리거할 수 있는 동작이다. 나아가, 도 5에 도시된 바와 같이 시퀀스의 각 단계를 전이하는 것은 반드시 필요한 것이 아니라는 것이 주목된다. 예를 들어, 일 실시예에서, (예를 들어, 하이 CIPS값의 검출로 인해) 성능 요구량의 급격한 증가는 (c)로부터 (a)로 직접 점프를 초래할 수 있다.
캐시 사이즈 재조정 동작을 트리거하는 전술된 이벤트는 예시적인 것이며, 다른 트리거 이벤트에 응답하여 캐시 사이즈 재조정 동작이 수행될 수 있는 실시예도 가능하고 고려된다는 것이 주목된다. 나아가, 캐시 사이즈 재조정 동작은 특정 이벤트에 상관없이 발생할 수 있다. 도 4의 전력 관리 유닛(150)의 예를 사용하여, 결정 유닛(156)은 P-상태의 변경, 동작 모드 또는 다른 유형의 동작점 변경의 통지를 수신할 수 있다. 이들 변경은 캐시(140)가 사이즈 재조정되는지, 일부 실시예에서 변경을 트리거하지 않는지 여부에 대한 결정에 인자로 작용할 수 있다.
도 5의 예에서, 캐시 웨이는 모든 웨이들이 전력 오프되는 상태에 들어가거나 빠져나갈 때를 제외하고는 2의 지수(powers)로 전력 업되거나 전력 다운된다. 따라서, 사이즈 다운 동작에서, 전력 다운된 캐시 웨이의 수는 원래 16개의 웨이로부터 8개의 웨이로 다운되고 이어서 4개의 웨이로 다운되고 이어서 0개의 웨이로 진행한다. 이와 유사하게, 캐시 사이즈를 상향 조정할 때, 동작은 4개의 웨이에서 턴온된 후에 8개의 웨이로 사이즈 업되고 이어서 16개의 웨이로 사이즈 업되는 것을 포함한다. 그러나, 전술된 것과는 다른 증분으로 사이즈 다운 및 사이즈 업 동작이 발생하는 실시예도 가능하고 고려된다. 예를 들어, 16 웨이 캐시가 2개의 웨이의 증분으로 사이즈 다운되거나 사이즈 업될 수 있어서 8개의 가능한 캐시 사이즈를 허용할 수 있는 실시예도 가능하고 고려된다. 또 캐시 사이즈 증분마다 1개의 웨이만큼 캐시 사이즈 다운되고 또는 사이즈 업되는 실시예도 가능하다.
동적 캐시 제어를 위한 방법 흐름:
도 6 및 도 7은 캐시 사이즈를 동적으로 제어하는 방법의 2가지 가능한 실시예를 도시한다. 이들 실시예는 예시적인 것일 뿐, 다른 실시예도 가능하고 고려된다는 것이 주목된다. 또한 다수의 다른 방법이 전술된 전력 관리 유닛(150)의 특정 실시예에 이용가능할 수 있고 이들 방법은 일부 경우에 조합가능하다는 것이 주목되어야 한다. 예를 들어, 도 6 및 도 7을 참조하여 설명될 방법 실시예는 프로세서 동작점의 변경에 응답하여 캐시 사이즈 재조정이 수행될지 여부를 결정하기 위해 부분적으로 또는 완전히 조합될 수 있다.
이제 도 6을 참조하면, 동적 캐시 제어의 방법의 일 실시예의 흐름도가 예시된다. 도시된 실시예에서, 방법(600)은 프로세서가 제1동작점에서 동작하는 것에서 시작한다(블록 605). 이 예를 위하여, 동작점은 특정 구조에 대하여 최고 성능 동작점(예를 들어, 상기 제시된 표 1에 따라 P-상태 0)으로 고려될 수 있다. 도시된 실시예에서, 동작점에 변경이 발생하지 않으면(블록 610, 아니오), 캐시 사이즈 조정 동작이 발생하지 않고(블록 612), 동작은 제1동작점에서 계속된다. 그러나, 동작점이 변경되면(블록 610, 예), 캐시의 웨이의 서브세트가 전력 다운될 수 있다(블록 615). 서브세트는 단 하나의 웨이, 웨이의 그룹 또는 웨이의 다수의 그룹을 포함할 수 있다.
동작점이 변경된 후에, 프로세서 동작은 여전히 전력 업된 나머지 웨이에서 캐시의 액세스를 포함할 수 있는 명령의 처리에서 계속될 수 있다(블록 620). 동작점이 다시 변경되지 않았다면(블록 625, 아니오), 캐시 사이즈 재조정 동작이 취해지지 않고(블록 627), 동작은 전력 업을 유지하는 임의의 캐시 웨이로부터 명령의 처리와 데이터 및/또는 명령의 액세스를 포함하는 가장 최근의 동작점에서 계속할 수 있다(블록 620).
다른 동작점 변경이 발생하고(블록 625, 예), 동작점 변경이 더 낮은 성능 또는 더 낮은 전력 상태로 하향되면(블록 630, 다운), 캐시의 추가적인 웨이들이 전력 다운될 수 있다(블록 640). 명령의 처리는 계속될 수 있고, 이것은 전력 업을 유지하는 임의의 캐시 웨이의 액세스를 포함할 수 있다(블록 642). 다른 동작점 변경이 발생하고(블록 625, 예), 동작점 변경이 더 높은 성능 상태 또는 더 높은 전력 소비량이 허용된 상태로 되면(블록 630, 업), 캐시는 이전에 전력 다운된 캐시 웨이를 선택적으로 전력 온하는 것에 의해 사이즈 하향 재조정될 수 있다(블록 635). 새로운 동작점이 최고 성능 동작점이라면(블록 645, 예), 모든 캐시 웨이들이 전력 온될 수 있다(블록 650). 새로운 동작점이 최고 성능 동작점이 아니라면(블록 645, 아니오), 일부 캐시 웨이가 전력 다운된 동작이 발생할 수 있는 한편, 전력 업된 캐시 웨이는 데이터 및/또는 명령의 검색을 위해 액세스될 수 있다.
따라서, 도 6의 실시예에 따라, 방법(600)은 최대 성능 중 하나로부터 최소 전력 소비량 중 하나 쪽으로 동작점이 진행함에 따라 캐시 사이즈를 점진적으로 하향 조정하는 것을 수행할 수 있다. 캐시 사이즈 재조정 동작을 위해 증분의 개수는 동작점의 수(예를 들어, P-상태의 수), 캐시 웨이 또는 웨이의 그룹의 수, 캐시가 전력 다운되는 증분의 사이즈 및 방법(예를 들어, 최대로부터 1/2로, 1/4로 등) 등에 좌우될 수 있다. 이와 유사하게, 방법(600)은 최소 전력 소비량 중 하나로부터 최대 성능으로 프로세서의 동작점이 진행함에 따라 캐시의 사이즈를 점진적으로 상향 조정하는 것을 수행할 수 있다.
도 7을 참조하여 설명된 사이즈 재조정 동작들 각각에서, 상주기간 요건이 사이즈 재조정 동작이 일어나기 전에 수립되어야 할 수 있다는 것이 주목된다. 예를 들어, 블록(640)에서, 추가적인 캐시 웨이의 전력 다운은 이전 캐시 사이즈의 재조정 동작 이후로 충분한 양의 시간이 경과되지 않은 경우 억제되거나 지연될 수 있다. 상주기간 요건은 이 특정 양의 시간이 경과되었다면 수립되게 고려될 수 있고, 사이즈 재조정 동작은 그후 일어날 수 있다. 캐시 사이즈 재조정 동작에 이어서 캐시 사이즈에 대한 상주기간 요건을 수립하는 것은 캐시 사이즈 재조정이 너무 빈번히 일어나는 것을 방지할 수 있다. 캐시를 너무 빈번히 사이즈 재조정하는 것은 전력을 더 많이 소비하고, 처리 성능을 저하시킬 수 있고, 빈번한 간격에서 캐시 웨이를 전력 온하고 전력 오프하는 것으로부터 초래되는 빈번한 과도상태로 인해 전력 분배 시스템에 원치 않는 잡음을 야기할 수 있다. 따라서, 이들 원치않는 효과는 상주기간 요건의 사용에 의하여 방지될 수 있다. 도 4의 상주기간 타이머(166)와 같은 상주기간 타이머는 상주기간 요건을 수립하고 실시하는데 사용될 수 있다.
도 7은 동적 캐시 제어 방법의 다른 실시예의 흐름도이다. 이 특정 실시예에서, 방법(700)은 CIPS값에 기초하여 캐시 사이즈 재조정 동작이 취해져야 할지 여부를 결정하는 것에 관한 것이다. 전술된 바와 같이, CIPS값은 퇴거 명령에 관한 정보를 수신하는 것, 특정 시간 간격 동안 퇴거된 명령의 수를 결정하는 것(즉, 명령 실행의 결과가 레지스터에 전달되는 것) 및 1초에 이 값을 외삽하는 것에 의해 결정될 수 있다.
이 실시예에서 방법(700)은 새로운 시간 간격의 시작시에 시작한다(블록 701). 가장 최근의 이전의 시간 간격에서 결과들이 레지스터로 전달된 퇴거된 명령의 수를 결정하기 위해 검수(tally)가 취해질 수 있다. 이 값으로부터, CIPS값이 결정될 수 있다(블록 705). CIPS값을 결정하는 것에 더하여, 임계값과 보호 대역값의 합계가 계산될 수 있다(블록 707).
일 실시예에서, 임계값은 프로세서가 동작하는 특정 P-상태에 따라 좌우될 수 있으나, 임계값이 P-상태에 따라 좌우되지 않는(예를 들어, 모든 P-상태에서 동일한) 실시예도 가능하고 고려된다. 임계값은 주어진 간격 동안 결정된 CIPS값과 비교를 위하여 사용되는 특정 CIPS값일 수 있다. 보호 대역은 특정 인자들(예를 들어, 파이프라인의 플러싱(flushing)을 야기하는 브랜치 미스추정)이 설명될 수 있는 것을 보장하기 위해 비교를 위해 추가적인 마진을 제공하는 CIPS값일 수 있다. 일부 실시예에서, 보호 대역은 CIPS 계산/결정에 포함될 수 있고 이에 따라 별도의 보호 대역이 포함될 필요가 없다.
CIPS값과 합계가 결정된 후에, CIPS값은 임계값 및 합계와 비교될 수 있다(블록 710). CIPS값이 임계값과 보호 대역의 합계보다 크다면(블록 715, 예), 캐시는 아직 전력 온되지 않은 경우 모든 캐시 웨이에 전력 온하도록 사이즈 재조정될 수 있다(블록 730). CIPS값이 합계보다 작고(블록 715, 아니오), 임계값보다 작다면(블록 720, 예), 캐시 사이즈 재조정은 캐시 웨이의 총 수의 서브세트를 선택적으로 전력 다운하는 것에 의해 수행될 수 있다(블록 735). 캐시 사이즈 재조정 동작이 취해진 후에, 추가적인 동작이 그 다음 간격이 시작할 때까지 취해지지 않을 수 있다(블록 701).
CIPS값이 합계값보다 작고(블록 715, 아니오), 임계값보다 크다면(블록 720, 아니오), 캐시 사이즈는 변경없이 유지될 수 있다(블록 725). 추가적인 캐시 사이즈 재조정 동작은 그 다음 간격이 시작할 때까지 수행되지 않을 수 있다(블록 701).
실시예(700)의 많은 변형들이 가능하고 고려된다. 예를 들어, CIPS값이 합계값보다 큰 것에 응답하여 모든 캐시 웨이를 전력 온하는 대신에, 캐시 웨이의 선택된 서브세트만이 전력 온될 수 있다. 이것은 모두가 아닌 일부의 캐시만이 전력 온 되는 상황을 초래할 수 있으나, 이전 간격에서보다 더 많은 웨이들이 전력 온될 수 있다. 나아가, 전술된 바와 같이, 방법(700)은 방법(600)의 여러 실시예와 연계하여 사용될 수 있으며 또는 캐시 사이즈 재조정 동작을 결정하기 위해 임의의 다른 적절한 방법과 연계하여 사용될 수 있다.
다른 변형예는 CIPS값이 캐시 용량에 따라 좌우될 수 있어서 현재 전력 업된 캐시 웨이의 수에 기초하여 다른 CIPS 임계값을 사용하는 것을 허용할 수 있다. 따라서, 캐시 웨이가 이 실시예에서 전력 다운된 경우, CIPS 임계값이 이에 따라 적절히 감소될 수 있다. 일반적으로, 다수의 다른 CIPS 임계값이 사용될 수 있으며 여기서 각 임계값은 전력 온 및 전력 오프된 웨이의 수에 기초하여 특정 캐시 용량에 대응한다.
다중 코어 프로세서 실시예:
도 8은 다중 코어 프로세서의 일 실시예의 블록도이다. 도시된 실시예에서 프로세서(100)는 2개의 프로세서 코어(101)를 포함한다. 그러나, 추가적인 코어를 가지는 실시예도 가능하고 고려되며, 이들 코어는 서로 동일한 것(즉, 프로세서(100)는 대칭적인 다중 코어 프로세서임)이거나 코어들 중 일부는 서로 다른 것(즉, 프로세서(100)는 비대칭 또는 이종 다중 코어 프로세서임)일 수 있다. 도시된 실시예에서, 각 코어(101)는 실행 유닛(들)(124), L1 캐시(117) 및 전력 관리 유닛(150)을 포함한다. 각 코어(101)는 도 1 및 도 2를 참조하여 전술된 프로세서 실시예에 따라 추가적인 유닛을 포함할 수 있다. 나아가, L1 캐시(117)는 이들 동일한 도면에 따라 별도의 명령 및 데이터 캐시로 분리될 수 있다.
각 코어(101)에 있는 전력 관리 유닛(150)은 본 명세서에서 설명된 여러 방법을 사용하여 각 L1 캐시(117)의 사이즈 재조정을 수행하도록 구성될 수 있다. 코어(101)의 각 전력 관리 유닛(150)은 도 4에 도시된 전력 관리 유닛(150)과 유사하게 배열될 수 있다. 따라서, 다수의 다른 인자들이 사이즈 재조정이 수행되는 것으로 결정되면 이 캐시 사이즈를 얼마나 재조정할지를 결정할 뿐아니라 대응하는 L1 캐시(117)를 사이즈 재조정하지 않을지 여부를 결정하는데 고려될 수 있다.
각 코어(101) 내 전력 관리 유닛(150)에 더하여, 프로세서(100)는 L2 캐시(140)에서 사이즈 재조정 동작을 수행하도록 구성된 다른 전력 관리 유닛(150)을 포함한다. L2 캐시(140)에서 수행되는 사이즈 재조정 동작을 결정을 하는데 사용되는 여러 방법은 전술된 것들 중 임의의 것을 포함할 수 있다.
명시적으로 도시되지는 않았으나, 프로세서(100)의 일부 실시예는 L3 캐시를 더 포함할 수 있다. 이 실시예에서, L3 캐시를 포함하는 것은 전력 관리 유닛(150)의 다른 경우를 포함하는 것을 수반할 수 있다. 대안적으로, 단일 전력 관리 유닛(150)은 L2 및 L3 캐시를 모두 제어하는데 사용될 수 있다. 일반적으로, 특정 프로세서 실시예에 포함된 캐시의 수는 제한되지 않는다. 나아가, 논의는 데이터 및/또는 명령을 저장하는 캐시에 관한 것이지만, 본 명세서에 설명된 동적 캐시 제어는 어드레스 변환 정보를 저장하는데 사용된 변환 룩어사이드 버퍼(TLB: translation lookaside buffer)와 같은 캐시 메모리의 다른 유형에 적용될 수도 있다.
프로세서(100)는 각 전력 관리 유닛(150)에 연결된 제어기(170)를 더 포함한다. 일부 실시예에서, 제어기(170)는 도 2에 도시된 바와 같이 상태 제어기(135)에 의해 제공되었던 기능을 제공할 수 있다. 명시적으로 도시되지는 않았으나, 프로세서(100)는 프로세서(100)의 다른 유닛과 동일한 IC 다이 위에 구현된 클록 제어 회로 및 조절가능한 전압 조절기(예를 들어, 도 2에 도시된 클록 제어 회로(136)와 조절가능한 전압 조절기(137)와 같은 것)를 포함할 수 있다. 일 실시예에서, 전체적으로 IC 다이에 대해 설정되면, 전압은 모든 코어(101)의 P-상태에 필요한 최대 전압으로 설정될 수 있다. 다른 실시예는 임의의 코어(101)에 필요한 최고 성능 P-상태에 기초하여 모든 코어에 대해 P-상태를 설정하는 소프트웨어를 수반할 수 있다. 일반적으로, 제어기(170)는 전체적으로 프로세서(100)에 대해서 뿐 아니라 각 코어(101)에 대해 동작 전압 및 클록 주파수(즉, P-상태)를 설정하도록 구성될 수 있다. 코어(101)에 대한 P-상태는 일부 경우에 전체적으로 프로세서(100)의 P-상태에 의해 한정될 수 있다. 나아가, 도시된 실시예에서, 제어기(170)는 서로 개별적으로 코어(101)의 P-상태를 설정하도록 구성된다. 프로세서 코어(101)의 하나 또는 전부에 대해 증가된 작업부하에 응답하여, 제어기(170)는 요구를 충족하기 위하여 전체적으로 프로세서(100)의 P-상태를 증가시키거나 및/또는 각 P-상태를 증가시킬 수 있다.
제어기(170)는 전체적으로 코어(101)의 P-상태와 프로세서(100)를 제어할 수 있으므로, 제어기(170)는 코어(101) 중에서 전력 할당을 제어할 수 있다. 예를 들어, 코어(101) 중 제1코어의 L1 캐시가 사이즈 하향 재조정되면(예를 들어, 낮은 CIPS값에 응답하여), 제어기(170)는 제2코어(101)에 절감된 전력을 할당할 수 있고 더 많은 작업부하 요구를 충족하도록 P-상태를 또한 조정할 수 있다. 일부 경우에, 제어기(170)는 캐시 사이즈 다운 재조정으로 인해 이용가능한 초과 전력의 결과 하나 이상의 추가적인 코어에 초과 전력을 할당할 수 있다. 제어기(170)는 이 상황에서 코어의 P-상태를 또한 조정할 수 있다. 이 코어(101)의 P-상태는 더 큰 작업부하 요구를 충족할 수 있게 한다. 일부 경우에, 제어기(170)는 L2 캐시(140)에 연결된 전력 관리 유닛(150)에 하나 이상의 코어(101)에 초과 전력을 할당하기 위하여 사이즈를 하향 재조정하도록 명령할 수 있다.
제어기(170)는 L1 캐시와 L2 캐시 각각의 상태에 관한 정보를 각 전력 관리 유닛(150) 내에 구현된 통지 유닛(160)으로부터 수신할 수 있다. 제어기(170)는 또한 하나 이상의 코어(101)의 P-상태의 업데이트와 같은 여러 상태 변경을 나타내기 위하여 전력 관리 유닛(150) 각각의 결정 유닛(156)에 정보를 또한 송신할 수 있다.
일반적으로, 제어기(170)는 코어(101), L2 캐시(140)에 의해 전력 사용량을 추적할 수 있고, 프로세서(100)의 다른 유닛(예를 들어, 메모리 제어기)의 전력 사용량을 더 추적할 수 있으며, 추적된 전력 사용량에 기초하여 전력 제어 및 할당 동작을 수행할 수 있다. 코어(101), L2 캐시(140) 및 프로세서(100)의 다른 유닛의 전력 사용량에 관한 정보에 기초하여, 제어기(170)는 프로세서(100)로 하여금 소비 전력 와트당 그 성능을 최대화하기 위하여 전력 할당 동작을 수행할 수 있다.
컴퓨터 시스템:
이제 도 9를 참조하면, 컴퓨터 시스템(300)의 실시예가 도시된다. 도 9의 실시예에서, 컴퓨터 시스템(300)은 여러 처리 노드(100A, 100B, 100C 및 100D)를 포함한다. 하나 이상의 처리 노드(100A-100D)는 전술된 도 1, 도 2, 또는 도 8의 실시예 중 하나에 따른 프로세서이거나 또는 이들 실시예 중 하나의 변형일 수 있다. 따라서, 하나 이상의 처리 노드(100A-100D)는 전술된 방법의 여러 실시예에 따라 각 처리 노드에서 하나 이상의 캐시 메모리의 동적 사이즈 재조정을 수행하도록 구성된 하나 이상의 전력 관리 유닛(150)을 포함할 수 있다.
각 처리 노드(100A-100D)는 각 처리 노드(100A-100D) 내에 포함된 메모리 제어기(316A-316D)를 통해 각 메모리(314A-314D)에 연결된다. 이들 메모리 제어기(316A, 316D) 중 하나 이상은 전술된 바와 같이 메모리 제어기(18)의 실시예에 따라 구성될 수 있다. 따라서, 이렇게 구성된 처리 유닛에서 전력 관리는 대응하는 메모리 서브시스템에 의해 전력 사용을 최소화하도록 수행될 수 있다.
각 처리 노드(100A-100D)는 처리 노드(100A-100D) 사이에 통신하는데 사용되는 인터페이스 논리회로(interface logic)를 포함한다. 예를 들어, 처리 노드(100A)는 처리 노드(100B)와 통신하는 인터페이스 논리회로(318A), 처리 노드(100C)와 통신하는 인터페이스 논리회로(318B), 및 또 다른 처리 노드(미도시)와 통신하는 제3인터페이스 논리회로(318C)를 포함한다. 이와 유사하게, 처리 노드(100B)는 인터페이스 논리회로(318D, 318E 및 318F)를 포함하고; 처리 노드(100C)는 인터페이스 논리회로(318G, 318H 및 318I)를 포함하고; 처리 노드(100D)는 인터페이스 논리회로(318J, 318K 및 318L)를 포함한다. 처리 노드(100D)는 인터페이스 논리회로(318L)를 통해 입력/출력 디바이스(예를 들어, 데이지 체인 구성의 디바이스(320A-320B))와 통신하도록 연결된다. 다른 처리 노드는 이와 유사한 방식으로 다른 I/O 디바이스와 통신할 수 있다.
처리 노드(100A-100D)는 처리 노드 간 통신을 위해 패킷 기반 링크를 구현한다. 본 실시예에서, 링크는 단방향 라인의 세트로서 구현된다(예를 들어, 라인(324A)은 처리 노드(100A)로부터 처리 노드(100B)로 패킷을 송신하는데 사용되고, 라인(324B)은 처리 노드(100B)로부터 처리 노드(100A)로 패킷을 송신하는데 사용된다). 다른 세트의 라인(324C-324H)은 도 4에 도시된 바와 같이 다른 처리 노드들 사이에 패킷을 송신하는데 사용된다. 일반적으로, 라인(324)의 각 세트는 하나 이상의 데이터 라인, 데이터 라인에 대응하는 하나 이상의 클록 라인, 및 운송되는 패킷의 유형을 나타내는 하나 이상의 제어 라인을 포함할 수 있다. 링크는 처리 노드들 사이에 통신하기 위해 캐시 코히어런트한(coherent) 방식으로 동작되거나 또는 처리 노드와 I/O 디바이스(또는 PCI(Peripheral Component Interconnect) 버스 또는 ISA(Industry Standard Architecture) 버스와 같은 종래 구성의 I/O 버스로의 버스 브리지) 사이에 통신하기 위한 비코히어런트한 방식으로 동작될 수 있다. 처리 노드와 I/O 디바이스 사이에 통신이 캐시 코히어런트한 방식으로 수행되는 실시예도 가능하고 고려된다. 나아가, 링크는 도시된 바와 같이 I/O 디바이스들 사이에 데이지 체인 구조를 사용하여 비코히어런트한 방식으로 동작될 수 있다. 하나의 처리 노드로부터 다른 처리 노드로 전송되는 패킷은 하나 이상의 중간 노드를 통해 전달될 수 있다는 것이 주목된다. 예를 들어, 처리 노드(100A)에 의하여 처리 노드(100D)로 전송되는 패킷은 도 9에 도시된 바와 같이 처리 노드(100B) 또는 처리 노드(100C)를 통해 전달될 수 있다. 임의의 적절한 라우팅 알고리즘이 사용될 수 있다. 컴퓨터 시스템(300)의 다른 실시예가 도 9에 도시된 실시예보다 더 많거나 더 적은 처리 노드를 포함할 수 있다.
일반적으로, 패킷은 노드들 사이 라인(324)에 하나 이상의 비트 시간으로 전송될 수 있다. 비트 시간은 대응하는 클록 라인에 클록 신호의 상승 또는 하강 에지일 수 있다. 패킷은 트랜잭션을 초기화하는 명령 패킷, 캐시 코히어런시를 유지하는 프로브 패킷, 및 프로브 및 명령에 응답하는 것으로부터 응답 패킷을 포함할 수 있다.
메모리 제어기와 인터페이스 논리회로에 더하여 처리 노드(100A-100D)는 하나 이상의 프로세서를 포함할 수 있다. 넓게 말하면, 처리 노드는 적어도 하나의 프로세서를 포함하고, 원하는 대로 메모리와 다른 논리회로와 통신하는 메모리 제어기를 선택적으로 포함할 수 있다. 보다 상세하게는 각 처리 노드(100A-100D)는 도 1에 도시된 바와 같이 프로세서(10)의 하나 이상의 사본(copy)을 포함할 수 있다(예를 들어, 도 2 내지 도 3에 도시된 여러 구조적 및 동작 상세사항을 포함하는). 하나 이상의 프로세서는 처리 노드에 있거나 또는 처리 노드를 형성하는 CMP(chip multiprocessing) 또는 CMT(chip multithreaded) 집적 회로를 포함할 수 있으며, 또는 처리 노드는 임의의 다른 원하는 내부 구조를 구비할 수 있다.
메모리(314A-314D)는 임의의 적절한 메모리 디바이스를 포함할 수 있다. 예를 들어, 메모리(314A-314D)는 하나 이상의 RDRAM(RAMBUS DRAM), SDRAM(synchronous DRAM), DDR SDRAM, 정적 RAM(static RAM) 등을 포함할 수 있다. 컴퓨터 시스템(300)의 어드레스 공간은 메모리(314A-314D) 중에서 분할된다. 각 처리 노드(100A-100D)는 어느 메모리(314-314D)에 어느 어드레스를 맵핑할지를 결정하고 그리하여 어느 처리 노드(100A-100D)에 특정 어드레스를 위한 메모리 요청을 라우팅할지를 결정하는데 사용될 수 있다. 일 실시예에서, 컴퓨터 시스템(300) 내 어드레스를 위한 코히어런시 포인트는 어드레스에 대응하는 바이트를 저장하는 메모리에 연결된 메모리 제어기(316A-316D)이다. 다시 말해, 메모리 제어기(316A-316D)는 대응하는 메모리(314A-314D)에 각 메모리 액세스가 캐시 코히어런트한 방식으로 발생하는 것을 보장하는 일을 담당한다. 메모리 제어기(316A-316D)는 메모리(314A-314D)와 인터페이싱하는 제어 회로를 포함할 수 있다. 추가적으로, 메모리 제어기(316A-316D)는 메모리 요청을 대기하는 요청 큐를 포함할 수 있다.
일반적으로, 인터페이스 논리회로(318A-318L)는 링크로부터 패킷을 수신하고 링크에 송신될 패킷을 버퍼링하는 다양한 버퍼를 포함할 수 있다. 컴퓨터 시스템(300)은 패킷을 송신하기 위한 임의의 적절한 흐름 제어 메커니즘을 사용할 수 있다. 예를 들어, 일 실시예에서, 각 인터페이스 논리회로(318)는 인터페이스 논리회로가 연결되는 링크의 다른 종단에서 수신기 내 버퍼의 각 유형의 개수의 카운트를 저장한다. 인터페이스 논리회로는 수신용 인터페이스 논리회로가 패킷을 저장하는 자유로운 버퍼를 가지지 않는 한, 패킷을 송신하지 않는다. 수신 버퍼가 패킷을 전방으로 라우팅하는 것에 의해 자유로워지므로, 수신용 인터페이스 논리회로는 버퍼가 자유로이 되었다는 것을 나타내는 메시지를 송신용 인터페이스 논리회로에 송신한다. 이러한 메커니즘은 "쿠폰 기반" 시스템이라고 언급될 수 있다.
I/O 디바이스(320A-320B)는 임의의 적절한 I/O 디바이스일 수 있다. 예를 들어, I/O 디바이스(320A-320B)는 디바이스가 연결될 수 있는 다른 컴퓨터 시스템(예를 들어, 네트워크 인터페이스 카드 또는 모뎀)과 통신하는 디바이스를 포함할 수 있다. 나아가, I/O 디바이스(320A-320B)는 비디오 가속기, 오디오 카드, 하드 또는 플로피 디스크 드라이브 또는 드라이브 제어기, SCSI(Small Computer Systems Interface) 어댑터 및 전화 카드, 사운드 카드, 및 GPIB 또는 필드 버스 인터페이스 카드와 같은 여러 데이터 획득 카드를 포함할 수 있다. 나아가, 카드로 구현된 임의의 I/O 디바이스는 또한 시스템(300)의 메인 회로 보드 상의 회로 및/또는 처리 노드 상에서 실행되는 소프트웨어로 구현될 수 있다. "I/O 디바이스" 라는 용어와 "주변 디바이스"라는 용어는 본 명세서에서 동의어인 것으로 의도된 것이라는 것이 주목된다.
컴퓨터 시스템(300)은 또한 처리 노드(100A-100D) 각각에 연결된 제어기(170)를 더 포함한다. 제어기(170)는 프로세서 레벨이 아니라 시스템 레벨에서 도 8에 도시된 제어기(170)와 유사한 기능을 수행할 수 있다. 즉, 제어기(170)는 각 처리 노드(100A-100D)에 의해 전력 사용량을 추적할 수 있고, 적절히 동작점을 변경할 수 있고, 처리 노드 중 하나로부터 하나 이상의 다른 처리 노드로 전력을 재할당할 수 있다. 제어기(170)가 각 처리 노드(100A-100D)와는 분리된 것으로 여기서 도시되어 있으나, 처리 노드 중 하나에서 구현된 제어기(170)가 시스템 레벨 전력 추적 및 할당 기능을 수행하는 실시예도 가능하다.
전술된 프로세서 및 시스템의 여러 실시예는 컴퓨터 시스템 및 그 대응하는 프로세서에 관한 것이지만, 전술된 방법 및 장치는 또한 다른 유형에도 적용될 수 있다는 것이 주목된다. 일반적으로, 캐시를 포함하는 임의의 유형의 프로세서는 전술된 동적 캐시 사이즈 재조정 방법을 구현하기에 적합할 수 있다. 나아가, 프로세서를 포함하는 임의의 유형의 시스템이 서버 시스템, 데스크톱 시스템 및 휴대용 컴퓨터를 포함하여 전술된 동적 캐시 사이즈 재조정 방법에 또한 적합할 수 있다. 나아가, 다른 유형의 플랫폼과 각 프로세서는 동적 캐시 사이즈 재조정에 적합할 수 있다. 이 플랫폼은 '스마트'폰, 퍼스널 디지털 어시스턴트(PDA), 내장된 제어기 등을 포함할 수 있다.
컴퓨터 판독가능한 매체:
다음에 도 10을 참조하면, 프로세서(100)를 나타내는 데이터베이스를 포함하는 컴퓨터 액세스가능한 저장 매체(800)의 블록도가 도시된다. 일반적으로 말하면, 컴퓨터 액세스가능한 저장 매체는 컴퓨터에 명령 및/또는 데이터를 제공하도록 사용 동안 컴퓨터에 의해 액세스가능한 저장 매체를 포함할 수 있다. 예를 들어, 컴퓨터 액세스 가능한 저장 매체는, 자기 또는 광학 매체, 예를 들어, 디스크(고정식 또는 이동식), 테이프, CD-ROM, 또는 DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW 또는 블루레이(Blu-Ray)와 같은 저장 매체를 포함할 수 있다. 저장 매체는 RAM(예를 들어, SDRAM(synchronous dynamic RAM), 더블 데이터 레이터(DDR, DDR2, DDR3 등), SDRAM, 저전력 DDR(LPDDR2 등) SDRAM, RDRAM(Rambus DRAM), SRAM(static RAM) 등), ROM, 플래시 메모리, USB(Universal Serial Bus) 인터페이스와 같은 주변 인터페이스를 통해 액세스가능한 비휘발성 메모리(예를 들어, 플래시 메모리) 등을 더 포함할 수 있다. 저장 매체는 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 액세스가능한 저장 매체뿐만 아니라 MEMS(microelectromechanical systems)를 포함할 수 있다.
일반적으로, 컴퓨터 액세스 가능한 저장 매체(800)에서 운반되는 프로세서의 데이터베이스는 프로그램에 의해 판독될 수 있는, 그리고 시스템(10)을 포함하는 하드웨어를 제조하는데 직접 또는 간접 사용될 수 있는 데이터베이스일 수 있다. 예를 들어, 데이터베이스는 Verilog 또는 VHDL과 같은 고레벨 설계 언어(HDL: high level design language)에서 하드웨어 기능의 동작 레벨 설명(behavioral-level) 또는 레지스터 전송 레벨(RTL : register-transfer level) 설명일 수 있다. 이 설명은 합성 라이브러리(synthesis library)로부터 게이트의 리스트를 포함하는 네트리스트(netlist)를 생성하기 위해 설명을 합성할 수 있는 합성 도구에 의해 판독될 수 있다. 이 네트리스트는 프로세서(100)를 포함하는 하드웨어의 기능을 또한 나타내는 게이트의 세트를 포함한다. 이 네트리스트는 마스크에 적용되는 기하학적인 형상을 설명하는 데이터 세트를 생성하도록 배치되고 라우팅될 수 있다. 마스크는 프로세서(100)에 대응하는 반도체 회로 또는 회로들을 생성하기 위해 여러 반도체 제조 단계들에 사용될 수 있다. 대안적으로, 컴퓨터 액세스가능한 저장 매체(800)에 있는 데이터베이스는 원하는 대로 네트리스트(합성 라이브러리를 가지거나 없는) 또는 데이터 세트일 수 있다.
컴퓨터 액세스가능한 저장 매체(800)가 프로세서(100)의 표현(representation)을 운반하지만, 다른 실시예도, 원하는 바에 따라, 임의의 세트의 에이전트(예를 들어, L2 캐시(140), 전력 관리 유닛(150) 등), 에이전트의 부분 또는 그 부분들을 포함하여 프로세서(100)의 임의의 부분의 표현을 운반할 수 있다.
본 발명은 특정 실시예를 참조하여 설명되었으나, 본 실시예는 예시적인 것일 뿐 본 발명은 이로 제한되는 것은 아니라는 것이 이해될 수 있을 것이다. 전술된 실시예에 임의의 변형, 변경, 추가 및 개선을 하는 것이 가능하다. 이들 변형, 변경, 추가 및 개선은 이하 청구범위에 상술된 본 발명의 범위 내에 있는 것이다.

Claims (31)

  1. 프로세서가 제1동작점으로부터 제2동작점으로 변경한 것에 응답하여, 캐시 메모리의 하나 이상의 웨이(way)의 전력을 선택적으로 변경하는 단계; 및
    상기 캐시 메모리의 하나 이상의 웨이의 전력을 변경한 것에 후속하여 상기 프로세서에서 하나 이상의 명령을 처리하는 단계를 포함하되,
    상기 처리는 전력이 변경된 상기 캐시 메모리의 하나 이상의 웨이에 액세스하는 것을 포함하는 것인 방법.
  2. 제1항에 있어서, 하나 이상의 캐시 웨이의 전력을 변경하는 단계는 상기 하나 이상의 캐시 웨이로부터 전력을 제거하는 단계를 포함하는 것인 방법.
  3. 제1항에 있어서, 상기 동작점을 변경하는 것은 상기 프로세서가 동작하는 동작 전압과 클록 주파수를 변경하는 것을 포함하는 것인 방법.
  4. 제1항에 있어서, 상기 동작점을 변경하는 것은 고성능 동작 모드로부터 전력 절감 모드로 변경하는 것을 포함하는 것인 방법.
  5. 제1항에 있어서, 상기 동작점을 변경한 것에 응답하여 상기 캐시 메모리의 복수의 현재 활성 웨이의 절반으로부터 전력을 제거하는 단계를 더 포함하는 방법.
  6. 제1항에 있어서, 상기 프로세서의 동작점을 상기 제2동작점으로부터 제3동작점으로 변경하는 단계; 및
    상기 동작점을 변경한 것에 응답하여 캐시 메모리의 하나 이상의 추가적인 웨이로부터 전력을 선택적으로 제거하는 단계를 더 포함하는 방법.
  7. 제6항에 있어서, 프로세서의 동작점을 상기 제3동작점으로부터 상기 제1 또는 제2동작점 중 하나로 변경하는 단계; 및
    상기 동작점이 상기 제1동작점으로부터 상기 제2동작점으로 또는 상기 제2동작점으로부터 상기 제3동작점으로 변경되었을 때 전력이 제거된 하나 이상의 웨이에 전력을 선택적으로 인가하는 단계를 더 포함하는 방법.
  8. 제5항에 있어서, 상기 프로세서의 동작점을 상기 제2동작점으로부터 제3동작점으로 변경하는 단계;
    CIPS(committed instructions per second)값을 판독하는 단계;
    임계값과 보호 대역값(guard band value)의 합계를 계산하는 단계;
    상기 CIPS값을 상기 임계값 및 상기 합계와 비교하는 단계;
    상기 CIPS값이 상기 임계값보다 작은 경우 상기 제3동작점으로 변경한 것에 응답하여 캐시 메모리의 하나 이상의 추가적인 웨이로부터 전력을 선택적으로 제거하는 단계; 및
    상기 CIPS값이 상기 합계보다 큰 경우 상기 캐시 메모리의 모든 웨이를 전력 온(power on)하는 단계를 더 포함하되,
    상기 CIPS값이 상기 임계값보다 크고 상기 합계보다 작은 경우 상기 캐시 메모리의 어떠한 추가적인 웨이도 전력 온 또는 전력 오프되지 않는 것인 방법.
  9. 제1항에 있어서, 상기 캐시 메모리의 하나 이상의 웨이가 전력 다운된 것을 나타내는 통지를 하나 이상의 추가적인 프로세서에 송신하는 단계를 더 포함하는 방법.
  10. 제1항에 있어서, 상기 캐시 메모리의 하나 이상의 웨이로부터 전력을 선택적으로 제거한 이후 경과된 시간의 양을 결정하는 단계;
    상기 시간의 양을 제1시간 임계값과 비교하는 단계; 및
    상기 시간의 양이 상기 제1시간 임계값보다 작은 경우 상기 캐시 메모리의 추가적인 웨이들이 전력 다운되는 것을 방지하는 단계를 더 포함하는 방법.
  11. 제10항에 있어서, 상기 시간의 양을 제2시간 임계값과 비교하는 단계; 및
    상기 제2시간의 양이 상기 제2시간 임계값보다 작은 경우 상기 캐시 메모리의 추가적인 웨이들이 전력 업되는 것을 방지하는 단계를 더 포함하는 방법.
  12. 프로세서로서,
    적어도 하나의 실행 유닛이 동작점을 제1동작점으로부터 제2동작점으로 변경한 것에 응답하여 캐시 메모리의 복수의 웨이들의 제1서브세트의 전력을 선택적으로 변경하도록 구성된 전력 관리 유닛을 포함하되,
    상기 프로세서의 상기 적어도 하나의 실행 유닛은 상기 복수의 웨이들의 상기 제1서브세트의 전력을 선택적으로 변경한 것에 후속하여 전력이 변경된 상기 복수의 웨이들의 제2서브세트 중 하나 이상의 웨이에 액세스하도록 구성된 것인 프로세서.
  13. 제12항에 있어서, 상기 웨이들의 제1서브세트의 전력을 변경하는 것은 상기 웨이들의 제1서브세트로부터 전력을 제거하는 것을 포함하는 것인 프로세서.
  14. 제12항에 있어서, 상기 전력 관리 유닛은 상기 프로세서가 동작하는 동작 전압과 클록 주파수를 변경시킴으로써 상기 프로세서의 상기 동작점을 변경하도록 더 구성된 것인 프로세서.
  15. 제12항에 있어서, 상기 프로세서는 고성능 모드와 전력 절감 모드에서 동작하도록 구성되고, 상기 동작점을 변경하는 것은 고성능 동작 모드로부터 전력 절감 모드로 변경하는 것을 포함하는 것인 프로세서.
  16. 제12항에 있어서, 상기 전력 관리 유닛은 상기 동작점을 변경한 것에 응답하여 상기 캐시 메모리의 복수의 활성 웨이의 절반을 전력 다운하도록 구성된 것인 프로세서.
  17. 제12항에 있어서, 상기 전력 관리 유닛은 상기 프로세서가 상기 동작점을 상기 제2동작점으로부터 제3동작점으로 변경한 것에 응답하여 캐시 메모리의 하나 이상의 추가적인 웨이로부터 전력을 선택적으로 제거하도록 더 구성된 것인 프로세서.
  18. 제17항에 있어서, 상기 전력 관리 유닛은 상기 프로세서의 동작점을 상기 제3동작점으로부터 상기 제1 또는 제2동작점 중 하나로 변경한 것에 응답하여 전력이 이전에 제거된 하나 이상의 웨이로 전력을 선택적으로 인가하도록 구성된 것인 프로세서.
  19. 제12항에 있어서, 상기 전력 관리 유닛은 상기 캐시 메모리의 하나 이상의 웨이가 전력 다운된 것을 나타내는 통지를 하나 이상의 추가적인 프로세서에 송신하도록 더 구성된 것인 프로세서.
  20. 방법으로서,
    제1임계값과 제2임계값의 합계를 계산하는 단계;
    작업부하 표시값(workload indicator value)을 상기 제1임계값 및 상기 제2임계값과 비교하는 단계;
    프로세서의 작업부하 표시값이 제1임계값보다 작은 경우 캐시 메모리의 복수의 웨이들의 서브세트로부터 전력을 선택적으로 제거하는 단계; 및
    상기 작업부하 표시값이 제2임계값보다 큰 경우 상기 캐시 메모리에서 이전에 전력 다운된 웨이를 전력 온하는 단계를 포함하되,
    상기 캐시 메모리의 웨이들에의 전력은 상기 작업부하 표시값이 상기 제1임계값보다 크고 상기 제2임계값보다 작은 경우 변경되는 것인 방법.
  21. 제20항에 있어서, 상기 캐시 메모리를 포함하는 프로세서에 대한 상기 작업부하 표시값을 결정하는 단계를 더 포함하는 방법.
  22. 제20항에 있어서, 상기 제2임계값은 상기 제1임계값과 보호 대역값의 합계인 것인 방법.
  23. 제20항에 있어서, 상기 작업부하 표시값은 CIPS(committed instructions per second)값인 것인 방법.
  24. 제20항에 있어서, 상기 캐시 메모리의 하나 이상의 웨이로부터 전력을 선택적으로 제거한 이후 경과된 시간의 양을 결정하는 단계;
    상기 시간의 양을 제1시간 임계값과 비교하는 단계; 및
    상기 시간의 양이 상기 제1시간 임계값보다 작은 경우 상기 캐시 메모리의 추가적인 웨이들이 전력 다운되는 것을 방지하는 단계를 더 포함하는 방법.
  25. 제20항에 있어서, 상기 웨이들의 제1서브세트가 전력 다운되면, 상기 웨이들의 제1서브세트의 전력 다운을 나타내는 제1통지를 하나 이상의 추가적인 프로세서에 송신하는 단계; 및
    상기 캐시 메모리의 이전에 전력 다운된 웨이를 전력 업한 것에 응답하여, 상기 캐시 메모리의 이전에 전력 다운된 웨이들이 전력 업된 것을 나타내는 제2 통지를 상기 하나 이상의 추가적인 프로세서에 송신하는 단계를 더 포함하는 방법.
  26. 방법으로서,
    프로세서의 성능 상태를 제1성능 상태로부터 제2성능 상태로 변경하는 단계;
    상기 성능 상태를 변경한 것에 응답하여 캐시 메모리의 하나 이상의 웨이로부터 전력을 선택적으로 제거하는 단계; 및
    상기 캐시 메모리의 상기 하나 이상의 웨이로부터 전력을 제거한 것에 후속하여 상기 프로세서의 상기 코어에 하나 이상의 명령을 처리하는 단계를 포함하되,
    상기 제1성능 상태는 제1전압과 제1클록 주파수에서 상기 프로세서의 코어를 동작시키는 것을 포함하고, 상기 제2성능 상태는 상기 제1클록 주파수보다 작은 제2클록 주파수와 상기 제1전압보다 작은 제2전압에서 상기 코어를 동작시키는 것을 포함하며, 상기 처리는 상기 코어가 전력이 제거되지 않은 상기 캐시 메모리의 하나 이상의 웨이에 액세스하는 것을 포함하는 것인 방법.
  27. 제26항에 있어서, 상기 프로세서의 상기 성능 상태를 상기 제2성능 상태로로부터 제3성능 상태로 변경하는 단계;
    상기 제2성능 상태로부터 상기 제3성능 상태로 변경한 것에 응답하여 상기 캐시 메모리의 하나 이상의 추가적인 웨이로부터 전력을 선택적으로 제거하는 단계; 및
    상기 하나 이상의 추가적인 웨이로부터 전력을 제거한 것에 후속하여 상기 프로세서의 코어에 하나 이상의 명령을 처리하는 단계를 포함하되,
    상기 제3성능 상태는 제3전압과 제3클록 주파수에서 상기 코어를 동작시키는 것을 포함하며, 상기 제3전압은 상기 제2전압보다 작고, 상기 제3클록 주파수는 상기 제2클록 주파수보다 작으며, 상기 처리는 상기 코어가 전력이 제거되지 않은 캐시 메모리의 하나 이상의 웨이에 액세스하는 것을 포함하는 것인 방법.
  28. 제27항에 있어서, 상기 프로세서의 성능 상태를 상기 제3성능 상태로부터 상기 제1 또는 제2성능 상태 중 하나로 변경하는 단계; 및
    이전에 전력 다운된 하나 이상의 상기 캐시 웨이를 선택적으로 전력 업하는 단계를 더 포함하는 방법.
  29. 제26항에 있어서, 상기 하나 이상의 캐시 웨이로부터 전력이 선택적으로 제거된 이후의 시간의 양을 제1상주기간 요건(first residency requirement) 및 제2상주기간 요건과 비교하는 단계를 더 포함하되, 상기 방법은 상기 시간의 양이 상기 제1상주기간 요건보다 작은 경우 추가적인 캐시 웨이들이 전력 다운되는 것을 방지하는 단계 및 상기 시간의 양이 상기 제2상주기간 요건보다 작은 경우 추가적인 캐시 웨이들이 전력 업되는 것을 방지하는 단계를 더 포함하는 방법.
  30. 컴퓨터 시스템에서 실행가능한 프로그램에 의해 동작되는 데이터 구조를 포함하는 컴퓨터 판독가능한 매체로서, 상기 프로그램은 상기 데이터 구조로 설명된 회로를 포함하는 집적 회로를 제조하는 공정의 일부분을 수행하기 위해 상기 데이터 구조 상에서 동작하고, 상기 데이터 구조에서 설명된 회로는,
    적어도 하나의 실행 유닛이 동작점을 제1동작점으로부터 제2동작점으로 변경한 것에 응답하여 캐시 메모리의 복수의 웨이의 제1서브세트의 전력을 선택적으로 변경하도록 구성된 전력 관리 유닛을 포함하며,
    상기 적어도 하나의 실행 유닛은, 상기 복수의 웨이의 상기 제1서브세트의 전력을 선택적으로 변경한 것에 후속하여, 전력이 변경된 상기 복수의 웨이의 제2서브세트 중 하나 이상의 웨이에 액세스하도록 구성된 것인 컴퓨터 판독가능한 매체.
  31. 제25항에 있어서, 상기 데이터 구조는 다음 유형의 데이터, 즉, HDL(high-level design language) 데이터; RTL(register transfer level) 데이터; 및 GDS(Graphic Data System) II 데이터 중 하나 이상을 포함하는 것인 컴퓨터 판독가능한 매체.
KR1020127032300A 2010-05-11 2011-05-10 캐시 제어를 위한 방법 및 장치 KR101673500B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/777,657 2010-05-11
US12/777,657 US8412971B2 (en) 2010-05-11 2010-05-11 Method and apparatus for cache control
PCT/US2011/035975 WO2011143256A1 (en) 2010-05-11 2011-05-10 Method and apparatus for cache control

Publications (2)

Publication Number Publication Date
KR20130115090A true KR20130115090A (ko) 2013-10-21
KR101673500B1 KR101673500B1 (ko) 2016-11-07

Family

ID=44303932

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127032300A KR101673500B1 (ko) 2010-05-11 2011-05-10 캐시 제어를 위한 방법 및 장치

Country Status (6)

Country Link
US (2) US8412971B2 (ko)
EP (1) EP2569680B1 (ko)
JP (1) JP5735638B2 (ko)
KR (1) KR101673500B1 (ko)
CN (1) CN102934046B (ko)
WO (1) WO2011143256A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101490072B1 (ko) * 2014-01-28 2015-02-06 한양대학교 산학협력단 캐시의 전력 제어를 위한 장치 및 방법
WO2020159722A1 (en) * 2019-01-31 2020-08-06 Advanced Micro Devices, Inc. Residency map descriptors
US11169926B2 (en) 2019-03-28 2021-11-09 SK Hynix Inc. Memory system and memory controller capable of minimizing latency required to complete an operation within a limited powr budget and operating method of memory controller

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9311245B2 (en) 2009-08-13 2016-04-12 Intel Corporation Dynamic cache sharing based on power state
US20110055610A1 (en) * 2009-08-31 2011-03-03 Himax Technologies Limited Processor and cache control method
US9043533B1 (en) * 2010-06-29 2015-05-26 Emc Corporation Sizing volatile memory cache based on flash-based cache usage
KR101661111B1 (ko) * 2010-11-23 2016-09-30 한국전자통신연구원 멀티 코어 프로세서의 전력 제어 장치 및 방법
US8972707B2 (en) 2010-12-22 2015-03-03 Via Technologies, Inc. Multi-core processor with core selectively disabled by kill instruction of system software and resettable only via external pin
US9201677B2 (en) * 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
JP5653315B2 (ja) * 2011-07-28 2015-01-14 株式会社東芝 情報処理装置
US8769316B2 (en) 2011-09-06 2014-07-01 Intel Corporation Dynamically allocating a power budget over multiple domains of a processor
JP5674613B2 (ja) 2011-09-22 2015-02-25 株式会社東芝 制御システム、制御方法およびプログラム
JP5674611B2 (ja) * 2011-09-22 2015-02-25 株式会社東芝 制御システム、制御方法およびプログラム
US8954770B2 (en) 2011-09-28 2015-02-10 Intel Corporation Controlling temperature of multiple domains of a multi-domain processor using a cross domain margin
US9074947B2 (en) 2011-09-28 2015-07-07 Intel Corporation Estimating temperature of a processor core in a low power state without thermal sensor information
US8832478B2 (en) 2011-10-27 2014-09-09 Intel Corporation Enabling a non-core domain to control memory bandwidth in a processor
US9026815B2 (en) 2011-10-27 2015-05-05 Intel Corporation Controlling operating frequency of a core domain via a non-core domain of a multi-domain processor
US8943340B2 (en) 2011-10-31 2015-01-27 Intel Corporation Controlling a turbo mode frequency of a processor
US9158693B2 (en) 2011-10-31 2015-10-13 Intel Corporation Dynamically controlling cache size to maximize energy efficiency
US20130145101A1 (en) * 2011-12-06 2013-06-06 Lisa Hsu Method and Apparatus for Controlling an Operating Parameter of a Cache Based on Usage
US8924758B2 (en) 2011-12-13 2014-12-30 Advanced Micro Devices, Inc. Method for SOC performance and power optimization
US9946540B2 (en) * 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
US9619236B2 (en) 2011-12-23 2017-04-11 Intel Corporation Apparatus and method of improved insert instructions
CN107220029B (zh) 2011-12-23 2020-10-27 英特尔公司 掩码置换指令的装置和方法
JP5458132B2 (ja) * 2012-03-13 2014-04-02 株式会社東芝 キャッシュ装置
US8943274B2 (en) * 2012-05-22 2015-01-27 Seagate Technology Llc Changing power state with an elastic cache
US8972665B2 (en) * 2012-06-15 2015-03-03 International Business Machines Corporation Cache set selective power up
US9292283B2 (en) * 2012-07-11 2016-03-22 Intel Corporation Method for fast large-integer arithmetic on IA processors
US9261945B2 (en) * 2012-08-30 2016-02-16 Dell Products, L.P. Dynanmic peak power limiting to processing nodes in an information handling system
US9218040B2 (en) 2012-09-27 2015-12-22 Apple Inc. System cache with coarse grain power management
US8977817B2 (en) * 2012-09-28 2015-03-10 Apple Inc. System cache with fine grain power management
US9734548B2 (en) * 2012-10-26 2017-08-15 Nvidia Corporation Caching of adaptively sized cache tiles in a unified L2 cache with surface compression
US9183144B2 (en) * 2012-12-14 2015-11-10 Intel Corporation Power gating a portion of a cache memory
JP6116941B2 (ja) * 2013-02-28 2017-04-19 株式会社東芝 情報処理装置
US10642735B2 (en) 2013-03-15 2020-05-05 Oracle International Corporation Statement cache auto-tuning
JP6038699B2 (ja) * 2013-03-22 2016-12-07 シャープ株式会社 電子機器
US9400544B2 (en) 2013-04-02 2016-07-26 Apple Inc. Advanced fine-grained cache power management
US8984227B2 (en) 2013-04-02 2015-03-17 Apple Inc. Advanced coarse-grained cache power management
US9396122B2 (en) 2013-04-19 2016-07-19 Apple Inc. Cache allocation scheme optimized for browsing applications
KR102027573B1 (ko) * 2013-06-26 2019-11-04 한국전자통신연구원 캐시 메모리 제어 방법 및 그 장치
JP6130750B2 (ja) * 2013-07-16 2017-05-17 株式会社東芝 メモリ制御回路およびプロセッサ
US9612961B2 (en) 2013-08-29 2017-04-04 Empire Technology Development Llc Cache partitioning in a multicore processor
US9430434B2 (en) 2013-09-20 2016-08-30 Qualcomm Incorporated System and method for conserving memory power using dynamic memory I/O resizing
US20150310902A1 (en) 2014-04-23 2015-10-29 Texas Instruments Incorporated Static Power Reduction in Caches Using Deterministic Naps
US9494997B2 (en) 2014-06-16 2016-11-15 Apple Inc. Hierarchical clock control using hysterisis and threshold management
US9886207B2 (en) * 2014-09-16 2018-02-06 Mediatek Inc. Memory-access method using batch command queue and associated controller
CN105793832B (zh) 2014-09-18 2018-12-18 上海兆芯集成电路有限公司 处理器及其操作方法、以及计算机可读存储介质
US10928882B2 (en) * 2014-10-16 2021-02-23 Futurewei Technologies, Inc. Low cost, low power high performance SMP/ASMP multiple-processor system
US9952650B2 (en) * 2014-10-16 2018-04-24 Futurewei Technologies, Inc. Hardware apparatus and method for multiple processors dynamic asymmetric and symmetric mode switching
US10248180B2 (en) * 2014-10-16 2019-04-02 Futurewei Technologies, Inc. Fast SMP/ASMP mode-switching hardware apparatus for a low-cost low-power high performance multiple processor system
WO2016082205A1 (zh) * 2014-11-28 2016-06-02 华为技术有限公司 一种多级缓存的功耗控制方法、装置及设备
US9734072B2 (en) 2015-03-24 2017-08-15 Macom Connectivity Solutions, Llc Main memory prefetch operation and multiple prefetch operation
US10268262B2 (en) 2015-08-02 2019-04-23 Dell Products, L.P. Dynamic peak power limiting to processing nodes in an information handling system
WO2017049592A1 (en) 2015-09-25 2017-03-30 Intel Corporation Method and apparatus to improve shared memory efficiency
US10255190B2 (en) * 2015-12-17 2019-04-09 Advanced Micro Devices, Inc. Hybrid cache
CN105404591B (zh) * 2015-12-18 2019-02-26 杭州士兰微电子股份有限公司 处理器系统及其存储器控制方法
US10073787B2 (en) * 2016-04-18 2018-09-11 Via Alliance Semiconductor Co., Ltd. Dynamic powering of cache memory by ways within multiple set groups based on utilization trends
JP2018005667A (ja) * 2016-07-05 2018-01-11 富士通株式会社 キャッシュ情報出力プログラム、キャッシュ情報出力方法及び情報処理装置
JP6740456B2 (ja) * 2016-08-01 2020-08-12 ティーエスヴイリンク コーポレイション 多重チャネルキャッシュメモリおよびシステムメモリデバイス
US10255181B2 (en) * 2016-09-19 2019-04-09 Qualcomm Incorporated Dynamic input/output coherency
US10424107B2 (en) 2017-04-01 2019-09-24 Intel Corporation Hierarchical depth buffer back annotaton
US20180300238A1 (en) * 2017-04-17 2018-10-18 Balaji Vembu Adaptive cache sizing per workload
US10241921B2 (en) * 2017-04-17 2019-03-26 Intel Corporation Avoid cache lookup for cold cache
US11010953B2 (en) 2017-04-21 2021-05-18 Intel Corporation Dedicated fixed point blending for energy efficiency
CN110443360B (zh) * 2017-06-16 2021-08-06 上海兆芯集成电路有限公司 用于操作处理器的方法
KR102462507B1 (ko) * 2017-06-29 2022-11-02 삼성전자주식회사 프로세서, 이를 포함하는 컴퓨팅 장치 및 프로세서 저전력 모드 진입 방법
US10178619B1 (en) 2017-09-29 2019-01-08 Intel Corporation Advanced graphics power state management
US20190332166A1 (en) * 2018-04-27 2019-10-31 Qualcomm Incorporated Progressive power-up scheme for caches based on occupancy state
US20200103956A1 (en) * 2018-09-28 2020-04-02 Qualcomm Incorporated Hybrid low power architecture for cpu private caches
US11106261B2 (en) 2018-11-02 2021-08-31 Nvidia Corporation Optimal operating point estimator for hardware operating under a shared power/thermal constraint
CN112540796B (zh) * 2019-09-23 2024-05-07 阿里巴巴集团控股有限公司 一种指令处理装置、处理器及其处理方法
US11385693B2 (en) * 2020-07-02 2022-07-12 Apple Inc. Dynamic granular memory power gating for hardware accelerators
US20230094030A1 (en) * 2021-09-30 2023-03-30 Advanced Micro Devices, Inc. Cache resizing based on processor workload
KR20230047823A (ko) * 2021-10-01 2023-04-10 삼성전자주식회사 시스템 온 칩 및 어플리케이션 프로세서

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050080994A1 (en) * 2003-10-14 2005-04-14 International Business Machines Corporation Method of dynamically controlling cache size
JP3834323B2 (ja) * 2004-04-30 2006-10-18 日本電気株式会社 キャッシュメモリおよびキャッシュ制御方法
US20080077813A1 (en) * 2006-09-22 2008-03-27 P.A. Semi, Inc. Fast L1 flush mechanism
KR20080030674A (ko) * 2005-08-22 2008-04-04 인텔 코오퍼레이션 전력 절감을 위한 동적 메모리 크기 조정

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6845432B2 (en) * 2000-12-28 2005-01-18 Intel Corporation Low power cache architecture
GB2378778B (en) 2001-08-13 2005-03-23 Ibm Computer system with heap and card table
US7290093B2 (en) * 2003-01-07 2007-10-30 Intel Corporation Cache memory to support a processor's power mode of operation
US7051221B2 (en) * 2003-04-28 2006-05-23 International Business Machines Corporation Performance throttling for temperature reduction in a microprocessor
US7395372B2 (en) * 2003-11-14 2008-07-01 International Business Machines Corporation Method and system for providing cache set selection which is power optimized
JP2006059068A (ja) 2004-08-19 2006-03-02 Matsushita Electric Ind Co Ltd プロセッサ装置
US7647514B2 (en) * 2005-08-05 2010-01-12 Fujitsu Limited Reducing power consumption at a cache
US20070083783A1 (en) * 2005-08-05 2007-04-12 Toru Ishihara Reducing power consumption at a cache
US7516274B2 (en) 2005-11-15 2009-04-07 Sun Microsystems, Inc. Power conservation via DRAM access reduction
US7606976B2 (en) * 2006-10-27 2009-10-20 Advanced Micro Devices, Inc. Dynamically scalable cache architecture
US7966457B2 (en) 2006-12-15 2011-06-21 Microchip Technology Incorporated Configurable cache for a microprocessor
JP5231867B2 (ja) * 2008-05-23 2013-07-10 株式会社東芝 キャッシュメモリシステム
US8271732B2 (en) * 2008-12-04 2012-09-18 Intel Corporation System and method to reduce power consumption by partially disabling cache memory
US8156357B2 (en) * 2009-01-27 2012-04-10 Freescale Semiconductor, Inc. Voltage-based memory size scaling in a data processing system
US9311245B2 (en) * 2009-08-13 2016-04-12 Intel Corporation Dynamic cache sharing based on power state
US8412885B2 (en) * 2009-11-12 2013-04-02 Intel Corporation Searching a shared cache by using search hints and masked ways
US8352683B2 (en) * 2010-06-24 2013-01-08 Intel Corporation Method and system to reduce the power consumption of a memory device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050080994A1 (en) * 2003-10-14 2005-04-14 International Business Machines Corporation Method of dynamically controlling cache size
JP3834323B2 (ja) * 2004-04-30 2006-10-18 日本電気株式会社 キャッシュメモリおよびキャッシュ制御方法
KR20080030674A (ko) * 2005-08-22 2008-04-04 인텔 코오퍼레이션 전력 절감을 위한 동적 메모리 크기 조정
US20080077813A1 (en) * 2006-09-22 2008-03-27 P.A. Semi, Inc. Fast L1 flush mechanism

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101490072B1 (ko) * 2014-01-28 2015-02-06 한양대학교 산학협력단 캐시의 전력 제어를 위한 장치 및 방법
WO2020159722A1 (en) * 2019-01-31 2020-08-06 Advanced Micro Devices, Inc. Residency map descriptors
US10991146B2 (en) 2019-01-31 2021-04-27 Advanced Micro Devices, Inc. Residency map descriptors
US11521342B2 (en) 2019-01-31 2022-12-06 Advanced Micro Devices, Inc. Residency map descriptors
US11169926B2 (en) 2019-03-28 2021-11-09 SK Hynix Inc. Memory system and memory controller capable of minimizing latency required to complete an operation within a limited powr budget and operating method of memory controller

Also Published As

Publication number Publication date
US8832485B2 (en) 2014-09-09
JP5735638B2 (ja) 2015-06-17
US8412971B2 (en) 2013-04-02
KR101673500B1 (ko) 2016-11-07
WO2011143256A1 (en) 2011-11-17
EP2569680A1 (en) 2013-03-20
JP2013526739A (ja) 2013-06-24
CN102934046B (zh) 2016-06-22
US20130227321A1 (en) 2013-08-29
US20110283124A1 (en) 2011-11-17
EP2569680B1 (en) 2020-06-03
CN102934046A (zh) 2013-02-13

Similar Documents

Publication Publication Date Title
KR101673500B1 (ko) 캐시 제어를 위한 방법 및 장치
KR101518440B1 (ko) 프로세싱 노드의 동적 성능 제어
US8190863B2 (en) Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction
US7966506B2 (en) Saving power in a computer system
CN102934084B (zh) 用于通过将第一核类型与第二核类型耦合来提高功率性能的装置、方法和系统
US9098418B2 (en) Coordinated prefetching based on training in hierarchically cached processors
US8583894B2 (en) Hybrid prefetch method and apparatus
TWI534599B (zh) 用於配合動態電壓脈波結構而改良電力遞送效能的裝置、方法與系統
US20140281248A1 (en) Read-write partitioning of cache memory
US9563567B2 (en) Selective cache way-group power down
US10108548B2 (en) Processors and methods for cache sparing stores
US10204056B2 (en) Dynamic cache enlarging by counting evictions
US20130346683A1 (en) Cache Sector Dirty Bits
US20130262780A1 (en) Apparatus and Method for Fast Cache Shutdown
US9176895B2 (en) Increased error correction for cache memories through adaptive replacement policies
CN117897690A (zh) 通知临界性的高速缓存策略

Legal Events

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