【博文连载】PCIe扫盲——中断机制介绍(INTx)

一个简单的PCI总线INTx中断实现流程,如下图所示。

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

2.     CPU收到INTR信号置位后,意识到了中断请求的发生,但是此时并不知道是什么中断请求。于是通过一个特殊的指令来查询中断请求信息,该过程一般被称为中断应答(Interrupt Acknowledge);

3.     该特殊指令被发送至PIC后,PIC会返回一个8bits的中断向量(Interrupt Vector)值给CPU。该中断向量值与其发送的INTR请求是对应的;

4.     CPU收到来自PIC的中断向量值后,会去其Memory中的中断向量表(Interrupt Table)中查找对应的中断服务程序(Interrupt Service Routines,ISR)在Memory的位置;

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

上面的例子主要是基于早期的单核CPU设计的,并没有考虑到目前多核CPU的情况。因此,在后续的PCI Spec中,将PIC替换为IO APIC(Advanced Programmed Interrupt Controller)。如下图所示:

实际上,在PCIe总线中,传统的中断机制(INTx)已经很少被使用,很多应用甚至直接将该功能禁止了。无论是在PCI总线(V2.3及以后的版本),还是PCIe总线中,都可以通过配置空间中的配置命令寄存器(Configuration Command Register来禁止INTx中断机制),如下图所示。不过,需要特别注意的是,虽然该bit的名称为中断禁止(Interrupt Disable),但是其只会影响INTx,对MSI/MSI-X不会造成影响。因为MSI/MSI-X的使能(或禁止)是通过配置空间中的MSI/MSI-X Capability Command Register来实现的,并且一旦使能了MSI/MSI-X,PCI总线/PCIe总线便会自动地禁止INTx。

并且可以通过配置状态寄存器的中断状态(Interrupt Status)bit来确定当前的中断状态,如下图所示:

INTx相关的寄存器在配置空间的位置如下图所示,Interrupt Pin和Interrupt Line分别定义了中断边带信号引脚号(INTA#~INTD#)和中断向量号(IRQ0~IRQ255)。

然而,PCIe总线继承了PCI总线的INTx中断机制,但是在实际的PCIe设备之间的中断信息传输中使用的并非边带信号INTx,而是基于消息(Message)的。其中Assert_INTx消息表示INTx信号的下降沿。Dessert_INTx消息表示INTx信号的上升沿。当发送这两种消息时,PCIe设备还会将配置空间的相关中断状态bit的值更新。对于PCIe-PCI(X)桥设备来说,会将接收到的来自PCI/PCI-X总线的INTx信号转换为消息,在往上级发送。一个简单的例子如下图所示:

INTx消息的格式为:

桥设备中的INTx消息的类型与设备号的映射关系如下图所示:

对应的,一个简单的例子如下:

当多个设备使用同一个中断信号线时,只有先置位的设备会被中断控制器响应。但是该中断信号线,并不会因为其中一个设备的中断请求得到响应便被清除,而是会等到所有的发送请求的设备的中断请求都得到了响应之后。如下图所示:

 

(0)

相关推荐

  • 浅谈PCI Express体系结构(四)

    PCI总线的中断机制PCI总线使用INTA#.INTB#.INTC#和INTD#信号向处理器发出中断请求.这些中断请求信号为低电平有效,并与处理器的中断控制器连接.在PCI体系结构中,这些中断信号属于 ...

  • PCI总线的桥与配置(一)

    在PCI体系结构中,含有两类桥片,一个是HOST主桥,另一个是PCI桥.在每一个PCI设备中(包括PCI桥)都含有一个配置空间.这个配置空间由HOST主桥管理,而PCI桥可以转发来自HOST主桥的配置 ...

  • 【博文连载】PCIe扫盲——中断机制介绍(MSI-X)

    PCI总线自3.0版本开始支持MSI-X机制,对MSI做出了一些升级和改进,以克服MSI机制的三个主要的缺陷: 1.     随着系统的发展,对于特定的大型应用,32个中断向量不够用了(参考前一篇文章 ...

  • 【博文连载】PCIe扫盲——中断机制介绍(MSI)

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

  • 【博文连载】边缘检测算法介绍

    所谓边缘是指其周围像素灰度急剧变化的那些象素的集合,它是图像最基本的特征.边缘存在于目标.背景和区域之间,所以,它是图像分割所依赖的最重要的依据.由于边缘是位置的标志,对灰度的变化不敏感,,因此,边缘 ...

  • 【博文连载】Cypress CY7C68013 介绍

    由于现在的ARM大部分都集成了USB接口,而FPGA由于纯逻辑电路(不要拿异构FPGA比如MPSOC等说事),想要用Verilog HDL设计一个USB2.0内核难度相当大,并且还需要一个PHY,因此 ...

  • 【博文连载】OV7725寄存器介绍

    首先介绍一下OV7725的寄存器.OV7725总共有172个寄存器,作为CMOS Sensor的工作模式的配置.而这172个寄存器,有些只读,有些则同时支持读写功能.在传感器正常工作工作前,必须进行寄 ...

  • 【博文连载】OV7725 Sensor介绍

    好了,废话不再多说.经过了前面几个例程,LED的驱动显示应该不在话下,VGA其实真的只是固定行场时序扫描的问题,SDRAM可以站在巨人的肩膀上,我们已经完成了基本的视频图像采集流程.如果有办法在前面加 ...

  • ​【博文连载】Wishbone总线介绍

    图29 Wishbone总线结构图 ● 所有应用使用一个总线体系结构: ● 简单.紧凑的体系结构: ● 支持多控制器: ● 64位地址空间: ● 8-64 位数据总线(可扩展): ● 单周期读和写: ...

  • 【博文连载】AMBA总线介绍

    先进的微控制器总线体系结构AMBA规范定义了三种总线: (1)AHB(Advanced High-performance Bus):用于连接高性能系统模块.它支持突发数据传输方式及单个数据传输方式,所 ...

  • 【精品博文】MIPI扫盲——DSI介绍(二)

    目录篇地址:http://blog.chinaaet.com/justlxy/p/5100052503  这一篇来简单的介绍一下MIPI DSI Video Mode的三种操作模式: Non-Busr ...