PCIE3.0基础说明(PCI Express Base Specification Revision 3.0 by PCI-SIG)笔记——第二章:事务层说明(1)

PCIe Base Specification解析(一) 本章概述了PCI Express 架构和关键概念。 阅读详情


2.事务层说明

2.1. 事务层概述

下图为事务层在PCIE整体结构中的示意图
在这里插入图片描述

从一个较高的层级来看,事务层所涉及的关键内容包括:

  • 一种流水线的完全拆分事务协议
  • 用于区分事务层数据包(TLP)的排序和处理需求的机制
  • 基于信用的流控制
  • 用于数据中毒检测和端到端数据完整性检测的可选支持

事务层主要包括如下内容:

  1. 构建和处理TLP

  2. 与设备资源相关的事务层机制,包括:

  • 流控制

  • 虚拟通道管理

  1. 用于TLP排序和管理的规则
  • 与PCI/PCI-X兼容的排序方式
  • 包括流类别的划分

2.1.1. 地址空间、事务类型和用法

“事务”是在请求者和完成者之间进行信息传输的基础。下表中定义了四种地址空间和不同的事务类型,每种地址空间都有其特有的用法。

地址空间事务类型基本用法
内存(memory)读/写向内存映射的地址传输数据
I/O读/写向I/O映射的地址传输数据
配置(configuration)读/写设备功能配置/设置
消息(message)基线从事件信令机制到通用消息
2.1.1.1.内存事务

内存事务包括如下类型:

  • 读请求/读完成
  • 写请求
  • 请求/完成的原子操作

内存事务使用了两种不同的地址格式:

  • 短地址格式:32位地址
  • 长地址格式:64位地址
2.1.1.2. I/O事务

PCIE支持I/O空间,以兼容老设备的使用需求。未来可能会不再使用I/O空间。I/O事务包括如下类型:

  • 读请求/读完成
  • 写请求/写完成

I/O事务仅使用一种地址格式:

  • 短地址格式:32位地址
2.1.1.3.配置事务

配置事务用于访问设备的配置寄存器。

配置事务包括如下类型:

  • 读请求/读完成
  • 写请求/写完成
2.1.1.4.消息事务

消息事务或简称消息,用于支持设备之间事件的带内通信。

除了规定的消息之外,PCIE还支持由厂商定义的使用特定消息格式的消息。

2.1.2.数据包格式概述

事务由”请求“和”完成“构成,并使用数据包进行通信。下图展示了TLP的结构,主要由一个或多个可选的TLP前缀、一个TLP头部、一个数据负载和一个可选的TLP摘要构成。

在这里插入图片描述

如上如所示,从概念上而言,PCIE将信息按照序列化的字节流进行传输。注意,在字节层面来看,将最先传输上图中的最左边的字节。

下图展示了TLP前缀、TLP头部和TLP摘要的细节内容。其中,为了提高串行互联的性能,对头部的布局进行了优化,以满足首先传输对时间要求最严格的信息的需求。例如,在TLP头部中,在地址域中最高位字节首先被传输,以尽早用于地址解码。

在这里插入图片描述

根据数据包的类型,数据包头部将会包括如下类型的域:

  • 数据包格式

  • 数据包类型

  • 任何相关数据的长度

  • 事务描述符,包括:
    a.事务ID
    b.属性
    c.流类型

  • 地址/路由信息

  • 字节使能

  • 消息编码

  • 完成状态

2.2.事务层协议:数据包定义

对于在链路上相互通信的两个组件,PCIE将使用基于数据包的协议在事务层进行信息交换。PCIE支持如下基本的事务类型:内存、I/O、配置和消息。内存请求支持两种地址格式:32位和64位。

事务是使用“请求”和“完成”展开的。“完成”是按需使用的,例如,为了返回读取的数据,或为了确认I/O完成以及配置写事务。“完成”与它们所对应的请求相关联,这种关联可通过数据包头部中的事务ID域的值确定。

