PCIe事务层(详细)总结-PCIe专题知识(六)

文章深入介绍了PCIExpress(PCIe)事务层的主要功能,包括TLP的创建与解码,QoS和流量控制。数据链路层和物理层的工作原理也得到阐述,涉及DLLP、Ack/Nak机制和物理层的Ordered-SetPacket处理。此外,文章还提及PCIe的数据格式,如存储器、I/O、配置和消息事务,并讨论了Non-Posted和Posted总线事务的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本文主要讲解PCIe事务层(Transaction Layer)的主要功能,通过图文解析方便读者快速掌握,同时有PCIe专题讲解整个PCIe的相关知识。

一、简介

在PCIe体系结构中,数据报文首先在设备的核心层(Device Core)中产生,然后再经过该设备的事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer),最终发送出去。而接收端的数据也需要通过物理层、数据链路和事务层,并最终到达Device Core。

事务层(Transaction Layer):接收端的事务层负责事务层包(Transaction Layer Packet,TLP)的解码与校检,发送端的事务层负责TLP的创建。此外,事务层还有QoS(Quality of Service)和流量控制(Flow Control)以及Transaction Ordering等功能,PCIe总线使用的这些总线事务在TLP头中定义。

在这里插入图片描述

数据链路层(Data Link Layer):数据链路层负责数据链路层包(Data Link Layer Packet,DLLP)的创建,解码和校检。同时,本层还实现了Ack/Nak的应答机制。
物理层(Physical Layer):物理层负责Ordered-Set Packet的创建与解码。同时负责发送与接收所有类型的包(TLPs、DLLPs和Ordered-Sets)。

二、事务层数据传输

事务层TLP传输的示意图如下图所示:
在这里插入图片描述
TLP在整个PCIe包结构的位置如以下两张图所示:(第一张为发送端,第二张为接收端)
发送端
在这里插入图片描述
接收端

在这里插入图片描述

三、数据格式

PCIe总线继承了PCI/PCI-X总线的大多数总线事务,如存储器读写(Memory Read/Write)、I/O读写、配置读写总线事务,并增加了Message总线事务和原子操作等总线事务。存储事务(Memory Transactions)包括的事务类型有读请求与响应、写请求、基于原子操作的请求与响应,并且支持3DW和4DW。

I/Ο事务(I/O Transactions),在PCIE3.0规范中说以后可能弃用该类型了,目前还是支持的,支持读、写的请求与响应,并只支持3DW。
配置事务(Configuration Transactions)用来访问设备的配置寄存器的,支持读、写的请求与响应事务类型。
消息事务(Message Transactions)支持设备间的带内通信(in-band)。
在这里插入图片描述

PCIe中有两大类总线事务:Non-Posted和Posted:
Non-Posted: 需要completion返回响应包;
Posted: 不需要completion返回响应包.

在PCIe总线中,Non-Posted总线事务分两部分进行,首先是发送端向接收端提交总线读写请求,之后接收端再向发送端发送完成(Completion)报文。PCIe总线使用Split传送方式处理所有Non-Posted总线事务,存储器读、I/O读写和配置读写这些Non-Posted总线事务都使用Split传送方式。

I/O 读写请求与存储器读写请求TLP格式基本类似,但只能是32位地址模式和基于地址的路由方式,且只能使用NON-Posted方式进行传递,这也是为了兼容PCI,在以后的协议几乎要取消I/O 读写请求了。另外,对于I/O读写请求,TC必须为0、Attr的低两位必须为0、AT必须为0、Length必须为1,Last DW必须为0。

在PCIe总线中,不同的总线事务采用的路由方式不相同。PCIe总线使用的数据报文首先在事务层中形成,这个数据报文也被称之为事务层数据报文,即TLP,TLP在经过数据链路层时被加上Sequence Number前缀和CRC后缀,然后发向物理层。

其中,TLP包的结构图如下图所示:
在这里插入图片描述

图中的TLP Digest即 ECRC(End-to-End CRC),是可选项。
此外,TLP的长度(包括其中的Header、Data和ECRC)是以DW(双字,即四个字节)为单位的。

TLP header的格式和内容会随着TLP的类型和路由(ID、Address、implcit)方式而改变,TLP的类型由Fmt(Format)决定,类型由type决定。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、其他相关链接

1、PCIe物理层总结-PCIE专题知识(一)

2、PCIe数据链路层图文总结-PCIe专题知识(二)

3、PCIe物理层链路训练和初始化总结-PCIe专题知识(三)

4、PCIe物理层弹性缓存机制解析-PCIe专题知识(四)

5、PCIe热插拔机制(详细)总结-PCIe专题知识(五)

6、PCI总线及发展历程总结

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值