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


55

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

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

它还使许多级别的生活变得复杂:建立多级缓存层次结构以将数据传送到更接近CPU的位置,这又需要芯片中的复杂同步逻辑。必须以缓存友好的方式编写程序,以避免在获取数据时产生等待周期。

如果大量的RAM直接位于CPU芯片上,则可以避免许多此类问题。它不必排他性地排列:根据其类别,可以在芯片上放置1-4 GB的空间,并允许单独安装额外的内存。

我敢肯定,英特尔,AMD等公司没有这样做是有充分理由的。这些原因是什么?芯片上没有剩余空间了吗?


29
缓存是RAM。模具上的空间和销钉非常宝贵。
copper.hat

2
@ copper.hat缓存是RAM,但是缓存大小只是已安装RAM的一小部分(通常,我们谈论的是MBytes vs Gbytes范围)。我不知道为什么不将1 GB放入CPU芯片。
小刺猬

5
通常,它针对某些指令/数据流混合进行了优化。同样,并非所有来自RAM的数据都通过CPU。
copper.hat

1
模具越简单,价格越便宜。这也意味着您可以使用不同的工艺规模和工艺方法。
Journeyman Geek

@LesserHedgehog通常,缓存命中率的大小是有限制的,因此添加更多缓存实际上并没有任何帮助。实际上,现在很多CPU确实已经嵌入了DRAM,特别是在移动/嵌入式空间中(例如,许多基于ARM的SoC)。
蓬松的

Answers:


79

英特尔的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相比,Intel的Nehalem处理器实际上减少了L2缓存的容量,从而部分地改善了延迟,从而提高了性能。*如果我们不太在意延迟,那么就没有理由将内存放在包装上,

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

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

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

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

*延迟的改善不仅是由于缓存的物理尺寸较小,而且还因为关联性降低了。由于多种原因,Nehalem中的整个缓存层次结构发生了重大变化,并非所有原因都集中在提高性能上。因此,尽管这足以作为示例,但它不是一个完整的说明。


1
简而言之,@ OleksandrR。听起来,CPU和DRAM之间似乎存在“阻抗不匹配”之类的问题,这使得两者很难耦合。
小刺猬

3
当然,SRAM仍然非常庞大-即使是微小的(与RAM相比)高速缓存也占据了现代CPU裸片面积的一半(嗯,带有集成GPU:D的CPU除外)。
罗安2015年

2
我想知道是否有一种无需主内存即可运行的方法。128MB应该足够运行简化的Linux发行版(或Windows的旧版本)。
user253751

它被称为“ GPU-on-die”,而不是“ GPU-on-package”。
AStopher

4
@cybermonkey:指令实际上是从L1缓存而不是主存储器中获取的。从主内存中获取它们太可怕了-大约60 ns的循环时间,这对于单核设计将CPU限制为16 Mhz。
MSalters 2015年

17

CPU裸片本身不包括较大内存(GB的DRAM)的主要原因主要是成本。由于制造非常小的功能部件所需的制造工艺,因此CPU裸片空间的成本明显更高。尽管我对这些细节还不了解,无法在此处给出任何明确的答案,但也可能无法在同一模具上制造两者。

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

为了进行规模比较,现代的CPU裸片可能为〜180 mm(大约是Intel Haswell裸片的大小)。我没有关于CPU DRAM裸片尺寸的准确数字,但让我们假设1GB的传统DRAM占用140mm(根据GPU DRAM尺寸计算)。对于一阶近似值,您将CPU裸片的大小大约加倍,这意味着至少要翻倍CPU的成本,并且可能在同一个裸片上仅使用1GB的DRAM。获得1GB的DRAM,我认为没有人会这样做。222

但是,将内存贴近CPU的想法并不能完全解决问题。这可能是将来内存将移动的地方,因为事实是光速是有限的,并且只能在一定距离内如此快速地进行通信。

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

  1. 将它们堆叠在CPU本身的顶部。这已经在Raspberry Pi上完成,并且是Wide I / O内存标准的一部分。存储器仍然是在单独的过程中制造的单独的管芯。但是,这样做的问题是,CPU中散发的所有热量必须先到达内存,然后才能到达散热器。这意味着它不适用于大功率处理器,以及为什么此技术的主要应用是在移动处理器/其他嵌入式应用中,而您的CPU不会消耗数十或数百瓦。

  2. 将它们真正贴在成本较低的基材上。这就是HBM的设计工作方式,它将非常大的总线制造到低成本的“插入器”芯片上,这是高端GPU内存发展的方向,因为带宽明显更高。存储器芯片和中介层都仍在与实际处理器不同的管芯上制造。


