电脑一开一关之间,那些正在运行的程序、还没来得及保存的文件,都依赖着内存里一个个微小电容的电荷存储。这背后是一场与时间赛跑的动态刷新过程。

当你按下电脑开机键,DRAM(动态随机存取存储器)就开始了一场看不见的精密舞蹈。这种存在于我们电脑内存条中的技术,用一个电容加一个晶体管的简单组合,支撑起了整个数字世界的临时记忆-1

它的核心是用电容中有无电荷来表示“1”和“0”,但这种存储方式需要不断“复习”,否则数据就会悄悄溜走-5


01 基本构造

DRAM的核心结构简单得令人惊讶——仅仅是一个晶体管加一个电容(1T1C结构),就能存储一位二进制数据-1

你可以把电容想象成一个小小的储电“水桶”,当这个桶里有电荷时,表示存储的是“1”;空的时候,则表示“0”-1

这个晶体管则像一个聪明的守门人,控制着电荷的进出。电容被设计在MOS晶体管的源极,形成了一个精巧的存储单元-1

别看这个单元结构简单,它的排列方式却很有讲究。成千上万个这样的单元被组织成二维的行列结构,就像一张巨大的棋盘-1。这张棋盘上的每个格子都有一个唯一的坐标,由行地址和列地址共同确定。

当需要访问数据时,DRAM会先找到对应的行,将整行数据读入行缓存,再从行缓存中挑选出目标列的数据-1

02 组织架构

单个DRAM单元只是故事的开端,真正的技术在于如何将这些微小单元组织起来。从单个存储单元出发,它们首先被组织成“路”(Bank)的结构-1

这还没完,多个路组合形成了芯片,而芯片又进一步组织成“秩”(Rank)-1

你可以把秩想象成一个小团队,团队成员(芯片)共享地址线和控制线,但各自负责一部分数据位-2。对于8位位宽的芯片,八个芯片组成一个秩,就可以同时读写,支持64位位宽的传输-1

走到这一步,我们终于见到了熟悉的内存条——DIMM(双列直插式内存组件)。一个DIMM上通常包含一个或多个秩-1

比如说,一个常见的内存条两面各有8个芯片,每一面的8个芯片组成一个秩,所以整个内存条就有两个秩-1

这些内存条通过总线与CPU连接,为了提高访问速度,CPU还可以通过多个通道连接内存条,每个通道都是一套独立的总线系统-1

03 刷新机制

DRAM的“动态”二字,道出了它最显著的特点。由于电容会自然漏电,存储的电荷会随时间逐渐流失,所以需要定期刷新数据-1

这个过程类似于不断提醒自己记住某事,否则就会遗忘。

为了保证数据不丢失,DRAM必须定期对每一行数据进行读取并重新写入-5。通常,每64毫秒内,每一行都必须被刷新至少一次-1

刷新操作有两种主要方式:集中式刷新和分布式刷新。集中式刷新是每隔一段时间,停止所有外部读写操作,逐行刷新所有数据-1

这种方式实现简单,但会导致较大的外部读写延迟。分布式刷新则更加巧妙,它将刷新操作与外部读写操作交替进行,将刷新任务均匀分散在时间轴上,对性能影响更小-1

04 内存控制器

要让CPU与DRAM有效协作,离不开内存控制器的调度。这个聪明的调度员负责将CPU发出的内存访问请求,翻译成DRAM能理解的语言-1

内存控制器的位置有两种选择:可以放在内存条内部,也可以集成在CPU中-1

内存控制器的一个关键决策是如何管理行缓存。主要有两种策略:开放行和关闭行-1开放行策略会在访问某一行后,将数据保留在行缓存中,如果下一个请求访问同一行,就能直接命中,节省了重新激活行的时间。

不过,如果下一个请求访问不同行,就需要先回写数据,再激活新行,延迟反而会增加。关闭行策略则恰恰相反,每次访问后都会回写数据,访问不同行时避免了关键路径上的回写开销,但访问同一行时反而需要重新激活-1

内存控制器需要根据具体访问模式,智能地管理这些请求,平衡吞吐率、延迟和公平性-1。它的调度决策直接关系到内存系统的整体性能表现。


DRAM的工作模式令人联想起生物记忆的特性——易得也易失。当电脑内存从DDR3升级到DDR4再到DDR5,每一次不仅是速度的提升,更是这场与电荷消散竞赛的技术革新-6

那些在内存条上整齐排列的芯片,正以每秒数百万次的速度进行着读取、放大、回写的循环,支撑着每一个程序指令的执行,每一次数据的处理,构成了计算机临时记忆系统的基础。