Iommu controller что это

ru.knowledgr.com

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

До разделения функциональности Нортбриджа и Саутбриджа между центральным процессором и Platform Controller Hub (PCH), виртуализация ввода/вывода не была выполнена центральным процессором, но вместо этого чипсетом.

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

Преимущества наличия IOMMU, по сравнению с прямым физическим обращением памяти, включают:

  • Большие области памяти могут быть ассигнованы без потребности быть смежными в физической памяти, IOMMU наносит на карту смежные виртуальные обращения к основным фрагментированным физическим адресам. Таким образом использования направленного ввода/вывода (разброс — собирают списки) можно иногда избегать.
  • Устройства, которые не поддерживают адреса памяти достаточно долго, чтобы обратиться ко всей физической памяти, могут все еще обратиться ко всей памяти через IOMMU, избежав накладных расходов, связанных с копированием буферов к и от адресуемого места в памяти peripheral.
  • Например, x86 компьютеры может обратиться больше чем к 4 гигабайтам памяти с особенностью Physical Address Extension (PAE) в x86 процессоре. Однако, обычное 32-битное устройство PCI просто не может обратиться к памяти выше границы на 4 гибибайта, и таким образом это не может непосредственно получить доступ к нему. Без IOMMU операционная система должна была бы осуществить отнимающие много времени буфера сильного удара (также известный как двойные буфера).
  • Память защищена от злонамеренных устройств, которые делают попытку нападений DMA и неисправных устройств, которые делают попытку неправедных передач памяти, потому что устройство не может читать или написать памяти, которая не была явно ассигнована (нанесенная на карту) для него. Защита памяти основана на факте что OS, бегущий на центральном процессоре (см. число), исключительно управляет и MMU и IOMMU. Устройства физически неспособны обойти или испортить формируемые управленческие столы памяти.
  • В виртуализации операционные системы гостя могут использовать аппаратные средства, которые определенно не сделаны для виртуализации. Более высокие исполнительные аппаратные средства, такие как видеокарты используют DMA, чтобы получить доступ к памяти непосредственно; в виртуальной окружающей среде все адреса памяти повторно нанесены на карту программным обеспечением виртуальной машины, которое заставляет устройства DMA терпеть неудачу. IOMMU обращается с этим переотображением, позволяя родным драйверам устройства использоваться в операционной системе гостя.
  • В некоторой архитектуре IOMMU также выполняет переотображение перерыва аппаратных средств способом, подобным стандартному переотображению адреса памяти.
  • Периферийное оповещение памяти может быть поддержано IOMMU. Периферийное использование PCI-СИГНАЛА PCIe Address Translation Services (ATS) расширение Page Request Interface (PRI) может обнаружить и сигнализировать о потребности в услугах распределителя памяти.

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

Недостатки

Недостатки наличия IOMMU, по сравнению с прямым физическим обращением памяти, включают:

  • Некоторое ухудшение работы из перевода и управления наверху (например, прогулки таблицы страниц).
  • Потребление физической памяти для добавленной страницы ввода/вывода (перевод) столы. Это может быть смягчено, если столы могут быть разделены с процессором.
Читать еще:  No drq victoria что это

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

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

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

IOMMU SWIOTLB

This article provides instructions for enabling and configuring Input Output Memory Management Unit and the Software Input Output Translation Lookaside Buffer for use with the Linux kernel.

Today’s computing uses a method of partitioning memory and each device such as a graphics card, PCI device, or USB device has to have memory mapped to be accessed by the device or application.

Traditionally IOMMU was used for memory mapping. This is setup when the system is initialized and can not be dynamically changed as the system is running so chip manufacturers such as Intel and AMD developed more advanced memory management methods.

In the Linux kernel we can manipulate the IOMMU using new mechanisms provided by SWIOTLB for Intel and others for architectures from AMD. 64-bit systems have enabled a huge amount of memory to be used in by the system and this memory needs mapping before it can be used. These kinds of terms are used across the Enterprise area of computing, particularly the Virtual-Machine sector but they can be used by anyone running a Linux kernel.

This is Input Output Memory Management Unit. In every system this hardware is integrated into a north bridge controller which setup the memory and is programmed by the firmware on your main-board. In recent years manufacturers have stopped integrating this as a North-Bridge chip and integrated it into the CPU itself. This is why if you want to upgrade your memory speed, type and so on you are now required to not only change the motherboard but the CPU as well.

Regardless the kernel needs to setup and read the mappings to be able to use your system memory efficiently.

Installation

Move to the kernel directory and open the menuconfig utility:

Set the following options:

The above will allow the kernel to control the mappings in the Memory Mapping controller.

Build and install the kernel:

Configuration

The following options for controlling aspects of the memory mapping will need to be added to the kernel command-line in order to take effect. Doing so varies depending on the system’s bootloader. Common bootloaders include GRUB2 and Lilo. More information on bootloaders can be found here.

Читать еще:  Греется процессор на компьютере что делать

Generic options

AMD64 systems

Intel systems

Intel generally adopts «an-always-enable-it-if-it-is-supported» rule so most options are to turn off or disable the IOMMU functions.

Software Input Output Translation Lookaside Buffer is an Intel technology which sort of bypasses the IOMMU and allows for a much more configurable memory management interface. Without going into the deep complexity of how this works, page tables are cached in the Lookaside Buffer reducing the need to constantly access physical RAM to map memory. This technology is also referred to as a bounce buffer as the physical address of the memory map is held in this virtual space of and IO is bounced between the physical IO and the Physical memory by this virtual lookaside buffer.

This allows the memory mapping to be carried out quickly and have a physical memory space available for use much faster than if it had to be created physically in RAM and presented to the system as usable.

