为什么RAM没有放在CPU芯片上?

电器工程 记忆 中央处理器
2022-01-09 01:32:31

与包括内存 (RAM) 在内的所有外部事物相比,现代 CPU 的速度非常快。

这是可以理解的,因为 CPU 时钟频率已经达到了一个电信号从 CPU 通过总线到 RAM 芯片并返回的点,需要几个时钟周期。

它还在许多层面上使生活复杂化:构建多级缓存层次结构以将数据传递到更靠近 CPU 的位置,这反过来又需要芯片中的复杂同步逻辑。程序必须以缓存友好的方式编写,以避免在获取数据时出现等待周期。

如果大量 RAM 直接位于 CPU 芯片上,则可以避免许多此类问题。它不需要排他性的安排:可能会在芯片上放置 1-4 GB,具体取决于其类别,并允许单独安装额外的内存。

我确信英特尔、AMD 等公司不这样做是有充分理由的。这些原因是什么?是不是芯片上没有多余的空间了?

4个回答

Intel 的 Haswell(或者至少是那些包含 Iris Pro 5200 GPU 的产品)和 IBM 的 POWER7 和 POWER8 都包含嵌入式 DRAM,即“eDRAM”。

直到最近才导致 eDRAM 不常见的一个重要问题是 DRAM 制造工艺与逻辑工艺本质上不兼容,因此当需要 eDRAM 时必须包括额外的步骤(这会增加成本并降低产量)。因此,必须有一个令人信服的理由想要合并它以抵消这种经济劣势。或者,DRAM 可以放置在单独的芯片上,该芯片独立于 CPU 制造,但随后集成到与 CPU 相同的封装中。这提供了本地化的大部分好处,而没有以真正集成的方式制造两者的困难。

另一个问题是 DRAM 不像 SRAM,它不会在通电时无限期地存储其内容,读取它也会破坏存储的数据,之后必须将其写回。因此,它必须在每次读取后定期刷新。而且,由于 DRAM 单元是基于电容器的,因此对其进行充分充电或放电,以便在下一次刷新需要一些有限的时间之前,泄漏不会破坏其值。SRAM 不需要这个充电时间,它只是一个锁存器;因此,它可以以与 CPU 相同的频率运行,而 DRAM 被限制在 1 GHz 左右,同时保持合理的功耗。这导致 DRAM 具有比 SRAM 更高的固有延迟,这使得它不值得用于除最大缓存之外的所有缓存,在这些缓存中降低的未命中率将得到回报。

此外,就延迟而言,很大一部分困难是信号必须传输的物理距离。在 3 GHz CPU 的时钟周期内,光只能传播 10 厘米。当然,由于需要缓冲和扇出,信号不会以直线穿过芯片,也不会以接近光速的速度传播,这会导致传播延迟。因此,为了保持 1 个时钟周期的延迟,内存与 CPU 之间的最大距离最多为几厘米,这限制了可用区域中可以容纳的内存量。与 Penryn 相比,英特尔的 Nehalem 处理器实际上降低了 L2 缓存的容量,部分原因是为了改善其延迟,从而带来更高的性能。* 如果我们不太关心延迟,那么就没有理由将内存放在封装上,

还应该注意的是,大多数工作负载的缓存命中率非常高:在几乎所有实际情况下都远高于 90%,甚至超过 99% 的情况也不少见。因此,在芯片上包含更大内存的好处本质上仅限于减少这百分之几的未命中的影响。用于企业服务器市场的处理器(例如 POWER)通常具有巨大的缓存,并且可以有利地包括 eDRAM,因为它对于容纳许多企业工作负载的大型工作集很有用。Haswell 有它来支持 GPU,因为纹理很大并且无法容纳在缓存中。这些是当今 eDRAM 的用例,而不是典型的高速缓存层次结构很好地服务于典型的桌面或 HPC 工作负载。

为了解决评论中提出的一些问题:

这些 eDRAM 高速缓存不能用于代替主存储器,因为它们被设计为 L4 受害者高速缓存。这意味着它们是易失的并且是有效的内容可寻址的,因此存储在其中的数据不会被视为驻留在任何特定位置,并且可能随时被丢弃。这些属性很难与 RAM 直接映射和持久化的要求相协调,但更改它们会使缓存无法达到预期目的。当然可以嵌入更传统设计的存储器,就像在微控制器中所做的那样,但这对于具有大存储器的系统是不合理的,因为低延迟在主存储器中不如在高速缓存中有益,因此扩大或者添加缓存是一个更有价值的提议。

至于具有千兆字节量级容量的超大缓存的可能性,缓存只需要最多为应用程序工作集的大小。HPC 应用程序可以处理 TB 数据集,但它们具有良好的时空局部性,因此它们的工作集通常不是很大。具有大型工作集的应用程序例如数据库和 ERP 软件,但针对此类工作负载优化的处理器市场有限。除非软件真的需要它,否则添加更多缓存会带来非常迅速的收益递减。最近我们看到处理器获得了预取指令,因此可以更有效地使用缓存:可以使用这些指令来避免由于内存访问模式的不可预测性而不是工作集的绝对大小而导致的未命中,

*延迟的改善不仅是由于缓存的物理尺寸更小,还因为关联性降低了。由于几个不同的原因,Nehalem 中的整个缓存层次结构发生了重大变化,并非所有这些都专注于提高性能。因此,虽然这足以作为示例,但它并不是一个完整的帐户。

