仅供参考
目录
更详细的见一步一步开始FPGA逻辑设计 - 高速接口之PCIe_pcie expansion rom-CSDN博客
一步一步开始FPGA逻辑设计 - 高速接口之PCIe_pcie expansion rom-CSDN博客
PCIe协议
概述
单端并行信号(PCI总线)
高速差分信号(PCIe总线):更高的时钟频率,使用更少的信号线,完成之前需要许多单端并行数据信号才能到达的总线宽度
PCI总线使用并行总线结构,在同一条总线上的所有设备共享带宽,而PCIe总线使用了高速差分总线,采用端到端的连接方式(每一条PCIe链路中只能连接两个设备)
PCIe总线除了在连接方式上与PCI总线不同之外,还使用了一些在网络通信中使用的技术,如支持多种数据路由方式,基于多通路的数据传递方式,和基于报文的数据传送方式,并充分考虑了在数据传送中出现服务质量的问题
PCIe总线规范 | 总线频率 | 单Lane的峰值带宽 | 编码方式 | 单个Lane带宽 |
---|---|---|---|---|
1.x | 1.25GHz | 2.5GT/s | 8/10b编码 | 250MB/s |
2.x | 2.5GHz | 5GT/s | 8/10b编码 | 500MB/s |
3.0 | 4GHz |
8GT/s | 128/130b编码 | 1GB/s |
在PCIe总线中,使用GT计算PCIe链路的峰值带宽。GT是在PCIe链路上传递的峰值带宽,其计算公式为 总线频率*数据位宽*2
PCIe3.0的原始数据传输带宽应该是10GT/s,实际却只有8.0GT/s(在1.0,2.0标准中,采用的是8b/10b的编码方式,也就是说每传输8比特有效数据,要附带2比特的校验位,实际要传输10比特数据),有效带宽=原始数据传输带宽*80%。而3.0标准中,使用了更为有效的128b/130b编码方案从而避免20%带宽损失,3.0的浪费带宽仅为1.538%,基本可以忽略不计,因此8GT/s的信号不再仅仅是一个理论数值,是一个实在的传输值
PCIe总线采用串行连接方式,并使用数据包(Packet)进行数据传输,采用这种结构有效去除了在PCI总线中存在的一些边带信号,如INTx和PME#等信号。在PCIe总线中,数据报文在接收和发送过程中,需要通过多个层次,包括事务层、数据链路层和物理层
PCIe总线的层次组成结构与网络中的层次结构有类似之处,但PCIe总线的各个层次都是使用哦硬件逻辑实现的。在PCIe体系结构中,数据报文首先在设备的核心层(Device Core)中产生,然后再经过该设备的事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer),最终发送出去。同样接收端的数据也需要通过物理层、数据链路层和事务层,最终到达Device Core
在PCIe总线层次结构中,事务层最易理解,同时也与系统软件直接相关
事务层定义了PCIe总线使用总线事务,其中多数总线事务与PCI总线兼容。这些总线事务可以通过Switch等设备传送到其他PCIe设备或RC(Root Complex),RC也可以使用这些总线事务访问PCIe设备。事务层接收来自PCIe设备核心层的数据,并将其封装为TLP(Transaction Layer Packet)后,发向数据链路层。此外事务层还可以从数据链路层中接收数据报文,然后转发至PCIe设备的核心层。事务层还使用流量控制机制保证PCIe链路的使用效率
在 PCIe(PCI Express)总线架构中,RC 指的是 Root Complex(根复合体)。它是整个 PCIe 系统的核心和起点。
你可以把 Root Complex 想象成 CPU 与整个 PCIe 设备世界之间的“总管家”和“翻译官”。它的作用至关重要:
连接处理器和内存系统: RC 直接连接到 CPU(或系统芯片组)和系统的主内存(RAM)。这是 PCIe 通信的源头和目的地。
生成 PCIe 事务: 当 CPU 需要访问一个 PCIe 设备(比如读取显卡数据、写入硬盘数据)时,RC 负责将这些 CPU 的请求(内存读/写、I/O 读/写等)转换成符合 PCIe 协议规范的总线事务(TLP - Transaction Layer Packet)。
接收并处理 PCIe 事务: 当 PCIe 设备需要向 CPU 发送数据(如网卡收到数据包、设备发送中断)时,RC 接收这些来自 PCIe 总线的 TLP,并将其转换成 CPU 能理解的格式,传递给 CPU 或存入系统内存。
提供 PCIe 层次结构的根: RC 是 PCIe 树状拓扑结构的根节点。所有 PCIe 通信流(包括通过 Switch 传输的)最终都源于或流向 RC。
聚合根端口: 一个 RC 内部通常包含一个或多个 Root Port(根端口)。这些根端口是物理的 PCIe 连接点(通常是主板上的 PCIe 插槽或焊点)。
每个 Root Port 在逻辑上相当于一个虚拟的 PCI-to-PCI Bridge(在 PCI 树中),它连接到一个 PCIe Link(链路)。
这些 Link 可以直接连接到一个 Endpoint(端点设备,如显卡、网卡),或者连接到一个 Switch(交换机)。Switch 进一步扩展出多个端口,可以连接更多的 Endpoint 或其他 Switch。
资源集中器: RC 集中了系统资源(如内存地址空间、I/O 地址空间、中断资源等),并负责在启动时(枚举过程)向连接在其下的所有 PCIe 设备分配这些资源(BARs - Base Address Registers)。
协议转换: RC 处理 CPU 使用的系统总线协议(如 Intel 的 DMI, AMD 的 Infinity Fabric)与 PCIe 协议之间的转换。
错误处理和高级功能: RC 通常负责处理 PCIe 链路级错误报告、高级电源管理、热插拔支持(如果端口支持)等系统级功能。
简单来说:
RC 是 CPU 与 PCIe 设备之间的必经之路。 没有 RC,CPU 无法和任何 PCIe 设备通信。
RC 是 PCIe 世界的“总闸门”和“调度中心”。 所有进出 PCIe 设备的数据流都由它管理和路由。
RC 是 PCIe 树状结构的“根”。 所有设备都直接或间接地连接在 RC 下面。
为什么在描述事务传输时会提到 RC?
因为用户层(软件)发起的对 PCIe 设备的任何访问(读/写内存、I/O、配置空间),最终都必须由 CPU 发起请求,经过 RC 转换成 PCIe 事务(TLP)。这个 TLP 被发送出去,经过可能的 Switch 等设备,到达目标设备。设备返回的响应 TLP 也最终会回到 RC,由 RC 处理并递交给 CPU。
事务是从 RC 发出,经过 Switch 等设备,传送到目标 PCIe 设备;或者从 PCIe 设备发出,经过 Switch 等设备,传送回 RC。PC 主机侧的核心就是 RC。
总结:RC (Root Complex) 是 PCIe 架构中连接处理器/内存子系统与 PCIe 设备层次结构的核心组件,负责发起和终止 PCIe 事务、管理拓扑结构、分配资源以及处理协议转换。 它是整个 PCIe 通信的基石
总线信号
在处理器系统中,×16 PCIe插槽的信号配置及辅助信号详解如下:
一、信号线组成
32对差分信号(64根线)
注:信号命名中的
T
(Transmit) 和R
(Receive) 是从插槽视角定义的。对RC而言,PETxx
是输出,PERxx
是输入;而对插入的设备(如显卡),方向相反。发送链路(TX):
PETp0~15
/PETn0~15
(共16对)
作用:从Root Complex(RC)或设备发出数据至链路对端。接收链路(RX):
PERp0~15
/PERn0~15
(共16对)
作用:接收对端设备(如显卡、SSD)传来的数据。
二、关键辅助信号
PCIe总线依赖以下辅助信号实现基础功能:
信号名 方向 作用 PRSNT# 设备→插槽 存在检测:设备插入时拉低,通知系统有设备存在。双引脚设计(PRSNT1#/PRSNT2#)可检测供电需求(如×16插槽需75W)。 CLKREQ# 设备→系统 时钟请求:设备需要工作时拉低,激活参考时钟(REFCLK);空闲时可拉高以节能。 REFCLK+/- 系统→设备 参考时钟:提供100MHz差分时钟,同步数据收发(PCIe 1.0-4.0必需,PCIe 5.0+可选)。 PERST# 系统→设备 全局复位:冷启动或热复位时拉低,强制设备复位至初始状态。 WAKE# 设备→系统 唤醒信号:设备从低功耗状态唤醒系统时触发(如网卡收到网络包)。 SMCLK/SMDAT 可选 SMBus接口:用于设备管理(如读取EEPROM信息),非必需但常见于高端设备。
三、功能详解
PRSNT#(存在检测)
物理上通过插槽引脚长短实现热插拔支持:短引脚(PRSNT#)先断开,长引脚(电源)后断开,避免电弧。
系统通过检测PRSNT1#/PRSNT2#的电平组合,判断设备功耗需求(如×16设备需75W时,两引脚均接地)。
CLKREQ#(时钟请求)
节能关键:设备休眠时可关闭REFCLK以降低功耗(符合PCIe电源管理规范 ASPM/L1)。
REFCLK(参考时钟)
早期PCIe依赖外部时钟同步,PCIe 5.0+ 支持基于数据流的时钟恢复(无REFCLK模式),但兼容性仍保留此信号。
PERST#(复位控制)
冷启动时由RC控制拉低≥100ms;热复位时拉低≥1ms,确保设备状态重置。
WAKE#(唤醒事件)
需配合系统BIOS/OS的电源管理策略,例如从睡眠状态(S3)唤醒主机。
配置空间
其中HOST主桥或者PCI桥使用Type 00h配置请求,访问与HOST主桥或者PCI桥直接相连的PCI Agent设备或者PCI桥;而使用Type 01h配置请求,需要至少穿越一个PCI桥,访问没有与其直接相连的PCI Agent设备或者PCI桥。在PCI总线中,只有PCI桥能够接收Type 01h配置请求。Type 01h配置请求不能回执二发向最终的PCI Agent设备,而只能由PCI桥将其转换为Type 01h继续向其他PCI桥,或者转换为Type 00h配置请求发向PCI Agent设备
一、两种配置请求的核心区别
请求类型 发起者 目标设备 拓扑位置 转换规则 Type 00h HOST主桥/PCI桥 直接连接的PCI Agent或下级PCI桥 同一条总线 无需转换 Type 01h HOST主桥/上游PCI桥 非直连设备(跨桥访问) 下游其他总线 必须由PCI桥转换 二、配置请求的传递流程
场景示例(3级PCI总线拓扑):
访问PCI Agent A(与HOST主桥直连):
HOST主桥发出 Type 00h 请求 → 直接抵达目标
访问PCI Agent B(需跨PCI桥1):
Step 1:HOST主桥发出 Type 01h 请求 → PCI桥1接收
Step 2:PCI桥1将其转换为 Type 00h 请求 → 发送至PCI Agent B
三、PCI桥的关键角色
PCI桥是Type 01h请求处理的唯一枢纽,其行为遵循以下规则:
请求拦截:
仅PCI桥能接收Type 01h请求(Agent设备会忽略该请求)
地址解码:
检查请求中的目标总线号(Bus Number):
若匹配自身次级总线号 → 转换为Type 00h发送到下游
若目标总线在下游更远处 → 原样转发Type 01h到下一级桥
拓扑管理:
每级PCI桥维护三组总线号:
Primary Bus(上游总线)
Secondary Bus(直连的下级总线)
Subordinate Bus(下游所有总线的最大编号)
四、配置空间访问的硬件支撑
PCI规范通过以下机制实现该逻辑:
专用配置周期生成:
HOST主桥通过CF8h/CFCh端口(x86)或ECAM机制(PCIe)发起配置请求
PCI桥的配置寄存器:
Bridge Control Register:控制转发行为
Primary/Secondary/Subordinate Bus Number:定义总线范围
IDSEL信号:
Type 00h请求中,通过物理引脚选择目标设备(每个设备独占一条IDSEL)
五、Type 01h请求的报文结构
关键字段定义(以32位地址为例):
| 31:24 | 23:16 | 15:11 | 10:8 | 7:0 | |----------|-----------|-------------|-----------|------------| | 保留(0) | 目标总线号 | 目标设备号 | 目标功能号 | 寄存器偏移 |
目标总线号:决定请求在哪条总线上转为Type 00h
设备/功能号:用于最终Type 00h请求的IDSEL选择
六、为什么设计两种请求类型?
拓扑隔离性:
避免总线号冲突(每条总线独立编号)
功耗优化:
非目标总线上的设备无需响应配置请求
扩展性:
支持任意深度的树状拓扑(理论最多256条总线)
兼容性:
与PCI桥的转发逻辑解耦,简化设备设计
七、PCIe的演进与兼容
PCIe继承了此机制但优化了实现:
配置请求封装:
Type 00h/01h被封装为TLP(Transaction Layer Packet)
ECAM替代端口IO:
将配置空间映射到MMIO区域(增强型配置访问机制)
转发逻辑不变:
PCIe Switch中的上游端口仍执行PCI桥的Type 01h转换逻辑
总结
PCI总线的双类型配置请求是支撑其树状拓扑的核心设计:
Type 00h → 本地总线访问(垂直方向)
Type 01h → 跨桥路由寻址(水平方向)
通过PCI桥的智能转换(Type 01h→Type 00h),实现了对复杂层级设备的无缝访问,该设计至今仍是PCIe体系的基础逻辑。
基本配置空间
一、PCI配置空间核心框架
特性 | 说明 |
---|---|
空间大小 | 64字节(0x00~0x3F),所有PCI设备必须实现 |
访问方式 | HOST主桥通过配置读写事务访问(如x86的CF8h/CFCh端口或PCIe的ECAM机制) |
地址属性 | 配置空间地址属于PCI总线域地址(与内存域地址隔离) |
空间类型 | 分三类:PCI Agent设备 / PCI桥 / Cardbus桥片(本文聚焦Agent设备的Type 00h) |
二、Type 00h配置空间寄存器详解
寄存器布局与功能
更详细的见一步一步开始FPGA逻辑设计 - 高速接口之PCIe_pcie expansion rom-CSDN博客
关键寄存器功能
设备标识(0x00~0x03)
Vendor ID (16b):设备制造商ID(如Intel=8086h, NVIDIA=10DEh)
Device ID (16b):具体设备型号ID(由厂商分配)
控制与状态(0x04~0x07)
Command Register (16b):
Bit 0 : I/O Space Enable # 启用I/O访问
Bit 1 : Memory Space Enable # 启用内存访问
Bit 2 : Bus Master Enable # 允许设备发起DMA
Bit 3 : Special Cycles # 监听特殊周期
Bit 6 : Parity Error Enable # 奇偶校验使能
Status Register (16b):
Bit 4 : Capabilities List # 扩展能力链表存在标志
Bit 5 : 66MHz Capable # 支持66MHz总线
类别码(0x08~0x0B)
Class Code (24b):设备功能分类
0x03_00_00 : 显示控制器(显卡)
0x01_00_00 : SCSI控制器(硬盘)
0x02_00_00 : 网络控制器(网卡)
基址寄存器 BARs(0x10~0x27)
作用:定义设备需要的内存或I/O地址空间
类型判断:
BAR[0] = 0xFFFF0001 # Bit0=1 → I/O空间
BAR[1] = 0xFFFFFFF0 # Bit0=0 → 内存空间
操作流程:
OS向BAR写入全1(0xFFFFFFFF)
设备返回可分配的资源大小(低位0的位数表示范围)
例:0xFFFF0000 → 需要64KB空间
中断配置(0x3C~0x3F)
Interrupt Line (8b):设备连接的中断线(如APIC的IRQ号)
Interrupt PIN (8b):硬件中断引脚(INTA#=1, INTB#=2,...)
三、配置空间访问流程
系统初始化时的枚举过程
四、高级特性扩展
Capabilities Pointer (Status寄存器的Bit4)
指向扩展能力链表(偏移0x34),支持PCIe高级功能:
MSI/MSI-X:消息信号中断
Power Management:电源管理
PCIe Express Capability:链路速率/宽度控制
Header Type (0x0E)
Bit7=0:标准Agent设备
Bit7=1:多功能设备(每个功能独立配置空间)
五、PCI vs PCIe配置空间差异
特性 | PCI | PCIe |
---|---|---|
访问机制 | I/O端口 (CF8h/CFCh) | ECAM (内存映射) |
空间大小 | 64字节 (基本) | 4KB (含扩展能力区) |
中断支持 | INTx#引脚 | MSI/MSI-X (优先) |
配置寄存器 | 直接定义 | 封装为TLP包传递 |
注:PCIe完全兼容PCI配置空间,前64字节结构一致。
事务层协议
事务层是PCIe总线层次结构的最高层,该层次将接收PCIe设备核心层的数据请求,并将其转换为PCIe总线事务,PCIe总线使用的这些事务在TLP头中定义
在PCIe总线中,Non-Posted总线事务分为两部分进行,首先是发送端向接收端提交总线读写请求,之后接收端再向发送端发送完成(Completion)报文。PCIe总线使用Split传送方式处理所有Non-Posted总线事务,存储器读、I/O读写和配置读写这些Non-Posted总线事务都使用Split传送方式。PCIe的事务层还支持流量控制和虚通路管理等一系列特性
TLP格式
(79 封私信 / 81 条消息) 跟小灰灰一起学PCIe——PCIe总线事务层TLP中Fmt字段和Type字段 - 知乎
2.2 PCIe控制器——传输层——数据报文TLP格式_pcie tlp报文-CSDN博客
当处理器或者其他PCIe设备访问PCIe设备时,所传送的数据报文首先通过事务层被封装为一个或多个TLP,之后才能通过PCIe总线的各个层次发送出去
TLP Prefix(optional) | TLP Prefix(optional) | TLP Head | Data Payload | TLP Digest(optional) |
一个完整的TLP由1个或者多个TLP Prefix、TLP头、Data Payload(数据有效负载)和TLP Digest组成。TLP头是TLP最重要的标志,不同的TLP其头的定义并不相同。TLP头包含了当前TLP的总线事务类型、路由信息等一系列信息。在一个TLP中,Data Payload的长度可变,最小为0,最大为1024DW。
TLPDigest是一个可选项, 一个TLP是否需要TLP Digest由TLP头决定。DataPayload也是一个可选项,有些TLP并不需要DataPayload,如存储器读请求、配置和I/O写完成TLP并不需要Data Payload。
TLPPrefix由PCIe V2.1总线规范引入,分为LocalTLP Prefix和EP-EP TLP Prefix两类。其中Local TLP Prefix的主要作用是在PCIe链路的两端传递消息,而EP-EP TLP Prefix的主要作用是在发送设备和接收设备之间传递消息。
TLP头由3个或者4个双字(DW)组成。其中第一个双字中保存通用TLP头,其他字段与通用TLP头的Type字段相关。一个通用TLP头由Fmt、Type、TC、Length等字段组成,如图5‑2所示。
如果存储器读写TLP支持64位地址模式时,TLP头的长度为4DW,否则为3DW。而完成报文的TLP头不含有地址信息,使用的TLP头长度为3DW。
TLP Header (必选)
字段 | 位宽 | 作用 |
---|---|---|
Fmt | 2b | 包头格式:00 =3DW无数据, 01 =4DW无数据, 10 =3DW带数据, 11 =4DW带数据 |
Type | 5b | 事务类型:00000 =内存读, 00001 =带锁读, 00010 =内存写, 00100 =配置读 |
TC | 3b | 流量类别(Traffic Class),用于QoS调度 |
Attr | 3b | 属性:宽松排序(Relaxed Ordering)/无监听(No Snoop)/ID-based排序 |
TH | 1b | TLP处理提示(可选) |
TD | 1b | TLP摘要存在位(1=有ECRC) |
EP | 1b | 中毒位(表示数据错误) |
Length | 10b | 数据载荷长度(以DW为单位,最大1024 DW=4KB) |
Requester ID | 16b | 请求者ID(Bus+Device+Function) |
Tag | 8b | 事务标签(用于区分未完成请求) |
Byte Enables | 8b | 首/末DW字节使能(控制部分写入) |
Address | 32/64b | 目标地址(配置请求时为Bus/Dev/Func号) |
Data Payload (可选)
最大4KB,内容取决于事务类型:
内存写:写入的数据
配置读:返回的配置寄存器值
消息事务:消息编码
TLP Digest (可选)
包含32位 ECRC(端到端CRC校验),由发送方生成,接收方验证
不同事务的TLP示例
内存写请求(MWr)TLP
Header:
Fmt=10 (3DW带数据), Type=00010 (MWr), Length=数据长度
Address=目标物理地址
Data: 待写入数据配置读请求(CfgRd0)TLP
Header:
Fmt=00 (3DW无数据), Type=00100 (CfgRd0)
Address[31:16]=0, Address[15:0]= {Bus, Dev, Func, Reg}
TLP路由方式
事务类型 | 路由依据 | 应用场景 |
---|---|---|
内存读写 | 地址路由 | 访问设备BAR空间 |
配置读写 | ID路由 (Bus/Dev/Func) | 枚举设备/配置寄存器 |
消息事务 | 隐式路由 | 中断、电源管理事件 |
TLP类型 Fmt[2:0] Type[4:0] 描述 MRd 0b000
0b001
0b0000 存储器读请求;TLP头大小为3个或者4个双字,不带数据 MWr 0b010
0b011
0b0000 存储器写请求;TLP头大小为3个或者4个双字,带数据 CpID 0b010 0b1010 带数据的完成报文,TLP头大小为3个双字,包括存储器读、I/O读、配置读和原子操作读完成
PCIe总线的数据报文传送方式与PCI总线数据传送有类似之处。其中存储器写TLP使用Posted方式进行传送,而其他总线事务使用Non-Posted方式。PCIe总线规定所有Non-Posted存储器请求使用Split总线方式进行数据传递。当PCIe设备进行存储器读、I/O读写或者配置读写请求时,首先向目标设备发送数据读写请求TLP,当目标设备收到这些读写请求TLP后,将数据和完成信息通过完成报文(Cpl或者CplD)发送给源设备。
其中存储器读、I/O读和配置读需要使用CplD报文,因为目标设备需要将数据传递给源设备;而I/O写和配置写需要使用Cpl报文,因为目标设备不需要将任何数据传递给源设备,但是需要通知源设备,写操作已经完成,数据已经成功地传递给目标设备。
存储器和配置读写请求TLP
(1)存储器请求TLP和读完成TLP
当PCIe主设备,RC或者EP,访问目标设备的存储器空间时,使用Non-Posted总线事务向目标设备发出存储器请求TLP,目标设备收到这个存储器读请求TLP后,使用存储器读完成TLP,主动向主设备传递数据。当主设备收到目标设备的存储器读完成TLP后,将完成一次存储器读操作
(2)存储器写请求TLP
在PCIe总线中,存储器写使用Posted总线事务。PCIe主设备仅使用存储器请求TLP即可完成存储器写操作,主设备不需要目标设备的回应报文
(3)配置读写请求TLP和配置读写完成TLP
从总线事务的角度上看,配置读写请求操作的过程与I/O读写操作的过程类似。配置读写请求TLP都需要配置读写完成作为应答,从而完成一个完成的配置读写操作
在PCIe总线中,存储器写请求TLP使用Posted数据传送方式。而其他与存储器和I/O相关的报文都使用Split方式进行数据传送,这些请求报文需要完成报文,通知发送端之前的数据请求报文已经被处理完毕。存储器读写请求TLP使用地址路由方式进行数据传递,在这类TLP头中包含Address字段,Address字段具有两种地址格式,分别是32位和64位地址。在存储器读写和I/O读写请求的第3和第4个双字中,存放TLP的32或者64位地址。存储器、I/O和原子操作读写请求使用的TLP头较为类似。
中断
在PCI总线中,所有需要提交中断请求的设备,必须能够通过INTx引脚提交中断请求,而MSI机制是一个可选机制。而在PCIe总线中,PCIe设备必须支持MSI或者MSI-X中断请求机制,而可以不支持INTx中断消息。在PCIe总线中,MSI和MSI-X中断机制使用存储器写请求向处理器提交中断请求
不同的处理器对PCIe设备发出的MSI报文的解释并不相同。但是PCIe设备在提交MSI中断请求时,都是向MSI/MSI-X Capability结构中的Message Address的地址写Message Data数据,从而组成一个存储器写TLP,向处理器提交中断请求
有些PCIe设备还可以支持Legacy中断方式,通过发送Assert_INTx和Deassert_INTx消息报文进行中断请求,即虚拟中断线方式。。但是PCIe总线并不鼓励其设备使用Legacy中断方式,在绝大多数情况下,PCIe设备使用MSI或者MSI/X方式进行中断请求。
PCIe总线提供Legacy中断方式的主要原因是,在PCIe体系结构中,存在许多PCI设备,而这些设备通过PCIe桥连接到PCIe总线中。这些PCI设备可能并不支持MSI/MSI-X中断机制,因此必须使用INTx信号进行中断请求。
当PCIe桥收到PCI设备的INTx信号后,并不能将其直接转换为MSI/MSI-X中断报文,因为PCI设备使用INTx信号进行中断请求的机制与电平触发方式类似,而MSI/MSI-X中断机制与边沿触发方式类似。这两种中断触发方式不能直接进行转换。因此当PCI设备的INTx信号有效时,PCIe桥将该信号转换为Assert_INTx报文,当这些INTx信号无效时,PCIe桥将该信号转换为Deassert_INTx报文。
与Legacy中断方式相比,PCIe设备使用MSI或者MSI-X中断机制,可以消除INTx这个边带信号,而且可以更加合理地处理PCIe总线的“序”。目前绝大多数PCIe设备使用MSI或者MSI-X中断机制提交中断请求。