如果我要运行一个二进制可执行程序,是否所有的指令都必须存储在指令缓存中?指令缓存是L1、L2或L3 CPU缓存中的一个位置,还是一个不同的实体?当我运行一个可执行文件时,我不太清楚物理上会发生什么,任何形式的清晰都是非常感激的。
发布于 2020-01-16 09:29:10
指令将永久存储在海量存储设备上的二进制可执行文件中。当程序执行时,可执行文件的内容被加载到主存储器(RAM)中。一般来说,CPU和RAM之间的所有通信都通过缓存;可执行文件所包含的指令也是如此。
缓存可以包含指令、数据或两者。对于Intel,有两个L1缓存:数据的L1d缓存和指令的L1i缓存;L2和L3是共享的。以下图像非常清楚地说明了这一点:

这是简单的答案。如果你想学得更多,周围有很多好材料。Ulrich的每个程序员都应该知道关于内存的事情是一个伟大的阅读。
https://stackoverflow.com/questions/59762711
复制相似问题