PCie协议之-TLP Header详解(一)

✨前言:

在PCIe通信过程中,事务层数据包(Transaction Layer Packets,简称TLP)扮演着非常重要的角色。TLP用于在设备之间传递数据和控制信息,它们是PCIe的基本信息传输单元。
TLP可分为几个部分,最核心的是TLP Header,它负责携带有关数据包的关键信息,包括数据包类型、长度以及传输方向等等。下面是TLP Header的详细结构以及各部分的作用:
格式(Format)和类型(Type)字段:这个字段由多个比特组成,两者相结合定义了TLP的类型,例如内存读取、内存写入、I/O操作等等。格式字段告诉我们这个TLP是32位还是64位地址,而类型字段告诉我们是进行读取还是写入等操作。
长度(Length)字段:长度字段告知接收设备这个TLP包含了多少个数据载荷(Data Payload)DWORDs(32-bit words)。这对于正确解析TLP非常重要。
请求者ID(Requester ID)和目标ID(Completer ID)字段:这些字段包含了发起TLP的设备和预期接收这个TLP的设备的ID。在回应一个操作时,这两个字段会互换其值。
标记(Tag)字段:标记字段用于将具体的TLP关联到发起它的特定事务。这对于支持多个并发事务的设备来说尤其重要。
第一和最后的DW地址(First and Last DW Byte Enables)字段:对于内存写入操作,这些字段指示了在数据包的第一个和最后一个DWORD中,哪些字节是有效的。这对于包括不是4字节倍数的内存写入操作很重要。
地址(Address)字段:对于需要访问特定硬件地址的操作(例如内存读/写),此字段包含所需的地址。其精确格式和长度(32-bit或64-bit)取决于TLP的格式和类型

✨TLP格式

事务层包(TLP)的一般格式如下图所示:
在这里插入图片描述
TLP Header为3DW或者4DW,Data Payload为1-1024DW,最后的TLP Digest(ECRC)是可选的,为1DW。
TLP Header在整个TLP的位置如下图所示,需要注意的是,TLP Header的格式和内容都会随着TLP的类型和路由方式的改变而改变。
在这里插入图片描述
TLP的类型和路由方式由Fmt和Type所决定,这在前面关于TLP路由的文章中已经详细的介绍过。上图显示的是各种不同格式的TLP Header的相同的部分。
每一个Field的作用与意义如下表所示:
在这里插入图片描述
在这里插入图片描述

✨Byte Enable

下面分别详细地介绍一下Byte Enable,在PCIe中Data Payload的单位是DW,也就是说数据大小(地址)需要以DW作为对齐。但是很多情况下,数据的大小并不是DW的整数倍,因此PCIe引入了Byte Enable来解决这一问题。
使用Byte Enable需要遵循一下原则:
· Byte Enable为高电平有效,低电平(0)表示Data Payload的对应Byte将被认为是无效的,即不被Completer使用。
· 如果有效数据小于1DW,则Last DW Byte Enable应全部为0。
· 如果Data Payload大于1DW,则First DW Byte Enable至少有一位是有效的。
· 如果Data Payload大于或等于3DW,则First DW Byte Enable和Last DW Byte Enable当中的有效位必须是连续的。即这种情况下,Byte Enable只能用于调整起始地址和结束地址。
· 如果Data Payload等于1DW,则First DW Byte Enable中的有效位可以是不连续的。
· 如果Data Payload等于2DW,则First DW Byte Enable和Last DW Byte Enable中的有效位都可以是不连续的。
· 写请求中的DW等于1,但是First DW Byte Enable中没有任何一位是有效的,也是允许的,但是这样的请求对于Completer没有任何作用。
· 如果读请求DW等于1,但是First DW Byte Enable中没有任何一位是有效的,此时Completer会返回1DW的Data Payload,只是其中的数据都是无效的。这一方式常备用于Flush Mechanism。

一个简单的Byte Enable使用的例子,如下图所示:
在这里插入图片描述

🌟Byte Enable的作用

Byte Enable的主要作用是提供字节级别的访问控制,这使得PCIe能够更加灵活和高效地处理数据。它的存在允许:

非对齐访问:使PCIe能够处理非对齐的内存地址访问请求,这是在现代计算系统中常见的需求。
部分字节操作:支持对小于4字节的数据进行写入操作,这有助于减少不必要的数据传输,提高系统的数据处理效率。
数据保护:确保在执行部分字节写入时,同一DWORD内的其他字节内容不会被意外修改,保护了数据的完整性。
总的来说,Byte Enable信号在PCIe架构中提供了重要的字节级别精度和灵活性,是优化数据传输、提高效率和保护数据完整性的关键机制。

