【发布时间】:2021-03-26 17:00:33
【问题描述】:
当前设置:
当今大多数最新的英特尔架构都具有非包容性 L3 缓存,其中每个切片 (+CHA) 都包含一个“窥探过滤器”,其中包含 L3 目录在包容性情况下将提供的位置信息(这种设计选择可能会避免一致性消息占用超过网状带宽)。大多数还默认启用“内存目录”,可用于过滤远程监听或以其他方式更改一致性事务的本地和远程部分的时间属性。
当访问属于不同套接字的内存位置时,RFO 直接发送到 QPI/UPI 环,而不是 L3+CHA。内核复制 L3 维护的源地址解码器 (SAD) 寄存器,这些寄存器确定哪个 NUMA 节点负责物理地址。一旦 RFO 到达负责的本地代理,它会决定是否必须将窥探发送到其他套接字/内核并响应调用者(可以并行执行此操作)。如果带宽可用,还有 OSB 可以让 L3 进行推测性窥探。
“内存目录”是与 DRAM 中的缓存行数据一起定位的一个或多个位,指示另一个一致性域是否可能具有缓存行的修改副本。
这些位不会针对来自本地核心/缓存的负载进行更新,因为 L3/CHA 会跟踪它。
在 M 状态高速缓存行回写失效后,内存目录位被清除,因为只有一个 L3/CHA 可以使高速缓存行处于 M 状态。
英特尔 DC PMEM,
来自,Intel® 64 and IA-32 Architectures Optimization Reference Manual 第 2.1.31 节
(我想是在内存模式下,虽然他们没有在部分中指定)
在具有多个处理器的系统上,目录用于缓存一致性。该目录实现为分布式内存目录,每个缓存行的一致性状态存储在内存中行本身的元数据中。
如果不同处理器中的内核重复读取 Intel Optane DC Persistent Memory Module 中的同一组行,则每次都会对 Intel Optane DC Persistent Memory Module 进行多次写入记录一致性状态的变化。
这表明 PMM 使用内存目录。
这些写入被称为“目录写入”并且在本质上往往是随机的。因此,其中一些写入可能会降低应用程序可用的有效英特尔傲腾 DC 持久内存模块带宽。
普通 DRAM 是否也会在类似的设置中遭受随机目录写入的影响?
或者在具有 48GB/s 写入 b/w 而 PMM 只有 ~2.3GB/s (1) 的 DRAM 中无关紧要?
当DRAM“内存目录”存在时,为什么PMM需要使用目录一致性协议?
Optane DC Persistent Memory Module 可能被不同的线程访问,如果观察到这种模式,需要考虑的一个选项是将 Intel Optane DC Persistent Memory Module 区域的一致性协议从基于目录更改为基于探听通过在系统范围内禁用目录。
对远程 PMM 的 RDMA 请求是否也需要通过远程 DRAM?
【问题讨论】:
-
在我看来,在 PMM 中,DC 内存不是缓存,DRAM 是。所以 PMM 不能是非包容性的(只有一个 PMM 系统,所以它包含所有行)。其他 DMA 参与者像往常一样通过系统代理,然后像往常一样进入 DRAM 和 PMM。我认为需要 PMM 中存在的目录缓存,因为 PMM 比(直接映射的)DRAM 缓存大,因此 DRAM 访问不能告诉 PMM 中的哪一行真正被访问(因此通常的缓存机制是不够的)。但是没有 PMM,L3s 中的缓存目录就足够了(DRAM 本身没有目录写入)。
-
是的,我很确定这仅适用于在“内存模式”下使用 PMM 时,其中 这对操作系统和应用程序是透明的 - 看起来就像有大量的物理内存。手册说系统中的 DRAM 内存被用作内存端缓存(12.1.1 内存模式)。我不知道为什么他们会在 PMM 而不是 DRAM 中保持相干状态;它不打算在重新启动后继续存在。 (同一段解释说,它使用在重新启动时丢弃的密钥对进出 PMM 的数据进行加密。)我根本不知道 Optane DC PM 有这样的模式,整洁。
标签: x86 intel cpu-architecture cpu-cache persistent-memory