一种内存训练的方法及系统与流程

文档序号:20945969发布日期:2020-06-02 19:52阅读:371来源:国知局
一种内存训练的方法及系统与流程

本申请属于计算机技术领域,尤其涉及一种内存训练的方法及系统。



背景技术:

在印刷电路板(printedcircuitboard,pcb)布线中,由于信号线阻抗差异和走线无法做到完全等长,往往会导致信号传输的时间不一致,1000密耳的长度大约会产生160~180皮秒的延时,为了保证时序的准确性,使信号的建立和保持时间窗口一致,就需要进行内存训练。

内存训练就是通过调整内存控制器的参数,使得信号的建立和保持时间窗口一致。例如,当终端设备启动时,内存控制器会选取一组参数进行内存训练。内存控制器可以根据该参数不断调整信号的建立和保持时间窗口。当该建立和保持时间窗口一致时,内存控制器可以确定此时的参数,并在终端设备后续的工作中使用该参数以保证时序的准确性。

然而,在内存训练阶段,若内存控制器选用的参数不合适,将导致内存训练失败。而当内存训练失败时,内存控制器会重新使用该参数继续进行内存训练。这将导致终端设备陷入重复训练但训练失败的循环中,进而导致终端设备无法开机。使得终端设备产生因选用的参数不合适,而一直停留在内存训练阶段无法完成开机的问题。



技术实现要素:

有鉴于此,本申请实施例提供了一种内存训练的方法及系统,可以解决现有技术中,终端设备产生因选用的参数不合适,而一直停留在内存训练阶段无法完成开机的问题。

第一方面,本申请实施例提供了一种内存训练的方法,包括:

当终端设备启动时,终端设备从预设的参数组合中确定训练参数,参数组合包括多个不同的训练参数;

终端设备根据训练参数,进行内存训练;

当内存训练失败时,终端设备重启。

可选的,终端设备根据训练参数,进行内存训练之后,方法还包括:

当内存训练失败时,终端设备确定重启次数;

若重启次数小于或等于预设次数,则执行重启的步骤,并更新重启次数;

若重启次数大于预设次数,则终端设备关机。

可选的,终端设备根据训练参数,进行内存训练之后,方法还包括:

当内存训练失败时,终端设备判断重启周期是否开始计时;

若重启周期未开始计时,则执行重启的步骤,并开始计时;

若重启周期开始计时,则终端设备判断重启周期是否结束;

若重启周期未结束,则执行重启的步骤,否则终端设备关机。

可选的,当内存训练失败时,终端设备重启之后,方法还包括:

当终端设备重启时,终端设备控制终端设备的蜂鸣器不发出蜂鸣声。

第二方面,本申请实施例提供了一种内存训练的系统,系统应用于终端设备,内存训练的系统包括内存控制器、内存和逻辑器件:

当内存控制器检测到终端设备启动时,内存控制器从预设的参数组合中确定训练参数,参数组合包括多个不同的训练参数;

内存控制器发送训练参数至内存;

内存根据训练参数,进行内存训练;

当内存控制器确定内存训练失败时,向逻辑器件发送重启指令;

逻辑器件根据重启指令,控制终端设备重启。

可选的,逻辑器件在接收到所述重启指令后,确定接收重启指令的接收次数;

若接收次数小于或等于预设次数,则逻辑器件执行控制终端设备重启的步骤,并更新接收次数;

若接收次数大于预设次数,则逻辑器件控制终端设备关机。

可选的,逻辑器件在接收到所述重启指令后,判断重启周期是否开始计时;

若重启周期未开始计时,则逻辑器件执行控制终端设备重启的步骤,并开始计时;

若重启周期开始计时,则逻辑器件判断重启周期是否结束;

若重启周期未结束,则逻辑器件执行控制终端设备重启的步骤,否则逻辑器件控制终端设备关机。

可选的,内存训练的系统还包括蜂鸣器,当逻辑器件检测到终端设备重启时,逻辑器件控制蜂鸣器不发出蜂鸣声。

可选的,逻辑器件包括复杂可编程逻辑器件。

第三方面,本申请实施例提供了一种计算机可读存储介质,包括计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述第一方面或第一方面的任一实施方式的方法。

本申请提供的内存训练的方法及系统,通过当终端设备启动时,终端设备从预设的参数组合中确定训练参数,然后终端设备根据训练参数,进行内存训练,最后当内存训练失败时,终端设备进行重启。通过在内存训练失败时,及时控制终端设备进行重启,使得终端设备可以在重启后重新选择训练参数。避免了终端设备因选用的参数不合适导致内存训练失败,而一直停留在内存训练阶段无法完成开机。进而提高了终端设备的容错率和产品质量。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本申请提供的一种内存训练方法的示意性流程图;