5
我希望当您尝试在一个大晶粒上塞满数十亿个晶体管时,成品率会下降-每增加一个额外的器件,故障或缺陷的可能性就会增加。如果将系统分成几个较小的部分,则在任何一个部分上出现故障的机会将大大降低,并且丢弃该故障部分的成本也较低。我想在其他所有条件相同的情况下,制造非常大的模具也将更加困难。
约翰·U

4
@JohnU很难说定价将如何扩展,因为实际的缺陷率是商业秘密。GPU的使用模具在〜440mm范围内,售价约为550美元,因此,按照模具尺寸的一阶近似定标价格似乎还不太合理。带有缺陷的Plus设备仍可以作为关闭了某些功能的低端设备出售。这是许多公司的惯例。2
helloworld922

@JohnU-在裸片上放置大量重复的模块的优点是,当确实发生缺陷时,您可以禁用发生在其中的模块,然后按照符合低成本标准的要求释放裸片(DRAM经常发生这种情况,回到80年代,当时许多具有32KB模块的机器实际上都使用64K芯片,但有故障部分被禁用)。这实际上可能意味着在将DRAM与处理器集成时,产量会提高 ...
Jules

7

有几种原因可能导致无法向CPU添加大量DRAM。

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

  2. 所有这些内存都必须进行测试。内存测试会增加测试时间。那是另一个成本增加。

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

  4. 开发可以处理特殊类型内存的过程会花费更多的时间,金钱和工作,并且出现故障的风险更高。DRAM的任何问题都会延迟CPU的发布。台式机CPU处于半导体制造的最前沿,因此延迟可能是巨大的竞争劣势。(请参阅:过去几年中AMD与Intel的比较。)

  5. DRAM需要模拟感测来进行读取以及定期刷新。我不是DRAM专家,但我怀疑它是否会与高端CPU一样快,无论它是片外还是片内。因此,您可能仍将停留在SRAM缓存中。

  6. 即使您可以克服上述问题并在CPU内存中塞入几GB的DRAM,仍然不足以运行台式机,笔记本电脑或服务器,因此无论如何您都必须拥有片外内存。


1
大多数高速缓存是通过ECC实现的,并且一些最近的英特尔处理器结合了Chipkill和高速缓存的块冗余。对于大型模具,这降低了测试要求,并显着提高了成品率。相反,对于图像传感器,由于信息不是先验信息,因此不可能进行纠错,并且当像素块无法正常工作时,我们也无法决定忽略该像素并使用备用像素。它的位置。
Oleksandr R.

没错,通过存储获得更高的收益更容易。就像我说的,这是一个极端的例子。
亚当·豪恩

3

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

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

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

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

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


这个答案的主要问题是,智能手机的SoC设计实际上确实包含RAM。那些并没有贵很多,实际上它们更便宜。
MSalters 2015年

@MSalters除非它们未集成到同一模具中。内存管芯是分开的,已经过测试并确认可以正常工作,并且仅与微处理器管芯封装在一起。
牙刷'18

2

以上几乎全部+另外一个问题:发热量。

DRAM单元本质上是泄漏电容器。此处的电介质是SiO2层本身。随着温度升高,漏电流成比例增加。这些使DRAM单元放电的速度更快,这将需要更快的刷新速率,这将增加复杂性,所需的电流,并且当然会增加更多的热量。


2

除了已经给出的答案之外,还有另外一个方面:由于生产故障而造成的浪费:

假设某种特定型号的所有CPU中有1/100发生了故障(当然,实际上更少;有1/100的计算更容易),而所有RAM中有1/100则有故障。

如果将两个组件组合在一个芯片上,则所有芯片中的1/100将具有故障的CPU,所有芯片中的1/100将具有故障的RAM。

这意味着:

  • 10000个芯片中的1个将同时具有故障的RAM和CPU
  • 99个芯片的RAM损坏
  • 99个芯片将有一个故障的CPU
  • 总共10000个零件中的199个将被浪费

生产单独的芯片,计算如下:

  • 5000个RAM中有50个有缺陷
  • 5000个CPU中有50个有故障
  • 产生的10000个零件中有100个将被浪费

请注意,一个GB的RAM通常以由八个芯片组成的存储体的形式制成,因此,如果要将RAM和CPU放在同一芯片上,则不必将两个组件组合在一起,而是将9个组件组合到一个芯片中。在上面的简单示例中,这将导致产生约865个10000个有缺陷的零件。

“ IBM Cell” CPU确实存在此问题。“ Playstation”控制台使用的芯片部分损坏;Playstation软件的编写方式不使用有缺陷的内核和SRAM。


1
出于相同的原因,AMD暂时提供了3核CPU。我认为在实践中,零件通常在封装之前在裸片级进行测试,因此您最关心的是单片CPU和内存组合。
Oleksandr R.

通过使用3dSoC克服内存壁,Darpa凭借50倍的电源效率获得了大奖,相对于Intel和高通的工程师而言,这是幻想之地,但darpa是darpa。monolithic3d.com/blog/…SoC(片上系统)最适合并行处理器,这意味着有1000ds组而不是2/16组。
com.prehensible

