动态随机存取存储器存储阵列架构
-
我们首先从最宏观的物理形态开始。一块动态随机存取存储器芯片(DRAM Chip)在物理上是一个矩形的硅片。它并非一个单一的、无差别的存储池,而是被精心划分成若干个功能独立的区域,这些区域被称为存储体(Bank)。一颗标准的DRAM芯片通常包含多个Bank(例如4个、8个或16个)。你可以将每个Bank想象成一个独立的、可并行访问的“书架”。设置多个Bank的主要目的是为了提升整体访问效率:当一个Bank正在忙于处理一次数据读写(例如,刷新或读取)时,另一个Bank可以同时准备接受下一次访问请求,从而减少总体等待时间。
-
接下来,我们深入到单个Bank的内部结构。一个Bank的核心是一个由无数个基本存储单元(Cell,即一个晶体管加一个电容)组成的巨大二维矩阵,这就是存储阵列(Memory Array)。这个阵列在逻辑上被组织成行和列。所有的存储单元并非杂乱无章地堆砌,而是按照地址线进行排列。行地址(Row Address) 用于选中阵列中的某一行,这一行中所有的存储单元(通常有几千到上万个)会通过行选择线被同时激活,它们电容中存储的电荷(代表数据0或1)会被读出并送入该行对应的行缓冲器(Row Buffer,或称Sense Amplifier) 中。行缓冲器在这里扮演两个关键角色:一是将电容上微弱的模拟电压信号放大并锁存为稳定的数字信号;二是在读取操作后,将数据重写回电容,以补充因读取而损失的电荷,这个过程叫做“再生”。
-
现在,我们已经将一行数据整体“搬”到了行缓冲器这个临时工作区。如何从这一行成千上万个数据位中取出我们想要的那一个或一组呢?这就需要列地址(Column Address)。列地址的作用是“寻址”行缓冲器。它通过列译码器,从行缓冲器中选出指定列位置上的一个或一组数据位(例如,64位,对应一个缓存行的数据宽度)。被选中的这些数据位,才会通过芯片的数据输入/输出(I/O)通道,被传送到芯片的外部引脚上,从而与内存控制器完成交换。一个重要的特点是:对同一行数据的多次不同列访问(行命中),速度会远快于访问不同行(行冲突),因为后者需要先关闭当前行,再激活新的一行,过程耗时较长。
-
为了在有限的芯片引脚上传输更多的数据,并提高吞吐量,现代DRAM在物理架构上对存储阵列进行了更细致的分割,引入了子阵列(Subarray)和段(Segment) 的概念。可以将一个巨大的Bank进一步划分成多个较小的子阵列。每个子阵列都拥有自己独立的、局部化的行缓冲器和局部行/列译码器。这种划分有两大好处:一是显著缩短了字线(连接一行所有单元的导线)和位线(连接一列所有单元的导线)的长度,从而降低了这些线路带来的电阻和电容(即RC延迟),提升了访问速度和降低功耗;二是允许不同的子阵列在一定程度上并行工作,进一步提升了带宽。
-
最后,我们将以上所有层级结构整合起来,理解其协同工作的流程。假设内存控制器要读取一个数据,它向DRAM芯片发送一个由Bank地址、行地址和列地址组成的完整地址。Bank地址先被译码,选中目标芯片内的特定Bank。在该Bank内,行地址被送入行地址译码器,激活目标子阵列中的某一行,将该行数据读入对应的局部行缓冲器并放大。接着,列地址被送入列地址译码器,从已被激活的行缓冲器中精确选出目标数据位。最终,这些数据通过Bank内部的全局数据线汇聚,并通过芯片的I/O电路输出。这种从芯片(Bank) -> 阵列(Row) -> 缓冲(Column)的层次化架构,是DRAM能够以低成本实现高密度、大容量存储,并保持可接受访问速度的核心设计思想。