图2是本申请提供的一种内存训练方法的流程图;

图3是本申请提供的一种内存训练失败时的示意性流程图;

图4是本申请提供的另一种内存训练方法的流程图;

图5是本申请提供的另一种内存训练失败时的示意性流程图;

图6是本申请提供的一种内存训练系统的示意图。

具体实施方式

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。

应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

本申请实施例提供的内存训练的方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmentedreality,ar)/虚拟现实(virtualreality,vr)设备、笔记本电脑、超级移动个人计算机(ultra-mobilepersonalcomputer,umpc)、上网本、个人数字助理(personaldigitalassistant,pda)等终端设备上,本申请实施例对终端设备的具体类型不作任何限制。

图1示出了本申请提供的一种内存训练方法的示意性流程图。

s110、当终端设备启动时,终端设备从预设的参数组合中确定训练参数,参数组合包括多个不同的训练参数。

对于大部分具有内存的终端设备来讲,都需要在设备启动的阶段进行内存训练,保证终端设备具有准确的时序。所谓内存训练,就是通过调整内存控制器的参数,使得内存控制器与内存在交互过程中,信号的建立和保持时间窗口一致。

在一个实施例中,在终端设备上电的情况下,终端设备进入启动阶段。终端设备的中央处理器(centralprocessingunit,cpu)可以按照预定流程,逐步启动终端设备中的各个电子元件,使各个电子元件开始工作。在终端设备准备执行内存训练之前,终端设备的内存控制器可以从预设的参数组合中确定本次内存训练需要使用的训练参数。由于在印刷电路板(printedcircuitboard,pcb)布线中,信号线阻抗差异和走线无法做到完全等长,便会导致信号传输的时间不一致。不同厂家生产出来的内存元件,其延时的时间也不一样。因此,为了应对延时具有的不确定性问题,我们可以在内存控制器中预设多组不同的训练参数,通过每次进行内存训练时采用不同的训练参数,提高内存训练成功的概率。

示例性的,当终端设备启动时,cpu可以发送启动信号至内存控制器。当内存控制器检测到cpu的启动信号时,表示终端设备正在启动,则内存控制器可以从预设的参数组合中,按照预定的选用规则确定本次内存训练采用的训练参数。若终端设备是首次启动,则内存控制器可以随机选取一组训练参数。若终端设备是非首次启动,则内存控制器可以根据上一次的选取结果,重新随机选取一组新的训练参数。

s120、终端设备根据训练参数,进行内存训练。

在确定好训练参数的情况下,内存控制器可以将确定好的训练参数发送至内存。内存根据训练参数,进行内存训练。

示例性的,在内存训练时,终端设备可以采用写入均衡(writeleveling)的做法,完成内存训练。其中,写入均衡主要是通过不断地发送不同延时的双向数据控制引脚(bi-directionaldatastrobe,dqs)信号至内存。同时,内存不断地在dqs信号的上升沿采样时钟脉冲(clockpulses,ck)信号的状态,当dqs信号和ck信号边沿对齐时,确定此时的训练参数,完成内存训练。进一步的,在采用dqs信号和ck信号进行内存训练时,还可以结合其他数据信号共同进行内存训练,例如离线驱动调整(off-chipdriver,ocd)信号、参考电压(vref)信号等。本申请实施例对此不作任何限制。

s130、当内存训练失败时,终端设备重启。

由于部分终端设备存在内存控制器的训练参数的可调范围较窄的问题,使得内存控制器在确定训练参数时,容易选取到不合适的训练参数,无法满足内存训练的延时要求。因此,这类终端设备在进行内存训练时,存在内存训练失败的风险。

在一个实施例中,在内存控制器确定内存训练失败时,内存控制器可以向cpu发送重启指令。cpu可以根据重启指令,控制终端进行重启。可选的,内存控制器也可以向逻辑器件发送重启指令。逻辑器件也可以根据重启指令,控制终端设备进行重启。其中,逻辑器件可以是复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld)。

进一步的,通常在终端设备中还包括一个蜂鸣器。该蜂鸣器主要用于在终端设备启动时,发出蜂鸣声提示用户该终端设备已启动。在正常情况下,每次终端设备启动时,蜂鸣器都应该发出蜂鸣声。但是,对于用户来讲,用户并不知道终端设备在启动的过程中,会因内存训练失败而不断重启。为了消除在重启阶段时,因蜂鸣器突然发出蜂鸣声而给用户带来疑虑的问题。在本申请实施例中,当终端设备重启时,终端设备可以控制终端设备的蜂鸣器不发出蜂鸣声。

