WikiDer > Блок управления памятью ввода-вывода

Input–output memory management unit
Сравнение блока управления памятью ввода-вывода (IOMMU) с блок управления памятью (MMU).

В вычисление, блок управления памятью ввода-вывода (IOMMU) это блок управления памятью (MMU), который соединяет прямой доступ к памяти–Возможный (с поддержкой DMA) ввод / вывод автобус к основная память. Как традиционный MMU, который переводит ЦПУ-видимый виртуальные адреса к физические адреса, IOMMU сопоставляет видимые устройством виртуальные адреса (также называемые адреса устройств или же Адреса ввода / вывода в данном контексте) на физические адреса. В некоторых номерах также есть защита памяти с неисправных или вредоносных устройств.

Примером IOMMU является таблица переназначения графических адресов (GART) используется AGP и PCI Express видеокарты на компьютерах с архитектурой Intel и AMD.

На архитектуре x86 до разделения функциональности Северный мост и южный мост между процессором и Концентратор контроллера платформы (PCH) виртуализация ввода-вывода выполнялась не ЦП, а чипсет.[1][2]

Преимущества

Преимущества наличия IOMMU по сравнению с прямой физической адресацией памяти (DMA) включают:[нужна цитата]:

  • Большие области памяти могут быть выделены без необходимости быть смежными в физической памяти - IOMMU сопоставляет непрерывные виртуальные адреса с лежащими в основе фрагментированными физическими адресами. Таким образом, использование векторный ввод / вывод (разбросать списки) иногда можно избежать.
  • Устройства, которые не поддерживают адреса памяти, достаточно длинные для адресации всей физической памяти, могут адресовать всю память через IOMMU, избегая накладных расходов, связанных с копированием буферов в и из адресуемого пространства памяти периферийного устройства.
    • Например, компьютеры x86 могут адресовать более 4 гигабайт памяти с помощью Расширение физического адреса (PAE) в процессоре x86. Тем не менее, обычное 32-битное устройство PCI просто не может адресовать память выше границы 4 ГиБ и, следовательно, не может получить к ней прямой доступ. Без IOMMU операционная система должна была бы реализовать трудоемкий буферы отказов (также известные как двойные буферы[3]).
  • Память защищена от вредоносных устройств, которые пытаются DMA атаки и неисправные устройства, которые пытаются выполнить ошибочную передачу памяти, потому что устройство не может читать или записывать в память, которая не была явно выделена (отображена) для него. Защита памяти основана на том факте, что ОС, работающая на ЦП (см. Рисунок), исключительно управляет как MMU, так и IOMMU. Устройства физически не могут обойти или повредить настроенные таблицы управления памятью.
    • В виртуализация, гость операционные системы могут использовать оборудование, не предназначенное специально для виртуализации. Более производительное оборудование, такое как видеокарты, использует DMA для прямого доступа к памяти; в виртуальной среде все адреса памяти повторно отображаются программным обеспечением виртуальной машины, что приводит к сбою устройств DMA. IOMMU обрабатывает это повторное отображение, позволяя использовать собственные драйверы устройств в гостевой операционной системе.
  • В некоторых архитектурах IOMMU также выполняет аппаратное прерывание повторное отображение, аналогично стандартному повторному отображению адресов памяти.
  • Подкачка периферийной памяти может поддерживаться IOMMU. Периферийное устройство, использующее расширение интерфейса запроса страницы (PRI) службы преобразования адресов PCI-SIG PCIe, может обнаруживать и сигнализировать о необходимости служб диспетчера памяти.

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

Недостатки

Недостатки наличия IOMMU по сравнению с прямой физической адресацией памяти включают:[4]

  • Некоторое снижение производительности из-за накладных расходов на перевод и управление (например, обход таблицы страниц).
  • Потребление физической памяти для добавленного ввода-вывода страницы (перевод) таблицы. Это можно смягчить, если таблицы могут использоваться совместно с процессором.

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

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

Модуль IOMMU решает эту проблему путем повторного сопоставления адресов, к которым обращается оборудование, в соответствии с той же (или совместимой) таблицей преобразования, которая используется для сопоставления физического адреса гостя с физическими адресами хоста.[5]

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

  • AMD опубликовал спецификацию технологии IOMMU.[6][7]
  • Intel опубликовала спецификацию технологии IOMMU как Virtualization Technology for Directed I / O, сокращенно VT-d.[8]
  • Информация о солнце IOMMU был опубликован в разделе Доступ к виртуальной памяти устройства (DVMA) в Solaris Developer Connection.[9]
  • В IBM Запись управления трансляцией (TCE) была описана в документе под названием Logical Partition Security в IBM eServer pSeries 690.[10]
  • В PCI-SIG имеет соответствующую работу на условиях виртуализации ввода-вывода (IOV)[11] и услуги перевода адресов (ATS).
  • РУКА определяет свою версию IOMMU как System Memory Management Unit (SMMU)[12] чтобы дополнить его архитектуру виртуализации.[13]

Смотрите также

Рекомендации

  1. ^ «Аппаратная поддержка платформы Intel для виртуализации ввода-вывода». intel.com. 10 августа 2006 г. Архивировано из оригинал на 2007-01-20. Получено 2014-06-07.
  2. ^ «Системные платы для настольных ПК: совместимость с технологией виртуализации Intel (Intel VT)». intel.com. 2014-02-14. Получено 2014-06-07.
  3. ^ «Расширение физического адреса - память PAE и Windows». Центр разработки оборудования Microsoft Windows. 2005 г.. Получено 2008-04-07.
  4. ^ Мули Бен-Иегуда; Джими Ксенидис; Михал Островски (2007-06-27). «Цена безопасности: оценка эффективности IOMMU» (PDF). Материалы симпозиума по Linux 2007. Оттава, Онтарио, Канада: IBM Research. Получено 2013-02-28.
  5. ^ «Xen FAQ: как в DomU использовать трехмерную графику». Архивировано из оригинал на 2008-10-02. Получено 2006-12-12.
  6. ^ «Версия 2.0 спецификации технологии виртуализации ввода-вывода AMD (IOMMU)» (PDF). amd.com. 2011-03-24. Получено 2014-01-11.
  7. ^ «Спецификация технологии виртуализации ввода-вывода AMD (IOMMU)» (PDF). amd.com. Получено 2020-07-09.
  8. ^ «Спецификация архитектуры Intel Virtualization для направленного ввода-вывода (VT-d)» (PDF). Получено 2020-07-09.
  9. ^ "Ресурсы DVMA и переводы IOMMU". Получено 2007-04-30.
  10. ^ «Безопасность логических разделов в IBM eServer pSeries 690». Получено 2007-04-30.
  11. ^ «Спецификации виртуализации ввода-вывода». Получено 2007-05-01.
  12. ^ «АРМ СММУ». Получено 2013-05-13.
  13. ^ «Расширения виртуализации ARM». Архивировано из оригинал на 2013-05-03. Получено 2013-05-13.

внешняя ссылка