I/O虚拟化与DMA
直接内存访问允许设备在无需处理器逐字参与的情况下,将数据传输到内存或从内存传输数据;而I/O虚拟化则将其扩展到在虚拟机之间安全共享物理设备。这两者都是现代和云系统高效运行的核心。
用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
Learn & explore
视频即将推出
Definition
直接内存访问是一种机制,通过该机制,设备可以直接将数据传输到主内存或从主内存传输数据,而无需处理器复制每个数据;I/O虚拟化是一组技术,用于在多个虚拟机之间安全高效地呈现和共享物理I/O设备。
Scope
本主题涵盖直接内存访问(DMA)和I/O虚拟化:DMA控制器如何移动批量数据并发出完成信号,IOMMU在设备传输的地址转换和保护中的作用,以及在虚拟机之间共享设备的技术,例如设备仿真、半虚拟化和硬件辅助直通。它处理高效安全的设备数据移动。它不包括基本的设备控制和中断(I/O架构和总线)以及存储介质(辅助存储设备)。
Core questions
- DMA如何在不占用处理器的情况下传输批量数据?
- IOMMU如何为设备传输提供地址转换和保护?
- 物理设备如何在虚拟机之间安全共享?
- 设备仿真、半虚拟化和直通之间有哪些权衡?
Key concepts
- 直接内存访问 (DMA)
- DMA控制器和描述符
- 完成中断
- IOMMU和设备地址转换
- 设备仿真
- 半虚拟化I/O
- 设备直通和SR-IOV
- 隔离和保护
Key theories
- 直接内存访问
- DMA控制器自主地在设备和内存之间传输数据块,仅在完成时中断处理器,这使得I/O与计算重叠,对于高吞吐量数据移动至关重要。
Mechanisms
对于DMA传输,处理器会用源、目标和长度对控制器进行编程,然后继续其他工作,同时设备移动数据并引发完成中断。IOMMU转换设备使用的地址并限制其访问,提供保护并实现安全直通。虚拟机通过仿真设备、半虚拟化驱动程序或直接硬件直通(包括单根I/O虚拟化,允许一个设备呈现多个虚拟功能)访问设备。
Clinical relevance
DMA是高效I/O的基础,在与存储和网络设备进行批量传输时解放了处理器。I/O虚拟化对于云计算和数据中心至关重要,在这些环境中,许多虚拟机共享物理硬件;IOMMU提供了隔离,使得共享和直接设备分配既安全又快速。
History
自早期计算机以来,直接内存访问一直被用于将数据移动从处理器中卸载。随着虚拟化在21世纪初成为服务器和云计算的核心,增加了硬件支持,例如IOMMU和单根I/O虚拟化,以使设备共享和直接分配变得高效和安全。
Debates
- 直通性能与灵活性
- 直接设备直通为虚拟机提供了接近原生的I/O性能,但降低了迁移和超额订阅的灵活性;而仿真或半虚拟化I/O更灵活但速度较慢;系统设计者会根据其工作负载平衡这些因素。
Key figures
- John L. Hennessy
- David A. Patterson
- Abraham Silberschatz
Related topics
Seminal works
- hennessy2019
- silberschatz2018
Frequently asked questions
- IOMMU有什么作用?
- IOMMU将设备在DMA期间使用的地址转换为物理内存地址,并限制设备可以访问的内存。这提供了保护和隔离——防止设备或驱动程序损坏任意内存——并使得将设备安全地直接分配给虚拟机成为可能。
- DMA为什么对性能很重要?
- 如果没有DMA,处理器将不得不将每个字复制到设备或从设备复制,这会消耗周期并在慢速传输时停滞。DMA将批量数据移动卸载到专用控制器,让处理器可以执行其他有用的工作,并且只处理一个完成中断。