ekaterina lisina.com:ram的原理 操作时序 技术指标

来源:百度文库 编辑:中科新闻网 时间:2024/05/05 01:40:43

不管你信不信,RDRAM (Rambus)、DDR SDRAM甚至是EDO RAM它们在本质上讲是一样的。RDRAM、DDR RAM、SDRAM、EDO RAM都属于DRAM(Dynamic RAM),即动态内存。所有的DRAM基本单位都是由一个晶体管和一个电容器组成。
电容器的状态决定了这个DRAM单位的逻辑状态是1还是0,但是电容的被利用的这个特性也是它的缺点。一个电容器可以存储一定量的电子或者是电荷。一个充电的电容器在数字电子中被认为是逻辑上的1,而“空”的电容器则是0。电容器不能持久的保持储存的电荷,所以内存需要不断定时刷新,才能保持暂存的数据。电容器可以由电流来充电——当然这个电流是有一定限制的,否则会把电容击穿。同时电容的充放电需要一定的时间,虽然对于内存基本单位中的电容这个时间很短,只有大约0.2-0.18微秒,但是这个期间内存是不能执行存取操作的。

DRAM制造商的一些资料中显示,内存至少要每64ms刷新一次,这也就意味着内存有1%的时间要用来刷新。内存的自动刷新对于内存厂商来说不是一个难题,而关键在于当对内存单元进行读取操作时保持内存的内容不变——所以DRAM单元每次读取操作之后都要进行刷新:执行一次回写操作,因为读取操作也会破坏内存中的电荷,也就是说对于内存中存储的数据是具有破坏性的。所以内存不但要每64ms刷新一次,每次读操作之后也要刷新一次。这样就增加了存取操作的周期,当然潜伏期也就越长。

SRAM,静态(Static)RAM不存在刷新的问题,一个SRAM基本单元包括4个晶体管和2个电阻。它不是通过利用电容充放电的特性来存储数据,而是利用设置晶体管的状态来决定逻辑状态——同CPU中的逻辑状态一样。读取操作对于SRAM不是破坏性的,所以SRAM不存在刷新的问题。
SRAM不但可以运行在比DRAM高的时钟频率上,而且潜伏期比DRAM短的多。SRAM仅仅需要2到3个时钟周期就能从CPU缓存调入需要的数据,而DRAM却需要3到9个时钟周期(这里我们忽略了信号在CPU、芯片组和内存控制电路之间传输的时间)。前面也提到了,SRAM需要的晶体管的数目是DRAM的4倍,也就是说成本比DRAM高至少是4倍,在目前的售价SRAM每M价格大约是DRAM的8倍,是RAMBUS内存的2到3倍。不过它的极短的潜伏期和高速的时钟频率却的确可以带来更高的带宽。

|-page-|
结构和功能(SDRAM)

内存最基本的单位是内存“细胞”——也就是我们前面展示给大家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片)。

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

每一个内存bank都有一个传感放大器(sense ampplifier),用来放大从基本单元读出(或者写入)内容时电荷。传感放大器根据从芯片组发送来的行地址读出相应的数据,这个读出过程需要一定的时间这就是RAS到CAS的延迟,简称TRCD。不同质量的SDRAM的TRCD需要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),当遇到这种情况时,是最坏的情况。

|-page-|

带宽问题

要理解延迟时间和带宽之间的联系,我们以PC100 SDRAM-222为例来说明。第一个2代表CAS延迟时间是2个时钟周期,第二个2表示RAS到CAS延迟时间,第三个2代表预转换时间。我们假设不同类型的延迟。在这个例子中我们假设发生了缓存页面失效,CPU等待调入新的需要的数据。也就是,我们要研究从读取内存到填充缓存的这一个过程。回写内存的过程很简单。写入的数据可以首先调入缓存待用。举例来说,KX-133芯片组具有4条从CPU到DRAM写缓存的数据通道。具有高速前端总线(FSB=200MHz)和写缓存,CPU可以从芯片组的缓存中持续不断的得到信息,从而得以不间断的工作。芯片组只要在内存总线未饱和的情况下,专心缓存同主内存之间的数据传输就可以了。

下面让我们看一看表一,这里列出了所有情况下的延迟时间。第三列显示的是当第一列描述的情况发生时所需要的延迟时间。比如,当出现“正常”页面失效时,需要两个时钟周期寻找行地址(简称RCD),再需要两个时钟周期找到相应的列地址(称为CAS延迟时间或者CL)。

