首页> 中国专利> 一种DDR内存虚拟写电平校准响应的方法

一种DDR内存虚拟写电平校准响应的方法

摘要

本发明提供一种用于DDR内存虚拟写电平校准响应的装置,包括:位于DDR中的写电平校准伪响应模块,其中,所述写电平校准伪响应模块用于在写电平校准期间产生用于输出到内存控制器以执行写电平校准的伪响应信号。该方案通过返回伪响应信号的方式通过内存初始化的写电平校准阶段,并且通过对伪响应信号翻转时间点的控制,达到校准写数据选通信号相位的效果。特别针对LRDIMM等可以用精细命令控制写电平校准的应用场景,还可以通过对BCW控制字等命令的监测直接设置写数据选通信号的相位延迟值。本发明可以正确地响应写电平校准,不需要跳过该写电平校准阶段,也无需修改源码。

著录项

  • 公开/公告号CN108009372A

    专利类型发明专利

  • 公开/公告日2018-05-08

    原文格式PDF

  • 申请/专利权人 中国科学院计算技术研究所;

    申请/专利号CN201711346548.1

  • 发明设计人 张雪琳;陈明宇;

    申请日2017-12-15

  • 分类号

  • 代理机构北京泛华伟业知识产权代理有限公司;

  • 代理人王勇

  • 地址 100190 北京市海淀区中关村科学院南路6号

  • 入库时间 2023-06-19 05:16:05

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-31

    授权

    授权

  • 2018-06-01

    实质审查的生效 IPC(主分类):G06F17/50 申请日:20171215

    实质审查的生效

  • 2018-05-08

    公开

    公开

说明书

技术领域

本发明涉及DDR接口器件的使用,尤其涉及对DDR接口器件的写电平校准。

背景技术

DDR内存(Double Data Rate SDRAM)又称作为双倍速率同步动态随机存储器。DDR内存采用的接口总线也被称为DDR接口,常被用作系统处理器的外接内存接口,也可用于内存扩展和加速。DDR总线从DDR1已经发展到了目前的DDR4,下一代的DDR5标准也在制定中。

自第三代DDR(即DDR3)开始,内存模组普遍采用fly-by拓扑方式对时钟、命令和地址线进行布线。图1示出了一个典型的采用fly-by拓扑方式的内存模组的结构示意图,参考图1,在一个DDR101中包括多个级联的DRAM颗粒(即DRAM 0、DRAM 1…DRAM 7)。内存控制器102向DDR 101的每一个DRAM颗粒输入数据信号,例如DQ、DM、DQS_t、DQS_c。并且,内存控制器102还向DDR 101中的DRAM 0输入时钟信号,例如CK_t、CK_c、CMD、ADDR,通过DRAM 0将时钟信号传递至DRAM 1,依次类推以使得连接的其他DRAM颗粒均接收到时钟信号。基于上述布线方式,时钟信号到达各个DRAM颗粒的时间延迟并不相同,若时钟信号无法与输入数据信号对齐,则对于不同的DRAM颗粒而言在时钟信号与数据信号之间将存在不同程度的相位偏移。图2示出了在一个DDR的内存控制器处以及DRAM颗粒处的时钟信号与数据信号的波形图。参考图2,波形1001、1002分别是在内存控制器处的时钟信号CK_t、CK_c以及数据选通信号DQS=DQS_t-DQS_c的波形图,可以看到此时CK_t与DQS的上升沿是对齐的。波形1003、1004分别是在某一特定DRAM颗粒处的时钟信号CK_t、CK_c以及数据选通信号DQS=DQS_t-DQS_c的波形图,在图2中以箭头指示了在内存控制器处以及在该DRAM颗粒处的波形的同一上升沿之间的对应关系,可以看到时钟信号CK_t相较于数据选通信号DQS发生了更大的延迟,波形1003的相位也比波形1004的相位更加落后。为了使得在DDR内部的同一个DRAM颗粒中时钟信号能够与数据选通信号同步,需要执行写电平校准。

针对上述情况,在DDR3和DDR4的产品中均引入了满足DRAM协议所规定的时序参数的写电平校准机制,其中,所述时序参数包括tDQSS、tDSS和tDSH等,以用于约束数据选通信号DQS_t、DQS_c和时钟信号CK_t、CK_c间的时序关系。利用所引入的写电平校准机制,可以在内存初始化过程中对写电平进行校准,参考图3,其大致过程包括:

步骤201,内存控制器向DRAM颗粒发送开启写电平校准模式的MRS命令,以进入电平校准模式;

步骤202,内存控制器向DRAM颗粒发送具有一定延迟的数据选通信号DQS=DQS_t-DQS_c信号;

步骤203,对于DDR中的任意一个DRAM颗粒,根据来自内存控制器的DQS信号,利用(DQS_t-DQS_c)对(CK_t-CK_c)进行采样,并采用DQ(Data,数据信号)线向内存控制器返回采样结果;以图2为例,对于波形1003、1004而言,CK_t的上升沿与DQS的上升沿并未对齐,此时采样的结果DQ如波形1005所示出,其大小为在DQS的上升沿时CK_t的大小,保持为0,将DQ为0的采样结果反馈给内存控制器,以表明此时时钟信号与数据选通信号并不同步;

