ele*_*n81 45 cpu progress architecture cpu-cache
在英特尔的i486有8 KB的L1缓存。在英特尔的Nehalem具有32 KB L1指令高速缓存,每个核心32 KB L1数据高速缓存。
L1 缓存的数量几乎没有以时钟频率增加的速度增加。
为什么不?
JMD*_*JMD 19
30K 的 Wikipedia 文本并没有解释为什么太大的缓存不是最佳的原因。当缓存变得太大时,在缓存中查找项目的延迟(考虑缓存未命中)开始接近在主内存中查找项目的延迟。我不知道 CPU 设计人员的目标是什么比例,但我认为这类似于 80-20 准则:您希望 80% 的时间在缓存中找到最常见的数据,而其他 20 % 的时间你必须去主内存找到它。(或任何 CPU 设计者想要的比例。)
编辑:我确定它远不及 80%/20%,所以替换 X 和 1-X。:)
小智 12
一个因素是 L1 提取在 TLB 转换完成之前开始,以减少延迟。使用足够小的缓存和足够高的方式,缓存的索引位在虚拟地址和物理地址之间将相同。这可能会降低使用虚拟索引、物理标记的缓存来保持内存一致性的成本。
Cof*_*per 10
缓存大小受许多因素影响:
电信号的速度(如果不是光速,应该是相同数量级的):
经济成本(不同缓存级别的电路可能不同,某些缓存大小可能不值得)
如果 L1 缓存大小在 64kb 之后没有改变,那是因为它不再有价值。另请注意,现在关于缓存的“文化”更加浓厚,许多程序员编写“缓存友好”代码和/或使用 prefetech 指令来减少延迟。
我曾经尝试创建一个简单的程序,该程序访问数组(几个兆字节)中的随机位置:该程序几乎冻结了计算机,因为对于每次随机读取,整个页面都从 RAM 移动到缓存,并且因为经常这样做,所以很简单程序耗尽了所有带宽,为操作系统留下了很少的资源。
我相信可以简单地总结一下,缓存越大,访问速度就越慢。因此,更大的缓存根本无济于事,因为缓存旨在减少与 RAM 的慢速总线通信。
由于处理器的速度一直在快速增长,因此相同大小的缓存必须执行得越来越快才能跟上它。因此缓存可能明显更好(在速度方面),但在存储方面则不然。
(我是一名软件人员,所以希望这不是大错特错)
从L1 缓存:
一级缓存或主缓存位于 CPU 上,用于临时存储以 32 字节块为单位的指令和数据。主缓存是最快的存储形式。由于它内置于芯片中,并具有 与处理器执行单元的零等待状态(延迟)接口,因此它的大小受到限制。
SRAM 每位使用两个晶体管,只要电路有电源,就可以在没有外部帮助的情况下保存数据。这与动态 RAM (DRAM) 形成对比,动态 RAM (DRAM) 必须每秒刷新多次才能保存其数据内容。
英特尔于 1997 年初推出的 P55 MMX 处理器因其一级缓存的大小增加到 32KB 而引人注目。当年晚些时候推出的 AMD K6 和 Cyrix M2 芯片通过提供 64KB 的一级缓存进一步提高了赌注。64Kb 仍然是标准的 L1 缓存大小,尽管各种多核处理器可能会以不同的方式使用它。
编辑:请注意,这个答案是从 2009 年开始的,CPU 在过去 10 年中发生了巨大的发展。如果您已经到了这篇文章,请不要太认真地对待我们在这里的所有答案。
归档时间: |
|
查看次数: |
31740 次 |
最近记录: |