MSI(Message Signaled Interrupt)

news/2024/10/30 9:25:55/

 

MSI是什么?

MSI(Message Signaled Interrupts)是一种中断方式, 依靠设备将一小段中断描述数据写入特定地址 【注一】来通知CPU中断的产生。

MSI从PCI 2.2开始支持, 在PCI 3.0中得到扩展. 支持更多中断以及拥有独立配置各个中断能力的MSI-X则从PCI 3.0开始被支持.

 

注一:这里写入数据,并不是device可以直接向cpu发送数据作为中断的一部分。 而是写到MMIO(memory mapped IO)地址的数据是给chipset的,chipset读取这段数据来决定说发送什么样的中断给某个CPU。Device是没有办法直接利用这段数据给interrupt handler传递更多的信息的。

MSI是设备端通过向Host发MSG的方式产生IRQ request,在送达Host/PCI桥之前它和普通的Memory Write 并没有区别,Host收到以后再将该Memory Write转化成Interrupt送到各个CPU.

 

 

MSI的优点:

1. 相对于基于引脚的中断响应方式的性能优势:

    传统中断的中断引脚 常常被多个设备共享,当中断触发时, 内核必须依次触发每个设备相应的中断处理(interrupt  service  route)

   来确定是哪个设备产生的,这必将损失系统的整体性能.  每个MSI中断属于设备所独有,因此不会产生共享中断带来的性能损失。

2. MSI增加了中断的数目:

    传统基于引脚的中断每个设备最多4个中断引脚,对于多功能PCI设备而言,每一个功能最多只有一个中断引脚。设备驱动程序必须查询设备产生

    的具体事件,势必降低中断处理速度。而MSI中断中,一个设备可以支持最多32个MSI中断,每个中断有其特定功能,那么驱动程序在处理如数  据收发中断时使用单独的中 断就更有效率。

3. 数据写入内存与中断触发是串行的:

   在传统中断中,中断通常是设备发送完数据后,给cpu一个中断请求,通知cpu进行处理。但是这里有个问题,PCI设备本来是要在将

   数据写到内存后,然后发送一个中断表明DMA写操作完成了,但是为了不打扰到其他内存的使用,PCI 网桥或者内存控制器可能会延迟写数据操作,这时候中断却已经到达cpu了,那么就可能导致cpu从内存读取了错误的数据【注二】。为了阻止这样超期的情况发生,interrupt handlers必须从设备读取寄存器(轮询方式)来保证DMA写操作已经完成,数据已经到达内存,但是这会使性能降低。MSI中断与main data path共享同一通道,并且是先发生特定数据到MMIO, 然后才决定中断发生,有严格的顺序,并且不用去轮询设备寄存器,提升了性能。

 

注二: 传统的基于引脚的中断使用专用的通道来发生中断控制信息,与main data path是分开的,所以也会出现上述延迟情况,从而出现了超期现象.

 

 

如何在Linux下使用MSI?

PCI设备默认以基于引脚的中断响应方式初始化, 然后由驱动来检测是否支持MSI并决定是否启用, 如果启用MSI失败则会回退到基于引脚的中断响应方式.

下面是关于MSI的几个重要的内核函数:

  • 启用MSI并给设备分配一个中断: int pci_enable_msi(struct pci_dev *dev)
  • 允许驱动申请minvec至maxvec个中断: int pci_enable_msi_range(struct pci_dev *dev, int minvec, int maxvec)
  • 获取设备申请的中断向量个数:  int pci_msi_vec_count(struct pci_dev *dev)
  • 禁用MSI, 回退到基于引脚的中断响应方式:  void pci_disable_msi(struct pci_dev *dev)

 

 

 


http://www.ppmy.cn/news/292855.html

相关文章

【嵌入式环境下linux内核及驱动学习笔记-(15)linux总线、设备、驱动模型之I2C总线】

目录 1、 I2C总线机制1.1 导入1.2 时序1.3 地址格式 2、华清fs4412上I2C的实现2.1 寄存器2.2 寄存器位具体含义2.3 fs4412上针对具本设备的I2C工作逻辑2.3.1 主机读写工作流程**2.3.1.1 主机发送时序及操作流程2.3.1.2 主机接收的时序及流程 2.3.2 从机读写工作流程 3、LINUX内…

【Android】WMS(二)Window的添加

软件盘相关模式 在 Android 应用开发中,软键盘的显示与隐藏是一个经常出现的问题,而 WindowManager 的 LayoutParams 中定义的软键盘相关模式则为开发者提供了一些解决方案。 其中,SoftInputMode 就是用于描述软键盘的显示方式和窗口的调整…

【Flutter】如何移除 Flutter 右上角的 DEBUG 标识

文章目录 一、前言二、什么是 DEBUG 标识三、为什么我们需要移除 DEBUG 标识四、如何移除 DEBUG 标识五、完整代码六、总结 一、前言 欢迎来到 Flutter 的世界!在这篇文章中,我们将探索 Flutter 的一些基础知识。但是,你知道吗?这…

诺基亚n9支不支持java_诺基亚N9支持720p播放吗

诺基亚N9可以播放720p视频。诺基亚N9采用1GHz德州仪器OMAP3630处理器,GPU型号为Imagination PowerVR SGX530,搭配1GB的运行内存 RAM,可以播放MP4和H.264格式的高清视频。 但是诺基亚N9有的视频还播不了,要另下播放器,同…

BlackBerry 多媒体播放编程

概述 移动多媒 体包括 使用移动 终端播放 音乐, 视频,拍 照,录制 视频, 和在线影 音 。 Bla ck Berry 支持 移动多媒 体,你 可以通 过 Bla ckB erry Java 或 Bla ck Berry 浏览器 来创建 自己 的媒体应 用。功 能包括…

专家看衰Windows Phone 8前景 诺基亚又要悲剧?

尽管诺基亚连续三个季度出现10亿美元以上的亏损,不过近来诺基亚的股价出现了强势反弹,股票价格目前已经在第二季度财报发布之后翻了两番。然而 Research的分析师Pierre Ferragu认为,股价之所以上涨,是受下周即将召开的诺基亚世界大…

诺基亚N97沃达丰多媒体设备无缝连接选件

诺基亚N97沃达丰多媒体设备无缝连接选件   诺基亚世界顶级手机品牌一直带给我们惊喜与它的辉煌和最新技术的产品。它已经抓住了移动通信市场的N系列。现在,这个品牌已经想出了另一个多媒体惊叹诺基亚N97手机是现在挤满了世界领先的沃达丰的网络。该网络连接方便了…

用 Windows Media Encoder 9 架设网上直播

网上的电台发展得越来越快,其中之一的原因是网络的迅速发展,但用来架设电台的软件,无非还是几个:Winamp ShoutCast - 构建MP3流媒体Real Server - 构建Real Media流媒体Windows Media Encoder - 构建Windows Media流媒体QuickTime Broadcaste…