步骤204,内存控制器根据DQ线上的反馈信号决定增加或者减少DQS_t和/或DQS_c的相位延迟;

步骤205,内存控制器判断是否已遍历所有的DQS_t、DQS_c相位延迟值;如果是,进入步骤206;否则,返回步骤202;

步骤206,内存控制器发送退出写电平校准模式的MRS命令,通知DRAM颗粒退出写电平校准模式;

步骤207,内存控制器将DQS_t、DQS_c的相位设置到DQ信号出现0-1跳变时对应的DQS_t、DQS_c相位延迟值,即出现DQS_t-DQS_c方波的上升沿与CK_t-CK_c方波的上升沿对齐时DQS_t和/或DQS_c相位延迟值;以图2为例,假设波形1006为经过内存控制器调整后的DQS信号,可以看到其上升沿刚好位于CK_t的上升沿之后并且CK_t大小为1的位置,此时采用波形1006的DQS对波形1003的DQS_t采样,获得的波形1007的采样结果DQ刚好为1,可以认为此时满足在该DRAM颗粒中时钟信号与数据选通信号同步的要求;

对于遍历了所有的DQS_t、DQS_c相位延迟值的情况而言,若对于某一延迟使得采样结果DQ在0-1跳变点附近并且刚好使得DQ=1,则认为DQS与CK_t的上升沿对齐,可以将此时对DQS所设置的相位延时作为写电平校准的结果;

步骤208,写电平校准完成。

通过上述步骤201-208可以看出,在完成写电平校准之前,内存控制器将DQS_t、DQS_c的相位设置为DQ出现0-1跳变时对应的相位延迟值,即步骤207;同理,当继续延迟(DQS_t、DQS_c),并且采样结果出现1-0跳变时,DQS_t、DQS_c的上跳沿对齐CK_t、CK_c的下跳沿,此时二者相差180°;假设内存控制器对DQS_t/DQS_c的调节范围为360°,那么,在写电平校准过程中,DQ线会先后返回0-1-0的序列。内存控制器可以将刚好发生跳变时的DQS作为用于写电平校准的结果。

近年来,基于DDR总线的扩展应用越来越多,例如内存扩展和加速等。图4示出了一种内存扩展装置的示意图,该装置包括主端(master端)的内存控制器301,和从端(slave端)的内存扩展单元302,后者又包括一个DDR从设备(DDR slave)单元3021和扩展逻辑3022。其中,扩展逻辑3022用于实现内存扩展和加速功能,而DDR slave单元3021用于连接内存控制器301和扩展逻辑3022,并负责通过内存控制器301的初始化校验,确保命令和数据的可靠性。内存初始化包括一系列校准步骤,其中读电平校准和读MPR(Multi-PurposeRegister,多用途寄存器)校准等阶段都可以通过逻辑实现,对DDR slave的物理层没有特殊要求;然而对于写电平校准阶段则需要内存端返回(DQS_t-DQS_c)对(CK_t-CK_c)的采样结果,这对物理层有着特殊的要求。

对于ASIC(Application Specific Integrated Circuit,专用集成电路)实现的DDR slave,可以通过定制物理层的方式实现写电平校准采样功能,但定制物理设计的难度较大、成本较高。而对于不采用定制物理层设计的ASIC应用和FPGA(Field ProgrammableGate Array,现场可编程门阵列)上实现的DDR slave,则需要通过特殊的设计以满足内存初始化的写电平校准、并且保证对数据执行采样的可靠性。针对该问题,目前主要采用的是以下两种现有技术。

现有技术一:利用ASIC/FPGA内部寄存器实现(DQS_t-DQS_c)对(CK_t-CK_c)的采样;

图5中给出了直接采样方式下DDR slave单元401的一种可能的内部结构示意图。差分时钟信号CK_t/CK_c经过输入缓冲器4011后转换成单端信号CK,差分数据选通信号DQS_t/DQS_c经过输入缓冲器4012后转换成单端信号DQS。将CK连接到寄存器4015的输入端口D,将DQS连接到寄存器4015的时钟端口,因此,寄存器4015可以实现DQS对CK的采样。将寄存器4015的输出端口Q连接到二选一电路4016的D1端口,将由ASIC/FPGA内部逻辑产生的正常读请求时返回的数据logic_dq_out连接到二选一电路4016的D2端口。命令/地址信号CMD/ADDR经过输入缓冲器4014后连接到命令识别模块4017的输入端口。命令识别模块4017的输出信号为wrlvl_en,其被连接到二选一电路4016的选择端口S。当命令识别模块4017检测到写电平校准模式开启后,它会拉高wrlvl_en。此时,二选一电路4016的输出端口Q会选择D1端口的信号进行输出,也就是DQS对CK的采样结果。而在正常工作状态下,命令识别模块输出的wrlvl_en信号为低电平。此时,二选一电路4016的输出端口Q会选择D2端口的信号进行输出,也就是来自ASIC/FPGA内部逻辑的正常读返回数据logic_dq_out。二选一电路的输出端口Q经过输出缓冲器4013后连接到DQ信号,输出给内存控制器。

