首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指令与数据缓存的使用

指令与数据缓存的使用
EN

Software Engineering用户
提问于 2012-12-11 12:10:33
回答 3查看 4.3K关注 0票数 0

假设我有一个缓存内存,其中指令和数据有不同的缓存内存(“哈佛架构”)。哪个缓存、指令或数据是最常用的?我指的是时间上的“最经常”,而不是数据量,因为在数据量方面,数据内存可能被“更多地”使用,而指令缓存可能被“更频繁地”使用,特别是取决于程序。

对于某一特定项目,是否有不同的答案( a)一般和( b) )?

EN

回答 3

Software Engineering用户

回答已采纳

发布于 2012-12-11 15:27:45

好吧,有些指令不访问数据缓存,但是不使用指令是不可能访问数据缓存的,因此根据定义,指令缓存被更频繁地使用。

如果您说的是哪一个缓存丢失较少,这将是非常特定于程序的。一个访问一个千兆字节内存的紧循环将有零指令丢失和大量数据丢失。一个完全由寄存器操作组成的大型程序将有大量指令丢失,而没有数据丢失。

票数 5
EN

Software Engineering用户

发布于 2012-12-11 15:24:01

这将是完全特定的程序。一方面,假设一个程序只做了一堆跳来跳去,这正是指令缓存的大小。零数据缓存使用,最大可能的指令缓存使用。现在想象一下,一个程序只做了一堆到处都是内存的操作。指令缓存的最少使用(假设memcpy被流水线化);数据缓存的最大可能的使用。

当然,真正的软件处于中间的某个位置。但它仍然不同的程序不同的程序。

如果最近来自“Boys”的CPU设计是任何指示,他们通常使用相同大小的L1缓存来进行数据和指令缓存;并且有一个大型的共享的L2缓存(偶尔还有一个L3缓存)。

票数 1
EN

Software Engineering用户

发布于 2012-12-11 20:23:45

这在某种程度上取决于你如何定义“最常用的”。在当今的现代多核体系结构中,缓存一致性要求数据缓存监视地址总线,并查看是否有其他内核正在修改相同的数据,如果是的话,更新它们的副本。因此,即使数据缓存所连接的核心是空闲的,也可以更新(使用)数据缓存。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/179026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档