Поделиться через


Модель IoMmu

На этой странице описывается модель IoMmu , представленная в WDDM 2.0. Дополнительные сведения о последних обновлениях IOMMU см. в разделе изоляции GPU на основе IOMMU и переназначивания IOMMU DMA.

Обзор

Единица управления памятью ввода-вывода (IOMMU) — это аппаратный компонент, который подключает шину ввода-вывода с поддержкой DMA к системной памяти. Он сопоставляет видимые устройства виртуальные адреса с физическими адресами, что делает его полезным в виртуализации.

В модели WDDM 2.0 IoMmu каждый процесс имеет одно виртуальное адресное пространство, то есть:

  • Общий доступ между ЦП и GPU.
  • Управляется диспетчером памяти ОС.

Для доступа к памяти GPU отправляет запрос данных в соответствующий IOMMU. Запрос включает общий виртуальный адрес и идентификатор адресного пространства процесса (PASID). IOMMU выполняет преобразование адресов с помощью общей таблицы страницы. Это действие показано на следующей схеме.

Схема преобразования адресного пространства процесса IOMMU в WDDM 2.0.

Драйвер отображения в режиме ядра (KMD) выражает поддержку модели IoMmu, задав DXGK_VIDMMCAPS::IoMmuSupported caps. Если этот флаг установлен, диспетчер памяти видео (VidMm) автоматически регистрирует любой процесс с помощью GPU с IOMMU и получает PASID для этого адресного пространства процесса. PASID передается драйверу во время создания устройства.

VidMm сопоставляет основные выделения в сегмент диафрагмы перед отображением, обеспечивая физический доступ контроллера дисплея к этим выделениям.

В модели IoMmu драйвер отображения пользовательского режима (UMD) продолжает выделять память видео для GPU с помощью службы "Выделение VidMm". Этот процесс позволяет UMD:

  • Следуйте модели расположения.
  • Поддержка модели общего доступа к ресурсам DirectX.
  • Убедитесь, что первичные поверхности видны ядру и сопоставляются с диафрагмой перед отображением.

UMD полностью управляет первым уровнем перевода (адрес ресурса плитки на общий адрес ЦП или GPU) в пользовательском режиме.