Unidad de gestión de memoria de entrada/salida

Comparación de la unidad de gestión de memoria de E/S (IOMMU) con la unidad de gestión de memoria (MMU).

En informática, una unidad de gestión de memoria de entrada y salida (input–output memory management unit, acrónimo IOMMU) es una unidad de gestión de memoria (MMU) que conecta un bus de E/S con capacidad de acceso directo a memoria (compatible con DMA) a la memoria principal. Al igual que una MMU tradicional, que traduce direcciones virtuales visibles de CPU a direcciones físicas, IOMMU correlaciona direcciones virtuales visibles de dispositivo (también llamadas direcciones de dispositivo o direcciones de E/S en este contexto) a direcciones físicas. Algunas unidades también brindan protección de memoria contra dispositivos defectuosos o maliciosos.

AGP y PCI Express en Intel Architecture y las computadoras AMD.Un ejemplo de IOMMU es la tabla de reasignación de direcciones gráficas (GART) utilizada por las tarjetas gráficas

En la arquitectura x86, antes de dividir la funcionalidad de northbridge y southbridge entre la CPU y Platform Controller Hub (PCH), la virtualización de E/S no fue realizada por la CPU, sino por el conjunto de chips.


La IOMMU permite varias mejoras significativas a nivel de sistema:


Además, la IOMMU puede utilizarse para:

Ventajas

Las ventajas de tener una IOMMU, en comparación con el direccionamiento físico directo de la memoria (DMA), incluyen:

Para las arquitecturas de sistema en las que los puertos E/S es un espacio de direcciones distinto del espacio de direcciones de memoria, no se utiliza una IOMMU cuando la CPU se comunica con dispositivos a través de puertos E/S. En las arquitecturas de sistema en las que los puertos E/S y la memoria se asignan en un espacio de direcciones adecuado, una IOMMU puede traducir las direcciones de puerto E/S.

Desventajas

Las desventajas de tener una IOMMU, en comparación con el direccionamiento físico directo de memoria, incluyen:

Virtualización

Cuando un sistema operativo se ejecuta dentro de una máquina virtual, incluidos los sistemas que utilizan paravirtualización, como Xen, por lo general no conocen las direcciones físico-host de la memoria a las que accede. Esto dificulta el acceso directo al hardware, ya que si el sistema operativo invitado intenta instruir al hardware para que realice un acceso directo a la memoria (DMA) usando direcciones físicas de invitado, es probable que corrompa la memoria, ya que el hardware no lo sabe. la asignación entre las direcciones físico-huésped y física del host para la máquina virtual dada. La corrupción se evita porque el hipervisor o el sistema operativo host interviene en la operación de E/S para aplicar las traducciones, lo que provoca un retraso en la operación de E/S.

Un IOMMU puede resolver este problema reasignando las direcciones a las que accedió el hardware de acuerdo con la misma tabla de traducción (o una compatible) que se utiliza para asignar la dirección física del invitado a las direcciones físicas del host.

Los dispositivos de E/S cuyos accesos a la memoria son traducidos por la IOMMU sólo pueden acceder a las páginas que están expresamente mapeadas por las tablas de páginas de E/S asociadas, según lo concedido por el hipervisor y el sistema operativo. Por lo tanto, el acceso de los dispositivos de E/S puede limitarse sólo a las páginas a las que los procesos de nivel de usuario tienen legítimamente acceso cuando el dispositivo suministra la información. Esto significa que las operaciones de E/S pueden iniciarse sin la intervención del hipervisor o del sistema operativo.

Además de la traducción de direcciones, habilitar el acceso a dispositivos de E/S a nivel de usuario implica otras consideraciones de diseño, como la reasignación de interrupciones. El software del sistema debe evaluar la necesidad de bloquear en memoria todas las páginas a las que podría acceder un dispositivo de E/S controlado por un proceso de nivel de usuario.


Si un periférico tiene soporte para el protocolo PCI Express ATS e implementa un IOTLB, y además implementa soporte para el protocolo opcional de Solicitud de Página de Periféricos (PRI/PPR), entonces el software del sistema (Sistema Operativo o Hipervisor) es capaz de soportar el acceso a la memoria paginable para los dispositivos de E/S controlados por el nivel de usuario.

Publicaciones específicas

Véase también

Referencias

  1. ↑ «Intel platform hardware support for I/O virtualization». intel.com. 10 de agosto de 2006. Archivado desde el original el 20 de enero de 2007. Consultado el 7 de junio de 2014.
  2. ↑ «Desktop Boards: Compatibility with Intel Virtualization Technology (Intel VT)». intel.com. 14 de febrero de 2014. Consultado el 7 de junio de 2014.
  3. 1 2 3 «AMD I/O Virtualization Technology (IOMMU) Specification Revision 2.62» (PDF). amd.com. 2 de marzo de 2015. Consultado el 5 de enero de 2016.
  4. ↑ «Physical Address Extension — PAE Memory and Windows». Microsoft Windows Hardware Development Central. 2005. Consultado el 7 de abril de 2008.
  5. ↑ «Xen FAQ: In DomU, how can I use 3D graphics». Archivado desde el original el 2 de octubre de 2008. Consultado el 12 de diciembre de 2006.
  6. ↑ «AMD I/O Virtualization Technology (IOMMU) Specification Revision 2.0» (PDF). amd.com. 24 de marzo de 2011. Consultado el 11 de enero de 2014.
  7. ↑ «Intel Virtualization Technology for Directed I/O (VT-d) Architecture Specification» (PDF). Consultado el 17 de febrero de 2016.
  8. ↑ «DVMA Resources and IOMMU Translations». Consultado el 30 de abril de 2007.
  9. ↑ «Logical Partition Security in the IBM eServer pSeries 690». Consultado el 30 de abril de 2007.
  10. ↑ «I/O Virtualization specifications». Consultado el 1 de mayo de 2007.
  11. ↑ «ARM SMMU». Consultado el 13 de mayo de 2013.
  12. ↑ «ARM Virtualization Extensions». Archivado desde el original el 3 de mayo de 2013. Consultado el 13 de mayo de 2013.

Enlaces externos