Each IO TLB is referred to as a slab, this can be found in the swiotlb.h kernel header source file:

So this mean 1MB would be 8 slabs and the value used as the boot parameter is in slabs NOT size.

SWIOTLB for high input output (such as graphics)

For decades the problem has existed in that how would you get data in and out of the CPU and RAM quickly and efficiently especially for high throughput devices like file IO and graphic cards, etc.

Unfortunately the system is not only having to deal with that IO but many tasks all at the same time, the CPU and RAM may be very fast but if it cannot get the data out by either network, USB, storage device, or onto a screen via a graphics card it is a waste of time having a fast multiprocessing system.

Normally the system holds 4MB for normal operation and allows the rest to be used by other devices. The problem is that if a device overlaps or overflows into another then the system panics and can’t deal with it. Many new devices like Nvidia graphics cards and SCSI controllers have drivers now that allow the IOMMU values they use to be set.

There is no safe way this value can be set (adjusted) automatically because of the diversity of hardware configurations possible on the market. This means the end user has to design and build the system and decide for each use case the best setting for the system.

If one set a large SWIOTLB then one would need to instruct the driver of a device to utilize the larger amount of memory mapping buffer. Some hardware physically control this in the BIOS while others do not provide any control. For the most part, newer high end hardware permit system administrators to control this by modifying the above kernel options.

Some drivers try to automatically control this but as mentioned above can cause stability issues even kernel panic.

Simply setting a large SWIOTLB will not mean a faster IO will be achieved; the hardware must be instructed to use it. Rule of thumb is if 64MB is available then set a maximum remap IO for the driver of 4MB less. This would be 60MB in this case. If 128MB then max remap for the driver would be 124MB and so on.

Читать еще:  Чем отличается Windows 10 Pro от Enterprise

Список IOMMU-поддерживающего аппаратного обеспечения — List of IOMMU-supporting hardware

Эта страница содержит список виртуализацию с поддержкой IOMMU Поддержки оборудования.

содержание

Intel на основе

Список Intel и Intel на базе аппаратного обеспечения, которое поддерживает VT-D (Intel Virtualization Technology для Directed I / O).

процессоры

Подавляющее большинство серверных чипов Intel в Xeon E3, E5 Xeon и линеек Xeon E7 поддерживает VT-D.

Первого и наименее мощный-Xeon для поддержки VT-D был запущен E5502 Q1’09 с двумя ядрами 1,86 ГГц на процессе 45 нм. Многие или большинство Xeons, полученные после этой поддержки VT-D.

рабочий стол

  • VT-d на i7 3930K и i7 3960X работает только на степпинге C2.

Материнские

Набор микросхем

  • Intel Z370
  • Intel Z170
  • Intel X99
  • Intel X79
  • Intel Q170
  • Intel Q150
  • Intel Q87
  • Intel Q77
  • Intel Q67
  • Intel Q45
  • Intel P55
  • Intel Q35, X38, X48 Q45
  • Intel HM87, QM87, HM86, C222, X99, C612, C226

AMD на основе

Список AMD и AMD на базе аппаратных средств , которые поддерживают IOMMU . Реализация AMD по IOMMU также известен как AMD-Vi. Обратите внимание , что только потому , что материнская плата использует чипсет, поддерживающий IOMMU не означает , что он способен и биос должен иметь таблицу ACPI ИСГС , чтобы позволить использовать его. По крайней мере одна платы Asus , как известна, неисправный БИОС с коррумпированными таблицами ACPI ИСГСА; для таких случаев, под Linux, можно задать пользовательские отображения , чтобы переопределить неисправные и / или отсутствующие BIOS предоставленные из них за счет использования в ivrs_ioapic и ivrs_hpet параметров ядра.

процессоры

Список AMD-V и AMD-RVI способных процессоров AMD.

  • AMD Ryzen Серия продуктов
  • AMD EPYC Серия продуктов
  • AMD A-Series Серия продукции (второе поколение)
  • AMD FX серии продуктов
  • AMD A-Series Серия продуктов
  • AMD Athlon II серии продукции
  • AMD Athlon II Dual-Core Mobile серии продуктов
  • AMD Athlon II Neo серия продуктов
  • AMD Athlon II Neo Dual-Core Mobile серии продуктов
  • AMD Athlon II Neo Mobile серии продуктов
  • AMD Athlon II X2 серии продуктов
  • AMD Athlon II X3 серии продуктов
  • AMD Athlon II X4 серии продуктов
  • AMD Athlon II XLT Серия продуктов
  • AMD Athlon X2 Серия продуктов
  • AMD C-Series Серия продуктов
  • AMD E-Series Серия продуктов
  • AMD G-Series Серия продуктов
  • AMD Phenom II Dual-Core Mobile серии продуктов
  • AMD Phenom II Quad-Core Mobile серии продуктов
  • AMD Phenom II Triple-ядро мобильной Серия продуктов
  • AMD Phenom II X2 Серия продуктов
  • AMD Phenom II X3 серии продуктов
  • AMD Phenom II X4 серии продуктов
  • AMD Phenom II X6 серии продуктов
  • AMD Phenom II XLT Серия продуктов
  • AMD Phenom X4 серии продуктов
  • AMD Sempron серии продуктов
  • AMD Sempron Mobile серии продуктов
  • AMD Sempron X2 Серия продуктов
  • AMD Six-Core Opteron серии продуктов
  • AMD Opteron третьего поколения серии продуктов
  • AMD Turion II Dual-Core Mobile серии продуктов
  • AMD Turion II Neo серия продуктов
  • AMD Turion II Neo Dual-Core Mobile серии продуктов
  • Серия AMD V для ноутбуков серии продуктов
Ссылка на основную публикацию
Adblock
detector