例如,参照图2,图2为本申请提供的一种内存训练方法的流程图。在终端设备首次启动的情况下,蜂鸣器发出蜂鸣声提示用户终端设备已启动。内存控制器确定一组训练参数,并发送至内存进行内存训练。若内存训练成功,则终端设备正常开机。若内存训练失败,则内存控制器发送重启指令至cpld,cpld根据重启指令控制终端设备重启。在终端设备重启时,cpld控制蜂鸣器不发出蜂鸣声,然后内存控制器再次确定一组新的训练参数,并发送至内存进行内存训练。

在本发明实施例中,通过在内存训练失败时,及时控制终端设备进行重启,使得终端设备可以在重启后重新选择训练参数。避免了终端设备因选用的参数不合适导致内存训练失败,而一直停留在内存训练阶段无法完成开机。进而提高了终端设备的容错率和产品质量。

可选的,图3为本申请提供的一种内存训练失败时的示意性流程图,主要涉及当内存训练失败时终端设备的处理过程。结合图1,在上述步骤s120之后,参见图3,该方法还包括:

s210、当内存训练失败时,终端设备确定重启次数。

当内存控制器确定内存训练失败时,内存控制器可以向逻辑器件发送重启指令。逻辑器件在接收到重启指令的情况下,可以确定接收重启指令的接收次数。

需要说明的是,在本申请实施例中,逻辑器件可以根据重启指令控制终端设备重启。因此,终端设备在重启之前,逻辑器件必然会接收到内存控制器发送的重启指令。所以,接收重启指令的接收次数就相当于终端设备的重启次数,也即是,逻辑器件可以通过确定接收次数间接确定终端设备的重启次数。进一步的,由于逻辑器件可以采用主板规格(advancedtechnologyextended,atx)的待机(stby)电压供电,也即是,只要终端设备的外接电源线一直有电,则逻辑器件也一直保持上电状态。因此,逻辑器件可以在终端设备重启的时候,准确记录接收次数。

s220、若重启次数小于或等于预设次数,则执行重启的步骤,并更新重启次数。

我们可以在逻辑器件中预先设置预设次数,通过对比重启次数和预设次数的大小,使得逻辑器件可以判断出终端设备的重启次数是否已经超出了允许的范围。若终端设备的重启次数没有超出允许的范围,则终端设备可以进行重启。

示例性的,若逻辑器件确定接收次数小于或等于预设次数,则根据重启指令,控制终端设备重启,并更新接收次数。其中,更新接收次数可以包括在当前的接收次数上加一。同时,接收次数的初始值为零。

例如,参照图4,图4为本申请提供的另一种内存训练方法的流程图。在终端设备首次启动时内存训练失败时,内存控制器发送重启指令至cpld。cpld中预先设置预设次数n为3。由于终端设备是首次启动,因此接收次数m是零。进一步的,m小于n,也即是,重启次数小于预设次数,则cpld根据重启指令,控制终端设备重启,并将接收次数m更新为1。

s230、若重启次数大于预设次数,则终端设备关机。

需要说明的是,在短时间内多次重启的行为有损于终端设备的产品质量,且根据实际经验可知,若一个终端设备在多次重启后内存训练依然无法成功,那么该终端设备很有可能存在物理结构方面的问题,这样持续的重启也没有任何意义了。因此,若终端设备的重启次数超出了允许的范围,则终端设备可以进行关机,提高终端设备在处理内存训练失败时的效率,同时保护终端设备的产品质量。

示例性的,若逻辑器件确定接收次数大于预设次数,则控制终端设备关机。

例如,参照图4,在终端设备第4次重启时内存训练失败时,内存控制器发送重启指令至cpld。cpld中预先设置预设次数n为3。由于cpld已经接受过4次重启指令,因此接收次数m为4。进一步的,m大于n,也即是,重启次数大于预设次数,则cpld控制终端设备关机。

可选的,图5为本申请提供的另一种内存训练失败时的示意性流程图,主要涉及当内存训练失败时终端设备的处理过程。结合图1,在上述步骤s120之后,参见图5,该方法还包括:

s310、当内存训练失败时,终端设备判断重启周期是否开始计时。

当内存控制器确定内存训练失败时,内存控制器可以向逻辑器件发送重启指令。逻辑器件在接收到重启指令的情况下,可以判断重启周期是否开始计时。

