KR101609385B1 - 지연 입력/출력 추상화를 제공함으로써 플랫폼 부팅 시간을 감소시키는 방법 - Google Patents

지연 입력/출력 추상화를 제공함으로써 플랫폼 부팅 시간을 감소시키는 방법 Download PDF

Info

Publication number
KR101609385B1
KR101609385B1 KR1020147021299A KR20147021299A KR101609385B1 KR 101609385 B1 KR101609385 B1 KR 101609385B1 KR 1020147021299 A KR1020147021299 A KR 1020147021299A KR 20147021299 A KR20147021299 A KR 20147021299A KR 101609385 B1 KR101609385 B1 KR 101609385B1
Authority
KR
South Korea
Prior art keywords
user input
input hardware
hardware device
computer system
boot
Prior art date
Application number
KR1020147021299A
Other languages
English (en)
Other versions
KR20140110021A (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 KR20140110021A publication Critical patent/KR20140110021A/ko
Application granted granted Critical
Publication of KR101609385B1 publication Critical patent/KR101609385B1/ko

Links

Images

Classifications

    • 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/4406Loading of operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

부팅 프로세스에 대한 사용자 인터럽트가 있을 것 같다고 판정되지 않을 경우, 사용자 입력 하드웨어 디바이스와 같은 특정 디바이스들이 초기화되지 않을 수 있으므로 운영 체제를 보다 빠르게 론칭하는 향상된 시스템 부팅 프로세싱을 위한 방법, 시스템 및 컴퓨터 프로그램 제품이 개시된다. 즉, 디바이스에 대한 인터페이스가 노출되더라도, 인터페이스에 대한 호출이 발생하지 않으면 어떠한 초기화도 발생하지 않는다. 다른 실시예들이 설명되고 청구된다.

Description

지연 입력/출력 추상화를 제공함으로써 플랫폼 부팅 시간을 감소시키는 방법{METHOD FOR REDUCING PLATFORM BOOT TIMES BY PROVIDING LAZY INPUT/OUTPUT ABSTRACTIONS}
많은 컴퓨팅 시스템은 전통적으로, 시스템 클럭을 설정하고, 메모리 설정을 관리하고, 새로운 하드 드라이브를 구성하고, 부팅 순서를 변경하고, 패스워드 리셋 등의 여러가지 설정 기능을 수행하기 위해 사용자가 부팅 프로세스를 인터럽트(interrupt)시키는 것을 허용하였다. 이러한 인터럽트는 기본 입력/출력 시스템(BIOS) 부팅 프로세스 동안에 삭제, F1, F2, F10 또는 ctrl-alt-delete와 같은 특정 키보드 버튼(들)에 대한 사용자의 활성화에 의해 개시될 수 있다. 그러한 시스템에 대하여, 범용 직렬 버스(USB) 키보드와 같은 입력/출력(I/O) 디바이스들이 열거되고(enumerated) 사용자가 실제 그러한 인터럽트를 개시하였는지를 판정하기 위해 폴링됨(polled)에 따라 부팅 시간이 현저하게 길어질 수 있다.
도 1은 운영 체제의 론칭(launching) 이전에 수행되는 동작의 예시이다.
도 2는 본 발명의 일 실시예에 따른, 운영 체제의 론칭 이전에 수행되는 동작의 예시이다.
도 3은 본 발명의 일 실시예에 따른, 향상된 부팅을 수행하기 위한 방법의 흐름도이다.
도 4는 본 발명의 실시예에 따른, 펌웨어 및 향상된 부팅의 인터럽트 제어를 인에이블하는 것과 관련하여 수행되는 동작의 흐름도이다.
도 5는 본 발명의 적어도 일 실시예에 따른, 제1 및 제2 시스템을 예시하는 블록도이다.
도 6은 본 발명의 적어도 하나의 다른 실시예에 따른 시스템의 블록도이다.
도 7은 본 발명의 적어도 하나의 다른 실시예에 따른 시스템의 블록도이다.
실시예들은 특정 입력/출력(I/O) 디바이스의 폴링의 부담(예를 들면, 범용 직렬 버스(USB) 키보드는 0.5 내지 1.5초 정도 걸릴 수 있음)을 반드시 가질 필요 없이 플랫폼 인터럽트 가능성(interruptability)의 제어를 가능하게 하는데 사용될 수 있다. 모바일 디바이스, 예를 들어, 스마트 폰, 태블릿 컴퓨터, Ultrabooks™, 전자 리더기 등과 같은 컴퓨팅 시스템들이 점점 일반적으로 되면서, 인스턴트 온(instant-on) 또는 거의 인스턴트 온(near instant-on) 거동에 대한 사용자의 바램이 존재하여, 부팅 속도가 점점 더 중요하게 된다. 그럼에도 불구하고, 몇 종류의 단축키를 사용자가 선택함으로써 트리거될 수 있는, 설정 또는 진단 등을 위한 것과 같은 특정 사전 부팅 모드로 진입하기 위해 부팅 프로세스를 인터럽트하는 능력을 제공하는 등의 상충되는 요구 사항이 존재한다. 이러한 동작을 수용하기 위해, 인터럽트를 받아들이는 키보드가 연결된 버스를 열거하는데만 0.5초 걸릴 수 있다. 또한, 사용자가 키를 누르도록 일정량의 대기 시간이 제공되고, 이는 플랫폼으로 하여금, 거의 사용된 적이 없는, 부팅 프로세스를 현저하게 느리게 하는 무언가를 거듭 하게 하는 시나리오를 도입함으로써 부팅 시간을 더 악화시킨다.
실시예는, 어떠한 사용자 입력도 제공되지 않은 다수의 부팅에 대해 이러한 상황을 제어가능하게 회피할 수 있고, 따라서 시스템 부팅의 대다수에 대해 거의 인스턴트 온을 가능하게 한다. 다양한 실시예에 따르면, 플랫폼 BIOS와 같은 사전 부팅 코드는 I/O 디바이스와 같은 하나 이상의 하드웨어 디바이스에 대한 지연 초기화(lazy initialization)(즉, 주문형 초기화: on-demand initialization)를 지원할 수 있다.
실시예는, 하드웨어가 실제로 초기화되면, 정상적으로 노출될 표준 인터페이스를 나타내고 있으나, 초기화 프로세스는 회피된다. 하드웨어는 인터페이스가 소비자에 의해 호출된 경우에만 터치되고, 그 후(그리고 오직 그 후에만) 하드웨어를 초기화하는 것과 관련된 시간이 실제로 발생할 것이다.
이제 도 1을 참조하면, 사용자 입력에 대해 폴링하기 위해 하드웨어를 초기화하는 것에 대한 오버헤드를 발생시키는, 운영 체제의 론칭 이전에 수행된 종래의 동작의 예가 도시된다. 도 1에 도시된 바와 같이, 운영 체제(OS)를 론칭하는 단계는, 중앙 처리 유닛(CPU)/칩셋을 초기화하는 BIOS 초기화에서 시작된다. 다음으로, I/O 버스와 같은 버스가 디바이스를 찾기 위해 열거된다. 이러한 버스 상에, 예를 들면, 키보드와 같은 사용자 입력 하드웨어 디바이스와 같은 디바이스에 대해 차례로 인터페이싱하는 USB 제어기와 같은 하나 이상의 하드웨어 구성요소가 있을 수 있다. 그러한 사용자 입력 디바이스, 보다 일반적으로는 I/O 디바이스의 예들은 키보드, 마우스, 숫자 키패드, 터치스크린, 디스플레이 스크린에 디스플레이된 가상 키보드 등을 포함할 수 있다.
도시하는 바와 같이, 프로빙(probing) 동작이 디바이스의 존재를 프로빙하기 위해 하드웨어 구성요소와 디바이스 사이에서 발생한다. 다음으로, 주기적인 시스템 관리 인터럽트(SMI)가 레거시(legacy) USB를 에뮬레이트하도록 주기적인 인터럽트를 위해 프로그램된다. 도시된 바와 같이, 인터럽트는 CPU/칩셋에서 생성될 수 있다. 따라서, 폴링 동작이 발생하고, 폴링 동작은, 핸들러가 디바이스, 예를 들어, 키보드의 존재에 대해 폴링하기 위해 그리고 또한 사용자 입력들에 대해 폴링하기 위해 실행할 수 있는 시스템 관리 모드(SMM)로 CPU가 진입하게 한다. 예를 들어, I/O 디바이스들은, 부팅 프로세스가 인터럽트되어야 한다는 것을 나타내기 위해 사용자가 입력을 제공했는지를 판정하기 위해 질의 받을 수 있다. 따라서, 그들은 사용자 개시 입력에 대해 모니터링된다. 일례로서, 이러한 질의(interrogation)는 디바이스와의 핸드셰이크를 구축하고 디바이스를 폴링하는 단계를 포함한다. 핸드셰이크를 구축하는 단계는, 예를 들어, 특정 포트에 특정 형식의 데이터를 전송하는 것을 포함할 수 있다.
계속 도 1을 참조하면, 다음으로 OS 로더가 예를 들어, 플래시 메모리와 같은 시스템의 비휘발성 저장소 또는 존재한다면, 하드 드라이브와 같은 대용량 저장소 디바이스와 같은 타겟 매체로부터 판독된다. 그리고 나서, BIOS는 OS가 론칭되게 한다. OS의 론칭 후에, 네이티브(native) OS 드라이버가 론칭된다. 디바이스에 대한 프로빙 및 폴링 동작과 연관된 시간 지연으로 인해 이러한 부팅 프로세스는 원하는 것보다 긴 시간이 걸릴 수 있다는 것에 유의한다.
대신 특정 실시예에 따라, 다양한 오버헤드가 OS 론칭 이전의 부팅 프로세스로부터 제거될 수 있다. 이제 도 2를 참조하면, 본 발명의 일 실시예에 따른, 운영 체제의 론칭 이전에 수행되는 동작의 예시가 도시된다. 도 2에 도시된 바와 같이, 오버헤드가 제거되면, 초기화와 OS의 론칭 사이의 시간이 훨씬 짧아질 수 있다. 도시된 바와 같이, CPU/칩셋의 초기화 후에, OS 로더가 바로 직후에 판독되어, OS가 바로 론칭될 수 있고, 전술한 오버헤드를 제거한다.
이런 방식으로, 파워 오프된 플랫폼으로부터 부팅하는 경우에도, 인지된 "인스턴트 온" 또는 거의 "인스턴트 온" 동작이 발생한다. 그러한 인지된 인스턴트 온 동작을 달성하기 위해, (일반적으로 발생하지도 않는) 사용자 입력에 대한 폴링 및 디바이스의 프로빙에 대한 이러한 오버헤드가 회피될 수 있다. 그럼에도 불구하고, 진단 모드로 진입하거나 BIOS 설정 루틴에의 사용자 입력을 허용하는 등의 부팅 프로세스를 때때로 인터럽트하는 유효한 제품 요구 사항이 존재한다.
이제 도 3을 참조하면, 본 발명의 일 실시예에 따른 향상된 부팅을 수행하는 방법의 흐름도가 도시된다. 도 3에 도시된 바와 같이, 방법(100)은 BIOS의 로직과 같은 펌웨어 로직으로 구현될 수 있다. 도시된 바와 같이, 방법(100)은 시스템 파워 온(블록 105)에서 시작한다. 이러한 시스템의 파워 온에 응답하여, 초기화가 수행될 수 있다(블록 110). 이러한 초기화는 CPU/칩셋의 초기화, 메모리의 발견, 하나 이상의 버스, 및 어쩌면 다른 특정 로우 레벨 하드웨어의 초기화를 트리거할 수 있다. 또한, 사전 부팅 환경의 실행, 예를 들어, 통합 확장 펌웨어 인터페이스(Unified Extensible Firmware Interface)(UEFI) 사전 부팅 환경이 발생할 수 있다. 이러한 사전 부팅 환경의 일부로서 시스템이 지연 인터페이스 초기화를 인에이블할지가 다이아몬드 모양(115)에서 판정될 수 있다. 본 발명의 범주는 이와 관련하여 한정되는 것은 아니지만, 일 실시예에서 이러한 판정은, 향상된 부팅이 인에이블 또는 디스에이블될지를 지시하는 BIOS 설정에 기초할 수 있다. 이러한 구성 설정은 사용자, OS, 또는 다른 엔티티에 의해 제어될 수 있다는 것에 유의한다. 시스템이 그러한 지연 인터페이스 초기화를 위해 구성되지 않은 경우, 제어는 광범위한 정상적 초기화가 계속될 수 있는 블록(120)으로 전달된다. 도 1과 관련하여 전술한 바와 같이, 이러한 초기화는 I/O 버스의 열거(enumeration) 및 초기화, 하드웨어 초기화, 폴링 등에 관련된 활동들을 포함할 수 있다.
여전히 도 3을 참조하면, 다이아몬드 모양(115)으로부터, 향상된 부팅이 발생하는 것으로 판정되면, 제어는 입력 하드웨어(예를 들어, 키보드 또는 다른 디바이스)에 대한 인터페이스가 노출될 수 있는 블록(125)으로 전달된다. 이러한 동작은 메모리만의 동작이어서 제로 시간이 발생하며, 디바이스의 실제 초기화가 회피되고, 인터페이스의 광고(advertisement)만이 발생한다. 일 실시예에서, 이러한 인터페이스 광고는 UEFI 단순 텍스트 입력 프로토콜에 따른 것일 수 있다. 다음으로, 블록(125) 및 다이아몬드 모양(115) 모두로부터, 입력이 사용자로부터 요청되는지가 판정될 수 있는 다이아몬드 모양(130)으로 제어가 전달된다. 이러한 판정은 부팅이 인터럽트되어야 한다는 것을 나타내는 BIOS 설정에 기초할 수 있다. 일 실시예에서, 이러한 설정은, 사용자가 시스템의 다음 부팅을 인터럽트하고자 하는지를 나타내도록 플랫폼의 이전 파워 사이클(power cycle) 동안에 사용자에 의해 선택될 수 있다. 그러한 어떤 입력 요청도 발생하지 않으면, 제어는 OS 부트스트랩 코드가 론칭될 수 있는 블록(140)으로 직접 전달되고, 이는 일 실시예에서, 부팅 관리자를 통해 구현될 수 있다. 따라서, 제어는 OS 부팅이 종결될 수 있는 블록(150)으로 전달된다.
여전히 도 3을 참조하면, 대신 입력이 사용자로부터 요청되면, 제어는 입력 디바이스를 위한 인터페이스가 호출될 수 있는 블록(160)으로 전달된다. 일 실시예에서, 이러한 인터페이스는 UEFI 단순 텍스트 입력 프로토콜에 따른 것일 수 있다. 이전에 노출된 인터페이스의 호출로 인해, 제어는, 예를 들면, PS/2, USB 또는 다른 프로토콜에 따라 입력 하드웨어가 초기화될 수 있는 블록(165)으로 전달된다. 이러한 초기화는 (예를 들면, 종래의 완전한 부팅 프로세스가 대신 선택되는 블록(120)에서 행해진 바와 같이) 하드웨어가 이전에 초기화되지 않은 상황에서 발생할 수 있다는 것을 유의한다.
여전히 도 3을 참조하면, 다음으로, 제어는 요청이 서비스될 수 있고, 데이터가 반환될 수 있는 블록(170)으로 전달된다. 예를 들어, 사용자 키보드 입력의 맥락에서, 키보드 핸들러가 호출되어, 키보드 버퍼로부터 인입하는 키 스트로크를 획득하고, 입력으로서 이러한 데이터를 사용하는 BIOS 루틴과 같은 지정된 위치로 데이터를 반환할 수 있다. 다음으로 제어는 전술한 바와 같이, OS 부트스트랩 코드의 론칭을 위해 블록(150)으로 전달된다. 도 3의 실시예에서 이러한 하이 레벨에서 도시되어 있지만, 본 발명의 범주는 이와 관련하여 한정되지 않는다는 것을 이해한다.
이제 도 4를 참조하면, 본 발명의 실시예에 따른 펌웨어 및 향상된 부팅의 인터럽트 제어를 인에이블하는 것과 관련하여 수행되는 동작의 흐름도가 도시된다. 도 4에 도시된 바와 같이, 동작은 부분적으로는 OS가 존재하는(OS-present) 로직에 의해 그리고 부분적으로는 BIOS 로직에 의해 수행될 수 있다. 일반적으로, OS 로직은, 예를 들어, 진단 모드, BIOS 설정의 사용자 업데이트 등을 인에이블하기 위해 다음 부팅 업(boot up)이 인터럽트되도록 사용자가 플랫폼을 구성할 수 있게 하는데 이용될 수 있다. 차례로 BIOS 로직은 설정에 따라 향상된 부팅(또한 고성능 부팅 모드라고도 지칭함)이나 사용자 인터럽트 부팅 모드를 수행하는데 사용될 수 있다.
도 4에 도시된 바와 같이, 방법(300)은, 일 실시예에서, OS의 제어판 사용자 인터페이스에 존재할 수 있는 BIOS 설정 제어판 애플릿을 사용자가 선택할지를 판정함으로써(다이아몬드 모양(305)에서) 시작할 수 있다. 그렇다면, 제어는 다음 부팅이 인터럽트되어야 한다는 것을 나타내기 위해 특정 애플리케이션 프로그래밍 인터페이스(API), 예를 들면, 세트 펌웨어 환경 변수(Set Firmware Environment Variable) API가 호출될 수 있는 블록(310)으로 전달된다. 이러한 설정 정보는, 일 실시예에서, OS를 사용하여 선택된 설정이 BIOS에 의해 추후 액세스될 수 있도록 메일박스(mailbox) 인터페이스로서 역할할 수 있는, OS 및 BIOS 모두에게 액세스가능한 공통 저장소인 공유 정적 변수 위치에 저장될 수 있다. 그리고 나서 제어는 재시작이 발생되어야 한다는 것을 애플릿 정책이 지시할 지가 판정될 수 있는 다이아몬드 모양(315)으로 전달된다. 그렇지 않다면, 정상 시스템 동작이 블록(320)에서 계속될 수 있다. 그렇지 않은 경우, 블록(330)에서 플랫폼 재시작이 발생할 수 있다. 도 4의 실시예는 사용자가 하나 이상의 펌웨어 환경 변수(예를 들어, UEFI 변수 등)를 설정하게 하는 제어판 프로그램의 애플릿의 사용을 보이고 있으나, 다른 실시예들에서 사용자 입력은 드라이버, 애플릿 또는 운영 체제와는 별도의 다른 소프트웨어 프로그램에 의해 입력될 수 있다는 것을 유의한다.
여전히 도 4를 참조하면, 그러한 OS 제공 설정에 기초한 부팅 동안의 BIOS 동작은 이러한 플랫폼이 재시작하는 것에 응답하여 발생하거나 또는 시스템의 다음 부팅 업 시에 발생할 수 있다. 어느 경우에서든, 제어는 시스템이 파워 온될 수 있는 블록(340)으로 전달된다. 그리고 나서 제어는, 예를 들어, 전술한 바와 같이 플랫폼이 초기화될 수 있는 블록(345)으로 전달된다. 그리고 나서, 다이아몬드 모양(350)에서, 플랫폼이 조건부 고성능 부팅을 지원하도록 인에이블될지가 판정될 수 있다. 전술한 바와 같이, 이러한 조건부 고성능 부팅은 사용자 인터페이스 하드웨어와 같은 특정 하드웨어를 초기화하는 것의 오버헤드를 회피할 수 있다.
여전히 도 4를 참조하면, 플랫폼이 그렇게 인에이블된 경우, 제어는 고성능 부팅 모드가 선택되는지를 판정하기 위해 정적 변수 저장소로부터 액세스될 수 있는 정책 변수가 판독될 수 있는 블록(360)으로 전달된다. 즉, 어떠한 사용자 인터럽트도 발생하지 않는(또는 발생할 가능성 없는) 경우에, 본 발명의 실시예에 따른 향상된 부팅이 수행될 수 있다. 이러한 정책 변수는 일 실시예에서 사용자 인터럽트가 예상되거나, 또는 가능성이 있는지(사용자가 어떤 이유로 다음 부팅을 인터럽트할 것을 계획하고 있는 것을 의미함)를 나타내기 위한(플래그와 같은) 표시자일 수 있다. 이러한 변수는 OS가 존재하는 환경에서 공통적으로 액세스가능한 저장소 위치에 저장될 수 있다. 일 실시예에서, 이러한 저장소 위치는 플래시 NVM에 의해 백업되는 UEFI 변수와 같은, 휘발성 또는 비휘발성 메모리(NVM) 내의 임의의 그러한 공유 메모리 위치일 수 있다.
부팅이 사용자 개시 부팅 인터럽트가 없는 고성능 모드에 있으면(다이아몬드 모양(365)에서 판정됨), 제어는 OS가 론칭될 수 있는 블록(390)으로 직접 전달된다. 그렇지 않으면, 제어는 블록(370)으로 전달된다(제어는 또한, 플랫폼이 고성능 또는 향상된 부팅을 위해 인에이블되지 않으면 전달된다). 블록(370)에서, 초기화가 계속될 수 있고, 이는 입력 디바이스를 프로빙(따라서 초기화)하기 위해 다양한 I/O 버스를 열거하는 것을 포함할 수 있다. 다음으로, 임의의 부팅 인터럽트가 수신되었는지가 다이아몬드 모양(375)에서 판정될 수 있다. 그렇다면, BIOS 메뉴의 디스플레이를 인에이블하는 주어진 BIOS 루틴, 예를 들어, 디스플레이 루틴과 같은 적절한 동작이 실행될 수 있다(블록(380)). 일 실시예에서, 이러한 디스플레이는 진단 스크린, BIOS 설정 사용자 인터페이스 메뉴 또는 다른 디스플레이일 수 있다. BIOS 메뉴는, 예를 들어, 다음의 옵션: 하드웨어를 구성하고; 시스템 클록을 설정하고, 및/또는 BIOS 사용자 인터페이스 기능 자체에 대한 액세스를 보호하고 악성 사용자가 인증되지 않은 주변 디바이스로부터 시스템을 부팅하는 것을 방지하기 위한 패스워드와 같은 다양한 패스워드 프롬프트를 설정하는 것 중 하나 이상을 포함할 수 있다. 물론, 이러한 메뉴에 응답하여, 사용자는 구성 업데이트, 클록 업데이트 등과 같은 특정 정보를 제공할 수 있다.
그리고 나서 BIOS는 이러한 정보를 사용하여 구성의 저장 및 업데이트를 수행할 수 있다. 이러한 동작은, 예를 들어, BIOS 설정 메뉴에 대한 업데이트에 의한 단말기 상태이므로, 머신의 재시작이 발생하고, 따라서 제어는 블록(340)으로 전달될 수 있다(예시의 편의를 위해 도 4에 도시되지 않음).
여전히 도 4를 참조하면, 어떠한 부팅 인터럽트도 다이아몬드 모양(375)에서 수신되지 않으면, 제어는 OS 론칭 이전에 플랫폼 특정 시간량이 경과했는지가 판정될 수 있는 다이아몬드 모양(385)으로 전달된다. 이러한 미리결정된 시간량은 플랫폼마다 다를 수 있고, 적어도 부분적으로는, OS가 론칭되기 전에 부팅 프로세싱에 대해 경과하도록 허용된 플랫폼 특정 최대 시간량에 기초할 수 있다. 그렇지 않으면, 제어는 블록(370)으로 되돌아 간다. 시간량이 경과했다면, 제어는 OS가 론칭될 수 있는 블록(390)으로 전달된다.
전술한 도면들은, 디폴트 동작이, 사용자가 향상된 프로세싱을 오버라이드하고 그 대신에 부팅이 인터럽트가능하게 되도록 선택하지 않았다면 I/O 디바이스에 질의하지 않는, 향상된, 보다 빠른 부팅 프로세스인 실시예를 예시한다. 그러나, 본 기술분야의 당업자는 디폴트 프로세싱은 정책의 문제이고 반대로 쉽게 구현될 수 있다고 인식할 것이다. 따라서, I/O 장치의 폴링이 디폴트 부팅 프로세싱의 일부이어야만 하는지의 선택은 플랫폼 정책의 문제이며, 상이한 실시예에 따라 다를 수 있다. 대안의 실시예들에 대하여, 디폴트 부팅 동작은 부팅 프로세싱 인터럽트를 제공하기 위해 I/O 디바이스에 대한 질의가 항상 발생하는 것이지만, 사용자는 그 대신에 사용자 오버라이드 프로세싱을 통해 보다 빠르고, 향상된 부팅 프로세싱(예를 들어, I/O 디바이스들에 대한 어떠한 폴링 또는 질의도 없는)을 수행하기로 선택할 수 있다.
따라서, 실시예들은 25%보다 크게 BIOS 내에서의 부팅 시간을 감소시키고, "인스턴트 온" 및 부팅 인터럽트 가능성의 상충되는 요건에 대처하는데 사용될 수 있다. 정상적인 부팅 거동으로서의 부팅 성능에 대한 그러한 증가는 미션 크리티컬(mission critical) 환경으로 진입하도록 의도되는 더 큰 플랫폼들에도 도움이 되고, 5개의 9(99.999% 가동시간(up-time))을 충족하는 요건을 갖는다. 부팅 속도는 99.999% 가동 시간 요건에 기인하는 인자이고, 플랫폼은 일년에 5분 30초 정도만 "다운"될 수 있다. 플랫폼이 재부팅될 필요가 있다면, 보다 빠른 재부팅이 보다 좋다.
이제 도 5를 참조하면, 제1 시스템(500a) 및 제2 시스템(500b)의 블록도 가 도시되며, 각각은 전술한 향상된 부팅 프로세싱의 실시예를 수행할 수 있다. 도 5에 도시된 바와 같이, 제1 시스템(500a)은 그래픽 메모리 제어기 허브(GMCH)(520)에 결합된 하나 이상의 프로세싱 구성요소(510, 515)를 포함할 수 있다. 추가적인 프로세싱 구성요소(515)의 선택적 본질이 도 5에 파선으로 명기된다.
각각의 프로세싱 구성요소(510, 515)는 싱글 코어일 수 있거나, 대안적으로, 다수의 코어를 포함할 수 있다. 프로세싱 구성요소(510, 515)는, 통합된 메모리 제어기 및/또는 통합된 I/O 제어 로직과 같은 프로세싱 코어 이외에 다른 온 다이(on-die) 구성요소를 선택적으로 포함할 수 있다. 또한, 제1 시스템(500a)의 적어도 일 실시예에 대하여, 프로세싱 구성요소(510, 515)의 코어(들)은 코어당 하나보다 많은 하드웨어 스레드 콘텍스트(hardware thread context)를 포함할 수 있다는 점에서 멀티스레딩형일 수 있다.
도 5는 GMCH(520)가, 예를 들어, 동적 랜덤 액세스 메모리(DRAM)일 수 있는 메모리(530)에 결합될 수 있다는 것을 예시한다. 적어도 일 실시예에 대하여, 메모리(530)는 운영 체제을 포함하는 코드 또는 명령어를 포함할 수 있다.
GMCH(520)는 칩셋, 또는 칩셋의 일부일 수 있다. GMCH(520)은 프로세서(들)(510, 515)와 통신할 수 있고, 프로세서(들)(510, 515)과 메모리(530) 사이에서의 상호작용을 제어할 수 있다. GMCH(520)는 또한 프로세서(들)(510, 515)과 시스템(500a)의 다른 구성요소들 사이에서 가속 버스 인터페이스(accelerated bus interface)로서 역할할 수 있다. 적어도 일 실시예에 대하여, GMCH(520)는 프론트 사이드 버스(FSB)(595)와 같은 멀티 드롭 버스를 통해 프로세서(들)(510, 515)과 통신한다. 다른 실시예들에 대하여(예를 들면, 도 6 및 7 참조), GMCH(520)는 포인트-대-포인트 상호 접속을 통해 프로세서(들)(510, 515)과 통신한다.
또한, GMCH(520)는 (예를 들어, 평판 디스플레이 또는 터치 감지형 디스플레이 디바이스와 같은) 디스플레이(540)에 결합된다. GMCH(520)는 통합 그래픽 가속기를 포함할 수 있다. GMCH(520)는 다양한 주변 디바이스들을 시스템(500a)에 결합하는데 이용될 수 있는 입력/출력(I/O) 제어기 허브(ICH)(550)에 더 결합된다. 하나 이상의 키보드, 마우스 또는 숫자 키패드와 같은 다른 주변 디바이스(들)(570)와 함께 ICH(550)에 결합된 개별 그래픽 디바이스일 수 있는 외부 그래픽 디바이스(560)가 도 5의 실시예에서 예로써 예시된다.
대안적으로, 추가적인 또는 상이한 프로세싱 구성요소가 또한 제1 시스템(500a)에 존재할 수 있다. 예를 들어, 제2 시스템의 실시예(500b)와 관련하여 바로 아래에서 논의하는 특징들 중 임의의 것이 제1 시스템(500a)에 포함될 수 있다. 또한, 추가적인 프로세싱 구성요소(들)(515)은 프로세서(510)와 동일한 추가적인 프로세서(들), 프로세서(510)에 대해 이종(heterogeneous)이거나 비대칭(asymmetric)인 추가적인 프로세서(들), (예를 들어, 그래픽 가속기들 또는 디지털 신호 프로세싱(DSP) 유닛들과 같은) 가속기들, 필드 프로그램가능한 게이트 어레이 또는 임의의 다른 프로세싱 구성요소를 포함할 수 있다. 아키텍처, 마이크로아키텍처, 온도, 전력 소모 특성 등을 포함하는 다양한 가치 있는 측정 기준들(metrics)의 관점에서 물리적 자원들(510, 515) 간의 다양한 차이가 있을 수 있다. 이러한 차이는 프로세싱 구성요소들(510, 515) 간에서 비대칭성 및 이질성으로서 그들을 효과적으로 분명하게 나타낼 수 있다. 적어도 일 실시예에 대해, 다양한 프로세싱 구성요소(510, 515)는 동일한 다이 패키지에 존재할 수 있다.
도 5는 제2 시스템(500b)이 하나 이상의 프로세싱 구성요소들(511)을 포함할 수 있다는 것을 또한 예시한다. 도 5에 도시된 제1 시스템(500a)과 같이, 시스템(500b)은 전자 디바이스(500b)를 원하는 대로 구성하도록 임의의 적절한 하드웨어 및/또는 소프트웨어를 사용하여 구현될 수 있는 전자 디바이스이다. 일 실시예에 대하여, 도 5는, 터치 감지형 디스플레이 디바이스(502), 하나 이상의 프로세서(511), 적어도 하나의 프로세서(511)에 결합된 시스템 제어 로직(504), 시스템 제어 로직(504)에 결합된 시스템 메모리(530), 시스템 제어 로직(504)에 결합된 비휘발성 메모리 및/또는 저장소 디바이스(들)(535), 및 시스템 제어 로직(504)에 결합된 하나 이상의 통신 인터페이스(506)를 포함하는 예시적인 시스템(500b)를 예시한다.
터치 감지형 디스플레이 디바이스(502)(또한 본 명세서에서 "터치 스크린"이라고도 지칭함)는, 예를 들어 그리고 제한없이, 용량성, 저항성, 표면 음향파(SAW), 적외선 및 광학 이미징과 같은 임의의 적절한 터치 감지 기술을 이용하여 구현될 수 있다. 일 실시예를 위한 터치 감지형 디스플레이 디바이스(502)에 사용되는 터치 감지 기술은 그 표면 위에 실제 터치를 요구하지 않을 수 있으나, 그보다는 표면 근처의 물체의 존재를 감지할 수 있다. 그럼에도 불구하고 그러한 기술은 터치 감지 기술로 고려될 수 있는데, 그러한 기술은 마찬가지로 디스플레이 디바이스(502)의 표면 위에 실제로 터치하는 물체를 감지하기 때문이며, 전자 디바이스(500b)가 사용될 때 그러한 표면이 실제로 터치될 가능성이 있기 때문이다. 일 실시예에 대한 터치 감지형 디스플레이 디바이스(502)는 임의의 적절한 멀티 터치 기술을 사용하여 구현될 수 있다. 터치 감지형 디스플레이 디바이스(502)는, 예를 들어 액정 디스플레이(LCD)에 대한 것과 같은 임의의 적절한 디스플레이 기술을 사용하여 구현될 수 있는 디스플레이를 포함한다. 적어도 일 실시예에 대한 시스템 제어 로직(430)은 터치 감지형 디스플레이 디바이스(502)에 대해 하나 이상의 디스플레이 인터페이스를 제공하는 하나 이상의 그래픽 제어기를 포함할 수 있다.
적어도 일 실시예에 대한 시스템 제어 로직(504)은 시스템 제어 로직(504)과 통신하는 적어도 하나의 프로세서(511) 및/또는 임의의 적절한 디바이스 또는 컴포넌트에 대해 임의의 적절한 인터페이스를 제공하는 임의의 적절한 인터페이스 제어기를 포함할 수 있다.
적어도 일 실시예에 대한 시스템 제어 로직(504)은 시스템 메모리(530)에 대해 인터페이스를 제공하는 하나 이상의 메모리 제어기를 포함할 수 있다. 시스템 메모리(530)는, 예를 들어, 시스템(500b)을 위한 데이터 및/또는 명령어들을 로딩 및 저장하는데 사용될 수 있다. 적어도 일 실시예에 대하여, 시스템 메모리(530)는 임의의 적절한 드라이버 소프트웨어, 응용 소프트웨어 및/또는 운영 체제 소프트웨어와 같은 임의의 적절한 소프트웨어(532)를 저장하는데 사용될 수 있다. 일 실시예에 대한 시스템 메모리(530)는, 예를 들어 적절한 동적 랜덤 액세스 메모리(DRAM)와 같은 임의의 적절한 휘발성 메모리를 포함할 수 있다.
적어도 일 실시예에 대한 시스템 제어 로직(504)은 터치 감지형 디스플레이 디바이스(502), 비휘발성 메모리 및/또는 저장소 디바이스(들)(535) 및 통신 인터페이스(들)(506)에 대해 인터페이스를 제공하기 위한 하나 이상의 입력/출력(I/O) 제어기을 포함할 수 있다.
비휘발성 메모리 및/또는 저장소 디바이스(들)(535)은, 예를 들어, 데이터 및/또는 명령어를 저장하기 위해 사용될 수 있다. 비휘발성 메모리 및/또는 저장소 디바이스(들)(535)은, 예를 들어, 플래시 메모리와 같은 임의의 적절한 비휘발성 메모리를 포함할 수 있고/있거나 하나 이상의 하드 디스크 드라이브(HDD), 하나 이상의 컴팩트 디스크(CD) 드라이브 및/또는 하나 이상의 디지털 다용도 디스크(DVD) 드라이브와 같은 임의의 적절한 비휘발성 저장소 디바이스(들)을 포함할 수 있다. 적어도 일 실시예에 대하여, 비휘발성 메모리 및/또는 저장소 디바이스(들)(535)은 BIOS 프로세싱을 위한 명령어(537)를 저장하는 비휘발성 판독 전용 메모리(ROM)를 포함할 수 있다.
통신 인터페이스(들)(506)은 하나 이상의 네트워크를 통해 통신하고/통신하거나 임의의 다른 적절한 디바이스와 통신하도록 시스템(500b)에 인터페이스를 제공할 수 있다. 통신 인터페이스(들)(506)은 임의의 적절한 하드웨어 및/또는 펌웨어를 포함할 수 있다. 일 실시예에 대한 통신 인터페이스(들)(506)은, 예를 들어, 네트워크 어댑터, 무선 네트워크 어댑터, 전화 모뎀, 및/또는 무선 모뎀을 포함할 수 있다. 무선 통신에 대하여, 일 실시예에 대한 통신 인터페이스(들)(506)은 하나 이상의 안테나(508)를 사용할 수 있다.
적어도 일 실시예에 대한 시스템 제어 로직(504)은, 예를 들어, 소리를 대응하는 디지털 신호로 변환하는 것을 돕고/돕거나 디지털 신호를 대응하는 소리로 변환하는 것을 돕는 오디오 디바이스, 카메라, 캠코더, 프린터, 및/또는 스캐너와 같은 임의의 적절한 입력/출력 디바이스(들)에 대한 인터페이스를 제공하기 위해 하나 이상의 입력/출력(I/O) 제어기를 포함할 수 있다.
적어도 일 실시예에 대하여, 적어도 하나의 프로세서(511)는 시스템 제어 로직(504)의 하나 이상의 제어기를 위한 로직과 함께 패키징될 수 있다. 일 실시예에 대하여, 적어도 하나의 프로세서(511)는 시스템 인 패키지(System in Package)(SiP)를 형성하기 위하여 시스템 제어 로직(504)의 하나 이상의 제어기를 위한 로직과 함께 패키징될 수 있다. 일 실시예에 대하여, 적어도 하나의 프로세서(511)가 시스템 제어 로직(504)의 하나 이상의 제어기를 위한 로직과 동일한 다이 상에 집적될 수 있다. 일 실시예에 대하여, 적어도 하나의 프로세서(511)는 시스템 온 칩(SoC)을 형성하기 위하여 시스템 제어기 로직(504)의 하나 이상의 제어기 로직과 동일한 다이 상에 집적될 수 있다.
시스템(500b)에서 사용되는 것으로 일 실시예에 대하여 설명하였으나, 다른 실시예에 대한 터치 감지형 디스플레이 디바이스(502)가 다른 시스템 구성에서 사용될 수 있다.
이제 도 6을 참조하면, 본 발명의 실시예에 따른 제3 시스템 실시예(600)의 블록도가 도시된다. 도 6에 도시된 바와 같이, 멀티프로세서 시스템(600)은 포인트-대-포인트 상호 접속 시스템이며, 포인트-대-포인트 상호 접속(650)을 통해 결합된 제1 프로세싱 구성요소(670)와 제2 프로세싱 구성요소(680)를 포함한다. 도 6에 도시된 바와 같이, 프로세싱 구성요소(670 및 680)의 각각은 제1 및 제2 프로세서 코어(즉, 프로세서 코어(674a 및 674b)와 프로세서 코어(684a 및 684b))를 포함하는 멀티코어 프로세서일 수 있다.
대안적으로, 프로세싱 구성요소(670, 680) 중 하나 이상은 가속기 또는 필드 프로그램가능한 게이트 어레이와 같은 프로세서 이외의 구성요소일 수 있다.
오직 두개의 프로세싱 구성요소(670, 680)만이 도시되었으나, 첨부하는 특허청구범위의 범주는 그것으로 제한되지 않는다는 것이 이해되어야 한다. 다른 실시예에서, 주어진 프로세서 내에 하나 이상의 추가적인 프로세싱 구성요소가 존재할 수 있다.
제1 프로세싱 구성요소(670)는 메모리 제어기 허브(MCH)(672)와 포인트-대-포인트(P-P) 인터페이스(676 및 678)를 포함할 수 있다. 마찬가지로, 제2 프로세싱 구성요소(680)는 MCH(682)와 P-P 인터페이스(686 및 688)를 포함할 수 있다. 도 6에 도시된 바와 같이, MCH(672 및 682)는 해당 프로세서들에 국부적으로 부착된 주 메모리의 부분들일 수 있는, 각각의 메모리, 즉 메모리(632) 및 메모리(634)에 프로세서들을 결합한다.
제1 프로세싱 구성요소(670) 및 제2 프로세싱 구성요소(680)는 각각, P-P 상호접속(652 및 654)을 통해 칩셋(690)에 결합될 수 있다. 도 6에 도시된 바와 같이, 칩셋(690)은 P-P 인터페이스(694 및 698)를 포함한다. 또한, 칩셋(690)은 고성능의 그래픽 엔진(638)과 칩셋(690)을 결합하는 인터페이스(692)를 포함한다. 일 실시예에서, 버스(639)는 칩셋(690)에 그래픽 엔진(638)을 결합하는데 사용될 수 있다. 대안적으로, 포인트-대-포인트 상호접속(639)은 이들 컴포넌트를 결합할 수 있다.
차례로, 칩셋(690)은 인터페이스(696)를 통해 제1 버스(616)에 결합될 수 있다. 일 실시예에서, 첨부된 청구의 범위는 이것으로 한정되는 것은 아니지만, 제1 버스(616)는, PCI(Peripheral Component Interconnect) 버스, 또는 PCI 익스프레스 버스와 같은 버스 또는 다른 제3 세대 I/O 상호접속 버스일 수 있다.
도 6에 도시된 바와 같이, 다양한 I/O 디바이스(614)가 제1 버스(616)를 제2 버스(620)에 결합하는 버스 브릿지(618)과 함께 제1 버스(616)에 결합될 수 있다. 일 실시예에서, 제2 버스(620)는 핀 수가 적은(low pin count)(LPC) 버스일 수 있다. 예를 들어, 일 실시예에서, 키보드 및/또는 마우스(622), 통신 디바이스(626) 및 코드(630)를 포함할 수 있는 디스크 드라이브 또는 다른 대용량 저장소 디바이스와 같은 데이터 저장소 유닛(628)을 포함하는 다양한 디바이스들이 제2 버스(620)에 결합될 수 있다. 코드(630)는 전술한 방법들 중 하나 이상의 실시예들을 수행하기 위한 명령어들을 포함할 수 있다. 또한, 오디오 I/O(624)는 제2 버스(620)에 결합될 수 있다. 다른 아키텍처가 가능하다는 것을 유의한다. 예를 들어, 도 6의 포인트-대-포인트 아키텍처 대신에 시스템은 멀티 드랍 버스 또는 또 다른 그러한 아키텍처를 구현할 수 있다.
이제 도 7을 참조하면, 본 발명의 실시예에 따른 제4 시스템 실시예(700)의 블록도가 도시된다. 도 6 및 7에서 유사한 구성요소들은 유사한 참조번호들을 갖고 있으며, 도 6의 특정 양태는 도 7의 다른 양태를 모호하게 하지 않도록 도 7로부터 생략되었다.
도 7은 프로세싱 구성요소(670, 680)가 집적된 메모리 및 I/O 제어 로직("CL")(672 및 682)를 각각 포함할 수 있는 것을 예시한다. 적어도 일 실시예에 대하여, CL(672, 682)은 도 5 및 6과 관련하여 전술한 것과 같은 메모리 제어기 허브 로직(MCH)을 포함할 수 있다. 또한, CL(672, 682)은 I/O 제어 로직도 포함할 수 있다. 도 7은 CL(672, 682)에 결합된 메모리(632, 634)뿐만 아니라, I/O 디바이스(714)가 또한 제어 로직(672, 682)에 결합될 수 있다는 것을 예시한다. 레거시 I/O 디바이스(715)는 칩셋(690)에 결합될 수 있다.
본 명세서에서 개시된 메커니즘의 실시예들은 하드웨어, 소프트웨어, 펌웨어, 또는 그러한 구현 접근법들의 조합으로 구현될 수 있다. 실시예들은 적어도 하나의 프로세서, (휘발성 및/또는 비휘발성 메모리 및/또는 저장소 구성요소를 포함하는) 데이터 저장소 시스템, 적어도 하나의 입력 디바이스, 및 적어도 하나의 출력 디바이스를 포함하는 프로그램 가능한 시스템상에서 실행되는 컴퓨터 프로그램으로서 구현될 수 있다.
도 6에 예시된 코드(630)와 같은 프로그램 코드는, 본 명세서에서 설명된 기능들을 수행하고 출력 정보를 생성하도록 입력 데이터에 적용될 수 있다. 예를 들어, 프로그램 코드(630)는 도 3 및 4에서 예시된 실시예들을 수행하도록 코딩된 운영 체제 및/또는 BIOS를 포함할 수 있다. 따라서, 본 발명의 실시예들은 본 발명의 동작을 수행하는 명령어들을 포함하거나, 본원에 설명된 구조, 회로, 장치, 프로세서 및/또는 시스템 특징을 정의하는 HDL과 같은 설계 데이터를 포함하는 머신 액세스 가능한 매체를 또한 포함한다. 그러한 실시예들은 또한 프로그램 제품으로서 지칭될 수 있다.
그러한 머신 액세스 가능한 저장 매체는, 하드 디스크와 같은 비일시적 저장 매체, 플로피 디스크, 광학 디스크, 컴팩트 디스크 판독 전용 메모리(CD-ROM), 컴팩트 디스크 재기입 가능(CD-RW), 및 광자기 디스크를 포함하는 임의의 다른 유형의 디스크, 판독 전용 메모리(ROM), 동적 랜덤 액세스 메모리(DRAM), 정적 랜덤 액세스 메모리(SRAM)와 같은 랜덤 액세스 메모리(RAM), 소거가능 프로그램가능 판독 전용 메모리(EPROM), 플래시 메모리, 전기적 소거가능 프로그램가능 판독 전용 메모리(EEPROM)와 같은 반도체 디바이스, 자성 또는 광학 카드, 또는 전자 명령어들을 저장하는데 적절한 임의의 유형의 매체를 포함하는, 머신 또는 디바이스에 의해 제조 또는 형성되는 물품의 실체적 구성을 제한 없이 포함할 수 있다.
이하의 예들은 추가 실시예에 관한 것이다. 일 실시예에서, 시스템은 프로세서, 프로세서에 결합된 적어도 하나의 사용자 입력 하드웨어 디바이스, 및 프로세서의 초기화를 수행하고, 시스템의 구성에 기초하여 적어도 하나의 사용자 입력 하드웨어 디바이스에 대한 인터페이스를 노출하지만 적어도 하나의 사용자 입력 하드웨어 디바이스를 초기화하지 않고, 적어도 하나의 사용자 입력 하드웨어 디바이스의 초기화 없이 OS를 론칭하기 위해 OS 부트스트랩 코드를 론칭하는 제1 루틴을 포함하는 사전 부팅 코드를 저장하는 비휘발성 저장소를 포함한다.
일 실시예에서, 시스템은 시스템의 다음 부팅이 사용자 입력에 의해 인터럽트되어야 하는지를 나타내기 위한 표시자를 저장하는 제2 저장소를 더 포함한다. 프로세서는 제2 저장소에 저장된 표시자에 액세스하고, 표시자가 시스템의 다음 부팅이 인터럽트되어야 한다는 것을 나타내는 경우, 적어도 하나의 사용자 입력 하드웨어 디바이스를 초기화할 수 있다. 또한, 프로세서는, 초기화 후에 그리고 적어도 하나의 사용자 입력 하드웨어 디바이스를 통한 사용자 입력의 수신 없이 미리결정된 시간 후에 OS 부트스트랩 코드를 론칭한다. 사전 부팅 코드는 적어도 하나의 사용자 입력 하드웨어 디바이스를 통해 구성 업데이트를 수신하고, 저장소에 구성 업데이트를 저장하고, 그 후 시스템이 재시작되게 하는 제2 루틴을 포함할 수 있다. 표시자가 시스템의 다음 부팅이 인터럽트되지 않을 것임을 나타내는 경우, 프로세서는 적어도 하나의 사용자 입력 디바이스의 초기화없이 OS 부트스트랩 코드를 바로 론칭할 수 있다.
다른 실시예에서, 방법은, 컴퓨터 시스템의 프로세서를 초기화하는 컴퓨터 시스템의 초기화를 수행하는 단계; 사전 부팅 코드의 구성에 기초하여 컴퓨터 시스템의 사용자 입력 하드웨어 디바이스에 대한 인터페이스를 노출하지만, 사용자 입력 하드웨어 디바이스를 초기화하지 않는 것을 포함하는, 프로세서의 사전 부팅 코드를 실행하는 단계; 및 사용자 입력 하드웨어 디바이스를 초기화하지 않고 OS를 론칭하기 위해 OS 부트스트랩 코드를 론칭하는 단계를 포함한다.
방법은, 사용자로부터의 입력이 OS 부트스트랩 코드를 론칭하기 이전에 요청되는지를 판정하는 단계와, 요청된 경우, 사용자 입력 하드웨어 디바이스에 대한 인터페이스를 호출하는 단계를 더 포함할 수 있다. 사용자 입력 하드웨어 디바이스는 인터페이스를 호출하는 것에 응답하여 초기화될 수 있다. 사용자 입력 하드웨어 디바이스를 초기화한 후에, 사용자 인터페이스 핸들러를 통해 사용자 입력 하드웨어 디바이스로부터 데이터가 획득될 수 있고, 이는 사전 부팅 코드에 제공될 수 있다. 사용자로부터의 입력이 요청되는지를 판정하는 것은, 사전 부팅 코드의 실행 동안에 사용자 인터럽트가 예상되는지를 나타내는 정적 변수에 액세스하는 것을 포함할 수 있다. 일 실시예에서, 사전 부팅 코드의 구성은 사용자에 의해 제어된다. 사용자는, 컴퓨터 시스템의 이전 파워 사이클 동안에 사전 부팅 코드 내의 설정을 업데이트하여, 사용자 입력 하드웨어 디바이스로 하여금 컴퓨터 시스템의 다음 파워 사이클에서 OS 부트스트랩 코드를 론칭하기 이전에 초기화되게 할 수 있다. 컴퓨터 시스템의 다음 부팅이 사용자 입력에 의해 인터럽트되어야 하는지를 나타내는 표시자가 컴퓨터 시스템에 저장될 수 있고, 따라서, 방법은 다음 부팅 동안에 표시자에 액세스하는 단계, 및 표시자가 컴퓨터 시스템의 다음 부팅이 인터럽트되어야 한다는 것을 나타낼 경우, 다음 부팅 동안에 사용자 입력 하드웨어 디바이스를 초기화하는 단계를 포함한다.
또 다른 실시예에서, 적어도 하나의 컴퓨터 판독가능한 매체는 명령어들을 포함하고, 명령어들은 실행될 때 컴퓨터 시스템이, 컴퓨터 시스템의 구성에 기초하여, 사전 부팅 환경 동안에 컴퓨터 시스템의 사용자 입력 하드웨어 디바이스에 대한 인터페이스를 노출하지만, 사용자 입력 하드웨어 디바이스를 초기화하지 않고; 사용자 입력 하드웨어 디바이스의 초기화 이전에 컴퓨터 시스템의 부팅 환경에서 OS를 론칭하기 위해 OS 부트스트랩 코드를 론칭하게 한다.
매체는, 컴퓨터 시스템의 저장소에 저장된 표시자가 컴퓨터 시스템의 다음 부팅이 인터럽트되지 않을 것임을 나타내는 경우, 사용자 입력 하드웨어 디바이스의 초기화 이전에 컴퓨터 시스템이 OS 부트스트랩 코드를 바로 론칭하게 하는 명령어들을 더 포함할 수 있다. 명령어들은 또한, 컴퓨터 시스템이, 저장소에 저장된 표시자에 액세스하고, 표시자가 시스템의 다음 부팅이 인터럽트되어야 한다는 것을 나타내는 경우 사용자 입력 하드웨어 디바이스를 초기화하고, 초기화 후에 그리고 사용자 입력 하드웨어 디바이스를 통한 사용자 입력의 수신 없이 미리결정된 시간 후에, OS 부트스트랩 코드를 론칭하게 한다. 명령어들은 또한 컴퓨터 시스템이 사용자 입력 하드웨어 디바이스를 통해 구성 업데이트를 수신하고, 구성 업데이트를 저장소에 저장하게 하고, 그 후에 컴퓨터 시스템이 재시작되게 한다. 그리고 명령어들은 또한, 컴퓨터 시스템이, 인터페이스를 호출하여 사용자 입력 하드웨어 디바이스를 초기화하고, 사용자 입력 하드웨어 디바이스의 초기화 후에, 사용자 인터페이스 핸들러를 통해 사용자 입력 하드웨어 디바이스로부터 구성 업데이트에 대응하는 데이터를 획득하게 할 수 있다.
출력 정보는 공지된 방식으로, 하나 이상의 출력 디바이스에 인가될 수 있다. 이러한 응용을 위해, 프로세싱 시스템은, 예를 들어, 디지털 신호 프로세서(DSP), 마이크로제어기, 주문형 집적 회로(application specific integrated circuit)(ASIC), 또는 마이크로프로세서와 같은 프로세서를 갖는 임의의 시스템을 포함한다.
프로그램은 고수준 절차적 또는 객체 지향적 프로그래밍 언어로 구현되어 프로세싱 시스템과 통신할 수 있다. 프로그램은 또한, 원한다면, 어셈블리 또는 머신 언어로 구현될 수 있다. 사실, 본 명세서에서 설명된 메커니즘은 그 범주에 있어서 임의의 특정 프로그래밍 언어로 한정되는 것은 아니다. 어떤 경우든, 언어는 컴파일되거나 해석되는 언어일 수 있다.
본 발명이 제한된 수의 실시예와 관련하여 설명되었으나, 본 기술분야의 당업자는 그로부터의 다양한 변경 및 변형들을 이해할 것이다. 첨부하는 특허청구범위는, 본 발명의 진정한 사상 및 범주에 들어오는 모든 그러한 변경들 및 변형들을 포함하는 것으로 의도된다.

Claims (20)

  1. 시스템으로서,
    프로세서 수단;
    상기 프로세서 수단에 결합된 적어도 하나의 사용자 입력 하드웨어 수단; 및
    상기 프로세서 수단의 초기화를 수행하고, 상기 시스템의 구성에 기초하여 상기 적어도 하나의 사용자 입력 하드웨어 수단에 대한 인터페이스를 노출하지만 상기 적어도 하나의 사용자 입력 하드웨어 수단을 초기화하지 않고, 상기 적어도 하나의 사용자 입력 하드웨어 수단의 초기화 없이 운영 체제(OS)를 론칭하기 위해 OS 부트스트랩 코드를 론칭하는 제1 루틴을 포함하는 사전 부팅 코드를 저장하는 비휘발성 저장소 수단
    을 포함하는 시스템.
  2. 제1항에 있어서,
    상기 시스템의 다음 부팅이 사용자 입력에 의해 인터럽트되어야 하는지를 나타내는 표시자를 저장하는 제2 저장소 수단을 더 포함하는 시스템.
  3. 제2항에 있어서,
    상기 프로세서 수단은, 상기 제2 저장소 수단에 저장된 표시자에 액세스하고, 상기 표시자가 상기 시스템의 다음 부팅이 인터럽트되어야 한다는 것을 나타내는 경우, 상기 적어도 하나의 사용자 입력 하드웨어 수단을 초기화하는 시스템.
  4. 제3항에 있어서,
    상기 프로세서 수단은, 상기 초기화 후에 그리고 상기 적어도 하나의 사용자 입력 하드웨어 수단을 통한 사용자 입력의 수신 없이 미리결정된 시간 후에, 상기 OS 부트스트랩 코드를 론칭하는 시스템.
  5. 제3항에 있어서,
    상기 사전 부팅 코드는, 상기 적어도 하나의 사용자 입력 하드웨어 수단을 통해 구성 업데이트를 수신하여 상기 구성 업데이트를 저장소 수단에 저장하고, 그 후 상기 시스템이 재시작되게 하는 제2 루틴을 포함하는 시스템.
  6. 제2항에 있어서,
    상기 프로세서 수단은, 상기 표시자가 상기 시스템의 다음 부팅이 인터럽트되지 않을 것임을 나타내는 경우, 상기 적어도 하나의 사용자 입력 하드웨어 수단의 초기화 없이 상기 OS 부트스트랩 코드를 바로 론칭하는 시스템.
  7. 방법으로서,
    컴퓨터 시스템의 초기화를 수행하여 상기 컴퓨터 시스템의 프로세서를 초기화하는 단계;
    상기 프로세서의 사전 부팅 코드를 실행하는 단계 - 이 단계는, 상기 사전 부팅 코드의 구성에 기초하여, 상기 컴퓨터 시스템의 사용자 입력 하드웨어 디바이스에 대한 인터페이스를 노출하지만, 상기 사용자 입력 하드웨어 디바이스를 초기화하지 않는 것을 포함함 - ; 및
    상기 사용자 입력 하드웨어 디바이스를 초기화하지 않고 운영 체제(OS)를 론칭하기 위해 OS 부트스트랩 코드를 론칭하는 단계
    를 포함하는 방법.
  8. 제7항에 있어서,
    상기 OS 부트스트랩 코드를 론칭하기 이전에 사용자로부터의 입력이 요청되는지를 판정하는 단계와, 요청된 경우, 상기 사용자 입력 하드웨어 디바이스에 대한 인터페이스를 호출하는 단계를 더 포함하는 방법.
  9. 제8항에 있어서,
    상기 인터페이스를 호출하는 단계에 응답하여 상기 사용자 입력 하드웨어 디바이스를 초기화하는 단계를 더 포함하는 방법.
  10. 제9항에 있어서,
    상기 사용자 입력 하드웨어 디바이스를 초기화한 후에, 사용자 인터페이스 핸들러를 통해 상기 사용자 입력 하드웨어 디바이스로부터 데이터를 획득하는 단계를 더 포함하는 방법.
  11. 제10항에 있어서,
    상기 사전 부팅 코드에 상기 데이터를 제공하는 단계를 더 포함하는 방법.
  12. 제8항에 있어서,
    상기 사용자로부터의 입력이 요청되는지를 판정하는 단계는 상기 사전 부팅 코드의 실행 동안에 사용자 인터럽트가 예상되는지를 나타내는 정적 변수에 액세스하는 것을 포함하는 방법.
  13. 제7항에 있어서,
    상기 사전 부팅 코드의 구성은 사용자에 의해 제어되는 방법.
  14. 제13항에 있어서,
    상기 컴퓨터 시스템의 다음 파워 사이클에서 상기 OS 부트스트랩 코드를 론칭하기 이전에 상기 사용자 입력 하드웨어 디바이스가 초기화되게 하도록 상기 컴퓨터 시스템의 이전 파워 사이클 동안에 상기 사전 부팅 코드 내의 설정을 사용자가 업데이트하게 하는 단계를 더 포함하는 방법.
  15. 제7항에 있어서,
    상기 컴퓨터 시스템의 다음 부팅이 사용자 입력에 의해 인터럽트되어야 하는지를 나타내는 표시자를 상기 컴퓨터 시스템에 저장하는 단계, 상기 다음 부팅 동안에 상기 표시자에 액세스하는 단계, 및 상기 표시자가 상기 컴퓨터 시스템의 상기 다음 부팅이 인터럽트되어야 한다는 것을 나타내는 경우, 상기 다음 부팅 동안에 상기 사용자 입력 하드웨어 디바이스를 초기화하는 단계를 더 포함하는 방법.
  16. 컴퓨터 시스템으로서,
    상기 컴퓨터 시스템의 구성에 기초하여, 사전 부팅 환경 동안에 상기 컴퓨터 시스템의 사용자 입력 하드웨어 디바이스에 대한 인터페이스를 노출하지만, 상기 사용자 입력 하드웨어 디바이스를 초기화하지 않는 수단; 및
    상기 사용자 입력 하드웨어 디바이스의 초기화 이전에 상기 컴퓨터 시스템의 부팅 환경에서 운영 체제(OS)를 론칭하기 위해 OS 부트스트랩 코드를 론칭하는 수단
    을 포함하는 컴퓨터 시스템.
  17. 제16항에 있어서,
    상기 컴퓨터 시스템의 저장소에 저장된 표시자가, 상기 컴퓨터 시스템의 다음 부팅이 인터럽트되지 않을 것임을 나타내는 경우, 상기 사용자 입력 하드웨어 디바이스의 초기화 이전에 상기 OS 부트스트랩 코드를 바로 론칭하는 수단을 더 포함하는 컴퓨터 시스템.
  18. 제17항에 있어서,
    상기 저장소에 저장된 상기 표시자에 액세스하고, 상기 표시자가 상기 시스템의 다음 부팅이 인터럽트되어야 한다는 것을 나타내는 경우, 상기 사용자 입력 하드웨어 디바이스를 초기화하고, 상기 초기화 후에 그리고 상기 사용자 입력 하드웨어 디바이스를 통한 사용자 입력의 수신 없이 미리결정된 시간 후에, 상기 OS 부트스트랩 코드를 론칭하는 수단을 더 포함하는 컴퓨터 시스템.
  19. 제16항에 있어서,
    상기 사용자 입력 하드웨어 디바이스를 통해 구성 업데이트를 수신하여 상기 구성 업데이트를 저장소에 저장하고, 그 후 상기 컴퓨터 시스템이 재시작되게 하는 수단을 더 포함하는 컴퓨터 시스템.
  20. 제19항에 있어서,
    상기 인터페이스를 호출하여 상기 사용자 입력 하드웨어 디바이스를 초기화하고, 상기 사용자 입력 하드웨어 디바이스의 초기화 후에, 사용자 인터페이스 핸들러를 통해 상기 사용자 입력 하드웨어 디바이스로부터 상기 구성 업데이트에 대응하는 데이터를 획득하는 수단을 더 포함하는 컴퓨터 시스템.
KR1020147021299A 2012-01-30 2013-01-24 지연 입력/출력 추상화를 제공함으로써 플랫폼 부팅 시간을 감소시키는 방법 KR101609385B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261592269P 2012-01-30 2012-01-30
US61/592,269 2012-01-30
US13/718,060 2012-12-18
US13/718,060 US9262178B2 (en) 2012-01-30 2012-12-18 Method for reducing platform boot times by providing lazy input/output abstractions
PCT/US2013/022856 WO2013116073A1 (en) 2012-01-30 2013-01-24 Method for reducing platform boot times by providing lazy input/output abstractions

Publications (2)

Publication Number Publication Date
KR20140110021A KR20140110021A (ko) 2014-09-16
KR101609385B1 true KR101609385B1 (ko) 2016-04-06

Family

ID=48871361

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147021299A KR101609385B1 (ko) 2012-01-30 2013-01-24 지연 입력/출력 추상화를 제공함으로써 플랫폼 부팅 시간을 감소시키는 방법

Country Status (8)

Country Link
US (1) US9262178B2 (ko)
EP (1) EP2810158A4 (ko)
JP (1) JP5893173B2 (ko)
KR (1) KR101609385B1 (ko)
CN (1) CN104067223B (ko)
AU (1) AU2013215466B2 (ko)
BR (1) BR112014018761A8 (ko)
WO (1) WO2013116073A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103677373B (zh) 2012-09-25 2018-08-10 神讯电脑(昆山)有限公司 触控显示方法及其电子装置
CN103677372A (zh) * 2012-09-25 2014-03-26 神讯电脑(昆山)有限公司 触控显示方法及其电子装置
CN103729133A (zh) 2012-10-16 2014-04-16 神讯电脑(昆山)有限公司 触控显示方法及其电子装置
CN106663009B (zh) * 2014-07-10 2021-08-17 哈曼国际工业有限公司 操作系统启动加速
KR102388836B1 (ko) * 2014-07-10 2022-04-20 하만인터내셔날인더스트리스인코포레이티드 운영 체제 스타트업 가속
US9563439B2 (en) * 2015-04-27 2017-02-07 Dell Products, L.P. Caching unified extensible firmware interface (UEFI) and/or other firmware instructions in a non-volatile memory of an information handling system (IHS)
KR102103593B1 (ko) * 2019-07-29 2020-04-23 김창석 외장형 운영체제 구동 장치 및 그 방법
US11507383B2 (en) * 2020-03-10 2022-11-22 Dell Products L.P. Configurable boot paths
CN111897597A (zh) * 2020-07-23 2020-11-06 湖北达峰汽车智能控制系统有限公司 具主动初始化功能的电子换挡器及其主动初始化方法及车辆

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040093489A1 (en) * 2002-11-12 2004-05-13 Mitac Technology Corp. System and method for quick boot and application switching for a computer system

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5950002A (en) * 1996-08-13 1999-09-07 General Electric Company Learn mode script generation in a medical imaging system
US5815731A (en) 1996-10-31 1998-09-29 International Business Machines Corporation Method and system for providing device driver configurations on demand
KR100283243B1 (ko) 1998-05-11 2001-03-02 구자홍 운영체제의 부팅방법
US6507906B1 (en) * 1999-09-09 2003-01-14 International Business Machines Corporation Method and system for selection of a boot mode using unattended boot sequencing
US6718461B1 (en) 2000-04-28 2004-04-06 Intel Corporation Booting processor-based systems
US6721885B1 (en) 2000-09-08 2004-04-13 International Business Machines Corporation Reducing start-up time and avoiding customer-induced system failures for personal computers
JP2003084981A (ja) * 2001-09-11 2003-03-20 Seiko Epson Corp 情報処理装置の起動方法
US20040049560A1 (en) 2002-09-09 2004-03-11 Shudong Zhou Method and apparatus for configuring a computer system to operate with perhiperal devices
JP2004199128A (ja) * 2002-12-16 2004-07-15 Matsushita Electric Ind Co Ltd 情報処理装置および情報処理装置の起動時間の高速化方法
ITTO20030079A1 (it) * 2003-02-06 2004-08-07 Infm Istituto Naz Per La Fisi Ca Della Mater Procedimento e sistema per l'identificazione di un soggetto
US7506152B2 (en) * 2003-08-11 2009-03-17 Lg Electronics Inc. Convertible computer with selective loading of an operating system based on a tablet or notebook mode
US7533274B2 (en) 2003-11-13 2009-05-12 International Business Machines Corporation Reducing the boot time of a TCPA based computing system when the core root of trust measurement is embedded in the boot block code
US7568090B2 (en) * 2005-06-23 2009-07-28 Hewlett-Packard Development Company, L.P. Speedy boot for computer systems
US8103908B2 (en) * 2007-12-28 2012-01-24 Intel Corporation Method and system for recovery of a computing environment during pre-boot and runtime phases
US9749179B2 (en) * 2008-05-30 2017-08-29 Arris Enterprises Llc Fast initialization of multi-mode devices
US8296553B2 (en) * 2008-11-19 2012-10-23 Intel Corporation Method and system to enable fast platform restart
CN102073513B (zh) * 2009-11-25 2013-09-11 中兴通讯股份有限公司 一种安装操作系统的方法、装置及系统
CN102200916B (zh) * 2010-03-26 2014-12-31 联想(北京)有限公司 电子设备、可配置的部件及该部件的配置信息存储方法
JP5593856B2 (ja) * 2010-06-02 2014-09-24 富士通株式会社 情報処理装置およびドライバ実行制御方法
US20120159136A1 (en) * 2010-12-16 2012-06-21 Rothman Michael A Computer system boot enhancements with user override

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040093489A1 (en) * 2002-11-12 2004-05-13 Mitac Technology Corp. System and method for quick boot and application switching for a computer system

Also Published As

Publication number Publication date
BR112014018761A8 (pt) 2017-07-11
WO2013116073A9 (en) 2013-09-26
BR112014018761A2 (ko) 2017-06-20
CN104067223B (zh) 2018-03-13
US20130198502A1 (en) 2013-08-01
JP5893173B2 (ja) 2016-03-23
AU2013215466A1 (en) 2014-07-31
AU2013215466B2 (en) 2015-12-03
JP2015505118A (ja) 2015-02-16
WO2013116073A1 (en) 2013-08-08
US9262178B2 (en) 2016-02-16
EP2810158A1 (en) 2014-12-10
KR20140110021A (ko) 2014-09-16
EP2810158A4 (en) 2015-09-16
CN104067223A (zh) 2014-09-24

Similar Documents

Publication Publication Date Title
KR101609385B1 (ko) 지연 입력/출력 추상화를 제공함으로써 플랫폼 부팅 시간을 감소시키는 방법
EP2601588B1 (en) Providing fast non-volatile storage in a secure environment
US7689817B2 (en) Methods and apparatus for defeating malware
JP6096301B2 (ja) ファームウェアにおける盗難防止
US20120159136A1 (en) Computer system boot enhancements with user override
US20120036308A1 (en) Supporting a secure readable memory region for pre-boot and secure mode operations
EP2080093B1 (en) Trusted platform module management system and method
WO2016074127A1 (zh) 计算机设备及计算机设备内存启动的方法
JP2014527674A (ja) システム管理要求のための仮想高特権モード
US10430589B2 (en) Dynamic firmware module loader in a trusted execution environment container
US9417886B2 (en) System and method for dynamically changing system behavior by modifying boot configuration data and registry entries
US7080244B2 (en) System and method for configuring hardware devices using a menu for platforms with EFI and legacy option-ROMs
CN114035842A (zh) 固件配置方法、计算系统配置方法、计算装置以及设备
EP2433238B1 (en) Systems and methods of determining a trust level from system management mode
US10684904B2 (en) Information handling systems and methods to selectively control ownership of a hardware based watchdog timer (WDT)
KR101759411B1 (ko) 보안 보조 프로세서 부팅 성능
US9778936B1 (en) Booting a computing system into a manufacturing mode
US20110225408A1 (en) Cache boot mechanism
US11803454B2 (en) Chained loading with static and dynamic root of trust measurements
TWI709081B (zh) 電子裝置及其快速開機方法
US11847226B1 (en) Baseboard Management Controller (BMC)-based security processor
US20240037237A1 (en) System and method for flexible startup of data processing systems
US20190079596A1 (en) System and method of supporting a pointing device

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
LAPS Lapse due to unpaid annual fee