IoMmu 모델

이 페이지에서는 WDDM 2.0에 도입된 IoMmu 모델을 설명합니다. 최신 IOMMU 업데이트는 IOMMU 기반 GPU 격리IOMMU DMA 다시 매핑 을 참조하세요.

개요

Input-Output IOMMU(메모리 관리 단위)는 DMA 지원 I/O 버스를 시스템 메모리에 연결하는 MMU 구성 요소입니다. 디바이스에서 볼 수 있는 가상 주소를 실제 주소에 매핑하므로 가상화에 유용합니다.

WDDM 2.0 IoMmu 모델에서 각 프로세스에는 CPU와 GPU 간에 공유되고 OS 메모리 관리자가 관리하는 단일 가상 주소 공간이 있습니다.

메모리에 액세스하기 위해 GPU는 규격 IOMMU에 데이터 요청을 보냅니다. 요청에는 공유 가상 주소 및 PASID(프로세스 주소 공간 식별자)가 포함됩니다. IOMMU는 공유 페이지 테이블을 사용하여 주소 번역을 수행합니다. 이와 관련된 그림이 다음 다이어그램에 나와 있습니다.

iommu process address space translation.

커널 모드 드라이버는 DXGK_VIDMMCAPS::IoMmuSupported 대문자를 설정하여 IoMmu 모델에 대한 지원을 표현합니다. 이 플래그가 설정되면 비디오 메모리 관리자는 IOMMU와 함께 GPU를 사용하여 모든 프로세스를 자동으로 등록하고 해당 프로세스 주소 공간에 대한 PASID 를 가져옵니다. PASID는 디바이스를 만드는 동안 드라이버에 전달됩니다.

기본 할당은 표시되기 전에 비디오 메모리 관리자가 조리개 세그먼트에 매핑하여 디스플레이 컨트롤러가 이러한 할당에 물리적으로 액세스할 수 있도록 합니다.

IoMmu 모델에서 사용자 모드 드라이버는 비디오 메모리 관리자의 할당 서비스를 사용하여 GPU에 대한 비디오 메모리를 계속 할당 합니다. 이렇게 하면 사용자 모드 드라이버가 다음을 수행할 수 있습니다.

  • 상주 모델을 따릅니다.
  • Microsoft DirectX 리소스 공유 모델을 지원합니다.
  • 기본 표면이 커널에 표시되고 표시되기 전에 조리개에 매핑되는지 확인합니다.

첫 번째 번역 수준(공유 CPU/GPU주소에 대한 타일 리소스 주소)은 사용자 모드 드라이버에 의해 사용자 모드에서 완전히 관리됩니다.