KR20210125477A - 가상 플래시 - Google Patents

가상 플래시 Download PDF

Info

Publication number
KR20210125477A
KR20210125477A KR1020217021421A KR20217021421A KR20210125477A KR 20210125477 A KR20210125477 A KR 20210125477A KR 1020217021421 A KR1020217021421 A KR 1020217021421A KR 20217021421 A KR20217021421 A KR 20217021421A KR 20210125477 A KR20210125477 A KR 20210125477A
Authority
KR
South Korea
Prior art keywords
flash
firmware
platform
virtual flash
virtual
Prior art date
Application number
KR1020217021421A
Other languages
English (en)
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 KR20210125477A publication Critical patent/KR20210125477A/ko

Links

Images

Classifications

    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Abstract

컴퓨팅을 위한 가상 플래시(104)의 제공과 연관된 방법, 장치 및 적어도 하나의 컴퓨터 판독가능 매체가 본 명세서에 제공된다. 컴퓨팅 플랫폼의 하나 이상의 플래시 디바이스(108)로부터의 하나 이상의 플랫폼 펌웨어 이미지에 대한 컴퓨팅 플랫폼의 하나 이상의 프로세서 코어(102)에 의한 액세스를 가능하게 하기 위해 협력하는 회로(112) 및 펌웨어(114)를 포함하는 가상 플래시(104)가 제공된다. 가능화는 대신에 컴퓨팅 플랫폼의 하나 이상의 보안 메모리 영역으로부터 하나 이상의 프로세서 코어(102)에 대한 하나 이상의 플랫폼 펌웨어 이미지의 리턴을 포함한다.

Description

