PCI Express总线技术分析*

PCI Express总线技术分析(修改)

PCIe总线继承于PCI总线,相比于传统并行传输形式的PCI总线,PCIe采用全双工串行差分高速传输总线,其在信号完整性、抗干扰性以及实时性等方面有着明显改善。由于PCIe采用串行差分传输形式,其总线频率大幅提高,因此他的传输速率得到极大提升。下面简要介绍PCIe结构,希望有助于理解NVMe Host IP设计。

1 PCIe体系结构

如图1所示,PCIe总线采用端到端连接结构,其体系结构中主要包括三个关键的基本模块,即作为主设备的根复合体(Root Complex,RC)模块、交换机模块(Switch,SW)以及端点(Endpoint,EP)模块(一般指从设备)。
在这里插入图片描述
其中,RC通常集成在CPU内部,它负责代表CPU行使相关事务请求,控制数据完成DMA传输等功能;由于在一条PCIe链路中仅有两个端口,并且每个端口只能连接一个发送设备或接收设备,因此PCIe链路中必须使用交换机模块进行扩展后才能实现主设备与多个从设备相连接,但每个从设备与主设备之间仍为一对一的连接关系;EP作为PCIe链路连接关系的终端设备,但终端设备并不表示其只能作为被动的接收端,在PCIe链路中EP既可作为主控端负责发起传输,也可作为接收端完成事务。

2 PCIe层次结构

在PCIe体系结构中,将其层次结构分为三层,包括事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer),并且每一层又分为接收端和发送端。PCIe层次结构如图2所示。
在这里插入图片描述

其中,事务层是PCIe层次结构的最高层,负责接收来自设备核心层的数据请求,并将其转换为总线事务,生成相应的TLP(Transaction Layers Package,事务层数据报文),包括TLP头部、数据、ECRC(Endpoint Cyclic Redundancy Check,从设备循环冗余校验)等部分。随后将其发送至数据链路层进行下一步组装,或是接收数据链路层返回的TLP。
数据链路层则介于事务层与物理层之间,发送端的数据链路层将负责将事务层发送的TLP进一步组装生成DLLP(Data Link Layer Packet,数据链路层报文),补充容错机制等功能。而接收端的数据链路层将负责进一步解析来自于物理层的TLP,通过计算LCRC(Link Cyclic Redundancy Code,链路循环冗余校验码)以验证传输是否正确,并将解析完成的TLP传至事务层。
物理层作为PCIe层次结构中的最底层,主要负责发送来自于数据链路层的TLP和DLLP、组装生成PLP(Physical Layer Packet,物理层报文)以及接收来自发送端物理层传入的数据报文并返回至上层的数据链路层。
如图3所示为一个完整的数据报文格式。包括事务层组装的TLP、数据链路层组装的DLLP以及物理层组装的PLP三个部分。在解析过程中,三个部分将在PCIe层次结构中依次进行拆解,最终得到TLP中所包含的数据。
在这里插入图片描述
表1为PCIe所支持的总线事务类型。同时,总线报告事务分为Non-Posted和Posted两大类。其中,Non-Posted表示接收端设备需要返回响应报文,而Posted则表示接收端设备无需返回响应报文。
在这里插入图片描述
当PCIe主设备访问目的设备中的存储器空间时,将发送存储器读写请求TLP。如果是存储器读总线事务,则当目的设备收到读请求TLP后,通过存储器读完成TLP返回数据,主设备接收到返回的读完成报文后,完成一次存储器读操作。而对于存储器写请求,因其为Posted总线事务,所以在主设备发送存储器写请求TLP后,无需目的设备返回相应报文。
配置读写总线事务是基于ID路由的一组重要报文,其主要作用是读写PCIe总线中的从设备、交换器以及PCIe桥接的配置寄存器,完成相应的总线配置。
I/O读写总线事务因其必须使用I/O地址空间进行访问,不能通过CPU进行统一分配管理,导致其局限性大,效率很低,是相对比较过时请求操作。目前PCIe总线已不建议采用这种方式进行读写,仅作为兼容较老设备的目的而保留。

NVMe host IP 效果见 视频demo (B站 搜 NVMe IP):
https://search.bilibili.com/all?keyword=nvme%20ip&from_source=nav_search_new
qq:1943086312

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值