【PCIE】Device Control Register (Offset 08h)

news2024/10/5 13:03:46

DCR

Maximum Payload Size

“Maximum Payload Size”
(最大传输负载大小)是PCI Express设备控制寄存器中的一个位域,用于设置设备支持的最大传输负载的大小。

PCI Express使用数据包(Packet)来传输数据,而数据包由头部和有效载荷(Payload)组成。有效载荷是实际要传输的数据部分。最大传输负载大小定义了设备可以支持的最大有效载荷大小。

在"Maximum Payload Size Supported"(MPSS)位域中,[2:0]表示3个比特位,用于编码支持的最大传输负载大小的取值。通常情况下,可能的取值包括:

000: 128字节
001: 256字节
010: 512字节
011: 1024字节
100: 2048字节
101: 4096字节
这些取值表示设备最大支持的有效载荷大小。有效载荷大小的选择会影响PCI Express总线的传输性能和效率。较大的有效载荷大小可以提高带宽利用率和传输效率,但同时也会增加延迟。因此,在配置设备时,需要根据具体应用需求和系统性能要求来选择合适的最大传输负载大小。

请注意,每个设备对最大传输负载大小的支持是有限制的,系统中所有设备的最大传输负载大小应当保持一致,以确保正常的数据传输和兼容性

控制一个TLP可以传输的最大数据长度。作为接收方,必须能处理跟MPS设定大小相同的TLP数据包,作为传输方,不允许创建超过MPS设定的TLP数据包。

PCIe协议允许最大一个Payload可以到4K,但是规定了在整个传输路径上的所有Device,都必须使用相同的MPS设置,同时不能超过该路径上一个设备的MPS能力值。也就是说,MPS capability高的设备要迁就低的设备。以PCIe SSD来说,插到一块老掉牙的主板上(MPS只有128 Byte),你的Payload size再大,也是没有用的。

系统的MPS值设置是在上电以后的设备枚举配置阶段完成的, 以主板上的PCIe RC和PCIe SSD为例,他们都在Device Capability Register里声明自己能支持的各种MPS,OS的PCIe驱动侦测到他们各自的能力值,然后挑低的那个设置到两者的Device Control register中。

PCIe SSD自身的MPS capability则是在其PCIe core初始化阶段设置的。

Maximum Read Request Size

“Maximum Read Request Size”(最大读取请求大小)是PCI Express设备控制寄存器中的一个位域,用于设置设备支持的最大读取请求的大小。

在PCI Express总线上,系统主机可以向设备发送读取请求以获取数据。最大读取请求大小定义了设备可以支持的最大读取请求的数据量。

在"Maximum Read Request Size"(MRRS)位域中,[2:0]表示3个比特位,用于编码支持的最大读取请求大小的取值。通常情况下,可能的取值包括:

000: 128字节
001: 256字节
010: 512字节
011: 1024字节
100: 2048字节
101: 4096字节
这些取值表示设备最大支持的读取请求数据量。较大的读取请求大小可以提高数据传输效率和带宽利用率,因为更多的数据可以在一个请求中传输。然而,读取请求数据量过大也会增加总线传输的延迟。

在配置阶段,OS的PCIe驱动也会配置另外一个参数maximum read request size,用于控制一个Memory read的最大size,最大4K(以128 Byte为单位)
Read request size是可以大于MPS滴,比如给一个MPS=128 Byte的PCIe SSD发一个512 Byte的read request,PCIe SSD可以通过返回多个4个128 Byte的 Cpld,或者8个64 Byte的Cpld,完成这个request的响应。OS 层面可以通过控制PCIe SSD的maximum read request size参数,平衡多个PCIe SSD之间的吞吐量,避免系统带宽(总共40个lane)被某些个SSD霸占。

同时,Read request size也对PCIe SSD的Performance有影响,这个size太小,意味着同样的data,需要发送更多的request去获取,而read request的TLP是不带任何data payload的。

举例来说,要传64K的数据,如果read request=128 byte, 需要512个read TLP,512个TLP的浪费那是不小滴。

