KR20180037954A - 휴대용 컴퓨팅 디바이스에서의 캐시 인지 저전력 모드 제어를 위한 시스템 및 방법 - Google Patents

휴대용 컴퓨팅 디바이스에서의 캐시 인지 저전력 모드 제어를 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20180037954A
KR20180037954A KR1020187003279A KR20187003279A KR20180037954A KR 20180037954 A KR20180037954 A KR 20180037954A KR 1020187003279 A KR1020187003279 A KR 1020187003279A KR 20187003279 A KR20187003279 A KR 20187003279A KR 20180037954 A KR20180037954 A KR 20180037954A
Authority
KR
South Korea
Prior art keywords
cache
core
low power
power mode
soc
Prior art date
Application number
KR1020187003279A
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 KR20180037954A publication Critical patent/KR20180037954A/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/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/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
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • 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/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • 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
    • 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
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

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

Abstract

멀티코어 시스템-온-칩 (SoC) 에서의 저전력 모드들의 개선된 구현을 위한 시스템들 및 방법들이 제시된다. 유휴 상태에 진입하는 멀티코어 SoC의 코어가 식별된다. 코어의 저전력 모드에 대해, 코어의 진입 전력 비용 및 코어의 퇴장 전력 비용이 계산된다. 코어와 연관된 캐시의 작업 세트 크기도 또한 계산된다. 캐시가 코어의 저전력 모드를 퇴장하기 위한 레이턴시는 작업 세트 크기를 사용하여 계산된다. 마지막으로, 코어에 대한 저전력 모드가 코어의 진입 및 퇴장 전력 비용, 및 캐시가 저전력 모드를 퇴장하는 레이턴시에 부분적으로 기초하여 코어에 대한 액티브 모드에 비해 전력 절감을 초래하는지 여부에 대한 결정이 이루어진다.

Description

