ARTICLE · 1004911
PCIe5.0标准协议规范中文-7. 软件初始化和配置-7.8 常见PCI和PCIe能力-7.8.10 Flattening Portal Bridge(FPB)能力
7.8.10 Flattening Portal Bridge(FPB)能力
Flattening Portal Bridge(FPB)功能是实现FPB的任何桥功能所必需的可选功能。FPB Capability结构如图7-161所示。
图7-161 FPB能力结构
Figure 7-161 FPB Capability Structure

如果交换实现FPB,则交换的每个端口必须实现FPB能力结构。允许RC在其部分或全部根端口上实现FPB能力结构。允许RC为内部逻辑总线实现FPB功能。
7.8.10.1 FPB能力标头(偏移量00h)
图7-162 FPB Capability Header
Figure 7-162 FPB Capability Header

Table 7-129 FPB Capability Header
Bit Location | Register Description | Attributes |
7:0 | 能力ID - 必须设置为15h。 | RO |
15:8 | 下一个指针 - 指向能力列表中的下一个项。列表中的最后一项必须为00h。 | RO |
7.8.10.2 FPB能力寄存器(偏移量04h)
图7-163详细描述了FPB能力寄存器的寄存器字段分配,表7-130描述了该寄存器的要求。
图7-163 FPB能力寄存器
Figure 7-163 FPB Capabilities Register

表7-130 FPB能力寄存器
Table 7-130 FPB Capabilities Register
位位置 | 寄存器描述 | 属性 |
0 | FPB RID 解码机制支持 - 如果设置,则表示支持 FPB RID 向量机制。 | HwInit |
1 | FPB MEM 低解码机制支持 - 如果设置,则表示支持 FPB MEM 低向量机制。 | HwInit |
2 | FPB MEM 高解码机制支持 - 如果设置,则表示支持 FPB MEM 高机制。 | HwInit |
7:3 | FPB 数量次级设备 - 仅针对开关的上游端口,此字段指示与上游端口桥的次级侧关联的设备编号数量。数量由此字段的数值加一确定。虽然建议开关实现时为每个分配的设备编号使用所有 8 个允许的功能号来分配下游端口,从而使所有下游端口在设备和功能号的连续范围内分配,但明确允许将下游端口分配到指定设备编号范围内不连续的功能号。系统软件需要在与上游端口的次级侧相关的设备编号的每个功能号中扫描开关下游端口。此字段为下游端口保留。 | HwInit/RsvdP |
10:8 | FPB RID 向量大小支持 - 表示硬件实现的 FPB RID 向量的大小,并限制软件可以写入 FPB RID 向量粒度字段的允许值。定义的编码如下: - 000b: 256 位,允许粒度: 8, 64, 256 - 010b: 1 K 位,允许粒度: 8, 64 - 101b: 8 K 位,允许粒度: 8 所有其他编码为保留。如果 FPB RID 解码机制支持位被清除,则此字段中的值未定义,软件必须忽略。 | HwInit |
18:16 | FPB MEM 低向量大小支持 - 表示硬件实现的 FPB MEM 低向量的大小,并限制软件可以写入 FPB MEM 低向量起始字段的允许值。定义的编码如下: - 000b: 256 位,允许粒度: 1, 2, 4, 8, 16 - 001b: 512 位,允许粒度: 1, 2, 4, 8 - 010b: 1 K 位,允许粒度: 1, 2, 4 - 011b: 2 K 位,允许粒度: 1, 2 - 100b: 4 K 位,允许粒度: 1 所有其他编码为保留。如果 FPB MEM 低解码机制支持位被清除,则此字段中的值未定义,软件必须忽略。 | HwInit |
26:24 | FPB MEM 高向量大小支持 - 表示硬件实现的 FPB MEM 高向量的大小。定义的编码如下: - 000b: 256 位 - 001b: 512 位 - 010b: 1 K 位 - 011b: 2 K 位 - 100b: 4 K 位 - 101b: 8 K 位 所有定义的粒度均允许所有定义的向量大小。如果 FPB MEM 高解码机制支持位被清除,则此字段中的值未定义,软件必须忽略。 | HwInit |
7.8.10.3 FPB RID矢量控制1寄存器(偏移量08h)
图7-164详细描述了FPB RID控制1寄存器的寄存器字段分配,表7-131描述了该寄存器的要求。
图7-164 FPB RID矢量控制1寄存器
Figure 7-164 FPB RID Vector Control 1 Register

