KR101324885B1 - 복수의 회로들에서의 성능 파라미터들 조정 - Google Patents

복수의 회로들에서의 성능 파라미터들 조정 Download PDF

Info

Publication number
KR101324885B1
KR101324885B1 KR1020120004296A KR20120004296A KR101324885B1 KR 101324885 B1 KR101324885 B1 KR 101324885B1 KR 1020120004296 A KR1020120004296 A KR 1020120004296A KR 20120004296 A KR20120004296 A KR 20120004296A KR 101324885 B1 KR101324885 B1 KR 101324885B1
Authority
KR
South Korea
Prior art keywords
performance
frequency
domain
clock
request
Prior art date
Application number
KR1020120004296A
Other languages
English (en)
Other versions
KR20120082836A (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 KR20120082836A publication Critical patent/KR20120082836A/ko
Application granted granted Critical
Publication of KR101324885B1 publication Critical patent/KR101324885B1/ko

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B67OPENING, CLOSING OR CLEANING BOTTLES, JARS OR SIMILAR CONTAINERS; LIQUID HANDLING
    • B67CCLEANING, FILLING WITH LIQUIDS OR SEMILIQUIDS, OR EMPTYING, OF BOTTLES, JARS, CANS, CASKS, BARRELS, OR SIMILAR CONTAINERS, NOT OTHERWISE PROVIDED FOR; FUNNELS
    • B67C11/00Funnels, e.g. for liquids
    • B67C11/02Funnels, e.g. for liquids without discharge valves
    • 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/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • 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
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Power Sources (AREA)

Abstract

복수의 도메인들에서의 성능 파라미터들을 조정하기 위한 시스템들 및 방법들이 설명된다. 실시예에서, 방법은 전자 회로의 상태를 변경하라는 요청을 수신하는 단계 - 상기 회로는 제1 도메인 및 제2 도메인을 포함함 - ; 상기 요청에 기초하여 상기 제1 도메인에 서브하는(serving) 제1 회로의 제1 파라미터가 제1 변경된 파라미터로 변경되게 하는 단계; 및 상기 요청에 기초하여 상기 제2 도메인에 서브하는 제2 회로의 제2 파라미터가 제2 변경된 파라미터로 변경되게 하는 단계를 포함한다. 일부 경우들에서, 파라미터는 클록 주파수를 포함할 수 있다. 다른 경우들에서, 파라미터는 전압을 포함할 수 있다. 일부 실시예들에서, 시스템은 로직 회로 및/또는 시스템 온 칩(SoC)으로서 구현될 수 있다. 이들 시스템들을 이용하기에 적절한 디바이스들은, 예를 들어, 데스크톱 및 랩톱 컴퓨터들, 태블릿들, 네트워크 어플라이언스들, 모바일 폰들, PDA들(personal digital assistants), 전자책 리더들, 텔레비전들, 및 게임 콘솔들을 포함한다.

Description

복수의 회로들에서의 성능 파라미터들 조정{COORDINATING PERFORMANCE PARAMETERS IN MULTIPLE CIRCUITS}
본 개시는 컴퓨터 시스템들의 분야에 관한 것이고, 더욱 구체적으로 복수의 회로들에서의 성능 파라미터들을 조정하기 위한 시스템들 및 방법들에 관한 것이다.
집적 회로들 또는 "칩"들에 구축되는 트랜지스터들의 수가 계속해서 증가함에 따라, 전력 관리의 중요성이 더욱 자명해지고 있다. 사실상, 전력 관리는 일반적으로 많은 전자 디바이스들의 설계에서 중요한 요건이다. 예를 들어, 휴대형 디바이스들의 경우에, 전력 관리 기법들은 배터리 수명 및 따라서 제품의 사용 가능성을 증가시킬 수 있다. 또한, 특정 디바이스가 배터리로 동작하지 않는 경우들에서도, 전력 소비를 관리하는 것은 많은 이득을 가질 수 있다. 예를 들어, 에너지 소비를 줄이는 것에 부가하여, 전력 관리는 주어진 디바이스에 의해 발생되는 열을 줄일 수 있고, 그것은 또한 그의 냉각 요건들을 개선한다.
집적 회로에서의 전력 관리 및 성능 트레이드오프들(tradeoffs)의 부분으로서, 집적 회로 상의 다양한 컴포넌트들의 성능 상태들은 변경될 수 있다. 예를 들어, 다양한 컴포넌트들에 의해 이용되는 클록들의 클록 주파수들은 변경될 수 있다. 다수의 컴포넌트들에 걸친 변경들을 관리하는 것은 올바르게 구현하기가 어려울 수 있다.
본 명세서는 전력 관리 메커니즘들을 구현하는 컴퓨팅 디바이스들을 포함하여, 예를 들어 그와 결합하여, 다양한 환경들에서 이용될 수 있는 시스템들 및 방법들을 개시한다. 일부 실시예들에서, 본원에 개시된 시스템들 및 방법들은 몇몇 하드웨어 컴포넌트들이 단일 회로 내에 집적될 수 있도록 시스템 온 칩(system-on-a-chip; SoC) 또는 ASIC(application-specific integrated circuit)에 구현될 수 있다. 이들 시스템들 및 방법들을 이용하는 데 적절한 전자 디바이스들의 예들은 데스크톱 컴퓨터들, 랩톱 컴퓨터들, 태블릿들, 네트워크 어플라이언스들(network appliances), 모바일 폰들, PDA들(personal digital assistants), 전자책 리더들, 텔레비전들, 비디오 게임 콘솔들 등을 포함하며, 이것으로 한정되지 않는다.
일부 실시예들에서, 방법은 회로, 컴포넌트, 또는 디바이스의 상태를 변경하라는 요청을 수신하는 단계를 포함할 수 있고, 여기서 회로는 2 이상의 성능 도메인들을 갖는다. 이들 2 이상의 성능 도메인들은 상이한 성능 레벨들에서 동작하도록 구성될 수 있는 회로, 컴포넌트, 또는 디바이스의 구역들을 포함할 수 있다. 다양한 성능 레벨들 또는 상태들 사이에서 스위칭하기 위한 능력은 전력 관리 메커니즘에 의해 제공될 수 있다. 예를 들어, 디바이스가 제1 상태에 있을 때, 제1 성능 도메인은 제1 클록 주파수 또는 전압으로 동작할 수 있고, 제2 성능 도메인은 제2 클록 주파수 또는 전압으로 동작한다. 그리고 디바이스가 제2 상태에 있을 때, 이들 성능 도메인들은 변경된 주파수들 또는 전압들로 동작할 수 있다. 성능 도메인들의 다른 파라미터들이 또한 변경될 수 있다.
스테이지 변경 요청의 수신시, 방법은 예를 들어 제1 성능 도메인에 서브하는 제1 클록의 제1 주파수를 제1 변경 주파수로 변경하는 단계, 및 제2 성능 도메인에 서브하는 제2 클록의 제2 주파수를 제2 변경 주파수로 변경하는 단계를 포함할 수 있다. 일부 실시예들에서, 제2 변경 주파수는 제1 변경 주파수와는 독립적일 수 있다. 다른 실시예들에서, 제2 변경 주파수는 제1 변경 주파수와는 상이하며, 제1 변경 주파수의 배수가 아닐 수 있다.
특정 실시예들에서, 스테이지 변경 요청은 단일 레지스터에 기입되는 값 또는 표시를 포함할 수 있고, 이것은 그 다음에 제1 주파수 및 제2 주파수를 제1 및 제2 변경 주파수들(또는 전압들)로 각각 스위칭하는 데 이용되는 구성 파라미터들을 검색(look-up) 또는 달리 도출하는 데 이용될 수 있다. 일 예에서, 방법은 표시에 의해 인덱싱되고 클록 신호들을 그들의 대응하는 성능 도메인들에 제공하는 특정 세트의 클록 발생기들에 의해 이용되는 구성 파라미터들을 포함하는 성능 상태표에 액세스할 수 있다. 다른 예에서, 성능 상태표는 전압들을 그들의 대응하는 성능 도메인들에 제공하는 특정 세트의 전압 공급기들에 의해 이용되는 구성 파라미터들을 포함할 수 있다. 성능 상태표는 다양한 다른 구성 파라미터들을 또한 포함할 수 있다.
일부 실시예들에서, 클록 주파수를 변경하는 단계는, 클록 발생기에 클록 입력을 제1 입력 또는 소스로부터 제2 입력 또는 소스로 재구성하도록 지시하는 단계를 수반할 수 있다. 다른 실시예들에서, 클록 주파수를 변경하는 단계는, 클록 발생기에 클록 분할기(clock divisor)를 재구성하도록 지시하는 단계를 수반할 수 있다. 또 다른 실시예들에서, 전압을 변경하는 단계는, 전력 공급 회로에 상이한 입력 또는 출력으로 스위칭하도록 지시하는 단계를 수반할 수 있다. 이들 실시예들 각각에서, 성능 상태표는 또한 클록 발생기 또는 전압 공급 회로가 그의 동작 모드를 변경하게 하는 하부(underlying) 명령어들(예를 들어, 선택된 소스, 분할기 값 등)을 표시할 수 있다.
따라서, 성능 상태표의 이용은, 일부 경우들에서, 소프트웨어가, 특정 회로 또는 성능 도메인으로 하여금, 소프트웨어가 특정 하부 변경들을 실시하는 데 요청되는 특정 구성 파라미터들을 제공 및/또는 관리할 필요 없이 원하는 성능 상태에 들어가게 할 수 있다. 다른 경우들에서, 성능 상태표는 디바이스의 주어진 상태에 대해 디바이스의 성능 도메인들 또는 회로들 각각을 적절한 또는 원하는 상태 내에 배치하기 위한 다양한 구성 파라미터들을 저장할 수 있다. 결과로서, 소프트웨어는 완전한 디바이스(또는 그의 서브세트)가 감소된 수의 커맨드로 주어진 상태에 즉시 들어갈 수 있게 할 수 있다.
일부 실시예들에서, 시스템 온 칩(SoC)은 프로세서 및 프로세서에 결합된 로직 회로를 포함한다. 로직 회로는 SoC를 주어진 상태에 두기 위한 요청에 응답하여 제1 주파수 및 제2 주파수를 도출하도록 구성되고, 제2 주파수는 제1 주파수와는 독립적이다. 로직 회로는 또한 SoC의 제1 도메인에 서브하는 제1 클록 회로가 제1 주파수에서 제1 클록을 제공하게 하고, SoC의 제2 도메인에 서브하는 제2 클록 회로가 제2 주파수에서 제2 클록을 제공하게 하도록 구성된다.
다른 실시예들에서, 로직 회로는 제1 성능 도메인 및 제2 성능 도메인을 갖는 디바이스의 상태를 변경하라는 요청을 수신하고, 제1 성능 도메인에 서브하는 제1 회로의 제1 파라미터가 제1 변경된 파라미터로 변경되게 하고, 제2 성능 도메인에 서브하는 제2 회로의 제2 파라미터가 제2 변경된 파라미터로 변경되게 하도록 구성되는 전력 관리 회로를 포함한다. 일부 경우들에서, 제2 변경된 파라미터는 제1 변경된 파라미터와는 독립적일 수 있다. 이들 파라미터들은 클록 주파수, 전압, 그의 결합, 및/또는 다른 파라미터들일 수 있다. 로직 회로는 또한 전력 관리 회로에 결합되고, 전력 관리 회로의 하나 이상의 동작을 가능하게 하도록 구성되는 하나 이상의 프로그램 가능한 레지스터들을 포함할 수 있다.
다음의 상세한 설명은 이제 간략히 설명되는 첨부 도면들을 참조로 한다.
도 1은 특정 실시예들에 따른 시스템의 블록도이다.
도 2는 특정 실시예들에 따른 성능 상태표의 구현의 도면이다.
도 3은 특정 실시예들에 따른 시스템 파라미터들을 조정하기 위한 방법을 표현하는 흐름도이다.
도 4는 특정 실시예들에 따른 소프트웨어 환경의 도면이다.
도 5는 특정 실시예들에 따른 컴퓨터 시스템의 블록도이다.
본 발명은 다양한 변경들 및 대안적인 형태들을 허용하며, 그의 특정 실시예들은 도면들에서 예시적으로 도시되며 본원에서 상세하게 설명될 것이다. 그러나, 도면들 및 그에 대한 상세한 설명은 본 발명을 개시된 특정 형태로 제한하고자 하는 것이 아니며, 그와 달리, 첨부된 청구항들에 의해 정의되는 바와 같이 본 발명의 사상 및 범위 내에 있는 모든 변경들, 등가들 및 대안들을 커버하고자 의도한다는 것을 이해해야 한다. 본원에 이용된 제목들은 오직 조직의 목적을 위한 것이고, 설명의 범위를 제한하는 데 이용되는 것을 의미하지 않는다. 본 출원 전체에서 이용되는 바와 같이, "~할 수 있다(may)"라는 단어는 의무적 의미(즉, 해야 한다는 의미)보다는, 허용적 의미(즉, 잠재성을 갖는다는 의미)에서 이용된다. 유사하게, "포함하다", "포함하는", 및 "포함한다"라는 단어들은, 포함하지만 그것으로 한정되지 않음을 의미한다.
다양한 유닛들, 회로들, 또는 다른 컴포넌트들은 태스크 또는 태스크들을 수행하도록 "구성되는" 것으로서 설명될 수 있다. 이러한 문맥에서, "~하도록 구성되는"은 일반적으로 동작 동안 태스크 또는 태스크들을 수행하는 "회로를 갖는"을 의미하는 구조의 넓은 설명이다. 이와 같이, 유닛/회로/컴포넌트는 유닛/회로/컴포넌트가 현재 온(on)이 아니더라도 태스크를 수행하도록 구성될 수 있다. 일반적으로, "~하도록 구성되는"에 대응하는 구조를 형성하는 회로는 하드웨어 회로들을 포함할 수 있다. 유사하게, 다양한 유닛/회로/컴포넌트가 설명의 편의를 위해 태스크 또는 태스크들을 수행하는 것으로서 설명될 수 있다. 이러한 설명은 "~하도록 구성되는"이라는 구절을 포함하는 것으로서 해석되어야 한다. 하나 이상의 태스크를 수행하도록 구성되는 유닛/회로/컴포넌트의 설명은 그 유닛/회로/컴포넌트에 대한 35 U.S.C.§112,¶6 해석을 적용하지 않도록 명백히 의도된다.
일부 실시예들에서, 전력 관리 유닛 또는 회로가 전자 디바이스 내에 제공될 수 있다. 전자 디바이스는 예를 들어, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿, 네트워크 어플라이언스(예를 들어, 게이트웨이, 라우터, 액세스 포인트 등), 모바일 폰, PDA(personal digital assistant), 전자책 리더, 텔레비전, 비디오 게임 콘솔, 또는 임의의 다른 적절한 전자 디바이스일 수 있다. 이와 같이, 디바이스는 또한 예를 들어, 프로세서들, 주변장치들, 컨트롤러들 등과 같은 다른 회로들 또는 서브시스템들을 포함할 수 있다. 또한, 2개 이상의 이들 회로들(또는 회로들의 그룹들)은 가변 성능 레벨들에서 동작할 수 있는 상이한 성능 도메인들을 구성할 수 있다. 따라서, 일부 실시예들에서, 전력 관리 유닛은 복수의 성능 도메인들에서 시스템 파라미터들을 조정하기 위한 방법들을 수행할 수 있다. 구체적으로, 전력 관리 유닛은 복수의 엔트리들을 갖는 성능 상태표를 포함할 수 있다. 각각의 엔트리는 2 이상의 성능 도메인에 대한 구성 파라미터들을 특정할 수 있다. 레지스터 또는 레지스터들은 표의 엔트리들 중 하나를 가리키도록 프로그램될 수 있고, 전력 관리자는 성능 도메인들이 선택된 엔트리에 특정된 성능 상태들에서 동작하게 할 수 있다.
도 1을 보면, 특정 실시예들에 따른 시스템의 블록도가 도시된다. 예시된 바와 같이, 시스템은 전력 공급기(110)에 결합된 시스템 온 칩(system-on-a-chip; SoC) 또는 ASIC(application-specific integrated circuit)을 형성하는 집적 회로(IC)(100)를 포함한다. 직접 회로(100)는 성능 도메인들(120A-F)의 세트를 포함한다. 각각의 성능 도메인(120A-F)은 적어도 하나의 서브시스템, 회로, 또는 컴포넌트를 포함하고, 주어진 성능 도메인은 하나보다 많은 컴포넌트를 포함할 수 있다. 예를 들어, 성능 도메인(120A)은 2개의 컴포넌트 - 프로세서(160A) 및 다른 컴포넌트(170)(예를 들어, 상관성 컨트롤러(coherency controller) 등) - 를 포함하고, 성능 도메인(120D)은 2 이상의 네트워킹 또는 다른 주변장치들(160D)을 포함할 수 있다. 도시된 실시예에서, 성능 도메인(120B)은 그래픽 서브시스템(160B)을 포함하고, 성능 도메인(120C)은 오디오 서브시스템(160C)을 포함하고, 성능 도메인(120E)은 메모리 제어 회로(160E)를 포함하고, 성능 도메인(120F)은 옵션의 제2 프로세서(160F)를 포함한다. 집적 회로(100)는 또한 전력 관리 유닛(power management unit; PMU)(140)을 포함하고, 이것은 차례로 하나 이상의 성능 구성 레지스터(150)를 포함한다. PMU(140)는 클록 및/또는 전압 제어 유닛(제어 유닛)(130)에 결합되고, 이것은 차례로 전력 공급기(110)에 결합된다.
집적 회로(100) 내의 컴포넌트들은 임의의 적절한 버스 및/또는 인터페이스 메커니즘을 이용하여 서로 결합될 수 있다. PMU(140) 및 제어 유닛(130)은 또한 그들의 각각의 인터페이스들에 결합되는 것에 부가하여 성능 도메인들(120A-F)에 결합될 수 있다. 예를 들어, 제어 유닛(130)은 성능 도메인들(120A-F) 중 하나 이상에 클록 신호들을 공급할 수 있다. 부가적으로 또는 대안적으로, 제어 유닛(130)은 하나 이상의 공급 전압들이 성능 도메인들(120A-F) 중 하나 이상에 공급되는 것을 요청하기 위해 전력 공급기(110)와 상호작용할 수 있다. 집적 회로(100)가 휴대형 디바이스 내에 상주하는 실시예들에서, 전력 공급기(110)는 배터리 등일 수 있다.
PMU(140)는 다양한 성능 도메인들(120A-F)에 대해 성능 상태들 사이의 이전들(transition)을 제어하도록 구성될 수 있다. 예를 들어, PMU(140)는 하나 이상의 성능 도메인들(120A-F)을 상이한 성능 상태들로 자동으로 이전하도록 구성될 수 있다. PMU(140)의 성능 상태표의 각각의 엔트리는 다양한 성능 도메인들에 대해 성능 상태들의 결합으로 프로그램될 수 있고, 소프트웨어는 엔트리들 중 하나를 선택하기 위해 레지스터 또는 레지스터들을 기입할 수 있다. PMU(140)는 선택된 엔트리에 표시된 성능 상태들로의 성능 도메인들의 이전을 조정하도록 구성될 수 있다.
일부 실시예들에서, 성능 도메인은 성능 구성 목적들을 위한 유닛으로서 PMU(140)에 의해 제어되는 컴포넌트들의 세트일 수 있다. 즉, PMU(140)는 각각의 성능 도메인에 대해 대응하는 성능 상태를 구축하도록 구성될 수 있고, 각각의 성능 도메인에서 성능 상태들 사이의 이전들을 제어하도록 구성될 수 있다. 이와 같이, 성능 도메인을 형성하는 컴포넌트들은 하나의 성능 상태로부터 다른 성능 상태로 함께 이전할 수 있다. 다른 실시예들에서, 상이한 성능 도메인들에서의 컴포넌트들은 적어도 하드웨어의 관점에서 서로 독립적일 수 있고, 독립적으로 결정되는 성능 상태들을 가질 수 있다. 일부 성능 도메인들은 더 높은 레벨에서(예를 들어, 소프트웨어에서) 논리적으로 링크될 수 있다. 예를 들어, 도메인들(120C 및 120D)은 사용자가 사운드를 포함하는 비디오를 보고 있는(따라서 비디오 이미지들을 디스플레이하기 위해 그래픽 서브시스템(160B) 및 수반하는 사운드를 재생하기 위해 오디오 서브시스템(160C)을 동시에 이용하는) 경우 그들의 성능 상태들에 대하여 논리적으로 링크될 수 있다.
주어진 성능 상태는 대응하는 성능 도메인에서의 컴포넌트들을 위해 구성 파라미터들의 임의의 결합을 포함할 수 있다. 구성 파라미터는 그 컴포넌트의 성능에 영향을 주는 컴포넌트에 대한 임의의 선택가능한 설정일 수 있다. 예를 들어, 컴포넌트 또는 성능 도메인에 제공되는 클록 신호의 동작 주파수는 그의 성능에 영향을 줄 수 있고, 따라서 구성 파라미터로서 고려되는데, 그 이유는 예를 들어 더 낮은 동작 주파수가 더 낮은 성능(및 또한 더 작은 전력 소비)을 야기할 수 있기 때문이다. 다른 예로서, 성능 도메인에 제공되는 공급 전압은 그의 성능에 영향을 줄 수 있고 또한 구성 파라미터일 수 있다.
일부 구성 파라미터들은 컴포넌트 특정일 수 있다. 이러한 구성 파라미터들의 예들은 다양한 캐시들의 캐시 사이즈들, 인터페이스의 데이터 폭 또는 다른 데이터 전송 레이트 파라미터, 병렬로 동작하는 유닛들 중에서 활성인 대칭적 유닛들의 수(예를 들어, 프로세서의 실행 유닛들, 픽셀 파이프라인들 또는 그래픽 유닛에서의 다른 이미지 프로세싱 파이프라인들 등), 단위 시간당 처리되는 명령어들, 연산들, 통신들, 및/또는 메모리 요청들의 수, 컬러 팔레트(color palette)의 그래픽 해상도 또는 사이즈, 오디오 해상도 및 샘플링 레이트들, 메모리 대역폭, 프로세서의 슬립/웨이크(sleep/wake) 상태 등을 포함하며, 이것으로 한정되지 않는다. 또한, 컴포넌트들 또는 그의 부분들이 전력 게이트(power-gated) 및/또는 클록 게이트(clock-gated)되는 경우, 전력 및/또는 클록 인에이블들(enables)은 구성 파라미터들일 수 있다. 일부 실시예들에서, 구성 파라미터는 하나 이상의 성능 도메인들이 어느 성능 상태에 있는지의 정보를 메모리 컨트롤러(예를 들어, 160E)에 제공하는 하나 이상의 레지스터를 포함할 수 있다. 요약하면, 변경될 수 있고 컴포넌트 또는 성능 도메인의 성능 또는 동작에 영향을 줄 수 있는 임의의 파라미터가 다양한 실시예들에서 구성 파라미터로서 고려될 수 있다.
성능 도메인에서 성능 상태를 변경하는 것은 성능 도메인의 전력 소비에 영향을 줄 수 있다. 예를 들어, 동작 주파수 및/또는 공급 전압을 감소시키는 것은 통상적으로 전력 소비에 직접적인 영향을 준다. 캐시 사이즈를 감소시키는 것은 캐시의 일부분이 액세스될 필요가 없을 수 있기 때문에 전력 소비를 줄일 수 있고, 이용되지 않는 부분이 턴 오프(turn off)될 수 있는 경우 훨씬 더 많은 감소가 실현될 수 있다. 또한, 캐시 사이즈를 감소시키는 것은 캐시 히트 레이트들(cache hit rates)을 줄일 수 있고, 이것은 소비자에 대한 메모리 레이턴시(memory latency)를 증가시킬 수 있다. 증가된 메모리 레이턴시는 소비자의 액티비티(activity)를 감소시킬 수 있어 전력 소비를 감소시킬 수 있다. 인터페이스들에 대한 데이터 전송 폭들/레이트들을 감소시키는 것은 감소된 스위칭을 통해 전력 소비를 감소시킬 수 있다. 부가적으로, 데이터가 소비자에게 공급되는 레이트를 감소시키는 것은 소비자의 액티비티를 감소시킬 수 있고, 이것은 소비자에서의 전력 소비를 감소시킬 수 있다. 대칭적 유닛들에서의 병렬 액티비티를 감소시키는 것은 감소된 액티비티를 통해 전력 소비를 감소시킬 수 있다. 그래픽/오디오 해상도 및 컬러 팔레트를 감소시키는 것은 이미지 또는 사운드 단위당 전송되는 데이터의 양을 감소시킬 수 있다. 또한, 메모리 대역폭을 감소시키는 것은 단위 시간당 메모리에의 액세스에 있어서 전력 소비를 감소시킬 수 있고, 소비자의 액티비티를 감소시킬 수 있다.
일부 실시예들에서, PMU(140)는 로직 회로 등일 수 있다. 이와 같이, PMU(140)는 바이폴라 접합 트랜지스터들(bipolar junction transistors; BJTs), 전계 효과 트랜지스터들(field-effect transistors; FETs), 다른 타입의 트랜지스터들, 논리 게이트들, 동작 증폭기들(op amps), 플립플롭들, 캐패시터들, 다이오드들, 저항들 등과 같은 표준 전자 컴포넌트들을 포함할 수 있다. 구성 레지스터들(150)은 특정 기능들을 구현하기 위해 및/또는 특정 동작 모드들에 들어가기 위해 PMU(140)에 의해 이용되는 설정들을 저장하도록 프로그램될 수 있다. 이들 및 다른 컴포넌트들은 다양한 방식으로 배열될 수 있고 본원에 설명된 다양한 동작들을 수행하도록 구성될 수 있다.
특히, PMU(140)는 성능 상태 이전들이 성능 도메인들(120A-F)에서 발생하게 하도록 구성되는 회로를 포함할 수 있다. 일 실시예에서, 소프트웨어는 (예를 들어, 성능 상태표 엔트리를 선택하는 표시의 형태로) PMU(140)에 원하는 성능 상태 변경들을 명백하게 통신할 수 있다. PMU(140)는 선택된 엔트리에 액세스할 수 있고, 선택된 엔트리에 특정된 원하는 성능 상태들을 구축하도록 구성될 수 있다.
전압 및/또는 클록 주파수 변경들을 행함으로써 성능 상태들 또는 레벨들에 도달하는 경우, PMU(140)는 제어 유닛(130)에 새로운 전압 및/또는 주파수 설정들을 통신할 수 있다. 제어 유닛(130)은 이들 새로운 설정들을 구현하고, 요청된 주파수들에서 클록들을 발생하고 및/또는 전력 공급기(110)로부터 원하는 공급 전압들을 요청할 수 있다. 제어 유닛(130)은 안전하게 전이들을 행하기 위해 필요한 경우 변경들을 명령(order)할 수 있다. 예를 들어, 클록 주파수와 공급 전압이 둘다 임의의 특정 성능 도메인에서 증가되고 있는 경우, 먼저 전압을 증가시키고 나서 클록 주파수를 증가시키는 것이 더 안전할 수 있는데, 그 이유는 회로가 현재의 (더 낮은) 공급 전압에서 더욱 천천히 동작하고 있는 경우 증가된 클록 주파수가 부정확한 동작을 일으킬 수 있기 때문이다. 일부 실시예들에서, 공급 전압 변경에서 경과하는 시간의 양은 클록 주파수를 변경하기 위한 시간보다 실질적으로 클 수 있다. 클록 주파수 및 공급 전압이 감소되고 있는 경우, 클록 주파수가 먼저 감소될 수 있다(또는 주파수 및 전압이 병렬로 감소될 수 있는데, 그 이유는 이 경우에 더 낮은 공급 전압 전에 더 낮은 클록 주파수에 도달될 수 있기 때문이다).
제어 유닛(130)은 원하는 공급 전압들을 요청하기 위해 전력 공급기(110)와 통신하기 위한 회로를 포함할 수 있고, 그것은 또한 동적 클록 발생 회로를 포함할 수 있다. 예를 들어, 제어 유닛(130)은 집적 회로(100)의 다양한 컴포넌트들 또는 성능 도메인들에 대해 클록 신호들을 동적으로 발생하기 위해 하나 이상의 위상 동기 루프(phase locked loop; PLL), 다중화기, 클록 디바이더/멀티플라이어(clock divider/multiplier) 등을 포함할 수 있다. 하나의 배열에서, 하나 이상의 오실레이터는 하나 이상의 PLL을 구동하고, 이것은 그 다음에 집적 회로(100)의 주요 부분들에 대한 베이스 클록들을 발생한다. PLL 출력들은 다수의 동적 클록 발생기들을 구동하고, 이것은 칩의 다양한 영역들 또는 성능 도메인들에 대한 개별 클록들을 발생하는 역할을 한다. 각각의 클록 발생기 또는 회로는 다중화기 및/또는 다중화기에 결합된 디바이더를 포함할 수 있다. 동작에서, 다중화기는 발생기의 입력에서 특정 클록 신호의 선택을 허용할 수 있고, 디바이더는 원하는 주파수를 얻기 위해 선택된 신호의 주파수를 더 감소(또는 증가)시킬 수 있다. 일부 실시예들에서, 특정 발생기들은 다중화기만을 포함할 수 있고, 다른 것들은 디바이더만을 포함할 수 있다. 또한, 각각의 발생기는 독립적으로 인에이블 및 디스에이블될 수 있고, 결함 없는(glitch-free) 방식으로 또는 "가동중에(on-the-fly)" 동작할 수 있다. 일부 경우들에서, 결함 없는 동작을 용이하게 하기 위해, 주어진 발생기는 선택이 행해지기 전에 소스들이 가동(또는 활성)으로 및 그로부터 스위칭되는 것을 요청할 수 있다.
여전히 도 1을 참조하면, 프로세서들(160A 및/또는 160F)은 임의의 명령어 세트 아키텍처를 구현할 수 있고, 그 명령어 세트 아키텍처에 정의된 명령어들을 실행하도록 구성될 수 있다. 임의의 마이크로 아키텍처 구현이 이용될 수 있다(예를 들어, 순서대로(in order), 순서에서 벗어나서(out of order), 추론적, 비-추론적, 스칼라, 수퍼스칼라(superscalar), 파이프라인형, 수퍼 파이프라인형(super-pipelined) 등). 마이크로 코딩 기법들이 일부 실시예들에서 전술한 것들 중 임의의 것과 결합하여 이용될 수 있다.
그래픽 유닛 또는 서브시스템(160B)은 디스플레이 디바이스 상의 이미지들의 디스플레이에 수반되는 회로를 포함할 수 있다. 생성된 이미지들은 정적 이미지들일 수 있거나, 비디오의 부분일 수 있다. 그래픽 유닛(160B)은 렌더링 하드웨어, (디스플레이 디바이스의) 리프레시 하드웨어, 비디오 인코더들 및/또는 디코더들, 비디오 압축 및 압축해제(decompression) 유닛들 등을 포함할 수 있다. 오디오 유닛 또는 서브시스템(160C)은 시스템에서 사운드들의 재생 또는 녹음에 수반되는 회로를 포함할 수 있다. 오디오 유닛(160C)은 예를 들어 오디오 인코더들 및/또는 디코더들, 디지털 신호 프로세서들 등을 포함할 수 있다.
네트워킹 주변장치들 및 다른 주변장치들(160D)은 다양한 회로를 포함할 수 있다. 예를 들어, 네트워킹 주변장치들은 물리층 회로뿐만 아니라, 지원되는 네트워크를 위한 미디어 액세스 컨트롤러(media access controller; MAC) 유닛을 포함할 수 있다. 다른 주변장치들은 임의의 다른 원하는 주변장치들, 및/또는 PCI(Peripheral Component Interconnect), PCIe(PCI express), 파이어와이어, USB(Universal Serial Bus) 등과 같은 오프칩 주변장치 인터페이스들을 제어하도록 구성되는 주변장치 인터페이스 컨트롤러들을 포함할 수 있다.
메모리 컨트롤러(160E)는 DRAM(dynamic random access memory devices), SDRAM(synchronous DRAM), 더블 데이터 레이트(DDR, DDR2, DDR3, DDR4, 등) SDRAM, 저전력 DDR(LPDDR2, 등) SDRAM, RDRAM(RAMBUS DRAM) 등과 같은 메모리 디바이스들에 액세스하도록 구성될 수 있다. 일 실시예에서, 메모리 컨트롤러(160E)는 하나 이상의 메모리를 포함하는 하나 이상의 메모리 모듈(예를 들어, SIMM(single inline memory module), DIMM(dual inline memory module) 등)에 인터페이스하도록 구성될 수 있다. 따라서, 메모리 컨트롤러(160E)는 집적 회로(100)의 다른 컴포넌트들로부터 메모리 요청들을 큐잉(queue)하기 위해 메모리 인터페이스들에서 통신하고, 및/또는 메모리 판독 및 기입 동작들을 수행하기 위해 다른 컴포넌트들과 통신하도록 구성될 수 있다.
도 1에 도시된 집적 회로(100)의 실시예는 다수의 성능 도메인들을 포함하지만, 더 많거나 더 적은 성능 도메인들이 지원될 수 있다. 성능 도메인들 및 그의 도메인들에 포함되는 컴포넌트들의 임의의 결합이 다양한 실시예들에서 구현될 수 있다.
집적 회로(100)의 다른 실시예들은 다른 컴포넌트들을 갖거나 갖지 않고 예시된 컴포넌트들의 임의의 서브세트, 다른 컴포넌트들을 갖는 수퍼세트들 등을 포함하여, 컴포넌트들의 다른 결합들을 포함할 수 있다. 부가적으로, 예시된 실시예는 집적 회로(100)에 포함되는 컴포넌트들(160A-F 및 170)을 모두 예시하지만, 다른 실시예들은 2 이상의 집적 회로로서 컴포넌트들을 구현할 수 있다. 부가적으로 또는 대안적으로, 전력 공급기(110)의 적어도 부분들은 직접 회로(100) 내에 포함될 수 있다. 사실상, 임의의 적절한 레벨의 통합 또는 별개의 컴포넌트들이 이용될 수 있다.
이전에 언급한 바와 같이, PMU(140)는 다양한 성능 도메인들(120A-F)에 대한 성능 상태들 사이의 이전들을 제어하도록 구성될 수 있다. 일부 실시예들에서, 주어진 성능 상태로부터 다른 것으로 스위칭하라는 요청은 하나 이상의 레지스터에 기입되는 값 또는 표시를 포함하고, 이것은 그 다음에 원하는 성능 상태에 들어가기 위한 구성 파라미터들을 검색(look-up) 또는 달리 도출하기 위해 PMU(140)에 의해 이용될 수 있다. 일 예에서, 방법은 레지스터(들)에 기입된 값에 의해 인덱싱되고 그들의 대응하는 성능 도메인들에 클록 신호들을 제공하는 특정 세트의 클록 발생기들에 의해 이용되는 구성 파라미터들을 포함하는 성능 상태표에 액세스할 수 있다. 다른 예에서, 성능 상태표는 그들의 대응하는 성능 도메인들에 전압들을 제공하는 특정 세트의 전압 공급기들에 의해 이용되는 구성 파라미터들을 포함한다. 성능 상태표는 위에서 논의한 바와 같이 다양한 다른 구성 파라미터들을 더 포함할 수 있다.
비한정적인 예시로서, 클록 주파수들과 전압들이 둘다 성능 도메인들(예를 들어, 도메인들 1 내지 m) 각각에 대해 설정될 수 있는 구성 파라미터들인 상황을 고려한다. n 상태들이 성능 상태표에서 이용가능하다면(즉, 표에 n개의 엔트리가 존재하면), 가능한 성능 상태표가 아래와 같이 구성될 수 있다.
Figure 112012003429061-pat00001
본 실시예에서, 예를 들어, 소프트웨어가 집적 회로(100)에서의 각각의 도메인에 대해 주파수들(f) 및/또는 전압들(V)을 설정하기를 희망하는 경우, 소프트웨어는 성능 상태표의 대응하는 엔트리(1 내지 n)에 대한 포인터를 PMU(140)의 구성 레지스터(150)에 기입할 수 있다. PMU(140)는 선택된 엔트리를 판독하고 선택된 클록 주파수들 및/또는 전압들을 제어 유닛(130)에 통신할 수 있다. 그 다음에 제어 유닛(130)은 소프트웨어에 의한 추가 개입 및/또는 관리 없이 각각의 도메인의 다양한 주파수들 및/또는 전압들에 대한 변경들을 조정(coordinate)할 수 있다. 결과로서, 일부 경우들에서, 집적 회로(100)의 상이한 부분들은 단일 커맨드 또는 레지스터 기입으로 그들의 다양한 상이한 상태들 사이에서 교대할 수 있다. 다시 말해, 사용자 및/또는 소프트웨어의 관점에서, 상태들 사이의 변경들은 원자적으로(atomically)(실제 하부 하드웨어 변경들이 병렬로 행해지는 상황들에서도) 그리고 고레벨의 추상(abstraction)으로(예를 들어, 요청하는 소프트웨어는 각각의 클록 발생기를 개별적으로 프로그램할 필요가 없고 및/또는 각각의 발생기가 어떻게 구성되는지를 이해할 필요가 없다) 수행될 수 있다.
또한, 위의 표 1에 예시된 것과 같은 성능 상태표를 이용함으로써, 각각의 성능 도메인은 독립적으로 변경되는 그의 파라미터들을 가질 수 있다. 예를 들어, 클록 주파수들의 경우에, 임의의 주어진 상태에 대한 각각의 주파수 도메인에서의 주파수들은 서로 상이할 수 있고, 서로의 배수가 아닐 수 있다. 이전에 언급한 바와 같이, 클록 주파수 및 전압 이외의 구성 파라미터들이 다른 실시예들에서 표를 채울 수 있다. 또한, 클록 주파수들만이 표에 포함되는 실시예가 고려된다.
일부 실시예들에서, 성능 상태표의 각각의 엔트리가 실제 구성 파라미터일 수 있다 - 예를 들어, f2 ,3은 클록 주파수일 수 있고, V2 ,3은 전압 크기일 수 있고 등등이다. 그러나, 다른 실시예들에서, 성능 상태표에서의 각각의 엔트리는 회로(예를 들어, 제어 유닛(130))가 원하는 구성을 제공하기 위해 이용할 수 있는 하나 이상의 하부 설정들을 포함할 수 있다. 예로서, 성능 도메인(2)이 다중화기 및 디바이더를 포함하는 클록 발생기에 의해 서비스되면, f2 , 3는 성능 도메인(2)에 원하는 주파수를 제공하기 위해 클록 발생기에 의해 이용가능한 소스 선택 및 디바이더 설정들을 포함할 수 있다.
이제 도 2를 보면, 성능 상태표의 구현의 도면이 특정 실시예들에 따라 도시된다. 성능 상태표는 예를 들어 PMU(140)의 구성 레지스터들(150) 내에 프로그램될 수 있고, 그것은 하드웨어로 표 1(위에 도시됨)을 표현하는 많은 가능한 방식들 중 하나이다. 예시된 바와 같이, 구성 레지스터들(150)은 각각의 프로그램 가능한 상태에 대한 다양한 성능 도메인들(1 내지 m)의 구성 파라미터들(1 내지 n)을 포함하는 복수의 레지스터들(230-250)뿐만 아니라, 하나 이상의 성능 상태 레지스터들(210) 및 하나 이상의 상태 레지스터들(220)을 포함한다. 별개의 컴포넌트들로서 도시되지만, 다른 실시예들에서는 2개 이상의 레지스터들(210-250)이 결합될 수 있다.
성능 상태 레지스터들(210)은 레지스터들(230-250) 중 어느 것(및 따라서 어느 성능 상태)가 현재 활성인지를 제어할 수 있다. 예시의 목적들을 위해, 소프트웨어가 집적 회로(100)의 동작을 상태(2)로 설정하기를 희망하는 시나리오를 고려한다. 소프트웨어는 상태(2)에 대응하는 값을 성능 상태 레지스터(210)에 기입할 수 있고, 그 다음에 PMU(140)는 레지스터(240)로부터 파라미터들(P1 ,2,...,Pm ,2)을 선택할 수 있다. 파라미터들(P1 ,2 내지 Pm ,2) 각각은 각각의 성능 도메인(1 내지 m)의 구성 파라미터에 대응할 수 있다. 이전에 언급한 바와 같이, 파라미터들(P1 ,2,...,Pm ,2)은 클록 주파수들, 전압 크기들 등일 수 있다. 부가적으로 또는 대안적으로, 임의의 주어진 파라미터는 각각의 성능 도메인에 클록 주파수, 전압 등을 제공하는 회로에 지시하기에 적절한 설정들을 포함할 수 있다. 임의의 이벤트에서, PMU(140)는 식별된 파라미터들을 제어 유닛(130)에 제공할 수 있고, 그 다음에 하드웨어로 변경들을 구현할 수 있다(예를 들어, 다중화기를 스위칭하는 등등).
대안적인 실시예에서, 레지스터들(230-250) 각각은 (다른 성능 도메인들을 제외하고) 단일 성능 도메인의 각각의 상태에 대한 파라미터들을 포함할 수 있다. 예를 들어, 레지스터(230) 내의 P1 ,1은 성능 도메인(1)의 상태(1)에 대한 구성 파라미터를 표현할 수 있고, P1 , 2은 그 동일한 성능 도메인 - 즉, 성능 도메인(1) - 의 상태(2)에 대한 구성 파라미터일 수 있고 등등이다. 유사하게, 레지스터(240)는 성능 도메인(2)의 각각의 상태에 대한 모든 구성 파라미터들을 포함할 수 있고, 레지스터(250)는 성능 도메인(n)의 각각의 상태에 대한 모든 구성 파라미터들을 포함할 수 있다. 이 실시예에서, 성능 상태 레지스터(210)는 요청되는 성능 상태에 대응하는 각각의 성능 도메인에 대해 레지스터들(230-250) 내의 각각의 엔트리를 식별할 수 있고, 그들의 구성 파라미터들을 제어 유닛(130)에 제공할 수 있다.
구성 레지스터들(150)은 또한 상태 레지스터(들)(220)를 포함할 수 있다. 예를 들어, 클록 파라미터들을 구성할 때, 제어 유닛(130) 내의 각각의 동적 클록 발생기는 그의 구성의 변경 동안 "펜딩(pending)" 값을 도시하는 레지스터를 포함할 수 있고, 이 동일한 값은 상태 레지스터(220)에 복사될 수 있다. 일부 실시예들에서, 이것은 PMU(140) 또는 소프트웨어가 단일 레지스터, 즉, 상태 레지스터(220)에서 폴링(polling)하는 것에 의해 효과를 내기 위해 성능 상태 레지스터(210)에서의 변경으로 인한 모든 변경들을 기다릴 수 있게 한다. 대안적인 실시예에서, 성능 상태 레지스터(210)는 클리어하기 위해 상태 레지스터(220)의 모든 펜딩 비트들을 기다리지 않고 변경될 수 있다. 제어 유닛(130)은 최종 클록 구성이 기입된 최종 성능 상태 레지스터(210) 값과 매칭하도록 보장하지만, 동적 클록 발생기들은 일부 시간 동안 중간 구성들에 있을 수 있다.
도 3을 참조하면, 파라미터들을 조정하기 위한 방법을 표현하는 흐름도가 특정 실시예들에 따라 도시된다. 일부 실시예들에서, 방법(300)은 도 1의 PMU(140)에 의해 수행될 수 있다. 310에서, PMU(140)는 집적 회로(100)의 하나 이상의 성능 도메인들(120A-F)에서의 상태를 변경하라는 요청을 수신한다. 요청은 PMU(140) 내의 구성 레지스터들(150)의 성능 상태 레지스터(210)의 값에 기초하여 결정될 수 있다. 예를 들어 제어 유닛(130)의 대응하는 클록 발생기가 다중화기를 포함하는 클록 주파수 변경의 경우에, 320에서 PMU(140)는 원래 및 새로 선택된 클록 입력들이 둘다 가동 또는 활성인지를 결정할 수 있다. 그렇다면, 340에서 PMU(140)는 상태 성능표로부터 새로 요청된 상태에 대응하는 파라미터들을 식별할 수 있다. PMU(140)는 그 다음에 350에서 제어 회로(130)에 그들의 파라미터들을 제공할 수 있고, 이것은 차례로 새로 요청된 상태에 대응하는 하드웨어 변경들을 구현할 수 있다. 그렇지 않으면, 330에서 PMU(140)는 제어 유닛(130)이 새로운 상태 선택을 실시하기 전에 두 입력들을 활성화하는 것을 요청할 수 있다. 대안적인 실시예들에서, 다른 적절한 상태들이 320에서 상태 변경을 실시하기 전에 체크될 수 있다. 예를 들어, 전압 변경의 경우에, PMU(140)는 320에서 배터리가 최소 변경량을 갖는지, 휴대용 디바이스가 "플러그 인(plug in)"되어 있는지 등등을 결정할 수 있다.
이제 도 4를 참조하면, 소프트웨어 환경의 도면이 특정 실시예들에 따라 도시된다. 일부 실시예들에서, PMU(140)의 동작은 사용자로부터 및/또는 다른 소프트웨어(410-450)를 통해 커맨드들을 수신하는 PMU 드라이버(140)를 통해 실시될 수 있다. 특히, 소프트웨어 환경(400)은 하나 이상의 애플리케이션 프로그램들, 오퍼레이팅 시스템 등("소프트웨어")(410)을 포함할 수 있다. 소프트웨어(410)는 시스템의 컴포넌트들을 이용할 때 다양한 드라이버들과 상호작용할 수 있다. 예를 들어, 그래픽 드라이버(420)는 그래픽 서브시스템(160B)을 제어하는 데 이용될 수 있고, 오디오 드라이버(430)는 오디오 서브시스템(160C)을 제어하는 데 이용될 수 있고, 네트워크 드라이버(440)는 네트워크 주변장치(160D)를 위해 이용될 수 있고, 다른 주변장치 드라이버들(450)은 다른 주변장치들을 위해 이용될 수 있다. 또한 PMU 드라이버(460)는 PMU(140)와 상호작용하는 데 이용될 수 있다. 따라서, 예를 들어 소프트웨어(410)가 그래픽 서브시스템(160B)과 통신하는 경우, 그것은 그래픽 드라이버(420) 등을 호출한다. 이와 같이, 드라이버들(420-460) 각각은 그의 대응하는 컴포넌트들과 통신할 수 있다.
부가적으로, 드라이버들(420-450) 각각은 PMU 드라이버(460)와 통신할 수 있다. PMU 드라이버(460)는 디바이스 액티비티 표 등에서 드라이버들(420-450)에 의해 구동되는 컴포넌트들에서의 액티비티를 모니터할 수 있다. 모니터된 액티비티들은 대응하는 컴포넌트들을 인에이블 및 디스에이블하는 것을 포함할 수 있다. 모니터된 액티비티들은 특정 유닛의 다른 성능 특성들에 대한 변경들을 더 포함할 수 있다. 일부 실시예들에서, 모니터되는 액티비티들에 기초하여, PMU 드라이버(460)는 다양한 성능 상태들에 이용될 각각의 성능 도메인에 대한 성능 상태를 선택할 수 있다. 부가적으로, 다른 정보가 선택된 성능 상태들에 또한 영향을 줄 수 있는 디바이스 액티비티 표(예를 들어, 프로세서가 슬립 상태에 있을 때 다양한 컴포넌트들의 성능 필요들)로 코딩될 수 있다.
다른 실시예들에서, 소프트웨어(410)는 또한 PMU 드라이버(460)와 직접 통신할 수 있다. 예를 들어, 특정 컴포넌트들의 슬립 및 웨이크 이전들을 위해 수행되는 자동 성능 상태 이전들에 부가하여, 소프트웨어(410)는 또한 전체 시스템의 액티비티에 기초하여 성능 상태들을 직접 변경할 수 있다. 즉, 예를 들어 프로세서가 슬립 상태로 가고 있지 않더라도, 하나 이상의 성능 도메인들의 성능 상태에서의 변경들은 바람직할 수 있다. 따라서, 소프트웨어(410)는 이러한 변경들을 직접 요청할 수 있다. 일부 실시예들에서, 컴퓨터 액세스 가능한 저장 매체는 본원에 설명된 시스템들 및 방법들의 실시예들을 포함할 수 있다.
다음으로 도 5를 보면, 시스템의 블록도가 도시된다. 예시된 바와 같이, 시스템(500)은 집적 회로(520)의 적어도 하나의 인스턴스(instance)를 포함한다. 집적 회로(520)는 도 1의 집적 회로(100) 내의 요소들의 하나 이상의 인스턴스를 포함할 수 있다. 일부 실시예들에서, 집적 회로(520)는 메모리 컨트롤러들, 비디오 및/또는 오디오 프로세싱 회로들, 온칩 주변장치들 및/또는 오프칩 주변장치들에 결합하기 위한 주변장치 인터페이스들 등과 같은 다양한 부가적인 회로를 포함하는 ASIC(application specific integrated circuit) 또는 시스템 온 칩(system-on-chip; SoC)일 수 있다. 집적 회로(520)는 하나 이상의 주변장치(540) 및 외부 메모리(530)에 결합된다. 메모리(530) 및/또는 주변장치들(540)에의 하나 이상의 공급 전압들뿐만 아니라 직접 회로(520)에의 공급 전압들을 공급하는 전력 공급기(510)(도 1에서 110으로 도시됨)가 또한 제공된다. 일부 실시예들에서, 집적 회로(520)의 하나보다 많은 인스턴스가 포함될 수 있다(그리고 하나보다 많은 외부 메모리(530)가 또한 포함될 수 있다).
주변장치들(540)은 시스템(500)의 타입에 의존하여 임의의 원하는 회로를 포함할 수 있다. 예를 들어, 실시예에서, 시스템(500)은 모바일 디바이스(예를 들어, PDA(personal digital assistant), 스마트 폰 등)일 수 있고, 주변장치들(540)은 와이파이, 블루투스, 셀룰러, 글로벌 포지셔닝 시스템(global positioning system) 등과 같은 다양한 타입의 무선 통신을 위한 디바이스들을 포함할 수 있다. 주변장치들(540)은 또한 RAM 저장소, 고체 상태 저장소, 또는 디스크 저장소를 포함하는 부가적인 저장소를 포함할 수 있다. 주변장치들(540)은 터치 디스플레이 스크린들 또는 멀티터치 디스플레이 스크린들을 포함하는 디스플레이 스크린, 키보드 또는 다른 입력 디바이스들, 마이크로폰들, 스피커들 등과 같은 사용자 인터페이스 디바이스들을 포함할 수 있다. 다른 실시예들에서, 시스템(500)은 임의의 타입의 컴퓨팅 시스템(예를 들어, 데스크톱 및 랩톱 컴퓨터들, 태블릿들, 네트워크 어플라이언스들, 모바일 폰들, PDA들(personal digital assistants), 전자책 리더들, 텔레비전들, 및 게임 콘솔들)일 수 있다.
외부 메모리(530)는 임의의 타입의 메모리를 포함할 수 있다. 예를 들어, 외부 메모리(530)는 SRAM, 불휘발성 RAM("플래시" 메모리와 같은 NVRAM), SDRAM(synchronous DRAM)과 같은 DRAM(dynamic RAM), 더블 데이터 레이트(DDR, DDR2, DDR3, 등) SDRAM, RAMBUS DRAM 등 및/또는 임의의 타입의 유형(tangible) 메모리를 포함할 수 있다. 외부 메모리(530)는 SIMM(single inline memory module), DIMM(dual inline memory module) 등과 같은, 메모리 디바이스들이 부착되는, 하나 이상의 메모리 모듈을 포함할 수 있다.
일단 위의 개시가 완전히 인식되면 이 기술분야의 통상의 기술자에게 다수의 변형들 및 변경들이 명백해질 것이다. 다음의 청구항들은 모든 이러한 변형들 및 변경들을 포함하도록 해석되는 것이 의도된다.

Claims (17)

  1. 회로의 상태를 변경하라는 요청을 수신하는 단계 - 상기 회로는 제1 성능 도메인(performance domain) 및 제2 성능 도메인을 포함하고, 상기 요청은 제1 변경 주파수 및 제2 변경 주파수를 기술하는 데이터를 저장하는 제1 성능 상태표 엔트리를 식별하는 성능 상태 표시를 포함하고, 상기 제1 성능 상태표 엔트리는 상기 제1 성능 도메인 및 상기 제2 성능 도메인에 대한 하나 이상의 부가적인 구성 파라미터들을 더 저장하고, 상기 하나 이상의 부가적인 구성 파라미터들은 상기 제1 성능 도메인 및 상기 제2 성능 도메인의 공급 전압들에 대한 전압 크기들을 포함하고, 상기 하나 이상의 부가적인 구성 파라미터들은 프로그램 가능한 컴포넌트 구성 값들을 더 포함함 - ;
    상기 요청에 기초하여 상기 제1 성능 도메인을 서빙하는(serving) 제1 클록의 제1 주파수를 상기 제1 변경 주파수로 변경하는 단계;
    상기 요청에 기초하여 상기 제2 성능 도메인을 서빙하는 제2 클록의 제2 주파수를 상기 제2 변경 주파수로 변경하는 단계 - 상기 제2 변경 주파수는 상기 제1 변경 주파수와는 독립적임 - ; 및
    상기 프로그램 가능한 컴포넌트 구성 값들을 포함하는 상기 부가적인 구성 파라미터들에 응답하여 상기 제1 성능 도메인 및 상기 제2 성능 도메인의 부가적인 구성을 변경하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 요청을 수신하는 단계는, 성능 상태 표시가 레지스터에 저장되었다고 판정하는 단계를 포함하는 방법.
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 제1항에 있어서,
    상기 제1 클록의 상기 제1 주파수를 변경하는 단계는, 클록 입력을 제1 입력으로부터 제2 입력으로 재구성하도록 클록 발생기에 명령하는 단계를 포함하는 방법.
  9. 제8항에 있어서,
    상기 클록 발생기에 상기 클록 입력을 재구성하도록 명령하기 전에 상기 제1 입력 및 제2 입력이 활성화되어 있는 것으로 판정하는 단계를 더 포함하는 방법.
  10. 제1항에 있어서,
    상기 제1 클록의 상기 제1 주파수를 변경하는 단계는, 클록 발생기에 클록 분할기(clock divisor)를 재구성하도록 명령하는 단계를 포함하는 방법.
  11. 제1항에 있어서,
    상기 제1 주파수 및 제2 주파수를 변경하기 전에, 상기 회로의 상태를 변경하라는 후속 요청을 수신하는 단계; 및
    적어도 상기 제1 주파수 및 제2 주파수가 변경될 때까지 상기 후속 요청을 거부하는 단계
    를 더 포함하는 방법.
  12. 시스템 온 칩(system-on-chip; SoC)으로서,
    프로세서; 및
    상기 프로세서에 결합된 로직 회로
    를 포함하고,
    상기 로직 회로는,
    상기 SoC에서의 주어진 상태를 구축하라는 요청에 응답하여 제1 주파수 및 제2 주파수를 도출하고 - 상기 제2 주파수는 상기 제1 주파수와는 독립적이고, 상기 요청은 상기 제1 주파수 및 상기 제2 주파수를 기술하는 데이터를 저장하는 제1 성능 상태표 엔트리를 식별하는 성능 상태 표시를 포함하고, 상기 제1 성능 상태표 엔트리는 상기 SoC의 제1 성능 도메인 및 상기 SoC의 제2 성능 도메인에 대한 하나 이상의 부가적인 구성 파라미터들을 더 저장하고, 상기 하나 이상의 부가적인 구성 파라미터들은 상기 제1 성능 도메인 및 상기 제2 성능 도메인의 공급 전압들에 대한 전압 크기들을 포함하고, 상기 하나 이상의 부가적인 구성 파라미터들은 프로그램 가능한 컴포넌트 구성 값들을 더 포함함 - ;
    제어 회로로 하여금 상기 제1 주파수를 갖는 제1 클록을 상기 SoC의 상기 제1 성능 도메인에 제공하게 하고;
    상기 제어 회로로 하여금 상기 제2 주파수를 갖는 제2 클록을 상기 SoC의 상기 제2 성능 도메인에 제공하게 하고;
    상기 제1 성능 도메인 및 상기 제2 성능 도메인의 부가적인 구성이 상기 프로그램 가능한 컴포넌트 구성 값들을 포함하는 상기 부가적인 구성 파라미터들에 의해 변경되게 하도록
    구성되는, 시스템 온 칩.
  13. 삭제
  14. 삭제
  15. 제12항에 있어서,
    상기 제어 회로는 상기 주어진 상태에 관한 정보를 상기 프로세서에 결합된 메모리 컨트롤러에 제공하도록 더 구성되는 시스템 온 칩.
  16. 삭제
  17. 삭제
KR1020120004296A 2011-01-14 2012-01-13 복수의 회로들에서의 성능 파라미터들 조정 KR101324885B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/006,967 US8468373B2 (en) 2011-01-14 2011-01-14 Modifying performance parameters in multiple circuits according to a performance state table upon receiving a request to change a performance state
US13/006,967 2011-01-14

Publications (2)

Publication Number Publication Date
KR20120082836A KR20120082836A (ko) 2012-07-24
KR101324885B1 true KR101324885B1 (ko) 2013-11-01

Family

ID=45655136

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120004296A KR101324885B1 (ko) 2011-01-14 2012-01-13 복수의 회로들에서의 성능 파라미터들 조정

Country Status (7)

Country Link
US (1) US8468373B2 (ko)
EP (1) EP2477090A3 (ko)
JP (1) JP2012150815A (ko)
KR (1) KR101324885B1 (ko)
CN (1) CN102692991B (ko)
TW (1) TWI463302B (ko)
WO (1) WO2012096835A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8271812B2 (en) 2010-04-07 2012-09-18 Apple Inc. Hardware automatic performance state transitions in system on processor sleep and wake events
US8924752B1 (en) 2011-04-20 2014-12-30 Apple Inc. Power management for a graphics processing unit or other circuit
EP3037910B1 (en) * 2011-11-21 2020-04-01 Intel Corporation Reconfigurable graphics processor for performance improvement
US9390461B1 (en) * 2012-05-08 2016-07-12 Apple Inc. Graphics hardware mode controls
US8786332B1 (en) 2013-01-17 2014-07-22 Apple Inc. Reset extender for divided clock domains
US9110592B2 (en) * 2013-02-04 2015-08-18 Microsoft Technology Licensing, Llc Dynamic allocation of heterogenous memory in a computing system
JP6092649B2 (ja) * 2013-02-15 2017-03-08 キヤノン株式会社 演算装置、アレイ型演算装置およびその制御方法、情報処理システム
US10242652B2 (en) * 2013-06-13 2019-03-26 Intel Corporation Reconfigurable graphics processor for performance improvement
US9946823B2 (en) * 2013-08-12 2018-04-17 Mentor Graphics Corporation Dynamic control of design clock generation in emulation
GB201314938D0 (en) 2013-08-21 2013-10-02 Advanced Risc Mach Ltd Communication between voltage domains
US9471132B2 (en) * 2013-09-27 2016-10-18 Intel Corporation Techniques for putting platform subsystems into a lower power state in parallel
CN103593036B (zh) * 2013-11-05 2016-05-11 三星半导体(中国)研究开发有限公司 动态调整电压/时钟频率的片上系统
US10523207B2 (en) 2014-08-15 2019-12-31 Altera Corporation Programmable circuit having multiple sectors
US10372184B2 (en) 2016-06-28 2019-08-06 Renesas Electronics America Inc. Method and apparatus for implementing power modes in microcontrollers using power profiles
JP2018106591A (ja) * 2016-12-28 2018-07-05 ルネサスエレクトロニクス株式会社 半導体装置、動作制御方法、及びプログラム
US10423209B2 (en) 2017-02-13 2019-09-24 Apple Inc. Systems and methods for coherent power management
US10642781B2 (en) * 2017-04-07 2020-05-05 Qualcomm Incorporated Boot time determination of calibration parameters for a component coupled to a system-on-chip
CN115048214A (zh) * 2018-06-06 2022-09-13 北京嘉楠捷思信息技术有限公司 计算设备的芯片调频方法、装置、算力板、计算设备及存储介质
US10778235B2 (en) * 2018-10-28 2020-09-15 Nuvoton Technology Corporation Intermittent tuning of an oscillator
US11514551B2 (en) 2020-09-25 2022-11-29 Intel Corporation Configuration profiles for graphics processing unit

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4344132A (en) * 1979-12-14 1982-08-10 International Business Machines Corporation Serial storage interface apparatus for coupling a serial storage mechanism to a data processor input/output bus
US20050024105A1 (en) * 2003-07-29 2005-02-03 Lattice Semiconductor Corporation Clock generator with skew control
US20070156370A1 (en) * 2006-01-03 2007-07-05 Advanced Micro Devices, Inc. System and method for operating components of an integrated circuit at independent frequencies and/or voltages
US7475320B2 (en) * 2003-08-19 2009-01-06 International Business Machines Corporation Frequency modification techniques that adjust an operating frequency to compensate for aging electronic components

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU3313795A (en) 1994-10-14 1996-04-26 Compaq Computer Corporation Circuit for placing a cache memory into low power mode in response to special bus cycles
EP0855718A1 (en) 1997-01-28 1998-07-29 Hewlett-Packard Company Memory low power mode control
US6247082B1 (en) * 1998-11-03 2001-06-12 3Com Corporation Method and circuit for providing handshaking to transact information across multiple clock domains
US6535798B1 (en) 1998-12-03 2003-03-18 Intel Corporation Thermal management in a system
US6510525B1 (en) 1999-04-26 2003-01-21 Mediaq, Inc. Method and apparatus to power up an integrated device from a low power state
US6823516B1 (en) 1999-08-10 2004-11-23 Intel Corporation System and method for dynamically adjusting to CPU performance changes
JP2001238190A (ja) 2000-02-25 2001-08-31 Canon Inc 画像処理装置及びその制御処理方法
US6665802B1 (en) 2000-02-29 2003-12-16 Infineon Technologies North America Corp. Power management and control for a microcontroller
JP2002366351A (ja) 2001-06-06 2002-12-20 Nec Corp スーパースカラ・プロセッサ
US20030061383A1 (en) 2001-09-25 2003-03-27 Zilka Anthony M. Predicting processor inactivity for a controlled transition of power states
JP4050027B2 (ja) 2001-09-28 2008-02-20 株式会社日立製作所 情報処理装置及び情報処理装置の制御方法
JP4360938B2 (ja) 2003-03-18 2009-11-11 パナソニック株式会社 プロセッサ及びその駆動方法並びに電子情報処理機器
US7369815B2 (en) 2003-09-19 2008-05-06 Qualcomm Incorporated Power collapse for a wireless terminal
JP4549652B2 (ja) 2003-10-27 2010-09-22 パナソニック株式会社 プロセッサシステム
US7319345B2 (en) * 2004-05-18 2008-01-15 Rambus Inc. Wide-range multi-phase clock generator
US7337335B2 (en) 2004-12-21 2008-02-26 Packet Digital Method and apparatus for on-demand power management
JP4082706B2 (ja) * 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
JP2006318380A (ja) 2005-05-16 2006-11-24 Handotai Rikougaku Kenkyu Center:Kk 回路システム
US7412353B2 (en) * 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
US7689838B2 (en) 2005-12-22 2010-03-30 Intel Corporation Method and apparatus for providing for detecting processor state transitions
US7590473B2 (en) 2006-02-16 2009-09-15 Intel Corporation Thermal management using an on-die thermal sensor
US7624291B2 (en) 2006-03-31 2009-11-24 Intel Corporation Power optimized multi-mode voltage regulator
US7949887B2 (en) * 2006-11-01 2011-05-24 Intel Corporation Independent power control of processing cores
US7917784B2 (en) 2007-01-07 2011-03-29 Apple Inc. Methods and systems for power management in a data processing system
US7737752B2 (en) * 2007-05-17 2010-06-15 Globalfoundries Inc Techniques for integrated circuit clock management
US8645740B2 (en) 2007-06-08 2014-02-04 Apple Inc. Methods and systems to dynamically manage performance states in a data processing system
US7711864B2 (en) 2007-08-31 2010-05-04 Apple Inc. Methods and systems to dynamically manage performance states in a data processing system
JP4800289B2 (ja) * 2007-11-30 2011-10-26 富士通セミコンダクター株式会社 電源制御装置及びその電源制御装置を有するシステムlsi
US20090204837A1 (en) 2008-02-11 2009-08-13 Udaykumar Raval Power control system and method
US20090204835A1 (en) 2008-02-11 2009-08-13 Nvidia Corporation Use methods for power optimization using an integrated circuit having power domains and partitions
US8219993B2 (en) * 2008-02-27 2012-07-10 Oracle America, Inc. Frequency scaling of processing unit based on aggregate thread CPI metric
JP2010033255A (ja) * 2008-07-28 2010-02-12 Seiko Epson Corp 信号同期化方法及び信号同期化回路
US8020017B2 (en) 2008-08-15 2011-09-13 Freescale Semiconductor, Inc. Management of power domains in an integrated circuit
TWI401558B (zh) * 2008-12-22 2013-07-11 Tatung Co 頻率調整方法及使用此方法的電子裝置、電腦程式產品與電腦可讀取儲存媒體
US20100325451A1 (en) * 2009-06-22 2010-12-23 Chung-Hsing Chang Power-saving trigger-type control device for dynamically and instantly varying frequency and method thereof
GB2472050B (en) 2009-07-22 2013-06-19 Wolfson Microelectronics Plc Power management apparatus and methods
US8352770B2 (en) 2009-09-25 2013-01-08 Intel Corporation Method, system and apparatus for low-power storage of processor context information

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4344132A (en) * 1979-12-14 1982-08-10 International Business Machines Corporation Serial storage interface apparatus for coupling a serial storage mechanism to a data processor input/output bus
US4344132B1 (ko) * 1979-12-14 1984-03-27
US20050024105A1 (en) * 2003-07-29 2005-02-03 Lattice Semiconductor Corporation Clock generator with skew control
US7475320B2 (en) * 2003-08-19 2009-01-06 International Business Machines Corporation Frequency modification techniques that adjust an operating frequency to compensate for aging electronic components
US20070156370A1 (en) * 2006-01-03 2007-07-05 Advanced Micro Devices, Inc. System and method for operating components of an integrated circuit at independent frequencies and/or voltages

Also Published As

Publication number Publication date
EP2477090A3 (en) 2013-12-11
US20120185703A1 (en) 2012-07-19
CN102692991A (zh) 2012-09-26
WO2012096835A1 (en) 2012-07-19
US8468373B2 (en) 2013-06-18
JP2012150815A (ja) 2012-08-09
TW201234169A (en) 2012-08-16
CN102692991B (zh) 2015-02-04
KR20120082836A (ko) 2012-07-24
TWI463302B (zh) 2014-12-01
EP2477090A2 (en) 2012-07-18

Similar Documents

Publication Publication Date Title
KR101324885B1 (ko) 복수의 회로들에서의 성능 파라미터들 조정
US8959369B2 (en) Hardware automatic performance state transitions in system on processor sleep and wake events
US8924758B2 (en) Method for SOC performance and power optimization
US8769332B2 (en) Regional clock gating and dithering
KR101748747B1 (ko) 프로세서의 구성가능한 피크 성능 제한들의 제어
US11922172B2 (en) Configurable reduced memory startup
US10410688B2 (en) Managing power state in one power domain based on power states in another power domain
US20200285406A1 (en) Filtering memory calibration
AU2018295010B2 (en) System and method for dynamic buffer sizing in a computing device

Legal Events

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

Payment date: 20160929

Year of fee payment: 4