在第四列,你会发现我们把前一列的结果都加了5个时钟周期=2个时钟周期(地址从CPU传到芯片组再到DIMM需要2个时钟周期)+1个时钟周期(数据传输到输出缓存需要1个时钟周期)+2个时钟周期(数据返回到CPU需要2个时钟周期)。
最后一列显示的是延迟时间和带宽之间的关系。比如,当页面命中的情况下,CAS=2的内存芯片可以在10个周期内提供32字节的数据,而内存时钟是100MHz(记住我们前面说过假设是PC100 SDRAM),很容易就能算出每秒可以传输320MB。由此可见:延迟时间同带宽的关系非常密切,特别对于经常从缓存中调入数据的PC系统而言更是这样。从上面的例子你会发现,即使是真正的PC100 SDRAM (222)在最好的情况下(100%的页面命中率),它的带宽也不过达到最高理论带宽800 MB/s的40%。对于PC133 SDRAM内存情况是怎么样的?表二列出的是PC133 CAS2、PC133 Cas3、PC100 CAS2情况下的带宽。
可以看出,PC133 CAS3完成任务比PC100 CAS2 还慢一个时钟周期,所以对于某些访问内存操作比较少的程序(也就是在没有超越PC 100 CAS2实际带宽上限的内存),配备PC100 CAS2同配备PC133 CAS2的系统表现是一样的。对于具有512 KB二级缓存的Athlon来说,配备PC133和PC100所表现出来的差异不大。而对于Duron,当访问内存的操作增多时,高带宽的PC133 CAS3将会显示出明显的优势。我们曾经做过这方面的测试,对此进行过验证,因为本文是基本属于理论性的东西,所以就不进一步列举数据了。

|-page-|
芯片组的同步内存和异步内存技术

现在你已经掌握了内存的基本知识,所以你应该能理解下面讲述的为什么BX芯片组的主板超频到133 MHz性能会比别的比如VIA Apollo 133等芯片组好;为什么133外频的KX133并不比100外频的AMD750芯片组有明显的性能提高。因为BX/AMD750芯片组运行在同系统FSB同样的时钟频率下,而VIA芯片组是异步的,因为它可以支持PC66、PC100、PC133 SDRAM。我们来比较一下超频在133MHz外频的BX芯片组、工作在异步内存模式下的VIA Apollo Pro133A芯片组、以及工作在标准100外频的BX芯片组配备不同类型SDRAM的情况。如果内存工作在异步模式下,那么整个系统延迟时间应该至少增加一个时钟周期。133 MHz系统的一个时钟周期是7.5 ns,而100 MHz系统的时钟周期是10 ns,所以工作在异步内存方式的下的133MHz系统需要一种缓存,因为当周期为7.5 ns的时钟周期结束时,周期为10 ns的时钟周期还没有结束,请看下图。

133 MHz异步内存系统比133 MHzBX同步提供获得第一个字节的延迟时间多用了15%,而且带宽少了10%。如果同步过程需要更多的时钟周期,BX的优势会更加明显。当配备133MHz CAS2 SDRAM内存的异步系统需要两个额外时钟周期时,性能上会连PC100 MHz的系统也比不上了。所以当你升级了主板以后发现系统性能并没有多大提高反而有下降的时候,别怪罪芯片组,因为你的钱买到的是更大的兼容性,而不一定是速度。

结论

现在的CPU大都运行再8倍频甚至更高倍频上,具有了速度更快的但是容量更小的二级缓存(比如新Athlon & Athlon, Coppermine & Katmai),这样内存子系统面临的工作压力随之升高。现在对于基于DRAM技术的内存不要抱更大的幻想了,因为DRAM技术决定了数据从DRAM通过芯片组传输到CPU也至少需要4个时钟周期。另外DRAM每次读取之后都需要刷新,这就又增加了延迟时间。虽然理论上SDRAM的峰值带宽是800到1066 MB/s,但是实际上即使在最理想的状态(比如命中率100%),它所能达到的实际带宽也只是理论峰值的40%而已。

至于Rambus、DDR SDRAM,虽然也属于DRAM的范畴,不过并不是我们这篇文章的讨论范围,以后我会著文来谈谈它们的技术原理以及优缺点的。