表7-131 FPB RID矢量控制1寄存器
Table 7-131 FPB RID Vector Control 1 Register
以下是翻译后的内容及其表格形式:
位位置 | 寄存器描述 | 属性 |
0 | FPB RID 解码机制使能 - 当设置时,启用 FPB RID 解码机制。如果 FPB RID 解码机制支持位被清除,则允许硬件将此位实现为只读 (RO),在这种情况下此字段的值未定义。此位的默认值为 0b。 | RW/RO |
7:4 | FPB RID 向量粒度 - 软件写入此字段的值控制 FPB RID 向量的粒度以及 FPB RID 向量起始字段的对齐要求。定义的编码如下: - 0000b: 8 RIDs - 0011b: 64 RIDs - 0101b: 256 RIDs 所有其他编码为保留。根据实现的 FPB RID 向量大小,硬件允许仅实现可以编程为非零值的位,在这种情况下,高位可以但不要求硬接线为 0。如果 FPB RID 解码机制支持位被清除,则允许硬件将此字段实现为只读 (RO),在这种情况下此字段的值未定义。对于下游端口,如果设备控制 2 寄存器中的 ARI 转发使能位和 FPB RID 解码机制使能位被设置,则软件必须将 0101b 编程到此字段中(如果此字段是可编程的)。此字段的默认值为 0000b。 | RW/RO |
31:19 | FPB RID 向量起始 - 软件写入此字段的值控制 FPB RID 向量应用的偏移量。值表示以 8 RIDs 为单位的 RID 偏移量,FPB RID 向量的位 0 表示从此寄存器中表示的值开始的 RIDs 范围,直到该值加上 FPB RID 向量粒度减去 1,位 1 表示从此寄存器值加上粒度开始的范围,直到该值加上 FPB RID 向量粒度减去 1,等等。软件必须根据 FPB RID 向量粒度字段中的值将此字段编程为自然对齐的值(即低位必须为 0)。FPB RID 向量粒度起始对齐约束如下: - 0000b: 无约束 - 0011b: …00 0b - 0101b: …0000 0b 所有其他编码为保留。如果违反此要求,硬件行为未定义。对于下游端口,如果设备控制 2 寄存器中的 ARI 转发使能位和 FPB RID 解码机制使能位被设置,则软件必须将此字段的 23:19 位编程为 0000 0b,如果编程其他值,硬件行为未定义。如果 FPB RID 解码机制支持位被清除,则允许硬件将此字段实现为只读 (RO),在这种情况下此字段的值未定义。此字段的默认值为 0000 0000 0000 0b。 | RW/RO |
7.8.10.4 FPB RID矢量控制2寄存器(偏移量0Ch)
图7-165详细描述了FPB RID矢量控制2寄存器的寄存器字段分配,表7-132描述了该寄存器的要求
图7-165 FPB RID矢量控制2寄存器
Figure 7-165 FPB RID Vector Control 2 Register

表7-132 FPB RID矢量控制2寄存器
Table 7-132 FPB RID Vector Control 2 Register
位位置 | 寄存器描述 | 属性 |
15:3 | RID Secondary Start - 软件写入此字段的值控制 Type 1 配置请求通过桥接时必须转换为 Type 0 的 RID 偏移量。RID 偏移量的位 [2:0] 由硬件固定为 000b,无法修改。对于下游端口,如果设备控制 2 寄存器中的 ARI 转发使能位被设置,则软件必须将此字段的位 7:3 写为 0000b。如果 FPB RID 解码机制支持位被清除,则允许硬件将此字段实现为只读 (RO),在这种情况下此字段的值未定义。此字段的默认值为 0000 0000 0000 0b。 | RW/RO |
图7-166详细描述了FPB MEM Low Vector Control Register的寄存器字段分配,表7-133描述了该寄存器的要求。
图7-166 FPB MEM Low Vector Control Register
Table 7-133 FPB MEM Low Vector Control Register

