指令和数据具有不同的访问模式,并获得 的存储器的不同区域。因此,对于 指令和数据具有相同的高速缓存可能并不总是成功。
因此,拥有两个高速缓存很常见:一个指令高速缓存, 只存储指令,以及一个只存储数据的数据高速缓存。
知道指令和数据之间的区别很直观,但现在我不能确定在这种情况下的区别吗?什么构成数据并被放入数据高速缓存以及构成指令并放入指令高速缓存中?
我知道ARM程序集。是否需要STR
,LDR
,LDMF
或STMFD
使用数据缓存?但从技术上说STR
,LDR
,LDMF
和STMFD
都是说明,所以我这就是为什么我很困惑。 “数据”必须与“指令”一起存在吗?数据是否被认为是.data
部分的内容?
例如LDR R1, =myVar
那么LDR会进入指令缓存并且myVar的内容会进入数据缓存?还是不是那样工作?
指令和数据有不同的访问模式 有人可以详细说明吗?
这个评论我在一个有用的岗位上做出了突出我的难处理解:
“我们的想法是,如果一个指令已经从内存中加载,这是 可能马上就会被再次使用”,但只有知道下一个 指令的方法是读取它。这意味着内存读取(您不能说 它已经在缓存中,因为新的指令是红色的)。所以我 还是看不到点?假设LDR指令刚刚发生,所以现在 LDR位于数据缓存中。也许另一个LDR指令会发生, 也许它不会,我们不能确定,所以我们不得不实际读取下一个 指令 - 从而破坏了缓存的目的。
如果您看看arm处理器的TRM(技术参考手册)并从arm获取AMBA/AXI规格,则可以看到每种访问类型涉及多少个步骤。请参阅axi总线控制线,以指示访问权限,权限,可缓存与否等。 –
“指令读取可以分块完成”是另一种说法,高速缓存线通常比单个指令大吗? – Celeritas
是的,缓存行比单个指令大,否则会有什么意义呢? –