39 cpu memory-management computer-architecture smp cpu-cache
L1、L2 和 L3 缓存在计算机中的确切位置?
我知道,我们使用缓存通过从缓存而不是主内存中选择数据和指令来提高性能。
以下是我的问题
L2 缓存究竟位于何处?
L3 缓存究竟位于何处?在主板上?
我认为最新的 SMP 处理器使用 3 级缓存,所以我想了解缓存级层次结构及其架构。
Hen*_*nes 56
让我们从这个开始:
我认为最新的 SMP 处理器使用 3 级缓存,所以我想了解缓存级层次结构及其架构。
要了解缓存,您需要了解以下几点:
CPU 有寄存器。可以直接使用其中的值。没有什么比这更快了。
但是我们不能向芯片添加无限寄存器。这些东西占用空间。如果我们把芯片做得更大,它就会变得更贵。部分原因是我们需要更大的芯片(更多的硅),但也因为有问题的芯片数量增加了。
(想象一个 500 cm 2的假想晶片。我从中切下 10 个芯片,每个芯片的大小为50cm 2。其中一个坏了。我丢弃它,剩下 9 个工作芯片。现在取同一个晶片,然后我切下从中取出 100 个芯片,每一个小十倍。其中一个如果坏了。我丢弃坏掉的芯片,剩下 99 个工作芯片。这是我本来会损失的一小部分。为了补偿较大的芯片芯片我需要问更高的价格。不仅仅是额外硅的价格)
这就是我们想要小巧、实惠的芯片的原因之一。
然而,缓存离 CPU 越近,访问速度就越快。
这也很容易解释;电信号以接近光速传播。这很快,但仍然是一个有限的速度。现代 CPU 使用 GHz 时钟。那也很快。如果我使用 4 GHz CPU,那么每个时钟滴答的电信号可以传播大约 7.5 厘米。即直线 7.5 厘米。(芯片不是直接连接)。实际上,您需要的距离远小于 7.5 厘米,因为这不允许芯片有任何时间呈现请求的数据和信号传回。
最重要的是,我们希望缓存在物理上尽可能接近。这意味着大筹码。
这两者需要平衡(性能与成本)。
L1、L2 和 L3 缓存究竟位于计算机中的什么位置?
假设只有 PC 风格的硬件(大型机完全不同,包括性能与成本的平衡);
IBM XT
原版 4.77Mhz 之一:无缓存。CPU 直接访问内存。从内存中读取将遵循以下模式:
80286 (1982)
仍然没有缓存。内存访问对于低速版本(6Mhz)来说不是一个大问题,但更快的模型运行到 20Mhz 并且在访问内存时经常需要延迟。
然后你会得到这样的场景:
这是等待内存的额外步骤。在一个可以轻松完成 12 个步骤的现代系统上,这就是我们拥有 cache 的原因。
80386 : (1985)
CPU 变得更快了。每个时钟,并以更高的时钟速度运行。
RAM 变得更快,但不如 CPU 快。
因此需要更多的等待状态。有些主板解决此通过增加高速缓存(这将是1日二级缓存),主板上。
现在从内存读取开始检查数据是否已经在缓存中。如果是,则从更快的缓存中读取。如果与 80286 描述的程序不同
80486 : (1989)
这是这一代的第一个 CPU,它在 CPU 上有一些缓存。
它是一个 8KB 统一缓存,这意味着它用于数据和指令。
大约在这个时候它会共同投入的快速静态内存256KB主板上的2次级缓存。因此1日在CPU上级高速缓存,2次在主板上级缓存。
80586 (1993)
586 或 Pentium-1 使用拆分级别 1 高速缓存。数据和指令各 8 KB。缓存被拆分,以便数据和指令缓存可以针对它们的特定用途单独调整。你还有一个小但速度非常快1日在CPU附近的高速缓存,以及更大,但速度慢2次在主板上的高速缓存。(在更大的物理距离)。
在同一个奔腾 1 区域,英特尔生产了Pentium Pro ('80686')。根据型号,该芯片具有 256Kb、512KB 或 1MB 的板载缓存。它也贵得多,这很容易用下图解释。

