PCIe MPS参数介绍及如何更改

目录

1.简介

2.主要功能作用

3.MPS控制策略

4.如何更改


1.简介

MPS

该参数含义是一个TLP包里携带的有效净荷的最大值是多少字节(该限制条件同时适用于写操作和读操作)。

MRRS

该参数含义是一个TLP读请求包,一次最多能向接收端请求读出多少字节。(MRRS参数出现的原因大家有没有想过……其实设定MRRS的原因是为了避免某个设备长时间占用总线)

2.主要功能作用

在MPS在PCIe整体性能中,有至关重要的作用。随着MPS大小的增加,PCIe传输效率也在不断的提升。不过,在x86的机器中,RC端的MPS通常是128B/256B。在ARM CPU中,为了追求高效性能,部分场景也会设置为512B。

整个PCIe系统中,MPS的大小,跟RC、PCIe Switch、Endpoint都有相互的影响,最终TLP传输的数据大小取决与MPS最小的一个设备。比如下图示例,RC MPS=256B,PCIe Switch MPS=512B,但是EP3 MPS=128B。所以最终数据传输的大小采用的是MPS=128B。

以下是一个实例

lspci -s 01:00.0 -vvvv
01:00.0 Non-Volatile memory controller: Toshiba Corporation Device 0116 (prog-if 02 [NVM Express])Subsystem: Toshiba Corporation Device 0001Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-Latency: 0, Cache Line Size: 64 bytesInterrupt: pin A routed to IRQ 16NUMA node: 0Region 0: Memory at 96200000 (64-bit, non-prefetchable) [size=16K]Capabilities: [40] Express (v2) Endpoint, MSI 00DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimitedExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 25.000WDevCtl:	Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- FLReset-MaxPayload 256 bytes, MaxReadReq 512 bytesDevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-LnkCap:	Port #0, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L0s <2us, L1 <32usClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+LnkCtl:	ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk+ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-LnkSta:	Speed 8GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-DevCap2: Completion Timeout: Range AB, TimeoutDis+, LTR+, OBFF Not SupportedDevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF DisabledLnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-Compliance De-emphasis: -6dBLnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+, EqualizationPhase1+EqualizationPhase2+, EqualizationPhase3+, LinkEqualizationRequest-Capabilities: [80] Power Management version 3Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-Capabilities: [90] MSI: Enable- Count=1/32 Maskable+ 64bit+Address: 0000000000000000  Data: 0000Masking: 00000000  Pending: 00000000Capabilities: [b0] MSI-X: Enable+ Count=32 Masked-Vector table: BAR=0 offset=00002000PBA: BAR=0 offset=00003000

3.MPS控制策略

pcie_bus_tune_off   Disable PCIe MPS (Max Payload Size)tuning and use the BIOS-configured MPS defaults.pcie_bus_safe   Set every device's MPS to the largest valuesupported by all devices below the root complex.pcie_bus_perf   Set device MPS to the largest allowable MPSbased on its parent bus. Also set MRRS (Max Read Request Size) to the largest supportedvalue (no larger than the MPS that the deviceor bus can support) for best performance.pcie_bus_peer2peer  Set every device's MPS to 128B, whichevery device is guaranteed to support. This configuration allows peer-to-peer DMA betweenany pair of devices, possibly at the cost ofreduced performance.  This also guaranteesthat hot-added devices will work.

4.如何更改

Linux系统中通过lspci和setpci可以查询和修改MPS/MRRS参数。

比如:lspci查看设备DevCap寄存器中MPS=512B,最终传输用的MPS=256B,MRRS=4KB。

lspci -s 04:00.0 -vvv | grep DevCtl: -C 2

DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited

ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+

DevCtl: Report errors: Correctable- Non-Fatal+ Fatal+ Unsupported-

RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ FLReset-

MaxPayload 256 bytes, MaxReadReq 4096 bytes
 

如果需要修改MPS或者MRRS,需要先找到Device Control Register中MPS和MRRS的位置,如PCIe Spec定义,MPS在bit5-7,MRRS在bit12-14. 同时Device Control Register的offset是0x8h。

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

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

