为什么在过去20年中L1缓存的大小没有增加太多?


35

英特尔的i486有8 KB的L1缓存。在英特尔的Nehalem具有32 KB L1指令高速缓存,每个核心32 KB L1数据高速缓存。

L1缓存的数量没有以时钟速率增加的速率增加。

为什么不?


您正在将苹果与橙子进行比较。时钟速率已提高,但与更多缓存的需求无关。仅仅因为您可以更快地完成某件事,并不意味着您会从更大的存储桶中受益。
Keltari

过多的缓存和管理开销可能会降低系统速度。他们找到了最有效的地方,并在那里保留了下来。
Fiasco Labs

Answers:


17

Wikipedia文本的30K不能解释为什么缓存太大而不是最佳选择。当缓存太大时,在缓存中找到项目的延迟(缓存未命中的因素)开始接近在主存储器中查找项目的延迟。我不知道CPU设计人员的目标比例是多少,但是我认为这类似于80-20准则:您希望80%的时间在缓存中找到最常用的数据,而其他20种您必须去主存储器找到它的时间百分比。(或任何CPU设计人员预期的比例。)

编辑:我敢肯定它远不及80%/ 20%,所以用X和1-X代替。:)


6
“当缓存太大时,在缓存中找到某项的延迟(缓存未命中的因素)开始接近在主存储器中查找该项的延迟。” 你确定吗?例如,将已安装的RAM数量增加一倍肯定不会增加其延迟,为什么对高速缓存来说这是正确的?而且,如果这是一个问题,那么为什么L2缓存会随着新CPU的增长而扩大?我不是专家,我真的很想知道:)
sYnfo

2
我已经准备了一个长而冗长的软件缓存描述,并衡量您的缓存何时已过时并应转储/重建,但是后来我决定最好承认我不是硬件设计师。:)无论哪种情况,我都怀疑答案可以用收益递减法来总结。即更多并不总是更好。
JMD

3
从我长期从事低级硬件的历史(实际上不是设计人员)开始,我会说延迟似乎与高速缓存关联的方式有关,而与大小无关。我的猜测是,事实证明,进入缓存的额外晶体管在其他方面对整体性能更有效。
Brian Knoblauch

1
@JMD我仍然会对该描述感兴趣;)尽管评论可能并不是对此的最佳选择,但确实如此。@Brian因此,如果我理解正确的话,他们决定在L1缓存中放置更少的晶体管,同时在L2中放置更多的晶体管,这要慢得多吗?请不要冒犯,我只是好奇:)
sYnfo

10

一个因素是L1提取在TLB转换完成之前开始,以减少等待时间。通过足够小的缓存和足够高的方式,虚拟地址和物理地址之间的缓存索引位将相同。这可能会降低通过虚拟索引的,带有物理标签的缓存来维护内存一致性的成本。


1
最有趣的答案:)
GameDeveloper 2014年

1
我相信这是原因,但让我给出数字。x86体系结构上的页面大小为4096字节。高速缓存要选择在页面转换完成之前要在其中查找高速缓存行条目(64字节)的高速缓存存储区。必须在存储桶中的太多条目之间做出决定会很昂贵,因此每个存储桶中只有8个条目。结果,在过去的十年中,所有昂贵的x86 cpus的L1数据高速缓存中都有正好32768字节(512个高速缓存行)。
b_jonas

由于很难增加,因此cpus添加了一个中间级别的缓存,因此我们现在拥有单独的L2和L3缓存。同样,L1代码缓存和L1数据缓存是分开的,因为CPU知道它是访问代码还是数据。
b_jonas

8

缓存大小受许多因素影响:

  1. 电信号的速度(如果不是光速,应该是同一数量级):

    • 一微秒内达到300米。
    • 一纳秒内30厘米。
  2. 经济成本(处于不同缓存级别的电路可能不同,某些缓存大小可能不值得)

    • 高速缓存的大小加倍不会使性能加倍(即使物理允许该大小起作用),而小尺寸的加倍则不会带来两倍的性能,而大尺寸的加倍缓存值几乎不会带来额外的性能。
    • 在Wikipedia上,您可以找到一张图表,例如,显示不值得的做法是使高速缓存大于1MB(实际上存在较大的高速缓存,但是您必须计数那些是多处理器内核)。
    • 对于L1缓存,应该有一些其他的图表(供应商未显示),可以方便地将64 Kb作为大小。

如果L1高速缓存的大小在64kb之后没有变化,那是因为它不再值得了。还请注意,现在对缓存有了更大的“文化”,许多程序员编写了“缓存友好”代码和/或使用prefetech指令来减少延迟。

我曾经尝试创建一个简单的程序来访问数组(数兆字节)中的随机位置:该程序几乎冻结了计算机,因为对于每次随机读取,整个页面都从RAM移到了缓存中,因为这样做通常非常简单程序耗尽了所有带宽,却为OS留下了很少的资源。


6

我认为可以简单地总结一下,说缓存越大,访问速度就越慢。因此,较大的高速缓存根本无济于事,因为高速缓存旨在减少总线到RAM的慢速通信。

由于处理器的速度一直在迅速提高,因此相同大小的高速缓存必须执行得越来越快才能跟上它的步伐。因此,缓存可能会更好(就速度而言),而不是存储方面。

(我是一个软件专家,希望这不会错)


3

一级缓存