🌟关于TLP的Data Payload有:

· Data Payload的大小由TLP Header中的Length决定。
· Data Payload的数据采用的是Little Endian,即低字节存放于低地址中。
· Data Payload的大小并不是有效的数据的大小,有效数据的大小是由Data Payload和Byte Enable共同决定的。
· 当TLP类型为Message时,Length一般是保留的(Reserved),除非该Message是带有数据的(MsgD)。
· TLP的Data Payload大小不得超过Max_Payload_Size的值,该值位于Device Control Register中。对于比较大的数据量,因此只能分多次进行发送。对于读请求来说,并没有Data Payload,也就是说该规则并不适用于读请求。
· 需要特别注意的是,起始地址和结束地址之间不能够跨越4KB的地址边界。

📌下面详细解释为什么buffer bound to 4KB address boundary对系统至关重要:

内存管理和系统架构
计算机的内存管理单元 (MMU)通常以页面为单位管理物理内存,而操作系统中的常见页面大小就是4KB。不允许TLP跨越4KB边界有助于:

确保TLP对应的数据传输在同一个内存页面内,简化内存的管理与分配。 有助于避免产生额外的页面错误或页面交换行为,尤其是在对物理地址访问时。
缓存一致性 多核处理器和系统中的缓存通常按照缓存行(cache
line)进行组织,而缓存行的大小通常不会超过4KB。确保数据传输不跨越4KB边界有助于:

保持缓存行内的数据一致性,避免一个TLP操作需要更新多个缓存行所带来的复杂性。 减少缓存同步协议所需要处理的情况,降低系统的复杂度。
错误检测和处理 硬件通常会实施一些错误检测和纠正机制,比如ECC(错误校验和纠正)。这些机制也以物理页面为基础。不跨越4KB边界有助于:

在发生错误时,能够准确地定位到错误发生的页面,并进行处理,而不涉及多个页面。 降低出现多位错误的可能性,增强数据的可靠性。
总之,为了保证内存、缓存和错误管理的效率与简洁性,PCIe规范要求TLP的data
payload在进行数据传输时不得跨越4KB边界。这规则不适用于读请求的TLP,因为读请求的TLP本身不携带data
payload,而是请求从远端设备获取数据,返回的是Completion with Data的TLP,它们遵守相同的数据载荷规则。

✨小结:

本章主要介绍TLP Header的构成,下一章再详细介绍TLP Header的格式和作用。

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

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

相关文章

Windows Server 2022 环境下WEB和DNS服务器配置方法

目录 实验名称:WEB和DNS服务器配置实验目的实验原理:主要设备、器材:实验内容:配置本地WEB站点配置本地DNS服务器 实验名称:WEB和DNS服务器配置 实验目的 掌握 Windows Server 2022 环境下WEB服务器配置方法 掌握 Wi…

C# 下载安装,使用OfficeOpenXml

下载安装OfficeOpenXml模块 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Reflection.Emit; using System.Text; using System.Text.RegularEx…

基于spingboot,vue线上辅导班系统

目录 项目介绍 图片展示 运行环境 获取方式 项目介绍 权限划分:用户,管理员 具有前后台展示,前台供用户使用;用户具有自己的后台,查看自己的老师课程等;管理员具有最大的权限后台。 用户&#xff1a…

第十三篇:智慧之网:深度探索关系型数据库的数学奥秘与实战技艺

智慧之网:深度探索关系型数据库的数学奥秘与实战技艺 1. 引言 1.1 数据时代的基石 在数字化的浪潮中,数据已成为新时代的石油,而关系型数据库则是这座数据矿藏的精炼厂。自E.F. Codd在1970年提出关系模型以来,关系型数据库以其坚…

Flink CDC 原理

简介 Flink CDC(Change Data Capture)是 Apache Flink 提供的一个变更数据捕获工具集。它可以监控数据库的变更,并将这些变更实时地以流的形式提供给下游系统,这些变更包括插入、更新和删除操作。 Flink CDC 适用于需要实时数据…

【yolov8分类任务-全流程】【公开数据白内障-101:101例白内障手术的视频数据集】

文章目录 1.公开数据集1.1.白内障-101:数据集文件结构1.1.1.视频文件1.1.2.注释文件(1)videos.csv(2) phases.csv(3)annotations.csv 1.2. 数据处理1.2.1.抽帧脚本全部代码(每行都有注释)1.2.2.分类任务划分数据集脚本 2.yolov8分类任务训练2…

【Shell】Shell编程之函数

目录 1.Shell函数定义 2.Shell函数的作用 3.函数返回值 4.函数传参 5.函数变量的作用范围 案例 1.Shell函数定义 格式1 function 函数名 { 命令序列 } 格式2 函数名() { 命令序列 } 2.Shell函数的作用 使用函数可以避免代码重复 使用函数可以将大的工程分割为若…

