Computer Architectrure: Quantitative Approch 第二章Memory Hierarchy Design第二节

Memory Technology and Optimizations

使用 SRAM 可以满足最大限度地减少对高速缓存的访问时间的需求。 但是,当发生缓存未命中时,我们需要尽快将数据从主内存中移出,这需要高带宽内存。 这种高内存带宽可以通过将构成主内存的许多 DRAM 芯片组织到多个内存库中并通过使内存总线更宽,或同时进行两者来实现。

为了让内存系统跟上现代处理器的带宽需求,内存创新开始发生在 DRAM 芯片内部。 本节介绍内存芯片内部的技术以及那些创新的内部组织。 在描述技术和选项之前,我们需要介绍一些术语。

随着突发传输存储器的引入,现在广泛用于闪存和 DRAM 中,使用两种度量来引用存储器延迟——访问时间和循环时间。 访问时间是请求读取和所需字到达之间的时间,循环时间是不相关的内存请求之间的最短时间。
自 1975 年以来,几乎所有计算机都将 DRAM 用作主存储器,将 SRAM 用作缓存,并将一到三层与 CPU 集成到处理器芯片上。 PMD 必须平衡功率和性能,并且因为它们的存储需求更小,所以 PMD 使用闪存而不是磁盘驱动器,台式计算机也越来越多地遵循这一决定。

SRAM Technology

SRAM 的第一个字母代表静态。 DRAM 中电路的动态特性要求数据在读取后写回——因此存在访问时间和循环时间之间的差异以及刷新的需要。 SRAM 不需要刷新,因此访问时间非常接近周期时间。 SRAM 通常每位使用六个晶体管,以防止信息在读取时受到干扰。 SRAM 只需要极少的功率即可在待机模式下保持充电.

在早期,大多数台式机和服务器系统使用 SRAM 芯片作为其一级、二级或三级缓存。 今天,所有三级缓存都集成在处理器芯片上。 在高端服务器芯片中,可能有多达 24 个内核和高达 60 MiB 的缓存; 此类系统通常为每个处理器芯片配置 128–256 GiB 的 DRAM。 大型三级片上高速缓存的访问时间通常是二级高速缓存的 2 到 8 倍。 即便如此,L3 访问时间通常至少比 DRAM 访问快五倍。

在片上,高速缓存 SRAM 通常以与高速缓存块大小相匹配的宽度组织,标签与每个块并行存储。 这允许在单个周期中读出或写入整个块。 在将未命中后获取的数据写入缓存或写回必须从缓存中逐出的块时,此功能特别有用。 对缓存的访问时间(忽略集合关联缓存中的命中检测和选择)与缓存中的块数成正比,而能量消耗取决于缓存中的位数(静态功率)和 块数(动态功率)。 设置关联缓存减少了对内存的初始访问时间,因为内存的大小更小,但增加了命中检测和块选择的时间,我们将在 2.3 节中讨论这个主题。

DRAM Technology

在这里插入图片描述

随着早期 DRAM 容量的增加,具有所有必要地址线的封装成本成为一个问题。 解决方案是多路复用地址线,从而将地址引脚的数量减少一半。 图 2.3 显示了基本的 DRAM 组织。 在行访问选通 (RAS) 期间首先发送地址的一半。 在列访问选通 (CAS) 期间发送的另一半地址紧随其后。 这些名称来自于内部芯片组织,因为存储器被组织为按行和列寻址的矩形矩阵。

DRAM 的另一个要求来自其第一个字母 D 所表示的动态特性。 为了在每个芯片上封装更多位,DRAM 仅使用单个晶体管(它有效地充当电容器)来存储位。 这有两个含义:首先,检测电荷的传感线必须被预充电,这将它们设置在逻辑 0 和 1 之间的“中间”,允许存储在电池中的小电荷导致 0 或 1 被检测到 感测放大器。 读取时,一行被放入行缓冲区,在那里 CAS 信号可以选择行的一部分从 DRAM 中读出。 因为读取一行会破坏信息,所以当不再需要该行时必须将其写回。 这种写回以重叠方式发生,但在早期的 DRAM 中,这意味着可以读取新行之前的周期时间大于读取一行和访问该行一部分的时间。

