KR101512252B1 - 운영 시스템(os)이 없는 서비스 환경에서 펌웨어를 프로비저닝하는 방법 - Google Patents

운영 시스템(os)이 없는 서비스 환경에서 펌웨어를 프로비저닝하는 방법 Download PDF

Info

Publication number
KR101512252B1
KR101512252B1 KR1020137012603A KR20137012603A KR101512252B1 KR 101512252 B1 KR101512252 B1 KR 101512252B1 KR 1020137012603 A KR1020137012603 A KR 1020137012603A KR 20137012603 A KR20137012603 A KR 20137012603A KR 101512252 B1 KR101512252 B1 KR 101512252B1
Authority
KR
South Korea
Prior art keywords
firmware
computing device
volume
environment
state
Prior art date
Application number
KR1020137012603A
Other languages
English (en)
Other versions
KR20130107313A (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 KR20130107313A publication Critical patent/KR20130107313A/ko
Application granted granted Critical
Publication of KR101512252B1 publication Critical patent/KR101512252B1/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
    • 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
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/66Updates of program code stored in read-only memory [ROM]
    • 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)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Power Sources (AREA)

Abstract

더 높은 전력 소비 상태인 제1 상태로부터 더 낮은 전력 소비 상태인 제2 상태로 컴퓨팅 장치가 전환할 때, 프리부트(pre-boot) 시간에 이용가능한 하나 이상의 펌웨어 기능을 포함하는 펌웨어 환경을 재인스턴스화하기 위한 방법 및 장치가 있다. 펌웨어 환경은, 펌웨어 볼륨 상에 암호 서명이 검증되는지 여부, 펌웨어 볼륨의 적하목록(manifest)에 의해 요청된 컴퓨팅 장치의 하드웨어 자원이 이용가능한지 여부, 및 펌웨어 볼륨의 펌웨어 모듈이 펌웨어 환경의 설치된 펌웨어와 호환가능한지 여부를 결정한다. 그렇다면, 펌웨어 환경은, 상기 펌웨어 모듈에 의해 사용되는 자원을 수용할 메모리에의 공간을 예약하고, 컴퓨팅 장치가 더 낮은 전력 소비 상태인 제2 상태에 있는 채로, 펌웨어 모듈을 실행한다.

Description

