Диафрагма узла ЦП
Для 32-разрядных дискретных графических процессоров (GPU) ОС, которые не поддерживают изменяемый размер BAR или при сбое изменения размера буфера кадров, модель драйвера дисплея Windows (WDDM) версии 2 будет предлагать альтернативный механизм, с помощью которого можно эффективно получить доступ к дискретной виртуальной памяти GPU. Для GPU, которые поддерживают программируемое адресное пространство BAR, в WDDM версии 2 появилась новая функция Апертура узла ЦП, чтобы абстрагировать эту функцию.
При предоставлении диафрагмы узла ЦП драйвер режима ядра заполняет новую структуру DXGK_CPUHOSTAPERTURE caps для каждого сегмента, поддерживающего диафрагму узла ЦП. Это определяет размер диафрагмы узла ЦП, что позволяет драйверу резервировать часть bar для внутренних целей. Размер страницы совпадает со страницами GPU сегмента памяти.
Затем драйвер режима ядра предоставляет два новых интерфейса драйвера устройства (DDI) для управления адресным пространством BAR, в частности DxgkDdiMapCpuHostAperture и DxgkDdiUnmapCpuHostAperture.
Память для таблицы страниц за диафрагмой узла ЦП управляется драйвером и настраивается на раннем этапе во время инициализации драйвера. Ожидается, что dxgkDdiMapCpuHostAperture и DxgkDdiUnmapCpuHostAperture будут работать сразу после перечисления сегментов и используются во время инициализации диспетчера видеопамяти для сопоставления виртуального адреса ЦП с каталогом страниц и таблицей страниц процесса разбиения по страницам системы во время инициализации адаптера.
Когда требуется доступ ЦП к сегменту памяти, диспетчер видеопамяли резервирует страницы в диафрагме узла ЦП и сопоставляет через нее страницы сегментов памяти. Это показано на рисунке ниже.
В конфигурации связанного видеоадаптера все выглядит аналогично, за исключением следующего.
- Выделение по умолчанию или LinkMirrored всегда сопоставляются с GPU0.
- Выделение LinkInstanced имеет виртуальный диапазон адресов AllocationSize*NumberOfGPUInLink , связанный с ними, при этом различные части выделения сопоставляются с разными GPU.
Это показано ниже: