Что такое Mappable и Non-mappable Memeory

Я прослеживаю некоторый пример кода и наткнулся на функцию ( ID3D11DeviceContext:: UpdateSubresource), с помощью которой "ЦП копирует данные из памяти в подресурс, созданный в не отображаемой памяти ".

Физически и / или логически, каковы упрощенные определения отображаемой памяти?

Аналогично, каковы упрощенные определения не отображаемой памяти?

Я нашел много подробной (с точки зрения начинающего) информации по теме карт памяти и добавил ее в свой список чтения. Я прочитал некоторую основную информацию, которая объясняет, что и почему карты памяти. Как сказал один сайт: "Расположение файлов в памяти компьютера сохраняется в виртуальном файле, известном как карта памяти".

У меня проблемы с подключением этих определений и понятий к терминам отображаемой / не отображаемой памяти.

Я получаю немного помощи от моих друзей.

3 ответа

Mappable memory - это то, к чему вы можете получить доступ непосредственно из вашей программы через отображение виртуальной памяти.

Если память вашей графической карты не отображена в памяти, вам нужно как-то отдать распоряжение карте загрузить ее из вашего адресного пространства в ее адресное пространство. Который включает в себя копирование.

Если память карты была разделена или отображена, процессор мог напрямую записывать в общую память, избегая при этом ненужного копирования.

Для графики в основном четыре вида памяти:

  • Выделенная видеопамять: это память, которая может использоваться только графической картой, поскольку она физически расположена на самой графической части. GPU может получить к нему доступ, CPU не может. Значение DXGI_ADAPTER_DESC.DedicatedVideoMemory количество такого вида памяти.

  • Выделенная системная память: в случае встроенной графической части часть основной системной памяти отводится во время загрузки для выделенного графического использования. Процессор заблокирован от доступа к нему, и он используется исключительно графическим процессором. DXGI_ADAPTER_DESC.DedicatedSystemMemory количество такого вида памяти.

  • Совместно используемая системная память: это обычная основная память, которая находится в режиме, доступном как для графического, так и для центрального процессора. Обычно это достигается через что-то вроде апертуры памяти PCIe. DXGI_ADAPTER_DESC.SharedSystemMemory количество такого вида памяти.

  • Остальная часть системной памяти недоступна для GPU, только для CPU. Графические процессоры обычно не могут адресовать более 4 ГБ общей памяти между всеми тремя типами.

Так что для дискретной графической части, DedicatedVideoMemory это что-то вроде 1 ГБ, SharedSystemMemory что-то вроде 256 МБ или больше, и DedicatedSystemMemory это 0.

Для интегрированной части, DedicatedVideoMemory небольшое число (16 МБ или 32 МБ) или даже 0, DedicatedSystemMemory составляет 256 МБ или 512 МБ, и SharedSystemMemory 256 МБ или больше.

Существуют также системы "Унифицированная архитектура памяти", такие как Xbox One, где имеется небольшое количество DedicatedVideoMemory и по существу вся основная память также SharedSystemMemory,

"Mappable" память относится к общей системной памяти. Если связанный ресурс DEFAULT тогда вы не можете отобразить его, потому что ему разрешено находиться в выделенной видеопамяти. DYNAMIC ресурс помещается в общую системную память. STAGING ресурс распределяется в части "остальная часть системной памяти".

Посмотрите пример видеопамяти DirectX.

Отображение памяти - это термин, обозначающий присвоение адресов памяти чему-либо. Это может быть что-то вроде аппаратных регистров для интерфейса USB или расположения в файле.

Файл отображения памяти - это файл, к которому можно получить доступ, как если бы он был в памяти, как огромный массив. Некоторые операционные системы предоставляют функциональность для этого, на других платформах программист должен смоделировать это поведение.

Имейте в виду, что ОСРВ обычно контролирует доступ к ячейкам памяти, включая те, которые отображены в памяти. То, что что-то отображено в памяти (например, порт I2C), не означает, что ваша программа пространства пользователя может получить к ней доступ напрямую.

Другие вопросы по тегам