- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人可以解释一下通过拥有单独的指令缓存和数据缓存我们能得到什么吗?任何指向解释这一点的良好链接的指针也将不胜感激。
最佳答案
主要原因是:性能。另一个原因是功耗。
独立的 dCache 和 iCache 使得并行获取指令和数据成为可能。
指令和数据具有不同的访问模式。
写入 iCache 的情况很少见。 CPU 设计人员基于代码更改很少的假设来优化 iCache 和 CPU 架构。例如,AMD Software Optimization Guide for 10h and 12h Processors指出:
Predecoding begins as the L1 instruction cache is filled. Predecode information is generated and stored alongside the instruction cache.
Intel Nehalem CPU 具有环回缓冲区,除此之外,Sandy Bridge CPU 还具有 µop 缓存 The microarchitecture of Intel, AMD and VIA CPUs 。请注意,这些是与代码相关的功能,与数据没有直接对应的功能。它们有利于性能,而且由于英特尔“禁止”CPU 设计人员引入导致功耗过度增加的功能,因此它们可能也有利于总功耗。
大多数 CPU 都具有数据转发网络(存储到负载转发)。与代码相关的“存储加载转发”不存在,仅仅是因为代码的修改频率远低于数据。
代码表现出与数据不同的模式。
也就是说,现在大多数 CPU 都具有统一的 L2 缓存,可以保存代码和数据。其原因是,拥有单独的 L2I 和 L2D 缓存将毫无意义地消耗晶体管预算,同时无法提供任何可测量的性能增益。
(当然,拥有单独的 iCache 和 dCache 的原因并不是降低复杂性,因为如果原因是降低复杂性,那么当前的任何 CPU 设计中都不会存在任何流水线。带流水线的 CPU 比不带流水线的 CPU 更复杂。我们希望增加复杂性。事实是:下一个 CPU 设计(通常)比以前的设计更复杂。)
关于caching - 为什么需要单独的 icache 和 dcache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8707041/
这个问题已经有答案了: What does a 'Split' cache means. And how is it useful(if it is)? (1 个回答) 已关闭 2 年前。 有人可以解
部分Dcache (L1)可用作cavium octeon架构(基于mips64)上的本地内存。我想知道哪个更快;从该内存(Dcache)读取值还是从普通全局变量(.data)读取值? 最佳答案 CP
我对 arm 的缓存问题感到困惑。在这里,我映射了相同的 block 或物理内存,并在没有 O_SYNC 的情况下获得了两个不同的虚拟地址,这两个都将被缓存:(假设我只访问两者的前 4 个字节) If
下面是一个代码块,它执行记录标记为所有 L1-dcache 未命中的 10% 负责,但该 block 完全是 zmm 寄存器之间的移动。这是 perf 命令字符串: perf record -e L1
如果我执行存储到 L1 Dcache 中,Rocket Chip 内核是否会产生相应有效信号,还是仅针对加载信号?因为对于加载信号,您正在请求某些内容并得到一些响应,而对于存储,您只需要检查内存接口(
我是一名优秀的程序员,十分优秀!