【PCIe 总线及设备入门学习专栏 4.5 -- PCIe Message and PCIe MSI】

news2025/3/1 4:04:01

文章目录

    • PCIe Message 与 MSI
      • PCIe Message 和 MSI 的作用与关系
      • MSI 的配置与寄存器
      • MSI 和 ARM GIC 的关系
      • 示例:MSI 在 ARM GIC 的实际应用
      • 总结

PCIe Message 与 MSI

本文将介绍 PCIe message 的作用以及message 与 MSI 的关系,再介绍 MSI 如何配置以及MSI有哪些寄存器,及MSI 与 ARM 中的GIC的关系。
在这里插入图片描述

PCIe Message 和 MSI 的作用与关系

  1. PCIe Message 的作用
    PCI Express(PCIe)是一种高速串行总线,其中使用消息传递(Message)机制代替了传统并行总线中的引脚信号。例如,传统 PCI 总线使用专门的引脚传递中断请求(IRQ 信号),而 PCIe 则通过发送消息完成中断、错误报告等功能。
  • 主要用途:
    1. 中断通知 :用来代替传统中断引脚方式,比如 MSI (Message Signaled Interrupt)

    2. 系统错误报告 :例如热插拔事件、数据链路错误等,PCIe 协议定义了诸如 ERR_COR, ERR_FATAL 等错误消息。

    3. 电源管理 :通知设备的电源状态变化(例如进入低功耗模式)。

    4. 配置和控制 :例如在 Root Complex 和 Endpoint 之间交换消息。

  1. Message 和 MSI 的关系
    MSI(Message Signaled Interrupt)是 PCIe 中实现中断的一种机制,其作用是通过消息代替传统硬件信号(中断引脚)来通知 CPU 发生了中断。
  • 传统中断的劣势

    1. 中断引脚数量有限,不适合扩展。

    2. 在共享引脚的情况下,中断源需要额外的软件逻辑确定具体来源。

  • MSI 的优势

    1. 消除了中断引脚的物理限制,可以通过消息的形式支持更多中断源。

    2. 支持多个中断向量(MSI-X 可以支持多达 2048 个中断)。

    3. 提高了效率,特别是在多核系统中,可以将中断直接路由到特定的核。


MSI 的配置与寄存器

  1. MSI 配置步骤
    MSI 的配置是在设备的配置空间完成的,包括如下步骤:

  2. 启用 MSI 功能

  • 设置设备的配置空间中的 MSI Control 字段以启用 MSI。
  1. 设置中断向量
  • 为设备分配一个或多个中断向量,这些中断向量会映射到 CPU 的中断控制器。
  1. 设置消息地址与消息数据
  • Message Address:CPU 或中断控制器的地址,用于接收中断消息。

  • Message Data:与中断向量相关联的数据。

  1. 启用中断:
  • 配置完成后,设备可以生成 MSI 消息通知中断。
  1. 相关寄存器
    MSI 的相关寄存器位于 PCI 配置空间(Capability Structure)中,主要包括:
  • MSI Control 寄存器

    • 是否启用 MSI。

    • 是否支持多向量 MSI。

  • Message Address 寄存器

    • 存储中断消息的目的地址,通常为 CPU 或中断控制器的地址。
  • Message Data 寄存器

    • 包含中断向量值或其它与中断相关的信息。
  • MSI-X 表 (针对 MSI-X):

    • 用于存储多个向量地址和数据。

MSI 和 ARM GIC 的关系

在 ARM 架构中,常用的中断控制器是 GIC (Generic Interrupt Controller),其主要作用是管理和分发中断。在 PCIe 系统中,MSI 由 PCIe 设备发送,最终需要被 GIC 处理。1. GIC 的作用

  • GIC 接收 PCIe 发出的 MSI。

  • 将 MSI 转换为对应的中断 ID,分发到对应的 CPU。

  • GIC 负责中断优先级管理、中断屏蔽、中断分发等功能。

  1. 工作流程
  2. PCIe 设备生成 MSI 消息
  • 包括 Message AddressMessage Data

  • Message Address 配置为 GICD 中对应的中断管理地址。

  1. GIC 解析 MSI 消息
  • GIC 使用 MSI 的 Message Data 解析出具体的中断 ID。
  1. 中断分发
  • GIC 将解析的中断分发到特定的 CPU。

  • 多核系统下,可以基于中断 ID 将中断发送到指定核。

  1. GIC 配置 MSI 示例
    以典型系统为例:
  • Message Address :PCIe MSI 地址配置为 GICD 的物理地址。

  • Message Data :设置为 GIC 的中断 ID。

  • 配置完成后,PCIe 中断通过 MSI 触发,最终由 GIC 接收并处理。


