电子说
事务层
⊙transaction layer
作为协议的最高层,事务层的主要功能是:
• 流水线式完整拆分交易协议
• 区分事务层数据包 (TLP) 的排序和处理要求的机制
• 基于credit的流量控制
• 可选支持数据中毒和端到端数据完整性检测。
0****1
**###
**
PCIe 6.0 增加了一种新的传输模式 flit mode,而传统的传输模式就变成了non-flit mode。在传统模式中,TLP是不定长的,物理层中需要start end标志来标记数据包的头和尾。而且TLP和DLLP是工作在不同的层中,相互之间是独立的。
PCIe 6.0的flit mode借用了NoC中flit的概念(也可能不是借用,因为笔者是做NoC的,所以可能会有先入为主的影响),将多个TLP和一个DLLP的信息打包成一个大的数据帧,称为flit,数据的传输以flit为单位,每个flit固定为256Byte。需要注意的是,flit既不在事务层也不在数据链路层,而是在物理层,就好比NoC的flit是直接定义在物理总线上的,PCIe的flit是直接定义在物理层的lane中的.
事务层是请求者和完成者之间信息传输的基础。 在这层协议中定义了四个地址空间,并定义了不同的事务类型,每个都有自己独特的预期用途,如下所示
Memory Transactions
内存事务包括以下类型:
• 读取请求/完成
• 写请求
• 可延迟内存写入请求/完成
• 原子操作的请求/完成
I/O Transactions
PCI Express 支持 I/O 空间,以便与需要使用它们的旧设备兼容。 I/O 事务包括以下类型:
• 读取请求/完成
• 写请求/完成
Message Transactions
message事务,或简称为消息,用于支持设备之间事件的带内通信。除了协议中定义的特定消息外,PCI Express 还支持供应商定义的消息使用指定的消息代码。
事务层数据包格式
事务由请求和完成组成,它们使用数据包进行通信。数据包的域断可见下图,(一个数据包的大小如果为512Bit,则每个预断的值就是将512Bit的值按顺序填在下图的格式表中)。
0****2
前面给大家介绍了TL的数据包格式由TLP Prefix、header,data组成。下面为大家介绍在每个小部分里不同域断的含义。
Header Fields For Non-Flit Mode
Fmt 字段指示一个或多个 TLP 前缀的存在,Type 字段指示相关的 TLP前缀类型。
Data Payloads For Non-Flit Mode
ARI : Alternative Routing-ID,用于Requester IDs,Completer IDs以及Routing ID。
ARI Device : 与Upstream Port关联的设备,其Functions均包含 ARI Extended
ARI Downstream Port : 支持 ARI 转发的Switch Downstream Port或Root Port。
( ARI(Alternative Routing-ID),备选路由ID。在PCIE中,往往数据包传输通过TLP的形式。这些TLP大致分为Memory Read/Write TLP , Configuration Read/Write TLP ,Completion TLP, Message TLP以及IO TLP。这些TLP从Request端到Completion端的过程叫做路由,而路由又大致分为两类地址路由和ID路由。
所有的ID路由中的ID包括Request端的bus number,device number以及function number。其中ID有16 bits,bus number 8 bits,device number 5 bits,function number 3 bits意味着支持8个function。
对于有些device功能比较复杂或者支持FBP技术的root port或者device,往往8个function不足以满足要求,这个时候就出现了ARI技术。将device number的5 bits也用作function,这样便可以由原来的8个function扩展到256个function。 )
对于包含数据的 TLP,Length字段中的值与 TLP 中包含的实际数据量必须匹配。同时,接收者必须检查是否违反此规则。 如果接收器确定 TLP 违反此规则,则该 TLP 是Malformed TLP,这是一个跟Receiving Port相关的Reported Error。(RTL实现中要实现的ERROR异常)
全部0条评论
快来发表一下你的评论吧 !