肖恩 Wei's Blog

数字芯片工程师

0%

高速接口PCIe无痛入门(一)总体架构

Reference: http://blog.chinaaet.com/justlxy/p/5100053251

PCIe简介

不讲历史了,总之就是迭代了好几代。

PCIe就是PCI的express版本,是个高速串行总线而不是传统的并行总线。串行传输里,数据都是以packet传输的。

PCIe插槽是电脑主板上的一部分,它们是物理上的固体插槽。这些插槽是用硬塑料制成的,并且具有金属接触点,用来插入相应的扩展卡。PCIe插槽有不同的尺寸和配置,如x1、x4、x8、x16等,以适应不同带宽需求的扩展卡。这些数字代表插槽提供的数据传输通道数,通道数越多,可传输的数据就越多,从而支持更高性能的扩展卡。

p1

p2

PCIe 基本协议概念

总体结构

p3

两个device要通过好几层进行连接。application layer,transaction layer,data link layer,PHY。application layer完全是由客户决定的,这一层决定了PCIe设备的类型和基础功能,可以由硬件(如FPGA)或者软硬件协同实现。比如如果该设备为Switch,则应用层需要实现包路由(Packet Routing)等相关逻辑。如果该设备为Root,则应用层需要实现虚拟的PCIe总线0(Virtual PCIe Bus 0),并代表整个PCIe总线系统与CPU通信。

事物层

事务层是负责管理数据包(Transaction Layer Packet,TLP)的创建、解码和校验的部分。简单来说,它就像是一个邮局,负责正确包装(创建)你的信件(数据包),确保信件的地址和内容格式正确(解码与校检),以及当信件到达目的地时,能够被正确理解和接收。

  • 发送端:就像你寄信前准备信件,确保地址和邮资正确。在事务层,它创建TLP,这包括确定数据将如何被发送、需要发送什么数据,以及这些数据如何被打包。
  • 接收端:就像收信人打开信件,检查信件是否为他们所寄,并阅读内容。在事务层,它负责解码接收到的TLP,并进行校验,以确保数据未被篡改且完整无误。
  • 附加功能:事务层还包含了一些高级功能,如QoS(服务质量,确保数据传输的优先级和速度)、流量控制(避免数据传输过载)、以及Transaction Ordering(事务排序,确保数据包的发送和接收顺序)。

数据链路层

数据链路层类似于邮局的内部操作,确保数据包(在这里是Data Link Layer Packet,DLLP)的正确传输和确认收到的信息。

  • 创建、解码和校检DLLP:它负责处理特定于链路层的数据包,这些数据包帮助管理和保护数据传输过程。
  • Ack/Nak应答机制:这是一个反馈系统,用于确认数据包是否已成功接收(Ack,确认)或是否需要重传(Nak,否认),类似于收信后给寄信人的回复,确保他们知道你是否收到了信件。

物理层

物理层就是数据传输的基础,负责实际的数据包(TLPs、DLLPs和Ordered-Sets)发送和接收。你可以将其看作是邮局的运输网络,包括邮递员和邮车,负责实体地传递你的信件。

  • 处理:在发送数据之前,物理层会对数据进行一系列处理(如Byte Striping分条处理、Scramble扰码和Encoder编码),以优化传输过程并减少错误。接收端则进行相反的处理,以还原数据。
  • 链路训练与初始化:在数据传输开始之前,发送端和接收端需要"协商",确保它们以相同的方式发送和接收数据。这通过一个过程,称为链路训练和初始化来完成,通常是由一个状态机(LTSSM)来管理的,可以看作是两个邮局之间确定如何交换信件的协议。

在PCIe体系结构中,事务层,数据链路层 和 物理层 存在于每一个端口(Port)中,也就是说Switch中必然存在一个以上的这样的结构。

p4

详细补充:

p5

我的微信(请添加自我介绍)