示例:MSI 在 ARM GIC 的实际应用

场景 :网络设备触发中断通知 CPU 处理数据包。

  1. PCIe 网络设备
  • 分配 MSI,中断向量为 32,对应 ARM GIC 的中断号。
  1. MSI 消息内容
  • Message Address:0xF400_0000(假设为 GIC 中 MSI 接收地址)。

  • Message Data:32。

  1. 系统行为
  • 网络设备检测到数据包到达,通过 PCIe 总线发送 MSI 消息。

  • GIC 收到 Message AddressMessage Data,将其映射为中断 ID。

  • 中断 ID 32 被分发到指定的 CPU 核处理。

通过上述流程,中断从 PCIe 设备传递到 CPU,实现了高效的中断通知。

总结

  • PCIe 消息 在 PCIe 中取代了传统硬件引脚信号,MSI 是其典型应用。

  • MSI 配置 涉及 Message Address 和 Message Data,存储在设备配置空间中。

  • MSI 与 GIC 的结合 使得 PCIe 设备与 ARM 架构协同工作,为高效的中断处理提供了支持。

推荐阅读
https://aijishu.com/a/1060000000289702

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2268529.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jquery-validate在前端数据校验中的应用以及remote异步调用实践-以若依为例

目录 前言 一、关于Jquery Validate组件 1、validate是什么 2、内置验证方式及触发方式 3、自定义验证规则 二、基本验证实战以及Remote验证 1、基本验证实现 2、remote校验方式 三、总结 前言 随着技术的不断演进,在我们的日常开发过程中,大家一…

连锁餐饮行业数据可视化分析方案

引言 随着连锁餐饮行业的迅速发展,市场竞争日益激烈。企业需要更加精准地把握运营状况、消费者需求和市场趋势,以制定科学合理的决策,提升竞争力和盈利能力。可视化数据分析可以帮助连锁餐饮企业整合多源数据,通过直观、动态的可…

WPF 样式

WPF 有自己的样式设置系统&#xff0c;也自带类似 Winform 的默认样式。默认样式比较一般&#xff0c;我们可以使用下面几种方式自定义好看的 wpf 样式。 1. 本地直接设置 比如更改按钮的背景色和字体颜色&#xff0c; <Grid><StackPanel Orientation"Horizon…

RabbitMQ实现生产者消费者

一.启动MQ 注意管理员身份进入cmd才行,我这里是在本地安装的MQ,推荐使用虚拟机安装 二.思路 官方解释RabbitMQ结构: 自我理解RabbitMQ结构: 其实RabbitMQ的服务器就像邮局一样,我们的生产者和消费者对于这个服务器来说都是消费者,因为服务器都可以向两者发送消息 环境准备 …

虚拟机用网线连其他设备(ROS多机网络配置)

电脑配置 把局域网的网线插入电脑&#xff0c;点击这边 配置以太网的IP 比如说我ROS主机的IP想设为192.168.144.10&#xff0c;那我笔记本的以太网IP可以设为192.168.144.8。 假设还有另外一个电脑&#xff08;ROS从机&#xff09;&#xff0c;他的IP被设置未192.168.144.4…

VIM: Vision Mamba基于双向状态空间模型的高效视觉表示学习

这篇文章的主要内容可以概括如下&#xff1a; 背景与动机&#xff1a; 近年来&#xff0c;状态空间模型&#xff08;SSM&#xff09;在长序列建模中展现出巨大潜力&#xff0c;尤其是Mamba模型在硬件感知设计上的高效性。 然而&#xff0c;现有的SSM模型在处理视觉数据时面临…

整合版canal ha搭建--基于1.1.4版本

开启MySql Binlog&#xff08;1&#xff09;修改MySql配置文件&#xff08;2&#xff09;重启MySql服务,查看配置是否生效&#xff08;3&#xff09;配置起效果后&#xff0c;创建canal用户&#xff0c;并赋予权限安装canal-admin&#xff08;1&#xff09;解压 canal.admin-1…

tokenizer、tokenizer.encode、tokenizer.encode_plus比较

一、概念 在我们使用Transformers库进行自然语言处理任务建模的过程中&#xff0c;基本离不开Tokenizer类。我们需要这些Tokenizer类来帮助我们加载预训练模型的分词模块&#xff0c;并将文本转化为预训练模型可接受的输入格式。 而在实际建模的实践中&#xff0c;我们参考优秀…

基于深度学习(HyperLPR3框架)的中文车牌识别系统-搭建开发环境

