Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается модель GpuMmu , представленная в Windows 10 (WDDM 2.0).
В модели GpuMmu GPU имеет собственную единицу управления памятью (MMU), которая преобразует виртуальные адреса GPU для каждого процесса в физические адреса.
Каждый процесс имеет отдельные виртуальные адресные пространства ЦП и GPU, использующие отдельные таблицы страниц. Диспетчер памяти видео (VidMm) управляет виртуальным адресным пространством GPU всех процессов. VidMm также отвечает за выделение, увеличение, обновление, обеспечение расположения и освобождение таблиц страниц. Аппаратный формат таблиц страниц, используемых MMU GPU, неизвестен VidMm и абстрагируется через интерфейсы драйверов устройств (DDIs). Абстракция поддерживает многоуровневую трансляцию, включая таблицу страниц фиксированного размера и таблицу корневых страниц с изменяемым размером.
Хотя VidMm отвечает за управление виртуальным адресным пространством GPU и его базовыми таблицами страниц, VidMm не назначает виртуальные адреса GPU выделениям памяти. Эта ответственность относится к драйверу пользовательского режима (UMD).
VidMm предлагает две основные службы для UMD:
Выделение памяти и распределение сделки. UMD может выделить видеопамять через существующий обратный вызов Allocate и освободить эту память с помощью существующего обратного вызова Deallocate. Выделение возвращает дескриптор выделения VidMm в UMD. Движок GPU может работать с этим объектом. Такое выделение относится специально к физической памяти видео, к которой обработчик GPU может получить доступ и обрабатывать через список выделения.
Управление виртуальным адресным пространством GPU. Для движков, работающих в виртуальном режиме, виртуальный адрес GPU должен быть явно назначен распределению, прежде чем к нему можно будет получить виртуальный доступ. Для этого VidMm предоставляет службам UMD возможность резервировать или освобождать виртуальные адреса GPU, а также отображать определенные диапазоны распределения в виртуальное адресное пространство GPU процесса. Эти сервисы являются гибкими и позволяют UMD детально контролировать виртуальное адресное пространство GPU процесса. UMD может решить либо назначить определенный виртуальный адрес GPU выделению, либо позволить VidMm автоматически выбрать доступный, при необходимости указав некоторые минимальные и максимальные ограничения виртуального адреса GPU. Одно выделение может иметь несколько сопоставлений виртуальных адресов GPU, а службы предоставляются в UMD для реализации контракта ресурса плитки.
Аналогичным образом, в конфигурации связанного графического адаптера UMD может явно сопоставить виртуальные адреса графического процессора с определенными экземплярами выделения. Для каждого сопоставления UMD может выбрать, должно ли сопоставление выполняться к самому себе или к определенному одноранговому GPU. В этой модели виртуальные адреса ЦП и GPU, назначенные выделению, независимы. UMD может решить сохранить их в обоих адресных пространствах или сохранить их независимо.
Виртуальные адреса GPU управляются логически с фиксированной гранулярностью страницы 4 КБ через интерфейс DDI. Виртуальные адреса GPU могут ссылаться на объекты выделения, которые находятся в памяти сегмента или системной памяти. Системная память управляется с 4 КБ физической степенью детализации, а сегменты памяти управляются с 4 КБ или 64 КБ по выбору драйвера. Все выделения VidMm выровнены, и их размер должен быть кратным размеру страницы, выбранной драйвером.
Доступ к недопустимому диапазону виртуальных адресов GPU приводит к нарушению доступа и прекращению контекста и (или) устройства, вызвавшего сбой доступа. Чтобы восстановиться после такой ошибки, VidMm инициирует сброс движка, который переводится в широкодиапазонное восстановление после тайм-аута адаптера (TDR), если это не удается.
Модель GpuMmu показана на следующей схеме: