![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【Hypervisor And SMMU】
Hypervisor And SMMU
主公CodingCos
竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生
展开
-
【ARM Hypervisor And SMMU 系列 5 -- SMMU 和 IOMMU技术】
大家应该都知道,ARM公司主要是依靠出售core的license来赚钱的,它给予了具体的芯片厂商一些自由发挥的空间,比如SMMUv3只规定了StreamID的大小是0-32个bits,但具体采用多少个bits,以及StreamID是怎样构成的,则都属于implementation defined。不同的是,多级页表中每级页表的大小是相同的,而第二级Stream table的大小可以是不同的,比如下图中A就是占满了的,有255个entries,而B和C分别只有4个entries和1个entry。原创 2024-08-20 19:50:10 · 334 阅读 · 0 评论 -
【ARM Hypervisor And SMMU 系列 4 -- 虚拟化技术 - 内存虚拟化】
大型操作系统(比如Linux)的内存管理的内容是很丰富的,而内存的虚拟化技术在OS内存管理的基础上又叠加了一层复杂性,比如我们常说的虚拟内存(virtual memory),如果使用虚拟内存的OS是运行在虚拟机中的,那么需要对虚拟内存再进行虚拟化,也就是vitualizing virtualized memory。但这里的TLB存储的并不是一个GVA->GPA的映射关系,也不是一个GPA->HPA的映射关系,而是最终的转换结果,也就是GVA->HPA的映射。64位的x86_64支持2MB和1GB的。原创 2024-08-20 19:48:50 · 155 阅读 · 0 评论 -
【ARM Hypervisor And SMMU 系列 3 -- 虚拟化技术 - I/O虚拟化】
由于DMA是直接在设备和物理内存之间传输数据,必须使用实际的物理地址(也就是HPA),但DMA本身是为了减轻CPU的处理负担而存在的,其传输过程并不经过CPU。),如果直接用guest OS中的驱动程序去操作I/O设备的话(这里的I/O限定于和内存统一编址的MMIO),那么设备使用的地址也是GPA。可以采用的方法是在拥有设备的guest VM加载驱动程序前,先给要分配出去的设备加载一个伪驱动作为占位符,由于没有真正的驱动程序,这个设备对于其他的guest VM来说就相当于是“隐藏”了。原创 2024-08-20 19:47:57 · 332 阅读 · 0 评论 -
【ARM Hypervisor And SMMU 系列 2 -- VT-d DMA Remapping 】
VT-d DMA Remapping的硬件能力主要是由 IOMMU 来提供,通过引入根和等机制来实现直通设备隔离和 DMA 地址转换的目的。那么具体是怎样实现的呢?下面将对其进行介绍。根据: 不含地址空间标志的 DMA Request,这种一般是 endpoint devices 的普通请求,请求内容仅包含请求的类型(read/write/atomics),DMA请求的 address/size 以及请求设备的标志符等。原创 2024-08-20 19:46:42 · 520 阅读 · 0 评论 -
【ARM Hypervisor And SMMU 系列 1 -- Virtualization Technology for Directed I/O(VT-d)】
Intel VT-d(Virtualization Technology for Directed I/O)是一项技术,用于增强虚拟化环境中 I/O 设备的安全性和性能。VT-d 的 DMA 重映射机制是其核心功能之一,旨在对设备的 DMA 访问进行控制和管理,以确保内存安全性和隔离。原创 2024-08-20 19:45:35 · 384 阅读 · 0 评论