PCI Express-内存读与写事务中的内存寻址与物理内存


2

我试图在PCI Express事务中找到内存条(基地址寄存器)和物理内存之间的链接。在我的最后一个问题中,我开始理解当CPU在某个内存地址进行读/写操作时会发生什么,现在我需要深入研究PCI Express事务。

我需要了解每个PCI Express内存读/写事务中是否涉及物理RAM。

1)设备内存BAR寻址的物理内存是否驻留在设备本身中?还是驻留在RAM中?

2)当我在没有内置物理内存的情况下启动对PCI Express设备的内存读/写事务时,指定了内存地址时,如果未映射到内部物理内存,设备如何访问它?当我的设备返回带有数据的交易数据包时,根联合体是否同时将数据提供给CPU并将其插入物理RAM?

Answers:


5

主系统RAM与BAR无关。BAR只是将设备配置为解码对这些地址的访问。通常,该设备包含许多配置寄存器。BAR允许CPU访问这些寄存器,就好像它们是一块RAM一样,但实际上那里没有RAM。PCIe根联合体配置为将大多数内存访问路由到RAM,并将对地址块(通常在3-4 GB区域中)的访问路由到PCIe总线。给定设备中的BAR将其配置为响应那些地址的特定块。

另一方面,某些设备(最显着的是视频卡)实际上确实具有自己的内存,可通过BAR进行访问。


感谢您的回答,但是我仍然不清楚。当我启动对PCIe设备的Memory Write事务时,我真的在写设备内部的寄存器吗?还是有人在PC RAM中写东西?
Jacopo Reggiani

1
@JacopoReggiani,您正在写设备。无论是寄存器还是设备上的实际内存都取决于设备本身。正如我的第一句话所说,它与主系统ram无关。
psusi 2013年

1
大多数系统使用减法逻辑对存储操作的路由进行解码。主系统内存(DRAM)将映射到内存控制器中的一组特定范围。如果地址不在此范围内,则根据其BAR将其路由到I / O总线。在x86中,如果仍未声明I / O,则通常将其路由到DMI / Legacy支持接口。因此,DRAM控制器不应该主张PCIe I / O,并将其路由到BAR与MMIO重叠的适当PCIe总线。
Jon Brauer 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.