KR20210050489A - 우선순위 순서화를 이용한 컴포넌트들의 스로틀링 - Google Patents

우선순위 순서화를 이용한 컴포넌트들의 스로틀링 Download PDF

Info

Publication number
KR20210050489A
KR20210050489A KR1020207034863A KR20207034863A KR20210050489A KR 20210050489 A KR20210050489 A KR 20210050489A KR 1020207034863 A KR1020207034863 A KR 1020207034863A KR 20207034863 A KR20207034863 A KR 20207034863A KR 20210050489 A KR20210050489 A KR 20210050489A
Authority
KR
South Korea
Prior art keywords
throttling
components
component
priorities
logic
Prior art date
Application number
KR1020207034863A
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 인텔 코포레이션
Priority to KR1020247002237A priority Critical patent/KR20240012618A/ko
Publication of KR20210050489A publication Critical patent/KR20210050489A/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
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/28Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
    • 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
    • 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/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3212Monitoring battery levels, e.g. power saving mode being initiated when battery voltage goes below a certain level
    • 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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

복수의 컴포넌트를 포함하는 장치가 제공되며, 개별 컴포넌트는 복수의 스로틀링 우선순위 중 대응하는 스로틀링 우선순위를 갖는다. 이 장치는 복수의 컴포넌트 중 하나 이상을 선택적으로 스로틀링하기 위한 로직을 더 포함한다. 예에서, 복수의 컴포넌트 중 하나 이상이 스로틀링될 순서는 복수의 스로틀링 우선순위에 기반할 수 있다.

Description

