PCIe协议之-TLP Header详解(二)

news2024/9/21 19:03:29

✨前言:

在PCIe中,存在几种不同类型的请求,主要包括IO(Request)请求、存储器(Request)请求和配置(Request)请求。这些请求类型允许CPU与连接在PCIe总线上的设备进行通信和控制。

🌟1. IO(Request)请求

定义与作用: IO请求,即输入输出请求,是一种使CPU能够读写连接在PCIe总线上设备的特定IO端口的操作。这种请求类型常用于较旧的或简单的外围设备,如早期的声卡、网卡等,它们使用设定的IO空间进行数据交换。
实现方式: 当发起IO请求时,CPU通过总线发送一个包含端口地址及操作类型(读/写)的信号给目标设备。设备响应这一请求,执行相应的读或写操作,并将结果返回给CPU。

🌟2. 存储器(Request)请求

定义与作用: 存储器请求,即内存访问请求,用于直接在CPU与PCIe设备之间传输数据。它允许PCIe设备读写系统内存,支持更高效、更直接的数据传输方式,广泛应用于需要快速数据交换的设备,例如现代显卡、SSD等。
实现方式: 发起内存请求时,会指定系统内存的地址和需要传输的数据。PCIe支持的DMA(直接内存访问)允许外设直接与系统内存通信,不必占用CPU资源,从而实现高效数据处理。

🌟3. 配置(Request)请求

定义与作用: 配置请求用于读取或设置PCIe设备的配置空间,这是一块预留的内存区域,包含了设备的重要信息和配置参数,如设备ID、中断设置、支持的功能等。通过配置请求,系统可以识别和配置连接的设备。
实现方式: 在设备初始化或系统启动时,BIOS或操作系统会发起配置请求来探测和配置所有PCIe设备。配置访问通常通过特定的地址和数据路径进行,CPU可通过这些路径读写PCIe设备的配置寄存器。

✨IO Request

IO Request的TLP Header的格式如下图所示:
IO请求用来进行输入/输出操作,其TLP头部包含以下字段:

格式(Fmt): 指示TLP的格式,IO请求通常是3位长,对于IO Read请求,格式为"001",IO Write请求,格式为"000"。
类型(Type): 指示TLP的具体类型,对于IO操作,通常是5位长,IO Read请求的类型为"00001",IO Write请求的类型为"00010"。
长度(Length): 表明数据传输的DWORD数量,对于IO操作,这通常是较小的数量。
请求者ID(Requester ID): 表明发起请求的设备。
总线/设备/函数号(Bus/Device/Function Number): 指定请求目标的PCI Express设备地址。
标签(Tag): 用于将请求和响应匹配起来,以区分不同的事务。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

✨Memory Request

Memory Request的TLP Header的格式如下图所示:
内存请求用来访问系统内存,TLP头部的字段和IO请求类似,但具有不同的值:

格式(Fmt): 内存读取为"000"或"010",内存写入为"001"或"011",长包头格式包含4个额外的字节用于64位地址。
类型(Type): 对于内存读写操作,类型分别为"00000"(Memory Read)和"00001"(Memory Write)。
长度(Length): 传输的数据长度。
请求者ID(Requester ID): 发起请求的设备。
标签(Tag): 同IO请求。
首次读/写(First BE)/最后读/写(Last BE): 分别表示数据开始和结束的字节使能位。
64位地址(Address): 内存地址,可能是32位或64位,取决于格式字段。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注:TLP Prefix、ID Based Ordering(IDO)和TLP Processing Hints(TH)均为PCIe Spec V2.1提出的。

✨Configuration Request

Configuration Request的TLP Header的格式如下图所示:
格式(Fmt): 配置读取为"010",配置写入为"011"。
类型(Type): 对于配置读写操作,类型分别为"10100"(Configuration Read Type 0)、“10101”(Configuration Read Type 1)或"11000"(Configuration Write Type 0)、“11001”(Configuration Write Type 1)。
长度(Length): 配置访问固定长度为"1",因为配置空间是采用4字节为单位进行访问。
请求者ID(Requester ID): 发起请求的设备。
拓展注册头(Extended Register Number): 表示访问的配置空间在256字节之上的偏移。
配置注册头(Register Number): 访问配置空间的偏移量。
设备号(Device Number): 指示配置空间需访问的PCI设备编号。
功能号(Function Number): 指示配置空间需访问的PCI功能编号。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

武汉星起航深耕亚马逊跨境领域,助全球卖家实现国际销售新突破

随着全球贸易的日益繁荣和互联网的快速发展,跨境电商行业迎来了前所未有的发展机遇。作为全球领先的电商平台,亚马逊以其丰富的商品品类、全球配送网络以及高效的物流体系,成为了众多卖家拓展国际市场的重要渠道。在这一背景下,武…

邦注科技 即热式节能模温机的原理及应用介绍

模温机是一种用于控制模具温度的设备,它在各种工业领域中发挥着重要作用,特别是在塑料加工行业中。以下是关于模温机的原理及应用的详细介绍: 原理 模温机的工作原理主要是通过加热和冷却功能,维持模具温度在一个恒定的范围内。…

银河麒麟操作系统下使用QT连接TiDB数据库开发步骤

目标:实现项目软件+硬件都运行在国产化操作系统平台上。 方法:在虚拟机中安装麒麟系统V10Sp1+Qt5.14.2+MySql8.0+TiDB软件,编译MySql驱动,测试连接TiDB数据库项目。 步骤: 1、使用虚拟机软件VMWare安装银河麒麟操作系统。 2、在银河麒麟系统上安装QT5.14.2软件。 3、…

WS2812C是一款将控制电路和RGB芯片集成在一个5050元器件封装中的智能控制LED光源

