gpt4 book ai didi

c - 刷新写入内存 Controller 的缓冲区到 DDR 设备

转载 作者:太空宇宙 更新时间:2023-11-04 03:46:27 24 4
gpt4 key购买 nike

在我的代码中的某个时刻,我需要将代码中的写入一直推送到 DIMM 或 DDR 设备。我的要求是确保写入到达 DIMM 上 DDR 设备的行、禁止、列。我需要读取我写入主内存的内容。我不希望缓存让我获得值(value)。相反,在写入之后,我想从主内存(DIMM)中获取这个值。

到目前为止,我一直在使用 Intel 的 x86 指令 wbinvd(写回并使缓存失效)。然而,这意味着缓存和 TLB 被刷新。回写请求进入主存储器。但是,此数据可能会在内存 Controller (英特尔称之为集成内存 Controller 或 IMC)的写入缓冲区中驻留一段合理的时间。内存 Controller 可能需要更多时间,具体取决于内存 Controller 中运行的处理写入的算法。

有没有办法将内存 Controller 的写入缓冲区中的所有现有或未决写入强制写入 DRAM 设备??

我正在寻找的是比 wbinvd 更直接、更底层的东西。如果您能指出正确的文档或规范来描述这一点,我将不胜感激。

通常,IMC 有几个可以写入或读取的寄存器。通过查看芯片组的规范,我找不到任何有用的信息。

感谢您花时间阅读本文。

最佳答案

这就是为什么英特尔将 CLWB 指令添加到集合中的原因。在写这个答案的时候,没有现成的可用硬件来实现指令(AFAIK)。出于类似的原因,ARMv8.2-A增加了“DC CVAP”(Clean data cache by virtual address to Point of Persistence)指令。

仍然没有架构方法来刷新 IMC 中的交易。 NVDIMM 规范关心这个问题并提供 NVDIMM 特定的机制来确保写入已到达设备。参见最新ACPI规范中NVDIMM固件接口(interface)表中Flush Hint Address Structure的描述。

关于c - 刷新写入内存 Controller 的缓冲区到 DDR 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23963219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com