上述电路实现了在写电平校准模式下通过DQ输出DQS对CK采样结果,而在正常工作模式下通过DQ输出正常读返回数据的功能。DQS_t、DQS_c和DQ都是双向信号,为了简化,图4中仅画出了与写电平校准相关的路径。在写电平校准模式下,DQS_t、DQS_c为输入信号,DQ为输出信号。

然而,在该现有技术一中存在以下几个问题:

1.由部分FPGA器件实现的DDR slave单元,其物理层不支持引出单端DQS信号,从而无法实现写电平校准的采样操作。例如,Intel FPGA的DDR并行接口就不支持数据选通信号的引出。

2.即便所选FPGA器件支持单端DQS信号的引出,能够实现单端DQS对CK的采样。由于FPGA内部只有简单的逻辑寄存器,受建立时间和保持时间所限,无法实现精准的采样。对于不采用定制物理层设计的ASIC应用,也存在同样的问题。而写电平校准阶段需要高精度的采样结果,在实际DRAM颗粒中都会采用专门的采样电路来实现此功能。

现有技术二:通过修改内存控制器或BIOS(Basic Input/Output System,基本输入输出系统)源码的方式跳过写电平校准阶段。

由于DDR slave并不是真正的内存模组,因而不必采用fly-by的拓扑方式布线,可以通过PCB(Printed Circuit Board,印刷电路板)的精准设计保证DQS_t/DQS_c和CK_t/CK_c的时序关系,从而使写电平校准不再必须。因此,对于内存控制器或BIOS源码可见的情况,可以通过修改源码的方式,直接跳过写电平校准阶段。

然而,上述现有技术二存在以下几个问题:

1.随着DRAM频率的提高,信号完整性问题越来越严重。自DDR4开始,即便对于单倍数据速率下的命令/地址信号,多数内存控制器也会执行相应的电平校准操作;对于以双倍数据速率翻转的DQ/DQS_t/DQS_c信号,就更需要可靠的校准了。因此,在高频DDR应用中,直接跳过写电平校准阶段是不可取的。

2.内存控制器和BIOS源码多数不可见,且修改难度较大。

3.通过修改源码的方式,兼容性差。

发明内容

针对现有技术的以上问题,本发明提出了一种新的技术手段,在不修改内存控制器和BIOS源码的前提下,解决FPGA和不采用定制物理层设计的ASIC应用中实现DDR slave时的写电平校准问题,从而提供一种DDR内存虚拟写电平校准响应的方法。本发明通过检测MRS(Mode Register Set,模式寄存器设置)命令识别写电平校准模式;当进入该模式后,通过DQ信号线返回伪采样信号0或1,并在到达翻转时间点后,返回相反信号1或0,从而通过写电平校准步骤,并通过对翻转时间点的控制迫使内存控制器将DQS_t、DQS_c的相位调整到预期值。并且,本发明针对上述中翻转时间点进行控制,从而利用标准内存条测试出进入写电平校准模式到退出写电平校准模式之间的时间间隔,并根据预期的DQS_t、DQS_c相位延迟值,按照比例计算翻转时间点的位置。此外,本发明针对上述预期DQS_t、DQS_c相位延迟值,可以通过对PCB布线的仿真和测试,判断出DQS_t、DQS_c相对于CK_t、CK_c的走线延迟,然后根据DDR时钟频率将延迟换算成相位。并且,在本发明中,对于LRDIMM(Load-ReducedDual In-Line Memory Module,低负载双列直插式存储模块)等可以用精细命令控制写电平校准的应用场景,通过监测写电平校准相关的命令来设置翻转时间点,从而能够精确控制写电平校准后的DQS_t、DQS_c相位。

基于上述分析,本发明提供了一种用于DDR内存虚拟写电平校准响应的装置,包括:

位于DDR中的写电平校准伪响应模块,其中,所述写电平校准伪响应模块用于在写电平校准期间产生用于输出到内存控制器以执行写电平校准的伪响应信号。

优选地,根据所述的置,其中所述伪响应信号为在写电平校准期间产生两次电平跳变的信号。

优选地,根据所述的置,其中还包括命令识别模块,用于根据来自与所述内存控制器相连的CMD线的命令和/或来自与所述内存控制器相连的ADDR线的地址信息,产生用于所述写电平校准伪响应模块的写电平校准使能信号。

优选地,根据所述的置,其中所述伪响应信号在第一翻转时间点和第二翻转时间点产生所述两次电平跳变,所述第一翻转时间点和第二翻转时间点表示为:

其中,D为DQS信号的预期相位延迟值,T为内存控制器从进入写电平校准到退出写电平校准之间所用的时间。

优选地,根据所述的置,其中还包括命令识别模块,用于对来自内存控制器的与DQS信号当前相位有关的命令进行监测,并且在写电平校准期间将所述DQS信号当前相位的信息提供给所述写电平校准伪响应模块。

优选地,根据所述的置,其中所述伪响应信号在第一翻转相位点和第二翻转相位点产生所述两次电平跳变,所述第一翻转相位点和第二翻转相位点表示为:

其中,D为DQS信号的预期相位延迟值,360/N为内存控制器在执行写电平校准时所采用的相位延迟的步长。

一种基于上述任意一项所述的装置对DDR执行内存虚拟写电平校准的方法,包括:

