PCIe学习笔记(二)-------2.2 PCI Header(BAR大小、MEM与IO范围、总线号)

目录

1,PCI Header

2,BAR(Base Address Register)

2.1,BAR的属性

2.1.1,MEM BAR

2.1.2,IO BAR

2.2,BAR的大小 

3,MEM地址与IO地址范围

3.1,prefetchable memory range

3.2,non-prefetchable memory range

3.3,IO Range

4,总线号


1,PCI Header

PCIe配置空间中前64 Byte为PCI Header,分为Type0 和Type1两种类型。如下图所示,两种头类型的寄存器存在一定区别,下面将介绍TLP路由过程中比较重要的几组寄存器。

2,BAR(Base Address Register)

上图中的<1表示的寄存器即是BAR,type1类型的头共有两个BAR(BAR0,BAR1),type0类型的头共有6个BAR(BAR0 ~ BAR5)。BAR的大小由PCIe设备厂商在出厂前就已经设好,软件通过一定的操作可以读出BAR的大小。BAR和TLP的地址路由相关。

2.1,BAR的属性

BAR寄存器的bit[0] 可以用来表示BAR是作为IO映射还是作为MEM映射。两种BAR的属性比特不完成相同。

2.1.1,MEM BAR

 

bit[0]  :  0表示为MEM类型的BAR

bit[2:1]  :  2'b00表示为32bit 的BAR,2’b10表示为64bit BAR

bit[3]  :  1:prefetchable   0:non-prefetchable

当BAR为64bit 的MEM BAR时,两个相连的BAR组成一个64bit BAR。下图中两个相邻的BAR(BAR N 和 BAR N+1)则表示prefectchable 64bit  MEM BAR

2.1.2,IO BAR

bit[0]  : 为1代表IO BAR

bit[1]  :    reserved,但读的时候必须返回1‘b0  

2.2,BAR的大小 

BAR的大小在设备出厂时就已经设定好了,通过设置BAR寄存器中不可写的比特位来决定BAR的大小。以type0 的BAR来进行说明。

(1)未进行任何操作的BAR0

(2)向BAR0的每个bit进行写1’b1操作,然后读取BAR0的值。

         发现BAR0为prefetchable 32bit MEM BAR。由于BAR0寄存器的低20bit(bit[19:0])都是不可写的,所以回读出来发现写成1的的最低比特是bit[20]那么该BAR的大小就是2^20 = 1MB

(3)配置BAR0的起始地址。图中配置为0x10000000。

        所以BAR0表示的BAR区间范围为:0x10000000 ~ 0x10000000 + 1MB

3,MEM地址与IO地址范围

文首的图中<2的寄存器表示了MEM地址与IO地址的范围,这些和TLP包的地址路由相关。下面将介绍寄存器是如何表示地址范围的。

3.1,prefetchable memory range

可预取的MEM地址通过base 和 limit 来确定。支持32bit 或者 64bit寻址模式。32bit寻址时,DW10,DW11将无效。下图为64bit的prefetchable memory的地址区间的一个示例。

Base寄存器:共16bit。高12bit 为0x800,代表32bit地址的高12bit。后面默认补上00000,则表示的32bit地址为 0x80000000。

                                     低 4bit 为0x1,表示为64bit 寻址模式,则该Base表示的32bit地址和Base Upper寄存器一起组成64bit地址。为0x0时表示32bit 寻址模式。

Base Upper寄存器:共32bit。代表可预取Memory空间64bit寻址时的高32bit Base地址。图中为0x00000001

        则表示的Base地址为 0x0000_00001_8000_0000

Limit寄存器:共16bit。高12bit为 0xFFF,代表32bit地址的高12bit。后面默认补上FFFFF,则表示的32bit地址为 0xFFFFFFFF

                                     低 4bit 为0x1,表示为64bit 寻址模式,则该Limit表示的32bit地址和Limit Upper寄存器一起组成64bit地址。为0x0时表示32bit 寻址模式。

Limit Upper寄存器:共32bit。代表可预取Memory空间64bit寻址时的高32bit Limit地址。图中为0x00000002

        则表示的Limit地址为0x0000_0002_FFFF_FFFF

