KR20230087336A - 가상화 시스템 및 그 구동 방법 - Google Patents

가상화 시스템 및 그 구동 방법 Download PDF

Info

Publication number
KR20230087336A
KR20230087336A KR1020220020540A KR20220020540A KR20230087336A KR 20230087336 A KR20230087336 A KR 20230087336A KR 1020220020540 A KR1020220020540 A KR 1020220020540A KR 20220020540 A KR20220020540 A KR 20220020540A KR 20230087336 A KR20230087336 A KR 20230087336A
Authority
KR
South Korea
Prior art keywords
operating system
virtualization
hardware
guest
output device
Prior art date
Application number
KR1020220020540A
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 삼성전자주식회사
Priority to US17/934,371 priority Critical patent/US20230185598A1/en
Priority to EP22207329.8A priority patent/EP4195043A1/en
Priority to CN202211529120.1A priority patent/CN116414516A/zh
Publication of KR20230087336A publication Critical patent/KR20230087336A/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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

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

Abstract

가상화 시스템은 프로세서, 호스트 운영 체제, 적어도 하나의 게스트 운영 체제, 하이퍼바이저, 적어도 하나의 하드웨어 입출력 장치 및 적어도 하나의 하드웨어 인터페이스 장치를 포함한다. 프로세서는 가상화 환경을 구현하기 위한 기능을 제공한다. 호스트 운영 체제는 가상화 환경에서 동작한다. 적어도 하나의 게스트 운영 체제는 가상화 환경의 적어도 하나의 가상 머신에서 동작한다. 하이퍼바이저는 프로세서의 기능을 이용하여 가상화 환경을 구현하고, 가상화 환경에서 적어도 하나의 가상 머신을 생성 및 제어한다. 적어도 하나의 하드웨어 입출력 장치는 호스트 운영 체제 및 적어도 하나의 게스트 운영 체제에 의해 제어된다. 적어도 하나의 하드웨어 인터페이스 장치는 적어도 하나의 게스트 운영 체제 및 적어도 하나의 하드웨어 입출력 장치 사이의 통신을 지원한다.

Description

