다음을 통해 공유


GpuMmu 모델

이 문서에서는 Windows 10(WDDM 2.0)에서 도입된 GpuMmu 모델에 대해 설명합니다.

GpuMmu 모델에서 GPU에는 프로세스별 GPU 가상 주소를 실제 주소로 변환하는 자체 MMU(메모리 관리 단위)가 있습니다.

각 프로세스에는 개별 페이지 테이블을 사용하는 별도의 CPU 및 GPU 가상 주소 공간이 있습니다. VidMm(비디오 메모리 관리자)은 모든 프로세스의 GPU 가상 주소 공간을 관리합니다. VidMm 은 또한 할당, 증가, 업데이트, 상주 상태 보장 및 페이지 테이블 해제를 담당합니다. GPU MMU에서 사용하는 페이지 테이블의 하드웨어 형식은 VidMm 에 알려지지 않았으며 DPI(디바이스 드라이버 인터페이스)를 통해 추상화됩니다. 추상화는 고정 크기 페이지 테이블 및 크기 조정 가능한 루트 페이지 테이블을 포함하여 다단계 수준 변환을 지원합니다.

VidMm은 GPU 가상 주소 공간 및 기본 페이지 테이블을 관리하지만 VidMm은 할당에 GPU 가상 주소를 자동으로 할당하지 않습니다. 이 책임은 UMD(사용자 모드 드라이버)에 해당합니다.

VidMm 은 UMD에 다음 두 가지 주요 서비스를 제공합니다.

  • 메모리 할당 및 해제. UMD는 기존 할당 콜백을 통해 비디오 메모리를 할당하고 기존 할당 취소 콜백을 통해 해당 메모리를 해제할 수 있습니다. Allocate 는 UMD에 VidMm 할당을 위한 핸들을 반환합니다. GPU 엔진은 이 핸들에서 작동할 수 있습니다. 이러한 할당은 GPU 엔진이 할당 목록을 통해 액세스하고 처리할 수 있는 실제 비디오 메모리를 의미합니다.

  • GPU 가상 주소 공간 관리. 가상 모드에서 실행되는 엔진의 경우 GPU 가상 주소는 할당에 명시적으로 할당되어야 가상으로 액세스할 수 있습니다. 이를 위해 VidMm 은 GPU 가상 주소를 예약하거나 해제하고 특정 할당 범위를 프로세스의 GPU 가상 주소 공간에 매핑하는 UMD 서비스를 제공합니다. 이러한 서비스는 유연하며 프로세스 GPU 가상 주소 공간에 대한 UMD 세분화 제어를 허용합니다. UMD는 특정 GPU 가상 주소를 할당에 할당하거나 VidMm 이 사용 가능한 가상 주소를 자동으로 선택하도록 할 수 있으며, 최소 및 최대 GPU 가상 주소 제약 조건을 지정할 수 있습니다. 단일 할당에는 여러 GPU 가상 주소 매핑이 연결될 수 있으며, 서비스는 타일 리소스 계약을 구현하기 위해 UMD에 제공됩니다.

마찬가지로, 연결된 디스플레이 어댑터 구성에서 UMD는 GPU 가상 주소를 특정 할당 인스턴스에 명시적으로 매핑할 수 있습니다. 각 매핑에 대해 UMD는 매핑이 자체 또는 특정 피어 GPU에 대한 매핑인지 여부를 선택할 수 있습니다. 이 모델에서 할당에 할당된 CPU 및 GPU 가상 주소는 독립적입니다. UMD는 두 주소 공간 모두에서 동일하게 유지하거나 독립적으로 유지하도록 결정할 수 있습니다.

GPU 가상 주소는 DDI 인터페이스를 통해 고정된 4KB 페이지 세분성에서 논리적으로 관리됩니다. GPU 가상 주소는 메모리 세그먼트 또는 시스템 메모리에 상주하는 할당을 참조할 수 있습니다. 시스템 메모리는 4KB 물리적 세분성으로 관리되고 메모리 세그먼트는 드라이버에서 선택할 때 4KB 또는 64KB로 관리됩니다. 모든 VidMm 할당은 드라이버에서 선택한 페이지 크기의 배수로 정렬되고 크기가 조정됩니다.

잘못된 범위의 GPU 가상 주소에 액세스하면 액세스 위반이 발생하고 컨텍스트 및/또는 디바이스가 종료되어 액세스 오류가 발생합니다. 이러한 오류를 복구하기 위해 VidMm은 엔진 초기화를 시작합니다. 이 초기화가 실패하면, 어댑터 전체 타임아웃 감지 복구(TDR)로 승격됩니다.

GpuMmu 모델은 다음 다이어그램에 나와 있습니다.

해당 구성 요소 및 상호 작용이 있는 GpuMmu 모델을 보여 주는 다이어그램