KR101599319B1 - 멀티코어 플랫폼에서의 제한형 부트 기법 - Google Patents

멀티코어 플랫폼에서의 제한형 부트 기법 Download PDF

Info

Publication number
KR101599319B1
KR101599319B1 KR1020147008090A KR20147008090A KR101599319B1 KR 101599319 B1 KR101599319 B1 KR 101599319B1 KR 1020147008090 A KR1020147008090 A KR 1020147008090A KR 20147008090 A KR20147008090 A KR 20147008090A KR 101599319 B1 KR101599319 B1 KR 101599319B1
Authority
KR
South Korea
Prior art keywords
processor
power consumption
wake event
processor core
consumption state
Prior art date
Application number
KR1020147008090A
Other languages
English (en)
Other versions
KR20140067071A (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 KR20140067071A publication Critical patent/KR20140067071A/ko
Application granted granted Critical
Publication of KR101599319B1 publication Critical patent/KR101599319B1/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/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/4405Initialisation of multiprocessor systems
    • 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)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Power Sources (AREA)

Abstract

멀티코어 플랫폼에서의 제한형 부팅 기법에 관한 방법 및 장치가 설명된다. 일 실시예에서, 프로세서는 어느 특정 코어(들)가 전력 인가/중지될지 및/또는 이러한 코어(들)가 진입해야 하는 전력 상태가 무엇인지를 OS 및/또는 소프트웨어 애플리케이션(들)에 적어도 부분적으로 기초하여 제어하는 로직을 포함할 수 있다. 다른 실시예들 또한 청구되고 설명된다.

Description

