从零开始讲PCIe(9)——PCIe总线体系结构

一、分层结构

PCIe定义了一个分层架构,如图2-12所示。这些层逻辑上分为两个部分,分别独立运行:一个用于发送侧,另一个用于接收侧。分层方法对硬件设计者是很有好的,因为如果逻辑划分得当,在迁移到新版本的PCIe规范时,可以只改变现有设计的某一层,而不影响其他层。

如图2-12所示,设备的层次结构包括以下部分:

  • 设备核心和事务层接口( Device core and interface to Transaction Layer):核心实现设备的主要功能。如果设备是一个终端,可能包含多达8个功能(functions),每个功能都有自己的配置空间。如果设备是一个交换机,交换机核心包含数据包路由逻辑和内部总线来完成这个任务。如果设备是根复合体,根核心则实现虚拟的PCI总线0,其中包含所有嵌入的端点和虚拟桥接器。

  • 事务层(Transaction Layer):该层负责在发送侧创建事务层数据包(TLP),并在接收侧解码TLP。此外,事务层还有QoS(Quality of Service)和流量控制(Flow Control)以及Transaction Ordering等功能。

  • 数据链路层(Data Link Layer):该层负责在发送侧创建数据链路层数据包(DLLP),并在接收侧解码DLLP。此外,它还负责链路错误检测和纠正,这一功能称为Ack/Nak协议。

  • 物理层(Physical Layer):物理层负责Ordered-Set Packet的创建于解码。同时负责发送与接收所有类型的包(TLPs、DLLPs和Ordered-Sets)。当前在发送之前,还需要对包进行一些列的处理,如Byte Striping、Scramble(扰码)和Encoder(8b/10b for Gen1&Gen2, 128b/130b for Gen3& Gen4)。对应的,在接收端就需要进行相反的处理。此外,物理层还实现了链路训练(Link Training)和链路初始化(Link Initialization)的功能,这一般是通过链路训练状态机(Link Training and Status State Machine,LTSSM)来完成的。


二、架构概述

总的来说,PCIe的分层架构有助于数据传输的模块化设计和灵活性,每一层各自负责特定的功能并相互协作,以完成设备之间的数据通信。每个PCIe接口都支持这些层的功能,包括交换机端口:

原则上,每个层与链路另一端设备的对应层进行通信。上面的两层通过将一串比特组织成数据包来实现通信,形成一个可以被接收端相应层识别的模式。这些数据包通过其他层传递,最终到达链路的发送端或接收端。物理层也直接与另一设备的物理层通信,但方式有所不同。为了更好地理解这一点,我们可以先简单了解一下各层如何交互。

总体来说,设备发出的请求或完成数据包的内容首先在事务层(Transaction Layer)中组装,这个过程基于设备核心逻辑提供的信息,这些信息有时也被称为软件层(虽然规范中没有使用这个术语)。这些信息通常包括所需命令的类型、目标设备的地址、请求的属性等。新创建的数据包会被存储在一个称为虚拟通道(Virtual Channel)的缓冲区中,直到它准备好传递给下一层。

当数据包传递到数据链路层(Data Link Layer)时,会在数据包中添加额外的信息,以便在相邻的接收端进行错误检查,并且数据包的副本会在本地存储,以便在发生传输错误时能够重新发送。随后,数据包到达物理层(Physical Layer),在该层中,数据包会被编码并通过链路上所有可用的通道进行差分传输。

这种分层的通信机制确保每个层能够有效处理数据并确保数据在设备之间安全且可靠地传输。

接收端在物理层 对传入的比特流进行解码,检查该层能够检测到的错误。如果没有发现错误,生成的数据包将被传递到数据链路层 。在数据链路层,数据包会被进一步检查是否存在其他错误,如果没有错误,数据包会继续传递到事务层。在事务层,数据包会被缓冲、进行错误检查,并解包为原始信息(如命令、属性等),以便将内容传递给接收设备的核心逻辑。

接下来,我们可以更深入地探讨每一层在这个过程中所需要完成的任务,参考图2-14,我们将在后续的文章中详细讨论这部分的内容。

相关推荐
碎碎思1 小时前
FINN:FPGA AI 推理新范式 —— 定制化、高性能、量化神经网络编译器框架
人工智能·深度学习·神经网络·机器学习·fpga开发
ShiMetaPi2 小时前
GM-3568JHF丨ARM+FPGA异构开发板系列教程:外设教程 05 蓝牙
arm开发·fpga开发·fpga·rk3568
无情的88620 小时前
硬件中的端接设计
fpga开发·硬件工程
快乐的划水a1 天前
存储器介绍(2)
fpga开发
leixj0251 天前
MultiBoot中的两个WatchDog时间设置及跳转调试
fpga开发
博览鸿蒙1 天前
FPGA 经典面试题目及答案汇总
fpga开发·面试·职场和发展
同年紀1 天前
TLP Prefix Rules
pcie
步达硬件2 天前
【FPGA】DP、HDMI、USB4、GPMI、eDP、LVDS等音视频协议及性能对比
fpga开发
-木槿昔年-3 天前
【米尔-安路MYD-YM90X创意秀】飞龙派学习和PS串口实践
学习·fpga开发
Aaron15883 天前
基于RFSOC+VU13P+GPU架构在雷达电子战的技术
人工智能·算法·fpga开发·架构·硬件工程·信号处理·基带工程