内存技术——SDRAM工作原理与基本操作

一、SDRAM 芯片初始化、行有效、列读写时序

SDRAM内部结构:        

 1.1 芯片初始化

        在 SDRAM 芯片内部有一个逻辑控制单元,并且有一个模式寄存器为其提供控制参数。因此,每次开机时 SDRAM 都要先对这个控制逻辑核心进行初始化。关键的阶段就在于模式寄存器(MR,Mode Register)的设置,简称 MRS(MR Set),这一工作由北桥芯片在 BIOS 的控制下进行,寄存器的信息由地址线来提供

 1.2 行有效

        初始化完成后,要想对一个 L-Bank 中的阵列进行寻址,首先就要确定行(Row),使之处于活动状态 (Active),然后再确定列。虽然之前要进行片选和 L-Bank 的定址,但它们与行有效可以同时进行。

        从图中可以看出,在 CS#、L-Bank 定址的同时,RAS(Row Address Strobe,行地址选通脉冲)也处于有效状态。此时 An 地址线则发送具体的行地址。 

1.3 列读写

       在 SDRAM 中,行地址与列地址线是共用的。 行地址确定之后,就要对列地址进行寻址了,地址线仍然是行地址所用的 A0-A11读或写是通过芯片的可写状态的控制来达到读/写的目的除了自刷新命令外,所有命令都是默认 CKE 有效

         列寻址信号与读写命令是同时发出的。虽然地址线与行寻址共用,但 CAS(Column Address Strobe, 列地址选通脉冲)信号则可以区分开行与列寻址的不同,配合 A0-A9,A11来确定具体的列地址。

二、SDRAM读写时序与突发长度

2.1 数据输出(读)

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

        实际上 CAS 与 RAS 一样是瞬间到达的,但存储体中晶体管的反应时间仍会造成数据不可能与 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 的作用,再次读取时由它直接发送即可,不用再进行新的寻址输出,此时数据重写操作则可在预充电阶段完成。

 2.2 数据输入(写)

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

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

2.3 突发长度

        突发(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。        

全页(Full Page)突发传输:

       狭义:是指L-bank里一行所有存储单元从头到尾进行连续传输,具体的突发长度(一行中存储单元数量)则要看内存芯片的具体设计。

       广义(常用):是指P-Bank所包含的每个芯片同一L-Bank同一行所有存储单元,这些存储单元的总和就是相对系统而言的页。(内存系统的每次传输都是以一个P-Bank位宽为单位的,需要多颗芯片集体工作。在每次寻址时,P-Bank中的每个芯片所得到的L-Bank地址与行地址都是相同的)

         在发送列读写命令时必须要与行有效命令有一个间隔,这个间隔被定义为 tRCD,即 RAS to CAS Delay(RAS 至 CAS 延迟),也可以理解为行选通周期,这应该是根据芯片存储阵列电子元件响应时间(从一种状态到另一种状态变化的过程)所制定的延迟。tRCD 是 SDRAM 的一个重要时序参数,可以通过主板 BIOS 经过北桥芯片进行调整,但不能超过厂商的预定范围。广义的 tRCD 以时钟周期(tCK,Clock Time)数为单位比如 tRCD=2,就代表延迟周期为两个时钟周期,具体到确切的时间,则要根据时钟频率而定,对于 PC100 SDRAM,tRCD=2,代表 20ns 的延迟,对于 PC133 则为 15ns。

 三、SDRAM芯片的预充电与刷新操作

3.1 预充电

        由于 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 的单位也是时钟周期数,具体值视时钟频率而定。

        有些文章强调由于写回操作而使读/写操作后都有一定的延迟,但从本文的介绍中写可以看出,即使是读后立即重写的设计,由于是与数据输出同步进行,并不存在延迟。只有在写操作后进行其他的操作时,才会有这方面的影响。

        写操作虽然是 0 延迟进行,但每笔数据的真正写入则需要一个足够的周期来保证,这段时间就是写回周期(tWR)。所以预充电不能与写操作同时进行,必须要在 tWR 之后才能发出预充电命令以确保数据的可靠写入,否则重写的数据可能是错的,这就造成了写回延迟。         

3.2 刷新

        之所以称为 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 有效才能退出自刷新模式并进入正常操作状态

3.3 数据掩码

        在讲述读/写操作时,我们谈到了突发长度。如果 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 与写入命令一样是立即生效

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值