멀티코어 플랫폼에서의 제한형 부트 기법{CONSTRAINED BOOT TECHNIQUES IN MULTI-CORE PLATFORMS}
본 개시물은 전반적으로 전자기기 분야에 관한 것이다. 특히, 본 발명의 실시예는 멀티코어 플랫폼에서의 제한형 부트 기법에 관한 것이다.
성능 개선을 위해, 일부 시스템들은 복수의 프로세싱 코어(또한 매니코어 시스템(many-core systems)으로 지칭됨)를 포함한다. 현재,이러한 시스템들 대부분은 고성능을 제공하는 것에 집중하고 일부 레벨로 내장된 일부 제한된 전력 관리가 존재할 수 있다. 예를 들어, 이러한 매니코어 시스템들 중 일부는 코어 단위로 Cx 상태를 수행할 능력을 가질 수 있다. 각 C 상태는 특정 레벨의 기능을 표시할 수 있다. 예를 들어, C0는 프로세서가 동작 중임을 표시할 수 있고, C1은 프로세서가 인스트럭션을 실행 중인 것은 아니지만 실행 상태로 거의 즉시 전환될 수 있음을 표시할 수 있고, C2는 프로세서가 모든 소프트웨어 가시 정보를 유지하지만 완전 실행 상태(full executing state)로 전환하는데 시간이 걸릴 수 있음을 표시할 수 있고, C3은 프로세서가 슬립 상태이고 이의 캐시 코히런트(cache coherent)를 유지할 필요는 없음을 표시할 수 있다.
그러나, 공격적 오퍼레이팅 시스템(OS) 또는 소프트웨어(SW) 구동형 전력 관리에 대한 지원은, 특히 OS 관점에서, 전반적으로 매우 적다. 더욱이, 대부분의 현재 OS 전력 관리 전략은, 프로세서 전력 관리 관점으로부터, 또는 전체적으로는 플랫폼으로부터, 매니코어 시스템에 스케일(scale)하지 못하는 경향이 있다.
따라서, 전력 소비 상태가 이용되는 방법은 프로세서의 성능 및/또는 전력 소비에 직접 영향을 미칠 수 있다.
첨부된 도면을 참조하여 상세한 설명이 제공된다. 도면들에서, 참조 번호의 가장 좌측의 숫자(들)는 참조 번호가 처음 나타난 도면을 식별한다. 상이한 도면들에서의 동일한 참조 번호의 사용은 유사하거나 동일한 아이템을 나타낸다.
도 1, 5 및 6은 본원에서 설명된 다양한 실시예들을 구현하는데 이용될 수 있는, 컴퓨팅 시스템의 실시예들에 관한 블록도를 도시한다.
도 2는 일 실시예에 따라, 프로세서 코어의 일부 및 컴퓨팅 시스템의 다른 컴포넌트에 관한 블록도를 도시한다.
도 3-4는 일부 실시예들에 따른 흐름도를 도시한다.
다음의 설명에서, 다수의 특정 세부사항은 다양한 실시예들에 관한 전반적인 이해를 제공하기 위해 개시된다. 그러나, 본 발명의 다양한 실시예들은 그러한 특정 세부사항 없이 실시될 수 있다. 다른 경우에서, 잘 알려진 방법, 절차, 컴포넌트, 및 회로는 본 발명의 특정 실시예들을 모호하게 하지 않기 위해 상세히 설명되지 않는다. 또한, 본 발명의 실시예들의 다양한 양태들은 다양한 수단, 예컨대, 집적 반도체 회로("하드웨어"), 하나 이상의 프로그램으로 조직된 컴퓨터 판독가능 인스트럭션("소프트웨어"), 또는 하드웨어와 소프트웨어의 일부 조합을 사용하여 구현될 수 있다. 본 개시물의 목적을 위해 "로직"에 관한 언급은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합을 의미할 수 있다. 또한, "인스트럭션" 및 "마이크로-동작(micro-operation)"(uop)의 사용은 본원에서 설명되는 바와 같이 교체가능하다.
본원에서 설명된 일부 실시예들은 멀티코어 프로세서에서의 제한형 부트 기법을 제공하는데 이용될 수 있다. 본원에서 설명되는 바와 같이, 용어 "제한형(constrained)" 부트 또는 상태는 전반적으로 하나 이상의 프로세서 코어가 완전 동작 전력 소비 상태보다 낮은 전력을 소비하는 전력 소비 상태(예를 들어, 완전히 C0 상태가 아님)에 진입 또는 부트되는 상태 또는 부팅 기법을 지칭한다. 일부 실시예들에서, 본원에서 설명된 전력 소비 상태 중 적어도 일부는 ACPI(Advanced Configuration and Power Interface) 설명서, 개정판 4.0a(2010년 4월 5일)를 따를 수 있다.
일 실시예에서, 프로세서는 어느 특정 코어(들)가 전력 인가/중지될지 및/또는 이러한 코어(들)가 어느 전력 상태에 진입해야 하는지를 OS 소프트웨어 및/또는 소프트웨어 애플리케이션(들)으로부터의 입력에 적어도 부분적으로 기초하여 제어하는 로직을 포함할 수 있다. 또한, 코어들의 전력 인가/중지 및 전력 인가/중지의 레벨을 제어하는 능력은 작업부하, 시나리오, 사용 등에 기초하여 플랫폼 전력 소비를 최적화하는데 사용될 수 있다. 더욱이, 본원에서 설명된 적어도 일부 OS 동작은 소프트웨어 애플리케이션, 펌웨어 등에 의해 교환가능하게 수행될 수 있다.
일 실시예에서, 저전력 상태를 종료할 때, 특정 프로세서 코어들만이 최대 전력 상태(a full power state)가 될 수 있고 나머지 프로세서 코어들은 "제한된" 상태(예를 들어, 완전히 C0가 아닌)에 남아 있을 수 있다. 그 결과 전체 플랫폼 전력 소비를 매우 감소시킬 수 있다.
더욱이, 매니코어 시스템은 상당한 성능 개선을 제공하지만, OS 또는 SW 레벨에서의 전력 관리는 전반적으로 레거시 OS 지원(legacy OS support)에 의존한다. 예를 들어, 일부 현재 OS들(예컨대, Linux®)은 모든 부팅되지 않은 프로세서들(예를 들어, 최종 전력 중지/전력 인가에 대하여 중요하지 않은 것들)을 완전히 전력 중지/디스에이블하도록 지원하지만, 이러한 접근법은 고레이턴시, 고전력 영향을 가질 수 있고 또한 불필요하게 (때때로, 시나리오에 따라) 시스템 내 모든 코어들을 완전히 전력 인가할 수도 있다(예를 들어, CPU 코어(들)를 웨이크 업할 필요가 있는 단일 인터럽트가 존재하는, 그리고 모든 CPU를 동시에 인가하고 작동시킬 필요가 없는 시나리오).
본원에서 설명된 기법들은 도 1 및 도 5-6을 참조하여 설명된 프로세서와 같이, 성능 상태 설정을 갖는 임의의 타입의 프로세서에서 사용될 수 있다. 특히, 도 1은 본 발명의 실시예에 따른, 컴퓨팅 시스템(100)에 관한 블록도를 도시한다. 시스템(100)은 하나 이상의 프로세서(102-1 내지 102-N)(전반적으로 "프로세서들(102)" 또는 "프로세서(102)"로 지칭됨)를 포함할 수 있다. 프로세서들(102)은 상호접속 네트워크 또는 버스(104)를 통해 통신할 수 있다. 각 프로세서는 다양한 컴포넌트들을 포함할 수 있으나, 명료성을 위해 이들 중 일부만이 프로세서(102-1)를 참조하여 설명된다. 따라서, 나머지 프로세서(102-2 내지 102-N)는 프로세서(102-1)에 관하여 설명된 동일하거나 유사한 컴포넌트들을 포함할 수 있다.
일 실시예에서, 프로세서(102-1)는 하나 이상의 프로세서 코어(106-1 내지 106-M)(본원에서 "코어들(106)" 또는 더 일반적으로 "코어(106)"로 언급됨), 공유 캐시(108), 라우터(110), 및/또는 프로세서 제어 로직 또는 유닛(120)을 포함할 수 있다. 프로세서 코어(106)는 단일 집적 회로(IC) 칩 상에서 구현될 수 있다. 또한, 칩은 하나 이상의 공유 및/또는 개인 캐시(예컨대, 캐시(108)), 버스 또는 상호접속부(예컨대, 버스 또는 상호접속 네트워크(112)), 메모리 제어기(예컨대, 도 5-6에 관하여 설명된 것들), 또는 다른 컴포넌트들을 포함할 수 있다.
일 실시예에서, 라우터(110)는 프로세서(102-1) 및/또는 시스템(100)의 다양한 컴포넌트들 사이에서 통신하는데 사용될 수 있다. 또한, 프로세서(102-1)는 하나 이상의 라우터(110)를 포함할 수 있다. 더욱이, 복수의 라우터(110)는 프로세서(102-1)의 내부의 또는 외부의 다양한 컴포넌트들 사이의 데이터 라우팅을 가능하게 하기 위해 통신할 수 있다.
공유 캐시(108)는 프로세서(102-1)의 하나 이상의 컴포넌트, 예컨대, 코어들(106)에 의해 이용되는 데이터(예를 들어, 인스트럭션을 포함함)를 저장할 수 있다. 예를 들어, 공유 캐시(108)는 프로세서(102)의 컴포넌트들에 의한 더 빠른 액세스를 위해 메모리(114) 내에 저장된 데이터를 국부적으로 캐싱할 수 있다. 일 실시예에서, 캐시(108)는 중간 레벨 캐시(예컨대, 레벨 2(L2), 레벨 3(L3), 레벨 4(L4), 또는 다른 레벨의 캐시), 최하위 레벨(last level cache; LLC), 및/또는 이들의 조합을 포함할 수 있다. 더욱이, 프로세서(102-1)의 다양한 컴포넌트는 버스(예를 들어, 버스(112))를 통해 공유 캐시(108)와 직접적으로, 및/또는 메모리 제어기 또는 허브와 통신할 수 있다. 도 1에 도시된 바와 같이, 일부 실시예들에서, 코어들(106) 중 하나 이상은 레벨 1(L1) 캐시(116-1)(본원에서 전반적으로 "L1 캐시(116)"로 언급됨)를 포함할 수 있다.
일 실시예에서, 제어 유닛(120)은 (예를 들어, 메모리(114)에 저장될 수 있는) OS 및/또는 소프트웨어 애플리케이션(들)으로부터의 입력에 기초하여 어느 특정 코어(들)(106)가 전력 인가/중지될지 및/또는 이러한 코어(들) 중 얼마나 많은 코어가 브링 업/다운되어야 하는지를 제어할 수 있다. 더욱이, 제어 유닛(120)은, 예를 들어, OS 및/또는 소프트웨어 애플리케이션에 의해 결정되는 바와 같이, 플랫폼 내 존재하는 조건인, 작업부하, 시나리오, 사용량(usage) 등에 기초하여 플랫폼 전력 소비를 최적화하도록 코어들의 전력 인가/중단 및 전력 인가/중단의 레벨을 제어할 수 있다.
도 2는 본 발명의 일 실시예에 따라, 프로세서 코어(106)의 일부 및 컴퓨팅 시스템의 다른 컴포넌트들에 관한 블록도를 도시한다. 일 실시예에서, 도 2에 도시된 화살표는 코어(106)를 통한 인스트럭션들의 흐름 방향을 도시한다. 하나 이상의 프로세서 코어(예컨대, 프로세서 코어(106))는 도 1에 관하여 설명된 바와 같이 단일 집적 회로 칩(또는 다이) 상에서 구현될 수 있다. 더욱이, 칩은 하나 이상의 공유 및/또는 개인 캐시(예를 들어, 도 1의 캐시(108)), 상호접속부(예를 들어, 도 1의 상호접속부(104 및/또는 112)), 제어 유닛, 메모리 제어기, 또는 다른 컴포넌트를 포함할 수 있다.
도 2에 도시된 바와 같이, 프로세서 코어(106)는 코어(106)에 의한 실행을 위해 인스트럭션(조건부 브랜치(conditional branches)를 갖는 인스트럭션 포함)을 페치하도록 페치 유닛(a fetch unit)(202)을 포함할 수 있다. 인스트럭션은 메모리(114) 및/또는 도 5-6에 관하여 설명된 메모리 디바이스와 같은 임의의 저장 디바이스로부터 페치될 수 있다. 코어(106)는 또한 페치된 인스트럭션을 디코딩하도록 디코드 유닛(204)을 포함할 수 있다. 예를 들어, 디코드 유닛(204)은 페치된 인스트럭션을 복수의 uop(마이크로-동작)로 디코딩할 수 있다. 추가적으로, 코어(106)는 스케줄 유닛(a schedule unit)(206)을 포함할 수 있다. 스케줄 유닛(206)은 인스트럭션이 디스패치를 위해 준비될 때까지, 예를 들어, 디코딩된 인스트럭션의 모든 소스 값이 이용가능해질 때까지, (예컨대, 디코드 유닛(204)으로부터 수신된) 디코딩된 인스트럭션을 저장하는 것과 연관된 다양한 동작을 수행할 수 있다. 일 실시예에서, 스케줄 유닛(206)은 실행을 위한 실행 유닛(an execution unit)(208)에 디코딩된 인스트럭션을 스케줄링 및/또는 발행(또는 디스패치)할 수 있다. 실행 유닛(208)은, 인스트럭션이 (예를 들어, 디코드 유닛(204)에 의해) 디코딩되고 (예를 들어, 스케줄 유닛(206)에 의해) 디스패치된 이후에 디스패치된 인스트럭션을 실행할 수 있다. 일 실시예에서, 실행 유닛(208)은 하나 이상의 실행 유닛을 포함할 수 있다. 실행 유닛(208)은 또한 덧셈, 뺄셈, 곱셈, 및/또는 나눗셈과 같은 다양한 산술 동작을 수행할 수 있고, 하나 이상의 산술 로직 유닛(ALU)을 포함할 수 있다. 일 실시예에서, 보조 프로세서(co-processor)(미도시)는 실행 유닛(208)과 함께 다양한 산술 동작을 수행할 수 있다.
또한, 실행 유닛(208)은 인스트럭션을 비순차적으로(out-of-order) 실행할 수 있다. 이로 인해, 프로세서 코어(106)는 일 실시예에서 비순차 프로세서 코어일 수 있다. 코어(106)는 또한 폐기 유닛(a retirement unit)(210)을 포함할 수 있다. 폐기 유닛(210)은 인스트럭션이 이행된(committed) 이후에 실행된 인스트럭션을 폐기할 수 있다. 일 실시예에서, 실행된 인스트럭션의 폐기는 인스트럭션의 실행으로부터 프로세서 상태의 이행, 인스트럭션에 의해 사용된 물리적 레지스터의 할당해제(de-allocated) 등을 야기할 수 있다.
코어(106)는 또한 하나 이상의 버스(예를 들어, 버스(104 및/또는 112))를 통해 프로세서 코어(106)의 컴포넌트들과 다른 컴포넌트들(예컨대, 도 1에 관하여 설명된 컴포넌트들) 사이의 통신을 가능하게 하도록 버스 유닛(214)을 포함할 수 있다. 코어(106)는 또한 코어(106)의 다양한 컴포넌트들에 의해 액세스된 데이터(예컨대, 전력 소비 상태 설정에 관한 값들)를 저장하도록 하나 이상의 레지스터(216)를 포함할 수 있다.
더욱이, 도 1에는 제어 유닛(120)이 상호접속부(112)를 통해 코어(106)에 연결되는 것으로 도시되지만, 다양한 실시예들에서, 제어 유닛(120)은, 예컨대, 코어(106) 내부에 있거나, 버스(104)를 통해 코어에 연결되는 등, 어디든지 위치할 수 있다.
도 3은 일 실시예에 따른, 제한형 초기화 동작(constrained initialization operations)에 관한 흐름도를 도시한다. 일부 실시예들에서, 도 1-2 및 도 4-6에 관하여 설명된 다양한 컴포넌트들이 도 3에 관하여 설명된 하나 이상의 동작을 수행하는데 이용될 수 있다. 예를 들어, 제어 유닛(120)은 하나 이상의 프로세서 코어(106)의 전력 소비 상태를 제어하는데 사용될 수 있다. 일부 실시예들에서, 동작들(304-308) 중 하나 이상의 동작은 펌웨어에 의해 수행될 수 있다. 또한, 동작들(310-312, 318, 336, 338, 및 344) 중 하나 이상의 동작은 다양한 실시예들에서 OS에 의해 수행될 수 있다.
본원에서 설명되는 바와 같이, "스레드(thread)"는 전반적으로 논리 프로세서 또는 프로세싱의 가장 작은 유닛(이는 OS 및/또는 소프트웨어 애플리케이션에 의해 스케줄링될 수 있음)을 지칭한다. "스레드"는 동일한 물리적 반도체 집적 회로(IC) 패키지 내 다른 논리 프로세서와 리소스를 공유할 수 있거나 공유하지 않을 수 있다. "코어"는 전반적으로 동일한 물리적 반도체 IC 패키지 내 하나 이상의 다른 프로세서 코어와 공존하는 프로세서 코어를 지칭한다. 프로세서 코어는 다른 프로세서들 또는 프로세서 코어들과 리소스를 공유하거나 공유하지 않을 수 있다. "패키지"는 전반적으로 임의의 개수의 코어 및 스레드를 포함하는 물리적 IC 칩을 지칭한다.
일부 실시예들에서, 아키텍처적으로, 그리고 보편성을 잃지 않으면서, 일 실시예는 임의의 매니코어 시스템 상에서, 다음 중 하나 이상이 존재하는 것을 고려할 수 있다: (1) 하나의 부트 스트랩 프로세서(Boot Strap Processor; BSP) 코어, 또는 메인/1차(primary) 프로세서 코어(또는 스레드)가 존재함; (2) (예를 들어, 전력 관리 피쳐 또는 플랫폼 내 하나 이상의 프로세서 코어들 사이에 공유된 다른 피쳐를 개시/처리하기 위해 BSP 코어에 의존하는) 2차(secondary) 프로세서 코어(들) 또는 프로세서 스레드인, 하나 이상의 비BSP 코어(non-BSP cores)가 존재함.
일부 실시예들에서, 비BSP 프로세서의 상태를 변경하는 OS 루틴은, 각각 비-BSP 코어 프로세서(들)를 디스에이블 및 인에이블하기 위한, "disable_nonboot_cpus()" 및 "enable_nonboot_cpus()"를 포함할 수 있다. 일반적인 재시작 시퀀스에서, 프로세서가 302에서 리셋(그리고 선택적으로 마이크로코드 패치(patches)가 304에서 로딩됨)되면, 부트 흐름은 "enable_nonboot_cpus()" 흐름을 통해 진행하여 비BSP 코어를 인에이블한다. 이는 다음을 포함할 수 있다:
(1) 스타트업 프로세서간 인터럽트(Startup Inter-Processor Interrupt; SIPI): 2차 스레드 또는 코어를 웨이크 업하기 위해, BSP는 각 스레드 및 코어에 SIPI를 송신한다. 이 SIPI는, 예를 들어, 애플리케이션 프로세서(AP)가 실행을 시작해야 하는 물리적 어드레스를 표시하는, BSP의 LAPIC(Local Advanced Programmable Interrupt Controller)를 사용함으로써 송신될 수 있다.
(2) AP 웨이크 업 상태(AP Woken Up state): SIPI를 수신하고 나서, AP는 SIPI 메시지에 의해 지정된 코드를 실행하기 시작할 것이다.
펌웨어가 OS 부팅을 시도하도록 준비되면, 모든 AP 프로세서는 (아래에서 더 설명되는 바와 같이) 332에서 이들의 전력 인가 상태("Wait-for-SIPI")에 다시 배치되고, 이는 INIT ASSERT IPI 다음에 이어지는 INIT DEASSERT IPI를 시스템 내 모든 애플리케이션에 송신하는 BSP 코어에 의해 달성될 수 있다. 이 프로세스는 보통 고 레이턴시를 가지며, 이 프로세스가 플랫폼/프로세서 내 모든 비BSP 코어에 대하여 반복되어야 하는 경우, 이는 전체 플랫폼 재시작 프로세스에 대한 레이턴시를 상당히 증가시킬 수 있다.
일부 실시예들에 따라, 비BSP 코어를 제한형 상태로 부팅하는 것은 도 3에 도시된 바와 같이 저 레이턴시 짧은 부트 흐름(a low latency short boot flow)을 가짐으로써 최적화될 수 있다. 패키지 레벨 C6으로의 엔트리가 도 3을 참조하여 설명되지만, 다양한 실시예들에서는 (예를 들어, C0 외의) 다른 패키지 레벨이 진입될 수 있다. 일반적으로, 패키지 레벨 C6(가장 깊은 X86 프로세서 상태)에 진입하기 위해, 코어의 스레드는 C6을 요청했었어야 하고, 그렇지 않으면 마이크로코드가 두 개의 프로세서 스레드 상태 중 더 낮은 것을 픽업할 수 있다.
일부 실시예들에서, 스레드 0 또는 BSP 코어는 도 3에 도시된 바와 같은 동작들(302-320)을 수행할 수 있다. 예를 들어, (예를 들어, 도 4에 관하여 설명되는 바와 같은 대기 상태 또는 유휴 상태로부터의) 리셋 상태(302) 이후에, 마이크로코드 패치가 304에서 선택적으로 적용될 수 있다. 306에서, 메모리 제어기(예컨대, 도 5의 메모리 제어기(510))가 초기화될 수 있다. 308에서, 플랫폼 및 이의 상황 정보(context)는 (예를 들어, 도 1의 메모리(114) 또는 도 5의 메모리(512)로부터) 복원될 수 있다. 310에서 OS 커널이 재시작된다. 312에서, 나머지 플랫폼이 초기화될 수 있다. 314에서 플랫폼이 스레드 0/BSP 코어에 의해 실행 상태에 존재하도록 결정된 경우, (예를 들어, C6로의) 짧은 부트가 316에서 수행될 수 있고, 그렇지 않다면 비부트 코어(non-boot cores)가 318에서 인에이블될 수 있다. 320에서 대기로부터의 재시작이 완료된다.
도 3을 참조하면, 스레드 1 또는 비BSP 코어는 동작들(330-344)을 수행할 수 있다. 즉, 제 1 비BSP 코어는 리셋 상태(330) 이후에 흐름(334) 단위로 제한형 부트 상태로 부팅될 수 있다. 구체적으로, 332에서, 제 1 비BSP 코어는 전술된 바와 같이 (예를 들어, 316으로부터) SIPI를 대기할 수 있다. 336에서, 스레드 1은 (316에서의 스레드 0으로부터) IPI를 수신할 수 있고 338에서의 IPI 핸들러의 일부에 따라 C6에 대한 요청이 일부 실시예들에서 반복적으로 실시될 수 있다. 340에서, 제한형 부트가 진입될 것으로 판단되는 경우, 예를 들어, 스레드 1 상의 모든 대응 태스크가 완료된 경우, 342에서 딥 슬립 상태(예를 들어, C6)가 진입될 수 있다. 또는, 예를 들어, 메모리 관리 유닛(도 5의 메모리 제어기(510)와 같은, MMU)의 초기화를 위해 적은 메모리를 인에이블함으로써, 344에서 고 레이턴시 부트 흐름이 수행될 수 있다. 또한, 344에서, 코어 단위로 GDT(Global Descriptor Table) 및/또는 TSS(Task-State Segment)가 설정될 수 있다. 또한, 344에서, 부동 소수점 초기화 및/또는 BP(Boot Processor)와의 동기화 인에이블 로컬 인터럽트가 일부 실시예들에서 수행될 수 있다. 또한, 플랫폼이 비타이머 인터럽트(non-timer interrupt)에 응답하여 웨이크 업된 경우, 플랫폼이 활성 상태에 있을 때의 성능을 위해(compromise)하지 않도록 OS는 비BSP 스레드를 인에이블하고 이전에 알려진 좋은 상태로 이를 초기화할 수 있다.
이러한 짧은 부트 흐름(334)은 많은 경우에 사용될 수 있다. 예를 들어, 타이머 웨이크 실행 상태에 대하여, 플랫폼이 타이머 인터럽트 때문에 단지 동기화를 수행하기 위해 웨이크된 유휴 시나리오에서, 타이머 인터럽트를 프로세싱한 이후 비교적 바로 딥 슬립 상태로 다시 진입할 가능성이 존재한다. 이러한 시나리오에서, 비BSP 프로세서 스레드는 자신의 최대 능력을 끌어오고 다시 딥 슬립 상태에 진입하고자 시도하며, 잠재적으로 상당한 전력 소비 패널티가 존재한다. 그 대신, 비BSP 스레드는 제한된 상태로 부팅할 수 있고 낮은 전력 소비 패널티로 딥 슬립 상태에 진입하게 될 수 있다.
도 4는 일 실시예에 따라, 유휴 동안의 타이머 기반 인터럽트 프로세싱을 위한 제한형 초기화 동작에 관한 흐름도를 도시한다. 일부 실시예들에서, 도 1-3 및 도 5-6에 관하여 설명된 다양한 컴포넌트는 도 3에 관하여 설명된 동작들 중 하나 이상을 수행하는데 이용될 수 있다. 예를 들어, 제어 유닛(120)은 하나 이상의 프로세서 코어(106)의 전력 소비 상태를 제어하는데 사용될 수 있다.
플랫폼이 402에서 S0ix로부터 웨이크한 이후, 404에서 OS(예를 들어, OS 전력 관리(OS Power Management; OSPM) 드라이버)는 웨이크 소스를 결정할 수 있다. 일반적으로 "S0ix"는, 사용자에 의해서 또는 플랫폼이 너무 오랫동안 (사전 프로그래밍된 시간) 유휴되었던 경우에 구동되는 전형적인 유휴 전력 상태 대신에, (예를 들어, OS 또는 소프트웨어 애플리케이션 입력에 기초하여) 이벤트 구동된 플랫폼 레벨 전력 관리에 의해 달성되는 향상된 유휴 전력 상태(들)를 지칭한다. 402에서의 웨이크의 이유가 비타이머 또는 상호작용(interactive)인 경우, 이벤트는 빠른 재시도 없이 OSPM 프레임워크에 송신되고 이에 의해 처리될 수 있다.
일 실시예에서, 플랫폼 전력 상태가 S0ix인 경우, 이는 S0ix 상태를 위한 재시도에 대한 힌트(a hint)로서 처리될 수 있다. 412에서 (일 실시예에서의 제어 유닛(120)으로 구현될 수 있는) CPU 유휴 드라이버 로직(406)은 OSPM로부터 메시지 또는 신호를 수신하고 CPU 상태를 절약한다. 또한, 일 실시예에 따라 412에서 전력 관리 커맨드가 (S0i2/3을 위해) (예를 들어, 남쪽(south)) 복합 시스템 제어기 유닛(System Controller Unit; SCU)에 송신될 수 있고 CPU 상태는 SCU 메모리(예를 들어, SRAM) 내에 저장될 수 있다. 410에서, BSP 및 비BSP 코어/스레드 양자가 딥 슬립 상태(예를 들어, C6)인 경우, 플랫폼은 411에서 S0ix에 진입한다. 도 4에 도시된 바와 같이, (일 실시예에서, 제어 유닛(120)으로 구현될 수 있는) CPU 유휴 관리자 로직(CPU idle governor logic)(408)은, 더 깊은 상태(예를 들어, C7)에 진입하기 위해, 예를 들어, 전송 지연 값과 연관된 레이턴시 힌트에 기초하여, 로직(406)과 통신할 수 있다.
일부 실시예들은 다음과 같은 기법을 제공한다: (1) 플랫폼 유휴상태에 기초하여 및/또는 플랫폼에 대한 웨이크의 소스에 기초하여 비BSP 코어(들)를 최대 능력 상태 또는 "제한형 상태"로 선택적으로 부팅함; (2) 비BSP 코어를 부팅하는 레이턴시를 감소시킴으로써 플랫폼을 더 빨리 부팅함; 및/또는 (3) 최대 전력 상태(예를 들어, C0)에서 소비하는 시간을 감소시킴으로서 전력을 절약함.
도 5는 본 발명의 일 실시예에 따른 컴퓨팅 시스템(500)에 관한 블록도를 도시한다. 컴퓨팅 시스템(500)은 상호접속 네트워크(또는 버스)(504)를 통해 통신하는 하나 이상의 중앙 프로세싱 유닛(들)(CPU)(502) 또는 프로세서를 포함한다. 프로세서(502)는 범용 프로세서, (컴퓨터 네트워크(503)를 통해 통신된 데이터를 프로세싱하는) 네트워크 프로세서, 또는 (RISC(reduced instruction set computer) 프로세서 또는 CISC(complex instruction set computer)를 포함하는) 다른 타입의 프로세서를 포함할 수 있다. 더욱이, 프로세서(502)는 단일의 또는 복수의 코어 디자인을 가질 수 있다. 복수의 코어 디자인을 갖는 프로세서(502)는 상이한 타입의 프로세서 코어들을 동일한 집적 회로(IC) 다이에 통합할 수 있다. 또한, 복수의 코어 디자인을 갖는 프로세서(502)는 대칭 또는 비대칭 멀티프로세서로서 구현될 수 있다. 일 실시예에서, 프로세서들(502) 중 하나 이상은 도 1의 프로세서(102)와 동일하거나 유사할 수 있다. 예를 들어, 프로세서들(502) 중 하나 이상은 도 1-4에 관하여 설명된 제어 로직(120)을 포함할 수 있다. 또한, 도 1-4에 관하여 설명된 동작은 시스템(500)의 하나 이상의 컴포넌트에 의해 수행될 수 있다.
칩셋(506)은 또한 상호접속 네트워크(504)와 통신할 수 있다. 칩셋(506)은 또한 메모리 제어 허브(memory control hub; MCH)(508)를 포함할 수 있다. MCH(508)는 메모리(512)(도 1의 메모리(114)와 동일하거나 유사할 수 있음)와 통신할 수 있는 메모리 제어기(510)를 포함할 수 있다. 메모리(512)는 CPU(502) 또는 컴퓨팅 시스템(500) 내 포함된 임의의 다른 디바이스에 의해 실행될 수 있는, 인스트럭션의 시퀀스를 포함하는, 데이터를 저장할 수 있다. 본 발명의 일 실시예에서, 메모리(512)는 랜덤 액세스 메모리(RAM), 동적 RAM(DRAM), 동기 DRAM(SDRAM), 정적 RAM(SRAM), 또는 다른 타입의 저장 디바이스와 같은 하나 이상의 휘발성 저장(또는 메모리) 디바이스를 포함할 수 있다. 하드 디스크와 같은 비휘발성 메모리 또한 이용될 수 있다. 추가적인 디바이스는 복수의 CPU 및/또는 복수의 시스템 메모리와 같이, 상호접속 네트워크(504)를 통해 통신할 수 있다.
MCH(508)는 또한 디스플레이 디바이스(516)와 통신하는 그래픽 인터페이스(514)를 포함할 수 있다. 본 발명의 일 실시예에서, 그래픽 인터페이스(514)는 가속 그래픽 포트(accelerated graphics port; AGP)를 통해 디스플레이 디바이스(516)와 통신할 수 있다. 본 발명의 일 실시예에서, 디스플레이(516)(가령, 평판 디스플레이)는, 예를 들어, 비디오 메모리 또는 시스템 메모리와 같은 저장 디바이스에 저장된 이미지의 디지털 표현을 디스플레이(516)에 의해 해석되고 디스플레이되는 디스플레이 신호로 번역하는 신호 컨버터를 통해, 그래픽 인터페이스(514)와 통신할 수 있다. 디스플레이 디바이스에 의해 생성된 디스플레이 신호는 디스플레이(516)에 의해 해석되고 디스플레이(516) 상에 디스플레이되기 전에 다양한 제어 디바이스를 통과할 수 있다.
허브 인터페이스(518)는 MCH(508)와 입력/출력 제어 허브(input/output control hub; ICH)(520)가 통신하게 할 수 있다. ICH(520)는 컴퓨팅 시스템(500)과 통신하는 I/O 디바이스(들)에 인터페이스를 제공할 수 있다. ICH(520)는 주변장치 브리지(또는 제어기)(524), 예컨대, 주변장치 컴포넌트 상호접속(peripheral component interconnect; PCI) 브리지, 범용 시리얼 버스(USB) 제어기, 또는 다른 타입의 주변장치 브리지나 제어기를 통해 버스(522)와 통신할 수 있다. 브리지(524)는 CPU(502)와 주변 디바이스 사이에 데이터 경로를 제공할 수 있다. 다른 타입의 토폴로지가 이용될 수 있다. 또한 복수의 버스는, 예를 들어, 복수의 브리지 또는 제어기를 통해, ICH(520)와 통신할 수 있다. 더욱이, ICH(520)와 통신하는 다른 주변장치는, 본 발명의 다양한 실시예들에서, 통합 드라이브 전자기기(integrated drive electronics; IDE) 또는 소형 컴퓨터 시스템 인터페이스(SCSI) 하드 드라이브(들), USB 포트(들), 키보드, 마우스, 터치 스크린, 카메라, 병렬 포트(들), 직렬 포트(들), 플로피 디스크 드라이브(들), 디지털 출력 서포트(예를 들어, 디지털 비디오 인터페이스(DVI)), 또는 다른 디바이스를 포함할 수 있다.
버스(522)는 오디오 디바이스(526), 하나 이상의 디스크 드라이브(들)(528), 및 (컴퓨터 네트워크(503)와 통신하는) 네트워크 인터페이스 디바이스(530)와 통신할 수 있다. 다른 디바이스가 버스(522)를 통해 통신할 수 있다. 또한, 본 발명의 일부 실시예들에서 다양한 컴포넌트(가령, 네트워크 인터페이스 디바이스(530))는 MCH(508)와 통신할 수 있다. 또한, 프로세서(502) 및 MCH(508)는 단일 칩을 형성하도록 조합될 수 있다. 더욱이, 본 발명의 다른 실시예들에서, 그래픽 가속기(516)는 MCH(508) 내에 포함될 수 있다.
또한, 컴퓨팅 시스템(500)은 휘발성 및/또는 비휘발성 메모리(또는 스토리지)를 포함할 수 있다. 예를 들어, 비휘발성 메모리는 다음 중 하나 이상을 포함할 수 있다: 판독 전용 메모리(ROM), 프로그램가능 ROM(PROM), 소거가능 PROM(EPROM), 전기 EPROM(EEPROM), 디스크 드라이브(예를 들어, 528), 플로피 디스크, 컴팩트 디스크 ROM(CD-ROM), DVD(digital versatile disk), 플래시 메모리, 자기광학 디스크, 또는 (예를 들어, 인스트럭션을 포함하는) 전자 데이터를 저장할 수 있는 다른 타입의 비휘발성 머신 판독가능 매체.
도 6은 본 발명의 일 실시예에 따라, 점대점(PtP) 구성으로 배치되는 컴퓨팅 시스템(600)을 도시한다. 특히, 도 6은 프로세서, 메모리, 및 입력/출력 디바이스가 다수의 점대점 인터페이스에 의해 상호접속되는 시스템을 도시한다. 도 1-5에 관하여 설명된 동작은 시스템(600)의 하나 이상의 컴포넌트들에 의해 수행될 수 있다.
도 6에 도시된 바와 같이, 시스템(600)은 다수의 프로세서를 포함할 수 있으며, 여기서는 명료성을 위해 두 개의 프로세서(602 및 604)만이 도시된다. 프로세서(602 및 604)는 메모리(610 및 612)와의 통신을 가능하게 하기 위해 로컬 메모리 제어기 허브(MCH)(606 및 608)를 각각 포함할 수 있다. 메모리(610 및/또는 612)는 도 5의 메모리(512)에 관하여 설명된 것과 같이 다양한 데이터를 저장할 수 있다.
일 실시예에서, 프로세서들(602 및 604)은 도 5에 관하여 설명된 프로세서들(502) 중 하나일 수 있다. 프로세서(602 및 604)는 PtP 인터페이스 회로(616 및 618)를 사용하여 점대점(PtP) 인터페이스(614)를 통해 데이터를 각각 교환할 수 있다. 또한, 프로세서(602 및 604) 각각은 점대점 인터페이스 회로(626, 628, 630 및 632)를 사용하여 개별 PtP 인터페이스(622 및 624)를 통해 칩셋(620)과 데이터를 교환할 수 있다. 칩셋(620)은 또한, 예를 들어, PtP 인터페이스 회로(637)를 사용하여, 그래픽 인터페이스(636)를 통해 그래픽 회로(634)와 데이터를 교환할 수 있다.
본 발명의 적어도 하나의 실시예는 프로세서(602 및 604) 내에 제공될 수 있다. 예를 들어, 도 1-4의 제어 유닛(120)은 프로세서(602 및 604) 내에 위치될 수 있다. 그러나, 본 발명의 다른 실시예들은 도 6의 시스템(600) 내 다른 회로, 로직 유닛, 또는 디바이스 내에 존재할 수 있다. 더욱이, 본 발명의 다른 실시예들은 도 6에 도시된 다수의 회로, 로직 유닛, 또는 디바이스 전체에 걸쳐 분산될 수 있다.
칩셋(620)은 PtP 인터페이스 회로(641)를 사용하여 버스(640)와 통신할 수 있다. 버스(640)는 버스 브리지(642) 및 I/O 디바이스(643)와 같은 하나 이상의 디바이스와 통신할 수 있다. 버스(644)를 통해, 버스 브리지(642)는 다른 디바이스, 예컨대, 키보드/마우스(645), 통신 디바이스(646)(예컨대, 모뎀, 네트워크 인터페이스 디바이스, 또는 컴퓨터 네트워크(503)와 통신할 수 있는 다른 통신 디바이스), 오디오 I/O 디바이스(647), 및/또는 데이터 저장 디바이스(648)와 통신할 수 있다. 데이터 저장 디바이스(648)는 프로세서(602 및/또는 604)에 의해 실행될 수 있는 코드(649)를 저장할 수 있다.
본 발명의 다양한 실시예들에서, 예를 들어, 도 1-6에 관하여, 본원에서 설명된 동작은 하드웨어(예를 들어, 로직 회로), 소프트웨어, 펌웨어, 또는 이들의 조합으로서 구현될 수 있고, 이는 예를 들어, 본원에서 설명된 프로세스를 수행하도록 컴퓨터를 프로그래밍하는데 사용된 인스트럭션(또는 소프트웨어 절차)을 내부에 저장한 (예를 들어, 비일시적) 머신 판독가능 또는 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품으로서 제공될 수 있다. 머신 판독가능 매체는 도 1-6에 관하여 설명된 것과 같이 저장 디바이스를 포함할 수 있다.
추가적으로, 그러한 컴퓨터 판독가능 매체는 컴퓨터 프로그램 제품으로 다운로드될 수 있는데, 여기서 프로그램은 통신 링크(예를 들어, 버스, 모뎀, 또는 네트워크 접속)를 통해 반송파 또는 다른 전파 매체에 포함된 데이터 신호에 의해 원격의 컴퓨터(예를 들어, 서버)로부터 요청 컴퓨터(예를 들어, 클라이언트)로 전송될 수 있다.
명세서에서 "일 실시예", "실시예", 또는 "일부 실시예들"에 관한 언급은 실시예(들)와 함께 설명된 특정 피쳐, 구조, 또는 특성이 적어도 하나의 구현예에 포함될 수 있다는 것을 의미한다. 본 명세서의 다양한 위치에서 문구 "일 실시예에서"의 등장은 모두 동일한 실시예에 관하여 언급하는 것일 수 있거나 아닐 수 있다.
또한, 설명 및 청구항에서, 용어 "연결된(coupled)" 및 "접속된(connected)"은 이들의 파생어와 함께 사용될 수 있다. 본 발명의 일부 실시예들에서, "접속된"은 두 개 이상의 요소들이 서로 직접 물리적으로 또는 전기적으로 접촉하고 있음을 나타내는데 사용될 수 있다. "연결된"은 두 개 이상의 요소들이 서로 직접 물리적으로 또는 전기적으로 접촉하고 있음을 나타내는데 사용될 수 있다. 그러나, "연결된"은 두 개 이상의 요소들이 서로 직접 접촉하고 있지 않을 수 있지만, 여전히 서로 협력하거나 상호작용하고 있을 수 있음을 또한 의미할 수 있다.
따라서, 본 발명의 실시예들이 구조적 피쳐 및/또는 방법론적 방식에 특정한 언어로 설명되었으나, 청구된 주제는 설명된 특정 피쳐 또는 방식으로 제한되지 않을 수 있다는 것이 이해되어야 한다. 오히려, 특정 피쳐 및 방식은 청구된 주제를 구현하는 예시적 형태로서 개시된다.

Claims (30)

  1. 복수의 프로세서 코어와,
    상기 복수의 프로세서 코어 중 적어도 제 1 프로세서 코어에 연결되고, 저전력 소비 상태로부터의 웨이크 이벤트(a wake event)를 검출하고, 상기 복수의 프로세서 코어 중 제 2 프로세서 코어로 하여금 완전 동작 전력 소비 상태(a fully operational power consumption state)보다 낮은 전력을 소비하는 전력 소비 상태에 진입하게 하는 제어 로직을 포함하되,
    상기 제어 로직은 상기 제 2 프로세서 코어로 하여금 상기 웨이크 이벤트의 소스(source)에 기초하여 상기 전력 소비 상태에 진입하게 하는
    프로세서.
  2. 제 1 항에 있어서,
    상기 복수의 프로세서 코어 중 제 3 프로세서 코어는 상기 웨이크 이벤트에 응답하여 상기 완전 동작 전력 소비 상태에 진입하는
    프로세서.
  3. 제 1 항에 있어서,
    오퍼레이팅 시스템 소프트웨어를 저장하는 메모리를 더 포함하되,
    상기 오퍼레이팅 시스템 소프트웨어는 상기 웨이크 이벤트를 트리거링하는
    프로세서.
  4. 제 3 항에 있어서,
    상기 오퍼레이팅 시스템 소프트웨어는 타이머에 기초하여 상기 웨이크 이벤트를 트리거링하는
    프로세서.
  5. 제 1 항에 있어서,
    상기 제어 로직은 상기 프로세서를 포함하는 플랫폼 내 존재하는 작업부하(workload), 시나리오(scenario), 및 사용량(usage) 조건들 중 하나 이상에 기초하여 상기 제 2 프로세서 코어가 상기 전력 소비 상태에 진입할지를 판단하는
    프로세서.
  6. 제 1 항에 있어서,
    상기 저전력 소비 상태는 유휴 상태(an idle state) 또는 대기 상태(a standby state)를 포함하는
    프로세서.
  7. 제 1 항에 있어서,
    애플리케이션 소프트웨어를 저장하는 메모리를 더 포함하되,
    상기 애플리케이션 소프트웨어는 상기 웨이크 이벤트를 트리거링하는
    프로세서.
  8. 제 7 항에 있어서,
    상기 애플리케이션 소프트웨어는 타이머에 기초하여 상기 웨이크 이벤트를 트리거링하는
    프로세서.
  9. 제 1 항에 있어서,
    상기 제 1 프로세서 코어는 상기 웨이크 이벤트에 응답하여 상기 제 2 프로세서 코어에 적어도 하나의 프로세서간 인터럽트(inter-processor interrupt)를 전송하는
    프로세서.
  10. 제 1 항에 있어서,
    상기 제 1 프로세서 코어는 부트스트랩 프로세서 코어(a bootstrap processor core)이고 상기 제 2 프로세서 코어는 비부트스트랩 프로세서 코어(a non-bootstrap processor core)인
    프로세서.
  11. 제 1 항에 있어서,
    상기 웨이크 이벤트는 플랫폼 유휴 상태로부터의 재시작(resumption)을 표시하는
    프로세서.
  12. 프로세서의 제 1 프로세서 코어에서 저전력 소비 상태로부터의 웨이크 이벤트를 검출하는 단계와,
    상기 프로세서의 제 2 프로세서 코어로 하여금 완전 동작 전력 소비 상태보다 낮은 전력을 소비하는 전력 소비 상태에 진입하게 하는 단계를 포함하되,
    상기 제 2 프로세서 코어는 상기 웨이크 이벤트의 소스에 기초하여 상기 전력 소비 상태에 진입하는
    방법.
  13. 제 12 항에 있어서,
    상기 프로세서의 제 3 프로세서 코어로 하여금 상기 웨이크 이벤트에 응답하여 상기 완전 동작 전력 소비 상태에 진입하게 하는 단계를 더 포함하는
    방법.
  14. 제 12 항에 있어서,
    상기 웨이크 이벤트를 트리거링하는 코드를 실행하는 단계를 더 포함하는
    방법.
  15. 제 12 항에 있어서,
    상기 프로세서를 포함하는 플랫폼 내 존재하는 작업부하, 시나리오 및 사용량 조건들 중 하나 이상에 기초하여 상기 제 2 프로세서 코어가 상기 전력 소비 상태에 진입할지를 판단하는 단계를 더 포함하는
    방법.
  16. 제 12 항에 있어서,
    상기 제 1 프로세서가 상기 웨이크 이벤트에 응답하여 상기 제 2 프로세서 코어에 적어도 하나의 프로세서간 인터럽트를 전송하는 단계를 더 포함하는
    방법.
  17. 컴퓨팅 시스템으로서,
    오퍼레이팅 시스템 소프트웨어 전력 관리 드라이버를 저장하는 메모리와,
    상기 메모리에 연결되고, 상기 오퍼레이팅 시스템 소프트웨어 전력 관리 드라이버를 실행하는 프로세서를 포함하되,
    상기 프로세서는,
    복수의 프로세서 코어와,
    상기 복수의 프로세서 코어 중 적어도 제 1 프로세서 코어에 연결되고, 저전력 소비 상태로부터의 웨이크 이벤트를 검출하고 상기 복수의 프로세서 코어 중 제 2 프로세서 코어로 하여금 완전 동작 전력 소비 상태보다 낮은 전력을 소비하는 전력 소비 상태에 진입하게 하는 제어 로직을 포함하고,
    상기 제어 로직은 상기 제 2 프로세서 코어로 하여금 상기 웨이크 이벤트의 소스에 기초하여 상기 전력 소비 상태에 진입하게 하는
    컴퓨팅 시스템.
  18. 제 17 항에 있어서,
    상기 복수의 프로세서 코어 중 제 3 프로세서 코어는 상기 웨이크 이벤트에 응답하여 상기 완전 동작 전력 소비 상태에 진입하는
    컴퓨팅 시스템.
  19. 제 17 항에 있어서,
    상기 오퍼레이팅 시스템 소프트웨어 전력 관리 드라이버는 상기 웨이크 이벤트를 트리거링하는
    컴퓨팅 시스템.
  20. 제 19 항에 있어서,
    상기 오퍼레이팅 시스템 소프트웨어 전력 관리 드라이버는 타이머에 기초하여 상기 웨이크 이벤트를 트리거링하는
    컴퓨팅 시스템.
  21. 제 17 항에 있어서,
    상기 제어 로직은 상기 컴퓨팅 시스템 내 존재하는 작업부하, 시나리오, 및 사용량 조건들 중 하나 이상에 기초하여 상기 제 2 프로세서 코어가 상기 전력 소비 상태에 진입할지를 결정하는
    컴퓨팅 시스템.
  22. 제 17 항에 있어서,
    상기 저전력 소비 상태는 유휴 상태 또는 대기 상태를 포함하는
    컴퓨팅 시스템.
  23. 제 17 항에 있어서,
    상기 메모리는 애플리케이션 소프트웨어를 저장하되,
    상기 애플리케이션 소프트웨어는 상기 웨이크 이벤트를 트리거링하는
    컴퓨팅 시스템.
  24. 제 23 항에 있어서,
    상기 애플리케이션 소프트웨어는 타이머에 기초하여 상기 웨이크 이벤트를 트리거링하는
    컴퓨팅 시스템.
  25. 제 17 항에 있어서,
    상기 제 1 프로세서 코어는 상기 웨이크 이벤트에 응답하여 상기 제 2 프로세서 코어에 적어도 하나의 프로세서간 인터럽트를 전송하는
    컴퓨팅 시스템.
  26. 인스트럭션을 저장하는 컴퓨터 판독가능 매체로서,
    상기 인스트럭션은 프로세서에 의해 실행될 때 상기 프로세서로 하여금
    상기 프로세서의 제 1 프로세서 코어에서 저전력 소비 상태로부터의 웨이크 이벤트를 검출하게 하고,
    상기 프로세서의 제 2 프로세서 코어가 완전 동작 전력 소비 상태보다 낮은 전력을 소비하는 전력 소비 상태에 진입하게 하되,
    상기 제 2 프로세서 코어는 상기 웨이크 이벤트의 소스에 기초하여 상기 전력 소비 상태에 진입하는
    컴퓨터 판독가능 매체.
  27. 제 26 항에 있어서,
    상기 인스트럭션은 상기 프로세서의 제 3 프로세서 코어로 하여금 상기 웨이크 이벤트에 응답하여 상기 완전 동작 전력 소비 상태에 진입하게 하는
    컴퓨터 판독가능 매체.
  28. 제 26 항에 있어서,
    상기 인스트럭션은 상기 프로세서로 하여금 상기 웨이크 이벤트를 트리거링하도록 코드를 실행하게 하는
    컴퓨터 판독가능 매체.
  29. 제 26 항에 있어서,
    상기 인스트럭션은 상기 제 1 프로세서 코어로 하여금, 상기 프로세서를 포함하는 플랫폼 내 존재하는 작업부하, 시나리오 및 사용량 조건들 중 하나 이상에 기초하여 상기 제 2 프로세서 코어가 상기 전력 소비 상태에 진입할지를 판단하게 하는
    컴퓨터 판독가능 매체.
  30. 제 26 항에 있어서,
    상기 인스트럭션은 상기 제 1 프로세서 코어로 하여금 상기 웨이크 이벤트에 응답하여 상기 제 2 프로세서 코어에 적어도 하나의 프로세서간 인터럽트를 전송하게 하는
    컴퓨터 판독가능 매체.
