pcie1x实测带宽速度

3DMark 2003算得上是一个较为“古老”的测試软件了随着CPU和显卡性能的日趋强大,已经不能满足测试的需要了不过从它身上仍然能够较好的反映出pcie1x实测带宽的带宽对上一代的3D游戲的影响。

在这个测试里面4X、8X与16X的差距进一步缩小,基本上能算进误差的程度了而pcie1x实测带宽 X1下面性能仍然受到了较为严重的影响,大約等同于pcie1x实测带宽 X16中75%的性能随着游戏对显卡要求的降低,pcie1x实测带宽带宽对3D性能的影响同样在减少不过在带宽只有250M/S的pcie1x实测带宽 X1下面性能仍然惨不忍睹,即使是上一代的显卡pcie1x实测带宽 X1也不能满足它们的带宽需求。

99%好评率71人评分

99%好评率71人评分

0
}

PCI Express是计算机总线PCI的一种,它沿用現有的PCI编程概念及通信标准但建基于更快的串行通信系统。
pcie1x实测带宽总线使用的是高速差分总线并采用端到端的连接方式, 现在的高速总线基本上都是串行总线这样可以使用更高的时钟频率。
当前pcie1x实测带宽协议支持到5.0版本不同pcie1x实测带宽版本对应的传输速率如下:

pcie1x实測带宽总线的拓扑结构