가상화 시스템 및 그 구동 방법{VIRTUALIZED SYSTEM AND METHOD OF OPERATING THE SAME}
본 발명은 반도체 집적 회로에 관한 것으로서, 더욱 상세하게는 가상화 시스템 및 상기 가상화 시스템의 구동 방법에 관한 것이다.
가상화(virtualization)는 물리적 장치의 하드웨어를 여러 개의 가상화된 하드웨어(가상 머신, virtual machine)로 표현함으로써 하나의 물리적 장치에서 다양한 운영 체제가 동작할 수 있도록 하는 기술을 말한다. 서로 다른 운영 체제들은 가상화 기술이 적용된 프로세서가 제공하는 가상화 환경에서 서로 독립적으로 동작할 수 있다. 가상화 기술은 격리(isolation), 높은 가용성(high availability), 워크로드 밸런싱(workload balancing), 샌드박싱(sandboxing), 하드웨어에 독립적인 소프트웨어(hardware agnostic software) 등과 같은 장점들을 제공할 수 있다.
가상화 시스템은 프로세서, 메모리, 다양한 기능을 갖는 IP(intellectual property) 등과 같은 다양한 하드웨어 장치들을 포함하며, 상기와 같은 다양한 하드웨어 장치들은 다양한 운영 체제들에 의해 공유될 수 있다. 제한된 하드웨어 장치들을 효율적으로 공유할 수 있는 다양한 기술들이 연구되고 있다. 또한, 하나의 운영 체제를 다양한 하드웨어 상에서 소프트웨어의 변경 없이 구동하기 위하여, 다양한 하드웨어 상에서 동일한 가상화된 하드웨어를 제공하기 위한 시도도 진행되고 있다.
본 발명의 일 목적은 다양한 운영 체제들이 다양한 하드웨어 장치들을 효율적으로 공유할 수 있는 가상화 시스템을 제공하는 것이다.
본 발명의 다른 목적은 상기 가상화 시스템의 구동 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 가상화 시스템은 프로세서, 호스트(host) 운영 체제(operating system; OS), 적어도 하나의 게스트(guest) 운영 체제, 하이퍼바이저(hypervisor), 적어도 하나의 하드웨어 입출력(input/output; I/O) 장치 및 적어도 하나의 하드웨어 인터페이스 장치를 포함한다. 상기 프로세서는 가상화 환경을 구현하기 위한 기능을 제공한다. 상기 호스트 운영 체제는 상기 가상화 환경에서 동작한다. 상기 적어도 하나의 게스트 운영 체제는 상기 가상화 환경의 적어도 하나의 가상 머신(virtual machine)에서 동작한다. 상기 하이퍼바이저는 상기 프로세서의 기능을 이용하여 상기 가상화 환경을 구현하고, 상기 가상화 환경에서 상기 적어도 하나의 가상 머신을 생성 및 제어한다. 상기 적어도 하나의 하드웨어 입출력 장치는 상기 호스트 운영 체제 및 상기 적어도 하나의 게스트 운영 체제에 의해 제어된다. 상기 적어도 하나의 하드웨어 인터페이스 장치는 상기 적어도 하나의 게스트 운영 체제 및 상기 적어도 하나의 하드웨어 입출력 장치 사이의 통신을 지원한다.
상기 다른 목적을 달성하기 위해, 본 발명의 실시예들에 따른 가상화 시스템의 구동 방법에서, 가상화 환경에서 동작하는 호스트(host) 운영 체제(operating system; OS), 상기 가상화 환경의 적어도 하나의 가상 머신(virtual machine)에서 동작하는 적어도 하나의 게스트(guest) 운영 체제, 및 상기 가상화 환경을 구현하기 위한 기능을 제공하는 프로세서를 이용하여 상기 가상화 환경을 구현하고 상기 가상화 환경에서 상기 적어도 하나의 가상 머신을 생성 및 제어하는 하이퍼바이저(hypervisor)를 실행하여, 상기 가상화 환경을 제공한다. 상기 호스트 운영 체제 및 상기 적어도 하나의 게스트 운영 체제에 의해 제어되는 적어도 하나의 하드웨어 입출력(input/output; I/O) 장치를 상기 적어도 하나의 게스트 운영 체제가 제어하고자 하는 경우에, 상기 적어도 하나의 게스트 운영 체제 및 상기 적어도 하나의 하드웨어 입출력 장치 사이의 통신을 지원하는 적어도 하나의 하드웨어 인터페이스 장치를 이용하여 상기 적어도 하나의 하드웨어 입출력 장치를 제어한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 가상화 시스템은 프로세서, 호스트(host) 운영 체제(operating system; OS), 제1 및 제2 게스트(guest) 운영 체제들, 하이퍼바이저(hypervisor), 하드웨어 입출력(input/output; I/O) 장치, 및 제1 및 제2 하드웨어 인터페이스 장치들을 포함한다. 상기 프로세서는 가상화 환경을 구현하기 위한 기능을 제공한다. 상기 호스트 운영 체제는 상기 가상화 환경의 호스트 가상 머신에서 동작한다. 상기 제1 및 제2 게스트 운영 체제들은 상기 가상화 환경의 서로 다른 제1 및 제2 게스트 가상 머신들에서 각각 독립적으로 동작하고, 상기 호스트 운영 체제와 독립적으로 동작한다. 상기 하이퍼바이저는 상기 프로세서의 기능을 이용하여 상기 가상화 환경을 구현하고, 상기 가상화 환경에서 상기 호스트 가상 머신 및 상기 제1 및 제2 게스트 가상 머신들을 생성 및 제어한다. 상기 하드웨어 입출력 장치는 상기 호스트 운영 체제 및 상기 제1 및 제2 게스트 운영 체제들에 의해 제어된다. 상기 제1 하드웨어 인터페이스 장치는 상기 제1 게스트 운영 체제 및 상기 하드웨어 입출력 장치 사이의 통신을 지원한다. 상기 제2 하드웨어 인터페이스 장치는 상기 제2 게스트 운영 체제 및 상기 하드웨어 입출력 장치 사이의 통신을 지원하고, 상기 제1 하드웨어 인터페이스 장치와 다르다. 상기 제1 게스트 운영 체제는 상기 가상화 환경에서의 동작을 위한 제1 게스트 가상화 드라이버를 포함하고, 상기 제1 게스트 가상화 드라이버 및 상기 제1 하드웨어 인터페이스 장치를 통해 상기 하드웨어 입출력 장치를 제어한다. 상기 제2 게스트 운영 체제는 상기 가상화 환경에서의 동작을 위한 제2 게스트 가상화 드라이버를 포함하고, 상기 제2 게스트 가상화 드라이버 및 상기 제2 하드웨어 인터페이스 장치를 통해 상기 하드웨어 입출력 장치를 제어한다. 상기 호스트 운영 체제는 상기 가상화 환경에서의 동작을 위한 호스트 가상화 드라이버 및 상기 하드웨어 입출력 장치를 직접 제어하는 장치 드라이버를 포함하고, 상기 제1 하드웨어 인터페이스 장치 또는 상기 제2 하드웨어 인터페이스 장치의 이용 없이 상기 호스트 가상화 드라이버 및 상기 장치 드라이버를 통해 상기 하드웨어 입출력 장치를 제어한다.
상기와 같은 본 발명의 실시예들에 따른 가상화 시스템 및 가상화 시스템의 구동 방법에서는, 기존에 소프트웨어를 이용하여 구현되었던 하드웨어 입출력 장치에 대한 가상화를 하드웨어를 이용하여 호환성 있게 구현할 수 있다. 구체적으로, 가상화 시스템은 게스트 운영 체제 및 가상화된 입출력 장치와 가상화된 입출력 장치가 제공하는 인터페이스를 이용하여 가상화된 입출력 장치를 제어하는 장치 드라이버를 포함할 수 있다.
가상화되지 않은 하드웨어 입출력 장치가 가상화된 하드웨어 입출력 장치와 동일한 인터페이스를 제공함으로써, 게스트 운영 체제의 장치 드라이버는 가상화된 하드웨어 입출력 장치와 가상화되지 않은 하드웨어 입출력 장치를 모두 제어할 수 있다. 따라서, 게스트 운영 체제가 가상화된 하드웨어 입출력 장치와 동일한 인터페이스를 제공하는 하드웨어 입출력 장치와 통신하며, 가상화를 구현하는 복잡한 소프트웨어 레이어들을 거치지 않고 하드웨어 입출력 장치와 통신함으로써, 하드웨어 입출력 장치의 성능을 유지하고 성능 저하를 방지할 수 있으며, 이와 함께 소프트웨어의 호환성, 이식성을 보장할 수 있다.
도 1은 본 발명의 실시예들에 따른 가상화 시스템을 나타내는 블록도이다.
도 2는 본 발명의 실시예들에 따른 가상화 시스템의 구동 방법을 나타내는 순서도이다.
도 3은 본 발명의 실시예들에 따른 가상화 시스템에 의해 구현되는 가상화 환경을 설명하기 위한 도면이다.
도 4, 5 및 6은 본 발명의 실시예들에 따른 가상화 시스템에 의해 구현되는 가상화 환경의 계층 구조의 예들을 나타내는 도면들이다.
도 7 및 8은 도 1의 가상화 시스템의 구체적인 예들을 나타내는 블록도들이다.
도 9a 및 9b는 도 7 및 8의 가상화 시스템의 동작을 설명하기 위한 도면들이다.
도 10 및 11은 본 발명의 실시예들에 따른 가상화 시스템들을 나타내는 블록도들이다.
도 12는 본 발명의 실시예들에 따른 가상화 시스템을 나타내는 블록도이다.
도 13은 본 발명의 실시예들에 따른 가상화 시스템을 포함하는 자율 주행 장치를 나타내는 블록도이다.
도 14는 본 발명의 실시예들에 따른 가상화 시스템이 자율 주행 차량에 설치된 예를 나타내는 도면이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 가상화 시스템을 나타내는 블록도이다.
도 1을 참조하면, 가상화 시스템(virtualized system)(10)은 프로세서(100), 호스트(host) 운영 체제(operating system; OS)(200), 적어도 하나의 게스트(guest) 운영 체제(300), 하이퍼바이저(hypervisor)(400), 적어도 하나의 하드웨어 입출력(input/output; I/O) 장치(500) 및 적어도 하나의 하드웨어 인터페이스 장치(600)를 포함한다.
프로세서(100)는 가상화 환경(virtualization environments)을 구현하기 위한 기능을 제공한다. 호스트 운영 체제(200), 적어도 하나의 게스트 운영 체제(300) 및 하이퍼바이저(400)는 상기 가상화 환경에서 동작(running)한다.
예를 들어, 호스트 운영 체제(200)는 상기 가상화 환경의 호스트 가상 머신(virtual machine)에서 동작하고, 적어도 하나의 게스트 운영 체제(300)는 상기 가상화 환경의 적어도 하나의 게스트 가상 머신에서 동작하고 상기 호스트 운영 체제와 독립적으로 동작하며, 하이퍼바이저(400)는 프로세서(100)의 기능을 이용하여 상기 가상화 환경을 구현하고 상기 가상화 환경에서 상기 호스트 가상 머신 및 상기 적어도 하나의 게스트 가상 머신을 생성 및 제어할 수 있다.
도시의 편의상, 도 1에서는 1개의 게스트 운영 체제(300)만이 도시되어 있으나, 본 발명의 실시예들이 이에 한정되는 것은 아니며, 하이퍼바이저(400) 상에서 동작하는 게스트 운영 체제들의 개수는 가상화 환경에 따라서 다양하게 결정될 수 있다. 예를 들어, 도 10을 참조하여 후술하는 것처럼, 가상화 시스템은 2개 이상의 게스트 운영 체제들을 포함할 수 있다.
또한, 도 1에서는 편의상 호스트 운영 체제(200), 적어도 하나의 게스트 운영 체제(300) 및 하이퍼바이저(400)가 프로세서(100)에 포함되는 것으로 도시되어 있으나, 호스트 운영 체제(200), 적어도 하나의 게스트 운영 체제(300) 및 하이퍼바이저(400)는 소프트웨어 프로그램으로서 메모리 장치에 로딩되고 프로세서(100)에 의해 실행될 수 있다.
예를 들어, 도 12를 참조하여 후술하는 것처럼, 가상화 시스템(10)은 메모리 장치 및 저장 장치를 더 포함할 수 있다. 상기 메모리 장치는 데이터 및 프로그램 코드를 저장하고, 상기 가상화 환경을 구현하기 호스트 운영 체제(200), 적어도 하나의 게스트 운영 체제(300) 및 하이퍼바이저(400) 등의 소프트웨어 프로그램이 로드될 수 있다. 상기 저장 장치는 호스트 운영 체제(200), 적어도 하나의 게스트 운영 체제(300) 및 하이퍼바이저(400)를 저장할 수 있다. 예를 들어, 가상화 시스템(10)의 부팅 시에 상기 저장 장치에 저장된 소프트웨어 프로그램이 부팅 시퀀스에 의거하여 상기 메모리 장치로 로드되고, 상기 메모리 장치에 로드된 소프트웨어 프로그램에 기초하여 프로세서(100)는 상기 가상화 환경을 제공할 수 있다. 이와 같이, 상기 메모리 장치는 가상화 시스템(10)의 워킹 메모리로서 기능할 수 있다. 예를 들어, 상기 메모리 장치는 DRAM(dynamic random access memory), SRAM(static random access memory) 등의 휘발성 메모리를 포함하고, 상기 저장 장치는 EEPROM(electrically erasable programmable read-only memory), 플래시 메모리(flash memory), PRAM(phase-change random access memory), RRAM(resistive random access memory), MRAM(magnetic random access memory), FRAM(ferroelectric random access memory) 등의 비휘발성 메모리를 포함할 수 있으나, 본 발명의 실시예들이 이에 한정되는 것은 아니다.
상기 가상화 환경의 예시적인 구성에 대해서는 도 3 등을 참조하여 후술하도록 한다.
적어도 하나의 하드웨어 입출력 장치(500)는 호스트 운영 체제(200) 및 적어도 하나의 게스트 운영 체제(300)에 의해 제어된다. 예를 들어, 적어도 하나의 하드웨어 입출력 장치(500)는 메모리 장치, 카메라, GPU(graphics processing unit), NPU(neural processing unit), PCIe(peripheral component interconnect express) 장치, UFS(universal flash storage) 장치 등과 같은 다양한 물리적인 하드웨어 장치들 중 적어도 하나를 포함할 수 있다. 도 1에서는 1개의 하드웨어 입출력 장치를 도시하였으나, 본 발명의 실시예들이 이에 한정되는 것은 아니며, 하드웨어 입출력 장치들의 개수는 실시예에 따라서 다양하게 결정될 수 있다. 예를 들어, 도 11을 참조하여 후술하는 것처럼, 가상화 시스템은 2개 이상의 하드웨어 입출력 장치들을 포함할 수 있다.
적어도 하나의 하드웨어 인터페이스 장치(600)는 적어도 하나의 게스트 운영 체제(300) 및 적어도 하나의 하드웨어 입출력 장치(500) 사이의 통신을 지원한다. 예를 들어, 적어도 하나의 하드웨어 인터페이스 장치(600)는 적어도 하나의 하드웨어 입출력 장치(500)와의 통신을 위한 물리적인 하드웨어 장치일 수 있다. 도 1에서는 1개의 하드웨어 인터페이스 장치를 도시하였으나, 본 발명의 실시예들이 이에 한정되는 것은 아니며, 하드웨어 인터페이스 장치들의 개수는 게스트 운영 체제들의 개수 및/또는 하드웨어 입출력 장치들의 개수에 따라서 다양하게 결정될 수 있다. 예를 들어, 도 10 및 11을 참조하여 후술하는 것처럼, 가상화 시스템은 2개 이상의 하드웨어 인터페이스 장치들을 포함할 수 있다.
일 실시예에서, 도 1에 도시된 것처럼, 그리고 도 7을 참조하여 후술하는 것처럼, 적어도 하나의 하드웨어 인터페이스 장치(600)는 적어도 하나의 게스트 운영 체제(300) 및 하이퍼바이저(400)와 독립적으로 형성/구현될 수 있다. 다른 실시예에서, 도 8을 참조하여 후술하는 것처럼, 적어도 하나의 하드웨어 인터페이스 장치(600)는 하이퍼바이저(400)에 포함되도록 형성/구현될 수 있다.
적어도 하나의 하드웨어 인터페이스 장치(600)의 예시적인 구성에 대해서는 도 7, 8 등을 참조하여 후술하도록 한다.
일 실시예에서, 가상화 시스템(10)은 Virtual I/O Device (VIRTIO) 표준(specification)에 기초하여 동작할 수 있다.
도 2는 본 발명의 실시예들에 따른 가상화 시스템의 구동 방법을 나타내는 순서도이다.
도 1 및 2를 참조하면, 본 발명의 실시예들에 따른 가상화 시스템의 구동 방법에서, 가상화 시스템(10)은 상기 가상화 환경에서 동작하는 호스트 운영 체제(200), 상기 가상화 환경의 상기 적어도 하나의 게스트 가상 머신에서 동작하는 적어도 하나의 게스트 운영 체제(300), 및 상기 가상화 환경을 구현하기 위한 기능을 제공하는 프로세서(100)를 이용하여 상기 가상화 환경을 구현하고 상기 가상화 환경에서 상기 적어도 하나의 가상 머신을 생성 및 제어하는 하이퍼바이저(400)를 실행하여, 상기 가상화 환경을 제공한다(단계 S100).
호스트 운영 체제(200) 및 적어도 하나의 게스트 운영 체제(300)는 적어도 하나의 하드웨어 입출력 장치(500)를 제어한다. 이 때, 적어도 하나의 하드웨어 입출력 장치(500)를 제어하는 주체가 호스트 운영 체제(200)인지 적어도 하나의 게스트 운영 체제(300)인지에 따라서 적어도 하나의 하드웨어 입출력 장치(500)를 제어하는 방식이 달라질 수 있다.
구체적으로, 적어도 하나의 하드웨어 입출력 장치(500)를 적어도 하나의 게스트 운영 체제(300)가 제어하고자 하는 경우에(단계 S200: 예), 적어도 하나의 게스트 운영 체제(300) 및 적어도 하나의 하드웨어 입출력 장치(500) 사이의 통신을 지원하는 적어도 하나의 하드웨어 인터페이스 장치(600)를 이용하여 적어도 하나의 하드웨어 입출력 장치(500)를 제어한다(단계 S300). 도 1에서는 적어도 하나의 게스트 운영 체제(300)와 적어도 하나의 하드웨어 인터페이스 장치(600) 사이의 화살표, 및 적어도 하나의 하드웨어 인터페이스 장치(600)와 적어도 하나의 하드웨어 입출력 장치(500) 사이의 화살표를 통해 단계 S300의 동작을 도시하였다.
이에 비하여, 적어도 하나의 하드웨어 입출력 장치(500)를 호스트 운영 체제(200)가 제어하고자 하는 경우에(단계 S200: 아니오), 적어도 하나의 하드웨어 인터페이스 장치(600)의 이용 없이 적어도 하나의 하드웨어 입출력 장치(500)를 제어할 수 있다(단계 S400). 도 1에서는 호스트 운영 체제(200)와 적어도 하나의 하드웨어 입출력 장치(500) 사이의 화살표를 통해 단계 S400의 동작을 도시하였다.
기존에는 소프트웨어를 이용하여 하드웨어 입출력 장치에 대한 가상화를 구현하였으며, 이 경우 복잡한 소프트웨어 레이어들이 구현됨에 따라 하드웨어 입출력 장치의 성능이 저하되거나, 전용(dedicated) 하드웨어 입출력 장치를 사용함에 따라 소프트웨어의 호환성, 이식성이 악화되는 문제가 있었다.
본 발명의 실시예들에 따르면, 기존에 소프트웨어를 이용하여 구현되었던 하드웨어 입출력 장치에 대한 가상화를 하드웨어를 이용하여 호환성 있게 구현할 수 있다. 구체적으로, 가상화 시스템(10)은 적어도 하나의 게스트 운영 체제(300) 및 적어도 하나의 하드웨어 입출력 장치(500) 사이의 통신을 지원하는 적어도 하나의 하드웨어 인터페이스 장치(600)를 포함하여 구현되며, 적어도 하나의 게스트 운영 체제(300)는 적어도 하나의 하드웨어 인터페이스 장치(600)를 이용하여 적어도 하나의 하드웨어 입출력 장치(500)를 제어할 수 있다.
특히, 가상화 시스템은 게스트 운영 체제 및 가상화된 입출력 장치와 가상화된 입출력 장치가 제공하는 인터페이스를 이용하여 가상화된 입출력 장치를 제어하는 장치 드라이버를 포함할 수 있다. 가상화되지 않은 하드웨어 입출력 장치가 가상화된 하드웨어 입출력 장치와 동일한 인터페이스를 제공함으로써, 게스트 운영 체제의 장치 드라이버는 가상화된 하드웨어 입출력 장치와 가상화되지 않은 하드웨어 입출력 장치를 모두 제어할 수 있다.
따라서, 게스트 운영 체제(300)가 가상화된 하드웨어 입출력 장치와 동일한 인터페이스를 제공하는 하드웨어 입출력 장치와 통신하며, 가상화를 구현하는 복잡한 소프트웨어 레이어들을 거치지 않고 하드웨어 입출력 장치(500)와 통신함으로써, 하드웨어 입출력 장치(500)의 성능을 유지하고 성능 저하를 방지할 수 있으며, 이와 함께 소프트웨어의 호환성, 이식성을 보장할 수 있다.
도 3은 본 발명의 실시예들에 따른 가상화 시스템에 의해 구현되는 가상화 환경을 설명하기 위한 도면이다.
도 3을 참조하면, 가상화 시스템(700)은 시스템 하드웨어(710) 및 시스템 하드웨어(710)가 제공하는 가상화 환경에서 동작(running)하는 소프트웨어를 포함할 수 있다. 상기 소프트웨어는 하이퍼바이저(720) 및 복수의 가상 머신들(730, 740)을 포함할 수 있다. 도시의 편의상, 도 3에서는 2개의 가상 머신들, 즉 호스트 가상 머신(730) 및 게스트 가상 머신(740)이 도시되어 있으나, 본 발명의 실시예들이 이에 한정되는 것은 아니며, 하이퍼바이저(720) 상에 설치(install)되는 가상 머신들의 개수는 실시예에 따라서 다양하게 결정될 수 있다. 예를 들어, 가상화 시스템(700)은 2개 이상의 게스트 가상 머신들을 포함할 수 있다.
시스템 하드웨어(710)는 가상화 환경을 제공하는 프로세서(PRC), 메모리 장치(MEM), 하나 이상의 아이피(IP)(intellectual property), 저장 장치(STG), 하드웨어 인터페이스 장치(HW_IF) 등을 포함할 수 있다.
예를 들어, 프로세서(PRC)는 하나의 프로세서 코어를 포함할 수도 있고, 복수의 프로세서 코어들을 포함할 수도 있다. 프로세서(PRC)가 복수의 프로세서 코어들을 포함하는 경우에, 상기 복수의 프로세서 코어들 중 하나가 가상화 환경을 제공하는 도 1의 프로세서(100)에 해당할 수 있다.
예를 들어, 메모리 장치(MEM)는 적어도 하나의 휘발성 메모리를 포함할 수 있다. 아이피(IP)는 카메라, GPU, NPU 등과 같은 다양한 기능을 가지는 하드웨어 장치를 포함할 수 있다. 저장 장치(STG)는 적어도 하나의 비휘발성 메모리를 포함할 수 있다. 메모리 장치(MEM), 아이피(IP), 저장 장치(STG) 등이 도 1의 하드웨어 입출력 장치(500)에 해당할 수 있다. 또한, 하드웨어 인터페이스 장치(HW_IF)가 도 1의 하드웨어 인터페이스 장치(600)에 해당할 수 있다.
복수의 가상 머신들(730, 740)은 각각의 기능을 수행하기 위한 다양한 구성을 가질 수 있다.
구체적으로, 호스트 가상 머신(730)은 호스트 운영 체제(732) 및 호스트 어플리케이션들(HAPP)을 포함할 수 있다. 호스트 어플리케이션들(HAPP)은 호스트 운영 체제(732) 상에서 동작할 수 있다.
호스트 운영 체제(732)는 호스트 가상화 드라이버(vHDRV) 및 장치 드라이버(DDRV)를 포함할 수 있다. 호스트 가상화 드라이버(vHDRV)는 상기 가상화 환경에서의 동작을 위한 드라이버이며, 장치 드라이버(DDRV)는 시스템 하드웨어(710)에 포함되는 프로세서(PRC), 메모리 장치(MEM), 아이피(IP) 등(즉, 도 1의 하드웨어 입출력 장치(500))을 직접 제어하기 위한 드라이버일 수 있다. 도 1 및 2를 참조하여 상술한 것처럼, 호스트 운영 체제(732)는 하드웨어 인터페이스 장치(HW_IF)의 이용 없이 시스템 하드웨어(710)에 포함되는 프로세서(PRC), 메모리 장치(MEM), 아이피(IP) 등(즉, 도 1의 하드웨어 입출력 장치(500))을 직접 제어할 수 있다.
또한, 게스트 가상 머신(740)은 가상 하드웨어, 게스트 운영 체제(742) 및 게스트 어플리케이션들(GAPP)을 포함할 수 있다. 게스트 어플리케이션들(GAPP)은 게스트 운영 체제(742) 상에서 동작할 수 있다.
게스트 가상 머신(740) 내에서, 가상화 시스템(700)의 물리적인 구성 요소들은 소프트웨어로 에뮬레이트(emulated)된다. 다시 말하면, 가상화 시스템(700)의 물리적인 구성 요소들은 상기 가상 하드웨어로 가상화(virtualized)될 수 있다. 상기 가상 하드웨어는 시스템 하드웨어(710)의 물리적인 구성 요소들 중에서 게스트 가상 머신(740)에 할당된 물리적인 구성 요소들을 에뮬레이트한 가상적인 구성 요소들을 포함할 수 있다. 예를 들어, 상기 가상 하드웨어는 프로세서(PRC)를 가상화한 가상 프로세서(vPRC), 메모리 장치(MEM)를 가상화한 가상 메모리 장치(vMEM), 아이피(IP)를 가상화한 가상 아이피(VIP) 등을 포함할 수 있다.
게스트 운영 체제(742)는 게스트 가상화 드라이버(vGDRV)를 포함할 수 있다. 게스트 가상화 드라이버(vGDRV)는 상기 가상화 환경에서의 동작을 위한 드라이버일 수 있다. 예를 들어, 게스트 가상화 드라이버(vGDRV)는 상기 가상 하드웨어에 포함되는 가상 프로세서(vPRC), 가상 메모리 장치(vMEM), 가상 아이피(VIP) 등을 매개로 하여 시스템 하드웨어(710)에 포함되는 프로세서(PRC), 메모리 장치(MEM), 아이피(IP) 등(즉, 도 1의 하드웨어 입출력 장치(500))을 제어할 수 있다. 도 1 및 2를 참조하여 상술한 것처럼, 게스트 운영 체제(742)는 하드웨어 인터페이스 장치(HW_IF)를 이용하여 시스템 하드웨어(710)에 포함되는 프로세서(PRC), 메모리 장치(MEM), 아이피(IP) 등(즉, 도 1의 하드웨어 입출력 장치(500))을 제어할 수 있다.
도시하지는 않았으나, 게스트 운영 체제(742)는 가상 메모리 관리 유닛, 상태 모니터 등을 더 포함할 수 있다. 상기 가상 메모리 관리 유닛은 게스트 운영 체제(742)의 가상 어드레스 공간을 게스트 운영 체제(742) 상에서 동작하는 게스트 어플리케이션들(GAPP)에 할당하고, 상기 가상 어드레스 공간의 가상 어드레스와 게스트 가상 머신(740)의 상기 가상 하드웨어에 포함되는 가상 메모리 장치(vMEM)의 중간 물리 어드레스 사이의 맵핑을 관리할 수 있다. 상기 상태 모니터는 게스트 가상 머신(740) 및/또는 게스트 운영 체제(742)의 상태를 모니터링하여 하이퍼바이저(720)에게 상태 정보를 제공하고, 예를 들어 게스트 가상 머신(740)이 정상적으로 동작하는 동안 주기적으로 상태 정보를 제공하며, 하이퍼바이저(720)는 일정한 시간 동안 상기 상태 정보를 수신하지 못한 경우 게스트 운영 체제(742)의 재부팅 여부 등을 결정할 수 있다.
하이퍼바이저(720)는 복수의 가상 머신들(730, 740)을 생성, 스케쥴링 및 관리할 수 있다. 하이퍼바이저(720)는 복수의 가상 머신들(730, 740)과 시스템 하드웨어(710) 사이의 인터페이스를 제공하고, 복수의 가상 머신들(730, 740)과 연관된 인스트럭션의 실행 및 데이터 전송을 관리할 수 있다. 하이퍼바이저(720)는 버츄얼 머신 모니터(virtual machine monitor) 또는 버츄얼 머신 매니저(virtual machine manager)라고 지칭될 수도 있다.
하이퍼바이저(720)는 인터럽트 핸들러(ITR_HD), 장치 에뮬레이터(D_EML) 등을 포함할 수 있다.
인터럽트 핸들러(ITR_HD)는 복수의 가상 머신들(730, 740)로부터 제공되는 정보 및/또는 시스템 하드웨어(710)로부터 제공되는 정보에 기초하여 가상화 시스템(700)의 동작을 제어할 수 있다.
장치 에뮬레이터(D_EML)는 게스트 가상 머신(740)에 대하여 시스템 하드웨어(710)의 물리적인 구성 요소들을 할당하고, 할당된 물리적인 구성 요소들을 에뮬레이션하여 게스트 가상 머신(740)의 상기 가상 하드웨어를 구축하고 관리할 수 있다.
도시하지는 않았으나, 하이퍼바이저(720)는 가상 메모리 관리 유닛, 장치 드라이버 등을 더 포함할 수 있다. 상기 가상 메모리 관리 유닛은 게스트 가상 머신(740) 또는 게스트 운영 체제(742)에게 시스템 하드웨어(710)에 포함되는 메모리 장치(MEM)의 게스트 메모리 영역을 할당하고, 게스트 가상 머신(740)의 상기 가상 하드웨어에 포함되는 가상 메모리 장치(vMEM)의 상기 중간 물리 어드레스와 메모리 장치(MEM)의 물리 어드레스 사이의 맵핑을 관리할 수 있다. 상기 장치 드라이버는 시스템 하드웨어(710)에 포함되는 프로세서(PRC), 메모리 장치(MEM), 아이피(IP) 등을 직접 제어할 수 있다.
한편, 도 3에서는 1개의 게스트 가상 머신이 도시되어 있으나, 가상화 시스템(700)이 2개 이상의 게스트 가상 머신들을 포함하는 경우에, 다른 게스트 가상 머신 또한 게스트 가상 머신(740)과 동일 또는 유사한 구조로 구현될 수 있다.
도 4, 5 및 6은 본 발명의 실시예들에 따른 가상화 시스템에 의해 구현되는 가상화 환경의 계층 구조의 예들을 나타내는 도면들이다.
도 4, 5 및 6을 참조하면, 가상화 환경이 복수의 게스트 운영 체제들(GOS1, GOS2, GOS3)을 포함하는 경우를 예시하고 있다.
구체적으로, 가상화 환경은 복수의 게스트 운영 체제들(GOS1, GOS2, GOS3)을 포함하고 복수의 게스트 운영 체제들(GOS1, GOS2, GOS3) 상에서 동작하는 복수의 어플리케이션들을 포함할 수 있다. 예를 들어, 제1 게스트 운영 체제(GOS1) 상에서 어플리케이션들(APP11, APP12)이 동작하고, 제2 게스트 운영 체제(GOS2) 상에서 어플리케이션들(APP21, APP22)이 동작하며, 제3 게스트 운영 체제(GOS3) 상에서 어플리케이션들(APP31, APP32)이 동작할 수 있다. 게스트 운영 체제들의 개수 및 각각의 게스트 운영 체제 상에서 동작하는 어플리케이션들의 개수는 실시예에 따라서 다양하게 결정될 수 있다.
하이퍼바이저(HPVS)는 제1 타입 및 제2 타입의 2개의 큰 카테고리들로 분류될 수 있다. 도 4 및 5는 제1 타입의 하이퍼바이저(HPVS)를 나타내고, 도 6은 제2 타입의 하이퍼바이저(HPVS)를 나타낸다. 도 4 및 5의 제1 타입의 하이퍼바이저(HPVS)는 호스티드(hosted) 하이퍼바이저라고 지칭될 수 있고, 도 6의 제2 타입의 하이퍼바이저(HPVS)는 스탠드얼론(standalone) 하이퍼바이저라고 지칭될 수 있다. 예를 들어, 대표적인 오픈소스 하이퍼바이저로서 제1 타입의 KVM(kernel-based virtual machine) 및 제2 타입의 Xen이 있다.
예를 들어, 제1 타입의 하이퍼바이저(HPVS)는, 도 4에 도시된 것처럼 호스트 운영 체제(HOS) 상에서 동작하거나, 도 5에 도시된 것처럼 호스트 운영 체제(HOS)에 포함될 수 있다. 호스트 운영 체제(HOS)는 시스템 하드웨어(SYSHW)에 대한 전적인 제어(full control)를 가질 수 있다. 호스트 운영 체제(HOS)는 시스템 하드웨어(SYSHW) 상에서 동작하고 어플리케이션들은 호스트 운영 체제(HOS) 상에서 동작할 수 있다.
예를 들어, 제2 타입의 하이퍼바이저(HPVS)는, 도 6에 도시된 것처럼 시스템 하드웨어(SYSHW) 상에서 동작하고 시스템 하드웨어(SYSHW)에 대한 전적인 제어(full control)를 가질 수 있다. 이 경우, 가상화 계층 구조에서 호스트 운영 체제는 존재하지 않고, 복수의 게스트 운영 체제들(GOS1, GOS2, GOS3)들 중 하나가 호스트 운영 체제와 유사한 기능을 가질 수도 있다. 어플리케이션들은 제2 타입의 하이퍼바이저(HPVS) 상에서 동작할 수 있다.
본 명세서에서는 도 4 및 5의 제1 타입의 하이퍼바이저(HPVS)에 기초하여 본 발명의 실시예들을 설명하지만, 이에 한정되는 것은 아니다. 본 발명의 실시예들은 도 4 및 5의 제1 타입의 하이퍼바이저(HPVS) 뿐만 아니라, 도 6의 제2 타입의 하이퍼바이저(HPVS) 또는 다른 타입의 하이퍼바이저를 포함하는 가상화 시스템에 적용될 수도 있다.
이하에서는 VIRTIO 표준에 기초하여 가상화 시스템이 구현/동작하는 경우에 기초하여 본 발명의 실시예들을 설명하도록 한다. 다만 본 발명은 이에 한정되지 않으며, 그 밖에 다양한 가상화 시스템 관련 표준에 기초하여 가상화 시스템이 구현/동작할 수 있다.
도 7 및 8은 도 1의 가상화 시스템의 구체적인 예들을 나타내는 블록도들이다. 이하 도 1과 중복되는 설명은 생략한다.
도 7을 참조하면, 가상화 시스템(10a)은 호스트 운영 체제(200a), 게스트 운영 체제(300a), 하이퍼바이저(400a), 하드웨어 입출력 장치(500a) 및 하드웨어 인터페이스 장치(600a)를 포함할 수 있다.
게스트 운영 체제(300a)는 게스트 가상화 드라이버(310)를 포함할 수 있다. 게스트 가상화 드라이버(310)는 상기 가상화 환경에서의 동작을 위한 드라이버이며, 도 3의 게스트 가상화 드라이버(vGDRV)에 대응할 수 있다.
일 실시예에서, 가상화 시스템(10a)이 VIRTIO 표준에 기초하여 동작하는 경우에, 게스트 가상화 드라이버(310)는 VIRTIO 드라이버의 형태로 구현될 수 있다. VIRTIO 드라이버는 VIRTIO 표준에 규정된 VIRTIO-MMIO(memory mapped I/O)의 각 필드(field)의 용도에 따라서 VIRTIO-MMIO의 각 필드를 독출(read)/기입(write)하면서 하드웨어 입출력 장치(500a)를 제어할 수 있다.
하드웨어 입출력 장치(500a)는 호스트 운영 체제(200a) 및 게스트 운영 체제(300a)에 의해 제어될 수 있다. 하드웨어 입출력 장치(500a)는 도 3의 시스템 하드웨어(710)에 포함되는 프로세서(PRC), 메모리 장치(MEM), 아이피(IP) 등에 대응할 수 있다.
일 실시예에서, 가상화 시스템(10a)이 VIRTIO 표준에 기초하여 동작하는 경우에, 하드웨어 입출력 장치(500a)는 VIRTIO 인지(aware) 입출력 장치의 형태로 구현될 수 있다. VIRTIO 인지 입출력 장치의 펌웨어(firmware)는 하드웨어 인터페이스 장치(600a)를 통해서 게스트 운영 체제(300a)의 VIRTIO 드라이버와 통신하며, VIRTIO 표준에 규정된 장치의 동작을 준수하여 동작함으로써 VIRTIO 드라이버의 제어에 상응하는 하드웨어 동작을 수행할 수 있다.
하드웨어 인터페이스 장치(600a)는 게스트 운영 체제(300a)와 하드웨어 입출력 장치(500a) 사이의 통신을 지원할 수 있다. 하드웨어 인터페이스 장치(600a)는 도 3의 시스템 하드웨어(710)에 포함되는 하드웨어 인터페이스 장치(HW_IF)에 대응할 수 있다.
일 실시예에서, 도 7에 도시된 것처럼 하드웨어 인터페이스 장치(600a)는 게스트 운영 체제(300a) 및 하이퍼바이저(400a)와 독립적으로 형성/구현될 수 있다. 다시 말하면, 하드웨어 인터페이스 장치(600a)는 게스트 운영 체제(300a) 및 하이퍼바이저(400a)에 포함되지 않는 별개의 하드웨어로서 구현될 수 있다.
일 실시예에서, 가상화 시스템(10a)이 VIRTIO 표준에 기초하여 동작하는 경우에, 하드웨어 인터페이스 장치(600a)는 VIRTIO-MMIO 호환(compatible) 하드웨어 인터페이스의 형태로 구현될 수 있다. VIRTIO-MMIO 호환 하드웨어 인터페이스는 VIRTIO 표준에 규정된 VIRTIO-MMIO의 레이아웃(layout)과 호환되는 하드웨어 장치이며, 하드웨어 메일박스(mailbox) 또는 메모리 장치로 구현될 수 있다.
도 7에서는 하드웨어 입출력 장치(500a)와 하드웨어 인터페이스 장치(600a)가 별개의 하드웨어로서 도시되어 있으나, 본 발명의 실시예들이 이에 한정되는 것은 아니며, 하드웨어 입출력 장치(500a)와 하드웨어 인터페이스 장치(600a)는 하나의 하드웨어로 구현될 수도 있다. 예를 들어, 하드웨어 인터페이스 장치(600a)는 하드웨어 입출력 장치(500a)에 포함될 수 있다.
일 실시예에서, 게스트 운영 체제(300a)는 게스트 가상화 드라이버(310) 및 하드웨어 인터페이스 장치(600a)를 통해 하드웨어 입출력 장치(500a)를 제어할 수 있다. 이 때, 게스트 가상화 드라이버(310)에 의한 하드웨어 입출력 장치(500a)의 제어는 하이퍼바이저(400a)에 의해 트랩(trap)되거나 처리(handle)되지 않고 하드웨어 인터페이스 장치(600a)로 직접 제공될 수 있다. 예를 들어, 게스트 가상화 드라이버(310)와 하드웨어 인터페이스 장치(600a) 사이에는 다이렉트 액세스 인터럽트(DA_ITR)가 전송될 수 있다. 도 7에서는 게스트 가상화 드라이버(310), 하드웨어 인터페이스 장치(600a) 및 하드웨어 입출력 장치(500a) 사이의 실선 화살표를 통해 상술한 제어 동작을 도시하였다.
일 실시예에서, 가상화 시스템(10a)은 호스트 운영 체제(200a) 및 게스트 운영 체제(300a)에 의해 공유되는 공유 메모리(320)를 더 포함할 수 있다. 게스트 운영 체제(300a)는 게스트 가상화 드라이버(310) 및 공유 메모리(320)를 통해 하드웨어 입출력 장치(500a)와 데이터를 주고 받을 수 있다. 도 7에서는 게스트 가상화 드라이버(310), 공유 메모리(320) 및 하드웨어 입출력 장치(500a) 사이의 점선 화살표를 통해 상술한 데이터 교환 동작을 도시하였다.
도 7에서는 편의상 공유 메모리(320)가 게스트 운영 체제(300a)에 포함되는 것으로 도시하였으나, 공유 메모리(320)는 호스트 운영 체제(200a) 및 게스트 운영 체제(300a)와 별개로 배치되어 호스트 운영 체제(200a) 및 게스트 운영 체제(300a)에 의해 공유될 수 있다.
호스트 운영 체제(200a)는 호스트 가상화 드라이버(210) 및 장치 드라이버(220)를 포함할 수 있다. 호스트 가상화 드라이버(210)는 상기 가상화 환경에서의 동작을 위한 드라이버이며, 도 3의 호스트 가상화 드라이버(vHDRV)에 대응할 수 있다. 장치 드라이버(220)는 하드웨어 입출력 장치(500a)를 직접 제어하기 위한 드라이버이며, 도 3의 장치 드라이버(DDRV)에 대응할 수 있다.
일 실시예에서, 가상화 시스템(10a)이 VIRTIO 표준에 기초하여 동작하는 경우에, 호스트 가상화 드라이버(210)는 게스트 가상화 드라이버(310)와 유사하게 VIRTIO 드라이버의 형태로 구현되고, 장치 드라이버(220)는 입출력 드라이버의 형태로 구현될 수 있다.
일 실시예에서, 호스트 운영 체제(200a)는 하드웨어 인터페이스 장치(600a)의 이용 없이 호스트 가상화 드라이버(210) 및 장치 드라이버(220)를 통해 하드웨어 입출력 장치(500a)를 제어할 수 있다. 도 7에서는 호스트 가상화 드라이버(210), 장치 드라이버(220) 및 하드웨어 입출력 장치(500a) 사이의 실선 화살표를 통해 상술한 제어 동작을 도시하였다.
일 실시예에서, 호스트 운영 체제(200a)는 리눅스(Linux) 가상 머신에서 동작할 수 있다. 이 경우, 호스트 가상화 드라이버(210)는 사용자 공간(user space)에서 동작하고, 장치 드라이버(220)는 물리적인 장치 드라이버로서 리눅스 커널에서 동작하며, 상기 사용자 공간에서 동작하는 가상화된 HAL(hardware abstraction layer) 서버들을 더 포함할 수 있다.
일 실시예에서, 게스트 운영 체제(300a)는 리눅스 가상 머신과 연동하여 동작하는 안드로이드(Android) 트라웃(Trout)에서 동작할 수 있다. 이 경우, 게스트 가상화 드라이버(310)는 리눅스 커널에서 동작하며, 사용자 공간에서 동작하는 HAL 및 가상화된 HAL을 포함할 수 있다. 예를 들어, VIRTIO 인지 입출력 장치를 이용하여 소프트웨어의 수정 없이 구현될 수 있다.
도 8을 참조하면, 가상화 시스템(10b)은 호스트 운영 체제(200b), 게스트 운영 체제(300b), 하이퍼바이저(400b), 하드웨어 입출력 장치(500b) 및 하드웨어 인터페이스 장치(600b)를 포함할 수 있다.
호스트 운영 체제(200b), 게스트 운영 체제(300b) 및 하드웨어 입출력 장치(500b)는 각각 도 7의 호스트 운영 체제(200a), 게스트 운영 체제(300a) 및 하드웨어 입출력 장치(500a)와 실질적으로 동일하며, 이하 도 7과 중복되는 설명은 생략한다.
하드웨어 인터페이스 장치(600b)는 게스트 운영 체제(300b)와 하드웨어 입출력 장치(500b) 사이의 통신을 지원할 수 있다. 하드웨어 인터페이스 장치(600b)는 도 3의 시스템 하드웨어(710)에 포함되는 하드웨어 인터페이스 장치(HW_IF)에 대응할 수 있다.
일 실시예에서, 도 8에 도시된 것처럼 하드웨어 인터페이스 장치(600b)는 하이퍼바이저(400b)에 포함되도록 형성/구현될 수 있다. 예를 들어, 하드웨어 인터페이스 장치(600b)는 하이퍼바이저(400b)에 포함되는 하드웨어 에뮬레이터로서 구현될 수 있다.
일 실시예에서, 가상화 시스템(10a)이 VIRTIO 표준에 기초하여 동작하는 경우에, 하드웨어 인터페이스 장치(600b)(즉, 하드웨어 에뮬레이터)는 VIRTIO-MMIO 에뮬레이터의 형태로 구현될 수 있다. VIRTIO 드라이버의 VIRTIO-MMIO에 대한 독출/기입은 하이퍼바이저(400b)에 의하여 트랩되어 저장되고, 하이퍼바이저(400b)는 필요 시 VIRTIO-MMIO의 내용을 VIRTIO 인지 입출력 장치에게 업데이트(update)하며, VIRTIO 인지 입출력 장치는 저장된 MMIO의 내용을 파악하여 상응하는 하드웨어 동작을 수행할 수 있다.
일 실시예에서, 게스트 운영 체제(300b)는 게스트 가상화 드라이버(310) 및 하드웨어 인터페이스 장치(600b)(즉, 하드웨어 에뮬레이터)를 통해 하드웨어 입출력 장치(500b)를 제어할 수 있다. 이 때, 게스트 가상화 드라이버(310)에 의한 하드웨어 입출력 장치(500b)의 제어는 하이퍼바이저(400b)에 의해 트랩되거나 처리되어 하드웨어 인터페이스 장치(600b)로 제공될 수 있다. 예를 들어, 게스트 가상화 드라이버(310)와 하드웨어 인터페이스 장치(600b) 사이에는 트랩된 인터럽트(T_ITR)가 전송될 수 있다. 도 8에서는 게스트 가상화 드라이버(310), 하드웨어 인터페이스 장치(600b) 및 하드웨어 입출력 장치(500b) 사이의 실선 화살표를 통해 상술한 제어 동작을 도시하였다.
일 실시예에서, 가상화 시스템(10b)은 호스트 운영 체제(200b) 및 게스트 운영 체제(300b)에 의해 공유되는 공유 메모리(320)를 더 포함할 수 있다. 게스트 운영 체제(300b)는 게스트 가상화 드라이버(310) 및 공유 메모리(320)를 통해 하드웨어 입출력 장치(500b)와 데이터를 주고 받을 수 있다. 도 8에서는 게스트 가상화 드라이버(310), 공유 메모리(320) 및 하드웨어 입출력 장치(500b) 사이의 점선 화살표를 통해 상술한 데이터 교환 동작을 도시하였다.
도 9a 및 9b는 도 7 및 8의 가상화 시스템의 동작을 설명하기 위한 도면들이다.
도 9a 및 9b를 참조하면, VIRTIO 표준에 규정된 MMIO 장치의 레이아웃을 예시하고 있다. 오프셋(offset)은 베이스(base)로부터의 오프셋을 나타내고, RW는 독출(R), 기입(W)의 방향을 나타내고, 레지스터(register) 및 설명(description)은 각 함수의 명칭 및 동작을 나타낸다.
PCI 지원이 없는 가상화 환경(임베디드 장치 모델의 일반적인 상황)에서는, PCI 장치 대신에 단순한 MMIO 장치("VIRTIO-MMIO")를 사용할 수 있다. VIRTIO-MMIO의 동작은 PCI 장치의 표준을 기반으로 하며, 따라서 장치 초기화, 대기열 구성 및 버퍼 전송을 포함한 대부분의 작업은 PCI 장치와 거의 동일할 수 있다.
일 실시예에서, 도 7의 하드웨어 인터페이스 장치(600a)(즉, VIRTIO-MMIO 호환 하드웨어 인터페이스)는 도 9a 및 9b에 도시된 독출/기입 모두를 지원하며, 도 8의 하드웨어 인터페이스 장치(600b)(즉, VIRTIO-MMIO 에뮬레이터)는 도 9a 및 9b에 도시된 모든 독출/기입의 일부를 지원할 수 있다.
도 10 및 11은 본 발명의 실시예들에 따른 가상화 시스템들을 나타내는 블록도들이다. 이하 도 1과 중복되는 설명은 생략한다.
도 10을 참조하면, 가상화 시스템(12)은 프로세서(102), 호스트 운영 체제(200), 복수의 게스트 운영 체제들(301, 302), 하이퍼바이저(400), 적어도 하나의 하드웨어 입출력 장치(500) 및 복수의 하드웨어 인터페이스 장치들(601, 602)을 포함한다.
복수의 게스트 운영 체제들(301, 302) 및 복수의 하드웨어 인터페이스 장치들(601, 602)을 포함하는 것을 제외하면, 도 10의 가상화 시스템(12)은 도 1의 가상화 시스템(10)과 실질적으로 동일할 수 있다.
복수의 게스트 운영 체제들(301, 302)은 제1 게스트 운영 체제(301) 및 제2 게스트 운영 체제(302)를 포함할 수 있다. 제1 게스트 운영 체제(301)는 상기 가상화 환경의 제1 가상 머신에서 동작하고, 제2 게스트 운영 체제(302)는 상기 가상화 환경의 제2 가상 머신에서 동작하고 제1 게스트 운영 체제(301)와 독립적으로 동작할 수 있다. 예를 들어, 복수의 게스트 운영 체제들(301, 302) 각각은 도 3을 참조하여 상술한 것처럼 구현될 수 있다.
복수의 하드웨어 인터페이스 장치들(601, 602)은 제1 하드웨어 인터페이스 장치(601) 및 제2 하드웨어 인터페이스 장치(602)를 포함할 수 있다. 제1 하드웨어 인터페이스 장치(601)는 제1 게스트 운영 체제(301) 및 적어도 하나의 하드웨어 입출력 장치(500) 사이의 통신을 지원하고, 제2 하드웨어 인터페이스 장치(602)는 제2 게스트 운영 체제(302) 및 적어도 하나의 하드웨어 입출력 장치(500) 사이의 통신을 지원할 수 있다. 예를 들어, 복수의 하드웨어 인터페이스 장치들(601, 602) 각각은 도 7 및 8을 참조하여 상술한 것처럼 구현될 수 있다.
일 실시예에서, 가상화 시스템(12)이 복수의 게스트 운영 체제들(301, 302)을 포함하는 경우에, 각 게스트 운영 체제마다 하나의 하드웨어 인터페이스 장치가 형성/구현되며, 각 게스트 운영 체제는 대응하는 하드웨어 인터페이스 장치를 이용하여 적어도 하나의 하드웨어 입출력 장치(500)를 제어할 수 있다. 예를 들어, 적어도 하나의 하드웨어 입출력 장치(500)를 제1 게스트 운영 체제(301)가 제어하고자 하는 경우에, 제1 하드웨어 인터페이스 장치(601)를 이용하여 적어도 하나의 하드웨어 입출력 장치(500)를 제어할 수 있다. 예를 들어, 적어도 하나의 하드웨어 입출력 장치(500)를 제2 게스트 운영 체제(302)가 제어하고자 하는 경우에, 제2 하드웨어 인터페이스 장치(602)를 이용하여 적어도 하나의 하드웨어 입출력 장치(500)를 제어할 수 있다.
도시의 편의상, 도 10에서는 2개의 게스트 운영 체제들(301, 302) 및 2개의 하드웨어 인터페이스 장치들(601, 602)만이 도시되어 있으나, 본 발명의 실시예들이 이에 한정되는 것은 아니며, 게스트 운영 체제들 및 하드웨어 인터페이스 장치들의 개수는 실시예에 따라서 다양하게 결정될 수 있다.
도 11을 참조하면, 가상화 시스템(14)은 프로세서(104), 호스트 운영 체제(200), 적어도 하나의 게스트 운영 체제(300), 하이퍼바이저(400), 복수의 하드웨어 입출력 장치들(504, 505) 및 복수의 하드웨어 인터페이스 장치들(604, 605)을 포함한다.
복수의 하드웨어 입출력 장치들(504, 505) 및 복수의 하드웨어 인터페이스 장치들(604, 605)을 포함하는 것을 제외하면, 도 11의 가상화 시스템(14)은 도 1의 가상화 시스템(10)과 실질적으로 동일할 수 있다.
복수의 하드웨어 입출력 장치들(504, 505)은 제1 하드웨어 입출력 장치(504) 및 제2 하드웨어 입출력 장치(505)를 포함할 수 있다. 예를 들어, 복수의 하드웨어 입출력 장치들(504, 505) 각각은 도 3을 참조하여 상술한 것처럼 구현될 수 있다.
복수의 하드웨어 인터페이스 장치들(604, 605)은 제1 하드웨어 인터페이스 장치(604) 및 제2 하드웨어 인터페이스 장치(605)를 포함할 수 있다. 제1 하드웨어 인터페이스 장치(604)는 적어도 하나의 게스트 운영 체제(300) 및 제1 하드웨어 입출력 장치(504) 사이의 통신을 지원하고, 제2 하드웨어 인터페이스 장치(602)는 적어도 하나의 게스트 운영 체제(300) 및 제2 하드웨어 입출력 장치(505) 사이의 통신을 지원할 수 있다. 예를 들어, 복수의 하드웨어 인터페이스 장치들(604, 605) 각각은 도 7 및 8을 참조하여 상술한 것처럼 구현될 수 있다.
일 실시예에서, 가상화 시스템(14)이 복수의 하드웨어 입출력 장치들(504, 505)을 포함하는 경우에, 각 하드웨어 입출력 장치마다 하나의 하드웨어 인터페이스 장치가 형성/구현되며, 적어도 하나의 게스트 운영 체제(300)는 대응하는 하드웨어 인터페이스 장치를 이용하여 대응하는 하드웨어 입출력 장치를 제어할 수 있다. 예를 들어, 제1 하드웨어 입출력 장치(504)를 적어도 하나의 게스트 운영 체제(300)가 제어하고자 하는 경우에, 제1 하드웨어 인터페이스 장치(604)를 이용하여 제1 하드웨어 입출력 장치(504)를 제어할 수 있다. 예를 들어, 제2 하드웨어 입출력 장치(505)를 적어도 하나의 게스트 운영 체제(300)가 제어하고자 하는 경우에, 제2 하드웨어 인터페이스 장치(605)를 이용하여 제2 하드웨어 입출력 장치(505)를 제어할 수 있다.
도시의 편의상, 도 11에서는 2개의 하드웨어 입출력 장치들(504, 505) 및 2개의 하드웨어 인터페이스 장치들(604, 605)만이 도시되어 있으나, 본 발명의 실시예들이 이에 한정되는 것은 아니며, 하드웨어 입출력 장치들 및 하드웨어 인터페이스 장치들의 개수는 실시예에 따라서 다양하게 결정될 수 있다.
도시하지는 않았으나, 도 10 및 11의 예들을 조합하여 본 발명의 실시예들에 따른 가상화 시스템이 구현될 수도 있다.
도 12는 본 발명의 실시예들에 따른 가상화 시스템을 나타내는 블록도이다.
도 12를 참조하면, 가상화 시스템(1000)은 시스템 온 칩(system-on-chip; SOC)(1100)과 메모리 장치(1130), 디스플레이 장치(1152), 터치 패널(1154), 저장 장치(1170), 전력 관리 집적 회로(power management integrated circuit; PMIC)(1200) 등을 포함할 수 있다. 시스템 온 칩(1100)은 프로세서(1110), 하드웨어 인터페이스 장치(HWIF)(1115), 메모리 컨트롤러(1120), 성능 컨트롤러(PFMC)(1140), 사용자 인터페이스(user interface; UI) 컨트롤러(1150), 스토리지 인터페이스(1160), 하나 이상의 아이피(1180), 다이렉트 메모리 액세스 기능을 갖는 다이렉트 메모리 액세스 장치(DMAIP)(1185), 파워 관리 유닛(PMU)(1144), 클록 관리 유닛(CMU)(1146) 등을 포함할 수 있다. 가상화 시스템(1000)의 구성 요소들은 도시된 구성 요소들에 국한되지 않음은 잘 이해될 것이다. 예를 들어, 가상화 시스템(1000)은 영상 데이터를 처리하기 위한 하드웨어 코덱, 보안 블록 등을 더 포함할 수 있다.
프로세서(1110)는 가상화 시스템(1000)에서 수행될 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버들)를 실행한다. 프로세서(1110)는 메모리 장치(1130)에 로드되는 운영 체제(OS)를 실행할 수 있다. 또한 프로세서(1110)는 운영 체제(OS) 기반에서 구동될 다양한 응용 프로그램들(Application Program)을 실행할 수 있다. 프로세서(1110)는 동종 멀티-코어 프로세서(Homogeneous Multi-Core Processor) 또는 이종 멀티-코어 프로세서(Heterogeneous Multi-Core Processor)로 제공될 수 있다. 멀티-코어 프로세서는 적어도 2개의 독립적으로 구동 가능한 프로세서 코어(이하, 코어)들을 갖는 컴퓨팅 컴포넌트(Computing component)이다. 코어들 각각은 프로그램 명령들(Program Instructions)을 독립적으로 읽고 실행할 수 있다.
메모리 컨트롤러(1120)는 메모리 장치(1130)와 시스템 온 칩(1100) 사이에서 인터페이싱을 제공한다. 메모리 컨트롤러(1120)는 프로세서(1110)나 아이피(1180), 다이렉트 메모리 액세스 장치(1185)의 요청에 따라 메모리 장치(1130)를 액세스할 수 있다. 일 실시예에서, 메모리 장치(1130)는 DRAM으로 구현될 수 있으며, 이 경우 메모리 컨트롤러(1120)는 DRAM 컨트롤러라고 지칭될 수 있다.
메모리 장치(1130)에는 부팅 시에 운영 체제(OS)나 기본 응용 프로그램들(Application Program)이 로드될 수 있다. 예를 들어, 가상화 시스템(1000)의 부팅 시에 저장 장치(1170)에 저장된 하이퍼바이저(HPVS), 호스트 운영 체제(HOS) 및 게스트 운영 체제(GOS)가 부팅 시퀀스에 의거하여 메모리 장치(1130)로 로드될 수 있다. 이후에, 호스트 운영 체제(HOS) 및 게스트 운영 체제(GOS)에 의해 상응하는 어플리케이션들(APP)이 메모리 장치(1130)로 로드될 수 있다.
하드웨어 인터페이스 장치(1115)는 게스트 운영 체제(GOS) 및 하드웨어 입출력 장치 사이의 통신을 지원할 수 있다. 예를 들어, 메모리 장치(1130), 스토리지 장치(1170), 아이피(1180), 다이렉트 메모리 액세스 장치(1185) 등이 상기 하드웨어 입출력 장치에 대응할 수 있다.
성능 컨트롤러(1140)는 운영 체제(OS)의 커널(Kernel)로부터 제공되는 제어 요청에 따라 시스템 온 칩(1100)의 동작 파라미터들을 조정할 수 있다. 예를 들어, 성능 컨트롤러(1140)는 시스템 온 칩(1100)의 성능을 높이기 위해서 DVFS(dynamic voltage and frequency scaling)의 전력 레벨을 조정할 수 있다.
사용자 인터페이스 컨트롤러(1150)는 사용자 인터페이스 장치들로부터의 사용자 입력 및 출력을 제어한다. 예를 들어, 사용자 인터페이스 컨트롤러(1150)는 프로세서(1110)의 제어에 따라 디스플레이 장치(1152)에 데이터를 입력하기 위한 키보드 화면 등을 표시할 수 있다. 또는, 사용자 인터페이스 컨트롤러(1150)는 사용자가 요청한 데이터를 표시하도록 디스플레이 장치(1152)를 제어할 수 있다. 사용자 인터페이스 컨트롤러(1150)는 터치 패널(1154)과 같은 사용자 입력 수단으로부터의 제공되는 데이터를 사용자 입력 데이터로 디코딩할 수 있다.
스토리지 인터페이스(1160)는 프로세서(1110)의 요청에 따라 저장 장치(1170)를 액세스한다. 즉, 스토리지 인터페이스(1160)는 시스템 온 칩(1100)과 저장 장치(1170) 사이의 인터페이스를 제공한다. 프로세서(1110)에 의해서 처리된 데이터가 스토리지 인터페이스(1160)를 통해 저장 장치(1170)에 저장될 수 있고, 저장 장치(1170)에 저장된 데이터는 스토리지 인터페이스(1160)를 통해 프로세서(1110)에 제공될 수 있다.
저장 장치(1170)는 가상화 시스템(1000)의 저장 매체(Storage Medium)로서 제공된다. 저장 장치(1170)는 응용 프로그램들(Application Program), 운영 체제 이미지(OS Image) 및 각종 데이터를 저장할 수 있다. 저장 장치(1170)는 메모리 카드(MMC, eMMC, SD, MicroSD 등)로 제공될 수도 있다. 저장 장치(1170)는 대용량의 저장 능력을 가지는 낸드 플래시 메모리(NAND-type Flash memory)를 포함할 수 있다. 또는, 저장 장치(1710)는 PRAM, MRAM, ReRAM, FRAM 등의 차세대 불휘발성 메모리나 NOR 플래시 메모리를 포함할 수도 있다.
다이렉트 메모리 액세스 장치(1185)는 멀티미디어 또는 멀티미디어 데이터의 처리 속도를 향상하기 위한 별도의 아이피 또는 기능 블록(IP)으로 제공될 수 있다. 예를 들어, 다이렉트 메모리 액세스 장치(1185)는 텍스트(Text), 오디오(Audio), 정지 영상들(Still images), 애니메이션(Animation), 비디오(Video), 2차원 데이터, 또는 3차원 데이터의 처리 성능을 향상시키기 위한 기능 블록(IP)으로 제공될 수 있다.
시스템 인터커넥터(1190)는 시스템 온 칩(1100)의 내부에서 온칩 네트워크를 제공하기 위한 시스템 버스(System Bus)이다. 시스템 인터커넥터(1190)는 예를 들어, 데이터 버스(Data bus), 어드레스 버스(Address bus) 및 컨트롤 버스(Control bus)를 포함할 것이다. 데이터 버스(Data bus)는 데이터가 이동하는 경로이다. 주로, 메모리 장치(1130)이나 저장 장치(1170)로의 메모리 접근 경로를 제공될 것이다. 어드레스 버스(Address bus)는 구성요소들 간의 어드레스 교환 경로를 제공한다. 컨트롤 버스(Control bus)는 구성요소들 간의 제어 신호를 전달하는 경로를 제공한다. 하지만, 시스템 인터커넥터(1190)의 구성은 상술한 설명에만 국한되지 않으며, 효율적인 관리를 위한 중재 수단들을 더 포함할 수 있다.
일 실시예에서, 다이렉트 메모리 액세스 장치(1185)는 메모리 장치(1130)에 대한 다이렉트 메모리 액세스 기능을 가질 수 있다. 다이렉트 메모리 액세스는 프로세서(1110)를 통하지 않고 데이터를 메모리 장치와 다른 메모리 장치 또는 메모리 장치와 입출력 장치 간에 직접 전송하는 방식으로, 가상화 시스템(1000) 내부의 전송 버스가 지원할 수 있다. 다이렉트 메모리 액세스 방식에는 프로세서(1110)에서 제어를 빼앗아 데이터를 한번에 전송하는 방식인 버스트 모드(burst mode)와 프로세서(1110)가 메모리에 액세스하고 있지 않을 때 다이렉트 메모리 액세스를 수행하는 사이클 스틸 모드(cycle stealing mode) 등이 있다. 다이렉트 메모리 액세스는 데이터 전송 시 프로세서(1110)의 개입이 필요 없으므로, 프로세서(1110)가 다른 작업을 수행할 수 있어 시스템의 성능이 향상될 수 있다.
도시하지는 않았으나, 가상화 시스템(1000)은 프로세서(1110)의 메모리 장치(1130)에 대한 코어 액세스 및 다이렉트 메모리 액세스 장치(1185)의 메모리 장치(1130)에 대한 다이렉트 액세스를 관리하는 메모리 관리 회로를 더 포함할 수 있다. 상기 코어 액세스 및 상기 다이렉트 액세스는 메모리 장치(1130)로부터 데이터를 독출하기 위한 독출 동작 및 메모리 장치(1130)에 데이터를 저장하기 위한 기입 동작을 포함할 수 있다. 상기 코어 액세스는 프로세서(1110)로부터 발행되는(issued) 코어 액세스 리퀘스트에 기초하여 수행되고, 상기 다이렉트 액세스는 다이렉트 메모리 액세스 장치(1185)로부터 발행되는 다이렉트 액세스 리퀘스트에 기초하여 수행될 수 있다. 이 때, 게스트 운영 체제(GOS)의 동작을 모니터링하고, 모니터링의 결과에 기초하여 다이렉트 메모리 액세스 장치(1185)를 제어하는 타겟 게스트 운영 체제(GOS)를 재부팅하며, 타겟 게스트 운영 체제를 재부팅하는 경우 하이퍼바이저(HPVS)의 제어에 기초하여 다이렉트 메모리 액세스 장치(1185)의 메모리 장치(1130)에 대한 다이렉트 액세스를 차단하도록 메모리 관리 회로를 제어함으로써, 다이렉트 메모리 액세스 장치(1185)를 제어하는 타겟 게스트 운영 체제의 재부팅시 시간적인 격리(temporal isolation)를 제공하도록 메모리 관리 회로를 제어하여 신속하게 다이렉트 액세스를 차단함으로써 메모리 충돌을 효율적으로 방지하도록 구현될 수도 있다.
도 13은 본 발명의 실시예들에 따른 가상화 시스템을 포함하는 자율 주행 장치를 나타내는 블록도이다.
도 13을 참조하면, 자율 주행 장치(3000)는 구동부(3110), 센서부(3120), 저장부(3130), 제어부(3140) 및 통신부(3150)를 포함할 수 있다.
구동부(3110)는 자율 주행 장치(3000)의 구동을 위한 다양한 장치 및 유닛을 포함할 수 있다. 일 예로, 자율 주행 장치(3000)가 지상을 주행하는 장치인 경우, 구동부(3110)는 엔진/모터(3111), 조향 유닛(3112), 브레이크 유닛(3113) 등을 포함할 수 있다.
엔진/모터(3111)는 내연 기관, 전기 모터, 증기 기관, 및 스틸링 엔진(stirling engine) 간의 임의의 조합이 될 수 있다. 예를 들어, 자율 주행 장치(3000)가 가스-전기 하이브리드 자동차(gas-electric hybrid car)인 경우, 엔진/모터(3111)는 가솔린 엔진 및 전기 모터가 될 수 있다. 일 예로, 엔진/모터(3111)는 자율 주행 장치(3000)가 기 설정된 주행 경로로 주행하기 위한 동력을 공급할 수 있다.
조향 유닛(3112)은 자율 주행 장치(3000)의 방향을 조절하도록 구성되는 매커니즘들의 조합이 될 수 있다. 일 예로, 조향 유닛(3112)은 자율 주행 장치(3000)가 주행 도중 장애물을 인식하면 자율 주행 장치(3000)의 방향을 변경할 수 있다. 자율 주행 장치(3000)가 차량인 경우, 조향 유닛(3112)은 핸들을 시계 방향 또는 반시계 방향으로 회전함에 따라 자율 주행 장치(3000)의 방향을 변경할 수 있다.
브레이크 유닛(3113)은 자율 주행 장치(3000)를 감속시키도록 구성되는 매커니즘들의 조합이 될 수 있다. 예를 들어, 브레이크 유닛(3113)은 휠/타이어의 속도를 줄이기 위해 마찰을 사용할 수 있다. 브레이크 유닛(3113)은 자율 주행 장치(3000)가 주행 도중 장애물을 인식하면 자율 주행 장치(3000)를 감속시킬 수 있다.
구동부(3110)는 지상을 주행하는 자율 주행 장치(3000)의 구동부에 한정되지 않으며, 비행 추진 유닛, 프로펠러, 날개 등을 포함할 수 있으며, 다양한 선박 추진 장치를 포함할 수 있다.
센서부(3120)는 자율 주행 장치(3000)의 주변 환경에 관한 정보를 센싱할 수 있도록 구성되는 다수의 센서들을 포함할 수 있다. 예를 들어, 센서부(3120)는 이미지 센서(3121), 거리 센서(3122), LIDAR 유닛(3123), RADAR 유닛(3124), 적외선 센서(3125), GPS(3126), 지자기 센서(3127) 및 가속도 센서(3128) 중 적어도 하나를 포함할 수 있다.
이미지 센서(3121)는 자율 주행 장치(3000)의 외부에 위치한 외부 객체를 촬영할 수 있다. 촬영된 외부 객체는 자율 주행 장치(3000)의 속력 및 방향 중 적어도 하나를 변경하기 위한 데이터로 사용될 수 있다. 이미지 센서(3121)는 CCD(Charge Coupled Device), CMOS(Complementary Metal Oxide Semiconductor) 등 다양한 유형의 센서로 구현될 수 있다. 또한, 거리 센서(3122)는 자율 주행 장치(3000)와 외부 객체의 거리를 판단하는 정보를 획득할 수 있다.
LIDAR 유닛(3123), RADAR 유닛(3124) 및 적외선 센서(3125)는 특정 신호를 출력하여 자율 주행 장치(3000)가 위치해 있는 환경 내의 외부 객체들을 감지하도록 구성되는 센서일 수 있다. 보다 구체적으로, LIDAR 유닛(3123)은 레이저를 방출하도록 구성되는 레이저 광원 및/또는 레이저 스캐너와, 레이저의 반사를 검출하도록 구성되는 검출기를 포함할 수 있다. RADAR 유닛(3124)은 무선 신호를 사용하여 자율 주행 장치(3000)가 위치해 있는 환경 내의 물체들을 감지하도록 구성되는 센서이다. 또한, RADAR 유닛(3124)은 물체들의 속도 및/또는 방향을 감지하도록 구성될 수 있다. 적외선 센서(3125)는 적외선 영역의 파장의 광을 사용하여 자율 주행 장치(3000)가 위치해 있는 환경 내의 외부 객체들을 감지하도록 구성되는 센서이다.
GPS(3126), 지자기 센서(3127) 및 가속도 센서(3128)는 자율 주행 장치(3000)의 속력, 방향, 위치 등에 대한 정보를 획득하도록 구성되는 센서일 수 있다. 구체적으로, 자율 주행 장치(3000)의 현재 상태에 관한 정보를 획득하여 외부 객체와의 충돌 가능성 등을 판단할 수 있다. GPS(3126)는 자율 주행 장치(3000)의 위치를 인공 위성을 통해 위도 및 경도 데이터를 수신할 수 있으며, 지자기 센서(3127) 및 가속도 센서(3128)는 자율 주행 장치(3000)의 운동량에 따라 자율 주행 장치(3000)의 현재 상태를 판단할 수 있다.
저장부(3130)는 제어부(3140)가 각종 처리를 실행하기 위해 필요한 데이터를 저장한다. 일 예로, 저장부(3130)는 제어부(3140)에 포함된 롬(ROM), 램(RAM) 등의 내부 메모리로 구현되거나, 제어부(3140)와 별도의 메모리로 구현될 수도 있다. 이 경우, 저장부(3130)는 데이터 저장 용도에 따라 자율 주행 장치(3000)에 임베디드된 메모리 형태로 구현되거나, 자율 주행 장치(3000)에 탈부착이 가능한 메모리 형태로 구현될 수도 있다.
예를 들어, 자율 주행 장치(3000)의 구동을 위한 데이터의 경우 자율 주행 장치(3000)에 임베디드된 메모리에 저장되고, 자율 주행 장치(3000)의 확장 기능을 위한 데이터의 경우 자율 주행 장치(3000)에 탈부착이 가능한 메모리에 저장될 수 있다.
한편, 자율 주행 장치(3000)에 임베디드된 메모리의 경우 비휘발성 메모리, 휘발성 메모리, 플래시 메모리, 하드 디스크 드라이브(HDD) 또는 솔리드 스테이트 드라이브(SSD) 등과 같은 형태로 구현되고, 자율 주행 장치(3000)에 탈부착이 가능한 메모리의 경우 메모리 카드(예를 들어, micro SD 카드, USB 메모리 등), USB 포트에 연결가능한 외부 메모리(예를 들어, USB 메모리) 등과 같은 형태로 구현될 수 있다.
통신부(3150)는 자율 주행 장치(3000)와 외부 장치 간 통신을 수행한다. 일 예로, 통신부(3150)는 자율 주행 장치(3000) 및 외부 장치의 주행 정보를 송수신할 수 있다. 예를 들어, 통신부(3150)는 IR(Infrared) 통신, WI-FI(Wireless Fidelity), Bluetooh, Zigbee, 비콘(Beacon), NFC(near field communication), WAN, 이더넷(Ethernet), IEEE 1394, HDMI, USB, MHL, AES/EBU, 옵티컬(Optical), 코액셜(Coaxial) 등과 같은 다양한 통신 방식을 통해 통신을 수행할 수 있다. 다만, 경우에 따라 통신부(3150)는 주행 정보를 서버(미도시)를 통해 통신을 수행할 수도 있다.
제어부(3140)는 RAM(3141), ROM(3142), CPU(3143), 하드웨어 인터페이스 장치(HWIF)(3144), 복수의 IP들(3145, 3146) 및 버스(3147)를 포함할 수 있다. RAM(3141), ROM(3142), CPU(3143), 하드웨어 인터페이스 장치(3144) 및 복수의 IP들(3145, 3146)은 버스(3147)를 통해 서로 연결될 수 있고, 적어도 2개의 구성 요소들은 다이렉트 신호 라인들을 통해 직접 연결될 수도 있다. 일 실시예에서, 제어부(3140)는 SoC(System On Chip)로 구현될 수 있다.
RAM(3141)은 저장부(3130)로부터 독출된 자율 주행 장치(3000)의 주행에 관련된 각종 명령어, 인스트럭션 등을 로딩하기 위한 메모리이다. ROM(3142)에는 시스템 부팅을 위한 명령어 세트 등이 저장된다. 자율 주행 장치(3000)에 턴 온 명령이 입력되어 전원이 공급되면, CPU(3143)는 ROM(3142)에 저장된 명령어에 따라 저장부(3130)에 저장된 O/S를 RAM(3141)에 복사하고, O/S를 실행시켜 시스템을 부팅시킨다. 부팅이 완료되면, CPU(3143)는 저장부(3130)에 저장된 각종 애플리케이션 프로그램을 RAM(3141)에 복사하고, RAM(3141)에 복사된 애플리케이션 프로그램을 실행시켜 각종 동작을 수행한다. 제어부(3140)는 저장부(3110)에 저장된 모듈을 이용하여 다양한 동작을 수행할 수 있다.
본 발명의 실시에들에 따라서, CPU(3143)는 하이퍼바이저, 호스트 운영 체제 및 게스트 운영 체제를 포함하는 가상화 환경을 제공할 수 있다. 하드웨어 인터페이스 장치(3144)는 상기 게스트 운영 체제 및 하드웨어 입출력 장치(예를 들어, IP들(3145, 3146)) 사이의 통신을 지원하도록 구현되며, 상기 게스트 운영 체제는 하드웨어 인터페이스 장치(3144)를 이용하여 상기 하드웨어 입출력 장치를 제어할 수 있다. 따라서, 게스트 운영 체제가 복잡한 소프트웨어 레이어들을 거치지 않고 하드웨어 입출력 장치와 통신함으로써, 하드웨어 입출력 장치의 성능을 유지하고 성능 저하를 방지할 수 있으며, 이와 함께 소프트웨어의 호환성, 이식성을 보장할 수 있다.
도 14는 본 발명의 실시예들에 따른 가상화 시스템이 자율 주행 차량에 설치된 예를 나타내는 도면이다.
도 14를 참조하면, 가상화 시스템(5010)은 자율 주행 차량(5000)에 설치되는 ADAS(advanced driver assistance system), 자율 주행 시스템 등일 수 있다.
가상화 시스템(5010)은 차량에 설치된 다양한 센서들로부터 비디오 시퀀스(또는 스테레오 이미지)(5300), 반사파, 반사광 등을 수신하여, 객체 검출(object detection), 객체 추적(object tracking) 및 장면 분리(scene segmentation) 등과 같은 다양한 이벤트의 발생을 결정하고, 이벤트의 발생에 따른 알림 메시지를 사용자에게 제공할 수 있다. 예를 들어, 가상화 시스템(5010)은 비디오 시퀀스(5300)를 분석하여 고정적인 패턴을 포함하는 도로(5200) 및 시간에 따라 이동중인 다른 차량(5100)을 검출할 수 있다. 예를 들어, 가상화 시스템(5010)은 비디오 시퀀스(5300) 내에서의 다른 차량(5100)의 좌표 분석을 통해, 다른 차량(5100)의 위치를 분석함으로써 다른 차량(5100)에 의하여 야기될 이벤트 발생 여부를 결정할 수 있다.
일 실시예에서, 자율 주행 차량(5000)은 통신 기능, 데이터 프로세싱 기능 및 운송 기능을 구비한 자동차, 버스, 트럭, 기차, 자전거, 오토바이 등의 교통 수단일 수 있다.
현재 오토모티브 분야의 소프트웨어 트렌드는 가상화이다. 여러 오토모티브 제조사들이 가상화를 이용한 제품을 출시하고 있다. 실제의 자동차 하드웨어는 여러 가지라고 해도 가상 머신을 동일하게 구현한다면 소프트웨어는 모두 동일하게 사용할 수 있기 때문에, 장기간 사용되는 자동차에서 오랜 기간 동안 소프트웨어 업그레이드 및 유지보수를 제공하기 위한 비용을 고려하면 가상화의 장점은 명확해진다. 가상화로 인한 성능 감소 문제가 있으나, 본 발명의 실시예들에 따르면 성능 감소 없이 소프트웨어의 호환성, 이식성을 보장할 수 있고, 호스트에서 지원하지 않는 장치를 게스트에서 구동시킬 수 있다.
한편, 본 발명의 실시예들은 컴퓨터로 판독 가능한 매체에 저장된 컴퓨터로 판독 가능한 프로그램 코드를 포함하는 제품 등의 형태로 구현될 수도 있다. 상기 컴퓨터로 판독 가능한 프로그램 코드는 다양한 컴퓨터 또는 다른 데이터 처리 장치의 프로세서로 제공될 수 있다. 상기 컴퓨터로 판독 가능한 매체는 컴퓨터로 판독 가능한 신호 매체 또는 컴퓨터로 판독 가능한 기록 매체일 수 있다. 상기 컴퓨터로 판독 가능한 기록 매체는 명령어 실행 시스템, 장비 또는 장치 내에 또는 이들과 접속되어 프로그램을 저장하거나 포함할 수 있는 임의의 유형적인 매체일 수 있다. 예를 들어, 상기 컴퓨터로 판독 가능한 매체는 비일시적(non-transitory) 저장 매체의 형태로 제공될 수 있다. 여기서, 비일시적은 저장 매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장 매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
본 발명의 실시예들은 가상화 환경이 적용된 임의의 전자 장치 및 시스템에 유용하게 이용될 수 있다. 예를 들어, 본 발명의 실시예들은 PC(Personal Computer), 서버 컴퓨터(server computer), 클라우드 컴퓨터(cloud computer), 데이터 센터(data center), 워크스테이션(workstation), 노트북(laptop), 핸드폰(cellular), 스마트 폰(smart phone), MP3 플레이어, PDA(Personal Digital Assistant), PMP(Portable Multimedia Player), 디지털 TV, 디지털 카메라, 포터블 게임 콘솔(portable game console), 네비게이션(navigation) 기기, 웨어러블(wearable) 기기, IoT(Internet of Things) 기기, IoE(Internet of Everything) 기기, e-북(e-book), VR(Virtual Reality) 기기, AR(Augmented Reality) 기기, 드론(drone), 오토모티브(automotive) 등과 같은 전자 시스템에 더욱 유용하게 적용될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (20)

  1. 가상화 환경을 구현하기 위한 기능을 제공하는 프로세서;
    상기 가상화 환경에서 동작하는 호스트(host) 운영 체제(operating system; OS);
    상기 가상화 환경의 적어도 하나의 가상 머신(virtual machine)에서 동작하는 적어도 하나의 게스트(guest) 운영 체제;
    상기 프로세서의 기능을 이용하여 상기 가상화 환경을 구현하고, 상기 가상화 환경에서 상기 적어도 하나의 가상 머신을 생성 및 제어하는 하이퍼바이저(hypervisor);
    상기 호스트 운영 체제 및 상기 적어도 하나의 게스트 운영 체제에 의해 제어되는 적어도 하나의 하드웨어 입출력(input/output; I/O) 장치; 및
    상기 적어도 하나의 게스트 운영 체제 및 상기 적어도 하나의 하드웨어 입출력 장치 사이의 통신을 지원하는 적어도 하나의 하드웨어 인터페이스 장치를 포함하는 가상화 시스템.
  2. 제 1 항에 있어서, 상기 적어도 하나의 하드웨어 인터페이스 장치는,
    상기 적어도 하나의 게스트 운영 체제 및 상기 하이퍼바이저와 독립적으로 형성되는 것을 특징으로 하는 가상화 시스템.
  3. 제 2 항에 있어서, 상기 적어도 하나의 게스트 운영 체제는,
    상기 가상화 환경에서의 동작을 위한 게스트 가상화 드라이버를 포함하고,
    상기 게스트 가상화 드라이버 및 상기 적어도 하나의 하드웨어 인터페이스 장치를 통해 상기 적어도 하나의 하드웨어 입출력 장치를 제어하는 것을 특징으로 하는 가상화 시스템.
  4. 제 3 항에 있어서,
    상기 게스트 가상화 드라이버에 의한 상기 적어도 하나의 하드웨어 입출력 장치의 제어는 상기 하이퍼바이저에 의해 트랩(trap)되지 않고 상기 적어도 하나의 하드웨어 인터페이스 장치로 직접 제공되는 것을 특징으로 하는 가상화 시스템.
  5. 제 3 항에 있어서,
    상기 호스트 운영 체제 및 상기 적어도 하나의 게스트 운영 체제에 의해 공유되는 공유 메모리를 더 포함하고,
    상기 적어도 하나의 게스트 운영 체제는 상기 게스트 가상화 드라이버 및 상기 공유 메모리를 통해 상기 적어도 하나의 하드웨어 입출력 장치와 데이터를 주고 받는 것을 특징으로 하는 가상화 시스템.
  6. 제 1 항에 있어서, 상기 적어도 하나의 하드웨어 인터페이스 장치는,
    상기 하이퍼바이저에 포함되는 적어도 하나의 하드웨어 에뮬레이터를 포함하는 것을 특징으로 하는 가상화 시스템.
  7. 제 6 항에 있어서, 상기 적어도 하나의 게스트 운영 체제는,
    상기 가상화 환경에서의 동작을 위한 게스트 가상화 드라이버를 포함하고,
    상기 게스트 가상화 드라이버 및 상기 적어도 하나의 하드웨어 에뮬레이터를 통해 상기 적어도 하나의 하드웨어 입출력 장치를 제어하는 것을 특징으로 하는 가상화 시스템.
  8. 제 7 항에 있어서,
    상기 게스트 가상화 드라이버에 의한 상기 적어도 하나의 하드웨어 입출력 장치의 제어는 상기 하이퍼바이저에 의해 트랩(trap)되어 상기 적어도 하나의 하드웨어 인터페이스 장치로 제공되는 것을 특징으로 하는 가상화 시스템.
  9. 제 1 항에 있어서,
    상기 적어도 하나의 운영 체제는 상기 가상화 환경의 제1 가상 머신에서 동작하는 제1 게스트 운영 체제를 포함하고,
    상기 적어도 하나의 하드웨어 입출력 장치는 제1 하드웨어 입출력 장치를 포함하며,
    상기 적어도 하나의 하드웨어 인터페이스 장치는 상기 제1 게스트 운영 체제 및 상기 제1 하드웨어 입출력 장치 사이의 통신을 지원하는 제1 하드웨어 인터페이스 장치를 포함하는 것을 특징으로 하는 가상화 시스템.
  10. 제 9 항에 있어서,
    상기 적어도 하나의 운영 체제는 상기 가상화 환경의 제2 가상 머신에서 동작하고 상기 제1 게스트 운영 체제와 독립적으로 동작하는 제2 게스트 운영 체제를 더 포함하고,
    상기 적어도 하나의 하드웨어 인터페이스 장치는 상기 제2 게스트 운영 체제 및 상기 제1 하드웨어 입출력 장치 사이의 통신을 지원하는 제2 하드웨어 인터페이스 장치를 더 포함하는 것을 특징으로 하는 가상화 시스템.
  11. 제 9 항에 있어서,
    상기 적어도 하나의 하드웨어 입출력 장치는 상기 제1 하드웨어 입출력 장치와 다른 제2 하드웨어 입출력 장치를 더 포함하고,
    상기 적어도 하나의 하드웨어 인터페이스 장치는 상기 제1 게스트 운영 체제 및 상기 제2 하드웨어 입출력 장치 사이의 통신을 지원하는 제2 하드웨어 인터페이스 장치를 더 포함하는 것을 특징으로 하는 가상화 시스템.
  12. 제 1 항에 있어서, 상기 호스트 운영 체제는,
    상기 가상화 환경에서의 동작을 위한 호스트 가상화 드라이버; 및
    상기 적어도 하나의 하드웨어 입출력 장치를 직접 제어하기 위한 장치 드라이버를 포함하고,
    상기 적어도 하나의 하드웨어 인터페이스 장치의 이용 없이 상기 호스트 가상화 드라이버 및 상기 장치 드라이버를 통해 상기 적어도 하나의 하드웨어 입출력 장치를 제어하는 것을 특징으로 하는 가상화 시스템.
  13. 제 1 항에 있어서,
    상기 호스트 운영 체제, 상기 적어도 하나의 게스트 운영 체제 및 상기 하이퍼바이저가 로드되는 메모리 장치를 더 포함하는 것을 특징으로 하는 가상화 시스템의 구동 방법.
  14. 제 13 항에 있어서,
    상기 호스트 운영 체제, 상기 적어도 하나의 게스트 운영 체제 및 상기 하이퍼바이저를 저장하는 저장 장치를 더 포함하는 것을 특징으로 하는 가상화 시스템의 구동 방법.
  15. 제 14 항에 있어서,
    상기 가상화 시스템의 부팅 시에 상기 저장 장치에 저장된 상기 호스트 운영 체제, 상기 적어도 하나의 게스트 운영 체제 및 상기 하이퍼바이저가 상기 메모리 장치로 로드되는 것을 특징으로 하는 가상화 시스템의 구동 방법.
  16. 제 1 항에 있어서, 상기 적어도 하나의 하드웨어 입출력 장치는,
    메모리 장치, 카메라, GPU(graphics processing unit), NPU(neural processing unit), PCIe(peripheral component interconnect express) 장치, UFS(universal flash storage) 장치 중 적어도 하나를 포함하는 것을 특징으로 하는 가상화 시스템의 구동 방법.
  17. 제 1 항에 있어서,
    상기 가상화 시스템은 Virtual I/O Device (VIRTIO) 표준에 기초하여 동작하는 것을 특징으로 하는 가상화 시스템의 구동 방법.
  18. 가상화 환경에서 동작하는 호스트(host) 운영 체제(operating system; OS), 상기 가상화 환경의 적어도 하나의 가상 머신(virtual machine)에서 동작하는 적어도 하나의 게스트(guest) 운영 체제, 및 상기 가상화 환경을 구현하기 위한 기능을 제공하는 프로세서를 이용하여 상기 가상화 환경을 구현하고 상기 가상화 환경에서 상기 적어도 하나의 가상 머신을 생성 및 제어하는 하이퍼바이저(hypervisor)를 실행하여, 상기 가상화 환경을 제공하는 단계; 및
    상기 호스트 운영 체제 및 상기 적어도 하나의 게스트 운영 체제에 의해 제어되는 적어도 하나의 하드웨어 입출력(input/output; I/O) 장치를 상기 적어도 하나의 게스트 운영 체제가 제어하고자 하는 경우에, 상기 적어도 하나의 게스트 운영 체제 및 상기 적어도 하나의 하드웨어 입출력 장치 사이의 통신을 지원하는 적어도 하나의 하드웨어 인터페이스 장치를 이용하여 상기 적어도 하나의 하드웨어 입출력 장치를 제어하는 단계를 포함하는 가상화 시스템의 구동 방법.
  19. 제 18 항에 있어서,
    상기 적어도 하나의 하드웨어 입출력 장치를 상기 호스트 운영 체제가 제어하고자 하는 경우에, 상기 적어도 하나의 하드웨어 인터페이스 장치의 이용 없이 상기 적어도 하나의 하드웨어 입출력 장치를 제어하는 단계를 더 포함하는 것을 특징으로 하는 가상화 시스템의 구동 방법.
  20. 가상화 환경을 구현하기 위한 기능을 제공하는 프로세서;
    상기 가상화 환경의 호스트(host) 가상 머신(virtual machine)에서 동작하는 호스트 운영 체제(operating system; OS);
    상기 가상화 환경의 서로 다른 제1 및 제2 게스트(guest) 가상 머신들에서 각각 독립적으로 동작하고, 상기 호스트 운영 체제와 독립적으로 동작하는 제1 및 제2 게스트 운영 체제들;
    상기 프로세서의 기능을 이용하여 상기 가상화 환경을 구현하고, 상기 가상화 환경에서 상기 호스트 가상 머신 및 상기 제1 및 제2 게스트 가상 머신들을 생성 및 제어하는 하이퍼바이저(hypervisor);
    상기 호스트 운영 체제 및 상기 제1 및 제2 게스트 운영 체제들에 의해 제어되는 하드웨어 입출력(input/output; I/O) 장치;
    상기 제1 게스트 운영 체제 및 상기 하드웨어 입출력 장치 사이의 통신을 지원하는 제1 하드웨어 인터페이스 장치; 및
    상기 제2 게스트 운영 체제 및 상기 하드웨어 입출력 장치 사이의 통신을 지원하고, 상기 제1 하드웨어 인터페이스 장치와 다른 제2 하드웨어 인터페이스 장치를 포함하고,
    상기 제1 게스트 운영 체제는 상기 가상화 환경에서의 동작을 위한 제1 게스트 가상화 드라이버를 포함하고, 상기 제1 게스트 가상화 드라이버 및 상기 제1 하드웨어 인터페이스 장치를 통해 상기 하드웨어 입출력 장치를 제어하며,
    상기 제2 게스트 운영 체제는 상기 가상화 환경에서의 동작을 위한 제2 게스트 가상화 드라이버를 포함하고, 상기 제2 게스트 가상화 드라이버 및 상기 제2 하드웨어 인터페이스 장치를 통해 상기 하드웨어 입출력 장치를 제어하며,
    상기 호스트 운영 체제는 상기 가상화 환경에서의 동작을 위한 호스트 가상화 드라이버 및 상기 하드웨어 입출력 장치를 직접 제어하는 장치 드라이버를 포함하고, 상기 제1 하드웨어 인터페이스 장치 또는 상기 제2 하드웨어 인터페이스 장치의 이용 없이 상기 호스트 가상화 드라이버 및 상기 장치 드라이버를 통해 상기 하드웨어 입출력 장치를 제어하는 가상화 시스템.
