荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: winsome (wo), 信区: Hardware
标  题: 高手进阶,终极内存技术指南——完整版(三)
发信站: 荔园晨风BBS站 (Wed Dec 18 12:51:28 2002), 站内信件

SDRAM与内存基础概念(五)

4、 数据输出(读)

在选定列地址后,就已经确定了具体的存储单元,剩下的事情就是数据通过数据
I/O通道(DQ)输出到内存总线上了。但是在CAS发出之后,仍要经过一定的时间才
能有数据输出,从CAS与读取命令发出到第一笔数据输出的这段时间,被定义为CL
(CAS Latency,CAS潜伏期)。由于CL只在读取时出现,所以CL又被称为读取潜伏
期(RL,Read Latency)。CL的单位与tRCD一样,为时钟周期数,具体耗时由时钟
频率决定。

不过,CAS并不是在经过CL周期之后才送达存储单元。实际上CAS与RAS一样是瞬间
到达的,但CAS的响应时间要更快一些。为什么呢?假设芯片位宽为n个bit,列数
为c,那么一个行地址要选通n×c个存储体,而一个列地址只需选通n个存储体。但
存储体中晶体管的反应时间仍会造成数据不可能与CAS在同一上升沿触发,肯定要
延后至少一个时钟周期。

由于芯片体积的原因,存储单元中的电容容量很小,所以信号要经过放大来保证其
有效的识别性,这个放大/驱动工作由S-AMP负责,一个存储体对应一个S-AMP通道
。但它要有一个准备时间才能保证信号的发送强度(事前还要进行电压比较以进行
逻辑电平的判断),因此从数据I/O总线上有数据输出之前的一个时钟上升沿开始
,数据即已传向S-AMP,也就是说此时数据已经被触发,经过一定的驱动时间最终
传向数据I/O总线进行输出,这段时间我们称之为tAC(Access Time from CLK,时
钟触发后的访问时间)。tAC的单位是ns,对于不同的频率各有不同的明确规定,
但必须要小于一个时钟周期,否则会因访问时过长而使效率降低。比如PC133的时
钟周期为7.5ns,tAC则是5.4ns。需要强调的是,每个数据在读取时都有tAC,包括
在连续读取中,只是在进行第一个数据传输的同时就开始了第二个数据的tAC。

CL的数值不能超出芯片的设计规范,否则会导致内存的不稳定,甚至开不了机(超
频的玩家应该有体会),而且它也不能在数据读取前临时更改。CL周期在开机初始
化过程中的MRS阶段进行设置,在BIOS中一般都允许用户对其调整,然后BIOS控制
北桥芯片在开机时通过A4-A6地址线对MR中CL寄存器的信息进行更改。

不过,从存储体的结构图上可以看出,原本逻辑状态为1的电容在读取操作后,会
因放电而变为逻辑0。所以,以前的DRAM为了在关闭当前行时保证数据的可靠性,
要对存储体中原有的信息进行重写,这个任务由数据所经过的刷新放大器来完成,
它根据逻辑电平状态,将数据进行重写(逻辑0时就不重写),由于这个操作与数
据的输出是同步进行互不冲突,所以不会产生新的重写延迟。后来通过技术的改良
,刷新放大器被取消,其功能由S-AMP取代,因为在读取时它会保持数据的逻辑状
态,起到了一个Cache的作用,再次读取时由它直接发送即可,不用再进行新的寻
址输出,此时数据重写操作则可在预充电阶段完成。

5、数据输入(写)
数据写入的操作也是在tRCD之后进行,但此时没有了CL(记住,CL只出现在读取操
作中),行寻址与列寻址的时序图和上文一样,只是在列寻址时,WE#为有效状态

由于数据信号由控制端发出,输入时芯片无需做任何调校,只需直接传到数据输入
寄存器中,然后再由写入驱动器进行对存储电容的充电操作,因此数据可以与CAS
同时发送,也就是说写入延迟为0。不过,数据并不是即时地写入存储电容,因为
选通三极管(就如读取时一样)与电容的充电必须要有一段时间,所以数据的真正
写入需要一定的周期。为了保证数据的可靠写入,都会留出足够的写入/校正时间
(tWR,Write Recovery Time),这个操作也被称作写回(Write Back)。tWR至
少占用一个时钟周期或再多一点(时钟频率越高,tWR占用周期越多),有关它的
影响将在下文进一步讲述。

6、突发长度

