PCIe专题学习——2.3

之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-based layered protocol),主要包括事务层(Transaction layer), 数据链路层(Data link layer)和物理层(Physical layer);

一:事务层TLP结构解析

        经过之前的文章的介绍,我们可以知道,PCIe总线在事务层中利用TLP(Transaction Layer Packet)进行数据传输,那么,TLP具体长什么样子呢?又有哪些关键内容?这个就是我们本文的重点;

TLP主要包括三个部分:headerdata payloadECRC(End to End CRC)

  • Header:

        内容来自于Device Core,大小一般为3或者4个DWs(12-16bytes),每个类型TLP中Header格式不尽相同,但是包含的信息大致相同;

  • Data:

        内容也来自Device Core,大小为1-1024 DWs;

  • Digest/ECRC:

        这部根据Header和Data内容计算得到,ECRC可以选择性的附加,如果附加在TLP之后,大小一般为1DW;

我们先介绍一下Header的结构和内容:

以一个通用的4DWs TLP Header为例,如下图:

接下来,我们针对上面Header的内容进一步解析:

  • Fmt[2:0](format)

        3bit,Byte0 的bit 7:5 ,具体含义如下:

  • type[4:0]:

        5bit,bytes bit4:0,详细定义如下:

这里需要提一下,通常情况下Type[4:0]与Fmtp[2:0]合起来定义具体的TLP事务类型,如下表:

举个例子

Fmt[2:0]=001, 代表Header长度为4DWs, 并且no data传输; 

Type[4:0]=00000, 代表Memory Request;

那么合起来就是,Memory Read Request(MRd).

  • TC[2:0](trafic Class)

        3bit,Byte1 的bit [6:4] ,总共定义了8个等级Trafic Class

        Traffic Class:顾名思义可以定义理解为交通等级,比如在生活中我们遇到救护车或者消防车时,由于救护车和消防车是跟时间赛跑,那么交通等级就高,一般的私家车(可以认为没有交通等级)就必须给救护车或者消防车让行,可能这个比喻不是很恰当,不过大致意思是这样的~

  • Attr[0](Attributes)

        1bit,Byte1的bit2,这个bit的功能就是是否对TLP进行排序(IDO,ID-based Ordering)

  • TH[0](TLP Processing Hints)

        1bit,Byte1的bit0,如果TH=1,就代表在TLP中添加了TLP处理提示,可以告知系统以更有效的措施处理这个TLP。

  • TD[0](TLP Digest)

        1bit,Byte2 的Bit7,如果TD=1,就代表TLP里面包含了ECRC(End-to-End CRC)

  •  EP[0](Poisoned Data)

        1bit,Byte2 的Bit6,如果EP=1,就代表TLP传输的数据有误;

  • Attr[1:0] (attributes)

        2bit,Byte2 的bit5:4;

        bit5 =1 代表enable PCI-X Relaxed Ordering功能;

        bit4 =1 代表这个TLP没有主机缓存一致性的问题,不需要缓存窥探措施;

二:扩展:

缓存一致性: 也就是说只有一块一级缓存,所有处理器都必须共用它。在每一个指令周期,只有一个幸运的CPU能通过一级缓存做内存操作,运行它的指令。

窥探(Snoop): 窥探的思想是,缓存不仅仅在做内存传输的时候才和总线打交道,而是不停地在窥探总线上发生的数据交换,跟踪其他缓存在做什么。所以当一个缓存代表它所属的处理器去读写内存时,其他处理器都会得到通知,它们以此来使自己的缓存保持同步。只要某个处理器一写内存,其他处理器马上就知道这块内存在它们自己的缓存中对应的段已经失效。

AT[1:0](address Type):2bit,byte2 的bit3:2 ;

这两bits针对Memory和AtomicOp请求声明存储地址类型的

Length[9:0]:TLP传输的长度,以DW为单位,最大1024DWs

此外,为了区分Requester与Completer之间的事务类型,PCIe spec定义了一个事务描述块(Transaction Description Fields)下图中5个红色区域合起来就称为一个事务描述块;

Transaction ID包含了Request ID和Tag:内容有Request Device具体的位置(Bus/Device/Function)。主要是用于Requester发出事务的完成TLP回报。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PCIE(Peripheral Component Interconnect Express)是一种计算机扩展总线标准,用于连接外部设备与计算机主板之间的数据传输。PCIe连接的设备可以是显卡、声卡、网卡等。 Flow control(流量控制)是PCIE中的一种基础机制,用于在设备之间传输数据时确保数据的可靠传输。 PCIE的flow control可以分为两种方式:Credit-based Flow Control(基于信用控制)和Acknowledgment/Negative Acknowledgment Flow Control(确认/否定确认控制)。 基于信用控制是PCIE中最常用的流量控制机制。发送方设备在发送数据之前会向接收方设备发送一个信用(credit)值,表示发送方设备可以发送的最大数据量。接收方设备在接收到数据后会发回一个更新的信用值给发送方设备,发送方设备根据接收到的信用值确定下一次可以发送的数据量。通过这种方式,可以有效控制不同速度的设备之间的数据传输,避免数据丢失或信道阻塞。 确认/否定确认控制是PCIE中的一种备用方式,当发送方设备发送数据后,接收方设备会发回一个确认或否定确认信号给发送方设备,以告知是否成功接收数据。如果发送方设备收到否定确认信号,则会重新发送数据,确保数据的可靠性。 总结来说,PCIE中的flow control机制是为了确保数据的可靠传输而设计的。基于信用控制和确认/否定确认控制是两种常用的流量控制方式,可以根据不同的需求选择适合的方式来控制数据的传输。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值