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

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

3天内不再提示

PCI-E TLP学习笔记(1)

FPGA技术江湖 来源:FPGA技术江湖 2024-11-06 09:14 次阅读

大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。

今天给大侠带来PCI-Express transaction Layer specification(处理层协议),本次PCIE TLP 学习经验分享分为三篇,今天带来第一篇TLP概况(四种空间、三种处理类型、两种属性、主要包格式、TLP通用包头)和TLP打包地址和路由导向方式(Address寻址、ID寻址方式、处理层描述符),话不多说,上货。 为了方便各位大侠浏览,下面列出三篇分享的大概内容目录介绍:

  • 一、TLP概况
  • 1. 四种空间
  • 2. 三种处理类型
  • 3. 两种属性
  • 4. 主要包格式
  • 5. TLP通用包头
  • 二、TLP打包地址和路由导向方式
  • 1. Address寻址
  • 2. ID寻址方式
  • 3. 处理层描述符(transaction Descriptor
  • 三、I/O,Memory,Configuration,Message Request、Completetion详解
  • 1. Memory Request Package
  • 2. I/O Request 包
  • 3. Configuration Request包
  • 4. Message
  • 5. Completion Rules(应答机制)
  • 四、请求和应答处理机制
  • 1. Request Handling Rules
  • 2. Completion Handling
  • 五、virtual channel(vc)Mechanism虚拟通道机制
  • 1. TC/VC映射
  • 2. Flow Control
  • 六、Data Integrity数据完整性

一、TLP概况

处理层(transaction Layer specification)是请求和响应信息形成的基础。包括四种地址空间,三种处理类型,从下图可以看出在transaction Layer 中形成的包的基本概括。

1. 四种空间:

570abdc0-90a3-11ef-a511-92fbcf53809c.png

2. 三种处理类型

i/o口和memory的读写包(TLPS:transaction Layers packages)

配置寄存器的读写设置包

信息包,描述通信状态。

作为事件的信号告知用户。

对memory的读写包分为读请求包和响应包、写请求包(不需要存储器的响应包)。而i/o类型的读写请求都需要返回I/O口的响应包,configuration包对配置寄存器的读写请求也有响应包。这些请求包还可以按属性来分类。

3.两种属性

Non Posted:即请求需要返回completion的响应包;

Posted:即不需要completion返回响应包。例如上面的存储器写入请求包和Message包都隶属于posted包。

4. 主要包格式

572d2b76-90a3-11ef-a511-92fbcf53809c.png

每种类型的包都有一定格式的包头(Tlp Header),根据不同的包的特性,还包括有效数据负荷(Data Payload)和tlp开销块(Tlp Digest)。包头中的数据用于对包的管理和控制。有效数据负荷域存放有效数据信息。具有数据的TLP传递是有一定规则的:以DW为长度单位,发送端数据承载量不得超过“Device Control Register”中的“Max_Payload_Size”数值,接收端中,所接收到的数据量也不能超过接收端“Device Control Register”中的“Max_Payload_Size”数值。TLp Digest域是32位的ECRC校验。具体的包结构图如下:

57457e7e-90a3-11ef-a511-92fbcf53809c.png

由此图可看出数据从低字节的高位先发送,从左到右。以下详细介绍TLPS的每个成分。

5.TLP通用包头

575e07dc-90a3-11ef-a511-92fbcf53809c.png

R为保留信息位,应设为0,路由器switch对此位不做修改,接收器应该忽略此位。

Fmt[1:0]:Format of TLP (see Table 2-2) – bits 6:5 of byte0。

Type[4:0]:Type of TLP – bits 4:0 of byte 0。

TC[2:0]: Traffic Class – bits [6:4] of byte1,关于TC的作用将在下文说明。

Attr[1:0]: Attributes – bits [5:4] of byte 2,详细介绍见下文。

TD:1b indicates presence of TLP digest in the form of a single DW at the end of the TLP标志TLPDigest域的有无。

EP: indicates the TLP is poisoned – bit 6 of byte 2有效数据中毒(出错)机制。

Length[9:0]:Length of data payload in DW。

Fmt开销位说明TLP Header的长度和TLP是否包含数据,如下图:

5772dc34-90a3-11ef-a511-92fbcf53809c.png

Fmt[1:0]=00b,代表3DW的包头,没有数据。

Fmt[1:0]=01b,代表4DW的包头,没有数据。

Fmt[1:0]=10b,代表3DW的包头,有数据。

Fmt[1:0]=11b,代表4DW的包头,有数据。

Fmt [0] 表示包头格式是3长字还是4长字,Fmt[1] 表示包头是否包含数据。

Fmt和Type开销组合定义了包(TLP)的类型如下:

578f9efa-90a3-11ef-a511-92fbcf53809c.png

上图定义了各种类型的包,图中的r[2:0]用于定义Message包的隐含寻址方式,在下文中更为详细。 Length域定义了有效负荷的DW长度如下:

57ad02d8-90a3-11ef-a511-92fbcf53809c.png

在不包含data payload块的包中Length的值应被设置为保留值R,并被接收端忽略。余下的各个开销位将在后文提到。

二、TLP打包地址和路由导向方式

地址路由(address)

ID识别路由

间接路由(implicit) 下面主要介绍address和ID寻址方式,间接寻址将在后面提及。

1.Address寻址

主要用于memory和i/o request请求包

memory读写请求包支持64位地址和32位地址,

i/o读写请求只支持32位地址

64位地址寻址的TLP Header有4DW(16字节),

32位地址寻址的TLP Header有3DW长。

57d19c74-90a3-11ef-a511-92fbcf53809c.png

57e74574-90a3-11ef-a511-92fbcf53809c.png

上图就是64位地址的4DW的包头和32位地址的3DW的包头。对于memory读写request包,AT(address Type field)有如下的编码。

5802ba02-90a3-11ef-a511-92fbcf53809c.png

2.ID寻址方式

主要用在configuration 请求包、部分message包、响应包中。ID包括Bus number、Divce number、function number为TLP定位目标接收器。ID寻址的TLP包头长度也有4DW和3DW两种,ID在TLP中位置见下图。

581e2db4-90a3-11ef-a511-92fbcf53809c.png

584013ca-90a3-11ef-a511-92fbcf53809c.png

第七个Byte(Byte7)是第一个DW数据负荷和最后一个DW数据负荷使能位(Byte Enables),Byte Enables在于memory,i/o,configuration 请求包中有效,如图。

585b30ba-90a3-11ef-a511-92fbcf53809c.png

对于last DW BE和1st DW BE中的每一个位,为0表示相应的数据字节不被读或写,为1表示相应的数据字节有效。每个使能位相对应的字节如下。

587bf6ec-90a3-11ef-a511-92fbcf53809c.png

3.处理层描述符(transaction Descriptor)

对于两种路由方式来说是通用的。

用于请求器件和应答器件间转送处理层信息,包括三部分,Transaciton ID、Attributes、Traffic class(TC),如下图。

58940926-90a3-11ef-a511-92fbcf53809c.png

其中Transaction ID包括: Requester ID、Tag,如图。

58a88554-90a3-11ef-a511-92fbcf53809c.png

Tag[7:0]是由产生请求包的器件生成的,如果请求器件需要应答,则每个Tag[7:0]和Function Number是独一无二的。Transaction ID是一个全局标识符用于响应包寻址请求器件。

TC的规定如下,描述服务的层次和用于映射虚拟通道:

58c1c8a2-90a3-11ef-a511-92fbcf53809c.png

处理层描述符在请求包中第二个DW:

58e0ba28-90a3-11ef-a511-92fbcf53809c.png

从图中看出,描述字符放在第二个DW的前三个字节中。

第一篇到此结束,下次金带来第二篇,i/o,memory,configuration,message request、completetion(Memory Request Package、I/O Request 包、Configuration Request包、Message、Completion Rules(应答机制))等。

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

    关注

    1624

    文章

    21613

    浏览量

    601094
  • 寄存器
    +关注

    关注

    31

    文章

    5288

    浏览量

    119780
  • PCI
    PCI
    +关注

    关注

    4

    文章

    662

    浏览量

    130116
  • TLP
    TLP
    +关注

    关注

    0

    文章

    32

    浏览量

    15590

原文标题:PCI-E TLP(处理层协议)学习经验分享 I

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    PCI-E 的PADS封转

    PCI-E封装
    发表于 03-30 11:30

    在FPGA上设计PCI-e Gen2.0和PCI-e Gen3.0有什么不同

    请教各位大大,在FPGA上进行设计PCI-e的接口通信,2代和3代的设计有什么不同吗?如果学习了2代改到开发3代是在原工程上做小改变还是要推倒重做?
    发表于 03-03 09:55

    pci-e布线规范

    pci-e布线规范
    发表于 07-14 14:49

    解决台式机PCI-E 1X不够难题 :乐扩PCI-E 1X转2口PCI-E 1X扩展卡

    针对目前解决台式机PCI-E 1X插槽不够用的瓶颈现状,拥有十几年研发和生产经验的老品牌厂家乐扩发布了一款可以将主机PCI-E1X插槽转换为2个PCI-E
    发表于 10-19 16:25

    PCI PCI-X PCI-E介绍 精选资料分享

    PCI PCI-X PCI-E介绍1.PCI外设互联标准(或称个人电脑接口,Personal Computer Interface),实际应用中简称
    发表于 07-29 06:40

    什么是PCI PCI-X PCI-E

    什么是PCI PCI-X PCI-E
    发表于 10-25 07:37

    PCI-E接口定义 引脚定义图 PCI-E针脚定义图

    说明:PCI-E
    发表于 04-27 18:09 7.8w次阅读
    <b class='flag-5'>PCI-E</b>接口定义 引脚定义图 <b class='flag-5'>PCI-E</b>针脚定义图

    南桥PCI-E通道数

    南桥PCI-E通道数              南桥PCI-E通道数是指芯片组中
    发表于 12-26 16:10 578次阅读

    PCI-e总线FPGA开发板资料说明

    自从2004年pci-e1.0a规范之后,主板上就开始有了最新的串行高速PCI-E总线,相比原来的PCIV2.3,PCI-E总线有很大的优势,首先,PCI-E降低了芯片连接的管脚数量,
    发表于 04-14 00:56 171次下载

    浅谈显卡PCI/AGP/PCI-E接口的区别

    PCI-E 1.0标准提供了2.5GT/s(Giga Transmissionper second ,千兆传输/秒,即每一秒内传输的次数,不同于Gbps)的传输速度,常用的PCI-E X16提供16
    发表于 11-03 16:13 7573次阅读

    Intel的核显真的占用了CPU的4根PCI-E通道吗

    在讨论到CPU的PCI-E通道问题时,我发现很多人都以为Intel的核显占用了CPU的4根PCI-E通道,包括很多可以找到的“科普贴”中都写了核显会占用4条PCI-E通道。其实这是一种常见的误区,从
    发表于 11-23 10:20 5292次阅读
    Intel的核显真的占用了CPU的4根<b class='flag-5'>PCI-E</b>通道吗

    连欣PCI模块连接器PCI-E 52PIN原理图

    连欣PCI模块连接器PCI-E 52PIN原理图
    发表于 07-08 09:20 49次下载

    pci-e插槽的规格有哪些 各个版本的pci-e的规范区别

    PCI-E的接口根据总线位宽不同而有所差异,包括X1、X4、X8以及X16,而X2模式将用于内部接口而非插槽模式。PCI-E规格从1条 通道连接到32条通道连接,有非常强的伸缩性,以满
    发表于 08-05 10:16 8249次阅读
    <b class='flag-5'>pci-e</b>插槽的规格有哪些 各个版本的<b class='flag-5'>pci-e</b>的规范区别

    PCI-E TLP学习笔记(2)

    今天给大侠带来PCI-Express transaction Layer specification(处理层协议),本次PCIE TLP 学习经验分享分为三篇,今天带来第二篇,i/o,memory
    的头像 发表于 11-06 09:16 57次阅读
    <b class='flag-5'>PCI-E</b> <b class='flag-5'>TLP</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>(2)

    PCI-E TLP学习笔记(3)

    今天给大侠带来PCI-Express transaction Layer specification(处理层协议),本次PCIE TLP 学习经验分享分为三篇,今天带来第三篇,也就是最后一篇,请求
    的头像 发表于 11-06 09:19 77次阅读
    <b class='flag-5'>PCI-E</b> <b class='flag-5'>TLP</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>(3)