가상 플래시
종래의 컴퓨팅 시스템에서, 펌웨어/BIOS 이미지는 보통 플래시 디바이스에 저장되는데, 컴퓨터 시스템의 호스트 프로세서는 컴퓨터 시스템의 플래시 디바이스로부터 펌웨어/BIOS 이미지를 취출(retrieve: 取出)한다. 최근 생겨난 컴퓨팅 시스템에서, 펌웨어/BIOS 이미지의 보안을 향상시키기 위한 요구가 있다.
실시예는 첨부 도면과 함께 다음의 상세한 설명에 의해 쉽게 이해될 것이다. 이 설명을 용이하게 하기 위해, 동일한 참조 번호는 동일한 구조적 요소를 나타낸다. 실시예는 첨부 도면에서 한정적인 의미가 아닌 일 예로서 도시된다.
도 1은 다양한 실시예에 따른, 본 발명의 교시와 통합된 컴퓨팅 플랫폼의 아키텍처의 개요를 도시한다.
도 2는 다양한 실시예에 따른, 가상 플래시의 예시적인 회로를 도시한다.
도 3은 다양한 실시예에 따른, 예시적인 가상 플래시 펌웨어를 도시한다.
도 4는 다양한 실시예에 따른, 예시적인 가상 플래시 프로세스를 도시한다.
도 5는 다양한 실시예에 따른, 예시적인 가상 플래시 초기화 프로세스를 도시한다.
도 6은 다양한 실시예에 따른, 예시적인 가상 플래시 동작 프로세스를 도시한다.
도 7은 다양한 실시예에 따른, 본 발명의 다양한 양상을 실행하는 데 사용하기에 적합한 예시적인 컴퓨팅 디바이스를 도시한다.
도 8은 다양한 실시예에 따른, 본 발명의 양상을 구현하기 위한 실행가능 명령어를 갖는 저장 매체를 도시한다.
배경기술 섹션에서 설명된 문제/과제를 해결하기 위해, 본 발명은 컴퓨팅 플랫폼의 호스트 프로세서가 모든 플랫폼 펌웨어/BIOS 이미지에 액세스하는 것을 용이하게 하는 가상 플래시를 컴퓨팅 플랫폼에 제공한다. 초기화 시에, 가상 플래시는 컴퓨팅 플랫폼의 다양한 플래시 디바이스로부터 플랫폼 펌웨어/BIOS 이미지를 복사하고, 플랫폼 펌웨어/BIOS 이미지를 컴퓨팅 플랫폼의 보안 메모리 영역에 저장한다. 컴퓨팅 플랫폼의 호스트 프로세서는 가상 플래시를 통해 플랫폼 펌웨어/BIOS 이미지에 액세스한다. 호스트 프로세서에 의하여 시도된 액세스에 응답하여, 가상 플래시는 보안 메모리 영역으로부터 관심 있는 플랫폼 펌웨어/BIOS 이미지를 리턴한다.
결과적으로, 컴퓨팅 플랫폼의 호스트 프로세서는 필요에 따라 플랫폼 펌웨어/BIOS 이미지로부터 분리된다. 또한, 본 발명은 데이터 센터 제품이 더 안전한 펌웨어 관리 아키텍처를 가질 수 있게 한다. 본 발명은 또한 컴퓨팅 플랫폼 상의 모든 펌웨어 엔티티를 관리하기 위해 데이터 센터 관리자에게 대역외(out-of-band: OOB) 액세스를 제공한다. 본 발명의 이들 및 다른 양상은 첨부 도면을 참조하여 아래에 더 설명될 것이다.
첨부 도면을 참조할 때, 서로 다른 도면에서 동일한 참조 번호가 사용되어 동일하거나 유사한 요소를 식별할 수 있다. 다음의 설명에서, 한정이 아닌 설명을 위해, 다양한 실시예의 다양한 양상의 완전한 이해를 제공하도록 특정 구조, 아키텍처, 인터페이스, 기법 등과 같은 특정 세부사항이 제시된다. 그러나, 다양한 실시예의 다양한 양상이 이들 특정 세부사항으로부터 벗어나는 다른 예에서 실시될 수 있다는 것이 본 발명의 이점을 갖는 당업자에게 명백할 것이다. 소정 경우에, 잘 알려진 디바이스, 회로, 및 방법의 설명은 불필요한 세부사항으로 다양한 실시예의 설명을 모호하게 하지 않도록 생략된다.
다양한 동작이, 차례로, 예시적인 실시예를 이해하는 데 가장 도움이 되는 방식으로, 다수의 개별 동작으로서 설명될 것이지만, 설명의 순서가 이들 동작이 반드시 순서 의존적임을 의미하는 것으로 해석되어서는 안 된다. 다시 말해서, 이들 동작은 제시된 순서대로 수행되지 않을 수 있다.
"다양한 실시예에서", "몇몇 실시예에서" 등의 문구는 반복적으로 사용된다. 문구는 일반적으로 동일한 실시예를 지칭하지는 않지만, 그럴 수도 있다. "포함하는", "갖는" 및 "포괄하는"이라는 용어는 문맥이 달리 지시하지 않는 한 동의어다. "A 및/또는 B"라는 문구는 (A), (B), 또는 (A 및 B)를 의미한다. "A/B" 및 "A 또는 B"라는 문구는 "A 및/또는 B"라는 문구와 유사하게 (A), (B), 또는 (A 및 B)를 의미한다. 본 발명의 목적으로, "A와 B 중 적어도 하나"라는 문구는 (A), (B), 또는 (A 및 B)를 의미한다. 설명은 "일 실시예에서", "실시예에서"," "몇몇 실시예에서", 및/또는 "다양한 실시예에서"라는 문구를 사용할 수 있으며, 이들은 각각 동일하거나 상이한 실시예 중 하나 이상을 지칭할 수 있다. 또한, 본 발명의 실시예에 대해 사용되는 "포함하는", "포괄하는", "갖는" 등의 용어는 동의어다.
예시적인 실시예는 순서도, 흐름도, 데이터 흐름도, 구조도, 또는 블록도로서 도시된 프로세스로서 설명될 수 있다. 순서도가 순차적인 프로세스로서 동작을 설명할 수 있지만, 동작 중 다수는 병렬로, 동시에 또는 일제히 수행될 수 있다. 또한, 동작의 순서는 재배열될 수 있다. 프로세스는 그 동작이 완료될 때 종료될 수 있지만, 도면(들)에 포함되지 않은 추가 단계를 가질 수도 있다. 프로세스는 방법, 함수, 절차, 서브루틴, 서브프로그램 등에 대응할 수 있다. 프로세스가 함수에 대응할 때, 그 종료는 호출 함수 및/또는 메인 함수로의 함수의 리턴에 대응할 수 있다.
예시적인 실시예는 전술한 회로 중 하나 이상에 의해 실행되는 프로그램 코드, 소프트웨어 모듈 및/또는 기능적 프로세스와 같은 컴퓨터 실행가능 명령어의 일반적인 맥락에서 설명될 수 있다. 프로그램 코드, 소프트웨어 모듈 및/또는 기능적 프로세스는 특정 작업을 수행하거나 특정 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함할 수 있다. 본 명세서에서 논의된 프로그램 코드, 소프트웨어 모듈 및/또는 기능적 프로세스는 기존의 통신 네트워크에서 기존의 하드웨어를 사용하여 구현될 수 있다. 예를 들어, 본 명세서에서 논의된 프로그램 코드, 소프트웨어 모듈 및/또는 기능적 프로세스는 기존의 네트워크 요소 또는 제어 노드에서 기존의 하드웨어를 사용하여 구현될 수 있다.
본 명세서에서 사용되는 바와 같이, 용어 "회로"는, 설명된 기능을 제공하도록 구성되는, 전자 회로, 로직 회로, 프로세서(공유, 전용, 또는 그룹) 및/또는 메모리(공유, 전용, 또는 그룹), 주문형 집적 회로(Application Specific Integrated Circuit: ASIC), 필드 프로그램가능 디바이스(field-programmable device: FPD)(예를 들어, FPGA, 프로그램가능 로직 디바이스(programmable logic device: PLD), 복합 PLD(complex PLD: CPLD), 고용량 PLD(high-capacity PLD: HCPLD), 구조화된 ASIC, 또는 프로그램가능 시스템 온 칩(SoC)), 디지털 신호 프로세서(digital signal processor: DSP) 등과 같은 하드웨어 컴포넌트를 지칭하거나, 이들의 일부이거나, 이들을 포함한다. 몇몇 실시예에서, 회로는 설명된 기능의 적어도 일부를 제공하기 위해 하나 이상의 소프트웨어 또는 펌웨어 프로그램을 실행할 수 있다.
본 명세서에서 사용되는 바와 같이, "프로세서 회로"라는 용어는 일련의 산술 또는 논리 연산을 순차적으로 및 자동으로 수행할 수 있고, 디지털 데이터를 기록, 저장 및/또는 전송할 수 있는 회로를 지칭하거나, 회로의 일부이거나, 또는 회로를 포함할 수 있다. 용어 "프로세서 회로"는 하나 이상의 애플리케이션 프로세서, 하나 이상의 기저대역 프로세서, 물리적 중앙 처리 장치(CPU), 싱글-코어 프로세서, 듀얼-코어 프로세서, 트리플-코어 프로세서, 쿼드-코어 프로세서 및/또는 컴퓨터 실행가능 명령어, 예컨대, 프로그램 코드, 소프트웨어 모듈 및/또는 기능적 프로세스를 실행하거나 동작시킬 수 있는 임의의 다른 디바이스를 지칭할 수 있다. 본 명세서에서 사용되는 바와 같이, "인터페이스 회로"라는 용어는 2개 이상의 컴포넌트 또는 디바이스 사이의 정보의 교환을 제공하는 회로를 지칭하거나, 회로의 일부이거나, 또는 회로를 포함할 수 있다. 용어 "인터페이스 회로"는 하나 이상의 하드웨어 인터페이스(예를 들어, 버스, 입출력(I/O) 인터페이스, 주변기기 컴포넌트 인터페이스, 네트워크 인터페이스 카드 등)를 지칭할 수 있다.
본 명세서에서 사용되는 바와 같이, "컴퓨팅 플랫폼"이라는 용어는 기계 판독가능 매체 상에 데이터를 기록/저장하고, 통신 네트워크 내의 하나 이상의 다른 디바이스로부터 데이터를 송신 및 수신하도록 구비된, 일련의 산술 또는 논리 연산을 순차적으로 및 자동으로 수행할 수 있는 임의의 물리적 하드웨어 디바이스를 설명할 수 있다. 컴퓨팅 플랫폼은 컴퓨터, 컴퓨팅 디바이스 등과 동의어로 간주될 수 있고, 이후 때때로 컴퓨터, 컴퓨팅 디바이스 등으로 지칭될 수 있다. 용어 "컴퓨터 시스템"은 임의의 타입의 상호접속된 전자 디바이스, 컴퓨터 디바이스, 또는 이들의 컴포넌트를 포함할 수 있다. 추가적으로, "컴퓨터 시스템" 및/또는 "시스템"이라는 용어는 서로 통신가능하게 연결되는 컴퓨터의 다양한 컴포넌트를 지칭할 수 있다. 또한, 용어 "컴퓨터 시스템" 및/또는 "시스템"은 서로 통신 가능하게 연결되고 컴퓨팅 및/또는 네트워킹 자원을 공유하도록 구성된 복수의 컴퓨터 디바이스 및/또는 복수의 컴퓨팅 시스템을 지칭할 수 있다. 본 명세서에서 사용되는 바와 같이, "사용자 장비" 또는 "UE"라는 용어는 무선 통신 능력을 가진 컴퓨터 디바이스와 같은 디바이스를 지칭할 수 있고, 통신 네트워크에서 네트워크 자원의 원격 사용자를 설명할 수 있다. "사용자 장비" 또는 "UE"라는 용어는 클라이언트, 모바일, 이동 디바이스, 이동 단말, 사용자 단말, 이동 유닛, 이동국, 이동 사용자, 가입자, 사용자, 원격국, 액세스 에이전트, 사용자 에이전트, 수신기, 무선 장비, 재구성가능 무선 장비, 재구성가능 이동 디바이스 등과 동의어로 간주될 수 있고, 이후 종종 이들로서 지칭될 수 있다.
"컴퓨터 디바이스", "컴퓨터 시스템", "UE" 등의 예는, 셀룰러 폰 또는 스마트 폰, 피처 폰, 태블릿 개인용 컴퓨터, 착용형 컴퓨팅 디바이스, 자율 센서, 랩탑 컴퓨터, 데스크탑 개인용 컴퓨터, 비디오 게임 콘솔, 디지털 미디어 플레이어, 휴대형 메시징 디바이스, 개인용 데이터 어시스턴트, 전자 북 리더, 증강 현실 디바이스, 서버 컴퓨터 디바이스(예를 들어, 독립형, 랙-장착형, 블레이드 등), 클라우드 컴퓨팅 서비스/시스템, 네트워크 요소, 차량용 인포테인먼트(in-vehicle infotainment: IVI), 차량내 엔터테인먼트(in-car entertainment: ICE) 디바이스, 인스트루먼트 클러스터(Instrument Cluster: IC), 헤드-업 디스플레이(head-up display: HUD) 디바이스, 온보드 진단(onboard diagnostic: OBD) 디바이스, 대시탑 이동 장비(dashtop mobile equipment: DME), 이동 데이터 단말(mobile data terminal: MDT), 전자 엔진 관리 시스템(Electronic Engine Management System: EEMS), 전자/엔진 제어 유닛(electronic/engine control unit: ECU)과, 전자/엔진 제어 모듈(electron/engine control module: ECM), 임베디드 시스템, 마이크로제어기, 제어 모듈, 엔진 관리 시스템(engine management system: EMS), 네트워킹된 또는 "스마트" 기기, 머신-타입 통신(machine-type communication: MTC) 디바이스, 사물지능통신(machine-to-machine: M2M), 사물인터넷(Internet of Things: IoT) 디바이스 및/또는 임의의 다른 유사한 전자 디바이스를 포함할 수 있다. 또한, "차량 임베디드 컴퓨터 디바이스"라는 용어는 차량에 물리적으로 장착되거나, 내재되거나, 또는 내장되는 임의의 컴퓨터 디바이스 및/또는 컴퓨터 시스템을 지칭할 수 있다.
컴퓨팅 시스템 또는 플랫폼은 컴퓨터 버스에 연결된 다양한 디바이스를 광범위하게 사용할 수 있다. 컴퓨터 버스는 통신 프로토콜을 포함하는 관련 하드웨어 컴포넌트(와이어, 광섬유 등) 및 소프트웨어를 포함할 수 있다. PCI(peripheral component interconnect) 버스 또는 PCI 익스프레스(PCIe, PCI-E)는 PCI 버스 또는 PCIe 버스에 연결된 디바이스의 구성과 관련된 다양한 동작을 수행하도록 시스템 소프트웨어를 위한 메커니즘 또는 시스템 드라이버를 제공하는 사양에 기초한 컴퓨터 버스일 수 있다. 컴퓨터 버스에 연결된 디바이스 또는 컴포넌트는 기능부로도 지칭될 수 있다. PCIe는 소비자, 서버 및 산업 응용례에서, (마더보드-장착 주변기기를 연결하기 위한) 마더보드-레벨 상호접속부, 수동 백플레인 상호접속부로서, 그리고 애드-인 보드를 위한 확장 카드 인터페이스로서 동작할 수 있다. PCIe 디바이스는 상호접속부 또는 링크로 지칭되는 논리적 접속부를 통해 통신한다. 링크는 2개의 PCIe 포트 사이의 점대점 통신 채널로서 PCIe 포트 둘 모두가 통상의 PCI 요청, 예를 들어, 구성, 입출력(I/O), 또는 메모리 판독/기록, 및 인터럽트를 전송 및 수신할 수 있게 한다. 물리적 레벨에서, 링크는 하나 이상의 레인으로 구성될 수 있다. 802.11 Wi-Fi 카드와 같은 저속 주변기기는 단일 레인(×1) 링크를 사용하는 반면, 그래픽 어댑터는 전형적으로 훨씬 더 넓고 빠른 16-레인 링크를 사용한다.
이제 도 1을 참조하면, 다양한 실시예에 따른, 본 발명의 교시와 통합된 컴퓨팅 플랫폼의 아키텍처의 개요가 도시된다. 도시된 바와 같이, 컴퓨팅 플랫폼(100)은 서로 연결된 프로세서 코어(102), 본 발명의 가상 플래시(104), 동적 랜덤 액세스 메모리(DRAM)(106) 및 플래시 디바이스(108)를 포함한다. 가상 플래시(104)는 회로(112) 및 상보형 펌웨어(114)를 포함한다. 회로(112)와 상보형 펌웨어(114)는 협력하여 가상 플래시(104)의 기능을 구현한다. 프로세서 코어(102)는, 가상 플래시(104)를 사용하여 관심 있는 펌웨어/BIOS 이미지를 취출하는 것을 제외하고는, 당업계에 공지된 다수의 프로세서 코어 중 어느 하나일 수 있다. 가상 플래시(104)는, 전술한 바와 같이, 컴퓨팅 플랫폼의 모든 플래시 디바이스 내의 모든 플랫폼 펌웨어/BIOS 이미지에 대한 프로세서 코어(102)의 액세스를 용이하게 한다. 다시 말해서, 가상 플래시(104)는 프로세서 코어(102)에 대한 플래시 디바이스로서 작동하여, 프로세서 코어(120)에 대한 컴퓨팅 플랫폼의 모든 플래시 디바이스를 추상화한다. 초기화시에, 가상 플래시(104)는 플래시 디바이스(108)로부터 플랫폼 펌웨어/BIOS 이미지를 복사하고, 플랫폼 펌웨어/BIOS 이미지를 컴퓨팅 플랫폼(100)의 보안 메모리 영역인 DRAM(106)에 저장한다(또는 복사 및 저장 동작이 예를 들어, 운영 체제(OS)의 서비스에 의해 수행되게 한다). 다양한 실시예에서, 가상 플래시 펌웨어(114)는 이들 이미지의 사전정의된 보안 구성에 따라 DRAM(106)에 저장된 펌웨어/BIOS 이미지에 대한 프로세서 코어(102)의 액세스를 제어하고 제한한다. 동작 동안, 프로세서 코어(102)는 가상 플래시(104)를 통해 관심 있는 플랫폼 펌웨어/BIOS 이미지에 액세스한다. 프로세서 코어(102)에 의한 시도된 액세스에 응답하여, 가상 플래시(104)는 대신에 보안 메모리 영역인 DRAM(106)으로부터 관심 있는 플랫폼 펌웨어/BIOS 이미지를 리턴한다. 다양한 실시예에서, 프로세서 코어(102)는 시스템 온 칩(SoC) 또는 컴퓨팅 플랫폼(100)의 컴퓨팅 요소(예를 들어, 주변기기 제어기 허브(PCH))의 일부일 수 있다. 이하, 프로세서 코어(102)는 간단히 코어(102)로 지칭될 수 있다.
다양한 실시예에서, 전술한 바와 같이, 가상 플래시(104)는 가상 플래시 펌웨어(114)의 세트와 보완된 회로(112)의 조합으로서 구현된다. 다양한 실시예에서, 회로(112)는 프레임 버퍼, 커맨드 포워드 회로, 커맨드 변환 회로, 및 다수의 인터페이스 회로를 포함하는 동기 회로로서 구현된다. 다양한 실시예에서, 동기 회로는 필드 프로그램가능 게이트 어레이(Field Programming Gate Array: FPGA)를 사용하여 레지스터 전달 로직(Register Transfer Logic: RTL)으로 구현된다. 다양한 실시예에서, 상보형 가상 플래시 펌웨어(114)는 초기화, 복호화 및 동기화 기능을 포함한다. 다양한 실시예에서, 코어(102) 및 가상 플래시(104)는 직렬 주변기기 인터페이스(SPI) 프로토콜에 따라, 특히, SPI 마스터로서 동작하는 코어(102)와 통신한다. 이들 및 다른 양상은 도 2 내지 도 4를 참조하여 아래에서 추가로 설명될 것이다.
DRAM(106)은, 플래시/BIOS 이미지를 저장하는 보안 메모리 영역으로서의 사용을 제외하고는, 가상 플래시(104)가 코어(102)의 액세스를 서비스하는 것을 허용하기 위해, 당업계에 공지된 임의의 동적 랜덤 액세스 메모리일 수 있다. 다양한 실시예에서, DRAM(106)은 더블 데이터 레이트 동기 DRAM(double data rate synchronous DRAM: DDRAM), 정적 랜덤 액세스 메모리(static random access memory: SRAM), 온-칩 임베디드 메모리 또는 펌웨어/BIOS 이미지를 저장할 수 있는 임의의 다른 저지연 고용량 메모리일 수 있다. 유사하게, 가상 플래시(104)가 플래시/BIOS 이미지를 복사하고 DRAM(106)에 저장하여 프로세서 코어(102)에 서비스하기 위한 플래시/BIOS 이미지를 제공하는 데 사용하는 것을 제외하고는, 플래시 디바이스(108)는 고체 상태 드라이브(solid state drive: SSD) 저장장치, 임베디드 멀티-미디어 제어기(embedded multi-media controller: eMMC) 및 NAND를 포함하지만 이에 한정되지 않는 당업계에 공지된 다수의 플래시 디바이스 중 어느 하나일 수 있다.
코어(102) 중 적어도 하나가 프로세서 코어인 다양한 실시예에서, 프로세서 코어(102) 및 가상 플래시(104)의 회로(112)는 동일한 집적 회로 패키지, 예를 들어, 시스템 온 칩(SoC)에 함께 배치될 수 있다. 예를 들어, 가상 플래시(104)의 회로(112)는 SoC의 FPGA로 구현되며, 가상 플래시 펌웨어(114)가 SoC의 하드 프로세서 시스템(hard processor system: HPS)으로 구현(이에 의해 실행)된다. 다양한 실시예에서, 가상 플래시(104)는 플랫폼 신뢰 루트(Platform Root of Trust: PRoT)에 대한 가상 빌딩 블록으로서 기능할 수 있다. 추가적으로, 가상 플래시(104)를 더 설명하기 전에, 이해의 편의를 위해, 가상 플래시(104)는 임의의 중간 요소를 나타내지 않으면서 DRAM(106) 및 플래시 디바이스(108)에 연결하는 것으로 도시되지만, 다양한 실시예에서, 가상 플래시(104)는 DRAM(106)에 직접 또는 간접적으로 연결될 수 있다. 예를 들어, 가상 플래시(104)는 컴퓨팅 플랫폼(100)의 DRAM(106)의 DRAM 제어기를 통해 DRAM(106)에 연결될 수 있다.
이제 도 2를 참조하면, 다양한 실시예에 따른 가상 플래시의 예시적인 동기 회로가 도시된다. 도시된 바와 같이, 도 1의 가상 플래시(104)의 일부일 수 있는, 가상 플래시(200)의 예시적인 동기 회로는 서로 연결된 프레임 버퍼(212), 커맨드 포워드 회로(214), 커맨드 변환 회로(216), 전송 버퍼(218) 및 다수의 인터페이스 회로(202-206)를 포함한다. 다양한 실시예에서, 인터페이스 회로(202 내지 206)는 코어 인터페이스 회로(202), 펌웨어 인터페이스(204) 및 DRAM 인터페이스(206)를 포함한다. 또한, 도시된 실시예의 경우, 가상 플래시(200)의 예시적인 회로는 다수의 레지스터(220)(로컬 레지스터로도 지칭됨)를 포함한다.
앞서 설명된 바와 같이, 다양한 실시예에서, 가상 플래시(200)의 동기 회로는 FPGA를 사용하여 RTL로 구현된다. 다양한 실시예에서, 가상 플래시(200)의 요소(202-220)는 SPI 프로토콜에 따라 액세스 코어와의 통신을 지원하도록 구성되고, 액세스 코어는 가상 플래시(200)에 대한 SPI 마스터로서 동작한다. 이들 실시예의 경우, 가상 플래시(200)의 요소(202-220)는 협력하여 다양한 SPI 커맨드에 따라 외부 DRAM에 데이터를 판독하고 기록한다. SPI 판독 커맨드(펌웨어 인터페이스(204)를 통해 수신됨)의 경우, 가상 플래시(200)는 외부 DRAM으로부터 (DRAM 인터페이스(206)를 통해) 데이터를 판독하고, 이들을 코어 인터페이스(202)를 통해, 예를 들어, 컴퓨팅 플랫폼(도시되지 않음)의 코어에 리턴한다. 이들 판독 트랜잭션은 프로세서 코어 또는 플래시 디바이스에 영향을 주지 않는다. (펌웨어 인터페이스(204)를 통해 수신된) SPI 기록 데이터 커맨드에 대해, 가상 플래시(200)는 (DRAM 인터페이스(206)를 통해) 외부 DRAM에 데이터를 기록하고, 로컬 레지스터(220)를 업데이트한다.
다양한 실시예에서, 가상 플래시(200)는 컴퓨팅 플랫폼의 인터럽트 서비스를 사용하여 기록된 데이터의 DRAM 시작 어드레스 및 길이에 대해 펌웨어(114)에 통지한다. 가상 플래시(200)는 펌웨어(114)에 통지하기 위해 인터럽트를 트리거할 때 비지(busy) 상태를 설정하고, 프로세서 코어가 인터럽트를 소거할 때 비지 상태를 소거할 수 있다. 다양한 실시예에서, 가상 플래시(200)는 데이터를 국부적으로 유지한다.
다양한 실시예에서, 코어 인터페이스(202)는 다양한 코어, 예를 들어, 호스트 CPU, PCH, 네트워크 인터페이스(NIC) 등과 각각 대응하는 코어의 클록 레이트로인터페이스하도록 구성된다. 프레임 버퍼(212)는 코어 인터페이스(202)를 통해 다양한 코어로부터 코어의 클록 레이트로 데이터/커맨드를 수신하고, 수신된 데이터/커맨드를 버퍼링하도록 구성된다. 다양한 SPI 실시예에서, 프레임 버퍼(212)는 물리 계층에서 상이한 수의 데이터 라인을 제공하는, 단일 동작 모드 및 확장된 단일 동작 모드를 포함하는 복수의 동작 모드를 지원한다. 추가적으로, 프레임 버퍼(212)는 SPI 레지스터 판독 커맨드 및 레지스터 기록 커맨드 둘 다에 응답하도록 구성된다. 다양한 실시예에서, 프레임 버퍼(212)는 SPI 판독 커맨드에 대한 프리-페치를 이용한다. 또한, SPI 고속 판독 커맨드에 대한 프리-페치에 더미 사이클을 추가하도록 구성된다. 몇몇 실시예에서, 프리-페치에 대해, 프레임 버퍼(212)는 벌크로 512 바이트를 요청한다. 다양한 실시예에서, 프레임 버퍼(212)는 오버 샘플링을 통해 SPI 클록 레이트로부터 로컬 클록 레이트로 전이한다. 또한, 프레임 버퍼(212)는 입력이 1, 2 또는 4 비트인지 여부에 관계없이 8 비트의 비트 폭으로 전이한다.
프레임 버퍼(212)에 연결된 커맨드 포워드 회로(214)는 로컬 클록 레이트로 버퍼링된 데이터/커맨드를 취출하고, 취출된 데이터/커맨드를 선택적 변환을 위해 특히, 커맨드 변환 회로(216)에 로컬 클록 레이트로 포워딩하도록 구성된다.
다양한 실시예에서, 커맨드 포워드 회로(214)에 연결된 커맨드 변환 회로(216)는 로컬 클록 레이트로 포워딩된 커맨드를 수신하고, 포워딩된 커맨드를 선택적으로 변환하며, 변환된 커맨드를 로컬 클록 레이트로 펌웨어(114) 또는 보안 메모리 영역의 메모리 제어기에 포워딩하도록 구성된다. 전자의 경우에, 펌웨어(114)로의 변환된 또는 "그대로의" 커맨드의 포워딩은 펌웨어와 인터페이싱하도록 구성된 펌웨어 인터페이스(204)를 통한다. 후자의 경우에, DRAM으로의 변환된 또는 "그대로의" 커맨드의 포워딩은 예를 들어, 보안 메모리 영역의 메모리 제어기와 인터페이싱하도록 구성된 DRAM 인터페이스(206)를 통한다.
다양한 실시예에서, 커맨드 변환 회로(216)는 모든 SPI 레지스터 판독 커맨드를 무시한다. 모든 SPI PROGRAM/ERASE/비휘발성 WRITE 커맨드는 프로세서 코어 인터페이스(202)를 통해 프로세서 코어에 "그대로" 포워딩된다. SPI PROGRAM 커맨드는 8 비트 포맷으로부터 128 비트로 변환되고 DRAM 인터페이스(206)를 통해 DRAM 으로 포워딩된다. 모든 SPI ERASE 커맨드는 메모리 기록 커맨드로 변환되고 DRAM 인터페이스(206)를 통해 DRAM으로 포워딩된다. 모든 SPI READ 커맨드는 8 비트로부터 128 비트로 변환되고 DRAM 인터페이스(206)를 통해 DRAM 으로 포워딩된다.
다양한 실시예에서, 전송 버퍼(218)는 로컬 클록 레이트로 DRAM 인터페이스(206)를 통해 DRAM으로부터 데이터/커맨드를 수신하고, 수신된 데이터/커맨드를 버퍼링하도록 구성된다. 전송 버퍼(218)는 코어의 클록 레이트로 코어 인터페이스(202)를 통해 코어에 대한 버퍼링된 데이터/커맨드를 출력하도록 또한 구성된다. 다양한 실시예에서, 전송 버퍼(218)는 외부 DRAM의 메모리 제어기로부터 대기 요청을 수용하는 데 선입 선출(First-in First-Out: FIFO) 배열을 사용한다. 다양한 실시예에서, 전송 버퍼(218)는 로컬 클록 레이트로 128 비트의 입력 데이터 폭 및 SPI 클록 레이트로 8 비트의 출력 데이터 폭을 지원한다. 다양한 실시예에서, 전송 버퍼(218)는 랜덤 액세스 메모리(RAM)를 사용하여 구현되고, SPI 어드레스 바이트는 판독 어드레스로서 기능한다.
다양한 실시예에서, 펌웨어 인터페이스(204)는 SPI PROGRAM/ERASE/비휘발성 WRITE 커맨드/어드레스/길이 커맨드의 수신에 응답하여 펌웨어(114)에 인터럽트를 통지하도록 구성된다. 추가적으로, 프로세서 코어 인터페이스(202)는 SPI 비휘발성 기록 커맨드의 수신에 응답하여 프로세서 코어로부터 비휘발성 사전 설정을 업데이트하도록 구성된다. 또한, 펌웨어 인터페이스(204)는 SPI 기록 커맨드의 수신에 응답하여 로컬 레지스터(220)를 업데이트하도록 구성된다. 또한, 프로세서 코어 인터페이스(202)는 로컬 가상 레지스터를 생성하고 커맨드 포워드 회로(214)로 전달하며, 프로세서 코어로부터 ID/파라미터/잠금 레지스터 정보를 수신하도록 구성된다.
다양한 실시예에서, 레지스터(220)는 가상 플래시 구성 파라미터 및/또는 동작/트랜잭션 정보를 저장하도록 구성된다. 다양한 실시예에서, 레지스터(220)는 플래시 디바이스(108)에 의해 노출된 레지스터 세트와 유사한, 상태 및/또는 플래그 레지스터를 포함할 수 있다. 이들 레지스터(220)는 코어 인터페이스(202)를 통해 다양한 코어에 의해 액세스 가능하다.
이제 도 3을 참조하면, 다양한 실시예에 따른 예시적인 가상 플래시 펌웨어가 도시된다. 도시된 바와 같이, 도 1의 가상 플래시 펌웨어(114)일 수 있는 가상 플래시 펌웨어(300)는 가상 플래시 파라미터(302)의 세트, 복호화 모듈(304) 및 플래시 이미지 동기화 모듈(306)을 포함한다. 가상 플래시 파라미터(302)는 초기화 시간에 가상 플래시를 구성하는 데 사용되어, 가상 플래시의 특정 인스턴스화를 위한 구성을 설정한다. 다양한 실시예에서, 가상 플래시 파라미터(302)는 특정 SPI 구현을 지원하도록 가상 플래시를 구성한다. 가상 플래시 파라미터(302)의 예는 가상 플래시 ID, "판독 직렬 플래시 발견 파라미터" 커맨드를 지원하기 위한 가상 플래시 파라미터, 비휘발성 구성, 펌웨어/BIOS 이미지가 암호화되는지 여부 등을 포함할 수 있지만, 이에 제한되지 않는다. 다양한 실시예에서, 가상 플래시 파라미터는 코어의 액세스 허가, 즉, 판독-전용, 판독-기록 또는 액세스 없음을 포함하는 이미지의 보안 구성도 제공한다. 다양한 실시예에서, 가상 플래시 파라미터(302)는 전력 온 사이클당 한번만 초기화될 필요가 있다.
예시된 실시예의 경우, 가상 플래시 파라미터(302)는 컴퓨팅 플랫폼의 OS의 커널(310)의 초기화 모듈(312)에 의해 취출된다. 초기화 모듈(312)은, 차례로, 가상 플래시 파라미터(302)를 사용하여 도 1의 가상 플래시(104) 또는 도 2의 가상 플래시(200)일 수 있는 가상 플래시(322)를 구성한다. 다른 실시예에서, 초기화 모듈(312)을 커널(310)의 일부로서 배치하는 대신에, 초기화 모듈(312)은 가상 플래시 파라미터(302), 복호화 모듈(304) 및/또는 플래시 이미지 동기화 모듈(306)과 함께 패키징될 수 있다.
다양한 실시예에서, 다양한 플래시 디바이스에 저장된 플랫폼 펌웨어/BIOS 이미지는 암호화될 수 있다. 이들 실시예의 경우, 복호화 모듈(304)은 플래시/BIOS 이미지를 초기화 시간에 수신할 때, 플래시/BIOS 이미지를 컴퓨팅 플랫폼의 보안 메모리 영역에 저장하기 전에 복호화하도록 구성된다. 다양한 실시예에서, 복호화(304)는 커널(310)의 메모리 기술 디바이스(memory technology device: MTD) 드라이버(316)를 통해 플래시 디바이스(326)로부터 암호화된 펌웨어/BIOS 이미지를 취출할 수 있다. 전술한 바와 같이, 다양한 실시예에서, 플래시 디바이스(326)는 가상 플래시 펌웨어, 즉, SPI 플래시, eMMC, SSD 및 NAND에 의해 액세스 가능한 임의의 비휘발성 매체일 수 있다. 다양한 실시예에서, 복호화 모듈(304)은 데이터 암호화 표준(Data Encryption Standard: DES), 어드밴스드 암호 표준(Advanced Encryption Standard: AES), 국제 데이터 암호화 알고리즘(International Data Encryption Algorithm: IDEA), 메시지 다이제스트 알고리즘(MD5), 보안 해시 알고리즘(Secure Hash Algorithm: SHA) 등을 포함하지만 이에 제한되지 않는 복수의 암호화 프로토콜의 복호화를 지원하도록 구성될 수 있다. 다양한 실시예에서, 복호화 시에, 복호화 모듈(304)은 복호화된 펌웨어/BIOS 이미지를 커널(310)의 DRAM 드라이버(314)에 제공하여 복호화된 펌웨어/BIOS 이미지를 컴퓨팅 플랫폼의 보안 메모리 영역에 기록한다. 다양한 실시예에서, 보안 메모리 영역은 DDRAM일 수 있고, DRAM 드라이버(314)는 DDRAM 드라이버일 수 있다.
다양한 실시예에서, 플래시 이미지 동기화 모듈(306)은 보안 메모리 영역에 저장되고 유지된 플래시/BIOS 이미지의 사본이, 예를 들어, 가상 플래시 펌웨어에 의해 변경되었을 때, 플래시 드라이브에 저장된 플래시/BIOS 이미지의 공칭 사본 및 프로세서 코어에 제공된 보안 메모리 영역에 저장된 플래시/BIOS 이미지의 동작 사본이 동기되어 있는 것, 즉, 계속 동일한 것을 보장하도록 플래시 디바이스 내의 플래시/BIOS 이미지를 업데이트하도록 구성된다.
다양한 실시예에서, 플래시 이미지 동기화 모듈(306)은 커널(310)의 MTD 드라이버(316)에 업데이트를 제공하도록 구성되고, 이는 차례로 플래시 디바이스(326) 내의 플래시/BIOS 이미지를 그에 따라 업데이트한다. 다양한 실시예에서, 플래시 이미지 동기화 모듈(306)은 프로세서 코어가 시스템에 셧다운하도록 알리는 트리거 신호 또는 애플리케이션 프로그래밍 인터페이스(API) 통지를 수신하는 것에 응답하여 동기화를 수행한다. 이에 응답하여, 플래시 이미지 동기화 모듈(306)은 MTD 드라이버(316)를 통해 다음 데이터를 플래시 드라이브에 동기화하고, 비휘발성 파라미터를 백엔드 대용량 저장장치에 동기화한다. 동기화는 컴퓨팅 플랫폼의 DC 전력이 오프되자마자 수행될 수 있다. 몇몇 실시예에서, 동기화 API 통지는 BIOS/ME/OOB 관리(ME = 관리성 엔진)에 의해 호출될 수 있다. 다른 실시예에서, 동기화 신호는 컴퓨팅 플랫폼의 메인 보드에 의해 제공될 수 있다.
이제 도 4를 참조하면, 다양한 실시예에 따른 예시적인 가상 플래시 프로세스가 도시된다. 도시된 바와 같이, 가상 플래시 프로세스(400)는 블록(402-408)에서 수행되는 동작을 포함한다. 프로세스(400)는 예를 들어, 도 1의 가상 플래시(104)에 의해 수행될 수 있다. 다른 실시예에서, 프로세스(400)는 더 많거나 더 적은 동작을 포함할 수 있거나, 동작들 중 일부는 상이한 순서로 수행될 수 있다.
프로세스(400)는 블록(402)에서 시작한다. 블록(402)에서, 가상 플래시가 초기화된다. 가상 플래시를 초기화하는 동작은 도 5를 참조하여 후술될 것이다.
다음으로, 블록(404)에서, 초기화 시에, 가상 플래시는 프로세서 코어들을 펌웨어/BIOS 이미지에 대한 그들의 요구에 관하여 작동 및 서비스하도록 진행한다. 프로세서 코어를 펌웨어/BIOS 이미지에 대한 그 요구에 관하여 서비스하는 동작은 도 6을 참조하여 후술될 것이다.
블록(406)에서, 보안 메모리 영역에 저장되고 유지되는 펌웨어/BIOS 이미지 중 임의의 것이 업데이트되었는지 판정된다. 다양한 실시예에서, 판정은 주기적으로 실시간으로 수행될 수 있다. 다른 실시예에서, 판정은 컴퓨팅 플랫폼의 전력 다운 동안 수행될 수 있다.
판정이 주기적으로 수행되고, 판정의 결과가 보안 메모리 영역에 저장되고 유지되는 펌웨어/BIOS 이미지 중 어느 것도 변경되지 않았다는 것을 나타내면, 프로세스(400)는 블록(404)으로 리턴하고, 전술한 바와 같이 그로부터 계속된다. 판정이 전력 다운에 대해서만 수행되는 다른 실시예에서, 판정의 결과가 보안 메모리 영역에 저장되고 유지되는 펌웨어/BIOS 이미지 중 어느 것도 변경되지 않았음을 나타내면, 프로세스(400)는 블록(410)으로 진행하여 전력 다운을 계속할 수 있다.
그러나, 판정의 결과가 보안 메모리 영역에 저장되고 유지되는 펌웨어/BIOS 이미지 중 적어도 하나가 변경되었음을 나타내면, 프로세스(400)는 블록(408)으로 계속되어 보안 메모리 영역으로부터의 업데이트된 펌웨어/BIOS 이미지를 플래시 디바이스에 저장한다. 보안 메모리 영역으로부터의 업데이트된 펌웨어/BIOS 이미지를 플래시 디바이스에 저장할 때, 프로세스(400)는 블록(410)으로 진행하고, 전력 다운을 계속한다.
이제 도 5를 참조하면, 다양한 실시예에 따른 예시적인 가상 플래시 초기화 프로세스가 도시된다. 도시된 바와 같이, 가상 플래시 초기화 프로세스(500)는 블록(502-508)에서 수행되는 동작을 포함한다. 프로세스(500)는 예를 들어, 도 1의 가상 플래시(104) 및/또는 도 3의 커널(310)의 초기화 모듈(312)에 의해 수행될 수 있다. 다른 실시예에서, 프로세스(500)는 더 많거나 더 적은 동작을 포함할 수 있거나, 동작들 중 일부는 상이한 순서로 수행될 수 있다.
프로세스(500)는 블록(502)에서 시작한다. 블록(502)에서, 가상 플래시 파라미터의 세트가 수신된다. 다음으로, 블록(504)에서, 가상 플래시는 수신된 가상 플래시 파라미터에 따라 동작하도록 구성된다.
다음으로, 블록(506)에서, 펌웨어/BIOS 이미지는 컴퓨팅 플랫폼의 다양한 플래시 디바이스로부터 취출된다.
블록(508)에서, 취출된 펌웨어/BIOS 이미지는 필요하다면 복호화되고, 이어서 컴퓨팅 플랫폼의 보안 메모리 영역에 저장된다.
이제 도 6을 참조하면, 다양한 실시예에 따른 예시적인 가상 플래시 동작 프로세스가 도시된다. 도시된 바와 같이, 가상 플래시 동작 프로세스(600)는 블록(602-604)에서 수행되는 동작을 포함한다. 프로세스(600)는 예를 들어, 도 1의 가상 플래시(104)에 의해 수행될 수 있다. 다른 실시예에서, 프로세스(600)는 더 많거나 더 적은 동작을 포함할 수 있거나, 동작들 중 일부는 상이한 순서로 수행될 수 있다.
프로세스(600)는 블록(602)에서 시작한다. 블록(602)에서, 프로세서 코어에 대한 관심 있는 펌웨어/BIOS 이미지에 대한 요청이 수신된다. 요청은 SPI 프로토콜에 따라 수신될 수 있고, 프로세서 코어는 가상 플래시에 대한 SPI 마스터로서 동작한다.
다음으로 블록(604)에서, 요청이 서비스되는데, 대신 (플래시 디바이스가 아니라) 컴퓨팅 플랫폼의 보안 메모리 영역으로부터 관심 있는 펌웨어/BIOS 이미지가 취출되고 프로세서 코어로 리턴된다.
도 7은 다양한 실시예에 따른, 본 발명의 다양한 프로그램적 양상을 실행하는 데 사용하기에 적합한 예시적인 컴퓨팅 디바이스를 도시한다. 도시된 바와 같이, 디바이스(700)는 하나 이상의 프로세서(702) 및 가상 플래시(703)를 포함할 수 있다. 각각의 프로세서(702)는 하나 이상의 프로세서 코어를 포함할 수 있다. 프로세서 코어(702)는 ASIC 또는 FPGA일 수 있는 하나 이상의 하드웨어 가속기(도시 생략)도 포함할 수 있다. 가상 플래시(703)는 도 2 내지 도 6을 참조하여 전술한 회로 및 상보형 펌웨어를 갖는 도 1의 가상 플래시(104)일 수 있다. 다양한 실시예에서, 프로세서 코어(702) 및 가상 플래시(703)는 SoC 상에 함께 통합될 수 있고, 가상 플래시(703)의 회로는 SoC의 FPGA를 사용하여 구현되며, 가상 플래시 펌웨어는 SoC의 HPS를 사용하여 구현된다(이에 의해 실행됨).
부가적으로, 컴퓨팅 디바이스(700)는 다수의 공지된 비영구적 저장 매체 및 메모리 제어기 중 임의의 하나일 수 있는 메모리 및 메모리 제어기(704), 및 펌웨어/BIOS 이미지(709)를 포함하는 다수의 플래시 디바이스(708)를 포함할 수 있다. 플래시 디바이스(708)는 임의의 비휘발성 저장장치, 예를 들어, eMMC, SSD, NAND, 플래시 등일 수 있다.
또한, 컴퓨팅 디바이스(700)는 하나 이상의 센서(714)에 연결된 I/O 인터페이스(718), 및 디스플레이 스크린(713)을 포함할 수 있다. I/O 인터페이스(718)는 송신기(723) 및 수신기(717)를 포함할 수 있다. 또한, 컴퓨팅 디바이스(700)는 송수신기(Tx)(711) 및 네트워크 인터페이스 제어기(NIC)(712)를 포함하는 통신 회로(705)를 포함할 수 있다. 요소들은 하나 이상의 버스, 예를 들어, 하나 이상의 PCIe 버스를 나타낼 수 있는 시스템 버스(706)를 통해 서로 연결될 수 있다. 복수의 버스의 경우, 이들은 하나 이상의 버스 브리지(도시되지 않음)에 의해 브리지될 수 있다.
다양한 실시예에서, 프로세서(들)(702), 메모리 및 메모리 제어기(704), I/O 인터페이스(718), 통신 회로(705), 및/또는 시스템 버스(706)는 메인 보드 또는 마더보드로 지칭될 수 있는 인쇄 회로 보드(PCB) 상에 함께 배치될 수 있다.
실시예에서, 프로세서(들)(702)("프로세서 회로(702)"로도 지칭됨)는 명령을 수행함으로써 기본 산술적, 논리적, 및 입출력 동작을 수행하도록 구성된 하나 이상의 처리 요소일 수 있다. 프로세서 회로(702)는 독립형 시스템/디바이스/패키지로서 또는 기존의 시스템/디바이스/패키지의 일부로서 구현될 수 있다. 프로세서 회로(702)는 하나 이상의 마이크로프로세서, 하나 이상의 싱글-코어 프로세서, 하나 이상의 멀티-코어 프로세서, 하나 이상의 멀티스레딩된 프로세서, 하나 이상의 GPU, 하나 이상의 초-저전압 프로세서, 하나 이상의 임베디드 프로세서, 하나 이상의 DSP, FPGA, 구조화된 ASIC, 프로그램가능 SoC(PSoC) 등과 같은 하나 이상의 FPD(하드웨어 가속기) 및/또는 다른 프로세서 또는 처리/제어 회로일 수 있다. 프로세서 회로(702)는 본 명세서에서 논의된 프로세서 회로(702) 및 다른 컴포넌트가 단일 IC 또는 단일 패키지 내에 형성되는 SoC의 일부일 수 있다. 예로서, 프로세서 회로(702)는 하나 이상의 Intel Pentium®, Core®, Xeon®, Atom®, 또는 Core M® 프로세서(들), AMD(Advanced Micro Devices) APU(Accelerated Processing Unit), Epyc®, 또는 Ryzen® 프로세서, Apple Inc. A 시리즈, S 시리즈, W 시리즈 등 프로세서(들), Qualcomm snapdragon® 프로세서(들), Samsung Exynos® 프로세서(들) 및/또는 기타를 포함할 수 있다.
실시예에서, 프로세서 회로(702)는 하나 이상의 센서(714)로부터 획득된 데이터를 처리함으로써 코프로세서로서 동작할 수 있는 센서 허브를 포함할 수 있다. 센서 허브는 산술적, 논리적, 및 입출력 동작을 수행함으로써 하나 이상의 센서(714) 각각으로부터 획득된 데이터를 통합하도록 구성된 회로를 포함할 수 있다. 실시예에서, 센서 허브는 획득된 센서 데이터를 타임스탬핑하고, 그러한 데이터에 대한 질의에 응답하여 센서 데이터를 프로세서 회로(702)에 제공하며, 센서 데이터를 버퍼링하고, 하나 이상의 센서(714)의 각각의 센서에 대한 독립적인 스트림을 포함하는 센서 데이터를 프로세서 회로(702)로 연속적으로 스트리밍하며, 사전정의된 임계치 또는 조건/트리거 및/또는 다른 유사한 데이터 처리 기능에 기초하여 센서 데이터를 보고할 수 있다.
실시예에서, 메모리(704)("메모리 회로(704)" 등으로도 지칭됨)는 컴퓨팅 디바이스(700)를 동작시키기 위한 데이터 또는 로직을 저장하도록 구성된 회로일 수 있다. 메모리 회로(704)는 주어진 양의 시스템 메모리를 제공하는 데 사용될 수 있는 다수의 메모리 디바이스를 포함할 수 있다. 예로서, 메모리 회로(704)는, 공지된 바와 같이 임의의 적절한 구현에서 구성될 수 있는 임의의 적절한 타입, 수 및/또는 조합의 휘발성 메모리 디바이스(예를 들어, 랜덤 액세스 메모리(RAM), 동적 RAM(DRAM), 정적 RAM(SRAM) 등) 및/또는 비휘발성 메모리 디바이스(예를 들면, 판독 전용 메모리(ROM), 소거가능 프로그램가능 판독 전용 메모리(EPROM), 전기적 소거가능 프로그램가능 판독 전용 메모리(EEPROM), 플래시 메모리, 안티퓨즈들 등)일 수 있다. 다양한 구현에서, 개별 메모리 디바이스는 임의의 수의 상이한 패키지 타입, 예컨대 단일 다이 패키지(SDP), 듀얼 다이 패키지(DDP) 또는 쿼드 다이 패키지, 듀얼 인라인 메모리 모듈(dual inline memory module: DIMM), 예컨대 마이크로DIMM 또는 미니DIMM, 및/또는 임의의 다른 유사한 메모리 디바이스로 형성될 수 있다. 데이터, 애플리케이션, 운영 체제 등과 같은 정보의 지속적인 저장을 제공하기 위해, 메모리 회로(704)는 고체 상태 디스크 드라이브(SSDD)와 같은 하나 이상의 대용량 저장 디바이스, SD 카드, 마이크로SD 카드, xD 픽처 카드 등과 같은 플래시 메모리 카드 및 USB 플래시 드라이브, (예를 들어, 저전력 구현에서) 프로세서 회로(602)와 연관된 온-다이 메모리 또는 레지스터, 마이크로 하드 디스크 드라이브(HDD), Intel® 및 Micron® 등의 3차원 크로스-포인트(3D XPOINT) 메모리를 포함할 수 있다.
FPD가 사용되는 경우, 프로세서 회로(702) 및 메모리 회로(70)(및/또는 플래시(708))는 로직 블록 또는 로직 패브릭, 메모리 셀, 입출력(I/O) 블록, 및 본 명세서에서 논의된 예시적인 실시예의 다양한 기능을 수행하도록 프로그래밍될 수 있는 다른 상호접속된 자원을 포함할 수 있다. 메모리 셀은 다양한 로직 기능을 구현하기 위해 프로세서 회로(702)에 의해 사용되는 룩업 테이블(LUT)에 데이터를 저장하는 데 사용될 수 있다. 메모리 셀은 EPROM, EEPROM, 플래시 메모리, SRAM, 안티-퓨즈 등을 포함하지만 이에 제한되지 않는 다양한 레벨의 메모리/저장장치의 임의의 조합을 포함할 수 있다.
실시예에서, 공유 또는 각각의 제어기를 갖는 플래시(708)("플래시 디바이스 또는 플래시 회로(708)" 등으로도 지칭됨)는 펌웨어/BIOS 이미지(709), 운영 체제 등과 같은 정보의 지속적인 저장을 제공할 수 있다. 플래시 회로(178)는, 그 중에서도, 고체 상태 드라이브(SSD), 고체 상태 디스크 드라이브(SSDA), 직렬 AT 부착(serial AT attachment: SATA) 저장 디바이스(예를 들어, SATA SSD), 플래시 드라이브, SD 카드, 마이크로SD 카드, xD 픽처 카드 등과 같은 플래시 메모리 카드 및 USB 플래시 드라이브, 3차원 크로스-포인트(3D Xpoint) 메모리 디바이스, 프로세서 회로(702)와 연관된 온-다이 메모리 또는 레지스터, 하드 디스크 드라이브(HDD), 마이크로 HDD, 저항 변화 메모리, 상 변화 메모리, 홀로그래픽 메모리, 또는 화학적 메모리로서 구현될 수 있다. 도시된 바와 같이, 플래시 회로(708)는 컴퓨터 디바이스(700)에 포함되지만, 다른 실시예에서, 플래시 회로(708)는 컴퓨터 디바이스(700)의 다른 요소로부터 분리된 하나 이상의 디바이스로서 구현될 수 있다.
몇몇 실시예에서, 플래시 회로(708)는 범용 운영 체제 또는 컴퓨터 디바이스(700)를 위해 특별히 기록되고 이에 맞춤화된 운영 체제일 수 있는 운영 체제(OS)(도시 생략)를 더 포함할 수 있다. OS는 하나 이상의 드라이버, 라이브러리 및/또는 애플리케이션 프로그래밍 인터페이스(API)를 포함할 수 있고, 이는 프로그램 코드 및/또는 소프트웨어 컴포넌트, 및/또는 제어 시스템 구성을 제공하여 하나 이상의 센서(714)로부터 데이터를 제어하고/하거나 획득/처리할 수 있다.
펌웨어/BIOS 이미지(709)는 컴퓨팅 디바이스(700)의 다양한 기본 기능/서비스를 수행하고/하거나 본 명세서에서 논의된 예시적인 실시예의 기능을 수행하는 데 사용되는 소프트웨어 모듈/컴포넌트일 수 있다. 프로세서 회로(702) 및 메모리 회로(704)가 하드웨어 가속기(예를 들어, FPGA 셀, 하드웨어 가속기(703))뿐만 아니라 프로세서 코어도 포함하는 실시예에서, 하드웨어 가속기(예컨대, FPGA 셀)는 (프로세서 코어(들)에 의해 실행될 프로그래밍 명령어를 이용하는 대신에) 본 명세서의 실시예의 몇몇 기능을 수행하는 로직을 사용하여 (예컨대, 적절한 비트스트림, 로직 블록/패브릭 등으로) 사전구성될 수 있다.
컴퓨팅 디바이스(700)의 컴포넌트는 시스템 버스(706)를 통해 서로 통신할 수 있다. 시스템 버스(706)는 임의의 수의 기술, 예컨대, 로컬 상호접속 네트워크(Local Interconnect Network: LIN), 산업 표준 아키텍처(industry standard architecture: ISA), 확장 ISA(extended ISA: EISA), PCI, PCI 확장(PCIx), PCIe, I2C(Inter-Integrated Circuit) 버스, 병렬 소형 컴퓨터 시스템 인터페이스(Parallel Small Computer System Interface: SPI) 버스, 공통 애플리케이션 프로그래밍 인터페이스(Common Application Programming Interface: CAPI), 점대점 인터페이스, 전력 버스, 독점 버스(proprietary bus), 예를 들어, Intel® 울트라 패스 인터페이스(Ultra Path Interface: UPI), Intel® 가속기 링크(Accelerator Link: IAL), 또는 SoC 기반 인터페이스에서 사용되는 몇몇 다른 독점 버스, 또는 임의의 수의 다른 기술을 포함할 수 있다. 몇몇 실시예에서, 버스(706)는 제어기 영역 네트워크(controller area network: CAN) 버스 시스템, 시간-트리거 프로토콜(Time-Trigger Protocol: TTP) 시스템, 또는 플렉스레이 시스템(FlexRay system)일 수 있고, 이는 다양한 디바이스(예를 들어, 하나 이상의 센서(714) 등)가 메시지 또는 프레임을 사용하여 서로 통신할 수 있게 할 수 있다.
통신 회로(705)는 무선 네트워크 또는 유선 네트워크와 통신하는 회로를 포함할 수 있다. 예를 들어, 통신 회로(705)는 송수신기(Tx)(711) 및 네트워크 인터페이스 제어기(NIC)(712)를 포함할 수 있다. 통신 회로(705)는 특정 무선 통신 프로토콜에 전용되는 하나 이상의 프로세서(예를 들어, 기저대역 프로세서, 모뎀 등)를 포함할 수 있다.
NIC(712)는 네트워크 및/또는 다른 디바이스에 유선 통신 링크를 제공하기 위해 포함될 수 있다. 유선 통신은 이더넷 접속, 이더넷-오버-USB(Ethernet-over-USB) 등을 제공할 수 있거나, 또는 많은 다른 것들 중에서도 DeviceNet, ControlNET, Data Highway+, PROFIBUS, 또는 PROFINET와 같은 다른 타입의 네트워크에 기초할 수 있다. 추가적인 NIC(712)는 제2 네트워크(도시 생략) 또는 다른 디바이스에 대한 접속을 허용하기 위해 포함될 수 있는데, 예를 들어, 이더넷을 통해 네트워크에 통신을 제공하는 제1 NIC(712) 및 개인용 컴퓨터(PC) 디바이스를 포함하는 개인 영역 네트워크(PAN)와 같은 다른 타입의 네트워크를 통해 다른 디바이스에 통신을 제공하는 제2 NIC(712)이다. 몇몇 실시예에서, 하나 이상의 센서(714) 등과 같은 컴퓨팅 디바이스(700)의 다양한 컴포넌트는 아래에서 논의되는 바와 같이 I/O 회로(718)를 통하기보다는 위에서 논의된 바와 같이 NIC(712)를 통해 프로세서(들)(702)에 연결될 수 있다.
Tx(711)는 네트워크 및/또는 다른 디바이스와 무선으로 통신하기 위한 하나 이상의 무선장치를 포함할 수 있다. Tx(711)는 고체 또는 비-고체 매체를 통한 변조된 전자기 방사를 사용하여 유선 네트워크 및/또는 다른 디바이스와의 통신을 가능하게 하는 하드웨어 디바이스를 포함할 수 있다. 이러한 하드웨어 디바이스는, 데이터를 하나 이상의 다른 디바이스에 송신하기 위한 무선파를 생성하거나 산출하고, 수신된 신호를 컴퓨팅 디바이스(700)의 하나 이상의 다른 컴포넌트에 제공될 수 있는 디지털 데이터와 같은 사용가능한 정보로 변환함으로써, OTA(over the air)를 통한 통신을 용이하게 하기 위한 스위치, 필터, 증폭기, 안테나 요소 등을 포함할 수 있다. 몇몇 실시예에서, 하나 이상의 센서(714) 등과 같은 디바이스(700)의 다양한 컴포넌트는 아래에서 논의되는 바와 같이 I/O 회로(718)를 통하기보다는 위에서 논의된 바와 같이 Tx(711)를 통해 컴퓨팅 디바이스(70)에 연결될 수 있다. 일 예에서, 하나 이상의 센서(714)는 단거리 통신 프로토콜을 통해 컴퓨팅 디바이스(700)와 연결될 수 있다.
Tx(711)는 임의의 수의 3GPP(Third Generation Partnership Project) 사양, 특히 LTE(Long Term Evolution), LTE-A(Long Term Evolution-Advanced), LTE-A Pro(Long Term Evolution-Advanced Pro) 및 5G(Fifth Generation) NR(New Radio)과 호환 가능한 하나 또는 복수의 무선장치를 포함할 수 있다. 임의의 수의 다른 고정된, 이동, 또는 위성 통신 기술 및 표준과 호환가능한 무선장치가 선택될 수 있음을 알 수 있다. 이들은, 예를 들어, 5G 통신 시스템, GSM(Global System for Mobile Communications) 무선 통신 기술, GPRS(General Packet Radio Service) 무선 통신 기술 또는 EDGE(Enhanced Data Rates for GSM Evolution) 무선 통신 기술을 포함할 수 있는 임의의 셀룰러 광역 무선 통신 기술을 포함할 수 있다. 사용될 수 있는 다른 3GPP(Third Generation Partnership Project) 무선 통신 기술은 UMTS(Universal Mobile Telecommunications System), FOMA(Freedom of Multimedia Access), 3GPP LTE(Long Term Evolution), 3GPP LTE 어드밴스드(Long Term Evolution Advanced), 3GPP LTE 어드밴스드 프로(Long Term Evolution Advanced Pro), CDMA2000(Code division multiple access 2000), CDPD(Cellular Digital Packet Data), 모비텍스(Mobitex), 3G(Third Generation), CSD(Circuit Switched Data), HSCSD(High-Speed Circuit-Switched Data), UMTS(3G)(Universal Mobile Telecommunications System (Third Generation)), W-CDMA(UMTS)(Wideband Code Division Multiple Access(Universal Mobile Telecommunications System)), HAPA(High Speed Packet Access), HSDPA(High-Speed Downlink Packet Access), HSUPA(High-Speed Uplink Packet Access), HSPA+(High Speed Packet Access Plus), UMTS-TDD(Universal Mobile Telecommunication System-Time-Division Duplex), TD-CDMA(Time Division-Code Division multiple Access), TD-SCDMA(Time Division-Synchronous Code Division Multiple Access), 3GPP Rel. 8(Pre-4G)(3rd Generation Partnership Project Release 8(Pre-4th Generation)), 3GPP Rel. 9(3rd Generation Partnership Project Release 9), 3GPP Rel. 10(3rd Generation Partnership Project Release 10), 3GPP Rel. 11(3rd Generation Partnership Project Release 11), 3GPP Rel. 12(3rd Generation Partnership Project Release 12), 3GPP Rel. 13(3rd Generation Partnership Project Release 13), 3GPP Rel. 14(3rd Generation Partnership Project Release 14), 3GPP LTE Extra, LTE LAA(Licensed-Assisted Access), UTRA(UMTS Terrestrial Radio Access), E-UTRA(Evolved UMTS Terrestrial Radio Access), LTE Advanced(4G)(Long Term Evolution Advanced(4th Generation)), cdmaOne(2G), CDMA2000(3G)(Code division multiple access 2000(Third generation)), EV-DO(Evolution-Data Optimized 또는 Evolution-Data Only), AMPS(1G)(Advanced Mobile Phone System (1st Generation)), TACS/ETACS(Total Access Communication System/Extended Total Access Communication system), D-AMPS(2G)(Digital AMPS(2nd Generation)), PTT(Push-to-talk), MTS(Mobile Telephone System), IMTS(Improved Mobile Telephone System), AMTS(Advanced Mobile Teletelephone System), OLT(노르웨이어로 Offentlig Landmobil Telefoni, 공중 육상 이동 네트워크), MTD(Mobiltelefonisystem D의 스웨덴어 약어, 또는 Mobile telephony system D) Autotel/PALM(Public Automated Land Mobile), ARP(핀란드어로 Autoradiopuhelin, "자동차용 무선 전화"), NMT(Nordic Mobile Telephony), Hicap(High capacity version of NTT(Nippon Telegraph and Telephone)), CDPD(Cellular Digital Packet Data), 모비텍스, 데이터택(DataTAC), iDEN(Integrated Digital Enhanced Network), PDC(Personal Digital Cellular), CSD(Circuit Switched Data), PHS(Personal Handy-phone System), WiDEN(Wideband Integrated Digital Enhanced Network), iBurst, UMA(Unlicensed Mobile Access, 3GPP 일반 액세스 네트워크(Generic Access Network) 또는 GAN 표준으로도 지칭됨), 일반적으로 mmWave 표준(WiGig, IEEE 802.11ad, IEEE 802.11ay 등과 같이 10-90 GHz 이상에서 작동하는 무선 시스템)을 포함한다. 앞에서 열거된 표준에 추가하여, 임의의 수의 위성 업링크 기술이, 예를 들어, 그 중에서도, ITU(International Telecommunication Union) 또는 ETSI(European Tercommunications Standards Institute)에 의해 발행된 표준을 따르는 무선장치를 포함하는 업링크 송수신기에 사용될 수 있다. 따라서, 본 명세서에 제공된 예는 기존 및 아직 공식화되지 않은 다양한 다른 통신 기술에 적용 가능한 것으로 이해된다. 전술한 프로토콜의 구현, 컴포넌트 및 세부사항은 당업계에 공지된 것일 수 있으며, 간결성을 위해 본 명세서에서 생략된다.
입출력(I/O) 인터페이스(718)는 컴퓨터 디바이스(700)를 하나 이상의 센서(714) 등과 같은 외부 컴포넌트/디바이스와 접속하는 데 사용되는 외부 확장 버스(예를 들어, 범용 직렬 버스(USB), 파이어와이어(FireWire), 썬더볼트(Thunderbolt), PCI/PCIe/PCIx 등)와 같은 회로를 포함할 수 있다. I/O 인터페이스 회로(718)는 프로세서 회로(702), 메모리 회로(704), 플래시 회로(708), 통신 회로(705) 및 컴퓨팅 디바이스(700)의 다른 컴포넌트 중 하나 이상을 상호접속하기위한 임의의 적합한 인터페이스 제어기 및 커넥터를 포함할 수 있다. 인터페이스 제어기는 메모리 제어기, 저장장치 제어기(예컨대, 복수 배열 독립 디스크(redundant array of independent disk: RAID) 제어기), 베이스보드 관리 제어기(BMC), 입출력 제어기, 호스트 제어기 등을 포함할 수 있지만, 이에 제한되지 않는다. 커넥터는 예를 들어, 버스(예컨대, 버스(706)), 포트, 슬롯, 점퍼, 상호접속 모듈, 리셉터클, 모듈러 커넥터 등을 포함할 수 있다. I/O 회로(718)는 USB, ㅍ파파이어와이어, 썬더볼트, RCA, 비디오 그래픽 어레이(VGA), 디지털 시각 인터페이스(DVI) 및/또는 미니-DVI, 고해상도 멀티미디어 인터페이스(HDMI), S-비디오 등을 사용하는 것과 같은 유선 접속을 통해 컴퓨팅 디바이스(700)를 하나 이상의 센서(714) 등과 연결할 수 있다.
하나 이상의 센서(714)는 이벤트 또는 환경 변화를 검출하고, 검출된 이벤트를 전기 신호 및/또는 디지털 데이터로 변환하며, 신호/데이터를 컴퓨팅 디바이스(700)에 송신/전송하도록 구성된 임의의 디바이스일 수 있다. 하나 이상의 센서(714) 중 일부는 컴퓨터로 생성된 감지 입력을 제공하는 데 사용되는 센서일 수 있다. 하나 이상의 센서(714) 중 일부는 모션 및/또는 대상 검출에 사용되는 센서일 수 있다. 이러한 하나 이상의 센서(714)의 예는, 특히, 전하 연결 디바이스(charged-coupled device: CCD), 상보형 금속 산화물 반도체(Complementary metal-oxide-semiconductor: CMOS) 능동 픽셀 센서(active pixel sensor: APS), 무렌즈 이미지 캡처 디바이스/카메라, 열화상(적외선) 카메라, LIDAR(Light Imaging Detection And Ranging) 시스템 등을 포함할 수 있다. 몇몇 구현에서, 하나 이상의 센서(714)는 조리개 요소의 어레이를 포함하는 무렌즈 이미지 캡처 메커니즘을 포함할 수 있고, 조리개 요소의 어레이를 관통하는 광은 이미지의 픽셀을 정의한다. 실시예에서, 모션 검출을 위한 하나 이상의 센서(714)는 광 생성 디바이스, 예를 들어, 적외선 광의 그리드를 장면 상에 투영하기 위한 하나 이상의 적외선 프로젝터와 연결되거나 이와 연관될 수 있고, 적외선 카메라는 반사된 적외선 광을 기록하여 깊이 정보를 계산할 수 있다.
하나 이상의 센서(714) 중 일부는 위치 및/또는 방향 검출, 주변/환경 조건 검출 등에 사용될 수 있다. 이러한 하나 이상의 센서(714)의 예는, 특히, 컴퓨터 디바이스(700)에 관련된 환경 조건 또는 위치 정보를 결정하는 데 사용될 수 있는 압전, 압전저항 및/또는 용량성 컴포넌트를 갖는 마이크로전자기계 시스템(MEMS)을 포함할 수 있다. 실시예에서, MEMS는 3축 가속도계, 3축 자이로스코프 및/또는 자력계를 포함할 수 있다. 몇몇 실시예에서, 하나 이상의 센서(714)는 하나 이상의 중력계, 고도계, 기압계, 근접 센서(예를 들어, 적외선 방사선 검출기(들) 등), 깊이 센서, 주변 광 센서, 열 센서(온도계), 초음파 송수신기 등을 포함할 수 있다.
이들 요소 각각, 예를 들어, 하나 이상의 프로세서(702), 가상 플래시(703), 메모리(704), 펌웨어/BIOS 이미지(709)를 포함하는 플래시 회로(708), 입출력 인터페이스(718), 하나 이상의 센서(714), Tx(711), NIC(712)를 포함하는 통신 회로(705), 시스템 버스(706)는 당업계에 알려진 종래의 기능을 수행할 수 있다. 또한, 이들은 다양한 운영 체제 기능 및/또는 애플리케이션을 구현하는 프로그래밍 명령어의 실행을 저장하고 호스팅하는 데 이용될 수 있다. 다양한 프로그래밍 명령어는 프로세서(들)(702)에 의해 지원되는 어셈블러 명령어 또는 그러한 명령어로 컴파일될 수 있는 예컨대, C와 같은 하이 레벨 언어에 의해 구현될 수 있다. 소프트웨어로 구현되지 않은 컴퓨팅 디바이스(700)와 연관된 동작은 예를 들어, 프로세서(702)의 하드웨어 가속기를 통해 하드웨어로 구현될 수 있다.
이러한 요소의 수, 능력 및/또는 용량은 디바이스(700)가 지원하도록 구성되는 다른 디바이스의 수에 따라 변할 수 있다. 그렇지 않으면, 본 발명의 교시를 제외한 이들 요소의 구성은 공지되어 있으므로, 더 이상 설명되지 않을 것이다.
설명된 바와 같이, 본 발명의 양상은, 매체에서 구현되는 컴퓨터-사용가능 프로그램 코드를 가진 표현의 임의의 유형의 또는 비일시적 매체에 구현되는 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 도 8은 장치에 의한 명령어의 실행에 응답하여, 장치로 하여금 본 발명의 선택된 양상을 실시하게 하는 명령어를 저장하는데 사용하기에 적합할 수 있는 예시적인 컴퓨터 판독가능 비일시적 저장 매체를 도시한다. 도시된 바와 같이, 비일시적 컴퓨터 판독가능 저장 매체(802)는 다수의 프로그래밍 명령어(804)를 포함할 수 있다. 프로그래밍 명령어(804)는 프로그래밍 명령어의 실행에 응답하여, 디바이스, 예를 들어, 디바이스(700)가 예컨대, 운영 체제 기능 및/또는 애플리케이션과 연관된 다양한 프로그래밍 동작을 수행할 수 있게 하도록 구성될 수 있다. 다양한 실시예에서, 프로그래밍 명령어(804)는 본 명세서에 설명된 가상 플래시 동작을 수행하도록, 예를 들어, 가상 플래시(703)의 펌웨어를 구성하는 명령어일 수 있다.
다른 실시예에서, 프로그래밍 명령어(804)는 대신에 복수의 컴퓨터 판독가능 비일시적 저장 매체(802) 상에 배치될 수 있다. 다른 실시예에서, 프로그래밍 명령어(804)는 신호와 같은 컴퓨터 판독가능 일시적 저장 매체(802) 상에 배치될 수 있다. 하나 이상의 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체(들)의 임의의 조합이 이용될 수 있다. 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체는, 예를 들어, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 디바이스, 또는 전파 매체일 수 있지만 이에 제한되지 않는다. 컴퓨터 판독가능 매체의 보다 구체적인 예(비전면 목록)는 다음을 포함할 것이다: 하나 이상의 와이어를 갖는 전기 접속부, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거가능 프로그램가능 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, 휴대용 콤팩트 디스크 판독 전용 메모리(CD-ROM), 광학 저장 디바이스, 인터넷 또는 인트라넷을 지원하는 것들과 같은 전송 매체, 또는 자기 저장 디바이스. 프로그램이, 가령, 종이 또는 다른 매체의 광학 스캐닝을 통해 전자적으로 캡처되고, 이어서, 필요하다면, 적합한 방식으로 컴파일, 해석, 또는 다른 방식으로 처리되며, 그 후에 컴퓨터 메모리에 저장될 수 있으므로, 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체는 심지어 프로그램이 인쇄되는 종이 또는 다른 적합한 매체일 수 있다. 본 문서의 맥락에서, 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체는 명령어 실행 시스템, 장치, 또는 디바이스에 의해 또는 이와 관련하여 사용할 프로그램을 포함, 저장, 통신, 전파, 또는 이송할 수 있는 임의의 매체일 수 있다. 컴퓨터 사용가능 매체는 기저대역에서 또는 반송파의 일부로서 컴퓨터 사용가능 프로그램 코드가 구현된 전파 데이터 신호를 포함할 수 있다. 컴퓨터 사용가능 프로그램 코드는 무선, 유선, 광섬유 케이블, RF 등을 포함하지만 이에 제한되지 않는 임의의 적합한 매체를 이용하여 전송될 수 있다.
본 발명의 동작을 수행하기 위한 컴퓨터 프로그램 코드는 자바, 스몰토크, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 종래의 절차적 프로그래밍 언어를 포함하는 하나 이상의 프로그래밍 언어의 임의의 조합으로 기록될 수 있다. 프로그램 코드는 전적으로 사용자의 컴퓨터에서, 부분적으로 사용자의 컴퓨터에서, 독립형 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터에서 그리고 부분적으로 원격 컴퓨터에서 또는 전적으로 원격 컴퓨터 또는 서버에서 실행될 수 있다. 후자의 시나리오에서, 원격 컴퓨터는 로컬 영역 네트워크(LAN) 또는 광역 네트워크(WAN)를 포함하는 임의의 타입의 네트워크를 통해 사용자의 컴퓨터에 연결될 수 있거나, 또는 접속은 (예를 들어, 인터넷 서비스 제공자를 사용하여 인터넷을 통해) 외부 컴퓨터에 대해 이루어질 수 있다.
따라서, 설명된 예시적인 실시예는 다음을 포함한다:
예 1은 컴퓨팅을 위한 장치로서, 컴퓨팅 플랫폼의 하나 이상의 플래시 디바이스로부터의 하나 이상의 플랫폼 펌웨어 이미지에 대해 컴퓨팅 플랫폼의 하나 이상의 코어가 액세스하는 것을 가능하게 하기 위해 협력하는 회로 및 펌웨어를 포함하는 가상 플래시를 포함하되, 가능화는 대신에 컴퓨팅 플랫폼의 하나 이상의 보안 메모리 영역으로부터 하나 이상의 코어에 대한 하나 이상의 플랫폼 펌웨어 이미지의 리턴을 포함한다.
예 2는 예 1에 있어서, 회로는, 하나 이상의 코어 중 하나의 코어로부터 하나의 코어의 클록 레이트로 커맨드를 수신하고, 수신된 커맨드를 버퍼링하는 프레임 버퍼와, 프레임 버퍼에 연결되어, 로컬 클록 레이트로 버퍼링된 커맨드를 취출하고, 변환 및 로컬 클록 레이트로 가상 플래시의 상보형 가상 플래시 펌웨어 또는 보안 메모리 영역의 메모리 제어기로의 변환의 선택적 전달을 위해 취출된 커맨드를 포워딩하는 커맨드 포워드 회로를 포함하는 동기 디지털 회로를 포함한다.
예 3은 예 2에 있어서, 동기 디지털 회로는, 커맨드 포워드 회로에 연결되어, 로컬 클록 레이트로 포워딩된 커맨드를 수신하고, 포워딩된 커맨드를 변환하며, 변환을 로컬 클록 레이트로 가상 플래시의 상보형 가상 플래시 펌웨어 또는 보안 메모리 영역의 메모리 제어기에 선택적으로 포워딩하는 커맨드 변환 회로를 더 포함한다.
예 4는 예 3에 있어서, 동기 디지털 회로는, 커맨드 포워드 회로 및 커맨드 변환 회로와 연결되어 가상 플래시의 상보형 가상 플래시 펌웨어와 인터페이싱하는 가상 플래시 펌웨어 인터페이스를 더 포함한다.
예 5는 예 3에 있어서, 커맨드 변환 회로와 연결되어 로컬 클록 레이트로 보안 메모리 영역의 메모리 제어기와 인터페이싱하는 메모리 인터페이스를 더 포함한다.
예 6은 예 2에 있어서, 프레임 버퍼와 연결되어 하나 이상의 코어에 가상 플래시를 대응하는 코어의 클록 레이트로 선택적으로 연결하는 코어 인터페이스를 더 포함한다.
예 7은 예 1에 있어서, 가상 플래시는 가상 플래시의 복수의 동작 파라미터를 저장하는 복수의 레지스터를 더 포함한다.
예 8은 예 8에 있어서, 회로는 필드 프로그램가능 게이트 어레이(field programming gate array: FPGA)를 사용하여 구현된다.
예 9는 예 8에 있어서, 장치는 서로 연결된 FPGA 및 하나 이상의 코어 중 하나를 갖는 시스템 온 칩이다.
예 10은 예 1에 있어서, 펌웨어는, 하나 이상의 플랫폼 펌웨어 이미지를 취출하고 보안 메모리 영역에 하나 이상의 플랫폼 펌웨어 이미지를 저장함으로써, 하나 이상의 플래시 디바이스로부터 보안 메모리 영역으로 하나 이상의 플랫폼 펌웨어 이미지를 로딩하는 초기화 모듈을 포함한다.
예 11은 예 10에 있어서, 하나 이상의 플래시 디바이스 내의 하나 이상의 플랫폼 펌웨어 이미지는 암호화되고, 플래시 펌웨어는, 하나 이상의 플랫폼 펌웨어 이미지가 보안 메모리 영역 내에 저장되기 전에, 하나 이상의 플래시 디바이스에 저장된 암호화된 하나 이상의 플랫폼 펌웨어 이미지로부터 하나 이상의 플랫폼 펌웨어 이미지를 복원하는 복호화 엔진을 더 포함한다.
예 12는 예 10에 있어서, 펌웨어는, 보안 메모리 영역에 저장된 하나 이상의 플랫폼 펌웨어 이미지가 업데이트되었다는 것에 응답하여, 하나 이상의 플래시 디바이스에 저장된 하나 이상의 플랫폼 펌웨어 이미지의 암호화된 버전을 보안 메모리 영역에 저장된 하나 이상의 플랫폼 펌웨어 이미지와 동기화하는 동기화 엔진을 포함한다.
예 13은 컴퓨팅을 위한 방법으로서, 가상 플래시를 사용하여, 컴퓨팅 플랫폼의 하나 이상의 플래시 드라이브로부터 하나 이상의 플랫폼 펌웨어 이미지를 취출하는 단계와, 가상 플래시에 의해, 하나 이상의 취출된 플랫폼 펌웨어 이미지를 컴퓨팅 플랫폼의 하나 이상의 보안 메모리 영역에 저장하는 단계 - 하나 이상의 보안 메모리 영역은 가상 플래시의 상보형 가상 플래시 펌웨어에 의해 관리됨 - 와, 가상 플래시에 의해, 하나 이상의 플래시 드라이브로부터 컴퓨팅 플랫폼의 하나 이상의 코어에 의해 하나 이상의 플랫폼 펌웨어 이미지에 액세스하려는 시도를 수신하는 단계와, 대신에 가상 플래시의 상보형 가상 플래시 펌웨어에 의해 관리되는 하나 이상의 보안 메모리 영역으로부터, 가상 플래시에 의해, 하나 이상의 플랫폼 펌웨어 이미지를 취출하고 리턴하는 단계를 포함한다.
예 14는 예 13에 있어서, 하나 이상의 플래시 드라이브 내의 하나 이상의 플랫폼 펌웨어 이미지는 암호화되고, 방법은, 가상 플래시에 의한 하나 이상의 플래시 드라이브로부터의 취출 시에, 가상 플래시의 상보형 가상 플래시 펌웨어에 의해 관리되는 하나 이상의 보안 메모리 영역에 하나 이상의 플랫폼 펌웨어 이미지를 저장하기 전에, 가상 플래시에 의해, 하나 이상의 암호화된 플랫폼 펌웨어 이미지를 복호화하는 단계를 더 포함한다.
예 15는 예 13에 있어서, 하나 이상의 보안 메모리 영역에 저장된 하나 이상의 플랫폼 펌웨어 이미지가 업데이트될 때, 하나 이상의 플래시 디바이스에 저장된 하나 이상의 플랫폼 펌웨어 이미지의 암호화된 버전을 하나 이상의 보안 메모리 영역에 저장된 하나 이상의 플랫폼 펌웨어 이미지와 동기화하는 단계를 더 포함한다.
예 16은 명령어가 저장되어 있는 적어도 하나의 컴퓨터 판독가능 매체(CRM)로서, 명령어는, 컴퓨팅 플랫폼으로 하여금, 명령어의 실행에 응답하여, 연관된 가상 플래시 펌웨어를 가진 가상 플래시를 사용하여, 하나 이상의 플래시 드라이브로부터 컴퓨팅 플랫폼의 하나 이상의 코어에 의해 하나 이상의 플랫폼 펌웨어 이미지에 액세스하려는 시도를 수신하게 하고, 가상 플래시 펌웨어를 사용하여, 컴퓨팅 플랫폼의 보안 메모리 영역으로부터 하나 이상의 플랫폼 펌웨어 이미지를 취출하고 리턴하게 하며, 가상 플래시 펌웨어는 컴퓨팅 플랫폼의 보안 메모리 영역의 액세스 제어를 갖는다.
예 17은 예 16에 있어서, 컴퓨팅 플랫폼으로 하여금 또한, 가상 플래시 펌웨어에 의해, 컴퓨팅 플랫폼의 하나 이상의 플래시 드라이브로부터 하나 이상의 플랫폼 펌웨어 이미지를 사전 취출하게 하고, 가상 플래시 펌웨어에 의해, 보안 메모리 영역에 하나 이상의 사전 취출된 플랫폼 펌웨어 이미지를 사전 저장하게 한다.
예 18은 예 17에 있어서, 하나 이상의 플래시 드라이브 내의 하나 이상의 플랫폼 펌웨어 이미지는 암호화되고, 컴퓨팅 플랫폼으로 하여금 또한, 하나 이상의 암호화된 플랫폼 펌웨어 이미지의 사전 취출 시에, 가상 플래시 펌웨어에 의해, 보안 메모리 영역에 하나 이상의 플랫폼 펌웨어 이미지를 사전 저장하기 전에, 하나 이상의 암호화된 플랫폼 펌웨어 이미지를 복호화하게 한다.
예 19는 예 17에 있어서, 컴퓨팅 플랫폼으로 하여금 또한, 보안 메모리 영역에 저장된 하나 이상의 플랫폼 펌웨어 이미지가 가상 플래시 펌웨어에 의해 업데이트될 때, 하나 이상의 보안되지 않은 플래시 디바이스에 저장된 하나 이상의 플랫폼 펌웨어 이미지의 암호화된 버전을 보안 메모리 영역에 저장된 하나 이상의 플랫폼 펌웨어 이미지와 동기화하게 한다.
예 20은 시스템 온 칩(SoC)으로서, 하나 이상의 프로세서 코어와, 하나 이상의 프로세서 코어와 연결되고, 하나 이상의 기본 입출력 시스템(BIOS) 이미지에 대해 하나 이상의 직렬 주변기기 인터페이스(SPI) 플래시 마스터로서 동작하는 상기 하나 이상의 프로세서 코어가 액세스하는 것을 가능하게 하기 위해 가상 플래시로서 동작하도록 구성되는 필드 프로그램가능 게이트 어레이(FPGA)를 포함하되, 가상 플래시로서 동작하는 FPGA는 SoC와 동일한 컴퓨팅 플랫폼 상에 함께 배치된 하나 이상의 보안 메모리 영역으로부터 하나 이상의 BIOS 이미지를 리턴한다.
예 21은 예 20에 있어서, FPGA는, SPI 플래시 마스터로서 SPI 플래시 마스터의 클록 레이트로 동작하는 하나 이상의 코어 중 하나로부터 커맨드를 수신하고, 수신된 커맨드를 버퍼링하는 프레임 버퍼와, 프레임 버퍼에 연결되어, 로컬 클록 레이트로 버퍼링된 커맨드를 취출하고, 변환 및 변환시에 가상 플래시의 연관된 가상 플래시 펌웨어 또는 보안 메모리 영역의 메모리 제어기로의 변환의 선택적 전달을 위해 취출된 커맨드를 포워딩하는 커맨드 포워드 회로를 제공하도록 구성된다.
예 22는 예 21에 있어서, FPGA는, 커맨드 포워드 회로에 연결되어 로컬 클록 레이트로 포워딩된 커맨드를 수신하고, 포워딩된 커맨드를 변환하며, 가상 플래시의 연관된 가상 플래시 펌웨어 또는 보안 메모리 영역의 메모리 제어기로 변환을 선택적으로 포워딩하는 커맨드 변환 회로를 제공하도록 더 구성된다.
예 23은 예 22에 있어서, FPGA는, 커맨드 포워드 회로 및 커맨드 변환 회로와 연결되어 가상 플래시의 연관된 가상 플래시 펌웨어와 인터페이싱하는 가상 플래시 인터페이스 및 커맨드 변환 회로와 연결되어 보안 메모리 영역의 메모리 제어기와 인터페이싱하는 메모리 인터페이스를 제공하도록 더 구성된다.
예 24는 예 21에 있어서, FPGA는, 프레임 버퍼와 연결되어 액세스하는 SPI 플래시 마스터에 FPGA를 연결하는 코어 인터페이스를 제공하도록 더 구성된다.
예 25는 예 20에 있어서, FPGA는 FPGA의 복수의 동작 파라미터를 저장하는 복수의 레지스터를 제공하도록 더 구성된다.
본 발명은 발명의 실시예에 따른 방법, 장치(시스템) 및 컴퓨터 프로그램 제품의 순서도 예시 및/또는 블록도를 참조하여 설명된다. 순서도 예시 및/또는 블록도의 각각의 블록, 및 순서도 예시 및/또는 블록도 내의 블록의 조합이 컴퓨터 프로그램 명령어에 의해 구현될 수 있다는 것을 이해할 것이다. 이들 컴퓨터 프로그램 명령어는 범용 컴퓨터, 특수 목적 컴퓨터, 또는 머신을 생성하기 위한 다른 프로그램가능 데이터 처리 장치의 프로세서에 제공될 수 있어서, 컴퓨터 또는 다른 프로그램가능 정보 처리 장치의 프로세서를 통해 실행되는 명령어는 순서도 및/또는 블록도 블록 또는 블록들에 특정된 기능/동작을 구현하기 위한 수단을 생성한다.
이들 컴퓨터 프로그램 명령어는 또한 컴퓨터 또는 다른 프로그램가능 데이터 처리 장치가 특정 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독가능 매체에 저장될 수 있어서, 컴퓨터 판독가능 매체에 저장된 명령어는 순서도 및/또는 블록도 블록 또는 블록들에 명시된 기능/동작을 구현하는 명령어 수단을 포함하는 제조 물품을 생성한다.
컴퓨터 프로그램 명령어는 또한 컴퓨터 또는 다른 프로그램가능 데이터 처리 장치 상에 로딩되어 컴퓨터 또는 다른 프로그램가능 장치에서 수행될 일련의 동작 단계가 컴퓨터로 구현된 프로세스를 생성하게 하여 컴퓨터 또는 다른 프로그램가능 장치 상에서 실행되는 명령어가 순서도 및/또는 블록도 블록 또는 블록들에 명시된 기능/동작을 구현하기 위한 프로세스를 제공할 수 있다.
도면의 순서도 및 블록도는 본 발명의 다양한 실시예에 따른 시스템, 방법 및 컴퓨터 프로그램 제품의 가능한 구현의 아키텍처, 기능 및 동작을 예시한다. 이와 관련하여, 순서도 또는 블록도 내의 각각의 블록은 명시된 논리적 기능(들)을 구현하기 위한 하나 이상의 실행가능 명령어를 포함하는 모듈, 세그먼트, 또는 코드의 일부를 나타낼 수 있다. 또한, 몇몇 다른 구현에서, 블록에 언급된 기능은 도면에 언급된 순서를 벗어나 발생할 수 있다는 점에 유의해야 한다. 예를 들어, 연속하여 도시된 2개의 블록은 실제로 실질적으로 동시에 실행될 수 있거나, 블록은 때때로 수반되는 기능에 따라 역순으로 실행될 수 있다. 블록도 및/또는 순서도 예시의 각각의 블록, 및 블록도 및/또는 순서도 예시의 블록의 조합은, 명시된 기능 또는 동작을 수행하는 특수 목적 하드웨어 기반 시스템, 또는 특수 목적 하드웨어 및 컴퓨터 명령어의 조합에 의해 구현될 수 있다는 점에도 유의할 것이다. 본 명세서에서 사용되는 바와 같이, "컴퓨터로 구현된 방법"은 하나 이상의 프로세서, 하나 이상의 프로세서를 갖는 컴퓨터 시스템, (하나 이상의 프로세서를 포함할 수 있는) 스마트폰과 같은 이동 디바이스, 태블릿, 랩톱 컴퓨터, 셋톱 박스, 게임 콘솔 등에 의해 실행되는 임의의 방법을 지칭할 수 있다.
실시예는 컴퓨터 프로세스, 컴퓨팅 시스템 또는 컴퓨터 판독가능 매체의 컴퓨터 프로그램 제품과 같은 제조 물품으로서 구현될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 시스템에 의해 판독가능하고 컴퓨터 프로세스를 실행하기 위한 컴퓨터 프로그램 명령어를 인코딩하는 컴퓨터 저장 매체일 수 있다.
아래의 청구범위에서의 모든 수단 또는 단계뿐만 아니라 기능 요소의 대응하는 구조, 재료, 동작, 및 균등물은 구체적으로 청구되는 다른 청구된 요소와 조합하여 기능을 수행하기 위한 임의의 구조, 재료 또는 동작을 포함하도록 의도된다. 본 발명의 설명은 예시 및 설명을 위해 제시되었지만, 모든 것을 망라한 것이라고는 볼 수 없고, 본 발명을 개시된 정확한 형태로 제한하려는 것도 아니다. 다수의 수정 및 변형이 본 발명의 범위 및 사상으로부터 벗어나지 않으면서 당업자에게 명백할 것이다. 실시예는 본 발명의 원리 및 실제 응용을 가장 잘 설명하고, 당업자가 고려되는 특정 용도에 적합한 다양한 수정을 갖는 실시예에 대한 개시내용을 이해할 수 있게 하도록 선택되고 설명된다.
하나 이상의 구현의 전술한 설명은 예시 및 설명을 제공하지만, 모든 것을 망라한 것이라고는 볼 수 없고, 실시예의 범위를 개시된 정확한 형태로 제한하려는 것도 아니다. 위의 교시에 비추어 수정 및 변형이 가능하거나 다양한 실시예의 실행으로부터 획득될 수 있다.

