【发布时间】:2014-04-19 03:20:33
【问题描述】:
来自here:
指令和数据有不同的访问模式,并且访问 不同的记忆区域。因此,两者具有相同的缓存 说明和数据可能并不总是有效。
因此,有两个缓存是很常见的:一个指令缓存 只存储指令,一个只存储数据的数据缓存。
知道指令和数据之间的区别很直观,但是现在我不确定在这种情况下的区别?什么构成数据并放入数据缓存,什么构成指令并放入指令缓存?
我知道 ARM 汇编。需要STR、LDR、LDMF 或STMFD 的东西会使用数据缓存吗?但从技术上讲STR、LDR、LDMF 和STMFD 都是指令,所以我这就是为什么我很困惑。 “数据”必须始终与“指令”一起存在吗? .data 部分中的数据是否被视为任何内容?
例如LDR R1, =myVar 那么LDR 会进入指令缓存而myVar 的内容会进入数据缓存吗?还是那样不行?
指令和数据有不同的访问模式 有人可以详细说明吗?
我在一篇有用的帖子上发表的这条评论突出了我的理解困难:
“这个想法是,如果一条指令已经从内存中加载,它是 可能很快会再次使用”,但唯一的方法是知道下一个 指令是阅读它。这意味着内存读取(你不能说 它已经在缓存中,因为一条新指令是红色的)。所以我 还是不明白重点?假设刚刚发生了一条 LDR 指令,那么现在 LDR 在数据缓存中。也许会发生另一条 LDR 指令, 也许不会,我们不能确定,所以我们必须真正阅读下一个 指令 - 从而破坏了缓存的目的。
【问题讨论】:
标签: assembly arm cpu-architecture cpu-cache