【PCIe】 PCIe 拓扑结构与分层结构

在这里插入图片描述

🔥博客主页:PannLZ


PCIe拓扑结构

计算机网络中的拓扑结构源于拓扑学(研究与大小、形状无关的点、线关系的方法)。 把网络中的计算机和通信设备抽象为一个点,把传输介质抽象为一条线,由点和线组成的几 何图形就是计算机网络的拓扑结构。

PCle 则采用树形拓扑结构, 一个简单而又典型的 PCIe 拓扑结构如图

在这里插入图片描述

整个 PCIe 拓扑结构是一个树形结构。Root Complex(RC) 是树的根,它为CPU 代言, 与整个计算机系统的其他部分通信,比如CPU 通过它访问内存,通过它访问PCIe 系统中的 设备。

RC 的内部实现很复杂,我们只需清楚:它实现了一条内部PCle 总 线 (BUS 0), 以及通过若干个 PCIe 桥,扩展出一些 PCIe 端口。

Switch 的作用就是扩展PCle 端口,并为挂在它上面的设备(终端或者交换机) 提供路由和转发服务。每个交换机内部也有一根内部PCle 总线,然后通过若干个桥,扩展出若干个下游端 口。

所谓的桥,它用于将PCle总线转换成PCI总线,或者反过来

PCle 与采用总线共享通信方式的PCI不同, PCle 采用点到点 (Endpoint to Endpoint) 的通信方式,每个设备独享通道带宽,速度和效率都比 PCI好。

PCIe分层结构

绝大多数的总线或者接口都是采用分层实现的PCIe 也不例外, PCIe定义了三层:事务层 (Transaction Layer)、数据链路层(Data Link Layer) 和物理层 (Physical Layer, 包括逻辑子模块和电气子模块)。每层的职能是不同的,但下层总是为上层服务的。

PCle 传输的数据从上到下,都是以数据包 (Packet) 的形式传输的,每层数据包都有其 固定的格式。

事务层的主要职责是创建(发送)或者解析(接收)TLP(Transaction Layer Packet,事 务层数据包)、流量控制、QoS、事务排序等

数据链路层的主要职责是创建(发送)或者解析(接收)DLLP(Data Link Layer Packet, 数据链路层数据包)、ACK/NAK协议(链路层检错和纠错)、流控、电源管理等。

物理层的主要职责是处理所有的数据包中数据的物理传输,发送端数据分发到各个Lane 中进行传输,接收端把各个Lane 上的数据汇总起来,在每个Lane 上进行加扰 (Scramble, 目的是让0和1分布均匀,去除信道的电磁干扰)、去扰(De-scramble),以及8/10或者 128/130编码解码等操作。

img

数据从上到下, 一层层打包,上层打包完的数据作为下层的原始数据,然后对数据进 行再打包。Data 是事务层上层(如命令层、NVMe 层)给的数据,事务层在它头上加个 Header, 然后在它尾巴上再加个CRC 校验,就构成了一个TLP 。这个 TLP 下传到数据链路层,又被 数据链路层在头上加了个包序列号 (Sequence Number,SN),在尾巴上再加个CRC 校验, 然后下传到物理层。物理层为其头上加个 Start,尾巴上加个 End 符号,把这些数据分派到各个 Lane 上,然后在每个Lane 上加扰码,经8/10或128/130编码,最后通过物理传输介 质传输给接收方

img

接收方物理层是最先接收到这些数据的,掐头 (Start) 去尾 (End), 然后交由上层。在 数据链路层,校验序列号和LCRC, 如果没问题,剥掉序列号和LCRC, 往事务层走;如 果校验出错,则通知对方重传。在事务层,校验ECRC, 有错,数据抛弃;没错,去掉 ECRC, 获得数据。
img

每个Endpoint都需要实现这三层,每个Switch的每个Port也是需要实现这三层的

img

  • 29
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值