Claims (25)

  1. 컴퓨팅을 위한 장치로서,
    컴퓨팅 플랫폼의 하나 이상의 플래시 디바이스로부터의 하나 이상의 플랫폼 펌웨어 이미지에 대해 상기 컴퓨팅 플랫폼의 하나 이상의 코어가 액세스하는 것을 가능하게 하기 위해 협력하는 회로 및 펌웨어를 포함하는 가상 플래시를 포함하되,
    상기 가능화는 대신에 상기 컴퓨팅 플랫폼의 하나 이상의 보안 메모리 영역으로부터 상기 하나 이상의 코어에 대한 상기 하나 이상의 플랫폼 펌웨어 이미지의 리턴을 포함하는
    장치.
  2. 제1항에 있어서,
    상기 회로는,
    상기 하나 이상의 코어 중 하나의 코어로부터 상기 하나의 코어의 클록 레이트로 커맨드를 수신하고, 상기 수신된 커맨드를 버퍼링하는 프레임 버퍼와,
    상기 프레임 버퍼에 연결되어, 로컬 클록 레이트로 상기 버퍼링된 커맨드를 취출하고, 변환 및 상기 로컬 클록 레이트로 상기 가상 플래시의 상보형 가상 플래시 펌웨어 또는 상기 보안 메모리 영역의 메모리 제어기로의 상기 변환의 선택적 전달을 위해 상기 취출된 커맨드를 포워딩하는 커맨드 포워드 회로
    를 포함하는 동기 디지털 회로를 포함하는
    장치.
  3. 제2항에 있어서,
    상기 동기 디지털 회로는, 상기 커맨드 포워드 회로에 연결되어, 상기 로컬 클록 레이트로 상기 포워딩된 커맨드를 수신하고, 상기 포워딩된 커맨드를 변환하며, 상기 변환을 상기 로컬 클록 레이트로 상기 가상 플래시의 상기 상보형 가상 플래시 펌웨어 또는 상기 보안 메모리 영역의 상기 메모리 제어기에 선택적으로 포워딩하는 커맨드 변환 회로를 더 포함하는
    장치.
  4. 제3항에 있어서,
    상기 동기 디지털 회로는, 상기 커맨드 포워드 회로 및 상기 커맨드 변환 회로와 연결되어 상기 가상 플래시의 상기 상보형 가상 플래시 펌웨어와 인터페이싱하는 가상 플래시 펌웨어 인터페이스를 더 포함하는
    장치.
  5. 제3항에 있어서,
    상기 커맨드 변환 회로와 연결되어 상기 로컬 클록 레이트로 상기 보안 메모리 영역의 상기 메모리 제어기와 인터페이싱하는 메모리 인터페이스를 더 포함하는
    장치.
  6. 제2항에 있어서,
    상기 프레임 버퍼와 연결되어 상기 하나 이상의 코어에 상기 가상 플래시를 대응하는 코어의 클록 레이트로 선택적으로 연결하는 코어 인터페이스를 더 포함하는
    장치.
  7. 제1항에 있어서,
    상기 가상 플래시는 상기 가상 플래시의 복수의 동작 파라미터를 저장하는 복수의 레지스터를 더 포함하는
    장치.
  8. 제1항에 있어서,
    상기 회로는 필드 프로그램가능 게이트 어레이(field programming gate array: FPGA)를 사용하여 구현되는
    장치.
  9. 제8항에 있어서,
    상기 장치는 서로 연결된 상기 FPGA 및 상기 하나 이상의 코어 중 하나를 갖는 시스템 온 칩인
    장치.
  10. 제1항에 있어서,
    상기 펌웨어는, 상기 하나 이상의 플랫폼 펌웨어 이미지를 취출하고 상기 보안 메모리 영역에 상기 하나 이상의 플랫폼 펌웨어 이미지를 저장함으로써, 상기 하나 이상의 플래시 디바이스로부터 상기 보안 메모리 영역으로 상기 하나 이상의 플랫폼 펌웨어 이미지를 로딩하는 초기화 모듈을 포함하는
    장치.
  11. 제10항에 있어서,
    상기 하나 이상의 플래시 디바이스 내의 상기 하나 이상의 플랫폼 펌웨어 이미지는 암호화되고,
    상기 플래시의 펌웨어는, 상기 하나 이상의 플랫폼 펌웨어 이미지가 상기 보안 메모리 영역 내에 저장되기 전에, 상기 하나 이상의 플래시 디바이스에 저장된 상기 암호화된 하나 이상의 플랫폼 펌웨어 이미지로부터 상기 하나 이상의 플랫폼 펌웨어 이미지를 복원하는 복호화 엔진을 더 포함하는
    장치.
  12. 제10항에 있어서,
    상기 펌웨어는, 상기 보안 메모리 영역에 저장된 상기 하나 이상의 플랫폼 펌웨어 이미지가 업데이트되었다는 것에 응답하여, 상기 하나 이상의 플래시 디바이스에 저장된 상기 하나 이상의 플랫폼 펌웨어 이미지의 암호화된 버전을 상기 보안 메모리 영역에 저장된 상기 하나 이상의 플랫폼 펌웨어 이미지와 동기화하는 동기화 엔진을 포함하는
    장치.
  13. 컴퓨팅을 위한 방법으로서,
    가상 플래시를 사용하여, 컴퓨팅 플랫폼의 하나 이상의 플래시 드라이브로부터 하나 이상의 플랫폼 펌웨어 이미지를 취출하는 단계와,
    상기 가상 플래시에 의해, 상기 하나 이상의 취출된 플랫폼 펌웨어 이미지를 상기 컴퓨팅 플랫폼의 하나 이상의 보안 메모리 영역에 저장하는 단계 - 상기 하나 이상의 보안 메모리 영역은 상기 가상 플래시의 상보형 가상 플래시 펌웨어에 의해 관리됨 - 와,
    상기 가상 플래시에 의해, 상기 하나 이상의 플래시 드라이브로부터 상기 컴퓨팅 플랫폼의 하나 이상의 코어에 의해 상기 하나 이상의 플랫폼 펌웨어 이미지에 액세스하려는 시도를 수신하는 단계와,
    대신에 상기 가상 플래시의 상기 상보형 가상 플래시 펌웨어에 의해 관리되는 상기 하나 이상의 보안 메모리 영역으로부터, 상기 가상 플래시에 의해, 상기 하나 이상의 플랫폼 펌웨어 이미지를 취출하고 리턴하는 단계를 포함하는
    방법.
  14. 제13항에 있어서,
    상기 하나 이상의 플래시 드라이브 내의 상기 하나 이상의 플랫폼 펌웨어 이미지는 암호화되고,
    상기 방법은, 상기 가상 플래시에 의한 상기 하나 이상의 플래시 드라이브로부터의 취출 시에, 상기 가상 플래시의 상기 상보형 가상 플래시 펌웨어에 의해 관리되는 상기 하나 이상의 보안 메모리 영역에 상기 하나 이상의 플랫폼 펌웨어 이미지를 저장하기 전에, 상기 가상 플래시에 의해, 상기 하나 이상의 암호화된 플랫폼 펌웨어 이미지를 복호화하는 단계를 더 포함하는
    방법.
  15. 제13항에 있어서,
    상기 하나 이상의 보안 메모리 영역에 저장된 상기 하나 이상의 플랫폼 펌웨어 이미지가 업데이트될 때, 상기 하나 이상의 플래시 디바이스에 저장된 상기 하나 이상의 플랫폼 펌웨어 이미지의 암호화된 버전을 상기 하나 이상의 보안 메모리 영역에 저장된 상기 하나 이상의 플랫폼 펌웨어 이미지와 동기화하는 단계를 더 포함하는
    방법.
  16. 명령어가 저장되어 있는 적어도 하나의 컴퓨터 판독가능 매체(CRM)로서,
    상기 명령어는, 컴퓨팅 플랫폼으로 하여금 상기 명령어의 실행에 응답하여,
    연관된 가상 플래시 펌웨어를 가진 가상 플래시를 사용하여, 하나 이상의 플래시 드라이브로부터 상기 컴퓨팅 플랫폼의 하나 이상의 코어에 의해 하나 이상의 플랫폼 펌웨어 이미지에 액세스하려는 시도를 수신하게 하고,
    상기 가상 플래시 펌웨어를 사용하여, 상기 컴퓨팅 플랫폼의 보안 메모리 영역으로부터 상기 하나 이상의 플랫폼 펌웨어 이미지를 취출하고 리턴하게 하며, 상기 가상 플래시 펌웨어는 상기 컴퓨팅 플랫폼의 보안 메모리 영역의 액세스 제어를 갖는
    컴퓨터 판독가능 매체(CRM).
  17. 제16항에 있어서,
    상기 컴퓨팅 플랫폼으로 하여금 또한,
    상기 가상 플래시 펌웨어에 의해, 상기 컴퓨팅 플랫폼의 하나 이상의 플래시 드라이브로부터 상기 하나 이상의 플랫폼 펌웨어 이미지를 사전 취출하게 하고,
    상기 가상 플래시 펌웨어에 의해, 상기 보안 메모리 영역에 상기 하나 이상의 사전 취출된 플랫폼 펌웨어 이미지를 사전 저장하게 하는
    컴퓨터 판독가능 매체(CRM).
  18. 제17항에 있어서,
    상기 하나 이상의 플래시 드라이브 내의 상기 하나 이상의 플랫폼 펌웨어 이미지는 암호화되고,
    상기 컴퓨팅 플랫폼으로 하여금 또한, 상기 하나 이상의 암호화된 플랫폼 펌웨어 이미지의 사전 취출 시에, 상기 가상 플래시 펌웨어에 의해, 상기 보안 메모리 영역에 상기 하나 이상의 플랫폼 펌웨어 이미지를 사전 저장하기 전에, 상기 하나 이상의 암호화된 플랫폼 펌웨어 이미지를 복호화하게 하는
    컴퓨터 판독가능 매체(CRM).
  19. 제17항에 있어서,
    상기 컴퓨팅 플랫폼으로 하여금 또한,
    상기 보안 메모리 영역에 저장된 상기 하나 이상의 플랫폼 펌웨어 이미지가 상기 가상 플래시 펌웨어에 의해 업데이트될 때, 상기 하나 이상의 보안되지 않은 플래시 디바이스에 저장된 상기 하나 이상의 플랫폼 펌웨어 이미지의 암호화된 버전을 상기 보안 메모리 영역에 저장된 상기 하나 이상의 플랫폼 펌웨어 이미지와 동기화하게 하는
    컴퓨터 판독가능 매체(CRM).
  20. 시스템 온 칩(SoC)으로서,
    하나 이상의 프로세서 코어와,
    상기 하나 이상의 프로세서 코어와 연결되고, 하나 이상의 기본 입출력 시스템(BIOS) 이미지에 대해 하나 이상의 직렬 주변기기 인터페이스(SPI) 플래시 마스터로서 동작하는 상기 하나 이상의 프로세서 코어가 액세스하는 것을 가능하게 하기 위해 가상 플래시로서 동작하도록 구성되는 필드 프로그램가능 게이트 어레이(FPGA)를 포함하되,
    상기 가상 플래시로서 동작하는 상기 FPGA는 상기 SoC와 동일한 컴퓨팅 플랫폼 상에 함께 배치된 하나 이상의 보안 메모리 영역으로부터 상기 하나 이상의 BIOS 이미지를 리턴하는
    시스템 온 칩(SoC).
  21. 제20항에 있어서,
    상기 FPGA는,
    SPI 플래시 마스터로서 상기 SPI 플래시 마스터의 클록 레이트로 동작하는 상기 하나 이상의 코어 중 하나로부터 커맨드를 수신하고, 상기 수신된 커맨드를 버퍼링하는 프레임 버퍼와,
    상기 프레임 버퍼에 연결되어, 로컬 클록 레이트로 상기 버퍼링된 커맨드를 취출하고, 변환 및 변환시에 상기 가상 플래시의 연관된 가상 플래시 펌웨어 또는 상기 보안 메모리 영역의 메모리 제어기로의 상기 변환의 선택적 전달을 위해 상기 취출된 커맨드를 포워딩하는 커맨드 포워드 회로
    를 제공하도록 구성되는
    시스템 온 칩(SoC).
  22. 제21항에 있어서,
    상기 FPGA는, 상기 커맨드 포워드 회로에 연결되어 상기 로컬 클록 레이트로 상기 포워딩된 커맨드를 수신하고, 상기 포워딩된 커맨드를 변환하며, 상기 가상 플래시의 연관된 가상 플래시 펌웨어 또는 상기 보안 메모리 영역의 상기 메모리 제어기로 상기 변환을 선택적으로 포워딩하는 커맨드 변환 회로를 제공하도록 더 구성되는
    시스템 온 칩(SoC).
  23. 제22항에 있어서,
    상기 FPGA는, 상기 커맨드 포워드 회로 및 상기 커맨드 변환 회로와 연결되어 상기 가상 플래시의 상기 연관된 가상 플래시 펌웨어와 인터페이싱하는 가상 플래시 인터페이스 및 상기 커맨드 변환 회로와 연결되어 상기 보안 메모리 영역의 상기 메모리 제어기와 인터페이싱하는 메모리 인터페이스를 제공하도록 더 구성되는
    시스템 온 칩(SoC).
  24. 제21항에 있어서,
    상기 FPGA는, 상기 프레임 버퍼와 연결되어 액세스하는 상기 SPI 플래시 마스터에 상기 FPGA를 연결하는 코어 인터페이스를 제공하도록 더 구성되는
    시스템 온 칩(SoC).
  25. 제20항에 있어서,
    상기 FPGA는 상기 FPGA의 복수의 동작 파라미터를 저장하는 복수의 레지스터를 제공하도록 더 구성되는
    시스템 온 칩(SoC).