휴대용 컴퓨팅 디바이스에서의 캐시 인지 저전력 모드 제어를 위한 시스템 및 방법
무선 신호들을 포함하여, 다양한 통신 매체를 통해 다른 디바이스들과 통신하는 프로세서를 갖는 모바일 디바이스들이 보편적이다. 휴대용 컴퓨팅 디바이스들 (PCD) 을 포함한 모바일 디바이스는 무선, 아날로그, 디지털 및 기타 수단을 통해 다양한 다른 디바이스들 통신하는데 사용될 수 있다. 이들 모바일 디바이스들은 휴대 전화들, 휴대용 정보 단말기들 (PDA), 휴대용 게임 콘솔들, 팜탑 컴퓨터들, 태블릿 컴퓨터들 및 다른 휴대용 전자 디바이스들을 포함할 수 있다. 주요 기능 외에도, PCD들은 또한 게임 다운로드 및 플레이; 음악 다운로드 및 연주; 비디오 다운로드 및 보기; GPS (Global Positioning System) 내비게이션, 웹 브라우징 및 애플리케이션 실행을 위해 사용될 수 있다.
증가된 기능성을 수용하기 위해, 최신 PCD들은 일반적으로 다중 병렬 스레드들과 같이 병렬로 PCD의 다양한 기능들을 제어하거나 수행하기 위한 연관 캐시 메모리들을 갖는 다중 프로세서들 또는 코어들 (예를 들어, 중앙 처리 유닛(들) (CPU)) 을 포함한다. 다수의 코어들을 액티브한 상태로 유지하면 에너지 소비가 많아 PCD에서 배터리 수명이 단축된다. 결과적으로, 많은 PCD들은 코어가 유휴 상태이거나 태스크를 적극적으로 실행하지 않는 경우 하나 이상의 코어를 저전력 모드에 배치한다.
저전력 모드에 코어를 배치하는 것에 대한 결정은 알고리즘 또는 다른 로직으로 이루어질 수 있다. 코어를 배치하는지에 대한 결정의 제한적 팩터들은 코어를 저전력 상태로 배치한 다음 코어를 저전력 상태로부터 재활성화하는 것과 연관된 시간 및/또는 에너지 오버헤드를 포함한다. 이러한 팩터들은 일반적으로 사전 결정되고 변경되지 않으며, 코어의 현재 동작 상태 또는 코어와 관련된 다른 컴포넌트들의 동작 상태, 예컨대 코어의 연관 캐시 메모리의 동작 상태를 고려하지 않는다.
따라서, 동작 상태, 특히 코어들/CPU들 모드들과 연관된 캐시 메모리의 동작 상태에 기초하여 코어들/CPU들에 대한 저전력 모드들의 개선된 구현을 위한 시스템들 및 방법들이 필요하다.
코어들/CPU들 모드들과 연관된 캐시 메모리의 동작 상태에 기초하여 휴대용 컴퓨팅 디바이스 (PCD) 에서 코어들/CPU들에 대한 저전력 모드들의 개선된 구현을 허용하는 시스템들 및 방법들이 개시된다. 동작에서, 예시적인 방법은 유휴 상태에 진입하는 멀티코어 SoC의 코어가 식별됨을 식별한다. 코어의 저전력 모드의 경우, 저전력 모드로 진입하는 코어의 진입 전력 비용과 저전력 모드를 퇴장하는 코어의 퇴장 전력 비용이 계산된다. 코어와 연관된 캐시의 작업 세트 크기도 또한 계산된다. 캐시가 코어의 저전력 모드를 퇴장하는 레이턴시는 캐시의 작업 세트 크기를 사용하여 계산된다. 마지막으로, 코어에 대한 저전력 모드가 코어의 진입 전력 비용, 코어의 퇴장 전력 비용, 및 저전력 모드를 퇴장하는 캐시의 레이턴시에 부분적으로 기초하여 코어에 대한 액티브 모드에 비해 전력 절감을 가져오는지의 여부에 대한 결정이 이루어진다.
또 다른 예시적인 실시형태는 휴대용 컴퓨팅 디바이스 (PCD) 의 멀티코어 시스템-온-칩 (SoC) 을 위한 컴퓨터 시스템이며, 시스템은 SoC의 코어; 코어와 통신하는 SoC의 캐시; 및 코어 및 캐시와 통신하는 저전력 모드 제어기를 포함하고, 저전력 모드 제어기는 코어가 유휴 상태에 진입하는 것을 식별하고, 코어의 저전력 모드에 대한 진입 전력 비용 및 퇴장 전력 비용을 계산하고, 코어에 대한 작업 세트 크기를 계산하고, 캐시에 대한 상기 작업 세트 크기를 사용하여 캐시가 코어의 저전력 모드를 퇴장하기 위한 레이턴시를 계산하고, 그리고 캐시가 저전력 모드를 퇴장하는 레이턴시에 부분적으로 기초하여 코어에 대한 저전력 모드가 액티브 모드에 비해 전력 절감을 초래하는지를 결정하도록 구성된다.
도면들에 있어서, 동일한 참조 부호들은, 달리 나타내지 않는한 다양한 도면들 전반에 걸쳐 동일한 부분들을 지칭한다. "102A" 또는 "102B" 와 같은 문자 지정을 갖는 참조 부호들에 대해, 그 문자 지정은 동일한 도면에 존재하는 2개의 동일한 부분들 또는 엘리먼트들을 구별할 수도 있다. 참조 부호들에 대한 문자 지정은, 참조 부호가 모든 도면들에 있어서 동일한 참조 부호를 갖는 모든 부분들을 포괄하도록 의도될 경우에 생략될 수도 있다. 마찬가지로, 102'와 같이 '라는 표시를 갖는 참조 부호는 동일한 참조 부호를 갖는 (그러나 ' 표시가 없는) 하부 엘리먼트에 대한 대안적인 실시형태를 나타낼 수 있다.
도 1은 본 개시의 동작 상태에 기초한 휴대용 컴퓨팅 디바이스 (PCD) 의 코어들/CPU들에 대한 저전력 모드의 개선된 구현예가 구현될 수 있는 휴대용 컴퓨팅 디바이스 (PCD) 의 예시적인 실시형태의 블록도이다;
도 2는 도 1에 예시된 PCD 실시형태와 같은 PCD에서 병렬 스레드들의 실행의 예시적인 타이밍도이다.
도 3a는 도 1에 예시된 PCD 실시형태의 CPU들의 코어들 중 하나와 같은, 코어 또는 CPU에 대한 예시적인 저전력 모드들을 예시하는 그래프이다.
도 3b는 도 3a에 예시된 저전력 모드들 중 하나로부터의 퇴장의 부가적인 양태들을 예시하는 예시적인 그래프이다.
도 4는 도 1에 예시된 PCD 실시형태와 같이 PCD에서 동작 상태에 기초하여 코어들/CPU들에 대한 저전력 모드들의 개선된 구현예를 위한 시스템의 예시적인 실시형태를 도시한 블록도이다.
도 5a는 동작 상태에 기초하여 코어들/CPU들에 대한 저전력 모드들의 개선된 구현예를 위한 방법의 예시적인 실시형태의 양태들을 설명하는 흐름도이다.
도 5b는 도 5a에 예시된 방법의 양태들을 수행할 수 있는 예시적인 컴포넌트들을 도시한다.
도 6a는 동작 상태에 기초하여 코어들/CPU들에 대한 저전력 모드들의 개선된 구현예를 위한 방법의 예시적인 실시형태의 추가 양태들을 설명하는 흐름도이다.
도 6b는 도 6a에 예시된 방법의 양태들을 수행할 수 있는 예시적인 컴포넌트들을 도시한다.
단어 "예시적인" 은 본 명세서에서 "일 예, 인스턴스 또는 예시로서 기능하는 것" 을 의미하기 위해 사용된다. 본 명세서에서 "예시적인" 으로서 설명된 임의의 양태가 반드시 다른 양태들에 비해 선호되거나 또는 유리한 것으로서 해석되는 것은 아니다.
본 설명에서, 용어 "애플리케이션" 은 : 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들과 같은 실행가능 내용을 갖는 파일들을 또한 포함할 수도 있다. 또한, 본 명세서에서 지칭되는 "애플리케이션" 은 공개될 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들과 같은 사실상 실행가능하지 않은 파일들을 또한 포함할 수도 있다.
용어 "내용 (content)" 은 오브젝트 코드, 스크립트들, 바이트 코드, 마크업 언어 파일들, 및 패치들과 같은 실행가능 내용을 갖는 파일들을 또한 포함할 수도 있다. 또한, 본 명세서에서 지칭되는 "내용" 은 공개될 필요가 있을 수도 있는 문서들 또는 액세스될 필요가 있는 다른 데이터 파일들 또는 데이터 값들과 같은 사실상 실행가능하지 않은 파일들을 또한 포함할 수도 있다.
본 설명에서 사용한 바와 같이, 용어들 "컴포넌트", "모듈", "시스템" 등은 컴퓨터 관련 엔티티, 즉 하드웨어, 펌웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행중인 소프트웨어 중 어느 하나를 지칭하도록 의도된다. 예를 들어, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 오브젝트, 실행가능물, 실행 스레드, 프로그램, 및/또는 컴퓨터일 수도 있지만, 이들에 제한되지는 않는다. 예시에 의해, 컴퓨팅 디바이스 상에서 실행되는 애플리케이션과 컴퓨팅 디바이스 양자는 컴포넌트일 수도 있다. 하나 이상의 컴포넌트들은 프로세스 및/또는 실행 스레드 내에 상주할 수도 있고, 컴포넌트는 하나의 컴퓨터 상에 로컬화되고 및/또는 2 개 이상의 컴퓨터들 사이에 분산될 수도 있다. 또한, 이들 컴포넌트들은 다양한 데이터 구조들을 저장한 다양한 컴퓨터 판독가능 매체들로부터 실행할 수도 있다. 컴포넌트들은 로컬 및/또는 원격 프로세스들에 의하여, 이를 테면 하나 이상의 데이터 패킷들을 갖는 신호 (예를 들어, 그 신호에 의하여 다른 시스템들과 인터넷과 같은 네트워크를 가로질러 및/또는 로컬 시스템, 분산 시스템에서의 또 다른 컴포넌트와 상호작용하는 하나의 컴포넌트로부터의 데이터) 에 따라 통신할 수도 있다.
본 설명에서, 용어 "휴대용 컴퓨팅 디바이스" ("PCD") 는 배터리 및/또는 커패시터와 같이, 제한된 용량 재충전가능 전력 소스 상에서 동작하는 임의의 디바이스를 설명하기 위해 사용된다. 재충전가능 전력 소스들을 가진 PCD들이 수십년간 사용되어 왔지만, 제 3 세대 ("3G") 및 제 4 세대 ("4G") 무선 기술의 도래와 결합된 재충전가능 배터리들의 기술적 진보들이 다중 능력들을 가진 다수의 PCD들을 가능하게 하였다. 따라서, PCD 는 그 중에서도, 셀룰러 전화기, 위성 전화기, 페이저, PDA, 스마트폰, 내비게이션 디바이스, 스마트북 또는 리더, 미디어 플레이어, 전술한 디바이스들의 조합, 무선 연결을 가진 랩탑 또는 태블릿 컴퓨터일 수도 있다.
이 설명에서, 용어들 "중앙 프로세싱 유닛 ("CPU")", "디지털 신호 프로세서 ("DSP")", "그래픽 프로세싱 유닛 ("GPU")", "칩", "비디오 코덱", "시스템 버스", "이미지 프로세서", 및 "미디어 디스플레이 프로세서 ("MDP")" 는 SoC 상에서 구현될 수 있는 프로세싱 컴포넌트들의 비제한적 예들이다. 프로세싱 컴포넌트들에 대한 이들 용어들은 달리 표시될 때를 제외하고는 상호교환가능하게 사용된다. 더욱이, 이하 논의되는 바와 같이, 상기한 것들 또는 그들의 균등물들의 임의의 것은 본원에서 "코어(들)" 및/또는 "서브-코어(들)" 로서 일반적으로 지칭되는 하나 이상의 별개의 프로세싱 컴포넌트들에서 구현되거나 그러한 하나 이상의 별개의 프로세싱 컴포넌트들로 이루어질 수도 있다.
이 설명에서, 용어들 "워크로드", "프로세스 로드", "프로세스 워크로드" 및 "그래픽 워크로드" 는, 상호교환가능하게 사용될 수 있고, 주어진 실시형태에서 주어진 프로세싱 컴포넌트와 연관되거나 그것에 할당될 수도 있는 프로세싱 부담, 또는 프로세싱 부담의 퍼센티지를 일반적으로 지향한다. 부가적으로, 관련된 용어들 "프레임", "코드 블록" 및 "코드의 블록" 은 주어진 워크로드의 부분 또는 세그먼트를 지칭하기 위해 상호교환가능하게 사용될 수 있다. 상기 정의된 것에 추가하여, "프로세싱 컴포넌트" 등은, 비제한적으로, 중앙 프로세싱 유닛, 그래픽 프로세싱 유닛, 코어, 메인 코어, 서브-코어, 프로세싱 영역, 하드웨어 엔진 등, 또는 휴대용 컴퓨팅 디바이스 내에서 집적 회로 내에 존재하거나 그 외부에 존재하는 임의의 컴포넌트일 수도 있다.
통상의 기술자는 "MIPS" 라는 용어는 프로세서가 주어진 전력 주파수에서 프로세싱할 수 있는 초당 백만 명령들의 수를 나타냄을 인식할 것이다. 이 설명에서, 그 용어는, 예시적인 실시형태들에서 프로세서 성능의 상대적인 레벨들을 나타내기 위해 측정의 일반적인 단위로서 사용되고, 이 개시물의 범위 내에 속하는 임의의 주어진 실시형태는 임의의 특정 드라이스톤 레이팅 또는 프로세싱 능력을 갖는 프로세서를 포함하여야만 한다거나 포함하지 않아야만 한다는 것을 제안하도록 해석되지 않을 것이다. 부가적으로, 통상의 기술자에 의해 이해되는 바와 같이, 프로세서의 MIPS 셋팅 (setting) 은 프로세서에 의해 공급되는 전력, 주파수, 또는 동작 주파수 (operating frequency) 와 직접 상관된다.
PCD의 동작 상태에 기초하여 코어/CPU에 대한 저전력 모드들의 개선된 구현을 위한 본 시스템들 및 방법들은 유휴 코어 또는 CPU를 저전력 모드로 진입시키는지, 또는 유휴 코어 또는 CPU를 저전력 모드로 전혀 진입시키는지에 관한 개선된 의사 결정을 동적으로 구현하는 비용 효과적인 방법을 제공한다. 일 실시형태에서, 코어/CPU와 연관된 캐시의 경우, 본 시스템들 및 방법들은 코어/CPU가 저전력 모드로 진입하는 것의 "비용" 또는 "오버헤드"에 관한 결정을 내릴 때 코어/CPU가 유휴 상태에 들어가기 전에 캐시의 동작 상태의 영향을 고려한다.
본원에 설명된 시스템, 또는 그 시스템의 부분들은 원하는대로 하드웨어 또는 소프트웨어로 구현될 수도 있다. 하드웨어에서 구현되는 경우에, 디바이스들은 다음과 같은 기술들: 개별 전자 컴포넌트들, 집적 회로, 적절하게 구성된 반도체 디바이스들 및 저항성 엘리먼트들 등을 갖는 애플리케이션-특정 집적 회로 중 임의의 것 또는 이들의 조합을 포함할 수 있다. 이들 하드웨어 디바이스들 중 임의의 것은, 단독으로 작용하거나 다른 디바이스들과 작용하거나 메모리와 같은 다른 컴포넌트들과 작용하든지 간에, 개시된 방법들의 다양한 동작들 또는 단계들을 수행하기 위한 컴포넌트들 또는 수단을 형성 또는 포함할 수도 있다.
본원에 설명된 시스템이 소프트웨어로 구현되거나 부분적으로 구현되는 경우에, 소프트웨어 부분은 본원에 설명된 방법들의 다양한 단계들을 수행하기 위해 사용될 수 있다. 다양한 엘리먼트들을 나타내는데 사용된 소프트웨어 및 데이터는 메모리에 저장되고 적합한 명령 실행 시스템 (마이크로프로세서) 에 의해 실행될 수 있다. 소프트웨어는 논리 함수들을 구현하기 위한 실행가능한 명령들의 순서화된 리스팅을 포함할 수도 있고, 단일 또는 다중-코어 프로세서 또는 프로세서-포함 시스템과 같은 명령 실행 시스템, 장치, 또는 디바이스에 의해 또는 와 함께 사용하기 위해 임의의 "프로세서-판독가능 매체" 에 수록될 수 있다. 이러한 시스템들은 일반적으로 명령 실행 시스템, 장치, 또는 디바이스로부터 명령들을 액세스하고 그 명령들을 실행할 것이다.
도 1 은 본원에 기재된 시스템들 및 방법들을 구현할 수도 있는 PCD (100) 의 예시적인, 비제한적인 양태의 블록도이다. 도 1 에 도시된 PCD (100) 는 하나 이상의 무선 통신 시스템과 통신할 수 있는 무선 전화기의 형태이다. 이러한 무선 통신 시스템은, 롱 텀 에볼루션 (LTE) 시스템, 코드 분할 다중 액세스 (CDMA) 시스템, 주파수 분할 다중 액세스 (FDMA) 시스템, 이동 통신을 위한 글로벌 시스템 (GSM) 시스템, 무선 로컬 영역 네트워크 (WLAN) 시스템, 몇몇 다른 무선 시스템, 또는 이들의 임의의 것의 조합을 포함하는, 브로드밴드 무선 통신 시스템일 수도 있다. CDMA 시스템은, 광대역 CDMA (WCDMA), CDMA 1X, EVDO (Evolution-Data Optimized), 시간 분할 동기식 CDMA (TD-SCDMA), 또는 CDMA 의 몇몇 다른 버전을 구현할 수도 있다.
도시된 바와 같이, PCD (100) 는 함께 커플링되는 아날로그 신호 프로세서 (128) 및 이종의 멀티-코어 중앙 프로세싱 유닛 ("CPU") (110) 을 포함하는 온-칩 시스템 (또는 SoC) (102) 을 포함한다. CPU (110) 는 통상의 기술자에 의해 이해되는 바와 같이 제 0 코어 (120), 제 1 코어 (122), 제 2 코어 (124), 및 제 N 코어 (126) 를 포함할 수도 있다. 또한, CPU (110) 대신에, 통상의 기술자에 의해 이해되는 바와 같이 디지털 신호 프로세서 ("DSP") 가 또한 채용될 수도 있다. 더욱이, 이종의 멀티-코어 프로세서들의 통상의 기술자에 의해 이해되는 바와 같이, 코어들 (120, 122, 124, 126) 의 각각은 상이한 아키텍처들을 가질 수 있고, 상이한 효율들로 워크로드들을 프로세싱할 수 있고, 동작하는 경우 상이한 양의 전력을 소비할 수도 있는 등이다. 코어들 (120, 122, 124, 126) 의 각각은 PCD (100) 의 하나 이상의 기능을 제어할 수도 있다. 예를 들어, 제 0 코어 (120) 는 PCD (100) 에서 그래픽을 제어하기 위한 그래픽 프로세싱 유닛 ("GPU") 일 수도 있다. 이러한 GPU/제 0 코어 (120) 는, GPU 코어 (120) 와 (버퍼들을 포함하는) 메모리 (112) 사이의 통신을 제어하는 것을 포함하는, PCD (100) 에서 그래픽을 제어하기 위해 필요한 드라이버들, 캐시(들), 및/또는 기타 컴포넌트들을 더 포함할 수도 있다. 다른 예로서, 제 N 코어 (126) 와 같은 다른 코어는 하이 레벨 동작 시스템 ("HLOS") 일 수 있는 PCD 동작 시스템을 실행할 수 있다. 이러한 제 N/HLOS 코어 (126) 는, 코어 (126) 와 (플래시 메모리를 포함할 수 있는) 메모리 (112) 사이의 통신을 포함하는, HLOS를 실행하기에 필요한 드라이버들, 캐시(들), 하드웨어 인터페이스들, 및/또는 다른 컴포넌트들을 더 포함할 수도 있다.
임의의 코어들 (120, 122, 124, 126) 은 CPU 또는 디지털 신호 프로세서와 같은 별도의 프로세서일 수 있다. 하나 이상의 코어들 (120, 122, 124, 126) 은 프로세서 이외에 하나 이상의 캐시 메모리들과 같은 다른 컴포넌트들을 포함할 수 있다. 이들 캐시 메모리들은 예를 들어 L1 캐시와 같은 특정 코어 또는 프로세서용 전용 캐시 메모리를 포함할 수 있다. 부가적으로 또는 대안으로, 이들 캐시 메모리들은 예를 들어 L2 캐시와 같은 다른 코어들 또는 프로세서들과 공유되거나 및/또는 다른 코어들 또는 프로세서들에 액세스가능한 캐시 메모리를 포함할 수 있다.
부가적으로, 각각의 코어들 (120, 122, 124, 126) 은 메모리 (112), 센서들 또는 PCD (100) 의 다른 하드웨어와 같은 다른 컴포넌트들과 함께 기능적으로 그룹화되어 후술되는 서브시스템을 형성할 수 있다. 이러한 서브시스템(들)은 오디오 서브시스템, GPS 서브시스템, 센서 서브시스템 등과 같은 PCD의 특정 기능을 수행하기 위해 구현될 수 있다. 그러한 서브시스템들 중 하나 이상은 SoC (102) 가 전력 오프 상태 또는 모드를 포함한 저전력 또는 전력 감소 상태 또는 모드로 배치될 때 동작을 계속하는 것과 같이, SoC (102) 와 독립적으로 동작하도록 구성될 수 있다.
언급한 바와 같이, 메모리 (112) 는 도 1의 멀티코어 CPU (110) 에 커플링된 것으로 도시된다. 이러한 메모리 (112) 는 예를 들어 랜덤 액세스 메모리 ("RAM"), 읽기 전용 메모리 ("ROM"), 플래시 메모리, 또는 이들의 임의의 조합일 수 있다. 부가적으로, 메모리 (112) 는 버퍼들, 메인 메모리들 및 캐시들을 포함하여 함께 위치되거나 서로 멀리 위치된 다수의 상이한 타입들의 메모리를 포함할 수 있다. 그러한 캐시들은 하나 이상의 코어들 (120, 122, 124, 126) 에 의해 액세스될 수 있는 하나 이상의 L2, L3, LN 캐시들을 포함할 수 있다. 부가적으로, 메모리 (112) 가 SoC (102) 상에 위치된 것으로 도시되어 있지만, 메모리 (112) 는 SoC (102) 또는 "오프-칩"으로부터 물리적으로 떨어져 위치된 하나 이상의 메모리들, 예컨대 하나 이상의 코어들 (120, 122, 124, 126) 및/또는 멀티코어 CPU (110) 와 통신하는 더블 데이트 레이트 ("DDR") 메모리를 포함할 수 있다.
도 1 에 도시된 바와 같이, 디스플레이 제어기 (129) 및 터치 스크린 제어기 (130) 는 멀티코어 CPU (110) 에 커플링된다. 궁극적으로, 온-칩 시스템 (102) 의 외부에 있는 디스플레이/터치스크린 (132) 은 디스플레이 제어기 (129) 및 터치 스크린 제어기 (130) 에 커플링된다. 디지털 카메라 (148) 는 또한 멀티코어 CPU (110) 에 커플링될 수 있다. 이러한 실시형태들에서, 디지털 카메라 (148) 는 멀티코어 CPU (110) 의 코어들 (120, 122, 124, 126) 중 하나에 의해 제어될 수 있다. 예시적인 양태에서, 디지털 카메라 (148) 는 전하 결합 소자 ("CCD") 카메라 또는 상보적 금속 산화물 반도체 ("CMOS") 카메라이다.
도 1 의 PCD (100) 는 비디오 인코더 (134), 예컨대, PAL (phase alternating line) 인코더, SECAM (sequential couleur a memoire) 인코더, 또는 NTSC (national television system(s) committee) 인코더, 또는 멀티코어 CPU (110) 에 커플링된 임의의 다른 유형의 비디오 디코더 (134) 를 더 포함할 수도 있다. 또한, 비디오 증폭기 (136) 는 비디오 인코더 (134) 및 디스플레이/터치스크린 (132) 에 커플링된다. 비디오 포트 (138) 는 비디오 증폭기 (136) 에 커플링된다. 도 1 에 도시된 바와 같이, 범용 직렬 버스 (USB) 제어기 (140) 가 멀티코어 CPU (110) 에 커플링된다. 또한, USB 포트 (142) 가 USB 제어기 (140) 에 커플링된다. SIM (subscriber identity module) 카드 (146) 는 또한 멀티코어 CPU (110) 에 커플링될 수도 있다. 다른 실시형태들에서, 다중 SIM 카드들 (146) 이 구현될 수도 있다.
도 1 에서 추가적으로 예시된 바와 같이, 스테레오 오디오 CODEC (150) 이 멀티코어 CPU (110) 에 커플링될 수도 있다. 더욱이, 오디오 증폭기 (152) 가 스테레오 오디오 CODEC (150) 에 커플링될 수도 있다. 일 예시적인 양태에서, 제 1 스테레오 스피커 (154) 및 제 2 스테레오 스피커 (156) 가 오디오 증폭기 (152) 에 커플링된다. 도 1 은, 마이크로폰 증폭기 (158) 가 또한 스테레오 오디오 CODEC (150) 에 커플링될 수도 있음을 보여준다. 추가적으로, 마이크로폰 (160) 은 마이크로폰 증폭기 (158) 에 커플링될 수도 있다. 특정 양태에서, 주파수 변조 (FM) 라디오 튜너 (162) 가 스테레오 오디오 CODEC (150) 에 커플링될 수도 있다. 또한, FM 안테나 (164) 가 FM 라디오 튜너 (162) 에 커플링된다. 또한, 스테레오 헤드폰들 (166) 이 스테레오 오디오 CODEC (150) 에 커플링될 수도 있다.
도 1 은, 모뎀 디바이스/무선 주파수 ("RF") 트랜시버 (168) 가 멀티코어 CPU (110) 에 커플링될 수도 있음을 더 나타낸다. 모뎀 디바이스 (168) 는, GSM, CDMA, W-CDMA, TDSCDMA, LTE, 및 비제한적으로 FDB/LTE 및 PDD/LTE 무선 프로토콜들과 같은 LTE 의 변형형태들과 같은, 무선 통신 프로토콜들 중 하나 이상을 지원할 수도 있다. 추가적으로, 다중 모뎀 디바이스들 (168) 이 존재할 수도 있고, 이러한 실시형태들에서, 상이한 모뎀 디바이스들 (168) 이 상기 나열된 무선 통신 프로토콜들 및/또는 기술들의 일부 또는 전부를 지원할 수도 있다.
일부 구현들에서, 모뎀 디바이스 (168) 는 별개의 프로세서, 메모리, 및/또는 RF 트랜시버를 포함하는 다양한 컴포넌트들로 더 이루어질 수도 있다. 다른 구현들에서, 모뎀 디바이스 (168) 는 단순히 RF 트랜시버일 수도 있다. 또한, 모뎀 디바이스 (168) 는 집적 회로에서 통합될 수도 있다. 즉, 모뎀 디바이스 (168) 를 포함하는 컴포넌트들은 칩에서의 풀 솔루션일 수도 있고, 그리고 본원에 설명된 시스템들 및 방법들에 의해 모니터링될 수 있는 그 자신의 프로세서 및/또는 코어를 포함할 수 있다. 추가적으로, 모뎀 디바이스 (168) 를 포함하는 다양한 컴포넌트들은 멀티코어 CPU (110) 에 커플링될 수도 있고 CPU (110) 의 코어들 (120, 122, 124) 중 하나에 의해 제어될 수 있다. RF 스위치 (170) 는 모뎀 디바이스 (168) 및 RF 안테나 (172) 에 커플링될 수도 있다. 다양한 실시형태들에서, 다중 RF 안테나들 (172) 이 존재할 수도 있고, 각각의 이러한 RF 안테나 (172) 는 RF 스위치 (170) 를 통해 모뎀 디바이스 (168) 에 커플링될 수도 있다.
도 1 에서 도시된 바와 같이, 키패드 (174) 는 멀티코어 CPU (110) 에 직접 또는 아날로그 신호 프로세서 (128) 를 통해 커플링될 수도 있다. 또한, 마이크로폰 (176) 을 갖는 모노 헤드셋이 멀티코어 CPU (110) 및 또는 아날로그 신호 프로세서 (128) 에 커플링될 수도 있다. 또한, 진동기 디바이스 (178) 가 또한 멀티코어 CPU (110) 및/또는 아날로그 신호 프로세서 (128) 에 커플링될 수도 있다. 도 1 은 또한, 전력 공급기 (188) 가 온-칩 시스템 (102) 에 커플링될 수도 있고, 일부 구현들에서, 전력 공급기 (188) 는 USB 제어기 (140) 를 통해 커플링된다. 특정 양태에서, 전력 공급기 (188) 는 전력을 필요로 하는 PCD (100) 의 다양한 컴포넌트들에 전력을 제공하는 직류 (DC) 전력 공급기이다. 또한, 특정 양태에서, 전력 공급기 (188) 는 AC 전원에 연결된 교류 (AC) 대 DC 트랜스포머로부터 유도된 DC 전력 공급기 또는 재충전가능한 DC 배터리일 수도 있다.
멀티코어 CPU (110) 는 또한 하나 이상의 내부의, 온-칩 열 센서들 (157A) 및 하나 이상의 외부의, 오프-칩 열 센서들 (157B) 에 커플링될 수도 있다. 온-칩 열 센서들 (157A) 은 수직 PNP 구조에 기초한 하나 이상의 PTAT (proportional to absolute temperature) 온도 센서들을 포함할 수도 있고, 통상적으로 상보형 금속 산화물 반도체 ("CMOS") 초고밀도 집적 ("VLSI") 회로에 전용된다. 오프-칩 열 센서들 (157B) 은 하나 이상의 서미스터들을 포함할 수도 있다. 열 센서들 (157) 은 아날로그-대-디지털 컨버터 ("ADC") 제어기 (103) 로 디지털 신호들로 변환되는 전압 드롭 (voltage drop) 을 생성할 수도 있다. 하지만, 본 개시의 범위로부터 벗어남이 없이 다른 유형들의 열 센서들 (157) 이 채용될 수도 있다.
도 1 은 또한, PCD (110) 가 또한, 데이터 네트워크, 예컨대, 로컬 영역 네트워크, 개인 영역 네트워크, 또는 임의의 다른 네트워크를 액세스하기 위해 사용될 수도 있는 네트워크 카드 (114) 를 포함할 수도 있음을 나타낸다. 네트워크 카드 (114) 는 블루투스 네트워크 카드, WiFi 네트워크 카드, 개인 영역 네트워크 (PAN) 카드, 또는 당해 기술분야에서 잘 알려진 임의의 다른 네트워크 카드일 수도 있다. 또한, 네트워크 카드 (114) 는 집적 회로에 통합될 수도 있다. 즉, 네트워크 카드 (114) 는 칩 내의 풀 솔루션일 수도 있고, 별개의 네트워크 카드 (114) 가 아닐 수도 있다.
도 1 에 도시된 바와 같이, 디스플레이/터치스크린 (132), 비디오 포트 (138), USB 포트 (142), 카메라 (148), 제 1 스테레오 스피커 (154), 제 2 스테레오 스피커 (156), 마이크로폰 (160), FM 안테나 (164), 스테레오 헤드폰들 (166), RF 스위치 (170), RF 안테나 (172), 키패드 (174), 모노 헤드셋 (176), 진동기 (178), 및 전력 공급기 (188) 는 SoC (102) 외부에 있다.
SoC 시스템 (102) 은 또한 멀티코어 CPU (110) 및/또는 하나 이상의 코어들 (120, 122, 124, 126) 을 SoC (102) 또는 PCD (100) 의 다른 서브시스템들 또는 컴포넌트들과 통신가능하게 커플링하기 위한 다양한 버스들 및/또는 인터커넥트들 (미도시) 을 포함할 수 있다. 온-칩 시스템 (102) 내의 버스/인터커넥트 인터페이스를 모니터링하기 위해 임의의 수의 버스 및/또는 인터커넥트 제어기들이 또한 구현 및 배치될 수 있음을 알아야 한다. 대안적으로, 단일의 버스/인터커넥트 제어기가, 소망될 수도 있는 바와 같이 CPU (110) 와 PCD (100) 의 다양한 서브시스템들 또는 컴포넌트들 사이에 신호들을 통신하는 2 개 이상의 버스/인터커넥트 인터페이스들을 모니터링하도록 배치된 입력들을 갖도록 구성될 수 있을 것이다.
본원에 설명된 방법 단계들 중 하나 이상은 메모리 (112) 및/또는 CPU (110) 에 위치한 메모리에 저장된 데이터 및 프로세서 명령들의 조합을 통해 가능하게 될 수도 있다. 이들 명령들은 본원에서 설명된 방법들을 수행하기 위해 멀티코어 CPU (110) 및/또는 SoC (102) 의 서브시스템들에서 하나 이상의 코어들 (120, 122, 124, 126) 에 의해 실행될 수도 있다. 또한, 멀티코어 CPU (110), 하나 이상의 코어들 (120, 122, 124, 126), 메모리 (112), PCD (100) 의 다른 컴포넌트들, 또는 이들의 조합은, 동작 상태, 특히 코어들/CPU들 모드들과 연관된 하나 이상의 캐시 메모리들의 동작 상태에 기초하여 코어들/CPU들에 대한 저전력 모드들의 개선된 구현을 가능하게 하기 위해 본원에 설명된 방법 단계들 중 하나 이상을 실행하기 위한 수단으로서 기능할 수도 있다.
도 2는, 예컨대 도 1에 예시된 PCD 실시형태의 코어들 (120, 122, 124, 126) 에 의해, PCD에서 병렬 스레드들을 실행하는 예시적인 타이밍도이다. 도 2에 도시된 바와 같이, 동작 중에 코어들 (120, 122, 124, 126) 은 특정 시간 주기 동안 병렬로 다양한 태스크를 수행할 수 있다. 시간 주기들은 멀티코어 CPU (110) (도 1) 에 의해 수신된 임의의 주기적 신호에 따라 생성되거나 측정될 수 있다. 예를 들어, 주기적 신호는 상이한 실시형태들에서 예를 들어 클록 신호,주기적 인터럽트, 수직 동기화 ("V-Sync") 신호 등일 수 있다. 도 2의 예시적인 타이밍도에서, 코어들 (120, 122, 124, 126) 은 PCD (100) 상에서 게임을 실행 중이다. 이 예에서, 시간 주기들은 V-Sync 신호에 따른다. 그러나, 당업자라면, 도 2가 또한 비디오 재생, 운영중인 화상 회의 또는 화상 회의 소프트웨어 등과 같은 다른 신호들 및/또는 사용 사례들에도 적용된다.
도 2는 제 1 시간 주기, 프레임 1/주기 1, 및 제 2 시간 주기의 일 부분, 프레임 2/주기 2를 도시한다. 도 2에 도시된 바와 같이, 제 0 코어 (120), 제 1 코어 (122), 제 2 코어 (124) 및 제 N 코어 (126) 모두는 프레임 1에서 액티브이다. 당업자라면 이해할 수 있는 바와 같이, 모든 코어들 (120, 122, 124, 126) 이 프레임 1 동안 액티브이지만, 액티비티의 레벨 또는 양이 반드시 코어들 (120, 122, 124, 126) 사이에 동등하게 분배되는 것은 아니다. 예를 들어, 도 2에 도시된 바와 같이, 제 0 코어 (120) 스레드는 프레임 1 동안 두 개의 상대적으로 작은 태스크들인 ipEvent와 xTh2를 실행한다. 제 1 코어 (122) 스레드는 프레임 1 동안 하나의 비교적 큰 태스크인 gameRenderTh를 실행한다.
당업자라면 이해할 수 있는 바와 같이, 각 스레드에 의해 실행되는 상이한 태스크들은 스레드들을 실행하는 코어들 (120, 122, 124, 126) 과 연관된 하나 이상의 캐시에 대해 상이한 액티비티 레벨들을 요구할 수 있다. 다시 예로서 제 0 코어를 이용하여, 도 2에 도시된 바와 같이, 프레임 1 동안 실행된 2개의 태스크들은 제 0 코어와 연관된 캐시에 의한 액티비티를 거의 필요로 하지 않는다. 제 0 코어와 연관된 이러한 캐시는 L1 캐시, L2 캐시 또는 제 0 코어가 액세스하는 임의의 다른 캐시일 수 있다. 도 2에서, 제 0 코어의 캐시에 의한 이러한 액티비티의 부족은 다른 캐시, DDR과 같은 오프-칩 메모리, DVD 디스크 또는 네트워크 연결을 통한 원격 서버로부터의 패치들과 같이, 캐시로의 배치를 위한 내용의 패치들 없음을 요구하는 캐시에 의해 표현된다.
이 예를 계속하면, 도 2에 도시된 바와 같이, 제 1 코어에 의해 실행되는 스레드의 단일 태스크는 제 1 코어와 연관된 캐시에 의해 비교적 큰 액티비티 레벨을 필요로 한다. 제 1 코어의 캐시에 의한 이러한 큰 액티비티 레벨은 도 2에서 외부 소스들로부터 내용의 다수의 패치들을 요구하는 캐시에 의해 표현되며, 그 결과 패치된 내용이 캐시에서 하나 이상의 캐시 라인들로 기록된다. 이러한 내용 패치들은 다른 캐시, 예를 들어 DDR과 같은 오프-칩 메모리, DVD 디스크 또는 네트워크 연결을 통한 원격 서버로부터 내용을 취출하는 것을 포함할 수 있다.
또한 도 2에 도시된 바와 같이, 프레임 1/주기 1의 완료 후에, 코어들 (120, 122, 124, 126) 중 어느 것도 프레임 2/주기 2에서 실행될 임의의 스레드들 또는 태스크들을 갖지 않는다. 결과적으로, 코어들 (120, 122, 124, 126) 은 적어도 프레임 2/주기 2 동안 유휴 상태에 진입할 것이다. 다른 예들에서, 하나 이상의 코어들 (120, 122, 124, 126) 은 프레임 2/주기 2 동안 액티브 상태로 남아있는 반면 나머지 코어들 (120, 122, 124, 126) 은 유휴 상태에 진입할 수 있다. 코어/CPU가 도 2에 도시된 프레임 2/주기 2에서와 같이 유휴 상태에 들어가는 것을 PCD (100) 가 검출하면, 도 2에 도시된 바와 같이, PCD (100) 는 코어/CPU의 전력 소비를 줄이기 위해 코어/CPU를 저전력 모드로 시도하고 배치할 수 있다. 본 명세서에서 사용되는 바와 같이, "저전력 모드" 또는 "LPM"은 비기능적 상태, 슬립 상태, 감소 또는 제로 전압 상태, 감소 또는 제로 전력 상태 등과 같은 코어/CPU의 하나 이상의 모드들 또는 상태들을 포함할 수 있으며, 여기서 코어/CPU는 완전히 액티브 상태에 있는 동안 코어/CPU가 소비하거나 누설하는 것보다 적은 전력을 소비하거나 누설한다.
예를 들어, 도 3a는 하나 이상의 코어들 (120, 122, 124, 126) 과 같은 코어/CPU가 유휴인 것으로 검출될 때로 배치될 수 있는 예시적인 저전력 모드들을 나타내는 그래프 (300A) 이다. 도 3a의 그래프 (300A) 에서, x-축은 시간을 나타내고, y-축은 예시적인 코어/CPU에 의해 소비 또는 누설된 밀리암페어 ("mA") 단위의 전력을 나타낸다. 이해되는 바와 같이, 도 3a의 그래프 (300A) 는 시스템, 코어/CPU에 대한 저전력 모드들의 수, 시스템 또는 코어/CPU 아키텍처, 구현 등에 따라 상이한 코어들/CPU마다 다를 수 있다.
도 3a의 예에서, 코어는 액티브 상태 및 2개의 저전력 모드, 즉 LPM1 및 LPM2를 갖는다. 도 3a에 또한 도시된 바와 같이, 유휴 상태의 코어 (Core Idled) 라고 표시된 시점에서, 예시적인 코어는 유휴 상태에 진입한다 (도 2의 프레임 2 참조). 유휴 상태에 진입할 때, 코어는 액티브 모드에 있을 수 있거나, 또는 도 3a에 도시된 저전력 모드들 (LPM1 또는 LPM2) 중 하나에 배치될 수 있다. 저전력 모드들 중 하나에 배치되면, 코어는 일부 동작 또는 태스크가 액티브 모드에 다시 있도록 이 코어에게 요구할 때 코어 액티브라고 표시되는 두 번째 시점까지 해당 모드로 유지될 수 있다. 이해되는 바와 같이, 코어의 특정 구현예에 대해 더 많거나 더 적은 저전력 모드들이 가능하다.
도 3a에 도시된 바와 같이, 코어는 액티브 모드에 있는 동안, 제 1 양의 전력을 소비하거나 누설한다 (mA로 도시됨). 코어가 LPM1에 배치되면 액티브 모드의 전력량보다 낮은 두 번째 전력량을 소비하거나 누설할 것이다. 또한, 코어가 LPM2에 배치되면 액티브 모드 및 LPM1의 전력량보다 낮은 세 번째 전력량을 소비하거나 누설할 것이다. 이해되는 바와 같이, 도 3a에 도시된 액티브 모드, LPM1 및 LPM2에 대한 전력 레벨들은 예시적인 것이며, 다른 코어들/CPU들의 경우 도 3에 도시된 것과 다를 수 있다. 또한 이해되는 바와 같이, 코어/CPU를 저전력 모드에 진입시키는 것은 통상적으로 코어/CPU와 연관된 하나 이상의 캐시(들)가 플러시되고 및/또는 코어/CPU와 함께 저전력 모드 또는 상태로 놓이게 한다. 코어/CPU를 저전력 모드로부터 벗어나게 함으로써, 대응하게는 통상적으로 하나 이상의 캐시(들)가 저전력 모드 또는 상태로 빠져 나가게 하거나 및/또는 캐시가 저전력 모두에 배치될 때 존재하는 캐시 라인들로 다시 채워지게 한다.
도 3a에 또한 도시된 바와 같이, LPM1 및 LPM2 각각에 진입 및 퇴장 ("진입 레이턴시"및 "퇴장 레이턴시"이라고도 함) 하기 위한 시간 지연, 그리고 LPM1 및 LPM2 각각으로 진입하고 각각으로부터 퇴장되는데 요구되는 전력량이 존재한다. 코어가 저전력 모드로 진입 및 퇴장하게 하는데 필요한 시간량, 및 저전력 모드에서 코어로 진입 및 퇴장하는 전력 "비용" 또는 "오버헤드"는 각각의 코어/CPU마다 다를 것이다. 이러한 진입/퇴장 레이턴시들 및 진입/퇴장 전력 비용들은 코어/CPU에 대해 각각의 이용가능한 저전력 모드에 대해, 예컨대 제조업체에서 테스트함으로써 미리 결정될 수 있다. 일단 결정되면, 각각의 이용가능한 저전력 모드에 대한 진입/퇴장 레이턴시들 및 진입/퇴장 전력 비용들은 일반적으로 특정 코어/CPU에 대해 변경되지 않으며, 그렇지 않은 경우 코어를 저전력 모드로 진입할지 여부를 결정하는 알고리즘 또는 로직에 의한 사용을 위해 PCD에 저장될 수 있다.
도 3a에 도시된 예시적인 코어에 대한 실시형태에서, LPM1에 대한 진입/퇴장 레이턴시는 LPM1에 대한 진입/퇴장 전력 비용과 마찬가지로 미리 결정될 것이다. PCD (100) 는 코어가 도 3a에서 유휴 상태의 코어라고 표시된 시간에 표시된 유휴 상태에 진입했다는 것을 인지하게 된다. 도 3a에서 코어가 다음에 동작의 일부 태스크를 수행하기 위해 다시 액티브일 것이 요구되는 시기 - 코어 액티브로 표시된 시간 - 를 알고, 그리고 코어에 대한 진입/퇴장 레이턴시를 알면, PCD (100) 는 웨이크 업 프로세스가 코어를 액티브 모드로 가져가는 것을 시작해야 하기 이전에 LPM1 (LPM1에서의 코어의 "레지던시") 에 얼마나 오래 머무를 수 있는지를 결정할 수 있다.
코어가 LPM1에서 얼마나 오래 머무를 수 있는지, LPM1에 있는 동안의 코어의 전력 누설 (mA로 도시), 및 LPM1에 대한 진입/퇴장 전력 비용을 알면, PCD는 코어를 LPM1로 가져가는 것이 동일한 시간 주기 동안 코어를 액티브 모드로 두는 것과 비교하여 임의의 실제적인 전력 절감 효과를 초래하는지 여부를 결정할 수 있다. 동일한 결정은 또한 원하는 경우 또는 원하는 경우 진입하기 위한 "최상의" 저전력 모드 선택의 일부로서 LPM2에 대해 이루어질 수 있다. 이해되는 바와 같이, 일 실시형태에서, 저전력 모드에 대한 전력 절감에 관한 이들 결정들을 행하기 위한 알고리즘 또는 논리는 다수의 상이한 코어들에 대해 동일할 수 있다. 그러나, 결정들을 내리는데 사용되는 특정 파라미터들, 결정들의 결과들은 그 아키텍처, 구현들 등에 따라 다른 코어들/CPU들에 대해 달라질 것이다.
저전력 모드로부터 코어/CPU를 가져올 때 코어/CPU와 연관된 다른 컴포넌트들에 의해 발생된 추가 레이턴시와 추가 전력 비용이 또한 있을 수 있음이 관찰되었다. 도 3b는 예를 들어 도 3a에 도시된 LPM2 저전력 모드로부터의 코어/CPU의 퇴장의 추가 양태들을 도시한 그래프 (300B) 이다. 도 3b에 도시된 바와 같이, 코어/CPU를 LPM2로부터 가져오는 레이턴시 및 전력 비용 외에도, 코어/CPU와 연관된 캐시(들)를 재증진하거나 또는 재구축하는 레이턴시 및 전력 비용이 또한 존재한다.
코어/CPU와 연관된 캐시(들)를 재증진하거나 또는 재구축하는 것은 외부 소스(들)로부터 내용을 재패치 (re-fetching) 하고 및/또는 캐시 라인들을 캐시로 재작성하는 레이턴시 및 전력 비용을 포함할 수 있다. 캐시를 재구축하는 이러한 추가적인 퇴장 레이턴시 및 전력 비용은, 코어/CPU를 LPM2로 가져갈지 여부를 결정함에 있어서 통상적으로 고려되지 않는다. 유휴 상태에 진입하기 이전에, 코어/CPU가 캐시에 의해 패치 없음 또는 패치 약간 있음 동작들을 요구한 태스크들 또는 스레드들을 수행하고 있던 예에서, 캐시를 재구축하는 추가적인 퇴장 레이턴시 및 전력 비용은 무시할 수 있다.
유휴 상태에 진입하기 이전에, 코어/CPU가 캐시에 의해 많은 패치들을 요구한 태스크들 또는 스레드들을 수행하고 있던 예들에서, 캐시를 재구축하는 추가적인 퇴장 레이턴시 및 전력 비용은 상당할 수 있다. 예를 들어 도 3b의 예시적인 그래프 (300B) 에 도시된 바와 같이, 캐시의 캐시 라인들의 재구축 또는 재증진을 발생시킨 추가적인 레이턴시는 코어/CPU를 액티브 모드로 되돌린 후 코어/CPU를 효과적으로 지연시킬 수 있다. 경우에 따라, 캐시를 재구축 또는 재로딩하는 동안 코어/CPU가 액티브 모드에서 대기해야 하는 것은 코어/CPU를 저전력 모드로 두는 것으로부터 어떤 이점들을 무효화할 수 있다. 추가적으로 경우에 따라, 캐시를 재구축 또는 재로딩하는 동안 코어/CPU가 액티브 모드에서 대기해야 하는 것은 코어/CPU를 막 액티브 모드로 남겨두는 것보다 전력 비용이 더 클 수 있다.
이해되는 바와 같이, 코어/CPU의 저전력 모드에 대해 갖는 캐시의 영향의 양은 코어/CPU가 유휴 상태에 진입했을 때 캐시의 동작 상태에 의존할 수 있다. 따라서, 캐시에 대한 레이턴시 및 전력 비용은 일반적으로 저전력 모드 알고리즘, 로직, 드라이버, 제어기 등에서 사용되는 것처럼 미리 결정된 파라미터들을 전적으로 사용하여 계산되지 않을 수 있다.
도 4는 도 1에 예시된 PCD 실시형태와 같이 PCD에서의 동작 상태에 기초하여 코어들/CPU들에 대한 저전력 모드들의 개선된 구현예를 위한 시스템 (400) 의 예시적인 실시형태를 도시한 블록도이다. 예시적인 시스템 (400) 은 (도 1의 SoC (102) 와 유사한) PCD에서 구현될 수 있는 시스템-온-칩 (SoC) 집적 회로 (202) 를 포함한다. 도 4의 SoC (202) 는 제 0 코어 (220), 제 1 코어 (222), 제 2 코어 (224) 및 제 N 코어 (226) 를 포함하며, 모두는 SoC (202) 의 인터커넥트 또는 버스 (240) 에 연결된다. SoC (202) 의 인터커넥트/버스 (240) 는, SoC (202) 의 아키텍처 및/또는 SoC (202) 또는 PCD가 의도된 용도에 의존할 수 있는, 임의의 바람직한 유형의 버스 또는 인터커넥트일 수 있다. 도 4에 도시된 바와 같이, "오프-칩" DDR (250) 은 또한 코어들 (220, 222, 224, 226) 및/또는 그 각각의 L1 캐시들 (221, 223, 225, 227) 과 통신하는 인터커넥트/버스 (240) 에 연결된다. 전술한 바와 같이, 동작시 L1 캐시들 (221, 223, 225, 227) 중 하나 이상은 필요에 따라 SoC (202) 외부에 위치한 DDR (250) 로부터 (또는 SoC (202) 외부의 다른 메모리들 또는 위치들로부터) 내용을 패치하고, 그리고 패치된 내용을 캐시에 캐시 라인들로서 작성할 수 있다.
SoC (202) 는 또한 명확성을 위해 도 4에 도시되지 않은 다른 컴포넌트들 및/또는 서브시스템들 (도 1에 도시된 것들은 포함함) 을 포함할 수 있다. 제 0 코어 (220), 제 1 코어 (222), 제 2 코어 (224), 및 제 N 코어 (226) 각각은 어떤 유형의 프로세서를 포함할 것이며, 각각은 도 1에 대해 전술한 코어들 (120, 122, 124, 126) 중 하나로서 구현될 수 있다. 일부 실시형태들에서, 제 0 코어 (220), 제 1 코어 (222), 제 2 코어 (224), 및 제 N 코어 (226) 중 하나 이상의 프로세서는 범용 프로세싱 유닛으로서 구현될 수 있는 반면, 다른 실시형태들에서 프로세서(들)는 DSP와 같은 전용 프로세서로 구현될 수 있다. 제 0 코어 (220), 제 1 코어 (222), 제 2 코어 (224), 및 제 N 코어 (226) 의 각각은 또한, (제 0 코어 (220) 에 대한) L1 캐시 (221), (제 1 코어 (222) 에 대한) L1 캐시 (223), (제 2 코어 (224) 에 대한) L1 캐시 (225), 및 (제 N 코어 (2246) 에 대한) L1 캐시 (227) 로서 도 4에 도시된 적어도 하나의 캐시 메모리를 포함한다.
다양한 실시형태들에서, 제 0 코어 (220), 제 1 코어 (222), 제 2 코어 (224), 및 제 N 코어 (226) 중 하나 이상은 추가 L2 캐시(들)와 같이 도 2에 도시된 것보다 더 많거나 적은 컴포넌트들을 포함할 수 있다. 부가하여, 일부 실시형태들에서, 도 4에 도시된 컴포넌트들은 다양한 구성들로 SoC (202) 상에 물리적으로 배치될 수 있고, 도 4에 도시된 하나 이상의 컴포넌트들은 SoC (202) 상에 물리적으로 서로 가까이 위치할 수 없다.
도 4에 도시된 실시형태에서, L1 캐시들 (221, 223, 225 및 227) 각각은 각각 액세스 카운터들 (231, 233, 235, 237) 을 포함하거나, 또는 이에 커플링된다. 도시된 실시형태에서, 액세스 카운터들 (231, 233, 235, 237) 은 캐시들과 인터커넥트/버스 (240) 사이의 L1 캐시들 (221, 223, 225, 227) 에 커플링된 하드웨어 카운터들이다. 다른 실시형태들에서, 액세스 카운터들 (231, 233, 235, 237) 은 원하는 대로 L1 캐시들 (221, 223, 225, 227) 자체 또는 코어들 (220, 222, 224, 226) 에 위치되는 하드웨어, 펌웨어, 소프트웨어, 또는 로직일 수 있다.
시스템 (400) 의 동작 동안, 예를 들어 L1 캐시 (221) 가 DDR (250) (또는 다른 "오프-칩" 위치들) 로부터 내용을 패치하거나 취출하면, 그 L1 캐시 (221) 와 연관된 액세스 카운터 (231) 는 액티비티의 기록을 생성한다. L1 캐시 (221) 가 메모리 또는 소스 "오프-칩 (off-chip)"으로부터 내용을 패치할 때마다, 연관된 액세스 카운터 (231) 는 L1 캐시 (221) 에 의한 패치 동작에 관한 정보를 기록한다. 기록될 수 있는 예시적인 정보는 패치 동작들의 수, 패치된 캐시 라인들의 수, (DDR (250) 과 같이) 내용이 패치된 캐시로 패치되고 작성된 바이트들의 수 등을 포함한다. 결과적으로, 액세스 카운터들 (231, 233, 235, 237) 각각은 그것의 연관된 L1 캐시 (221, 223, 225, 227) 에 의해 수행되는 패치 동작들의 수, 양, 유형, 위치 등의 실행 카운트 또는 기록을 유지할 수 있다.
하나의 L1-유형 캐시와 연관된 것으로서 도 4의 실시형태에 도시되어 있지만, 하나 이상의 액세스 카운터들 (231, 233, 235, 237) 이, 다수의 코어들/CPU들에 의해 공유되는 캐시(들), L2 캐시들, 및/또는 코어 (220, 222, 224, 226) 에 의해 사용되는 다수 레벨의 캐시(들)를 포함한, 추가의 또는 상이한 캐시들과 연관될 수 있다는 것을 이해할 것이다. 따라서, 일부 실시형태들에서, 액세스 카운터들 (231, 233, 235, 237) 은 각각 다수의 상이한 캐시들에 대해 이러한 실행 카운트 또는 기록 정보를 저장할 수 있다. 일 실시형태에서, 실행 카운트 또는 기록 정보 (하나의 캐시 또는 다수의 캐시들에 대한 여부) 는 액세스 카운터들 (231, 233, 235, 237) 의 메모리에 저장될 수 있다. 다른 실시형태들에서, 액세스 카운터들 (231, 233, 235, 237) 은 도시된 L1 캐시들 (221, 223, 225, 227) 과 같은 그들 각각의 연관 캐시들에서와 같은 다른 곳에 이 실행 카운트 또는 기록 정보를 저장할 수 있다. 또 다른 실시형태들에서, 액세스 카운터들 (231, 233, 235, 237) 에 의해 수집된 실행 카운트 또는 기록 정보는 저전력 모드 제어기 (LPM 제어기 (260)) 와 같은 중앙 위치에 저장될 수 있다.
인터커넥트/버스 (240) 에 연결된 것으로서 도 4에 도시된 예시적인 LPM 제어기 (260) 는, PCD (100) 가 하나 이상의 코어들 (220, 222, 224, 226) 을 하나 이상의 저전력 모드들로 배치하는 것에 대한 결정들을 내릴 때 사용하기 위해 액세스 카운터들 (231, 233, 235, 237) 중 하나 이상으로부터 실행 카운트 또는 기록 정보를 수신 또는 획득할 수 있다. 예를 들어, 일 실시형태에서, LPM 제어기 (260) 는 하나 이상의 코어들 (220, 222, 224, 226) 을 저전력 모드로 배치하는지 여부 (및/또는 어떤 저전력 모드인지) 에 대한 결정들을 하는 구현예에서 PCD (100) 에 대한 운영 시스템의 일부일 수 있는, 중앙 집중식 드라이버, 로직, 소프트웨어, 또는 알고리즘을 포함할 수 있다. 다른 실시형태에서, LPM 제어기 (260) 는 하나 이상의 코어들 (220, 222, 224, 226) 에 대한 저전력 모드 결정들을 수행하기 위한 SoC (202) 상의 하드웨어 컴포넌트, 또는 하드웨어 컴포넌트들의 컬렉션일 수 있다.
동작시, 도 4의 액세스 카운터들 (231, 233, 235, 237) 은 액세스 카운터들 (231, 233, 235, 237) 과 연관된 캐시(들)의 동작 상태에 기초하여 코어들/CPU들에 대한 저전력 모드들의 개선된 구현을 위한 방법의 일부로서 사용될 수 있다. 도 5a는 코어들/CPU들과 연관된 캐시(들)의 동작 상태에 기초하여 코어들/CPU들에 대한 저전력 모드들의 개선된 구현을 위한 예시적인 방법 (500) 의 양태들을 도시한 흐름도이다.
도 5a에 도시된 바와 같이, 방법 (500) 은 트리거 이벤트의 검출과 함께 블록 (510) 에서 시작된다. 방법 (500) 의 이러한 실시형태에서, 액세스 카운터들 (231, 233, 235, 237) 은 L1 캐시들 (231, 233, 235, 237) 과 같은 하나 이상의 연관된 캐시들에 대한 액세스 정보의 실행 카운트를 수집 및/또는 기록했다는 것이 상정된다. 방법 (500) 의 단계 (510) 에서, 트리거 이벤트가 검출된다. 일 실시형태에서, 트리거 이벤트는 액세스 카운터들 (231, 233, 235, 237) 중 하나 이상에 의해 검출된다. 액세스 카운터들 (231, 233, 235, 257) 이 하드웨어에서 구현되는 이 실시형태의 구현예에서, 액세스 카운터들 (231, 233, 235, 257) 에 의해 검출된 트리거 이벤트는 도 1과 관련하여 상술된 V-Sync와 같이 수신된 주기적 신호일 수 있다. 이러한 구현예들에서, 주기적 신호는 액세스 카운터들에 의해 직접 수신되거나, 또는 각각의 코어들 (220, 222, 224, 226) 을 통해 간접적으로 수신될 수 있다.
또 다른 실시형태에서, 트리거 이벤트의 검출은 LPM 제어기 (260) 에 의한 것과 같은 다른 컴포넌트에 의한 것일 수 있다. 이러한 다른 실시형태의 구현예에서, LPM 제어기 (260) 는 트리거 이벤트를 검출한 다음, 그 자체로 또는 하나 이상의 액세스 카운터들 (231, 233, 235, 237) 과 함께 동작하여 방법 (500) 의 나머지 블록들을 수행할 수 있다.
블록 (520) 에서, 액세스 카운터들 (231, 222, 235, 237) 에 의해 수집되는 실행 카운트 또는 기록 정보와 같은 수집된 액세스 카운터 데이터가 세이브된다. 일부 실시형태들에서, 액세스 카운터들 (231, 233, 235, 237) 은 수집된 액세스 기록 정보를 메모리에 세이브하거나 저장함으로써 이 블록 (520) 을 수행한다. 하나 이상의 액세스 카운터들 (231, 233, 235, 237) 은 일부 실시형태들에서 액세스 카운터에 로컬인 메모리에 이 정보를 세이브할 수 있다. 다른 실시형태들에서, 액세스 카운터 데이터는 임의의 곳에서, 예컨대 액세스 카운터와 연관된 L1 캐시 (221, 223, 225, 227) 에서, 또는 LPM 제어기 (260) (또는 LPM 제어기 (260) 에 액세스가능한 메모리) 와 같은 중심 위치에서 세이브될 수 있다.
일부 실시형태들에서, 액세스 카운터들 (231, 233, 235, 237) 은 블록 (520) 에서 수집된 기록 정보의 요약 또는 집합을 세이브할 수 있다. 예를 들어, 각각의 액세스 기록을 개별적으로 세이브하기보다는, 하나 이상의 액세스 카운터들 (231, 233, 235, 237) 은 하나 이상의 캐시에 의한 패치들의 총 수, 하나 이상의 캐시에 의해 패치된 캐시 라인들의 총 수, 하나 이상의 캐시들에 의해 패치된 데이터의 총 바이트 수 등을 세이브할 수 있다.
다른 실시형태들에서, 액세스 카운터 데이터 (및/또는 액세스 카운터 데이터의 요약 또는 집합) 를 세이브하는 것은 대신에 LPM 제어기 (260) 와 같은 PCD (100) 의 다른 부분에 의해 수행될 수 있다. 일 구현예에서, 블록 (510) 에서 트리거 이벤트를 검출한 후, LPM 제어기 (260) 는 하나 이상의 액세스 카운터들 (231, 233, 235, 237) 로부터 액세스 카운터 데이터 (및/또는 액세스 카운터 데이터의 요약 또는 집합) 을 검출하고 그 정보를 LPM 제어기 (260) 와 연관된 메모리에 저장할 수 있다. 다른 구현예에서, 블록 (510) 에서 트리거 이벤트를 검출한 후, LPM 제어기 (260) 는 하나 이상의 액세스 카운터들 (231, 233, 235, 237) 이 수집된 데이터 (및/또는 액세스 카운터 데이터의 요약 또는 집합) 를 LPM 제어기 (260) 로 또는 LPM 제어기 (260) 에 의해 액세스될 수 있는 다른 위치로 제공하게 할 수 있다.
방법 (500) 은 액세스 카운터들 (231, 233, 235, 237) 이 리셋되는 블록 (530) 으로 계속된다. 블록 (530) 에서, 단계 (520) 에서 액세스 카운터 데이터가 세이브된 메모리들이 아닌 캐시 패치들에 관한 실행 정보를 포함하는 메모리 저장들이 클리어 및/또는 리셋된다. 이러한 방식으로, 블록 (530) 은 액세스 카운터들 (231, 233, 235, 237) 이 새로운 시간 주기 동안 캐시 패치들에 관한 정보의 새로운 실행 수집을 시작하게 하고, 캐시 패치 정보가 획득되어 세이브되는 별도의 샘플링 기간들을 생성하게 한다. 블록 (530) 은 액세스 카운터들 (231, 233, 235, 237) 리셋함으로써 또는 실행중인 기록 정보가 저장된 로컬 메모리 또는 다른 메모리를 클리어함으로써 직접 달성될 수 있다. 다른 실시형태들에서, 이는 LPM 제어기 (260) 에 의해 수행되어 그러한 액세스 카운터 메모리 또는 다른 메모리가 리셋되게 할 수 있다.
액세스 카운터들 (231, 233, 235, 237) 이 블록 (530) 에서 리셋된 이후에, 선택적인 블록 (540) 이 수행될 수 있다. 예를 들어, 각각의 액세스 카운터들 (231, 233, 235, 237) 이 단일 캐시에 대해 방법 (500) 을 개별적으로 수행하는 실시형태들에서, 방법 (500) 의 블록 (540) 을 수행할 필요가 없을 수도 있다. 하나 이상의 액세스 카운터들 (231, 233, 235, 237) 이 다중 캐시들에 대해 방법 (500) 을 개별적으로 수행하는 것과 같은 다른 실시형태에서, 블록 (540) 이 수행될 수 있다. 그러한 실시형태들에서, 액세스 카운터 (231, 233, 235, 237) 는 블록 (540) 에서 데이터가 모든 캐시들에 대해 세이브되었는지 여부를 결정한다. 그렇다면, 방법 (500) 은 종료한다. 그렇지 않다면, 방법 (500) 은 블록 (520) 으로 되돌아가서 추가적인 캐시(들)에 대한 액세스 카운터 데이터가 세이브되고 액세스 카운터가 추가적인 캐시(들)에 대해 리셋된다 (블록 (530)).
LPM 제어기 (260) (또는 PCD (100) 의 다른 컴포넌트) 가 다중 액세스 카운터들 (231, 233, 235, 237) 에 대한 방법 (500) 을 수행하는 것과 같은 또 다른 실시형태에서, 블록 (540) 이 또한 수행될 수 있다. 그러한 실시형태들에서, LPM 제어기 (260) (또는 PCD (100) 의 다른 컴포넌트) 는 블록 (540) 에서 데이터가 모든 액세스 카운터들 (231, 233, 235, 237) 에 대해 세이브되었는지 여부를 결정한다. 그렇다면, 방법 (500) 은 종료한다. 그렇지 않다면, 방법 (500) 은 블록 (520) 으로 되돌아가서 추가적인 액세스 카운터들 (231, 233, 235, 237) 에 대한 액세스 카운터 데이터가 세이브되고 추가적인 액세스 카운터들 (231, 233, 235, 237) 이 리셋된다 (블록 (530)).
이해되는 바와 같이, 도 5a의 예시적인 방법 (500) 은 도 4a의 코어들 (220, 222, 224, 226) 과 연관된 L1 캐시들 (221, 223, 225, 227) 과 같은 코어/CPU와 연관된 하나 이상의 캐시들의 동작 상태의 캡처를 허용한다. 특히, 코어/CPU가 유휴 상태에 진입하는 경우들에 있어서 (도 2 참조), 예시적인 방법 (500) 은 코어/CPU가 유휴 상태로 들어가기 직전의 시간 주기 또는 샘플링 주기 동안 코어/CPU와 연관된 캐시들의 동작 상태에 관한 정보, 즉 코어/CPU가 아래에 논의된 저전력 모드에서 퇴장할 때 캐시를 재구축 또는 재증진하는데 필요한 시간 및/또는 전력을 계산하거나 추정하는데 사용될 수 있는 정보를 캡처 및 제공한다. 예시적인 방법 (500) 은 또한, 코어/CPU가 유휴 상태로 들어가기 이전의 시간의 다수의 주기들 또는 샘플링 주기들 동안 이들 캐시들의 동작 상태에 관한 정보가 캡처 및 기록될 수 있게 하여, 캐시의 재구축 또는 재증진에 필요한 시간 및/또는 전력의 계산 또는 추정의 일부로서 또한 사용될 수 있는 캐시의 동작 상태의 히스토리를 제공한다.
예시적인 방법 (500) 이 도 5a의 문맥에서 설명되었지만, 방법 (500) 의 다른 방법들 또는 실시형태들이 구현될 수 있음을 이해할 것이다. 예를 들어, 다른 실시형태들에서, 액세스 카운터들 (231, 233, 235, 237) 은 방법 (500) 의 시작 이전에 사전 동작되지 않을 수도 있다. 그러한 실시형태들에서, 블록 (510) 에서의 트리거 이벤트를 검출하는 것은 대신에 액세스 카운터들 (231, 233, 235, 237) 이 리셋되게 하고, 이후 패치 정보를 수집하게 하고, 새로운 샘플링 주기를 시작하게 할 수 있다. 이러한 실시형태들에서, 후속 트리거 이벤트는 수집된 패치 정보가 세이브되도록 하고, 액세스 카운터들 (231, 233, 235, 237) 이 상술한 바와 같이 리셋되도록 하여, 다음의 샘플링 주기를 시작하게 할 수 있다. 따라서, 방법 (500) 의 이러한 대안적인 실시형태에서, 도 5a의 블록들 (520 및 530) 은 순서대로 바뀐다. 도 5a의 방법 (500) 의 다른 실시형태들 및/또는 변형들은 또한 이해할 수 있는 바와 같이 가능하다.
다음 도 6a로 돌아가면, 코어들/CPU들에 대한 저전력 모드들의 개선된 구현을위한 방법 (600) 의 예시적인 실시형태의 추가적인 양태들이 도시된다. 도 6a의 방법 (600) 은 유휴 상태에 진입하는 도 4의 코어들 (220, 222, 224, 226) 과 같은 하나 이상의 코어/CPU의 식별 또는 검출과 함께 블록 (610) 에서 시작한다. 유휴 상태로의 하나 이상의 코어/CPU의 진입은 PCD (100) 에 의해, 예컨대 도 4에 도시된 LPM 제어기 (260) 와 같은 컴포넌트에 의해 식별되거나 검출될 수 있다. 전술한 바와 같이, LPM 제어기 (260) 는 개별 컴포넌트 (또는 컴포넌트들의 컬렉션) 일 수 있거나, 또는 PCD (100) 상에서 동작하는 알고리즘, 애플리케이션, 프로그램, 드라이버 등일 수 있다. 대안적으로, 다른 실시형태들에서, 블록 (610) (및 방법 (600) 의 나머지 블록들) 의 식별 또는 결정은 유휴 상태로 진입하는 코어/CPU에 의해 수행될 수 있다. 이해되는 바와 같이, 블록 (610) 에서 하나 이상의 코어가 유휴 상태에 진입하고 있음을 식별 또는 결정하는 다수의 방법이 존재한다.
일단 코어/CPU가 유휴 상태에 진입하는 것으로 식별되거나 결정되면, 코어/CPU를 저전력 모드로 배치하는 진입 및 퇴장 오버헤드 (예컨대 전력 비용) 가 블록 (620) 에서 계산된다. 도 3a에 대해 전술한 바와 같이, 이러한 진입/퇴장 전력 비용은 일반적으로 각각의 코어/CPU에 대해 미리 결정되며, PCD (100) 의 동작 상태에 기초하여 변화하지 않는다. 일부 실시형태들에서, 유휴 상태에 진입하는 각각의 코어/CPU는 자신을 위한 블록 (620) 의 계산들을 수행할 수 있다. 다른 실시형태들에서, 도 4의 LPM 제어기 (260) 와 같은 중앙 집중화된 컴포넌트 또는 드라이버/애플리케이션/알고리즘은 하나 이상의 코어/CPU에 대해 블록 (620) 을 수행할 수 있다.
블록 (630) 에서, 코어/CPU와 연관된 하나 이상의 캐시들에 대한 작업 세트 크기가 계산되거나 결정된다. 일부 실시형태들에서, 캐시는 도 4의 L1 캐시 (221, 223, 225, 227) 등의 코어/CPU와 연관된 L1 캐시일 수 있다. 다른 실시형태들에서, 캐시는 둘 이상의 코어/CPU에 공유되거나 액세스 가능한 L2 또는 다른 캐시일 수 있다. 일 실시형태에서, 작업 세트를 계산 또는 결정하는 것은 DDR 메모리 (도 4의 DDR (250) 참조), DVD와 같은 디스크, 네트워크에 의해 연결된 원격 서버 등과 같은 "오프-칩" 소스들로부터의 캐시에 의해 만들어진 패치들에 대한 정보에 기초하여 캐시의 동작 상태를 추정하거나 계산하는 것을 포함할 수 있다. 이러한 정보는 도 5a에 대해 논의된 바와 같이 도 4의 액세스 카운터들 (231, 233, 235, 237) 에 의해 수집된 정보를 포함할 수 있다.
일 실시형태에서, 캐시에 대한 작업 세트 크기는 도 5a에서 논의된 바와 같이 코어/CPU가 유휴 상태에 진입하기 전에 가장 최근의 시간 주기/샘플링 주기에서 수집된 정보와 같이, 캐시에 관한 가장 최근의 정보로부터 계산되거나 결정될 수 있다. 예를 들어, 작업 세트 크기는 가장 최근의 시간 주기/샘플링 주기 등에서 캐시에 의해 패치된 캐시 라인들의 총 수, 가장 최근의 시간 주기/샘플링 주기에서 캐시에 의해 패치된 바이트들의 수 또는 내용 등일 수 있다.
다른 실시형태들에서, 캐시의 작업 세트 크기는 코어/CPU가 유휴 상태에 진입하기 이전의 사전 시간 주기들/샘플링 주기들에서 수집된 정보와 같이, 캐시에 관한 가장 최근의 정보보다 많은 정보로부터 계산되거나 결정될 수 있다. 그러한 실시형태들에서, 블록 (630) 에서 캐시에 대한 작업 세트 크기를 계산하는 것은 과거 N 시간 주기들/샘플링 주기들 동안 캐시에 의해 패치된 내용의 평균 바이트 수 및/또는 캐시 라인들의 평균 수를 결정하는 것을 포함할 수 있다. 다른 실시형태들에서, 블록 (630) 에서 캐시에 대한 작업 세트 크기를 계산하는 것은, 대신에 또는 추가적으로, 과거 N 시간 주기들/샘플링 주기들 중 임의의 주기에서 캐시에 의해 패치된 내용의 최대 바이트 수 및/또는 캐시 라인들의 최대 수를 결정하는 것을 포함할 수 있다.
일부 실시형태들에서, 유휴 상태에 진입하는 각각의 코어/CPU는 자신을 위한 블록 (630) 의 계산 또는 결정을 수행할 수 있다. 다른 실시형태들에서, 도 4의 LPM 제어기 (260) 와 같은 중앙 집중화된 컴포넌트 또는 드라이버/애플리케이션/알고리즘은 유휴 상태에 진입하는 하나 이상의 코어/CPU에 대해 블록 (630) 의 계산 또는 결정을 수행할 수 있다.
방법 (600) 은 캐시의 재증진, 재로딩, 재패치 및/또는 재구축을 위한 오버헤드를 결정하는 블록 (640) 으로 계속된다. 일 실시형태에서, 블록 (640) 의 결정 또는 계산은 저전력 모드에 대해, 캐시의 재증진, 재로딩, 재패치 및/또는 재구축을 위한 전력 비용을 결정하는 것을 포함할 수 있다. 이러한 전력 비용의 계산은 작업 세트 크기가 어떻게 결정되었는지에 관계없이 블록 (630) 에서 결정된 작업 세트 크기를 사용하여 수행될 수 있다.
다른 실시형태들에서, 블록 (640) 의 결정 또는 계산은, 대안으로 또는 추가하여, 저전력 모드에 대해, 캐시의 재증진, 재로딩, 재패치 및/또는 재구축을 위한 레이턴시를 결정하는 것을 포함할 수 있다. 이러한 레이턴시의 계산은 작업 세트 크기가 어떻게 결정되었는지에 관계없이 블록 (630) 에서 결정된 작업 세트 크기를 사용하여 수행될 수 있다. 예를 들어, 일 구현에서, 블록 (640) 의 계산은, 작업 세트를 캐시로 재증진, 재로딩 또는 재구축하기 위한 총 수를 결정하기 위해 캐시가 캐시 라인에 액세스/패치하는 수로, 가장 최근의 시간 주기/샘플링 주기에서의 액세스/패치된 캐시 라인들의 총 수를 승산하는 것을 포함할 수 있다. 이해되는 바와 같이, 추가적인 계산들 또는 결정들이 블록 (640) 에서 구현될 수 있고, 계산들은 블록 (630) 에서 작업 세트가 계산되는 방법에 의존할 수 있다.
일부 실시형태들에서, 유휴 상태에 진입하는 각각의 코어/CPU는 자신을 위한 블록 (640) 의 계산들 또는 결정들을 수행할 수 있다. 다른 실시형태들에서, 도 4의 LPM 제어기 (260) 와 같은 중앙 집중화된 컴포넌트 또는 드라이버/애플리케이션/알고리즘은 유휴 상태에 진입하는 하나 이상의 코어/CPU에 대해 블록 (630) 의 계산들 또는 결정들을 수행할 수 있다.
블록 (650) 에서, 방법 (600) 은 코어에 대한 저전력 모드가 정당화되는지 여부를 결정한다. 일 실시형태에서, 블록 (650) 의 결정은 블록들 (620, 630 및/또는 640) 의 계산들 또는 결정들에 기초한다. 예를 들어, 일부 실시형태들에서, 블록 (650) 은 코어/CPU를 액티브 상태에 유지하는 전력 비용을 코어/CPU를 저전력 상태 (예컨대 도 3a의 LPM2) 로 배치하는 전력 비용과 비교하는 것을 포함할 수 있다. 코어/CPU를 저전력 상태로 배치하는 것으로부터의 전력 비용은 일 실시형태에서, 저전력 상태의 코어/CPU의 전력 소비/누설을 코어/CPU가 저전력 상태에서 "상주하는" 시간 주기로 먼저 승산함으로써 결정되어 "원시 (raw)" 전력 비용을 획득할 수 있다. 코어/CPU가 저전력 상태에서 "상주하는" 시간의 주기는 코어/CPU의 진입/퇴장 레이턴시, 그리고 코어/CPU와 연관된 하나 이상의 캐시(들)을 재증진하는 레이턴시에 기초하여 결정될 수 있다. 이러한 "원시" 전력 비용은 저전력 상태에 대한 코어/CPU의 진입/퇴장 전력 비용뿐만 아니라 코어/CPU와 연관된 하나 이상의 캐시(들)를 재증진하는 전력 비용에 의해 조정되어, 코어/CPU를 저전력 모드로 배치하는 최종 총 전력 비용을 결정할 수 있다.
이해되는 바와 같이, 블록들 (620, 630, 640) 의 계산들 또는 결정들을 수행하는 방법들 중 임의의 방법은 블록 (650) 의 예시적인 계산/결정의 상기 부분들 중 임의의 부분에 사용되어 코어/CPU를 저전력 모드로 배치하는 최종 총 전력 비용에 도달할 수 있다. 부가하여, 이해되는 바와 같이, 코어/CPU를 저전력 모드로 배치하는 최종 총 전력 비용에 도달하는 완전히 다른 방법은 블록 650에서 구현될 수 있다. 이러한 상이한 구현들은 결정에 더 많은 또는 더 적은 부분들을 가질 수 있고 및/또는 상이한 정보를 고려할 수 있다.
일 실시형태에서, 코어/CPU를 저전력 모드로 배치하는 최종 총 전력 비용이 코어/CPU를 완전 액티브 모드로 유지하는 전력 비용보다 낮지 않으면, 저전력 모드는 정당화되지 않는다. 다른 실시형태에서, 블록 (650) 의 결정은 코어/CPU를 저전력 모드로 배치하는 것으로부터의 "비용 절감"이 저전력 모드가 정당화되는 사전 결정된 양, 백분율 또는 임계치만큼 완전 액티브 모드의 전력 비용을 초과하는 것을 대신에 요구할 수 있다.
일부 실시형태들에서, 유휴 상태에 진입하는 각각의 코어/CPU는 자신을 위한 블록 (650) 의 계산들 또는 결정들을 수행할 수 있다. 다른 실시형태들에서, 도 4의 LPM 제어기 (260) 와 같은 중앙 집중화된 컴포넌트 또는 드라이버/애플리케이션/알고리즘은 유휴 상태에 진입하는 하나 이상의 코어/CPU에 대해 블록 (650) 의 계산들 또는 결정들을 수행할 수 있다.
블록 (650) 이후에, 블록 (660) 은 유휴 상태에 진입하는 코어/CPU 또는 유휴 상태에 진입하는 모든 코어들/CPU들에 대한 모든 저전력 모드가 고려되었는지 여부를 결정하기 위해 수행될 수 있다. 이들이 고려되었다면, 방법 (600) 은 종료한다. 코어/CPU 또는 모든 코어들/CPU들에 대한 모든 저전력 모드가 고려되지 않았다면, 방법 (600) 은 블록(620) 으로 되돌아가고 코어/CPU의 다음 저전력 모드에 대한 또는 다음의 코어/CPU에 대한 계산들/결정들을 시작한다.
블록 (660) 은 일부 실시형태들에서 선택적이다. 예를 들어, 단지 하나의 저전력 모드가 코어/CPU에 대해 종료되는 실시형태에서, 블록 (660) 은 불필요하며 방법 (600) 은 블록 (650) 에서 저전력 모드가 정당화되는지 여부를 결정한 후에 종료될 수 있다. 다른 실시형태에서, 다수의 저전력 모드들이 코어/CPU에 대해 존재할 수 있지만, 방법 (600) 을 구현하는 코어/CPU, 알고리즘, 로직, 애플리케이션, 드라이버 등은 코어/CPU에 대한 모든 가능한 저전력 모드들이 순차적으로 평가되도록 구조화되어, 저전력 모드가 정당하다고 판단되면 중단될 수 있다. 그러한 실시형태들에서, 저전력 모드가 정당화되는 블록 (650) 에서의 결정은 또한 방법 (600) 을 종료시킬 수 있다.
또 다른 실시형태들에서, 방법 (600) 은 코어/CPU에 대한 모든 가능한 저전력 모드들을 동시에 평가할 수 있다. 이들 실시형태에서, 블록 (650) 은 액티브 모드에 비해 가장 큰 전력 비용 절감을 갖는 저전력 모드와 같이, "최상의" 저전력 모드의 결정을 더 포함할 수 있다. 이들 실시형태들에 있어서, "최상의" 저전력 모드의 블록 (650) 에서의 결정은 또한 방법 (600) 을 종료시킬 수 있다.
일부 실시형태들에서, 유휴 상태에 진입하는 각각의 코어/CPU는 필요한 경우 자신을 위한 블록 (660) 의 결정을 수행할 수 있다. 다른 실시형태들에서, 도 4의 LPM 제어기 (260) 와 같은 중앙 집중화된 컴포넌트 또는 드라이버/애플리케이션/알고리즘은 유휴 상태에 진입하는 하나 이상의 코어/CPU에 대해 블록 (660) 의 결정을 수행할 수 있다.
이해되는 바와 같이, 도 5a 및 도 6a는 각각 개시된 방법들 (500 및 600) 의 단지 하나의 예시적인 실시형태를 설명한다. 다른 실시형태들에서, 추가의 블록들 또는 단계들은 도 5a에 예시된 방법 (500) 및/또는 도 6a에 예시된 방법 (600) 에 추가될 수 있다. 마찬가지로, 일부 실시형태들에서 도 5a 및/또는 도 6a에 도시된 다양한 블록들 또는 단계들은 조합되거나 또는 생략될 수 있다. 방법들 (500 및 600) 의 이러한 변형예들은 본 개시의 범위 내에 있다.
부가적으로, 도 5a 또는 도 6a을 포함하는, 본 명세서에서 설명된 프로세스들 또는 프로세스 플로우들에서의 소정의 단계들은 본 발명이 설명한 바와 같이 실시형태들에서 기능하도록 하기 위해 당연히 다른 단계들보다 선행할 수 있다. 하지만, 본 개시는, 그러한 순서 또는 시퀀스가 본 발명의 기능을 변경하지 않는다면, 설명된 단계들의 순서에 한정되지 않는다. 더욱이, 일부 단계들은 본 개시의 범위로부터 벗어남이 없이 다른 단계들 전에, 후에, 또는 그와 병행하여 (실질적으로 동시에) 수행될 수도 있다는 것이 인정된다. 추가로, "그 이후", "그 후", "다음", "후속하여" 등과 같은 단어들은 단계들의 순서를 한정하도록 의도되지 않는다. 이들 단어들은 단순히, 예시적인 방법의 설명을 통해 독자를 가이드하도록 사용된다.
상기 설명된 다양한 동작들, 방법들 또는 기능들은 다양한 하드웨어 및/또는 소프트웨어 컴포넌트(들) 및/또는 모듈(들)에 의해 수행될 수도 있다. 이러한 컴포넌트(들) 및/또는 모듈(들)은 다양한 기재된 동작들, 방법들 또는 기능들을 수행하기 위한 수단을 제공할 수도 있다. 일반적으로, 대응하는 상대 수단-플러스-기능 도면들을 갖는 도면들에서 예시된 방법들이 존재하는 경우에, 동작 블록들은 유사한 넘버링을 갖는 수단-플러스-기능 블록들에 대응한다. 예를 들어, 도 5a 에 예시된 블록들 (510-540) 은 도 5b 에 예시된 수단-플러스-기능 블록들 (510'-540') 에 대응한다. 마찬가지로, 도 6a 에 예시된 블록들 (610-660) 은 도 6b 에 예시된 수단-플러스-기능 블록들 (610'-660') 에 대응한다.
프로그래밍에서의 통상의 기술자는 예를 들어 본 명세서에서의 플로우 차트들 및 연관된 설명에 기초하여 어려움 없이, 개시된 발명을 구현하기 위해 컴퓨터 코드를 기입하거나 또는 적절한 하드웨어 및/또는 회로들을 식별하는 것이 가능하다. 따라서, 프로그램 코드 명령들 또는 상세화된 하드웨어 디바이스들의 특정한 셋트의 개시는 본 발명을 실시 및 이용하는 방법의 충분한 이해에 필수적인 것으로 간주되지 않는다. 청구된 프로세서-가능 프로세스들의 창의적인 기능성은 상기 설명에서 그리고 도면들과 함께 더 상세히 설명되며, 그 도면들은 다양한 프로세스 플로우들을 예시할 수도 있다
상기 나타낸 바와 같은 하나 이상의 예시적인 양태들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 소프트웨어로 구현되는 경우, 그 기능들은 비일시적 프로세서 판독가능 매체와 같은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나 송신될 수도 있다. 컴퓨터 판독가능 매체들은 한 장소에서 다른 장소로 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들 및 데이터 저장 매체들 양자를 포함한다.
저장 매체들은 컴퓨터 또는 프로세서에 의해 액세스될 수도 있는 임의의 이용가능한 매체들일 수도 있다. 제한이 아닌 일 예로, 이러한 컴퓨터 판독가능 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 운반 또는 저장하기 위해 이용될 수도 있고 컴퓨터에 의해 액세스될 수도 있는 임의의 다른 매체를 포함할 수도 있다. 디스크 (disk) 및 디스크 (disc) 는 본 명세서에서 사용한 바와 같이, 콤팩트 디스크 ("CD"), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 ("DVD"), 플로피 디스크 및 블루-레이 디스크를 포함하며, 여기서 디스크 (disk) 들은 보통 데이터를 자기적으로 재생하는 한편, 디스크 (disc) 들은 레이저들로 데이터를 광학적으로 재생한다. 상기의 조합들이 또한 비일시적 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
선택된 양태들이 상세히 예시 및 설명되었지만, 다양한 치환들 및 변경들이 다음의 청구항들에 의해 정의한 바와 같이, 본 발명으로부터 벗어남 없이 본 명세서에서 이루어질 수도 있다는 것이 이해될 것이다.

Claims (30)

  1. 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 방법으로서,
    유휴 상태에 진입하는 상기 멀티코어 SoC의 코어를 식별하는 단계;
    상기 코어의 저전력 모드에 대해, 상기 코어의 진입 (enter) 전력 비용 및 상기 코어의 퇴장 (exit) 전력 비용을 계산하는 단계;
    상기 코어와 연관된 캐시에 대한 작업 세트 크기를 계산하는 단계;
    상기 캐시에 대한 상기 작업 세트 크기를 사용하여, 상기 캐시가 상기 코어의 상기 저전력 모드를 퇴장하기 위한 레이턴시를 계산하는 단계; 및
    상기 코어에 대한 상기 저전력 모드가 상기 코어의 상기 진입 전력 비용, 상기 코어의 상기 퇴장 전력 비용, 및 상기 캐시가 상기 저전력 모드를 퇴장하기 위한 상기 레이턴시에 부분적으로 기초하여 액티브 모드에 비해 전력 절감을 초래하는지를 결정하는 단계를 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 방법.
  2. 제 1 항에 있어서,
    상기 캐시에 대한 상기 작업 세트 크기를 사용하여, 상기 캐시가 상기 코어의 상기 저전력 모드를 퇴장하기 위한 전력 비용을 계산하는 단계를 더 포함하고, 상기 캐시에 대한 상기 저전력 모드가 전력 절감을 초래하는지를 결정하는 것은 또한 상기 캐시가 상기 저전력 모드를 퇴장하기 위한 전력 비용에 부분적으로 기초하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 방법.
  3. 제 1 항에 있어서,
    상기 캐시에 대한 상기 작업 세트 크기를 계산하는 단계는 적어도 하나의 샘플링 주기 동안 상기 캐시에 의해 취출된 캐시 라인들의 수를 결정하는 단계를 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 방법.
  4. 제 3 항에 있어서,
    상기 캐시에 대한 상기 작업 세트 크기를 계산하는 단계는,
    상기 적어도 하나의 샘플링 주기 중 가장 최근의 샘플링 주기 동안 상기 캐시에 의해 취출된 캐시 라인들의 수를 결정하는 단계를 더 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 방법.
  5. 제 3 항에 있어서,
    상기 캐시에 대한 상기 작업 세트 크기를 계산하는 단계는,
    복수의 샘플링 주기들 동안 상기 캐시에 의해 취출된 캐시 라인들의 평균 수를 결정하는 단계를 더 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 방법.
  6. 제 3 항에 있어서,
    상기 캐시에 대한 상기 작업 세트 크기를 사용하여, 상기 캐시가 상기 저전력 모드를 퇴장하기 위한 레이턴시를 계산하는 단계는,
    상기 적어도 하나의 샘플링 주기 동안 취출된 캐시 라인들의 수를 상기 캐시가 각각의 캐시 라인을 취출하는데 필요한 시간으로 승산하는 단계를 더 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 방법.
  7. 제 3 항에 있어서,
    상기 적어도 하나의 샘플링 주기 동안 상기 캐시에 의해 취출된 캐시 라인들의 수를 결정하는 단계는,
    상기 캐시에 커플링된 액세스 카운터로, 상기 적어도 하나의 샘플링 주기 동안 상기 캐시에 의해 취출된 캐시 라인들의 수를 카운팅하는 단계를 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 방법.
  8. 제 7 항에 있어서,
    상기 적어도 하나의 샘플링 주기는 복수의 샘플링 주기들을 포함하고, 그리고
    캐시에 커플링된 액세스 카운터로 카운팅하는 단계는 상기 복수의 샘플링 주기들 각각의 종료시 상기 액세스 카운터를 리셋하는 단계를 더 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 방법.
  9. 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 을 위한 컴퓨터 시스템으로서,
    상기 SoC의 코어;
    상기 코어와 통신하는 상기 SoC의 캐시; 및
    상기 코어 및 상기 캐시와 통신하는 저전력 모드 제어기를 포함하고,
    상기 저전력 모드 제어기는,
    상기 코어가 유휴 상태에 진입하고 있음을 식별하고,
    상기 코어의 저전력 모드에 대해, 상기 코어에 대한 진입 전력 비용 및 상기 코어에 대한 퇴장 전력 비용을 계산하고,
    상기 캐시에 대한 작업 세트 크기를 계산하고,
    상기 캐시에 대한 상기 작업 세트 크기를 사용하여, 상기 캐시가 상기 코어의 상기 저전력 모드를 퇴장하기 위한 레이턴시를 계산하고, 그리고
    상기 코어에 대한 상기 저전력 모드가 상기 코어의 상기 진입 전력 비용, 상기 코어의 상기 퇴장 전력 비용, 및 상기 캐시가 상기 저전력 모드를 퇴장하기 위한 상기 레이턴시에 부분적으로 기초하여 액티브 모드에 비해 전력 절감을 초래하는지를 결정하도록 구성되는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 을 위한 컴퓨터 시스템.
  10. 제 9 항에 있어서,
    상기 저전력 모드 제어기는 또한,
    상기 캐시에 대한 상기 작업 세트 크기를 사용하여, 상기 캐시가 상기 코어의 상기 저전력 모드를 퇴장하기 위한 전력 비용을 계산하고, 그리고 상기 캐시가 상기 저전력 모드를 퇴장하기 위한 전력 비용에 부분적으로 기초하여 상기 캐시에 대한 상기 저전력 모드가 전력 절감을 초래하는지를 결정하도록 구성되는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 을 위한 컴퓨터 시스템.
  11. 제 9 항에 있어서,
    상기 캐시에 대한 상기 작업 세트 크기는 적어도 하나의 샘플링 주기 동안 상기 캐시에 의해 취출된 캐시 라인들의 수를 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 을 위한 컴퓨터 시스템.
  12. 제 11 항에 있어서,
    상기 적어도 하나의 샘플링 주기는 복수의 샘플링 주기들을 더 포함하고, 그리고
    상기 캐시에 대한 상기 작업 세트 크기는 상기 복수의 샘플링 주기들 중 가장 최근의 샘플링 주기 동안 상기 캐시에 의해 취출된 캐시 라인들의 수를 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 을 위한 컴퓨터 시스템.
  13. 제 11 항에 있어서,
    상기 적어도 하나의 샘플링 주기는 복수의 샘플링 주기들을 더 포함하고, 그리고
    상기 캐시에 대한 상기 작업 세트 크기는 상기 복수의 샘플링 주기들 동안 상기 캐시에 의해 취출된 캐시 라인들의 평균 수를 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 을 위한 컴퓨터 시스템.
  14. 제 11 항에 있어서,
    상기 캐시에 대한 상기 작업 세트 크기를 사용하여, 상기 캐시가 상기 저전력 모드를 퇴장하기 위한 레이턴시를 계산하도록 구성된 상기 저전력 모드 제어기는,
    상기 샘플링 주기 동안 취출된 캐시 라인들의 수를 상기 캐시가 각각의 캐시 라인을 취출하는데 필요한 시간으로 승산하도록 구성된 저전력 모드 제어기를 더 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 을 위한 컴퓨터 시스템.
  15. 제 11 항에 있어서,
    상기 캐시에 커플링된 액세스 카운터를 더 포함하고, 상기 액세스 카운터는 상기 적어도 하나의 샘플링 주기 동안 상기 캐시에 의해 취출된 상기 캐시 라인들의 수를 카운팅하도록 구성된, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 을 위한 컴퓨터 시스템.
  16. 제 15 항에 있어서,
    상기 적어도 하나의 샘플링 주기는 복수의 샘플링 주기들을 포함하고, 그리고
    상기 액세스 카운터는 또한 상기 복수의 샘플링 주기들의 각각의 종료시 리셋되도록 구성되는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 을 위한 컴퓨터 시스템.
  17. 컴퓨터 판독가능 프로그램 코드가 내부에 구현된 비일시적인 컴퓨터 사용가능 저장 매체에 저장된 컴퓨터 프로그램으로서,
    상기 컴퓨터 판독가능 프로그램 코드는 휴대형 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템 온 칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 방법을 구현하기 위해 실행되도록 구성되고,
    상기 방법은,
    유휴 상태에 진입하는 상기 멀티코어 SoC의 코어를 식별하는 단계;
    상기 코어의 저전력 모드에 대해, 상기 코어의 진입 전력 비용 및 상기 코어의 퇴장 전력 비용을 계산하는 단계;
    상기 코어와 연관된 캐시에 대한 작업 세트 크기를 계산하는 단계;
    상기 캐시에 대한 상기 작업 세트 크기를 사용하여, 상기 캐시가 상기 코어의 상기 저전력 모드를 퇴장하기 위한 레이턴시를 계산하는 단계; 및
    상기 코어에 대한 상기 저전력 모드가 상기 코어의 상기 진입 전력 비용, 상기 코어의 상기 퇴장 전력 비용, 및 상기 캐시가 상기 저전력 모드를 퇴장하기 위한 레이턴시에 부분적으로 기초하여 액티브 모드에 비해 전력 절감을 초래하는지를 결정하는 단계를 포함하는, 컴퓨터 판독가능 프로그램 코드가 내부에 구현된 비일시적인 컴퓨터 사용가능 저장 매체에 저장된 컴퓨터 프로그램.
  18. 제 17 항에 있어서,
    상기 캐시에 대한 상기 작업 세트 크기를 사용하여, 상기 캐시가 상기 코어의 상기 저전력 모드를 퇴장하기 위한 전력 비용을 계산하는 단계를 더 포함하고, 상기 캐시에 대한 상기 저전력 모드가 전력 절감을 초래하는지를 결정하는 것은 또한 상기 캐시가 상기 저전력 모드를 퇴장하기 위한 전력 비용에 부분적으로 기초하는, 컴퓨터 판독가능 프로그램 코드가 내부에 구현된 비일시적인 컴퓨터 사용가능 저장 매체에 저장된 컴퓨터 프로그램.
  19. 제 17 항에 있어서,
    상기 캐시에 대한 상기 작업 세트 크기는,
    적어도 하나의 샘플링 주기 동안 상기 캐시에 의해 취출된 캐시 라인들의 수를 포함하는, 컴퓨터 판독가능 프로그램 코드가 내부에 구현된 비일시적인 컴퓨터 사용가능 저장 매체에 저장된 컴퓨터 프로그램.
  20. 제 19 항에 있어서,
    상기 적어도 하나의 샘플링 주기는 복수의 샘플링 주기들을 더 포함하고, 그리고
    상기 캐시에 대한 상기 작업 세트 크기는 복수의 샘플링 주기들 중 가장 최근의 샘플링 주기 동안 상기 캐시에 의해 취출된 캐시 라인들의 수를 더 포함하는, 컴퓨터 판독가능 프로그램 코드가 내부에 구현된 비일시적인 컴퓨터 사용가능 저장 매체에 저장된 컴퓨터 프로그램.
  21. 제 19 항에 있어서,
    상기 적어도 하나의 샘플링 주기는 복수의 샘플링 주기들을 더 포함하고, 그리고
    상기 캐시에 대한 상기 작업 세트 크기는 상기 복수의 샘플링 주기들 동안 상기 캐시에 의해 취출된 캐시 라인들의 평균 수를 포함하는, 컴퓨터 판독가능 프로그램 코드가 내부에 구현된 비일시적인 컴퓨터 사용가능 저장 매체에 저장된 컴퓨터 프로그램.
  22. 제 19 항에 있어서,
    상기 캐시에 대한 상기 작업 세트 크기를 사용하여, 상기 캐시가 상기 저전력 모드를 퇴장하기 위한 레이턴시를 계산하는 단계는,
    상기 샘플링 주기 동안 취출된 캐시 라인들의 수를 상기 캐시가 각각의 캐시 라인을 취출하는데 필요한 시간으로 승산하는 단계를 더 포함하는, 컴퓨터 판독가능 프로그램 코드가 내부에 구현된 비일시적인 컴퓨터 사용가능 저장 매체에 저장된 컴퓨터 프로그램.
  23. 제 19 항에 있어서,
    상기 적어도 하나의 샘플링 주기 동안 상기 캐시에 의해 취출된 캐시 라인들의 수를 결정하는 단계는,
    상기 캐시에 커플링된 액세스 카운터로, 상기 적어도 하나의 샘플링 주기 동안 상기 캐시에 의해 취출된 캐시 라인들의 수를 카운팅하는 단계를 포함하는, 컴퓨터 판독가능 프로그램 코드가 내부에 구현된 비일시적인 컴퓨터 사용가능 저장 매체에 저장된 컴퓨터 프로그램.
  24. 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 컴퓨터 시스템으로서,
    유휴 상태에 진입하는 상기 멀티코어 SoC의 코어를 식별하는 수단;
    상기 코어의 저전력 모드에 대해, 상기 코어의 진입 전력 비용 및 상기 코어의 퇴장 전력 비용을 계산하는 수단;
    상기 코어와 연관된 캐시에 대한 작업 세트 크기를 계산하는 수단;
    상기 캐시에 대한 상기 작업 세트 크기를 사용하여, 상기 캐시가 상기 코어의 상기 저전력 모드를 퇴장하기 위한 레이턴시를 계산하는 수단; 및
    상기 코어에 대한 상기 저전력 모드가 상기 코어의 상기 진입 전력 비용, 상기 코어의 상기 퇴장 전력 비용, 및 상기 캐시가 상기 저전력 모드를 퇴장하기 위한 상기 레이턴시에 부분적으로 기초하여 액티브 모드에 비해 전력 절감을 초래하는지를 결정하는 수단을 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 컴퓨터 시스템.
  25. 제 24 항에 있어서,
    상기 캐시에 대한 상기 작업 세트 크기를 사용하여, 상기 캐시가 상기 코어의 상기 저전력 모드를 퇴장하기 위한 전력 비용을 계산하는 수단을 더 포함하고, 상기 캐시에 대한 상기 저전력 모드가 전력 절감을 초래하는지를 결정하는 것은 또한 상기 캐시가 상기 저전력 모드를 퇴장하기 위한 전력 비용에 부분적으로 기초하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 컴퓨터 시스템.
  26. 제 24 항에 있어서,
    상기 캐시에 대한 상기 작업 세트 크기를 계산하는 수단은,
    복수의 샘플링 주기들 중 적어도 하나의 샘플링 주기 동안 상기 캐시에 의해 취출된 캐시 라인들의 평균 수를 결정하는 수단을 더 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 컴퓨터 시스템.
  27. 제 26 항에 있어서,
    상기 캐시에 대한 상기 작업 세트 크기를 계산하는 수단은,
    상기 복수의 샘플링 주기들 중 가장 최근의 샘플링 주기 동안 상기 캐시에 의해 취출된 캐시 라인들의 수를 결정하는 수단을 더 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 컴퓨터 시스템.
  28. 제 26 항에 있어서,
    상기 캐시에 대한 상기 작업 세트 크기를 계산하는 수단은,
    상기 복수의 샘플링 주기들 동안 상기 캐시에 의해 취출된 캐시 라인들의 평균 수를 결정하는 수단을 더 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 컴퓨터 시스템.
  29. 제 26 항에 있어서,
    상기 캐시에 대한 상기 작업 세트 크기를 사용하여, 상기 캐시가 상기 저전력 모드를 퇴장하기 위한 상기 레이턴시를 계산하는 수단은,
    복수의 샘플링 주기들 중 적어도 하나의 샘플링 주기 동안 취출된 캐시 라인들의 수를 상기 캐시가 각각의 캐시 라인을 취출하는데 필요한 시간으로 승산하는 수단을 더 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 컴퓨터 시스템.
  30. 제 26 항에 있어서,
    복수의 샘플링 주기들 중 적어도 하나의 샘플링 주기 동안 상기 캐시에 의해 취출된 캐시 라인들의 수를 결정하는 수단은,
    복수의 샘플링 주기들 중 적어도 하나의 샘플링 주기 동안 상기 캐시에 의해 취출된 캐시 라인들의 수를 카운팅하기 위해 상기 캐시에 커플링된 수단을 더 포함하는, 휴대용 컴퓨팅 디바이스 (PCD) 에서의 멀티코어 시스템-온-칩 (SoC) 에서 저전력 모드들의 개선된 구현을 위한 컴퓨터 시스템.
KR1020187003279A 2015-08-05 2016-07-11 휴대용 컴퓨팅 디바이스에서의 캐시 인지 저전력 모드 제어를 위한 시스템 및 방법 KR20180037954A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/819,384 2015-08-05
US14/819,384 US20170038813A1 (en) 2015-08-05 2015-08-05 System and method for cache aware low power mode control in a portable computing device
PCT/US2016/041703 WO2017023494A1 (en) 2015-08-05 2016-07-11 System and method for cache aware low power mode control in a portable computing device

Publications (1)

Publication Number Publication Date
KR20180037954A true KR20180037954A (ko) 2018-04-13

Family

ID=56511931

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187003279A KR20180037954A (ko) 2015-08-05 2016-07-11 휴대용 컴퓨팅 디바이스에서의 캐시 인지 저전력 모드 제어를 위한 시스템 및 방법

Country Status (8)

Country Link
US (1) US20170038813A1 (ko)
EP (1) EP3332306B1 (ko)
JP (1) JP2018532174A (ko)
KR (1) KR20180037954A (ko)
CN (1) CN107924221A (ko)
BR (1) BR112018002252A2 (ko)
TW (1) TW201716925A (ko)
WO (1) WO2017023494A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9959075B2 (en) 2015-08-05 2018-05-01 Qualcomm Incorporated System and method for flush power aware low power mode control in a portable computing device
CN107015624B (zh) * 2016-01-04 2022-03-15 马维尔亚洲私人有限公司 用于节能的方法和装置
US10324519B2 (en) * 2016-06-23 2019-06-18 Intel Corporation Controlling forced idle state operation in a processor
US20180188797A1 (en) * 2016-12-29 2018-07-05 Intel Corporation Link power management scheme based on link's prior history
US11023379B2 (en) 2019-02-13 2021-06-01 Google Llc Low-power cached ambient computing
US11455251B2 (en) * 2020-11-11 2022-09-27 Advanced Micro Devices, Inc. Enhanced durability for systems on chip (SOCs)
TWI777320B (zh) * 2020-12-04 2022-09-11 神雲科技股份有限公司 功耗校調方法與伺服器
WO2023205926A1 (en) * 2022-04-24 2023-11-02 Qualcomm Incorporated Performance-aware smart framework to improve cpu power efficiency in static display read mode

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7290093B2 (en) * 2003-01-07 2007-10-30 Intel Corporation Cache memory to support a processor's power mode of operation
US7171519B2 (en) * 2004-02-27 2007-01-30 International Business Machines Corporation System, method and program for assessing the activity level of a database management system
US7788449B2 (en) * 2006-09-20 2010-08-31 International Business Machines Corporation Cache configuration in a database system
US8495403B2 (en) * 2008-12-31 2013-07-23 Intel Corporation Platform and processor power management
US20120166731A1 (en) * 2010-12-22 2012-06-28 Christian Maciocco Computing platform power management with adaptive cache flush
US8775836B2 (en) * 2010-12-23 2014-07-08 Intel Corporation Method, apparatus and system to save processor state for efficient transition between processor power states
US9176563B2 (en) * 2012-05-14 2015-11-03 Broadcom Corporation Leakage variation aware power management for multicore processors
US9183144B2 (en) * 2012-12-14 2015-11-10 Intel Corporation Power gating a portion of a cache memory
US9354694B2 (en) * 2013-03-14 2016-05-31 Intel Corporation Controlling processor consumption using on-off keying having a maximum off time
US9665153B2 (en) * 2014-03-21 2017-05-30 Intel Corporation Selecting a low power state based on cache flush latency determination
US9460001B2 (en) * 2014-03-21 2016-10-04 Veritas Technologies Llc Systems and methods for identifying access rate boundaries of workloads

Also Published As

Publication number Publication date
WO2017023494A1 (en) 2017-02-09
EP3332306B1 (en) 2021-08-18
US20170038813A1 (en) 2017-02-09
TW201716925A (zh) 2017-05-16
EP3332306A1 (en) 2018-06-13
JP2018532174A (ja) 2018-11-01
CN107924221A (zh) 2018-04-17
BR112018002252A2 (pt) 2018-09-18

Similar Documents

Publication Publication Date Title
KR20180037954A (ko) 휴대용 컴퓨팅 디바이스에서의 캐시 인지 저전력 모드 제어를 위한 시스템 및 방법
US10705588B2 (en) Enabling a non-core domain to control memory bandwidth in a processor
US9959075B2 (en) System and method for flush power aware low power mode control in a portable computing device
US10571996B2 (en) System on a chip with fast wake from sleep
US9626295B2 (en) Systems and methods for scheduling tasks in a heterogeneous processor cluster architecture using cache demand monitoring
JP6266850B1 (ja) ポータブルコンピューティングデバイスにおけるビクティムキャッシュモードを改善するためのシステムおよび方法
US8656196B2 (en) Hardware automatic performance state transitions in system on processor sleep and wake events
KR101799253B1 (ko) 다중 클러스터 이종 프로세서 아키텍처에서 동적 캐시 확장을 제공하기 위한 시스템 및 방법
US20130046967A1 (en) Proactive Power Management Using a Power Management Unit
JP5915406B2 (ja) 携帯端末装置の制御方法、制御プログラム及び携帯端末装置
EP3345070B1 (en) Systems and methods for dynamically adjusting memory state transition timers
CN104380257A (zh) 在处理器核之间调度任务
WO2015183377A1 (en) System on a chip with always-on processor which reconfigures soc and supports memory-only communication mode
US20160070634A1 (en) System and method for system-on-a-chip subsystem trace extraction and analysis
WO2016114997A1 (en) System and method for adaptive implementation of victim cache mode in a portable computing device
US10175995B1 (en) Device hibernation control
US20130054986A1 (en) Method and apparatus for booting electronic device based on use context
EP3149594B1 (en) Method and apparatus for cache access mode selection
CN103543815A (zh) 信息处理设备和信息处理方法
WO2016085680A1 (en) System and method for adaptive thread control in a portable computing device (pcd)
US10268486B1 (en) Expedited resume process from hibernation
US20170192492A1 (en) Method and apparatus for saving power
US9152473B2 (en) Table driven multiple passive trip platform passive thermal management
CN115623557A (zh) 找网频率确定方法、找网频率确定装置、和电子设备