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는 공유 페이지 테이블을 사용하여 주소 변환을 수행합니다. 이와 관련된 그림이 다음 다이어그램에 나와 있습니다.

WDDM 2.0의 IOMMU 프로세스 주소 공간 변환을 보여 주는 다이어그램

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

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

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

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

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