1)内存控制器指示DDR进入写电平校准模式;

2)所述DDR中的写电平校准伪响应模块判断DQS信号的预期相位延迟是否大于180°,若否,则继续步骤3),若是,则继续步骤4);

3)写电平校准伪响应模块产生大小为第一电平的伪响应信号,并在满足第一翻转条件时继续步骤4);

4)写电平校准伪响应模块产生大小为第二电平的伪响应信号,并在满足第二翻转条件时返回步骤3);

5)在退出写电平校准模式后,内存控制器将所述DQS信号的相位延迟配置为发生从第一电平跳变到第二电平时对应的相位延迟值。

优选地,根据所述方法,其中所述第一翻转条件为是否达到第一翻转时间点,并且所述第二翻转条件为是否达到第二翻转时间点,所述第一翻转时间点和第二翻转时间点表示为:

其中,D为DQS信号的预期相位延迟值,T为内存控制器从进入写电平校准到退出写电平校准之间所用的时间。

优选地,根据所述方法,其中所述第一翻转条件为是否达到第一翻转相位点,并且所述第二翻转条件为是否达到第二翻转相位点,所述第一翻转相位点和第二翻转相位点表示为:

其中,D为DQS信号的预期相位延迟值,360/N为内存控制器在执行写电平校准时所采用的相位延迟的步长。

以及,一种基于所述装置在DDR LRDIMM内存系统中执行写电平校准的方法,包括:

1)内存控制器指示LRDIMM进入DWL写电平校准阶段;

2)所述LRDIMM中的写电平校准伪响应模块判断DQS信号的预期相位延迟是否大于180°,如否则继续步骤3),如是则继续步骤4);

3)写电平校准伪响应模块产生大小为第一电平的伪响应信号,并且由命令识别模块判断当前的DQS的相位延迟是否等于第一翻转相位点,若否则保持所述伪响应信号不变,若是则继续步骤4);

4)写电平校准伪响应模块产生大小为第二电平的伪响应信号,并且由命令识别模块判断当前的DQS的相位延迟是否等于第二翻转相位点,若否则保持所述伪响应信号不变,若是则继续步骤3);

5)在退出DWL写电平校准阶段后,内存控制器将DQS信号的相位延迟配置为发生从第一电平跳变到第二电平时对应的相位延迟值。

与现有技术相比,本发明的优点在于:

采用在DDR slave端返回伪采样信号的方式,通过内存初始化的写电平校准阶段,并能将写DQS_t、DQS_c的相位调节到最佳采样点,以保证写数据采样的可靠性。能够在不修改内存控制器和BIOS源码的情况下,以返回伪响应信号的方式,正常地完成通过内存初始化的写电平校准。利用伪响应信号和预设参数调节,可以在不做定制物理设计的情况下使工作时的写数据选通信号相位得到校准。本发明可以兼容现有的DDR3、DDR4内存控制器,降低了对DDR slave物理层的要求,不再需要(DQS_t-DQS_c)对(CK_t-CK_c)进行实际的采样操作,从而规避了由于FPGA资源限制带来的采样问题,非常适合由FPGA实现的DDR slave应用。

附图说明

以下参照附图对本发明实施例作进一步说明,其中:

图1是现有技术中基于fly-by拓扑方式对时钟、命令和地址线进行布线的内存模组的结构示意图;

图2示出了在一个DDR中内存控制器处以及DRAM颗粒处分别的时钟信号以及数据选通信号的波形图;其中,波形1001、1002为在内存控制器处的时钟信号以及数据选通信号,波形1003、1004为在某一个特定DRAM颗粒处的时钟信号以及数据选通信号,波形1005为针对波形1003、1004判断是否完成写电平校准所产生的采样信号,波形1006为在所述DRAM颗粒处经过调整的数据选通信号,波形1007为针对波形1003、1006判断是否完成写电平校准所产生的采样信号;

图3是基于DRAM协议所规定的时序参数的在内存初始化过程中执行写电平校准的流程图;

图4是现有技术中一种基于DDR总线的扩展应用的示意图;

图5是一种利用ASIC、FPGA内部寄存器实现(DQS_t-DQS_c)对(CK_t-CK_c)的采样的现有技术一的DDR slave的模块图;

图6是根据本发明的一个实施例通过产生伪响应信号使得内存控制器实现写电平校准的DDR slave的模块图;

图7是根据本发明的一个实施例对图6所示出的DDR slave执行写电平校准的方法流程图;

图8示出了采用图7中的方法对DDR slave执行写电平校准时,在一个DDR中内存控制器处以及DRAM颗粒处分别的时钟信号以及数据选通信号的波形图;其中波形1101、1102为在内存控制器处的时钟信号以及数据选通信号的相位,波形1103、1104为该时钟信号以及数据选通信号到达DRAM端的相位,波形1105为采用1104对1103进行采样的结果,波形1106为内存控制器按照一定的步长对数据选通信号的相位进行延迟后所到达的某一相位,波形1107为采用1106对1103进行采样的结果,波形1108为内存控制器按照一定的步长对数据选通信号的相位继续进行延迟后所到达的某一相位,波形1107为采用1108对1103进行采样的结果;