请注意,缓存使用了芯片中的一半空间。这是针对 256KB 模型的。更多的缓存在技术上是可能的,一些模型使用 512KB 和 1MB 缓存生产。这些产品的市场价格很高。
另请注意,该芯片包含两个管芯。一个带有实际的 CPU 和第一个缓存,第二个带有 256KB 的第二个缓存。
奔腾2
奔腾2是奔腾pro核心。出于经济原因,CPU 中没有第二个缓存。相反,什么是销售的AA CPU我们使用独立的芯片在PCB的CPU(和1级ST缓存)和2次高速缓存。
随着技术的进步,我们开始制造具有更小的组件的芯片,将第二个缓存放回实际的 CPU 芯片在经济上是可能的。然而,还是有分裂。非常快1日缓存依偎到CPU。与一个1 ST每个CPU核心高速缓存和更大但小于快2次缓存旁边的核心。

Pentium-3
Pentium-4
这对于 pentium-3 或 pentium-4 不会改变。
大约在这个时候,我们已经达到了 CPU 时钟速度的实际限制。8086 或 80286 不需要冷却。运行在 3.0GHz 的奔腾 4 会产生如此多的热量并消耗如此多的功率,因此在主板上放置两个独立的 CPU 而不是一个快速的 CPU 变得更加实用。
(两个 2.0 GHz CPU 比一个相同的 3.0 GHz CPU 使用更少的功率,但可以做更多的工作)。
这可以通过三种方式解决:
1) 是一个持续的过程。它不是新的,它不会停止。
2) 很早就完成了(例如使用双 Pentium-1 主板和 NX 芯片组)。到目前为止,这是构建速度更快的 PC 的唯一选择。
3) 需要将多个“cpu 核心”构建到单个芯片中的 CPU。(然后我们称该 CPU 为双核 CPU 以增加混淆。谢谢营销 :) )
如今,我们只是将 CPU 称为“核心”以避免混淆。
你现在可以得到类似 pentium-D (duo) 的芯片,它基本上是同一芯片上的两个 pentium-4 内核。

还记得老奔腾Pro的图片吗?巨大的缓存大小?
看到这张图片中的两个大区域了吗?
事实证明,我们可以在两个 CPU 内核之间共享第二个缓存。速度会有所回落,但512KiB共享2次缓存往往快于增加了两个独立的2级一级高速缓存的一半大小。
这对你的问题很重要。
这意味着如果您从一个 CPU 内核读取某些内容,然后尝试从共享相同缓存的另一个内核读取它,您将获得缓存命中。不需要访问内存。
由于程序确实会在 CPU 之间迁移,根据负载、内核数量和调度程序,您可以通过将使用相同数据的程序固定到同一 CPU(缓存命中 L1 和更低)或同一 CPU 上来获得额外的性能共享 L2 缓存(因此在 L1 上未命中,但在 L2 缓存读取上命中)。
因此,在以后的模型中,您将看到共享的 2 级缓存。

如果您正在为现代 CPU 编程,那么您有两种选择:
我意识到我还没有提到 L3 缓存,但它们并没有什么不同。L3 缓存的工作方式相同。比 L2 大,比 L2 慢。它通常在内核之间共享。如果它存在,它比 L2 缓存大很多(否则没有意义)并且它通常与所有内核共享。

小智 5
缓存几乎总是在芯片上以实现最快的访问。这是一个很好的图表,显示了一个四核 Intel CPU 芯片,其中突出显示了 L3 缓存。当您查看这样的 CPU 芯片图片时,大的统一区域通常是用作缓存的片上存储器组。

| 归档时间: |
|
| 查看次数: |
48598 次 |
| 最近记录: |