为了提高特别是大Block Size data的传输效率,尽量把read request size设的大一点,用更少的次数传递更多的数据,那是很好的。

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

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

相关文章

2024考研408-操作系统 第二章-进程与线程 学习笔记

文章目录 前言一、进程1.1、进程的概念、组成与特征1.1.1、进程的概念1.1.2、进程的组成认识PCB认识程序段与数据段(包含进程实体概念) 1.1.3、进程的特征知识回顾与重要考点 1.2、进程的状态、状态间的转换和组织方式1.2.1、进程的状态进程的五种状态详…

微信扫码跳转小程序实现web登录

前面博客我有写微信扫码跳转h5实现登录,但是需要申请服务号 最近项目迭代,想到小程序能做扫码登录的话,web网页端和小程序同时登录账户不是更好吗,还不用额外申请服务号 第一步 打开微信公众平台,在“开发”菜单下点击…

springcloud笔记二

配置管理服务是共有的,结合微服务自身的配置。这样核心配置更改就无需逐个更改 配置管理: 首先新建一个配置管理 Data ID为配置文件的名称 一般为项目名称-项目环境yaml,如userservice-dev.yaml 编写配置内容,发布 获取nacos配置信息: 可能…

数据透视表:pivot_table()--Pandas

1. 函数功能 创建数据透视表,返回一个EXCEL形式的数据透视表。 2. 函数语法 DataFrame.pivot_table(valuesNone, indexNone, columnsNone, aggfuncmean, fill_valueNone, marginsFalse, dropnaTrue, margins_nameAll, observedFalse, sortTrue)3. 函数参数 参数…

Vue3 父子组件之间传值

Vue3TSVite环境开发 1.父组件给子组件传递方法,属性和值 父组件引入子组件处里面绑定方法 showBtn ,属性name和值msg 子组件通过defineProps()来接收 子组件页面显示父组件的方法 showBtn ,属性name和值msg 2.父组件接收子组件传递的…

ModaHub魔搭社区:向量数据库Zilliz Cloud的AUTOINDEX教程

目录 创建索引和向量搜索 总结 为满足用户不同需求,Zilliz Cloud 提供 3 种类型的集群 CU——性能型、容量型和经济型。但是,为不同类型 CU 集群中的 Collection 创建索引时,通常需要根据所选择的 CU 类型调整索引参数。为了方便您创建索引,免去调节参数的麻烦,Zilliz C…

Metasploit Pro 4.22.1-2023070501 (Linux, Windows) - 渗透测试框架

Metasploit Pro 4.22.1-2023070501 (Linux, Windows) - 渗透测试框架 Rapid7 Penetration testing 请访问原文链接:https://sysin.org/blog/metasploit-pro-4/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 世界…

投影矩阵公式推导

如下图所示&#xff1a; y对x投影记作yx&#xff0c;则&#xff1a; <yx, x> <yx z, x> |yx| * |x| yx |yx| * x / |x| <yx, x> / |x| *x / |x| &#xff0c;即可得到下图中的矩阵。 注意该矩阵的如下性质&#xff1a; p是对称的rank 1p^2 p QE分…

基于STM32CUBEMX驱动TOF模块VL6180与VL6180X(3)----修改设备地址

基于STM32CUBEMX驱动TOF模块VL6180与VL6180X----3.修改设备地址 概述修改设备地址主程序测试结果 概述 本章主要介绍如何修改VL6180X传感器的I2C地址&#xff0c;并成功驱动设备以使用新的地址。VL6180X是一种多功能、高性能的接近和环境光传感器&#xff0c;常用于测量物体与…

如何在海外进行A/B测试

A/B测试是对应用的各个版本进行实验&#xff0c;以分析用户如何与其交互的有效过程&#xff0c;它能够帮助我们改进关键指标&#xff0c;例如参与度或应用内购买&#xff0c;以及推出新功能&#xff0c;从而最大限度地降低大规模流失用户的风险。 A/B测试和ASO优化通常适用于应…

唐僧的项目总结报告,我是真服了