图9是一种特殊的DDR应用场景即低负载DIMM(Load-Reduced DIMM,LRDIMM)的模块示意图;

图10是在LRDIMM内存系统中对DWL阶段执行写电平校准的方法流程图;

图11是根据本发明的一个实施例在LRDIMM的应用场景下通过伪响应的方式通过DWL校准的方法流程图。

具体实施方式

下面结合附图和具体实施方式对本发明作详细说明。

参考图2和图3,如背景技术中所介绍地,基于写电平校准的原理,在校准的过程中需要slave端通过DQ信号线返回DQS_t、DQS_c对CK_t、CK_c的采样结果。内存控制器通过不断延迟DQS_t、DQS_c信号,并监控DQ线上的采样结果来实施校准。在整个校准过程中,DQ线会返回类似于0-1-0的序列。校准结束后,内存控制器将DQS_t、DQS_c设置为DQ线出现0-1跳变时对应的相位值,即可保证slave端的DQS_t、DQS_c与CK_t、CK_c对齐。

对于内存控制器而言,其会在写电平校准阶段接收到DQ线返回的取值为0-1-0序列,并且认为在DQ发生0-1跳变时的DQS_t、DQS_c为最佳相位。然而,发明人认为内存控制器并不关心slave端是如何通过DQ线输出该序列,这是由于写电平校准过程只是内存正常读写之前的校准阶段,并不涉及真正的内存访问,无论采用何种方法来实现写电平校准,都不会影响内存本身的正常使用。由此,发明人提出可以在执行写电平校准时,为slave端返回伪响应信号,由slave端模拟真实写电平校准场景下DQ线的输出信号,使得内存控制器认为写电平校准得到了正确的响应。因此,只要由slave端通过DQ线向内存控制器返回类似于0-1-0的序列,在写电平校准结束之后,内存控制器会将DQS_t、DQS_c设置到发生0-1跳变时所对应的相位值。换句话说,可以由slave端通过控制伪响应信号0-1跳变的位置,来调控写电平校准完成后DQS_t、DQS_c的相位值。

基于上述发明思路,本发明提出了一种虚拟写电平校准的响应方案。图6示出了根据本发明的一个实施例的DDR slave的模块图,以说明本发明能够实现虚拟写电平校准的原理。参考图6,命令地址信号CMD/ADDR经过输入缓冲器5011后连接到命令识别模块5012。命令识别模块5012根据输入的命令和地址信息识别出写电平校准模式,并产生写电平校准使能信号wrlvl_en。wrlvl_en信号同时连接到写电平校准伪响应模块5013和二选一电路5014的选择端口S。写电平校准伪响应模块5013产生取值为0-1-0的伪响应信号,并连接到二选一电路5014的D1端口;由ASIC/FPGA内部逻辑产生的正常读返回数据logic_dq_out信号连接到二选一电路5014的D2端口。二选一电路5014的输出端口Q通过输出缓冲器5015连接到DQ,并输出到内存控制器。

图6的工作原理在于,当命令识别模块5012检测到写电平校准模式开启后,拉高wrlvl_en信号。在wrlvl_en信号的控制下,写电平校准伪响应模块5013产生伪响应信号,此时,二选一电路5014选择D1端口的数据输出到DQ,也就是写电平校准伪响应信号;而在正常工作状态下,wrlvl_en信号拉低,二选一电路5014选择D2端口的数据输出到DQ,也就是ASIC、FPGA内部逻辑产生的正常读返回信号logic_dq_out。因此,本发明通过写电平校准伪响应模块5013模拟图5中的寄存器4015,从而不必真正地实施DQS_t、DQS_c对CK_t、CK_c信号的采样,有效避免了现有技术一中存在的几个问题。

图7示出了根据本发明的一个实施例的对如图6所示出的DDR slave执行写电平校准的方法流程图。如前文中所述,内存控制器会通过MRS命令开启或关闭写电平校准模式,因此,DDR slave可以通过识别MRS命令来判断是否进入了写电平校准模式。参考图7,所述方法包括:

步骤601,命令识别模块检测到开启写电平校准模式的MRS命令;

步骤602,命令识别模块通知写电平校准伪响应模块进入写电平校准模式;

步骤603,写电平校准伪响应模块判断预期相位延迟值是否大于180°;如果是,进入步骤607;否则,进入步骤604;

步骤604,写电平校准伪响应模块输出电平0;

步骤605,命令识别模块判断是否接收到关闭写电平校准模式的MRS命令。如果是,则进入步骤610;否则,进入步骤606;

步骤606,写电平校准伪响应模块判断是否到达设置的第一翻转时间点;如果是,则进入步骤607;否则,进入步骤604;

步骤607,写电平校准伪响应模块输出电平1;

步骤608,命令识别模块判断是否接收到关闭写电平校准模式的MRS命令;如果是,则进入步骤610;否则,进入步骤609;

步骤609,写电平校准伪响应模块判断是否到达设置的第二翻转时间点;如果是,则进入步骤604;否则,进入步骤607;

步骤610,命令识别模块通知写电平校准伪响应模块退出写电平校准模式。