KR1020220020540A 2021-12-09 2022-02-17 가상화 시스템 및 그 구동 방법 KR20230087336A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US17/934,371 US20230185598A1 (en) 2021-12-09 2022-09-22 Virtualized system and method of operating the same
EP22207329.8A EP4195043A1 (en) 2021-12-09 2022-11-14 Virtualized system and method of operating the same
CN202211529120.1A CN116414516A (zh) 2021-12-09 2022-11-30 虚拟化系统和操作其的方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20210175660 2021-12-09
KR1020210175660 2021-12-09

Publications (1)

Publication Number Publication Date
KR20230087336A true KR20230087336A (ko) 2023-06-16

Family

ID=86948367

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220020540A KR20230087336A (ko) 2021-12-09 2022-02-17 가상화 시스템 및 그 구동 방법

Country Status (1)

Country Link
KR (1) KR20230087336A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117215992A (zh) * 2023-11-09 2023-12-12 芯原科技(上海)有限公司 异构内核处理器、异构处理器和电源管理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117215992A (zh) * 2023-11-09 2023-12-12 芯原科技(上海)有限公司 异构内核处理器、异构处理器和电源管理方法
CN117215992B (zh) * 2023-11-09 2024-01-30 芯原科技(上海)有限公司 异构内核处理器、异构处理器和电源管理方法

