KR20240004362A - 유휴 지속기간 이력에 기초한 저전력 상태 선택 - Google Patents

유휴 지속기간 이력에 기초한 저전력 상태 선택 Download PDF

Info

Publication number
KR20240004362A
KR20240004362A KR1020237036803A KR20237036803A KR20240004362A KR 20240004362 A KR20240004362 A KR 20240004362A KR 1020237036803 A KR1020237036803 A KR 1020237036803A KR 20237036803 A KR20237036803 A KR 20237036803A KR 20240004362 A KR20240004362 A KR 20240004362A
Authority
KR
South Korea
Prior art keywords
sleep state
duration
sleep
component
state
Prior art date
Application number
KR1020237036803A
Other languages
English (en)
Inventor
카르씨크 라오
인드라니 파울
도니 이
올렉산드르 호도르코프스키
파울라 로사 피가 레오나르도 데
원제 최
다나 쥐. 루이스
스리람 삼바무르씨
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
에이티아이 테크놀로지스 유엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드, 에이티아이 테크놀로지스 유엘씨 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20240004362A publication Critical patent/KR20240004362A/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/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/3228Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
    • 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
    • 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)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Power Sources (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)

Abstract

장치(100)는 프로세서(102), 슬립 상태 지속기간 예측 모듈(404), 및 시스템 관리 유닛(316)을 포함한다. 슬립 상태 지속기간 예측 모듈은 본 장치의 구성요소에 대한 슬립 상태 지속기간(416)을 예측하도록 구성된다. 시스템 관리 유닛은 예측된 슬립 상태 지속기간과 적어도 하나의 지속기간 임계치의 비교에 기초하여 복수의 슬립 상태들로부터 선택된 슬립 상태로 구성요소를 트랜지션한다. 복수의 슬립 상태들의 각 슬립 상태는 복수의 슬립 상태들의 이전 슬립 상태보다 더 낮은 전력 상태이다.

Description

