1、1、认识内存相关工作流程与参数首先,我们还是先了解一下内存的大体结构工作流程,这样会比较容量理解这些参数在其中所起到的作用。这部分的讲述以 SDRAM 为例,因为时序图看起来会简单一些,但相关概念与 DDR SDRAM 的基本相同。SDRAM 的内部是一个存储阵列,将数据“填”进去,你可以它想象成一张表格。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格(存储阵列)叫什么呢?它就是逻辑 Bank(Logical Bank,下文简称 L-Bank)。SDR
2、AM 内部 L-Bank 示意图,这是一个 8X8 的阵列,B 代表 L-Bank 地址编号,C 代表列地址编号,R 代表行地址编号。如果寻址命令是 B1、R2、C6,就能确定地址是图中红格的位置目前的内存芯片基本上都是 4 个 L-Bank 设计,也就是说一共有 4 个这样的“表格”。寻址的流程也就是先指定 L-Bank 地址,再指定行地址,然后指列地址最终的确寻址单元。在实际工作中,L-Bank 地址与相应的行地址是同时发出的,此时这个命令称之为“行有效”或“行激活”(Row Active)。在此之后,将发送列地址寻址命令与具体的操作命令(是读还是写),这两个命令也是同时发出的,所以一般都
3、会以“读/写命令”来表示列寻址。根据相关的标准,从行有效到读/写命令发出之间的间隔被定义为 tRCD,即 RAS to CAS Delay(RAS 至 CAS 延迟,RAS 就是行地址选通脉冲,CAS 就是列地址选通脉冲),大家也可以理解为行选通周期。tRCD 是 SDRAM 的一个重要时序参数,可以通过主板 BIOS 经过北桥芯片进行调整。广义的 tRCD 以时钟周期(tCK,Clock Time)数为单位,比如tRCD=2,就代表延迟周期为两个时钟周期,具体到确切的时间,则要根据时钟频率而定,对于 PC100 SDRAM(时钟频率等同于 DDR-200),tRCD=2,代表 20ns 的延
4、迟,对于PC133(时钟频率等于 DDR-266)则为 15ns。图中显示的是 tRCD=3接下来,相关的列地址被选中之后,将会触发数据传输,但从存储单元中输出到真正出现在内存芯片的 I/O 接口之间还需要一定的时间(数据触发本身就有延迟,而且还需要进行信号放大),这段时间就是非常著名的 CL(CAS Latency,列地址脉冲选通潜伏期)。CL 的数值与 tRCD 一样,以时钟周期数表示。如 DDR-400,时钟频率为 200MHz,时钟周期为 5ns,那么 CL=2 就意味着 10ns 的潜伏期。不过 ,CL 只是针对读取操作,对于 SDRAM,写入是没有潜伏期的,对于 DDR SDRAM
5、,写入潜伏期在 0.75 至 1.25 个时针周期之间。图中标准 CL=2,tAC 是有关内部信号处理的周期,可以不用关心目前内存的读写基本都是连续的,因为与 CPU 交换的数据量以一个 Cache Line(即CPU 内 Cache 的存储单位)的容量为准,一般为 64 字节。而现有的 P-Bank 位宽为 8 字节,那么就要一次连续传输 8 次,这就涉及到我们也经常能遇到的突发传输的概念。突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输的周期数就是突发长度(Burst Lengths,简称 BL)。在进行突发传输时,只要指定起始列地址与突发长度,内存就会依次地
6、自动对后面相应数量的存储单元进行读/写操作而不再需要控制器连续地提供列地址(SDRAM 与 DDR SDRAM 的突发传输对列寻址的操作数量有所不同,在此不再细说)。这样,除了第一笔数据的传输需要若干个周期(主要是之前的延迟,一般的是 tRCD+CL)外,其后每个数据只需一个周期的即可获得。突发连续读取模式:只要指定起始列地址与突发长度,后续的寻址与数据的读取自动进行,而只要控制好两段突发读取命令的间隔周期(与 BL 相同)即可做到连续的突发传输。在数据读取完之后,为了腾出读出放大器以供同一 L-Bank 内其他行的寻址并传输数据,内存芯片将进行预充电的操作来关闭当前工作行。还是以上面那个 L
7、-Bank 示意图为例。当前寻址的存储单元是 B1、R2、C6。如果接下来的寻址命令是 B1、R2、C4,则不用预充电,因为读出放大器正在为这一行服务。但如果地址命令是 B1、R4、C4,由于是同一 L-Bank的不同行,那么就必须要先把 R2 关闭,才能对 R4 寻址。从开始关闭现有的工作行,到可以打开新的工作行之间的间隔就是 tRP(Row Precharge command Period,行预充电有效周期),单位也是时钟周期数。本图为一个完整的从行寻址到行关闭的时序图,图中所表示的 tRCD=2、CL=2、tRP=2从上图中我们还发现了一个在 DDR SDRAM 时代经常被人提起,也经常会在 BIOS 中出现的参数 tRAS。tRAS 在内存规范中的解释是 ACTIVE to PRECHARGE command,即从行有效命令发出至预充电命令发出之间的间隔。这也是本专题第一部分中所要重要谈到的话题。在深入分析它之前,我们先了解一下哪些因素会影响到内存的性能。