KR20130111593A - 가상화를 통한 스마트 장치의 직접적인 공유 - Google Patents

가상화를 통한 스마트 장치의 직접적인 공유 Download PDF

Info

Publication number
KR20130111593A
KR20130111593A KR1020137016023A KR20137016023A KR20130111593A KR 20130111593 A KR20130111593 A KR 20130111593A KR 1020137016023 A KR1020137016023 A KR 1020137016023A KR 20137016023 A KR20137016023 A KR 20137016023A KR 20130111593 A KR20130111593 A KR 20130111593A
Authority
KR
South Korea
Prior art keywords
virtual machine
vmm
resources
way
virtualization
Prior art date
Application number
KR1020137016023A
Other languages
English (en)
Other versions
KR101569731B1 (ko
Inventor
산제이 쿠마르
데이비드 제이 카우퍼더와이트
필립 알 란츠
라제쉬 엠 산카란
Original Assignee
인텔 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20130111593A publication Critical patent/KR20130111593A/ko
Application granted granted Critical
Publication of KR101569731B1 publication Critical patent/KR101569731B1/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
    • 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/4555Para-virtualisation, i.e. guest operating system has to be modified
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)
  • Stored Programmes (AREA)

Abstract

일부 실시예에서 장치는 가상 머신 워크로드를 직접 실행할 수 있다. 상이한 가상 머신으로부터의 워크로드 사이에 분리 및 스케줄링이 제공된다. 다른 실시예가 설명되고 청구된다.

Description