KR1020217021421A 2019-02-11 2019-02-11 가상 플래시 KR20210125477A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/074776 WO2020163977A1 (en) 2019-02-11 2019-02-11 Virtual flash

Publications (1)

Publication Number Publication Date
KR20210125477A true KR20210125477A (ko) 2021-10-18

Family

ID=72044340

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217021421A KR20210125477A (ko) 2019-02-11 2019-02-11 가상 플래시

Country Status (4)

Country Link
KR (1) KR20210125477A (ko)
CN (1) CN113260991A (ko)
DE (1) DE112019006221T5 (ko)
WO (1) WO2020163977A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11537329B1 (en) * 2021-07-19 2022-12-27 Innogrit Technologies Co., Ltd. Emulation test system for flash translation layer and method thereof

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117492798B (zh) * 2024-01-03 2024-03-08 广云物联网科技(广州)有限公司 一种多芯片多通道远程升级方法及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663301B (zh) * 2012-04-13 2014-10-29 北京国基科技股份有限公司 一种可信计算机及可信性检测方法
CN103593622A (zh) * 2013-11-05 2014-02-19 浪潮集团有限公司 一种基于fpga的安全可信计算机的设计方法
US9158628B2 (en) * 2013-11-27 2015-10-13 American Megatrends, Inc. Bios failover update with service processor having direct serial peripheral interface (SPI) access
US10248428B2 (en) * 2014-04-28 2019-04-02 Intel Corporation Securely booting a computing device
CN106997438B (zh) * 2017-03-29 2019-11-12 山东英特力数据技术有限公司 一种可信服务器cpu设计方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11537329B1 (en) * 2021-07-19 2022-12-27 Innogrit Technologies Co., Ltd. Emulation test system for flash translation layer and method thereof