此外,为了防止由于单元中的电荷泄漏而导致信息丢失(假设它未被读取或写入),必须定期“刷新”每一位。 幸运的是,一行中的所有位都可以通过读取该行并将其写回来同时刷新。 因此,内存系统中的每个 DRAM 都必须在某个时间窗口(例如 64 ms)内访问每一行。 DRAM 控制器包括定期刷新 DRAM 的硬件。

这个要求意味着内存系统偶尔不可用,因为它正在发送一个信号告诉每个芯片刷新。 刷新的时间是行激活和预充电,也将行写回(这需要大约 2/3 的时间来获取数据,因为不需要列选择),这对于 DRAM 的每一行都是必需的 . 由于 DRAM 中的内存矩阵在概念上是正方形的,因此刷新的步骤数通常是 DRAM 容量的平方根。 DRAM 设计人员尽量将刷新时间保持在总时间的 5% 以下。 到目前为止,我们已经展示了主存储器,就像它像瑞士火车一样运行,始终如一地按计划交付货物。 事实上,对于 SDRAM,DRAM 控制器(通常在处理器芯片上)试图通过避免打开新行和尽可能使用块传输来优化访问。 刷新增加了另一个不可预测的因素。

根据经验,Amdahl 建议内存容量应随处理器速度线性增长,以保持系统平衡。 因此,一个 1000 MIPS 的处理器应该有 1000 MiB 的内存。 处理器设计人员依靠 DRAM 来满足这种需求。 过去,他们预计容量每三年提高四倍,即每年提高 55%。 不幸的是,DRAM 的性能增长速度要慢得多。 较慢的性能改进主要是因为行访问时间的减少较小,这是由诸如功率限制和单个存储单元的充电容量(以及大小)等问题决定的。 在我们更详细地讨论这些性能趋势之前,我们需要描述 DRAM 从 1990 年代中期开始发生的主要变化。

Improving Memory Performance Inside
a DRAM Chip: SDRAMs

尽管非常早期的 DRAM 包括一个缓冲区,允许对单行进行多列访问,而不需要新的行访问,但它们使用了异步接口,这意味着每个列访问和传输都涉及与控制器同步的开销。 在 1990 年代中期,设计人员在 DRAM 接口中添加了一个时钟信号,这样重复传输就不会承担该开销,从而创建了同步 DRAM (SDRAM)。 除了减少开销之外,SDRAM 还允许添加突发传输模式,在这种模式下,无需指定新的列地址即可进行多次传输。 通常,通过将 DRAM 置于突发模式,可以在不发送任何新地址的情况下进行 8 次或更多 16 位传输。 包含这种突发模式传输意味着随机访问流的带宽与访问数据块的带宽之间存在显着差距。

为了克服随着 DRAM 密度增加而从内存中获得更多带宽的问题,DRAMS 变得更宽了。 最初,他们提供了一种四位传输模式; 在 2017 年,DDR2、DDR3 和 DDR DRAMS 最多有 4、8 或 16 位总线。

在 2000 年代初期,引入了进一步的创新:双倍数据速率 (DDR),它允许 DRAM 在内存时钟的上升沿和下降沿传输数据,从而将峰值数据速率加倍。

最后,SDRAM 引入了 bank 以帮助进行电源管理、缩短访问时间并允许对不同 bank 进行交错和重叠访问。 对不同bank的访问可以相互重叠,每个bank都有自己的行缓冲区。 在 DRAM 内创建多个存储体有效地将另一个段添加到地址,现在该地址由存储体编号、行地址和列地址组成。 当发送指定新bank的地址时,必须开设该bank,从而导致额外的延迟。 存储体和行缓冲区的管理完全由现代内存控制接口处理,因此当后续访问为开放bank指定同一行,访问可能发生很快,只发送列地址。

为了启动新的访问,DRAM 控制器发送一个存储体和行号(在 SDRAM 中称为激活,以前称为 RAS——行选择)。 该命令打开该行并将整行读入缓冲区。 然后可以发送列地址,SDRAM 可以传输一个或多个数据项,具体取决于它是单项请求还是突发请求。 在访问新行之前,必须对银行进行预充电。 如果行在同一组中,则看到预充电延迟; 但是,如果该行在另一行中,则关闭该行和预充电可能会与访问新行重叠。 在同步 DRAM 中,这些命令周期中的每一个都需要整数个时钟周期。

