3

在 PCI 配置空间中,Cache line size 表示系统 cacheline 的大小,以 DWORD 为单位。该寄存器必须由可以生成存储器写入和无效命令的主设备实现。

该寄存器中的值也被主设备用来确定是使用 Read、Read Line 还是 Read Multiple 命令来访问内存。

想要允许使用高速缓存线环绕寻址模式进行内存突发的从设备必须实现此寄存器以了解突发序列何时环绕到高速缓存线的开头。

但该字段由 PCI Express 设备实现为用于传统兼容性目的的读写字段,但对任何 PCI Express 设备行为没有影响。

那么PCIe系统是如何实现memory-write-invalidate特性的呢?

4

2 回答 2

0

据我所知,PCIe 没有明确的消息存储器写入和无效。相反,接收恰好覆盖整个高速缓存行的写入的根复合体可以避免读取该高速缓存行并立即使其无效。

我认为在大多数情况下,如果可能的话,你会简单地生成 MaxPayloadSize 请求,并希望也能触发这种行为。如果你必须知道设备的缓存线大小,我建议设计一个设备特定的机制,并从你的驱动程序中配置它。

于 2020-06-27T08:26:14.630 回答
0

PCIe 有一个补充协议,称为地址转换服务 (ATS),在该协议中,有关于失效的描述(第 3 章)。底线是一个名为 Invalidate 的 MsgD 事务层数据包 (TLP),它可以做到这一点。请注意,一般来说,它与 MWr TLP 完全分开(在协议方面)。

于 2019-11-26T20:30:16.847 回答