유휴 지속기간 이력에 기초한 저전력 상태 선택
최신 컴퓨터 시스템들은 통상적으로 여러 전력 관리 상태들을 지원할 수 있다. 작동 시스템 상태는 일반적으로 시스템이 완전히 사용가능하고 완전히 동력을 공급받는 상태를 기술한다. 시스템 구성요소들 중 일부 또는 전부가 사용되고 있지 않은 경우와 같은 일부 조건들 하에서, 작동 상태로부터 더 낮은 전력 시스템 상태에 진입함으로써 구성요소들 중 일부 또는 전부에 대해 전력이 감소된다.
본 개시는 첨부 도면들을 참조하여 당업자들에게 더 잘 이해될 수 있고, 이의 많은 특징들 및 이점들이 분명해진다. 상이한 도면들에서의 동일한 참조 부호들의 사용은 유사하거나 동일한 항목들을 나타낸다.
도 1은 일부 실시예들에 따른 예시적인 처리 시스템의 블록도이다.
도 2는 일부 실시예들에 따른 도 1의 처리 디바이스의 추가적인 세부사항을 예시하는 블록도이다.
도 3은 일부 실시예들에 따른 예시적인 시스템-온-칩 디바이스의 블록도이다.
도 4는 일부 실시예들에 따른 예시적인 시스템 관리 유닛의 블록도이다.
도 5는 일부 실시예들에 따른 처리 디바이스의 구성요소들을 바로 더 깊은 슬립 상태들(sleep states)로 트랜지션(transition)하는 전체 예시적인 방법을 예시하는 흐름도이다.
도 6은 일부 실시예들에 따른 도 5의 블록(502)에 예시된 지속기간 모니터링 프로세스에 대한 더 상세한 방법을 예시하는 흐름도이다.
도 7은 일부 실시예들에 따른 두 가지 상이한 슬립 상태들에 대한 예시적인 타이밍 시퀀스들을 예시한다.
도 8은 일부 실시예들에 따른 도 5의 블록(504)에 예시된 지속기간 예측 프로세스에 대한 더 상세한 방법을 예시하는 흐름도이다.
도 9는 일부 실시예들에 따른 도 5의 블록(506)에 예시된 슬립 상태 선택 프로세스에 대한 더 상세한 방법을 예시하는 흐름도이다.
도 10은 일부 실시예들에 따른 도 5의 블록(510)에 예시된 슬립 상태 승격(promotion) 프로세스에 대한 더 상세한 방법을 예시하는 흐름도이다.
중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 및 가속 처리 유닛(APU)과 같은 처리 디바이스들의 구성요소들은 처리 디바이스의 부분들이 비활성화되거나 더 낮은 동작 주파수 또는 전압에서 실행될 수 있는 상이한 전력 관리 상태들에서 동작될 수 있다. 예를 들어, 처리 디바이스 구성요소가 이용가능한 전력 관리 상태들은 활성 상태들, 유휴 상태들, 전력 게이티드(power-gated) 상태들 등을 포함할 수 있다. 활성 상태에서, 구성요소는 명령어들을 실행하고, 공칭 동작 주파수 및 동작 전압에서 실행된다. 유휴 상태에서, 구성요소는 명령어들을 실행하지 않고, 더 낮은 동작 주파수 또는 동작 전압에서 실행될 수 있다. 전력 게이티드 상태에서는, 예를 들어, 전력 게이티드 신호가 헤더 트랜지스터의 게이트에 인가될 때 구성요소에 공급되는 전력을 인터럽트하는 헤더 트랜지스터를 사용함으로써, 구성요소로부터 전원이 연결해제된다. 유휴 및 전력 게이티드 상태는 슬립 상태들로서 지칭될 수 있고, 다수의 레벨들의 슬립 상태들이 처리 디바이스에 의해 구현될 수 있다. 적어도 일부 구현예들에서, 가장 낮은(가장 얕은) 슬립 상태 레벨에 있는 동안, 처리 디바이스의 구성요소는 활성 상태에서 동작할 때보다 더 적은 전력을 소비하지만, 다음으로 더 높은(더 깊은) 슬립 상태 레벨보다 더 많은 전력을 소비한다. 구성요소가 가장 높은(가장 깊은) 슬립 상태 레벨에 놓일 때, 구성요소는 통상적으로 전력 게이팅된다.
처리 디바이스들은 처리 디바이스의 구성요소(들)에 의해 수행될 어떠한 활동도 없을 때 하나 이상의 구성요소를 활성 상태로부터 슬립 상태로 트랜지션함으로써 전력을 보존할 수 있다. 예를 들어, 구성요소가 비교적 긴 시간 동안 유휴 상태라면, 구성요소에 공급되는 전력이 게이팅될 수 있어, 대기 및 누설 전력 소비를 감소시킬 수 있다. 그러나, 처리 디바이스 또는 그 구성요소들을 상이한 슬립 상태들 사이에서 트랜지션하는 것은 처리 디바이스에 소비되는 에너지 및 와 처리 디바이스의 성능에 중요한 영향을 미친다. 예를 들어, 활성 상태 또는 더 깊은 슬립 상태 레벨 중 어느 하나로부터 슬립 상태 내외로 트랜지션하는 것은 트랜지션에 의해 야기되는 지연으로 인한 성능 비용을 부담한다. 또한, 트랜지션 전에 수행될 동작들로 인한 에너지 비용이 발생될 수 있다. 또한, 구성요소가 전력 게이팅되는 딥 슬립 레벨 상태로부터 활성 상태로 프로세서 코어를 복귀시키기 위한 성능 비용이 발생된다. 이에 따라, 더 깊은 슬립 상태와 연관된 전력 절감이 더 깊은 슬립 상태로의 진입 및 종료 트랜지션 동안 소비되는 전력을 초과하도록 하기에 더 깊은 슬립 상태에서의 구성요소의 체류가 충분히 길 경우에만 더 깊은 슬립 상태가 더 얕은 슬립 상태보다 더 효율적이다.
슬립 상태 관리 시스템들/알고리즘들은 슬립 지속기간에 대한 에너지 성능 손익 평형(break-even) 비용에 기초하여 적절한 슬립 상태 레벨을 결정하는 것으로부터 이익을 얻을 수 있다. 그러나, 구성요소에 대해 슬립 지속기간이 얼마나 길어질지에 대한 사전 지식은 통상적으로 이용가능하지 않다. 이에 따라, 많은 종래의 슬립 상태 관리 시스템들은 구성요소의 상태들이 슬립 상태에 놓이는 절감 전에 히스테리시스 지속기간(hysteresis duration)을 도입함으로써 너무 짧은 슬립 지속기간을 필터링하려고 시도한다. 히스테리시스 지속기간이 통상적으로 너무 길기 때문에(예를 들어, 밀리초 정도) 히스테리시스 지속기간을 도입하는 것은 일반적으로 에너지 비효율을 초래한다. 많은 유형들의 작업 부하들에 대한 슬립 지속기간들은 일반적으로 밀리초 이하 범위 내에 있으며, 때때로 더 긴 슬립 지속기간들이 밀리초 범위 내에서 지속된다. 이에 따라, 긴 진입 히스테리시스는 더 짧은 슬립 지속기간들(예를 들어, 밀리초 이하)이 무시되게 하고, 각 개개의 슬립 요청마다 더 깊은 슬립 상태에 진입되게 한다(제로 진입 히스테리시스). 또한, 종래의 슬립 상태 관리 시스템들은 일반적으로 많은 조정가능한 파라미터들, 슬립 상태 진입에 대한 비적응적 접근법을 갖고, 향후 개선/확장을 위한 프레임워크가 부족하며, 운영 체제 전력 관리 알고리즘들에 의해 제어될 수 있다. 이들 모든 특성들은 종래의 슬립 상태 관리 시스템들의 비효율성을 더욱 가중시킨다.
본 개시는 진입 히스테리시스 기간에 에너지를 소비하는 대신에 구성요소들을 바로 더 깊은 슬립 상태로 트랜지션함으로써 처리 디바이스의 에너지 효율을 개선하기 위한 시스템들 및 방법들의 실시예들을 설명한다. 아래에서 더 상세히 설명되는 바와 같이, 처리 디바이스 및 그 구성요소들의 슬립 상태 지속기간들이 이력 슬립 상태 지속기간(historical sleep state duration) 정보를 생성하기 위해 모니터링 및 기록된다. 이력 슬립 지속기간 정보는 구성요소의 곧 있을 슬립 상태 지속기간을 예측하기 위해 사용된다. 구성요소가 이용가능한 하나 이상의 슬립 상태에 대해 손익 평형 지속기간이 결정된다. 손익 평형 지속기간은 슬립 상태로의 트랜지션의 이점이 슬립 상태로의 트랜지션의 비용을 초과하는 슬립 상태 지속기간을 나타낸다. 예측된 슬립 지속기간은 하나 이상의 슬립 상태에 대해 결정된 손익 평형 지속기간과 비교되고, 이 비교에 기초하여 구성요소에 대한 슬립 상태가 선택된다. 그런 다음, 구성요소는 선택된 슬립 상태로 트랜지션된다. 적어도 일부 실시예들에서, 구성요소의 현재 슬립 상태는, 구성요소가 하나 이상의 슬립 상태 지속기간 임계치를 만족시키는 지속기간 동안 현재 슬립 상태 내에 체류했다면, 더 깊은 슬립 상태로 승격된다. 결정 오류 피드백 메커니즘은 적어도 일부 실시예들에서, 이에 기초하여 슬립 상태 선택에 있어서의 오류를 감소시키기 위해 후속적으로 예측된 슬립 지속기간들을 조정하도록 구현된다. 또한, 적어도 일부 실시예들에서, 구성요소에 대한 슬립 상태를 선택하기 위해 예측된 슬립 지속기간에 더하여, 입력/출력 디바이스들(예를 들어, PCIe(peripheral component interconnect express) 디바이스들, USB(universal serial bus) 디바이스들 등)로부터의 레이턴시 내성 보고(Latency Tolerance Report.LTR) 값, 또는 APIC(Advanced Programmable Interrupt Controller) 인터럽트에 대한 타이머 값과 같은 정보가 사용된다.
도 1은 본 명세서에서 설명된 전력 상태 관리 기법들이 구현될 수 있는 예시적인 처리 디바이스(100)의 블록도이다. 적어도 일부 실시예들에서, 처리 디바이스(100)는 예를 들어, 컴퓨터, 모바일 디바이스, 게이밍 디바이스, 태블릿 컴퓨팅 디바이스, 웨어러블 컴퓨팅 디바이스, 셋톱 박스, 텔레비전, 또는 다른 유형의 컴퓨팅 시스템 또는 디바이스를 포함한다. 처리 디바이스(100)는 적어도 일부 실시예들에서, 프로세서(102), 메모리(104), 저장소(106), 하나 이상의 입력 디바이스(108) 및 하나 이상의 출력 디바이스(110)를 포함한다. 처리 디바이스(100)는 적어도 일부 실시예들에서, 또한, 입력 드라이버(112) 및 출력 드라이버(114)를 포함한다. 처리 디바이스(100)는 도 1에 도시되지 않은 추가 구성요소들을 포함할 수 있다는 것이 이해되어야 한다.
적어도 일부 실시예들에서, 프로세서(102)는 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), (예를 들어, 멀티 칩 모듈(MCM)을 사용하여) 동일한 다이 또는 다수의 다이들 상에 위치된 CPU 및 GPU, 또는 각 프로세서 코어가 CPU 또는 GPU인 하나 이상의 프로세서 코어를 포함한다. 메모리(104)는 일부 실시예들에서, 프로세서(102)와 동일한 다이 상에 위치되거나, 또는 프로세서(102)와 별도로 위치된다. 메모리(104)는 휘발성 또는 비휘발성 메모리, 이를테면 랜덤 액세스 메모리(RAM), 동적 RAM, 캐시 등을 포함한다.
저장소(106)는 적어도 일부 실시예들에서, 고정식 또는 탈착식 저장소, 이를테면 하드 디스크 드라이브, 솔리드 스테이트 드라이브, 광학 디스크, 플래시 드라이브 등을 포함한다. 적어도 일부 실시예들에서, 입력 디바이스들(108)은 예를 들어, 키보드, 키패드, 터치 스크린, 터치패드, 검출기, 마이크로폰, 가속도계, 자이로스코프, 생체인식 스캐너, 네트워크 커넥션(예를 들어, 무선 신호들의 송신/수신을 위한 무선 근거리 네트워크 카드) 등 중 하나 이상을 포함한다. 출력 디바이스들(110)은 적어도 일부 실시예들에서, 예를 들어, 디스플레이, 스피커, 프린터, 햅틱 피드백 디바이스, 하나 이상의 조명, 안테나, 또는 네트워크 커넥션(예를 들어, 무선 신호들의 송신/수신을 위한 무선 근거리 네트워크 카드) 등 중 하나 이상을 포함한다.
적어도 일부 실시예들에서, 입력 드라이버(112)는 프로세서(102) 및 입력 디바이스들(108)과 통신하고, 프로세서(102)가 입력 디바이스들(108)로부터 입력을 수신할 수 있게 한다. 출력 드라이버(114)는 적어도 일부 실시예들에서, 프로세서(102) 및 출력 디바이스들(110)과 통신하고, 프로세서(102)가 출력 디바이스들(110)에 출력을 발송할 수 있게 한다. 처리 디바이스(100)는 입력 드라이버(112) 및 출력 드라이버(114)가 존재하지 않는다면 동일한 방식으로 동작한다는 것에 유의한다. 출력 드라이버(114)는 적어도 일부 실시예들에서, 디스플레이 디바이스(118)에 결합되는 가속 처리 디바이스(accelerated processing device, APD)(116)를 포함한다. APD는 프로세서(102)로부터 컴퓨트 커맨드들 및 그래픽 렌더링 커맨드들을 수용하고, 이들 컴퓨트 및 그래픽 렌더링 커맨드들을 처리하고, 픽셀 출력을 디스플레이를 위해 디스플레이 디바이스(118)에 제공한다. 아래에서 더 상세히 설명될 바와 같이, APD(116)는 단일 명령어 단일 데이터(SIMD) 패러다임에 따라 컴퓨테이션들을 수행하는 하나 이상의 병렬 처리 유닛을 포함한다. 이에 따라, 본 명세서에서 다양한 기능이 APD(116)에 의해 또는 APD(116)와 함께 수행되는 것으로서 설명되지만, 다른 실시예들에서, APD(116)에 의해 수행되는 것으로서 설명된 기능은 추가적으로 또는 대안적으로, 호스트 프로세서(예를 들어, 프로세서(102))에 의해 구동되지 않는 유사한 능력들을 갖는 다른 컴퓨팅 디바이스들에 의해 수행되고 그래픽 출력을 디스플레이 디바이스(118)에 제공한다. 예를 들어, 적어도 일부 실시예들에서, SIMD 패러다임에 따라 처리 작업들을 수행하는 임의의 처리 시스템이 본 명세서에서 설명된 기능을 수행한다. 대안적으로, 적어도 일부 실시예들에서, SIMD 패러다임에 따라 처리 작업들을 수행하지 않는 컴퓨팅 시스템들이 본 명세서에서 설명된 기능을 수행한다.
도 2는 APD(116) 상의 처리 작업들의 실행과 관련된 추가 세부 사항들을 예시하는 처리 디바이스(100)의 블록도이다. 적어도 일부 실시예들에서, 프로세서(102)는 프로세서(102)에 의한 실행을 위한 하나 이상의 제어 로직 모듈을 메모리(104)에 유지시킨다. 제어 로직 모듈들은 적어도 일부 실시예들에서, 운영 체제(202), 커널 모드 드라이버(204), 및 애플리케이션들(206)을 포함한다. 이러한 제어 로직 모듈들은 프로세서(102) 및 APD(116)의 연산의 다양한 피처들을 제어한다. 예를 들어, 운영 체제(202)는 하드웨어와 직접 통신하고, 프로세서(102) 상에서 실행되는 다른 소프트웨어에 대한 인터페이스를 하드웨어에 제공한다. 커널 모드 드라이버(204)는 예를 들어, APD(116)의 다양한 기능에 액세스하기 위해 프로세서(102) 상에서 실행되는 소프트웨어(예를 들어, 애플리케이션들(206))에 애플리케이션 프로그래밍 인터페이스(application programming interface, API)를 제공함으로써, APD(116)의 동작을 제어한다. 커널 모드 드라이버(204)는 적어도 일부 실시예들에서, 또한, APD(116)의 처리 구성요소들(이를테면 아래에서 더 상세히 논의될 SIMD 유닛들(210))에 의한 실행을 위해 프로그램들을 컴파일링하는 JIT(just-in-time) 컴파일러를 포함한다.
적어도 일부 실시예들에서, APD(116)는 병렬 처리에 적합할 수 있는 그래픽 동작들 및 논그래픽 동작들과 같은 선택된 기능들을 위한 커맨드들 및 프로그램들을 실행한다. APD(116)는 적어도 일부 실시예들에서, 프로세서(102)로부터 수신되는 커맨드들에 기초하여, 그래픽 파이프라인 동작들(예를 들어, 픽셀 동작들, 기하학적 컴퓨테이션들 등)을 실행하고, 이미지를 디스플레이 디바이스(118)에 렌더링하기 위해 사용된다. APD(116)는 또한 프로세서(102)로부터 수신되는 커맨드들에 기초하여, 그래픽 동작들과 직접 관련이 없는 컴퓨트 처리 동작들, 이를테면 비디오, 물리 시뮬레이션들, 전산 유체 역학, 또는 다른 작업들과 관련된 동작들을 실행한다.
APD(116)는 적어도 일부 실시예들에서, SIMD 패러다임에 따라 병렬 방식으로 프로세서(102)의 요청 시 동작들을 수행하는 하나 이상의 SIMD 유닛(210)(210-1 내지 210-6으로서 예시됨)을 포함하는 컴퓨트 유닛들(208)(208-1 내지 208-3으로서 예시됨)을 포함한다. SIMD 패러다임은 다수의 처리 요소들이 단일 프로그램 제어 흐름 유닛 및 프로그램 카운터를 공유하고 동일한 프로그램을 상이한 데이터로 실행하는 것이다. 일례로, 각 SIMD 유닛(210)은 각 레인이 SIMD 유닛(210)의 다른 레인들과 동시에 동일한 명령어를 실행하지만 그 명령어를 상이한 데이터로 실행할 수 있는 16개의 레인들을 포함한다. 레인들은 모든 레인들이 주어진 명령어를 실행해야 하는 것은 아닌 경우를 예측하여 스위칭 오프될 수 있다. 예측은 또한, 프로그램들을 분기하는(divergent) 제어 흐름으로 실행하기 위해 사용될 수 있다. 더 구체적으로, 제어 흐름이 개별 레인에 의해 수행되는 계산들에 기초하는 조건부 분기들 또는 다른 명령어들을 갖는 프로그램들에 대해, 현재 실행되고 있지 않은 제어 흐름 경로들에 대응하는 레인들의 예측, 및 상이한 제어 흐름 경로들의 직렬 실행은 자의적인 제어 흐름을 가능하게 한다.
적어도 일부 실시예들에서, 컴퓨트 유닛들(208)에서의 실행의 기본 유닛은 작업 항목이다. 각 작업 항목은 특정 레인에서 병렬로 실행될 프로그램의 단일 인스턴스화를 나타낸다. 작업 항목들은 적어도 일부 실시예들에서, 단일 SIMD 처리 유닛(210) 상에서 "웨이브프론트(wavefront)"로서 동시에 실행될 수 있다. 하나 이상의 웨이브프론트는 ― 동일한 프로그램을 실행하도록 지정된 작업 항목들의 집합을 포함하는 ― "작업 그룹(workgroup)"에 포함된다. 작업 그룹은 작업 그룹을 이루는 웨이브프론트들 각각을 실행함으로써 실행된다. 다른 실시예들에서, 웨이브프론트들은 단일 SIMD 유닛(210) 상에서 순차적으로, 또는 상이한 SIMD 유닛들(210) 상에서 부분적으로 또는 전체가 병렬로 실행된다. 웨이브프론트들은 적어도 일부 실시예들에서, 단일 SIMD 유닛(210) 상에서 동시에 실행될 수 있는 가장 큰 작업 항목 집합을 나타낸다. 이에 따라, 프로세서(102)로부터 수신된 커맨드들이 특정 프로그램이 동시에 단일 SIMD 유닛(210) 상에서 실행할 수 없을 정도로 병렬화되어야 할 것을 나타낸다면, 그 프로그램은 두 개 이상의 SIMD 유닛들(210) 상에서 병렬화되어 동일한 SIMD 유닛(210) 상에서 직렬화되는(또는 병렬화와 직렬화 둘 다 되는) 웨이브프론트들로 나뉜다. 스케줄러(212)는 상이한 컴퓨트 유닛들(208) 및 SIMD 유닛들(210) 상에서 다양한 웨이브프론트를 스케줄링하는 것과 관련된 동작들을 수행한다.
컴퓨트 유닛들(208)에 의해 감당되는 병렬성은 그래픽 관련 동작들, 이를테면 픽셀 값 계산들, 버텍스 변환들, 및 다른 그래픽 동작들에 적합하다. 이에 따라, 일부 사례들에서, 프로세서(102)로부터 그래픽 처리 커맨드들을 수용하는 그래픽 파이프라인(214)은 컴퓨테이션 작업들을 병렬로의 실행을 위해 컴퓨트 유닛들(208)에 제공한다.
적어도 일부 실시예들에서, 컴퓨트 유닛들(208)은 또한, 그래픽과 관련되지 않거나 그래픽 파이프라인(214)의 "통상(normal)" 동작의 일부로서 수행되지 않는 컴퓨테이션 작업들(예를 들어, 그래픽 파이프라인(214)의 동작을 위해 수행된 처리를 보충하기 위해 수행되는 커스텀 동작들)을 수행하기 위해 사용된다. 프로세서(102)상에서 실행되는 애플리케이션(206) 또는 다른 소프트웨어는 이와 같은 컴퓨테이션 작업들을 정의하는 프로그램들을 실행을 위해 APD(116)로 송신한다.
도 3은 본 명세서에서 설명된 전력 관리 기법들이 구현될 수 있는 처리 디바이스(300)의 다른 예를 예시하는 블록도이다. 도 3에 도시된 예에서, 처리 디바이스(300)는 시스템 온 칩(system-on-a-chip, SOC) 디바이스(300)이다. 적어도 일부 실시예들에서, SoC 디바이스(300)는 데이터 패브릭(302), CPU 코어 컴플렉스(304), GPU(306), 멀티미디어 처리 유닛(multimedia processing unit, MPU)들(308), 디스플레이 인터페이스(310), I/O 허브(312), 메모리 제어기(314), 및 시스템 관리 유닛(system management unit, SMU)(316)과 같은 구성요소들을 포함한다. 적어도 일부 실시예들에서, 이들 및 다른 구성요소들 중 하나 이상은 ― 로직, 셀들, 또는 집적 회로(IC) 레이아웃들의 재사용가능한 유닛들인 ― 지적 재산(IP) 블록들/코어들로 구성된다.
데이터 패브릭(302)은 적어도 일 실시예에서, SoC 디바이스(300)의 다양한 구성요소들 사이에서 통신 상호연결을 제공하기 위한 회로부를 포함한다. 임의의 적합한 상호연결 하드웨어가 다양한 구현예들에서 사용된다. 일부 구현예들에서, 물리적 관점에서, 데이터 패브릭(302)은 SoC 디바이스의 중앙 위치에서 구현되거나 또는 SoC 디바이스(300)에 걸쳐 다수의 허브들에 분산되고, 적합한 통신 매체(예를 들어, 버스)를 사용하여 상호연결된다. 논리적 관점에서, 데이터 패브릭(302)은 데이터 흐름의 중심에 위치되고, SoC 디바이스(300)의 상이한 구성요소들(IP 블록들을 포함함)의 유휴에 관한 정보가 데이터 패브릭(302)에 집중(예를 들어, 저장)된다. 일부 구현예들에서, 이 정보는 Soc 디바이스(300)의 하나 이상의 구성요소를 슬립 상태와 같은 전력 관리 상태로 트랜지션하기에 적절한 시간을 결정하는 데 SMU(316)에 의해 사용된다.
적어도 일부 실시예들에서, CPU 코어 컴플렉스(304)는 하나 이상의 적합한 CPU 코어를 포함한다. 컴플렉스에서의 코어들 각각은 적어도 일부 실시예들에서, 전용 캐시를 포함하고, 컴플렉스에서의 코어들 모두는 공유 캐시와 통신한다. 적어도 일부 실시예들에서, SoC 디바이스(300)는 복수의 CPU 코어 컴플렉스들을 포함한다. GPU(306)는 적어도 일부 실시예들에서, 임의의 적합한 GPU 또는 GPU 하드웨어의 조합을 포함한다. MPU들(308)은 적어도 일부 실시예들에서, 오디오 코프로세서들, 이미징 신호 프로세서들, 비디오 코덱들 등과 같은 하나 이상의 적합한 MPU를 포함한다.
디스플레이 인터페이스(310)는 적어도 일부 실시예들에서, 하나 이상의 디스플레이를 구동하기 위한 임의의 적합한 하드웨어를 포함한다. I/O 허브(312)는 적어도 일부 실시예들에서, 데이터 패브릭(302)을 I/O 디바이스들(318)과 인터페이싱하기 위한 임의의 적합한 하드웨어를 포함한다. I/O 디바이스들(318)은 적어도 일부 실시예들에서, USB(universal serial bus), PCIe(peripheral component interconnect express) 버스, NVMe(non-volatile memory host controller interface) 버스, SATA(serial advanced technology attachment) 버스, xGBE(gigabit Ethernet), I2C(inter-integrated circuit) 버스, SD(secure digital) 인터페이스, GPIO(general-purpose input/output) 커넥션, 센서 융합 I/O 커넥션, 및/또는 임의의 다른 적합한 I/O 하드웨어 중 하나 이상을 포함한다. 이에 따라, 적어도 일부 실시예들에서, I/O 허브(312)는 USB 호스트 제어기, PCIe 루트 컴플렉스, NVMe 호스트 제어기, SATA 호스트 제어기, xGBE 인터페이스, I2C 노드, SD 호스트, GPIO 제어기, 센서 융합 제어기, 및/또는 임의의 다른 적합한 I/O 디바이스 인터페이스들을 포함한다.
메모리 제어기(314)는 적어도 일부 실시예들에서, 메모리들(320)과 인터페이싱하기 위한 임의의 적절한 하드웨어를 포함한다. SMU(316)는 적어도 일부 실시예들에서, 시스템 구성/상태 레지스터들 및 메모리들을 관리 및 액세스하고, 클록 신호들을 생성하고, 전력 레일 전압들을 제어하고, SoC 디바이스(300)에 대한 보안 액세스 및 정책을 시행하기 위한 하드웨어 및 펌웨어를 포함한다. 적어도 일부 실시예들에서, SMU(316)는 시스템 관리 통신 네트워크(도시되지 않음)를 사용하여 SoC 디바이스(300)의 다른 블록들과 상호연결된다. SMU(316)는 적어도 일부 실시예들에서, 또한, CPU 코어 컴플렉스(304) 및 SoC 디바이스(300)의 다른 구성요소들(개개의 IP 블록들을 포함함)의 열 및 전력 조건들을 관리한다. 이와 같이, SMU(316)는 또한, SoC 디바이스의 구성요소들 및 서브 구성요소들, 이를테면 CPU 코어 컴플렉스(304)의 코어들 및 IP 블록들에 공급되는 전력을 제어할 수 있다. 적어도 일부 실시예들에서, SMU(316)는 또한, 구성요소들에 공급되는 동작 주파수 또는 동작 전압을 변경함으로써 SoC 구성요소들(예를 들어, CPU 코어 컴플렉스(304)의 코어들)의 동작 포인트들을 조절하도록 구성된다.
적어도 일부 실시예들에서, SMU(316)는 SoC 디바이스(300)의 구성요소들을 하나 이상의 전력 관리 상태로/로부터 트랜지션하도록 구성된다. 본 설명 전반에 걸쳐, SoC 디바이스(300)의 구성요소를 하나 이상의 전력 관리 상태로/로부터 트랜지션하는 것에 대한 언급은 전체 SOC 디바이스(300), 전체 구성요소, 이를테면 CPU 코어 컴플렉스(304), GPU(306), MPU들(308), I/O 허브(312) 등, 또는 구성요소의 서브 구성요소, 이를테면 CPU 코어 컴플렉스(304)의 코어 또는 IP 블록을 트랜지션하는 것을 포함한다는 것에 유의한다. 전력 관리 상태들의 예들은 활성 상태 및 하나 이상의 슬립 상태, 이를테면 유휴 및 전력 게이티드 상태를 포함한다. 슬립 상태들은 또한, 저전력 또는 저전력 상태들로서 지칭될 수 있다. 활성 상태에서, 구성요소는 명령어들을 실행하고, 공칭 동작 주파수 및 동작 전압에서 실행된다. 슬립 상태에서, 구성요소는 통상적으로 명령어들을 실행하거나 명령어들에 대해 동작하지 않고, 더 낮은 동작 주파수/전압에서 실행될 수 있다. 구성요소는 또한, 구성요소로부터 전원이 연결해제되도록 슬립 상태에서 전력 게이팅될 수 있다. 예를 들어, SMU(316)는 신호들 또는 명령어들을 전원에 연결된 게이트 로직에 발행한다. 이 예에서, 게이트 로직은 구성요소에 공급되는 전력을 제어하고, 구성요소로의 전류의 흐름을 인터럽트하기 위해 하나 이상의 회로를 개방함으로써 전력을 게이팅한다. 적어도 일부 실시예들에서, 다수의 레벨들의 슬립 상태들이 구현된다. 슬립 상태 레벨이 증가함에 따라, 이전 슬립 상태 레벨(들)보다 구성요소에 의해 더 적은 전력이 소비된다. 가장 낮은 슬립 상태 레벨은 가장 얕은 슬립 상태로서 지칭될 수 있고, 가장 높은 슬립 상태 레벨은 가장 깊은 슬립 상태로서 지칭될 수 있다. 더 얕은 슬립 상태는 더 깊은(더 높은 전력) 슬립 상태보다 더 낮은 전력 슬립 상태이다. 구성요소를 하나 이상의 슬립 상태로 트랜지션함으로써, 전력이 보존될 수 있다.
더 깊은 슬립 상태들이 더 얕은 슬립 상태들보다 더 많은 전력을 보존할 수 있지만, 더 깊은 슬립 상태들은 통상적으로 트랜지션 지속기간들에서 성능 및 전력 페널티를 부담한다. 예를 들어, 슬립 상태들의 세트 S = {S1, S2, S3,…, Sn)(여기서 Sn은 플랫폼에 의해 지원되는 가장 깊은 슬립 상태임)를 고려한다. 구성요소가 제3 슬립 상태(S3)에 진입하기 위해, 구성요소는 통상적으로, 구성요소 및 그 서브 구성요소들에 대한 전력을 강하시키는 논리적 시퀀스로 인해, 제3 슬립 상태(S3)에 진입하기 전에 먼저 제1 슬립 상태(S1)에 진입하고 그런 다음 제2 슬립 상태(S2)로 트랜지션한다. 유사하게, 제3 슬립 상태(S3)로부터 활성 상태로 트랜지션하기 위해, 구성요소는 통상적으로, 활성 상태에 진입하기 전에 제3 슬립 상태(S3)로부터 제2 슬립 상태(S2)로, 그리고 그런 다음 제2 슬립 상태(S2)로부터 제1 슬립 상태(S1)로 순차적으로 트랜지션한다. 이들 순차적인 슬립 상태들의 각 슬립 상태를 진입하는 것은 시간과 전력 둘 모두를 소비한다. 더 상세하게는 각 슬립 상태로의 그리고 각 슬립 상태로부터의 트랜지션들은 SMU(316)에 의해 취해질 다양한 액션들을 수반하며, 이 액션들은 이와 같은 트랜지션들에 대한 가외의 시간 및 전력을 요구한다. 더 깊은 슬립 상태들은 더 얕은 슬립 상태들보다 진입 및 종료를 위한 더 많은 수의(또는 더 자원 집약적인) 액션들을 요구한다. 또한, 더 깊은 슬립 상태들은 통상적으로 더 얕은 슬립 상태에서보다 활성/작동 상태로 복귀하는 데 더 오래 걸리고, 이에 따라, 더 큰 레이턴시 페널티를 초래한다.
적어도 일부 실시예들에서, SMU(316)는 구성요소를 슬립 상태로 트랜지션하기 위한 급속 슬립 상태 트랜지션 모드를 구현한다. 아래에서 더 상세히 설명되는 바와 같이, SMU(316)는 예측된 슬립 상태 지속기간, 및 ― 슬립 상태로 트랜지션하는 것의 이익이 슬립 상태로 트랜지션하는 것의 비용들을 초과하는(또는 적어도 같은) ― 결정된 손익 평형 지속기간에 기초하여, SoC 디바이스(300)의 구성요소에 대한 슬립 상태를 선택한다. SMU(316)는 하나 이상의 슬립 상태에 대해, 예측된 슬립 지속기간을 손익 평형 지속기간과 비교한다. 이 비교에 기초하여, SMU(316)는 더 깊은 슬립 상태에서의 구성요소의 체류가 더 깊은 슬립 상태와 연관된 전력 절감이 더 깊은 슬립 상태로의 진입 및 종료 트랜지션 동안 소비되는 전력을 초과하도록(또는 적어도 같도록) 하기에 충분히 긴지를 결정한다. 예측된 슬립 지속기간이 더 깊은 슬립 상태에 대한 결정된 손익 평형 지속기간을 만족시킨다면, SMU(316)는 구성요소를 더 깊은 슬립 상태로 트랜지션한다. 그러나, 예측된 슬립 지속기간이 더 깊은 슬립 상태에 대한 결정된 손익 평형 지속기간을 만족시키지 못한다면, SMU(316)는 구성요소를 더 얕은 슬립 상태로 트랜지션한다.
이와 같이, SMU(316)의 급속 슬립 상태 모드는 디바이스의 에너지 효율을 개선시키는데, 이는 SMU(316)가 진입 히스테리시스 기간들에서 에너지를 소비하는 대신에 구성요소를 직접 더 깊은 슬립 상태들로 트랜지션할 수 있기 때문이다. 적어도 일부 실시예들에서, 급속 슬립 상태 트랜지션 모드는 SoC 디바이스(300)의 하드웨어 또는 소프트웨어 구성요소 또는 SoC 디바이스(300)에 결합된 또 다른 디바이스에 의해 인에이블 또는 디스에이블될 수 있다. 급속 슬립 상태 트랜지션 모드가 디스에이블된다면, 종래의 전력 상태 관리 동작들이 SMU(316)에 의해 구현될 수 있다. 적어도 일부 실시예들에서, 급속 슬립 상태 트랜지션 모드가 인에이블되는지 또는 디스에이블되는지를 다른 하드웨어, 소프트웨어, 또는 운영 체제에 통지하기 위해, 모델 특정 레지스터(model-specific register, MSR)와 같은 레지스터에 비트가 저장될 수 있다.
도 4는 적어도 일부 실시예들에 따른 SMU(316)의 더 상세한 뷰를 예시하는 블록도이다. SMU(316)는 SoC 디바이스(300)에 의해 구현되는 것으로서 본 명세서에서 설명되지만, SMU(316)는 또한, 도 1의 처리 디바이스(100)에 의해 구현될 수 있다는 것에 유의한다. 도 4에 도시된 예에서, SMU(316)는 모니터링 모듈(402), 슬립 지속기간 예측 모듈(404), 슬립 상태 선택 모듈(406), 슬립 상태 승격 모듈(408), 결정 오류 피드백 모듈(410), 및 하나 이상의 저장 디바이스(412)를 포함한다. 적어도 일부 실시예들에서, 이들 구성요소들 중 하나 이상은 중앙 마이크로제어기, 개별 IP 관리 제어기 등과 같은, SMU(316)와 상이한 SoC 디바이스(300)(또는 처리 디바이스(100))의 또 다른 구성요소로 구현된다는 것에 유의한다.
모니터링 모듈(402)은 적어도 일부 실시예들에서, SoC 디바이스(300)의 구성요소들의 슬립 상태 지속기간들을 모니터링 및 기록한다. 적어도 일부 실시예들에서, 구성요소에 대한 슬립 상태 지속기간(τ)은 SMU(316)가 가장 낮은 레벨 슬립 상태(예를 들어, 슬립 상태 S0) 인터럽트를 수신하는 것과, 구성요소에 대한 임의의 웨이크 이벤트를 수신하는 것 사이의 시간 (지속기간)으로서 정의된다.달리 말하면, 구성요소에 대한 슬립 상태 지속기간은 구성요소가 활성 상태로부터 슬립 상태로 트랜지션되는 (진입 히스테리시스를 포함할 수 있는) 제1 트랜지션의 개시와 구성요소가 슬립 상태로부터 다시 활성 상태로 트랜지션되는 제2 트랜지션의 개시 사이의 시간이다.다른 실시예들에서, 슬립 상태 지속기간은 상이한 파라미터들을 사용하여 정의된다는 것에 유의한다.적어도 일부 실시예들에서, 모니터링 모듈(402)은 하나 이상의 내부 타이머를 사용하여 구성요소들의 슬립 상태 지속기간들을 기록한다.
모니터링 모듈(402)은 적어도 일부 실시예들에서, 슬립 상태 지속기간들을 하나 이상의 저장 디바이스(412)에 이력 지속기간 정보(414)로서 기록/저장한다. 적어도 일부 실시예들에서, 하나 이상의 저장 디바이스(412)는 SMU(316) 내에 로컬로, SMU(316)로부터 원격에, 또는 이들의 조합으로 상주한다. 이력 지속기간 정보(414)는 적어도 일부 실시예들에서, 디바이스 레벨, 구성요소 레벨, 서브 구성요소 레벨, 이들의 조합 등에 대해 저장된다. 이력 지속기간 정보(414)가 디바이스 레벨에 대해 기록 및 저장된다면, SoC 디바이스(300)의 모든 구성요소들에 걸친 과거 n개의 슬립 상태 지속기간들에 대한 진입들이 저장된다. 예를 들어, n = 32라면, 이력 지속기간 정보(414)는 이 예에서, SoC 디바이스(300)의 구성요소들 중 어느 하나와 연관된 이전의 32개의 슬립 상태 지속기간들에 대한 진입들을 포함한다. 이력 지속기간 정보(414)가 구성요소 또는 서브 구성요소 레벨에 대해 기록 및 저장된다면, 각 구성요소 또는 서브 구성요소는 각자의 이력 지속기간 진입들과 연관된다. 예를 들어, n = 32라면, 이력 지속기간 정보(414)는 이 예에서, 제1 구성요소의 이전의 32개의 슬립 지속기간들에 대한 진입들, 제2 구성요소에 대한 이전의 32개의 슬립 상태 지속기간들에 대한 진입들 등을 포함한다. 적어도 일부 실시예들에서, 각 구성요소 또는 서브 구성요소는 자신들과 연관된 이력 지속기간 정보(414)를 포함하는 별개의 데이터 구조와 연관된다. 적어도 일부 실시예들에서, 모니터링 모듈(402)에 의해 기록된 이전 슬립 상태 지속기간의 수가 구성가능하다.
슬립 지속기간 예측 모듈(404)은 적어도 일부 실시예들에서, 이력 지속기간 정보(414)를 이용하여 곧 있을 슬립 상태의 지속기간을 예측한다. 예를 들어, SMU(316)가 주어진 구성요소가 유휴 상태라고 결정한다면, 슬립 지속기간 예측 모듈(404)은 이력 지속기간 정보(414)를 처리하여 구성요소에 대한 곧 있을 슬립 상태의 지속기간을 예측한다. 적어도 일부 실시예들에서, 슬립 지속기간 예측 모듈(404)은 하나 이상의 저장 디바이스(412)에 예측된 슬립 상태 지속기간(416)을 저장한다.
슬립 상태 선택 모듈(406)은 적어도 일부 실시예들에서, SoC 디바이스(300)의 구성요소에 대한 적절한 슬립 상태를 결정한다. 적어도 일부 실시예들에서, 슬립 상태 선택 모듈(406)은 복수의 슬립 상태들로부터 ― 가장 적은 성능 영향을 미치면서 가장 적은 양의 에너지가 소비되게 하는(본 명세서에서 선택 기준으로서 지칭됨) ― 슬립 상태를 선택한다. 슬립 상태 선택 모듈(406)은 적어도 일부 실시예들에서, 예측된 슬립 상태 지속기간(416) 및 슬립 상태 손익 평형 지속기간(418)(슬립 상태 손익 평형 지속기간(418) 또는 손익 평형 임계치(418)로도 지칭됨)에 기초하여, 선택 기준을 만족시키는 슬립 상태를 식별한다. 슬립 상태에 대한 손익 평형 지속기간(418)은 슬립 상태에 체류함으로써 절감되는 에너지가 슬립 상태의 내외로 트랜지션하기 위한 에너지 비용과 적어도 같도록, 구성요소가 슬립 상태에 머무를 시간량을 나타낸다. 예를 들어, 슬립 상태 S2에 대한 손익 평형 지속기간(418)은 슬립 상태 S2에 체류함으로써 절감되는 에너지가 슬립 상태 S2의 내외로 트랜지션하기 위한 에너지 비용과 적어도 같도록 하는 슬립 상태 S2에 구성요소가 머무를 시간량을 표시한다.
슬립 상태 선택 모듈(406)은 적어도 일부 실시예들에서, 하나 이상의 저장 디바이스(412)에 손익 평형 지속기간(418)을 저장한다. 적어도 일부 실시예들에서, 슬립 상태 선택 모듈(406)은 또한, 하나 이상의 입력/출력 디바이스(318)(예를 들어, PCIe 디바이스, USB 디바이스 등), APIC 인터럽트 타이머 값, 또는 이들의 조합과 연관된 레이턴시 내성 정보(420)를 사용하여 구성요소에 대한 슬립 상태를 선택한다. 레이턴시 내성 정보(420)는 적어도 일부 실시예들에서, 입력/출력 디바이스들(318)의 혼잡 레벨을 표시한다. APIC 인터럽트 타이머 값들은 다음 APIC 인터럽트까지의 시간을 표시한다. 슬립 상태가 선택되었을 때, SMU(316)는 하나 이상의 액션(예를 들어, 캐시 플러싱, 전압 레일들에 대한 전력을 강하시키는 클록 게이팅 등)을 수행함으로써 구성요소를 선택된 슬립 상태로 트랜지션하도록 진행한다.
슬립 상태 승격 모듈(408)은 적어도 일부 실시예들에서, 부정확한(덜 효율적인) 슬립 상태가 슬립 상태 선택 모듈(406)에 의해 선택되었다는 결정이 이루어지는 경우 정정 액션들을 수행한다. 예를 들어, 슬립 상태 승격 모듈(408)은 선택된 슬립 상태에 있는 동안 구성요소를 모니터링하고, 구성요소가 주어진 임계치보다 더 길게 선택된 슬립 상태에 체류하였는지를 결정한다. 만약 그렇다면, 슬립 상태 승격 모듈(408)은 적어도 일부 실시예들에서, 구성요소를 다음으로 더 깊은 슬립 상태로 트랜지션한다.
결정 오류 피드백 모듈(410)은 적어도 일부 실시예들에서, 슬립 상태 선택 모듈(406)에 의해 이루어진 슬립 상태 결정들을 모니터링하여 오류들을 검출한다. 검출된 오류들의 예들은 더 깊은 슬립이 선택되어야 할 때 더 얕은 슬립 상태를 선택하는 것 또는 더 얕은 슬립 상태가 선택되어야 할 때 더 깊은 슬립 상태를 선택하는 것을 포함한다. 부정확한 슬립 상태 선택은 예를 들어, 부정확한 슬립 지속기간 예측의 결과이다. 이에 따라, 적어도 일부 실시예들에서, 결정 오류 피드백 모듈(410)은 슬립 지속기간 예측 모듈(404)이 슬립 상태 선택 오류들을 감소시키기 위해 그 후속 슬립 지속기간 예측들을 조절하도록 하는 입력을 슬립 지속기간 예측 모듈(404)에 제공한다.
도 5는 진입 히스테리시스 기간들에서 에너지를 소비하는 대신에 구성요소들을 바로 더 깊은 슬립 상태들로 트랜지션함으로써 처리 디바이스의 에너지 효율을 개선하기 위한 하나의 예시적인 방법(500)의 개요를 흐름도 형태로 예시한다. 블록(502)에서, 모니터 모듈(402)이 SoC 디바이스(300)의 구성요소들에 대한 슬립 상태 지속기간들을 모니터링한다. 블록(504)에서, 슬립 지속기간 예측 모듈(404)이 SoC 디바이스(300)의 구성요소가 슬립 상태로 트랜지션될 슬립 지속기간을 예측한다. 블록(506)에서, 슬립 상태 선택 모듈(406)이 예측된 슬립 지속기간에 기초하여 구성요소에 대한 슬립 상태를 선택한다. 블록(508)에서, SMU(316)이 구성요소를 선택된 슬립 상태로 트랜지션한다. 적어도 일부 실시예들에서, 블록(510)에서, 슬립 상태 승격 모듈(408)이 구성요소의 현재 슬립 상태를 더 깊은 슬립 상태로 승격한다.
도 6은 도 5의 블록(502)에 예시된 슬립 상태 지속기간 모니터링 프로세스에 대한 더 상세한 방법(600)의 일례를 흐름도 형태로 예시한다. 적어도 일부 실시예들에서, 블록(602)에서, SoC 디바이스(300)의 구성요소가 슬립 상태로 트랜지션될 것이라는 결정이 이루어지는 것에 기초하여 모니터링 모듈(402)이 호출된다. 예를 들어, SMU(316)가 SoC 디바이스(300)의 하나 이상의 구성요소가 유휴 상태임을 표시하는 인터럽트를 수신 또는 검출한다. 블록(604)에서, 구성요소가 슬립 상태로 트랜지션될 것이라고 결정하는 것에 기초하여 하나 이상의 타이머가 초기화된다. 블록(606)에서, 구성요소에 대해 웨이크 이벤트가 검출/수신되었는지 여부가 결정된다. 웨이크 이벤트가 검출되지 않았다면, 모니터링 모듈(402)은 웨이크 이벤트가 검출될 때까지 타이머(들)를 유지한다. 구성요소에 대해 웨이크 이벤트가 검출되었다면, 블록(608)에서 타이머(들)가 중지된다. 적어도 일부 실시예들에서, SMU(316)가 구성요소에 대해 슬립 상태 요청 인터럽트를 수신하는 것과 웨이크 이벤트를 수신하는 것과 사이의 기록된 시간이 구성요소의 슬립 상태 지속기간으로서 지칭된다. 그러나, 슬립 지속기간에 대한 다른 구성들이 또한 적용가능하다.
적어도 일부 실시예들에서, 구성요소의 슬립 상태가 더 깊은 슬립 상태라면, 슬립 상태 지속기간은 구성요소가 더 깊은 슬립 상태에 체류한 지속기간뿐만 아니라, 구성요소를 더 얕은 슬립 상태들을 거쳐 트랜지션하는 데 소모된 시간을 또한 포함한다. 예를 들어, 슬립 상태들의 리스트 S = (S1, S2,…, Sn)(여기서 Sn은 SoC 디바이스(300)의 구성요소에 의해 지원되는 가장 깊은 슬립 상태임)를 고려한다. 구성요소는 통상적으로, 구성요소 또는 그 서브 구성요소들에 대한 전력을 강하시키는 논리적 시퀀스로 인해, 더 깊은 슬립 상태 S2에 진입하기 전에 제1 진입 슬립 상태 S1에 진입한다. 이에 따라, 구성요소에 대해 슬립 상태 S2가 선택된다면, 구성요소의 슬립 상태 지속기간은 구성요소가 슬립 상태 S2에 체류하는 시간과, 구성요소를 활성 상태로부터 각 더 얕은 상태를 거쳐 트랜지션하는 데 소모된 시간을 포함한다. 적어도 일부 실시예들에서, 슬립 상태들은 진입 히스테리시스와 연관된다. 이러한 실시예들에서, 구성요소의 슬립 상태 지속기간은 또한, 슬립 상태의 히스테리시스 레이턴시를 포함한다.
도 7은 SoC 디바이스(300)의 구성요소를 제1 슬립 상태(SLEEP1) 및 더 깊은 제2 슬립 상태(SLEEP2)로 트랜지션하기 위한 타이밍의 예시적인 예를 도시한다. 특히, 도 7은 구성요소를 제1 슬립 상태로 트랜지션하기 위한 제1 타이밍 시퀀스(702) 및 구성요소를 더 깊은 제2 슬립 상태로 트랜지션하기 위한 제2 타이밍 시퀀스(704)를 도시한다. 도 7에 도시된 예들에서, H는 ― 구성요소를 활성 상태로부터 타겟 슬립 상태로 트랜지션하기 전의 지연 기간인 ― 진입 히스테리시스 레이턴시에 대응하고; T는 ― 구성요소를 하나의 상태로부터 또 다른 상태로 트랜지션하는 데 초래된 시간인 ― 진입 및 종료 레이턴시들에 대응하고; S는 구성요소가 타겟 슬립 상태에 체류한 시간의 지속기간에 대응한다. 도 7에 도시된 예에서, 제1 슬립 상태(SLEEP1)에 대한 타이밍 시퀀스(702)는 진입 히스테리시스 레이턴시(706)(HSleep1), 진입 레이턴시(708)(TSleep1,entry), 슬립 지속기간(710)(SSleep1,sleep), 및 종료 레이턴시(712)(TSleep1,exit)를 포함한다. 이와 같이, 이 예에서, 제1 슬립 상태에 대한 슬립 상태 지속기간(τ)은 다음과 같이 정의된다:
(식 1)
제2 슬립 상태(SLEEP2)에 대한 타이밍 시퀀스(704)는 제1 슬립 상태에 대한 진입 히스테리시스 레이턴시(706)(HSleep1), 제1 슬립 상태에 대한 진입 레이턴시(708)(TSleep1,entry), 제2 슬립 상태에 대한 진입 레이턴시(714)(TSleep2,entry), 제2 슬립 상태에 대한 슬립 지속기간(716)(SSleep2,sleep), 제2 슬립 상태에 대한 종료 레이턴시(718)(TSleep2,exit), 및 제1 슬립 상태에 대한 종료 레이턴시(712)(TSleep1,exit)를 포함한다. 이와 같이, 이 예에서, 제2 슬립 상태에 대한 슬립 상태 지속기간(τ)은 다음과 같이 정의된다:
(식 2)
이제 도 6으로 돌아가면, 블록(610)에서, 모니터 모듈(402)dl 구성요소에 대해 결정된 슬립 상태 지속기간을 이력 지속기간 정보(414)로서 기록한다. 위에서 설명된 바와 같이, 이력 지속기간 정보(414)는 적어도 일부 실시예들에서, 디바이스 레벨, 구성요소 레벨, 서브 구성요소 레벨, 이들의 조합 등에 대해 저장된다. 적어도 일부 실시예들에서, 이력 지속기간 정보(414)가 각 구성요소마다 또는 각 서브 구성요소마다 기록된다면, 구성요소들 또는 서브 구성요소들은 자신들의 혼잡/유휴 상태를 SMU(316)에 통신한다. 지속기간 정보(414)를 구성요소별로 기록하는 것은 SMU(316)가 멀티미디어 코어들과 같은 구성요소들의 유휴 패턴들에 기초하여 이들의 클러스터에 대한 전력을 최적화할 수 있게 한다.
도 8은 도 5의 블록(504)에 예시된 슬립 상태 지속기간 예측 프로세스에 대한 더 상세한 방법(800)의 일례를 흐름도 형태로 예시한다. 적어도 일부 실시예들에서, 블록(802)에서, SoC 디바이스(300)의 구성요소가 슬립 상태로 트랜지션될 것이라는 결정이 이루어지는 것에 기초하여 슬립 지속기간 예측 모듈(404)이 호출된다. 블록(804)에서, 이력 지속기간 정보(414)가 획득된다. 적어도 일부 실시예들에서, 이력 지속기간 정보(414)는 전체 SoC 디바이스(300)에 대해 획득되는 반면, 다른 실시예들에서, 이력 지속기간 정보(414)는 구성요소에 대해 획득된다. 블록(806)에서, 이력 지속기간 정보(414)가 중앙값 계산, 이동 평균 또는 다른 통계 메트릭들, 머신 러닝, 이들의 조합 등과 같은 하나 이상의 기법을 사용하여 처리된다. 그런 다음, 블록(808)에서, 이력 슬립 상태 지속기간 정보를 처리하는 것에 기초하여 구성요소에 대한 곧 있을 슬립 상태 지속기간(416)이 예측된다. 예를 들어, 이력 지속기간들 D = {D1, D2, D3,…, DL}(여기서 Di는 초 단위의 제i 슬립의 지속기간을 나타내고, L은 기록된 슬립 지속기간의 총 수임)을 고려한다. 이 예에서, 슬립 지속기간 예측 모듈(404)은 D_median = median (D)를 계산함으로써 구성요소에 대한 곧 있을 슬립 상태 지속기간(416)을 예측하고, 적절한 슬립 상태를 결정하기 위해 이를 슬립 상태 선택 블록(506)으로 보낸다. 그런 다음, 예측된 슬립 상태 지속기간(416)은 예를 들어, 슬립 상태 선택 모듈(406)에 의한 사용을 위해 저장 또는 송신되거나 슬립 상태 선택 모듈(406)로 송신된다.
적어도 일부 실시예들에서, SMU(316)는 슬립 지속기간 예측 모듈(404)에 입력을 제공하는 오류 피드백 모듈(410)을 구현한다. 이러한 실시예들에서, 슬립 지속기간 예측 모듈(404)은 이력 지속기간 정보(414)에 더하여 오류 피드백 모듈(410)로부터의 피드백 입력을 사용하여 구성요소에 대한 곧 있을 슬립 상태 지속기간(416)을 예측한다. 오류 피드백 모듈(410)은 적어도 일부 실시예들에서, 예측된 슬립 상태 지속기간(416)에 기초하여 슬립 상태 선택 모듈(406)에 의해 행해진 부정확한 슬립 상태 선택의 횟수를 모니터링한다. 일례에서, 슬립 상태 선택은 더 깊은 슬립 상태가 선택되지만 구성요소의 실제 슬립 상태 지속기간이 더 얕은 슬립 상태가 선택되었어야 했던 때 부정확한 것으로 결정된다. 다른 예에서, 슬립 상태 선택은 더 얕은 슬립 상태가 선택되지만 구성요소의 실제 슬립 상태 지속기간이 더 깊은 슬립 상태가 선택되었어야 했던 때 부정확하다. 오류 피드백 모듈(410)은 슬립 지속기간 예측 모듈(404)에 정정 사항들과 같은 입력을 제공하기 위해 비례-적분-미분(proportional-integral-derivative, PID) 제어기와 같은 하나 이상의 메커니즘을 구현한다. 슬립 지속기간 예측 모듈(404)은 더 정확한 예측된 슬립 상태 지속기간들(416)을 제공하기 위해 그 예측 동작들을 조절하도록 오류 피드백 모듈(410)로부터 수신된 입력을 구현한다. 예를 들어, 슬립 지속기간 예측 모듈(404)은 피드백 입력을 사용하여 SoC 디바이스(300)의 구성요소들에 대한 슬립 상태 지속기간들을 예측하기 위한 하나 이상의 파라미터를 조절한다.
도 9는 도 5의 블록(506)에 예시된 슬립 상태 선택 프로세스에 대한 더 상세한 방법(900)의 일례를 흐름도 형태로 예시한다. 방법(900)에서, 블록(902)에서, SoC 디바이스(300)의 구성요소가 이용가능한 하나 이상의 슬립 상태에 대해 손익 평형 지속기간(418)이 결정된다. 위에서 설명된 바와 같이, 주어진 슬립 상태에 대한 손익 평형 지속기간(418)은 슬립 상태에 체류함으로써 절감된 에너지가 더 얕은 슬립 상태로 단지 트랜지션하고 머무르는 것에 의해 소비되는 에너지와 적어도 같도록 하는 슬립 상태에 구성요소가 머무르는 시간량이다. 주어진 슬립 상태의 에너지는 적어도 일부 실시예들에서, 주어진 슬립뿐만 아니라 임의의 더 낮은 레벨의 슬립 상태에 기초하여 결정된다. 예를 들어, 슬립 상태들의 리스트 S = (S1, S2,…, Sn)(여기서 Sn은 SoC 디바이스(300)의 구성요소에 의해 지원되는 가장 깊은 슬립 상태임)를 고려한다. 위에서 설명된 바와 같이, 구성요소는 통상적으로, 구성요소 또는 그 서브 구성요소들에 전력을 공급하는 논리적 시퀀스로 인해, 슬립 상태 S2에 진입하기 전에 제1 진입 슬립 상태 S1에 진입한다. 이에 따라, 이 예에서, 슬립 상태 S2에 대한 에너지는 (1) 슬립 상태들 S1 및 S2에 진입하기 위해 요구되는 에너지; (2) 슬립 상태들 S1 및 S2에 머무르기 위해 요구되는 에너지; 및 (3) 슬립 상태들 S1 및 S2를 종료하기 위해 요구되는 에너지에 기초하여 계산된다.
예를 들어, 도 7을 다시 참조하면, 슬립 상태 선택 모듈(406)은 주어진(예측된) 슬립 상태 지속기간(τ)에 대해 슬립 상태 SLEEP1 시퀀스(702) 및 SLEEP2 시퀀스(704)에 대한 에너지(E)를 다음과 같이 결정한다:
(식 3)
여기서 Psleep은 대응하는 슬립 상태에 체류할 때 소비되는 전력이고, Pentry는 슬립 상태의 진입 동안 소비되는 전력이고, Pentry는 슬립 상태의 종료 동안 소비되는 전력이다.
(식 4)
슬립 상태 선택 모듈(406) 슬립 상태 및 하나 이상의 더 얕은 슬립 상태에 대해 계산된 에너지(E)에 기초하여, 주어진 슬립 상태에 대한 손익 평형 지속기간(418)을 결정한다. 예를 들어, 적어도 일부 실시예들에서, 슬립 상태 선택 모듈(406)은 슬립 상태의 에너지(E)가 하나 이상의 이전 슬립 상태의 에너지와 같을 때 τ*의 값으로서 주어진 슬립 상태에 대한 손익 평형 지속기간(418)을 결정한다. 이에 따라, 현재의 예에서, 슬립 상태 선택 모듈(406)은 다음에 따라, Esleep1 = Esleep2일 때 τ*의 값으로서 슬립 상태 SLEEP2에 대한 손익 평형 지속기간(τ*)(418)을 계산한다:
(식 5)
이제 도 9로 돌아가면, 블록(904)에서, 구성요소의 예측된 슬립 상태 지속기간(416)이 구성요소가 이용가능한 슬립 상태들 중 하나 이상에 대해 결정된 손익 평형 지속기간(418)과 비교된다. 블록(906)에서, 이 비교에 기초하여 슬립 상태가 선택된다. 적어도 일부 실시예들에서, 구성요소의 예측된 슬립 상태 지속기간(416)이 선택된 슬립 상태에 대한 손익 평형 지속기간(418)을 만족시키도록 하는 가장 깊은 슬립 상태가 선택된다. 예를 들어, 제1 슬립 상태 및 더 깊은 제2 슬립 상태를 고려한다. 이 예에서, 제2 슬립 상태에 대한 손익 평형 지속기간/임계치(418)는 1.5 밀리초이다. 이에 따라, 구성요소의 예측된 슬립 상태 지속기간(416)이 1.5 밀리초와 같다면, 또는 다른 실시예들에서, 1.5 밀리초보다 크다면, 슬립 상태 선택 모듈(406)은 구성요소에 대해 더 깊은 제2 슬립 상태를 선택한다. 그러나, 구성요소의 예측된 슬립 상태 지속기간(416)이 1.5 밀리초보다 작거나, 또는 다른 실시예들에서, 1.5 밀리초와 같다면, 슬립 상태 선택 모듈(406)은 구성요소에 대해 더 얕은 제1 슬립 상태를 선택한다. 구성요소에 대해 슬립 상태가 선택되었으면, 제어는 구성요소가 선택된 슬립 상태로 트랜지션되도록 하는 도 5의 블록(508)으로 진행한다.
적어도 일부 실시예들에서, 슬립 상태 선택 모듈(406)은 구성요소에 대한 슬립 상태를 선택할 때 입력/출력 디바이스들(318)의 레이턴시 내성 정보(420)를 사용한다. 레이턴시 내성 정보(420)는 적어도 일부 실시예들에서, 연관된 입력/출력 디바이스(318)의 혼잡 레벨을 표시하는 값들을 포함한다. 일례에서, 더 긴 값이 유휴 상태를 표시하는 반면, 더 짧은 값은 입력/출력 디바이스(318)가 활성임을 표시한다. 일부 실시예들에서, 레이턴시 내성 정보(420)는 하나 이상의 레지스터를 통해 슬립 상태 선택 모듈(406)에 노출된다. 레이턴시 내성 정보(420)에 더하여, APIC(Advanced Programmable Interrupt Controller) 값들이 적어도 일부 실시예들에서, 슬립 상태 선택을 행할 때 슬립 상태 선택 모듈(406)에 의해 사용된다. 만료 시에, 프로세서를 웨이크하기 위한 인터럽트들을 발행하는 다수의 APIC 타이머들이 존재한다. 슬립 상태 선택 모듈(406)이 이용가능하게 된 APIC 타이머 값들은 다음 APIC 인터럽트까지의 시간을 표시한다. 이에 따라, 슬립 상태 선택 모듈(406)은 적어도 일부 실시예들에서, 초기 슬립 상태 선택이 업데이트되어야 하는지 여부를 결정하기 위해 곧 있을 의무적 타이머 인터럽트들을 모니터링한다. 예를 들어, 슬립 상태 선택 모듈(406)이 초기에 더 깊은 슬립 상태를 선택하지만 레이턴시 내성 정보(420)가 활성 입력/출력 디바이스(318)를 표시하거나 APIC 값이 주어진 시간 임계치 내에서 인터럽트가 발행될 것을 표시한다면, 슬립 상태 선택 모듈(406)은 자신의 슬립 상태 선택을 더 얕은 슬립 상태로 업데이트한다.
도 10은 도 5의 블록(510)에 예시된 슬립 상태 승격 프로세스에 대한 더 상세한 방법(1000)의 일례를 흐름도 형태로 예시한다. 방법(1000)에서, 블록(1002)에서, 구성요소의 슬립 상태에 대해 하나 이상의 슬립 상태 승격 속성이 결정된다. 예를 들어, 구성요소가 선택된 슬립 상태에 체류하고 있었던 시간량(현재 슬립 상태 지속기간)이 결정된다. 적어도 일부 실시예들에서, 슬립 상태 승격 모듈(408)은 하나 이상의 타이머를 사용하여 구성요소의 현재 슬립 상태 지속기간을 결정한다. 다른 예에서, 이력 지속기간 정보(414) 내의 긴 슬립 지속기간들의 퍼센티지 또는 수가 식별된다. 긴 슬립 지속기간은 주어진 적어도 일부 실시예들에서, 슬립 지속기간 임계치를 초과하는 슬립 지속기간이다. 블록(1004)에서, 하나 이상의 슬립 상태 승격 속성이 슬립 상태 승격 기준들과 비교된다. 블록(1006)에서, 하나 이상의 슬립 상태 승격 속성이 슬립 상태 승격 기준들을 만족시키는지 여부에 대한 결정이 이루어진다. 예를 들어, 구성요소의 현재 슬립 상태 지속기간이 임계 시간량 이상보다 크거나 같은지 여부에 대한 결정이 이루어진다. 다른 예에서, 구성요소의 현재 슬립 상태 지속기간이 임계 시간량 이상보다 크거나 같은지 여부에 대한 제1 결정이 이루어지고, 긴 슬립 지속기간들의 퍼센티지/수가 임계 퍼센티지/수보다 크거나 같은지 여부에 대한 제2 결정이 이루어진다.
하나 이상의 슬립 상태 승격 속성이 슬립 상태 승격 기준들을 만족시키지 않는다면, 블록(1008)에서 현재 슬립 상태가 유지된다(즉, 슬립 상태가 승격되지 않는다). 그런 다음, 제어는 블록(1012)으로 진행한다. 그러나, 하나 이상의 슬립 상태 승격 속성이 슬립 상태 승격 기준들을 만족시킨다면, 블록(1010)에서, 구성요소는 현재 슬립 상태로부터 적어도 다음으로 더 깊은 슬립 상태로 트랜지션된다. 블록(1012)에서, 구성요소에 대해 웨이크 이벤트가 검출되었는지 여부가 결정된다. 구성요소에 대한 웨이크 이벤트가 검출되지 않았다면, 제어 흐름은 블록(1002)으로 복귀한다. 그러나, 웨이크 이벤트가 검출되었다면, 블록(1014)에서 구성요소에 대한 슬립 상태 승격 모드가 종료된다.
본 명세서에서 설명된 전력 관리 기법들은 진입 히스테리시스 기간들에서 에너지를 소비하는 대신에 구성요소들을 바로 더 깊은 슬립 상태들로 트랜지션함으로써 처리 디바이스의 에너지 효율을 개선한다. 본 명세서에서 설명된 다양한 실시예들은 포스트-실리콘 브링 업 시간/복잡성을 감소시키기 위해 더 적은 튜닝가능한 파라미터들을 구현하고, 작업 부하 적응적인 것에 의해 작업 부하 범위에 걸쳐 증가된 성능을 제공하고, 슬립 상태 예측 시스템/알고리즘을 모듈식으로 만들고 예측 시스템/알고리즘을 운영 체제 지침들로부터 풀어 놓음으로써 향후 확장/개선을 가능하게 한다.
일부 실시예들에서, 위에서 설명된 장치 및 기법들은 하나 이상의 집적 회로(IC) 디바이스들(또한 집적 회로 패키지들 또는 마이크로칩으로도 지칭됨)을 포함하는 시스템으로 구현된다. 전자 설계 자동화(EDA) 및 컴퓨터 지원 설계(CAD) 소프트웨어 툴들이 적어도 일부 실시예들에서, 표준 셀들의 설계 및 표준 셀들을 구현하는 IC 디바이스들의 설계 및 제조에 사용된다. 이러한 설계 툴들은 통상적으로 하나 이상의 소프트웨어 프로그램으로서 나타내어진다. 하나 이상의 소프트웨어 프로그램은 회로부를 제조하는 제조 시스템을 설계하거나 적응시키기 위한 프로세스의 적어도 일부를 수행하기 위한 하나 이상의 IC 디바이스의 회로부를 나타내는 코드에 대해 동작하는 컴퓨터 시스템을 조작하기 위해 컴퓨터 시스템에 의해 실행가능한 코드를 포함한다. 이 코드는 적어도 일부 실시예들에서, 명령어들, 데이터, 또는 명령어들과 데이터의 조합을 포함할 수 있다. 설계 툴 또는 제조 툴을 나타내는 소프트웨어 명령어들은 통상적으로 컴퓨팅 시스템에 액세스가능한 컴퓨터 판독가능 저장 매체에 저장된다. 마찬가지로, IC 디바이스의 설계 또는 제조의 하나 이상의 단계를 나타내는 코드도 적어도 일부 실시예들에서, 동일한 컴퓨터 판독가능 저장 매체 또는 상이한 컴퓨터 판독가능 저장 매체에 저장되고 이로부터 액세스된다.
컴퓨터 판독가능 저장 매체는 적어도 일부 실시예들에서, 컴퓨터 시스템에 명령어들 및/또는 데이터를 제공하기 위해 사용 동안 컴퓨터 시스템에 의해 액세스가능한 임의의 비일시적인 저장 매체, 또는 비일시적인 저장 매체들의 조합을 포함한다. 이와 같은 저장 매체들은 적어도 일부 실시예들에서, 광학 매체들(예를 들어, CD(compact disc), DVD(digital versatile disc), 블루레이 디스크), 자기 매체들(예를 들어, 플로피 디스크, 자기 테이프, 또는 자기 하드 드라이브), 휘발성 메모리(예를 들어, 랜덤 액세스 메모리(RAM) 또는 캐시), 비휘발성 메모리(예를 들어, 판독 전용 메모리(ROM) 또는 플래시 메모리), 또는 미세 전자 기계 시스템(MEMS) 기반 저장 매체들을 포함하지만 이에 제한되지 않는다. 컴퓨터 판독가능 저장 매체는 적어도 일부 실시예들에서, 컴퓨팅 시스템에 임베드되거나(예를 들어, 시스템 RAM 또는 ROM), 컴퓨팅 시스템에 고정적으로 부착되거나(예를 들어, 자기 하드 드라이브), 컴퓨팅 시스템에 탈착가능하게 부착되거나(예를 들어, 광학 디스크 또는 USB(universal serial bus) 기반 플래시 메모리), 또는 유선 또는 무선 네트워크를 통해 컴퓨터 시스템에 결합될 수 있다(예를 들어, 네트워크 액세스가능 스토리지(NAS)).
일부 실시예들에서, 위에서 설명된 기법들의 특정 양태들은 소프트웨어를 실행하는 처리 시스템의 하나 이상의 프로세서에 의해 구현된다. 소프트웨어는 비일시적인 컴퓨터 판독가능 저장 매체 상에 저장되거나 또는 그 외 유형적으로 구현되는 하나 이상의 실행가능한 명령어 집합을 포함한다. 소프트웨어는 적어도 일부 실시예들에서, 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서를 위에서 설명된 기법들의 하나 이상의 양태를 수행하도록 조작하는 명령어들 및 특정 데이터를 포함한다. 비일시적인 컴퓨터 판독가능 저장 매체는 적어도 일부 실시예들에서, 예를 들어, 자기 또는 광학 디스크 저장 디바이스, 솔리드 스테이트 저장 디바이스들 이를테면 플래시 메모리, 캐시, 랜덤 액세스 메모리(RAM), 또는 다른 비휘발성 메모리 디바이스 또는 디바이스들 등을 포함한다. 비일시적인 컴퓨터 판독가능 저장 매체 상에 저장된 실행가능한 명령어들은 적어도 일부 실시예들에서, 소스 코드, 어셈블리 언어 코드, 객체 코드, 또는 하나 이상의 프로세서에 의해 해석되거나 그 외 실행가능한 다른 명령어 포맷이다.
일반적인 설명으로 위에서 설명된 모든 행위들 또는 요소들이 요구되는 것은 아닐 수 있다는 것, 특정 행위 또는 디바이스의 일부가 요구되지 않을 수 있다는 것, 그리고 설명된 행위들 또는 요소들에 더하여, 하나 이상의 추가 행위가 수행되거나 요소가 포함될 수 있다는 것에 유의한다. 더 나아가, 행위들이 나열된 순서는 반드시 이것들이 수행되는 순서인 것은 아니다. 또한, 개념들은 구체적인 실시예들을 참조하여 설명되었다. 그러나, 당업자는 아래 청구항들에 제시된 바에 따른 본 개시의 범위로부터 벗어나지 않고 다양한 수정 및 변경이 이루어질 수 있다는 것을 이해한다. 따라서, 본 명세서 및 도면들은 제한적인 의미가 아니라 예시적인 것으로 여겨져야 하고, 상기한 모든 수정이 본 개시의 범위 내에 포함되는 것으로 의도된다.
이점들, 다른 장점들 및 문제들에 대한 솔루션들이 구체적인 실시예들과 관련하여 위에서 설명되었다. 그러나, 임의의 이점, 장점, 또는 솔루션을 발생시키거나 더 확연히 드러낼 수 있는 이점들, 장점들, 문제들에 대한 솔루션들, 및 임의의 특징(들)이 임의의 또는 모든 청구항들의 임계적, 필수적, 또는 본질적 특징인 것으로서 간주되지 않아야 한다. 또한, 위에서 개시된 특정 실시예들은 개시된 대상이 본 명세서에서의 교시 내용의 이득을 받는 당업자들에게 명백한 상이하지만 균등한 방식들로 수정 및 실시될 수 있음에 따라 단지 예시적인 것일 뿐이다. 아래 청구항들에서 기술되는 것 이외에, 제시되는 본 명세서에서의 구성 또는 설계의 세부 사항들로의 제한이 의도되지 않는다. 이에 따라, 위에서 개시된 특정 실시예들이 대체 또는 수정될 수 있고, 모든 이와 같은 변형예들은 개시된 대상의 범위 내인 것으로 고려된다는 것이 명백하다. 따라서, 본 명세서에서 추구되는 보호는 아래 청구항들에 제시되는 바에 따른다.