供水设备数据采集

随着城市化进程的加快,供水系统作为城市基础设施的重要组成部分,其运行效率和稳定性直接关系到市民的日常生活。在这个信息化、智能化的时代,如何利用先进技术提升供水系统的管理水平,成为了摆在我们面前的重要课题。HiWoo Cloud平…

java+jsp+sql server 医院住院管理系统论文(二)

⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️ ➡️点击免费下载全套资料:源码、数据库、部署教程、论文、答辩ppt一条龙服务 ➡️有部署问题可私信联系 ⬆️⬆️⬆️​​​​​​​⬆️…

【保姆级教程】VMware Workstation Pro的虚拟机导入vritualbox详细教程

解决方案 1、OVF格式2、VMX格式 1、OVF格式 选定需要导出的虚拟机(关闭或者挂起状态下)依次选择文件-导出为ovf 在Vritualbox导入刚刚导出的.ovf文件 更改路径,按实际需要修改 成功导入 2、VMX格式 如果在VMware Workstation Pro导出的…

Vue实战技巧 —— 企业开发实战中的常见疑难问题

Vue企业开发实战中的常见疑难问题 1. 解决Vue动态路由参数变化,页面数据不更新2. vue组件里定时器销毁问题3. vue实现按需加载组件的两种方式4. 组件之间,父子组件之间的通信方案5. Vue中获取当前父元素,子元素,兄弟元素6. 开发环…

传说中的运维门户设计

在IT服务管理这片广阔天地中,运维门户如同一位技艺高超的魔术师,轻轻一挥手,便将纷繁复杂的运维世界化繁为简,编织成一张便捷高效、触手可及的网络。它不仅是ITSM系统中不可或缺的一环,更是连接用户与技术世界的桥梁&a…

Spring WebFlux:响应式编程

在软件开发领域,随着互联网应用的规模和复杂性不断增加,传统的编程模型逐渐暴露出一些局限性,尤其是在面对高并发、大规模数据流处理等场景时。为了应对这些挑战,响应式编程(Reactive Programming)应运而生…

电商核心技术揭秘56:客户关系管理与忠诚度提升

相关系列文章 电商技术揭秘相关系列文章合集(1) 电商技术揭秘相关系列文章合集(2) 电商技术揭秘相关系列文章合集(3) 文章目录 引言客户关系管理(CRM)的重要性提升顾客体验数据驱…

Intel HDSLB 高性能四层负载均衡器 — 快速入门和应用场景

目录 文章目录 目录前言与背景传统 LB 技术的局限性HDSLB 的特点和优势HDSLB 的性能参数基准性能数据对标竞品 HDSLB 的应用场景HDSLB 的发展前景参考文档 前言与背景 在云计算、SDN、NFV 高速发展并普遍落地的今天,随着上云业务的用户数量越来越多、数据中心的规模…

umi项目配置之项目构建时配置umirc.ts

对于 umi 中能使用的自定义配置,你可以使用项目根目录的 .umirc.ts 文件或者 config/config.ts,值得注意的是这两个文件功能一致,仅仅是存在目录不同,2 选 1 ,.umirc.ts 文件优先级较高 umi 的配置文件是一个正常的 n…

【vivado】 IBERT GT收发器误码率测试

一、前言 IBERT(Integrated Bit Error Ratio Tester),集成误码率测试仪。作为用户来说可以使用这个工具对自己设计的板子中的高速串行收发器进行简单测试,从而判断设计的接口是否有问题。因为这个工具是直接集成到FPGA上,这样一来直接使用这个工具来测试…

STL----push,insert,empalce

push_back和emplace_back的区别 #include <iostream> #include <vector>using namespace std; class testDemo { public:testDemo(int n) :num(n) {cout << "构造函数" << endl;}testDemo(const testDemo& other) :num(other.num) {cou…

实验十 智能手机互联网程序设计(微信程序方向)实验报告

实验目的和要求 完成以下页面设计。 二、实验步骤与结果&#xff08;给出对应的代码或运行结果截图&#xff09; Wxml <view class"container"> <view class"header"> <view class"logo"…

景源畅信:抖音小店比较冷门的品类分享?

在抖音小店的世界里&#xff0c;热门品类总是吸引着众多商家和消费者的目光。然而&#xff0c;就像星空中的繁星&#xff0c;虽不那么耀眼却依然存在的冷门品类同样值得我们关注。它们或许不似服装、美妆那样日进斗金&#xff0c;但正是这些小众市场的存在&#xff0c;为平台带…