如何解决访问同一缓存行中的内存位置所需的时间
将下图中的大框视为缓存,将块视为缓存内的单个缓存线。
CPU 将数据(数组 A 的前 4 个元素)从 RAM 中提取到缓存块中。
现在,我的问题是,在所有 4 个内存位置(A[0]
、A[1]
、A[2]
和 {{1} }) 在缓存块中还是大致相同?
PS:我期待一个理想情况的答案,即运行时对任何内存位置执行任何读/写操作不受用户进程或应用程序上的操作系统抖动的影响。
解决方法
由于缓存中的行已经很热,访问缓存中任何对齐字的时间是恒定的。处理地址的行内偏移量部分的硬件不必迭代到正确的位置或任何东西,它只是将这些字节多路复用到输出。
如果线路在缓存中不已经很热,那么这取决于缓存的设计。如果 CPU 没有在一条宽总线上一次传输整条线路,那么线路中的一个/某些字将先于其他字到达。支持提前重启的缓存可以让加载在所需词到达时立即完成。
关键字优先总线和内存允许那个字成为请求未命中时传输的第一个字。否则它们会以某种固定的顺序到达,并且该行最后一个字的缓存未命中可能需要额外的几个周期。
相关:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。