CPU 芯片本身不包含更大内存(GB 的 DRAM)的主要原因主要与成本有关。由于制造非常小的特征所需的制造过程,CPU 裸片空间要昂贵得多。也可能无法在同一个模具上制造这两个,尽管我对细节的了解不够,无法在这里给出任何明确的答案。

让我们评估一下将大量 DRAM 直接放在 CPU 芯片上的可行性。

为了比较比例,现代 CPU 芯片可能约为 180 毫米2(大约大小的英特尔 Haswell 模具)。我没有任何关于 CPU DRAM 裸片尺寸的准确数据,但我们假设 1GB 的传统 DRAM 需要 140mm2(根据 GPU DRAM 大小计算)。一阶近似值,您大约将 CPU 芯片尺寸翻了一番,这意味着 CPU 的成本至少翻了一番,而且可能更多的是同一芯片上的 1GB DRAM ......我不花几百美元只是为了获得 1GB 的 DRAM,我认为没有人会。

然而,将内存贴近 CPU 的想法并非完全失败。这很可能是未来记忆将移动的地方,因为事实是光速是有限的,并且只能在一定距离内以如此快的速度进行通信。

将内存移近 CPU 的现实技术(请注意,这些技术也与传统技术有所权衡):

  1. 将它们堆叠在 CPU 本身的顶部。这已经在 Raspberry Pi 上完成,并且是 Wide I/O 内存标准的一部分。内存仍然是在单独工艺上制造的单独裸片。但是,这样做的问题是 CPU 中散发的任何热量在到达散热器之前必须通过内存。这意味着它不适用于高功率处理器,以及为什么这项技术的主要应用是在移动处理器/其他嵌入式应用中,您的 CPU 不会消耗几十或几百瓦。

  2. 将它们贴在成本较低的基材上。这就是 HBM 的设计工作方式,将非常大的总线制造到成本较低的“中介层”芯片上,并且是高端 GPU 内存的发展方向,因为带宽要高得多。内存芯片和中介层仍然是在与实际处理器不同的裸片上制造的。

向 CPU 添加大量 DRAM 可能不可行的原因有很多。

  1. 可能没有为 DRAM 设置工艺和晶圆厂。DRAM 需要特殊的电路元件,需要额外的制造步骤来生产。这增加了制造成本。

  2. 所有这些记忆都必须经过测试。内存测试会增加您的测试时间。这是另一个成本增加。

  3. 扩大芯片本身就是成本增加,因为这意味着每个晶圆的芯片更少。它还会影响良率——一个缺陷会占用大部分晶圆。举一个极端的例子,看看相机中全画幅 (35mm) 图像传感器的成本。

  4. 开发一个可以处理特殊类型记忆的流程需要更多的时间、金钱和工作,并且失败的风险更高。DRAM 的任何问题都会延迟 CPU 的释放。台式机 CPU 处于半导体制造的最前沿,因此延迟可能是一个巨大的竞争劣势。(参见:过去几年 AMD 与英特尔的对比。)

  5. DRAM 需要用于读取的模拟感应以及定期刷新。我不是 DRAM 专家,但我怀疑它是否能像高端 CPU 一样快,无论它是片外还是片上。所以你可能仍然会被 SRAM 缓存所困扰。

  6. 即使您可以克服上述问题并将几千兆字节的 DRAM 塞进 CPU 芯片,它仍然不足以运行台式 PC、笔记本电脑或服务器,因此无论如何您都必须拥有片外内存.

除了其他答案之外,关于这样的系统还有更多可以说的。将内存移动到主芯片将包括许多其他工程问题。您必须重新路由总线,在主处理器中构建一个 DMA 控制器,重组 IRQ 总线,并确定如何消除您将在集中区域散发的所有额外热量。这意味着主板制造商也必须参与支持如此重大的变化。虽然低端系统可能会从这种变化中受益,但高端系统可能需要大量冷却。例如,我怀疑普通笔记本电脑能否处理这样的芯片。

这样的芯片会贵得多,尽管主主板的价格会下降(尽管可能不会明显)。如果您已经看过 DMA 控制器的封装以及 RAM 的封装,您将很难相信所有这些逻辑都可以被压入一个不会太大的芯片中。还要记住,CPU 是从特定尺寸的大晶片上切割下来的。这意味着制造商每个晶圆的处理器数量也会少得多,这也会增加总体成本。

请记住,我们不是在谈论整个系统的瓦数使用量,这会减少,而是在单个区域会有更多的瓦数(以及热量)集中,这可能会增加失败。

最后,这里还有另一个缺点,那就是提供定制系统的能力。目前,制造商可以根据客户的喜好选择推出具有相同处理器但内存量不同的系统,或不同处理器但内存量相同的系统。为了提供多种不同的配置,他们必须制造不同的模具,每个模具都在不同的装配线上。

AMD 正在积极使用实际以这种方式工作的技术,其中处理器芯片的每个部分都是一个离散的逻​​辑单元,可以换出不同的配置。将来,如果这样的设计可行,我们很可能会将提供片内内存的 CPU 视为昂贵的模块升级,或许会换出一些处理能力作为回报,或进行其他调整。例如,有一天我们可能会在没有内置内存的 256 个内核或具有内置内存的 128 个内核之间进行选择,或者甚至可以选择其他配置,如部分 GPU、部分 CPU、部分 RAM。