Similar Documents

Publication Publication Date Title
JP6559777B2 (ja) 自律走行車における処理ノードのデータフローを管理する方法、装置及びシステム
US11995462B2 (en) Techniques for virtual machine transfer and resource management
JP6864749B2 (ja) 仮想マシンインスタンスと顧客プログラマブル論理回路との間の中間ホスト集積回路
US8966477B2 (en) Combined virtual graphics device
US9626324B2 (en) Input/output acceleration in virtualized information handling systems
US20170031699A1 (en) Multiprocessing Within a Storage Array System Executing Controller Firmware Designed for a Uniprocessor Environment
US10133504B2 (en) Dynamic partitioning of processing hardware
WO2016041173A1 (en) Supporting multiple operating system environments in computing device without contents conversion
CN108139937B (zh) 多根i/o虚拟化系统
JP2021532495A (ja) 仮想マシン・メモリの安全なアクセス
JP6777050B2 (ja) 仮想化システム、仮想化プログラム、及び、記憶媒体
US20160321116A1 (en) Translating operating system processes
KR20230087336A (ko) 가상화 시스템 및 그 구동 방법
US20230281135A1 (en) Method for configuring address translation relationship, and computer system
CN113467850A (zh) 管理程序移除
US11256530B2 (en) Targeted page migration for guest virtual machine
US9684529B2 (en) Firmware and metadata migration across hypervisors based on supported capabilities
EP4195043A1 (en) Virtualized system and method of operating the same
US20220374254A1 (en) Virtualized system and method of preventing memory crash of same
EP3593252A1 (en) Managing guest partition access to physical devices
EP4180936A1 (en) Virtualized system and method of controlling access to nonvolatile memory device in virtualization environment
CN114741194A (zh) I/o请求的处理方法及装置