1.DDR SDRAM
即Double Data Rate SDRAM。DDR在每次传输数据的时候,在每个时钟脉冲的上升沿和下降沿都传输一次数据,所以称为“Double Data Rate”。其数据传输频率是核心频率的2倍。
2.DDR的内部结构
DDR的内部一般有8个Bank,每个Bank都是一个存储阵列,由M行N列组成。在寻址时,只要给出需要哪一个Bank的哪一行,以及哪一行中的哪一列,即可找到其中的数据。
而左下角的Command decoder模块,则接收4个控制命令,这4个控制命令的高低电平组合决定了对这个Bank的某个数据进行怎么样的操作(包括no operation无操作、active激活、read读、write写、precharge关闭等)。
3.DDR的行为介绍
如图,4个控制信号的逻辑组合决定了DDR内部相应数据将要进行什么操作。如0111表示无操作,0011表示激活所选的Bank和对应的行。
在实际工作中,寻址的流程是先指定Bank和行地址,再指定列地址和想要进行的操作。也就是说,Bank地址和相应的行地址是同时被选择的,此时这个命令成为“行激活”。在此之后,将发送列地址寻址命令与具体的操作,这两个命令也是同时发出的。另外,同一时刻对同一个Bank,只能读取其某一行的地址,即不能对同一个bank的多行同时进行操作。
4.tRCD和CL
tRCD(RAS to CAS Delay),表示从行有效到读/写命令发出之间的间隔,理解为行选通周期,单位为时钟周期数。即若tRCD=3,表示从行有效到读/写命令发出之间至少需要间隔3个时钟周期。
CL(CAS Latency),表示相关地址被选中后,数据从存储单元中输出到真正出现在内存芯片的I/O接口之间需要的时间,单位也是时钟周期数。即若CL=6,表示从列有效及发出相应操作后到数据出现在输出端需要至少6个时钟周期的延迟。
5.突发传输
突发传输,是指在同一行中对相邻的存储单元连续进行数据传输的方式,连续传输的周期就是突发长度(Burst Length,一般为4或8)。在进行突发传输时,只需指定起始列地址与突发长度,内存就会依次地自动对后面相应数量的存储单元进行读/写操作,而不再需要控制器提供列地址。这样,除了第一笔数据的传输需要若干个周期,其后每个数据只需一个周期即可获得。
6.为什么DDR中要有多个Bank?
在上面的介绍中说到,在DDR中存在tRCD和CL,也就是说,如果只有一个Bank,那么在对其进行寻址和操作时,由于tRCD和CL的存在,就会出现大量的NOP操作,浪费了大量的时钟周期。而如果有多个Bank,就可以在这些空闲的NOP时钟周期中插入其他Bank的操作,从而节约了时钟周期,提高了传输的速率。
如图,在act_b0操作激活bank0后,在两个时钟周期(tRCD=2)后对其发出写命令。而在写命令之后,又需要2个时钟周期(CL=2)的延迟,数据才被写入。在这之间,将激活bank1的指令act_b1插入write_b0后的NOP中,然后在关闭bank0的操作pre_b0之前的一个NOP中插入对bank1的读操作指令read_b1,这样在bank0关闭后,仅用了一个时钟周期的延迟就继续开始进行bank1的读操作了。而如果在满足tRCD和CL的条件下,在对其中一个bank进行操作的同时,尽可能多地将其他7个bank的操作插入到其中的NOP中,就能大幅提高传输的速率和带宽。