【发布时间】:2018-12-03 14:26:18
【问题描述】:
如果进程将立即操作数写入地址
int a;
a = 5;
L1-Data 缓存和 DRAM 会发生什么? DRAM先填“5”还是L1-Data Cache先填“5”?
【问题讨论】:
-
吹毛求疵,也许什么都没有?这实际上取决于
a的使用方式以及编译器如何优化代码。
如果进程将立即操作数写入地址
int a;
a = 5;
L1-Data 缓存和 DRAM 会发生什么? DRAM先填“5”还是L1-Data Cache先填“5”?
【问题讨论】:
a 的使用方式以及编译器如何优化代码。
编译器将一些内存地址分配给变量 a。在第二个语句中,当执行 a = 5 时,如果系统是多处理器系统,则会向下游发送一个请求以使所有行无效,并为执行代码的处理器提供这个处于唯一缓存一致性状态的特定缓存地址。然后将值 5 写入 L1 缓存(假设编译器希望将缓存行地址保留在缓存中,并且不认为应该将其写回内存/DRAM)。
【讨论】: