IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> [x86] IPI 学习 -> 正文阅读

[嵌入式][x86] IPI 学习

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。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:44:29  更:2022-09-21 00:45:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 17:41:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计