让我们假设存储层次为1 cpu,其中包含L1i,L1d,L2i L2d,L3和DRAM。
我想知道当我使用MOV/store
指令(或任何其他会导致CPU将数据传输到内存的指令)在计算机的较低层发生什么情况吗?我知道如果只有CPU和内存,会发生什么情况,但是对于缓存,我有点困惑。 我已经搜索了此文件,但它仅产生有关以下之间的数据传输的信息:
我正在尝试了解更多有关此内容的信息,例如何时缓存将透写,何时回写?我只知道直写是立即更新缓存行和相应的内存行,而回写是直到替换为止的更新。它们可以共存吗?数据将以直写方式直接传输到内存中吗?并通过高速缓存层次结构写回数据?
引起我困惑的是C / C ++中的Volatile。据我所知,这些类型的变量将直接存储在内存中,这意味着不通过缓存。对吗?那如果我定义一个Volatile变量和一个像int这样的普通变量呢? CPU如何区分直接写到内存或通过缓存层次结构的写操作。
是否有任何指令可以控制缓存?如果没有,缓存如何 受控?其他一些硬件?操作系统?缓存控制器(如果存在这种情况)?