Claims (20)

  1. 방법으로서,
    처리 디바이스의 구성요소에 대한 슬립 상태 지속기간(sleep state duration)을 예측하는 단계; 및
    상기 예측된 슬립 상태 지속기간과 적어도 하나의 지속기간 임계치의 비교에 기초하여 복수의 슬립 상태들로부터 선택된 슬립 상태로 상기 구성요소를 트랜지션(transition)하는 단계를 포함하고, 상기 복수의 슬립 상태들의 각 슬립 상태는 상기 복수의 슬립 상태들의 이전 슬립 상태보다 더 낮은 전력 상태인 것인, 방법.
  2. 제1항에 있어서, 상기 선택된 슬립 상태로 상기 구성요소를 트랜지션하는 단계는 진입 히스테리시스 지연(entry hysteresis delay) 없이 상기 구성요소를 트랜지션하는 단계를 포함하는 것인, 방법.
  3. 제1항 또는 제2항에 있어서, 상기 슬립 상태 지속기간은 이력 슬립 상태 지속기간(historical sleep state duration) 정보에 기초하여 예측되는 것인, 방법.
  4. 제3항에 있어서, 상기 이력 슬립 상태 지속기간 정보는 상기 처리 디바이스와 연관된 이전 슬립 상태들의 지속기간들을 포함하는 것인, 방법.
  5. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 적어도 하나의 지속기간 임계치는 슬립 상태에 체류함으로써 절감되는 에너지가 상기 구성요소를 상기 슬립 상태로 그리고 상기 슬립 상태로부터 트랜지션하는 것의 에너지 비용과 적어도 같도록, 상기 구성요소가 상기 적어도 하나의 지속기간 임계치와 연관된 상기 슬립 상태 내에 체류하는 시간의 지속기간을 표시하는 것인, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 슬립 상태를 선택하는 단계는:
    상기 예측된 슬립 상태 지속기간이 상기 적어도 하나의 지속기간 임계치를 만족시키지 못한다고 결정하는 단계; 및
    상기 예측된 슬립 상태 지속기간이 상기 적어도 하나의 지속기간 임계치를 만족시키지 못하는 것에 응답하여, 상기 복수의 슬립 상태들 중의 적어도 제2 슬립 상태보다 더 높은 전력 상태인 상기 복수의 슬립 상태들 중의 제1 슬립 상태를 선택하는 단계를 포함하는 것인, 방법.
  7. 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 슬립 상태를 선택하는 단계는:
    상기 예측된 슬립 상태 지속기간이 상기 적어도 하나의 지속기간 임계치를 만족시킨다고 결정하는 단계; 및
    상기 예측된 슬립 상태 지속기간이 상기 적어도 하나의 지속기간 임계치를 만족시키는 것에 응답하여, 상기 복수의 슬립 상태들 중의 적어도 제2 슬립 상태보다 더 낮은 전력 상태인 상기 복수의 슬립 상태들 중의 제1 슬립 상태를 선택하는 단계를 포함하는 것인, 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    슬립 상태의 한 번 이상의 부정확한 선택이 이전에 이루어졌음을 표시하는 피드백 입력을 수신하는 단계; 및
    상기 피드백 입력을 수신하는 것에 응답하여, 상기 처리 디바이스의 구성요소들에 대한 슬립 상태 지속기간들을 예측하기 위해 사용되는 하나 이상의 파라미터를 조절하는 단계를 더 포함하는, 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 구성요소와 연관된 인터럽트가 임계 시간량 내에 발행될 것이라고 결정하는 단계; 및
    상기 구성요소와 연관된 인터럽트가 상기 임계 시간량 내에 발행될 것이라고 결정하는 것에 응답하여, 상기 복수의 슬립 상태들과 상이한 슬립 상태를 선택하는 단계를 더 포함하고, 상기 상이한 슬립 상태는 상기 예측된 슬립 상태 지속기간을 상기 적어도 하나의 지속기간 임계치와 비교하는 것에 기초하여 선택된 슬립 상태보다 더 높은 전력 상태인 것인, 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 구성요소가 현재 상기 선택된 슬립 상태에 체류해 온 시간의 지속기간을 결정하는 단계;
    상기 시간의 지속기간을 임계 시간량과 비교하는 단계; 및
    상기 시간의 지속기간이 상기 임계 시간량을 만족시키는 것에 기초하여 상기 구성요소를 상이한 슬립 상태로 트랜지션하는 단계를 더 포함하고, 상기 상이한 슬립 상태는 상기 선택된 슬립 상태보다 더 낮은 전력 상태인 것인, 방법.
  11. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 구성요소가 현재 상기 선택된 슬립 상태에 체류해 온 시간의 지속기간을 결정하는 단계;
    임계 시간의 지속기간을 만족시키는 상기 처리 디바이스와 연관된 이력 슬립 상태 지속기간들의 세트에서의 슬립 상태 지속기간들의 퍼센티지를 결정하는 단계;
    상기 시간의 지속기간을 임계 시간량과 비교하는 단계;
    상기 슬립 상태 지속기간들의 퍼센티지를 임계 퍼센티지와 비교하는 단계; 및
    상기 시간의 지속기간이 상기 임계 시간량을 만족시키는 것과 상기 슬립 상태 지속기간들의 퍼센티지가 상기 임계 퍼센티지를 만족시키는 것에 기초하여 상기 구성요소를 상이한 슬립 상태로 트랜지션하는 단계를 더 포함하고, 상기 상이한 슬립 상태는 상기 선택된 슬립 상태보다 더 낮은 전력 상태인 것인, 방법.
  12. 처리 디바이스로서,
    프로세서;
    상기 처리 디바이스의 구성요소에 대한 슬립 상태 지속기간을 예측하는 슬립 상태 지속기간 예측 모듈; 및
    상기 예측된 슬립 상태 지속기간과 적어도 하나의 지속기간 임계치의 비교에 기초하여 복수의 슬립 상태들로부터 선택된 슬립 상태로 상기 구성요소를 트랜지션하는 시스템 관리 유닛을 포함하고, 상기 복수의 슬립 상태들의 각 슬립 상태는 상기 복수의 슬립 상태들의 이전 슬립 상태보다 더 낮은 전력 상태인 것인, 처리 디바이스.
  13. 제12항에 있어서, 상기 시스템 관리 유닛은 또한, 진입 히스테리시스 지연 없이 상기 구성요소를 상기 선택된 슬립 상태로 트랜지션하는 것인, 처리 디바이스.
  14. 제12항 또는 제13항에 있어서, 상기 슬립 상태 지속기간은 상기 처리 디바이스와 연관된 이전 슬립 상태들의 지속기간들을 포함하는 이력 슬립 상태 지속기간 정보에 기초하여 예측되는 것인, 처리 디바이스.
  15. 제12항 내지 제14항 중 어느 한 항에 있어서,
    슬립 상태 선택 모듈을 더 포함하며, 상기 슬립 상태 선택 모듈은:
    상기 예측된 슬립 상태 지속기간이 상기 적어도 하나의 지속기간 임계치를 만족시키지 못한다고 결정하고; 그리고
    상기 예측된 슬립 상태 지속기간이 상기 적어도 하나의 지속기간 임계치를 만족시키지 못하는 것에 응답하여, 상기 복수의 슬립 상태들 중의 적어도 제2 슬립 상태보다 더 높은 전력 상태인 상기 복수의 슬립 상태들 중의 제1 슬립 상태를 선택함으로써, 상기 복수의 슬립 상태들로부터 상기 슬립 상태를 선택하는 것인, 처리 디바이스.
  16. 제12항 내지 제14항 중 어느 한 항에 있어서,
    슬립 상태 선택 모듈을 더 포함하며, 상기 슬립 상태 선택 모듈은:
    상기 예측된 슬립 상태 지속기간이 상기 적어도 하나의 지속기간 임계치를 만족시킨다고 결정하고; 그리고
    상기 예측된 슬립 상태 지속기간이 상기 적어도 하나의 지속기간 임계치를 만족시키는 것에 응답하여, 상기 복수의 슬립 상태들 중의 적어도 제2 슬립 상태보다 더 낮은 전력 상태인 상기 복수의 슬립 상태들 중의 제1 슬립 상태를 선택함으로써, 상기 복수의 슬립 상태들로부터 상기 슬립 상태를 선택하는 것인, 처리 디바이스.
  17. 제12항 내지 제16항 중 어느 한 항에 있어서,
    상기 슬립 상태 지속기간 예측 모듈에 피드백 입력을 제공하는 피드백 모듈을 더 포함하며, 상기 피드백 입력은 한 번 이상의 부정확한 슬립 상태 선택이 이루어졌음을 표시하고,
    상기 슬립 상태 지속기간 예측 모듈이 상기 피드백 입력에 기초하여 상기 처리 디바이스의 구성요소들에 대한 슬립 상태 지속기간들을 예측하기 위해 사용되는 하나 이상의 파라미터를 조절하는 것인, 처리 디바이스.
  18. 제12항 내지 제17항 중 어느 한 항에 있어서,
    슬립 상태 승격 모듈(sleep state promotion module)을 더 포함하며, 상기 슬립 상태 승격 모듈은,
    상기 구성요소가 현재 상기 선택된 슬립 상태에 체류해 온 시간의 지속기간을 결정하고;
    상기 시간의 지속기간을 임계 시간량과 비교하고; 그리고
    상기 시간의 지속기간이 상기 임계 시간량을 만족시키는 것에 기초하여 상기 구성요소를 상이한 슬립 상태로 트랜지션하고, 상기 상이한 슬립 상태는 상기 선택된 슬립 상태보다 더 낮은 전력 상태인 것인, 처리 디바이스.
  19. 처리 디바이스로서,
    프로세서;
    상기 처리 디바이스와 연관된 복수의 슬립 상태들의 각 슬립 상태의 지속기간을 모니터링하고, 또한, 상기 지속기간들을 이력 슬립 상태 지속기간들로서 저장하는 모니터링 모듈;
    상기 이력 슬립 상태 지속기간들에 기초하여 상기 처리 디바이스의 구성요소에 대한 슬립 상태 지속기간을 예측하는 슬립 상태 지속기간 예측 모듈; 및
    또한, 상기 예측된 슬립 상태 지속기간과 적어도 하나의 지속기간 임계치의 비교에 기초하여 복수의 슬립 상태들로부터 선택된 슬립 상태로 상기 구성요소를 트랜지션하는 시스템 관리 유닛을 포함하고, 상기 복수의 슬립 상태들의 각 슬립 상태는 상기 복수의 슬립 상태들의 이전 슬립 상태보다 더 낮은 전력 상태인 것인, 처리 디바이스.
  20. 제19항에 있어서,
    상기 구성요소가 현재 상기 선택된 슬립 상태에 체류해 온 시간의 지속기간이 임계 시간량을 만족시킨다고 결정하고, 또한, 상기 선택된 슬립 상태보다 더 낮은 전력 슬립 상태인 상이한 슬립 상태로 상기 구성요소를 트랜지션하는 슬립 상태 승격 모듈을 더 포함하는, 처리 디바이스.
