Найти в Дзене
Данил Волокитин

Разбор спецификации AMD IOMMU часть вторая

Модели использования
Обсуждаются семь моделей, чтобы подчеркнуть потенциальное использование IOMMU в традиционных и виртуализированных системах. Эти модели использования могут повысить безопасность и стабильность системы. Замена GART
GART — это системное средство AMD64, которое выполняет физический перевод адресов памяти в графической апертуре. GART был определен, чтобы позволить сложным графическим объектам, таким как текстурные карты, отображаться графическому сопроцессору так, как если бы они были расположены на смежных страницах памяти, даже если в большинстве операционных систем они фактически разбросаны по случайно распределенным страницам. GART преобразует все обращения к графической апертуре, включая загрузку и сохранение, выполняемые главным процессором, а также операции чтения и записи в памяти, выполняемые устройствами ввода-вывода. Транслируются только те доступы, системные физические адреса которых находятся в пределах апертуры GART; однако результатом тран

Модели использования

Обсуждаются семь моделей, чтобы подчеркнуть потенциальное использование IOMMU в традиционных и виртуализированных системах. Эти модели использования могут повысить безопасность и стабильность системы.

Замена GART

GART — это системное средство AMD64, которое выполняет физический перевод адресов памяти в графической апертуре. GART был определен, чтобы позволить сложным графическим объектам, таким как текстурные карты, отображаться графическому сопроцессору так, как если бы они были расположены на смежных страницах памяти, даже если в большинстве операционных систем они фактически разбросаны по случайно распределенным страницам. GART преобразует все обращения к графической апертуре, включая загрузку и сохранение, выполняемые главным процессором, а также операции чтения и записи в памяти, выполняемые устройствами ввода-вывода. Транслируются только те доступы, системные физические адреса которых находятся в пределах апертуры GART; однако результатом трансляции может быть любой физический адрес системы.

Чтобы настроить эквивалентные преобразования для доступа, инициируемого устройством ввода-вывода, ОС хоста должна:

• Построить таблицы страниц ввода-вывода, определяющие желаемые переводы.
• Сделать запись в таблице устройств, указывающую на вновь созданные таблицы страниц ввода-вывода.
• Сообщить IOMMU о новой обновленной записи в таблице устройств.

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

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

Поскольку IOMMU не предлагает никаких средств для возобновления доступа устройства к несопоставленным или защищенным адресам, все страницы, к которым может получить доступ устройство, должны быть сопоставлены с соответствующими разрешениями. В этом отношении IOMMU аналогичен GART.

Замена механизма вектора исключения устройств

Вектор исключения устройств (DEV) — это базовый механизм безопасности, который был представлен в архитектуре безопасной виртуальной машины AMD64 (SVM). Как и IOMMU, DEV позволяет классифицировать устройства ввода-вывода по различным доменам. С каждым доменом связан битовый вектор, индексированный по адресу физической страницы, указывающий, разрешен ли устройствам ввода-вывода в этом домене доступ к соответствующей физической странице.
IOMMU обеспечивает защиту и перевод. Если требуется только защита, программное обеспечение может создать таблицы страниц ввода-вывода с сопоставлением идентификаторов, которые определяют желаемую защиту.

Сопоставление 32-битных и 64-битных устаревших устройств ввода-вывода

С появлением большой физической памяти устаревшие 32-разрядные устройства, использующие DMA, больше не могут произвольно обращаться к системной памяти. Это усложняет операционные системы, которые должны вводить различие между малой и высокой памятью и выполнять соответствующий учет, чтобы гарантировать, что устаревшим устройствам ввода-вывода будет дана команда выполнять передачу только с использованием малой памяти. Цена – это не просто сложность; Например, для выполнения передачи из устаревшего устройства ввода-вывода в верхнюю память операционная система обычно выделяет буфер возврата в нижней памяти, выполняет передачу в нижней памяти, а затем копирует результат в реальное место назначения в верхней памяти. Для устройств ввода-вывода с высокой пропускной способностью, таких как контроллеры дисков и сетевые интерфейсы, затраты на производительность при выделении и копировании буфера возврата могут быть высокими.

В некоторых операционных системах для решения этой проблемы используется GART. Когда ОС желает выполнить передачу между устаревшим устройством ввода-вывода и верхней памятью, она выделяет часть апертуры GART и отображает эти страницы в верхнюю память. Затем он дает команду устройству ввода-вывода выполнить передачу, используя адрес в апертуре GART, который должен находиться в нижней памяти. Хотя этот подход позволяет избежать затрат на копирование буферных копий, он менее чем желателен, поскольку относительно небольшая апертура GART должна использоваться всеми устаревшими устройствами ввода-вывода и любыми графическими процессорами в системе. Драйверы устройств имеют дополнительные накладные расходы на блокировку и синхронизацию, связанные с выделением и освобождением страниц в апертуре GART, и производительность системы может ухудшиться из-за ожидания сериализации, пока апертура GART не станет доступной.

IOMMU предлагает лучшее решение. Во-первых, трансляция IOMMU применяется ко всему диапазону адресов, которые может генерировать устройство ввода-вывода, вместо того, чтобы требовать, чтобы передача данных в большую память отображалась только в узком диапазоне адресов GART. Более того, способность IOMMU назначать каждое устройство ввода-вывода в отдельный домен означает, что интенсивно используемым устройствам ввода-вывода могут быть предоставлены собственные наборы таблиц страниц ввода-вывода, и им не придется конкурировать с другими устройствами ввода-вывода за распределение. и освобождение страниц ввода-вывода.