配色: 字号:
内存工作原理
2012-10-25 | 阅:  转:  |  分享 
  
内存工作原理

1、内存寻址。

首先,内存从CPU获得查找某个数据的指令,然后再找出存取资料的位置时(这个动作称

为“寻址”),它先定出横坐标(也就是“列地址”)再定出纵坐标(也就是“行地址”),这就好

像在地图上画个十字标记一样,非常准确地定出这个地方。对于电脑系统而言,找出这个地

方时还必须确定是否位置正确,因此电脑还必须判读该地址的信号,横坐标有横坐标的信号

(也就是RAS信号,RowAddressStrobe)纵坐标有纵坐标的信号(也就是CAS信号,

ColumnAddressStrobe),最后再进行读或写的动作。因此,内存在读写时至少必须有五

个步骤:分别是画个十字(内有定地址两个操作以及判读地址两个信号,共四个操作)以

及或读或写的操作,才能完成内存的存取操作。

2、内存传输。

为了储存资料,或者是从内存内部读取资料,CPU都会为这些读取或写入的资料编上地址

(也就是我们所说的十字寻址方式),这个时候,CPU会通过地址总线(AddressBus)将

地址送到内存,然后数据总线(DataBus)就会把对应的正确数据送往微处理器,传回去

给CPU使用。

3、存取时间。

所谓存取时间,指的是CPU读或写内存内资料的过程时间,也称为总线循环(buscycle)。

以读取为例,从CPU发出指令给内存时,便会要求内存取用特定地址的特定资料,内存响

应CPU后便会将CPU所需要的资料送给CPU,一直到CPU收到数据为止,便成为一个

读取的流程。因此,这整个过程简单地说便是CPU给出读取指令,内存回复指令,并丢出

资料给CPU的过程。我们常说的6ns(纳秒,秒-9)就是指上述的过程所花费的时间,而

ns便是计算运算过程的时间单位。我们平时习惯用存取时间的倒数来表示速度,比如6ns

的内存实际频率为1/6ns=166MHz(如果是DDR就标DDR333,DDR2就标DDR2667)。

4、内存延迟。

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

板芯片组之间的延迟时间(±1个时钟周期),芯片组同DRAM之间的延迟时间(±1个时钟周

期),RAS到CAS延迟时间:RAS(2-3个时钟周期,用于决定正确的行地址),CAS延迟时

间(2-3时钟周期,用于决定正确的列地址),另外还需要1个时钟周期来传送数据,数据从

DRAM输出缓存通过芯片组到CPU的延迟时间(±2个时钟周期)。一般的说明内存延迟涉及

四个参数CAS(ColumnAddressStrobe行地址控制器)延迟,RAS(RowAddressStrobe

列地址控制器)-to-CAS延迟,RASPrecharge(RAS预冲电压)延迟,Act-to-Precharge

(相对于时钟下沿的数据读取时间)延迟。其中CAS延迟比较重要,它反映了内存从接受

指令到完成传输结果的过程中的延迟。大家平时见到的数据3—3—3—6中,第一参数就是

CAS延迟(CL=3)。当然,延迟越小速度越快。

内存基础

不管你信不信,RDRAM(Rambus)、DDRSDRAM甚至是EDORAM它们在本质上

讲是一样的。RDRAM、DDRRAM、SDRAM、EDORAM都属于DRAM(DynamicRAM),

即动态内存。所有的DRAM基本单位都是由一个晶体管和一个电容器组成。请看

下图:

上图只是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倍。

不过它的极短的潜伏期和高速的时钟频率的确可以带来更高的带宽。

结构和功能(SDRAM)

内存最基本的单位是内存“细胞”,也就是我们前面展示给大家DRAM基本

单元示意图所示的部分,下面我们对这个部分通称为DRAM基本单元。

每个DRAM基本单元代表一个“位”:Bit(也就是一个比特),并且有一

个由列地址和行地址定义的唯一地址。

8个比特组成一个字节,它可代表256种组合(即2的八次幂),字节是内

存中最小的可寻址单元。

DRAM基本单元不能被单独寻址,否则现在的内存将会更加复杂,而且也没

有必要。

很多DRAM基本单元连接到同一个列线(Rowline)和同一个行线(Column

line),组成了一个矩阵结构,这个矩阵结构就是一个Bank。

大部分的SDRAM芯片由4个Bank组成,而SDRAMDIMM(DualInlineMemory

Module双列直插式)可能由8或者16个芯片组成。

SDRAMDIMM有14条地址线和64bit数据线(如果一个DIMM内存使用8bit

SDRAM芯片,那么你应该在内存条上看到8个芯片,当然有的DIMM使用4bit

SDRAM芯片,那么你将会在内存条上看到16片)。

以下是对插图的注释:

RowAddressBuffer:行地址缓冲