表7-133 FPB MEM Low Vector Control Register
Table 7-133 FPB MEM Low Vector Control Register
位位置 | 寄存器 | 描述 | 属性 |
0 | FPB MEM 低地址解码 | 启用 - 当设置为1时,启用 FPB MEM 低地址解码机制。如果 FPB MEM 低地址解码机制支持位为清除状态,则硬件可以将此位实现为只读(RO),在这种情况下,该字段的值是未定义的。该位的默认值为 0b。 | RW/RO |
7:4 | FPB MEM 低向量粒度 | 软件写入该字段的值控制 FPB MEM 低向量的粒度,以及 FPB MEM 低向量起始字段的所需对齐方式。定义的编码为: 0000b = 1 MB, 0001b = 2 MB, 0010b = 4 MB, 0011b = 8 MB, 0100b = 16 MB。 所有其他编码保留。 根据实施的 FPB MEM 低向量大小,硬件可以仅将该字段中可以编程为非零值的位实现为读写(RW),在这种情况下,高位可以但不需要硬连线为 0。如果 FPB MEM 低地址解码机制支持位为清除状态,则硬件可以将此字段实现为只读(RO),在这种情况下,该字段的值是未定义的。该字段的默认值为 0000b。 | RW/RO |
31:20 | FPB MEM 低向量起始 | 软件写入该字段的值设置 FPB MEM 低向量应用的基地址的 31:20 位。软件必须将该字段编程为一个自然对齐的值(即低位必须为 0),根据 FPB MEM 低向量粒度字段的值。 FPB MEM 低向量粒度约束: 0000b <无约束>, 0001b …0b, 0010b …00b, 0011b …000b, 0100b …0000b。 如果违反此要求,硬件行为是未定义的。如果 FPB MEM 低地址解码机制支持位为清除状态,则硬件可以将此字段实现为只读(RO),在这种情况下,该字段的值是未定义的。该字段的默认值为 000h。 | RW/RO |
7.8.10.6 FPB MEM High Vector Control 1 Register(偏移量14h)
图7-167详细描述了FPB MEM High Vector Control 1 Register的寄存器字段分配,表7-134描述了该寄存器的要求。
Figure 7-167 FPB MEM High Vector Control 1 Register
图7-167 FPB MEM High Vector Control 1 Register

表7-134 FPB MEM High Vector Control 1 Register
Table 7-134 FPB MEM High Vector Control 1 Register:
位位置 | 寄存器描述 | 描述 | 属性 |
0 | FPB MEM 高地址解码机制启用 | 当设置为1时,启用 FPB MEM 高地址解码机制。如果 FPB MEM 高地址解码机制支持位为清除状态,则允许硬件将此位实现为只读(RO),在这种情况下,该字段的值未定义。该位的默认值为 0b。 | RW/RO |
7:4 | FPB MEM 高向量粒度 | 软件写入该字段的值控制 FPB MEM 高向量的粒度,以及 FPB MEM 高向量起始低位字段的对齐要求。软件可以从下表中选择任何允许的粒度,无论 FPB MEM 高向量大小支持字段的值如何。定义的编码为: 0000b 256 MB 0001b 512 MB 0010b 1 GB 0011b 2 GB 0100b 4 GB 0101b 8 GB 0110b 16 GB 0111b 32 GB 其他编码保留。 根据实现的 FPB MEM 高向量大小,硬件仅允许将可以编程为非零值的字段位实现为 RW,高位位可以硬连线为 0,但不是必需的。如果 FPB MEM 高地址解码机制支持位为清除状态,则允许硬件将此字段实现为 RO,该字段的值未定义。该字段的默认值为 0000b。 | RW/RO |
31:28 | FPB MEM 高向量起始低位 | 软件写入该字段的值设置 FPB MEM 高向量应用的基地址的低位。软件必须将该字段编程为自然对齐的值(即低位必须为0),根据 FPB MEM 高向量粒度字段中的值,具体约束如下: 0000b <无约束> 0001b …0b 0010b …00b 0011b …000b 0100b …0000b 0101b …0 0000b 0110b …00 0000b 0111b …000 0000b 如果违反此要求,硬件行为未定义。如果 FPB MEM 高地址解码机制支持位为清除状态,则允许硬件将此字段实现为 RO,该字段的值未定义。该字段的默认值为 0h。 | RW/RO |
7.8.10.7 FPB MEM High Vector Control 2 Register(偏移量18h)
图7-168详细描述了FPB MEM High Vector Control 2 Register的寄存器字段分配,表7-135描述了该寄存器的要求。
Figure 7-168 FPB MEM High Vector Control 2 Register
图7-168 FPB MEM High Vector Control 2 Register