相关文章

计算机毕业设计JAVA+SSM+springboot养老院管理系统

设计了养老院管理系统&#xff0c;该系统包括管理员&#xff0c;医护人员和老人三部分。同时还能为用户提供一个方便实用的养老院管理系统&#xff0c;管理员在使用本系统时&#xff0c;可以通过系统管理员界面管理用户的信息&#xff0c;也可以进行个人中心&#xff0c;医护等…

LeetCode 108. 将有序数组转换为二叉搜索树

对于算法题&#xff0c;按题型类别刷题才会更有成效&#xff0c;因此我这里在网上搜索并参考了下 “&#x1f525; LeetCode 热题 HOT 100” 的题型归类&#xff0c;并在其基础上做了一定的完善&#xff0c;希望能够记录自己的刷题历程&#xff0c;有所收获&#xff01;点击下发…

点滴生活记录2

我从小跟着我爷爷奶奶&#xff0c;小学六年级转到县城上小学&#xff0c;就没跟我奶奶他们住一起了。十一回家&#xff0c;把奶奶接到我这住&#xff0c;细想&#xff0c;自六年级之后&#xff0c;就很少跟奶奶住一起了。 奶奶&#xff08;间歇性&#xff09;耳聋&#xff0c;为…

软件测试相关

软件测试是什么&#xff1f; 使用人工和自动手段来运行或测试某个系统的过程&#xff0c;其目的在于验证它是否满足规定的需求或弄清预期结果与实际结果的差别。 为什么做软件测试&#xff1f;目的是什么&#xff1f; 发现软件存在的代码或业务逻辑错误 检验产品是否符合用户需…

坚鹏:中国邮政储蓄银行数字化转型战略、方法与案例培训

中国邮政储蓄银行拥有优良的资产质量和显著的成长潜力&#xff0c;是中国领先的大型零售银行。2016年9月在香港联交所挂牌上市&#xff0c;2019年12月在上交所挂牌上市。中国邮政储蓄银行拥有近4万个营业网点&#xff0c;服务个人客户超6.5亿户。2022年&#xff0c;在《银行家》…

算法Day24 不专心开车

不专心开车 Description 小硕开车经过一条公路&#xff0c;这条路线总共由n 1个不同海拔的点组成。小硕从海拔为0的点0开始骑行。 给小硕一个长度为n的整数数组arr&#xff0c;其中arr[i]是点i和点i 1的净海拔高度差&#xff08;0≤i < n&#xff09;。请你返回最高点的海…

【LeetCode刷题-二叉树】--110.平衡二叉树

110.平衡二叉树 方法一&#xff1a;自顶向下递归 对于当前遍历到的节点&#xff0c;首先计算左右子树的高度&#xff0c;如果左右子树的高度差是否不超过 111&#xff0c;再分别递归地遍历左右子节点&#xff0c;并判断左子树和右子树是否平衡。这是一个自顶向下的递归的过程。…

[NAND Flash] 1.1 闪存(NAND Flash) 学习指南

依公知及经验整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《深入理解NAND Flash》 ​ 回首 漠然回首&#xff0c;从事存储芯片行业已多年&#xff0c;这些年宝贵的青春都献给了闪存。 我刚入行的时候&#xff0c;也是萌新一个&#xff0c;彷佛大学学的都没有和这相…

Kubernetes简介与部署

一、Kubernetes 简介 1、概念&#xff1a; Kubernetes 又称 k8s&#xff0c;是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化应用和服务&#xff0c;通过 Kubernetes 能够进行应用的自动化部署和扩缩容。(k8s不是容器&#xff0c;而是一套容器编排系统) 官网&…

RC522(RFID射频模块)读卡ID的简单应用

文章目录 一、RFID是什么&#xff1f;二、RC522模块三、使用步骤1.硬件1.硬件连接2.引脚定义 2.软件1.初始化配置代码如下&#xff08;示例&#xff09;&#xff1a;2.引脚配置代码如下&#xff08;示例&#xff09;&#xff1a;3.模块复位代码如下&#xff08;示例&#xff09…

