Virtualización de E/S y DMA
El acceso directo a memoria permite a los dispositivos transferir datos hacia y desde la memoria sin la intervención del procesador palabra por palabra, y la virtualización de E/S extiende esto para compartir de forma segura dispositivos físicos entre máquinas virtuales, ambos fundamentales para los sistemas modernos y en la nube eficientes.
Definition
El acceso directo a memoria es un mecanismo mediante el cual un dispositivo transfiere datos directamente hacia o desde la memoria principal sin que el procesador copie cada dato, y la virtualización de E/S es el conjunto de técnicas que presentan y comparten dispositivos físicos de E/S entre múltiples máquinas virtuales de forma segura y eficiente.
Scope
Este tema cubre el acceso directo a memoria (DMA) y la virtualización de E/S: cómo los controladores DMA mueven grandes volúmenes de datos y señalan la finalización, el papel de la IOMMU en la traducción de direcciones y la protección para las transferencias de dispositivos, y las técnicas para compartir dispositivos entre máquinas virtuales, como la emulación de dispositivos, la paravirtualización y el passthrough asistido por hardware. Trata el movimiento eficiente y seguro de datos de dispositivos. Excluye el control básico de dispositivos y las interrupciones (arquitectura de E/S y buses) y los medios de almacenamiento (dispositivos de almacenamiento secundario).
Core questions
- ¿Cómo transfiere DMA grandes volúmenes de datos sin ocupar el procesador?
- ¿Cómo proporciona una IOMMU traducción de direcciones y protección para las transferencias de dispositivos?
- ¿Cómo se comparten de forma segura los dispositivos físicos entre máquinas virtuales?
- ¿Cuáles son las ventajas y desventajas entre la emulación de dispositivos, la paravirtualización y el passthrough?
Key concepts
- acceso directo a memoria (DMA)
- controlador DMA y descriptores
- interrupciones de finalización
- IOMMU y traducción de direcciones de dispositivos
- emulación de dispositivos
- E/S paravirtualizada
- passthrough de dispositivos y SR-IOV
- aislamiento y protección
Key theories
- Acceso directo a memoria
- Un controlador DMA transfiere bloques de datos entre un dispositivo y la memoria de forma autónoma, interrumpiendo al procesador solo al finalizar, lo que superpone la E/S con la computación y es esencial para el movimiento de datos de alto rendimiento.
Mechanisms
Para una transferencia DMA, el procesador programa un controlador con el origen, el destino y la longitud, luego continúa con otro trabajo mientras el dispositivo mueve los datos y genera una interrupción de finalización. Una IOMMU traduce las direcciones que utilizan los dispositivos y restringe su acceso, proporcionando protección y permitiendo un passthrough seguro. Las máquinas virtuales acceden a los dispositivos a través de dispositivos emulados, controladores paravirtualizados o passthrough directo de hardware (incluida la virtualización de E/S de raíz única que permite que un dispositivo presente múltiples funciones virtuales).
Clinical relevance
DMA es fundamental para una E/S eficiente, liberando al procesador durante las transferencias masivas hacia y desde dispositivos de almacenamiento y red. La virtualización de E/S es esencial para la computación en la nube y los centros de datos, donde muchas máquinas virtuales comparten hardware físico; la IOMMU proporciona el aislamiento que hace que el uso compartido y la asignación directa de dispositivos sean seguros y rápidos.
History
El acceso directo a memoria se ha utilizado desde los primeros ordenadores para descargar el movimiento de datos del procesador. A medida que la virtualización se volvió central para los servidores y la computación en la nube en la década de 2000, se añadió soporte de hardware como la IOMMU y la virtualización de E/S de raíz única para hacer que el uso compartido de dispositivos y la asignación directa fueran eficientes y seguros.
Debates
- Rendimiento del passthrough versus flexibilidad
- El passthrough directo de dispositivos proporciona a las máquinas virtuales un rendimiento de E/S casi nativo, pero reduce la flexibilidad para la migración y la sobresuscripción, mientras que la E/S emulada o paravirtualizada es más flexible pero más lenta; los diseñadores de sistemas equilibran estos aspectos para sus cargas de trabajo.
Key figures
- John L. Hennessy
- David A. Patterson
- Abraham Silberschatz
Related topics
Seminal works
- hennessy2019
- silberschatz2018
Frequently asked questions
- ¿Qué hace una IOMMU?
- Una IOMMU traduce las direcciones que utilizan los dispositivos durante el DMA en direcciones de memoria física y restringe a qué memoria puede acceder un dispositivo. Esto proporciona protección y aislamiento, evitando que un dispositivo o controlador corrompa memoria arbitraria, y permite la asignación directa segura de dispositivos a máquinas virtuales.
- ¿Por qué es importante el DMA para el rendimiento?
- Sin DMA, el procesador tendría que copiar cada palabra hacia o desde un dispositivo, consumiendo ciclos y deteniéndose en transferencias lentas. DMA descarga el movimiento masivo de datos a un controlador dedicado, permitiendo que el procesador realice otro trabajo útil y solo maneje una única interrupción de finalización.