Also Published As

Publication number Publication date
DE112019006221T5 (de) 2021-11-04
CN113260991A (zh) 2021-08-13
WO2020163977A1 (en) 2020-08-20

Similar Documents

Publication Publication Date Title
US11669481B2 (en) Enabling sync header suppression latency optimization in the presence of retimers for serial interconnect
EP3706005B1 (en) Secure stream protocol for serial interconnect
US11789889B2 (en) Mechanism for device interoperability of switches in computer buses
US10755156B2 (en) Configurable integrity protected link for secure accelerator communication
US11743109B2 (en) Link layer communication by multiple link layer encodings for computer buses
US11818058B2 (en) Shared resources for multiple communication traffics
US11593529B2 (en) Device interface security management for computer buses
US10762875B2 (en) Synchronization of a display device in a system including multiple display devices
CN107077186B (zh) 低功率计算成像
US11394531B2 (en) Overhead reduction for link protection
US11533170B2 (en) Hardware mechanisms for link encryption
US10664600B2 (en) Mechanisms for booting a computing device and programmable circuit
US20190052539A1 (en) Programmable tester for master-slave device networks
WO2020163977A1 (en) Virtual flash
US11789891B2 (en) Multi-device read protocol using a single device group read command

Legal Events

Date Code Title Description
E902 Notification of reason for refusal