内存参数规格:
内存的时序参数一般简写为2/2/2/6-11/1T的格式,分别代表CAS/tRCD/tRP/tRAS/CMD的值。 2/2/2/6-11/1T中最后两个时序参数,也就是tRAS和CMD(Command缩写),是其中较复杂的时序参数。目前市场上对这两个参数的认识有一些错误,因为部分内存厂商直接用它们来代表内存性能。
CMD Rate祥解:
Command Rate译为"首命令延迟",这个参数的含义是片选后多少时间可以发出具体的寻址的行激活命令,单位是时钟周期。片选是指对行物理Bank的选择(通过DIMM上CS片选信号进行)。如果系统指使用一条单面内存,那就不存在片选的问题了,因为此时只有一个物理Bank。
用更通俗的说法,CMD Rate是一种芯片组意义上的延迟,它并不全由内存决定,是由芯片组把虚拟地址解释为物理地址。不难估计,高密度大容量的系统内存的物理地址范围更大,其CMD延迟肯定比只有单条内存的系统大,即使是双面单条。
Intel对CMD这个问题就非常敏感,因此部分芯片组的内存通道被限制到四个Bank。这样就可以比较放心地把CMD Rate限定在1T,而不理用户最多能安装多少容量的内存。
宣扬CMD Rate可以设为1T实际上多少也算是一种误导性广告,因为所有的无缓冲(unbuffered)内存都应具有1T的CMD Rate,最多支持四个Bank每条内存通道,当然也不排除芯片组的局限性。
tRAS:
tRAS在内存规范的解释是Active to Precharge Delay,行有效至行预充电时间。是指从收到一个请求后到初始化RAS(行地址选通脉冲)真正开始接受数据的间隔时间。这个参数看上去似乎很重要,其实不然。内存访问是一个动态的过程,有时内存非常繁忙,但也有相对空闲的时候,虽然内存访问是连续不断的。tRAS命令是访问新数据的过程(例如打开一个新的程序),但发生的不多。
接下来几个内存时序参数分别为CAS延迟,tRCD,以及tRP,这些参数又是如何影响系统性能的呢?
CAS:
CAS意为列地址选通脉冲(Column Address Strobe 或者Column Address Select),CAS控制着从收到命令到执行命令的间隔时间,通常为2,2.5,3这个几个时钟周期。在整个内存矩阵中,因为CAS按列地址管理物理地址,因此在稳定的基础上,这个非常重要的参数值越低越好。过程是这样的,在内存阵列中分为行和列,当命令请求到达内存后,首先被触发的是tRAS (Active to Precharge Delay),数据被请求后需预先充电,一旦tRAS被激活后,RAS才开始在一半的物理地址中寻址,行被选定后,tRCD初始化,最后才通过CAS找到精确的地址。整个过程也就是先行寻址再列寻址。从CAS开始到CAS结束就是现在讲解的CAS延迟了。因为CAS是寻址的最后一个步骤,所以在内存参数中它是最重要的。
tRCD:
根据标准tRCD是指RAS to CAS Delay(RAS至CAS延迟),对应于CAS,RAS是指Row Address Strobe,行地址选通脉冲。CAS和RAS共同决定了内存寻址。RAS(数据请求后首先被激发)和CAS(RAS完成后被激发)并不是连续的,存在着延迟。然而,这个参数对系统性能的影响并不大,因为程序存储数据到内存中是一个持续的过程。在同个程序中一般都会在同一行中寻址,这种情况下就不存在行寻址到列寻址的延迟了。
tRP:
tRP指RAS Precharge Time ,行预充电时间。也就是内存从结束一个行访问结束到重新开始的间隔时间。简单而言,在依次经历过tRAS, 然后 RAS, tRCD, 和CAS之后,需要结束当前的状态然后重新开始新的循环,再从tRAS开始。这也是内存工作最基本的原理。如果你从事的任务需要大量的数据变化,例如视频渲染,此时一个程序就需要使用很多的行来存储,tRP的参数值越低表示在不同行切换的速度越快。
总结:
或许你看完以上论述后还是有一些不解,其实大家也没必要对整个内存寻址机制了解的非常透彻,这个并不影响你选择什么规格的内存,以及如何最大程度上在BIOS中优化你的内存参数。最基本的,你应该知道,系统至少需要搭配满足CPU带宽的内存,然后CAS延迟越低越好。

因为不同频率的内存的价格相差并不是很大,除了那些发烧级产品。从长远的目光来考虑,我们建议大家尽量购买高频率的内存产品。这样或许你将来升级CPU时可以节省一笔内存费用,高频率的内存都是向下兼容的。例如如果购买了PC3200 400MHz的内存,标明的CAS延迟是2.5。如果你实际使用时把频率降到333MHz,通常情况下CAS延迟可以达到2。
一般而言,想要保持内存在一个高参数,如果不行可以采取降低频率的方法。但对处理器超频时,都会要求较高的总线速度,此时的瓶颈就在内存系统上,一般只有靠牺牲高参数来保持内存频率和CPU的外频同步。这样可以得到更大的内存带宽,在处理大量数据时就能明显的从中获益,例如数据库操作,Photoshop等。
另外一点值得注意的是,PC3200或PC3500规格的内存,如果CAS延迟可以设为2,也能在一定程度上弥补内存带宽。因为此时CPU和内存交换数据时间隔的时间大大减少了。如果用户经常使用的程序并不需要大的带宽,低CAS延迟也会带来显著的性能提升,例如一些小型游戏和3D应用程序。
总而言之,一条参数为2-2-2-5的内存绝对比3-4-4-8的内存优秀很多,总线速度越高,这种情况就越明显。