우선순위 순서화를 이용한 컴포넌트들의 스로틀링
우선권 주장
본 출원은 "THROTTLING OF COMPONENTS USING PRIORITY ORDERING"란 명칭으로 2018년 9월 27일자로 출원된 미국 특허 출원 제16/144,919호의 우선권을 주장하며, 이는 그 전체가 참조로 포함된다.
현대의 컴퓨팅 디바이스들은 더 강력해지고 있고 또한 세대에 걸쳐 축소되고 있다. 따라서, 디바이스들은 크기가 축소되면서 점점 더 많은 컴포넌트들을 통합하고 있다. 다양한 컴포넌트들에 대한 이용가능한 전력 및 열 예산(budget)이 또한 축소되고 있다. 전력 전달 및 열 능력들 내에 머무르기 위해, 종종 시간 동적 전압 및 주파수 스케일링(DVFS)이 이용될 수 있으며, 여기서 전압 및/또는 주파수는 전력 및/또는 열 예산을 충족시키도록 스케일링된다. 일반적으로, 컴포넌트를 스로틀링(throttling)하는 것은 컴포넌트의 주파수 및/또는 전압을 감소시키는 것을 포함한다. 현대의 컴퓨팅 디바이스들은 종종, 예를 들어 플랫폼 전력 및 열 예산들 내에 머무르기 위해 스로틀링을 지원한다.
본 명세서에 설명되는 자료는 첨부 도면들에서 제한으로서가 아니라 예로서 도시된다. 도시의 단순성 및 명료성을 위해, 도면들에 도시되는 요소들이 반드시 축척에 맞게 도시된 것은 아니다. 예를 들어, 일부 요소들의 치수들은 명료성을 위해 다른 요소들에 비해 과장될 수 있다. 게다가, 적절한 것으로 생각되는 경우, 대응하는 또는 유사한 요소들을 가리키기 위해 도면들 간에 참조 라벨들이 반복되어 있다.
도 1은 일부 실시예들에 따른, 컴포넌트들과 연관된 스로틀링 우선순위들에 기반하여 컴포넌트들의 스로틀링을 구현하는 컴퓨팅 디바이스를 개략적으로 도시한다.
도 2는 일부 실시예들에 따른, 도 1의 컴퓨팅 디바이스의 컴포넌트들과 각각 연관된 스로틀링 우선순위들을 포함하는 레지스터를 도시한다.
도 3은 일부 실시예들에 따른, 도 2의 레지스터의 스로틀링 우선순위들의 예시적인 값들을 도시한다.
도 4a는 일부 실시예들에 따른, 스로틀링 우선순위들의 동적 생성을 도시한다.
도 4b는 일부 실시예들에 따른, 우선순위 할당 로직 및 스로틀링 로직을 구현하는 전력 관리 유닛(PMU)을 포함하는 예시적인 시스템을 도시한다.
도 5는 일부 실시예들에 따른, 컴퓨팅 디바이스가 전력 헤드룸 파라미터를 결정하는 전력 관리 제어기를 포함하는, 도 1의 컴퓨팅 디바이스의 추가 상세들을 개략적으로 도시한다.
도 6은 일부 실시예들에 따른, 컴퓨팅 디바이스의 컴포넌트들에 대한 스로틀링 우선순위들 및 스로틀링 스칼라들을 묘사하는 표를 도시한다.
도 7은 일부 실시예들에 따른, 스로틀링 우선순위들에 기반하여, 컴퓨팅 디바이스의 컴포넌트들을 선택적으로 스로틀링하기 위한, (예를 들어, 의사코드들의 형태의) 알고리즘을 도시한다.
도 8a는 일부 실시예들에 따른, 대응하는 스로틀링 우선순위들의 순서에 기반하여 컴퓨팅 디바이스의 다양한 컴포넌트들을 스로틀링할 순서 또는 시퀀스를 선택하기 위한 방법을 묘사하는 흐름도를 도시한다.
도 8b는 일부 실시예들에 따른, 제약 헤드룸 파라미터를 추적하기 위한 방법을 묘사하는 흐름도를 도시한다.
도 8c는 일부 실시예들에 따른, 스로틀링 우선순위들에 기반하여 하나 이상의 컴포넌트를 스로틀링 및/또는 언스로틀링(un-throttling)하기 위한 방법을 묘사하는 흐름도를 도시한다.
도 9는 일부 실시예들에 따른, 컴퓨터 시스템, 컴퓨팅 디바이스 또는 SoC(System-on-Chip)를 도시하며, 여기서, 컴퓨팅 디바이스의 다양한 컴포넌트들을 스로틀링할 순서 또는 시퀀스는 대응하는 스로틀링 우선순위들의 순서에 기반하여 선택될 수 있다.
현대의 마이크로프로세서들에서의 경향은 점점 더 많은 플랫폼 컴포넌트들 및 지적 재산(IP) 블록들을 SoC(System on a Chip)에 통합하는 것이다. 예를 들어, 개별 IP 블록들(예컨대, 본 명세서의 이 개시내용에서 나중에 논의됨)은 대응하는 전압 및/또는 주파수 도메인에 하우징될 수 있다. 또한, 현대의 클라이언트 및 디바이스 폼팩터들은 세대에 걸쳐 축소되고 있다. 그 결과, SoC에 대한 이용가능한 전력 및 열 예산도 또한 축소되고 있다. 플랫폼의 전력 전달 및 열 능력들 내에 머무르기 위해, 다양한 IP 블록들은 동적 전압 및 주파수 스케일링(DVFS)을 지원할 수 있다. 예를 들어, IP 블록의 전압 및/또는 주파수는 동적으로 스케일링될 수 있다.
동적 전압 및 주파수 스케일링 프로세스의 일부로서, 컴포넌트는 예를 들어 전력 예산, 열 예산 등을 충족시키기 위해 스로틀링될 수 있다(예컨대, 이는 컴포넌트의 전압 및/또는 주파수를 감소시키는 것을 수반한다). 현대의 SoC들은 플랫폼 전력 및 열 예산들 내에 머무르기 위해 컴퓨팅 도메인들(예컨대, 본 명세서에서 나중에 더 상세히 논의되는 바와 같이, 처리 코어들, 통합 그래픽 프로세서 코어, 하드웨어 가속기 등과 같이 컴퓨팅 프로세스와 연관되는 도메인들)을 스로틀링하는 것을 지원한다. 그러나, 종래의 SoC들은 SoC 내에 통합되는 비-컴퓨팅 IP 블록들(그 예들은 나중에 본 명세서에서 논의됨)과 같은 다양한 IP 블록들로 이 스로틀링 메커니즘을 확장하는 것을 지원하지 않는다. 또한, 종래의 SoC들은 예를 들어 플랫폼 전력 및 열 한계들 내에 머무르기 위해 비-컴퓨팅 IP들이 스로틀링될 순서를 우선순위화하는 메커니즘을 제공하지 않는다.
컴퓨팅 디바이스는 복수의 전압 및/또는 주파수 도메인들을 포함한다. 개별 도메인들에 대한 입력 전압 및/또는 주파수가 제어될 수 있다. 예를 들어, 도메인을 스로틀링하는 것은 도메인에 대한 입력 전압 및/또는 주파수를 감소시키는 것을 포함할 수 있다. 스로틀링은 디바이스가 예산(예를 들어, 전력 예산, 열 예산, 전류 예산 등)을 준수할 수 있도록 적용될 수 있다.
일부 실시예들에서, 도메인들(또는 도메인들 내의 컴포넌트들)에는 대응하는 스로틀링 우선순위들이 할당된다. 예를 들어, 제1 도메인의 컴포넌트들에는 제1 우선순위가 할당되고, 제2 도메인의 컴포넌트들에는 제2 우선순위가 할당되고, 다른 것들에 대해서도 그러하다. 도메인들이 스로틀링되는 순서는 우선순위들에 기반할 수 있다. 예를 들어, 도메인이 스로틀링될 때, 가장 높은 우선순위를 갖는 도메인이 첫 번째로 스로틀링될 수 있고, 두 번째로 가장 높은 우선순위를 갖는 도메인이 뒤따를 수 있고, 다른 것들에 대해서도 그런 식이다.
따라서, 도메인들은 스로틀링 우선순위들에 기반하여 내림차순으로 순서화되며, 도메인들은 내림차순으로 스로틀링된다. 언스로틀링은 역순, 예컨대 우선순위의 오름차순으로 행해진다.
일부 실시예들에서, 도메인들을 언제 스로틀링할지를 결정하기 위해, 제약 헤드룸 파라미터가 결정될 수 있고, 여기서 파라미터는 다양한 도메인들에 이용가능한 제약 헤드룸을 나타낸다. 제약 헤드룸은 도메인들에 이용가능한 조합된 전력 예산과 도메인들에 의해 소비되는 전력의 합 사이의 차이(또는 도메인들에 이용가능한 조합된 전류 예산과 도메인들에 의해 소비되는 전류의 합 사이의 차이 등)일 수 있다. 파라미터가 임계값보다 더 낮게 되는 것에 응답하여 도메인이 스로틀링될 수 있고, 파라미터가 임계값보다 더 높게 되는 것에 응답하여 도메인이 언스로틀링될 수 있다. 스로틀링 또는 언스로틀링을 위한 도메인들은 스로틀링 우선순위들에 기반하여 선택된다.
따라서, 스로틀링 우선순위들에 기반하여 도메인들을 스로틀링 및/또는 언스로틀링하는 것은 도메인들이 스로틀링되고/되거나 언스로틀링될 체계적 순서를 보장한다. 이는, 예를 들어, 더 중대한 도메인들을 스로틀링하기 전에, 덜 중대하거나 덜 중요한 도메인들이 먼저 스로틀링되게 한다. 다양한 실시예들 및 도면들로부터 다른 기술적 효과들이 명백해질 것이다.
첨부된 도면들을 참조하여 하나 이상의 실시예가 설명된다. 특정 구성들 및 배열들이 상세히 도시되고 논의되지만, 이는 단지 예시의 목적으로 행해진 것이라는 점이 이해되어야 한다. 관련 기술분야의 통상의 기술자라면 본 설명의 사상 및 범위를 벗어나지 않고 다른 구성들 및 배열들이 가능하다는 점을 인식할 것이다. 본 명세서에 설명된 기술들 및/또는 배열들이 본 명세서에 상세히 설명된 것 이외의 다른 다양한 시스템들 및 애플리케이션들에 이용될 수 있음은 관련 기술분야의 통상의 기술자에게 명백할 것이다.
본 명세서의 일부를 형성하고, 예시적인 실시예들을 도시하는 첨부 도면들에 대한 이하의 상세한 설명이 참조된다. 게다가, 다른 실시예들이 이용될 수 있고 청구된 주제의 범위를 벗어남이 없이 구조적 및/또는 논리적 변경들이 이루어질 수 있다는 것이 이해되어야 한다. 또한, 위, 아래, 상부, 하부 등과 같은 방향들 및 참조들이 도면들에서 특징들의 용이한 설명을 위해 단지 사용될 수 있음에도 유의해야 한다. 따라서, 다음의 상세한 설명은 제한적인 의미로 취해서는 안되며, 청구된 주제의 범위는 오로지 첨부된 청구항들 및 이들의 균등물들에 의해서만 정의된다.
이하의 설명에서는, 많은 상세들이 제시된다. 그러나, 본 발명이 이들 특정 상세들 없이도 실시될 수 있음은 관련 기술분야의 통상의 기술자에게 명백할 것이다. 일부 경우들에서, 잘 알려진 방법들과 디바이스들은, 본 발명을 모호하게 하지 않도록, 상세하게 보다는 블록도 형태로 도시된다. 본 명세서 전반에 걸쳐 "실시예", "일 실시예" 또는 "일부 실시예들"에 대한 언급은 그 실시예와 관련해서 설명된 특정 특징, 구조, 기능 또는 특성이 본 발명의 적어도 하나의 실시예에 포함되는 것을 의미한다. 따라서, 본 명세서 전반에 걸쳐 다양한 곳들에서의 문구 "실시예에서", "일 실시예에서" 또는 "일부 실시예들"의 출현들이 반드시 본 발명의 동일한 실시예를 지칭하지는 않는다. 또한, 특정 특징들, 구조들, 기능들, 또는 특성들은 하나 이상의 실시예에서 임의의 적합한 방식으로 조합될 수 있다. 예로서, 제1 실시예 및 제2 실시예와 연관된 특정 특징들, 구조들, 기능들 또는 특성들이 서로 배타적이지 않은 어느 곳에서든 제1 실시예가 제2 실시예와 조합될 수 있다.
설명 및 첨부된 청구항들에 사용되는 바와 같이, 단수 형태들은 맥락이 달리 분명히 지시하지 않는 한, 복수의 형태들을 또한 포함하도록 의도된다. 본 명세서에서 사용된 바와 같은 용어 "및/또는"이 연관된 나열된 항목들 중 하나 이상의 임의의 그리고 모든 가능한 조합들을 지칭하고 포함한다는 점이 또한 이해될 것이다.
용어들 "결합된" 및 "접속된"은, 이들의 파생어들과 함께, 본 명세서에서 컴포넌트들 간의 기능적 또는 구조적 관계들을 설명하는데 사용될 수 있다. 이들 용어들은 서로에 대한 동의어로서 의도되지는 않는다고 이해되어야 한다. 오히려, 특정 실시예들에서, "접속된"은 2개 이상의 요소들이 서로 직접 물리적, 광학적, 또는 전기적으로 접촉함을 나타내는데 사용될 수 있다. "결합된"은 2개 이상의 요소들이 서로 직접적으로 또는 간접적으로(그들 사이에 다른 개재 요소들이 있음) 물리적 또는 전기적 접촉을 하고 있다는 것 및/또는 2개 이상의 요소들이 (예컨대, 원인과 결과 관계에서와 같이) 서로 협력하거나 상호작용한다는 것을 나타내는데 사용될 수 있다.
용어들 "실질적으로", "근접한", "대략", "가까운" 및 "거의"는 일반적으로 목표 값의 +/- 10% 내에 있음을 지칭한다. 예를 들어, 용어들 "실질적으로 동일", "거의 동일" 및 "대략 동일"은, 그 사용의 명시적 맥락에서 달리 명시되지 않는 한, 그렇게 설명된 것들 사이에 단지 우연한 변동이 있음을 의미한다. 관련 기술분야에서, 그러한 변동은 전형적으로 미리 결정된 목표 값의 +/- 10% 이하이다.
용어 "스케일링"은 일반적으로 설계(개략도 및 레이아웃)를 하나의 프로세스 기술로부터 다른 프로세스 기술로 변환하고 후속하여 레이아웃 영역이 감소되는 것을 지칭한다. 용어 "스케일링"은 일반적으로 동일한 기술 노드 내에서 레이아웃 및 디바이스들을 다운사이징하는 것을 또한 지칭한다. 용어 "스케일링"은 다른 파라미터, 예를 들어 전력 공급 레벨에 대한 신호 주파수의 조정(예를 들어, 감속 또는 가속 즉, 각각 스케일링 다운 또는 스케일링 업)을 또한 지칭할 수 있다.
이 설명 전반에 걸쳐 그리고 청구항들에서 사용되는 바와 같이, 용어 "~ 중 적어도 하나" 또는 "~ 중 하나 이상"에 의해 연결되는 항목들의 목록은 열거된 용어들의 임의의 조합을 의미할 수 있다. 예를 들어, "A, B 또는 C 중 적어도 하나"라는 문구는 A; B; C; A 및 B; A 및 C; B 및 C; 또는 A, B 및 C를 의미할 수 있다.
설명 및 청구항들에서 "왼쪽", "오른쪽", "앞", "뒤", "상부", "하부", "위", "아래" 등의 용어들이 있는 경우, 이들은 설명 목적으로 사용되며, 반드시 영구적인 상대 위치들을 설명하기 위해 사용되는 것은 아니다. 예를 들어, 본 명세서에서 사용되는 바와 같은 용어들 "위", "아래", "앞측", "뒤측", "상부", "하부" 및 "~ 상"은 그러한 물리적 관계들이 주목할 만한 경우에 디바이스 내의 다른 언급된 컴포넌트들, 구조들 또는 물질들에 대한 하나의 컴포넌트, 구조, 또는 물질의 상대 위치를 지칭한다. 이들 용어들은 본 명세서에서 설명 목적으로만 그리고 주로 디바이스 z-축의 맥락 내에서 사용되며, 따라서 디바이스의 배향에 상대적일 수 있다. 따라서, 본 명세서에서 제공된 도면의 맥락에서 제2 물질 "위의" 제1 물질은 또한, 디바이스가 제공된 도면의 맥락에 대해 거꾸로 배향된 경우, 제2 물질 "아래"에 있을 수 있다. 물질들의 맥락에서, 다른 물질 위에 또는 아래에 배치된 하나의 물질은 직접적으로 접촉할 수 있거나 또는 하나 이상의 개재 물질을 가질 수 있다. 더욱이, 2개의 물질 사이에 배치된 하나의 물질은 2개의 층과 직접적으로 접촉할 수 있거나, 하나 이상의 개재 층을 가질 수 있다. 대조적으로, 제2 물질 "상의" 제1 물질은 그 제2 물질과 직접적으로 접촉한다. 유사한 구별들은 컴포넌트 어셈블리들의 맥락에서 이루어질 것이다.
용어 "사이"는 디바이스의 z-축, x-축 또는 y-축의 맥락에서 사용될 수 있다. 2개의 다른 물질 사이에 있는 물질은 그 물질들 중 하나 또는 둘 모두와 접촉할 수 있거나 또는 하나 이상의 개재 물질에 의해 다른 2개의 물질 둘 모두로부터 분리될 수 있다. 따라서 2개의 다른 물질 "사이의" 물질은 다른 2개의 물질 중 어느 하나와 접촉할 수 있거나 또는 개재 물질을 통해 다른 2개의 물질에 결합될 수 있다. 2개의 다른 디바이스 사이에 있는 디바이스는 그 디바이스들 중 하나 또는 둘 모두에 직접적으로 접속될 수 있거나 또는 하나 이상의 개재 디바이스에 의해 다른 2개의 디바이스 둘 모두로부터 분리될 수 있다.
임의의 다른 도면의 요소들과 동일한 참조 번호들(또는 이름들)을 갖는 도면들의 이러한 요소들이 설명된 것과 유사한 임의의 방식으로 동작하거나 기능할 수 있지만, 이에 제한되지 않는다는 점에 주목한다.
도 1은 일부 실시예들에 따른, 컴포넌트들과 연관된 스로틀링 우선순위들에 기반하여 컴포넌트들의 스로틀링을 구현하는 컴퓨팅 디바이스(100)(디바이스(100)라고도 함)를 개략적으로 도시한다. 디바이스(100)는 컴포넌트들(104a, ..., 104N)을 포함하며, 이들 각각에는 (우선순위들이라고도 하는) 스로틀링 우선순위들(Pa, ..., Pn)이 할당된다. 예를 들어, 컴포넌트(104a)에는 우선순위(Pa)가 할당될 수 있고, 컴포넌트(104b)에는 우선순위(Pb)가 할당될 수 있고, 다른 것들에 대해서도 그러하다.
본 명세서에서 특정 번호 또는 알파벳이 뒤따르는 공통 참조 라벨로 지칭되는 요소들은 참조 라벨만으로 집합적으로 지칭될 수 있다. 예를 들어, 컴포넌트들(104a, ..., 104N)은 집합적으로 그리고 일반적으로 복수형으로 컴포넌트들(104) 그리고 단수형으로 컴포넌트(104)라고 지칭될 수 있다. 유사하게, 우선순위들(Pa, ..., Pn)은 집합적으로 그리고 일반적으로 복수형으로 우선순위들(P) 그리고 단수형으로 우선순위(P)라고 지칭될 수 있다.
컴포넌트들(104)은 디바이스(100)의 임의의 적절한 컴포넌트들일 수 있다. 컴포넌트들(104)은 컴퓨팅 컴포넌트들 및/또는 비-컴퓨팅 컴포넌트들을 포함할 수 있다. 컴퓨팅 컴포넌트들의 예들은 하나 이상의 처리 코어, 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 이미지 처리 유닛의 프로세서 서브시스템(예컨대, IPU_PS라고도 지칭됨), 하드웨어 가속기 등과 같은 컴퓨팅, 처리 등에 수반되는 컴포넌트들을 포함한다. 비-컴퓨팅 컴포넌트들의 예들은 메모리, 디스플레이, 이미지 처리 유닛의 입력/출력 서브시스템(IPU_IS라고도 함), I/O 서브시스템, 상호접속 패브릭 등을 포함한다. 컴포넌트들(104)은 지적 재산(IP) 블록, 예컨대 제3자 제조자에 의해 개발 및/또는 제조되는 블록을 포함할 수 있다. 일례에서, 컴포넌트들(104)은 비-컴퓨팅 컴포넌트들을 포함할 수 있고, 임의의 컴퓨팅 컴포넌트들을 포함하지 않을 수 있다. 본 개시내용의 범위는 컴포넌트들(104)의 유형 또는 성질에 의해 제한되지 않는다.
예에서, 컴포넌트(104)는 대응하는 전압 및/또는 주파수 도메인과 연관될 수 있다. 따라서, 컴포넌트(104a)는 대응하는 제1 전압 및/또는 주파수 도메인에 포함되는 회로들을 포함할 수 있고, 컴포넌트(104b)는 대응하는 제2 전압 및/또는 주파수 도메인에 포함되는 회로들을 포함할 수 있고, 다른 것들에 대해서도 그런 식이다.
예를 들어, 제1 도메인의 컴포넌트(104a)는 제1 전압 조정기(VR)로부터 전압 Va를 수신하고 제1 클록 소스로부터 클록 신호 Ca를 수신할 수 있고, 제2 도메인의 컴포넌트(104b)는 제2 VR로부터 전압 Vb를 수신하고 제2 클록 소스로부터 클록 신호 Cb를 수신할 수 있고, 다른 것들에 대해서도 그런 식이다. 클록 Ca는 Fa의 주파수를 갖고, 클록 Cb는 Fb의 주파수를 갖고, 다른 것들에 대해서도 그런 식이다.
일부 실시예들에서, 컴포넌트들(104)은 독립적 및 개별적으로 스로틀링될 수 있다. 예를 들어, 본 명세서에서 더 상세히 논의되는 바와 같이, 우선순위들(Pa, ..., PN)에 기반하여, 컴포넌트들(104)의 개별 컴포넌트들은 예를 들어 컴포넌트에 의해 수신되는 대응하는 전압을 감소시키고/시키거나 컴포넌트에 의해 수신되는 대응하는 클록 신호의 주파수를 감소시킴으로써 스로틀링될 수 있다.
일부 실시예들에서, 디바이스(100)는 우선순위 할당 로직(110)(로직(110)이라고도 지칭됨)을 포함한다. 로직은, 본 개시내용의 목적을 위해, 하드웨어 요소들, 소프트웨어 요소들, 펌웨어 요소들, 회로들, 및/또는 이들의 임의의 조합을 지칭할 수 있다. 로직(110)은 우선순위들(Pa, ..., PN)을 할당할 수 있다.
도 2는 일부 실시예들에 따른, 도 1의 디바이스(100)의 컴포넌트들(104a, ..., 104N)과 각각 연관된 스로틀링 우선순위들(Pa, ..., PN)을 포함하는 레지스터(200)를 도시하고 있다. 레지스터(200)가 임의의 다른 정보를 포함할 수 있지만, 단지 우선순위들(Pa, ..., PN)이 도 2에 도시되어 있다.
도 3은 일부 실시예들에 따른, 도 2의 레지스터(200)의 우선순위들(Pa, ..., PN)의 예시적인 값들을 도시한다. 단지 예로서, 도 3에서, 우선순위들(Pa, ..., PN)의 개별 우선순위들은 3 비트를 갖는다고 가정된다. 도 3의 우선순위들(Pa, ..., PN)에 할당된 값들은 단지 예들이다. 도 3의 예에서, 우선순위들(Pa, Pb, Pc, Pd, Pe, ..., PN)에는 각각 1, 3, 2, 0, 1, ..., 0의 값들이 할당된다.
아래의 표 1은 디바이스(100)의 일부 예시적인 컴포넌트들(104)에 대한, 도 2의 레지스터(200)의 우선순위들(Pa, ..., PN)의 예시적인 값들을 나타낸다. 도 3은 컴포넌트들(104)이 일반적인 용어들임을 논의하고 있지만, 표 1은 컴포넌트들(104)의 실제 예들을 제공한다. 아래의 표 1의 컴포넌트들(104)은 단지 예들이며, 본 개시내용의 교시를 제한하지 않는다.
<표 1>
Figure pct00001
따라서, 표 1은 컴포넌트들, IPU_PS, IPU_IS(예컨대, 이는 도 1과 관련하여 논의됨), 메모리, 디스플레이, 및 다양한 IP 블록들(A, ..., N)과 같은 상이한 컴포넌트들의 예시적인 우선순위들을 제공한다.
예에서, 개별 컴포넌트들(104)에는 대응하는 식별(ID)이 할당될 수 있다. 표 2는 표 1의 개별 컴포넌트들(104)이 각각의 ID를 할당받는 것을 나타낸다.
<표 2>
Figure pct00002
이제, 표 1 및 표 2를 조합하는 것은 다음의 표 3을 제공한다:
<표 3>
Figure pct00003
따라서, 표 3은 연관된 컴포넌트 ID들과 함께, 컴포넌트들, IPU_PS, IPU_IS(예컨대, 이는 도 1과 관련하여 논의됨), 메모리, 디스플레이, 및 다양한 IP 블록들(A, ..., N)과 같은 상이한 컴포넌트들의 예시적인 우선순위들을 제공한다. 컴포넌트 ID들은 본 명세서에서 나중에 도 6과 관련하여 더 상세하게 논의된다.
다시 도 1을 참조하면, 일부 실시예들에서, 디바이스(100)는 스로틀링 로직(114)(로직(114)이라고도 함)을 포함한다. 로직(114)은 하나 이상의 컴포넌트(104)를 선택적으로 스로틀링할 수 있다.
일부 실시예들에서, (예를 들어, 로직(114)에 의한) 컴포넌트들(104)의 스로틀링은 우선순위들(Pa, ..., PN)에 기반할 수 있다. 예를 들어, 컴포넌트(104)의 우선순위 P가 더 높을수록, 컴포넌트(104)가 스로틀링될 가능성이 더 높다. 예를 들어, 전력, 전류, 신뢰도, 및/또는 열 예산으로 인해, 컴포넌트가 스로틀링되어야 한다고 가정한다. 도 3의 예에 도시된 바와 같이, 컴포넌트(104b)의 우선순위 Pb가 가장 높다. 따라서, 컴포넌트(104b)가 처음에 스로틀링된다(예컨대, 클록 Cb의 전압 Vb 및/또는 주파수가 감소된다). 컴포넌트(104b)의 스로틀링이 예산 제약을 충족시키기에 충분한 경우, 어떠한 다른 컴포넌트들도 추가로 스로틀링되지 않을 수 있다. 그러나, 컴포넌트(104b)의 스로틀링이 예산 제약을 충족시키기에 충분하지 않다면, 컴포넌트(104c)(예컨대, 2의 값을 갖는 우선순위 Pc를 가짐)가 스로틀링될 수 있고, 이어서 컴포넌트들(104a 및/또는 104e)(예를 들어, 필요한 경우)의 스로틀링이 뒤따를 수 있다.
일부 실시예들에서, 컴포넌트(104)가 0의 우선순위를 갖는 경우, 그 컴포넌트는 전혀 스로틀링되지 않을 수 있거나, 절대적으로 필요하다면(예컨대, 0이 아닌 우선순위들을 갖는 다른 컴포넌트들이 이미 스로틀링되었고 예산 제약이 아직 충족되지 않은 경우) 스로틀링될 수 있다.
일부 실시예들에서, 2개 이상의 컴포넌트들(104)이 동일한 우선순위를 갖는 경우(예컨대, 컴포넌트들(104a 및 104e)이 1의 동일한 우선순위를 갖는 경우), 2개 이상의 컴포넌트들 중 임의의 하나 이상이 스로틀링될 수 있다. 2개 이상의 컴포넌트들로부터의 컴포넌트의 선택은 작업부하, 컴포넌트의 유형 등과 같은 임의의 적절한 기준(예컨대, 우선순위 이외의 것)에 기반할 수 있다.
그러나, 다른 예에서, 하나보다 많은 컴포넌트가 동일한 0이 아닌 우선순위를 갖지 않을 수 있다. 예를 들어, 0이 아닌 우선순위들을 갖는 컴포넌트들의 경우, 각각의 컴포넌트는 대응하는 고유 우선순위를 가질 수 있다.
도 4a는 일부 실시예들에 따른, 스로틀링 우선순위들(Pa, ..., PN)의 동적 생성을 도시한다. 예를 들어, 로직(110)은 운영 체제(OS)로부터 수신된 입력(402), 하나 이상의 사용자 인터페이스(UI)를 통해(예컨대, 디바이스(100)의 사용자로부터) 수신된 입력(404), 하나 이상의 인자(408), BIOS(기본 입력/출력 시스템)로부터 수신된 입력(412), 다양한 디바이스 드라이버들, 전력 관리(PM) 드라이버들, PM 소프트웨어 등으로부터 수신된 입력(416)에 적어도 부분적으로 기반하여 우선순위들(Pa, ..., PN)을 생성한다.
예를 들어, OS는 OS의 동작, 컴포넌트들(104)의 동작, 컴포넌트들(104)의 작업부하, 컴포넌트들(104) 상에서 실행되는 프로세스들 및/또는 스레드들 등에 기반하여 우선순위들(Pa, ..., PN)을 할당 및/또는 동적으로 변경할 수 있다. 예에서, 디바이스(100)의 사용자는 또한 예를 들어 입력(404)을 통해 우선순위들(Pa, ..., PN)을 구성할 수 있다.
단지 예로서, 디바이스(100)는 비교적 높은 해상도, 예컨대 4K 해상도(예컨대, 4,000 픽셀의 수평 스크린 디스플레이 해상도)의 디스플레이 스크린을 갖는다고 가정한다. 디스플레이 해상도의 일부 일시적인 저하는 사용자에게 현저하지 않을 수 있거나, 또는 만족되지 않은 사용자를 낳지 않을 수 있다. 따라서, 입력(402 및/또는 404)은 (예를 들어, 이러한 하나 이상의 컴포넌트가 처음에 스로틀링되도록) 디스플레이 상에 이미지들을 렌더링하는 것과 연관된 하나 이상의 컴포넌트에 대해 높은 스로틀링 우선순위를 지정할 수 있다. 예를 들어, 이러한 하나 이상의 컴포넌트가 스로틀링될 때, 디바이스(100)는 디스플레이 스크린을 2K, 1080p 등의 감소된 해상도로 동작시킬 수 있다.
예에서, 이러한 하나 이상의 컴포넌트(예를 들어, 고해상도 디스플레이 상에 이미지들을 렌더링하는 것과 연관된 컴포넌트들)에 대한 이러한 높은 스로틀링 우선순위는 디바이스(100)가 예를 들어 워드 처리 애플리케이션들, 인터넷 브라우징 등에 이용되고 있을 때 할당될 수 있다.
그러나, 디바이스(100)가 게임 또는 영화 시청에 이용되고 있을 때, 디스플레이 해상도의 감소를 원하지 않을 수 있다. 따라서, 예에서, 이러한 상황들에서는, 이러한 하나 이상의 컴포넌트(예컨대, 고해상도 디스플레이 상에 이미지들을 렌더링하는 것과 연관된 컴포넌트들)에는 (예를 들어, 이러한 하나 이상의 컴포넌트가 다른 높은 스로틀링 우선순위 컴포넌트들의 스로틀링 후에 스로틀링되도록) 비교적 낮은 우선순위가 할당될 수 있다.
따라서, 위의 예에서, 디스플레이 스크린 상에 표시하기 위한 컴포넌트들과 연관된 스로틀링 우선순위는 동적으로 변경될 수 있다. 스로틀링 우선순위의 동적 변경은 OS에 의해(예컨대, 입력(402)을 통해), UI를 이용한 사용자에 의해(예컨대, 입력(404)을 통해), 및/또는 하나 이상의 인자(408)에 기반하여 수행될 수 있다. 따라서, 스로틀링 우선순위들의 동적 변경은 예를 들어 새로운 정보가 이용가능할 때와 같이, 실시간으로 스로틀링 우선순위들을 변경하는 것을 수반한다. 위의 예들은 디스플레이 스크린 상에 표시하기 위한 컴포넌트들과 연관된 스로틀링 우선순위를 동적으로 변경하는 것을 논의한다.
입력(402) 및/또는 인자들(408)을 결정하기 위해 OS에 의해 고려되는 인자들은, 예를 들어 컴포넌트(104)의 중요도, 컴포넌트의 작업부하, (예를 들어, ACPI(Advanced Configuration and Power Interface) 표준에 따른) 컴포넌트의 P 상태 또는 C 상태, 컴포넌트의 대역폭, 컴포넌트에 의해 소비되는 전력, 컴포넌트의 사용량, 및/또는 컴포넌트의 스로틀링 우선순위를 결정하는데 이용될 수 있는 임의의 다른 적절한 인자(들)를 포함할 수 있다.
일부 실시예들에서, 로직(110)은 또한 BIOS로부터 입력(412)을 수신할 수 있다. 예를 들어, BIOS는 미리 구성된 설정들에 기반하여 우선순위들(Pa, ..., PN)을 할당 및/또는 동적으로 변경할 수 있다. 일부 실시예들에서, 로직(110)은 또한 하나 이상의 디바이스 드라이버, 전력 관리 드라이버, 전력 관리 소프트웨어 등으로부터 입력(416)을 수신할 수 있다.
도 4a가 OS, BIOS, 디바이스 드라이버들로부터, UI들 등을 통해 입력을 수신하는 로직(110)을 도시하지만, 로직(110)은 디바이스(100)의 임의의 적절한 하드웨어 및/또는 소프트웨어 섹션들, 예컨대 전력 관리 제어기, 메모리 제어기, 디스플레이 제어기, 처리 코어 등으로부터 (예컨대, 우선순위들(Pa, ..., PN)을 할당하기 위한) 입력을 수신할 수 있다.
도 4b는 일부 실시예들에 따른, 우선순위 할당 로직(110) 및 스로틀링 로직(114)을 구현하는 전력 관리 유닛(PMU)(455)을 포함하는 예시적인 시스템(440)을 도시한다. 시스템(400)은 SoC(450)를 포함한다. 도 4b의 예에서, SoC(450)는 복수의 처리 코어(453a, 453b, ..., 453N)를 포함하는 프로세서(452)(예컨대, 중앙 처리 유닛(CPU))를 포함한다.
시스템(440)은 PMU(455)를 포함한다. 예에서, PMU(455)는 전용 전력 관리 프로세서(458)를 포함할 수 있지만, 다른 예에서는 프로세서(452)의 섹션(예컨대, 하나 이상의 코어(453))이 전력 관리 프로세서(458)에 대해 이용될 수 있다. 일부 실시예들에서, 전력 관리 프로세서(458)는 우선순위 할당 로직(110) 및 스로틀링 로직(114)을 구현하는데 이용될 수 있다.
다양한 애플리케이션 프로그램들(460), OS(464), 하나 이상의 전력 관리 애플리케이션 프로그램(466) 등이 프로세서(452) 및/또는 전력 관리 프로세서(458) 상에서 실행된다. 예를 들어, 애플리케이션 프로그램들(460) 및 OS(464)는 프로세서(452) 상에서 실행될 수 있고, 하나 이상의 전력 관리 애플리케이션 프로그램(466)은 전력 관리 프로세서(458) 상에서 실행될 수 있다.
도 1과 관련하여 논의된 바와 같이, 본 개시내용의 목적을 위해, 로직은 하드웨어 요소들, 소프트웨어 요소들, 펌웨어 요소들, 회로들, 및/또는 이들의 임의의 조합을 지칭할 수 있다. 따라서, 예를 들어, 우선순위 할당 로직(110) 및/또는 스로틀링 로직(114)은 전력 관리 프로세서(458), 전력 관리 애플리케이션 프로그램들(466), 및/또는 임의의 적절한 하드웨어 요소들, 소프트웨어 요소들, 펌웨어 요소들, 회로들, 및/또는 이들의 임의의 조합을 이용하여 구현될 수 있다. 일부 실시예들에서, 전력 관리 프로세서(458)는 또한 전력 관리 제어기(505)(예를 들어, 도 5와 관련하여 더 상세히 논의됨)를 포함할 수 있다.
시스템(440)은 OS(464)가 PMU(455)와 통신하는(예를 들어, OS(464)가 PMU(455)의 우선순위 할당 로직(110)과 통신하는) 소프트웨어 인터페이스를 포함한다. 예를 들어, 도 4a와 관련하여 논의된 바와 같이, OS(464)는 이러한 소프트웨어 인터페이스를 통해 입력(402)을 우선순위 할당 로직(110)으로 전달한다. 예에서, OS(464)의 OS 드라이버(도 4b에는 도시되지 않음)는 OS(464)와 PMU(455) 사이의 소프트웨어 인터페이스의 일부일 수 있다. OS 드라이버는 입력(402)을 OS(464)로부터 예를 들어 직접 또는 레지스터들(484)을 통해 PMU(455)로 전송할 수 있다.
단지 예로서, OS(464)가 PMU(455)와 통신하는 인터페이스는 하나 이상의 레지스터(482)를 포함할 수 있다. 예를 들어, OS(464)는 레지스터들(482)에 데이터를 기입할 수 있고(예컨대, 입력(402)을 레지스터들(482)에 기입할 수 있고), PMU(455)는 레지스터들(482)로부터 기입된 데이터를 페치할 수 있다. 다른 예에서, OS(464)는 프로세서(450)와 PMU(455) 사이의 직접적인 라인으로 도시되는, (예를 들어, 레지스터들(482)을 우회함으로써) 직접적으로 PMU(455)와 통신한다.
일부 실시예들에서, SOC(450)는 도 2의 레지스터(200)를 포함한다. 우선순위 할당 로직(110)은 스로틀링 로직(114)에 의해 액세스될 수 있는, 레지스터(200)에 스로틀링 우선순위들(Pa, ..., PN)을 기입할 수 있다.
일부 실시예들에서, SOC(450)는 IPU(470)를 포함한다. 도 1과 관련하여 논의된 바와 같이, IPU(470)는 예를 들어 이미지 처리 유닛(IPU)(470)의 프로세서 서브시스템일 수 있는 IPU_PS(471)를 포함한다. IPU(470)는 예를 들어 IPU(470)의 입력/출력 서브시스템일 수 있는 IPU_IS(472)를 또한 포함한다.
일부 실시예들에서, SOC(450)는 그래픽 처리 유닛(GPU)(468), 통합 그래픽 회로(491), 하드웨어 가속기(480)(예를 들어, 이는 보다 범용 프로세서(452) 상에서 실행되는 소프트웨어에서 가능한 것보다 더 효율적으로 기능들을 수행함), (예를 들어, 메모리(490)와 인터페이싱하기 위한) 메모리 인터페이스(478), (예를 들어, 디스플레이(484) 상에서 이미지들을 렌더링하기 위한) 디스플레이 엔진(492), BIOS(496) 등을 포함한다. BIOS(496)는 레지스터(482)에 데이터를 기입할 수 있고(예컨대, 레지스터(482)에 입력(412)을 기입할 수 있고), PMU(455)는 레지스터(482)로부터 기입된 데이터를 페치할 수 있다. 다른 예에서, BIOS(496)는 BIOS(496)와 PMU(455) 사이의 직접적인 라인으로 도시되는, (예를 들어, 레지스터(482)를 우회함으로써) 직접적으로 PMU(455)와 통신한다.
SOC(450)는 예를 들어 디스플레이(484), 하나 이상의 I/O 주변기기 디바이스들(486), 하나 이상의 저장 디바이스(488) 등과 같은 하나 이상의 입력/출력 디바이스와 인터페이싱하기 위한 I/O 서브시스템(475)을 추가로 포함한다.
우선순위 기반 스로틀링이 적용되는 도 1의 컴포넌트들(104a, 104b, ..., 104N)은 시스템(400)의 임의의 적절한 컴포넌트(들)를 포함할 수 있다. 예를 들어, 시스템(400)은 컴퓨팅 컴포넌트들 및/또는 비-컴퓨팅 컴포넌트들을 포함한다. 컴퓨팅 컴포넌트들의 예들은 하나 이상의 처리 코어(453), 프로세서(452), GPU(468), 이미지 처리 유닛(IPU)(470)의 프로세서 서브시스템(IPU_PS)(471), 하드웨어 가속기(480) 등과 같이 컴퓨팅, 처리 등에 수반되는 컴포넌트들을 포함한다. 비-컴퓨팅 컴포넌트들의 예들은 메모리(490), 디스플레이(484), 이미지 처리 유닛(IPU)(470)의 입력/출력 서브시스템(IPU_IS)(472), I/O 서브시스템(475), 상호접속 패브릭(494) 등을 포함한다. 일례에서, 컴포넌트들(104)(예컨대, 그 각각은 대응하는 스로틀링 우선순위를 가지며, 우선순위 기반 스로틀링이 적용됨)은 비-컴퓨팅 컴포넌트들을 포함할 수 있고, 임의의 컴퓨팅 컴포넌트들을 포함하지 않을 수 있다. 일례에서, 컴포넌트들(104)은 비-컴퓨팅 컴포넌트들 및/또는 컴퓨팅 컴포넌트들을 포함할 수 있다.
도 5는 일부 실시예들에 따른, 예를 들어 다양한 컴포넌트들(104)을 스로틀링하는 것을 용이하게 하기 위해, 디바이스(100)가 전력 헤드룸 파라미터(Rt)를 동적으로 결정하는 전력 관리 제어기(505)를 포함하는, 도 1의 컴퓨팅 디바이스(100)의 추가 상세들을 개략적으로 도시한다.
일부 실시예들에서, 전력 관리 제어기(505)(제어기(505)라고도 지칭됨)는 컴포넌트들(104)에 대한 전력 헤드룸을 결정한다. 예를 들어, 전력 및/또는 열 제약들이 컴포넌트들(104)의 전력 소비의 합이 Power_limit보다 작거나 동일할 것을 요구한다고 가정한다. 따라서, Power_limit는 컴포넌트들(104)에 의해 소비될 수 있는 최대 허용가능한 전력 또는 최대 예산 전력일 수 있다. Power_limit는, 예를 들어 디바이스(100)에 이용가능한 전력, 디바이스(100)의 잔여 배터리 전력, 디바이스(100)에 전력을 공급하는 전력 어댑터의 유형, 디바이스(100)의 온도 등에 기반하여 동적으로 변경될 수 있다.
또한, 모든 컴포넌트들(104)에 의한 실제 전력 소비의 합이 Consumed_power에 의해 주어진다고 가정한다. 따라서, Consumed_power은 컴포넌트들(104)의 실제 전력 소비에 따라 변한다. Consumed_power은 컴포넌트들(104)에 공급되는 전압 및/또는 컴포넌트들(104)에 공급되는 클록 신호들의 주파수를 제어함으로써 제어될 수 있다. 예를 들어, 컴포넌트(104a)의 클록(Ca)의 전압(Va) 및/또는 주파수(Fa)를 스로틀링하는 것은 컴포넌트(104a)에 의해 소비되는 전력을 감소시킬 수 있고, 그에 의해 Consumed_power을 감소시킨다.
예에서, 전력 헤드룸은 Power_limit와 Consumed_power 간의 차이를 지칭한다. 따라서, 전력 헤드룸은 Power_Limit에 도달하기 전에, 증가될 수 있는 컴포넌트들의 전력 소비를 나타낸다. Consumed_power이 Power_limit를 초과하지 않는 것을 보장하기 위해, 전력 헤드룸은 포지티브 또는 0이어야 한다.
일부 실시예들에서, 전력 헤드룸은 예를 들어 Consumed_power 및 Power_limit에 기반하여 주기적 또는 비주기적 간격들로 업데이트된다. 예를 들어, EWMA 윈도우(Exponentially Weighted Moving Average window)를 이용하면, 반복 t에서의 Power_headroom Et는 다음과 같이 주어질 수 있다:
Figure pct00004
여기서, Et는 시간 t에서의 전력 헤드룸이고, Et-1은 시간 (t-1)에서의 전력 헤드룸(예컨대, 이전 시간 간격으로부터의 전력 헤드룸)이고, Delta_T는 업데이트 사이클의 시간 간격이고, α는 지수적 감쇠이다. 따라서, 수학식 1에서, (i) 복수의 컴포넌트들에 이용가능한 예산(예컨대, Power_Limit)과 (ii) 복수의 컴포넌트들에 의한 소비의 합(예컨대, Consumed_Power) 사이의 차이가 계산되고, 여기서 예산은 전력 예산이다. 수학식 1의 인자 α는 다음과 같이 EWMA 시간 윈도우로부터 도출될 수 있다:
Figure pct00005
여기서 Tau는 EWMA 시간 윈도우이다. 예에서, 제어기(505)는 Consumed_power 및 Power_limit를 결정하고, 전력 헤드룸 Et를 주기적으로 업데이트한다.
일부 실시예들에서, 제어기(505)는 전력 헤드룸 파라미터 Rt(제약 헤드룸 파라미터 Rt라고도 함)를 결정한다. 전력 헤드룸 파라미터 Rt는 전력 헤드룸 Et에 기반하여 결정될 수 있다. 일부 실시예들에서, 전력 헤드룸 파라미터 Rt는 다음과 같이 주어질 수 있다:
Figure pct00006
수학식 3에서, Rt는 Et의 비례항 및 Et의 적분항에 기반한다. 수학식 3에서, K p 는 Et의 비례항에 대한 가중 인자이고, K i 는 Et의 적분항에 대한 가중 인자이다. 또한, 수학식 1은 이미 Et의 미분항을 구현한다. 따라서, 수학식들 1 및 3의 조합은 전력 헤드룸 Et의 비례, 적분 및 미분(PID) 컴포넌트들을 구현한다. 수학식들 1 및 3의 조합이 PID 제어를 제공하여 전력 헤드룸 파라미터 Rt를 결정하지만, 임의의 다른 적절한 유형의 제어(예를 들어, PI, P, 또는 PD 제어, 또는 다른 적절한 유형의 제어)가 또한 이용될 수 있다.
따라서, 제약 헤드룸 파라미터 Rt(파라미터 Rt라고도 함)는 시간 인스턴트 "t"에서 컴포넌트들(104)에 이용가능한 제약 헤드룸(예컨대, 전력 헤드룸, 열 헤드룸, 전류 헤드룸 등)의 표시이다. 일부 실시예들에서, 파라미터 Rt는 제어기(505)에 의해 동적으로 업데이트되고(예컨대, 주기적 또는 비주기적 간격들 등에서 지속적으로 업데이트되고), 로직(114)에 전송될 수 있다.
따라서, 로직(114)은 로직(110)으로부터 우선순위들(Pa, ..., PN)을 수신하고, 제어기(505)로부터 파라미터 Rt를 수신한다. 우선순위들(Pa, ..., PN) 및 파라미터 Rt에 기반하여, 로직(114)은 (예컨대, 컴포넌트들의 전압 및/또는 동작 주파수를 제어함으로써) 컴포넌트들(104) 중 하나 이상을 선택적으로 스로틀링한다.
수학식들 1, 2 및 3은 전력 예산(예컨대, 복수의 컴포넌트에 이용가능한 예산과, 복수의 컴포넌트에 의한 소비의 합 사이의 차이에 관한 것이고, 여기서 예산은 전력 예산임)에 관한 것이지만, 전류 예산, 열 예산, 신뢰도 예산 등과 같은 임의의 다른 적절한 예산이 이용될 수 있다.
도 6은 일부 실시예들에 따른, 디바이스(100)의 컴포넌트들(104a, ..., 104N)에 대한 스로틀링 우선순위들 및 스로틀링 스칼라들을 묘사하는 표(600)를 도시한다. 예를 들어, 표(600)에서, (예를 들어, 0 우선순위들을 갖는 컴포넌트들이 일반적으로 스로틀링되지 않을 수 있기 때문에) 0이 아닌 우선순위들을 갖는 컴포넌트들이 열거되어 있다. 표(600)에서의 각각의 컴포넌트는 컴포넌트 ID(식별)에 의해 식별된다. 표(600)는 우선순위의 내림차순으로 배열된 컴포넌트들(104g, 104b, 104c, 104a, 104e)을 포함한다.
일부 실시예들에서, 표(600)는 또한, 파라미터(Rt)를 대응하는 컴포넌트에 대해 스로틀링될 주파수의 양으로 변환하는, 개별 컴포넌트들에 대한 스로틀링 인자 스케일링 계수(T)(예컨대, 컴포넌트(104g)에 대한 스로틀링 스케일링 계수(Tg), 컴포넌트(104b)에 대한 스로틀링 스케일링 계수(Tb) 등)를 포함한다. 예를 들어, 컴포넌트(104g)가 스로틀링될 경우, 컴포넌트(104g)의 주파수 Fg는 Rt*Tg만큼 감소될 수 있다.
일부 실시예들에서, 로직(114)은 파라미터 Rt를 모니터링한다. 파라미터 Rt가 제1 임계치 아래로 떨어지면, 로직(114)은 표(600)의 제1 엔트리(예컨대, 가장 높은 스로틀링 우선순위를 갖는 것)를 스로틀링한다. 따라서, 예시적인 표(600)의 경우, 파라미터 Rt가 제1 임계치 아래로 떨어지면, 로직(114)은 컴포넌트(104g)를 스로틀링한다(예컨대, 전압 Vg 및/또는 주파수 Fg를 감소시키고, 여기서 주파수 Fg는 Rt*Tg와 동일한 양만큼 감소될 수 있다).
파라미터 Rt가 더 떨어지고 제2 임계치 미만이면, 로직(114)은 표(600)의 제2 엔트리(예컨대, 두 번째로 가장 높은 스로틀링 우선순위를 갖는 것)를 스로틀링한다. 따라서, 예시적인 표(600)의 경우, 파라미터 Rt가 제2 임계치 미만으로 더 감소하면, 로직(114)은 컴포넌트(104b)를 스로틀링한다(예컨대, 전압 Vb 및/또는 주파수 Fb를 감소시키고, 여기서 주파수 Fb는 Rt*Tb와 동일한 양만큼 감소될 수 있다).
이 프로세스는 파라미터 Rt가 안정화될 때까지 반복적으로 계속된다. Rt가 증가하기 시작하면, 컴포넌트들은 역순으로 언스로틀링된다. 예를 들어, 더 낮은 우선순위들을 갖는 컴포넌트들은 더 높은 우선순위들을 갖는 컴포넌트들 전에 언스로틀링된다. 예를 들어, 컴포넌트(104b)는 파라미터 Rt가 제2 임계치를 넘어 증가하면 언스로틀링되고, 컴포넌트(104g)는 파라미터 Rt가 제1 임계치를 넘어 증가하면 언스로틀링된다.
도 7은 일부 실시예들에 따른, 우선순위에 기반하여 디바이스(100)의 컴포넌트들(104)을 선택적으로 스로틀링하기 위한 (예를 들어 의사코드들의 형태의) 알고리즘(700)을 도시한다. 알고리즘(700)은 디바이스(100)의 다양한 컴포넌트들(104)(예컨대, 컴포넌트들의 이름들의 단지 예들인 QCLK, CDCLC, IPU_PSCLC 등과 같은 컴포넌트들)에 대응하는 컴포넌트 ID들이 할당되는 섹션(704)을 포함한다. 단지 예로서, 컴포넌트(QCLK)에는 1의 컴포넌트 ID가 할당되고, 컴포넌트(CDCLC)에는 2의 컴포넌트 ID가 할당되고, 컴포넌트(IPU_PSCLC)에는 3의 컴포넌트 ID가 할당되며, 다른 것들에 대해서도 그런 식이다.
알고리즘(700)의 섹션(708)에서, 개별 컴포넌트들은 대응하는 스로틀링 우선순위들을 할당받는다. 예를 들어, 1의 컴포넌트 ID를 갖는 컴포넌트(QCLK)는 3의 우선순위를 할당받고, 2의 컴포넌트 ID를 갖는 컴포넌트(CDCLK)는 1의 우선순위를 할당받고, 2의 컴포넌트 ID를 갖는 컴포넌트(IPU_PSCLK)는 4의 우선순위를 할당받고, 다른 것들에 대해서도 그런 식이다.
알고리즘(700)의 섹션(712)에서, 개별 컴포넌트들은 대응하는 스로틀링 스케일링 계수들(도 7에서 Throttle_Scalars로서 지칭됨)을 할당받는다. 예를 들어, 1의 컴포넌트 ID를 갖는 컴포넌트(QCLK)는 T1의 스로틀링 스케일링 계수를 할당받고, 2의 컴포넌트 ID를 갖는 컴포넌트(CDCLK)는 T2의 스로틀링 스케일링 계수를 할당받고, 3의 컴포넌트 ID를 갖는 컴포넌트(IPU_PSCLK)는 T3의 스로틀링 스케일링 계수를 할당받고, 다른 것들에 대해서도 그런 식이다.
알고리즘(700)의 섹션(716)에서, 스로틀링을 위한 컴포넌트가 선택된다. 예를 들어, 섹션(716)에서, 파라미터 Rt가 임계치보다 작은지가 결정된다. 그렇다면, 우선순위의 가장 높은 값을 갖는 컴포넌트 ID가 스로틀링을 위해 선택된다. 단지 예로서, 섹션(708)과 관련하여 논의된 바와 같이, 컴포넌트 ID 3(예컨대, IPU_PSCLK에 대응함)은 4의 가장 높은 우선순위를 갖는다. 따라서, 컴포넌트 ID 3(예컨대, IPU_PSCLK에 대응함)이 스로틀링을 위해 선택될 수 있다.
알고리즘(700)의 섹션(720)에서, 컴포넌트 ID 3에 대한 스로틀링으로 인한 주파수 감소가 결정되고, 이는 Rt*T3일 수 있고, 여기서 T3은 컴포넌트 ID 3에 대응하는 스로틀링 스케일링 계수이다. 따라서, 컴포넌트(IPU_PSCLK)는 Rt*T3의 주파수에 의해 스로틀링된다.
도 8a는 일부 실시예들에 따른, 대응하는 스로틀링 우선순위들의 순서에 기반하여 컴퓨팅 디바이스(예컨대, 디바이스(100))의 다양한 컴포넌트들(예컨대, 컴포넌트들(104))을 스로틀링하기 위한 순서 또는 시퀀스를 선택하기 위한 방법(800)을 묘사하는 흐름도를 도시한다. 도 8a에 관한 흐름도에서의 블록들이 특정한 순서로 도시되지만, 그 동작들의 순서는 수정될 수 있다. 따라서, 도시된 실시예들은 상이한 순서로 수행될 수 있고, 일부 동작들/블록들은 병행하여 수행될 수 있다. 도 8a에 열거되는 블록들 및/또는 동작들 중 일부는 특정 실시예들에 따라 임의적일 수 있다. 제시된 블록들의 넘버링은 명료함을 위한 것이고, 다양한 블록들이 행해져야만 하는 동작들의 순서를 규정하려는 것으로 의도되어 있지 않다. 방법(800)의 다양한 동작들은 소프트웨어 컴포넌트들, 하드웨어 컴포넌트들, 펌웨어 컴포넌트들, 로직 블록들 등에 의해 수행될 수 있다.
방법(800)의 804에서, 우선순위 할당 로직(110)은 예를 들어 도 3 및 도 4a에 관하여 논의된 바와 같이, 입력(402, 404, 408, 412, 및/또는 416)을 수신하고, 복수의 컴포넌트들(예컨대, 컴포넌트들(104a, ..., 104N))에 스로틀링 우선순위들(예컨대, 우선순위들(Pa, ..., PN))을 할당한다. 컴포넌트들은, 예를 들어 도 6과 관련하여 논의된 바와 같이, 스로틀링 우선순위들에 기반하여 순서화된다.
방법(800)의 808에서, 제약 헤드룸 파라미터 Rt는 예를 들어 도 6 및 수학식들 1-3과 관련하여 논의된 바와 같이 추적된다. 파라미터 Rt의 추적은 연속적으로, 주기적 간격들로, 비주기적 간격들로, 또는 그와 유사한 것으로 수행될 수 있다.
방법(800)의 812에서, 예를 들어 도 6 및 도 7과 관련하여 논의된 바와 같이, 파라미터 Rt를 추적하는 것에 기반하여 (예를 들어 스로틀링 로직(114)에 의해) 컴포넌트들을 스로틀링(또는 언스로틀링)하기 위한 결정이 행해진다. 예를 들어, 파라미터 Rt는 다양한 임계치들과 비교된다. Rt가 임계치 미만으로 되면, 컴포넌트가 스로틀링될 것이다. Rt가 임계치보다 더 높아지면, 컴포넌트는 언스로틀링될 것이다.
또한, 812에서, 블록(804)과 관련하여 논의된 컴포넌트들의 순서에 기반하여, 스로틀링(또는 언스로틀링)을 위해 하나 이상의 컴포넌트가 선택된다. 예를 들어, 위에서 논의된 바와 같이, 컴포넌트들은 우선순위의 내림차순으로 스로틀링되고, 우선순위의 오름차순으로 언스로틀링된다(그렇지만, 다른 예에서, 컴포넌트들은 우선순위의 오름차순으로 스로틀링될 수 있고, 우선순위의 내림차순으로 언스로틀링될 수 있다).
블록들(808 및 812)에서의 동작들은 예를 들어 방법(800)이 812로부터 808로 루프백함에 따라 반복적으로 그리고 연속적으로 수행된다. 도 8a에 도시되지 않았지만, 예에서, 스로틀링 우선순위들은 (예컨대, 도 4a와 관련하여 논의된 바와 같이) 재할당되거나 업데이트될 수 있고, 이러한 상황들에서, 방법(800)은 블록(804)의 동작들을 또한 반복할 수 있다.
도 8b는 일부 실시예들에 따른, 제약 헤드룸 파라미터 Rt를 추적하기 위한 방법(840)을 묘사하는 흐름도를 도시한다. 도 8b에 관한 흐름도에서의 블록들이 특정한 순서로 도시되지만, 그 동작들의 순서는 수정될 수 있다. 따라서, 도시된 실시예들은 상이한 순서로 수행될 수 있고, 일부 동작들/블록들은 병행하여 수행될 수 있다. 도 8b에 열거되는 블록들 및/또는 동작들 중 일부는 특정 실시예들에 따라 임의적일 수 있다. 제시된 블록들의 넘버링은 명료함을 위한 것이고, 다양한 블록들이 행해져야만 하는 동작들의 순서를 규정하려는 것으로 의도되어 있지 않다. 방법(840)의 다양한 동작들은 소프트웨어 컴포넌트들, 하드웨어 컴포넌트들, 펌웨어 컴포넌트들, 로직 블록들 등에 의해 수행될 수 있다.
도 8a에서, 블록(808)은 제약 헤드룸 파라미터 Rt를 추적하는 것과 연관된다. 도 8b의 방법(840)은 제약 헤드룸 파라미터 Rt를 추적하는 것과 연관된 예시적인 동작들을 제공한다.
도 8b의 방법(840)을 참조하면, 844에서, 예를 들어 PMU(455)에 의해(예컨대, 도 4b 및 도 5의 전력 관리 제어기(505)에 의해) 전력 예산 및 소비된 전력의 표시가 수신된다. 전력 예산(예컨대, Power_Limit) 및 소비된 전력의 표시(예컨대, Consumed_power)는 수학식 1과 관련하여 더 상세하게 논의된다. 예에서, 전력 예산 및 소비된 전력의 표시는 SoC(450), 시스템(440), 디바이스(100) 등에 대한 것이다.
848에서, 예를 들어 PMU(455)에 의해(예컨대, 도 4b 및 도 5의 전력 관리 제어기(505)에 의해) 전력 헤드룸 파라미터 Et가 결정된다. 전력 헤드룸 파라미터 Et의 결정은 수학식 1과 관련하여 더 상세하게 논의된다.
852에서, 제약 헤드룸 파라미터 Rt는 예를 들어 PMU(455)에 의해(예컨대, 도 4b 및 도 5의 전력 관리 제어기(505)에 의해) 결정된다. 제약 헤드룸 파라미터 Rt의 결정은 수학식들 2 및 3과 관련하여 더 상세하게 논의된다.
일부 실시예들에서, 블록들(844, 848, 및 852)의 동작들은 루프에서 실행될 수 있다. 따라서, 방법은 852로부터 844로 루프백한다. 따라서, 제약 헤드룸 파라미터 Rt는 주기적으로 결정되고, PMU(455)는, 예컨대 도 4b 및 도 5의 전력 관리 제어기(505)에 의해 예를 들어 도 5와 관련하여 논의된 바와 같이 제약 헤드룸 파라미터 Rt를 스로틀링 로직(114)에 전송한다.
도 8c는 일부 실시예들에 따른, 스로틀링 우선순위들에 기반하여 컴포넌트들(104)을 스로틀링 및/또는 언스로틀링하기 위한 방법(860)을 묘사하는 흐름도를 도시한다. 도 8c에 관한 흐름도에서의 블록들이 특정한 순서로 도시되지만, 그 동작들의 순서는 수정될 수 있다. 따라서, 도시된 실시예들은 상이한 순서로 수행될 수 있고, 일부 동작들/블록들은 병행하여 수행될 수 있다. 도 8c에 열거되는 블록들 및/또는 동작들 중 일부는 특정 실시예들에 따라 임의적일 수 있다. 제시된 블록들의 넘버링은 명료함을 위한 것이고, 다양한 블록들이 행해져야만 하는 동작들의 순서를 규정하려는 것으로 의도되어 있지 않다. 방법(840)의 다양한 동작들은 소프트웨어 컴포넌트들, 하드웨어 컴포넌트들, 펌웨어 컴포넌트들, 로직 블록들 등에 의해 수행될 수 있다.
도 8a에서, 블록(812)은 일부 실시예들에 따라 파라미터 Rt를 추적하는 것에 기반하여 컴포넌트들을 스로틀링(또는 언스로틀링)하도록 결정하는 것과 연관되어 있다. 도 8c의 방법(880)은 컴포넌트들(104)의 스로틀링(또는 언스로틀링)을 상세히 논의한다.
도 8c의 방법(860)을 참조하면, 864에서, 컴포넌트들(104a, ..., 104N)은 예를 들어 방법(800)의 블록(804)과 관련하여 논의된 바와 같이, 스로틀링 우선순위들에 기반하여 순서화된다. 또한, 864에서, 카운터 m은 1로 설정된다(예컨대, m==1이다).
도 6과 관련하여 논의된 바와 같이, 로직(114)은 복수의 임계치, 예컨대 threshold_1, threshold_2 등에 액세스한다. 단지 예로서, 임계치들의 수는 적어도 0이 아닌 스로틀링 우선순위들을 갖는 컴포넌트들(104)의 수만큼 크다(예컨대, 동일하다). M개의 임계치들이 존재한다고 가정한다. threshold_1, threshold_2, ..., threshold_M이 감소하는 순서로 있다고 가정된다(예컨대, threshold_1 > threshold_2 > ... > threshold_M이다). 카운터 m은 임계치들을 추적한다.
868에서, 제약 헤드룸 파라미터 Rt는 예를 들어 도 8b의 방법(840)과 관련하여 논의된 바와 같이 추적된다.
872에서, 제약 헤드룸 파라미터 Rt가 threshold_m보다 작은지가 결정된다. 방법(860)의 제1 반복 동안, m은 1이다. 따라서, 872에서, 제약 헤드룸 파라미터 Rt가 threshold_1보다 작은지가 결정된다. 만약 그렇다면, 전력 헤드룸은 비교적 낮고, 적어도 하나의 컴포넌트가 스로틀링되어야 한다는 것을 의미한다.
872에서 "예"이면, 방법(860)은 876으로 진행하고, 여기서 컴포넌트들의 순서화에 기반하여, 컴포넌트(104)가 스로틀링을 위해 선택된다. 예를 들어, 가장 높은 스로틀링 우선순위를 갖는 컴포넌트(104)는 방법(860)의 제1 반복 동안 스로틀링을 위해 선택된다.
또한, 876에서, 선택된 컴포넌트는, 예를 들어 도 6 및 도 7의 섹션(720)과 관련하여 논의된 바와 같이, 예를 들어 컴포넌트의 주파수를 컴포넌트의 스로틀링 스칼라와 Rt의 곱만큼 감소시킴으로써 스로틀링된다. 880에서, 카운터 m이 증분되고, 방법(860)은 868로 루프백하고, 여기서 제약 헤드룸 파라미터 Rt가 추적된다.
또한, 872에서 "아니오"이면(예컨대, 제약 헤드룸 파라미터 Rt가 threshold_m보다 더 크면), 이것은 이용가능한 충분한 전력 헤드룸이 있다는 것을 의미한다. 방법(860)은 그 후 882로 진행하고, 여기서 임의의 컴포넌트가 현재 스로틀링되는지가 체크된다.
어떤 컴포넌트도 현재 스로틀링되지 않으면(예컨대, 882에서 "아니오"), 방법(860)은 868로 루프백하고, 여기서 제약 헤드룸 파라미터 Rt가 추적된다. 그러나, 882에서 "예"이면, 이것은 이용가능한 충분한 헤드룸이 있고, 하나 이상의 컴포넌트가 현재 스로틀링되고 있으며, 이제 언스로틀링될 수 있다는 것을 의미한다.
그 후(예컨대, 882에서 "예" 이후에) 방법(860)은 884로 진행하며, 여기서 컴포넌트는 컴포넌트들의 순서화에 기반하여 언스로틀링을 위해 선택된다. 예를 들어, 현재 스로틀링되는 컴포넌트들 중에서, 가장 높은 스로틀링 우선순위를 갖는 것이 언스로틀링을 위해 선택된다. 또한, 884에서, 선택된 컴포넌트는 예를 들어 컴포넌트의 주파수를 증가시킴으로써 언스로틀링된다.
886에서, 카운터 m이 감소되고(예컨대, m==m-1이고), 방법(860)은 868로 루프백하고, 여기서 제약 헤드룸 파라미터 Rt가 추적된다.
따라서, 도 8c는, 제약 헤드룸 파라미터 Rt를 다양한 임계치들과 비교하는 것에 기반하여, 컴포넌트들(104)을 선택적으로 스로틀링 및/또는 언스로틀링하는 것을 도시한다. 컴포넌트들(104)이 스로틀링되고/되거나 언스로틀링되는 순서는 컴포넌트들과 연관된 스로틀링 우선순위들에 기반한다.
도 9는 컴퓨터 시스템, 컴퓨팅 디바이스 또는 SoC(System-on-Chip)(2100)를 예시하며, 여기서, 컴퓨팅 디바이스(예컨대, 디바이스(100))의 다양한 컴포넌트들(예컨대, 컴포넌트들(104))을 스로틀링하는 순서 또는 시퀀스가, 일부 실시예들에 따라, 대응하는 스로틀링 우선순위들의 순서에 기반하여 선택될 수 있다. 임의의 다른 도면의 요소들과 동일한 참조 번호들(또는 이름들)을 갖는 도 9의 이러한 요소들은 설명된 것과 유사한 임의의 방식으로 동작 또는 기능할 수 있지만, 이에 제한되지 않는다는 점에 주목한다.
일부 실시예들에서, 컴퓨팅 디바이스(2100)는, 컴퓨팅 태블릿, 모바일 폰 또는 스마트 폰, 랩톱, 데스크톱, IOT 디바이스, 서버, 셋톱 박스, 무선 가능 e-리더 등과 같은 적절한 컴퓨팅 디바이스를 나타낸다. 특정 컴포넌트들이 일반적으로 도시되어 있으며, 이러한 디바이스의 모든 컴포넌트들이 컴퓨팅 디바이스(2100)에서 도시되지는 않는다는 점이 이해될 것이다.
일부 실시예들에서, 컴퓨팅 디바이스(2100)는 제1 프로세서(2110)를 포함한다. 본 개시내용의 다양한 실시예들은 무선 인터페이스와 같은 네트워크 인터페이스를 2170 내에 또한 포함할 수 있어서, 시스템 실시예가 무선 디바이스, 예를 들어 셀 폰 또는 개인 휴대 정보 단말기에 포함될 수 있다.
일 실시예에서, 프로세서(2110)는 마이크로프로세서들, 애플리케이션 프로세서들, 마이크로제어기들, 프로그래밍가능한 로직 디바이스들, 또는 다른 처리 수단과 같은 하나 이상의 물리적 디바이스를 포함할 수 있다. 프로세서(2110)에 의해 수행되는 처리 동작들은 애플리케이션 및/또는 디바이스 기능들이 실행되는 동작 플랫폼 또는 운영 체제의 실행을 포함한다. 처리 동작들은 인간 사용자 또는 다른 디바이스들과의 I/O에 관련된 동작들, 전력 관리에 관련된 동작들, 및/또는 컴퓨팅 디바이스(2100)를 다른 디바이스에 접속시키는 것에 관련된 동작들을 포함한다. 처리 동작들은 또한 오디오 I/O 및/또는 디스플레이 I/O에 관련된 동작들을 포함할 수 있다.
일 실시예에서, 컴퓨팅 디바이스(2100)는, 컴퓨팅 디바이스에 오디오 기능들을 제공하는 것과 연관된 하드웨어(예를 들어, 오디오 하드웨어 및 오디오 회로들) 및 소프트웨어(예를 들어, 드라이버들, 코덱들) 컴포넌트들을 나타내는 오디오 서브시스템(2120)을 포함한다. 오디오 기능들은 스피커 및/또는 헤드폰 출력뿐만 아니라 마이크로폰 입력을 포함할 수 있다. 이러한 기능들을 위한 디바이스들은 컴퓨팅 디바이스(2100)에 통합되거나, 또는 컴퓨팅 디바이스(2100)에 접속될 수 있다. 일 실시예에서, 사용자는 프로세서(2110)에 의해 수신되고 처리되는 오디오 명령들을 제공함으로써 컴퓨팅 디바이스(2100)와 상호작용한다.
디스플레이 서브시스템(2130)은 사용자가 컴퓨팅 디바이스(2100)와 상호작용하기 위한 시각적 및/또는 촉각적 디스플레이를 제공하는 하드웨어(예를 들어, 디스플레이 디바이스들) 및 소프트웨어(예를 들어, 드라이버들) 컴포넌트들을 나타낸다. 디스플레이 서브시스템(2130)은, 사용자에게 디스플레이를 제공하는데 이용되는 특정 스크린 또는 하드웨어 디바이스를 포함하는 디스플레이 인터페이스(2132)를 포함한다. 일 실시예에서, 디스플레이 인터페이스(2132)는 디스플레이와 관련된 적어도 일부 처리를 수행하기 위해 프로세서(2110)와 별도인 로직을 포함한다. 일 실시예에서, 디스플레이 서브시스템(2130)은 출력 및 입력 양자 모두를 사용자에게 제공하는 터치 스크린(또는 터치 패드) 디바이스를 포함한다.
I/O 제어기(2140)는 사용자와의 상호작용에 관련된 하드웨어 디바이스들 및 소프트웨어 컴포넌트들을 나타낸다. I/O 제어기(2140)는 오디오 서브시스템(2120) 및/또는 디스플레이 서브시스템(2130)의 일부인 하드웨어를 관리하도록 동작가능하다. 추가적으로, I/O 제어기(2140)는, 사용자가 시스템과 상호작용할 수 있는 컴퓨팅 디바이스(2100)에 접속하는 추가적인 디바이스들에 대한 접속 포인트를 예시한다. 예를 들어, 컴퓨팅 디바이스(2100)에 부착될 수 있는 디바이스들은 마이크로폰 디바이스들, 스피커 또는 스테레오 시스템들, 비디오 시스템들 또는 다른 디스플레이 디바이스들, 키보드 또는 키패드 디바이스들, 또는 특정 애플리케이션들과 함께 이용하기 위한 다른 I/O 디바이스들, 예컨대 카드 리더들 또는 다른 디바이스들을 포함할 수 있다.
전술한 바와 같이, I/O 제어기(2140)는 오디오 서브시스템(2120) 및/또는 디스플레이 서브시스템(2130)과 상호작용할 수 있다. 예를 들어, 마이크로폰 또는 다른 오디오 디바이스를 통한 입력은 컴퓨팅 디바이스(2100)의 하나 이상의 애플리케이션 또는 기능에 대한 입력 또는 명령들을 제공할 수 있다. 추가적으로, 오디오 출력이 디스플레이 출력 대신에 또는 그에 추가하여 제공될 수 있다. 다른 예로, 디스플레이 서브시스템(2130)이 터치 스크린을 포함한다면, 디스플레이 디바이스는 I/O 제어기(2140)에 의해 적어도 부분적으로 관리될 수 있는 입력 디바이스로서도 역할을 한다. I/O 제어기(2140)에 의해 관리되는 I/O 기능들을 제공하는, 컴퓨팅 디바이스(2100) 상의 추가 버튼들 또는 스위치들이 또한 존재할 수 있다.
일 실시예에서, I/O 제어기(2140)는, 가속도계들, 카메라들, 광 센서들 또는 다른 환경 센서들, 또는 컴퓨팅 디바이스(2100)에 포함될 수 있는 다른 하드웨어와 같은 디바이스들을 관리한다. 입력은 시스템에 환경 입력을 제공하여 그 동작들(예를 들어, 잡음에 대한 필터링, 휘도 검출에 대한 디스플레이들의 조정, 카메라에 대한 플래시의 적용 또는 다른 특징들)에 영향을 줄 뿐만 아니라, 직접 사용자 상호작용의 일부일 수 있다.
일 실시예에서, 컴퓨팅 디바이스(2100)는, 배터리 전력 사용량, 배터리의 충전, 및 전력 절약 동작과 관련된 특징들을 관리하는 전력 관리(2150)를 포함한다. 메모리 서브시스템(2160)은 컴퓨팅 디바이스(2100)에 정보를 저장하기 위한 메모리 디바이스들을 포함한다. 메모리는 비휘발성(메모리 디바이스에 대한 전력이 중단되는 경우에도 상태가 변하지 않음) 및/또는 휘발성(메모리 디바이스에 대한 전력이 중단되는 경우에 상태가 정의되지 않음(indeterminate)) 메모리 디바이스들을 포함할 수 있다. 메모리 서브시스템(2160)은 애플리케이션 데이터, 사용자 데이터, 음악, 사진들, 문서들 또는 다른 데이터뿐만 아니라, 컴퓨팅 디바이스(2100)의 애플리케이션들 및 기능들의 실행과 관련된 시스템 데이터(장기적이든지 또는 일시적이든지)를 저장할 수 있다. 일 실시예에서, 컴퓨팅 디바이스(2100)는 클록 신호를 생성하기 위한 클록 생성 서브시스템(2152)을 포함한다.
실시예들의 요소들은 컴퓨터 실행가능한 명령어들(예를 들어, 본 명세서에서 논의된 임의의 다른 프로세스들을 구현하기 위한 명령어들)을 저장하기 위한 머신 판독가능한 매체(예를 들어, 메모리(2160))로서 또한 제공된다. 머신 판독가능한 매체(예를 들어, 메모리(2160))는 플래시 메모리, 광학 디스크들, CD-ROM들, DVD ROM들, RAM들, EPROM들, EEPROM들, 자기 또는 광학 카드들, 상 변화 메모리(PCM), 또는 전자적 또는 컴퓨터 실행가능한 명령어들을 저장하기에 적합한 다른 유형들의 머신 판독가능한 매체를 포함할 수 있지만, 이에 제한되지는 않는다. 예를 들어, 본 개시내용의 실시예들은 원격 컴퓨터(예를 들어, 서버)로부터 요청 컴퓨터(예를 들어, 클라이언트)에게 통신 링크(예를 들어, 모뎀 또는 네트워크 접속)를 통하여 데이터 신호들에 의해 전송될 수 있는 컴퓨터 프로그램(예를 들어, BIOS)으로서 다운로드될 수 있다.
접속성(2170)은, 컴퓨팅 디바이스(2100)가 외부 디바이스들과 통신하는 것을 가능하게 하기 위한 하드웨어 디바이스들(예를 들어, 무선 및/또는 유선 커넥터들 및 통신 하드웨어) 및 소프트웨어 컴포넌트들(예를 들어, 드라이버들, 프로토콜 스택들)을 포함한다. 컴퓨팅 디바이스(2100)는 다른 컴퓨팅 디바이스들, 무선 액세스 포인트들 또는 기지국들뿐만 아니라, 헤드셋들, 프린터들, 또는 다른 디바이스들과 같은 주변기기들 등의 별개의 디바이스들일 수 있다.
접속성(2170)은 복수의 상이한 유형들의 접속성을 포함할 수 있다. 일반화하기 위해, 컴퓨팅 디바이스(2100)는 셀룰러 접속성(2172) 및 무선 접속성(2174)을 갖는 것으로 예시되어 있다. 셀룰러 접속성(2172)은 일반적으로 GSM(global system for mobile communications)이나 그 변형들 또는 파생물들, CDMA(code division multiple access)나 그 변형들 또는 파생물들, TDM(time division multiplexing)이나 그 변형들 또는 파생물들, 또는 다른 셀룰러 서비스 표준들을 통해 제공되는 것과 같이, 무선 캐리어들에 의해 제공되는 셀룰러 네트워크 접속성을 지칭한다. 무선 접속성(또는 무선 인터페이스)(2174)은 셀룰러가 아닌 무선 접속성을 지칭하며, (예컨대, 블루투스, 근거리(Near Field) 등과 같은) 개인 영역 네트워크들, (Wi-Fi와 같은) 로컬 영역 네트워크들, 및/또는 (WiMax와 같은) 광역 네트워크들, 또는 다른 무선 통신을 포함할 수 있다.
주변기기 접속들(2180)은, 주변기기 접속들을 구축하기 위한 하드웨어 인터페이스들과 커넥터들뿐만 아니라 소프트웨어 컴포넌트들(예를 들어, 드라이버들, 프로토콜 스택들)을 포함한다. 컴퓨팅 디바이스(2100)가 다른 컴퓨팅 디바이스들에 대한 주변기기 디바이스("로(to)"(2182))일 수 있다는 것 뿐만 아니라, 그것에 접속된 주변기기 디바이스들("로부터(from)"(2184))을 가질 수 있다는 것 양자 모두가 이해될 것이다. 컴퓨팅 디바이스(2100)는 일반적으로 컴퓨팅 디바이스(2100) 상의 콘텐츠를 관리하는 것(예를 들어, 다운로드 및/또는 업로드, 변경, 동기화)과 같은 목적들로 다른 컴퓨팅 디바이스들에 접속하기 위한 "도킹" 커넥터를 갖는다. 추가적으로, 도킹 커넥터는, 컴퓨팅 디바이스(2100)가 예를 들어 시청각 또는 다른 시스템들에 대한 콘텐츠 출력을 제어할 수 있게 하는 특정 주변기기들에 컴퓨팅 디바이스(2100)가 접속하는 것을 허용할 수 있다.
독점 도킹 커넥터 또는 다른 독점 접속 하드웨어에 추가하여, 컴퓨팅 디바이스(2100)는 공통 또는 표준 기반 커넥터들을 통해 주변기기 접속들(2180)을 구축할 수 있다. 일반 유형들은, (다수의 상이한 하드웨어 인터페이스들 중 임의의 것을 포함할 수 있는) USB(Universal Serial Bus) 커넥터, MDP(MiniDisplayPort)를 포함한 DisplayPort, HDMI(High Definition Multimedia Interface), 파이어와이어(Firewire) 또는 다른 유형들을 포함할 수 있다.
일부 실시예들에서, 컴퓨팅 디바이스(2100)는 도 1 내지 도 8의 컴포넌트들(104a, ..., 104N)을 포함할 수 있다. 예를 들어, 컴포넌트들(104a, ..., 104N)의 개별 컴포넌트들은 프로세서(2110)의 하나 이상의 처리 코어, 메모리 서브시스템(2160)의 메모리, 통신 인터페이스, 또는 컴퓨팅 디바이스(2100)의 임의의 적절한 컴포넌트를 포함할 수 있다. 컴퓨팅 디바이스(2100)는, 도 1 내지 도 8c와 관련하여 논의된 바와 같이, 로직(110, 114) 및 제어기(505)를 포함하는 PMU(455)를 포함할 수 있다.
본 명세서에서, "실시예", "일 실시예", "일부 실시예들" 또는 "다른 실시예들"에 대한 언급은 이러한 실시예들과 관련해서 설명된 특정 특징, 구조, 또는 특성이 반드시 모든 실시예들은 아니지만 적어도 일부 실시예들에 포함됨을 의미한다. "실시예", "일 실시예", 또는 "일부 실시예들"의 다양한 출현들은 모두가 반드시 동일한 실시예들을 참조하는 것은 아니다. 본 명세서에서 컴포넌트, 특징, 구조, 또는 특성이 포함될 수 있다고 적시하는 경우, 그 특정 컴포넌트, 특징, 구조, 또는 특성이 포함되도록 요구되지는 않는다. 본 명세서 또는 청구항에서 어떤 요소를 언급하는 경우, 그것은 요소들 중 하나만이 있음을 의미하지는 않는다. 본 명세서 또는 청구항들에서 "추가" 요소를 언급하는 경우, 그것은 하나보다 많은 추가 요소가 있다는 것을 배제하지 않는다.
또한, 특정 특징들, 구조들, 기능들, 또는 특성들은 하나 이상의 실시예에서 임의의 적합한 방식으로 조합될 수 있다. 예를 들어, 제1 실시예 및 제2 실시예와 연관된 특정 특징들, 구조들, 기능들 또는 특성들이 서로 배타적이지 않은 어느 곳에서든 제1 실시예가 제2 실시예와 조합될 수 있다.
본 개시내용이 그 특정 실시예들과 연계하여 설명되었지만, 전술한 설명에 비추어 보면 관련 기술분야의 통상의 기술자에게 이런 실시예들의 많은 대안들, 수정들, 및 변형들이 명백할 것이다. 본 개시내용의 실시예들은 첨부된 청구항들의 넓은 범위 내에 부합하는 이러한 모든 대안들, 수정들, 및 변형들을 포괄하도록 의도된다.
또한, IC(integrated circuit) 칩들 및 다른 컴포넌트들로의 잘 알려진 전력/접지 접속들은, 예시 및 논의를 간략화하고 개시내용을 불명료하게 하지 않기 위해, 제시된 도면들 내에 도시되거나 도시되지 않을 수 있다. 또한, 배열들은, 개시내용을 불명료하게 하는 것을 피하기 위해 그리고 이러한 블록도 배열들의 구현과 관련한 상세들이 개시내용이 그 내에서 구현될 플랫폼에 크게 의존한다는 사실(즉, 이러한 상세들이 관련 기술분야의 통상의 기술자의 이해 범위 내에 충분히 있을 것이라는 사실)을 고려하여 블록도 형태로 도시될 수 있다. 본 개시내용의 예시적 실시예들을 설명하기 위해서 특정 상세들(예를 들어, 회로들)이 제시되어 있지만, 관련 기술분야의 통상의 기술자라면 본 개시내용이 이들 특정 상세들 없이 또는 이들 특정 상세들의 변형에 의해 실시될 수 있음을 알아야 한다. 따라서, 본 설명은 제한하기 위한 것이 아니라 예시적인 것으로 간주되어야 한다.
다음의 예시적인 항들은 추가 실시예들과 관련된다. 이 예시적인 항들에서의 상세들은 하나 이상의 실시예에서의 어디에서든 이용될 수 있다. 본 명세서에 설명된 장치의 모든 임의적 특징들은 방법 또는 프로세스와 관련하여 또한 구현될 수 있다.
예 1. 장치는, 복수의 컴포넌트 - 개별 컴포넌트는 복수의 스로틀링 우선순위 중 대응하는 스로틀링 우선순위를 가짐 -; 및 복수의 스로틀링 우선순위를 나타내는 하나 이상의 파라미터를 수신하고, 복수의 컴포넌트 중 하나 이상을 선택적으로 스로틀링하기 위한 로직을 포함하며, 복수의 컴포넌트 중 하나 이상이 스로틀링될 순서는 복수의 스로틀링 우선순위에 기반한다.
예 2. 예 1 또는 임의의 다른 예의 장치에서, 복수의 컴포넌트 중 제1 컴포넌트는 제1 스로틀링 우선순위를 갖고; 복수의 컴포넌트 중 제2 컴포넌트는 제1 스로틀링 우선순위보다 낮은 제2 스로틀링 우선순위를 갖고; 로직은, 제2 스로틀링 우선순위가 제1 스로틀링 우선순위보다 낮은 것에 응답하여, 제2 컴포넌트 이전에 제1 컴포넌트를 스로틀링하는 것이다.
예 3. 예 1 또는 임의의 다른 예의 장치에서, 로직은 대응하는 복수의 스로틀링 우선순위의 순서에 기반하여 복수의 컴포넌트를 제1 순서로 순서화하는 것이고; 복수의 컴포넌트 중 하나 이상은 제1 순서로 스로틀링될 것이다.
예 4. 예 3 또는 임의의 다른 예의 장치에서, 제1 순서는 복수의 스로틀링 우선순위의 내림차순에 대응한다.
예 5. 예 3 또는 임의의 다른 예의 장치에서, 로직은 복수의 컴포넌트 중 하나 이상을 제1 순서와 반대인 제2 순서로 언스로틀링하는 것이다.
예 6. 예 1 또는 임의의 다른 예의 장치에서, 로직은 제1 로직이고, 장치는, 운영 체제(OS), 기본 입력/출력 시스템(BIOS), 또는 사용자 인터페이스 중 하나 또는 모두로부터 수신된 입력에 기반하여 복수의 스로틀링 우선순위를 대응하는 복수의 컴포넌트에 각각 할당하기 위한 제2 로직을 포함한다.
예 7. 예 6 또는 임의의 다른 예의 장치에서, OS는 입력을 하나 이상의 레지스터에 저장하는 것이고; 제2 로직은 하나 이상의 레지스터로부터 입력을 수신하고, 하나 이상의 레지스터를 통해 OS로부터 수신된 입력에 기반하여 복수의 스로틀링 우선순위를 대응하는 복수의 컴포넌트에 각각 할당하는 것이다.
예 8. 예 1 또는 임의의 다른 예의 장치에서, 복수의 컴포넌트에 이용가능한 제약 헤드룸을 나타내는 헤드룸 파라미터를 업데이트하기 위한 회로를 더 포함하고, 로직은 헤드룸 파라미터가 임계값보다 낮은 것에 응답하여 컴포넌트를 스로틀링하는 것이다.
예 9. 예 8 또는 임의의 다른 예의 장치에서, 제약 헤드룸은 복수의 컴포넌트에 이용가능한 전력 예산 및 복수의 컴포넌트에 의해 소비되는 전력의 합에 기반한다.
예 10. 예 8 또는 임의의 다른 예의 장치에서, 복수의 컴포넌트 중 제1 컴포넌트는 대응하는 제1 스로틀링 스케일링 계수를 갖고; 제1 컴포넌트가 스로틀링되는 것에 응답하여, 제1 컴포넌트는 제1 스로틀링 스케일링 계수와 헤드룸 파라미터의 곱만큼 제1 컴포넌트의 동작 주파수를 감소시키는 것이다.
예 11. 예 1 또는 임의의 다른 예의 장치에서, 복수의 컴포넌트 중 제1 컴포넌트는 제1 전압/주파수 도메인 내의 제1 복수의 회로를 포함하고; 복수의 컴포넌트 중 제2 컴포넌트는 제2 전압/주파수 도메인 내의 제2 복수의 회로를 포함한다.
예 12. 예 1 또는 임의의 다른 예의 장치에서, 복수의 스로틀링 우선순위를 저장하기 위한 하나 이상의 레지스터를 더 포함한다.
예 13. 시스템은, 명령어들을 저장하기 위한 메모리; 메모리에 결합되어 명령어들을 실행시키기 위한 프로세서; 프로세서와 다른 시스템 사이의 통신을 용이하게 하기 위한 무선 인터페이스 - 시스템의 복수의 컴포넌트 중 적어도 하나는 복수의 스로틀링 우선순위 중 대응하는 스로틀링 우선순위를 갖고, 복수의 컴포넌트는 메모리, 프로세서, 또는 무선 인터페이스 중 하나 이상을 포함함 -; 및 복수의 스로틀링 우선순위에 기반하여, 복수의 컴포넌트 중 제1 컴포넌트를 스로틀링하기 위한 로직을 포함한다.
예 14. 예 13 또는 임의의 다른 예의 시스템에서, 로직은, 제1 컴포넌트가 스로틀링되지 않은 컴포넌트들의 스로틀링 우선순위들 중에서 가장 높은 스로틀링 우선순위를 갖는다고 결정하고; 제1 컴포넌트가 가장 높은 스로틀링 우선순위를 갖는 것에 기반하여, 스로틀링을 위해 제1 컴포넌트를 선택하는 것이다.
예 15. 예 13 또는 임의의 다른 예의 시스템에서, 로직은, 복수의 컴포넌트에 이용가능한 예산과 복수의 컴포넌트에 의한 소비의 합 사이의 차이를 나타내는 파라미터를 수신하는 것이고, 예산은 전력 예산, 전류 예산, 또는 신뢰도 예산 중 하나이다.
예 16. 예 15 또는 임의의 다른 예의 시스템에서, 로직은, 파라미터가 임계값보다 작은 것에 응답하여, 제1 컴포넌트를 스로틀링하는 것이다.
예 17. 예 15 또는 임의의 다른 예의 시스템에서, 로직은, 제1 컴포넌트에 대응하는 스로틀링 스케일링 계수를 수신하고; 스로틀링 스케일링 계수와 파라미터의 곱만큼 제1 컴포넌트의 동작 주파수를 감소시키도록 제1 컴포넌트를 스로틀링하는 것이다.
예 18. 예 15 또는 임의의 다른 예의 시스템에서, 로직은 제1 컴포넌트로의 입력 전압을 감소시키도록 제1 컴포넌트를 스로틀링하는 것이다.
예 19. 비일시적 컴퓨터 판독가능한 저장 매체는 명령어들을 저장하고, 명령어들은, 프로세서에 의해 실행될 때, 프로세서로 하여금, 대응하는 복수의 컴포넌트에 대한 복수의 스로틀링 우선순위를 수신하게 하고; 복수의 스로틀링 우선순위에 기반하여, 컴포넌트들이 스로틀링될 시퀀스를 결정하게 한다.
예 20. 예 19 또는 임의의 다른 예의 비일시적 컴퓨터 판독가능한 저장 매체에서, 컴포넌트들이 스로틀링될 시퀀스는 복수의 스로틀링 우선순위의 대응하는 내림 시퀀스에 기반한다.
예 21. 예 19 또는 임의의 다른 예의 비일시적 컴퓨터 판독가능한 저장 매체에서, 복수의 컴포넌트 중 제1 컴포넌트에는 제1 스로틀링 우선순위가 할당되고; 복수의 컴포넌트 중 제2 컴포넌트에는 제1 스로틀링 우선순위보다 낮은 제2 스로틀링 우선순위가 할당되고; 제2 스로틀링 우선순위가 제1 스로틀링 우선순위보다 낮은 것에 응답하여, 제1 컴포넌트가 제2 컴포넌트 이전에 스로틀링된다.
독자가 기술적 개시내용의 본질과 요지를 확인할 수 있도록 요약서가 제공된다. 요약서는 청구항들의 범위나 의미를 제한하는데 이용되지는 않을 것이라는 이해 하에 제출된다. 이하의 청구항들은, 각각의 청구항이 개별 실시예로서 그 스스로 성립하면서, 이로써 상세한 설명에 통합된다.

