SDRAM 的工作原理
SDRAM 的工作原理解说
SDRAM是Synchronous Dynamic Random Access Memory(同步动态随机存储器)的简称,它将CPU和RAM通过一个相同的时钟锁在一起,使得RAM和CPU能够共享一个钟周期,以相同的速度同步工 作,从而解决了CPU和RAM之间的速度不匹配问题,避免了在系统总线对异步DRAM进行操作时同步所需的额外等待时间,可加快数据的传输速度。
SDRAM 的结构特点
存储器的最初结构为线性,它在任何时刻,地址线中都只能有一位有效。设容量为N×M 的存储器有S0-Sn-1 条地址线;当容量增大时,地址选择线的条数也要线性增多,利用地址译码虽然可有效地减少地址选择线的条数,但这种存储器的长宽比太大,显然,这在工业上是无法实现的。而且由于连线的延时与连线的长度成正比,这样的设计会使存储器的存取速度很慢。为了解决这个问题,现在常用的存储器都是将存储单元设计成阵列形状,使其长宽比接近1:1。这样,电路就必须增加一个列地址译码器,才能选出正确的存储单元。这样,整个存储器的地址线被分为行地址线和列地址线,行地址线要将要选择执行读或写操作的行,而列地址线则可从被选中的一行中再选出一个用于真正执行读或写操作的存储单元。
存储原理
SDRAM寻址方式:
SDRAM 的行地址线和列地址线是分时复用的,即地址线要分两次送出,先送行地址线,再送列地址线。这样可进一步减少地址线的数量、提高器件的性能,但寻址过程会由此变得复杂,新型的SDRAM 的容量一般比较大,如果还采用简单的阵列结构,就会使存储器的字线和位线的长度、内部寄生电容及寄生电阻都变得很大,从而使整个存储器的存取速度严重下降,实际上,现在SDRAM 一般都以Bank(存储体或存储块)为组织,来将SDRAM 分为很多独立的小块,然而由Bank 地址线BA 控制Bank 之间的选择;SDRAM 的行、列地址线贯穿所有的Bank;每个Bank的数据位宽同整个存储器的相同。这样,Bank 内的字线和位线的长度就可被限制合适的范围内,从而加快存储器单元的存取速度,另外,BA 也可以使被选中的Bank 处于正常工作模式,而使没有被选中的Bank 工作在低功耗模式下,这样还可以降低SDRAM 的功耗。
SDRAM刷新过程:
为了减少MOS 管的数量、降低功耗、提高集成度和存储容量,SDRAM 都是利用其内部电容存储信息,由于电容的放电作用,必须每隔一段时间给电容充电才能使存储在电容里的数据信息不丢失,这就是刷新过程,这种机制使SDRAM 的控制过程变的更加复杂,从而给应用带来难度。
由于SDRAM是利用其内部的电容来存储数据,所以需要不断进行刷新(Refresh)才能保留住数据。刷新操作有固定的周期,以行为单位进行刷新,依次 对所有行进行操作,以保留那些久久没经历重写的存储体中的数据。与所有L-Bank预充电不同的是,这里的行是指所有L-Bank中地址相同的行,而预充 电中各L-Bank中的工作行地址并不是一定是相同的。存储体中电容的数据有效保存期上限是64ms(毫秒,1/1000秒),也就是说每一行刷新的循环 周期是64ms。这样刷新速度就是:行数量/64ms。刷新命令一次对一行有效,发送间隔也是随总行数而变化。
刷新操作分为两种:自动刷新(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有效才能退出自刷新模式并进入正常操作状态。
SDRAM 的基本信号
引脚功能说明:
/RAS :Row Address Strobe.行地址脉冲选通器,使行地址有效。低电平有效。
/CAS:Column Address Strobe 列地址脉冲选通器,使列地址有效。低电平有效。
CLK,/CLK:时钟信号输入引脚。
CKE:Clock Enable 当这个引脚处于低电平期间,提供给所有bank预充电和刷新的操作。高电平时有效。
/CS:芯片选择(Chip Select),当/CS为高电平时所有命令被掩盖,无效。在芯片工作时/CS处于低电平状态。
/WE:写入信号(Write Enable)。DQ0-DQ15:数据输入输出接口。
BA0,BA1:Bank地址输入信号引脚,BA0和BA1信号决定了由**哪一个bank,进行读写或者预充电操作;BA0和BA1也用于定义 Mode寄存器中的相关命令数据。
A0-A12:地址输入引脚。行地址线为:A0-A12,列地址线为:A0-A9,分时复用。其中A10(=AP)在预充电命令中决定预充电模式。
DQ0-DQ31:双向数据输入输出总线。
DM0-DM3:输入数据掩码。DM是在写入数据时的输入数据掩码,当DM为高电平时写入数据过程中,输入数据将会被屏蔽。其中DM0-3分别控制 不同的输入数据线部分:DM0->DQ0-DQ7; DM1->DQ8-DQ15; DM2->DQ16-DQ23; DM3->DQ24-DQ31。
SDRAM 的基本命令
要正确的对SDRAM 进行操作,就需要输入多种命令:包括模式寄存器设置、预充电、突发停止、空操作等命令。SDRAM 内部的状态会根据表1 的命令进行转移,其中,命令COM={CS#;RAS#;CAS#;WE#}。
初始化操作
SDRAM 在上电以后必须先对其进行初始化操作,而后才能对其进行其他操作。出初始化操作
具体步骤如下:
1.启动设备核心电源VDD和设备I/O电源VDDQ。声明并维持CKE引脚为高电平(CKE引脚为Clock Enable,时钟使能信号,高电平表示启动内部时钟信号),等到VDD和VDDQ稳定后并且CKE设为高电平,应用稳定时钟。SDRAM 在上电以后需要等待100-200μs,在等待时间结束后还至少要执行一条空操作命令;
(2)SDRAM 执行一条预充电命令后,要执行一条空操作命令,这两个操作会使所有的存储单元进行一次预充电,从而使所有阵列中的器件处于待机状态;
某些memory的引脚A10(=AP Auto Precharge)可以对预充电的模式进行选择,当A10=LOW时,给单个bank pre-charge,bank由BA0和BA1引脚进行选择;当A10=HIGH时,给所有的bank进行precharge。
(3)SDRAM 要执行两条自刷新命令,每一条刷新命令之后,都要执行一条空操作命令,这些操作可使SDRAM 芯片内部的刷新及计数器进入正常运行状态,以便SDRAM 为模式寄存器编程做好准备;
(4)执行加载模式寄存器(LOAD MODE REGISTER)命令,Mode Register一般被用于定义SDRAM运行的模式,寄存器里一般设置了读取延迟,burst长度,CAS,burst类型,操作模式,还有是设置SDRAM是工 作在单个读写操作还是burst操作下。 Mode Register通过LOAD MODE REGISTER命令进行编程,这组信息将会一直保存在Mode Register中直到内存掉电之后才会消失。而这个寄存器的设置也是通过地址线来设置的,所以在发出Load Mode Register命令后要做一个操作是使得在SDRAM的地址线上的值就是你要设置的值。注意!这个操作是8位的操作。
Mode Register中的
M0-M2是用来定义突发长度(burst length)的,
M3定义突发类型(sequential或者interleaved),
M4-M6定义CAS延迟,
M7和M8定义运行模式,
M9定义 写入突发模式(write burst mode),
M10和 M11目前保留。
Mode Register必须在所有的bank都处于idle状态下才能被载入,在所有初始化工组都进行完毕之前,控制器必须等待一定的时间。在初始化过程中发生 了任何非法的操作都可能导致初始化失败从而导致整个计算机系统不能启动。设置完模式寄存器之后就进入了正常读写操作模式。
SDRAM 的基本读写操作
SDRAM的基本读操作需要控制线和地址线相配合地发出一系列命令来完成。
SDRAM 的读操作只有突发模式(Burst Mode);
而写操作则可以有突发写和非突发写两种模式,具体如下:
(1)带有预充电的突发读写模式,该模式一次能够访问的列地址的最大数为1、2、4、8;
(2)不带有机充电的全页读写、此模式可任意控制一次能够访问的列地址的最大数。 根据实际情况,本设计只选取了与本方法相关的基本操作命令,并没有设计通用的控制器,图3 是本方案的SDRAM 内部状态转移图。
SDRAM的基本读操作需要控制线和地址线相配合地发出一系列命令来完成。
先发出BANK**命令(ACTIVE),并锁存相应的BANK地址(BA0、 BA1给出)和行地址(A0~A12给出)。BANK**命令后必须等待大于tRCD(SDRAM的RAS到CAS的延迟指标)时间后,发出读命令字。 CL(CAS延迟值)个工作时钟后,读出数据依次出现在数据总线上。在读操作的最后,要向SDRAM发出预充电(PRECHARGE)命令,以关闭已经**的页。等待tRP时间(PRECHARGE)命令,以关闭已经**的页。等待tRP时间(PRECHAREG命令后,相隔tRP时间,才可再次访问该 行)后,可以开始下一次的读、写操作。SDRAM的读操作只有突发模式(Burst Mode),突发长度为1、2、4、8可选。
SDRAM的基本写操作也需要控制线和地址线相配合地发出一系列命令来完成。先发出BANK**命令(ACTIVE),并锁存相应的BANK地址 (BA0、BA1给出)和行地址(A0~A12给出)。BANK**命令后必须等待大于tRCD的时间后,发出写命令字。写命令可以立即写入,需写入数据 依次送到DQ(数据线)上。在最后一个数据写入后延迟tWR时间。发出预充电命令,关闭已经**的页。等待tRP时间后,可以展开下一次操作。写操作可以 有突发写和非突发写两种。突发长度同读操作。
关于基本读写操作中的突发模式(brust mode)问题和数据掩码技术(即DM0-DM3的作用):
SDRAM的读操作只有突发模式(Burst Mode),突发长度为1、2、4、8可选,而写操作可以有突发写和非突发写两种。
首先介绍突发长度的概念:
突发长度:突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)的数量就是突发长度( Burst Lengths,简称BL)。
如果每一次对一个存储地址的读/写操作,都进行一次存储单元寻址,若要连续读/写就还要对当前存储单元的下一个单元进行寻址,也就是要不断的发送列地址与 读/写命令(行地址不变,所以不用再对行寻址)。虽然由于读/写延迟相同可以让数据的传输在I/O端是连续的,但它占用了大量的内存控制资源,在数据进行 连续传输时无法输入新的命令,效率很低。为此,人们开发了突发传输技术,只要指定起始列地址与突发长度,内存就会依次地自动对后面相应数量的存储单元进行 读/写操作而不再需要控制器连续地提供列地址。这样,除了第一笔数据的传输需要若干个周期 (主要是之前的延迟,一般的是tRCD+CL)外,其后每个数据只需一个周期的即可获得,这样可以大大节省时间。在讲述读/写操作时,我们谈到了突发长 度。如果BL=4,那么也就是说一次就传送4×64bit的数据。但是,如果其中的第二笔数据是不需要的,怎么办?还都传输吗?为了屏蔽不需要的数据,人 们采用了数据掩码(Data I/O Mask,简称DQM)技术。通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。这里需要强调的是,在读取时,被屏蔽的数据仍然会从存储体传 出,只是在“掩码逻辑单元”处被屏蔽,即上图中的IO Gating DQM Mask Logic。由DM0-DM3引脚的定义可知,DM0-3分别控制着输出数据总线的四个部分,选择需屏蔽的数据,具体控制DM信号输入的芯片部分如下所 示:
常见术语解释:
tRP:(Precharge command Period,预充电有效周期)tRP的单位也是时钟周期数,具体值视时钟频率而定。
Row Address Latch:行地址门闩线路 。
Column Address Latch:列地址门闩线路 。
tACmax:Access Time 存取时间,RAM 完成一次数据存取所用的平均时间(以纳秒为单位)。存取时间等于地址设置时间加延迟时间(初始化数据请求的时间和访问准备时间)。
tCH:clock high-level width 时钟周期高电平时宽,大概等于0.45-0.55个时钟周期。
tCL:clock low-level width 时钟周期低电平时宽,大概等于0.45-0.55个时钟周期。
tRCD:SDRAM的RAS到CAS的延迟指标。
读写操作示意图,读取命令与列地址一块发出(当WE#为低电平是即为写命令)
然而,在发送列读写命令时必须要与行有效命令有一个间隔,这个间隔被定义为tRCD,即RAS to CAS Delay(RAS至CAS延迟),大家也可以理解为行选通周期,这应该是根据芯片存储阵列电子元件响应时间(从一种状态到另一 种状态变化的过程)所制定的延迟。tRCD是SDRAM的一个重要时序参数,可以通过主板BIOS经过北桥芯片进行调整,但不能超过厂商的预定范围。广义的tRCD以时钟周期(tCK,Clock Time)数为单位,比如tRCD=2,就代表延迟周期为两个时钟周期,具体到确切的时间,则要根据时钟频率而定,对于PC100 SDRAM,tRCD=2,代表20ns的延迟,对于PC133则为15ns。
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。需要强调的是,每个数据在读取时都有t AC,包括在连续读取中,只是在进行第一个数据传输的同时就开始了第二个数据的tAC。
CL=2与tAC示意图
不过,从存储体的结构图上可以看出,原本逻辑状态为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端是连续的,但它占用了大量的内存控制资源,在数据进行连续传输时无法输入新的命令,效率很低(早期的FP E/EDO内存就是以这种方式进行连续的数据传输)。为此,人们开发了突发传输技术,只要指定起始列地址与突发长度,内存就会依 次地自动对后面相应数量的存储单元进行读/写操作而不再需要控制器连续地提供列地址。这样,除了第一笔数据的传输需要若干个周期 (主要是之前的延迟,一般的是tRCD+CL)外,其后每个数据只需一个周期的即可获得。在很多北桥芯片的介绍中都有类似于X- 1-1-1的字样,就是指这个意思,其中的X代表就代表第一笔数据所用的周期数。
非突发连续读取模式:不采用突发传输而是依次单独寻址,此时可等效于BL=1。虽然可以让数据是连续的传输,但每次都要发送列地 址与命令信息,控制资源占用极大。
突发连续读取模式:只要指定起始列地址与突发长度,寻址与数据的读取自动进行,而只要控制好两段突发读取命令的间隔周期(与BL 相同)即可做到连续的突发传输。
至于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。
Full Page(全页)突发传输是指L-Bank里的一行中所有存储单元从头到尾进行连续传输。
另外,在MRS阶段除了要设定BL数值之外,还要具体确定读/写操作的模式以及突发传输的模式。突发读/突发写,表示读与写操作 都是突发传输的,每次读/写操作持续BL所设定的长度,这也是常规的设定。突发读/单一写,表示读操作是突发传输,写操作则只是 一个个单独进行。突发传输模式代表着突发周期内所涉及到的存储单元的传输顺序。顺序传输是指从起始单元开始顺序读取。假如BL= 4,起始单元编号是n,顺序就是n、n+1、n+2、n+3。交错传输就是打乱正常的顺序进行数据传输(比如第一个进行传输的单 元是n,而第二个进行传输的单元是n+2而不是n+1),至于交错的规则在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的单位也是时钟周期数,具体值视时钟频率而定。
读取时预充电时序图:图中设定:CL=2、BL=4、tRP=2。自动预充电时的开始时间与此图一样,只是没有了单独的预充电命 令,并在发出读取命令时,A10地址线要设为高电平(允许自动预充电)。可见控制好预充电启动时间很重要,它可以在读取操作结束 后立刻进入新行的寻址,保证运行效率。
有些文章强调由于写回操作而使读/写操作后都有一定的延迟,但从本文的介绍中写可以看出,即使是读后立即重写的设计,由于是与数据输出同步进行,并不存在延迟。只有在写操作后进行其他的操作时,才会有这方面的影响。写操作虽然是0延迟进行,但每笔数据的真 正写入则需要一个足够的周期来保证,这段时间就是写回周期(tWR)。所以预充电不能与写操作同时进行,必须要在tWR之后才能 发出预充电命令,以确保数据的可靠写入,否则重写的数据可能是错的,这就造成了写回延迟。
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与写入命令一样是立即成效。