KR1020237036803A 2021-03-31 2022-03-29 유휴 지속기간 이력에 기초한 저전력 상태 선택 KR20240004362A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/219,097 US11543877B2 (en) 2021-03-31 2021-03-31 Low power state selection based on idle duration history
US17/219,097 2021-03-31
PCT/US2022/022359 WO2022212385A1 (en) 2021-03-31 2022-03-29 Low power state selection based on idle duration history

Publications (1)

Publication Number Publication Date
KR20240004362A true KR20240004362A (ko) 2024-01-11

Family

ID=83449053

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237036803A KR20240004362A (ko) 2021-03-31 2022-03-29 유휴 지속기간 이력에 기초한 저전력 상태 선택

Country Status (6)

Country Link
US (2) US11543877B2 (ko)
EP (1) EP4314990A1 (ko)
JP (1) JP2024512468A (ko)
KR (1) KR20240004362A (ko)
CN (1) CN117377925A (ko)
WO (1) WO2022212385A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230273890A1 (en) * 2022-02-28 2023-08-31 Advanced Micro Devices, Inc. Host controller and bus-attached peripheral device power consumption reduction
CN115756143B (zh) * 2022-11-30 2024-03-12 深圳市领创星通科技有限公司 数据包处理的节能方法、装置、计算机设备和存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011120019A2 (en) 2010-03-26 2011-09-29 Virtualmetrix, Inc. Fine grain performance resource management of computer systems
CN104272202B (zh) 2012-06-29 2017-07-14 哈曼(中国)投资有限公司 用于介接传感器和控制器的车辆通用控制设备
US9244518B2 (en) 2012-12-20 2016-01-26 Xerox Corporation Multi-mode device power-saving optimization
US9329658B2 (en) 2012-12-28 2016-05-03 Intel Corporation Block-level sleep logic
US9471130B2 (en) * 2013-10-25 2016-10-18 Advanced Micro Devices, Inc. Configuring idle states for entities in a computing device based on predictions of durations of idle periods
US9971397B2 (en) 2014-10-08 2018-05-15 Apple Inc. Methods and apparatus for managing power with an inter-processor communication link between independently operable processors
US9965220B2 (en) * 2016-02-05 2018-05-08 Qualcomm Incorporated Forced idling of memory subsystems
US11372464B2 (en) 2017-06-12 2022-06-28 Intel Corporation Adaptive parameterization for maximum current protection

