Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье содержатся сведения об управлении виртуальной памятью GPU, начиная с Windows 10 (WDDM 2.0). В нем описывается, почему WDDM 2.0 была изменена для поддержки виртуальной адресации GPU и как драйверы ее используют.
Введение
До WDDM 2.0 интерфейс драйвера устройства (DDI) был создан таким образом, что движки GPU должны были обращаться к памяти через физические адреса сегмента. Так как сегменты были общими для приложений и перераспределенные, ресурсы перераспределялись в течение времени их существования, и их назначенные физические адреса изменялись. Этот процесс требовал отслеживания ссылок на память внутри буферов команд посредством списков выделения памяти и мест исправлений. Затем эти буферы должны быть исправлены с правильной ссылкой на физическую память перед отправкой в обработчик GPU. Это отслеживание и исправление было дорогостоящим. По сути, он ввел модель планирования, в которой диспетчер памяти видео (VidMm) должен был проверить каждый пакет, прежде чем он может быть отправлен в подсистему.
Со временем больше поставщиков оборудования перешли к модели планирования на основе оборудования. В этой модели работа отправляется на GPU непосредственно из пользовательского режима, а GPU управляет различными очередями работы. Эта эволюция привела к необходимости устранить потребность в проверке и исправлении каждого буфера команд перед отправкой на графический процессор.
Для этого WDDM поддерживает виртуальную адресацию GPU, начиная с WDDM 2.0. В этой модели каждый процесс получает уникальное пространство виртуального адреса GPU (GPUVA), в которое может выполняться каждый контекст GPU. Выделение, созданное или открытое процессом, получает уникальный виртуальный адрес GPU (GPUVA) в виртуальном адресном пространстве GPU этого процесса. Эта назначенная GPUVA остаётся постоянной и уникальной в течение всего периода выделения. Таким образом, драйвер отображения в пользовательском режиме (UMD) может обращаться к выделениям, используя их виртуальный адрес в GPU, не беспокоясь о том, что базовая физическая память изменится в течение эксплуатации.
Отдельные подсистемы GPU могут работать в физическом или виртуальном режиме:
В физическом режиме модель планирования остается той же, что и с WDDM версии 1.x. UMD продолжает создавать списки распределения ресурсов и расположения исправлений. Эти списки выделения отправляются вместе с буфером команд и используются для подстановки буферов команд в фактические физические адреса перед отправкой в движок.
В виртуальном режиме подсистема ссылается на память с помощью виртуальных адресов GPU. UMD создает буферы команд непосредственно из пользовательского режима и использует новые службы для отправки этих команд в ядро. UMD не создает списки распределения или размещения исправлений, хотя она по-прежнему отвечает за управление расположением выделений. Дополнительные сведения об местонахождении водителя см. в разделе " Место жительства водителя" в WDDM 2.0.
Модели памяти GPU
WDDM версии 2 поддерживает две разные модели для виртуальной адресации GPU, GpuMmu и IoMmu. Драйвер должен принять участие в поддержке любой из моделей или обоих моделей. Один узел GPU может поддерживать оба режима одновременно.
Модель GpuMmu
В модели GpuMmu VidMm управляет единицей управления памятью GPU и базовыми таблицами страниц. VidMm также предоставляет UMD службы, которые позволяют управлять отображением виртуальных адресов GPU на выделенные ресурсы. GpuMmu подразумевает, что GPU использует таблицы страниц GPU для доступа к данным. Таблицы страниц могут указывать на системную память или локальную память устройства.
Дополнительные сведения см. в разделе "Модель GpuMmu".
Модель IoMmu
В модели IoMmu ЦП и GPU используют общие адресные пространства и таблицы страниц ЦП. В данном случае доступна только системная память, поэтому IoMmu подходит для интегрированных ГПУ. IoMmu предоставляет более простую модель программирования, где GPU и ЦП могут использовать один и тот же указатель для доступа к памяти. Нет необходимости управлять отдельным набором таблиц страниц в памяти с поддержкой GPU. Тем не менее модель IoMmu может привести к снижению производительности из-за затрат на перевод адресов и управление.
Дополнительные сведения см. в модели IoMmu.