KR1020147008090A 2011-09-30 2012-09-27 멀티코어 플랫폼에서의 제한형 부트 기법 KR101599319B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN2848DE2011 2011-09-30
IN2848/DEL/2011 2011-09-30
PCT/US2012/057597 WO2013049371A2 (en) 2011-09-30 2012-09-27 Constrained boot techniques in multi-core platforms

Publications (2)

Publication Number Publication Date
KR20140067071A KR20140067071A (ko) 2014-06-03
KR101599319B1 true KR101599319B1 (ko) 2016-03-03

Family

ID=47996742

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147008090A KR101599319B1 (ko) 2011-09-30 2012-09-27 멀티코어 플랫폼에서의 제한형 부트 기법

Country Status (7)

Country Link
US (1) US9552039B2 (ko)
EP (1) EP2761394B1 (ko)
JP (1) JP5972981B2 (ko)
KR (1) KR101599319B1 (ko)
CN (1) CN103842933B (ko)
TW (1) TWI454905B (ko)
WO (1) WO2013049371A2 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI454905B (zh) 2011-09-30 2014-10-01 Intel Corp 在多核心平台中之受限制的啓動技術
US10007323B2 (en) 2012-12-26 2018-06-26 Intel Corporation Platform power consumption reduction via power state switching
CN103472251B (zh) * 2013-08-22 2016-05-18 浙江工业大学 一种降低流速剖面仪信号处理单元功耗的方法及装置
CN109165189B (zh) * 2013-08-28 2020-12-08 威盛电子股份有限公司 微处理器及其配置方法、以及计算机可读存储介质
US9563431B2 (en) * 2014-12-26 2017-02-07 Intel Corporation Techniques for cooperative execution between asymmetric processor cores
US10198274B2 (en) 2015-03-27 2019-02-05 Intel Corporation Technologies for improved hybrid sleep power management
KR102375925B1 (ko) 2015-08-31 2022-03-17 삼성전자주식회사 Cpu의 작동 방법과 상기 cpu를 포함하는 시스템의 작동 방법
US9465664B1 (en) 2015-09-09 2016-10-11 Honeywell International Inc. Systems and methods for allocation of environmentally regulated slack
JP6249121B1 (ja) * 2017-03-30 2017-12-20 日本電気株式会社 消費電力削減装置、消費電力削減方法および消費電力削減プログラム
EP3732567A4 (en) * 2017-12-25 2021-08-04 Intel Corporation MULTI-WIRE PARALLEL COMPUTER PLATFORM FOR PRE-MEMORY INITIALIZATION
TWI729491B (zh) * 2019-09-11 2021-06-01 立端科技股份有限公司 運用通用型輸入輸出接腳之乙太網路通訊系統以及具有該乙太網路通訊系統之網路伺服器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050215274A1 (en) * 2004-03-26 2005-09-29 Broadcom Corporation MAC controlled sleep mode/wake-up mode with staged wake-up for power management
US20110191607A1 (en) 2006-11-01 2011-08-04 Gunther Stephen H Independent power control of processing cores

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768585A (en) * 1995-11-21 1998-06-16 Intel Corporation System and method for synchronizing multiple processors during power-on self testing
US5724527A (en) * 1995-12-28 1998-03-03 Intel Corporation Fault-tolerant boot strap mechanism for a multiprocessor system
US6260150B1 (en) 1998-03-10 2001-07-10 Agere Systems Guardian Corp. Foreground and background context controller setting processor to power saving mode when all contexts are inactive
US6317839B1 (en) 1999-01-19 2001-11-13 International Business Machines Corporation Method of and apparatus for controlling supply of power to a peripheral device in a computer system
US6802018B2 (en) 2000-12-27 2004-10-05 Intel Corporation Method and apparatus to directly access a peripheral device when central processor operations are suspended
US7313797B2 (en) 2002-09-18 2007-12-25 Wind River Systems, Inc. Uniprocessor operating system design facilitating fast context switching
KR100563691B1 (ko) 2003-06-09 2006-03-28 엘지전자 주식회사 컴퓨터 시스템에서의 전원 관리장치 및 방법
US20050239518A1 (en) 2004-04-21 2005-10-27 D Agostino Anthony Systems and methods that provide enhanced state machine power management
US7979699B2 (en) * 2004-05-19 2011-07-12 Intel Corporation Processing capacity on demand
CN100474214C (zh) * 2004-08-05 2009-04-01 松下电器产业株式会社 信息处理装置
US7165132B1 (en) * 2004-10-01 2007-01-16 Advanced Micro Devices, Inc. Processing node including a plurality of processor cores and an interconnect configurable in a test-mode to cause first and second transaction source indicators to be interchanged
US7373530B2 (en) 2005-03-16 2008-05-13 Microsoft Corporation Systems and methods for providing power-loss protection to sleeping computers systems
JP2007102313A (ja) * 2005-09-30 2007-04-19 Toshiba Corp 制御装置およびマルチプロセッサ制御方法
US20080098245A1 (en) 2006-03-22 2008-04-24 G2 Microsystems, Inc. Power management system and method
US9015501B2 (en) 2006-07-13 2015-04-21 International Business Machines Corporation Structure for asymmetrical performance multi-processors
US7685409B2 (en) 2007-02-21 2010-03-23 Qualcomm Incorporated On-demand multi-thread multimedia processor
EP2003534A3 (en) * 2007-06-11 2009-02-18 MediaTek Inc. Method of and apparatus for reducing power consumption within an integrated circuit.
US8762692B2 (en) 2007-09-27 2014-06-24 Intel Corporation Single instruction for specifying and saving a subset of registers, specifying a pointer to a work-monitoring function to be executed after waking, and entering a low-power mode
US7882333B2 (en) * 2007-11-05 2011-02-01 Dell Products L.P. Architectural enhancements to CPU microcode load mechanism using inter processor interrupt messages
US8140823B2 (en) 2007-12-03 2012-03-20 Qualcomm Incorporated Multithreaded processor with lock indicator
US7962771B2 (en) * 2007-12-31 2011-06-14 Intel Corporation Method, system, and apparatus for rerouting interrupts in a multi-core processor
JP5045512B2 (ja) 2008-03-17 2012-10-10 富士通株式会社 回路設計支援装置及び回路設計支援方法
JP5598945B2 (ja) * 2008-03-17 2014-10-01 日本電気株式会社 情報処理システムおよびその制御方法
US8458722B2 (en) 2008-06-09 2013-06-04 International Business Machines Corporation Thread selection according to predefined power characteristics during context switching on compute nodes
US8683247B2 (en) 2008-06-12 2014-03-25 Advanced Micro Devices, Inc. Method and apparatus for controlling power supply to primary processor and portion of peripheral devices by controlling switches in a power/reset module embedded in secondary processor
US8402290B2 (en) * 2008-10-31 2013-03-19 Intel Corporation Power management for multiple processor cores
US8954977B2 (en) 2008-12-09 2015-02-10 Intel Corporation Software-based thread remapping for power savings
US8190938B2 (en) * 2009-01-29 2012-05-29 Nokia Corporation Method and apparatus for controlling energy consumption during resource sharing
KR20090046841A (ko) * 2009-02-18 2009-05-11 에이알엠 리미티드 마스터 및 슬레이브를 갖는 데이터 처리장치에서의 전력 관리
CN101526845B (zh) 2009-04-24 2011-02-16 威盛电子股份有限公司 电源管理方法及其相关芯片组
US8156275B2 (en) * 2009-05-13 2012-04-10 Apple Inc. Power managed lock optimization
US8447994B2 (en) * 2009-07-24 2013-05-21 Advanced Micro Devices, Inc. Altering performance of computational units heterogeneously according to performance sensitivity
EP2316322A3 (en) 2009-11-02 2011-06-29 LG Electronics Inc. Robot cleaner
US8689037B2 (en) * 2009-12-16 2014-04-01 Qualcomm Incorporated System and method for asynchronously and independently controlling core clocks in a multicore central processing unit
US8650426B2 (en) * 2009-12-16 2014-02-11 Qualcomm Incorporated System and method for controlling central processing unit power in a virtualized system
US20110161592A1 (en) * 2009-12-31 2011-06-30 Nachimuthu Murugasamy K Dynamic system reconfiguration
US8656198B2 (en) 2010-04-26 2014-02-18 Advanced Micro Devices Method and apparatus for memory power management
US8438416B2 (en) 2010-10-21 2013-05-07 Advanced Micro Devices, Inc. Function based dynamic power control
US8775836B2 (en) 2010-12-23 2014-07-08 Intel Corporation Method, apparatus and system to save processor state for efficient transition between processor power states
IN2014CN01367A (ko) * 2011-09-06 2015-04-24 Intel Corp
TWI454905B (zh) 2011-09-30 2014-10-01 Intel Corp 在多核心平台中之受限制的啓動技術

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050215274A1 (en) * 2004-03-26 2005-09-29 Broadcom Corporation MAC controlled sleep mode/wake-up mode with staged wake-up for power management
US20110191607A1 (en) 2006-11-01 2011-08-04 Gunther Stephen H Independent power control of processing cores

