DDR系列SDRAM存储芯片的高速率、高集成度和低成本使其理所当然成为存储芯片的一霸。在PC和消费电子领域当然是不必说,它被称为“主存”。其实,随着通信设备价格战愈演愈烈,在看起来水有点深的通信设备上,DDR系列存储芯片(当前主流是DDR3 SDRAM)也成为首选。很多网络处理芯片都需要配套的存储芯片来进行数据的缓存。比如流量管理芯片(Traffic Management)在决定允许哪个数据包通过时,数据包的内容是被缓存着的。或者路由转发芯片要根据IP地址查找路由表决定一个数据包的去向,这个路由表也需要缓存。因为前面说的优点,DDR系列成为这些缓存的首选。
当然,世上没有完美 ,DDR也是如此。甚至可以说DDR的效率是一个世界性难题。所以,在上面提到的那些芯片的设计中,DDR存储控制器的设计是其中重要的一部分。在探讨提高访问效率的方法前,我们先看看DDR有哪些主要的影响访问效率的时间参数。
tRCD - ACTIVE to internal READ/WRITE激活命令到内部读写命令之间的延迟。每一次对DDR3读写操作前必须确保是处于Active状态的。
tRC – 同一bank内2次ACTIVE命令间的最小延迟,就是说,我们不能过于频繁的激活同一bank的同一行或不同行。
tRAS – ACTIVE to Precharge command period. ACTIVE命令到PRECHARGE命令之间的最小时间。
tRP – PRECHARGE command period. PERCHARG命令的处理周期,在此周期内不能对正在进行precharge的bank作任何操作。
tFAW – No more than 4 bank ACTIVE commands may be issued in tFAW. 这意味着我们不能以太小的时间间隔连续发ACTIVE命令。提高访问效率一个很有效的手段就是循环访问不同bank,每个bank一次只访问不太长的时间。但是这个参数限制了我们轮询bank不可过快。
tRRD – The minimum time interval between successive ACTIVE command to different banks. 不同bank的ACTIVE命令间的最小延迟。
tRFC – REFRESH to ACTIVE or REFRESH command period. REFRESH 命令的周期,发起refresh命令后这么长时间不可再次激活。
tEFI – Maximum average periodic refresh(7.8us/3.9us). 最大的平均刷新间隔时间,在高温下需要更频繁的刷新以保证DRAM ‘hold’ 住数据。
tWR – write recovery time. 它定义了最后一次写突发到向同一bank发起PRECHARGE命令的最小时间。
tWTR – Delay from start of internal write transaction to internal READ command. 写切换到读的延迟。
tRTP – READ to PRECHARGE time. 读命令到“预充电”命令间的延迟,它从READ命令AL个时钟周期后开始计算。
tCCD – any READ to READ command delay or WRITE to WRITE command delay. 任何读与读之间或写与写之间的延迟。
tDAL – Auto precharge write recovery + precharge time. Auto-precharge模式下写恢复和预充电时间的和。