GpuMmu 모델

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

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

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

비디오 메모리 관리자는 사용자 모드 드라이버에 두 가지 서비스 집합을 제공합니다. 먼저 사용자 모드 드라이버는 기존 할당 콜백을 통해 비디오 메모리를 할당하고 기존 할당 취소 콜백을 통해 해당 메모리를 해제할 수 있습니다. 현재와 마찬가지로 GPU 엔진에서 작동할 수 있는 비디오 메모리 관리자 할당에 대한 핸들을 사용자 모드 드라이버에 반환합니다. 이러한 할당은 할당의 물리적 부분만 나타내며 할당 목록 참조를 통해 물리적으로 작동하는 엔진에서 참조할 수 있습니다.

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

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

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

잘못된 범위의 GPU 가상 주소에 액세스하면 액세스 위반이 발생하고 액세스 오류가 발생한 컨텍스트 및/또는 디바이스가 종료됩니다. 이러한 오류를 복구하기 위해 비디오 메모리 관리자는 엔진 재설정을 시작합니다. 실패하면 어댑터 TDR(Wide Timeout Detection Recovery)으로 승격됩니다.

GpuMmu 모델은 다음과 같습니다.

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