最近PCIe在SSDFans上镜率挺高,那我们来聊两句MAX_READ_REQUEST_SIZE 和MAX_PAYLOAD_SIZE。

这两个东西都在PCIe Capability Structure 08h (Device Control Register)里

Maximum Payload Size (简称MPS)

控制一个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

在配置阶段,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://china.xilinx.com/support/answers/36596.html

PCIe Max_Payload_Size 和 Max_Read_Request_Size的更多相关文章

  1. Xilinx FPGA 的PCIE 设计

    写在前面 近两年来和几个单位接触下来,发现PCIe还是一个比较常用的,有些难度的案例,主要是涉及面比较广,需要了解逻辑设计.高速总线.Linux和Windows的驱动设计等相关知识. 这篇文章主要针对 ...

  2. 5.4 TLP中与数据负载相关的参数

    在PCIe总线中,有些TLP含有Data Payload,如存储器写请求.存储器读完成TLP等.在PCIe总线中,TLP含有的Data Payload大小与Max_Payload_Size.Max_R ...

  3. 转载 大话pcie

    原文https://blog.csdn.net/abcamus/article/details/76167747 一.PCIe DMA机制 PCIe控制器也提供DMA(Direct Memory ac ...

  4. PCIe 复位:Clod reset、warm reset、Hot reset、Function level reset

    2015年09月06日 17:06:01 yijingjing17 阅读数:9029 标签: PCIEReSet复位Clod resetwarm reset 更多 个人分类: PCIe        ...

  5. PCIe事务层包TLP Header详解

    1.事务层包的一般格式: 包的header为3DW(double word)或者4DW(一个DW代表4字节),数据负载为1~1024DW(即4~4096byte,最大4M),TLP Digest可选, ...

  6. 使用FIO对SATA、SSD和PCIe Flash进行测试

    首先声明,同事做的实验 使用fio对SATA.SSD.PCIE进行了测试 测试说明: 1.测试命名   sync_write_4k_32      sync表示测试方式,可以是sync或者libaio ...

  7. 基于WDF的PCI/PCIe接口卡Windows驱动程序(5)-如何为硬件移植驱动程序

    原文地址:http://www.cnblogs.com/jacklu/p/6139347.html 正如前几篇博客所说,使用WDF开发PCIe驱动程序是我本科毕业设计的主要工作.在读研的两年,我也分别 ...

  8. PCIE学习

    PCIe在传输中用8b/10b编码,所以单PCEe2.0的有效带度是4Gb/s x2模式将用于内部接口而非插槽模式 PCIe卡能使用在至少与之传输通道相当的插槽上(例如x1接口的卡也能工作在x4或x1 ...

  9. KVM 介绍(4):I/O 设备直接分配和 SR-IOV [KVM PCI/PCIe Pass-Through SR-IOV]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

随机推荐

  1. PowerShell添加和部署WSP

    SharePoint PowerShell在SharePoint Product列表里边,然后以管理员权限启动. 1. 添加Solution 到 SharePoint Farm. Add-SPSolu ...

  2. 对magento MVC框架的了解

    对magento MVC框架的了解 在做二次开发以来,一直没有好好地去了解magento的MVC架构,以为跟其它的MVC架构一样,其实有着很大的区别. 有很多的程序框架都使用了现在最流行的MVC架构, ...

  3. [python]自问自答:python -m参数? ( python3.7 版本 )

    最近在看Python代码的时候看到了一种形式, 即  python -m    这种形式,   查了一些博客,发现了一篇写的还不错,转载了过来,不过那里面写的是Python2.7的环境和python3 ...

  4. 【opencv基础】linux系统opencv以及opencv_contrib的安装与使用

    前言 本文主要介绍如何在linux系统安装使用opencv. 具体步骤可参考opencv官网here. 步骤 编译源码之前需要安装相关依赖库: 1.下载源码: 2.解压源码: 3.配置cmake: 注 ...

  5. win8转win7+真正解决 “安装程序无法定位现有系统分区,也无法创建新的系统分区”的方法

    问题情况:win8电脑转win7系统,出现问题:“安装程序无法定位现有系统分区,也无法创建新的系统分区”   第一种:猜测可行的方法: 1.老毛桃U盘启动电脑,进入PE系统后,直接使用Diskgeni ...

  6. HDU1024 最大M子段和问题 (单调队列优化)

    Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  7. 20145209 2016-2017-2 《Java程序设计》第8周学习总结

    20145209 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 1.java.util.logging包提供了日志功能相关类与接口. 2.使用日志的起点是L ...

  8. (7)random(随机模块)

    import random print(random.random()) #得到一个随机的数,但是随机的数的范围是(0,1),这里用小括号(开曲线)代表取不到0也取不到1,o-1之间只有小数,所以只能 ...

  9. java安装教程及环境配置

    下载JDK(网上有很多,可以百度) 首先在非系统盘(系统盘通常是C盘)中,新建一个Java(可以是其他名称,必须是英文且名称中没有空格)文件夹,并在这个文件夹中创建JDK,JRE两个文件夹. 双击已下 ...

  10. CTF-练习平台-Misc之 想蹭网先接开密码

    十三.想蹭网先接开密码 用wireshark打开,WiFi认证过程重点在WPA的四次握手包,找到EAPOL握手协议,另存为 根据题目提示,写字典 #include<stdio.h>int  ...