11、虚函数、多态、纯虚函数

11、虚函数、多态、纯虚函数 虚函数覆盖调用 多态实现多态的两个必要条件多态 和 this指针多态的实现&#xff1a;虚函数表虚函数表与动态绑定动态绑定动态绑定对性能的影响 纯虚函数抽象类纯抽象类 虚函数 形如class 类名{ virtual 返回值 函数名(形参表) { … } }; 的成员函…

C++笔记之Delegate和委托构造(Delegating constructor)

C笔记之Delegate和委托构造辨析 code review! —— 杭州 2023-12-10 文章目录 C笔记之Delegate和委托构造辨析0.有道词典&#xff1a;英语发音1.ChatGPT&#xff1a;delegate概念详解2.Delegate和“将可调用对象作为函数参数”是不是一回事&#xff1f;3.C的Delegate示例4.…

Numpy矩阵(第16讲)

Numpy矩阵(第16讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹…

认识计算机的设备管理

在计算机系统中&#xff0c;除了处理器和内存之外&#xff0c;其他的大部分硬设备称为外部设备。它包括输入/输出设备&#xff0c;辅存设备及终端设备等。这些设备种类繁多&#xff0c;特性各异&#xff0c;操作方式的差异很大&#xff0c;从而使操作系统的设备管理变得十分繁杂…

【数据结构】哈希表算法总结

知识概览&#xff08;哈希表&#xff09; 哈希表可以将一些值域较大的数映射到较小的空间内&#xff0c;通常用x mod 质数的方式进行映射。为什么用质数呢&#xff1f;这样的质数还要离2的整数幂尽量远。这可以从数学上证明&#xff0c;这样冲突最小。取余还是会出现冲突情况。…

【数据结构 — 排序 — 选择排序】

数据结构 — 排序 — 选择排序 一.选择排序1.基本思想2.直接选择排序2.1算法讲解2.2.代码实现2.2.1.函数定义2.2.2.算法接口实现2.2.3.测试代码实现2.2.4.测试展示 3.堆排序3.1.算法讲解3.2.代码实现3.2.1.函数定义3.2.2.算法接口实现3.2.3.测试代码实现3.2.4.测试展示 一.选择…

Java 8 新特性深度解析:探索 Lambda 表达式、Stream API 和函数式编程的革新之路

Java8 新特性 Java 8 的革新之路 自 1995 年首次发布以来&#xff0c;Java 已经成为世界上最广泛使用的编程语言之一。随着时间的推移&#xff0c;Java 经历了多次版本更新&#xff0c;其中最具里程碑意义的便是 Java 8 的发布。这个版本引入了许多重大变革&#xff0c;包括 …

开发猿的平平淡淡周末---2023/12/10

天气阴 温度适宜17摄氏度 AM 昨晚竟然下小雨了&#xff0c;还好还好&#xff0c;昨天刷的两个背包基本干了 一觉睡到日三竿&#xff0c;谁是神仙&#xff0c;我是神仙&#xff08;哈哈哈哈哈哈&#xff09; 刷会儿视频 补充下起床的动力 洗漱&#xff0c;恰饭&#xff0c;肝…

电工--基本放大电路

电压放大倍数、输入电阻和输出电阻是放大电路的三个主要性能指标 共发射极基本交流放大电路 晶体管&#xff1a;电流放大作用。能量较小的输入信号通过晶体管的控制作用&#xff0c;去控制电源所共给的能量&#xff0c;以在输出端获得一个能量较大的信号 集电极电源电压&#…

电子学会C/C++编程等级考试2021年12月(五级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:书架 John最近买了一个书架用来存放奶牛养殖书籍,但书架很快被存满了,只剩最顶层有空余。 John共有N头奶牛(1 ≤ N ≤ 20,000),每头奶牛有自己的高度Hi(1 ≤ Hi ≤ 10,000),N头奶牛的总高度为S。书架高度为B(1 ≤ B ≤ S &…