PCIe事务层(详细)总结-PCIe专题知识(六)

news2025/1/11 5:59:56

目录

  • 前言
  • 一、简介
  • 二、事务层数据传输
  • 三、数据格式
  • 四、其他相关链接
    • 1、PCIe物理层总结-PCIE专题知识(一)
    • 2、PCIe数据链路层图文总结-PCIe专题知识(二)
    • 3、PCIe物理层链路训练和初始化总结-PCIe专题知识(三)
    • 4、PCIe物理层弹性缓存机制解析-PCIe专题知识(四)
    • 5、PCIe热插拔机制(详细)总结-PCIe专题知识(五)
    • 6、PCI总线及发展历程总结

前言

本文主要讲解PCIe事务层(Transaction Layer)的主要功能,通过图文解析方便读者快速掌握,同时有PCIe专题讲解整个PCIe的相关知识。

一、简介

在PCIe体系结构中,数据报文首先在设备的核心层(Device Core)中产生,然后再经过该设备的事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer),最终发送出去。而接收端的数据也需要通过物理层、数据链路和事务层,并最终到达Device Core。

事务层(Transaction Layer):接收端的事务层负责事务层包(Transaction Layer Packet,TLP)的解码与校检,发送端的事务层负责TLP的创建。此外,事务层还有QoS(Quality of Service)和流量控制(Flow Control)以及Transaction Ordering等功能,PCIe总线使用的这些总线事务在TLP头中定义。

在这里插入图片描述

数据链路层(Data Link Layer):数据链路层负责数据链路层包(Data Link Layer Packet,DLLP)的创建,解码和校检。同时,本层还实现了Ack/Nak的应答机制。
物理层(Physical Layer):物理层负责Ordered-Set Packet的创建与解码。同时负责发送与接收所有类型的包(TLPs、DLLPs和Ordered-Sets)。

二、事务层数据传输

事务层TLP传输的示意图如下图所示:
在这里插入图片描述
TLP在整个PCIe包结构的位置如以下两张图所示:(第一张为发送端,第二张为接收端)
发送端
在这里插入图片描述
接收端

在这里插入图片描述

三、数据格式

PCIe总线继承了PCI/PCI-X总线的大多数总线事务,如存储器读写(Memory Read/Write)、I/O读写、配置读写总线事务,并增加了Message总线事务和原子操作等总线事务。存储事务(Memory Transactions)包括的事务类型有读请求与响应、写请求、基于原子操作的请求与响应,并且支持3DW和4DW。

I/Ο事务(I/O Transactions),在PCIE3.0规范中说以后可能弃用该类型了,目前还是支持的,支持读、写的请求与响应,并只支持3DW。
配置事务(Configuration Transactions)用来访问设备的配置寄存器的,支持读、写的请求与响应事务类型。
消息事务(Message Transactions)支持设备间的带内通信(in-band)。
在这里插入图片描述

PCIe中有两大类总线事务:Non-Posted和Posted:
Non-Posted: 需要completion返回响应包;
Posted: 不需要completion返回响应包.

在PCIe总线中,Non-Posted总线事务分两部分进行,首先是发送端向接收端提交总线读写请求,之后接收端再向发送端发送完成(Completion)报文。PCIe总线使用Split传送方式处理所有Non-Posted总线事务,存储器读、I/O读写和配置读写这些Non-Posted总线事务都使用Split传送方式。

I/O 读写请求与存储器读写请求TLP格式基本类似,但只能是32位地址模式和基于地址的路由方式,且只能使用NON-Posted方式进行传递,这也是为了兼容PCI,在以后的协议几乎要取消I/O 读写请求了。另外,对于I/O读写请求,TC必须为0、Attr的低两位必须为0、AT必须为0、Length必须为1,Last DW必须为0。

在PCIe总线中,不同的总线事务采用的路由方式不相同。PCIe总线使用的数据报文首先在事务层中形成,这个数据报文也被称之为事务层数据报文,即TLP,TLP在经过数据链路层时被加上Sequence Number前缀和CRC后缀,然后发向物理层。

其中,TLP包的结构图如下图所示:
在这里插入图片描述

图中的TLP Digest即 ECRC(End-to-End CRC),是可选项。
此外,TLP的长度(包括其中的Header、Data和ECRC)是以DW(双字,即四个字节)为单位的。

TLP header的格式和内容会随着TLP的类型和路由(ID、Address、implcit)方式而改变,TLP的类型由Fmt(Format)决定,类型由type决定。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、其他相关链接

1、PCIe物理层总结-PCIE专题知识(一)

2、PCIe数据链路层图文总结-PCIe专题知识(二)

3、PCIe物理层链路训练和初始化总结-PCIe专题知识(三)

4、PCIe物理层弹性缓存机制解析-PCIe专题知识(四)

5、PCIe热插拔机制(详细)总结-PCIe专题知识(五)

6、PCI总线及发展历程总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/525823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud:微服务保护之规则持久化

现在,sentinel的所有规则都是内存存储,重启后所有规则都会丢失。在生产环境下,我们必须确保这些规则的持久化,避免丢失。 1.规则管理模式 规则是否能持久化,取决于规则管理模式,sentinel支持三种规则管理…

基于卷积的图像分类识别(一):AlexNet

本专栏介绍基于深度学习进行图像识别的经典和前沿模型,将持续更新,包括不仅限于:AlexNet, ZFNet,VGG,GoogLeNet,ResNet,DenseNet,SENet,MobileNet&#xff0c…

机器学习中的监督学习、无监督学习、半监督学习和强化学习,这四种学习方式到底有啥区别?

