KR20150048173A - 게스트 가상 머신 내 가상 입/출력 메모리 관리 유닛 - Google Patents

게스트 가상 머신 내 가상 입/출력 메모리 관리 유닛 Download PDF

Info

Publication number
KR20150048173A
KR20150048173A KR1020157007195A KR20157007195A KR20150048173A KR 20150048173 A KR20150048173 A KR 20150048173A KR 1020157007195 A KR1020157007195 A KR 1020157007195A KR 20157007195 A KR20157007195 A KR 20157007195A KR 20150048173 A KR20150048173 A KR 20150048173A
Authority
KR
South Korea
Prior art keywords
guest
virtual
iommu
page table
address
Prior art date
Application number
KR1020157007195A
Other languages
English (en)
Other versions
KR101950000B1 (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 KR20150048173A publication Critical patent/KR20150048173A/ko
Application granted granted Critical
Publication of KR101950000B1 publication Critical patent/KR101950000B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

가상 입/출력 메모리 관리 유닛(IOMMU)이 입/출력(I/O) 장치와 연관된 메모리 요청 주변에 방화벽을 제공하도록 구성된다. 상기 가상 IOMMU는 게스트 페이지 테이블, 호스트 페이지 테이블 및 범용 제어 레지스터(즉, GCR3) 테이블을 포함하는 데이터 구조를 이용한다. 상기 게스트 페이지 테이블은 가상 IOMMU의 속도 요건을 지원하기 위한 하드웨어로 구현된다. 상기 GCR3 테이블은 장치 테이블에 저장된 가상 DeviceID 파라미터를 이용해 인덱싱된다.

Description

게스트 가상 머신 내 가상 입/출력 메모리 관리 유닛{VIRTUAL INPUT/OUTPUT MEMORY MANAGEMENT UNIT WIHTIN A GUEST VIRTUAL MACHINE}
개시된 실시예는 일반적으로 컴퓨터 시스템과 관련되며, 특히 입/출력(I/O) 장치를 위한 메모리 관리 유닛과 관련된다.
개인 컴퓨터(PC), 워크스테이션, 서버, 다양한 개인 디지털 보조기(PDA) 장치 등을 포함해 다양한 유형의 컴퓨터 시스템이 오늘날 사회에서 유비쿼토스(ubiquitous)하다. 이들 컴퓨터 시스템의 전부는 아니더라도 대부분이 메모리로의 프로세서 액세스를 위한 메모리 관리 기능을 구현했다. 일반적으로, 메모리 관리 기능은 다양한 메모리 보호(가령, 읽기 전용, 읽기/쓰기, 특권 레벨 요건 등)와 함께 주소를 각각의 프로세스에 의해 사용되는 가상 주소 공간에서 실제 시스템 메모리에 존재하는 물리 주소 공간으로 변환하는 것을 포함했다. 메모리 관리 기능은 다양한 용도, 가령, 다른 프로세스에 의한 권한 없는 액세스로부터 프로세스 각각에 의해 사용되는 메모리를 보호하는 것, 물리 메모리 시스템이 충분히 크지 않은 경우라도 큰 가상 공간이 프로세스에 의해 사용되게 하는 것, 프로세스의 참여 없이 가상 주소를 가용한 물리 메모리로 재배치(relocation)하는 것 등을 포함한다.
빈번하게 변환되는 프로세서 주소처럼, 컴퓨터 시스템 내 입/출력(I/O) 장치에 의해 사용되는 주소도 변환될 수 있다. 즉, I/O 장치는 메모리를 액세스하기 위해 물리 주소 대신 가상 주소를 사용할 수 있다. 오늘날 시스템에서 장치가 물리 주소 대신 가상 주소를 사용하는 것이 시스템의 전체 보안을 개선하기 때문에 더 선호된다. 로그 장치(rogue device)(또는 악성 소프트웨어 에이전트에 의해 프로그램된 장치)에 의한 물리 주소의 사용이 지연된 메모리 액세스를 야기할 것이다.
단일 운영 체제(OS)에서, 컴퓨터 시스템, 가령, 대부분의 PC에서, OS는 다른 프로세스(애플리케이션 및 OS 서비스)에 의한 I/O 장치로의 액세스를 제어한다. 따라서 상기 OS는 어느 프로세스가 특정 장치로 액세스할 수 있는지를 제어할 수 있고, 장치에 의해 액세스되는 주소를 적어도 어느 정도 제어할 수 있다. 가상 머신 시스템은 가상 머신 모니터 상에서 실행되는 복수의 게스트 OS를 가질 수 있기 때문에 더 복합적이다. 가상화된 시스템에서, 많은 애플리케이션 및 I/O 장치가 가상 주소의 사용을 통해 물리 메모리를 액세스한다. I/O 메모리 유닛은 I/O 장치 및 시스템 메모리로 연결되며, 여기서 IOMMU가 장치 메모리 내 가상 주소를 물리 시스템 메모리를 액세스하기 위한 물리 주소로 변환하도록 구성된다.
오늘날의 컴퓨팅 환경은 가상 머신(VM) 환경을 포함하며, 여기서 복수의 VM이 단일 프로세서 시스템 상에서 개별적인 논리 동작 개체로서 실행될 수 있다. 일반적으로, 이들 논리적으로 개별적인 VM은 프로세서 시스템의 공통 자원, 가령, 하드웨어 장치 및 장치 드라이버를 공유한다. 이들 복수의 VM의 병립(co-existence)을 관리하고 공통 자원과의 정보 교환 및 이들 VM들 간의 정보 교환을 가능하게 하기 위해, VM 환경은 종종 가상 머신 모니터(VMM)(virtual machine monitor) 또는 하이퍼바이저(hypervisor)를 이용한다.
보안 및 안정성이 대부분의 컴퓨터 시스템에서 특히 VM 환경에서 중요한 문제이다. 전통적인 컴퓨터 시스템에서, 주변 장치들 및 이들의 연관된 장치 드라이버가 메모리를 자유롭고 비제한적으로 액세스한다. 이러한 비제한적 액세스는 오염된 또는 오작동하는 장치 또는 장치 드라이버가 메모리 내 임의의 위치가 해당 주변기기에 의한 사용 외에 설정되었는지와 무관하게 상기 메모리 위치에 쓰기할 수 있다. 운영 체제에 의한 사용 외에 설정된 메모리 위치가 오작동 장치(malfunctioning device)에 의해 덮어 써지는 경우, 거의 예상한 대로 시스템 충돌이 초래될 것이다. 컴퓨터 시스템 사용자가 안정성을 요구하고, 메모리 오염으로 인한 시스템 충돌이 최소화될 것이다.
부적절한 메모리 액세스를 막기 위해 각각의 주변 장치 및 이의 연관된 드라이버에 할당된 메모리 주변에 구성될 방화벽이 요구된다. VM 환경 내 부적절한 메모리 액세스를 막기 위해 VM 내 가상 IOMMU가 더 요구된다. 최종 입/출력 응답이 적절하게 신속하도록 이러한 방화벽이 구현될 필요가 있다.
일부 실시예에서, 게스트 VM 내 가상화된 IOMMU이 제공된다. 가상 IOMMU는 게스트 페이지 테이블, 호스트 페이지 테이블 및 범용 제어 레지스터(가령, GCR3) 테이블을 포함하는 데이터 구조를 사용한다. 게스트 페이지 테이블은 가상 IOMMU의 속도 요건을 지원하기 위한 하드웨어로 구현된다. 상기 GCR3 테이블은 장치 테이블에 저장된 가상 DeviceID 파라미터를 이용해 인덱싱된다. 게스트 페이지 테이블과 호스트 페이지 테이블의 포맷은 동일하며, 이때 장치 테이블의 제어 비트가 게스트 페이지 테이블의 서로 다른 용법을 구별하기 위해 사용된다.
개시된 실시예의 추가 실시예, 특징, 및 이점뿐 아니라 다양한 실시예의 구조 및 동작이 첨부된 도면을 참조하여 이하에서 기재된다.
본 명세서에 포함되며 본 명세서의 일부를 형성하는 첨부된 도면이 개시된 실시예를 도시하며, 기재와 함께 개시된 실시예의 원리를 설명하고 해당 분야(들)의 숙련된 기술자가 개시된 실시예를 만들고 사용할 수 있게 한다.
도 1은 일부 실시예에 따라 컴퓨터 시스템을 도시한다.
도 2는 일부 실시예에 따라 IOMMU 아키텍처를 도시한다.
도 3은 일부 실시예에 따라 가상 IOMMU를 이용해 입/출력(I/O) 장치에 의한 메모리 액세스를 위한 방법을 도시하는 흐름도를 제공한다.
개시된 실시예의 특징 및 이점이 이하에 제공된 상세한 설명으로부터 도면을 참조하여 명확해질 것이며, 도면에서 유사한 도면부호가 전체에서 대응하는 요소를 식별한다. 도면에서, 일반적으로 유사한 도면 부호가 동일한, 기능적으로 유사한, 및/또는 구조적으로 유사한 요소를 가리킨다. 대응한 도면 부호에서 요소가 처음 등장하는 도면이 최좌측 숫자(들)로 지시된다.
배경지식으로서, 용어, 가령, 가상화(virtualization) 및 가상(virtual)이 컴퓨팅 분야에서의 이들의 의미에 따라 사용된다. 구체적으로, 가상화는 기저 자원의 물리적 특성을 숨겨 시스템, 애플리케이션 및 최종 사용자가 이들 자원과 대화할 수 있도록 하는 방식을 단순화하기 위한 기법을 일컫는다. 예를 들어, 가상화에 의해 단일 물리 자원(가령, 메모리)이 복수의 논리 자원으로서 나타날 수 있다. 따라서 가상화 기법에 의해 단일 컴퓨터가 복수의 가상 머신을 실행시킬 수 있고, 각각의 가상 머신은 자신에게 이용 가능한 모든 자원을 가진 것으로 나타나며, 타 가상 머신과 임의의 명백한 자원 오버랩이 없다.
도 1을 참조하면, 일부 실시예에 따라 컴퓨터 시스템(10)의 단순화된 하이-레벨 도시를 나타내는 블록도가 나타난다. 도 1에서 도시된 바와 같이, 시스템(10)은 하나 이상의 프로세서(12), 하나 이상의 변환 색인 버퍼(translation lookaside buffer)(TLB)(16)를 포함하는 메모리 관리 유닛(14), 메모리 제어기(MC)(18), 메모리(20), 하나 이상의 I/O TLB(IOTLB)(24)를 포함하는 하나 이상의 I/O 장치(22) 및 테이블 워커(table walker)(28)를 포함할 수 있는 I/O MMU(IOMMU)(26), 캐시(30), 제어 레지스터(32), 및 제어 로직(34)을 포함한다. 프로세서(12)는 메모리 제어기(18)로 연결된 MMU(14)로 연결된다. I/O 장치(22)가 메모리 제어기(18)로 연결되는 IOMMU(26)로 연결된다. IOMMU(26) 내에서, 테이블 워커(28), 캐시(30), 제어 레지스터(32), 및 제어 유닛(34)이 다함께 연결되어 있다.
이하에서 기재되는 바와 같이, IOMMU(26)는 시스템(10)의 가상화를 단순화시키기 위한 다양한 특징을 포함할 수 있다. 이하의 기재는 가상 머신을 관리(기저 하드웨어 상에서의 가상 머신의 실행을 스케줄링)하고, 다양한 시스템 자원을 액세스하는 등의 가상 머신 모니터(VMM)를 일컬을 것이다. 또한 VMM은 때때로 하이퍼바이저(hypervisor)라고 일컬어진다. 도시된 실시예에서, 프로세서(들)(12)는 가상화된 환경에서 소프트웨어를 실행시킨다. 따라서 3개의 가상 머신(100A, 100B, 및 100C)(가령, VM 1-3)과 하나의 VMM(106)이 나타난다. 복수의 가상 머신(100)은 특정 실시예에서 다양할 수 있으며 가상 머신이 사용자에 의해 시작되고 중단될 때 사용 중에 동적으로 변화할 수 있다. 도시된 실시예에서, 가상 머신(100A)은 하나 이상의 게스트 애플리케이션(guest application)(102) 및 게스트 운영 체제(guest operating system)(OS)(104)를 포함한다. 상기 OS(104)는 이를 위해 시스템(10)의 물리 하드웨어가 아닌 VMM(106)에 의해 생성된 가상 머신(100)을 제어하기 때문에 상기 OS(104)는 "게스트(guest)" OS라고 지칭된다. 마찬가지로, VM(100B) 및 VM(100C) 각각은 또한 하나 이상의 게스트 애플리케이션(102) 및 게스트 OS(104)를 포함할 수 있다.
일반적으로, 가상 머신(100)에서 애플리케이션(102)은 게스트 가상 주소 공간을 사용하고 따라서 게스트 가상 주소(guest virtual address)(GVA)를 사용한다. 각각의 가상 머신(100)에서 상기 게스트 OS(104)는 가상 머신(100) 내 게스트 "물리" 주소(GPA)로의 GVA의 매핑을 관리할 수 있다. 게스트 OS(104)가 VMM 없이 시스템(10) 하드웨어 상에서 직접 실행됐었다면, 게스트 OS(104)에 의해 생성되는 물리 주소가 실제로 시스템(10) 내 메모리 위치의 시스템 물리 주소(SPA)가 됐을 것이다. 그러나 가상 머신 환경에서, VMM(106)은 GPA에서 SPA로의 매핑을 관리할 수 있다. 따라서 프로세서(12)가 메모리 요청을 수행할 때, 게스트 OS(104)는 GVA에서 (VMM(106)에 의해 SPA로 추가로 매핑될 수 있는) GPA로의 매핑을 관리할 수 있다.
도 1에 도시된 바와 같이, I/O 장치(22)에서 메모리(20)로의 경로가 프로세서(12)에서 메모리(20)로의 경로와 적어도 부분적으로 분리된다. 구체적으로, I/O 장치(22)에서 메모리(20)로의 경로가 MMU(14)를 통과하지 않으며 대신 IOMMU(26)를 통과한다. 따라서 MMU(14)는 I/O 장치(22)로부터 소싱되는 메모리 요청에 대한 메모리 관리를 제공하지 않을 수 있다. 일반적으로 메모리 관리는 하나의 유형의 가상 주소(즉, 소프트웨어에 의해 사용될 수 있는 주소)에서 물리 주소(즉, 메모리 제어기에 의해 사용될 수 있는 주소)로의 주소 변환 및 메모리 보호를 포함할 수 있다. 메모리 보호는 그 밖의 다른 다양한 속성, 가령, 특권 레벨 요건, 캐시 능력 및 캐시 제어(가령, 연속 쓰기(writethrough) 또는 모아 쓰기(writeback)), 일관성(coherency) 등과 함께, 일정 입도(granularity)(가령, 페이지) 수준으로 메모리로의 읽기 및/또는 쓰기 액세스를 제어할 수 있다. 메모리 보호의 임의의 세트가 다양한 실시예에서 구현될 수 있다. 일부 실시예에서, IOMMU(26)에 의해 구현되는 메모리 보호는 적어도 일부 양태에서 MMU(14)에 의해 구현되는 메모리 보호와 상이할 수 있다. 하나의 실시예에서, IOMMU(26)에 의해 구현되는 메모리 보호는, IOMMU(26) 및 MMU(14)에 의해 사용되는 변환 데이터를 저장하는 변환 테이블이 공유될 수 있도록 형성될 수 있다(그러나 도 1에서 설명의 편의를 위해 별개로 도시됨). 이하에서 추가로 기재될 바와 같이, 변환 테이블 정보를 공유하는 일부 실시예에서, 특정 페이지가 승격됐을 때, 가령, 특권이 변경됐을 때, 현재는 신뢰할만하지 않은 변환 페이지 테이블을 업데이트하기 위해 테이블 리-워크(table re-walk)가 필요할 수 있다. 또 다른 실시예는 필요에 따라 IOMMU(26)와 MMU(14) 간에 변환 테이블을 공유하지 않을 수 있다.
일반적으로, I/O 장치(22)는 메모리(20) 내 메모리 위치를 액세스하기 위해 메모리 요청, 가령, 메모리 읽기 및 쓰기 요청과 일부 경우 변환 요청을 발행하도록 구성될 수 있다. 메모리 요청은 예를 들어 직접 메모리 액세스(DMA) 읽기 또는 쓰기 동작의 일부일 수 있다. DMA 동작은 프로세서(12)에 의해 실행되는 소프트웨어에 의해 개시되어, I/O 장치(22)를 직접 또는 간접적으로 DMA 동작을 수행하도록 프로그래밍할 수 있다. 프로세서 상에서 실행되는 소프트웨어가 실행 중인 주소 공간에 따라서, 메모리(20)를 액세스하기 위해 I/O 장치(22)에 해당 주소 공간에 대응하는 주소가 제공될 수 있다. 예를 들어, 프로세서(12) 상에서 실행되는 게스트 애플리케이션(가령, 앱(App)(102))이 I/O 장치(22)에 GVA를 제공할 수 있고, 프로세서(12) 상에서 실행 중인 게스트 OS(가령, OS(104))는 GPA를 I/O 장치(22)로 제공할 수 있다. 어느 경우라도, I/O 장치(22)가 메모리 액세스를 요청할 때, 게스트 주소가 IOMMU(26)에 의해 메모리를 액세스하기 위한 대응하는 SPA로 변환될 수 있고, 시스템 물리 주소는 액세스를 위해 메모리 제어기(18)로 제공될 수 있다. 즉, IOMMU(26)는 I/O 장치(22)에 의해 소싱되는 메모리 요청을 수정하여 요청 내 수신된 주소를 SPA로 변경(즉, 변환)할 수 있고, 메모리 요청은 메모리 제어기(18)로 전달되어 메모리(20)를 액세스할 수 있다.
다양한 실시예에서, IOMMU(26)는 자신이 I/O 장치로부터 수신한 주소의 유형에 따라 1-레벨 변환, 2-레벨 변환, 또는 변환 없음을 제공할 수 있다. 더 구체적으로, IOMMU(26)는 1-레벨 네스티드 변환 또는 2-레벨 게스트 변환을 수행할 수 있다. 즉, IOMMU(26)는 GPA에서 SPA로의 변환(1-레벨)과 GVA에서 SPA로의 변환(2-레벨) 모두를 제공할 수 있다. 따라서 앞서 언급된 바와 같이, 게스트 애플리케이션(102)은 메모리 액세스를 요청할 때 GVA 주소를 직접 I/O 장치(22)로 제공하여, 기존의 VMM 인터셉션(interception) 및 변환을 불필요하게 만든다. 이 기능에 의해 어드밴스드 연산 아키텍처, 가령, 연산 오프로드(compute offload), 사용자-레벨 I/O 및 가속 I/O 장치가 가상화된 시스템에서 더 매끄럽게 사용될 수 있다. 1-레벨 변환, 2-레벨 변환, 또는 변환 없음이 기재되더라도, 또 다른 실시예에서, 추가 레벨의 주소 공간이 사용될 수 있다. 이러한 실시예에서, IOMMU(26)에 의해 추가 레벨의 변환(즉, 멀티레벨 변환)이 수행되어 추가 주소 공간을 수용할 수 있다.
이하에서 더 상세히 기재되는 바와 같이, IOMMU(26)는 주어진 요청에서 자신이 수신하고 있는 주소의 유형이 무엇인지를 인식하는 방법을 가진다. 따라서 I/O 장치(22)가 표준 주변기기 버스, 가령, PCI 익스프레스(PCIe) 인터커넥트를 통해 IOMMU(26)로 연결되는 실시예에서, 트랜잭션 계층 프로토콜(transaction layer protocol)(TLP) 프리픽스를 이용해 프로세스 주소 공간 식별자(process address space identifier)(PASID)가 IOMMU(26)로 전송될 수 있다.
IOMMU(26)는 많은 데이터 구조, 가령, 메모리(20)에 저장된 I/O 변환 테이블(36)의 하나 이상의 세트를 이용하여, I/O 장치(22)로부터의 메모리 및 변환 요청의 주소를 변환할 수 있다. 일반적으로 변환 테이블(36)은 하나의 유형에서 또 다른 유형으로 주소를 변환하기 위해 사용될 수 있는 변환 데이터의 테이블일 수 있다. 변환 테이블(36)은 변환 데이터를 임의의 방식으로 저장할 수 있다. 예를 들어, 하나의 실시예에서, I/O 변환 테이블(36)은 x86 및 AMD64™ 명령 세트 아키텍처에서 정의된 것과 유사한 페이지 테이블을 포함할 수 있다. 변환 레벨에 따라서, 게스트 가상 주소 비트 또는 게스트 물리 주소의 다양한 서브세트가 테이블(36)의 레벨을 인덱싱하도록 사용될 수 있고, 각각의 레벨은 변환의 끝부분이거나(즉, 변환에 대한 실제 페이지 수를 저장) 또 다른 테이블을 가리킬 수 있다(주소 비트의 또 다른 세트에 의해 인덱싱됨). 페이지는 변환의 단위일 수 있다(즉, 가상 페이지 내 각각의 주소가 동일한 물리 페이지로 변환됨). 페이지는 가변 크기, 가령, 4킬로바이트에서 최대 메가바이트 또는 심지어 기가바이트까지의 크기를 가질 수 있다.
덧붙여, I/O 변환 테이블(36)은 (가령, 장치 식별자에 의해) I/O 장치를 페이지 테이블의 세트에 매핑하는 장치 테이블(가령, 도 3에 나타남)을 포함할 수 있다. 상기 장치 식별자(ID)는 다양한 방식으로 정의될 수 있으며 장치가 부착된 주변 인터커넥트에 따라 달라질 수 있다. 예를 들어, 주변 구성요소 인터커넥트(Peripheral Component Interconnect)(PCI) 장치가 버스 번호, 장치 번호 및 기능 번호(BDF)로부터 장치 ID를 형성할 수 있다. HyperTransport™ (HT) 장치는 버스 번호 및 유닛 ID를 이용하여 장치 ID를 형성할 수 있다. 이하에서 더 기재될 바와 같이, 장치 테이블은 장치 ID에 의해 인덱싱되는 복수의 항목을 포함할 수 있으며, 각각의 항목은 대응하는 장치 ID를 갖는 장치에 의해 사용되는 페이지 테이블의 세트로의 포인터를 포함할 수 있다. 덧붙여, I/O 장치(22)가 프로세스에 직접 할당되거나 사용자 프로세스와 동일한 주소 공간에서 연산을 실행할 수 있는 상황에서, 프로세스 주소 공간이 식별되고 IOMMU(26)로 제공되어 메모리 고립 보호(memory isolation protection)를 시행할 수 있다. 일부 실시예에서, 장치 테이블은 장치의 인터럽트를 리매핑하기 위해 인터럽트 리매핑 테이블(interrupt remapping table)로의 포인터(가령, 도 3에 도시된 바와 같은 것)를 더 포함할 수 있다. 따라서 일반적으로 GVA 또는 GPA에서 SPA로의 변환이 하나 이상의 변환 테이블(36) 내 하나 이상의 항목에 저장될 수 있고, 항목들 중 일부가 그 밖의 다른 변환과 공유될 수 있다. 항목에서 항목으로 테이블을 순회 즉 "워킹"이 가상 주소에 대한 변환을 식별하는 것의 일부일 수 있다. 하나의 실시예에서, 변환 테이블(36)은 앞서 언급된 인터럽트 리매핑 테이블을 포함할 수 있다.
구체적으로, 도 1에 도시된 IOMMU(26)는 테이블 워커(28)를 포함하여 I/O 변환 테이블(36)에서 특정 메모리 요청에 대한 변환을 검색할 수 있다. 테이블 워커(28)는 변환 테이블(36)로부터의 변환 데이터를 읽기 위한 메모리 요청, 가령, 읽기 메모리 요청을 생성할 수 있다. 상기 변환 테이블 읽기는 도 1에서 점선 화살표(38 및 40)에 의해 도시된다.
더 신속한 변환을 촉진하기 위해, IOMMU(26)는 일부 변환 데이터를 캐싱할 수 있다. 예를 들어, 캐시(30)는 이전 변환의 결과를 캐싱하는 TLB(또는 IOTLB)와 유사한 캐시의 형태를 가질 수 있어서 게스트 가상 및 게스트 물리 페이지 번호를 시스템 물리 페이지 번호 및 대응하는 변환 데이터로 매핑한다. 특정 메모리 요청에 대한 변환이 캐시(30)에서 발견되지 않는 경우, 테이블 워커(28)가 호출될 수 있다. 다양한 실시예에서, 테이블 워커(28)는 하드웨어로 구현되거나 (가령, IOMMU(26) 내 리드-온리 메모리(ROM) 내에서) 마이크로제어기 또는 그 밖의 다른 프로세서 및 대응하는 실행 가능한 코드로 구현될 수 있다. 덧붙여, 그 밖의 다른 캐시가 캐시(30)의 일부분으로서 캐시 페이지 테이블 또는 이의 일부분, 및/또는 장치 테이블 또는 이의 일부분에 포함될 수 있다. 따라서, IOMMU(26)는 하나 이상의 메모리를 포함하여, 메모리(20)에 저장된 변환 데이터로부터 읽어진 또는 얻어진 변환 데이터를 저장할 수 있다.
도 2는 일부 실시예에 따르는 IOMMU 아키텍처의 추가 상세사항을 도시한다. 예를 들어, 캐시(30)는 I/O 페이지 테이블(252), 장치 테이블(228), 및 인터럽트 리매핑 테이블(IRT)(226)의 캐시 버전을 포함할 수 있다. 또한 캐시(30)는 GCR3 테이블(242)의 캐시 버전을 포함할 수 있다. 제어 레지스터(32)가 장치 테이블 기준 레지스터(device table base register)(DTBR)(204), 시스템 관리 인터럽트(SMI) 필터 레지스터(206), 하드웨어 에러 레지스터(208), 이벤트 카운터 레지스터(212), 명령어 버퍼 기준 레지스터(command buffers base register)(CBBR)(214), 이벤트 로그 기준 레지스터(ELBR)(216), 및 페이지 요청 로그 기준 레지스터(page request log base register)(PRLBR)(218)를 포함할 수 있다. 캐시(30)가 IOMMU(26) 내부에 나타나더라도, 실시예의 범위가 이러한 위치로 한정되지 않는다. 덧붙여, 실시예는 캐시(30)가 IOMMU(26) 외부에 위치하는 것을 포함한다. I/O 장치의 연결 시점에서, IOMMU(210)가 검출된 경우, 소프트웨어는 필수 제어 및 데이터 구조를 확립하는 프로세스를 개시한다. 예를 들어, IOMMU(210)가 셋업될 때, IOMMU(210)는 게스트 가상 어드밴스드 프로그래머블 인터럽트 제어기(advanced programmable interrupt controller)(APIC) 로그(202), 장치 테이블 기준 레지스터(DTBR)(204), 시스템 관리 인터럽트(SMI) 필터 레지스터(206), 하드웨어 에러 레지스터(208), 이벤트 카운터 레지스터(212), 명령어 버퍼 기준 레지스터(CBBR)(214), 이벤트 로그 기준 레지스터(ELBR)(216), 및 페이지 요청 로그 기준 레지스터(PRLBR)(218)를 포함할 수 있다. 덧붙여, 초기 셋업 동안, IOMMU(210)는 적절한 게스트 페이지 테이블의 기준 포인터 레지스터 테이블(base pointer register table)을 선택하기 위한 연산자를 포함할 수 있다. 현재 작업에 대해 페이지 디렉토리와 페이지 테이블 모두를 찾음으로써 가상 주소로부터 물리 주소를 변환하기 위해, 상기 기준 포인터 레지스터 테이블은, 예를 들어, x86 마이크로프로세서 프로세스에 의해 사용되는 제어 레지스터 3(CR3)(242)일 수 있다.
하나의 예시에서, 게스트 CR3(GCR3) 변화가 변환의 새 세트를 확립할 수 있고 따라서 프로세서(12)는 이전 맥락과 연관된 TLB 항목을 자동으로 무효화할 수 있다. 또한 IOMMU(210)는 페이지 테이블 워크를 수행할 필요 없이 다음 변환을 수행하기 위해 사용되는 주소 변환을 캐싱하기 위해 하나 이상의 TLB(도시되지 않음)와 연관될 수 있다. 장치 테이블로부터의 주소가 IOMMU(210)로 전달될 수 있다.
데이터 구조가 셋업되면, IOMMU(210)는 DMA 연산 액세스, 인터럽트 리매핑, 주소 변환 등을 제어하기 시작할 수 있다.
IOMMU(210)는 메모리 관리 I/O(MMIO)를 이용하여 2-레벨 변환이 지원됨을 지시할 수 있다. 2-레벨 변환이 지원되는 것으로 결정될 때, 상기 2-레벨 변환이 적절한 장치 테이블 항목(DTE)을 프로그래밍 함으로써 활성화된다. 네스티드 페이징(nested paging)에서, DTE와 연관된 트랜잭션이 메모리(220) 내 I/O 페이지 테이블(252)에 대한 데이터 구조의 루트(root)를 가리키는(point to) 페이지 테이블 루트 포인터를 포함할 수 있다.
일부 실시예에서, IOMMU(210)는 게스트 가상 어드밴스트 프로그래머블 인터럽트 제어기(APIC) 구조체(224)를 포함한다. 그 밖의 다른 실시예는 가상화된 게스트 APIC를 지원하도록 설계된 아키텍처 특징을 갖는 IOMMU를 포함한다.
시스템(200)은 추가 메모리 블록(도시되지 않음)을 포함하는 메모리(220)를 더 포함할 수 있다. 메모리 제어기(도시되지 않음)는 개별 칩 상에 잇거나 프로세서 실리콘 내에 집적될 수 있다. DMA 및 프로세서 활동이 메모리 제어기와 통신하도록 메모리(220)가 구성된다.
하나의 예시에서, 메모리(220)는 I/O 페이지 테이블(252), 장치 테이블(228), 인터럽트 리매핑 테이블(IRT)(226), 명령어 버퍼(232), 이벤트 로그(234), 및 호스트 변환 모듈, 가령, 하이퍼바이저를 포함한다. I/O 페이지 테이블(252), 장치 테이블(228), 인터럽트 리매핑 테이블(IRT)(226)의 캐싱된 버전이 또한 IOMMU(210)에 포함된다. GCR3 테이블(242)은 또한 IOMMU(210)에 캐싱될 수 있고, 일부 실시예에서 가상 APIC(224)도 캐싱될 수 있다. 또한 메모리(220)는 동시에 실행되는 하나 이상의 게스트 OS, 가령, 게스트 OS 1 및 게스트 OS 2를 포함할 수 있다. 하이퍼바이저 및 게스트 OS 1 및 2는 시스템을 가상화하도록 동작하는 소프트웨어 구조체이다.
IOMMU(210), 하드웨어 장치가 전통적인 방식에서는 하이퍼바이저가 했을 작업을 하도록 허용되기 때문에, 게스트 OS는 시스템(200) 내 I/O 장치로 더 직접적으로 연결된다.
덧붙여, DTBR(204)이 장치 테이블(228)의 시작 인덱스를 가리키도록(point to) IOMMU(210) 및 메모리(220)는 초기화될 수 있다. 덧붙여, CBBR(214)은 명령어 버퍼(232)의 시작 인덱스와 연관되어, 상기 IOMMU(210)가 상기 명령어 버퍼(232) 내에 저장된 명령어를 읽고 소모할 수 있다. ELBR(216)은 이벤트 로그(234)의 시작 인덱스를 가리킨다. PRLBR(218)은 주변 페이지 서비스 요청(PPSR) 테이블(236)의 시작 인덱스를 가리킨다.
IOMMU(210)는 IOMMU(210)와 시스템 프로세서(들), 가령, CPU 간에 명령어 및 상태 정보를 교환하기 위한 메모리 기반 큐를 사용할 수 있다. 상기 명령어 큐는 도 2에서 명령어 버퍼(232)에 의해 나타내어진다. 명령어 버퍼(232) 및 이벤트 로그(234)는 각각의 액티브 IOMMU(210)에 의해 구현된다. 또한 각각의 IOMMU(210)는 I/O 페이지 서비스 요청 큐를 구현할 수 있다.
활성화될 때, 하나의 예시에서, IOMMU(210)는 (예를 들어, HyperTransport™ 링크 또는 PCI-기반 통신을 이용해 통신될 수 있는) 다운스트림 장치로부터 도달하는 요청을 가로채고, 요청에 대한 권한 체크(permission check) 및 주소 변환을 수행하며, HyperTransport™ 링크를 통해 변환된 버전을 업스트림으로 메모리(220) 공간으로 전송한다. 그 밖의 다른 요청이 변경되지 않은 채 통과될 수 있다.
IOMMU(210)는 메모리(220) 내 테이블로부터 읽혀서 이의 권한 체크, 인터럽트 리매핑, 및 주소 변환을 수행할 수 있다. 교착상태 없는 동작을 보장하기 위해, IOMMU(210)에 의한 장치 테이블(228), I/O 페이지 테이블(252), 및 인터럽트 리매핑 테이블(226)에 대한 메모리 액세스가 등시성 가상 채널(isochronous virtual channel)을 이용할 수 있고, 메모리(220) 내 주소를 참조만 할 수 있다. IOMMU(210)에 의해 명령어 버퍼(232), 이벤트 로그 항목(234) 및 선택적 요청 큐 항목(도시되지 않음)으로 발생한 그 밖의 다른 메모리 읽기가 정규 가상 채널을 이용할 수 있다.
IOMMU(210)가 자신이 핸들링하는 모든 장치 요청에 대해 전체 테이블 룩업(full table lookup) 프로세스를 수행하는 경우 시스템 성능이 실질적으로 약화될 수 있다. 따라서 IOMMU(210)의 구현이 IOMMU(210)의 메모리내 테이블의 내용에 대해 내부 캐시를 유지할 것이다. 동작 중에, IOMMU(210)는 IOMMU(210)에 의해 캐싱된 테이블 항목을 업데이트할 때 적절한 무효화 명령어를 전송하기 위해 시스템 소프트웨어를 사용할 수 있다.
하나의 예시에서, IOMMU(210)는 정규 가상 채널을 이용할 수 있음으로써 메모리(220)에 이벤트 로그(234)를 쓴다. IOMMU(210)는 선택사항으로서 메모리(220) 내 주변 페이지 서비스 요청 큐(236)에 쓸 수 있다. 메모리 내 주변 페이지 서비스 요청 큐(236)로 쓰기도 정규 가상 채널을 이용할 수 있다.
하나의 예시에서, IOMMU(210)는 시스템 프로세서 CPU가 장애 있는 메커니즘을 이용하는 동안 주변 페이지 요청을 서비스하기 위해 메모리 내 요청 큐를 제공한다. I/O 장치들 중 임의의 것이 IOMMU(210)로부터 변환을 요청할 수 있고, 상기 IOMMU(210)는 성공적인 변환 또는 페이지 장애(page fault)로 응답할 수 있다.
호스트 OS가 또한 I/O 장치에 의해 개시된 액세스에 대한 변환을 수행할 수 있다. IOMMU(210)가 I/O 장치에 의해 액세스된 메모리 주소를 변환하는 동안, 호스트 OS는 원하는 변환을 특정하는 I/O 페이지 테이블을 구성함으로써 자신의 고유 페이지 테이블을 셋업할 수 있다. 호스트 OS는 새로 구성된 I/O 페이지 테이블을 가리키는 장치 테이블 내 항목을 만들 수 있고 IOMMU에게 새로 업데이트된 장치 항목을 통지할 수 있다. 이때, (가령, 그래픽 또는 또 다른 I/O 장치로부터의) 대응하는 IOMMU I/O 테이블과 호스트 OS I/O 테이블이 동일한 테이블로 매핑될 수 있다.
호스트 OS의 임의의 변경이 페이지 보호 상에서 수행되거나 변환이 프로세서 I/O 페이지 테이블과 메모리 I/O 페이지 테이블 모두에서 업데이트될 수 있다.
하나의 예시에서, IOMMU(210)는 전통적으로 예를 들어 하이퍼바이저에 의해 수행되는 I/O 작업을 수행하도록 구성된다. 이 배열은 보호, 격리, 인터럽트 리매핑 및 주소 변환을 위한 하이퍼바이저 개입에 대한 필요성을 없앤다. 그러나 IOMMU(210)에 의해 핸들링될 수 없는 페이지 장애가 발생할 때, 상기 IOMMU(210)는 해결을 위해 하이퍼바이저에 의한 개입을 요청할 수 있다. 그러나 충돌이 해결되면, IOMMU(210)는 다시 하이퍼바이저 개입 없이 본래의 작업을 계속할 수 있다.
하이퍼바이저는 게스트 VM 1 및 2를 분리 및 격리하기 위해 네스티드 변환 계층(nested translation layer)을 이용할 수 있다. I/O 장치는 동시에 실행되는 게스트 VM들 중 임의의 것에 직접 할당되어 I/O 장치가 각자의 VM들 중 임의의 것의 메모리 공간에 포함되도록 할 수 있다. 또한, I/O 장치(22)는 하이퍼바이저 또는 또 다른 VM에게 속한 메모리 또는 또 다른 I/O 장치를 오염시키거나 검사할 수 없다. 게스트 VM 내에서, 커넬 주소 공간(kernel address space) 및 몇 개의 프로세스(사용자) 주소 공간이 존재한다. 네스티드 변환 정보를 이용하고 게스트 변환 계층을 이용하지 않을 때, I/O 장치는 커넬 특권(kernel privilege)을 허가 받아, 게스트 VM 메모리의 전체 내용을 비교적 자유롭게 액세스할 수 있다.
사용자-레벨(프로세스) I/O 및 어드밴스드 연산 모델(advanced computation model)을 가능하게 하기 위해, 게스트 변환 계층이 게스트 프로세스 및 I/O의 분리 및 격리에 대해 구현될 수 있다. IOMMU(210)에서 게스트 변환을 이용할 때, I/O 장치들 중 임의의 것이 게스트 VM 내 프로세스에 직접 할당되거나 I/O 장치가 사용자 프로세스와 동일한 주소 공간에서 연산을 실행시킬 수 있다. 프로세스 주소 공간이 IOMMU(210)에 식별되어서, 적절한 변환 테이블이 사용될 수 있다. 즉, 각각의 메모리 트랜잭션이 프로세스 주소 공간 ID(PASID)로 태깅될 수 있다. 더 구체적으로, 예시적 PASID가 x86-캐노니컬(canonical) 게스트 VM 내 애플리케이션 주소 공간을 식별하도록 사용될 수 있다. 상기 PASID는 I/O 장치 상에서 사용되어 공유 로컬 메모리 내에 위치하는 동시적 맥락들을 격리할 수 있다.
IOMMU(210)에 의해 장치 ID가 사용되어 주소 변환 또는 인터럽트 리매핑 동작을 위해 네스티드 매핑 테이블을 선택할 수 있다. PASID와 장치 ID가 함께 사용되어 애플리케이션 주소 공간을 고유하게 식별할 수 있다.
앞서 언급된 바와 같이, 안정성 및 보안상 이유로 I/O 장치(22)의 액세스를 I/O 장치(22)에 대해 인가된 메모리의 일부분으로만 제한하는 것이 바람직하다. 이 보편적인 바람이 가상화 환경에서 동일하게 적용된다. 가상화 환경에서, 하이퍼바이저가 소프트웨어 스택의 바닥에(즉, 하드웨어에 인접하게) 놓이며, 실제 물리 하드웨어를 제어하는 것은 하이퍼바이저이다. 하이퍼바이저의 실제 물리 하드웨어의 제어를 통해, 하드웨어가 실제로 존재하지 않을 수 있더라도 하이퍼바이저는 자신 위의 소프트웨어의 각각의 조각에 대한 하드웨어의 특화된 조각의 환영을 생성한다. 따라서 하이퍼바이저 때문에, 각각의 운영 체제는 요구되는 하드웨어로의 자신의 고유 바람직한 액세스를 갖는 것으로 나타나며, 따라서 각각의 운영 체제는 정상적으로 동작한다. 각각의 운영 체제의 하드웨어 요건을 만족시키는 것에 추가로, 하이퍼바이저는 또한 하드웨어의 특정 부분을 각각의 운영 체제로부터 비밀로 그리고 은닉되게 유지할 수 있다. 따라서 하이퍼바이저는 이들 운영 체제 각각에 대해 겹치지 않는 뷰(view)를 유지할 수 있다.
게스트 운영 체제라고도 지칭되는 운영 체제들은 동일한 장치 드라이버 액세스 관심(즉, 보안과 안정성) 문제를 갖지만 한 가지 중요한 차이점을 가진다. 차이점은 게스트 운영 체제는 직접 하드웨어 액세스 또는 제어를 갖지 않는다는 것이다. 오히려 앞서 언급한 바와 같이, 하이퍼바이저는 IOMMU(210)에서 호스트 하드웨어 변환의 책임을 가진다. 다시 말하면, 호스트 하드웨어 변환 정보가 하이퍼바이저에게 이용 가능하지만, 이러한 정보는 게스트 운영 체제에게 이용 가능하지 않다. 결과적으로, 가상화 환경에서, 게스트 운영 체제는 하드웨어 액세스가 인가된 영역으로 제한됨을 보장하기 위해 I/O 장치 및 I/O 장치 드라이버 주변에 방화벽을 구축하지 못할 수 있다.
가상화 환경에서 I/O 장치에 대해 방화벽을 구성하는 한 가지 방식은 IOMMU(210)의 소프트웨어 버전을 만들기 위해 가상화 기술을 이용하는 것이다. 그러나 이러한 방식은 이러한 소프트웨어 구현의 상당한 오버헤드 때문에 수용할 수 없게 느린 해결책을 도출할 것이다. 방화벽의 소프트웨어 구현의 수용할 수 없음에 추가로, 소프트웨어가 단순히 개입할 수 없는 특정 이벤트가 존재한다. 예를 들면, 장치 드라이버가 올바르게 동작하지만 장치 자체가 오작동하거나 바이러스 등에 의해 오염된 시나리오에서 소프트웨어는 개입할 수 없다. 특히, 소프트웨어는 단순히 이러한 보호 메커니즘을 구축하기 위한 제어 메커니즘을 갖지 않기 때문에 최종 하드웨어 액세스를 격리시킬 수 없다.
도 1을 계속 참조하고 도 1을 다시 참조하면, 일부 실시예에서, 게스트 OS(104)에 게스트 VM(100) 내 가상 IOMMU에 대한 하드웨어 지원이 제공된다. 이 하드웨어 접근법 의해 게스트 VM(100)이 I/O 장치(22) 주변에 원하는 방화벽을 셋업하여 I/O 장치(22)가 인가된 메모리만 읽고 쓸 수 있음으로써 그 밖의 다른 임의의 메모리를 오염시킬 수 없게 한다. 일반적으로 하이퍼바이저(106)는 게스트 VM(100)을 분리 및 격리시키기 위해 네스티드 변환 계층(nested translation layer)을 이용한다. 게스트 VM(100)에게 직접 할당된 I/O 장치(22)가 가상 머신의 메모리 공간으로 가둬진다. 상기 I/O 장치(22)는 하이퍼바이저 또는 또 다른 가상 머신에 속하는 메모리 또는 주변기기를 오염시키거나 검사하지 못한다. 게스트 가상 머신 내에서, 커넬 주소 공간 및 몇 개의 프로세스(사용자) 주소 공간이 존재한다. 네스티드 변환 정보를 이용해, 일반적으로 I/O 장치(22)는 게스트 가상 머신 메모리의 전체 내용을 자유롭게 액세스할 수 있도록 커넬 특권을 허가 받는다. 사용자-레벨(프로세스) I/O 및 어드밴스드 연산 모델을 가능하게 하기 위해, 게스트 프로세스 및 I/O의 분리 및 격리를 위해 게스트 변환 계층이 도입된다. 가상 IOMMU에서 게스트 변환을 이용해, I/O 장치(22)가 게스트 가상 머신 내 프로세스로 직접 할당되거나 GPU가 사용자 프로세스와 동일한 주소 공간에서 연산을 실행시킬 수 있다.
일부 실시예에서, 가상 IOMMU는 게스트 페이지 테이블(254), 호스트 페이지 테이블(256), 및 GCR3 테이블(242)을 포함하는 데이터 구조를 이용한다. 가상 IOMMU는 I/O 장치(22)로부터 메모리 요청을 수신한다. 이러한 메모리 요청은 I/O 장치(22)와 연관된 게스트 가상 주소를 포함한다. 게스트 페이지 테이블(254)을 사용하여 상기 게스트 가상 주소는 게스트 물리 주소로 변환된다. 상기 게스트 OS(104)는 게스트 페이지 테이블(254)을 유지한다. 호스트 페이지 테이블(256)을 사용하여 상기 게스트 물리 주소는 시스템 물리 주소로 변환된다. 하이퍼바이저(106)는 호스트 페이지 테이블(256)을 유지한다.
따라서 게스트 페이지 테이블(254)은 자신의 메모리 요청에서 I/O 장치(22)에 의한 올바른 게스트 가상 주소의 사용을 시행 또는 검증한다. 구체적으로 게스트 페이지 테이블(254)은 게스트 가상 주소가 I/O 장치(22)와 연관된 게스트 OS(104)에 의해 인가된 유효 주소 범위 내에 있음을 보장한다. 게스트 가상 주소가 I/O 장치(22)와 연관된 게스트 OS(104)에 의해 인가된 유효 주소 범위 내에 속하지 않는 경우, 상기 메모리 요청이 게스트 페이지 테이블(254)에 의해 잘못된 게스트 가상 주소를 액세스하지 못하게 될 것이다.
상기 게스트 페이지 테이블(254)은 가상 IOMMU의 속도 요건을 지원하기 위해 하드웨어에서 구현되고 하드웨어에서 방화벽의 시행을 제공한다. GCR3 테이블(242)은 장치 테이블(228)에 저장된 가상 DeviceID 파라미터를 이용해 인덱싱된다. 상기 가상 DeviceID 파라미터는 I/O 장치(22)와 연관된다. 게스트 페이지 테이블(254)은 가상 IOMMU 내 GCR3 테이블(242)의 인덱싱된 항목을 기초로 액세스된다.
일부 실시예에서, 게스트 페이지 테이블(254) 및 호스트 페이지 테이블(256)의 포맷이 동일하며, 장치 테이블(228) 내 제어 비트가 가상 IOMMU 내 게스트 페이지 테이블(254)의 서로 다른 용법을 구별하도록 사용된다.
가상 IOMMU의 이 실시예에서, 구성 부분의 가상화가 하드웨어와 소프트웨어 접근법 모두를 이용해 실현된다. 앞서 언급된 바와 같이, 게스트 페이지 테이블(254)은 하드웨어를 이용해 구현되어 만족스러운 타임프레임에서 주소 변환이 수행됨이 보장될 수 있다. 가상 IOMMU 내 그 밖의 다른 구성 부분(가령, 호스트 페이지 테이블(256), 장치 테이블(228), 제어, 구성 및 에러 보고 레지스터(204, 206, 208, 212, 214, 216, 218), 로그(202, 222, 234, 236), 및 인터럽트 리매핑 테이블(226))의 가상화가 전통적인 소프트웨어 방식을 이용해 이뤄진다. 이들 특정 요소가 특히 성능에 민감하지 않으므로, 소프트웨어 가상화의 사용에 내재된 오버헤드가 가상 IOMMU의 구현 시 어떠한 어려움도 야기하지 않는다.
GCR3 테이블(242)의 수정과 관련하여, 이 테이블은 가상 GCR3 테이블이도록 용도변경된다. GCR3 테이블(242)은 이의 전통적인 구성에서 GPGPU(즉, 그래픽 프로세싱 유닛 상에서의 범용 컴퓨팅(general purpose computing on graphics processing unit)) 연산을 지원하도록 설계된다. 이 전통적인 구성에서, GCR3 테이블(242)은 PASID(프로세스 주소 공간 ID)에 의해 인덱싱된다. 일부 실시예에서, GCR3 테이블(242)은 가상 DeviceID에 의해 인덱싱된다. 이러한 인덱싱 구성은 장치 테이블(228)에 가상 DeviceID를 위치시킴으로써 이뤄질 수 있다. 해당 분야의 통상의 기술자라면 인지할 그 밖의 다른 인덱싱 방식이 또한 사용될 수 있다.
도 3은 일부 실시예에 따라 I/O 장치(22)로부터 발산되는 메모리 요청 둘레에 방화벽을 배치하는 방법의 흐름도를 제공한다. 도시된 동작들이 상이한 순서로 수행될 수 있고, 일부 예시에서 모든 동작이 요구되는 것은 아닐 수 있음이 자명할 것이다. 이 방법은 기계 판독형 매체 상에 저장된 명령을 읽고 실행하는 하나 이상의 프로세서에 의해 수행될 수 있음이 더 자명할 것이다.
프로세스는 단계(310)에서 시작한다. 단계(310)에서, 가상 IOMMU는 입/출력(I/O) 장치에 의한 메모리 요청을 수신한다. 상기 메모리 요청은 게스트 가상 주소를 포함한다. 일부 실시예에서, 가상 IOMMU는 IOMMU(210)의 가상 구현이다. 일부 실시예에서, 주소 변환 정보는 I/O 페이지 테이블 항목, 장치 테이블 항목, 및 인터럽트 리매핑 테이블 정보 중 하나 이상을 포함한다.
단계(320)에서, 가상 IOMMU(가령, IOMMU(210)의 가상 구현) 내 게스트 페이지 테이블(가령, 게스트 페이지 테이블(254))이 게스트 가상 주소를 게스트 물리 주소로 변환한다. 상기 게스트 페이지 테이블(254)은 게스트 OS(가령, OS(104))에 의해 유지된다.
단계(330)에서, 가상 IOMMU(210) 내 호스트 페이지 테이블(가령, 호스트 페이지 테이블(256))이 게스트 물리 주소를 시스템 물리 주소로 변환한다. 상기 호스트 페이지 테이블(256)은 하이퍼바이저(가령, 하이퍼바이저(106))에 의해 유지된다.
단계(340)에서, 게스트 가상 주소는 검증되어 I/O 장치(가령, I/O 장치(22))에 대한 게스트 OS(104)에 의해 인가된 유효 주소 범위 내에 있는지 여부를 결정할 수 있다.
단계(350)에서, 게스트 가상 주소가 I/O 장치(22)에 대한 게스트 OS(104)에 의해 인가되는 유효 주소 범위 내에 있지 않은 경우, 메모리 요청이 가상 머신 상에서 실행되지 못하게 될 수 있다.
단계(360)에서 방법(300)이 종료된다.
실시예가 기재되었고 명세서에서 "일부 실시예"라는 언급이 기재된 실시예가 특정 특징부, 구조, 또는 특성을 포함할 수 있지만 모든 실시예가 반드시 특정 특징부, 구조, 또는 특성을 포함하는 것은 아닐 수 있음을 가리킨다. 덧붙여, 이러한 구문이 반드시 동일한 실시예를 지칭하는 것은 아니다. 덧붙여, 특정 특징부, 구조 또는 특성이 특정 실시예와 관련하여 기재될 때, 해당 분야의 통상의 기술자의 지식 내에서 이러한 특징부, 구조, 또는 특성을 명시적으로 기재되었는지 여부와 무관하게 그 밖의 다른 실시예와 함께 수행하는 것이 자명하다.
본 발명의 실시예는 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 임의의 조합에 의해 구현될 수 있다. 본 발명의 실시예가 하나 이상의 프로세서에 의해 읽히거나 실행될 수 있는 기계 판독 매체 상에 저장된 명령으로서 구현될 수 있다. 예를 들어, 하나 이상의 프로세서에 의해 읽히고 실행될 수 있는 기계 판독형 매체 상에 저장된 명령에 의해 가상 IOMMU가 에뮬레이트될 수 있다. 기계 판독형 매체는 기계(가령, 컴퓨팅 장치)에 의해 판독 가능한 형태로 정보를 저장 또는 전송하기 위한 임의의 메커니즘을 포함할 수 있다. 예를 들어, 기계 판독형 매체는 리드 온리 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 장치, 전기 광학, 음향 또는 그 밖의 다른 형태의 전파된 신호(가령, 반송파, 적외선 신호, 디지털 신호 등) 등을 포함할 수 있다. 덧붙여, 본 명세서에 펌웨어, 소프트웨어, 루틴, 명령이 특정 동작을 수행하는 것으로 기재될 수 있다. 그러나 이러한 기재는 단지 편의를 위한 것이며 이러한 동작은 실제로 컴퓨팅 장치, 프로세서, 제어기, 또는 펌웨어, 소프트웨어, 루틴, 명령 등을 실행하는 그 밖의 다른 장치로부터 야기됨이 이해되어야 한다.
앞서 특정된 기능들 및 이들의 관계의 구현을 도시하는 기능적 빌딩 블록을 이용해 실시예가 기재되었다. 이들 기능적 빌딩 블록의 경계가 기재의 편의를 위해 본 명세서에 임의로 정의되었다. 특정된 기능들 및 이들의 관계가 적절하게 수행되는 한 대안적 경계가 정의될 수 있다.
해당 분야의 지식을 적용함으로써, 과도한 실험 없이, 본 발명의 주제 사항의 일반적인 개념 내에서 다양한 적용예에 이러한 특정 실시예를 쉽게 수정 및/또는 적응화시킬 수 있도록 특정 실시예에 대한 상기의 기재가 본 발명 주제의 일반적인 속성을 완전히 드러낼 것이다. 따라서 이러한 적응 및 수정은 본 명세서에 제공된 설명 및 지침을 기초로 개시된 실시예의 균등물의 의미 및 범위 내에 있는 것으로 의도된다. 본 명세서의 용어는 한정 목적이 아니라 설명 목적을 가져 본 명세서의 용어가 설명 및 지침 관점에서 해당 분야의 통상의 기술자에 의해 해석될 수 있음이 이해되어야 한다.

Claims (20)

  1. 가상 I/O 메모리 관리 유닛(IOMMU)에 의해, 입/출력(I/O) 장치에 의한 메모리 요청을 수신하는 단계 - 상기 메모리 요청은 게스트 가상 주소를 포함함 - ,
    가상 IOMMU에 의해, 게스트 페이지 테이블을 이용해 게스트 가상 주소를 게스트 물리 주소로 변환하는 단계 - 상기 게스트 페이지 테이블은 게스트 OS(운영 체제(operating system))에 의해 유지됨 - , 및
    가상 IOMMU에 의해, 호스트 페이지 테이블을 이용해 게스트 물리 주소를 시스템 물리 주소로 변환하는 단계 - 상기 호스트 페이지 테이블은 하이퍼바이저에 의해 유지됨 - 를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 게스트 페이지 테이블은 하드웨어 형태로 구현되는, 방법.
  3. 제1항에 있어서,
    I/O 장치와 연관된 가상 DeviceID에 의해 인덱싱되는 범용 제어 레지스터(GCR3) 테이블 내 항목을 식별하는 단계 - 상기 가상 DeviceID는 가상 IOMMU에서 장치 테이블(device table)에 저장됨 - 를 더 포함하는, 방법.
  4. 제3항에 있어서,
    GCR3 테이블 내 항목을 기초로 게스트 페이지 테이블을 액세스하는 단계
    를 더 포함하는, 방법.
  5. 제1항에 있어서,
    소프트웨어를 이용해 가상 IOMMU 내 장치 테이블을 가상화하는 단계
    를 더 포함하는, 방법.
  6. 제1항에 있어서,
    소프트웨어를 이용해, 제어 레지스터, 구성 레지스터, 에러 보고 레지스터, 로그, 및 가상 IOMMU와 연관된 인터럽트 리매핑 테이블 중 적어도 하나를 가상화하는 단계
    를 더 포함하는, 방법.
  7. 제1항에 있어서,
    호스트 페이지 테이블과 게스트 페이지 테이블에 대해 동일한 포맷을 이용하는 단계, 및
    가상화 모드에서의 호스트 테이블로서의 게스트 페이지 테이블의 용법을 구별하기 위해 장치 테이블 내 제어 비트를 이용하는 단계
    를 더 포함하는, 방법.
  8. 제1항에 있어서,
    게스트 가상 주소가 I/O 장치에 대해 게스트 OS에 의해 인가된 유효 주소 범위 내에 있는지 여부를 결정하기 위해, 가상 IOMMU에 의해, 게스트 가상 주소를 검증하는 단계, 및
    상기 게스트 가상 주소가 I/O 장치에 대해 게스트 OS에 의해 인가된 유효 주소 범위 내에 있지 않은 경우, 상기 메모리 요청이 게스트 가상 주소를 액세스하지 못하게 하는 단계
    를 더 포함하는, 방법.
  9. 제1항에 있어서,
    하이퍼바이저에 의해 가상 머신을 관리하는 단계 - 상기 가상 머신은 게스트 OS의 동작을 지원하도록 구성됨 - 를 더 포함하는, 방법.
  10. 장치로서,
    I/O 장치에 의해 전송된 메모리 요청을 수신하도록 구성된 가상 IOMMU를 포함하며, 상기 메모리 요청은 게스트 가상 주소를 포함하고, 가상 IOMMU는
    게스트 가상 주소를 게스트 물리 주소로 변환하도록 구성된 게스트 페이지 테이블 - 게스트 페이지 테이블은 게스트 OS에 의해 유지됨 - , 및
    게스트 물리 주소를 시스템 물리 주소로 변환하도록 구성된 호스트 페이지 테이블 - 호스트 페이지 테이블은 하이퍼바이저에 의해 유지됨 - 을
    포함하는 데이터 구조를 포함하는, 장치.
  11. 제10항에 있어서,
    상기 게스트 페이지 테이블은 하드웨어 형태로 구현되는, 장치.
  12. 제10항에 있어서,
    I/O 장치와 연관된 가상 DeviceID에 의해 인덱싱되도록 구성된 GCR3 테이블 - 가상 DeviceID는 가상 IOMMU 내 장치 테이블에 저장됨 -을 더 포함하는, 장치.
  13. 제12항에 있어서,
    상기 게스트 페이지 테이블은 GCR3 테이블 내 인덱싱된 항목을 기초로 액세스되도록 구성되는, 장치.
  14. 제10항에 있어서,
    상기 장치 테이블은 소프트웨어를 이용해 가상 IOMMU에서 가상화되도록 구성되는, 장치.
  15. 제10항에 있어서,
    제어 레지스터, 구성 레지스터, 에러 보고 레지스터, 로그, 및 가상 IOMMU와 연관된 인터럽트 리매핑 테이블 중 적어도 하나가 소프트웨어를 이용해 가상화되는, 장치.
  16. 제10항에 있어서,
    호스트 페이지 테이블과 게스트 페이지 테이블은 동일한 포맷을 이용하며,
    장치 테이블은 가상화 모드에서의 호스트 테이블로서의 게스트 페이지 테이블의 용법을 구별하기 위해 제어 비트를 이용하는, 장치.
  17. 제10항에 있어서,
    상기 가상 IOMMU는 게스트 가상 주소가 I/O 장치에 대해 게스트 OS에 의해 인가된 유효 주소 범위 내에 있는지 여부를 결정하기 위해 게스트 가상 주소를 검증하도록 구성된, 장치.
  18. 제10항에 있어서,
    게스트 OS는 게스트 가상 주소가 I/O 장치에 대해 게스트 OS에 의해 인가된 유효 주소 범위 내에 있지 않을 때 메모리 요청의 실행을 막는, 장치.
  19. 제10항에 있어서,
    게스트 OS의 동작을 지원하도록 구성되는 가상 머신 - 상기 가상 머신은 하이퍼바이저에 의해 관리됨 - 을 더 포함하는, 장치.
  20. 명령이 저장된 컴퓨터 판독형 저장 장치로서, 상기 명령은 컴퓨팅 장치에 의해 실행될 때 컴퓨팅 장치로 하여금
    I/O 장치에 의해 전송된 메모리 요청을 수신하도록 구성된 가상 IOMMU를 포함하는 장치를 에뮬레이트하게 하며, 상기 가상 IOMMU는
    게스트 가상 주소를 게스트 물리 주소로 변환하도록 구성된 게스트 페이지 테이블 - 게스트 페이지 테이블은 게스트 OS에 의해 유지됨 - , 및
    게스트 물리 주소를 시스템 물리 주소로 변환하도록 구성된 호스트 페이지 테이블 - 호스트 페이지 테이블은 하이퍼바이저에 의해 유지됨 - 을
    포함하는 데이터 구조를 포함하는, 컴퓨터 판독형 저장 장치.
KR1020157007195A 2012-08-29 2013-08-27 게스트 가상 머신 내 가상 입/출력 메모리 관리 유닛 KR101950000B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/597,575 US9424199B2 (en) 2012-08-29 2012-08-29 Virtual input/output memory management unit within a guest virtual machine
US13/597,575 2012-08-29
PCT/US2013/056856 WO2014036004A1 (en) 2012-08-29 2013-08-27 Virtual input/output memory management unit wihtin a guest virtual machine

Publications (2)

Publication Number Publication Date
KR20150048173A true KR20150048173A (ko) 2015-05-06
KR101950000B1 KR101950000B1 (ko) 2019-02-19

Family

ID=49213080

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157007195A KR101950000B1 (ko) 2012-08-29 2013-08-27 게스트 가상 머신 내 가상 입/출력 메모리 관리 유닛

Country Status (7)

Country Link
US (1) US9424199B2 (ko)
EP (1) EP2891067B1 (ko)
JP (1) JP6110946B2 (ko)
KR (1) KR101950000B1 (ko)
CN (1) CN104685479B (ko)
IN (1) IN2015DN01637A (ko)
WO (1) WO2014036004A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200086017A (ko) * 2019-01-08 2020-07-16 한국전자통신연구원 가상화 환경에서의 프로그램 전송 장치 및 방법 그리고 이를 포함하는 시스템
WO2020251790A1 (en) * 2019-06-10 2020-12-17 Advanced Micro Devices, Inc. Guest operating system buffer and log access by an input-output memory management unit

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104182349A (zh) * 2013-05-27 2014-12-03 联想(北京)有限公司 一种信息处理方法及电子设备
US9547603B2 (en) * 2013-08-28 2017-01-17 Wisconsin Alumni Research Foundation I/O memory management unit providing self invalidated mapping
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
US9135437B1 (en) 2014-03-24 2015-09-15 Amazon Technologies, Inc. Hypervisor enforcement of cryptographic policy
US9690720B2 (en) 2014-06-03 2017-06-27 Qualcomm Incorporated Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device
US9632953B2 (en) 2014-06-03 2017-04-25 Qualcomm Incorporated Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
US9703726B2 (en) * 2014-06-24 2017-07-11 Bitdefender IPR Management Ltd. Systems and methods for dynamically protecting a stack from below the operating system
US20160077981A1 (en) * 2014-09-12 2016-03-17 Advanced Micro Devices, Inc. Method and Apparatus for Efficient User-Level IO in a Virtualized System
CA2964628A1 (en) 2014-10-20 2016-04-28 Pharmaceutical Manufacturing Research Services, Inc. Extended release abuse deterrent liquid fill dosage form
US9720846B2 (en) 2015-05-28 2017-08-01 Red Hat Israel, Ltd. Memory swap for direct memory access by a device assigned to a guest operating system
US9772962B2 (en) 2015-05-28 2017-09-26 Red Hat Israel, Ltd. Memory sharing for direct memory access by a device assigned to a guest operating system
US10152612B2 (en) 2015-09-25 2018-12-11 Intel Corporation Cryptographic operations for secure page mapping in a virtual machine environment
US10216533B2 (en) * 2015-10-01 2019-02-26 Altera Corporation Efficient virtual I/O address translation
US9959214B1 (en) * 2015-12-29 2018-05-01 Amazon Technologies, Inc. Emulated translation unit using a management processor
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
US10073710B2 (en) 2016-02-25 2018-09-11 Red Hat Israel, Ltd. Host-driven application memory protection for virtual machines
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
US11379385B2 (en) * 2016-04-16 2022-07-05 Vmware, Inc. Techniques for protecting memory pages of a virtual computing instance
US11150928B2 (en) * 2016-06-08 2021-10-19 Red Hat Israel, Ltd. Hypervisor translation bypass
CN114217902A (zh) 2016-06-15 2022-03-22 华为技术有限公司 一种数据传输方法及装置
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US20180024938A1 (en) * 2016-07-21 2018-01-25 Advanced Micro Devices, Inc. Allocating physical pages to sparse data sets in virtual memory without page faulting
US10140214B2 (en) 2016-08-29 2018-11-27 Red Hat Israel, Ltd. Hypervisor translation bypass by host IOMMU with virtual machine migration support
US10176122B2 (en) * 2016-10-19 2019-01-08 Advanced Micro Devices, Inc. Direct memory access authorization in a processing system
US10013199B2 (en) 2016-11-15 2018-07-03 Red Hat Israel, Ltd. Translation bypass by host IOMMU for systems with virtual IOMMU
US10635479B2 (en) * 2016-12-19 2020-04-28 Bitdefender IPR Management Ltd. Event filtering for virtual machine security applications
US10013388B1 (en) * 2016-12-19 2018-07-03 Amazon Technologies, Inc. Dynamic peer-to-peer configuration
KR101716715B1 (ko) * 2016-12-27 2017-03-15 주식회사 티맥스클라우드 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치
CN106991057B (zh) * 2017-04-11 2020-09-11 深信服科技股份有限公司 一种共享显卡虚拟化中内存的调用方法及虚拟化平台
CN107193759A (zh) * 2017-04-18 2017-09-22 上海交通大学 设备内存管理单元的虚拟化方法
US10228981B2 (en) 2017-05-02 2019-03-12 Intel Corporation High-performance input-output devices supporting scalable virtualization
US20190087217A1 (en) * 2017-09-19 2019-03-21 Microsoft Technology Licensing, Llc Hypervisor memory cache invalidation
US11469953B2 (en) 2017-09-27 2022-10-11 Intel Corporation Interworking of legacy appliances in virtualized networks
EP4220447A1 (en) * 2017-10-24 2023-08-02 INTEL Corporation Hardware assisted virtual switch
WO2019132976A1 (en) * 2017-12-29 2019-07-04 Intel Corporation Unified address translation for virtualization of input/output devices
US11036645B2 (en) * 2018-06-26 2021-06-15 Red Hat, Inc. Secure userspace networking for guests
US10853271B2 (en) * 2018-08-03 2020-12-01 Arm Limited System architecture with query based address translation for access validation
US10983926B2 (en) 2018-08-29 2021-04-20 Red Hat, Inc. Efficient userspace driver isolation for virtual machines
US10754796B2 (en) 2018-08-29 2020-08-25 Red Hat, Inc. Efficient user space driver isolation by CPU page table switching
US11481241B2 (en) * 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US10809929B2 (en) 2018-11-30 2020-10-20 International Business Machines Corporation Combined hardware/software-enforced segmentation of multi-tenant memory/storage systems
CN113168380B (zh) * 2019-01-29 2022-09-09 华为技术有限公司 电子设备和地址访问方法
US11023397B2 (en) * 2019-03-25 2021-06-01 Alibaba Group Holding Limited System and method for monitoring per virtual machine I/O
US11036649B2 (en) 2019-04-04 2021-06-15 Cisco Technology, Inc. Network interface card resource partitioning
US11494211B2 (en) * 2019-04-22 2022-11-08 Advanced Micro Devices, Inc. Domain identifier and device identifier translation by an input-output memory management unit
US10909053B2 (en) * 2019-05-27 2021-02-02 Advanced Micro Devices, Inc. Providing copies of input-output memory management unit registers to guest operating systems
US10970224B2 (en) 2019-06-28 2021-04-06 International Business Machines Corporation Operational context subspaces
US11176056B2 (en) 2019-06-28 2021-11-16 International Business Machines Corporation Private space control within a common address space
US11074195B2 (en) 2019-06-28 2021-07-27 International Business Machines Corporation Access to dynamic address translation across multiple spaces for operational context subspaces
US10891238B1 (en) * 2019-06-28 2021-01-12 International Business Machines Corporation Dynamically joining and splitting dynamic address translation (DAT) tables based on operational context
US11042495B2 (en) * 2019-09-20 2021-06-22 Advanced Micro Devices, Inc. Providing interrupts from an input-output memory management unit to guest operating systems
US11301402B2 (en) 2020-04-30 2022-04-12 Red Hat, Inc. Non-interrupting portable page request interface
CN111737176B (zh) * 2020-05-11 2022-07-15 瑞芯微电子股份有限公司 一种基于pcie数据的同步装置及驱动方法
CN112612574B (zh) * 2020-12-18 2023-09-26 海光信息技术股份有限公司 输入输出设备的内存访问管理单元、系统及地址转换方法
EP4268085A4 (en) * 2020-12-22 2024-04-10 INTEL Corporation PROCESSOR CIRCUITRY TO EXECUTE AN INPUT-OUTPUT TRANSLATION VIRTUAL ADDRESS INSTRUCTION
US12020053B2 (en) 2021-03-29 2024-06-25 Red Hat, Inc. Exposing untrusted devices to virtual machines
US11860792B2 (en) 2021-05-04 2024-01-02 Red Hat, Inc. Memory access handling for peripheral component interconnect devices
US11900142B2 (en) 2021-06-16 2024-02-13 Red Hat, Inc. Improving memory access handling for nested virtual machines
CN113868174B (zh) * 2021-10-11 2024-02-06 摩尔线程智能科技(北京)有限责任公司 验证平台搭建方法、装置及存储介质
CN115460172B (zh) * 2022-08-22 2023-12-05 曙光信息产业股份有限公司 设备地址分配方法、装置、计算机设备、介质及程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060206687A1 (en) * 2005-03-08 2006-09-14 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US20080114916A1 (en) * 2006-11-13 2008-05-15 Hummel Mark D Filtering and Remapping Interrupts
US20100161847A1 (en) * 2008-12-18 2010-06-24 Solarflare Communications, Inc. Virtualised interface functions
US20110022818A1 (en) * 2009-07-24 2011-01-27 Kegel Andrew G Iommu using two-level address translation for i/o and computation offload devices on a peripheral interconnect

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4756603B2 (ja) * 2006-10-10 2011-08-24 ルネサスエレクトロニクス株式会社 データプロセッサ
US8078827B2 (en) 2007-07-05 2011-12-13 International Business Machines Corporation Method and apparatus for caching of page translations for virtual machines
US8443156B2 (en) * 2009-03-27 2013-05-14 Vmware, Inc. Virtualization system using hardware assistance for shadow page table coherence
JP5476764B2 (ja) * 2009-03-30 2014-04-23 富士通株式会社 サーバ装置、計算機システム、プログラム及び仮想計算機移動方法
US8386745B2 (en) * 2009-07-24 2013-02-26 Advanced Micro Devices, Inc. I/O memory management unit including multilevel address translation for I/O and computation offload
US8271450B2 (en) * 2009-10-01 2012-09-18 Vmware, Inc. Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory
US20110197004A1 (en) * 2010-02-05 2011-08-11 Serebrin Benjamin C Processor Configured to Virtualize Guest Local Interrupt Controller
JP5601516B2 (ja) * 2010-10-06 2014-10-08 日本電気株式会社 コンピュータ装置及びメモリリソース割当て方法
US20120110575A1 (en) 2010-10-29 2012-05-03 Unisys Corp. Secure partitioning with shared input/output
US20120246381A1 (en) 2010-12-14 2012-09-27 Andy Kegel Input Output Memory Management Unit (IOMMU) Two-Layer Addressing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060206687A1 (en) * 2005-03-08 2006-09-14 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US20080114916A1 (en) * 2006-11-13 2008-05-15 Hummel Mark D Filtering and Remapping Interrupts
US20100161847A1 (en) * 2008-12-18 2010-06-24 Solarflare Communications, Inc. Virtualised interface functions
US20110022818A1 (en) * 2009-07-24 2011-01-27 Kegel Andrew G Iommu using two-level address translation for i/o and computation offload devices on a peripheral interconnect

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200086017A (ko) * 2019-01-08 2020-07-16 한국전자통신연구원 가상화 환경에서의 프로그램 전송 장치 및 방법 그리고 이를 포함하는 시스템
WO2020251790A1 (en) * 2019-06-10 2020-12-17 Advanced Micro Devices, Inc. Guest operating system buffer and log access by an input-output memory management unit
CN114080587A (zh) * 2019-06-10 2022-02-22 超威半导体公司 输入-输出存储器管理单元对访客操作系统缓冲区和日志的访问

Also Published As

Publication number Publication date
CN104685479A (zh) 2015-06-03
US20140068137A1 (en) 2014-03-06
EP2891067B1 (en) 2019-02-27
KR101950000B1 (ko) 2019-02-19
JP6110946B2 (ja) 2017-04-05
JP2015526829A (ja) 2015-09-10
EP2891067A1 (en) 2015-07-08
IN2015DN01637A (ko) 2015-07-03
WO2014036004A1 (en) 2014-03-06
US9424199B2 (en) 2016-08-23
CN104685479B (zh) 2018-04-17

Similar Documents

Publication Publication Date Title
KR101950000B1 (ko) 게스트 가상 머신 내 가상 입/출력 메모리 관리 유닛
US20230266888A1 (en) Processors, methods and systems to allow secure communications between protected container memory and input/output devices
US7873770B2 (en) Filtering and remapping interrupts
US7849287B2 (en) Efficiently controlling special memory mapped system accesses
US7882330B2 (en) Virtualizing an IOMMU
KR101782398B1 (ko) 보안된 가상 머신간 공유된 메모리 통신을 위한 기술
EP2457166B1 (en) I/o memory management unit including multilevel address translation for i/o and computation offload
US8392628B2 (en) Sharing memory spaces for access by hardware and software in a virtual machine environment
KR101861297B1 (ko) 효율적 메모리 및 자원 관리
US9535849B2 (en) IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect
US20130145055A1 (en) Peripheral Memory Management
US20130262736A1 (en) Memory types for caching policies
US20130145051A1 (en) Direct Device Assignment
US9152571B2 (en) All invalidate approach for memory management units
US20160077981A1 (en) Method and Apparatus for Efficient User-Level IO in a Virtualized System

Legal Events

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