Венера Сиракузская
- 1 year ago
- 0
- 0
IOMMU ( англ. input/output memory management unit ) — блок управления памятью (MMU) для операций ввода-вывода. Так же как традиционный, процессорный блок управления памятью, который переводит виртуальные адреса, видимые процессором в физические, этот блок занимается трансляцией виртуальных адресов, видимых аппаратным устройством, в физические адреса. Некоторые IOMMU также позволяют задавать различные ограничения операций ввода-вывода для защиты от неправильно работающих устройств или для изоляции, например, при использовании виртуализации (см. VT-d ).
При наличии IOMMU у аппаратуры имеется возможность проводить DMA -операции не только по физическим адресам, но и по логическим (виртуальным). Такая возможность упрощает устройства, которым больше не нужно заботиться о поддержке DMA по разрывному (с точки зрения физических адресов) региону памяти (поддержка такого DMA в драйвере влечет за собой накладные расходы).
Недостатками использования IOMMU по сравнению с прямой физической адресацией памяти в DMA запросах являются:
IOMMU используется для прямой работы виртуализованных операционных систем с оборудованием основной системы. Наличие IOMMU для таких комбинаций позволяет повысить безопасность, производительность и упростить реализацию виртуальной машины. Примеры IOMMU для виртуализации на платформах x86/x86_64: и .
IOMMU всегда использовался на компьютерах Sun SPARC для шины SBus , также он использовался на компьютерах DEC Alpha для шины PCI .
Разновидностью IOMMU является AGP (Graphics Address Remapping Table, таблица преобразований графических адресов ).
Как правило, обычные PC-совместимые компьютеры не имели IOMMU (кроме AGP GART). Вместо этого все главнейшее периферийное оборудование где-то с конца 90х годов разрабатывалось с поддержкой chain DMA.
Тем не менее, широкое распространение гипервизоров виртуальных машин привело к включению поддержки IOMMU в «гостевые» ОС, такие, как Windows (API ядра Windows всегда поддерживал данную функцию, хотя обычно данная поддержка не реализовывалась).
Наличие такой поддержки в гостевой ОС при виртуализации самого устройства IOMMU сильно облегчает задачу эмуляции в гостевой ОС сложных устройств, использующих DMA, и повышает производительность и безопасность такой эмуляции.