0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PCIe中断机制介绍(MSI)

SwM2_ChinaAET 来源:未知 作者:李倩 2018-08-31 15:07 次阅读

前面的文章中介绍过,MSI本质上是一种Memory Write,和PCIe总线中的Message概念半毛钱关系都没有。并且,MSI的Data Payload也是固定的,始终为1DW。

由于MSI也是从PCI总线继承而来的,因此MSI相关的寄存器也存在于配置空间中的PCI兼容部分(前256个字节)。如下图所示,MSI有四种类型:

其中Capability ID的值是只读的,05h表示支持MSI功能。

Next Capability Pointer也是只读的,其用于查找下一个MSI的位置,00h则表示到达Linked List的最后了。

Message Control Register用于确定MSI的格式与支持的功能等信息,如下图所示:

具体描述如下:

Message Address Register:32-bit最低两位固定为0,使得该地址是DW对齐的。

当Mask Bits将相关的中断向量(Interrupt Vector)屏蔽后,该MSI将不会被发送。软件可以通过这种方式来使能或者禁止某些MSI的发送。如果相关中断向量没有被屏蔽,则如果发生了相关中断请求,这时Pending Bits中的相应bit则会被置位。一旦中断信息被发出,则该bit会立即被清零。

注:可能有的人会有疑惑了(无论是Mindshare的书,还是PCI的Spec都没有明确解释),因为Mask Bits和Pending Bits都只有32位,而8位的中断向量号最多可以表示256个!显然,32位最多只能对应32个中断向量号,无法支持256个的。实际上,一般的系统不会支持256个中断向量号的,32个就已经足够用了,所以并不用担心这个问题。

PCIe设备会根据配置空间中的MSI请求信息,来创建Memory Write TLP,来讲MSI信息发送出去。作为一种特殊的TLP,传递MSI的TLP需要遵循以下规则:

· No Snoop和Relaxed Ordering bits的值必须为0

· TLP长度值必须为01h

· First BE必须为1111b

· Last BE必须为0000b

· 地址是直接从配置空间中的响应位置复制过来的

如下图所示:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    4991

    浏览量

    117414
  • PCIe
    +关注

    关注

    13

    文章

    1061

    浏览量

    80591

原文标题:【博文连载】PCIe扫盲——中断机制介绍(MSI)

文章出处:【微信号:ChinaAET,微信公众号:电子技术应用ChinaAET】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MSI中断简介和生成方法

    Xilinx PCIE IP中MSI中断相关的地址如下图1所示,如果想要成功产生中断MSI Control, Message Addres
    的头像 发表于 02-25 09:24 415次阅读
    <b class='flag-5'>MSI</b><b class='flag-5'>中断</b>简介和生成方法

    将Hyperlink和pcie合在一起之后,Pcie无法响应MSI中断

    响应到Hyperlink中断后,将数据搬移到DDR3 0xc0000 0000开始的地址,数据总共1GB。DSP2将数据接收完之后,通过PCIE返回给DSP1,双方的链路都连通了,DSP1的PCIE
    发表于 06-21 16:09

    PCIE MSI中断的配置

    小弟学习K1_STK(从官网下的最新的例程keystone软件开发包)里面的PCIE(例程),这个是例程里面RC端和EP端用的是MSI中断PCIE_int_cfg.number_tx_MSI
    发表于 06-21 03:49

    xp支持PCIE中的MSI中断方式么

    各位大家好:        在使用PCIE时,我使用6678向PC机(xp系统)发送MSI中断,但是查找资料发现貌似xp不支持msi中断,以
    发表于 06-21 11:03

    DM8168 C6678 pcie msi 中断不能触发,请问是什么原因?

    你好,我现在使用的DM8168做为RC端,C6678作为EP,现在RC和EP直接数据收发都是可以的,现在主要在调试PCIEmsi中断上碰到一个问题,具体问题描述如下: RC端配置:BAR0
    发表于 08-06 06:48

    基于PCIe和V4L2的8通道视频采集&显示IP

    3.0和PCIe 4.0接口7.支持MSI中断机制 对外接口:1.8个标准的FIFO或AXI4-Stream数据总线2.扩展的RAM接口,支持BAR1映射空间 性能指标:1.支持8路
    发表于 11-01 21:45

    基于PCIe DMA的多通道数据采集和回放IP

    ,支持MSI中断机制,完全释放主机/CPU/GPU采集&回放的密集任务量,特别适用于高速AD采集和回放、多通道视频采集和显示等的应用。 内核特性:1.多种PCIe驱动:a)兼容视频设备
    发表于 11-25 22:27

    PCIe设备发出MSI-X中断请求的方法

    x86处理器如何处理MSI-X中断请求PCIe设备发出MSI-X中断请求的方法与发出MSI
    发表于 02-16 06:36

    PCIe两种中断传递方式

    MSI/MSI-X是后续的PCI/PCI-X总线改进后的中断机制,其中MSI-X(MSI-eXt
    的头像 发表于 08-31 15:31 8879次阅读

    克服MSI机制的三个主要的缺陷

    有趣的是,MSI只支持32个中断向量,而MSI-X支持多达2048个中断向量,但是MSI-X的相关寄存器在配置空间中占用的空间却更小。这是因
    的头像 发表于 09-02 10:41 4285次阅读
    克服<b class='flag-5'>MSI</b><b class='flag-5'>机制</b>的三个主要的缺陷

    简述PCI总线的中断机制

    属于边带信号(Sideband Signals),PCI总线规范并没有明确规定在一个处理器系统中如何使用这些信号,因为这些信号对于PCI总线是可选信号。PCI设备还可以使用MSI机制向处理器提交中断请求,而不使用这组
    的头像 发表于 07-18 10:10 2457次阅读

    教大家如何处理x86处理器中MSI-X中断请求

    。 只是MSI-X中断机制为了支持更多的中断请求,在MSI-X Capablity结构中存放了一个指向一组Message Address和
    的头像 发表于 08-12 11:23 6856次阅读

    简述MSIMSI-X中断机制

    MSIMSI-X中断机制 在PCI总线中,所有需要提交中断请求的设备,必须能够通过INTx引脚提交中断
    的头像 发表于 08-10 17:54 5228次阅读

    x86处理器如何处理MSI-X中断请求

    x86处理器如何处理MSI-X中断请求PCIe设备发出MSI-X中断请求的方法与发出MSI
    发表于 12-17 18:28 9次下载
    x86处理器如何处理<b class='flag-5'>MSI</b>-X<b class='flag-5'>中断</b>请求

    Linux内核PCIE基础知识整理

    在PCI总线中,所有需要提交中断请求的设备,必须能通过INTx引脚提交中断请求,MSI机制是一个可选机制。而
    发表于 01-12 14:54 529次阅读
    Linux内核<b class='flag-5'>PCIE</b>基础知识整理