0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PCIe 6.0入门之事务层

jf_78858299 来源:知芯有道 作者:知芯有道 2023-05-22 17:30 次阅读

PCIE 6.0 (三)

事务层

⊙transaction layer

作为协议的最高层,事务层的主要功能是:

• 流水线式完整拆分交易协议

• 区分事务层数据包 (TLP) 的排序和处理要求的机制

• 基于credit的流量控制

• 可选支持数据中毒和端到端数据完整性检测

0****1

**###

Transaction Layer Overview

**

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前缀类型。

  • TLP Header 的 Fmt 和 Type 字段提供了确定剩余部分大小所需的信息。同时TLP 报头的 Fmt、Type、TD 和 Length 字段包含确定 TLP 非前缀部分的总体大小所需的所有信息。 Type 字段除了定义 TLP 的类型外,还决定了交换机如何路由 TLP。 以下各节将不同类型的 TLP。
  • TC[2:0]:流量类别 (TC) 是一个 3 位字段,允许将事务区分为八个流量类别。 与 PCI Express 虚拟通道支持一起,TC 机制是实现差异化流量服务的基本要素。(TC0是表示此次传输的数据包优先级最高要优先通过) 每个 PCI Express 事务层数据包都使用 TC 信息作为在 PCI Express 结构中端到端携带的不变标签。 当数据包穿过结构时,此信息将在每个链路和每个交换机元素内使用,以做出有关正确处理流量的决策。 服务的一个关键方面是根据 TC 标签通过相应的虚拟通道路由数据包。
  • R:保留;
  • TLP Hints (TH):TLP Hints,用以指示 TLP Header 中是否含有 TPH 及 TPH TLP Prefix。(具体参考PCIE协议介绍)
  • Attr:Attributes,通过该字段提供附加信息给接收端,告知接收端采用非默认方式来处理当前 TLP,常用于 TLP 排序、Snoop 硬件一致性管理等方面。
  • TD:TLP Digest,用以指示 TLP 末尾的 Digest 字段是否含有 ECRC。仅用于 NFM。FM 的 ECRC 相关指示放在了 TS。
  • Error Poisoned:Error Poisoned,PCIe E2E 数据完整性相关,用以指示当前 TLP 的 Data Payload 被污染。
  • Length[9:0]:Length,用以指示当前 TLP 的 Data Payload 长度,仅对带有 Data Payload 的 TLP 有效, 单位为 DW。

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。 )

  • Length表示DW的数目,为整数
  • 除了那些明确引用数据长度的消息,Length[9:0] 为所有Message保留
    (请参阅协议第 2.2.8 节中的Message Code表。)
  • 有 data payload的 TLP 发送器不允许TLP Length字段给出的data payload长度超过发送器Device Control寄存器 Max_Payload_Size 字段中的值指定的DW长度。
  • 对于ARI 设备,Max_Payload_Size 仅由Function 0 中的设置决定,忽略其他Function中的 Max_Payload_Size 设置。
  • 如果一个非ARI Multi-Function Device(MFD)中的所有Functions 的Max_Payload_Size完全相同,如果有个Upstream Port与这个MFD相关联,它传输的 TLP data payload不得超过通用 Max_Payload_Size 设置。
  • 如果一个非ARI Multi-Function Device(MFD)中的所有Functions 的Max_Payload_Size不完全相同,如果有个Upstream Port与这个MFD相关联,它传输的 TLP data payload不得超过我们自定义的 Max_Payload_Size 设置。
  • 由 TLP 的 Length 字段给出的已接收 TLP 的data payload大小不得超过接收器设备Controller 寄存器的 Max_Payload_Size 字段中的值指定的长度。接收者必须检查是否违反此规则。 如果接收器确定 TLP 违反此规则,则该 TLP 是格式错误的 TLP,这是一个与接收端口相关的报告错误。
  • 对于 ARI 设备,Max_Payload_Size 仅由Function 0 中的设置确定。其他Function中的 Max_Payload_Size 设置将被忽略。
  • 如果一个非ARI Multi-Function Device(MFD)中的所有Functions 的Max_Payload_Size完全相同,如果有个Upstream Port与这个MFD相关联,接收器需要根据通用 Max_Payload_Size 的设置检查 TLP data payload大小。
  1. 如果一个非ARI Multi-Function Device(MFD)中的所有Functions 的Max_Payload_Size不完全相同,如果有个Upstream Port与这个MFD相关联,接收器需要根据自定义的Max_Payload_Size 设置检查 TLP 的data payload。

对于包含数据的 TLP,Length字段中的值与 TLP 中包含的实际数据量必须匹配。同时,接收者必须检查是否违反此规则。 如果接收器确定 TLP 违反此规则,则该 TLP 是Malformed TLP,这是一个跟Receiving Port相关的Reported Error。(RTL实现中要实现的ERROR异常)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PCIe
    +关注

    关注

    15

    文章

    1184

    浏览量

    82311
  • 数据包
    +关注

    关注

    0

    文章

    247

    浏览量

    24334
  • TLP
    TLP
    +关注

    关注

    0

    文章

    30

    浏览量

    15590
