PCIe—预取和非预取

文章首发于公众号:  PCIe—预取和非预取   更多干货文末扫码关注公号。

Prefetchable:设备可以先把未来可能需要的数据预取到自己的缓冲区中,并在需要时直接使用,从而减少对主系统内存的访问。这可以提高设备的读取性能,尤其对于需要较大数据块的设备来说。可预取的数据通常以缓存行(cacheline)的形式进行处理,这样设备可以在需要时迅速获取。

nonprefetchable:设备每次只能从系统内存中读取特定数据,不能预先将数据缓存起来。这样的读取行为通常发生在具有特殊需求的设备上,例如DMA(Direct Memory Access)控制器,其需要获取实时的、即时的数据,而不需要进行缓存.

强烈建议映射到内存空间的资源尽可能设计为可预取的。
 Pcie规范鼓励请求大量内存空间的bar设置为可预取,因为在大多数可扩展平台上,可预取内存空间更充裕。
通过BAR请求内存资源的PCI Express Endpoint必须设置BAR的Prefetchable位,除非该范围包含具有读副作用的空间或该EP不允许写合并的空间,例如,如果请求者请求从一个地址读取128个字节,则Completer可能也会预取下一个128字节,以便在被请求时将其放在手边以提高性能。因此可预取必须有两个特性:读数据无副作用和允许写合并

对于PCI Express Endpoint,所有具有可预取的bar必须支持64位寻址,对于no-Prefetchable的bar,允许32位寻址。
预取位在BAR寄存器中bit3:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木泽八

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值