KR101510028B1 - 전력 관리를 위한 시스템 및 방법 - Google Patents

전력 관리를 위한 시스템 및 방법 Download PDF

Info

Publication number
KR101510028B1
KR101510028B1 KR1020137015286A KR20137015286A KR101510028B1 KR 101510028 B1 KR101510028 B1 KR 101510028B1 KR 1020137015286 A KR1020137015286 A KR 1020137015286A KR 20137015286 A KR20137015286 A KR 20137015286A KR 101510028 B1 KR101510028 B1 KR 101510028B1
Authority
KR
South Korea
Prior art keywords
timer
power management
response
management module
processor
Prior art date
Application number
KR1020137015286A
Other languages
English (en)
Other versions
KR20130087564A (ko
Inventor
디 탕
빈센트 짐머
제임스 에드워즈
라훌 크한나
유푸 리
압둘 바일리
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20130087564A publication Critical patent/KR20130087564A/ko
Application granted granted Critical
Publication of KR101510028B1 publication Critical patent/KR101510028B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • 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/3243Power saving in microcontroller unit
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Abstract

시스템은 복수의 프로세서 코어들을 포함한다. 프로세서 코어들은 하나 이상의 애플리케이션 프로세서(AP) 코어들 및 부트 스트랩 프로세서(BSP) 코어를 포함할 수 있다. 기본 입력/출력 시스템(BIOS)은 I/O 동작에 응답하여 정지 함수를 호출하기 위한 I/O 디바이스 모듈, I/O 디바이스에 커플링하는 전력 관리 모듈 및 전력 관리 모듈에 커플링하는 타이머 모듈을 포함한다. 전력 관리 모듈은 정지 함수의 정지 지연에 기초하여 타이머 모듈의 타이머 기간을 조정할 것이다. 타이머 관리 모듈은 정지 함수에 연결하고, 정지 지연을 미리 결정된 임계치와 비교하고, 정지 지연이 더 길다는 결정에 응답하여 타이머 기간을 정지 지연으로 설정할 수 있다. 전력 관리 모듈은 전력을 절감하기 위해 타이머 기간 동안 BSP를 슬립 모드에 둘 수 있다.

Description

전력 관리를 위한 시스템 및 방법{SYSTEM AND METHOD FOR POWER MANAGEMENT}
많은 디지털/전자 시스템들은 시스템들이 동작하는 경우 전력을 소모할 수 있다. 전자 시스템 내의 하나 이상의 컴포넌트들 또는 서브시스템들이 유휴 상태인 경우라도, 하나 이상의 서브시스템들은 여전히 전력을 소모할 수 있다. 예를 들어, 컴퓨팅 시스템에서, 컴퓨팅 시스템 내의 하나 이상의 프로세서들은 시스템이 하나 이상의 프로세서들의 전체 계산 능력들을 사용하지 않는 경우 불필요하게 전력을 소모할 수 있다. 일부 시스템들은 프로세서들을 저전력 모드에 두기 위해 운영 체제(OS)를 이용할 수 있다.
여기서 기술된 본 발명은 첨부 도면들에서 제한이 아닌 예로서 예시된다. 예시의 간략성 및 명료성을 위해, 도면들에 예시된 엘리먼트들은 반드시 축척에 맞게 그려지지는 않는다. 예를 들어, 일부 엘리먼트들의 디멘젼들은 명료성을 위해 다른 엘리먼트들에 비해 과장될 수 있다. 또한, 적절히 고려되는 경우, 참조 라벨들은 대응하는 또는 유사한 엘리먼트들을 표시하기 위해 도면들 간에 반복된다.
도 1a는 본 발명의 실시예에 따른 예시적인 시스템의 블록도이다.
도 1b는 본 발명의 대안적인 실시예에 따른 또다른 예시적인 시스템의 블록도이다.
도 2는 본 발명의 실시예에 따른 또다른 예시적인 시스템의 개략도이다.
도 3a 및 3b는 본 발명의 일부 실시예들에 따른 흐름도들이다.
도 4a 및 4b는 본 발명의 일부 실시예들에 따른 타이머 기간의 예시적인 변경들의 개략도들이다.
도 5a 및 5b는 본 발명의 일부 실시예들에 따른 흐름도들이다.
후속하는 기재는 감소 전력 소모 모드를 제공하는 사용 모델을 제공하기 위한 기법을 기술한다. 기법들의 구현예들은 컴퓨팅 시스템들에 제한되는 것이 아니라, 이는 예를 들어, 임의의 다른 디지털/전자 디바이스와 같은 유사한 목적들을 위한 임의의 실행 환경들에 의해 사용될 수 있다. 후속하는 기재에서, 다수의 특정 상세항목들, 예를 들어, 로직 구현예들, op코드들, 오퍼랜드들을 특정하기 위한 수단, 자원 파티셔닝/공유/복제 구현예들, 시스템 컴포넌트들의 타입들 및 상호관계들, 및 로직 파티셔닝/통합 선택들이 본 발명의 더 완전한 이해를 제공하기 위해 설명된다. 그러나, 본 발명은 이러한 특정 상세항목들 없이도 구현될 수 있다. 다른 경우들에서, 제어 구조들 및 전체 소프트웨어 명령 시퀀스들은 본 발명을 모호하게 하지 않기 위해 상세하게 도시되지 않는다.
"일 실시예", "실시예", "예시적인 실시예" 등에 대한 본 명세서에서의 참조들은 기술된 실시예가 특정 특징, 구조 또는 특성을 포함할 수 있지만, 모든 실시예가 특정 특징, 구조 또는 특성을 반드시 포함하지 않을 수도 있다는 점을 표시한다. 또한, 이러한 문구들은 동일한 실시예를 반드시 참조하는 것은 아니다. 또한, 특정 특징, 구조 또는 특성이 실시예와 관련하여 설명되는 경우, 이것이 명시적으로 기술되든 아니든 간에, 다른 실시예들과 관련하여 이러한 특징, 구조 또는 특성을 실행하는 것은 당업자의 지식 내에 있다는 점이 진술된다.
본 발명의 실시예들은 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 임의의 조합에서 구현될 수 있다. 본 발명의 실시예들은 또한, 하나 이상의 프로세서들에 의해 판독되고 실행될 수 있는 머신 판독가능한 매체 상에 저장된 명령들로서 구현될 수 있다. 머신-판독가능한 매체는 머신(예를 들어, 컴퓨팅 디바이스)에 의해 판독가능한 형태로 정보를 저장 또는 전송하기 위한 임의의 메커니즘을 포함할 수 있다. 예를 들어, 머신-판독가능한 매체는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스들, 전기, 광학, 음향 또는 다른 형태의 전파된 신호들(예를 들어, 반송파들, 적외선 신호들, 디지털 신호들 등), 등을 포함할 수 있다.
후속하는 설명은 제한으로서 해석되는 것이 아니라 오직 설명의 목적으로 사용되는 제1, 제2 등과 같은 용어들을 포함할 수 있다.
도 1a는 시스템(100)의 예시적인 실시예의 블록도를 예시한다. 시스템(100)은 프로세서(102)를 포함할 수 있다. 프로세서(102)는 소프트웨어를 실행하고 그리고/또는 데이터 신호들을 프로세싱할 수 있는 임의의 타입의 프로세서들을 포함할 수 있다. 일 실시예에서, 프로세서(102)는 복합 명령 세트 컴퓨터(CISC) 마이크로프로세서, 축소 명령 세트 컴퓨팅(RISC) 마이크로프로세서, 매우 긴 명령 워드(VLIW) 마이크로프로세서, 명령 세트들의 조합을 실행하는 프로세서, 또는 임의의 다른 프로세서 디바이스, 예를 들어, 마이크로프로세서, 디지털 신호 프로세서 또는 마이크로제어기와 같은 디지털 신호 프로세서를 포함할 수 있다.
도 1a가 오직 하나의 이러한 프로세서(102)를 도시하지만, 시스템(100) 내의 하나 이상의 프로세서들이 존재할 수 있고, 하나 이상의 프로세서들은 다수의 스레드들, 다수의 코어들 등을 포함할 수 있다. 본 개선사항은 컴퓨팅 시스템들에 제한되지 않는다. 본 발명의 대안적인 실시예들은 통합된 확장가능 펌웨어 인터페이스(UEFI) 기본 입력/출력 시스템(BIOS)을 사용하는 임의의 폼팩터 디바이스들, 예를 들어, 핸드헬드 디바이스들 및 임베디드 애플리케이션들에서 사용될 수 있다. 핸드헬드 디바이스들의 일부 예들은 셀룰러 전화, 인터넷 프로토콜 디바이스들, 디지털 카메라들, 개인 디지털 정보 단말(PDA)들, 또는 넷북 또는 노트북과 같은 핸드헬드 PC들을 포함한다. 임베디드 애플리케이션들은 마이크로제어기, 디지털 신호 프로세서(DSP), 시스템 온 칩, 네트워크 컴퓨터(넷PC), 셋톱 박스들, 네트워크 허브들, 광역 네트워크(WAN) 스위치들 또는 임의의 다른 시스템을 포함할 수 있다.
프로세서들(102)은 시스템 로직 칩(104)에 커플링될 수 있다. 예를 들어, 예시된 실시예에서의 시스템 로직 칩(104)은 메모리 제어기 허브(MCH)일 수 있다. 일 실시예에서, MCH(104)는 예를 들어, 그래픽 커맨드들, 데이터 및 텍스쳐들의 저장을 위한 그리고/또는 명령들 및 데이터 저장을 위한 시스템 메모리(106)로의 메모리 경로(120)를 제공할 수 있다. 메모리 경로(120)는 메모리 버스를 포함할 수 있다. MCH(104)는 프로세서(102), 시스템 메모리(106) 및 시스템(100) 내의 다른 컴포넌트들 사이에서 데이터 신호들을 전달하고, 프로세서(102), 시스템 메모리(106) 및 시스템 I/O 사이에서 데이터 신호들을 브리징할 수 있다. 메모리(106)는 하드 디스크, 플로피 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 플래시 메모리, 또는 프로세서(102)에 의해 판독가능한 임의의 다른 타입의 매체일 수 있다.
MCH(104)는 로컬 I/O 상호접속을 통해 I/O 제어기 허브(ICH)(108)에 커플링될 수 있다. 실시예에서, 로컬 I/O 상호접속은 주변 컴포넌트 상호접속(PCI) 버스와 같은 고속 I/O 버스일 수 있다. ICH(108)는 예를 들어, 로컬 I/O 상호접속을 통해, 하나 이상의 I/O 디바이스들에 대한 접속들을 제공할 수 있다. 일부 예들은 데이터 저장 디바이스(118), 오디오 I/O(120), 키보드/마우스 I/O(122), 및 네트워크 제어기(116), 또는 다른 집적 I/O 컴포넌트들, 예컨대, IDE(integrated driver electronics), 로컬 영역 네트워크(LAN) 및 유니버셜 직렬 버스(USB)와 같은 직렬 확장 포트, PCI 슬롯들(미도시), 무선 트랜시버, 레거시 I/O 제어기 등을 포함할 수 있다. 데이터 저장 디바이스(118)는 하드 디스크 드라이브, 플로피 디스크 드라이브, CD-ROM 디바이스, 플래시 메모리 디바이스, 또는 다른 대용량 저장 디바이스를 포함할 수 있다.
도 1a를 참조하면, 플래시 메모리(112)와 같은 비휘발성 메모리가, 예를 들어, 로우 핀 카운트(LPC) 버스를 통해 ICH(108)에 커플링될 수 있다. BIOS 펌웨어(114)는 플래시 메모리(112)에 상주할 수 있고, 부트업은 플래시 메모리로부터의 명령들 또는 펌웨어를 실행할 수 있다. 도 1a가 플래시 메모리(112)에서의 BIOS 펌웨어(114)를 예시하지만, 일부 구현예들에서, BIOS 펌웨어(114)는 펌웨어 허브 등과 같은 다른 비휘발성 메모리에 저장될 수 있다. 일 실시예에서, BIOS 펌웨어(114)는 통합된 확장가능 펌웨어 인터페이스(UEFI) 펌웨어 또는 임의의 다른 펌웨어에 의해 구현될 수 있다.
도 1a가 시스템(100)을 예시하지만, 본 발명에 따른 실시예들은 복수의 하드웨어 코어들을 사용하는 플랫폼 또는 프로세서 또는 공동프로세서를 사용하는 플랫폼, I/O 허브를 사용하는 플랫폼과 같은 임의의 다른 하드웨어 아키텍쳐에서 사용될 수 있거나, 또는 프로세서들 내에 구현되는 메모리 제어 등이 사용될 수 있다.
도 1b는 본 발명의 원리들을 구현하는 시스템(140)의 대안적인 실시예를 예시한다. 시스템(140)은 프로세서(142)를 포함할 수 있다. 프로세서(142)는 소프트웨어를 실행할 수 있는 임의의 타입의 프로세서들을 포함할 수 있고 그리고/또는 데이터 신호들을 프로세싱할 수 있다. 일 실시예에서, 프로세서(142)는 프로세서(102)에 대해 전술된 바와 같은 임의의 타입의 프로세서들 또는 프로세서 디바이스들을 포함할 수 있다. 일 실시예에서, 프로세서(142)는 예를 들어, 그래픽 커맨드들, 데이터 및 텍스쳐들의 저장을 위해 그리고/또는 명령 및 데이터 저장을 위해 메모리 경로(미도시)를 통해 시스템 메모리(144)에 커플링될 수 있다. 또다른 실시예에서, 프로세서(142)는 PCI 상호접속을 통해 하나 이상의 주변 컴포넌트 상호접속(PCI) 포트들(160)에 커플링될 수 있지만, 일부 실시예에서, PCI 포트들(160)은 요구되지 않을 수 있다. 메모리(144)는 하드 디스크, 플로피 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 플래시 메모리, 또는 프로세서(142)에 의해 판독가능한 임의의 다른 타입의 매체일 수 있다.
도 1b가 오직 하나의 이러한 프로세서(142)를 도시하지만, 시스템(140) 내에 하나 이상의 프로세서들이 존재할 수 있으며, 하나 이상의 프로세서들은 다수의 스레드들, 다수의 코어들 등을 포함할 수 있다. 본 개선 사항들은 컴퓨터 시스템들 또는 데이터 프로세싱 디바이스 시스템들에 제한되지 않는다. 본 발명의 대안적인 실시예들은 핸드헬드 디바이스들 및 임베디드 애플리케이션들과 같은 통합된 확장가능 펌웨어 인터페이스(UEFI) 기본 입력/출력 시스템(BIOS)를 사용하는 임의의 폼팩터 디바이스들에서 사용될 수 있다. 핸드헬드 디바이스들의 일부 예들은 셀룰러 폰들, 인터넷 프로토콜 디바이스들, 디지털 카메라들, 개인 디지털 정보 단말(PDA)들, 또는 넷북 또는 노트북과 같은 핸드헬드 PC들을 포함한다. 임베디드 애플리케이션들은 마이크로제어기, 디지털 신호 프로세서(DSP), 시스템 온 칩, 네트워크 컴퓨터들(넷PC), 셋톱 박스들, 네트워크 허브들, 광역 네트워크(WAN) 스위치들, 또는 임의의 다른 시스템을 포함할 수 있다.
프로세서들(142)은 시스템 로직 칩(146)에 커플링될 수 있다. 예를 들어, 예시된 실시예에서의 시스템 로직 칩(146)은 플랫폼 제어기 허브(PCH)일 수 있다. 일 실시예에서, PCH(146)는 예를 들어, 로컬 I/O 상호접속을 통해 하나 이상의 I/O 디바이스들에 대한 접속들을 제공할 수 있다. 일 실시예에서, 로컬 I/O 상호접속은 주변 컴포넌트 상호접속(PCI) 버스와 같은 고속 I/O 버스일 수 있다. PCH(146)는 프로세서(142)와 시스템(140) 내의 하나 이상의 다른 컴포넌트들 사이에 데이터 신호들 또는 다른 정보를 전달하고, 프로세서(142)와 시스템 I/O 사이에 데이터 신호들 또는 정보를 브리징할 수 있다.
하나 이상의 컴포넌트들의 일부 예들은 데이터 저장 디바이스(142), 하나 이상의 PCI 포트(154), 네트워킹 제어(156), USB(158)를 포함할 수 있다. 일 실시예에서, 데이터 저장 디바이스(152)는 하드 디스크 드라이브, 플로피 디스크 드라이브, CD-ROM 디바이스, 플래시 메모리 디바이스, 또는 다른 대용량 저장 디바이스를 포함할 수 있다. 도 1b가 컴포넌트들의 일부 예들을 도시하지만, PCH(146)는 다른 컴포넌트들, 예를 들어, 오디오 I/O, 키보드/마우스 I/O, 및 다른 집적 I/O 컴포넌트들, 예를 들어, IDE(integrated driver electronics), 로컬 영역 네트워크(LAN) 및 다른 직렬 확장 포트, 무선 트랜시버, 레거시 I/O 제어기 등에 대한 접속들을 제공할 수 있다.
도 1b를 참조하면, 플래시 메모리(148)와 같은 비휘발성 메모리는 예를 들어, 로우 핀 카운트(LPC) 버스를 통해 PCH(146)에 커플링될 수 있다. BIOS 펌웨어(150)는 플래시 메모리(148) 내에 상주할 수 있고, 부트 업은 플래시 메모리로부터의 명령들 또는 펌웨어를 실행할 수 있다. 도 1b가 플래시 메모리(148) 내의 BIOS 펌웨어(150)를 예시하지만, 일부 실시예들에서, BIOS 펌웨어(150)는 펌웨어 허브 등과 같은 다른 비휘발성 메모리에 저장될 수 있다. 실시예에서, BIOS 펌웨어(150)는 통합된 확장가능 펌웨어 인터페이스(UEFI) 펌웨어 또는 임의의 다른 펌웨어에 의해 구현될 수 있다.
도 1b가 시스템(140)을 예시하지만, 본 발명에 따른 실시예들은 복수의 프로세서 코어들을 사용하는 플랫폼, 또는 프로세서 또는 공동 프로세서를 사용하는 플랫폼, I/O 허브들을 사용하는 플랫폼과 같은 임의의 다른 하드웨어 및 소프트웨어 아키텍쳐에 사용될 수 있거나, 또는 프로세서들 내에 내장된 메모리 제어 등이 사용될 수 있다.
도 2는 본 발명의 실시예의 하드웨어 및 펌웨어 계층화된 뷰를 도시하는 블록도이다. 도 2를 참조하면, 시스템(200)은 하나 이상의 논리 프로세서들(202) 및 부트 스트랩 프로세서(BSP)(204)를 포함할 수 있다. 일 실시예에서, 논리 프로세서(202)는 애플리케이션 프로세서(AP)(202)일 수 있다. AP들(202) 및 BSP(204)는 펌웨어(220)를 실행할 수 있다. 또다른 실시예에서, 프로세서들은 파워 온에 응답하여 랜덤하게 AP 또는 BSP로서 지정될 수 있다. 일 실시예에서, 펌웨어(220)는 BIOS 환경, 예를 들어, UEFI 환경에서, 또는 임의의 다른 운영 체제(OS) 부재 애플리케이션 환경에서 구현될 수 있다. 도 2가 4개의 프로세서 코어를 예시하지만, 일부 실시예들에서, 상이한 개수의 프로세서 코어들이 시스템(200)에 포함될 수 있다. 도 2가 AP들(202) 및 BSP(204)를 예시하지만, 실시예들은 임의의 다른 프로세서 코어들을 가지는 시스템에서 사용될 수 있다.
도 2를 참조하면 실시예에서, AP들(202) 및/또는 BSP(204)는 다양한 전력 모드들에서 동작할 수 있다. 일 실시예에서, UEFI 펌웨어(220)는 예를 들어, P 상태, C 상태 또는 임의의 다른 슬립 상태를 포함하는 저전력 모드에서 동작하도록, 또는 프로세서들 중 하나 이상을 디스에이블시키도록 AP들(202) 및/또는 BSP(204)에 명령하기 위한 명령들을 제공할 수 있다. 예를 들어, UEFI 펌웨어(220)는 P 상태에서 동작하도록 AP들(202) 및/또는 BSP(204)에 명령하기 위한 명령들을 제공할 수 있고, 프로세서들은 가장 낮은/더 낮은 전압 및/또는 가장 낮은/더 낮은 주파수하에서 동작할 수 있다. 예를 들어, P 상태 하에서, AP들(202)은 전체 계산 능력이 아닌 계산 능력들의 일부를 가질 수 있다. 또다른 실시예에서, P 상태 하에서, BSP(204)는, 예를 들어, I/O 상태 비트 준비에 폴링(polling)하는, I/O 능력들을 가질 수 있다. 또다른 실시예에서, 펌웨어(220)는 C 상태에서 동작하도록 프로세서들(202 및/또는 204)에 명령하기 위한 명령들을 제공할 수 있고, 프로세서들 내의 적어도 하나 이상의 컴포넌트들은 파워다운될 수 있고, 따라서 프로세서들이 동작하지 않을 수 있지만 프로세서들의 상태는 유지될 수 있다. 일 실시예에서, BSP 프로세서(204)는 슬립 상태인 AP(202)를 웨이크업시키기 위한 능력을 가질 수 있다.
또다른 실시예에서, 펌웨어(220)는 디스에이블 상태에서 동작하도록 AP들(202)에 명령하기 위해 명령들을 제공할 수 있으며, AP들(202)은 디스에이블될 수 있다. 일 실시예에서, 디스에이블된 AP들(202)은 BSP(204)에 대해 비가시적일 수 있다. 일 실시예에서, 디스에이블 상태에서, 인터럽트 웨이크업 능력이 디스에이블될 수 있다. 또다른 실시예에서, BSP(204)는 I/O 디바이스 상태 비트 준비에 대한 풀링(pooling)을 위해 P 상태에서 동작할 수 있다. 일 실시예에서, C 상태에서의 프로세서들은 P 상태에서보다 더 적은 전력을 소모할 수 있다. 또다른 실시예에서, BSP(204)는 I/O 동작이 없는 경우 C 상태에서 동작할 수 있다.
도 2를 참조하면, 일 실시예에서, UEFI 펌웨어(220)는 네트워크 I/O 디바이스 모듈(212) 및 디스크 I/O 디바이스 모듈(214)과 같은 하나 이상의 I/O 디바이스 모듈들을 포함할 수 있다. 일 실시예에서, I/O 디바이스 모듈(212) 및 디스크 I/O 디바이스 모듈(214)은 I/O 동작 또는 이벤트, 예를 들어, 네트워크 전송, 네트워크 다운로드, 하드 디스크 액세스, 바이러스 스캔, 데이터 백업 또는 임의의 다른 I/O 동작 또는 요청, 예컨대 MP3 노래 재생, OS 이전에/사전 부팅 시에 사진/영화 보기, 오프라인 다운로드, 보이스 오버 인터넷 프로토콜(VoIP) 등에 응답하여 부트 스트랩 정지(stall) 함수를 호출할 수 있다. 도 2를 참조하면, I/O 디바이스 모듈은 전력 관리 드라이버 또는 모듈(216)에 대해 인터페이싱될 수 있다. UEFI 펌웨어(220)는 타이머(218)를 추가로 제공할 수 있다. 일 구현예에서, 펌웨어(220)는 전력 소모 및 작업 로드 모두의 균형을 맞추기 위해 타이머(218)의 타이머 기간을 조정할 수 있다.
일 실시예에서, 전력 관리 모듈 또는 제어 모듈(216)은 UEFI 모드로의 시스템 부팅과 같은 시스템 부트에에 응답하여 로딩될 수 있고, 연속적 OS 또는 사전-OS 모드로 존재하지 않는다. 또다른 실시예에서, 메인 OS(예를 들어, 윈도우즈, 리눅스, 임베디드 소프트웨어, 및/또는 그래픽 사용자 인터페이스들 등)가 슬립 모드(예를 들어, S3 또는 S4 환경)에 있는 것에 응답하여, 전력 관리 모듈(216)이 로딩될 수 있다. 로딩된 전력 관리 모듈(216)은 AP들(202)을 디스에이블시키거나 AP들(202)을 슬립 또는 저전력 모드, 예를 들어, 시스템 부트에 응답하여 P 또는 C 상태, 또는 OS 슬립 모드 또는 다른 OS 부재 환경에 둘 수 있다. BSP(204)와 같은 메인 프로세서는 여전히 정상으로서 예를 들어 슬립 또는 저전력 모드에서 기능할 것이다. 또다른 실시예에서, 전력 관리 모듈(216)은 AP들(202)이 디스에이블된 이후 또는 슬립 또는 저전력 모드가 된 이후 로딩될 수 있다.
I/O 동작에 응답하여, I/O 디바이스 모듈(212 또는 214)은 부트 서비스 stall() 함수를 호출할 수 있다. 전력 관리 모듈(216)이 로딩되기 전에, 부트 서비스 stall() 함수가 호출될 수 있다. 일 실시예에서, BSP(204)는 슬립이지는 않지만 예를 들어, P 상태(가장 낮은 전력 상태가 아닐 수 있음)가 될 수 있으며, 항상 I/O 준비를 체크할 수 있다. 전력 관리 모듈(216)이 로딩되는 것에 응답하여, 로딩된 전력 관리 모듈(216)은 예를 들어, 도 3a 및 3b 또는 5a 및 5b에서 도시된 바와 같은 흐름을 가지는 원래 부트 서비스 정지 함수를 인터셉트할 수 있다. stall() 함수가 I/O 디바이스 모듈에 의해 호출되는 것에 응답하여, 로딩된 전력 관리 모듈(216)은 stall() 함수의 정지 지연을 미리 결정된 임계치 값과 비교할 수 있다. 일 실시예에서, 임계치 값은 타이머 모듈(218)의 최소 타이머 기간일 수 있지만, 일부 실시예에서, 임계치 값은 최소 타이머 기간이 아닐 수 있다. 또다른 실시예에서, 임계치값은 타이머 모듈(218)의 정확성, 또는 원하는 전력 소모와 같은 하나 이상의 인자들, 또는 다른 인자들에 기초하여 결정될 수 있다.
정지 지연이 더 짧다는 결정에 응답하여, 전력 관리 모듈(216)은 원래 저장된 부트 서비스 stall() 함수를 호출할 수 있으며, BSP(204)는 지연 시간이 만족될 때까지 타이머 I/O에 대해 항상 폴링한다. 정지 지연의 종료 시간에 응답하여, 전력 관리 모듈(216)은 정지 함수를 빠져나갈 수 있다.
또다른 실시예에서, 전력 관리 모듈(216)이 정지 지연이 더 길다고 결정하는 것에 응답하여, 전력 관리 모듈(216)은 정지 지연을 타이머(218)의 현재 타이머 기간과 추가로 비교할 수 있다. 정지 지연이 현재 타이머 기간과 동일하다는 결정에 응답하여, 타이머 모듈(218)의 타이머 기간은 BSP(204)를 가장 낮은 상태, 예를 들어, P 상태보다 더 낮은 전력을 소비할 수 있는 C 상태로 둘 수 있다. BSP(204)는 예를 들어, 타이머 기간의 종단에서, 타이머(218)로부터의 타이머 인터럽트 이벤트에 의해 웨이크업될 수 있다. BSP(204)는 슬립 C 상태로부터 웨이크업될 수 있다. 또다른 실시예에서, 전력 관리 모듈(216)은 타이머 인터럽트에 응답하여 stall() 함수를 빠져나갈 수 있다. 일부 실시예들에서, 프로세서가 저전력 상태에 있는 경우, 버스 상의 다른 디바이스들은 더 낮은 전력 모드에 있지 않을 수 있다. 예를 들어, 네트워크 인터페이스 카드(NIC) 어댑터는 프로세서로 그리고 프로세서로부터 패킷들을 전송 및 수신할 수 있거나, 또는 하드 드라이브는 프로세서가 저전력 모드에 있는 경우 PCI 버스를 거친 직접 메모리 액세스를 제어할 수 있다.
일 실시예에서, 정지 지연이 현재 타이머 기간과 동일하지 않다고 결정하는 것에 응답하여, 전력 관리 모듈(216)은 타이머 기간을 stall() 함수의 정지 지연으로 설정할 수 있다. 전력 관리 모듈(216)은 타이머 콜백 이벤트와 같은 타이머 이벤트를 설정하도록 타이머 인터럽트를 추가로 연결할 수 있다. BSP(204)는 C 상태가 될 수 있고, 타이머 기간의 종단에서 웨이크업할 수 있다. 타이머 인터럽트 콜백 함수에서, 전력 관리 모듈(216)은 연속적인 또는 후속적인 정지가 호출될 것인지의 여부를 모니터링할 수 있다. 연속적인 정지가 존재하지 않을 것이라고 결정하는 것에 응답하여, 타이머 기간은 시스템 디폴트 값으로 설정되거나 다시 돌아갈 수 있다. 반면, 전력 관리 모듈(216)은 연속적인 정지를 계속 체크할 수 있다. 또다른 실시예에서, 타이머 인터럽트는 주기적으로 호출될 수 있고, 타이머 이벤트는 타이머 인터럽트 핸들러에게 연결(hook)될 수 있으며, 선택적으로 인에이블 또는 디스에이블될 수 있다.
도 3a 및 3b는 본 발명의 실시예에 따른 예시적인 방법의 흐름도들을 예시한다. 도 2 및 3a를 참조하면, 블록(302)에서, 예시적인 환경이 예시되며, 시스템 부트는, 예를 들어, 시스템(100)이 파워온되는 것에 응답하여 수행될 수 있다. 일 실시예에서, BIOS(114)(예를 들어, UEFI 펌웨어(220))는 시스템 부트에 응답하여 시스템(100)을 초기화하기 위한 명령들 및 동작들을 제공할 수 있다. 실시예에서, 블록(302)에서의 시스템 부트는 OS 부트 스테이지를 포함하지 않을 수 있다. 또다른 실시예에서, 블록(302)에서의 시스템 부트는 사전-OS 스테이지와 관련될 수 있다. 블록(304)에서, 또다른 OS 부재 환경의 실시예가 예시되며, 시스템(100)은 S3 환경에서 동작할 수 있다. 실시예에서, S3 환경은 슬립 모드, 스탠바이(standby) 모드, 또는 RAM이 파워링된 채 유지되는 RAM 절전 대기(suspend to RAM) 모드일 수 있다. 일 실시예에서, S3 환경 하에서, OS, 애플리케이션들, 문서 열기, 또는 임의의 다른 소프트웨어가 디스에이블될 수 있다. 일 실시예에서, S3 환경에서, 디스에이블된 소프트웨어어는 여전히 메모리에 상주할 수 있다. 도 3a가 S3 환경을 예시하지만, 일부 실시예들에서, 도 3a의 흐름은 다른 OS 부재 환경, 예를 들어, S4 환경 또는 시스템 휴면에 적용할 수 있으며, 여기서 메인 OS(예를 들어, 윈도우즈, 리눅스 등)는 슬립 모드에 있다.
블록(306)에서, BIOS(114)는 AP들(202)을 C 상태 또는 P 상태로 두기 위한 명령들 및/또는 동작들을 제공할 수 있거나, 또는 UEFI(220)로의 시스템 부팅(블록 302) 또는 S3 또는 S4 환경 또는 다른 OS 부재 환경으로 진입하는 시스템(블록 304)에 응답하여 AP들(202)을 디스에이블할 수 있다. 일 실시예에서, BIOS(114)는 AP들(202)을 P 상태, C 상태 또는 디스에이블 상태로 두기 위해 UEFI로 부팅하기 위한 명령들 또는 동작들을 제공할 수 있고, 연속적인 OS로 UEFI를 빠져나가지 않을 수 있다. 또다른 실시예에서, 시스템(100)은 OS로 진입하지 않지만, OS 부재 애플리케이션 환경에서 동작할 수 있고, 여기서 BIOS(114) 또는 UEFI 펌웨어(220)는 실행 환경이다.
흐름은 블록(308)으로 진행할 수 있다. 블록(308)에서, I/O 동작, 예컨대, 네트워크 I/O 동작 또는 하드디스크 I/O 동작 등에 응답하여, 대응하는 I/O 디바이스 모듈들(212 또는 214)은 부트 서비스 정지 함수를 호출하기 위해 BSP(204)에 의해 실행될 수 있다. 흐름은 다이아몬드(310)로 진행할 수 있고, 여기서 BSP(204)는 전력 관리 모듈(216)에 대한 전력 관리 드라이버가 로딩되는지의 여부를 체크할 수 있다. 도 3을 참조하여, 블록(316)에서, 전력 관리 드라이버가 로딩되지 않는다는 결정에 응답하여, 부트 서비스 정지 함수가 호출된다.
다이아몬드(310)에서, 전력 관리 드라이버가 로딩된다는 결정에 응답하여, 흐름은 블록(312)으로 진행할 수 있고, 여기서 전력 관리 모듈(216)은 부트 서비스 정지 함수를 연결(hook)하도록 구성될 수 있다. 다이아몬드(314)에서, 전력 관리 모듈(216)은 부트 서비스 정지 함수의 정지 지연이 미리 결정된 임계치보다 더 작은지의 여부를 체크하도록 구성될 수 있다. 정지 지연이 미리 결정된 임계치보다 더 작다고 결정하는 것에 응답하여(다이아몬드 314), 흐름은 부트 서비스 정지 함수를 호출하기 위해 블록(316)으로 진행할 수 있다.
반면, 다이아몬드(314)의 결과가 정지 지연이 미리 결정된 임계치보다 더 작지 않다는 것을 표시하는 경우, 흐름은 정지 지연이 타이머 모듈(218)의 현재 타이머 기간, 예를 들어, 시스템 디폴트 값과 동일한지의 여부를 체크하기 위해 블록(316)으로 진행할 수 있다. 블록(318)에서, 정지 지연이 현재 타이머 기간과 동일하다고 결정하는 것에 응답하여, 전력 관리 모듈(216)은 정지 지연 또는 현재 타이머 기간 동안 BSP(204)를 C 상태로 두도록 구성될 수 있다. 블록(320)에서, 타이머 인터럽트는 정지 지연 또는 타이머 기간의 종단에서 트리거링될 수 있고, 전력 관리 모듈(216)은 BSP(204)를 웨이크업할 수 있다. 일 실시예에서, BSP(204)는 웨이크업할 수 있고 블록(326)에서 정지 함수를 빠져나갈 수 있다. 웨이크업 BSP(204)는 I/O 준비 상태 비트를 체크할 수 있다. I/O 준비 상태 비트가 설정된다고 결정되면, BSP(204)는 I/O 동작의 실행을 빠져나갈 수 있다. 반대로, 웨이크업 BSP(204)가 I/O 준비 상태 비트가 정지 지연 동안 설정되지 않는다고 결정하는 경우, BSP(204)는 I/O 동작을 수행하지 않을 수 있다. 또다른 실시예에서, 웨이크업 BSP(204)가 I/O 준비 상태 비트가 정지 지연 동안 설정되지 않는다고 결정하는 경우, 대응하는 I/O 디바이스 모듈(212 또는 214)은 예를 들어, 308 내지 326에 따라, 또다른 BS 정지 함수를 호출할 수 있다.
도 3a를 다시 참조하면, 정지 지연이 현재 타이머 기간과 동일하지 않다고 결정하는 것에 응답하여(다이아몬드 318), 전력 관리 모듈(216)은 정지 지연으로 타이머 기간을 설정하도록 구성될 수 있다(블록 322). 블록(324)에서, 전력 관리 모듈(216)은 타이머 콜백 이벤트를 설정할 수 있다. 도 3b를 참조하면, 일 실시예에서, 타이머 인터럽트 콜백 함수는 타이머 콜백 이벤트의 설정에 응답하여 호출될 수 있다(블록 328). 다이아몬드(330)에서, 타이머 인터럽트 콜백 함수에서, 전력 관리 모듈(216)은 연속적인 정지가 호출될 것인지의 여부를 모니터링할 수 있다. 연속적인 정지가 존재할 것이라는 결정에 응답하여, 타이머 기간은 시스템 디폴트 값으로 설정되거나 다시 되돌아갈 수 있다. 반면, 전력 관리 모듈(216)은 다이아몬드(330)에서 연속적인 정지를 계속 체크할 수 있다. 도 3a를 다시 참조하면, 타이머 콜백 이벤트가 블록(324)에서 설정되는 것에 응답하여 흐름은 블록(320)으로 진행할 수 있다.
도 4a 및 4b는 시스템 I/O 로드의 워크로드에 기초하여 타이머 기간의 변경을 도시하는 예시적인 실시예들을 예시한다. 도 4a 및 4b에 기초하여, 디폴트 타이머 기간은 100 밀리초일 수 있다. 200밀리초의 시간에서, 작업 A는 I/O 동작을 시작하고, 전력 관리 모듈(216)은 I/O 동작에 대응하는 BS 정지 함수의 정지 지연에 따라 타이머 기간을 예를 들어, 10 밀리초로 조정할 수 있다. BSP(204)는 각각의 10밀리초 기간 동안 더 낮은 전력 상태로 유지할 수 있다. 일 실시예에서, BSP(204)는 매 10밀리초마다 I/O 상태 비트를 체크하기 위해 더 높은 전력 상태로 설정될 수 있다. 230 밀리초의 시간에서, BSP(204)는 상태 비트가 설정됨을 발견하며, 이후 도 4a에서 C로 예시된 바와 같이 20밀리초 동안 작업 A를 수행할 수 있다. BSP(204)가 250 밀리초의 시간에서 I/O 동작을 완료하는 것에 응답하여, 도 4b에 도시된 바와 같이, 전력 관리 모듈(216)은 10 밀리초의 타이머 기간을 100 밀리초로 다시 되돌리기 위해 실행될 수 있다.
도 4a를 참조하면, 350 밀리초의 시간에서, 작업 B는 I/O 동작을 시작한다. 전력 관리 모듈(216)이 I/O 동작에 따라 타이머 기간을 50 밀리초로 조정하도록 구성될 수 있다. BSP(204)는 각각의 50밀리초 타이머 기간 동안 더 낮은 전력 상태, 예를 들어, C 상태에서 유지될 수 있다. BSP(204)는 매 50밀리초마다 I/O 상태 비트를 체크하기 위해 더 높은 전력 상태인 P 상태로 설정될 수 있다. BSP(204)는 상태 비트가 450 밀리초의 시간에서 설정된 것을 검출하면, 이는 (도 4a에서 D로 예시된) 50 밀리초 동안 작업을 수행할 수 있다. BSP(204)가 450 밀리초의 시간에서 I/O 동작을 완료하는 경우, 전력 관리 모듈(216)은 50밀리초 타이머 기간을 다시 디폴트 값, 예를 들어, 다시 100 밀리초로 되돌릴 수 있다.
일 실시예에서, I/O 디바이스 모듈들(212 및 214)은 정지 서비스들에서의 변경들을 알지 못할 수 있다. 또다른 실시예에서, I/O 동작에 대한 정지 함수의 정지 지연은 결정된 임계치보다 더 길도록 미리 결정될 수 있고, 프로세서들은 도 3a 및 3b의 흐름에 따라 저전력 상태, 예를 들어, C 상태에 머무를 수 있다.
도 5a 및 5b는 본 발명의 실시예에 따른 예시적인 방법의 흐름도들을 예시한다. 도 5a를 참조하면, 블록들(502 및 504)에 대한 기재는 각각 블록들(302 및 304)과 유사할 수 있다. 블록(506)에서, 전력 관리 모듈(216)에 대한 전력 관리 드라이버가 로딩될 수 있다. 블록(508)에서, 전력 관리 드라이버는 하나 이상의 AP들(204)을 P 상태, C 상태 또는 디스에이블 상태로 둘 수 있다. 블록(510)에서, 전력 관리 드라이버는 BS 정지 함수를 연결(hook)할 수 있다. 블록(512)에서, 전력 관리 드라이버는 타이머(218)에 관련된 임계값을 표시할 수 있는 플래그 Tmin를 설정할 수 있다. 블록(514)에서, 전력 관리 드라이버는 타이머(218)의 타이머 기간을 디폴트 타이머 기간 Td으로 업데이트할 수 있다. 블록(516)에서, 전력 관리 드라이버는 플래그 Tcurrent를 Td로 설정할 수 있다. 예를 들어, 플래그 Tcurrent는 현재 타이머 기간을 표시할 수 있다. 블록(518)에서, 전력 관리 드라이버는 플래그 TimerChange 및 플래그 Continue를 FALSE로 설정할 수 있다. 플래그 TimerChange는 타이머 기간이 변경될 것인지의 여부를 표시할 수 있다. 플래그 Continue는 호출될 연속적인 정지 함수가 존재하는지의 여부를 표시할 수 있다. 블록(520)에서, 전력 관리 드라이버는 타이머 인터럽트 핸들러를 연결(hook)할 수 있다. 블록(522)에서, 흐름은 전력 관리 드라이버를 빠져나갈 수 있다. 일 실시예에서, 블록들(506 내지 522)의 흐름은 전력 관리 드라이버의 초기화를 위해 사용될 수 있다.
도 5b를 참조하면, 블록(524)에서, 네트워크 I/O 동작 또는 하드 디스크 I/O 동작 등과 같은 I/O 동작에 응답하여, 대응하는 I/O 디바이스 모듈들(212 또는 214)은 부트 서비스 정지 함수를 호출한다. 다이아몬드(526)에서, 전력 관리 모듈(216)은 부트 서비스 정지 함수의 정지 지연이 Tmin, 예를 들어, 미리 결정된 임계치보다 더 작은지의 여부를 체크할 수 있다. 정지 지연이 미리 결정된 임계치보다 더 작다는 결정에 응답하여, 흐름은 부스 서비스 정지 함수를 호출하기 위해 블록(528)으로 진행할 수 있다. 블록(528)의 흐름은 도 3a의 블록(316)을 참조할 수 있다.
다이아몬드(530)에서, 전력 관리 모듈(216)은 플래그 TimerChange가 TRUE인지의 여부를 체크하도록 구성될 수 있다. 블록(534)에서, 플래그 TimerChange가 TRUE인 것에 응답하여, 블록(534)에서, 전력 관리 모듈(216)은 플래그 Continue를 TRUE로 설정할 수 있다. 반면, 플래그 TimerChange가 TRUE가 아니라고 결정하는 것에 응답하여, 다이아몬드(532)에서 전력 관리 모듈(216)은 정지 지연이 플래그 Tcurrent와 동일한지의 여부를 추가로 결정할 수 있다. 정지 지연 및 플래그 Tcurrent가 동일하다고 결정하는 것(다이아몬드 532)에 응답하여, 흐름은 블록(542)으로 진행할 수 있다. 반면, 흐름은 블록(536)으로 진행할 수 있으며, 여기서, 전력 관리 모듈(216)은 플래그 TimeChange 및 플래그 Continue를 TRUE로 설정할 수 있다. 블록(538)에서, 전력 관리 모듈(216)은 플래그 Tcurrent를 정지 지연으로 설정할 수 있다. 블록(540)에서, 전력 관리 모듈(216)은 Tcurrent에 기초하여 타이머(218)의 타이머 기간을 업데이트할 수 있다.
블록(542)에서, 전력 관리 모듈(216)은 BSP(204)를 C 상태로 둘 수 있다. 블록(544)에서, BSP(204)는 예를 들어, 타이머 기간의 종단에서 타이머 인터럽트에 의해 웨이크업될 수 있다. BSP(204)는 웨이크업 시에 I/O 준비를 체크할 수 있다. 블록(564)에서, 타이머 인터럽트에 의해 트리거링되면, 정지 함수는 실행 중이지 않다. 흐름은 전력 관리 드라이버 초기화 동안 블록(520)에서 연결되는 타이머 인터럽트 핸들러를 실행하기 위해 블록(564)으로 진행한다.
다이아몬드(548)에서, 전력 관리 모듈(216)은 플래그 TimerChange가 참인지의 여부를 체크할 수 있다. 블록(560)에서, 플래그 TimerChange가 참이 아니라고 결정하는 것에 응답하여, 전력 관리 모듈(216)은 타이머 인터럽트를 빠져나갈 수 있다. 반면, 흐름은 다이아몬드(550)로 진행할 수 있고, 여기서 플래그 Continue가 TRUE인지를 체크한다. 플래그 Continue가 TRUE가 아닌 경우, 흐름은 블록(552)으로 진행할 수 있고, 여기서, 전력 관리 모듈(216)은 플래그 Continue를 FALSE로 설정할 수 있고, 이후 흐름은 타이머 기간을 빠져나갈 수 있다. 플래그 Continue가 TRUE가 아닌 경우(다이아몬드 550), 흐름은 블록(554)으로 진행할 수 있고, 여기서, Tcurrent는 Td로 설정된다. 블록(556)에서, TimerChange 플래그는 FALSE로 설정되고, 타이머(218)의 타이머 기간은 Tcurrent를 이용하여 업데이트되고, 흐름은 560으로 진행할 수 있다. 562에서, 타이머 인터럽트를 빠져나간 이후, 정지 함수가 여전히 실행 중인 경우, 흐름은 정지 함수를 빠져나가는 562로 진행할 수 있다.
도 3a, 3b, 5a 및 5b의 방법들이 프로세스들의 시퀀스를 포함하도록 예시되지만, 방법들은 일부 실시예들에서, 예시된 프로세스들을 상이한 순서로 수행할 수 있다.
본 발명의 특정 특징들이 실시예들을 참조하여 기술되었지만, 기재는 제한의 의미로 해석되도록 의도되지 않는다. 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명백한, 본 실시예들의 다양한 수정들 및 본 본 발명의 다른 실시예들도 본 발명의 사상 및 범위 내에 있는 것으로 간주된다.

Claims (15)

  1. 메모리;
    상기 메모리에 커플링하는 복수의 프로세서 코어들;
    상기 프로세서 코어들에 커플링하는 기본 입력 출력 시스템
    을 포함하고, 상기 기본 입력 출력 시스템은:
    I/O 동작에 응답하여 정지(stall) 함수를 호출하기 위한 I/O 디바이스 모듈;
    상기 I/O 디바이스에 커플링하는 전력 관리 모듈; 및
    상기 전력 관리 모듈에 커플링하는 타이머 모듈
    을 포함하고, 상기 전력 관리 모듈은 상기 타이머 모듈의 타이머 기간을 상기 정지 함수의 정지 지연으로 조정하고 - 상기 조정은 상기 정지 지연이 미리 결정된 임계치보다 더 크고 상기 정지 지연이 상기 조정 이전에 획득된 상기 타이머 기간의 값과 동일하지 않다는 결정에 응답하여 행해짐 -, 상기 타이머 기간 동안 프로세서 코어를 슬립 상태로 두고 호출될 연속적인 정지 함수를 모니터링하도록 타이머 이벤트를 설정하는 시스템.
  2. 제1항에 있어서,
    상기 정지 함수는 상기 전력 관리 모듈에 대한 전력 관리 드라이버가 로딩되지 않는다는 결정에 응답하여 호출되는 시스템.
  3. 제1항에 있어서,
    상기 전력 관리 모듈은 상기 전력 관리 모듈에 대한 전력 관리 드라이버가 로딩되는 경우 상기 정지 함수를 더 연결(hook)하는 시스템.
  4. 제1항에 있어서,
    상기 프로세서 코어들은 하나 이상의 논리 프로세서 코어들 및 부트 스트랩 프로세서 코어를 포함하는 시스템.
  5. 삭제
  6. 제1항에 있어서,
    상기 전력 관리 모듈은 호출될 연속적인 정지 함수가 존재한다고 결정하는 것에 응답하여 상기 타이머 기간을 디폴트 값으로 다시 더 설정하는 시스템.
  7. 프로세서 코어를 디스에이블 모드 또는 슬립 모드로 두는 단계;
    I/O 동작에 응답하여 호출되는 정지 함수에 응답하여, 상기 정지 함수의 정지 지연을 타이머와 관련된 미리 결정된 임계치와 비교하는 단계;
    상기 정지 지연이 상기 미리 결정된 임계치보다 더 크고 상기 정지 지연이 현재 타이머 기간과 동일하지 않다고 결정하는 것에 응답하여, 상기 현재 타이머 기간을 상기 정지 지연으로 설정하는 단계; 및
    상기 타이머 기간 동안 부트 스트랩 프로세서 코어를 슬립 모드로 설정하는 단계
    를 포함하는 방법.
  8. 제7항에 있어서,
    연속적인 정지가 존재하는지의 여부를 모니터링하도록 타이머 이벤트를 설정하는 단계를 더 포함하는 방법.
  9. 제7항에 있어서,
    상기 프로세서 코어는 동작 소프트웨어 애플리케이션 부재 동작 시에 디스에이블 모드 또는 슬립 모드에 놓이는 방법.
  10. 제7항에 있어서,
    상기 부트 스트랩 프로세서 코어는 I/O 동작을 위한 I/O 준비를 검출하기 위해 상기 타이머 기간의 종단에서 타이머 인터럽트에 의해 웨이크업되는 방법.
  11. 제8항에 있어서,
    연속적인 정지가 존재하지 않는다고 결정하는 것에 응답하여 상기 타이머 기간을 디폴트 값으로 설정하는 단계를 더 포함하는 방법.
  12. 머신 판독가능한 코드를 포함하는 유형의(tangible) 머신 판독가능한 매체로서, 상기 머신 판독가능한 코드는, 실행되는 것에 응답하여 컴퓨터 시스템이
    상기 컴퓨터 시스템의 기본 입력 및 출력 시스템에 진입하고;
    상기 기본 입력 및 출력 시스템을 사용하여, 상기 컴퓨팅 시스템 내의 제1 프로세서를 슬립 모드 또는 디스에이블 모드로 두고;
    상기 기본 입력 및 출력 시스템을 사용하여, I/O 동작을 위한 정지 함수를 연결하고;
    상기 기본 입력 및 출력 시스템을 사용하여, 상기 정지 함수의 정지 지연 동안 제2 프로세서를 상기 슬립 모드에 두고;
    상기 기본 입력 및 출력 시스템을 사용하여, 호출될 연속적인 정지 함수가 존재하는지의 여부를 모니터링하도록 타이머 이벤트를 설정하고;
    상기 기본 입력 및 출력 시스템을 사용하여, 상기 정지 지연을 타이머의 미리 결정된 임계치와 비교하고;
    상기 기본 입력 및 출력 시스템을 사용하여, 상기 정지 지연이 상기 임계치보다 더 길다고 결정하는 것에 응답하여 상기 정지 지연과 동일하도록 타이머의 타이머 기간을 설정하게 하는, 유형의 머신 판독가능한 매체.
  13. 제12항에 있어서,
    상기 머신 판독가능한 매체는
    상기 정지 지연이 상기 임계치보다 더 작다고 결정하는 것에 응답하여 상기 정지 함수를 호출하여, 상기 제2 프로세서로 하여금 상기 I/O 동작을 위한 I/O 준비를 체크할 수 있게 하는 머신 판독가능한 코드를 더 포함하는, 유형의 머신 판독가능한 매체.
  14. 제12항에 있어서,
    상기 머신 판독가능한 매체는
    상기 기본 입력 및 출력 시스템을 사용하여, 호출될 연속적인 정지 함수가 존재하지 않는다고 결정하는 것에 응답하여 상기 타이머 기간을 디폴트 값으로 다시 되돌리는 머신 판독가능한 코드를 더 포함하는, 유형의 머신 판독가능한 매체.
  15. 제12항에 있어서,
    상기 기본 입력 및 출력 시스템은 통합된 확장가능한 펌웨어 인터페이스에 의해 구현되는, 유형의 머신 판독가능한 매체.
KR1020137015286A 2010-12-21 2010-12-21 전력 관리를 위한 시스템 및 방법 KR101510028B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2010/002106 WO2012083486A1 (en) 2010-12-21 2010-12-21 System and method for power management

Publications (2)

Publication Number Publication Date
KR20130087564A KR20130087564A (ko) 2013-08-06
KR101510028B1 true KR101510028B1 (ko) 2015-04-08

Family

ID=46236047

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137015286A KR101510028B1 (ko) 2010-12-21 2010-12-21 전력 관리를 위한 시스템 및 방법

Country Status (6)

Country Link
US (1) US8977871B2 (ko)
EP (1) EP2656169A4 (ko)
JP (1) JP5701399B2 (ko)
KR (1) KR101510028B1 (ko)
CN (2) CN106125885B (ko)
WO (1) WO2012083486A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8886247B1 (en) * 2011-10-04 2014-11-11 Amazon Technologies, Inc. Proximity based power throttling
US9442732B2 (en) * 2012-03-19 2016-09-13 Via Technologies, Inc. Running state power saving via reduced instructions per clock operation
US9535488B2 (en) 2013-08-28 2017-01-03 Via Technologies, Inc. Multi-core microprocessor that dynamically designates one of its processing cores as the bootstrap processor
US9465432B2 (en) 2013-08-28 2016-10-11 Via Technologies, Inc. Multi-core synchronization mechanism
US9792112B2 (en) 2013-08-28 2017-10-17 Via Technologies, Inc. Propagation of microcode patches to multiple cores in multicore microprocessor
USRE49652E1 (en) 2013-12-16 2023-09-12 Qualcomm Incorporated Power saving techniques in computing devices
KR101790133B1 (ko) * 2013-12-24 2017-10-26 인텔 코포레이션 컨텍스트 기반 실내 전력 관리
CN104572166A (zh) * 2014-03-21 2015-04-29 中电科技(北京)有限公司 一种基于飞腾台式计算机的uefi固件实现方法
KR102151178B1 (ko) 2014-05-19 2020-09-02 삼성전자 주식회사 직렬 통신 장치 및 그 방법
KR102247742B1 (ko) 2015-04-21 2021-05-04 삼성전자주식회사 애플리케이션 프로세서와 시스템 온 칩
CN106209737B (zh) * 2015-05-04 2019-11-05 阿里巴巴集团控股有限公司 控制远程服务调用频率的方法和装置
US10108564B2 (en) * 2016-03-28 2018-10-23 Qualcomm Incorporated Active and stall cycle based dynamic scaling of processor frequency and bus bandwidth
CN113535239B (zh) 2020-04-16 2023-08-18 长鑫存储技术有限公司 底层驱动转发方法及基于uefi实现的多核系统
CN113867518A (zh) * 2021-09-15 2021-12-31 珠海亿智电子科技有限公司 处理器低功耗阻塞式延时方法、装置及可读介质
US11734055B2 (en) * 2021-09-28 2023-08-22 Dell Products L.P. Minimizing C-state transitions due to software timer interrupts

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050076747A (ko) * 2004-01-22 2005-07-27 인터내셔널 비지네스 머신즈 코포레이션 논리 파티션 데이터 처리 시스템에서 전력 소비를 감소시키는 방법 및 장치
JP2007506194A (ja) * 2003-09-18 2007-03-15 バルカン ポータルズ インコーポレイテッド 低電力モードで電子デバイスを動作させる方法および装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5437021A (en) * 1992-06-12 1995-07-25 Intel Corporation Programmable dedicated timer operating on a clock independent of processor timer
US5630142A (en) * 1994-09-07 1997-05-13 International Business Machines Corporation Multifunction power switch and feedback led for suspend systems
US6065122A (en) * 1998-03-13 2000-05-16 Compaq Computer Corporation Smart battery power management in a computer system
US6367023B2 (en) * 1998-12-23 2002-04-02 Intel Corporation Method and apparatus of measuring current, voltage, or duty cycle of a power supply to manage power consumption in a computer system
JP2001222346A (ja) * 2000-02-10 2001-08-17 Toshiba Corp コンピュータ、コンピュータシステム、および省電力制御方法
US7152169B2 (en) * 2002-11-29 2006-12-19 Intel Corporation Method for providing power management on multi-threaded processor by using SMM mode to place a physical processor into lower power state
US7213093B2 (en) * 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait
KR101205323B1 (ko) * 2006-09-28 2012-11-27 삼성전자주식회사 리텐션 입/출력 장치를 이용하여 슬립모드를 구현하는시스템 온 칩
US8327363B2 (en) * 2007-07-24 2012-12-04 Microsoft Corporation Application compatibility in multi-core systems
CN101470512A (zh) * 2007-12-24 2009-07-01 英业达股份有限公司 中央处理器的电源管理模块
US20100079472A1 (en) * 2008-09-30 2010-04-01 Sean Shang Method and systems to display platform graphics during operating system initialization
TW201020779A (en) * 2008-11-18 2010-06-01 Inventec Corp System for auto-operating backup firmware and method thereof
US20100146169A1 (en) * 2008-12-05 2010-06-10 Nuvoton Technology Corporation Bus-handling
US8607040B2 (en) 2010-11-16 2013-12-10 Intel Corporation Method of provisioning firmware in an operating system (OS) absent services environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007506194A (ja) * 2003-09-18 2007-03-15 バルカン ポータルズ インコーポレイテッド 低電力モードで電子デバイスを動作させる方法および装置
KR20050076747A (ko) * 2004-01-22 2005-07-27 인터내셔널 비지네스 머신즈 코포레이션 논리 파티션 데이터 처리 시스템에서 전력 소비를 감소시키는 방법 및 장치

Also Published As

Publication number Publication date
US20120159204A1 (en) 2012-06-21
CN103282854A (zh) 2013-09-04
EP2656169A4 (en) 2016-11-09
US8977871B2 (en) 2015-03-10
CN106125885B (zh) 2019-12-31
KR20130087564A (ko) 2013-08-06
JP5701399B2 (ja) 2015-04-15
EP2656169A1 (en) 2013-10-30
CN106125885A (zh) 2016-11-16
CN103282854B (zh) 2016-08-10
WO2012083486A1 (en) 2012-06-28
JP2014501982A (ja) 2014-01-23

Similar Documents

Publication Publication Date Title
KR101510028B1 (ko) 전력 관리를 위한 시스템 및 방법
US11422615B2 (en) Platform power consumption reduction via power state switching
US10592254B2 (en) Technologies for fast low-power startup of a computing device
US8122269B2 (en) Regulating power consumption in a multi-core processor by dynamically distributing power and processing requests by a managing core to a configuration of processing cores
US9600059B2 (en) Facilitating power management in a multi-core processor
EP2193419B1 (en) Dynamic core switching
EP1892626B1 (en) Method and apparatus for managing power from sequestered partition of a processing system
US9766924B2 (en) Task processor
US7689838B2 (en) Method and apparatus for providing for detecting processor state transitions
US6128745A (en) Power management inactivity monitoring using software threads
US8793697B2 (en) Method and system for scheduling requests in a portable computing device
US7647509B2 (en) Method and apparatus for managing power in a processing system with multiple partitions
US8286169B2 (en) Dynamic scheduling an interval for polling devices based on a current operational power mode in an extensible firmware interface architecture
KR20120104380A (ko) 가상화 시스템에서 중앙 프로세싱 유닛 전력을 제어하는 시스템 및 방법
TW201640276A (zh) 省電處理器架構
US20040215951A1 (en) Methods and apparatus to operate in multiple phases of a basic input/output system (BIOS)
US9489223B2 (en) Virtual machine wakeup using a memory monitoring instruction
US20100325408A1 (en) Method and Apparatus for Maintaining a Partition When Booting Another Partition
KR101896494B1 (ko) 컴퓨팅 디바이스들에서의 전력 관리

Legal Events

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

Payment date: 20180328

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190328

Year of fee payment: 5