Also Published As

Publication number Publication date
US20140115368A1 (en) 2014-04-24
JP2015507772A (ja) 2015-03-12
CN103842933A (zh) 2014-06-04
EP2761394A4 (en) 2015-05-06
US9552039B2 (en) 2017-01-24
EP2761394A2 (en) 2014-08-06
WO2013049371A3 (en) 2013-05-23
TWI454905B (zh) 2014-10-01
EP2761394B1 (en) 2018-11-14
WO2013049371A2 (en) 2013-04-04
KR20140067071A (ko) 2014-06-03
JP5972981B2 (ja) 2016-08-17
TW201337534A (zh) 2013-09-16
CN103842933B (zh) 2017-05-17

Similar Documents

Publication Publication Date Title
KR101599319B1 (ko) 멀티코어 플랫폼에서의 제한형 부트 기법
US11768533B2 (en) Platform power consumption reduction via power state switching
US11112853B2 (en) Priority based application event control (PAEC) to reduce power consumption
US20160132354A1 (en) Application scheduling in heterogeneous multiprocessor computing platforms
TWI494850B (zh) 通透地提供給作業系統之非對稱多核心處理器系統
US9026829B2 (en) Package level power state optimization
US11099884B2 (en) Dynamic control of halt polling based on receiving a monitoring instruction executed by a guest
US20230185623A1 (en) Method of task transition between heterogenous processors
US20170038824A1 (en) Method and apparatus for reducing consumption of standby power through detection of idle state of system

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: 20190129

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 5