Also Published As

Publication number Publication date
CN117377925A (zh) 2024-01-09
US20230088994A1 (en) 2023-03-23
US11543877B2 (en) 2023-01-03
JP2024512468A (ja) 2024-03-19
EP4314990A1 (en) 2024-02-07
WO2022212385A1 (en) 2022-10-06
US20220317757A1 (en) 2022-10-06

Similar Documents

Publication Publication Date Title
US9904346B2 (en) Methods and apparatus to improve turbo performance for events handling
US20230088994A1 (en) Low power state selection based on idle duration history
TWI525547B (zh) 用以避免無效率核心跳換及提供硬體輔助低功率狀態選擇之機構
US9110671B2 (en) Idle phase exit prediction
TWI537821B (zh) 對每一核心提供電壓及頻率控制之技術
EP2073097A2 (en) Transitioning a processor package to a low power state
KR101471303B1 (ko) 그래픽 처리 장치를 위한 전력 관리 장치 및 방법
US20140181553A1 (en) Idle Phase Prediction For Integrated Circuits
EP3742256A1 (en) Priority based application event control (paec) to reduce power consumption
US20180173538A1 (en) Systems, methods and devices for dynamic power management of devices using game theory
US20220187901A1 (en) Power management advisor to support power management control
US11455025B2 (en) Power state transitions
US11703930B2 (en) Platform power manager for rack level power and thermal constraints
US9043628B2 (en) Power management of multiple compute units sharing a cache
CN114787777A (zh) 异构处理器之间的任务转移方法
KR101896494B1 (ko) 컴퓨팅 디바이스들에서의 전력 관리
US11899551B1 (en) On-chip software-based activity monitor to configure throttling at a hardware-based activity monitor
KR20240064000A (ko) 전원 차단 상태의 컨트롤러를 관리하는 방법 및 장치