本篇内容为搭建开发环境。包括&#xff1a;python开发环境&#xff0c;Qt/C开发环境&#xff0c;以及用到的各个库的安装和配置。 一、Python开发环境搭建与配置 1、下载并安装Anaconda 我没有用最新的版本&#xff0c;安装的是 Anaconda3-2021.05-Windows-x86_64.exe&#…

Secured Finance 与 Parasail 在流动性质押领域开展合作

Secured Finance 宣布与 Parasail 达成战略合作&#xff0c;标志着生态在推进 DePIN 及人工智能生态系统能力的重要里程碑。此次合作将 Parasail 卓越的质押方案与 Secured Finance 在去中心化贷款和稳定币协议方面的专业能力相结合&#xff0c;为 Filecoin 生态系统内的创新金…

计算机网络 (8)物理层的传输方式

一、串行传输与并行传输 串行传输 定义&#xff1a;串行传输是一种数据传输方式&#xff0c;指的是逐位地按照顺序传输数据。在串行传输中&#xff0c;数据位逐个按照一定的顺序进行传输&#xff0c;可以通过单条线路或信道进行。特点&#xff1a; 逐位传输&#xff1a;串行传输…

LabVIEW 中 NI Vision 模块的IMAQ Create VI

IMAQ Create VI 是 LabVIEW 中 NI Vision 模块&#xff08;NI Vision Development Module&#xff09;的一个常用 VI&#xff0c;用于创建一个图像变量。该图像变量可以存储和操作图像数据&#xff0c;是图像处理任务的基础。 ​ 通过以上操作&#xff0c;IMAQ Create VI 是构建…

第 29 章 - ES 源码篇 - 网络 IO 模型及其实现概述

前言 本文介绍了 ES 使用的网络模型&#xff0c;并介绍 transport&#xff0c;http 接收、响应请求的代码入口。 网络 IO 模型 Node 在初始化的时候&#xff0c;会创建网络模块。网络模块会加载 Netty4Plugin plugin。 而后由 Netty4Plugin 创建对应的 transports&#xff0…

【Spring MVC 核心机制】核心组件和工作流程解析

在 Web 应用开发中&#xff0c;处理用户请求的逻辑常常会涉及到路径匹配、请求分发、视图渲染等多个环节。Spring MVC 作为一款强大的 Web 框架&#xff0c;将这些复杂的操作高度抽象化&#xff0c;通过组件协作简化了开发者的工作。 无论是处理表单请求、生成动态页面&#x…

模型选择+过拟合欠拟合

训练误差和泛化误差 训练误差&#xff1a;模型在训练数据上的误差 泛化误差&#xff1a;模型在新数据上的误差 验证数据集&#xff1a;一个用来评估模型好坏的数据集 例如拿出50%的数据作为训练 测试数据集&#xff1a;只能用一次 K则交叉验证 在没有足够数据时使用 算法…

计算机网络-L2TP Over IPSec基础实验

一、概述 上次我们进行了标准L2TP的配置&#xff0c;但是在最后我们在进行业务流量访问时看到流量是没有进行加密的&#xff0c;这就导致可能得安全风险&#xff0c;所以这里其实可以退像GRE那样调用IPSec框架来进行加密保护。 拓扑 数据不加密 现在需要配置IPSec&#xff0c;然…

fiscoBcos一键部署webase平台

一键部署webase平台 一键部署可以在同机快速搭建WeBASE管理台环境&#xff0c;方便用户快速体验WeBASE管理平台 一键部署会搭建&#xff1a;节点&#xff08;FISCO-BCOS 2.0&#xff09;、管理平台&#xff08;WeBASE-Web&#xff09;、节点管理子系统&#xff08;WeBASE-Nod…

论文分享 | PromptFuzz:用于模糊测试驱动程序生成的提示模糊测试

大语言模型拥有的强大能力可以用来辅助多种工作&#xff0c;但如何有效的辅助仍然需要人的精巧设计。分享一篇发表于2024年CCS会议的论文PromptFuzz&#xff0c;它利用模型提示生成模糊测试驱动代码&#xff0c;并将代码片段嵌入到LLVM框架中执行模糊测试。 论文摘要 制作高质…

实用技巧:关于 AD修改原理图库如何同步更新到有原理图 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/144738332 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

QT集成IntelRealSense双目摄像头3,3D显示

前两篇文章&#xff0c;介绍了如何继承intel realsense相机和opengl。 这里介绍如何给深度数据和色彩数据一块显示到opengl里面。 首先&#xff0c;需要了解深度数据和彩色数据是如何存储的。先说彩色数据。彩色图像一般都是RGB&#xff0c;也就是每个像素有三个字节&#xf…