gpt4 book ai didi

caching - 为什么需要单独的 icache 和 dcache

转载 作者:行者123 更新时间:2023-12-03 05:00:20 26 4
gpt4 key购买 nike

有人可以解释一下通过拥有单独的指令缓存和数据缓存我们能得到什么吗?任何指向解释这一点的良好链接的指针也将不胜感激。

最佳答案

主要原因是:性能。另一个原因是功耗。

独立的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com