突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传
输所涉及到存储单元(列)的数量就是突发长度(Burst Lengths,简称BL)。
在目前,由于内存控制器一次读/写P-Bank位宽的数据,也就是8个字节,但是在现
实中小于8个字节的数据很少见,所以一般都要经过多个周期进行数据的传输。上
文讲到的读/写操作,都是一次对一个存储单元进行寻址,如果要连续读/写就还要
对当前存储单元的下一个单元进行寻址,也就是要不断的发送列地址与读/写命令
(行地址不变,所以不用再对行寻址)。虽然由于读/写延迟相同可以让数据的传
输在I/O端是连续的,但它占用了大量的内存控制资源,在数据进行连续传输时无
法输入新的命令,效率很低(早期的FPE/EDO内存就是以这种方式进行连续的数据
传输)。为此,人们开发了突发传输技术,只要指定起始列地址与突发长度,内存
就会依次地自动对后面相应数量的存储单元进行读/写操作而不再需要控制器连续
地提供列地址。这样,除了第一笔数据的传输需要若干个周期(主要是之前的延迟
,一般的是tRCD+CL)外,其后每个数据只需一个周期的即可获得。在很多北桥芯
片的介绍中都有类似于X-1-1-1的字样,就是指这个意思,其中的X代表就代表第一
笔数据所用的周期数。

至于BL的数值,也是不能随便设或在数据进行传输前临时决定。在上文讲到的初始
化过程中的MRS阶段就要对BL进行设置。目前可用的选项是1、2、4、8、全页(
Full Page),常见的设定是4和8。顺便说一下,BL能否更改与北桥芯片的设计有
很大关系,不是每个北桥都能像调整CL那样来调整BL。某些芯片组的BL是定死而不
可改的,比如Intel芯片组的BL基本都为4,所以在相应的主板BIOS中也就不会有
BL的设置选项。而由于目前的SDRAM系统的数据传输是以64bit/周期进行,所以在
一些BIOS也把BL用QWord(4字,即64bit)来表示。如4QWord就是BL=4。

另外,在MRS阶段除了要设定BL数值之外,还要具体确定读/写操作的模式以及突发
传输的模式。突发读/突发写,表示读与写操作都是突发传输的,每次读/写操作持
续BL所设定的长度,这也是常规的设定。突发读/单一写,表示读操作是突发传输
,写操作则只是一个个单独进行。突发传输模式代表着突发周期内所涉及到的存储
单元的传输顺序。顺序传输是指从起始单元开始顺序读取。假如BL=4,起始单元编
号是n,顺序就是n、n+1、n+2、n+3。交错传输就是打乱正常的顺序进行数据传输
(比如第一个进行传输的单元是n,而第二个进行传输的单元是n+2而不是n+1),
至于交错的规则在SDRAM规范中有详细的定义表,但在这此出于必要性与篇幅的考
虑就不列出了。

SDRAM与内存基础概念(六)

7、预充电

由于SDRAM的寻址具体独占性,所以在进行完读写操作后,如果要对同一L-Bank的
另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。
L-Bank关闭现有工作行,准备打开新行的操作就是预充电(Precharge)。预充电
可以通过命令控制,也可以通过辅助设定让芯片在每次读写操作之后自动进行预充
电。实际上,预充电是一种对工作行中所有存储体进行数据重写,并对行地址进行
复位,同时释放S-AMP(重新加入比较电压,一般是电容电压的1/2,以帮助判断读
取数据的逻辑电平,因为S-AMP是通过一个参考电压与存储体位线电压的比较来判
断逻辑值的),以准备新行的工作。具体而言,就是将S-AMP中的数据回写,即使
是没有工作过的存储体也会因行选通而使存储电容受到干扰,所以也需要S-AMP进
行读后重写。此时,电容的电量(或者说其产生的电压)将是判断逻辑状态的依据
(读取时也需要),为此要设定一个临界值,一般为电容电量的1/2,超过它的为
逻辑1,进行重写,否则为逻辑0,不进行重写(等于放电)。为此,现在基本都将
电容的另一端接入一个指定的电压(即1/2电容电压),而不是接地,以帮助重写
时的比较与判断。

现在我们再回过头看看读写操作时的命令时序图,从中可以发现地址线A10控制着
是否进行在读写之后当前L-Bank自动进行预充电,这就是上文所说的“辅助设定”
。而在单独的预充电命令中,A10则控制着是对指定的L-Bank还是所有的L-Bank(
当有多个L-Bank处于有效/活动状态时)进行预充电,前者需要提供L-Bank的地址
,后者只需将A10信号置于高电平。