从 1980 年到 1995 年,DRAM 按照摩尔定律扩展,容量每 18 个月翻一番(或 3 年翻 4 倍)。 从 1990 年代中期到 2010 年,容量增长速度较慢,翻番之间大约有 26 个月的时间。 从 2010 年到 2016 年,容量仅翻了一番! 图 2.4 显示了各代 DDR SDRAM 的容量和访问时间。 从 DDR1 到 DDR3,访问时间提高了约 3 倍,即每年约 7%。 DDR4 比 DDR3 提高了功率和带宽,但具有相似的访问延迟。

如图 2.4 所示,DDR 是一系列标准。 DDR2 通过将电压从 2.5 V 降至 1.8 V 来降低 DDR1 的功耗,并提供更高的时钟频率:266、333 和 400 MHz。 DDR3 将电压降至 1.5 V,最大时钟速度为 800 MHz。 (正如我们在下一节中讨论的那样,GDDR5 是图形 RAM,基于 DDR3 DRAM。) DDR4 于 2016 年初批量发货,但预计在 2014 年将电压降至 1–1.2 V,并且具有最大值 预期时钟频率为 1600 MHz。 DDR5 不太可能在 2020 年或之后达到量产。

随着 DDR 的引入,内存设计人员越来越关注带宽,因为访问时间的改进很困难。 更宽的 DRAM、突发传输和双倍数据速率都有助于内存带宽的快速增加。 DRAM 通常在称为双列直插内存模块 (DIMM) 的小板上出售,这些模块包含 4-16 个 DRAM 芯片,通常组织为 8 字节宽 (+ ECC),适用于台式机和服务器系统。 当 DDR SDRAM 被封装为 DIMM 时,它们会被 DIMM 峰值带宽混淆地标记。 因此 DIMM 名称 PC3200 来自 200 MHz28 字节,或 3200 MiB/s; 它装有 DDR SDRAM 芯片。 由于混淆,芯片本身标有每秒位数而不是时钟速率,因此 200 MHz DDR 芯片称为 DDR400。 图 2.5 显示了关系的 I/O 时钟速率、每芯片每秒的传输、芯片带宽、芯片名称、DIMM 带宽和 DIMM 名称

Reducing Power Consumption in SDRAMs

动态存储芯片的功耗包括用于读或写的动态功耗和静态或待机功耗; 两者都取决于工作电压。 在最先进的 DDR4 SDRAM 中,工作电压已降至 1.2 V,与 DDR2 和 DDR3 SDRAM 相比,功耗显着降低。 bank的添加也降低了功率,因为只读取单个bank中的行。

除了这些变化之外,所有最近的 SDRAM 都支持掉电模式,通过告诉 DRAM 忽略时钟来进入该模式。 掉电模式会禁用SDRAM,但内部自动刷新除外(否则,进入掉电模式的时间超过刷新时间将导致内存内容丢失)。 图 2.6 显示了 2 GB DDR3 SDRAM 中三种情况的功耗。 从低功耗模式返回所需的确切延迟取决于 SDRAM,但典型延迟为 200 个 SDRAM 时钟周期。

Graphics Data RAMs

GDRAM 或 GSDRAM(图形或图形同步 DRAM)是一类基于 SDRAM 设计的特殊 DRAM,但专门用于处理图形处理单元的更高带宽需求。 GDDR5 基于 DDR3,早期的 GDDR 基于 DDR2。 由于图形处理器单元(GPU;参见第 4 章)每个 DRAM 芯片比 CPU 需要更多带宽,因此 GDDR 有几个重要区别:

  1. GDDR 具有更宽的接口:32 位与当前设计中的 4、8 或 16 位。
  2. GDDR 在数据引脚上具有更高的最大时钟速率。 为了在不产生信号问题的情况下实现更高的传输速率,GDRAMS 通常直接连接到 GPU 并通过将它们焊接到电路板上来连接,这与 DRAM 不同,DRAM 通常排列在可扩展的 DIMM 阵列中。

总而言之,这些特性让 GDDR 的每个 DRAM 的带宽是 DDR3 DRAM 的 2 到 5 倍。

Packaging Innovation: Stacked or Embedded DRAMs

2017 年 DRAM 的最新创新是封装创新,而不是电路创新。 它将多个 DRAM 以堆叠或相邻的方式放置在与处理器相同的封装中。 (嵌入式 DRAM 也用于指将 DRAM 放在处理器芯片上的设计。)将 DRAM 和处理器放在同一封装中可降低访问延迟(通过缩短 DRAM 和处理器之间的延迟)并通过允许更多 以及处理器和 DRAM 之间更快的连接; 因此,一些生产商将其称为高带宽内存 (HBM)。

