SDRAM的Prefetch,即预取功能,是指SDRAM内核一个时钟周期操作的位宽。而Burst Length,即突发长度,是指在DQ总线上一个操作可以存取的Burst个数。所以,二者的时钟域不同。Prefetch是内核低频时钟率的概念。Burst是IO上高频时钟域的概念。从内核到IO上,即读SDRAM方向,存在n-bit的并/串转换。从IO到内核的写方向,存在n-bit的串/并转换。
|
Prefetch
|
Burst Length
|
DDR
|
2n-bit
|
BL2, BL4, BL8
|
DDR2
|
4n-bit
|
BL4, BL8
|
DDR3
|
8n-bit
|
BL8, BC4
|
DDR4
|
8n-bit
|
BL8, BC4
|
DDR5
|
16n-bit
|
BL16,BC8
|
下面从SDRAM的内部框图来理解Prefetch的概念。
从上面的DDR,DDR2,DDR3,DDR4,DDR5的内部结构框图可以看出,在存取SDRAM阵列的时候,Col列地址的低比特是没有用到的。比如DDR,col[0]没用,内核一次存取2bit,所以prefetch就是2n-bit,其中的n是指DQ的宽度。同理,DDR2,col[1:0]没用,内核一次存取4bit,所以prefetch就是4n-bit。以此类推,所以DDR3/4就是8n-bit prefetch,而DDR5是16n-bit prefetch。
再来说说Burst Length。
以DDR5 x16DQ为例,就是DQ宽度为16 bits。从上面的DDR5框图可以看到,内核一次存取是256bit,即16n-bit prefetch,也就是16 x16 bits。这256 bits数据在宽度为16的DQ总线上就需要16个Burst,所以通常DDR5的Burst Length就为16。由于DQ是使用DQS双沿采样的,所以需要8个DQS周期才能传完这256 bits数据。所以内核时钟频率是IO外部时钟频率的1/8。某些应用可能一次不需要256 bits这么多的数据,只需要128 bits数据。这时候,可以只选择其中的128 bits数据出现在DQ总线上,这就是8个Burst数据,即BC8,Burst Chop 8。
同样的道理,由于DDR3/DDR4是8n-bit prefetch,所以他们支持的Burst Length通常为8,或者只需要一半的数据的BC4。
对于DDR/DDR2,可以支持多次prefetch,然后一次Burst在DQ上面。例如DDR支持BL=8,那内核需要4次2n-bit预取,然后在DQ上1次Burst。

