从那时起,PCI总线一直在处理器体系结构中占有重要地位。IAL是现代PC体系架构的重要奠基者。除了以上规范之外,PCISIG还推出了一系列和PCI总线直接相关的规范。其中PCI-to-PCI桥规范最为重要,理解PCI-to-PCI桥是理解PCI体系结构的基础;而CompactPCI总线规范多用于具有背板结构的大型系统,并支持热插拔。PCI和PCI-X总线使用单端并行信号进行数据传递,由于单端信号容易被外部系统干扰,其总线频率很难进一步提高。......
2025-09-30
数据链路层使用ACK/NAK协议发送和接收TLP,由发送部件和接收部件组成。其中发送部件由Replay Buffer、ACK/NAK DLLP接收逻辑和TLP发送逻辑组成;而接收部件由“Error Check”逻辑、ACK/NAK发送逻辑和TLP接收逻辑组成。数据链路层的拓扑结构如图7-1所示。在该图中含有两个PCIe设备,分别为Device A和Device B,使用的PCIe链路为Device A的发送链路,同时也为Device B的接收链路。

图7-1 数据链路层的拓扑结构
实际上每个PCIe设备的数据链路层都含有发送部件和接收部件。而上图为简化起见,仅含有Device A的发送部件和Device B的接收部件,即Device A发送链路两端使用的两个部件。Device A和Device B也具有接收部件和发送部件,这两个部件由Device B的发送链路使用,Device B发送链路的工作原理与Device A类似,本节对此不做详细介绍。
当PCIe设备进行数据传递时,首先在事务层中产生TLP,然后通过事务层将这个TLP发送给数据链路层,数据链路层将这个TLP加上Sequence前缀和LCRC后缀后,首先将这个TLP放入到Replay Buffer中,然后再发送到物理层。
目标设备(Device B)从物理层接收TLP时,将首先获得带前后缀的TLP,该TLP经过数据链路层传递给事务层时,将被去掉Sequence前缀和LCRC后缀。在数据链路层中,TLP的格式如图7-2所示。
(https://www.chuimin.cn)
图7-2 数据链路层TLP的格式
数据链路层使用ACK/NAK协议保证TLP的正确传送,ACK/NAK协议是一种滑动窗口协议,该协议的详细介绍见第7.2节。其中Sequence前缀存放当前TLP的序列号,滑动窗口协议需要使用这个序列号。该序列号可以循环使用,但在同一个时间段内,一条PCIe链路不能含有Sequence前缀相同的多个TLP。而LCRC后缀存放当前TLP的校验和。
PCIe总线的数据链路层使用Replay Buffer[29]和Error Check部件共同保证数据传送的可靠性和完整性。来自事务层的TLP首先暂存在Replay Buffer中,然后发送到目标设备。源设备的数据链路层根据来自目标设备的ACK/NAK DLLP报文决定是重发这些TLP,还是清除保存在Replay Buffer中的TLP。
Replay Buffer的大小决定了事务层可以暂存在数据链路层的报文数,Replay Buffer的容量越大,在PCIe设备发送流水线中容纳的报文越多,从而也容易保证流水线不会因为发送部件出现underrun而中断,但是Replay Buffer的容量越大,占用的系统资源也越多,从而影响PCIe设备的功耗。在一个实际应用中,芯片设计者需要根据PCIe链路的延时确定数据链路层Replay Buffer的大小,在第12.4.1节中将进一步介绍Replay Buffer的大小与PCIe链路延时间的关系。
在PCIe设备的数据链路层中,还含有一个Error Check单元。PCIe设备使用Error Check单元检查接收到的TLP,并决定如何向对端设备进行报文回应。如果TLP被正确接收,PCIe设备将向对端设备发送ACK DLLP[30];如果TLP没有被正确接收,PCIe设备将向对端设备发送NAK DLLP。
除了ACK/NAK DLLP之外,数据链路层还定义了一系列数据链路层报文DLLP,以保证PCIe链路的正常工作。这些DLLP都产生于数据链路层,并终止于数据链路层,并不会传送到事务层。有关DLLP格式的详细描述见第7.1.3节。
相关文章
从那时起,PCI总线一直在处理器体系结构中占有重要地位。IAL是现代PC体系架构的重要奠基者。除了以上规范之外,PCISIG还推出了一系列和PCI总线直接相关的规范。其中PCI-to-PCI桥规范最为重要,理解PCI-to-PCI桥是理解PCI体系结构的基础;而CompactPCI总线规范多用于具有背板结构的大型系统,并支持热插拔。PCI和PCI-X总线使用单端并行信号进行数据传递,由于单端信号容易被外部系统干扰,其总线频率很难进一步提高。......
2025-09-30
PCI Express Extended Capabilities结构存放在PCI配置空间0x100之后的位置,该结构是PCIe设备独有的,PCI设备并不支持该结构。在一个PCIe设备中可能含有多个PCI Express Extended Capabilities结构,并形成一个单向链表,其中第一个Capability结构的基地址为0x100,其结构如图4-19所示。图4-19 PCI Express Extended Capabilities结构一个PCI Express Extended Capabilities结构由以下参数组成。但是在PCIe总线中,这些扩展的Capability结构并没有得到充分利用。本节仅详细介绍PCI Express Extended Capabilities结构组中的MFVC结构。......
2025-09-30
Attr字段如图6-3所示。图6-3 Attr字段格式表6-3 TLP支持的序当使用标准的强序模型时,在数据的整个传送路径中,PCIe设备在处理相同类型的TLP时,如PCIe设备发送两个存储器写TLP时,后面的存储器写TLP必须等待前一个存储器写TLP完成后才能被处理,即便当前报文在传送过程中被阻塞,后一个报文也必须等待。Attr字段的第0位是“No Snoop Attribute”位。“No Snoop Attribute”位是PCIe总线针对PCI总线的不足作出的重要改动。......
2025-09-30
在一段程序中,存在大量的分支预测指令,因而在某种程度上增加了指令Fetch的难度。但是分支预测单元并不会每次都能正确判断分支指令的执行路径,这为指令Fetch制造了不小的麻烦,在这个背景下许多分支预测策略应运而生。在PowerPC处理器中,条件转移指令“bc”表示Taken;而“bc-”表示Not Taken。BTB的功能相当于存放转移指令的Cache,其状态机转换也与Cache类似。转移指令B执行完毕后,将实际执行结果Rc更新到BHR寄存器中,并同时更新PHT中对应的Entry。......
2025-09-30
本章以Montevina平台为例,说明在x86处理器系统中,PCIe体系结构的实现机制。Montevina平台是Intel提供的一个笔记本平台。Montevina平台的拓扑结构如图5-1所示。图5-1 Montevina平台的拓扑结构Montevina平台使用一个虚拟的FSB-to-PCI桥[13]将FSB总线与外部设备分离,这个虚拟PCI桥的上方连接FSB总线,之下连接PCI总线0。在Montevina平台的GMCH和ICH中,所有的外部设备,如存储器控制器,图形控制器等都是虚拟PCI设备,都具有独立的PCI配置空间。......
2025-09-30
第4.1.4节简单介绍了在PCIe总线中,如何使用Switch进行链路扩展,本节主要介绍Switch[7]的内部结构。值得注意的是,在Switch内部还具有一条虚拟的PCI总线,用于连接各个虚拟PCI桥,系统软件在初始化Switch时,需要为这条虚拟PCI总线编号。Switch的组成结构如图4-10所示。在PCIe体系结构中,Switch处于核心地位。深入理解PCI桥是理解Switch软件组成结构的基础。目前PCIe总线提出了MRA-Switch的概念,这种Switch与传统Switch有较大的区别,有关这部分内容详见第13.3节。......
2025-09-30
为此PCI桥需要对Non-Posted总线事务进行优化处理,并使用Delayed总线事务处理这些Non-Posted总线事务,PCI总线规定只有Non-Posted总线事务可以使用Delayed总线事务。PCI总线的Delay总线事务由Delay读写请求和Delay读写完成总线事务组成,当Delay读写请求到达目的地后,将被转换为Delay读写完成总线事务。为了进一步提高Non-Posted总线事务的执行效率,PCI-X总线将PCI总线使用的Delayed总线事务,升级为Split总线事务。......
2025-09-30
当TLP的TH位为1时,表示在当前TLP中包含Processing Hint字段,PH字段由PCIe V2.1总线规范引入。Processing Hint字段的产生与智能设备的大量涌现密切相关。有些智能设备,如在显卡中使用的GPU和GP-GPU的处理能力甚至超过多数通用处理器。该TLP Prefix也被称为TPH TLP Prefix,其格式如图6-15所示。TPH Requester Capability结构使用ST Mode Sele ct字段定义了ST字段的三种使用模式。......
2025-09-30
相关推荐