该技术的一个版本使用焊料凸点技术将 DRAM 芯片直接放置在 CPU 芯片上以将它们连接起来。 假设有足够的热管理,多个 DRAM 芯片可以以这种方式堆叠。 另一种方法仅堆叠 DRAM 并使用包含连接的基板(中介层)将它们与 CPU 邻接在单个封装中。 图 2.7 显示了这两种不同的互连方案。 已经展示了最多可堆叠 8 个芯片的 HBM 原型。 使用特殊版本的 SDRAM,此类封装可包含 8 GiB 内存并具有 1 TB/s 的数据传输速率。 2.5D 技术目前可用。 由于芯片必须专门制造以堆叠,因此很可能大多数早期用途将用于高端服务器芯片组。

在某些应用中,可能可以在内部封装足够的 DRAM 以满足应用的需要。 例如,正在使用 HBM 开发在专用集群设计中用作节点的 Nvidia GPU 版本,并且 HBM 很可能会成为 GDDR5 的继任者,用于更高端的应用程序。 在某些情况下,可以使用 HBM 作为主存储器,但成本限制和散热问题目前排除了该技术用于某些嵌入式应用的可能性。 在下一节中,我们考虑以下可能性
使用 HBM 作为附加级别的缓存。

在这里插入图片描述

Flash Memory

闪存是一种 EEPROM(电子可擦除可编程只读存储器),通常是只读的,但可以擦除。 闪存的另一个关键特性是它无需任何电源即可保存其内容。 我们专注于NAND Flash,它的密度比NOR Flash更高,更适合大规模非易失性存储器; 缺点是访问是顺序的,写入速度较慢,我们将在下面解释。

闪存在 PMD 中用作辅助存储,其方式与笔记本电脑或服务器中的磁盘功能相同。 此外,由于大多数 PMD 的 DRAM 数量有限,因此 Flash 也可以作为内存层次结构的一个级别,其程度比它在主内存可能为 10–100 倍。

闪存使用非常不同的架构,并且具有与标准 DRAM 不同的属性。 最重要的区别是:

  1. 对闪存的读取是顺序的,读取整个页面,可以是 512 字节、2 KiB 或 4 KiB。因此,NAND 闪存从随机地址访问第一个字节有很长的延迟(大约 25 μS),但可以以大约 40 MiB/s 的速度提供页面块的剩余部分。相比之下,DDR4 SDRAM 传输第一个字节大约需要 40 ns,并且可以以 4.8 GiB/s 的速度传输行的其余部分。比较传输 2 KiB 的时间,NAND Flash 大约需要 75 μS,而 DDR SDRAM 需要不到 500 ns,使得 Flash 慢了大约 150 倍。然而,与磁盘相比,从闪存读取 2 KiB 的速度要快 300 到 500 倍。从这些数字中,我们可以看出为什么 Flash 不是替代主存储器的 DRAM 的候选者,而是替代磁盘的候选者。
  2. 闪存在被覆盖之前必须被擦除(因此称为“闪存”擦除过程的闪存),并且它是按块而不是单个字节或字擦除。这一要求意味着当数据必须写入闪存时,必须组装整个块,作为新数据或通过合并要写入的数据和块的其余内容。在写入方面,Flash 大约比 SDRAM 慢 1500 倍,大约是磁盘的 8-15 倍。
  3. 闪存是非易失性的(即使在不通电的情况下也能保持其内容)并且在不读取或写入时消耗的功率显着降低(从待机模式下的不到一半到完全不活动时的零)
  4. 闪存限制任何给定块的写入次数,通常至少为 100,000。 通过确保写入块在整个内存中的均匀分布,系统可以最大限度地延长闪存的使用寿命系统。 这种称为写均衡的技术由闪存控制器处理。
  5. 高密度 NAND Flash 比 SDRAM 便宜,但比磁盘贵:Flash 大约 2 美元/GiB,SDRAM 20 至 40 美元/GiB,磁盘 0.09 美元/GiB。 过去五年,Flash 的成本下降速度几乎是磁盘的两倍。