Claims (23)

  1. 장치로서,
    복수의 컴포넌트 - 개별 컴포넌트는 복수의 스로틀링(throttling) 우선순위 중 대응하는 스로틀링 우선순위를 가짐 -; 및
    상기 복수의 스로틀링 우선순위를 나타내는 하나 이상의 파라미터를 수신하고, 상기 복수의 컴포넌트 중 하나 이상을 선택적으로 스로틀링하기 위한 로직
    을 포함하며,
    상기 복수의 컴포넌트 중 하나 이상이 스로틀링될 순서는 상기 복수의 스로틀링 우선순위에 기반하는, 장치.
  2. 제1항에 있어서,
    상기 복수의 컴포넌트 중 제1 컴포넌트는 제1 스로틀링 우선순위를 갖고;
    상기 복수의 컴포넌트 중 제2 컴포넌트는 상기 제1 스로틀링 우선순위보다 낮은 제2 스로틀링 우선순위를 갖고;
    상기 로직은, 상기 제2 스로틀링 우선순위가 상기 제1 스로틀링 우선순위보다 낮은 것에 응답하여, 상기 제2 컴포넌트 이전에 상기 제1 컴포넌트를 스로틀링하는 것인, 장치.
  3. 제1항에 있어서,
    상기 로직은 대응하는 복수의 스로틀링 우선순위의 순서에 기반하여 상기 복수의 컴포넌트를 제1 순서로 순서화하는 것이고;
    상기 복수의 컴포넌트 중 하나 이상은 상기 제1 순서로 스로틀링될 것인, 장치.
  4. 제3항에 있어서,
    상기 제1 순서는 상기 복수의 스로틀링 우선순위의 내림차순에 대응하는, 장치.
  5. 제3항에 있어서,
    상기 로직은 상기 복수의 컴포넌트 중 하나 이상을 상기 제1 순서와 반대인 제2 순서로 언스로틀링(un-throttle)하는 것인, 장치.
  6. 제1항에 있어서,
    상기 로직은 제1 로직이고,
    상기 장치는, 운영 체제(OS), 기본 입력/출력 시스템(BIOS), 또는 사용자 인터페이스 중 하나 또는 모두로부터 수신된 입력에 기반하여 상기 복수의 스로틀링 우선순위를 대응하는 복수의 컴포넌트에 각각 할당하기 위한 제2 로직을 포함하는, 장치.
  7. 제6항에 있어서,
    상기 OS는 상기 입력을 하나 이상의 레지스터에 저장하는 것이고;
    상기 제2 로직은 상기 하나 이상의 레지스터로부터 상기 입력을 수신하고, 상기 하나 이상의 레지스터를 통해 상기 OS로부터 수신된 상기 입력에 기반하여 상기 복수의 스로틀링 우선순위를 상기 대응하는 복수의 컴포넌트에 각각 할당하는 것인, 장치.
  8. 제1항에 있어서,
    상기 복수의 컴포넌트에 이용가능한 제약 헤드룸을 나타내는 헤드룸 파라미터를 업데이트하기 위한 회로를 더 포함하고,
    상기 로직은 상기 헤드룸 파라미터가 임계값보다 낮은 것에 응답하여 컴포넌트를 스로틀링하는 것인, 장치.
  9. 제8항에 있어서,
    상기 제약 헤드룸은 상기 복수의 컴포넌트에 이용가능한 전력 예산(budget) 및 상기 복수의 컴포넌트에 의해 소비되는 전력의 합에 기반하는, 장치.
  10. 제8항에 있어서,
    상기 복수의 컴포넌트 중 제1 컴포넌트는 대응하는 제1 스로틀링 스케일링 계수를 갖고;
    상기 제1 컴포넌트가 스로틀링되는 것에 응답하여, 상기 제1 컴포넌트는 상기 제1 스로틀링 스케일링 계수와 상기 헤드룸 파라미터의 곱만큼 상기 제1 컴포넌트의 동작 주파수를 감소시키는 것인, 장치.
  11. 제1항에 있어서,
    상기 복수의 컴포넌트 중 제1 컴포넌트는 제1 전압/주파수 도메인 내의 제1 복수의 회로를 포함하고;
    상기 복수의 컴포넌트 중 제2 컴포넌트는 제2 전압/주파수 도메인 내의 제2 복수의 회로를 포함하는, 장치.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서,
    상기 복수의 스로틀링 우선순위를 저장하기 위한 하나 이상의 레지스터를 더 포함하는, 장치.
  13. 시스템으로서
    명령어들을 저장하기 위한 메모리;
    상기 메모리에 결합되어 상기 명령어들을 실행시키기 위한 프로세서;
    상기 프로세서와 다른 시스템 사이의 통신을 용이하게 하기 위한 무선 인터페이스 - 상기 시스템의 복수의 컴포넌트 중 적어도 하나는 복수의 스로틀링 우선순위 중 대응하는 스로틀링 우선순위를 갖고, 상기 복수의 컴포넌트는 상기 메모리, 상기 프로세서, 또는 상기 무선 인터페이스 중 하나 이상을 포함함 -; 및
    상기 복수의 스로틀링 우선순위에 기반하여, 상기 복수의 컴포넌트 중 제1 컴포넌트를 스로틀링하기 위한 로직
    을 포함하는, 시스템.
  14. 제13항에 있어서,
    상기 로직은,
    상기 제1 컴포넌트가 스로틀링되지 않은 컴포넌트들의 스로틀링 우선순위들 중에서 가장 높은 스로틀링 우선순위를 갖는다고 결정하고;
    상기 제1 컴포넌트가 상기 가장 높은 스로틀링 우선순위를 갖는 것에 기반하여, 스로틀링을 위해 상기 제1 컴포넌트를 선택하는 것인, 시스템.
  15. 제13항에 있어서,
    상기 로직은, 상기 복수의 컴포넌트에 이용가능한 예산과 상기 복수의 컴포넌트에 의한 소비의 합 사이의 차이를 나타내는 파라미터를 수신하는 것이고, 상기 예산은 전력 예산, 전류 예산, 또는 신뢰도 예산 중 하나인, 시스템.
  16. 제15항에 있어서,
    상기 로직은, 상기 파라미터가 임계값보다 작은 것에 응답하여, 상기 제1 컴포넌트를 스로틀링하는 것인, 시스템.
  17. 제15항에 있어서,
    상기 로직은,
    상기 제1 컴포넌트에 대응하는 스로틀링 스케일링 계수를 수신하고;
    상기 스로틀링 스케일링 계수와 상기 파라미터의 곱만큼 상기 제1 컴포넌트의 동작 주파수를 감소시키도록 상기 제1 컴포넌트를 스로틀링하는 것인, 시스템.
  18. 제15항 내지 제17항 중 어느 한 항에 있어서,
    상기 로직은 상기 제1 컴포넌트로의 입력 전압을 감소시키도록 상기 제1 컴포넌트를 스로틀링하는 것인, 시스템.
  19. 방법으로서,
    대응하는 복수의 컴포넌트에 대한 복수의 스로틀링 우선순위를 수신하는 단계; 및
    상기 복수의 스로틀링 우선순위에 기반하여, 컴포넌트들이 스로틀링될 시퀀스를 결정하는 단계
    를 포함하는, 방법.
  20. 제19항에 있어서,
    상기 컴포넌트들이 스로틀링될 상기 시퀀스는 상기 복수의 스로틀링 우선순위의 대응하는 내림 시퀀스에 기반하는, 방법.
  21. 제19항 또는 제20항에 있어서,
    상기 복수의 컴포넌트 중 제1 컴포넌트에는 제1 스로틀링 우선순위가 할당되고;
    상기 복수의 컴포넌트 중 제2 컴포넌트에는 상기 제1 스로틀링 우선순위보다 낮은 제2 스로틀링 우선순위가 할당되고;
    상기 제2 스로틀링 우선순위가 상기 제1 스로틀링 우선순위보다 낮은 것에 응답하여, 상기 제1 컴포넌트가 상기 제2 컴포넌트 이전에 스로틀링되는, 방법.
  22. 프로세서에 의해 실행될 때, 상기 프로세서로 하여금 제19항 내지 제21항 중 어느 한 항에 따른 방법을 수행하게 하는 명령어들을 저장하는, 비일시적 컴퓨터 판독가능한 저장 매체.
  23. 제19항 내지 제21항 중 어느 한 항에 따른 방법을 수행하기 위한 수단을 포함하는, 장치.