운영 시스템(OS)이 없는 서비스 환경에서 펌웨어를 프로비저닝하는 방법{METHOD OF PROVISIONING FIRMWARE IN AN OPERATING SYSTEM (OS) ABSENT SERVICES ENVIRONMENT}
본 개시는 일반적으로 컴퓨팅 장치의 관리에 관한 것이고, 더 구체적으로는, 컴퓨팅 장치가 저 전력 소비 상태에 남아 있으면서, 컴퓨팅 장치의 운영 시스템과 독립적으로 컴퓨팅 장치의 펌웨어 환경에서 펌웨어를 프로비저닝하는(provisioning) 것에 관한 것이다.
컴퓨팅 장치의 전력 소비를 감소시키기 위한 다양한 메커니즘이 존재한다. 전력 관리를 위한 표준 기술이 고급 구성 및 전력 인터페이스(Advanced Configuration and Power Interface: ACPI) 버전 4.0에서 명시되어 있는데, 이를 공용 인터넷 상의 URL, www-acpi-info(이 문서에서 의도하지 않은 하이퍼링크를 피하기 위해 마침표를 대시 기호(dashes)로 대체하였음을 주의해야 함)에서 찾을 수 있다. ACPI는, 대부분의 컴퓨터 시스템이 전력 관리를 위해 현재 사용하며 컴퓨팅 시스템이 운영 시스템(OS)에 어떻게 의존하는지를 서술한 표준이다. 전력 관리 능력은, 컴포넌트 및 시스템 레벨 모두에서 컴퓨팅 장치가 그 운영 상태를 더 높은 전력 소비 상태와 더 낮은 전력 소비 상태 간에 전환시키는 것을 가능하게 한다. 이러한 운영 모드들은 종종, 각각 웨이크 및 휴면 상태(wake and sleep states) 또는 웨이크 및 휴면 모드라고 불린다. ACPI 사양(ACPI Specification)은 컴퓨팅 장치가 전형적으로 속할 수 있는 7개의 상태를 정의한다. 예를 들어, 상태 S3("S3")는 전형적으로 대기(standby), 휴면(또한, 본원에서 "휴면 모드"라고 지칭될 수 있음) 또는 서스펜드 투 램(suspend to RAM)으로 지칭될 수 있다. 상태 S5("S5")는 시스템종료(shutdown) 또는 "오프(off)"라고 지칭될 수 있다.
다수의 이벤트에 의해, 전환 컴퓨팅 장치가 휴면 모드와 웨이크 모드 사이에서 전환, 즉, 웨이크업하거나 휴면에 들어가도록 할 수 있다. 예를 들어, 컴퓨터 장치가 휴면으로 전환하도록 트리거하는(triggers) 휴면 이벤트에는, 사용자 비활동(inactivity) 또는 사용자 선택이 포함될 수 있다. 컴퓨팅 장치가 휴면으로 전환할 때, 컴퓨팅 장치의 컴포넌트(예를 들어, 중앙 처리 장치(CPU)와 같은 주요 프로세서, 휘발성 메모리, 대용량 스토리지용 디스크 드라이브 및 기타 등) 중 많은 부분이 또한 휴면에 들 수 있다. 일단 휴면에 들면, 컴퓨팅 장치는 웨이크 이벤트의 발생에 의해 웨이크할 수 있다. 웨이크 이벤트는, 예를 들어 원격 시스템 관리자로부터의 쿼리, 이메일 메시지, 또는 마우스나 키보드로부터의 입력에 대한 컴퓨팅 장치의 수신을 포함할 수 있다.
웨이크 이벤트가 핸들링된 후 그리고 OS가 다시 작동하기(runs) 전에, 컴퓨팅 장치의 펌웨어가 OS 개입 없이 유용한 작업을 수행하는 것에 대한 좋은 기회가 제공된다.
본 발명의 실시예는, 유사한 참조는 유사한 요소를 표시하고 있는 도면을 수반하여 설명하는 예시적 실시예지만 그에 대한 제한은 아닌 방식으로 서술될 것이다.
도 1은 다양한 실시예에 따라, 컴퓨팅 장치의 웨이크 모드로부터 휴면 모드로의 전환을 도시하는 타임라인.
도 2는 다양한 실시예에 따라, 펌웨어가 운영 시스템(OS)과 독립적으로 웨이크 이벤트를 핸들링하는 예시적 방법을 도시하는 흐름도.
도 3은 다양한 실시예에 따라, 컴퓨팅 장치에서의 부팅 및 웨이크 사이클을 도시하는 블록도.
도 4는 다양한 실시예에 따라, 예시적 컴퓨팅 장치를 도시하는 블록도.
도 5는 다양한 실시예에 따른, 하드웨어 컴포넌트 상에 있는 소프트웨어 스택에 대한 다이어그램.
도 6은 본 발명의 실시예에 따른, 펌웨어 볼륨에 대한 다이어그램.
도 7은 다양한 실시예에 따라, 프로세스를 프로비저닝하는 흐름도.
본 발명의 예시적 실시예는, 컴퓨팅 장치가 저 전력 소비 휴면 모드로 남아있을 때, 컴퓨팅 장치의 운영 시스템에 독립적인 컴퓨팅 장치의 펌웨어 환경에서 펌웨어 모듈을 프로비저닝하기 위한 방법 및 장치를 포함하나 이에 제한되지 않는다.
예시적인 실시예의 다양한 태양은, 다른 당업자에게 그들이 행할 작업의 핵심을 전달하기 위해 당업자가 일반적으로 사용하는 용어를 사용하여 서술될 것이다. 그러나, 대체적 실시예가 서술된 양상의 오직 일부만을 사용하여 실시될 수 있음은 당업자에게 명백할 것이다. 설명의 목적으로, 구체적인 번호, 자료 및 구성이 예시적인 실시예의 철저한 이해를 제공하기 위해 제시된다. 그러나 대안적인 실시예가 구체적인 세부사항 없이 실시될 수 있음은 당업자에게 명백할 것이다. 다른 예에서, 잘 알려진 특징은 예시적인 실시예를 모호하게 하지 않기 위해 생략되거나 간소화된다.
또한 다양한 연산(operations)이 예시적인 실시 형태를 이해하는 데 가장 유용한 방법으로 복수의 분리된 연산으로서 순서대로 서술될 것이나, 이 서술의 순서가, 이러한 연산들이 필수적으로 순서에 따라야함을 의미하도록 해석되어서는 안 된다. 특히, 이 연산들은 프레젠테이션의 순서대로 수행될 필요는 없다. "일 실시예에서(in one embodiment)"라는 구절이 반복하여 사용된다. 이 구절은 일반적으로 동일한 실시예를 지칭하지 않으나, 동일한 실시 형태를 지칭할 수도 있다. 문맥이 그렇지 않음을 지시하지 않는다면, "포함하는(comprising)", "가지는(having)" 및 "포함하는(including)"이라는 용어들은 동의어이다.
도 1은 다양한 실시예에 따라, 웨이크 모드로부터 휴면 모드로의 컴퓨팅 장치의 전환을 도시하는 타임라인이다. 본원에 설명된 바와 같이, 다양한 실시예에서, 컴퓨팅 장치가 휴면 모드에 있는 동안 컴퓨팅 장치의 펌웨어가 작업을 완수하는 것이 가능할 수 있다. 펌웨어는 운영 시스템과 독립적으로 이 작업을 완수할 수 있는데, 이로 인해 컴퓨팅 장치에 있어 전반적으로 전력 소비가 감소할 뿐만 아니라 기능성(functionality)이 증가할 수 있다. 실시예에서, 컴퓨팅 장치 또는 시스템은 데스크톱 컴퓨터, 노트북 컴퓨터, 모바일 컴퓨팅 장치, 네트워크 서버, 씬 클라이언트 또는 펌웨어를 활용하도록 구성된 기타 컴퓨팅 장치일 수 있다. 실시예에서 펌웨어는, 레거시 기본 입/출력 시스템(basic input/output system: BIOS), UEFI(Unified Extensible Firmware Interface; 예를 들어, 2006년 UEFI 사양 버전 2.0)와 호환 가능한 펌웨어, 확장 펌웨어 인터페이스(Extensible Firmware Interface: EFI)(예를 들어, 2004년 EFI 사양 버전 1.10)와 호환 가능한 펌웨어 또는 기타 펌웨어일 수 있다. EFI는 컴퓨팅 장치 펌웨어와 운영 시스템 또는 다른 어플리케이션 환경 간의 추상화 프로그램 인터페이스(abstract programmatic interface)에 대해 기술하는 공공 산업 사양임을 주의해야 한다. 예를 들어, EFI는 플래시 메모리 장치, 옵션 ROM(Read-Only Memory), 다양한 영구적인 스토리지 장치(예를 들어, 하드 디스크, CD-ROM(Compact Disk-Read Only Memory) 등)를 포함하는 서로 다른 다양한 자원으로부터 또는 컴퓨터 네트워크를 통한 하나 이상의 컴퓨터 시스템으로부터 펌웨어 모듈 형태의 펌웨어를 로딩할 수 있도록 해준다. 통합 EFI(Unified EFI: UEFI) 아키텍처에 대한 더 많은 정보를 공용 인터넷 상의 www-uefi-org(이 문서에서 의도하지 않은 하이퍼링크를 피하기 위해 마침표를 대시 기호로 대체하였음을 주의해야 함)에서 찾을 수 있다. 따라서, 본원에 서술된 바와 같이 다양한 실시예에서, 컴퓨팅 장치는, 휴면 모드로의 전환에 따라 프리부트 시간(pre-boot time)에 이용가능한 하나 이상의 펌웨어 기능을 포함하는 다른 펌웨어 환경 또는 UEFI를 재인스턴스화할(re-instantiate) 수 있다. 실시예에서, 재인스턴스화된 펌웨어 환경은, 이 펌웨어 환경이 일반적으로 컴퓨팅 장치의 OS에 의해 수행되는 전력 관리 기능을 수행하도록 할 수 있다. 실시예에서, 재인스턴스화된 펌웨어 환경은, OS의 개입 없이 새로운 펌웨어 모듈의 프로비저닝 또는 기존 펌웨어 모듈의 업데이트를 제공할 수 있다. 실시예에서, 새로 설치되거나 새로 업데이트된 펌웨어 모듈은 컴퓨팅 장치에 대한 운영을 수행하기 위해 실행될 수 있다.
다시 도 1을 참조하면, 도시된 실시예에서, 컴퓨팅 장치는 111에서 펌웨어 환경(또한 펌웨어라고도 지칭됨)에 의해 프리부트 시간 동안에 초기화될 수 있다. 다양한 실시예에서, 그리고 다음에 더 자세히 논의될 바와 같이, 이 프리부트 시간 동안 펌웨어는 112에서 메일박스 또는 메모리의 일부분을 예약할(reserve) 수 있는데, 이후에 이 메모리 또는 메일박스로부터 펌웨어가 데이터를 수집할 수 있다. 일단 프리부트 초기화가 완료되면, 113에서 부팅 프로세스를 계속하기 위해 제어권이 컴퓨팅 장치의 운영 시스템(OS)으로 전송될 수 있다. OS 또는 시스템 부팅 후, 이어서 115에서 OS는, 정상적인 연산과 연관된 전형적으로 더 높은 전력 소비 상태를 포함하는 기능 모드 또는 웨이크 모드에서 컴퓨팅 장치를 작동하거나 운영할 수 있다. 컴퓨팅 장치는 117까지 웨이크 모드로 운영을 계속할 수 있는데, 이 상황에서의 휴면 이벤트는, 이 컴퓨팅 장치가 더 낮은 전력 소비 상태를 포함하는 휴면 모드 S3로 전환하도록 한다. 전술된 바와 같이, 휴면 이벤트는, 예를 들면 같은 사용자 선택 또는 사용자 비활동과 같은 다양한 이벤트를 포함할 수 있다.
얼마 후, 다양한 실시예에서, 컴퓨팅 장치는 웨이크 이벤트를 수신할 수 있다. 일부 실시예에서, 이 웨이크 이벤트는 이메일, 설정 지시(configuration directive) 또는 다른 네트워크 전송과 같은 네트워크 이벤트를 포함할 수 있다. 다른 실시예에서, 웨이크 이벤트는 입력 장치의 입력을 감지하는 것, 컴퓨팅 장치의 키보드를 건드리는 것, 특정 유형의 네트워크 패킷을 수신하는 것 등등일 수 있다. 웨이크 이벤트의 처리는 시스템 관리 인터럽트(SMIs), 제어 선 변화, 레지스터 플래그, 또는 기타 구조(constructs)에 의해 초기화될 수 있다. 다른 경우에 있어서, 웨이크 이벤트의 처리는 컴퓨팅 장치의 칩셋에 의해 초기화될 수 있다. 더욱이, 일부 웨이크 이벤트는 OS에 의한 처리를 위해 컴퓨팅 장치의 전력을 올리도록 트리거할 수 있다. 본 개시의 실시예에 관련하여 후술하는 바와 같이, 기타 웨이크 이벤트는, 컴퓨팅 장치가 휴면 모드로 남아 있는 동안 펌웨어에 의해 처리될 수 있다.
이에 따라 다양한 실시예에서, 컴퓨팅 장치의 OS와 독립적으로 행동하는 펌웨어는, 이 컴퓨터 장치의 전부가 더 높은 전력 소비 상태인 제1 상태로 되돌아가지 않고도 웨이크 이벤트가 핸들링될 수 있을지 여부를 결정할 수 있다. 웨이크 이벤트가 펌웨어에 의해 핸들링될 수 없고 OS가 이 웨이크 이벤트를 핸들링해야 한다면, 121에서 디스크가 스핀 업 될 수 있고, 모니터가 켜질 수 있고, 컴퓨팅 장치가 완전히 웨이크 모드로 복구될 수 있다. 프로세스 흐름은 이어서 115로 되돌아갈 수 있고, 이 상황에서 OS는 웨이크 모드로 컴퓨팅 장치를 작동하거나 운영할 수 있다. 그러나, 만약 펌웨어가, 웨이크 이벤트는 OS에 독립적으로 그리고 이 컴퓨터 장치의 전부가 더 높은 전력 소비 상태인 제1 상태로 돌아가지 않고도 핸들링될 수 있다고 결정하면, 펌웨어는 웨이크 이벤트가 핸들링되도록 할 수 있다. 컴퓨팅 장치는 119에서 휴면을 계속할 수 있다. 일부 실시예에서, 웨이크 이벤트에 종속적으로 그리고 전체 컴퓨팅 장치를 웨이크하지 않고, 펌웨어는 웨이크 이벤트와 연관된 태스크를 서비스를 하거나 완료하기 위해 하나 이상의 하드웨어 컴포넌트 또는 장치를 웨이크할 수 있다. 추가적으로, 이벤트의 핸들링이 완료된 후에, 펌웨어는 하드웨어 컴포넌트를 더 낮은 전력 소비 상태인 제2 상태를 포함하는 휴면 모드로 되돌릴 수 있다.
실시예에서, 예를 들어 필터 드라이버와 같은 펌웨어 컴포넌트는, 123에서 OS가 하나 이상의 하드웨어 컴포넌트를 휴면 모드로 전환시키는 방법과 관련된 데이터를 모니터하고 수집하기 시작할 수 있음을 주의해야 한다. 다양한 실시예에서, 필터 드라이버는 112에서 프리부트 시간 동안 펌웨어에 의해 예약된 메모리의 일부분 또는 메일박스에 수집된 데이터를 저장할 수 있다. 펌웨어는 이 수집된 데이터를, 웨이크 이벤트의 서비스가 제공될 필요가 있는 하나 이상의 하드웨어 컴포넌트를 휴면 모드로 및/또는 휴면 모드로부터 전환하기 위해 이후에 독립적으로 사용할 수 있다. 실시예에서, 웨이크 이벤트는, 최종 사용자에게 출하 후에 컴퓨팅 장치에 프로비저닝된 펌웨어 모듈을 실행하는 결과를 초래할 수 있다.
다음으로, 도 2a 및 2b는 본 개시의 다양한 실시예에 따라, OS와 독립적으로 웨이크 이벤트를 핸들링하는 예시적 방법을 도시하는 흐름도이다. 도 2a에서 도시된 블록은, 실시예에서 펌웨어에 의해 수행될 수 있다. 도 2b에서 도시된 블록은, 실시예에서 OS에 의해 수행된다. 용어 "펌웨어에 의해 수행되는(performed by the firmware)"은 더 복잡한 컴퓨팅 장치와의 상호작용에 대한 약칭을 뜻함이 당업자에게 명백할 것이다. 단일 프로세서 시스템에서, 예를 들어 명령어의 실행은 메인 프로세서 또는 중앙 처리 장치(CPU)에 의해 수행될 수 있다. "펌웨어에 의해 수행되는(Performed by the firmware)"은, 비-운영 시스템 명령어가 프로세서와 결합하고 이어서 그 프로세스에 의해 실행되는 비 휘발성 메모리 저장소(펌웨어)로부터 패치되었음을 의미할 수 있다는 것을 주목해야 한다. 이 프로세서는 OS를 로딩하기 이전에 펌웨어에 액세스한다. 따라서 부트 명령어는 전형적으로 펌웨어 부트 블록에 저장될 수 있다. 더욱이, 일부의 실시예에서, 전체 부트 블록이 원격에 존재할 수 있고, 로컬 부트 블록이 원격에 위치하는 전체 부트 블록에 대한 포인터를 포함할 수 있다.
도 2의 실시예에서, 블록(201)에서 컴퓨팅 장치 또는 시스템 전원이 켜질 수 있다. 블록(203)에서, 컴퓨팅 플랫폼은 부트 블록 펌웨어에 의해 예비적으로 초기화될 수 있다. 부트 블록의 외부에 존재하는 펌웨어의 다른 부분이 예비적인 초기화의 역할을 할 수 있다. 부트 블록은 전형적으로 초기 메모리 초기화 및 중앙 프로세서 초기화와 같은 초기화의 초기 양상을 맡고 있음을 주의해야 한다. 예비적인 초기화는 또한, 메모리를 식별하고 재설정하는 것, 컴퓨팅 장치와 결합한 컴포넌트 및 장치들을 식별하는 것 등을 포함할 수 있다.
도시된 실시예에서, 예비적인 초기화의 일부분으로 또는 그 이후 즉시, 펌웨어는 컴퓨팅 장치의 상태를 결정하기 위한 많은 정책 질문(policy questions)을 시작할 수 있다. 블록(204)에서, 펌웨어는 휴면-인에이블된 액티비티가 가능한지 여부를 결정할 수 있다. 그렇다면, 처리는 블록(206)으로 계속된다. 그렇지 않은 경우, 처리는 블록(230)으로 계속된다. 실시예에서, 펌웨어는 블록(206)에서, 웨이크 이벤트(예를 들어, 적어도 하나의 실시예에서 네트워크 웨이크 이벤트) 때문에 컴퓨팅 장치가 웨이크업하거나 휴면 모드로부터 벗어나서 전환할지 여부를 물을 수 있다. 컴퓨팅 장치가 네트워크 웨이크 이벤트 때문에 웨이크업하지 않고, 단순히 전력을 상승시키는 것을 완료하는 다양한 실시예에서, 프리부트 프로세스는 블록(208)으로 계속될 수 있다. 블록(208)에서 펌웨어는 이후 시기에 필요한 이미지를 캐시에 저장하도록 진행할 수 있다. 예를 들어, 이는 휴면 모드(예를 들어, S3)에 있어 필요한 데이터를 캐시에 저장할 수 있다. 다음으로 블록(210)에서, 이 프리부트 시간 동안 펌웨어는 컴퓨팅 장치의 유형(tangible) 컴퓨터 판독가능 저장 매체에서 메모리의 일부분을 예약할 수 있다. 실시예에서, 이 메모리의 일부분은 펌웨어의 메일박스로서 역할을 제공할 수 있다. 펌웨어가 그 스스로를 위해 이러한 자원을 적극적으로 예약하지 않는다면, 전형적으로 컴퓨팅 장치 자원은 OS의 통제 하에 있음을 주의해야 한다. 더욱이, 아래에서 논의될 다양한 실시예에서, OS가 하나 이상의 하드웨어 컴포넌트를 휴면 상태로 전환할 수 있는 방법과 관련된 입/출력(I/O) 데이터는 펌웨어에 의해 그 이후에 액세스되는 매일박스에 (예를 들어, OS의 모니터링 컴포넌트에 의해) 저장될 수 있다. 실시예에서, 펌웨어가 이전에 캐시에 저장된 이미지를 재초기화하도록 허용할 수 있는 충분한 메모리가 또한 예약될 수 있다.
도시된 실시예에서, 다음 블록(212)에서 펌웨어는 정상적인 부팅 프로세스를 계속할 수 있고, OS에 제어권이 주어질 수 있고, OS가 런칭될 수 있다. 도 2b 상의 블록(214)에서, 예를 들어 필터 드라이버와 같은 컴포넌트를 설치할 수 있다. 아래에 보이는 바와 같이, 이 필터 드라이버는, 하드웨어 컴포넌트가 휴면 모드로 전환하는 것과 관련된 I/O 데이터를 수집하는 모니터링 컴포넌트로서 역할을 제공할 수 있다. 정상적인 OS 연산은 블록(216)에서 계속될 수 있다. 결정 블록(218)에서, 특정 시기의 기간 동안 입력이 수신되지 않았거나 다른 컴퓨팅 장치 정책이 지시하였다면, OS는 컴퓨팅 장치를 휴면 모드로 전환할 수 있다. 예를 들어, 정책이 컴퓨팅 장치가 휴면 모드로 전환하는 것을 지시하지 않는다면, OS의 연산은 블록(216)에서 계속될 수 있다. 대안적으로, 결정 블록(218)으로 되돌아가서, 컴퓨팅 장치가 휴면 모드로 들어간다면, OS는 결정 블록(218)에서 블록(220)으로 아래쪽으로 계속될 수 있다. 실시예에서, OS는 이어서, 모든 또는 실질적으로 모든 하드웨어 컴포넌트 또는 하드웨어 장치 드라이버에게 하드웨어 컴포넌트가 휴면 모드로 전환할 것이라고 통지하는 메시지를 송신할 수 있다. 필터 드라이버는 블록(222)에서 이 통지를 수신 또는 감지할 수 있고, 예를 들어 하드웨어 장치 인터페이스와 하드웨어 장치 드라이버 사이의 I/O 신호와 같은 하나 이상의 하드웨어 장치 또는 컴포넌트가 휴면 모드로 전환되는 방법과 관련된 입/출력(I/O) 데이터의 모니터링을 시작할 수 있다. 블록(224)에서, 필터 드라이버는 이어서 I/O 데이터를 수집할 수 있고, 이를 프리부트 시간에 펌웨어 환경에 의해 예약된 메일박스에 저장할 수 있다(블록(210)에 서술됨). 마지막으로, 블록(226)에서, OS가 컴퓨팅 장치를 휴면 모드로 전환하는 것을 완료한다.
앞서 시사된 바와 같이, 웨이크 이벤트를 핸들링하는 동안 및/또는 웨이크 이벤트를 핸들링한 후, 펌웨어가 I/O 데이터를 사용할 수 있도록 하기 위해 블록(224)에서 메일박스로 저장된 I/O 데이터가 더 이후의 시기에 사용될 수 있음을 주의해야 한다. 따라서, 예를 들어, 결정 블록(206)으로 되돌아가서, 컴퓨팅 장치가, 예를 들어 네트워크 웨이크 이벤트와 같은 웨이크 이벤트 때문에 웨이크업하면, YES 화살표를 뒤따를 수 있다. 블록(228)에서, OS가 휴면 모드로 남아있는 동안, 펌웨어는, 네트워크 이벤트가 OS로부터 독립적인 펌웨어에 의해 그리고 더 높은 전력 소비 상태로 전체 컴퓨팅 장치를 웨이크하거나 되돌리지 않고도 핸들링될 수 있는지 여부를 결정할 수 있다. 만약 대답이 아니오(NO)라면, 컴퓨팅 장치는 블록(230)에서 정상적인 S3 코드경로를 통해 재개되고, 결국 212에서 정상적인 부팅 프로세스를 계속한다. 그러나 대답이 예(YES)라면, 펌웨어는 네트워크 이벤트가 OS로부터 독립적으로 핸들링되도록 할 수 있다. 일부 실시예에서, 블록(232)에서 펌웨어는, 하나 이상의(그러나 전부는 아님) 하드웨어 컴포넌트를 더 높은 소비 상태로 웨이크하거나 전환할 수 있고/있거나 네트워크 이벤트를 핸들링하는데 사용하기 위해 소프트웨어를 런칭할 수 있다. 블록(235)에서, 펌웨어는, 컴퓨팅 장치를 D3 상태로 되돌려 놓기 위해 캐시에 저장된 장치 I/O를 사용할 수 있고, 필요에 따라 S3로의 전환이 발생하도록 하기 위해 적절한 포트에 명령을 작성할 수 있다.
따라서, 다양한 실시예에서, 일단 컴퓨팅 장치가 휴면 모드로 전환되면 컴퓨팅 장치의 펌웨어 환경은 재인스턴스화된다. 실시예에서, 펌웨어 환경이 일반적으로 컴퓨팅 장치의 OS에 의해 수행되는 전력 관리 및 기타 기능을 수행할 수 있다. 일부 실시예에서, 컴퓨팅 장치는, 예를 들어 휴면 모드 동안 컴퓨팅 장치로부터 수신된 네트워크 전송과 연관된 것들과 같은 임의의 하드웨어 컴포넌트를 휴면 상태로 전환하는 능력을 가질 뿐만 아니라, 펌웨어 환경은 컴퓨팅 장치의 기타 컴포넌트 또는 복수의 추가적인 하드웨어를 웨이크 모드로 전환한 것에 대해 초기화할 수 있다. 다양한 실시예에서, 펌웨어 환경은, 임의의 복수의 하드웨어 장치가 휴면 모드로 전환되는 방법과 관련된 I/O 데이터를 검색할 수 있다. 이와 같은 I/O 데이터는 프리부트 시간 동안 펌웨어에 의해 예약된 메일박스로부터 검색될 수 있다. 다양한 실시예에서, 펌웨어 환경이, 하드웨어 컴포넌트를 휴면 모드로 전환하는 것이 가능한데, 전력 관리 기능은 전형적으로 오직 OS에 의해 수행되는 기능이다. 다양한 실시예에서, 펌웨어 환경은 새로운 펌웨어 모듈 또는 업데이트된 펌웨어 모듈을 프로비저닝하는 것이 가능하다.
이제 도 3을 참조하면, 실시예는, 예를 들어 확장형 펌웨어 인터페이스(Extensible Firmware Interface: EFI)를 위한 플랫폼 이노베이션 프레임워크(Platform Innovation Framework)의 아키텍처를 재개하는 모듈 S3를 결합시킬 수 있다 -- www-intel-com/technology/framework(이 문서에서 의도하지 않은 하이퍼링크를 피하기 위해 마침표를 대시 기호로 대체하였음을 주의해야 함)에서 2003년 9월 16일, 검토용 원고 버전 0.9를 이용가능함. 예를 들어, 전형적으로, 2009년 5월 8일에 발행된, 버전 2.3, UEFI 플랫폼 초기화(PI) 사양(UEFI Platform Initialization (PI) Specification), PI EFI-이전(PEI) 모듈의 전체적인 보충 및 PI 드라이버 실행 환경(PI Driver Execution Environment)(DXE) 드라이버는 S5 모드("오프")로부터 부팅되는 동안 작동할(invoked) 수 있다. 결과적으로, 예를 들어 UEFI 쉘, 제 3자 UEFI 드라이버/옵션 ROM(option ROM's) 및 UEFI OS 로더와 같은 프리-OS 어플리케이션(pre-OS applications)에 의해 사용될 수 있는 UEFI 환경이 생성된다. 그러나, S3 동안 S3 재개 시간 제약 때문에, 컴퓨팅 장치는 DXE가 없는 PEI의 서브셋만을 전형적으로 포함할 수 있는 표준 PI 재개 흐름을 작동할 수 있다. 이와 같이, S3 재개 모드 동안, 리치 UEFI 드라이버 특징은 이용가능하지 않을 수 있다. 그러나, 본 개시의 다양한 실시예는, 컴퓨팅 장치가 S3 동안 DXE(330)를 구현할 수 있다는 것을 제공한다. 따라서, 도 3에 도시된 바와 같이, S3는, OS가 휴면 모드에 있는 동안 UEFI 부트 서비스 어플리케이션을 작동하기 위한 일부 프리-OS 은닉형(sequestered)(또는, OS 드라이버 핀형(OS driver pinned)) 페이지에 UEFI 환경을 재생성하기 위해 DXE를 포함할 수 있다.
도 3을 다시 참조하면, 실시예에 도시된 블록도(300)는 UEFI 아키텍처에 따라 구현된 부팅 및 웨이크 사이클을 도시한다. 실시예에서, 전원을 켜거나 리셋한 후 정상적인 부팅(301) 동안 프리메모리 초기화 보안(SEC) 페이즈(pre-memory init security (SEC) phase; 302)("SEC(302)")가 시작될 수 있다. SEC(302)는 컴퓨터 장치 상에 실행되는 초기 운영 코드에 대한 보안 체크를 지원할 수 있다. 다음으로, 실시예에서, SEC(302)는 CPU/메모리 초기화, 프리-EFI(PEI) 페이즈(304)("PEI(304)")로 전환될 수 있다. PEI(304)는, 예를 들어 프로세서, 칩셋 및 마더보드용 구체적인 초기(INIT) 구성 루틴을 로딩하고 작동시키기 위한 방법을 제공할 수 있다. PEI(304)는 메모리를 발견하고 늦은 초기화(late init), 드라이버 실행 환경(DXE) 페이즈(306)("DXE(306)")로 넘겨지는 자원 맵을 준비할 수 있다. DXE(306)는 콘솔 및 부팅 장치를 위한 소프트웨어 추상화(software abstractions)를 제공할 뿐만 아니라 프로세서, 칩셋 및 플랫폼 컴포넌트를 초기화하는데 책임이 있는 DXE 드라이버를 작동시키는 것을 포함할 수 있다. 310에 도시된 바와 같이 DXE(306)은 비-휘발성 저장소(NVS)와 같은 예약된 메모리에 부트 스크립트 테이블의 일부분으로 I/O 컨트롤러 세팅을 저장할 수 있다. 부트 스크립트는, 컴퓨팅 장치가 휴면 모드로 전환되기 전에 있었던 상태로 돌아가도록 되돌리는 S3 재시작에 따라 릴레이된 동작(actions)의 세트를 포함할 수 있다. 전형적인 부트 스크립트는 I/O 장치 및 CPU 상태 정보를 복구할 것이다.
319에서 보여지는 바와 같이, S3 재개 부팅에서 SEC(320)가 구현될 수 있다. 다음으로, 325에서, S3 PEI 모듈은 310에서 NVS로부터 PEI 페이즈 구성을 복구할 수 있는데, 이 복구에는, 예를 들어 칩셋(CS), 하드웨어(HW) 및 비디오 세팅의 기본적인 복구가 있다. 따라서, 실시예에서, 업데이트된 DXE(330)는 OS가 휴면 상태에 있는 동안인 S3 동안 구현될 수 있다. DXE(330)는 S3 DXE 초기 프로그램 로딩(S3 DXE initial program load: IPL; 335), S3 DXE 코어(340), S3 DXE 펌웨어 볼륨(FV)(345), S3 부팅 장치 선택(S3 Boot Device Selection(BDS); 350), S3 네트워크 프록시 액션(Network Proxy Actions; 355) 및 S3 DXE 종단기(S3 DXE Terminator; 360)를 포함하여 몇몇의 컴포넌트 또는 페이즈에 의해 용이하게 될 수 있다. 전술된 바와 같이, 실질적으로 완전하게 형성된 UEFI 인터페이스의 예시는 S3에서 DXE(330)를 포함하는 결과로서 구현될 수 있다. 전형적으로, 더 적은 수의 UEFI 드라이버의만이 프리부트 페이즈동안 추가된다. 그러나, 실시예에서, OS 드라이버는 추가적인 UEFI 드라이버를 UEFI 환경에 추가할 수 있다. 다양한 실시예에서, UEFI 드라이버는 대체적 소스로부터 수집될 수 있다. 일부 실시예에서, 이 추가적인 드라이버는, UEFI 시스템 분할 상에서 또는 DXE(330)동안 이용가능한 UEFI 드라이버의 수를 늘리기 위한 기타 방법을 통해 프로비저닝될 수 있다.
도 4는 본 개시의 실시예가 존재할 수 있는 예시적 컴퓨팅 장치(400)를 도시한다. 다양한 실시예에서, 컴퓨팅 장치(400)는 버스(420)를 통해 결합한 다양한 요소들을 포함한다. 도시된 바와 같이, 요소들은 프로세서(401), 메모리(410), 칩셋(403), 하드웨어 장치(들)(460), 플래시 메모리와 같은 비-휘발성 스토리지(430) 및 통신 인터페이스(415)를 포함할 수 있다. 칩셋(403)은 전술된 펌웨어와 함께 주어질 수 있다. 메모리(410)는 OS(422), 전술된 메일박스(435) 및 장치 드라이버(들)(480)를 포함할 수 있다. 프로세서(401)는 마이크로프로세서, 디지털 신호 프로세서, 마이크로컨트롤러 또는 기타 등등과 같은 소프트웨어를 실행할 수 있는 프로세서의 임의의 유형일 수 있다. 도 4는 이러한 프로세서(401) 오직 하나만을 도시하고 있지만, 컴퓨팅 장치(400)에 하나 이상의 프로세서가 있을 수 있고, 이 프로세서 중 하나 이상은 멀티 스레드, 멀티 코어 또는 기타 등등을 포함할 수 있다. 다양한 실시예에서, 하나 이상의 하드웨어 장치(460)의 하드웨어 인터페이스와 장치 드라이버(들)(480) 사이에 통신으로 전달되는(communicated) 버스(420) 상의 I/O 신호를 모니터링함으로써, BIOS(433)의 펌웨어 모듈은 하나 이상의 하드웨어 장치(460)의 더 높은 전력 소비 상태인 제1 상태와 더 낮은 전력 소비 상태인 제2 상태 사이로의 전환에 관한 정보를 결정하거나 모을 수 있다. 휴면 모드에 있는 동안, 펌웨어는 전술한 바와 같이 하나 이상의 네트워크 또는 웨이크 이벤트를 핸들링할 수 있다.
통신 인터페이스(415)는 네트워크 인터페이스 카드(network interface card: NIC) 또는 기타 등등과 같은 네트워킹 인터페이스를 포함할 수 있다. NIC는, 예를 들어 로컬 영역 네트워크(LAN) 걸쳐 직렬인(serial) 인터페이스를 통해 원격 서버 또는 서버(들)(482)를 포함하는 인터넷/네트워크(Internet/Network; 475)와 통신적으로 결합할 수 있다. 이 통신 인터페이스는 전송 제어 프로토콜/인터넷 프로토콜(Transfer Control Protocol/Internet Protocol: TCP/IP), 하이퍼텍스트 전송 프로토콜(hypertext transfer protocol: HTTP) 또는 단순 객체 접근 프로토콜(Simple Object Access Protocol: SOAP), 또는 기타 통신 프로토콜을 지원할 수 있다. NIC는 네트워크에 걸쳐 통신하기 위해 기타 수단을 이용할 수 있는데, 이 수단에는 예를 들어 IDE 리디렉션(Integrated Drive Electronics (IDE) redirection; 도시되지 않음) 또는 기타 수단이 있다. 실시예에서, 웨이크 이벤트를 핸들링하는 것은 특정 패킷 유형에 대해 반응하는 것, 동적 호스트 설정 프로토콜 임대(dynamic host configuration protocol (DHCP) leases)를 존속하게 두는 것, 예를 들어 메모리에 대해 바이러스를 조사하는 것과 같은 저 전력 백그라운드 액티비티를 유지하고, 원격 파일 백업/복구를 유지하는 것 및 기타 등등을 포함할 수 있으나 이에 제한되지 않음을 주의해야 한다. 도시된 실시예에서, 칩셋(403)은 또한 기본 입/출력 시스템(BIOS; 409)에 대한 소프트웨어 인터페이스를 포함할 수 있다.
도 5는 다양한 실시예에 따른 하드웨어 컴포넌트 상에 있는 소프트웨어 스택의 다이어그램이다. 실시예에 따라, 사용자 OS를 볼 수 있는 환경에서, 저 전력 업데이트/다운로드(LPUD) 어플리케이션(low power update/download (LPUD) application; 500) 및 연관된 LPUD 서비스 어플리케이션 프로그래밍 인터페이스(API)(502)는 SATA 컨트롤러(serial advanced transport architecture (SATA) controller; 512)와 통신하는 스토리지 소프트웨어 스택(510)으로부터 독립적인 소프트웨어 벤더(independent software vendor: ISV) 어플리케이션 프로그램(504, 506, 508) 사이에 개입될 수 있다. 상기 SATA 컨트롤러는 스토리지 장치(도 5에 도시되지 않음)와 통신한다. LPUD 앱은 OS가 없는 상태(OS-absent state)에서 다양한 액티비티를 수행하는데, 이는 디스크에서 바이러스 시그너처(예를 들어, 안티-바이러스 클라이언트)를 조사하거나, 컴퓨팅 클라우드 백업 서버(예를 들어, 백업 클라이언트)에 디스크 컨텐츠를 원격 백업해두거나, (예를 들어, 노트북 컴퓨터의 메인 OS가 서스펜드되고 이 노트북 컴퓨터가 LPUD 상태에 있는 동안 차 안에서의 인포테인먼트 PC(In-Vehicle Infotainment PC)에 MP3 또는 MP4를 서비스로 제공하는) 파일 서버처럼 행동하는 것을 포함할 수 있다. LPUD 서비스 API는, 메인 OS가 웨이크업할 때 디스크가 변질된 상태(corrupted state)에 있는 것을 발견하지 않도록 읽기 연산과 같은 파일 시스템에 다소 비-파괴적인 디스크로의 액세스를 제공한다. LPUD 서비스 API는 또한, 소켓 라이브러리(Socket Library)가 백업(예를 들어, 클라이언트로부터 데이터를 송신) 및 안티-바이러스(AV)의 조사(예를 들어, 시그너처 파일을 수신)를 지원하기 위해 송, 수신 연산을 수행하는 것을 대비한다. 일단 메인 OS가 웨이크업하면 사용자 OS 측은 LPUD로부터 상태 정보를 수신할 수 있고, 또는 이 사용자 OS가 바쁘지 않을 때, 이 사용자 OS는 LPUD 상태로의 전송을 시작할 수 있다. 또한, 이 사용자 OS는, (이러한 물리적 메모리가 이 사용자 OS에서 상실될 수 있고 성능 영향(performance impact)을 받을 수 있기 때문에) LPUD에 대해 얼마나 많은 메모리를 격리시킬지에(sequester) 대해 동의하고(opting-in) 결정하는 것을 포함하나 이에 제한되지 않는 LPUD 어플리케이션의 인밴드 활성화를 위한 콘솔을 제공할 것이다.
실시예에서, 펌웨어 환경에 있어, (도 4에서 BIOS(433)로서 NVS(430)에 저장된) EFI BIOS(514)는 적어도 몇몇의 컴포넌트를 포함한다. NTFS 드라이버(New Technology File System (NTFS) driver; 516)는 데이터를 읽고 쓰기 위해 하드 드라이브(518)와 통신한다. NIC 드라이버(Network interface controller (NIC) driver; 520)는 컴퓨팅 장치와 결합한 네트워크를 통해 데이터를 읽고 쓰기 위해 NIC(522)와 통신한다. WiFi 심(524)은, 컴퓨팅 플랫폼에서 무선 Nic(W-NIC)에게 원 데이터 그램(raw data gram)을 읽고 쓰는 것을 제공하는 UEFI 2.3 사양의 부록 E.2, 명령 및 데이터 블록(Command and Data Blocks; CDBs)에 정의된 바와 같이 UEFI UNDI 인터페이스를 제공하는데, 이는 제 3자 W-NIC 또는 UNDI CDB가 인텔사(Intel Corporation)로부터 상업적으로 이용가능한 칩셋의 HECI(Host Extended Command Interface)를 통해 프록시되는 관리 엔진(management engine; ME) 기반의 W-NIC를 포함할 수 있다. 관리능력이 있는 엔진(Manageability Engine: ME; 526)은, 대역을 벗어나는 칩셋 네트워킹이 직면하는 관리 능력을 제공하기 위해 포함될 수 있다. EFI LPUD 에이전트(528)는, 컴퓨팅 장치가 휴면 상태에 있는 동안 새로운 펌웨어 모듈의 프로비저닝 및/또는 현존하는 펌웨어 모듈의 업데이트를 조정한다(coordinates). 하이퍼 텍스트 전송 프로토콜(Hyper text transport protocol: HTTP)/HTTP 시큐어(HTTP secure: HTTPS) 플러그인(530)은 LibSocket을 레버리지하기 위해 포함될 수 있고, Lib C 래퍼(Lib C wrapper; 532)는 POSIX와 같은(POSIX-like) 프로그래밍 API를 추상화하기 위해 포함될 수 있다. 펌웨어 모듈(534)은, 본원에 개시된 바와 같이 ISV로부터 획득될 수 있고, 컴퓨팅 장치에 설치될 수 있는 새롭거나 업데이트된 펌웨어 모듈을 포함한다. 실시예에서, EFI BIOS(514)는 또한, S3 DXE Enable(인에이블) 플래그(S3 DXE Enable flag; 536) 및 (일 실시예에서 Kpub_s3extension_verification이라고 불리는) 공개 검증 키(538)를 포함한다.
실시예에서, 컴퓨팅 장치는, 공장에서의 제조 프로세스 동안 시스템 보드 상에 설치된 EFI BIOS 펌웨어 및 적어도 하나의 S3 DX IPL 펌웨어 모듈을 가진다. EFI BIOS에서 S3 DXE Enable 플래그(536)는 제조시에 거짓으로 설정될 수 있다. 이어서, 컴퓨팅 장치는 사용자에게 출하될 수 있다. 사용자에 의해 작동되는 동안, 컴퓨팅 장치는 S4 상태(동면함) 또는 S5 상태(전 출력 사이클)를 통해 OS로 부팅될 수 있다. OS 및 종래의 웹 브라우저를 통해, 사용자는 S3 DXE 펌웨어 볼륨을 다운로드하기 위해 선택된 웹사이트를 방문할 수 있다.
도 6은 본 발명의 실시예에 따른 S3 DXE 펌웨어 볼륨(600)의 다이어그램이다. 펌웨어 볼륨(600)은 펌웨어 볼륨의 컨텐츠를 커버할 수 있는 암호 서명(606) 및 펌웨어 볼륨 헤더(608)를 포함하는 이진 파일을 포함한다. 펌웨어 볼륨(600)은 하나 이상의 펌웨어 모듈(602)을 더 포함한다. 실시예에서, 펌웨어 모듈은 ".efi"파일 확장자를 가진다. 실시예에서, 펌웨어 모듈은 드라이버를 포함한다. 펌웨어 모듈(602)은 하나 이상의 S3 DXE IPL 펌웨어 모듈에 대한 펌웨어 이진 코드를 포함한다. 본 발명의 실시예에서, 펌웨어 모듈은 본원에 더 서술되는 바와 같이 펌웨어 볼륨으로부터 읽혀지고, 비-휘발성 스토리지(430)에 설치되고, 낮은 전력 소비 상태 동안 실행될 수 있다. 펌웨어 볼륨은 적하목록(manifest; 604)을 더 포함한다. 적하목록(604)은, 실행될 때 S3 DXE 펌웨어 볼륨이 소비하거나 사용해야 할 컴퓨터 장치 하드웨어 자원(I/O 장치, 메모리 등)이 무엇인지를 선언한다. 이 S3 DXE 펌웨어 볼륨은, 연관된 개인 키(Kpriv_s3extension_verification)를 갖는 신호를 송신하는 서버를 사용하는 독립적 소프트웨어 벤더(ISV), OEM(original equipment manufacturer) 또는 독립적 BIOS 벤더(IBV)와 같은 제 3자에 의해 사전에 신호가 송신된다.
OS가 존재하는 어플리케이션 프로그램은 이어서, 사용자가 S3 DXE 확장 펌웨어 모듈(들)을 설치하는 것을 원하는지 여부를 사용자에게 묻도록 촉구할 수 있다. 실시예에서, 만약 사용자가 펌웨어 모듈을 설치하는 것을 원한다면, OS가 존재하는 어플리케이션은 비-휘발성 스토리지에 저장된 S3 DXE 펌웨어 볼륨을 가리키는 포인터로 UpdateCapsule UEFI 런타임 서비스를 작동시킨다. (사용자는 알기 어려울 것이나, EFI BIOS 펌웨어가 UpdateCapsule 런타임 서비스를 어떻게 구현하느냐에 따라 웜 스타트 또는 S3 상태 둘 중 어느 하나로) 재-시작함에 따라, EFI BIOS 펌웨어는 비-휘발성 스토리지에서 S3 DXE 펌웨어 볼륨의 존재를 감지한다.
도 7은 다양한 실시예에 따라 프로세스를 프로비저닝하는 흐름도이다. 실시예에서 이 처리는 도 3에서 도시된 바와 같이 컴퓨팅 장치가 S3 휴면 상태에 있는 동안 수행될 수 있다. 블록(700)에서, EFI BIOS 펌웨어는, 공개 검증 키(Kpub_s3extension_verification)를 사용하여 S3 DXE 펌웨어 볼륨 상의 암호 서명(606)이 검증되는지 여부를 결정한다. 만약 그렇다면, 블록(702)에서, EFI BIOS 펌웨어는, 펌웨어 볼륨 적하목록에 의해 요청된 하드웨어 자원이 이용가능한지 여부를 결정하기 위해 체크한다. 만약 그렇다면, 블록(704)에서, EFI BIOS는 펌웨어 볼륨에서 펌웨어 모듈이 이미 설치된 현존하는 펌웨어와 호환가능한지 여부(예를 들어, 이들의 의존성이 만족되거나, 올바른 명령어 세트 아키텍처가 존재하는지 등)를 결정한다. 만약 그렇다면, 블록(706)에서, EFI BIOS는 이 펨웨어 볼륨으로부터 새롭거나 업데이트된 펌웨어 모듈에 의해 사용될 수 있도록 자원을 지원할 만큼 충분히 큰 메모리 공간을 비-휘발성 메모리 내에 예약한다. 블록(708)에서, EFI BIOS는 S3 DXE Enable 플래그를 참으로 설정한다. 만약 블록(700, 702 및 704)에서 임의의 체크라도 실패하면, 처리는 블록(710)에서 계속된다. 블록(710)에서 EFI BIOS는 시스템 테이블 엔트리를 생성한다. 이 시스템 테이블은 UEFI 2.3 사양의 섹션 4.6에 서술된 바와 같이 EFI 구성 테이블(EFI Configuration Table)을 가진다. 이는 벤더 GUID라고 명칭이 된 추가적인 테이블의 시리즈를 설치하는 것을 허용한다. 이 경우에 EFI BIOS가 성공일 경우 "참(TRUE)" 및 실패의 경우 "거짓(FALSE)"인 불린 값(BOOLEAN value)을 가지는 테이블을 생성할 수 있을 것이다. 이 시스템 테이블 엔트리는 UpdateCapsule 런타임 서비스 콜에 대한 응답으로 OS에 펌웨어 모듈의 실행과 관련된 상태 값을 반환하기 위한 상태 구조를 포함한다. 이는 S3을 떠나 시스템이 웨이크업한 후, 환경을 메인 호스트 OS로 되돌려 처리하는 임베디드된 S3로부터 상태 정보를 전달하기 위해 행해진다. 블록(712)에서, 만약 S3 DXE Enable 플래그가 참이라면, 성공 상태가 블록(714)에 반환될 수 있고 펌웨어 모듈이 실행될 수 있다. 그렇지 않으면, 실패 상태가 블록(716)에 반환될 것이다.
실시예에서, 사용되는 하드웨어 자원에 대해 메모리를 공급하는 대안적 방법이, OS가, S3 DXE 펌웨어 모듈이 (가능한 산재한(possibly scattered)) 페이지 리스트를 UpdateCapsule 런타임 서비스 콜로 사용하고 전달할 OS 페이지를 "고정하거나(pin)" 예약하는 것이다. 따라서, 펌웨어는, OS 메모리 맵으로부터 메모리를 훔치지는 않으나, 대신 OS로부터 산재한 페이지 리스트를 취할(take) 것이고, 그 후 "펌웨어 예약된" 이 페이지들을 만들고, S3 DXE 펌웨어 모듈을 런칭하기 위해 이들을 사용할 것이다.
실시예에서, OS 설치자는, UEFI 서비스 분할 상의 디렉토리에서 S3 DXE 펌웨어 볼륨을 두고 UpdateCapsule 콜을 통해 펌웨어 볼륨의 위치를 전달할 수 있다. 또 다른 실시예에서, EFI BIOS는 펌웨어 볼륨에 대한 UEFI 시스템 분할을 탐색할(probe) 수 있다. 각각의 경우에서, EFI BIOS는, 연속적인 S3 DXE 활성화에서 사용되는 메모리로 컨텐츠를 복사하기 전에 펌웨어 볼륨의 컨텐츠를 암호로 검증한다.
실시예에서, 연속적인 S3 재개 시에, 만약 S3 DXE Enable 플래그가 참이라면, EFI BIOS는 휴면으로 돌아가고/돌아가거나 OS 재개 벡터로 제어권을 전달하기 전에 S3 DXE 펌웨어 볼륨으로부터 S3 DXE IPL 및 연관된 펌웨어 모듈을 런칭할 수 있다.
따라서, OS-호스트된 설치자가 저 전력 소비 상태에서 펌웨어 모듈 다운로드 능력을 활성화할 수 있는 하나의 터치 프로비저닝 모델이 서술된다. 이 능력은, 컴퓨팅 장치가 사용자에게 출하된 후 활성화될 수 있다. 이는, 엔터티가 EFI BIOS에서의 작은 "고리(hooks)"로서 제 3자에 S3 DXE IPL 코드 및 검증 키 인프라를 제공하도록 허용하나, 출하 후에, 펌웨어 볼륨은, OS-서스펜드된 S3 DXE 환경에서의 실행을 목적으로 컴퓨팅 장치에 추가될 수 있다.
본원에 서술된 기술은 임의의 특정 하드웨어 또는 소프트웨어 구성에 제한되지 않고, 이들은 임의의 컴퓨팅, 소비자 전자장치 또는 프로세싱 환경에서 적용가능성을 발견할 수 있다. 이 기술은 하드웨어, 소프트웨어 또는 이 둘의 조합에서 구현될 수 있다. 이 기술은, 프로세서, 이 프로세서에 의해 액세스 가능한 저장 매체(휘발성 및 비-휘발성 메모리 및/또는 저장 요소들을 포함함), 적어도 하나의 입력 장치 및 하나 이상의 출력 장치를 포함할 수 있는 모바일 또는 고정된 컴퓨터, 개인 휴대 정보 단말기, 셋 톱 박스, 휴대 전화 및 문서, 소비자 전자 장치(DVD 플레이어, 개인 비디오 리코더, 개인 비디오 플레이어, 위성 수신기, 스테레오 수신기, 케이블 TV 수신기를 포함함) 및 기타 전자 장치와 같은 프로그래밍 가능한 기계 상에서 실행되는 프로그램이 구현될 수 있다. 당업자는, 이 개시가 멀티-프로세서 시스템, 미니컴퓨터, 메인프레임 컴퓨터, 독립적인 소비자 전자 장치 및 기타 등등을 포함하는 다양한 시스템 구성으로 실시될 수 있음을 이해할 수 있다. 본 발명은 또한, 태스크 또는 그 일부분이 통신 네트워크를 통해 링크되어있는 원격 프로세싱 장치에 의해 수행될 수 있는 분산된 컴퓨팅 환경에서 실시될 수 있다.
프로그램 명령어는, 이 명령어로 프로그래밍된 일반적인 목적 또는 특수한 목적의 프로세싱 시스템이 본원에 서술된 연산 중 일부를 수행하도록 하기 위해 사용될 수 있다. 대안적으로, 연산은, 이 연산을 수행하기 위한 하드와이어드 로직을 포함하는 구체적인 하드웨어 컴포넌트에 의해 수행되거나 프로그래밍된 컴퓨터 컴포넌트 및 커스터마이즈된 하드웨어 컴포넌트의 임의의 조합에 의해 수행될 수 있다. 본원에 서술된 방법은, 이 방법을 수행하기 위해 프로세싱 시스템 또는 기타 전자 장치를 프로그래밍하는데 사용될 수 있는 명령어를 그 상에 저장하는 기계 액세스 가능한 매체를 포함할 수 있는 컴퓨터 프로그램 제품으로서 제공될 수 있다. 본원에 사용된 용어 "컴퓨터 판독가능 매체(computer readable medium)"는, 컴퓨팅 장치에 의해 실행되기 위한 명령어의 시퀀스를 저장하거나 인코딩할 수 있고, 컴퓨터 장치가 본원에 서술된 방법 중 임의의 하나를 수행하도록 하는 임의의 매체를 포함할 것이다. 용어 "컴퓨터 판독가능 매체"는 이에 따라, 고체-상태 메모리와 광 디스크 및 자기 디스크를 포함하나 이에 제한되지 않을 것이다. 더욱이, 해당 분야에서 소프트웨어에 관해 보면, 하나의 형태, 또는 또 다른 형태(예를 들어, 프로그램, 프로시저, 프로세스, 어플리케이션, 모듈, 로직 및 기타 등등)로 조치를 취하거나 결과를 발생시키는 것은 일반적이다. 이러한 표현은 단지, 프로세싱 시스템에서 소프트웨어가 실행될 때, 프로세서가 액션을 수행하거나 결과를 생성하도록 하는 것에 대해 서술하는 가장 빠른 방법이다.

Claims (23)

  1. 컴퓨팅 장치에 펌웨어 모듈을 프로비저닝하는(provisioning) 방법으로서,
    컴퓨팅 장치가 더 높은 전력 소비 상태인 제1 상태로부터 더 낮은 전력 소비 상태인 제2 상태로 전환할(transitioning) 때, 프리부트 시간(pre-boot time)에 이용가능한 하나 이상의 펌웨어 기능을 포함하는 펌웨어 환경을 재인스턴스화하는(re-instantiating) 단계;
    상기 펌웨어 환경이, 펌웨어 볼륨(firmware volume) 상의 암호 서명이 검증되는지 여부를 결정하는 단계;
    상기 펌웨어 환경이, 상기 펌웨어 볼륨의 적하목록(manifest)에 의해 요청되는 상기 컴퓨팅 장치의 하드웨어 자원들이 이용가능한지 여부를 결정하는 단계;
    상기 펌웨어 환경이, 상기 펌웨어 볼륨의 적어도 하나의 펌웨어 모듈이 상기 펌웨어 환경의 설치된 펌웨어와 호환가능한지(compatible) 여부를 결정하는 단계;
    상기 적어도 하나의 펌웨어 모듈에 의해 사용되는 자원들을 수용할(accommodate) 메모리에서의 공간을 예약하는(reserving) 단계; 및
    상기 컴퓨팅 장치가 상기 더 낮은 전력 소비 상태인 제2 상태에 있는 채로, 상기 적어도 하나의 펌웨어 모듈을 실행하는 단계
    를 포함하는 펌웨어 모듈 프로비저닝 방법.
  2. 제1항에 있어서,
    상기 컴퓨팅 장치가 상기 더 높은 전력 소비 상태인 제1 상태에 있을 때 상기 컴퓨팅 장치에 상기 펌웨어 볼륨을 다운로드하는 단계
    를 더 포함하는 펌웨어 모듈 프로비저닝 방법.
  3. 제1항에 있어서, 상기 펌웨어 볼륨은,
    헤더, 상기 펌웨어 볼륨의 컨텐츠를 커버하는(covering) 암호 서명, 상기 적어도 하나의 펌웨어 모듈에 의해 사용되는 상기 컴퓨팅 장치의 하드웨어 자원들을 선언하는 적하목록, 및 상기 적어도 하나의 펌웨어 모듈을 포함하는, 펌웨어 모듈 프로비저닝 방법.
  4. 제3항에 있어서, 상기 적어도 하나의 펌웨어 모듈은,
    하나 이상의 EFI S3 DXE IPL 펌웨어 드라이버에 대한 이진 코드(binary code)를 포함하는, 펌웨어 모듈 프로비저닝 방법.
  5. 제4항에 있어서, 상기 펌웨어 환경은,
    상기 컴퓨팅 장치의 제조시에 거짓(false)으로 설정된 S3 DXE IPL 인에이블 플래그(S3 DXE IPL enable flag)를 포함하고,
    상기 암호 서명이 검증되고, 상기 하드웨어 자원들이 이용가능하고, 상기 적어도 하나의 펌웨어 모듈이 호환가능할 때, 상기 S3 DXE IPL 인에이블 플래그를 참(true)으로 설정하는 것
    을 더 포함하는, 펌웨어 모듈 프로비저닝 방법.
  6. 제5항에 있어서,
    연속적인 S3 재개(successive S3 resume) 시에, 만약 상기 S3 DXE IPL 인에이블 플래그가 참이면, 제어권을 운영 시스템 재개 벡터(operating system resume vector)로 전달하기 전에, 상기 펌웨어 볼륨으로부터 상기 S3 DXE IPL 및 연관된 펌웨어 모듈들을 런칭하는(launching) 단계
    를 더 포함하는, 펌웨어 모듈 프로비저닝 방법.
  7. 제1항에 있어서,
    상기 펌웨어 볼륨은 상기 컴퓨팅 장치의 제조자와는 다른 당사자(party)에 의해 제공되고 서명되며, 상기 펌웨어 볼륨은 사용자로의 출하(shipment) 후에 상기 컴퓨팅 장치에 설치되는, 펌웨어 모듈 프로비저닝 방법.
  8. 제1항에 있어서,
    상기 적어도 하나의 펌웨어 모듈의 실행에 관한 상태 값(status value)을 상기 컴퓨팅 장치의 운영 시스템에 반환하기 위한, 상태 구조를 갖는 시스템 테이블 엔트리를 생성하는 단계
    를 더 포함하는 펌웨어 모듈 프로비저닝 방법.
  9. 컴퓨팅 장치에 있어서,
    프로세서; 및
    상기 프로세서에 의해 운영되도록 구성된 펌웨어 환경을 포함하고,
    상기 펌웨어 환경은, 기구(apparatus)를 제1 전력 레벨을 소비하는 운영 상태로 부팅하는데 사용되는 복수의 펌웨어 기능을 포함하고,
    상기 펌웨어 환경은 또한, 상기 기구가 상기 운영 상태를 상기 제1 전력 레벨보다 더 낮은 제2 전력 레벨을 소비하는 휴면 상태로 전환할 때, 상기 기구를 부팅하는데 사용되는 상기 펌웨어 기능들의 적어도 하나의 서브셋을 포함하도록 재인스턴스화되어, 상기 펌웨어 환경으로 하여금,
    상기 펌웨어 환경이, 펌웨어 볼륨 상의 암호 서명이 검증되는지 여부를 결정하고,
    상기 펌웨어 환경이, 상기 펌웨어 볼륨의 적하목록에 의해 요청되는 상기 컴퓨팅 장치의 하드웨어 자원들이 이용가능한지 여부를 결정하고,
    상기 펌웨어 환경이, 상기 펌웨어 볼륨의 적어도 하나의 펌웨어 모듈이 상기 펌웨어 환경의 설치된 펌웨어와 호환가능한지 여부를 결정하고,
    상기 적어도 하나의 펌웨어 모듈에 의해 사용되는 자원들을 수용할 메모리에서의 공간을 예약하고,
    상기 컴퓨팅 장치가 더 낮은 전력 소비 상태인 제2 상태에 있는 채로, 상기 적어도 하나의 펌웨어 모듈을 실행할 수 있게 하도록 구성되는, 컴퓨팅 장치.
  10. 제9항에 있어서, 상기 프로세서는,
    상기 컴퓨팅 장치가 더 높은 전력 소비 상태인 제1 상태에 있을 때, 상기 펌웨어 볼륨을 상기 컴퓨팅 장치에 다운로드하는, 컴퓨팅 장치.
  11. 제9항에 있어서, 상기 펌웨어 볼륨은,
    헤더, 상기 펌웨어 볼륨의 컨텐츠를 커버하는 암호 서명, 상기 적어도 하나의 펌웨어 모듈에 의해 사용되는 상기 컴퓨팅 장치의 하드웨어 자원들을 선언하는 적하목록, 및 상기 적어도 하나의 펌웨어 모듈을 포함하는, 컴퓨팅 장치.
  12. 제11항에 있어서, 상기 적어도 하나의 펌웨어 모듈은,
    하나 이상의 EFI S3 DXE IPL 펌웨어 드라이버에 대한 이진 코드를 포함하는, 컴퓨팅 장치.
  13. 제12항에 있어서,
    상기 펌웨어 환경은, 상기 컴퓨팅 장치의 제조시에 거짓으로 설정된 S3 DXE IPL 인에이블 플래그를 포함하고,
    상기 펌웨어 환경은, 상기 암호 서명이 검증되고, 상기 하드웨어 자원들이 이용가능하고, 상기 적어도 하나의 펌웨어 모듈이 호환가능할 때, 상기 S3 DXE IPL 인에이블 플래그를 참으로 설정하는, 컴퓨팅 장치.
  14. 제13항에 있어서,
    연속적인 S3 재개 시에, 만약 상기 S3 DXE IPL 인에이블 플래그가 참이면, 상기 펌웨어 환경이, 제어권을 운영 시스템 재개 벡터로 전달하기 전에, 상기 펌웨어 볼륨으로부터 상기 S3 DXE IPL 및 연관된 펌웨어 모듈들을 런칭하는, 컴퓨팅 장치.
  15. 제9항에 있어서, 상기 펌웨어 볼륨은,
    상기 컴퓨팅 장치의 제조자와는 다른 당사자에 의해 제공되고 서명되며, 상기 펌웨어 볼륨은 사용자로의 출하(shipment) 후에 상기 컴퓨팅 장치에 설치되는, 컴퓨팅 장치.
  16. 제9항에 있어서, 상기 펌웨어 환경은,
    상기 적어도 하나의 펌웨어 모듈의 실행에 관한 상태 값을 상기 컴퓨팅 장치의 운영 시스템에 반환하기 위한, 상태 구조를 갖는 시스템 테이블 엔트리를 생성하는, 컴퓨팅 장치.
  17. 컴퓨팅 장치의 프로세서 상에서 실행될 때, 펌웨어 모듈을 상기 컴퓨팅 장치에 프로비저닝하기 위한 하나 이상의 연산을 수행하는 하나 이상의 명령어를 포함하는 컴퓨터-판독가능 매체로서,
    상기 프로비저닝하는 것은,
    상기 컴퓨팅 장치를 더 높은 전력 소비 상태인 제1 상태로부터 더 낮은 전력 소비 상태인 제2 상태로 전환할 때, 프리부트 시간에 이용가능한 하나 이상의 펌웨어 기능을 포함하는 펌웨어 환경을 재인스턴스화하고,
    상기 펌웨어 환경이, 펌웨어 볼륨 상의 암호 서명이 검증되었는지 여부를 결정하고,
    상기 펌웨어 환경이, 상기 펌웨어 볼륨의 적하목록에 의해 요청된 상기 컴퓨팅 장치의 하드웨어 자원들이 이용가능한지 여부를 결정하고,
    상기 펌웨어 환경이, 상기 펌웨어 볼륨의 적어도 하나의 펌웨어 모듈이 상기 펌웨어 환경의 설치된 펌웨어와 호환가능한지 여부를 결정하고,
    상기 적어도 하나의 펌웨어 모듈에 의해 사용되는 자원들을 수용할 메모리에서의 공간을 예약하고,
    상기 컴퓨팅 장치가 상기 더 낮은 전력 소비 상태인 제2 상태에 있는 채로, 상기 적어도 하나의 펌웨어 모듈을 실행함으로써 이루어지는,
    컴퓨터-판독가능 매체.
  18. 제17항에 있어서,
    상기 컴퓨팅 장치가 상기 더 높은 전력 소비 상태인 제1 상태에 있을 때 상기 컴퓨팅 장치에 상기 펌웨어 볼륨을 다운로드하기 위한 명령어들을
    더 포함하는 컴퓨터-판독가능 매체.
  19. 제17항에 있어서, 상기 펌웨어 볼륨은,
    헤더, 상기 펌웨어 볼륨의 컨텐츠를 커버하는 암호 서명, 상기 적어도 하나의 펌웨어 모듈에 의해 사용되는 상기 컴퓨팅 장치의 하드웨어 자원들을 선언하는 적하목록 및 상기 적어도 하나의 펌웨어 모듈을 포함하는, 컴퓨터-판독가능 매체.
  20. 제19항에 있어서, 상기 적어도 하나의 펌웨어 모듈은,
    하나 이상의 EFI S3 DXE IPL 펌웨어 드라이버에 대한 이진 코드를 포함하는, 컴퓨터-판독가능 매체.
  21. 제20항에 있어서, 상기 펌웨어 환경은,
    상기 컴퓨팅 장치의 제조시에 거짓으로 설정된 S3 DXE IPL 인에이블 플래그를 포함하고,
    상기 컴퓨터-판독가능 매체는
    상기 암호 서명이 검증되고, 상기 하드웨어 자원들이 이용가능하고, 상기 적어도 하나의 펌웨어 모듈이 호환가능할 때, 상기 S3 DXE IPL 인에이블 플래그를 참으로 설정하기 위한 명령어들을
    더 포함하는, 컴퓨터-판독가능 매체.
  22. 제21항에 있어서,
    연속적인 S3 재개 시에, 만약 상기 S3 DXE IPL 인에이블 플래그가 참이면, 제어권을 운영 시스템 재개 벡터로 전달하기 전에, 상기 펌웨어 볼륨으로부터 상기 S3 DXE IPL 및 연관된 펌웨어 모듈들을 런칭하기 위한 명령어들을
    더 포함하는, 컴퓨터-판독가능 매체.
  23. 제17항에 있어서,
    상기 적어도 하나의 펌웨어 모듈의 실행에 관한 상태 값을 상기 컴퓨팅 장치의 운영 시스템에 반환하기 위한, 상태 구조를 갖는 시스템 테이블 엔트리를 생성하기 위한 명령어들을
    더 포함하는 컴퓨터-판독가능 매체.
KR1020137012603A 2010-11-16 2011-11-07 운영 시스템(os)이 없는 서비스 환경에서 펌웨어를 프로비저닝하는 방법 KR101512252B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/947,485 US8607040B2 (en) 2010-11-16 2010-11-16 Method of provisioning firmware in an operating system (OS) absent services environment
US12/947,485 2010-11-16
PCT/US2011/059615 WO2012067882A2 (en) 2010-11-16 2011-11-07 Method of provisioning firmware in an operating system (os) absent services environment

Publications (2)

Publication Number Publication Date
KR20130107313A KR20130107313A (ko) 2013-10-01
KR101512252B1 true KR101512252B1 (ko) 2015-04-14

Family

ID=46048900

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137012603A KR101512252B1 (ko) 2010-11-16 2011-11-07 운영 시스템(os)이 없는 서비스 환경에서 펌웨어를 프로비저닝하는 방법

Country Status (8)

Country Link
US (1) US8607040B2 (ko)
EP (1) EP2641168B1 (ko)
JP (1) JP5606633B2 (ko)
KR (1) KR101512252B1 (ko)
CN (1) CN103221919B (ko)
AU (1) AU2011329330B2 (ko)
TW (1) TWI524205B (ko)
WO (1) WO2012067882A2 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9721101B2 (en) 2013-06-24 2017-08-01 Red Hat, Inc. System wide root of trust chaining via signed applications
US8607040B2 (en) 2010-11-16 2013-12-10 Intel Corporation Method of provisioning firmware in an operating system (OS) absent services environment
CN103282854B (zh) 2010-12-21 2016-08-10 英特尔公司 用于功率管理的系统和方法
EP2690828B1 (en) * 2011-03-23 2017-08-30 Panasonic Corporation Station, target apparatus, initiator apparatus, communication system, and communication method
US8843915B2 (en) * 2011-07-28 2014-09-23 Hewlett-Packard Development Company, L.P. Signature-based update management
US20130042231A1 (en) * 2011-08-10 2013-02-14 Ford Global Technologies, Llc Methods and Apparatus for Software Updating
TW201337760A (zh) * 2012-03-09 2013-09-16 Phoenix Tech Ltd 呼叫基本輸入輸出系統之韌體執行時間服務之方法
US9031712B2 (en) * 2012-06-30 2015-05-12 Intel Corporation Remote management and control of vehicular functions via multiple networks
US9600423B2 (en) * 2012-07-26 2017-03-21 Hewlett-Packard Development Company, L.P. Periodic access of a hardware resource
US9189225B2 (en) 2012-10-16 2015-11-17 Imprivata, Inc. Secure, non-disruptive firmware updating
US20140208133A1 (en) * 2013-01-23 2014-07-24 Dell Products L.P. Systems and methods for out-of-band management of an information handling system
US9465432B2 (en) 2013-08-28 2016-10-11 Via Technologies, Inc. Multi-core synchronization mechanism
US9507404B2 (en) * 2013-08-28 2016-11-29 Via Technologies, Inc. Single core wakeup 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
TWI643130B (zh) * 2013-09-12 2018-12-01 系微股份有限公司 用於在uefi安全開機資料庫中自動註冊任選rom的系統以及方法
CN105745617B (zh) * 2013-10-31 2020-07-28 英特尔公司 用于预启动固件更新的选择性功率管理
DE102014008479A1 (de) * 2014-06-07 2015-12-17 Audi Ag Kraftfahrzeug-Steuergerät mit Stromsparmodus für eine Parkphase
JP6396502B2 (ja) 2014-06-24 2018-09-26 インテル・コーポレーション ファームウェアセンサレイヤ
US9785801B2 (en) * 2014-06-27 2017-10-10 Intel Corporation Management of authenticated variables
US20160092877A1 (en) * 2014-09-25 2016-03-31 Yen Hsiang Chew Secure user authentication interface technologies
CN106293898A (zh) * 2015-05-20 2017-01-04 张远虎 多线程设计方法
US9965270B2 (en) * 2015-07-01 2018-05-08 Quanta Computer Inc. Updating computer firmware
EP3345112B1 (en) * 2016-01-28 2020-04-22 Hewlett-Packard Development Company, L.P. Thresholds on scripts executable by unified extensible firmware interface systems
US10228930B2 (en) * 2016-01-28 2019-03-12 Microsoft Technology Licensing, Llc Offloading network connectivity and execution tasks to an assistant device
CN107533441B (zh) * 2016-02-12 2020-12-25 慧与发展有限责任合伙企业 创建操作系统卷
CN107085459B (zh) * 2016-02-14 2020-03-31 华为技术有限公司 一种电源管理方法以及系统
JP2017162283A (ja) * 2016-03-10 2017-09-14 富士通株式会社 スマート装置、スワップ方法及びスワッププログラム
US10171452B2 (en) * 2016-03-31 2019-01-01 International Business Machines Corporation Server authentication using multiple authentication chains
US10146606B2 (en) * 2016-04-06 2018-12-04 Dell Products, Lp Method for system debug and firmware update of a headless server
US11243782B2 (en) * 2016-12-14 2022-02-08 Microsoft Technology Licensing, Llc Kernel soft reset using non-volatile RAM
US10262158B1 (en) * 2017-07-27 2019-04-16 American Megatrends, Inc. Restricting the use of a firmware tool to a specific platform
US11455394B2 (en) 2017-09-06 2022-09-27 Absolute Software Corporation Secure firmware interface
CA3169129A1 (en) * 2017-12-13 2019-06-20 Absolute Software Corporation Firmware publication of multiple binary images
TWI647617B (zh) * 2018-01-23 2019-01-11 緯創資通股份有限公司 電子裝置與其韌體更新方法
US11379214B2 (en) * 2019-03-29 2022-07-05 Intel Corporation Runtime firmware activation for memory devices
US11068035B2 (en) * 2019-09-12 2021-07-20 Dell Products L.P. Dynamic secure ACPI power resource enumeration objects for embedded devices
WO2021141606A1 (en) * 2020-01-10 2021-07-15 Hewlett-Packard Development Company, L.P. Change of firmware settings
US11126518B1 (en) * 2020-03-16 2021-09-21 Quanta Computer Inc. Method and system for optimal boot path for a network device
US11392365B2 (en) * 2020-12-14 2022-07-19 International Business Machines Corporation Optimizing device update scheduling
US11960389B2 (en) 2021-10-29 2024-04-16 International Business Machines Corporation Compatibility testing of a component with an unknown software and/or firmware version in a multi-component system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060136756A1 (en) 2004-12-22 2006-06-22 Intel Corporation Low power firmware
US20090132839A1 (en) 2007-11-15 2009-05-21 Rothman Michael A Method and device to handle denial of service attacks on wake events
JP2009524121A (ja) 2005-11-21 2009-06-25 インテル コーポレイション システム動作前の動的広告板サービス
US20100241839A1 (en) 2009-03-20 2010-09-23 Phoenix Technologies Ltd Loading operating systems using memory segmentation and ACPI based context switch

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6691234B1 (en) * 2000-06-16 2004-02-10 Intel Corporation Method and apparatus for executing instructions loaded into a reserved portion of system memory for transitioning a computer system from a first power state to a second power state
US7017040B2 (en) * 2003-12-04 2006-03-21 Intel Corporation BIOS update file
US7185190B2 (en) * 2003-12-29 2007-02-27 Intel Corporation Pushing capabilities into firmware by an operating system
US7818614B2 (en) * 2004-10-25 2010-10-19 Hewlett-Packard Development Company, L.P. System and method for reintroducing a processor module to an operating system after lockstep recovery
US20060149713A1 (en) * 2005-01-06 2006-07-06 Sabre Inc. System, method, and computer program product for improving accuracy of cache-based searches
US7373537B2 (en) 2005-06-28 2008-05-13 Intel Corporation Response to wake event while a system is in reduced power consumption state
CN1992611B (zh) * 2005-12-30 2010-05-12 联想(北京)有限公司 移动计算装置及其接收数据包的方法
US8230237B2 (en) 2007-12-06 2012-07-24 Intel Corporation Pre-boot environment power management
US8806231B2 (en) * 2009-12-22 2014-08-12 Intel Corporation Operating system independent network event 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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060136756A1 (en) 2004-12-22 2006-06-22 Intel Corporation Low power firmware
JP2009524121A (ja) 2005-11-21 2009-06-25 インテル コーポレイション システム動作前の動的広告板サービス
US20090132839A1 (en) 2007-11-15 2009-05-21 Rothman Michael A Method and device to handle denial of service attacks on wake events
US20100241839A1 (en) 2009-03-20 2010-09-23 Phoenix Technologies Ltd Loading operating systems using memory segmentation and ACPI based context switch

Also Published As

Publication number Publication date
US8607040B2 (en) 2013-12-10
EP2641168A2 (en) 2013-09-25
AU2011329330A1 (en) 2013-07-04
KR20130107313A (ko) 2013-10-01
CN103221919B (zh) 2017-04-12
WO2012067882A3 (en) 2012-07-05
EP2641168B1 (en) 2019-08-21
WO2012067882A2 (en) 2012-05-24
US20120124357A1 (en) 2012-05-17
AU2011329330B2 (en) 2016-05-19
JP5606633B2 (ja) 2014-10-15
JP2013543627A (ja) 2013-12-05
CN103221919A (zh) 2013-07-24
TWI524205B (zh) 2016-03-01
EP2641168A4 (en) 2015-01-21
TW201234209A (en) 2012-08-16

Similar Documents

Publication Publication Date Title
KR101512252B1 (ko) 운영 시스템(os)이 없는 서비스 환경에서 펌웨어를 프로비저닝하는 방법
US9489029B2 (en) Operating system independent network event handling
RU2435200C2 (ru) Быстрая загрузка операционной системы из выключенного состояния
KR101638658B1 (ko) 이중 운영 시스템을 위한 파일 시스템
CN105765534B (zh) 虚拟计算系统和方法
EP2649517B1 (en) Fast computer startup
US8578144B2 (en) Partial hibernation restore for boot time reduction
JP5937101B2 (ja) 高速コンピュータースタートアップ
US8543849B2 (en) Fast computer startup
US20110197185A1 (en) Method and Apparatus for Updating Firmware on a Storage Device
JP2015102889A (ja) ファームウェアの更新方法、電子機器、コンピュータおよびコンピュータ・プログラム
US8468388B2 (en) Restoring programs after operating system failure
JP2009230433A (ja) ネットワークブート装置、プログラム及び方法
US11500995B1 (en) Secure boot runtime universal filesystem
WO2022036670A1 (en) Methods and apparatus to perform an enhanced s3 protocol to update firmware with a boot script update
WO2022040911A1 (en) Methods and apparatus to perform pseudo-s3 protocol to update firmware and/or activate new firmware with warm reset
WO2023196028A1 (en) Secure wipe of data processing unit using firmware capsule

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee