DRAM内存原理(二)结构和功能

来源:互联网 发布:行知职高新疆部 编辑:程序博客网 时间:2024/05/19 22:03

内存最基本的单位是内存“细胞”——也就是我们前面展示给大家DRAM基本单元示意图所示的部分,下面我们对这个部分通称为DRAM基本单元。每个DRAM基本单元代表一个“位”——Bit(也就是一个比特),并且有一个由列地址和行地址定义的唯一地址。8个比特组成一个字节,它可代表256种组合(即2的八次幂),字节是内存中最小的可寻址单元。DRAM基本单元不能被单独寻址——否则现在的内存将会更加复杂,而且也没有必要。很多DRAM基本单元连接到同一个列线(Row line)和同一个行线(Column line),组成了一个矩阵结构,这个矩阵结构就是一个Bank。大部分的SDRAM芯片由4个Bank组成,而SDRAM DIMM (Dual Inline Memory Module双列直插式)可能由8或者16个芯片组成。SDRAM DIMM有14条地址线和64 bit数据线(如果一个DIMM内存使用8bit SDRAM芯片,那么你应该在内存条上看到8个芯片,当然有的DIMM使用4 bit SDRAM芯片,那么你将会在内存条上看到16片)。


以下是对插图的注释:
Row Address Buffer:行地址缓冲
 Column Address Buffer:列地址缓冲
Row DECODER:行解码器
  Column DECODER:列解码器
 Memory Array:内存阵
SENSE AMP:传感放大器
由上图可见一个Bank由内存阵列、sense amp、一个行解码器、一个列解码器组成。如果要理解内存Bank内部工作状况,让我们看看当缓存没有命中后CPU从系统主内存中调用数据的情况。 CPU需要依次读取一个32字节的数据,首先向芯片组发出请求——这通常需要一个时钟周期芯片组将通过14条列地址线发送一个行地址,也就是这个行地址被发送到DIMM所有的芯片上。拥有相同行地址的行被成为一个页面。换句话说,当芯片组向DIMM发送行地址后,就在打开了DIMM上一个页面。

每一个内存bank都有一个传感放大器(sense ampplifier),用来放大从基本单元读出(或者写入)内容时电荷。传感放大器根据从芯片组发送来的行地址读出相应的数据,这个读出过程需要一定的时间这就是RASCAS的延迟,简称TRCD。不同质量的SDRAMTRCD需要2或者3个周期。

现在我们已经有了正确的行地址,不过还不知道确切的到那个基本单元去获得信息。CAS延迟时间就是内存用于取得正确的列地址所需要的时间。CAS延迟时间一般时2或者3个时钟周期。

然后内存基本单元就把信号发送到DIMM的输出缓存,这样芯片组就可以读取它们了。现在我们有了前8个字节的内容,以及在传感放大器中有了正确的行地址,等到下面的24个字节的过程就简单了。这时就由内部计数器负责把下一个列地址的内存基本单元的内容发送到DIMM的输出缓存当中。这样每个时钟周期都有8个字节传送到输出缓存中,这种模式就叫做突发模式

可见,主内存的延迟时间(也就是所谓的潜伏期,从FSB到DRAM)等于下列时间的综合:

FSB同主板芯片组之间的延迟时间(+/- 1个时钟周期)
   芯片组同DRAM之间的延迟时间(+/- 1个时钟周期)
 RAS到CAS延迟时间:RCD(2-3 个时钟周期,用于决定正确的行地址)
 CAS延迟时间 (2-3 时钟周期,用于决定正确的列地址)
   另外还需要1个时钟周期来传送数据
  数据从DRAM输出缓存通过芯片组到CPU的延迟时间(+/- 2个时钟周期)

  可以看出,一个真正的PC100的SDRAM CAS=2)的内存取得最前八个字节的时间是9个时钟周期,而另外24个字节只是需要3个时钟周期,这样PC100的SDRAM取得32个字节的数据只是需要12个时钟周期。
对于同样的情况,也就是当二级缓存未命中的时候,CPU从内存取得数据所需要的延迟时间需要用如下方法计算:CPU倍频×内存延迟时间=CPU延迟时间。如果500MHZ(5×100MHz)的CPU需要5×9个延迟周期。也就是说如果二级缓存没有命中,CPU需要45个时钟中期才能得到新的数据。
 通过以上的介绍,我们已经理解的DRAM工作的基本原理,下面让我们了解一下决定RAM技术速度的因素。

究竟是什么决定DRAM速度?SDRAM是多bank结构,芯片组可以保持一部分曾经访问过的Bank的行地址,也就是说保持一部分已经被打开的“页面”。如果需要访问的数据在同一列中,那么芯片组不需要等待传感器进行变换——这种情况就叫做页面命中。这时RAS到CAS延迟时间就是0个时钟周期,只需要经过CAS延迟就能在内存缓冲调入正确数据。所以,页面命中就意味着我们只需要等待列地址的确立,就能得到需要的数据了。不过有的情况下,芯片组请求的内存页面不是处于打开的状态,这就叫做页面失效。在这种情况下,RAS到CAS延迟时间将是2或者3时钟周期(根据内存的品质不同而不同)。这种情况就是前面我们讨论过的情形。如果芯片组已经保持了某一个Bank的某一个行地址,也就是在某一个bank已经打开了一个页面,而请求的数据是位于同一个bank的不同行地址的数据,这种情况是最糟糕的。这样就意味着传感放大器需要首先回写旧的行地址,然后再转换新的行地址。回写旧的行地址所占用的时间叫做“预转换时间”(Precharge time),当遇到这种情况时,是最坏的情况。

DEVICE_WIDTH表示设备的带宽(单位为Bit),每个列(COLUMN)表示为DEVICE_WIDTH位(bit),每一行(ROW)有NUM_COLS个COLUMN。每一个BANK包含NUM_ROWS个行,所以一个DEVICE的容量PER_DEVICE_STORAGE=NUM_ROWS*NUM_COLS*DEVICE_WIDTH*NUMBANKS。一个RANK的容量为64bit。所以一个RANK必须有device的个数为NUM_DEVICES_PER_RANK=64/DEVICE_WIDTH。这样我们算在一起,得出一个RANK的大小为PER_RANK_STORAGE= PER_DEVICE_STORAGE*NUM_DEVICES_PER_RANK=NUM_ROWS*NUM_COLS*DEVICE_WIDTH*NUMBANKS* NUM_DEVICES_PER_RANK=NUM_DEVICES_PER_RANK


0 0