ARM虚拟化学习问题记录

1.ARM虚拟化文档提到,guest os运行在Vcpu上,那么实际guest os的指令是如何发送到物理CPU的?hypervisor需要实际记录VCPU状态吗?

--大多数情况下,Guest OS 的非特权指令可以直接在物理 CPU 上运行,而特权指令或敏感操作会被 Hypervisor 拦截和处理。

VCPU 的概念:vCPU是Hypervisor 为 Guest OS 创建的虚拟处理器,Hypervisor为每个vCPU维护一个vCPU数据结构,模拟物理 CPU 的状态。Hypervisor 会将 VCPU 映射到物理 CPU 上进行执行,通过调度算法决定哪个 VCPU 在哪个物理 CPU 核心上运行。在多核心系统中,多个 VCPU 可以并行地在不同的物理核心上执行。

1. 非特权指令(Guest OS 正常执行)

  • 直接在物理 CPU 执行:
    当 Guest OS 执行普通指令(如算术运算、内存访问)时,Hypervisor 通过配置HCR_EL2寄存器,允许这些指令直接在物理 CPU 的EL0/EL1运行。
  • 无需 Hypervisor 干预:
    物理 CPU 直接处理这些指令,性能接近原生系统。

2. 特权指令或敏感操作

    • 触发异常到 EL2:
      当 Guest OS 执行特权指令(如访问物理寄存器、系统控制指令)或敏感操作(如 WFI 指令在 TWI=1 时),物理 CPU 会检测到异常并跳转到EL2(Hypervisor)。
    • Hypervisor 拦截处理:
      Hypervisor 通过异常处理程序模拟这些指令的行为,例如:
      • 对物理寄存器的访问转换为对 VCPU 虚拟寄存器的操作。
      • 处理中断请求(如将虚拟中断映射到物理中断)。
      • 处理低功耗指令(如前所述的 WFI 转换)。
指令类型执行方式Hypervisor 角色
非特权指令 直接在物理 CPU 执行(EL0/EL1) 无干预
特权 / 敏感指令 触发异常到 EL2,由 Hypervisor 模拟执行 拦截并处理指令
中断处理 物理 CPU 响应中断,Hypervisor 注入虚拟中断 管理中断路由和上下文切换

 

2.For example, executing a Wait For Interrupt (WFI) instruction usually puts the CPU into a low power state. By asserting the TWI bit, if HCR_EL2.TWI==1, then executing WFI at EL0 or EL1 will instead cause an exception to EL2.

--当HCR_EL2.TWI(Translation of WFI Instructions)位被置 1时:

    • EL0 或 EL1(Guest OS 运行的异常级别)执行的 WFI 指令会被转换为异常,直接跳转到EL2(Hypervisor 运行的异常级别)。
    • 此时,WFI 指令不再使 CPU 进入低功耗状态,而是触发一次同步异常(Exception 级别 3,类型为SErrorSVC,具体取决于实现)。

 

3.Hypervisor 维护 VCPU 上下文状态的方式

1. 上下文状态的内容

VCPU 的上下文状态主要包括寄存器的值(如通用寄存器、程序计数器 PC、栈指针 SP、状态寄存器等)、内存映射信息、中断状态等。这些状态信息描述了 VCPU 在某一时刻的运行状态。

2. 维护机制

2.1 上下文保存
  • 时机:当 Hypervisor 需要暂停某个 VCPU 的执行,例如进行上下文切换(调度到其他 VCPU 执行)或者处理异常时,会将当前 VCPU 的上下文状态保存起来。
  • 实现方式:Hypervisor 通常会在内存中为每个 VCPU 分配一块特定的区域,用于存储其上下文状态。例如,当发生异常从 EL0/EL1(Guest OS 运行级别)切换到 EL2(Hypervisor 运行级别)时,Hypervisor 会将 EL0/EL1 的寄存器值保存到对应的 VCPU 上下文区域中。这可以通过汇编指令来完成,将寄存器的值依次存储到内存指定的地址。
2.2 上下文恢复
  • 时机:当 Hypervisor 决定恢复某个 VCPU 的执行时,会从之前保存的上下文区域中读取相应的状态信息,并将其恢复到物理 CPU 的寄存器中。
  • 实现方式:同样使用汇编指令,将保存在内存中的寄存器值依次加载到物理 CPU 的寄存器中,使得 VCPU 能够从之前暂停的位置继续执行。
posted @ 2025-04-02 11:28  老胡同学  阅读(31)  评论(0)    收藏  举报