与 DRAM 一样,Flash 芯片包含冗余块,以允许使用具有少量缺陷的芯片; 块的重新映射在 Flash 芯片中处理。 Flash 控制器处理页面传输,提供页面缓存,并处理写平衡。

高密度闪存的快速改进对于低功耗 PMD 和笔记本电脑的发展至关重要,但它们也显着改变了越来越多地使用固态磁盘的台式机和通常将基于磁盘和闪存的大型服务器 贮存。

Phase-Change Memory Technology

几十年来,相变存储器 (PCM) 一直是一个活跃的研究领域。 该技术通常使用一个小的加热元件来改变块状衬底在其晶体形式和非晶形式之间的状态,这两种形式具有不同的电阻特性。 每个位对应于覆盖基板的二维网络中的一个交叉点。 读取是通过感测 x 和 y 点之间的电阻(因此称为忆阻器)来完成的,而写入是通过施加电流来改变材料的相位来完成的。 与 NAND 闪存相比,没有有源器件(例如晶体管)应该会导致更低的成本和更高的密度。

2017 年,美光和英特尔开始交付据信基于 PCM 的 Xpoint 内存芯片。 该技术有望比 NAND 闪存具有更好的写入耐久性,并且通过消除在写入前擦除页面的需要,与 NAND 相比,写入性能可提高多达 10 倍。 读取延迟也可能比 Flash 好 2-3 倍。 最初,预计它的价格会略高于 Flash,但写入性能和写入持久性方面的优势可能会使其具有吸引力,尤其是对于 SSD。 如果这项技术能够很好地扩展并能够实现额外的成本降低,那么固态技术可能会淘汰磁盘,而磁盘已成为主要的大容量非易失性存储 50 多年。

Enhancing Dependability in Memory Systems

大型高速缓存和主存储器显着增加了在制造过程中和操作期间动态发生错误的可能性。 由电路变化引起且可重复的错误称为硬错误或永久性错误。 硬错误可能发生在制造过程中,也可能来自操作期间的电路变化(例如,多次写入后闪存单元发生故障)。 所有 DRAM、闪存和大多数 SRAM 都制造有备用行,因此可以通过编程用备用行替换有缺陷的行来适应少量的制造缺陷。 动态错误是单元内容的变化,而不是电路的变化,被称为软错误或瞬态故障。

动态错误可以通过奇偶校验位检测,并通过使用纠错码 (ECC) 检测和修复。 因为指令缓存是只读的,所以奇偶校验就足够了。 在较大的数据缓存和主内存中,ECC 用于允许检测和纠正错误。 奇偶校验只需要一位开销来检测位序列中的单个错误。 由于奇偶校验无法检测到多位错误,因此必须限制由奇偶校验位保护的位数。 每 8 个数据位一个奇偶校验位是一个典型的比率。 ECC 可以检测两个错误并纠正单个错误,成本为每 64 个数据位 8 位开销。

在非常大的系统中,出现多个错误以及单个存储芯片完全故障的可能性变得很大。 Chipkill 是 IBM 为解决这个问题而引入的,许多非常大的系统,例如 IBM 和 SUN 服务器以及 Google Clusters,都使用这种技术。 (英特尔将其版本称为 SDDC。)本质上类似于用于磁盘的 RAID 方法,Chipkill 分发数据和 ECC 信息,以便通过支持从剩余的数据中重建丢失的数据来处理单个内存芯片的完全故障。 内存芯片。 使用 IBM 的分析并假设一个 10,000 个处理器的服务器,每个处理器为 4 GiB,在三年的运行中产生以下不可恢复的错误率:
■ 仅奇偶校验:大约 90,000,或每 17 分钟发生一个不可恢复(或未检测到)的故障。
■ 仅ECC:大约3500,或者每7.5 小时大约有一个未检测到或不可恢复的故障。
■ Chipkill:每 2 个月大约发生一次未检测到或无法恢复的故障

另一种看待这个问题的方法是找到可以保护的服务器的最大数量(每个有 4 GiB),同时实现与 Chipkill 所演示的相同的错误率。 对于奇偶校验,即使只有一个处理器的服务器的不可恢复错误率也高于 10,000 个服务器的 Chipkill 保护系统。 对于 ECC,17 台服务器系统的故障率与 10,000 台服务器 Chipkill 系统的故障率大致相同。 因此,Chipkill 是仓库规模计算机中 50,000-100,00 台服务器的要求(参见第 6 章第 6.8 节)。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值