【发布时间】:2015-06-24 09:48:53
【问题描述】:
我对缓存行为很好奇。下面是一些与缓存相关的问题:
写操作是否将数据带入缓存? 考虑像 A[i] = B[i] 这样的赋值,A[i] 会被加载到缓存中吗?因为我只是在 A[i] 中写入一些东西而不是读取它的值。
分配大内存时,内存可能来自操作系统。出于安全原因,操作系统会将数据初始化为零(Reference)。如果赋值会将数据带入缓存(问题一),这种机制会不会占用缓存?
假设有一个分配的数组B,现在整个B都在缓存中。在我释放数组 B 后,被 B 占用的缓存行会变得无效(可用)吗?
有人可以给我一个提示吗?
【问题讨论】:
-
我会说这不是语言可以控制的。对于语言来说,所有这些都被抽象为“记忆”。请参阅this。
-
@ArjunSreedharan:编译器确实知道操作系统和 CPU。它可能会添加缓存控制指令。