步骤603中的所述预期相位延迟值,指的是对写电平校准前DRAM端DQS_t、DQS_c超前于CK_t、CK_c的相位差进行预判的大小,例如图2中1004超前于1003的相位差。所述预期相位延迟值的大小可以通过对PCB布线的仿真和测试而获得,可以基于PCB布线仿真DQS_t、DQS_c相对于CK_t、CK_c的走线延迟并根据DDR时钟频率将延迟换算成相位得到。例如,对于一个给定的PCB板,提前测试出针对每一个DRAM颗粒的一组DQS_t、DQS_c相对于CK_t、CK_c的相位延迟值,并将其作为预期相位延迟值输入给写电平校准伪响应模块。从而在步骤603中,直接比较该延迟值是否大于180°,并根据比较结果跳转到相应的分支即可。

在步骤606、和步骤609中需要对是否到达设置的第一翻转时间点和第二翻转时间点进行判断。下面将结合图2和图8所示出的时序图来具体说明跳转的条件。

如图2所示,DRAM端的DQS_t、DQS_c和CK_t、CK_c相位差小于180°时的写电平校准时序图。1001和1002分别表示CK_t、CK_c和(DQS_t-DQS_c)信号在内存控制器端的相位,1003和1004分别表示CK_t、CK_c和(DQS_t-DQS_c)信号到达DRAM端的相位。图中1004相对于1003的相位超前的范围在0~180°之间,因此直接用(DQS_t-DQS_c)对(CK_t-CK_c)采样的结果为0,如1005所示。在写电平校准阶段,内存控制器按照一定的步长对DQS_t、DQS_c相位进行延迟,延迟到某相位后(见1006),(DQS_t-DQS_c)对(CK_t-CK_c)采样的结果变为1(见1007)。在1004和1006之间,一定存在某个DQS_t、DQS_c相位的临界点,导致当DQS_t、DQS_c相位略小于该临界点时,DQ采样结果输出0;而当DQS_t、DQS_c相位略大于该临界点时,DQ采样结果输出1。不难看出,在该临界点处的DQS_t与CK_t的上跳沿对齐。将该临界点——即DQ采样结果0-1跳变——所在的时刻定义为第一翻转时间点。

图8中示出了DRAM端的DQS_t、DQS_c和CK_t、CK_c相位差大于180°时的写电平校准时序图。其中,波形1101和1102分别表示在内存控制器端CK_t、CK_c和(DQS_t-DQS_c)的相位,波形1103和1104分别表示在到达DRAM端时CK_t、CK_c和(DQS_t-DQS_c)信号的相位。可以看到,图中1104相对于1103的相位超前的范围在180°~360°之间,因此直接用(DQS_t-DQS_c)对(CK_t-CK_c)采样的结果为1,如1105所示。在写电平校准阶段,内存控制器按照一定的步长对DQS_t、DQS_c相位进行延迟,延迟到某相位后(见1106),(DQS_t-DQS_c)对(CK_t-CK_c)采样的结果变为0(见1107)。在1104和1106之间,一定存在某个DQS_t、DQS_c相位的第二临界点,导致当DQS_t、DQS_c相位略小于该第二临界点时,DQ采样结果输出1;而当DQS_t、DQS_c相位略大于该第二临界点时,DQ采样结果输出0。不难看出,在该第二临界点处的DQS_t上跳沿与CK_t的下跳沿对齐,即相位相差180°。将该第二临界点——即DQ采样结果1-0跳变——所在的时刻定义为第二翻转时间点。继续延迟DQS_t/DQS_c到某相位后(见1108),(DQS_t-DQS_c)对(CK_t-CK_c)的采样结果再次变为1(见1109)。该过程类似于图2中的1004和1006,即在1106和1108之间也存在使DQ发生0-1跳变的临界点,也就是第一翻转时间点。

由此可知,在写电平校准阶段,当DQS_t、DQS_c预期相位延迟值小于180°时,DQ应该首先输出电平0,然后在到达第一翻转时间点后输出电平1;第一翻转时间点处DQS_t、DQS_c和CK_t、CK_c的上跳沿对齐。而当DQS_t、DQS_c预期相位延迟值大于180°时,DQ应该首先输出电平1,然后在到达第二翻转时间点后输出电平0,并在到达第一翻转时间点后再输出电平1;在第二翻转时间点处DQS_t、DQS_c和CK_t、CK_c相差180°,而在第一翻转时间点处二者的上跳沿对齐。因此,为了模拟真实写电平校准的响应,步骤603、606和609中执行如图7所示的跳转操作。

根据以上流程可知,第一翻转时间点和第二翻转时间点控制着伪响应电平0-1跳变和1-0跳变的时机,直接决定着最终的DQS_t、DQS_c相位。

在本发明中,可以通过以下方法来设置所述第一翻转时间点和所述第二翻转时间点:

通常情况下,内存控制器在写电平校准阶段会递增遍历所有相位延迟值。因此,对于每种处理器,可以用标准内存条提前测试出其进入写电平校准模式到退出写电平校准模式之间的时间间隔,并根据预期相位延迟值按照比例计算出第一和第二翻转时间点的位置,以此间接控制写电平校准完成后的DQS_t、DQS_c相位。写电平校准模式持续的时间间隔可以通过用DDR分析仪抓取MRS命令等手段得到。例如,采用DDR分析仪测量得到,内存控制器从进入写电平校准模式到退出写电平校准模式之间所用的时间为T,DQS预期相位延迟值为D°,D的大小可以通过设置而确定也可以根据PCB仿真得到,则:

其中,“%”为取模运算。采用该方法得到的翻转时间点只是一个粗略的结果。可以在计算得到的翻转时间点附近选择多个样点,分别进行内存初始化和内存自检测试。然后选择能够通过内存初始化、并且内存自检时数据正确率最高的样点作为最终的翻转时间点,之后使用则无需每次测试。

发明人认为,根据本发明的上述写电平校准方案能够适用于普通的DDR应用,即通过图7中的方法测量总的写电平校准时间从而利用上述计算式推算出当前校准的写电平相位。并且,特别地,根据本发明的写电平校准方案尤其适用于低负载DIMM(Load-ReducedDIMM,LRDIMM)等可以采用精细命令来控制写电平校准的DDR应用场景,这是由于对于LRDIMM而言,内存控制器在进行写电平校准时会直接发送与DQS当前相位有关的命令,也就是说DDR slave可以通过监控这些命令知道当前DQS相位值。不同于普通的DDR应用需要内存控制器在进行写电平校准时发送开始写电平校准和结束写电平校准这两个命令并且由DDR slave被动地采用图7中的方法进行响应,LRDIMM会由内存控制器主动地向DDR slave提供当前的DQS相位,这使得本发明尤其适用于LRDIMM的应用场景。

下面将以LRDIMM为例,具体地介绍通过监测写电平校准相关的命令、地址信号精确的设定伪响应电平的翻转时机。图9示出了一个LRDIMM的模块示意图,在该LRDIMM中,主机(HOST)701的内存控制器和DRAM颗粒703之间设置有数据缓冲器(Data Buffer,DB)芯片702,该DB芯片702用于对数据进行缓冲以提高数据的信号质量。因此,LRDIMM内存系统中存在着“主机-DB芯片”和“DB芯片-DRAM颗粒”两个数据接口。为表区分,将主机701与DB芯片702之间的数据和数据选通信号命名为DQ和DQS_t、DQS_c;将DB芯片702与DRAM颗粒703之间的数据和数据选通信号命名为MDQ和MDQS_t、MDQS_c。类似地,用CK_t、CK_c表示主机701与DB芯片702之间的时钟信号,用MCK_t、MCK_c表示DB芯片702与DRAM颗粒703之间的时钟信号。

LRDIMM的内存初始化包括两个写电平校准阶段:

i)DWL(DRAM Interface Write Leveling,DRAM接口写电平校准)

DWL阶段用于校准DB芯片702和DRAM颗粒703之间的数据选通信号,即MDQS_t、MDQS_c,由DB芯片702根据主机701发出的BCW(Buffer Control Word,缓冲器控制字)控制字对MDQS_t、MDQS_c信号进行不同相位的延迟,并由DRAM 703返回(MDQS_t-MDQS_c)对(MCK_t-MCK_c)的采样结果;以及

ii)HWL(Host Interface Write Leveling,主机接口写电平校准)

HWL阶段用于校准主机701和DB芯片702之间的数据选通信号,即DQS_t/DQS_c,由主机701的内存控制器对DQS_t、DQS_c信号进行不同相位的延迟,并由DB芯片702返回(DQS_t-DQS_c)对(CK_t-CK_c)的采样结果。

可以看到,在LRDIMM应用的上述HWL阶段中,DRAM颗粒703并未参与其中,因此DDRslave也无需在该阶段进行响应,DDR slave只需要响应DWL阶段的写电平校准即可。并且,在DWL校准时,HOST 701通过专门的BCW控制字来控制DB芯片的行为,其中包括开启、关闭DWL校准的控制字,以及控制MDQS_t、MDQS_c具体相位延迟值的控制字。DDR slave可以通过识别这些控制字来进行DWL校准。

下面将介绍,在LRDIMM内存系统中对DWL阶段执行写电平校准的方法,参考图10,所述方法包括:

步骤801,主机发送开启写电平校准模式的MRS命令;

步骤802,主机通过配置相关的BCW控制字开启DWL模式;

步骤803,主机通过配置相关的BCW控制字设置MDQS_t、MDQS_c相位延迟值;

步骤804,DB芯片根据接收到的BCW控制字产生特定延迟的MDQS_t、MDQS_c脉冲;

步骤805,DRAM颗粒通过MDQ信号线返回(MDQS_t-MDQS_c)对(MCK_t-MCK_c)的采样结果;如前文中所述,在本发明中不必真实地实施该采样过程,可以通过产生伪响应信号的方式,使得主机误以为反馈的是真实的采样结果;产生伪响应信号的方法将在下文中通过图11进行具体的介绍;

步骤806,DB芯片通过DQ信号线向主机传递MDQ的采样结果;

步骤807,主机根据DQ反馈结果决定增加或减少MDQS_t、MDQS_c相位延迟值;

步骤808,主机判断是否已遍历所有的MDQS_t、MDQS_c相位延迟值。如果是,进入步骤809;否则,返回步骤803;

