KR20150027828A - 비휘발성 메모리 장치를 이용한 대안적인 부트 경로 지원 - Google Patents

비휘발성 메모리 장치를 이용한 대안적인 부트 경로 지원 Download PDF

Info

Publication number
KR20150027828A
KR20150027828A KR1020157003009A KR20157003009A KR20150027828A KR 20150027828 A KR20150027828 A KR 20150027828A KR 1020157003009 A KR1020157003009 A KR 1020157003009A KR 20157003009 A KR20157003009 A KR 20157003009A KR 20150027828 A KR20150027828 A KR 20150027828A
Authority
KR
South Korea
Prior art keywords
controller
request
firmware
peripheral
pcms
Prior art date
Application number
KR1020157003009A
Other languages
English (en)
Other versions
KR101663072B1 (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 KR20150027828A publication Critical patent/KR20150027828A/ko
Application granted granted Critical
Publication of KR101663072B1 publication Critical patent/KR101663072B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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

Abstract

본 발명의 실시예는 특히 컴퓨팅 장치에 대한 대안적인 부트 경로를 제공하는 장치, 시스템 및 방법을 기재한다. 본 발명의 실시예들에서, PCIe/USB 열거 전에 하나 이상의 비휘발성 장치로의 메모리 동작을 허용하기 위하여 디폴트로 비휘발성 제어기 서브시스템이 파워 업된다. 시스템 SPI 제어기 등의 로직은 펌웨어 이미지 명령을 실행하는 SPI 플래시 장치를 액세스하라는 요청을 수신하지만, 본 발명의 실시예는 SPI 플래시 장치를 포함하거나 이용하지 않는다. SPI 플래시 장치에 통지하는 대신, 호스트 SPI 제어기는 이 요청을 비휘발성 제어기 서브시스템으로 재전송한다. 비휘발성 제어기는 펌웨어 이미지 명령을 실행하는 하나 이상의 비휘발성 장치(들)를 액세스한다. 또한, 본 발명의 실시예는 또한 호스트 제어기로부터 비휘발성 장치로 개시되는 저장 동작을 하드웨어 공격으로부터 보호하는 것을 지원할 수 있다.

Description

비휘발성 메모리 장치를 이용한 대안적인 부트 경로 지원{ALTERNATIVE BOOT PATH SUPPORT FOR UTILIZING NON-VOLATILE MEMORY DEVICES}
본 발명의 실시예는 일반적으로 컴퓨팅 장치에 관한 것으로, 특히, 컴퓨팅 장치를 위한 대안의 부트 경로의 제공에 관한 것이다.
컴퓨팅 장치는 일반적으로 펌웨어 이미지 저장을 위한 SPI(Serial Peripheral Interface) 플래시 장치를 이용하지만, 더 빠르고 더 효율적인 장치 성능에 대한 요구가 증가함에 따라, SPI 플래시 장치의 성능은 제한적인 인자가 된다. 다른 타입의 메모리 장치는 기존의 SPI 플래시 솔루션보다 더 빠르고 더 효율적으로 수행할 수 있다. 컴퓨팅 장치의 플랫폼 하드웨어 설계에 대한 최소의 변화로 펌웨어 이미지에 대한 상이한 타입의 비휘발성 메모리 스토리지(즉, 플래시 및 넌-플래시 장치)를 지원하는 솔루션이 필요하다.
다음의 설명은 본 발명의 실시예의 구현예로서 주어진 도면의 설명을 포함한다. 도면은 예로서 이해되며 제한적이지 않다. 여기에 사용된 바와 같이, 하나 이상의 "실시예"에 대한 참조는 본 발명의 적어도 하나의 구현예에 포함되는 특정 특징, 구조 또는 특성을 설명하는 것으로 이해된다. 따라서, 여기에 나타나는 "일 실시예에서" 또는 "다른 실시예에서" 등의 구는 본 발명의 다양한 실시예 및 구현예를 기재하며 반드시 모두 동일한 실시예를 지칭하는 것은 아니다. 그러나, 이들은 반드시 상호 배타적이지도 않다.
도 1은 본 발명의 실시예에 따른 플랫폼 시스템 컴포넌트의 블록도이다.
도 2a 내지 도 2b는 본 발명의 실시예에 따른 펌웨어 이미지 저장을 위한 비휘발성 메모리 장치를 지원하기 위한 흐름도이다.
도 3은 본 발명의 실시예에 따른 펌웨어 이미지 저장을 위한 비휘발성 메모리 장치를 지원하는 시스템 컴포넌트의 블록도이다.
도 4는 본 발명의 실시예에 따라 비휘발성 메모리 장치를 위한 안전한 키 및 카운터 동작을 가능하게 하는 시스템 컴포넌트의 블록도이다.
도 5는 본 발명의 실시예에 따라 비휘발성 저장 장치를 이용하는 클라이언트 장치의 블록도이다.
이하에 기재된 실시예의 일부 또는 전부를 나타낼 수 있는 도면의 설명 및 여기에 제시된 본 발명의 개념의 다른 잠재적인 실시예 또는 구현예의 설명을 포함하는 소정의 세부사항 및 구현예의 설명이 뒤따른다. 본 발명의 실시예의 개요가 이하에 제공되고 그 후 도면을 참조한 더 상세한 설명이 뒤따른다.
본 발명의 실시예는 비휘발성(즉, 지속적인) 메모리 장치에 대안의 부트 경로 지원을 제공하는 장치, 시스템 및 방법을 기재한다. 본 발명의 실시예에서, 지속적인 메모리 장치 제어기는 PCIe(Peripheral Component Interconnect express) 열거(enumeration) 또는 USB(Universal Serial Bus) 열거 전에 하나 이상의 지속적인 메모리 장치로 향하는 메모리 동작을 허용하기 위하여 디폴트로 파워 업(power up)된다. 상기 지속적인 메모리 장치는 NAND 플래시 메모리 및 NOR 플래시 메모리 등의 비휘발성 메모리를 포함하고, 일부 실시예에서, 상기 지속적인 메모리 장치는 PCM(Phase Change Memories) 등의 플래시와 비교하여 개선된 동작 속도 및 예상 수명을 갖는 다른 타입의 메모리를 포함하고, PCM은 위상 변화 메모리 셀 및 스위치(PCMS)의 어레이, 실리콘 나노와이어 기반 비휘발성 메모리 셀 및 FeTRAM(ferroelectric transistor random access memory)(즉, "강유전성" 폴리머를 갖는 실리콘 나노와이어, 전계가 인가될 때 극성을 스위칭하는 물질)로 이루어진다.
시스템 SPI(Serial Peripheral Interface) 제어기(또는 대안으로, 상기 SPI 제어기 밖의 로직)는 호스트 프로세서로부터 펌웨어 이미지 명령을 실행하는 SPI 플래시 장치를 액세스하라는 요청을 수신하지만, 본 발명의 실시예는 SPI 플래시 장치를 포함하지 않거나 이용하지 않는다. SPI 플래시 장치에 알리는 대신, 호스트 SPI 제어기는 이 요청을 비휘발성 메모리 제어기, 예를 들어, PCIe/XHCI(eXtensible Host Controller Interface)/PCMS 제어기 서브시스템으로 재전송(redirect)한다. PCIe/XHCI/PCMS 제어기는 하나 이상의 PCMS 장치(들)를 액세스하여 호스트 프로세서가 펌웨어 이미지 명령을 실행하도록 한다.
본 발명의 실시예는 초기화 코드를 변경하여 초기에 상기 PCIe/XHCI/PCMS 제어기가 주로 판독(예를 들어 부트 경로 동작)을 수행하도록 한다. 또한, 본 발명의 실시예는 또한 호스트 제어기(예를 들어, 플랫폼 제어기 허브(PCH))로부터 PCMS 장치로 개시된 저장 동작의 하드웨어 공격으로부터의 보호를 지원할 수 있다. 일부 실시예는 PCIe/XHCI/PCMS 제어기에 의해 지원되는 PCIe 인터페이스 상의 추가된 판매자 정의 커맨드 및 PCMS 장치 인터페이스 상의 새로운 커맨드를 이용하여 갭 없이 엔드-투-엔드 보안(end-to-end security)을 제공한다. 상기 커맨드는 예를 들어 루트 키를 프로그래밍하는 커맨드, 해쉬 기반 메시지 인증 코드(HMAC; Hash-based Message Authentication Code) 키 업데이트, 안전한 단조 카운터를 판독하는 커맨드, 안전한 단조 카운터를 증가시키는 커맨드, 메모리 판독/기입/소거, 및 인증된 메모리 블록 기입/판독/소거 커맨드를 포함할 수 있다.
일부 실시예에서, 표준 PCMS 장치는 PCIe 장치로서 CPU 소프트웨어로 액세스될 수 있다. 이러한 실시예에서, 상기 표준 PCMS 장치 액세스는 PCIe 제어기에 의해 관리된다. PCIe 제어기는 결국 종래의 액세스 메커니즘을 이용하여 PCMS 제어기와 통신할 수 있다.
다른 실시예에서, 표준 PCMS 장치는 USB 장치로서 CPU 소프트웨어로 액세스될 수 있다. 이러한 실시예에서, 이러한 표준 PCMS 장치 액세스는 XHCI 제어기에 의해 관리된다. XHCI 제어기는 결국 통상의 액세스 메커니즘을 이용하여 PCMS 제어기와 통신할 수 있다.
다음의 설명에서, 실시예의 완벽한 이해를 제공하기 위하여 수많은 특정한 세부사항이 제공된다. 그러나, 당업자는 여기에 기재된 기술이 특정한 세부사항들 중의 하나 이상 없이 또는 다른 방법, 컴포넌트, 물질 등으로 실행될 수 있음을 인식할 것이다. 다른 예에서, 공지된 구조, 물질, 또는 동작은 특정 양태들을 모호하게 하는 것을 피하기 위하여 상세히 도시되거나 기재되지 않는다.
본 명세서에 걸쳐서 "일 실시예" 또는 "실시예"에 대한 언급은 그 실시예와 결합하여 기재된 특정 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함되는 것을 의미한다. 따라서, 본 명세서에 걸쳐 다양한 곳에서의 "일 실시예에서" 또는 "실시예에서"라는 구의 출현은 반드시 모두 동일한 실시예를 참조하는 것이 아니다. 또한, 특정 특징, 구조 또는 특성은 하나 이상의 실시예에서 임의의 적절한 방식으로 결합될 수 있다.
도 1은 본 발명의 실시예에 따른 플랫폼 시스템 컴포넌트의 블록도이다. 이 실시예에서, 시스템(100)은 SPI 제어기(102), 디코더 및 전력 관리 로직(104), PCIe 제어기(106)(예를 들어, 2010년 11월 18일에 공개된 [The PCI Express Base Specification of the PCI Special Interest Group, Revision 3.0]에 따른 제어기), 및 XHCI 제어기(107)(예를 들어, 2011년 5월 1일에 공개된 [The USB3.0 Base Specification of the USB Special Interest Group, Revision 3.0]에 따른 제어기)를 갖는 호스트 제어기(이 실시예에서, PCH(110))를 포함하는 것으로 도시된다. PCH(110)는 비휘발성 메모리 전력 관리 집적 회로(PMIC)(108), (하나 이상의 비휘발성 메모리 장치(114)를 제어하는) 비휘발성 메모리 장치 제어기(112), 및 프로세서(150)에 통신가능하게 결합되도록 도시된다. 상기 메모리 장치는 예를 들어, NAND 플래시 메모리 장치, NOR 플래시 메모리 장치, PCM 및 PCMS 장치, 실리콘 나노와이어 기반 장치 및 FeTRAM 장치를 포함할 수 있다.
종래의 시스템에서, SPI 플래시 컴포넌트는 상이한 실행 엔진을 위한 펌웨어 이미지를 포함한다. 본 발명의 실시예는 플랫폼이 펌웨어 이미지 저장을 위한 비휘발성 메모리 장치(들)(114)를 갖는 플랫폼 상의 SPI 플래시 컴포넌트를 대체할 수 있게 한다. 후술하는 바와 같이, 본 발명의 실시예는 상기 SPI 플래시 컴포넌트의 효율적인 대체를 가능하게 하도록 다양한 실시예에서 구현될 수 있는 모듈 및/또는 로직을 기재한다. 이 예시적인 실시예에서, SPI 플래시 장치없이 플랫폼 구성을 지원하기 위하여 PCH(110)(즉, SPI 제어기(102), PCIe 제어기(106) 및 XHCI 제어기(107)), 비휘발성 메모리 장치 제어기(112) 및 비휘발성 메모리 장치(들)(114)가 변경된다.
종래의 시스템에서, PCIe 및 USB 기반 제어기는 단지 버스 열거 프로세스의 실행 후에 동작한다. 열거 프로세스는 일반적으로 프로세서 BIOS(Basic Input/Output System) 코드에서 수행된다. 상기 열거 프로세스는 PCIe 및 USB 장치를 시스템의 입출력(I/O) 포트 어드레스 공간 또는 메모리 맵핑 어드레스 공간으로 맵핑함으로써 PCIe 및 USB 장치의 어드레싱을 가능하게 한다. 즉, 열거 전에, PCIe 및 USB 장치는 플랫폼 소프트웨어(예를 들어, 오퍼레이팅 시스템(OS), 장치 드라이버)와의 통신을 위해 그에 할당된 임의의 어드레스를 갖지 않는다. 따라서, PCIe 및 USB 장치는 종래의 솔루션에서의 BIOS 동작 전에 액세스될 수 없다.
이 실시예에서, 호스트 제어기(110)는 "열거 전(pre-enumeration)"(즉, 레거시) PCIe 제어기(105)를 통해 디폴트로 비휘발성 메모리 장치 제어기(112)와의 동작이 허용되도록 구성된다. 또한, 후술하는 바와 같이, PCIe 제어기(105) 및 비휘발성 메모리 장치 제어기(112)는 PCMS 장치 인터페이스 및 PCMS 제어기 인터페이스 상의 강화된 프로토콜 정의를 이용함으로써 비휘발성 메모리 장치(들)(114)에 대한 하드웨어 공격 보호를 지원한다.
예를 들어, 비휘발성 메모리 장치 제어기(112)가 적절한 PCI 열거 전에 프로세서(150)에 의해 동작하고 액세스될 수 있도록 PCIe 장치를 이용하는 실시예에서, 시스템(100)은 BIOS 플래시 액세스가 SPI 제어기(102)로 향하는(요청(191)으로서 도시됨) 디폴트 구성을 이용한다. 종래의 호스트 제어기 솔루션은 레거시 PCIe-레거시 브리지(legacy PCIe to legacy bridge)를 지원하고, 여기서 디폴트 사이클은 특정 레거시 버스로 전달된다. 이 실시예에서, 유사한 디폴트 구성은 비휘발성 메모리 장치 제어기(112)에 사용되고, 여기서, BIOS 플래시 액세스는 항상 PCIe 커맨드 프로토콜을 이용하여 (시스템(100)이 SPI 플래시 장치를 포함하지 않기 때문에) 비휘발성 메모리 장치 제어기로 향한다. 일부 실시예에서, 이 구성은 플랫폼이 "SPI 플래시가 없는" 구성을 지원하는 PCH(110) 및 비휘발성 메모리 장치 제어기(112)에 대하여 기재하는 부트스트랩(bootstrap) 코드, 즉, SPI제어기(102) 내지 PCIe 제어기(105) 및 결국 (즉, 신호 쌍을 수신/송신하는) 레거시 PCI 레인으로의 사이클의 이동을 가능하게 하는 스트랩(strap) 코드로 구현된다. 또한, 디코더 및 전력 관리 로직(104)은 PMIC(108) 로직에 대한 지원이 리셋 직후에 동작하도록 구성된다.
따라서, 비휘발성 메모리 장치 제어기(112)는 PCIe 열거 전에 SPI 제어기(102)에 의해 생성된 레거시 사이클을 수락하도록 구성된다. 또한, 비휘발성 메모리 장치 제어기(112)는, 판독 및 기입을 위한 펌웨어 저장을 위한 전용 메모리 공간의 4, 8 또는 그 이상의 메가바이트(MB)를 지원하고 BIOS 또는 ME(manageability engine) 펌웨어 콘텐츠를 공급할 때 직접 메모리 판독 및 기입을 지원하는 직접 메모리 맵핑 인터페이스를 포함하고 SPI 영역으로의 판독을 직접 판독이 가능한 판독 전용 메모리 베이스 어드레스 레지스터(ROMBAR, 즉, 옵션 판독 전용 메모리(orom)) 메모리 맵핑 I/O(MMIO) 공간으로 맵핑하도록 구성될 수 있다. 일부 실시예에서, PCMS 제어기(112)가 판독-변경-기입 동작을 국부적으로 지원하지 않으면, PCH(110)의 컴포넌트에 능력이 추가된다. 열거 후에, 프로세서(150)에 의한 PCIe 기반 액세스는 (런타임 SPI 플래시 액세스가 여전히 PCIe 제어기(105)를 통해 재전송되는 동안) 요청(192)으로서 도시된 바와 같이 PCIe 제어기(106)를 통해 실행된다. 상기 PCIe 제어기(105 및 106)는 예시적인 목적으로 개별 논리 컴포넌트로 도시되고 다른 실시예에서 동일한 제어기를 포함할 수 있다.
USB 기반 장치를 지원하는 다른 실시예에서, PCH(110)는 하나 이상의 USB 기반 비휘발성 메모리 장치(예를 들어, 2008년 11월 12일에 공개된 [USB Specification 3.0]에 따른 USB 장치)와 상호작용하는 XHCI 제어기(107)(예를 들어, 2010년 5월 21일에 공개된 [extensible Host Controller Interface Specification for Universal Serial Bus 3.0, revision 1.0]에 따른 XHCI 제어기)를 포함한다. 상술한 바와 같이 PCIe 제어기를 이용하는 실시예와 마찬가지로, USB 기반 장치에 대하여, PCMS 제어기(112)는 열거 전 PCIe 제어기(105)를 통해 액세스 가능한 열거 전(즉, 레거시) PCIe 장치로서 적절한 USB 열거 전에 동작한다. 열거 후에, 프로세서(150)에 의한 USB 기반 액세스는 (PCIe 제어기(105)를 통해 런타임 SPI 플래시 액세스가 여전히 재전송되는 동안) 요청(193)으로서 도시된 바와 같이 XHCI 제어기(107)를 통해 실행된다.
비휘발성 메모리 장치 제어기(112)가 적절한 USB 열거 전에 동작하도록 하기 위해, 시스템(100)은 액세스가 SPI 제어기(102)로 향하는 디폴트 구성을 이용할 수 있다. 종래의 PCH 솔루션은 PCIe-레거시 브리지(PCIe to legacy bridge)를 지원하고, 여기서 디폴트 사이클은 적절한 레거시 장치로 전송된다. 이 실시예에서, 유사한 디폴트 구성은 비휘발성 메모리 장치 제어기(112)에 사용되고, 여기서, BIOS SPI 플래시 액세스는 항상 PCIe-레가지 PCIe 브리지를 이용하여 (시스템(100)은 SPI 플래시 장치를 포함하지 않기 때문에) 비휘발성 메모리 장치 제어기로 향한다. 일부 실시예에서, 이 구성은 플랫폼이 "SPI 플래시가 없는" 구성을 지원하는 PCH(110) 및 비휘발성 메모리 장치 제어기(112)에 대하여 기재하는 부트스트랩 코드, 즉, SPI 제어기(102) 내지 PCIe 제어기(105), XHCI 제어기(107) 및 결국은 비휘발성 메모리 장치(들)(114) 중의 하나 이상으로의 사이클의 이동을 가능하게 하는 스트랩 코드로 구현된다. 또한, 후술하는 바와 같이, XHCI 제어기(107) 및 비휘발성 메모리 장치 제어기(112)는 XHCI 장치 인터페이스 및 비휘발성 메모리 장치 제어기 인터페이스 상의 강화된 프로토콜 정의를 이용함으로써 비휘발성 메모리 장치(들)(114)에 대한 하드웨어 공격 보호를 지원한다. 또한, 비휘발성 메모리 장치 제어기(112)는 판독 및 기입을 위한 펌웨어 저장을 위한 잘라진 공간의 4, 8 또는 그 이상의 메가바이트(MB)를 지원하고 BIOS 또는 ME(manageability engine) 펌웨어 콘텐츠를 공급할 때 직접 메모리 동작 및 기입을 지원하는 직접 메모리 맵핑 인터페이스를 포함하고 SPI 영역으로의 판독을 직접 판독이 가능한 ROMBAR(orom) MMIO 공간으로 맵핑하도록 구성될 수 있다. 일부 실시예에서, 비휘발성 메모리 장치 제어기(112)가 판독-변경-기입 동작을 국부적으로 지원하지 않으면, PCH(110)의 컴포넌트에 능력이 추가된다.
따라서, 이 실시예에서, 제어기(105 및 106)는 상술한 열거 전 및 열거 후 PCIe 장치(pre-enumeration and post-enumeration PCIe device) 액세스들을 지원하도록 실행되고, 제어기(105 및 107)는 상술한 열거 전 및 열거 후 USB 장치 액세스들을 지원하도록 실행된다.
도 2a는 본 발명의 실시예에 따라 펌웨어 이미지 저장을 위한 지속적인 저장 메모리 장치를 지원하는 흐름도이다. 여기에 기재된 흐름도는 다양한 프로세스 동작의 시퀀스의 예를 제공한다. 특정 시퀀스 또는 순서로 도시되지만, 다르게 특정되지 않는 한, 동작의 순서는 변경될 수 있다. 따라서, 도시된 구현예는 단지 예로서 이해되어야 하며, 도시된 프로세스는 상이한 순서로 수행될 수 있고, 일부 동작은 병렬로 수행될 수 있다. 추가적으로, 하나 이상의 동작은 본 발명의 다양한 실시예에서 생략될 수 있고, 따라서, 모든 동작이 모든 구현예에 필요한 것은 아니다. 다른 프로세스 흐름이 가능하다.
프로세스(200)는 플랫폼 하드웨어 초기화를 위한 동작을 수행하는 단계(202)를 포함한다. 상술한 바와 같이, 플랫폼 모듈 및 로직은 지속적인 저장 메모리 장치를 이용함으로써 초기화 동안 후술하는 동작을 실행하도록 구성된다. 후술하는 동작에 있어서, PCM 메모리 장치는 단지 예시적인 목적으로 기재되며, 상술한 바와 같이, 본 발명의 다른 실시예에서, 다른 타입의 비휘발성 메모리가 이용될 수 있다. 레거시(즉, 열거 전) PCIe/PCMS 제어기 서브시스템이 디폴트로 파워 업(204)되어 PCIe 기반 PCMS 장치에 대한 PCIe 열거 전에 하나 이상의 PCMS 장치로의 메모리 동작을 허용한다.
호스트 SPI 제어기는 펌웨어 이미지 명령을 실행하는 SPI 플래시 장치를 액세스하라는 요청을 수신한다(206). SPI 플래시 장치에 알리는 대신, 호스트 SPI 제어기는 그 요청을 레거시 PCMS 제어기로 재전송한다(208). PCMS 제어기는 펌웨어 이미지 명령을 실행하는 PCMS 장치(들)를 액세스한다(210).
그 다음에 부트 동작은 펌웨어 이미지의 위치와 관계없이 투명하게 실행되어(212) 플랫폼 OS 부트를 야기한다. 이들 부트 동작은 기술어 판독(descriptor read), EC(Embedded Controller) 펌웨어 판독, ME 펌웨어 판독 및 CPU BIOS 판독을 포함할 수 있고, CPU BIOS는 PCIe PCMS 제어기를 추가로 열거할 수 있고, PCMS 제어기로의 판독, 기입 및 다른 주변 장치 동작(예를 들어, PCIe PCM SSD 장치에 대한 클린업 및 관리 동작 등의 SSD(Solid-State Drive) 장치 관리 동작)을 허용할 수 있다. 일부 실시예에서, BIOS는 변경되어 이 포인트까지 (상기 PCMS 장치를 포함하는) 지속적인 저장 장치로의 기입을 지연시킨다. 런타임 동안, OS 부트 후, 런타임 저장 동작은 유사하게 PCMS 제어기로 재전송되고(214), 또한, OS 부트 후, 열거 후 PCIe 동작은 또한 PCIe PCMS 장치를 위해 지원된다.
따라서, 본 발명의 실시예는 초기화 코드를 변경하여 초기에 PCMS 제어기가 주로 판독을 수신하도록 한다. PCIe 열거가 완료되고 나서, 기입이 PCMS 제어기로 발행되고 SPI 플래시 액세스에 대한 레거시 PCIe 동작에 더하여 장치가 표준 열거 후 PCMS 액세스를 지원한다.
상술한 넌-SPI 장치 지원에 더하여, 본 발명의 실시예는 PCH로부터 PCMS 장치로 개시되는 저장 동작의 하드웨어 공격으로부터의 보호를 지원할 수 있다. 일부 실시예는 PCMS 제어기에 의해 지원되는 PCIe/XHCI 인터페이스 상의 추가된 판매자 정의 커맨드 및 PCMS 장치 인터페이스 상의 새로운 커맨드를 이용하여 갭 없이 엔드-두-엔드 보안을 제공한다.
상기 커맨드는 예를 들어 루트 키를 프로그래밍하는 커맨드, HMAC 키의 업데이트, (후술하는) 안전한 단조 카운터를 판독하는 커맨드, 안전한 단조 카운터를 증가시키는 커맨드, 메모리 판독/기입/소거 및 인증된 메모리 블록 기입/판독/소거 커맨드를 포함할 수 있다.
도 2b는 본 발명의 실시예에 따라 펌웨어 이미지 저장을 위한 비휘발성 메모리 장치를 지원하는 흐름도이다. 프로세스(250)는 플랫폼 하드웨어 초기화를 위한 동작을 수행하는 단계(252)를 포함한다. 상술한 바와 같이, 플랫폼 모듈 및 로직은 초기화 동안 후술하는 동작을 실행하도록 구성된다. 레거시(즉, 열거 전) PCIe/PCMS 제어기 서브시스템은 디폴트로 파워 업(254)되어 (즉, 부트-업 프로세스 동안) USB 장치 열거 프로세스의 실행 전에 하나 이상의 USB 장치로의 메모리 동작을 허용한다.
이 실시예에서, 호스트 SPI 제어기는 펌웨어 이미지 명령을 실행하는 SPI플래시 장치를 액세스하라는 요청을 수신한다(256). SPI 플래시 장치에 알리는 대신, 호스트 SPI 제어기는 그 요청을 레거시 PCIe/PCMS 제어기로 재전송한다(258). 이 제어기는 펌웨어 이미지 명령을 실행하는 PCMS 장치(들)를 액세스한다(260).
그 다음에 레거시 부트 동작은 펌웨어 이미지의 위치와 관계없이 투명하게 실행되어(262) 플랫폼 OS 부트를 야기할 수 있다. 이들 부트 동작은 기술어 판독, EC(Embedded Controller) 펌웨어 판독, ME 펌웨어 판독 및 CPU BIOS 판독을 포함할 수 있고, CPU BIOS는 USB 장치를 추가로 열거할 수 있고, PCMS 제어기로의 판독, 기입 및 SSD 장치 관리 동작을 허용한다. 일부 실시예에서, BIOS는 변경되어 이 포인트까지 지속적인 저장 장치로의 기입을 지연시킨다. 런타임 동안, OS 부트 후, 런타임 저장 동작은 유사하게 PCMS 제어기로 재전송되고(264), 또한, OS 부트 후, 열거 후 USB 동작이 지원되어 PCIe/USB/PCMS 장치로서 수행하는 장치를 구성한다.
따라서, 본 발명의 실시예는 초기화 코드를 변경하여 초기에 PCMS 제어기가 주로 판독을 참조하도록 한다. PCIe (또는 대안으로, USB) 열거가 완료되고 나서, 기입이 PCMS 제어기로 발행되고 SPI 플래시 액세스에 대한 레거시 PCIe 동작에 더하여 장치가 표준 USB/PCMS 액세스를 지원한다.
상술한 넌-SPI 장치 지원에 더하여, 본 발명의 실시예는 PCH로부터 PCMS 장치로 개시되는 저장 동작의 하드웨어 공격으로부터의 보호를 지원할 수 있다. 일부 실시예는 PCMS 제어기에 의해 지원되는 PCIe/XHCI 인터페이스 상의 추가된 판매자 정의 커맨드 및 PCMS 장치 인터페이스 상의 새로운 커맨드를 이용하여 갭 없이 엔드-두-엔드 보안을 제공한다.
상기 커맨드는 예를 들어 루트 키를 프로그래밍하는 커맨드, HMAC 키의 업데이트, (후술하는) 안전한 단조 카운터를 판독하는 커맨드, 안전한 단조 카운터를 증가시키는 커맨드, 메모리 판독/기입/소거 및 인증된 메모리 블록 기입/판독/소거 커맨드를 포함할 수 있다.
도 3은 본 발명의 실시예에 따라 펌웨어 이미지 저장을 위한 비휘발성 메모리 장치를 지원하는 시스템 컴포넌트의 블록도이다. 시스템(300)은 비휘발성 메모리 장치(이 실시예에서, PCMS 메모리 장치(310)) 및 플랫폼 상호접속부(320)(예를 들어, PCIe/XHCI/PCMS 제어기를 포함하는 PCH)를 포함하는 것으로 도시된다. 이 실시예에서, PCMS 메모리 장치(310)는 (본 예시에서 제어기 모듈(322)로서 도시된) 상술한 바와 같은 PCMS 및 SPI 플래시 제어기들의 조합을 이용하여 플랫폼 상호접속부(320)와 통신하고, 다른 실시예에서, 후술하는 바와 같이, 다른 비휘발성 메모리 장치 및 프로토콜이 사용될 수 있다.
PCMS 메모리 장치(310)는 HMAC 키 레지스터(311), HMAC 로직(312), 단조 카운터(313), 및 PCMS 메모리 장치의 메모리로의 기입을 디스에이블/인에이블하는 블록 기입 보호 로직(314)을 포함한다. HMAC 키 레지스터(311)는 플랫폼 상호접속부(320)로부터 수신된 하나 이상의 장치 HMAC 키를 저장할 수 있다. 일 실시예에서, HMAC 키 레지스터(311)는 판독불가능하고, 상기 장치 HMAC 키는 상기 레지스터에 영구적으로 기입된다. HMAC 로직(312)은 플랫폼 상호접속부(320)로부터 수신된 인증된 커맨드를 확인하고 또한 상술한 장치 HMAC 키를 이용하여 상기 커맨드에 대한 인증된 응답을 생성한다. 일 실시예에서, 상기 HMAC 로직은 요청을 인증하고 응답을 생성하는 HMAC-SHA(Hash-based Message Authentication Code/Secure Hash Algorithm) 알고리즘(예를 들어, HMAC-SHA-256 서명(signing) 알고리즘)을 이용한다. 다른 실시예에서, 임의의 다른 유사한 서명 알고리즘이 이용될 수 있다.
단조 카운터(또는 카운터들)(313)는 단조 카운터 값의 하드웨어 저장을 나타낸다. 상기 단조 카운터는 그렇게 하도록 요청될 때 카운트(예를 들어, 증가 또는 감소)하고 카운터로의 판독 동작에 응답하여 단조 카운트 값을 생성하도록 구성될 수 있다.
플랫폼 상호접속부(320)는 FPF(field programmable fuses)(321), 제어기 모듈(322), ME 실행 환경(323), HMAC 키 레지스터(324), HMAC 로직(325), 단조 카운터 로직(326) 및 블록 기입 보호 로직(327)을 포함한다. ME 실행 환경(323)은 예를 들어 호스트 오퍼레이팅 시스템에 의해 실행되지 않을 수 있는 안전하고 격리된 환경을 제공한다. 상기 ME는 사용자를 인증하고 주변 장치(미도시)로의 액세스를 제어할 수 있다.
플랫폼 상호접속부(320)는 고유 장치 키를 도출하기 위해 꺼진(blown)(예를 들어, 제조 프로세스 동안 꺼진) 퓨즈의 세트일 수 있는 고유 장치 키에 기초할 수 있다. HMAC-SHA 기반 메시징을 이용한 실시예에서, 상기 고유 장치 키는 HMAC 키 레지스터(324)에 저장된 고유 HMAC 키를 도출하는데 사용될 수 있다. 인쇄 회로 기판(PCB) 제조 프로세스 동안, 고유 HMAC 키는 루트 키 레지스터 기입 커맨드를 이용하여 PCMS에 공급된다. 이 키는 단 한번만 기입되고 플랫폼 상호접속부(320) 및 PCMS(310) 사이의 공통 비밀을 설정한다. 하나의 예시화(instantiation)에서, 후술하는 바와 같이, PCMS 메모리 장치(310) 및 플랫폼 상호접속부(320) 사이에서 교환되는 HMAC 기반 커맨드 및 응답은 상기 PCMS 메모리 장치 내의 리플레이 보호 데이터의 저장을 보장한다. 다른 예시화에서, HMAC 루트 키는 제1 예시화와 유사하게 저장되지만, 실제 동작 동안, HMAC 동작 키는 HMAC 명령 동작을 이용하여 HMAC 루트 키에 기초하여 도출된다.
본 발명의 실시예는 리플레이 보호 단조 카운터 저장 메커니즘을 제공함으로써 PCMS 메모리 장치(310)를 변경한다. 이것은 PCMS 메모리 장치(310) 및 플랫폼 상호접속부(320) 사이에서 교환되는 공통 HMAC 키를 제공함으로써 생성되어 예를 들어 HMAC 키 레지스터(311 및 324)에 저장된다. 이 실시예에서, 단조 카운터(313)를 조작하는 모든 커맨드는 인증된 커맨드이다. 인증된 커맨드는 장치 키의 소유자(이 실시예에서, ME 실행 환경(323) 및 PCMS 메모리 장치(310))에 의해서만 발행될 수 있기 때문에, 카운터를 판독 및/또는 조작하기 위하여 다른 엔티티는 단조 카운터를 액세스할 수 없다.
도 4는 본 발명의 실시예에 따른 비휘발성 메모리 장치에 대한 안전한 키 및 카운터 동작을 가능하게 하는 시스템 컴포넌트의 블록도이다. 이 실시예에서, 시스템(400)은 다수의 리플레이 보호 단조 카운터를 지원하는 비휘발성 메모리 장치(이 실시예에서는, PCMS 메모리 장치(410))를 포함한다. 각각의 개별 단조 카운터는 호스트 플랫폼 상의 다양한 장치를 위한 개별 안전 실행 환경을 위한 리소스로서 이용가능하다. 본 발명의 실시예는 사용자 공격으로부터 카운터를 보호하는 것에 더하여, 상이한 안전 실행 환경을 환경에 속하지 않는 단조 카운터 리소스에 액세스하는 것으로부터 격리 및 보호한다.
PCMS 장치(410)는 HMAC 키 레지스터(411), HMAC 키 로직(412), 단조 카운터(413) 및 블록 기입 보호 로직(414)을 포함한다. HMAC 키 레지스터(411)는 ME 로직(420) 및 프로세서(430)(후술함)로부터 수신된 하나 이상의 HMAC 키를 저장할 수 있다. 상기 HMAC 키는 특정 단조 카운터와 연관될 수 있다. 일 실시예에서, HMAC 키 레지스터(411)는 판독불가능하다. HMAC 로직(412)은 ME(420) 및 프로세서(430)로부터 수신된 단조 카운터 요청 커맨드를 확인할 수 있고, 또한 상기 커맨드에 대한 인증된 응답을 생성할 수 있다.
단조 카운터(413)는 복수의 카운터 값에 대한 하드웨어 스토리지일 수 있다. 상기 단조 카운터는 또한 그렇게 하도록 요청될 때 카운트(예를 들어, 증가 또는 감소)하고 판독 동작에 응답하여 단조 카운트 값을 생성하도록 구성될 수 있다.
SPI 플래시 제어기(405)는, 상술한 바와 같이 시스템(400)의 다양한 컴포넌트로부터 요청을 수신하고 (PCIe 또는 XHCI 제어기를 통해) 상기 요청을 PCMS 제어기(407)로 포워딩하는 호스트 커맨드 액세스 제어(406)를 포함한다.
ME(420)는 FPF(421), HMAC 키 도출(422), 루트 키 스토리지(423), ME 실행 환경(424), HMAC 키 레지스터(425), HMAC 키 생성 로직(426), 단조 카운터 로직(427) 및 블록 기입 보호(428)를 포함한다. HMAC 키 도출(422)은 루트 키 스토리지(423)에 저장된 루트 키를 이용하여 HMAC 키를 도출할 수 있다(상기 루트 키는 FPF(421)의 꺼진 퓨즈에 기초하여 장치 키로부터 추가로 도출될 수 있다). HMAC 키 레지스터(425)는 상기 HMAC 키를 저장할 수 있고, HMAC 로직(426)은 ME(420)에 할당된 단조 카운터로의 요청 및 커맨드를 인증할 수 있다.
단조 카운터 로직(427)은 각각의 단조 카운터(즉, 단조 카운터(413) 중 하나)의 검색된 값을 저장할 수 있고 그 각각의 단조 카운터의 어드레스를 저장할 수 있고, 따라서, SPI 플래시 제어기(405)는 정확한 어드레스로 향하는 ME(420)로부터 단조 카운터 요청을 PCMS 제어기(407)로 포워딩하고, 따라서, ME 실행 환경(424)이 관련되지 않은 단조 카운터를 액세스하지 않도록 보장한다.
프로세서(430)는 FPF(431), HMAC 키 도출(432), 루트 키 스토리지(433), 프로세서 실행 환경(434), HMAC 키 레지스터(435), HMAC 키 로직(436), 단조 카운터 로직(437) 및 블록 기입 보호(438)를 포함한다. 프로세서 실행 환경(434)은 호스트 시스템 OS에 의해 액세스가능한 안전 실행 환경일 수 있다.
HMAC 키 도출(432)은 루트 키 스토리지(433)에 저장된 루트 키를 이용하여 HMAC 키를 도출할 수 있다(상기 루트 키는 FPF(431)의 꺼진 퓨즈에 기초하여 장치 키로부터 추가로 도출될 수 있다). HMAC 키 레지스터(435)는 상기 HMAC 키를 저장할 수 있고, HMAC 키 로직(436)은 프로세서(430)에 할당된 단조 카운터로의 요청 및 명령을 인증할 수 있다.
단조 카운터 로직(437)은 각각의 단조 카운터(즉, 단조 카운터(413) 중의 하나)의 검색된 값을 저장할 수 있고, 또한 각각의 단조 카운터의 어드레스를 저장할 수 있고, 따라서, SPI 플래시 제어기(405)는 단지 프로세서(430)로부터 정확한 어드레스로 향하는 PCMS 제어기(407)로 단조 카운터 요청을 포워딩할 수 있고, 따라서, 프로세서 실행 환경(434)이 관련되지 않은 단조 카운터를 액세스하지 않도록 보장한다.
도 5는 본 발명의 실시예에 따라 비휘발성 펌웨어 저장 장치를 이용하는 클라이언트 장치의 블록도이다. 컴퓨팅 장치(500)는 랩탑 컴퓨터, 울트라북, 컴퓨팅 태블릿, 모바일 폰 또는 스마트폰, 무선 가능 이-리더(e-reader), 또는 다른 무선 모바일 장치 등의 모바일 컴퓨팅 장치를 나타낸다. 컴포넌트의 일부는 일반적으로 도시되지만 이러한 장치의 모든 컴포넌트가 장치(500)에 도시되는 것은 아니라는 것을 이해할 것이다.
장치(500)는 장치(500)의 주요 처리 동작을 수행하는 프로세서(510)를 포함한다. 프로세서(510)는 마이크로프로세서, 애플리케이션 프로세서, 마이크로컨트롤러, 프로그래머블 로직 장치, 프로세서 코어 또는 다른 처리 수단 등의 하나 이상의 물리 장치를 포함할 수 있다. 프로세서(510)에 의해 수행되는 처리 동작은 애플리케이션 및/또는 장치 기능이 실행되는 동작 플랫폼 또는 동작 시스템의 실행을 포함한다. 처리 동작은 인간 사용자 또는 다른 장치와의 I/O(입출력)에 관련된 동작, 전력 관리에 관련된 동작 및/또는 장치(500)를 다른 장치로 접속하는 것과 관련된 동작을 포함한다. 처리 동작은 또한 오디오 I/O 및/또는 디스플레이 I/O에 관련된 동작을 포함할 수 있다.
일 실시예에서, 장치(500)는 컴퓨팅 장치에 오디오 기능을 제공하는 것과 연관된 하드웨어(예를 들어, 오디오 하드웨어 및 오디오 회로) 및 소프트웨어(예를 들어, 드라이버, 코덱) 컴포넌트를 나타내는 오디오 서브시스템(520)을 포함한다. 오디오 기능은 스피커 및/또는 헤드폰 출력 뿐만 아니라 상술한 오디오 잭 중의 임의의 것을 통한 마이크로폰 입력을 포함할 수 있다. 이러한 기능을 위한 장치는 장치(500)에 통합되거나 장치(500)에 접속될 수 있다. 일 실시예에서, 사용자는 프로세서(510)에 의해 수신되고 처리되는 오디오 커맨드를 제공함으로써 장치(500)와 상호작용한다.
디스플레이 서브시스템(530)은 사용자가 컴퓨팅 장치와 상호작용하기 위한 시각 및/또는 촉각 디스플레이를 제공하는 하드웨어(예를 들어, 디스플레이 장치) 및 소프트웨어(예를 들어, 드라이버) 컴포넌트들을 나타낸다. 디스플레이 서브시스템(530)은 사용자에게 디스플레이를 제공하는데 사용되는 특정 화면 또는 하드웨어 장치를 포함하는 디스플레이 인터페이스(532)를 포함한다. 일 실시예에서, 디스플레이 인터페이스(532)는 프로세서(510)로부터 분리되어 디스플레이에 관련된 적어도 일부의 처리를 수행하는 로직을 포함한다. 일 실시예에서, 디스플레이 서브시스템(530)은 사용자에게 출력 및 입력을 모두 제공하는 터치스크린 장치를 포함한다.
I/O 제어기(540)는 사용자와의 상호작용과 관련된 하드웨어 장치 및 소프트웨어 컴포넌트를 나타낸다. I/O 제어기(540)는 오디오 서브시스템(520) 및/또는 디스플레이 서브시스템(530)의 일부인 하드웨어를 관리하도록 동작할 수 있다. 추가적으로, I/O 제어기(540)는 사용자가 시스템과 상호작용할 수 있는 장치(500)에 접속하는 추가의 장치에 대한 접속 포인트를 나타낸다. 예를 들어, 장치(500)에 부착될 수 있는 장치는 마이크로폰 장치, 스피커 또는 스테레오 시스템, 비디오 시스템 또는 다른 디스플레이 장치, 키보드 또는 키패드 장치 또는 카드 리더 또는 다른 장치 등의 특정 애플리케이션과의 사용을 위한 다른 I/O 장치를 포함할 수 있다.
상술한 바와 같이, I/O 제어기(540)는 오디오 서브시스템(520) 및/또는 디스플레이 서브시스템(530)과 상호작용할 수 있다. 예를 들어, 마이크로폰 또는 다른 오디오 장치를 통한 입력은 장치(500)의 하나 이상의 애플리케이션 또는 기능에 대한 입력 또는 커맨드를 제공할 수 있다. 추가적으로, 오디오 출력은 디스플레이 출력 대신 또는 그에 더하여 제공될 수 있다. 다른 예에서, 디스플레이 서브시스템이 터치스크린을 포함하면, 디스플레이 장치는 또한 I/O 제어기(540)에 의해 적어도 부분적으로 관리될 수 있는 입력 장치로서 동작한다. 또한 I/O 제어기(540)에 의해 관리되는 I/O 기능을 제공하는 장치(500) 상의 추가의 버튼 또는 스위치가 존재할 수 있다.
일 실시예에서, I/O 제어기(540)는 가속도계, 카메라, 광 센서 또는 다른 환경 센서 또는 장치(500)에 포함될 수 있는 다른 하드웨어 등의 장치를 관리한다. 입력은 직접적인 사용자 상호작용의 일부 뿐만 아니라 (잡음에 대한 필터링, 밝기 검출을 위한 디스플레이 조절, 카메라에 대한 플래시 적용 또는 다른 특징 등의) 그 동작에 영향을 주는 시스템에 대한 환경 입력의 제공일 수 있다. 일 실시예에서, 장치(500)는 배터리 전력 사용, 배터리 충전 및 전력 절약 동작에 관련된 특징을 관리하는 전력 관리(550)를 포함한다.
메모리 서브시스템(560)은 장치(500)에 정보를 저장하는 메모리 장치를 포함한다. 메모리는 비휘발성(메모리 장치로의 전력이 인터럽트되는 경우 상태가 변하지 않음) 및/또는 휘발성(메모리 장치로의 전력이 인터럽트되는 경우 상태가 결정되지 않음) 메모리 장치들을 포함할 수 있다. 메모리(560)는 애플리케이션 데이터, 사용자 데이터, 음악, 사진, 문서 또는 다른 데이터 뿐만 아니라 시스템(500)의 애플리케이션 및 기능의 실행과 관련된 (장기이거나 일시적이거나) 시스템 데이터를 저장할 수 있다. 메모리(560)는 부트 경로 동작과 관련된 펌웨어 이미지를 더 저장하고, 따라서, 상술한 바와 같이 상기 펌웨어 이미지를 저장하는 지속적인 저장 장치를 포함할 수 있다.
접속(connectivity)(570)은 장치(500)가 외부 장치와 통신하도록 하는 하드웨어 장치(예를 들어, 무선 및/또는 유선 커넥터 및 통신 하드웨어) 및 소프트웨어 컴포넌트(예를 들어, 드라이버, 프로토콜 스택)을 포함한다. 장치는 다른 컴퓨팅 장치, 무선 액세스 포인트 또는 기지국 등의 개별 장치 뿐만 아니라 헤드셋, 프린터 또는 다른 장치 등의 주변 장치일 수 있다.
접속(570)은 다수의 상이한 타입의 접속을 포함할 수 있다. 일반화하기 위하여, 장치(500)는 셀룰러 접속(572) 및 무선 접속(574)으로 도시된다. 셀룰러 접속(572)은 일반적으로 GSM(global system for mobile communications) 또는 변형 또는 파생물, CDMA(code division multiple access) 또는 변형 또는 파생물, TDM(time division multiplexing) 또는 변형 또는 파생물, 또는 다른 셀룰러 서비스 표준을 통해 제공되는 등 무선 캐리어에 의해 제공되는 셀룰러 네트워크 접속을 지칭한다. 무선 접속(574)은 셀룰러가 아닌 무선 접속을 지칭하고, (블루투스 등의) 개인 영역 네트워크, (Wi-Fi 등의) 근거리 네트워크 및/또는 (Wi-Max 등의) 광역 네트워크 또는 다른 무선 통신을 포함할 수 있다.
주변 접속(580)은 상술한 바와 같이 비휘발성 메모리 장치 펌웨어 저장 지원을 구현하는 하드웨어 인터페이스들 및 커넥터들뿐만 아니라 주변 접속을 수행하는 소프트웨어 컴포넌트들(예를 들어, 드라이버, 프로토콜 스택들)을 포함한다. 장치(500)는 다른 컴퓨팅 장치로의 주변 장치("로"(582))일 뿐만 아니라 그에 접속된 주변 장치("로부터"(584))를 가질 수 있다는 것을 이해할 것이다. 장치(500)는 보통 장치(500) 상의 콘텐츠를 관리(예를 들어, 다운로드 및/또는 업로드, 변경, 동기화)하는 등의 목적으로 다른 컴퓨팅 장치에 접속하는 "도킹(docking)" 커넥터를 갖는다. 추가적으로, 도킹 커넥터는 장치(500)가, 예를 들어, 시청각 또는 다른 시스템들로의 콘텐츠 출력을 제어하도록 하는 임의의 주변 장치들에 장치(500)가 접속하도록 할 수 있다.
사유(proprietary) 도킹 커넥터 또는 다른 사유 접속 하드웨어에 더하여, 장치(500)는 공통 또는 표준 기반 커넥터를 통해 주변 접속부(580)를 형성할 수 있다. 공통 타입은 USB(Universal Serial Bus) 커넥터(다수의 상이한 하드웨어 인터페이스 중의 임의의 것을 포함할 수 있음), MDP(MiniDisplayPort)를 포함하는 디스플레이 포트, HDMI(High Definition Multimedia Interface), 파이어와이어 또는 다른 타입을 포함할 수 있다.
따라서, 본 발명의 실시예는 안테나, 안테나에 결합되어 시스템에 의해 처리될 신호 데이터를 수신하는 무선 주파수 회로, 펌웨어 이미지를 포함하는 비휘발성 메모리 장치, 프로세서 및 호스트 제어기를 포함하는 시스템을 기재한다. 상기 호스트 제어기는 주변 장치 제어기 및 펌웨어 이미지 명령을 실행하는 SPI(Serial Peripheral Interface) 플래시 장치를 액세스하라는 요청을 프로세서로부터 수신하고 주변 장치 제어기에게 수신된 요청에 대해 통지하는 SPI 플래시 제어기를 포함한다. 호스트 제어기의 상기 주변 장치 제어기는 주변 장치 제어기로부터 수신된 요청의 통지를 수신한 것에 응답하여 프로세서가 펌웨어 명령을 실행하도록 비휘발성 메모리 장치를 액세스하는 것이다. 일부 실시예에서, 상기 주변 장치 제어기는 PCIe(Peripheral Component Interconnect express) 제어기 또는 XHCI(eXtensible Host Controller Interface) 제어기 중의 하나를 포함한다.
상기 펌웨어 명령은 예를 들어 메모리 판독, 메모리 기입, 메모리 소거 요청, 인증된 메모리 블록 액세스 커맨드, HMAC(Hash-based Message Authentication Code) 키의 업데이트, 단조 카운터의 값에 대한 요청 또는 단조 카운터의 업데이트에 대한 요청 중의 하나를 포함할 수 있다. 일부 실시예에서, 상기 비휘발성 메모리 장치는 PCMS 장치를 포함하고, 주변 장치 제어기는 호스트 제어기 외부의 PCMS 제어기를 통해 PCMS 장치를 액세스한다.
본 발명의 실시예는 프로세서로부터 주변 장치 제어기로 요청을 재전송하는 단계 - 프로세서로부터의 요청은 펌웨어 명령을 실행하는 SPI(Serial Peripheral Interface) 플래시 장치를 액세스하라는 요청을 포함함 -, 및 주변 장치 제어기를 통해 펌웨어 이미지 명령을 갖는 펌웨어 이미지를 포함하는 비휘발성 메모리 장치를 액세스하는 단계를 포함하는 방법을 기술한다. 상기 주변 장치 제어기는 PCIe(Peripheral Component Interconnect express) 제어기 또는 XHCI(eXtensible Host Controller Interface) 제어기 중의 하나를 포함할 수 있다.
상기 펌웨어 명령은 예를 들어 메모리 판독, 메모리 기입, 메모리 소거 요청, 인증된 메모리 블록 액세스 커맨드, HMAC(Hash-based Message Authentication Code) 키의 업데이트, 단조 카운터의 값에 대한 요청 또는 단조 카운터의 업데이트에 대한 요청 중의 하나를 포함할 수 있다. 일부 실시예에서, 상기 비휘발성 메모리 장치는 PCMS 장치를 포함하고, 주변 장치 제어기는 호스트 제어기 외부의 PCMS 제어기를 통해 PCMS 장치를 액세스한다.
본 발명의 실시예는 주변 장치 제어기 및 호스트 제어기 로직을 포함하는 장치를 기술하고, 상기 제어기 로직은 펌웨어 이미지 명령을 실행하는 SPI(Serial Peripheral Interface) 플래시 장치의 액세스에 대한 요청을 수신하고 주변 장치 제어기에 수신된 요청을 통지한다. 주변 장치 제어기는 주변 장치 제어기로부터 수신된 요청의 통지를 수신하는 것에 응답하여 펌웨어 이미지를 포함하는 비휘발성 메모리 장치를 액세스한다. 일부 실시예에서, 상기 주변 장치 제어기는 PCIe(Peripheral Component Interconnect express) 제어기 또는 XHCI(eXtensible Host Controller Interface) 제어기 중의 하나를 포함한다.
상기 펌웨어 명령은 예를 들어 메모리 판독, 메모리 기입, 메모리 소거 요청, 인증된 메모리 블록 액세스 커맨드, HMAC(Hash-based Message Authentication Code) 키의 업데이트, 단조 카운터의 값에 대한 요청 또는 단조 카운터의 업데이트에 대한 요청 중의 하나를 포함할 수 있다. 일부 실시예에서, 상기 비휘발성 메모리 장치는 PCMS 장치를 포함하고, 주변 장치 제어기는 호스트 제어기 로직 외부의 PCMS 제어기를 통해 PCMS 장치를 액세스한다.
여기에 기재된 프로세스, 서버 또는 툴로서 위에서 참조된 다양한 컴포넌트는 기재된 기능을 수행하는 수단일 수 있다. 여기에 기재된 각각의 컴포넌트는 소프트웨어, 하드웨어 또는 그 조합을 포함한다. 각각의 및 모든 컴포넌트는 소프트웨어 모듈, 하드웨어 모듈, 특수목적 하드웨어(예를 들어, 애플리케이션 특정 하드웨어, ASIC, DSP 등), 임베딩된 제어기, 하드와이어드 회로(hardwired circuitry), 하드웨어 로직 등으로서 구현될 수 있다. 소프트웨어 콘텐츠(예를 들어, 데이터, 명령, 설정)는 실행될 수 있는 명령을 나타내는 콘텐츠를 제공하는 비일시적 유형 컴퓨터 또는 머신 판독가능 저장 매체를 포함하는 제조 물품을 통해 제공될 수 있다. 콘텐츠는 여기에 기재된 다양한 기능/동작을 수행하는 컴퓨터를 야기할 수 있다.
컴퓨터 판독가능 비일시적 저장 매체는 기록가능/기록 불가능 매체(예를 들어, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광 저장 매체, 플래시 메모리 장치 등) 등의 컴퓨터(예를 들어, 컴퓨팅 장치, 전자 시스템 등)에 의해 액세스가능한 형태로 정보를 제공(즉, 저장 및/또는 송신)하는 임의의 메커니즘을 포함한다. 콘텐츠는 직접 실행가능("오브젝트" 또는 "실행가능" 형태), 소스 코드 또는 차이 코드("델타" 또는 "패치" 코드)일 수 있다. 컴퓨터 판독가능 비일시적 저장 매체는 또한 콘텐츠가 다운로드될 수 있는 저장장치 또는 데이터베이스를 포함할 수 있다. 상기 컴퓨터 판독가능 매체는 또한 판매시 또는 배달시 콘텐츠가 저장된 장치 또는 제품을 포함할 수 있다. 따라서, 콘텐츠가 저장된 장치의 배달 또는 통신 매체를 통해 다운로드될 콘텐츠의 제공은 여기에 기재된 콘텐츠를 갖는 제조 물품을 제공하는 것으로 이해될 수 있다.

Claims (20)

  1. 안테나;
    상기 안테나에 결합되어 시스템에 의해 처리될 신호 데이터를 수신하는 무선 주파수 회로;
    펌웨어 이미지를 포함하는 비휘발성 메모리 장치;
    프로세서; 및
    호스트 제어기
    를 포함하고,
    상기 호스트 제어기는,
    주변 장치 제어기; 및
    펌웨어 명령을 실행하는 SPI(Serial Peripheral Interface) 플래시 장치를 액세스하라는 요청을 상기 프로세서로부터 수신하고 상기 수신된 요청을 상기 주변 장치 제어기에 통지하는 SPI 플래시 제어기
    를 포함하고,
    상기 호스트 제어기의 상기 주변 장치 제어기는 상기 주변 장치 제어기로부터 상기 수신된 요청의 통지를 수신한 것에 응답하여 상기 프로세서가 상기 펌웨어 명령을 실행하도록 상기 비휘발성 메모리 장치를 액세스하는 시스템.
  2. 제1항에 있어서, 상기 호스트 제어기의 상기 주변 장치 제어기는 PCIe(Peripheral Component Interconnect express) 제어기 또는 XHCI(eXtensible Host Controller Interface) 제어기 중의 하나를 포함하는 시스템.
  3. 제1항에 있어서, 상기 펌웨어 명령은 메모리 판독, 메모리 기입 또는 메모리 소거 요청 중의 하나를 포함하는 시스템.
  4. 제3항에 있어서, 상기 펌웨어 명령은 인증된 메모리 블록 액세스 커맨드를 포함하는 시스템.
  5. 제1항에 있어서, 상기 펌웨어 명령은 HMAC(Hash-based Message Authentication Code) 키의 업데이트를 포함하는 시스템.
  6. 제1항에 있어서, 상기 펌웨어 명령은 단조 카운터(monotonic counter)의 값에 대한 요청 또는 단조 카운터의 업데이트에 대한 요청을 포함하는 시스템.
  7. 제1항에 있어서, 상기 비휘발성 메모리 장치는 PCMS(Phase Change Memory and Switch) 장치를 포함하고, 상기 시스템은 상기 호스트 제어기의 상기 주변 장치 제어기 및 상기 PCMS 장치에 동작적으로 결합된 PCMS 제어기를 더 포함하는 시스템.
  8. 프로세서로부터 주변 장치 제어기로 요청을 재전송하는(redirecting) 단계 - 상기 프로세서로부터의 요청은 펌웨어 명령을 실행하는 SPI(Serial Peripheral Interface) 플래시 장치를 액세스하라는 요청을 포함함 -; 및
    상기 주변 장치 제어기를 통해 상기 펌웨어 명령을 갖는 펌웨어 이미지를 포함하는 비휘발성 메모리 장치를 액세스하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서, 상기 주변 장치 제어기는 PCIe(Peripheral Component Interconnect express) 제어기 또는 XHCI(eXtensible Host Controller Interface) 제어기 중의 하나를 포함하는 방법.
  10. 제8항에 있어서, 상기 펌웨어 명령은 메모리 판독, 메모리 기입 또는 메모리 소거 요청 중의 하나를 포함하는 방법.
  11. 제8항에 있어서, 상기 펌웨어 명령은 인증된 메모리 블록 액세스 커맨드를 포함하는 방법.
  12. 제8항에 있어서, 상기 펌웨어 명령은 HMAC(Hash-based Message Authentication Code) 키의 업데이트를 포함하는 방법.
  13. 제8항에 있어서, 상기 펌웨어 명령은 단조 카운터의 값에 대한 요청 또는 단조 카운터의 업데이트에 대한 요청을 포함하는 방법.
  14. 주변 장치 제어기; 및
    수신된 요청을 상기 주변 장치 제어기로 재전송하는 호스트 제어기 로직 - 상기 수신된 요청은 SPI(Serial Peripheral Interface) 플래시 장치를 액세스하여 펌웨어 명령을 검색하라는 요청을 포함함 -
    을 포함하고,
    상기 주변 장치 제어기는 상기 주변 장치 제어기로부터 상기 수신된 요청의 통지를 수신한 것에 응답하여 펌웨어 이미지 명령을 갖는 펌웨어 이미지를 포함하는 비휘발성 메모리 장치를 액세스하는 장치.
  15. 제14항에 있어서, 상기 주변 장치 제어기는 PCIe(Peripheral Component Interconnect express) 제어기 또는 XHCI(eXtensible Host Controller Interface) 제어기 중의 하나를 포함하는 장치.
  16. 제14항에 있어서, 상기 펌웨어 명령은 메모리 판독, 메모리 기입 또는 메모리 소거 요청 중의 하나를 포함하는 장치.
  17. 제16항에 있어서, 상기 펌웨어 명령은 인증된 메모리 블록 액세스 커맨드를 포함하는 장치.
  18. 제14항에 있어서, 상기 펌웨어 명령은 HMAC(Hash-based Message Authentication Code) 키의 업데이트를 포함하는 장치.
  19. 제14항에 있어서, 상기 펌웨어 명령은 단조 카운터의 값에 대한 요청 또는 단조 카운터의 업데이트에 대한 요청을 포함하는 장치.
  20. 제14항에 있어서, 상기 비휘발성 메모리 장치는 PCMS(Phase Change Memory and Switch) 장치를 포함하고, 상기 주변 장치 제어기는 상기 호스트 제어기 로직 외부의 PCMS 제어기를 통해 상기 PCMS 장치를 액세스하는 장치.
KR1020157003009A 2012-09-28 2013-06-24 비휘발성 메모리 장치를 이용한 대안적인 부트 경로 지원 KR101663072B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/631,548 US9152428B2 (en) 2012-09-28 2012-09-28 Alternative boot path support for utilizing non-volatile memory devices
US13/631,548 2012-09-28
PCT/US2013/047396 WO2014051770A1 (en) 2012-09-28 2013-06-24 Alternative boot path support for utilizing non-volatile memory devices

Publications (2)

Publication Number Publication Date
KR20150027828A true KR20150027828A (ko) 2015-03-12
KR101663072B1 KR101663072B1 (ko) 2016-10-06

Family

ID=50386397

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157003009A KR101663072B1 (ko) 2012-09-28 2013-06-24 비휘발성 메모리 장치를 이용한 대안적인 부트 경로 지원

Country Status (4)

Country Link
US (1) US9152428B2 (ko)
KR (1) KR101663072B1 (ko)
CN (1) CN104541280B (ko)
WO (1) WO2014051770A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10630570B2 (en) 2010-09-17 2020-04-21 Oracle International Corporation System and method for supporting well defined subnet topology in a middleware machine environment
US10063544B2 (en) 2011-06-03 2018-08-28 Oracle International Corporation System and method for supporting consistent handling of internal ID spaces for different partitions in an infiniband (IB) network
US8713649B2 (en) 2011-06-03 2014-04-29 Oracle International Corporation System and method for providing restrictions on the location of peer subnet manager (SM) instances in an infiniband (IB) network
US9264382B2 (en) 2012-05-11 2016-02-16 Oracle International Corporation System and method for routing traffic between distinct infiniband subnets based on fat-tree routing
US9665719B2 (en) * 2012-06-04 2017-05-30 Oracle International Corporation System and method for supporting host-based firmware upgrade of input/output (I/O) devices in a middleware machine environment
US9292664B2 (en) * 2013-03-01 2016-03-22 Lenovo (Singapore) Pte. Ltd. Key injection tool
US9263577B2 (en) * 2014-04-24 2016-02-16 Micron Technology, Inc. Ferroelectric field effect transistors, pluralities of ferroelectric field effect transistors arrayed in row lines and column lines, and methods of forming a plurality of ferroelectric field effect transistors
US10257192B2 (en) 2014-05-29 2019-04-09 Samsung Electronics Co., Ltd. Storage system and method for performing secure write protect thereof
US9159829B1 (en) 2014-10-07 2015-10-13 Micron Technology, Inc. Recessed transistors containing ferroelectric material
US9305929B1 (en) 2015-02-17 2016-04-05 Micron Technology, Inc. Memory cells
US10134982B2 (en) 2015-07-24 2018-11-20 Micron Technology, Inc. Array of cross point memory cells
FR3041806B1 (fr) * 2015-09-25 2017-10-20 Stmicroelectronics Rousset Dispositif de memoire non volatile, par exemple du type eeprom, ayant une capacite memoire importante, par exemple 16mbits
US11537757B2 (en) 2016-02-19 2022-12-27 Hewlett-Packard Development Company, L.P. Securely writing data to a secure data storage device during runtime
US10282189B2 (en) 2016-06-30 2019-05-07 Synaptics Incorporated Updating program code stored in an external non-volatile memory
KR20180019806A (ko) 2016-08-16 2018-02-27 삼성전자주식회사 종단 장치로부터 제공되는 부트 업 명령어에 기초하여 부팅 동작을 수행하도록 구성되는 전자 장치
US10078608B2 (en) * 2016-09-16 2018-09-18 Intel Corporation USB-C multiple connector support for host and device mode configurations
US10396145B2 (en) 2017-01-12 2019-08-27 Micron Technology, Inc. Memory cells comprising ferroelectric material and including current leakage paths having different total resistances
TWI644214B (zh) * 2017-05-12 2018-12-11 神雲科技股份有限公司 快速週邊組件互連介面卡的初始化方法
US11170834B2 (en) 2019-07-10 2021-11-09 Micron Technology, Inc. Memory cells and methods of forming a capacitor including current leakage paths having different total resistances
US11029868B1 (en) * 2020-01-29 2021-06-08 Dell Products L.P. Initialization code/data memory mapping system
TWI724930B (zh) * 2020-06-22 2021-04-11 華邦電子股份有限公司 記憶體裝置以及用於控制非揮發性記憶體的操作方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7908417B2 (en) * 2008-10-15 2011-03-15 Phison Electronics Corp. Motherboard system, storage device for booting up thereof and connector
US7984284B2 (en) * 2007-11-27 2011-07-19 Spansion Llc SPI auto-boot mode

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5912839A (en) 1998-06-23 1999-06-15 Energy Conversion Devices, Inc. Universal memory element and method of programming same
US7590918B2 (en) 2004-09-10 2009-09-15 Ovonyx, Inc. Using a phase change memory as a high volume memory
US7411757B2 (en) 2006-07-27 2008-08-12 Hitachi Global Storage Technologies Netherlands B.V. Disk drive with nonvolatile memory having multiple modes of operation
US20080270811A1 (en) 2007-04-26 2008-10-30 Super Talent Electronics Inc. Fast Suspend-Resume of Computer Motherboard Using Phase-Change Memory
US8646052B2 (en) 2008-03-31 2014-02-04 Intel Corporation Method and apparatus for providing a secure display window inside the primary display
US8300825B2 (en) 2008-06-30 2012-10-30 Intel Corporation Data encryption and/or decryption by integrated circuit
TWI379234B (en) 2008-12-09 2012-12-11 Phison Electronics Corp Motherboard, storage device and controller thereof and booting method
US8635398B2 (en) 2008-12-30 2014-01-21 Micron Technology, Inc. Execute-in-place mode configuration for serial non-volatile memory
US8451868B2 (en) 2009-04-15 2013-05-28 Ibiquity Digital Corporation Systems and methods for transmitting media content via digital radio broadcast transmission for synchronized rendering by a receiver
US8331857B2 (en) 2009-05-13 2012-12-11 Micron Technology, Inc. Wireless interface to program phase-change memories
US8250282B2 (en) 2009-05-14 2012-08-21 Micron Technology, Inc. PCM memories for storage bus interfaces
US8504759B2 (en) 2009-05-26 2013-08-06 Micron Technology, Inc. Method and devices for controlling power loss
US20100306453A1 (en) 2009-06-02 2010-12-02 Edward Doller Method for operating a portion of an executable program in an executable non-volatile memory
US9123409B2 (en) 2009-06-11 2015-09-01 Micron Technology, Inc. Memory device for a hierarchical memory architecture
CA2775769C (en) * 2009-10-07 2019-02-19 Ibiquity Digital Corporation Systems and methods for transmitting media content via digital radio broadcast transmission for synchronized rendering by a receiver
US8385100B2 (en) 2009-12-08 2013-02-26 Intel Corporation Energy-efficient set write of phase change memory with switch
US20120151223A1 (en) 2010-09-20 2012-06-14 Conde Marques Ricardo Nuno De Pinho Coelho Method for securing a computing device with a trusted platform module-tpm
US8838935B2 (en) 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
CN103843005B (zh) 2011-09-30 2017-03-22 英特尔公司 用于安全交易的安全显示器
WO2013095387A1 (en) 2011-12-20 2013-06-27 Intel Corporation Secure replay protected storage
US8782401B2 (en) 2012-09-26 2014-07-15 Intel Corporation Enhanced privacy ID based platform attestation
US9619628B2 (en) 2012-09-28 2017-04-11 Intel Corporation Secure system flash sharing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7984284B2 (en) * 2007-11-27 2011-07-19 Spansion Llc SPI auto-boot mode
US7908417B2 (en) * 2008-10-15 2011-03-15 Phison Electronics Corp. Motherboard system, storage device for booting up thereof and connector

Also Published As

Publication number Publication date
CN104541280B (zh) 2018-05-18
KR101663072B1 (ko) 2016-10-06
US9152428B2 (en) 2015-10-06
WO2014051770A1 (en) 2014-04-03
US20140095853A1 (en) 2014-04-03
CN104541280A (zh) 2015-04-22

Similar Documents

Publication Publication Date Title
KR101663072B1 (ko) 비휘발성 메모리 장치를 이용한 대안적인 부트 경로 지원
JP6333993B2 (ja) ハードウェアプラットフォームのためのファームウェアのインシステムプロビジョニング
US9405707B2 (en) Secure replay protected storage
EP2962241B1 (en) Continuation of trust for platform boot firmware
EP2388729A2 (en) Method and apparatus for secure scan of data storage device from remote server
US9411748B2 (en) Secure replay protected storage
JP6538610B2 (ja) 外部不揮発性メモリに間接アクセスするセキュリティデバイス
CN107567629B (zh) 在可信执行环境容器中的动态固件模块加载器
US10372629B2 (en) Control for authenticated accesses to a memory device
US10846438B2 (en) RPMC flash emulation
TW200813837A (en) A chipset-independent method for locally and remotely updating and configuring system BIOS
JP6303198B2 (ja) ポータブル通信デバイス上でオペレーティングシステムをリカバーするポータブル通信デバイス、方法、及びプログラム
US10346071B2 (en) Validating firmware for data storage devices
KR20080108526A (ko) 제1 및 제2 처리 유닛을 포함하는 처리 장치, 이를 부팅하는 방법 및 이 방법을 수행하게 하도록 적응되는 컴퓨터 실행가능 프로그램 코드 수단을 포함하는 컴퓨터 프로그램 제품
CN109634628B (zh) 在可信存储装置上生成校验和以加速认证
JP2017539036A (ja) プリブート更新メカニズムを用いてハードウェアサブスクリプションモデルを提供するための技術
US20150161399A1 (en) Storage module with authenticated storage access
US20230198775A1 (en) Memory device with secure boot updates and self-recovery
AU2015217272A1 (en) Enabling file oriented access on storage devices
KR102213665B1 (ko) 인증 프로그램을 갖는 메모리 카드, 그것을 포함하는 스토리지 시스템, 및 그것의 동작 방법
WO2018124894A1 (en) Embedded oem code for fault recovery
JP2017004200A (ja) Pxeプログラムに対応した無線lan機能を内蔵したタブレット端末

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