Iommu controller что это

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, по сравнению с прямым физическим обращением памяти, включают:

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

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

Когда операционная система бежит в виртуальной машине, включая системы, которые используют паравиртуализацию, такую как 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.

Читать еще:  Чем отличается DirectX 9 от 11

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.

AM1B-ITX — IOMMU Virtualization Support

Newbie

Joined: 04 Nov 2016
Status: Offline
Points: 12

Moderator Group

Joined: 15 Jul 2015
Status: Offline
Points: 6335

Is SVM set to Enabled in the BIOS?

Also, are you running the latest L1.60 BIOS?

X370 SLI/ac(r1.03, BIOS 5.10), 1500X, H115i, F4-4133C19D-16GTZA, 970 EVO M.2 250GB + 500GB, Tt Core X9 Black

Newbie

Joined: 04 Nov 2016
Status: Offline
Points: 12

Moderator Group

Joined: 15 Jul 2015
Status: Offline
Points: 6335

And if you would please return and post their response. Now I’m curios.

X370 SLI/ac(r1.03, BIOS 5.10), 1500X, H115i, F4-4133C19D-16GTZA, 970 EVO M.2 250GB + 500GB, Tt Core X9 Black

Newbie

Joined: 17 Aug 2015
Status: Offline
Points: 56

Edited by WKjun — 07 Dec 2016 at 11:41pm

Newbie

Joined: 04 Nov 2016
Status: Offline
Points: 12

Moderator Group

Joined: 15 Jul 2015
Status: Offline
Points: 6335

zmooky wrote:

I submitted the request.

None. Actually that was my error.

L prefix is for BETA BIOSes something here I deal with on a regular basis. I mistakenly entered L instead of P, which P stands for Production

X370 SLI/ac(r1.03, BIOS 5.10), 1500X, H115i, F4-4133C19D-16GTZA, 970 EVO M.2 250GB + 500GB, Tt Core X9 Black

Newbie

Joined: 04 Nov 2016
Status: Offline
Points: 12

Edited by zmooky — 09 Dec 2016 at 4:03am

Newbie

Joined: 17 Aug 2015
Status: Offline
Points: 56

Edited by WKjun — 09 Dec 2016 at 6:46am

Moderator Group

Joined: 04 May 2015
Location: USA
Status: Offline
Points: 5003

Without support for IOMMU by the CPU and/or chipset, there is nothing a mother board can do to bring it to the system.

If the CPU and/or chipset support IOMMU, then the board’s UEFI/BIOS must be able to enable it, and then the board provide anything else IOMMU needs.

The AM1 Kabini SoC processors are specified to support IOMMUv1.

As wardog asked about, since the SVM option in enabled by default, which would enable IOMMU if it is supported by this board, if it doesn’t seem to work, it must not be supported.

I must agree with WKjun, the single channel memory and low price of this board ($35 in the USA), most likely won’t provide this feature. AMD systems that support IOMMU include 990FX chipset and FX processors.

I came across this link, which might help you enable it at the OS level:

In computing, an input–output memory management unit (IOMMU) is a memory management unit (MMU) that connects a direct-memory-access–capable (DMA-capable) I/O bus to the main memory. Like a traditional MMU, which translates CPU-visible virtual addresses to physical addresses, the IOMMU maps device-visible virtual addresses (also called device addresses or I/O addresses in this context) to physical addresses. Some units also provide memory protection from faulty or malicious devices.

Читать еще:  Черный экран при включении компьютера что делать

An example IOMMU is the graphics address remapping table (GART) used by AGP and PCI Express graphics cards on Intel Architecture and AMD computers.

On the x86 architecture, prior to splitting the functionality of northbridge and southbridge between the CPU and Platform Controller Hub (PCH), I/O virtualization was not performed by the CPU but instead by the chipset. [1] [2]

Advantages [ ]

The advantages of having an IOMMU, compared to direct physical addressing of the memory (DMA), include [ citation needed ] :

  • Large regions of memory can be allocated without the need to be contiguous in physical memory – the IOMMU maps contiguous virtual addresses to the underlying fragmented physical addresses. Thus, the use of vectored I/O (scatter-gather lists) can sometimes be avoided.
  • Devices that do not support memory addresses long enough to address the entire physical memory can still address the entire memory through the IOMMU, avoiding overheads associated with copying buffers to and from the peripheral’s addressable memory space.
    • For example, x86 computers can address more than 4 gigabytes of memory with the Physical Address Extension (PAE) feature in an x86 processor. Still, an ordinary 32-bit PCI device simply cannot address the memory above the 4 GiB boundary, and thus it cannot directly access it. Without an IOMMU, the operating system would have to implement time-consuming bounce buffers (also known as double buffers[3] ).
  • Memory is protected from malicious devices that are attempting DMA attacks and faulty devices that are attempting errant memory transfers because a device cannot read or write to memory that has not been explicitly allocated (mapped) for it. The memory protection is based on the fact that OS running on the CPU (see figure) exclusively controls both the MMU and the IOMMU. The devices are physically unable to circumvent or corrupt configured memory management tables.
    • In virtualization, guest operating systems can use hardware that is not specifically made for virtualization. Higher performance hardware such as graphics cards use DMA to access memory directly; in a virtual environment all memory addresses are re-mapped by the virtual machine software, which causes DMA devices to fail. The IOMMU handles this re-mapping, allowing the native device drivers to be used in a guest operating system.
  • In some architectures IOMMU also performs hardware interrupt re-mapping, in a manner similar to standard memory address re-mapping.
  • Peripheral memory paging can be supported by an IOMMU. A peripheral using the PCI-SIG PCIe Address Translation Services (ATS) Page Request Interface (PRI) extension can detect and signal the need for memory manager services.

For system architectures in which port I/O is a distinct address space from the memory address space, an IOMMU is not used when the CPU communicates with devices via I/O ports. In system architectures in which port I/O and memory are mapped into a suitable address space, an IOMMU can translate port I/O accesses.

Disadvantages [ ]

The disadvantages of having an IOMMU, compared to direct physical addressing of the memory, include: [4]

  • Some degradation of performance from translation and management overhead (e.g., page table walks).
  • Consumption of physical memory for the added I/O page (translation) tables. This can be mitigated if the tables can be shared with the processor.

Virtualization [ ]

When an operating system is running inside a virtual machine, including systems that use paravirtualization, such as Xen, it does not usually know the host-physical addresses of memory that it accesses. This makes providing direct access to the computer hardware difficult, because if the guest OS tried to instruct the hardware to perform a direct memory access (DMA) using guest-physical addresses, it would likely corrupt the memory, as the hardware does not know about the mapping between the guest-physical and host-physical addresses for the given virtual machine. The corruption is avoided because the hypervisor or host OS intervenes in the I/O operation to apply the translations, incurring a delay in the I/O operation.

An IOMMU can solve this problem by re-mapping the addresses accessed by the hardware according to the same (or a compatible) translation table that is used to map guest-physical address to host-physical addresses. [5]

Ссылка на основную публикацию
Adblock
detector