参考来源:JESD209-5B
简单分享下LPDDR5中部分功能模块DFE, Write X, Data Copy的设计。以及对比LPDDR4,ECC和FSP的变化。
DFE - Decision Feedback Equalization
首先需要了解在LPDDR5的高频工作模式下,最高的Data Rate可以逼近6400Mbps,而LPDDR5x最高速率更是可以达到8533Mbps。
在这种高速率模式下,不同数据的电气信号之间会非常容易相互影响,也就是码间串扰ISI的信号失真现象会急剧增加。
LPDDR5采用DFE - Decision Feedback Equalization这种非线性均衡器,一个简单的由两个滤波器组成的DFE均衡器如下:
可以看到DFE就是通过把传输后的结果重新作为反馈值输入到一个sum累加单元,判断是否数据发生变化,从而调整输出的负反馈结构。
在LPDDR5 DQ数据传输中,以4次累加和的4-Tap DFE结构为例,设计框图如下:
上图中通过DQ Slicer分离出不同DQ Value,并通过DFE Sum模块对DQ_SUM的判断,可以不断调整各个DQ Value。
基于这种设计,DFE可以在不额外增加信号的前提下,遏制高频场景下的ISI码间串扰导致的DQ数据错误。
而在DQ Bus上,使能DFE的场景下,进行Write操作时,需要在DQ Bus传输第一组Data信号之前预留2UI一个时间保持为低电平,用于信号校准:
更多DFE详细内容可以参考这篇文章
Data Copy
LPDDR5通过利用每8Byte数据复制粒度的数据搬运模式来降低LPDDR5 IO和Core的功耗,包括Write和Read Data Copy。
Write Data Copy
Write Data场景下,每当8字节数据上重复任何数据模式时,如果MR21寄存器已经Enale Write Data Copy,就会启用此功能。
以下图为例,在一次BL32 Write中,如果满足8 Bytes数据重复,这8 Bytes数据就会被拆分开到BL32的四次8 Beats传输中(下图高亮的Reference Data 0-7)。
DQ0和DQ8负责携带原始的低位和高位原始参考数据,其余低位/高位的DQ重复数据,DQ1-DQ7/DQ9-DQ15的数据则是由Write X功能实现从DQ0复制。
每次8 Beats传输中的数据复制任务,也就是DC0/1/2/3 - Data Copy 0/1/2/3的任务。
其结果信息会被包含在CAS命令的CA[3:0]中,high为执行了Data Copy,low为正常写入Data。
而一次具体的Write Data Copy的AC Timing信息如下:
可以看到,在数据传输过程中,Data Copy hit时,DQ[7:1]和DQ[15:9],还有DMI的信号线上都不需要写入数据,减少了电平翻转的功耗。
只有Data Copy miss场景下,仍然需要数据写入,会产生正常的功耗。
Read Data Copy
Read Data Copy的机制和Write Data Copy是一样的,都是8 Byte的复制粒度。
通过DQ0/DDQ7传输原始低位/高位数据,再通过Data Copy功能复制到DQ[7:1]/DQ[15:9]信号线。
但是需要注意的是启用Read Data Copy后会增加部分Read Latency,因为需要等待Data Copy功能完成。
和Write Data Copy类似,会在DM Pin上显示是否执行了Read Data Copy行为。
具体一次Read Data Copy的Timing信息如下:
可以看到,在数据传输过程中,DM信号为high时,Read Data Copy hit,对应的DQ的信号线上都不需要电平翻转,减少了功耗。
Write X
Write X 是面向Low-Power的低功耗功能,它允许将特定的Data Pattern (Ex: All Zero Pattern) 传输到连续的存储器位置,而无需切换DQ/WCK Bus上的信号,只需要CA Bus传输相关信息即可。
Write X功能由MR21寄存器控制,具体Command内容组成如下,被封装于CAS命令中:
其中部分的简写信息如下:
- R1 - CK的First Rising Edge
- F1 - CK的First Falling Edge
- V - 可以为High或者Low电平,但不可以为浮动电平信号
- X - 不在乎信号的状态,可以是浮动电平信号
- DC0/1/2/3 - 参考上面的write data copy内容,代表Burst Write Data Copy中不同的Byte数据是否copy hit
- WRX - Write X功能,high代表Enable,low代表Disable
- WXSA - 为high,代表DQ[7:0]数据为all 1; 为low,代表DQ[7:0]数据为all 0
- WXSB - 为high,代表DQ[15:8]数据为all 1; 为low,代表DQ[15:8]数据为all 0
这样的信息传输减少了DQ/WCK Bus上的电平信号翻转,降低了功耗。
Link ECC
在之前的LPDDR4中介绍了ECC的纠错码机制,用于对传输信息结果是否正确进行检查并且修正。
同样的,LPDDR5中ECC机制也是面向3200Mbps以上的高频传输场景下的数据异常问题。
不同的是Link-ECC在Write Burst场景下,每128bits数据会产生对应的ECC。
ECC数据每16bits DMI数据为一组发送,通过RDQS_t pin传输DMI ECC(6 bits)和Data ECC(9 bits)数据到DRAM端。如下图所示:
需要注意的是,Write时如果想Enable ECC功能,ECC功能和DBI必须都Enable。
因为在Write行为下,可能存在DBI功能启用和DBI功能不启用的两种情况。而DBI一旦Enable会通过DMI翻转DQ Data,这时Data ECC也会发生变化。
为了兼顾这两种情况,Link-ECC Enable时,必须要携带DMI ECC信息,用于确认是否存在信号翻转。
而如果要携带DMI ECC信息,就必须先Enable DBI来Enable DMI信号,具体硬件设计信息如下:
而Link-ECC在Read Burst场景下,ECC数据会通过DMI信号线传输,也是每128bits数据会有对应的Data ECC,每16 Beats对应9bits的Data ECC数据为一组进行发送。
并且因为涉及DMI信号使用,所以ECC功能和Read Data Copy功能不能同时启用。此时RDQS用于MC控制器端的Data Strobe。
需要注意的是Read DBI和Linke ECC功能互斥,因为都需要用到DMI信号线传输Data。
因此DRAM在Read场景传输中只能选择ECC或者DBI信息其中的一种,具体硬件设计信息如下:
FSP - Frequency Set Point
在之前的LPDDR4中介绍了FSP机制,主要用于DRAM高效的频率切换。
在LPDDR4中,FSP支持2组寄存器内容切换,切换超过2个频率时,需要MC控制器参与,写入下一个频点相关参数信息到非当前使用的寄存器组,再进行切换。
在LPDDR5中,仍然是采用FSP机制进行不同频点的切换。不同的是,LPDDR5增加了一组寄存器,也就是一共三组寄存器FSP-OP[0]/[1]/[2]供频率切换使用。
更多的FSP寄存器组,能减少多频率切换中MC控制器的参与,从而降低延时。在FSP Command上也对应发生变化,具体信息如下:
并且需要注意的是,由于LPDDR5引进了DVFS机制,在不同频率下的Power Supply也会发生变化。
所以DVFS Enable场景下,在FSP执行流程上也需要关注VDD2/VDDQ的变化是否正常。