가상화를 통한 스마트 장치의 직접적인 공유{DIRECT SHARING OF SMART DEVICES THROUGH VIRTUALIZATION}
본 발명은 일반적으로 가상화를 통한 스마트 장치의 직접적인 공유에 관한 것이다.
입력/출력(I/O) 장치 가상화는 전체 장치 에뮬레이션(emulation)을 수행하기 위해 장치 모델을 이용하여 이전에 구현되었다. 이것은 장치의 공유를 허용하지만, 상당한 성능 오버헤드를 갖는다. 가상 머신(VM)에 대한 장치의 직접적인 장치 배정은 타고난 성능에 가깝게 하지만 장치가 VM 사이에서 공유될 수 없게 한다. 단일 루트 I/O 가상화(Single Root I/O Virtualization, SR-IOV) 등의 설계에 기반한 최신 하드웨어는 장치가 타고난 성능에 가깝게 하면서 공유될 수 있게 하지만, 하드웨어에 대한 상당한 변화를 필요로 한다.
본 발명은 이하에 주어지는 상세한 설명으로부터, 그리고 본 발명의 일부 실시예의 첨부 도면으로부터 더 완전히 이해될 것이지만, 본 발명을 기술된 특정 실시예에 제한하도록 취해지는 것은 아니고, 오직 설명 및 이해를 위한 것이다.
도 1은 본 발명의 일부 실시예에 따른 시스템을 도시하는 도면,
도 2는 본 발명의 일부 실시예에 따른 흐름을 도시하는 도면,
도 3은 본 발명의 일부 실시예에 따른 시스템을 도시하는 도면,
도 4는 본 발명의 일부 실시예에 따른 시스템을 도시하는 도면,
도 5는 본 발명의 일부 실시예에 따른 시스템을 도시하는 도면이다.
본 발명의 일부 실시예는 가상화를 통한 스마트 장치의 직접적 공유에 관한 것이다.
일부 실시예에서, 장치는 가상머신의 워크로드(workload)를 직접 실행할 수 있게 된다. 분리 및 스케줄링은 상이한 가상 머신으로부터의 워크로드 사이에서 제공된다.
일부 실시예에서, 높은 성능의 입력/출력(I/O) 장치 가상화는 다수의 가상 머신(VM) 사이에서 I/O 장치를 공유하면서 달성된다. 일부 실시예에서, 장치 에뮬레이션 및 직접 장치 배정의 혼합 기술은 직접 실행에 근거한 장치 모델을 제공한다. 일부 실시예에 따르면, 설계에 기반한 단일 루트 I/O 가상화(SR-IOV)에 대한 대안은, SR-IOV와 비교하여 하드웨어에 매우 적은 변화가 이루어지는 경우 제공된다. 일부 실시예에 따르면, 현대의 장치(예컨대, 범용 GPU(General Purpose Graphics Processing Units 또는 GPGPU 등의 현대의 장치)에서 더 높은 정도의 프로그램 가능성이 개발되고, 타고난 I/O 성능에 가깝게 VM에 제공된다.
도 1은 일부 실시예에 따른 시스템(100)을 도시한다. 일부 실시예에서, 시스템(100)은 장치(102) 및 가상 머신 모니터(VMM)(104)를 포함한다. 일부 실시예에서, 시스템(100)은 가상 머신 VM1(106), 가상 머신 VM2(108) 및, 예컨대, 부팅시에 VMM(104)에 의해 개시된 제 1 도메인인 Dom0(또는 도메인 제로)(110)를 포함한다. 일부 실시예에서, 장치(102)는, 예컨대, I/O 장치, 그래픽 프로세싱 유닛 또는 GPU, 및/또는 인텔 라라비(Larrabee) GPU 등의 범용 GPU 또는 GPGPU이다.
일부 실시예에서, 장치(102)는 운영 시스템(OS)(112)(마이크로-OS 또는 uOS라고 불리는 OS에 기초한 전체 FreeBSD)를 포함한다. 일부 실시예에서, OS(112)는 스케줄러(114) 및 드라이버(116)(예컨대, 호스트 드라이버)를 포함한다. 일부 실시예에서, 장치(102)는 드라이버 애플리케이션(118), 드라이버 애플리케이션(120), 장치 카드(122), 메모리 맵핑 입력/출력(MMIO) 레지스터 및 GTT 메모리(124), 그래픽 어퍼쳐(126), 디스플레이 인터페이스(128), 및 디스플레이 인터페이스(130)를 포함한다. 일부 실시예에서, VMM(104)은 Xen VMM 및/또는 오픈소스 VMM이다. 일부 실시예에서, VMM(104)은 132에서 EPT 페이지 테이블 및 VT-d 확장을 설정하는 능력을 포함한다. 일부 실시예에서, VM(106)은 애플리케이션(134)(예컨대, DX 애플리케이션), 런타임(136)(예컨대, DX 런타임), 장치 UMD(138), 및 커널 모드 드라이버(KMD)(140)(및/또는 에뮬레이팅된 장치)를 포함한다. 일부 실시예에서, VM(108)은 애플리케이션(144)(예컨대, DX 애플리케이션), 런타임(146)(예컨대, DX 런타임), 장치 UMD(148), 및 커널 모드 드라이버(KMD)(150)(및/또는 에뮬레이팅된 장치)를 포함한다. 일부 실시예에서, 도메인 제로(Dom0)(110)는 가상 호스트 확장(154)을 포함하는 호스트 커널 모드 드라이버(KMD)(152)를 포함한다. 일부 실시예에서, Dom0(110)은 호스트 VMM로서 동작하고 장치 모델(158)을 포함하는 프로세서 에뮬레이터 QEMU VM1(156)을 포함한다. 일부 실시예에서, Dom0(110)은 호스트 VMM로서 동작하고 장치 모델(164)을 포함하는 프로세서 에뮬레이터 QEMU VM2(162)을 포함한다.
일부 실시예에 따르면, I/O 장치(102)의 가상화는, 상당한 하드웨어 변화를 요구하지 않고 높은 성능 및 VM(106, 108) 사이에서 장치(102)를 공유하는 능력을 제공하는 방식으로 수행된다. 이것은 장치(102)가 VMM(104) 및 하나 이상의 VM(예컨대, VM(106, 108) 등)을 인식하도록 장치(102)의 하드웨어 및 소프트웨어/펌웨어를 수정함으로써 달성했다. 이것은 장치(102)가 높은 성능을 제공하는 방식으로 여러 VM(106, 108)과 직접 상호작용할 수 있게 한다. 장치(102)는 또한 상이한 VM으로부터의 워크로드 사이에서의 분리 및 스케줄링에 책임이 있다. 그러나, 장치(102)의 하드웨어에 대한 변화를 최소화하기 위해, 이 기술은 물리적 장치(102)로서 동일 장치를 에뮬레이트하는 VMM(104)에서 전통적인 장치 에뮬레이션 모델을 또한 필요로 한다. VM(106, 108)으로부터의 장치(102)에 대한 낮은 빈도의 액세스(예컨대, 장치 셋업을 하기 위한 액세스)는 장치 모델(164)에 의해 트랩핑 및 에뮬레이팅되지만, 높은 빈도의 액세스(예컨대, 장치로의/로부터의 데이터 송수신, 인터럽트 등)는 희생이 많은 VMM(104)의 관련을 피하면서 장치(102)에 대해 직접 이루어진다.
일부 실시예에서, VMM(104)의 장치 모델은 실제의 물리적 장치(102)와 동일한 VM(106 또는 108)에 대해 가상 장치를 제시하고, 장치 리소스에 대해 낮은 빈도의 액세스를 모두 처리한다. 일부 실시예에서, 이 모델은 또한 높은 빈도의 장치 리소스에 대한 직접적인 VM 액세스를 설정한다. 일부 실시예에서, VMM 구성요소(104)는 장치(102)가 가상화 인식을 하게 하고 그것이 다수의 VM(106, 108)에 직접 대화할 수 있게 하는 방식으로 장치(102)에 형성된다. 이 구성요소는 높은 빈도의 VM 액세스 모두를 처리하고 장치 공유를 가능하게 한다.
일부 실시예에 따르면, 단일 루트 I/O 가상화(SR-IOV) 설계와 비교하면 최소의 변화가 장치(102)의 하드웨어에 대해 요구된다. 장치(102)에서 실행되는 소프트웨어 구성요소는 VMM(104) 구성요소를 포함하도록 수정되고, 이를 통해 VMM 구성요소는 높은 빈도의 VM 액세스의 VMM 처리를 장치 자체로 넘긴다.
일부 실시예에 따르면, 장치(102)는 매우 스마트한 장치이고 고도로 프로그램 가능하다(예컨대, 일부 실시예에서 인텔의 라라비 GPU 등의 GPU). 일부 실시예에 따르면, 장치(102)는 마이크로 OS 또는 uOS라 불리는 OS(112)에 기초한 전체 FreeBSD를 실행한다. 일부 실시예에서, 장치 카드는 2 개의 VM(106, 108) 사이에서 공유되고, 이것은 일부 실시예에 따른 윈도우 비스타 VM이다. VM(106, 108)은 장치(102)에 직접 작업을 제안하고, 결과적으로 타고난 성능에 가깝게 된다.
일부 실시예에서, VMM(104)은 Xen(오픈 소스 VMM)을 이용하여 구현된다. 일부 실시예에서, 가상화된 장치 모델은 각각의 VM(106, 108)에 에뮬레이팅된 장치를 제공하기 위해 Xen을 이용하여 기입된다. 이 모델은 또한 VM(106, 108)에 장치(102)의 그래픽 어퍼쳐(126)에 대한 직접 액세스를 제공하여, VM(106 및/또는 108)이 장치(102)에 직접 작업을 제안하게 할 수 있다. 호스트 드라이버에 대한 장치 확장은 또한 장치 모델(164)이 장치 동작의 일부 국면을 제어하도록 할 수 있게 하는 데 사용된다. 장치(102)에서의 VMM 구성요소에 대해, 드라이버(116)는, 그것이 가상화 인식을 하게 하고, 다수의 VM으로부터 작업을 직접 수신할 수 있게 하는 일부 실시예에 따라 수정된다. VM(106 또는 108)의 그래픽 애플리케이션은 장치(106) 측에서 OS(112) 애플리케이션을 개시한다. 그 후 VM 애플리케이션(134 또는 144)은 처리(예컨대, 렌더링)를 위해 대응하는 장치 애플리케이션(118 또는 120)에 워크로드 데이터를 송신한다. 수정된 드라이버(116)는, 단지 그들이 동일한 호스트로부터의 다수의 애플리케이션인 것처럼 OS(112)가 다수의 VM(106, 108)로부터의 애플리케이션(118, 120)을 실행하게 할 수 있다. 별개의 OS 애플리케이션의 상이한 VM으로부터의 워크로드를 실행하는 것은 그들 사이에서 분리를 제공한다. 일부 실시예에서, OS 스케줄러(114)는 또한, 하나의 VM으로부터의 애플리케이션이 다른 VM으로부터의 애플리케이션을 항복시키지 않도록 상이한 VM으로부터의 애플리케이션을 스케줄링할 수 있게 하도록 수정된다.
일부 실시예에서, 그래픽 장치 가상화는 VMM(104)에서 구현된다. 일부 실시예에서, 2개의 VM(106, 108)은 단일 장치 카드를 공유하고, 그래픽 어퍼쳐(126)를 통한 직접 액세스에 의해 장치(102)에서 그들 워크로드를 직접 실행한다. OS(112)의 드라이버(116) 및 스케줄러(114)는 다수의 VM으로부터의(예컨대, 애플리케이션(134, 144) 사이에서 및/또는 DX 애플리케이션 사이에서) 분리 및 스케줄링을 제공하는 일부 실시예에 따라 수정된다.
일부 실시예에 따르면, 다음과 같이 5가지 주요 기술이 I/O 장치 가상화를 수행하도록 구현될 수 있다.
1. 전체 장치 에뮬레이션 - 전체 장치 에뮬레이션에서 VMM은 하드웨어 장치를 에뮬레이팅하기 위해 장치 모델을 이용한다. VM은 에뮬레이팅된 장치를 보고 그것에 액세스하도록 시도한다. 이들 액세스는 장치 모델에 의해 트랩핑되고 처리된다. 이들 액세스의 일부는 VM의 요구를 제공하기 위해 VMM의 물리적 장치에 대한 액세스를 필요로 한다. 모델에 의해 에뮬레이팅된 가상 장치는 시스템에 존재하는 물리적 장치에 독립적일 수 있다. 이것은 이 기술의 큰 이점이며, VM 이동을 단순하게 한다. 그러나, 이 기술의 단점은 장치를 에뮬레이팅하는 것이 높은 성능 오버헤드를 갖는다는 것이며, 그래서 이 기술은 VM의 타고난 성능에 가깝게 제공하지 못한다.
2. 직접 장치 배정 - 이 기술에서, 장치는 VM에 직접 배정되고, 장치의 메모리 맵핑 I/O(MMIO) 리소스는 모두 VM에 의해 직접 액세스 가능하다. 이것은 VM의 타고난 I/O 성능을 달성한다. 그러나, 단점은 장치가 다른 VM에 의해 공유될 수 없다는 것이다. 부가적으로, VM 이동은 더욱더 복잡해진다.
3. VM의 준 가상화(para-virtualized) 드라이버 - 이 방식에서, 준 가상화 드라이버는, 공유를 가능하게 하는 VMM 드라이버에 대화하는 VM 내에 로딩된다. 본 기술에서, 가상 장치는 물리적 장치에 독립적일 수 있고, 접근 방식에 기초한 장치 모델보다 더 높은 성능을 달성할 수 있다. 그러나 본 방식의 단점은 이것이 VM 내에 새로운 드라이버를 필요로 하고, 성능은 장치 배정에 의해 달성되는 것에 여전히 가깝지 않다는 것이다. 부가적으로, 가상 장치 의미론과 물리적 장치 의미론 사이의 해석이 구현하기에 복잡하고 종종 완전한 특징을 이루지 않는다(예컨대, 그래픽 가상화의 API 프록시).
4. 중개 패스스루(Mediated Pass-Through, MPT) 또는 보조 드라이버 패스스루(ADPT) - VMM 벤더는 최근에, 에뮬레이팅된 가상 장치가 물리적 장치와 동일한 MPT 또는 ADPT로 불리는 준 가상화 드라이버 이상의 개선된 기술을 제안했다. 이것은 VM이 기존의 장치 드라이버를 이용할 수 있게 한다(그것이 VMM과 대화하게 하기 위해 일부 수정됨). 이것은 또한 (두 장치가 동일하기 때문에) 가상 장치 포맷으로부터 물리적 장치 포맷으로 VM 워크로드를 해석하는 오버헤드를 피한다. 이 방식의 단점은, VM이 여전히 장치와 직접 통신할 수 없기 때문에, 성능이 여전히 장치 배정에 의해 달성되는 것에 가깝지 않다는 것이다.
5. 하드웨어 접근방식(예컨대, SR-IOV) - 본 방식에서, 장치 하드웨어는 장치 리소스의 다수의 인스턴스를 각 VM마다 하나식 생성하도록 수정된다. 단일 루트 I/O 가상화(SR-IOV)는 하드웨어 벤더 사이에서 대중적인 표준이고 그러한 장치에 대해 소프트웨어 인터페이스를 특정한다. 그것은 장치 리소스의 다수의 인스턴스(물리적 기능 또는 PF 및 다수의 가상 기능 또는 VF)를 생성한다. 이 방식의 이점은 이제 장치가 다수의 VM 사이에서 공유될 수 있는 것과 동시에 높은 성능을 부여할 수 있다는 것이다. 단점은 그것이 장치에 대한 상당한 하드웨어 변경을 요구하는 것이다. 또 다른 단점은 장치 리소스가 특정 수의 VM을 지원하도록 정적으로 생성되는 것이다(예컨대, 장치가 4개의 VM을 지원하도록 구축되고 현재 2개의 VM만이 실행되고 있으면, 다른 2개의 VM의 리소스 가치는 사용되지 않고 2개의 실행중인 VM에 이용될 수 없다).
일부 실시예에 따르면, 상기 기술 4 및 5의 혼합 방식이 높은 성능의 공유 가능 장치를 달성하기 위해 이용된다. 그러나, 이 혼합 방식은 기술 5에 의해 요구되는 하드웨어 변경의 대부분을 필요로 하지 않는다. 또한, 장치 리소스는 (기술 5에서와 같이 정적으로 구획되는 것 대신) VM에 동적으로 할당되도록 허용된다. 하드웨어 및 장치에서 실행되는 소프트웨어가 일부 실시예에 따라 수정되기 때문에, 그것은 VM과 직접 통신할 수 있고, 그 결과 (기술 4와 달리) 타고난 성능에 가까워진다. 기술 4와 마찬가지로, 일부 실시예에서 장치 모델은 물리적 장치와 동일한 가상 장치를 에뮬레이팅하도록 사용된다. 장치 소프트웨어/펌웨어에서의 변화에 따른 장치 모델은 기술 5에 의해 요구되는 하드웨어 변경의 대부분을 배제한다. 기술 2와 마찬가지로, 일부 실시예에서 장치 리소스의 일부는, VM이 장치와 직접 대화할 수 있도록 VM에 직접 맵핑된다. 그러나, 기술 2와 달리, 일부 실시예에서 장치 리소스는 장치를 다수의 VM 사이에서 공유 가능하도록 유지하는 방식으로 맵핑된다. 기술 5와 마찬가지로, 장치 행동은 일부 실시예에서 높은 성능을 달성하도록 수정된다. 그러나, 기술 5와 달리, 장치 소프트웨어/펌웨어가 주로 수정되고, 하드웨어에 대해서는 최소의 변경만 이루어지고, 따라서, 장치의 비용을 낮게 유지하고 광고하는 시간을 줄인다. 또한, (하드웨어 대신) 장치 소프트웨어를 변경함으로써, VM에 대한 장치 리소스의 동적 할당이 수요 기준으로 이루어진다.
일부 실시예에 따르면, 장치 공유 능력과 장치 리소스를 VM에 동적으로 할당하는 능력에 의해, 장치에 대한 상당한 하드웨어 변경의 필요없이 높은 성능의 I/O 가상화가 구현된다. 현재의 방식 중 어느 것도 이들 4가지 특징 모두를 제공하지 못한다. 일부 실시예에서, 장치 소프트웨어/펌웨어에 대한 변경이 이루어지고, 하드웨어에 대해 일부 변경이 이루어져, 장치가 VM 워크로드를 직접 실행할 수 있게 하고 상이한 VM으로부터의 워크로드 사이에서 분리 및 스케줄링을 제공하도록 할 수 있다.
일부 실시예에서, 직접 실행에 기초한 모델을 이용하는 혼합 방식이 구현된다. 일부 실시예에서, 장치 하드웨어 리소스의 다수의 인스턴스를 생성하는 대신 장치 소프트웨어/펌웨어가 수정된다. 이것은 상이한 VM으로부터의 워크로드 사이에서 분리 및 스케줄링을 가능하게 한다.
도 2는 일부 실시예에 따른 흐름(200)을 도시한다. 일부 실시예에서, 202에서 VM은 장치의 리소스(예컨대, 장치의 MMIO 리소스)에 대한 액세스를 요청한다. 204에서 MMIO 리소스가 빈번히 액세스된 리소스인지에 대한 판정이 이루어진다. 204에서 그것이 빈번히 액세스된 리소스가 아니면, 206에서 요청은 VMM 장치에 의해 트랩핑되고 에뮬레이팅된다. 그 후 208에서 VMM 장치 모델은 분리 및 스케줄링을 보장한다. 210에서 VMM 장치 모델은 장치 리소스(212)에 액세스한다. 204에서 그것이 빈번히 액세스된 리소스이면, 214에서 장치에 대한 직접 액세스 경로가 VM에 의해 이용된다. 216에서 장치 상의 VMM 구성요소는 VM의 직접 액세스를 수신한다. 그 후 218에서 VMM 구성요소는 이들 액세스에 대해 적절한 분리 및 스케줄링을 보장한다. 220에서, VMM 구성요소는 장치 리소스(212)에 액세스한다.
현대의 장치는 점점 더 프로그램 가능하게 되고, 장치 기능의 상당 부분은 장치 상에서 실행되는 소프트웨어/펌웨어로 구현된다. 일부 실시예에서 장치 하드웨어에 대해 최소의 변경이 필요하거나 전혀 필요하지 않다. 따라서, 일부 실시예에 따르면, I/O 장치 등의 장치에 대한 변경은 (예컨대, SR-IOV를 이용하는 하드웨어 방식에 비교하면) 점점 더 빨라진다. 일부 실시예에서, I/O 장치 등의 장치는 매우 짧은 시간에 가상화될 수 있다. 장치 소프트웨어/펌웨어는 높은 성능의 I/O 가상화를 제공하는 일부 실시예에 따라 변경될 수 있다.
일부 실시예에서, 다수의 요청자 ID는 단일의 I/O 메모리 관리 유닛(IOMMU) 테이블을 이용하여 에뮬레이팅될 수 있다.
도 3은 일부 실시예에 따른 시스템(300)을 도시한다. 일부 실시예에서, 시스템(300)은 장치(302)(예컨대, I/O 장치)를 포함한다. 장치(302)는 제 1 VM 워크로드(306) 및 제 2 VM 워크로드(308) 뿐만 아니라 장치 상에 VMM 구성요소도 갖는다. 시스템(300)은 제 1 VM IOMMU 테이블(312) 및 제 2 VM IOMMU 테이블(314)을 포함하는 통합 IOMMU 테이블(310)을 부가적으로 포함한다. 시스템(300)은 제 1 VM 메모리(322) 및 제 2 VM 메모리(324)를 포함하는 호스트 메모리(320)를 더 포함한다.
장치(302)의 VMM 구성요소(304)는 워크로드가 그들을 이용하기 전에 게스트 물리적 어드레스(GPA)에 태그를 붙인다. 워크로드(306)는 VM1 IOMMU 테이블(312)에 액세스하기 위해 IOMMU 테이블 id에 의해 붙여진 GPA1을 이용하고, 워크로드(308)는 VM2 IOMMU 테이블(312)에 액세스하기 위해 IOMMU 테이블 id에 의해 붙여진 GPA2를 이용한다.
도 3은, VM 각각이 높은 성능의 I/O를 위해 직접 장치에 액세스할 수 있는 경우에 다수의 VM 사이에서 단일 장치(302)(예컨대, I/O 장치)를 공유하는 문제에 관한 것이다. VM이 장치에 직접 액세스하기 때문에, 그것은 장치에 게스트 물리적 어드레스(GPA)를 제공한다. 장치(302)는 메모리에 액세스하기 위해 어드레스를 이용하기 전에, VM의 GPA를 호스트 물리적 어드레스(HPA)로 변환하는 IOMMU 테이블(310)을 이용함으로써 VM 메모리(322 및/또는 324)에 액세스한다. 현재, 각 장치의 기능은 요청자 ID라고 불리는 식별자를 이용함으로써 단일 IOMMU 테이블을 이용할 수 있다(모든 장치 기능은 요청자 ID를 갖는다). 그러나, 상이한 IOMMU 테이블은 각 VM에 대해, VM에 대해 맵핑하는 HPA에 개별 GPA를 제공하도록 요구된다. 따라서, 장치 기능은 한번에 하나의 IOMMU 테이블만 액세스할 수 있기 때문에, 다수의 VM 사이에서 기능이 직접 공유될 수 없다.
도 3의 시스템(300)은, 그것이 다수의 IOMMU 테이블에 동시에 액세스할 수 있도록 단일 장치 기능에 대해 다수의 요청자 ID를 에뮬레이팅함으로써 상기 문제를 해결한다. 다수의 IOMMU 테이블에 액세스하는 것은, 장치 기능이 다수의 VM의 메모리에 동시에 액세스하게 하고 이들 VM에 의해 공유되게 할 수 있다.
다수의 IOMMU 테이블(312, 314)은 단일 IOMMU 테이블(310)로 통합되고, 장치 기능은 이 통합된 IOMMU 테이블을 사용한다. IOMMU 테이블(312, 314)은 통합된 IOMMU 테이블(310)에서 상이한 오프셋으로 각 테이블의 맵핑을 배치함으로써 통합되어, GPA의 더 높은 차수의 비트가 IOMMU 테이블 ID를 나타낸다. 예컨대, 개별 IOMMU 테이블(312, 314)이 (게스트 메모리의 512GB를 맵핑할 수 있는) 39 비트 어드레스를 맵핑하고, 통합 IOMMU 테이블(310)이 48 비트 어드레스를 맵핑한다고 가정하면, 통합 IOMMU 테이블이 생성될 수 있고, 제 1 IOMMU 테이블의 멥핑이 오프셋 0에서 제공되고, 제 2 IOMMU 테이블이 오프셋 512GB에서 제공되고, 제 3 IOMMU 테이블이 오프셋 1TB에서 제공되며, 이하 마찬가지이다. 효율적으로 고차 비트 39-47은 통합 IOMMU 테이블(310)에서 개별 IOMMU 테이블 번호에 대한 식별자가 된다.
이 통합 테이블에 의해 작업하기 위해, 상이한 IOMMU 테이블에 대해 의도된 GPA가 수정된다. 예컨대, 제 2 IOMMU 테이블의 GPA 0은 통합 IOMMU 테이블에서 GPA 512GB에서 나타난다. 이것은 IOMMU GPA에서의 이러한 변경을 반영하기 위해 장치에 의해 사용되는 어드레스(GPA)를 변경하는 것을 요구하여, 그들이 통합 IOMMU 테이블의 정확한 부분을 이용한다. 필수적으로, 장치가 그들 GPA에 액세스하기 전에 GPA의 고차 비트가 IOMMU 테이블 번호로 태그 붙여진다. 일부 실시예에서, 장치에서 실행되는 소프트웨어/펌웨어가 이들 태그붙임(tagging)을 수행하도록 수정된다.
시스템(300)은 일부 실시예에 따른 2개의 중요한 구성요소를 포함한다. VMM 구성요소(304)는 통합 IOMMU 테이블(310)을 생성하고, 장치 기능이 이 IOMMU 테이블을 이용하게 한다. 부가적으로, 장치 구성요소는 VM으로부터 GPA를 수신하고, GPA가 수신된 VM에 대응하는 IOMMU 테이블 번호로 그들에 태그를 붙인다. 이것은 장치가 VM의 IOMMU 테이블(이제 통합 IOMMU 테이블의 일부임)의 맵핑을 정확하게 이용하게 한다. 장치에 의한 GPA의 태그붙임 및 통합 IOMMU 테이블의 생성은 단일 요청자 ID를 이용하여 다수의 요청자 ID를 집합적으로 에뮬레이팅한다.
시스템(300)은 2개의 VM 및 그들의 대응하는 IOMMU 테이블을 포함한다. 이들 IOMMU 테이블은 상이한 오프셋에서 단일의 통합 IOMMU 테이블로 결합되고, 이들 오프셋은 장치에서 대응하는 VM의 워크로드에 의해 사용된 GPA로 태깅되었다. 이것은 필수적으로 단일 IOMMU 테이블을 이용하여 다수의 RID를 에뮬레이팅한다. 도 3은 호스트 메모리에서 인접한 블럭으로서 VM의 메모리를 나타내지만, VM의 메모리는 실제로 호스트 메모리를 통해 산재된 인접하지 않은 페이지에 있을 수 있다. IOMMU 테이블은 각 VM에 대한 GPA의 인접한 범위로부터 호스트 메모리에서 인접하지 않은 물리적 페이지로 맵핑한다.
일부 실시예에 따르면, 장치(302)는 GPU다. 일부 실시예에서, 장치(302)는 인텔 라라비 GPU다. 여기서 논의된 바와 같이, 라라비 GPU 등의 GPU는 매우 스마트한 장치이고 고도로 프로그램 가능하다. 여기서 논의된 바와 같이, 그것은 일부 실시예에서 마이크로-OS 또는 uOS라 불리는 OS에 기초한 전체 FreeBSD를 실행한다. 이것은 그것을 이 기술에 대해 이상적 후보로 만든다. 일부 실시예에서, 단일 장치 카드(예컨대, 단일의 라라비 카드)는 2개의 윈도우비스타 VM에 의해 공유된다. VM은 장치에 직접 작업을 제시하고, 그 결과 타고난 성능에 가깝게 된다. 일부 실시예에서, Xen VMM 등의 오픈 소스 VMM이 사용된다. 일부 실시예에서, VMM(및/또는 Xen VMM)은 통합 IOMMU 테이블(310)을 생성하도록 수정된다. 일부 실시예에서, 장치 OS 드라이버가 장치 애플리케이션을 위해 페이지 테이블을 설정하면, 그것이 VM에 의해 사용된 IOMMU 테이블 번호로 GPA를 태깅하도록, 장치 OS 드라이버가 수정된다. 그것은 또한, 그것이 호스트 메모리와 로컬 메모리 사이에서 DMA를 행할 필요가 있을 때 GPA를 태깅한다. 이것은 GPA에 대한 모든 액세스가 통합 IOMMU 테이블을 이용하여 정확한 HPA에 맵핑되게 한다.
현재 장치(예컨대, SR-IOV 장치)는 다수의 요청자 ID(RID)를 생성하기 위해 장치에 다수의 장치 기능을 구현한다. 다수의 RID를 갖는 것은 장치가 다수의 IOMMU 테이블을 동시에 이용할 수 있게 한다. 그러나, 이것은 장치의 비용 및 광고하는 시간을 증가시키는 장치 하드웨어에 대한 상당한 변경을 필요로 한다.
일부 실시예에서, 어드레스 변환은 VMM 장치 모델에서 수행된다. VM은 작업 버퍼를 장치에 제시하도록 시도하는 경우, 그것은 VMM으로의 트랩을 생성하고, 이는 GPA를 찾기 위해 VM의 작업 버퍼를 분석하고 그 후 작업 버퍼가 장치에 부여되기 전에 GPA를 HPA로 변환한다. 빈번한 VMM 트랩 및 작업 버퍼의 분석 때문에, 이 기술은 매우 높은 가상화 오버헤드를 갖는다.
일부 실시예에서, (개별 장치 기능을 생성하는 대신에) 장치 소프트웨어/펌웨어에 대한 작은 수정만이 필요하여, 그것이 단일 요청자 ID를 이용하여 다수의 IOMMU 테이블을 이용할 수 있게 한다. VMM(304)은 장치(302)를 공유하는 모든 VM의 IOMMU 테이블을 포함하는 통합 IOMMU 테이블(310)을 생성한다. 장치는 GPA에 액세스하기 전에 대응하는 IOMMU 테이블 번호로 태그를 각 GPA에 붙인다. 이것은 장치 비용 및 광고하는 시간을 감소시킨다.
현재의 방식은 그것이 다수의 IOMMU 테이블을 동시에 액세스할 수 있게 하기 위해 현대의 I/O 장치(예컨대, 인텔의 라라비 GPU)의 프로그램 가능성을 이용하지 않는다. 대신 그들은, 그것이 다수의 IOMMU 테이블에 동시에 액세스할 수 있게 하도록 다수의 장치 기능을 구현하기 위해 하드웨어 변경에 의존한다.
일부 실시예에서, 통합 IOMMU 테이블이 사용되고(다수의 개별적 IOMMU 테이블로부터의 맵핑을 포함함), 장치 소프트웨어/펌웨어는 개별적 IOMMU 테이블 번호로 GPA에 태그를 붙이도록 수정된다.
도 4는 일부 실시예에 따른 시스템(400)을 도시한다. 일부 실시예에서, 시스템(400)은 장치(402)(예컨대, I/O 장치), VMM(404), 서비스 VM(406), VM1(408)을 포함한다. 서비스 VM(406)은 장치 모델(412), 호스트 장치 드라이버(414), 메모리 페이지(416)(MMIO 페이지로서 맵핑된 패스스루에 의함)를 포함한다. VM1(408)은 장치 드라이버(422)를 포함한다.
도 4는 장치 가상화에서 VMM 트랩을 감소시키기 위해 메모리 지지 레지스터(memory backed register)(예컨대, MMIO 레지스터)를 이용하여 도시한다. VMM(404)은 일부 실시예에 따른 장치 모델(412)을 이용하여 VM1(408)을 실행하고 I/O 장치(402)를 가상화한다. 장치 모델(412)은 메모리 페이지를 할당하고, VM의 I/O 장치 패스스루의 MMIO 페이지를 이 메모리 페이지로 맵핑한다. 장치의 적격 레지스터(eligible register)가 이 페이지에 존재한다. 장치 모델(412) 및 VM의 장치 드라이버(422)는 이 페이지에 액세스함으로써 적격 레지스터에 모두 직접 액세스할 수 있다. 비적격 레지스터에 대한 액세스는 VMM(404)에 의해 여전히 트랩핑되고 장치 모델(412)에 의해 에뮬레이팅된다.
전체 장치 에뮬레이션을 이용하는 I/O 장치 가상화는 VM에 대한 하드웨어 장치를 에뮬레이팅하는 VMM의 소프트웨어 장치 모델을 필요로 한다. 에뮬레이팅된 하드웨어 장치는 종종 상업적 운영 시스템에 존재하는 장치 드라이버에 영향을 주기 위해 기존의 물리적 장치에 기초한다. VM(408)은, 그것이 물리적 장치일 것이므로, VMM 장치 모델(412)에 의해 에뮬레이팅된 하드웨어 장치를 보고, 그 PCI, I/O 및 MMIO(memory-mapped I/O) 공간에 판독 및 기입함으로써 액세스한다. 이들 액세스는 VMM(404)에 의해 트랩핑되고, 그들이 적절히 에뮬레이팅되는 장치 모델(412)에 전달된다. 대부분의 현대의 I/O 장치는 장치의 PCI MMIO BAR(Base Address Register)에 의해 구성되는 범위의 메모리 맵핑 I/O를 통해 그들 레지스터를 노출시킨다. 그러나, 장치의 MMIO 레지스터에 대한 모든 VM 액세스를 트랩핑하는 것은 상당한 오버헤드를 갖고 가상화된 장치의 성능을 크게 감소시킨다. 에뮬레이팅된 장치의 MMIO 레지스터의 일부는, VM에 의한 판독/기입 시에, 레지스터의 값의 복귀/기입을 제외하고 장치 모델에 의한 임의의 여분의 처리를 필요로 하지 않는다. 액세스의 결과로서 수행될 처리가 없기 때문에, VMM(404)은 그러한 레지스터(이후에 적격 레지스터라고 불림)에 대한 액세스를 반드시 트랩핑할 필요가 없다. 그러나, 현재의 VMM은 장치 가상화를 함에 있어 불필요하게 가상화 오버헤드를 증가시키는 적격 레지스터에 대한 액세스에 트랩핑을 행한다. 이 오버헤드는 적격 레지스터가 VM(408)에 의해 자주 액세스되면 훨씬 더 현저해진다.
시스템(400)은 메모리와 함께 적격 레지스터를 지지함으로써 MMIO 레지스터에 대한 액세스에 의해 초래된 VMM 트랩의 수를 감소시킨다. VMM의 장치 모델(412)은 적격 레지스터에 대해 메모리 페이지를 할당하고, 이들 페이지를 RO(판독 전용 적격 레지스터(read-only eligible register)용) 및 RW(판독/기입 적격 레지스터(read/write eligible register)용)로서 VM에 맵핑한다. VM(408)이 적격 레지스터에 대한 적격 액세스를 하면, 액세스는 VMM(404)에 트랩핑하지 않고 메모리에 대해 이루어진다. 장치 모델(412)은 장치의 MMIO 공간의 가상 레지스터의 위치로서 메모리 페이지를 이용한다. 장치 모델(412)은, 메모리에 적절한 값을 덧붙이고 및/또는 VM(408)이 기입된 값을 판독함으로써, 이들 레지스터를 비동기적으로 에뮬레이팅한다. VMM 트랩의 수를 감소시킴으로써, 장치 가상화 성능이 향상된다.
적격 레지스터는 통상적인 메모리 가상화 기술(섀도우 페이지 테이블 또는 확장 페이지 테이블(ETP))을 이용하여 VM의 어드레스 공간으로 패스스루(레지스터 의미론에 따라 판독 전용 또는 판독-기입 중 하나) 맵핑된다. 그러나, MMIO 어드레스는 페이지 사이즈 입도(granularity)로만 VM에 맵핑될 수 있기 때문에, 이들 레지스터의 패스스루 맵핑은 마찬가지로 그 페이지 패스스루로 VM(408)에 모든 다른 레지스터를 맵핑할 것이다. 따라서, 비적격 레지스터가 동일 페이지에 존재하지 않을 때에만 VMM(404)은 적격 장치 레지스터를 VM(408)에 패스스루 맵핑할 수 있다. 따라서, 장치의 MMIO 레지스터 레이아웃은, 비적격 레지스터가 적격 레지스터와 함께 동일 페이지에 존재하지 않도록 일부 실시예에 따라 설계된다. 적격 레지스터는 판독 전용 및 판독/기입 패스스루 레지스터로서 더 분류되고, 직격 레지스터의 이들 2가지 타입은 개별 MMIO 페이지에 있을 필요가 있다. VM이 준 가상화된 드라이버를 이용하면, 그러한 MMIO 레이아웃과 함께 하드웨어 장치에 의존할 필요가 없도록 장치에 대해 그러한 가상화 친화적 MMIO 레이아웃을 생성할 수 있다.
현재의 VMM은 적격 장치 레지스터 패스스루를 VM에 맵핑하지 않고, 이들 레지스터에 대한 액세스를 트랩핑함으로써 불필요한 가상화 오버헤드를 발생시킨다. 그 이유 중 하나는, 적격 레지스터가 비적격 레지스터와 동일한 MMIO 페이지에 위치하고 있는 것일 수 있다. 현재의 VMM은 VM의 준 가상화 드라이버를 이용하여 VMM 트랩을 감소시킨다. 이들 준 가상화 드라이버는 (예컨대, 이들 레지스터의 값이 VM에서 무의미하기 때문에) 불필요한 레지스터 액세스가 이루어지는 것을 피하고, 또는 (예컨대, 장치를 프로그래밍하는 일련의 레지스터를 기입하도록) 그들 레지스터 액세스를 함께 묶는다(batch).
시스템(400)은 I/O 장치 가상화에서 VMM 트랩의 수를 더 감소시키기 위해 새로운 기술을 이용하고, 결과적으로 장치 가상화 성능이 더 현저해졌다. 시스템(400)은 VM의 장치에 대해 메모리 지지된 적격 레지스터를 이용하고, 가상 장치에 액세스함에 있어 VMM 트랩의 수를 감소시키기 위해 VM에 이들 메모리 페이지를 맵핑한다.
현재의 VMM 장치 모델은 적격 장치 레지스터 패스스루를 VM에 맵핑하지 않고, 그들 액세스에 대해 트랩핑함으로써 불필요한 가상화 오버헤드를 발생시킨다. 이것은 장치를 가상화함에 있어 필요한 것보다 더 많은 VMM 트랩을 초래한다.
일부 실시예에 따르면, 적격 MMIO 레지스터는 메모리에 의해 지지되고, 메모리 페이지는 VM 트랩을 감소시키기 위해 VM의 패스스루에 맵핑된다.
도 5는 일부 실시예에 따른 시스템(500)을 도시한다. 일부 실시예에서, 시스템(500)은 장치(502)(예컨대, I/O 장치), VMM(504), 서비스 VM(506), VM(508)을 포함한다. 서비스 VM(506)은 장치 모델(512), 호스트 장치 드라이버(514), 및 인터럽트 상태 레지스터를 포함하는 메모리 페이지(516)를 포함한다. VM(508)은 장치 드라이버(522)를 포함한다. 장치(502)에서, 워크로드 완료(532)에 따라, 534에서 인터럽트를 생성하기 전에 장치(502)는 인터럽트 상태 레지스터(예컨대, 메모리 페이지(516)의 인터럽트 상태 레지스터)의 위치를 수신하고 그들을 업데이트한다.
시스템(500)은 VM(508)에 인터럽트를 직접 투입하는 것을 도시한다. VMM(504)은 장치 모델(512)을 이용하여 그 I/O 장치(502)를 가상화하는 VM(508)을 실행시킨다. 장치 모델은 인터럽트 상태 레지스터를 포함하도록 메모리 페이지(516)를 할당하고 그 어드레스를 물리적 I/O 장치에 전달한다. 장치 모델(512)은 또한 메모리 페이지 판독 전용 패스스루를 VM(508)에 맵핑한다. VM의 워크로드 완료 후에, I/O 장치(502)는 메모리 페이지(516)에 인터럽트 상태 레지스터를 업데이트하고 그 후 인터럽트를 생성한다. 장치 인터럽트를 수신하면, 프로세서는 VM(508)에 인터럽트를 직접 투입한다. 이것은 VM의 장치 드라이버(522)가 (임의의 VMM 트랩을 생성하지 않고) 인터럽트 상태 레지스터를 판독하게 한다. 장치 드라이버(522)는 (인터럽트를 수신확인하기 위해) 이들 레지스터에 기입하면, 그것은 VMM 트랩을 생성하고, 장치 모델(512)은 그것을 처리한다.
여기서 논의된 바와 같이, VMM은 I/O 장치 가상화를 제공하여, VM이 물리적 I/O 장치를 이용할 수 있게 한다. 많은 VMM은 장치 모델을 이용하여, 다수의 VM이 단일의 물리적 장치를 이용하게 한다. I/O 가상화 오버헤드는 총 가상화 오버헤드의 가장 큰 부분이다. I/O 가상화 오버헤드의 가장 큰 부분은 VM을 위한 장치 인터럽트를 처리하는 데 연관된 오버헤드이다. 물리적 장치가 VM으로부터의 요청을 처리한 경우, 그것은 VMM의 장치 모델에 의해 트랩핑 및 처리되는 인터럽트를 생성한다. 장치 모델은 가상 인터럽트 상태 레지스터를 설정하고 VM에 인터럽트를 투입한다. VM에 인터럽트를 투입하는 것은 매우 부담스러운 동작인 것이 관측되었다. 그것은 VM을 스케줄링하고, VM을 실행하기 위해 선택된 프로세서에 IPI를 송신하는 것을 필요로 한다. 이것은 가상화 오버헤드에 상당히 기여한다. VM은, 인터럽트를 수신하면, 인터럽트 상태 레지스터를 판독한다. 이것은 레지스터의 값을 돌려주는, VMM의 장치 모델에 대한 또 다른 트랩을 생성한다.
인터럽트 처리 레이턴시를 감소시키기 위해, 하드웨어 특징은 (명명된 가상 인터럽트 전달 및 전달된 인터럽트) VMM 연관 없이 VM으로의 직접 인터럽트 투입에 사용될 수 있다. 이들 하드웨어 특징은 장치가 VM을 직접 인터럽트하게 한다. 직접적 장치 배정 및 SR-IOV를 위한 이들 기술 작업 중에, 직접적 인터럽트 투입은 가상화 방식에 기초한 장치 모델에 대해 작동하지 않는다. 이것은, VM의 장치에 대한 인터럽트 상태가 장치 모델에 의해 관리되고, 장치 모델은 그것이 인터럽트 상태를 업데이트할 수 있도록 인터럽트를 통지받아야 하기 때문이다.
시스템(500)은 장치 모델 기반 가상화 방식을 위해 VM으로의 직접 인터럽트 투입을 가능하게 한다. VMM의 장치 모델은 직접 인터럽트 투입동안 통지받지 않기 때문에, 장치 스스로 인터럽트를 생성하기 전에 장치 모델의 인터럽트 상태 레지스터를 업데이트한다. 장치 모델은 VM의 장치의 인터럽트 상태에 대해 메모리를 할당하고, 이 메모리의 위치를 장치에 전달한다. 장치는, 그것이 장치 모델로부터 인터럽트 상태 레지스터의 위치를 수신하고, 인터럽트를 생성하기 전에 이들 위치를 적절히 업데이트하도록 (장치에서 실행되는 하드웨어 또는 소프트웨어/펌웨어에) 수정된다. 장치 모델은 또한, VM의 장치 드라이버가 VMM 트랩을 생성하지 않고 그들을 액세스할 수 있도록 VM 어드레스 공간으로 인터럽트 상태 레지스터를 맵핑한다. 종종 장치의 인터럽트 상태 레지스터는 W1C(write 1 to clear) 의미론(레지스터의 비트에 1을 기입하는 것은 그 비트를 소거한다)을 갖는다. 그러한 레지스터는, RAM 메모리가 W1C 의미론을 에뮬레이팅할 수 없기 때문에, 판독-기록으로 VM에 맵핑될 수 없다. 이들 인터럽트 상태 레지스터는, VM이 임의의 VMM 트랩없이 인터럽트 상태 레지스터를 판독할 수 있도록 VM에 판독전용으로 맵핑될 수 있고, 그것이 (예컨대, 인터럽트를 수신확인하기 위해) 인터럽트 상태 레지스터를 기입하는 경우, VMM은 액세스를 트랩핑하고, 장치 모델은 W1C 의미론을 에뮬레이팅한다. 이런 이유로, 시스템(500)의 일부 실시예는 2 가지 중요한 구성요소를 이용한다.
일부 실시예에 따른 시스템(500)의 첫번째 중요한 구성요소는, 인터럽트 상태 레지스터에 대해 메모리를 할당하고, 이들 레지스터의 위치에 대해 장치에 통지하고, 이들 메모리를 VM(508)의 MMIO 공간에 맵핑하는 VMM 장치 모델(512)이다.
일부 실시예에 따른 시스템(500)의 두번째 중요한 구성요소는, VM(508)에 대한 인터럽트를 생성하기 전에 장치 모델(512)로부터 인터럽트 상태 레지스터의 위치를 수신하고 그들을 적절히 업데이트하는 장치 상주 구성요소(532)이다.
일부 실시예에 따르면, 하드웨어는 직접 인터럽트 투입을 위한 지원(예컨대, 가상 인터럽트 전달로 명명된 APIC 특징 및 인텔 프로세스를 위해 전달된 인터럽트)을 제공하도록 사용된다.
일부 실시예에 따르면, VMM 장치 모델(512)은, 그것이 VM으로의 인터럽트 투입중에 연관될 필요가 없도록, 장치 자체에 대해 인터럽트 상태 레지스터를 업데이트하는 책임을 없앤다. 현재 방식에서는, 장치 인터럽트시에, 장치 모델은 인터럽트 상태 레지스터를 업데이트하고, VM으로 인터럽트를 투입한다. 도 5의 시스템(500)에서, 장치는 VM의 인터럽트 상태 레지스터를 업데이트하고(이들 레지스터용 메모리는 사전에 장치 모델에 의해 할당됨), VM으로 직접 투입된 인터럽트를 생성한다. 부가적으로, VM의 장치 드라이버가 이들 레지스터에 액세스하는 경우, 장치 모델(512)은 또한 VMM 트랩을 피하기 위해 VM으로 인터럽트 상태 레지스터를 맵핑한다.
현재 방식에서, 인터럽트 상태 레지스터는 장치 자체에 존재한다. 장치는 메모리의 인터럽트 상태 레지스터를 업데이트할 책임이 없다. VM의 장치 드라이버가 이들 레지스터에 액세스하는 경우, 현재 장치 모델은 또한 VMM 트랩을 피하기 위해 VM으로 이들 레지스터를 맵핑하지 않는다.
일부 실시예에 따르면, 물리적 I/O 장치는 메모리에서 장치 모델의 인터럽트 상태 레지스터를 업데이트하여, 인터럽트가 VM으로 직접 투입되게 한다.
일부 실시예는 특정 방식으로 구현되도록 여기서 기술되었지만, 일부 실시예에 따르면, 이들 특정 구현예가 필요없을 수 있다.
일부 실시예는 특정 구현예를 참조하여 기술되었지만, 다른 구현예가 일부 실시예에 따라 가능하다. 부가적으로, 도면에 도시되고 및/또는 여기에 기술된 회로 요소 또는 다른 특징의 배치 및/순서는 도시 및 기술된 특정 방식으로 구성될 필요는 없다. 일부 실시예에 따라 많은 다른 구성이 가능하다.
도면에 도시된 각 시스템에서, 일부 경우의 구성요소는 각각, 제시된 구성요소가 다른 및/또는 유사할 수 있는 것을 제안하기 위해 동일한 참조부호 또는 상이한 참조부호를 가질 수 있다. 그러나, 한 구성요소는 상이한 구현예를 갖고, 여기에 도시된 또는 기술된 시스템의 일부 또는 전부에 의해 작동하기에 충분히 유연할 수 있다. 도면에 도시된 다양한 구성요소는 동일하거나 상이할 수 있다. 제 1 요소로 언급되는 것과 제 2 요소로 불리는 것은 임의의 것이다.
명세서 및 청구범위에서, 용어 "연결된" 및 "접속된"은 그 파생어와 함께 사용될 수 있다. 이들 용어는 서로 동의어로서 의도되지 않는 것이 이해될 것이다. 오히려, 특정 실시예에서, "접속된"은 2 개 이상의 구성요소가 서로 직접적으로 물리적이거나 전기적 접촉인 것을 나타내기 위해 사용될 수 있다. "연결된"은 2개 이상의 구성요소가 직접적으로 물리적 또는 전기적 접촉인 것을 의미할 수 있다. 그러나, "연결된"은 또한, 2개 이상의 구성요소가 서로 직접 접촉되지 않지만, 여전히 서로 협력 또는 상호작용하는 것을 의미할 수 있다.
알고리즘은 여기서 일반적으로 바람직한 결과로 유도하는 조치 또는 동작의 일관성있는 시퀀스로 여겨진다. 이들은 물리적 양의 물리적 조작을 포함한다. 통상, 필수적이지는 않지만, 이들 양은 저장, 전달, 결합, 비교 및 그 외 다르게 조작될 수 있는 전기적 또는 자기적 신호의 형태를 취한다. 이들 신호를 비트, 값, 요소, 심볼, 문자, 용어, 숫자 등으로 지칭하는 것이 때로는 통상적 사용의 이유로 원칙적으로 편리한 것이 증명되었다. 그러나, 모든 이들 및 유사 용어는 적절한 물리적 양과 연관될 수 있고, 단지 이들 양에 적용된 편의적 라벨임이 이해될 것이다.
일부 실시예는, 하드웨어, 펌웨어 및 소프트웨어 중 하나 또는 그 조합으로 구현될 수 있다. 일부 실시예는 또한, 여기 설명된 동작을 수행하기 위해 플랫폼을 계산함으로써 판독 및 실행될 수 있는 기계 판독 가능한 매체에 기록된 명령으로서 구현될 수 있다. 기계 판독 가능한 매체는 기계(예컨대, 컴퓨터)에 의해 판독 가능한 형태로 정보를 저장하거나 전송하는 임의의 메커니즘을 포함할 수 있다. 예컨대, 기계 판독 가능한 매체는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 스토리지 매체, 광학 스토리지 매체, 플래시 메모리 장치, 전기적, 광학, 음향학적 신호 또는 전파 신호(예컨대, 반송파, 적외선 신호, 디지털 신호, 신호를 송신 및/또는 수신하는 인터페이스 등)의 다른 형태 등을 포함할 수 있다.
일 실시예는 본 발명의 구현예 또는 예이다. 본 명세서에서 "일 실시예", "하나의 실시예", "일부 실시예" 또는 "다른 실시예"라고 지칭한 것은 본 실시예와 연관지어 설명된 특정 특징, 구조 또는 특성이 본 발명의 적어도 일부 실시예에 포함되지만 반드시 모든 실시예에 포함되는 것은 아님을 의미한다. "일 실시예", "하나의 실시예" 또는 "일부 실시예"의 여러가지 표현은 반드시 모두가 동일한 실시예를 말하는 것은 아니다.
여기서 설명되고 도시된 모든 구성요소, 특징, 구조, 특성 등이 특정 실시예 또는 실시예들에 포함될 필요는 없다. 예컨대, 명세서가 구성요소, 특징, 구조 특성이 포함"되어도 좋은", "될 것인", "될 수 있는" 또는 "될" 것을 기술하면, 특정 구성요소, 특징, 구조 또는 특성이 포함될 것이 요구되는 것은 아니다. 본 명세서 또는 청구범위가 "일" 또는 "하나"의 요소를 가리키면, 그것은 그 요소 하나만 있는 것을 의미하지는 않는다. 본 명세서 또는 청구범위가 "하나의 추가적인" 요소를 가리키면, 그것은 그 추가적인 요소 하나 이상이 있는 것을 불가능하게 하는 것은 아니다.
흐름도 및/또는 상태도가 실시예를 설명하기 위해 여기서 이용될 수 있지만, 본 발명은 그들 도면 또는 여기서의 대응하는 명세서에 한정되지 않는다. 예컨대, 흐름은 각각의 도시된 박스 또는 상태를 통해 또는 정확하게 여기서 도시되고 설명된 것과 동일한 순서로 이동할 필요는 없다.
본 발명은 여기서 열거된 특정 세부사항에 한정되지 않는다. 실제로, 본 명세서에서 이익을 얻는 당업자는, 상기 명세서 및 도면으로부터 많은 다양한 변형예가 본 발명의 범위 내에서 이루어질 수 있음을 이해할 것이다. 따라서, 본 발명의 범위를 정의하는 것은 그에 대한 임의의 보정을 포함하는 다음의 청구범위이다.

Claims (20)

  1. 장치가 가상 머신 워크로드를 직접 실행할 수 있게 하는 단계와,
    상이한 가상 머신으로부터의 워크로드 사이에서 분리(isolation) 및 스케줄링을 제공하는 단계를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상이한 가상 머신으로부터의 워크로드의 분리 및 스케줄링을 가능하게 하기 위해 장치 소프트웨어 및/또는 펌웨어를 수정하는 단계를 더 포함하는
    방법.
  3. 제 1 항에 있어서,
    높은 성능의 입력/출력 가상화를 제공하는 단계를 더 포함하는
    방법.
  4. 제 1 항에 있어서,
    복수의 가상 머신에 의해 장치를 공유할 수 있게 하는 단계를 더 포함하는
    방법.
  5. 제 1 항에 있어서,
    가상 머신에 장치 리소스를 동적으로 할당하는 단계를 더 포함하는
    방법.
  6. 제 1 항에 있어서,
    가상화되는 장치에 상당한 하드웨어 변경을 요구하지 않고 가상 머신에 장치 리소스를 동적으로 할당하는 단계를 더 포함하는
    방법.
  7. 제 1 항에 있어서,
    빈번히 액세스된 장치 리소스에 대해 가상화되는 장치로의 경로에 직접 액세스하는 단계를 더 포함하는
    방법.
  8. 제 1 항에 있어서,
    덜 빈번히(non-frequently) 액세스된 장치 리소스에 대한 분리 및 스케줄링을 보장하는 단계를 더 포함하는
    방법.
  9. 제 1 항에 있어서,
    트랩핑 및 에뮬레이팅하는 단계를 더 포함하는
    방법.
  10. 제 1 항에 있어서,
    덜 빈번히 액세스된 장치 리소스에 대해 가상 머신 장치 모델을 이용하여 장치 리소스에 액세스하는 단계를 더 포함하는
    방법.
  11. 장치가 가상 머신 워크로드를 직접 실행할 수 있게 하도록 구성되고, 상이한 가상 머신으로부터의 워크로드 사이에서 분리 및 스케줄링을 제공하도록 구성되는, 가상 머신 모니터를 포함하는
    기기.
  12. 제 11 항에 있어서,
    상기 가상 머신 모니터는 상이한 가상 머신으로부터의 워크로드의 분리 및 스케줄링을 가능하게 하기 위해 장치 소프트웨어 및/또는 펌웨어를 수정하도록 구성되는
    기기.
  13. 제 11 항에 있어서,
    상기 가상 머신 모니터는 높은 성능의 입력/출력 가상화를 제공하도록 구성되는
    기기.
  14. 제 11 항에 있어서,
    상기 가상 머신 모니터는 장치가 복수의 가상 머신에 의해 공유될 수 있게 하도록 구성되는
    기기.
  15. 제 11 항에 있어서,
    상기 가상 머신 모니터는 가상 머신에 장치 리소스를 동적으로 할당하도록 구성되는
    기기.
  16. 제 11 항에 있어서,
    상기 가상 머신 모니터는 가상화되는 장치에 상당한 하드웨어 변경을 요구하지 않고 가상 머신에 장치 리소스를 동적으로 할당하도록 구성되는
    기기.
  17. 제 11 항에 있어서,
    상기 가상 머신 모니터는 빈번히 액세스된 장치 리소스에 대해 가상화되는 장치로의 경로에 직접 액세스하도록 구성되는
    기기.
  18. 제 11 항에 있어서,
    상기 가상 머신 모니터는 덜 빈번히 액세스된 장치 리소스에 대한 분리 및 스케줄링을 보장하도록 구성되는
    기기.
  19. 제 11 항에 있어서,
    상기 가상 머신 모니터는 트랩핑하고 에뮬레이팅하도록 구성되는
    기기.
  20. 제 11 항에 있어서,
    상기 가상 머신 모니터는 덜 빈번히 액세스된 장치 리소스에 대해 가상 머신 장치 모델을 이용하여 장치 리소스에 액세스하도록 구성되는
    기기.
KR1020137016023A 2010-12-23 2011-12-19 가상화를 통한 스마트 장치의 직접적인 공유 KR101569731B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/977,490 US20120167082A1 (en) 2010-12-23 2010-12-23 Direct sharing of smart devices through virtualization
US12/977,490 2010-12-23
PCT/US2011/065941 WO2012087984A2 (en) 2010-12-23 2011-12-19 Direct sharing of smart devices through virtualization

Publications (2)

Publication Number Publication Date
KR20130111593A true KR20130111593A (ko) 2013-10-10
KR101569731B1 KR101569731B1 (ko) 2015-11-17

Family

ID=46314814

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137016023A KR101569731B1 (ko) 2010-12-23 2011-12-19 가상화를 통한 스마트 장치의 직접적인 공유

Country Status (6)

Country Link
US (1) US20120167082A1 (ko)
JP (1) JP5746770B2 (ko)
KR (1) KR101569731B1 (ko)
CN (1) CN103282881B (ko)
TW (1) TWI599955B (ko)
WO (1) WO2012087984A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160096279A (ko) * 2015-02-04 2016-08-16 삼성전자주식회사 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120182993A1 (en) * 2011-01-14 2012-07-19 International Business Machines Corporation Hypervisor application of service tags in a virtual networking environment
US10142218B2 (en) 2011-01-14 2018-11-27 International Business Machines Corporation Hypervisor routing between networks in a virtual networking environment
JP5585844B2 (ja) * 2011-03-25 2014-09-10 株式会社日立製作所 仮想計算機の制御方法及び計算機
US8774213B2 (en) * 2011-03-30 2014-07-08 Amazon Technologies, Inc. Frameworks and interfaces for offload device-based packet processing
US8799592B2 (en) * 2011-04-20 2014-08-05 International Business Machines Corporation Direct memory access-like data transfer between guest operating systems
US9021475B2 (en) * 2011-05-04 2015-04-28 Citrix Systems, Inc. Systems and methods for SR-IOV pass-thru via an intermediary device
US8850130B1 (en) 2011-08-10 2014-09-30 Nutanix, Inc. Metadata for managing I/O and storage for a virtualization
US8549518B1 (en) 2011-08-10 2013-10-01 Nutanix, Inc. Method and system for implementing a maintenanece service for managing I/O and storage for virtualization environment
US9652265B1 (en) * 2011-08-10 2017-05-16 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment with multiple hypervisor types
US9747287B1 (en) 2011-08-10 2017-08-29 Nutanix, Inc. Method and system for managing metadata for a virtualization environment
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US9009106B1 (en) 2011-08-10 2015-04-14 Nutanix, Inc. Method and system for implementing writable snapshots in a virtualized storage environment
US8863124B1 (en) 2011-08-10 2014-10-14 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
CN104247332B (zh) * 2012-02-20 2017-10-17 维图斯瑞姆Ip控股公司 处理关于虚拟机和网络之间的通信的流量的方法和系统
US9099051B2 (en) * 2012-03-02 2015-08-04 Ati Technologies Ulc GPU display abstraction and emulation in a virtualization system
US9772866B1 (en) 2012-07-17 2017-09-26 Nutanix, Inc. Architecture for implementing a virtualization environment and appliance
US9384024B2 (en) * 2012-12-18 2016-07-05 Dynavisor, Inc. Dynamic device virtualization
US9665386B2 (en) 2013-06-14 2017-05-30 Nutanix, Inc. Method for leveraging hypervisor functionality for maintaining application consistent snapshots in a virtualization environment
US9740514B1 (en) * 2013-06-26 2017-08-22 Nutanix, Inc. Method and system to share data with snapshots in a virtualization environment
US9983893B2 (en) 2013-10-01 2018-05-29 Red Hat Israel, Ltd. Handling memory-mapped input-output (MMIO) based instructions using fast access addresses
US9916173B2 (en) * 2013-11-25 2018-03-13 Red Hat Israel, Ltd. Facilitating execution of MMIO based instructions
WO2015080719A1 (en) * 2013-11-27 2015-06-04 Intel Corporation Apparatus and method for scheduling graphics processing unit workloads from virtual machines
US9411765B2 (en) * 2013-12-20 2016-08-09 Qualcomm Incorporated Methods of using a peripheral component interconnect express (PCIE) device in a virtual environment
US10346330B2 (en) 2014-01-29 2019-07-09 Red Hat Israel, Ltd. Updating virtual machine memory by interrupt handler
US11243707B2 (en) 2014-03-12 2022-02-08 Nutanix, Inc. Method and system for implementing virtual machine images
US9940167B2 (en) 2014-05-20 2018-04-10 Red Hat Israel, Ltd. Identifying memory devices for swapping virtual machine memory pages
US10133597B2 (en) * 2014-06-26 2018-11-20 Intel Corporation Intelligent GPU scheduling in a virtualization environment
US9692698B2 (en) 2014-06-30 2017-06-27 Nicira, Inc. Methods and systems to offload overlay network packet encapsulation to hardware
US9419897B2 (en) * 2014-06-30 2016-08-16 Nicira, Inc. Methods and systems for providing multi-tenancy support for Single Root I/O Virtualization
US9626324B2 (en) 2014-07-08 2017-04-18 Dell Products L.P. Input/output acceleration in virtualized information handling systems
US9262197B2 (en) * 2014-07-16 2016-02-16 Dell Products L.P. System and method for input/output acceleration device having storage virtual appliance (SVA) using root of PCI-E endpoint
US10241817B2 (en) 2014-11-25 2019-03-26 Red Hat Israel, Ltd. Paravirtualized access for device assignment by bar extension
EP3274818B1 (en) * 2015-03-26 2021-01-27 Intel Corporation Computing methods and apparatuses with graphics and system memory conflict check
US9563494B2 (en) 2015-03-30 2017-02-07 Nxp Usa, Inc. Systems and methods for managing task watchdog status register entries
KR102371916B1 (ko) 2015-07-22 2022-03-07 삼성전자주식회사 가상 머신을 지원하는 스토리지 장치, 그것을 포함하는 스토리지 시스템 및 그것의 동작 방법
US20170075706A1 (en) * 2015-09-16 2017-03-16 Red Hat Israel, Ltd. Using emulated input/output devices in virtual machine migration
US10430221B2 (en) 2015-09-28 2019-10-01 Red Hat Israel, Ltd. Post-copy virtual machine migration with assigned devices
US10769312B2 (en) 2015-10-06 2020-09-08 Carnegie Mellon University Method and apparatus for trusted display on untrusted computing platforms to secure applications
GB2545170B (en) 2015-12-02 2020-01-08 Imagination Tech Ltd GPU virtualisation
US20180330080A1 (en) * 2015-12-22 2018-11-15 Intel Corporation Isolated remotely-virtualized mobile computing environment
US10509729B2 (en) 2016-01-13 2019-12-17 Intel Corporation Address translation for scalable virtualization of input/output devices
US9846610B2 (en) 2016-02-08 2017-12-19 Red Hat Israel, Ltd. Page fault-based fast memory-mapped I/O for virtual machines
US10042720B2 (en) 2016-02-22 2018-08-07 International Business Machines Corporation Live partition mobility with I/O migration
US10042723B2 (en) 2016-02-23 2018-08-07 International Business Machines Corporation Failover of a virtual function exposed by an SR-IOV adapter
US10002018B2 (en) 2016-02-23 2018-06-19 International Business Machines Corporation Migrating single root I/O virtualization adapter configurations in a computing system
US10025584B2 (en) 2016-02-29 2018-07-17 International Business Machines Corporation Firmware management of SR-IOV adapters
US10671419B2 (en) * 2016-02-29 2020-06-02 Red Hat Israel, Ltd. Multiple input-output memory management units with fine grained device scopes for virtual machines
US10467103B1 (en) 2016-03-25 2019-11-05 Nutanix, Inc. Efficient change block training
US10613947B2 (en) 2016-06-09 2020-04-07 Nutanix, Inc. Saving and restoring storage devices using application-consistent snapshots
US9715469B1 (en) 2016-10-21 2017-07-25 International Business Machines Corporation Migrating interrupts from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system
US9760512B1 (en) 2016-10-21 2017-09-12 International Business Machines Corporation Migrating DMA mappings from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system
US9740647B1 (en) 2016-10-21 2017-08-22 International Business Machines Corporation Migrating DMA mappings from a source I/O adapter of a computing system to a destination I/O adapter of the computing system
US9785451B1 (en) 2016-10-21 2017-10-10 International Business Machines Corporation Migrating MMIO from a source I/O adapter of a computing system to a destination I/O adapter of the computing system
US9720862B1 (en) 2016-10-21 2017-08-01 International Business Machines Corporation Migrating interrupts from a source I/O adapter of a computing system to a destination I/O adapter of the computing system
US9720863B1 (en) * 2016-10-21 2017-08-01 International Business Machines Corporation Migrating MMIO from a source I/O adapter of a source computing system to a destination I/O adapter of a destination computing system
US10228981B2 (en) * 2017-05-02 2019-03-12 Intel Corporation High-performance input-output devices supporting scalable virtualization
US10824522B2 (en) 2017-11-27 2020-11-03 Nutanix, Inc. Method, apparatus, and computer program product for generating consistent snapshots without quiescing applications
KR102498319B1 (ko) 2018-06-04 2023-02-08 삼성전자주식회사 반도체 장치
US11513924B2 (en) 2018-08-22 2022-11-29 Intel Corporation Flexible memory mapped input/output (I/O) space definition for a virtual device in a scalable I/O virtualization (S-IOV) architecture
US11550606B2 (en) * 2018-09-13 2023-01-10 Intel Corporation Technologies for deploying virtual machines in a virtual network function infrastructure
US11586454B2 (en) * 2019-12-30 2023-02-21 Red Hat, Inc. Selective memory deduplication for virtual machines
US11962518B2 (en) 2020-06-02 2024-04-16 VMware LLC Hardware acceleration techniques using flow selection
US11636053B2 (en) 2020-09-28 2023-04-25 Vmware, Inc. Emulating a local storage by accessing an external storage through a shared port of a NIC
US11593278B2 (en) 2020-09-28 2023-02-28 Vmware, Inc. Using machine executing on a NIC to access a third party storage not supported by a NIC or host
US11606310B2 (en) 2020-09-28 2023-03-14 Vmware, Inc. Flow processing offload using virtual port identifiers
US11875172B2 (en) 2020-09-28 2024-01-16 VMware LLC Bare metal computer for booting copies of VM images on multiple computing devices using a smart NIC
US20220100432A1 (en) 2020-09-28 2022-03-31 Vmware, Inc. Distributed storage services supported by a nic
US11755512B2 (en) * 2021-08-17 2023-09-12 Red Hat, Inc. Managing inter-processor interrupts in virtualized computer systems
US11995024B2 (en) 2021-12-22 2024-05-28 VMware LLC State sharing between smart NICs
US11863376B2 (en) 2021-12-22 2024-01-02 Vmware, Inc. Smart NIC leader election
US11928062B2 (en) 2022-06-21 2024-03-12 VMware LLC Accelerating data message classification with smart NICs
US11928367B2 (en) 2022-06-21 2024-03-12 VMware LLC Logical memory addressing for network devices
US11899594B2 (en) 2022-06-21 2024-02-13 VMware LLC Maintenance of data message classification cache on smart NIC
CN116841691A (zh) * 2023-06-15 2023-10-03 海光信息技术股份有限公司 加密硬件的配置方法、数据机密计算方法及相关设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0792761B2 (ja) * 1985-07-31 1995-10-09 株式会社日立製作所 仮想計算機システムの入出力制御方法
EP0610677A3 (en) * 1993-02-12 1995-08-02 Ibm Communication device management module operating in two modes.
US6980946B2 (en) * 2001-03-15 2005-12-27 Microsoft Corporation Method for hybrid processing of software instructions of an emulated computer system
US7558723B2 (en) * 2003-12-12 2009-07-07 Microsoft Corporation Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices
US7613898B2 (en) * 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU
US7653803B2 (en) * 2006-01-17 2010-01-26 Globalfoundries Inc. Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU)
CN101211323B (zh) * 2006-12-28 2011-06-22 联想(北京)有限公司 一种硬件中断的处理方法和处理装置
US7945436B2 (en) * 2007-11-06 2011-05-17 Vmware, Inc. Pass-through and emulation in a virtual machine environment
US8151265B2 (en) 2007-12-19 2012-04-03 International Business Machines Corporation Apparatus for and method for real-time optimization of virtual machine input/output performance
JP2009266050A (ja) * 2008-04-28 2009-11-12 Hitachi Ltd 情報処理装置
US20100138829A1 (en) * 2008-12-01 2010-06-03 Vincent Hanquez Systems and Methods for Optimizing Configuration of a Virtual Machine Running At Least One Process
US8549516B2 (en) * 2008-12-23 2013-10-01 Citrix Systems, Inc. Systems and methods for controlling, by a hypervisor, access to physical resources
CN101620547B (zh) * 2009-07-03 2012-05-30 中国人民解放军国防科学技术大学 X86计算机虚拟化的物理中断处理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160096279A (ko) * 2015-02-04 2016-08-16 삼성전자주식회사 가상화 기능을 지원하는 스토리지 장치 및 사용자 장치

