searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

PCIe配置与资源分配

2025-04-18 10:06:51
10
0

PCIe配置空间

PCIe配置空间是PCIe设备的重要组成部分,它包含了设备的重要信息和配置接口。在PCIe架构中,每个设备都有自己的配置空间,这部分空间通常是设备的固件或硬件中的一段存储区域。

分为三个部分:

  1. 0→64字节,PCI config头
  2. 64→256,与PCI设备兼容的配置及Capability配置
  3. 256→4k,PCIe设备扩展Capability结构
    image.png

PCIe资源分配

当系统启动时或者有新的PCIe设备接入时,PCIe主机会遍历PCIe总线上的PCIe设备,读取设备配置空间信息,建立设备的拓扑关系,然后为设备分配资源(如内存空间、I/O空间、总线编号等)

bar空间分配

系统中的每个设备中,对空间的大小和访问方式可能有不同的需求,例如,一个设备可能有256字节的内部寄存器/存储,应该可以通过IO空间访问,而另一个设备可能有16KB的内部寄存器/存储,应该可以通过基于MMIO的设备访问。哪些空间应该使用哪种方式(IO或Memory)来访问它们的内部位置,这是系统软件(即BIOS和OS内核)的工作。因此设备必须为系统软件提供一种方法来确定设备的空间需求。**这种需求就是是通过配置空间头部中的Base Address register (BAR)实现的。**一旦系统软件知道设备在空间方面的需求,系统软件将分配一个适当类型(IO, NP-MMIO或P-MMIO)的可用范围给该设备。如下图所示,Type 0报头有6个bar可用(每个bar的大小为32位)

一旦BAR的值确定了(Have been programmed),其指定范围内的当前设备中的内部寄存器(或内部存储空间)就可以被访问了。当该设备确认某一个tlp中的address在自己的BAR的范围内,便会接受这请求。
image1.png

PCIe Capability配置

MSI-X Capabiliy

MSIX是一种中断机制,在PCIe配置空间MSI-X Capability的结构如下:
image2.png

其中主要配置了,Table BIR、Table Offset即中断向量表的bar空间index和bar空间偏移;PBA BIR和PBA Offset即PBA的bar空间index和bar空间偏移

和MSI中断机制不同,MSIX中断向量表存储在bar空间

设备发起中断即通过Mwr Tlp向对应的(UpperAddress LowerAddress)写入Message Data
image3.png

SR-IOV Capability

SR-IOV支持了单个物理PCIe设备虚拟出多个虚拟PCIe设备,然后将虚拟PCIe设备直通到各虚拟机,以实现单个物理PCIe设备支撑多虚拟机的应用场景。

SR-IOV Capability结构如下:
image4.png

其中TotalVFs字段表示PCIe Device支持VF的数量;NumVFs字段表示开启VF的数量,此值不应超过PCIe Device支持的VF的数量TotalVFs的值;First VF Offset字段表示第一个各VF相对PF的Routing ID(即Bus number、Device number、Function number)的偏移量;VF Stride字段表示相邻两个VF的Routing ID的偏移量

VF BAR0为第一个VF BAR0空间,后续所有VF的BAR0与第一个VF BAR0大小一样,空间连续;跟PF的BAR空间无关,VF和PF bar空间layout如下:
image5.png

0条评论
0 / 1000
w****n
1文章数
0粉丝数
w****n
1 文章 | 0 粉丝
w****n
1文章数
0粉丝数
w****n
1 文章 | 0 粉丝
原创

PCIe配置与资源分配

2025-04-18 10:06:51
10
0

PCIe配置空间

PCIe配置空间是PCIe设备的重要组成部分,它包含了设备的重要信息和配置接口。在PCIe架构中,每个设备都有自己的配置空间,这部分空间通常是设备的固件或硬件中的一段存储区域。

分为三个部分:

  1. 0→64字节,PCI config头
  2. 64→256,与PCI设备兼容的配置及Capability配置
  3. 256→4k,PCIe设备扩展Capability结构
    image.png

PCIe资源分配

当系统启动时或者有新的PCIe设备接入时,PCIe主机会遍历PCIe总线上的PCIe设备,读取设备配置空间信息,建立设备的拓扑关系,然后为设备分配资源(如内存空间、I/O空间、总线编号等)

bar空间分配

系统中的每个设备中,对空间的大小和访问方式可能有不同的需求,例如,一个设备可能有256字节的内部寄存器/存储,应该可以通过IO空间访问,而另一个设备可能有16KB的内部寄存器/存储,应该可以通过基于MMIO的设备访问。哪些空间应该使用哪种方式(IO或Memory)来访问它们的内部位置,这是系统软件(即BIOS和OS内核)的工作。因此设备必须为系统软件提供一种方法来确定设备的空间需求。**这种需求就是是通过配置空间头部中的Base Address register (BAR)实现的。**一旦系统软件知道设备在空间方面的需求,系统软件将分配一个适当类型(IO, NP-MMIO或P-MMIO)的可用范围给该设备。如下图所示,Type 0报头有6个bar可用(每个bar的大小为32位)

一旦BAR的值确定了(Have been programmed),其指定范围内的当前设备中的内部寄存器(或内部存储空间)就可以被访问了。当该设备确认某一个tlp中的address在自己的BAR的范围内,便会接受这请求。
image1.png

PCIe Capability配置

MSI-X Capabiliy

MSIX是一种中断机制,在PCIe配置空间MSI-X Capability的结构如下:
image2.png

其中主要配置了,Table BIR、Table Offset即中断向量表的bar空间index和bar空间偏移;PBA BIR和PBA Offset即PBA的bar空间index和bar空间偏移

和MSI中断机制不同,MSIX中断向量表存储在bar空间

设备发起中断即通过Mwr Tlp向对应的(UpperAddress LowerAddress)写入Message Data
image3.png

SR-IOV Capability

SR-IOV支持了单个物理PCIe设备虚拟出多个虚拟PCIe设备,然后将虚拟PCIe设备直通到各虚拟机,以实现单个物理PCIe设备支撑多虚拟机的应用场景。

SR-IOV Capability结构如下:
image4.png

其中TotalVFs字段表示PCIe Device支持VF的数量;NumVFs字段表示开启VF的数量,此值不应超过PCIe Device支持的VF的数量TotalVFs的值;First VF Offset字段表示第一个各VF相对PF的Routing ID(即Bus number、Device number、Function number)的偏移量;VF Stride字段表示相邻两个VF的Routing ID的偏移量

VF BAR0为第一个VF BAR0空间,后续所有VF的BAR0与第一个VF BAR0大小一样,空间连续;跟PF的BAR空间无关,VF和PF bar空间layout如下:
image5.png

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0