1

实际上有两种类型的RAM。它们是静态RAM和动态RAM。静态存储器非常快,但是成本更高。同时,与静态RAM相比,动态RAM速度较慢,但​​与静态RAM相比,其价格便宜。

缓存内存属于静态RAM。您会看到它们的大小为KB或MB。他们很快。但是成本高。


不完全正确,是的,它们速度很快,但这主要是由于数据必须传输的距离远小于DRAM中的距离。
AStopher

3
实际上,SRAM单元速度更快,因为它更简单。这是数字双稳态电路。如果不小心将其设置为模拟值0.8,它将通过移动到稳定位置1.0来修复自身。DRAM没有这样的稳定​​状态。它并没有远离中间状态。更糟糕的是,它趋向于这种状态,这就是为什么您需要额外的校正“刷新”电路的原因。
MSalters

@MSalters:SRAM单元并不比DRAM单元简单。没错,它更稳定,这使它使用起来更简单(在支持电路和时序图方面)。但是,SRAM单元每位电路的容量大约是DRAM的6倍。
Ben Voigt 2015年

1
@BenVoigt:在晶体管数量上,是的-6T vs 1T。但是DRAM有一个电容器,这是一个很奇怪的组件。SRAM只是连接在一起的晶体管。
MSalters

DRAM中的电容器也被实现为晶体管
Ben Voigt 2015年

1

除了提到的其他原因之外,许多系统还具有多个CPU内核。当存储在主DRAM中的信息与所有缓存的副本一致时,所有不缓存信息的处理器将对其具有相同的访问权限。某些架构的设计是基于以下假设:每个CPU内核将“拥有”一定范围的地址空间,即使CPU能够访问其他处理器拥有的内存,这种访问也将比访问其自身的内存慢得多。 ,但通常不会以这种方式实现x86。

如果系统的设计假设是处理器内核拥有一定的地址范围,并且代码应尽量减少对其他处理器的地址范围的使用,那么让每个处理器代码都包含大量的片上内存将是有意义的。这样的设计可能会减少处理器内核访问其自己的内存所需的时间,但可能会增加其访问另一个处理器的内存所需的时间。但是,除非系统是围绕这样的假设设计的,否则数据很可能会在处理器之间分配,而不考虑何时需要谁。即使从另一个CPU(相对于外部存储系统)访问数据所需的额外时间仅为内部访问所节省的时间的一半,

如果人们要从头开始设计一个系统以适应当今的技术,那么与需要允许所有处理器有效访问所有内存的架构相比,非统一的内存体系结构可以带来更多的“实惠”。但是,考虑到当今的软件设计,拥有一个在处理器之间共享的外部存储系统比尝试在处理器自身内部拥有大容量数据存储更容易高效。


2
如今,非统一内存架构已被使用(甚至通用)。对于在多处理器系统中使用的具有集成内存控制器的CPU,与本地连接的RAM中的数据相比,存储在另一个处理器的物理内存中的数据距离更远,并且具有更高的延迟。实际上,在这些系统中发生的事情是处理器配备了附加级别的缓存,并且一致性流量由连接结构部分处理。POWER7和POWER8属于这种类型。
Oleksandr R.

1

尽管前面的所有答案都正确地指出了为什么很难向CPU添加更多的内存,但是,现代CPU中确实有很多内存确实是正确的。

在实时操作中,当确定性延迟很重要时,将片上高速缓存用作代码和/或数据的可寻址存储器并不是闻所未闻。优点是快速和恒定的访问时间,缺点是片上存储器非常有限。


1

仅当计算机中的所有内存都包含在CPU中时,才可以避免您在原始问题中描述的问题。通过主板上的插槽添加到计算机的任何其他内存都将受到您所描述的相同延迟,并且将需要在CPU / RAM与板载RAM之间进行封送处理和逻辑控制设备。

RAM很便宜,通常由用户在升级CPU之间扩展一倍甚至两倍。

还要记住,即使RAM以CPU时钟速度运行,典型的“ Fetch”调用也将导致CPU出现许多空闲滴答声。

机器上传统的内存组织是金字塔式的,其中CPU寄存器位于顶部,然后依次缓存,RAM和磁盘。通常,性能良好的计算机具有不错的时钟速度,合理数量的缓存,大量RAM和高速硬盘(或阵列)的组合。近年来,在大多数PC和高RPM光盘中,光盘性能通常可带来最佳的性能提升,带有高速缓存和固态光盘的光盘可显着提高性能。

是的,一台带有所有RAM的计算机在现代应用中会表现良好,但是一台带有部分RAM的计算机在运行标准操作系统的计算机上可能无法提供您认为会提高的性能。

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.