监督学习、无监督学习、半监督学习和强化学习 人工智能中的机器学习是指让计算机通过学习数据的方式改善性能。在机器学习中,有四种主要的学习方式:监督学习、无监督学习、半监督学习和强化学习。本文将详细介绍这四种学习方式的概念、应用和优缺点。 …

[GXYCTF2019]BabyUpload1

上传文件后提示后缀名不能有ph 那估计都是黑名单过滤,大小写绕过也不行,尝试一下上传.htaccess文件 将文件名称为abc的当做php文件执行 上传后提示上传类型露骨,说明绕过了黑名单但是还有content_type类型坐镇 那就利用burp抓包修改content—…

msvcp140.dll丢失怎样修复,总结4个msvcp140.dll丢失的修复方法

今天早上打开photoshop的时候,电脑突然提示由于找不到msvcp140.dll,无法继续执行此代码,一时间都懵了,不知道怎么处理。在网上找了一上午的资料及修复方法,MSVCP140.dll是一个非常重要的Windows系统文件,它…

win10 平台搭建react native 并在 Android模拟器上运行app

目录 1 安装npm 1.1 nodejs官网下载 安装程序,双击安装,一路点“是"即可 1.2 增加三个环境变量 NODE_PATH NVM_HOME NVM_SYMLINK 1.3 在PATH中增加 %NVM_HOME% %NVM_SYMLINK% 2 安装yarn 3 安装java 11.0.2 3.1 安装…

Unity 矩阵简介

前言:与向量一样,矩阵也是3D数学的基础。要正确进行物体的位移、旋转和缩放变换,就必须要用到矩阵。 3D游戏中的向量一般只有3个维度,但矩阵要使用44矩阵,主要原因你是要用矩阵实现平移,33矩阵是不够的。4…

C++类和对象下

专栏:C/C 个人主页:HaiFan. 专栏简介:本章为大家带来C类和对象相关内容。 类和对象下 类的默认成员函数构造函数析构函数拷贝构造函数运算符重载 const成员再谈构造函数构造函数体赋值初始值列表 explicit关键字static成员友元内部类匿名对象…

【MySQL】表的操作

目录 一.使用Cmd命令执行操作 1.使用(mysql -uroot -p)命令进入数据库 2.创建一个角色表用于操作(创建表之前先使用数据库) 3.查看表 4.插入数据 5.查看表中内容 6.修改表 1.修改表名 2.修改字段名 3.修改字段的数据类型 ALTER TABL…

Vue3-黑马(十一)

目录: (1)vue3-router-布局和菜单 (2)vue3-进阶-router-图标二次封装-单文件组件 (3)vue3-进阶-router-图标的二次封装-函数式组件 (1)vue3-router-布局和菜单 主页做…

收藏:如何一步步成为技术领域专家

经常有人问我,为什么有的人工作10年仍然平台无奇,而有的人只用3年时间,就已经脱颖而出,成绩斐然。我说,是呀,有些参加工作多年却仍然只会复制粘贴简单业务代码,有些人在大学就写出Linux操作系统…

英文论文(sci)解读复现【NO.9】基于注意机制的葡萄叶片病害检测

此前出了目标检测算法改进专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读发表高水平学术期刊中的 SCI论文&a…

(免费分享)基于微信小程序的旅游系统(带文档)

随着互联网的趋势的到来,各行各业都在考虑利用互联网将自己的信息推广出去,最好方式就是建立自己的平台信息,并对其进行管理,随着现在智能手机的普及,人们对于智能手机里面的应用旅游服务软件也在不断的使用&#xff0…

vue-8:Vuex状态管理模式库 + map辅助函数简写

为什么存:存仓库的多组件可以数据共享 核心api this.$store 每个组件都可以获取$store this.$store.commit("同步方法名", 参数) 调用同步方法,修改store中的数据 this.$store.dispatch("异步方法名", 参数) 调用异步方法&#x…

分布式数据库集成解决方案

分布式数据库集成解决方案 分析访问部署扩展.1 以界面方式创建数据库(采用DBCA) # 背景 由于公司业务的发展,要求在其它三个城市设立货仓,处理发货业务。公司本部运行着一套用Sybase数据库的MIS系统可以实现发货,该系统…

【多线程】线程池

目录 线程池是什么 标准库中的线程池 描述线程池工作原理 为什么不推荐使用系统自带的线程池 实现线程池 线程池是什么 线程池就是在池子里放的线程本身,当程序启动时就创建出若干个线程,如果有任务就处理,没有任务就阻塞等待。 想象这…

hive集成hbase Bytes.toByte处理字段 隐射为null乱码 加#b为0问题

解决hive集成hbase Bytes.toByte处理字段 隐射为null乱码 为0问题 错误例子(一) create external table bigdata_student(id string,name string,age int )stored by org.apache.hadoop.hive.hbase.HBaseStorageHandler with SERDEPROPERTIES ("h…

内网渗透(七十二)之域权限维持之伪造域控

伪造域控 2022年1月10日,国外安全研究员Kaido发文称发现了一种新的伪造域控方式,安全研究员只需要新建一个机器账户,然后修改机器账户的UserAccountControl属性为8192。活动目录就会认为这个机器账户就是域控,然后就可以使用这个新建的机器账户进行DCSync操作了。由于修改…

系统开发与运行

系统开发与运行 系统分析与设计 需求分析 需求工程 结构化分析与设计 测试基础知识 系统运行与维护 软件架构介绍 系统分析概述 系统分析是一种问题求解技术,它将一个系统分解成各个组成部分, 目的是研究各个部分如何工作、交互,以实现其系统目标…

Android系统启动全流程分析

当我们买了一个手机或者平板,按下电源键的那一刻,到进入Launcher,选择我们想要使用的某个App进入,这个过程中,系统到底在做了什么事,伙伴们有仔细的研究过吗?可能对于Framework这块晦涩难懂的专…