在发出预充电命令之后,要经过一段时间才能允许发送RAS行有效命令打开新的工
作行,这个间隔被称为tRP(Precharge command Period,预充电有效周期)。和
tRCD、CL一样,tRP的单位也是时钟周期数,具体值视时钟频率而定。

8、刷新

之所以称为DRAM,就是因为它要不断进行刷新(Refresh)才能保留住数据,因此
它是DRAM最重要的操作。

刷新操作与预充电中重写的操作一样,都是用S-AMP先读再写。但为什么有预充电
操作还要进行刷新呢?因为预充电是对一个或所有L-Bank中的工作行操作,并且是
不定期的,而刷新则是有固定的周期,依次对所有行进行操作,以保留那些久久没
经历重写的存储体中的数据。但与所有L-Bank预充电不同的是,这里的行是指所有
L-Bank中地址相同的行,而预充电中各L-Bank中的工作行地址并不是一定是相同的


那么要隔多长时间重复一次刷新呢?目前公认的标准是,存储体中电容的数据有效
保存期上限是64ms(毫秒,1/1000秒),也就是说每一行刷新的循环周期是64ms。
这样刷新速度就是:行数量/64ms。我们在看内存规格时,经常会看到4096
Refresh Cycles/64ms或8192 Refresh Cycles/64ms的标识,这里的4096与8192就
代表这个芯片中每个L-Bank的行数。刷新命令一次对一行有效,发送间隔也是随总
行数而变化,4096行时为15.625μs(微秒,1/1000毫秒),8192行时就为7.8125
μs。

刷新操作分为两种:自动刷新(Auto Refresh,简称AR)与自刷新(Self
Refresh,简称SR)。不论是何种刷新方式,都不需要外部提供行地址信息,因为
这是一个内部的自动操作。对于AR, SDRAM内部有一个行地址生成器(也称刷新计
数器)用来自动的依次生成行地址。由于刷新是针对一行中的所有存储体进行,所
以无需列寻址,或者说CAS在RAS之前有效。所以,AR又称CBR(CAS Before RAS,
列提前于行定位)式刷新。由于刷新涉及到所有L-Bank,因此在刷新过程中,所有
L-Bank都停止工作,而每次刷新所占用的时间为9个时钟周期(PC133标准),之后
就可进入正常的工作状态,也就是说在这9 个时钟期间内,所有工作指令只能等待
而无法执行。64ms之后则再次对同一行进行刷新,如此周而复始进行循环刷新。显
然,刷新操作肯定会对SDRAM的性能造成影响,但这是没办法的事情,也是DRAM相
对于SRAM(静态内存,无需刷新仍能保留数据)取得成本优势的同时所付出的代价


SR则主要用于休眠模式低功耗状态下的数据保存,这方面最著名的应用就是STR(
Suspend to RAM,休眠挂起于内存)。在发出AR命令时,将CKE置于无效状态,就
进入了SR模式,此时不再依靠系统时钟工作,而是根据内部的时钟进行刷新操作。
在SR期间除了CKE之外的所有外部信号都是无效的(无需外部提供刷新指令),只
有重新使CKE有效才能退出自刷新模式并进入正常操作状态。

9、数据掩码

在讲述读/写操作时,我们谈到了突发长度。如果BL=4,那么也就是说一次就传送
4×64bit的数据。但是,如果其中的第二笔数据是不需要的,怎么办?还都传输吗
?为了屏蔽不需要的数据,人们采用了数据掩码(Data I/O Mask,简称DQM)技术
。通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。这里需要强调的是
,在读取时,被屏蔽的数据仍然会从存储体传出,只是在“掩码逻辑单元”处被屏
蔽。DQM由北桥控制,为了精确屏蔽一个P-Bank位宽中的每个字节,每个DIMM有8个
DQM信号线,每个信号针对一个字节。这样,对于4bit位宽芯片,两个芯片共用一
个DQM信号线,对于8bit位宽芯片,一个芯片占用一个DQM信号,而对于16bit位宽
芯片,则需要两个DQM引脚。

SDRAM官方规定,在读取时DQM发出两个时钟周期后生效,而在写入时,DQM与写入
命令一样是立即成效。

有关内存内部的基本操作就到此结束,其实还有很多内存的操作没有描述,但都不
是很重要了,限于篇幅与必要性,我们不在此介绍,有兴趣的读者可以自行查看相
关资料。
       图:http://www.pcpop.com.cn/read.asp?id=614&page=7


--
※ 修改:·winsome 於 Dec 18 13:04:54 修改本文·[FROM: 192.168.32.247]
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.32.247]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店