1级缓存或主缓存位于CPU上,用于临时存储按32字节块组织的指令和数据。主缓存是最快的存储形式。因为它是内置于具有零等待状态(延时)的芯片 接口到处理器的执行单元,它在尺寸上受到限制

SRAM每位使用两个晶体管,只要电路通电,就可以在没有外部帮助的情况下保存数据。这与动态RAM(DRAM)相反,后者必须每秒刷新多次才能保存其数据内容。

英特尔的P55 MMX处理器于1997年初推出,因其1级缓存的大小增加到32KB而引人注目。当年晚些时候推出的AMD K6和Cyrix M2芯片通过提供64KB的1级缓存进一步提高了性能。尽管各种多核处理器可能会不同地使用它,但是64Kb仍然是标准的L1缓存大小。

编辑:请注意,这个答案是从2009年开始的,而CPU在过去10年中已发生了巨大的发展。如果您到达此职位,请不要在这里认真对待我们所有的答案。


典型的SRAM单元由六个MOSFET组成。SRAM中的每一位都存储在四个晶体管(M1,M2,M3,M4)上,这两个晶体管形成两个交叉耦合的反相器。来源 第二来源
lukecampbell

这仅是对情况的描述,不解释任何原因。
Eonil

@Eonil-如果愿意,我们无法提供“为什么”答案。但是,降低绩效回报是一个可行的合理解释。当这个问题在大约十年前提出时,要增加大小而不增加性能影响就更加昂贵了。该答案试图至少回答所提出的预期问题。
Ramhound

-4

实际上,L1缓存大小是现代计算机中最大的速度瓶颈。令人讨厌的L1高速缓存大小可能是价格的最佳选择,但不是性能的最佳选择。可以在GHz频率下访问L1高速缓存,这与处理器操作相同,而RAM访问速度要慢400倍。它在当前的二维设计中既昂贵又难以实施,但是,在技术上可行,并且第一家成功实现此目标的公司将使计算机的运行速度提高100倍,并且仍能保持凉爽运行,这将在许多方面产生重大创新领域,目前只能通过昂贵且难以编程的ASIC / FPGA配置进行访问。其中一些问题与数十年来的专有/ IP问题和公司贪婪有关,那里只有微不足道的,无效率的工程师干部,他们是唯一能够接触内部工作的干部,而且他们大多被下达命令,以挤出成本效益高昂,模糊的保护主义废话。过度私有化的研究总是会导致技术停滞或节流(正如我们在大型制造商的航空航天和汽车业中所看到的那样,并且不久将成为制药业)。有益于发明人和公众(而不是公司老板和股东)的开源,更明智的专利和商业秘密法规将在这里大有帮助。进行更大的L1高速缓存应该毫不费力地进行开发,并且应该并且可能已经在几十年前进行了开发。如果有的话,我们将在使用它们的计算机和许多科学领域取得更大的进步。而大多数人则被下达命令,以挤出成本效益高昂,模糊的保护主义废话。过度私有化的研究总是会导致技术停滞或节流(正如我们在大型制造商的航空航天和汽车业中所看到的那样,并且不久将成为制药业)。有益于发明人和公众(而不是公司老板和股东)的开源,更明智的专利和商业秘密法规将在这里大有帮助。进行更大的L1高速缓存应该毫不费力地进行开发,并且应该并且可能已经在几十年前进行了开发。如果有的话,我们将在使用它们的计算机和许多科学领域取得更大的进步。而大多数人则被下达命令,以挤出成本效益高昂,模糊的保护主义废话。过度私有化的研究总是会导致技术停滞或节流(正如我们在大型制造商的航空航天和汽车业中所看到的那样,并且不久将成为制药业)。有益于发明人和公众(而不是公司老板和股东)的开源,更明智的专利和商业秘密法规将在这里大有帮助。进行更大的L1高速缓存应该毫不费力地进行开发,并且应该并且可能已经在几十年前进行了开发。如果有的话,我们将在使用它们的计算机和许多科学领域取得更大的进步。过度私有化的研究总是会导致技术停滞或节流(正如我们在大型制造商的航空航天和汽车业中所看到的那样,并且不久将成为制药业)。有益于发明人和公众(而不是公司老板和股东)的开源,更明智的专利和商业秘密法规将在这里大有帮助。进行更大的L1高速缓存应该毫不费力地进行开发,并且应该并且可能已经在几十年前进行了开发。如果有的话,我们将在使用它们的计算机和许多科学领域取得更大的进步。过度私有化的研究总是会导致技术停滞或节流(正如我们在大型制造商的航空航天和汽车业中所看到的那样,并且不久将成为制药业)。有益于发明人和公众(而不是公司老板和股东)的开源,更明智的专利和商业秘密法规将在这里大有帮助。进行更大的L1高速缓存应该毫不费力地进行开发,并且应该并且可能已经在几十年前进行了开发。如果有的话,我们将在使用它们的计算机和许多科学领域取得更大的进步。进行更大的L1高速缓存应该毫不费力地进行开发,并且应该并且可能已经在几十年前进行了开发。如果有的话,我们将在使用它们的计算机和许多科学领域取得更大的进步。进行更大的L1高速缓存应该毫不费力地进行开发,并且应该并且可能已经在几十年前进行了开发。如果有的话,我们将在使用它们的计算机和许多科学领域取得更大的进步。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.