KR101915695B1 - 실리콘 초기화의 제어된 맞춤화 - Google Patents

실리콘 초기화의 제어된 맞춤화 Download PDF

Info

Publication number
KR101915695B1
KR101915695B1 KR1020167020413A KR20167020413A KR101915695B1 KR 101915695 B1 KR101915695 B1 KR 101915695B1 KR 1020167020413 A KR1020167020413 A KR 1020167020413A KR 20167020413 A KR20167020413 A KR 20167020413A KR 101915695 B1 KR101915695 B1 KR 101915695B1
Authority
KR
South Korea
Prior art keywords
module
platform database
global platform
database module
pointer
Prior art date
Application number
KR1020167020413A
Other languages
English (en)
Other versions
KR20160102553A (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 KR20160102553A publication Critical patent/KR20160102553A/ko
Application granted granted Critical
Publication of KR101915695B1 publication Critical patent/KR101915695B1/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/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

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

Abstract

본 개시는 실리콘 초기화의 제어된 맞춤화에 지향된다. 디바이스는, 예컨대, 부트 코드가 저장된 메모리를 포함하는 부트 모듈을 포함할 수 있는데, 부트 코드는 액세스 가능하지 않은 적어도 한 초기 부트 블록(Initial Boot Block: IBB) 모듈과, 맞춤화 가능한 데이터를 포함하는 전역 플랫폼 데이터베이스(Global Platform Database: GPD) 모듈을 포함한다. IBB 모듈은 GPD 모듈 위치를 나타내는 포인터를 포함할 수 있다. 맞춤화 가능한 데이터는 디바이스로 하여금 부트 코드의 실행 동안에 적어도 하나의 논리적 동작을 실행하게 하도록 구성 가능한 파라미터 및 단순한 구성 언어(Simple Configuration Language: SCL)를 포함할 수 있다. GPD 모듈은 SCL 위치를 나타내는 포인터를 더 포함할 수 있다. 부트 코드는 디바이스의 활성화 시에 실행될 수 있는데, 이는 IBB 모듈로 하여금 SCL을 실행하기 위한 해석기를 로드하게 할 수 있다. 해석기는 SCL 내의 액세스 요청 동작이 유효함을 액세스 요청 동작을 실행하기 전에 또한 확인할 수 있다.

Description

실리콘 초기화의 제어된 맞춤화{CONTROLLED CUSTOMIZATION OF SILICON INITIALIZATION}
발명자:
지에웬 야오(Jiewen YAO), 빈센트 제이 짐머(Vincent J. ZIMMER), 니콜라스 제이 애덤스(Nicholas J. ADAMS), 윌러드 엠 와이즈만(Willard M. WISEMAN), 기리 피 무두수루(Giri P. MUDUSURU) 및 누오 장(Nuo ZHANG)
기술분야
본 개시는 디바이스 부트(device boot) 동작에 관련되고, 더욱 구체적으로, 몇몇 구성 가능한(configurable) 양상을 제공하면서 실질적으로 안전할 수 있는 부트스트랩 코드(bootstrap code)에 관련된다.
실리콘 초기화(silicon initialization)는 운영 체제(Operating System: OS)를 로드하기(loading) 전에 디바이스(device)의 활성화(activation) 시에 수행될 다양한 동작을 포함할 수 있다. 이 동작들의 예들은 디바이스 내에 포함된 장비(equipment)에 대한 정보를 획득하는 것, 장비를 위한 드라이버를 로드하는 것, 디바이스 내에 로드될 소프트웨어(가령, OS) 및 장비 간의 상호작용(interaction)을 가능하게 하기 위한 인터페이스를 수립하는 것 등등을 포함할 수 있지만, 이에 한정되지 않는다. 실리콘 초기화의 적어도 일부는 개별 컴포넌트 및/또는 칩셋(가령, 프로세서(processor), 코프로세서(coprocessor), 지원 컴포넌트, 예를 들어 버스 컨트롤러(bus controller), 메모리(memory), 메모리 컨트롤러(memory controller) 등등)에 관련될 수 있는데 이는 디바이스 내에서 이용될 수 있고, 따라서 개별 컴포넌트 및/또는 칩셋을 활용하는 모든 디바이스에 대해 동일할 수 있다. 유사하게 구성된 디바이스 내에 구현되는 경우, 장비의 사용자(가령, 디바이스 개발자, 디바이스 제조자, 디바이스 판매자, 디바이스 수리 시설)가 실리콘 초기화의 이 부분을 바꿀 이유가 전혀 없다.
그러나, 광범위한 무리의 새로운 애플리케이션들로의 컴퓨팅 기능(computing functionality)의 계속적인 확장은 어떤 레벨의 맞춤화(customization)를 요구하고 있다. 예컨대, 다양한 디바이스(가령, 고정형(stationary) 컴퓨팅 디바이스, 모바일(mobile) 컴퓨팅 디바이스, 모바일 통신 디바이스 등등) 내에서 장비가 사용될 수 있다. 동일한 장비의 활용은 규모의 경제에서 유리할 수 있지만, 장비가 상이한 운영 환경 내에서 정확히 기능하게 하기 위한 약간의 수정을 또한 요구할 수 있다. 역사적으로, 실리콘 초기화 동작은 장비 제조자 및 디바이스 제조 간에 공동으로 개발되는 식이었다. 그러나, 그러한 협력은 리소스 집약적(resource intensive)이며, 범용으로 적용될 수 없는 맞춤식 실리콘 초기화 코드(custom silicon initialization code)로 귀착될 수 있다. 다른 접근법은 디바이스 개발자들에게 그들이 특정한 디바이스에 기반하여 맞춤식 실리콘 초기화 동작들을 개발할 수 있도록 부트 코드에 대한 액세스(access)를 주는 것이다. 디바이스 개발자들에게 그들 자신의 실리콘 초기화를 설계하는 것에 대한 완전한 액세스를 주는 것에 있어서의 문제점은 산업 표준이 유지되지 않을 수 있다는 것, 장비 제조자에 의해 제공되는 가이드라인이 준수되지 않을 수 있다는 것 등등이다. 그러므로, 장비가 의도된 방식으로 동작할 것, 안정적으로 남아 있을 것, 안전하게 남아 있을 것 등등을 보장하는 방법이 전혀 없다.
이하의 상세한 설명이 진행됨에 따라, 그리고 도면의 참조 시에, 청구된 대상물(claimed subject matter)의 다양한 실시예의 특징 및 이점이 명백하게 될 것인데, 여기에서 비슷한 번호는 비슷한 부분을 가리키고, 여기에서
도 1은 본 개시의 적어도 하나의 실시예에 따른 실리콘 초기화의 제어된 맞춤화(controlled customization)를 포함하는 예시적 디바이스를 보여주고,
도 2는 본 개시의 적어도 하나의 실시예에 따른 디바이스를 위한 예시적 구성을 보여주며,
도 3은 본 개시의 적어도 하나의 실시예에 따른 실리콘 초기화를 위한 예시적 동작을 보여주고,
도 4는 본 개시의 적어도 하나의 실시예에 따른 전역 플랫폼 데이터베이스 모듈(global platform database module)을 업데이트하기 위한 예시적 동작을 보여주며,
도 5는 본 개시의 적어도 하나의 실시예에 따른 단순한 구성 언어(simple configuration language)를 실행하기 위한 예시적 동작을 보여주고,
도 6은 본 개시의 적어도 하나의 실시예에 따른 실리콘 초기화의 구현을 위한 예시적 동작을 보여준다.
이하의 상세한 설명은 예시적인 실시예에 대해 행해지는 참조와 함께 진행될 것이나, 이의 많은 대안, 수정 및 변형은 당업자에게 명백할 것이다.
본 개시는 실리콘 초기화의 제어된 맞춤화에 지향된다. 디바이스는, 예컨대, 부트 코드(boot code)가 저장된 메모리를 포함하는 부트 모듈(boot module)을 포함할 수 있다. 예시적 부트 코드는 맞춤화를 위해 액세스 가능(accessible)하지 않은 초기 부트 블록(Initial Boot Block: IBB) 모듈과, 맞춤화 가능한 데이터(customizable data)를 포함하는 전역 플랫폼 데이터베이스(Global Platform Database: GPD) 모듈을 포함할 수 있다. 예시적 IBB 모듈은 부트 코드 내의 GPD 모듈의 위치를 나타내는 적어도 한 포인터(pointer)를 포함할 수 있다. 맞춤화 가능한 데이터는, 예컨대, 디바이스로 하여금 부트 코드의 실행 동안에 적어도 하나의 논리적 동작(logical operation)을 실행하게 하기 위해 구성 가능한 파라미터(configurable parameter)와 단순한 구성 언어(Simple Configuration Language: SCL)를 포함할 수 있다. GPD 모듈은 GPD 모듈 내의 SCL의 위치를 나타내는 오프셋(offset)을 더 포함할 수 있다. 부트 코드는 디바이스의 활성화 시에 실행될 수 있는데, 이는 IBB 모듈로 하여금 SCL을 실행하기 위한 해석기(interpreter)를 로드하게 할 수 있다. 하나의 실시예에서, 해석기는 SCL 내의 액세스 요청 동작이 유효함(valid)을 액세스 요청 동작을 실행하기 전에 확인할 수 있다.
하나의 실시예에서, 실리콘 초기화의 제어된 맞춤화를 위해 구성된 디바이스는 적어도 한 부트 모듈을 포함할 수 있다. 부트 모듈은 부트 코드가 저장된 적어도 한 메모리를 포함할 수 있다. 부트 코드는 디바이스가 활성화되는 경우에 실행될 수 있고, 맞춤화를 위해 액세스 가능하지 않은 적어도 한 초기 부트 블록 모듈(initial boot block module)과, 적어도 맞춤화 가능한 데이터를 포함하는 전역 플랫폼 데이터베이스 모듈(global platform database module)을 포함할 수 있다.
초기 부트 블록은, 예컨대, 부트 코드 내에서 전역 플랫폼 데이터베이스 모듈이 위치된(located) 곳을 나타내는 포인터를 포함할 수 있다. 하나의 실시예에서, 포인터는 초기 부트 블록 내의 펌웨어 정보 표(firmware information table) 내에 포함된 엔트리(entry)일 수 있다. 초기 부트 블록은 현재의 전역 플랫폼 데이터베이스 모듈(current global platform database module)에 대한 업데이트가 디바이스 내에 존재하는지를 적어도 판정할 수 있다. 만약 현재의 전역 플랫폼 데이터베이스 모듈에 대한 업데이트가 존재한다고 초기 부트 블록에 의해 판정되는 경우, 초기 부트 블록은 또한, 업데이트된 전역 플랫폼 데이터베이스 모듈(updated global platform database module)을 부트 코드 내로 로드하고, 현재의 전역 플랫폼 데이터베이스 모듈을 무효한(invalid) 것으로 표시하며(mark), 부트 코드 내에서 업데이트된 전역 플랫폼 데이터베이스 모듈이 위치된 곳을 나타내도록 초기 부트 블록 내의 포인터를 업데이트할 수 있다.
하나의 실시예에서, 맞춤화 가능한 데이터는 적어도 하나의 구성 가능한 파라미터를 포함할 수 있다. 맞춤화 가능한 데이터는 디바이스로 하여금 부트 코드의 실행 동안에 적어도 하나의 동작을 실행하게 하기 위해 적어도 단순한 구성 언어를 또한 포함할 수 있다. 예컨대, 전역 플랫폼 데이터베이스 모듈은 전역 플랫폼 데이터베이스 모듈 내에서 단순한 구성 언어가 위치된 곳을 나타내는 오프셋을 포함할 수 있다. 초기 부트 블록은 적어도, 해석기가 부트 코드의 실행 동안에 로드되게 할 수 있는데, 해석기는 단순한 구성 언어를 적어도 실행한다. 동일한 또는 상이한 실시예에서, 해석기는 또한, 단순한 구성 언어 내에 포함된 적어도 하나의 액세스 요청 동작(access request operation)이 유효한지를 적어도 하나의 액세스 요청 동작을 실행하기 전에 판정할 수 있다. 본 개시에 부합하는 실리콘 초기화의 제어된 맞춤화를 위한 예시적 방법은 디바이스 내의 부트 코드 내에 포함된 초기 부트 블록 모듈을 시작하는 것(부트 블록은 맞춤화를 위해 액세스 가능하지 않음)과, 부트 코드 내에 또한 포함된 전역 플랫폼 데이터베이스 모듈에 대해 초기 부트 블록 내에 포인터를 위치시키는 것(전역 플랫폼 데이터베이스 모듈은 적어도 맞춤화 가능한 데이터를 포함함)과, 전역 플랫폼 데이터베이스 모듈로의 포인터가 유효한지를 판정하는 것과, 포인터가 유효하다는 판정에 기반하여 부트 코드의 일부로서 전역 플랫폼 데이터베이스 모듈을 활용하는 것을 포함할 수 있다.
도 1은 본 개시의 적어도 하나의 실시예에 따른 실리콘 초기화의 제어된 맞춤화를 포함하는 예시적 디바이스를 보여준다. 이하의 개시는 디바이스가 활성화된 후 활성(active)(가령, 부트 동작을 실행 중)일 수 있는 리소스(가령, 하드웨어, 소프트웨어 등등)를 언급하기 위해 "부트스트랩"(bootstrap) 또는 "부트"(boot)와 같은 용어를 활용할 수 있다. 부트 동작은 하드웨어 및 소프트웨어(가령, OS)가 상호작용할 수 있는 인터페이스를 제공하기 위해 다양한 드라이버들, 커널(kernel) 등등을 론칭할(launch) 수 있다. 부트 코드를 위한 알려진 사양은 기본 입력/출력 시스템(Basic Input/Output System: BIOS), 통일된 확장가능 펌웨어 인터페이스(Unified Extensible Firmware Interface: UEFI) 등등을 포함할 수 있다. 본 문서에 제시된 예들은 특정한 사양과 흔히 연관된 용어, 구성요소, 시스템 등등을 활용할 수 있으나, 이들 언급은 단지 설명의 목적으로 행해졌다. 본 개시와 부합하는 실시예들은 오직 BIOS 또는 UEFI를 사용하는 구현에 한정되지 않으며, 다른 부트 사양에 기반한 코딩을 이용할 수 있다.
도 1에 개시된 바와 같은 디바이스(100)는 임의의 프로세서 구동식(processor-driven) 디바이스일 수 있다. 디바이스(100)의 예는, 안드로이드 (Android®), 아이오에스(iOS®), 윈도우즈(Windows®) OS, 맥(Mac®) OS, 타이젠(Tizen®) OS, 파이어폭스(Firefox®) OS, 블랙베리(Blackberry®) OS, 팜(Palm®) OS, 심비안(Symbian®) OS 등등에 기반하는 셀룰러 핸드셋(cellular handset) 또는 스마트폰(smartphone)과 같은 모바일 통신 디바이스(mobile communication device), 아이패드(iPad®), 서피스(Surface®), 갤럭시 탭(Galaxy Tab®), 킨들 파이어(Kindle Fire®) 등등과 같은 태블릿 컴퓨터(tablet computer), 인텔 사(Intel Corporation)에 의해 제조되는 저전력 칩셋을 포함하는 울트라북(Ultrabook®), 넷북(netbook), 노트북(notebook), 랩톱(laptop), 팜톱(palmtop) 등등과 같은 모바일 컴퓨팅 디바이스(mobile computing device), 데스크톱 컴퓨터(desktop computer), 서버(server), 스마트 텔레비전(smart television), 인텔 사로부터의 차세대 컴퓨팅 유닛(Next Unit of Computing: NUC) 플랫폼과 같은 (가령, 공간 제한된(space-limited) 애플리케이션, 텔레비전 톱 박스(television-top box) 등등을 위한) 소형 폼 팩터 컴퓨터(small form factor computer)와 같은 보통 고정된 컴퓨팅 디바이스(typically stationary computing device) 등등을 포함할 수 있지만, 이에 한정되지 않는다. 디바이스(100)는 적어도 부트 모듈(102)을 포함할 수 있는데, 이는 내부에 부트 코드(104)가 저장될 수 있는 메모리와 같은 하드웨어를 포함한다. 예시적 메모리는 진정으로 판독 전용(read-only)이거나 필드 업데이트 가능(field updateable)할 수 있는 비휘발성(nonvolatile: NV) 스토리지(storage)일 수 있다. 부트 코드(104)는 (가령, 디바이스(100)가 전원이 켜지는 것(powering up)으로 인해, 디바이스(100)를 재부팅하기(reboot) 위한 커맨드(command)로부터 등등) 디바이스(100)가 활성화된 경우에 실행되는 동작을 포함하는 컴파일된 프로그램 코드를 포함할 수 있다. 일반적으로, 부트 동작은 디바이스(100) 내의 장비가 OS와 상호작용하는 것이 가능할 수 있도록 디바이스(100)를 구성할 수 있다. 예시적 장비는 디바이스(100) 내에 포함되거나 이에 적어도 커플링된(coupled) 적어도 임의의 하드웨어를 포함할 수 있다. OS의 일례는 디바이스(100) 내의 동작을 관리하기 위한 임의의 소프트웨어 기반 제어 시스템을 포함할 수 있다. 하나의 실시예에서, 부트 코드(104)가 디바이스를 위한 부트 동작에 대해 제어를 취하기 전에, 부트 코드(104)는 그것이 실리콘 장비 제조자에 의해 제공되는 원래의 버전(original version)임(가령, 부트 코드(104)가 진본임, 변경되지 않음 등등)을 보장하기 위해 암호학적으로(cryptographically) 확인될 수 있다.
하나의 실시예에서, 부트 코드(104)는 IBB 모듈(106), GPD 모듈(108) 및 디바이스 특정 코드(Device-Specific Code: DSC) 모듈(110)을 포함할 수 있다. IBB 모듈(106)은 구성을 위해 액세스 가능하지 않은 것인 디바이스(100) 내의 실리콘 초기화를 위한 코드를 포함할 수 있다. 예컨대, IBB 모듈(106)은 실리콘 집적 코드(Silicon Integrated Code: SIC)로서 만들어지고 이후 디바이스(100) 내에서의 사용을 위해 실리콘 장비(가령, 개별 집적 회로(Integrated Circuit: IC), 칩셋 등등)의 제조자에 의해 공급될 수 있다. IBB 모듈(106)은 SIC가 만들어진 실리콘 장비를 활용하는 임의의 유사하게 구성된 디바이스(100)에 대해 실질적으로 동일할 수 있다(가령, 맞춤화될 필요가 없을 수 있음). 결과적으로, 디바이스들(100)의 구성이 유사한 경우 최종 사용자(end user)(가령, 디바이스 설계자, 디바이스 제조자, 수리 시설 등등)가 IBB 모듈(106)을 맞춤화할 필요가 전혀 없게 될 것이다.
하나의 실시예에서, GPD 모듈(108)이 저장된 메모리(가령, 판독-기입가능(read-writable) NV 메모리)와, UEFI 변수 레이아웃(UEFI Variable layout)은 제조자마다 달라질 수 있으므로, GPD 모듈(108)은 NV 메모리의 유형(가령, 제조자) 또는 변수(가령, 후자를 위한 edk2.sourceforge.net 상의 것과 매치되는 GUID)의 선언적 인코딩(declarative encoding)을 또한 포함할 수 있다. 대안적으로, SCL(116)은 각각 낮은 레벨의(low-level) NV 메모리 기입 및 더 높은 레벨의 UEFI 변수 해석을 추상화하기(abstract) 위한 동작들을 포함할 수 있다.
그러나, 상이하게 구성된 디바이스들(100) 내에서 어떤 실리콘 장비를 이용하는 것이 또한 가능할 수 있다. 예컨대, 상이한 사용을 위해 의도된 디바이스(가령, 고정형 컴퓨팅 디바이스, 모바일 컴퓨팅 디바이스, 모바일 통신 디바이스 등등)는 다양한 구성에서 상이한 유형의 장비를 사용할 수 있다. 실리콘 초기화를 수행하기 위하여, IBB 모듈(106)은 디바이스(100)의 구성에 대한 어떤 지식(knowledge)을 요구할 수 있다. 그러나, 토대부터 차례로 디바이스 특정 부트 코드(104)를 생성하는 것은 매우 리소스 집약적이다(가령, 실리콘 장비 제공자, 최종 사용자 등등으로부터의 엔지니어들 간의 협력을 요구할 수 있음). IBB 모듈(106)을 맞춤화하기 위한 액세스를 제공하는 것은, 표준을 지키지 않으며, 실리콘 장비 제조자에 의해 설정된 가이드라인에 따르지 않고, 실리콘 장비의 의도되지 않거나 불안정한 동작, 또는 따라서 디바이스 오동작(malfunction) 또는 심지어 고장(failure)을 초래할 수 있는 방식으로 최종 사용자가 부트 코드(104)를 수정하도록 허용될 수 있다는 점에서 또한 문제가 있을 수 있다.
본 개시와 부합하여, GPD 모듈(108)은 IBB 모듈(106)을 실질적으로 바꾸지 않고서 디바이스(100) 내의 실리콘 초기화를 구성하는 데에 최종 사용자가 이용할 수 있는 구성 가능한 데이터(configurable data)를 포함할 수 있다. 하나의 실시예에서, IBB 모듈(106)은 부트 코드(104) 내에서 GPD 모듈(108)이 위치하게 된(situated) 곳을 나타내기 위해 적어도 GPD 포인터(112)를 포함할 수 있다. 예컨대, GPD 포인터(112)는 GPD 모듈(108) 내에 포함된 데이터가 부트 코드(104) 내에서 시작하는 곳을 나타낼 수 있다. GPD 포인터(112)는 IBB 모듈(106)로 하여금 디바이스(100)를 위한 실리콘 초기화를 맞춤화하기 위해 GPD 모듈(108)로 액세스하게 할 수 있다. GPD 모듈(108)의 일 실시예가 GPD 모듈(108')에 관해서 도 1에서 더욱 상세히 개시된다. GPD 모듈(108')은, 예컨대, 구성 가능한 파라미터(114), SCL(116) 및 SCL 오프셋(118)을 포함할 수 있다. 구성 가능한 파라미터(114)는, 예컨대, 마더보드(motherboard) 구성, 메모리 구성, 입력/출력(Input/Output: I/0) 구성, 유선 및/또는 무선 통신 인터페이스 구성, 사용자 인터페이스 구성 등등과 같은 것이나 이에 한정되지 않는 디바이스(100)의 구성 특성을 기술하는 비트 설정(bit setting), 정수(integer), 스트링(string) 및/또는 다른 데이터 유형을 포함할 수 있다. GPD 모듈(108')을 액세스하는 것은 또한 IBB 모듈(106)로 하여금 (가령, SCL 오프셋(118)에 의해 지시되는 바와 같은) SCL(116)을 실행하게 할 수 있다. SCL(116)은, 실행 시에, 적어도 하나의 논리적 동작이 부트 코드(104)의 실행 동안에 수행되게 하는 적어도 하나의 명령어를 포함할 수 있다. 하나의 실시예에서, 부트 코드(104)의 실행 동안에 IBB 모듈(106)은 해석기로 하여금 SCL(116) 내의 그 적어도 하나의 명령어를 실행하기 위해 디바이스(100) 내에 로드되게 할 수 있다. 최종 사용자는 다양한 기능을 부트 코드(104)의 실행 내로 삽입하는 데에 SCL(116)을 이용할 수 있다. SCL(116)을 통하여 수행될 수 있는 예시적 기능은 디바이스(100) 내에 저장된 어떤 정보를 액세스하는 것, 어떤 드라이버, 유틸리티(utility), 애플리케이션 등등이 부트 코드(104)의 실행 동안에 론칭되게 하는 것 등등을 포함할 수 있다.
SCL(116)에 의해 제공되는 바와 같이, 기능을 실리콘 초기화 내로 삽입할 수 있는 것의 이득은, 또한 디바이스(100)에 잠재적 취약성을 도입할 수 있다. 예컨대, 공격자(가령, 바이러스(virus) 또는 루트킷(rootkit)과 같은 멀웨어(malware) 등등)가 디바이스(100)에 대한 제어를 얻기 위해 SCL(116)을 수정하는 것이 가능할 수 있다. 하나의 실시예에서, IBB 모듈(106)에 의해 로드된 해석기는 SCL(116) 내에 포함된 임의의 액세스 요청 동작을 그 액세스 요청 동작을 실행하기 전에 유효화하도록(validate) 또한 구성될 수 있다. 유효화는, 예컨대, 액세스 요청 동작이 알려진 유형의 공격과 연관되었는지를 판정하는 것, 요청된 액세스를 허용하는 것이 디바이스(100)에 잠재적으로 유해할 수 있는지를 판정하는 것 등등을 포함할 수 있다. 만약 액세스 요청 동작이 유효화되면, 리소스에 대해 액세스가 승인될 것이다. 만약 유효화가 실패하면, 액세스 요청 동작을 불허하면서 SCL(116)의 실행이 진행될 수 있다. 실리콘 초기화(가령, IBB 모듈(106)의 실행)의 완료에는 이후 DCS 모듈(110)의 실행이 뒤따를 수 있는데 여기서 최종 사용자는 디바이스(110)의 동작을 제어하기 위한 OS의 초기화 전에 로드하기 위한 다른 드라이버, 인터페이스 등등을 구성할 수 있다.
도 2는 본 개시의 적어도 하나의 실시예에 따른 디바이스를 위한 예시적 구성을 보여준다. 특히, 디바이스(100')는 도 1에 개시된 것과 같은 예시적 기능을 수행하는 것이 가능할 수 있다. 그러나, 디바이스(100')는 본 개시와 부합하는 실시예에서 사용가능한 장비의 일례로서만 의도되고, 이들 다양한 실시예를 임의의 특정한 구현 방식으로 한정하도록 의도되지 않는다.
디바이스(100')는, 예컨대, 디바이스 동작들을 관리하도록 구성된 시스템 모듈(200)을 포함할 수 있다. 시스템 모듈(200)은, 예컨대, 처리 모듈(processing module)(202), 메모리 모듈(memory module)(204), 전력 모듈(power module)(206), 사용자 인터페이스 모듈(user interface module)(208) 및 통신 인터페이스 모듈(communication interface module)(210)을 포함할 수 있다. 디바이스(100')는 통신 인터페이스 모듈(210)과 상호작용할 수 있는 통신 모듈(communication module)(212)을 또한 포함할 수 있다. 통신 모듈(212)은 시스템 모듈(200)과는 별도로 도시되었으나, 디바이스(100')의 예시적 구현은 본 문서에서 단지 설명을 위하여 제공되었다. 통신 모듈(212)과 연관된 기능 중 일부 또는 전부는 시스템 모듈(200) 내에 또한 포함될 수 있다.
디바이스(100') 내에서, 처리 모듈(202)은 별개의 컴포넌트들 내에 위치하게 된 하나 이상의 프로세서, 또는 대안적으로, 단일 컴포넌트 내에(가령, 시스템 온 칩(System-on-a-Chip: SoC) 구성 내에) 실체화된(embodied) 하나 이상의 처리 코어(processing core) 및 임의의 프로세서 관련 지원 회로(가령, 브릿징 인터페이스(bridging interface) 등등)를 포함할 수 있다. 예시적 프로세서는 펜티엄(Pentium), 제온(Xeon), 아이타니엄(Itanium), 셀러론(Celeron), 아톰(Atom), 코어 아이 시리즈(Core i-series) 제품 패밀리들 내의 것들을 비롯하여 인텔 사로부터 이용가능한 다양한 x86 기반 마이크로프로세서, 고급 RISC(가령, 축소 명령어 세트 컴퓨팅(Reduced Instruction Set Computing) 머신(Advanced RISC Machine) 또는 "ARM" 프로세서 등등을 포함할 수 있지만, 이에 한정되지 않는다. 지원 회로의 예는 인터페이스(이를 통해 처리 모듈(202)이 디바이스(100') 내에서 상이한 속도로, 상이한 버스 상에서 등등으로 동작하고 있을 수 있는 다른 시스템 컴포넌트와 상호작용할 수 있음)를 제공하도록 구성된 칩셋(가령, 인텔 사로부터 이용가능한 노스브릿지(Northbridge), 사우스브릿지(Southbridge) 등등)을 포함할 수 있다. 지원 회로와 흔히 연관된 기능의 일부 또는 전부는 (가령, 인텔 사로부터 이용가능한 프로세서들의 샌디 브릿지(Sandy Bridge) 패밀리에서와 같이) 프로세서와 동일한 물리적 패키지 내에 또한 포함될 수 있다. 하나의 실시예에서, 처리 모듈(202) 내에 포함된 개별 IC 및/또는 칩셋은 본 문서에서 앞서 기술된 바와 같은 실리콘 장비로 간주될 수 있다.
처리 모듈(202)은 디바이스(100') 내에서 다양한 명령어를 실행하도록 구성될 수 있다. 명령어는 처리 모듈(202)로 하여금 데이터를 판독하는 것(reading), 데이터를 기입하는 것(writing), 데이터를 처리하는 것(processing), 데이터를 만들어내는 것(formulating), 데이터를 변환하는 것(converting), 데이터를 변형하는 것(transforming) 등등에 관련된 활동을 수행하게 하도록 구성된 프로그램 코드를 포함할 수 있다. 정보(가령, 명령어, 데이터 등등)는 메모리 모듈(204) 내에 저장될 수 있다. 메모리 모듈(204)은 고정된(fixed) 또는 탈착가능한(removable) 포맷으로 랜덤 액세스 메모리(Random Access Memory: RAM) 또는 판독 전용 메모리(Read-Only Memory: ROM)를 포함할 수 있다. RAM은 디바이스(100')의 동작 동안에 정보를 유지하도록 구성된 휘발성 메모리, 예컨대 정적 RAM(Static RAM: SRAM) 또는 동적 RAM(Dynamic RAM: DRAM)과 같은 것을 포함할 수 있다. ROM은, 예컨대, 디바이스(100')로 하여금 활성화 시에 다양한 동작을 수행하게 하기 위해 (가령, BIOS, UEFI 등등에 기반하여) 부트 코드(104')로써 구성된 NV 메모리, 프로그램가능한 메모리, 예를 들어 전자적 프로그램가능 ROM(Electronic Programmable ROM: EPROM), 플래시(Flash) 등등을 포함하는 부트 모듈(102')을 포함할 수 있다. 다른 고정된 및/또는 탈착가능한 메모리는, 예컨대 플로피 디스크, 하드 드라이브 등등과 같은 자기적 메모리, 솔리드 스테이트(solid state) 플래시 메모리와 같은 전자적 메모리(가령, 내장된 멀티미디어 카드(embedded MultiMedia Card: eMMC) 등등), 탈착가능한 메모리 카드 또는 스틱(가령, 마이크로 저장 디바이스(micro Storage Device: uSD), USB 등등), 콤팩트 디스크 기반 ROM(Compact Disc-based ROM: CD-ROM), 디지털 비디오 디스크 비디오(Digital Video Disc: DVD) 등등과 같은 광학적 메모리를 포함할 수 있지만, 이에 한정되지 않는다.
전력 모듈(206)은 내부 전력원(power source)(가령, 배터리(battery)) 및/또는 외부 전력원(가령, 전자기계식 발전기 또는 태양 발전기, 전력 그리드(power grid), 연료 전지(fuel cell) 등등), 그리고 동작하는 데에 필요한 전력을 디바이스(100')에 공급하도록 구성된 관련 회로를 포함할 수 있다. 사용자 인터페이스 모듈(208)은, 예컨대 다양한 입력 메커니즘(가령, 마이크, 스위치, 버튼, 노브(knob), 키보드, 스피커, 터치 감응 표면(touch-sensitive surface), 이미지를 포착하고/하거나 근접성(proximity), 거리, 움직임, 제스처(gesture), 배향(orientation) 등등을 감지하도록 구성된 하나 이상의 센서) 및 다양한 출력 메커니즘(가령, 스피커, 디스플레이, 불이 켜진(lighted)/번쩍이는(flashing) 지시자, 진동, 움직임 등등을 위한 전자기계식 컴포넌트)과 같은, 사용자로 하여금 디바이스(100')와 상호작용할 수 있게 하기 위한 장비 및/또는 소프트웨어를 포함할 수 있다. 사용자 인터페이스 모듈(208) 내의 장비는 디바이스(100') 내에 포함될 수 있고/있거나 유선 또는 무선 통신 매체를 통하여 디바이스(100')에 커플링될 수 있다.
통신 인터페이스 모듈(210)은 유선 및/또는 무선 통신을 지원하도록 구성된 리소스를 포함할 수 있는 통신 모듈(212)을 위한 패킷 라우팅(packet routing) 및 다른 제어 기능을 관리하도록 구성될 수 있다. 몇몇 사례에서, 디바이스(100')는 중앙화된(centralized) 통신 인터페이스 모듈(210)에 의해 모두 관리되는 하나보다 많은 통신 모듈(212)(가령, 유선 프로토콜(protocol) 및/또는 무선 전파기기(radio)를 위한 별개의 물리적 인터페이스 모듈을 포함함)을 포함할 수 있다. 유선 통신은, 예컨대 이더넷(Ethernet), 범용 직렬 버스(Universal Serial Bus: USB), 파이어와이어(Firewire), 디지털 비디오 인터페이스(Digital Video Interface: DVI), 고선명 멀티미디어 인터페이스(High-Definition Multimedia Interface: HDMI) 등등과 같은 직렬 및 병렬 유선 매체들을 포함할 수 있다. 무선 통신은, 예컨대, 근접 무선 매체(close-proximity wireless medium)(가령, 예를 들어 근접장 통신(Near Field Communications: NFC) 표준에 기반하는 무선 주파수(Radio Frequency: RF), 적외선(InfraRed: IR) 등등), 단거리 무선 매체(short-range wireless medium)(가령, 블루투스(Bluetooth), 무선랜(WLAN), 와이파이(Wi-Fi) 등등), 장거리 무선 매체(long range wireless medium)(가령, 셀룰러 광역 무선 통신 기술, 위성 기반 통신 등등), 음파 송신을 통한 전자 통신 등등을 포함할 수 있다. 하나의 실시예에서, 통신 인터페이스 모듈(210)은 통신 모듈(212) 내에서 활성인 무선 통신이 서로 간섭하지 못하게 하도록 구성될 수 있다. 이 기능을 수행하는 중에, 통신 인터페이스 모듈(210)은, 예컨대, 송신을 기다리는 메시지의 상대적 우선순위에 기반하여 통신 모듈(212)을 위한 활동들을 스케줄링할(schedule) 수 있다. 도 2에 개시된 실시예는 통신 모듈(212)과는 별개인 통신 인터페이스 모듈(210)을 예시하나, 통신 인터페이스 모듈(210) 및 통신 모듈(212)의 기능이 동일한 모듈 내에 포함되는 것이 또한 가능할 수 있다.
도 3은 본 개시의 적어도 하나의 실시예에 따른 실리콘 초기화를 위한 예시적 동작을 보여준다. 일반적으로, 도 3에 개시된 동작들은 IBB 모듈(106), 이어서 GPD 모듈(108)을 로드하는 점에서 (가령, 하드 전력 차단(hard power down), 소프트 재부팅(soft reboot) 등등으로부터) 디바이스(100)의 활성화 뒤에 발생할 수 있는 것을 기술한다. IBB 모듈(106)이 동작(300)에서 시작될 수 있다. 시작에 이어서, 동작(302)에서 GPD 포인터(112)가 IBB 모듈(106)에 위치될 수 있다. 이후 GPD 포인터(112)가 유효한지(가령, GPD 포인터(112)가 IBB 모듈(106)이 저장된 메모리 내의 유효한 영역을 가리키는지)에 대한 판정이 동작(304)에서 행해질 수 있다. 만약 GPD 포인터(112)가 무효함이 동작(304)에서 판정되면, 동작(306)에서 디바이스(100)의 사용자에게 그 문제를 알리게 에러(error)가 보고될 수 있다(가령, 디바이스(100) 내의 사용자 인터페이스 모듈(208)을 통하여 통지 메시지가 제시될 수 있음, 소리가 생성될 수 있음 등등).
만약 동작(304)에서 GPD 포인터(112)가 유효함이 판정되면, 동작(308)에서는 IBB(200)가 GPD 모듈(108)의 내용(가령, 구성 파라미터(112) 및/또는 SCL(116))을 액세스할 수 있도록 GPD 포인터(112)에 기반하여 토큰을 얻으려는 시도가 행해질 수 있다. 이후 GPD 포인터(112)에 기반하여 획득된 토큰이 유효한지에 대한 판정이 동작(310)에서 행해질 수 있다. 토큰이 무효하다는 동작(310)에서의 판정에는 동작(306)이 이어질 수 있는데 여기서 에러가 보고될 수 있다. 만약 동작(310)에서 토큰이 유효함이 판정되면, 동작(312)에서는 IBB 모듈(106)에 의해 수행되는 실리콘 초기화를 구성하는 데에서의 사용을 위해 GPD 모듈(108)의 내용이 로드될 수 있다.
도 4는 본 개시의 적어도 하나의 실시예에 따른 전역 플랫폼 데이터베이스 모듈을 업데이트하기 위한 예시적 동작을 보여준다. 도 4에 도시된 동작들은 본 개시와 부합하는 예시적 실시예를 개시하는데 여기서 GPD 모듈(108)에 대한 업데이트가 디바이스(100) 내에 존재하는지에 대한 판정이 행해질 수 있다. IBB 모듈(106)이 동작(400)에서 시작되어 동작(402)에서 GPD 모듈(108)의 로드가 이어질 수 있다. 하나의 실시예에서, 동작(400 및 402)은 GPD 모듈(108)을 부트 코드(104) 내에 위치시키기 위해 도 3에 개시된 것과 같은 동작을 이용할 수 있다. 이후 GPD 모듈(108)을 위해 디바이스(100) 내에 업데이트가 존재하는지에 대한 판정이 동작(404)에서 행해질 수 있다. 예시적 업데이트는 구성 가능한 파라미터(114) 및/또는 SCL(116)의 일부 또는 전부를 대체하는 데이터를 포함할 수 있다. 업데이트가 디바이스(100) 내에 존재하는지는, 예컨대, 디바이스(100) 내의 파일명(filename), 파일 확장자(file extension) 및/또는 메모리 위치(memory location)에 기반하여 GPD 모듈(108)에 대한 업데이트로서 식별된 데이터의 존재, 디바이스(100) 내의 지시자(indicator) 또는 플래그(flag)(가령, 비트(bit), 수치, 스트링 등등)의 설정, 디바이스(100)의 사용자에 의한 수동 상호작용(manual interaction) 등등에 기반하여 판정될 수 있다.
만약 GPD 모듈(108)에 대한 어떤 업데이트도 디바이스(100) 내에 존재하지 않는다고 동작(404)에서 판정되면, 동작(406)에서 (가령, 도 3의 예시적 동작을 사용하여 위치된 바와 같은) 기존의 GPD 모듈(108)은 동작(406)에서 활용될 수 있다. 만약 동작(404)에서 GPD 모듈(108)에 대한 업데이트가 디바이스(100) 내에 존재한다고 판정되면, 동작(408)에서는 업데이트된 GPD 모듈(108)이 부트 모듈(102) 내로 로드될 수 있다(가령, 그리고 부트 코드(104)에 추가됨). 현재의 GPD 모듈(108)(가령, GPD 지시자(112)가 현재 이를 가리키고 있음)은 이후 동작(410)에서 무효한 것으로 표시될(marked) 수 있다. 예컨대, 무효한 것으로 표시된 GPD 모듈(108)은 나중에 유지 동작(maintenance operation)의 일부로서 "정리될"(cleaned up) 수 있다(가령, 메모리를 비우기(free up) 위해 삭제될 수 있음). 동작(412)에서, IBB 모듈(106) 내의 GPD 포인터(112)는 부트 코드(104) 내의 업데이트된 GPD 모듈(108)의 위치를 나타내도록 변경될 수 있다. 동작(414)에서, 업데이트된 GPD 모듈(108)은 디바이스(100) 내의 실리콘 초기화를 구성하기 위해 IBB 모듈(106)에 의해 활용될 수 있다.
도 5는 본 개시의 적어도 하나의 실시예에 따른 단순한 구성 언어를 실행하기 위한 예시적 동작을 보여준다. 일반적으로, 도 5에 예시된 동작들은 어떻게 SCL(116) 내의 명령어가 본 개시의 일 실시예와 부합하여 유효화되고/되거나 실행될 수 있는지를 기술한다. GPD 모듈(108)은 동작(500)에서 시작될 수 있다. GPD 모듈(108)의 시작에는 동작(502)에서 (가령, SCL 오프셋(118)을 통하여) SCL(116)을 위치시키는 것이 이어질 수 있다. 이후 SCL(116)이 유효한지(가령, SCL(116)이 SCL 오프셋(118)에 의해 나타내어지는 위치에 존재하는지, SCL(116)이 정확한 구문(syntax)을 사용하여 만들어진 논리적 동작을 포함하는지 등등)에 대한 판정이 동작(504)에서 행해질 수 있다. 만약 동작(504)에서 SCL(116)이 무효하다고 판정되면, 동작(506)에서 디바이스(100)의 사용자에게 그 문제를 알리기 위해 에러가 보고될 수 있다(가령, 사용자 인터페이스 모듈(208)을 통하여 통지 메시지가 제시될 수 있고/있거나 소리가 생성될 수 있음).
만약 동작(504)에서 SCL(116)이 유효하다고 판정되면, 동작(508)에서 SCL(116) 내에 개진된 논리적 동작을 실행하기 위해 해석기가 로드될 수 있다. SCL(116) 내의 논리적 동작은, 예컨대, 적어도 하나의 액세스 요청 동작을 포함할 수 있다. 액세스 요청 동작은 디바이스(100) 내에 저장된 데이터를 판독하기, 변경하기 등등을 위한 액세스, 디바이스(100) 내에 새로운 데이터를 저장하기 위한 액세스 등등을 요청할 수 있다. 다음의 실행되지 않은 액세스 요청 동작은 동작(510)에서 획득될 수 있고, 동작(512)에서 액세스 요청 동작이 유효한지에 대한 판정이 행해질 수 있다. 액세스 요청 동작의 유효성은 요청됨에 따라 액세스를 승인하는 것이 디바이스(100)의 동작상의 안정성, 보안 등등을 위태롭게 할 수 있는지에 기반할 수 있다. 예컨대, 유효성은 액세스 요청의 타겟(target)(가령, 메모리 모듈(204) 내의 영역과 같은 디바이스(100) 내의 장비 등등), 요청되는 액세스의 유형(가령, 데이터를 판독하기 또는 기입하기, 드라이버, 유틸리티, 애플리케이션 등등을 로드하기) 등등에 기반할 수 있다. 액세스 요청 동작이 유효하지 않다는 동작(512)에서의 판정에는 동작(506)에서 에러가 보고되는 것이 이어질 수 있다. 대안적으로, 만약 액세스 요청 동작이 유효하다고 동작(512)에서 판정되면, 동작(514)에서는 요청된 리소스로의 액세스가 허가될 수 있다. 이후 SCL(116) 내에서 추가적인 동작이 여전히 실행될 필요가 있는지에 대한 판정이 동작(516)에서 행해질 수 있다. 액세스 요청 동작이 여전히 실행을 위해 계류 중(pending)이라는 동작(516)에서의 판정에는 다음 액세스 요청 동작을 해석기 내로 로드하기 위한 동작(510)으로의 복귀가 이어질 수 있다. 만약 어떤 액세스 요청 동작도 SCL(116) 내에서 실행을 위해 계류 중이지 않다고 동작(516)에서 판정되면, 디바이스(100)는 동작(518)에서 OS의 부팅(booting)을 시작하도록 진행될 수 있다.
도 6은 본 개시의 적어도 하나의 실시예에 따른 실리콘 초기화의 구현을 위한 예시적 동작을 보여준다. 일반적으로, 도 6에 개시된 예시적 동작들은 더욱 실용적인 맥락(context)에서 이전의 도면들에 기술된 개념들을 적용한다. 처음에, 부트 모듈(102) 내의 마이크로코드(microcode)는 동작(600)에서 펌웨어 정보 표(Firmware Information Table: FIT)를 파싱한다(parse). 하나의 실시예에서, FIT는 GPD 포인터(112)를 포함할 수 있다. 시동 모듈(startup module)(가령, IBB 모듈(106))은 이후 동작(602)에서 로드되어, 동작(604)에서 시동 모듈 실행에서의 사용을 위한 GPD 모듈(108)의 확인 및 로드가 이어질 수 있다. 동작(606)에서, 시동 모듈이 실행될 수 있다. 이후 BIOS가 동작(608)에서 리셋 벡터(reset vector)로부터 부팅될 수 있다. 이후 디바이스(100) 내의 GPD 모듈(108)에 대한 업데이트에 대한 체크(check)가 동작(610)에서 수행될 수 있는데, 이는 이후 동작(612)에서 GPD 모듈(108)을 포함하는 플래시 블럭을 잠그는 것(locking)이 뒤따를 수 있다. 정상 부트 동작이 동작(614)에서 계속될 수 있다.
도 3 내지 도 6은 상이한 실시예들에 따른 동작들을 예시할 수 있으나, 도 3 내지 도 6에 묘사된 동작들 모두가 다른 실시예들을 위해 필요한 것은 아님이 이해되어야 한다. 사실, 본 개시의 다른 실시예들에서, 도 3 내지 도 6에 묘사된 동작들 및/또는 본 문서에 기술된 다른 동작들은 도면들 중 어느 것에도 구체적으로 도시되지 않은 방식으로 조합되지만, 여전히 본 개시와 완전히 부합할 수 있다는 점이 본 문서에서 충분히 고려된다. 그러므로, 하나의 도면 내에 정확히 도시되지 않은 특징 및/또는 동작에 지향된 청구항이 본 개시의 범주 및 내용 내에 있다고 간주된다.
이 출원에서 그리고 청구항에서 사용되는 바와 같이, 용어 "및/또는"에 의해 결합된 항목들의 리스트(list)는 열거된 항목들의 임의의 조합을 의미할 수 있다. 예컨대, 문구 "A, B 및/또는 C"는 A; B; C; A 및 B; A 및 C; B 및 C; 또는 A, B 및 C를 의미할 수 있다. 이 출원에서 그리고 청구항에서 사용되는 바와 같이, 용어 "적어도 하나"에 의해 결합된 항목들의 리스트는 열거된 항목들의 임의의 조합을 의미할 수 있다. 예컨대, 문구 "A, B 또는 C 중 적어도 하나"는 A; B; C; A 및 B; A 및 C; B 및 C; 또는 A, B 및 C를 의미할 수 있다.
본 문서에서 임의의 실시예에서 사용되는 바와 같이, 용어 "모듈"은 앞서 언급된 동작들 중 임의의 것을 수행하도록 구성된 소프트웨어, 펌웨어 및/또는 회로를 나타낼 수 있다. 소프트웨어는 비일시적 컴퓨터 판독가능 저장 매체(non-transitory computer readable storage medium) 상에 기록된 소프트웨어 패키지, 코드, 명령어, 명령어 세트 및/또는 데이터로서 실체화될 수 있다. 펌웨어는 메모리 디바이스 내에 하드코딩된(hard-coded)(가령, 비휘발성(nonvolatile)) 코드, 명령어 또는 명령어 세트 및/또는 데이터로서 실체화될 수 있다. 본 문서에서 임의의 실시예에서 사용되는 바와 같이, "회로"는, 예컨대, 단독으로 또는 임의의 조합으로, 고정배선된 회로(hardwired circuitry), 하나 이상의 개별 명령어 처리 코어를 포함하는 컴퓨터 프로세서와 같은 프로그램가능한 회로(programmable circuitry), 상태 머신 회로(state machine circuitry), 그리고/또는 프로그램가능한 회로에 의해 실행되는 명령어를 저장하는 펌웨어를 포함할 수 있다. 모듈은, 집합적으로 또는 개별적으로, 더 큰 시스템, 예컨대 집적 회로(Integrated Circuit: IC), 시스템 온 칩(System on-Chip: SoC), 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 서버, 스마트폰 등등의 일부를 형성하는 회로로서 실체화될 수 있다.
본 문서에 기술된 동작들 중 임의의 것은, 하나 이상의 프로세서에 의해 실행되는 경우 방법을 수행하는 명령어가, 개별적으로 또는 조합되어, 저장된 하나 이상의 저장 매체(가령, 비일시적 저장 매체)를 포함하는 시스템 내에 구현될 수 있다. 여기서, 프로세서는, 예컨대, 서버 CPU, 모바일 디바이스 CPU 및/또는 다른 프로그램가능한 회로를 포함할 수 있다. 또한, 본 문서에 기술된 동작들이 복수의 물리적 디바이스, 예를 들어 하나보다 많은 상이한 물리적 위치에서의 처리 구조들을 가로질러 분산될 수 있음이 의도된다. 저장 매체는 임의의 유형의 유형적인 매체(tangible medium), 예컨대, 하드 디스크, 플로피 디스크, 광학 디스크, 콤팩트 디스크 판독 전용 메모리(Compact Disk Read-Only Memory: CD-ROM), 콤팩트 디스크 재기입가능(Compact Disk Rewritable: CD-RW) 및 자기 광학 디스크(magneto-optical disk)를 포함하는 임의의 유형의 디스크, 판독 전용 메모리(Read-Only Memory: ROM), 랜덤 액세스 메모리(Random Access Memory: RAM), 예를 들어 동적 및 정적 RAM들, 소거가능 프로그램가능 판독 전용 메모리(Erasable Programmable Read-Only Memory: EPROM), 전기적 소거가능 프로그램가능 판독 전용 메모리(Electrically Erasable Programmable Read-Only Memory: EEPROM), 플래시 메모리, 솔리드 스테이트 디스크(Solid State Disk: SSD), 내장된 멀티미디어 카드(embedded MultiMedia Card: eMMC), 보안 디지털 입력/출력(Secure Digital Input/Output: SDIO) 카드와 같은 반도체 디바이스, 자기 또는 광학 카드, 또는 전자적 명령어를 저장하는 데에 적합한 임의의 유형의 매체를 포함할 수 있다. 다른 실시예들은 프로그램가능한 제어 디바이스에 의해 실행되는 소프트웨어 모듈로서 구현될 수 있다.
그러므로, 본 개시는 실리콘 초기화의 제어된 맞춤화에 지향된다. 디바이스는, 예컨대, 부트 코드가 저장된 메모리를 포함하는 부트 모듈(부트 코드는 맞춤화 가능하지 않은 적어도 하나의 초기 부트 블록(Initial Boot Block: IBB) 모듈 및 맞춤화 가능한 데이터를 포함하는 전역 플랫폼 데이터베이스(Global Platform Database: GPD) 모듈을 포함함)을 포함할 수 있다. IBB 모듈은 GPD 모듈 위치를 나타내는 포인터를 포함할 수 있다. 맞춤화 가능한 데이터는 디바이스로 하여금 부트 코드의 실행 동안에 적어도 하나의 논리적 동작을 수행하게 하는 구성 가능한 파라미터 및 단순한 구성 언어(Simple Configuration Language: SCL)를 포함할 수 있다. GPD 모듈은 SCL 위치를 나타내는 포인터를 더 포함할 수 있다. 부트 코드는 디바이스의 활성화 시에 실행될 수 있는데, 이는 IBB 모듈로 하여금 SCL을 실행하기 위한 해석기를 로드하게 할 수 있다. 해석기는 SCL 내의 액세스 요청 동작이 유효함을 액세스 요청 동작을 실행하기 전에 또한 확인할 수 있다.
이하의 예들은 추가 실시예들에 관련된다. 본 개시의 이하의 예들은, 아래에 제공되는 바와 같이, 디바이스, 방법, 실행되는 경우 머신으로 하여금 방법에 기반하여 행위를 수행하게 하는 명령어를 저장하기 위한 적어도 하나의 머신 판독가능 매체, 방법에 기반하여 행위를 수행하기 위한 수단 및/또는 실리콘 초기화의 제어된 맞춤화를 위한 시스템과 같은 대상 소재를 포함할 수 있다.
예 1에 따르면 실리콘 초기화의 제어된 맞춤화를 위해 구성된 디바이스가 제공된다. 위 디바이스는 부트 코드가 저장된 적어도 하나의 메모리를 포함하는 적어도 하나의 부트 모듈을 포함할 수 있는데, 위 부트 코드는 위 디바이스가 활성화되는 경우에 실행되고, 맞춤화를 위해 액세스 가능하지 않은 적어도 하나의 초기 부트 블록 모듈과, 적어도 맞춤화 가능한 데이터를 포함하는 전역 플랫폼 데이터베이스 모듈을 포함한다.
예 2는 예 1의 구성요소들을 포함하되, 위 메모리는 비휘발성 메모리(nonvolatile memory) 또는 필드 업데이트가능 판독 전용 메모리(field updatable read-only memory) 중 적어도 하나이다.
예 3은 예 1 내지 예 2 중 임의의 것의 구성요소들을 포함하되, 위 초기 부트 블록은 위 부트 코드 내에서 위 전역 플랫폼 데이터베이스 모듈이 위치된 곳을 나타내는 포인터를 포함한다.
예 4는 예 3의 구성요소들을 포함하되, 위 포인터는 위 초기 부트 블록 내의 펌웨어 정보 표 내에 포함된 엔트리이다.
예 5는 예 4의 구성요소들을 포함하되, 마이크로코드가 위 디바이스의 활성화에 후속하여 위 펌웨어 정보 표를 파싱한다.
예 6은 예 3의 구성요소들을 포함하되, 위 초기 부트 블록은 현재의 전역 플랫폼 데이터베이스 모듈에 대한 업데이트가 위 디바이스 내에 존재하는지를 적어도 판정한다.
예 7은 예 6의 구성요소들을 포함하되, 위 현재의 전역 플랫폼 데이터베이스 모듈에 대한 업데이트가 존재한다고 위 초기 부트 블록에 의해 판정되는 경우, 위 초기 부트 블록은 또한, 업데이트된 전역 플랫폼 데이터베이스 모듈을 위 부트 코드 내로 로드하고, 위 현재의 전역 플랫폼 데이터베이스 모듈을 무효한 것으로 표시하며, 위 부트 코드 내에서 위 업데이트된 전역 플랫폼 데이터베이스 모듈이 위치된 곳을 나타내도록 위 초기 부트 블록 내의 위 포인터를 업데이트한다.
예 8은 예 7의 구성요소들을 포함하되, 위 초기 부트 블록은 또한, 위 부트 코드로부터 무효한 것으로 표시된 임의의 전역 플랫폼 데이터베이스 모듈을 적어도 삭제하는 것을 포함하는 정리(cleanup) 동작을 수행한다.
예 9는 예 3의 구성요소들을 포함하되, 위 초기 부트 블록은 현재의 전역 플랫폼 데이터베이스 모듈에 대한 업데이트가 위 디바이스 내에 존재하는지를 적어도 판정하고, 위 현재의 전역 플랫폼 데이터베이스 모듈에 대한 업데이트가 존재한다고 위 초기 부트 블록에 의해 판정되는 경우, 위 초기 부트 블록은 또한, 위 초기 부트 블록은 또한, 업데이트된 전역 플랫폼 데이터베이스 모듈을 위 부트 코드 내로 로드하고, 위 현재의 전역 플랫폼 데이터베이스 모듈을 무효한 것으로 표시하며, 위 부트 코드 내에서 위 업데이트된 전역 플랫폼 데이터베이스 모듈이 위치된 곳을 나타내도록 위 초기 부트 블록 내의 위 포인터를 업데이트한다.
예 10은 예 1의 구성요소들을 포함하되, 상기 맞춤화 가능한 데이터는 적어도 하나의 구성 가능한 파라미터를 포함한다.
예 11은 예 1의 구성요소들을 포함하되, 위 맞춤화 가능한 데이터는 위 디바이스로 하여금 위 부트 코드의 실행 동안에 적어도 하나의 동작을 실행하게 하도록 적어도 단순한 구성 언어를 포함한다.
예 12는 예 11의 구성요소들을 포함하되, 위 전역 플랫폼 데이터베이스 모듈은 위 전역 플랫폼 데이터베이스 모듈 내에서 위 단순한 구성 언어가 위치된 곳을 나타내는 오프셋을 포함한다.
예 13은 예 11의 구성요소들을 포함하되, 위 초기 부트 블록은 적어도, 해석기가 위 부트 코드의 실행 동안에 로드되게 하되, 위 해석기는 위 단순한 구성 언어를 적어도 실행한다.
예 14는 예 13의 구성요소들을 포함하되, 위 해석기는 위 단순한 구성 언어 내에 포함된 적어도 하나의 액세스 요청 동작이 유효한지를 위 적어도 하나의 액세스 요청 동작을 실행하기 전에 또한 판정한다.
예 15에 따르면 실리콘 초기화의 제어된 맞춤화를 위한 방법이 제공된다. 위 방법은 디바이스 내의 부트 코드 내에 포함된 초기 부트 블록 모듈을 시작하는 단계(위 부트 블록은 맞춤화를 위해 액세스 가능하지 않음)와, 위 부트 코드 내에 또한 포함된 전역 플랫폼 데이터베이스 모듈에 대한 포인터를 위 초기 부트 블록 내에 위치시키는(locating) 단계(위 전역 플랫폼 데이터베이스 모듈은 적어도 맞춤화 가능한 데이터를 포함함)와, 위 전역 플랫폼 데이터베이스 모듈에 대한 위 포인터가 유효한지를 판정하는 단계와, 위 포인터가 유효하다는 판정에 기반하여 위 부트 코드의 일부로서 위 전역 플랫폼 데이터베이스 모듈을 활용하는 단계를 포함할 수 있다.
예 14는 예 16의 구성요소들을 포함하고, 위 포인터가 유효함을 판정하는 것에 기반하여 토큰을 획득하는 단계와, 위 전역 플랫폼 데이터베이스 모듈을 활용하기 전에 위 포인터에 기반한 위 토큰이 유효한지를 판정하는 단계를 더 포함한다.
예 17은 예 16의 구성요소들을 포함하고, 위 포인터 또는 위 토큰이 무효하다는 판정에 기반하여 에러를 보고하는 단계를 더 포함한다.
예 18은 예 15의 구성요소들을 포함하고, 현재의 전역 플랫폼 데이터베이스 모듈에 대한 업데이트가 위 디바이스 내에 존재하는지를 판정하는 단계를 더 포함한다.
예 19는 예 18의 구성요소들을 포함하고, 위 현재의 전역 플랫폼 데이터베이스 모듈에 대한 업데이트가 위 디바이스 내에 존재한다고 판정되는 경우, 업데이트된 전역 플랫폼 데이터베이스 모듈을 위 부트 코드 내로 로드하고, 위 현재의 전역 플랫폼 데이터베이스 모듈을 무효한 것으로 표시하며, 위 부트 코드 내에서 위 업데이트된 전역 플랫폼 데이터베이스 모듈이 위치된 곳을 나타내도록 위 초기 부트 블록 내의 위 포인터를 업데이트하는 단계를 더 포함한다.
예 20은 예 19의 구성요소들을 포함하고, 위 부트 코드로부터 무효한 것으로 표시된 임의의 전역 플랫폼 데이터베이스 모듈을 적어도 삭제하는 것을 포함하는 정리 동작을 수행하는 단계를 더 포함한다.
예 21은 예 15의 구성요소들을 포함하되, 위 맞춤화 가능한 데이터는 적어도 하나의 구성 가능한 파라미터를 포함한다.
예 22는 예 15의 구성요소들을 포함하되, 위 맞춤화 가능한 데이터는 위 디바이스로 하여금 위 부트 코드의 실행 동안에 적어도 하나의 동작을 실행하게 하도록 적어도 단순한 구성 언어를 포함한다.
예 23은 예 22의 구성요소들을 포함하되, 위 전역 플랫폼 데이터베이스 모듈 내에서 위 단순한 구성 언어가 위치된 곳을 나타내는 오프셋을 위 전역 플랫폼 데이터베이스 모듈 내에 위치시키는 단계를 더 포함한다.
예 24는 예 22 내지 예 23 중 임의의 것의 구성요소들을 포함하되, 위 단순한 구성 언어를 적어도 실행하기 위해 해석기를 로드하는 단계를 더 포함한다.
예 25는 예 24의 구성요소들을 포함하고, 위 단순한 구성 언어 내에 포함된 적어도 하나의 액세스 요청 동작이 유효한지를 판정하는 단계와, 위 적어도 하나의 액세스 요청 동작이 유효하다는 판정에 기반하여 위 적어도 하나의 액세스 요청 동작을 실행하는 단계를 더 포함한다.
예 26은 예 15의 구성요소들을 포함하고, 현재의 전역 플랫폼 데이터베이스 모듈에 대한 업데이트가 위 디바이스 내에 존재하는지를 판정하는 단계와, 위 현재의 전역 플랫폼 데이터베이스 모듈에 대한 업데이트가 위 디바이스 내에 존재한다고 판정되는 경우, 업데이트된 전역 플랫폼 데이터베이스 모듈을 위 부트 코드 내로 로드하고, 위 현재의 전역 플랫폼 데이터베이스 모듈을 무효한 것으로 표시하며, 위 부트 코드 내에서 위 업데이트된 전역 플랫폼 데이터베이스 모듈이 위치된 곳을 나타내도록 위 초기 부트 블록 내의 위 포인터를 업데이트하는 단계를 더 포함한다.
예 27은 예 15의 구성요소들을 포함하되, 위 맞춤화 가능한 데이터는 위 디바이스로 하여금 위 부트 코드의 실행 동안에 적어도 하나의 동작을 실행하게 하도록 적어도 하나의 구성 가능한 파라미터 및 단순한 구성 언어 중 적어도 하나를 포함한다.
예 28은 예 27의 구성요소들을 포함하고, 위 전역 플랫폼 데이터베이스 모듈 내에서 위 단순한 구성 언어가 위치된 곳을 나타내는 오프셋을 위 전역 플랫폼 데이터베이스 모듈 내에 위치시키는 단계와, 위 단순한 구성 언어를 적어도 실행하기 위해 해석기를 로드하는 단계를 더 포함한다.
예 29에 따르면 디바이스를 포함하는 시스템이 제공되는데, 위 시스템은 위의 예 15 내지 예 28 중 임의의 것의 방법을 수행하도록 구성된다.
예 30에 따르면 위의 예 15 내지 예 28 중 임의의 것의 방법을 수행하도록 구성된 칩셋(chipset)이 제공된다.
예 31에 따르면, 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 위 컴퓨팅 디바이스로 하여금 위의 예 15 내지 예 28 중 어느 한 항에 따른 방법을 수행하게 하는 복수의 명령어를 포함하는 적어도 하나의 머신 판독가능 매체(machine readable medium)가 제공된다.
예 32에 따르면 실리콘 초기화의 제어된 맞춤화를 위해 구성된 디바이스가 제공되는데, 위 디바이스는 위의 예 15 내지 예 28 중 어느 한 항의 방법을 수행하도록 구성된다.
예 33에 따르면 실리콘 초기화의 제어된 맞춤화를 위한 시스템이 제공된다. 위 시스템은 디바이스 내의 부트 코드 내에 포함된 초기 부트 블록 모듈을 시작하는 수단(위 부트 블록은 맞춤화를 위해 액세스 가능하지 않음)과, 위 부트 코드 내에 또한 포함된 전역 플랫폼 데이터베이스 모듈에 대한 포인터를 위 초기 부트 블록 내에 위치시키는 수단(위 전역 플랫폼 데이터베이스 모듈은 적어도 맞춤화 가능한 데이터를 포함함)과, 위 전역 플랫폼 데이터베이스 모듈에 대한 위 포인터가 유효한지를 판정하는 수단과, 위 포인터가 유효하다는 판정에 기반하여 위 부트 코드의 일부로서 위 전역 플랫폼 데이터베이스 모듈을 활용하는 수단을 포함할 수 있다.
예 34는 예 33의 구성요소들을 포함하고, 위 포인터가 유효함을 판정하는 것에 기반하여 토큰을 획득하는 수단과, 위 전역 플랫폼 데이터베이스 모듈을 활용하기 전에 위 포인터에 기반한 위 토큰이 유효한지를 판정하는 수단과, 위 포인터 또는 위 토큰이 무효하다는 판정에 기반하여 에러를 보고하는 수단을 더 포함한다.
예 35는 예 33 내지 예 34 중 임의의 것의 구성요소들을 포함하고, 현재의 전역 플랫폼 데이터베이스 모듈에 대한 업데이트가 위 디바이스 내에 존재하는지를 판정하는 수단과, 위 현재의 전역 플랫폼 데이터베이스 모듈에 대한 업데이트가 위 디바이스 내에 존재한다고 판정되는 경우, 업데이트된 전역 플랫폼 데이터베이스 모듈을 위 부트 코드 내로 로드하고, 위 현재의 전역 플랫폼 데이터베이스 모듈을 무효한 것으로 표시하며, 위 부트 코드 내에서 위 업데이트된 전역 플랫폼 데이터베이스 모듈이 위치된 곳을 나타내도록 위 초기 부트 블록 내의 위 포인터를 업데이트하는 수단을 더 포함한다.
예 36은 예 35의 구성요소들을 포함하고, 위 부트 코드로부터 무효한 것으로 표시된 임의의 전역 플랫폼 데이터베이스 모듈을 적어도 삭제하는 것을 포함하는 정리 동작을 수행하는 수단을 더 포함한다.
예 37은 예 33의 구성요소들을 포함하되, 위 맞춤화 가능한 데이터는 적어도 하나의 구성 가능한 파라미터 중의 적어도 하나를 포함한다.
예 38은 예 33의 구성요소들을 포함하되, 위 맞춤화 가능한 데이터는 위 디바이스로 하여금 위 부트 코드의 실행 동안에 적어도 하나의 동작을 실행하게 하도록 적어도 단순한 구성 언어를 포함한다.
예 39는 예 38의 구성요소들을 포함하되, 위 전역 플랫폼 데이터베이스 모듈 내에서 위 단순한 구성 언어가 위치된 곳을 나타내는 오프셋을 위 전역 플랫폼 데이터베이스 모듈 내에 위치시키는 수단을 더 포함한다.
예 40은 예 38 내지 예 39 중 임의의 것의 구성요소들을 포함하되, 위 단순한 구성 언어를 적어도 실행하기 위해 해석기를 로드하는 수단을 더 포함한다.
예 41은 예 40의 구성요소들을 포함하고, 위 단순한 구성 언어 내에 포함된 적어도 하나의 액세스 요청 동작이 유효한지를 판정하는 수단과, 위 적어도 하나의 액세스 요청 동작이 유효하다는 판정에 기반하여 위 적어도 하나의 액세스 요청 동작을 실행하는 수단을 더 포함한다.
본 문서에서 이용된 용어 및 표현은 한정이 아니고 설명의 용어로서 사용되고, 그러한 용어 및 표현의 사용에는, 도시되고 기술된 특징(또는 이의 부분)의 임의의 균등물을 배제하는 의도가 전혀 없으며, 청구항의 범주 내에서 다양한 수정이 가능함이 인식된다. 따라서, 청구항은 모든 그러한 균등물을 포섭하도록 의도된다.

Claims (25)

  1. 실리콘 초기화(silicon initialization)의 제어된 맞춤화(controlled customization)를 위해 구성된 디바이스로서,
    부트 코드(boot code)가 저장된 적어도 하나의 메모리를 포함하는 적어도 하나의 부트 모듈을 포함하되,
    상기 부트 코드는 상기 디바이스가 활성화되는 경우에 실행되고, 맞춤화를 위해 액세스 가능하지 않은 적어도 하나의 초기 부트 블록 모듈(initial boot block module) - 상기 초기 부트 블록 모듈은 상기 부트 코드 내에서 전역 플랫폼 데이터베이스 모듈이 위치된 곳을 나타내는 포인터(pointer)를 포함함 - 과,
    적어도 맞춤화 가능한 데이터(customizable data)를 포함하는 전역 플랫폼 데이터베이스(global platform database) 모듈을 포함하고,
    상기 디바이스는, 상기 전역 플랫폼 데이터베이스 모듈에 대한 상기 포인터가 유효한지를 판정하고, 상기 포인터가 유효하다는 판정에 기반하여 상기 부트 코드의 일부로서 상기 전역 플랫폼 데이터베이스 모듈을 활용하는
    디바이스.
  2. 삭제
  3. 제1항에 있어서,
    상기 초기 부트 블록 모듈은 현재의 전역 플랫폼 데이터베이스 모듈에 대한 업데이트가 상기 디바이스 내에 존재하는지를 적어도 판정하는
    디바이스.
  4. 제3항에 있어서,
    상기 현재의 전역 플랫폼 데이터베이스 모듈에 대한 업데이트가 존재한다고 상기 초기 부트 블록 모듈에 의해 판정되는 경우, 상기 초기 부트 블록 모듈은 또한,
    업데이트된 전역 플랫폼 데이터베이스 모듈을 상기 부트 코드 내로 로드하고(load),
    상기 현재의 전역 플랫폼 데이터베이스 모듈을 무효한(invalid) 것으로 표시하며(mark),
    상기 부트 코드 내에서 상기 업데이트된 전역 플랫폼 데이터베이스 모듈이 위치된 곳을 나타내도록 상기 초기 부트 블록 모듈 내의 상기 포인터를 업데이트하는
    디바이스.
  5. 제1항에 있어서,
    상기 맞춤화 가능한 데이터는 적어도 하나의 구성 가능한 파라미터(configurable parameter)를 포함하는
    디바이스.
  6. 제1항에 있어서,
    상기 맞춤화 가능한 데이터는 상기 디바이스로 하여금 상기 부트 코드의 실행 동안에 적어도 하나의 동작을 실행하게 하도록 적어도 단순한 구성 언어(simple configuration language)를 포함하는
    디바이스.
  7. 제6항에 있어서,
    상기 전역 플랫폼 데이터베이스 모듈은 상기 전역 플랫폼 데이터베이스 모듈 내에서 상기 단순한 구성 언어가 위치된 곳을 나타내는 오프셋(offset)을 포함하는
    디바이스.
  8. 제6항에 있어서,
    상기 초기 부트 블록 모듈은 적어도, 해석기(interpreter)가 상기 부트 코드의 실행 동안에 로드되게 하되, 상기 해석기는 상기 단순한 구성 언어를 적어도 실행하는
    디바이스.
  9. 제8항에 있어서,
    상기 해석기는 상기 단순한 구성 언어 내에 포함된 적어도 하나의 액세스 요청 동작(access request operation)이 유효한지를 상기 적어도 하나의 액세스 요청 동작을 실행하기 전에 또한 판정하는
    디바이스.
  10. 실리콘 초기화의 제어된 맞춤화를 위해 모바일 통신 디바이스에 의해 수행되는 방법으로서,
    디바이스 내의 부트 코드 내에 포함된 초기 부트 블록 모듈을 시작하는 단계 - 상기 부트 블록 모듈은 맞춤화를 위해 액세스 가능하지 않음 - 와,
    상기 부트 코드 내에 또한 포함된 전역 플랫폼 데이터베이스 모듈에 대한 포인터를 상기 초기 부트 블록 모듈 내에 위치시키는 단계 - 상기 전역 플랫폼 데이터베이스 모듈은 적어도 맞춤화 가능한 데이터를 포함함 - 와,
    상기 전역 플랫폼 데이터베이스 모듈에 대한 상기 포인터가 유효한지를 판정하는 단계와,
    상기 포인터가 유효하다는 판정에 기반하여 상기 부트 코드의 일부로서 상기 전역 플랫폼 데이터베이스 모듈을 활용하는 단계를 포함하는
    방법.
  11. 제10항에 있어서,
    상기 포인터가 유효함을 판정하는 것에 기반하여 토큰(token)을 획득하는 단계와,
    상기 전역 플랫폼 데이터베이스 모듈을 활용하기 전에 상기 포인터에 기반한 상기 토큰이 유효한지를 판정하는 단계와,
    상기 포인터 또는 상기 토큰이 무효하다는 판정에 기반하여 에러(error)를 보고하는 단계를 더 포함하는
    방법.
  12. 제10항에 있어서,
    현재의 전역 플랫폼 데이터베이스 모듈에 대한 업데이트가 상기 디바이스 내에 존재하는지를 판정하는 단계와,
    상기 현재의 전역 플랫폼 데이터베이스 모듈에 대한 업데이트가 상기 디바이스 내에 존재한다고 판정되는 경우,
    업데이트된 전역 플랫폼 데이터베이스 모듈을 상기 부트 코드 내로 로드하고,
    상기 현재의 전역 플랫폼 데이터베이스 모듈을 무효한 것으로 표시하며,
    상기 부트 코드 내에서 상기 업데이트된 전역 플랫폼 데이터베이스 모듈이 위치된 곳을 나타내도록 상기 초기 부트 블록 모듈 내의 상기 포인터를 업데이트하는 단계를
    더 포함하는
    방법.
  13. 제10항에 있어서,
    상기 맞춤화 가능한 데이터는 적어도 하나의 구성 가능한 파라미터 중 적어도 하나를 포함하는
    방법.
  14. 제10항에 있어서,
    상기 맞춤화 가능한 데이터는 상기 디바이스로 하여금 상기 부트 코드의 실행 동안에 적어도 하나의 동작을 실행하게 하도록 적어도 단순한 구성 언어를 포함하는
    방법.
  15. 제14항에 있어서,
    상기 전역 플랫폼 데이터베이스 모듈 내에서 상기 단순한 구성 언어가 위치된 곳을 나타내는 오프셋을 상기 전역 플랫폼 데이터베이스 모듈 내에 위치시키는 단계를 더 포함하는
    방법.
  16. 제14항에 있어서,
    상기 단순한 구성 언어를 적어도 실행하기 위해 해석기를 로드하는 단계를 더 포함하는
    방법.
  17. 제16항에 있어서,
    상기 단순한 구성 언어 내에 포함된 적어도 하나의 액세스 요청 동작이 유효한지를 판정하는 단계와,
    상기 적어도 하나의 액세스 요청 동작이 유효하다는 판정에 기반하여 상기 적어도 하나의 액세스 요청 동작을 실행하는 단계를 더 포함하는
    방법.
  18. 명령어가 개별적으로 또는 조합되어 저장된 적어도 하나의 머신 판독가능한 저장 매체로서,
    상기 명령어는 하나 이상의 프로세서에 의해 실행될 때, 실리콘 초기화의 제어된 맞춤화를 위해,
    디바이스 내의 부트 코드 내에 포함된 초기 부트 블록 모듈을 시작하는 것 - 상기 부트 블록 모듈은 맞춤화를 위해 액세스 가능하지 않음 - 과,
    상기 부트 코드 내에 또한 포함된 전역 플랫폼 데이터베이스 모듈에 대한 포인터를 상기 초기 부트 블록 모듈 내에 위치시키는 것 - 상기 전역 플랫폼 데이터베이스 모듈은 적어도 맞춤화 가능한 데이터를 포함함 - 과,
    상기 전역 플랫폼 데이터베이스 모듈에 대한 상기 포인터가 유효한지를 판정하는 것과,
    상기 포인터가 유효하다는 판정에 기반하여 상기 부트 코드의 일부로서 상기 전역 플랫폼 데이터베이스 모듈을 활용하는 것
    을 포함하는 동작을 초래하는
    머신 판독가능한 저장 매체.
  19. 제18항에 있어서,
    하나 이상의 프로세서에 의해 실행될 때,
    상기 포인터가 유효함을 판정하는 것에 기반하여 토큰을 획득하는 것과,
    상기 전역 플랫폼 데이터베이스 모듈을 활용하기 전에 상기 포인터에 기반한 상기 토큰이 유효한지를 판정하는 것과,
    상기 포인터 또는 상기 토큰이 무효하다는 판정에 기반하여 에러(error)를 보고하는 것
    을 포함하는 동작을 초래하는 명령어를 더 포함하는
    머신 판독가능한 저장 매체.
  20. 제18항에 있어서,
    하나 이상의 프로세서에 의해 실행될 때,
    현재의 전역 플랫폼 데이터베이스 모듈에 대한 업데이트가 상기 디바이스 내에 존재하는지를 판정하는 것과,
    상기 현재의 전역 플랫폼 데이터베이스 모듈에 대한 업데이트가 상기 디바이스 내에 존재한다고 판정되는 경우,
    업데이트된 전역 플랫폼 데이터베이스 모듈을 상기 부트 코드 내로 로드하고,
    상기 현재의 전역 플랫폼 데이터베이스 모듈을 무효한 것으로 표시하며,
    상기 부트 코드 내에서 상기 업데이트된 전역 플랫폼 데이터베이스 모듈이 위치된 곳을 나타내도록 상기 초기 부트 블록 모듈 내의 상기 포인터를 업데이트하는 것
    을 포함하는 동작을 초래하는 명령어를 더 포함하는
    머신 판독가능한 저장 매체.
  21. 제18항에 있어서,
    상기 맞춤화 가능한 데이터는 적어도 하나의 구성 가능한 파라미터 중 적어도 하나를 포함하는
    머신 판독가능한 저장 매체.
  22. 제18항에 있어서,
    상기 맞춤화 가능한 데이터는 상기 디바이스로 하여금 상기 부트 코드의 실행 동안에 적어도 하나의 동작을 실행하게 하도록 적어도 단순한 구성 언어를 포함하는
    머신 판독가능한 저장 매체.
  23. 제22항에 있어서,
    하나 이상의 프로세서에 의해 실행될 때,
    상기 전역 플랫폼 데이터베이스 모듈 내에서 상기 단순한 구성 언어가 위치된 곳을 나타내는 오프셋을 상기 전역 플랫폼 데이터베이스 모듈 내에 위치시키는 것
    을 포함하는 동작을 초래하는 명령어를 더 포함하는
    머신 판독가능한 저장 매체.
  24. 제22항에 있어서,
    하나 이상의 프로세서에 의해 실행될 때,
    상기 단순한 구성 언어를 적어도 실행하기 위해 해석기를 로드하는 것
    을 포함하는 동작을 초래하는 명령어를 더 포함하는
    머신 판독가능한 저장 매체.
  25. 제24항에 있어서,
    하나 이상의 프로세서에 의해 실행될 때,
    상기 단순한 구성 언어 내에 포함된 적어도 하나의 액세스 요청 동작이 유효한지를 판정하는 것과,
    상기 적어도 하나의 액세스 요청 동작이 유효하다는 판정에 기반하여 상기 적어도 하나의 액세스 요청 동작을 실행하는 것
    을 포함하는 동작을 초래하는 명령어를 더 포함하는
    머신 판독가능한 저장 매체.
KR1020167020413A 2013-12-27 2013-12-27 실리콘 초기화의 제어된 맞춤화 KR101915695B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/090695 WO2015096131A1 (en) 2013-12-27 2013-12-27 Controlled customization of silicon initialization

Publications (2)

Publication Number Publication Date
KR20160102553A KR20160102553A (ko) 2016-08-30
KR101915695B1 true KR101915695B1 (ko) 2019-01-07

Family

ID=53477395

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167020413A KR101915695B1 (ko) 2013-12-27 2013-12-27 실리콘 초기화의 제어된 맞춤화

Country Status (5)

Country Link
US (2) US10310865B2 (ko)
EP (1) EP3087471A4 (ko)
KR (1) KR101915695B1 (ko)
CN (1) CN105793816A (ko)
WO (1) WO2015096131A1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001061485A2 (en) * 2000-02-14 2001-08-23 Intel Corporation Modular bios update mechanism
US20040128494A1 (en) * 2002-12-27 2004-07-01 Zimmer Vincent J. Method and apparatus for deploying managed code in a pre-boot environment
US20060136703A1 (en) * 2004-12-14 2006-06-22 Wisecup George D Apparatus and method for booting a system
CN102915210A (zh) * 2011-07-01 2013-02-06 苹果公司 从主机引导存储设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6633964B2 (en) * 2001-03-30 2003-10-14 Intel Corporation Method and system using a virtual lock for boot block flash
US6715085B2 (en) * 2002-04-18 2004-03-30 International Business Machines Corporation Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
US7603562B2 (en) 2005-02-02 2009-10-13 Insyde Software Corporation System and method for reducing memory requirements of firmware
EP2372538A1 (en) * 2010-03-23 2011-10-05 ST-Ericsson SA Processing IC with embedded non volatile memory
US8522066B2 (en) 2010-06-25 2013-08-27 Intel Corporation Providing silicon integrated code for a system
US9075751B2 (en) * 2012-08-09 2015-07-07 Intel Corporation Secure data protection with improved read-only memory locking during system pre-boot
US9235710B2 (en) * 2013-05-23 2016-01-12 Cisco Technology, Inc. Out of band management of basic input/output system secure boot variables

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001061485A2 (en) * 2000-02-14 2001-08-23 Intel Corporation Modular bios update mechanism
US20040128494A1 (en) * 2002-12-27 2004-07-01 Zimmer Vincent J. Method and apparatus for deploying managed code in a pre-boot environment
US20060136703A1 (en) * 2004-12-14 2006-06-22 Wisecup George D Apparatus and method for booting a system
CN102915210A (zh) * 2011-07-01 2013-02-06 苹果公司 从主机引导存储设备

Also Published As

Publication number Publication date
US11068276B2 (en) 2021-07-20
WO2015096131A1 (en) 2015-07-02
US20170003976A1 (en) 2017-01-05
EP3087471A1 (en) 2016-11-02
US10310865B2 (en) 2019-06-04
EP3087471A4 (en) 2017-10-11
KR20160102553A (ko) 2016-08-30
US20190286450A1 (en) 2019-09-19
CN105793816A (zh) 2016-07-20

Similar Documents

Publication Publication Date Title
US11256496B2 (en) Apparatus and method for managing application
US9411601B2 (en) Flexible bootstrap code architecture
CN105745617B (zh) 用于预启动固件更新的选择性功率管理
US9507604B2 (en) Boot method and boot system
EP2831722B1 (en) Method and system for verifying proper operation of a computing device after a system change
CN110785738B (zh) 对用于耦合到片上系统的组件的校准参数的引导时间确定
Zimmer et al. Beyond BIOS: developing with the unified extensible firmware interface
US20070255936A1 (en) BIOS Configuration Update Technique
US10909247B2 (en) Computing device having two trusted platform modules
JP2015153198A (ja) コンピュータの動作不良を防止する方法、コンピュータ・プログラムおよびコンピュータ
CN107408090A (zh) 输入/输出控制器访问通道的动态配置
US10025587B2 (en) Method of bootup and installation, and computer system thereof
US10664598B1 (en) Firmware security patch deployment
CN110865830A (zh) 固件更新方法及电脑系统
EP3271818A1 (en) Dynamic firmware module loader in a trusted execution environment container
CN107135462B (zh) Uefi固件的蓝牙配对方法及其计算系统
EP3314416B1 (en) Firmware block dispatch based on fuses
US9778936B1 (en) Booting a computing system into a manufacturing mode
KR101915695B1 (ko) 실리콘 초기화의 제어된 맞춤화
WO2011025479A1 (en) A plurality of interface files usable for access to bios

Legal Events

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