KR1020207034863A 2018-09-27 2019-06-25 우선순위 순서화를 이용한 컴포넌트들의 스로틀링 KR20210050489A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020247002237A KR20240012618A (ko) 2018-09-27 2019-06-25 우선순위 순서화를 이용한 컴포넌트들의 스로틀링

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/144,919 2018-09-27
US16/144,919 US11099628B2 (en) 2018-09-27 2018-09-27 Throttling of components using priority ordering
PCT/US2019/039067 WO2020068207A1 (en) 2018-09-27 2019-06-25 Throttling of components using priority ordering

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020247002237A Division KR20240012618A (ko) 2018-09-27 2019-06-25 우선순위 순서화를 이용한 컴포넌트들의 스로틀링

Publications (1)

Publication Number Publication Date
KR20210050489A true KR20210050489A (ko) 2021-05-07

Family

ID=65229511

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020247002237A KR20240012618A (ko) 2018-09-27 2019-06-25 우선순위 순서화를 이용한 컴포넌트들의 스로틀링
KR1020207034863A KR20210050489A (ko) 2018-09-27 2019-06-25 우선순위 순서화를 이용한 컴포넌트들의 스로틀링

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020247002237A KR20240012618A (ko) 2018-09-27 2019-06-25 우선순위 순서화를 이용한 컴포넌트들의 스로틀링

