[x86] IPI 学习

IPI是inter-processor interrupt,用于处理器间的通信,涉及软件自中断、中断转发和抢占式调度。通过local APIC的中断控制寄存器ICR进行配置,包括中断号、发送模式、目的地等信息。IPIv是Intel CPU虚拟化技术的一部分,减少了guest到hypervisor的切换开销,提高了虚拟机性能。
摘要由CSDN通过智能技术生成

IPI 介绍

IPI, inter-processor interrupt, 处理器间中断。其本质也是一种中断,处理器可通过 IPI 机制向系统总线上的另一个或一组处理器发送中断请求,用于软件自中断、中断转发或抢占式调度 (software self-interrupts, interrupt forwarding, or preemptive scheduling) 。
参与产生 IPI 的主要寄存器是 local APIC 中的中断控制寄存器 (ICR, interrupt command register)。

ICR 常用于以下方面:

  • 处理器发送中断给另一个处理器;
  • 处理器将接收到的中断转发给其他处理器处理;
  • 产生一个中断给自己;
  • 产生特殊的 IPI 给其他处理器。 比如计算机启动过程中第一个启动的处理器 (BSP) 发送 start-up IPI (SIPI) 唤醒其他处理器。

根据英特尔的SDM,ICR 的结构如下图所示:
在这里插入图片描述
ICR 一共64位,除了发送状态字段 (Delivery Status) 为只读, 其余各位均可读写。软件通过修改各个位上的值,实现向系统中其他处理器发送中断的目的。
在 ICR 的各个字段中,
Vector 表示中断号,接收 IPI 的处理器根据中断号,从中断描述符表 IDT 中找到对应的中断处理程序并执行。
Delivery Mode 指定发送的 IPI 类型。
Destination Mode 指定接收中断的形式是物理模式还是逻辑模式。
Delivery Status 表示 IPI 的状态,表示 local APIC 已经完成发送 (Idle) , 或未完成发送 (Send Pending)。
Level 表示发送中断的电平设置。
Trigger Mode 表示中断为边沿触发还是电平触发。
Destination Shorthand 表示发送的中断目的地类型:No Shorthand,由 Destination Field 指定;Self,发送给自己;All Including Self,包括自己在内的所有处理器;All Excluding Self,除自己在内的其他所有处理器。
Destination Field 表示发送的中断目的地。若 Destination Mode 为 physical,则此处表示目标处理器物理地址,即 APIC ID;若 Destination Mode 为 logical,则此处表示目标处理器使用 DFR 和 LDR 设置的逻辑地址。

每当 ICR 的低32位被写入,local APIC 就会根据 ICR 的值生成一条 IPI 信息,并发送到总线上。system bus (Pentium 4 and Intel Xeon processors) or the APIC bus (P6 family and Pentium processors)。

IPIv

IPIv (IPI virtualization) 是 Intel CPU 虚拟化技术 (VT-x) 引入的一个新特性,通过在硬件层面上提供支持,增强处理器间中断的虚拟化性能。具体可参考 Intel 向 linux 社区提交的 IPIv 补丁

在硬件层面支持 IPI 虚拟化之前,guest 中的 vcpu 给目标 vcpu 发送 IPI 时,除了 self IPI 外都需要先触发 VM-exit,在 hyperviser 中完成中断的模拟,然后再触发 VM-entry 进入虚拟机,在目标 vcpu 上执行 IPI 处理程序。guest 和 hyperviser 之间的切换会带来一定的开销,影响 guest 的执行性能。IPIv 引入之后,guest 中的 IPI 均不会触发 VM-exit。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值