2

在阅读了一些关于 PCIe 的文章后,我找到了 PCI 兼容的配置头文件,在了解了头文件后,就有了基地址寄存器(BAR)字段。每个 PCIe 端点共有 6 个 BAR。为什么有 6 个 BAR 而不仅仅是 2 个(1 个在 32 位地址的情况下,2 个在 64 位的情况下)。我的意思是所有 BAR 的详细功能是什么? PCI Express PCI 兼容配置头

4

1 回答 1

6

BAR 的使用因设备而异。它们要么用于设备控制操作(这是通常的情况),要么用于与设备之间的数据传输。之所以有六个插槽,是为了让设备可以为不同的目的提供不同的区域。此外,由于接口支持 64 位地址空间,因此提供其中之一需要 64 位 BAR(需要两个连续的 32 位插槽)来配置基地址。

在英特尔 i350 以太网控制器的数据表中可以看到 BAR 使用的一个示例。请参阅第 9.4.11 节。该设备中有 3 个 BAR:一个用于内存映射设备配置(以及对 FLASH 设备的访问),一个用于通过 I/O 地址空间进行设备配置,一个用于配置 MSI-X 中断向量。

其他设备可能有一个 BAR 或五个(如果设备是网桥,则没有)。如果您正在运行 linux,请尝试sudo lspci -vv在您的系统上观察设备之间的差异。

于 2018-06-26T20:04:36.000 回答