Country Status (5)

Country Link
US (3) US11099628B2 (ko)
KR (2) KR20240012618A (ko)
CN (2) CN112753004A (ko)
DE (1) DE112019002524T5 (ko)
WO (1) WO2020068207A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11099628B2 (en) * 2018-09-27 2021-08-24 Intel Corporation Throttling of components using priority ordering
JP7146622B2 (ja) * 2018-12-26 2022-10-04 ルネサスエレクトロニクス株式会社 半導体装置、温度制御装置、及び方法
TWI723332B (zh) * 2019-01-22 2021-04-01 華碩電腦股份有限公司 電腦系統管理方法與電腦系統
US11442529B2 (en) * 2019-05-15 2022-09-13 Intel Corporation System, apparatus and method for dynamically controlling current consumption of processing circuits of a processor
US11513576B2 (en) * 2019-06-01 2022-11-29 Apple Inc. Coherent power management system for managing clients of varying power usage adaptability
US11507158B2 (en) * 2019-07-03 2022-11-22 Advanced Micro Devices, Inc. Electrical design current throttling
US11372467B2 (en) 2020-06-27 2022-06-28 Intel Corporation System for power throttling
US20220260639A1 (en) * 2021-02-17 2022-08-18 Dell Products, L.P. Systems and methods for managing use of portable ihs batteries
US11625088B2 (en) 2021-07-07 2023-04-11 Microsoft Technology Licensing, Llc Peripheral interface power allocation
US20230176645A1 (en) * 2021-12-06 2023-06-08 Mediatek Inc. Maximum current suppression for power management in a multi-core system
US11921564B2 (en) 2022-02-28 2024-03-05 Intel Corporation Saving and restoring configuration and status information with reduced latency

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7562234B2 (en) 2005-08-25 2009-07-14 Apple Inc. Methods and apparatuses for dynamic power control
US20070180280A1 (en) * 2006-02-01 2007-08-02 Bolan Joseph E Controlling the allocation of power to a plurality of computers whose supply of power is managed by a common power manager
US8156363B2 (en) * 2007-07-02 2012-04-10 Panasonic Corporation Information processing device and mobile phone including comparison of power consumption information and remaining power
US20090070611A1 (en) * 2007-09-12 2009-03-12 International Business Machines Corporation Managing Computer Power Consumption In A Data Center
US8006108B2 (en) * 2007-11-08 2011-08-23 International Business Machines Corporation Dynamic selection of group and device power limits
US20090132842A1 (en) * 2007-11-15 2009-05-21 International Business Machines Corporation Managing Computer Power Consumption In A Computer Equipment Rack
US20110225593A1 (en) * 2010-03-11 2011-09-15 International Business Machines Corporation Interface-based environmentally sustainable computing
US8762752B2 (en) 2011-09-20 2014-06-24 American Megatrends, Inc. System and method for remotely managing electric power usage of target computers
US8468251B1 (en) 2011-12-29 2013-06-18 Joyent, Inc. Dynamic throttling of access to computing resources in multi-tenant systems
US9104873B1 (en) * 2012-05-21 2015-08-11 Symantec Corporation Systems and methods for determining whether graphics processing units are executing potentially malicious processes
US9261935B2 (en) * 2013-07-01 2016-02-16 Advanced Micro Devices, Inc. Allocating power to compute units based on energy efficiency
US10386900B2 (en) * 2013-09-24 2019-08-20 Intel Corporation Thread aware power management
US20150119103A1 (en) 2013-10-29 2015-04-30 Qualcomm Incorporated Priority Management for Multiple Concurrently Active Technologies
US9530174B2 (en) 2014-05-30 2016-12-27 Apple Inc. Selective GPU throttling
US9436628B2 (en) * 2014-05-30 2016-09-06 Apple Inc. Thermal mitigation using selective I/O throttling
US9585100B2 (en) 2014-09-02 2017-02-28 Apple Inc. Cold temperature power throttling at a mobile computing device
US9853905B2 (en) * 2015-04-02 2017-12-26 Honda Motor Co., Ltd. System and method for wireless connected device prioritization in a vehicle
US10234919B2 (en) * 2015-09-21 2019-03-19 Microsoft Technology Licensing, Llc Accessory-based power distribution
US10423204B2 (en) * 2017-03-15 2019-09-24 International Business Machines Corporation Enforcing power caps on computing devices with multiple power feeds
CN108932049A (zh) * 2017-05-22 2018-12-04 鸿富锦精密工业(武汉)有限公司 主板插槽供电电路
US10871818B1 (en) * 2017-09-11 2020-12-22 Apple Inc. Component power consumption management determining whether the power availability of the power source exceeds the expected power consumption
US10649813B2 (en) * 2018-03-29 2020-05-12 Intel Corporation Arbitration across shared memory pools of disaggregated memory devices
US11099628B2 (en) * 2018-09-27 2021-08-24 Intel Corporation Throttling of components using priority ordering