收藏 人收藏

    评论

    相关推荐

    PCIe引脚定义和PCIe协议介绍

    本文我们将向大家介绍PCIe引脚定义以及PCIe协议
    发表于 09-26 11:39 1.5w次阅读
    <b class='flag-5'>PCIe</b>引脚定义和<b class='flag-5'>PCIe</b>协议<b class='flag-5'>层</b>介绍

    Delphi教程之事务工作原理

    Delphi教程之事务工作原理,学习Delphi的必备资料。
    发表于 03-31 11:29 2次下载

    AD6.0初级入门教程

    AD6.0初级入门教程
    发表于 12-09 16:25 0次下载

    Oracle核心技术之事务和锁

    事务和锁是两个联系非常紧密的概念。事务很重要,可以保证多用户并发系统中的数据的完整性。在数据库中,存在多个用户同时对某一数据进行读写操作的情况,为了确保数据的并行性和一致性,可以使用事务。锁
    发表于 03-26 10:24 3次下载

    一个简单地的例子来回顾PCIe总线的结构、事务、数据链路层和物理

    如下图所示,Completer的应用会根据接受到的信息进行相应的处理,处理完成后会将数据发送至事务事务根据这一信息创建一个新的TLP
    的头像 发表于 05-02 09:58 9109次阅读
    一个简单地的例子来回顾<b class='flag-5'>PCIe</b>总线的结构、<b class='flag-5'>事务</b><b class='flag-5'>层</b>、数据链路层和物理<b class='flag-5'>层</b>

    数据库设计开发技术案例教程之事务控制与锁定

    本文档的主要内容详细介绍的是数据库设计开发技术案例教程之事务控制与锁定主要内容包括了:1,事务的概念及分类 2,事务的简单操作 3,锁的分类 4,死锁的处理
    发表于 01-11 11:20 3次下载
    数据库设计开发技术案例教程<b class='flag-5'>之事务</b>控制与锁定

    楷登电子发布PCIe 6.0规范Cadence IP

    中国上海,2021 年 10 月 22 日——楷登电子(美国 Cadence 公司,NASDAQ:CDNS)宣布发布支持 TSMC N5 工艺的 PCI Express(PCIe6.0 规范
    的头像 发表于 10-26 14:28 4306次阅读

    PCIe 6.0的新变化与新挑战

    2022年1月11日,PCI-SIG正式发布了PCI Express(PCIe) 6.0最终版本1.0,标志着各大IP、芯片厂商可以开始着手设计、开发自己技术和产品了。从技术上来说,PCIe
    的头像 发表于 04-13 13:50 4683次阅读

    是德科技发布新款端到端的PCIe5.0/6.0测试解决方案

    提供PCIe5.0/6.0 从仿真到物理到协议的完整测试方案。
    的头像 发表于 04-18 11:35 1771次阅读

    CXL事务详解

    CXL.io为IO设备提供非一致性的load/strore接口。事务类型、事务数据包格式、信用流量控制、虚拟通道管理、事务顺序的规则等遵循PCIe协议。CXL.io的
    的头像 发表于 10-10 16:02 2759次阅读

    干货:PCIE6.0技术剖析

    关于PCIe6.0 你需要知道的都在这里 从正式发布至今,PCI Express(PCIe)发展迅速,已经成为高性能计算、人工智能/机器学习(ML)加速器、网络适配器和固态存储等应用不可或缺的一项
    的头像 发表于 12-07 07:40 4538次阅读

    如何破解PCIe 6.0带来的芯片设计新挑战?

    本文转载自《半导体行业观察》 感谢《半导体行业观察》对新思科技的关注 PCI Express (PCIe) 6.0规范实现了64GT/s链路速度,还带来了包括带宽翻倍在内的多项重大改变,这也为SoC
    的头像 发表于 01-19 16:50 863次阅读

    PCIe 6.0入门之什么是 PCIe 6.0

    PCI Express® 6.0 (PCIe® 6.0) 规范由 PCI-SIG® 于 2022 年 1 月发布。最新一代的 PCIe 标准带来了许多激动人心的新功能,旨在提高计算密集
    的头像 发表于 05-22 17:27 6192次阅读
    <b class='flag-5'>PCIe</b> <b class='flag-5'>6.0</b><b class='flag-5'>入门</b>之什么是 <b class='flag-5'>PCIe</b> <b class='flag-5'>6.0</b>

    PCIe 6.0入门基本结构和功能介绍

    PCIE中术语 GT/s 用于指代在lane上每秒传输的编码位数,这里lane指的就是一组差分信号对(一对用于传输,一对用于接收)。 为了扩展带宽,一个链路可以聚合多个通道,表示为xN 其中 N 可以是任何
    的头像 发表于 05-22 17:29 2609次阅读
    <b class='flag-5'>PCIe</b> <b class='flag-5'>6.0</b><b class='flag-5'>入门</b>基本结构和功能<b class='flag-5'>层</b>介绍

    PCIe 6.0入门之事务层报文格式

    事务描述符是一种在请求方和完成方之间携带事务信息的机制。通过事务描述符TL才知道要如何处理这些报文。在整个事务描述符由三个字段组成:
    的头像 发表于 05-22 17:32 4012次阅读
    <b class='flag-5'>PCIe</b> <b class='flag-5'>6.0</b><b class='flag-5'>入门</b><b class='flag-5'>之事务</b>层报文格式