Also Published As

Publication number Publication date
CN103282881B (zh) 2016-08-31
US20120167082A1 (en) 2012-06-28
CN103282881A (zh) 2013-09-04
WO2012087984A2 (en) 2012-06-28
JP5746770B2 (ja) 2015-07-08
WO2012087984A3 (en) 2012-11-01
TW201246072A (en) 2012-11-16
TWI599955B (zh) 2017-09-21
JP2013546111A (ja) 2013-12-26
KR101569731B1 (ko) 2015-11-17

Similar Documents

Publication Publication Date Title
KR101569731B1 (ko) 가상화를 통한 스마트 장치의 직접적인 공유
US10846145B2 (en) Enabling live migration of virtual machines with passthrough PCI devices
US20190114194A1 (en) Flexible memory mapped input/output (i/o) space definition for a virtual device in a scalable i/o virtualization (s-iov) architecture
US10185514B2 (en) Virtual machine trigger
US10310879B2 (en) Paravirtualized virtual GPU
AU2009357325B2 (en) Method and apparatus for handling an I/O operation in a virtualization environment
WO2017024783A1 (zh) 一种虚拟化方法、装置和系统
CN109643277B (zh) 用于中介传递和共享存储器页合并的装置和方法
US20130031293A1 (en) System and method for free page hinting
US10055136B2 (en) Maintaining guest input/output tables in swappable memory
US11194735B2 (en) Technologies for flexible virtual function queue assignment
US10241817B2 (en) Paravirtualized access for device assignment by bar extension
US10162657B2 (en) Device and method for address translation setting in nested virtualization environment
US20130031292A1 (en) System and method for managing memory pages based on free page hints
KR20080063125A (ko) 분할 시스템에서 메모리를 액세스하는 디바이스들에 대한게스트 대 호스트 어드레스 변환
US10620963B2 (en) Providing fallback drivers for IO devices in a computing system
US9841985B2 (en) Storage block deallocation in virtual environments
CN107250980B (zh) 具有图形和系统存储器冲突检查的计算方法和设备
US9471226B2 (en) Reverse copy on write for better cache utilization
US9851992B2 (en) Paravirtulized capability for device assignment
US10114759B2 (en) Trapless shadow page tables
US11900142B2 (en) Improving memory access handling for nested virtual machines
US20230185593A1 (en) Virtual device translation for nested virtual machines
Hsu et al. G-KVM: a full GPU virtualization on KVM
US20200201758A1 (en) Virtualized input/output device local memory management

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee