存储器层次结构3

3.传统的DRAM

 DRAM芯片中的单元(位)被分成d个超单元,每个超单元都由w个DRAM单元组成。一个d X w的DRAM总共存储了dw位信息。超单元被组织成一个r行c列的长方形阵列,这里rc=d。每个超单元有形如(i,j)的地址,这里i表示行,j表示列。

 如图展示的是一个16X8的DRAM芯片的组织,有d=16个超单元,每个超单元有w=8位,r=4行,c=4列。带阴影的方框表示地址(2,1)处的超单元。信息通过称为引脚的外部连接器流入和流出芯片。每个引脚携带一个1位的信号。图中给出了两组引脚:8个data引脚,它们能传送一个字节到芯片或从芯片传出一个字节,以及2个addr引脚,它们携带2位的行和列超单元地址。其他携带控制信息的引脚没有显示出来。

存储器层次结构3

 每个DRAM芯片被连接到某个称为内存控制器的电路,这个电路可以一次传送w位到每个DRAM芯片或一次从每个DRAM芯片传出w位。为了读出超单元(i,j)的内容,内存控制器将行地址i发送到DRAM,然后是列地址j。DRAM把超单元(i,j)的内容发回给控制器作为响应。行地址i称为RAS请求。列地址j称为CAS请求。请求共享相同的DRAM地址引脚。

 要从图中的DRAM中读出超单元(2,1),内存控制器发送行地址2。DRAM的响应是将行2的整个内容都复制到一个内部行缓冲区。接下来,内存控制器发送列地址1。DRAM的响应是从行缓冲区复制出超单元中(2,1)中的8位,并把它们发送到内存控制器。

 电路设计者将DRAM组织成二维阵列而不是线性数组的一个原因是降低芯片上地址引脚的数量。如图的128位DRAM被组织成一个16个超单元的线性数组,地址位0~15,那么芯片会需要4个地址引脚而不是2个。二维阵列组织的缺点是必须分两步发送地址,这增加了访问时间。

4.内存模块

 DRAM芯片封装在内存模块中,它插到主板的扩展槽上。Core i7系统使用的240个引脚的双列直插内存模块,它以64位为块传送数据到内存控制器和从内存控制器传出数据。

 内存模块例如8个64Mbit的8MX8的DRAM芯片,总共存储64MB(兆字节),这8个芯片编号0~7。每个超单元存储主存的一个字节,而用相应超单元地址为(i,j)的8个超单元来表示主存中字节地址A处的64位字。DRAM0存储第一个(低位)字节,以此类推。

 要取出内存地址A处的一个字,内存控制器将A转换成一个超单元地址(i,j),并将它发送到内存模块,然后内存模块再将i和j广播到每个DRAM。作为响应,每个DRAM输出它的(i,j)超单元的8位内容。模块中的电路收集这些输出,并把它们合并成一个64位,再返回给内存控制器。

 通过将多个内存模块连接到内存控制器,能够聚合成主存。在这种情况下,当控制器收到一个地址A时,控制器选择包含A的模块k,将A转换成它的(i,j)的形式,并将(i,j)发送到模块k。