Also Published As

Publication number Publication date
US11099628B2 (en) 2021-08-24
US20220043504A1 (en) 2022-02-10
US20230393646A1 (en) 2023-12-07
US20190041971A1 (en) 2019-02-07
WO2020068207A1 (en) 2020-04-02
CN117850571A (zh) 2024-04-09
DE112019002524T5 (de) 2021-03-11
KR20240012618A (ko) 2024-01-29
CN112753004A (zh) 2021-05-04

Similar Documents

Publication Publication Date Title
KR20210050489A (ko) 우선순위 순서화를 이용한 컴포넌트들의 스로틀링
US20210304096A1 (en) Device, system and method to dynamically prioritize a data flow based on user interest in a task
KR20140128118A (ko) 애플리케이션 프로세서 및 이의 동적 온도 관리 방법
KR20150063543A (ko) 프로세서의 구성가능한 피크 성능 제한들의 제어
KR20150107448A (ko) 태스크 마이그레이션 방법 및 장치
US20180373287A1 (en) Dynamic maximum frequency limit for processing core groups
US11269396B2 (en) Per-core operating voltage and/or operating frequency determination based on effective core utilization
EP3920006A1 (en) Granular power management of display devices based on user interest
EP3882740B1 (en) Workload based adaptive voltage and frequency control apparatus and method
CN117597649A (zh) 热优化功率输送
KR20210158746A (ko) Usb 타입-c 서브시스템 전력 관리
JP2022036904A (ja) エネルギー効率の良いコア電圧選択装置及び方法
CN116489437A (zh) 多显示器视频同步
US11372464B2 (en) Adaptive parameterization for maximum current protection
EP3923120A1 (en) Fast dynamic capacitance, frequency, and/or voltage throttling apparatus and method
JP2022097390A (ja) 動的usb-cモード選択ospmポリシー方法及び装置
JP2021100237A (ja) 高性能高速Mux−Dスキャンフリップフロップ
US9658674B2 (en) Mobile system optimization method
JP2023508841A (ja) 寄生容量が低減された低電力フリップフロップ
CN113625859A (zh) 智能预测处理器空闲时间的装置及方法
US20230367368A1 (en) Power sharing by multiple expansion cards
US20230088725A1 (en) Device, method and system to indicate an amount of a load current provided by power supply units
CN117200788A (zh) 利用延迟线电路提供自适应时钟调制的设备、系统和方法
CN115079809A (zh) 降低待机功率的装置和方法
CN116529694A (zh) 用于通用串行总线(usb)类型-c端口的功率管理

Legal Events

Date Code Title Description
A201 Request for examination
A107 Divisional application of patent