PCIe中断总结-各个中断的区别

1.简介:

PCIe中断支持三种传输方式:

        • Legacy: 也称传统中断,Legacy PCI中断机制,每个PCI设备最多支持四个中断信号(边带信号:INTA# INTB# INTC# INTD#)

        • MSI(Message Signaled Interrupt): Post Memory Write,只支持32个中断向量

        • MSI-x: MSI的升级,最多支持2048个中断向量

2.传统中断

1. PCI设备通过INTx边带信号产生中断请求,经过中断控制器后转换为INTR信号,并直接发送至CPU

2. CPU收到INTR信号置位后,知道了中断请求的发生,但其并不知道是什么中断请求,因此CPU通过中断应答来查询中断请求信息

3. 中断应答被发送至PIC后,PIC会返回一个8bits的中断向量值给CPU

4. CPU收到中断向量值后,去Memory中的中断向量表中查找对应的中断服务程序在memory的位置

5. CPU读取ISR程序,然后处理该中断

1. 配置空间Command Register的bit10可禁止/使能INTx中断;但不会影响MSI&MSI-x

2. 配置空间Status Register的bit3表示中断状态

3. 配置空间Interrupt Pin定义中断边带信号引脚号

4. 配置空间Interrupt Line定义中断向量号
 

MSI本质上是一种Memory Write. MSI相关的寄存器存在于配置空间前256Bytes中.支持32个中断向量。

3.MSI中断

MSI本质上是一种Memory Write. MSI相关的寄存器存在于配置空间前256Bytes中.支持32个中断向量。

   • Capability ID:只读,05h表示支持MSI功能

        • Next Capability Pointer:只读,用于查找下一个Capability structer的位置,值为00h则表示到达Linked list的最后.

        • Message Control Register:用于确定MSI的格式与支持的功能等信息

        • Mask Bits:中断屏蔽位,可屏蔽对应MSI信息的发送

        • Pending Bits:相关中断未屏蔽时,发生了相关中断,对应的bit置位,一旦该中断被发出,该位立即清零
 

4.MSI-x

MSI-x是MSI的改进,本质上也是一种Memory Write. 支持2048个中断向量,占用更少的配置空间.中断向量信息被存储在特殊的Memory(MMIO)中,该memory指向Table BIR(Base address Indicator Register)

5.区别

传统中断在PCIe中也是基于消息的,那么那他与MSI中断的区别是什么呢

其一,共享中断带来的性能损失:
传统中断的中断引脚常常被多个设备共享. 当中断触发时, 内核必须依次触发每个设备相应的中断处理,这必将损失系统的整体性能.  每个MSI中断属于设备所独有,因此不会产生共享中断带来的性能损失。
  
其二,传统中断超前产生,实际数据并未真正达到:
众所周之,中断通常是设备发送完数据后,给CPU一个中断通知CPU进行处理。但是这种看似简单的应用如果是传统中断也会产生问题,那就是,中断已经产生,并且数据也已经从设备发出,但是实际上并没有到达主存。这时候CPU是读不到它想要的数据的。在这种情况下,CPU必须从设备端读取寄存器来知道数据是否真的已经到达目的地,PCI事物排序规则确保该寄存器只有在数据真实到达之前才会更新。这是传统中断的另一弊端,而MSI中断因为与数据包共享同一通路并且有严格的先后顺序,所以不会出现这种问题,更不需要更新和查询设备端寄存器,从而节省了很多开销。

其三,每个设备最多只有四个传统中断引脚:
对于多功能PCI设备而言,每一个功能最多只有一个中断引脚。设备驱动程序必须查询设备产生的具体事件,势必降低中断处理速度。而一个设备可以支持最多32个MSI中断,每个中断有其特定功能,譬如,一些一场情况和错误处理有其单独的中断能让驱动程序处理如数据收发中断更有效。

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

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

相关文章

力扣labuladong一刷day35天

力扣labuladong一刷day35天 文章目录 力扣labuladong一刷day35天一、98. 验证二叉搜索树二、700. 二叉搜索树中的搜索三、701. 二叉搜索树中的插入操作四、450. 删除二叉搜索树中的节点 一、98. 验证二叉搜索树 题目链接:https://leetcode.cn/problems/validate-bi…

【Linux】如何对文本文件进行有条件地划分?——cut命令

cut 命令可以根据一个指定的标记(默认是 tab)来为文本划分列,然后将此列显示。 例如想要显示 passwd 文件的第一列可以使用以下命令:cut –f 1 –d : /etc/passwd cut:用于从文件的每一行中提取部分内容的命令。-f 1&…

Sql server数据库数据查询

请查询学生信息表的所有记录。 答:查询所需的代码如下: USE 学生管理数据库 GO SELECT * FROM 学生信息表 执行结果如下: 查询学生的学号、姓名和性别。 答:查询所需的代码如下: USE 学生管理数据库 GO SELE…

为什么需要 Kubernetes,它能做什么?

传统部署时代: 早期,各个组织是在物理服务器上运行应用程序。 由于无法限制在物理服务器中运行的应用程序资源使用,因此会导致资源分配问题。 例如,如果在同一台物理服务器上运行多个应用程序, 则可能会出现一个应用程…

【QED】高昂的猫 Ⅰ

目录 题目背景题目描述输入格式输出格式 测试样例样例说明数据范围 思路核心代码 题目背景 这是小橘。因为它总是看起来很高傲,所以人送外号“高昂的猫”。 题目描述 "锕狗"的房间里放着 n n n ( 1 ≤ n ≤ 1 0 9 ) (1 \leq n \leq 10^9) (1≤n≤109)个…

C# 使用CancellationTokenSource 取消Task执行

写在前面 在Task创建并执行后,如果状态发生了变化,需要取消正在执行中的Task,除了使用主线程上的共享变量来判断之外,更优雅的方式就是就是用CancellationTokenSource来取消任务的执行。 代码实现 public static void CancelTas…

主流MQ [Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ]

主流MQ [Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ] 一,MQ对比图 下面是 Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ 的更详细和专业的对比: 特性/功能KafkaRabbitMQZeroMQRocketMQActiveMQ语言JavaErlangCJavaJava协议自有协议AMQP自有协…

算法工程师-机器学习面试题总结(6)

目录 1.Bagging的思想是什么?它是降低偏差还是方差,为什么? 2.可否将RF的基分类模型由决策树改成线性模型或者knn?为什么? 3.GBDT梯度提升和梯度下降有什么区别和联系? 4.如何理解Boosting和Bagging&am…

基于ssm高校实验室管理系统的设计与实现论文

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对高校实验室信息管理混乱,出错率高,信息安全性…

散列卡片悬停变为整齐列表

效果展示 CSS 知识点 transform 属性运用 页面整体布局 <ul><li><div class"box"><img src"./user1.jpg" /><div class"content"><h4>Hamidah</h4><p>commented on your photo.<br />…

Excel 数据处理记录

20231203 excel中的字符串以符号间隔开了&#xff0c;如何将其中的字符串挑出&#xff0c;分别放到其他单元列&#xff1a; 在Excel中打开你的表格&#xff0c;选中包含以符号间隔的字符串的单元格。在顶部菜单中&#xff0c;找到“数据”选项&#xff0c;并选择“分列”。在…

电脑主板支持的cpu型号汇总

一、如何选择不同的主板和对应CPU 1、看针脚&#xff1a;网上有相应的参数&#xff0c;只要CPU能安装到主板中&#xff0c;基本就兼容&#xff0c;这主要取决CPU插槽和主板插槽十分一致。 2、看型号&#xff1a;桌面处理器&#xff0c;只有Intel和AMD两大平台&#xff0c;他们对…

dlib是什么?

dlib C Libraryhttp://dlib.net/ dlib是什么&#xff1f; Dlib is a modern C toolkit containing machine learning algorithms and tools for creating complex software in C to solve real world problems. It is used in both industry and academia in a wide range of…

基于SSM的高校共享单车管理系统的设计与实现论文

摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管理就很关键。因此高校单车租赁信…

二百一十、Hive——Flume采集的JSON数据文件写入Hive的ODS层表后字段的数据残缺

一、目的 在用Flume把Kafka的数据采集写入Hive的ODS层表的HDFS文件路径后&#xff0c;发现HDFS文件中没问题&#xff0c;但是ODS层表中字段的数据却有问题&#xff0c;字段中的JSON数据不全 二、Hive处理JSON数据方式 &#xff08;一&#xff09;将Flume采集Kafka的JSON数据…

【华为OD题库-075】拼接URL-Java

题目 题目描述: 给定一个url前缀和url后缀,通过,分割。需要将其连接为一个完整的url。 如果前缀结尾和后缀开头都没有/&#xff0c;需要自动补上/连接符 如果前缀结尾和后缀开头都为/&#xff0c;需要自动去重 约束:不用考虑前后缀URL不合法情况 输入描述: url前缀(一个长度小于…

49.Go避免大量并发访问DB、避免缓存击穿、缓存穿透、缓存雪崩以及使用延迟双删保证数据一致性

文章目录 一、在高并发下&#xff0c;如何避免大量请求直接访问数据库&#xff1f;二、避免缓存击穿二、避免缓存穿透三、避免缓存雪崩四、延迟双删保证数据一致性五、在使用 Go 的 time.AfterFunc 函数时&#xff0c;如果删除缓存操作失败怎么办&#xff1f; MySQL和 Redis是…

vue自定义指令实现按钮只允许点击一次

vue自定义指令实现按钮只允许点击一次 vue自定义指令实现按钮只允许点击一次 这个例子中创建了一个名为 click-once 的自定义指令&#xff0c;通过 bind 钩子函数给元素绑定了一个点击事件&#xff0c;并且利用一个变量 clicked 控制了按钮只能点击一次的行为。在点击后会执行传…

【ITK库学习】使用itk库进行图像滤波ImageFilter:Voting滤波器

目录 1、itkVotingBinaryImageFilter2、itkVotingBinaryHoleFillingImageFilter 洞穴充填滤波器3、itkVotingBinaryIterativeHoleFillingImageFilter4、itkLabelVotingImageFilter 1、itkVotingBinaryImageFilter 该类是一个基类&#xff0c;用于根据前景和背景像素的邻域投票…

【数据结构实践课设】新生报道注册管理信息系统

目录 1.主要框架 2.写入文件 3.读取文件 4.注册学生信息 5.增加学生信息 6.删除学生信息 7.按姓名查询 8.按班级查询 9.按专业查询 10.打印学生信息 11.完整代码 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所…