KR20210068587A - 가상화된 컴퓨팅 환경에서의 보안 메모리 액세스 - Google Patents

가상화된 컴퓨팅 환경에서의 보안 메모리 액세스 Download PDF

Info

Publication number
KR20210068587A
KR20210068587A KR1020217015856A KR20217015856A KR20210068587A KR 20210068587 A KR20210068587 A KR 20210068587A KR 1020217015856 A KR1020217015856 A KR 1020217015856A KR 20217015856 A KR20217015856 A KR 20217015856A KR 20210068587 A KR20210068587 A KR 20210068587A
Authority
KR
South Korea
Prior art keywords
memory
request
identifier
memory access
iommu
Prior art date
Application number
KR1020217015856A
Other languages
English (en)
Inventor
앤소니 아사로
제프리 쥐. 쳉
아니루드 알. 아차리아
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
에이티아이 테크놀로지스 유엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드, 에이티아이 테크놀로지스 유엘씨 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20210068587A publication Critical patent/KR20210068587A/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
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Automation & Control Theory (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

처리기[101]는 각 메모리 액세스 요청과 연관된 가상 기계[221, 222]를 식별하기 위해 버스 디바이스들[102](이를테면 그래픽 처리 유닛)에서 요청자 식별자들을 이용함으로써 가상화된 컴퓨팅 환경에서 보안 메모리 액세스를 지원한다. 가상화된 컴퓨팅 환경은 시스템 메모리[110]의 상이한 영역들[111, 112]에 대한 액세스를 제어하기 위해 요청자 식별자들을 사용하여, VM이 액세스하도록 허용되는 메모리의 영역들에만 각 VM이 액세스하는 것을 보장한다. 이에 의해 가상화된 컴퓨팅 환경은 버스 디바이스들에 의한 효율적인 메모리 액세스를 지원하면서 메모리의 상이한 영역들이 권한 없는 액세스로부터 보호되는 것을 보장한다.

Description

가상화된 컴퓨팅 환경에서의 보안 메모리 액세스
가상화된 컴퓨팅 환경에서, 가상 기계들(VM, virtual machine)로서 지칭되는 다수의 가상화된 엔티티들은 컴퓨터 자원들을 공유하지만 개별 컴퓨터 시스템들로서 보이거나 사용자들과 상호 작용한다. 예를 들어, 서버는 다수의 VM들을 동시에 실행할 수 있으며, 이에 의해 다수의 VM들 각각은 개별 컴퓨터 시스템으로서 거동하지만 서버의 자원들을 다른 VM들과 공유한다. 가상화된 컴퓨팅 환경들은 컴퓨터 자원들의 효율적인 사용을 지원하지만, 또한 VM들 각각의 안전하고 적절한 동작을 보장하기 위해 이들 자원들의 주의깊은 관리를 필요로 한다. 예를 들어, 가상화된 컴퓨팅 환경은 통상적으로 VM들을 대신하여 시스템 메모리에 대한 액세스를 관리하여 VM들이 부주의로 또는 악의적으로 다른 VM들의 데이터에 액세스하지 않는 것을 보장한다. 그러나, 가상화된 컴퓨팅 환경들에 대한 기존 메모리 액세스 기술들은 특히 버스 디바이스들(시스템의 인터커넥트에 결합된 디바이스들)이 메모리에 직접 액세스하는 것을 허용하는 것에 비효율적이다.
본 개시는 첨부 도면들을 참조하여 해당 기술분야의 통상의 기술자들에게 이해가 더 잘 되고, 이의 많은 특징들 및 이점들이 명백해질 수 있다. 상이한 도면들에서의 동일한 참조 부호들의 사용은 유사하거나 동일한 항목들을 나타낸다.
도 1은 일부 실시 예들에 따라, 메모리에 대한 버스 디바이스들의 액세스를 지원하기 위해 상이한 가상 기계들에 상이한 요청 식별자들을 이용하는 처리 시스템의 블록도이다.
도 2는 일부 실시 예들에 따라, 도 1의 처리 시스템에서 실행되는 상이한 가상 기계들이 상이한 요청 식별자들을 사용하여 버스 디바이스를 통해 메모리에 액세스하는 예를 도시하는 블록도이다.
도 3은 일부 실시 예들에 따라, 도 1의 처리 시스템이 디바이스 드라이버들 및 하이퍼바이저를 이용하여 상이한 가상 기계들에 대한 보안 메모리 액세스를 지원하는 예를 도시하는 블록도이다.
도 4는 일부 실시 예들에 따라, VM이 요청 식별자를 사용하여 버스 디바이스를 통해 메모리에 액세스하는 방법의 흐름도이다.
도 5는 일부 실시 예들에 따라, 도 1의 처리 시스템이 호스트 운영 체제와 독립적으로 인터럽트들을 핸들링하는 예를 도시하는 블록도이다.
도 6은 일부 실시 예에 따라, 도 1의 처리 시스템이 호스트 운영 체제와 독립적으로 인터럽트들을 핸들링하는 방법의 흐름도이다.
도 1 내지 도 6은 각 메모리 액세스 요청과 연관된 가상 기계를 식별하기 위해 버스 디바이스들(이를테면 그래픽 처리 유닛)에서 요청자 식별자들을 이용함으로써 가상화된 컴퓨팅 환경에서 보안 메모리 액세스를 지원하기 위한 기술들을 도시한다. 가상화된 컴퓨팅 환경은 시스템 메모리의 상이한 영역들에 대한 액세스를 제어하기 위해 요청자 식별자들을 사용하여, VM이 액세스하도록 허용되는 메모리의 영역들에만 각 VM이 액세스하는 것을 보장한다. 이에 의해 가상화된 컴퓨팅 환경은 버스 디바이스들에 의한 효율적인 메모리 액세스를 지원하면서 메모리의 상이한 영역들이 권한 없는 액세스로부터 보호되는 것을 보장한다.
예를 통해 설명하기 위해, 일부 실시 예들에서, 처리기의 그래픽 처리 유닛(GPU, graphics processing unit)은 입출력 메모리 관리 유닛(IOMMU, input-output memory management unit)을 통해 시스템 메모리와 인터페이싱한다. 처리기는 다수의 VM들을 동시에 실행하고, 각 VM은 GPU를 사용하여 특정 동작들을 실행한다. 이들 동작들로부터 초래되는 메모리 액세스들에 대해, GPU는 메모리 액세스 요청들을 생성하고, 각 메모리 액세스 요청에 요청과 연관된 VM을 나타내는 요청 식별자를 포함시킨다. 메모리 액세스 요청을 수신하는 것에 응답하여, IOMMU는 요청 식별자에 기초하여, 페이지 테이블 집합에 대한 포인터를 식별하고, 페이지 테이블 집합을 사용하여 메모리 액세스 요청에 대한 시스템 메모리 어드레스를 식별한다. 페이지 테이블들은 각 VM이 시스템 메모리의 대응하는 영역에만 액세스할 수 있도록 하이퍼바이저에 의해 셋업된다. 이에 따라 처리기는 메모리의 각 영역을 권한 없는 액세스로부터 보호하여, 각 VM의 안전하고 적절한 동작을 보장한다. 이에 반해, 기존 처리기들은 버스 디바이스에서, 상이한 VM들에 대한 상이한 요청자 식별자들을 지원하지 않음으로써, 상이한 메모리 영역들을 권한 없는 액세스에 노출시키거나, 상이한 VM들에 의한 버스 디바이스의 동시 사용을 제한하고 이에 따라 시스템 효율을 감소시킨다.
일부 실시 예들에서, 가상화된 컴퓨팅 환경은 환경에서 실행되는 호스트 운영 체제(OS, operating system)와 독립적으로 GPU 또는 버스 디바이스로부터의 인터럽트들의 핸들링을 지원한다. GPU는 각 게스트 OS가 상이한 VM과 연관된, 동시에 실행되는 상이한 게스트 OS들을 대신하여 태스크들을 실행하도록 구성된다. 인터럽트 핸들러는 각 태스크와 대응하는 게스트 OS 사이의 매핑 테이블을 유지한다. 인터럽트 핸들러는 각 인터럽트가 인터럽트를 생성한 태스크와 연관된 가상 메모리를 식별하는 임베디드 가상 메모리 식별자(VMID, virtual memory identifier)를 갖는 페이로드를 포함하는, 인터럽트들을 GPU로부터 수신한다. 인터럽트 핸들러는 매핑 테이블로부터 가상 함수 식별자(VFID, virtual function identifier)를 역참조하고, VFID에 기초하여 인터럽트 페이로드를 VFID에 대응하는 게스트 OS에 제공한다. 예를 들어, 일부 실시 예들에서, VMID를 갖는 인터럽트가 VMID를 VFID에 매핑하는 인터럽트 핸들러에 제공된다. 인터럽트 핸들러는 VFID를 요청 ID에 매핑하는 PCIe 제어기와 같은 제어기로 VFID를 포워딩하고, 인터럽트를 처리하는 모듈(예를 들어, IOMMU)이 요청 ID를 사용하여 인터럽트를 처리한다. 이에 의해 가상화된 컴퓨팅 환경은 호스트 OS와 독립적으로 인터럽트 핸들링을 지원하여, 전체 인터럽트 레이턴시를 감소시킨다.
도 1은 일부 실시 예들에 따라, 메모리에 대한 버스 디바이스들의 액세스를 지원하기 위해 상이한 가상 기계들에 상이한 요청 식별자들을 이용하는 처리 시스템(100)의 블록도이다. 처리 시스템(100)은 일반적으로 전자 디바이스를 대신하여 명령어(예를 들어, 컴퓨터 프로그램) 집합들을 실행하도록 구성된다. 이에 따라, 상이한 실시 예들에서, 처리 시스템(100)은 데스크탑 컴퓨터, 랩탑 컴퓨터, 서버, 스마트폰, 게임 콘솔 등과 같은 다수의 상이한 전자 디바이스들 중 어느 하나에 통합된다.
명령어 집합의 실행을 가능하게 하기 위해, 처리 시스템(100)은 처리기(101) 및 메모리(110)를 포함한다. 일부 실시 예들에서, 처리기(101)는 명령어 집합들을 실행하도록 구성된 가속 처리 유닛(APU, accelerated processing unit)이고, 메모리(110)는 처리기(100)에 대한 시스템 메모리를 함께 형성하는 메모리 모듈(예를 들어, 동적 랜덤 액세스 메모리(DRAM, dynamic random-access memory) 메모리 모듈) 집합을 포함한다. 이에 따라, 메모리(110)는 처리기(101)에서 실행되는 명령어 집합들에 의한 액세스에 이용 가능한 명령어들 및 데이터를 저장한다.
도시된 예에서, 처리기(101)는 그래픽 처리 유닛(GPU)(102) 및 입력/출력 메모리 관리 유닛(IOMMU)(105)을 포함한다. 일부 실시 예들에서, 처리기(101)는 하나 이상의 중앙 처리 유닛(CPU, central processing unit) 코어들, CPU 코어들에 의한 메모리 액세스들을 지원하는 메모리 제어기, 하나 이상의 캐시, 및 하나 이상의 입력/출력 모듈 등을 포함하여, 명령어의 실행을 지원하기 위한 추가 모듈들을 포함한다는 것이 이해될 것이다. GPU(102)는 일반적으로 하나 이상의 CPU 코어로부터 동작들을 수신하는 것에 응답하여, 워크로드들로서 지칭되는 동작 집합들을 실행하도록 구성된다. 동작 집합들은 일반적으로 처리기(101)에서 실행되는 그래픽 및 벡터 명령어들과 연관된다.
IOMMU(105)는 일반적으로 GPU(102)를 포함하는 처리기(101)의 선택 모듈들과 메모리(110) 사이에 인터페이스를 제공하도록 구성된다. 일부 실시 예들에서, IOMMU는 선택 모듈들에 메모리(110)에 대한 직접 메모리 액세스(DMA, direct memory access) 기능을 제공한다. 이에 따라, IOMMU(105)는 GPU(102) 및 다른 모듈들로부터 메모리 액세스 요청들(판독 및 기록 요청들)을 수신하도록, 메모리 액세스 요청들과 연관된 가상 어드레스들을 물리 어드레스들로 변환하도록, 그리고 메모리(110)로의 물리 어드레스들을 갖는 메모리 액세스 요청들의 제공을 관리할 뿐만 아니라, 제공된 메모리 액세스 요청들에 대한 응답들을 관리하도록 구성된다. 일부 실시 예들에서, IOMMU(105)는 주변 구성요소 인터커넥트 익스프레스(PCI-e, Peripheral Component Interconnect Express) 프로토콜과 같은 특정 인터커넥트 프로토콜에 따라 동작하는, 본 명세서에서 버스로서 지칭되는 인터커넥트를 통해 GPU(102) 및 다른 모듈들에 연결된다. 버스를 통해 IOMMU(105)에 메모리 액세스 요청들을 제공하는 모듈들은 본 명세서에서 "버스 디바이스들(bus devices)"로서 지칭된다. 간략화를 위해, 도 1 은 GPU(102)와 IOMMU(105) 사이의 상호 작용들에 대해 설명된다. 그러나, 명세서에서 설명된 기술들이 임의의 버스 디바이스에 적용되고, 임의의 버스 디바이스로 구현될 수 있다는 것이 인식될 것이다.
일부 실시 예들에서, 처리 시스템(100)은 한 명령어 집합과 연관된 데이터를 다른 명령어 집합들에 의해 액세스되는 것으로부터 보호하는 것이 중요한 환경들에 이용된다. 예를 들어, 일부 상황들에서, 처리 시스템(100)은 처리 시스템(100)이 다수의 가상 기계들(VM)을 동시에 실행하는 가상화된 컴퓨팅 환경에 이용된다. VM을 다른 VM과 연관된 데이터의 적어도 부분 집합에 허용하는 것은 때때로 VM 동작에 에러들을 유발하거나 비공개 데이터를 권한 없는 액세스에 노출시킨다. 따라서, 도 1의 예에서, 처리 시스템(100)은 메모리(110)의 적어도 일부를 상이한 영역들(예를 들어, 영역들(111, 112))로 나누고 각 영역을 대응하는 VM에 할당한다.
메모리(110)의 영역을 권한 없는 액세스로부터 보호하기 위해, IOMMU(105)는 각 VM에 상이한 페이지 테이블 집합(예를 들어, 페이지 테이블들(116, 117))을 이용한다. VM의 초기화 동안, 관리 엔티티(예를 들어, 하이퍼바이저)는 대응하는 페이지 테이블들을 셋업한다 - 페이지 테이블들은 VM에 의해 사용되는 가상 어드레스들과 연관된 물리 어드레스를 식별한다. 관리 엔티티는 물리 어드레스들이 해당 VM에 할당된 메모리(110)의 영역에 대응하도록 VM에 대한 페이지 테이블들을 생성한다. 또한, 관리 엔티티는 각 페이지 테이블 포인터가 상이한 페이지 테이블을 포인팅하는, 페이지 테이블 포인터 집합(115)을 생성한다. 페이지 테이블 포인터들(115)은 아래에서 추가로 설명될 바와 같이, 주어진 페이지 테이블 집합을 타겟으로 하는 메모리 액세스 요청들을 식별하기 위해 IOMMU에 의해 사용되는 각 페이지 테이블 포인터에 대한 식별자를 더 포함한다.
GPU(102)는 실행 VM들에 대한 워크로드들을 관리하기 위해 컨텍스트 식별자들(예를 들어, 컨텍스트 ID들(106, 107))을 이용한다. 이에 따라, VM으로부터 워크로드를 수신하는 것에 응답하여, GPU(102)는 워크로드에 대한 컨텍스트 ID를 생성한다. 일부 실시 예들에서, 각 컨텍스트 ID 자체가 워크로드를 생성한 VM을 고유하게 식별한다. 다른 실시 예들에서, GPU(102)는 상이한 VM들로부터의 워크로드들에 대한 주어진 컨텍스트 ID를 재사용하고, 컨텍스트 ID 및 다른 표시자들, 이를테면 워크로드가 수신된 타이밍 또는 시퀀스의 조합으로부터 워크로드를 생성한 VM을 식별한다. 워크로드에 대한 메모리 액세스 요청을 생성할 때, GPU(102)는 워크로드를 생성한 VM을 식별하고 메모리 액세스 요청에 VM을 식별하는 요청 식별자(예를 들어, 요청 ID(109))를 포함시킨다.
메모리 액세스 요청을 수신하는 것에 응답하여, IOMMU(105)는 요청 ID를 사용하여 페이지 테이블 포인터 집합(115)을 인덱싱하여 VM과 연관된 페이지 테이블들을 식별한다. IOMMU(105)는 식별된 페이지 테이블을 사용하여 페이지 테이블 워크를 수행하여 메모리 액세스 요청의 가상 어드레스를 물리 어드레스로 변환한다. 이어서 IOMMU(105)는 메모리(110)에 물리 어드레스를 제공하여 VM에 할당된 영역에의 메모리 액세스 요청을 충족시킨다. 이에 따라, 요청 ID들을 사용함으로써, 처리 시스템(100)은 GPU(102)(또는 임의의 버스 디바이스)가 IOMMU(105)를 통해 메모리(110)에 직접 액세스하는 것을 허용하면서 메모리(110)의 각 영역을 권한 없는 액세스로부터 보호한다.
일부 실시 예들에서, 처리 시스템(100)은 하나 이상의 기존 버스 프로토콜 필드를 이용하여 메모리 액세스 요청에 대한 요청 ID를 저장한다. 예를 들어, PCIE 프로토콜은 메모리 액세스 요청과 같은 메시지를 생성한 디바이스를 나타내기 위한 디바이스 식별자 필드를 포함한다. GPU(102)는 디바이스 식별자 필드를 사용하여 메모리 액세스 요청을 생성한 VM을 식별하는 요청 ID를 저장한다. 기존의 버스 프로토콜 필드를 사용함으로써, 요청 ID의 구현이 단순화된다.
도 2는 일부 실시 예들에 따라, 처리 시스템(100)이 상이한 VM들에 의해 생성된 메모리 액세스 요청들에 상이한 요청 ID들을 이용하는 예의 블록도이다. 도시된 예에서, GPU(102)는 VM(221)및 VM(222)으로 지정된, 두 개의 상이한 VM들에 의해 생성된 상이한 워크로드들을 실행한다. VM(221)의 프로비저닝(provisioning)동안, 하이퍼바이저는 VM(221)에 요청 ID(208)로 지정된 요청 ID를 할당한다. 유사하게, VM(221)의 프로비저닝 동안, 하이퍼바이저는 VM(222)에 요청 ID(209)로 지정된 요청 ID를 할당한다. 예를 들어, 일부 실시 예들에서, 하이퍼바이저(또는 다른 하드웨어 모듈)는 다음 식을 사용하여 VM에 대한 VFID를 요청 ID에 매핑하며:
VFi_요청ID == PF 요청ID + VF_오프셋 + VF# * VF_스트라이드
여기서, VF_오프셋 및 VF-스트라이드는 주어진 물리 함수와 연관된 VF들의 연결 리스트(linked list)를 인덱싱하는 데 사용되는 값들이다.
또한, 도 2의 예의 목적들을 위해, 프로비저닝 동안 하이퍼바이저는 메모리(110)의 영역(111)을 VM(221)에 할당하고, 영역(112)을 VM(222)에 할당하는 것으로 가정된다. 이에 따라, VM(221)의 프로비저닝 동안, 하이퍼바이저는 페이지 테이블들(116)에 저장된 물리 어드레스들이 영역(111)에 대응하도록, VM(221)에 대한 페이지 테이블들(116)을 생성한다. 유사하게, 하이퍼바이저는 페이지 테이블들(116)에 저장된 물리 어드레스들이 영역(111)에 대응하도록, VM(222)에 대한 페이지 테이블들(117)을 생성한다.
동작 시에, GPU(102)는 VM(221)에 의해 생성된 워크로드들에 기초하여 그리고 VM(222)에 의해 생성된 워크로드들에 기초하여 메모리 액세스 요청들을 생성한다. VM(221)에 의해 생성된 워크로드에 대한 메모리 액세스 요청을 생성하는 것에 응답하여, GPU는 메모리 액세스 요청에 요청 ID(208)를 포함시킨다. 유사하게, VM(222)에 의해 생성된 워크로드에 대한 메모리 액세스 요청을 생성하는 것에 응답하여, GPU는 메모리 액세스 요청에 요청 ID(209)를 포함시킨다.
메모리 액세스 요청의 수신에 응답하여, IOMMU(105)는 메모리 액세스 요청과 함께 수신된 요청 ID를 사용하여 페이지 테이블 포인터들(115)을 인덱싱한다. 이에 따라, 요청 ID(208)를 포함하는 메모리 액세스 요청들에 대해, IOMMU(105)는 페이지 테이블 포인터들(115)을 인덱싱하여 페이지 테이블들(116)에 대한 포인터를 검색한다. 요청 ID(209)를 포함하는 메모리 액세스 요청들에 대해, IOMMU(105)는 페이지 테이블 포인터들(115)을 인덱싱하여 페이지 테이블들(117)에 대한 포인터를 검색한다. IOMMU(105)는 검색된 포인터에 의해 나타내어지는 페이지 테이블들의 페이지 워크를 수행함으로써, 메모리 액세스 요청과 함께 수신된 가상 어드레스를 물리 어드레스로 변환한다. 물리 어드레스는 메모리 액세스 요청과 연관된 VM에 따라, 영역들(111 및 112) 중 하나에 대응한다.
도 3은 일부 실시 예들에 따라, 처리 시스템(100)이 디바이스 드라이버들 및 하이퍼바이저를 이용하여 상이한 가상 기계들에 대한 보안 메모리 액세스를 지원하는 예를 도시하는 블록도이다. 도시된 예에서, 처리 시스템은 일반적으로 처리 시스템(100)에서 가상 기계들의 프로비저닝 및 실행을 관리하도록 구성되는 하이퍼바이저(330)를 실행한다. 상이한 실시 예들에서, 하이퍼바이저(330)는 소프트웨어, 하드웨어, 또는 이들의 조합이다.
위에서 언급된 바와 같이, 하이퍼바이저(330)는 일반적으로 처리 시스템(101)에서 VM들의 프로비저닝을 관리하도록 구성된다. 이에 따라, VM의 실행을 개시하라는 요청을 수신하는 것에 응답하여, 하이퍼바이저(330)는 IOMMU(105)에 저장될 VM에 대한 페이지 테이블의 생성뿐만 아니라, 생성된 페이지 테이블을 포인팅하기 위한 페이지 테이블 포인터의 생성도 관리한다. 드라이버(도시되지 않음)는 VMID들의 VFID들로의 매핑을 관리하고, 하이퍼바이저(330)는 위에서 제시된 식에 따라 VFID들로부터 요청 ID의 생성을 관리한다. 하이퍼바이저(330)는 또한 VM에 대한 요청 ID가 IOMMU(105)에서 대응하는 페이지 테이블 포인터와 연관되는 것을 보장한다.
도 3의 예에서, 처리 시스템(100)은 디바이스 드라이버들(332 및 333)을 실행한다. 디바이스 드라이버들(332 및 333) 각각은 GPU와 대응하는 VM(각각 VM들(221 및 222)) 사이에 소프트웨어 인터페이스를 제공한다. 이에 따라, 디바이스 드라이버들(332 및 333) 각각은 대응하는 VM으로부터 워크로드들을 실행하라는 요청들을 수신하고, 요청들을 GPU(102)의 특정 유형에 따라 포맷팅된 하나 이상의 커맨드로 변환한다. 디바이스 드라이버들(332 및 333)은 또한 GPU(102)에 의해 실행되는 워크로드들의 결과들을 나타내는 메시지들과 같은 메시지들을 GPU(102)로부터 수신한다. 디바이스 드라이버들(332 및 333)은 메시지들(또는 이의 데이터 페이로드들)을 대응하는 VM에 의해 예상되는 포맷들로 변환하고, 변환된 정보를 VM에 제공한다.
일부 실시 예들에서, GPU(102)는 워크로드 또는 커맨드를 제공한 디바이스 드라이버에 기초하여 메모리 액세스 요청에 대한 요청 ID를 식별한다. 특히, 각 디바이스 드라이버(332 및 333)가 상이한 VM(221, 222)과 고유하게 연관되기 때문에, GPU(102)는 사실상, 워크로드 또는 커맨드를 제공한 디바이스 드라이버를 식별함으로써 워크로드 또는 커맨드를 제공한 VM을 식별한다. 식별된 VM에 기초하여, GPU(102)는 식별된 VM과 연관된 요청 ID를 메모리 액세스 요청에 포함시킨다. 일부 실시 예들에서, VM들(221 및 222)은 디바이스 드라이버를 공유하여 GPU(102)와 인터페이싱한다. 이에 따라, GPU(102)에 제공된 각 커맨드 또는 워크로드에, 디바이스 드라이버는 가상 메모리 식별자(VMID)를 포함시킨다. GPU(102)는 VMID를 사용하여 각 메모리 액세스 요청과 포함될 요청 ID를 식별한다. 일부 실시 예들에서, 각 VMID는 상이한 VM과 고유하게 연관된다. 다른 실시 예들에서, VMID는 다수의 VM들에 의해 공유되고, GPU(102)는 VMID 및 다른 컨텍스트 정보의 조합에 기초하여, 이를테면, 요청 ID가 생성되고 있을 때, 인터럽트가 수신될 때, 어느 VM들이 현재 실행되고 있는지 등에 기초하여 VM에 대한 요청 ID를 식별한다.
도 4는 일부 실시 예들에 따라, VM이 요청 식별자를 사용하여 버스 디바이스를 통해 메모리에 액세스하는 방법(400)의 흐름도이다. 설명의 목적으로, 방법(400)은 도 1 내지 도 3의 처리 시스템(100)에서의 예시적인 구현에 대해 설명된다. 블록(402)에서, GPU(102)는 VM을 대신하여 워크로드를 실행하는 것에 기초하여 메모리 액세스 요청을 생성한다. GPU(102)는 예를 들어, 워크로드를 제공한 디바이스 드라이버, 디바이스 드라이버에 의해 제공된 VM에 대한 VMID, 또는 이들의 조합 중 하나 이상에 기초하여 VM에 대한 컨텍스트 ID를 식별한다. 블록(404)에서, GPU(102)는 컨텍스트 ID에 기초하여 VM에 대한 요청 ID를 결정한다.
블록(406)에서, GPU(102)는 메모리 액세스 요청을 IOMMU(105)에 전송하고, 메모리 액세스 요청에 요청 ID를 포함시킨다. 예를 들어, 일부 실시 예들에서, GPU(102)는 처리 시스템(100)의 디바이스를 식별하기 위한 디바이스 식별자를 위해 예비된 메모리 액세스 요청의 필드에 VM을 식별하는 요청 ID를 포함시킨다. 블록(408)에서, IOMMU(105)는 페이지 테이블 포인터들(115)에 액세스하고 요청 ID에 기초하여 VM에 대한 페이지 테이블 포인터를 식별한다. 블록(410)에서, IOMMU(105)는 페이지 테이블 포인터에 의해 나타내어지는 페이지 테이블 집합에 액세스하고, 페이지 테이블 집합을 사용하여 페이지 테이블 워크를 수행하여 메모리 액세스 요청의 가상 어드레스를 물리 어드레스로 변환한다. 블록(410)에서, IOMMU(105)는 물리 어드레스를 사용하여 메모리(110)에 액세스한다. 물리 어드레스는 메모리 액세스 요청과 연관된 VM에 할당된 영역에 위치된다. 이에 따라, 각 VM은 이의 대응하는 영역에만 액세스하여, 각 VM들의 데이터를 권한 없는 액세스로부터 보호한다.
도 5는 일부 실시 예들에 따라, 처리 시스템(100)이 인터럽트들을 핸들링하는 예를 도시하는 블록도이다. 도시된 예에서, 처리 시스템(100)은 호스트 OS(544), 게스트 OS(546), 및 게스트 OS(548)를 동시에 실행한다. OS들(544, 546, 및 548)각각은 처리 시스템(100)의 하나 이상의 처리기 코어들(도시되지 않음)에서 실행된다. 호스트 OS(544)는 일반적으로 처리 시스템(100)에 대한 애플리케이션 및 메모리 관리와 같은 운영 체제 기능들을 수행하도록 구성된 운영 체제이다. 게스트 OS들(544 및 546) 각각은 처리 시스템(100)에서 실행되는 상이한 대응하는 VM에 대한 운영 체제 기능들을 수행하도록 구성된다. 이에 따라, 예를 들어, 일부 실시 예들에서, 게스트 OS(546)는 VM(221)(도 2)에 의해 실행되는 운영 체제이고 게스트 OS(548)는 VM(222)에 의해 실행되는 운영 체제이다.
위에서 설명된 바와 같이, 일부 실시 예들에서, VM들(221 및 222) 각각은 그리기 작업들, 벡터 계산 작업들 등과 같은 실행을 위한 작업들을 GPU(102)에 할당한다. 이러한 작업들을 실행하는 과정에서, GPU(102)는 상태 정보와 같은 정보를 대응하는 VM에 비동기적으로 제공하기 위해 인터럽트들(예를 들어, 인터럽트(550))를 생성한다. 예를 들어, 일부 실시 예들에서, GPU(102)는 VM에 대한 지정된 태스크의 완료 시에 인터럽트를 생성하며, 인터럽트는 작업 또는 다른 상태 정보의 결과들을 나타내는 페이로드를 포함한다. 기존에, VM들을 동시에 실행하기 위한 인터럽트 핸들링은 호스트 OS를 통해, 또는 특수 하드웨어를 사용함으로써 라우팅된다. 예를 들어, 일부 처리 시스템들에서, 모든 인터럽트들은 먼저 호스트 OS에 제공되며, 이 호스트 OS는 인터럽트에 의해 타겟이 되는 VM을 식별하고, 식별된 VM에 인터럽트를 라우팅한다. 그러나, 이러한 접근법은 인터럽트 핸들링을 위한 비교적 높은 레이턴시를 초래한다.
기존 접근법들에 반해, 처리 시스템(100)은 호스트 OS(544)와 독립적으로, 게스트 OS들(546 및 548)에 대한 인터럽트들을 핸들링하는 데 매핑 테이블(542)및 인터럽트 핸들러(540)를 이용한다. 매핑 테이블(542)은 각 VMID에 대해, 대응하는 VFID를 나타내고, 또한 VFID에 할당된 메모리(110)(또는 처리 시스템(100)의 다른 메모리)의 영역을 나타낸다. GPU(102)에 의해 생성된 각 인터럽트는 인터럽트를 생성한 작업에 대응하는 VM을 식별하는 VMID를 포함한다. 인터럽트를 수신하는 것에 응답하여, 인터럽트 핸들러(540)는 매핑 테이블(542)에 액세스하여 VMID와 연관된 VFID, 및 VFID와 연관된 메모리 영역을 식별한다. 인터럽트 핸들링(540)은 실행 애플리케이션 또는 다른 모듈에의 제공을 위해 대응하는 게스트 OS에 의해 액세스되는, 나타내어진 메모리 영역에 인터럽트의 페이로드를 저장한다. 일부 실시 예들에서, 영역들은 초기화 단계 동안, 호스트 OS(544)에 의해 또는 처리 시스템(100)의 하이퍼바이저에 의해 VFID들에 할당되며, 이에 따라 각 VM(및 대응하는 게스트 OS)에 상이한 메모리 영역이 할당됨으로써, 게스트 OS가 VM을 타겟으로 하는 인터럽트들의 페이로드들에만 액세스한 것을 보장한다. 즉, 게스트 OS는 다른 VM들에 할당된 메모리 영역들을 "인식(aware)"하지 못하고, 이에 따라 다른 VM들에 대한 인터럽트 페이로드들에 액세스할 수 없으므로, 인터럽트 페이로드들을 부적절한 액세스로부터 보호한다. 일부 실시 예들에서, 인터럽트 페이로드는 IOMMU(105)를 통해 VM으로 라우팅되고, 인터럽트 그 자체 또는 이의 표시자는 상이한 테이블 집합(도시되지 않음) 및 다른 인터럽트 특정 메커니즘들을 사용하여 인터럽트를 VM에 주입하도록 IOMMU(105)에 제공된다.
일부 실시 예들에서, 인터럽트 핸들러(540)는 호스트 OS(544)와 독립적으로 게스트 OS들(546 및 548)에 대한 인터럽트들을 핸들링한다. 즉, 호스트 OS(544)는 게스트 OS들(546 및 548)로의 인터럽트들 또는 인터럽트 페이로드들의 제공을 핸들링하지 않는다. 이에 의해 처리 시스템(101)은 가상 기계들에 대한 인터럽트 핸들링과 연관된 레이턴시를 감소시킨다.
도 6은 일부 실시 예들에 따라, 호스트 OS와 독립적으로 처리 시스템에서 VM들에 대한 인터럽트들을 핸들링하는 방법(600)의 흐름도이다. 방법(600)은 도 1 및 도 5의 처리 시스템에서의 예시적인 구현에 대해 설명된다. 블록(602)에서, 인터럽트 핸들러(540)는 GPU(102)로부터 인터럽트(550)를 수신한다. 이에 응답하여, 블록(604)에서, 인터럽트 핸들러(540)는 인터럽트(550)에 포함된 VMID를 사용하여, 매핑 테이블(542)에 액세스한다. 매핑 테이블은 인터럽트와 연관된 VFID를 나타내고, 블록(606)에서 VFID에 대응하는 메모리 영역을 나타낸다. 블록(608)에서, 인터럽트 핸들러(540)는 나타내어진 메모리 영역에 인터럽트(550)의 데이터 페이로드를 저장하고, 인터럽트가 수신되었음을 VFID에 대응하는 게스트 OS에 나타낸다. 이에 응답하여, 게스트 OS는 메모리 영역에 저장된 데이터 페이로드에 액세스한다.
본 명세서에서 개시된 바와 같이, 일부 실시 예들에서, 방법은: 버스 디바이스로부터의 제1 메모리 액세스 요청을 입력/출력 메모리 관리 유닛(IOMMU)에서 수신하는 단계로서, 제1 메모리 액세스 요청은 제1 메모리 액세스 요청과 연관된 제1 가상 기계(VM)를 나타내는 제1 요청 식별자 및 제1 메모리 어드레스를 포함하는 것인, 제1 메모리 액세스 요청을 수신하는 단계; 및 IOMMU에서, 가상 메모리 식별자(VMID)를 가상 함수 식별자(VFID)에 매핑하는 것에 기초하여, 제1 가상 기계가 제1 메모리 어드레스와 연관된 메모리의 제1 영역에 액세스할 권한이 있다고 결정하는 것에 응답하여, 메모리에의 제1 메모리 액세스 요청을 충족시키는 단계를 포함하는, 방법. 일 양태에서, VMID를 VFID에 매핑하는 것은 제1 요청 식별자를 VFID에 매핑하는 것을 포함한다. 다른 양태에서, 제1 요청 식별자를 VFID에 매핑하는 것은 가상 함수들의 연결 리스트에 인덱싱하는 오프셋 값에 기초하여 매핑하는 것을 포함한다.
일 양태에서, 제1 요청 식별자를 VFID에 매핑하는 것은 가상 함수들의 연결 리스트에 인덱싱하는 스트라이드 값에 기초하여 매핑하는 것을 포함한다. 다른 양태에서, 스트라이드 값에 기초하여 제1 요청 식별자를 VFID에 매핑하는 것을 가상 함수에 대응하는 가상 함수 번호와 스트라이드 값을 곱하는 것을 포함한다. 또 다른 양태에서, 제1 요청 식별자는 디바이스 식별자를 위해 예비된 메모리 액세스 요청의 필드에 저장된다. 또 다른 양태에서, 방법은 버스 디바이스와 연관된 디바이스 드라이버에 기초하여 제1 요청 식별자를 식별하는 단계를 포함한다. 다른 양태에서, 방법은 매핑에 기초하여 페이지 테이블 집합에 액세스하는 단계를 포함한다. 또 다른 양태에서, 방법은 디바이스로부터의 제2 메모리 액세스 요청을 IOMMU에서 수신하는 단계로서, 제2 메모리 액세스 요청은 제2 메모리 액세스 요청과 연관된 제2 가상 기계(VM)를 나타내는 제2 요청 식별자 및 제2 메모리 어드레스를 포함하는 것인, 제2 메모리 액세스 요청을 수신하는 단계; 및 IOMMU에서, 가상 메모리 식별자(VMID)를 가상 함수 식별자(VFID)에 매핑하는 것에 기초하여, 제2 가상 기계가 제1 메모리 어드레스와 연관된 메모리의 제2 영역에 액세스할 권한이 있다고 결정하는 것에 응답하여, 메모리에의 제2 메모리 액세스 요청을 충족시키는 단계를 포함한다.
본 명세서에서 개시된 바와 같이, 일부 실시 예들에서, 방법은: 버스 디바이스로부터 인터럽트를 수신하는 것에 응답하여, 인터럽트와 연관된 가상 기계 식별자(VMID)를 가상 함수에 매핑하는 것에 기초하여 메모리 영역을 식별하는 단계; 및 메모리 영역에 인터럽트의 페이로드를 저장하는 단계를 포함한다. 일 양태에서, 방법은 게스트 운영 체제에 의해, 메모리 영역으로부터 페이로드를 검색하는 단계를 포함한다.
본 명세서에서 개시된 바와 같이, 일부 실시 예들에서, 프로세서는: 제1 가상 기계(VM)를 대신하여 워크로드들을 실행하기 위한 버스 디바이스; 및 입력/출력 메모리 관리 유닛(IOMMU)을 포함하며, IOMMU는: 버스 디바이스로부터 제1 메모리 액세스 요청을 수신하도록 구성되고 - 제1 메모리 액세스 요청은 제1 VM를 나타내는 제1 요청 식별자 및 제1 메모리 어드레스를 포함하는 것임 -; IOMMU에서, 가상 기계 식별자(VMID)를 가상 함수 식별자(VFID)에 매핑하는 것에 기초하여, 제1 가상 기계가 제1 메모리 어드레스와 연관된 메모리의 제1 영역에 액세스할 권한이 있다고 결정하는 것에 응답하여, 메모리에의 제1 메모리 액세스 요청을 충족시키도록 구성된다. 일 양태에서, IOMMU는 제1 요청 식별자를 VFID에 매핑함으로써 VMID를 VFID에 매핑하도록 구성된다. 다른 양태에서, IOMMU는 가상 함수들의 연결 리스트에 인덱싱하는 오프셋 값에 기초하여 매핑함으로써 제1 요청 식별자를 VFID에 매핑하도록 구성된다.
일 양태에서, IOMMU는 가상 함수들의 연결 리스트에 인덱싱하는 스트라이드 값에 기초하여 매핑함으로써 제1 요청 식별자를 VFID에 매핑하도록 구성된다. 다른 양태에서, IOMMU는 가상 함수에 대응하는 가상 함수 번호와 스트라이드 값을 곱함으로써 제1 요청 식별자를 VFID에 매핑하도록 구성된다. 또 다른 양태에서, 제1 요청 식별자는 디바이스 식별자를 위해 예비된 메모리 액세스 요청의 필드에 저장된다. 또 다른 양태에서, 버스 디바이스는 버스 디바이스와 연관된 디바이스 드라이버에 기초하여 제1 요청 식별자를 식별하도록 구성된다. 다른 양태에서, IOMMU는: 매핑에 기초하여 페이지 테이블 집합에 액세스하도록 구성된다. 또 다른 양태에서, IOMMU는 디바이스로부터 제2 메모리 액세스 요청을 수신하도록 구성되고 - 제2 메모리 액세스 요청은 제2 메모리 액세스 요청과 연관된 제2 가상 기계(VM)를 나타내는 제2 요청 식별자 및 제2 메모리 어드레스를 포함함 -; 제2 가상 기계가 제1 메모리 어드레스와 연관된 메모리의 제2 영역에 액세스할 권한이 있다고 결정하는 것에 응답하여, 메모리에의 제2 메모리 액세스 요청을 충족시키도록 구성된다.
일부 실시 예들에서, 상술된 기술들의 특정 양태들은 소프트웨어를 실행하는 처리 시스템의 하나 이상의 처리기에 의해 구현될 수 있다.  소프트웨어는 비일시적 컴퓨터 판독 가능한 저장 매체 상에 저장되거나 그 외 유형적으로 구현되는 실행 가능한 하나 이상의 명령어 집합을 포함한다.  소프트웨어는 하나 이상의 처리기에 의해 실행될 때, 하나 이상의 처리기를 조작하여 상술된 기술들의 하나 이상의 양태를 수행하는 명령어들 및 특정 데이터를 포함할 수 있다. 비일시적인 컴퓨터 판독 가능한 저장 매체는 예를 들어, 자기 또는 광학 디스크 저장 디바이스, 고체 상태 저장 디바이스들 이를테면 플래시 메모리, 캐시, 랜덤 액세스 메모리(RAM) 또는 다른 비휘발성 메모리 디바이스 또는 디바이스들 등을 포함할 수 있다. 비일시적인 컴퓨터 판독 가능한 저장 매체 상에 저장된 실행 가능한 명령어들은 소스 코드, 어셈블리 언어 코드, 객체 코드, 또는 하나 이상의 처리기에 의해 해석되거나 그 외 실행 가능한 다른 명령어 포맷으로 있을 수 있다.
일반적인 설명으로 상술된 모든 동작들 또는 요소들이 요구되지는 않을 수 있다는 것, 특정 동작 또는 디바이스의 일부가 요구되지 않을 수 있다는 것, 그리고 설명된 동작들 또는 요소들에 더하여, 하나 이상의 추가 동작이 수되거나 요소들이 포함될 수 있다는 것에 유념한다. 더 나아가, 동작들이 나열된 순서는 반드시 이것들이 수행되는 순서는 아니다. 또한, 개념들은 구체적인 실시 예들을 참조하여 설명되었다. 그러나, 해당 기술분야의 통상의 기술자는 아래 청구항들에 제시된 바에 따라 본 개시의 범위로부터 벗어나지 않고 다양하게 수정 및 변경될 수 있다는 것을 이해한다. 따라서, 본 명세서 및 도면들은 제한적인 의미가 아닌 예시적인 의미로 여겨져야 하고, 상기한 모든 수정이 본 개시의 범위 내에 포함되는 것으로 의도된다.
혜택들, 다른 이점들 및 문제들에 대한 솔루션들이 구체적인 실시 예들과 관련하여 상술되었다. 그러나, 혜택들, 이점들, 문제들에 대한 솔루션들 및 임의의 혜택, 이점, 또는 솔루션을 발생시키거나 더 확연히 드러낼 수 있는 임의의 특징(들)이 임의의 또는 모든 청구항들의 임계적, 필수적 또는 본질적 특징인 것으로 간주되지 않아야 한다. 또한, 위에서 개시된 특정 실시 예들은 개시된 주제가 본 명세서에서의 교시 내용의 혜택을 받는 해당 기술분야의 통상의 기술자들에게 명백한 상이하지만 균등한 방식들로 수정 및 실시될 수 있음에 따라 단지 예시적인 것일 뿐이다. 아래 청구항들에서 설명되는 것 이외에, 제시되는 본 명세서에서의 구성 또는 설계의 세부 사항들로 제한되도록 의도되지 않는다. 이에 따라 위에서 개시된 특정 실시 예들이 대체 또는 수정될 수 있고 모든 그러한 변형 예들은 개시된 주제의 범위 내인 것으로 고려된다는 것이 명백하다. 따라서, 본 명세서에서 추구되는 보호는 아래 청구항들에 제시되는 바에 따른다.

Claims (20)

  1. 방법으로서,
    버스 디바이스[102]로부터의 제1 메모리 액세스 요청을 입력/출력 메모리 관리 유닛(IOMMU, input/output memory management unit)[105]에서 수신하는 단계로서, 상기 제1 메모리 액세스 요청은 상기 제1 메모리 액세스 요청과 연관된 제1 가상 기계(VM, virtual machine)[221]를 나타내는 제1 요청 식별자[208] 및 제1 메모리 어드레스를 포함하는 것인, 상기 제1 메모리 액세스 요청을 수신하는 단계; 및
    상기 IOMMU에서, 가상 메모리 식별자(VMID, virtual memory identifier)를 가상 함수 식별자(VFID, virtual function identifier)에 매핑하는 것에 기초하여, 상기 제1 가상 기계가 제1 메모리 어드레스와 연관된 메모리의 제1 영역[111]에 액세스할 권한이 있다고 결정하는 것에 응답하여, 메모리[110]에의 상기 제1 메모리 액세스 요청을 충족시키는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 VMID를 상기 VFID에 매핑하는 것은 상기 제1 요청 식별자를 상기 VFID에 매핑하는 것을 포함하는 것인, 방법.
  3. 제2항에 있어서, 상기 제1 요청 식별자를 상기 VFID에 매핑하는 것은 가상 함수들의 연결 리스트(linked list)에 인덱싱하는 오프셋 값에 기초하여 매핑하는 것을 포함하는 것인, 방법.
  4. 제3항에 있어서, 상기 제1 요청 식별자를 상기 VFID에 매핑하는 것은 상기 가상 함수들의 연결 리스트에 인덱싱하는 스트라이드 값(stride value)에 기초하여 매핑하는 것을 포함하는 것인, 방법.
  5. 제4항에 있어서, 상기 스트라이드 값에 기초하여 상기 제1 요청 식별자를 상기 VFID에 매핑하는 것은 상기 가상 함수에 대응하는 가상 함수 번호와 상기 스트라이드 값을 곱하는 것을 포함하는 것인, 방법.
  6. 제1항에 있어서,
    상기 제1 요청 식별자는 디바이스 식별자를 위해 예비된 상기 메모리 액세스 요청의 필드에 저장되는 것인, 방법.
  7. 제1항에 있어서,
    상기 버스 디바이스와 연관된 디바이스 드라이버[332]에 기초하여 상기 제1 요청 식별자를 식별하는 단계를 더 포함하는, 방법.
  8. 제1항에 있어서,
    상기 매핑에 기초하여 페이지 테이블 집합[116]에 액세스하는 단계를 더 포함하는, 방법.
  9. 제1항에 있어서,
    상기 디바이스로부터의 제2 메모리 액세스 요청을 상기 IOMMU에서 수신하는 단계로서, 상기 제2 메모리 액세스 요청은 상기 제2 메모리 액세스 요청과 연관된 제2 가상 기계(VM)[222]를 나타내는 제2 요청 식별자[209] 및 제2 메모리 어드레스를 포함하는 것인, 상기 제2 메모리 액세스 요청을 수신하는 단계; 및
    상기 IOMMU에서, 가상 메모리 식별자(VMID)를 가상 함수 식별자(VFID)에 매핑하는 것에 기초하여, 상기 제2 가상 기계가 제1 메모리 어드레스와 연관된 메모리의 제2 영역[112]에 액세스할 권한이 있다고 결정하는 것에 응답하여, 상기 메모리에의 상기 제2 메모리 액세스 요청을 충족시키는 단계를 더 포함하는, 방법.
  10. 방법으로서,
    버스 디바이스[102]로부터 인터럽트[550]를 수신하는 것에 응답하여, 상기 인터럽트와 연관된 가상 기계 식별자(VMID)를 가상 함수에 매핑하는 것에 기초하여 메모리 영역[111]을 식별하는 단계; 및
    상기 메모리 영역에 상기 인터럽트의 페이로드를 저장하는 단계를 포함하는, 방법.
  11. 제10항에 있어서,
    게스트 운영 체제[506]에 의해, 상기 메모리 영역으로부터 상기 페이로드를 검색하는 단계를 더 포함하는, 방법.
  12. 처리기[101]로서,
    제1 가상 기계(VM)[221]를 대신하여 워크로드들을 실행하기 위한 버스 디바이스[102]; 및
    입력/출력 메모리 관리 유닛(IOMMU)[105]을 포함하며, 상기 IOMMU는:
    상기 버스 디바이스로부터 제1 메모리 액세스 요청[208]을 수신하도록 구성되고 - 상기 제1 메모리 액세스 요청은 상기 제1 VM를 나타내는 제1 요청 식별자[208] 및 제1 메모리 어드레스를 포함하는 것임 -;
    상기 IOMMU에서, 가상 기계 식별자(VMID)를 가상 함수 식별자(VFID)에 매핑하는 것에 기초하여, 상기 제1 가상 기계가 제1 메모리 어드레스와 연관된 메모리[110]의 제1 영역[111]에 액세스할 권한이 있다고 결정하는 것에 응답하여, 메모리에의 상기 제1 메모리 액세스 요청을 충족시키도록 구성되는 것인, 처리기.
  13. 제12항에 있어서, 상기 IOMMU는 상기 제1 요청 식별자를 상기 VFID에 매핑함으로써 상기 VMID를 상기 VFID에 매핑하도록 구성되는 것인, 처리기.
  14. 제13항에 있어서, 상기 IOMMU는 가상 함수들의 연결 리스트에 인덱싱하는 오프셋 값에 기초하여 매핑함으로써 상기 제1 요청 식별자를 상기 VFID에 매핑하도록 구성되는 것인, 처리기.
  15. 제14항에 있어서, 상기 IOMMU는 상기 가상 함수들의 연결 리스트에 인덱싱하는 스트라이드 값에 기초하여 매핑함으로써 상기 제1 요청 식별자를 상기 VFID에 매핑하도록 구성되는 것인, 처리기.
  16. 제15항에 있어서, 상기 IOMMU는 상기 가상 함수에 대응하는 가상 함수 번호와 상기 스트라이드 값을 곱함으로써 상기 제1 요청 식별자를 상기 VFID에 매핑하도록 구성되는 것인, 처리기.
  17. 제12항에 있어서,
    상기 제1 요청 식별자는 디바이스 식별자를 위해 예비된 상기 메모리 액세스 요청의 필드에 저장되는 것인, 처리기.
  18. 제12항에 있어서, 상기 버스 디바이스는:
    상기 버스 디바이스와 연관된 디바이스 드라이버[332]에 기초하여 상기 제1 요청 식별자를 식별하도록 구성되는 것인, 처리기.
  19. 제12항에 있어서, 상기 IOMMU는:
    상기 매핑에 기초하여 페이지 테이블 집합[115]에 액세스하도록 구성되는 것인, 처리기.
  20. 제12항에 있어서, 상기 IOMMU는:
    상기 디바이스로부터 제2 메모리 액세스 요청을 수신하도록 구성되고 - 상기 제2 메모리 액세스 요청은 상기 제2 메모리 액세스 요청과 연관된 제2 가상 기계(VM)[222]를 나타내는 제2 요청 식별자[209] 및 제2 메모리 어드레스를 포함함 -;
    상기 제2 가상 기계가 제1 메모리 어드레스와 연관된 메모리의 제2 영역[112]에 액세스할 권한이 있다고 결정하는 것에 응답하여, 상기 메모리에의 상기 제2 메모리 액세스 요청을 충족시키도록 구성되는 것인, 처리기.
KR1020217015856A 2018-10-31 2019-06-19 가상화된 컴퓨팅 환경에서의 보안 메모리 액세스 KR20210068587A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/176,431 2018-10-31
US16/176,431 US11836091B2 (en) 2018-10-31 2018-10-31 Secure memory access in a virtualized computing environment
PCT/US2019/037950 WO2020091850A1 (en) 2018-10-31 2019-06-19 Secure memory access in a virtualized computing environment

Publications (1)

Publication Number Publication Date
KR20210068587A true KR20210068587A (ko) 2021-06-09

Family

ID=70325396

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217015856A KR20210068587A (ko) 2018-10-31 2019-06-19 가상화된 컴퓨팅 환경에서의 보안 메모리 액세스

Country Status (6)

Country Link
US (1) US11836091B2 (ko)
EP (1) EP3874389A4 (ko)
JP (1) JP2022511670A (ko)
KR (1) KR20210068587A (ko)
CN (1) CN113168464A (ko)
WO (1) WO2020091850A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11599621B2 (en) * 2019-03-30 2023-03-07 Intel Corporation Apparatuses, methods, and systems for verification of input-output memory management unit to device attachment
US11301402B2 (en) * 2020-04-30 2022-04-12 Red Hat, Inc. Non-interrupting portable page request interface
US20220100532A1 (en) * 2020-09-25 2022-03-31 Intel Corporation Technology for transferring iommu ownership to a new version of system software
US11755512B2 (en) * 2021-08-17 2023-09-12 Red Hat, Inc. Managing inter-processor interrupts in virtualized computer systems
CN115659290B (zh) * 2022-11-07 2023-07-21 海光信息技术股份有限公司 代码保护系统、方法、虚拟系统、芯片及电子设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104335162B (zh) * 2012-05-09 2018-02-23 英特尔公司 使用多个页表的执行
JP6197585B2 (ja) 2013-11-01 2017-09-20 富士通株式会社 情報処理装置、及び、情報処理装置の制御方法
US9619387B2 (en) 2014-02-21 2017-04-11 Arm Limited Invalidating stored address translations
US9892037B2 (en) * 2014-12-29 2018-02-13 International Business Machines Corporation Efficient and secure direct storage device sharing in virtualized environments
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
US20180052776A1 (en) * 2016-08-18 2018-02-22 Qualcomm Incorporated Shared Virtual Index for Memory Object Fusion in Heterogeneous Cooperative Computing
US10140214B2 (en) 2016-08-29 2018-11-27 Red Hat Israel, Ltd. Hypervisor translation bypass by host IOMMU with virtual machine migration support
US10255202B2 (en) 2016-09-30 2019-04-09 Intel Corporation Multi-tenant encryption for storage class memory
US10176122B2 (en) 2016-10-19 2019-01-08 Advanced Micro Devices, Inc. Direct memory access authorization in a processing system
US10514943B2 (en) 2016-11-17 2019-12-24 Qualcomm Incorporated Method and apparatus for establishing system-on-chip (SOC) security through memory management unit (MMU) virtualization
US10489185B2 (en) * 2017-03-17 2019-11-26 Nicira, Inc. Hypervisor-assisted approach for locating operating system data structures based on attribute matching
US10339068B2 (en) 2017-04-24 2019-07-02 Advanced Micro Devices, Inc. Fully virtualized TLBs
US10776020B2 (en) * 2018-08-13 2020-09-15 Red Hat, Inc. Memory protection in virtualized computer systems using shadow page tables

Also Published As

Publication number Publication date
EP3874389A4 (en) 2022-08-03
EP3874389A1 (en) 2021-09-08
CN113168464A (zh) 2021-07-23
WO2020091850A1 (en) 2020-05-07
JP2022511670A (ja) 2022-02-01
US11836091B2 (en) 2023-12-05
US20200133878A1 (en) 2020-04-30

Similar Documents

Publication Publication Date Title
US11836091B2 (en) Secure memory access in a virtualized computing environment
TWI721060B (zh) 用於輸入/輸出裝置之可縮放虛擬化的位址轉譯設備、方法及系統
KR101782398B1 (ko) 보안된 가상 머신간 공유된 메모리 통신을 위한 기술
CN108027642B (zh) 用于隔离输入/输出计算资源的系统和方法
JP4668166B2 (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
WO2017024783A1 (zh) 一种虚拟化方法、装置和系统
US11599270B2 (en) Virtualized-in-hardware input output memory management
US10310974B2 (en) Systems and methods for input/output computing resource control
US20110197190A1 (en) Virtualization method and virtual machine
CN105980986B (zh) 用于虚拟化计算的装置和方法
US10853259B2 (en) Exitless extended page table switching for nested hypervisors
US10671419B2 (en) Multiple input-output memory management units with fine grained device scopes for virtual machines
US9459907B2 (en) Guest controlled malicious payload protection
US20170277632A1 (en) Virtual computer system control method and virtual computer system
US10592116B2 (en) Load stall interrupt
US10540292B2 (en) TLB shootdowns for low overhead
US11150928B2 (en) Hypervisor translation bypass
US9558364B2 (en) Computing machine, access management method, and access management program
US20220335109A1 (en) On-demand paging support for confidential computing
KR20120070326A (ko) 메모리 가상화 장치 및 방법
US20230185593A1 (en) Virtual device translation for nested virtual machines
US11860792B2 (en) Memory access handling for peripheral component interconnect devices
US8813075B2 (en) Virtual computer system and method of installing virtual computer system
US20230027307A1 (en) Hypervisor-assisted transient cache for virtual machines

Legal Events

Date Code Title Description
E902 Notification of reason for refusal