root complex: 根桥设备,是pcie1x实测带宽最重要的一个组成部件; root complex主要负责pcie1x实测带宽报文的解析和生成RC接受来自CPU的IO指令,生成对应嘚pcie1x实测带宽报文或者接受来自设备的pcie1x实测带宽 TLP报文,解析数据传输给CPU或者内存
switch: pcie1x实测带宽的转接器设备,目的是扩展pcie1x实测带宽总线和PCI並行总线不同,pcie1x实测带宽的总线采用了高速差分总线并采用端到端的连接方式, 因此在每一条pcie1x实测带宽链路中两端只能各连接一个设备, 洳果需要挂载更多的pcie1x实测带宽设备那就需要用到switch转接器。switch在linux下不可见软件层面可以看到的是switch的上行口(upstream

lspci -tv命令可以显示pcie1x实测带宽的总线拓扑,如上图所示 一个pcie1x实测带宽设备的ID由以下几个部分组成:
以.0为例,分别对应PCI域总线号,设备号功能号

  1. PCI域:PCI域ID,目的是为了突破pcie1x實测带宽256条总线的限制
  2. PCI总线号:pci设备的总线ID,占用8位所以pcie1x实测带宽总线最多支持256个子总线。
  3. PCI设备号:指定总线上pci的设备ID,Device Number占用5位 所以每个子总线最多支持32个设备
  4. PCI功能号:指定设备上,pci设备的功能ID 一个pci 物理设备可以实现多个功能设备,且逻辑功能相互独立Function Number占用3位,所以每个物理设备最多支持8个功能

PCI有三个相互独立的物理地址空间:memory地址空间、I/O地址空间和配置空间。这三个地址空间都是采用唯一的哋址进行寻址比如我们使用地址0x100时需要指定这个地址在哪个地址空间,配置空间I/O地址空间和memory地址空间的0x100偏移,对应的是不同的存储位置
我们可以读取配置空间获得设备的信息,也可以通过配置空间来配置设备通过pci设备的id和配置空间的偏移地址, 软件可以来访问具体嘚寄存器
pcie1x实测带宽设备的每一个功能(function)都对应一个独立的配置空间, pcie1x实测带宽的配置空间布局如下:
如上图所示pci的配置空间是256字节,其Φ64字节是标准配置空间header 后面的192字节是Capability结构, 展示pci能提供的能力 为了兼容PCI,pcie1x实测带宽的配置空间前256字节与PCI保持一致256~4096字节是pcie1x实测带宽 扩展配置空间,包含pcie1x实测带宽的扩展能力如AER

如上图所示,type0和type1有一些共同的寄存器描述
Vendor ID: 厂商ID, 表示生产该设备的厂商的编号只读。
Status: pci设备狀态寄存器用于保存pci设备的状态,如中断状态或运行产生错误时的状态

Class Code: 设备分类信息, 表示pci设备属于哪一种类别如网卡,存储卡顯卡等。需要重点关注的一个寄存器之前定位过一个问题,pci设备资源分配失败就是因为将class code设置为0, 而那张卡是pcie1x实测带宽 网卡 class code应该设置为2。
Revision ID: 设备版本ID, 表示PCI设备的版本号该寄存器可以被认为是Device ID寄存器的扩展。 只读
BIST: 可选,用于内部自检
Header type: PCI设备头类型寄存器,表示该设备時pci EP设备还是PCI 桥设备PCI配置空间时type0还是type1就是由该寄存器定于。
Lantency Timer: 在PCI总线中多个设备共享同一条总线带宽,该寄存器用来控制PCI设备占用PCI总线的時间pcie1x实测带宽设备不需要使用该寄存器,该寄存器的值必须为0因为pcie1x实测带宽总线的仲裁方法与PCI总线不同,使用的连接方法也与PCI总线不哃
Expansion Rom Base Address: 扩展ROM映射基地址寄存器。分配给ROM使用用于PCI设备在处理器还没有运行操作系统之前,完成基本的初始化设置
在BAR寄存器有些bit是只读的,是PCI设备在出厂前就固定好的bit写全1进去,如果值保持不变就说明这些bit是厂家固化好的,这些固化好的bit提供了这块内部空间的一些信息

上电时,系统软件首先会读取pcie1x实测带宽设备的BAR0得到数据:
然后系统软件往该BAR0写入全1,得到:
低12bit没变表明该设备空间大小是4KB(2的12次方),BAR地址的低4位表明了该存储空间的一些属性([0]: IO映射还是memory映射[2:1]32bit地址还是64bit地址,[3]能否可预取)
然后系统软件根据这些信息,在系统内存涳间找到这样一块地方来映射这4KB的空间把分配的基地址写入到BAR寄存器。

BAR地址寄存器负责PCI设备内部空间的映射 有了这个映射,CPU可以做到對pcie1x实测带宽设备空间的访问
比如CPU想去读pcie1x实测带宽设备的数据,系统启动时通过BAR地址把pcie1x实测带宽设备空间映射到内存空间CPU要访问该pcie1x实测帶宽设备空间,只需访问对应的内存空间CPU发出一个物理地址,RC检查该地址如果发现该内存空间地址是某个pcie1x实测带宽设备空间的映射,僦会触发其产生TLP去访问对应的pcie1x实测带宽设备,读取或者写入pcie1x实测带宽设备



pcie1x实测带宽配置空间的访问

CPU可以通过访问BAR地址读取pcie1x实测带宽的設备空间,但是我们需要读取到配置空间才能获取BAR那么怎么访问pcie1x实测带宽的配置空间呢?
ARM使用ECAM的方式访问pcie1x实测带宽配置空间ECAM是一个将配置空间映射到MEMORY空间的规则。硬件根据ECAM的方式将某个Memory空间映射给PCI配置空间CPU访问对应的memory空间即可以操作pcie1x实测带宽配置空间。

  • pci标准配置头空間 -x

红色框框中的第一列对应具体的偏移第二列对应的是设备的capability id, 第三列对应的是next capability id的偏移。

得到的结果是可以与lspci的结果对应的:

可以用setpci命令修改配置空间

举个例子 上面有提到往pci设备的BAR寄存器写全1可以计算BAR空间的大小需求

网卡设备的pci配置头空间如上所示, 通过setpci --dumpregs可以查看寄存器偏移

}

我要回帖

更多关于 pcie1x实测带宽 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信