Введение

Конфигурация в вычислительной технике В вычислительной технике блок управления памятью ввода-вывода (IOMMU) - это блок управления памятью (MMU), соединяющий шину ввода-вывода (I/O) с возможностью прямого доступа к памяти (DMA) с основной памятью. Как и традиционный MMU, который переводит виртуальные адреса CPU в физические адреса, IOMMU отображает виртуальные адреса устройств (также называемые адреса устройств или адреса ввода-вывода с отображением памяти в этом контексте) в физические адреса. Некоторые устройства также обеспечивают защиту памяти от неисправных или вредоносных устройств. Примером IOMMU является таблица ремапинга графических адресов (GART), используемая графическими картами AGP и PCI Express на компьютерах Intel Architecture и AMD. На архитектуре x86, до разделения функциональности northbridge и southbridge между CPU и Platform Controller Hub (PCH), виртуализация ввода-вывода выполнялась не CPU, а чипсетом.

Виртуализация

Когда операционная система работает внутри виртуальной машины, включая системы, использующие паравиртуализацию, такие как Xen и KVM, она обычно не знает физические адреса хоста памяти, к которой она имеет доступ. Это затрудняет обеспечение прямого доступа к компьютерному оборудованию, потому что если гостевая ОС попытается инструктировать аппаратное обеспечение выполнять прямой доступ к памяти (DMA) с использованием физических адресов гостя, это, вероятно, повредит память, поскольку аппаратное обеспечение не знает о сопоставлении между физическими адресами гостя и хоста для данной виртуальной машины. Коррупции можно избежать, если гипервизор или хост ОС вмешивается в операцию ввода/вывода для применения переводов. Однако этот подход приводит к задержке ввода/вывода. IOMMU решает эту проблему, пересматривая адреса, доступ к которым имеет аппаратное обеспечение, в соответствии с той же (или совместимой) таблицей перевода, которая используется для отображения физического адреса гостя на физические адреса хоста.

Опубликованные спецификации

AMD опубликовала спецификацию технологии IOMMU, названную AMD Vi. IBM предлагала расширенную поддержку программ управления: виртуальный режим хранения (ECPS: VSE) на своей линии 43xx; программы канала использовали виртуальные адреса. Intel опубликовала спецификацию технологии IOMMU как Технология виртуализации для направленных вводов и выводов, сокращенно VT d. Информация о Sun IOMMU была опубликована в разделе Доступ к виртуальной памяти устройства (DVMA) в Solaris Developer Connection. IBM Translation Control Entry (TCE) описан в документе под названием Logical Partition Security в IBM eServer pSeries 690. В PCI SIG есть соответствующая работа в рамках терминов Single Root I/O Virtualization (SR IOV) и Address Translation Services (ATS). Раньше они были охвачены отдельными спецификациями, но с PCI Express 5.0 были переведены в базовую спецификацию PCI Express. ARM определяет свою версию IOMMU как System Memory Management Unit (SMMU) для дополнения своей архитектуры виртуализации.