当构建一个TLP时,对于TLP中标记了“保留”(简写为“R")的域,必须使用”0"进行填充。接收者必须忽略这些保留域中的值,交换器在进行转发时也不能进行修改。值得注意的是,某些域可能同时是“定义的”和“保留的”——对于这些情况的保留值需要单独处理。

2.2.1.常见的数据包头部域

所有事务层数据包(TLP)的前缀和头部都包含如下域,如下图所示:

  • Fmt[2:0],TLP格式(见Table 2-2),字节0的7~5位
  • Type[4:0],TLP类型,字节0的4~0位

在这里插入图片描述

Fmt域表示存在一个或多个TLP前缀,类型域表示了相关的TLP前缀类型。

TLP头部的Fmt和类型域中提供了用于确定TLP头部其余部分大小的信息,还可以用于说明数据包在头部之后是否包含了数据负载。

TLP头部中的Fmt、类型、TD和长度域,包含了用于确定TLP中非前缀部分整体大小的所有信息。类型域除了定义了TLP的类型之外,还确定了交换器将如何路由该TLP。

  • Table 2-3中给出了Fmt[2:0]和Type[4:0]所允许的值。
  • TC[2:0],流类型,字节1的6~4位
  • TH,在TLP头部中用于表示存在TLP处理提示(TLP Processing Hints,TPH),以及可选的TPH TLP前缀(如果有),字节1的第0位
  • Attr[1:0],属性,字节2的5~4位
  • Attr[2],属性,字节1的第2位
  • TD,表明在TLP末尾,存在构成单个DW的TLP摘要,字节2的第7位
  • EP,表明TLP中毒了,字节2的第6位
  • Length[9:0],DW中的数据负载长度,包括字节2中的1~0位和字节3中的7~0位
    a.TLP数据必须4字节对齐,并按4字节(Double Words,DW)增长
    b.为不包含或引用数据有效载荷的TLP保留 ,包括Cpl,CplLk和消息

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2.2. 带数据负载的TLP:规则

  1. Length必须为整数个DW

  2. Length[9:0]为所有消息所保留,除了那些显示给出数据长度的消息

  3. 由TLP 长度域指定的发送方数据负载长度,不能超过发送方设备控制寄存器Max_Payload_Size域所指定的长度

  • 对于ARI设备,Max_Payload_Size仅有Function 0设定。其他Function中的Max_Payload_Size设定将被忽略
  • 对于一个和非ARI多功能设备相关的上游端口,如果Max_Payload_Size的设定在所有Function中都是一样的,发送的TLP数据负载不能超过这个通用的Max_Payload_Size设定
  • 对于一个和非ARI多功能设备相关的上游端口,如果Max_Payload_Size的设定在所有Function中不全相同,发送的TLP数据负载不能超过特定的Max_Payload_Size设定
    a.实现Transmitter时,尽量使用由产生事务的Function中所设定的Max_Payload_Size,或者所有Function中最小的Max_Payload_Size
    b.软件不能在不同Function中设定不同的Max_Payload_Size,除非软件知晓具体的实现
  • 注意:Max_Payload_Size仅在具有数据负载的TLP中使用;内存读请求的长度不受Max_Payload_Size的限制。内存读请求的大小由Length域控制。
  1. 接收到的TLP的数据负载长度由TLP的长度域指定,该长度不能超过由接收者的设备控制寄存器所指定的Max_Payload_Size大小
  • 接受者必须验证这一规则是否被违背。如果接受者确定一个TLP违背了该规则,那么这个TLP就是一个畸形的TLP。
  • 对于ARI设备,Max_Payload_Size仅有Function 0设定。其他Function中的Max_Payload_Size设定将被忽略
  • 对于一个和非ARI多功能设备相关的上游端口,如果Max_Payload_Size的设定在所有Function中都是一样的,接收的TLP数据负载不能超过这个通用的Max_Payload_Size设定
  • 对于一个和非ARI多功能设备相关的上游端口,如果Max_Payload_Size的设定在所有Function中不全相同,接收的TLP数据负载不能超过特定的Max_Payload_Size设定
  • 实现Receiver时,尽量使用由产生事务的Function中所设定的Max_Payload_Size,或者所有Function中最小的Max_Payload_Size
  • 软件不能在不同Function中设定不同的Max_Payload_Size,除非软件知晓具体的实现
  1. 对于包含数据的TLP,Length域中的值必须TLP中实际包含的数据长度相匹配
  2. Length域中的值仅用于指定数据长度,TLP摘要的长度不包含在Length域中
  3. 当一个数据负载被包含在一个TLP中,而非一个AtomicOp Request或一个AtomicOp Completion中,那么数据的第一个字节将紧跟头部之后,后续字节将按字节序递增
  • 例:将16字节数据写到地址100h,头部之后的第一个字节应该写到地址100h,第二个字节应该写到地址101h,以此类推,最后一个字节写在地址10Fh
  1. 在AtomicOp Requests和AtomicOp Completions中的数据负载必须按照如下格式进行排列:TLP头部之后的第一个数据字节应该是第一个数据值的最低有效字节,后续数据字节要严格安汇总啊有效位递增。对于CAS Requests,第二个数据值必须紧跟第一个数据值,并且使用相同格式。

2.2.3 TLP摘要规则

  1. 对于任何TLP,TD位中的值表明了在TLP的最后存在包括ECRC值的TLP摘要。
  • 如果TLP的TD位的值与观察到的值不一致,那么这个TLP就是一个存在错误的TLP
  1. 如果处于中间或最后的PCIE 接受者不支持ECRC检查,那么接受者必须忽略TLP摘要。
  • 如果接收者支持ECRC检查,那么接收者将把TLP摘要中对应的域解释为ECRC值。

2.2.4 路由和寻址规则

值表明了在TLP的最后存在包括ECRC值的TLP摘要。

  1. 如果TLP的TD位的值与观察到的值不一致,那么这个TLP就是一个存在错误的TLP

  2. 如果处于中间或最后的PCIE 接受者不支持ECRC检查,那么接受者必须忽略TLP摘要。

  • 如果接收者支持ECRC检查,那么接收者将把TLP摘要中对应的域解释为ECRC值。

2.2.4 路由和寻址规则

待续

PCIe Gen6相比Gen5的新特性、优化点 PCIe Gen6相比Gen5的主要改进包括:采用PAM4编码实现64GT/s速率,每条Lane原始吞吐率翻倍;引入必选的前向纠错(FEC)技术,放宽链路误码率要求;增强信道均衡和链路训练协议;物理层设计更严格,需支持PAM4和FEC。尽管协议层对软件透明,但硬件实现要求更高,包括更复杂的PCB设计、升级的Retimer和更严格的信号完整性测试。Gen6可提供约1.6Tb/s带宽(x16配置),主要面向高性能计算、AI加速等场景,同时保持向下兼容性。 阅读详情

相关推荐

【信息科学与工程学】【产品体系】【制造工程】计算机科学与自动化——第一百八十八篇 “存储系统/存储介质/存储芯片”中的学科知识

物理设计与签核(编号 80-82, 103-106):从存储阵列布局布线、电源网格、时钟分布,到物理验证、时序功耗签核、电磁热协同仿真——构成从 RTL 到 GDSII 的完整后端流程。测试与可靠性(编号 83-84, 87-88, 107-108):ATE 测试、BIST/DFT、辐射效应(SEE/TID)、TDDB、HCI/NBTI——确保芯片在制造和使用中的质量与寿命。先进工艺与封装(编号 85-86, 89-90

weixin_49199313的博客 12

PCI Express Base Specification Revision 4.0 Version 1.0

PCIE 协议 PCIE 4.0协议 September 27, 2017

PCIe 3.0 规范文档

PCIe 3.0 规范文档

PCIE3.0基础说明PCI Express Base Specification Revision 3.0 by PCI-SIG笔记——第二章事务层说明(2)

文章目录2.2.4.路由和寻址规则2.2.4.1 基于地址的路由规则2.2.4.2.基于ID的路由规则2.2.5.头/尾DW字节使能规则2.2.6. 事务描述符 2.2.4.路由和寻址规则 TLP路由具备三个主要机制:地址路由、ID路由和隐式(implicit)路由。其中,隐式路由仅有消息请求使用。 2.2.4.1 基于地址的路由规则 地址路由主要用于内存和I/O请求。 定义了两种地址格式,64位格式使用了4个DW的头部,32位格式使用了3个DW的头部。(分别如figure 2-7和2-8所示)。 对于

weekman93的专栏 2687

PCIe 5.1 - Introduction

该文章基于《5.0-1.0-PUB — PCI Express® Base Specification Revision 5.0 Version 1.0》翻译和理解 本章概述了PCIExpress架构和关键概念。PCIExpress是一种高性能、通用的I/O互连,可用于未来的各种计算和通信平台。维护了关键的PCI属性,如它的使用模型、负载存储架构和软件接口,而它的并行总线实现被一个高度可伸缩的、完全串行的接口所取代。PCIe利用了在点对点互连、基于交换的技术和分组协议方面的最新进展,提供了更新级别的性能和

天使之翼 2968

PCIExpressBaseSpecificationRevision3.0资源下载介绍:提供PCIe技术详解,助力硬件研发

PCIExpressBaseSpecificationRevision3.0资源下载介绍:提供PCIe技术详解,助力硬件研发 【下载地址】PCIExpressBaseSpecificationRevision3.0资源下载介绍 探索PCI Express技术的核心精髓,这份资源为您提供了PCI Express Base ...

gitblog_06701的博客 971

PCI Express 4.0规范全文下载,SSD和网卡何时能受益?

PCI Express® Base Specification Revision4.0 Version 1.0 下载链接 http://pan.baidu.com/s/1dFxqX9Z (也可以点击本文底部“阅读原文”) 大家可能看到新闻了,PCIe Express 4.0 v1.0规范终于正式发布,此时距离我撰写支持PCIe Gen4的《初探O...

weixin_34343689的博客 3241

PCIe M.2规范详解

PCIe M.2规范详解 去发现同类优质开源项目:https://gitcode.com/ 欢迎使用PCIe M.2规范资源文件下载仓库。本仓库提供的资源文件《PCI Express M.2 Specification Revision 1.0》为PCI SIGPCI 特殊兴趣小组)官方发布的重要文件,旨在为开发者和技术人员提供关于PCI Express M.2规范的详尽标准和接口定义。 文件简...

gitblog_06700的博客 1049

PCIE:如何获取PCIE学习资料文档

如何获取PCIE学习资料文档

个人学习记录 2808

PCIe CEM r3.0

PCI Express CEM Specification r3.0; PCe3.0 CEM;PCe CEM文档

PCI Express Base Specification Revision 2.0 协议规范

PCI Express Base Specification Revision 2.0 协议规范

PCI Express Base Specification Revision 3.0

20101110号的正式版 PCI_Express_Base_r3.0_10Nov10

PCI Express® Card Electromechanical Specification Revision 3.0

PCI Express® Card Electromechanical Specification Revision 3.0_has no ChangeBar

pcie 3.0的spec,懂的人都知道

pcie 3.0的spec全书860页。懂的人都知道,我这个全网最便宜。

PCI 总线学习笔记(二)

PCI配置空间的访问、存储器域与PCI总线域地址

日常学习记录 1580

PCIeM.2规范详解:核心功能/场景

PCIeM.2规范详解:核心功能/场景 去发现同类优质开源项目:https://gitcode.com/ 解读PCIe M.2接口规范,助力硬件研发与创新。 项目介绍 在当前高速发展的信息技术时代,硬件接口的规范与标准成为连接设备、提高传输效率的关键。PCIe M.2规范详解项目,是一个开源资源库,提供了PCI SIGPCI 特殊兴趣小组)官方发布的《PCI Express M.2 Specif...

gitblog_06760的博客 314

PCIe板卡结构尺寸

第一部分,板卡尺寸&对应挡板 第二部分,定位信息 第三部分,金手指参数 参考资料: PCI Express 1x, 4x, 8x, 16x bus pinout PCI Express Card Electromechanical Specification Revision 3.0 pcie-xxx-02-x-d-th-footprint, Samtec ...

Kevin.Cai 3万+

PCI Express Base Specification Revision 3.0 英文手册 免费下载

自己花钱找的资源免费分享给所有学习PCIe的同学们: 百度链接: 链接:https://pan.baidu.com/s/1lydqD_SiS54bq7Zyz9VsCA 提取码:evpx

qq_34244712的博客 6433
上一篇: 《VxWorks7编程指南》笔记(七)——I/O系统:基础I/O
下一篇: 《VxWorks7编程指南》笔记(八)——I/O系统:标准I/O
weekman93
博客等级 码龄15年 147粉丝 69原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weekman93

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值