步骤809,主机通过配置相关的BCW控制字关闭DWL模式;

步骤810,主机发送关闭写电平校准模式的MRS命令;

步骤811,主机将MDQS_t、MDQS_c的相位设置到MDQ发生0-1跳变时对应的MDQS_t、MDQS_c相位延迟值;

步骤812,DWL校准完成。

下面将具体介绍在LRDIMM的应用场景下通过伪响应的方式通过DWL校准的方法流程。首先,介绍在该方法流程中涉及的几个参数。

预期相位延迟值:类似于图7中的预期相位延迟值,这里不再解释。

第一翻转相位点:类似于图7中的第一翻转时间点,都是对应伪响应电平0-1跳变的临界点。区别在于第一翻转时间点是一个时刻,而第一翻转相位点是一个相位延迟值,是个整数。在DWL校准过程中,内存控制器会通过BCW控制字的特定字段通知DB芯片当前时刻的MDQS_t、MDQS_c相位延迟值。内存控制器会将一个时钟周期划分为N(N为整数)等份,则360/N为相位延迟的步长。这样N的取值可以通过查阅所选DB芯片的手册得到。第一翻转相位点可以根据预期相位延迟值(设为D°)计算得到,公式为:

第二翻转相位点:类似于图7中的第二翻转时间点,都是对应伪响应电平1-0跳变的临界点。区别在于第二翻转时间点是一个时刻,而第二翻转相位点是一个相位延迟值,其取值在0~N之间,是个整数。设预期相位延迟值为D°,第二翻转相位点的计算公式为:

参考图11,在LRDIMM的应用场景下通过伪响应的方式通过DWL校准的方法,包括:

步骤901,命令识别模块通过监测MRS命令得知主机701开启了写电平校准模式;

步骤902,命令识别模块通过监测BCW控制字得知主机701开启了DWL校准模式;

步骤903,命令识别模块通知写电平校准伪响应模块进入DWL模式;

步骤904,写电平校准伪响应模块判断MDQS_t、MDQS_c预期相位延迟值是否大于180°;如果是,进入步骤908;否则,进入步骤905;

步骤905,写电平校准伪响应模块输出电平0;

步骤906,命令识别模块判断是否接收到关闭DWL校准模式的BCW控制字;如果是,进入步骤911;否则,进入步骤907;

步骤907,命令识别模块判断是否接收到调节MDQS_t、MDQS_c延迟的BCW控制字、并且其对应的MDQS_t、MDQS_c相位延迟值是否等于第一翻转相位点;如果是,进入步骤908;否则,进入步骤905;

步骤908,写电平校准伪响应模块输出电平1;

步骤909,命令识别模块判断是否接收到关闭DWL校准模式的BCW控制字。如果是,进入步骤911;否则,进入步骤910;

步骤910,命令识别模块判断是否接收到调节MDQS_t、MDQS_c延迟的BCW控制字、并且其对应的MDQS_t、MDQS_c相位延迟值是否等于第二翻转相位点。如果是,进入步骤905;否则,进入步骤908;

步骤911,命令识别模块通过检测MRS命令得知主机关闭了写电平校准模式;

步骤912,命令识别模块通知写电平校准伪响应模块退出DWL模式。

对比可知,除了需要识别LRDIMM特有的BCW控制字等步骤以外,图11和图7的处理流程本质上是一致的。只不过图7中伪响应电平跳变的条件是时间,而图11中的跳变条件是相位延迟值。根据第一、第二翻转时间点和第一、第二翻转相位点的计算公式不难看出,两种跳变方式本质上是等价的。因此,对于本流程图的具体执行原理,这里不再赘述。

在退出DWL模式后,主机会将DB芯片输出的MDQS_t、MDQS_c相位延迟值设置到0-1跳变对应的相位,也就是第一翻转相位点。因此,用户可以通过设定第一翻转相位点的值,来直接控制DWL校准结束后的MDQS_t、MDQS_c的相位值。

通过本发明的上述实施例提供了一种DDR内存虚拟写电平校准响应的方案,该方案通过返回伪响应信号的方式通过内存初始化的写电平校准阶段,并且通过对伪响应信号翻转时间点的控制,达到校准写数据选通信号相位的效果。特别针对LRDIMM等可以用精细命令控制写电平校准的应用场景,还可以通过对BCW控制字等命令的监测直接设置写数据选通信号的相位延迟值。相较于现有技术二需要通过修改内存控制器和BIOS源码以直接跳过写电平校准阶段,本发明可以正确地响应写电平校准,不需要跳过该写电平校准阶段,因而也无需修改源码了。本发明避免了修改内存控制器和BIOS源码,并降低了对DDR slave物理层的要求,非常适用于基于FPGA实现的DDR slave应用。鉴于近年来基于DDR接口的内存扩展和加速应用越来越广泛,而由于FPGA的低成本和可配置等优点,基于FPGA实现的内存扩展应用也日趋广泛。本发明解决了基于FPGA实现DDR slave的内存初始化和信号完整性问题,并且妥善规避了现有技术存在的问题。此外,本发明适于但不限于FPGA应用;对于不采用定制物理层IP(Intellectual Property,知识产权)的ASIC应用,本发明同样适用。

最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管上文参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号