早上好&#xff0c;我是老原。 上个月给大家更新了一篇项目管理案例——西天取经。 由于该项目的亏损必须要裁掉团队中的其中一人&#xff0c;究竟该裁掉谁&#xff0c;大家也是讨论的非常激烈&#xff0c;各有各的建议。 鉴于项目已经成功交付&#xff0c;唐僧作为这个项目…

基于51单片机和proteus的智能加湿器设计

此系统是基于51单片机和proteus的仿真设计&#xff0c;功能如下&#xff1a; 1. LCD1602实时显示环境温湿度。 2. 系统分为自动/手动模式&#xff0c;自动模式下系统根据读取的湿度值和设定的湿度值自动运行&#xff0c; 手动模式下使用按键启动/停止设备。 3. 湿度阈值可通…

基于 jmeter 和 shell 的接口性能自动化

目录 前言&#xff1a; 1. 总体需求 2. 实现流程 3.准备工作 4.具体实现 4.1 用例执行 主流程脚本 4.2 服务器监控 监控脚本&#xff1a; 服务器监控脚本 4.3 生成 html 报告 html 样式表 发邮件脚本 前言&#xff1a; 基于JMeter和Shell的接口性能自动化是一种有…

SpringBoot 项目使用 Redis 对用户IP进行接口限流

本文主要参考了该篇文章&#xff1a;https://www.zhihu.com/question/586213782/answer/3038040317?utm_id0 文章目录 一、思路1.1 固定时间段&#xff08;旧思路&#xff09;1.1.1 思路描述1.1.2 思路缺陷 1.2 滑动窗口&#xff08;新思路&#xff09;1.2.1 思路描述1.2.2 Re…

ELK 企业级日志分析系统(二)

ELK 一、FilebeatELK 部署二、logstash的使用grok正则捕获插件mutate 数据修改插件multiline 多行合并插件date 时间处理插件 一、FilebeatELK 部署 Node1节点&#xff08;2C/4G&#xff09;&#xff1a;node1/192.168.136.52 Elasticsearch Node2节点&#xff08;2C/4G&#…

第7集丨JavaScript 中函数——概述

目录 一、函数概览二、函数定义2.1 函数声明 (函数语句)2.2 函数表达式 (function expression)2.3 匿名函数立即执行2.4 函数生成器声明 (function* 语句)2.5 函数生成器表达式 (function*表达式)2.6 箭头函数表达式 (>)2.7 Function构造函数2.8 生成器函数的构造函数 三、函…

C#实现将小数值四舍五入为整数

一、需求说明 在项目的开发中&#xff0c;遇到一些除法计算内容会产生小数值&#xff0c;但是又需要根据项目的实际情况将这些小数内容化为整数&#xff0c;方便后续内容的实现。 二、需求分析 将小数内容转为整数【但是转为小数又分为几种情况】&#xff1a; ①将小数取为下…

银河麒麟服务器v10 sp1 部署 mysql 客户端工具 DBeaver

上一篇&#xff1a;银河麒麟服务器v10 sp1 安装mysql_csdn_aspnet的博客-CSDN博客 DBeaver 是数据库管理器的客户端&#xff0c;它允许以舒适的方式管理数据库实例的数据和选项。DBeaver 支持任何具有 JDBC 驱动程序的数据库 – MySQL/MariaDB、PostgreSQL、Oracle、DB2 LUW、…

性能测试工具 Loadrunner 和 Jmeter 测试结果大 PK

目录 前言&#xff1a; 测试一&#xff1a;1 个用户陆续执行登录操作&#xff0c;迭代 100 次&#xff0c;运行完就结束 测试二&#xff1a;50 个用户并发执行登录操作&#xff08;有集合点&#xff09; 前言&#xff1a; 性能测试工具LoadRunner和JMeter都是流行的工具&am…

ASP.net 配置CSP

ASP.net 开启全局CSP配置 <add name"Content-Security-Policy" value"default-src self; script-src self unsafe-inline unsafe-eval http://seal.digicert.com; style-src self unsafe-inline;" />在web.config中添加该行配置即可 配置完成后&am…