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
    +关注

    关注

    13

    文章

    1116

    浏览量

    81344
  • 数据包
    +关注

    关注

    0

    文章

    232

    浏览量

    24156
  • TLP
    TLP
    +关注

    关注

    0

    文章

    30

    浏览量

    15540
收藏 人收藏

    评论

    相关推荐

    PCIe 6.0元年,AI与HPC迎来新速度

    电子发烧友网报道(文/周凯扬)2022年1月,PCI-SIG发布了PCIe 6.0规范,正式拉开了接口带宽大幅升级的序幕。然而,在规范公布的两年时间里,也已经更新了6.0.1和6.1版本,PCIe
    的头像 发表于 01-31 09:02 2448次阅读

    Delphi教程之事务工作原理

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

    AD6.0初级入门教程

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

    Oracle核心技术之事务和锁

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

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

    本文档的主要内容详细介绍的是数据库设计开发技术案例教程之事务控制与锁定主要内容包括了: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 4169次阅读

    泰克提供业界首创的 PCIe 6.0 测试解决方案

    在 PCI-SIG工作组发布PCIe 6.0 基本规范和验证要求仅几周后,全球测试与测量领导者泰克公司推出了业界首个基于最新规范PCIe 6.0的发射器测试解决方案。
    发表于 02-21 10:11 1112次阅读

    PCIe 6.0的新变化与新挑战

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

    PCIe 6.0有啥用?

    PCIe 6.0被认为该标准诞生19年来最具革命性的一次飞跃,不仅数据传输率再次翻番最高可达64GT/s,x16单向带宽128GB/s、双向带宽256GB/s,更是升级为1b/1b编码的PAM4脉冲调制。
    发表于 11-23 15:51 904次阅读

    干货:PCIE6.0技术剖析

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

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

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

    PCIe 6.0入门之什么是 PCIe 6.0

    PCI Express® 6.0 (PCIe® 6.0) 规范由 PCI-SIG® 于 2022 年 1 月发布。最新一代的 PCIe 标准带来了许多激动人心的新功能,旨在提高计算密集
    的头像 发表于 05-22 17:27 5527次阅读
    <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入门之事务层报文格式

    事务描述符是一种在请求方和完成方之间携带事务信息的机制。通过事务描述符TL层才知道要如何处理这些报文。在整个事务描述符由三个字段组成:
    的头像 发表于 05-22 17:32 3379次阅读
    <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的优化设计方案探讨分析

    为了实现64GT/s的链路速度,PCIe 6.0采用脉冲幅度调制4级 (PAM4) 信号,在与32GT/s PCIe相同的单元间隔(UI)中提供4个幅度级别(2 位)。图1显示了三眼眼图与此前的单眼眼图的对比。
    发表于 08-05 09:33 692次阅读
    <b class='flag-5'>PCIe</b> <b class='flag-5'>6.0</b>的优化设计方案探讨分析

    新思科技PCIe 6.0 IP与英特尔PCIe 6.0测试芯片实现互操作

    :SNPS)近日宣布,新思科技PCI Express(PCIe6.0 IP在端到端64GT/s的连接下,成功实现与英特尔PCIe 6.0测试芯片的互操作性。这一全新里程碑也将保证,在
    发表于 10-12 15:11 216次阅读