PCIe INTx/msi/msi-x 中断机制

本文详细介绍了PCI Express(PCIe)的三种中断机制:传统的INTx中断、Message Signaled Interrupts (MSI) 和 MSI-X。INTx使用拉低中断线的方式向CPU发送中断信号,MSI则通过内存写操作传递中断,而MSI-X解决了MSI的限制,提供了中断号与地址的映射表,支持更多中断号且避免冲突。开启MSI或MSI-X后,INTx中断会自动关闭。
摘要由CSDN通过智能技术生成

PCIe的中断机制有3种:

a. 传统的INTx中断,4个中断线,PCI设备上的所有func可任意使用其中一根或几根线通过拉低的方式向CPU发起中断信号,并把中断号放在interrupt line寄存器中,等待CPU读取。

 

b. msi中断,PCIE配置空间前256字节中能力描述链表中如果能找到能力ID为0x05的能力描述符,则说明该PCI设备支持MSI中断,并且软件可通过配置该能力描述符来开启、关闭MSI中断,并且在开启之前需要在该描述符内填写MSI消息在主机侧的内存空间地址,用于接收MSI中断信号;并且需要将中断起启编号写到Message Data中,并且将中断个数配置到Message Control中,后续开启中断后PCI设备则根据这两个信息生成连续的中断号。开启MSI之后,传统的INTx中断自动关闭。

当硬件内部有中断产生时,他便会根据内部逻辑选择一个中断号偏移加上系统配置的起始号形成一个中断号,并且形成一个MSI的内存写TLP事务,中断号填写在MSI TLP 的Message Data中,上述配置的地址信息也填入相应位置,然后发出去,主机端的RC PCIE控制器收到该MSI 消息之后往该地址写入中断号,并发起一个CPU中断,然后收到CPU的中断向量获取指令后便从内存中提取出中断号提交上去。CPU则拿到中断向量号后,去内部的中断向量表中进行查找,然后进入系统的中断处理流程。

 

c. msi-x中断,原理同MSI,PCIE配置空间前256字节中能力描述链表中如果能找到能力ID为0x11的能力描述符,则说明该PCI设备支持MSI中断。只是MSI只支持32个中断号,并且掩码长度和中断pend长度都只有32位,不能满足后续开发需求;并且MSI的中断号还必须是连续分配;msi-x则想解决上述问题。MSI-X改进了msi的能力描述符信息,弄了一个中断号与中断消息地址的对应表格,并且都可自定义;这样便解决了中断号必须连续,和中断向量比较少的问题;地址分开还有利于解决MSI可能存在中断冲突的问题。开启MSI-X之后,自动关闭传递INTx中断。

 

同时,同一设备MSI,MSI-X均可同时打开,也可独立打开,根据硬件设计使用。

 

参考文献:

pci_express_base_rev_2.0.pdf

PCI.Local.Bus.Specification.Revision.3.0.pdf

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值