可预取的Memory范围为: 0x0000_00001_8000_0000 ~ 0x0000_0002_FFFF_FFFF

3.2,non-prefetchable memory range

不可预取的memory地址只能在32bit内寻址,范围由Base和Limit来决定(DW8)。以下图为例说明。

Memory Base:共16bit。高12bit 为0x121,代表32bit地址的高12bit。后面默认补上00000,则表示的32bit地址为 0x12100000。

                                         低4bit 必须为0x0

Memory Limit:共16bit。高12bit 为0x122,代表32bit地址的高12bit。后面默认补上FFFFF,则表示的32bit地址为 0x122FFFFF。

                                         低4bit 必须为0x0

不可预取的Memory范围为: 0x1210_0000 ~ 0x122F_FFFF。

3.3,IO Range

IO范围也是由Base和Limit寄存器来控制的。IO地址空间可以在16bit地址间寻址,也可以在32bit地址空间寻址。以下图进行说明。

IO Base:共8bit。高4bit 为0x2,代表16bit地址的高4bit。后面默认补上00000,则表示的16bit地址为 0x2000。

                             低4bit 为0x1,代表为32bit寻址,其中高16bit在Upper Base寄存器中。为0x0,则代表16bit 寻址。

Base Upper:共16bit。代表IO地址空间32bit寻址时的高16bit Base地址。图中为0x0000。

        IO Base地址为:0x0000_2000

IO Limit:共8bit。高4bit 为0x4,代表16bit地址的高4bit。后面默认补上FFFF,则表示的16bit地址为 0x4FFFF。

                             低4bit 为0x1,代表为32bit寻址,其中高16bit在Upper Limit寄存器中。为0x0,则代表16bit 寻址。

Limit Upper:共16bit,代表IO地址空间32bit寻址时的高16bit Limit地址。图中为0x0000。

        IO Limit地址为:0x0000_4FFFF

则IO地址空间范围为:0x0000_2000 ~ 0x0000_4FFF

4,总线号

在type1的PCI Header中有一些寄存器记录了当前Function的总线号。它们是文首图中的<3这类的寄存器。这些寄存器主要用于TLP包的ID路由。

Primary Bus Number:代表朝向RC方向的PCI 总线号。

Secondary Bus Number:代表下游链路的PCI 总线号。

Subordinate Bus Number:代表了下游端口上最高(大)的总线号。当没有接桥的时候,二级总线号和从属总线号是一样的值。

RC port上的丛属总线号可以表示这条PCIe拓扑结构上连接了多少个Type1 的function(包含RC自己的port)。

  • 7
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CPU-MEM Monitor是一种计算机监控工具,用于实时监测系统的CPU和内存使用情况。它通常用于服务器、云计算平台以及大型数据中心等环境中,以帮助管理员了解系统资源的利用率和瓶颈情况。 CPU-MEM Monitor可以提供实时的CPU利用率和内存利用率数据,并通过图表或图形方式展示出来。管理员可以通过这些数据来判断系统的资源利用情况,识别CPU或内存的瓶颈,并及时采取措施来优化系统性能。 通过CPU-MEM Monitor,管理员可以了解到系统中哪些进程或应用程序占用了过多的CPU和内存资源,从而定位和解决问题。同时,CPU-MEM Monitor还可以记录系统资源的历史使用情况,帮助管理员进行性能分析和预测。 在云计算平台或大型数据中心中,CPU-MEM Monitor的作用尤为重要。它可以帮助管理员合理规划和管理系统资源,以最大限度地提高资源利用效率和性能,同时避免资源过度分配或单点故障。通过持续监控CPU和内存的使用情况,管理员可以及时调整资源分配策略,确保系统的稳定性和高可用性。 总之,CPU-MEM Monitor是一种重要的监控工具,它通过实时监测和统计CPU和内存的使用情况,帮助管理员了解系统资源的利用率和瓶颈情况,并提供数据支持进行性能优化和资源调整。它在服务器、云计算平台以及大型数据中心等环境中具有广泛应用和重要作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值