ColumnAddressBuffer:列地址缓冲

RowDECODER:行解码器

ColumnDECODER:列解码器

MemoryArray:内存阵列

SENSEAMP:传感放大器

由上图可见一个Bank由内存阵列、senseamp、一个行解码器、一个列解

码器组成。

如果要理解内存Bank内部工作状况,让我们看看当缓存没有命中后CPU从

系统主内存中调用数据的情况。

CPU需要依次读取一个32字节的数据,首先向芯片组发出请求,这通常需要

一个时钟周期芯片组将通过14条列地址线发送一个行地址,也就是这个行地址

被发送到DIMM所有的芯片上。

拥有相同行地址的行被成为一个页面。换句话说,当芯片组向DIMM发送行

地址后,就打开了DIMM上一个页面。

每一个内存bank都有一个传感放大器(senseampplifier),用来放大从基

本单元读出(或者写入)内容时电荷。

传感放大器根据从芯片组发送来的行地址读出相应的数据,这个读出过程

需要一定的时间这就是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的不同行地址的数据,

这种情况是最糟糕的。

这样就意味着传感放大器需要首先回写旧的行地址,然后再转换新的行地

址。回写旧的行地址所占用的时间叫做“预转换时间”(Prechargetime)。

当遇到这种情况时,是最坏的情况。

带宽问题

要理解延迟时间和带宽之间的联系,我们以PC100SDRAM-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(记住我们前面说过假设是PC100SDRAM),很容易就能算出每秒可以传

输320MB。

由此可见:延迟时间同带宽的关系非常密切,特别对于经常从缓存中调入

数据的PC系统而言更是这样。

从上面的例子你会发现,即使是真正的PC100SDRAM(222)在最好的情况下

(100%的页面命中率),它的带宽也不过达到最高理论带宽800MB/s的40%。

对于PC133SDRAM内存情况是怎么样的?表二列出的是PC133CAS2、PC133

Cas3、PC100CAS2情况下的带宽。

可以看出,PC133CAS3完成任务比PC100CAS2还慢一个时钟周期,所以

对于某些访问内存操作比较少的程序(也就是在没有超越PC100CAS2实际带

宽上限的内存),配备PC100CAS2同配备PC133CAS2的系统表现是一样的。

对于具有512KB二级缓存的Athlon来说,配备PC133和PC100所表现出

来的差异不大。

而对于Duron,当访问内存的操作增多时,高带宽的PC133CAS3将会显示

出明显的优势。

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

现在已经掌握了内存的基本知识,所以应该能理解下面讲述的为什么BX芯

片组的主板超频到133MHz性能会比别的比如VIAApollo133等芯片组好;为

什么133外频的KX133并不比100外频的AMD750芯片组有明显的性能提高。因

为BX/AMD750芯片组运行在同系统FSB同样的时钟频率下,而VIA芯片组是异

步的,因为它可以支持PC66、PC100、PC133SDRAM。

我们来比较一下超频在133MHz外频的BX芯片组、工作在异步内存模式下

的VIAApolloPro133A芯片组、以及工作在标准100外频的BX芯片组配备不

同类型SDRAM的情况。

如果内存工作在异步模式下,那么整个系统延迟时间应该至少增加一个时

钟周期。133MHz系统的一个时钟周期是7.5ns,而100MHz系统的时钟周期是

10ns,所以工作在异步内存方式的下的133MHz系统需要一种缓存,因为当周期

为7.5ns的时钟周期结束时,周期为10ns的时钟周期还没有结束,请看下图。

133MHz异步内存系统比133MHzBX同步提供获得第一个字节的延迟时间多

用了15%,而且带宽少了10%。

如果同步过程需要更多的时钟周期,BX的优势会更加明显。

当配备133MHzCAS2SDRAM内存的异步系统需要两个额外时钟周期时,性

能上会连PC100MHz的系统也比不上了。

所以当你升级了主板以后发现系统性能并没有多大提高反而有下降的时

候,别怪罪芯片组,因为你的钱买到的是更大的兼容性,而不一定是速度。

结论

现在的CPU大都运行在8倍频甚至更高倍频上,具有了速度更快的但是容

量更小的二级缓存(比如新Athlon&Athlon,Coppermine&Katmai),这样内存

子系统面临的工作压力随之升高。

现在对于基于DRAM技术的内存不要抱更大的幻想了,因为DRAM技术决定

了数据从DRAM通过芯片组传输到CPU也至少需要4个时钟周期。

另外,DRAM每次读取之后都需要刷新,这就又增加了延迟时间。

虽然理论上SDRAM的峰值带宽是800到1066MB/s,但是实际上即使在最理

想的状态(比如命中率100%),它所能达到的实际带宽也只是理论峰值的40

%而已。

献花(0)
+1
(本文系dsxzqmok首藏)