需要说明的是,在本申请实施例中,终端设备每次从开始启动到内存训练,再到内存控制器确定内存训练失败,这个环节需要消耗的时间基本上是一样的。因此,我们还可以在逻辑器件中设置一个重启周期,该重启周期的时长可以约等于n上述环节需要消耗的时间的总和,其中,n表示终端设备允许的最大重启次数。

例如,上述环节需要消耗的时间约为20秒,且设置n为3时,则cpld中的重启周期的时长可以设置为60秒。

s320、若重启周期未开始计时,则执行重启的步骤,并开始计时。

若逻辑器件确定重启周期未开始计时,则根据重启指令,控制终端设备重启,并开始计时。

例如,在终端设备首次启动时内存训练失败时,内存控制器发送重启指令至cpld。由于是首次启动,因此cpld中的重启周期还未开始计时,则cpld根据重启指令,控制终端设备重启,并在此时开始重启周期的计时。其中,重启周期的时长可以设置为60秒。

s330、若重启周期开始计时,则终端设备判断重启周期是否结束。

若逻辑器件确定重启周期开始计时,则继续判断重启周期是否结束。

s340、若重启周期未结束,则执行重启的步骤,否则终端设备关机。

若逻辑器件确定重启周期未结束,则表示终端设备的重启次数并没有超出允许的范围,则根据重启指令,控制终端设备重启。

例如,在终端设备第2次重启时内存训练失败时,内存控制器发送重启指令至cpld。由于是第2次重启,此时距首次重启经过了41秒,因此cpld中的重启周期还没结束,则cpld根据重启指令,控制终端设备重启。

若逻辑器件确定重启周期结束,则表示终端设备的重启次数已经超出允许的范围,则控制终端设备关机。

例如,在终端设备第4次重启时内存训练失败时,内存控制器发送重启指令至cpld。由于是第4次重启,此时距首次重启经过了63秒,因此cpld中的重启周期已经结束,则cpld控制终端设备关机。

本申请提供的内存训练的方法,通过当终端设备启动时,终端设备从预设的参数组合中确定训练参数,然后终端设备根据训练参数,进行内存训练,最后当内存训练失败时,终端设备进行重启。通过在内存训练失败时,及时控制终端设备进行重启,避免了终端设备因内存训练失败,而一直停留在内存训练阶段无法完成开机。同时,通过重启终端设备,使得终端设备可以重新进行内存训练,提高了终端设备的容错率和产品质量。

另外,本申请还使用逻辑器件对终端设备的重启次数进行监控。若终端设备的重启次数超出了允许的范围,则控制终端设备进行关机,提高终端设备在处理内存训练失败时的效率,同时保护终端设备的产品质量。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

请参阅图6,图6是本申请提供的一种内存训练系统的示意图。该内存训练系统应用于终端设备4,包括:内存控制器41、内存42和逻辑器件43。

内存控制器41分别与内存42和逻辑器件43之间建立有数据交互通道。

其中,内存控制器41可以包括位于北桥芯片内的传统型内存控制器,和集成在cpu中的整合型内存控制器中的一种或多种。内存控制器41可以在终端设备4内部控制内存42。内存42可以包括高速随机存取存储器,还可以包括非易失性存储器。逻辑器件43可以包括可编程逻辑器件(programmablelogicdevice,pld),和复杂可编程逻辑器件中的一种或多种,为终端设备在内存训练失败时,执行重启或关机的动作。

当内存控制器41检测到终端设备4启动时,内存控制器41从预设的参数组合中确定训练参数,参数组合包括多个不同的训练参数;

内存控制器41发送训练参数至内存42;

内存42根据训练参数,进行内存训练;

当内存控制器41确定内存训练失败时,向逻辑器件43发送重启指令;

逻辑器件43根据重启指令,控制终端设备4重启。

可选的,逻辑器件43在接收到所述重启指令后,确定接收重启指令的接收次数;

若接收次数小于或等于预设次数,则逻辑器件43执行控制终端设备4重启的步骤,并更新接收次数;

若接收次数大于预设次数,则逻辑器件43控制终端设备4关机。

可选的,逻辑器件43在接收到所述重启指令后,判断重启周期是否开始计时;

若重启周期未开始计时,则逻辑器件43执行控制终端设备4重启的步骤,并开始计时;

若重启周期开始计时,则逻辑器件43判断重启周期是否结束;

若重启周期未结束,则逻辑器件43执行控制终端设备4重启的步骤,否则逻辑器件43控制终端设备4关机。

可选的,内存训练的系统还包括蜂鸣器,当逻辑器件43检测到终端设备4重启时,逻辑器件43控制蜂鸣器不发出蜂鸣声。

可选的,逻辑器件43包括复杂可编程逻辑器件43。

本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。

需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1