一般说明 WS2812C是一款将控制电路和RGB芯片集成在一个5050元器件封装中的智能控制LED光源。内部包括智能数字端口数据锁存器和信号整形放大驱动电路。还包括一个精密的内部振荡器和一个 12V电压可编程恒流控制部分,有效保证像素点光源颜色高度一致。 …

渲染农场是什么意思?瑞云渲染为你解答

渲染农场是一种通过集合多台计算机的计算能力来加速图像渲染过程的系统。它尤其适用于动画、电影特效和高端视觉效果的制作,这些领域通常需要处理非常复杂和计算密集型的渲染任务。 渲染农场就是一大群电脑,他们一起可以快速渲染出漂亮的图像。在做动画片…

Java05基础 数组

Java05数组 一、数组 数组指的是一种容器,可以用来存储同种数据类型的多个值。 1、数组的静态初始化 初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程 1.1 数组定义格式 //格式一 数据类型[] 数组名 …

2024最新互联网公司工作时长排行榜出炉!

“工作时长”,是选择公司的一个非常重要的参考指标。 我们在选择一个公司的时候,除了需要关注总收入package 以外,还需要考虑这家公司的加班时长是否人性化。 我们的工作时长是周工作小时数。法定工作时间是40小时(955)。大小周通常折算为周…

高质量新闻数据集OpenNewsArchive:880万篇主流新闻报道,国产大模型开源数据又添猛料

在构建国产大语言模型的道路上,高质量新闻是不可或缺的重要语料之一。这类语料集准确性、逻辑性、时效性于一体,同时包含丰富的事实知识,可以大幅提升模型的文本生成质量、词汇表达能力、事件理解分析能力以及时序内容的适应性和预测能力&…

UE4_环境_局部雾化效果

学习笔记,不喜勿喷!侵权立删!祝愿大家生活越来越好! 本文重点介绍下材质节点SphereMask节点在体积雾中的使用方法。 一、球体遮罩SphereMask材质节点介绍: 球体蒙版(SphereMask) 表达式根据距…

云端储存的笔记软件, 效率翻倍的办公小助手

在繁忙的办公环境中,文件堆积如山,电脑屏幕上贴满了各色便签,电话铃声、邮件提示声此起彼伏。你努力地在这些混乱中寻找一丝头绪,试图把握住工作的节奏。 然而,传统的方法似乎已经无法满足现代高效工作的需求。想象一…

特斯拉全自动驾驶(FSD)系统发展与解析

引言 自动驾驶技术在近年来迅猛发展,多家科技巨头和汽车制造商纷纷投入巨资研发,试图领跑这一未来出行的革命。在众多企业中,特斯拉的全自动驾驶(Full Self-Driving, FSD)系统以其独特的“纯视觉”策略脱颖而出&#…

webpack优化构建体积示例-并行压缩:

uglifyjs-webpack-plugin和terser-webpack-plugin都可以开启多进程并进行压缩来减小构件体积大小。 当在 Webpack 配置中启用 minimize: true 时,构建时间通常会增加,这是因为 Webpack 会在构建过程中添加一个额外的步骤:代码压缩。代码压缩是…

深度学习设计模式之工厂方法模式

文章目录 前言一、工厂方法模式介绍二、详细分析1.核心组成2.实现步骤3.示例代码4.优缺点优点缺点 5.应用场景 总结 前言 本篇文章主要学习工厂方法模式,工厂方法模式是对简单工厂模式进一步的抽象,由子类去决定实例化哪个类。 一、工厂方法模式介绍 工…

摆脱手工录入烦恼,OCR技术大幅提高增值税发票处理效率

最近,我邂逅了一位得力助手——OCR技术,它犹如一位神通广大的魔法师,为增值税发票处理带来了翻天覆地的变革! 曾几何时,处理增值税发票如同走进了一片迷雾重重的森林,每一步都小心翼翼,生怕出错…

深化市场布局与产业链整合,三清互联以创新为公司发展赋能

近年来,我国大力发展现代化电力体系,并不断推进智能电网的发展,电力物联网作为支撑电力行业数字化发展的关键基础设施,迎来了快速发展黄金时期。作为电力物联网领域领先企业之一,三清互联凭借敏锐的市场洞察力和技术创…

Canal解决select count(*)执行慢的问题

前言 count 的常用方式,使用 count(*)来统计数据条数,但是 innodb 没有存储数据总数,所以执行起来就会很慢。 可以使用 expalin sql 来返回预估行数,expalin select count(*)....., 通过预估的方式,统计数据条数。可以使用 redi…

第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组 数三角

//枚举顶点。 //不存在等边三角形 #include<bits/stdc.h> using namespace std; #define int long long const int n2e311; int a,b,c,l[n],r[n]; signed main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>a;for(int i1;i<a;i){cin>>…

好烦啊,我真的不想写增删改查了!

大家好&#xff0c;我是程序员鱼皮。 很想吐槽&#xff1a;我真的不想写增删改查这种重复代码了&#xff01; 大学刚做项目的时候&#xff0c;就在写增删改查&#xff0c;万万没想到 7 年后&#xff0c;还在和增删改查打交道。因为增删改查是任何项目的基础功能&#xff0c;每…

PCB笔记(二十六):PCB检查

前言 首先检查元器件是否100&#xff05; 放置 文章目录 1、打开DRC2、database check3、检查DRC4、检查多余的线5、其他需要注意的点a.检查差分线、等长线是否已调好b.注意检查晶振、电感等元件上/下方是否其他线经过&#xff08;一般不允许线经过&#xff09;c.打开place_bo…

Leecode热题100---11:盛最多水的容器

题目&#xff1a; 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾…