计算机体系结构中的存储器层次结构

2025 年 5 月 16 日 | 阅读 9 分钟

在现代计算中,系统的性能在很大程度上取决于数据的存储和检索效率。然而,没有一种单一的内存类型可以提供速度、容量和成本的理想组合。为了解决这个问题,计算机架构师使用一种称为内存层次结构的结构,该结构以结构化的方式组织不同类型的内存,以优化性能和成本。

内存单元是任何数字计算机的重要组成部分,因为它需要存储程序和数据。

本教程将探讨计算机体系结构中的内存层次结构,讨论其级别、特性、访问方法和优化技术。

什么是内存层次结构?

内存层次结构是计算机体系结构中的一个基本术语,它根据速度、大小、成本和易失性将各种存储设备组织成一个有序的层次结构。内存层次结构是解决CPU的高速执行能力与二级存储和主内存的相对较慢的访问时间之间差距的关键。通过将内存堆叠在多个层级中——从最小最快的(寄存器)到最慢最大的(三级存储)——系统允许处理器在不牺牲成本效益和空间的情况下快速访问重要数据。

该层次结构遵循速度与存储容量之间的权衡

  • 更快的内存(例如,CPU寄存器、缓存)体积更小,成本更高。
  • 更慢的内存(例如,HDD、SSD)体积更大,成本更低。

这种架构使CPU等待数据的次数尽可能少,因为最重要的信息被放置在内存的最快层级。该原理依赖于局部性原理,该原理预测程序会重用内存中彼此靠近的数据和指令。通过以分层形式构建存储,计算机能够找到性能、成本和容量之间的折衷,并实现现代高速计算。如果没有内存层次结构,系统要么过于昂贵(如果完全由超高速内存构建),要么太慢(如果只有高容量存储,如HDD)。

通常,内存单元可分为两类:

  1. 与CPU直接通信的内存单元称为主内存。主内存通常被称为RAM(随机存取内存)。
  2. 提供备份存储的内存单元称为辅助内存。例如,磁性磁盘和磁性磁带是最常用的辅助内存。

除了内存单元的基本分类外,内存层次结构还包括计算机系统中可用的所有存储设备,从慢速但大容量的辅助内存到相对快速的主内存。

下图说明了典型内存层次结构中的组件。

Memory Hierarchy

除了内存单元的基本分类外,内存层次结构还包括计算机系统中可用的所有存储设备,从慢速但大容量的辅助内存到相对快速的主内存。

内存层次结构的级别

内存层次结构结构如下(从最快/最小到最慢/最大):

级别示例速度大小波动性由…管理
寄存器CPU寄存器~0.1纳秒几 KBVolatile编译器/CPU
缓存(L1、L2、L3)SRAM(片上)1-10纳秒KB-MBVolatile硬件
主内存(RAM)DRAM50-100纳秒GBVolatile操作系统
辅助存储SSD/HDD100微秒-毫秒TB非易失性操作系统/用户
三级存储云/磁带归档PB+非易失性远程系统

内存层次结构包含多个级别,每个级别都有特定的用途。

寄存器

  • 位置:CPU内部
  • 大小:几 KB
  • 速度:最快(1个CPU周期)
  • 用途:存储用于即时CPU计算的操作数

缓存内存:缓存内存充当CPU和主内存之间的缓冲区。它分为三个级别:

L1缓存

  • 大小:8KB - 64KB
  • 速度:2-4个CPU周期
  • 位置:CPU核心内部

L2缓存

  • 大小:256KB - 8MB
  • 速度:10-20个CPU周期
  • 位置:核心外部,但CPU内部

L3缓存

  • 大小:4MB - 64MB
  • 速度:20-50个CPU周期
  • 位置:CPU核心之间共享

主内存(RAM)

  • 大小:4GB - 128GB
  • 速度:50-100纳秒
  • 易失性:断电时丢失数据
  • 用途:存储当前运行的程序

二级存储(HDD/SSD)

  • 大小:256GB - 10TB
  • 速度:毫秒(HDD),微秒(SSD)
  • 非易失性:断电后仍保留数据
  • 用途:长期存储

三级存储(磁带、光盘)

  • 大小:TB
  • 速度:秒到分钟
  • 用途:存档和备份

内存层次结构的特点

速度:由于固有技术的限制,内存设备的速率呈直线分级。顶部的寄存器最快(0.1纳秒访问),因为它们由CPU本身使用触发器构建,因此访问指令时是即时的。缓存内存(1-50纳秒)由高速SRAM单元组成,无需刷新,但由于其容量比寄存器大,因此延迟稍长。

大小:内存容量随层次结构的深入而增加,因为速度、成本和物理空间相互权衡。寄存器非常有限(每个CPU核心约几 KB),因为它们必须直接构建到CPU的执行单元中,而这些单元的空间有限。缓存(KB到MB大小)比寄存器大,但受限于功耗和面积——SRAM单元每位使用六个晶体管,因此大缓存成本昂贵。DRAM(RAM)可以达到GB甚至TB,因为它具有更简单的单晶体管单电容器(1T1C)单元,允许更高的密度。

成本:由于制造难度和材料要求的差异,每比特成本随着我们向下移动层次结构而降低。寄存器成本最高,因为它们由高速触发器构成,但占用CPU内的许多裸片空间。缓存内存(SRAM)相对便宜,但由于其六晶体管单元设计,仍然很昂贵。DRAM(RAM)成本较低,因为它采用了相对简单的1T1C单元,尽管仍然需要正确制造并且需要耗电的刷新周期。

易失性:易失性层次结构是物理数据存储的一个属性。寄存器、缓存和RAM是易失性的,因为它们依赖于动态电荷(SRAM/DRAM),当电源中断时会丢失。SRAM在电源持续期间保留数据,而DRAM必须反复刷新。SSD、HDD和磁带是非易失性的,因为它们通过永久性手段存储数据:NAND闪存将电子存储在浮栅(SSD)中,磁畴保留极性(HDD)。

为什么内存层次结构很重要?

  • 通过提供对关键数据的更快访问来减少CPU空闲时间
  • 通过仅在需要时使用昂贵的内存来平衡成本和性能
  • 通过缓存和预取提高系统效率

内存访问方法

顺序访问

顺序访问要求按预定顺序读取或写入数据,就像磁带机必须向前卷动才能找到特定歌曲一样。这种方法简单且成本效益高,但对于随机数据检索效率低下。

随机访问

随机访问允许直接以固定的延迟读取或写入任何内存位置,而与物理位置无关。这是RAM(DRAM/SRAM)的主要访问方法,其中每个内存单元都有一个唯一的地址。

直接访问

直接访问结合了顺序访问和随机访问的元素,允许在顺序扫描之前快速跳转到某个通用区域。硬盘驱动器(HDD)使用此方法——读/写头直接移动到磁道(随机访问),然后顺序读取扇区。

关联访问

关联访问(或内容寻址内存)通过匹配内容而不是地址来检索数据。这对于缓存内存至关重要,其中硬件将输入标签与存储的标签进行比较,以并行找到匹配项。

缓存映射技术

直接映射

直接映射使用内存地址的简单模运算,将主内存的每个块直接映射到缓存的唯一指定行。直接映射的硬件成本低(每次查找一个比较器),但它有很高的冲突未命中率——有许多频繁访问的内存块映射到同一个缓存行,并连续地相互驱逐。

全关联映射

在全关联缓存中,任何内存块都可以存储在任何缓存行中,并且完全消除了冲突未命中。然而,这引入了昂贵的硬件开销:同时定位所有缓存行需要N个比较器(每个缓存行一个),对于大缓存来说,这太耗电且占用空间。

组关联映射

组关联映射通过将缓存行划分为组(通常是2-16路)来折衷。单个内存块映射到一个缓存行组,但可以分配到该组中的任何一行。

内存层次结构中的性能优化

1)时间局部性

时间局部性是程序重用最近访问数据的特性,例如循环变量或经常调用的函数。该原理描述了缓存保留策略,其中最近访问的数据可用于快速访问,从而避免内存延迟。

2)空间局部性

空间局部性导致程序将数据加载到最近引用的内存地址附近,例如数组元素或指令流。缓存通过在未命中的情况下预加载整个缓存行(平均64B)来利用这一点,期望接下来的引用会靠近。

3)预取

预取通过提前将大量数据加载到缓存中来预测即将到来的内存需求,从而减少CPU访问的延迟。当前处理器采用步长检测、机器学习或软件提示来减少停顿周期,但未对齐的预取可能会浪费带宽。

4)多级缓存

多级缓存(L1/L2/L3)试图在延迟和容量之间取得平衡——小巧的L1用于延迟关键操作,较大的L2/L3用于缓存未命中。包含式设计(L3包含L2数据)对一致性友好但占用空间大;排他式设计(Apple M系列)最有效地节省空间。

内存层次结构设计挑战

  • 多核设计中的缓存一致性需要复杂的协议,如MESI/MOESI,以在不造成性能瓶颈的情况下确保私有缓存的数据一致性。
  • 随着处理器时钟频率的提高速度超过DRAM延迟的进步,内存墙(CPU与内存的速度差距)进一步扩大,导致依赖于更大的缓存和高级预取。
  • 高速内存的功耗是规模的关键,DRAM刷新和SRAM泄漏电流占系统总能耗的很大一部分。

内存技术的未来趋势

  • 非易失性RAM(NVRAM):结合了RAM的性能和SSD的持久性,例如Intel Optane,包括字节可寻址的持久内存,有望彻底改变数据库和文件系统的设计。
  • 3D XPoint内存:与传统SSD相比,具有1000倍的耐用性和10倍的低延迟,在多级内存系统中利用电阻的批量变化而非浮栅。
  • 光学和量子内存:通过光互连消除铜线,以及理论上能实现更高密度的量子单元限制,可能带来超高速存储,尽管两者都有很高的商业化障碍。

结论

内存层次结构是一种最大限度地提高性能、成本和可扩展性的计算机体系结构。通过将内存划分为多个级别,从非常快的寄存器到非常慢但非常大的三级存储,计算机在速度和存储之间实现了折衷。

未来的内存技术进步将通过降低延迟和提高存储效率进一步扩展计算的前沿。理解内存层次结构对于计算机工程师、科学家和程序员实现高性能系统至关重要。

选择题(MCQs) - 内存层次结构

1)在计算机系统中,使用内存层次结构的主要目的是什么?

  1. 减少存储设备数量
  2. 增加寄存器的大小
  3. 优化成本与性能的权衡
  4. 消除二级存储

答案:C

解释:内存层次结构通过将存储设备从快速但昂贵构建到慢速但经济实惠来平衡速度、容量和成本。


2)在层次结构中,以下哪种内存是速度最快、体积最小的?

  1. 缓存
  2. 主存储器
  3. 寄存器
  4. 辅助存储

答案:C

解释:寄存器位于CPU内部,提供最快的访问时间,通常是一个CPU周期。


3)哪种内存用于存储CPU频繁访问的数据?

  1. 辅助存储器
  2. 缓存内存
  3. 主存储器
  4. 磁带

答案: B

解释:缓存内存存储频繁访问的数据,以减少CPU获取数据所需的时间。


4)哪个级别的缓存内存由所有CPU核心共享?

  1. L1缓存
  2. L2缓存
  3. L3缓存
  4. 寄存器缓存

答案:C

解释:L3缓存通常由多个核心共享,并且比L1和L2更大但更慢。


5)哪种内存是非易失性的,用于长期存储?

  1. 缓存
  2. 内存
  3. HDD/SSD
  4. 寄存器

答案:C

解释:二级存储设备,如HDD和SSD,是非易失性的,用于永久存储数据。


下一个主题主内存