嵌入式基础 -- PCIe 控制器中断管理之MSI与MSI-X简介
PCIe 控制器中断管理技术文档
1. 背景
在现代计算机系统中,中断是设备与 CPU 通信的重要机制,PCIe 控制器提供了从传统线中断到基于消息的中断(MSI/MSI-X)的演进,以提升中断处理效率和可扩展性。x86 和 ARM 架构虽然硬件设计不同,但在 PCIe 中断的管理上有着类似的发展路径。
2. x86 架构中的 PCIe 中断
2.1 传统线中断(Legacy INTx)
- 实现方式:
- 每个 PCI 设备最多使用 4 条硬件中断引脚(INTA#、INTB#、INTC#、INTD#)。
- 中断通过物理信号线触发,多个设备可能共享同一中断引脚。
- 问题:
- 中断线有限(仅 4 条),难以满足现代系统需求。
- 共享中断导致中断处理效率下降。
2.2 消息信号化中断(MSI/MSI-X)
-
基本原理:
- 使用 PCIe 总线发送“写事务”(Memory Write)触发中断,而不再依赖物理中断引脚。
- CPU 或中断控制器接收写事务后,解析中断向量,触发相应的中断处理程序。
-
优点:
- 摆脱物理线限制:中断数量不再受限于引脚。
- 中断隔离:避免共享中断的性能瓶颈。
- 更高并发性:支持为不同设备、队列分配独立中断。
-
MSI vs MSI-X:
特性 MSI MSI-X 最大中断向量数 最多 32 个 最多 2048 个 配置复杂度 较低 较高 灵活性 一般 更高,可支持更多设备和功能
2.3 中断管理组件
-
Local APIC:
- 驻留在每个 CPU 内部,负责接收并处理发送给本地 CPU 的中断。
- 支持本地定时器和 IPI(处理器间中断)。
-
IO-APIC:
- 主板上硬件模块,管理外部设备中断并分发到目标 CPU。
- 包含一个重定向表,用于配置中断路由和优先级。
3. ARM 架构中的 PCIe 中断
3.1 中断控制框架:GIC
ARM 平台使用 GIC(Generic Interrupt Controller) 作为中断管理核心,替代 x86 中的 APIC。GIC 从 GICv2 演进至 GICv3 和 GICv4,支持更多核心和虚拟化。
-
主要组件:
- Distributor(GICv2)或 Redistributor(GICv3+):管理所有外部中断的注册、优先级设置及路由。
- CPU Interface:类似 Local APIC,负责将中断信号注入本地 CPU。
- Interrupt Translation Service(ITS):处理 PCIe 设备产生的 MSI/MSI-X 中断,翻译为 GIC 内部中断号。
-
中断类型:
类型 描述 SGI 软件生成中断,用于核间通信 PPI 私有中断,仅特定核使用 SPI 共享外设中断,供所有核共享
3.2 GIC 中断处理流程
- 外部设备产生中断(SPI 或 MSI/MSI-X)。
- Distributor/Redistributor 接收中断,并根据配置分发到目标 CPU。
- CPU Interface 接收中断信号,通知 CPU。
- CPU 执行中断服务例程,处理完成后向 GIC 发出 EOI 信号。
4. x86 与 ARM 架构的对比
| 特性 | x86 (APIC) | ARM (GIC) |
|---|---|---|
| 中断管理模块 | IO-APIC + Local APIC | Distributor/Redistributor + CPU Interface |
| 支持的中断类型 | Legacy INTx, MSI, MSI-X | SGI, PPI, SPI |
| 中断向量数量 | MSI:最多 32 个,MSI-X:最多 2048 个 | GICv3 支持数千个中断 |
| 处理 PCIe MSI/MSI-X | 通过 IO-APIC 路由并分发 | ITS 翻译 MSI/MSI-X |
| IPI(核间中断) | 支持 | 支持 |
5. 总结
- PCIe 中断的演进:从传统线中断(INTx)到基于消息的中断(MSI/MSI-X),极大提升了中断管理的效率和可扩展性。
- x86 与 ARM 的实现差异:
- x86 架构使用 APIC(Local APIC + IO-APIC)管理中断;
- ARM 架构使用 GIC(Generic Interrupt Controller),从 GICv2 到 GICv4 支持更强的可扩展性和虚拟化能力。
- 现代系统趋势:
- MSI/MSI-X 已成为 PCIe 设备中断的主流选择,摆脱了物理中断线的限制。
- 无论 x86 还是 ARM,目标都是通过高效的中断管理提升系统性能和并行处理能力。
相关文章:
嵌入式基础 -- PCIe 控制器中断管理之MSI与MSI-X简介
PCIe 控制器中断管理技术文档 1. 背景 在现代计算机系统中,中断是设备与 CPU 通信的重要机制,PCIe 控制器提供了从传统线中断到基于消息的中断(MSI/MSI-X)的演进,以提升中断处理效率和可扩展性。x86 和 ARM 架构虽然…...
websocket实现
由于安卓资源管理器展示的路径不尽相同,各种软件保存文件的位置也不一定一样.对于普通用户上传文件时,查找文件可能是一个麻烦的事情.后来想到了一个办法,使用pc端进行辅助上传. 文章目录 实现思路1.0 实现定义web与客户端通信数据类型和数据格式web端websocket实现web端对客户…...
unity学习20:time相关基础 Time.time 和 Time.deltaTime
目录 1 unity里的几种基本时间 1.1 time 相关测试脚本 1.2 游戏开始到现在所用的时间 Time.time 1.3 时间缩放值 Time.timeScale 1.4 固定时间间隔 Time.fixedDeltaTime 1.5 两次响应时间之间的间隔:Time.deltaTime 1.6 对应测试代码 1.7 需要关注的2个基本…...
【C++】特殊类设计、单例模式与类型转换
目录 一、设计一个类不能被拷贝 (一)C98 (二)C11 二、设计一个类只能在堆上创建对象 (一)将构造函数私有化,对外提供接口 (二)将析构函数私有化 三、设计一个类只…...
scratch七彩六边形 2024年12月scratch三级真题 中国电子学会 图形化编程 scratch三级真题和答案解析
目录 scratch七彩六边形 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、…...
代码随想录刷题day16|(哈希表篇)349.两个数组的交集
目录 一、哈希表理论基础 二、集合set在哈希法中的应用 三、相关算法题目 四、相关知识点 1.set集合特点和常用方法 1.1 set集合概述 1.2 set集合特点 1.3 常用方法 2.set集合转换成数组 法1:另新建一个数组 法2:将结果集合转为数组 ▲ 3.数组…...
Synology 群辉NAS安装(6)安装mssql
Synology 群辉NAS安装(6)安装mssql 写在前面mssql 2019:成功安装说明,这个最终成功了 mssql 2022没有成功1. pull image2.启动mssql docker container 远程连接 写在前面 mssq是一个重要节点。 这是因为我对mysql没有一丝好感。虽然接触了许…...
2025年美赛B题-结合Logistic阻滞增长模型和SIR传染病模型研究旅游可持续性-成品论文
模型设计思路与创新点: 建模的时候应该先确定我们需要建立什么类的模型?优化类还是统计类?这个题需要大量的数据分析,因此我们可以建立一个统计学模型。 统计学建模思路:观察规律,建立模型,参…...
Hook 函数
什么是hook函数? 在计算机编程中,hook函数是指在特定的事件发生时被调用的函数,用于在事件发生前或后进行一些特定的操作。通常,hook函数作为回调函数被注册到事件处理器中,当事件发生时,事件处理器会自动…...
蓝桥杯模拟算法:蛇形方阵
P5731 【深基5.习6】蛇形方阵 - 洛谷 | 计算机科学教育新生态 我们只要定义两个方向向量数组,这种问题就可以迎刃而解了 比如我们是4的话,我们从左向右开始存,1,2,3,4 到5的时候y就大于4了就是越界了&…...
DeepSeek-R1解读:纯强化学习,模型推理能力提升的新范式?
DeepSeek-R1解读:纯强化学习,模型推理能力提升的新范式? 1. Impressive Points2. 纯强化学习,LLM推理能力提升新范式?2.1 DeepSeek-R1-Zero2.2 DeepSeek-R1 3. 端侧模型能力提升:蒸馏>强化学习 1. Impre…...
深度解析:基于Vue 3的教育管理系统架构设计与优化实践
一、项目架构分析 1. 技术栈全景 项目采用 Vue 3 TypeScript Tailwind CSS 技术组合,体现了现代前端开发的三大趋势: 响应式编程:通过Vue 3的Composition API实现细粒度响应 类型安全:约60%的组件采用TypeScript编写 原子化…...
【PyTorch】3.张量类型转换
个人主页:Icomi 在深度学习蓬勃发展的当下,PyTorch 是不可或缺的工具。它作为强大的深度学习框架,为构建和训练神经网络提供了高效且灵活的平台。神经网络作为人工智能的核心技术,能够处理复杂的数据模式。通过 PyTorch࿰…...
Spring Boot整合JavaMail实现邮件发送
一. 发送邮件原理 发件人【设置授权码】 - SMTP协议【Simple Mail TransferProtocol - 是一种提供可靠且有效的电子邮件传输的协议】 - 收件人 二. 获取授权码 开通POP3/SMTP,获取授权码 授权码是QQ邮箱推出的,用于登录第三方客户端的专用密码。适用…...
字节跳动发布UI-TARS,超越GPT-4o和Claude,能接管电脑完成复杂任务
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
数据的秘密:如何用大数据分析挖掘商业价值
数据的秘密:如何用大数据分析挖掘商业价值 在这个数据爆炸的时代,我们每天都在产生、存储和处理着海量的数据。然而,仅仅拥有数据并不等于拥有价值。就像拥有一座金矿,不开采和提炼,最终只是一堆毫无用处的石头。如何…...
OAuth1和OAuth2授权协议
OAuth 1 授权协议 1. 概述 OAuth1 是 OAuth 标准的第一个正式版本,它通过 签名和令牌 的方式,实现用户授权第三方访问其资源的功能。在 OAuth1 中,安全性依赖于签名机制,无需传递用户密码。 2. 核心特性 使用 签名(…...
AI学习(vscode+deepseek+cline)
1、网页生成不成功时,直接根据提示让模型替你解决问题 2、http://localhost:3000 拒绝链接时,cmd输入命令InetMgr,网站右键新建-配置你的网页代码物理地址,这里我还输入本机登录名及密码了,并把端口地址由默认80修改为…...
04-机器学习-网页数据抓取
网络爬取(Web Scraping)深度指南 1. 网络爬取全流程设计 一个完整的网络爬取项目通常包含以下步骤: 目标分析: 明确需求:需要哪些数据(如商品价格、评论、图片)?网站结构分析&…...
计网week1+2
计网 一.概念 1.什么是Internet 节点:主机及其运行的应用程序、路由器、交换机 边:通信链路,接入网链路主机连接到互联网的链路,光纤、网输电缆 协议:对等层的实体之间通信要遵守的标准,规定了语法、语义…...
Claude等Agent智能体如何集成CasRel模型增强信息处理能力
Claude等Agent智能体如何集成CasRel模型增强信息处理能力 最近在跟一些做企业知识库和智能客服的朋友聊天,他们都在头疼一个问题:大模型回答商业问题的时候,经常抓不住重点。比如你问“A公司收购B公司花了多少钱”,它可能会把新闻…...
Qwen3-TTS开源模型快速上手:5分钟完成中文普通话+粤语+英文三语语音合成
Qwen3-TTS开源模型快速上手:5分钟完成中文普通话粤语英文三语语音合成 想不想让你的应用开口说话?不是那种机械的电子音,而是像真人一样,有感情、有语调,甚至能说方言的语音?今天要聊的Qwen3-TTSÿ…...
ArcGIS10.2许可服务启动失败?别急着重装,试试这个命令行修复大法(附端口冲突排查)
ArcGIS 10.2许可服务启动失败的终极排查指南:从命令行到端口冲突解决 当你面对灰色的启动按钮和毫无反应的ArcGIS License Administrator界面时,那种挫败感我深有体会。作为地理信息行业的从业者,我们常常依赖ArcGIS完成关键工作,…...
微信聊天记录数据自主权解决方案:WeChatMsg本地化部署与深度应用指南
微信聊天记录数据自主权解决方案:WeChatMsg本地化部署与深度应用指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Tre…...
终极免费开源图像修复工具:ComfyUI-BrushNet完整使用指南
终极免费开源图像修复工具:ComfyUI-BrushNet完整使用指南 【免费下载链接】ComfyUI-BrushNet ComfyUI BrushNet nodes 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-BrushNet 想要快速掌握AI图像编辑的核心技术?ComfyUI-BrushNet作为一款…...
earthengine-api 未来展望:路线图、新功能和社区发展趋势
earthengine-api 未来展望:路线图、新功能和社区发展趋势 【免费下载链接】earthengine-api Python and JavaScript bindings for calling the Earth Engine API. 项目地址: https://gitcode.com/gh_mirrors/ea/earthengine-api earthengine-api 作为连接地球…...
解锁图像标注效率:LabelImg亮度调节功能提升标注准确性全指南
解锁图像标注效率:LabelImg亮度调节功能提升标注准确性全指南 【免费下载链接】labelImg LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check…...
深入解析原生HTTP与MCP服务器的交互机制
1. 原生HTTP与MCP服务器交互的核心机制 当你第一次听说MCP服务器时,可能会觉得这是个高大上的概念。其实简单来说,MCP(Model Context Protocol)就是一种让客户端和AI模型服务端进行高效通信的协议。而HTTP作为互联网最基础的通信协…...
触控板手势增强:告别跨系统痛点,实现macOS风格三指拖动无缝体验
触控板手势增强:告别跨系统痛点,实现macOS风格三指拖动无缝体验 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/t…...
手把手教你配置:用微型纵向加密搞定IEC-104协议的风光数据安全上传
新能源场站IEC-104协议安全传输实战:微型纵向加密配置全指南 在新能源场站的自动化系统中,IEC-104协议作为电力行业标准通信规约,承担着风机、光伏逆变器与升压站之间关键运行数据传输的重任。然而,传统光纤环网中的明文传输方式存…...