表7-135 FPB MEM High Vector Control 2 Register
Table 7-135 FPB MEM High Vector Control 2 Register
位位置 | 寄存器描述 | 描述 | 属性 |
31:0 | FPB MEM 高向量起始高位 | 软件写入该字段的值设置 FPB MEM 高向量应用的基地址的 63:32 位。软件必须将该字段编程为自然对齐的值(即低位必须为0),根据 FPB MEM 高向量粒度字段中的值,具体约束如下: 0000b <无约束> 0001b <无约束> 0010b <无约束> 0011b <无约束> 0100b <无约束> 0101b …0b 0110b …00b 0111b …000b 如果违反此要求,硬件行为未定义。如果 FPB MEM 高地址解码机制支持位为清除状态,则允许硬件将此字段实现为只读(RO),该字段的值未定义。该字段的默认值为 0000 0000h。 | RW/RO |
7.8.10.8 FPB Vector Access Control Register(偏移1Ch)
图7-169详细描述了FPB Vector Access Control Register的寄存器字段分配,表7-136描述了该寄存器的要求。
图7-169 FPB Vector Access Control Register
Figure 7-169 FPB Vector Access Control Register

Table 7-136 FPB Vector Access Control Register
位位置 | 寄存器描述 | 描述 | 属性 |
7:0 | FPB 向量访问偏移量 | 该字段中的值指示可以通过 FPB 向量访问数据寄存器读取或写入的 FPB RID、MEM Low 或 MEM High 向量的 双字 部分的偏移量。RID、MEM Low 或 MEM High 的选择由写入 FPB 向量选择字段的值决定。 该字段的位映射到偏移量,具体取决于对应 FPB RID、MEM Low 或 MEM High 向量大小支持字段中的值,如下所示: 向量大小支持 偏移位 向量访问偏移量 000b 2:0 2:0 (7:3 未使用) 001b 3:0 3:0 (7:4 未使用) 010b 4:0 4:0 (7:5 未使用) 011b 5:0 5:0 (7:6 未使用) 100b 6:0 6:0 (7 未使用) 101b 7:0 7:0 所有其他编码保留。 根据上表,未使用的位必须由软件写入 0b,允许但不要求实现为只读(RO)。 该字段的默认值为 00h。 | RW/RO |
15:14 | FPB 向量选择 | 写入此字段的值选择在指示的 FPB 向量访问偏移量处访问的向量。软件只能写入与支持的 FPB 机制相对应的值,否则结果未定义。 定义的编码为: 00b RID 01b MEM Low 10b MEM High 11b 保留 该字段的默认值为 00b。 | RW |
7.8.10.9 FPB Vector Access Data Register(偏移量20h)
图7-170详细描述了FPB Vector Access Data Register的寄存器字段分配,表7-137描述了该寄存器的要求。
Figure 7-170 FPB Vector Access Data Register

Table 7-137 FPB Vector Access Data Register :
位位置 | 寄存器描述 | 描述 | 属性 |
31:0 | FPB 向量访问数据 | 从该寄存器读取返回 FPB 向量中 DW 数据的值,该位置由 FPB 向量访问偏移量寄存器中的值确定。写入该寄存器将替换 FPB 向量中 DW 数据的值,该位置由 FPB 向量访问偏移量寄存器中的值确定。 如果软件编程了不受支持的 FPB 向量选择或 FPB 向量访问偏移量字段的值,该字段的行为是未定义的,但硬件仍需正常完成对该寄存器的访问。 该字段的默认值为 0000 0000h。 | RW |